1 | window["GraphiQL"] =
|
2 | (function(modules) {
|
3 |
|
4 | function webpackJsonpCallback(data) {
|
5 | var chunkIds = data[0];
|
6 | var moreModules = data[1];
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | var moduleId, chunkId, i = 0, resolves = [];
|
12 | for(;i < chunkIds.length; i++) {
|
13 | chunkId = chunkIds[i];
|
14 | if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
|
15 | resolves.push(installedChunks[chunkId][0]);
|
16 | }
|
17 | installedChunks[chunkId] = 0;
|
18 | }
|
19 | for(moduleId in moreModules) {
|
20 | if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
|
21 | modules[moduleId] = moreModules[moduleId];
|
22 | }
|
23 | }
|
24 | if(parentJsonpFunction) parentJsonpFunction(data);
|
25 |
|
26 | while(resolves.length) {
|
27 | resolves.shift()();
|
28 | }
|
29 |
|
30 | };
|
31 |
|
32 |
|
33 |
|
34 | var installedModules = {};
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | var installedChunks = {
|
40 | "main": 0
|
41 | };
|
42 |
|
43 |
|
44 |
|
45 |
|
46 | function jsonpScriptSrc(chunkId) {
|
47 | return __webpack_require__.p + "" + chunkId + ".graphiql.js"
|
48 | }
|
49 |
|
50 |
|
51 | function __webpack_require__(moduleId) {
|
52 |
|
53 |
|
54 | if(installedModules[moduleId]) {
|
55 | return installedModules[moduleId].exports;
|
56 | }
|
57 |
|
58 | var module = installedModules[moduleId] = {
|
59 | i: moduleId,
|
60 | l: false,
|
61 | exports: {}
|
62 | };
|
63 |
|
64 |
|
65 | modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
66 |
|
67 |
|
68 | module.l = true;
|
69 |
|
70 |
|
71 | return module.exports;
|
72 | }
|
73 |
|
74 |
|
75 |
|
76 |
|
77 | __webpack_require__.e = function requireEnsure() {
|
78 | return Promise.resolve();
|
79 | };
|
80 |
|
81 |
|
82 | __webpack_require__.m = modules;
|
83 |
|
84 |
|
85 | __webpack_require__.c = installedModules;
|
86 |
|
87 |
|
88 | __webpack_require__.d = function(exports, name, getter) {
|
89 | if(!__webpack_require__.o(exports, name)) {
|
90 | Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
91 | }
|
92 | };
|
93 |
|
94 |
|
95 | __webpack_require__.r = function(exports) {
|
96 | if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
97 | Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
98 | }
|
99 | Object.defineProperty(exports, '__esModule', { value: true });
|
100 | };
|
101 |
|
102 |
|
103 |
|
104 |
|
105 |
|
106 |
|
107 | __webpack_require__.t = function(value, mode) {
|
108 | if(mode & 1) value = __webpack_require__(value);
|
109 | if(mode & 8) return value;
|
110 | if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
111 | var ns = Object.create(null);
|
112 | __webpack_require__.r(ns);
|
113 | Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
114 | if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
115 | return ns;
|
116 | };
|
117 |
|
118 |
|
119 | __webpack_require__.n = function(module) {
|
120 | var getter = module && module.__esModule ?
|
121 | function getDefault() { return module['default']; } :
|
122 | function getModuleExports() { return module; };
|
123 | __webpack_require__.d(getter, 'a', getter);
|
124 | return getter;
|
125 | };
|
126 |
|
127 |
|
128 | __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
129 |
|
130 |
|
131 | __webpack_require__.p = "";
|
132 |
|
133 |
|
134 | __webpack_require__.oe = function(err) { console.error(err); throw err; };
|
135 |
|
136 | var jsonpArray = window["webpackJsonpGraphiQL"] = window["webpackJsonpGraphiQL"] || [];
|
137 | var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
|
138 | jsonpArray.push = webpackJsonpCallback;
|
139 | jsonpArray = jsonpArray.slice();
|
140 | for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
|
141 | var parentJsonpFunction = oldJsonpFunction;
|
142 |
|
143 |
|
144 |
|
145 | return __webpack_require__(__webpack_require__.s = "./cdn.ts");
|
146 | })
|
147 |
|
148 | ({
|
149 |
|
150 | "../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/index.mjs":
|
151 |
|
152 |
|
153 |
|
154 |
|
155 | (function(module, __webpack_exports__, __webpack_require__) {
|
156 |
|
157 | "use strict";
|
158 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyAsyncIterableIteratorToSink\", function() { return applyAsyncIterableIteratorToSink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAsyncIterable\", function() { return isAsyncIterable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeAsyncIterableIteratorFromSink\", function() { return makeAsyncIterableIteratorFromSink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makePushPullAsyncIterableIterator\", function() { return makePushPullAsyncIterableIterator; });\nfunction createDeferred() {\r\n const d = {};\r\n d.promise = new Promise((resolve, reject) => {\r\n d.resolve = resolve;\r\n d.reject = reject;\r\n });\r\n return d;\r\n}\r\nconst SYMBOL_FINISHED = Symbol();\r\nconst SYMBOL_NEW_VALUE = Symbol();\r\n/**\r\n * makePushPullAsyncIterableIterator\r\n *\r\n * The iterable will publish values until return or throw is called.\r\n * Afterwards it is in the completed state and cannot be used for publishing any further values.\r\n * It will handle back-pressure and keep pushed values until they are consumed by a source.\r\n */\r\nfunction makePushPullAsyncIterableIterator() {\r\n let isRunning = true;\r\n const values = [];\r\n let newValueD = createDeferred();\r\n const finishedD = createDeferred();\r\n const asyncIterableIterator = (async function* PushPullAsyncIterableIterator() {\r\n while (true) {\r\n if (values.length > 0) {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n yield values.shift();\r\n }\r\n else {\r\n const result = await Promise.race([\r\n newValueD.promise,\r\n finishedD.promise\r\n ]);\r\n if (result === SYMBOL_FINISHED) {\r\n break;\r\n }\r\n if (result !== SYMBOL_NEW_VALUE) {\r\n throw result;\r\n }\r\n }\r\n }\r\n })();\r\n function pushValue(value) {\r\n if (isRunning === false) {\r\n // TODO: Should this throw?\r\n return;\r\n }\r\n values.push(value);\r\n newValueD.resolve(SYMBOL_NEW_VALUE);\r\n newValueD = createDeferred();\r\n }\r\n // We monkey patch the original generator for clean-up\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n const originalReturn = asyncIterableIterator.return.bind(asyncIterableIterator);\r\n asyncIterableIterator.return = (\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n ...args) => {\r\n isRunning = false;\r\n finishedD.resolve(SYMBOL_FINISHED);\r\n return originalReturn(...args);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n const originalThrow = asyncIterableIterator.throw.bind(asyncIterableIterator);\r\n asyncIterableIterator.throw = (err) => {\r\n isRunning = false;\r\n finishedD.resolve(err);\r\n return originalThrow(err);\r\n };\r\n return {\r\n pushValue,\r\n asyncIterableIterator\r\n };\r\n}\n\nconst makeAsyncIterableIteratorFromSink = (make) => {\r\n const { pushValue, asyncIterableIterator } = makePushPullAsyncIterableIterator();\r\n const dispose = make({\r\n next: (value) => {\r\n pushValue(value);\r\n },\r\n complete: () => {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n asyncIterableIterator.return();\r\n },\r\n error: (err) => {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n asyncIterableIterator.throw(err);\r\n }\r\n });\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n const originalReturn = asyncIterableIterator.return;\r\n let returnValue = undefined;\r\n asyncIterableIterator.return = () => {\r\n if (returnValue === undefined) {\r\n dispose();\r\n returnValue = originalReturn();\r\n }\r\n return returnValue;\r\n };\r\n return asyncIterableIterator;\r\n};\n\nfunction applyAsyncIterableIteratorToSink(asyncIterableIterator, sink) {\r\n const run = async () => {\r\n try {\r\n for await (const value of asyncIterableIterator) {\r\n sink.next(value);\r\n }\r\n sink.complete();\r\n }\r\n catch (err) {\r\n sink.error(err);\r\n }\r\n };\r\n run();\r\n return () => {\r\n var _a;\r\n (_a = asyncIterableIterator.return) === null || _a === void 0 ? void 0 : _a.call(asyncIterableIterator);\r\n };\r\n}\n\nfunction isAsyncIterable(input) {\r\n return (typeof input === \"object\" &&\r\n input !== null &&\r\n // The AsyncGenerator check is for Safari on iOS which currently does not have\r\n // Symbol.asyncIterator implemented\r\n // That means every custom AsyncIterable must be built using a AsyncGeneratorFunction (async function * () {})\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (input[Symbol.toStringTag] === \"AsyncGenerator\" ||\r\n (Symbol.asyncIterator && Symbol.asyncIterator in input)));\r\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BuMXJ1NGwvcHVzaC1wdWxsLWFzeW5jLWl0ZXJhYmxlLWl0ZXJhdG9yL2luZGV4Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9AbjFydTRsL3B1c2gtcHVsbC1hc3luYy1pdGVyYWJsZS1pdGVyYXRvci9pbmRleC5tanM/ZDgxYyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBjcmVhdGVEZWZlcnJlZCgpIHtcclxuICAgIGNvbnN0IGQgPSB7fTtcclxuICAgIGQucHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBkLnJlc29sdmUgPSByZXNvbHZlO1xyXG4gICAgICAgIGQucmVqZWN0ID0gcmVqZWN0O1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZDtcclxufVxyXG5jb25zdCBTWU1CT0xfRklOSVNIRUQgPSBTeW1ib2woKTtcclxuY29uc3QgU1lNQk9MX05FV19WQUxVRSA9IFN5bWJvbCgpO1xyXG4vKipcclxuICogbWFrZVB1c2hQdWxsQXN5bmNJdGVyYWJsZUl0ZXJhdG9yXHJcbiAqXHJcbiAqIFRoZSBpdGVyYWJsZSB3aWxsIHB1Ymxpc2ggdmFsdWVzIHVudGlsIHJldHVybiBvciB0aHJvdyBpcyBjYWxsZWQuXHJcbiAqIEFmdGVyd2FyZHMgaXQgaXMgaW4gdGhlIGNvbXBsZXRlZCBzdGF0ZSBhbmQgY2Fubm90IGJlIHVzZWQgZm9yIHB1Ymxpc2hpbmcgYW55IGZ1cnRoZXIgdmFsdWVzLlxyXG4gKiBJdCB3aWxsIGhhbmRsZSBiYWNrLXByZXNzdXJlIGFuZCBrZWVwIHB1c2hlZCB2YWx1ZXMgdW50aWwgdGhleSBhcmUgY29uc3VtZWQgYnkgYSBzb3VyY2UuXHJcbiAqL1xyXG5mdW5jdGlvbiBtYWtlUHVzaFB1bGxBc3luY0l0ZXJhYmxlSXRlcmF0b3IoKSB7XHJcbiAgICBsZXQgaXNSdW5uaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xyXG4gICAgbGV0IG5ld1ZhbHVlRCA9IGNyZWF0ZURlZmVycmVkKCk7XHJcbiAgICBjb25zdCBmaW5pc2hlZEQgPSBjcmVhdGVEZWZlcnJlZCgpO1xyXG4gICAgY29uc3QgYXN5bmNJdGVyYWJsZUl0ZXJhdG9yID0gKGFzeW5jIGZ1bmN0aW9uKiBQdXNoUHVsbEFzeW5jSXRlcmFibGVJdGVyYXRvcigpIHtcclxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICB5aWVsZCB2YWx1ZXMuc2hpZnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVELnByb21pc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoZWRELnByb21pc2VcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gU1lNQk9MX0ZJTklTSEVEKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBTWU1CT0xfTkVXX1ZBTFVFKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSkoKTtcclxuICAgIGZ1bmN0aW9uIHB1c2hWYWx1ZSh2YWx1ZSkge1xyXG4gICAgICAgIGlmIChpc1J1bm5pbmcgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIC8vIFRPRE86IFNob3VsZCB0aGlzIHRocm93P1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcclxuICAgICAgICBuZXdWYWx1ZUQucmVzb2x2ZShTWU1CT0xfTkVXX1ZBTFVFKTtcclxuICAgICAgICBuZXdWYWx1ZUQgPSBjcmVhdGVEZWZlcnJlZCgpO1xyXG4gICAgfVxyXG4gICAgLy8gV2UgbW9ua2V5IHBhdGNoIHRoZSBvcmlnaW5hbCBnZW5lcmF0b3IgZm9yIGNsZWFuLXVwXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgY29uc3Qgb3JpZ2luYWxSZXR1cm4gPSBhc3luY0l0ZXJhYmxlSXRlcmF0b3IucmV0dXJuLmJpbmQoYXN5bmNJdGVyYWJsZUl0ZXJhdG9yKTtcclxuICAgIGFzeW5jSXRlcmFibGVJdGVyYXRvci5yZXR1cm4gPSAoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgLi4uYXJncykgPT4ge1xyXG4gICAgICAgIGlzUnVubmluZyA9IGZhbHNlO1xyXG4gICAgICAgIGZpbmlzaGVkRC5yZXNvbHZlKFNZTUJPTF9GSU5JU0hFRCk7XHJcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmV0dXJuKC4uLmFyZ3MpO1xyXG4gICAgfTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICBjb25zdCBvcmlnaW5hbFRocm93ID0gYXN5bmNJdGVyYWJsZUl0ZXJhdG9yLnRocm93LmJpbmQoYXN5bmNJdGVyYWJsZUl0ZXJhdG9yKTtcclxuICAgIGFzeW5jSXRlcmFibGVJdGVyYXRvci50aHJvdyA9IChlcnIpID0+IHtcclxuICAgICAgICBpc1J1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICBmaW5pc2hlZEQucmVzb2x2ZShlcnIpO1xyXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFRocm93KGVycik7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwdXNoVmFsdWUsXHJcbiAgICAgICAgYXN5bmNJdGVyYWJsZUl0ZXJhdG9yXHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IG1ha2VBc3luY0l0ZXJhYmxlSXRlcmF0b3JGcm9tU2luayA9IChtYWtlKSA9PiB7XHJcbiAgICBjb25zdCB7IHB1c2hWYWx1ZSwgYXN5bmNJdGVyYWJsZUl0ZXJhdG9yIH0gPSBtYWtlUHVzaFB1bGxBc3luY0l0ZXJhYmxlSXRlcmF0b3IoKTtcclxuICAgIGNvbnN0IGRpc3Bvc2UgPSBtYWtlKHtcclxuICAgICAgICBuZXh0OiAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgcHVzaFZhbHVlKHZhbHVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgIGFzeW5jSXRlcmFibGVJdGVyYXRvci5yZXR1cm4oKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgIGFzeW5jSXRlcmFibGVJdGVyYXRvci50aHJvdyhlcnIpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cclxuICAgIGNvbnN0IG9yaWdpbmFsUmV0dXJuID0gYXN5bmNJdGVyYWJsZUl0ZXJhdG9yLnJldHVybjtcclxuICAgIGxldCByZXR1cm5WYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIGFzeW5jSXRlcmFibGVJdGVyYXRvci5yZXR1cm4gPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHJldHVyblZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IG9yaWdpbmFsUmV0dXJuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gYXN5bmNJdGVyYWJsZUl0ZXJhdG9yO1xyXG59O1xuXG5mdW5jdGlvbiBhcHBseUFzeW5jSXRlcmFibGVJdGVyYXRvclRvU2luayhhc3luY0l0ZXJhYmxlSXRlcmF0b3IsIHNpbmspIHtcclxuICAgIGNvbnN0IHJ1biA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IHZhbHVlIG9mIGFzeW5jSXRlcmFibGVJdGVyYXRvcikge1xyXG4gICAgICAgICAgICAgICAgc2luay5uZXh0KHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzaW5rLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgc2luay5lcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBydW4oKTtcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgIChfYSA9IGFzeW5jSXRlcmFibGVJdGVyYXRvci5yZXR1cm4pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGFzeW5jSXRlcmFibGVJdGVyYXRvcik7XHJcbiAgICB9O1xyXG59XG5cbmZ1bmN0aW9uIGlzQXN5bmNJdGVyYWJsZShpbnB1dCkge1xyXG4gICAgcmV0dXJuICh0eXBlb2YgaW5wdXQgPT09IFwib2JqZWN0XCIgJiZcclxuICAgICAgICBpbnB1dCAhPT0gbnVsbCAmJlxyXG4gICAgICAgIC8vIFRoZSBBc3luY0dlbmVyYXRvciBjaGVjayBpcyBmb3IgU2FmYXJpIG9uIGlPUyB3aGljaCBjdXJyZW50bHkgZG9lcyBub3QgaGF2ZVxyXG4gICAgICAgIC8vIFN5bWJvbC5hc3luY0l0ZXJhdG9yIGltcGxlbWVudGVkXHJcbiAgICAgICAgLy8gVGhhdCBtZWFucyBldmVyeSBjdXN0b20gQXN5bmNJdGVyYWJsZSBtdXN0IGJlIGJ1aWx0IHVzaW5nIGEgQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiAoYXN5bmMgZnVuY3Rpb24gKiAoKSB7fSlcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIChpbnB1dFtTeW1ib2wudG9TdHJpbmdUYWddID09PSBcIkFzeW5jR2VuZXJhdG9yXCIgfHxcclxuICAgICAgICAgICAgKFN5bWJvbC5hc3luY0l0ZXJhdG9yICYmIFN5bWJvbC5hc3luY0l0ZXJhdG9yIGluIGlucHV0KSkpO1xyXG59XG5cbmV4cG9ydCB7IGFwcGx5QXN5bmNJdGVyYWJsZUl0ZXJhdG9yVG9TaW5rLCBpc0FzeW5jSXRlcmFibGUsIG1ha2VBc3luY0l0ZXJhYmxlSXRlcmF0b3JGcm9tU2luaywgbWFrZVB1c2hQdWxsQXN5bmNJdGVyYWJsZUl0ZXJhdG9yIH07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/index.mjs\n");
|
159 |
|
160 | }),
|
161 |
|
162 | "../../../node_modules/entities/lib/maps/entities.json":
|
163 |
|
164 |
|
165 |
|
166 |
|
167 | (function(module) {
|
168 |
|
169 | eval("module.exports = JSON.parse(\"{\\\"Aacute\\\":\\\"Á\\\",\\\"aacute\\\":\\\"á\\\",\\\"Abreve\\\":\\\"Ă\\\",\\\"abreve\\\":\\\"ă\\\",\\\"ac\\\":\\\"∾\\\",\\\"acd\\\":\\\"∿\\\",\\\"acE\\\":\\\"∾̳\\\",\\\"Acirc\\\":\\\"Â\\\",\\\"acirc\\\":\\\"â\\\",\\\"acute\\\":\\\"´\\\",\\\"Acy\\\":\\\"А\\\",\\\"acy\\\":\\\"а\\\",\\\"AElig\\\":\\\"Æ\\\",\\\"aelig\\\":\\\"æ\\\",\\\"af\\\":\\\"\\\",\\\"Afr\\\":\\\"𝔄\\\",\\\"afr\\\":\\\"𝔞\\\",\\\"Agrave\\\":\\\"À\\\",\\\"agrave\\\":\\\"à\\\",\\\"alefsym\\\":\\\"ℵ\\\",\\\"aleph\\\":\\\"ℵ\\\",\\\"Alpha\\\":\\\"Α\\\",\\\"alpha\\\":\\\"α\\\",\\\"Amacr\\\":\\\"Ā\\\",\\\"amacr\\\":\\\"ā\\\",\\\"amalg\\\":\\\"⨿\\\",\\\"amp\\\":\\\"&\\\",\\\"AMP\\\":\\\"&\\\",\\\"andand\\\":\\\"⩕\\\",\\\"And\\\":\\\"⩓\\\",\\\"and\\\":\\\"∧\\\",\\\"andd\\\":\\\"⩜\\\",\\\"andslope\\\":\\\"⩘\\\",\\\"andv\\\":\\\"⩚\\\",\\\"ang\\\":\\\"∠\\\",\\\"ange\\\":\\\"⦤\\\",\\\"angle\\\":\\\"∠\\\",\\\"angmsdaa\\\":\\\"⦨\\\",\\\"angmsdab\\\":\\\"⦩\\\",\\\"angmsdac\\\":\\\"⦪\\\",\\\"angmsdad\\\":\\\"⦫\\\",\\\"angmsdae\\\":\\\"⦬\\\",\\\"angmsdaf\\\":\\\"⦭\\\",\\\"angmsdag\\\":\\\"⦮\\\",\\\"angmsdah\\\":\\\"⦯\\\",\\\"angmsd\\\":\\\"∡\\\",\\\"angrt\\\":\\\"∟\\\",\\\"angrtvb\\\":\\\"⊾\\\",\\\"angrtvbd\\\":\\\"⦝\\\",\\\"angsph\\\":\\\"∢\\\",\\\"angst\\\":\\\"Å\\\",\\\"angzarr\\\":\\\"⍼\\\",\\\"Aogon\\\":\\\"Ą\\\",\\\"aogon\\\":\\\"ą\\\",\\\"Aopf\\\":\\\"𝔸\\\",\\\"aopf\\\":\\\"𝕒\\\",\\\"apacir\\\":\\\"⩯\\\",\\\"ap\\\":\\\"≈\\\",\\\"apE\\\":\\\"⩰\\\",\\\"ape\\\":\\\"≊\\\",\\\"apid\\\":\\\"≋\\\",\\\"apos\\\":\\\"'\\\",\\\"ApplyFunction\\\":\\\"\\\",\\\"approx\\\":\\\"≈\\\",\\\"approxeq\\\":\\\"≊\\\",\\\"Aring\\\":\\\"Å\\\",\\\"aring\\\":\\\"å\\\",\\\"Ascr\\\":\\\"𝒜\\\",\\\"ascr\\\":\\\"𝒶\\\",\\\"Assign\\\":\\\"≔\\\",\\\"ast\\\":\\\"*\\\",\\\"asymp\\\":\\\"≈\\\",\\\"asympeq\\\":\\\"≍\\\",\\\"Atilde\\\":\\\"Ã\\\",\\\"atilde\\\":\\\"ã\\\",\\\"Auml\\\":\\\"Ä\\\",\\\"auml\\\":\\\"ä\\\",\\\"awconint\\\":\\\"∳\\\",\\\"awint\\\":\\\"⨑\\\",\\\"backcong\\\":\\\"≌\\\",\\\"backepsilon\\\":\\\"϶\\\",\\\"backprime\\\":\\\"‵\\\",\\\"backsim\\\":\\\"∽\\\",\\\"backsimeq\\\":\\\"⋍\\\",\\\"Backslash\\\":\\\"∖\\\",\\\"Barv\\\":\\\"⫧\\\",\\\"barvee\\\":\\\"⊽\\\",\\\"barwed\\\":\\\"⌅\\\",\\\"Barwed\\\":\\\"⌆\\\",\\\"barwedge\\\":\\\"⌅\\\",\\\"bbrk\\\":\\\"⎵\\\",\\\"bbrktbrk\\\":\\\"⎶\\\",\\\"bcong\\\":\\\"≌\\\",\\\"Bcy\\\":\\\"Б\\\",\\\"bcy\\\":\\\"б\\\",\\\"bdquo\\\":\\\"„\\\",\\\"becaus\\\":\\\"∵\\\",\\\"because\\\":\\\"∵\\\",\\\"Because\\\":\\\"∵\\\",\\\"bemptyv\\\":\\\"⦰\\\",\\\"bepsi\\\":\\\"϶\\\",\\\"bernou\\\":\\\"ℬ\\\",\\\"Bernoullis\\\":\\\"ℬ\\\",\\\"Beta\\\":\\\"Β\\\",\\\"beta\\\":\\\"β\\\",\\\"beth\\\":\\\"ℶ\\\",\\\"between\\\":\\\"≬\\\",\\\"Bfr\\\":\\\"𝔅\\\",\\\"bfr\\\":\\\"𝔟\\\",\\\"bigcap\\\":\\\"⋂\\\",\\\"bigcirc\\\":\\\"◯\\\",\\\"bigcup\\\":\\\"⋃\\\",\\\"bigodot\\\":\\\"⨀\\\",\\\"bigoplus\\\":\\\"⨁\\\",\\\"bigotimes\\\":\\\"⨂\\\",\\\"bigsqcup\\\":\\\"⨆\\\",\\\"bigstar\\\":\\\"★\\\",\\\"bigtriangledown\\\":\\\"▽\\\",\\\"bigtriangleup\\\":\\\"△\\\",\\\"biguplus\\\":\\\"⨄\\\",\\\"bigvee\\\":\\\"⋁\\\",\\\"bigwedge\\\":\\\"⋀\\\",\\\"bkarow\\\":\\\"⤍\\\",\\\"blacklozenge\\\":\\\"⧫\\\",\\\"blacksquare\\\":\\\"▪\\\",\\\"blacktriangle\\\":\\\"▴\\\",\\\"blacktriangledown\\\":\\\"▾\\\",\\\"blacktriangleleft\\\":\\\"◂\\\",\\\"blacktriangleright\\\":\\\"▸\\\",\\\"blank\\\":\\\"␣\\\",\\\"blk12\\\":\\\"▒\\\",\\\"blk14\\\":\\\"░\\\",\\\"blk34\\\":\\\"▓\\\",\\\"block\\\":\\\"█\\\",\\\"bne\\\":\\\"=⃥\\\",\\\"bnequiv\\\":\\\"≡⃥\\\",\\\"bNot\\\":\\\"⫭\\\",\\\"bnot\\\":\\\"⌐\\\",\\\"Bopf\\\":\\\"𝔹\\\",\\\"bopf\\\":\\\"𝕓\\\",\\\"bot\\\":\\\"⊥\\\",\\\"bottom\\\":\\\"⊥\\\",\\\"bowtie\\\":\\\"⋈\\\",\\\"boxbox\\\":\\\"⧉\\\",\\\"boxdl\\\":\\\"┐\\\",\\\"boxdL\\\":\\\"╕\\\",\\\"boxDl\\\":\\\"╖\\\",\\\"boxDL\\\":\\\"╗\\\",\\\"boxdr\\\":\\\"┌\\\",\\\"boxdR\\\":\\\"╒\\\",\\\"boxDr\\\":\\\"╓\\\",\\\"boxDR\\\":\\\"╔\\\",\\\"boxh\\\":\\\"─\\\",\\\"boxH\\\":\\\"═\\\",\\\"boxhd\\\":\\\"┬\\\",\\\"boxHd\\\":\\\"╤\\\",\\\"boxhD\\\":\\\"╥\\\",\\\"boxHD\\\":\\\"╦\\\",\\\"boxhu\\\":\\\"┴\\\",\\\"boxHu\\\":\\\"╧\\\",\\\"boxhU\\\":\\\"╨\\\",\\\"boxHU\\\":\\\"╩\\\",\\\"boxminus\\\":\\\"⊟\\\",\\\"boxplus\\\":\\\"⊞\\\",\\\"boxtimes\\\":\\\"⊠\\\",\\\"boxul\\\":\\\"┘\\\",\\\"boxuL\\\":\\\"╛\\\",\\\"boxUl\\\":\\\"╜\\\",\\\"boxUL\\\":\\\"╝\\\",\\\"boxur\\\":\\\"└\\\",\\\"boxuR\\\":\\\"╘\\\",\\\"boxUr\\\":\\\"╙\\\",\\\"boxUR\\\":\\\"╚\\\",\\\"boxv\\\":\\\"│\\\",\\\"boxV\\\":\\\"║\\\",\\\"boxvh\\\":\\\"┼\\\",\\\"boxvH\\\":\\\"╪\\\",\\\"boxVh\\\":\\\"╫\\\",\\\"boxVH\\\":\\\"╬\\\",\\\"boxvl\\\":\\\"┤\\\",\\\"boxvL\\\":\\\"╡\\\",\\\"boxVl\\\":\\\"╢\\\",\\\"boxVL\\\":\\\"╣\\\",\\\"boxvr\\\":\\\"├\\\",\\\"boxvR\\\":\\\"╞\\\",\\\"boxVr\\\":\\\"╟\\\",\\\"boxVR\\\":\\\"╠\\\",\\\"bprime\\\":\\\"‵\\\",\\\"breve\\\":\\\"˘\\\",\\\"Breve\\\":\\\"˘\\\",\\\"brvbar\\\":\\\"¦\\\",\\\"bscr\\\":\\\"𝒷\\\",\\\"Bscr\\\":\\\"ℬ\\\",\\\"bsemi\\\":\\\"⁏\\\",\\\"bsim\\\":\\\"∽\\\",\\\"bsime\\\":\\\"⋍\\\",\\\"bsolb\\\":\\\"⧅\\\",\\\"bsol\\\":\\\"\\\\\\\\\\\",\\\"bsolhsub\\\":\\\"⟈\\\",\\\"bull\\\":\\\"•\\\",\\\"bullet\\\":\\\"•\\\",\\\"bump\\\":\\\"≎\\\",\\\"bumpE\\\":\\\"⪮\\\",\\\"bumpe\\\":\\\"≏\\\",\\\"Bumpeq\\\":\\\"≎\\\",\\\"bumpeq\\\":\\\"≏\\\",\\\"Cacute\\\":\\\"Ć\\\",\\\"cacute\\\":\\\"ć\\\",\\\"capand\\\":\\\"⩄\\\",\\\"capbrcup\\\":\\\"⩉\\\",\\\"capcap\\\":\\\"⩋\\\",\\\"cap\\\":\\\"∩\\\",\\\"Cap\\\":\\\"⋒\\\",\\\"capcup\\\":\\\"⩇\\\",\\\"capdot\\\":\\\"⩀\\\",\\\"CapitalDifferentialD\\\":\\\"ⅅ\\\",\\\"caps\\\":\\\"∩︀\\\",\\\"caret\\\":\\\"⁁\\\",\\\"caron\\\":\\\"ˇ\\\",\\\"Cayleys\\\":\\\"ℭ\\\",\\\"ccaps\\\":\\\"⩍\\\",\\\"Ccaron\\\":\\\"Č\\\",\\\"ccaron\\\":\\\"č\\\",\\\"Ccedil\\\":\\\"Ç\\\",\\\"ccedil\\\":\\\"ç\\\",\\\"Ccirc\\\":\\\"Ĉ\\\",\\\"ccirc\\\":\\\"ĉ\\\",\\\"Cconint\\\":\\\"∰\\\",\\\"ccups\\\":\\\"⩌\\\",\\\"ccupssm\\\":\\\"⩐\\\",\\\"Cdot\\\":\\\"Ċ\\\",\\\"cdot\\\":\\\"ċ\\\",\\\"cedil\\\":\\\"¸\\\",\\\"Cedilla\\\":\\\"¸\\\",\\\"cemptyv\\\":\\\"⦲\\\",\\\"cent\\\":\\\"¢\\\",\\\"centerdot\\\":\\\"·\\\",\\\"CenterDot\\\":\\\"·\\\",\\\"cfr\\\":\\\"𝔠\\\",\\\"Cfr\\\":\\\"ℭ\\\",\\\"CHcy\\\":\\\"Ч\\\",\\\"chcy\\\":\\\"ч\\\",\\\"check\\\":\\\"✓\\\",\\\"checkmark\\\":\\\"✓\\\",\\\"Chi\\\":\\\"Χ\\\",\\\"chi\\\":\\\"χ\\\",\\\"circ\\\":\\\"ˆ\\\",\\\"circeq\\\":\\\"≗\\\",\\\"circlearrowleft\\\":\\\"↺\\\",\\\"circlearrowright\\\":\\\"↻\\\",\\\"circledast\\\":\\\"⊛\\\",\\\"circledcirc\\\":\\\"⊚\\\",\\\"circleddash\\\":\\\"⊝\\\",\\\"CircleDot\\\":\\\"⊙\\\",\\\"circledR\\\":\\\"®\\\",\\\"circledS\\\":\\\"Ⓢ\\\",\\\"CircleMinus\\\":\\\"⊖\\\",\\\"CirclePlus\\\":\\\"⊕\\\",\\\"CircleTimes\\\":\\\"⊗\\\",\\\"cir\\\":\\\"○\\\",\\\"cirE\\\":\\\"⧃\\\",\\\"cire\\\":\\\"≗\\\",\\\"cirfnint\\\":\\\"⨐\\\",\\\"cirmid\\\":\\\"⫯\\\",\\\"cirscir\\\":\\\"⧂\\\",\\\"ClockwiseContourIntegral\\\":\\\"∲\\\",\\\"CloseCurlyDoubleQuote\\\":\\\"”\\\",\\\"CloseCurlyQuote\\\":\\\"’\\\",\\\"clubs\\\":\\\"♣\\\",\\\"clubsuit\\\":\\\"♣\\\",\\\"colon\\\":\\\":\\\",\\\"Colon\\\":\\\"∷\\\",\\\"Colone\\\":\\\"⩴\\\",\\\"colone\\\":\\\"≔\\\",\\\"coloneq\\\":\\\"≔\\\",\\\"comma\\\":\\\",\\\",\\\"commat\\\":\\\"@\\\",\\\"comp\\\":\\\"∁\\\",\\\"compfn\\\":\\\"∘\\\",\\\"complement\\\":\\\"∁\\\",\\\"complexes\\\":\\\"ℂ\\\",\\\"cong\\\":\\\"≅\\\",\\\"congdot\\\":\\\"⩭\\\",\\\"Congruent\\\":\\\"≡\\\",\\\"conint\\\":\\\"∮\\\",\\\"Conint\\\":\\\"∯\\\",\\\"ContourIntegral\\\":\\\"∮\\\",\\\"copf\\\":\\\"𝕔\\\",\\\"Copf\\\":\\\"ℂ\\\",\\\"coprod\\\":\\\"∐\\\",\\\"Coproduct\\\":\\\"∐\\\",\\\"copy\\\":\\\"©\\\",\\\"COPY\\\":\\\"©\\\",\\\"copysr\\\":\\\"℗\\\",\\\"CounterClockwiseContourIntegral\\\":\\\"∳\\\",\\\"crarr\\\":\\\"↵\\\",\\\"cross\\\":\\\"✗\\\",\\\"Cross\\\":\\\"⨯\\\",\\\"Cscr\\\":\\\"𝒞\\\",\\\"cscr\\\":\\\"𝒸\\\",\\\"csub\\\":\\\"⫏\\\",\\\"csube\\\":\\\"⫑\\\",\\\"csup\\\":\\\"⫐\\\",\\\"csupe\\\":\\\"⫒\\\",\\\"ctdot\\\":\\\"⋯\\\",\\\"cudarrl\\\":\\\"⤸\\\",\\\"cudarrr\\\":\\\"⤵\\\",\\\"cuepr\\\":\\\"⋞\\\",\\\"cuesc\\\":\\\"⋟\\\",\\\"cularr\\\":\\\"↶\\\",\\\"cularrp\\\":\\\"⤽\\\",\\\"cupbrcap\\\":\\\"⩈\\\",\\\"cupcap\\\":\\\"⩆\\\",\\\"CupCap\\\":\\\"≍\\\",\\\"cup\\\":\\\"∪\\\",\\\"Cup\\\":\\\"⋓\\\",\\\"cupcup\\\":\\\"⩊\\\",\\\"cupdot\\\":\\\"⊍\\\",\\\"cupor\\\":\\\"⩅\\\",\\\"cups\\\":\\\"∪︀\\\",\\\"curarr\\\":\\\"↷\\\",\\\"curarrm\\\":\\\"⤼\\\",\\\"curlyeqprec\\\":\\\"⋞\\\",\\\"curlyeqsucc\\\":\\\"⋟\\\",\\\"curlyvee\\\":\\\"⋎\\\",\\\"curlywedge\\\":\\\"⋏\\\",\\\"curren\\\":\\\"¤\\\",\\\"curvearrowleft\\\":\\\"↶\\\",\\\"curvearrowright\\\":\\\"↷\\\",\\\"cuvee\\\":\\\"⋎\\\",\\\"cuwed\\\":\\\"⋏\\\",\\\"cwconint\\\":\\\"∲\\\",\\\"cwint\\\":\\\"∱\\\",\\\"cylcty\\\":\\\"⌭\\\",\\\"dagger\\\":\\\"†\\\",\\\"Dagger\\\":\\\"‡\\\",\\\"daleth\\\":\\\"ℸ\\\",\\\"darr\\\":\\\"↓\\\",\\\"Darr\\\":\\\"↡\\\",\\\"dArr\\\":\\\"⇓\\\",\\\"dash\\\":\\\"‐\\\",\\\"Dashv\\\":\\\"⫤\\\",\\\"dashv\\\":\\\"⊣\\\",\\\"dbkarow\\\":\\\"⤏\\\",\\\"dblac\\\":\\\"˝\\\",\\\"Dcaron\\\":\\\"Ď\\\",\\\"dcaron\\\":\\\"ď\\\",\\\"Dcy\\\":\\\"Д\\\",\\\"dcy\\\":\\\"д\\\",\\\"ddagger\\\":\\\"‡\\\",\\\"ddarr\\\":\\\"⇊\\\",\\\"DD\\\":\\\"ⅅ\\\",\\\"dd\\\":\\\"ⅆ\\\",\\\"DDotrahd\\\":\\\"⤑\\\",\\\"ddotseq\\\":\\\"⩷\\\",\\\"deg\\\":\\\"°\\\",\\\"Del\\\":\\\"∇\\\",\\\"Delta\\\":\\\"Δ\\\",\\\"delta\\\":\\\"δ\\\",\\\"demptyv\\\":\\\"⦱\\\",\\\"dfisht\\\":\\\"⥿\\\",\\\"Dfr\\\":\\\"𝔇\\\",\\\"dfr\\\":\\\"𝔡\\\",\\\"dHar\\\":\\\"⥥\\\",\\\"dharl\\\":\\\"⇃\\\",\\\"dharr\\\":\\\"⇂\\\",\\\"DiacriticalAcute\\\":\\\"´\\\",\\\"DiacriticalDot\\\":\\\"˙\\\",\\\"DiacriticalDoubleAcute\\\":\\\"˝\\\",\\\"DiacriticalGrave\\\":\\\"`\\\",\\\"DiacriticalTilde\\\":\\\"˜\\\",\\\"diam\\\":\\\"⋄\\\",\\\"diamond\\\":\\\"⋄\\\",\\\"Diamond\\\":\\\"⋄\\\",\\\"diamondsuit\\\":\\\"♦\\\",\\\"diams\\\":\\\"♦\\\",\\\"die\\\":\\\"¨\\\",\\\"DifferentialD\\\":\\\"ⅆ\\\",\\\"digamma\\\":\\\"ϝ\\\",\\\"disin\\\":\\\"⋲\\\",\\\"div\\\":\\\"÷\\\",\\\"divide\\\":\\\"÷\\\",\\\"divideontimes\\\":\\\"⋇\\\",\\\"divonx\\\":\\\"⋇\\\",\\\"DJcy\\\":\\\"Ђ\\\",\\\"djcy\\\":\\\"ђ\\\",\\\"dlcorn\\\":\\\"⌞\\\",\\\"dlcrop\\\":\\\"⌍\\\",\\\"dollar\\\":\\\"$\\\",\\\"Dopf\\\":\\\"𝔻\\\",\\\"dopf\\\":\\\"𝕕\\\",\\\"Dot\\\":\\\"¨\\\",\\\"dot\\\":\\\"˙\\\",\\\"DotDot\\\":\\\"⃜\\\",\\\"doteq\\\":\\\"≐\\\",\\\"doteqdot\\\":\\\"≑\\\",\\\"DotEqual\\\":\\\"≐\\\",\\\"dotminus\\\":\\\"∸\\\",\\\"dotplus\\\":\\\"∔\\\",\\\"dotsquare\\\":\\\"⊡\\\",\\\"doublebarwedge\\\":\\\"⌆\\\",\\\"DoubleContourIntegral\\\":\\\"∯\\\",\\\"DoubleDot\\\":\\\"¨\\\",\\\"DoubleDownArrow\\\":\\\"⇓\\\",\\\"DoubleLeftArrow\\\":\\\"⇐\\\",\\\"DoubleLeftRightArrow\\\":\\\"⇔\\\",\\\"DoubleLeftTee\\\":\\\"⫤\\\",\\\"DoubleLongLeftArrow\\\":\\\"⟸\\\",\\\"DoubleLongLeftRightArrow\\\":\\\"⟺\\\",\\\"DoubleLongRightArrow\\\":\\\"⟹\\\",\\\"DoubleRightArrow\\\":\\\"⇒\\\",\\\"DoubleRightTee\\\":\\\"⊨\\\",\\\"DoubleUpArrow\\\":\\\"⇑\\\",\\\"DoubleUpDownArrow\\\":\\\"⇕\\\",\\\"DoubleVerticalBar\\\":\\\"∥\\\",\\\"DownArrowBar\\\":\\\"⤓\\\",\\\"downarrow\\\":\\\"↓\\\",\\\"DownArrow\\\":\\\"↓\\\",\\\"Downarrow\\\":\\\"⇓\\\",\\\"DownArrowUpArrow\\\":\\\"⇵\\\",\\\"DownBreve\\\":\\\"̑\\\",\\\"downdownarrows\\\":\\\"⇊\\\",\\\"downharpoonleft\\\":\\\"⇃\\\",\\\"downharpoonright\\\":\\\"⇂\\\",\\\"DownLeftRightVector\\\":\\\"⥐\\\",\\\"DownLeftTeeVector\\\":\\\"⥞\\\",\\\"DownLeftVectorBar\\\":\\\"⥖\\\",\\\"DownLeftVector\\\":\\\"↽\\\",\\\"DownRightTeeVector\\\":\\\"⥟\\\",\\\"DownRightVectorBar\\\":\\\"⥗\\\",\\\"DownRightVector\\\":\\\"⇁\\\",\\\"DownTeeArrow\\\":\\\"↧\\\",\\\"DownTee\\\":\\\"⊤\\\",\\\"drbkarow\\\":\\\"⤐\\\",\\\"drcorn\\\":\\\"⌟\\\",\\\"drcrop\\\":\\\"⌌\\\",\\\"Dscr\\\":\\\"𝒟\\\",\\\"dscr\\\":\\\"𝒹\\\",\\\"DScy\\\":\\\"Ѕ\\\",\\\"dscy\\\":\\\"ѕ\\\",\\\"dsol\\\":\\\"⧶\\\",\\\"Dstrok\\\":\\\"Đ\\\",\\\"dstrok\\\":\\\"đ\\\",\\\"dtdot\\\":\\\"⋱\\\",\\\"dtri\\\":\\\"▿\\\",\\\"dtrif\\\":\\\"▾\\\",\\\"duarr\\\":\\\"⇵\\\",\\\"duhar\\\":\\\"⥯\\\",\\\"dwangle\\\":\\\"⦦\\\",\\\"DZcy\\\":\\\"Џ\\\",\\\"dzcy\\\":\\\"џ\\\",\\\"dzigrarr\\\":\\\"⟿\\\",\\\"Eacute\\\":\\\"É\\\",\\\"eacute\\\":\\\"é\\\",\\\"easter\\\":\\\"⩮\\\",\\\"Ecaron\\\":\\\"Ě\\\",\\\"ecaron\\\":\\\"ě\\\",\\\"Ecirc\\\":\\\"Ê\\\",\\\"ecirc\\\":\\\"ê\\\",\\\"ecir\\\":\\\"≖\\\",\\\"ecolon\\\":\\\"≕\\\",\\\"Ecy\\\":\\\"Э\\\",\\\"ecy\\\":\\\"э\\\",\\\"eDDot\\\":\\\"⩷\\\",\\\"Edot\\\":\\\"Ė\\\",\\\"edot\\\":\\\"ė\\\",\\\"eDot\\\":\\\"≑\\\",\\\"ee\\\":\\\"ⅇ\\\",\\\"efDot\\\":\\\"≒\\\",\\\"Efr\\\":\\\"𝔈\\\",\\\"efr\\\":\\\"𝔢\\\",\\\"eg\\\":\\\"⪚\\\",\\\"Egrave\\\":\\\"È\\\",\\\"egrave\\\":\\\"è\\\",\\\"egs\\\":\\\"⪖\\\",\\\"egsdot\\\":\\\"⪘\\\",\\\"el\\\":\\\"⪙\\\",\\\"Element\\\":\\\"∈\\\",\\\"elinters\\\":\\\"⏧\\\",\\\"ell\\\":\\\"ℓ\\\",\\\"els\\\":\\\"⪕\\\",\\\"elsdot\\\":\\\"⪗\\\",\\\"Emacr\\\":\\\"Ē\\\",\\\"emacr\\\":\\\"ē\\\",\\\"empty\\\":\\\"∅\\\",\\\"emptyset\\\":\\\"∅\\\",\\\"EmptySmallSquare\\\":\\\"◻\\\",\\\"emptyv\\\":\\\"∅\\\",\\\"EmptyVerySmallSquare\\\":\\\"▫\\\",\\\"emsp13\\\":\\\" \\\",\\\"emsp14\\\":\\\" \\\",\\\"emsp\\\":\\\" \\\",\\\"ENG\\\":\\\"Ŋ\\\",\\\"eng\\\":\\\"ŋ\\\",\\\"ensp\\\":\\\" \\\",\\\"Eogon\\\":\\\"Ę\\\",\\\"eogon\\\":\\\"ę\\\",\\\"Eopf\\\":\\\"𝔼\\\",\\\"eopf\\\":\\\"𝕖\\\",\\\"epar\\\":\\\"⋕\\\",\\\"eparsl\\\":\\\"⧣\\\",\\\"eplus\\\":\\\"⩱\\\",\\\"epsi\\\":\\\"ε\\\",\\\"Epsilon\\\":\\\"Ε\\\",\\\"epsilon\\\":\\\"ε\\\",\\\"epsiv\\\":\\\"ϵ\\\",\\\"eqcirc\\\":\\\"≖\\\",\\\"eqcolon\\\":\\\"≕\\\",\\\"eqsim\\\":\\\"≂\\\",\\\"eqslantgtr\\\":\\\"⪖\\\",\\\"eqslantless\\\":\\\"⪕\\\",\\\"Equal\\\":\\\"⩵\\\",\\\"equals\\\":\\\"=\\\",\\\"EqualTilde\\\":\\\"≂\\\",\\\"equest\\\":\\\"≟\\\",\\\"Equilibrium\\\":\\\"⇌\\\",\\\"equiv\\\":\\\"≡\\\",\\\"equivDD\\\":\\\"⩸\\\",\\\"eqvparsl\\\":\\\"⧥\\\",\\\"erarr\\\":\\\"⥱\\\",\\\"erDot\\\":\\\"≓\\\",\\\"escr\\\":\\\"ℯ\\\",\\\"Escr\\\":\\\"ℰ\\\",\\\"esdot\\\":\\\"≐\\\",\\\"Esim\\\":\\\"⩳\\\",\\\"esim\\\":\\\"≂\\\",\\\"Eta\\\":\\\"Η\\\",\\\"eta\\\":\\\"η\\\",\\\"ETH\\\":\\\"Ð\\\",\\\"eth\\\":\\\"ð\\\",\\\"Euml\\\":\\\"Ë\\\",\\\"euml\\\":\\\"ë\\\",\\\"euro\\\":\\\"€\\\",\\\"excl\\\":\\\"!\\\",\\\"exist\\\":\\\"∃\\\",\\\"Exists\\\":\\\"∃\\\",\\\"expectation\\\":\\\"ℰ\\\",\\\"exponentiale\\\":\\\"ⅇ\\\",\\\"ExponentialE\\\":\\\"ⅇ\\\",\\\"fallingdotseq\\\":\\\"≒\\\",\\\"Fcy\\\":\\\"Ф\\\",\\\"fcy\\\":\\\"ф\\\",\\\"female\\\":\\\"♀\\\",\\\"ffilig\\\":\\\"ffi\\\",\\\"fflig\\\":\\\"ff\\\",\\\"ffllig\\\":\\\"ffl\\\",\\\"Ffr\\\":\\\"𝔉\\\",\\\"ffr\\\":\\\"𝔣\\\",\\\"filig\\\":\\\"fi\\\",\\\"FilledSmallSquare\\\":\\\"◼\\\",\\\"FilledVerySmallSquare\\\":\\\"▪\\\",\\\"fjlig\\\":\\\"fj\\\",\\\"flat\\\":\\\"♭\\\",\\\"fllig\\\":\\\"fl\\\",\\\"fltns\\\":\\\"▱\\\",\\\"fnof\\\":\\\"ƒ\\\",\\\"Fopf\\\":\\\"𝔽\\\",\\\"fopf\\\":\\\"𝕗\\\",\\\"forall\\\":\\\"∀\\\",\\\"ForAll\\\":\\\"∀\\\",\\\"fork\\\":\\\"⋔\\\",\\\"forkv\\\":\\\"⫙\\\",\\\"Fouriertrf\\\":\\\"ℱ\\\",\\\"fpartint\\\":\\\"⨍\\\",\\\"frac12\\\":\\\"½\\\",\\\"frac13\\\":\\\"⅓\\\",\\\"frac14\\\":\\\"¼\\\",\\\"frac15\\\":\\\"⅕\\\",\\\"frac16\\\":\\\"⅙\\\",\\\"frac18\\\":\\\"⅛\\\",\\\"frac23\\\":\\\"⅔\\\",\\\"frac25\\\":\\\"⅖\\\",\\\"frac34\\\":\\\"¾\\\",\\\"frac35\\\":\\\"⅗\\\",\\\"frac38\\\":\\\"⅜\\\",\\\"frac45\\\":\\\"⅘\\\",\\\"frac56\\\":\\\"⅚\\\",\\\"frac58\\\":\\\"⅝\\\",\\\"frac78\\\":\\\"⅞\\\",\\\"frasl\\\":\\\"⁄\\\",\\\"frown\\\":\\\"⌢\\\",\\\"fscr\\\":\\\"𝒻\\\",\\\"Fscr\\\":\\\"ℱ\\\",\\\"gacute\\\":\\\"ǵ\\\",\\\"Gamma\\\":\\\"Γ\\\",\\\"gamma\\\":\\\"γ\\\",\\\"Gammad\\\":\\\"Ϝ\\\",\\\"gammad\\\":\\\"ϝ\\\",\\\"gap\\\":\\\"⪆\\\",\\\"Gbreve\\\":\\\"Ğ\\\",\\\"gbreve\\\":\\\"ğ\\\",\\\"Gcedil\\\":\\\"Ģ\\\",\\\"Gcirc\\\":\\\"Ĝ\\\",\\\"gcirc\\\":\\\"ĝ\\\",\\\"Gcy\\\":\\\"Г\\\",\\\"gcy\\\":\\\"г\\\",\\\"Gdot\\\":\\\"Ġ\\\",\\\"gdot\\\":\\\"ġ\\\",\\\"ge\\\":\\\"≥\\\",\\\"gE\\\":\\\"≧\\\",\\\"gEl\\\":\\\"⪌\\\",\\\"gel\\\":\\\"⋛\\\",\\\"geq\\\":\\\"≥\\\",\\\"geqq\\\":\\\"≧\\\",\\\"geqslant\\\":\\\"⩾\\\",\\\"gescc\\\":\\\"⪩\\\",\\\"ges\\\":\\\"⩾\\\",\\\"gesdot\\\":\\\"⪀\\\",\\\"gesdoto\\\":\\\"⪂\\\",\\\"gesdotol\\\":\\\"⪄\\\",\\\"gesl\\\":\\\"⋛︀\\\",\\\"gesles\\\":\\\"⪔\\\",\\\"Gfr\\\":\\\"𝔊\\\",\\\"gfr\\\":\\\"𝔤\\\",\\\"gg\\\":\\\"≫\\\",\\\"Gg\\\":\\\"⋙\\\",\\\"ggg\\\":\\\"⋙\\\",\\\"gimel\\\":\\\"ℷ\\\",\\\"GJcy\\\":\\\"Ѓ\\\",\\\"gjcy\\\":\\\"ѓ\\\",\\\"gla\\\":\\\"⪥\\\",\\\"gl\\\":\\\"≷\\\",\\\"glE\\\":\\\"⪒\\\",\\\"glj\\\":\\\"⪤\\\",\\\"gnap\\\":\\\"⪊\\\",\\\"gnapprox\\\":\\\"⪊\\\",\\\"gne\\\":\\\"⪈\\\",\\\"gnE\\\":\\\"≩\\\",\\\"gneq\\\":\\\"⪈\\\",\\\"gneqq\\\":\\\"≩\\\",\\\"gnsim\\\":\\\"⋧\\\",\\\"Gopf\\\":\\\"𝔾\\\",\\\"gopf\\\":\\\"𝕘\\\",\\\"grave\\\":\\\"`\\\",\\\"GreaterEqual\\\":\\\"≥\\\",\\\"GreaterEqualLess\\\":\\\"⋛\\\",\\\"GreaterFullEqual\\\":\\\"≧\\\",\\\"GreaterGreater\\\":\\\"⪢\\\",\\\"GreaterLess\\\":\\\"≷\\\",\\\"GreaterSlantEqual\\\":\\\"⩾\\\",\\\"GreaterTilde\\\":\\\"≳\\\",\\\"Gscr\\\":\\\"𝒢\\\",\\\"gscr\\\":\\\"ℊ\\\",\\\"gsim\\\":\\\"≳\\\",\\\"gsime\\\":\\\"⪎\\\",\\\"gsiml\\\":\\\"⪐\\\",\\\"gtcc\\\":\\\"⪧\\\",\\\"gtcir\\\":\\\"⩺\\\",\\\"gt\\\":\\\">\\\",\\\"GT\\\":\\\">\\\",\\\"Gt\\\":\\\"≫\\\",\\\"gtdot\\\":\\\"⋗\\\",\\\"gtlPar\\\":\\\"⦕\\\",\\\"gtquest\\\":\\\"⩼\\\",\\\"gtrapprox\\\":\\\"⪆\\\",\\\"gtrarr\\\":\\\"⥸\\\",\\\"gtrdot\\\":\\\"⋗\\\",\\\"gtreqless\\\":\\\"⋛\\\",\\\"gtreqqless\\\":\\\"⪌\\\",\\\"gtrless\\\":\\\"≷\\\",\\\"gtrsim\\\":\\\"≳\\\",\\\"gvertneqq\\\":\\\"≩︀\\\",\\\"gvnE\\\":\\\"≩︀\\\",\\\"Hacek\\\":\\\"ˇ\\\",\\\"hairsp\\\":\\\" \\\",\\\"half\\\":\\\"½\\\",\\\"hamilt\\\":\\\"ℋ\\\",\\\"HARDcy\\\":\\\"Ъ\\\",\\\"hardcy\\\":\\\"ъ\\\",\\\"harrcir\\\":\\\"⥈\\\",\\\"harr\\\":\\\"↔\\\",\\\"hArr\\\":\\\"⇔\\\",\\\"harrw\\\":\\\"↭\\\",\\\"Hat\\\":\\\"^\\\",\\\"hbar\\\":\\\"ℏ\\\",\\\"Hcirc\\\":\\\"Ĥ\\\",\\\"hcirc\\\":\\\"ĥ\\\",\\\"hearts\\\":\\\"♥\\\",\\\"heartsuit\\\":\\\"♥\\\",\\\"hellip\\\":\\\"…\\\",\\\"hercon\\\":\\\"⊹\\\",\\\"hfr\\\":\\\"𝔥\\\",\\\"Hfr\\\":\\\"ℌ\\\",\\\"HilbertSpace\\\":\\\"ℋ\\\",\\\"hksearow\\\":\\\"⤥\\\",\\\"hkswarow\\\":\\\"⤦\\\",\\\"hoarr\\\":\\\"⇿\\\",\\\"homtht\\\":\\\"∻\\\",\\\"hookleftarrow\\\":\\\"↩\\\",\\\"hookrightarrow\\\":\\\"↪\\\",\\\"hopf\\\":\\\"𝕙\\\",\\\"Hopf\\\":\\\"ℍ\\\",\\\"horbar\\\":\\\"―\\\",\\\"HorizontalLine\\\":\\\"─\\\",\\\"hscr\\\":\\\"𝒽\\\",\\\"Hscr\\\":\\\"ℋ\\\",\\\"hslash\\\":\\\"ℏ\\\",\\\"Hstrok\\\":\\\"Ħ\\\",\\\"hstrok\\\":\\\"ħ\\\",\\\"HumpDownHump\\\":\\\"≎\\\",\\\"HumpEqual\\\":\\\"≏\\\",\\\"hybull\\\":\\\"⁃\\\",\\\"hyphen\\\":\\\"‐\\\",\\\"Iacute\\\":\\\"Í\\\",\\\"iacute\\\":\\\"í\\\",\\\"ic\\\":\\\"\\\",\\\"Icirc\\\":\\\"Î\\\",\\\"icirc\\\":\\\"î\\\",\\\"Icy\\\":\\\"И\\\",\\\"icy\\\":\\\"и\\\",\\\"Idot\\\":\\\"İ\\\",\\\"IEcy\\\":\\\"Е\\\",\\\"iecy\\\":\\\"е\\\",\\\"iexcl\\\":\\\"¡\\\",\\\"iff\\\":\\\"⇔\\\",\\\"ifr\\\":\\\"𝔦\\\",\\\"Ifr\\\":\\\"ℑ\\\",\\\"Igrave\\\":\\\"Ì\\\",\\\"igrave\\\":\\\"ì\\\",\\\"ii\\\":\\\"ⅈ\\\",\\\"iiiint\\\":\\\"⨌\\\",\\\"iiint\\\":\\\"∭\\\",\\\"iinfin\\\":\\\"⧜\\\",\\\"iiota\\\":\\\"℩\\\",\\\"IJlig\\\":\\\"IJ\\\",\\\"ijlig\\\":\\\"ij\\\",\\\"Imacr\\\":\\\"Ī\\\",\\\"imacr\\\":\\\"ī\\\",\\\"image\\\":\\\"ℑ\\\",\\\"ImaginaryI\\\":\\\"ⅈ\\\",\\\"imagline\\\":\\\"ℐ\\\",\\\"imagpart\\\":\\\"ℑ\\\",\\\"imath\\\":\\\"ı\\\",\\\"Im\\\":\\\"ℑ\\\",\\\"imof\\\":\\\"⊷\\\",\\\"imped\\\":\\\"Ƶ\\\",\\\"Implies\\\":\\\"⇒\\\",\\\"incare\\\":\\\"℅\\\",\\\"in\\\":\\\"∈\\\",\\\"infin\\\":\\\"∞\\\",\\\"infintie\\\":\\\"⧝\\\",\\\"inodot\\\":\\\"ı\\\",\\\"intcal\\\":\\\"⊺\\\",\\\"int\\\":\\\"∫\\\",\\\"Int\\\":\\\"∬\\\",\\\"integers\\\":\\\"ℤ\\\",\\\"Integral\\\":\\\"∫\\\",\\\"intercal\\\":\\\"⊺\\\",\\\"Intersection\\\":\\\"⋂\\\",\\\"intlarhk\\\":\\\"⨗\\\",\\\"intprod\\\":\\\"⨼\\\",\\\"InvisibleComma\\\":\\\"\\\",\\\"InvisibleTimes\\\":\\\"\\\",\\\"IOcy\\\":\\\"Ё\\\",\\\"iocy\\\":\\\"ё\\\",\\\"Iogon\\\":\\\"Į\\\",\\\"iogon\\\":\\\"į\\\",\\\"Iopf\\\":\\\"𝕀\\\",\\\"iopf\\\":\\\"𝕚\\\",\\\"Iota\\\":\\\"Ι\\\",\\\"iota\\\":\\\"ι\\\",\\\"iprod\\\":\\\"⨼\\\",\\\"iquest\\\":\\\"¿\\\",\\\"iscr\\\":\\\"𝒾\\\",\\\"Iscr\\\":\\\"ℐ\\\",\\\"isin\\\":\\\"∈\\\",\\\"isindot\\\":\\\"⋵\\\",\\\"isinE\\\":\\\"⋹\\\",\\\"isins\\\":\\\"⋴\\\",\\\"isinsv\\\":\\\"⋳\\\",\\\"isinv\\\":\\\"∈\\\",\\\"it\\\":\\\"\\\",\\\"Itilde\\\":\\\"Ĩ\\\",\\\"itilde\\\":\\\"ĩ\\\",\\\"Iukcy\\\":\\\"І\\\",\\\"iukcy\\\":\\\"і\\\",\\\"Iuml\\\":\\\"Ï\\\",\\\"iuml\\\":\\\"ï\\\",\\\"Jcirc\\\":\\\"Ĵ\\\",\\\"jcirc\\\":\\\"ĵ\\\",\\\"Jcy\\\":\\\"Й\\\",\\\"jcy\\\":\\\"й\\\",\\\"Jfr\\\":\\\"𝔍\\\",\\\"jfr\\\":\\\"𝔧\\\",\\\"jmath\\\":\\\"ȷ\\\",\\\"Jopf\\\":\\\"𝕁\\\",\\\"jopf\\\":\\\"𝕛\\\",\\\"Jscr\\\":\\\"𝒥\\\",\\\"jscr\\\":\\\"𝒿\\\",\\\"Jsercy\\\":\\\"Ј\\\",\\\"jsercy\\\":\\\"ј\\\",\\\"Jukcy\\\":\\\"Є\\\",\\\"jukcy\\\":\\\"є\\\",\\\"Kappa\\\":\\\"Κ\\\",\\\"kappa\\\":\\\"κ\\\",\\\"kappav\\\":\\\"ϰ\\\",\\\"Kcedil\\\":\\\"Ķ\\\",\\\"kcedil\\\":\\\"ķ\\\",\\\"Kcy\\\":\\\"К\\\",\\\"kcy\\\":\\\"к\\\",\\\"Kfr\\\":\\\"𝔎\\\",\\\"kfr\\\":\\\"𝔨\\\",\\\"kgreen\\\":\\\"ĸ\\\",\\\"KHcy\\\":\\\"Х\\\",\\\"khcy\\\":\\\"х\\\",\\\"KJcy\\\":\\\"Ќ\\\",\\\"kjcy\\\":\\\"ќ\\\",\\\"Kopf\\\":\\\"𝕂\\\",\\\"kopf\\\":\\\"𝕜\\\",\\\"Kscr\\\":\\\"𝒦\\\",\\\"kscr\\\":\\\"𝓀\\\",\\\"lAarr\\\":\\\"⇚\\\",\\\"Lacute\\\":\\\"Ĺ\\\",\\\"lacute\\\":\\\"ĺ\\\",\\\"laemptyv\\\":\\\"⦴\\\",\\\"lagran\\\":\\\"ℒ\\\",\\\"Lambda\\\":\\\"Λ\\\",\\\"lambda\\\":\\\"λ\\\",\\\"lang\\\":\\\"⟨\\\",\\\"Lang\\\":\\\"⟪\\\",\\\"langd\\\":\\\"⦑\\\",\\\"langle\\\":\\\"⟨\\\",\\\"lap\\\":\\\"⪅\\\",\\\"Laplacetrf\\\":\\\"ℒ\\\",\\\"laquo\\\":\\\"«\\\",\\\"larrb\\\":\\\"⇤\\\",\\\"larrbfs\\\":\\\"⤟\\\",\\\"larr\\\":\\\"←\\\",\\\"Larr\\\":\\\"↞\\\",\\\"lArr\\\":\\\"⇐\\\",\\\"larrfs\\\":\\\"⤝\\\",\\\"larrhk\\\":\\\"↩\\\",\\\"larrlp\\\":\\\"↫\\\",\\\"larrpl\\\":\\\"⤹\\\",\\\"larrsim\\\":\\\"⥳\\\",\\\"larrtl\\\":\\\"↢\\\",\\\"latail\\\":\\\"⤙\\\",\\\"lAtail\\\":\\\"⤛\\\",\\\"lat\\\":\\\"⪫\\\",\\\"late\\\":\\\"⪭\\\",\\\"lates\\\":\\\"⪭︀\\\",\\\"lbarr\\\":\\\"⤌\\\",\\\"lBarr\\\":\\\"⤎\\\",\\\"lbbrk\\\":\\\"❲\\\",\\\"lbrace\\\":\\\"{\\\",\\\"lbrack\\\":\\\"[\\\",\\\"lbrke\\\":\\\"⦋\\\",\\\"lbrksld\\\":\\\"⦏\\\",\\\"lbrkslu\\\":\\\"⦍\\\",\\\"Lcaron\\\":\\\"Ľ\\\",\\\"lcaron\\\":\\\"ľ\\\",\\\"Lcedil\\\":\\\"Ļ\\\",\\\"lcedil\\\":\\\"ļ\\\",\\\"lceil\\\":\\\"⌈\\\",\\\"lcub\\\":\\\"{\\\",\\\"Lcy\\\":\\\"Л\\\",\\\"lcy\\\":\\\"л\\\",\\\"ldca\\\":\\\"⤶\\\",\\\"ldquo\\\":\\\"“\\\",\\\"ldquor\\\":\\\"„\\\",\\\"ldrdhar\\\":\\\"⥧\\\",\\\"ldrushar\\\":\\\"⥋\\\",\\\"ldsh\\\":\\\"↲\\\",\\\"le\\\":\\\"≤\\\",\\\"lE\\\":\\\"≦\\\",\\\"LeftAngleBracket\\\":\\\"⟨\\\",\\\"LeftArrowBar\\\":\\\"⇤\\\",\\\"leftarrow\\\":\\\"←\\\",\\\"LeftArrow\\\":\\\"←\\\",\\\"Leftarrow\\\":\\\"⇐\\\",\\\"LeftArrowRightArrow\\\":\\\"⇆\\\",\\\"leftarrowtail\\\":\\\"↢\\\",\\\"LeftCeiling\\\":\\\"⌈\\\",\\\"LeftDoubleBracket\\\":\\\"⟦\\\",\\\"LeftDownTeeVector\\\":\\\"⥡\\\",\\\"LeftDownVectorBar\\\":\\\"⥙\\\",\\\"LeftDownVector\\\":\\\"⇃\\\",\\\"LeftFloor\\\":\\\"⌊\\\",\\\"leftharpoondown\\\":\\\"↽\\\",\\\"leftharpoonup\\\":\\\"↼\\\",\\\"leftleftarrows\\\":\\\"⇇\\\",\\\"leftrightarrow\\\":\\\"↔\\\",\\\"LeftRightArrow\\\":\\\"↔\\\",\\\"Leftrightarrow\\\":\\\"⇔\\\",\\\"leftrightarrows\\\":\\\"⇆\\\",\\\"leftrightharpoons\\\":\\\"⇋\\\",\\\"leftrightsquigarrow\\\":\\\"↭\\\",\\\"LeftRightVector\\\":\\\"⥎\\\",\\\"LeftTeeArrow\\\":\\\"↤\\\",\\\"LeftTee\\\":\\\"⊣\\\",\\\"LeftTeeVector\\\":\\\"⥚\\\",\\\"leftthreetimes\\\":\\\"⋋\\\",\\\"LeftTriangleBar\\\":\\\"⧏\\\",\\\"LeftTriangle\\\":\\\"⊲\\\",\\\"LeftTriangleEqual\\\":\\\"⊴\\\",\\\"LeftUpDownVector\\\":\\\"⥑\\\",\\\"LeftUpTeeVector\\\":\\\"⥠\\\",\\\"LeftUpVectorBar\\\":\\\"⥘\\\",\\\"LeftUpVector\\\":\\\"↿\\\",\\\"LeftVectorBar\\\":\\\"⥒\\\",\\\"LeftVector\\\":\\\"↼\\\",\\\"lEg\\\":\\\"⪋\\\",\\\"leg\\\":\\\"⋚\\\",\\\"leq\\\":\\\"≤\\\",\\\"leqq\\\":\\\"≦\\\",\\\"leqslant\\\":\\\"⩽\\\",\\\"lescc\\\":\\\"⪨\\\",\\\"les\\\":\\\"⩽\\\",\\\"lesdot\\\":\\\"⩿\\\",\\\"lesdoto\\\":\\\"⪁\\\",\\\"lesdotor\\\":\\\"⪃\\\",\\\"lesg\\\":\\\"⋚︀\\\",\\\"lesges\\\":\\\"⪓\\\",\\\"lessapprox\\\":\\\"⪅\\\",\\\"lessdot\\\":\\\"⋖\\\",\\\"lesseqgtr\\\":\\\"⋚\\\",\\\"lesseqqgtr\\\":\\\"⪋\\\",\\\"LessEqualGreater\\\":\\\"⋚\\\",\\\"LessFullEqual\\\":\\\"≦\\\",\\\"LessGreater\\\":\\\"≶\\\",\\\"lessgtr\\\":\\\"≶\\\",\\\"LessLess\\\":\\\"⪡\\\",\\\"lesssim\\\":\\\"≲\\\",\\\"LessSlantEqual\\\":\\\"⩽\\\",\\\"LessTilde\\\":\\\"≲\\\",\\\"lfisht\\\":\\\"⥼\\\",\\\"lfloor\\\":\\\"⌊\\\",\\\"Lfr\\\":\\\"𝔏\\\",\\\"lfr\\\":\\\"𝔩\\\",\\\"lg\\\":\\\"≶\\\",\\\"lgE\\\":\\\"⪑\\\",\\\"lHar\\\":\\\"⥢\\\",\\\"lhard\\\":\\\"↽\\\",\\\"lharu\\\":\\\"↼\\\",\\\"lharul\\\":\\\"⥪\\\",\\\"lhblk\\\":\\\"▄\\\",\\\"LJcy\\\":\\\"Љ\\\",\\\"ljcy\\\":\\\"љ\\\",\\\"llarr\\\":\\\"⇇\\\",\\\"ll\\\":\\\"≪\\\",\\\"Ll\\\":\\\"⋘\\\",\\\"llcorner\\\":\\\"⌞\\\",\\\"Lleftarrow\\\":\\\"⇚\\\",\\\"llhard\\\":\\\"⥫\\\",\\\"lltri\\\":\\\"◺\\\",\\\"Lmidot\\\":\\\"Ŀ\\\",\\\"lmidot\\\":\\\"ŀ\\\",\\\"lmoustache\\\":\\\"⎰\\\",\\\"lmoust\\\":\\\"⎰\\\",\\\"lnap\\\":\\\"⪉\\\",\\\"lnapprox\\\":\\\"⪉\\\",\\\"lne\\\":\\\"⪇\\\",\\\"lnE\\\":\\\"≨\\\",\\\"lneq\\\":\\\"⪇\\\",\\\"lneqq\\\":\\\"≨\\\",\\\"lnsim\\\":\\\"⋦\\\",\\\"loang\\\":\\\"⟬\\\",\\\"loarr\\\":\\\"⇽\\\",\\\"lobrk\\\":\\\"⟦\\\",\\\"longleftarrow\\\":\\\"⟵\\\",\\\"LongLeftArrow\\\":\\\"⟵\\\",\\\"Longleftarrow\\\":\\\"⟸\\\",\\\"longleftrightarrow\\\":\\\"⟷\\\",\\\"LongLeftRightArrow\\\":\\\"⟷\\\",\\\"Longleftrightarrow\\\":\\\"⟺\\\",\\\"longmapsto\\\":\\\"⟼\\\",\\\"longrightarrow\\\":\\\"⟶\\\",\\\"LongRightArrow\\\":\\\"⟶\\\",\\\"Longrightarrow\\\":\\\"⟹\\\",\\\"looparrowleft\\\":\\\"↫\\\",\\\"looparrowright\\\":\\\"↬\\\",\\\"lopar\\\":\\\"⦅\\\",\\\"Lopf\\\":\\\"𝕃\\\",\\\"lopf\\\":\\\"𝕝\\\",\\\"loplus\\\":\\\"⨭\\\",\\\"lotimes\\\":\\\"⨴\\\",\\\"lowast\\\":\\\"∗\\\",\\\"lowbar\\\":\\\"_\\\",\\\"LowerLeftArrow\\\":\\\"↙\\\",\\\"LowerRightArrow\\\":\\\"↘\\\",\\\"loz\\\":\\\"◊\\\",\\\"lozenge\\\":\\\"◊\\\",\\\"lozf\\\":\\\"⧫\\\",\\\"lpar\\\":\\\"(\\\",\\\"lparlt\\\":\\\"⦓\\\",\\\"lrarr\\\":\\\"⇆\\\",\\\"lrcorner\\\":\\\"⌟\\\",\\\"lrhar\\\":\\\"⇋\\\",\\\"lrhard\\\":\\\"⥭\\\",\\\"lrm\\\":\\\"\\\",\\\"lrtri\\\":\\\"⊿\\\",\\\"lsaquo\\\":\\\"‹\\\",\\\"lscr\\\":\\\"𝓁\\\",\\\"Lscr\\\":\\\"ℒ\\\",\\\"lsh\\\":\\\"↰\\\",\\\"Lsh\\\":\\\"↰\\\",\\\"lsim\\\":\\\"≲\\\",\\\"lsime\\\":\\\"⪍\\\",\\\"lsimg\\\":\\\"⪏\\\",\\\"lsqb\\\":\\\"[\\\",\\\"lsquo\\\":\\\"‘\\\",\\\"lsquor\\\":\\\"‚\\\",\\\"Lstrok\\\":\\\"Ł\\\",\\\"lstrok\\\":\\\"ł\\\",\\\"ltcc\\\":\\\"⪦\\\",\\\"ltcir\\\":\\\"⩹\\\",\\\"lt\\\":\\\"<\\\",\\\"LT\\\":\\\"<\\\",\\\"Lt\\\":\\\"≪\\\",\\\"ltdot\\\":\\\"⋖\\\",\\\"lthree\\\":\\\"⋋\\\",\\\"ltimes\\\":\\\"⋉\\\",\\\"ltlarr\\\":\\\"⥶\\\",\\\"ltquest\\\":\\\"⩻\\\",\\\"ltri\\\":\\\"◃\\\",\\\"ltrie\\\":\\\"⊴\\\",\\\"ltrif\\\":\\\"◂\\\",\\\"ltrPar\\\":\\\"⦖\\\",\\\"lurdshar\\\":\\\"⥊\\\",\\\"luruhar\\\":\\\"⥦\\\",\\\"lvertneqq\\\":\\\"≨︀\\\",\\\"lvnE\\\":\\\"≨︀\\\",\\\"macr\\\":\\\"¯\\\",\\\"male\\\":\\\"♂\\\",\\\"malt\\\":\\\"✠\\\",\\\"maltese\\\":\\\"✠\\\",\\\"Map\\\":\\\"⤅\\\",\\\"map\\\":\\\"↦\\\",\\\"mapsto\\\":\\\"↦\\\",\\\"mapstodown\\\":\\\"↧\\\",\\\"mapstoleft\\\":\\\"↤\\\",\\\"mapstoup\\\":\\\"↥\\\",\\\"marker\\\":\\\"▮\\\",\\\"mcomma\\\":\\\"⨩\\\",\\\"Mcy\\\":\\\"М\\\",\\\"mcy\\\":\\\"м\\\",\\\"mdash\\\":\\\"—\\\",\\\"mDDot\\\":\\\"∺\\\",\\\"measuredangle\\\":\\\"∡\\\",\\\"MediumSpace\\\":\\\" \\\",\\\"Mellintrf\\\":\\\"ℳ\\\",\\\"Mfr\\\":\\\"𝔐\\\",\\\"mfr\\\":\\\"𝔪\\\",\\\"mho\\\":\\\"℧\\\",\\\"micro\\\":\\\"µ\\\",\\\"midast\\\":\\\"*\\\",\\\"midcir\\\":\\\"⫰\\\",\\\"mid\\\":\\\"∣\\\",\\\"middot\\\":\\\"·\\\",\\\"minusb\\\":\\\"⊟\\\",\\\"minus\\\":\\\"−\\\",\\\"minusd\\\":\\\"∸\\\",\\\"minusdu\\\":\\\"⨪\\\",\\\"MinusPlus\\\":\\\"∓\\\",\\\"mlcp\\\":\\\"⫛\\\",\\\"mldr\\\":\\\"…\\\",\\\"mnplus\\\":\\\"∓\\\",\\\"models\\\":\\\"⊧\\\",\\\"Mopf\\\":\\\"𝕄\\\",\\\"mopf\\\":\\\"𝕞\\\",\\\"mp\\\":\\\"∓\\\",\\\"mscr\\\":\\\"𝓂\\\",\\\"Mscr\\\":\\\"ℳ\\\",\\\"mstpos\\\":\\\"∾\\\",\\\"Mu\\\":\\\"Μ\\\",\\\"mu\\\":\\\"μ\\\",\\\"multimap\\\":\\\"⊸\\\",\\\"mumap\\\":\\\"⊸\\\",\\\"nabla\\\":\\\"∇\\\",\\\"Nacute\\\":\\\"Ń\\\",\\\"nacute\\\":\\\"ń\\\",\\\"nang\\\":\\\"∠⃒\\\",\\\"nap\\\":\\\"≉\\\",\\\"napE\\\":\\\"⩰̸\\\",\\\"napid\\\":\\\"≋̸\\\",\\\"napos\\\":\\\"ʼn\\\",\\\"napprox\\\":\\\"≉\\\",\\\"natural\\\":\\\"♮\\\",\\\"naturals\\\":\\\"ℕ\\\",\\\"natur\\\":\\\"♮\\\",\\\"nbsp\\\":\\\" \\\",\\\"nbump\\\":\\\"≎̸\\\",\\\"nbumpe\\\":\\\"≏̸\\\",\\\"ncap\\\":\\\"⩃\\\",\\\"Ncaron\\\":\\\"Ň\\\",\\\"ncaron\\\":\\\"ň\\\",\\\"Ncedil\\\":\\\"Ņ\\\",\\\"ncedil\\\":\\\"ņ\\\",\\\"ncong\\\":\\\"≇\\\",\\\"ncongdot\\\":\\\"⩭̸\\\",\\\"ncup\\\":\\\"⩂\\\",\\\"Ncy\\\":\\\"Н\\\",\\\"ncy\\\":\\\"н\\\",\\\"ndash\\\":\\\"–\\\",\\\"nearhk\\\":\\\"⤤\\\",\\\"nearr\\\":\\\"↗\\\",\\\"neArr\\\":\\\"⇗\\\",\\\"nearrow\\\":\\\"↗\\\",\\\"ne\\\":\\\"≠\\\",\\\"nedot\\\":\\\"≐̸\\\",\\\"NegativeMediumSpace\\\":\\\"\\\",\\\"NegativeThickSpace\\\":\\\"\\\",\\\"NegativeThinSpace\\\":\\\"\\\",\\\"NegativeVeryThinSpace\\\":\\\"\\\",\\\"nequiv\\\":\\\"≢\\\",\\\"nesear\\\":\\\"⤨\\\",\\\"nesim\\\":\\\"≂̸\\\",\\\"NestedGreaterGreater\\\":\\\"≫\\\",\\\"NestedLessLess\\\":\\\"≪\\\",\\\"NewLine\\\":\\\"\\\\n\\\",\\\"nexist\\\":\\\"∄\\\",\\\"nexists\\\":\\\"∄\\\",\\\"Nfr\\\":\\\"𝔑\\\",\\\"nfr\\\":\\\"𝔫\\\",\\\"ngE\\\":\\\"≧̸\\\",\\\"nge\\\":\\\"≱\\\",\\\"ngeq\\\":\\\"≱\\\",\\\"ngeqq\\\":\\\"≧̸\\\",\\\"ngeqslant\\\":\\\"⩾̸\\\",\\\"nges\\\":\\\"⩾̸\\\",\\\"nGg\\\":\\\"⋙̸\\\",\\\"ngsim\\\":\\\"≵\\\",\\\"nGt\\\":\\\"≫⃒\\\",\\\"ngt\\\":\\\"≯\\\",\\\"ngtr\\\":\\\"≯\\\",\\\"nGtv\\\":\\\"≫̸\\\",\\\"nharr\\\":\\\"↮\\\",\\\"nhArr\\\":\\\"⇎\\\",\\\"nhpar\\\":\\\"⫲\\\",\\\"ni\\\":\\\"∋\\\",\\\"nis\\\":\\\"⋼\\\",\\\"nisd\\\":\\\"⋺\\\",\\\"niv\\\":\\\"∋\\\",\\\"NJcy\\\":\\\"Њ\\\",\\\"njcy\\\":\\\"њ\\\",\\\"nlarr\\\":\\\"↚\\\",\\\"nlArr\\\":\\\"⇍\\\",\\\"nldr\\\":\\\"‥\\\",\\\"nlE\\\":\\\"≦̸\\\",\\\"nle\\\":\\\"≰\\\",\\\"nleftarrow\\\":\\\"↚\\\",\\\"nLeftarrow\\\":\\\"⇍\\\",\\\"nleftrightarrow\\\":\\\"↮\\\",\\\"nLeftrightarrow\\\":\\\"⇎\\\",\\\"nleq\\\":\\\"≰\\\",\\\"nleqq\\\":\\\"≦̸\\\",\\\"nleqslant\\\":\\\"⩽̸\\\",\\\"nles\\\":\\\"⩽̸\\\",\\\"nless\\\":\\\"≮\\\",\\\"nLl\\\":\\\"⋘̸\\\",\\\"nlsim\\\":\\\"≴\\\",\\\"nLt\\\":\\\"≪⃒\\\",\\\"nlt\\\":\\\"≮\\\",\\\"nltri\\\":\\\"⋪\\\",\\\"nltrie\\\":\\\"⋬\\\",\\\"nLtv\\\":\\\"≪̸\\\",\\\"nmid\\\":\\\"∤\\\",\\\"NoBreak\\\":\\\"\\\",\\\"NonBreakingSpace\\\":\\\" \\\",\\\"nopf\\\":\\\"𝕟\\\",\\\"Nopf\\\":\\\"ℕ\\\",\\\"Not\\\":\\\"⫬\\\",\\\"not\\\":\\\"¬\\\",\\\"NotCongruent\\\":\\\"≢\\\",\\\"NotCupCap\\\":\\\"≭\\\",\\\"NotDoubleVerticalBar\\\":\\\"∦\\\",\\\"NotElement\\\":\\\"∉\\\",\\\"NotEqual\\\":\\\"≠\\\",\\\"NotEqualTilde\\\":\\\"≂̸\\\",\\\"NotExists\\\":\\\"∄\\\",\\\"NotGreater\\\":\\\"≯\\\",\\\"NotGreaterEqual\\\":\\\"≱\\\",\\\"NotGreaterFullEqual\\\":\\\"≧̸\\\",\\\"NotGreaterGreater\\\":\\\"≫̸\\\",\\\"NotGreaterLess\\\":\\\"≹\\\",\\\"NotGreaterSlantEqual\\\":\\\"⩾̸\\\",\\\"NotGreaterTilde\\\":\\\"≵\\\",\\\"NotHumpDownHump\\\":\\\"≎̸\\\",\\\"NotHumpEqual\\\":\\\"≏̸\\\",\\\"notin\\\":\\\"∉\\\",\\\"notindot\\\":\\\"⋵̸\\\",\\\"notinE\\\":\\\"⋹̸\\\",\\\"notinva\\\":\\\"∉\\\",\\\"notinvb\\\":\\\"⋷\\\",\\\"notinvc\\\":\\\"⋶\\\",\\\"NotLeftTriangleBar\\\":\\\"⧏̸\\\",\\\"NotLeftTriangle\\\":\\\"⋪\\\",\\\"NotLeftTriangleEqual\\\":\\\"⋬\\\",\\\"NotLess\\\":\\\"≮\\\",\\\"NotLessEqual\\\":\\\"≰\\\",\\\"NotLessGreater\\\":\\\"≸\\\",\\\"NotLessLess\\\":\\\"≪̸\\\",\\\"NotLessSlantEqual\\\":\\\"⩽̸\\\",\\\"NotLessTilde\\\":\\\"≴\\\",\\\"NotNestedGreaterGreater\\\":\\\"⪢̸\\\",\\\"NotNestedLessLess\\\":\\\"⪡̸\\\",\\\"notni\\\":\\\"∌\\\",\\\"notniva\\\":\\\"∌\\\",\\\"notnivb\\\":\\\"⋾\\\",\\\"notnivc\\\":\\\"⋽\\\",\\\"NotPrecedes\\\":\\\"⊀\\\",\\\"NotPrecedesEqual\\\":\\\"⪯̸\\\",\\\"NotPrecedesSlantEqual\\\":\\\"⋠\\\",\\\"NotReverseElement\\\":\\\"∌\\\",\\\"NotRightTriangleBar\\\":\\\"⧐̸\\\",\\\"NotRightTriangle\\\":\\\"⋫\\\",\\\"NotRightTriangleEqual\\\":\\\"⋭\\\",\\\"NotSquareSubset\\\":\\\"⊏̸\\\",\\\"NotSquareSubsetEqual\\\":\\\"⋢\\\",\\\"NotSquareSuperset\\\":\\\"⊐̸\\\",\\\"NotSquareSupersetEqual\\\":\\\"⋣\\\",\\\"NotSubset\\\":\\\"⊂⃒\\\",\\\"NotSubsetEqual\\\":\\\"⊈\\\",\\\"NotSucceeds\\\":\\\"⊁\\\",\\\"NotSucceedsEqual\\\":\\\"⪰̸\\\",\\\"NotSucceedsSlantEqual\\\":\\\"⋡\\\",\\\"NotSucceedsTilde\\\":\\\"≿̸\\\",\\\"NotSuperset\\\":\\\"⊃⃒\\\",\\\"NotSupersetEqual\\\":\\\"⊉\\\",\\\"NotTilde\\\":\\\"≁\\\",\\\"NotTildeEqual\\\":\\\"≄\\\",\\\"NotTildeFullEqual\\\":\\\"≇\\\",\\\"NotTildeTilde\\\":\\\"≉\\\",\\\"NotVerticalBar\\\":\\\"∤\\\",\\\"nparallel\\\":\\\"∦\\\",\\\"npar\\\":\\\"∦\\\",\\\"nparsl\\\":\\\"⫽⃥\\\",\\\"npart\\\":\\\"∂̸\\\",\\\"npolint\\\":\\\"⨔\\\",\\\"npr\\\":\\\"⊀\\\",\\\"nprcue\\\":\\\"⋠\\\",\\\"nprec\\\":\\\"⊀\\\",\\\"npreceq\\\":\\\"⪯̸\\\",\\\"npre\\\":\\\"⪯̸\\\",\\\"nrarrc\\\":\\\"⤳̸\\\",\\\"nrarr\\\":\\\"↛\\\",\\\"nrArr\\\":\\\"⇏\\\",\\\"nrarrw\\\":\\\"↝̸\\\",\\\"nrightarrow\\\":\\\"↛\\\",\\\"nRightarrow\\\":\\\"⇏\\\",\\\"nrtri\\\":\\\"⋫\\\",\\\"nrtrie\\\":\\\"⋭\\\",\\\"nsc\\\":\\\"⊁\\\",\\\"nsccue\\\":\\\"⋡\\\",\\\"nsce\\\":\\\"⪰̸\\\",\\\"Nscr\\\":\\\"𝒩\\\",\\\"nscr\\\":\\\"𝓃\\\",\\\"nshortmid\\\":\\\"∤\\\",\\\"nshortparallel\\\":\\\"∦\\\",\\\"nsim\\\":\\\"≁\\\",\\\"nsime\\\":\\\"≄\\\",\\\"nsimeq\\\":\\\"≄\\\",\\\"nsmid\\\":\\\"∤\\\",\\\"nspar\\\":\\\"∦\\\",\\\"nsqsube\\\":\\\"⋢\\\",\\\"nsqsupe\\\":\\\"⋣\\\",\\\"nsub\\\":\\\"⊄\\\",\\\"nsubE\\\":\\\"⫅̸\\\",\\\"nsube\\\":\\\"⊈\\\",\\\"nsubset\\\":\\\"⊂⃒\\\",\\\"nsubseteq\\\":\\\"⊈\\\",\\\"nsubseteqq\\\":\\\"⫅̸\\\",\\\"nsucc\\\":\\\"⊁\\\",\\\"nsucceq\\\":\\\"⪰̸\\\",\\\"nsup\\\":\\\"⊅\\\",\\\"nsupE\\\":\\\"⫆̸\\\",\\\"nsupe\\\":\\\"⊉\\\",\\\"nsupset\\\":\\\"⊃⃒\\\",\\\"nsupseteq\\\":\\\"⊉\\\",\\\"nsupseteqq\\\":\\\"⫆̸\\\",\\\"ntgl\\\":\\\"≹\\\",\\\"Ntilde\\\":\\\"Ñ\\\",\\\"ntilde\\\":\\\"ñ\\\",\\\"ntlg\\\":\\\"≸\\\",\\\"ntriangleleft\\\":\\\"⋪\\\",\\\"ntrianglelefteq\\\":\\\"⋬\\\",\\\"ntriangleright\\\":\\\"⋫\\\",\\\"ntrianglerighteq\\\":\\\"⋭\\\",\\\"Nu\\\":\\\"Ν\\\",\\\"nu\\\":\\\"ν\\\",\\\"num\\\":\\\"#\\\",\\\"numero\\\":\\\"№\\\",\\\"numsp\\\":\\\" \\\",\\\"nvap\\\":\\\"≍⃒\\\",\\\"nvdash\\\":\\\"⊬\\\",\\\"nvDash\\\":\\\"⊭\\\",\\\"nVdash\\\":\\\"⊮\\\",\\\"nVDash\\\":\\\"⊯\\\",\\\"nvge\\\":\\\"≥⃒\\\",\\\"nvgt\\\":\\\">⃒\\\",\\\"nvHarr\\\":\\\"⤄\\\",\\\"nvinfin\\\":\\\"⧞\\\",\\\"nvlArr\\\":\\\"⤂\\\",\\\"nvle\\\":\\\"≤⃒\\\",\\\"nvlt\\\":\\\"<⃒\\\",\\\"nvltrie\\\":\\\"⊴⃒\\\",\\\"nvrArr\\\":\\\"⤃\\\",\\\"nvrtrie\\\":\\\"⊵⃒\\\",\\\"nvsim\\\":\\\"∼⃒\\\",\\\"nwarhk\\\":\\\"⤣\\\",\\\"nwarr\\\":\\\"↖\\\",\\\"nwArr\\\":\\\"⇖\\\",\\\"nwarrow\\\":\\\"↖\\\",\\\"nwnear\\\":\\\"⤧\\\",\\\"Oacute\\\":\\\"Ó\\\",\\\"oacute\\\":\\\"ó\\\",\\\"oast\\\":\\\"⊛\\\",\\\"Ocirc\\\":\\\"Ô\\\",\\\"ocirc\\\":\\\"ô\\\",\\\"ocir\\\":\\\"⊚\\\",\\\"Ocy\\\":\\\"О\\\",\\\"ocy\\\":\\\"о\\\",\\\"odash\\\":\\\"⊝\\\",\\\"Odblac\\\":\\\"Ő\\\",\\\"odblac\\\":\\\"ő\\\",\\\"odiv\\\":\\\"⨸\\\",\\\"odot\\\":\\\"⊙\\\",\\\"odsold\\\":\\\"⦼\\\",\\\"OElig\\\":\\\"Œ\\\",\\\"oelig\\\":\\\"œ\\\",\\\"ofcir\\\":\\\"⦿\\\",\\\"Ofr\\\":\\\"𝔒\\\",\\\"ofr\\\":\\\"𝔬\\\",\\\"ogon\\\":\\\"˛\\\",\\\"Ograve\\\":\\\"Ò\\\",\\\"ograve\\\":\\\"ò\\\",\\\"ogt\\\":\\\"⧁\\\",\\\"ohbar\\\":\\\"⦵\\\",\\\"ohm\\\":\\\"Ω\\\",\\\"oint\\\":\\\"∮\\\",\\\"olarr\\\":\\\"↺\\\",\\\"olcir\\\":\\\"⦾\\\",\\\"olcross\\\":\\\"⦻\\\",\\\"oline\\\":\\\"‾\\\",\\\"olt\\\":\\\"⧀\\\",\\\"Omacr\\\":\\\"Ō\\\",\\\"omacr\\\":\\\"ō\\\",\\\"Omega\\\":\\\"Ω\\\",\\\"omega\\\":\\\"ω\\\",\\\"Omicron\\\":\\\"Ο\\\",\\\"omicron\\\":\\\"ο\\\",\\\"omid\\\":\\\"⦶\\\",\\\"ominus\\\":\\\"⊖\\\",\\\"Oopf\\\":\\\"𝕆\\\",\\\"oopf\\\":\\\"𝕠\\\",\\\"opar\\\":\\\"⦷\\\",\\\"OpenCurlyDoubleQuote\\\":\\\"“\\\",\\\"OpenCurlyQuote\\\":\\\"‘\\\",\\\"operp\\\":\\\"⦹\\\",\\\"oplus\\\":\\\"⊕\\\",\\\"orarr\\\":\\\"↻\\\",\\\"Or\\\":\\\"⩔\\\",\\\"or\\\":\\\"∨\\\",\\\"ord\\\":\\\"⩝\\\",\\\"order\\\":\\\"ℴ\\\",\\\"orderof\\\":\\\"ℴ\\\",\\\"ordf\\\":\\\"ª\\\",\\\"ordm\\\":\\\"º\\\",\\\"origof\\\":\\\"⊶\\\",\\\"oror\\\":\\\"⩖\\\",\\\"orslope\\\":\\\"⩗\\\",\\\"orv\\\":\\\"⩛\\\",\\\"oS\\\":\\\"Ⓢ\\\",\\\"Oscr\\\":\\\"𝒪\\\",\\\"oscr\\\":\\\"ℴ\\\",\\\"Oslash\\\":\\\"Ø\\\",\\\"oslash\\\":\\\"ø\\\",\\\"osol\\\":\\\"⊘\\\",\\\"Otilde\\\":\\\"Õ\\\",\\\"otilde\\\":\\\"õ\\\",\\\"otimesas\\\":\\\"⨶\\\",\\\"Otimes\\\":\\\"⨷\\\",\\\"otimes\\\":\\\"⊗\\\",\\\"Ouml\\\":\\\"Ö\\\",\\\"ouml\\\":\\\"ö\\\",\\\"ovbar\\\":\\\"⌽\\\",\\\"OverBar\\\":\\\"‾\\\",\\\"OverBrace\\\":\\\"⏞\\\",\\\"OverBracket\\\":\\\"⎴\\\",\\\"OverParenthesis\\\":\\\"⏜\\\",\\\"para\\\":\\\"¶\\\",\\\"parallel\\\":\\\"∥\\\",\\\"par\\\":\\\"∥\\\",\\\"parsim\\\":\\\"⫳\\\",\\\"parsl\\\":\\\"⫽\\\",\\\"part\\\":\\\"∂\\\",\\\"PartialD\\\":\\\"∂\\\",\\\"Pcy\\\":\\\"П\\\",\\\"pcy\\\":\\\"п\\\",\\\"percnt\\\":\\\"%\\\",\\\"period\\\":\\\".\\\",\\\"permil\\\":\\\"‰\\\",\\\"perp\\\":\\\"⊥\\\",\\\"pertenk\\\":\\\"‱\\\",\\\"Pfr\\\":\\\"𝔓\\\",\\\"pfr\\\":\\\"𝔭\\\",\\\"Phi\\\":\\\"Φ\\\",\\\"phi\\\":\\\"φ\\\",\\\"phiv\\\":\\\"ϕ\\\",\\\"phmmat\\\":\\\"ℳ\\\",\\\"phone\\\":\\\"☎\\\",\\\"Pi\\\":\\\"Π\\\",\\\"pi\\\":\\\"π\\\",\\\"pitchfork\\\":\\\"⋔\\\",\\\"piv\\\":\\\"ϖ\\\",\\\"planck\\\":\\\"ℏ\\\",\\\"planckh\\\":\\\"ℎ\\\",\\\"plankv\\\":\\\"ℏ\\\",\\\"plusacir\\\":\\\"⨣\\\",\\\"plusb\\\":\\\"⊞\\\",\\\"pluscir\\\":\\\"⨢\\\",\\\"plus\\\":\\\"+\\\",\\\"plusdo\\\":\\\"∔\\\",\\\"plusdu\\\":\\\"⨥\\\",\\\"pluse\\\":\\\"⩲\\\",\\\"PlusMinus\\\":\\\"±\\\",\\\"plusmn\\\":\\\"±\\\",\\\"plussim\\\":\\\"⨦\\\",\\\"plustwo\\\":\\\"⨧\\\",\\\"pm\\\":\\\"±\\\",\\\"Poincareplane\\\":\\\"ℌ\\\",\\\"pointint\\\":\\\"⨕\\\",\\\"popf\\\":\\\"𝕡\\\",\\\"Popf\\\":\\\"ℙ\\\",\\\"pound\\\":\\\"£\\\",\\\"prap\\\":\\\"⪷\\\",\\\"Pr\\\":\\\"⪻\\\",\\\"pr\\\":\\\"≺\\\",\\\"prcue\\\":\\\"≼\\\",\\\"precapprox\\\":\\\"⪷\\\",\\\"prec\\\":\\\"≺\\\",\\\"preccurlyeq\\\":\\\"≼\\\",\\\"Precedes\\\":\\\"≺\\\",\\\"PrecedesEqual\\\":\\\"⪯\\\",\\\"PrecedesSlantEqual\\\":\\\"≼\\\",\\\"PrecedesTilde\\\":\\\"≾\\\",\\\"preceq\\\":\\\"⪯\\\",\\\"precnapprox\\\":\\\"⪹\\\",\\\"precneqq\\\":\\\"⪵\\\",\\\"precnsim\\\":\\\"⋨\\\",\\\"pre\\\":\\\"⪯\\\",\\\"prE\\\":\\\"⪳\\\",\\\"precsim\\\":\\\"≾\\\",\\\"prime\\\":\\\"′\\\",\\\"Prime\\\":\\\"″\\\",\\\"primes\\\":\\\"ℙ\\\",\\\"prnap\\\":\\\"⪹\\\",\\\"prnE\\\":\\\"⪵\\\",\\\"prnsim\\\":\\\"⋨\\\",\\\"prod\\\":\\\"∏\\\",\\\"Product\\\":\\\"∏\\\",\\\"profalar\\\":\\\"⌮\\\",\\\"profline\\\":\\\"⌒\\\",\\\"profsurf\\\":\\\"⌓\\\",\\\"prop\\\":\\\"∝\\\",\\\"Proportional\\\":\\\"∝\\\",\\\"Proportion\\\":\\\"∷\\\",\\\"propto\\\":\\\"∝\\\",\\\"prsim\\\":\\\"≾\\\",\\\"prurel\\\":\\\"⊰\\\",\\\"Pscr\\\":\\\"𝒫\\\",\\\"pscr\\\":\\\"𝓅\\\",\\\"Psi\\\":\\\"Ψ\\\",\\\"psi\\\":\\\"ψ\\\",\\\"puncsp\\\":\\\" \\\",\\\"Qfr\\\":\\\"𝔔\\\",\\\"qfr\\\":\\\"𝔮\\\",\\\"qint\\\":\\\"⨌\\\",\\\"qopf\\\":\\\"𝕢\\\",\\\"Qopf\\\":\\\"ℚ\\\",\\\"qprime\\\":\\\"⁗\\\",\\\"Qscr\\\":\\\"𝒬\\\",\\\"qscr\\\":\\\"𝓆\\\",\\\"quaternions\\\":\\\"ℍ\\\",\\\"quatint\\\":\\\"⨖\\\",\\\"quest\\\":\\\"?\\\",\\\"questeq\\\":\\\"≟\\\",\\\"quot\\\":\\\"\\\\\\\"\\\",\\\"QUOT\\\":\\\"\\\\\\\"\\\",\\\"rAarr\\\":\\\"⇛\\\",\\\"race\\\":\\\"∽̱\\\",\\\"Racute\\\":\\\"Ŕ\\\",\\\"racute\\\":\\\"ŕ\\\",\\\"radic\\\":\\\"√\\\",\\\"raemptyv\\\":\\\"⦳\\\",\\\"rang\\\":\\\"⟩\\\",\\\"Rang\\\":\\\"⟫\\\",\\\"rangd\\\":\\\"⦒\\\",\\\"range\\\":\\\"⦥\\\",\\\"rangle\\\":\\\"⟩\\\",\\\"raquo\\\":\\\"»\\\",\\\"rarrap\\\":\\\"⥵\\\",\\\"rarrb\\\":\\\"⇥\\\",\\\"rarrbfs\\\":\\\"⤠\\\",\\\"rarrc\\\":\\\"⤳\\\",\\\"rarr\\\":\\\"→\\\",\\\"Rarr\\\":\\\"↠\\\",\\\"rArr\\\":\\\"⇒\\\",\\\"rarrfs\\\":\\\"⤞\\\",\\\"rarrhk\\\":\\\"↪\\\",\\\"rarrlp\\\":\\\"↬\\\",\\\"rarrpl\\\":\\\"⥅\\\",\\\"rarrsim\\\":\\\"⥴\\\",\\\"Rarrtl\\\":\\\"⤖\\\",\\\"rarrtl\\\":\\\"↣\\\",\\\"rarrw\\\":\\\"↝\\\",\\\"ratail\\\":\\\"⤚\\\",\\\"rAtail\\\":\\\"⤜\\\",\\\"ratio\\\":\\\"∶\\\",\\\"rationals\\\":\\\"ℚ\\\",\\\"rbarr\\\":\\\"⤍\\\",\\\"rBarr\\\":\\\"⤏\\\",\\\"RBarr\\\":\\\"⤐\\\",\\\"rbbrk\\\":\\\"❳\\\",\\\"rbrace\\\":\\\"}\\\",\\\"rbrack\\\":\\\"]\\\",\\\"rbrke\\\":\\\"⦌\\\",\\\"rbrksld\\\":\\\"⦎\\\",\\\"rbrkslu\\\":\\\"⦐\\\",\\\"Rcaron\\\":\\\"Ř\\\",\\\"rcaron\\\":\\\"ř\\\",\\\"Rcedil\\\":\\\"Ŗ\\\",\\\"rcedil\\\":\\\"ŗ\\\",\\\"rceil\\\":\\\"⌉\\\",\\\"rcub\\\":\\\"}\\\",\\\"Rcy\\\":\\\"Р\\\",\\\"rcy\\\":\\\"р\\\",\\\"rdca\\\":\\\"⤷\\\",\\\"rdldhar\\\":\\\"⥩\\\",\\\"rdquo\\\":\\\"”\\\",\\\"rdquor\\\":\\\"”\\\",\\\"rdsh\\\":\\\"↳\\\",\\\"real\\\":\\\"ℜ\\\",\\\"realine\\\":\\\"ℛ\\\",\\\"realpart\\\":\\\"ℜ\\\",\\\"reals\\\":\\\"ℝ\\\",\\\"Re\\\":\\\"ℜ\\\",\\\"rect\\\":\\\"▭\\\",\\\"reg\\\":\\\"®\\\",\\\"REG\\\":\\\"®\\\",\\\"ReverseElement\\\":\\\"∋\\\",\\\"ReverseEquilibrium\\\":\\\"⇋\\\",\\\"ReverseUpEquilibrium\\\":\\\"⥯\\\",\\\"rfisht\\\":\\\"⥽\\\",\\\"rfloor\\\":\\\"⌋\\\",\\\"rfr\\\":\\\"𝔯\\\",\\\"Rfr\\\":\\\"ℜ\\\",\\\"rHar\\\":\\\"⥤\\\",\\\"rhard\\\":\\\"⇁\\\",\\\"rharu\\\":\\\"⇀\\\",\\\"rharul\\\":\\\"⥬\\\",\\\"Rho\\\":\\\"Ρ\\\",\\\"rho\\\":\\\"ρ\\\",\\\"rhov\\\":\\\"ϱ\\\",\\\"RightAngleBracket\\\":\\\"⟩\\\",\\\"RightArrowBar\\\":\\\"⇥\\\",\\\"rightarrow\\\":\\\"→\\\",\\\"RightArrow\\\":\\\"→\\\",\\\"Rightarrow\\\":\\\"⇒\\\",\\\"RightArrowLeftArrow\\\":\\\"⇄\\\",\\\"rightarrowtail\\\":\\\"↣\\\",\\\"RightCeiling\\\":\\\"⌉\\\",\\\"RightDoubleBracket\\\":\\\"⟧\\\",\\\"RightDownTeeVector\\\":\\\"⥝\\\",\\\"RightDownVectorBar\\\":\\\"⥕\\\",\\\"RightDownVector\\\":\\\"⇂\\\",\\\"RightFloor\\\":\\\"⌋\\\",\\\"rightharpoondown\\\":\\\"⇁\\\",\\\"rightharpoonup\\\":\\\"⇀\\\",\\\"rightleftarrows\\\":\\\"⇄\\\",\\\"rightleftharpoons\\\":\\\"⇌\\\",\\\"rightrightarrows\\\":\\\"⇉\\\",\\\"rightsquigarrow\\\":\\\"↝\\\",\\\"RightTeeArrow\\\":\\\"↦\\\",\\\"RightTee\\\":\\\"⊢\\\",\\\"RightTeeVector\\\":\\\"⥛\\\",\\\"rightthreetimes\\\":\\\"⋌\\\",\\\"RightTriangleBar\\\":\\\"⧐\\\",\\\"RightTriangle\\\":\\\"⊳\\\",\\\"RightTriangleEqual\\\":\\\"⊵\\\",\\\"RightUpDownVector\\\":\\\"⥏\\\",\\\"RightUpTeeVector\\\":\\\"⥜\\\",\\\"RightUpVectorBar\\\":\\\"⥔\\\",\\\"RightUpVector\\\":\\\"↾\\\",\\\"RightVectorBar\\\":\\\"⥓\\\",\\\"RightVector\\\":\\\"⇀\\\",\\\"ring\\\":\\\"˚\\\",\\\"risingdotseq\\\":\\\"≓\\\",\\\"rlarr\\\":\\\"⇄\\\",\\\"rlhar\\\":\\\"⇌\\\",\\\"rlm\\\":\\\"\\\",\\\"rmoustache\\\":\\\"⎱\\\",\\\"rmoust\\\":\\\"⎱\\\",\\\"rnmid\\\":\\\"⫮\\\",\\\"roang\\\":\\\"⟭\\\",\\\"roarr\\\":\\\"⇾\\\",\\\"robrk\\\":\\\"⟧\\\",\\\"ropar\\\":\\\"⦆\\\",\\\"ropf\\\":\\\"𝕣\\\",\\\"Ropf\\\":\\\"ℝ\\\",\\\"roplus\\\":\\\"⨮\\\",\\\"rotimes\\\":\\\"⨵\\\",\\\"RoundImplies\\\":\\\"⥰\\\",\\\"rpar\\\":\\\")\\\",\\\"rpargt\\\":\\\"⦔\\\",\\\"rppolint\\\":\\\"⨒\\\",\\\"rrarr\\\":\\\"⇉\\\",\\\"Rrightarrow\\\":\\\"⇛\\\",\\\"rsaquo\\\":\\\"›\\\",\\\"rscr\\\":\\\"𝓇\\\",\\\"Rscr\\\":\\\"ℛ\\\",\\\"rsh\\\":\\\"↱\\\",\\\"Rsh\\\":\\\"↱\\\",\\\"rsqb\\\":\\\"]\\\",\\\"rsquo\\\":\\\"’\\\",\\\"rsquor\\\":\\\"’\\\",\\\"rthree\\\":\\\"⋌\\\",\\\"rtimes\\\":\\\"⋊\\\",\\\"rtri\\\":\\\"▹\\\",\\\"rtrie\\\":\\\"⊵\\\",\\\"rtrif\\\":\\\"▸\\\",\\\"rtriltri\\\":\\\"⧎\\\",\\\"RuleDelayed\\\":\\\"⧴\\\",\\\"ruluhar\\\":\\\"⥨\\\",\\\"rx\\\":\\\"℞\\\",\\\"Sacute\\\":\\\"Ś\\\",\\\"sacute\\\":\\\"ś\\\",\\\"sbquo\\\":\\\"‚\\\",\\\"scap\\\":\\\"⪸\\\",\\\"Scaron\\\":\\\"Š\\\",\\\"scaron\\\":\\\"š\\\",\\\"Sc\\\":\\\"⪼\\\",\\\"sc\\\":\\\"≻\\\",\\\"sccue\\\":\\\"≽\\\",\\\"sce\\\":\\\"⪰\\\",\\\"scE\\\":\\\"⪴\\\",\\\"Scedil\\\":\\\"Ş\\\",\\\"scedil\\\":\\\"ş\\\",\\\"Scirc\\\":\\\"Ŝ\\\",\\\"scirc\\\":\\\"ŝ\\\",\\\"scnap\\\":\\\"⪺\\\",\\\"scnE\\\":\\\"⪶\\\",\\\"scnsim\\\":\\\"⋩\\\",\\\"scpolint\\\":\\\"⨓\\\",\\\"scsim\\\":\\\"≿\\\",\\\"Scy\\\":\\\"С\\\",\\\"scy\\\":\\\"с\\\",\\\"sdotb\\\":\\\"⊡\\\",\\\"sdot\\\":\\\"⋅\\\",\\\"sdote\\\":\\\"⩦\\\",\\\"searhk\\\":\\\"⤥\\\",\\\"searr\\\":\\\"↘\\\",\\\"seArr\\\":\\\"⇘\\\",\\\"searrow\\\":\\\"↘\\\",\\\"sect\\\":\\\"§\\\",\\\"semi\\\":\\\";\\\",\\\"seswar\\\":\\\"⤩\\\",\\\"setminus\\\":\\\"∖\\\",\\\"setmn\\\":\\\"∖\\\",\\\"sext\\\":\\\"✶\\\",\\\"Sfr\\\":\\\"𝔖\\\",\\\"sfr\\\":\\\"𝔰\\\",\\\"sfrown\\\":\\\"⌢\\\",\\\"sharp\\\":\\\"♯\\\",\\\"SHCHcy\\\":\\\"Щ\\\",\\\"shchcy\\\":\\\"щ\\\",\\\"SHcy\\\":\\\"Ш\\\",\\\"shcy\\\":\\\"ш\\\",\\\"ShortDownArrow\\\":\\\"↓\\\",\\\"ShortLeftArrow\\\":\\\"←\\\",\\\"shortmid\\\":\\\"∣\\\",\\\"shortparallel\\\":\\\"∥\\\",\\\"ShortRightArrow\\\":\\\"→\\\",\\\"ShortUpArrow\\\":\\\"↑\\\",\\\"shy\\\":\\\"\\\",\\\"Sigma\\\":\\\"Σ\\\",\\\"sigma\\\":\\\"σ\\\",\\\"sigmaf\\\":\\\"ς\\\",\\\"sigmav\\\":\\\"ς\\\",\\\"sim\\\":\\\"∼\\\",\\\"simdot\\\":\\\"⩪\\\",\\\"sime\\\":\\\"≃\\\",\\\"simeq\\\":\\\"≃\\\",\\\"simg\\\":\\\"⪞\\\",\\\"simgE\\\":\\\"⪠\\\",\\\"siml\\\":\\\"⪝\\\",\\\"simlE\\\":\\\"⪟\\\",\\\"simne\\\":\\\"≆\\\",\\\"simplus\\\":\\\"⨤\\\",\\\"simrarr\\\":\\\"⥲\\\",\\\"slarr\\\":\\\"←\\\",\\\"SmallCircle\\\":\\\"∘\\\",\\\"smallsetminus\\\":\\\"∖\\\",\\\"smashp\\\":\\\"⨳\\\",\\\"smeparsl\\\":\\\"⧤\\\",\\\"smid\\\":\\\"∣\\\",\\\"smile\\\":\\\"⌣\\\",\\\"smt\\\":\\\"⪪\\\",\\\"smte\\\":\\\"⪬\\\",\\\"smtes\\\":\\\"⪬︀\\\",\\\"SOFTcy\\\":\\\"Ь\\\",\\\"softcy\\\":\\\"ь\\\",\\\"solbar\\\":\\\"⌿\\\",\\\"solb\\\":\\\"⧄\\\",\\\"sol\\\":\\\"/\\\",\\\"Sopf\\\":\\\"𝕊\\\",\\\"sopf\\\":\\\"𝕤\\\",\\\"spades\\\":\\\"♠\\\",\\\"spadesuit\\\":\\\"♠\\\",\\\"spar\\\":\\\"∥\\\",\\\"sqcap\\\":\\\"⊓\\\",\\\"sqcaps\\\":\\\"⊓︀\\\",\\\"sqcup\\\":\\\"⊔\\\",\\\"sqcups\\\":\\\"⊔︀\\\",\\\"Sqrt\\\":\\\"√\\\",\\\"sqsub\\\":\\\"⊏\\\",\\\"sqsube\\\":\\\"⊑\\\",\\\"sqsubset\\\":\\\"⊏\\\",\\\"sqsubseteq\\\":\\\"⊑\\\",\\\"sqsup\\\":\\\"⊐\\\",\\\"sqsupe\\\":\\\"⊒\\\",\\\"sqsupset\\\":\\\"⊐\\\",\\\"sqsupseteq\\\":\\\"⊒\\\",\\\"square\\\":\\\"□\\\",\\\"Square\\\":\\\"□\\\",\\\"SquareIntersection\\\":\\\"⊓\\\",\\\"SquareSubset\\\":\\\"⊏\\\",\\\"SquareSubsetEqual\\\":\\\"⊑\\\",\\\"SquareSuperset\\\":\\\"⊐\\\",\\\"SquareSupersetEqual\\\":\\\"⊒\\\",\\\"SquareUnion\\\":\\\"⊔\\\",\\\"squarf\\\":\\\"▪\\\",\\\"squ\\\":\\\"□\\\",\\\"squf\\\":\\\"▪\\\",\\\"srarr\\\":\\\"→\\\",\\\"Sscr\\\":\\\"𝒮\\\",\\\"sscr\\\":\\\"𝓈\\\",\\\"ssetmn\\\":\\\"∖\\\",\\\"ssmile\\\":\\\"⌣\\\",\\\"sstarf\\\":\\\"⋆\\\",\\\"Star\\\":\\\"⋆\\\",\\\"star\\\":\\\"☆\\\",\\\"starf\\\":\\\"★\\\",\\\"straightepsilon\\\":\\\"ϵ\\\",\\\"straightphi\\\":\\\"ϕ\\\",\\\"strns\\\":\\\"¯\\\",\\\"sub\\\":\\\"⊂\\\",\\\"Sub\\\":\\\"⋐\\\",\\\"subdot\\\":\\\"⪽\\\",\\\"subE\\\":\\\"⫅\\\",\\\"sube\\\":\\\"⊆\\\",\\\"subedot\\\":\\\"⫃\\\",\\\"submult\\\":\\\"⫁\\\",\\\"subnE\\\":\\\"⫋\\\",\\\"subne\\\":\\\"⊊\\\",\\\"subplus\\\":\\\"⪿\\\",\\\"subrarr\\\":\\\"⥹\\\",\\\"subset\\\":\\\"⊂\\\",\\\"Subset\\\":\\\"⋐\\\",\\\"subseteq\\\":\\\"⊆\\\",\\\"subseteqq\\\":\\\"⫅\\\",\\\"SubsetEqual\\\":\\\"⊆\\\",\\\"subsetneq\\\":\\\"⊊\\\",\\\"subsetneqq\\\":\\\"⫋\\\",\\\"subsim\\\":\\\"⫇\\\",\\\"subsub\\\":\\\"⫕\\\",\\\"subsup\\\":\\\"⫓\\\",\\\"succapprox\\\":\\\"⪸\\\",\\\"succ\\\":\\\"≻\\\",\\\"succcurlyeq\\\":\\\"≽\\\",\\\"Succeeds\\\":\\\"≻\\\",\\\"SucceedsEqual\\\":\\\"⪰\\\",\\\"SucceedsSlantEqual\\\":\\\"≽\\\",\\\"SucceedsTilde\\\":\\\"≿\\\",\\\"succeq\\\":\\\"⪰\\\",\\\"succnapprox\\\":\\\"⪺\\\",\\\"succneqq\\\":\\\"⪶\\\",\\\"succnsim\\\":\\\"⋩\\\",\\\"succsim\\\":\\\"≿\\\",\\\"SuchThat\\\":\\\"∋\\\",\\\"sum\\\":\\\"∑\\\",\\\"Sum\\\":\\\"∑\\\",\\\"sung\\\":\\\"♪\\\",\\\"sup1\\\":\\\"¹\\\",\\\"sup2\\\":\\\"²\\\",\\\"sup3\\\":\\\"³\\\",\\\"sup\\\":\\\"⊃\\\",\\\"Sup\\\":\\\"⋑\\\",\\\"supdot\\\":\\\"⪾\\\",\\\"supdsub\\\":\\\"⫘\\\",\\\"supE\\\":\\\"⫆\\\",\\\"supe\\\":\\\"⊇\\\",\\\"supedot\\\":\\\"⫄\\\",\\\"Superset\\\":\\\"⊃\\\",\\\"SupersetEqual\\\":\\\"⊇\\\",\\\"suphsol\\\":\\\"⟉\\\",\\\"suphsub\\\":\\\"⫗\\\",\\\"suplarr\\\":\\\"⥻\\\",\\\"supmult\\\":\\\"⫂\\\",\\\"supnE\\\":\\\"⫌\\\",\\\"supne\\\":\\\"⊋\\\",\\\"supplus\\\":\\\"⫀\\\",\\\"supset\\\":\\\"⊃\\\",\\\"Supset\\\":\\\"⋑\\\",\\\"supseteq\\\":\\\"⊇\\\",\\\"supseteqq\\\":\\\"⫆\\\",\\\"supsetneq\\\":\\\"⊋\\\",\\\"supsetneqq\\\":\\\"⫌\\\",\\\"supsim\\\":\\\"⫈\\\",\\\"supsub\\\":\\\"⫔\\\",\\\"supsup\\\":\\\"⫖\\\",\\\"swarhk\\\":\\\"⤦\\\",\\\"swarr\\\":\\\"↙\\\",\\\"swArr\\\":\\\"⇙\\\",\\\"swarrow\\\":\\\"↙\\\",\\\"swnwar\\\":\\\"⤪\\\",\\\"szlig\\\":\\\"ß\\\",\\\"Tab\\\":\\\"\\\\t\\\",\\\"target\\\":\\\"⌖\\\",\\\"Tau\\\":\\\"Τ\\\",\\\"tau\\\":\\\"τ\\\",\\\"tbrk\\\":\\\"⎴\\\",\\\"Tcaron\\\":\\\"Ť\\\",\\\"tcaron\\\":\\\"ť\\\",\\\"Tcedil\\\":\\\"Ţ\\\",\\\"tcedil\\\":\\\"ţ\\\",\\\"Tcy\\\":\\\"Т\\\",\\\"tcy\\\":\\\"т\\\",\\\"tdot\\\":\\\"⃛\\\",\\\"telrec\\\":\\\"⌕\\\",\\\"Tfr\\\":\\\"𝔗\\\",\\\"tfr\\\":\\\"𝔱\\\",\\\"there4\\\":\\\"∴\\\",\\\"therefore\\\":\\\"∴\\\",\\\"Therefore\\\":\\\"∴\\\",\\\"Theta\\\":\\\"Θ\\\",\\\"theta\\\":\\\"θ\\\",\\\"thetasym\\\":\\\"ϑ\\\",\\\"thetav\\\":\\\"ϑ\\\",\\\"thickapprox\\\":\\\"≈\\\",\\\"thicksim\\\":\\\"∼\\\",\\\"ThickSpace\\\":\\\" \\\",\\\"ThinSpace\\\":\\\" \\\",\\\"thinsp\\\":\\\" \\\",\\\"thkap\\\":\\\"≈\\\",\\\"thksim\\\":\\\"∼\\\",\\\"THORN\\\":\\\"Þ\\\",\\\"thorn\\\":\\\"þ\\\",\\\"tilde\\\":\\\"˜\\\",\\\"Tilde\\\":\\\"∼\\\",\\\"TildeEqual\\\":\\\"≃\\\",\\\"TildeFullEqual\\\":\\\"≅\\\",\\\"TildeTilde\\\":\\\"≈\\\",\\\"timesbar\\\":\\\"⨱\\\",\\\"timesb\\\":\\\"⊠\\\",\\\"times\\\":\\\"×\\\",\\\"timesd\\\":\\\"⨰\\\",\\\"tint\\\":\\\"∭\\\",\\\"toea\\\":\\\"⤨\\\",\\\"topbot\\\":\\\"⌶\\\",\\\"topcir\\\":\\\"⫱\\\",\\\"top\\\":\\\"⊤\\\",\\\"Topf\\\":\\\"𝕋\\\",\\\"topf\\\":\\\"𝕥\\\",\\\"topfork\\\":\\\"⫚\\\",\\\"tosa\\\":\\\"⤩\\\",\\\"tprime\\\":\\\"‴\\\",\\\"trade\\\":\\\"™\\\",\\\"TRADE\\\":\\\"™\\\",\\\"triangle\\\":\\\"▵\\\",\\\"triangledown\\\":\\\"▿\\\",\\\"triangleleft\\\":\\\"◃\\\",\\\"trianglelefteq\\\":\\\"⊴\\\",\\\"triangleq\\\":\\\"≜\\\",\\\"triangleright\\\":\\\"▹\\\",\\\"trianglerighteq\\\":\\\"⊵\\\",\\\"tridot\\\":\\\"◬\\\",\\\"trie\\\":\\\"≜\\\",\\\"triminus\\\":\\\"⨺\\\",\\\"TripleDot\\\":\\\"⃛\\\",\\\"triplus\\\":\\\"⨹\\\",\\\"trisb\\\":\\\"⧍\\\",\\\"tritime\\\":\\\"⨻\\\",\\\"trpezium\\\":\\\"⏢\\\",\\\"Tscr\\\":\\\"𝒯\\\",\\\"tscr\\\":\\\"𝓉\\\",\\\"TScy\\\":\\\"Ц\\\",\\\"tscy\\\":\\\"ц\\\",\\\"TSHcy\\\":\\\"Ћ\\\",\\\"tshcy\\\":\\\"ћ\\\",\\\"Tstrok\\\":\\\"Ŧ\\\",\\\"tstrok\\\":\\\"ŧ\\\",\\\"twixt\\\":\\\"≬\\\",\\\"twoheadleftarrow\\\":\\\"↞\\\",\\\"twoheadrightarrow\\\":\\\"↠\\\",\\\"Uacute\\\":\\\"Ú\\\",\\\"uacute\\\":\\\"ú\\\",\\\"uarr\\\":\\\"↑\\\",\\\"Uarr\\\":\\\"↟\\\",\\\"uArr\\\":\\\"⇑\\\",\\\"Uarrocir\\\":\\\"⥉\\\",\\\"Ubrcy\\\":\\\"Ў\\\",\\\"ubrcy\\\":\\\"ў\\\",\\\"Ubreve\\\":\\\"Ŭ\\\",\\\"ubreve\\\":\\\"ŭ\\\",\\\"Ucirc\\\":\\\"Û\\\",\\\"ucirc\\\":\\\"û\\\",\\\"Ucy\\\":\\\"У\\\",\\\"ucy\\\":\\\"у\\\",\\\"udarr\\\":\\\"⇅\\\",\\\"Udblac\\\":\\\"Ű\\\",\\\"udblac\\\":\\\"ű\\\",\\\"udhar\\\":\\\"⥮\\\",\\\"ufisht\\\":\\\"⥾\\\",\\\"Ufr\\\":\\\"𝔘\\\",\\\"ufr\\\":\\\"𝔲\\\",\\\"Ugrave\\\":\\\"Ù\\\",\\\"ugrave\\\":\\\"ù\\\",\\\"uHar\\\":\\\"⥣\\\",\\\"uharl\\\":\\\"↿\\\",\\\"uharr\\\":\\\"↾\\\",\\\"uhblk\\\":\\\"▀\\\",\\\"ulcorn\\\":\\\"⌜\\\",\\\"ulcorner\\\":\\\"⌜\\\",\\\"ulcrop\\\":\\\"⌏\\\",\\\"ultri\\\":\\\"◸\\\",\\\"Umacr\\\":\\\"Ū\\\",\\\"umacr\\\":\\\"ū\\\",\\\"uml\\\":\\\"¨\\\",\\\"UnderBar\\\":\\\"_\\\",\\\"UnderBrace\\\":\\\"⏟\\\",\\\"UnderBracket\\\":\\\"⎵\\\",\\\"UnderParenthesis\\\":\\\"⏝\\\",\\\"Union\\\":\\\"⋃\\\",\\\"UnionPlus\\\":\\\"⊎\\\",\\\"Uogon\\\":\\\"Ų\\\",\\\"uogon\\\":\\\"ų\\\",\\\"Uopf\\\":\\\"𝕌\\\",\\\"uopf\\\":\\\"𝕦\\\",\\\"UpArrowBar\\\":\\\"⤒\\\",\\\"uparrow\\\":\\\"↑\\\",\\\"UpArrow\\\":\\\"↑\\\",\\\"Uparrow\\\":\\\"⇑\\\",\\\"UpArrowDownArrow\\\":\\\"⇅\\\",\\\"updownarrow\\\":\\\"↕\\\",\\\"UpDownArrow\\\":\\\"↕\\\",\\\"Updownarrow\\\":\\\"⇕\\\",\\\"UpEquilibrium\\\":\\\"⥮\\\",\\\"upharpoonleft\\\":\\\"↿\\\",\\\"upharpoonright\\\":\\\"↾\\\",\\\"uplus\\\":\\\"⊎\\\",\\\"UpperLeftArrow\\\":\\\"↖\\\",\\\"UpperRightArrow\\\":\\\"↗\\\",\\\"upsi\\\":\\\"υ\\\",\\\"Upsi\\\":\\\"ϒ\\\",\\\"upsih\\\":\\\"ϒ\\\",\\\"Upsilon\\\":\\\"Υ\\\",\\\"upsilon\\\":\\\"υ\\\",\\\"UpTeeArrow\\\":\\\"↥\\\",\\\"UpTee\\\":\\\"⊥\\\",\\\"upuparrows\\\":\\\"⇈\\\",\\\"urcorn\\\":\\\"⌝\\\",\\\"urcorner\\\":\\\"⌝\\\",\\\"urcrop\\\":\\\"⌎\\\",\\\"Uring\\\":\\\"Ů\\\",\\\"uring\\\":\\\"ů\\\",\\\"urtri\\\":\\\"◹\\\",\\\"Uscr\\\":\\\"𝒰\\\",\\\"uscr\\\":\\\"𝓊\\\",\\\"utdot\\\":\\\"⋰\\\",\\\"Utilde\\\":\\\"Ũ\\\",\\\"utilde\\\":\\\"ũ\\\",\\\"utri\\\":\\\"▵\\\",\\\"utrif\\\":\\\"▴\\\",\\\"uuarr\\\":\\\"⇈\\\",\\\"Uuml\\\":\\\"Ü\\\",\\\"uuml\\\":\\\"ü\\\",\\\"uwangle\\\":\\\"⦧\\\",\\\"vangrt\\\":\\\"⦜\\\",\\\"varepsilon\\\":\\\"ϵ\\\",\\\"varkappa\\\":\\\"ϰ\\\",\\\"varnothing\\\":\\\"∅\\\",\\\"varphi\\\":\\\"ϕ\\\",\\\"varpi\\\":\\\"ϖ\\\",\\\"varpropto\\\":\\\"∝\\\",\\\"varr\\\":\\\"↕\\\",\\\"vArr\\\":\\\"⇕\\\",\\\"varrho\\\":\\\"ϱ\\\",\\\"varsigma\\\":\\\"ς\\\",\\\"varsubsetneq\\\":\\\"⊊︀\\\",\\\"varsubsetneqq\\\":\\\"⫋︀\\\",\\\"varsupsetneq\\\":\\\"⊋︀\\\",\\\"varsupsetneqq\\\":\\\"⫌︀\\\",\\\"vartheta\\\":\\\"ϑ\\\",\\\"vartriangleleft\\\":\\\"⊲\\\",\\\"vartriangleright\\\":\\\"⊳\\\",\\\"vBar\\\":\\\"⫨\\\",\\\"Vbar\\\":\\\"⫫\\\",\\\"vBarv\\\":\\\"⫩\\\",\\\"Vcy\\\":\\\"В\\\",\\\"vcy\\\":\\\"в\\\",\\\"vdash\\\":\\\"⊢\\\",\\\"vDash\\\":\\\"⊨\\\",\\\"Vdash\\\":\\\"⊩\\\",\\\"VDash\\\":\\\"⊫\\\",\\\"Vdashl\\\":\\\"⫦\\\",\\\"veebar\\\":\\\"⊻\\\",\\\"vee\\\":\\\"∨\\\",\\\"Vee\\\":\\\"⋁\\\",\\\"veeeq\\\":\\\"≚\\\",\\\"vellip\\\":\\\"⋮\\\",\\\"verbar\\\":\\\"|\\\",\\\"Verbar\\\":\\\"‖\\\",\\\"vert\\\":\\\"|\\\",\\\"Vert\\\":\\\"‖\\\",\\\"VerticalBar\\\":\\\"∣\\\",\\\"VerticalLine\\\":\\\"|\\\",\\\"VerticalSeparator\\\":\\\"❘\\\",\\\"VerticalTilde\\\":\\\"≀\\\",\\\"VeryThinSpace\\\":\\\" \\\",\\\"Vfr\\\":\\\"𝔙\\\",\\\"vfr\\\":\\\"𝔳\\\",\\\"vltri\\\":\\\"⊲\\\",\\\"vnsub\\\":\\\"⊂⃒\\\",\\\"vnsup\\\":\\\"⊃⃒\\\",\\\"Vopf\\\":\\\"𝕍\\\",\\\"vopf\\\":\\\"𝕧\\\",\\\"vprop\\\":\\\"∝\\\",\\\"vrtri\\\":\\\"⊳\\\",\\\"Vscr\\\":\\\"𝒱\\\",\\\"vscr\\\":\\\"𝓋\\\",\\\"vsubnE\\\":\\\"⫋︀\\\",\\\"vsubne\\\":\\\"⊊︀\\\",\\\"vsupnE\\\":\\\"⫌︀\\\",\\\"vsupne\\\":\\\"⊋︀\\\",\\\"Vvdash\\\":\\\"⊪\\\",\\\"vzigzag\\\":\\\"⦚\\\",\\\"Wcirc\\\":\\\"Ŵ\\\",\\\"wcirc\\\":\\\"ŵ\\\",\\\"wedbar\\\":\\\"⩟\\\",\\\"wedge\\\":\\\"∧\\\",\\\"Wedge\\\":\\\"⋀\\\",\\\"wedgeq\\\":\\\"≙\\\",\\\"weierp\\\":\\\"℘\\\",\\\"Wfr\\\":\\\"𝔚\\\",\\\"wfr\\\":\\\"𝔴\\\",\\\"Wopf\\\":\\\"𝕎\\\",\\\"wopf\\\":\\\"𝕨\\\",\\\"wp\\\":\\\"℘\\\",\\\"wr\\\":\\\"≀\\\",\\\"wreath\\\":\\\"≀\\\",\\\"Wscr\\\":\\\"𝒲\\\",\\\"wscr\\\":\\\"𝓌\\\",\\\"xcap\\\":\\\"⋂\\\",\\\"xcirc\\\":\\\"◯\\\",\\\"xcup\\\":\\\"⋃\\\",\\\"xdtri\\\":\\\"▽\\\",\\\"Xfr\\\":\\\"𝔛\\\",\\\"xfr\\\":\\\"𝔵\\\",\\\"xharr\\\":\\\"⟷\\\",\\\"xhArr\\\":\\\"⟺\\\",\\\"Xi\\\":\\\"Ξ\\\",\\\"xi\\\":\\\"ξ\\\",\\\"xlarr\\\":\\\"⟵\\\",\\\"xlArr\\\":\\\"⟸\\\",\\\"xmap\\\":\\\"⟼\\\",\\\"xnis\\\":\\\"⋻\\\",\\\"xodot\\\":\\\"⨀\\\",\\\"Xopf\\\":\\\"𝕏\\\",\\\"xopf\\\":\\\"𝕩\\\",\\\"xoplus\\\":\\\"⨁\\\",\\\"xotime\\\":\\\"⨂\\\",\\\"xrarr\\\":\\\"⟶\\\",\\\"xrArr\\\":\\\"⟹\\\",\\\"Xscr\\\":\\\"𝒳\\\",\\\"xscr\\\":\\\"𝓍\\\",\\\"xsqcup\\\":\\\"⨆\\\",\\\"xuplus\\\":\\\"⨄\\\",\\\"xutri\\\":\\\"△\\\",\\\"xvee\\\":\\\"⋁\\\",\\\"xwedge\\\":\\\"⋀\\\",\\\"Yacute\\\":\\\"Ý\\\",\\\"yacute\\\":\\\"ý\\\",\\\"YAcy\\\":\\\"Я\\\",\\\"yacy\\\":\\\"я\\\",\\\"Ycirc\\\":\\\"Ŷ\\\",\\\"ycirc\\\":\\\"ŷ\\\",\\\"Ycy\\\":\\\"Ы\\\",\\\"ycy\\\":\\\"ы\\\",\\\"yen\\\":\\\"¥\\\",\\\"Yfr\\\":\\\"𝔜\\\",\\\"yfr\\\":\\\"𝔶\\\",\\\"YIcy\\\":\\\"Ї\\\",\\\"yicy\\\":\\\"ї\\\",\\\"Yopf\\\":\\\"𝕐\\\",\\\"yopf\\\":\\\"𝕪\\\",\\\"Yscr\\\":\\\"𝒴\\\",\\\"yscr\\\":\\\"𝓎\\\",\\\"YUcy\\\":\\\"Ю\\\",\\\"yucy\\\":\\\"ю\\\",\\\"yuml\\\":\\\"ÿ\\\",\\\"Yuml\\\":\\\"Ÿ\\\",\\\"Zacute\\\":\\\"Ź\\\",\\\"zacute\\\":\\\"ź\\\",\\\"Zcaron\\\":\\\"Ž\\\",\\\"zcaron\\\":\\\"ž\\\",\\\"Zcy\\\":\\\"З\\\",\\\"zcy\\\":\\\"з\\\",\\\"Zdot\\\":\\\"Ż\\\",\\\"zdot\\\":\\\"ż\\\",\\\"zeetrf\\\":\\\"ℨ\\\",\\\"ZeroWidthSpace\\\":\\\"\\\",\\\"Zeta\\\":\\\"Ζ\\\",\\\"zeta\\\":\\\"ζ\\\",\\\"zfr\\\":\\\"𝔷\\\",\\\"Zfr\\\":\\\"ℨ\\\",\\\"ZHcy\\\":\\\"Ж\\\",\\\"zhcy\\\":\\\"ж\\\",\\\"zigrarr\\\":\\\"⇝\\\",\\\"zopf\\\":\\\"𝕫\\\",\\\"Zopf\\\":\\\"ℤ\\\",\\\"Zscr\\\":\\\"𝒵\\\",\\\"zscr\\\":\\\"𝓏\\\",\\\"zwj\\\":\\\"\\\",\\\"zwnj\\\":\\\"\\\"}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9tYXBzL2VudGl0aWVzLmpzb24uanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/entities/lib/maps/entities.json\n");
|
170 |
|
171 | }),
|
172 |
|
173 | "../../../node_modules/graphql-ws/umd/graphql-ws.js":
|
174 |
|
175 |
|
176 |
|
177 |
|
178 | (function(module, exports, __webpack_require__) {
|
179 |
|
180 | eval("/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n (function (global, factory) {\n true ? factory(exports) : undefined;\n })(void 0, function (exports) {\n 'use strict'; // Extremely small optimisation, reduces runtime prototype traversal\n\n const baseHasOwnProperty = Object.prototype.hasOwnProperty;\n /** @private */\n\n function isObject(val) {\n return typeof val === 'object' && val !== null;\n }\n /** @private */\n\n\n function areGraphQLErrors(obj) {\n return Array.isArray(obj) && // must be at least one error\n obj.length > 0 && // error has at least a message\n obj.every(ob => 'message' in ob);\n }\n /** @private */\n\n\n function hasOwnProperty(obj, prop) {\n return baseHasOwnProperty.call(obj, prop);\n }\n /** @private */\n\n\n function hasOwnObjectProperty(obj, prop) {\n return baseHasOwnProperty.call(obj, prop) && isObject(obj[prop]);\n }\n /** @private */\n\n\n function hasOwnStringProperty(obj, prop) {\n return baseHasOwnProperty.call(obj, prop) && typeof obj[prop] === 'string';\n }\n /**\n * Limits the WebSocket close event reason to not exceed a length of one frame.\n * Reference: https://datatracker.ietf.org/doc/html/rfc6455#section-5.2.\n *\n * @private\n */\n\n\n function limitCloseReason(reason, whenTooLong) {\n return reason.length < 124 ? reason : whenTooLong;\n }\n /**\n *\n * common\n *\n */\n\n /**\n * The WebSocket sub-protocol used for the [GraphQL over WebSocket Protocol](/PROTOCOL.md).\n *\n * @category Common\n */\n\n\n const GRAPHQL_TRANSPORT_WS_PROTOCOL = 'graphql-transport-ws';\n /**\n * `graphql-ws` expected and standard close codes of the [GraphQL over WebSocket Protocol](/PROTOCOL.md).\n *\n * @category Common\n */\n\n exports.CloseCode = void 0;\n\n (function (CloseCode) {\n CloseCode[CloseCode[\"InternalServerError\"] = 4500] = \"InternalServerError\";\n CloseCode[CloseCode[\"InternalClientError\"] = 4005] = \"InternalClientError\";\n CloseCode[CloseCode[\"BadRequest\"] = 4400] = \"BadRequest\";\n CloseCode[CloseCode[\"BadResponse\"] = 4004] = \"BadResponse\";\n /** Tried subscribing before connect ack */\n\n CloseCode[CloseCode[\"Unauthorized\"] = 4401] = \"Unauthorized\";\n CloseCode[CloseCode[\"Forbidden\"] = 4403] = \"Forbidden\";\n CloseCode[CloseCode[\"SubprotocolNotAcceptable\"] = 4406] = \"SubprotocolNotAcceptable\";\n CloseCode[CloseCode[\"ConnectionInitialisationTimeout\"] = 4408] = \"ConnectionInitialisationTimeout\";\n CloseCode[CloseCode[\"ConnectionAcknowledgementTimeout\"] = 4504] = \"ConnectionAcknowledgementTimeout\";\n /** Subscriber distinction is very important */\n\n CloseCode[CloseCode[\"SubscriberAlreadyExists\"] = 4409] = \"SubscriberAlreadyExists\";\n CloseCode[CloseCode[\"TooManyInitialisationRequests\"] = 4429] = \"TooManyInitialisationRequests\";\n })(exports.CloseCode || (exports.CloseCode = {}));\n /**\n * Types of messages allowed to be sent by the client/server over the WS protocol.\n *\n * @category Common\n */\n\n\n exports.MessageType = void 0;\n\n (function (MessageType) {\n MessageType[\"ConnectionInit\"] = \"connection_init\";\n MessageType[\"ConnectionAck\"] = \"connection_ack\";\n MessageType[\"Ping\"] = \"ping\";\n MessageType[\"Pong\"] = \"pong\";\n MessageType[\"Subscribe\"] = \"subscribe\";\n MessageType[\"Next\"] = \"next\";\n MessageType[\"Error\"] = \"error\";\n MessageType[\"Complete\"] = \"complete\";\n })(exports.MessageType || (exports.MessageType = {}));\n /**\n * Checks if the provided value is a message.\n *\n * @category Common\n */\n\n\n function isMessage(val) {\n if (isObject(val)) {\n // all messages must have the `type` prop\n if (!hasOwnStringProperty(val, 'type')) {\n return false;\n } // validate other properties depending on the `type`\n\n\n switch (val.type) {\n case exports.MessageType.ConnectionInit:\n // the connection init message can have optional payload object\n return !hasOwnProperty(val, 'payload') || val.payload === undefined || isObject(val.payload);\n\n case exports.MessageType.ConnectionAck:\n case exports.MessageType.Ping:\n case exports.MessageType.Pong:\n // the connection ack, ping and pong messages can have optional payload object too\n return !hasOwnProperty(val, 'payload') || val.payload === undefined || isObject(val.payload);\n\n case exports.MessageType.Subscribe:\n return hasOwnStringProperty(val, 'id') && hasOwnObjectProperty(val, 'payload') && (!hasOwnProperty(val.payload, 'operationName') || val.payload.operationName === undefined || val.payload.operationName === null || typeof val.payload.operationName === 'string') && hasOwnStringProperty(val.payload, 'query') && (!hasOwnProperty(val.payload, 'variables') || val.payload.variables === undefined || val.payload.variables === null || hasOwnObjectProperty(val.payload, 'variables')) && (!hasOwnProperty(val.payload, 'extensions') || val.payload.extensions === undefined || val.payload.extensions === null || hasOwnObjectProperty(val.payload, 'extensions'));\n\n case exports.MessageType.Next:\n return hasOwnStringProperty(val, 'id') && hasOwnObjectProperty(val, 'payload');\n\n case exports.MessageType.Error:\n return hasOwnStringProperty(val, 'id') && areGraphQLErrors(val.payload);\n\n case exports.MessageType.Complete:\n return hasOwnStringProperty(val, 'id');\n\n default:\n return false;\n }\n }\n\n return false;\n }\n /**\n * Parses the raw websocket message data to a valid message.\n *\n * @category Common\n */\n\n\n function parseMessage(data, reviver) {\n if (isMessage(data)) {\n return data;\n }\n\n if (typeof data !== 'string') {\n throw new Error('Message not parsable');\n }\n\n const message = JSON.parse(data, reviver);\n\n if (!isMessage(message)) {\n throw new Error('Invalid message');\n }\n\n return message;\n }\n /**\n * Stringifies a valid message ready to be sent through the socket.\n *\n * @category Common\n */\n\n\n function stringifyMessage(msg, replacer) {\n if (!isMessage(msg)) {\n throw new Error('Cannot stringify invalid message');\n }\n\n return JSON.stringify(msg, replacer);\n }\n /**\n *\n * client\n *\n */\n\n /**\n * Creates a disposable GraphQL over WebSocket client.\n *\n * @category Client\n */\n\n\n function createClient(options) {\n const {\n url,\n connectionParams,\n lazy = true,\n onNonLazyError = console.error,\n lazyCloseTimeout = 0,\n keepAlive = 0,\n disablePong,\n connectionAckWaitTimeout = 0,\n retryAttempts = 5,\n retryWait = async function randomisedExponentialBackoff(retries) {\n let retryDelay = 1000; // start with 1s delay\n\n for (let i = 0; i < retries; i++) {\n retryDelay *= 2;\n }\n\n await new Promise(resolve => setTimeout(resolve, retryDelay + // add random timeout from 300ms to 3s\n Math.floor(Math.random() * (3000 - 300) + 300)));\n },\n isFatalConnectionProblem = errOrCloseEvent => // non `CloseEvent`s are fatal by default\n !isLikeCloseEvent(errOrCloseEvent),\n on,\n webSocketImpl,\n\n /**\n * Generates a v4 UUID to be used as the ID using `Math`\n * as the random number generator. Supply your own generator\n * in case you need more uniqueness.\n *\n * Reference: https://gist.github.com/jed/982883\n */\n generateID = function generateUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = Math.random() * 16 | 0,\n v = c == 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n },\n jsonMessageReplacer: replacer,\n jsonMessageReviver: reviver\n } = options;\n let ws;\n\n if (webSocketImpl) {\n if (!isWebSocket(webSocketImpl)) {\n throw new Error('Invalid WebSocket implementation provided');\n }\n\n ws = webSocketImpl;\n } else if (typeof WebSocket !== 'undefined') {\n ws = WebSocket;\n } else if (typeof global !== 'undefined') {\n ws = global.WebSocket || // @ts-expect-error: Support more browsers\n global.MozWebSocket;\n } else if (typeof window !== 'undefined') {\n ws = window.WebSocket || // @ts-expect-error: Support more browsers\n window.MozWebSocket;\n }\n\n if (!ws) throw new Error('WebSocket implementation missing');\n const WebSocketImpl = ws; // websocket status emitter, subscriptions are handled differently\n\n const emitter = (() => {\n const message = (() => {\n const listeners = {};\n return {\n on(id, listener) {\n listeners[id] = listener;\n return () => {\n delete listeners[id];\n };\n },\n\n emit(message) {\n var _a;\n\n if ('id' in message) (_a = listeners[message.id]) === null || _a === void 0 ? void 0 : _a.call(listeners, message);\n }\n\n };\n })();\n\n const listeners = {\n connecting: (on === null || on === void 0 ? void 0 : on.connecting) ? [on.connecting] : [],\n opened: (on === null || on === void 0 ? void 0 : on.opened) ? [on.opened] : [],\n connected: (on === null || on === void 0 ? void 0 : on.connected) ? [on.connected] : [],\n ping: (on === null || on === void 0 ? void 0 : on.ping) ? [on.ping] : [],\n pong: (on === null || on === void 0 ? void 0 : on.pong) ? [on.pong] : [],\n message: (on === null || on === void 0 ? void 0 : on.message) ? [message.emit, on.message] : [message.emit],\n closed: (on === null || on === void 0 ? void 0 : on.closed) ? [on.closed] : [],\n error: (on === null || on === void 0 ? void 0 : on.error) ? [on.error] : []\n };\n return {\n onMessage: message.on,\n\n on(event, listener) {\n const l = listeners[event];\n l.push(listener);\n return () => {\n l.splice(l.indexOf(listener), 1);\n };\n },\n\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // we copy the listeners so that unlistens dont \"pull the rug under our feet\"\n for (const listener of [...listeners[event]]) {\n // @ts-expect-error: The args should fit\n listener(...args);\n }\n }\n\n };\n })(); // invokes the callback either when an error or closed event is emitted,\n // first one that gets called prevails, other emissions are ignored\n\n\n function errorOrClosed(cb) {\n const listening = [// errors are fatal and more critical than close events, throw them first\n emitter.on('error', err => {\n listening.forEach(unlisten => unlisten());\n cb(err);\n }), // closes can be graceful and not fatal, throw them second (if error didnt throw)\n emitter.on('closed', event => {\n listening.forEach(unlisten => unlisten());\n cb(event);\n })];\n }\n\n let connecting,\n locks = 0,\n retrying = false,\n retries = 0,\n disposed = false;\n\n async function connect() {\n const [socket, throwOnClose] = await (connecting !== null && connecting !== void 0 ? connecting : connecting = new Promise((connected, denied) => (async () => {\n if (retrying) {\n await retryWait(retries); // subscriptions might complete while waiting for retry\n\n if (!locks) {\n connecting = undefined;\n return denied({\n code: 1000,\n reason: 'All Subscriptions Gone'\n });\n }\n\n retries++;\n }\n\n emitter.emit('connecting');\n const socket = new WebSocketImpl(typeof url === 'function' ? await url() : url, GRAPHQL_TRANSPORT_WS_PROTOCOL);\n let connectionAckTimeout, queuedPing;\n\n function enqueuePing() {\n if (isFinite(keepAlive) && keepAlive > 0) {\n clearTimeout(queuedPing); // in case where a pong was received before a ping (this is valid behaviour)\n\n queuedPing = setTimeout(() => {\n if (socket.readyState === WebSocketImpl.OPEN) {\n socket.send(stringifyMessage({\n type: exports.MessageType.Ping\n }));\n emitter.emit('ping', false, undefined);\n }\n }, keepAlive);\n }\n }\n\n errorOrClosed(errOrEvent => {\n connecting = undefined;\n clearTimeout(connectionAckTimeout);\n clearTimeout(queuedPing);\n denied(errOrEvent);\n });\n\n socket.onerror = err => emitter.emit('error', err);\n\n socket.onclose = event => emitter.emit('closed', event);\n\n socket.onopen = async () => {\n try {\n emitter.emit('opened', socket);\n const payload = typeof connectionParams === 'function' ? await connectionParams() : connectionParams;\n socket.send(stringifyMessage(payload ? {\n type: exports.MessageType.ConnectionInit,\n payload\n } : {\n type: exports.MessageType.ConnectionInit // payload is completely absent if not provided\n\n }, replacer));\n\n if (isFinite(connectionAckWaitTimeout) && connectionAckWaitTimeout > 0) {\n connectionAckTimeout = setTimeout(() => {\n socket.close(exports.CloseCode.ConnectionAcknowledgementTimeout, 'Connection acknowledgement timeout');\n }, connectionAckWaitTimeout);\n }\n\n enqueuePing(); // enqueue ping (noop if disabled)\n } catch (err) {\n emitter.emit('error', err);\n socket.close(exports.CloseCode.InternalClientError, limitCloseReason(err instanceof Error ? err.message : new Error(err).message, 'Internal client error'));\n }\n };\n\n let acknowledged = false;\n\n socket.onmessage = _ref => {\n let {\n data\n } = _ref;\n\n try {\n const message = parseMessage(data, reviver);\n emitter.emit('message', message);\n\n if (message.type === 'ping' || message.type === 'pong') {\n emitter.emit(message.type, true, message.payload); // received\n\n if (message.type === 'pong') {\n enqueuePing(); // enqueue next ping (noop if disabled)\n } else if (!disablePong) {\n // respond with pong on ping\n socket.send(stringifyMessage(message.payload ? {\n type: exports.MessageType.Pong,\n payload: message.payload\n } : {\n type: exports.MessageType.Pong // payload is completely absent if not provided\n\n }));\n emitter.emit('pong', false, message.payload);\n }\n\n return; // ping and pongs can be received whenever\n }\n\n if (acknowledged) return; // already connected and acknowledged\n\n if (message.type !== exports.MessageType.ConnectionAck) throw new Error(`First message cannot be of type ${message.type}`);\n clearTimeout(connectionAckTimeout);\n acknowledged = true;\n emitter.emit('connected', socket, message.payload); // connected = socket opened + acknowledged\n\n retrying = false; // future lazy connects are not retries\n\n retries = 0; // reset the retries on connect\n\n connected([socket, new Promise((_, reject) => errorOrClosed(reject))]);\n } catch (err) {\n socket.onmessage = null; // stop reading messages as soon as reading breaks once\n\n emitter.emit('error', err);\n socket.close(exports.CloseCode.BadResponse, limitCloseReason(err instanceof Error ? err.message : new Error(err).message, 'Bad response'));\n }\n };\n })())); // if the provided socket is in a closing state, wait for the throw on close\n\n if (socket.readyState === WebSocketImpl.CLOSING) await throwOnClose;\n\n let release = () => {// releases this connection\n };\n\n const released = new Promise(resolve => release = resolve);\n return [socket, release, Promise.race([// wait for\n released.then(() => {\n if (!locks) {\n // and if no more locks are present, complete the connection\n const complete = () => socket.close(1000, 'Normal Closure');\n\n if (isFinite(lazyCloseTimeout) && lazyCloseTimeout > 0) {\n // if the keepalive is set, allow for the specified calmdown time and\n // then complete. but only if no lock got created in the meantime and\n // if the socket is still open\n setTimeout(() => {\n if (!locks && socket.readyState === WebSocketImpl.OPEN) complete();\n }, lazyCloseTimeout);\n } else {\n // otherwise complete immediately\n complete();\n }\n }\n }), // or\n throwOnClose])];\n }\n /**\n * Checks the `connect` problem and evaluates if the client should retry.\n */\n\n\n function shouldRetryConnectOrThrow(errOrCloseEvent) {\n // some close codes are worth reporting immediately\n if (isLikeCloseEvent(errOrCloseEvent) && (isFatalInternalCloseCode(errOrCloseEvent.code) || [exports.CloseCode.InternalServerError, exports.CloseCode.InternalClientError, exports.CloseCode.BadRequest, exports.CloseCode.BadResponse, exports.CloseCode.Unauthorized, // CloseCode.Forbidden, might grant access out after retry\n exports.CloseCode.SubprotocolNotAcceptable, // CloseCode.ConnectionInitialisationTimeout, might not time out after retry\n // CloseCode.ConnectionAcknowledgementTimeout, might not time out after retry\n exports.CloseCode.SubscriberAlreadyExists, exports.CloseCode.TooManyInitialisationRequests].includes(errOrCloseEvent.code))) throw errOrCloseEvent; // client was disposed, no retries should proceed regardless\n\n if (disposed) return false; // normal closure (possibly all subscriptions have completed)\n // if no locks were acquired in the meantime, shouldnt try again\n\n if (isLikeCloseEvent(errOrCloseEvent) && errOrCloseEvent.code === 1000) return locks > 0; // retries are not allowed or we tried to many times, report error\n\n if (!retryAttempts || retries >= retryAttempts) throw errOrCloseEvent; // throw fatal connection problems immediately\n\n if (isFatalConnectionProblem(errOrCloseEvent)) throw errOrCloseEvent; // looks good, start retrying\n\n return retrying = true;\n } // in non-lazy (hot?) mode always hold one connection lock to persist the socket\n\n\n if (!lazy) {\n (async () => {\n locks++;\n\n for (;;) {\n try {\n const [,, throwOnClose] = await connect();\n await throwOnClose; // will always throw because releaser is not used\n } catch (errOrCloseEvent) {\n try {\n if (!shouldRetryConnectOrThrow(errOrCloseEvent)) return;\n } catch (errOrCloseEvent) {\n // report thrown error, no further retries\n return onNonLazyError === null || onNonLazyError === void 0 ? void 0 : onNonLazyError(errOrCloseEvent);\n }\n }\n }\n })();\n }\n\n return {\n on: emitter.on,\n\n subscribe(payload, sink) {\n const id = generateID();\n\n let done = false,\n errored = false,\n releaser = () => {\n // for handling completions before connect\n locks--;\n done = true;\n };\n\n (async () => {\n locks++;\n\n for (;;) {\n try {\n const [socket, release, waitForReleaseOrThrowOnClose] = await connect(); // if done while waiting for connect, release the connection lock right away\n\n if (done) return release();\n const unlisten = emitter.onMessage(id, message => {\n switch (message.type) {\n case exports.MessageType.Next:\n {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sink.next(message.payload);\n return;\n }\n\n case exports.MessageType.Error:\n {\n errored = true, done = true;\n sink.error(message.payload);\n releaser();\n return;\n }\n\n case exports.MessageType.Complete:\n {\n done = true;\n releaser(); // release completes the sink\n\n return;\n }\n }\n });\n socket.send(stringifyMessage({\n id,\n type: exports.MessageType.Subscribe,\n payload\n }, replacer));\n\n releaser = () => {\n if (!done && socket.readyState === WebSocketImpl.OPEN) // if not completed already and socket is open, send complete message to server on release\n socket.send(stringifyMessage({\n id,\n type: exports.MessageType.Complete\n }, replacer));\n locks--;\n done = true;\n release();\n }; // either the releaser will be called, connection completed and\n // the promise resolved or the socket closed and the promise rejected.\n // whatever happens though, we want to stop listening for messages\n\n\n await waitForReleaseOrThrowOnClose.finally(unlisten);\n return; // completed, shouldnt try again\n } catch (errOrCloseEvent) {\n if (!shouldRetryConnectOrThrow(errOrCloseEvent)) return;\n }\n }\n })().then(() => {\n // delivering either an error or a complete terminates the sequence\n if (!errored) sink.complete();\n }) // resolves on release or normal closure\n .catch(err => {\n sink.error(err);\n }); // rejects on close events and errors\n\n return () => {\n // dispose only of active subscriptions\n if (!done) releaser();\n };\n },\n\n async dispose() {\n disposed = true;\n\n if (connecting) {\n // if there is a connection, close it\n const [socket] = await connecting;\n socket.close(1000, 'Normal Closure');\n }\n }\n\n };\n }\n\n function isLikeCloseEvent(val) {\n return isObject(val) && 'code' in val && 'reason' in val;\n }\n\n function isFatalInternalCloseCode(code) {\n if ([1000, 1001, 1006, 1005, 1012, 1013, 1013 // Bad Gateway\n ].includes(code)) return false; // all other internal errors are fatal\n\n return code >= 1000 && code <= 1999;\n }\n\n function isWebSocket(val) {\n return typeof val === 'function' && 'constructor' in val && 'CLOSED' in val && 'CLOSING' in val && 'CONNECTING' in val && 'OPEN' in val;\n }\n\n exports.GRAPHQL_TRANSPORT_WS_PROTOCOL = GRAPHQL_TRANSPORT_WS_PROTOCOL;\n exports.createClient = createClient;\n exports.isMessage = isMessage;\n exports.parseMessage = parseMessage;\n exports.stringifyMessage = stringifyMessage;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n });\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"../../../node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwtd3MvdW1kL2dyYXBocWwtd3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC13cy91bWQvZ3JhcGhxbC13cy5qcz9jZTA4Il0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gZmFjdG9yeShleHBvcnRzKSA6XG4gICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnZXhwb3J0cyddLCBmYWN0b3J5KSA6XG4gICAgKGdsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiBnbG9iYWwgfHwgc2VsZiwgZmFjdG9yeShnbG9iYWwuZ3JhcGhxbFdzID0ge30pKTtcbn0pKHRoaXMsIChmdW5jdGlvbiAoZXhwb3J0cykgeyAndXNlIHN0cmljdCc7XG5cbiAgICAvLyBFeHRyZW1lbHkgc21hbGwgb3B0aW1pc2F0aW9uLCByZWR1Y2VzIHJ1bnRpbWUgcHJvdG90eXBlIHRyYXZlcnNhbFxuICAgIGNvbnN0IGJhc2VIYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG4gICAgLyoqIEBwcml2YXRlICovXG4gICAgZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWwgIT09IG51bGw7XG4gICAgfVxuICAgIC8qKiBAcHJpdmF0ZSAqL1xuICAgIGZ1bmN0aW9uIGFyZUdyYXBoUUxFcnJvcnMob2JqKSB7XG4gICAgICAgIHJldHVybiAoQXJyYXkuaXNBcnJheShvYmopICYmXG4gICAgICAgICAgICAvLyBtdXN0IGJlIGF0IGxlYXN0IG9uZSBlcnJvclxuICAgICAgICAgICAgb2JqLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIC8vIGVycm9yIGhhcyBhdCBsZWFzdCBhIG1lc3NhZ2VcbiAgICAgICAgICAgIG9iai5ldmVyeSgob2IpID0+ICdtZXNzYWdlJyBpbiBvYikpO1xuICAgIH1cbiAgICAvKiogQHByaXZhdGUgKi9cbiAgICBmdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGJhc2VIYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG4gICAgfVxuICAgIC8qKiBAcHJpdmF0ZSAqL1xuICAgIGZ1bmN0aW9uIGhhc093bk9iamVjdFByb3BlcnR5KG9iaiwgcHJvcCkge1xuICAgICAgICByZXR1cm4gYmFzZUhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSAmJiBpc09iamVjdChvYmpbcHJvcF0pO1xuICAgIH1cbiAgICAvKiogQHByaXZhdGUgKi9cbiAgICBmdW5jdGlvbiBoYXNPd25TdHJpbmdQcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGJhc2VIYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkgJiYgdHlwZW9mIG9ialtwcm9wXSA9PT0gJ3N0cmluZyc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIExpbWl0cyB0aGUgV2ViU29ja2V0IGNsb3NlIGV2ZW50IHJlYXNvbiB0byBub3QgZXhjZWVkIGEgbGVuZ3RoIG9mIG9uZSBmcmFtZS5cbiAgICAgKiBSZWZlcmVuY2U6IGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTUuMi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGltaXRDbG9zZVJlYXNvbihyZWFzb24sIHdoZW5Ub29Mb25nKSB7XG4gICAgICAgIHJldHVybiByZWFzb24ubGVuZ3RoIDwgMTI0ID8gcmVhc29uIDogd2hlblRvb0xvbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBjb21tb25cbiAgICAgKlxuICAgICAqL1xuICAgIC8qKlxuICAgICAqIFRoZSBXZWJTb2NrZXQgc3ViLXByb3RvY29sIHVzZWQgZm9yIHRoZSBbR3JhcGhRTCBvdmVyIFdlYlNvY2tldCBQcm90b2NvbF0oL1BST1RPQ09MLm1kKS5cbiAgICAgKlxuICAgICAqIEBjYXRlZ29yeSBDb21tb25cbiAgICAgKi9cbiAgICBjb25zdCBHUkFQSFFMX1RSQU5TUE9SVF9XU19QUk9UT0NPTCA9ICdncmFwaHFsLXRyYW5zcG9ydC13cyc7XG4gICAgLyoqXG4gICAgICogYGdyYXBocWwtd3NgIGV4cGVjdGVkIGFuZCBzdGFuZGFyZCBjbG9zZSBjb2RlcyBvZiB0aGUgW0dyYXBoUUwgb3ZlciBXZWJTb2NrZXQgUHJvdG9jb2xdKC9QUk9UT0NPTC5tZCkuXG4gICAgICpcbiAgICAgKiBAY2F0ZWdvcnkgQ29tbW9uXG4gICAgICovXG4gICAgZXhwb3J0cy5DbG9zZUNvZGUgPSB2b2lkIDA7XG4gICAgKGZ1bmN0aW9uIChDbG9zZUNvZGUpIHtcbiAgICAgICAgQ2xvc2VDb2RlW0Nsb3NlQ29kZVtcIkludGVybmFsU2VydmVyRXJyb3JcIl0gPSA0NTAwXSA9IFwiSW50ZXJuYWxTZXJ2ZXJFcnJvclwiO1xuICAgICAgICBDbG9zZUNvZGVbQ2xvc2VDb2RlW1wiSW50ZXJuYWxDbGllbnRFcnJvclwiXSA9IDQwMDVdID0gXCJJbnRlcm5hbENsaWVudEVycm9yXCI7XG4gICAgICAgIENsb3NlQ29kZVtDbG9zZUNvZGVbXCJCYWRSZXF1ZXN0XCJdID0gNDQwMF0gPSBcIkJhZFJlcXVlc3RcIjtcbiAgICAgICAgQ2xvc2VDb2RlW0Nsb3NlQ29kZVtcIkJhZFJlc3BvbnNlXCJdID0gNDAwNF0gPSBcIkJhZFJlc3BvbnNlXCI7XG4gICAgICAgIC8qKiBUcmllZCBzdWJzY3JpYmluZyBiZWZvcmUgY29ubmVjdCBhY2sgKi9cbiAgICAgICAgQ2xvc2VDb2RlW0Nsb3NlQ29kZVtcIlVuYXV0aG9yaXplZFwiXSA9IDQ0MDFdID0gXCJVbmF1dGhvcml6ZWRcIjtcbiAgICAgICAgQ2xvc2VDb2RlW0Nsb3NlQ29kZVtcIkZvcmJpZGRlblwiXSA9IDQ0MDNdID0gXCJGb3JiaWRkZW5cIjtcbiAgICAgICAgQ2xvc2VDb2RlW0Nsb3NlQ29kZVtcIlN1YnByb3RvY29sTm90QWNjZXB0YWJsZVwiXSA9IDQ0MDZdID0gXCJTdWJwcm90b2NvbE5vdEFjY2VwdGFibGVcIjtcbiAgICAgICAgQ2xvc2VDb2RlW0Nsb3NlQ29kZVtcIkNvbm5lY3Rpb25Jbml0aWFsaXNhdGlvblRpbWVvdXRcIl0gPSA0NDA4XSA9IFwiQ29ubmVjdGlvbkluaXRpYWxpc2F0aW9uVGltZW91dFwiO1xuICAgICAgICBDbG9zZUNvZGVbQ2xvc2VDb2RlW1wiQ29ubmVjdGlvbkFja25vd2xlZGdlbWVudFRpbWVvdXRcIl0gPSA0NTA0XSA9IFwiQ29ubmVjdGlvbkFja25vd2xlZGdlbWVudFRpbWVvdXRcIjtcbiAgICAgICAgLyoqIFN1YnNjcmliZXIgZGlzdGluY3Rpb24gaXMgdmVyeSBpbXBvcnRhbnQgKi9cbiAgICAgICAgQ2xvc2VDb2RlW0Nsb3NlQ29kZVtcIlN1YnNjcmliZXJBbHJlYWR5RXhpc3RzXCJdID0gNDQwOV0gPSBcIlN1YnNjcmliZXJBbHJlYWR5RXhpc3RzXCI7XG4gICAgICAgIENsb3NlQ29kZVtDbG9zZUNvZGVbXCJUb29NYW55SW5pdGlhbGlzYXRpb25SZXF1ZXN0c1wiXSA9IDQ0MjldID0gXCJUb29NYW55SW5pdGlhbGlzYXRpb25SZXF1ZXN0c1wiO1xuICAgIH0pKGV4cG9ydHMuQ2xvc2VDb2RlIHx8IChleHBvcnRzLkNsb3NlQ29kZSA9IHt9KSk7XG4gICAgLyoqXG4gICAgICogVHlwZXMgb2YgbWVzc2FnZXMgYWxsb3dlZCB0byBiZSBzZW50IGJ5IHRoZSBjbGllbnQvc2VydmVyIG92ZXIgdGhlIFdTIHByb3RvY29sLlxuICAgICAqXG4gICAgICogQGNhdGVnb3J5IENvbW1vblxuICAgICAqL1xuICAgIGV4cG9ydHMuTWVzc2FnZVR5cGUgPSB2b2lkIDA7XG4gICAgKGZ1bmN0aW9uIChNZXNzYWdlVHlwZSkge1xuICAgICAgICBNZXNzYWdlVHlwZVtcIkNvbm5lY3Rpb25Jbml0XCJdID0gXCJjb25uZWN0aW9uX2luaXRcIjtcbiAgICAgICAgTWVzc2FnZVR5cGVbXCJDb25uZWN0aW9uQWNrXCJdID0gXCJjb25uZWN0aW9uX2Fja1wiO1xuICAgICAgICBNZXNzYWdlVHlwZVtcIlBpbmdcIl0gPSBcInBpbmdcIjtcbiAgICAgICAgTWVzc2FnZVR5cGVbXCJQb25nXCJdID0gXCJwb25nXCI7XG4gICAgICAgIE1lc3NhZ2VUeXBlW1wiU3Vic2NyaWJlXCJdID0gXCJzdWJzY3JpYmVcIjtcbiAgICAgICAgTWVzc2FnZVR5cGVbXCJOZXh0XCJdID0gXCJuZXh0XCI7XG4gICAgICAgIE1lc3NhZ2VUeXBlW1wiRXJyb3JcIl0gPSBcImVycm9yXCI7XG4gICAgICAgIE1lc3NhZ2VUeXBlW1wiQ29tcGxldGVcIl0gPSBcImNvbXBsZXRlXCI7XG4gICAgfSkoZXhwb3J0cy5NZXNzYWdlVHlwZSB8fCAoZXhwb3J0cy5NZXNzYWdlVHlwZSA9IHt9KSk7XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBhIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBAY2F0ZWdvcnkgQ29tbW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNNZXNzYWdlKHZhbCkge1xuICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkge1xuICAgICAgICAgICAgLy8gYWxsIG1lc3NhZ2VzIG11c3QgaGF2ZSB0aGUgYHR5cGVgIHByb3BcbiAgICAgICAgICAgIGlmICghaGFzT3duU3RyaW5nUHJvcGVydHkodmFsLCAndHlwZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdmFsaWRhdGUgb3RoZXIgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIGB0eXBlYFxuICAgICAgICAgICAgc3dpdGNoICh2YWwudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgZXhwb3J0cy5NZXNzYWdlVHlwZS5Db25uZWN0aW9uSW5pdDpcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvbm5lY3Rpb24gaW5pdCBtZXNzYWdlIGNhbiBoYXZlIG9wdGlvbmFsIHBheWxvYWQgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoIWhhc093blByb3BlcnR5KHZhbCwgJ3BheWxvYWQnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnBheWxvYWQgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPYmplY3QodmFsLnBheWxvYWQpKTtcbiAgICAgICAgICAgICAgICBjYXNlIGV4cG9ydHMuTWVzc2FnZVR5cGUuQ29ubmVjdGlvbkFjazpcbiAgICAgICAgICAgICAgICBjYXNlIGV4cG9ydHMuTWVzc2FnZVR5cGUuUGluZzpcbiAgICAgICAgICAgICAgICBjYXNlIGV4cG9ydHMuTWVzc2FnZVR5cGUuUG9uZzpcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvbm5lY3Rpb24gYWNrLCBwaW5nIGFuZCBwb25nIG1lc3NhZ2VzIGNhbiBoYXZlIG9wdGlvbmFsIHBheWxvYWQgb2JqZWN0IHRvb1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCFoYXNPd25Qcm9wZXJ0eSh2YWwsICdwYXlsb2FkJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5wYXlsb2FkID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2JqZWN0KHZhbC5wYXlsb2FkKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBleHBvcnRzLk1lc3NhZ2VUeXBlLlN1YnNjcmliZTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChoYXNPd25TdHJpbmdQcm9wZXJ0eSh2YWwsICdpZCcpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNPd25PYmplY3RQcm9wZXJ0eSh2YWwsICdwYXlsb2FkJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICghaGFzT3duUHJvcGVydHkodmFsLnBheWxvYWQsICdvcGVyYXRpb25OYW1lJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwucGF5bG9hZC5vcGVyYXRpb25OYW1lID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwucGF5bG9hZC5vcGVyYXRpb25OYW1lID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHZhbC5wYXlsb2FkLm9wZXJhdGlvbk5hbWUgPT09ICdzdHJpbmcnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duU3RyaW5nUHJvcGVydHkodmFsLnBheWxvYWQsICdxdWVyeScpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoIWhhc093blByb3BlcnR5KHZhbC5wYXlsb2FkLCAndmFyaWFibGVzJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwucGF5bG9hZC52YXJpYWJsZXMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5wYXlsb2FkLnZhcmlhYmxlcyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc093bk9iamVjdFByb3BlcnR5KHZhbC5wYXlsb2FkLCAndmFyaWFibGVzJykpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoIWhhc093blByb3BlcnR5KHZhbC5wYXlsb2FkLCAnZXh0ZW5zaW9ucycpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnBheWxvYWQuZXh0ZW5zaW9ucyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnBheWxvYWQuZXh0ZW5zaW9ucyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc093bk9iamVjdFByb3BlcnR5KHZhbC5wYXlsb2FkLCAnZXh0ZW5zaW9ucycpKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBleHBvcnRzLk1lc3NhZ2VUeXBlLk5leHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoaGFzT3duU3RyaW5nUHJvcGVydHkodmFsLCAnaWQnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duT2JqZWN0UHJvcGVydHkodmFsLCAncGF5bG9hZCcpKTtcbiAgICAgICAgICAgICAgICBjYXNlIGV4cG9ydHMuTWVzc2FnZVR5cGUuRXJyb3I6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNPd25TdHJpbmdQcm9wZXJ0eSh2YWwsICdpZCcpICYmIGFyZUdyYXBoUUxFcnJvcnModmFsLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGNhc2UgZXhwb3J0cy5NZXNzYWdlVHlwZS5Db21wbGV0ZTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc093blN0cmluZ1Byb3BlcnR5KHZhbCwgJ2lkJyk7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSByYXcgd2Vic29ja2V0IG1lc3NhZ2UgZGF0YSB0byBhIHZhbGlkIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBAY2F0ZWdvcnkgQ29tbW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyc2VNZXNzYWdlKGRhdGEsIHJldml2ZXIpIHtcbiAgICAgICAgaWYgKGlzTWVzc2FnZShkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXNzYWdlIG5vdCBwYXJzYWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBKU09OLnBhcnNlKGRhdGEsIHJldml2ZXIpO1xuICAgICAgICBpZiAoIWlzTWVzc2FnZShtZXNzYWdlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1lc3NhZ2UnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU3RyaW5naWZpZXMgYSB2YWxpZCBtZXNzYWdlIHJlYWR5IHRvIGJlIHNlbnQgdGhyb3VnaCB0aGUgc29ja2V0LlxuICAgICAqXG4gICAgICogQGNhdGVnb3J5IENvbW1vblxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0cmluZ2lmeU1lc3NhZ2UobXNnLCByZXBsYWNlcikge1xuICAgICAgICBpZiAoIWlzTWVzc2FnZShtc2cpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdHJpbmdpZnkgaW52YWxpZCBtZXNzYWdlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG1zZywgcmVwbGFjZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogY2xpZW50XG4gICAgICpcbiAgICAgKi9cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZGlzcG9zYWJsZSBHcmFwaFFMIG92ZXIgV2ViU29ja2V0IGNsaWVudC5cbiAgICAgKlxuICAgICAqIEBjYXRlZ29yeSBDbGllbnRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDbGllbnQob3B0aW9ucykge1xuICAgICAgICBjb25zdCB7IHVybCwgY29ubmVjdGlvblBhcmFtcywgbGF6eSA9IHRydWUsIG9uTm9uTGF6eUVycm9yID0gY29uc29sZS5lcnJvciwgbGF6eUNsb3NlVGltZW91dCA9IDAsIGtlZXBBbGl2ZSA9IDAsIGRpc2FibGVQb25nLCBjb25uZWN0aW9uQWNrV2FpdFRpbWVvdXQgPSAwLCByZXRyeUF0dGVtcHRzID0gNSwgcmV0cnlXYWl0ID0gYXN5bmMgZnVuY3Rpb24gcmFuZG9taXNlZEV4cG9uZW50aWFsQmFja29mZihyZXRyaWVzKSB7XG4gICAgICAgICAgICBsZXQgcmV0cnlEZWxheSA9IDEwMDA7IC8vIHN0YXJ0IHdpdGggMXMgZGVsYXlcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0cmllczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmV0cnlEZWxheSAqPSAyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgcmV0cnlEZWxheSArXG4gICAgICAgICAgICAgICAgLy8gYWRkIHJhbmRvbSB0aW1lb3V0IGZyb20gMzAwbXMgdG8gM3NcbiAgICAgICAgICAgICAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoMzAwMCAtIDMwMCkgKyAzMDApKSk7XG4gICAgICAgIH0sIGlzRmF0YWxDb25uZWN0aW9uUHJvYmxlbSA9IChlcnJPckNsb3NlRXZlbnQpID0+IFxuICAgICAgICAvLyBub24gYENsb3NlRXZlbnRgcyBhcmUgZmF0YWwgYnkgZGVmYXVsdFxuICAgICAgICAhaXNMaWtlQ2xvc2VFdmVudChlcnJPckNsb3NlRXZlbnQpLCBvbiwgd2ViU29ja2V0SW1wbCwgXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZW5lcmF0ZXMgYSB2NCBVVUlEIHRvIGJlIHVzZWQgYXMgdGhlIElEIHVzaW5nIGBNYXRoYFxuICAgICAgICAgKiBhcyB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuIFN1cHBseSB5b3VyIG93biBnZW5lcmF0b3JcbiAgICAgICAgICogaW4gY2FzZSB5b3UgbmVlZCBtb3JlIHVuaXF1ZW5lc3MuXG4gICAgICAgICAqXG4gICAgICAgICAqIFJlZmVyZW5jZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vamVkLzk4Mjg4M1xuICAgICAgICAgKi9cbiAgICAgICAgZ2VuZXJhdGVJRCA9IGZ1bmN0aW9uIGdlbmVyYXRlVVVJRCgpIHtcbiAgICAgICAgICAgIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIChjKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgciA9IChNYXRoLnJhbmRvbSgpICogMTYpIHwgMCwgdiA9IGMgPT0gJ3gnID8gciA6IChyICYgMHgzKSB8IDB4ODtcbiAgICAgICAgICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwganNvbk1lc3NhZ2VSZXBsYWNlcjogcmVwbGFjZXIsIGpzb25NZXNzYWdlUmV2aXZlcjogcmV2aXZlciwgfSA9IG9wdGlvbnM7XG4gICAgICAgIGxldCB3cztcbiAgICAgICAgaWYgKHdlYlNvY2tldEltcGwpIHtcbiAgICAgICAgICAgIGlmICghaXNXZWJTb2NrZXQod2ViU29ja2V0SW1wbCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgV2ViU29ja2V0IGltcGxlbWVudGF0aW9uIHByb3ZpZGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cyA9IHdlYlNvY2tldEltcGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIFdlYlNvY2tldCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHdzID0gV2ViU29ja2V0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB3cyA9XG4gICAgICAgICAgICAgICAgZ2xvYmFsLldlYlNvY2tldCB8fFxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBTdXBwb3J0IG1vcmUgYnJvd3NlcnNcbiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLk1veldlYlNvY2tldDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgd3MgPVxuICAgICAgICAgICAgICAgIHdpbmRvdy5XZWJTb2NrZXQgfHxcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogU3VwcG9ydCBtb3JlIGJyb3dzZXJzXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5Nb3pXZWJTb2NrZXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF3cylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV2ViU29ja2V0IGltcGxlbWVudGF0aW9uIG1pc3NpbmcnKTtcbiAgICAgICAgY29uc3QgV2ViU29ja2V0SW1wbCA9IHdzO1xuICAgICAgICAvLyB3ZWJzb2NrZXQgc3RhdHVzIGVtaXR0ZXIsIHN1YnNjcmlwdGlvbnMgYXJlIGhhbmRsZWQgZGlmZmVyZW50bHlcbiAgICAgICAgY29uc3QgZW1pdHRlciA9ICgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSB7fTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvbihpZCwgbGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyc1tpZF0gPSBsaXN0ZW5lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxpc3RlbmVyc1tpZF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlbWl0KG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnaWQnIGluIG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9hID0gbGlzdGVuZXJzW21lc3NhZ2UuaWRdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChsaXN0ZW5lcnMsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSgpO1xuICAgICAgICAgICAgY29uc3QgbGlzdGVuZXJzID0ge1xuICAgICAgICAgICAgICAgIGNvbm5lY3Rpbmc6IChvbiA9PT0gbnVsbCB8fCBvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogb24uY29ubmVjdGluZykgPyBbb24uY29ubmVjdGluZ10gOiBbXSxcbiAgICAgICAgICAgICAgICBvcGVuZWQ6IChvbiA9PT0gbnVsbCB8fCBvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogb24ub3BlbmVkKSA/IFtvbi5vcGVuZWRdIDogW10sXG4gICAgICAgICAgICAgICAgY29ubmVjdGVkOiAob24gPT09IG51bGwgfHwgb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uLmNvbm5lY3RlZCkgPyBbb24uY29ubmVjdGVkXSA6IFtdLFxuICAgICAgICAgICAgICAgIHBpbmc6IChvbiA9PT0gbnVsbCB8fCBvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogb24ucGluZykgPyBbb24ucGluZ10gOiBbXSxcbiAgICAgICAgICAgICAgICBwb25nOiAob24gPT09IG51bGwgfHwgb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uLnBvbmcpID8gW29uLnBvbmddIDogW10sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogKG9uID09PSBudWxsIHx8IG9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbi5tZXNzYWdlKSA/IFttZXNzYWdlLmVtaXQsIG9uLm1lc3NhZ2VdIDogW21lc3NhZ2UuZW1pdF0sXG4gICAgICAgICAgICAgICAgY2xvc2VkOiAob24gPT09IG51bGwgfHwgb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uLmNsb3NlZCkgPyBbb24uY2xvc2VkXSA6IFtdLFxuICAgICAgICAgICAgICAgIGVycm9yOiAob24gPT09IG51bGwgfHwgb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uLmVycm9yKSA/IFtvbi5lcnJvcl0gOiBbXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9uTWVzc2FnZTogbWVzc2FnZS5vbixcbiAgICAgICAgICAgICAgICBvbihldmVudCwgbGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbCA9IGxpc3RlbmVyc1tldmVudF07XG4gICAgICAgICAgICAgICAgICAgIGwucHVzaChsaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsLnNwbGljZShsLmluZGV4T2YobGlzdGVuZXIpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVtaXQoZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gd2UgY29weSB0aGUgbGlzdGVuZXJzIHNvIHRoYXQgdW5saXN0ZW5zIGRvbnQgXCJwdWxsIHRoZSBydWcgdW5kZXIgb3VyIGZlZXRcIlxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIFsuLi5saXN0ZW5lcnNbZXZlbnRdXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogVGhlIGFyZ3Mgc2hvdWxkIGZpdFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgLy8gaW52b2tlcyB0aGUgY2FsbGJhY2sgZWl0aGVyIHdoZW4gYW4gZXJyb3Igb3IgY2xvc2VkIGV2ZW50IGlzIGVtaXR0ZWQsXG4gICAgICAgIC8vIGZpcnN0IG9uZSB0aGF0IGdldHMgY2FsbGVkIHByZXZhaWxzLCBvdGhlciBlbWlzc2lvbnMgYXJlIGlnbm9yZWRcbiAgICAgICAgZnVuY3Rpb24gZXJyb3JPckNsb3NlZChjYikge1xuICAgICAgICAgICAgY29uc3QgbGlzdGVuaW5nID0gW1xuICAgICAgICAgICAgICAgIC8vIGVycm9ycyBhcmUgZmF0YWwgYW5kIG1vcmUgY3JpdGljYWwgdGhhbiBjbG9zZSBldmVudHMsIHRocm93IHRoZW0gZmlyc3RcbiAgICAgICAgICAgICAgICBlbWl0dGVyLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGlzdGVuaW5nLmZvckVhY2goKHVubGlzdGVuKSA9PiB1bmxpc3RlbigpKTtcbiAgICAgICAgICAgICAgICAgICAgY2IoZXJyKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAvLyBjbG9zZXMgY2FuIGJlIGdyYWNlZnVsIGFuZCBub3QgZmF0YWwsIHRocm93IHRoZW0gc2Vjb25kIChpZiBlcnJvciBkaWRudCB0aHJvdylcbiAgICAgICAgICAgICAgICBlbWl0dGVyLm9uKCdjbG9zZWQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGlzdGVuaW5nLmZvckVhY2goKHVubGlzdGVuKSA9PiB1bmxpc3RlbigpKTtcbiAgICAgICAgICAgICAgICAgICAgY2IoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY29ubmVjdGluZywgbG9ja3MgPSAwLCByZXRyeWluZyA9IGZhbHNlLCByZXRyaWVzID0gMCwgZGlzcG9zZWQgPSBmYWxzZTtcbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29ubmVjdCgpIHtcbiAgICAgICAgICAgIGNvbnN0IFtzb2NrZXQsIHRocm93T25DbG9zZV0gPSBhd2FpdCAoY29ubmVjdGluZyAhPT0gbnVsbCAmJiBjb25uZWN0aW5nICE9PSB2b2lkIDAgPyBjb25uZWN0aW5nIDogKGNvbm5lY3RpbmcgPSBuZXcgUHJvbWlzZSgoY29ubmVjdGVkLCBkZW5pZWQpID0+IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJldHJ5aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHJldHJ5V2FpdChyZXRyaWVzKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc3Vic2NyaXB0aW9ucyBtaWdodCBjb21wbGV0ZSB3aGlsZSB3YWl0aW5nIGZvciByZXRyeVxuICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2tzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW5nID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlbmllZCh7IGNvZGU6IDEwMDAsIHJlYXNvbjogJ0FsbCBTdWJzY3JpcHRpb25zIEdvbmUnIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHJpZXMrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW1pdHRlci5lbWl0KCdjb25uZWN0aW5nJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc29ja2V0ID0gbmV3IFdlYlNvY2tldEltcGwodHlwZW9mIHVybCA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IHVybCgpIDogdXJsLCBHUkFQSFFMX1RSQU5TUE9SVF9XU19QUk9UT0NPTCk7XG4gICAgICAgICAgICAgICAgbGV0IGNvbm5lY3Rpb25BY2tUaW1lb3V0LCBxdWV1ZWRQaW5nO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGVucXVldWVQaW5nKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaW5pdGUoa2VlcEFsaXZlKSAmJiBrZWVwQWxpdmUgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQocXVldWVkUGluZyk7IC8vIGluIGNhc2Ugd2hlcmUgYSBwb25nIHdhcyByZWNlaXZlZCBiZWZvcmUgYSBwaW5nICh0aGlzIGlzIHZhbGlkIGJlaGF2aW91cilcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlZFBpbmcgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldEltcGwuT1BFTikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuc2VuZChzdHJpbmdpZnlNZXNzYWdlKHsgdHlwZTogZXhwb3J0cy5NZXNzYWdlVHlwZS5QaW5nIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlci5lbWl0KCdwaW5nJywgZmFsc2UsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwga2VlcEFsaXZlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlcnJvck9yQ2xvc2VkKChlcnJPckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbm5lY3RpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChjb25uZWN0aW9uQWNrVGltZW91dCk7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChxdWV1ZWRQaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgZGVuaWVkKGVyck9yRXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNvY2tldC5vbmVycm9yID0gKGVycikgPT4gZW1pdHRlci5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgICAgICAgICAgICAgc29ja2V0Lm9uY2xvc2UgPSAoZXZlbnQpID0+IGVtaXR0ZXIuZW1pdCgnY2xvc2VkJywgZXZlbnQpO1xuICAgICAgICAgICAgICAgIHNvY2tldC5vbm9wZW4gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVyLmVtaXQoJ29wZW5lZCcsIHNvY2tldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gdHlwZW9mIGNvbm5lY3Rpb25QYXJhbXMgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGF3YWl0IGNvbm5lY3Rpb25QYXJhbXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29ubmVjdGlvblBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5zZW5kKHN0cmluZ2lmeU1lc3NhZ2UocGF5bG9hZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBleHBvcnRzLk1lc3NhZ2VUeXBlLkNvbm5lY3Rpb25Jbml0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZXhwb3J0cy5NZXNzYWdlVHlwZS5Db25uZWN0aW9uSW5pdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGF5bG9hZCBpcyBjb21wbGV0ZWx5IGFic2VudCBpZiBub3QgcHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByZXBsYWNlcikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRmluaXRlKGNvbm5lY3Rpb25BY2tXYWl0VGltZW91dCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uQWNrV2FpdFRpbWVvdXQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbkFja1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LmNsb3NlKGV4cG9ydHMuQ2xvc2VDb2RlLkNvbm5lY3Rpb25BY2tub3dsZWRnZW1lbnRUaW1lb3V0LCAnQ29ubmVjdGlvbiBhY2tub3dsZWRnZW1lbnQgdGltZW91dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNvbm5lY3Rpb25BY2tXYWl0VGltZW91dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnF1ZXVlUGluZygpOyAvLyBlbnF1ZXVlIHBpbmcgKG5vb3AgaWYgZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlci5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuY2xvc2UoZXhwb3J0cy5DbG9zZUNvZGUuSW50ZXJuYWxDbGllbnRFcnJvciwgbGltaXRDbG9zZVJlYXNvbihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogbmV3IEVycm9yKGVycikubWVzc2FnZSwgJ0ludGVybmFsIGNsaWVudCBlcnJvcicpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgbGV0IGFja25vd2xlZGdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNvY2tldC5vbm1lc3NhZ2UgPSAoeyBkYXRhIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBwYXJzZU1lc3NhZ2UoZGF0YSwgcmV2aXZlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVyLmVtaXQoJ21lc3NhZ2UnLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICdwaW5nJyB8fCBtZXNzYWdlLnR5cGUgPT09ICdwb25nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZXIuZW1pdChtZXNzYWdlLnR5cGUsIHRydWUsIG1lc3NhZ2UucGF5bG9hZCk7IC8vIHJlY2VpdmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ3BvbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucXVldWVQaW5nKCk7IC8vIGVucXVldWUgbmV4dCBwaW5nIChub29wIGlmIGRpc2FibGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZGlzYWJsZVBvbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzcG9uZCB3aXRoIHBvbmcgb24gcGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuc2VuZChzdHJpbmdpZnlNZXNzYWdlKG1lc3NhZ2UucGF5bG9hZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZXhwb3J0cy5NZXNzYWdlVHlwZS5Qb25nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IG1lc3NhZ2UucGF5bG9hZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGV4cG9ydHMuTWVzc2FnZVR5cGUuUG9uZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXlsb2FkIGlzIGNvbXBsZXRlbHkgYWJzZW50IGlmIG5vdCBwcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVyLmVtaXQoJ3BvbmcnLCBmYWxzZSwgbWVzc2FnZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBwaW5nIGFuZCBwb25ncyBjYW4gYmUgcmVjZWl2ZWQgd2hlbmV2ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY2tub3dsZWRnZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBhbHJlYWR5IGNvbm5lY3RlZCBhbmQgYWNrbm93bGVkZ2VkXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS50eXBlICE9PSBleHBvcnRzLk1lc3NhZ2VUeXBlLkNvbm5lY3Rpb25BY2spXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaXJzdCBtZXNzYWdlIGNhbm5vdCBiZSBvZiB0eXBlICR7bWVzc2FnZS50eXBlfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGNvbm5lY3Rpb25BY2tUaW1lb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFja25vd2xlZGdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVyLmVtaXQoJ2Nvbm5lY3RlZCcsIHNvY2tldCwgbWVzc2FnZS5wYXlsb2FkKTsgLy8gY29ubmVjdGVkID0gc29ja2V0IG9wZW5lZCArIGFja25vd2xlZGdlZFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlpbmcgPSBmYWxzZTsgLy8gZnV0dXJlIGxhenkgY29ubmVjdHMgYXJlIG5vdCByZXRyaWVzXG4gICAgICAgICAgICAgICAgICAgICAgICByZXRyaWVzID0gMDsgLy8gcmVzZXQgdGhlIHJldHJpZXMgb24gY29ubmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGVkKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4gZXJyb3JPckNsb3NlZChyZWplY3QpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5vbm1lc3NhZ2UgPSBudWxsOyAvLyBzdG9wIHJlYWRpbmcgbWVzc2FnZXMgYXMgc29vbiBhcyByZWFkaW5nIGJyZWFrcyBvbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVyLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5jbG9zZShleHBvcnRzLkNsb3NlQ29kZS5CYWRSZXNwb25zZSwgbGltaXRDbG9zZVJlYXNvbihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogbmV3IEVycm9yKGVycikubWVzc2FnZSwgJ0JhZCByZXNwb25zZScpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSgpKSkpO1xuICAgICAgICAgICAgLy8gaWYgdGhlIHByb3ZpZGVkIHNvY2tldCBpcyBpbiBhIGNsb3Npbmcgc3RhdGUsIHdhaXQgZm9yIHRoZSB0aHJvdyBvbiBjbG9zZVxuICAgICAgICAgICAgaWYgKHNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXRJbXBsLkNMT1NJTkcpXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhyb3dPbkNsb3NlO1xuICAgICAgICAgICAgbGV0IHJlbGVhc2UgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gcmVsZWFzZXMgdGhpcyBjb25uZWN0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgcmVsZWFzZWQgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gKHJlbGVhc2UgPSByZXNvbHZlKSk7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHNvY2tldCxcbiAgICAgICAgICAgICAgICByZWxlYXNlLFxuICAgICAgICAgICAgICAgIFByb21pc2UucmFjZShbXG4gICAgICAgICAgICAgICAgICAgIC8vIHdhaXQgZm9yXG4gICAgICAgICAgICAgICAgICAgIHJlbGVhc2VkLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2Nrcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBpZiBubyBtb3JlIGxvY2tzIGFyZSBwcmVzZW50LCBjb21wbGV0ZSB0aGUgY29ubmVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4gc29ja2V0LmNsb3NlKDEwMDAsICdOb3JtYWwgQ2xvc3VyZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0Zpbml0ZShsYXp5Q2xvc2VUaW1lb3V0KSAmJiBsYXp5Q2xvc2VUaW1lb3V0ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUga2VlcGFsaXZlIGlzIHNldCwgYWxsb3cgZm9yIHRoZSBzcGVjaWZpZWQgY2FsbWRvd24gdGltZSBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBjb21wbGV0ZS4gYnV0IG9ubHkgaWYgbm8gbG9jayBnb3QgY3JlYXRlZCBpbiB0aGUgbWVhbnRpbWUgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBzb2NrZXQgaXMgc3RpbGwgb3BlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9ja3MgJiYgc29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldEltcGwuT1BFTilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBsYXp5Q2xvc2VUaW1lb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBjb21wbGV0ZSBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIC8vIG9yXG4gICAgICAgICAgICAgICAgICAgIHRocm93T25DbG9zZSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENoZWNrcyB0aGUgYGNvbm5lY3RgIHByb2JsZW0gYW5kIGV2YWx1YXRlcyBpZiB0aGUgY2xpZW50IHNob3VsZCByZXRyeS5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHNob3VsZFJldHJ5Q29ubmVjdE9yVGhyb3coZXJyT3JDbG9zZUV2ZW50KSB7XG4gICAgICAgICAgICAvLyBzb21lIGNsb3NlIGNvZGVzIGFyZSB3b3J0aCByZXBvcnRpbmcgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgIGlmIChpc0xpa2VDbG9zZUV2ZW50KGVyck9yQ2xvc2VFdmVudCkgJiZcbiAgICAgICAgICAgICAgICAoaXNGYXRhbEludGVybmFsQ2xvc2VDb2RlKGVyck9yQ2xvc2VFdmVudC5jb2RlKSB8fFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRzLkNsb3NlQ29kZS5JbnRlcm5hbFNlcnZlckVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cy5DbG9zZUNvZGUuSW50ZXJuYWxDbGllbnRFcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMuQ2xvc2VDb2RlLkJhZFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRzLkNsb3NlQ29kZS5CYWRSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMuQ2xvc2VDb2RlLlVuYXV0aG9yaXplZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb3NlQ29kZS5Gb3JiaWRkZW4sIG1pZ2h0IGdyYW50IGFjY2VzcyBvdXQgYWZ0ZXIgcmV0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMuQ2xvc2VDb2RlLlN1YnByb3RvY29sTm90QWNjZXB0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb3NlQ29kZS5Db25uZWN0aW9uSW5pdGlhbGlzYXRpb25UaW1lb3V0LCBtaWdodCBub3QgdGltZSBvdXQgYWZ0ZXIgcmV0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb3NlQ29kZS5Db25uZWN0aW9uQWNrbm93bGVkZ2VtZW50VGltZW91dCwgbWlnaHQgbm90IHRpbWUgb3V0IGFmdGVyIHJldHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRzLkNsb3NlQ29kZS5TdWJzY3JpYmVyQWxyZWFkeUV4aXN0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMuQ2xvc2VDb2RlLlRvb01hbnlJbml0aWFsaXNhdGlvblJlcXVlc3RzLFxuICAgICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGVyck9yQ2xvc2VFdmVudC5jb2RlKSkpXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyT3JDbG9zZUV2ZW50O1xuICAgICAgICAgICAgLy8gY2xpZW50IHdhcyBkaXNwb3NlZCwgbm8gcmV0cmllcyBzaG91bGQgcHJvY2VlZCByZWdhcmRsZXNzXG4gICAgICAgICAgICBpZiAoZGlzcG9zZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgLy8gbm9ybWFsIGNsb3N1cmUgKHBvc3NpYmx5IGFsbCBzdWJzY3JpcHRpb25zIGhhdmUgY29tcGxldGVkKVxuICAgICAgICAgICAgLy8gaWYgbm8gbG9ja3Mgd2VyZSBhY3F1aXJlZCBpbiB0aGUgbWVhbnRpbWUsIHNob3VsZG50IHRyeSBhZ2FpblxuICAgICAgICAgICAgaWYgKGlzTGlrZUNsb3NlRXZlbnQoZXJyT3JDbG9zZUV2ZW50KSAmJiBlcnJPckNsb3NlRXZlbnQuY29kZSA9PT0gMTAwMClcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9ja3MgPiAwO1xuICAgICAgICAgICAgLy8gcmV0cmllcyBhcmUgbm90IGFsbG93ZWQgb3Igd2UgdHJpZWQgdG8gbWFueSB0aW1lcywgcmVwb3J0IGVycm9yXG4gICAgICAgICAgICBpZiAoIXJldHJ5QXR0ZW1wdHMgfHwgcmV0cmllcyA+PSByZXRyeUF0dGVtcHRzKVxuICAgICAgICAgICAgICAgIHRocm93IGVyck9yQ2xvc2VFdmVudDtcbiAgICAgICAgICAgIC8vIHRocm93IGZhdGFsIGNvbm5lY3Rpb24gcHJvYmxlbXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgIGlmIChpc0ZhdGFsQ29ubmVjdGlvblByb2JsZW0oZXJyT3JDbG9zZUV2ZW50KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJPckNsb3NlRXZlbnQ7XG4gICAgICAgICAgICAvLyBsb29rcyBnb29kLCBzdGFydCByZXRyeWluZ1xuICAgICAgICAgICAgcmV0dXJuIChyZXRyeWluZyA9IHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGluIG5vbi1sYXp5IChob3Q/KSBtb2RlIGFsd2F5cyBob2xkIG9uZSBjb25uZWN0aW9uIGxvY2sgdG8gcGVyc2lzdCB0aGUgc29ja2V0XG4gICAgICAgIGlmICghbGF6eSkge1xuICAgICAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBsb2NrcysrO1xuICAgICAgICAgICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFssICwgdGhyb3dPbkNsb3NlXSA9IGF3YWl0IGNvbm5lY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRocm93T25DbG9zZTsgLy8gd2lsbCBhbHdheXMgdGhyb3cgYmVjYXVzZSByZWxlYXNlciBpcyBub3QgdXNlZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnJPckNsb3NlRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRSZXRyeUNvbm5lY3RPclRocm93KGVyck9yQ2xvc2VFdmVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnJPckNsb3NlRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXBvcnQgdGhyb3duIGVycm9yLCBubyBmdXJ0aGVyIHJldHJpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25Ob25MYXp5RXJyb3IgPT09IG51bGwgfHwgb25Ob25MYXp5RXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uTm9uTGF6eUVycm9yKGVyck9yQ2xvc2VFdmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvbjogZW1pdHRlci5vbixcbiAgICAgICAgICAgIHN1YnNjcmliZShwYXlsb2FkLCBzaW5rKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBnZW5lcmF0ZUlEKCk7XG4gICAgICAgICAgICAgICAgbGV0IGRvbmUgPSBmYWxzZSwgZXJyb3JlZCA9IGZhbHNlLCByZWxlYXNlciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGhhbmRsaW5nIGNvbXBsZXRpb25zIGJlZm9yZSBjb25uZWN0XG4gICAgICAgICAgICAgICAgICAgIGxvY2tzLS07XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbG9ja3MrKztcbiAgICAgICAgICAgICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbc29ja2V0LCByZWxlYXNlLCB3YWl0Rm9yUmVsZWFzZU9yVGhyb3dPbkNsb3NlXSA9IGF3YWl0IGNvbm5lY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBkb25lIHdoaWxlIHdhaXRpbmcgZm9yIGNvbm5lY3QsIHJlbGVhc2UgdGhlIGNvbm5lY3Rpb24gbG9jayByaWdodCBhd2F5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5saXN0ZW4gPSBlbWl0dGVyLm9uTWVzc2FnZShpZCwgKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZXhwb3J0cy5NZXNzYWdlVHlwZS5OZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5rLm5leHQobWVzc2FnZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGV4cG9ydHMuTWVzc2FnZVR5cGUuRXJyb3I6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3JlZCA9IHRydWUpLCAoZG9uZSA9IHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmsuZXJyb3IobWVzc2FnZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZXhwb3J0cy5NZXNzYWdlVHlwZS5Db21wbGV0ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VyKCk7IC8vIHJlbGVhc2UgY29tcGxldGVzIHRoZSBzaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LnNlbmQoc3RyaW5naWZ5TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBleHBvcnRzLk1lc3NhZ2VUeXBlLlN1YnNjcmliZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByZXBsYWNlcikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VyID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRvbmUgJiYgc29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldEltcGwuT1BFTilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG5vdCBjb21wbGV0ZWQgYWxyZWFkeSBhbmQgc29ja2V0IGlzIG9wZW4sIHNlbmQgY29tcGxldGUgbWVzc2FnZSB0byBzZXJ2ZXIgb24gcmVsZWFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LnNlbmQoc3RyaW5naWZ5TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZXhwb3J0cy5NZXNzYWdlVHlwZS5Db21wbGV0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJlcGxhY2VyKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tzLS07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlaXRoZXIgdGhlIHJlbGVhc2VyIHdpbGwgYmUgY2FsbGVkLCBjb25uZWN0aW9uIGNvbXBsZXRlZCBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcHJvbWlzZSByZXNvbHZlZCBvciB0aGUgc29ja2V0IGNsb3NlZCBhbmQgdGhlIHByb21pc2UgcmVqZWN0ZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hhdGV2ZXIgaGFwcGVucyB0aG91Z2gsIHdlIHdhbnQgdG8gc3RvcCBsaXN0ZW5pbmcgZm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgd2FpdEZvclJlbGVhc2VPclRocm93T25DbG9zZS5maW5hbGx5KHVubGlzdGVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGNvbXBsZXRlZCwgc2hvdWxkbnQgdHJ5IGFnYWluXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyT3JDbG9zZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRSZXRyeUNvbm5lY3RPclRocm93KGVyck9yQ2xvc2VFdmVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pKClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBkZWxpdmVyaW5nIGVpdGhlciBhbiBlcnJvciBvciBhIGNvbXBsZXRlIHRlcm1pbmF0ZXMgdGhlIHNlcXVlbmNlXG4gICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3JlZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmsuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9KSAvLyByZXNvbHZlcyBvbiByZWxlYXNlIG9yIG5vcm1hbCBjbG9zdXJlXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNpbmsuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9KTsgLy8gcmVqZWN0cyBvbiBjbG9zZSBldmVudHMgYW5kIGVycm9yc1xuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGRpc3Bvc2Ugb25seSBvZiBhY3RpdmUgc3Vic2NyaXB0aW9uc1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRvbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlcigpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXN5bmMgZGlzcG9zZSgpIHtcbiAgICAgICAgICAgICAgICBkaXNwb3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGNvbm5lY3RpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSBjb25uZWN0aW9uLCBjbG9zZSBpdFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBbc29ja2V0XSA9IGF3YWl0IGNvbm5lY3Rpbmc7XG4gICAgICAgICAgICAgICAgICAgIHNvY2tldC5jbG9zZSgxMDAwLCAnTm9ybWFsIENsb3N1cmUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0xpa2VDbG9zZUV2ZW50KHZhbCkge1xuICAgICAgICByZXR1cm4gaXNPYmplY3QodmFsKSAmJiAnY29kZScgaW4gdmFsICYmICdyZWFzb24nIGluIHZhbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNGYXRhbEludGVybmFsQ2xvc2VDb2RlKGNvZGUpIHtcbiAgICAgICAgaWYgKFtcbiAgICAgICAgICAgIDEwMDAsXG4gICAgICAgICAgICAxMDAxLFxuICAgICAgICAgICAgMTAwNixcbiAgICAgICAgICAgIDEwMDUsXG4gICAgICAgICAgICAxMDEyLFxuICAgICAgICAgICAgMTAxMyxcbiAgICAgICAgICAgIDEwMTMsIC8vIEJhZCBHYXRld2F5XG4gICAgICAgIF0uaW5jbHVkZXMoY29kZSkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIGFsbCBvdGhlciBpbnRlcm5hbCBlcnJvcnMgYXJlIGZhdGFsXG4gICAgICAgIHJldHVybiBjb2RlID49IDEwMDAgJiYgY29kZSA8PSAxOTk5O1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc1dlYlNvY2tldCh2YWwpIHtcbiAgICAgICAgcmV0dXJuICh0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgICAgICAnY29uc3RydWN0b3InIGluIHZhbCAmJlxuICAgICAgICAgICAgJ0NMT1NFRCcgaW4gdmFsICYmXG4gICAgICAgICAgICAnQ0xPU0lORycgaW4gdmFsICYmXG4gICAgICAgICAgICAnQ09OTkVDVElORycgaW4gdmFsICYmXG4gICAgICAgICAgICAnT1BFTicgaW4gdmFsKTtcbiAgICB9XG5cbiAgICBleHBvcnRzLkdSQVBIUUxfVFJBTlNQT1JUX1dTX1BST1RPQ09MID0gR1JBUEhRTF9UUkFOU1BPUlRfV1NfUFJPVE9DT0w7XG4gICAgZXhwb3J0cy5jcmVhdGVDbGllbnQgPSBjcmVhdGVDbGllbnQ7XG4gICAgZXhwb3J0cy5pc01lc3NhZ2UgPSBpc01lc3NhZ2U7XG4gICAgZXhwb3J0cy5wYXJzZU1lc3NhZ2UgPSBwYXJzZU1lc3NhZ2U7XG4gICAgZXhwb3J0cy5zdHJpbmdpZnlNZXNzYWdlID0gc3RyaW5naWZ5TWVzc2FnZTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbn0pKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFHQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQWNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFyQ0E7QUF1Q0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUF2QkE7QUF3QkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQVpBO0FBYUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhCQTtBQWlCQTtBQUVBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUVBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFGQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUlBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFTQTtBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBaEJBO0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBNURBO0FBOERBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdkZBO0FBd0ZBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBVUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBRUE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql-ws/umd/graphql-ws.js\n");
|
181 |
|
182 | }),
|
183 |
|
184 | "../../../node_modules/graphql/error/GraphQLError.mjs":
|
185 |
|
186 |
|
187 |
|
188 |
|
189 | (function(module, __webpack_exports__, __webpack_require__) {
|
190 |
|
191 | "use strict";
|
192 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLError\", function() { return GraphQLError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printError\", function() { return printError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatError\", function() { return formatError; });\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _language_location_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/location.mjs */ \"../../../node_modules/graphql/language/location.mjs\");\n/* harmony import */ var _language_printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/printLocation.mjs */ \"../../../node_modules/graphql/language/printLocation.mjs\");\n\n\n\n\nfunction toNormalizedOptions(args) {\n const firstArg = args[0];\n\n if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n return {\n nodes: firstArg,\n source: args[1],\n positions: args[2],\n path: args[3],\n originalError: args[4],\n extensions: args[5],\n };\n }\n\n return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nclass GraphQLError extends Error {\n /**\n * An array of `{ line, column }` locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n\n /**\n * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n */\n constructor(message, ...rawArgs) {\n var _this$nodes, _nodeLocations$, _ref;\n\n const { nodes, source, positions, path, originalError, extensions } =\n toNormalizedOptions(rawArgs);\n super(message);\n this.name = 'GraphQLError';\n this.path = path !== null && path !== void 0 ? path : undefined;\n this.originalError =\n originalError !== null && originalError !== void 0\n ? originalError\n : undefined; // Compute list of blame nodes.\n\n this.nodes = undefinedIfEmpty(\n Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n );\n const nodeLocations = undefinedIfEmpty(\n (_this$nodes = this.nodes) === null || _this$nodes === void 0\n ? void 0\n : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n ); // Compute locations in the source for the given nodes/positions.\n\n this.source =\n source !== null && source !== void 0\n ? source\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : (_nodeLocations$ = nodeLocations[0]) === null ||\n _nodeLocations$ === void 0\n ? void 0\n : _nodeLocations$.source;\n this.positions =\n positions !== null && positions !== void 0\n ? positions\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => loc.start);\n this.locations =\n positions && source\n ? positions.map((pos) => Object(_language_location_mjs__WEBPACK_IMPORTED_MODULE_1__[\"getLocation\"])(source, pos))\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => Object(_language_location_mjs__WEBPACK_IMPORTED_MODULE_1__[\"getLocation\"])(loc.source, loc.start));\n const originalExtensions = Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isObjectLike\"])(\n originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions,\n )\n ? originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions\n : undefined;\n this.extensions =\n (_ref =\n extensions !== null && extensions !== void 0\n ? extensions\n : originalExtensions) !== null && _ref !== void 0\n ? _ref\n : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n // Keep the rest as non-enumerable.\n\n Object.defineProperties(this, {\n message: {\n writable: true,\n enumerable: true,\n },\n name: {\n enumerable: false,\n },\n nodes: {\n enumerable: false,\n },\n source: {\n enumerable: false,\n },\n positions: {\n enumerable: false,\n },\n originalError: {\n enumerable: false,\n },\n }); // Include (non-enumerable) stack trace.\n\n /* c8 ignore start */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n if (\n originalError !== null &&\n originalError !== void 0 &&\n originalError.stack\n ) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true,\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true,\n });\n }\n /* c8 ignore stop */\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLError';\n }\n\n toString() {\n let output = this.message;\n\n if (this.nodes) {\n for (const node of this.nodes) {\n if (node.loc) {\n output += '\\n\\n' + Object(_language_printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"printLocation\"])(node.loc);\n }\n }\n } else if (this.source && this.locations) {\n for (const location of this.locations) {\n output += '\\n\\n' + Object(_language_printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"printSourceLocation\"])(this.source, location);\n }\n }\n\n return output;\n }\n\n toJSON() {\n const formattedError = {\n message: this.message,\n };\n\n if (this.locations != null) {\n formattedError.locations = this.locations;\n }\n\n if (this.path != null) {\n formattedError.path = this.path;\n }\n\n if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n formattedError.extensions = this.extensions;\n }\n\n return formattedError;\n }\n}\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * See: https://spec.graphql.org/draft/#sec-Errors\n */\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\nfunction printError(error) {\n return error.toString();\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n *\n * @deprecated Please use `error.toJSON` instead. Will be removed in v17\n */\n\nfunction formatError(error) {\n return error.toJSON();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3IvR3JhcGhRTEVycm9yLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2Vycm9yL0dyYXBoUUxFcnJvci5tanM/MDRjMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc09iamVjdExpa2UgfSBmcm9tICcuLi9qc3V0aWxzL2lzT2JqZWN0TGlrZS5tanMnO1xuaW1wb3J0IHsgZ2V0TG9jYXRpb24gfSBmcm9tICcuLi9sYW5ndWFnZS9sb2NhdGlvbi5tanMnO1xuaW1wb3J0IHtcbiAgcHJpbnRMb2NhdGlvbixcbiAgcHJpbnRTb3VyY2VMb2NhdGlvbixcbn0gZnJvbSAnLi4vbGFuZ3VhZ2UvcHJpbnRMb2NhdGlvbi5tanMnO1xuXG5mdW5jdGlvbiB0b05vcm1hbGl6ZWRPcHRpb25zKGFyZ3MpIHtcbiAgY29uc3QgZmlyc3RBcmcgPSBhcmdzWzBdO1xuXG4gIGlmIChmaXJzdEFyZyA9PSBudWxsIHx8ICdraW5kJyBpbiBmaXJzdEFyZyB8fCAnbGVuZ3RoJyBpbiBmaXJzdEFyZykge1xuICAgIHJldHVybiB7XG4gICAgICBub2RlczogZmlyc3RBcmcsXG4gICAgICBzb3VyY2U6IGFyZ3NbMV0sXG4gICAgICBwb3NpdGlvbnM6IGFyZ3NbMl0sXG4gICAgICBwYXRoOiBhcmdzWzNdLFxuICAgICAgb3JpZ2luYWxFcnJvcjogYXJnc1s0XSxcbiAgICAgIGV4dGVuc2lvbnM6IGFyZ3NbNV0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmaXJzdEFyZztcbn1cbi8qKlxuICogQSBHcmFwaFFMRXJyb3IgZGVzY3JpYmVzIGFuIEVycm9yIGZvdW5kIGR1cmluZyB0aGUgcGFyc2UsIHZhbGlkYXRlLCBvclxuICogZXhlY3V0ZSBwaGFzZXMgb2YgcGVyZm9ybWluZyBhIEdyYXBoUUwgb3BlcmF0aW9uLiBJbiBhZGRpdGlvbiB0byBhIG1lc3NhZ2VcbiAqIGFuZCBzdGFjayB0cmFjZSwgaXQgYWxzbyBpbmNsdWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRpb25zIGluIGFcbiAqIEdyYXBoUUwgZG9jdW1lbnQgYW5kL29yIGV4ZWN1dGlvbiByZXN1bHQgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBFcnJvci5cbiAqL1xuXG5leHBvcnQgY2xhc3MgR3JhcGhRTEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYHsgbGluZSwgY29sdW1uIH1gIGxvY2F0aW9ucyB3aXRoaW4gdGhlIHNvdXJjZSBHcmFwaFFMIGRvY3VtZW50XG4gICAqIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhpcyBlcnJvci5cbiAgICpcbiAgICogRXJyb3JzIGR1cmluZyB2YWxpZGF0aW9uIG9mdGVuIGNvbnRhaW4gbXVsdGlwbGUgbG9jYXRpb25zLCBmb3IgZXhhbXBsZSB0b1xuICAgKiBwb2ludCBvdXQgdHdvIHRoaW5ncyB3aXRoIHRoZSBzYW1lIG5hbWUuIEVycm9ycyBkdXJpbmcgZXhlY3V0aW9uIGluY2x1ZGUgYVxuICAgKiBzaW5nbGUgbG9jYXRpb24sIHRoZSBmaWVsZCB3aGljaCBwcm9kdWNlZCB0aGUgZXJyb3IuXG4gICAqXG4gICAqIEVudW1lcmFibGUsIGFuZCBhcHBlYXJzIGluIHRoZSByZXN1bHQgb2YgSlNPTi5zdHJpbmdpZnkoKS5cbiAgICovXG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IGRlc2NyaWJpbmcgdGhlIEpTT04tcGF0aCBpbnRvIHRoZSBleGVjdXRpb24gcmVzcG9uc2Ugd2hpY2hcbiAgICogY29ycmVzcG9uZHMgdG8gdGhpcyBlcnJvci4gT25seSBpbmNsdWRlZCBmb3IgZXJyb3JzIGR1cmluZyBleGVjdXRpb24uXG4gICAqXG4gICAqIEVudW1lcmFibGUsIGFuZCBhcHBlYXJzIGluIHRoZSByZXN1bHQgb2YgSlNPTi5zdHJpbmdpZnkoKS5cbiAgICovXG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIEdyYXBoUUwgQVNUIE5vZGVzIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBlcnJvci5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgR3JhcGhRTCBkb2N1bWVudCBmb3IgdGhlIGZpcnN0IGxvY2F0aW9uIG9mIHRoaXMgZXJyb3IuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBpZiB0aGlzIEVycm9yIHJlcHJlc2VudHMgbW9yZSB0aGFuIG9uZSBub2RlLCB0aGUgc291cmNlIG1heSBub3RcbiAgICogcmVwcmVzZW50IG5vZGVzIGFmdGVyIHRoZSBmaXJzdCBub2RlLlxuICAgKi9cblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgY2hhcmFjdGVyIG9mZnNldHMgd2l0aGluIHRoZSBzb3VyY2UgR3JhcGhRTCBkb2N1bWVudFxuICAgKiB3aGljaCBjb3JyZXNwb25kIHRvIHRoaXMgZXJyb3IuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgZXJyb3IgdGhyb3duIGZyb20gYSBmaWVsZCByZXNvbHZlciBkdXJpbmcgZXhlY3V0aW9uLlxuICAgKi9cblxuICAvKipcbiAgICogRXh0ZW5zaW9uIGZpZWxkcyB0byBhZGQgdG8gdGhlIGZvcm1hdHRlZCBlcnJvci5cbiAgICovXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgdGhlIGBHcmFwaFFMRXJyb3JPcHRpb25zYCBjb25zdHJ1Y3RvciBvdmVybG9hZCBpbnN0ZWFkLlxuICAgKi9cbiAgY29uc3RydWN0b3IobWVzc2FnZSwgLi4ucmF3QXJncykge1xuICAgIHZhciBfdGhpcyRub2RlcywgX25vZGVMb2NhdGlvbnMkLCBfcmVmO1xuXG4gICAgY29uc3QgeyBub2Rlcywgc291cmNlLCBwb3NpdGlvbnMsIHBhdGgsIG9yaWdpbmFsRXJyb3IsIGV4dGVuc2lvbnMgfSA9XG4gICAgICB0b05vcm1hbGl6ZWRPcHRpb25zKHJhd0FyZ3MpO1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdHcmFwaFFMRXJyb3InO1xuICAgIHRoaXMucGF0aCA9IHBhdGggIT09IG51bGwgJiYgcGF0aCAhPT0gdm9pZCAwID8gcGF0aCA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9yaWdpbmFsRXJyb3IgPVxuICAgICAgb3JpZ2luYWxFcnJvciAhPT0gbnVsbCAmJiBvcmlnaW5hbEVycm9yICE9PSB2b2lkIDBcbiAgICAgICAgPyBvcmlnaW5hbEVycm9yXG4gICAgICAgIDogdW5kZWZpbmVkOyAvLyBDb21wdXRlIGxpc3Qgb2YgYmxhbWUgbm9kZXMuXG5cbiAgICB0aGlzLm5vZGVzID0gdW5kZWZpbmVkSWZFbXB0eShcbiAgICAgIEFycmF5LmlzQXJyYXkobm9kZXMpID8gbm9kZXMgOiBub2RlcyA/IFtub2Rlc10gOiB1bmRlZmluZWQsXG4gICAgKTtcbiAgICBjb25zdCBub2RlTG9jYXRpb25zID0gdW5kZWZpbmVkSWZFbXB0eShcbiAgICAgIChfdGhpcyRub2RlcyA9IHRoaXMubm9kZXMpID09PSBudWxsIHx8IF90aGlzJG5vZGVzID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiBfdGhpcyRub2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUubG9jKS5maWx0ZXIoKGxvYykgPT4gbG9jICE9IG51bGwpLFxuICAgICk7IC8vIENvbXB1dGUgbG9jYXRpb25zIGluIHRoZSBzb3VyY2UgZm9yIHRoZSBnaXZlbiBub2Rlcy9wb3NpdGlvbnMuXG5cbiAgICB0aGlzLnNvdXJjZSA9XG4gICAgICBzb3VyY2UgIT09IG51bGwgJiYgc291cmNlICE9PSB2b2lkIDBcbiAgICAgICAgPyBzb3VyY2VcbiAgICAgICAgOiBub2RlTG9jYXRpb25zID09PSBudWxsIHx8IG5vZGVMb2NhdGlvbnMgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IChfbm9kZUxvY2F0aW9ucyQgPSBub2RlTG9jYXRpb25zWzBdKSA9PT0gbnVsbCB8fFxuICAgICAgICAgIF9ub2RlTG9jYXRpb25zJCA9PT0gdm9pZCAwXG4gICAgICAgID8gdm9pZCAwXG4gICAgICAgIDogX25vZGVMb2NhdGlvbnMkLnNvdXJjZTtcbiAgICB0aGlzLnBvc2l0aW9ucyA9XG4gICAgICBwb3NpdGlvbnMgIT09IG51bGwgJiYgcG9zaXRpb25zICE9PSB2b2lkIDBcbiAgICAgICAgPyBwb3NpdGlvbnNcbiAgICAgICAgOiBub2RlTG9jYXRpb25zID09PSBudWxsIHx8IG5vZGVMb2NhdGlvbnMgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IG5vZGVMb2NhdGlvbnMubWFwKChsb2MpID0+IGxvYy5zdGFydCk7XG4gICAgdGhpcy5sb2NhdGlvbnMgPVxuICAgICAgcG9zaXRpb25zICYmIHNvdXJjZVxuICAgICAgICA/IHBvc2l0aW9ucy5tYXAoKHBvcykgPT4gZ2V0TG9jYXRpb24oc291cmNlLCBwb3MpKVxuICAgICAgICA6IG5vZGVMb2NhdGlvbnMgPT09IG51bGwgfHwgbm9kZUxvY2F0aW9ucyA9PT0gdm9pZCAwXG4gICAgICAgID8gdm9pZCAwXG4gICAgICAgIDogbm9kZUxvY2F0aW9ucy5tYXAoKGxvYykgPT4gZ2V0TG9jYXRpb24obG9jLnNvdXJjZSwgbG9jLnN0YXJ0KSk7XG4gICAgY29uc3Qgb3JpZ2luYWxFeHRlbnNpb25zID0gaXNPYmplY3RMaWtlKFxuICAgICAgb3JpZ2luYWxFcnJvciA9PT0gbnVsbCB8fCBvcmlnaW5hbEVycm9yID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiBvcmlnaW5hbEVycm9yLmV4dGVuc2lvbnMsXG4gICAgKVxuICAgICAgPyBvcmlnaW5hbEVycm9yID09PSBudWxsIHx8IG9yaWdpbmFsRXJyb3IgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IG9yaWdpbmFsRXJyb3IuZXh0ZW5zaW9uc1xuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5leHRlbnNpb25zID1cbiAgICAgIChfcmVmID1cbiAgICAgICAgZXh0ZW5zaW9ucyAhPT0gbnVsbCAmJiBleHRlbnNpb25zICE9PSB2b2lkIDBcbiAgICAgICAgICA/IGV4dGVuc2lvbnNcbiAgICAgICAgICA6IG9yaWdpbmFsRXh0ZW5zaW9ucykgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwXG4gICAgICAgID8gX3JlZlxuICAgICAgICA6IE9iamVjdC5jcmVhdGUobnVsbCk7IC8vIE9ubHkgcHJvcGVydGllcyBwcmVzY3JpYmVkIGJ5IHRoZSBzcGVjIHNob3VsZCBiZSBlbnVtZXJhYmxlLlxuICAgIC8vIEtlZXAgdGhlIHJlc3QgYXMgbm9uLWVudW1lcmFibGUuXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgICBtZXNzYWdlOiB7XG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIG5hbWU6IHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbm9kZXM6IHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB9LFxuICAgICAgc291cmNlOiB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBvcmlnaW5hbEVycm9yOiB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTsgLy8gSW5jbHVkZSAobm9uLWVudW1lcmFibGUpIHN0YWNrIHRyYWNlLlxuXG4gICAgLyogYzggaWdub3JlIHN0YXJ0ICovXG4gICAgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIzMTdcblxuICAgIGlmIChcbiAgICAgIG9yaWdpbmFsRXJyb3IgIT09IG51bGwgJiZcbiAgICAgIG9yaWdpbmFsRXJyb3IgIT09IHZvaWQgMCAmJlxuICAgICAgb3JpZ2luYWxFcnJvci5zdGFja1xuICAgICkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdzdGFjaycsIHtcbiAgICAgICAgdmFsdWU6IG9yaWdpbmFsRXJyb3Iuc3RhY2ssXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBHcmFwaFFMRXJyb3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3N0YWNrJywge1xuICAgICAgICB2YWx1ZTogRXJyb3IoKS5zdGFjayxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvKiBjOCBpZ25vcmUgc3RvcCAqL1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnR3JhcGhRTEVycm9yJztcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBvdXRwdXQgPSB0aGlzLm1lc3NhZ2U7XG5cbiAgICBpZiAodGhpcy5ub2Rlcykge1xuICAgICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMubm9kZXMpIHtcbiAgICAgICAgaWYgKG5vZGUubG9jKSB7XG4gICAgICAgICAgb3V0cHV0ICs9ICdcXG5cXG4nICsgcHJpbnRMb2NhdGlvbihub2RlLmxvYyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuc291cmNlICYmIHRoaXMubG9jYXRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IGxvY2F0aW9uIG9mIHRoaXMubG9jYXRpb25zKSB7XG4gICAgICAgIG91dHB1dCArPSAnXFxuXFxuJyArIHByaW50U291cmNlTG9jYXRpb24odGhpcy5zb3VyY2UsIGxvY2F0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGZvcm1hdHRlZEVycm9yID0ge1xuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5sb2NhdGlvbnMgIT0gbnVsbCkge1xuICAgICAgZm9ybWF0dGVkRXJyb3IubG9jYXRpb25zID0gdGhpcy5sb2NhdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGF0aCAhPSBudWxsKSB7XG4gICAgICBmb3JtYXR0ZWRFcnJvci5wYXRoID0gdGhpcy5wYXRoO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmV4dGVuc2lvbnMgIT0gbnVsbCAmJiBPYmplY3Qua2V5cyh0aGlzLmV4dGVuc2lvbnMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvcm1hdHRlZEVycm9yLmV4dGVuc2lvbnMgPSB0aGlzLmV4dGVuc2lvbnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRlZEVycm9yO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVuZGVmaW5lZElmRW1wdHkoYXJyYXkpIHtcbiAgcmV0dXJuIGFycmF5ID09PSB1bmRlZmluZWQgfHwgYXJyYXkubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogYXJyYXk7XG59XG4vKipcbiAqIFNlZTogaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtRXJyb3JzXG4gKi9cblxuLyoqXG4gKiBQcmludHMgYSBHcmFwaFFMRXJyb3IgdG8gYSBzdHJpbmcsIHJlcHJlc2VudGluZyB1c2VmdWwgbG9jYXRpb24gaW5mb3JtYXRpb25cbiAqIGFib3V0IHRoZSBlcnJvcidzIHBvc2l0aW9uIGluIHRoZSBzb3VyY2UuXG4gKlxuICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgZXJyb3IudG9TdHJpbmdgIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByaW50RXJyb3IoZXJyb3IpIHtcbiAgcmV0dXJuIGVycm9yLnRvU3RyaW5nKCk7XG59XG4vKipcbiAqIEdpdmVuIGEgR3JhcGhRTEVycm9yLCBmb3JtYXQgaXQgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBkZXNjcmliZWQgYnkgdGhlXG4gKiBSZXNwb25zZSBGb3JtYXQsIEVycm9ycyBzZWN0aW9uIG9mIHRoZSBHcmFwaFFMIFNwZWNpZmljYXRpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgZXJyb3IudG9KU09OYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE3XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVycm9yKGVycm9yKSB7XG4gIHJldHVybiBlcnJvci50b0pTT04oKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/error/GraphQLError.mjs\n");
|
193 |
|
194 | }),
|
195 |
|
196 | "../../../node_modules/graphql/error/index.mjs":
|
197 |
|
198 |
|
199 |
|
200 |
|
201 | (function(module, __webpack_exports__, __webpack_require__) {
|
202 |
|
203 | "use strict";
|
204 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLError\", function() { return _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printError\", function() { return _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"printError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatError\", function() { return _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"formatError\"]; });\n\n/* harmony import */ var _syntaxError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./syntaxError.mjs */ \"../../../node_modules/graphql/error/syntaxError.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"syntaxError\", function() { return _syntaxError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"syntaxError\"]; });\n\n/* harmony import */ var _locatedError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./locatedError.mjs */ \"../../../node_modules/graphql/error/locatedError.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"locatedError\", function() { return _locatedError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"locatedError\"]; });\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3IvaW5kZXgubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3IvaW5kZXgubWpzPzczZDkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgR3JhcGhRTEVycm9yLCBwcmludEVycm9yLCBmb3JtYXRFcnJvciB9IGZyb20gJy4vR3JhcGhRTEVycm9yLm1qcyc7XG5leHBvcnQgeyBzeW50YXhFcnJvciB9IGZyb20gJy4vc3ludGF4RXJyb3IubWpzJztcbmV4cG9ydCB7IGxvY2F0ZWRFcnJvciB9IGZyb20gJy4vbG9jYXRlZEVycm9yLm1qcyc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/error/index.mjs\n");
|
205 |
|
206 | }),
|
207 |
|
208 | "../../../node_modules/graphql/error/locatedError.mjs":
|
209 |
|
210 |
|
211 |
|
212 |
|
213 | (function(module, __webpack_exports__, __webpack_require__) {
|
214 |
|
215 | "use strict";
|
216 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"locatedError\", function() { return locatedError; });\n/* harmony import */ var _jsutils_toError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/toError.mjs */ \"../../../node_modules/graphql/jsutils/toError.mjs\");\n/* harmony import */ var _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Given an arbitrary value, presumably thrown while attempting to execute a\n * GraphQL operation, produce a new GraphQLError aware of the location in the\n * document responsible for the original Error.\n */\n\nfunction locatedError(rawOriginalError, nodes, path) {\n var _nodes;\n\n const originalError = Object(_jsutils_toError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"toError\"])(rawOriginalError); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.\n\n if (isLocatedGraphQLError(originalError)) {\n return originalError;\n }\n\n return new _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](originalError.message, {\n nodes:\n (_nodes = originalError.nodes) !== null && _nodes !== void 0\n ? _nodes\n : nodes,\n source: originalError.source,\n positions: originalError.positions,\n path,\n originalError,\n });\n}\n\nfunction isLocatedGraphQLError(error) {\n return Array.isArray(error.path);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3IvbG9jYXRlZEVycm9yLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2Vycm9yL2xvY2F0ZWRFcnJvci5tanM/Y2UxMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b0Vycm9yIH0gZnJvbSAnLi4vanN1dGlscy90b0Vycm9yLm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuL0dyYXBoUUxFcnJvci5tanMnO1xuLyoqXG4gKiBHaXZlbiBhbiBhcmJpdHJhcnkgdmFsdWUsIHByZXN1bWFibHkgdGhyb3duIHdoaWxlIGF0dGVtcHRpbmcgdG8gZXhlY3V0ZSBhXG4gKiBHcmFwaFFMIG9wZXJhdGlvbiwgcHJvZHVjZSBhIG5ldyBHcmFwaFFMRXJyb3IgYXdhcmUgb2YgdGhlIGxvY2F0aW9uIGluIHRoZVxuICogZG9jdW1lbnQgcmVzcG9uc2libGUgZm9yIHRoZSBvcmlnaW5hbCBFcnJvci5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbG9jYXRlZEVycm9yKHJhd09yaWdpbmFsRXJyb3IsIG5vZGVzLCBwYXRoKSB7XG4gIHZhciBfbm9kZXM7XG5cbiAgY29uc3Qgb3JpZ2luYWxFcnJvciA9IHRvRXJyb3IocmF3T3JpZ2luYWxFcnJvcik7IC8vIE5vdGU6IHRoaXMgdXNlcyBhIGJyYW5kLWNoZWNrIHRvIHN1cHBvcnQgR3JhcGhRTCBlcnJvcnMgb3JpZ2luYXRpbmcgZnJvbSBvdGhlciBjb250ZXh0cy5cblxuICBpZiAoaXNMb2NhdGVkR3JhcGhRTEVycm9yKG9yaWdpbmFsRXJyb3IpKSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsRXJyb3I7XG4gIH1cblxuICByZXR1cm4gbmV3IEdyYXBoUUxFcnJvcihvcmlnaW5hbEVycm9yLm1lc3NhZ2UsIHtcbiAgICBub2RlczpcbiAgICAgIChfbm9kZXMgPSBvcmlnaW5hbEVycm9yLm5vZGVzKSAhPT0gbnVsbCAmJiBfbm9kZXMgIT09IHZvaWQgMFxuICAgICAgICA/IF9ub2Rlc1xuICAgICAgICA6IG5vZGVzLFxuICAgIHNvdXJjZTogb3JpZ2luYWxFcnJvci5zb3VyY2UsXG4gICAgcG9zaXRpb25zOiBvcmlnaW5hbEVycm9yLnBvc2l0aW9ucyxcbiAgICBwYXRoLFxuICAgIG9yaWdpbmFsRXJyb3IsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc0xvY2F0ZWRHcmFwaFFMRXJyb3IoZXJyb3IpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZXJyb3IucGF0aCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/error/locatedError.mjs\n");
|
217 |
|
218 | }),
|
219 |
|
220 | "../../../node_modules/graphql/error/syntaxError.mjs":
|
221 |
|
222 |
|
223 |
|
224 |
|
225 | (function(module, __webpack_exports__, __webpack_require__) {
|
226 |
|
227 | "use strict";
|
228 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syntaxError\", function() { return syntaxError; });\n/* harmony import */ var _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nfunction syntaxError(source, position, description) {\n return new _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](`Syntax Error: ${description}`, {\n source,\n positions: [position],\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3Ivc3ludGF4RXJyb3IubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3Ivc3ludGF4RXJyb3IubWpzP2YyOWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi9HcmFwaFFMRXJyb3IubWpzJztcbi8qKlxuICogUHJvZHVjZXMgYSBHcmFwaFFMRXJyb3IgcmVwcmVzZW50aW5nIGEgc3ludGF4IGVycm9yLCBjb250YWluaW5nIHVzZWZ1bFxuICogZGVzY3JpcHRpdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN5bnRheCBlcnJvcidzIHBvc2l0aW9uIGluIHRoZSBzb3VyY2UuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN5bnRheEVycm9yKHNvdXJjZSwgcG9zaXRpb24sIGRlc2NyaXB0aW9uKSB7XG4gIHJldHVybiBuZXcgR3JhcGhRTEVycm9yKGBTeW50YXggRXJyb3I6ICR7ZGVzY3JpcHRpb259YCwge1xuICAgIHNvdXJjZSxcbiAgICBwb3NpdGlvbnM6IFtwb3NpdGlvbl0sXG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/error/syntaxError.mjs\n");
|
229 |
|
230 | }),
|
231 |
|
232 | "../../../node_modules/graphql/execution/collectFields.mjs":
|
233 |
|
234 |
|
235 |
|
236 |
|
237 | (function(module, __webpack_exports__, __webpack_require__) {
|
238 |
|
239 | "use strict";
|
240 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"collectFields\", function() { return collectFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"collectSubfields\", function() { return collectSubfields; });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n/* harmony import */ var _values_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n\n\n\n\n\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nfunction collectFields(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n) {\n const fields = new Map();\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n fields,\n new Set(),\n );\n return fields;\n}\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nfunction collectSubfields(\n schema,\n fragments,\n variableValues,\n returnType,\n fieldNodes,\n) {\n const subFieldNodes = new Map();\n const visitedFragmentNames = new Set();\n\n for (const node of fieldNodes) {\n if (node.selectionSet) {\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n returnType,\n node.selectionSet,\n subFieldNodes,\n visitedFragmentNames,\n );\n }\n }\n\n return subFieldNodes;\n}\n\nfunction collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n fields,\n visitedFragmentNames,\n) {\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FIELD: {\n if (!shouldIncludeNode(variableValues, selection)) {\n continue;\n }\n\n const name = getFieldEntryKey(selection);\n const fieldList = fields.get(name);\n\n if (fieldList !== undefined) {\n fieldList.push(selection);\n } else {\n fields.set(name, [selection]);\n }\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INLINE_FRAGMENT: {\n if (\n !shouldIncludeNode(variableValues, selection) ||\n !doesFragmentConditionMatch(schema, selection, runtimeType)\n ) {\n continue;\n }\n\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selection.selectionSet,\n fields,\n visitedFragmentNames,\n );\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FRAGMENT_SPREAD: {\n const fragName = selection.name.value;\n\n if (\n visitedFragmentNames.has(fragName) ||\n !shouldIncludeNode(variableValues, selection)\n ) {\n continue;\n }\n\n visitedFragmentNames.add(fragName);\n const fragment = fragments[fragName];\n\n if (\n !fragment ||\n !doesFragmentConditionMatch(schema, fragment, runtimeType)\n ) {\n continue;\n }\n\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n fragment.selectionSet,\n fields,\n visitedFragmentNames,\n );\n break;\n }\n }\n }\n}\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n */\n\nfunction shouldIncludeNode(variableValues, node) {\n const skip = Object(_values_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getDirectiveValues\"])(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLSkipDirective\"], node, variableValues);\n\n if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {\n return false;\n }\n\n const include = Object(_values_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getDirectiveValues\"])(\n _type_directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLIncludeDirective\"],\n node,\n variableValues,\n );\n\n if (\n (include === null || include === void 0 ? void 0 : include.if) === false\n ) {\n return false;\n }\n\n return true;\n}\n/**\n * Determines if a fragment is applicable to the given type.\n */\n\nfunction doesFragmentConditionMatch(schema, fragment, type) {\n const typeConditionNode = fragment.typeCondition;\n\n if (!typeConditionNode) {\n return true;\n }\n\n const conditionalType = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__[\"typeFromAST\"])(schema, typeConditionNode);\n\n if (conditionalType === type) {\n return true;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isAbstractType\"])(conditionalType)) {\n return schema.isSubType(conditionalType, type);\n }\n\n return false;\n}\n/**\n * Implements the logic to compute the key of a given field's entry\n */\n\nfunction getFieldEntryKey(node) {\n return node.alias ? node.alias.value : node.name.value;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL2NvbGxlY3RGaWVsZHMubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL2NvbGxlY3RGaWVsZHMubWpzPzY2NjIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBpc0Fic3RyYWN0VHlwZSB9IGZyb20gJy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHtcbiAgR3JhcGhRTEluY2x1ZGVEaXJlY3RpdmUsXG4gIEdyYXBoUUxTa2lwRGlyZWN0aXZlLFxufSBmcm9tICcuLi90eXBlL2RpcmVjdGl2ZXMubWpzJztcbmltcG9ydCB7IHR5cGVGcm9tQVNUIH0gZnJvbSAnLi4vdXRpbGl0aWVzL3R5cGVGcm9tQVNULm1qcyc7XG5pbXBvcnQgeyBnZXREaXJlY3RpdmVWYWx1ZXMgfSBmcm9tICcuL3ZhbHVlcy5tanMnO1xuLyoqXG4gKiBHaXZlbiBhIHNlbGVjdGlvblNldCwgY29sbGVjdHMgYWxsIG9mIHRoZSBmaWVsZHMgYW5kIHJldHVybnMgdGhlbS5cbiAqXG4gKiBDb2xsZWN0RmllbGRzIHJlcXVpcmVzIHRoZSBcInJ1bnRpbWUgdHlwZVwiIG9mIGFuIG9iamVjdC4gRm9yIGEgZmllbGQgdGhhdFxuICogcmV0dXJucyBhbiBJbnRlcmZhY2Ugb3IgVW5pb24gdHlwZSwgdGhlIFwicnVudGltZSB0eXBlXCIgd2lsbCBiZSB0aGUgYWN0dWFsXG4gKiBvYmplY3QgdHlwZSByZXR1cm5lZCBieSB0aGF0IGZpZWxkLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0RmllbGRzKFxuICBzY2hlbWEsXG4gIGZyYWdtZW50cyxcbiAgdmFyaWFibGVWYWx1ZXMsXG4gIHJ1bnRpbWVUeXBlLFxuICBzZWxlY3Rpb25TZXQsXG4pIHtcbiAgY29uc3QgZmllbGRzID0gbmV3IE1hcCgpO1xuICBjb2xsZWN0RmllbGRzSW1wbChcbiAgICBzY2hlbWEsXG4gICAgZnJhZ21lbnRzLFxuICAgIHZhcmlhYmxlVmFsdWVzLFxuICAgIHJ1bnRpbWVUeXBlLFxuICAgIHNlbGVjdGlvblNldCxcbiAgICBmaWVsZHMsXG4gICAgbmV3IFNldCgpLFxuICApO1xuICByZXR1cm4gZmllbGRzO1xufVxuLyoqXG4gKiBHaXZlbiBhbiBhcnJheSBvZiBmaWVsZCBub2RlcywgY29sbGVjdHMgYWxsIG9mIHRoZSBzdWJmaWVsZHMgb2YgdGhlIHBhc3NlZFxuICogaW4gZmllbGRzLCBhbmQgcmV0dXJucyB0aGVtIGF0IHRoZSBlbmQuXG4gKlxuICogQ29sbGVjdFN1YkZpZWxkcyByZXF1aXJlcyB0aGUgXCJyZXR1cm4gdHlwZVwiIG9mIGFuIG9iamVjdC4gRm9yIGEgZmllbGQgdGhhdFxuICogcmV0dXJucyBhbiBJbnRlcmZhY2Ugb3IgVW5pb24gdHlwZSwgdGhlIFwicmV0dXJuIHR5cGVcIiB3aWxsIGJlIHRoZSBhY3R1YWxcbiAqIG9iamVjdCB0eXBlIHJldHVybmVkIGJ5IHRoYXQgZmllbGQuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbGxlY3RTdWJmaWVsZHMoXG4gIHNjaGVtYSxcbiAgZnJhZ21lbnRzLFxuICB2YXJpYWJsZVZhbHVlcyxcbiAgcmV0dXJuVHlwZSxcbiAgZmllbGROb2Rlcyxcbikge1xuICBjb25zdCBzdWJGaWVsZE5vZGVzID0gbmV3IE1hcCgpO1xuICBjb25zdCB2aXNpdGVkRnJhZ21lbnROYW1lcyA9IG5ldyBTZXQoKTtcblxuICBmb3IgKGNvbnN0IG5vZGUgb2YgZmllbGROb2Rlcykge1xuICAgIGlmIChub2RlLnNlbGVjdGlvblNldCkge1xuICAgICAgY29sbGVjdEZpZWxkc0ltcGwoXG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgZnJhZ21lbnRzLFxuICAgICAgICB2YXJpYWJsZVZhbHVlcyxcbiAgICAgICAgcmV0dXJuVHlwZSxcbiAgICAgICAgbm9kZS5zZWxlY3Rpb25TZXQsXG4gICAgICAgIHN1YkZpZWxkTm9kZXMsXG4gICAgICAgIHZpc2l0ZWRGcmFnbWVudE5hbWVzLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3ViRmllbGROb2Rlcztcbn1cblxuZnVuY3Rpb24gY29sbGVjdEZpZWxkc0ltcGwoXG4gIHNjaGVtYSxcbiAgZnJhZ21lbnRzLFxuICB2YXJpYWJsZVZhbHVlcyxcbiAgcnVudGltZVR5cGUsXG4gIHNlbGVjdGlvblNldCxcbiAgZmllbGRzLFxuICB2aXNpdGVkRnJhZ21lbnROYW1lcyxcbikge1xuICBmb3IgKGNvbnN0IHNlbGVjdGlvbiBvZiBzZWxlY3Rpb25TZXQuc2VsZWN0aW9ucykge1xuICAgIHN3aXRjaCAoc2VsZWN0aW9uLmtpbmQpIHtcbiAgICAgIGNhc2UgS2luZC5GSUVMRDoge1xuICAgICAgICBpZiAoIXNob3VsZEluY2x1ZGVOb2RlKHZhcmlhYmxlVmFsdWVzLCBzZWxlY3Rpb24pKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuYW1lID0gZ2V0RmllbGRFbnRyeUtleShzZWxlY3Rpb24pO1xuICAgICAgICBjb25zdCBmaWVsZExpc3QgPSBmaWVsZHMuZ2V0KG5hbWUpO1xuXG4gICAgICAgIGlmIChmaWVsZExpc3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZpZWxkTGlzdC5wdXNoKHNlbGVjdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRzLnNldChuYW1lLCBbc2VsZWN0aW9uXSk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBLaW5kLklOTElORV9GUkFHTUVOVDoge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXNob3VsZEluY2x1ZGVOb2RlKHZhcmlhYmxlVmFsdWVzLCBzZWxlY3Rpb24pIHx8XG4gICAgICAgICAgIWRvZXNGcmFnbWVudENvbmRpdGlvbk1hdGNoKHNjaGVtYSwgc2VsZWN0aW9uLCBydW50aW1lVHlwZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb2xsZWN0RmllbGRzSW1wbChcbiAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgZnJhZ21lbnRzLFxuICAgICAgICAgIHZhcmlhYmxlVmFsdWVzLFxuICAgICAgICAgIHJ1bnRpbWVUeXBlLFxuICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3Rpb25TZXQsXG4gICAgICAgICAgZmllbGRzLFxuICAgICAgICAgIHZpc2l0ZWRGcmFnbWVudE5hbWVzLFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBLaW5kLkZSQUdNRU5UX1NQUkVBRDoge1xuICAgICAgICBjb25zdCBmcmFnTmFtZSA9IHNlbGVjdGlvbi5uYW1lLnZhbHVlO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB2aXNpdGVkRnJhZ21lbnROYW1lcy5oYXMoZnJhZ05hbWUpIHx8XG4gICAgICAgICAgIXNob3VsZEluY2x1ZGVOb2RlKHZhcmlhYmxlVmFsdWVzLCBzZWxlY3Rpb24pXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmlzaXRlZEZyYWdtZW50TmFtZXMuYWRkKGZyYWdOYW1lKTtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBmcmFnbWVudHNbZnJhZ05hbWVdO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhZnJhZ21lbnQgfHxcbiAgICAgICAgICAhZG9lc0ZyYWdtZW50Q29uZGl0aW9uTWF0Y2goc2NoZW1hLCBmcmFnbWVudCwgcnVudGltZVR5cGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29sbGVjdEZpZWxkc0ltcGwoXG4gICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgIGZyYWdtZW50cyxcbiAgICAgICAgICB2YXJpYWJsZVZhbHVlcyxcbiAgICAgICAgICBydW50aW1lVHlwZSxcbiAgICAgICAgICBmcmFnbWVudC5zZWxlY3Rpb25TZXQsXG4gICAgICAgICAgZmllbGRzLFxuICAgICAgICAgIHZpc2l0ZWRGcmFnbWVudE5hbWVzLFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIGZpZWxkIHNob3VsZCBiZSBpbmNsdWRlZCBiYXNlZCBvbiB0aGUgYEBpbmNsdWRlYCBhbmQgYEBza2lwYFxuICogZGlyZWN0aXZlcywgd2hlcmUgYEBza2lwYCBoYXMgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiBgQGluY2x1ZGVgLlxuICovXG5cbmZ1bmN0aW9uIHNob3VsZEluY2x1ZGVOb2RlKHZhcmlhYmxlVmFsdWVzLCBub2RlKSB7XG4gIGNvbnN0IHNraXAgPSBnZXREaXJlY3RpdmVWYWx1ZXMoR3JhcGhRTFNraXBEaXJlY3RpdmUsIG5vZGUsIHZhcmlhYmxlVmFsdWVzKTtcblxuICBpZiAoKHNraXAgPT09IG51bGwgfHwgc2tpcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2tpcC5pZikgPT09IHRydWUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBpbmNsdWRlID0gZ2V0RGlyZWN0aXZlVmFsdWVzKFxuICAgIEdyYXBoUUxJbmNsdWRlRGlyZWN0aXZlLFxuICAgIG5vZGUsXG4gICAgdmFyaWFibGVWYWx1ZXMsXG4gICk7XG5cbiAgaWYgKFxuICAgIChpbmNsdWRlID09PSBudWxsIHx8IGluY2x1ZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGluY2x1ZGUuaWYpID09PSBmYWxzZVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIGZyYWdtZW50IGlzIGFwcGxpY2FibGUgdG8gdGhlIGdpdmVuIHR5cGUuXG4gKi9cblxuZnVuY3Rpb24gZG9lc0ZyYWdtZW50Q29uZGl0aW9uTWF0Y2goc2NoZW1hLCBmcmFnbWVudCwgdHlwZSkge1xuICBjb25zdCB0eXBlQ29uZGl0aW9uTm9kZSA9IGZyYWdtZW50LnR5cGVDb25kaXRpb247XG5cbiAgaWYgKCF0eXBlQ29uZGl0aW9uTm9kZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgY29uZGl0aW9uYWxUeXBlID0gdHlwZUZyb21BU1Qoc2NoZW1hLCB0eXBlQ29uZGl0aW9uTm9kZSk7XG5cbiAgaWYgKGNvbmRpdGlvbmFsVHlwZSA9PT0gdHlwZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGlzQWJzdHJhY3RUeXBlKGNvbmRpdGlvbmFsVHlwZSkpIHtcbiAgICByZXR1cm4gc2NoZW1hLmlzU3ViVHlwZShjb25kaXRpb25hbFR5cGUsIHR5cGUpO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuLyoqXG4gKiBJbXBsZW1lbnRzIHRoZSBsb2dpYyB0byBjb21wdXRlIHRoZSBrZXkgb2YgYSBnaXZlbiBmaWVsZCdzIGVudHJ5XG4gKi9cblxuZnVuY3Rpb24gZ2V0RmllbGRFbnRyeUtleShub2RlKSB7XG4gIHJldHVybiBub2RlLmFsaWFzID8gbm9kZS5hbGlhcy52YWx1ZSA6IG5vZGUubmFtZS52YWx1ZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/execution/collectFields.mjs\n");
|
241 |
|
242 | }),
|
243 |
|
244 | "../../../node_modules/graphql/execution/execute.mjs":
|
245 |
|
246 |
|
247 |
|
248 |
|
249 | (function(module, __webpack_exports__, __webpack_require__) {
|
250 |
|
251 | "use strict";
|
252 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"execute\", function() { return execute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"executeSync\", function() { return executeSync; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertValidExecutionArguments\", function() { return assertValidExecutionArguments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildExecutionContext\", function() { return buildExecutionContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildResolveInfo\", function() { return buildResolveInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultTypeResolver\", function() { return defaultTypeResolver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultFieldResolver\", function() { return defaultFieldResolver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFieldDef\", function() { return getFieldDef; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_isIterableObject_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/isIterableObject.mjs */ \"../../../node_modules/graphql/jsutils/isIterableObject.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/isPromise.mjs */ \"../../../node_modules/graphql/jsutils/isPromise.mjs\");\n/* harmony import */ var _jsutils_memoize3_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/memoize3.mjs */ \"../../../node_modules/graphql/jsutils/memoize3.mjs\");\n/* harmony import */ var _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/Path.mjs */ \"../../../node_modules/graphql/jsutils/Path.mjs\");\n/* harmony import */ var _jsutils_promiseForObject_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../jsutils/promiseForObject.mjs */ \"../../../node_modules/graphql/jsutils/promiseForObject.mjs\");\n/* harmony import */ var _jsutils_promiseReduce_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../jsutils/promiseReduce.mjs */ \"../../../node_modules/graphql/jsutils/promiseReduce.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../error/locatedError.mjs */ \"../../../node_modules/graphql/error/locatedError.mjs\");\n/* harmony import */ var _language_ast_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../language/ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_validate_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../type/validate.mjs */ \"../../../node_modules/graphql/type/validate.mjs\");\n/* harmony import */ var _collectFields_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./collectFields.mjs */ \"../../../node_modules/graphql/execution/collectFields.mjs\");\n/* harmony import */ var _values_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\n\nconst collectSubfields = Object(_jsutils_memoize3_mjs__WEBPACK_IMPORTED_MODULE_6__[\"memoize3\"])((exeContext, returnType, fieldNodes) =>\n Object(_collectFields_mjs__WEBPACK_IMPORTED_MODULE_17__[\"collectSubfields\"])(\n exeContext.schema,\n exeContext.fragments,\n exeContext.variableValues,\n returnType,\n fieldNodes,\n ),\n);\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g `a`\n * 2) fragment \"spreads\" e.g. `...c`\n * 3) inline fragment \"spreads\" e.g. `...on Type { a }`\n */\n\n/**\n * Data that must be available at all points during query execution.\n *\n * Namely, schema of the type system that is currently executing,\n * and the fragments defined in the query document\n */\n\n/**\n * Implements the \"Executing requests\" section of the GraphQL specification.\n *\n * Returns either a synchronous ExecutionResult (if all encountered resolvers\n * are synchronous), or a Promise of an ExecutionResult that will eventually be\n * resolved and never rejected.\n *\n * If the arguments to this function do not result in a legal execution context,\n * a GraphQLError will be thrown immediately explaining the invalid input.\n */\nfunction execute(args) {\n // Temporary for v15 to v16 migration. Remove in v17\n arguments.length < 2 ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n );\n const { schema, document, variableValues, rootValue } = args; // If arguments are missing or incorrect, throw an error.\n\n assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n\n const exeContext = buildExecutionContext(args); // Return early errors if execution context failed.\n\n if (!('schema' in exeContext)) {\n return {\n errors: exeContext,\n };\n } // Return a Promise that will eventually resolve to the data described by\n // The \"Response\" section of the GraphQL specification.\n //\n // If errors are encountered while executing a GraphQL field, only that\n // field and its descendants will be omitted, and sibling fields will still\n // be executed. An execution which encounters errors will still result in a\n // resolved Promise.\n //\n // Errors from sub-fields of a NonNull type may propagate to the top level,\n // at which point we still log the error and null the parent field, which\n // in this case is the entire response.\n\n try {\n const { operation } = exeContext;\n const result = executeOperation(exeContext, operation, rootValue);\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isPromise\"])(result)) {\n return result.then(\n (data) => buildResponse(data, exeContext.errors),\n (error) => {\n exeContext.errors.push(error);\n return buildResponse(null, exeContext.errors);\n },\n );\n }\n\n return buildResponse(result, exeContext.errors);\n } catch (error) {\n exeContext.errors.push(error);\n return buildResponse(null, exeContext.errors);\n }\n}\n/**\n * Also implements the \"Executing requests\" section of the GraphQL specification.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nfunction executeSync(args) {\n const result = execute(args); // Assert that the execution was synchronous.\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isPromise\"])(result)) {\n throw new Error('GraphQL execution failed to complete synchronously.');\n }\n\n return result;\n}\n/**\n * Given a completed execution context and data, build the `{ errors, data }`\n * response defined by the \"Response\" section of the GraphQL specification.\n */\n\nfunction buildResponse(data, errors) {\n return errors.length === 0\n ? {\n data,\n }\n : {\n errors,\n data,\n };\n}\n/**\n * Essential assertions before executing to provide developer feedback for\n * improper use of the GraphQL library.\n *\n * @internal\n */\n\nfunction assertValidExecutionArguments(\n schema,\n document,\n rawVariableValues,\n) {\n document || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(false, 'Must provide document.'); // If the schema used for execution is invalid, throw an error.\n\n Object(_type_validate_mjs__WEBPACK_IMPORTED_MODULE_16__[\"assertValidSchema\"])(schema); // Variables, if provided, must be an object.\n\n rawVariableValues == null ||\n Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectLike\"])(rawVariableValues) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.',\n );\n}\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n *\n * @internal\n */\n\nfunction buildExecutionContext(args) {\n var _definition$name, _operation$variableDe;\n\n const {\n schema,\n document,\n rootValue,\n contextValue,\n variableValues: rawVariableValues,\n operationName,\n fieldResolver,\n typeResolver,\n subscribeFieldResolver,\n } = args;\n let operation;\n const fragments = Object.create(null);\n\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_13__[\"Kind\"].OPERATION_DEFINITION:\n if (operationName == null) {\n if (operation !== undefined) {\n return [\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\n 'Must provide operation name if query contains multiple operations.',\n ),\n ];\n }\n\n operation = definition;\n } else if (\n ((_definition$name = definition.name) === null ||\n _definition$name === void 0\n ? void 0\n : _definition$name.value) === operationName\n ) {\n operation = definition;\n }\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_13__[\"Kind\"].FRAGMENT_DEFINITION:\n fragments[definition.name.value] = definition;\n break;\n\n default: // ignore non-executable definitions\n }\n }\n\n if (!operation) {\n if (operationName != null) {\n return [new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](`Unknown operation named \"${operationName}\".`)];\n }\n\n return [new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"]('Must provide an operation.')];\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const variableDefinitions =\n (_operation$variableDe = operation.variableDefinitions) !== null &&\n _operation$variableDe !== void 0\n ? _operation$variableDe\n : [];\n const coercedVariableValues = Object(_values_mjs__WEBPACK_IMPORTED_MODULE_18__[\"getVariableValues\"])(\n schema,\n variableDefinitions,\n rawVariableValues !== null && rawVariableValues !== void 0\n ? rawVariableValues\n : {},\n {\n maxErrors: 50,\n },\n );\n\n if (coercedVariableValues.errors) {\n return coercedVariableValues.errors;\n }\n\n return {\n schema,\n fragments,\n rootValue,\n contextValue,\n operation,\n variableValues: coercedVariableValues.coerced,\n fieldResolver:\n fieldResolver !== null && fieldResolver !== void 0\n ? fieldResolver\n : defaultFieldResolver,\n typeResolver:\n typeResolver !== null && typeResolver !== void 0\n ? typeResolver\n : defaultTypeResolver,\n subscribeFieldResolver:\n subscribeFieldResolver !== null && subscribeFieldResolver !== void 0\n ? subscribeFieldResolver\n : defaultFieldResolver,\n errors: [],\n };\n}\n/**\n * Implements the \"Executing operations\" section of the spec.\n */\n\nfunction executeOperation(exeContext, operation, rootValue) {\n const rootType = exeContext.schema.getRootType(operation.operation);\n\n if (rootType == null) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\n `Schema is not configured to execute ${operation.operation} operation.`,\n {\n nodes: operation,\n },\n );\n }\n\n const rootFields = Object(_collectFields_mjs__WEBPACK_IMPORTED_MODULE_17__[\"collectFields\"])(\n exeContext.schema,\n exeContext.fragments,\n exeContext.variableValues,\n rootType,\n operation.selectionSet,\n );\n const path = undefined;\n\n switch (operation.operation) {\n case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_12__[\"OperationTypeNode\"].QUERY:\n return executeFields(exeContext, rootType, rootValue, path, rootFields);\n\n case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_12__[\"OperationTypeNode\"].MUTATION:\n return executeFieldsSerially(\n exeContext,\n rootType,\n rootValue,\n path,\n rootFields,\n );\n\n case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_12__[\"OperationTypeNode\"].SUBSCRIPTION:\n // TODO: deprecate `subscribe` and move all logic here\n // Temporary solution until we finish merging execute and subscribe together\n return executeFields(exeContext, rootType, rootValue, path, rootFields);\n }\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that must be executed serially.\n */\n\nfunction executeFieldsSerially(\n exeContext,\n parentType,\n sourceValue,\n path,\n fields,\n) {\n return Object(_jsutils_promiseReduce_mjs__WEBPACK_IMPORTED_MODULE_9__[\"promiseReduce\"])(\n fields.entries(),\n (results, [responseName, fieldNodes]) => {\n const fieldPath = Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_7__[\"addPath\"])(path, responseName, parentType.name);\n const result = executeField(\n exeContext,\n parentType,\n sourceValue,\n fieldNodes,\n fieldPath,\n );\n\n if (result === undefined) {\n return results;\n }\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isPromise\"])(result)) {\n return result.then((resolvedResult) => {\n results[responseName] = resolvedResult;\n return results;\n });\n }\n\n results[responseName] = result;\n return results;\n },\n Object.create(null),\n );\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that may be executed in parallel.\n */\n\nfunction executeFields(exeContext, parentType, sourceValue, path, fields) {\n const results = Object.create(null);\n let containsPromise = false;\n\n for (const [responseName, fieldNodes] of fields.entries()) {\n const fieldPath = Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_7__[\"addPath\"])(path, responseName, parentType.name);\n const result = executeField(\n exeContext,\n parentType,\n sourceValue,\n fieldNodes,\n fieldPath,\n );\n\n if (result !== undefined) {\n results[responseName] = result;\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isPromise\"])(result)) {\n containsPromise = true;\n }\n }\n } // If there are no promises, we can just return the object\n\n if (!containsPromise) {\n return results;\n } // Otherwise, results is a map from field name to the result of resolving that\n // field, which is possibly a promise. Return a promise that will return this\n // same map, but with any promises replaced with the values they resolved to.\n\n return Object(_jsutils_promiseForObject_mjs__WEBPACK_IMPORTED_MODULE_8__[\"promiseForObject\"])(results);\n}\n/**\n * Implements the \"Executing fields\" section of the spec\n * In particular, this function figures out the value that the field returns by\n * calling its resolve function, then calls completeValue to complete promises,\n * serialize scalars, or execute the sub-selection-set for objects.\n */\n\nfunction executeField(exeContext, parentType, source, fieldNodes, path) {\n var _fieldDef$resolve;\n\n const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]);\n\n if (!fieldDef) {\n return;\n }\n\n const returnType = fieldDef.type;\n const resolveFn =\n (_fieldDef$resolve = fieldDef.resolve) !== null &&\n _fieldDef$resolve !== void 0\n ? _fieldDef$resolve\n : exeContext.fieldResolver;\n const info = buildResolveInfo(\n exeContext,\n fieldDef,\n fieldNodes,\n parentType,\n path,\n ); // Get the resolve function, regardless of if its result is normal or abrupt (error).\n\n try {\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n // TODO: find a way to memoize, in case this field is within a List type.\n const args = Object(_values_mjs__WEBPACK_IMPORTED_MODULE_18__[\"getArgumentValues\"])(\n fieldDef,\n fieldNodes[0],\n exeContext.variableValues,\n ); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n const contextValue = exeContext.contextValue;\n const result = resolveFn(source, args, contextValue, info);\n let completed;\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isPromise\"])(result)) {\n completed = result.then((resolved) =>\n completeValue(exeContext, returnType, fieldNodes, info, path, resolved),\n );\n } else {\n completed = completeValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n }\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isPromise\"])(completed)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n return completed.then(undefined, (rawError) => {\n const error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_11__[\"locatedError\"])(rawError, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_7__[\"pathToArray\"])(path));\n return handleFieldError(error, returnType, exeContext);\n });\n }\n\n return completed;\n } catch (rawError) {\n const error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_11__[\"locatedError\"])(rawError, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_7__[\"pathToArray\"])(path));\n return handleFieldError(error, returnType, exeContext);\n }\n}\n/**\n * @internal\n */\n\nfunction buildResolveInfo(\n exeContext,\n fieldDef,\n fieldNodes,\n parentType,\n path,\n) {\n // The resolve function's optional fourth argument is a collection of\n // information about the current execution state.\n return {\n fieldName: fieldDef.name,\n fieldNodes,\n returnType: fieldDef.type,\n parentType,\n path,\n schema: exeContext.schema,\n fragments: exeContext.fragments,\n rootValue: exeContext.rootValue,\n operation: exeContext.operation,\n variableValues: exeContext.variableValues,\n };\n}\n\nfunction handleFieldError(error, returnType, exeContext) {\n // If the field type is non-nullable, then it is resolved without any\n // protection from errors, however it still properly locates the error.\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__[\"isNonNullType\"])(returnType)) {\n throw error;\n } // Otherwise, error protection is applied, logging the error and resolving\n // a null value for this field if one is encountered.\n\n exeContext.errors.push(error);\n return null;\n}\n/**\n * Implements the instructions for completeValue as defined in the\n * \"Value Completion\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `serialize` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by executing all sub-selections.\n */\n\nfunction completeValue(exeContext, returnType, fieldNodes, info, path, result) {\n // If result is an Error, throw a located error.\n if (result instanceof Error) {\n throw result;\n } // If field type is NonNull, complete for inner type, and throw field error\n // if result is null.\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__[\"isNonNullType\"])(returnType)) {\n const completed = completeValue(\n exeContext,\n returnType.ofType,\n fieldNodes,\n info,\n path,\n result,\n );\n\n if (completed === null) {\n throw new Error(\n `Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`,\n );\n }\n\n return completed;\n } // If result value is null or undefined then return null.\n\n if (result == null) {\n return null;\n } // If field type is List, complete each item in the list with the inner type\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__[\"isListType\"])(returnType)) {\n return completeListValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n } // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n // returning null if serialization is not possible.\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__[\"isLeafType\"])(returnType)) {\n return completeLeafValue(returnType, result);\n } // If field type is an abstract type, Interface or Union, determine the\n // runtime Object type and complete for that type.\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__[\"isAbstractType\"])(returnType)) {\n return completeAbstractValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n } // If field type is Object, execute and complete all sub-selections.\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__[\"isObjectType\"])(returnType)) {\n return completeObjectValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n }\n /* c8 ignore next 6 */\n // Not reachable, all possible output types have been considered.\n\n false ||\n Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__[\"invariant\"])(\n false,\n 'Cannot complete value of unexpected output type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(returnType),\n );\n}\n/**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\n\nfunction completeListValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n if (!Object(_jsutils_isIterableObject_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isIterableObject\"])(result)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\n `Expected Iterable, but did not find one for field \"${info.parentType.name}.${info.fieldName}\".`,\n );\n } // This is specified as a simple map, however we're optimizing the path\n // where the list contains no Promises by avoiding creating another Promise.\n\n const itemType = returnType.ofType;\n let containsPromise = false;\n const completedResults = Array.from(result, (item, index) => {\n // No need to modify the info object containing the path,\n // since from here on it is not ever accessed by resolver functions.\n const itemPath = Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_7__[\"addPath\"])(path, index, undefined);\n\n try {\n let completedItem;\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isPromise\"])(item)) {\n completedItem = item.then((resolved) =>\n completeValue(\n exeContext,\n itemType,\n fieldNodes,\n info,\n itemPath,\n resolved,\n ),\n );\n } else {\n completedItem = completeValue(\n exeContext,\n itemType,\n fieldNodes,\n info,\n itemPath,\n item,\n );\n }\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isPromise\"])(completedItem)) {\n containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n\n return completedItem.then(undefined, (rawError) => {\n const error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_11__[\"locatedError\"])(\n rawError,\n fieldNodes,\n Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_7__[\"pathToArray\"])(itemPath),\n );\n return handleFieldError(error, itemType, exeContext);\n });\n }\n\n return completedItem;\n } catch (rawError) {\n const error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_11__[\"locatedError\"])(rawError, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_7__[\"pathToArray\"])(itemPath));\n return handleFieldError(error, itemType, exeContext);\n }\n });\n return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\n\nfunction completeLeafValue(returnType, result) {\n const serializedResult = returnType.serialize(result);\n\n if (serializedResult == null) {\n throw new Error(\n `Expected \\`${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(returnType)}.serialize(${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(result)})\\` to ` +\n `return non-nullable value, returned: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(serializedResult)}`,\n );\n }\n\n return serializedResult;\n}\n/**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\n\nfunction completeAbstractValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n var _returnType$resolveTy;\n\n const resolveTypeFn =\n (_returnType$resolveTy = returnType.resolveType) !== null &&\n _returnType$resolveTy !== void 0\n ? _returnType$resolveTy\n : exeContext.typeResolver;\n const contextValue = exeContext.contextValue;\n const runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isPromise\"])(runtimeType)) {\n return runtimeType.then((resolvedRuntimeType) =>\n completeObjectValue(\n exeContext,\n ensureValidRuntimeType(\n resolvedRuntimeType,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n ),\n fieldNodes,\n info,\n path,\n result,\n ),\n );\n }\n\n return completeObjectValue(\n exeContext,\n ensureValidRuntimeType(\n runtimeType,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n ),\n fieldNodes,\n info,\n path,\n result,\n );\n}\n\nfunction ensureValidRuntimeType(\n runtimeTypeName,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n) {\n if (runtimeTypeName == null) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\n `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\". Either the \"${returnType.name}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`,\n fieldNodes,\n );\n } // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType`\n // TODO: remove in 17.0.0 release\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__[\"isObjectType\"])(runtimeTypeName)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\n 'Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.',\n );\n }\n\n if (typeof runtimeTypeName !== 'string') {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\n `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\" with ` +\n `value ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(result)}, received \"${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(runtimeTypeName)}\".`,\n );\n }\n\n const runtimeType = exeContext.schema.getType(runtimeTypeName);\n\n if (runtimeType == null) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\n `Abstract type \"${returnType.name}\" was resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__[\"isObjectType\"])(runtimeType)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\n `Abstract type \"${returnType.name}\" was resolved to a non-object type \"${runtimeTypeName}\".`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n if (!exeContext.schema.isSubType(returnType, runtimeType)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\n `Runtime Object type \"${runtimeType.name}\" is not a possible type for \"${returnType.name}\".`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n return runtimeType;\n}\n/**\n * Complete an Object value by executing all sub-selections.\n */\n\nfunction completeObjectValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n // Collect sub-fields to execute to complete this value.\n const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); // If there is an isTypeOf predicate function, call it with the\n // current result. If isTypeOf returns false, then raise an error rather\n // than continuing execution.\n\n if (returnType.isTypeOf) {\n const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isPromise\"])(isTypeOf)) {\n return isTypeOf.then((resolvedIsTypeOf) => {\n if (!resolvedIsTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n\n return executeFields(\n exeContext,\n returnType,\n result,\n path,\n subFieldNodes,\n );\n });\n }\n\n if (!isTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n }\n\n return executeFields(exeContext, returnType, result, path, subFieldNodes);\n}\n\nfunction invalidReturnTypeError(returnType, result, fieldNodes) {\n return new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\n `Expected value of type \"${returnType.name}\" but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(result)}.`,\n {\n nodes: fieldNodes,\n },\n );\n}\n/**\n * If a resolveType function is not given, then a default resolve behavior is\n * used which attempts two strategies:\n *\n * First, See if the provided value has a `__typename` field defined, if so, use\n * that value as name of the resolved type.\n *\n * Otherwise, test each possible type for the abstract type by calling\n * isTypeOf for the object being coerced, returning the first type that matches.\n */\n\nconst defaultTypeResolver = function (\n value,\n contextValue,\n info,\n abstractType,\n) {\n // First, look for `__typename`.\n if (Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectLike\"])(value) && typeof value.__typename === 'string') {\n return value.__typename;\n } // Otherwise, test each possible type.\n\n const possibleTypes = info.schema.getPossibleTypes(abstractType);\n const promisedIsTypeOfResults = [];\n\n for (let i = 0; i < possibleTypes.length; i++) {\n const type = possibleTypes[i];\n\n if (type.isTypeOf) {\n const isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isPromise\"])(isTypeOfResult)) {\n promisedIsTypeOfResults[i] = isTypeOfResult;\n } else if (isTypeOfResult) {\n return type.name;\n }\n }\n }\n\n if (promisedIsTypeOfResults.length) {\n return Promise.all(promisedIsTypeOfResults).then((isTypeOfResults) => {\n for (let i = 0; i < isTypeOfResults.length; i++) {\n if (isTypeOfResults[i]) {\n return possibleTypes[i].name;\n }\n }\n });\n }\n};\n/**\n * If a resolve function is not given, then a default resolve behavior is used\n * which takes the property of the source object of the same name as the field\n * and returns it as the result, or if it's a function, returns the result\n * of calling that function while passing along args and context value.\n */\n\nconst defaultFieldResolver = function (\n source,\n args,\n contextValue,\n info,\n) {\n // ensure source is a value for which property access is acceptable.\n if (Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectLike\"])(source) || typeof source === 'function') {\n const property = source[info.fieldName];\n\n if (typeof property === 'function') {\n return source[info.fieldName](args, contextValue, info);\n }\n\n return property;\n }\n};\n/**\n * This method looks up the field on the given type definition.\n * It has special casing for the three introspection fields,\n * __schema, __type and __typename. __typename is special because\n * it can always be queried as a field, even in situations where no\n * other fields are allowed, like on a Union. __schema and __type\n * could get automatically added to the query type, but that would\n * require mutating type definitions, which would cause issues.\n *\n * @internal\n */\n\nfunction getFieldDef(schema, parentType, fieldNode) {\n const fieldName = fieldNode.name.value;\n\n if (\n fieldName === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_15__[\"SchemaMetaFieldDef\"].name &&\n schema.getQueryType() === parentType\n ) {\n return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_15__[\"SchemaMetaFieldDef\"];\n } else if (\n fieldName === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_15__[\"TypeMetaFieldDef\"].name &&\n schema.getQueryType() === parentType\n ) {\n return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_15__[\"TypeMetaFieldDef\"];\n } else if (fieldName === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_15__[\"TypeNameMetaFieldDef\"].name) {\n return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_15__[\"TypeNameMetaFieldDef\"];\n }\n\n return parentType.getFields()[fieldName];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL2V4ZWN1dGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL2V4ZWN1dGUubWpzP2VkYTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGV2QXNzZXJ0IH0gZnJvbSAnLi4vanN1dGlscy9kZXZBc3NlcnQubWpzJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJy4uL2pzdXRpbHMvaW52YXJpYW50Lm1qcyc7XG5pbXBvcnQgeyBpc0l0ZXJhYmxlT2JqZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pc0l0ZXJhYmxlT2JqZWN0Lm1qcyc7XG5pbXBvcnQgeyBpc09iamVjdExpa2UgfSBmcm9tICcuLi9qc3V0aWxzL2lzT2JqZWN0TGlrZS5tanMnO1xuaW1wb3J0IHsgaXNQcm9taXNlIH0gZnJvbSAnLi4vanN1dGlscy9pc1Byb21pc2UubWpzJztcbmltcG9ydCB7IG1lbW9pemUzIH0gZnJvbSAnLi4vanN1dGlscy9tZW1vaXplMy5tanMnO1xuaW1wb3J0IHsgYWRkUGF0aCwgcGF0aFRvQXJyYXkgfSBmcm9tICcuLi9qc3V0aWxzL1BhdGgubWpzJztcbmltcG9ydCB7IHByb21pc2VGb3JPYmplY3QgfSBmcm9tICcuLi9qc3V0aWxzL3Byb21pc2VGb3JPYmplY3QubWpzJztcbmltcG9ydCB7IHByb21pc2VSZWR1Y2UgfSBmcm9tICcuLi9qc3V0aWxzL3Byb21pc2VSZWR1Y2UubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgbG9jYXRlZEVycm9yIH0gZnJvbSAnLi4vZXJyb3IvbG9jYXRlZEVycm9yLm1qcyc7XG5pbXBvcnQgeyBPcGVyYXRpb25UeXBlTm9kZSB9IGZyb20gJy4uL2xhbmd1YWdlL2FzdC5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQge1xuICBpc0Fic3RyYWN0VHlwZSxcbiAgaXNMZWFmVHlwZSxcbiAgaXNMaXN0VHlwZSxcbiAgaXNOb25OdWxsVHlwZSxcbiAgaXNPYmplY3RUeXBlLFxufSBmcm9tICcuLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7XG4gIFNjaGVtYU1ldGFGaWVsZERlZixcbiAgVHlwZU1ldGFGaWVsZERlZixcbiAgVHlwZU5hbWVNZXRhRmllbGREZWYsXG59IGZyb20gJy4uL3R5cGUvaW50cm9zcGVjdGlvbi5tanMnO1xuaW1wb3J0IHsgYXNzZXJ0VmFsaWRTY2hlbWEgfSBmcm9tICcuLi90eXBlL3ZhbGlkYXRlLm1qcyc7XG5pbXBvcnQge1xuICBjb2xsZWN0RmllbGRzLFxuICBjb2xsZWN0U3ViZmllbGRzIGFzIF9jb2xsZWN0U3ViZmllbGRzLFxufSBmcm9tICcuL2NvbGxlY3RGaWVsZHMubWpzJztcbmltcG9ydCB7IGdldEFyZ3VtZW50VmFsdWVzLCBnZXRWYXJpYWJsZVZhbHVlcyB9IGZyb20gJy4vdmFsdWVzLm1qcyc7XG4vKipcbiAqIEEgbWVtb2l6ZWQgY29sbGVjdGlvbiBvZiByZWxldmFudCBzdWJmaWVsZHMgd2l0aCByZWdhcmQgdG8gdGhlIHJldHVyblxuICogdHlwZS4gTWVtb2l6aW5nIGVuc3VyZXMgdGhlIHN1YmZpZWxkcyBhcmUgbm90IHJlcGVhdGVkbHkgY2FsY3VsYXRlZCwgd2hpY2hcbiAqIHNhdmVzIG92ZXJoZWFkIHdoZW4gcmVzb2x2aW5nIGxpc3RzIG9mIHZhbHVlcy5cbiAqL1xuXG5jb25zdCBjb2xsZWN0U3ViZmllbGRzID0gbWVtb2l6ZTMoKGV4ZUNvbnRleHQsIHJldHVyblR5cGUsIGZpZWxkTm9kZXMpID0+XG4gIF9jb2xsZWN0U3ViZmllbGRzKFxuICAgIGV4ZUNvbnRleHQuc2NoZW1hLFxuICAgIGV4ZUNvbnRleHQuZnJhZ21lbnRzLFxuICAgIGV4ZUNvbnRleHQudmFyaWFibGVWYWx1ZXMsXG4gICAgcmV0dXJuVHlwZSxcbiAgICBmaWVsZE5vZGVzLFxuICApLFxuKTtcbi8qKlxuICogVGVybWlub2xvZ3lcbiAqXG4gKiBcIkRlZmluaXRpb25zXCIgYXJlIHRoZSBnZW5lcmljIG5hbWUgZm9yIHRvcC1sZXZlbCBzdGF0ZW1lbnRzIGluIHRoZSBkb2N1bWVudC5cbiAqIEV4YW1wbGVzIG9mIHRoaXMgaW5jbHVkZTpcbiAqIDEpIE9wZXJhdGlvbnMgKHN1Y2ggYXMgYSBxdWVyeSlcbiAqIDIpIEZyYWdtZW50c1xuICpcbiAqIFwiT3BlcmF0aW9uc1wiIGFyZSBhIGdlbmVyaWMgbmFtZSBmb3IgcmVxdWVzdHMgaW4gdGhlIGRvY3VtZW50LlxuICogRXhhbXBsZXMgb2YgdGhpcyBpbmNsdWRlOlxuICogMSkgcXVlcnksXG4gKiAyKSBtdXRhdGlvblxuICpcbiAqIFwiU2VsZWN0aW9uc1wiIGFyZSB0aGUgZGVmaW5pdGlvbnMgdGhhdCBjYW4gYXBwZWFyIGxlZ2FsbHkgYW5kIGF0XG4gKiBzaW5nbGUgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBUaGVzZSBpbmNsdWRlOlxuICogMSkgZmllbGQgcmVmZXJlbmNlcyBlLmcgYGFgXG4gKiAyKSBmcmFnbWVudCBcInNwcmVhZHNcIiBlLmcuIGAuLi5jYFxuICogMykgaW5saW5lIGZyYWdtZW50IFwic3ByZWFkc1wiIGUuZy4gYC4uLm9uIFR5cGUgeyBhIH1gXG4gKi9cblxuLyoqXG4gKiBEYXRhIHRoYXQgbXVzdCBiZSBhdmFpbGFibGUgYXQgYWxsIHBvaW50cyBkdXJpbmcgcXVlcnkgZXhlY3V0aW9uLlxuICpcbiAqIE5hbWVseSwgc2NoZW1hIG9mIHRoZSB0eXBlIHN5c3RlbSB0aGF0IGlzIGN1cnJlbnRseSBleGVjdXRpbmcsXG4gKiBhbmQgdGhlIGZyYWdtZW50cyBkZWZpbmVkIGluIHRoZSBxdWVyeSBkb2N1bWVudFxuICovXG5cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgXCJFeGVjdXRpbmcgcmVxdWVzdHNcIiBzZWN0aW9uIG9mIHRoZSBHcmFwaFFMIHNwZWNpZmljYXRpb24uXG4gKlxuICogUmV0dXJucyBlaXRoZXIgYSBzeW5jaHJvbm91cyBFeGVjdXRpb25SZXN1bHQgKGlmIGFsbCBlbmNvdW50ZXJlZCByZXNvbHZlcnNcbiAqIGFyZSBzeW5jaHJvbm91cyksIG9yIGEgUHJvbWlzZSBvZiBhbiBFeGVjdXRpb25SZXN1bHQgdGhhdCB3aWxsIGV2ZW50dWFsbHkgYmVcbiAqIHJlc29sdmVkIGFuZCBuZXZlciByZWplY3RlZC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gZG8gbm90IHJlc3VsdCBpbiBhIGxlZ2FsIGV4ZWN1dGlvbiBjb250ZXh0LFxuICogYSBHcmFwaFFMRXJyb3Igd2lsbCBiZSB0aHJvd24gaW1tZWRpYXRlbHkgZXhwbGFpbmluZyB0aGUgaW52YWxpZCBpbnB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGUoYXJncykge1xuICAvLyBUZW1wb3JhcnkgZm9yIHYxNSB0byB2MTYgbWlncmF0aW9uLiBSZW1vdmUgaW4gdjE3XG4gIGFyZ3VtZW50cy5sZW5ndGggPCAyIHx8XG4gICAgZGV2QXNzZXJ0KFxuICAgICAgZmFsc2UsXG4gICAgICAnZ3JhcGhxbEAxNiBkcm9wcGVkIGxvbmctZGVwcmVjYXRlZCBzdXBwb3J0IGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50cywgcGxlYXNlIHBhc3MgYW4gb2JqZWN0IGluc3RlYWQuJyxcbiAgICApO1xuICBjb25zdCB7IHNjaGVtYSwgZG9jdW1lbnQsIHZhcmlhYmxlVmFsdWVzLCByb290VmFsdWUgfSA9IGFyZ3M7IC8vIElmIGFyZ3VtZW50cyBhcmUgbWlzc2luZyBvciBpbmNvcnJlY3QsIHRocm93IGFuIGVycm9yLlxuXG4gIGFzc2VydFZhbGlkRXhlY3V0aW9uQXJndW1lbnRzKHNjaGVtYSwgZG9jdW1lbnQsIHZhcmlhYmxlVmFsdWVzKTsgLy8gSWYgYSB2YWxpZCBleGVjdXRpb24gY29udGV4dCBjYW5ub3QgYmUgY3JlYXRlZCBkdWUgdG8gaW5jb3JyZWN0IGFyZ3VtZW50cyxcbiAgLy8gYSBcIlJlc3BvbnNlXCIgd2l0aCBvbmx5IGVycm9ycyBpcyByZXR1cm5lZC5cblxuICBjb25zdCBleGVDb250ZXh0ID0gYnVpbGRFeGVjdXRpb25Db250ZXh0KGFyZ3MpOyAvLyBSZXR1cm4gZWFybHkgZXJyb3JzIGlmIGV4ZWN1dGlvbiBjb250ZXh0IGZhaWxlZC5cblxuICBpZiAoISgnc2NoZW1hJyBpbiBleGVDb250ZXh0KSkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcnM6IGV4ZUNvbnRleHQsXG4gICAgfTtcbiAgfSAvLyBSZXR1cm4gYSBQcm9taXNlIHRoYXQgd2lsbCBldmVudHVhbGx5IHJlc29sdmUgdG8gdGhlIGRhdGEgZGVzY3JpYmVkIGJ5XG4gIC8vIFRoZSBcIlJlc3BvbnNlXCIgc2VjdGlvbiBvZiB0aGUgR3JhcGhRTCBzcGVjaWZpY2F0aW9uLlxuICAvL1xuICAvLyBJZiBlcnJvcnMgYXJlIGVuY291bnRlcmVkIHdoaWxlIGV4ZWN1dGluZyBhIEdyYXBoUUwgZmllbGQsIG9ubHkgdGhhdFxuICAvLyBmaWVsZCBhbmQgaXRzIGRlc2NlbmRhbnRzIHdpbGwgYmUgb21pdHRlZCwgYW5kIHNpYmxpbmcgZmllbGRzIHdpbGwgc3RpbGxcbiAgLy8gYmUgZXhlY3V0ZWQuIEFuIGV4ZWN1dGlvbiB3aGljaCBlbmNvdW50ZXJzIGVycm9ycyB3aWxsIHN0aWxsIHJlc3VsdCBpbiBhXG4gIC8vIHJlc29sdmVkIFByb21pc2UuXG4gIC8vXG4gIC8vIEVycm9ycyBmcm9tIHN1Yi1maWVsZHMgb2YgYSBOb25OdWxsIHR5cGUgbWF5IHByb3BhZ2F0ZSB0byB0aGUgdG9wIGxldmVsLFxuICAvLyBhdCB3aGljaCBwb2ludCB3ZSBzdGlsbCBsb2cgdGhlIGVycm9yIGFuZCBudWxsIHRoZSBwYXJlbnQgZmllbGQsIHdoaWNoXG4gIC8vIGluIHRoaXMgY2FzZSBpcyB0aGUgZW50aXJlIHJlc3BvbnNlLlxuXG4gIHRyeSB7XG4gICAgY29uc3QgeyBvcGVyYXRpb24gfSA9IGV4ZUNvbnRleHQ7XG4gICAgY29uc3QgcmVzdWx0ID0gZXhlY3V0ZU9wZXJhdGlvbihleGVDb250ZXh0LCBvcGVyYXRpb24sIHJvb3RWYWx1ZSk7XG5cbiAgICBpZiAoaXNQcm9taXNlKHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiByZXN1bHQudGhlbihcbiAgICAgICAgKGRhdGEpID0+IGJ1aWxkUmVzcG9uc2UoZGF0YSwgZXhlQ29udGV4dC5lcnJvcnMpLFxuICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICBleGVDb250ZXh0LmVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gYnVpbGRSZXNwb25zZShudWxsLCBleGVDb250ZXh0LmVycm9ycyk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBidWlsZFJlc3BvbnNlKHJlc3VsdCwgZXhlQ29udGV4dC5lcnJvcnMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGV4ZUNvbnRleHQuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgIHJldHVybiBidWlsZFJlc3BvbnNlKG51bGwsIGV4ZUNvbnRleHQuZXJyb3JzKTtcbiAgfVxufVxuLyoqXG4gKiBBbHNvIGltcGxlbWVudHMgdGhlIFwiRXhlY3V0aW5nIHJlcXVlc3RzXCIgc2VjdGlvbiBvZiB0aGUgR3JhcGhRTCBzcGVjaWZpY2F0aW9uLlxuICogSG93ZXZlciwgaXQgZ3VhcmFudGVlcyB0byBjb21wbGV0ZSBzeW5jaHJvbm91c2x5IChvciB0aHJvdyBhbiBlcnJvcikgYXNzdW1pbmdcbiAqIHRoYXQgYWxsIGZpZWxkIHJlc29sdmVycyBhcmUgYWxzbyBzeW5jaHJvbm91cy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZVN5bmMoYXJncykge1xuICBjb25zdCByZXN1bHQgPSBleGVjdXRlKGFyZ3MpOyAvLyBBc3NlcnQgdGhhdCB0aGUgZXhlY3V0aW9uIHdhcyBzeW5jaHJvbm91cy5cblxuICBpZiAoaXNQcm9taXNlKHJlc3VsdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dyYXBoUUwgZXhlY3V0aW9uIGZhaWxlZCB0byBjb21wbGV0ZSBzeW5jaHJvbm91c2x5LicpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogR2l2ZW4gYSBjb21wbGV0ZWQgZXhlY3V0aW9uIGNvbnRleHQgYW5kIGRhdGEsIGJ1aWxkIHRoZSBgeyBlcnJvcnMsIGRhdGEgfWBcbiAqIHJlc3BvbnNlIGRlZmluZWQgYnkgdGhlIFwiUmVzcG9uc2VcIiBzZWN0aW9uIG9mIHRoZSBHcmFwaFFMIHNwZWNpZmljYXRpb24uXG4gKi9cblxuZnVuY3Rpb24gYnVpbGRSZXNwb25zZShkYXRhLCBlcnJvcnMpIHtcbiAgcmV0dXJuIGVycm9ycy5sZW5ndGggPT09IDBcbiAgICA/IHtcbiAgICAgICAgZGF0YSxcbiAgICAgIH1cbiAgICA6IHtcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICBkYXRhLFxuICAgICAgfTtcbn1cbi8qKlxuICogRXNzZW50aWFsIGFzc2VydGlvbnMgYmVmb3JlIGV4ZWN1dGluZyB0byBwcm92aWRlIGRldmVsb3BlciBmZWVkYmFjayBmb3JcbiAqIGltcHJvcGVyIHVzZSBvZiB0aGUgR3JhcGhRTCBsaWJyYXJ5LlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRWYWxpZEV4ZWN1dGlvbkFyZ3VtZW50cyhcbiAgc2NoZW1hLFxuICBkb2N1bWVudCxcbiAgcmF3VmFyaWFibGVWYWx1ZXMsXG4pIHtcbiAgZG9jdW1lbnQgfHwgZGV2QXNzZXJ0KGZhbHNlLCAnTXVzdCBwcm92aWRlIGRvY3VtZW50LicpOyAvLyBJZiB0aGUgc2NoZW1hIHVzZWQgZm9yIGV4ZWN1dGlvbiBpcyBpbnZhbGlkLCB0aHJvdyBhbiBlcnJvci5cblxuICBhc3NlcnRWYWxpZFNjaGVtYShzY2hlbWEpOyAvLyBWYXJpYWJsZXMsIGlmIHByb3ZpZGVkLCBtdXN0IGJlIGFuIG9iamVjdC5cblxuICByYXdWYXJpYWJsZVZhbHVlcyA9PSBudWxsIHx8XG4gICAgaXNPYmplY3RMaWtlKHJhd1ZhcmlhYmxlVmFsdWVzKSB8fFxuICAgIGRldkFzc2VydChcbiAgICAgIGZhbHNlLFxuICAgICAgJ1ZhcmlhYmxlcyBtdXN0IGJlIHByb3ZpZGVkIGFzIGFuIE9iamVjdCB3aGVyZSBlYWNoIHByb3BlcnR5IGlzIGEgdmFyaWFibGUgdmFsdWUuIFBlcmhhcHMgbG9vayB0byBzZWUgaWYgYW4gdW5wYXJzZWQgSlNPTiBzdHJpbmcgd2FzIHByb3ZpZGVkLicsXG4gICAgKTtcbn1cbi8qKlxuICogQ29uc3RydWN0cyBhIEV4ZWN1dGlvbkNvbnRleHQgb2JqZWN0IGZyb20gdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG9cbiAqIGV4ZWN1dGUsIHdoaWNoIHdlIHdpbGwgcGFzcyB0aHJvdWdob3V0IHRoZSBvdGhlciBleGVjdXRpb24gbWV0aG9kcy5cbiAqXG4gKiBUaHJvd3MgYSBHcmFwaFFMRXJyb3IgaWYgYSB2YWxpZCBleGVjdXRpb24gY29udGV4dCBjYW5ub3QgYmUgY3JlYXRlZC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRFeGVjdXRpb25Db250ZXh0KGFyZ3MpIHtcbiAgdmFyIF9kZWZpbml0aW9uJG5hbWUsIF9vcGVyYXRpb24kdmFyaWFibGVEZTtcblxuICBjb25zdCB7XG4gICAgc2NoZW1hLFxuICAgIGRvY3VtZW50LFxuICAgIHJvb3RWYWx1ZSxcbiAgICBjb250ZXh0VmFsdWUsXG4gICAgdmFyaWFibGVWYWx1ZXM6IHJhd1ZhcmlhYmxlVmFsdWVzLFxuICAgIG9wZXJhdGlvbk5hbWUsXG4gICAgZmllbGRSZXNvbHZlcixcbiAgICB0eXBlUmVzb2x2ZXIsXG4gICAgc3Vic2NyaWJlRmllbGRSZXNvbHZlcixcbiAgfSA9IGFyZ3M7XG4gIGxldCBvcGVyYXRpb247XG4gIGNvbnN0IGZyYWdtZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yIChjb25zdCBkZWZpbml0aW9uIG9mIGRvY3VtZW50LmRlZmluaXRpb25zKSB7XG4gICAgc3dpdGNoIChkZWZpbml0aW9uLmtpbmQpIHtcbiAgICAgIGNhc2UgS2luZC5PUEVSQVRJT05fREVGSU5JVElPTjpcbiAgICAgICAgaWYgKG9wZXJhdGlvbk5hbWUgPT0gbnVsbCkge1xuICAgICAgICAgIGlmIChvcGVyYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgICAnTXVzdCBwcm92aWRlIG9wZXJhdGlvbiBuYW1lIGlmIHF1ZXJ5IGNvbnRhaW5zIG11bHRpcGxlIG9wZXJhdGlvbnMuJyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgb3BlcmF0aW9uID0gZGVmaW5pdGlvbjtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAoKF9kZWZpbml0aW9uJG5hbWUgPSBkZWZpbml0aW9uLm5hbWUpID09PSBudWxsIHx8XG4gICAgICAgICAgX2RlZmluaXRpb24kbmFtZSA9PT0gdm9pZCAwXG4gICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgOiBfZGVmaW5pdGlvbiRuYW1lLnZhbHVlKSA9PT0gb3BlcmF0aW9uTmFtZVxuICAgICAgICApIHtcbiAgICAgICAgICBvcGVyYXRpb24gPSBkZWZpbml0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OOlxuICAgICAgICBmcmFnbWVudHNbZGVmaW5pdGlvbi5uYW1lLnZhbHVlXSA9IGRlZmluaXRpb247XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OiAvLyBpZ25vcmUgbm9uLWV4ZWN1dGFibGUgZGVmaW5pdGlvbnNcbiAgICB9XG4gIH1cblxuICBpZiAoIW9wZXJhdGlvbikge1xuICAgIGlmIChvcGVyYXRpb25OYW1lICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBbbmV3IEdyYXBoUUxFcnJvcihgVW5rbm93biBvcGVyYXRpb24gbmFtZWQgXCIke29wZXJhdGlvbk5hbWV9XCIuYCldO1xuICAgIH1cblxuICAgIHJldHVybiBbbmV3IEdyYXBoUUxFcnJvcignTXVzdCBwcm92aWRlIGFuIG9wZXJhdGlvbi4nKV07XG4gIH0gLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcblxuICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuXG4gIGNvbnN0IHZhcmlhYmxlRGVmaW5pdGlvbnMgPVxuICAgIChfb3BlcmF0aW9uJHZhcmlhYmxlRGUgPSBvcGVyYXRpb24udmFyaWFibGVEZWZpbml0aW9ucykgIT09IG51bGwgJiZcbiAgICBfb3BlcmF0aW9uJHZhcmlhYmxlRGUgIT09IHZvaWQgMFxuICAgICAgPyBfb3BlcmF0aW9uJHZhcmlhYmxlRGVcbiAgICAgIDogW107XG4gIGNvbnN0IGNvZXJjZWRWYXJpYWJsZVZhbHVlcyA9IGdldFZhcmlhYmxlVmFsdWVzKFxuICAgIHNjaGVtYSxcbiAgICB2YXJpYWJsZURlZmluaXRpb25zLFxuICAgIHJhd1ZhcmlhYmxlVmFsdWVzICE9PSBudWxsICYmIHJhd1ZhcmlhYmxlVmFsdWVzICE9PSB2b2lkIDBcbiAgICAgID8gcmF3VmFyaWFibGVWYWx1ZXNcbiAgICAgIDoge30sXG4gICAge1xuICAgICAgbWF4RXJyb3JzOiA1MCxcbiAgICB9LFxuICApO1xuXG4gIGlmIChjb2VyY2VkVmFyaWFibGVWYWx1ZXMuZXJyb3JzKSB7XG4gICAgcmV0dXJuIGNvZXJjZWRWYXJpYWJsZVZhbHVlcy5lcnJvcnM7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNjaGVtYSxcbiAgICBmcmFnbWVudHMsXG4gICAgcm9vdFZhbHVlLFxuICAgIGNvbnRleHRWYWx1ZSxcbiAgICBvcGVyYXRpb24sXG4gICAgdmFyaWFibGVWYWx1ZXM6IGNvZXJjZWRWYXJpYWJsZVZhbHVlcy5jb2VyY2VkLFxuICAgIGZpZWxkUmVzb2x2ZXI6XG4gICAgICBmaWVsZFJlc29sdmVyICE9PSBudWxsICYmIGZpZWxkUmVzb2x2ZXIgIT09IHZvaWQgMFxuICAgICAgICA/IGZpZWxkUmVzb2x2ZXJcbiAgICAgICAgOiBkZWZhdWx0RmllbGRSZXNvbHZlcixcbiAgICB0eXBlUmVzb2x2ZXI6XG4gICAgICB0eXBlUmVzb2x2ZXIgIT09IG51bGwgJiYgdHlwZVJlc29sdmVyICE9PSB2b2lkIDBcbiAgICAgICAgPyB0eXBlUmVzb2x2ZXJcbiAgICAgICAgOiBkZWZhdWx0VHlwZVJlc29sdmVyLFxuICAgIHN1YnNjcmliZUZpZWxkUmVzb2x2ZXI6XG4gICAgICBzdWJzY3JpYmVGaWVsZFJlc29sdmVyICE9PSBudWxsICYmIHN1YnNjcmliZUZpZWxkUmVzb2x2ZXIgIT09IHZvaWQgMFxuICAgICAgICA/IHN1YnNjcmliZUZpZWxkUmVzb2x2ZXJcbiAgICAgICAgOiBkZWZhdWx0RmllbGRSZXNvbHZlcixcbiAgICBlcnJvcnM6IFtdLFxuICB9O1xufVxuLyoqXG4gKiBJbXBsZW1lbnRzIHRoZSBcIkV4ZWN1dGluZyBvcGVyYXRpb25zXCIgc2VjdGlvbiBvZiB0aGUgc3BlYy5cbiAqL1xuXG5mdW5jdGlvbiBleGVjdXRlT3BlcmF0aW9uKGV4ZUNvbnRleHQsIG9wZXJhdGlvbiwgcm9vdFZhbHVlKSB7XG4gIGNvbnN0IHJvb3RUeXBlID0gZXhlQ29udGV4dC5zY2hlbWEuZ2V0Um9vdFR5cGUob3BlcmF0aW9uLm9wZXJhdGlvbik7XG5cbiAgaWYgKHJvb3RUeXBlID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgYFNjaGVtYSBpcyBub3QgY29uZmlndXJlZCB0byBleGVjdXRlICR7b3BlcmF0aW9uLm9wZXJhdGlvbn0gb3BlcmF0aW9uLmAsXG4gICAgICB7XG4gICAgICAgIG5vZGVzOiBvcGVyYXRpb24sXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBjb25zdCByb290RmllbGRzID0gY29sbGVjdEZpZWxkcyhcbiAgICBleGVDb250ZXh0LnNjaGVtYSxcbiAgICBleGVDb250ZXh0LmZyYWdtZW50cyxcbiAgICBleGVDb250ZXh0LnZhcmlhYmxlVmFsdWVzLFxuICAgIHJvb3RUeXBlLFxuICAgIG9wZXJhdGlvbi5zZWxlY3Rpb25TZXQsXG4gICk7XG4gIGNvbnN0IHBhdGggPSB1bmRlZmluZWQ7XG5cbiAgc3dpdGNoIChvcGVyYXRpb24ub3BlcmF0aW9uKSB7XG4gICAgY2FzZSBPcGVyYXRpb25UeXBlTm9kZS5RVUVSWTpcbiAgICAgIHJldHVybiBleGVjdXRlRmllbGRzKGV4ZUNvbnRleHQsIHJvb3RUeXBlLCByb290VmFsdWUsIHBhdGgsIHJvb3RGaWVsZHMpO1xuXG4gICAgY2FzZSBPcGVyYXRpb25UeXBlTm9kZS5NVVRBVElPTjpcbiAgICAgIHJldHVybiBleGVjdXRlRmllbGRzU2VyaWFsbHkoXG4gICAgICAgIGV4ZUNvbnRleHQsXG4gICAgICAgIHJvb3RUeXBlLFxuICAgICAgICByb290VmFsdWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJvb3RGaWVsZHMsXG4gICAgICApO1xuXG4gICAgY2FzZSBPcGVyYXRpb25UeXBlTm9kZS5TVUJTQ1JJUFRJT046XG4gICAgICAvLyBUT0RPOiBkZXByZWNhdGUgYHN1YnNjcmliZWAgYW5kIG1vdmUgYWxsIGxvZ2ljIGhlcmVcbiAgICAgIC8vIFRlbXBvcmFyeSBzb2x1dGlvbiB1bnRpbCB3ZSBmaW5pc2ggbWVyZ2luZyBleGVjdXRlIGFuZCBzdWJzY3JpYmUgdG9nZXRoZXJcbiAgICAgIHJldHVybiBleGVjdXRlRmllbGRzKGV4ZUNvbnRleHQsIHJvb3RUeXBlLCByb290VmFsdWUsIHBhdGgsIHJvb3RGaWVsZHMpO1xuICB9XG59XG4vKipcbiAqIEltcGxlbWVudHMgdGhlIFwiRXhlY3V0aW5nIHNlbGVjdGlvbiBzZXRzXCIgc2VjdGlvbiBvZiB0aGUgc3BlY1xuICogZm9yIGZpZWxkcyB0aGF0IG11c3QgYmUgZXhlY3V0ZWQgc2VyaWFsbHkuXG4gKi9cblxuZnVuY3Rpb24gZXhlY3V0ZUZpZWxkc1NlcmlhbGx5KFxuICBleGVDb250ZXh0LFxuICBwYXJlbnRUeXBlLFxuICBzb3VyY2VWYWx1ZSxcbiAgcGF0aCxcbiAgZmllbGRzLFxuKSB7XG4gIHJldHVybiBwcm9taXNlUmVkdWNlKFxuICAgIGZpZWxkcy5lbnRyaWVzKCksXG4gICAgKHJlc3VsdHMsIFtyZXNwb25zZU5hbWUsIGZpZWxkTm9kZXNdKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZFBhdGggPSBhZGRQYXRoKHBhdGgsIHJlc3BvbnNlTmFtZSwgcGFyZW50VHlwZS5uYW1lKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVGaWVsZChcbiAgICAgICAgZXhlQ29udGV4dCxcbiAgICAgICAgcGFyZW50VHlwZSxcbiAgICAgICAgc291cmNlVmFsdWUsXG4gICAgICAgIGZpZWxkTm9kZXMsXG4gICAgICAgIGZpZWxkUGF0aCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH1cblxuICAgICAgaWYgKGlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQudGhlbigocmVzb2x2ZWRSZXN1bHQpID0+IHtcbiAgICAgICAgICByZXN1bHRzW3Jlc3BvbnNlTmFtZV0gPSByZXNvbHZlZFJlc3VsdDtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdHNbcmVzcG9uc2VOYW1lXSA9IHJlc3VsdDtcbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH0sXG4gICAgT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgKTtcbn1cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgXCJFeGVjdXRpbmcgc2VsZWN0aW9uIHNldHNcIiBzZWN0aW9uIG9mIHRoZSBzcGVjXG4gKiBmb3IgZmllbGRzIHRoYXQgbWF5IGJlIGV4ZWN1dGVkIGluIHBhcmFsbGVsLlxuICovXG5cbmZ1bmN0aW9uIGV4ZWN1dGVGaWVsZHMoZXhlQ29udGV4dCwgcGFyZW50VHlwZSwgc291cmNlVmFsdWUsIHBhdGgsIGZpZWxkcykge1xuICBjb25zdCByZXN1bHRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgbGV0IGNvbnRhaW5zUHJvbWlzZSA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgW3Jlc3BvbnNlTmFtZSwgZmllbGROb2Rlc10gb2YgZmllbGRzLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IGZpZWxkUGF0aCA9IGFkZFBhdGgocGF0aCwgcmVzcG9uc2VOYW1lLCBwYXJlbnRUeXBlLm5hbWUpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVGaWVsZChcbiAgICAgIGV4ZUNvbnRleHQsXG4gICAgICBwYXJlbnRUeXBlLFxuICAgICAgc291cmNlVmFsdWUsXG4gICAgICBmaWVsZE5vZGVzLFxuICAgICAgZmllbGRQYXRoLFxuICAgICk7XG5cbiAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdHNbcmVzcG9uc2VOYW1lXSA9IHJlc3VsdDtcblxuICAgICAgaWYgKGlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgICAgIGNvbnRhaW5zUHJvbWlzZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9IC8vIElmIHRoZXJlIGFyZSBubyBwcm9taXNlcywgd2UgY2FuIGp1c3QgcmV0dXJuIHRoZSBvYmplY3RcblxuICBpZiAoIWNvbnRhaW5zUHJvbWlzZSkge1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9IC8vIE90aGVyd2lzZSwgcmVzdWx0cyBpcyBhIG1hcCBmcm9tIGZpZWxkIG5hbWUgdG8gdGhlIHJlc3VsdCBvZiByZXNvbHZpbmcgdGhhdFxuICAvLyBmaWVsZCwgd2hpY2ggaXMgcG9zc2libHkgYSBwcm9taXNlLiBSZXR1cm4gYSBwcm9taXNlIHRoYXQgd2lsbCByZXR1cm4gdGhpc1xuICAvLyBzYW1lIG1hcCwgYnV0IHdpdGggYW55IHByb21pc2VzIHJlcGxhY2VkIHdpdGggdGhlIHZhbHVlcyB0aGV5IHJlc29sdmVkIHRvLlxuXG4gIHJldHVybiBwcm9taXNlRm9yT2JqZWN0KHJlc3VsdHMpO1xufVxuLyoqXG4gKiBJbXBsZW1lbnRzIHRoZSBcIkV4ZWN1dGluZyBmaWVsZHNcIiBzZWN0aW9uIG9mIHRoZSBzcGVjXG4gKiBJbiBwYXJ0aWN1bGFyLCB0aGlzIGZ1bmN0aW9uIGZpZ3VyZXMgb3V0IHRoZSB2YWx1ZSB0aGF0IHRoZSBmaWVsZCByZXR1cm5zIGJ5XG4gKiBjYWxsaW5nIGl0cyByZXNvbHZlIGZ1bmN0aW9uLCB0aGVuIGNhbGxzIGNvbXBsZXRlVmFsdWUgdG8gY29tcGxldGUgcHJvbWlzZXMsXG4gKiBzZXJpYWxpemUgc2NhbGFycywgb3IgZXhlY3V0ZSB0aGUgc3ViLXNlbGVjdGlvbi1zZXQgZm9yIG9iamVjdHMuXG4gKi9cblxuZnVuY3Rpb24gZXhlY3V0ZUZpZWxkKGV4ZUNvbnRleHQsIHBhcmVudFR5cGUsIHNvdXJjZSwgZmllbGROb2RlcywgcGF0aCkge1xuICB2YXIgX2ZpZWxkRGVmJHJlc29sdmU7XG5cbiAgY29uc3QgZmllbGREZWYgPSBnZXRGaWVsZERlZihleGVDb250ZXh0LnNjaGVtYSwgcGFyZW50VHlwZSwgZmllbGROb2Rlc1swXSk7XG5cbiAgaWYgKCFmaWVsZERlZikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHJldHVyblR5cGUgPSBmaWVsZERlZi50eXBlO1xuICBjb25zdCByZXNvbHZlRm4gPVxuICAgIChfZmllbGREZWYkcmVzb2x2ZSA9IGZpZWxkRGVmLnJlc29sdmUpICE9PSBudWxsICYmXG4gICAgX2ZpZWxkRGVmJHJlc29sdmUgIT09IHZvaWQgMFxuICAgICAgPyBfZmllbGREZWYkcmVzb2x2ZVxuICAgICAgOiBleGVDb250ZXh0LmZpZWxkUmVzb2x2ZXI7XG4gIGNvbnN0IGluZm8gPSBidWlsZFJlc29sdmVJbmZvKFxuICAgIGV4ZUNvbnRleHQsXG4gICAgZmllbGREZWYsXG4gICAgZmllbGROb2RlcyxcbiAgICBwYXJlbnRUeXBlLFxuICAgIHBhdGgsXG4gICk7IC8vIEdldCB0aGUgcmVzb2x2ZSBmdW5jdGlvbiwgcmVnYXJkbGVzcyBvZiBpZiBpdHMgcmVzdWx0IGlzIG5vcm1hbCBvciBhYnJ1cHQgKGVycm9yKS5cblxuICB0cnkge1xuICAgIC8vIEJ1aWxkIGEgSlMgb2JqZWN0IG9mIGFyZ3VtZW50cyBmcm9tIHRoZSBmaWVsZC5hcmd1bWVudHMgQVNULCB1c2luZyB0aGVcbiAgICAvLyB2YXJpYWJsZXMgc2NvcGUgdG8gZnVsZmlsbCBhbnkgdmFyaWFibGUgcmVmZXJlbmNlcy5cbiAgICAvLyBUT0RPOiBmaW5kIGEgd2F5IHRvIG1lbW9pemUsIGluIGNhc2UgdGhpcyBmaWVsZCBpcyB3aXRoaW4gYSBMaXN0IHR5cGUuXG4gICAgY29uc3QgYXJncyA9IGdldEFyZ3VtZW50VmFsdWVzKFxuICAgICAgZmllbGREZWYsXG4gICAgICBmaWVsZE5vZGVzWzBdLFxuICAgICAgZXhlQ29udGV4dC52YXJpYWJsZVZhbHVlcyxcbiAgICApOyAvLyBUaGUgcmVzb2x2ZSBmdW5jdGlvbidzIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlzIGEgY29udGV4dCB2YWx1ZSB0aGF0XG4gICAgLy8gaXMgcHJvdmlkZWQgdG8gZXZlcnkgcmVzb2x2ZSBmdW5jdGlvbiB3aXRoaW4gYW4gZXhlY3V0aW9uLiBJdCBpcyBjb21tb25seVxuICAgIC8vIHVzZWQgdG8gcmVwcmVzZW50IGFuIGF1dGhlbnRpY2F0ZWQgdXNlciwgb3IgcmVxdWVzdC1zcGVjaWZpYyBjYWNoZXMuXG5cbiAgICBjb25zdCBjb250ZXh0VmFsdWUgPSBleGVDb250ZXh0LmNvbnRleHRWYWx1ZTtcbiAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRm4oc291cmNlLCBhcmdzLCBjb250ZXh0VmFsdWUsIGluZm8pO1xuICAgIGxldCBjb21wbGV0ZWQ7XG5cbiAgICBpZiAoaXNQcm9taXNlKHJlc3VsdCkpIHtcbiAgICAgIGNvbXBsZXRlZCA9IHJlc3VsdC50aGVuKChyZXNvbHZlZCkgPT5cbiAgICAgICAgY29tcGxldGVWYWx1ZShleGVDb250ZXh0LCByZXR1cm5UeXBlLCBmaWVsZE5vZGVzLCBpbmZvLCBwYXRoLCByZXNvbHZlZCksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21wbGV0ZWQgPSBjb21wbGV0ZVZhbHVlKFxuICAgICAgICBleGVDb250ZXh0LFxuICAgICAgICByZXR1cm5UeXBlLFxuICAgICAgICBmaWVsZE5vZGVzLFxuICAgICAgICBpbmZvLFxuICAgICAgICBwYXRoLFxuICAgICAgICByZXN1bHQsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChpc1Byb21pc2UoY29tcGxldGVkKSkge1xuICAgICAgLy8gTm90ZTogd2UgZG9uJ3QgcmVseSBvbiBhIGBjYXRjaGAgbWV0aG9kLCBidXQgd2UgZG8gZXhwZWN0IFwidGhlbmFibGVcIlxuICAgICAgLy8gdG8gdGFrZSBhIHNlY29uZCBjYWxsYmFjayBmb3IgdGhlIGVycm9yIGNhc2UuXG4gICAgICByZXR1cm4gY29tcGxldGVkLnRoZW4odW5kZWZpbmVkLCAocmF3RXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBsb2NhdGVkRXJyb3IocmF3RXJyb3IsIGZpZWxkTm9kZXMsIHBhdGhUb0FycmF5KHBhdGgpKTtcbiAgICAgICAgcmV0dXJuIGhhbmRsZUZpZWxkRXJyb3IoZXJyb3IsIHJldHVyblR5cGUsIGV4ZUNvbnRleHQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBsZXRlZDtcbiAgfSBjYXRjaCAocmF3RXJyb3IpIHtcbiAgICBjb25zdCBlcnJvciA9IGxvY2F0ZWRFcnJvcihyYXdFcnJvciwgZmllbGROb2RlcywgcGF0aFRvQXJyYXkocGF0aCkpO1xuICAgIHJldHVybiBoYW5kbGVGaWVsZEVycm9yKGVycm9yLCByZXR1cm5UeXBlLCBleGVDb250ZXh0KTtcbiAgfVxufVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSZXNvbHZlSW5mbyhcbiAgZXhlQ29udGV4dCxcbiAgZmllbGREZWYsXG4gIGZpZWxkTm9kZXMsXG4gIHBhcmVudFR5cGUsXG4gIHBhdGgsXG4pIHtcbiAgLy8gVGhlIHJlc29sdmUgZnVuY3Rpb24ncyBvcHRpb25hbCBmb3VydGggYXJndW1lbnQgaXMgYSBjb2xsZWN0aW9uIG9mXG4gIC8vIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZS5cbiAgcmV0dXJuIHtcbiAgICBmaWVsZE5hbWU6IGZpZWxkRGVmLm5hbWUsXG4gICAgZmllbGROb2RlcyxcbiAgICByZXR1cm5UeXBlOiBmaWVsZERlZi50eXBlLFxuICAgIHBhcmVudFR5cGUsXG4gICAgcGF0aCxcbiAgICBzY2hlbWE6IGV4ZUNvbnRleHQuc2NoZW1hLFxuICAgIGZyYWdtZW50czogZXhlQ29udGV4dC5mcmFnbWVudHMsXG4gICAgcm9vdFZhbHVlOiBleGVDb250ZXh0LnJvb3RWYWx1ZSxcbiAgICBvcGVyYXRpb246IGV4ZUNvbnRleHQub3BlcmF0aW9uLFxuICAgIHZhcmlhYmxlVmFsdWVzOiBleGVDb250ZXh0LnZhcmlhYmxlVmFsdWVzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBoYW5kbGVGaWVsZEVycm9yKGVycm9yLCByZXR1cm5UeXBlLCBleGVDb250ZXh0KSB7XG4gIC8vIElmIHRoZSBmaWVsZCB0eXBlIGlzIG5vbi1udWxsYWJsZSwgdGhlbiBpdCBpcyByZXNvbHZlZCB3aXRob3V0IGFueVxuICAvLyBwcm90ZWN0aW9uIGZyb20gZXJyb3JzLCBob3dldmVyIGl0IHN0aWxsIHByb3Blcmx5IGxvY2F0ZXMgdGhlIGVycm9yLlxuICBpZiAoaXNOb25OdWxsVHlwZShyZXR1cm5UeXBlKSkge1xuICAgIHRocm93IGVycm9yO1xuICB9IC8vIE90aGVyd2lzZSwgZXJyb3IgcHJvdGVjdGlvbiBpcyBhcHBsaWVkLCBsb2dnaW5nIHRoZSBlcnJvciBhbmQgcmVzb2x2aW5nXG4gIC8vIGEgbnVsbCB2YWx1ZSBmb3IgdGhpcyBmaWVsZCBpZiBvbmUgaXMgZW5jb3VudGVyZWQuXG5cbiAgZXhlQ29udGV4dC5lcnJvcnMucHVzaChlcnJvcik7XG4gIHJldHVybiBudWxsO1xufVxuLyoqXG4gKiBJbXBsZW1lbnRzIHRoZSBpbnN0cnVjdGlvbnMgZm9yIGNvbXBsZXRlVmFsdWUgYXMgZGVmaW5lZCBpbiB0aGVcbiAqIFwiVmFsdWUgQ29tcGxldGlvblwiIHNlY3Rpb24gb2YgdGhlIHNwZWMuXG4gKlxuICogSWYgdGhlIGZpZWxkIHR5cGUgaXMgTm9uLU51bGwsIHRoZW4gdGhpcyByZWN1cnNpdmVseSBjb21wbGV0ZXMgdGhlIHZhbHVlXG4gKiBmb3IgdGhlIGlubmVyIHR5cGUuIEl0IHRocm93cyBhIGZpZWxkIGVycm9yIGlmIHRoYXQgY29tcGxldGlvbiByZXR1cm5zIG51bGwsXG4gKiBhcyBwZXIgdGhlIFwiTnVsbGFiaWxpdHlcIiBzZWN0aW9uIG9mIHRoZSBzcGVjLlxuICpcbiAqIElmIHRoZSBmaWVsZCB0eXBlIGlzIGEgTGlzdCwgdGhlbiB0aGlzIHJlY3Vyc2l2ZWx5IGNvbXBsZXRlcyB0aGUgdmFsdWVcbiAqIGZvciB0aGUgaW5uZXIgdHlwZSBvbiBlYWNoIGl0ZW0gaW4gdGhlIGxpc3QuXG4gKlxuICogSWYgdGhlIGZpZWxkIHR5cGUgaXMgYSBTY2FsYXIgb3IgRW51bSwgZW5zdXJlcyB0aGUgY29tcGxldGVkIHZhbHVlIGlzIGEgbGVnYWxcbiAqIHZhbHVlIG9mIHRoZSB0eXBlIGJ5IGNhbGxpbmcgdGhlIGBzZXJpYWxpemVgIG1ldGhvZCBvZiBHcmFwaFFMIHR5cGVcbiAqIGRlZmluaXRpb24uXG4gKlxuICogSWYgdGhlIGZpZWxkIGlzIGFuIGFic3RyYWN0IHR5cGUsIGRldGVybWluZSB0aGUgcnVudGltZSB0eXBlIG9mIHRoZSB2YWx1ZVxuICogYW5kIHRoZW4gY29tcGxldGUgYmFzZWQgb24gdGhhdCB0eXBlXG4gKlxuICogT3RoZXJ3aXNlLCB0aGUgZmllbGQgdHlwZSBleHBlY3RzIGEgc3ViLXNlbGVjdGlvbiBzZXQsIGFuZCB3aWxsIGNvbXBsZXRlIHRoZVxuICogdmFsdWUgYnkgZXhlY3V0aW5nIGFsbCBzdWItc2VsZWN0aW9ucy5cbiAqL1xuXG5mdW5jdGlvbiBjb21wbGV0ZVZhbHVlKGV4ZUNvbnRleHQsIHJldHVyblR5cGUsIGZpZWxkTm9kZXMsIGluZm8sIHBhdGgsIHJlc3VsdCkge1xuICAvLyBJZiByZXN1bHQgaXMgYW4gRXJyb3IsIHRocm93IGEgbG9jYXRlZCBlcnJvci5cbiAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgdGhyb3cgcmVzdWx0O1xuICB9IC8vIElmIGZpZWxkIHR5cGUgaXMgTm9uTnVsbCwgY29tcGxldGUgZm9yIGlubmVyIHR5cGUsIGFuZCB0aHJvdyBmaWVsZCBlcnJvclxuICAvLyBpZiByZXN1bHQgaXMgbnVsbC5cblxuICBpZiAoaXNOb25OdWxsVHlwZShyZXR1cm5UeXBlKSkge1xuICAgIGNvbnN0IGNvbXBsZXRlZCA9IGNvbXBsZXRlVmFsdWUoXG4gICAgICBleGVDb250ZXh0LFxuICAgICAgcmV0dXJuVHlwZS5vZlR5cGUsXG4gICAgICBmaWVsZE5vZGVzLFxuICAgICAgaW5mbyxcbiAgICAgIHBhdGgsXG4gICAgICByZXN1bHQsXG4gICAgKTtcblxuICAgIGlmIChjb21wbGV0ZWQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbm5vdCByZXR1cm4gbnVsbCBmb3Igbm9uLW51bGxhYmxlIGZpZWxkICR7aW5mby5wYXJlbnRUeXBlLm5hbWV9LiR7aW5mby5maWVsZE5hbWV9LmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBjb21wbGV0ZWQ7XG4gIH0gLy8gSWYgcmVzdWx0IHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkIHRoZW4gcmV0dXJuIG51bGwuXG5cbiAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gSWYgZmllbGQgdHlwZSBpcyBMaXN0LCBjb21wbGV0ZSBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgd2l0aCB0aGUgaW5uZXIgdHlwZVxuXG4gIGlmIChpc0xpc3RUeXBlKHJldHVyblR5cGUpKSB7XG4gICAgcmV0dXJuIGNvbXBsZXRlTGlzdFZhbHVlKFxuICAgICAgZXhlQ29udGV4dCxcbiAgICAgIHJldHVyblR5cGUsXG4gICAgICBmaWVsZE5vZGVzLFxuICAgICAgaW5mbyxcbiAgICAgIHBhdGgsXG4gICAgICByZXN1bHQsXG4gICAgKTtcbiAgfSAvLyBJZiBmaWVsZCB0eXBlIGlzIGEgbGVhZiB0eXBlLCBTY2FsYXIgb3IgRW51bSwgc2VyaWFsaXplIHRvIGEgdmFsaWQgdmFsdWUsXG4gIC8vIHJldHVybmluZyBudWxsIGlmIHNlcmlhbGl6YXRpb24gaXMgbm90IHBvc3NpYmxlLlxuXG4gIGlmIChpc0xlYWZUeXBlKHJldHVyblR5cGUpKSB7XG4gICAgcmV0dXJuIGNvbXBsZXRlTGVhZlZhbHVlKHJldHVyblR5cGUsIHJlc3VsdCk7XG4gIH0gLy8gSWYgZmllbGQgdHlwZSBpcyBhbiBhYnN0cmFjdCB0eXBlLCBJbnRlcmZhY2Ugb3IgVW5pb24sIGRldGVybWluZSB0aGVcbiAgLy8gcnVudGltZSBPYmplY3QgdHlwZSBhbmQgY29tcGxldGUgZm9yIHRoYXQgdHlwZS5cblxuICBpZiAoaXNBYnN0cmFjdFR5cGUocmV0dXJuVHlwZSkpIHtcbiAgICByZXR1cm4gY29tcGxldGVBYnN0cmFjdFZhbHVlKFxuICAgICAgZXhlQ29udGV4dCxcbiAgICAgIHJldHVyblR5cGUsXG4gICAgICBmaWVsZE5vZGVzLFxuICAgICAgaW5mbyxcbiAgICAgIHBhdGgsXG4gICAgICByZXN1bHQsXG4gICAgKTtcbiAgfSAvLyBJZiBmaWVsZCB0eXBlIGlzIE9iamVjdCwgZXhlY3V0ZSBhbmQgY29tcGxldGUgYWxsIHN1Yi1zZWxlY3Rpb25zLlxuXG4gIGlmIChpc09iamVjdFR5cGUocmV0dXJuVHlwZSkpIHtcbiAgICByZXR1cm4gY29tcGxldGVPYmplY3RWYWx1ZShcbiAgICAgIGV4ZUNvbnRleHQsXG4gICAgICByZXR1cm5UeXBlLFxuICAgICAgZmllbGROb2RlcyxcbiAgICAgIGluZm8sXG4gICAgICBwYXRoLFxuICAgICAgcmVzdWx0LFxuICAgICk7XG4gIH1cbiAgLyogYzggaWdub3JlIG5leHQgNiAqL1xuICAvLyBOb3QgcmVhY2hhYmxlLCBhbGwgcG9zc2libGUgb3V0cHV0IHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkLlxuXG4gIGZhbHNlIHx8XG4gICAgaW52YXJpYW50KFxuICAgICAgZmFsc2UsXG4gICAgICAnQ2Fubm90IGNvbXBsZXRlIHZhbHVlIG9mIHVuZXhwZWN0ZWQgb3V0cHV0IHR5cGU6ICcgKyBpbnNwZWN0KHJldHVyblR5cGUpLFxuICAgICk7XG59XG4vKipcbiAqIENvbXBsZXRlIGEgbGlzdCB2YWx1ZSBieSBjb21wbGV0aW5nIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCB3aXRoIHRoZVxuICogaW5uZXIgdHlwZVxuICovXG5cbmZ1bmN0aW9uIGNvbXBsZXRlTGlzdFZhbHVlKFxuICBleGVDb250ZXh0LFxuICByZXR1cm5UeXBlLFxuICBmaWVsZE5vZGVzLFxuICBpbmZvLFxuICBwYXRoLFxuICByZXN1bHQsXG4pIHtcbiAgaWYgKCFpc0l0ZXJhYmxlT2JqZWN0KHJlc3VsdCkpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgYEV4cGVjdGVkIEl0ZXJhYmxlLCBidXQgZGlkIG5vdCBmaW5kIG9uZSBmb3IgZmllbGQgXCIke2luZm8ucGFyZW50VHlwZS5uYW1lfS4ke2luZm8uZmllbGROYW1lfVwiLmAsXG4gICAgKTtcbiAgfSAvLyBUaGlzIGlzIHNwZWNpZmllZCBhcyBhIHNpbXBsZSBtYXAsIGhvd2V2ZXIgd2UncmUgb3B0aW1pemluZyB0aGUgcGF0aFxuICAvLyB3aGVyZSB0aGUgbGlzdCBjb250YWlucyBubyBQcm9taXNlcyBieSBhdm9pZGluZyBjcmVhdGluZyBhbm90aGVyIFByb21pc2UuXG5cbiAgY29uc3QgaXRlbVR5cGUgPSByZXR1cm5UeXBlLm9mVHlwZTtcbiAgbGV0IGNvbnRhaW5zUHJvbWlzZSA9IGZhbHNlO1xuICBjb25zdCBjb21wbGV0ZWRSZXN1bHRzID0gQXJyYXkuZnJvbShyZXN1bHQsIChpdGVtLCBpbmRleCkgPT4ge1xuICAgIC8vIE5vIG5lZWQgdG8gbW9kaWZ5IHRoZSBpbmZvIG9iamVjdCBjb250YWluaW5nIHRoZSBwYXRoLFxuICAgIC8vIHNpbmNlIGZyb20gaGVyZSBvbiBpdCBpcyBub3QgZXZlciBhY2Nlc3NlZCBieSByZXNvbHZlciBmdW5jdGlvbnMuXG4gICAgY29uc3QgaXRlbVBhdGggPSBhZGRQYXRoKHBhdGgsIGluZGV4LCB1bmRlZmluZWQpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBjb21wbGV0ZWRJdGVtO1xuXG4gICAgICBpZiAoaXNQcm9taXNlKGl0ZW0pKSB7XG4gICAgICAgIGNvbXBsZXRlZEl0ZW0gPSBpdGVtLnRoZW4oKHJlc29sdmVkKSA9PlxuICAgICAgICAgIGNvbXBsZXRlVmFsdWUoXG4gICAgICAgICAgICBleGVDb250ZXh0LFxuICAgICAgICAgICAgaXRlbVR5cGUsXG4gICAgICAgICAgICBmaWVsZE5vZGVzLFxuICAgICAgICAgICAgaW5mbyxcbiAgICAgICAgICAgIGl0ZW1QYXRoLFxuICAgICAgICAgICAgcmVzb2x2ZWQsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBsZXRlZEl0ZW0gPSBjb21wbGV0ZVZhbHVlKFxuICAgICAgICAgIGV4ZUNvbnRleHQsXG4gICAgICAgICAgaXRlbVR5cGUsXG4gICAgICAgICAgZmllbGROb2RlcyxcbiAgICAgICAgICBpbmZvLFxuICAgICAgICAgIGl0ZW1QYXRoLFxuICAgICAgICAgIGl0ZW0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1Byb21pc2UoY29tcGxldGVkSXRlbSkpIHtcbiAgICAgICAgY29udGFpbnNQcm9taXNlID0gdHJ1ZTsgLy8gTm90ZTogd2UgZG9uJ3QgcmVseSBvbiBhIGBjYXRjaGAgbWV0aG9kLCBidXQgd2UgZG8gZXhwZWN0IFwidGhlbmFibGVcIlxuICAgICAgICAvLyB0byB0YWtlIGEgc2Vjb25kIGNhbGxiYWNrIGZvciB0aGUgZXJyb3IgY2FzZS5cblxuICAgICAgICByZXR1cm4gY29tcGxldGVkSXRlbS50aGVuKHVuZGVmaW5lZCwgKHJhd0Vycm9yKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBsb2NhdGVkRXJyb3IoXG4gICAgICAgICAgICByYXdFcnJvcixcbiAgICAgICAgICAgIGZpZWxkTm9kZXMsXG4gICAgICAgICAgICBwYXRoVG9BcnJheShpdGVtUGF0aCksXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlRmllbGRFcnJvcihlcnJvciwgaXRlbVR5cGUsIGV4ZUNvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbXBsZXRlZEl0ZW07XG4gICAgfSBjYXRjaCAocmF3RXJyb3IpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbG9jYXRlZEVycm9yKHJhd0Vycm9yLCBmaWVsZE5vZGVzLCBwYXRoVG9BcnJheShpdGVtUGF0aCkpO1xuICAgICAgcmV0dXJuIGhhbmRsZUZpZWxkRXJyb3IoZXJyb3IsIGl0ZW1UeXBlLCBleGVDb250ZXh0KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY29udGFpbnNQcm9taXNlID8gUHJvbWlzZS5hbGwoY29tcGxldGVkUmVzdWx0cykgOiBjb21wbGV0ZWRSZXN1bHRzO1xufVxuLyoqXG4gKiBDb21wbGV0ZSBhIFNjYWxhciBvciBFbnVtIGJ5IHNlcmlhbGl6aW5nIHRvIGEgdmFsaWQgdmFsdWUsIHJldHVybmluZ1xuICogbnVsbCBpZiBzZXJpYWxpemF0aW9uIGlzIG5vdCBwb3NzaWJsZS5cbiAqL1xuXG5mdW5jdGlvbiBjb21wbGV0ZUxlYWZWYWx1ZShyZXR1cm5UeXBlLCByZXN1bHQpIHtcbiAgY29uc3Qgc2VyaWFsaXplZFJlc3VsdCA9IHJldHVyblR5cGUuc2VyaWFsaXplKHJlc3VsdCk7XG5cbiAgaWYgKHNlcmlhbGl6ZWRSZXN1bHQgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBFeHBlY3RlZCBcXGAke2luc3BlY3QocmV0dXJuVHlwZSl9LnNlcmlhbGl6ZSgke2luc3BlY3QocmVzdWx0KX0pXFxgIHRvIGAgK1xuICAgICAgICBgcmV0dXJuIG5vbi1udWxsYWJsZSB2YWx1ZSwgcmV0dXJuZWQ6ICR7aW5zcGVjdChzZXJpYWxpemVkUmVzdWx0KX1gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gc2VyaWFsaXplZFJlc3VsdDtcbn1cbi8qKlxuICogQ29tcGxldGUgYSB2YWx1ZSBvZiBhbiBhYnN0cmFjdCB0eXBlIGJ5IGRldGVybWluaW5nIHRoZSBydW50aW1lIG9iamVjdCB0eXBlXG4gKiBvZiB0aGF0IHZhbHVlLCB0aGVuIGNvbXBsZXRlIHRoZSB2YWx1ZSBmb3IgdGhhdCB0eXBlLlxuICovXG5cbmZ1bmN0aW9uIGNvbXBsZXRlQWJzdHJhY3RWYWx1ZShcbiAgZXhlQ29udGV4dCxcbiAgcmV0dXJuVHlwZSxcbiAgZmllbGROb2RlcyxcbiAgaW5mbyxcbiAgcGF0aCxcbiAgcmVzdWx0LFxuKSB7XG4gIHZhciBfcmV0dXJuVHlwZSRyZXNvbHZlVHk7XG5cbiAgY29uc3QgcmVzb2x2ZVR5cGVGbiA9XG4gICAgKF9yZXR1cm5UeXBlJHJlc29sdmVUeSA9IHJldHVyblR5cGUucmVzb2x2ZVR5cGUpICE9PSBudWxsICYmXG4gICAgX3JldHVyblR5cGUkcmVzb2x2ZVR5ICE9PSB2b2lkIDBcbiAgICAgID8gX3JldHVyblR5cGUkcmVzb2x2ZVR5XG4gICAgICA6IGV4ZUNvbnRleHQudHlwZVJlc29sdmVyO1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSBleGVDb250ZXh0LmNvbnRleHRWYWx1ZTtcbiAgY29uc3QgcnVudGltZVR5cGUgPSByZXNvbHZlVHlwZUZuKHJlc3VsdCwgY29udGV4dFZhbHVlLCBpbmZvLCByZXR1cm5UeXBlKTtcblxuICBpZiAoaXNQcm9taXNlKHJ1bnRpbWVUeXBlKSkge1xuICAgIHJldHVybiBydW50aW1lVHlwZS50aGVuKChyZXNvbHZlZFJ1bnRpbWVUeXBlKSA9PlxuICAgICAgY29tcGxldGVPYmplY3RWYWx1ZShcbiAgICAgICAgZXhlQ29udGV4dCxcbiAgICAgICAgZW5zdXJlVmFsaWRSdW50aW1lVHlwZShcbiAgICAgICAgICByZXNvbHZlZFJ1bnRpbWVUeXBlLFxuICAgICAgICAgIGV4ZUNvbnRleHQsXG4gICAgICAgICAgcmV0dXJuVHlwZSxcbiAgICAgICAgICBmaWVsZE5vZGVzLFxuICAgICAgICAgIGluZm8sXG4gICAgICAgICAgcmVzdWx0LFxuICAgICAgICApLFxuICAgICAgICBmaWVsZE5vZGVzLFxuICAgICAgICBpbmZvLFxuICAgICAgICBwYXRoLFxuICAgICAgICByZXN1bHQsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gY29tcGxldGVPYmplY3RWYWx1ZShcbiAgICBleGVDb250ZXh0LFxuICAgIGVuc3VyZVZhbGlkUnVudGltZVR5cGUoXG4gICAgICBydW50aW1lVHlwZSxcbiAgICAgIGV4ZUNvbnRleHQsXG4gICAgICByZXR1cm5UeXBlLFxuICAgICAgZmllbGROb2RlcyxcbiAgICAgIGluZm8sXG4gICAgICByZXN1bHQsXG4gICAgKSxcbiAgICBmaWVsZE5vZGVzLFxuICAgIGluZm8sXG4gICAgcGF0aCxcbiAgICByZXN1bHQsXG4gICk7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZVZhbGlkUnVudGltZVR5cGUoXG4gIHJ1bnRpbWVUeXBlTmFtZSxcbiAgZXhlQ29udGV4dCxcbiAgcmV0dXJuVHlwZSxcbiAgZmllbGROb2RlcyxcbiAgaW5mbyxcbiAgcmVzdWx0LFxuKSB7XG4gIGlmIChydW50aW1lVHlwZU5hbWUgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICBgQWJzdHJhY3QgdHlwZSBcIiR7cmV0dXJuVHlwZS5uYW1lfVwiIG11c3QgcmVzb2x2ZSB0byBhbiBPYmplY3QgdHlwZSBhdCBydW50aW1lIGZvciBmaWVsZCBcIiR7aW5mby5wYXJlbnRUeXBlLm5hbWV9LiR7aW5mby5maWVsZE5hbWV9XCIuIEVpdGhlciB0aGUgXCIke3JldHVyblR5cGUubmFtZX1cIiB0eXBlIHNob3VsZCBwcm92aWRlIGEgXCJyZXNvbHZlVHlwZVwiIGZ1bmN0aW9uIG9yIGVhY2ggcG9zc2libGUgdHlwZSBzaG91bGQgcHJvdmlkZSBhbiBcImlzVHlwZU9mXCIgZnVuY3Rpb24uYCxcbiAgICAgIGZpZWxkTm9kZXMsXG4gICAgKTtcbiAgfSAvLyByZWxlYXNlcyBiZWZvcmUgMTYuMC4wIHN1cHBvcnRlZCByZXR1cm5pbmcgYEdyYXBoUUxPYmplY3RUeXBlYCBmcm9tIGByZXNvbHZlVHlwZWBcbiAgLy8gVE9ETzogcmVtb3ZlIGluIDE3LjAuMCByZWxlYXNlXG5cbiAgaWYgKGlzT2JqZWN0VHlwZShydW50aW1lVHlwZU5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICdTdXBwb3J0IGZvciByZXR1cm5pbmcgR3JhcGhRTE9iamVjdFR5cGUgZnJvbSByZXNvbHZlVHlwZSB3YXMgcmVtb3ZlZCBpbiBncmFwaHFsLWpzQDE2LjAuMCBwbGVhc2UgcmV0dXJuIHR5cGUgbmFtZSBpbnN0ZWFkLicsXG4gICAgKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcnVudGltZVR5cGVOYW1lICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICBgQWJzdHJhY3QgdHlwZSBcIiR7cmV0dXJuVHlwZS5uYW1lfVwiIG11c3QgcmVzb2x2ZSB0byBhbiBPYmplY3QgdHlwZSBhdCBydW50aW1lIGZvciBmaWVsZCBcIiR7aW5mby5wYXJlbnRUeXBlLm5hbWV9LiR7aW5mby5maWVsZE5hbWV9XCIgd2l0aCBgICtcbiAgICAgICAgYHZhbHVlICR7aW5zcGVjdChyZXN1bHQpfSwgcmVjZWl2ZWQgXCIke2luc3BlY3QocnVudGltZVR5cGVOYW1lKX1cIi5gLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBydW50aW1lVHlwZSA9IGV4ZUNvbnRleHQuc2NoZW1hLmdldFR5cGUocnVudGltZVR5cGVOYW1lKTtcblxuICBpZiAocnVudGltZVR5cGUgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICBgQWJzdHJhY3QgdHlwZSBcIiR7cmV0dXJuVHlwZS5uYW1lfVwiIHdhcyByZXNvbHZlZCB0byBhIHR5cGUgXCIke3J1bnRpbWVUeXBlTmFtZX1cIiB0aGF0IGRvZXMgbm90IGV4aXN0IGluc2lkZSB0aGUgc2NoZW1hLmAsXG4gICAgICB7XG4gICAgICAgIG5vZGVzOiBmaWVsZE5vZGVzLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgaWYgKCFpc09iamVjdFR5cGUocnVudGltZVR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgIGBBYnN0cmFjdCB0eXBlIFwiJHtyZXR1cm5UeXBlLm5hbWV9XCIgd2FzIHJlc29sdmVkIHRvIGEgbm9uLW9iamVjdCB0eXBlIFwiJHtydW50aW1lVHlwZU5hbWV9XCIuYCxcbiAgICAgIHtcbiAgICAgICAgbm9kZXM6IGZpZWxkTm9kZXMsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBpZiAoIWV4ZUNvbnRleHQuc2NoZW1hLmlzU3ViVHlwZShyZXR1cm5UeXBlLCBydW50aW1lVHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgYFJ1bnRpbWUgT2JqZWN0IHR5cGUgXCIke3J1bnRpbWVUeXBlLm5hbWV9XCIgaXMgbm90IGEgcG9zc2libGUgdHlwZSBmb3IgXCIke3JldHVyblR5cGUubmFtZX1cIi5gLFxuICAgICAge1xuICAgICAgICBub2RlczogZmllbGROb2RlcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBydW50aW1lVHlwZTtcbn1cbi8qKlxuICogQ29tcGxldGUgYW4gT2JqZWN0IHZhbHVlIGJ5IGV4ZWN1dGluZyBhbGwgc3ViLXNlbGVjdGlvbnMuXG4gKi9cblxuZnVuY3Rpb24gY29tcGxldGVPYmplY3RWYWx1ZShcbiAgZXhlQ29udGV4dCxcbiAgcmV0dXJuVHlwZSxcbiAgZmllbGROb2RlcyxcbiAgaW5mbyxcbiAgcGF0aCxcbiAgcmVzdWx0LFxuKSB7XG4gIC8vIENvbGxlY3Qgc3ViLWZpZWxkcyB0byBleGVjdXRlIHRvIGNvbXBsZXRlIHRoaXMgdmFsdWUuXG4gIGNvbnN0IHN1YkZpZWxkTm9kZXMgPSBjb2xsZWN0U3ViZmllbGRzKGV4ZUNvbnRleHQsIHJldHVyblR5cGUsIGZpZWxkTm9kZXMpOyAvLyBJZiB0aGVyZSBpcyBhbiBpc1R5cGVPZiBwcmVkaWNhdGUgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCB0aGVcbiAgLy8gY3VycmVudCByZXN1bHQuIElmIGlzVHlwZU9mIHJldHVybnMgZmFsc2UsIHRoZW4gcmFpc2UgYW4gZXJyb3IgcmF0aGVyXG4gIC8vIHRoYW4gY29udGludWluZyBleGVjdXRpb24uXG5cbiAgaWYgKHJldHVyblR5cGUuaXNUeXBlT2YpIHtcbiAgICBjb25zdCBpc1R5cGVPZiA9IHJldHVyblR5cGUuaXNUeXBlT2YocmVzdWx0LCBleGVDb250ZXh0LmNvbnRleHRWYWx1ZSwgaW5mbyk7XG5cbiAgICBpZiAoaXNQcm9taXNlKGlzVHlwZU9mKSkge1xuICAgICAgcmV0dXJuIGlzVHlwZU9mLnRoZW4oKHJlc29sdmVkSXNUeXBlT2YpID0+IHtcbiAgICAgICAgaWYgKCFyZXNvbHZlZElzVHlwZU9mKSB7XG4gICAgICAgICAgdGhyb3cgaW52YWxpZFJldHVyblR5cGVFcnJvcihyZXR1cm5UeXBlLCByZXN1bHQsIGZpZWxkTm9kZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4ZWN1dGVGaWVsZHMoXG4gICAgICAgICAgZXhlQ29udGV4dCxcbiAgICAgICAgICByZXR1cm5UeXBlLFxuICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHN1YkZpZWxkTm9kZXMsXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWlzVHlwZU9mKSB7XG4gICAgICB0aHJvdyBpbnZhbGlkUmV0dXJuVHlwZUVycm9yKHJldHVyblR5cGUsIHJlc3VsdCwgZmllbGROb2Rlcyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4ZWN1dGVGaWVsZHMoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgcmVzdWx0LCBwYXRoLCBzdWJGaWVsZE5vZGVzKTtcbn1cblxuZnVuY3Rpb24gaW52YWxpZFJldHVyblR5cGVFcnJvcihyZXR1cm5UeXBlLCByZXN1bHQsIGZpZWxkTm9kZXMpIHtcbiAgcmV0dXJuIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgYEV4cGVjdGVkIHZhbHVlIG9mIHR5cGUgXCIke3JldHVyblR5cGUubmFtZX1cIiBidXQgZ290OiAke2luc3BlY3QocmVzdWx0KX0uYCxcbiAgICB7XG4gICAgICBub2RlczogZmllbGROb2RlcyxcbiAgICB9LFxuICApO1xufVxuLyoqXG4gKiBJZiBhIHJlc29sdmVUeXBlIGZ1bmN0aW9uIGlzIG5vdCBnaXZlbiwgdGhlbiBhIGRlZmF1bHQgcmVzb2x2ZSBiZWhhdmlvciBpc1xuICogdXNlZCB3aGljaCBhdHRlbXB0cyB0d28gc3RyYXRlZ2llczpcbiAqXG4gKiBGaXJzdCwgU2VlIGlmIHRoZSBwcm92aWRlZCB2YWx1ZSBoYXMgYSBgX190eXBlbmFtZWAgZmllbGQgZGVmaW5lZCwgaWYgc28sIHVzZVxuICogdGhhdCB2YWx1ZSBhcyBuYW1lIG9mIHRoZSByZXNvbHZlZCB0eXBlLlxuICpcbiAqIE90aGVyd2lzZSwgdGVzdCBlYWNoIHBvc3NpYmxlIHR5cGUgZm9yIHRoZSBhYnN0cmFjdCB0eXBlIGJ5IGNhbGxpbmdcbiAqIGlzVHlwZU9mIGZvciB0aGUgb2JqZWN0IGJlaW5nIGNvZXJjZWQsIHJldHVybmluZyB0aGUgZmlyc3QgdHlwZSB0aGF0IG1hdGNoZXMuXG4gKi9cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUeXBlUmVzb2x2ZXIgPSBmdW5jdGlvbiAoXG4gIHZhbHVlLFxuICBjb250ZXh0VmFsdWUsXG4gIGluZm8sXG4gIGFic3RyYWN0VHlwZSxcbikge1xuICAvLyBGaXJzdCwgbG9vayBmb3IgYF9fdHlwZW5hbWVgLlxuICBpZiAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiB0eXBlb2YgdmFsdWUuX190eXBlbmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUuX190eXBlbmFtZTtcbiAgfSAvLyBPdGhlcndpc2UsIHRlc3QgZWFjaCBwb3NzaWJsZSB0eXBlLlxuXG4gIGNvbnN0IHBvc3NpYmxlVHlwZXMgPSBpbmZvLnNjaGVtYS5nZXRQb3NzaWJsZVR5cGVzKGFic3RyYWN0VHlwZSk7XG4gIGNvbnN0IHByb21pc2VkSXNUeXBlT2ZSZXN1bHRzID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NzaWJsZVR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdHlwZSA9IHBvc3NpYmxlVHlwZXNbaV07XG5cbiAgICBpZiAodHlwZS5pc1R5cGVPZikge1xuICAgICAgY29uc3QgaXNUeXBlT2ZSZXN1bHQgPSB0eXBlLmlzVHlwZU9mKHZhbHVlLCBjb250ZXh0VmFsdWUsIGluZm8pO1xuXG4gICAgICBpZiAoaXNQcm9taXNlKGlzVHlwZU9mUmVzdWx0KSkge1xuICAgICAgICBwcm9taXNlZElzVHlwZU9mUmVzdWx0c1tpXSA9IGlzVHlwZU9mUmVzdWx0O1xuICAgICAgfSBlbHNlIGlmIChpc1R5cGVPZlJlc3VsdCkge1xuICAgICAgICByZXR1cm4gdHlwZS5uYW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9taXNlZElzVHlwZU9mUmVzdWx0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZWRJc1R5cGVPZlJlc3VsdHMpLnRoZW4oKGlzVHlwZU9mUmVzdWx0cykgPT4ge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpc1R5cGVPZlJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzVHlwZU9mUmVzdWx0c1tpXSkge1xuICAgICAgICAgIHJldHVybiBwb3NzaWJsZVR5cGVzW2ldLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcbi8qKlxuICogSWYgYSByZXNvbHZlIGZ1bmN0aW9uIGlzIG5vdCBnaXZlbiwgdGhlbiBhIGRlZmF1bHQgcmVzb2x2ZSBiZWhhdmlvciBpcyB1c2VkXG4gKiB3aGljaCB0YWtlcyB0aGUgcHJvcGVydHkgb2YgdGhlIHNvdXJjZSBvYmplY3Qgb2YgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZmllbGRcbiAqIGFuZCByZXR1cm5zIGl0IGFzIHRoZSByZXN1bHQsIG9yIGlmIGl0J3MgYSBmdW5jdGlvbiwgcmV0dXJucyB0aGUgcmVzdWx0XG4gKiBvZiBjYWxsaW5nIHRoYXQgZnVuY3Rpb24gd2hpbGUgcGFzc2luZyBhbG9uZyBhcmdzIGFuZCBjb250ZXh0IHZhbHVlLlxuICovXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmllbGRSZXNvbHZlciA9IGZ1bmN0aW9uIChcbiAgc291cmNlLFxuICBhcmdzLFxuICBjb250ZXh0VmFsdWUsXG4gIGluZm8sXG4pIHtcbiAgLy8gZW5zdXJlIHNvdXJjZSBpcyBhIHZhbHVlIGZvciB3aGljaCBwcm9wZXJ0eSBhY2Nlc3MgaXMgYWNjZXB0YWJsZS5cbiAgaWYgKGlzT2JqZWN0TGlrZShzb3VyY2UpIHx8IHR5cGVvZiBzb3VyY2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHNvdXJjZVtpbmZvLmZpZWxkTmFtZV07XG5cbiAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gc291cmNlW2luZm8uZmllbGROYW1lXShhcmdzLCBjb250ZXh0VmFsdWUsIGluZm8pO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgfVxufTtcbi8qKlxuICogVGhpcyBtZXRob2QgbG9va3MgdXAgdGhlIGZpZWxkIG9uIHRoZSBnaXZlbiB0eXBlIGRlZmluaXRpb24uXG4gKiBJdCBoYXMgc3BlY2lhbCBjYXNpbmcgZm9yIHRoZSB0aHJlZSBpbnRyb3NwZWN0aW9uIGZpZWxkcyxcbiAqIF9fc2NoZW1hLCBfX3R5cGUgYW5kIF9fdHlwZW5hbWUuIF9fdHlwZW5hbWUgaXMgc3BlY2lhbCBiZWNhdXNlXG4gKiBpdCBjYW4gYWx3YXlzIGJlIHF1ZXJpZWQgYXMgYSBmaWVsZCwgZXZlbiBpbiBzaXR1YXRpb25zIHdoZXJlIG5vXG4gKiBvdGhlciBmaWVsZHMgYXJlIGFsbG93ZWQsIGxpa2Ugb24gYSBVbmlvbi4gX19zY2hlbWEgYW5kIF9fdHlwZVxuICogY291bGQgZ2V0IGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHF1ZXJ5IHR5cGUsIGJ1dCB0aGF0IHdvdWxkXG4gKiByZXF1aXJlIG11dGF0aW5nIHR5cGUgZGVmaW5pdGlvbnMsIHdoaWNoIHdvdWxkIGNhdXNlIGlzc3Vlcy5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmllbGREZWYoc2NoZW1hLCBwYXJlbnRUeXBlLCBmaWVsZE5vZGUpIHtcbiAgY29uc3QgZmllbGROYW1lID0gZmllbGROb2RlLm5hbWUudmFsdWU7XG5cbiAgaWYgKFxuICAgIGZpZWxkTmFtZSA9PT0gU2NoZW1hTWV0YUZpZWxkRGVmLm5hbWUgJiZcbiAgICBzY2hlbWEuZ2V0UXVlcnlUeXBlKCkgPT09IHBhcmVudFR5cGVcbiAgKSB7XG4gICAgcmV0dXJuIFNjaGVtYU1ldGFGaWVsZERlZjtcbiAgfSBlbHNlIGlmIChcbiAgICBmaWVsZE5hbWUgPT09IFR5cGVNZXRhRmllbGREZWYubmFtZSAmJlxuICAgIHNjaGVtYS5nZXRRdWVyeVR5cGUoKSA9PT0gcGFyZW50VHlwZVxuICApIHtcbiAgICByZXR1cm4gVHlwZU1ldGFGaWVsZERlZjtcbiAgfSBlbHNlIGlmIChmaWVsZE5hbWUgPT09IFR5cGVOYW1lTWV0YUZpZWxkRGVmLm5hbWUpIHtcbiAgICByZXR1cm4gVHlwZU5hbWVNZXRhRmllbGREZWY7XG4gIH1cblxuICByZXR1cm4gcGFyZW50VHlwZS5nZXRGaWVsZHMoKVtmaWVsZE5hbWVdO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUtBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/execution/execute.mjs\n");
|
253 |
|
254 | }),
|
255 |
|
256 | "../../../node_modules/graphql/execution/index.mjs":
|
257 |
|
258 |
|
259 |
|
260 |
|
261 | (function(module, __webpack_exports__, __webpack_require__) {
|
262 |
|
263 | "use strict";
|
264 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/Path.mjs */ \"../../../node_modules/graphql/jsutils/Path.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"responsePathAsArray\", function() { return _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_0__[\"pathToArray\"]; });\n\n/* harmony import */ var _execute_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./execute.mjs */ \"../../../node_modules/graphql/execution/execute.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"execute\", function() { return _execute_mjs__WEBPACK_IMPORTED_MODULE_1__[\"execute\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"executeSync\", function() { return _execute_mjs__WEBPACK_IMPORTED_MODULE_1__[\"executeSync\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defaultFieldResolver\", function() { return _execute_mjs__WEBPACK_IMPORTED_MODULE_1__[\"defaultFieldResolver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defaultTypeResolver\", function() { return _execute_mjs__WEBPACK_IMPORTED_MODULE_1__[\"defaultTypeResolver\"]; });\n\n/* harmony import */ var _subscribe_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./subscribe.mjs */ \"../../../node_modules/graphql/execution/subscribe.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"subscribe\", function() { return _subscribe_mjs__WEBPACK_IMPORTED_MODULE_2__[\"subscribe\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createSourceEventStream\", function() { return _subscribe_mjs__WEBPACK_IMPORTED_MODULE_2__[\"createSourceEventStream\"]; });\n\n/* harmony import */ var _values_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getArgumentValues\", function() { return _values_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getArgumentValues\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVariableValues\", function() { return _values_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getVariableValues\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDirectiveValues\", function() { return _values_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getDirectiveValues\"]; });\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL2luZGV4Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2V4ZWN1dGlvbi9pbmRleC5tanM/N2UwZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwYXRoVG9BcnJheSBhcyByZXNwb25zZVBhdGhBc0FycmF5IH0gZnJvbSAnLi4vanN1dGlscy9QYXRoLm1qcyc7XG5leHBvcnQge1xuICBleGVjdXRlLFxuICBleGVjdXRlU3luYyxcbiAgZGVmYXVsdEZpZWxkUmVzb2x2ZXIsXG4gIGRlZmF1bHRUeXBlUmVzb2x2ZXIsXG59IGZyb20gJy4vZXhlY3V0ZS5tanMnO1xuZXhwb3J0IHsgc3Vic2NyaWJlLCBjcmVhdGVTb3VyY2VFdmVudFN0cmVhbSB9IGZyb20gJy4vc3Vic2NyaWJlLm1qcyc7XG5leHBvcnQge1xuICBnZXRBcmd1bWVudFZhbHVlcyxcbiAgZ2V0VmFyaWFibGVWYWx1ZXMsXG4gIGdldERpcmVjdGl2ZVZhbHVlcyxcbn0gZnJvbSAnLi92YWx1ZXMubWpzJztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFLQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/execution/index.mjs\n");
|
265 |
|
266 | }),
|
267 |
|
268 | "../../../node_modules/graphql/execution/mapAsyncIterator.mjs":
|
269 |
|
270 |
|
271 |
|
272 |
|
273 | (function(module, __webpack_exports__, __webpack_require__) {
|
274 |
|
275 | "use strict";
|
276 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapAsyncIterator\", function() { return mapAsyncIterator; });\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nfunction mapAsyncIterator(iterable, callback) {\n const iterator = iterable[Symbol.asyncIterator]();\n\n async function mapResult(result) {\n if (result.done) {\n return result;\n }\n\n try {\n return {\n value: await callback(result.value),\n done: false,\n };\n } catch (error) {\n /* c8 ignore start */\n // FIXME: add test case\n if (typeof iterator.return === 'function') {\n try {\n await iterator.return();\n } catch (_e) {\n /* ignore error */\n }\n }\n\n throw error;\n /* c8 ignore stop */\n }\n }\n\n return {\n async next() {\n return mapResult(await iterator.next());\n },\n\n async return() {\n // If iterator.return() does not exist, then type R must be undefined.\n return typeof iterator.return === 'function'\n ? mapResult(await iterator.return())\n : {\n value: undefined,\n done: true,\n };\n },\n\n async throw(error) {\n if (typeof iterator.throw === 'function') {\n return mapResult(await iterator.throw(error));\n }\n\n throw error;\n },\n\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL21hcEFzeW5jSXRlcmF0b3IubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL21hcEFzeW5jSXRlcmF0b3IubWpzP2ZiMzciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHaXZlbiBhbiBBc3luY0l0ZXJhYmxlIGFuZCBhIGNhbGxiYWNrIGZ1bmN0aW9uLCByZXR1cm4gYW4gQXN5bmNJdGVyYXRvclxuICogd2hpY2ggcHJvZHVjZXMgdmFsdWVzIG1hcHBlZCB2aWEgY2FsbGluZyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBBc3luY0l0ZXJhdG9yKGl0ZXJhYmxlLCBjYWxsYmFjaykge1xuICBjb25zdCBpdGVyYXRvciA9IGl0ZXJhYmxlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIG1hcFJlc3VsdChyZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0LmRvbmUpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBhd2FpdCBjYWxsYmFjayhyZXN1bHQudmFsdWUpLFxuICAgICAgICBkb25lOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8qIGM4IGlnbm9yZSBzdGFydCAqL1xuICAgICAgLy8gRklYTUU6IGFkZCB0ZXN0IGNhc2VcbiAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3IucmV0dXJuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgaXRlcmF0b3IucmV0dXJuKCk7XG4gICAgICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICAgICAgLyogaWdub3JlIGVycm9yICovXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAvKiBjOCBpZ25vcmUgc3RvcCAqL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgbmV4dCgpIHtcbiAgICAgIHJldHVybiBtYXBSZXN1bHQoYXdhaXQgaXRlcmF0b3IubmV4dCgpKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgcmV0dXJuKCkge1xuICAgICAgLy8gSWYgaXRlcmF0b3IucmV0dXJuKCkgZG9lcyBub3QgZXhpc3QsIHRoZW4gdHlwZSBSIG11c3QgYmUgdW5kZWZpbmVkLlxuICAgICAgcmV0dXJuIHR5cGVvZiBpdGVyYXRvci5yZXR1cm4gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBtYXBSZXN1bHQoYXdhaXQgaXRlcmF0b3IucmV0dXJuKCkpXG4gICAgICAgIDoge1xuICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRvbmU6IHRydWUsXG4gICAgICAgICAgfTtcbiAgICB9LFxuXG4gICAgYXN5bmMgdGhyb3coZXJyb3IpIHtcbiAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3IudGhyb3cgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG1hcFJlc3VsdChhd2FpdCBpdGVyYXRvci50aHJvdyhlcnJvcikpO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9LFxuXG4gICAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/execution/mapAsyncIterator.mjs\n");
|
277 |
|
278 | }),
|
279 |
|
280 | "../../../node_modules/graphql/execution/subscribe.mjs":
|
281 |
|
282 |
|
283 |
|
284 |
|
285 | (function(module, __webpack_exports__, __webpack_require__) {
|
286 |
|
287 | "use strict";
|
288 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subscribe\", function() { return subscribe; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSourceEventStream\", function() { return createSourceEventStream; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/isAsyncIterable.mjs */ \"../../../node_modules/graphql/jsutils/isAsyncIterable.mjs\");\n/* harmony import */ var _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/Path.mjs */ \"../../../node_modules/graphql/jsutils/Path.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../error/locatedError.mjs */ \"../../../node_modules/graphql/error/locatedError.mjs\");\n/* harmony import */ var _collectFields_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./collectFields.mjs */ \"../../../node_modules/graphql/execution/collectFields.mjs\");\n/* harmony import */ var _execute_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./execute.mjs */ \"../../../node_modules/graphql/execution/execute.mjs\");\n/* harmony import */ var _mapAsyncIterator_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./mapAsyncIterator.mjs */ \"../../../node_modules/graphql/execution/mapAsyncIterator.mjs\");\n/* harmony import */ var _values_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n\n\n\n\n\n\n\n\n\n\n/**\n * Implements the \"Subscribe\" algorithm described in the GraphQL specification.\n *\n * Returns a Promise which resolves to either an AsyncIterator (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to an AsyncIterator, which\n * yields a stream of ExecutionResults representing the response stream.\n *\n * Accepts either an object with named arguments, or individual arguments.\n */\n\nasync function subscribe(args) {\n // Temporary for v15 to v16 migration. Remove in v17\n arguments.length < 2 ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n );\n const {\n schema,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n subscribeFieldResolver,\n } = args;\n const resultOrStream = await createSourceEventStream(\n schema,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n subscribeFieldResolver,\n );\n\n if (!Object(_jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isAsyncIterable\"])(resultOrStream)) {\n return resultOrStream;\n } // For each payload yielded from a subscription, map it over the normal\n // GraphQL `execute` function, with `payload` as the rootValue.\n // This implements the \"MapSourceToResponseEvent\" algorithm described in\n // the GraphQL specification. The `execute` function provides the\n // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n\n const mapSourceToResponse = (payload) =>\n Object(_execute_mjs__WEBPACK_IMPORTED_MODULE_7__[\"execute\"])({\n schema,\n document,\n rootValue: payload,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n }); // Map every source value to a ExecutionResult value as described above.\n\n return Object(_mapAsyncIterator_mjs__WEBPACK_IMPORTED_MODULE_8__[\"mapAsyncIterator\"])(resultOrStream, mapSourceToResponse);\n}\n/**\n * Implements the \"CreateSourceEventStream\" algorithm described in the\n * GraphQL specification, resolving the subscription source event stream.\n *\n * Returns a Promise which resolves to either an AsyncIterable (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to the AsyncIterable for the\n * event stream returned by the resolver.\n *\n * A Source Event Stream represents a sequence of events, each of which triggers\n * a GraphQL execution for that event.\n *\n * This may be useful when hosting the stateful subscription service in a\n * different process or machine than the stateless GraphQL execution engine,\n * or otherwise separating these two steps. For more on this, see the\n * \"Supporting Subscriptions at Scale\" information in the GraphQL specification.\n */\n\nasync function createSourceEventStream(\n schema,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n subscribeFieldResolver,\n) {\n // If arguments are missing or incorrectly typed, this is an internal\n // developer mistake which should throw an early error.\n Object(_execute_mjs__WEBPACK_IMPORTED_MODULE_7__[\"assertValidExecutionArguments\"])(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n\n const exeContext = Object(_execute_mjs__WEBPACK_IMPORTED_MODULE_7__[\"buildExecutionContext\"])({\n schema,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n subscribeFieldResolver,\n }); // Return early errors if execution context failed.\n\n if (!('schema' in exeContext)) {\n return {\n errors: exeContext,\n };\n }\n\n try {\n const eventStream = await executeSubscription(exeContext); // Assert field returned an event stream, otherwise yield an error.\n\n if (!Object(_jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isAsyncIterable\"])(eventStream)) {\n throw new Error(\n 'Subscription field must return Async Iterable. ' +\n `Received: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(eventStream)}.`,\n );\n }\n\n return eventStream;\n } catch (error) {\n // If it GraphQLError, report it as an ExecutionResult, containing only errors and no data.\n // Otherwise treat the error as a system-class error and re-throw it.\n if (error instanceof _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"]) {\n return {\n errors: [error],\n };\n }\n\n throw error;\n }\n}\n\nasync function executeSubscription(exeContext) {\n const { schema, fragments, operation, variableValues, rootValue } =\n exeContext;\n const rootType = schema.getSubscriptionType();\n\n if (rootType == null) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\n 'Schema is not configured to execute subscription operation.',\n {\n nodes: operation,\n },\n );\n }\n\n const rootFields = Object(_collectFields_mjs__WEBPACK_IMPORTED_MODULE_6__[\"collectFields\"])(\n schema,\n fragments,\n variableValues,\n rootType,\n operation.selectionSet,\n );\n const [responseName, fieldNodes] = [...rootFields.entries()][0];\n const fieldDef = Object(_execute_mjs__WEBPACK_IMPORTED_MODULE_7__[\"getFieldDef\"])(schema, rootType, fieldNodes[0]);\n\n if (!fieldDef) {\n const fieldName = fieldNodes[0].name.value;\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\n `The subscription field \"${fieldName}\" is not defined.`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n const path = Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__[\"addPath\"])(undefined, responseName, rootType.name);\n const info = Object(_execute_mjs__WEBPACK_IMPORTED_MODULE_7__[\"buildResolveInfo\"])(\n exeContext,\n fieldDef,\n fieldNodes,\n rootType,\n path,\n );\n\n try {\n var _fieldDef$subscribe;\n\n // Implements the \"ResolveFieldEventStream\" algorithm from GraphQL specification.\n // It differs from \"ResolveFieldValue\" due to providing a different `resolveFn`.\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n const args = Object(_values_mjs__WEBPACK_IMPORTED_MODULE_9__[\"getArgumentValues\"])(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n const contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an\n // AsyncIterable yielding raw payloads.\n\n const resolveFn =\n (_fieldDef$subscribe = fieldDef.subscribe) !== null &&\n _fieldDef$subscribe !== void 0\n ? _fieldDef$subscribe\n : exeContext.subscribeFieldResolver;\n const eventStream = await resolveFn(rootValue, args, contextValue, info);\n\n if (eventStream instanceof Error) {\n throw eventStream;\n }\n\n return eventStream;\n } catch (error) {\n throw Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_5__[\"locatedError\"])(error, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__[\"pathToArray\"])(path));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL3N1YnNjcmliZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vc3Vic2NyaWJlLm1qcz9mNTkzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRldkFzc2VydCB9IGZyb20gJy4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qcyc7XG5pbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBpc0FzeW5jSXRlcmFibGUgfSBmcm9tICcuLi9qc3V0aWxzL2lzQXN5bmNJdGVyYWJsZS5tanMnO1xuaW1wb3J0IHsgYWRkUGF0aCwgcGF0aFRvQXJyYXkgfSBmcm9tICcuLi9qc3V0aWxzL1BhdGgubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgbG9jYXRlZEVycm9yIH0gZnJvbSAnLi4vZXJyb3IvbG9jYXRlZEVycm9yLm1qcyc7XG5pbXBvcnQgeyBjb2xsZWN0RmllbGRzIH0gZnJvbSAnLi9jb2xsZWN0RmllbGRzLm1qcyc7XG5pbXBvcnQge1xuICBhc3NlcnRWYWxpZEV4ZWN1dGlvbkFyZ3VtZW50cyxcbiAgYnVpbGRFeGVjdXRpb25Db250ZXh0LFxuICBidWlsZFJlc29sdmVJbmZvLFxuICBleGVjdXRlLFxuICBnZXRGaWVsZERlZixcbn0gZnJvbSAnLi9leGVjdXRlLm1qcyc7XG5pbXBvcnQgeyBtYXBBc3luY0l0ZXJhdG9yIH0gZnJvbSAnLi9tYXBBc3luY0l0ZXJhdG9yLm1qcyc7XG5pbXBvcnQgeyBnZXRBcmd1bWVudFZhbHVlcyB9IGZyb20gJy4vdmFsdWVzLm1qcyc7XG4vKipcbiAqIEltcGxlbWVudHMgdGhlIFwiU3Vic2NyaWJlXCIgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiB0aGUgR3JhcGhRTCBzcGVjaWZpY2F0aW9uLlxuICpcbiAqIFJldHVybnMgYSBQcm9taXNlIHdoaWNoIHJlc29sdmVzIHRvIGVpdGhlciBhbiBBc3luY0l0ZXJhdG9yIChpZiBzdWNjZXNzZnVsKVxuICogb3IgYW4gRXhlY3V0aW9uUmVzdWx0IChlcnJvcikuIFRoZSBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgaWYgdGhlIHNjaGVtYSBvclxuICogb3RoZXIgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIGludmFsaWQsIG9yIGlmIHRoZSByZXNvbHZlZCBldmVudCBzdHJlYW1cbiAqIGlzIG5vdCBhbiBhc3luYyBpdGVyYWJsZS5cbiAqXG4gKiBJZiB0aGUgY2xpZW50LXByb3ZpZGVkIGFyZ3VtZW50cyB0byB0aGlzIGZ1bmN0aW9uIGRvIG5vdCByZXN1bHQgaW4gYVxuICogY29tcGxpYW50IHN1YnNjcmlwdGlvbiwgYSBHcmFwaFFMIFJlc3BvbnNlIChFeGVjdXRpb25SZXN1bHQpIHdpdGhcbiAqIGRlc2NyaXB0aXZlIGVycm9ycyBhbmQgbm8gZGF0YSB3aWxsIGJlIHJldHVybmVkLlxuICpcbiAqIElmIHRoZSBzb3VyY2Ugc3RyZWFtIGNvdWxkIG5vdCBiZSBjcmVhdGVkIGR1ZSB0byBmYXVsdHkgc3Vic2NyaXB0aW9uXG4gKiByZXNvbHZlciBsb2dpYyBvciB1bmRlcmx5aW5nIHN5c3RlbXMsIHRoZSBwcm9taXNlIHdpbGwgcmVzb2x2ZSB0byBhIHNpbmdsZVxuICogRXhlY3V0aW9uUmVzdWx0IGNvbnRhaW5pbmcgYGVycm9yc2AgYW5kIG5vIGBkYXRhYC5cbiAqXG4gKiBJZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZCwgdGhlIHByb21pc2UgcmVzb2x2ZXMgdG8gYW4gQXN5bmNJdGVyYXRvciwgd2hpY2hcbiAqIHlpZWxkcyBhIHN0cmVhbSBvZiBFeGVjdXRpb25SZXN1bHRzIHJlcHJlc2VudGluZyB0aGUgcmVzcG9uc2Ugc3RyZWFtLlxuICpcbiAqIEFjY2VwdHMgZWl0aGVyIGFuIG9iamVjdCB3aXRoIG5hbWVkIGFyZ3VtZW50cywgb3IgaW5kaXZpZHVhbCBhcmd1bWVudHMuXG4gKi9cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN1YnNjcmliZShhcmdzKSB7XG4gIC8vIFRlbXBvcmFyeSBmb3IgdjE1IHRvIHYxNiBtaWdyYXRpb24uIFJlbW92ZSBpbiB2MTdcbiAgYXJndW1lbnRzLmxlbmd0aCA8IDIgfHxcbiAgICBkZXZBc3NlcnQoXG4gICAgICBmYWxzZSxcbiAgICAgICdncmFwaHFsQDE2IGRyb3BwZWQgbG9uZy1kZXByZWNhdGVkIHN1cHBvcnQgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnRzLCBwbGVhc2UgcGFzcyBhbiBvYmplY3QgaW5zdGVhZC4nLFxuICAgICk7XG4gIGNvbnN0IHtcbiAgICBzY2hlbWEsXG4gICAgZG9jdW1lbnQsXG4gICAgcm9vdFZhbHVlLFxuICAgIGNvbnRleHRWYWx1ZSxcbiAgICB2YXJpYWJsZVZhbHVlcyxcbiAgICBvcGVyYXRpb25OYW1lLFxuICAgIGZpZWxkUmVzb2x2ZXIsXG4gICAgc3Vic2NyaWJlRmllbGRSZXNvbHZlcixcbiAgfSA9IGFyZ3M7XG4gIGNvbnN0IHJlc3VsdE9yU3RyZWFtID0gYXdhaXQgY3JlYXRlU291cmNlRXZlbnRTdHJlYW0oXG4gICAgc2NoZW1hLFxuICAgIGRvY3VtZW50LFxuICAgIHJvb3RWYWx1ZSxcbiAgICBjb250ZXh0VmFsdWUsXG4gICAgdmFyaWFibGVWYWx1ZXMsXG4gICAgb3BlcmF0aW9uTmFtZSxcbiAgICBzdWJzY3JpYmVGaWVsZFJlc29sdmVyLFxuICApO1xuXG4gIGlmICghaXNBc3luY0l0ZXJhYmxlKHJlc3VsdE9yU3RyZWFtKSkge1xuICAgIHJldHVybiByZXN1bHRPclN0cmVhbTtcbiAgfSAvLyBGb3IgZWFjaCBwYXlsb2FkIHlpZWxkZWQgZnJvbSBhIHN1YnNjcmlwdGlvbiwgbWFwIGl0IG92ZXIgdGhlIG5vcm1hbFxuICAvLyBHcmFwaFFMIGBleGVjdXRlYCBmdW5jdGlvbiwgd2l0aCBgcGF5bG9hZGAgYXMgdGhlIHJvb3RWYWx1ZS5cbiAgLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBcIk1hcFNvdXJjZVRvUmVzcG9uc2VFdmVudFwiIGFsZ29yaXRobSBkZXNjcmliZWQgaW5cbiAgLy8gdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbi4gVGhlIGBleGVjdXRlYCBmdW5jdGlvbiBwcm92aWRlcyB0aGVcbiAgLy8gXCJFeGVjdXRlU3Vic2NyaXB0aW9uRXZlbnRcIiBhbGdvcml0aG0sIGFzIGl0IGlzIG5lYXJseSBpZGVudGljYWwgdG8gdGhlXG4gIC8vIFwiRXhlY3V0ZVF1ZXJ5XCIgYWxnb3JpdGhtLCBmb3Igd2hpY2ggYGV4ZWN1dGVgIGlzIGFsc28gdXNlZC5cblxuICBjb25zdCBtYXBTb3VyY2VUb1Jlc3BvbnNlID0gKHBheWxvYWQpID0+XG4gICAgZXhlY3V0ZSh7XG4gICAgICBzY2hlbWEsXG4gICAgICBkb2N1bWVudCxcbiAgICAgIHJvb3RWYWx1ZTogcGF5bG9hZCxcbiAgICAgIGNvbnRleHRWYWx1ZSxcbiAgICAgIHZhcmlhYmxlVmFsdWVzLFxuICAgICAgb3BlcmF0aW9uTmFtZSxcbiAgICAgIGZpZWxkUmVzb2x2ZXIsXG4gICAgfSk7IC8vIE1hcCBldmVyeSBzb3VyY2UgdmFsdWUgdG8gYSBFeGVjdXRpb25SZXN1bHQgdmFsdWUgYXMgZGVzY3JpYmVkIGFib3ZlLlxuXG4gIHJldHVybiBtYXBBc3luY0l0ZXJhdG9yKHJlc3VsdE9yU3RyZWFtLCBtYXBTb3VyY2VUb1Jlc3BvbnNlKTtcbn1cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgXCJDcmVhdGVTb3VyY2VFdmVudFN0cmVhbVwiIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlXG4gKiBHcmFwaFFMIHNwZWNpZmljYXRpb24sIHJlc29sdmluZyB0aGUgc3Vic2NyaXB0aW9uIHNvdXJjZSBldmVudCBzdHJlYW0uXG4gKlxuICogUmV0dXJucyBhIFByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgdG8gZWl0aGVyIGFuIEFzeW5jSXRlcmFibGUgKGlmIHN1Y2Nlc3NmdWwpXG4gKiBvciBhbiBFeGVjdXRpb25SZXN1bHQgKGVycm9yKS4gVGhlIHByb21pc2Ugd2lsbCBiZSByZWplY3RlZCBpZiB0aGUgc2NoZW1hIG9yXG4gKiBvdGhlciBhcmd1bWVudHMgdG8gdGhpcyBmdW5jdGlvbiBhcmUgaW52YWxpZCwgb3IgaWYgdGhlIHJlc29sdmVkIGV2ZW50IHN0cmVhbVxuICogaXMgbm90IGFuIGFzeW5jIGl0ZXJhYmxlLlxuICpcbiAqIElmIHRoZSBjbGllbnQtcHJvdmlkZWQgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gZG8gbm90IHJlc3VsdCBpbiBhXG4gKiBjb21wbGlhbnQgc3Vic2NyaXB0aW9uLCBhIEdyYXBoUUwgUmVzcG9uc2UgKEV4ZWN1dGlvblJlc3VsdCkgd2l0aFxuICogZGVzY3JpcHRpdmUgZXJyb3JzIGFuZCBubyBkYXRhIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogSWYgdGhlIHRoZSBzb3VyY2Ugc3RyZWFtIGNvdWxkIG5vdCBiZSBjcmVhdGVkIGR1ZSB0byBmYXVsdHkgc3Vic2NyaXB0aW9uXG4gKiByZXNvbHZlciBsb2dpYyBvciB1bmRlcmx5aW5nIHN5c3RlbXMsIHRoZSBwcm9taXNlIHdpbGwgcmVzb2x2ZSB0byBhIHNpbmdsZVxuICogRXhlY3V0aW9uUmVzdWx0IGNvbnRhaW5pbmcgYGVycm9yc2AgYW5kIG5vIGBkYXRhYC5cbiAqXG4gKiBJZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZCwgdGhlIHByb21pc2UgcmVzb2x2ZXMgdG8gdGhlIEFzeW5jSXRlcmFibGUgZm9yIHRoZVxuICogZXZlbnQgc3RyZWFtIHJldHVybmVkIGJ5IHRoZSByZXNvbHZlci5cbiAqXG4gKiBBIFNvdXJjZSBFdmVudCBTdHJlYW0gcmVwcmVzZW50cyBhIHNlcXVlbmNlIG9mIGV2ZW50cywgZWFjaCBvZiB3aGljaCB0cmlnZ2Vyc1xuICogYSBHcmFwaFFMIGV4ZWN1dGlvbiBmb3IgdGhhdCBldmVudC5cbiAqXG4gKiBUaGlzIG1heSBiZSB1c2VmdWwgd2hlbiBob3N0aW5nIHRoZSBzdGF0ZWZ1bCBzdWJzY3JpcHRpb24gc2VydmljZSBpbiBhXG4gKiBkaWZmZXJlbnQgcHJvY2VzcyBvciBtYWNoaW5lIHRoYW4gdGhlIHN0YXRlbGVzcyBHcmFwaFFMIGV4ZWN1dGlvbiBlbmdpbmUsXG4gKiBvciBvdGhlcndpc2Ugc2VwYXJhdGluZyB0aGVzZSB0d28gc3RlcHMuIEZvciBtb3JlIG9uIHRoaXMsIHNlZSB0aGVcbiAqIFwiU3VwcG9ydGluZyBTdWJzY3JpcHRpb25zIGF0IFNjYWxlXCIgaW5mb3JtYXRpb24gaW4gdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbi5cbiAqL1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU291cmNlRXZlbnRTdHJlYW0oXG4gIHNjaGVtYSxcbiAgZG9jdW1lbnQsXG4gIHJvb3RWYWx1ZSxcbiAgY29udGV4dFZhbHVlLFxuICB2YXJpYWJsZVZhbHVlcyxcbiAgb3BlcmF0aW9uTmFtZSxcbiAgc3Vic2NyaWJlRmllbGRSZXNvbHZlcixcbikge1xuICAvLyBJZiBhcmd1bWVudHMgYXJlIG1pc3Npbmcgb3IgaW5jb3JyZWN0bHkgdHlwZWQsIHRoaXMgaXMgYW4gaW50ZXJuYWxcbiAgLy8gZGV2ZWxvcGVyIG1pc3Rha2Ugd2hpY2ggc2hvdWxkIHRocm93IGFuIGVhcmx5IGVycm9yLlxuICBhc3NlcnRWYWxpZEV4ZWN1dGlvbkFyZ3VtZW50cyhzY2hlbWEsIGRvY3VtZW50LCB2YXJpYWJsZVZhbHVlcyk7IC8vIElmIGEgdmFsaWQgZXhlY3V0aW9uIGNvbnRleHQgY2Fubm90IGJlIGNyZWF0ZWQgZHVlIHRvIGluY29ycmVjdCBhcmd1bWVudHMsXG4gIC8vIGEgXCJSZXNwb25zZVwiIHdpdGggb25seSBlcnJvcnMgaXMgcmV0dXJuZWQuXG5cbiAgY29uc3QgZXhlQ29udGV4dCA9IGJ1aWxkRXhlY3V0aW9uQ29udGV4dCh7XG4gICAgc2NoZW1hLFxuICAgIGRvY3VtZW50LFxuICAgIHJvb3RWYWx1ZSxcbiAgICBjb250ZXh0VmFsdWUsXG4gICAgdmFyaWFibGVWYWx1ZXMsXG4gICAgb3BlcmF0aW9uTmFtZSxcbiAgICBzdWJzY3JpYmVGaWVsZFJlc29sdmVyLFxuICB9KTsgLy8gUmV0dXJuIGVhcmx5IGVycm9ycyBpZiBleGVjdXRpb24gY29udGV4dCBmYWlsZWQuXG5cbiAgaWYgKCEoJ3NjaGVtYScgaW4gZXhlQ29udGV4dCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzOiBleGVDb250ZXh0LFxuICAgIH07XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGV2ZW50U3RyZWFtID0gYXdhaXQgZXhlY3V0ZVN1YnNjcmlwdGlvbihleGVDb250ZXh0KTsgLy8gQXNzZXJ0IGZpZWxkIHJldHVybmVkIGFuIGV2ZW50IHN0cmVhbSwgb3RoZXJ3aXNlIHlpZWxkIGFuIGVycm9yLlxuXG4gICAgaWYgKCFpc0FzeW5jSXRlcmFibGUoZXZlbnRTdHJlYW0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdTdWJzY3JpcHRpb24gZmllbGQgbXVzdCByZXR1cm4gQXN5bmMgSXRlcmFibGUuICcgK1xuICAgICAgICAgIGBSZWNlaXZlZDogJHtpbnNwZWN0KGV2ZW50U3RyZWFtKX0uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZW50U3RyZWFtO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIElmIGl0IEdyYXBoUUxFcnJvciwgcmVwb3J0IGl0IGFzIGFuIEV4ZWN1dGlvblJlc3VsdCwgY29udGFpbmluZyBvbmx5IGVycm9ycyBhbmQgbm8gZGF0YS5cbiAgICAvLyBPdGhlcndpc2UgdHJlYXQgdGhlIGVycm9yIGFzIGEgc3lzdGVtLWNsYXNzIGVycm9yIGFuZCByZS10aHJvdyBpdC5cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBHcmFwaFFMRXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yczogW2Vycm9yXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVN1YnNjcmlwdGlvbihleGVDb250ZXh0KSB7XG4gIGNvbnN0IHsgc2NoZW1hLCBmcmFnbWVudHMsIG9wZXJhdGlvbiwgdmFyaWFibGVWYWx1ZXMsIHJvb3RWYWx1ZSB9ID1cbiAgICBleGVDb250ZXh0O1xuICBjb25zdCByb290VHlwZSA9IHNjaGVtYS5nZXRTdWJzY3JpcHRpb25UeXBlKCk7XG5cbiAgaWYgKHJvb3RUeXBlID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgJ1NjaGVtYSBpcyBub3QgY29uZmlndXJlZCB0byBleGVjdXRlIHN1YnNjcmlwdGlvbiBvcGVyYXRpb24uJyxcbiAgICAgIHtcbiAgICAgICAgbm9kZXM6IG9wZXJhdGlvbixcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHJvb3RGaWVsZHMgPSBjb2xsZWN0RmllbGRzKFxuICAgIHNjaGVtYSxcbiAgICBmcmFnbWVudHMsXG4gICAgdmFyaWFibGVWYWx1ZXMsXG4gICAgcm9vdFR5cGUsXG4gICAgb3BlcmF0aW9uLnNlbGVjdGlvblNldCxcbiAgKTtcbiAgY29uc3QgW3Jlc3BvbnNlTmFtZSwgZmllbGROb2Rlc10gPSBbLi4ucm9vdEZpZWxkcy5lbnRyaWVzKCldWzBdO1xuICBjb25zdCBmaWVsZERlZiA9IGdldEZpZWxkRGVmKHNjaGVtYSwgcm9vdFR5cGUsIGZpZWxkTm9kZXNbMF0pO1xuXG4gIGlmICghZmllbGREZWYpIHtcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWVsZE5vZGVzWzBdLm5hbWUudmFsdWU7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgIGBUaGUgc3Vic2NyaXB0aW9uIGZpZWxkIFwiJHtmaWVsZE5hbWV9XCIgaXMgbm90IGRlZmluZWQuYCxcbiAgICAgIHtcbiAgICAgICAgbm9kZXM6IGZpZWxkTm9kZXMsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBjb25zdCBwYXRoID0gYWRkUGF0aCh1bmRlZmluZWQsIHJlc3BvbnNlTmFtZSwgcm9vdFR5cGUubmFtZSk7XG4gIGNvbnN0IGluZm8gPSBidWlsZFJlc29sdmVJbmZvKFxuICAgIGV4ZUNvbnRleHQsXG4gICAgZmllbGREZWYsXG4gICAgZmllbGROb2RlcyxcbiAgICByb290VHlwZSxcbiAgICBwYXRoLFxuICApO1xuXG4gIHRyeSB7XG4gICAgdmFyIF9maWVsZERlZiRzdWJzY3JpYmU7XG5cbiAgICAvLyBJbXBsZW1lbnRzIHRoZSBcIlJlc29sdmVGaWVsZEV2ZW50U3RyZWFtXCIgYWxnb3JpdGhtIGZyb20gR3JhcGhRTCBzcGVjaWZpY2F0aW9uLlxuICAgIC8vIEl0IGRpZmZlcnMgZnJvbSBcIlJlc29sdmVGaWVsZFZhbHVlXCIgZHVlIHRvIHByb3ZpZGluZyBhIGRpZmZlcmVudCBgcmVzb2x2ZUZuYC5cbiAgICAvLyBCdWlsZCBhIEpTIG9iamVjdCBvZiBhcmd1bWVudHMgZnJvbSB0aGUgZmllbGQuYXJndW1lbnRzIEFTVCwgdXNpbmcgdGhlXG4gICAgLy8gdmFyaWFibGVzIHNjb3BlIHRvIGZ1bGZpbGwgYW55IHZhcmlhYmxlIHJlZmVyZW5jZXMuXG4gICAgY29uc3QgYXJncyA9IGdldEFyZ3VtZW50VmFsdWVzKGZpZWxkRGVmLCBmaWVsZE5vZGVzWzBdLCB2YXJpYWJsZVZhbHVlcyk7IC8vIFRoZSByZXNvbHZlIGZ1bmN0aW9uJ3Mgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaXMgYSBjb250ZXh0IHZhbHVlIHRoYXRcbiAgICAvLyBpcyBwcm92aWRlZCB0byBldmVyeSByZXNvbHZlIGZ1bmN0aW9uIHdpdGhpbiBhbiBleGVjdXRpb24uIEl0IGlzIGNvbW1vbmx5XG4gICAgLy8gdXNlZCB0byByZXByZXNlbnQgYW4gYXV0aGVudGljYXRlZCB1c2VyLCBvciByZXF1ZXN0LXNwZWNpZmljIGNhY2hlcy5cblxuICAgIGNvbnN0IGNvbnRleHRWYWx1ZSA9IGV4ZUNvbnRleHQuY29udGV4dFZhbHVlOyAvLyBDYWxsIHRoZSBgc3Vic2NyaWJlKClgIHJlc29sdmVyIG9yIHRoZSBkZWZhdWx0IHJlc29sdmVyIHRvIHByb2R1Y2UgYW5cbiAgICAvLyBBc3luY0l0ZXJhYmxlIHlpZWxkaW5nIHJhdyBwYXlsb2Fkcy5cblxuICAgIGNvbnN0IHJlc29sdmVGbiA9XG4gICAgICAoX2ZpZWxkRGVmJHN1YnNjcmliZSA9IGZpZWxkRGVmLnN1YnNjcmliZSkgIT09IG51bGwgJiZcbiAgICAgIF9maWVsZERlZiRzdWJzY3JpYmUgIT09IHZvaWQgMFxuICAgICAgICA/IF9maWVsZERlZiRzdWJzY3JpYmVcbiAgICAgICAgOiBleGVDb250ZXh0LnN1YnNjcmliZUZpZWxkUmVzb2x2ZXI7XG4gICAgY29uc3QgZXZlbnRTdHJlYW0gPSBhd2FpdCByZXNvbHZlRm4ocm9vdFZhbHVlLCBhcmdzLCBjb250ZXh0VmFsdWUsIGluZm8pO1xuXG4gICAgaWYgKGV2ZW50U3RyZWFtIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRocm93IGV2ZW50U3RyZWFtO1xuICAgIH1cblxuICAgIHJldHVybiBldmVudFN0cmVhbTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2NhdGVkRXJyb3IoZXJyb3IsIGZpZWxkTm9kZXMsIHBhdGhUb0FycmF5KHBhdGgpKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/execution/subscribe.mjs\n");
|
289 |
|
290 | }),
|
291 |
|
292 | "../../../node_modules/graphql/execution/values.mjs":
|
293 |
|
294 |
|
295 |
|
296 |
|
297 | (function(module, __webpack_exports__, __webpack_require__) {
|
298 |
|
299 | "use strict";
|
300 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVariableValues\", function() { return getVariableValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getArgumentValues\", function() { return getArgumentValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDirectiveValues\", function() { return getDirectiveValues; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_printPathArray_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/printPathArray.mjs */ \"../../../node_modules/graphql/jsutils/printPathArray.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_coerceInputValue_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utilities/coerceInputValue.mjs */ \"../../../node_modules/graphql/utilities/coerceInputValue.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n/* harmony import */ var _utilities_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utilities/valueFromAST.mjs */ \"../../../node_modules/graphql/utilities/valueFromAST.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nfunction getVariableValues(schema, varDefNodes, inputs, options) {\n const errors = [];\n const maxErrors =\n options === null || options === void 0 ? void 0 : options.maxErrors;\n\n try {\n const coerced = coerceVariableValues(\n schema,\n varDefNodes,\n inputs,\n (error) => {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](\n 'Too many errors processing variables, error limit reached. Execution aborted.',\n );\n }\n\n errors.push(error);\n },\n );\n\n if (errors.length === 0) {\n return {\n coerced,\n };\n }\n } catch (error) {\n errors.push(error);\n }\n\n return {\n errors,\n };\n}\n\nfunction coerceVariableValues(schema, varDefNodes, inputs, onError) {\n const coercedValues = {};\n\n for (const varDefNode of varDefNodes) {\n const varName = varDefNode.variable.name.value;\n const varType = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_8__[\"typeFromAST\"])(schema, varDefNode.type);\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isInputType\"])(varType)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(varDefNode.type);\n onError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](\n `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n {\n nodes: varDefNode.type,\n },\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = Object(_utilities_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_9__[\"valueFromAST\"])(varDefNode.defaultValue, varType);\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isNonNullType\"])(varType)) {\n const varTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(varType);\n onError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n {\n nodes: varDefNode,\n },\n ),\n );\n }\n\n continue;\n }\n\n const value = inputs[varName];\n\n if (value === null && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isNonNullType\"])(varType)) {\n const varTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(varType);\n onError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n {\n nodes: varDefNode,\n },\n ),\n );\n continue;\n }\n\n coercedValues[varName] = Object(_utilities_coerceInputValue_mjs__WEBPACK_IMPORTED_MODULE_7__[\"coerceInputValue\"])(\n value,\n varType,\n (path, invalidValue, error) => {\n let prefix =\n `Variable \"$${varName}\" got invalid value ` + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(invalidValue);\n\n if (path.length > 0) {\n prefix += ` at \"${varName}${Object(_jsutils_printPathArray_mjs__WEBPACK_IMPORTED_MODULE_2__[\"printPathArray\"])(path)}\"`;\n }\n\n onError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](prefix + '; ' + error.message, {\n nodes: varDefNode,\n originalError: error.originalError,\n }),\n );\n },\n );\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nfunction getArgumentValues(def, node, variableValues) {\n var _node$arguments;\n\n const coercedValues = {}; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const argumentNodes =\n (_node$arguments = node.arguments) !== null && _node$arguments !== void 0\n ? _node$arguments\n : [];\n const argNodeMap = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"keyMap\"])(argumentNodes, (arg) => arg.name.value);\n\n for (const argDef of def.args) {\n const name = argDef.name;\n const argType = argDef.type;\n const argumentNode = argNodeMap[name];\n\n if (!argumentNode) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isNonNullType\"])(argType)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](\n `Argument \"${name}\" of required type \"${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(argType)}\" ` +\n 'was not provided.',\n {\n nodes: node,\n },\n );\n }\n\n continue;\n }\n\n const valueNode = argumentNode.value;\n let isNull = valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].NULL;\n\n if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].VARIABLE) {\n const variableName = valueNode.name.value;\n\n if (\n variableValues == null ||\n !hasOwnProperty(variableValues, variableName)\n ) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isNonNullType\"])(argType)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](\n `Argument \"${name}\" of required type \"${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(argType)}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n {\n nodes: valueNode,\n },\n );\n }\n\n continue;\n }\n\n isNull = variableValues[variableName] == null;\n }\n\n if (isNull && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isNonNullType\"])(argType)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](\n `Argument \"${name}\" of non-null type \"${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(argType)}\" ` +\n 'must not be null.',\n {\n nodes: valueNode,\n },\n );\n }\n\n const coercedValue = Object(_utilities_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_9__[\"valueFromAST\"])(valueNode, argType, variableValues);\n\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](\n `Argument \"${name}\" has invalid value ${Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(valueNode)}.`,\n {\n nodes: valueNode,\n },\n );\n }\n\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nfunction getDirectiveValues(directiveDef, node, variableValues) {\n var _node$directives;\n\n const directiveNode =\n (_node$directives = node.directives) === null || _node$directives === void 0\n ? void 0\n : _node$directives.find(\n (directive) => directive.name.value === directiveDef.name,\n );\n\n if (directiveNode) {\n return getArgumentValues(directiveDef, directiveNode, variableValues);\n }\n}\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL3ZhbHVlcy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vdmFsdWVzLm1qcz9jZjRlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGtleU1hcCB9IGZyb20gJy4uL2pzdXRpbHMva2V5TWFwLm1qcyc7XG5pbXBvcnQgeyBwcmludFBhdGhBcnJheSB9IGZyb20gJy4uL2pzdXRpbHMvcHJpbnRQYXRoQXJyYXkubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBwcmludCB9IGZyb20gJy4uL2xhbmd1YWdlL3ByaW50ZXIubWpzJztcbmltcG9ydCB7IGlzSW5wdXRUeXBlLCBpc05vbk51bGxUeXBlIH0gZnJvbSAnLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQgeyBjb2VyY2VJbnB1dFZhbHVlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2NvZXJjZUlucHV0VmFsdWUubWpzJztcbmltcG9ydCB7IHR5cGVGcm9tQVNUIH0gZnJvbSAnLi4vdXRpbGl0aWVzL3R5cGVGcm9tQVNULm1qcyc7XG5pbXBvcnQgeyB2YWx1ZUZyb21BU1QgfSBmcm9tICcuLi91dGlsaXRpZXMvdmFsdWVGcm9tQVNULm1qcyc7XG5cbi8qKlxuICogUHJlcGFyZXMgYW4gb2JqZWN0IG1hcCBvZiB2YXJpYWJsZVZhbHVlcyBvZiB0aGUgY29ycmVjdCB0eXBlIGJhc2VkIG9uIHRoZVxuICogcHJvdmlkZWQgdmFyaWFibGUgZGVmaW5pdGlvbnMgYW5kIGFyYml0cmFyeSBpbnB1dC4gSWYgdGhlIGlucHV0IGNhbm5vdCBiZVxuICogcGFyc2VkIHRvIG1hdGNoIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9ucywgYSBHcmFwaFFMRXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gKlxuICogTm90ZTogVGhlIHJldHVybmVkIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0IHdpdGggYSBwcm90b3R5cGUsIHNpbmNlIGl0IGlzXG4gKiBleHBvc2VkIHRvIHVzZXIgY29kZS4gQ2FyZSBzaG91bGQgYmUgdGFrZW4gdG8gbm90IHB1bGwgdmFsdWVzIGZyb20gdGhlXG4gKiBPYmplY3QgcHJvdG90eXBlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFyaWFibGVWYWx1ZXMoc2NoZW1hLCB2YXJEZWZOb2RlcywgaW5wdXRzLCBvcHRpb25zKSB7XG4gIGNvbnN0IGVycm9ycyA9IFtdO1xuICBjb25zdCBtYXhFcnJvcnMgPVxuICAgIG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5tYXhFcnJvcnM7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb2VyY2VkID0gY29lcmNlVmFyaWFibGVWYWx1ZXMoXG4gICAgICBzY2hlbWEsXG4gICAgICB2YXJEZWZOb2RlcyxcbiAgICAgIGlucHV0cyxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBpZiAobWF4RXJyb3JzICE9IG51bGwgJiYgZXJyb3JzLmxlbmd0aCA+PSBtYXhFcnJvcnMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgJ1RvbyBtYW55IGVycm9ycyBwcm9jZXNzaW5nIHZhcmlhYmxlcywgZXJyb3IgbGltaXQgcmVhY2hlZC4gRXhlY3V0aW9uIGFib3J0ZWQuJyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZXJjZWQsXG4gICAgICB9O1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBlcnJvcnMucHVzaChlcnJvcik7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVycm9ycyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29lcmNlVmFyaWFibGVWYWx1ZXMoc2NoZW1hLCB2YXJEZWZOb2RlcywgaW5wdXRzLCBvbkVycm9yKSB7XG4gIGNvbnN0IGNvZXJjZWRWYWx1ZXMgPSB7fTtcblxuICBmb3IgKGNvbnN0IHZhckRlZk5vZGUgb2YgdmFyRGVmTm9kZXMpIHtcbiAgICBjb25zdCB2YXJOYW1lID0gdmFyRGVmTm9kZS52YXJpYWJsZS5uYW1lLnZhbHVlO1xuICAgIGNvbnN0IHZhclR5cGUgPSB0eXBlRnJvbUFTVChzY2hlbWEsIHZhckRlZk5vZGUudHlwZSk7XG5cbiAgICBpZiAoIWlzSW5wdXRUeXBlKHZhclR5cGUpKSB7XG4gICAgICAvLyBNdXN0IHVzZSBpbnB1dCB0eXBlcyBmb3IgdmFyaWFibGVzLiBUaGlzIHNob3VsZCBiZSBjYXVnaHQgZHVyaW5nXG4gICAgICAvLyB2YWxpZGF0aW9uLCBob3dldmVyIGlzIGNoZWNrZWQgYWdhaW4gaGVyZSBmb3Igc2FmZXR5LlxuICAgICAgY29uc3QgdmFyVHlwZVN0ciA9IHByaW50KHZhckRlZk5vZGUudHlwZSk7XG4gICAgICBvbkVycm9yKFxuICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgIGBWYXJpYWJsZSBcIiQke3Zhck5hbWV9XCIgZXhwZWN0ZWQgdmFsdWUgb2YgdHlwZSBcIiR7dmFyVHlwZVN0cn1cIiB3aGljaCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBpbnB1dCB0eXBlLmAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbm9kZXM6IHZhckRlZk5vZGUudHlwZSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghaGFzT3duUHJvcGVydHkoaW5wdXRzLCB2YXJOYW1lKSkge1xuICAgICAgaWYgKHZhckRlZk5vZGUuZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgIGNvZXJjZWRWYWx1ZXNbdmFyTmFtZV0gPSB2YWx1ZUZyb21BU1QodmFyRGVmTm9kZS5kZWZhdWx0VmFsdWUsIHZhclR5cGUpO1xuICAgICAgfSBlbHNlIGlmIChpc05vbk51bGxUeXBlKHZhclR5cGUpKSB7XG4gICAgICAgIGNvbnN0IHZhclR5cGVTdHIgPSBpbnNwZWN0KHZhclR5cGUpO1xuICAgICAgICBvbkVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgVmFyaWFibGUgXCIkJHt2YXJOYW1lfVwiIG9mIHJlcXVpcmVkIHR5cGUgXCIke3ZhclR5cGVTdHJ9XCIgd2FzIG5vdCBwcm92aWRlZC5gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBub2RlczogdmFyRGVmTm9kZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBpbnB1dHNbdmFyTmFtZV07XG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgaXNOb25OdWxsVHlwZSh2YXJUeXBlKSkge1xuICAgICAgY29uc3QgdmFyVHlwZVN0ciA9IGluc3BlY3QodmFyVHlwZSk7XG4gICAgICBvbkVycm9yKFxuICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgIGBWYXJpYWJsZSBcIiQke3Zhck5hbWV9XCIgb2Ygbm9uLW51bGwgdHlwZSBcIiR7dmFyVHlwZVN0cn1cIiBtdXN0IG5vdCBiZSBudWxsLmAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbm9kZXM6IHZhckRlZk5vZGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb2VyY2VkVmFsdWVzW3Zhck5hbWVdID0gY29lcmNlSW5wdXRWYWx1ZShcbiAgICAgIHZhbHVlLFxuICAgICAgdmFyVHlwZSxcbiAgICAgIChwYXRoLCBpbnZhbGlkVmFsdWUsIGVycm9yKSA9PiB7XG4gICAgICAgIGxldCBwcmVmaXggPVxuICAgICAgICAgIGBWYXJpYWJsZSBcIiQke3Zhck5hbWV9XCIgZ290IGludmFsaWQgdmFsdWUgYCArIGluc3BlY3QoaW52YWxpZFZhbHVlKTtcblxuICAgICAgICBpZiAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcHJlZml4ICs9IGAgYXQgXCIke3Zhck5hbWV9JHtwcmludFBhdGhBcnJheShwYXRoKX1cImA7XG4gICAgICAgIH1cblxuICAgICAgICBvbkVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IocHJlZml4ICsgJzsgJyArIGVycm9yLm1lc3NhZ2UsIHtcbiAgICAgICAgICAgIG5vZGVzOiB2YXJEZWZOb2RlLFxuICAgICAgICAgICAgb3JpZ2luYWxFcnJvcjogZXJyb3Iub3JpZ2luYWxFcnJvcixcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBjb2VyY2VkVmFsdWVzO1xufVxuLyoqXG4gKiBQcmVwYXJlcyBhbiBvYmplY3QgbWFwIG9mIGFyZ3VtZW50IHZhbHVlcyBnaXZlbiBhIGxpc3Qgb2YgYXJndW1lbnRcbiAqIGRlZmluaXRpb25zIGFuZCBsaXN0IG9mIGFyZ3VtZW50IEFTVCBub2Rlcy5cbiAqXG4gKiBOb3RlOiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3Qgd2l0aCBhIHByb3RvdHlwZSwgc2luY2UgaXQgaXNcbiAqIGV4cG9zZWQgdG8gdXNlciBjb2RlLiBDYXJlIHNob3VsZCBiZSB0YWtlbiB0byBub3QgcHVsbCB2YWx1ZXMgZnJvbSB0aGVcbiAqIE9iamVjdCBwcm90b3R5cGUuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFyZ3VtZW50VmFsdWVzKGRlZiwgbm9kZSwgdmFyaWFibGVWYWx1ZXMpIHtcbiAgdmFyIF9ub2RlJGFyZ3VtZW50cztcblxuICBjb25zdCBjb2VyY2VkVmFsdWVzID0ge307IC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG5cbiAgLyogYzggaWdub3JlIG5leHQgKi9cblxuICBjb25zdCBhcmd1bWVudE5vZGVzID1cbiAgICAoX25vZGUkYXJndW1lbnRzID0gbm9kZS5hcmd1bWVudHMpICE9PSBudWxsICYmIF9ub2RlJGFyZ3VtZW50cyAhPT0gdm9pZCAwXG4gICAgICA/IF9ub2RlJGFyZ3VtZW50c1xuICAgICAgOiBbXTtcbiAgY29uc3QgYXJnTm9kZU1hcCA9IGtleU1hcChhcmd1bWVudE5vZGVzLCAoYXJnKSA9PiBhcmcubmFtZS52YWx1ZSk7XG5cbiAgZm9yIChjb25zdCBhcmdEZWYgb2YgZGVmLmFyZ3MpIHtcbiAgICBjb25zdCBuYW1lID0gYXJnRGVmLm5hbWU7XG4gICAgY29uc3QgYXJnVHlwZSA9IGFyZ0RlZi50eXBlO1xuICAgIGNvbnN0IGFyZ3VtZW50Tm9kZSA9IGFyZ05vZGVNYXBbbmFtZV07XG5cbiAgICBpZiAoIWFyZ3VtZW50Tm9kZSkge1xuICAgICAgaWYgKGFyZ0RlZi5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb2VyY2VkVmFsdWVzW25hbWVdID0gYXJnRGVmLmRlZmF1bHRWYWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAoaXNOb25OdWxsVHlwZShhcmdUeXBlKSkge1xuICAgICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgIGBBcmd1bWVudCBcIiR7bmFtZX1cIiBvZiByZXF1aXJlZCB0eXBlIFwiJHtpbnNwZWN0KGFyZ1R5cGUpfVwiIGAgK1xuICAgICAgICAgICAgJ3dhcyBub3QgcHJvdmlkZWQuJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBub2Rlczogbm9kZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZU5vZGUgPSBhcmd1bWVudE5vZGUudmFsdWU7XG4gICAgbGV0IGlzTnVsbCA9IHZhbHVlTm9kZS5raW5kID09PSBLaW5kLk5VTEw7XG5cbiAgICBpZiAodmFsdWVOb2RlLmtpbmQgPT09IEtpbmQuVkFSSUFCTEUpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IHZhbHVlTm9kZS5uYW1lLnZhbHVlO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHZhcmlhYmxlVmFsdWVzID09IG51bGwgfHxcbiAgICAgICAgIWhhc093blByb3BlcnR5KHZhcmlhYmxlVmFsdWVzLCB2YXJpYWJsZU5hbWUpXG4gICAgICApIHtcbiAgICAgICAgaWYgKGFyZ0RlZi5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvZXJjZWRWYWx1ZXNbbmFtZV0gPSBhcmdEZWYuZGVmYXVsdFZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTm9uTnVsbFR5cGUoYXJnVHlwZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYEFyZ3VtZW50IFwiJHtuYW1lfVwiIG9mIHJlcXVpcmVkIHR5cGUgXCIke2luc3BlY3QoYXJnVHlwZSl9XCIgYCArXG4gICAgICAgICAgICAgIGB3YXMgcHJvdmlkZWQgdGhlIHZhcmlhYmxlIFwiJCR7dmFyaWFibGVOYW1lfVwiIHdoaWNoIHdhcyBub3QgcHJvdmlkZWQgYSBydW50aW1lIHZhbHVlLmAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5vZGVzOiB2YWx1ZU5vZGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaXNOdWxsID0gdmFyaWFibGVWYWx1ZXNbdmFyaWFibGVOYW1lXSA9PSBudWxsO1xuICAgIH1cblxuICAgIGlmIChpc051bGwgJiYgaXNOb25OdWxsVHlwZShhcmdUeXBlKSkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYEFyZ3VtZW50IFwiJHtuYW1lfVwiIG9mIG5vbi1udWxsIHR5cGUgXCIke2luc3BlY3QoYXJnVHlwZSl9XCIgYCArXG4gICAgICAgICAgJ211c3Qgbm90IGJlIG51bGwuJyxcbiAgICAgICAge1xuICAgICAgICAgIG5vZGVzOiB2YWx1ZU5vZGUsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IHZhbHVlRnJvbUFTVCh2YWx1ZU5vZGUsIGFyZ1R5cGUsIHZhcmlhYmxlVmFsdWVzKTtcblxuICAgIGlmIChjb2VyY2VkVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gTm90ZTogVmFsdWVzT2ZDb3JyZWN0VHlwZVJ1bGUgdmFsaWRhdGlvbiBzaG91bGQgY2F0Y2ggdGhpcyBiZWZvcmVcbiAgICAgIC8vIGV4ZWN1dGlvbi4gVGhpcyBpcyBhIHJ1bnRpbWUgY2hlY2sgdG8gZW5zdXJlIGV4ZWN1dGlvbiBkb2VzIG5vdFxuICAgICAgLy8gY29udGludWUgd2l0aCBhbiBpbnZhbGlkIGFyZ3VtZW50IHZhbHVlLlxuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYEFyZ3VtZW50IFwiJHtuYW1lfVwiIGhhcyBpbnZhbGlkIHZhbHVlICR7cHJpbnQodmFsdWVOb2RlKX0uYCxcbiAgICAgICAge1xuICAgICAgICAgIG5vZGVzOiB2YWx1ZU5vZGUsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvZXJjZWRWYWx1ZXNbbmFtZV0gPSBjb2VyY2VkVmFsdWU7XG4gIH1cblxuICByZXR1cm4gY29lcmNlZFZhbHVlcztcbn1cbi8qKlxuICogUHJlcGFyZXMgYW4gb2JqZWN0IG1hcCBvZiBhcmd1bWVudCB2YWx1ZXMgZ2l2ZW4gYSBkaXJlY3RpdmUgZGVmaW5pdGlvblxuICogYW5kIGEgQVNUIG5vZGUgd2hpY2ggbWF5IGNvbnRhaW4gZGlyZWN0aXZlcy4gT3B0aW9uYWxseSBhbHNvIGFjY2VwdHMgYSBtYXBcbiAqIG9mIHZhcmlhYmxlIHZhbHVlcy5cbiAqXG4gKiBJZiB0aGUgZGlyZWN0aXZlIGRvZXMgbm90IGV4aXN0IG9uIHRoZSBub2RlLCByZXR1cm5zIHVuZGVmaW5lZC5cbiAqXG4gKiBOb3RlOiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3Qgd2l0aCBhIHByb3RvdHlwZSwgc2luY2UgaXQgaXNcbiAqIGV4cG9zZWQgdG8gdXNlciBjb2RlLiBDYXJlIHNob3VsZCBiZSB0YWtlbiB0byBub3QgcHVsbCB2YWx1ZXMgZnJvbSB0aGVcbiAqIE9iamVjdCBwcm90b3R5cGUuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdGl2ZVZhbHVlcyhkaXJlY3RpdmVEZWYsIG5vZGUsIHZhcmlhYmxlVmFsdWVzKSB7XG4gIHZhciBfbm9kZSRkaXJlY3RpdmVzO1xuXG4gIGNvbnN0IGRpcmVjdGl2ZU5vZGUgPVxuICAgIChfbm9kZSRkaXJlY3RpdmVzID0gbm9kZS5kaXJlY3RpdmVzKSA9PT0gbnVsbCB8fCBfbm9kZSRkaXJlY3RpdmVzID09PSB2b2lkIDBcbiAgICAgID8gdm9pZCAwXG4gICAgICA6IF9ub2RlJGRpcmVjdGl2ZXMuZmluZChcbiAgICAgICAgICAoZGlyZWN0aXZlKSA9PiBkaXJlY3RpdmUubmFtZS52YWx1ZSA9PT0gZGlyZWN0aXZlRGVmLm5hbWUsXG4gICAgICAgICk7XG5cbiAgaWYgKGRpcmVjdGl2ZU5vZGUpIHtcbiAgICByZXR1cm4gZ2V0QXJndW1lbnRWYWx1ZXMoZGlyZWN0aXZlRGVmLCBkaXJlY3RpdmVOb2RlLCB2YXJpYWJsZVZhbHVlcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/execution/values.mjs\n");
|
301 |
|
302 | }),
|
303 |
|
304 | "../../../node_modules/graphql/graphql.mjs":
|
305 |
|
306 |
|
307 |
|
308 |
|
309 | (function(module, __webpack_exports__, __webpack_require__) {
|
310 |
|
311 | "use strict";
|
312 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"graphql\", function() { return graphql; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"graphqlSync\", function() { return graphqlSync; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jsutils/isPromise.mjs */ \"../../../node_modules/graphql/jsutils/isPromise.mjs\");\n/* harmony import */ var _language_parser_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./language/parser.mjs */ \"../../../node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _type_validate_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./type/validate.mjs */ \"../../../node_modules/graphql/type/validate.mjs\");\n/* harmony import */ var _validation_validate_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./validation/validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n/* harmony import */ var _execution_execute_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./execution/execute.mjs */ \"../../../node_modules/graphql/execution/execute.mjs\");\n\n\n\n\n\n\n/**\n * This is the primary entry point function for fulfilling GraphQL operations\n * by parsing, validating, and executing a GraphQL document along side a\n * GraphQL schema.\n *\n * More sophisticated GraphQL servers, such as those which persist queries,\n * may wish to separate the validation and execution phases to a static time\n * tooling step, and a server runtime step.\n *\n * Accepts either an object with named arguments, or individual arguments:\n *\n * schema:\n * The GraphQL type system to use when validating and executing a query.\n * source:\n * A GraphQL language formatted string representing the requested operation.\n * rootValue:\n * The value provided as the first argument to resolver functions on the top\n * level type (e.g. the query object type).\n * contextValue:\n * The context value is provided as an argument to resolver functions after\n * field arguments. It is used to pass shared information useful at any point\n * during executing this query, for example the currently logged in user and\n * connections to databases or other services.\n * variableValues:\n * A mapping of variable name to runtime value to use for all variables\n * defined in the requestString.\n * operationName:\n * The name of the operation to use if requestString contains multiple\n * possible operations. Can be omitted if requestString contains only\n * one operation.\n * fieldResolver:\n * A resolver function to use when one is not provided by the schema.\n * If not provided, the default field resolver is used (which looks for a\n * value or method on the source value with the field's name).\n * typeResolver:\n * A type resolver function to use when none is provided by the schema.\n * If not provided, the default type resolver is used (which looks for a\n * `__typename` field or alternatively calls the `isTypeOf` method).\n */\n\nfunction graphql(args) {\n // Always return a Promise for a consistent API.\n return new Promise((resolve) => resolve(graphqlImpl(args)));\n}\n/**\n * The graphqlSync function also fulfills GraphQL operations by parsing,\n * validating, and executing a GraphQL document along side a GraphQL schema.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nfunction graphqlSync(args) {\n const result = graphqlImpl(args); // Assert that the execution was synchronous.\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isPromise\"])(result)) {\n throw new Error('GraphQL execution failed to complete synchronously.');\n }\n\n return result;\n}\n\nfunction graphqlImpl(args) {\n // Temporary for v15 to v16 migration. Remove in v17\n arguments.length < 2 ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n );\n const {\n schema,\n source,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n } = args; // Validate Schema\n\n const schemaValidationErrors = Object(_type_validate_mjs__WEBPACK_IMPORTED_MODULE_3__[\"validateSchema\"])(schema);\n\n if (schemaValidationErrors.length > 0) {\n return {\n errors: schemaValidationErrors,\n };\n } // Parse\n\n let document;\n\n try {\n document = Object(_language_parser_mjs__WEBPACK_IMPORTED_MODULE_2__[\"parse\"])(source);\n } catch (syntaxError) {\n return {\n errors: [syntaxError],\n };\n } // Validate\n\n const validationErrors = Object(_validation_validate_mjs__WEBPACK_IMPORTED_MODULE_4__[\"validate\"])(schema, document);\n\n if (validationErrors.length > 0) {\n return {\n errors: validationErrors,\n };\n } // Execute\n\n return Object(_execution_execute_mjs__WEBPACK_IMPORTED_MODULE_5__[\"execute\"])({\n schema,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZ3JhcGhxbC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9ncmFwaHFsLm1qcz82NzRiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRldkFzc2VydCB9IGZyb20gJy4vanN1dGlscy9kZXZBc3NlcnQubWpzJztcbmltcG9ydCB7IGlzUHJvbWlzZSB9IGZyb20gJy4vanN1dGlscy9pc1Byb21pc2UubWpzJztcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnLi9sYW5ndWFnZS9wYXJzZXIubWpzJztcbmltcG9ydCB7IHZhbGlkYXRlU2NoZW1hIH0gZnJvbSAnLi90eXBlL3ZhbGlkYXRlLm1qcyc7XG5pbXBvcnQgeyB2YWxpZGF0ZSB9IGZyb20gJy4vdmFsaWRhdGlvbi92YWxpZGF0ZS5tanMnO1xuaW1wb3J0IHsgZXhlY3V0ZSB9IGZyb20gJy4vZXhlY3V0aW9uL2V4ZWN1dGUubWpzJztcbi8qKlxuICogVGhpcyBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmdW5jdGlvbiBmb3IgZnVsZmlsbGluZyBHcmFwaFFMIG9wZXJhdGlvbnNcbiAqIGJ5IHBhcnNpbmcsIHZhbGlkYXRpbmcsIGFuZCBleGVjdXRpbmcgYSBHcmFwaFFMIGRvY3VtZW50IGFsb25nIHNpZGUgYVxuICogR3JhcGhRTCBzY2hlbWEuXG4gKlxuICogTW9yZSBzb3BoaXN0aWNhdGVkIEdyYXBoUUwgc2VydmVycywgc3VjaCBhcyB0aG9zZSB3aGljaCBwZXJzaXN0IHF1ZXJpZXMsXG4gKiBtYXkgd2lzaCB0byBzZXBhcmF0ZSB0aGUgdmFsaWRhdGlvbiBhbmQgZXhlY3V0aW9uIHBoYXNlcyB0byBhIHN0YXRpYyB0aW1lXG4gKiB0b29saW5nIHN0ZXAsIGFuZCBhIHNlcnZlciBydW50aW1lIHN0ZXAuXG4gKlxuICogQWNjZXB0cyBlaXRoZXIgYW4gb2JqZWN0IHdpdGggbmFtZWQgYXJndW1lbnRzLCBvciBpbmRpdmlkdWFsIGFyZ3VtZW50czpcbiAqXG4gKiBzY2hlbWE6XG4gKiAgICBUaGUgR3JhcGhRTCB0eXBlIHN5c3RlbSB0byB1c2Ugd2hlbiB2YWxpZGF0aW5nIGFuZCBleGVjdXRpbmcgYSBxdWVyeS5cbiAqIHNvdXJjZTpcbiAqICAgIEEgR3JhcGhRTCBsYW5ndWFnZSBmb3JtYXR0ZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbi5cbiAqIHJvb3RWYWx1ZTpcbiAqICAgIFRoZSB2YWx1ZSBwcm92aWRlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gcmVzb2x2ZXIgZnVuY3Rpb25zIG9uIHRoZSB0b3BcbiAqICAgIGxldmVsIHR5cGUgKGUuZy4gdGhlIHF1ZXJ5IG9iamVjdCB0eXBlKS5cbiAqIGNvbnRleHRWYWx1ZTpcbiAqICAgIFRoZSBjb250ZXh0IHZhbHVlIGlzIHByb3ZpZGVkIGFzIGFuIGFyZ3VtZW50IHRvIHJlc29sdmVyIGZ1bmN0aW9ucyBhZnRlclxuICogICAgZmllbGQgYXJndW1lbnRzLiBJdCBpcyB1c2VkIHRvIHBhc3Mgc2hhcmVkIGluZm9ybWF0aW9uIHVzZWZ1bCBhdCBhbnkgcG9pbnRcbiAqICAgIGR1cmluZyBleGVjdXRpbmcgdGhpcyBxdWVyeSwgZm9yIGV4YW1wbGUgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlciBhbmRcbiAqICAgIGNvbm5lY3Rpb25zIHRvIGRhdGFiYXNlcyBvciBvdGhlciBzZXJ2aWNlcy5cbiAqIHZhcmlhYmxlVmFsdWVzOlxuICogICAgQSBtYXBwaW5nIG9mIHZhcmlhYmxlIG5hbWUgdG8gcnVudGltZSB2YWx1ZSB0byB1c2UgZm9yIGFsbCB2YXJpYWJsZXNcbiAqICAgIGRlZmluZWQgaW4gdGhlIHJlcXVlc3RTdHJpbmcuXG4gKiBvcGVyYXRpb25OYW1lOlxuICogICAgVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbiB0byB1c2UgaWYgcmVxdWVzdFN0cmluZyBjb250YWlucyBtdWx0aXBsZVxuICogICAgcG9zc2libGUgb3BlcmF0aW9ucy4gQ2FuIGJlIG9taXR0ZWQgaWYgcmVxdWVzdFN0cmluZyBjb250YWlucyBvbmx5XG4gKiAgICBvbmUgb3BlcmF0aW9uLlxuICogZmllbGRSZXNvbHZlcjpcbiAqICAgIEEgcmVzb2x2ZXIgZnVuY3Rpb24gdG8gdXNlIHdoZW4gb25lIGlzIG5vdCBwcm92aWRlZCBieSB0aGUgc2NoZW1hLlxuICogICAgSWYgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBmaWVsZCByZXNvbHZlciBpcyB1c2VkICh3aGljaCBsb29rcyBmb3IgYVxuICogICAgdmFsdWUgb3IgbWV0aG9kIG9uIHRoZSBzb3VyY2UgdmFsdWUgd2l0aCB0aGUgZmllbGQncyBuYW1lKS5cbiAqIHR5cGVSZXNvbHZlcjpcbiAqICAgIEEgdHlwZSByZXNvbHZlciBmdW5jdGlvbiB0byB1c2Ugd2hlbiBub25lIGlzIHByb3ZpZGVkIGJ5IHRoZSBzY2hlbWEuXG4gKiAgICBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IHR5cGUgcmVzb2x2ZXIgaXMgdXNlZCAod2hpY2ggbG9va3MgZm9yIGFcbiAqICAgIGBfX3R5cGVuYW1lYCBmaWVsZCBvciBhbHRlcm5hdGl2ZWx5IGNhbGxzIHRoZSBgaXNUeXBlT2ZgIG1ldGhvZCkuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBocWwoYXJncykge1xuICAvLyBBbHdheXMgcmV0dXJuIGEgUHJvbWlzZSBmb3IgYSBjb25zaXN0ZW50IEFQSS5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiByZXNvbHZlKGdyYXBocWxJbXBsKGFyZ3MpKSk7XG59XG4vKipcbiAqIFRoZSBncmFwaHFsU3luYyBmdW5jdGlvbiBhbHNvIGZ1bGZpbGxzIEdyYXBoUUwgb3BlcmF0aW9ucyBieSBwYXJzaW5nLFxuICogdmFsaWRhdGluZywgYW5kIGV4ZWN1dGluZyBhIEdyYXBoUUwgZG9jdW1lbnQgYWxvbmcgc2lkZSBhIEdyYXBoUUwgc2NoZW1hLlxuICogSG93ZXZlciwgaXQgZ3VhcmFudGVlcyB0byBjb21wbGV0ZSBzeW5jaHJvbm91c2x5IChvciB0aHJvdyBhbiBlcnJvcikgYXNzdW1pbmdcbiAqIHRoYXQgYWxsIGZpZWxkIHJlc29sdmVycyBhcmUgYWxzbyBzeW5jaHJvbm91cy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ3JhcGhxbFN5bmMoYXJncykge1xuICBjb25zdCByZXN1bHQgPSBncmFwaHFsSW1wbChhcmdzKTsgLy8gQXNzZXJ0IHRoYXQgdGhlIGV4ZWN1dGlvbiB3YXMgc3luY2hyb25vdXMuXG5cbiAgaWYgKGlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHcmFwaFFMIGV4ZWN1dGlvbiBmYWlsZWQgdG8gY29tcGxldGUgc3luY2hyb25vdXNseS4nKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGdyYXBocWxJbXBsKGFyZ3MpIHtcbiAgLy8gVGVtcG9yYXJ5IGZvciB2MTUgdG8gdjE2IG1pZ3JhdGlvbi4gUmVtb3ZlIGluIHYxN1xuICBhcmd1bWVudHMubGVuZ3RoIDwgMiB8fFxuICAgIGRldkFzc2VydChcbiAgICAgIGZhbHNlLFxuICAgICAgJ2dyYXBocWxAMTYgZHJvcHBlZCBsb25nLWRlcHJlY2F0ZWQgc3VwcG9ydCBmb3IgcG9zaXRpb25hbCBhcmd1bWVudHMsIHBsZWFzZSBwYXNzIGFuIG9iamVjdCBpbnN0ZWFkLicsXG4gICAgKTtcbiAgY29uc3Qge1xuICAgIHNjaGVtYSxcbiAgICBzb3VyY2UsXG4gICAgcm9vdFZhbHVlLFxuICAgIGNvbnRleHRWYWx1ZSxcbiAgICB2YXJpYWJsZVZhbHVlcyxcbiAgICBvcGVyYXRpb25OYW1lLFxuICAgIGZpZWxkUmVzb2x2ZXIsXG4gICAgdHlwZVJlc29sdmVyLFxuICB9ID0gYXJnczsgLy8gVmFsaWRhdGUgU2NoZW1hXG5cbiAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyA9IHZhbGlkYXRlU2NoZW1hKHNjaGVtYSk7XG5cbiAgaWYgKHNjaGVtYVZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcnM6IHNjaGVtYVZhbGlkYXRpb25FcnJvcnMsXG4gICAgfTtcbiAgfSAvLyBQYXJzZVxuXG4gIGxldCBkb2N1bWVudDtcblxuICB0cnkge1xuICAgIGRvY3VtZW50ID0gcGFyc2Uoc291cmNlKTtcbiAgfSBjYXRjaCAoc3ludGF4RXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzOiBbc3ludGF4RXJyb3JdLFxuICAgIH07XG4gIH0gLy8gVmFsaWRhdGVcblxuICBjb25zdCB2YWxpZGF0aW9uRXJyb3JzID0gdmFsaWRhdGUoc2NoZW1hLCBkb2N1bWVudCk7XG5cbiAgaWYgKHZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcnM6IHZhbGlkYXRpb25FcnJvcnMsXG4gICAgfTtcbiAgfSAvLyBFeGVjdXRlXG5cbiAgcmV0dXJuIGV4ZWN1dGUoe1xuICAgIHNjaGVtYSxcbiAgICBkb2N1bWVudCxcbiAgICByb290VmFsdWUsXG4gICAgY29udGV4dFZhbHVlLFxuICAgIHZhcmlhYmxlVmFsdWVzLFxuICAgIG9wZXJhdGlvbk5hbWUsXG4gICAgZmllbGRSZXNvbHZlcixcbiAgICB0eXBlUmVzb2x2ZXIsXG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/graphql.mjs\n");
|
313 |
|
314 | }),
|
315 |
|
316 | "../../../node_modules/graphql/index.mjs":
|
317 |
|
318 |
|
319 |
|
320 |
|
321 | (function(module, __webpack_exports__, __webpack_require__) {
|
322 |
|
323 | "use strict";
|
324 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _version_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./version.mjs */ \"../../../node_modules/graphql/version.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return _version_mjs__WEBPACK_IMPORTED_MODULE_0__[\"version\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"versionInfo\", function() { return _version_mjs__WEBPACK_IMPORTED_MODULE_0__[\"versionInfo\"]; });\n\n/* harmony import */ var _graphql_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./graphql.mjs */ \"../../../node_modules/graphql/graphql.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"graphql\", function() { return _graphql_mjs__WEBPACK_IMPORTED_MODULE_1__[\"graphql\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"graphqlSync\", function() { return _graphql_mjs__WEBPACK_IMPORTED_MODULE_1__[\"graphqlSync\"]; });\n\n/* harmony import */ var _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./type/index.mjs */ \"../../../node_modules/graphql/type/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveObjMapThunk\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"resolveObjMapThunk\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveReadonlyArrayThunk\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"resolveReadonlyArrayThunk\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSchema\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLScalarType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLObjectType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInterfaceType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLInterfaceType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLUnionType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLUnionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLEnumType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLEnumType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInputObjectType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLInputObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLList\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLList\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLNonNull\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLNonNull\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"specifiedScalarTypes\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"specifiedScalarTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInt\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLInt\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLFloat\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLFloat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLString\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLBoolean\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLBoolean\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLID\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLID\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GRAPHQL_MAX_INT\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GRAPHQL_MAX_INT\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GRAPHQL_MIN_INT\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GRAPHQL_MIN_INT\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"specifiedDirectives\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"specifiedDirectives\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLIncludeDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLIncludeDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSkipDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLSkipDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDeprecatedDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLDeprecatedDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSpecifiedByDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLSpecifiedByDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeKind\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TypeKind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_DEPRECATION_REASON\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_DEPRECATION_REASON\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"introspectionTypes\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"introspectionTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Schema\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__Schema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Directive\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__Directive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__DirectiveLocation\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__DirectiveLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Type\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__Type\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Field\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__Field\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__InputValue\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__InputValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__EnumValue\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__EnumValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__TypeKind\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__TypeKind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SchemaMetaFieldDef\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"SchemaMetaFieldDef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeMetaFieldDef\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TypeMetaFieldDef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeNameMetaFieldDef\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TypeNameMetaFieldDef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSchema\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isScalarType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObjectType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInterfaceType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isInterfaceType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isUnionType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isUnionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEnumType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isEnumType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInputObjectType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isInputObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isListType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isListType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNonNullType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isNonNullType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInputType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isInputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isOutputType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isOutputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isLeafType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isLeafType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isCompositeType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isCompositeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isAbstractType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isAbstractType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isWrappingType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isWrappingType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNullableType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isNullableType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNamedType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isNamedType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRequiredArgument\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isRequiredArgument\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRequiredInputField\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isRequiredInputField\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSpecifiedScalarType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isSpecifiedScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isIntrospectionType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isIntrospectionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSpecifiedDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isSpecifiedDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertSchema\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertScalarType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertObjectType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertInterfaceType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertInterfaceType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertUnionType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertUnionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertEnumType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertEnumType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertInputObjectType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertInputObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertListType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertListType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertNonNullType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertNonNullType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertInputType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertInputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertOutputType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertOutputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertLeafType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertLeafType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertCompositeType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertCompositeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertAbstractType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertAbstractType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertWrappingType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertWrappingType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertNullableType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertNullableType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertNamedType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertNamedType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getNullableType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getNullableType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getNamedType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getNamedType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"validateSchema\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"validateSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertValidSchema\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertValidSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertName\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertName\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertEnumValueName\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertEnumValueName\"]; });\n\n/* harmony import */ var _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./language/index.mjs */ \"../../../node_modules/graphql/language/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Token\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Token\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Source\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Source\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Location\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Location\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OperationTypeNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"OperationTypeNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printLocation\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"printLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printSourceLocation\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"printSourceLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Lexer\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Lexer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TokenKind\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"parse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseValue\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"parseValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseConstValue\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"parseConstValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseType\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"parseType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"print\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"print\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visit\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"visit\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visitInParallel\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"visitInParallel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVisitFn\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getVisitFn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnterLeaveForKind\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getEnterLeaveForKind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BREAK\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"BREAK\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Kind\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DirectiveLocation\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"DirectiveLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDefinitionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isExecutableDefinitionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isExecutableDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSelectionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isSelectionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isValueNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isValueNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isConstValueNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isConstValueNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeSystemDefinitionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeSystemDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeDefinitionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeSystemExtensionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeSystemExtensionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeExtensionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeExtensionNode\"]; });\n\n/* harmony import */ var _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./execution/index.mjs */ \"../../../node_modules/graphql/execution/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"execute\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"execute\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"executeSync\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"executeSync\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defaultFieldResolver\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"defaultFieldResolver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defaultTypeResolver\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"defaultTypeResolver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"responsePathAsArray\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"responsePathAsArray\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getArgumentValues\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getArgumentValues\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVariableValues\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getVariableValues\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDirectiveValues\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getDirectiveValues\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"subscribe\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"subscribe\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createSourceEventStream\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"createSourceEventStream\"]; });\n\n/* harmony import */ var _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./validation/index.mjs */ \"../../../node_modules/graphql/validation/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"validate\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"validate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ValidationContext\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"ValidationContext\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"specifiedRules\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"specifiedRules\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ExecutableDefinitionsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"ExecutableDefinitionsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FieldsOnCorrectTypeRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"FieldsOnCorrectTypeRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FragmentsOnCompositeTypesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"FragmentsOnCompositeTypesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownArgumentNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"KnownArgumentNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownDirectivesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"KnownDirectivesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownFragmentNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"KnownFragmentNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownTypeNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"KnownTypeNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LoneAnonymousOperationRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"LoneAnonymousOperationRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoFragmentCyclesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"NoFragmentCyclesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoUndefinedVariablesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"NoUndefinedVariablesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoUnusedFragmentsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"NoUnusedFragmentsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoUnusedVariablesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"NoUnusedVariablesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OverlappingFieldsCanBeMergedRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"OverlappingFieldsCanBeMergedRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PossibleFragmentSpreadsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"PossibleFragmentSpreadsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ProvidedRequiredArgumentsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"ProvidedRequiredArgumentsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ScalarLeafsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"ScalarLeafsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SingleFieldSubscriptionsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"SingleFieldSubscriptionsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueArgumentNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"UniqueArgumentNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueDirectivesPerLocationRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"UniqueDirectivesPerLocationRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueFragmentNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"UniqueFragmentNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueInputFieldNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"UniqueInputFieldNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueOperationNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"UniqueOperationNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueVariableNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"UniqueVariableNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ValuesOfCorrectTypeRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"ValuesOfCorrectTypeRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VariablesAreInputTypesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"VariablesAreInputTypesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VariablesInAllowedPositionRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"VariablesInAllowedPositionRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LoneSchemaDefinitionRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"LoneSchemaDefinitionRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueOperationTypesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"UniqueOperationTypesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueTypeNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"UniqueTypeNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueEnumValueNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"UniqueEnumValueNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueFieldDefinitionNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"UniqueFieldDefinitionNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueArgumentDefinitionNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"UniqueArgumentDefinitionNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueDirectiveNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"UniqueDirectiveNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PossibleTypeExtensionsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"PossibleTypeExtensionsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoDeprecatedCustomRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"NoDeprecatedCustomRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoSchemaIntrospectionCustomRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"NoSchemaIntrospectionCustomRule\"]; });\n\n/* harmony import */ var _error_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./error/index.mjs */ \"../../../node_modules/graphql/error/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLError\", function() { return _error_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"syntaxError\", function() { return _error_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"syntaxError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"locatedError\", function() { return _error_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"locatedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printError\", function() { return _error_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"printError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatError\", function() { return _error_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"formatError\"]; });\n\n/* harmony import */ var _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utilities/index.mjs */ \"../../../node_modules/graphql/utilities/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getIntrospectionQuery\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"getIntrospectionQuery\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOperationAST\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"getOperationAST\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOperationRootType\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"getOperationRootType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"introspectionFromSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"introspectionFromSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildClientSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"buildClientSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildASTSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"buildASTSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"buildSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"extendSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"extendSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lexicographicSortSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"lexicographicSortSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"printSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printType\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"printType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printIntrospectionSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"printIntrospectionSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"typeFromAST\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"typeFromAST\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"valueFromAST\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"valueFromAST\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"valueFromASTUntyped\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"valueFromASTUntyped\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"astFromValue\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"astFromValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeInfo\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"TypeInfo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visitWithTypeInfo\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"visitWithTypeInfo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"coerceInputValue\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"coerceInputValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"concatAST\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"concatAST\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"separateOperations\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"separateOperations\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stripIgnoredCharacters\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"stripIgnoredCharacters\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEqualType\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isEqualType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeSubTypeOf\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isTypeSubTypeOf\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"doTypesOverlap\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"doTypesOverlap\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertValidName\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"assertValidName\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isValidNameError\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isValidNameError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BreakingChangeType\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"BreakingChangeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DangerousChangeType\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"DangerousChangeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findBreakingChanges\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"findBreakingChanges\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findDangerousChanges\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"findDangerousChanges\"]; });\n\n/**\n * GraphQL.js provides a reference implementation for the GraphQL specification\n * but is also a useful utility for operating on GraphQL files and building\n * sophisticated tools.\n *\n * This primary module exports a general purpose function for fulfilling all\n * steps of the GraphQL specification in a single operation, but also includes\n * utilities for every part of the GraphQL specification:\n *\n * - Parsing the GraphQL language.\n * - Building a GraphQL type schema.\n * - Validating a GraphQL request against a type schema.\n * - Executing a GraphQL request against a type schema.\n *\n * This also includes utility functions for operating on GraphQL types and\n * GraphQL documents to facilitate building tools.\n *\n * You may also import from each sub-directory directly. For example, the\n * following two import statements are equivalent:\n *\n * ```ts\n * import { parse } from 'graphql';\n * import { parse } from 'graphql/language';\n * ```\n *\n * @packageDocumentation\n */\n// The GraphQL.js version info.\n // The primary entry point into fulfilling a GraphQL request.\n\n // Create and operate on GraphQL type definitions and schema.\n\n\n// Parse and operate on GraphQL language source files.\n\n// Execute GraphQL queries.\n\n// Validate GraphQL documents.\n\n// Create, format, and print GraphQL errors.\n\n// Utilities for operating on GraphQL type schema and parsed sources.\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvaW5kZXgubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvaW5kZXgubWpzP2Q4ZWMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHcmFwaFFMLmpzIHByb3ZpZGVzIGEgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgR3JhcGhRTCBzcGVjaWZpY2F0aW9uXG4gKiBidXQgaXMgYWxzbyBhIHVzZWZ1bCB1dGlsaXR5IGZvciBvcGVyYXRpbmcgb24gR3JhcGhRTCBmaWxlcyBhbmQgYnVpbGRpbmdcbiAqIHNvcGhpc3RpY2F0ZWQgdG9vbHMuXG4gKlxuICogVGhpcyBwcmltYXJ5IG1vZHVsZSBleHBvcnRzIGEgZ2VuZXJhbCBwdXJwb3NlIGZ1bmN0aW9uIGZvciBmdWxmaWxsaW5nIGFsbFxuICogc3RlcHMgb2YgdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbiBpbiBhIHNpbmdsZSBvcGVyYXRpb24sIGJ1dCBhbHNvIGluY2x1ZGVzXG4gKiB1dGlsaXRpZXMgZm9yIGV2ZXJ5IHBhcnQgb2YgdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbjpcbiAqXG4gKiAgIC0gUGFyc2luZyB0aGUgR3JhcGhRTCBsYW5ndWFnZS5cbiAqICAgLSBCdWlsZGluZyBhIEdyYXBoUUwgdHlwZSBzY2hlbWEuXG4gKiAgIC0gVmFsaWRhdGluZyBhIEdyYXBoUUwgcmVxdWVzdCBhZ2FpbnN0IGEgdHlwZSBzY2hlbWEuXG4gKiAgIC0gRXhlY3V0aW5nIGEgR3JhcGhRTCByZXF1ZXN0IGFnYWluc3QgYSB0eXBlIHNjaGVtYS5cbiAqXG4gKiBUaGlzIGFsc28gaW5jbHVkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIG9wZXJhdGluZyBvbiBHcmFwaFFMIHR5cGVzIGFuZFxuICogR3JhcGhRTCBkb2N1bWVudHMgdG8gZmFjaWxpdGF0ZSBidWlsZGluZyB0b29scy5cbiAqXG4gKiBZb3UgbWF5IGFsc28gaW1wb3J0IGZyb20gZWFjaCBzdWItZGlyZWN0b3J5IGRpcmVjdGx5LiBGb3IgZXhhbXBsZSwgdGhlXG4gKiBmb2xsb3dpbmcgdHdvIGltcG9ydCBzdGF0ZW1lbnRzIGFyZSBlcXVpdmFsZW50OlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZSB9IGZyb20gJ2dyYXBocWwnO1xuICogaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdncmFwaHFsL2xhbmd1YWdlJztcbiAqIGBgYFxuICpcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICovXG4vLyBUaGUgR3JhcGhRTC5qcyB2ZXJzaW9uIGluZm8uXG5leHBvcnQgeyB2ZXJzaW9uLCB2ZXJzaW9uSW5mbyB9IGZyb20gJy4vdmVyc2lvbi5tanMnOyAvLyBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBpbnRvIGZ1bGZpbGxpbmcgYSBHcmFwaFFMIHJlcXVlc3QuXG5cbmV4cG9ydCB7IGdyYXBocWwsIGdyYXBocWxTeW5jIH0gZnJvbSAnLi9ncmFwaHFsLm1qcyc7IC8vIENyZWF0ZSBhbmQgb3BlcmF0ZSBvbiBHcmFwaFFMIHR5cGUgZGVmaW5pdGlvbnMgYW5kIHNjaGVtYS5cblxuZXhwb3J0IHtcbiAgcmVzb2x2ZU9iak1hcFRodW5rLFxuICByZXNvbHZlUmVhZG9ubHlBcnJheVRodW5rLCAvLyBEZWZpbml0aW9uc1xuICBHcmFwaFFMU2NoZW1hLFxuICBHcmFwaFFMRGlyZWN0aXZlLFxuICBHcmFwaFFMU2NhbGFyVHlwZSxcbiAgR3JhcGhRTE9iamVjdFR5cGUsXG4gIEdyYXBoUUxJbnRlcmZhY2VUeXBlLFxuICBHcmFwaFFMVW5pb25UeXBlLFxuICBHcmFwaFFMRW51bVR5cGUsXG4gIEdyYXBoUUxJbnB1dE9iamVjdFR5cGUsXG4gIEdyYXBoUUxMaXN0LFxuICBHcmFwaFFMTm9uTnVsbCwgLy8gU3RhbmRhcmQgR3JhcGhRTCBTY2FsYXJzXG4gIHNwZWNpZmllZFNjYWxhclR5cGVzLFxuICBHcmFwaFFMSW50LFxuICBHcmFwaFFMRmxvYXQsXG4gIEdyYXBoUUxTdHJpbmcsXG4gIEdyYXBoUUxCb29sZWFuLFxuICBHcmFwaFFMSUQsIC8vIEludCBib3VuZGFyaWVzIGNvbnN0YW50c1xuICBHUkFQSFFMX01BWF9JTlQsXG4gIEdSQVBIUUxfTUlOX0lOVCwgLy8gQnVpbHQtaW4gRGlyZWN0aXZlcyBkZWZpbmVkIGJ5IHRoZSBTcGVjXG4gIHNwZWNpZmllZERpcmVjdGl2ZXMsXG4gIEdyYXBoUUxJbmNsdWRlRGlyZWN0aXZlLFxuICBHcmFwaFFMU2tpcERpcmVjdGl2ZSxcbiAgR3JhcGhRTERlcHJlY2F0ZWREaXJlY3RpdmUsXG4gIEdyYXBoUUxTcGVjaWZpZWRCeURpcmVjdGl2ZSwgLy8gXCJFbnVtXCIgb2YgVHlwZSBLaW5kc1xuICBUeXBlS2luZCwgLy8gQ29uc3RhbnQgRGVwcmVjYXRpb24gUmVhc29uXG4gIERFRkFVTFRfREVQUkVDQVRJT05fUkVBU09OLCAvLyBHcmFwaFFMIFR5cGVzIGZvciBpbnRyb3NwZWN0aW9uLlxuICBpbnRyb3NwZWN0aW9uVHlwZXMsXG4gIF9fU2NoZW1hLFxuICBfX0RpcmVjdGl2ZSxcbiAgX19EaXJlY3RpdmVMb2NhdGlvbixcbiAgX19UeXBlLFxuICBfX0ZpZWxkLFxuICBfX0lucHV0VmFsdWUsXG4gIF9fRW51bVZhbHVlLFxuICBfX1R5cGVLaW5kLCAvLyBNZXRhLWZpZWxkIGRlZmluaXRpb25zLlxuICBTY2hlbWFNZXRhRmllbGREZWYsXG4gIFR5cGVNZXRhRmllbGREZWYsXG4gIFR5cGVOYW1lTWV0YUZpZWxkRGVmLCAvLyBQcmVkaWNhdGVzXG4gIGlzU2NoZW1hLFxuICBpc0RpcmVjdGl2ZSxcbiAgaXNUeXBlLFxuICBpc1NjYWxhclR5cGUsXG4gIGlzT2JqZWN0VHlwZSxcbiAgaXNJbnRlcmZhY2VUeXBlLFxuICBpc1VuaW9uVHlwZSxcbiAgaXNFbnVtVHlwZSxcbiAgaXNJbnB1dE9iamVjdFR5cGUsXG4gIGlzTGlzdFR5cGUsXG4gIGlzTm9uTnVsbFR5cGUsXG4gIGlzSW5wdXRUeXBlLFxuICBpc091dHB1dFR5cGUsXG4gIGlzTGVhZlR5cGUsXG4gIGlzQ29tcG9zaXRlVHlwZSxcbiAgaXNBYnN0cmFjdFR5cGUsXG4gIGlzV3JhcHBpbmdUeXBlLFxuICBpc051bGxhYmxlVHlwZSxcbiAgaXNOYW1lZFR5cGUsXG4gIGlzUmVxdWlyZWRBcmd1bWVudCxcbiAgaXNSZXF1aXJlZElucHV0RmllbGQsXG4gIGlzU3BlY2lmaWVkU2NhbGFyVHlwZSxcbiAgaXNJbnRyb3NwZWN0aW9uVHlwZSxcbiAgaXNTcGVjaWZpZWREaXJlY3RpdmUsIC8vIEFzc2VydGlvbnNcbiAgYXNzZXJ0U2NoZW1hLFxuICBhc3NlcnREaXJlY3RpdmUsXG4gIGFzc2VydFR5cGUsXG4gIGFzc2VydFNjYWxhclR5cGUsXG4gIGFzc2VydE9iamVjdFR5cGUsXG4gIGFzc2VydEludGVyZmFjZVR5cGUsXG4gIGFzc2VydFVuaW9uVHlwZSxcbiAgYXNzZXJ0RW51bVR5cGUsXG4gIGFzc2VydElucHV0T2JqZWN0VHlwZSxcbiAgYXNzZXJ0TGlzdFR5cGUsXG4gIGFzc2VydE5vbk51bGxUeXBlLFxuICBhc3NlcnRJbnB1dFR5cGUsXG4gIGFzc2VydE91dHB1dFR5cGUsXG4gIGFzc2VydExlYWZUeXBlLFxuICBhc3NlcnRDb21wb3NpdGVUeXBlLFxuICBhc3NlcnRBYnN0cmFjdFR5cGUsXG4gIGFzc2VydFdyYXBwaW5nVHlwZSxcbiAgYXNzZXJ0TnVsbGFibGVUeXBlLFxuICBhc3NlcnROYW1lZFR5cGUsIC8vIFVuLW1vZGlmaWVyc1xuICBnZXROdWxsYWJsZVR5cGUsXG4gIGdldE5hbWVkVHlwZSwgLy8gVmFsaWRhdGUgR3JhcGhRTCBzY2hlbWEuXG4gIHZhbGlkYXRlU2NoZW1hLFxuICBhc3NlcnRWYWxpZFNjaGVtYSwgLy8gVXBob2xkcyB0aGUgc3BlYyBydWxlcyBhYm91dCBuYW1pbmcuXG4gIGFzc2VydE5hbWUsXG4gIGFzc2VydEVudW1WYWx1ZU5hbWUsXG59IGZyb20gJy4vdHlwZS9pbmRleC5tanMnO1xuLy8gUGFyc2UgYW5kIG9wZXJhdGUgb24gR3JhcGhRTCBsYW5ndWFnZSBzb3VyY2UgZmlsZXMuXG5leHBvcnQge1xuICBUb2tlbixcbiAgU291cmNlLFxuICBMb2NhdGlvbixcbiAgT3BlcmF0aW9uVHlwZU5vZGUsXG4gIGdldExvY2F0aW9uLCAvLyBQcmludCBzb3VyY2UgbG9jYXRpb24uXG4gIHByaW50TG9jYXRpb24sXG4gIHByaW50U291cmNlTG9jYXRpb24sIC8vIExleFxuICBMZXhlcixcbiAgVG9rZW5LaW5kLCAvLyBQYXJzZVxuICBwYXJzZSxcbiAgcGFyc2VWYWx1ZSxcbiAgcGFyc2VDb25zdFZhbHVlLFxuICBwYXJzZVR5cGUsIC8vIFByaW50XG4gIHByaW50LCAvLyBWaXNpdFxuICB2aXNpdCxcbiAgdmlzaXRJblBhcmFsbGVsLFxuICBnZXRWaXNpdEZuLFxuICBnZXRFbnRlckxlYXZlRm9yS2luZCxcbiAgQlJFQUssXG4gIEtpbmQsXG4gIERpcmVjdGl2ZUxvY2F0aW9uLCAvLyBQcmVkaWNhdGVzXG4gIGlzRGVmaW5pdGlvbk5vZGUsXG4gIGlzRXhlY3V0YWJsZURlZmluaXRpb25Ob2RlLFxuICBpc1NlbGVjdGlvbk5vZGUsXG4gIGlzVmFsdWVOb2RlLFxuICBpc0NvbnN0VmFsdWVOb2RlLFxuICBpc1R5cGVOb2RlLFxuICBpc1R5cGVTeXN0ZW1EZWZpbml0aW9uTm9kZSxcbiAgaXNUeXBlRGVmaW5pdGlvbk5vZGUsXG4gIGlzVHlwZVN5c3RlbUV4dGVuc2lvbk5vZGUsXG4gIGlzVHlwZUV4dGVuc2lvbk5vZGUsXG59IGZyb20gJy4vbGFuZ3VhZ2UvaW5kZXgubWpzJztcbi8vIEV4ZWN1dGUgR3JhcGhRTCBxdWVyaWVzLlxuZXhwb3J0IHtcbiAgZXhlY3V0ZSxcbiAgZXhlY3V0ZVN5bmMsXG4gIGRlZmF1bHRGaWVsZFJlc29sdmVyLFxuICBkZWZhdWx0VHlwZVJlc29sdmVyLFxuICByZXNwb25zZVBhdGhBc0FycmF5LFxuICBnZXRBcmd1bWVudFZhbHVlcyxcbiAgZ2V0VmFyaWFibGVWYWx1ZXMsXG4gIGdldERpcmVjdGl2ZVZhbHVlcyxcbiAgc3Vic2NyaWJlLFxuICBjcmVhdGVTb3VyY2VFdmVudFN0cmVhbSxcbn0gZnJvbSAnLi9leGVjdXRpb24vaW5kZXgubWpzJztcbi8vIFZhbGlkYXRlIEdyYXBoUUwgZG9jdW1lbnRzLlxuZXhwb3J0IHtcbiAgdmFsaWRhdGUsXG4gIFZhbGlkYXRpb25Db250ZXh0LCAvLyBBbGwgdmFsaWRhdGlvbiBydWxlcyBpbiB0aGUgR3JhcGhRTCBTcGVjaWZpY2F0aW9uLlxuICBzcGVjaWZpZWRSdWxlcywgLy8gSW5kaXZpZHVhbCB2YWxpZGF0aW9uIHJ1bGVzLlxuICBFeGVjdXRhYmxlRGVmaW5pdGlvbnNSdWxlLFxuICBGaWVsZHNPbkNvcnJlY3RUeXBlUnVsZSxcbiAgRnJhZ21lbnRzT25Db21wb3NpdGVUeXBlc1J1bGUsXG4gIEtub3duQXJndW1lbnROYW1lc1J1bGUsXG4gIEtub3duRGlyZWN0aXZlc1J1bGUsXG4gIEtub3duRnJhZ21lbnROYW1lc1J1bGUsXG4gIEtub3duVHlwZU5hbWVzUnVsZSxcbiAgTG9uZUFub255bW91c09wZXJhdGlvblJ1bGUsXG4gIE5vRnJhZ21lbnRDeWNsZXNSdWxlLFxuICBOb1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUsXG4gIE5vVW51c2VkRnJhZ21lbnRzUnVsZSxcbiAgTm9VbnVzZWRWYXJpYWJsZXNSdWxlLFxuICBPdmVybGFwcGluZ0ZpZWxkc0NhbkJlTWVyZ2VkUnVsZSxcbiAgUG9zc2libGVGcmFnbWVudFNwcmVhZHNSdWxlLFxuICBQcm92aWRlZFJlcXVpcmVkQXJndW1lbnRzUnVsZSxcbiAgU2NhbGFyTGVhZnNSdWxlLFxuICBTaW5nbGVGaWVsZFN1YnNjcmlwdGlvbnNSdWxlLFxuICBVbmlxdWVBcmd1bWVudE5hbWVzUnVsZSxcbiAgVW5pcXVlRGlyZWN0aXZlc1BlckxvY2F0aW9uUnVsZSxcbiAgVW5pcXVlRnJhZ21lbnROYW1lc1J1bGUsXG4gIFVuaXF1ZUlucHV0RmllbGROYW1lc1J1bGUsXG4gIFVuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZSxcbiAgVW5pcXVlVmFyaWFibGVOYW1lc1J1bGUsXG4gIFZhbHVlc09mQ29ycmVjdFR5cGVSdWxlLFxuICBWYXJpYWJsZXNBcmVJbnB1dFR5cGVzUnVsZSxcbiAgVmFyaWFibGVzSW5BbGxvd2VkUG9zaXRpb25SdWxlLCAvLyBTREwtc3BlY2lmaWMgdmFsaWRhdGlvbiBydWxlc1xuICBMb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUsXG4gIFVuaXF1ZU9wZXJhdGlvblR5cGVzUnVsZSxcbiAgVW5pcXVlVHlwZU5hbWVzUnVsZSxcbiAgVW5pcXVlRW51bVZhbHVlTmFtZXNSdWxlLFxuICBVbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUsXG4gIFVuaXF1ZUFyZ3VtZW50RGVmaW5pdGlvbk5hbWVzUnVsZSxcbiAgVW5pcXVlRGlyZWN0aXZlTmFtZXNSdWxlLFxuICBQb3NzaWJsZVR5cGVFeHRlbnNpb25zUnVsZSwgLy8gQ3VzdG9tIHZhbGlkYXRpb24gcnVsZXNcbiAgTm9EZXByZWNhdGVkQ3VzdG9tUnVsZSxcbiAgTm9TY2hlbWFJbnRyb3NwZWN0aW9uQ3VzdG9tUnVsZSxcbn0gZnJvbSAnLi92YWxpZGF0aW9uL2luZGV4Lm1qcyc7XG4vLyBDcmVhdGUsIGZvcm1hdCwgYW5kIHByaW50IEdyYXBoUUwgZXJyb3JzLlxuZXhwb3J0IHtcbiAgR3JhcGhRTEVycm9yLFxuICBzeW50YXhFcnJvcixcbiAgbG9jYXRlZEVycm9yLFxuICBwcmludEVycm9yLFxuICBmb3JtYXRFcnJvcixcbn0gZnJvbSAnLi9lcnJvci9pbmRleC5tanMnO1xuLy8gVXRpbGl0aWVzIGZvciBvcGVyYXRpbmcgb24gR3JhcGhRTCB0eXBlIHNjaGVtYSBhbmQgcGFyc2VkIHNvdXJjZXMuXG5leHBvcnQge1xuICAvLyBQcm9kdWNlIHRoZSBHcmFwaFFMIHF1ZXJ5IHJlY29tbWVuZGVkIGZvciBhIGZ1bGwgc2NoZW1hIGludHJvc3BlY3Rpb24uXG4gIC8vIEFjY2VwdHMgb3B0aW9uYWwgSW50cm9zcGVjdGlvbk9wdGlvbnMuXG4gIGdldEludHJvc3BlY3Rpb25RdWVyeSwgLy8gR2V0cyB0aGUgdGFyZ2V0IE9wZXJhdGlvbiBmcm9tIGEgRG9jdW1lbnQuXG4gIGdldE9wZXJhdGlvbkFTVCwgLy8gR2V0cyB0aGUgVHlwZSBmb3IgdGhlIHRhcmdldCBPcGVyYXRpb24gQVNULlxuICBnZXRPcGVyYXRpb25Sb290VHlwZSwgLy8gQ29udmVydCBhIEdyYXBoUUxTY2hlbWEgdG8gYW4gSW50cm9zcGVjdGlvblF1ZXJ5LlxuICBpbnRyb3NwZWN0aW9uRnJvbVNjaGVtYSwgLy8gQnVpbGQgYSBHcmFwaFFMU2NoZW1hIGZyb20gYW4gaW50cm9zcGVjdGlvbiByZXN1bHQuXG4gIGJ1aWxkQ2xpZW50U2NoZW1hLCAvLyBCdWlsZCBhIEdyYXBoUUxTY2hlbWEgZnJvbSBhIHBhcnNlZCBHcmFwaFFMIFNjaGVtYSBsYW5ndWFnZSBBU1QuXG4gIGJ1aWxkQVNUU2NoZW1hLCAvLyBCdWlsZCBhIEdyYXBoUUxTY2hlbWEgZnJvbSBhIEdyYXBoUUwgc2NoZW1hIGxhbmd1YWdlIGRvY3VtZW50LlxuICBidWlsZFNjaGVtYSwgLy8gRXh0ZW5kcyBhbiBleGlzdGluZyBHcmFwaFFMU2NoZW1hIGZyb20gYSBwYXJzZWQgR3JhcGhRTCBTY2hlbWEgbGFuZ3VhZ2UgQVNULlxuICBleHRlbmRTY2hlbWEsIC8vIFNvcnQgYSBHcmFwaFFMU2NoZW1hLlxuICBsZXhpY29ncmFwaGljU29ydFNjaGVtYSwgLy8gUHJpbnQgYSBHcmFwaFFMU2NoZW1hIHRvIEdyYXBoUUwgU2NoZW1hIGxhbmd1YWdlLlxuICBwcmludFNjaGVtYSwgLy8gUHJpbnQgYSBHcmFwaFFMVHlwZSB0byBHcmFwaFFMIFNjaGVtYSBsYW5ndWFnZS5cbiAgcHJpbnRUeXBlLCAvLyBQcmludHMgdGhlIGJ1aWx0LWluIGludHJvc3BlY3Rpb24gc2NoZW1hIGluIHRoZSBTY2hlbWEgTGFuZ3VhZ2UgZm9ybWF0LlxuICBwcmludEludHJvc3BlY3Rpb25TY2hlbWEsIC8vIENyZWF0ZSBhIEdyYXBoUUxUeXBlIGZyb20gYSBHcmFwaFFMIGxhbmd1YWdlIEFTVC5cbiAgdHlwZUZyb21BU1QsIC8vIENyZWF0ZSBhIEphdmFTY3JpcHQgdmFsdWUgZnJvbSBhIEdyYXBoUUwgbGFuZ3VhZ2UgQVNUIHdpdGggYSBUeXBlLlxuICB2YWx1ZUZyb21BU1QsIC8vIENyZWF0ZSBhIEphdmFTY3JpcHQgdmFsdWUgZnJvbSBhIEdyYXBoUUwgbGFuZ3VhZ2UgQVNUIHdpdGhvdXQgYSBUeXBlLlxuICB2YWx1ZUZyb21BU1RVbnR5cGVkLCAvLyBDcmVhdGUgYSBHcmFwaFFMIGxhbmd1YWdlIEFTVCBmcm9tIGEgSmF2YVNjcmlwdCB2YWx1ZS5cbiAgYXN0RnJvbVZhbHVlLCAvLyBBIGhlbHBlciB0byB1c2Ugd2l0aGluIHJlY3Vyc2l2ZS1kZXNjZW50IHZpc2l0b3JzIHdoaWNoIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIEdyYXBoUUwgdHlwZSBzeXN0ZW0uXG4gIFR5cGVJbmZvLFxuICB2aXNpdFdpdGhUeXBlSW5mbywgLy8gQ29lcmNlcyBhIEphdmFTY3JpcHQgdmFsdWUgdG8gYSBHcmFwaFFMIHR5cGUsIG9yIHByb2R1Y2VzIGVycm9ycy5cbiAgY29lcmNlSW5wdXRWYWx1ZSwgLy8gQ29uY2F0ZW5hdGVzIG11bHRpcGxlIEFTVCB0b2dldGhlci5cbiAgY29uY2F0QVNULCAvLyBTZXBhcmF0ZXMgYW4gQVNUIGludG8gYW4gQVNUIHBlciBPcGVyYXRpb24uXG4gIHNlcGFyYXRlT3BlcmF0aW9ucywgLy8gU3RyaXBzIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHNpZ25pZmljYW50IHRvIHRoZSB2YWxpZGl0eSBvciBleGVjdXRpb24gb2YgYSBHcmFwaFFMIGRvY3VtZW50LlxuICBzdHJpcElnbm9yZWRDaGFyYWN0ZXJzLCAvLyBDb21wYXJhdG9ycyBmb3IgdHlwZXNcbiAgaXNFcXVhbFR5cGUsXG4gIGlzVHlwZVN1YlR5cGVPZixcbiAgZG9UeXBlc092ZXJsYXAsIC8vIEFzc2VydHMgYSBzdHJpbmcgaXMgYSB2YWxpZCBHcmFwaFFMIG5hbWUuXG4gIGFzc2VydFZhbGlkTmFtZSwgLy8gRGV0ZXJtaW5lIGlmIGEgc3RyaW5nIGlzIGEgdmFsaWQgR3JhcGhRTCBuYW1lLlxuICBpc1ZhbGlkTmFtZUVycm9yLCAvLyBDb21wYXJlcyB0d28gR3JhcGhRTFNjaGVtYXMgYW5kIGRldGVjdHMgYnJlYWtpbmcgY2hhbmdlcy5cbiAgQnJlYWtpbmdDaGFuZ2VUeXBlLFxuICBEYW5nZXJvdXNDaGFuZ2VUeXBlLFxuICBmaW5kQnJlYWtpbmdDaGFuZ2VzLFxuICBmaW5kRGFuZ2Vyb3VzQ2hhbmdlcyxcbn0gZnJvbSAnLi91dGlsaXRpZXMvaW5kZXgubWpzJztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEwRkE7QUFDQTtBQWlDQTtBQUNBO0FBWUE7QUFDQTtBQXlDQTtBQUNBO0FBT0E7QUFDQTtBQW1DQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/index.mjs\n");
|
325 |
|
326 | }),
|
327 |
|
328 | "../../../node_modules/graphql/jsutils/Path.mjs":
|
329 |
|
330 |
|
331 |
|
332 |
|
333 | (function(module, __webpack_exports__, __webpack_require__) {
|
334 |
|
335 | "use strict";
|
336 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addPath\", function() { return addPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToArray\", function() { return pathToArray; });\n/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nfunction addPath(prev, key, typename) {\n return {\n prev,\n key,\n typename,\n };\n}\n/**\n * Given a Path, return an Array of the path keys.\n */\n\nfunction pathToArray(path) {\n const flattened = [];\n let curr = path;\n\n while (curr) {\n flattened.push(curr.key);\n curr = curr.prev;\n }\n\n return flattened.reverse();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9QYXRoLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvUGF0aC5tanM/MmVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdpdmVuIGEgUGF0aCBhbmQgYSBrZXksIHJldHVybiBhIG5ldyBQYXRoIGNvbnRhaW5pbmcgdGhlIG5ldyBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRQYXRoKHByZXYsIGtleSwgdHlwZW5hbWUpIHtcbiAgcmV0dXJuIHtcbiAgICBwcmV2LFxuICAgIGtleSxcbiAgICB0eXBlbmFtZSxcbiAgfTtcbn1cbi8qKlxuICogR2l2ZW4gYSBQYXRoLCByZXR1cm4gYW4gQXJyYXkgb2YgdGhlIHBhdGgga2V5cy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcGF0aFRvQXJyYXkocGF0aCkge1xuICBjb25zdCBmbGF0dGVuZWQgPSBbXTtcbiAgbGV0IGN1cnIgPSBwYXRoO1xuXG4gIHdoaWxlIChjdXJyKSB7XG4gICAgZmxhdHRlbmVkLnB1c2goY3Vyci5rZXkpO1xuICAgIGN1cnIgPSBjdXJyLnByZXY7XG4gIH1cblxuICByZXR1cm4gZmxhdHRlbmVkLnJldmVyc2UoKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/Path.mjs\n");
|
337 |
|
338 | }),
|
339 |
|
340 | "../../../node_modules/graphql/jsutils/devAssert.mjs":
|
341 |
|
342 |
|
343 |
|
344 |
|
345 | (function(module, __webpack_exports__, __webpack_require__) {
|
346 |
|
347 | "use strict";
|
348 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"devAssert\", function() { return devAssert; });\nfunction devAssert(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9kZXZBc3NlcnQubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9kZXZBc3NlcnQubWpzP2ZhMmQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGRldkFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgY29uc3QgYm9vbGVhbkNvbmRpdGlvbiA9IEJvb2xlYW4oY29uZGl0aW9uKTtcblxuICBpZiAoIWJvb2xlYW5Db25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/devAssert.mjs\n");
|
349 |
|
350 | }),
|
351 |
|
352 | "../../../node_modules/graphql/jsutils/didYouMean.mjs":
|
353 |
|
354 |
|
355 |
|
356 |
|
357 | (function(module, __webpack_exports__, __webpack_require__) {
|
358 |
|
359 | "use strict";
|
360 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"didYouMean\", function() { return didYouMean; });\nconst MAX_SUGGESTIONS = 5;\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\n\nfunction didYouMean(firstArg, secondArg) {\n const [subMessage, suggestionsArg] = secondArg\n ? [firstArg, secondArg]\n : [undefined, firstArg];\n let message = ' Did you mean ';\n\n if (subMessage) {\n message += subMessage + ' ';\n }\n\n const suggestions = suggestionsArg.map((x) => `\"${x}\"`);\n\n switch (suggestions.length) {\n case 0:\n return '';\n\n case 1:\n return message + suggestions[0] + '?';\n\n case 2:\n return message + suggestions[0] + ' or ' + suggestions[1] + '?';\n }\n\n const selected = suggestions.slice(0, MAX_SUGGESTIONS);\n const lastItem = selected.pop();\n return message + selected.join(', ') + ', or ' + lastItem + '?';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9kaWRZb3VNZWFuLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvZGlkWW91TWVhbi5tanM/ZWU1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBNQVhfU1VHR0VTVElPTlMgPSA1O1xuLyoqXG4gKiBHaXZlbiBbIEEsIEIsIEMgXSByZXR1cm4gJyBEaWQgeW91IG1lYW4gQSwgQiwgb3IgQz8nLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkaWRZb3VNZWFuKGZpcnN0QXJnLCBzZWNvbmRBcmcpIHtcbiAgY29uc3QgW3N1Yk1lc3NhZ2UsIHN1Z2dlc3Rpb25zQXJnXSA9IHNlY29uZEFyZ1xuICAgID8gW2ZpcnN0QXJnLCBzZWNvbmRBcmddXG4gICAgOiBbdW5kZWZpbmVkLCBmaXJzdEFyZ107XG4gIGxldCBtZXNzYWdlID0gJyBEaWQgeW91IG1lYW4gJztcblxuICBpZiAoc3ViTWVzc2FnZSkge1xuICAgIG1lc3NhZ2UgKz0gc3ViTWVzc2FnZSArICcgJztcbiAgfVxuXG4gIGNvbnN0IHN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnNBcmcubWFwKCh4KSA9PiBgXCIke3h9XCJgKTtcblxuICBzd2l0Y2ggKHN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiAnJztcblxuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBtZXNzYWdlICsgc3VnZ2VzdGlvbnNbMF0gKyAnPyc7XG5cbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gbWVzc2FnZSArIHN1Z2dlc3Rpb25zWzBdICsgJyBvciAnICsgc3VnZ2VzdGlvbnNbMV0gKyAnPyc7XG4gIH1cblxuICBjb25zdCBzZWxlY3RlZCA9IHN1Z2dlc3Rpb25zLnNsaWNlKDAsIE1BWF9TVUdHRVNUSU9OUyk7XG4gIGNvbnN0IGxhc3RJdGVtID0gc2VsZWN0ZWQucG9wKCk7XG4gIHJldHVybiBtZXNzYWdlICsgc2VsZWN0ZWQuam9pbignLCAnKSArICcsIG9yICcgKyBsYXN0SXRlbSArICc/Jztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/didYouMean.mjs\n");
|
361 |
|
362 | }),
|
363 |
|
364 | "../../../node_modules/graphql/jsutils/groupBy.mjs":
|
365 |
|
366 |
|
367 |
|
368 |
|
369 | (function(module, __webpack_exports__, __webpack_require__) {
|
370 |
|
371 | "use strict";
|
372 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"groupBy\", function() { return groupBy; });\n/**\n * Groups array items into a Map, given a function to produce grouping key.\n */\nfunction groupBy(list, keyFn) {\n const result = new Map();\n\n for (const item of list) {\n const key = keyFn(item);\n const group = result.get(key);\n\n if (group === undefined) {\n result.set(key, [item]);\n } else {\n group.push(item);\n }\n }\n\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9ncm91cEJ5Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvZ3JvdXBCeS5tanM/ZDc5ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdyb3VwcyBhcnJheSBpdGVtcyBpbnRvIGEgTWFwLCBnaXZlbiBhIGZ1bmN0aW9uIHRvIHByb2R1Y2UgZ3JvdXBpbmcga2V5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBCeShsaXN0LCBrZXlGbikge1xuICBjb25zdCByZXN1bHQgPSBuZXcgTWFwKCk7XG5cbiAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcbiAgICBjb25zdCBrZXkgPSBrZXlGbihpdGVtKTtcbiAgICBjb25zdCBncm91cCA9IHJlc3VsdC5nZXQoa2V5KTtcblxuICAgIGlmIChncm91cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHQuc2V0KGtleSwgW2l0ZW1dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXAucHVzaChpdGVtKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/groupBy.mjs\n");
|
373 |
|
374 | }),
|
375 |
|
376 | "../../../node_modules/graphql/jsutils/identityFunc.mjs":
|
377 |
|
378 |
|
379 |
|
380 |
|
381 | (function(module, __webpack_exports__, __webpack_require__) {
|
382 |
|
383 | "use strict";
|
384 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identityFunc\", function() { return identityFunc; });\n/**\n * Returns the first argument it receives.\n */\nfunction identityFunc(x) {\n return x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pZGVudGl0eUZ1bmMubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pZGVudGl0eUZ1bmMubWpzP2Q5ZTIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBpdCByZWNlaXZlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aXR5RnVuYyh4KSB7XG4gIHJldHVybiB4O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/identityFunc.mjs\n");
|
385 |
|
386 | }),
|
387 |
|
388 | "../../../node_modules/graphql/jsutils/inspect.mjs":
|
389 |
|
390 |
|
391 |
|
392 |
|
393 | (function(module, __webpack_exports__, __webpack_require__) {
|
394 |
|
395 | "use strict";
|
396 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inspect\", function() { return inspect; });\nconst MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nfunction inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? `[function ${value.name}]` : '[function]';\n\n case 'object':\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (value === null) {\n return 'null';\n }\n\n if (previouslySeenValues.includes(value)) {\n return '[Circular]';\n }\n\n const seenValues = [...previouslySeenValues, value];\n\n if (isJSONable(value)) {\n const jsonValue = value.toJSON(); // check for infinite recursion\n\n if (jsonValue !== value) {\n return typeof jsonValue === 'string'\n ? jsonValue\n : formatValue(jsonValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction isJSONable(value) {\n return typeof value.toJSON === 'function';\n}\n\nfunction formatObject(object, seenValues) {\n const entries = Object.entries(object);\n\n if (entries.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n const properties = entries.map(\n ([key, value]) => key + ': ' + formatValue(value, seenValues),\n );\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n const remaining = array.length - len;\n const items = [];\n\n for (let i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(`... ${remaining} more items`);\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag(object) {\n const tag = Object.prototype.toString\n .call(object)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n const name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pbnNwZWN0Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvaW5zcGVjdC5tanM/ZTJmYSJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBNQVhfQVJSQVlfTEVOR1RIID0gMTA7XG5jb25zdCBNQVhfUkVDVVJTSVZFX0RFUFRIID0gMjtcbi8qKlxuICogVXNlZCB0byBwcmludCB2YWx1ZXMgaW4gZXJyb3IgbWVzc2FnZXMuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3QodmFsdWUpIHtcbiAgcmV0dXJuIGZvcm1hdFZhbHVlKHZhbHVlLCBbXSk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlLCBzZWVuVmFsdWVzKSB7XG4gIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG5cbiAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICByZXR1cm4gdmFsdWUubmFtZSA/IGBbZnVuY3Rpb24gJHt2YWx1ZS5uYW1lfV1gIDogJ1tmdW5jdGlvbl0nO1xuXG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIHJldHVybiBmb3JtYXRPYmplY3RWYWx1ZSh2YWx1ZSwgc2VlblZhbHVlcyk7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0T2JqZWN0VmFsdWUodmFsdWUsIHByZXZpb3VzbHlTZWVuVmFsdWVzKSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiAnbnVsbCc7XG4gIH1cblxuICBpZiAocHJldmlvdXNseVNlZW5WYWx1ZXMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgcmV0dXJuICdbQ2lyY3VsYXJdJztcbiAgfVxuXG4gIGNvbnN0IHNlZW5WYWx1ZXMgPSBbLi4ucHJldmlvdXNseVNlZW5WYWx1ZXMsIHZhbHVlXTtcblxuICBpZiAoaXNKU09OYWJsZSh2YWx1ZSkpIHtcbiAgICBjb25zdCBqc29uVmFsdWUgPSB2YWx1ZS50b0pTT04oKTsgLy8gY2hlY2sgZm9yIGluZmluaXRlIHJlY3Vyc2lvblxuXG4gICAgaWYgKGpzb25WYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YganNvblZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICA/IGpzb25WYWx1ZVxuICAgICAgICA6IGZvcm1hdFZhbHVlKGpzb25WYWx1ZSwgc2VlblZhbHVlcyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZvcm1hdEFycmF5KHZhbHVlLCBzZWVuVmFsdWVzKTtcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRPYmplY3QodmFsdWUsIHNlZW5WYWx1ZXMpO1xufVxuXG5mdW5jdGlvbiBpc0pTT05hYmxlKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUudG9KU09OID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRPYmplY3Qob2JqZWN0LCBzZWVuVmFsdWVzKSB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhvYmplY3QpO1xuXG4gIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAne30nO1xuICB9XG5cbiAgaWYgKHNlZW5WYWx1ZXMubGVuZ3RoID4gTUFYX1JFQ1VSU0lWRV9ERVBUSCkge1xuICAgIHJldHVybiAnWycgKyBnZXRPYmplY3RUYWcob2JqZWN0KSArICddJztcbiAgfVxuXG4gIGNvbnN0IHByb3BlcnRpZXMgPSBlbnRyaWVzLm1hcChcbiAgICAoW2tleSwgdmFsdWVdKSA9PiBrZXkgKyAnOiAnICsgZm9ybWF0VmFsdWUodmFsdWUsIHNlZW5WYWx1ZXMpLFxuICApO1xuICByZXR1cm4gJ3sgJyArIHByb3BlcnRpZXMuam9pbignLCAnKSArICcgfSc7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGFycmF5LCBzZWVuVmFsdWVzKSB7XG4gIGlmIChhcnJheS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJ1tdJztcbiAgfVxuXG4gIGlmIChzZWVuVmFsdWVzLmxlbmd0aCA+IE1BWF9SRUNVUlNJVkVfREVQVEgpIHtcbiAgICByZXR1cm4gJ1tBcnJheV0nO1xuICB9XG5cbiAgY29uc3QgbGVuID0gTWF0aC5taW4oTUFYX0FSUkFZX0xFTkdUSCwgYXJyYXkubGVuZ3RoKTtcbiAgY29uc3QgcmVtYWluaW5nID0gYXJyYXkubGVuZ3RoIC0gbGVuO1xuICBjb25zdCBpdGVtcyA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpdGVtcy5wdXNoKGZvcm1hdFZhbHVlKGFycmF5W2ldLCBzZWVuVmFsdWVzKSk7XG4gIH1cblxuICBpZiAocmVtYWluaW5nID09PSAxKSB7XG4gICAgaXRlbXMucHVzaCgnLi4uIDEgbW9yZSBpdGVtJyk7XG4gIH0gZWxzZSBpZiAocmVtYWluaW5nID4gMSkge1xuICAgIGl0ZW1zLnB1c2goYC4uLiAke3JlbWFpbmluZ30gbW9yZSBpdGVtc2ApO1xuICB9XG5cbiAgcmV0dXJuICdbJyArIGl0ZW1zLmpvaW4oJywgJykgKyAnXSc7XG59XG5cbmZ1bmN0aW9uIGdldE9iamVjdFRhZyhvYmplY3QpIHtcbiAgY29uc3QgdGFnID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1xuICAgIC5jYWxsKG9iamVjdClcbiAgICAucmVwbGFjZSgvXlxcW29iamVjdCAvLCAnJylcbiAgICAucmVwbGFjZSgvXSQvLCAnJyk7XG5cbiAgaWYgKHRhZyA9PT0gJ09iamVjdCcgJiYgdHlwZW9mIG9iamVjdC5jb25zdHJ1Y3RvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IG5hbWUgPSBvYmplY3QuY29uc3RydWN0b3IubmFtZTtcblxuICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgJiYgbmFtZSAhPT0gJycpIHtcbiAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YWc7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/inspect.mjs\n");
|
397 |
|
398 | }),
|
399 |
|
400 | "../../../node_modules/graphql/jsutils/instanceOf.mjs":
|
401 |
|
402 |
|
403 |
|
404 |
|
405 | (function(module, __webpack_exports__, __webpack_require__) {
|
406 |
|
407 | "use strict";
|
408 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"instanceOf\", function() { return instanceOf; });\n/* harmony import */ var _inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n * See: https://webpack.js.org/guides/production/\n */\n\nconst instanceOf =\n /* c8 ignore next 6 */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n // eslint-disable-next-line no-undef\n false\n ? undefined\n : function instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (typeof value === 'object' && value !== null) {\n var _value$constructor;\n\n // Prefer Symbol.toStringTag since it is immune to minification.\n const className = constructor.prototype[Symbol.toStringTag];\n const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n ? value[Symbol.toStringTag]\n : (_value$constructor = value.constructor) === null ||\n _value$constructor === void 0\n ? void 0\n : _value$constructor.name;\n\n if (className === valueClassName) {\n const stringifiedValue = Object(_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(value);\n throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n\nEnsure that there is only one instance of \"graphql\" in the node_modules\ndirectory. If different versions of \"graphql\" are the dependencies of other\nrelied on modules, use \"resolutions\" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate \"graphql\" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`);\n }\n }\n\n return false;\n };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pbnN0YW5jZU9mLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvaW5zdGFuY2VPZi5tanM/Y2RiYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi9pbnNwZWN0Lm1qcyc7XG4vKipcbiAqIEEgcmVwbGFjZW1lbnQgZm9yIGluc3RhbmNlb2Ygd2hpY2ggaW5jbHVkZXMgYW4gZXJyb3Igd2FybmluZyB3aGVuIG11bHRpLXJlYWxtXG4gKiBjb25zdHJ1Y3RvcnMgYXJlIGRldGVjdGVkLlxuICogU2VlOiBodHRwczovL2V4cHJlc3Nqcy5jb20vZW4vYWR2YW5jZWQvYmVzdC1wcmFjdGljZS1wZXJmb3JtYW5jZS5odG1sI3NldC1ub2RlX2Vudi10by1wcm9kdWN0aW9uXG4gKiBTZWU6IGh0dHBzOi8vd2VicGFjay5qcy5vcmcvZ3VpZGVzL3Byb2R1Y3Rpb24vXG4gKi9cblxuZXhwb3J0IGNvbnN0IGluc3RhbmNlT2YgPVxuICAvKiBjOCBpZ25vcmUgbmV4dCA2ICovXG4gIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMzE3XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nXG4gICAgPyBmdW5jdGlvbiBpbnN0YW5jZU9mKHZhbHVlLCBjb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvcjtcbiAgICAgIH1cbiAgICA6IGZ1bmN0aW9uIGluc3RhbmNlT2YodmFsdWUsIGNvbnN0cnVjdG9yKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHZhciBfdmFsdWUkY29uc3RydWN0b3I7XG5cbiAgICAgICAgICAvLyBQcmVmZXIgU3ltYm9sLnRvU3RyaW5nVGFnIHNpbmNlIGl0IGlzIGltbXVuZSB0byBtaW5pZmljYXRpb24uXG4gICAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY29uc3RydWN0b3IucHJvdG90eXBlW1N5bWJvbC50b1N0cmluZ1RhZ107XG4gICAgICAgICAgY29uc3QgdmFsdWVDbGFzc05hbWUgPSAvLyBXZSBzdGlsbCBuZWVkIHRvIHN1cHBvcnQgY29uc3RydWN0b3IncyBuYW1lIHRvIGRldGVjdCBjb25mbGljdHMgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiB0aGlzIGxpYnJhcnkuXG4gICAgICAgICAgICBTeW1ib2wudG9TdHJpbmdUYWcgaW4gdmFsdWUgLy8gQHRzLWV4cGVjdC1lcnJvciBUUyBidWcgc2VlLCBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzM4MDA5XG4gICAgICAgICAgICAgID8gdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFnXVxuICAgICAgICAgICAgICA6IChfdmFsdWUkY29uc3RydWN0b3IgPSB2YWx1ZS5jb25zdHJ1Y3RvcikgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICBfdmFsdWUkY29uc3RydWN0b3IgPT09IHZvaWQgMFxuICAgICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgICA6IF92YWx1ZSRjb25zdHJ1Y3Rvci5uYW1lO1xuXG4gICAgICAgICAgaWYgKGNsYXNzTmFtZSA9PT0gdmFsdWVDbGFzc05hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0cmluZ2lmaWVkVmFsdWUgPSBpbnNwZWN0KHZhbHVlKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHVzZSAke2NsYXNzTmFtZX0gXCIke3N0cmluZ2lmaWVkVmFsdWV9XCIgZnJvbSBhbm90aGVyIG1vZHVsZSBvciByZWFsbS5cblxuRW5zdXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgaW5zdGFuY2Ugb2YgXCJncmFwaHFsXCIgaW4gdGhlIG5vZGVfbW9kdWxlc1xuZGlyZWN0b3J5LiBJZiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgXCJncmFwaHFsXCIgYXJlIHRoZSBkZXBlbmRlbmNpZXMgb2Ygb3RoZXJcbnJlbGllZCBvbiBtb2R1bGVzLCB1c2UgXCJyZXNvbHV0aW9uc1wiIHRvIGVuc3VyZSBvbmx5IG9uZSB2ZXJzaW9uIGlzIGluc3RhbGxlZC5cblxuaHR0cHM6Ly95YXJucGtnLmNvbS9lbi9kb2NzL3NlbGVjdGl2ZS12ZXJzaW9uLXJlc29sdXRpb25zXG5cbkR1cGxpY2F0ZSBcImdyYXBocWxcIiBtb2R1bGVzIGNhbm5vdCBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUgc2luY2UgZGlmZmVyZW50XG52ZXJzaW9ucyBtYXkgaGF2ZSBkaWZmZXJlbnQgY2FwYWJpbGl0aWVzIGFuZCBiZWhhdmlvci4gVGhlIGRhdGEgZnJvbSBvbmVcbnZlcnNpb24gdXNlZCBpbiB0aGUgZnVuY3Rpb24gZnJvbSBhbm90aGVyIGNvdWxkIHByb2R1Y2UgY29uZnVzaW5nIGFuZFxuc3B1cmlvdXMgcmVzdWx0cy5gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/instanceOf.mjs\n");
|
409 |
|
410 | }),
|
411 |
|
412 | "../../../node_modules/graphql/jsutils/invariant.mjs":
|
413 |
|
414 |
|
415 |
|
416 |
|
417 | (function(module, __webpack_exports__, __webpack_require__) {
|
418 |
|
419 | "use strict";
|
420 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invariant\", function() { return invariant; });\nfunction invariant(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(\n message != null ? message : 'Unexpected invariant triggered.',\n );\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pbnZhcmlhbnQubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pbnZhcmlhbnQubWpzPzAxZDMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGludmFyaWFudChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgY29uc3QgYm9vbGVhbkNvbmRpdGlvbiA9IEJvb2xlYW4oY29uZGl0aW9uKTtcblxuICBpZiAoIWJvb2xlYW5Db25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBtZXNzYWdlICE9IG51bGwgPyBtZXNzYWdlIDogJ1VuZXhwZWN0ZWQgaW52YXJpYW50IHRyaWdnZXJlZC4nLFxuICAgICk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/invariant.mjs\n");
|
421 |
|
422 | }),
|
423 |
|
424 | "../../../node_modules/graphql/jsutils/isAsyncIterable.mjs":
|
425 |
|
426 |
|
427 |
|
428 |
|
429 | (function(module, __webpack_exports__, __webpack_require__) {
|
430 |
|
431 | "use strict";
|
432 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAsyncIterable\", function() { return isAsyncIterable; });\n/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * implementing a `Symbol.asyncIterator` method.\n */\nfunction isAsyncIterable(maybeAsyncIterable) {\n return (\n typeof (maybeAsyncIterable === null || maybeAsyncIterable === void 0\n ? void 0\n : maybeAsyncIterable[Symbol.asyncIterator]) === 'function'\n );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc0FzeW5jSXRlcmFibGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc0FzeW5jSXRlcmFibGUubWpzP2E0ZjgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVkIG9iamVjdCBpbXBsZW1lbnRzIHRoZSBBc3luY0l0ZXJhdG9yIHByb3RvY29sIHZpYVxuICogaW1wbGVtZW50aW5nIGEgYFN5bWJvbC5hc3luY0l0ZXJhdG9yYCBtZXRob2QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FzeW5jSXRlcmFibGUobWF5YmVBc3luY0l0ZXJhYmxlKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIChtYXliZUFzeW5jSXRlcmFibGUgPT09IG51bGwgfHwgbWF5YmVBc3luY0l0ZXJhYmxlID09PSB2b2lkIDBcbiAgICAgID8gdm9pZCAwXG4gICAgICA6IG1heWJlQXN5bmNJdGVyYWJsZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pID09PSAnZnVuY3Rpb24nXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/isAsyncIterable.mjs\n");
|
433 |
|
434 | }),
|
435 |
|
436 | "../../../node_modules/graphql/jsutils/isIterableObject.mjs":
|
437 |
|
438 |
|
439 |
|
440 |
|
441 | (function(module, __webpack_exports__, __webpack_require__) {
|
442 |
|
443 | "use strict";
|
444 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIterableObject\", function() { return isIterableObject; });\n/**\n * Returns true if the provided object is an Object (i.e. not a string literal)\n * and implements the Iterator protocol.\n *\n * This may be used in place of [Array.isArray()][isArray] to determine if\n * an object should be iterated-over e.g. Array, Map, Set, Int8Array,\n * TypedArray, etc. but excludes string literals.\n *\n * @example\n * ```ts\n * isIterableObject([ 1, 2, 3 ]) // true\n * isIterableObject(new Map()) // true\n * isIterableObject('ABC') // false\n * isIterableObject({ key: 'value' }) // false\n * isIterableObject({ length: 1, 0: 'Alpha' }) // false\n * ```\n */\nfunction isIterableObject(maybeIterable) {\n return (\n typeof maybeIterable === 'object' &&\n typeof (maybeIterable === null || maybeIterable === void 0\n ? void 0\n : maybeIterable[Symbol.iterator]) === 'function'\n );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc0l0ZXJhYmxlT2JqZWN0Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvaXNJdGVyYWJsZU9iamVjdC5tanM/MzkyMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZWQgb2JqZWN0IGlzIGFuIE9iamVjdCAoaS5lLiBub3QgYSBzdHJpbmcgbGl0ZXJhbClcbiAqIGFuZCBpbXBsZW1lbnRzIHRoZSBJdGVyYXRvciBwcm90b2NvbC5cbiAqXG4gKiBUaGlzIG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIFtBcnJheS5pc0FycmF5KCldW2lzQXJyYXldIHRvIGRldGVybWluZSBpZlxuICogYW4gb2JqZWN0IHNob3VsZCBiZSBpdGVyYXRlZC1vdmVyIGUuZy4gQXJyYXksIE1hcCwgU2V0LCBJbnQ4QXJyYXksXG4gKiBUeXBlZEFycmF5LCBldGMuIGJ1dCBleGNsdWRlcyBzdHJpbmcgbGl0ZXJhbHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpc0l0ZXJhYmxlT2JqZWN0KFsgMSwgMiwgMyBdKSAvLyB0cnVlXG4gKiBpc0l0ZXJhYmxlT2JqZWN0KG5ldyBNYXAoKSkgLy8gdHJ1ZVxuICogaXNJdGVyYWJsZU9iamVjdCgnQUJDJykgLy8gZmFsc2VcbiAqIGlzSXRlcmFibGVPYmplY3QoeyBrZXk6ICd2YWx1ZScgfSkgLy8gZmFsc2VcbiAqIGlzSXRlcmFibGVPYmplY3QoeyBsZW5ndGg6IDEsIDA6ICdBbHBoYScgfSkgLy8gZmFsc2VcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJdGVyYWJsZU9iamVjdChtYXliZUl0ZXJhYmxlKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIG1heWJlSXRlcmFibGUgPT09ICdvYmplY3QnICYmXG4gICAgdHlwZW9mIChtYXliZUl0ZXJhYmxlID09PSBudWxsIHx8IG1heWJlSXRlcmFibGUgPT09IHZvaWQgMFxuICAgICAgPyB2b2lkIDBcbiAgICAgIDogbWF5YmVJdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdKSA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/isIterableObject.mjs\n");
|
445 |
|
446 | }),
|
447 |
|
448 | "../../../node_modules/graphql/jsutils/isObjectLike.mjs":
|
449 |
|
450 |
|
451 |
|
452 |
|
453 | (function(module, __webpack_exports__, __webpack_require__) {
|
454 |
|
455 | "use strict";
|
456 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObjectLike\", function() { return isObjectLike; });\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nfunction isObjectLike(value) {\n return typeof value == 'object' && value !== null;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc09iamVjdExpa2UubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc09iamVjdExpa2UubWpzP2I2MGYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90XG4gKiBgbnVsbGAgYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGw7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/isObjectLike.mjs\n");
|
457 |
|
458 | }),
|
459 |
|
460 | "../../../node_modules/graphql/jsutils/isPromise.mjs":
|
461 |
|
462 |
|
463 |
|
464 |
|
465 | (function(module, __webpack_exports__, __webpack_require__) {
|
466 |
|
467 | "use strict";
|
468 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPromise\", function() { return isPromise; });\n/**\n * Returns true if the value acts like a Promise, i.e. has a \"then\" function,\n * otherwise returns false.\n */\nfunction isPromise(value) {\n return (\n typeof (value === null || value === void 0 ? void 0 : value.then) ===\n 'function'\n );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc1Byb21pc2UubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc1Byb21pc2UubWpzPzcxNWUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIGFjdHMgbGlrZSBhIFByb21pc2UsIGkuZS4gaGFzIGEgXCJ0aGVuXCIgZnVuY3Rpb24sXG4gKiBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZSh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZhbHVlLnRoZW4pID09PVxuICAgICdmdW5jdGlvbidcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/isPromise.mjs\n");
|
469 |
|
470 | }),
|
471 |
|
472 | "../../../node_modules/graphql/jsutils/keyMap.mjs":
|
473 |
|
474 |
|
475 |
|
476 |
|
477 | (function(module, __webpack_exports__, __webpack_require__) {
|
478 |
|
479 | "use strict";
|
480 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keyMap\", function() { return keyMap; });\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * for each value in the array.\n *\n * This provides a convenient lookup for the array items if the key function\n * produces unique results.\n * ```ts\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * const entriesByName = keyMap(\n * phoneBook,\n * entry => entry.name\n * )\n *\n * // {\n * // Jon: { name: 'Jon', num: '555-1234' },\n * // Jenny: { name: 'Jenny', num: '867-5309' }\n * // }\n *\n * const jennyEntry = entriesByName['Jenny']\n *\n * // { name: 'Jenny', num: '857-6309' }\n * ```\n */\nfunction keyMap(list, keyFn) {\n const result = Object.create(null);\n\n for (const item of list) {\n result[keyFn(item)] = item;\n }\n\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9rZXlNYXAubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9rZXlNYXAubWpzPzI3OGIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVzIGEga2V5ZWQgSlMgb2JqZWN0IGZyb20gYW4gYXJyYXksIGdpdmVuIGEgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUga2V5c1xuICogZm9yIGVhY2ggdmFsdWUgaW4gdGhlIGFycmF5LlxuICpcbiAqIFRoaXMgcHJvdmlkZXMgYSBjb252ZW5pZW50IGxvb2t1cCBmb3IgdGhlIGFycmF5IGl0ZW1zIGlmIHRoZSBrZXkgZnVuY3Rpb25cbiAqIHByb2R1Y2VzIHVuaXF1ZSByZXN1bHRzLlxuICogYGBgdHNcbiAqIGNvbnN0IHBob25lQm9vayA9IFtcbiAqICAgeyBuYW1lOiAnSm9uJywgbnVtOiAnNTU1LTEyMzQnIH0sXG4gKiAgIHsgbmFtZTogJ0plbm55JywgbnVtOiAnODY3LTUzMDknIH1cbiAqIF1cbiAqXG4gKiBjb25zdCBlbnRyaWVzQnlOYW1lID0ga2V5TWFwKFxuICogICBwaG9uZUJvb2ssXG4gKiAgIGVudHJ5ID0+IGVudHJ5Lm5hbWVcbiAqIClcbiAqXG4gKiAvLyB7XG4gKiAvLyAgIEpvbjogeyBuYW1lOiAnSm9uJywgbnVtOiAnNTU1LTEyMzQnIH0sXG4gKiAvLyAgIEplbm55OiB7IG5hbWU6ICdKZW5ueScsIG51bTogJzg2Ny01MzA5JyB9XG4gKiAvLyB9XG4gKlxuICogY29uc3QgamVubnlFbnRyeSA9IGVudHJpZXNCeU5hbWVbJ0plbm55J11cbiAqXG4gKiAvLyB7IG5hbWU6ICdKZW5ueScsIG51bTogJzg1Ny02MzA5JyB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGtleU1hcChsaXN0LCBrZXlGbikge1xuICBjb25zdCByZXN1bHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgcmVzdWx0W2tleUZuKGl0ZW0pXSA9IGl0ZW07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/keyMap.mjs\n");
|
481 |
|
482 | }),
|
483 |
|
484 | "../../../node_modules/graphql/jsutils/keyValMap.mjs":
|
485 |
|
486 |
|
487 |
|
488 |
|
489 | (function(module, __webpack_exports__, __webpack_require__) {
|
490 |
|
491 | "use strict";
|
492 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keyValMap\", function() { return keyValMap; });\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * and a function to produce the values from each item in the array.\n * ```ts\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: '555-1234', Jenny: '867-5309' }\n * const phonesByName = keyValMap(\n * phoneBook,\n * entry => entry.name,\n * entry => entry.num\n * )\n * ```\n */\nfunction keyValMap(list, keyFn, valFn) {\n const result = Object.create(null);\n\n for (const item of list) {\n result[keyFn(item)] = valFn(item);\n }\n\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9rZXlWYWxNYXAubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9rZXlWYWxNYXAubWpzPzI5OTgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVzIGEga2V5ZWQgSlMgb2JqZWN0IGZyb20gYW4gYXJyYXksIGdpdmVuIGEgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUga2V5c1xuICogYW5kIGEgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdmFsdWVzIGZyb20gZWFjaCBpdGVtIGluIHRoZSBhcnJheS5cbiAqIGBgYHRzXG4gKiBjb25zdCBwaG9uZUJvb2sgPSBbXG4gKiAgIHsgbmFtZTogJ0pvbicsIG51bTogJzU1NS0xMjM0JyB9LFxuICogICB7IG5hbWU6ICdKZW5ueScsIG51bTogJzg2Ny01MzA5JyB9XG4gKiBdXG4gKlxuICogLy8geyBKb246ICc1NTUtMTIzNCcsIEplbm55OiAnODY3LTUzMDknIH1cbiAqIGNvbnN0IHBob25lc0J5TmFtZSA9IGtleVZhbE1hcChcbiAqICAgcGhvbmVCb29rLFxuICogICBlbnRyeSA9PiBlbnRyeS5uYW1lLFxuICogICBlbnRyeSA9PiBlbnRyeS5udW1cbiAqIClcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24ga2V5VmFsTWFwKGxpc3QsIGtleUZuLCB2YWxGbikge1xuICBjb25zdCByZXN1bHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgcmVzdWx0W2tleUZuKGl0ZW0pXSA9IHZhbEZuKGl0ZW0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/keyValMap.mjs\n");
|
493 |
|
494 | }),
|
495 |
|
496 | "../../../node_modules/graphql/jsutils/mapValue.mjs":
|
497 |
|
498 |
|
499 |
|
500 |
|
501 | (function(module, __webpack_exports__, __webpack_require__) {
|
502 |
|
503 | "use strict";
|
504 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapValue\", function() { return mapValue; });\n/**\n * Creates an object map with the same keys as `map` and values generated by\n * running each value of `map` thru `fn`.\n */\nfunction mapValue(map, fn) {\n const result = Object.create(null);\n\n for (const key of Object.keys(map)) {\n result[key] = fn(map[key], key);\n }\n\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9tYXBWYWx1ZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL21hcFZhbHVlLm1qcz84NjgwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgbWFwIHdpdGggdGhlIHNhbWUga2V5cyBhcyBgbWFwYCBhbmQgdmFsdWVzIGdlbmVyYXRlZCBieVxuICogcnVubmluZyBlYWNoIHZhbHVlIG9mIGBtYXBgIHRocnUgYGZuYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFZhbHVlKG1hcCwgZm4pIHtcbiAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtYXApKSB7XG4gICAgcmVzdWx0W2tleV0gPSBmbihtYXBba2V5XSwga2V5KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/mapValue.mjs\n");
|
505 |
|
506 | }),
|
507 |
|
508 | "../../../node_modules/graphql/jsutils/memoize3.mjs":
|
509 |
|
510 |
|
511 |
|
512 |
|
513 | (function(module, __webpack_exports__, __webpack_require__) {
|
514 |
|
515 | "use strict";
|
516 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"memoize3\", function() { return memoize3; });\n/**\n * Memoizes the provided three-argument function.\n */\nfunction memoize3(fn) {\n let cache0;\n return function memoized(a1, a2, a3) {\n if (cache0 === undefined) {\n cache0 = new WeakMap();\n }\n\n let cache1 = cache0.get(a1);\n\n if (cache1 === undefined) {\n cache1 = new WeakMap();\n cache0.set(a1, cache1);\n }\n\n let cache2 = cache1.get(a2);\n\n if (cache2 === undefined) {\n cache2 = new WeakMap();\n cache1.set(a2, cache2);\n }\n\n let fnResult = cache2.get(a3);\n\n if (fnResult === undefined) {\n fnResult = fn(a1, a2, a3);\n cache2.set(a3, fnResult);\n }\n\n return fnResult;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9tZW1vaXplMy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL21lbW9pemUzLm1qcz9hYmFlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWVtb2l6ZXMgdGhlIHByb3ZpZGVkIHRocmVlLWFyZ3VtZW50IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtb2l6ZTMoZm4pIHtcbiAgbGV0IGNhY2hlMDtcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9pemVkKGExLCBhMiwgYTMpIHtcbiAgICBpZiAoY2FjaGUwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNhY2hlMCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgfVxuXG4gICAgbGV0IGNhY2hlMSA9IGNhY2hlMC5nZXQoYTEpO1xuXG4gICAgaWYgKGNhY2hlMSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjYWNoZTEgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgY2FjaGUwLnNldChhMSwgY2FjaGUxKTtcbiAgICB9XG5cbiAgICBsZXQgY2FjaGUyID0gY2FjaGUxLmdldChhMik7XG5cbiAgICBpZiAoY2FjaGUyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNhY2hlMiA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICBjYWNoZTEuc2V0KGEyLCBjYWNoZTIpO1xuICAgIH1cblxuICAgIGxldCBmblJlc3VsdCA9IGNhY2hlMi5nZXQoYTMpO1xuXG4gICAgaWYgKGZuUmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGZuUmVzdWx0ID0gZm4oYTEsIGEyLCBhMyk7XG4gICAgICBjYWNoZTIuc2V0KGEzLCBmblJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZuUmVzdWx0O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/memoize3.mjs\n");
|
517 |
|
518 | }),
|
519 |
|
520 | "../../../node_modules/graphql/jsutils/naturalCompare.mjs":
|
521 |
|
522 |
|
523 |
|
524 |
|
525 | (function(module, __webpack_exports__, __webpack_require__) {
|
526 |
|
527 | "use strict";
|
528 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"naturalCompare\", function() { return naturalCompare; });\n/**\n * Returns a number indicating whether a reference string comes before, or after,\n * or is the same as the given string in natural sort order.\n *\n * See: https://en.wikipedia.org/wiki/Natural_sort_order\n *\n */\nfunction naturalCompare(aStr, bStr) {\n let aIndex = 0;\n let bIndex = 0;\n\n while (aIndex < aStr.length && bIndex < bStr.length) {\n let aChar = aStr.charCodeAt(aIndex);\n let bChar = bStr.charCodeAt(bIndex);\n\n if (isDigit(aChar) && isDigit(bChar)) {\n let aNum = 0;\n\n do {\n ++aIndex;\n aNum = aNum * 10 + aChar - DIGIT_0;\n aChar = aStr.charCodeAt(aIndex);\n } while (isDigit(aChar) && aNum > 0);\n\n let bNum = 0;\n\n do {\n ++bIndex;\n bNum = bNum * 10 + bChar - DIGIT_0;\n bChar = bStr.charCodeAt(bIndex);\n } while (isDigit(bChar) && bNum > 0);\n\n if (aNum < bNum) {\n return -1;\n }\n\n if (aNum > bNum) {\n return 1;\n }\n } else {\n if (aChar < bChar) {\n return -1;\n }\n\n if (aChar > bChar) {\n return 1;\n }\n\n ++aIndex;\n ++bIndex;\n }\n }\n\n return aStr.length - bStr.length;\n}\nconst DIGIT_0 = 48;\nconst DIGIT_9 = 57;\n\nfunction isDigit(code) {\n return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9uYXR1cmFsQ29tcGFyZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL25hdHVyYWxDb21wYXJlLm1qcz8yYzI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmV0dXJucyBhIG51bWJlciBpbmRpY2F0aW5nIHdoZXRoZXIgYSByZWZlcmVuY2Ugc3RyaW5nIGNvbWVzIGJlZm9yZSwgb3IgYWZ0ZXIsXG4gKiBvciBpcyB0aGUgc2FtZSBhcyB0aGUgZ2l2ZW4gc3RyaW5nIGluIG5hdHVyYWwgc29ydCBvcmRlci5cbiAqXG4gKiBTZWU6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05hdHVyYWxfc29ydF9vcmRlclxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5hdHVyYWxDb21wYXJlKGFTdHIsIGJTdHIpIHtcbiAgbGV0IGFJbmRleCA9IDA7XG4gIGxldCBiSW5kZXggPSAwO1xuXG4gIHdoaWxlIChhSW5kZXggPCBhU3RyLmxlbmd0aCAmJiBiSW5kZXggPCBiU3RyLmxlbmd0aCkge1xuICAgIGxldCBhQ2hhciA9IGFTdHIuY2hhckNvZGVBdChhSW5kZXgpO1xuICAgIGxldCBiQ2hhciA9IGJTdHIuY2hhckNvZGVBdChiSW5kZXgpO1xuXG4gICAgaWYgKGlzRGlnaXQoYUNoYXIpICYmIGlzRGlnaXQoYkNoYXIpKSB7XG4gICAgICBsZXQgYU51bSA9IDA7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgKythSW5kZXg7XG4gICAgICAgIGFOdW0gPSBhTnVtICogMTAgKyBhQ2hhciAtIERJR0lUXzA7XG4gICAgICAgIGFDaGFyID0gYVN0ci5jaGFyQ29kZUF0KGFJbmRleCk7XG4gICAgICB9IHdoaWxlIChpc0RpZ2l0KGFDaGFyKSAmJiBhTnVtID4gMCk7XG5cbiAgICAgIGxldCBiTnVtID0gMDtcblxuICAgICAgZG8ge1xuICAgICAgICArK2JJbmRleDtcbiAgICAgICAgYk51bSA9IGJOdW0gKiAxMCArIGJDaGFyIC0gRElHSVRfMDtcbiAgICAgICAgYkNoYXIgPSBiU3RyLmNoYXJDb2RlQXQoYkluZGV4KTtcbiAgICAgIH0gd2hpbGUgKGlzRGlnaXQoYkNoYXIpICYmIGJOdW0gPiAwKTtcblxuICAgICAgaWYgKGFOdW0gPCBiTnVtKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFOdW0gPiBiTnVtKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoYUNoYXIgPCBiQ2hhcikge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG5cbiAgICAgIGlmIChhQ2hhciA+IGJDaGFyKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuXG4gICAgICArK2FJbmRleDtcbiAgICAgICsrYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhU3RyLmxlbmd0aCAtIGJTdHIubGVuZ3RoO1xufVxuY29uc3QgRElHSVRfMCA9IDQ4O1xuY29uc3QgRElHSVRfOSA9IDU3O1xuXG5mdW5jdGlvbiBpc0RpZ2l0KGNvZGUpIHtcbiAgcmV0dXJuICFpc05hTihjb2RlKSAmJiBESUdJVF8wIDw9IGNvZGUgJiYgY29kZSA8PSBESUdJVF85O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/naturalCompare.mjs\n");
|
529 |
|
530 | }),
|
531 |
|
532 | "../../../node_modules/graphql/jsutils/printPathArray.mjs":
|
533 |
|
534 |
|
535 |
|
536 |
|
537 | (function(module, __webpack_exports__, __webpack_require__) {
|
538 |
|
539 | "use strict";
|
540 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printPathArray\", function() { return printPathArray; });\n/**\n * Build a string describing the path.\n */\nfunction printPathArray(path) {\n return path\n .map((key) =>\n typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key,\n )\n .join('');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9wcmludFBhdGhBcnJheS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL3ByaW50UGF0aEFycmF5Lm1qcz8wNzYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnVpbGQgYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByaW50UGF0aEFycmF5KHBhdGgpIHtcbiAgcmV0dXJuIHBhdGhcbiAgICAubWFwKChrZXkpID0+XG4gICAgICB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJyA/ICdbJyArIGtleS50b1N0cmluZygpICsgJ10nIDogJy4nICsga2V5LFxuICAgIClcbiAgICAuam9pbignJyk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/printPathArray.mjs\n");
|
541 |
|
542 | }),
|
543 |
|
544 | "../../../node_modules/graphql/jsutils/promiseForObject.mjs":
|
545 |
|
546 |
|
547 |
|
548 |
|
549 | (function(module, __webpack_exports__, __webpack_require__) {
|
550 |
|
551 | "use strict";
|
552 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promiseForObject\", function() { return promiseForObject; });\n/**\n * This function transforms a JS object `ObjMap<Promise<T>>` into\n * a `Promise<ObjMap<T>>`\n *\n * This is akin to bluebird's `Promise.props`, but implemented only using\n * `Promise.all` so it will work with any implementation of ES6 promises.\n */\nfunction promiseForObject(object) {\n return Promise.all(Object.values(object)).then((resolvedValues) => {\n const resolvedObject = Object.create(null);\n\n for (const [i, key] of Object.keys(object).entries()) {\n resolvedObject[key] = resolvedValues[i];\n }\n\n return resolvedObject;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9wcm9taXNlRm9yT2JqZWN0Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvcHJvbWlzZUZvck9iamVjdC5tanM/ZjVkMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZnVuY3Rpb24gdHJhbnNmb3JtcyBhIEpTIG9iamVjdCBgT2JqTWFwPFByb21pc2U8VD4+YCBpbnRvXG4gKiBhIGBQcm9taXNlPE9iak1hcDxUPj5gXG4gKlxuICogVGhpcyBpcyBha2luIHRvIGJsdWViaXJkJ3MgYFByb21pc2UucHJvcHNgLCBidXQgaW1wbGVtZW50ZWQgb25seSB1c2luZ1xuICogYFByb21pc2UuYWxsYCBzbyBpdCB3aWxsIHdvcmsgd2l0aCBhbnkgaW1wbGVtZW50YXRpb24gb2YgRVM2IHByb21pc2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzZUZvck9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC52YWx1ZXMob2JqZWN0KSkudGhlbigocmVzb2x2ZWRWYWx1ZXMpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZE9iamVjdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBmb3IgKGNvbnN0IFtpLCBrZXldIG9mIE9iamVjdC5rZXlzKG9iamVjdCkuZW50cmllcygpKSB7XG4gICAgICByZXNvbHZlZE9iamVjdFtrZXldID0gcmVzb2x2ZWRWYWx1ZXNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVkT2JqZWN0O1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/promiseForObject.mjs\n");
|
553 |
|
554 | }),
|
555 |
|
556 | "../../../node_modules/graphql/jsutils/promiseReduce.mjs":
|
557 |
|
558 |
|
559 |
|
560 |
|
561 | (function(module, __webpack_exports__, __webpack_require__) {
|
562 |
|
563 | "use strict";
|
564 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promiseReduce\", function() { return promiseReduce; });\n/* harmony import */ var _isPromise_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isPromise.mjs */ \"../../../node_modules/graphql/jsutils/isPromise.mjs\");\n\n\n/**\n * Similar to Array.prototype.reduce(), however the reducing callback may return\n * a Promise, in which case reduction will continue after each promise resolves.\n *\n * If the callback does not return a Promise, then this function will also not\n * return a Promise.\n */\nfunction promiseReduce(values, callbackFn, initialValue) {\n let accumulator = initialValue;\n\n for (const value of values) {\n accumulator = Object(_isPromise_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isPromise\"])(accumulator)\n ? accumulator.then((resolved) => callbackFn(resolved, value))\n : callbackFn(accumulator, value);\n }\n\n return accumulator;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9wcm9taXNlUmVkdWNlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvcHJvbWlzZVJlZHVjZS5tanM/MzE1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1Byb21pc2UgfSBmcm9tICcuL2lzUHJvbWlzZS5tanMnO1xuXG4vKipcbiAqIFNpbWlsYXIgdG8gQXJyYXkucHJvdG90eXBlLnJlZHVjZSgpLCBob3dldmVyIHRoZSByZWR1Y2luZyBjYWxsYmFjayBtYXkgcmV0dXJuXG4gKiBhIFByb21pc2UsIGluIHdoaWNoIGNhc2UgcmVkdWN0aW9uIHdpbGwgY29udGludWUgYWZ0ZXIgZWFjaCBwcm9taXNlIHJlc29sdmVzLlxuICpcbiAqIElmIHRoZSBjYWxsYmFjayBkb2VzIG5vdCByZXR1cm4gYSBQcm9taXNlLCB0aGVuIHRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvIG5vdFxuICogcmV0dXJuIGEgUHJvbWlzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2VSZWR1Y2UodmFsdWVzLCBjYWxsYmFja0ZuLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IGFjY3VtdWxhdG9yID0gaW5pdGlhbFZhbHVlO1xuXG4gIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgYWNjdW11bGF0b3IgPSBpc1Byb21pc2UoYWNjdW11bGF0b3IpXG4gICAgICA/IGFjY3VtdWxhdG9yLnRoZW4oKHJlc29sdmVkKSA9PiBjYWxsYmFja0ZuKHJlc29sdmVkLCB2YWx1ZSkpXG4gICAgICA6IGNhbGxiYWNrRm4oYWNjdW11bGF0b3IsIHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/promiseReduce.mjs\n");
|
565 |
|
566 | }),
|
567 |
|
568 | "../../../node_modules/graphql/jsutils/suggestionList.mjs":
|
569 |
|
570 |
|
571 |
|
572 |
|
573 | (function(module, __webpack_exports__, __webpack_require__) {
|
574 |
|
575 | "use strict";
|
576 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"suggestionList\", function() { return suggestionList; });\n/* harmony import */ var _naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./naturalCompare.mjs */ \"../../../node_modules/graphql/jsutils/naturalCompare.mjs\");\n\n/**\n * Given an invalid input string and a list of valid options, returns a filtered\n * list of valid options sorted based on their similarity with the input.\n */\n\nfunction suggestionList(input, options) {\n const optionsByDistance = Object.create(null);\n const lexicalDistance = new LexicalDistance(input);\n const threshold = Math.floor(input.length * 0.4) + 1;\n\n for (const option of options) {\n const distance = lexicalDistance.measure(option, threshold);\n\n if (distance !== undefined) {\n optionsByDistance[option] = distance;\n }\n }\n\n return Object.keys(optionsByDistance).sort((a, b) => {\n const distanceDiff = optionsByDistance[a] - optionsByDistance[b];\n return distanceDiff !== 0 ? distanceDiff : Object(_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_0__[\"naturalCompare\"])(a, b);\n });\n}\n/**\n * Computes the lexical distance between strings A and B.\n *\n * The \"distance\" between two strings is given by counting the minimum number\n * of edits needed to transform string A into string B. An edit can be an\n * insertion, deletion, or substitution of a single character, or a swap of two\n * adjacent characters.\n *\n * Includes a custom alteration from Damerau-Levenshtein to treat case changes\n * as a single edit which helps identify mis-cased values with an edit distance\n * of 1.\n *\n * This distance can be useful for detecting typos in input or sorting\n */\n\nclass LexicalDistance {\n constructor(input) {\n this._input = input;\n this._inputLowerCase = input.toLowerCase();\n this._inputArray = stringToArray(this._inputLowerCase);\n this._rows = [\n new Array(input.length + 1).fill(0),\n new Array(input.length + 1).fill(0),\n new Array(input.length + 1).fill(0),\n ];\n }\n\n measure(option, threshold) {\n if (this._input === option) {\n return 0;\n }\n\n const optionLowerCase = option.toLowerCase(); // Any case change counts as a single edit\n\n if (this._inputLowerCase === optionLowerCase) {\n return 1;\n }\n\n let a = stringToArray(optionLowerCase);\n let b = this._inputArray;\n\n if (a.length < b.length) {\n const tmp = a;\n a = b;\n b = tmp;\n }\n\n const aLength = a.length;\n const bLength = b.length;\n\n if (aLength - bLength > threshold) {\n return undefined;\n }\n\n const rows = this._rows;\n\n for (let j = 0; j <= bLength; j++) {\n rows[0][j] = j;\n }\n\n for (let i = 1; i <= aLength; i++) {\n const upRow = rows[(i - 1) % 3];\n const currentRow = rows[i % 3];\n let smallestCell = (currentRow[0] = i);\n\n for (let j = 1; j <= bLength; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n let currentCell = Math.min(\n upRow[j] + 1, // delete\n currentRow[j - 1] + 1, // insert\n upRow[j - 1] + cost, // substitute\n );\n\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n // transposition\n const doubleDiagonalCell = rows[(i - 2) % 3][j - 2];\n currentCell = Math.min(currentCell, doubleDiagonalCell + 1);\n }\n\n if (currentCell < smallestCell) {\n smallestCell = currentCell;\n }\n\n currentRow[j] = currentCell;\n } // Early exit, since distance can't go smaller than smallest element of the previous row.\n\n if (smallestCell > threshold) {\n return undefined;\n }\n }\n\n const distance = rows[aLength % 3][bLength];\n return distance <= threshold ? distance : undefined;\n }\n}\n\nfunction stringToArray(str) {\n const strLength = str.length;\n const array = new Array(strLength);\n\n for (let i = 0; i < strLength; ++i) {\n array[i] = str.charCodeAt(i);\n }\n\n return array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9zdWdnZXN0aW9uTGlzdC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL3N1Z2dlc3Rpb25MaXN0Lm1qcz84MzQ2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5hdHVyYWxDb21wYXJlIH0gZnJvbSAnLi9uYXR1cmFsQ29tcGFyZS5tanMnO1xuLyoqXG4gKiBHaXZlbiBhbiBpbnZhbGlkIGlucHV0IHN0cmluZyBhbmQgYSBsaXN0IG9mIHZhbGlkIG9wdGlvbnMsIHJldHVybnMgYSBmaWx0ZXJlZFxuICogbGlzdCBvZiB2YWxpZCBvcHRpb25zIHNvcnRlZCBiYXNlZCBvbiB0aGVpciBzaW1pbGFyaXR5IHdpdGggdGhlIGlucHV0LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzdWdnZXN0aW9uTGlzdChpbnB1dCwgb3B0aW9ucykge1xuICBjb25zdCBvcHRpb25zQnlEaXN0YW5jZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGNvbnN0IGxleGljYWxEaXN0YW5jZSA9IG5ldyBMZXhpY2FsRGlzdGFuY2UoaW5wdXQpO1xuICBjb25zdCB0aHJlc2hvbGQgPSBNYXRoLmZsb29yKGlucHV0Lmxlbmd0aCAqIDAuNCkgKyAxO1xuXG4gIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICBjb25zdCBkaXN0YW5jZSA9IGxleGljYWxEaXN0YW5jZS5tZWFzdXJlKG9wdGlvbiwgdGhyZXNob2xkKTtcblxuICAgIGlmIChkaXN0YW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvcHRpb25zQnlEaXN0YW5jZVtvcHRpb25dID0gZGlzdGFuY2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9wdGlvbnNCeURpc3RhbmNlKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgY29uc3QgZGlzdGFuY2VEaWZmID0gb3B0aW9uc0J5RGlzdGFuY2VbYV0gLSBvcHRpb25zQnlEaXN0YW5jZVtiXTtcbiAgICByZXR1cm4gZGlzdGFuY2VEaWZmICE9PSAwID8gZGlzdGFuY2VEaWZmIDogbmF0dXJhbENvbXBhcmUoYSwgYik7XG4gIH0pO1xufVxuLyoqXG4gKiBDb21wdXRlcyB0aGUgbGV4aWNhbCBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MgQSBhbmQgQi5cbiAqXG4gKiBUaGUgXCJkaXN0YW5jZVwiIGJldHdlZW4gdHdvIHN0cmluZ3MgaXMgZ2l2ZW4gYnkgY291bnRpbmcgdGhlIG1pbmltdW0gbnVtYmVyXG4gKiBvZiBlZGl0cyBuZWVkZWQgdG8gdHJhbnNmb3JtIHN0cmluZyBBIGludG8gc3RyaW5nIEIuIEFuIGVkaXQgY2FuIGJlIGFuXG4gKiBpbnNlcnRpb24sIGRlbGV0aW9uLCBvciBzdWJzdGl0dXRpb24gb2YgYSBzaW5nbGUgY2hhcmFjdGVyLCBvciBhIHN3YXAgb2YgdHdvXG4gKiBhZGphY2VudCBjaGFyYWN0ZXJzLlxuICpcbiAqIEluY2x1ZGVzIGEgY3VzdG9tIGFsdGVyYXRpb24gZnJvbSBEYW1lcmF1LUxldmVuc2h0ZWluIHRvIHRyZWF0IGNhc2UgY2hhbmdlc1xuICogYXMgYSBzaW5nbGUgZWRpdCB3aGljaCBoZWxwcyBpZGVudGlmeSBtaXMtY2FzZWQgdmFsdWVzIHdpdGggYW4gZWRpdCBkaXN0YW5jZVxuICogb2YgMS5cbiAqXG4gKiBUaGlzIGRpc3RhbmNlIGNhbiBiZSB1c2VmdWwgZm9yIGRldGVjdGluZyB0eXBvcyBpbiBpbnB1dCBvciBzb3J0aW5nXG4gKi9cblxuY2xhc3MgTGV4aWNhbERpc3RhbmNlIHtcbiAgY29uc3RydWN0b3IoaW5wdXQpIHtcbiAgICB0aGlzLl9pbnB1dCA9IGlucHV0O1xuICAgIHRoaXMuX2lucHV0TG93ZXJDYXNlID0gaW5wdXQudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLl9pbnB1dEFycmF5ID0gc3RyaW5nVG9BcnJheSh0aGlzLl9pbnB1dExvd2VyQ2FzZSk7XG4gICAgdGhpcy5fcm93cyA9IFtcbiAgICAgIG5ldyBBcnJheShpbnB1dC5sZW5ndGggKyAxKS5maWxsKDApLFxuICAgICAgbmV3IEFycmF5KGlucHV0Lmxlbmd0aCArIDEpLmZpbGwoMCksXG4gICAgICBuZXcgQXJyYXkoaW5wdXQubGVuZ3RoICsgMSkuZmlsbCgwKSxcbiAgICBdO1xuICB9XG5cbiAgbWVhc3VyZShvcHRpb24sIHRocmVzaG9sZCkge1xuICAgIGlmICh0aGlzLl9pbnB1dCA9PT0gb3B0aW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25Mb3dlckNhc2UgPSBvcHRpb24udG9Mb3dlckNhc2UoKTsgLy8gQW55IGNhc2UgY2hhbmdlIGNvdW50cyBhcyBhIHNpbmdsZSBlZGl0XG5cbiAgICBpZiAodGhpcy5faW5wdXRMb3dlckNhc2UgPT09IG9wdGlvbkxvd2VyQ2FzZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgbGV0IGEgPSBzdHJpbmdUb0FycmF5KG9wdGlvbkxvd2VyQ2FzZSk7XG4gICAgbGV0IGIgPSB0aGlzLl9pbnB1dEFycmF5O1xuXG4gICAgaWYgKGEubGVuZ3RoIDwgYi5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHRtcCA9IGE7XG4gICAgICBhID0gYjtcbiAgICAgIGIgPSB0bXA7XG4gICAgfVxuXG4gICAgY29uc3QgYUxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGNvbnN0IGJMZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIGlmIChhTGVuZ3RoIC0gYkxlbmd0aCA+IHRocmVzaG9sZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCByb3dzID0gdGhpcy5fcm93cztcblxuICAgIGZvciAobGV0IGogPSAwOyBqIDw9IGJMZW5ndGg7IGorKykge1xuICAgICAgcm93c1swXVtqXSA9IGo7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gYUxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB1cFJvdyA9IHJvd3NbKGkgLSAxKSAlIDNdO1xuICAgICAgY29uc3QgY3VycmVudFJvdyA9IHJvd3NbaSAlIDNdO1xuICAgICAgbGV0IHNtYWxsZXN0Q2VsbCA9IChjdXJyZW50Um93WzBdID0gaSk7XG5cbiAgICAgIGZvciAobGV0IGogPSAxOyBqIDw9IGJMZW5ndGg7IGorKykge1xuICAgICAgICBjb25zdCBjb3N0ID0gYVtpIC0gMV0gPT09IGJbaiAtIDFdID8gMCA6IDE7XG4gICAgICAgIGxldCBjdXJyZW50Q2VsbCA9IE1hdGgubWluKFxuICAgICAgICAgIHVwUm93W2pdICsgMSwgLy8gZGVsZXRlXG4gICAgICAgICAgY3VycmVudFJvd1tqIC0gMV0gKyAxLCAvLyBpbnNlcnRcbiAgICAgICAgICB1cFJvd1tqIC0gMV0gKyBjb3N0LCAvLyBzdWJzdGl0dXRlXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGkgPiAxICYmIGogPiAxICYmIGFbaSAtIDFdID09PSBiW2ogLSAyXSAmJiBhW2kgLSAyXSA9PT0gYltqIC0gMV0pIHtcbiAgICAgICAgICAvLyB0cmFuc3Bvc2l0aW9uXG4gICAgICAgICAgY29uc3QgZG91YmxlRGlhZ29uYWxDZWxsID0gcm93c1soaSAtIDIpICUgM11baiAtIDJdO1xuICAgICAgICAgIGN1cnJlbnRDZWxsID0gTWF0aC5taW4oY3VycmVudENlbGwsIGRvdWJsZURpYWdvbmFsQ2VsbCArIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1cnJlbnRDZWxsIDwgc21hbGxlc3RDZWxsKSB7XG4gICAgICAgICAgc21hbGxlc3RDZWxsID0gY3VycmVudENlbGw7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50Um93W2pdID0gY3VycmVudENlbGw7XG4gICAgICB9IC8vIEVhcmx5IGV4aXQsIHNpbmNlIGRpc3RhbmNlIGNhbid0IGdvIHNtYWxsZXIgdGhhbiBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBwcmV2aW91cyByb3cuXG5cbiAgICAgIGlmIChzbWFsbGVzdENlbGwgPiB0aHJlc2hvbGQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBkaXN0YW5jZSA9IHJvd3NbYUxlbmd0aCAlIDNdW2JMZW5ndGhdO1xuICAgIHJldHVybiBkaXN0YW5jZSA8PSB0aHJlc2hvbGQgPyBkaXN0YW5jZSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cikge1xuICBjb25zdCBzdHJMZW5ndGggPSBzdHIubGVuZ3RoO1xuICBjb25zdCBhcnJheSA9IG5ldyBBcnJheShzdHJMZW5ndGgpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyTGVuZ3RoOyArK2kpIHtcbiAgICBhcnJheVtpXSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/suggestionList.mjs\n");
|
577 |
|
578 | }),
|
579 |
|
580 | "../../../node_modules/graphql/jsutils/toError.mjs":
|
581 |
|
582 |
|
583 |
|
584 |
|
585 | (function(module, __webpack_exports__, __webpack_require__) {
|
586 |
|
587 | "use strict";
|
588 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toError\", function() { return toError; });\n/* harmony import */ var _inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n\n/**\n * Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.\n */\n\nfunction toError(thrownValue) {\n return thrownValue instanceof Error\n ? thrownValue\n : new NonErrorThrown(thrownValue);\n}\n\nclass NonErrorThrown extends Error {\n constructor(thrownValue) {\n super('Unexpected error value: ' + Object(_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(thrownValue));\n this.name = 'NonErrorThrown';\n this.thrownValue = thrownValue;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy90b0Vycm9yLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvdG9FcnJvci5tanM/ZmI2YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi9pbnNwZWN0Lm1qcyc7XG4vKipcbiAqIFNvbWV0aW1lcyBhIG5vbi1lcnJvciBpcyB0aHJvd24sIHdyYXAgaXQgYXMgYW4gRXJyb3IgaW5zdGFuY2UgdG8gZW5zdXJlIGEgY29uc2lzdGVudCBFcnJvciBpbnRlcmZhY2UuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRvRXJyb3IodGhyb3duVmFsdWUpIHtcbiAgcmV0dXJuIHRocm93blZhbHVlIGluc3RhbmNlb2YgRXJyb3JcbiAgICA/IHRocm93blZhbHVlXG4gICAgOiBuZXcgTm9uRXJyb3JUaHJvd24odGhyb3duVmFsdWUpO1xufVxuXG5jbGFzcyBOb25FcnJvclRocm93biBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IodGhyb3duVmFsdWUpIHtcbiAgICBzdXBlcignVW5leHBlY3RlZCBlcnJvciB2YWx1ZTogJyArIGluc3BlY3QodGhyb3duVmFsdWUpKTtcbiAgICB0aGlzLm5hbWUgPSAnTm9uRXJyb3JUaHJvd24nO1xuICAgIHRoaXMudGhyb3duVmFsdWUgPSB0aHJvd25WYWx1ZTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/toError.mjs\n");
|
589 |
|
590 | }),
|
591 |
|
592 | "../../../node_modules/graphql/jsutils/toObjMap.mjs":
|
593 |
|
594 |
|
595 |
|
596 |
|
597 | (function(module, __webpack_exports__, __webpack_require__) {
|
598 |
|
599 | "use strict";
|
600 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toObjMap\", function() { return toObjMap; });\nfunction toObjMap(obj) {\n if (obj == null) {\n return Object.create(null);\n }\n\n if (Object.getPrototypeOf(obj) === null) {\n return obj;\n }\n\n const map = Object.create(null);\n\n for (const [key, value] of Object.entries(obj)) {\n map[key] = value;\n }\n\n return map;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy90b09iak1hcC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL3RvT2JqTWFwLm1qcz8yMmQ4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB0b09iak1hcChvYmopIHtcbiAgaWYgKG9iaiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH1cblxuICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikgPT09IG51bGwpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgY29uc3QgbWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgbWFwW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBtYXA7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/toObjMap.mjs\n");
|
601 |
|
602 | }),
|
603 |
|
604 | "../../../node_modules/graphql/language/ast.mjs":
|
605 |
|
606 |
|
607 |
|
608 |
|
609 | (function(module, __webpack_exports__, __webpack_require__) {
|
610 |
|
611 | "use strict";
|
612 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Location\", function() { return Location; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Token\", function() { return Token; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QueryDocumentKeys\", function() { return QueryDocumentKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNode\", function() { return isNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OperationTypeNode\", function() { return OperationTypeNode; });\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nclass Location {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n constructor(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n get [Symbol.toStringTag]() {\n return 'Location';\n }\n\n toJSON() {\n return {\n start: this.start,\n end: this.end,\n };\n }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nclass Token {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n *\n * Note: is undefined for punctuation tokens, but typed as string for\n * convenience in the parser.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. <SOF> is always the first node and <EOF>\n * the last.\n */\n constructor(kind, start, end, line, column, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n this.value = value;\n this.prev = null;\n this.next = null;\n }\n\n get [Symbol.toStringTag]() {\n return 'Token';\n }\n\n toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column,\n };\n }\n}\n/**\n * The list of all possible AST node types.\n */\n\n/**\n * @internal\n */\nconst QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: [\n 'name',\n 'variableDefinitions',\n 'directives',\n 'selectionSet',\n ],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: [\n 'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n 'variableDefinitions',\n 'typeCondition',\n 'directives',\n 'selectionSet',\n ],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: [\n 'description',\n 'name',\n 'type',\n 'defaultValue',\n 'directives',\n ],\n InterfaceTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields'],\n};\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nfunction isNode(maybeNode) {\n const maybeKind =\n maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nlet OperationTypeNode;\n\n(function (OperationTypeNode) {\n OperationTypeNode['QUERY'] = 'query';\n OperationTypeNode['MUTATION'] = 'mutation';\n OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (OperationTypeNode = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvYXN0Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL2FzdC5tanM/OWI0NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIGEgcmFuZ2Ugb2YgVVRGLTggY2hhcmFjdGVyIG9mZnNldHMgYW5kIHRva2VuIHJlZmVyZW5jZXMgdGhhdFxuICogaWRlbnRpZnkgdGhlIHJlZ2lvbiBvZiB0aGUgc291cmNlIGZyb20gd2hpY2ggdGhlIEFTVCBkZXJpdmVkLlxuICovXG5leHBvcnQgY2xhc3MgTG9jYXRpb24ge1xuICAvKipcbiAgICogVGhlIGNoYXJhY3RlciBvZmZzZXQgYXQgd2hpY2ggdGhpcyBOb2RlIGJlZ2lucy5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGF0IHdoaWNoIHRoaXMgTm9kZSBlbmRzLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIFRva2VuIGF0IHdoaWNoIHRoaXMgTm9kZSBiZWdpbnMuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgVG9rZW4gYXQgd2hpY2ggdGhpcyBOb2RlIGVuZHMuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgU291cmNlIGRvY3VtZW50IHRoZSBBU1QgcmVwcmVzZW50cy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHN0YXJ0VG9rZW4sIGVuZFRva2VuLCBzb3VyY2UpIHtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnRUb2tlbi5zdGFydDtcbiAgICB0aGlzLmVuZCA9IGVuZFRva2VuLmVuZDtcbiAgICB0aGlzLnN0YXJ0VG9rZW4gPSBzdGFydFRva2VuO1xuICAgIHRoaXMuZW5kVG9rZW4gPSBlbmRUb2tlbjtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0xvY2F0aW9uJztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IHRoaXMuc3RhcnQsXG4gICAgICBlbmQ6IHRoaXMuZW5kLFxuICAgIH07XG4gIH1cbn1cbi8qKlxuICogUmVwcmVzZW50cyBhIHJhbmdlIG9mIGNoYXJhY3RlcnMgcmVwcmVzZW50ZWQgYnkgYSBsZXhpY2FsIHRva2VuXG4gKiB3aXRoaW4gYSBTb3VyY2UuXG4gKi9cblxuZXhwb3J0IGNsYXNzIFRva2VuIHtcbiAgLyoqXG4gICAqIFRoZSBraW5kIG9mIFRva2VuLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIGNoYXJhY3RlciBvZmZzZXQgYXQgd2hpY2ggdGhpcyBOb2RlIGJlZ2lucy5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGF0IHdoaWNoIHRoaXMgTm9kZSBlbmRzLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIDEtaW5kZXhlZCBsaW5lIG51bWJlciBvbiB3aGljaCB0aGlzIFRva2VuIGFwcGVhcnMuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgMS1pbmRleGVkIGNvbHVtbiBudW1iZXIgYXQgd2hpY2ggdGhpcyBUb2tlbiBiZWdpbnMuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBGb3Igbm9uLXB1bmN0dWF0aW9uIHRva2VucywgcmVwcmVzZW50cyB0aGUgaW50ZXJwcmV0ZWQgdmFsdWUgb2YgdGhlIHRva2VuLlxuICAgKlxuICAgKiBOb3RlOiBpcyB1bmRlZmluZWQgZm9yIHB1bmN0dWF0aW9uIHRva2VucywgYnV0IHR5cGVkIGFzIHN0cmluZyBmb3JcbiAgICogY29udmVuaWVuY2UgaW4gdGhlIHBhcnNlci5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRva2VucyBleGlzdCBhcyBub2RlcyBpbiBhIGRvdWJsZS1saW5rZWQtbGlzdCBhbW9uZ3N0IGFsbCB0b2tlbnNcbiAgICogaW5jbHVkaW5nIGlnbm9yZWQgdG9rZW5zLiA8U09GPiBpcyBhbHdheXMgdGhlIGZpcnN0IG5vZGUgYW5kIDxFT0Y+XG4gICAqIHRoZSBsYXN0LlxuICAgKi9cbiAgY29uc3RydWN0b3Ioa2luZCwgc3RhcnQsIGVuZCwgbGluZSwgY29sdW1uLCB2YWx1ZSkge1xuICAgIHRoaXMua2luZCA9IGtpbmQ7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIHRoaXMubGluZSA9IGxpbmU7XG4gICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICB0aGlzLm5leHQgPSBudWxsO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnVG9rZW4nO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiB0aGlzLmtpbmQsXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGxpbmU6IHRoaXMubGluZSxcbiAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgfTtcbiAgfVxufVxuLyoqXG4gKiBUaGUgbGlzdCBvZiBhbGwgcG9zc2libGUgQVNUIG5vZGUgdHlwZXMuXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFF1ZXJ5RG9jdW1lbnRLZXlzID0ge1xuICBOYW1lOiBbXSxcbiAgRG9jdW1lbnQ6IFsnZGVmaW5pdGlvbnMnXSxcbiAgT3BlcmF0aW9uRGVmaW5pdGlvbjogW1xuICAgICduYW1lJyxcbiAgICAndmFyaWFibGVEZWZpbml0aW9ucycsXG4gICAgJ2RpcmVjdGl2ZXMnLFxuICAgICdzZWxlY3Rpb25TZXQnLFxuICBdLFxuICBWYXJpYWJsZURlZmluaXRpb246IFsndmFyaWFibGUnLCAndHlwZScsICdkZWZhdWx0VmFsdWUnLCAnZGlyZWN0aXZlcyddLFxuICBWYXJpYWJsZTogWyduYW1lJ10sXG4gIFNlbGVjdGlvblNldDogWydzZWxlY3Rpb25zJ10sXG4gIEZpZWxkOiBbJ2FsaWFzJywgJ25hbWUnLCAnYXJndW1lbnRzJywgJ2RpcmVjdGl2ZXMnLCAnc2VsZWN0aW9uU2V0J10sXG4gIEFyZ3VtZW50OiBbJ25hbWUnLCAndmFsdWUnXSxcbiAgRnJhZ21lbnRTcHJlYWQ6IFsnbmFtZScsICdkaXJlY3RpdmVzJ10sXG4gIElubGluZUZyYWdtZW50OiBbJ3R5cGVDb25kaXRpb24nLCAnZGlyZWN0aXZlcycsICdzZWxlY3Rpb25TZXQnXSxcbiAgRnJhZ21lbnREZWZpbml0aW9uOiBbXG4gICAgJ25hbWUnLCAvLyBOb3RlOiBmcmFnbWVudCB2YXJpYWJsZSBkZWZpbml0aW9ucyBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCByZW1vdmVkIGluIHYxNy4wLjBcbiAgICAndmFyaWFibGVEZWZpbml0aW9ucycsXG4gICAgJ3R5cGVDb25kaXRpb24nLFxuICAgICdkaXJlY3RpdmVzJyxcbiAgICAnc2VsZWN0aW9uU2V0JyxcbiAgXSxcbiAgSW50VmFsdWU6IFtdLFxuICBGbG9hdFZhbHVlOiBbXSxcbiAgU3RyaW5nVmFsdWU6IFtdLFxuICBCb29sZWFuVmFsdWU6IFtdLFxuICBOdWxsVmFsdWU6IFtdLFxuICBFbnVtVmFsdWU6IFtdLFxuICBMaXN0VmFsdWU6IFsndmFsdWVzJ10sXG4gIE9iamVjdFZhbHVlOiBbJ2ZpZWxkcyddLFxuICBPYmplY3RGaWVsZDogWyduYW1lJywgJ3ZhbHVlJ10sXG4gIERpcmVjdGl2ZTogWyduYW1lJywgJ2FyZ3VtZW50cyddLFxuICBOYW1lZFR5cGU6IFsnbmFtZSddLFxuICBMaXN0VHlwZTogWyd0eXBlJ10sXG4gIE5vbk51bGxUeXBlOiBbJ3R5cGUnXSxcbiAgU2NoZW1hRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICdkaXJlY3RpdmVzJywgJ29wZXJhdGlvblR5cGVzJ10sXG4gIE9wZXJhdGlvblR5cGVEZWZpbml0aW9uOiBbJ3R5cGUnXSxcbiAgU2NhbGFyVHlwZURlZmluaXRpb246IFsnZGVzY3JpcHRpb24nLCAnbmFtZScsICdkaXJlY3RpdmVzJ10sXG4gIE9iamVjdFR5cGVEZWZpbml0aW9uOiBbXG4gICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAnbmFtZScsXG4gICAgJ2ludGVyZmFjZXMnLFxuICAgICdkaXJlY3RpdmVzJyxcbiAgICAnZmllbGRzJyxcbiAgXSxcbiAgRmllbGREZWZpbml0aW9uOiBbJ2Rlc2NyaXB0aW9uJywgJ25hbWUnLCAnYXJndW1lbnRzJywgJ3R5cGUnLCAnZGlyZWN0aXZlcyddLFxuICBJbnB1dFZhbHVlRGVmaW5pdGlvbjogW1xuICAgICdkZXNjcmlwdGlvbicsXG4gICAgJ25hbWUnLFxuICAgICd0eXBlJyxcbiAgICAnZGVmYXVsdFZhbHVlJyxcbiAgICAnZGlyZWN0aXZlcycsXG4gIF0sXG4gIEludGVyZmFjZVR5cGVEZWZpbml0aW9uOiBbXG4gICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAnbmFtZScsXG4gICAgJ2ludGVyZmFjZXMnLFxuICAgICdkaXJlY3RpdmVzJyxcbiAgICAnZmllbGRzJyxcbiAgXSxcbiAgVW5pb25UeXBlRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2RpcmVjdGl2ZXMnLCAndHlwZXMnXSxcbiAgRW51bVR5cGVEZWZpbml0aW9uOiBbJ2Rlc2NyaXB0aW9uJywgJ25hbWUnLCAnZGlyZWN0aXZlcycsICd2YWx1ZXMnXSxcbiAgRW51bVZhbHVlRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2RpcmVjdGl2ZXMnXSxcbiAgSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2RpcmVjdGl2ZXMnLCAnZmllbGRzJ10sXG4gIERpcmVjdGl2ZURlZmluaXRpb246IFsnZGVzY3JpcHRpb24nLCAnbmFtZScsICdhcmd1bWVudHMnLCAnbG9jYXRpb25zJ10sXG4gIFNjaGVtYUV4dGVuc2lvbjogWydkaXJlY3RpdmVzJywgJ29wZXJhdGlvblR5cGVzJ10sXG4gIFNjYWxhclR5cGVFeHRlbnNpb246IFsnbmFtZScsICdkaXJlY3RpdmVzJ10sXG4gIE9iamVjdFR5cGVFeHRlbnNpb246IFsnbmFtZScsICdpbnRlcmZhY2VzJywgJ2RpcmVjdGl2ZXMnLCAnZmllbGRzJ10sXG4gIEludGVyZmFjZVR5cGVFeHRlbnNpb246IFsnbmFtZScsICdpbnRlcmZhY2VzJywgJ2RpcmVjdGl2ZXMnLCAnZmllbGRzJ10sXG4gIFVuaW9uVHlwZUV4dGVuc2lvbjogWyduYW1lJywgJ2RpcmVjdGl2ZXMnLCAndHlwZXMnXSxcbiAgRW51bVR5cGVFeHRlbnNpb246IFsnbmFtZScsICdkaXJlY3RpdmVzJywgJ3ZhbHVlcyddLFxuICBJbnB1dE9iamVjdFR5cGVFeHRlbnNpb246IFsnbmFtZScsICdkaXJlY3RpdmVzJywgJ2ZpZWxkcyddLFxufTtcbmNvbnN0IGtpbmRWYWx1ZXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKFF1ZXJ5RG9jdW1lbnRLZXlzKSk7XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGUobWF5YmVOb2RlKSB7XG4gIGNvbnN0IG1heWJlS2luZCA9XG4gICAgbWF5YmVOb2RlID09PSBudWxsIHx8IG1heWJlTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbWF5YmVOb2RlLmtpbmQ7XG4gIHJldHVybiB0eXBlb2YgbWF5YmVLaW5kID09PSAnc3RyaW5nJyAmJiBraW5kVmFsdWVzLmhhcyhtYXliZUtpbmQpO1xufVxuLyoqIE5hbWUgKi9cblxuZXhwb3J0IGxldCBPcGVyYXRpb25UeXBlTm9kZTtcblxuKGZ1bmN0aW9uIChPcGVyYXRpb25UeXBlTm9kZSkge1xuICBPcGVyYXRpb25UeXBlTm9kZVsnUVVFUlknXSA9ICdxdWVyeSc7XG4gIE9wZXJhdGlvblR5cGVOb2RlWydNVVRBVElPTiddID0gJ211dGF0aW9uJztcbiAgT3BlcmF0aW9uVHlwZU5vZGVbJ1NVQlNDUklQVElPTiddID0gJ3N1YnNjcmlwdGlvbic7XG59KShPcGVyYXRpb25UeXBlTm9kZSB8fCAoT3BlcmF0aW9uVHlwZU5vZGUgPSB7fSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/ast.mjs\n");
|
613 |
|
614 | }),
|
615 |
|
616 | "../../../node_modules/graphql/language/blockString.mjs":
|
617 |
|
618 |
|
619 |
|
620 |
|
621 | (function(module, __webpack_exports__, __webpack_require__) {
|
622 |
|
623 | "use strict";
|
624 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dedentBlockStringLines\", function() { return dedentBlockStringLines; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPrintableAsBlockString\", function() { return isPrintableAsBlockString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printBlockString\", function() { return printBlockString; });\n/* harmony import */ var _characterClasses_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./characterClasses.mjs */ \"../../../node_modules/graphql/language/characterClasses.mjs\");\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\n\nfunction dedentBlockStringLines(lines) {\n var _firstNonEmptyLine2;\n\n let commonIndent = Number.MAX_SAFE_INTEGER;\n let firstNonEmptyLine = null;\n let lastNonEmptyLine = -1;\n\n for (let i = 0; i < lines.length; ++i) {\n var _firstNonEmptyLine;\n\n const line = lines[i];\n const indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n firstNonEmptyLine =\n (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine !== void 0\n ? _firstNonEmptyLine\n : i;\n lastNonEmptyLine = i;\n\n if (i !== 0 && indent < commonIndent) {\n commonIndent = indent;\n }\n }\n\n return lines // Remove common indentation from all lines but first.\n .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n .slice(\n (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine2 !== void 0\n ? _firstNonEmptyLine2\n : 0,\n lastNonEmptyLine + 1,\n );\n}\n\nfunction leadingWhitespace(str) {\n let i = 0;\n\n while (i < str.length && Object(_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isWhiteSpace\"])(str.charCodeAt(i))) {\n ++i;\n }\n\n return i;\n}\n/**\n * @internal\n */\n\nfunction isPrintableAsBlockString(value) {\n if (value === '') {\n return true; // empty string is printable\n }\n\n let isEmptyLine = true;\n let hasIndent = false;\n let hasCommonIndent = true;\n let seenNonEmptyLine = false;\n\n for (let i = 0; i < value.length; ++i) {\n switch (value.codePointAt(i)) {\n case 0x0000:\n case 0x0001:\n case 0x0002:\n case 0x0003:\n case 0x0004:\n case 0x0005:\n case 0x0006:\n case 0x0007:\n case 0x0008:\n case 0x000b:\n case 0x000c:\n case 0x000e:\n case 0x000f:\n return false;\n // Has non-printable characters\n\n case 0x000d:\n // \\r\n return false;\n // Has \\r or \\r\\n which will be replaced as \\n\n\n case 10:\n // \\n\n if (isEmptyLine && !seenNonEmptyLine) {\n return false; // Has leading new line\n }\n\n seenNonEmptyLine = true;\n isEmptyLine = true;\n hasIndent = false;\n break;\n\n case 9: // \\t\n\n case 32:\n // <space>\n hasIndent || (hasIndent = isEmptyLine);\n break;\n\n default:\n hasCommonIndent && (hasCommonIndent = hasIndent);\n isEmptyLine = false;\n }\n }\n\n if (isEmptyLine) {\n return false; // Has trailing empty lines\n }\n\n if (hasCommonIndent && seenNonEmptyLine) {\n return false; // Has internal indent\n }\n\n return true;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nfunction printBlockString(value, options) {\n const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n const forceLeadingNewLine =\n lines.length > 1 &&\n lines\n .slice(1)\n .every((line) => line.length === 0 || Object(_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isWhiteSpace\"])(line.charCodeAt(0))); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n const hasTrailingSlash = value.endsWith('\\\\');\n const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n const printAsMultipleLines =\n !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n (!isSingleLine ||\n value.length > 70 ||\n forceTrailingNewline ||\n forceLeadingNewLine ||\n hasTrailingTripleQuotes);\n let result = ''; // Format a multi-line block quote to account for leading space.\n\n const skipLeadingNewLine = isSingleLine && Object(_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isWhiteSpace\"])(value.charCodeAt(0));\n\n if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n result += '\\n';\n }\n\n result += escapedValue;\n\n if (printAsMultipleLines || forceTrailingNewline) {\n result += '\\n';\n }\n\n return '\"\"\"' + result + '\"\"\"';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvYmxvY2tTdHJpbmcubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvYmxvY2tTdHJpbmcubWpzPzMxM2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNXaGl0ZVNwYWNlIH0gZnJvbSAnLi9jaGFyYWN0ZXJDbGFzc2VzLm1qcyc7XG4vKipcbiAqIFByb2R1Y2VzIHRoZSB2YWx1ZSBvZiBhIGJsb2NrIHN0cmluZyBmcm9tIGl0cyBwYXJzZWQgcmF3IHZhbHVlLCBzaW1pbGFyIHRvXG4gKiBDb2ZmZWVTY3JpcHQncyBibG9jayBzdHJpbmcsIFB5dGhvbidzIGRvY3N0cmluZyB0cmltIG9yIFJ1YnkncyBzdHJpcF9oZXJlZG9jLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50cyB0aGUgR3JhcGhRTCBzcGVjJ3MgQmxvY2tTdHJpbmdWYWx1ZSgpIHN0YXRpYyBhbGdvcml0aG0uXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZGVudEJsb2NrU3RyaW5nTGluZXMobGluZXMpIHtcbiAgdmFyIF9maXJzdE5vbkVtcHR5TGluZTI7XG5cbiAgbGV0IGNvbW1vbkluZGVudCA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuICBsZXQgZmlyc3ROb25FbXB0eUxpbmUgPSBudWxsO1xuICBsZXQgbGFzdE5vbkVtcHR5TGluZSA9IC0xO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgX2ZpcnN0Tm9uRW1wdHlMaW5lO1xuXG4gICAgY29uc3QgbGluZSA9IGxpbmVzW2ldO1xuICAgIGNvbnN0IGluZGVudCA9IGxlYWRpbmdXaGl0ZXNwYWNlKGxpbmUpO1xuXG4gICAgaWYgKGluZGVudCA9PT0gbGluZS5sZW5ndGgpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBza2lwIGVtcHR5IGxpbmVzXG4gICAgfVxuXG4gICAgZmlyc3ROb25FbXB0eUxpbmUgPVxuICAgICAgKF9maXJzdE5vbkVtcHR5TGluZSA9IGZpcnN0Tm9uRW1wdHlMaW5lKSAhPT0gbnVsbCAmJlxuICAgICAgX2ZpcnN0Tm9uRW1wdHlMaW5lICE9PSB2b2lkIDBcbiAgICAgICAgPyBfZmlyc3ROb25FbXB0eUxpbmVcbiAgICAgICAgOiBpO1xuICAgIGxhc3ROb25FbXB0eUxpbmUgPSBpO1xuXG4gICAgaWYgKGkgIT09IDAgJiYgaW5kZW50IDwgY29tbW9uSW5kZW50KSB7XG4gICAgICBjb21tb25JbmRlbnQgPSBpbmRlbnQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxpbmVzIC8vIFJlbW92ZSBjb21tb24gaW5kZW50YXRpb24gZnJvbSBhbGwgbGluZXMgYnV0IGZpcnN0LlxuICAgIC5tYXAoKGxpbmUsIGkpID0+IChpID09PSAwID8gbGluZSA6IGxpbmUuc2xpY2UoY29tbW9uSW5kZW50KSkpIC8vIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcy5cbiAgICAuc2xpY2UoXG4gICAgICAoX2ZpcnN0Tm9uRW1wdHlMaW5lMiA9IGZpcnN0Tm9uRW1wdHlMaW5lKSAhPT0gbnVsbCAmJlxuICAgICAgICBfZmlyc3ROb25FbXB0eUxpbmUyICE9PSB2b2lkIDBcbiAgICAgICAgPyBfZmlyc3ROb25FbXB0eUxpbmUyXG4gICAgICAgIDogMCxcbiAgICAgIGxhc3ROb25FbXB0eUxpbmUgKyAxLFxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGxlYWRpbmdXaGl0ZXNwYWNlKHN0cikge1xuICBsZXQgaSA9IDA7XG5cbiAgd2hpbGUgKGkgPCBzdHIubGVuZ3RoICYmIGlzV2hpdGVTcGFjZShzdHIuY2hhckNvZGVBdChpKSkpIHtcbiAgICArK2k7XG4gIH1cblxuICByZXR1cm4gaTtcbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJpbnRhYmxlQXNCbG9ja1N0cmluZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgcmV0dXJuIHRydWU7IC8vIGVtcHR5IHN0cmluZyBpcyBwcmludGFibGVcbiAgfVxuXG4gIGxldCBpc0VtcHR5TGluZSA9IHRydWU7XG4gIGxldCBoYXNJbmRlbnQgPSBmYWxzZTtcbiAgbGV0IGhhc0NvbW1vbkluZGVudCA9IHRydWU7XG4gIGxldCBzZWVuTm9uRW1wdHlMaW5lID0gZmFsc2U7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgIHN3aXRjaCAodmFsdWUuY29kZVBvaW50QXQoaSkpIHtcbiAgICAgIGNhc2UgMHgwMDAwOlxuICAgICAgY2FzZSAweDAwMDE6XG4gICAgICBjYXNlIDB4MDAwMjpcbiAgICAgIGNhc2UgMHgwMDAzOlxuICAgICAgY2FzZSAweDAwMDQ6XG4gICAgICBjYXNlIDB4MDAwNTpcbiAgICAgIGNhc2UgMHgwMDA2OlxuICAgICAgY2FzZSAweDAwMDc6XG4gICAgICBjYXNlIDB4MDAwODpcbiAgICAgIGNhc2UgMHgwMDBiOlxuICAgICAgY2FzZSAweDAwMGM6XG4gICAgICBjYXNlIDB4MDAwZTpcbiAgICAgIGNhc2UgMHgwMDBmOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAvLyBIYXMgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzXG5cbiAgICAgIGNhc2UgMHgwMDBkOlxuICAgICAgICAvLyAgXFxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIC8vIEhhcyBcXHIgb3IgXFxyXFxuIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYXMgXFxuXG5cbiAgICAgIGNhc2UgMTA6XG4gICAgICAgIC8vICBcXG5cbiAgICAgICAgaWYgKGlzRW1wdHlMaW5lICYmICFzZWVuTm9uRW1wdHlMaW5lKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBIYXMgbGVhZGluZyBuZXcgbGluZVxuICAgICAgICB9XG5cbiAgICAgICAgc2Vlbk5vbkVtcHR5TGluZSA9IHRydWU7XG4gICAgICAgIGlzRW1wdHlMaW5lID0gdHJ1ZTtcbiAgICAgICAgaGFzSW5kZW50ID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDk6IC8vICAgXFx0XG5cbiAgICAgIGNhc2UgMzI6XG4gICAgICAgIC8vICA8c3BhY2U+XG4gICAgICAgIGhhc0luZGVudCB8fCAoaGFzSW5kZW50ID0gaXNFbXB0eUxpbmUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaGFzQ29tbW9uSW5kZW50ICYmIChoYXNDb21tb25JbmRlbnQgPSBoYXNJbmRlbnQpO1xuICAgICAgICBpc0VtcHR5TGluZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc0VtcHR5TGluZSkge1xuICAgIHJldHVybiBmYWxzZTsgLy8gSGFzIHRyYWlsaW5nIGVtcHR5IGxpbmVzXG4gIH1cblxuICBpZiAoaGFzQ29tbW9uSW5kZW50ICYmIHNlZW5Ob25FbXB0eUxpbmUpIHtcbiAgICByZXR1cm4gZmFsc2U7IC8vIEhhcyBpbnRlcm5hbCBpbmRlbnRcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuLyoqXG4gKiBQcmludCBhIGJsb2NrIHN0cmluZyBpbiB0aGUgaW5kZW50ZWQgYmxvY2sgZm9ybSBieSBhZGRpbmcgYSBsZWFkaW5nIGFuZFxuICogdHJhaWxpbmcgYmxhbmsgbGluZS4gSG93ZXZlciwgaWYgYSBibG9jayBzdHJpbmcgc3RhcnRzIHdpdGggd2hpdGVzcGFjZSBhbmQgaXNcbiAqIGEgc2luZ2xlLWxpbmUsIGFkZGluZyBhIGxlYWRpbmcgYmxhbmsgbGluZSB3b3VsZCBzdHJpcCB0aGF0IHdoaXRlc3BhY2UuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW50QmxvY2tTdHJpbmcodmFsdWUsIG9wdGlvbnMpIHtcbiAgY29uc3QgZXNjYXBlZFZhbHVlID0gdmFsdWUucmVwbGFjZSgvXCJcIlwiL2csICdcXFxcXCJcIlwiJyk7IC8vIEV4cGFuZCBhIGJsb2NrIHN0cmluZydzIHJhdyB2YWx1ZSBpbnRvIGluZGVwZW5kZW50IGxpbmVzLlxuXG4gIGNvbnN0IGxpbmVzID0gZXNjYXBlZFZhbHVlLnNwbGl0KC9cXHJcXG58W1xcblxccl0vZyk7XG4gIGNvbnN0IGlzU2luZ2xlTGluZSA9IGxpbmVzLmxlbmd0aCA9PT0gMTsgLy8gSWYgY29tbW9uIGluZGVudGF0aW9uIGlzIGZvdW5kIHdlIGNhbiBmaXggc29tZSBvZiB0aG9zZSBjYXNlcyBieSBhZGRpbmcgbGVhZGluZyBuZXcgbGluZVxuXG4gIGNvbnN0IGZvcmNlTGVhZGluZ05ld0xpbmUgPVxuICAgIGxpbmVzLmxlbmd0aCA+IDEgJiZcbiAgICBsaW5lc1xuICAgICAgLnNsaWNlKDEpXG4gICAgICAuZXZlcnkoKGxpbmUpID0+IGxpbmUubGVuZ3RoID09PSAwIHx8IGlzV2hpdGVTcGFjZShsaW5lLmNoYXJDb2RlQXQoMCkpKTsgLy8gVHJhaWxpbmcgdHJpcGxlIHF1b3RlcyBqdXN0IGxvb2tzIGNvbmZ1c2luZyBidXQgZG9lc24ndCBmb3JjZSB0cmFpbGluZyBuZXcgbGluZVxuXG4gIGNvbnN0IGhhc1RyYWlsaW5nVHJpcGxlUXVvdGVzID0gZXNjYXBlZFZhbHVlLmVuZHNXaXRoKCdcXFxcXCJcIlwiJyk7IC8vIFRyYWlsaW5nIHF1b3RlIChzaW5nbGUgb3IgZG91YmxlKSBvciBzbGFzaCBmb3JjZXMgdHJhaWxpbmcgbmV3IGxpbmVcblxuICBjb25zdCBoYXNUcmFpbGluZ1F1b3RlID0gdmFsdWUuZW5kc1dpdGgoJ1wiJykgJiYgIWhhc1RyYWlsaW5nVHJpcGxlUXVvdGVzO1xuICBjb25zdCBoYXNUcmFpbGluZ1NsYXNoID0gdmFsdWUuZW5kc1dpdGgoJ1xcXFwnKTtcbiAgY29uc3QgZm9yY2VUcmFpbGluZ05ld2xpbmUgPSBoYXNUcmFpbGluZ1F1b3RlIHx8IGhhc1RyYWlsaW5nU2xhc2g7XG4gIGNvbnN0IHByaW50QXNNdWx0aXBsZUxpbmVzID1cbiAgICAhKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMubWluaW1pemUpICYmIC8vIGFkZCBsZWFkaW5nIGFuZCB0cmFpbGluZyBuZXcgbGluZXMgb25seSBpZiBpdCBpbXByb3ZlcyByZWFkYWJpbGl0eVxuICAgICghaXNTaW5nbGVMaW5lIHx8XG4gICAgICB2YWx1ZS5sZW5ndGggPiA3MCB8fFxuICAgICAgZm9yY2VUcmFpbGluZ05ld2xpbmUgfHxcbiAgICAgIGZvcmNlTGVhZGluZ05ld0xpbmUgfHxcbiAgICAgIGhhc1RyYWlsaW5nVHJpcGxlUXVvdGVzKTtcbiAgbGV0IHJlc3VsdCA9ICcnOyAvLyBGb3JtYXQgYSBtdWx0aS1saW5lIGJsb2NrIHF1b3RlIHRvIGFjY291bnQgZm9yIGxlYWRpbmcgc3BhY2UuXG5cbiAgY29uc3Qgc2tpcExlYWRpbmdOZXdMaW5lID0gaXNTaW5nbGVMaW5lICYmIGlzV2hpdGVTcGFjZSh2YWx1ZS5jaGFyQ29kZUF0KDApKTtcblxuICBpZiAoKHByaW50QXNNdWx0aXBsZUxpbmVzICYmICFza2lwTGVhZGluZ05ld0xpbmUpIHx8IGZvcmNlTGVhZGluZ05ld0xpbmUpIHtcbiAgICByZXN1bHQgKz0gJ1xcbic7XG4gIH1cblxuICByZXN1bHQgKz0gZXNjYXBlZFZhbHVlO1xuXG4gIGlmIChwcmludEFzTXVsdGlwbGVMaW5lcyB8fCBmb3JjZVRyYWlsaW5nTmV3bGluZSkge1xuICAgIHJlc3VsdCArPSAnXFxuJztcbiAgfVxuXG4gIHJldHVybiAnXCJcIlwiJyArIHJlc3VsdCArICdcIlwiXCInO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/blockString.mjs\n");
|
625 |
|
626 | }),
|
627 |
|
628 | "../../../node_modules/graphql/language/characterClasses.mjs":
|
629 |
|
630 |
|
631 |
|
632 |
|
633 | (function(module, __webpack_exports__, __webpack_require__) {
|
634 |
|
635 | "use strict";
|
636 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWhiteSpace\", function() { return isWhiteSpace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDigit\", function() { return isDigit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLetter\", function() { return isLetter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNameStart\", function() { return isNameStart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNameContinue\", function() { return isNameContinue; });\n/**\n * ```\n * WhiteSpace ::\n * - \"Horizontal Tab (U+0009)\"\n * - \"Space (U+0020)\"\n * ```\n * @internal\n */\nfunction isWhiteSpace(code) {\n return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nfunction isDigit(code) {\n return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n * - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n * - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n * - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n * - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nfunction isLetter(code) {\n return (\n (code >= 0x0061 && code <= 0x007a) || // A-Z\n (code >= 0x0041 && code <= 0x005a) // a-z\n );\n}\n/**\n * ```\n * NameStart ::\n * - Letter\n * - `_`\n * ```\n * @internal\n */\n\nfunction isNameStart(code) {\n return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n * - Letter\n * - Digit\n * - `_`\n * ```\n * @internal\n */\n\nfunction isNameContinue(code) {\n return isLetter(code) || isDigit(code) || code === 0x005f;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvY2hhcmFjdGVyQ2xhc3Nlcy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9jaGFyYWN0ZXJDbGFzc2VzLm1qcz8xOWUxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYGBgXG4gKiBXaGl0ZVNwYWNlIDo6XG4gKiAgIC0gXCJIb3Jpem9udGFsIFRhYiAoVSswMDA5KVwiXG4gKiAgIC0gXCJTcGFjZSAoVSswMDIwKVwiXG4gKiBgYGBcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUgPT09IDB4MDAwOSB8fCBjb2RlID09PSAweDAwMjA7XG59XG4vKipcbiAqIGBgYFxuICogRGlnaXQgOjogb25lIG9mXG4gKiAgIC0gYDBgIGAxYCBgMmAgYDNgIGA0YCBgNWAgYDZgIGA3YCBgOGAgYDlgXG4gKiBgYGBcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpZ2l0KGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUgPj0gMHgwMDMwICYmIGNvZGUgPD0gMHgwMDM5O1xufVxuLyoqXG4gKiBgYGBcbiAqIExldHRlciA6OiBvbmUgb2ZcbiAqICAgLSBgQWAgYEJgIGBDYCBgRGAgYEVgIGBGYCBgR2AgYEhgIGBJYCBgSmAgYEtgIGBMYCBgTWBcbiAqICAgLSBgTmAgYE9gIGBQYCBgUWAgYFJgIGBTYCBgVGAgYFVgIGBWYCBgV2AgYFhgIGBZYCBgWmBcbiAqICAgLSBgYWAgYGJgIGBjYCBgZGAgYGVgIGBmYCBgZ2AgYGhgIGBpYCBgamAgYGtgIGBsYCBgbWBcbiAqICAgLSBgbmAgYG9gIGBwYCBgcWAgYHJgIGBzYCBgdGAgYHVgIGB2YCBgd2AgYHhgIGB5YCBgemBcbiAqIGBgYFxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGV0dGVyKGNvZGUpIHtcbiAgcmV0dXJuIChcbiAgICAoY29kZSA+PSAweDAwNjEgJiYgY29kZSA8PSAweDAwN2EpIHx8IC8vIEEtWlxuICAgIChjb2RlID49IDB4MDA0MSAmJiBjb2RlIDw9IDB4MDA1YSkgLy8gYS16XG4gICk7XG59XG4vKipcbiAqIGBgYFxuICogTmFtZVN0YXJ0IDo6XG4gKiAgIC0gTGV0dGVyXG4gKiAgIC0gYF9gXG4gKiBgYGBcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc05hbWVTdGFydChjb2RlKSB7XG4gIHJldHVybiBpc0xldHRlcihjb2RlKSB8fCBjb2RlID09PSAweDAwNWY7XG59XG4vKipcbiAqIGBgYFxuICogTmFtZUNvbnRpbnVlIDo6XG4gKiAgIC0gTGV0dGVyXG4gKiAgIC0gRGlnaXRcbiAqICAgLSBgX2BcbiAqIGBgYFxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTmFtZUNvbnRpbnVlKGNvZGUpIHtcbiAgcmV0dXJuIGlzTGV0dGVyKGNvZGUpIHx8IGlzRGlnaXQoY29kZSkgfHwgY29kZSA9PT0gMHgwMDVmO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/characterClasses.mjs\n");
|
637 |
|
638 | }),
|
639 |
|
640 | "../../../node_modules/graphql/language/directiveLocation.mjs":
|
641 |
|
642 |
|
643 |
|
644 |
|
645 | (function(module, __webpack_exports__, __webpack_require__) {
|
646 |
|
647 | "use strict";
|
648 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DirectiveLocation\", function() { return DirectiveLocation; });\n/**\n * The set of allowed directive location values.\n */\nlet DirectiveLocation;\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n\n(function (DirectiveLocation) {\n DirectiveLocation['QUERY'] = 'QUERY';\n DirectiveLocation['MUTATION'] = 'MUTATION';\n DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n DirectiveLocation['FIELD'] = 'FIELD';\n DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n DirectiveLocation['SCHEMA'] = 'SCHEMA';\n DirectiveLocation['SCALAR'] = 'SCALAR';\n DirectiveLocation['OBJECT'] = 'OBJECT';\n DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n DirectiveLocation['INTERFACE'] = 'INTERFACE';\n DirectiveLocation['UNION'] = 'UNION';\n DirectiveLocation['ENUM'] = 'ENUM';\n DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (DirectiveLocation = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvZGlyZWN0aXZlTG9jYXRpb24ubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvZGlyZWN0aXZlTG9jYXRpb24ubWpzPzViZjMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgc2V0IG9mIGFsbG93ZWQgZGlyZWN0aXZlIGxvY2F0aW9uIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGxldCBEaXJlY3RpdmVMb2NhdGlvbjtcbi8qKlxuICogVGhlIGVudW0gdHlwZSByZXByZXNlbnRpbmcgdGhlIGRpcmVjdGl2ZSBsb2NhdGlvbiB2YWx1ZXMuXG4gKlxuICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgRGlyZWN0aXZlTG9jYXRpb25gLiBXaWxsIGJlIHJlbW92ZSBpbiB2MTcuXG4gKi9cblxuKGZ1bmN0aW9uIChEaXJlY3RpdmVMb2NhdGlvbikge1xuICBEaXJlY3RpdmVMb2NhdGlvblsnUVVFUlknXSA9ICdRVUVSWSc7XG4gIERpcmVjdGl2ZUxvY2F0aW9uWydNVVRBVElPTiddID0gJ01VVEFUSU9OJztcbiAgRGlyZWN0aXZlTG9jYXRpb25bJ1NVQlNDUklQVElPTiddID0gJ1NVQlNDUklQVElPTic7XG4gIERpcmVjdGl2ZUxvY2F0aW9uWydGSUVMRCddID0gJ0ZJRUxEJztcbiAgRGlyZWN0aXZlTG9jYXRpb25bJ0ZSQUdNRU5UX0RFRklOSVRJT04nXSA9ICdGUkFHTUVOVF9ERUZJTklUSU9OJztcbiAgRGlyZWN0aXZlTG9jYXRpb25bJ0ZSQUdNRU5UX1NQUkVBRCddID0gJ0ZSQUdNRU5UX1NQUkVBRCc7XG4gIERpcmVjdGl2ZUxvY2F0aW9uWydJTkxJTkVfRlJBR01FTlQnXSA9ICdJTkxJTkVfRlJBR01FTlQnO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnVkFSSUFCTEVfREVGSU5JVElPTiddID0gJ1ZBUklBQkxFX0RFRklOSVRJT04nO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnU0NIRU1BJ10gPSAnU0NIRU1BJztcbiAgRGlyZWN0aXZlTG9jYXRpb25bJ1NDQUxBUiddID0gJ1NDQUxBUic7XG4gIERpcmVjdGl2ZUxvY2F0aW9uWydPQkpFQ1QnXSA9ICdPQkpFQ1QnO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnRklFTERfREVGSU5JVElPTiddID0gJ0ZJRUxEX0RFRklOSVRJT04nO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnQVJHVU1FTlRfREVGSU5JVElPTiddID0gJ0FSR1VNRU5UX0RFRklOSVRJT04nO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnSU5URVJGQUNFJ10gPSAnSU5URVJGQUNFJztcbiAgRGlyZWN0aXZlTG9jYXRpb25bJ1VOSU9OJ10gPSAnVU5JT04nO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnRU5VTSddID0gJ0VOVU0nO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnRU5VTV9WQUxVRSddID0gJ0VOVU1fVkFMVUUnO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnSU5QVVRfT0JKRUNUJ10gPSAnSU5QVVRfT0JKRUNUJztcbiAgRGlyZWN0aXZlTG9jYXRpb25bJ0lOUFVUX0ZJRUxEX0RFRklOSVRJT04nXSA9ICdJTlBVVF9GSUVMRF9ERUZJTklUSU9OJztcbn0pKERpcmVjdGl2ZUxvY2F0aW9uIHx8IChEaXJlY3RpdmVMb2NhdGlvbiA9IHt9KSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/directiveLocation.mjs\n");
|
649 |
|
650 | }),
|
651 |
|
652 | "../../../node_modules/graphql/language/index.mjs":
|
653 |
|
654 |
|
655 |
|
656 |
|
657 | (function(module, __webpack_exports__, __webpack_require__) {
|
658 |
|
659 | "use strict";
|
660 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _source_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./source.mjs */ \"../../../node_modules/graphql/language/source.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Source\", function() { return _source_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Source\"]; });\n\n/* harmony import */ var _location_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./location.mjs */ \"../../../node_modules/graphql/language/location.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return _location_mjs__WEBPACK_IMPORTED_MODULE_1__[\"getLocation\"]; });\n\n/* harmony import */ var _printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./printLocation.mjs */ \"../../../node_modules/graphql/language/printLocation.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printLocation\", function() { return _printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"printLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printSourceLocation\", function() { return _printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"printSourceLocation\"]; });\n\n/* harmony import */ var _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Kind\", function() { return _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"]; });\n\n/* harmony import */ var _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tokenKind.mjs */ \"../../../node_modules/graphql/language/tokenKind.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TokenKind\", function() { return _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"]; });\n\n/* harmony import */ var _lexer_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lexer.mjs */ \"../../../node_modules/graphql/language/lexer.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Lexer\", function() { return _lexer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Lexer\"]; });\n\n/* harmony import */ var _parser_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parser.mjs */ \"../../../node_modules/graphql/language/parser.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return _parser_mjs__WEBPACK_IMPORTED_MODULE_6__[\"parse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseValue\", function() { return _parser_mjs__WEBPACK_IMPORTED_MODULE_6__[\"parseValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseConstValue\", function() { return _parser_mjs__WEBPACK_IMPORTED_MODULE_6__[\"parseConstValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseType\", function() { return _parser_mjs__WEBPACK_IMPORTED_MODULE_6__[\"parseType\"]; });\n\n/* harmony import */ var _printer_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"print\", function() { return _printer_mjs__WEBPACK_IMPORTED_MODULE_7__[\"print\"]; });\n\n/* harmony import */ var _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visit\", function() { return _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__[\"visit\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visitInParallel\", function() { return _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__[\"visitInParallel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVisitFn\", function() { return _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__[\"getVisitFn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnterLeaveForKind\", function() { return _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__[\"getEnterLeaveForKind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BREAK\", function() { return _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__[\"BREAK\"]; });\n\n/* harmony import */ var _ast_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Location\", function() { return _ast_mjs__WEBPACK_IMPORTED_MODULE_9__[\"Location\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Token\", function() { return _ast_mjs__WEBPACK_IMPORTED_MODULE_9__[\"Token\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OperationTypeNode\", function() { return _ast_mjs__WEBPACK_IMPORTED_MODULE_9__[\"OperationTypeNode\"]; });\n\n/* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDefinitionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isExecutableDefinitionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isExecutableDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSelectionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isSelectionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isValueNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isValueNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isConstValueNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isConstValueNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isTypeNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeSystemDefinitionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isTypeSystemDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeDefinitionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isTypeDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeSystemExtensionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isTypeSystemExtensionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeExtensionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isTypeExtensionNode\"]; });\n\n/* harmony import */ var _directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./directiveLocation.mjs */ \"../../../node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DirectiveLocation\", function() { return _directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_11__[\"DirectiveLocation\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvaW5kZXgubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvaW5kZXgubWpzPzM5OTAiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgU291cmNlIH0gZnJvbSAnLi9zb3VyY2UubWpzJztcbmV4cG9ydCB7IGdldExvY2F0aW9uIH0gZnJvbSAnLi9sb2NhdGlvbi5tanMnO1xuZXhwb3J0IHsgcHJpbnRMb2NhdGlvbiwgcHJpbnRTb3VyY2VMb2NhdGlvbiB9IGZyb20gJy4vcHJpbnRMb2NhdGlvbi5tanMnO1xuZXhwb3J0IHsgS2luZCB9IGZyb20gJy4va2luZHMubWpzJztcbmV4cG9ydCB7IFRva2VuS2luZCB9IGZyb20gJy4vdG9rZW5LaW5kLm1qcyc7XG5leHBvcnQgeyBMZXhlciB9IGZyb20gJy4vbGV4ZXIubWpzJztcbmV4cG9ydCB7IHBhcnNlLCBwYXJzZVZhbHVlLCBwYXJzZUNvbnN0VmFsdWUsIHBhcnNlVHlwZSB9IGZyb20gJy4vcGFyc2VyLm1qcyc7XG5leHBvcnQgeyBwcmludCB9IGZyb20gJy4vcHJpbnRlci5tanMnO1xuZXhwb3J0IHtcbiAgdmlzaXQsXG4gIHZpc2l0SW5QYXJhbGxlbCxcbiAgZ2V0VmlzaXRGbixcbiAgZ2V0RW50ZXJMZWF2ZUZvcktpbmQsXG4gIEJSRUFLLFxufSBmcm9tICcuL3Zpc2l0b3IubWpzJztcbmV4cG9ydCB7IExvY2F0aW9uLCBUb2tlbiwgT3BlcmF0aW9uVHlwZU5vZGUgfSBmcm9tICcuL2FzdC5tanMnO1xuZXhwb3J0IHtcbiAgaXNEZWZpbml0aW9uTm9kZSxcbiAgaXNFeGVjdXRhYmxlRGVmaW5pdGlvbk5vZGUsXG4gIGlzU2VsZWN0aW9uTm9kZSxcbiAgaXNWYWx1ZU5vZGUsXG4gIGlzQ29uc3RWYWx1ZU5vZGUsXG4gIGlzVHlwZU5vZGUsXG4gIGlzVHlwZVN5c3RlbURlZmluaXRpb25Ob2RlLFxuICBpc1R5cGVEZWZpbml0aW9uTm9kZSxcbiAgaXNUeXBlU3lzdGVtRXh0ZW5zaW9uTm9kZSxcbiAgaXNUeXBlRXh0ZW5zaW9uTm9kZSxcbn0gZnJvbSAnLi9wcmVkaWNhdGVzLm1qcyc7XG5leHBvcnQgeyBEaXJlY3RpdmVMb2NhdGlvbiB9IGZyb20gJy4vZGlyZWN0aXZlTG9jYXRpb24ubWpzJztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFZQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/index.mjs\n");
|
661 |
|
662 | }),
|
663 |
|
664 | "../../../node_modules/graphql/language/kinds.mjs":
|
665 |
|
666 |
|
667 |
|
668 |
|
669 | (function(module, __webpack_exports__, __webpack_require__) {
|
670 |
|
671 | "use strict";
|
672 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Kind\", function() { return Kind; });\n/**\n * The set of allowed kind values for AST nodes.\n */\nlet Kind;\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n\n(function (Kind) {\n Kind['NAME'] = 'Name';\n Kind['DOCUMENT'] = 'Document';\n Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n Kind['SELECTION_SET'] = 'SelectionSet';\n Kind['FIELD'] = 'Field';\n Kind['ARGUMENT'] = 'Argument';\n Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n Kind['VARIABLE'] = 'Variable';\n Kind['INT'] = 'IntValue';\n Kind['FLOAT'] = 'FloatValue';\n Kind['STRING'] = 'StringValue';\n Kind['BOOLEAN'] = 'BooleanValue';\n Kind['NULL'] = 'NullValue';\n Kind['ENUM'] = 'EnumValue';\n Kind['LIST'] = 'ListValue';\n Kind['OBJECT'] = 'ObjectValue';\n Kind['OBJECT_FIELD'] = 'ObjectField';\n Kind['DIRECTIVE'] = 'Directive';\n Kind['NAMED_TYPE'] = 'NamedType';\n Kind['LIST_TYPE'] = 'ListType';\n Kind['NON_NULL_TYPE'] = 'NonNullType';\n Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n})(Kind || (Kind = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2Uva2luZHMubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2Uva2luZHMubWpzP2RiZDgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgc2V0IG9mIGFsbG93ZWQga2luZCB2YWx1ZXMgZm9yIEFTVCBub2Rlcy5cbiAqL1xuZXhwb3J0IGxldCBLaW5kO1xuLyoqXG4gKiBUaGUgZW51bSB0eXBlIHJlcHJlc2VudGluZyB0aGUgcG9zc2libGUga2luZCB2YWx1ZXMgb2YgQVNUIG5vZGVzLlxuICpcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYEtpbmRgLiBXaWxsIGJlIHJlbW92ZSBpbiB2MTcuXG4gKi9cblxuKGZ1bmN0aW9uIChLaW5kKSB7XG4gIEtpbmRbJ05BTUUnXSA9ICdOYW1lJztcbiAgS2luZFsnRE9DVU1FTlQnXSA9ICdEb2N1bWVudCc7XG4gIEtpbmRbJ09QRVJBVElPTl9ERUZJTklUSU9OJ10gPSAnT3BlcmF0aW9uRGVmaW5pdGlvbic7XG4gIEtpbmRbJ1ZBUklBQkxFX0RFRklOSVRJT04nXSA9ICdWYXJpYWJsZURlZmluaXRpb24nO1xuICBLaW5kWydTRUxFQ1RJT05fU0VUJ10gPSAnU2VsZWN0aW9uU2V0JztcbiAgS2luZFsnRklFTEQnXSA9ICdGaWVsZCc7XG4gIEtpbmRbJ0FSR1VNRU5UJ10gPSAnQXJndW1lbnQnO1xuICBLaW5kWydGUkFHTUVOVF9TUFJFQUQnXSA9ICdGcmFnbWVudFNwcmVhZCc7XG4gIEtpbmRbJ0lOTElORV9GUkFHTUVOVCddID0gJ0lubGluZUZyYWdtZW50JztcbiAgS2luZFsnRlJBR01FTlRfREVGSU5JVElPTiddID0gJ0ZyYWdtZW50RGVmaW5pdGlvbic7XG4gIEtpbmRbJ1ZBUklBQkxFJ10gPSAnVmFyaWFibGUnO1xuICBLaW5kWydJTlQnXSA9ICdJbnRWYWx1ZSc7XG4gIEtpbmRbJ0ZMT0FUJ10gPSAnRmxvYXRWYWx1ZSc7XG4gIEtpbmRbJ1NUUklORyddID0gJ1N0cmluZ1ZhbHVlJztcbiAgS2luZFsnQk9PTEVBTiddID0gJ0Jvb2xlYW5WYWx1ZSc7XG4gIEtpbmRbJ05VTEwnXSA9ICdOdWxsVmFsdWUnO1xuICBLaW5kWydFTlVNJ10gPSAnRW51bVZhbHVlJztcbiAgS2luZFsnTElTVCddID0gJ0xpc3RWYWx1ZSc7XG4gIEtpbmRbJ09CSkVDVCddID0gJ09iamVjdFZhbHVlJztcbiAgS2luZFsnT0JKRUNUX0ZJRUxEJ10gPSAnT2JqZWN0RmllbGQnO1xuICBLaW5kWydESVJFQ1RJVkUnXSA9ICdEaXJlY3RpdmUnO1xuICBLaW5kWydOQU1FRF9UWVBFJ10gPSAnTmFtZWRUeXBlJztcbiAgS2luZFsnTElTVF9UWVBFJ10gPSAnTGlzdFR5cGUnO1xuICBLaW5kWydOT05fTlVMTF9UWVBFJ10gPSAnTm9uTnVsbFR5cGUnO1xuICBLaW5kWydTQ0hFTUFfREVGSU5JVElPTiddID0gJ1NjaGVtYURlZmluaXRpb24nO1xuICBLaW5kWydPUEVSQVRJT05fVFlQRV9ERUZJTklUSU9OJ10gPSAnT3BlcmF0aW9uVHlwZURlZmluaXRpb24nO1xuICBLaW5kWydTQ0FMQVJfVFlQRV9ERUZJTklUSU9OJ10gPSAnU2NhbGFyVHlwZURlZmluaXRpb24nO1xuICBLaW5kWydPQkpFQ1RfVFlQRV9ERUZJTklUSU9OJ10gPSAnT2JqZWN0VHlwZURlZmluaXRpb24nO1xuICBLaW5kWydGSUVMRF9ERUZJTklUSU9OJ10gPSAnRmllbGREZWZpbml0aW9uJztcbiAgS2luZFsnSU5QVVRfVkFMVUVfREVGSU5JVElPTiddID0gJ0lucHV0VmFsdWVEZWZpbml0aW9uJztcbiAgS2luZFsnSU5URVJGQUNFX1RZUEVfREVGSU5JVElPTiddID0gJ0ludGVyZmFjZVR5cGVEZWZpbml0aW9uJztcbiAgS2luZFsnVU5JT05fVFlQRV9ERUZJTklUSU9OJ10gPSAnVW5pb25UeXBlRGVmaW5pdGlvbic7XG4gIEtpbmRbJ0VOVU1fVFlQRV9ERUZJTklUSU9OJ10gPSAnRW51bVR5cGVEZWZpbml0aW9uJztcbiAgS2luZFsnRU5VTV9WQUxVRV9ERUZJTklUSU9OJ10gPSAnRW51bVZhbHVlRGVmaW5pdGlvbic7XG4gIEtpbmRbJ0lOUFVUX09CSkVDVF9UWVBFX0RFRklOSVRJT04nXSA9ICdJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uJztcbiAgS2luZFsnRElSRUNUSVZFX0RFRklOSVRJT04nXSA9ICdEaXJlY3RpdmVEZWZpbml0aW9uJztcbiAgS2luZFsnU0NIRU1BX0VYVEVOU0lPTiddID0gJ1NjaGVtYUV4dGVuc2lvbic7XG4gIEtpbmRbJ1NDQUxBUl9UWVBFX0VYVEVOU0lPTiddID0gJ1NjYWxhclR5cGVFeHRlbnNpb24nO1xuICBLaW5kWydPQkpFQ1RfVFlQRV9FWFRFTlNJT04nXSA9ICdPYmplY3RUeXBlRXh0ZW5zaW9uJztcbiAgS2luZFsnSU5URVJGQUNFX1RZUEVfRVhURU5TSU9OJ10gPSAnSW50ZXJmYWNlVHlwZUV4dGVuc2lvbic7XG4gIEtpbmRbJ1VOSU9OX1RZUEVfRVhURU5TSU9OJ10gPSAnVW5pb25UeXBlRXh0ZW5zaW9uJztcbiAgS2luZFsnRU5VTV9UWVBFX0VYVEVOU0lPTiddID0gJ0VudW1UeXBlRXh0ZW5zaW9uJztcbiAgS2luZFsnSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OJ10gPSAnSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uJztcbn0pKEtpbmQgfHwgKEtpbmQgPSB7fSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/kinds.mjs\n");
|
673 |
|
674 | }),
|
675 |
|
676 | "../../../node_modules/graphql/language/lexer.mjs":
|
677 |
|
678 |
|
679 |
|
680 |
|
681 | (function(module, __webpack_exports__, __webpack_require__) {
|
682 |
|
683 | "use strict";
|
684 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Lexer\", function() { return Lexer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPunctuatorTokenKind\", function() { return isPunctuatorTokenKind; });\n/* harmony import */ var _error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error/syntaxError.mjs */ \"../../../node_modules/graphql/error/syntaxError.mjs\");\n/* harmony import */ var _ast_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _blockString_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blockString.mjs */ \"../../../node_modules/graphql/language/blockString.mjs\");\n/* harmony import */ var _characterClasses_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./characterClasses.mjs */ \"../../../node_modules/graphql/language/characterClasses.mjs\");\n/* harmony import */ var _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tokenKind.mjs */ \"../../../node_modules/graphql/language/tokenKind.mjs\");\n\n\n\n\n\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nclass Lexer {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n constructor(source) {\n const startOfFileToken = new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].SOF, 0, 0, 0, 0);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n\n get [Symbol.toStringTag]() {\n return 'Lexer';\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n advance() {\n this.lastToken = this.token;\n const token = (this.token = this.lookahead());\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n\n lookahead() {\n let token = this.token;\n\n if (token.kind !== _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].EOF) {\n do {\n if (token.next) {\n token = token.next;\n } else {\n // Read the next token and form a link in the token linked-list.\n const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n nextToken.prev = token;\n token = nextToken;\n }\n } while (token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].COMMENT);\n }\n\n return token;\n }\n}\n/**\n * @internal\n */\n\nfunction isPunctuatorTokenKind(kind) {\n return (\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].BANG ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].DOLLAR ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].AMP ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].PAREN_L ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].PAREN_R ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].SPREAD ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].COLON ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].EQUALS ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].AT ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].BRACKET_L ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].BRACKET_R ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].BRACE_L ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].PIPE ||\n kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].BRACE_R\n );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n * - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n return (\n (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n return (\n isLeadingSurrogate(body.charCodeAt(location)) &&\n isTrailingSurrogate(body.charCodeAt(location + 1))\n );\n}\n\nfunction isLeadingSurrogate(code) {\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n */\n\nfunction printCodePointAt(lexer, location) {\n const code = lexer.source.body.codePointAt(location);\n\n if (code === undefined) {\n return _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].EOF;\n } else if (code >= 0x0020 && code <= 0x007e) {\n // Printable ASCII\n const char = String.fromCodePoint(code);\n return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n } // Unicode code point\n\n return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n const line = lexer.line;\n const col = 1 + start - lexer.lineStart;\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // SourceCharacter\n\n switch (code) {\n // Ignored ::\n // - UnicodeBOM\n // - WhiteSpace\n // - LineTerminator\n // - Comment\n // - Comma\n //\n // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n //\n // WhiteSpace ::\n // - \"Horizontal Tab (U+0009)\"\n // - \"Space (U+0020)\"\n //\n // Comma :: ,\n case 0xfeff: // <BOM>\n\n case 0x0009: // \\t\n\n case 0x0020: // <space>\n\n case 0x002c:\n // ,\n ++position;\n continue;\n // LineTerminator ::\n // - \"New Line (U+000A)\"\n // - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n // - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n case 0x000a:\n // \\n\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n\n case 0x000d:\n // \\r\n if (body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n // Comment\n\n case 0x0023:\n // #\n return readComment(lexer, position);\n // Token ::\n // - Punctuator\n // - Name\n // - IntValue\n // - FloatValue\n // - StringValue\n //\n // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n case 0x0021:\n // !\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].BANG, position, position + 1);\n\n case 0x0024:\n // $\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].DOLLAR, position, position + 1);\n\n case 0x0026:\n // &\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].AMP, position, position + 1);\n\n case 0x0028:\n // (\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].PAREN_L, position, position + 1);\n\n case 0x0029:\n // )\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].PAREN_R, position, position + 1);\n\n case 0x002e:\n // .\n if (\n body.charCodeAt(position + 1) === 0x002e &&\n body.charCodeAt(position + 2) === 0x002e\n ) {\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].SPREAD, position, position + 3);\n }\n\n break;\n\n case 0x003a:\n // :\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].COLON, position, position + 1);\n\n case 0x003d:\n // =\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].EQUALS, position, position + 1);\n\n case 0x0040:\n // @\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].AT, position, position + 1);\n\n case 0x005b:\n // [\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].BRACKET_L, position, position + 1);\n\n case 0x005d:\n // ]\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].BRACKET_R, position, position + 1);\n\n case 0x007b:\n // {\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].BRACE_L, position, position + 1);\n\n case 0x007c:\n // |\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].PIPE, position, position + 1);\n\n case 0x007d:\n // }\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].BRACE_R, position, position + 1);\n // StringValue\n\n case 0x0022:\n // \"\n if (\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n return readBlockString(lexer, position);\n }\n\n return readString(lexer, position);\n } // IntValue | FloatValue (Digit | -)\n\n if (Object(_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isDigit\"])(code) || code === 0x002d) {\n return readNumber(lexer, position, code);\n } // Name\n\n if (Object(_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isNameStart\"])(code)) {\n return readName(lexer, position);\n }\n\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n lexer.source,\n position,\n code === 0x0027\n ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n );\n }\n\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].COMMENT,\n start,\n position,\n body.slice(start + 1, position),\n );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n * - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n const body = lexer.source.body;\n let position = start;\n let code = firstCode;\n let isFloat = false; // NegativeSign (-)\n\n if (code === 0x002d) {\n code = body.charCodeAt(++position);\n } // Zero (0)\n\n if (code === 0x0030) {\n code = body.charCodeAt(++position);\n\n if (Object(_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isDigit\"])(code)) {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n lexer.source,\n position,\n `Invalid number, unexpected digit after 0: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n } else {\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Full stop (.)\n\n if (code === 0x002e) {\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // E e\n\n if (code === 0x0045 || code === 0x0065) {\n isFloat = true;\n code = body.charCodeAt(++position); // + -\n\n if (code === 0x002b || code === 0x002d) {\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n if (code === 0x002e || Object(_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isNameStart\"])(code)) {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n lexer.source,\n position,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n\n return createToken(\n lexer,\n isFloat ? _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].FLOAT : _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].INT,\n start,\n position,\n body.slice(start, position),\n );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n if (!Object(_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isDigit\"])(firstCode)) {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n lexer.source,\n start,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n start,\n )}.`,\n );\n }\n\n const body = lexer.source.body;\n let position = start + 1; // +1 to skip first firstCode\n\n while (Object(_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isDigit\"])(body.charCodeAt(position))) {\n ++position;\n }\n\n return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"` [lookahead != `\"`]\n * - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n * - SourceCharacter but not `\"` or `\\` or LineTerminator\n * - `\\u` EscapedUnicode\n * - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n * - `{` HexDigit+ `}`\n * - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n let chunkStart = position;\n let value = '';\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Quote (\")\n\n if (code === 0x0022) {\n value += body.slice(chunkStart, position);\n return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].STRING, start, position + 1, value);\n } // Escape Sequence (\\)\n\n if (code === 0x005c) {\n value += body.slice(chunkStart, position);\n const escape =\n body.charCodeAt(position + 1) === 0x0075 // u\n ? body.charCodeAt(position + 2) === 0x007b // {\n ? readEscapedUnicodeVariableWidth(lexer, position)\n : readEscapedUnicodeFixedWidth(lexer, position)\n : readEscapedCharacter(lexer, position);\n value += escape.value;\n position += escape.size;\n chunkStart = position;\n continue;\n } // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(lexer.source, position, 'Unterminated string.');\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n const body = lexer.source.body;\n let point = 0;\n let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n while (size < 12) {\n const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n if (code === 0x007d) {\n // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n if (size < 5 || !isUnicodeScalarValue(point)) {\n break;\n }\n\n return {\n value: String.fromCodePoint(point),\n size,\n };\n } // Append this hex digit to the code point.\n\n point = (point << 4) | readHexDigit(code);\n\n if (point < 0) {\n break;\n }\n }\n\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(\n position,\n position + size,\n )}\".`,\n );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n const body = lexer.source.body;\n const code = read16BitHexCode(body, position + 2);\n\n if (isUnicodeScalarValue(code)) {\n return {\n value: String.fromCodePoint(code),\n size: 6,\n };\n } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n // a valid pair is formed.\n\n if (isLeadingSurrogate(code)) {\n // \\u\n if (\n body.charCodeAt(position + 6) === 0x005c &&\n body.charCodeAt(position + 7) === 0x0075\n ) {\n const trailingCode = read16BitHexCode(body, position + 8);\n\n if (isTrailingSurrogate(trailingCode)) {\n // JavaScript defines strings as a sequence of UTF-16 code units and\n // encodes Unicode code points above U+FFFF using a surrogate pair of\n // code units. Since this is a surrogate pair escape sequence, just\n // include both codes into the JavaScript string value. Had JavaScript\n // not been internally based on UTF-16, then this surrogate pair would\n // be decoded to retrieve the supplementary code point.\n return {\n value: String.fromCodePoint(code, trailingCode),\n size: 12,\n };\n }\n }\n }\n\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n // readHexDigit() returns -1 on error. ORing a negative value with any other\n // value always produces a negative value.\n return (\n (readHexDigit(body.charCodeAt(position)) << 12) |\n (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n readHexDigit(body.charCodeAt(position + 3))\n );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * - `A` `B` `C` `D` `E` `F`\n * - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n return code >= 0x0030 && code <= 0x0039 // 0-9\n ? code - 0x0030\n : code >= 0x0041 && code <= 0x0046 // A-F\n ? code - 0x0037\n : code >= 0x0061 && code <= 0x0066 // a-f\n ? code - 0x0057\n : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"` | U+0022 | double quote |\n * | `\\` | U+005C | reverse solidus (back slash) |\n * | `/` | U+002F | solidus (forward slash) |\n * | `b` | U+0008 | backspace |\n * | `f` | U+000C | form feed |\n * | `n` | U+000A | line feed (new line) |\n * | `r` | U+000D | carriage return |\n * | `t` | U+0009 | horizontal tab |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n const body = lexer.source.body;\n const code = body.charCodeAt(position + 1);\n\n switch (code) {\n case 0x0022:\n // \"\n return {\n value: '\\u0022',\n size: 2,\n };\n\n case 0x005c:\n // \\\n return {\n value: '\\u005c',\n size: 2,\n };\n\n case 0x002f:\n // /\n return {\n value: '\\u002f',\n size: 2,\n };\n\n case 0x0062:\n // b\n return {\n value: '\\u0008',\n size: 2,\n };\n\n case 0x0066:\n // f\n return {\n value: '\\u000c',\n size: 2,\n };\n\n case 0x006e:\n // n\n return {\n value: '\\u000a',\n size: 2,\n };\n\n case 0x0072:\n // r\n return {\n value: '\\u000d',\n size: 2,\n };\n\n case 0x0074:\n // t\n return {\n value: '\\u0009',\n size: 2,\n };\n }\n\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n lexer.source,\n position,\n `Invalid character escape sequence: \"${body.slice(\n position,\n position + 2,\n )}\".`,\n );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n * - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n * - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let lineStart = lexer.lineStart;\n let position = start + 3;\n let chunkStart = position;\n let currentLine = '';\n const blockLines = [];\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n if (\n code === 0x0022 &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n const token = createToken(\n lexer,\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].BLOCK_STRING,\n start,\n position + 3, // Return a string of the lines joined with U+000A.\n Object(_blockString_mjs__WEBPACK_IMPORTED_MODULE_2__[\"dedentBlockStringLines\"])(blockLines).join('\\n'),\n );\n lexer.line += blockLines.length - 1;\n lexer.lineStart = lineStart;\n return token;\n } // Escaped Triple-Quote (\\\"\"\")\n\n if (\n code === 0x005c &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022 &&\n body.charCodeAt(position + 3) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n chunkStart = position + 1; // skip only slash\n\n position += 4;\n continue;\n } // LineTerminator\n\n if (code === 0x000a || code === 0x000d) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n\n if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n currentLine = '';\n chunkStart = position;\n lineStart = position;\n continue;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(lexer.source, position, 'Unterminated string.');\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n * - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n */\n\nfunction readName(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position);\n\n if (Object(_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isNameContinue\"])(code)) {\n ++position;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"].NAME,\n start,\n position,\n body.slice(start, position),\n );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvbGV4ZXIubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvbGV4ZXIubWpzP2NkMzAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3ludGF4RXJyb3IgfSBmcm9tICcuLi9lcnJvci9zeW50YXhFcnJvci5tanMnO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tICcuL2FzdC5tanMnO1xuaW1wb3J0IHsgZGVkZW50QmxvY2tTdHJpbmdMaW5lcyB9IGZyb20gJy4vYmxvY2tTdHJpbmcubWpzJztcbmltcG9ydCB7IGlzRGlnaXQsIGlzTmFtZUNvbnRpbnVlLCBpc05hbWVTdGFydCB9IGZyb20gJy4vY2hhcmFjdGVyQ2xhc3Nlcy5tanMnO1xuaW1wb3J0IHsgVG9rZW5LaW5kIH0gZnJvbSAnLi90b2tlbktpbmQubWpzJztcbi8qKlxuICogR2l2ZW4gYSBTb3VyY2Ugb2JqZWN0LCBjcmVhdGVzIGEgTGV4ZXIgZm9yIHRoYXQgc291cmNlLlxuICogQSBMZXhlciBpcyBhIHN0YXRlZnVsIHN0cmVhbSBnZW5lcmF0b3IgaW4gdGhhdCBldmVyeSB0aW1lXG4gKiBpdCBpcyBhZHZhbmNlZCwgaXQgcmV0dXJucyB0aGUgbmV4dCB0b2tlbiBpbiB0aGUgU291cmNlLiBBc3N1bWluZyB0aGVcbiAqIHNvdXJjZSBsZXhlcywgdGhlIGZpbmFsIFRva2VuIGVtaXR0ZWQgYnkgdGhlIGxleGVyIHdpbGwgYmUgb2Yga2luZFxuICogRU9GLCBhZnRlciB3aGljaCB0aGUgbGV4ZXIgd2lsbCByZXBlYXRlZGx5IHJldHVybiB0aGUgc2FtZSBFT0YgdG9rZW5cbiAqIHdoZW5ldmVyIGNhbGxlZC5cbiAqL1xuXG5leHBvcnQgY2xhc3MgTGV4ZXIge1xuICAvKipcbiAgICogVGhlIHByZXZpb3VzbHkgZm9jdXNlZCBub24taWdub3JlZCB0b2tlbi5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgZm9jdXNlZCBub24taWdub3JlZCB0b2tlbi5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSAoMS1pbmRleGVkKSBsaW5lIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgdG9rZW4uXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcmFjdGVyIG9mZnNldCBhdCB3aGljaCB0aGUgY3VycmVudCBsaW5lIGJlZ2lucy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNvdXJjZSkge1xuICAgIGNvbnN0IHN0YXJ0T2ZGaWxlVG9rZW4gPSBuZXcgVG9rZW4oVG9rZW5LaW5kLlNPRiwgMCwgMCwgMCwgMCk7XG4gICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgdGhpcy5sYXN0VG9rZW4gPSBzdGFydE9mRmlsZVRva2VuO1xuICAgIHRoaXMudG9rZW4gPSBzdGFydE9mRmlsZVRva2VuO1xuICAgIHRoaXMubGluZSA9IDE7XG4gICAgdGhpcy5saW5lU3RhcnQgPSAwO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnTGV4ZXInO1xuICB9XG4gIC8qKlxuICAgKiBBZHZhbmNlcyB0aGUgdG9rZW4gc3RyZWFtIHRvIHRoZSBuZXh0IG5vbi1pZ25vcmVkIHRva2VuLlxuICAgKi9cblxuICBhZHZhbmNlKCkge1xuICAgIHRoaXMubGFzdFRva2VuID0gdGhpcy50b2tlbjtcbiAgICBjb25zdCB0b2tlbiA9ICh0aGlzLnRva2VuID0gdGhpcy5sb29rYWhlYWQoKSk7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG4gIC8qKlxuICAgKiBMb29rcyBhaGVhZCBhbmQgcmV0dXJucyB0aGUgbmV4dCBub24taWdub3JlZCB0b2tlbiwgYnV0IGRvZXMgbm90IGNoYW5nZVxuICAgKiB0aGUgc3RhdGUgb2YgTGV4ZXIuXG4gICAqL1xuXG4gIGxvb2thaGVhZCgpIHtcbiAgICBsZXQgdG9rZW4gPSB0aGlzLnRva2VuO1xuXG4gICAgaWYgKHRva2VuLmtpbmQgIT09IFRva2VuS2luZC5FT0YpIHtcbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKHRva2VuLm5leHQpIHtcbiAgICAgICAgICB0b2tlbiA9IHRva2VuLm5leHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVhZCB0aGUgbmV4dCB0b2tlbiBhbmQgZm9ybSBhIGxpbmsgaW4gdGhlIHRva2VuIGxpbmtlZC1saXN0LlxuICAgICAgICAgIGNvbnN0IG5leHRUb2tlbiA9IHJlYWROZXh0VG9rZW4odGhpcywgdG9rZW4uZW5kKTsgLy8gQHRzLWV4cGVjdC1lcnJvciBuZXh0IGlzIG9ubHkgbXV0YWJsZSBkdXJpbmcgcGFyc2luZy5cblxuICAgICAgICAgIHRva2VuLm5leHQgPSBuZXh0VG9rZW47IC8vIEB0cy1leHBlY3QtZXJyb3IgcHJldiBpcyBvbmx5IG11dGFibGUgZHVyaW5nIHBhcnNpbmcuXG5cbiAgICAgICAgICBuZXh0VG9rZW4ucHJldiA9IHRva2VuO1xuICAgICAgICAgIHRva2VuID0gbmV4dFRva2VuO1xuICAgICAgICB9XG4gICAgICB9IHdoaWxlICh0b2tlbi5raW5kID09PSBUb2tlbktpbmQuQ09NTUVOVCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1B1bmN0dWF0b3JUb2tlbktpbmQoa2luZCkge1xuICByZXR1cm4gKFxuICAgIGtpbmQgPT09IFRva2VuS2luZC5CQU5HIHx8XG4gICAga2luZCA9PT0gVG9rZW5LaW5kLkRPTExBUiB8fFxuICAgIGtpbmQgPT09IFRva2VuS2luZC5BTVAgfHxcbiAgICBraW5kID09PSBUb2tlbktpbmQuUEFSRU5fTCB8fFxuICAgIGtpbmQgPT09IFRva2VuS2luZC5QQVJFTl9SIHx8XG4gICAga2luZCA9PT0gVG9rZW5LaW5kLlNQUkVBRCB8fFxuICAgIGtpbmQgPT09IFRva2VuS2luZC5DT0xPTiB8fFxuICAgIGtpbmQgPT09IFRva2VuS2luZC5FUVVBTFMgfHxcbiAgICBraW5kID09PSBUb2tlbktpbmQuQVQgfHxcbiAgICBraW5kID09PSBUb2tlbktpbmQuQlJBQ0tFVF9MIHx8XG4gICAga2luZCA9PT0gVG9rZW5LaW5kLkJSQUNLRVRfUiB8fFxuICAgIGtpbmQgPT09IFRva2VuS2luZC5CUkFDRV9MIHx8XG4gICAga2luZCA9PT0gVG9rZW5LaW5kLlBJUEUgfHxcbiAgICBraW5kID09PSBUb2tlbktpbmQuQlJBQ0VfUlxuICApO1xufVxuLyoqXG4gKiBBIFVuaWNvZGUgc2NhbGFyIHZhbHVlIGlzIGFueSBVbmljb2RlIGNvZGUgcG9pbnQgZXhjZXB0IHN1cnJvZ2F0ZSBjb2RlXG4gKiBwb2ludHMuIEluIG90aGVyIHdvcmRzLCB0aGUgaW5jbHVzaXZlIHJhbmdlcyBvZiB2YWx1ZXMgMHgwMDAwIHRvIDB4RDdGRiBhbmRcbiAqIDB4RTAwMCB0byAweDEwRkZGRi5cbiAqXG4gKiBTb3VyY2VDaGFyYWN0ZXIgOjpcbiAqICAgLSBcIkFueSBVbmljb2RlIHNjYWxhciB2YWx1ZVwiXG4gKi9cblxuZnVuY3Rpb24gaXNVbmljb2RlU2NhbGFyVmFsdWUoY29kZSkge1xuICByZXR1cm4gKFxuICAgIChjb2RlID49IDB4MDAwMCAmJiBjb2RlIDw9IDB4ZDdmZikgfHwgKGNvZGUgPj0gMHhlMDAwICYmIGNvZGUgPD0gMHgxMGZmZmYpXG4gICk7XG59XG4vKipcbiAqIFRoZSBHcmFwaFFMIHNwZWNpZmljYXRpb24gZGVmaW5lcyBzb3VyY2UgdGV4dCBhcyBhIHNlcXVlbmNlIG9mIHVuaWNvZGUgc2NhbGFyXG4gKiB2YWx1ZXMgKHdoaWNoIFVuaWNvZGUgZGVmaW5lcyB0byBleGNsdWRlIHN1cnJvZ2F0ZSBjb2RlIHBvaW50cykuIEhvd2V2ZXJcbiAqIEphdmFTY3JpcHQgZGVmaW5lcyBzdHJpbmdzIGFzIGEgc2VxdWVuY2Ugb2YgVVRGLTE2IGNvZGUgdW5pdHMgd2hpY2ggbWF5XG4gKiBpbmNsdWRlIHN1cnJvZ2F0ZXMuIEEgc3Vycm9nYXRlIHBhaXIgaXMgYSB2YWxpZCBzb3VyY2UgY2hhcmFjdGVyIGFzIGl0XG4gKiBlbmNvZGVzIGEgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50IChhYm92ZSBVK0ZGRkYpLCBidXQgdW5wYWlyZWQgc3Vycm9nYXRlXG4gKiBjb2RlIHBvaW50cyBhcmUgbm90IHZhbGlkIHNvdXJjZSBjaGFyYWN0ZXJzLlxuICovXG5cbmZ1bmN0aW9uIGlzU3VwcGxlbWVudGFyeUNvZGVQb2ludChib2R5LCBsb2NhdGlvbikge1xuICByZXR1cm4gKFxuICAgIGlzTGVhZGluZ1N1cnJvZ2F0ZShib2R5LmNoYXJDb2RlQXQobG9jYXRpb24pKSAmJlxuICAgIGlzVHJhaWxpbmdTdXJyb2dhdGUoYm9keS5jaGFyQ29kZUF0KGxvY2F0aW9uICsgMSkpXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzTGVhZGluZ1N1cnJvZ2F0ZShjb2RlKSB7XG4gIHJldHVybiBjb2RlID49IDB4ZDgwMCAmJiBjb2RlIDw9IDB4ZGJmZjtcbn1cblxuZnVuY3Rpb24gaXNUcmFpbGluZ1N1cnJvZ2F0ZShjb2RlKSB7XG4gIHJldHVybiBjb2RlID49IDB4ZGMwMCAmJiBjb2RlIDw9IDB4ZGZmZjtcbn1cbi8qKlxuICogUHJpbnRzIHRoZSBjb2RlIHBvaW50IChvciBlbmQgb2YgZmlsZSByZWZlcmVuY2UpIGF0IGEgZ2l2ZW4gbG9jYXRpb24gaW4gYVxuICogc291cmNlIGZvciB1c2UgaW4gZXJyb3IgbWVzc2FnZXMuXG4gKlxuICogUHJpbnRhYmxlIEFTQ0lJIGlzIHByaW50ZWQgcXVvdGVkLCB3aGlsZSBvdGhlciBwb2ludHMgYXJlIHByaW50ZWQgaW4gVW5pY29kZVxuICogY29kZSBwb2ludCBmb3JtIChpZS4gVSsxMjM0KS5cbiAqL1xuXG5mdW5jdGlvbiBwcmludENvZGVQb2ludEF0KGxleGVyLCBsb2NhdGlvbikge1xuICBjb25zdCBjb2RlID0gbGV4ZXIuc291cmNlLmJvZHkuY29kZVBvaW50QXQobG9jYXRpb24pO1xuXG4gIGlmIChjb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gVG9rZW5LaW5kLkVPRjtcbiAgfSBlbHNlIGlmIChjb2RlID49IDB4MDAyMCAmJiBjb2RlIDw9IDB4MDA3ZSkge1xuICAgIC8vIFByaW50YWJsZSBBU0NJSVxuICAgIGNvbnN0IGNoYXIgPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjb2RlKTtcbiAgICByZXR1cm4gY2hhciA9PT0gJ1wiJyA/IFwiJ1xcXCInXCIgOiBgXCIke2NoYXJ9XCJgO1xuICB9IC8vIFVuaWNvZGUgY29kZSBwb2ludFxuXG4gIHJldHVybiAnVSsnICsgY29kZS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKS5wYWRTdGFydCg0LCAnMCcpO1xufVxuLyoqXG4gKiBDcmVhdGUgYSB0b2tlbiB3aXRoIGxpbmUgYW5kIGNvbHVtbiBsb2NhdGlvbiBpbmZvcm1hdGlvbi5cbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVUb2tlbihsZXhlciwga2luZCwgc3RhcnQsIGVuZCwgdmFsdWUpIHtcbiAgY29uc3QgbGluZSA9IGxleGVyLmxpbmU7XG4gIGNvbnN0IGNvbCA9IDEgKyBzdGFydCAtIGxleGVyLmxpbmVTdGFydDtcbiAgcmV0dXJuIG5ldyBUb2tlbihraW5kLCBzdGFydCwgZW5kLCBsaW5lLCBjb2wsIHZhbHVlKTtcbn1cbi8qKlxuICogR2V0cyB0aGUgbmV4dCB0b2tlbiBmcm9tIHRoZSBzb3VyY2Ugc3RhcnRpbmcgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLlxuICpcbiAqIFRoaXMgc2tpcHMgb3ZlciB3aGl0ZXNwYWNlIHVudGlsIGl0IGZpbmRzIHRoZSBuZXh0IGxleGFibGUgdG9rZW4sIHRoZW4gbGV4ZXNcbiAqIHB1bmN0dWF0b3JzIGltbWVkaWF0ZWx5IG9yIGNhbGxzIHRoZSBhcHByb3ByaWF0ZSBoZWxwZXIgZnVuY3Rpb24gZm9yIG1vcmVcbiAqIGNvbXBsaWNhdGVkIHRva2Vucy5cbiAqL1xuXG5mdW5jdGlvbiByZWFkTmV4dFRva2VuKGxleGVyLCBzdGFydCkge1xuICBjb25zdCBib2R5ID0gbGV4ZXIuc291cmNlLmJvZHk7XG4gIGNvbnN0IGJvZHlMZW5ndGggPSBib2R5Lmxlbmd0aDtcbiAgbGV0IHBvc2l0aW9uID0gc3RhcnQ7XG5cbiAgd2hpbGUgKHBvc2l0aW9uIDwgYm9keUxlbmd0aCkge1xuICAgIGNvbnN0IGNvZGUgPSBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24pOyAvLyBTb3VyY2VDaGFyYWN0ZXJcblxuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgLy8gSWdub3JlZCA6OlxuICAgICAgLy8gICAtIFVuaWNvZGVCT01cbiAgICAgIC8vICAgLSBXaGl0ZVNwYWNlXG4gICAgICAvLyAgIC0gTGluZVRlcm1pbmF0b3JcbiAgICAgIC8vICAgLSBDb21tZW50XG4gICAgICAvLyAgIC0gQ29tbWFcbiAgICAgIC8vXG4gICAgICAvLyBVbmljb2RlQk9NIDo6IFwiQnl0ZSBPcmRlciBNYXJrIChVK0ZFRkYpXCJcbiAgICAgIC8vXG4gICAgICAvLyBXaGl0ZVNwYWNlIDo6XG4gICAgICAvLyAgIC0gXCJIb3Jpem9udGFsIFRhYiAoVSswMDA5KVwiXG4gICAgICAvLyAgIC0gXCJTcGFjZSAoVSswMDIwKVwiXG4gICAgICAvL1xuICAgICAgLy8gQ29tbWEgOjogLFxuICAgICAgY2FzZSAweGZlZmY6IC8vIDxCT00+XG5cbiAgICAgIGNhc2UgMHgwMDA5OiAvLyBcXHRcblxuICAgICAgY2FzZSAweDAwMjA6IC8vIDxzcGFjZT5cblxuICAgICAgY2FzZSAweDAwMmM6XG4gICAgICAgIC8vICxcbiAgICAgICAgKytwb3NpdGlvbjtcbiAgICAgICAgY29udGludWU7XG4gICAgICAvLyBMaW5lVGVybWluYXRvciA6OlxuICAgICAgLy8gICAtIFwiTmV3IExpbmUgKFUrMDAwQSlcIlxuICAgICAgLy8gICAtIFwiQ2FycmlhZ2UgUmV0dXJuIChVKzAwMEQpXCIgW2xvb2thaGVhZCAhPSBcIk5ldyBMaW5lIChVKzAwMEEpXCJdXG4gICAgICAvLyAgIC0gXCJDYXJyaWFnZSBSZXR1cm4gKFUrMDAwRClcIiBcIk5ldyBMaW5lIChVKzAwMEEpXCJcblxuICAgICAgY2FzZSAweDAwMGE6XG4gICAgICAgIC8vIFxcblxuICAgICAgICArK3Bvc2l0aW9uO1xuICAgICAgICArK2xleGVyLmxpbmU7XG4gICAgICAgIGxleGVyLmxpbmVTdGFydCA9IHBvc2l0aW9uO1xuICAgICAgICBjb250aW51ZTtcblxuICAgICAgY2FzZSAweDAwMGQ6XG4gICAgICAgIC8vIFxcclxuICAgICAgICBpZiAoYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSkgPT09IDB4MDAwYSkge1xuICAgICAgICAgIHBvc2l0aW9uICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgKytwb3NpdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgICsrbGV4ZXIubGluZTtcbiAgICAgICAgbGV4ZXIubGluZVN0YXJ0ID0gcG9zaXRpb247XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgLy8gQ29tbWVudFxuXG4gICAgICBjYXNlIDB4MDAyMzpcbiAgICAgICAgLy8gI1xuICAgICAgICByZXR1cm4gcmVhZENvbW1lbnQobGV4ZXIsIHBvc2l0aW9uKTtcbiAgICAgIC8vIFRva2VuIDo6XG4gICAgICAvLyAgIC0gUHVuY3R1YXRvclxuICAgICAgLy8gICAtIE5hbWVcbiAgICAgIC8vICAgLSBJbnRWYWx1ZVxuICAgICAgLy8gICAtIEZsb2F0VmFsdWVcbiAgICAgIC8vICAgLSBTdHJpbmdWYWx1ZVxuICAgICAgLy9cbiAgICAgIC8vIFB1bmN0dWF0b3IgOjogb25lIG9mICEgJCAmICggKSAuLi4gOiA9IEAgWyBdIHsgfCB9XG5cbiAgICAgIGNhc2UgMHgwMDIxOlxuICAgICAgICAvLyAhXG4gICAgICAgIHJldHVybiBjcmVhdGVUb2tlbihsZXhlciwgVG9rZW5LaW5kLkJBTkcsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDEpO1xuXG4gICAgICBjYXNlIDB4MDAyNDpcbiAgICAgICAgLy8gJFxuICAgICAgICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5ET0xMQVIsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDEpO1xuXG4gICAgICBjYXNlIDB4MDAyNjpcbiAgICAgICAgLy8gJlxuICAgICAgICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5BTVAsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDEpO1xuXG4gICAgICBjYXNlIDB4MDAyODpcbiAgICAgICAgLy8gKFxuICAgICAgICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5QQVJFTl9MLCBwb3NpdGlvbiwgcG9zaXRpb24gKyAxKTtcblxuICAgICAgY2FzZSAweDAwMjk6XG4gICAgICAgIC8vIClcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVRva2VuKGxleGVyLCBUb2tlbktpbmQuUEFSRU5fUiwgcG9zaXRpb24sIHBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGNhc2UgMHgwMDJlOlxuICAgICAgICAvLyAuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAxKSA9PT0gMHgwMDJlICYmXG4gICAgICAgICAgYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMikgPT09IDB4MDAyZVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5TUFJFQUQsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDMpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgMHgwMDNhOlxuICAgICAgICAvLyA6XG4gICAgICAgIHJldHVybiBjcmVhdGVUb2tlbihsZXhlciwgVG9rZW5LaW5kLkNPTE9OLCBwb3NpdGlvbiwgcG9zaXRpb24gKyAxKTtcblxuICAgICAgY2FzZSAweDAwM2Q6XG4gICAgICAgIC8vID1cbiAgICAgICAgcmV0dXJuIGNyZWF0ZVRva2VuKGxleGVyLCBUb2tlbktpbmQuRVFVQUxTLCBwb3NpdGlvbiwgcG9zaXRpb24gKyAxKTtcblxuICAgICAgY2FzZSAweDAwNDA6XG4gICAgICAgIC8vIEBcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVRva2VuKGxleGVyLCBUb2tlbktpbmQuQVQsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDEpO1xuXG4gICAgICBjYXNlIDB4MDA1YjpcbiAgICAgICAgLy8gW1xuICAgICAgICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5CUkFDS0VUX0wsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDEpO1xuXG4gICAgICBjYXNlIDB4MDA1ZDpcbiAgICAgICAgLy8gXVxuICAgICAgICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5CUkFDS0VUX1IsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDEpO1xuXG4gICAgICBjYXNlIDB4MDA3YjpcbiAgICAgICAgLy8ge1xuICAgICAgICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5CUkFDRV9MLCBwb3NpdGlvbiwgcG9zaXRpb24gKyAxKTtcblxuICAgICAgY2FzZSAweDAwN2M6XG4gICAgICAgIC8vIHxcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVRva2VuKGxleGVyLCBUb2tlbktpbmQuUElQRSwgcG9zaXRpb24sIHBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGNhc2UgMHgwMDdkOlxuICAgICAgICAvLyB9XG4gICAgICAgIHJldHVybiBjcmVhdGVUb2tlbihsZXhlciwgVG9rZW5LaW5kLkJSQUNFX1IsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDEpO1xuICAgICAgLy8gU3RyaW5nVmFsdWVcblxuICAgICAgY2FzZSAweDAwMjI6XG4gICAgICAgIC8vIFwiXG4gICAgICAgIGlmIChcbiAgICAgICAgICBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAxKSA9PT0gMHgwMDIyICYmXG4gICAgICAgICAgYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMikgPT09IDB4MDAyMlxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gcmVhZEJsb2NrU3RyaW5nKGxleGVyLCBwb3NpdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVhZFN0cmluZyhsZXhlciwgcG9zaXRpb24pO1xuICAgIH0gLy8gSW50VmFsdWUgfCBGbG9hdFZhbHVlIChEaWdpdCB8IC0pXG5cbiAgICBpZiAoaXNEaWdpdChjb2RlKSB8fCBjb2RlID09PSAweDAwMmQpIHtcbiAgICAgIHJldHVybiByZWFkTnVtYmVyKGxleGVyLCBwb3NpdGlvbiwgY29kZSk7XG4gICAgfSAvLyBOYW1lXG5cbiAgICBpZiAoaXNOYW1lU3RhcnQoY29kZSkpIHtcbiAgICAgIHJldHVybiByZWFkTmFtZShsZXhlciwgcG9zaXRpb24pO1xuICAgIH1cblxuICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgbGV4ZXIuc291cmNlLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBjb2RlID09PSAweDAwMjdcbiAgICAgICAgPyAnVW5leHBlY3RlZCBzaW5nbGUgcXVvdGUgY2hhcmFjdGVyIChcXCcpLCBkaWQgeW91IG1lYW4gdG8gdXNlIGEgZG91YmxlIHF1b3RlIChcIik/J1xuICAgICAgICA6IGlzVW5pY29kZVNjYWxhclZhbHVlKGNvZGUpIHx8IGlzU3VwcGxlbWVudGFyeUNvZGVQb2ludChib2R5LCBwb3NpdGlvbilcbiAgICAgICAgPyBgVW5leHBlY3RlZCBjaGFyYWN0ZXI6ICR7cHJpbnRDb2RlUG9pbnRBdChsZXhlciwgcG9zaXRpb24pfS5gXG4gICAgICAgIDogYEludmFsaWQgY2hhcmFjdGVyOiAke3ByaW50Q29kZVBvaW50QXQobGV4ZXIsIHBvc2l0aW9uKX0uYCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVRva2VuKGxleGVyLCBUb2tlbktpbmQuRU9GLCBib2R5TGVuZ3RoLCBib2R5TGVuZ3RoKTtcbn1cbi8qKlxuICogUmVhZHMgYSBjb21tZW50IHRva2VuIGZyb20gdGhlIHNvdXJjZSBmaWxlLlxuICpcbiAqIGBgYFxuICogQ29tbWVudCA6OiAjIENvbW1lbnRDaGFyKiBbbG9va2FoZWFkICE9IENvbW1lbnRDaGFyXVxuICpcbiAqIENvbW1lbnRDaGFyIDo6IFNvdXJjZUNoYXJhY3RlciBidXQgbm90IExpbmVUZXJtaW5hdG9yXG4gKiBgYGBcbiAqL1xuXG5mdW5jdGlvbiByZWFkQ29tbWVudChsZXhlciwgc3RhcnQpIHtcbiAgY29uc3QgYm9keSA9IGxleGVyLnNvdXJjZS5ib2R5O1xuICBjb25zdCBib2R5TGVuZ3RoID0gYm9keS5sZW5ndGg7XG4gIGxldCBwb3NpdGlvbiA9IHN0YXJ0ICsgMTtcblxuICB3aGlsZSAocG9zaXRpb24gPCBib2R5TGVuZ3RoKSB7XG4gICAgY29uc3QgY29kZSA9IGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbik7IC8vIExpbmVUZXJtaW5hdG9yIChcXG4gfCBcXHIpXG5cbiAgICBpZiAoY29kZSA9PT0gMHgwMDBhIHx8IGNvZGUgPT09IDB4MDAwZCkge1xuICAgICAgYnJlYWs7XG4gICAgfSAvLyBTb3VyY2VDaGFyYWN0ZXJcblxuICAgIGlmIChpc1VuaWNvZGVTY2FsYXJWYWx1ZShjb2RlKSkge1xuICAgICAgKytwb3NpdGlvbjtcbiAgICB9IGVsc2UgaWYgKGlzU3VwcGxlbWVudGFyeUNvZGVQb2ludChib2R5LCBwb3NpdGlvbikpIHtcbiAgICAgIHBvc2l0aW9uICs9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjcmVhdGVUb2tlbihcbiAgICBsZXhlcixcbiAgICBUb2tlbktpbmQuQ09NTUVOVCxcbiAgICBzdGFydCxcbiAgICBwb3NpdGlvbixcbiAgICBib2R5LnNsaWNlKHN0YXJ0ICsgMSwgcG9zaXRpb24pLFxuICApO1xufVxuLyoqXG4gKiBSZWFkcyBhIG51bWJlciB0b2tlbiBmcm9tIHRoZSBzb3VyY2UgZmlsZSwgZWl0aGVyIGEgRmxvYXRWYWx1ZSBvciBhbiBJbnRWYWx1ZVxuICogZGVwZW5kaW5nIG9uIHdoZXRoZXIgYSBGcmFjdGlvbmFsUGFydCBvciBFeHBvbmVudFBhcnQgaXMgZW5jb3VudGVyZWQuXG4gKlxuICogYGBgXG4gKiBJbnRWYWx1ZSA6OiBJbnRlZ2VyUGFydCBbbG9va2FoZWFkICE9IHtEaWdpdCwgYC5gLCBOYW1lU3RhcnR9XVxuICpcbiAqIEludGVnZXJQYXJ0IDo6XG4gKiAgIC0gTmVnYXRpdmVTaWduPyAwXG4gKiAgIC0gTmVnYXRpdmVTaWduPyBOb25aZXJvRGlnaXQgRGlnaXQqXG4gKlxuICogTmVnYXRpdmVTaWduIDo6IC1cbiAqXG4gKiBOb25aZXJvRGlnaXQgOjogRGlnaXQgYnV0IG5vdCBgMGBcbiAqXG4gKiBGbG9hdFZhbHVlIDo6XG4gKiAgIC0gSW50ZWdlclBhcnQgRnJhY3Rpb25hbFBhcnQgRXhwb25lbnRQYXJ0IFtsb29rYWhlYWQgIT0ge0RpZ2l0LCBgLmAsIE5hbWVTdGFydH1dXG4gKiAgIC0gSW50ZWdlclBhcnQgRnJhY3Rpb25hbFBhcnQgW2xvb2thaGVhZCAhPSB7RGlnaXQsIGAuYCwgTmFtZVN0YXJ0fV1cbiAqICAgLSBJbnRlZ2VyUGFydCBFeHBvbmVudFBhcnQgW2xvb2thaGVhZCAhPSB7RGlnaXQsIGAuYCwgTmFtZVN0YXJ0fV1cbiAqXG4gKiBGcmFjdGlvbmFsUGFydCA6OiAuIERpZ2l0K1xuICpcbiAqIEV4cG9uZW50UGFydCA6OiBFeHBvbmVudEluZGljYXRvciBTaWduPyBEaWdpdCtcbiAqXG4gKiBFeHBvbmVudEluZGljYXRvciA6OiBvbmUgb2YgYGVgIGBFYFxuICpcbiAqIFNpZ24gOjogb25lIG9mICsgLVxuICogYGBgXG4gKi9cblxuZnVuY3Rpb24gcmVhZE51bWJlcihsZXhlciwgc3RhcnQsIGZpcnN0Q29kZSkge1xuICBjb25zdCBib2R5ID0gbGV4ZXIuc291cmNlLmJvZHk7XG4gIGxldCBwb3NpdGlvbiA9IHN0YXJ0O1xuICBsZXQgY29kZSA9IGZpcnN0Q29kZTtcbiAgbGV0IGlzRmxvYXQgPSBmYWxzZTsgLy8gTmVnYXRpdmVTaWduICgtKVxuXG4gIGlmIChjb2RlID09PSAweDAwMmQpIHtcbiAgICBjb2RlID0gYm9keS5jaGFyQ29kZUF0KCsrcG9zaXRpb24pO1xuICB9IC8vIFplcm8gKDApXG5cbiAgaWYgKGNvZGUgPT09IDB4MDAzMCkge1xuICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQoKytwb3NpdGlvbik7XG5cbiAgICBpZiAoaXNEaWdpdChjb2RlKSkge1xuICAgICAgdGhyb3cgc3ludGF4RXJyb3IoXG4gICAgICAgIGxleGVyLnNvdXJjZSxcbiAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIGBJbnZhbGlkIG51bWJlciwgdW5leHBlY3RlZCBkaWdpdCBhZnRlciAwOiAke3ByaW50Q29kZVBvaW50QXQoXG4gICAgICAgICAgbGV4ZXIsXG4gICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICl9LmAsXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwb3NpdGlvbiA9IHJlYWREaWdpdHMobGV4ZXIsIHBvc2l0aW9uLCBjb2RlKTtcbiAgICBjb2RlID0gYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uKTtcbiAgfSAvLyBGdWxsIHN0b3AgKC4pXG5cbiAgaWYgKGNvZGUgPT09IDB4MDAyZSkge1xuICAgIGlzRmxvYXQgPSB0cnVlO1xuICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQoKytwb3NpdGlvbik7XG4gICAgcG9zaXRpb24gPSByZWFkRGlnaXRzKGxleGVyLCBwb3NpdGlvbiwgY29kZSk7XG4gICAgY29kZSA9IGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbik7XG4gIH0gLy8gRSBlXG5cbiAgaWYgKGNvZGUgPT09IDB4MDA0NSB8fCBjb2RlID09PSAweDAwNjUpIHtcbiAgICBpc0Zsb2F0ID0gdHJ1ZTtcbiAgICBjb2RlID0gYm9keS5jaGFyQ29kZUF0KCsrcG9zaXRpb24pOyAvLyArIC1cblxuICAgIGlmIChjb2RlID09PSAweDAwMmIgfHwgY29kZSA9PT0gMHgwMDJkKSB7XG4gICAgICBjb2RlID0gYm9keS5jaGFyQ29kZUF0KCsrcG9zaXRpb24pO1xuICAgIH1cblxuICAgIHBvc2l0aW9uID0gcmVhZERpZ2l0cyhsZXhlciwgcG9zaXRpb24sIGNvZGUpO1xuICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24pO1xuICB9IC8vIE51bWJlcnMgY2Fubm90IGJlIGZvbGxvd2VkIGJ5IC4gb3IgTmFtZVN0YXJ0XG5cbiAgaWYgKGNvZGUgPT09IDB4MDAyZSB8fCBpc05hbWVTdGFydChjb2RlKSkge1xuICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgbGV4ZXIuc291cmNlLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBgSW52YWxpZCBudW1iZXIsIGV4cGVjdGVkIGRpZ2l0IGJ1dCBnb3Q6ICR7cHJpbnRDb2RlUG9pbnRBdChcbiAgICAgICAgbGV4ZXIsXG4gICAgICAgIHBvc2l0aW9uLFxuICAgICAgKX0uYCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVRva2VuKFxuICAgIGxleGVyLFxuICAgIGlzRmxvYXQgPyBUb2tlbktpbmQuRkxPQVQgOiBUb2tlbktpbmQuSU5ULFxuICAgIHN0YXJ0LFxuICAgIHBvc2l0aW9uLFxuICAgIGJvZHkuc2xpY2Uoc3RhcnQsIHBvc2l0aW9uKSxcbiAgKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbmV3IHBvc2l0aW9uIGluIHRoZSBzb3VyY2UgYWZ0ZXIgcmVhZGluZyBvbmUgb3IgbW9yZSBkaWdpdHMuXG4gKi9cblxuZnVuY3Rpb24gcmVhZERpZ2l0cyhsZXhlciwgc3RhcnQsIGZpcnN0Q29kZSkge1xuICBpZiAoIWlzRGlnaXQoZmlyc3RDb2RlKSkge1xuICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgbGV4ZXIuc291cmNlLFxuICAgICAgc3RhcnQsXG4gICAgICBgSW52YWxpZCBudW1iZXIsIGV4cGVjdGVkIGRpZ2l0IGJ1dCBnb3Q6ICR7cHJpbnRDb2RlUG9pbnRBdChcbiAgICAgICAgbGV4ZXIsXG4gICAgICAgIHN0YXJ0LFxuICAgICAgKX0uYCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgYm9keSA9IGxleGVyLnNvdXJjZS5ib2R5O1xuICBsZXQgcG9zaXRpb24gPSBzdGFydCArIDE7IC8vICsxIHRvIHNraXAgZmlyc3QgZmlyc3RDb2RlXG5cbiAgd2hpbGUgKGlzRGlnaXQoYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uKSkpIHtcbiAgICArK3Bvc2l0aW9uO1xuICB9XG5cbiAgcmV0dXJuIHBvc2l0aW9uO1xufVxuLyoqXG4gKiBSZWFkcyBhIHNpbmdsZS1xdW90ZSBzdHJpbmcgdG9rZW4gZnJvbSB0aGUgc291cmNlIGZpbGUuXG4gKlxuICogYGBgXG4gKiBTdHJpbmdWYWx1ZSA6OlxuICogICAtIGBcIlwiYCBbbG9va2FoZWFkICE9IGBcImBdXG4gKiAgIC0gYFwiYCBTdHJpbmdDaGFyYWN0ZXIrIGBcImBcbiAqXG4gKiBTdHJpbmdDaGFyYWN0ZXIgOjpcbiAqICAgLSBTb3VyY2VDaGFyYWN0ZXIgYnV0IG5vdCBgXCJgIG9yIGBcXGAgb3IgTGluZVRlcm1pbmF0b3JcbiAqICAgLSBgXFx1YCBFc2NhcGVkVW5pY29kZVxuICogICAtIGBcXGAgRXNjYXBlZENoYXJhY3RlclxuICpcbiAqIEVzY2FwZWRVbmljb2RlIDo6XG4gKiAgIC0gYHtgIEhleERpZ2l0KyBgfWBcbiAqICAgLSBIZXhEaWdpdCBIZXhEaWdpdCBIZXhEaWdpdCBIZXhEaWdpdFxuICpcbiAqIEVzY2FwZWRDaGFyYWN0ZXIgOjogb25lIG9mIGBcImAgYFxcYCBgL2AgYGJgIGBmYCBgbmAgYHJgIGB0YFxuICogYGBgXG4gKi9cblxuZnVuY3Rpb24gcmVhZFN0cmluZyhsZXhlciwgc3RhcnQpIHtcbiAgY29uc3QgYm9keSA9IGxleGVyLnNvdXJjZS5ib2R5O1xuICBjb25zdCBib2R5TGVuZ3RoID0gYm9keS5sZW5ndGg7XG4gIGxldCBwb3NpdGlvbiA9IHN0YXJ0ICsgMTtcbiAgbGV0IGNodW5rU3RhcnQgPSBwb3NpdGlvbjtcbiAgbGV0IHZhbHVlID0gJyc7XG5cbiAgd2hpbGUgKHBvc2l0aW9uIDwgYm9keUxlbmd0aCkge1xuICAgIGNvbnN0IGNvZGUgPSBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24pOyAvLyBDbG9zaW5nIFF1b3RlIChcIilcblxuICAgIGlmIChjb2RlID09PSAweDAwMjIpIHtcbiAgICAgIHZhbHVlICs9IGJvZHkuc2xpY2UoY2h1bmtTdGFydCwgcG9zaXRpb24pO1xuICAgICAgcmV0dXJuIGNyZWF0ZVRva2VuKGxleGVyLCBUb2tlbktpbmQuU1RSSU5HLCBzdGFydCwgcG9zaXRpb24gKyAxLCB2YWx1ZSk7XG4gICAgfSAvLyBFc2NhcGUgU2VxdWVuY2UgKFxcKVxuXG4gICAgaWYgKGNvZGUgPT09IDB4MDA1Yykge1xuICAgICAgdmFsdWUgKz0gYm9keS5zbGljZShjaHVua1N0YXJ0LCBwb3NpdGlvbik7XG4gICAgICBjb25zdCBlc2NhcGUgPVxuICAgICAgICBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAxKSA9PT0gMHgwMDc1IC8vIHVcbiAgICAgICAgICA/IGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDIpID09PSAweDAwN2IgLy8ge1xuICAgICAgICAgICAgPyByZWFkRXNjYXBlZFVuaWNvZGVWYXJpYWJsZVdpZHRoKGxleGVyLCBwb3NpdGlvbilcbiAgICAgICAgICAgIDogcmVhZEVzY2FwZWRVbmljb2RlRml4ZWRXaWR0aChsZXhlciwgcG9zaXRpb24pXG4gICAgICAgICAgOiByZWFkRXNjYXBlZENoYXJhY3RlcihsZXhlciwgcG9zaXRpb24pO1xuICAgICAgdmFsdWUgKz0gZXNjYXBlLnZhbHVlO1xuICAgICAgcG9zaXRpb24gKz0gZXNjYXBlLnNpemU7XG4gICAgICBjaHVua1N0YXJ0ID0gcG9zaXRpb247XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIExpbmVUZXJtaW5hdG9yIChcXG4gfCBcXHIpXG5cbiAgICBpZiAoY29kZSA9PT0gMHgwMDBhIHx8IGNvZGUgPT09IDB4MDAwZCkge1xuICAgICAgYnJlYWs7XG4gICAgfSAvLyBTb3VyY2VDaGFyYWN0ZXJcblxuICAgIGlmIChpc1VuaWNvZGVTY2FsYXJWYWx1ZShjb2RlKSkge1xuICAgICAgKytwb3NpdGlvbjtcbiAgICB9IGVsc2UgaWYgKGlzU3VwcGxlbWVudGFyeUNvZGVQb2ludChib2R5LCBwb3NpdGlvbikpIHtcbiAgICAgIHBvc2l0aW9uICs9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgICBsZXhlci5zb3VyY2UsXG4gICAgICAgIHBvc2l0aW9uLFxuICAgICAgICBgSW52YWxpZCBjaGFyYWN0ZXIgd2l0aGluIFN0cmluZzogJHtwcmludENvZGVQb2ludEF0KFxuICAgICAgICAgIGxleGVyLFxuICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICApfS5gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBzeW50YXhFcnJvcihsZXhlci5zb3VyY2UsIHBvc2l0aW9uLCAnVW50ZXJtaW5hdGVkIHN0cmluZy4nKTtcbn0gLy8gVGhlIHN0cmluZyB2YWx1ZSBhbmQgbGV4ZWQgc2l6ZSBvZiBhbiBlc2NhcGUgc2VxdWVuY2UuXG5cbmZ1bmN0aW9uIHJlYWRFc2NhcGVkVW5pY29kZVZhcmlhYmxlV2lkdGgobGV4ZXIsIHBvc2l0aW9uKSB7XG4gIGNvbnN0IGJvZHkgPSBsZXhlci5zb3VyY2UuYm9keTtcbiAgbGV0IHBvaW50ID0gMDtcbiAgbGV0IHNpemUgPSAzOyAvLyBDYW5ub3QgYmUgbGFyZ2VyIHRoYW4gMTIgY2hhcnMgKFxcdXswMDAwMDAwMH0pLlxuXG4gIHdoaWxlIChzaXplIDwgMTIpIHtcbiAgICBjb25zdCBjb2RlID0gYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgc2l6ZSsrKTsgLy8gQ2xvc2luZyBCcmFjZSAofSlcblxuICAgIGlmIChjb2RlID09PSAweDAwN2QpIHtcbiAgICAgIC8vIE11c3QgYmUgYXQgbGVhc3QgNSBjaGFycyAoXFx1ezB9KSBhbmQgZW5jb2RlIGEgVW5pY29kZSBzY2FsYXIgdmFsdWUuXG4gICAgICBpZiAoc2l6ZSA8IDUgfHwgIWlzVW5pY29kZVNjYWxhclZhbHVlKHBvaW50KSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IFN0cmluZy5mcm9tQ29kZVBvaW50KHBvaW50KSxcbiAgICAgICAgc2l6ZSxcbiAgICAgIH07XG4gICAgfSAvLyBBcHBlbmQgdGhpcyBoZXggZGlnaXQgdG8gdGhlIGNvZGUgcG9pbnQuXG5cbiAgICBwb2ludCA9IChwb2ludCA8PCA0KSB8IHJlYWRIZXhEaWdpdChjb2RlKTtcblxuICAgIGlmIChwb2ludCA8IDApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHRocm93IHN5bnRheEVycm9yKFxuICAgIGxleGVyLnNvdXJjZSxcbiAgICBwb3NpdGlvbixcbiAgICBgSW52YWxpZCBVbmljb2RlIGVzY2FwZSBzZXF1ZW5jZTogXCIke2JvZHkuc2xpY2UoXG4gICAgICBwb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uICsgc2l6ZSxcbiAgICApfVwiLmAsXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlYWRFc2NhcGVkVW5pY29kZUZpeGVkV2lkdGgobGV4ZXIsIHBvc2l0aW9uKSB7XG4gIGNvbnN0IGJvZHkgPSBsZXhlci5zb3VyY2UuYm9keTtcbiAgY29uc3QgY29kZSA9IHJlYWQxNkJpdEhleENvZGUoYm9keSwgcG9zaXRpb24gKyAyKTtcblxuICBpZiAoaXNVbmljb2RlU2NhbGFyVmFsdWUoY29kZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IFN0cmluZy5mcm9tQ29kZVBvaW50KGNvZGUpLFxuICAgICAgc2l6ZTogNixcbiAgICB9O1xuICB9IC8vIEdyYXBoUUwgYWxsb3dzIEpTT04tc3R5bGUgc3Vycm9nYXRlIHBhaXIgZXNjYXBlIHNlcXVlbmNlcywgYnV0IG9ubHkgd2hlblxuICAvLyBhIHZhbGlkIHBhaXIgaXMgZm9ybWVkLlxuXG4gIGlmIChpc0xlYWRpbmdTdXJyb2dhdGUoY29kZSkpIHtcbiAgICAvLyBcXHVcbiAgICBpZiAoXG4gICAgICBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyA2KSA9PT0gMHgwMDVjICYmXG4gICAgICBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyA3KSA9PT0gMHgwMDc1XG4gICAgKSB7XG4gICAgICBjb25zdCB0cmFpbGluZ0NvZGUgPSByZWFkMTZCaXRIZXhDb2RlKGJvZHksIHBvc2l0aW9uICsgOCk7XG5cbiAgICAgIGlmIChpc1RyYWlsaW5nU3Vycm9nYXRlKHRyYWlsaW5nQ29kZSkpIHtcbiAgICAgICAgLy8gSmF2YVNjcmlwdCBkZWZpbmVzIHN0cmluZ3MgYXMgYSBzZXF1ZW5jZSBvZiBVVEYtMTYgY29kZSB1bml0cyBhbmRcbiAgICAgICAgLy8gZW5jb2RlcyBVbmljb2RlIGNvZGUgcG9pbnRzIGFib3ZlIFUrRkZGRiB1c2luZyBhIHN1cnJvZ2F0ZSBwYWlyIG9mXG4gICAgICAgIC8vIGNvZGUgdW5pdHMuIFNpbmNlIHRoaXMgaXMgYSBzdXJyb2dhdGUgcGFpciBlc2NhcGUgc2VxdWVuY2UsIGp1c3RcbiAgICAgICAgLy8gaW5jbHVkZSBib3RoIGNvZGVzIGludG8gdGhlIEphdmFTY3JpcHQgc3RyaW5nIHZhbHVlLiBIYWQgSmF2YVNjcmlwdFxuICAgICAgICAvLyBub3QgYmVlbiBpbnRlcm5hbGx5IGJhc2VkIG9uIFVURi0xNiwgdGhlbiB0aGlzIHN1cnJvZ2F0ZSBwYWlyIHdvdWxkXG4gICAgICAgIC8vIGJlIGRlY29kZWQgdG8gcmV0cmlldmUgdGhlIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludC5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZTogU3RyaW5nLmZyb21Db2RlUG9pbnQoY29kZSwgdHJhaWxpbmdDb2RlKSxcbiAgICAgICAgICBzaXplOiAxMixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aHJvdyBzeW50YXhFcnJvcihcbiAgICBsZXhlci5zb3VyY2UsXG4gICAgcG9zaXRpb24sXG4gICAgYEludmFsaWQgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2U6IFwiJHtib2R5LnNsaWNlKHBvc2l0aW9uLCBwb3NpdGlvbiArIDYpfVwiLmAsXG4gICk7XG59XG4vKipcbiAqIFJlYWRzIGZvdXIgaGV4YWRlY2ltYWwgY2hhcmFjdGVycyBhbmQgcmV0dXJucyB0aGUgcG9zaXRpdmUgaW50ZWdlciB0aGF0IDE2Yml0XG4gKiBoZXhhZGVjaW1hbCBzdHJpbmcgcmVwcmVzZW50cy4gRm9yIGV4YW1wbGUsIFwiMDAwZlwiIHdpbGwgcmV0dXJuIDE1LCBhbmQgXCJkZWFkXCJcbiAqIHdpbGwgcmV0dXJuIDU3MDA1LlxuICpcbiAqIFJldHVybnMgYSBuZWdhdGl2ZSBudW1iZXIgaWYgYW55IGNoYXIgd2FzIG5vdCBhIHZhbGlkIGhleGFkZWNpbWFsIGRpZ2l0LlxuICovXG5cbmZ1bmN0aW9uIHJlYWQxNkJpdEhleENvZGUoYm9keSwgcG9zaXRpb24pIHtcbiAgLy8gcmVhZEhleERpZ2l0KCkgcmV0dXJucyAtMSBvbiBlcnJvci4gT1JpbmcgYSBuZWdhdGl2ZSB2YWx1ZSB3aXRoIGFueSBvdGhlclxuICAvLyB2YWx1ZSBhbHdheXMgcHJvZHVjZXMgYSBuZWdhdGl2ZSB2YWx1ZS5cbiAgcmV0dXJuIChcbiAgICAocmVhZEhleERpZ2l0KGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbikpIDw8IDEyKSB8XG4gICAgKHJlYWRIZXhEaWdpdChib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAxKSkgPDwgOCkgfFxuICAgIChyZWFkSGV4RGlnaXQoYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMikpIDw8IDQpIHxcbiAgICByZWFkSGV4RGlnaXQoYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMykpXG4gICk7XG59XG4vKipcbiAqIFJlYWRzIGEgaGV4YWRlY2ltYWwgY2hhcmFjdGVyIGFuZCByZXR1cm5zIGl0cyBwb3NpdGl2ZSBpbnRlZ2VyIHZhbHVlICgwLTE1KS5cbiAqXG4gKiAnMCcgYmVjb21lcyAwLCAnOScgYmVjb21lcyA5XG4gKiAnQScgYmVjb21lcyAxMCwgJ0YnIGJlY29tZXMgMTVcbiAqICdhJyBiZWNvbWVzIDEwLCAnZicgYmVjb21lcyAxNVxuICpcbiAqIFJldHVybnMgLTEgaWYgdGhlIHByb3ZpZGVkIGNoYXJhY3RlciBjb2RlIHdhcyBub3QgYSB2YWxpZCBoZXhhZGVjaW1hbCBkaWdpdC5cbiAqXG4gKiBIZXhEaWdpdCA6OiBvbmUgb2ZcbiAqICAgLSBgMGAgYDFgIGAyYCBgM2AgYDRgIGA1YCBgNmAgYDdgIGA4YCBgOWBcbiAqICAgLSBgQWAgYEJgIGBDYCBgRGAgYEVgIGBGYFxuICogICAtIGBhYCBgYmAgYGNgIGBkYCBgZWAgYGZgXG4gKi9cblxuZnVuY3Rpb24gcmVhZEhleERpZ2l0KGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUgPj0gMHgwMDMwICYmIGNvZGUgPD0gMHgwMDM5IC8vIDAtOVxuICAgID8gY29kZSAtIDB4MDAzMFxuICAgIDogY29kZSA+PSAweDAwNDEgJiYgY29kZSA8PSAweDAwNDYgLy8gQS1GXG4gICAgPyBjb2RlIC0gMHgwMDM3XG4gICAgOiBjb2RlID49IDB4MDA2MSAmJiBjb2RlIDw9IDB4MDA2NiAvLyBhLWZcbiAgICA/IGNvZGUgLSAweDAwNTdcbiAgICA6IC0xO1xufVxuLyoqXG4gKiB8IEVzY2FwZWQgQ2hhcmFjdGVyIHwgQ29kZSBQb2ludCB8IENoYXJhY3RlciBOYW1lICAgICAgICAgICAgICAgfFxuICogfCAtLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAqIHwgYFwiYCAgICAgICAgICAgICAgIHwgVSswMDIyICAgICB8IGRvdWJsZSBxdW90ZSAgICAgICAgICAgICAgICAgfFxuICogfCBgXFxgICAgICAgICAgICAgICAgfCBVKzAwNUMgICAgIHwgcmV2ZXJzZSBzb2xpZHVzIChiYWNrIHNsYXNoKSB8XG4gKiB8IGAvYCAgICAgICAgICAgICAgIHwgVSswMDJGICAgICB8IHNvbGlkdXMgKGZvcndhcmQgc2xhc2gpICAgICAgfFxuICogfCBgYmAgICAgICAgICAgICAgICB8IFUrMDAwOCAgICAgfCBiYWNrc3BhY2UgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYGZgICAgICAgICAgICAgICAgfCBVKzAwMEMgICAgIHwgZm9ybSBmZWVkICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGBuYCAgICAgICAgICAgICAgIHwgVSswMDBBICAgICB8IGxpbmUgZmVlZCAobmV3IGxpbmUpICAgICAgICAgfFxuICogfCBgcmAgICAgICAgICAgICAgICB8IFUrMDAwRCAgICAgfCBjYXJyaWFnZSByZXR1cm4gICAgICAgICAgICAgIHxcbiAqIHwgYHRgICAgICAgICAgICAgICAgfCBVKzAwMDkgICAgIHwgaG9yaXpvbnRhbCB0YWIgICAgICAgICAgICAgICB8XG4gKi9cblxuZnVuY3Rpb24gcmVhZEVzY2FwZWRDaGFyYWN0ZXIobGV4ZXIsIHBvc2l0aW9uKSB7XG4gIGNvbnN0IGJvZHkgPSBsZXhlci5zb3VyY2UuYm9keTtcbiAgY29uc3QgY29kZSA9IGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpO1xuXG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgMHgwMDIyOlxuICAgICAgLy8gXCJcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiAnXFx1MDAyMicsXG4gICAgICAgIHNpemU6IDIsXG4gICAgICB9O1xuXG4gICAgY2FzZSAweDAwNWM6XG4gICAgICAvLyBcXFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6ICdcXHUwMDVjJyxcbiAgICAgICAgc2l6ZTogMixcbiAgICAgIH07XG5cbiAgICBjYXNlIDB4MDAyZjpcbiAgICAgIC8vIC9cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiAnXFx1MDAyZicsXG4gICAgICAgIHNpemU6IDIsXG4gICAgICB9O1xuXG4gICAgY2FzZSAweDAwNjI6XG4gICAgICAvLyBiXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogJ1xcdTAwMDgnLFxuICAgICAgICBzaXplOiAyLFxuICAgICAgfTtcblxuICAgIGNhc2UgMHgwMDY2OlxuICAgICAgLy8gZlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6ICdcXHUwMDBjJyxcbiAgICAgICAgc2l6ZTogMixcbiAgICAgIH07XG5cbiAgICBjYXNlIDB4MDA2ZTpcbiAgICAgIC8vIG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiAnXFx1MDAwYScsXG4gICAgICAgIHNpemU6IDIsXG4gICAgICB9O1xuXG4gICAgY2FzZSAweDAwNzI6XG4gICAgICAvLyByXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogJ1xcdTAwMGQnLFxuICAgICAgICBzaXplOiAyLFxuICAgICAgfTtcblxuICAgIGNhc2UgMHgwMDc0OlxuICAgICAgLy8gdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6ICdcXHUwMDA5JyxcbiAgICAgICAgc2l6ZTogMixcbiAgICAgIH07XG4gIH1cblxuICB0aHJvdyBzeW50YXhFcnJvcihcbiAgICBsZXhlci5zb3VyY2UsXG4gICAgcG9zaXRpb24sXG4gICAgYEludmFsaWQgY2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZTogXCIke2JvZHkuc2xpY2UoXG4gICAgICBwb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uICsgMixcbiAgICApfVwiLmAsXG4gICk7XG59XG4vKipcbiAqIFJlYWRzIGEgYmxvY2sgc3RyaW5nIHRva2VuIGZyb20gdGhlIHNvdXJjZSBmaWxlLlxuICpcbiAqIGBgYFxuICogU3RyaW5nVmFsdWUgOjpcbiAqICAgLSBgXCJcIlwiYCBCbG9ja1N0cmluZ0NoYXJhY3RlciogYFwiXCJcImBcbiAqXG4gKiBCbG9ja1N0cmluZ0NoYXJhY3RlciA6OlxuICogICAtIFNvdXJjZUNoYXJhY3RlciBidXQgbm90IGBcIlwiXCJgIG9yIGBcXFwiXCJcImBcbiAqICAgLSBgXFxcIlwiXCJgXG4gKiBgYGBcbiAqL1xuXG5mdW5jdGlvbiByZWFkQmxvY2tTdHJpbmcobGV4ZXIsIHN0YXJ0KSB7XG4gIGNvbnN0IGJvZHkgPSBsZXhlci5zb3VyY2UuYm9keTtcbiAgY29uc3QgYm9keUxlbmd0aCA9IGJvZHkubGVuZ3RoO1xuICBsZXQgbGluZVN0YXJ0ID0gbGV4ZXIubGluZVN0YXJ0O1xuICBsZXQgcG9zaXRpb24gPSBzdGFydCArIDM7XG4gIGxldCBjaHVua1N0YXJ0ID0gcG9zaXRpb247XG4gIGxldCBjdXJyZW50TGluZSA9ICcnO1xuICBjb25zdCBibG9ja0xpbmVzID0gW107XG5cbiAgd2hpbGUgKHBvc2l0aW9uIDwgYm9keUxlbmd0aCkge1xuICAgIGNvbnN0IGNvZGUgPSBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24pOyAvLyBDbG9zaW5nIFRyaXBsZS1RdW90ZSAoXCJcIlwiKVxuXG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gMHgwMDIyICYmXG4gICAgICBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAxKSA9PT0gMHgwMDIyICYmXG4gICAgICBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAyKSA9PT0gMHgwMDIyXG4gICAgKSB7XG4gICAgICBjdXJyZW50TGluZSArPSBib2R5LnNsaWNlKGNodW5rU3RhcnQsIHBvc2l0aW9uKTtcbiAgICAgIGJsb2NrTGluZXMucHVzaChjdXJyZW50TGluZSk7XG4gICAgICBjb25zdCB0b2tlbiA9IGNyZWF0ZVRva2VuKFxuICAgICAgICBsZXhlcixcbiAgICAgICAgVG9rZW5LaW5kLkJMT0NLX1NUUklORyxcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIHBvc2l0aW9uICsgMywgLy8gUmV0dXJuIGEgc3RyaW5nIG9mIHRoZSBsaW5lcyBqb2luZWQgd2l0aCBVKzAwMEEuXG4gICAgICAgIGRlZGVudEJsb2NrU3RyaW5nTGluZXMoYmxvY2tMaW5lcykuam9pbignXFxuJyksXG4gICAgICApO1xuICAgICAgbGV4ZXIubGluZSArPSBibG9ja0xpbmVzLmxlbmd0aCAtIDE7XG4gICAgICBsZXhlci5saW5lU3RhcnQgPSBsaW5lU3RhcnQ7XG4gICAgICByZXR1cm4gdG9rZW47XG4gICAgfSAvLyBFc2NhcGVkIFRyaXBsZS1RdW90ZSAoXFxcIlwiXCIpXG5cbiAgICBpZiAoXG4gICAgICBjb2RlID09PSAweDAwNWMgJiZcbiAgICAgIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpID09PSAweDAwMjIgJiZcbiAgICAgIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDIpID09PSAweDAwMjIgJiZcbiAgICAgIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDMpID09PSAweDAwMjJcbiAgICApIHtcbiAgICAgIGN1cnJlbnRMaW5lICs9IGJvZHkuc2xpY2UoY2h1bmtTdGFydCwgcG9zaXRpb24pO1xuICAgICAgY2h1bmtTdGFydCA9IHBvc2l0aW9uICsgMTsgLy8gc2tpcCBvbmx5IHNsYXNoXG5cbiAgICAgIHBvc2l0aW9uICs9IDQ7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIExpbmVUZXJtaW5hdG9yXG5cbiAgICBpZiAoY29kZSA9PT0gMHgwMDBhIHx8IGNvZGUgPT09IDB4MDAwZCkge1xuICAgICAgY3VycmVudExpbmUgKz0gYm9keS5zbGljZShjaHVua1N0YXJ0LCBwb3NpdGlvbik7XG4gICAgICBibG9ja0xpbmVzLnB1c2goY3VycmVudExpbmUpO1xuXG4gICAgICBpZiAoY29kZSA9PT0gMHgwMDBkICYmIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpID09PSAweDAwMGEpIHtcbiAgICAgICAgcG9zaXRpb24gKz0gMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICsrcG9zaXRpb247XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRMaW5lID0gJyc7XG4gICAgICBjaHVua1N0YXJ0ID0gcG9zaXRpb247XG4gICAgICBsaW5lU3RhcnQgPSBwb3NpdGlvbjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gU291cmNlQ2hhcmFjdGVyXG5cbiAgICBpZiAoaXNVbmljb2RlU2NhbGFyVmFsdWUoY29kZSkpIHtcbiAgICAgICsrcG9zaXRpb247XG4gICAgfSBlbHNlIGlmIChpc1N1cHBsZW1lbnRhcnlDb2RlUG9pbnQoYm9keSwgcG9zaXRpb24pKSB7XG4gICAgICBwb3NpdGlvbiArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBzeW50YXhFcnJvcihcbiAgICAgICAgbGV4ZXIuc291cmNlLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgYEludmFsaWQgY2hhcmFjdGVyIHdpdGhpbiBTdHJpbmc6ICR7cHJpbnRDb2RlUG9pbnRBdChcbiAgICAgICAgICBsZXhlcixcbiAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgKX0uYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgc3ludGF4RXJyb3IobGV4ZXIuc291cmNlLCBwb3NpdGlvbiwgJ1VudGVybWluYXRlZCBzdHJpbmcuJyk7XG59XG4vKipcbiAqIFJlYWRzIGFuIGFscGhhbnVtZXJpYyArIHVuZGVyc2NvcmUgbmFtZSBmcm9tIHRoZSBzb3VyY2UuXG4gKlxuICogYGBgXG4gKiBOYW1lIDo6XG4gKiAgIC0gTmFtZVN0YXJ0IE5hbWVDb250aW51ZSogW2xvb2thaGVhZCAhPSBOYW1lQ29udGludWVdXG4gKiBgYGBcbiAqL1xuXG5mdW5jdGlvbiByZWFkTmFtZShsZXhlciwgc3RhcnQpIHtcbiAgY29uc3QgYm9keSA9IGxleGVyLnNvdXJjZS5ib2R5O1xuICBjb25zdCBib2R5TGVuZ3RoID0gYm9keS5sZW5ndGg7XG4gIGxldCBwb3NpdGlvbiA9IHN0YXJ0ICsgMTtcblxuICB3aGlsZSAocG9zaXRpb24gPCBib2R5TGVuZ3RoKSB7XG4gICAgY29uc3QgY29kZSA9IGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbik7XG5cbiAgICBpZiAoaXNOYW1lQ29udGludWUoY29kZSkpIHtcbiAgICAgICsrcG9zaXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjcmVhdGVUb2tlbihcbiAgICBsZXhlcixcbiAgICBUb2tlbktpbmQuTkFNRSxcbiAgICBzdGFydCxcbiAgICBwb3NpdGlvbixcbiAgICBib2R5LnNsaWNlKHN0YXJ0LCBwb3NpdGlvbiksXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/lexer.mjs\n");
|
685 |
|
686 | }),
|
687 |
|
688 | "../../../node_modules/graphql/language/location.mjs":
|
689 |
|
690 |
|
691 |
|
692 |
|
693 | (function(module, __webpack_exports__, __webpack_require__) {
|
694 |
|
695 | "use strict";
|
696 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return getLocation; });\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nfunction getLocation(source, position) {\n let lastLineStart = 0;\n let line = 1;\n\n for (const match of source.body.matchAll(LineRegExp)) {\n typeof match.index === 'number' || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__[\"invariant\"])(false);\n\n if (match.index >= position) {\n break;\n }\n\n lastLineStart = match.index + match[0].length;\n line += 1;\n }\n\n return {\n line,\n column: position + 1 - lastLineStart,\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvbG9jYXRpb24ubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvbG9jYXRpb24ubWpzPzcxMzkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vanN1dGlscy9pbnZhcmlhbnQubWpzJztcbmNvbnN0IExpbmVSZWdFeHAgPSAvXFxyXFxufFtcXG5cXHJdL2c7XG4vKipcbiAqIFJlcHJlc2VudHMgYSBsb2NhdGlvbiBpbiBhIFNvdXJjZS5cbiAqL1xuXG4vKipcbiAqIFRha2VzIGEgU291cmNlIGFuZCBhIFVURi04IGNoYXJhY3RlciBvZmZzZXQsIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nXG4gKiBsaW5lIGFuZCBjb2x1bW4gYXMgYSBTb3VyY2VMb2NhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2F0aW9uKHNvdXJjZSwgcG9zaXRpb24pIHtcbiAgbGV0IGxhc3RMaW5lU3RhcnQgPSAwO1xuICBsZXQgbGluZSA9IDE7XG5cbiAgZm9yIChjb25zdCBtYXRjaCBvZiBzb3VyY2UuYm9keS5tYXRjaEFsbChMaW5lUmVnRXhwKSkge1xuICAgIHR5cGVvZiBtYXRjaC5pbmRleCA9PT0gJ251bWJlcicgfHwgaW52YXJpYW50KGZhbHNlKTtcblxuICAgIGlmIChtYXRjaC5pbmRleCA+PSBwb3NpdGlvbikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgbGFzdExpbmVTdGFydCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICAgIGxpbmUgKz0gMTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbGluZSxcbiAgICBjb2x1bW46IHBvc2l0aW9uICsgMSAtIGxhc3RMaW5lU3RhcnQsXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/location.mjs\n");
|
697 |
|
698 | }),
|
699 |
|
700 | "../../../node_modules/graphql/language/parser.mjs":
|
701 |
|
702 |
|
703 |
|
704 |
|
705 | (function(module, __webpack_exports__, __webpack_require__) {
|
706 |
|
707 | "use strict";
|
708 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseValue\", function() { return parseValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseConstValue\", function() { return parseConstValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseType\", function() { return parseType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Parser\", function() { return Parser; });\n/* harmony import */ var _error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error/syntaxError.mjs */ \"../../../node_modules/graphql/error/syntaxError.mjs\");\n/* harmony import */ var _ast_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./directiveLocation.mjs */ \"../../../node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony import */ var _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _lexer_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lexer.mjs */ \"../../../node_modules/graphql/language/lexer.mjs\");\n/* harmony import */ var _source_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./source.mjs */ \"../../../node_modules/graphql/language/source.mjs\");\n/* harmony import */ var _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tokenKind.mjs */ \"../../../node_modules/graphql/language/tokenKind.mjs\");\n\n\n\n\n\n\n\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nfunction parse(source, options) {\n const parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nfunction parseValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].SOF);\n const value = parser.parseValueLiteral(false);\n parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].EOF);\n return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nfunction parseConstValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].SOF);\n const value = parser.parseConstValueLiteral();\n parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nfunction parseType(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].SOF);\n const type = parser.parseTypeReference();\n parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nclass Parser {\n constructor(source, options) {\n const sourceObj = Object(_source_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isSource\"])(source) ? source : new _source_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Source\"](source);\n this._lexer = new _lexer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Lexer\"](sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n parseName() {\n const token = this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].NAME);\n return this.node(token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].NAME,\n value: token.value,\n });\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n\n parseDocument() {\n return this.node(this._lexer.token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].DOCUMENT,\n definitions: this.many(\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].SOF,\n this.parseDefinition,\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].EOF,\n ),\n });\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n *\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\n parseDefinition() {\n if (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_L)) {\n return this.parseOperationDefinition();\n } // Many definitions begin with a description and require a lookahead.\n\n const hasDescription = this.peekDescription();\n const keywordToken = hasDescription\n ? this._lexer.lookahead()\n : this._lexer.token;\n\n if (keywordToken.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n\n if (hasDescription) {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, descriptions are supported only on type definitions.',\n );\n }\n\n switch (keywordToken.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n parseOperationDefinition() {\n const start = this._lexer.token;\n\n if (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_L)) {\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].OPERATION_DEFINITION,\n operation: _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"OperationTypeNode\"].QUERY,\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n const operation = this.parseOperationType();\n let name;\n\n if (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].NAME)) {\n name = this.parseName();\n }\n\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].OPERATION_DEFINITION,\n operation,\n name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * OperationType : one of query mutation subscription\n */\n\n parseOperationType() {\n const operationToken = this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].NAME);\n\n switch (operationToken.value) {\n case 'query':\n return _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"OperationTypeNode\"].QUERY;\n\n case 'mutation':\n return _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"OperationTypeNode\"].MUTATION;\n\n case 'subscription':\n return _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"OperationTypeNode\"].SUBSCRIPTION;\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n parseVariableDefinitions() {\n return this.optionalMany(\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].PAREN_L,\n this.parseVariableDefinition,\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].PAREN_R,\n );\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n parseVariableDefinition() {\n return this.node(this._lexer.token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].EQUALS)\n ? this.parseConstValueLiteral()\n : undefined,\n directives: this.parseConstDirectives(),\n });\n }\n /**\n * Variable : $ Name\n */\n\n parseVariable() {\n const start = this._lexer.token;\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].DOLLAR);\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].VARIABLE,\n name: this.parseName(),\n });\n }\n /**\n * ```\n * SelectionSet : { Selection+ }\n * ```\n */\n\n parseSelectionSet() {\n return this.node(this._lexer.token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].SELECTION_SET,\n selections: this.many(\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_L,\n this.parseSelection,\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_R,\n ),\n });\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n parseSelection() {\n return this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].SPREAD)\n ? this.parseFragment()\n : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n parseField() {\n const start = this._lexer.token;\n const nameOrAlias = this.parseName();\n let alias;\n let name;\n\n if (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].FIELD,\n alias,\n name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_L)\n ? this.parseSelectionSet()\n : undefined,\n });\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n parseArguments(isConst) {\n const item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].PAREN_L, item, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n\n parseArgument(isConst = false) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].COLON);\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].ARGUMENT,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n parseConstArgument() {\n return this.parseArgument(true);\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n parseFragment() {\n const start = this._lexer.token;\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].SPREAD);\n const hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].NAME)) {\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n });\n }\n\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n parseFragmentDefinition() {\n var _this$_options;\n\n const start = this._lexer.token;\n this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (\n ((_this$_options = this._options) === null || _this$_options === void 0\n ? void 0\n : _this$_options.allowLegacyFragmentVariables) === true\n ) {\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentName : Name but not `on`\n */\n\n parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseValueLiteral(isConst) {\n const token = this._lexer.token;\n\n switch (token.kind) {\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACKET_L:\n return this.parseList(isConst);\n\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_L:\n return this.parseObject(isConst);\n\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].INT:\n this._lexer.advance();\n\n return this.node(token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INT,\n value: token.value,\n });\n\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].FLOAT:\n this._lexer.advance();\n\n return this.node(token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].FLOAT,\n value: token.value,\n });\n\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].STRING:\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BLOCK_STRING:\n return this.parseStringLiteral();\n\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].NAME:\n this._lexer.advance();\n\n switch (token.value) {\n case 'true':\n return this.node(token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].BOOLEAN,\n value: true,\n });\n\n case 'false':\n return this.node(token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].BOOLEAN,\n value: false,\n });\n\n case 'null':\n return this.node(token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].NULL,\n });\n\n default:\n return this.node(token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].ENUM,\n value: token.value,\n });\n }\n\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].DOLLAR:\n if (isConst) {\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].DOLLAR);\n\n if (this._lexer.token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].NAME) {\n const varName = this._lexer.token.value;\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n this._lexer.source,\n token.start,\n `Unexpected variable \"$${varName}\" in constant value.`,\n );\n } else {\n throw this.unexpected(token);\n }\n }\n\n return this.parseVariable();\n\n default:\n throw this.unexpected();\n }\n }\n\n parseConstValueLiteral() {\n return this.parseValueLiteral(true);\n }\n\n parseStringLiteral() {\n const token = this._lexer.token;\n\n this._lexer.advance();\n\n return this.node(token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].STRING,\n value: token.value,\n block: token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BLOCK_STRING,\n });\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n parseList(isConst) {\n const item = () => this.parseValueLiteral(isConst);\n\n return this.node(this._lexer.token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].LIST,\n values: this.any(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACKET_L, item, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACKET_R),\n });\n }\n /**\n * ```\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n * ```\n */\n\n parseObject(isConst) {\n const item = () => this.parseObjectField(isConst);\n\n return this.node(this._lexer.token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].OBJECT,\n fields: this.any(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_L, item, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_R),\n });\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n parseObjectField(isConst) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].COLON);\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].OBJECT_FIELD,\n name,\n value: this.parseValueLiteral(isConst),\n });\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n\n parseDirectives(isConst) {\n const directives = [];\n\n while (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n\n parseConstDirectives() {\n return this.parseDirectives(true);\n }\n /**\n * ```\n * Directive[Const] : @ Name Arguments[?Const]?\n * ```\n */\n\n parseDirective(isConst) {\n const start = this._lexer.token;\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].AT);\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n });\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n parseTypeReference() {\n const start = this._lexer.token;\n let type;\n\n if (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACKET_L)) {\n const innerType = this.parseTypeReference();\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACKET_R);\n type = this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].LIST_TYPE,\n type: innerType,\n });\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BANG)) {\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].NON_NULL_TYPE,\n type,\n });\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n\n parseNamedType() {\n return this.node(this._lexer.token, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].NAMED_TYPE,\n name: this.parseName(),\n });\n } // Implements the parsing rules in the Type Definition section.\n\n peekDescription() {\n return this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].STRING) || this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n\n parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * ```\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n * ```\n */\n\n parseSchemaDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.many(\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_L,\n this.parseOperationTypeDefinition,\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_R,\n );\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].SCHEMA_DEFINITION,\n description,\n directives,\n operationTypes,\n });\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n parseOperationTypeDefinition() {\n const start = this._lexer.token;\n const operation = this.parseOperationType();\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].COLON);\n const type = this.parseNamedType();\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].OPERATION_TYPE_DEFINITION,\n operation,\n type,\n });\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n parseScalarTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].SCALAR_TYPE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n parseObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].OBJECT_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n parseImplementsInterfaces() {\n return this.expectOptionalKeyword('implements')\n ? this.delimitedMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].AMP, this.parseNamedType)\n : [];\n }\n /**\n * ```\n * FieldsDefinition : { FieldDefinition+ }\n * ```\n */\n\n parseFieldsDefinition() {\n return this.optionalMany(\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_L,\n this.parseFieldDefinition,\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_R,\n );\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n parseFieldDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].COLON);\n const type = this.parseTypeReference();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].FIELD_DEFINITION,\n description,\n name,\n arguments: args,\n type,\n directives,\n });\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n parseArgumentDefs() {\n return this.optionalMany(\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].PAREN_L,\n this.parseInputValueDef,\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].PAREN_R,\n );\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n parseInputValueDef() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].COLON);\n const type = this.parseTypeReference();\n let defaultValue;\n\n if (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].EQUALS)) {\n defaultValue = this.parseConstValueLiteral();\n }\n\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INPUT_VALUE_DEFINITION,\n description,\n name,\n type,\n defaultValue,\n directives,\n });\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n parseInterfaceTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INTERFACE_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n parseUnionTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].UNION_TYPE_DEFINITION,\n description,\n name,\n directives,\n types,\n });\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n parseUnionMemberTypes() {\n return this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].EQUALS)\n ? this.delimitedMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].PIPE, this.parseNamedType)\n : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n parseEnumTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].ENUM_TYPE_DEFINITION,\n description,\n name,\n directives,\n values,\n });\n }\n /**\n * ```\n * EnumValuesDefinition : { EnumValueDefinition+ }\n * ```\n */\n\n parseEnumValuesDefinition() {\n return this.optionalMany(\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_L,\n this.parseEnumValueDefinition,\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_R,\n );\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n */\n\n parseEnumValueDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseEnumValueName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].ENUM_VALUE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseEnumValueName() {\n if (\n this._lexer.token.value === 'true' ||\n this._lexer.token.value === 'false' ||\n this._lexer.token.value === 'null'\n ) {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n this._lexer.source,\n this._lexer.token.start,\n `${getTokenDesc(\n this._lexer.token,\n )} is reserved and cannot be used for an enum value.`,\n );\n }\n\n return this.parseName();\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n parseInputObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INPUT_OBJECT_TYPE_DEFINITION,\n description,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * InputFieldsDefinition : { InputValueDefinition+ }\n * ```\n */\n\n parseInputFieldsDefinition() {\n return this.optionalMany(\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_L,\n this.parseInputValueDef,\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_R,\n );\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n parseTypeSystemExtension() {\n const keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * ```\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n * ```\n */\n\n parseSchemaExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.optionalMany(\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_L,\n this.parseOperationTypeDefinition,\n _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].BRACE_R,\n );\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].SCHEMA_EXTENSION,\n directives,\n operationTypes,\n });\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n parseScalarTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].SCALAR_TYPE_EXTENSION,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n parseObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].OBJECT_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n\n parseInterfaceTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INTERFACE_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n parseUnionTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].UNION_TYPE_EXTENSION,\n name,\n directives,\n types,\n });\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n parseEnumTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].ENUM_TYPE_EXTENSION,\n name,\n directives,\n values,\n });\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n parseInputObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INPUT_OBJECT_TYPE_EXTENSION,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n * ```\n */\n\n parseDirectiveDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].AT);\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n const repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n const locations = this.parseDirectiveLocations();\n return this.node(start, {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].DIRECTIVE_DEFINITION,\n description,\n name,\n arguments: args,\n repeatable,\n locations,\n });\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n parseDirectiveLocations() {\n return this.delimitedMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n parseDirectiveLocation() {\n const start = this._lexer.token;\n const name = this.parseName();\n\n if (Object.prototype.hasOwnProperty.call(_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"], name.value)) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a node that, if configured to do so, sets a \"loc\" field as a\n * location object, used to identify the place in the source that created a\n * given parsed object.\n */\n\n node(startToken, node) {\n var _this$_options2;\n\n if (\n ((_this$_options2 = this._options) === null || _this$_options2 === void 0\n ? void 0\n : _this$_options2.noLocation) !== true\n ) {\n node.loc = new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Location\"](\n startToken,\n this._lexer.lastToken,\n this._lexer.source,\n );\n }\n\n return node;\n }\n /**\n * Determines if the next token is of a given kind\n */\n\n peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n this._lexer.source,\n token.start,\n `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n );\n }\n /**\n * If the next token is of the given kind, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n this._lexer.source,\n token.start,\n `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n );\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_6__[\"TokenKind\"].NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n\n unexpected(atToken) {\n const token =\n atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(\n this._lexer.source,\n token.start,\n `Unexpected ${getTokenDesc(token)}.`,\n );\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n\n delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n const value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n return Object(_lexer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isPunctuatorTokenKind\"])(kind) ? `\"${kind}\"` : kind;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvcGFyc2VyLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3BhcnNlci5tanM/OTA1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzeW50YXhFcnJvciB9IGZyb20gJy4uL2Vycm9yL3N5bnRheEVycm9yLm1qcyc7XG5pbXBvcnQgeyBMb2NhdGlvbiwgT3BlcmF0aW9uVHlwZU5vZGUgfSBmcm9tICcuL2FzdC5tanMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlTG9jYXRpb24gfSBmcm9tICcuL2RpcmVjdGl2ZUxvY2F0aW9uLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi9raW5kcy5tanMnO1xuaW1wb3J0IHsgaXNQdW5jdHVhdG9yVG9rZW5LaW5kLCBMZXhlciB9IGZyb20gJy4vbGV4ZXIubWpzJztcbmltcG9ydCB7IGlzU291cmNlLCBTb3VyY2UgfSBmcm9tICcuL3NvdXJjZS5tanMnO1xuaW1wb3J0IHsgVG9rZW5LaW5kIH0gZnJvbSAnLi90b2tlbktpbmQubWpzJztcbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGNvbnRyb2wgcGFyc2VyIGJlaGF2aW9yXG4gKi9cblxuLyoqXG4gKiBHaXZlbiBhIEdyYXBoUUwgc291cmNlLCBwYXJzZXMgaXQgaW50byBhIERvY3VtZW50LlxuICogVGhyb3dzIEdyYXBoUUxFcnJvciBpZiBhIHN5bnRheCBlcnJvciBpcyBlbmNvdW50ZXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHNvdXJjZSwgb3B0aW9ucykge1xuICBjb25zdCBwYXJzZXIgPSBuZXcgUGFyc2VyKHNvdXJjZSwgb3B0aW9ucyk7XG4gIHJldHVybiBwYXJzZXIucGFyc2VEb2N1bWVudCgpO1xufVxuLyoqXG4gKiBHaXZlbiBhIHN0cmluZyBjb250YWluaW5nIGEgR3JhcGhRTCB2YWx1ZSAoZXguIGBbNDJdYCksIHBhcnNlIHRoZSBBU1QgZm9yXG4gKiB0aGF0IHZhbHVlLlxuICogVGhyb3dzIEdyYXBoUUxFcnJvciBpZiBhIHN5bnRheCBlcnJvciBpcyBlbmNvdW50ZXJlZC5cbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCB3aXRoaW4gdG9vbHMgdGhhdCBvcGVyYXRlIHVwb24gR3JhcGhRTCBWYWx1ZXMgZGlyZWN0bHkgYW5kXG4gKiBpbiBpc29sYXRpb24gb2YgY29tcGxldGUgR3JhcGhRTCBkb2N1bWVudHMuXG4gKlxuICogQ29uc2lkZXIgcHJvdmlkaW5nIHRoZSByZXN1bHRzIHRvIHRoZSB1dGlsaXR5IGZ1bmN0aW9uOiB2YWx1ZUZyb21BU1QoKS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWYWx1ZShzb3VyY2UsIG9wdGlvbnMpIHtcbiAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihzb3VyY2UsIG9wdGlvbnMpO1xuICBwYXJzZXIuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLlNPRik7XG4gIGNvbnN0IHZhbHVlID0gcGFyc2VyLnBhcnNlVmFsdWVMaXRlcmFsKGZhbHNlKTtcbiAgcGFyc2VyLmV4cGVjdFRva2VuKFRva2VuS2luZC5FT0YpO1xuICByZXR1cm4gdmFsdWU7XG59XG4vKipcbiAqIFNpbWlsYXIgdG8gcGFyc2VWYWx1ZSgpLCBidXQgcmFpc2VzIGEgcGFyc2UgZXJyb3IgaWYgaXQgZW5jb3VudGVycyBhXG4gKiB2YXJpYWJsZS4gVGhlIHJldHVybiB0eXBlIHdpbGwgYmUgYSBjb25zdGFudCB2YWx1ZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb25zdFZhbHVlKHNvdXJjZSwgb3B0aW9ucykge1xuICBjb25zdCBwYXJzZXIgPSBuZXcgUGFyc2VyKHNvdXJjZSwgb3B0aW9ucyk7XG4gIHBhcnNlci5leHBlY3RUb2tlbihUb2tlbktpbmQuU09GKTtcbiAgY29uc3QgdmFsdWUgPSBwYXJzZXIucGFyc2VDb25zdFZhbHVlTGl0ZXJhbCgpO1xuICBwYXJzZXIuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkVPRik7XG4gIHJldHVybiB2YWx1ZTtcbn1cbi8qKlxuICogR2l2ZW4gYSBzdHJpbmcgY29udGFpbmluZyBhIEdyYXBoUUwgVHlwZSAoZXguIGBbSW50IV1gKSwgcGFyc2UgdGhlIEFTVCBmb3JcbiAqIHRoYXQgdHlwZS5cbiAqIFRocm93cyBHcmFwaFFMRXJyb3IgaWYgYSBzeW50YXggZXJyb3IgaXMgZW5jb3VudGVyZWQuXG4gKlxuICogVGhpcyBpcyB1c2VmdWwgd2l0aGluIHRvb2xzIHRoYXQgb3BlcmF0ZSB1cG9uIEdyYXBoUUwgVHlwZXMgZGlyZWN0bHkgYW5kXG4gKiBpbiBpc29sYXRpb24gb2YgY29tcGxldGUgR3JhcGhRTCBkb2N1bWVudHMuXG4gKlxuICogQ29uc2lkZXIgcHJvdmlkaW5nIHRoZSByZXN1bHRzIHRvIHRoZSB1dGlsaXR5IGZ1bmN0aW9uOiB0eXBlRnJvbUFTVCgpLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVR5cGUoc291cmNlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIoc291cmNlLCBvcHRpb25zKTtcbiAgcGFyc2VyLmV4cGVjdFRva2VuKFRva2VuS2luZC5TT0YpO1xuICBjb25zdCB0eXBlID0gcGFyc2VyLnBhcnNlVHlwZVJlZmVyZW5jZSgpO1xuICBwYXJzZXIuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkVPRik7XG4gIHJldHVybiB0eXBlO1xufVxuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIGV4cG9ydGVkIG9ubHkgdG8gYXNzaXN0IHBlb3BsZSBpbiBpbXBsZW1lbnRpbmcgdGhlaXIgb3duIHBhcnNlcnNcbiAqIHdpdGhvdXQgZHVwbGljYXRpbmcgdG9vIG11Y2ggY29kZSBhbmQgc2hvdWxkIGJlIHVzZWQgb25seSBhcyBsYXN0IHJlc29ydCBmb3IgY2FzZXNcbiAqIHN1Y2ggYXMgZXhwZXJpbWVudGFsIHN5bnRheCBvciBpZiBjZXJ0YWluIGZlYXR1cmVzIGNvdWxkIG5vdCBiZSBjb250cmlidXRlZCB1cHN0cmVhbS5cbiAqXG4gKiBJdCBpcyBzdGlsbCBwYXJ0IG9mIHRoZSBpbnRlcm5hbCBBUEkgYW5kIGlzIHZlcnNpb25lZCwgc28gYW55IGNoYW5nZXMgdG8gaXQgYXJlIG5ldmVyXG4gKiBjb25zaWRlcmVkIGJyZWFraW5nIGNoYW5nZXMuIElmIHlvdSBzdGlsbCBuZWVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlXG4gKiBsaWJyYXJ5LCBwbGVhc2UgdXNlIHRoZSBgdmVyc2lvbkluZm9gIHZhcmlhYmxlIGZvciB2ZXJzaW9uIGRldGVjdGlvbi5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgY2xhc3MgUGFyc2VyIHtcbiAgY29uc3RydWN0b3Ioc291cmNlLCBvcHRpb25zKSB7XG4gICAgY29uc3Qgc291cmNlT2JqID0gaXNTb3VyY2Uoc291cmNlKSA/IHNvdXJjZSA6IG5ldyBTb3VyY2Uoc291cmNlKTtcbiAgICB0aGlzLl9sZXhlciA9IG5ldyBMZXhlcihzb3VyY2VPYmopO1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIG5hbWUgbGV4IHRva2VuIGludG8gYSBuYW1lIHBhcnNlIG5vZGUuXG4gICAqL1xuXG4gIHBhcnNlTmFtZSgpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLk5BTUUpO1xuICAgIHJldHVybiB0aGlzLm5vZGUodG9rZW4sIHtcbiAgICAgIGtpbmQ6IEtpbmQuTkFNRSxcbiAgICAgIHZhbHVlOiB0b2tlbi52YWx1ZSxcbiAgICB9KTtcbiAgfSAvLyBJbXBsZW1lbnRzIHRoZSBwYXJzaW5nIHJ1bGVzIGluIHRoZSBEb2N1bWVudCBzZWN0aW9uLlxuXG4gIC8qKlxuICAgKiBEb2N1bWVudCA6IERlZmluaXRpb24rXG4gICAqL1xuXG4gIHBhcnNlRG9jdW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZSh0aGlzLl9sZXhlci50b2tlbiwge1xuICAgICAga2luZDogS2luZC5ET0NVTUVOVCxcbiAgICAgIGRlZmluaXRpb25zOiB0aGlzLm1hbnkoXG4gICAgICAgIFRva2VuS2luZC5TT0YsXG4gICAgICAgIHRoaXMucGFyc2VEZWZpbml0aW9uLFxuICAgICAgICBUb2tlbktpbmQuRU9GLFxuICAgICAgKSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogRGVmaW5pdGlvbiA6XG4gICAqICAgLSBFeGVjdXRhYmxlRGVmaW5pdGlvblxuICAgKiAgIC0gVHlwZVN5c3RlbURlZmluaXRpb25cbiAgICogICAtIFR5cGVTeXN0ZW1FeHRlbnNpb25cbiAgICpcbiAgICogRXhlY3V0YWJsZURlZmluaXRpb24gOlxuICAgKiAgIC0gT3BlcmF0aW9uRGVmaW5pdGlvblxuICAgKiAgIC0gRnJhZ21lbnREZWZpbml0aW9uXG4gICAqXG4gICAqIFR5cGVTeXN0ZW1EZWZpbml0aW9uIDpcbiAgICogICAtIFNjaGVtYURlZmluaXRpb25cbiAgICogICAtIFR5cGVEZWZpbml0aW9uXG4gICAqICAgLSBEaXJlY3RpdmVEZWZpbml0aW9uXG4gICAqXG4gICAqIFR5cGVEZWZpbml0aW9uIDpcbiAgICogICAtIFNjYWxhclR5cGVEZWZpbml0aW9uXG4gICAqICAgLSBPYmplY3RUeXBlRGVmaW5pdGlvblxuICAgKiAgIC0gSW50ZXJmYWNlVHlwZURlZmluaXRpb25cbiAgICogICAtIFVuaW9uVHlwZURlZmluaXRpb25cbiAgICogICAtIEVudW1UeXBlRGVmaW5pdGlvblxuICAgKiAgIC0gSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvblxuICAgKi9cblxuICBwYXJzZURlZmluaXRpb24oKSB7XG4gICAgaWYgKHRoaXMucGVlayhUb2tlbktpbmQuQlJBQ0VfTCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlT3BlcmF0aW9uRGVmaW5pdGlvbigpO1xuICAgIH0gLy8gTWFueSBkZWZpbml0aW9ucyBiZWdpbiB3aXRoIGEgZGVzY3JpcHRpb24gYW5kIHJlcXVpcmUgYSBsb29rYWhlYWQuXG5cbiAgICBjb25zdCBoYXNEZXNjcmlwdGlvbiA9IHRoaXMucGVla0Rlc2NyaXB0aW9uKCk7XG4gICAgY29uc3Qga2V5d29yZFRva2VuID0gaGFzRGVzY3JpcHRpb25cbiAgICAgID8gdGhpcy5fbGV4ZXIubG9va2FoZWFkKClcbiAgICAgIDogdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICBpZiAoa2V5d29yZFRva2VuLmtpbmQgPT09IFRva2VuS2luZC5OQU1FKSB7XG4gICAgICBzd2l0Y2ggKGtleXdvcmRUb2tlbi52YWx1ZSkge1xuICAgICAgICBjYXNlICdzY2hlbWEnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlU2NoZW1hRGVmaW5pdGlvbigpO1xuXG4gICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VTY2FsYXJUeXBlRGVmaW5pdGlvbigpO1xuXG4gICAgICAgIGNhc2UgJ3R5cGUnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlT2JqZWN0VHlwZURlZmluaXRpb24oKTtcblxuICAgICAgICBjYXNlICdpbnRlcmZhY2UnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlSW50ZXJmYWNlVHlwZURlZmluaXRpb24oKTtcblxuICAgICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VVbmlvblR5cGVEZWZpbml0aW9uKCk7XG5cbiAgICAgICAgY2FzZSAnZW51bSc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFbnVtVHlwZURlZmluaXRpb24oKTtcblxuICAgICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uKCk7XG5cbiAgICAgICAgY2FzZSAnZGlyZWN0aXZlJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZURpcmVjdGl2ZURlZmluaXRpb24oKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc0Rlc2NyaXB0aW9uKSB7XG4gICAgICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgICAgIHRoaXMuX2xleGVyLnNvdXJjZSxcbiAgICAgICAgICB0aGlzLl9sZXhlci50b2tlbi5zdGFydCxcbiAgICAgICAgICAnVW5leHBlY3RlZCBkZXNjcmlwdGlvbiwgZGVzY3JpcHRpb25zIGFyZSBzdXBwb3J0ZWQgb25seSBvbiB0eXBlIGRlZmluaXRpb25zLicsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoa2V5d29yZFRva2VuLnZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3F1ZXJ5JzpcbiAgICAgICAgY2FzZSAnbXV0YXRpb24nOlxuICAgICAgICBjYXNlICdzdWJzY3JpcHRpb24nOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlT3BlcmF0aW9uRGVmaW5pdGlvbigpO1xuXG4gICAgICAgIGNhc2UgJ2ZyYWdtZW50JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUZyYWdtZW50RGVmaW5pdGlvbigpO1xuXG4gICAgICAgIGNhc2UgJ2V4dGVuZCc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUeXBlU3lzdGVtRXh0ZW5zaW9uKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKGtleXdvcmRUb2tlbik7XG4gIH0gLy8gSW1wbGVtZW50cyB0aGUgcGFyc2luZyBydWxlcyBpbiB0aGUgT3BlcmF0aW9ucyBzZWN0aW9uLlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb25EZWZpbml0aW9uIDpcbiAgICogIC0gU2VsZWN0aW9uU2V0XG4gICAqICAtIE9wZXJhdGlvblR5cGUgTmFtZT8gVmFyaWFibGVEZWZpbml0aW9ucz8gRGlyZWN0aXZlcz8gU2VsZWN0aW9uU2V0XG4gICAqL1xuXG4gIHBhcnNlT3BlcmF0aW9uRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuXG4gICAgaWYgKHRoaXMucGVlayhUb2tlbktpbmQuQlJBQ0VfTCkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgICAga2luZDogS2luZC5PUEVSQVRJT05fREVGSU5JVElPTixcbiAgICAgICAgb3BlcmF0aW9uOiBPcGVyYXRpb25UeXBlTm9kZS5RVUVSWSxcbiAgICAgICAgbmFtZTogdW5kZWZpbmVkLFxuICAgICAgICB2YXJpYWJsZURlZmluaXRpb25zOiBbXSxcbiAgICAgICAgZGlyZWN0aXZlczogW10sXG4gICAgICAgIHNlbGVjdGlvblNldDogdGhpcy5wYXJzZVNlbGVjdGlvblNldCgpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5wYXJzZU9wZXJhdGlvblR5cGUoKTtcbiAgICBsZXQgbmFtZTtcblxuICAgIGlmICh0aGlzLnBlZWsoVG9rZW5LaW5kLk5BTUUpKSB7XG4gICAgICBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OLFxuICAgICAgb3BlcmF0aW9uLFxuICAgICAgbmFtZSxcbiAgICAgIHZhcmlhYmxlRGVmaW5pdGlvbnM6IHRoaXMucGFyc2VWYXJpYWJsZURlZmluaXRpb25zKCksXG4gICAgICBkaXJlY3RpdmVzOiB0aGlzLnBhcnNlRGlyZWN0aXZlcyhmYWxzZSksXG4gICAgICBzZWxlY3Rpb25TZXQ6IHRoaXMucGFyc2VTZWxlY3Rpb25TZXQoKSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogT3BlcmF0aW9uVHlwZSA6IG9uZSBvZiBxdWVyeSBtdXRhdGlvbiBzdWJzY3JpcHRpb25cbiAgICovXG5cbiAgcGFyc2VPcGVyYXRpb25UeXBlKCkge1xuICAgIGNvbnN0IG9wZXJhdGlvblRva2VuID0gdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuTkFNRSk7XG5cbiAgICBzd2l0Y2ggKG9wZXJhdGlvblRva2VuLnZhbHVlKSB7XG4gICAgICBjYXNlICdxdWVyeSc6XG4gICAgICAgIHJldHVybiBPcGVyYXRpb25UeXBlTm9kZS5RVUVSWTtcblxuICAgICAgY2FzZSAnbXV0YXRpb24nOlxuICAgICAgICByZXR1cm4gT3BlcmF0aW9uVHlwZU5vZGUuTVVUQVRJT047XG5cbiAgICAgIGNhc2UgJ3N1YnNjcmlwdGlvbic6XG4gICAgICAgIHJldHVybiBPcGVyYXRpb25UeXBlTm9kZS5TVUJTQ1JJUFRJT047XG4gICAgfVxuXG4gICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKG9wZXJhdGlvblRva2VuKTtcbiAgfVxuICAvKipcbiAgICogVmFyaWFibGVEZWZpbml0aW9ucyA6ICggVmFyaWFibGVEZWZpbml0aW9uKyApXG4gICAqL1xuXG4gIHBhcnNlVmFyaWFibGVEZWZpbml0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25hbE1hbnkoXG4gICAgICBUb2tlbktpbmQuUEFSRU5fTCxcbiAgICAgIHRoaXMucGFyc2VWYXJpYWJsZURlZmluaXRpb24sXG4gICAgICBUb2tlbktpbmQuUEFSRU5fUixcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBWYXJpYWJsZURlZmluaXRpb24gOiBWYXJpYWJsZSA6IFR5cGUgRGVmYXVsdFZhbHVlPyBEaXJlY3RpdmVzW0NvbnN0XT9cbiAgICovXG5cbiAgcGFyc2VWYXJpYWJsZURlZmluaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZSh0aGlzLl9sZXhlci50b2tlbiwge1xuICAgICAga2luZDogS2luZC5WQVJJQUJMRV9ERUZJTklUSU9OLFxuICAgICAgdmFyaWFibGU6IHRoaXMucGFyc2VWYXJpYWJsZSgpLFxuICAgICAgdHlwZTogKHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkNPTE9OKSwgdGhpcy5wYXJzZVR5cGVSZWZlcmVuY2UoKSksXG4gICAgICBkZWZhdWx0VmFsdWU6IHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihUb2tlbktpbmQuRVFVQUxTKVxuICAgICAgICA/IHRoaXMucGFyc2VDb25zdFZhbHVlTGl0ZXJhbCgpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGlyZWN0aXZlczogdGhpcy5wYXJzZUNvbnN0RGlyZWN0aXZlcygpLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBWYXJpYWJsZSA6ICQgTmFtZVxuICAgKi9cblxuICBwYXJzZVZhcmlhYmxlKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuRE9MTEFSKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLlZBUklBQkxFLFxuICAgICAgbmFtZTogdGhpcy5wYXJzZU5hbWUoKSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogYGBgXG4gICAqIFNlbGVjdGlvblNldCA6IHsgU2VsZWN0aW9uKyB9XG4gICAqIGBgYFxuICAgKi9cblxuICBwYXJzZVNlbGVjdGlvblNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHRoaXMuX2xleGVyLnRva2VuLCB7XG4gICAgICBraW5kOiBLaW5kLlNFTEVDVElPTl9TRVQsXG4gICAgICBzZWxlY3Rpb25zOiB0aGlzLm1hbnkoXG4gICAgICAgIFRva2VuS2luZC5CUkFDRV9MLFxuICAgICAgICB0aGlzLnBhcnNlU2VsZWN0aW9uLFxuICAgICAgICBUb2tlbktpbmQuQlJBQ0VfUixcbiAgICAgICksXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFNlbGVjdGlvbiA6XG4gICAqICAgLSBGaWVsZFxuICAgKiAgIC0gRnJhZ21lbnRTcHJlYWRcbiAgICogICAtIElubGluZUZyYWdtZW50XG4gICAqL1xuXG4gIHBhcnNlU2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnBlZWsoVG9rZW5LaW5kLlNQUkVBRClcbiAgICAgID8gdGhpcy5wYXJzZUZyYWdtZW50KClcbiAgICAgIDogdGhpcy5wYXJzZUZpZWxkKCk7XG4gIH1cbiAgLyoqXG4gICAqIEZpZWxkIDogQWxpYXM/IE5hbWUgQXJndW1lbnRzPyBEaXJlY3RpdmVzPyBTZWxlY3Rpb25TZXQ/XG4gICAqXG4gICAqIEFsaWFzIDogTmFtZSA6XG4gICAqL1xuXG4gIHBhcnNlRmllbGQoKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICBjb25zdCBuYW1lT3JBbGlhcyA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgbGV0IGFsaWFzO1xuICAgIGxldCBuYW1lO1xuXG4gICAgaWYgKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihUb2tlbktpbmQuQ09MT04pKSB7XG4gICAgICBhbGlhcyA9IG5hbWVPckFsaWFzO1xuICAgICAgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5hbWUgPSBuYW1lT3JBbGlhcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLkZJRUxELFxuICAgICAgYWxpYXMsXG4gICAgICBuYW1lLFxuICAgICAgYXJndW1lbnRzOiB0aGlzLnBhcnNlQXJndW1lbnRzKGZhbHNlKSxcbiAgICAgIGRpcmVjdGl2ZXM6IHRoaXMucGFyc2VEaXJlY3RpdmVzKGZhbHNlKSxcbiAgICAgIHNlbGVjdGlvblNldDogdGhpcy5wZWVrKFRva2VuS2luZC5CUkFDRV9MKVxuICAgICAgICA/IHRoaXMucGFyc2VTZWxlY3Rpb25TZXQoKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQXJndW1lbnRzW0NvbnN0XSA6ICggQXJndW1lbnRbP0NvbnN0XSsgKVxuICAgKi9cblxuICBwYXJzZUFyZ3VtZW50cyhpc0NvbnN0KSB7XG4gICAgY29uc3QgaXRlbSA9IGlzQ29uc3QgPyB0aGlzLnBhcnNlQ29uc3RBcmd1bWVudCA6IHRoaXMucGFyc2VBcmd1bWVudDtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25hbE1hbnkoVG9rZW5LaW5kLlBBUkVOX0wsIGl0ZW0sIFRva2VuS2luZC5QQVJFTl9SKTtcbiAgfVxuICAvKipcbiAgICogQXJndW1lbnRbQ29uc3RdIDogTmFtZSA6IFZhbHVlWz9Db25zdF1cbiAgICovXG5cbiAgcGFyc2VBcmd1bWVudChpc0NvbnN0ID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkNPTE9OKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLkFSR1VNRU5ULFxuICAgICAgbmFtZSxcbiAgICAgIHZhbHVlOiB0aGlzLnBhcnNlVmFsdWVMaXRlcmFsKGlzQ29uc3QpLFxuICAgIH0pO1xuICB9XG5cbiAgcGFyc2VDb25zdEFyZ3VtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlQXJndW1lbnQodHJ1ZSk7XG4gIH0gLy8gSW1wbGVtZW50cyB0aGUgcGFyc2luZyBydWxlcyBpbiB0aGUgRnJhZ21lbnRzIHNlY3Rpb24uXG5cbiAgLyoqXG4gICAqIENvcnJlc3BvbmRzIHRvIGJvdGggRnJhZ21lbnRTcHJlYWQgYW5kIElubGluZUZyYWdtZW50IGluIHRoZSBzcGVjLlxuICAgKlxuICAgKiBGcmFnbWVudFNwcmVhZCA6IC4uLiBGcmFnbWVudE5hbWUgRGlyZWN0aXZlcz9cbiAgICpcbiAgICogSW5saW5lRnJhZ21lbnQgOiAuLi4gVHlwZUNvbmRpdGlvbj8gRGlyZWN0aXZlcz8gU2VsZWN0aW9uU2V0XG4gICAqL1xuXG4gIHBhcnNlRnJhZ21lbnQoKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB0aGlzLmV4cGVjdFRva2VuKFRva2VuS2luZC5TUFJFQUQpO1xuICAgIGNvbnN0IGhhc1R5cGVDb25kaXRpb24gPSB0aGlzLmV4cGVjdE9wdGlvbmFsS2V5d29yZCgnb24nKTtcblxuICAgIGlmICghaGFzVHlwZUNvbmRpdGlvbiAmJiB0aGlzLnBlZWsoVG9rZW5LaW5kLk5BTUUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICAgIGtpbmQ6IEtpbmQuRlJBR01FTlRfU1BSRUFELFxuICAgICAgICBuYW1lOiB0aGlzLnBhcnNlRnJhZ21lbnROYW1lKCksXG4gICAgICAgIGRpcmVjdGl2ZXM6IHRoaXMucGFyc2VEaXJlY3RpdmVzKGZhbHNlKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuSU5MSU5FX0ZSQUdNRU5ULFxuICAgICAgdHlwZUNvbmRpdGlvbjogaGFzVHlwZUNvbmRpdGlvbiA/IHRoaXMucGFyc2VOYW1lZFR5cGUoKSA6IHVuZGVmaW5lZCxcbiAgICAgIGRpcmVjdGl2ZXM6IHRoaXMucGFyc2VEaXJlY3RpdmVzKGZhbHNlKSxcbiAgICAgIHNlbGVjdGlvblNldDogdGhpcy5wYXJzZVNlbGVjdGlvblNldCgpLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBGcmFnbWVudERlZmluaXRpb24gOlxuICAgKiAgIC0gZnJhZ21lbnQgRnJhZ21lbnROYW1lIG9uIFR5cGVDb25kaXRpb24gRGlyZWN0aXZlcz8gU2VsZWN0aW9uU2V0XG4gICAqXG4gICAqIFR5cGVDb25kaXRpb24gOiBOYW1lZFR5cGVcbiAgICovXG5cbiAgcGFyc2VGcmFnbWVudERlZmluaXRpb24oKSB7XG4gICAgdmFyIF90aGlzJF9vcHRpb25zO1xuXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2ZyYWdtZW50Jyk7IC8vIExlZ2FjeSBzdXBwb3J0IGZvciBkZWZpbmluZyB2YXJpYWJsZXMgd2l0aGluIGZyYWdtZW50cyBjaGFuZ2VzXG4gICAgLy8gdGhlIGdyYW1tYXIgb2YgRnJhZ21lbnREZWZpbml0aW9uOlxuICAgIC8vICAgLSBmcmFnbWVudCBGcmFnbWVudE5hbWUgVmFyaWFibGVEZWZpbml0aW9ucz8gb24gVHlwZUNvbmRpdGlvbiBEaXJlY3RpdmVzPyBTZWxlY3Rpb25TZXRcblxuICAgIGlmIChcbiAgICAgICgoX3RoaXMkX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zKSA9PT0gbnVsbCB8fCBfdGhpcyRfb3B0aW9ucyA9PT0gdm9pZCAwXG4gICAgICAgID8gdm9pZCAwXG4gICAgICAgIDogX3RoaXMkX29wdGlvbnMuYWxsb3dMZWdhY3lGcmFnbWVudFZhcmlhYmxlcykgPT09IHRydWVcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgICAga2luZDogS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OLFxuICAgICAgICBuYW1lOiB0aGlzLnBhcnNlRnJhZ21lbnROYW1lKCksXG4gICAgICAgIHZhcmlhYmxlRGVmaW5pdGlvbnM6IHRoaXMucGFyc2VWYXJpYWJsZURlZmluaXRpb25zKCksXG4gICAgICAgIHR5cGVDb25kaXRpb246ICh0aGlzLmV4cGVjdEtleXdvcmQoJ29uJyksIHRoaXMucGFyc2VOYW1lZFR5cGUoKSksXG4gICAgICAgIGRpcmVjdGl2ZXM6IHRoaXMucGFyc2VEaXJlY3RpdmVzKGZhbHNlKSxcbiAgICAgICAgc2VsZWN0aW9uU2V0OiB0aGlzLnBhcnNlU2VsZWN0aW9uU2V0KCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLkZSQUdNRU5UX0RFRklOSVRJT04sXG4gICAgICBuYW1lOiB0aGlzLnBhcnNlRnJhZ21lbnROYW1lKCksXG4gICAgICB0eXBlQ29uZGl0aW9uOiAodGhpcy5leHBlY3RLZXl3b3JkKCdvbicpLCB0aGlzLnBhcnNlTmFtZWRUeXBlKCkpLFxuICAgICAgZGlyZWN0aXZlczogdGhpcy5wYXJzZURpcmVjdGl2ZXMoZmFsc2UpLFxuICAgICAgc2VsZWN0aW9uU2V0OiB0aGlzLnBhcnNlU2VsZWN0aW9uU2V0KCksXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEZyYWdtZW50TmFtZSA6IE5hbWUgYnV0IG5vdCBgb25gXG4gICAqL1xuXG4gIHBhcnNlRnJhZ21lbnROYW1lKCkge1xuICAgIGlmICh0aGlzLl9sZXhlci50b2tlbi52YWx1ZSA9PT0gJ29uJykge1xuICAgICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGFyc2VOYW1lKCk7XG4gIH0gLy8gSW1wbGVtZW50cyB0aGUgcGFyc2luZyBydWxlcyBpbiB0aGUgVmFsdWVzIHNlY3Rpb24uXG5cbiAgLyoqXG4gICAqIFZhbHVlW0NvbnN0XSA6XG4gICAqICAgLSBbfkNvbnN0XSBWYXJpYWJsZVxuICAgKiAgIC0gSW50VmFsdWVcbiAgICogICAtIEZsb2F0VmFsdWVcbiAgICogICAtIFN0cmluZ1ZhbHVlXG4gICAqICAgLSBCb29sZWFuVmFsdWVcbiAgICogICAtIE51bGxWYWx1ZVxuICAgKiAgIC0gRW51bVZhbHVlXG4gICAqICAgLSBMaXN0VmFsdWVbP0NvbnN0XVxuICAgKiAgIC0gT2JqZWN0VmFsdWVbP0NvbnN0XVxuICAgKlxuICAgKiBCb29sZWFuVmFsdWUgOiBvbmUgb2YgYHRydWVgIGBmYWxzZWBcbiAgICpcbiAgICogTnVsbFZhbHVlIDogYG51bGxgXG4gICAqXG4gICAqIEVudW1WYWx1ZSA6IE5hbWUgYnV0IG5vdCBgdHJ1ZWAsIGBmYWxzZWAgb3IgYG51bGxgXG4gICAqL1xuXG4gIHBhcnNlVmFsdWVMaXRlcmFsKGlzQ29uc3QpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuX2xleGVyLnRva2VuO1xuXG4gICAgc3dpdGNoICh0b2tlbi5raW5kKSB7XG4gICAgICBjYXNlIFRva2VuS2luZC5CUkFDS0VUX0w6XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlTGlzdChpc0NvbnN0KTtcblxuICAgICAgY2FzZSBUb2tlbktpbmQuQlJBQ0VfTDpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VPYmplY3QoaXNDb25zdCk7XG5cbiAgICAgIGNhc2UgVG9rZW5LaW5kLklOVDpcbiAgICAgICAgdGhpcy5fbGV4ZXIuYWR2YW5jZSgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm5vZGUodG9rZW4sIHtcbiAgICAgICAgICBraW5kOiBLaW5kLklOVCxcbiAgICAgICAgICB2YWx1ZTogdG9rZW4udmFsdWUsXG4gICAgICAgIH0pO1xuXG4gICAgICBjYXNlIFRva2VuS2luZC5GTE9BVDpcbiAgICAgICAgdGhpcy5fbGV4ZXIuYWR2YW5jZSgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm5vZGUodG9rZW4sIHtcbiAgICAgICAgICBraW5kOiBLaW5kLkZMT0FULFxuICAgICAgICAgIHZhbHVlOiB0b2tlbi52YWx1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgIGNhc2UgVG9rZW5LaW5kLlNUUklORzpcbiAgICAgIGNhc2UgVG9rZW5LaW5kLkJMT0NLX1NUUklORzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VTdHJpbmdMaXRlcmFsKCk7XG5cbiAgICAgIGNhc2UgVG9rZW5LaW5kLk5BTUU6XG4gICAgICAgIHRoaXMuX2xleGVyLmFkdmFuY2UoKTtcblxuICAgICAgICBzd2l0Y2ggKHRva2VuLnZhbHVlKSB7XG4gICAgICAgICAgY2FzZSAndHJ1ZSc6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlKHRva2VuLCB7XG4gICAgICAgICAgICAgIGtpbmQ6IEtpbmQuQk9PTEVBTixcbiAgICAgICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ2ZhbHNlJzpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUodG9rZW4sIHtcbiAgICAgICAgICAgICAga2luZDogS2luZC5CT09MRUFOLFxuICAgICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZSh0b2tlbiwge1xuICAgICAgICAgICAgICBraW5kOiBLaW5kLk5VTEwsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlKHRva2VuLCB7XG4gICAgICAgICAgICAgIGtpbmQ6IEtpbmQuRU5VTSxcbiAgICAgICAgICAgICAgdmFsdWU6IHRva2VuLnZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUb2tlbktpbmQuRE9MTEFSOlxuICAgICAgICBpZiAoaXNDb25zdCkge1xuICAgICAgICAgIHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkRPTExBUik7XG5cbiAgICAgICAgICBpZiAodGhpcy5fbGV4ZXIudG9rZW4ua2luZCA9PT0gVG9rZW5LaW5kLk5BTUUpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhck5hbWUgPSB0aGlzLl9sZXhlci50b2tlbi52YWx1ZTtcbiAgICAgICAgICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgICAgICAgICB0aGlzLl9sZXhlci5zb3VyY2UsXG4gICAgICAgICAgICAgIHRva2VuLnN0YXJ0LFxuICAgICAgICAgICAgICBgVW5leHBlY3RlZCB2YXJpYWJsZSBcIiQke3Zhck5hbWV9XCIgaW4gY29uc3RhbnQgdmFsdWUuYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMudW5leHBlY3RlZCh0b2tlbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VWYXJpYWJsZSgpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZUNvbnN0VmFsdWVMaXRlcmFsKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlVmFsdWVMaXRlcmFsKHRydWUpO1xuICB9XG5cbiAgcGFyc2VTdHJpbmdMaXRlcmFsKCkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICB0aGlzLl9sZXhlci5hZHZhbmNlKCk7XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHRva2VuLCB7XG4gICAgICBraW5kOiBLaW5kLlNUUklORyxcbiAgICAgIHZhbHVlOiB0b2tlbi52YWx1ZSxcbiAgICAgIGJsb2NrOiB0b2tlbi5raW5kID09PSBUb2tlbktpbmQuQkxPQ0tfU1RSSU5HLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBMaXN0VmFsdWVbQ29uc3RdIDpcbiAgICogICAtIFsgXVxuICAgKiAgIC0gWyBWYWx1ZVs/Q29uc3RdKyBdXG4gICAqL1xuXG4gIHBhcnNlTGlzdChpc0NvbnN0KSB7XG4gICAgY29uc3QgaXRlbSA9ICgpID0+IHRoaXMucGFyc2VWYWx1ZUxpdGVyYWwoaXNDb25zdCk7XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHRoaXMuX2xleGVyLnRva2VuLCB7XG4gICAgICBraW5kOiBLaW5kLkxJU1QsXG4gICAgICB2YWx1ZXM6IHRoaXMuYW55KFRva2VuS2luZC5CUkFDS0VUX0wsIGl0ZW0sIFRva2VuS2luZC5CUkFDS0VUX1IpLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBgYGBcbiAgICogT2JqZWN0VmFsdWVbQ29uc3RdIDpcbiAgICogICAtIHsgfVxuICAgKiAgIC0geyBPYmplY3RGaWVsZFs/Q29uc3RdKyB9XG4gICAqIGBgYFxuICAgKi9cblxuICBwYXJzZU9iamVjdChpc0NvbnN0KSB7XG4gICAgY29uc3QgaXRlbSA9ICgpID0+IHRoaXMucGFyc2VPYmplY3RGaWVsZChpc0NvbnN0KTtcblxuICAgIHJldHVybiB0aGlzLm5vZGUodGhpcy5fbGV4ZXIudG9rZW4sIHtcbiAgICAgIGtpbmQ6IEtpbmQuT0JKRUNULFxuICAgICAgZmllbGRzOiB0aGlzLmFueShUb2tlbktpbmQuQlJBQ0VfTCwgaXRlbSwgVG9rZW5LaW5kLkJSQUNFX1IpLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBPYmplY3RGaWVsZFtDb25zdF0gOiBOYW1lIDogVmFsdWVbP0NvbnN0XVxuICAgKi9cblxuICBwYXJzZU9iamVjdEZpZWxkKGlzQ29uc3QpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkNPTE9OKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLk9CSkVDVF9GSUVMRCxcbiAgICAgIG5hbWUsXG4gICAgICB2YWx1ZTogdGhpcy5wYXJzZVZhbHVlTGl0ZXJhbChpc0NvbnN0KSxcbiAgICB9KTtcbiAgfSAvLyBJbXBsZW1lbnRzIHRoZSBwYXJzaW5nIHJ1bGVzIGluIHRoZSBEaXJlY3RpdmVzIHNlY3Rpb24uXG5cbiAgLyoqXG4gICAqIERpcmVjdGl2ZXNbQ29uc3RdIDogRGlyZWN0aXZlWz9Db25zdF0rXG4gICAqL1xuXG4gIHBhcnNlRGlyZWN0aXZlcyhpc0NvbnN0KSB7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IFtdO1xuXG4gICAgd2hpbGUgKHRoaXMucGVlayhUb2tlbktpbmQuQVQpKSB7XG4gICAgICBkaXJlY3RpdmVzLnB1c2godGhpcy5wYXJzZURpcmVjdGl2ZShpc0NvbnN0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpcmVjdGl2ZXM7XG4gIH1cblxuICBwYXJzZUNvbnN0RGlyZWN0aXZlcygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZURpcmVjdGl2ZXModHJ1ZSk7XG4gIH1cbiAgLyoqXG4gICAqIGBgYFxuICAgKiBEaXJlY3RpdmVbQ29uc3RdIDogQCBOYW1lIEFyZ3VtZW50c1s/Q29uc3RdP1xuICAgKiBgYGBcbiAgICovXG5cbiAgcGFyc2VEaXJlY3RpdmUoaXNDb25zdCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuQVQpO1xuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuRElSRUNUSVZFLFxuICAgICAgbmFtZTogdGhpcy5wYXJzZU5hbWUoKSxcbiAgICAgIGFyZ3VtZW50czogdGhpcy5wYXJzZUFyZ3VtZW50cyhpc0NvbnN0KSxcbiAgICB9KTtcbiAgfSAvLyBJbXBsZW1lbnRzIHRoZSBwYXJzaW5nIHJ1bGVzIGluIHRoZSBUeXBlcyBzZWN0aW9uLlxuXG4gIC8qKlxuICAgKiBUeXBlIDpcbiAgICogICAtIE5hbWVkVHlwZVxuICAgKiAgIC0gTGlzdFR5cGVcbiAgICogICAtIE5vbk51bGxUeXBlXG4gICAqL1xuXG4gIHBhcnNlVHlwZVJlZmVyZW5jZSgpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGxldCB0eXBlO1xuXG4gICAgaWYgKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihUb2tlbktpbmQuQlJBQ0tFVF9MKSkge1xuICAgICAgY29uc3QgaW5uZXJUeXBlID0gdGhpcy5wYXJzZVR5cGVSZWZlcmVuY2UoKTtcbiAgICAgIHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkJSQUNLRVRfUik7XG4gICAgICB0eXBlID0gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICAgIGtpbmQ6IEtpbmQuTElTVF9UWVBFLFxuICAgICAgICB0eXBlOiBpbm5lclR5cGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZSA9IHRoaXMucGFyc2VOYW1lZFR5cGUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHBlY3RPcHRpb25hbFRva2VuKFRva2VuS2luZC5CQU5HKSkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAgICBraW5kOiBLaW5kLk5PTl9OVUxMX1RZUEUsXG4gICAgICAgIHR5cGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuICAvKipcbiAgICogTmFtZWRUeXBlIDogTmFtZVxuICAgKi9cblxuICBwYXJzZU5hbWVkVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHRoaXMuX2xleGVyLnRva2VuLCB7XG4gICAgICBraW5kOiBLaW5kLk5BTUVEX1RZUEUsXG4gICAgICBuYW1lOiB0aGlzLnBhcnNlTmFtZSgpLFxuICAgIH0pO1xuICB9IC8vIEltcGxlbWVudHMgdGhlIHBhcnNpbmcgcnVsZXMgaW4gdGhlIFR5cGUgRGVmaW5pdGlvbiBzZWN0aW9uLlxuXG4gIHBlZWtEZXNjcmlwdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wZWVrKFRva2VuS2luZC5TVFJJTkcpIHx8IHRoaXMucGVlayhUb2tlbktpbmQuQkxPQ0tfU1RSSU5HKTtcbiAgfVxuICAvKipcbiAgICogRGVzY3JpcHRpb24gOiBTdHJpbmdWYWx1ZVxuICAgKi9cblxuICBwYXJzZURlc2NyaXB0aW9uKCkge1xuICAgIGlmICh0aGlzLnBlZWtEZXNjcmlwdGlvbigpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZVN0cmluZ0xpdGVyYWwoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIGBgYFxuICAgKiBTY2hlbWFEZWZpbml0aW9uIDogRGVzY3JpcHRpb24/IHNjaGVtYSBEaXJlY3RpdmVzW0NvbnN0XT8geyBPcGVyYXRpb25UeXBlRGVmaW5pdGlvbisgfVxuICAgKiBgYGBcbiAgICovXG5cbiAgcGFyc2VTY2hlbWFEZWZpbml0aW9uKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLnBhcnNlRGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ3NjaGVtYScpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3Qgb3BlcmF0aW9uVHlwZXMgPSB0aGlzLm1hbnkoXG4gICAgICBUb2tlbktpbmQuQlJBQ0VfTCxcbiAgICAgIHRoaXMucGFyc2VPcGVyYXRpb25UeXBlRGVmaW5pdGlvbixcbiAgICAgIFRva2VuS2luZC5CUkFDRV9SLFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5TQ0hFTUFfREVGSU5JVElPTixcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICAgIG9wZXJhdGlvblR5cGVzLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBPcGVyYXRpb25UeXBlRGVmaW5pdGlvbiA6IE9wZXJhdGlvblR5cGUgOiBOYW1lZFR5cGVcbiAgICovXG5cbiAgcGFyc2VPcGVyYXRpb25UeXBlRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMucGFyc2VPcGVyYXRpb25UeXBlKCk7XG4gICAgdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuQ09MT04pO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnBhcnNlTmFtZWRUeXBlKCk7XG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5PUEVSQVRJT05fVFlQRV9ERUZJTklUSU9OLFxuICAgICAgb3BlcmF0aW9uLFxuICAgICAgdHlwZSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogU2NhbGFyVHlwZURlZmluaXRpb24gOiBEZXNjcmlwdGlvbj8gc2NhbGFyIE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/XG4gICAqL1xuXG4gIHBhcnNlU2NhbGFyVHlwZURlZmluaXRpb24oKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMucGFyc2VEZXNjcmlwdGlvbigpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnc2NhbGFyJyk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VDb25zdERpcmVjdGl2ZXMoKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLlNDQUxBUl9UWVBFX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWUsXG4gICAgICBkaXJlY3RpdmVzLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBPYmplY3RUeXBlRGVmaW5pdGlvbiA6XG4gICAqICAgRGVzY3JpcHRpb24/XG4gICAqICAgdHlwZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzPyBEaXJlY3RpdmVzW0NvbnN0XT8gRmllbGRzRGVmaW5pdGlvbj9cbiAgICovXG5cbiAgcGFyc2VPYmplY3RUeXBlRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCd0eXBlJyk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgY29uc3QgaW50ZXJmYWNlcyA9IHRoaXMucGFyc2VJbXBsZW1lbnRzSW50ZXJmYWNlcygpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5wYXJzZUZpZWxkc0RlZmluaXRpb24oKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLk9CSkVDVF9UWVBFX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWUsXG4gICAgICBpbnRlcmZhY2VzLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICAgIGZpZWxkcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogSW1wbGVtZW50c0ludGVyZmFjZXMgOlxuICAgKiAgIC0gaW1wbGVtZW50cyBgJmA/IE5hbWVkVHlwZVxuICAgKiAgIC0gSW1wbGVtZW50c0ludGVyZmFjZXMgJiBOYW1lZFR5cGVcbiAgICovXG5cbiAgcGFyc2VJbXBsZW1lbnRzSW50ZXJmYWNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5leHBlY3RPcHRpb25hbEtleXdvcmQoJ2ltcGxlbWVudHMnKVxuICAgICAgPyB0aGlzLmRlbGltaXRlZE1hbnkoVG9rZW5LaW5kLkFNUCwgdGhpcy5wYXJzZU5hbWVkVHlwZSlcbiAgICAgIDogW107XG4gIH1cbiAgLyoqXG4gICAqIGBgYFxuICAgKiBGaWVsZHNEZWZpbml0aW9uIDogeyBGaWVsZERlZmluaXRpb24rIH1cbiAgICogYGBgXG4gICAqL1xuXG4gIHBhcnNlRmllbGRzRGVmaW5pdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25hbE1hbnkoXG4gICAgICBUb2tlbktpbmQuQlJBQ0VfTCxcbiAgICAgIHRoaXMucGFyc2VGaWVsZERlZmluaXRpb24sXG4gICAgICBUb2tlbktpbmQuQlJBQ0VfUixcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBGaWVsZERlZmluaXRpb24gOlxuICAgKiAgIC0gRGVzY3JpcHRpb24/IE5hbWUgQXJndW1lbnRzRGVmaW5pdGlvbj8gOiBUeXBlIERpcmVjdGl2ZXNbQ29uc3RdP1xuICAgKi9cblxuICBwYXJzZUZpZWxkRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgY29uc3QgYXJncyA9IHRoaXMucGFyc2VBcmd1bWVudERlZnMoKTtcbiAgICB0aGlzLmV4cGVjdFRva2VuKFRva2VuS2luZC5DT0xPTik7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMucGFyc2VUeXBlUmVmZXJlbmNlKCk7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VDb25zdERpcmVjdGl2ZXMoKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLkZJRUxEX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWUsXG4gICAgICBhcmd1bWVudHM6IGFyZ3MsXG4gICAgICB0eXBlLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQXJndW1lbnRzRGVmaW5pdGlvbiA6ICggSW5wdXRWYWx1ZURlZmluaXRpb24rIClcbiAgICovXG5cbiAgcGFyc2VBcmd1bWVudERlZnMoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWxNYW55KFxuICAgICAgVG9rZW5LaW5kLlBBUkVOX0wsXG4gICAgICB0aGlzLnBhcnNlSW5wdXRWYWx1ZURlZixcbiAgICAgIFRva2VuS2luZC5QQVJFTl9SLFxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIElucHV0VmFsdWVEZWZpbml0aW9uIDpcbiAgICogICAtIERlc2NyaXB0aW9uPyBOYW1lIDogVHlwZSBEZWZhdWx0VmFsdWU/IERpcmVjdGl2ZXNbQ29uc3RdP1xuICAgKi9cblxuICBwYXJzZUlucHV0VmFsdWVEZWYoKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMucGFyc2VEZXNjcmlwdGlvbigpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkNPTE9OKTtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5wYXJzZVR5cGVSZWZlcmVuY2UoKTtcbiAgICBsZXQgZGVmYXVsdFZhbHVlO1xuXG4gICAgaWYgKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihUb2tlbktpbmQuRVFVQUxTKSkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5wYXJzZUNvbnN0VmFsdWVMaXRlcmFsKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VDb25zdERpcmVjdGl2ZXMoKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLklOUFVUX1ZBTFVFX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWUsXG4gICAgICB0eXBlLFxuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogSW50ZXJmYWNlVHlwZURlZmluaXRpb24gOlxuICAgKiAgIC0gRGVzY3JpcHRpb24/IGludGVyZmFjZSBOYW1lIERpcmVjdGl2ZXNbQ29uc3RdPyBGaWVsZHNEZWZpbml0aW9uP1xuICAgKi9cblxuICBwYXJzZUludGVyZmFjZVR5cGVEZWZpbml0aW9uKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLnBhcnNlRGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2ludGVyZmFjZScpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGludGVyZmFjZXMgPSB0aGlzLnBhcnNlSW1wbGVtZW50c0ludGVyZmFjZXMoKTtcbiAgICBjb25zdCBkaXJlY3RpdmVzID0gdGhpcy5wYXJzZUNvbnN0RGlyZWN0aXZlcygpO1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMucGFyc2VGaWVsZHNEZWZpbml0aW9uKCk7XG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5JTlRFUkZBQ0VfVFlQRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBuYW1lLFxuICAgICAgaW50ZXJmYWNlcyxcbiAgICAgIGRpcmVjdGl2ZXMsXG4gICAgICBmaWVsZHMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFVuaW9uVHlwZURlZmluaXRpb24gOlxuICAgKiAgIC0gRGVzY3JpcHRpb24/IHVuaW9uIE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/IFVuaW9uTWVtYmVyVHlwZXM/XG4gICAqL1xuXG4gIHBhcnNlVW5pb25UeXBlRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCd1bmlvbicpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLnBhcnNlVW5pb25NZW1iZXJUeXBlcygpO1xuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuVU5JT05fVFlQRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBuYW1lLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICAgIHR5cGVzLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBVbmlvbk1lbWJlclR5cGVzIDpcbiAgICogICAtID0gYHxgPyBOYW1lZFR5cGVcbiAgICogICAtIFVuaW9uTWVtYmVyVHlwZXMgfCBOYW1lZFR5cGVcbiAgICovXG5cbiAgcGFyc2VVbmlvbk1lbWJlclR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oVG9rZW5LaW5kLkVRVUFMUylcbiAgICAgID8gdGhpcy5kZWxpbWl0ZWRNYW55KFRva2VuS2luZC5QSVBFLCB0aGlzLnBhcnNlTmFtZWRUeXBlKVxuICAgICAgOiBbXTtcbiAgfVxuICAvKipcbiAgICogRW51bVR5cGVEZWZpbml0aW9uIDpcbiAgICogICAtIERlc2NyaXB0aW9uPyBlbnVtIE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/IEVudW1WYWx1ZXNEZWZpbml0aW9uP1xuICAgKi9cblxuICBwYXJzZUVudW1UeXBlRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdlbnVtJyk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VDb25zdERpcmVjdGl2ZXMoKTtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnBhcnNlRW51bVZhbHVlc0RlZmluaXRpb24oKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLkVOVU1fVFlQRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBuYW1lLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICAgIHZhbHVlcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogYGBgXG4gICAqIEVudW1WYWx1ZXNEZWZpbml0aW9uIDogeyBFbnVtVmFsdWVEZWZpbml0aW9uKyB9XG4gICAqIGBgYFxuICAgKi9cblxuICBwYXJzZUVudW1WYWx1ZXNEZWZpbml0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbmFsTWFueShcbiAgICAgIFRva2VuS2luZC5CUkFDRV9MLFxuICAgICAgdGhpcy5wYXJzZUVudW1WYWx1ZURlZmluaXRpb24sXG4gICAgICBUb2tlbktpbmQuQlJBQ0VfUixcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBFbnVtVmFsdWVEZWZpbml0aW9uIDogRGVzY3JpcHRpb24/IEVudW1WYWx1ZSBEaXJlY3RpdmVzW0NvbnN0XT9cbiAgICovXG5cbiAgcGFyc2VFbnVtVmFsdWVEZWZpbml0aW9uKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLnBhcnNlRGVzY3JpcHRpb24oKTtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5wYXJzZUVudW1WYWx1ZU5hbWUoKTtcbiAgICBjb25zdCBkaXJlY3RpdmVzID0gdGhpcy5wYXJzZUNvbnN0RGlyZWN0aXZlcygpO1xuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuRU5VTV9WQUxVRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBuYW1lLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogRW51bVZhbHVlIDogTmFtZSBidXQgbm90IGB0cnVlYCwgYGZhbHNlYCBvciBgbnVsbGBcbiAgICovXG5cbiAgcGFyc2VFbnVtVmFsdWVOYW1lKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuX2xleGVyLnRva2VuLnZhbHVlID09PSAndHJ1ZScgfHxcbiAgICAgIHRoaXMuX2xleGVyLnRva2VuLnZhbHVlID09PSAnZmFsc2UnIHx8XG4gICAgICB0aGlzLl9sZXhlci50b2tlbi52YWx1ZSA9PT0gJ251bGwnXG4gICAgKSB7XG4gICAgICB0aHJvdyBzeW50YXhFcnJvcihcbiAgICAgICAgdGhpcy5fbGV4ZXIuc291cmNlLFxuICAgICAgICB0aGlzLl9sZXhlci50b2tlbi5zdGFydCxcbiAgICAgICAgYCR7Z2V0VG9rZW5EZXNjKFxuICAgICAgICAgIHRoaXMuX2xleGVyLnRva2VuLFxuICAgICAgICApfSBpcyByZXNlcnZlZCBhbmQgY2Fubm90IGJlIHVzZWQgZm9yIGFuIGVudW0gdmFsdWUuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGFyc2VOYW1lKCk7XG4gIH1cbiAgLyoqXG4gICAqIElucHV0T2JqZWN0VHlwZURlZmluaXRpb24gOlxuICAgKiAgIC0gRGVzY3JpcHRpb24/IGlucHV0IE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/IElucHV0RmllbGRzRGVmaW5pdGlvbj9cbiAgICovXG5cbiAgcGFyc2VJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLnBhcnNlRGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2lucHV0Jyk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VDb25zdERpcmVjdGl2ZXMoKTtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLnBhcnNlSW5wdXRGaWVsZHNEZWZpbml0aW9uKCk7XG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBuYW1lLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICAgIGZpZWxkcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogYGBgXG4gICAqIElucHV0RmllbGRzRGVmaW5pdGlvbiA6IHsgSW5wdXRWYWx1ZURlZmluaXRpb24rIH1cbiAgICogYGBgXG4gICAqL1xuXG4gIHBhcnNlSW5wdXRGaWVsZHNEZWZpbml0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbmFsTWFueShcbiAgICAgIFRva2VuS2luZC5CUkFDRV9MLFxuICAgICAgdGhpcy5wYXJzZUlucHV0VmFsdWVEZWYsXG4gICAgICBUb2tlbktpbmQuQlJBQ0VfUixcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBUeXBlU3lzdGVtRXh0ZW5zaW9uIDpcbiAgICogICAtIFNjaGVtYUV4dGVuc2lvblxuICAgKiAgIC0gVHlwZUV4dGVuc2lvblxuICAgKlxuICAgKiBUeXBlRXh0ZW5zaW9uIDpcbiAgICogICAtIFNjYWxhclR5cGVFeHRlbnNpb25cbiAgICogICAtIE9iamVjdFR5cGVFeHRlbnNpb25cbiAgICogICAtIEludGVyZmFjZVR5cGVFeHRlbnNpb25cbiAgICogICAtIFVuaW9uVHlwZUV4dGVuc2lvblxuICAgKiAgIC0gRW51bVR5cGVFeHRlbnNpb25cbiAgICogICAtIElucHV0T2JqZWN0VHlwZURlZmluaXRpb25cbiAgICovXG5cbiAgcGFyc2VUeXBlU3lzdGVtRXh0ZW5zaW9uKCkge1xuICAgIGNvbnN0IGtleXdvcmRUb2tlbiA9IHRoaXMuX2xleGVyLmxvb2thaGVhZCgpO1xuXG4gICAgaWYgKGtleXdvcmRUb2tlbi5raW5kID09PSBUb2tlbktpbmQuTkFNRSkge1xuICAgICAgc3dpdGNoIChrZXl3b3JkVG9rZW4udmFsdWUpIHtcbiAgICAgICAgY2FzZSAnc2NoZW1hJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVNjaGVtYUV4dGVuc2lvbigpO1xuXG4gICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VTY2FsYXJUeXBlRXh0ZW5zaW9uKCk7XG5cbiAgICAgICAgY2FzZSAndHlwZSc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VPYmplY3RUeXBlRXh0ZW5zaW9uKCk7XG5cbiAgICAgICAgY2FzZSAnaW50ZXJmYWNlJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUludGVyZmFjZVR5cGVFeHRlbnNpb24oKTtcblxuICAgICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VVbmlvblR5cGVFeHRlbnNpb24oKTtcblxuICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVudW1UeXBlRXh0ZW5zaW9uKCk7XG5cbiAgICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKGtleXdvcmRUb2tlbik7XG4gIH1cbiAgLyoqXG4gICAqIGBgYFxuICAgKiBTY2hlbWFFeHRlbnNpb24gOlxuICAgKiAgLSBleHRlbmQgc2NoZW1hIERpcmVjdGl2ZXNbQ29uc3RdPyB7IE9wZXJhdGlvblR5cGVEZWZpbml0aW9uKyB9XG4gICAqICAtIGV4dGVuZCBzY2hlbWEgRGlyZWN0aXZlc1tDb25zdF1cbiAgICogYGBgXG4gICAqL1xuXG4gIHBhcnNlU2NoZW1hRXh0ZW5zaW9uKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdleHRlbmQnKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ3NjaGVtYScpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3Qgb3BlcmF0aW9uVHlwZXMgPSB0aGlzLm9wdGlvbmFsTWFueShcbiAgICAgIFRva2VuS2luZC5CUkFDRV9MLFxuICAgICAgdGhpcy5wYXJzZU9wZXJhdGlvblR5cGVEZWZpbml0aW9uLFxuICAgICAgVG9rZW5LaW5kLkJSQUNFX1IsXG4gICAgKTtcblxuICAgIGlmIChkaXJlY3RpdmVzLmxlbmd0aCA9PT0gMCAmJiBvcGVyYXRpb25UeXBlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IHRoaXMudW5leHBlY3RlZCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuU0NIRU1BX0VYVEVOU0lPTixcbiAgICAgIGRpcmVjdGl2ZXMsXG4gICAgICBvcGVyYXRpb25UeXBlcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogU2NhbGFyVHlwZUV4dGVuc2lvbiA6XG4gICAqICAgLSBleHRlbmQgc2NhbGFyIE5hbWUgRGlyZWN0aXZlc1tDb25zdF1cbiAgICovXG5cbiAgcGFyc2VTY2FsYXJUeXBlRXh0ZW5zaW9uKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdleHRlbmQnKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ3NjYWxhcicpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG5cbiAgICBpZiAoZGlyZWN0aXZlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IHRoaXMudW5leHBlY3RlZCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuU0NBTEFSX1RZUEVfRVhURU5TSU9OLFxuICAgICAgbmFtZSxcbiAgICAgIGRpcmVjdGl2ZXMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIE9iamVjdFR5cGVFeHRlbnNpb24gOlxuICAgKiAgLSBleHRlbmQgdHlwZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzPyBEaXJlY3RpdmVzW0NvbnN0XT8gRmllbGRzRGVmaW5pdGlvblxuICAgKiAgLSBleHRlbmQgdHlwZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzPyBEaXJlY3RpdmVzW0NvbnN0XVxuICAgKiAgLSBleHRlbmQgdHlwZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzXG4gICAqL1xuXG4gIHBhcnNlT2JqZWN0VHlwZUV4dGVuc2lvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZXh0ZW5kJyk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCd0eXBlJyk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgY29uc3QgaW50ZXJmYWNlcyA9IHRoaXMucGFyc2VJbXBsZW1lbnRzSW50ZXJmYWNlcygpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5wYXJzZUZpZWxkc0RlZmluaXRpb24oKTtcblxuICAgIGlmIChcbiAgICAgIGludGVyZmFjZXMubGVuZ3RoID09PSAwICYmXG4gICAgICBkaXJlY3RpdmVzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgZmllbGRzLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5PQkpFQ1RfVFlQRV9FWFRFTlNJT04sXG4gICAgICBuYW1lLFxuICAgICAgaW50ZXJmYWNlcyxcbiAgICAgIGRpcmVjdGl2ZXMsXG4gICAgICBmaWVsZHMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEludGVyZmFjZVR5cGVFeHRlbnNpb24gOlxuICAgKiAgLSBleHRlbmQgaW50ZXJmYWNlIE5hbWUgSW1wbGVtZW50c0ludGVyZmFjZXM/IERpcmVjdGl2ZXNbQ29uc3RdPyBGaWVsZHNEZWZpbml0aW9uXG4gICAqICAtIGV4dGVuZCBpbnRlcmZhY2UgTmFtZSBJbXBsZW1lbnRzSW50ZXJmYWNlcz8gRGlyZWN0aXZlc1tDb25zdF1cbiAgICogIC0gZXh0ZW5kIGludGVyZmFjZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzXG4gICAqL1xuXG4gIHBhcnNlSW50ZXJmYWNlVHlwZUV4dGVuc2lvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZXh0ZW5kJyk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdpbnRlcmZhY2UnKTtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICBjb25zdCBpbnRlcmZhY2VzID0gdGhpcy5wYXJzZUltcGxlbWVudHNJbnRlcmZhY2VzKCk7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VDb25zdERpcmVjdGl2ZXMoKTtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLnBhcnNlRmllbGRzRGVmaW5pdGlvbigpO1xuXG4gICAgaWYgKFxuICAgICAgaW50ZXJmYWNlcy5sZW5ndGggPT09IDAgJiZcbiAgICAgIGRpcmVjdGl2ZXMubGVuZ3RoID09PSAwICYmXG4gICAgICBmaWVsZHMubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLklOVEVSRkFDRV9UWVBFX0VYVEVOU0lPTixcbiAgICAgIG5hbWUsXG4gICAgICBpbnRlcmZhY2VzLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICAgIGZpZWxkcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogVW5pb25UeXBlRXh0ZW5zaW9uIDpcbiAgICogICAtIGV4dGVuZCB1bmlvbiBOYW1lIERpcmVjdGl2ZXNbQ29uc3RdPyBVbmlvbk1lbWJlclR5cGVzXG4gICAqICAgLSBleHRlbmQgdW5pb24gTmFtZSBEaXJlY3RpdmVzW0NvbnN0XVxuICAgKi9cblxuICBwYXJzZVVuaW9uVHlwZUV4dGVuc2lvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZXh0ZW5kJyk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCd1bmlvbicpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLnBhcnNlVW5pb25NZW1iZXJUeXBlcygpO1xuXG4gICAgaWYgKGRpcmVjdGl2ZXMubGVuZ3RoID09PSAwICYmIHR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5VTklPTl9UWVBFX0VYVEVOU0lPTixcbiAgICAgIG5hbWUsXG4gICAgICBkaXJlY3RpdmVzLFxuICAgICAgdHlwZXMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEVudW1UeXBlRXh0ZW5zaW9uIDpcbiAgICogICAtIGV4dGVuZCBlbnVtIE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/IEVudW1WYWx1ZXNEZWZpbml0aW9uXG4gICAqICAgLSBleHRlbmQgZW51bSBOYW1lIERpcmVjdGl2ZXNbQ29uc3RdXG4gICAqL1xuXG4gIHBhcnNlRW51bVR5cGVFeHRlbnNpb24oKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2V4dGVuZCcpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZW51bScpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5wYXJzZUVudW1WYWx1ZXNEZWZpbml0aW9uKCk7XG5cbiAgICBpZiAoZGlyZWN0aXZlcy5sZW5ndGggPT09IDAgJiYgdmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5FTlVNX1RZUEVfRVhURU5TSU9OLFxuICAgICAgbmFtZSxcbiAgICAgIGRpcmVjdGl2ZXMsXG4gICAgICB2YWx1ZXMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIElucHV0T2JqZWN0VHlwZUV4dGVuc2lvbiA6XG4gICAqICAgLSBleHRlbmQgaW5wdXQgTmFtZSBEaXJlY3RpdmVzW0NvbnN0XT8gSW5wdXRGaWVsZHNEZWZpbml0aW9uXG4gICAqICAgLSBleHRlbmQgaW5wdXQgTmFtZSBEaXJlY3RpdmVzW0NvbnN0XVxuICAgKi9cblxuICBwYXJzZUlucHV0T2JqZWN0VHlwZUV4dGVuc2lvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZXh0ZW5kJyk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdpbnB1dCcpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5wYXJzZUlucHV0RmllbGRzRGVmaW5pdGlvbigpO1xuXG4gICAgaWYgKGRpcmVjdGl2ZXMubGVuZ3RoID09PSAwICYmIGZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IHRoaXMudW5leHBlY3RlZCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OLFxuICAgICAgbmFtZSxcbiAgICAgIGRpcmVjdGl2ZXMsXG4gICAgICBmaWVsZHMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIGBgYFxuICAgKiBEaXJlY3RpdmVEZWZpbml0aW9uIDpcbiAgICogICAtIERlc2NyaXB0aW9uPyBkaXJlY3RpdmUgQCBOYW1lIEFyZ3VtZW50c0RlZmluaXRpb24/IGByZXBlYXRhYmxlYD8gb24gRGlyZWN0aXZlTG9jYXRpb25zXG4gICAqIGBgYFxuICAgKi9cblxuICBwYXJzZURpcmVjdGl2ZURlZmluaXRpb24oKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMucGFyc2VEZXNjcmlwdGlvbigpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZGlyZWN0aXZlJyk7XG4gICAgdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuQVQpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLnBhcnNlQXJndW1lbnREZWZzKCk7XG4gICAgY29uc3QgcmVwZWF0YWJsZSA9IHRoaXMuZXhwZWN0T3B0aW9uYWxLZXl3b3JkKCdyZXBlYXRhYmxlJyk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdvbicpO1xuICAgIGNvbnN0IGxvY2F0aW9ucyA9IHRoaXMucGFyc2VEaXJlY3RpdmVMb2NhdGlvbnMoKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLkRJUkVDVElWRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBuYW1lLFxuICAgICAgYXJndW1lbnRzOiBhcmdzLFxuICAgICAgcmVwZWF0YWJsZSxcbiAgICAgIGxvY2F0aW9ucyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogRGlyZWN0aXZlTG9jYXRpb25zIDpcbiAgICogICAtIGB8YD8gRGlyZWN0aXZlTG9jYXRpb25cbiAgICogICAtIERpcmVjdGl2ZUxvY2F0aW9ucyB8IERpcmVjdGl2ZUxvY2F0aW9uXG4gICAqL1xuXG4gIHBhcnNlRGlyZWN0aXZlTG9jYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmRlbGltaXRlZE1hbnkoVG9rZW5LaW5kLlBJUEUsIHRoaXMucGFyc2VEaXJlY3RpdmVMb2NhdGlvbik7XG4gIH1cbiAgLypcbiAgICogRGlyZWN0aXZlTG9jYXRpb24gOlxuICAgKiAgIC0gRXhlY3V0YWJsZURpcmVjdGl2ZUxvY2F0aW9uXG4gICAqICAgLSBUeXBlU3lzdGVtRGlyZWN0aXZlTG9jYXRpb25cbiAgICpcbiAgICogRXhlY3V0YWJsZURpcmVjdGl2ZUxvY2F0aW9uIDogb25lIG9mXG4gICAqICAgYFFVRVJZYFxuICAgKiAgIGBNVVRBVElPTmBcbiAgICogICBgU1VCU0NSSVBUSU9OYFxuICAgKiAgIGBGSUVMRGBcbiAgICogICBgRlJBR01FTlRfREVGSU5JVElPTmBcbiAgICogICBgRlJBR01FTlRfU1BSRUFEYFxuICAgKiAgIGBJTkxJTkVfRlJBR01FTlRgXG4gICAqXG4gICAqIFR5cGVTeXN0ZW1EaXJlY3RpdmVMb2NhdGlvbiA6IG9uZSBvZlxuICAgKiAgIGBTQ0hFTUFgXG4gICAqICAgYFNDQUxBUmBcbiAgICogICBgT0JKRUNUYFxuICAgKiAgIGBGSUVMRF9ERUZJTklUSU9OYFxuICAgKiAgIGBBUkdVTUVOVF9ERUZJTklUSU9OYFxuICAgKiAgIGBJTlRFUkZBQ0VgXG4gICAqICAgYFVOSU9OYFxuICAgKiAgIGBFTlVNYFxuICAgKiAgIGBFTlVNX1ZBTFVFYFxuICAgKiAgIGBJTlBVVF9PQkpFQ1RgXG4gICAqICAgYElOUFVUX0ZJRUxEX0RFRklOSVRJT05gXG4gICAqL1xuXG4gIHBhcnNlRGlyZWN0aXZlTG9jYXRpb24oKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRGlyZWN0aXZlTG9jYXRpb24sIG5hbWUudmFsdWUpKSB7XG4gICAgICByZXR1cm4gbmFtZTtcbiAgICB9XG5cbiAgICB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoc3RhcnQpO1xuICB9IC8vIENvcmUgcGFyc2luZyB1dGlsaXR5IGZ1bmN0aW9uc1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbm9kZSB0aGF0LCBpZiBjb25maWd1cmVkIHRvIGRvIHNvLCBzZXRzIGEgXCJsb2NcIiBmaWVsZCBhcyBhXG4gICAqIGxvY2F0aW9uIG9iamVjdCwgdXNlZCB0byBpZGVudGlmeSB0aGUgcGxhY2UgaW4gdGhlIHNvdXJjZSB0aGF0IGNyZWF0ZWQgYVxuICAgKiBnaXZlbiBwYXJzZWQgb2JqZWN0LlxuICAgKi9cblxuICBub2RlKHN0YXJ0VG9rZW4sIG5vZGUpIHtcbiAgICB2YXIgX3RoaXMkX29wdGlvbnMyO1xuXG4gICAgaWYgKFxuICAgICAgKChfdGhpcyRfb3B0aW9uczIgPSB0aGlzLl9vcHRpb25zKSA9PT0gbnVsbCB8fCBfdGhpcyRfb3B0aW9uczIgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IF90aGlzJF9vcHRpb25zMi5ub0xvY2F0aW9uKSAhPT0gdHJ1ZVxuICAgICkge1xuICAgICAgbm9kZS5sb2MgPSBuZXcgTG9jYXRpb24oXG4gICAgICAgIHN0YXJ0VG9rZW4sXG4gICAgICAgIHRoaXMuX2xleGVyLmxhc3RUb2tlbixcbiAgICAgICAgdGhpcy5fbGV4ZXIuc291cmNlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgbmV4dCB0b2tlbiBpcyBvZiBhIGdpdmVuIGtpbmRcbiAgICovXG5cbiAgcGVlayhraW5kKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xleGVyLnRva2VuLmtpbmQgPT09IGtpbmQ7XG4gIH1cbiAgLyoqXG4gICAqIElmIHRoZSBuZXh0IHRva2VuIGlzIG9mIHRoZSBnaXZlbiBraW5kLCByZXR1cm4gdGhhdCB0b2tlbiBhZnRlciBhZHZhbmNpbmcgdGhlIGxleGVyLlxuICAgKiBPdGhlcndpc2UsIGRvIG5vdCBjaGFuZ2UgdGhlIHBhcnNlciBzdGF0ZSBhbmQgdGhyb3cgYW4gZXJyb3IuXG4gICAqL1xuXG4gIGV4cGVjdFRva2VuKGtpbmQpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuX2xleGVyLnRva2VuO1xuXG4gICAgaWYgKHRva2VuLmtpbmQgPT09IGtpbmQpIHtcbiAgICAgIHRoaXMuX2xleGVyLmFkdmFuY2UoKTtcblxuICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH1cblxuICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgdGhpcy5fbGV4ZXIuc291cmNlLFxuICAgICAgdG9rZW4uc3RhcnQsXG4gICAgICBgRXhwZWN0ZWQgJHtnZXRUb2tlbktpbmREZXNjKGtpbmQpfSwgZm91bmQgJHtnZXRUb2tlbkRlc2ModG9rZW4pfS5gLFxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIElmIHRoZSBuZXh0IHRva2VuIGlzIG9mIHRoZSBnaXZlbiBraW5kLCByZXR1cm4gXCJ0cnVlXCIgYWZ0ZXIgYWR2YW5jaW5nIHRoZSBsZXhlci5cbiAgICogT3RoZXJ3aXNlLCBkbyBub3QgY2hhbmdlIHRoZSBwYXJzZXIgc3RhdGUgYW5kIHJldHVybiBcImZhbHNlXCIuXG4gICAqL1xuXG4gIGV4cGVjdE9wdGlvbmFsVG9rZW4oa2luZCkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICBpZiAodG9rZW4ua2luZCA9PT0ga2luZCkge1xuICAgICAgdGhpcy5fbGV4ZXIuYWR2YW5jZSgpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIElmIHRoZSBuZXh0IHRva2VuIGlzIGEgZ2l2ZW4ga2V5d29yZCwgYWR2YW5jZSB0aGUgbGV4ZXIuXG4gICAqIE90aGVyd2lzZSwgZG8gbm90IGNoYW5nZSB0aGUgcGFyc2VyIHN0YXRlIGFuZCB0aHJvdyBhbiBlcnJvci5cbiAgICovXG5cbiAgZXhwZWN0S2V5d29yZCh2YWx1ZSkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICBpZiAodG9rZW4ua2luZCA9PT0gVG9rZW5LaW5kLk5BTUUgJiYgdG9rZW4udmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9sZXhlci5hZHZhbmNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgICB0aGlzLl9sZXhlci5zb3VyY2UsXG4gICAgICAgIHRva2VuLnN0YXJ0LFxuICAgICAgICBgRXhwZWN0ZWQgXCIke3ZhbHVlfVwiLCBmb3VuZCAke2dldFRva2VuRGVzYyh0b2tlbil9LmAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogSWYgdGhlIG5leHQgdG9rZW4gaXMgYSBnaXZlbiBrZXl3b3JkLCByZXR1cm4gXCJ0cnVlXCIgYWZ0ZXIgYWR2YW5jaW5nIHRoZSBsZXhlci5cbiAgICogT3RoZXJ3aXNlLCBkbyBub3QgY2hhbmdlIHRoZSBwYXJzZXIgc3RhdGUgYW5kIHJldHVybiBcImZhbHNlXCIuXG4gICAqL1xuXG4gIGV4cGVjdE9wdGlvbmFsS2V5d29yZCh2YWx1ZSkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICBpZiAodG9rZW4ua2luZCA9PT0gVG9rZW5LaW5kLk5BTUUgJiYgdG9rZW4udmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9sZXhlci5hZHZhbmNlKCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhbiBlcnJvciB3aGVuIGFuIHVuZXhwZWN0ZWQgbGV4ZWQgdG9rZW4gaXMgZW5jb3VudGVyZWQuXG4gICAqL1xuXG4gIHVuZXhwZWN0ZWQoYXRUb2tlbikge1xuICAgIGNvbnN0IHRva2VuID1cbiAgICAgIGF0VG9rZW4gIT09IG51bGwgJiYgYXRUb2tlbiAhPT0gdm9pZCAwID8gYXRUb2tlbiA6IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHJldHVybiBzeW50YXhFcnJvcihcbiAgICAgIHRoaXMuX2xleGVyLnNvdXJjZSxcbiAgICAgIHRva2VuLnN0YXJ0LFxuICAgICAgYFVuZXhwZWN0ZWQgJHtnZXRUb2tlbkRlc2ModG9rZW4pfS5gLFxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgYSBwb3NzaWJseSBlbXB0eSBsaXN0IG9mIHBhcnNlIG5vZGVzLCBkZXRlcm1pbmVkIGJ5IHRoZSBwYXJzZUZuLlxuICAgKiBUaGlzIGxpc3QgYmVnaW5zIHdpdGggYSBsZXggdG9rZW4gb2Ygb3BlbktpbmQgYW5kIGVuZHMgd2l0aCBhIGxleCB0b2tlbiBvZiBjbG9zZUtpbmQuXG4gICAqIEFkdmFuY2VzIHRoZSBwYXJzZXIgdG8gdGhlIG5leHQgbGV4IHRva2VuIGFmdGVyIHRoZSBjbG9zaW5nIHRva2VuLlxuICAgKi9cblxuICBhbnkob3BlbktpbmQsIHBhcnNlRm4sIGNsb3NlS2luZCkge1xuICAgIHRoaXMuZXhwZWN0VG9rZW4ob3BlbktpbmQpO1xuICAgIGNvbnN0IG5vZGVzID0gW107XG5cbiAgICB3aGlsZSAoIXRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihjbG9zZUtpbmQpKSB7XG4gICAgICBub2Rlcy5wdXNoKHBhcnNlRm4uY2FsbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBwYXJzZSBub2RlcywgZGV0ZXJtaW5lZCBieSB0aGUgcGFyc2VGbi5cbiAgICogSXQgY2FuIGJlIGVtcHR5IG9ubHkgaWYgb3BlbiB0b2tlbiBpcyBtaXNzaW5nIG90aGVyd2lzZSBpdCB3aWxsIGFsd2F5cyByZXR1cm4gbm9uLWVtcHR5IGxpc3RcbiAgICogdGhhdCBiZWdpbnMgd2l0aCBhIGxleCB0b2tlbiBvZiBvcGVuS2luZCBhbmQgZW5kcyB3aXRoIGEgbGV4IHRva2VuIG9mIGNsb3NlS2luZC5cbiAgICogQWR2YW5jZXMgdGhlIHBhcnNlciB0byB0aGUgbmV4dCBsZXggdG9rZW4gYWZ0ZXIgdGhlIGNsb3NpbmcgdG9rZW4uXG4gICAqL1xuXG4gIG9wdGlvbmFsTWFueShvcGVuS2luZCwgcGFyc2VGbiwgY2xvc2VLaW5kKSB7XG4gICAgaWYgKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihvcGVuS2luZCkpIHtcbiAgICAgIGNvbnN0IG5vZGVzID0gW107XG5cbiAgICAgIGRvIHtcbiAgICAgICAgbm9kZXMucHVzaChwYXJzZUZuLmNhbGwodGhpcykpO1xuICAgICAgfSB3aGlsZSAoIXRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihjbG9zZUtpbmQpKTtcblxuICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyBhIG5vbi1lbXB0eSBsaXN0IG9mIHBhcnNlIG5vZGVzLCBkZXRlcm1pbmVkIGJ5IHRoZSBwYXJzZUZuLlxuICAgKiBUaGlzIGxpc3QgYmVnaW5zIHdpdGggYSBsZXggdG9rZW4gb2Ygb3BlbktpbmQgYW5kIGVuZHMgd2l0aCBhIGxleCB0b2tlbiBvZiBjbG9zZUtpbmQuXG4gICAqIEFkdmFuY2VzIHRoZSBwYXJzZXIgdG8gdGhlIG5leHQgbGV4IHRva2VuIGFmdGVyIHRoZSBjbG9zaW5nIHRva2VuLlxuICAgKi9cblxuICBtYW55KG9wZW5LaW5kLCBwYXJzZUZuLCBjbG9zZUtpbmQpIHtcbiAgICB0aGlzLmV4cGVjdFRva2VuKG9wZW5LaW5kKTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuXG4gICAgZG8ge1xuICAgICAgbm9kZXMucHVzaChwYXJzZUZuLmNhbGwodGhpcykpO1xuICAgIH0gd2hpbGUgKCF0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oY2xvc2VLaW5kKSk7XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgYSBub24tZW1wdHkgbGlzdCBvZiBwYXJzZSBub2RlcywgZGV0ZXJtaW5lZCBieSB0aGUgcGFyc2VGbi5cbiAgICogVGhpcyBsaXN0IG1heSBiZWdpbiB3aXRoIGEgbGV4IHRva2VuIG9mIGRlbGltaXRlcktpbmQgZm9sbG93ZWQgYnkgaXRlbXMgc2VwYXJhdGVkIGJ5IGxleCB0b2tlbnMgb2YgdG9rZW5LaW5kLlxuICAgKiBBZHZhbmNlcyB0aGUgcGFyc2VyIHRvIHRoZSBuZXh0IGxleCB0b2tlbiBhZnRlciBsYXN0IGl0ZW0gaW4gdGhlIGxpc3QuXG4gICAqL1xuXG4gIGRlbGltaXRlZE1hbnkoZGVsaW1pdGVyS2luZCwgcGFyc2VGbikge1xuICAgIHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihkZWxpbWl0ZXJLaW5kKTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuXG4gICAgZG8ge1xuICAgICAgbm9kZXMucHVzaChwYXJzZUZuLmNhbGwodGhpcykpO1xuICAgIH0gd2hpbGUgKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihkZWxpbWl0ZXJLaW5kKSk7XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cbn1cbi8qKlxuICogQSBoZWxwZXIgZnVuY3Rpb24gdG8gZGVzY3JpYmUgYSB0b2tlbiBhcyBhIHN0cmluZyBmb3IgZGVidWdnaW5nLlxuICovXG5cbmZ1bmN0aW9uIGdldFRva2VuRGVzYyh0b2tlbikge1xuICBjb25zdCB2YWx1ZSA9IHRva2VuLnZhbHVlO1xuICByZXR1cm4gZ2V0VG9rZW5LaW5kRGVzYyh0b2tlbi5raW5kKSArICh2YWx1ZSAhPSBudWxsID8gYCBcIiR7dmFsdWV9XCJgIDogJycpO1xufVxuLyoqXG4gKiBBIGhlbHBlciBmdW5jdGlvbiB0byBkZXNjcmliZSBhIHRva2VuIGtpbmQgYXMgYSBzdHJpbmcgZm9yIGRlYnVnZ2luZy5cbiAqL1xuXG5mdW5jdGlvbiBnZXRUb2tlbktpbmREZXNjKGtpbmQpIHtcbiAgcmV0dXJuIGlzUHVuY3R1YXRvclRva2VuS2luZChraW5kKSA/IGBcIiR7a2luZH1cImAgOiBraW5kO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/parser.mjs\n");
|
709 |
|
710 | }),
|
711 |
|
712 | "../../../node_modules/graphql/language/predicates.mjs":
|
713 |
|
714 |
|
715 |
|
716 |
|
717 | (function(module, __webpack_exports__, __webpack_require__) {
|
718 |
|
719 | "use strict";
|
720 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDefinitionNode\", function() { return isDefinitionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isExecutableDefinitionNode\", function() { return isExecutableDefinitionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSelectionNode\", function() { return isSelectionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValueNode\", function() { return isValueNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isConstValueNode\", function() { return isConstValueNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypeNode\", function() { return isTypeNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypeSystemDefinitionNode\", function() { return isTypeSystemDefinitionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypeDefinitionNode\", function() { return isTypeDefinitionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypeSystemExtensionNode\", function() { return isTypeSystemExtensionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypeExtensionNode\", function() { return isTypeExtensionNode; });\n/* harmony import */ var _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n\nfunction isDefinitionNode(node) {\n return (\n isExecutableDefinitionNode(node) ||\n isTypeSystemDefinitionNode(node) ||\n isTypeSystemExtensionNode(node)\n );\n}\nfunction isExecutableDefinitionNode(node) {\n return (\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].OPERATION_DEFINITION ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FRAGMENT_DEFINITION\n );\n}\nfunction isSelectionNode(node) {\n return (\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FIELD ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FRAGMENT_SPREAD ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INLINE_FRAGMENT\n );\n}\nfunction isValueNode(node) {\n return (\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].VARIABLE ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INT ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FLOAT ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].STRING ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].BOOLEAN ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].NULL ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].ENUM ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].LIST ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].OBJECT\n );\n}\nfunction isConstValueNode(node) {\n return (\n isValueNode(node) &&\n (node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].LIST\n ? node.values.some(isConstValueNode)\n : node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].OBJECT\n ? node.fields.some((field) => isConstValueNode(field.value))\n : node.kind !== _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].VARIABLE)\n );\n}\nfunction isTypeNode(node) {\n return (\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].NAMED_TYPE ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].LIST_TYPE ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].NON_NULL_TYPE\n );\n}\nfunction isTypeSystemDefinitionNode(node) {\n return (\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].SCHEMA_DEFINITION ||\n isTypeDefinitionNode(node) ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].DIRECTIVE_DEFINITION\n );\n}\nfunction isTypeDefinitionNode(node) {\n return (\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].SCALAR_TYPE_DEFINITION ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].OBJECT_TYPE_DEFINITION ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INTERFACE_TYPE_DEFINITION ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].UNION_TYPE_DEFINITION ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].ENUM_TYPE_DEFINITION ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INPUT_OBJECT_TYPE_DEFINITION\n );\n}\nfunction isTypeSystemExtensionNode(node) {\n return node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nfunction isTypeExtensionNode(node) {\n return (\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].SCALAR_TYPE_EXTENSION ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].OBJECT_TYPE_EXTENSION ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INTERFACE_TYPE_EXTENSION ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].UNION_TYPE_EXTENSION ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].ENUM_TYPE_EXTENSION ||\n node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INPUT_OBJECT_TYPE_EXTENSION\n );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvcHJlZGljYXRlcy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wcmVkaWNhdGVzLm1qcz9jYTllIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtpbmQgfSBmcm9tICcuL2tpbmRzLm1qcyc7XG5leHBvcnQgZnVuY3Rpb24gaXNEZWZpbml0aW9uTm9kZShub2RlKSB7XG4gIHJldHVybiAoXG4gICAgaXNFeGVjdXRhYmxlRGVmaW5pdGlvbk5vZGUobm9kZSkgfHxcbiAgICBpc1R5cGVTeXN0ZW1EZWZpbml0aW9uTm9kZShub2RlKSB8fFxuICAgIGlzVHlwZVN5c3RlbUV4dGVuc2lvbk5vZGUobm9kZSlcbiAgKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0V4ZWN1dGFibGVEZWZpbml0aW9uTm9kZShub2RlKSB7XG4gIHJldHVybiAoXG4gICAgbm9kZS5raW5kID09PSBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLkZSQUdNRU5UX0RFRklOSVRJT05cbiAgKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdGlvbk5vZGUobm9kZSkge1xuICByZXR1cm4gKFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5GSUVMRCB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5GUkFHTUVOVF9TUFJFQUQgfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuSU5MSU5FX0ZSQUdNRU5UXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWYWx1ZU5vZGUobm9kZSkge1xuICByZXR1cm4gKFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5WQVJJQUJMRSB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5JTlQgfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuRkxPQVQgfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuU1RSSU5HIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLkJPT0xFQU4gfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuTlVMTCB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5FTlVNIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLkxJU1QgfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuT0JKRUNUXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNDb25zdFZhbHVlTm9kZShub2RlKSB7XG4gIHJldHVybiAoXG4gICAgaXNWYWx1ZU5vZGUobm9kZSkgJiZcbiAgICAobm9kZS5raW5kID09PSBLaW5kLkxJU1RcbiAgICAgID8gbm9kZS52YWx1ZXMuc29tZShpc0NvbnN0VmFsdWVOb2RlKVxuICAgICAgOiBub2RlLmtpbmQgPT09IEtpbmQuT0JKRUNUXG4gICAgICA/IG5vZGUuZmllbGRzLnNvbWUoKGZpZWxkKSA9PiBpc0NvbnN0VmFsdWVOb2RlKGZpZWxkLnZhbHVlKSlcbiAgICAgIDogbm9kZS5raW5kICE9PSBLaW5kLlZBUklBQkxFKVxuICApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZU5vZGUobm9kZSkge1xuICByZXR1cm4gKFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5OQU1FRF9UWVBFIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLkxJU1RfVFlQRSB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5OT05fTlVMTF9UWVBFXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlU3lzdGVtRGVmaW5pdGlvbk5vZGUobm9kZSkge1xuICByZXR1cm4gKFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5TQ0hFTUFfREVGSU5JVElPTiB8fFxuICAgIGlzVHlwZURlZmluaXRpb25Ob2RlKG5vZGUpIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLkRJUkVDVElWRV9ERUZJTklUSU9OXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlRGVmaW5pdGlvbk5vZGUobm9kZSkge1xuICByZXR1cm4gKFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5TQ0FMQVJfVFlQRV9ERUZJTklUSU9OIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLk9CSkVDVF9UWVBFX0RFRklOSVRJT04gfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuSU5URVJGQUNFX1RZUEVfREVGSU5JVElPTiB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5VTklPTl9UWVBFX0RFRklOSVRJT04gfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuRU5VTV9UWVBFX0RFRklOSVRJT04gfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTlxuICApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZVN5c3RlbUV4dGVuc2lvbk5vZGUobm9kZSkge1xuICByZXR1cm4gbm9kZS5raW5kID09PSBLaW5kLlNDSEVNQV9FWFRFTlNJT04gfHwgaXNUeXBlRXh0ZW5zaW9uTm9kZShub2RlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVFeHRlbnNpb25Ob2RlKG5vZGUpIHtcbiAgcmV0dXJuIChcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuU0NBTEFSX1RZUEVfRVhURU5TSU9OIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLk9CSkVDVF9UWVBFX0VYVEVOU0lPTiB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5JTlRFUkZBQ0VfVFlQRV9FWFRFTlNJT04gfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuVU5JT05fVFlQRV9FWFRFTlNJT04gfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuRU5VTV9UWVBFX0VYVEVOU0lPTiB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9FWFRFTlNJT05cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/predicates.mjs\n");
|
721 |
|
722 | }),
|
723 |
|
724 | "../../../node_modules/graphql/language/printLocation.mjs":
|
725 |
|
726 |
|
727 |
|
728 |
|
729 | (function(module, __webpack_exports__, __webpack_require__) {
|
730 |
|
731 | "use strict";
|
732 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printLocation\", function() { return printLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printSourceLocation\", function() { return printSourceLocation; });\n/* harmony import */ var _location_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./location.mjs */ \"../../../node_modules/graphql/language/location.mjs\");\n\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nfunction printLocation(location) {\n return printSourceLocation(\n location.source,\n Object(_location_mjs__WEBPACK_IMPORTED_MODULE_0__[\"getLocation\"])(location.source, location.start),\n );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nfunction printSourceLocation(source, sourceLocation) {\n const firstLineColumnOffset = source.locationOffset.column - 1;\n const body = ''.padStart(firstLineColumnOffset) + source.body;\n const lineIndex = sourceLocation.line - 1;\n const lineOffset = source.locationOffset.line - 1;\n const lineNum = sourceLocation.line + lineOffset;\n const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n const columnNum = sourceLocation.column + columnOffset;\n const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n const lines = body.split(/\\r\\n|[\\n\\r]/g);\n const locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n const subLineIndex = Math.floor(columnNum / 80);\n const subLineColumnNum = columnNum % 80;\n const subLines = [];\n\n for (let i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return (\n locationStr +\n printPrefixedLines([\n [`${lineNum} |`, subLines[0]],\n ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n ['|', '^'.padStart(subLineColumnNum)],\n ['|', subLines[subLineIndex + 1]],\n ])\n );\n }\n\n return (\n locationStr +\n printPrefixedLines([\n // Lines specified like this: [\"prefix\", \"string\"],\n [`${lineNum - 1} |`, lines[lineIndex - 1]],\n [`${lineNum} |`, locationLine],\n ['|', '^'.padStart(columnNum)],\n [`${lineNum + 1} |`, lines[lineIndex + 1]],\n ])\n );\n}\n\nfunction printPrefixedLines(lines) {\n const existingLines = lines.filter(([_, line]) => line !== undefined);\n const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n return existingLines\n .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n .join('\\n');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvcHJpbnRMb2NhdGlvbi5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wcmludExvY2F0aW9uLm1qcz9lZjRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2F0aW9uIH0gZnJvbSAnLi9sb2NhdGlvbi5tanMnO1xuXG4vKipcbiAqIFJlbmRlciBhIGhlbHBmdWwgZGVzY3JpcHRpb24gb2YgdGhlIGxvY2F0aW9uIGluIHRoZSBHcmFwaFFMIFNvdXJjZSBkb2N1bWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByaW50TG9jYXRpb24obG9jYXRpb24pIHtcbiAgcmV0dXJuIHByaW50U291cmNlTG9jYXRpb24oXG4gICAgbG9jYXRpb24uc291cmNlLFxuICAgIGdldExvY2F0aW9uKGxvY2F0aW9uLnNvdXJjZSwgbG9jYXRpb24uc3RhcnQpLFxuICApO1xufVxuLyoqXG4gKiBSZW5kZXIgYSBoZWxwZnVsIGRlc2NyaXB0aW9uIG9mIHRoZSBsb2NhdGlvbiBpbiB0aGUgR3JhcGhRTCBTb3VyY2UgZG9jdW1lbnQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW50U291cmNlTG9jYXRpb24oc291cmNlLCBzb3VyY2VMb2NhdGlvbikge1xuICBjb25zdCBmaXJzdExpbmVDb2x1bW5PZmZzZXQgPSBzb3VyY2UubG9jYXRpb25PZmZzZXQuY29sdW1uIC0gMTtcbiAgY29uc3QgYm9keSA9ICcnLnBhZFN0YXJ0KGZpcnN0TGluZUNvbHVtbk9mZnNldCkgKyBzb3VyY2UuYm9keTtcbiAgY29uc3QgbGluZUluZGV4ID0gc291cmNlTG9jYXRpb24ubGluZSAtIDE7XG4gIGNvbnN0IGxpbmVPZmZzZXQgPSBzb3VyY2UubG9jYXRpb25PZmZzZXQubGluZSAtIDE7XG4gIGNvbnN0IGxpbmVOdW0gPSBzb3VyY2VMb2NhdGlvbi5saW5lICsgbGluZU9mZnNldDtcbiAgY29uc3QgY29sdW1uT2Zmc2V0ID0gc291cmNlTG9jYXRpb24ubGluZSA9PT0gMSA/IGZpcnN0TGluZUNvbHVtbk9mZnNldCA6IDA7XG4gIGNvbnN0IGNvbHVtbk51bSA9IHNvdXJjZUxvY2F0aW9uLmNvbHVtbiArIGNvbHVtbk9mZnNldDtcbiAgY29uc3QgbG9jYXRpb25TdHIgPSBgJHtzb3VyY2UubmFtZX06JHtsaW5lTnVtfToke2NvbHVtbk51bX1cXG5gO1xuICBjb25zdCBsaW5lcyA9IGJvZHkuc3BsaXQoL1xcclxcbnxbXFxuXFxyXS9nKTtcbiAgY29uc3QgbG9jYXRpb25MaW5lID0gbGluZXNbbGluZUluZGV4XTsgLy8gU3BlY2lhbCBjYXNlIGZvciBtaW5pZmllZCBkb2N1bWVudHNcblxuICBpZiAobG9jYXRpb25MaW5lLmxlbmd0aCA+IDEyMCkge1xuICAgIGNvbnN0IHN1YkxpbmVJbmRleCA9IE1hdGguZmxvb3IoY29sdW1uTnVtIC8gODApO1xuICAgIGNvbnN0IHN1YkxpbmVDb2x1bW5OdW0gPSBjb2x1bW5OdW0gJSA4MDtcbiAgICBjb25zdCBzdWJMaW5lcyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb2NhdGlvbkxpbmUubGVuZ3RoOyBpICs9IDgwKSB7XG4gICAgICBzdWJMaW5lcy5wdXNoKGxvY2F0aW9uTGluZS5zbGljZShpLCBpICsgODApKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgbG9jYXRpb25TdHIgK1xuICAgICAgcHJpbnRQcmVmaXhlZExpbmVzKFtcbiAgICAgICAgW2Ake2xpbmVOdW19IHxgLCBzdWJMaW5lc1swXV0sXG4gICAgICAgIC4uLnN1YkxpbmVzLnNsaWNlKDEsIHN1YkxpbmVJbmRleCArIDEpLm1hcCgoc3ViTGluZSkgPT4gWyd8Jywgc3ViTGluZV0pLFxuICAgICAgICBbJ3wnLCAnXicucGFkU3RhcnQoc3ViTGluZUNvbHVtbk51bSldLFxuICAgICAgICBbJ3wnLCBzdWJMaW5lc1tzdWJMaW5lSW5kZXggKyAxXV0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGxvY2F0aW9uU3RyICtcbiAgICBwcmludFByZWZpeGVkTGluZXMoW1xuICAgICAgLy8gTGluZXMgc3BlY2lmaWVkIGxpa2UgdGhpczogW1wicHJlZml4XCIsIFwic3RyaW5nXCJdLFxuICAgICAgW2Ake2xpbmVOdW0gLSAxfSB8YCwgbGluZXNbbGluZUluZGV4IC0gMV1dLFxuICAgICAgW2Ake2xpbmVOdW19IHxgLCBsb2NhdGlvbkxpbmVdLFxuICAgICAgWyd8JywgJ14nLnBhZFN0YXJ0KGNvbHVtbk51bSldLFxuICAgICAgW2Ake2xpbmVOdW0gKyAxfSB8YCwgbGluZXNbbGluZUluZGV4ICsgMV1dLFxuICAgIF0pXG4gICk7XG59XG5cbmZ1bmN0aW9uIHByaW50UHJlZml4ZWRMaW5lcyhsaW5lcykge1xuICBjb25zdCBleGlzdGluZ0xpbmVzID0gbGluZXMuZmlsdGVyKChbXywgbGluZV0pID0+IGxpbmUgIT09IHVuZGVmaW5lZCk7XG4gIGNvbnN0IHBhZExlbiA9IE1hdGgubWF4KC4uLmV4aXN0aW5nTGluZXMubWFwKChbcHJlZml4XSkgPT4gcHJlZml4Lmxlbmd0aCkpO1xuICByZXR1cm4gZXhpc3RpbmdMaW5lc1xuICAgIC5tYXAoKFtwcmVmaXgsIGxpbmVdKSA9PiBwcmVmaXgucGFkU3RhcnQocGFkTGVuKSArIChsaW5lID8gJyAnICsgbGluZSA6ICcnKSlcbiAgICAuam9pbignXFxuJyk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/printLocation.mjs\n");
|
733 |
|
734 | }),
|
735 |
|
736 | "../../../node_modules/graphql/language/printString.mjs":
|
737 |
|
738 |
|
739 |
|
740 |
|
741 | (function(module, __webpack_exports__, __webpack_require__) {
|
742 |
|
743 | "use strict";
|
744 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printString\", function() { return printString; });\n/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nfunction printString(str) {\n return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n '\\\\u0000',\n '\\\\u0001',\n '\\\\u0002',\n '\\\\u0003',\n '\\\\u0004',\n '\\\\u0005',\n '\\\\u0006',\n '\\\\u0007',\n '\\\\b',\n '\\\\t',\n '\\\\n',\n '\\\\u000B',\n '\\\\f',\n '\\\\r',\n '\\\\u000E',\n '\\\\u000F',\n '\\\\u0010',\n '\\\\u0011',\n '\\\\u0012',\n '\\\\u0013',\n '\\\\u0014',\n '\\\\u0015',\n '\\\\u0016',\n '\\\\u0017',\n '\\\\u0018',\n '\\\\u0019',\n '\\\\u001A',\n '\\\\u001B',\n '\\\\u001C',\n '\\\\u001D',\n '\\\\u001E',\n '\\\\u001F',\n '',\n '',\n '\\\\\"',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 2F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 3F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 4F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\\\\\',\n '',\n '',\n '', // 5F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 6F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\u007F',\n '\\\\u0080',\n '\\\\u0081',\n '\\\\u0082',\n '\\\\u0083',\n '\\\\u0084',\n '\\\\u0085',\n '\\\\u0086',\n '\\\\u0087',\n '\\\\u0088',\n '\\\\u0089',\n '\\\\u008A',\n '\\\\u008B',\n '\\\\u008C',\n '\\\\u008D',\n '\\\\u008E',\n '\\\\u008F',\n '\\\\u0090',\n '\\\\u0091',\n '\\\\u0092',\n '\\\\u0093',\n '\\\\u0094',\n '\\\\u0095',\n '\\\\u0096',\n '\\\\u0097',\n '\\\\u0098',\n '\\\\u0099',\n '\\\\u009A',\n '\\\\u009B',\n '\\\\u009C',\n '\\\\u009D',\n '\\\\u009E',\n '\\\\u009F',\n];\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvcHJpbnRTdHJpbmcubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvcHJpbnRTdHJpbmcubWpzPzYxNjIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcmludHMgYSBzdHJpbmcgYXMgYSBHcmFwaFFMIFN0cmluZ1ZhbHVlIGxpdGVyYWwuIFJlcGxhY2VzIGNvbnRyb2wgY2hhcmFjdGVyc1xuICogYW5kIGV4Y2x1ZGVkIGNoYXJhY3RlcnMgKFwiIFUrMDAyMiBhbmQgXFxcXCBVKzAwNUMpIHdpdGggZXNjYXBlIHNlcXVlbmNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByaW50U3RyaW5nKHN0cikge1xuICByZXR1cm4gYFwiJHtzdHIucmVwbGFjZShlc2NhcGVkUmVnRXhwLCBlc2NhcGVkUmVwbGFjZXIpfVwiYDtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRyb2wtcmVnZXhcblxuY29uc3QgZXNjYXBlZFJlZ0V4cCA9IC9bXFx4MDAtXFx4MWZcXHgyMlxceDVjXFx4N2YtXFx4OWZdL2c7XG5cbmZ1bmN0aW9uIGVzY2FwZWRSZXBsYWNlcihzdHIpIHtcbiAgcmV0dXJuIGVzY2FwZVNlcXVlbmNlc1tzdHIuY2hhckNvZGVBdCgwKV07XG59IC8vIHByZXR0aWVyLWlnbm9yZVxuXG5jb25zdCBlc2NhcGVTZXF1ZW5jZXMgPSBbXG4gICdcXFxcdTAwMDAnLFxuICAnXFxcXHUwMDAxJyxcbiAgJ1xcXFx1MDAwMicsXG4gICdcXFxcdTAwMDMnLFxuICAnXFxcXHUwMDA0JyxcbiAgJ1xcXFx1MDAwNScsXG4gICdcXFxcdTAwMDYnLFxuICAnXFxcXHUwMDA3JyxcbiAgJ1xcXFxiJyxcbiAgJ1xcXFx0JyxcbiAgJ1xcXFxuJyxcbiAgJ1xcXFx1MDAwQicsXG4gICdcXFxcZicsXG4gICdcXFxccicsXG4gICdcXFxcdTAwMEUnLFxuICAnXFxcXHUwMDBGJyxcbiAgJ1xcXFx1MDAxMCcsXG4gICdcXFxcdTAwMTEnLFxuICAnXFxcXHUwMDEyJyxcbiAgJ1xcXFx1MDAxMycsXG4gICdcXFxcdTAwMTQnLFxuICAnXFxcXHUwMDE1JyxcbiAgJ1xcXFx1MDAxNicsXG4gICdcXFxcdTAwMTcnLFxuICAnXFxcXHUwMDE4JyxcbiAgJ1xcXFx1MDAxOScsXG4gICdcXFxcdTAwMUEnLFxuICAnXFxcXHUwMDFCJyxcbiAgJ1xcXFx1MDAxQycsXG4gICdcXFxcdTAwMUQnLFxuICAnXFxcXHUwMDFFJyxcbiAgJ1xcXFx1MDAxRicsXG4gICcnLFxuICAnJyxcbiAgJ1xcXFxcIicsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLCAvLyAyRlxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJywgLy8gM0ZcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsIC8vIDRGXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICdcXFxcXFxcXCcsXG4gICcnLFxuICAnJyxcbiAgJycsIC8vIDVGXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLCAvLyA2RlxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnXFxcXHUwMDdGJyxcbiAgJ1xcXFx1MDA4MCcsXG4gICdcXFxcdTAwODEnLFxuICAnXFxcXHUwMDgyJyxcbiAgJ1xcXFx1MDA4MycsXG4gICdcXFxcdTAwODQnLFxuICAnXFxcXHUwMDg1JyxcbiAgJ1xcXFx1MDA4NicsXG4gICdcXFxcdTAwODcnLFxuICAnXFxcXHUwMDg4JyxcbiAgJ1xcXFx1MDA4OScsXG4gICdcXFxcdTAwOEEnLFxuICAnXFxcXHUwMDhCJyxcbiAgJ1xcXFx1MDA4QycsXG4gICdcXFxcdTAwOEQnLFxuICAnXFxcXHUwMDhFJyxcbiAgJ1xcXFx1MDA4RicsXG4gICdcXFxcdTAwOTAnLFxuICAnXFxcXHUwMDkxJyxcbiAgJ1xcXFx1MDA5MicsXG4gICdcXFxcdTAwOTMnLFxuICAnXFxcXHUwMDk0JyxcbiAgJ1xcXFx1MDA5NScsXG4gICdcXFxcdTAwOTYnLFxuICAnXFxcXHUwMDk3JyxcbiAgJ1xcXFx1MDA5OCcsXG4gICdcXFxcdTAwOTknLFxuICAnXFxcXHUwMDlBJyxcbiAgJ1xcXFx1MDA5QicsXG4gICdcXFxcdTAwOUMnLFxuICAnXFxcXHUwMDlEJyxcbiAgJ1xcXFx1MDA5RScsXG4gICdcXFxcdTAwOUYnLFxuXTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/printString.mjs\n");
|
745 |
|
746 | }),
|
747 |
|
748 | "../../../node_modules/graphql/language/printer.mjs":
|
749 |
|
750 |
|
751 |
|
752 |
|
753 | (function(module, __webpack_exports__, __webpack_require__) {
|
754 |
|
755 | "use strict";
|
756 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"print\", function() { return print; });\n/* harmony import */ var _blockString_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blockString.mjs */ \"../../../node_modules/graphql/language/blockString.mjs\");\n/* harmony import */ var _printString_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./printString.mjs */ \"../../../node_modules/graphql/language/printString.mjs\");\n/* harmony import */ var _visitor_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n\n\n\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nfunction print(ast) {\n return Object(_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__[\"visit\"])(ast, printDocASTReducer);\n}\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n Name: {\n leave: (node) => node.value,\n },\n Variable: {\n leave: (node) => '$' + node.name,\n },\n // Document\n Document: {\n leave: (node) => join(node.definitions, '\\n\\n'),\n },\n OperationDefinition: {\n leave(node) {\n const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n const prefix = join(\n [\n node.operation,\n join([node.name, varDefs]),\n join(node.directives, ' '),\n ],\n ' ',\n ); // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n },\n },\n VariableDefinition: {\n leave: ({ variable, type, defaultValue, directives }) =>\n variable +\n ': ' +\n type +\n wrap(' = ', defaultValue) +\n wrap(' ', join(directives, ' ')),\n },\n SelectionSet: {\n leave: ({ selections }) => block(selections),\n },\n Field: {\n leave({ alias, name, arguments: args, directives, selectionSet }) {\n const prefix = wrap('', alias, ': ') + name;\n let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n },\n Argument: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Fragments\n FragmentSpread: {\n leave: ({ name, directives }) =>\n '...' + name + wrap(' ', join(directives, ' ')),\n },\n InlineFragment: {\n leave: ({ typeCondition, directives, selectionSet }) =>\n join(\n [\n '...',\n wrap('on ', typeCondition),\n join(directives, ' '),\n selectionSet,\n ],\n ' ',\n ),\n },\n FragmentDefinition: {\n leave: (\n { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n ) =>\n // or removed in the future.\n `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n selectionSet,\n },\n // Value\n IntValue: {\n leave: ({ value }) => value,\n },\n FloatValue: {\n leave: ({ value }) => value,\n },\n StringValue: {\n leave: ({ value, block: isBlockString }) =>\n isBlockString ? Object(_blockString_mjs__WEBPACK_IMPORTED_MODULE_0__[\"printBlockString\"])(value) : Object(_printString_mjs__WEBPACK_IMPORTED_MODULE_1__[\"printString\"])(value),\n },\n BooleanValue: {\n leave: ({ value }) => (value ? 'true' : 'false'),\n },\n NullValue: {\n leave: () => 'null',\n },\n EnumValue: {\n leave: ({ value }) => value,\n },\n ListValue: {\n leave: ({ values }) => '[' + join(values, ', ') + ']',\n },\n ObjectValue: {\n leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n },\n ObjectField: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Directive\n Directive: {\n leave: ({ name, arguments: args }) =>\n '@' + name + wrap('(', join(args, ', '), ')'),\n },\n // Type\n NamedType: {\n leave: ({ name }) => name,\n },\n ListType: {\n leave: ({ type }) => '[' + type + ']',\n },\n NonNullType: {\n leave: ({ type }) => type + '!',\n },\n // Type System Definitions\n SchemaDefinition: {\n leave: ({ description, directives, operationTypes }) =>\n wrap('', description, '\\n') +\n join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n OperationTypeDefinition: {\n leave: ({ operation, type }) => operation + ': ' + type,\n },\n ScalarTypeDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') +\n join(['scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n FieldDefinition: {\n leave: ({ description, name, arguments: args, type, directives }) =>\n wrap('', description, '\\n') +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n ': ' +\n type +\n wrap(' ', join(directives, ' ')),\n },\n InputValueDefinition: {\n leave: ({ description, name, type, defaultValue, directives }) =>\n wrap('', description, '\\n') +\n join(\n [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n ' ',\n ),\n },\n InterfaceTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeDefinition: {\n leave: ({ description, name, directives, types }) =>\n wrap('', description, '\\n') +\n join(\n ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n ' ',\n ),\n },\n EnumTypeDefinition: {\n leave: ({ description, name, directives, values }) =>\n wrap('', description, '\\n') +\n join(['enum', name, join(directives, ' '), block(values)], ' '),\n },\n EnumValueDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n },\n InputObjectTypeDefinition: {\n leave: ({ description, name, directives, fields }) =>\n wrap('', description, '\\n') +\n join(['input', name, join(directives, ' '), block(fields)], ' '),\n },\n DirectiveDefinition: {\n leave: ({ description, name, arguments: args, repeatable, locations }) =>\n wrap('', description, '\\n') +\n 'directive @' +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n (repeatable ? ' repeatable' : '') +\n ' on ' +\n join(locations, ' | '),\n },\n SchemaExtension: {\n leave: ({ directives, operationTypes }) =>\n join(\n ['extend schema', join(directives, ' '), block(operationTypes)],\n ' ',\n ),\n },\n ScalarTypeExtension: {\n leave: ({ name, directives }) =>\n join(['extend scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n InterfaceTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeExtension: {\n leave: ({ name, directives, types }) =>\n join(\n [\n 'extend union',\n name,\n join(directives, ' '),\n wrap('= ', join(types, ' | ')),\n ],\n ' ',\n ),\n },\n EnumTypeExtension: {\n leave: ({ name, directives, values }) =>\n join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n },\n InputObjectTypeExtension: {\n leave: ({ name, directives, fields }) =>\n join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n var _maybeArray$filter$jo;\n\n return (_maybeArray$filter$jo =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.filter((x) => x).join(separator)) !== null &&\n _maybeArray$filter$jo !== void 0\n ? _maybeArray$filter$jo\n : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n return maybeString != null && maybeString !== ''\n ? start + maybeString + end\n : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n var _maybeArray$some;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n return (_maybeArray$some =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n _maybeArray$some !== void 0\n ? _maybeArray$some\n : false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvcHJpbnRlci5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wcmludGVyLm1qcz9iMzI0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByaW50QmxvY2tTdHJpbmcgfSBmcm9tICcuL2Jsb2NrU3RyaW5nLm1qcyc7XG5pbXBvcnQgeyBwcmludFN0cmluZyB9IGZyb20gJy4vcHJpbnRTdHJpbmcubWpzJztcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSAnLi92aXNpdG9yLm1qcyc7XG4vKipcbiAqIENvbnZlcnRzIGFuIEFTVCBpbnRvIGEgc3RyaW5nLCB1c2luZyBvbmUgc2V0IG9mIHJlYXNvbmFibGVcbiAqIGZvcm1hdHRpbmcgcnVsZXMuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW50KGFzdCkge1xuICByZXR1cm4gdmlzaXQoYXN0LCBwcmludERvY0FTVFJlZHVjZXIpO1xufVxuY29uc3QgTUFYX0xJTkVfTEVOR1RIID0gODA7XG5jb25zdCBwcmludERvY0FTVFJlZHVjZXIgPSB7XG4gIE5hbWU6IHtcbiAgICBsZWF2ZTogKG5vZGUpID0+IG5vZGUudmFsdWUsXG4gIH0sXG4gIFZhcmlhYmxlOiB7XG4gICAgbGVhdmU6IChub2RlKSA9PiAnJCcgKyBub2RlLm5hbWUsXG4gIH0sXG4gIC8vIERvY3VtZW50XG4gIERvY3VtZW50OiB7XG4gICAgbGVhdmU6IChub2RlKSA9PiBqb2luKG5vZGUuZGVmaW5pdGlvbnMsICdcXG5cXG4nKSxcbiAgfSxcbiAgT3BlcmF0aW9uRGVmaW5pdGlvbjoge1xuICAgIGxlYXZlKG5vZGUpIHtcbiAgICAgIGNvbnN0IHZhckRlZnMgPSB3cmFwKCcoJywgam9pbihub2RlLnZhcmlhYmxlRGVmaW5pdGlvbnMsICcsICcpLCAnKScpO1xuICAgICAgY29uc3QgcHJlZml4ID0gam9pbihcbiAgICAgICAgW1xuICAgICAgICAgIG5vZGUub3BlcmF0aW9uLFxuICAgICAgICAgIGpvaW4oW25vZGUubmFtZSwgdmFyRGVmc10pLFxuICAgICAgICAgIGpvaW4obm9kZS5kaXJlY3RpdmVzLCAnICcpLFxuICAgICAgICBdLFxuICAgICAgICAnICcsXG4gICAgICApOyAvLyBBbm9ueW1vdXMgcXVlcmllcyB3aXRoIG5vIGRpcmVjdGl2ZXMgb3IgdmFyaWFibGUgZGVmaW5pdGlvbnMgY2FuIHVzZVxuICAgICAgLy8gdGhlIHF1ZXJ5IHNob3J0IGZvcm0uXG5cbiAgICAgIHJldHVybiAocHJlZml4ID09PSAncXVlcnknID8gJycgOiBwcmVmaXggKyAnICcpICsgbm9kZS5zZWxlY3Rpb25TZXQ7XG4gICAgfSxcbiAgfSxcbiAgVmFyaWFibGVEZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IHZhcmlhYmxlLCB0eXBlLCBkZWZhdWx0VmFsdWUsIGRpcmVjdGl2ZXMgfSkgPT5cbiAgICAgIHZhcmlhYmxlICtcbiAgICAgICc6ICcgK1xuICAgICAgdHlwZSArXG4gICAgICB3cmFwKCcgPSAnLCBkZWZhdWx0VmFsdWUpICtcbiAgICAgIHdyYXAoJyAnLCBqb2luKGRpcmVjdGl2ZXMsICcgJykpLFxuICB9LFxuICBTZWxlY3Rpb25TZXQ6IHtcbiAgICBsZWF2ZTogKHsgc2VsZWN0aW9ucyB9KSA9PiBibG9jayhzZWxlY3Rpb25zKSxcbiAgfSxcbiAgRmllbGQ6IHtcbiAgICBsZWF2ZSh7IGFsaWFzLCBuYW1lLCBhcmd1bWVudHM6IGFyZ3MsIGRpcmVjdGl2ZXMsIHNlbGVjdGlvblNldCB9KSB7XG4gICAgICBjb25zdCBwcmVmaXggPSB3cmFwKCcnLCBhbGlhcywgJzogJykgKyBuYW1lO1xuICAgICAgbGV0IGFyZ3NMaW5lID0gcHJlZml4ICsgd3JhcCgnKCcsIGpvaW4oYXJncywgJywgJyksICcpJyk7XG5cbiAgICAgIGlmIChhcmdzTGluZS5sZW5ndGggPiBNQVhfTElORV9MRU5HVEgpIHtcbiAgICAgICAgYXJnc0xpbmUgPSBwcmVmaXggKyB3cmFwKCcoXFxuJywgaW5kZW50KGpvaW4oYXJncywgJ1xcbicpKSwgJ1xcbiknKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGpvaW4oW2FyZ3NMaW5lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIHNlbGVjdGlvblNldF0sICcgJyk7XG4gICAgfSxcbiAgfSxcbiAgQXJndW1lbnQ6IHtcbiAgICBsZWF2ZTogKHsgbmFtZSwgdmFsdWUgfSkgPT4gbmFtZSArICc6ICcgKyB2YWx1ZSxcbiAgfSxcbiAgLy8gRnJhZ21lbnRzXG4gIEZyYWdtZW50U3ByZWFkOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUsIGRpcmVjdGl2ZXMgfSkgPT5cbiAgICAgICcuLi4nICsgbmFtZSArIHdyYXAoJyAnLCBqb2luKGRpcmVjdGl2ZXMsICcgJykpLFxuICB9LFxuICBJbmxpbmVGcmFnbWVudDoge1xuICAgIGxlYXZlOiAoeyB0eXBlQ29uZGl0aW9uLCBkaXJlY3RpdmVzLCBzZWxlY3Rpb25TZXQgfSkgPT5cbiAgICAgIGpvaW4oXG4gICAgICAgIFtcbiAgICAgICAgICAnLi4uJyxcbiAgICAgICAgICB3cmFwKCdvbiAnLCB0eXBlQ29uZGl0aW9uKSxcbiAgICAgICAgICBqb2luKGRpcmVjdGl2ZXMsICcgJyksXG4gICAgICAgICAgc2VsZWN0aW9uU2V0LFxuICAgICAgICBdLFxuICAgICAgICAnICcsXG4gICAgICApLFxuICB9LFxuICBGcmFnbWVudERlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKFxuICAgICAgeyBuYW1lLCB0eXBlQ29uZGl0aW9uLCB2YXJpYWJsZURlZmluaXRpb25zLCBkaXJlY3RpdmVzLCBzZWxlY3Rpb25TZXQgfSwgLy8gTm90ZTogZnJhZ21lbnQgdmFyaWFibGUgZGVmaW5pdGlvbnMgYXJlIGV4cGVyaW1lbnRhbCBhbmQgbWF5IGJlIGNoYW5nZWRcbiAgICApID0+XG4gICAgICAvLyBvciByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gICAgICBgZnJhZ21lbnQgJHtuYW1lfSR7d3JhcCgnKCcsIGpvaW4odmFyaWFibGVEZWZpbml0aW9ucywgJywgJyksICcpJyl9IGAgK1xuICAgICAgYG9uICR7dHlwZUNvbmRpdGlvbn0gJHt3cmFwKCcnLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksICcgJyl9YCArXG4gICAgICBzZWxlY3Rpb25TZXQsXG4gIH0sXG4gIC8vIFZhbHVlXG4gIEludFZhbHVlOiB7XG4gICAgbGVhdmU6ICh7IHZhbHVlIH0pID0+IHZhbHVlLFxuICB9LFxuICBGbG9hdFZhbHVlOiB7XG4gICAgbGVhdmU6ICh7IHZhbHVlIH0pID0+IHZhbHVlLFxuICB9LFxuICBTdHJpbmdWYWx1ZToge1xuICAgIGxlYXZlOiAoeyB2YWx1ZSwgYmxvY2s6IGlzQmxvY2tTdHJpbmcgfSkgPT5cbiAgICAgIGlzQmxvY2tTdHJpbmcgPyBwcmludEJsb2NrU3RyaW5nKHZhbHVlKSA6IHByaW50U3RyaW5nKHZhbHVlKSxcbiAgfSxcbiAgQm9vbGVhblZhbHVlOiB7XG4gICAgbGVhdmU6ICh7IHZhbHVlIH0pID0+ICh2YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZScpLFxuICB9LFxuICBOdWxsVmFsdWU6IHtcbiAgICBsZWF2ZTogKCkgPT4gJ251bGwnLFxuICB9LFxuICBFbnVtVmFsdWU6IHtcbiAgICBsZWF2ZTogKHsgdmFsdWUgfSkgPT4gdmFsdWUsXG4gIH0sXG4gIExpc3RWYWx1ZToge1xuICAgIGxlYXZlOiAoeyB2YWx1ZXMgfSkgPT4gJ1snICsgam9pbih2YWx1ZXMsICcsICcpICsgJ10nLFxuICB9LFxuICBPYmplY3RWYWx1ZToge1xuICAgIGxlYXZlOiAoeyBmaWVsZHMgfSkgPT4gJ3snICsgam9pbihmaWVsZHMsICcsICcpICsgJ30nLFxuICB9LFxuICBPYmplY3RGaWVsZDoge1xuICAgIGxlYXZlOiAoeyBuYW1lLCB2YWx1ZSB9KSA9PiBuYW1lICsgJzogJyArIHZhbHVlLFxuICB9LFxuICAvLyBEaXJlY3RpdmVcbiAgRGlyZWN0aXZlOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUsIGFyZ3VtZW50czogYXJncyB9KSA9PlxuICAgICAgJ0AnICsgbmFtZSArIHdyYXAoJygnLCBqb2luKGFyZ3MsICcsICcpLCAnKScpLFxuICB9LFxuICAvLyBUeXBlXG4gIE5hbWVkVHlwZToge1xuICAgIGxlYXZlOiAoeyBuYW1lIH0pID0+IG5hbWUsXG4gIH0sXG4gIExpc3RUeXBlOiB7XG4gICAgbGVhdmU6ICh7IHR5cGUgfSkgPT4gJ1snICsgdHlwZSArICddJyxcbiAgfSxcbiAgTm9uTnVsbFR5cGU6IHtcbiAgICBsZWF2ZTogKHsgdHlwZSB9KSA9PiB0eXBlICsgJyEnLFxuICB9LFxuICAvLyBUeXBlIFN5c3RlbSBEZWZpbml0aW9uc1xuICBTY2hlbWFEZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IGRlc2NyaXB0aW9uLCBkaXJlY3RpdmVzLCBvcGVyYXRpb25UeXBlcyB9KSA9PlxuICAgICAgd3JhcCgnJywgZGVzY3JpcHRpb24sICdcXG4nKSArXG4gICAgICBqb2luKFsnc2NoZW1hJywgam9pbihkaXJlY3RpdmVzLCAnICcpLCBibG9jayhvcGVyYXRpb25UeXBlcyldLCAnICcpLFxuICB9LFxuICBPcGVyYXRpb25UeXBlRGVmaW5pdGlvbjoge1xuICAgIGxlYXZlOiAoeyBvcGVyYXRpb24sIHR5cGUgfSkgPT4gb3BlcmF0aW9uICsgJzogJyArIHR5cGUsXG4gIH0sXG4gIFNjYWxhclR5cGVEZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IGRlc2NyaXB0aW9uLCBuYW1lLCBkaXJlY3RpdmVzIH0pID0+XG4gICAgICB3cmFwKCcnLCBkZXNjcmlwdGlvbiwgJ1xcbicpICtcbiAgICAgIGpvaW4oWydzY2FsYXInLCBuYW1lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyldLCAnICcpLFxuICB9LFxuICBPYmplY3RUeXBlRGVmaW5pdGlvbjoge1xuICAgIGxlYXZlOiAoeyBkZXNjcmlwdGlvbiwgbmFtZSwgaW50ZXJmYWNlcywgZGlyZWN0aXZlcywgZmllbGRzIH0pID0+XG4gICAgICB3cmFwKCcnLCBkZXNjcmlwdGlvbiwgJ1xcbicpICtcbiAgICAgIGpvaW4oXG4gICAgICAgIFtcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICB3cmFwKCdpbXBsZW1lbnRzICcsIGpvaW4oaW50ZXJmYWNlcywgJyAmICcpKSxcbiAgICAgICAgICBqb2luKGRpcmVjdGl2ZXMsICcgJyksXG4gICAgICAgICAgYmxvY2soZmllbGRzKSxcbiAgICAgICAgXSxcbiAgICAgICAgJyAnLFxuICAgICAgKSxcbiAgfSxcbiAgRmllbGREZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IGRlc2NyaXB0aW9uLCBuYW1lLCBhcmd1bWVudHM6IGFyZ3MsIHR5cGUsIGRpcmVjdGl2ZXMgfSkgPT5cbiAgICAgIHdyYXAoJycsIGRlc2NyaXB0aW9uLCAnXFxuJykgK1xuICAgICAgbmFtZSArXG4gICAgICAoaGFzTXVsdGlsaW5lSXRlbXMoYXJncylcbiAgICAgICAgPyB3cmFwKCcoXFxuJywgaW5kZW50KGpvaW4oYXJncywgJ1xcbicpKSwgJ1xcbiknKVxuICAgICAgICA6IHdyYXAoJygnLCBqb2luKGFyZ3MsICcsICcpLCAnKScpKSArXG4gICAgICAnOiAnICtcbiAgICAgIHR5cGUgK1xuICAgICAgd3JhcCgnICcsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSksXG4gIH0sXG4gIElucHV0VmFsdWVEZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IGRlc2NyaXB0aW9uLCBuYW1lLCB0eXBlLCBkZWZhdWx0VmFsdWUsIGRpcmVjdGl2ZXMgfSkgPT5cbiAgICAgIHdyYXAoJycsIGRlc2NyaXB0aW9uLCAnXFxuJykgK1xuICAgICAgam9pbihcbiAgICAgICAgW25hbWUgKyAnOiAnICsgdHlwZSwgd3JhcCgnPSAnLCBkZWZhdWx0VmFsdWUpLCBqb2luKGRpcmVjdGl2ZXMsICcgJyldLFxuICAgICAgICAnICcsXG4gICAgICApLFxuICB9LFxuICBJbnRlcmZhY2VUeXBlRGVmaW5pdGlvbjoge1xuICAgIGxlYXZlOiAoeyBkZXNjcmlwdGlvbiwgbmFtZSwgaW50ZXJmYWNlcywgZGlyZWN0aXZlcywgZmllbGRzIH0pID0+XG4gICAgICB3cmFwKCcnLCBkZXNjcmlwdGlvbiwgJ1xcbicpICtcbiAgICAgIGpvaW4oXG4gICAgICAgIFtcbiAgICAgICAgICAnaW50ZXJmYWNlJyxcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHdyYXAoJ2ltcGxlbWVudHMgJywgam9pbihpbnRlcmZhY2VzLCAnICYgJykpLFxuICAgICAgICAgIGpvaW4oZGlyZWN0aXZlcywgJyAnKSxcbiAgICAgICAgICBibG9jayhmaWVsZHMpLFxuICAgICAgICBdLFxuICAgICAgICAnICcsXG4gICAgICApLFxuICB9LFxuICBVbmlvblR5cGVEZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IGRlc2NyaXB0aW9uLCBuYW1lLCBkaXJlY3RpdmVzLCB0eXBlcyB9KSA9PlxuICAgICAgd3JhcCgnJywgZGVzY3JpcHRpb24sICdcXG4nKSArXG4gICAgICBqb2luKFxuICAgICAgICBbJ3VuaW9uJywgbmFtZSwgam9pbihkaXJlY3RpdmVzLCAnICcpLCB3cmFwKCc9ICcsIGpvaW4odHlwZXMsICcgfCAnKSldLFxuICAgICAgICAnICcsXG4gICAgICApLFxuICB9LFxuICBFbnVtVHlwZURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIG5hbWUsIGRpcmVjdGl2ZXMsIHZhbHVlcyB9KSA9PlxuICAgICAgd3JhcCgnJywgZGVzY3JpcHRpb24sICdcXG4nKSArXG4gICAgICBqb2luKFsnZW51bScsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2sodmFsdWVzKV0sICcgJyksXG4gIH0sXG4gIEVudW1WYWx1ZURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIG5hbWUsIGRpcmVjdGl2ZXMgfSkgPT5cbiAgICAgIHdyYXAoJycsIGRlc2NyaXB0aW9uLCAnXFxuJykgKyBqb2luKFtuYW1lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyldLCAnICcpLFxuICB9LFxuICBJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IGRlc2NyaXB0aW9uLCBuYW1lLCBkaXJlY3RpdmVzLCBmaWVsZHMgfSkgPT5cbiAgICAgIHdyYXAoJycsIGRlc2NyaXB0aW9uLCAnXFxuJykgK1xuICAgICAgam9pbihbJ2lucHV0JywgbmFtZSwgam9pbihkaXJlY3RpdmVzLCAnICcpLCBibG9jayhmaWVsZHMpXSwgJyAnKSxcbiAgfSxcbiAgRGlyZWN0aXZlRGVmaW5pdGlvbjoge1xuICAgIGxlYXZlOiAoeyBkZXNjcmlwdGlvbiwgbmFtZSwgYXJndW1lbnRzOiBhcmdzLCByZXBlYXRhYmxlLCBsb2NhdGlvbnMgfSkgPT5cbiAgICAgIHdyYXAoJycsIGRlc2NyaXB0aW9uLCAnXFxuJykgK1xuICAgICAgJ2RpcmVjdGl2ZSBAJyArXG4gICAgICBuYW1lICtcbiAgICAgIChoYXNNdWx0aWxpbmVJdGVtcyhhcmdzKVxuICAgICAgICA/IHdyYXAoJyhcXG4nLCBpbmRlbnQoam9pbihhcmdzLCAnXFxuJykpLCAnXFxuKScpXG4gICAgICAgIDogd3JhcCgnKCcsIGpvaW4oYXJncywgJywgJyksICcpJykpICtcbiAgICAgIChyZXBlYXRhYmxlID8gJyByZXBlYXRhYmxlJyA6ICcnKSArXG4gICAgICAnIG9uICcgK1xuICAgICAgam9pbihsb2NhdGlvbnMsICcgfCAnKSxcbiAgfSxcbiAgU2NoZW1hRXh0ZW5zaW9uOiB7XG4gICAgbGVhdmU6ICh7IGRpcmVjdGl2ZXMsIG9wZXJhdGlvblR5cGVzIH0pID0+XG4gICAgICBqb2luKFxuICAgICAgICBbJ2V4dGVuZCBzY2hlbWEnLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIGJsb2NrKG9wZXJhdGlvblR5cGVzKV0sXG4gICAgICAgICcgJyxcbiAgICAgICksXG4gIH0sXG4gIFNjYWxhclR5cGVFeHRlbnNpb246IHtcbiAgICBsZWF2ZTogKHsgbmFtZSwgZGlyZWN0aXZlcyB9KSA9PlxuICAgICAgam9pbihbJ2V4dGVuZCBzY2FsYXInLCBuYW1lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyldLCAnICcpLFxuICB9LFxuICBPYmplY3RUeXBlRXh0ZW5zaW9uOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUsIGludGVyZmFjZXMsIGRpcmVjdGl2ZXMsIGZpZWxkcyB9KSA9PlxuICAgICAgam9pbihcbiAgICAgICAgW1xuICAgICAgICAgICdleHRlbmQgdHlwZScsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICB3cmFwKCdpbXBsZW1lbnRzICcsIGpvaW4oaW50ZXJmYWNlcywgJyAmICcpKSxcbiAgICAgICAgICBqb2luKGRpcmVjdGl2ZXMsICcgJyksXG4gICAgICAgICAgYmxvY2soZmllbGRzKSxcbiAgICAgICAgXSxcbiAgICAgICAgJyAnLFxuICAgICAgKSxcbiAgfSxcbiAgSW50ZXJmYWNlVHlwZUV4dGVuc2lvbjoge1xuICAgIGxlYXZlOiAoeyBuYW1lLCBpbnRlcmZhY2VzLCBkaXJlY3RpdmVzLCBmaWVsZHMgfSkgPT5cbiAgICAgIGpvaW4oXG4gICAgICAgIFtcbiAgICAgICAgICAnZXh0ZW5kIGludGVyZmFjZScsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICB3cmFwKCdpbXBsZW1lbnRzICcsIGpvaW4oaW50ZXJmYWNlcywgJyAmICcpKSxcbiAgICAgICAgICBqb2luKGRpcmVjdGl2ZXMsICcgJyksXG4gICAgICAgICAgYmxvY2soZmllbGRzKSxcbiAgICAgICAgXSxcbiAgICAgICAgJyAnLFxuICAgICAgKSxcbiAgfSxcbiAgVW5pb25UeXBlRXh0ZW5zaW9uOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUsIGRpcmVjdGl2ZXMsIHR5cGVzIH0pID0+XG4gICAgICBqb2luKFxuICAgICAgICBbXG4gICAgICAgICAgJ2V4dGVuZCB1bmlvbicsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBqb2luKGRpcmVjdGl2ZXMsICcgJyksXG4gICAgICAgICAgd3JhcCgnPSAnLCBqb2luKHR5cGVzLCAnIHwgJykpLFxuICAgICAgICBdLFxuICAgICAgICAnICcsXG4gICAgICApLFxuICB9LFxuICBFbnVtVHlwZUV4dGVuc2lvbjoge1xuICAgIGxlYXZlOiAoeyBuYW1lLCBkaXJlY3RpdmVzLCB2YWx1ZXMgfSkgPT5cbiAgICAgIGpvaW4oWydleHRlbmQgZW51bScsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2sodmFsdWVzKV0sICcgJyksXG4gIH0sXG4gIElucHV0T2JqZWN0VHlwZUV4dGVuc2lvbjoge1xuICAgIGxlYXZlOiAoeyBuYW1lLCBkaXJlY3RpdmVzLCBmaWVsZHMgfSkgPT5cbiAgICAgIGpvaW4oWydleHRlbmQgaW5wdXQnLCBuYW1lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIGJsb2NrKGZpZWxkcyldLCAnICcpLFxuICB9LFxufTtcbi8qKlxuICogR2l2ZW4gbWF5YmVBcnJheSwgcHJpbnQgYW4gZW1wdHkgc3RyaW5nIGlmIGl0IGlzIG51bGwgb3IgZW1wdHksIG90aGVyd2lzZVxuICogcHJpbnQgYWxsIGl0ZW1zIHRvZ2V0aGVyIHNlcGFyYXRlZCBieSBzZXBhcmF0b3IgaWYgcHJvdmlkZWRcbiAqL1xuXG5mdW5jdGlvbiBqb2luKG1heWJlQXJyYXksIHNlcGFyYXRvciA9ICcnKSB7XG4gIHZhciBfbWF5YmVBcnJheSRmaWx0ZXIkam87XG5cbiAgcmV0dXJuIChfbWF5YmVBcnJheSRmaWx0ZXIkam8gPVxuICAgIG1heWJlQXJyYXkgPT09IG51bGwgfHwgbWF5YmVBcnJheSA9PT0gdm9pZCAwXG4gICAgICA/IHZvaWQgMFxuICAgICAgOiBtYXliZUFycmF5LmZpbHRlcigoeCkgPT4geCkuam9pbihzZXBhcmF0b3IpKSAhPT0gbnVsbCAmJlxuICAgIF9tYXliZUFycmF5JGZpbHRlciRqbyAhPT0gdm9pZCAwXG4gICAgPyBfbWF5YmVBcnJheSRmaWx0ZXIkam9cbiAgICA6ICcnO1xufVxuLyoqXG4gKiBHaXZlbiBhcnJheSwgcHJpbnQgZWFjaCBpdGVtIG9uIGl0cyBvd24gbGluZSwgd3JhcHBlZCBpbiBhbiBpbmRlbnRlZCBgeyB9YCBibG9jay5cbiAqL1xuXG5mdW5jdGlvbiBibG9jayhhcnJheSkge1xuICByZXR1cm4gd3JhcCgne1xcbicsIGluZGVudChqb2luKGFycmF5LCAnXFxuJykpLCAnXFxufScpO1xufVxuLyoqXG4gKiBJZiBtYXliZVN0cmluZyBpcyBub3QgbnVsbCBvciBlbXB0eSwgdGhlbiB3cmFwIHdpdGggc3RhcnQgYW5kIGVuZCwgb3RoZXJ3aXNlIHByaW50IGFuIGVtcHR5IHN0cmluZy5cbiAqL1xuXG5mdW5jdGlvbiB3cmFwKHN0YXJ0LCBtYXliZVN0cmluZywgZW5kID0gJycpIHtcbiAgcmV0dXJuIG1heWJlU3RyaW5nICE9IG51bGwgJiYgbWF5YmVTdHJpbmcgIT09ICcnXG4gICAgPyBzdGFydCArIG1heWJlU3RyaW5nICsgZW5kXG4gICAgOiAnJztcbn1cblxuZnVuY3Rpb24gaW5kZW50KHN0cikge1xuICByZXR1cm4gd3JhcCgnICAnLCBzdHIucmVwbGFjZSgvXFxuL2csICdcXG4gICcpKTtcbn1cblxuZnVuY3Rpb24gaGFzTXVsdGlsaW5lSXRlbXMobWF5YmVBcnJheSkge1xuICB2YXIgX21heWJlQXJyYXkkc29tZTtcblxuICAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuXG4gIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAoX21heWJlQXJyYXkkc29tZSA9XG4gICAgbWF5YmVBcnJheSA9PT0gbnVsbCB8fCBtYXliZUFycmF5ID09PSB2b2lkIDBcbiAgICAgID8gdm9pZCAwXG4gICAgICA6IG1heWJlQXJyYXkuc29tZSgoc3RyKSA9PiBzdHIuaW5jbHVkZXMoJ1xcbicpKSkgIT09IG51bGwgJiZcbiAgICBfbWF5YmVBcnJheSRzb21lICE9PSB2b2lkIDBcbiAgICA/IF9tYXliZUFycmF5JHNvbWVcbiAgICA6IGZhbHNlO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/printer.mjs\n");
|
757 |
|
758 | }),
|
759 |
|
760 | "../../../node_modules/graphql/language/source.mjs":
|
761 |
|
762 |
|
763 |
|
764 |
|
765 | (function(module, __webpack_exports__, __webpack_require__) {
|
766 |
|
767 | "use strict";
|
768 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Source\", function() { return Source; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSource\", function() { return isSource; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/instanceOf.mjs */ \"../../../node_modules/graphql/jsutils/instanceOf.mjs\");\n\n\n\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nclass Source {\n constructor(\n body,\n name = 'GraphQL request',\n locationOffset = {\n line: 1,\n column: 1,\n },\n ) {\n typeof body === 'string' ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(false, `Body must be a string. Received: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(body)}.`);\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n 'line in locationOffset is 1-indexed and must be positive.',\n );\n this.locationOffset.column > 0 ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n 'column in locationOffset is 1-indexed and must be positive.',\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'Source';\n }\n}\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\nfunction isSource(source) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_2__[\"instanceOf\"])(source, Source);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2Uvc291cmNlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3NvdXJjZS5tanM/Mzc5MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXZBc3NlcnQgfSBmcm9tICcuLi9qc3V0aWxzL2RldkFzc2VydC5tanMnO1xuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW5zdGFuY2VPZiB9IGZyb20gJy4uL2pzdXRpbHMvaW5zdGFuY2VPZi5tanMnO1xuXG4vKipcbiAqIEEgcmVwcmVzZW50YXRpb24gb2Ygc291cmNlIGlucHV0IHRvIEdyYXBoUUwuIFRoZSBgbmFtZWAgYW5kIGBsb2NhdGlvbk9mZnNldGAgcGFyYW1ldGVycyBhcmVcbiAqIG9wdGlvbmFsLCBidXQgdGhleSBhcmUgdXNlZnVsIGZvciBjbGllbnRzIHdobyBzdG9yZSBHcmFwaFFMIGRvY3VtZW50cyBpbiBzb3VyY2UgZmlsZXMuXG4gKiBGb3IgZXhhbXBsZSwgaWYgdGhlIEdyYXBoUUwgaW5wdXQgc3RhcnRzIGF0IGxpbmUgNDAgaW4gYSBmaWxlIG5hbWVkIGBGb28uZ3JhcGhxbGAsIGl0IG1pZ2h0XG4gKiBiZSB1c2VmdWwgZm9yIGBuYW1lYCB0byBiZSBgXCJGb28uZ3JhcGhxbFwiYCBhbmQgbG9jYXRpb24gdG8gYmUgYHsgbGluZTogNDAsIGNvbHVtbjogMSB9YC5cbiAqIFRoZSBgbGluZWAgYW5kIGBjb2x1bW5gIHByb3BlcnRpZXMgaW4gYGxvY2F0aW9uT2Zmc2V0YCBhcmUgMS1pbmRleGVkLlxuICovXG5leHBvcnQgY2xhc3MgU291cmNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgYm9keSxcbiAgICBuYW1lID0gJ0dyYXBoUUwgcmVxdWVzdCcsXG4gICAgbG9jYXRpb25PZmZzZXQgPSB7XG4gICAgICBsaW5lOiAxLFxuICAgICAgY29sdW1uOiAxLFxuICAgIH0sXG4gICkge1xuICAgIHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJyB8fFxuICAgICAgZGV2QXNzZXJ0KGZhbHNlLCBgQm9keSBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZDogJHtpbnNwZWN0KGJvZHkpfS5gKTtcbiAgICB0aGlzLmJvZHkgPSBib2R5O1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5sb2NhdGlvbk9mZnNldCA9IGxvY2F0aW9uT2Zmc2V0O1xuICAgIHRoaXMubG9jYXRpb25PZmZzZXQubGluZSA+IDAgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgICdsaW5lIGluIGxvY2F0aW9uT2Zmc2V0IGlzIDEtaW5kZXhlZCBhbmQgbXVzdCBiZSBwb3NpdGl2ZS4nLFxuICAgICAgKTtcbiAgICB0aGlzLmxvY2F0aW9uT2Zmc2V0LmNvbHVtbiA+IDAgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgICdjb2x1bW4gaW4gbG9jYXRpb25PZmZzZXQgaXMgMS1pbmRleGVkIGFuZCBtdXN0IGJlIHBvc2l0aXZlLicsXG4gICAgICApO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnU291cmNlJztcbiAgfVxufVxuLyoqXG4gKiBUZXN0IGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIFNvdXJjZSBvYmplY3QuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU291cmNlKHNvdXJjZSkge1xuICByZXR1cm4gaW5zdGFuY2VPZihzb3VyY2UsIFNvdXJjZSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/source.mjs\n");
|
769 |
|
770 | }),
|
771 |
|
772 | "../../../node_modules/graphql/language/tokenKind.mjs":
|
773 |
|
774 |
|
775 |
|
776 |
|
777 | (function(module, __webpack_exports__, __webpack_require__) {
|
778 |
|
779 | "use strict";
|
780 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TokenKind\", function() { return TokenKind; });\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nlet TokenKind;\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n\n(function (TokenKind) {\n TokenKind['SOF'] = '<SOF>';\n TokenKind['EOF'] = '<EOF>';\n TokenKind['BANG'] = '!';\n TokenKind['DOLLAR'] = '$';\n TokenKind['AMP'] = '&';\n TokenKind['PAREN_L'] = '(';\n TokenKind['PAREN_R'] = ')';\n TokenKind['SPREAD'] = '...';\n TokenKind['COLON'] = ':';\n TokenKind['EQUALS'] = '=';\n TokenKind['AT'] = '@';\n TokenKind['BRACKET_L'] = '[';\n TokenKind['BRACKET_R'] = ']';\n TokenKind['BRACE_L'] = '{';\n TokenKind['PIPE'] = '|';\n TokenKind['BRACE_R'] = '}';\n TokenKind['NAME'] = 'Name';\n TokenKind['INT'] = 'Int';\n TokenKind['FLOAT'] = 'Float';\n TokenKind['STRING'] = 'String';\n TokenKind['BLOCK_STRING'] = 'BlockString';\n TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (TokenKind = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvdG9rZW5LaW5kLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3Rva2VuS2luZC5tanM/NDFkMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuIGV4cG9ydGVkIGVudW0gZGVzY3JpYmluZyB0aGUgZGlmZmVyZW50IGtpbmRzIG9mIHRva2VucyB0aGF0IHRoZVxuICogbGV4ZXIgZW1pdHMuXG4gKi9cbmV4cG9ydCBsZXQgVG9rZW5LaW5kO1xuLyoqXG4gKiBUaGUgZW51bSB0eXBlIHJlcHJlc2VudGluZyB0aGUgdG9rZW4ga2luZHMgdmFsdWVzLlxuICpcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYFRva2VuS2luZGAuIFdpbGwgYmUgcmVtb3ZlIGluIHYxNy5cbiAqL1xuXG4oZnVuY3Rpb24gKFRva2VuS2luZCkge1xuICBUb2tlbktpbmRbJ1NPRiddID0gJzxTT0Y+JztcbiAgVG9rZW5LaW5kWydFT0YnXSA9ICc8RU9GPic7XG4gIFRva2VuS2luZFsnQkFORyddID0gJyEnO1xuICBUb2tlbktpbmRbJ0RPTExBUiddID0gJyQnO1xuICBUb2tlbktpbmRbJ0FNUCddID0gJyYnO1xuICBUb2tlbktpbmRbJ1BBUkVOX0wnXSA9ICcoJztcbiAgVG9rZW5LaW5kWydQQVJFTl9SJ10gPSAnKSc7XG4gIFRva2VuS2luZFsnU1BSRUFEJ10gPSAnLi4uJztcbiAgVG9rZW5LaW5kWydDT0xPTiddID0gJzonO1xuICBUb2tlbktpbmRbJ0VRVUFMUyddID0gJz0nO1xuICBUb2tlbktpbmRbJ0FUJ10gPSAnQCc7XG4gIFRva2VuS2luZFsnQlJBQ0tFVF9MJ10gPSAnWyc7XG4gIFRva2VuS2luZFsnQlJBQ0tFVF9SJ10gPSAnXSc7XG4gIFRva2VuS2luZFsnQlJBQ0VfTCddID0gJ3snO1xuICBUb2tlbktpbmRbJ1BJUEUnXSA9ICd8JztcbiAgVG9rZW5LaW5kWydCUkFDRV9SJ10gPSAnfSc7XG4gIFRva2VuS2luZFsnTkFNRSddID0gJ05hbWUnO1xuICBUb2tlbktpbmRbJ0lOVCddID0gJ0ludCc7XG4gIFRva2VuS2luZFsnRkxPQVQnXSA9ICdGbG9hdCc7XG4gIFRva2VuS2luZFsnU1RSSU5HJ10gPSAnU3RyaW5nJztcbiAgVG9rZW5LaW5kWydCTE9DS19TVFJJTkcnXSA9ICdCbG9ja1N0cmluZyc7XG4gIFRva2VuS2luZFsnQ09NTUVOVCddID0gJ0NvbW1lbnQnO1xufSkoVG9rZW5LaW5kIHx8IChUb2tlbktpbmQgPSB7fSkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/tokenKind.mjs\n");
|
781 |
|
782 | }),
|
783 |
|
784 | "../../../node_modules/graphql/language/visitor.mjs":
|
785 |
|
786 |
|
787 |
|
788 |
|
789 | (function(module, __webpack_exports__, __webpack_require__) {
|
790 |
|
791 | "use strict";
|
792 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BREAK\", function() { return BREAK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visit\", function() { return visit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitInParallel\", function() { return visitInParallel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnterLeaveForKind\", function() { return getEnterLeaveForKind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVisitFn\", function() { return getVisitFn; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _ast_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n\n\n\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nconst BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\n\nfunction visit(root, visitor, visitorKeys = _ast_mjs__WEBPACK_IMPORTED_MODULE_2__[\"QueryDocumentKeys\"]) {\n const enterLeaveMap = new Map();\n\n for (const kind of Object.values(_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"])) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n /* eslint-disable no-undef-init */\n\n let stack = undefined;\n let inArray = Array.isArray(root);\n let keys = [root];\n let index = -1;\n let edits = [];\n let node = root;\n let key = undefined;\n let parent = undefined;\n const path = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n let editOffset = 0;\n\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = Object.defineProperties(\n {},\n Object.getOwnPropertyDescriptors(node),\n );\n\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent) {\n key = inArray ? index : keys[index];\n node = parent[key];\n\n if (node === null || node === undefined) {\n continue;\n }\n\n path.push(key);\n }\n\n let result;\n\n if (!Array.isArray(node)) {\n var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n Object(_ast_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isNode\"])(node) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(false, `Invalid AST Node: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(node)}.`);\n const visitFn = isLeaving\n ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get === void 0\n ? void 0\n : _enterLeaveMap$get.leave\n : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get2 === void 0\n ? void 0\n : _enterLeaveMap$get2.enter;\n result =\n visitFn === null || visitFn === void 0\n ? void 0\n : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (Object(_ast_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isNode\"])(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _node$kind;\n\n stack = {\n inArray,\n index,\n keys,\n edits,\n prev: stack,\n };\n inArray = Array.isArray(node);\n keys = inArray\n ? node\n : (_node$kind = visitorKeys[node.kind]) !== null &&\n _node$kind !== void 0\n ? _node$kind\n : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits[edits.length - 1][1];\n }\n\n return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nfunction visitInParallel(visitors) {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"])) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor || (hasVisitor = enter != null || leave != null);\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave = {\n enter(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _enterList$i;\n\n const result =\n (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n ? void 0\n : _enterList$i.apply(visitors[i], args);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n\n leave(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _leaveList$i;\n\n const result =\n (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n ? void 0\n : _leaveList$i.apply(visitors[i], args);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nfunction getEnterLeaveForKind(visitor, kind) {\n const kindVisitor = visitor[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return {\n enter: kindVisitor,\n leave: undefined,\n };\n } // { enter() {}, leave() {} }\n\n return {\n enter: visitor.enter,\n leave: visitor.leave,\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nfunction getVisitFn(visitor, kind, isLeaving) {\n const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n return isLeaving ? leave : enter;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvdmlzaXRvci5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS92aXNpdG9yLm1qcz8yYTU1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRldkFzc2VydCB9IGZyb20gJy4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qcyc7XG5pbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBpc05vZGUsIFF1ZXJ5RG9jdW1lbnRLZXlzIH0gZnJvbSAnLi9hc3QubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuL2tpbmRzLm1qcyc7XG4vKipcbiAqIEEgdmlzaXRvciBpcyBwcm92aWRlZCB0byB2aXNpdCwgaXQgY29udGFpbnMgdGhlIGNvbGxlY3Rpb24gb2ZcbiAqIHJlbGV2YW50IGZ1bmN0aW9ucyB0byBiZSBjYWxsZWQgZHVyaW5nIHRoZSB2aXNpdG9yJ3MgdHJhdmVyc2FsLlxuICovXG5cbmV4cG9ydCBjb25zdCBCUkVBSyA9IE9iamVjdC5mcmVlemUoe30pO1xuLyoqXG4gKiB2aXNpdCgpIHdpbGwgd2FsayB0aHJvdWdoIGFuIEFTVCB1c2luZyBhIGRlcHRoLWZpcnN0IHRyYXZlcnNhbCwgY2FsbGluZ1xuICogdGhlIHZpc2l0b3IncyBlbnRlciBmdW5jdGlvbiBhdCBlYWNoIG5vZGUgaW4gdGhlIHRyYXZlcnNhbCwgYW5kIGNhbGxpbmcgdGhlXG4gKiBsZWF2ZSBmdW5jdGlvbiBhZnRlciB2aXNpdGluZyB0aGF0IG5vZGUgYW5kIGFsbCBvZiBpdHMgY2hpbGQgbm9kZXMuXG4gKlxuICogQnkgcmV0dXJuaW5nIGRpZmZlcmVudCB2YWx1ZXMgZnJvbSB0aGUgZW50ZXIgYW5kIGxlYXZlIGZ1bmN0aW9ucywgdGhlXG4gKiBiZWhhdmlvciBvZiB0aGUgdmlzaXRvciBjYW4gYmUgYWx0ZXJlZCwgaW5jbHVkaW5nIHNraXBwaW5nIG92ZXIgYSBzdWItdHJlZSBvZlxuICogdGhlIEFTVCAoYnkgcmV0dXJuaW5nIGZhbHNlKSwgZWRpdGluZyB0aGUgQVNUIGJ5IHJldHVybmluZyBhIHZhbHVlIG9yIG51bGxcbiAqIHRvIHJlbW92ZSB0aGUgdmFsdWUsIG9yIHRvIHN0b3AgdGhlIHdob2xlIHRyYXZlcnNhbCBieSByZXR1cm5pbmcgQlJFQUsuXG4gKlxuICogV2hlbiB1c2luZyB2aXNpdCgpIHRvIGVkaXQgYW4gQVNULCB0aGUgb3JpZ2luYWwgQVNUIHdpbGwgbm90IGJlIG1vZGlmaWVkLCBhbmRcbiAqIGEgbmV3IHZlcnNpb24gb2YgdGhlIEFTVCB3aXRoIHRoZSBjaGFuZ2VzIGFwcGxpZWQgd2lsbCBiZSByZXR1cm5lZCBmcm9tIHRoZVxuICogdmlzaXQgZnVuY3Rpb24uXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IGVkaXRlZEFTVCA9IHZpc2l0KGFzdCwge1xuICogICBlbnRlcihub2RlLCBrZXksIHBhcmVudCwgcGF0aCwgYW5jZXN0b3JzKSB7XG4gKiAgICAgLy8gQHJldHVyblxuICogICAgIC8vICAgdW5kZWZpbmVkOiBubyBhY3Rpb25cbiAqICAgICAvLyAgIGZhbHNlOiBza2lwIHZpc2l0aW5nIHRoaXMgbm9kZVxuICogICAgIC8vICAgdmlzaXRvci5CUkVBSzogc3RvcCB2aXNpdGluZyBhbHRvZ2V0aGVyXG4gKiAgICAgLy8gICBudWxsOiBkZWxldGUgdGhpcyBub2RlXG4gKiAgICAgLy8gICBhbnkgdmFsdWU6IHJlcGxhY2UgdGhpcyBub2RlIHdpdGggdGhlIHJldHVybmVkIHZhbHVlXG4gKiAgIH0sXG4gKiAgIGxlYXZlKG5vZGUsIGtleSwgcGFyZW50LCBwYXRoLCBhbmNlc3RvcnMpIHtcbiAqICAgICAvLyBAcmV0dXJuXG4gKiAgICAgLy8gICB1bmRlZmluZWQ6IG5vIGFjdGlvblxuICogICAgIC8vICAgZmFsc2U6IG5vIGFjdGlvblxuICogICAgIC8vICAgdmlzaXRvci5CUkVBSzogc3RvcCB2aXNpdGluZyBhbHRvZ2V0aGVyXG4gKiAgICAgLy8gICBudWxsOiBkZWxldGUgdGhpcyBub2RlXG4gKiAgICAgLy8gICBhbnkgdmFsdWU6IHJlcGxhY2UgdGhpcyBub2RlIHdpdGggdGhlIHJldHVybmVkIHZhbHVlXG4gKiAgIH1cbiAqIH0pO1xuICogYGBgXG4gKlxuICogQWx0ZXJuYXRpdmVseSB0byBwcm92aWRpbmcgZW50ZXIoKSBhbmQgbGVhdmUoKSBmdW5jdGlvbnMsIGEgdmlzaXRvciBjYW5cbiAqIGluc3RlYWQgcHJvdmlkZSBmdW5jdGlvbnMgbmFtZWQgdGhlIHNhbWUgYXMgdGhlIGtpbmRzIG9mIEFTVCBub2Rlcywgb3JcbiAqIGVudGVyL2xlYXZlIHZpc2l0b3JzIGF0IGEgbmFtZWQga2V5LCBsZWFkaW5nIHRvIHRocmVlIHBlcm11dGF0aW9ucyBvZiB0aGVcbiAqIHZpc2l0b3IgQVBJOlxuICpcbiAqIDEpIE5hbWVkIHZpc2l0b3JzIHRyaWdnZXJlZCB3aGVuIGVudGVyaW5nIGEgbm9kZSBvZiBhIHNwZWNpZmljIGtpbmQuXG4gKlxuICogYGBgdHNcbiAqIHZpc2l0KGFzdCwge1xuICogICBLaW5kKG5vZGUpIHtcbiAqICAgICAvLyBlbnRlciB0aGUgXCJLaW5kXCIgbm9kZVxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogMikgTmFtZWQgdmlzaXRvcnMgdGhhdCB0cmlnZ2VyIHVwb24gZW50ZXJpbmcgYW5kIGxlYXZpbmcgYSBub2RlIG9mIGEgc3BlY2lmaWMga2luZC5cbiAqXG4gKiBgYGB0c1xuICogdmlzaXQoYXN0LCB7XG4gKiAgIEtpbmQ6IHtcbiAqICAgICBlbnRlcihub2RlKSB7XG4gKiAgICAgICAvLyBlbnRlciB0aGUgXCJLaW5kXCIgbm9kZVxuICogICAgIH1cbiAqICAgICBsZWF2ZShub2RlKSB7XG4gKiAgICAgICAvLyBsZWF2ZSB0aGUgXCJLaW5kXCIgbm9kZVxuICogICAgIH1cbiAqICAgfVxuICogfSlcbiAqIGBgYFxuICpcbiAqIDMpIEdlbmVyaWMgdmlzaXRvcnMgdGhhdCB0cmlnZ2VyIHVwb24gZW50ZXJpbmcgYW5kIGxlYXZpbmcgYW55IG5vZGUuXG4gKlxuICogYGBgdHNcbiAqIHZpc2l0KGFzdCwge1xuICogICBlbnRlcihub2RlKSB7XG4gKiAgICAgLy8gZW50ZXIgYW55IG5vZGVcbiAqICAgfSxcbiAqICAgbGVhdmUobm9kZSkge1xuICogICAgIC8vIGxlYXZlIGFueSBub2RlXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdmlzaXQocm9vdCwgdmlzaXRvciwgdmlzaXRvcktleXMgPSBRdWVyeURvY3VtZW50S2V5cykge1xuICBjb25zdCBlbnRlckxlYXZlTWFwID0gbmV3IE1hcCgpO1xuXG4gIGZvciAoY29uc3Qga2luZCBvZiBPYmplY3QudmFsdWVzKEtpbmQpKSB7XG4gICAgZW50ZXJMZWF2ZU1hcC5zZXQoa2luZCwgZ2V0RW50ZXJMZWF2ZUZvcktpbmQodmlzaXRvciwga2luZCkpO1xuICB9XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmLWluaXQgKi9cblxuICBsZXQgc3RhY2sgPSB1bmRlZmluZWQ7XG4gIGxldCBpbkFycmF5ID0gQXJyYXkuaXNBcnJheShyb290KTtcbiAgbGV0IGtleXMgPSBbcm9vdF07XG4gIGxldCBpbmRleCA9IC0xO1xuICBsZXQgZWRpdHMgPSBbXTtcbiAgbGV0IG5vZGUgPSByb290O1xuICBsZXQga2V5ID0gdW5kZWZpbmVkO1xuICBsZXQgcGFyZW50ID0gdW5kZWZpbmVkO1xuICBjb25zdCBwYXRoID0gW107XG4gIGNvbnN0IGFuY2VzdG9ycyA9IFtdO1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVuZGVmLWluaXQgKi9cblxuICBkbyB7XG4gICAgaW5kZXgrKztcbiAgICBjb25zdCBpc0xlYXZpbmcgPSBpbmRleCA9PT0ga2V5cy5sZW5ndGg7XG4gICAgY29uc3QgaXNFZGl0ZWQgPSBpc0xlYXZpbmcgJiYgZWRpdHMubGVuZ3RoICE9PSAwO1xuXG4gICAgaWYgKGlzTGVhdmluZykge1xuICAgICAga2V5ID0gYW5jZXN0b3JzLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcbiAgICAgIG5vZGUgPSBwYXJlbnQ7XG4gICAgICBwYXJlbnQgPSBhbmNlc3RvcnMucG9wKCk7XG5cbiAgICAgIGlmIChpc0VkaXRlZCkge1xuICAgICAgICBpZiAoaW5BcnJheSkge1xuICAgICAgICAgIG5vZGUgPSBub2RlLnNsaWNlKCk7XG4gICAgICAgICAgbGV0IGVkaXRPZmZzZXQgPSAwO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBbZWRpdEtleSwgZWRpdFZhbHVlXSBvZiBlZGl0cykge1xuICAgICAgICAgICAgY29uc3QgYXJyYXlLZXkgPSBlZGl0S2V5IC0gZWRpdE9mZnNldDtcblxuICAgICAgICAgICAgaWYgKGVkaXRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICBub2RlLnNwbGljZShhcnJheUtleSwgMSk7XG4gICAgICAgICAgICAgIGVkaXRPZmZzZXQrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5vZGVbYXJyYXlLZXldID0gZWRpdFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG5vZGUpLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IFtlZGl0S2V5LCBlZGl0VmFsdWVdIG9mIGVkaXRzKSB7XG4gICAgICAgICAgICBub2RlW2VkaXRLZXldID0gZWRpdFZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpbmRleCA9IHN0YWNrLmluZGV4O1xuICAgICAga2V5cyA9IHN0YWNrLmtleXM7XG4gICAgICBlZGl0cyA9IHN0YWNrLmVkaXRzO1xuICAgICAgaW5BcnJheSA9IHN0YWNrLmluQXJyYXk7XG4gICAgICBzdGFjayA9IHN0YWNrLnByZXY7XG4gICAgfSBlbHNlIGlmIChwYXJlbnQpIHtcbiAgICAgIGtleSA9IGluQXJyYXkgPyBpbmRleCA6IGtleXNbaW5kZXhdO1xuICAgICAgbm9kZSA9IHBhcmVudFtrZXldO1xuXG4gICAgICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHBhdGgucHVzaChrZXkpO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQ7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICAgIHZhciBfZW50ZXJMZWF2ZU1hcCRnZXQsIF9lbnRlckxlYXZlTWFwJGdldDI7XG5cbiAgICAgIGlzTm9kZShub2RlKSB8fCBkZXZBc3NlcnQoZmFsc2UsIGBJbnZhbGlkIEFTVCBOb2RlOiAke2luc3BlY3Qobm9kZSl9LmApO1xuICAgICAgY29uc3QgdmlzaXRGbiA9IGlzTGVhdmluZ1xuICAgICAgICA/IChfZW50ZXJMZWF2ZU1hcCRnZXQgPSBlbnRlckxlYXZlTWFwLmdldChub2RlLmtpbmQpKSA9PT0gbnVsbCB8fFxuICAgICAgICAgIF9lbnRlckxlYXZlTWFwJGdldCA9PT0gdm9pZCAwXG4gICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICA6IF9lbnRlckxlYXZlTWFwJGdldC5sZWF2ZVxuICAgICAgICA6IChfZW50ZXJMZWF2ZU1hcCRnZXQyID0gZW50ZXJMZWF2ZU1hcC5nZXQobm9kZS5raW5kKSkgPT09IG51bGwgfHxcbiAgICAgICAgICBfZW50ZXJMZWF2ZU1hcCRnZXQyID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiBfZW50ZXJMZWF2ZU1hcCRnZXQyLmVudGVyO1xuICAgICAgcmVzdWx0ID1cbiAgICAgICAgdmlzaXRGbiA9PT0gbnVsbCB8fCB2aXNpdEZuID09PSB2b2lkIDBcbiAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgIDogdmlzaXRGbi5jYWxsKHZpc2l0b3IsIG5vZGUsIGtleSwgcGFyZW50LCBwYXRoLCBhbmNlc3RvcnMpO1xuXG4gICAgICBpZiAocmVzdWx0ID09PSBCUkVBSykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKCFpc0xlYXZpbmcpIHtcbiAgICAgICAgICBwYXRoLnBvcCgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVkaXRzLnB1c2goW2tleSwgcmVzdWx0XSk7XG5cbiAgICAgICAgaWYgKCFpc0xlYXZpbmcpIHtcbiAgICAgICAgICBpZiAoaXNOb2RlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIG5vZGUgPSByZXN1bHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhdGgucG9wKCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgJiYgaXNFZGl0ZWQpIHtcbiAgICAgIGVkaXRzLnB1c2goW2tleSwgbm9kZV0pO1xuICAgIH1cblxuICAgIGlmIChpc0xlYXZpbmcpIHtcbiAgICAgIHBhdGgucG9wKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfbm9kZSRraW5kO1xuXG4gICAgICBzdGFjayA9IHtcbiAgICAgICAgaW5BcnJheSxcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIGtleXMsXG4gICAgICAgIGVkaXRzLFxuICAgICAgICBwcmV2OiBzdGFjayxcbiAgICAgIH07XG4gICAgICBpbkFycmF5ID0gQXJyYXkuaXNBcnJheShub2RlKTtcbiAgICAgIGtleXMgPSBpbkFycmF5XG4gICAgICAgID8gbm9kZVxuICAgICAgICA6IChfbm9kZSRraW5kID0gdmlzaXRvcktleXNbbm9kZS5raW5kXSkgIT09IG51bGwgJiZcbiAgICAgICAgICBfbm9kZSRraW5kICE9PSB2b2lkIDBcbiAgICAgICAgPyBfbm9kZSRraW5kXG4gICAgICAgIDogW107XG4gICAgICBpbmRleCA9IC0xO1xuICAgICAgZWRpdHMgPSBbXTtcblxuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICBhbmNlc3RvcnMucHVzaChwYXJlbnQpO1xuICAgICAgfVxuXG4gICAgICBwYXJlbnQgPSBub2RlO1xuICAgIH1cbiAgfSB3aGlsZSAoc3RhY2sgIT09IHVuZGVmaW5lZCk7XG5cbiAgaWYgKGVkaXRzLmxlbmd0aCAhPT0gMCkge1xuICAgIC8vIE5ldyByb290XG4gICAgcmV0dXJuIGVkaXRzW2VkaXRzLmxlbmd0aCAtIDFdWzFdO1xuICB9XG5cbiAgcmV0dXJuIHJvb3Q7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgdmlzaXRvciBpbnN0YW5jZSB3aGljaCBkZWxlZ2F0ZXMgdG8gbWFueSB2aXNpdG9ycyB0byBydW4gaW5cbiAqIHBhcmFsbGVsLiBFYWNoIHZpc2l0b3Igd2lsbCBiZSB2aXNpdGVkIGZvciBlYWNoIG5vZGUgYmVmb3JlIG1vdmluZyBvbi5cbiAqXG4gKiBJZiBhIHByaW9yIHZpc2l0b3IgZWRpdHMgYSBub2RlLCBubyBmb2xsb3dpbmcgdmlzaXRvcnMgd2lsbCBzZWUgdGhhdCBub2RlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdEluUGFyYWxsZWwodmlzaXRvcnMpIHtcbiAgY29uc3Qgc2tpcHBpbmcgPSBuZXcgQXJyYXkodmlzaXRvcnMubGVuZ3RoKS5maWxsKG51bGwpO1xuICBjb25zdCBtZXJnZWRWaXNpdG9yID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IGtpbmQgb2YgT2JqZWN0LnZhbHVlcyhLaW5kKSkge1xuICAgIGxldCBoYXNWaXNpdG9yID0gZmFsc2U7XG4gICAgY29uc3QgZW50ZXJMaXN0ID0gbmV3IEFycmF5KHZpc2l0b3JzLmxlbmd0aCkuZmlsbCh1bmRlZmluZWQpO1xuICAgIGNvbnN0IGxlYXZlTGlzdCA9IG5ldyBBcnJheSh2aXNpdG9ycy5sZW5ndGgpLmZpbGwodW5kZWZpbmVkKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlzaXRvcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGNvbnN0IHsgZW50ZXIsIGxlYXZlIH0gPSBnZXRFbnRlckxlYXZlRm9yS2luZCh2aXNpdG9yc1tpXSwga2luZCk7XG4gICAgICBoYXNWaXNpdG9yIHx8IChoYXNWaXNpdG9yID0gZW50ZXIgIT0gbnVsbCB8fCBsZWF2ZSAhPSBudWxsKTtcbiAgICAgIGVudGVyTGlzdFtpXSA9IGVudGVyO1xuICAgICAgbGVhdmVMaXN0W2ldID0gbGVhdmU7XG4gICAgfVxuXG4gICAgaWYgKCFoYXNWaXNpdG9yKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXJnZWRFbnRlckxlYXZlID0ge1xuICAgICAgZW50ZXIoLi4uYXJncykge1xuICAgICAgICBjb25zdCBub2RlID0gYXJnc1swXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZpc2l0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKHNraXBwaW5nW2ldID09PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgX2VudGVyTGlzdCRpO1xuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICAgICAgICAoX2VudGVyTGlzdCRpID0gZW50ZXJMaXN0W2ldKSA9PT0gbnVsbCB8fCBfZW50ZXJMaXN0JGkgPT09IHZvaWQgMFxuICAgICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgICAgOiBfZW50ZXJMaXN0JGkuYXBwbHkodmlzaXRvcnNbaV0sIGFyZ3MpO1xuXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBza2lwcGluZ1tpXSA9IG5vZGU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gQlJFQUspIHtcbiAgICAgICAgICAgICAgc2tpcHBpbmdbaV0gPSBCUkVBSztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIGxlYXZlKC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGFyZ3NbMF07XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aXNpdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChza2lwcGluZ1tpXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIF9sZWF2ZUxpc3QkaTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgICAgICAgKF9sZWF2ZUxpc3QkaSA9IGxlYXZlTGlzdFtpXSkgPT09IG51bGwgfHwgX2xlYXZlTGlzdCRpID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgICAgIDogX2xlYXZlTGlzdCRpLmFwcGx5KHZpc2l0b3JzW2ldLCBhcmdzKTtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gQlJFQUspIHtcbiAgICAgICAgICAgICAgc2tpcHBpbmdbaV0gPSBCUkVBSztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgcmVzdWx0ICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoc2tpcHBpbmdbaV0gPT09IG5vZGUpIHtcbiAgICAgICAgICAgIHNraXBwaW5nW2ldID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgICBtZXJnZWRWaXNpdG9yW2tpbmRdID0gbWVyZ2VkRW50ZXJMZWF2ZTtcbiAgfVxuXG4gIHJldHVybiBtZXJnZWRWaXNpdG9yO1xufVxuLyoqXG4gKiBHaXZlbiBhIHZpc2l0b3IgaW5zdGFuY2UgYW5kIGEgbm9kZSBraW5kLCByZXR1cm4gRW50ZXJMZWF2ZVZpc2l0b3IgZm9yIHRoYXQga2luZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50ZXJMZWF2ZUZvcktpbmQodmlzaXRvciwga2luZCkge1xuICBjb25zdCBraW5kVmlzaXRvciA9IHZpc2l0b3Jba2luZF07XG5cbiAgaWYgKHR5cGVvZiBraW5kVmlzaXRvciA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyB7IEtpbmQ6IHsgZW50ZXIoKSB7fSwgbGVhdmUoKSB7fSB9IH1cbiAgICByZXR1cm4ga2luZFZpc2l0b3I7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGtpbmRWaXNpdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8geyBLaW5kKCkge30gfVxuICAgIHJldHVybiB7XG4gICAgICBlbnRlcjoga2luZFZpc2l0b3IsXG4gICAgICBsZWF2ZTogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0gLy8geyBlbnRlcigpIHt9LCBsZWF2ZSgpIHt9IH1cblxuICByZXR1cm4ge1xuICAgIGVudGVyOiB2aXNpdG9yLmVudGVyLFxuICAgIGxlYXZlOiB2aXNpdG9yLmxlYXZlLFxuICB9O1xufVxuLyoqXG4gKiBHaXZlbiBhIHZpc2l0b3IgaW5zdGFuY2UsIGlmIGl0IGlzIGxlYXZpbmcgb3Igbm90LCBhbmQgYSBub2RlIGtpbmQsIHJldHVyblxuICogdGhlIGZ1bmN0aW9uIHRoZSB2aXNpdG9yIHJ1bnRpbWUgc2hvdWxkIGNhbGwuXG4gKlxuICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgZ2V0RW50ZXJMZWF2ZUZvcktpbmRgIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTdcbiAqL1xuXG4vKiBjOCBpZ25vcmUgbmV4dCA4ICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaXNpdEZuKHZpc2l0b3IsIGtpbmQsIGlzTGVhdmluZykge1xuICBjb25zdCB7IGVudGVyLCBsZWF2ZSB9ID0gZ2V0RW50ZXJMZWF2ZUZvcktpbmQodmlzaXRvciwga2luZCk7XG4gIHJldHVybiBpc0xlYXZpbmcgPyBsZWF2ZSA6IGVudGVyO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/visitor.mjs\n");
|
793 |
|
794 | }),
|
795 |
|
796 | "../../../node_modules/graphql/type/assertName.mjs":
|
797 |
|
798 |
|
799 |
|
800 |
|
801 | (function(module, __webpack_exports__, __webpack_require__) {
|
802 |
|
803 | "use strict";
|
804 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertName\", function() { return assertName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertEnumValueName\", function() { return assertEnumValueName; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/characterClasses.mjs */ \"../../../node_modules/graphql/language/characterClasses.mjs\");\n\n\n\n/**\n * Upholds the spec rules about naming.\n */\n\nfunction assertName(name) {\n name != null || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(false, 'Must provide name.');\n typeof name === 'string' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(false, 'Expected name to be a string.');\n\n if (name.length === 0) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"]('Expected name to be a non-empty string.');\n }\n\n for (let i = 1; i < name.length; ++i) {\n if (!Object(_language_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isNameContinue\"])(name.charCodeAt(i))) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`,\n );\n }\n }\n\n if (!Object(_language_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isNameStart\"])(name.charCodeAt(0))) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `Names must start with [_a-zA-Z] but \"${name}\" does not.`,\n );\n }\n\n return name;\n}\n/**\n * Upholds the spec rules about naming enum values.\n *\n * @internal\n */\n\nfunction assertEnumValueName(name) {\n if (name === 'true' || name === 'false' || name === 'null') {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](`Enum values cannot be named: ${name}`);\n }\n\n return assertName(name);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9hc3NlcnROYW1lLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3R5cGUvYXNzZXJ0TmFtZS5tanM/MWUyNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXZBc3NlcnQgfSBmcm9tICcuLi9qc3V0aWxzL2RldkFzc2VydC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBpc05hbWVDb250aW51ZSwgaXNOYW1lU3RhcnQgfSBmcm9tICcuLi9sYW5ndWFnZS9jaGFyYWN0ZXJDbGFzc2VzLm1qcyc7XG4vKipcbiAqIFVwaG9sZHMgdGhlIHNwZWMgcnVsZXMgYWJvdXQgbmFtaW5nLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROYW1lKG5hbWUpIHtcbiAgbmFtZSAhPSBudWxsIHx8IGRldkFzc2VydChmYWxzZSwgJ011c3QgcHJvdmlkZSBuYW1lLicpO1xuICB0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgfHwgZGV2QXNzZXJ0KGZhbHNlLCAnRXhwZWN0ZWQgbmFtZSB0byBiZSBhIHN0cmluZy4nKTtcblxuICBpZiAobmFtZS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKCdFeHBlY3RlZCBuYW1lIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZy4nKTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgbmFtZS5sZW5ndGg7ICsraSkge1xuICAgIGlmICghaXNOYW1lQ29udGludWUobmFtZS5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYE5hbWVzIG11c3Qgb25seSBjb250YWluIFtfYS16QS1aMC05XSBidXQgXCIke25hbWV9XCIgZG9lcyBub3QuYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFpc05hbWVTdGFydChuYW1lLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgIGBOYW1lcyBtdXN0IHN0YXJ0IHdpdGggW19hLXpBLVpdIGJ1dCBcIiR7bmFtZX1cIiBkb2VzIG5vdC5gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbmFtZTtcbn1cbi8qKlxuICogVXBob2xkcyB0aGUgc3BlYyBydWxlcyBhYm91dCBuYW1pbmcgZW51bSB2YWx1ZXMuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEVudW1WYWx1ZU5hbWUobmFtZSkge1xuICBpZiAobmFtZSA9PT0gJ3RydWUnIHx8IG5hbWUgPT09ICdmYWxzZScgfHwgbmFtZSA9PT0gJ251bGwnKSB7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgRW51bSB2YWx1ZXMgY2Fubm90IGJlIG5hbWVkOiAke25hbWV9YCk7XG4gIH1cblxuICByZXR1cm4gYXNzZXJ0TmFtZShuYW1lKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/assertName.mjs\n");
|
805 |
|
806 | }),
|
807 |
|
808 | "../../../node_modules/graphql/type/definition.mjs":
|
809 |
|
810 |
|
811 |
|
812 |
|
813 | (function(module, __webpack_exports__, __webpack_require__) {
|
814 |
|
815 | "use strict";
|
816 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isType\", function() { return isType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertType\", function() { return assertType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isScalarType\", function() { return isScalarType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertScalarType\", function() { return assertScalarType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObjectType\", function() { return isObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertObjectType\", function() { return assertObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInterfaceType\", function() { return isInterfaceType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertInterfaceType\", function() { return assertInterfaceType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isUnionType\", function() { return isUnionType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertUnionType\", function() { return assertUnionType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEnumType\", function() { return isEnumType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertEnumType\", function() { return assertEnumType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInputObjectType\", function() { return isInputObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertInputObjectType\", function() { return assertInputObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isListType\", function() { return isListType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertListType\", function() { return assertListType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNonNullType\", function() { return isNonNullType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertNonNullType\", function() { return assertNonNullType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInputType\", function() { return isInputType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertInputType\", function() { return assertInputType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isOutputType\", function() { return isOutputType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertOutputType\", function() { return assertOutputType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLeafType\", function() { return isLeafType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertLeafType\", function() { return assertLeafType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCompositeType\", function() { return isCompositeType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertCompositeType\", function() { return assertCompositeType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAbstractType\", function() { return isAbstractType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertAbstractType\", function() { return assertAbstractType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLList\", function() { return GraphQLList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLNonNull\", function() { return GraphQLNonNull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWrappingType\", function() { return isWrappingType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertWrappingType\", function() { return assertWrappingType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNullableType\", function() { return isNullableType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertNullableType\", function() { return assertNullableType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNullableType\", function() { return getNullableType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNamedType\", function() { return isNamedType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertNamedType\", function() { return assertNamedType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNamedType\", function() { return getNamedType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolveReadonlyArrayThunk\", function() { return resolveReadonlyArrayThunk; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolveObjMapThunk\", function() { return resolveObjMapThunk; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLScalarType\", function() { return GraphQLScalarType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLObjectType\", function() { return GraphQLObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defineArguments\", function() { return defineArguments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"argsToArgsConfig\", function() { return argsToArgsConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRequiredArgument\", function() { return isRequiredArgument; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInterfaceType\", function() { return GraphQLInterfaceType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLUnionType\", function() { return GraphQLUnionType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLEnumType\", function() { return GraphQLEnumType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInputObjectType\", function() { return GraphQLInputObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRequiredInputField\", function() { return isRequiredInputField; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_identityFunc_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/identityFunc.mjs */ \"../../../node_modules/graphql/jsutils/identityFunc.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/instanceOf.mjs */ \"../../../node_modules/graphql/jsutils/instanceOf.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/keyValMap.mjs */ \"../../../node_modules/graphql/jsutils/keyValMap.mjs\");\n/* harmony import */ var _jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../jsutils/mapValue.mjs */ \"../../../node_modules/graphql/jsutils/mapValue.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../jsutils/toObjMap.mjs */ \"../../../node_modules/graphql/jsutils/toObjMap.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _utilities_valueFromASTUntyped_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utilities/valueFromASTUntyped.mjs */ \"../../../node_modules/graphql/utilities/valueFromASTUntyped.mjs\");\n/* harmony import */ var _assertName_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./assertName.mjs */ \"../../../node_modules/graphql/type/assertName.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction isType(type) {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n isInputObjectType(type) ||\n isListType(type) ||\n isNonNullType(type)\n );\n}\nfunction assertType(type) {\n if (!isType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL type.`);\n }\n\n return type;\n}\n/**\n * There are predicates for each kind of GraphQL type.\n */\n\nfunction isScalarType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_4__[\"instanceOf\"])(type, GraphQLScalarType);\n}\nfunction assertScalarType(type) {\n if (!isScalarType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL Scalar type.`);\n }\n\n return type;\n}\nfunction isObjectType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_4__[\"instanceOf\"])(type, GraphQLObjectType);\n}\nfunction assertObjectType(type) {\n if (!isObjectType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL Object type.`);\n }\n\n return type;\n}\nfunction isInterfaceType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_4__[\"instanceOf\"])(type, GraphQLInterfaceType);\n}\nfunction assertInterfaceType(type) {\n if (!isInterfaceType(type)) {\n throw new Error(\n `Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL Interface type.`,\n );\n }\n\n return type;\n}\nfunction isUnionType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_4__[\"instanceOf\"])(type, GraphQLUnionType);\n}\nfunction assertUnionType(type) {\n if (!isUnionType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL Union type.`);\n }\n\n return type;\n}\nfunction isEnumType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_4__[\"instanceOf\"])(type, GraphQLEnumType);\n}\nfunction assertEnumType(type) {\n if (!isEnumType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL Enum type.`);\n }\n\n return type;\n}\nfunction isInputObjectType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_4__[\"instanceOf\"])(type, GraphQLInputObjectType);\n}\nfunction assertInputObjectType(type) {\n if (!isInputObjectType(type)) {\n throw new Error(\n `Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL Input Object type.`,\n );\n }\n\n return type;\n}\nfunction isListType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_4__[\"instanceOf\"])(type, GraphQLList);\n}\nfunction assertListType(type) {\n if (!isListType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL List type.`);\n }\n\n return type;\n}\nfunction isNonNullType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_4__[\"instanceOf\"])(type, GraphQLNonNull);\n}\nfunction assertNonNullType(type) {\n if (!isNonNullType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL Non-Null type.`);\n }\n\n return type;\n}\n/**\n * These types may be used as input types for arguments and directives.\n */\n\nfunction isInputType(type) {\n return (\n isScalarType(type) ||\n isEnumType(type) ||\n isInputObjectType(type) ||\n (isWrappingType(type) && isInputType(type.ofType))\n );\n}\nfunction assertInputType(type) {\n if (!isInputType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL input type.`);\n }\n\n return type;\n}\n/**\n * These types may be used as output types as the result of fields.\n */\n\nfunction isOutputType(type) {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n (isWrappingType(type) && isOutputType(type.ofType))\n );\n}\nfunction assertOutputType(type) {\n if (!isOutputType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL output type.`);\n }\n\n return type;\n}\n/**\n * These types may describe types which may be leaf values.\n */\n\nfunction isLeafType(type) {\n return isScalarType(type) || isEnumType(type);\n}\nfunction assertLeafType(type) {\n if (!isLeafType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL leaf type.`);\n }\n\n return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isCompositeType(type) {\n return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\nfunction assertCompositeType(type) {\n if (!isCompositeType(type)) {\n throw new Error(\n `Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL composite type.`,\n );\n }\n\n return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isAbstractType(type) {\n return isInterfaceType(type) || isUnionType(type);\n}\nfunction assertAbstractType(type) {\n if (!isAbstractType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL abstract type.`);\n }\n\n return type;\n}\n/**\n * List Type Wrapper\n *\n * A list is a wrapping type which points to another type.\n * Lists are often created within the context of defining the fields of\n * an object type.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * parents: { type: new GraphQLList(PersonType) },\n * children: { type: new GraphQLList(PersonType) },\n * })\n * })\n * ```\n */\n\nclass GraphQLList {\n constructor(ofType) {\n isType(ofType) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(false, `Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(ofType)} to be a GraphQL type.`);\n this.ofType = ofType;\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLList';\n }\n\n toString() {\n return '[' + String(this.ofType) + ']';\n }\n\n toJSON() {\n return this.toString();\n }\n}\n/**\n * Non-Null Type Wrapper\n *\n * A non-null is a wrapping type which points to another type.\n * Non-null types enforce that their values are never null and can ensure\n * an error is raised if this ever occurs during a request. It is useful for\n * fields which you can make a strong guarantee on non-nullability, for example\n * usually the id field of a database row will never be null.\n *\n * Example:\n *\n * ```ts\n * const RowType = new GraphQLObjectType({\n * name: 'Row',\n * fields: () => ({\n * id: { type: new GraphQLNonNull(GraphQLString) },\n * })\n * })\n * ```\n * Note: the enforcement of non-nullability occurs within the executor.\n */\n\nclass GraphQLNonNull {\n constructor(ofType) {\n isNullableType(ofType) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(ofType)} to be a GraphQL nullable type.`,\n );\n this.ofType = ofType;\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLNonNull';\n }\n\n toString() {\n return String(this.ofType) + '!';\n }\n\n toJSON() {\n return this.toString();\n }\n}\n/**\n * These types wrap and modify other types\n */\n\nfunction isWrappingType(type) {\n return isListType(type) || isNonNullType(type);\n}\nfunction assertWrappingType(type) {\n if (!isWrappingType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL wrapping type.`);\n }\n\n return type;\n}\n/**\n * These types can all accept null as a value.\n */\n\nfunction isNullableType(type) {\n return isType(type) && !isNonNullType(type);\n}\nfunction assertNullableType(type) {\n if (!isNullableType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL nullable type.`);\n }\n\n return type;\n}\nfunction getNullableType(type) {\n if (type) {\n return isNonNullType(type) ? type.ofType : type;\n }\n}\n/**\n * These named types do not include modifiers like List or NonNull.\n */\n\nfunction isNamedType(type) {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n isInputObjectType(type)\n );\n}\nfunction assertNamedType(type) {\n if (!isNamedType(type)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(type)} to be a GraphQL named type.`);\n }\n\n return type;\n}\nfunction getNamedType(type) {\n if (type) {\n let unwrappedType = type;\n\n while (isWrappingType(unwrappedType)) {\n unwrappedType = unwrappedType.ofType;\n }\n\n return unwrappedType;\n }\n}\n/**\n * Used while defining GraphQL types to allow for circular references in\n * otherwise immutable type definitions.\n */\n\nfunction resolveReadonlyArrayThunk(thunk) {\n return typeof thunk === 'function' ? thunk() : thunk;\n}\nfunction resolveObjMapThunk(thunk) {\n return typeof thunk === 'function' ? thunk() : thunk;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Scalar Type Definition\n *\n * The leaf values of any request and input values to arguments are\n * Scalars (or Enums) and are defined with a name and a series of functions\n * used to parse input from ast or variables and to ensure validity.\n *\n * If a type's serialize function returns `null` or does not return a value\n * (i.e. it returns `undefined`) then an error will be raised and a `null`\n * value will be returned in the response. It is always better to validate\n *\n * Example:\n *\n * ```ts\n * const OddType = new GraphQLScalarType({\n * name: 'Odd',\n * serialize(value) {\n * if (!Number.isFinite(value)) {\n * throw new Error(\n * `Scalar \"Odd\" cannot represent \"${value}\" since it is not a finite number.`,\n * );\n * }\n *\n * if (value % 2 === 0) {\n * throw new Error(`Scalar \"Odd\" cannot represent \"${value}\" since it is even.`);\n * }\n * return value;\n * }\n * });\n * ```\n */\nclass GraphQLScalarType {\n constructor(config) {\n var _config$parseValue,\n _config$serialize,\n _config$parseLiteral,\n _config$extensionASTN;\n\n const parseValue =\n (_config$parseValue = config.parseValue) !== null &&\n _config$parseValue !== void 0\n ? _config$parseValue\n : _jsutils_identityFunc_mjs__WEBPACK_IMPORTED_MODULE_2__[\"identityFunc\"];\n this.name = Object(_assertName_mjs__WEBPACK_IMPORTED_MODULE_15__[\"assertName\"])(config.name);\n this.description = config.description;\n this.specifiedByURL = config.specifiedByURL;\n this.serialize =\n (_config$serialize = config.serialize) !== null &&\n _config$serialize !== void 0\n ? _config$serialize\n : _jsutils_identityFunc_mjs__WEBPACK_IMPORTED_MODULE_2__[\"identityFunc\"];\n this.parseValue = parseValue;\n this.parseLiteral =\n (_config$parseLiteral = config.parseLiteral) !== null &&\n _config$parseLiteral !== void 0\n ? _config$parseLiteral\n : (node, variables) => parseValue(Object(_utilities_valueFromASTUntyped_mjs__WEBPACK_IMPORTED_MODULE_14__[\"valueFromASTUntyped\"])(node, variables));\n this.extensions = Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_10__[\"toObjMap\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN = config.extensionASTNodes) !== null &&\n _config$extensionASTN !== void 0\n ? _config$extensionASTN\n : [];\n config.specifiedByURL == null ||\n typeof config.specifiedByURL === 'string' ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${this.name} must provide \"specifiedByURL\" as a string, ` +\n `but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(config.specifiedByURL)}.`,\n );\n config.serialize == null ||\n typeof config.serialize === 'function' ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${this.name} must provide \"serialize\" function. If this custom Scalar is also used as an input type, ensure \"parseValue\" and \"parseLiteral\" functions are also provided.`,\n );\n\n if (config.parseLiteral) {\n (typeof config.parseValue === 'function' &&\n typeof config.parseLiteral === 'function') ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${this.name} must provide both \"parseValue\" and \"parseLiteral\" functions.`,\n );\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLScalarType';\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n specifiedByURL: this.specifiedByURL,\n serialize: this.serialize,\n parseValue: this.parseValue,\n parseLiteral: this.parseLiteral,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\n/**\n * Object Type Definition\n *\n * Almost all of the GraphQL types you define will be object types. Object types\n * have a name, but most importantly describe their fields.\n *\n * Example:\n *\n * ```ts\n * const AddressType = new GraphQLObjectType({\n * name: 'Address',\n * fields: {\n * street: { type: GraphQLString },\n * number: { type: GraphQLInt },\n * formatted: {\n * type: GraphQLString,\n * resolve(obj) {\n * return obj.number + ' ' + obj.street\n * }\n * }\n * }\n * });\n * ```\n *\n * When two types need to refer to each other, or a type needs to refer to\n * itself in a field, you can use a function expression (aka a closure or a\n * thunk) to supply the fields lazily.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * name: { type: GraphQLString },\n * bestFriend: { type: PersonType },\n * })\n * });\n * ```\n */\nclass GraphQLObjectType {\n constructor(config) {\n var _config$extensionASTN2;\n\n this.name = Object(_assertName_mjs__WEBPACK_IMPORTED_MODULE_15__[\"assertName\"])(config.name);\n this.description = config.description;\n this.isTypeOf = config.isTypeOf;\n this.extensions = Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_10__[\"toObjMap\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN2 = config.extensionASTNodes) !== null &&\n _config$extensionASTN2 !== void 0\n ? _config$extensionASTN2\n : [];\n\n this._fields = () => defineFieldMap(config);\n\n this._interfaces = () => defineInterfaces(config);\n\n config.isTypeOf == null ||\n typeof config.isTypeOf === 'function' ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${this.name} must provide \"isTypeOf\" as a function, ` +\n `but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(config.isTypeOf)}.`,\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLObjectType';\n }\n\n getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n getInterfaces() {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n isTypeOf: this.isTypeOf,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nfunction defineInterfaces(config) {\n var _config$interfaces;\n\n const interfaces = resolveReadonlyArrayThunk(\n (_config$interfaces = config.interfaces) !== null &&\n _config$interfaces !== void 0\n ? _config$interfaces\n : [],\n );\n Array.isArray(interfaces) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${config.name} interfaces must be an Array or a function which returns an Array.`,\n );\n return interfaces;\n}\n\nfunction defineFieldMap(config) {\n const fieldMap = resolveObjMapThunk(config.fields);\n isPlainObj(fieldMap) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n );\n return Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_8__[\"mapValue\"])(fieldMap, (fieldConfig, fieldName) => {\n var _fieldConfig$args;\n\n isPlainObj(fieldConfig) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${config.name}.${fieldName} field config must be an object.`,\n );\n fieldConfig.resolve == null ||\n typeof fieldConfig.resolve === 'function' ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${config.name}.${fieldName} field resolver must be a function if ` +\n `provided, but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(fieldConfig.resolve)}.`,\n );\n const argsConfig =\n (_fieldConfig$args = fieldConfig.args) !== null &&\n _fieldConfig$args !== void 0\n ? _fieldConfig$args\n : {};\n isPlainObj(argsConfig) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${config.name}.${fieldName} args must be an object with argument names as keys.`,\n );\n return {\n name: Object(_assertName_mjs__WEBPACK_IMPORTED_MODULE_15__[\"assertName\"])(fieldName),\n description: fieldConfig.description,\n type: fieldConfig.type,\n args: defineArguments(argsConfig),\n resolve: fieldConfig.resolve,\n subscribe: fieldConfig.subscribe,\n deprecationReason: fieldConfig.deprecationReason,\n extensions: Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_10__[\"toObjMap\"])(fieldConfig.extensions),\n astNode: fieldConfig.astNode,\n };\n });\n}\n\nfunction defineArguments(config) {\n return Object.entries(config).map(([argName, argConfig]) => ({\n name: Object(_assertName_mjs__WEBPACK_IMPORTED_MODULE_15__[\"assertName\"])(argName),\n description: argConfig.description,\n type: argConfig.type,\n defaultValue: argConfig.defaultValue,\n deprecationReason: argConfig.deprecationReason,\n extensions: Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_10__[\"toObjMap\"])(argConfig.extensions),\n astNode: argConfig.astNode,\n }));\n}\n\nfunction isPlainObj(obj) {\n return Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isObjectLike\"])(obj) && !Array.isArray(obj);\n}\n\nfunction fieldsToFieldsConfig(fields) {\n return Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_8__[\"mapValue\"])(fields, (field) => ({\n description: field.description,\n type: field.type,\n args: argsToArgsConfig(field.args),\n resolve: field.resolve,\n subscribe: field.subscribe,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode,\n }));\n}\n/**\n * @internal\n */\n\nfunction argsToArgsConfig(args) {\n return Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_7__[\"keyValMap\"])(\n args,\n (arg) => arg.name,\n (arg) => ({\n description: arg.description,\n type: arg.type,\n defaultValue: arg.defaultValue,\n deprecationReason: arg.deprecationReason,\n extensions: arg.extensions,\n astNode: arg.astNode,\n }),\n );\n}\nfunction isRequiredArgument(arg) {\n return isNonNullType(arg.type) && arg.defaultValue === undefined;\n}\n\n/**\n * Interface Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Interface type\n * is used to describe what types are possible, what fields are in common across\n * all types, as well as a function to determine which type is actually used\n * when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const EntityType = new GraphQLInterfaceType({\n * name: 'Entity',\n * fields: {\n * name: { type: GraphQLString }\n * }\n * });\n * ```\n */\nclass GraphQLInterfaceType {\n constructor(config) {\n var _config$extensionASTN3;\n\n this.name = Object(_assertName_mjs__WEBPACK_IMPORTED_MODULE_15__[\"assertName\"])(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_10__[\"toObjMap\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN3 = config.extensionASTNodes) !== null &&\n _config$extensionASTN3 !== void 0\n ? _config$extensionASTN3\n : [];\n this._fields = defineFieldMap.bind(undefined, config);\n this._interfaces = defineInterfaces.bind(undefined, config);\n config.resolveType == null ||\n typeof config.resolveType === 'function' ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${this.name} must provide \"resolveType\" as a function, ` +\n `but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(config.resolveType)}.`,\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLInterfaceType';\n }\n\n getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n getInterfaces() {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\n/**\n * Union Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Union type\n * is used to describe what types are possible as well as providing a function\n * to determine which type is actually used when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const PetType = new GraphQLUnionType({\n * name: 'Pet',\n * types: [ DogType, CatType ],\n * resolveType(value) {\n * if (value instanceof Dog) {\n * return DogType;\n * }\n * if (value instanceof Cat) {\n * return CatType;\n * }\n * }\n * });\n * ```\n */\nclass GraphQLUnionType {\n constructor(config) {\n var _config$extensionASTN4;\n\n this.name = Object(_assertName_mjs__WEBPACK_IMPORTED_MODULE_15__[\"assertName\"])(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_10__[\"toObjMap\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN4 = config.extensionASTNodes) !== null &&\n _config$extensionASTN4 !== void 0\n ? _config$extensionASTN4\n : [];\n this._types = defineTypes.bind(undefined, config);\n config.resolveType == null ||\n typeof config.resolveType === 'function' ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${this.name} must provide \"resolveType\" as a function, ` +\n `but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(config.resolveType)}.`,\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLUnionType';\n }\n\n getTypes() {\n if (typeof this._types === 'function') {\n this._types = this._types();\n }\n\n return this._types;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n types: this.getTypes(),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nfunction defineTypes(config) {\n const types = resolveReadonlyArrayThunk(config.types);\n Array.isArray(types) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `Must provide Array of types or a function which returns such an array for Union ${config.name}.`,\n );\n return types;\n}\n\n/**\n * Enum Type Definition\n *\n * Some leaf values of requests and input values are Enums. GraphQL serializes\n * Enum values as strings, however internally Enums can be represented by any\n * kind of type, often integers.\n *\n * Example:\n *\n * ```ts\n * const RGBType = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 }\n * }\n * });\n * ```\n *\n * Note: If a value is not provided in a definition, the name of the enum value\n * will be used as its internal value.\n */\nclass GraphQLEnumType {\n /* <T> */\n constructor(config) {\n var _config$extensionASTN5;\n\n this.name = Object(_assertName_mjs__WEBPACK_IMPORTED_MODULE_15__[\"assertName\"])(config.name);\n this.description = config.description;\n this.extensions = Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_10__[\"toObjMap\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN5 = config.extensionASTNodes) !== null &&\n _config$extensionASTN5 !== void 0\n ? _config$extensionASTN5\n : [];\n this._values = defineEnumValues(this.name, config.values);\n this._valueLookup = new Map(\n this._values.map((enumValue) => [enumValue.value, enumValue]),\n );\n this._nameLookup = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_6__[\"keyMap\"])(this._values, (value) => value.name);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLEnumType';\n }\n\n getValues() {\n return this._values;\n }\n\n getValue(name) {\n return this._nameLookup[name];\n }\n\n serialize(outputValue) {\n const enumValue = this._valueLookup.get(outputValue);\n\n if (enumValue === undefined) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_11__[\"GraphQLError\"](\n `Enum \"${this.name}\" cannot represent value: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(outputValue)}`,\n );\n }\n\n return enumValue.name;\n }\n\n parseValue(inputValue) /* T */\n {\n if (typeof inputValue !== 'string') {\n const valueStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(inputValue);\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_11__[\"GraphQLError\"](\n `Enum \"${this.name}\" cannot represent non-string value: ${valueStr}.` +\n didYouMeanEnumValue(this, valueStr),\n );\n }\n\n const enumValue = this.getValue(inputValue);\n\n if (enumValue == null) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_11__[\"GraphQLError\"](\n `Value \"${inputValue}\" does not exist in \"${this.name}\" enum.` +\n didYouMeanEnumValue(this, inputValue),\n );\n }\n\n return enumValue.value;\n }\n\n parseLiteral(valueNode, _variables) /* T */\n {\n // Note: variables will be resolved to a value before calling this function.\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_12__[\"Kind\"].ENUM) {\n const valueStr = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_13__[\"print\"])(valueNode);\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_11__[\"GraphQLError\"](\n `Enum \"${this.name}\" cannot represent non-enum value: ${valueStr}.` +\n didYouMeanEnumValue(this, valueStr),\n {\n nodes: valueNode,\n },\n );\n }\n\n const enumValue = this.getValue(valueNode.value);\n\n if (enumValue == null) {\n const valueStr = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_13__[\"print\"])(valueNode);\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_11__[\"GraphQLError\"](\n `Value \"${valueStr}\" does not exist in \"${this.name}\" enum.` +\n didYouMeanEnumValue(this, valueStr),\n {\n nodes: valueNode,\n },\n );\n }\n\n return enumValue.value;\n }\n\n toConfig() {\n const values = Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_7__[\"keyValMap\"])(\n this.getValues(),\n (value) => value.name,\n (value) => ({\n description: value.description,\n value: value.value,\n deprecationReason: value.deprecationReason,\n extensions: value.extensions,\n astNode: value.astNode,\n }),\n );\n return {\n name: this.name,\n description: this.description,\n values,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nfunction didYouMeanEnumValue(enumType, unknownValueStr) {\n const allNames = enumType.getValues().map((value) => value.name);\n const suggestedValues = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_9__[\"suggestionList\"])(unknownValueStr, allNames);\n return Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_1__[\"didYouMean\"])('the enum value', suggestedValues);\n}\n\nfunction defineEnumValues(typeName, valueMap) {\n isPlainObj(valueMap) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${typeName} values must be an object with value names as keys.`,\n );\n return Object.entries(valueMap).map(([valueName, valueConfig]) => {\n isPlainObj(valueConfig) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${typeName}.${valueName} must refer to an object with a \"value\" key ` +\n `representing an internal value but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"inspect\"])(valueConfig)}.`,\n );\n return {\n name: Object(_assertName_mjs__WEBPACK_IMPORTED_MODULE_15__[\"assertEnumValueName\"])(valueName),\n description: valueConfig.description,\n value: valueConfig.value !== undefined ? valueConfig.value : valueName,\n deprecationReason: valueConfig.deprecationReason,\n extensions: Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_10__[\"toObjMap\"])(valueConfig.extensions),\n astNode: valueConfig.astNode,\n };\n });\n}\n\n/**\n * Input Object Type Definition\n *\n * An input object defines a structured collection of fields which may be\n * supplied to a field argument.\n *\n * Using `NonNull` will ensure that a value must be provided by the query\n *\n * Example:\n *\n * ```ts\n * const GeoPoint = new GraphQLInputObjectType({\n * name: 'GeoPoint',\n * fields: {\n * lat: { type: new GraphQLNonNull(GraphQLFloat) },\n * lon: { type: new GraphQLNonNull(GraphQLFloat) },\n * alt: { type: GraphQLFloat, defaultValue: 0 },\n * }\n * });\n * ```\n */\nclass GraphQLInputObjectType {\n constructor(config) {\n var _config$extensionASTN6;\n\n this.name = Object(_assertName_mjs__WEBPACK_IMPORTED_MODULE_15__[\"assertName\"])(config.name);\n this.description = config.description;\n this.extensions = Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_10__[\"toObjMap\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN6 = config.extensionASTNodes) !== null &&\n _config$extensionASTN6 !== void 0\n ? _config$extensionASTN6\n : [];\n this._fields = defineInputFieldMap.bind(undefined, config);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLInputObjectType';\n }\n\n getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n toConfig() {\n const fields = Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_8__[\"mapValue\"])(this.getFields(), (field) => ({\n description: field.description,\n type: field.type,\n defaultValue: field.defaultValue,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode,\n }));\n return {\n name: this.name,\n description: this.description,\n fields,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\nfunction defineInputFieldMap(config) {\n const fieldMap = resolveObjMapThunk(config.fields);\n isPlainObj(fieldMap) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n );\n return Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_8__[\"mapValue\"])(fieldMap, (fieldConfig, fieldName) => {\n !('resolve' in fieldConfig) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `${config.name}.${fieldName} field has a resolve property, but Input Types cannot define resolvers.`,\n );\n return {\n name: Object(_assertName_mjs__WEBPACK_IMPORTED_MODULE_15__[\"assertName\"])(fieldName),\n description: fieldConfig.description,\n type: fieldConfig.type,\n defaultValue: fieldConfig.defaultValue,\n deprecationReason: fieldConfig.deprecationReason,\n extensions: Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_10__[\"toObjMap\"])(fieldConfig.extensions),\n astNode: fieldConfig.astNode,\n };\n });\n}\n\nfunction isRequiredInputField(field) {\n return isNonNullType(field.type) && field.defaultValue === undefined;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9kZWZpbml0aW9uLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3R5cGUvZGVmaW5pdGlvbi5tanM/MjllNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXZBc3NlcnQgfSBmcm9tICcuLi9qc3V0aWxzL2RldkFzc2VydC5tanMnO1xuaW1wb3J0IHsgZGlkWW91TWVhbiB9IGZyb20gJy4uL2pzdXRpbHMvZGlkWW91TWVhbi5tanMnO1xuaW1wb3J0IHsgaWRlbnRpdHlGdW5jIH0gZnJvbSAnLi4vanN1dGlscy9pZGVudGl0eUZ1bmMubWpzJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGluc3RhbmNlT2YgfSBmcm9tICcuLi9qc3V0aWxzL2luc3RhbmNlT2YubWpzJztcbmltcG9ydCB7IGlzT2JqZWN0TGlrZSB9IGZyb20gJy4uL2pzdXRpbHMvaXNPYmplY3RMaWtlLm1qcyc7XG5pbXBvcnQgeyBrZXlNYXAgfSBmcm9tICcuLi9qc3V0aWxzL2tleU1hcC5tanMnO1xuaW1wb3J0IHsga2V5VmFsTWFwIH0gZnJvbSAnLi4vanN1dGlscy9rZXlWYWxNYXAubWpzJztcbmltcG9ydCB7IG1hcFZhbHVlIH0gZnJvbSAnLi4vanN1dGlscy9tYXBWYWx1ZS5tanMnO1xuaW1wb3J0IHsgc3VnZ2VzdGlvbkxpc3QgfSBmcm9tICcuLi9qc3V0aWxzL3N1Z2dlc3Rpb25MaXN0Lm1qcyc7XG5pbXBvcnQgeyB0b09iak1hcCB9IGZyb20gJy4uL2pzdXRpbHMvdG9PYmpNYXAubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBwcmludCB9IGZyb20gJy4uL2xhbmd1YWdlL3ByaW50ZXIubWpzJztcbmltcG9ydCB7IHZhbHVlRnJvbUFTVFVudHlwZWQgfSBmcm9tICcuLi91dGlsaXRpZXMvdmFsdWVGcm9tQVNUVW50eXBlZC5tanMnO1xuaW1wb3J0IHsgYXNzZXJ0RW51bVZhbHVlTmFtZSwgYXNzZXJ0TmFtZSB9IGZyb20gJy4vYXNzZXJ0TmFtZS5tanMnO1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZSh0eXBlKSB7XG4gIHJldHVybiAoXG4gICAgaXNTY2FsYXJUeXBlKHR5cGUpIHx8XG4gICAgaXNPYmplY3RUeXBlKHR5cGUpIHx8XG4gICAgaXNJbnRlcmZhY2VUeXBlKHR5cGUpIHx8XG4gICAgaXNVbmlvblR5cGUodHlwZSkgfHxcbiAgICBpc0VudW1UeXBlKHR5cGUpIHx8XG4gICAgaXNJbnB1dE9iamVjdFR5cGUodHlwZSkgfHxcbiAgICBpc0xpc3RUeXBlKHR5cGUpIHx8XG4gICAgaXNOb25OdWxsVHlwZSh0eXBlKVxuICApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFR5cGUodHlwZSkge1xuICBpZiAoIWlzVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtpbnNwZWN0KHR5cGUpfSB0byBiZSBhIEdyYXBoUUwgdHlwZS5gKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuLyoqXG4gKiBUaGVyZSBhcmUgcHJlZGljYXRlcyBmb3IgZWFjaCBraW5kIG9mIEdyYXBoUUwgdHlwZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNTY2FsYXJUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTFNjYWxhclR5cGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFNjYWxhclR5cGUodHlwZSkge1xuICBpZiAoIWlzU2NhbGFyVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtpbnNwZWN0KHR5cGUpfSB0byBiZSBhIEdyYXBoUUwgU2NhbGFyIHR5cGUuYCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdFR5cGUodHlwZSkge1xuICByZXR1cm4gaW5zdGFuY2VPZih0eXBlLCBHcmFwaFFMT2JqZWN0VHlwZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0T2JqZWN0VHlwZSh0eXBlKSB7XG4gIGlmICghaXNPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBPYmplY3QgdHlwZS5gKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZXJmYWNlVHlwZSh0eXBlKSB7XG4gIHJldHVybiBpbnN0YW5jZU9mKHR5cGUsIEdyYXBoUUxJbnRlcmZhY2VUeXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRJbnRlcmZhY2VUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRXhwZWN0ZWQgJHtpbnNwZWN0KHR5cGUpfSB0byBiZSBhIEdyYXBoUUwgSW50ZXJmYWNlIHR5cGUuYCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNVbmlvblR5cGUodHlwZSkge1xuICByZXR1cm4gaW5zdGFuY2VPZih0eXBlLCBHcmFwaFFMVW5pb25UeXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRVbmlvblR5cGUodHlwZSkge1xuICBpZiAoIWlzVW5pb25UeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBVbmlvbiB0eXBlLmApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNFbnVtVHlwZSh0eXBlKSB7XG4gIHJldHVybiBpbnN0YW5jZU9mKHR5cGUsIEdyYXBoUUxFbnVtVHlwZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RW51bVR5cGUodHlwZSkge1xuICBpZiAoIWlzRW51bVR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7aW5zcGVjdCh0eXBlKX0gdG8gYmUgYSBHcmFwaFFMIEVudW0gdHlwZS5gKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTElucHV0T2JqZWN0VHlwZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SW5wdXRPYmplY3RUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBJbnB1dCBPYmplY3QgdHlwZS5gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0xpc3RUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTExpc3QpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydExpc3RUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc0xpc3RUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBMaXN0IHR5cGUuYCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc05vbk51bGxUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTE5vbk51bGwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vbk51bGxUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc05vbk51bGxUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBOb24tTnVsbCB0eXBlLmApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG4vKipcbiAqIFRoZXNlIHR5cGVzIG1heSBiZSB1c2VkIGFzIGlucHV0IHR5cGVzIGZvciBhcmd1bWVudHMgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5wdXRUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIChcbiAgICBpc1NjYWxhclR5cGUodHlwZSkgfHxcbiAgICBpc0VudW1UeXBlKHR5cGUpIHx8XG4gICAgaXNJbnB1dE9iamVjdFR5cGUodHlwZSkgfHxcbiAgICAoaXNXcmFwcGluZ1R5cGUodHlwZSkgJiYgaXNJbnB1dFR5cGUodHlwZS5vZlR5cGUpKVxuICApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydElucHV0VHlwZSh0eXBlKSB7XG4gIGlmICghaXNJbnB1dFR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7aW5zcGVjdCh0eXBlKX0gdG8gYmUgYSBHcmFwaFFMIGlucHV0IHR5cGUuYCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbi8qKlxuICogVGhlc2UgdHlwZXMgbWF5IGJlIHVzZWQgYXMgb3V0cHV0IHR5cGVzIGFzIHRoZSByZXN1bHQgb2YgZmllbGRzLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc091dHB1dFR5cGUodHlwZSkge1xuICByZXR1cm4gKFxuICAgIGlzU2NhbGFyVHlwZSh0eXBlKSB8fFxuICAgIGlzT2JqZWN0VHlwZSh0eXBlKSB8fFxuICAgIGlzSW50ZXJmYWNlVHlwZSh0eXBlKSB8fFxuICAgIGlzVW5pb25UeXBlKHR5cGUpIHx8XG4gICAgaXNFbnVtVHlwZSh0eXBlKSB8fFxuICAgIChpc1dyYXBwaW5nVHlwZSh0eXBlKSAmJiBpc091dHB1dFR5cGUodHlwZS5vZlR5cGUpKVxuICApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE91dHB1dFR5cGUodHlwZSkge1xuICBpZiAoIWlzT3V0cHV0VHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtpbnNwZWN0KHR5cGUpfSB0byBiZSBhIEdyYXBoUUwgb3V0cHV0IHR5cGUuYCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbi8qKlxuICogVGhlc2UgdHlwZXMgbWF5IGRlc2NyaWJlIHR5cGVzIHdoaWNoIG1heSBiZSBsZWFmIHZhbHVlcy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNMZWFmVHlwZSh0eXBlKSB7XG4gIHJldHVybiBpc1NjYWxhclR5cGUodHlwZSkgfHwgaXNFbnVtVHlwZSh0eXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRMZWFmVHlwZSh0eXBlKSB7XG4gIGlmICghaXNMZWFmVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtpbnNwZWN0KHR5cGUpfSB0byBiZSBhIEdyYXBoUUwgbGVhZiB0eXBlLmApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG4vKipcbiAqIFRoZXNlIHR5cGVzIG1heSBkZXNjcmliZSB0aGUgcGFyZW50IGNvbnRleHQgb2YgYSBzZWxlY3Rpb24gc2V0LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbXBvc2l0ZVR5cGUodHlwZSkge1xuICByZXR1cm4gaXNPYmplY3RUeXBlKHR5cGUpIHx8IGlzSW50ZXJmYWNlVHlwZSh0eXBlKSB8fCBpc1VuaW9uVHlwZSh0eXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRDb21wb3NpdGVUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc0NvbXBvc2l0ZVR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRXhwZWN0ZWQgJHtpbnNwZWN0KHR5cGUpfSB0byBiZSBhIEdyYXBoUUwgY29tcG9zaXRlIHR5cGUuYCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG4vKipcbiAqIFRoZXNlIHR5cGVzIG1heSBkZXNjcmliZSB0aGUgcGFyZW50IGNvbnRleHQgb2YgYSBzZWxlY3Rpb24gc2V0LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic3RyYWN0VHlwZSh0eXBlKSB7XG4gIHJldHVybiBpc0ludGVyZmFjZVR5cGUodHlwZSkgfHwgaXNVbmlvblR5cGUodHlwZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0QWJzdHJhY3RUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc0Fic3RyYWN0VHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtpbnNwZWN0KHR5cGUpfSB0byBiZSBhIEdyYXBoUUwgYWJzdHJhY3QgdHlwZS5gKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuLyoqXG4gKiBMaXN0IFR5cGUgV3JhcHBlclxuICpcbiAqIEEgbGlzdCBpcyBhIHdyYXBwaW5nIHR5cGUgd2hpY2ggcG9pbnRzIHRvIGFub3RoZXIgdHlwZS5cbiAqIExpc3RzIGFyZSBvZnRlbiBjcmVhdGVkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBkZWZpbmluZyB0aGUgZmllbGRzIG9mXG4gKiBhbiBvYmplY3QgdHlwZS5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBQZXJzb25UeXBlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAqICAgbmFtZTogJ1BlcnNvbicsXG4gKiAgIGZpZWxkczogKCkgPT4gKHtcbiAqICAgICBwYXJlbnRzOiB7IHR5cGU6IG5ldyBHcmFwaFFMTGlzdChQZXJzb25UeXBlKSB9LFxuICogICAgIGNoaWxkcmVuOiB7IHR5cGU6IG5ldyBHcmFwaFFMTGlzdChQZXJzb25UeXBlKSB9LFxuICogICB9KVxuICogfSlcbiAqIGBgYFxuICovXG5cbmV4cG9ydCBjbGFzcyBHcmFwaFFMTGlzdCB7XG4gIGNvbnN0cnVjdG9yKG9mVHlwZSkge1xuICAgIGlzVHlwZShvZlR5cGUpIHx8XG4gICAgICBkZXZBc3NlcnQoZmFsc2UsIGBFeHBlY3RlZCAke2luc3BlY3Qob2ZUeXBlKX0gdG8gYmUgYSBHcmFwaFFMIHR5cGUuYCk7XG4gICAgdGhpcy5vZlR5cGUgPSBvZlR5cGU7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdHcmFwaFFMTGlzdCc7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gJ1snICsgU3RyaW5nKHRoaXMub2ZUeXBlKSArICddJztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygpO1xuICB9XG59XG4vKipcbiAqIE5vbi1OdWxsIFR5cGUgV3JhcHBlclxuICpcbiAqIEEgbm9uLW51bGwgaXMgYSB3cmFwcGluZyB0eXBlIHdoaWNoIHBvaW50cyB0byBhbm90aGVyIHR5cGUuXG4gKiBOb24tbnVsbCB0eXBlcyBlbmZvcmNlIHRoYXQgdGhlaXIgdmFsdWVzIGFyZSBuZXZlciBudWxsIGFuZCBjYW4gZW5zdXJlXG4gKiBhbiBlcnJvciBpcyByYWlzZWQgaWYgdGhpcyBldmVyIG9jY3VycyBkdXJpbmcgYSByZXF1ZXN0LiBJdCBpcyB1c2VmdWwgZm9yXG4gKiBmaWVsZHMgd2hpY2ggeW91IGNhbiBtYWtlIGEgc3Ryb25nIGd1YXJhbnRlZSBvbiBub24tbnVsbGFiaWxpdHksIGZvciBleGFtcGxlXG4gKiB1c3VhbGx5IHRoZSBpZCBmaWVsZCBvZiBhIGRhdGFiYXNlIHJvdyB3aWxsIG5ldmVyIGJlIG51bGwuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgUm93VHlwZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gKiAgIG5hbWU6ICdSb3cnLFxuICogICBmaWVsZHM6ICgpID0+ICh7XG4gKiAgICAgaWQ6IHsgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpIH0sXG4gKiAgIH0pXG4gKiB9KVxuICogYGBgXG4gKiBOb3RlOiB0aGUgZW5mb3JjZW1lbnQgb2Ygbm9uLW51bGxhYmlsaXR5IG9jY3VycyB3aXRoaW4gdGhlIGV4ZWN1dG9yLlxuICovXG5cbmV4cG9ydCBjbGFzcyBHcmFwaFFMTm9uTnVsbCB7XG4gIGNvbnN0cnVjdG9yKG9mVHlwZSkge1xuICAgIGlzTnVsbGFibGVUeXBlKG9mVHlwZSkgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGBFeHBlY3RlZCAke2luc3BlY3Qob2ZUeXBlKX0gdG8gYmUgYSBHcmFwaFFMIG51bGxhYmxlIHR5cGUuYCxcbiAgICAgICk7XG4gICAgdGhpcy5vZlR5cGUgPSBvZlR5cGU7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdHcmFwaFFMTm9uTnVsbCc7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMub2ZUeXBlKSArICchJztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygpO1xuICB9XG59XG4vKipcbiAqIFRoZXNlIHR5cGVzIHdyYXAgYW5kIG1vZGlmeSBvdGhlciB0eXBlc1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1dyYXBwaW5nVHlwZSh0eXBlKSB7XG4gIHJldHVybiBpc0xpc3RUeXBlKHR5cGUpIHx8IGlzTm9uTnVsbFR5cGUodHlwZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0V3JhcHBpbmdUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc1dyYXBwaW5nVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtpbnNwZWN0KHR5cGUpfSB0byBiZSBhIEdyYXBoUUwgd3JhcHBpbmcgdHlwZS5gKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuLyoqXG4gKiBUaGVzZSB0eXBlcyBjYW4gYWxsIGFjY2VwdCBudWxsIGFzIGEgdmFsdWUuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbGFibGVUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGlzVHlwZSh0eXBlKSAmJiAhaXNOb25OdWxsVHlwZSh0eXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROdWxsYWJsZVR5cGUodHlwZSkge1xuICBpZiAoIWlzTnVsbGFibGVUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBudWxsYWJsZSB0eXBlLmApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVsbGFibGVUeXBlKHR5cGUpIHtcbiAgaWYgKHR5cGUpIHtcbiAgICByZXR1cm4gaXNOb25OdWxsVHlwZSh0eXBlKSA/IHR5cGUub2ZUeXBlIDogdHlwZTtcbiAgfVxufVxuLyoqXG4gKiBUaGVzZSBuYW1lZCB0eXBlcyBkbyBub3QgaW5jbHVkZSBtb2RpZmllcnMgbGlrZSBMaXN0IG9yIE5vbk51bGwuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTmFtZWRUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIChcbiAgICBpc1NjYWxhclR5cGUodHlwZSkgfHxcbiAgICBpc09iamVjdFR5cGUodHlwZSkgfHxcbiAgICBpc0ludGVyZmFjZVR5cGUodHlwZSkgfHxcbiAgICBpc1VuaW9uVHlwZSh0eXBlKSB8fFxuICAgIGlzRW51bVR5cGUodHlwZSkgfHxcbiAgICBpc0lucHV0T2JqZWN0VHlwZSh0eXBlKVxuICApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5hbWVkVHlwZSh0eXBlKSB7XG4gIGlmICghaXNOYW1lZFR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7aW5zcGVjdCh0eXBlKX0gdG8gYmUgYSBHcmFwaFFMIG5hbWVkIHR5cGUuYCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lZFR5cGUodHlwZSkge1xuICBpZiAodHlwZSkge1xuICAgIGxldCB1bndyYXBwZWRUeXBlID0gdHlwZTtcblxuICAgIHdoaWxlIChpc1dyYXBwaW5nVHlwZSh1bndyYXBwZWRUeXBlKSkge1xuICAgICAgdW53cmFwcGVkVHlwZSA9IHVud3JhcHBlZFR5cGUub2ZUeXBlO1xuICAgIH1cblxuICAgIHJldHVybiB1bndyYXBwZWRUeXBlO1xuICB9XG59XG4vKipcbiAqIFVzZWQgd2hpbGUgZGVmaW5pbmcgR3JhcGhRTCB0eXBlcyB0byBhbGxvdyBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcyBpblxuICogb3RoZXJ3aXNlIGltbXV0YWJsZSB0eXBlIGRlZmluaXRpb25zLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUmVhZG9ubHlBcnJheVRodW5rKHRodW5rKSB7XG4gIHJldHVybiB0eXBlb2YgdGh1bmsgPT09ICdmdW5jdGlvbicgPyB0aHVuaygpIDogdGh1bms7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU9iak1hcFRodW5rKHRodW5rKSB7XG4gIHJldHVybiB0eXBlb2YgdGh1bmsgPT09ICdmdW5jdGlvbicgPyB0aHVuaygpIDogdGh1bms7XG59XG4vKipcbiAqIEN1c3RvbSBleHRlbnNpb25zXG4gKlxuICogQHJlbWFya3NcbiAqIFVzZSBhIHVuaXF1ZSBpZGVudGlmaWVyIG5hbWUgZm9yIHlvdXIgZXh0ZW5zaW9uLCBmb3IgZXhhbXBsZSB0aGUgbmFtZSBvZlxuICogeW91ciBsaWJyYXJ5IG9yIHByb2plY3QuIERvIG5vdCB1c2UgYSBzaG9ydGVuZWQgaWRlbnRpZmllciBhcyB0aGlzIGluY3JlYXNlc1xuICogdGhlIHJpc2sgb2YgY29uZmxpY3RzLiBXZSByZWNvbW1lbmQgeW91IGFkZCBhdCBtb3N0IG9uZSBleHRlbnNpb24gZmllbGQsXG4gKiBhbiBvYmplY3Qgd2hpY2ggY2FuIGNvbnRhaW4gYWxsIHRoZSB2YWx1ZXMgeW91IG5lZWQuXG4gKi9cblxuLyoqXG4gKiBTY2FsYXIgVHlwZSBEZWZpbml0aW9uXG4gKlxuICogVGhlIGxlYWYgdmFsdWVzIG9mIGFueSByZXF1ZXN0IGFuZCBpbnB1dCB2YWx1ZXMgdG8gYXJndW1lbnRzIGFyZVxuICogU2NhbGFycyAob3IgRW51bXMpIGFuZCBhcmUgZGVmaW5lZCB3aXRoIGEgbmFtZSBhbmQgYSBzZXJpZXMgb2YgZnVuY3Rpb25zXG4gKiB1c2VkIHRvIHBhcnNlIGlucHV0IGZyb20gYXN0IG9yIHZhcmlhYmxlcyBhbmQgdG8gZW5zdXJlIHZhbGlkaXR5LlxuICpcbiAqIElmIGEgdHlwZSdzIHNlcmlhbGl6ZSBmdW5jdGlvbiByZXR1cm5zIGBudWxsYCBvciBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZVxuICogKGkuZS4gaXQgcmV0dXJucyBgdW5kZWZpbmVkYCkgdGhlbiBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZCBhbmQgYSBgbnVsbGBcbiAqIHZhbHVlIHdpbGwgYmUgcmV0dXJuZWQgaW4gdGhlIHJlc3BvbnNlLiBJdCBpcyBhbHdheXMgYmV0dGVyIHRvIHZhbGlkYXRlXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgT2RkVHlwZSA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gKiAgIG5hbWU6ICdPZGQnLFxuICogICBzZXJpYWxpemUodmFsdWUpIHtcbiAqICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZSh2YWx1ZSkpIHtcbiAqICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAqICAgICAgICAgYFNjYWxhciBcIk9kZFwiIGNhbm5vdCByZXByZXNlbnQgXCIke3ZhbHVlfVwiIHNpbmNlIGl0IGlzIG5vdCBhIGZpbml0ZSBudW1iZXIuYCxcbiAqICAgICAgICk7XG4gKiAgICAgfVxuICpcbiAqICAgICBpZiAodmFsdWUgJSAyID09PSAwKSB7XG4gKiAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNjYWxhciBcIk9kZFwiIGNhbm5vdCByZXByZXNlbnQgXCIke3ZhbHVlfVwiIHNpbmNlIGl0IGlzIGV2ZW4uYCk7XG4gKiAgICAgfVxuICogICAgIHJldHVybiB2YWx1ZTtcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoUUxTY2FsYXJUeXBlIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgdmFyIF9jb25maWckcGFyc2VWYWx1ZSxcbiAgICAgIF9jb25maWckc2VyaWFsaXplLFxuICAgICAgX2NvbmZpZyRwYXJzZUxpdGVyYWwsXG4gICAgICBfY29uZmlnJGV4dGVuc2lvbkFTVE47XG5cbiAgICBjb25zdCBwYXJzZVZhbHVlID1cbiAgICAgIChfY29uZmlnJHBhcnNlVmFsdWUgPSBjb25maWcucGFyc2VWYWx1ZSkgIT09IG51bGwgJiZcbiAgICAgIF9jb25maWckcGFyc2VWYWx1ZSAhPT0gdm9pZCAwXG4gICAgICAgID8gX2NvbmZpZyRwYXJzZVZhbHVlXG4gICAgICAgIDogaWRlbnRpdHlGdW5jO1xuICAgIHRoaXMubmFtZSA9IGFzc2VydE5hbWUoY29uZmlnLm5hbWUpO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy5zcGVjaWZpZWRCeVVSTCA9IGNvbmZpZy5zcGVjaWZpZWRCeVVSTDtcbiAgICB0aGlzLnNlcmlhbGl6ZSA9XG4gICAgICAoX2NvbmZpZyRzZXJpYWxpemUgPSBjb25maWcuc2VyaWFsaXplKSAhPT0gbnVsbCAmJlxuICAgICAgX2NvbmZpZyRzZXJpYWxpemUgIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckc2VyaWFsaXplXG4gICAgICAgIDogaWRlbnRpdHlGdW5jO1xuICAgIHRoaXMucGFyc2VWYWx1ZSA9IHBhcnNlVmFsdWU7XG4gICAgdGhpcy5wYXJzZUxpdGVyYWwgPVxuICAgICAgKF9jb25maWckcGFyc2VMaXRlcmFsID0gY29uZmlnLnBhcnNlTGl0ZXJhbCkgIT09IG51bGwgJiZcbiAgICAgIF9jb25maWckcGFyc2VMaXRlcmFsICE9PSB2b2lkIDBcbiAgICAgICAgPyBfY29uZmlnJHBhcnNlTGl0ZXJhbFxuICAgICAgICA6IChub2RlLCB2YXJpYWJsZXMpID0+IHBhcnNlVmFsdWUodmFsdWVGcm9tQVNUVW50eXBlZChub2RlLCB2YXJpYWJsZXMpKTtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9XG4gICAgICAoX2NvbmZpZyRleHRlbnNpb25BU1ROID0gY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJlxuICAgICAgX2NvbmZpZyRleHRlbnNpb25BU1ROICE9PSB2b2lkIDBcbiAgICAgICAgPyBfY29uZmlnJGV4dGVuc2lvbkFTVE5cbiAgICAgICAgOiBbXTtcbiAgICBjb25maWcuc3BlY2lmaWVkQnlVUkwgPT0gbnVsbCB8fFxuICAgICAgdHlwZW9mIGNvbmZpZy5zcGVjaWZpZWRCeVVSTCA9PT0gJ3N0cmluZycgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGAke3RoaXMubmFtZX0gbXVzdCBwcm92aWRlIFwic3BlY2lmaWVkQnlVUkxcIiBhcyBhIHN0cmluZywgYCArXG4gICAgICAgICAgYGJ1dCBnb3Q6ICR7aW5zcGVjdChjb25maWcuc3BlY2lmaWVkQnlVUkwpfS5gLFxuICAgICAgKTtcbiAgICBjb25maWcuc2VyaWFsaXplID09IG51bGwgfHxcbiAgICAgIHR5cGVvZiBjb25maWcuc2VyaWFsaXplID09PSAnZnVuY3Rpb24nIHx8XG4gICAgICBkZXZBc3NlcnQoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBgJHt0aGlzLm5hbWV9IG11c3QgcHJvdmlkZSBcInNlcmlhbGl6ZVwiIGZ1bmN0aW9uLiBJZiB0aGlzIGN1c3RvbSBTY2FsYXIgaXMgYWxzbyB1c2VkIGFzIGFuIGlucHV0IHR5cGUsIGVuc3VyZSBcInBhcnNlVmFsdWVcIiBhbmQgXCJwYXJzZUxpdGVyYWxcIiBmdW5jdGlvbnMgYXJlIGFsc28gcHJvdmlkZWQuYCxcbiAgICAgICk7XG5cbiAgICBpZiAoY29uZmlnLnBhcnNlTGl0ZXJhbCkge1xuICAgICAgKHR5cGVvZiBjb25maWcucGFyc2VWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICB0eXBlb2YgY29uZmlnLnBhcnNlTGl0ZXJhbCA9PT0gJ2Z1bmN0aW9uJykgfHxcbiAgICAgICAgZGV2QXNzZXJ0KFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIGAke3RoaXMubmFtZX0gbXVzdCBwcm92aWRlIGJvdGggXCJwYXJzZVZhbHVlXCIgYW5kIFwicGFyc2VMaXRlcmFsXCIgZnVuY3Rpb25zLmAsXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnR3JhcGhRTFNjYWxhclR5cGUnO1xuICB9XG5cbiAgdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgc3BlY2lmaWVkQnlVUkw6IHRoaXMuc3BlY2lmaWVkQnlVUkwsXG4gICAgICBzZXJpYWxpemU6IHRoaXMuc2VyaWFsaXplLFxuICAgICAgcGFyc2VWYWx1ZTogdGhpcy5wYXJzZVZhbHVlLFxuICAgICAgcGFyc2VMaXRlcmFsOiB0aGlzLnBhcnNlTGl0ZXJhbCxcbiAgICAgIGV4dGVuc2lvbnM6IHRoaXMuZXh0ZW5zaW9ucyxcbiAgICAgIGFzdE5vZGU6IHRoaXMuYXN0Tm9kZSxcbiAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzLFxuICAgIH07XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBPYmplY3QgVHlwZSBEZWZpbml0aW9uXG4gKlxuICogQWxtb3N0IGFsbCBvZiB0aGUgR3JhcGhRTCB0eXBlcyB5b3UgZGVmaW5lIHdpbGwgYmUgb2JqZWN0IHR5cGVzLiBPYmplY3QgdHlwZXNcbiAqIGhhdmUgYSBuYW1lLCBidXQgbW9zdCBpbXBvcnRhbnRseSBkZXNjcmliZSB0aGVpciBmaWVsZHMuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgQWRkcmVzc1R5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICogICBuYW1lOiAnQWRkcmVzcycsXG4gKiAgIGZpZWxkczoge1xuICogICAgIHN0cmVldDogeyB0eXBlOiBHcmFwaFFMU3RyaW5nIH0sXG4gKiAgICAgbnVtYmVyOiB7IHR5cGU6IEdyYXBoUUxJbnQgfSxcbiAqICAgICBmb3JtYXR0ZWQ6IHtcbiAqICAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gKiAgICAgICByZXNvbHZlKG9iaikge1xuICogICAgICAgICByZXR1cm4gb2JqLm51bWJlciArICcgJyArIG9iai5zdHJlZXRcbiAqICAgICAgIH1cbiAqICAgICB9XG4gKiAgIH1cbiAqIH0pO1xuICogYGBgXG4gKlxuICogV2hlbiB0d28gdHlwZXMgbmVlZCB0byByZWZlciB0byBlYWNoIG90aGVyLCBvciBhIHR5cGUgbmVlZHMgdG8gcmVmZXIgdG9cbiAqIGl0c2VsZiBpbiBhIGZpZWxkLCB5b3UgY2FuIHVzZSBhIGZ1bmN0aW9uIGV4cHJlc3Npb24gKGFrYSBhIGNsb3N1cmUgb3IgYVxuICogdGh1bmspIHRvIHN1cHBseSB0aGUgZmllbGRzIGxhemlseS5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBQZXJzb25UeXBlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAqICAgbmFtZTogJ1BlcnNvbicsXG4gKiAgIGZpZWxkczogKCkgPT4gKHtcbiAqICAgICBuYW1lOiB7IHR5cGU6IEdyYXBoUUxTdHJpbmcgfSxcbiAqICAgICBiZXN0RnJpZW5kOiB7IHR5cGU6IFBlcnNvblR5cGUgfSxcbiAqICAgfSlcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaFFMT2JqZWN0VHlwZSB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHZhciBfY29uZmlnJGV4dGVuc2lvbkFTVE4yO1xuXG4gICAgdGhpcy5uYW1lID0gYXNzZXJ0TmFtZShjb25maWcubmFtZSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmlzVHlwZU9mID0gY29uZmlnLmlzVHlwZU9mO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHRvT2JqTWFwKGNvbmZpZy5leHRlbnNpb25zKTtcbiAgICB0aGlzLmFzdE5vZGUgPSBjb25maWcuYXN0Tm9kZTtcbiAgICB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzID1cbiAgICAgIChfY29uZmlnJGV4dGVuc2lvbkFTVE4yID0gY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJlxuICAgICAgX2NvbmZpZyRleHRlbnNpb25BU1ROMiAhPT0gdm9pZCAwXG4gICAgICAgID8gX2NvbmZpZyRleHRlbnNpb25BU1ROMlxuICAgICAgICA6IFtdO1xuXG4gICAgdGhpcy5fZmllbGRzID0gKCkgPT4gZGVmaW5lRmllbGRNYXAoY29uZmlnKTtcblxuICAgIHRoaXMuX2ludGVyZmFjZXMgPSAoKSA9PiBkZWZpbmVJbnRlcmZhY2VzKGNvbmZpZyk7XG5cbiAgICBjb25maWcuaXNUeXBlT2YgPT0gbnVsbCB8fFxuICAgICAgdHlwZW9mIGNvbmZpZy5pc1R5cGVPZiA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgZGV2QXNzZXJ0KFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYCR7dGhpcy5uYW1lfSBtdXN0IHByb3ZpZGUgXCJpc1R5cGVPZlwiIGFzIGEgZnVuY3Rpb24sIGAgK1xuICAgICAgICAgIGBidXQgZ290OiAke2luc3BlY3QoY29uZmlnLmlzVHlwZU9mKX0uYCxcbiAgICAgICk7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdHcmFwaFFMT2JqZWN0VHlwZSc7XG4gIH1cblxuICBnZXRGaWVsZHMoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9maWVsZHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2ZpZWxkcygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gIH1cblxuICBnZXRJbnRlcmZhY2VzKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5faW50ZXJmYWNlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5faW50ZXJmYWNlcyA9IHRoaXMuX2ludGVyZmFjZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faW50ZXJmYWNlcztcbiAgfVxuXG4gIHRvQ29uZmlnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIGludGVyZmFjZXM6IHRoaXMuZ2V0SW50ZXJmYWNlcygpLFxuICAgICAgZmllbGRzOiBmaWVsZHNUb0ZpZWxkc0NvbmZpZyh0aGlzLmdldEZpZWxkcygpKSxcbiAgICAgIGlzVHlwZU9mOiB0aGlzLmlzVHlwZU9mLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgfTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVJbnRlcmZhY2VzKGNvbmZpZykge1xuICB2YXIgX2NvbmZpZyRpbnRlcmZhY2VzO1xuXG4gIGNvbnN0IGludGVyZmFjZXMgPSByZXNvbHZlUmVhZG9ubHlBcnJheVRodW5rKFxuICAgIChfY29uZmlnJGludGVyZmFjZXMgPSBjb25maWcuaW50ZXJmYWNlcykgIT09IG51bGwgJiZcbiAgICAgIF9jb25maWckaW50ZXJmYWNlcyAhPT0gdm9pZCAwXG4gICAgICA/IF9jb25maWckaW50ZXJmYWNlc1xuICAgICAgOiBbXSxcbiAgKTtcbiAgQXJyYXkuaXNBcnJheShpbnRlcmZhY2VzKSB8fFxuICAgIGRldkFzc2VydChcbiAgICAgIGZhbHNlLFxuICAgICAgYCR7Y29uZmlnLm5hbWV9IGludGVyZmFjZXMgbXVzdCBiZSBhbiBBcnJheSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gQXJyYXkuYCxcbiAgICApO1xuICByZXR1cm4gaW50ZXJmYWNlcztcbn1cblxuZnVuY3Rpb24gZGVmaW5lRmllbGRNYXAoY29uZmlnKSB7XG4gIGNvbnN0IGZpZWxkTWFwID0gcmVzb2x2ZU9iak1hcFRodW5rKGNvbmZpZy5maWVsZHMpO1xuICBpc1BsYWluT2JqKGZpZWxkTWFwKSB8fFxuICAgIGRldkFzc2VydChcbiAgICAgIGZhbHNlLFxuICAgICAgYCR7Y29uZmlnLm5hbWV9IGZpZWxkcyBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIGZpZWxkIG5hbWVzIGFzIGtleXMgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIHN1Y2ggYW4gb2JqZWN0LmAsXG4gICAgKTtcbiAgcmV0dXJuIG1hcFZhbHVlKGZpZWxkTWFwLCAoZmllbGRDb25maWcsIGZpZWxkTmFtZSkgPT4ge1xuICAgIHZhciBfZmllbGRDb25maWckYXJncztcblxuICAgIGlzUGxhaW5PYmooZmllbGRDb25maWcpIHx8XG4gICAgICBkZXZBc3NlcnQoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBgJHtjb25maWcubmFtZX0uJHtmaWVsZE5hbWV9IGZpZWxkIGNvbmZpZyBtdXN0IGJlIGFuIG9iamVjdC5gLFxuICAgICAgKTtcbiAgICBmaWVsZENvbmZpZy5yZXNvbHZlID09IG51bGwgfHxcbiAgICAgIHR5cGVvZiBmaWVsZENvbmZpZy5yZXNvbHZlID09PSAnZnVuY3Rpb24nIHx8XG4gICAgICBkZXZBc3NlcnQoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBgJHtjb25maWcubmFtZX0uJHtmaWVsZE5hbWV9IGZpZWxkIHJlc29sdmVyIG11c3QgYmUgYSBmdW5jdGlvbiBpZiBgICtcbiAgICAgICAgICBgcHJvdmlkZWQsIGJ1dCBnb3Q6ICR7aW5zcGVjdChmaWVsZENvbmZpZy5yZXNvbHZlKX0uYCxcbiAgICAgICk7XG4gICAgY29uc3QgYXJnc0NvbmZpZyA9XG4gICAgICAoX2ZpZWxkQ29uZmlnJGFyZ3MgPSBmaWVsZENvbmZpZy5hcmdzKSAhPT0gbnVsbCAmJlxuICAgICAgX2ZpZWxkQ29uZmlnJGFyZ3MgIT09IHZvaWQgMFxuICAgICAgICA/IF9maWVsZENvbmZpZyRhcmdzXG4gICAgICAgIDoge307XG4gICAgaXNQbGFpbk9iaihhcmdzQ29uZmlnKSB8fFxuICAgICAgZGV2QXNzZXJ0KFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYCR7Y29uZmlnLm5hbWV9LiR7ZmllbGROYW1lfSBhcmdzIG11c3QgYmUgYW4gb2JqZWN0IHdpdGggYXJndW1lbnQgbmFtZXMgYXMga2V5cy5gLFxuICAgICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogYXNzZXJ0TmFtZShmaWVsZE5hbWUpLFxuICAgICAgZGVzY3JpcHRpb246IGZpZWxkQ29uZmlnLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZTogZmllbGRDb25maWcudHlwZSxcbiAgICAgIGFyZ3M6IGRlZmluZUFyZ3VtZW50cyhhcmdzQ29uZmlnKSxcbiAgICAgIHJlc29sdmU6IGZpZWxkQ29uZmlnLnJlc29sdmUsXG4gICAgICBzdWJzY3JpYmU6IGZpZWxkQ29uZmlnLnN1YnNjcmliZSxcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBmaWVsZENvbmZpZy5kZXByZWNhdGlvblJlYXNvbixcbiAgICAgIGV4dGVuc2lvbnM6IHRvT2JqTWFwKGZpZWxkQ29uZmlnLmV4dGVuc2lvbnMpLFxuICAgICAgYXN0Tm9kZTogZmllbGRDb25maWcuYXN0Tm9kZSxcbiAgICB9O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUFyZ3VtZW50cyhjb25maWcpIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNvbmZpZykubWFwKChbYXJnTmFtZSwgYXJnQ29uZmlnXSkgPT4gKHtcbiAgICBuYW1lOiBhc3NlcnROYW1lKGFyZ05hbWUpLFxuICAgIGRlc2NyaXB0aW9uOiBhcmdDb25maWcuZGVzY3JpcHRpb24sXG4gICAgdHlwZTogYXJnQ29uZmlnLnR5cGUsXG4gICAgZGVmYXVsdFZhbHVlOiBhcmdDb25maWcuZGVmYXVsdFZhbHVlLFxuICAgIGRlcHJlY2F0aW9uUmVhc29uOiBhcmdDb25maWcuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgZXh0ZW5zaW9uczogdG9PYmpNYXAoYXJnQ29uZmlnLmV4dGVuc2lvbnMpLFxuICAgIGFzdE5vZGU6IGFyZ0NvbmZpZy5hc3ROb2RlLFxuICB9KSk7XG59XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmoob2JqKSB7XG4gIHJldHVybiBpc09iamVjdExpa2Uob2JqKSAmJiAhQXJyYXkuaXNBcnJheShvYmopO1xufVxuXG5mdW5jdGlvbiBmaWVsZHNUb0ZpZWxkc0NvbmZpZyhmaWVsZHMpIHtcbiAgcmV0dXJuIG1hcFZhbHVlKGZpZWxkcywgKGZpZWxkKSA9PiAoe1xuICAgIGRlc2NyaXB0aW9uOiBmaWVsZC5kZXNjcmlwdGlvbixcbiAgICB0eXBlOiBmaWVsZC50eXBlLFxuICAgIGFyZ3M6IGFyZ3NUb0FyZ3NDb25maWcoZmllbGQuYXJncyksXG4gICAgcmVzb2x2ZTogZmllbGQucmVzb2x2ZSxcbiAgICBzdWJzY3JpYmU6IGZpZWxkLnN1YnNjcmliZSxcbiAgICBkZXByZWNhdGlvblJlYXNvbjogZmllbGQuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgZXh0ZW5zaW9uczogZmllbGQuZXh0ZW5zaW9ucyxcbiAgICBhc3ROb2RlOiBmaWVsZC5hc3ROb2RlLFxuICB9KSk7XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhcmdzVG9BcmdzQ29uZmlnKGFyZ3MpIHtcbiAgcmV0dXJuIGtleVZhbE1hcChcbiAgICBhcmdzLFxuICAgIChhcmcpID0+IGFyZy5uYW1lLFxuICAgIChhcmcpID0+ICh7XG4gICAgICBkZXNjcmlwdGlvbjogYXJnLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZTogYXJnLnR5cGUsXG4gICAgICBkZWZhdWx0VmFsdWU6IGFyZy5kZWZhdWx0VmFsdWUsXG4gICAgICBkZXByZWNhdGlvblJlYXNvbjogYXJnLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgZXh0ZW5zaW9uczogYXJnLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiBhcmcuYXN0Tm9kZSxcbiAgICB9KSxcbiAgKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1JlcXVpcmVkQXJndW1lbnQoYXJnKSB7XG4gIHJldHVybiBpc05vbk51bGxUeXBlKGFyZy50eXBlKSAmJiBhcmcuZGVmYXVsdFZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIFR5cGUgRGVmaW5pdGlvblxuICpcbiAqIFdoZW4gYSBmaWVsZCBjYW4gcmV0dXJuIG9uZSBvZiBhIGhldGVyb2dlbmVvdXMgc2V0IG9mIHR5cGVzLCBhIEludGVyZmFjZSB0eXBlXG4gKiBpcyB1c2VkIHRvIGRlc2NyaWJlIHdoYXQgdHlwZXMgYXJlIHBvc3NpYmxlLCB3aGF0IGZpZWxkcyBhcmUgaW4gY29tbW9uIGFjcm9zc1xuICogYWxsIHR5cGVzLCBhcyB3ZWxsIGFzIGEgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoaWNoIHR5cGUgaXMgYWN0dWFsbHkgdXNlZFxuICogd2hlbiB0aGUgZmllbGQgaXMgcmVzb2x2ZWQuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgRW50aXR5VHlwZSA9IG5ldyBHcmFwaFFMSW50ZXJmYWNlVHlwZSh7XG4gKiAgIG5hbWU6ICdFbnRpdHknLFxuICogICBmaWVsZHM6IHtcbiAqICAgICBuYW1lOiB7IHR5cGU6IEdyYXBoUUxTdHJpbmcgfVxuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTEludGVyZmFjZVR5cGUge1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICB2YXIgX2NvbmZpZyRleHRlbnNpb25BU1ROMztcblxuICAgIHRoaXMubmFtZSA9IGFzc2VydE5hbWUoY29uZmlnLm5hbWUpO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy5yZXNvbHZlVHlwZSA9IGNvbmZpZy5yZXNvbHZlVHlwZTtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9XG4gICAgICAoX2NvbmZpZyRleHRlbnNpb25BU1ROMyA9IGNvbmZpZy5leHRlbnNpb25BU1ROb2RlcykgIT09IG51bGwgJiZcbiAgICAgIF9jb25maWckZXh0ZW5zaW9uQVNUTjMgIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckZXh0ZW5zaW9uQVNUTjNcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLl9maWVsZHMgPSBkZWZpbmVGaWVsZE1hcC5iaW5kKHVuZGVmaW5lZCwgY29uZmlnKTtcbiAgICB0aGlzLl9pbnRlcmZhY2VzID0gZGVmaW5lSW50ZXJmYWNlcy5iaW5kKHVuZGVmaW5lZCwgY29uZmlnKTtcbiAgICBjb25maWcucmVzb2x2ZVR5cGUgPT0gbnVsbCB8fFxuICAgICAgdHlwZW9mIGNvbmZpZy5yZXNvbHZlVHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgZGV2QXNzZXJ0KFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYCR7dGhpcy5uYW1lfSBtdXN0IHByb3ZpZGUgXCJyZXNvbHZlVHlwZVwiIGFzIGEgZnVuY3Rpb24sIGAgK1xuICAgICAgICAgIGBidXQgZ290OiAke2luc3BlY3QoY29uZmlnLnJlc29sdmVUeXBlKX0uYCxcbiAgICAgICk7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdHcmFwaFFMSW50ZXJmYWNlVHlwZSc7XG4gIH1cblxuICBnZXRGaWVsZHMoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9maWVsZHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2ZpZWxkcygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gIH1cblxuICBnZXRJbnRlcmZhY2VzKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5faW50ZXJmYWNlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5faW50ZXJmYWNlcyA9IHRoaXMuX2ludGVyZmFjZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faW50ZXJmYWNlcztcbiAgfVxuXG4gIHRvQ29uZmlnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIGludGVyZmFjZXM6IHRoaXMuZ2V0SW50ZXJmYWNlcygpLFxuICAgICAgZmllbGRzOiBmaWVsZHNUb0ZpZWxkc0NvbmZpZyh0aGlzLmdldEZpZWxkcygpKSxcbiAgICAgIHJlc29sdmVUeXBlOiB0aGlzLnJlc29sdmVUeXBlLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgfTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuXG4vKipcbiAqIFVuaW9uIFR5cGUgRGVmaW5pdGlvblxuICpcbiAqIFdoZW4gYSBmaWVsZCBjYW4gcmV0dXJuIG9uZSBvZiBhIGhldGVyb2dlbmVvdXMgc2V0IG9mIHR5cGVzLCBhIFVuaW9uIHR5cGVcbiAqIGlzIHVzZWQgdG8gZGVzY3JpYmUgd2hhdCB0eXBlcyBhcmUgcG9zc2libGUgYXMgd2VsbCBhcyBwcm92aWRpbmcgYSBmdW5jdGlvblxuICogdG8gZGV0ZXJtaW5lIHdoaWNoIHR5cGUgaXMgYWN0dWFsbHkgdXNlZCB3aGVuIHRoZSBmaWVsZCBpcyByZXNvbHZlZC5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBQZXRUeXBlID0gbmV3IEdyYXBoUUxVbmlvblR5cGUoe1xuICogICBuYW1lOiAnUGV0JyxcbiAqICAgdHlwZXM6IFsgRG9nVHlwZSwgQ2F0VHlwZSBdLFxuICogICByZXNvbHZlVHlwZSh2YWx1ZSkge1xuICogICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERvZykge1xuICogICAgICAgcmV0dXJuIERvZ1R5cGU7XG4gKiAgICAgfVxuICogICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIENhdCkge1xuICogICAgICAgcmV0dXJuIENhdFR5cGU7XG4gKiAgICAgfVxuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTFVuaW9uVHlwZSB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHZhciBfY29uZmlnJGV4dGVuc2lvbkFTVE40O1xuXG4gICAgdGhpcy5uYW1lID0gYXNzZXJ0TmFtZShjb25maWcubmFtZSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLnJlc29sdmVUeXBlID0gY29uZmlnLnJlc29sdmVUeXBlO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHRvT2JqTWFwKGNvbmZpZy5leHRlbnNpb25zKTtcbiAgICB0aGlzLmFzdE5vZGUgPSBjb25maWcuYXN0Tm9kZTtcbiAgICB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzID1cbiAgICAgIChfY29uZmlnJGV4dGVuc2lvbkFTVE40ID0gY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJlxuICAgICAgX2NvbmZpZyRleHRlbnNpb25BU1RONCAhPT0gdm9pZCAwXG4gICAgICAgID8gX2NvbmZpZyRleHRlbnNpb25BU1RONFxuICAgICAgICA6IFtdO1xuICAgIHRoaXMuX3R5cGVzID0gZGVmaW5lVHlwZXMuYmluZCh1bmRlZmluZWQsIGNvbmZpZyk7XG4gICAgY29uZmlnLnJlc29sdmVUeXBlID09IG51bGwgfHxcbiAgICAgIHR5cGVvZiBjb25maWcucmVzb2x2ZVR5cGUgPT09ICdmdW5jdGlvbicgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGAke3RoaXMubmFtZX0gbXVzdCBwcm92aWRlIFwicmVzb2x2ZVR5cGVcIiBhcyBhIGZ1bmN0aW9uLCBgICtcbiAgICAgICAgICBgYnV0IGdvdDogJHtpbnNwZWN0KGNvbmZpZy5yZXNvbHZlVHlwZSl9LmAsXG4gICAgICApO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnR3JhcGhRTFVuaW9uVHlwZSc7XG4gIH1cblxuICBnZXRUeXBlcygpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX3R5cGVzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLl90eXBlcyA9IHRoaXMuX3R5cGVzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3R5cGVzO1xuICB9XG5cbiAgdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZXM6IHRoaXMuZ2V0VHlwZXMoKSxcbiAgICAgIHJlc29sdmVUeXBlOiB0aGlzLnJlc29sdmVUeXBlLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgfTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVUeXBlcyhjb25maWcpIHtcbiAgY29uc3QgdHlwZXMgPSByZXNvbHZlUmVhZG9ubHlBcnJheVRodW5rKGNvbmZpZy50eXBlcyk7XG4gIEFycmF5LmlzQXJyYXkodHlwZXMpIHx8XG4gICAgZGV2QXNzZXJ0KFxuICAgICAgZmFsc2UsXG4gICAgICBgTXVzdCBwcm92aWRlIEFycmF5IG9mIHR5cGVzIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBzdWNoIGFuIGFycmF5IGZvciBVbmlvbiAke2NvbmZpZy5uYW1lfS5gLFxuICAgICk7XG4gIHJldHVybiB0eXBlcztcbn1cblxuLyoqXG4gKiBFbnVtIFR5cGUgRGVmaW5pdGlvblxuICpcbiAqIFNvbWUgbGVhZiB2YWx1ZXMgb2YgcmVxdWVzdHMgYW5kIGlucHV0IHZhbHVlcyBhcmUgRW51bXMuIEdyYXBoUUwgc2VyaWFsaXplc1xuICogRW51bSB2YWx1ZXMgYXMgc3RyaW5ncywgaG93ZXZlciBpbnRlcm5hbGx5IEVudW1zIGNhbiBiZSByZXByZXNlbnRlZCBieSBhbnlcbiAqIGtpbmQgb2YgdHlwZSwgb2Z0ZW4gaW50ZWdlcnMuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgUkdCVHlwZSA9IG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICogICBuYW1lOiAnUkdCJyxcbiAqICAgdmFsdWVzOiB7XG4gKiAgICAgUkVEOiB7IHZhbHVlOiAwIH0sXG4gKiAgICAgR1JFRU46IHsgdmFsdWU6IDEgfSxcbiAqICAgICBCTFVFOiB7IHZhbHVlOiAyIH1cbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiBhIHZhbHVlIGlzIG5vdCBwcm92aWRlZCBpbiBhIGRlZmluaXRpb24sIHRoZSBuYW1lIG9mIHRoZSBlbnVtIHZhbHVlXG4gKiB3aWxsIGJlIHVzZWQgYXMgaXRzIGludGVybmFsIHZhbHVlLlxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTEVudW1UeXBlIHtcbiAgLyogPFQ+ICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHZhciBfY29uZmlnJGV4dGVuc2lvbkFTVE41O1xuXG4gICAgdGhpcy5uYW1lID0gYXNzZXJ0TmFtZShjb25maWcubmFtZSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9XG4gICAgICAoX2NvbmZpZyRleHRlbnNpb25BU1RONSA9IGNvbmZpZy5leHRlbnNpb25BU1ROb2RlcykgIT09IG51bGwgJiZcbiAgICAgIF9jb25maWckZXh0ZW5zaW9uQVNUTjUgIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckZXh0ZW5zaW9uQVNUTjVcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLl92YWx1ZXMgPSBkZWZpbmVFbnVtVmFsdWVzKHRoaXMubmFtZSwgY29uZmlnLnZhbHVlcyk7XG4gICAgdGhpcy5fdmFsdWVMb29rdXAgPSBuZXcgTWFwKFxuICAgICAgdGhpcy5fdmFsdWVzLm1hcCgoZW51bVZhbHVlKSA9PiBbZW51bVZhbHVlLnZhbHVlLCBlbnVtVmFsdWVdKSxcbiAgICApO1xuICAgIHRoaXMuX25hbWVMb29rdXAgPSBrZXlNYXAodGhpcy5fdmFsdWVzLCAodmFsdWUpID0+IHZhbHVlLm5hbWUpO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnR3JhcGhRTEVudW1UeXBlJztcbiAgfVxuXG4gIGdldFZhbHVlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVzO1xuICB9XG5cbiAgZ2V0VmFsdWUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9uYW1lTG9va3VwW25hbWVdO1xuICB9XG5cbiAgc2VyaWFsaXplKG91dHB1dFZhbHVlKSB7XG4gICAgY29uc3QgZW51bVZhbHVlID0gdGhpcy5fdmFsdWVMb29rdXAuZ2V0KG91dHB1dFZhbHVlKTtcblxuICAgIGlmIChlbnVtVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYEVudW0gXCIke3RoaXMubmFtZX1cIiBjYW5ub3QgcmVwcmVzZW50IHZhbHVlOiAke2luc3BlY3Qob3V0cHV0VmFsdWUpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBlbnVtVmFsdWUubmFtZTtcbiAgfVxuXG4gIHBhcnNlVmFsdWUoaW5wdXRWYWx1ZSkgLyogVCAqL1xuICB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dFZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgdmFsdWVTdHIgPSBpbnNwZWN0KGlucHV0VmFsdWUpO1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYEVudW0gXCIke3RoaXMubmFtZX1cIiBjYW5ub3QgcmVwcmVzZW50IG5vbi1zdHJpbmcgdmFsdWU6ICR7dmFsdWVTdHJ9LmAgK1xuICAgICAgICAgIGRpZFlvdU1lYW5FbnVtVmFsdWUodGhpcywgdmFsdWVTdHIpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnVtVmFsdWUgPSB0aGlzLmdldFZhbHVlKGlucHV0VmFsdWUpO1xuXG4gICAgaWYgKGVudW1WYWx1ZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgVmFsdWUgXCIke2lucHV0VmFsdWV9XCIgZG9lcyBub3QgZXhpc3QgaW4gXCIke3RoaXMubmFtZX1cIiBlbnVtLmAgK1xuICAgICAgICAgIGRpZFlvdU1lYW5FbnVtVmFsdWUodGhpcywgaW5wdXRWYWx1ZSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBlbnVtVmFsdWUudmFsdWU7XG4gIH1cblxuICBwYXJzZUxpdGVyYWwodmFsdWVOb2RlLCBfdmFyaWFibGVzKSAvKiBUICovXG4gIHtcbiAgICAvLyBOb3RlOiB2YXJpYWJsZXMgd2lsbCBiZSByZXNvbHZlZCB0byBhIHZhbHVlIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAgaWYgKHZhbHVlTm9kZS5raW5kICE9PSBLaW5kLkVOVU0pIHtcbiAgICAgIGNvbnN0IHZhbHVlU3RyID0gcHJpbnQodmFsdWVOb2RlKTtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgIGBFbnVtIFwiJHt0aGlzLm5hbWV9XCIgY2Fubm90IHJlcHJlc2VudCBub24tZW51bSB2YWx1ZTogJHt2YWx1ZVN0cn0uYCArXG4gICAgICAgICAgZGlkWW91TWVhbkVudW1WYWx1ZSh0aGlzLCB2YWx1ZVN0ciksXG4gICAgICAgIHtcbiAgICAgICAgICBub2RlczogdmFsdWVOb2RlLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnVtVmFsdWUgPSB0aGlzLmdldFZhbHVlKHZhbHVlTm9kZS52YWx1ZSk7XG5cbiAgICBpZiAoZW51bVZhbHVlID09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZhbHVlU3RyID0gcHJpbnQodmFsdWVOb2RlKTtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgIGBWYWx1ZSBcIiR7dmFsdWVTdHJ9XCIgZG9lcyBub3QgZXhpc3QgaW4gXCIke3RoaXMubmFtZX1cIiBlbnVtLmAgK1xuICAgICAgICAgIGRpZFlvdU1lYW5FbnVtVmFsdWUodGhpcywgdmFsdWVTdHIpLFxuICAgICAgICB7XG4gICAgICAgICAgbm9kZXM6IHZhbHVlTm9kZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudW1WYWx1ZS52YWx1ZTtcbiAgfVxuXG4gIHRvQ29uZmlnKCkge1xuICAgIGNvbnN0IHZhbHVlcyA9IGtleVZhbE1hcChcbiAgICAgIHRoaXMuZ2V0VmFsdWVzKCksXG4gICAgICAodmFsdWUpID0+IHZhbHVlLm5hbWUsXG4gICAgICAodmFsdWUpID0+ICh7XG4gICAgICAgIGRlc2NyaXB0aW9uOiB2YWx1ZS5kZXNjcmlwdGlvbixcbiAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgICAgICBkZXByZWNhdGlvblJlYXNvbjogdmFsdWUuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgICAgIGV4dGVuc2lvbnM6IHZhbHVlLmV4dGVuc2lvbnMsXG4gICAgICAgIGFzdE5vZGU6IHZhbHVlLmFzdE5vZGUsXG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIHZhbHVlcyxcbiAgICAgIGV4dGVuc2lvbnM6IHRoaXMuZXh0ZW5zaW9ucyxcbiAgICAgIGFzdE5vZGU6IHRoaXMuYXN0Tm9kZSxcbiAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzLFxuICAgIH07XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGlkWW91TWVhbkVudW1WYWx1ZShlbnVtVHlwZSwgdW5rbm93blZhbHVlU3RyKSB7XG4gIGNvbnN0IGFsbE5hbWVzID0gZW51bVR5cGUuZ2V0VmFsdWVzKCkubWFwKCh2YWx1ZSkgPT4gdmFsdWUubmFtZSk7XG4gIGNvbnN0IHN1Z2dlc3RlZFZhbHVlcyA9IHN1Z2dlc3Rpb25MaXN0KHVua25vd25WYWx1ZVN0ciwgYWxsTmFtZXMpO1xuICByZXR1cm4gZGlkWW91TWVhbigndGhlIGVudW0gdmFsdWUnLCBzdWdnZXN0ZWRWYWx1ZXMpO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVFbnVtVmFsdWVzKHR5cGVOYW1lLCB2YWx1ZU1hcCkge1xuICBpc1BsYWluT2JqKHZhbHVlTWFwKSB8fFxuICAgIGRldkFzc2VydChcbiAgICAgIGZhbHNlLFxuICAgICAgYCR7dHlwZU5hbWV9IHZhbHVlcyBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIHZhbHVlIG5hbWVzIGFzIGtleXMuYCxcbiAgICApO1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWVNYXApLm1hcCgoW3ZhbHVlTmFtZSwgdmFsdWVDb25maWddKSA9PiB7XG4gICAgaXNQbGFpbk9iaih2YWx1ZUNvbmZpZykgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGAke3R5cGVOYW1lfS4ke3ZhbHVlTmFtZX0gbXVzdCByZWZlciB0byBhbiBvYmplY3Qgd2l0aCBhIFwidmFsdWVcIiBrZXkgYCArXG4gICAgICAgICAgYHJlcHJlc2VudGluZyBhbiBpbnRlcm5hbCB2YWx1ZSBidXQgZ290OiAke2luc3BlY3QodmFsdWVDb25maWcpfS5gLFxuICAgICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogYXNzZXJ0RW51bVZhbHVlTmFtZSh2YWx1ZU5hbWUpLFxuICAgICAgZGVzY3JpcHRpb246IHZhbHVlQ29uZmlnLmRlc2NyaXB0aW9uLFxuICAgICAgdmFsdWU6IHZhbHVlQ29uZmlnLnZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZUNvbmZpZy52YWx1ZSA6IHZhbHVlTmFtZSxcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiB2YWx1ZUNvbmZpZy5kZXByZWNhdGlvblJlYXNvbixcbiAgICAgIGV4dGVuc2lvbnM6IHRvT2JqTWFwKHZhbHVlQ29uZmlnLmV4dGVuc2lvbnMpLFxuICAgICAgYXN0Tm9kZTogdmFsdWVDb25maWcuYXN0Tm9kZSxcbiAgICB9O1xuICB9KTtcbn1cblxuLyoqXG4gKiBJbnB1dCBPYmplY3QgVHlwZSBEZWZpbml0aW9uXG4gKlxuICogQW4gaW5wdXQgb2JqZWN0IGRlZmluZXMgYSBzdHJ1Y3R1cmVkIGNvbGxlY3Rpb24gb2YgZmllbGRzIHdoaWNoIG1heSBiZVxuICogc3VwcGxpZWQgdG8gYSBmaWVsZCBhcmd1bWVudC5cbiAqXG4gKiBVc2luZyBgTm9uTnVsbGAgd2lsbCBlbnN1cmUgdGhhdCBhIHZhbHVlIG11c3QgYmUgcHJvdmlkZWQgYnkgdGhlIHF1ZXJ5XG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgR2VvUG9pbnQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gKiAgIG5hbWU6ICdHZW9Qb2ludCcsXG4gKiAgIGZpZWxkczoge1xuICogICAgIGxhdDogeyB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEZsb2F0KSB9LFxuICogICAgIGxvbjogeyB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEZsb2F0KSB9LFxuICogICAgIGFsdDogeyB0eXBlOiBHcmFwaFFMRmxvYXQsIGRlZmF1bHRWYWx1ZTogMCB9LFxuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTElucHV0T2JqZWN0VHlwZSB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHZhciBfY29uZmlnJGV4dGVuc2lvbkFTVE42O1xuXG4gICAgdGhpcy5uYW1lID0gYXNzZXJ0TmFtZShjb25maWcubmFtZSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9XG4gICAgICAoX2NvbmZpZyRleHRlbnNpb25BU1RONiA9IGNvbmZpZy5leHRlbnNpb25BU1ROb2RlcykgIT09IG51bGwgJiZcbiAgICAgIF9jb25maWckZXh0ZW5zaW9uQVNUTjYgIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckZXh0ZW5zaW9uQVNUTjZcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLl9maWVsZHMgPSBkZWZpbmVJbnB1dEZpZWxkTWFwLmJpbmQodW5kZWZpbmVkLCBjb25maWcpO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnR3JhcGhRTElucHV0T2JqZWN0VHlwZSc7XG4gIH1cblxuICBnZXRGaWVsZHMoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9maWVsZHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2ZpZWxkcygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gIH1cblxuICB0b0NvbmZpZygpIHtcbiAgICBjb25zdCBmaWVsZHMgPSBtYXBWYWx1ZSh0aGlzLmdldEZpZWxkcygpLCAoZmllbGQpID0+ICh7XG4gICAgICBkZXNjcmlwdGlvbjogZmllbGQuZGVzY3JpcHRpb24sXG4gICAgICB0eXBlOiBmaWVsZC50eXBlLFxuICAgICAgZGVmYXVsdFZhbHVlOiBmaWVsZC5kZWZhdWx0VmFsdWUsXG4gICAgICBkZXByZWNhdGlvblJlYXNvbjogZmllbGQuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgICBleHRlbnNpb25zOiBmaWVsZC5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogZmllbGQuYXN0Tm9kZSxcbiAgICB9KSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgZmllbGRzLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgfTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVJbnB1dEZpZWxkTWFwKGNvbmZpZykge1xuICBjb25zdCBmaWVsZE1hcCA9IHJlc29sdmVPYmpNYXBUaHVuayhjb25maWcuZmllbGRzKTtcbiAgaXNQbGFpbk9iaihmaWVsZE1hcCkgfHxcbiAgICBkZXZBc3NlcnQoXG4gICAgICBmYWxzZSxcbiAgICAgIGAke2NvbmZpZy5uYW1lfSBmaWVsZHMgbXVzdCBiZSBhbiBvYmplY3Qgd2l0aCBmaWVsZCBuYW1lcyBhcyBrZXlzIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBzdWNoIGFuIG9iamVjdC5gLFxuICAgICk7XG4gIHJldHVybiBtYXBWYWx1ZShmaWVsZE1hcCwgKGZpZWxkQ29uZmlnLCBmaWVsZE5hbWUpID0+IHtcbiAgICAhKCdyZXNvbHZlJyBpbiBmaWVsZENvbmZpZykgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGAke2NvbmZpZy5uYW1lfS4ke2ZpZWxkTmFtZX0gZmllbGQgaGFzIGEgcmVzb2x2ZSBwcm9wZXJ0eSwgYnV0IElucHV0IFR5cGVzIGNhbm5vdCBkZWZpbmUgcmVzb2x2ZXJzLmAsXG4gICAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBhc3NlcnROYW1lKGZpZWxkTmFtZSksXG4gICAgICBkZXNjcmlwdGlvbjogZmllbGRDb25maWcuZGVzY3JpcHRpb24sXG4gICAgICB0eXBlOiBmaWVsZENvbmZpZy50eXBlLFxuICAgICAgZGVmYXVsdFZhbHVlOiBmaWVsZENvbmZpZy5kZWZhdWx0VmFsdWUsXG4gICAgICBkZXByZWNhdGlvblJlYXNvbjogZmllbGRDb25maWcuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgICBleHRlbnNpb25zOiB0b09iak1hcChmaWVsZENvbmZpZy5leHRlbnNpb25zKSxcbiAgICAgIGFzdE5vZGU6IGZpZWxkQ29uZmlnLmFzdE5vZGUsXG4gICAgfTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlcXVpcmVkSW5wdXRGaWVsZChmaWVsZCkge1xuICByZXR1cm4gaXNOb25OdWxsVHlwZShmaWVsZC50eXBlKSAmJiBmaWVsZC5kZWZhdWx0VmFsdWUgPT09IHVuZGVmaW5lZDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/definition.mjs\n");
|
817 |
|
818 | }),
|
819 |
|
820 | "../../../node_modules/graphql/type/directives.mjs":
|
821 |
|
822 |
|
823 |
|
824 |
|
825 | (function(module, __webpack_exports__, __webpack_require__) {
|
826 |
|
827 | "use strict";
|
828 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDirective\", function() { return isDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertDirective\", function() { return assertDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDirective\", function() { return GraphQLDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLIncludeDirective\", function() { return GraphQLIncludeDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSkipDirective\", function() { return GraphQLSkipDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_DEPRECATION_REASON\", function() { return DEFAULT_DEPRECATION_REASON; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDeprecatedDirective\", function() { return GraphQLDeprecatedDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSpecifiedByDirective\", function() { return GraphQLSpecifiedByDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"specifiedDirectives\", function() { return specifiedDirectives; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSpecifiedDirective\", function() { return isSpecifiedDirective; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/instanceOf.mjs */ \"../../../node_modules/graphql/jsutils/instanceOf.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/toObjMap.mjs */ \"../../../node_modules/graphql/jsutils/toObjMap.mjs\");\n/* harmony import */ var _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../language/directiveLocation.mjs */ \"../../../node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony import */ var _assertName_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./assertName.mjs */ \"../../../node_modules/graphql/type/assertName.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _scalars_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n\n\n\n\n\n\n\n\n\n/**\n * Test if the given value is a GraphQL directive.\n */\n\nfunction isDirective(directive) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_2__[\"instanceOf\"])(directive, GraphQLDirective);\n}\nfunction assertDirective(directive) {\n if (!isDirective(directive)) {\n throw new Error(\n `Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(directive)} to be a GraphQL directive.`,\n );\n }\n\n return directive;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Directives are used by the GraphQL runtime as a way of modifying execution\n * behavior. Type system creators will usually not create these directly.\n */\nclass GraphQLDirective {\n constructor(config) {\n var _config$isRepeatable, _config$args;\n\n this.name = Object(_assertName_mjs__WEBPACK_IMPORTED_MODULE_6__[\"assertName\"])(config.name);\n this.description = config.description;\n this.locations = config.locations;\n this.isRepeatable =\n (_config$isRepeatable = config.isRepeatable) !== null &&\n _config$isRepeatable !== void 0\n ? _config$isRepeatable\n : false;\n this.extensions = Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_4__[\"toObjMap\"])(config.extensions);\n this.astNode = config.astNode;\n Array.isArray(config.locations) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(false, `@${config.name} locations must be an Array.`);\n const args =\n (_config$args = config.args) !== null && _config$args !== void 0\n ? _config$args\n : {};\n (Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isObjectLike\"])(args) && !Array.isArray(args)) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `@${config.name} args must be an object with argument names as keys.`,\n );\n this.args = Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"defineArguments\"])(args);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLDirective';\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n locations: this.locations,\n args: Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"argsToArgsConfig\"])(this.args),\n isRepeatable: this.isRepeatable,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n toString() {\n return '@' + this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\n/**\n * Used to conditionally include fields or fragments.\n */\nconst GraphQLIncludeDirective = new GraphQLDirective({\n name: 'include',\n description:\n 'Directs the executor to include this field or fragment only when the `if` argument is true.',\n locations: [\n _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__[\"DirectiveLocation\"].FIELD,\n _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__[\"DirectiveLocation\"].FRAGMENT_SPREAD,\n _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__[\"DirectiveLocation\"].INLINE_FRAGMENT,\n ],\n args: {\n if: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLBoolean\"]),\n description: 'Included when true.',\n },\n },\n});\n/**\n * Used to conditionally skip (exclude) fields or fragments.\n */\n\nconst GraphQLSkipDirective = new GraphQLDirective({\n name: 'skip',\n description:\n 'Directs the executor to skip this field or fragment when the `if` argument is true.',\n locations: [\n _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__[\"DirectiveLocation\"].FIELD,\n _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__[\"DirectiveLocation\"].FRAGMENT_SPREAD,\n _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__[\"DirectiveLocation\"].INLINE_FRAGMENT,\n ],\n args: {\n if: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLBoolean\"]),\n description: 'Skipped when true.',\n },\n },\n});\n/**\n * Constant string used for default reason for a deprecation.\n */\n\nconst DEFAULT_DEPRECATION_REASON = 'No longer supported';\n/**\n * Used to declare element of a GraphQL schema as deprecated.\n */\n\nconst GraphQLDeprecatedDirective = new GraphQLDirective({\n name: 'deprecated',\n description: 'Marks an element of a GraphQL schema as no longer supported.',\n locations: [\n _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__[\"DirectiveLocation\"].FIELD_DEFINITION,\n _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__[\"DirectiveLocation\"].ARGUMENT_DEFINITION,\n _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__[\"DirectiveLocation\"].INPUT_FIELD_DEFINITION,\n _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__[\"DirectiveLocation\"].ENUM_VALUE,\n ],\n args: {\n reason: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLString\"],\n description:\n 'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).',\n defaultValue: DEFAULT_DEPRECATION_REASON,\n },\n },\n});\n/**\n * Used to provide a URL for specifying the behavior of custom scalar definitions.\n */\n\nconst GraphQLSpecifiedByDirective = new GraphQLDirective({\n name: 'specifiedBy',\n description: 'Exposes a URL that specifies the behavior of this scalar.',\n locations: [_language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__[\"DirectiveLocation\"].SCALAR],\n args: {\n url: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLString\"]),\n description: 'The URL that specifies the behavior of this scalar.',\n },\n },\n});\n/**\n * The full list of specified directives.\n */\n\nconst specifiedDirectives = Object.freeze([\n GraphQLIncludeDirective,\n GraphQLSkipDirective,\n GraphQLDeprecatedDirective,\n GraphQLSpecifiedByDirective,\n]);\nfunction isSpecifiedDirective(directive) {\n return specifiedDirectives.some(({ name }) => name === directive.name);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9kaXJlY3RpdmVzLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3R5cGUvZGlyZWN0aXZlcy5tanM/Y2QzNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXZBc3NlcnQgfSBmcm9tICcuLi9qc3V0aWxzL2RldkFzc2VydC5tanMnO1xuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW5zdGFuY2VPZiB9IGZyb20gJy4uL2pzdXRpbHMvaW5zdGFuY2VPZi5tanMnO1xuaW1wb3J0IHsgaXNPYmplY3RMaWtlIH0gZnJvbSAnLi4vanN1dGlscy9pc09iamVjdExpa2UubWpzJztcbmltcG9ydCB7IHRvT2JqTWFwIH0gZnJvbSAnLi4vanN1dGlscy90b09iak1hcC5tanMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlTG9jYXRpb24gfSBmcm9tICcuLi9sYW5ndWFnZS9kaXJlY3RpdmVMb2NhdGlvbi5tanMnO1xuaW1wb3J0IHsgYXNzZXJ0TmFtZSB9IGZyb20gJy4vYXNzZXJ0TmFtZS5tanMnO1xuaW1wb3J0IHtcbiAgYXJnc1RvQXJnc0NvbmZpZyxcbiAgZGVmaW5lQXJndW1lbnRzLFxuICBHcmFwaFFMTm9uTnVsbCxcbn0gZnJvbSAnLi9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMQm9vbGVhbiwgR3JhcGhRTFN0cmluZyB9IGZyb20gJy4vc2NhbGFycy5tanMnO1xuLyoqXG4gKiBUZXN0IGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIEdyYXBoUUwgZGlyZWN0aXZlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpcmVjdGl2ZShkaXJlY3RpdmUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YoZGlyZWN0aXZlLCBHcmFwaFFMRGlyZWN0aXZlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnREaXJlY3RpdmUoZGlyZWN0aXZlKSB7XG4gIGlmICghaXNEaXJlY3RpdmUoZGlyZWN0aXZlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBFeHBlY3RlZCAke2luc3BlY3QoZGlyZWN0aXZlKX0gdG8gYmUgYSBHcmFwaFFMIGRpcmVjdGl2ZS5gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZGlyZWN0aXZlO1xufVxuLyoqXG4gKiBDdXN0b20gZXh0ZW5zaW9uc1xuICpcbiAqIEByZW1hcmtzXG4gKiBVc2UgYSB1bmlxdWUgaWRlbnRpZmllciBuYW1lIGZvciB5b3VyIGV4dGVuc2lvbiwgZm9yIGV4YW1wbGUgdGhlIG5hbWUgb2ZcbiAqIHlvdXIgbGlicmFyeSBvciBwcm9qZWN0LiBEbyBub3QgdXNlIGEgc2hvcnRlbmVkIGlkZW50aWZpZXIgYXMgdGhpcyBpbmNyZWFzZXNcbiAqIHRoZSByaXNrIG9mIGNvbmZsaWN0cy4gV2UgcmVjb21tZW5kIHlvdSBhZGQgYXQgbW9zdCBvbmUgZXh0ZW5zaW9uIGZpZWxkLFxuICogYW4gb2JqZWN0IHdoaWNoIGNhbiBjb250YWluIGFsbCB0aGUgdmFsdWVzIHlvdSBuZWVkLlxuICovXG5cbi8qKlxuICogRGlyZWN0aXZlcyBhcmUgdXNlZCBieSB0aGUgR3JhcGhRTCBydW50aW1lIGFzIGEgd2F5IG9mIG1vZGlmeWluZyBleGVjdXRpb25cbiAqIGJlaGF2aW9yLiBUeXBlIHN5c3RlbSBjcmVhdG9ycyB3aWxsIHVzdWFsbHkgbm90IGNyZWF0ZSB0aGVzZSBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoUUxEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICB2YXIgX2NvbmZpZyRpc1JlcGVhdGFibGUsIF9jb25maWckYXJncztcblxuICAgIHRoaXMubmFtZSA9IGFzc2VydE5hbWUoY29uZmlnLm5hbWUpO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy5sb2NhdGlvbnMgPSBjb25maWcubG9jYXRpb25zO1xuICAgIHRoaXMuaXNSZXBlYXRhYmxlID1cbiAgICAgIChfY29uZmlnJGlzUmVwZWF0YWJsZSA9IGNvbmZpZy5pc1JlcGVhdGFibGUpICE9PSBudWxsICYmXG4gICAgICBfY29uZmlnJGlzUmVwZWF0YWJsZSAhPT0gdm9pZCAwXG4gICAgICAgID8gX2NvbmZpZyRpc1JlcGVhdGFibGVcbiAgICAgICAgOiBmYWxzZTtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgQXJyYXkuaXNBcnJheShjb25maWcubG9jYXRpb25zKSB8fFxuICAgICAgZGV2QXNzZXJ0KGZhbHNlLCBgQCR7Y29uZmlnLm5hbWV9IGxvY2F0aW9ucyBtdXN0IGJlIGFuIEFycmF5LmApO1xuICAgIGNvbnN0IGFyZ3MgPVxuICAgICAgKF9jb25maWckYXJncyA9IGNvbmZpZy5hcmdzKSAhPT0gbnVsbCAmJiBfY29uZmlnJGFyZ3MgIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckYXJnc1xuICAgICAgICA6IHt9O1xuICAgIChpc09iamVjdExpa2UoYXJncykgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpIHx8XG4gICAgICBkZXZBc3NlcnQoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBgQCR7Y29uZmlnLm5hbWV9IGFyZ3MgbXVzdCBiZSBhbiBvYmplY3Qgd2l0aCBhcmd1bWVudCBuYW1lcyBhcyBrZXlzLmAsXG4gICAgICApO1xuICAgIHRoaXMuYXJncyA9IGRlZmluZUFyZ3VtZW50cyhhcmdzKTtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0dyYXBoUUxEaXJlY3RpdmUnO1xuICB9XG5cbiAgdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgbG9jYXRpb25zOiB0aGlzLmxvY2F0aW9ucyxcbiAgICAgIGFyZ3M6IGFyZ3NUb0FyZ3NDb25maWcodGhpcy5hcmdzKSxcbiAgICAgIGlzUmVwZWF0YWJsZTogdGhpcy5pc1JlcGVhdGFibGUsXG4gICAgICBleHRlbnNpb25zOiB0aGlzLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiB0aGlzLmFzdE5vZGUsXG4gICAgfTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAnQCcgKyB0aGlzLm5hbWU7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuXG4vKipcbiAqIFVzZWQgdG8gY29uZGl0aW9uYWxseSBpbmNsdWRlIGZpZWxkcyBvciBmcmFnbWVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBHcmFwaFFMSW5jbHVkZURpcmVjdGl2ZSA9IG5ldyBHcmFwaFFMRGlyZWN0aXZlKHtcbiAgbmFtZTogJ2luY2x1ZGUnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnRGlyZWN0cyB0aGUgZXhlY3V0b3IgdG8gaW5jbHVkZSB0aGlzIGZpZWxkIG9yIGZyYWdtZW50IG9ubHkgd2hlbiB0aGUgYGlmYCBhcmd1bWVudCBpcyB0cnVlLicsXG4gIGxvY2F0aW9uczogW1xuICAgIERpcmVjdGl2ZUxvY2F0aW9uLkZJRUxELFxuICAgIERpcmVjdGl2ZUxvY2F0aW9uLkZSQUdNRU5UX1NQUkVBRCxcbiAgICBEaXJlY3RpdmVMb2NhdGlvbi5JTkxJTkVfRlJBR01FTlQsXG4gIF0sXG4gIGFyZ3M6IHtcbiAgICBpZjoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5jbHVkZWQgd2hlbiB0cnVlLicsXG4gICAgfSxcbiAgfSxcbn0pO1xuLyoqXG4gKiBVc2VkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCAoZXhjbHVkZSkgZmllbGRzIG9yIGZyYWdtZW50cy5cbiAqL1xuXG5leHBvcnQgY29uc3QgR3JhcGhRTFNraXBEaXJlY3RpdmUgPSBuZXcgR3JhcGhRTERpcmVjdGl2ZSh7XG4gIG5hbWU6ICdza2lwJyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ0RpcmVjdHMgdGhlIGV4ZWN1dG9yIHRvIHNraXAgdGhpcyBmaWVsZCBvciBmcmFnbWVudCB3aGVuIHRoZSBgaWZgIGFyZ3VtZW50IGlzIHRydWUuJyxcbiAgbG9jYXRpb25zOiBbXG4gICAgRGlyZWN0aXZlTG9jYXRpb24uRklFTEQsXG4gICAgRGlyZWN0aXZlTG9jYXRpb24uRlJBR01FTlRfU1BSRUFELFxuICAgIERpcmVjdGl2ZUxvY2F0aW9uLklOTElORV9GUkFHTUVOVCxcbiAgXSxcbiAgYXJnczoge1xuICAgIGlmOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgZGVzY3JpcHRpb246ICdTa2lwcGVkIHdoZW4gdHJ1ZS4nLFxuICAgIH0sXG4gIH0sXG59KTtcbi8qKlxuICogQ29uc3RhbnQgc3RyaW5nIHVzZWQgZm9yIGRlZmF1bHQgcmVhc29uIGZvciBhIGRlcHJlY2F0aW9uLlxuICovXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RFUFJFQ0FUSU9OX1JFQVNPTiA9ICdObyBsb25nZXIgc3VwcG9ydGVkJztcbi8qKlxuICogVXNlZCB0byBkZWNsYXJlIGVsZW1lbnQgb2YgYSBHcmFwaFFMIHNjaGVtYSBhcyBkZXByZWNhdGVkLlxuICovXG5cbmV4cG9ydCBjb25zdCBHcmFwaFFMRGVwcmVjYXRlZERpcmVjdGl2ZSA9IG5ldyBHcmFwaFFMRGlyZWN0aXZlKHtcbiAgbmFtZTogJ2RlcHJlY2F0ZWQnLFxuICBkZXNjcmlwdGlvbjogJ01hcmtzIGFuIGVsZW1lbnQgb2YgYSBHcmFwaFFMIHNjaGVtYSBhcyBubyBsb25nZXIgc3VwcG9ydGVkLicsXG4gIGxvY2F0aW9uczogW1xuICAgIERpcmVjdGl2ZUxvY2F0aW9uLkZJRUxEX0RFRklOSVRJT04sXG4gICAgRGlyZWN0aXZlTG9jYXRpb24uQVJHVU1FTlRfREVGSU5JVElPTixcbiAgICBEaXJlY3RpdmVMb2NhdGlvbi5JTlBVVF9GSUVMRF9ERUZJTklUSU9OLFxuICAgIERpcmVjdGl2ZUxvY2F0aW9uLkVOVU1fVkFMVUUsXG4gIF0sXG4gIGFyZ3M6IHtcbiAgICByZWFzb246IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0V4cGxhaW5zIHdoeSB0aGlzIGVsZW1lbnQgd2FzIGRlcHJlY2F0ZWQsIHVzdWFsbHkgYWxzbyBpbmNsdWRpbmcgYSBzdWdnZXN0aW9uIGZvciBob3cgdG8gYWNjZXNzIHN1cHBvcnRlZCBzaW1pbGFyIGRhdGEuIEZvcm1hdHRlZCB1c2luZyB0aGUgTWFya2Rvd24gc3ludGF4LCBhcyBzcGVjaWZpZWQgYnkgW0NvbW1vbk1hcmtdKGh0dHBzOi8vY29tbW9ubWFyay5vcmcvKS4nLFxuICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0RFUFJFQ0FUSU9OX1JFQVNPTixcbiAgICB9LFxuICB9LFxufSk7XG4vKipcbiAqIFVzZWQgdG8gcHJvdmlkZSBhIFVSTCBmb3Igc3BlY2lmeWluZyB0aGUgYmVoYXZpb3Igb2YgY3VzdG9tIHNjYWxhciBkZWZpbml0aW9ucy5cbiAqL1xuXG5leHBvcnQgY29uc3QgR3JhcGhRTFNwZWNpZmllZEJ5RGlyZWN0aXZlID0gbmV3IEdyYXBoUUxEaXJlY3RpdmUoe1xuICBuYW1lOiAnc3BlY2lmaWVkQnknLFxuICBkZXNjcmlwdGlvbjogJ0V4cG9zZXMgYSBVUkwgdGhhdCBzcGVjaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoaXMgc2NhbGFyLicsXG4gIGxvY2F0aW9uczogW0RpcmVjdGl2ZUxvY2F0aW9uLlNDQUxBUl0sXG4gIGFyZ3M6IHtcbiAgICB1cmw6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIFVSTCB0aGF0IHNwZWNpZmllcyB0aGUgYmVoYXZpb3Igb2YgdGhpcyBzY2FsYXIuJyxcbiAgICB9LFxuICB9LFxufSk7XG4vKipcbiAqIFRoZSBmdWxsIGxpc3Qgb2Ygc3BlY2lmaWVkIGRpcmVjdGl2ZXMuXG4gKi9cblxuZXhwb3J0IGNvbnN0IHNwZWNpZmllZERpcmVjdGl2ZXMgPSBPYmplY3QuZnJlZXplKFtcbiAgR3JhcGhRTEluY2x1ZGVEaXJlY3RpdmUsXG4gIEdyYXBoUUxTa2lwRGlyZWN0aXZlLFxuICBHcmFwaFFMRGVwcmVjYXRlZERpcmVjdGl2ZSxcbiAgR3JhcGhRTFNwZWNpZmllZEJ5RGlyZWN0aXZlLFxuXSk7XG5leHBvcnQgZnVuY3Rpb24gaXNTcGVjaWZpZWREaXJlY3RpdmUoZGlyZWN0aXZlKSB7XG4gIHJldHVybiBzcGVjaWZpZWREaXJlY3RpdmVzLnNvbWUoKHsgbmFtZSB9KSA9PiBuYW1lID09PSBkaXJlY3RpdmUubmFtZSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/directives.mjs\n");
|
829 |
|
830 | }),
|
831 |
|
832 | "../../../node_modules/graphql/type/index.mjs":
|
833 |
|
834 |
|
835 |
|
836 |
|
837 | (function(module, __webpack_exports__, __webpack_require__) {
|
838 |
|
839 | "use strict";
|
840 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _schema_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSchema\", function() { return _schema_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertSchema\", function() { return _schema_mjs__WEBPACK_IMPORTED_MODULE_0__[\"assertSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSchema\", function() { return _schema_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLSchema\"]; });\n\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveObjMapThunk\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"resolveObjMapThunk\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resolveReadonlyArrayThunk\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"resolveReadonlyArrayThunk\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isScalarType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObjectType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInterfaceType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isInterfaceType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isUnionType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isUnionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEnumType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isEnumType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInputObjectType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isInputObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isListType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isListType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNonNullType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isNonNullType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInputType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isInputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isOutputType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isOutputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isLeafType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isLeafType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isCompositeType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isCompositeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isAbstractType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isAbstractType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isWrappingType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isWrappingType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNullableType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isNullableType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNamedType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isNamedType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRequiredArgument\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isRequiredArgument\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRequiredInputField\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isRequiredInputField\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertScalarType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertObjectType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertInterfaceType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertInterfaceType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertUnionType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertUnionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertEnumType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertEnumType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertInputObjectType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertInputObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertListType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertListType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertNonNullType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertNonNullType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertInputType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertInputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertOutputType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertOutputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertLeafType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertLeafType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertCompositeType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertCompositeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertAbstractType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertAbstractType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertWrappingType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertWrappingType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertNullableType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertNullableType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertNamedType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertNamedType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getNullableType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"getNullableType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getNamedType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"getNamedType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLScalarType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLObjectType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInterfaceType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLInterfaceType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLUnionType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLUnionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLEnumType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLEnumType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInputObjectType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLInputObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLList\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLList\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLNonNull\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLNonNull\"]; });\n\n/* harmony import */ var _directives_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSpecifiedDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isSpecifiedDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"specifiedDirectives\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"specifiedDirectives\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLIncludeDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLIncludeDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSkipDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLSkipDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDeprecatedDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLDeprecatedDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSpecifiedByDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLSpecifiedByDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_DEPRECATION_REASON\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_DEPRECATION_REASON\"]; });\n\n/* harmony import */ var _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSpecifiedScalarType\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isSpecifiedScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"specifiedScalarTypes\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"specifiedScalarTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInt\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLInt\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLFloat\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLFloat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLString\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLBoolean\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLBoolean\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLID\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLID\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GRAPHQL_MAX_INT\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GRAPHQL_MAX_INT\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GRAPHQL_MIN_INT\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GRAPHQL_MIN_INT\"]; });\n\n/* harmony import */ var _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isIntrospectionType\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isIntrospectionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"introspectionTypes\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"introspectionTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Schema\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__Schema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Directive\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__Directive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__DirectiveLocation\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__DirectiveLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Type\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__Type\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Field\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__Field\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__InputValue\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__InputValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__EnumValue\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__EnumValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__TypeKind\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__TypeKind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeKind\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TypeKind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SchemaMetaFieldDef\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"SchemaMetaFieldDef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeMetaFieldDef\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TypeMetaFieldDef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeNameMetaFieldDef\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TypeNameMetaFieldDef\"]; });\n\n/* harmony import */ var _validate_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./validate.mjs */ \"../../../node_modules/graphql/type/validate.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"validateSchema\", function() { return _validate_mjs__WEBPACK_IMPORTED_MODULE_5__[\"validateSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertValidSchema\", function() { return _validate_mjs__WEBPACK_IMPORTED_MODULE_5__[\"assertValidSchema\"]; });\n\n/* harmony import */ var _assertName_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./assertName.mjs */ \"../../../node_modules/graphql/type/assertName.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertName\", function() { return _assertName_mjs__WEBPACK_IMPORTED_MODULE_6__[\"assertName\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertEnumValueName\", function() { return _assertName_mjs__WEBPACK_IMPORTED_MODULE_6__[\"assertEnumValueName\"]; });\n\n\n\n\n// Common built-in scalar instances.\n\n // Validate GraphQL schema.\n\n // Upholds the spec rules about naming.\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9pbmRleC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL2luZGV4Lm1qcz82Y2E5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIC8vIFByZWRpY2F0ZVxuICBpc1NjaGVtYSwgLy8gQXNzZXJ0aW9uXG4gIGFzc2VydFNjaGVtYSwgLy8gR3JhcGhRTCBTY2hlbWEgZGVmaW5pdGlvblxuICBHcmFwaFFMU2NoZW1hLFxufSBmcm9tICcuL3NjaGVtYS5tanMnO1xuZXhwb3J0IHtcbiAgcmVzb2x2ZU9iak1hcFRodW5rLFxuICByZXNvbHZlUmVhZG9ubHlBcnJheVRodW5rLCAvLyBQcmVkaWNhdGVzXG4gIGlzVHlwZSxcbiAgaXNTY2FsYXJUeXBlLFxuICBpc09iamVjdFR5cGUsXG4gIGlzSW50ZXJmYWNlVHlwZSxcbiAgaXNVbmlvblR5cGUsXG4gIGlzRW51bVR5cGUsXG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0xpc3RUeXBlLFxuICBpc05vbk51bGxUeXBlLFxuICBpc0lucHV0VHlwZSxcbiAgaXNPdXRwdXRUeXBlLFxuICBpc0xlYWZUeXBlLFxuICBpc0NvbXBvc2l0ZVR5cGUsXG4gIGlzQWJzdHJhY3RUeXBlLFxuICBpc1dyYXBwaW5nVHlwZSxcbiAgaXNOdWxsYWJsZVR5cGUsXG4gIGlzTmFtZWRUeXBlLFxuICBpc1JlcXVpcmVkQXJndW1lbnQsXG4gIGlzUmVxdWlyZWRJbnB1dEZpZWxkLCAvLyBBc3NlcnRpb25zXG4gIGFzc2VydFR5cGUsXG4gIGFzc2VydFNjYWxhclR5cGUsXG4gIGFzc2VydE9iamVjdFR5cGUsXG4gIGFzc2VydEludGVyZmFjZVR5cGUsXG4gIGFzc2VydFVuaW9uVHlwZSxcbiAgYXNzZXJ0RW51bVR5cGUsXG4gIGFzc2VydElucHV0T2JqZWN0VHlwZSxcbiAgYXNzZXJ0TGlzdFR5cGUsXG4gIGFzc2VydE5vbk51bGxUeXBlLFxuICBhc3NlcnRJbnB1dFR5cGUsXG4gIGFzc2VydE91dHB1dFR5cGUsXG4gIGFzc2VydExlYWZUeXBlLFxuICBhc3NlcnRDb21wb3NpdGVUeXBlLFxuICBhc3NlcnRBYnN0cmFjdFR5cGUsXG4gIGFzc2VydFdyYXBwaW5nVHlwZSxcbiAgYXNzZXJ0TnVsbGFibGVUeXBlLFxuICBhc3NlcnROYW1lZFR5cGUsIC8vIFVuLW1vZGlmaWVyc1xuICBnZXROdWxsYWJsZVR5cGUsXG4gIGdldE5hbWVkVHlwZSwgLy8gRGVmaW5pdGlvbnNcbiAgR3JhcGhRTFNjYWxhclR5cGUsXG4gIEdyYXBoUUxPYmplY3RUeXBlLFxuICBHcmFwaFFMSW50ZXJmYWNlVHlwZSxcbiAgR3JhcGhRTFVuaW9uVHlwZSxcbiAgR3JhcGhRTEVudW1UeXBlLFxuICBHcmFwaFFMSW5wdXRPYmplY3RUeXBlLCAvLyBUeXBlIFdyYXBwZXJzXG4gIEdyYXBoUUxMaXN0LFxuICBHcmFwaFFMTm9uTnVsbCxcbn0gZnJvbSAnLi9kZWZpbml0aW9uLm1qcyc7XG5leHBvcnQge1xuICAvLyBQcmVkaWNhdGVcbiAgaXNEaXJlY3RpdmUsIC8vIEFzc2VydGlvblxuICBhc3NlcnREaXJlY3RpdmUsIC8vIERpcmVjdGl2ZXMgRGVmaW5pdGlvblxuICBHcmFwaFFMRGlyZWN0aXZlLCAvLyBCdWlsdC1pbiBEaXJlY3RpdmVzIGRlZmluZWQgYnkgdGhlIFNwZWNcbiAgaXNTcGVjaWZpZWREaXJlY3RpdmUsXG4gIHNwZWNpZmllZERpcmVjdGl2ZXMsXG4gIEdyYXBoUUxJbmNsdWRlRGlyZWN0aXZlLFxuICBHcmFwaFFMU2tpcERpcmVjdGl2ZSxcbiAgR3JhcGhRTERlcHJlY2F0ZWREaXJlY3RpdmUsXG4gIEdyYXBoUUxTcGVjaWZpZWRCeURpcmVjdGl2ZSwgLy8gQ29uc3RhbnQgRGVwcmVjYXRpb24gUmVhc29uXG4gIERFRkFVTFRfREVQUkVDQVRJT05fUkVBU09OLFxufSBmcm9tICcuL2RpcmVjdGl2ZXMubWpzJztcbi8vIENvbW1vbiBidWlsdC1pbiBzY2FsYXIgaW5zdGFuY2VzLlxuZXhwb3J0IHtcbiAgLy8gUHJlZGljYXRlXG4gIGlzU3BlY2lmaWVkU2NhbGFyVHlwZSwgLy8gU3RhbmRhcmQgR3JhcGhRTCBTY2FsYXJzXG4gIHNwZWNpZmllZFNjYWxhclR5cGVzLFxuICBHcmFwaFFMSW50LFxuICBHcmFwaFFMRmxvYXQsXG4gIEdyYXBoUUxTdHJpbmcsXG4gIEdyYXBoUUxCb29sZWFuLFxuICBHcmFwaFFMSUQsIC8vIEludCBib3VuZGFyaWVzIGNvbnN0YW50c1xuICBHUkFQSFFMX01BWF9JTlQsXG4gIEdSQVBIUUxfTUlOX0lOVCxcbn0gZnJvbSAnLi9zY2FsYXJzLm1qcyc7XG5leHBvcnQge1xuICAvLyBQcmVkaWNhdGVcbiAgaXNJbnRyb3NwZWN0aW9uVHlwZSwgLy8gR3JhcGhRTCBUeXBlcyBmb3IgaW50cm9zcGVjdGlvbi5cbiAgaW50cm9zcGVjdGlvblR5cGVzLFxuICBfX1NjaGVtYSxcbiAgX19EaXJlY3RpdmUsXG4gIF9fRGlyZWN0aXZlTG9jYXRpb24sXG4gIF9fVHlwZSxcbiAgX19GaWVsZCxcbiAgX19JbnB1dFZhbHVlLFxuICBfX0VudW1WYWx1ZSxcbiAgX19UeXBlS2luZCwgLy8gXCJFbnVtXCIgb2YgVHlwZSBLaW5kc1xuICBUeXBlS2luZCwgLy8gTWV0YS1maWVsZCBkZWZpbml0aW9ucy5cbiAgU2NoZW1hTWV0YUZpZWxkRGVmLFxuICBUeXBlTWV0YUZpZWxkRGVmLFxuICBUeXBlTmFtZU1ldGFGaWVsZERlZixcbn0gZnJvbSAnLi9pbnRyb3NwZWN0aW9uLm1qcyc7IC8vIFZhbGlkYXRlIEdyYXBoUUwgc2NoZW1hLlxuXG5leHBvcnQgeyB2YWxpZGF0ZVNjaGVtYSwgYXNzZXJ0VmFsaWRTY2hlbWEgfSBmcm9tICcuL3ZhbGlkYXRlLm1qcyc7IC8vIFVwaG9sZHMgdGhlIHNwZWMgcnVsZXMgYWJvdXQgbmFtaW5nLlxuXG5leHBvcnQgeyBhc3NlcnROYW1lLCBhc3NlcnRFbnVtVmFsdWVOYW1lIH0gZnJvbSAnLi9hc3NlcnROYW1lLm1qcyc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFrREE7QUFhQTtBQUNBO0FBWUE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/index.mjs\n");
|
841 |
|
842 | }),
|
843 |
|
844 | "../../../node_modules/graphql/type/introspection.mjs":
|
845 |
|
846 |
|
847 |
|
848 |
|
849 | (function(module, __webpack_exports__, __webpack_require__) {
|
850 |
|
851 | "use strict";
|
852 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__Schema\", function() { return __Schema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__Directive\", function() { return __Directive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__DirectiveLocation\", function() { return __DirectiveLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__Type\", function() { return __Type; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__Field\", function() { return __Field; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__InputValue\", function() { return __InputValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__EnumValue\", function() { return __EnumValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TypeKind\", function() { return TypeKind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__TypeKind\", function() { return __TypeKind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SchemaMetaFieldDef\", function() { return SchemaMetaFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TypeMetaFieldDef\", function() { return TypeMetaFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TypeNameMetaFieldDef\", function() { return TypeNameMetaFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"introspectionTypes\", function() { return introspectionTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIntrospectionType\", function() { return isIntrospectionType; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/directiveLocation.mjs */ \"../../../node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _utilities_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utilities/astFromValue.mjs */ \"../../../node_modules/graphql/utilities/astFromValue.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n\n\n\n\n\n\n\nconst __Schema = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLObjectType\"]({\n name: '__Schema',\n description:\n 'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.',\n fields: () => ({\n description: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: (schema) => schema.description,\n },\n types: {\n description: 'A list of all types supported by this server.',\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__Type))),\n\n resolve(schema) {\n return Object.values(schema.getTypeMap());\n },\n },\n queryType: {\n description: 'The type that query operations will be rooted at.',\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__Type),\n resolve: (schema) => schema.getQueryType(),\n },\n mutationType: {\n description:\n 'If this server supports mutation, the type that mutation operations will be rooted at.',\n type: __Type,\n resolve: (schema) => schema.getMutationType(),\n },\n subscriptionType: {\n description:\n 'If this server support subscription, the type that subscription operations will be rooted at.',\n type: __Type,\n resolve: (schema) => schema.getSubscriptionType(),\n },\n directives: {\n description: 'A list of all directives supported by this server.',\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](\n new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__Directive)),\n ),\n resolve: (schema) => schema.getDirectives(),\n },\n }),\n});\nconst __Directive = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLObjectType\"]({\n name: '__Directive',\n description:\n \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n fields: () => ({\n name: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]),\n resolve: (directive) => directive.name,\n },\n description: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: (directive) => directive.description,\n },\n isRepeatable: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"]),\n resolve: (directive) => directive.isRepeatable,\n },\n locations: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](\n new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__DirectiveLocation)),\n ),\n resolve: (directive) => directive.locations,\n },\n args: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](\n new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__InputValue)),\n ),\n args: {\n includeDeprecated: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"],\n defaultValue: false,\n },\n },\n\n resolve(field, { includeDeprecated }) {\n return includeDeprecated\n ? field.args\n : field.args.filter((arg) => arg.deprecationReason == null);\n },\n },\n }),\n});\nconst __DirectiveLocation = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLEnumType\"]({\n name: '__DirectiveLocation',\n description:\n 'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.',\n values: {\n QUERY: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].QUERY,\n description: 'Location adjacent to a query operation.',\n },\n MUTATION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].MUTATION,\n description: 'Location adjacent to a mutation operation.',\n },\n SUBSCRIPTION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].SUBSCRIPTION,\n description: 'Location adjacent to a subscription operation.',\n },\n FIELD: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].FIELD,\n description: 'Location adjacent to a field.',\n },\n FRAGMENT_DEFINITION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].FRAGMENT_DEFINITION,\n description: 'Location adjacent to a fragment definition.',\n },\n FRAGMENT_SPREAD: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].FRAGMENT_SPREAD,\n description: 'Location adjacent to a fragment spread.',\n },\n INLINE_FRAGMENT: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].INLINE_FRAGMENT,\n description: 'Location adjacent to an inline fragment.',\n },\n VARIABLE_DEFINITION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].VARIABLE_DEFINITION,\n description: 'Location adjacent to a variable definition.',\n },\n SCHEMA: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].SCHEMA,\n description: 'Location adjacent to a schema definition.',\n },\n SCALAR: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].SCALAR,\n description: 'Location adjacent to a scalar definition.',\n },\n OBJECT: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].OBJECT,\n description: 'Location adjacent to an object type definition.',\n },\n FIELD_DEFINITION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].FIELD_DEFINITION,\n description: 'Location adjacent to a field definition.',\n },\n ARGUMENT_DEFINITION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].ARGUMENT_DEFINITION,\n description: 'Location adjacent to an argument definition.',\n },\n INTERFACE: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].INTERFACE,\n description: 'Location adjacent to an interface definition.',\n },\n UNION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].UNION,\n description: 'Location adjacent to a union definition.',\n },\n ENUM: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].ENUM,\n description: 'Location adjacent to an enum definition.',\n },\n ENUM_VALUE: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].ENUM_VALUE,\n description: 'Location adjacent to an enum value definition.',\n },\n INPUT_OBJECT: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].INPUT_OBJECT,\n description: 'Location adjacent to an input object type definition.',\n },\n INPUT_FIELD_DEFINITION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DirectiveLocation\"].INPUT_FIELD_DEFINITION,\n description: 'Location adjacent to an input object field definition.',\n },\n },\n});\nconst __Type = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLObjectType\"]({\n name: '__Type',\n description:\n 'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.',\n fields: () => ({\n kind: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__TypeKind),\n\n resolve(type) {\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isScalarType\"])(type)) {\n return TypeKind.SCALAR;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isObjectType\"])(type)) {\n return TypeKind.OBJECT;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isInterfaceType\"])(type)) {\n return TypeKind.INTERFACE;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isUnionType\"])(type)) {\n return TypeKind.UNION;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isEnumType\"])(type)) {\n return TypeKind.ENUM;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isInputObjectType\"])(type)) {\n return TypeKind.INPUT_OBJECT;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isListType\"])(type)) {\n return TypeKind.LIST;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isNonNullType\"])(type)) {\n return TypeKind.NON_NULL;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered)\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"invariant\"])(false, `Unexpected type: \"${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(type)}\".`);\n },\n },\n name: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: (type) => ('name' in type ? type.name : undefined),\n },\n description: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: (\n type, // FIXME: add test case\n ) =>\n /* c8 ignore next */\n 'description' in type ? type.description : undefined,\n },\n specifiedByURL: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: (obj) =>\n 'specifiedByURL' in obj ? obj.specifiedByURL : undefined,\n },\n fields: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__Field)),\n args: {\n includeDeprecated: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"],\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isObjectType\"])(type) || Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isInterfaceType\"])(type)) {\n const fields = Object.values(type.getFields());\n return includeDeprecated\n ? fields\n : fields.filter((field) => field.deprecationReason == null);\n }\n },\n },\n interfaces: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__Type)),\n\n resolve(type) {\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isObjectType\"])(type) || Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isInterfaceType\"])(type)) {\n return type.getInterfaces();\n }\n },\n },\n possibleTypes: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__Type)),\n\n resolve(type, _args, _context, { schema }) {\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isAbstractType\"])(type)) {\n return schema.getPossibleTypes(type);\n }\n },\n },\n enumValues: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__EnumValue)),\n args: {\n includeDeprecated: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"],\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isEnumType\"])(type)) {\n const values = type.getValues();\n return includeDeprecated\n ? values\n : values.filter((field) => field.deprecationReason == null);\n }\n },\n },\n inputFields: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__InputValue)),\n args: {\n includeDeprecated: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"],\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isInputObjectType\"])(type)) {\n const values = Object.values(type.getFields());\n return includeDeprecated\n ? values\n : values.filter((field) => field.deprecationReason == null);\n }\n },\n },\n ofType: {\n type: __Type,\n resolve: (type) => ('ofType' in type ? type.ofType : undefined),\n },\n }),\n});\nconst __Field = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLObjectType\"]({\n name: '__Field',\n description:\n 'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.',\n fields: () => ({\n name: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]),\n resolve: (field) => field.name,\n },\n description: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: (field) => field.description,\n },\n args: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](\n new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__InputValue)),\n ),\n args: {\n includeDeprecated: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"],\n defaultValue: false,\n },\n },\n\n resolve(field, { includeDeprecated }) {\n return includeDeprecated\n ? field.args\n : field.args.filter((arg) => arg.deprecationReason == null);\n },\n },\n type: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__Type),\n resolve: (field) => field.type,\n },\n isDeprecated: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"]),\n resolve: (field) => field.deprecationReason != null,\n },\n deprecationReason: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: (field) => field.deprecationReason,\n },\n }),\n});\nconst __InputValue = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLObjectType\"]({\n name: '__InputValue',\n description:\n 'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.',\n fields: () => ({\n name: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]),\n resolve: (inputValue) => inputValue.name,\n },\n description: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: (inputValue) => inputValue.description,\n },\n type: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__Type),\n resolve: (inputValue) => inputValue.type,\n },\n defaultValue: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n description:\n 'A GraphQL-formatted string representing the default value for this input value.',\n\n resolve(inputValue) {\n const { type, defaultValue } = inputValue;\n const valueAST = Object(_utilities_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_4__[\"astFromValue\"])(defaultValue, type);\n return valueAST ? Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__[\"print\"])(valueAST) : null;\n },\n },\n isDeprecated: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"]),\n resolve: (field) => field.deprecationReason != null,\n },\n deprecationReason: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: (obj) => obj.deprecationReason,\n },\n }),\n});\nconst __EnumValue = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLObjectType\"]({\n name: '__EnumValue',\n description:\n 'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.',\n fields: () => ({\n name: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]),\n resolve: (enumValue) => enumValue.name,\n },\n description: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: (enumValue) => enumValue.description,\n },\n isDeprecated: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"]),\n resolve: (enumValue) => enumValue.deprecationReason != null,\n },\n deprecationReason: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: (enumValue) => enumValue.deprecationReason,\n },\n }),\n});\nlet TypeKind;\n\n(function (TypeKind) {\n TypeKind['SCALAR'] = 'SCALAR';\n TypeKind['OBJECT'] = 'OBJECT';\n TypeKind['INTERFACE'] = 'INTERFACE';\n TypeKind['UNION'] = 'UNION';\n TypeKind['ENUM'] = 'ENUM';\n TypeKind['INPUT_OBJECT'] = 'INPUT_OBJECT';\n TypeKind['LIST'] = 'LIST';\n TypeKind['NON_NULL'] = 'NON_NULL';\n})(TypeKind || (TypeKind = {}));\n\nconst __TypeKind = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLEnumType\"]({\n name: '__TypeKind',\n description: 'An enum describing what kind of type a given `__Type` is.',\n values: {\n SCALAR: {\n value: TypeKind.SCALAR,\n description: 'Indicates this type is a scalar.',\n },\n OBJECT: {\n value: TypeKind.OBJECT,\n description:\n 'Indicates this type is an object. `fields` and `interfaces` are valid fields.',\n },\n INTERFACE: {\n value: TypeKind.INTERFACE,\n description:\n 'Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.',\n },\n UNION: {\n value: TypeKind.UNION,\n description:\n 'Indicates this type is a union. `possibleTypes` is a valid field.',\n },\n ENUM: {\n value: TypeKind.ENUM,\n description:\n 'Indicates this type is an enum. `enumValues` is a valid field.',\n },\n INPUT_OBJECT: {\n value: TypeKind.INPUT_OBJECT,\n description:\n 'Indicates this type is an input object. `inputFields` is a valid field.',\n },\n LIST: {\n value: TypeKind.LIST,\n description: 'Indicates this type is a list. `ofType` is a valid field.',\n },\n NON_NULL: {\n value: TypeKind.NON_NULL,\n description:\n 'Indicates this type is a non-null. `ofType` is a valid field.',\n },\n },\n});\n/**\n * Note that these are GraphQLField and not GraphQLFieldConfig,\n * so the format for args is different.\n */\n\nconst SchemaMetaFieldDef = {\n name: '__schema',\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](__Schema),\n description: 'Access the current type schema of this server.',\n args: [],\n resolve: (_source, _args, _context, { schema }) => schema,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nconst TypeMetaFieldDef = {\n name: '__type',\n type: __Type,\n description: 'Request the type information of a single type.',\n args: [\n {\n name: 'name',\n description: undefined,\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]),\n defaultValue: undefined,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n },\n ],\n resolve: (_source, { name }, _context, { schema }) => schema.getType(name),\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nconst TypeNameMetaFieldDef = {\n name: '__typename',\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]),\n description: 'The name of the current Object type at runtime.',\n args: [],\n resolve: (_source, _args, _context, { parentType }) => parentType.name,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nconst introspectionTypes = Object.freeze([\n __Schema,\n __Directive,\n __DirectiveLocation,\n __Type,\n __Field,\n __InputValue,\n __EnumValue,\n __TypeKind,\n]);\nfunction isIntrospectionType(type) {\n return introspectionTypes.some(({ name }) => type.name === name);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9pbnRyb3NwZWN0aW9uLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3R5cGUvaW50cm9zcGVjdGlvbi5tanM/Y2YyMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICcuLi9qc3V0aWxzL2ludmFyaWFudC5tanMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlTG9jYXRpb24gfSBmcm9tICcuLi9sYW5ndWFnZS9kaXJlY3RpdmVMb2NhdGlvbi5tanMnO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tICcuLi9sYW5ndWFnZS9wcmludGVyLm1qcyc7XG5pbXBvcnQgeyBhc3RGcm9tVmFsdWUgfSBmcm9tICcuLi91dGlsaXRpZXMvYXN0RnJvbVZhbHVlLm1qcyc7XG5pbXBvcnQge1xuICBHcmFwaFFMRW51bVR5cGUsXG4gIEdyYXBoUUxMaXN0LFxuICBHcmFwaFFMTm9uTnVsbCxcbiAgR3JhcGhRTE9iamVjdFR5cGUsXG4gIGlzQWJzdHJhY3RUeXBlLFxuICBpc0VudW1UeXBlLFxuICBpc0lucHV0T2JqZWN0VHlwZSxcbiAgaXNJbnRlcmZhY2VUeXBlLFxuICBpc0xpc3RUeXBlLFxuICBpc05vbk51bGxUeXBlLFxuICBpc09iamVjdFR5cGUsXG4gIGlzU2NhbGFyVHlwZSxcbiAgaXNVbmlvblR5cGUsXG59IGZyb20gJy4vZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEJvb2xlYW4sIEdyYXBoUUxTdHJpbmcgfSBmcm9tICcuL3NjYWxhcnMubWpzJztcbmV4cG9ydCBjb25zdCBfX1NjaGVtYSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdfX1NjaGVtYScsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdBIEdyYXBoUUwgU2NoZW1hIGRlZmluZXMgdGhlIGNhcGFiaWxpdGllcyBvZiBhIEdyYXBoUUwgc2VydmVyLiBJdCBleHBvc2VzIGFsbCBhdmFpbGFibGUgdHlwZXMgYW5kIGRpcmVjdGl2ZXMgb24gdGhlIHNlcnZlciwgYXMgd2VsbCBhcyB0aGUgZW50cnkgcG9pbnRzIGZvciBxdWVyeSwgbXV0YXRpb24sIGFuZCBzdWJzY3JpcHRpb24gb3BlcmF0aW9ucy4nLFxuICBmaWVsZHM6ICgpID0+ICh7XG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICByZXNvbHZlOiAoc2NoZW1hKSA9PiBzY2hlbWEuZGVzY3JpcHRpb24sXG4gICAgfSxcbiAgICB0eXBlczoge1xuICAgICAgZGVzY3JpcHRpb246ICdBIGxpc3Qgb2YgYWxsIHR5cGVzIHN1cHBvcnRlZCBieSB0aGlzIHNlcnZlci4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlKSkpLFxuXG4gICAgICByZXNvbHZlKHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhzY2hlbWEuZ2V0VHlwZU1hcCgpKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBxdWVyeVR5cGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHR5cGUgdGhhdCBxdWVyeSBvcGVyYXRpb25zIHdpbGwgYmUgcm9vdGVkIGF0LicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlKSxcbiAgICAgIHJlc29sdmU6IChzY2hlbWEpID0+IHNjaGVtYS5nZXRRdWVyeVR5cGUoKSxcbiAgICB9LFxuICAgIG11dGF0aW9uVHlwZToge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdJZiB0aGlzIHNlcnZlciBzdXBwb3J0cyBtdXRhdGlvbiwgdGhlIHR5cGUgdGhhdCBtdXRhdGlvbiBvcGVyYXRpb25zIHdpbGwgYmUgcm9vdGVkIGF0LicsXG4gICAgICB0eXBlOiBfX1R5cGUsXG4gICAgICByZXNvbHZlOiAoc2NoZW1hKSA9PiBzY2hlbWEuZ2V0TXV0YXRpb25UeXBlKCksXG4gICAgfSxcbiAgICBzdWJzY3JpcHRpb25UeXBlOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0lmIHRoaXMgc2VydmVyIHN1cHBvcnQgc3Vic2NyaXB0aW9uLCB0aGUgdHlwZSB0aGF0IHN1YnNjcmlwdGlvbiBvcGVyYXRpb25zIHdpbGwgYmUgcm9vdGVkIGF0LicsXG4gICAgICB0eXBlOiBfX1R5cGUsXG4gICAgICByZXNvbHZlOiAoc2NoZW1hKSA9PiBzY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpLFxuICAgIH0sXG4gICAgZGlyZWN0aXZlczoge1xuICAgICAgZGVzY3JpcHRpb246ICdBIGxpc3Qgb2YgYWxsIGRpcmVjdGl2ZXMgc3VwcG9ydGVkIGJ5IHRoaXMgc2VydmVyLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoXG4gICAgICAgIG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19EaXJlY3RpdmUpKSxcbiAgICAgICksXG4gICAgICByZXNvbHZlOiAoc2NoZW1hKSA9PiBzY2hlbWEuZ2V0RGlyZWN0aXZlcygpLFxuICAgIH0sXG4gIH0pLFxufSk7XG5leHBvcnQgY29uc3QgX19EaXJlY3RpdmUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICBuYW1lOiAnX19EaXJlY3RpdmUnLFxuICBkZXNjcmlwdGlvbjpcbiAgICBcIkEgRGlyZWN0aXZlIHByb3ZpZGVzIGEgd2F5IHRvIGRlc2NyaWJlIGFsdGVybmF0ZSBydW50aW1lIGV4ZWN1dGlvbiBhbmQgdHlwZSB2YWxpZGF0aW9uIGJlaGF2aW9yIGluIGEgR3JhcGhRTCBkb2N1bWVudC5cXG5cXG5JbiBzb21lIGNhc2VzLCB5b3UgbmVlZCB0byBwcm92aWRlIG9wdGlvbnMgdG8gYWx0ZXIgR3JhcGhRTCdzIGV4ZWN1dGlvbiBiZWhhdmlvciBpbiB3YXlzIGZpZWxkIGFyZ3VtZW50cyB3aWxsIG5vdCBzdWZmaWNlLCBzdWNoIGFzIGNvbmRpdGlvbmFsbHkgaW5jbHVkaW5nIG9yIHNraXBwaW5nIGEgZmllbGQuIERpcmVjdGl2ZXMgcHJvdmlkZSB0aGlzIGJ5IGRlc2NyaWJpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byB0aGUgZXhlY3V0b3IuXCIsXG4gIGZpZWxkczogKCkgPT4gKHtcbiAgICBuYW1lOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICByZXNvbHZlOiAoZGlyZWN0aXZlKSA9PiBkaXJlY3RpdmUubmFtZSxcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKGRpcmVjdGl2ZSkgPT4gZGlyZWN0aXZlLmRlc2NyaXB0aW9uLFxuICAgIH0sXG4gICAgaXNSZXBlYXRhYmxlOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgcmVzb2x2ZTogKGRpcmVjdGl2ZSkgPT4gZGlyZWN0aXZlLmlzUmVwZWF0YWJsZSxcbiAgICB9LFxuICAgIGxvY2F0aW9uczoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKFxuICAgICAgICBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKF9fRGlyZWN0aXZlTG9jYXRpb24pKSxcbiAgICAgICksXG4gICAgICByZXNvbHZlOiAoZGlyZWN0aXZlKSA9PiBkaXJlY3RpdmUubG9jYXRpb25zLFxuICAgIH0sXG4gICAgYXJnczoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKFxuICAgICAgICBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKF9fSW5wdXRWYWx1ZSkpLFxuICAgICAgKSxcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgaW5jbHVkZURlcHJlY2F0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgcmVzb2x2ZShmaWVsZCwgeyBpbmNsdWRlRGVwcmVjYXRlZCB9KSB7XG4gICAgICAgIHJldHVybiBpbmNsdWRlRGVwcmVjYXRlZFxuICAgICAgICAgID8gZmllbGQuYXJnc1xuICAgICAgICAgIDogZmllbGQuYXJncy5maWx0ZXIoKGFyZykgPT4gYXJnLmRlcHJlY2F0aW9uUmVhc29uID09IG51bGwpO1xuICAgICAgfSxcbiAgICB9LFxuICB9KSxcbn0pO1xuZXhwb3J0IGNvbnN0IF9fRGlyZWN0aXZlTG9jYXRpb24gPSBuZXcgR3JhcGhRTEVudW1UeXBlKHtcbiAgbmFtZTogJ19fRGlyZWN0aXZlTG9jYXRpb24nLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnQSBEaXJlY3RpdmUgY2FuIGJlIGFkamFjZW50IHRvIG1hbnkgcGFydHMgb2YgdGhlIEdyYXBoUUwgbGFuZ3VhZ2UsIGEgX19EaXJlY3RpdmVMb2NhdGlvbiBkZXNjcmliZXMgb25lIHN1Y2ggcG9zc2libGUgYWRqYWNlbmNpZXMuJyxcbiAgdmFsdWVzOiB7XG4gICAgUVVFUlk6IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5RVUVSWSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYSBxdWVyeSBvcGVyYXRpb24uJyxcbiAgICB9LFxuICAgIE1VVEFUSU9OOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uTVVUQVRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGEgbXV0YXRpb24gb3BlcmF0aW9uLicsXG4gICAgfSxcbiAgICBTVUJTQ1JJUFRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5TVUJTQ1JJUFRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGEgc3Vic2NyaXB0aW9uIG9wZXJhdGlvbi4nLFxuICAgIH0sXG4gICAgRklFTEQ6IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5GSUVMRCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYSBmaWVsZC4nLFxuICAgIH0sXG4gICAgRlJBR01FTlRfREVGSU5JVElPTjoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLkZSQUdNRU5UX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGEgZnJhZ21lbnQgZGVmaW5pdGlvbi4nLFxuICAgIH0sXG4gICAgRlJBR01FTlRfU1BSRUFEOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uRlJBR01FTlRfU1BSRUFELFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIGZyYWdtZW50IHNwcmVhZC4nLFxuICAgIH0sXG4gICAgSU5MSU5FX0ZSQUdNRU5UOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uSU5MSU5FX0ZSQUdNRU5ULFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhbiBpbmxpbmUgZnJhZ21lbnQuJyxcbiAgICB9LFxuICAgIFZBUklBQkxFX0RFRklOSVRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5WQVJJQUJMRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIHZhcmlhYmxlIGRlZmluaXRpb24uJyxcbiAgICB9LFxuICAgIFNDSEVNQToge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLlNDSEVNQSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYSBzY2hlbWEgZGVmaW5pdGlvbi4nLFxuICAgIH0sXG4gICAgU0NBTEFSOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uU0NBTEFSLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIHNjYWxhciBkZWZpbml0aW9uLicsXG4gICAgfSxcbiAgICBPQkpFQ1Q6IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5PQkpFQ1QsXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGFuIG9iamVjdCB0eXBlIGRlZmluaXRpb24uJyxcbiAgICB9LFxuICAgIEZJRUxEX0RFRklOSVRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5GSUVMRF9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIGZpZWxkIGRlZmluaXRpb24uJyxcbiAgICB9LFxuICAgIEFSR1VNRU5UX0RFRklOSVRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5BUkdVTUVOVF9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhbiBhcmd1bWVudCBkZWZpbml0aW9uLicsXG4gICAgfSxcbiAgICBJTlRFUkZBQ0U6IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5JTlRFUkZBQ0UsXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGFuIGludGVyZmFjZSBkZWZpbml0aW9uLicsXG4gICAgfSxcbiAgICBVTklPTjoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLlVOSU9OLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIHVuaW9uIGRlZmluaXRpb24uJyxcbiAgICB9LFxuICAgIEVOVU06IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5FTlVNLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhbiBlbnVtIGRlZmluaXRpb24uJyxcbiAgICB9LFxuICAgIEVOVU1fVkFMVUU6IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5FTlVNX1ZBTFVFLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhbiBlbnVtIHZhbHVlIGRlZmluaXRpb24uJyxcbiAgICB9LFxuICAgIElOUFVUX09CSkVDVDoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLklOUFVUX09CSkVDVCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYW4gaW5wdXQgb2JqZWN0IHR5cGUgZGVmaW5pdGlvbi4nLFxuICAgIH0sXG4gICAgSU5QVVRfRklFTERfREVGSU5JVElPTjoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLklOUFVUX0ZJRUxEX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGFuIGlucHV0IG9iamVjdCBmaWVsZCBkZWZpbml0aW9uLicsXG4gICAgfSxcbiAgfSxcbn0pO1xuZXhwb3J0IGNvbnN0IF9fVHlwZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdfX1R5cGUnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIGZ1bmRhbWVudGFsIHVuaXQgb2YgYW55IEdyYXBoUUwgU2NoZW1hIGlzIHRoZSB0eXBlLiBUaGVyZSBhcmUgbWFueSBraW5kcyBvZiB0eXBlcyBpbiBHcmFwaFFMIGFzIHJlcHJlc2VudGVkIGJ5IHRoZSBgX19UeXBlS2luZGAgZW51bS5cXG5cXG5EZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YgYSB0eXBlLCBjZXJ0YWluIGZpZWxkcyBkZXNjcmliZSBpbmZvcm1hdGlvbiBhYm91dCB0aGF0IHR5cGUuIFNjYWxhciB0eXBlcyBwcm92aWRlIG5vIGluZm9ybWF0aW9uIGJleW9uZCBhIG5hbWUsIGRlc2NyaXB0aW9uIGFuZCBvcHRpb25hbCBgc3BlY2lmaWVkQnlVUkxgLCB3aGlsZSBFbnVtIHR5cGVzIHByb3ZpZGUgdGhlaXIgdmFsdWVzLiBPYmplY3QgYW5kIEludGVyZmFjZSB0eXBlcyBwcm92aWRlIHRoZSBmaWVsZHMgdGhleSBkZXNjcmliZS4gQWJzdHJhY3QgdHlwZXMsIFVuaW9uIGFuZCBJbnRlcmZhY2UsIHByb3ZpZGUgdGhlIE9iamVjdCB0eXBlcyBwb3NzaWJsZSBhdCBydW50aW1lLiBMaXN0IGFuZCBOb25OdWxsIHR5cGVzIGNvbXBvc2Ugb3RoZXIgdHlwZXMuJyxcbiAgZmllbGRzOiAoKSA9PiAoe1xuICAgIGtpbmQ6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChfX1R5cGVLaW5kKSxcblxuICAgICAgcmVzb2x2ZSh0eXBlKSB7XG4gICAgICAgIGlmIChpc1NjYWxhclR5cGUodHlwZSkpIHtcbiAgICAgICAgICByZXR1cm4gVHlwZUtpbmQuU0NBTEFSO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzT2JqZWN0VHlwZSh0eXBlKSkge1xuICAgICAgICAgIHJldHVybiBUeXBlS2luZC5PQkpFQ1Q7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLklOVEVSRkFDRTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1VuaW9uVHlwZSh0eXBlKSkge1xuICAgICAgICAgIHJldHVybiBUeXBlS2luZC5VTklPTjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0VudW1UeXBlKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLkVOVU07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNJbnB1dE9iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgICAgICByZXR1cm4gVHlwZUtpbmQuSU5QVVRfT0JKRUNUO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTGlzdFR5cGUodHlwZSkpIHtcbiAgICAgICAgICByZXR1cm4gVHlwZUtpbmQuTElTVDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc05vbk51bGxUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLk5PTl9OVUxMO1xuICAgICAgICB9XG4gICAgICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICAgICAgLy8gTm90IHJlYWNoYWJsZSwgYWxsIHBvc3NpYmxlIHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkKVxuXG4gICAgICAgIGZhbHNlIHx8IGludmFyaWFudChmYWxzZSwgYFVuZXhwZWN0ZWQgdHlwZTogXCIke2luc3BlY3QodHlwZSl9XCIuYCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgbmFtZToge1xuICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgIHJlc29sdmU6ICh0eXBlKSA9PiAoJ25hbWUnIGluIHR5cGUgPyB0eXBlLm5hbWUgOiB1bmRlZmluZWQpLFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICByZXNvbHZlOiAoXG4gICAgICAgIHR5cGUsIC8vIEZJWE1FOiBhZGQgdGVzdCBjYXNlXG4gICAgICApID0+XG4gICAgICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgICAgICdkZXNjcmlwdGlvbicgaW4gdHlwZSA/IHR5cGUuZGVzY3JpcHRpb24gOiB1bmRlZmluZWQsXG4gICAgfSxcbiAgICBzcGVjaWZpZWRCeVVSTDoge1xuICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgIHJlc29sdmU6IChvYmopID0+XG4gICAgICAgICdzcGVjaWZpZWRCeVVSTCcgaW4gb2JqID8gb2JqLnNwZWNpZmllZEJ5VVJMIDogdW5kZWZpbmVkLFxuICAgIH0sXG4gICAgZmllbGRzOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKF9fRmllbGQpKSxcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgaW5jbHVkZURlcHJlY2F0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgcmVzb2x2ZSh0eXBlLCB7IGluY2x1ZGVEZXByZWNhdGVkIH0pIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0VHlwZSh0eXBlKSB8fCBpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICAgICAgICBjb25zdCBmaWVsZHMgPSBPYmplY3QudmFsdWVzKHR5cGUuZ2V0RmllbGRzKCkpO1xuICAgICAgICAgIHJldHVybiBpbmNsdWRlRGVwcmVjYXRlZFxuICAgICAgICAgICAgPyBmaWVsZHNcbiAgICAgICAgICAgIDogZmllbGRzLmZpbHRlcigoZmllbGQpID0+IGZpZWxkLmRlcHJlY2F0aW9uUmVhc29uID09IG51bGwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgaW50ZXJmYWNlczoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX1R5cGUpKSxcblxuICAgICAgcmVzb2x2ZSh0eXBlKSB7XG4gICAgICAgIGlmIChpc09iamVjdFR5cGUodHlwZSkgfHwgaXNJbnRlcmZhY2VUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIHR5cGUuZ2V0SW50ZXJmYWNlcygpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgcG9zc2libGVUeXBlczoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX1R5cGUpKSxcblxuICAgICAgcmVzb2x2ZSh0eXBlLCBfYXJncywgX2NvbnRleHQsIHsgc2NoZW1hIH0pIHtcbiAgICAgICAgaWYgKGlzQWJzdHJhY3RUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIHNjaGVtYS5nZXRQb3NzaWJsZVR5cGVzKHR5cGUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgZW51bVZhbHVlczoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX0VudW1WYWx1ZSkpLFxuICAgICAgYXJnczoge1xuICAgICAgICBpbmNsdWRlRGVwcmVjYXRlZDoge1xuICAgICAgICAgIHR5cGU6IEdyYXBoUUxCb29sZWFuLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICByZXNvbHZlKHR5cGUsIHsgaW5jbHVkZURlcHJlY2F0ZWQgfSkge1xuICAgICAgICBpZiAoaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHR5cGUuZ2V0VmFsdWVzKCk7XG4gICAgICAgICAgcmV0dXJuIGluY2x1ZGVEZXByZWNhdGVkXG4gICAgICAgICAgICA/IHZhbHVlc1xuICAgICAgICAgICAgOiB2YWx1ZXMuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQuZGVwcmVjYXRpb25SZWFzb24gPT0gbnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICBpbnB1dEZpZWxkczoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX0lucHV0VmFsdWUpKSxcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgaW5jbHVkZURlcHJlY2F0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgcmVzb2x2ZSh0eXBlLCB7IGluY2x1ZGVEZXByZWNhdGVkIH0pIHtcbiAgICAgICAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LnZhbHVlcyh0eXBlLmdldEZpZWxkcygpKTtcbiAgICAgICAgICByZXR1cm4gaW5jbHVkZURlcHJlY2F0ZWRcbiAgICAgICAgICAgID8gdmFsdWVzXG4gICAgICAgICAgICA6IHZhbHVlcy5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbiA9PSBudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIG9mVHlwZToge1xuICAgICAgdHlwZTogX19UeXBlLFxuICAgICAgcmVzb2x2ZTogKHR5cGUpID0+ICgnb2ZUeXBlJyBpbiB0eXBlID8gdHlwZS5vZlR5cGUgOiB1bmRlZmluZWQpLFxuICAgIH0sXG4gIH0pLFxufSk7XG5leHBvcnQgY29uc3QgX19GaWVsZCA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdfX0ZpZWxkJyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ09iamVjdCBhbmQgSW50ZXJmYWNlIHR5cGVzIGFyZSBkZXNjcmliZWQgYnkgYSBsaXN0IG9mIEZpZWxkcywgZWFjaCBvZiB3aGljaCBoYXMgYSBuYW1lLCBwb3RlbnRpYWxseSBhIGxpc3Qgb2YgYXJndW1lbnRzLCBhbmQgYSByZXR1cm4gdHlwZS4nLFxuICBmaWVsZHM6ICgpID0+ICh7XG4gICAgbmFtZToge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgICAgcmVzb2x2ZTogKGZpZWxkKSA9PiBmaWVsZC5uYW1lLFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICByZXNvbHZlOiAoZmllbGQpID0+IGZpZWxkLmRlc2NyaXB0aW9uLFxuICAgIH0sXG4gICAgYXJnczoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKFxuICAgICAgICBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKF9fSW5wdXRWYWx1ZSkpLFxuICAgICAgKSxcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgaW5jbHVkZURlcHJlY2F0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgcmVzb2x2ZShmaWVsZCwgeyBpbmNsdWRlRGVwcmVjYXRlZCB9KSB7XG4gICAgICAgIHJldHVybiBpbmNsdWRlRGVwcmVjYXRlZFxuICAgICAgICAgID8gZmllbGQuYXJnc1xuICAgICAgICAgIDogZmllbGQuYXJncy5maWx0ZXIoKGFyZykgPT4gYXJnLmRlcHJlY2F0aW9uUmVhc29uID09IG51bGwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHR5cGU6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChfX1R5cGUpLFxuICAgICAgcmVzb2x2ZTogKGZpZWxkKSA9PiBmaWVsZC50eXBlLFxuICAgIH0sXG4gICAgaXNEZXByZWNhdGVkOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgcmVzb2x2ZTogKGZpZWxkKSA9PiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbiAhPSBudWxsLFxuICAgIH0sXG4gICAgZGVwcmVjYXRpb25SZWFzb246IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICByZXNvbHZlOiAoZmllbGQpID0+IGZpZWxkLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgIH0sXG4gIH0pLFxufSk7XG5leHBvcnQgY29uc3QgX19JbnB1dFZhbHVlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgbmFtZTogJ19fSW5wdXRWYWx1ZScsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdBcmd1bWVudHMgcHJvdmlkZWQgdG8gRmllbGRzIG9yIERpcmVjdGl2ZXMgYW5kIHRoZSBpbnB1dCBmaWVsZHMgb2YgYW4gSW5wdXRPYmplY3QgYXJlIHJlcHJlc2VudGVkIGFzIElucHV0IFZhbHVlcyB3aGljaCBkZXNjcmliZSB0aGVpciB0eXBlIGFuZCBvcHRpb25hbGx5IGEgZGVmYXVsdCB2YWx1ZS4nLFxuICBmaWVsZHM6ICgpID0+ICh7XG4gICAgbmFtZToge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgICAgcmVzb2x2ZTogKGlucHV0VmFsdWUpID0+IGlucHV0VmFsdWUubmFtZSxcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKGlucHV0VmFsdWUpID0+IGlucHV0VmFsdWUuZGVzY3JpcHRpb24sXG4gICAgfSxcbiAgICB0eXBlOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlKSxcbiAgICAgIHJlc29sdmU6IChpbnB1dFZhbHVlKSA9PiBpbnB1dFZhbHVlLnR5cGUsXG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0EgR3JhcGhRTC1mb3JtYXR0ZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBpbnB1dCB2YWx1ZS4nLFxuXG4gICAgICByZXNvbHZlKGlucHV0VmFsdWUpIHtcbiAgICAgICAgY29uc3QgeyB0eXBlLCBkZWZhdWx0VmFsdWUgfSA9IGlucHV0VmFsdWU7XG4gICAgICAgIGNvbnN0IHZhbHVlQVNUID0gYXN0RnJvbVZhbHVlKGRlZmF1bHRWYWx1ZSwgdHlwZSk7XG4gICAgICAgIHJldHVybiB2YWx1ZUFTVCA/IHByaW50KHZhbHVlQVNUKSA6IG51bGw7XG4gICAgICB9LFxuICAgIH0sXG4gICAgaXNEZXByZWNhdGVkOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgcmVzb2x2ZTogKGZpZWxkKSA9PiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbiAhPSBudWxsLFxuICAgIH0sXG4gICAgZGVwcmVjYXRpb25SZWFzb246IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICByZXNvbHZlOiAob2JqKSA9PiBvYmouZGVwcmVjYXRpb25SZWFzb24sXG4gICAgfSxcbiAgfSksXG59KTtcbmV4cG9ydCBjb25zdCBfX0VudW1WYWx1ZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdfX0VudW1WYWx1ZScsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdPbmUgcG9zc2libGUgdmFsdWUgZm9yIGEgZ2l2ZW4gRW51bS4gRW51bSB2YWx1ZXMgYXJlIHVuaXF1ZSB2YWx1ZXMsIG5vdCBhIHBsYWNlaG9sZGVyIGZvciBhIHN0cmluZyBvciBudW1lcmljIHZhbHVlLiBIb3dldmVyIGFuIEVudW0gdmFsdWUgaXMgcmV0dXJuZWQgaW4gYSBKU09OIHJlc3BvbnNlIGFzIGEgc3RyaW5nLicsXG4gIGZpZWxkczogKCkgPT4gKHtcbiAgICBuYW1lOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICByZXNvbHZlOiAoZW51bVZhbHVlKSA9PiBlbnVtVmFsdWUubmFtZSxcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKGVudW1WYWx1ZSkgPT4gZW51bVZhbHVlLmRlc2NyaXB0aW9uLFxuICAgIH0sXG4gICAgaXNEZXByZWNhdGVkOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgcmVzb2x2ZTogKGVudW1WYWx1ZSkgPT4gZW51bVZhbHVlLmRlcHJlY2F0aW9uUmVhc29uICE9IG51bGwsXG4gICAgfSxcbiAgICBkZXByZWNhdGlvblJlYXNvbjoge1xuICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgIHJlc29sdmU6IChlbnVtVmFsdWUpID0+IGVudW1WYWx1ZS5kZXByZWNhdGlvblJlYXNvbixcbiAgICB9LFxuICB9KSxcbn0pO1xuZXhwb3J0IGxldCBUeXBlS2luZDtcblxuKGZ1bmN0aW9uIChUeXBlS2luZCkge1xuICBUeXBlS2luZFsnU0NBTEFSJ10gPSAnU0NBTEFSJztcbiAgVHlwZUtpbmRbJ09CSkVDVCddID0gJ09CSkVDVCc7XG4gIFR5cGVLaW5kWydJTlRFUkZBQ0UnXSA9ICdJTlRFUkZBQ0UnO1xuICBUeXBlS2luZFsnVU5JT04nXSA9ICdVTklPTic7XG4gIFR5cGVLaW5kWydFTlVNJ10gPSAnRU5VTSc7XG4gIFR5cGVLaW5kWydJTlBVVF9PQkpFQ1QnXSA9ICdJTlBVVF9PQkpFQ1QnO1xuICBUeXBlS2luZFsnTElTVCddID0gJ0xJU1QnO1xuICBUeXBlS2luZFsnTk9OX05VTEwnXSA9ICdOT05fTlVMTCc7XG59KShUeXBlS2luZCB8fCAoVHlwZUtpbmQgPSB7fSkpO1xuXG5leHBvcnQgY29uc3QgX19UeXBlS2luZCA9IG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICBuYW1lOiAnX19UeXBlS2luZCcsXG4gIGRlc2NyaXB0aW9uOiAnQW4gZW51bSBkZXNjcmliaW5nIHdoYXQga2luZCBvZiB0eXBlIGEgZ2l2ZW4gYF9fVHlwZWAgaXMuJyxcbiAgdmFsdWVzOiB7XG4gICAgU0NBTEFSOiB7XG4gICAgICB2YWx1ZTogVHlwZUtpbmQuU0NBTEFSLFxuICAgICAgZGVzY3JpcHRpb246ICdJbmRpY2F0ZXMgdGhpcyB0eXBlIGlzIGEgc2NhbGFyLicsXG4gICAgfSxcbiAgICBPQkpFQ1Q6IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5PQkpFQ1QsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0luZGljYXRlcyB0aGlzIHR5cGUgaXMgYW4gb2JqZWN0LiBgZmllbGRzYCBhbmQgYGludGVyZmFjZXNgIGFyZSB2YWxpZCBmaWVsZHMuJyxcbiAgICB9LFxuICAgIElOVEVSRkFDRToge1xuICAgICAgdmFsdWU6IFR5cGVLaW5kLklOVEVSRkFDRSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhbiBpbnRlcmZhY2UuIGBmaWVsZHNgLCBgaW50ZXJmYWNlc2AsIGFuZCBgcG9zc2libGVUeXBlc2AgYXJlIHZhbGlkIGZpZWxkcy4nLFxuICAgIH0sXG4gICAgVU5JT046IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5VTklPTixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhIHVuaW9uLiBgcG9zc2libGVUeXBlc2AgaXMgYSB2YWxpZCBmaWVsZC4nLFxuICAgIH0sXG4gICAgRU5VTToge1xuICAgICAgdmFsdWU6IFR5cGVLaW5kLkVOVU0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0luZGljYXRlcyB0aGlzIHR5cGUgaXMgYW4gZW51bS4gYGVudW1WYWx1ZXNgIGlzIGEgdmFsaWQgZmllbGQuJyxcbiAgICB9LFxuICAgIElOUFVUX09CSkVDVDoge1xuICAgICAgdmFsdWU6IFR5cGVLaW5kLklOUFVUX09CSkVDVCxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhbiBpbnB1dCBvYmplY3QuIGBpbnB1dEZpZWxkc2AgaXMgYSB2YWxpZCBmaWVsZC4nLFxuICAgIH0sXG4gICAgTElTVDoge1xuICAgICAgdmFsdWU6IFR5cGVLaW5kLkxJU1QsXG4gICAgICBkZXNjcmlwdGlvbjogJ0luZGljYXRlcyB0aGlzIHR5cGUgaXMgYSBsaXN0LiBgb2ZUeXBlYCBpcyBhIHZhbGlkIGZpZWxkLicsXG4gICAgfSxcbiAgICBOT05fTlVMTDoge1xuICAgICAgdmFsdWU6IFR5cGVLaW5kLk5PTl9OVUxMLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdJbmRpY2F0ZXMgdGhpcyB0eXBlIGlzIGEgbm9uLW51bGwuIGBvZlR5cGVgIGlzIGEgdmFsaWQgZmllbGQuJyxcbiAgICB9LFxuICB9LFxufSk7XG4vKipcbiAqIE5vdGUgdGhhdCB0aGVzZSBhcmUgR3JhcGhRTEZpZWxkIGFuZCBub3QgR3JhcGhRTEZpZWxkQ29uZmlnLFxuICogc28gdGhlIGZvcm1hdCBmb3IgYXJncyBpcyBkaWZmZXJlbnQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IFNjaGVtYU1ldGFGaWVsZERlZiA9IHtcbiAgbmFtZTogJ19fc2NoZW1hJyxcbiAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKF9fU2NoZW1hKSxcbiAgZGVzY3JpcHRpb246ICdBY2Nlc3MgdGhlIGN1cnJlbnQgdHlwZSBzY2hlbWEgb2YgdGhpcyBzZXJ2ZXIuJyxcbiAgYXJnczogW10sXG4gIHJlc29sdmU6IChfc291cmNlLCBfYXJncywgX2NvbnRleHQsIHsgc2NoZW1hIH0pID0+IHNjaGVtYSxcbiAgZGVwcmVjYXRpb25SZWFzb246IHVuZGVmaW5lZCxcbiAgZXh0ZW5zaW9uczogT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgYXN0Tm9kZTogdW5kZWZpbmVkLFxufTtcbmV4cG9ydCBjb25zdCBUeXBlTWV0YUZpZWxkRGVmID0ge1xuICBuYW1lOiAnX190eXBlJyxcbiAgdHlwZTogX19UeXBlLFxuICBkZXNjcmlwdGlvbjogJ1JlcXVlc3QgdGhlIHR5cGUgaW5mb3JtYXRpb24gb2YgYSBzaW5nbGUgdHlwZS4nLFxuICBhcmdzOiBbXG4gICAge1xuICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgZGVwcmVjYXRpb25SZWFzb246IHVuZGVmaW5lZCxcbiAgICAgIGV4dGVuc2lvbnM6IE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgICBhc3ROb2RlOiB1bmRlZmluZWQsXG4gICAgfSxcbiAgXSxcbiAgcmVzb2x2ZTogKF9zb3VyY2UsIHsgbmFtZSB9LCBfY29udGV4dCwgeyBzY2hlbWEgfSkgPT4gc2NoZW1hLmdldFR5cGUobmFtZSksXG4gIGRlcHJlY2F0aW9uUmVhc29uOiB1bmRlZmluZWQsXG4gIGV4dGVuc2lvbnM6IE9iamVjdC5jcmVhdGUobnVsbCksXG4gIGFzdE5vZGU6IHVuZGVmaW5lZCxcbn07XG5leHBvcnQgY29uc3QgVHlwZU5hbWVNZXRhRmllbGREZWYgPSB7XG4gIG5hbWU6ICdfX3R5cGVuYW1lJyxcbiAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICBkZXNjcmlwdGlvbjogJ1RoZSBuYW1lIG9mIHRoZSBjdXJyZW50IE9iamVjdCB0eXBlIGF0IHJ1bnRpbWUuJyxcbiAgYXJnczogW10sXG4gIHJlc29sdmU6IChfc291cmNlLCBfYXJncywgX2NvbnRleHQsIHsgcGFyZW50VHlwZSB9KSA9PiBwYXJlbnRUeXBlLm5hbWUsXG4gIGRlcHJlY2F0aW9uUmVhc29uOiB1bmRlZmluZWQsXG4gIGV4dGVuc2lvbnM6IE9iamVjdC5jcmVhdGUobnVsbCksXG4gIGFzdE5vZGU6IHVuZGVmaW5lZCxcbn07XG5leHBvcnQgY29uc3QgaW50cm9zcGVjdGlvblR5cGVzID0gT2JqZWN0LmZyZWV6ZShbXG4gIF9fU2NoZW1hLFxuICBfX0RpcmVjdGl2ZSxcbiAgX19EaXJlY3RpdmVMb2NhdGlvbixcbiAgX19UeXBlLFxuICBfX0ZpZWxkLFxuICBfX0lucHV0VmFsdWUsXG4gIF9fRW51bVZhbHVlLFxuICBfX1R5cGVLaW5kLFxuXSk7XG5leHBvcnQgZnVuY3Rpb24gaXNJbnRyb3NwZWN0aW9uVHlwZSh0eXBlKSB7XG4gIHJldHVybiBpbnRyb3NwZWN0aW9uVHlwZXMuc29tZSgoeyBuYW1lIH0pID0+IHR5cGUubmFtZSA9PT0gbmFtZSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/introspection.mjs\n");
|
853 |
|
854 | }),
|
855 |
|
856 | "../../../node_modules/graphql/type/scalars.mjs":
|
857 |
|
858 |
|
859 |
|
860 |
|
861 | (function(module, __webpack_exports__, __webpack_require__) {
|
862 |
|
863 | "use strict";
|
864 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GRAPHQL_MAX_INT\", function() { return GRAPHQL_MAX_INT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GRAPHQL_MIN_INT\", function() { return GRAPHQL_MIN_INT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInt\", function() { return GraphQLInt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLFloat\", function() { return GraphQLFloat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLString\", function() { return GraphQLString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLBoolean\", function() { return GraphQLBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLID\", function() { return GraphQLID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"specifiedScalarTypes\", function() { return specifiedScalarTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSpecifiedScalarType\", function() { return isSpecifiedScalarType; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n/**\n * Maximum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe up-to 2^53 - 1\n * */\n\nconst GRAPHQL_MAX_INT = 2147483647;\n/**\n * Minimum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe starting at -(2^53 - 1)\n * */\n\nconst GRAPHQL_MIN_INT = -2147483648;\nconst GraphQLInt = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLScalarType\"]({\n name: 'Int',\n description:\n 'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 1 : 0;\n }\n\n let num = coercedValue;\n\n if (typeof coercedValue === 'string' && coercedValue !== '') {\n num = Number(coercedValue);\n }\n\n if (typeof num !== 'number' || !Number.isInteger(num)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Int cannot represent non-integer value: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(coercedValue)}`,\n );\n }\n\n if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n 'Int cannot represent non 32-bit signed integer value: ' +\n Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(coercedValue),\n );\n }\n\n return num;\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'number' || !Number.isInteger(inputValue)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Int cannot represent non-integer value: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(inputValue)}`,\n );\n }\n\n if (inputValue > GRAPHQL_MAX_INT || inputValue < GRAPHQL_MIN_INT) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Int cannot represent non 32-bit signed integer value: ${inputValue}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INT) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Int cannot represent non-integer value: ${Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"print\"])(valueNode)}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n const num = parseInt(valueNode.value, 10);\n\n if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Int cannot represent non 32-bit signed integer value: ${valueNode.value}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return num;\n },\n});\nconst GraphQLFloat = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLScalarType\"]({\n name: 'Float',\n description:\n 'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 1 : 0;\n }\n\n let num = coercedValue;\n\n if (typeof coercedValue === 'string' && coercedValue !== '') {\n num = Number(coercedValue);\n }\n\n if (typeof num !== 'number' || !Number.isFinite(num)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Float cannot represent non numeric value: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(coercedValue)}`,\n );\n }\n\n return num;\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'number' || !Number.isFinite(inputValue)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Float cannot represent non numeric value: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(inputValue)}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].FLOAT && valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INT) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Float cannot represent non numeric value: ${Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"print\"])(valueNode)}`,\n valueNode,\n );\n }\n\n return parseFloat(valueNode.value);\n },\n});\nconst GraphQLString = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLScalarType\"]({\n name: 'String',\n description:\n 'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not\n // attempt to coerce object, function, symbol, or other types as strings.\n\n if (typeof coercedValue === 'string') {\n return coercedValue;\n }\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 'true' : 'false';\n }\n\n if (typeof coercedValue === 'number' && Number.isFinite(coercedValue)) {\n return coercedValue.toString();\n }\n\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `String cannot represent value: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(outputValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'string') {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `String cannot represent a non string value: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(inputValue)}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].STRING) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `String cannot represent a non string value: ${Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"print\"])(valueNode)}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nconst GraphQLBoolean = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLScalarType\"]({\n name: 'Boolean',\n description: 'The `Boolean` scalar type represents `true` or `false`.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue;\n }\n\n if (Number.isFinite(coercedValue)) {\n return coercedValue !== 0;\n }\n\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Boolean cannot represent a non boolean value: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(coercedValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'boolean') {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Boolean cannot represent a non boolean value: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(inputValue)}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].BOOLEAN) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Boolean cannot represent a non boolean value: ${Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"print\"])(valueNode)}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nconst GraphQLID = new _definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLScalarType\"]({\n name: 'ID',\n description:\n 'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'string') {\n return coercedValue;\n }\n\n if (Number.isInteger(coercedValue)) {\n return String(coercedValue);\n }\n\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `ID cannot represent value: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(outputValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue === 'string') {\n return inputValue;\n }\n\n if (typeof inputValue === 'number' && Number.isInteger(inputValue)) {\n return inputValue.toString();\n }\n\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](`ID cannot represent value: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(inputValue)}`);\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].STRING && valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INT) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n 'ID cannot represent a non-string and non-integer value: ' +\n Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"print\"])(valueNode),\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nconst specifiedScalarTypes = Object.freeze([\n GraphQLString,\n GraphQLInt,\n GraphQLFloat,\n GraphQLBoolean,\n GraphQLID,\n]);\nfunction isSpecifiedScalarType(type) {\n return specifiedScalarTypes.some(({ name }) => type.name === name);\n} // Support serializing objects with custom valueOf() or toJSON() functions -\n// a common way to represent a complex value which can be represented as\n// a string (ex: MongoDB id objects).\n\nfunction serializeObject(outputValue) {\n if (Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isObjectLike\"])(outputValue)) {\n if (typeof outputValue.valueOf === 'function') {\n const valueOfResult = outputValue.valueOf();\n\n if (!Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isObjectLike\"])(valueOfResult)) {\n return valueOfResult;\n }\n }\n\n if (typeof outputValue.toJSON === 'function') {\n return outputValue.toJSON();\n }\n }\n\n return outputValue;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9zY2FsYXJzLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3R5cGUvc2NhbGFycy5tanM/NWY3NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBpc09iamVjdExpa2UgfSBmcm9tICcuLi9qc3V0aWxzL2lzT2JqZWN0TGlrZS5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IHByaW50IH0gZnJvbSAnLi4vbGFuZ3VhZ2UvcHJpbnRlci5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTFNjYWxhclR5cGUgfSBmcm9tICcuL2RlZmluaXRpb24ubWpzJztcbi8qKlxuICogTWF4aW11bSBwb3NzaWJsZSBJbnQgdmFsdWUgYXMgcGVyIEdyYXBoUUwgU3BlYyAoMzItYml0IHNpZ25lZCBpbnRlZ2VyKS5cbiAqIG4uYi4gVGhpcyBkaWZmZXJzIGZyb20gSmF2YVNjcmlwdCdzIG51bWJlcnMgdGhhdCBhcmUgSUVFRSA3NTQgZG91YmxlcyBzYWZlIHVwLXRvIDJeNTMgLSAxXG4gKiAqL1xuXG5leHBvcnQgY29uc3QgR1JBUEhRTF9NQVhfSU5UID0gMjE0NzQ4MzY0Nztcbi8qKlxuICogTWluaW11bSBwb3NzaWJsZSBJbnQgdmFsdWUgYXMgcGVyIEdyYXBoUUwgU3BlYyAoMzItYml0IHNpZ25lZCBpbnRlZ2VyKS5cbiAqIG4uYi4gVGhpcyBkaWZmZXJzIGZyb20gSmF2YVNjcmlwdCdzIG51bWJlcnMgdGhhdCBhcmUgSUVFRSA3NTQgZG91YmxlcyBzYWZlIHN0YXJ0aW5nIGF0IC0oMl41MyAtIDEpXG4gKiAqL1xuXG5leHBvcnQgY29uc3QgR1JBUEhRTF9NSU5fSU5UID0gLTIxNDc0ODM2NDg7XG5leHBvcnQgY29uc3QgR3JhcGhRTEludCA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdJbnQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIGBJbnRgIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgbm9uLWZyYWN0aW9uYWwgc2lnbmVkIHdob2xlIG51bWVyaWMgdmFsdWVzLiBJbnQgY2FuIHJlcHJlc2VudCB2YWx1ZXMgYmV0d2VlbiAtKDJeMzEpIGFuZCAyXjMxIC0gMS4nLFxuXG4gIHNlcmlhbGl6ZShvdXRwdXRWYWx1ZSkge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSk7XG5cbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gY29lcmNlZFZhbHVlID8gMSA6IDA7XG4gICAgfVxuXG4gICAgbGV0IG51bSA9IGNvZXJjZWRWYWx1ZTtcblxuICAgIGlmICh0eXBlb2YgY29lcmNlZFZhbHVlID09PSAnc3RyaW5nJyAmJiBjb2VyY2VkVmFsdWUgIT09ICcnKSB7XG4gICAgICBudW0gPSBOdW1iZXIoY29lcmNlZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG51bSAhPT0gJ251bWJlcicgfHwgIU51bWJlci5pc0ludGVnZXIobnVtKSkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYEludCBjYW5ub3QgcmVwcmVzZW50IG5vbi1pbnRlZ2VyIHZhbHVlOiAke2luc3BlY3QoY29lcmNlZFZhbHVlKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAobnVtID4gR1JBUEhRTF9NQVhfSU5UIHx8IG51bSA8IEdSQVBIUUxfTUlOX0lOVCkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgJ0ludCBjYW5ub3QgcmVwcmVzZW50IG5vbiAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWU6ICcgK1xuICAgICAgICAgIGluc3BlY3QoY29lcmNlZFZhbHVlKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bTtcbiAgfSxcblxuICBwYXJzZVZhbHVlKGlucHV0VmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIGlucHV0VmFsdWUgIT09ICdudW1iZXInIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGlucHV0VmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgSW50IGNhbm5vdCByZXByZXNlbnQgbm9uLWludGVnZXIgdmFsdWU6ICR7aW5zcGVjdChpbnB1dFZhbHVlKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaW5wdXRWYWx1ZSA+IEdSQVBIUUxfTUFYX0lOVCB8fCBpbnB1dFZhbHVlIDwgR1JBUEhRTF9NSU5fSU5UKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgSW50IGNhbm5vdCByZXByZXNlbnQgbm9uIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZTogJHtpbnB1dFZhbHVlfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICB9LFxuXG4gIHBhcnNlTGl0ZXJhbCh2YWx1ZU5vZGUpIHtcbiAgICBpZiAodmFsdWVOb2RlLmtpbmQgIT09IEtpbmQuSU5UKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgSW50IGNhbm5vdCByZXByZXNlbnQgbm9uLWludGVnZXIgdmFsdWU6ICR7cHJpbnQodmFsdWVOb2RlKX1gLFxuICAgICAgICB7XG4gICAgICAgICAgbm9kZXM6IHZhbHVlTm9kZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbnVtID0gcGFyc2VJbnQodmFsdWVOb2RlLnZhbHVlLCAxMCk7XG5cbiAgICBpZiAobnVtID4gR1JBUEhRTF9NQVhfSU5UIHx8IG51bSA8IEdSQVBIUUxfTUlOX0lOVCkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYEludCBjYW5ub3QgcmVwcmVzZW50IG5vbiAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWU6ICR7dmFsdWVOb2RlLnZhbHVlfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBub2RlczogdmFsdWVOb2RlLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtO1xuICB9LFxufSk7XG5leHBvcnQgY29uc3QgR3JhcGhRTEZsb2F0ID0gbmV3IEdyYXBoUUxTY2FsYXJUeXBlKHtcbiAgbmFtZTogJ0Zsb2F0JyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBgRmxvYXRgIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgc2lnbmVkIGRvdWJsZS1wcmVjaXNpb24gZnJhY3Rpb25hbCB2YWx1ZXMgYXMgc3BlY2lmaWVkIGJ5IFtJRUVFIDc1NF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUVFRV9mbG9hdGluZ19wb2ludCkuJyxcblxuICBzZXJpYWxpemUob3V0cHV0VmFsdWUpIHtcbiAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBzZXJpYWxpemVPYmplY3Qob3V0cHV0VmFsdWUpO1xuXG4gICAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGNvZXJjZWRWYWx1ZSA/IDEgOiAwO1xuICAgIH1cblxuICAgIGxldCBudW0gPSBjb2VyY2VkVmFsdWU7XG5cbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ3N0cmluZycgJiYgY29lcmNlZFZhbHVlICE9PSAnJykge1xuICAgICAgbnVtID0gTnVtYmVyKGNvZXJjZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW0gIT09ICdudW1iZXInIHx8ICFOdW1iZXIuaXNGaW5pdGUobnVtKSkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYEZsb2F0IGNhbm5vdCByZXByZXNlbnQgbm9uIG51bWVyaWMgdmFsdWU6ICR7aW5zcGVjdChjb2VyY2VkVmFsdWUpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBudW07XG4gIH0sXG5cbiAgcGFyc2VWYWx1ZShpbnB1dFZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dFZhbHVlICE9PSAnbnVtYmVyJyB8fCAhTnVtYmVyLmlzRmluaXRlKGlucHV0VmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgRmxvYXQgY2Fubm90IHJlcHJlc2VudCBub24gbnVtZXJpYyB2YWx1ZTogJHtpbnNwZWN0KGlucHV0VmFsdWUpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICB9LFxuXG4gIHBhcnNlTGl0ZXJhbCh2YWx1ZU5vZGUpIHtcbiAgICBpZiAodmFsdWVOb2RlLmtpbmQgIT09IEtpbmQuRkxPQVQgJiYgdmFsdWVOb2RlLmtpbmQgIT09IEtpbmQuSU5UKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgRmxvYXQgY2Fubm90IHJlcHJlc2VudCBub24gbnVtZXJpYyB2YWx1ZTogJHtwcmludCh2YWx1ZU5vZGUpfWAsXG4gICAgICAgIHZhbHVlTm9kZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWVOb2RlLnZhbHVlKTtcbiAgfSxcbn0pO1xuZXhwb3J0IGNvbnN0IEdyYXBoUUxTdHJpbmcgPSBuZXcgR3JhcGhRTFNjYWxhclR5cGUoe1xuICBuYW1lOiAnU3RyaW5nJyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBgU3RyaW5nYCBzY2FsYXIgdHlwZSByZXByZXNlbnRzIHRleHR1YWwgZGF0YSwgcmVwcmVzZW50ZWQgYXMgVVRGLTggY2hhcmFjdGVyIHNlcXVlbmNlcy4gVGhlIFN0cmluZyB0eXBlIGlzIG1vc3Qgb2Z0ZW4gdXNlZCBieSBHcmFwaFFMIHRvIHJlcHJlc2VudCBmcmVlLWZvcm0gaHVtYW4tcmVhZGFibGUgdGV4dC4nLFxuXG4gIHNlcmlhbGl6ZShvdXRwdXRWYWx1ZSkge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSk7IC8vIFNlcmlhbGl6ZSBzdHJpbmcsIGJvb2xlYW4gYW5kIG51bWJlciB2YWx1ZXMgdG8gYSBzdHJpbmcsIGJ1dCBkbyBub3RcbiAgICAvLyBhdHRlbXB0IHRvIGNvZXJjZSBvYmplY3QsIGZ1bmN0aW9uLCBzeW1ib2wsIG9yIG90aGVyIHR5cGVzIGFzIHN0cmluZ3MuXG5cbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBjb2VyY2VkVmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGNvZXJjZWRWYWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZShjb2VyY2VkVmFsdWUpKSB7XG4gICAgICByZXR1cm4gY29lcmNlZFZhbHVlLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgIGBTdHJpbmcgY2Fubm90IHJlcHJlc2VudCB2YWx1ZTogJHtpbnNwZWN0KG91dHB1dFZhbHVlKX1gLFxuICAgICk7XG4gIH0sXG5cbiAgcGFyc2VWYWx1ZShpbnB1dFZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dFZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYFN0cmluZyBjYW5ub3QgcmVwcmVzZW50IGEgbm9uIHN0cmluZyB2YWx1ZTogJHtpbnNwZWN0KGlucHV0VmFsdWUpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICB9LFxuXG4gIHBhcnNlTGl0ZXJhbCh2YWx1ZU5vZGUpIHtcbiAgICBpZiAodmFsdWVOb2RlLmtpbmQgIT09IEtpbmQuU1RSSU5HKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgU3RyaW5nIGNhbm5vdCByZXByZXNlbnQgYSBub24gc3RyaW5nIHZhbHVlOiAke3ByaW50KHZhbHVlTm9kZSl9YCxcbiAgICAgICAge1xuICAgICAgICAgIG5vZGVzOiB2YWx1ZU5vZGUsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZU5vZGUudmFsdWU7XG4gIH0sXG59KTtcbmV4cG9ydCBjb25zdCBHcmFwaFFMQm9vbGVhbiA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdCb29sZWFuJyxcbiAgZGVzY3JpcHRpb246ICdUaGUgYEJvb2xlYW5gIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgYHRydWVgIG9yIGBmYWxzZWAuJyxcblxuICBzZXJpYWxpemUob3V0cHV0VmFsdWUpIHtcbiAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBzZXJpYWxpemVPYmplY3Qob3V0cHV0VmFsdWUpO1xuXG4gICAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGNvZXJjZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoTnVtYmVyLmlzRmluaXRlKGNvZXJjZWRWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBjb2VyY2VkVmFsdWUgIT09IDA7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgIGBCb29sZWFuIGNhbm5vdCByZXByZXNlbnQgYSBub24gYm9vbGVhbiB2YWx1ZTogJHtpbnNwZWN0KGNvZXJjZWRWYWx1ZSl9YCxcbiAgICApO1xuICB9LFxuXG4gIHBhcnNlVmFsdWUoaW5wdXRWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgaW5wdXRWYWx1ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgQm9vbGVhbiBjYW5ub3QgcmVwcmVzZW50IGEgbm9uIGJvb2xlYW4gdmFsdWU6ICR7aW5zcGVjdChpbnB1dFZhbHVlKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgfSxcblxuICBwYXJzZUxpdGVyYWwodmFsdWVOb2RlKSB7XG4gICAgaWYgKHZhbHVlTm9kZS5raW5kICE9PSBLaW5kLkJPT0xFQU4pIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgIGBCb29sZWFuIGNhbm5vdCByZXByZXNlbnQgYSBub24gYm9vbGVhbiB2YWx1ZTogJHtwcmludCh2YWx1ZU5vZGUpfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBub2RlczogdmFsdWVOb2RlLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVOb2RlLnZhbHVlO1xuICB9LFxufSk7XG5leHBvcnQgY29uc3QgR3JhcGhRTElEID0gbmV3IEdyYXBoUUxTY2FsYXJUeXBlKHtcbiAgbmFtZTogJ0lEJyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBgSURgIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgYSB1bmlxdWUgaWRlbnRpZmllciwgb2Z0ZW4gdXNlZCB0byByZWZldGNoIGFuIG9iamVjdCBvciBhcyBrZXkgZm9yIGEgY2FjaGUuIFRoZSBJRCB0eXBlIGFwcGVhcnMgaW4gYSBKU09OIHJlc3BvbnNlIGFzIGEgU3RyaW5nOyBob3dldmVyLCBpdCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgaHVtYW4tcmVhZGFibGUuIFdoZW4gZXhwZWN0ZWQgYXMgYW4gaW5wdXQgdHlwZSwgYW55IHN0cmluZyAoc3VjaCBhcyBgXCI0XCJgKSBvciBpbnRlZ2VyIChzdWNoIGFzIGA0YCkgaW5wdXQgdmFsdWUgd2lsbCBiZSBhY2NlcHRlZCBhcyBhbiBJRC4nLFxuXG4gIHNlcmlhbGl6ZShvdXRwdXRWYWx1ZSkge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSk7XG5cbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBjb2VyY2VkVmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKE51bWJlci5pc0ludGVnZXIoY29lcmNlZFZhbHVlKSkge1xuICAgICAgcmV0dXJuIFN0cmluZyhjb2VyY2VkVmFsdWUpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICBgSUQgY2Fubm90IHJlcHJlc2VudCB2YWx1ZTogJHtpbnNwZWN0KG91dHB1dFZhbHVlKX1gLFxuICAgICk7XG4gIH0sXG5cbiAgcGFyc2VWYWx1ZShpbnB1dFZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbnB1dFZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNJbnRlZ2VyKGlucHV0VmFsdWUpKSB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoYElEIGNhbm5vdCByZXByZXNlbnQgdmFsdWU6ICR7aW5zcGVjdChpbnB1dFZhbHVlKX1gKTtcbiAgfSxcblxuICBwYXJzZUxpdGVyYWwodmFsdWVOb2RlKSB7XG4gICAgaWYgKHZhbHVlTm9kZS5raW5kICE9PSBLaW5kLlNUUklORyAmJiB2YWx1ZU5vZGUua2luZCAhPT0gS2luZC5JTlQpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICdJRCBjYW5ub3QgcmVwcmVzZW50IGEgbm9uLXN0cmluZyBhbmQgbm9uLWludGVnZXIgdmFsdWU6ICcgK1xuICAgICAgICAgIHByaW50KHZhbHVlTm9kZSksXG4gICAgICAgIHtcbiAgICAgICAgICBub2RlczogdmFsdWVOb2RlLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVOb2RlLnZhbHVlO1xuICB9LFxufSk7XG5leHBvcnQgY29uc3Qgc3BlY2lmaWVkU2NhbGFyVHlwZXMgPSBPYmplY3QuZnJlZXplKFtcbiAgR3JhcGhRTFN0cmluZyxcbiAgR3JhcGhRTEludCxcbiAgR3JhcGhRTEZsb2F0LFxuICBHcmFwaFFMQm9vbGVhbixcbiAgR3JhcGhRTElELFxuXSk7XG5leHBvcnQgZnVuY3Rpb24gaXNTcGVjaWZpZWRTY2FsYXJUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIHNwZWNpZmllZFNjYWxhclR5cGVzLnNvbWUoKHsgbmFtZSB9KSA9PiB0eXBlLm5hbWUgPT09IG5hbWUpO1xufSAvLyBTdXBwb3J0IHNlcmlhbGl6aW5nIG9iamVjdHMgd2l0aCBjdXN0b20gdmFsdWVPZigpIG9yIHRvSlNPTigpIGZ1bmN0aW9ucyAtXG4vLyBhIGNvbW1vbiB3YXkgdG8gcmVwcmVzZW50IGEgY29tcGxleCB2YWx1ZSB3aGljaCBjYW4gYmUgcmVwcmVzZW50ZWQgYXNcbi8vIGEgc3RyaW5nIChleDogTW9uZ29EQiBpZCBvYmplY3RzKS5cblxuZnVuY3Rpb24gc2VyaWFsaXplT2JqZWN0KG91dHB1dFZhbHVlKSB7XG4gIGlmIChpc09iamVjdExpa2Uob3V0cHV0VmFsdWUpKSB7XG4gICAgaWYgKHR5cGVvZiBvdXRwdXRWYWx1ZS52YWx1ZU9mID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zdCB2YWx1ZU9mUmVzdWx0ID0gb3V0cHV0VmFsdWUudmFsdWVPZigpO1xuXG4gICAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZU9mUmVzdWx0KSkge1xuICAgICAgICByZXR1cm4gdmFsdWVPZlJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG91dHB1dFZhbHVlLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIG91dHB1dFZhbHVlLnRvSlNPTigpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXRWYWx1ZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/scalars.mjs\n");
|
865 |
|
866 | }),
|
867 |
|
868 | "../../../node_modules/graphql/type/schema.mjs":
|
869 |
|
870 |
|
871 |
|
872 |
|
873 | (function(module, __webpack_exports__, __webpack_require__) {
|
874 |
|
875 | "use strict";
|
876 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSchema\", function() { return isSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertSchema\", function() { return assertSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSchema\", function() { return GraphQLSchema; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/instanceOf.mjs */ \"../../../node_modules/graphql/jsutils/instanceOf.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/toObjMap.mjs */ \"../../../node_modules/graphql/jsutils/toObjMap.mjs\");\n/* harmony import */ var _language_ast_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../language/ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _directives_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _introspection_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n\n\n\n\n\n\n\n\n\n/**\n * Test if the given value is a GraphQL schema.\n */\n\nfunction isSchema(schema) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_2__[\"instanceOf\"])(schema, GraphQLSchema);\n}\nfunction assertSchema(schema) {\n if (!isSchema(schema)) {\n throw new Error(`Expected ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(schema)} to be a GraphQL schema.`);\n }\n\n return schema;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Schema Definition\n *\n * A Schema is created by supplying the root types of each type of operation,\n * query and mutation (optional). A schema definition is then supplied to the\n * validator and executor.\n *\n * Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n * query: MyAppQueryRootType,\n * mutation: MyAppMutationRootType,\n * })\n * ```\n *\n * Note: When the schema is constructed, by default only the types that are\n * reachable by traversing the root types are included, other types must be\n * explicitly referenced.\n *\n * Example:\n *\n * ```ts\n * const characterInterface = new GraphQLInterfaceType({\n * name: 'Character',\n * ...\n * });\n *\n * const humanType = new GraphQLObjectType({\n * name: 'Human',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const droidType = new GraphQLObjectType({\n * name: 'Droid',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const schema = new GraphQLSchema({\n * query: new GraphQLObjectType({\n * name: 'Query',\n * fields: {\n * hero: { type: characterInterface, ... },\n * }\n * }),\n * ...\n * // Since this schema references only the `Character` interface it's\n * // necessary to explicitly list the types that implement it if\n * // you want them to be included in the final schema.\n * types: [humanType, droidType],\n * })\n * ```\n *\n * Note: If an array of `directives` are provided to GraphQLSchema, that will be\n * the exact list of directives represented and allowed. If `directives` is not\n * provided then a default set of the specified directives (e.g. `@include` and\n * `@skip`) will be used. If you wish to provide *additional* directives to these\n * specified directives, you must explicitly declare them. Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n * ...\n * directives: specifiedDirectives.concat([ myCustomDirective ]),\n * })\n * ```\n */\nclass GraphQLSchema {\n // Used as a cache for validateSchema().\n constructor(config) {\n var _config$extensionASTN, _config$directives;\n\n // If this schema was built from a source known to be valid, then it may be\n // marked with assumeValid to avoid an additional type system validation.\n this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors.\n\n Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isObjectLike\"])(config) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(false, 'Must provide configuration object.');\n !config.types ||\n Array.isArray(config.types) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `\"types\" must be Array if provided but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(config.types)}.`,\n );\n !config.directives ||\n Array.isArray(config.directives) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n '\"directives\" must be Array if provided but got: ' +\n `${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(config.directives)}.`,\n );\n this.description = config.description;\n this.extensions = Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_4__[\"toObjMap\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN = config.extensionASTNodes) !== null &&\n _config$extensionASTN !== void 0\n ? _config$extensionASTN\n : [];\n this._queryType = config.query;\n this._mutationType = config.mutation;\n this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default.\n\n this._directives =\n (_config$directives = config.directives) !== null &&\n _config$directives !== void 0\n ? _config$directives\n : _directives_mjs__WEBPACK_IMPORTED_MODULE_7__[\"specifiedDirectives\"]; // To preserve order of user-provided types, we add first to add them to\n // the set of \"collected\" types, so `collectReferencedTypes` ignore them.\n\n const allReferencedTypes = new Set(config.types);\n\n if (config.types != null) {\n for (const type of config.types) {\n // When we ready to process this type, we remove it from \"collected\" types\n // and then add it together with all dependent types in the correct position.\n allReferencedTypes.delete(type);\n collectReferencedTypes(type, allReferencedTypes);\n }\n }\n\n if (this._queryType != null) {\n collectReferencedTypes(this._queryType, allReferencedTypes);\n }\n\n if (this._mutationType != null) {\n collectReferencedTypes(this._mutationType, allReferencedTypes);\n }\n\n if (this._subscriptionType != null) {\n collectReferencedTypes(this._subscriptionType, allReferencedTypes);\n }\n\n for (const directive of this._directives) {\n // Directives are not validated until validateSchema() is called.\n if (Object(_directives_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isDirective\"])(directive)) {\n for (const arg of directive.args) {\n collectReferencedTypes(arg.type, allReferencedTypes);\n }\n }\n }\n\n collectReferencedTypes(_introspection_mjs__WEBPACK_IMPORTED_MODULE_8__[\"__Schema\"], allReferencedTypes); // Storing the resulting map for reference by the schema.\n\n this._typeMap = Object.create(null);\n this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name.\n\n this._implementationsMap = Object.create(null);\n\n for (const namedType of allReferencedTypes) {\n if (namedType == null) {\n continue;\n }\n\n const typeName = namedType.name;\n typeName ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n 'One of the provided types for building the Schema is missing a name.',\n );\n\n if (this._typeMap[typeName] !== undefined) {\n throw new Error(\n `Schema must contain uniquely named types but contains multiple types named \"${typeName}\".`,\n );\n }\n\n this._typeMap[typeName] = namedType;\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isInterfaceType\"])(namedType)) {\n // Store implementations by interface.\n for (const iface of namedType.getInterfaces()) {\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isInterfaceType\"])(iface)) {\n let implementations = this._implementationsMap[iface.name];\n\n if (implementations === undefined) {\n implementations = this._implementationsMap[iface.name] = {\n objects: [],\n interfaces: [],\n };\n }\n\n implementations.interfaces.push(namedType);\n }\n }\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isObjectType\"])(namedType)) {\n // Store implementations by objects.\n for (const iface of namedType.getInterfaces()) {\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isInterfaceType\"])(iface)) {\n let implementations = this._implementationsMap[iface.name];\n\n if (implementations === undefined) {\n implementations = this._implementationsMap[iface.name] = {\n objects: [],\n interfaces: [],\n };\n }\n\n implementations.objects.push(namedType);\n }\n }\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLSchema';\n }\n\n getQueryType() {\n return this._queryType;\n }\n\n getMutationType() {\n return this._mutationType;\n }\n\n getSubscriptionType() {\n return this._subscriptionType;\n }\n\n getRootType(operation) {\n switch (operation) {\n case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_5__[\"OperationTypeNode\"].QUERY:\n return this.getQueryType();\n\n case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_5__[\"OperationTypeNode\"].MUTATION:\n return this.getMutationType();\n\n case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_5__[\"OperationTypeNode\"].SUBSCRIPTION:\n return this.getSubscriptionType();\n }\n }\n\n getTypeMap() {\n return this._typeMap;\n }\n\n getType(name) {\n return this.getTypeMap()[name];\n }\n\n getPossibleTypes(abstractType) {\n return Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isUnionType\"])(abstractType)\n ? abstractType.getTypes()\n : this.getImplementations(abstractType).objects;\n }\n\n getImplementations(interfaceType) {\n const implementations = this._implementationsMap[interfaceType.name];\n return implementations !== null && implementations !== void 0\n ? implementations\n : {\n objects: [],\n interfaces: [],\n };\n }\n\n isSubType(abstractType, maybeSubType) {\n let map = this._subTypeMap[abstractType.name];\n\n if (map === undefined) {\n map = Object.create(null);\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isUnionType\"])(abstractType)) {\n for (const type of abstractType.getTypes()) {\n map[type.name] = true;\n }\n } else {\n const implementations = this.getImplementations(abstractType);\n\n for (const type of implementations.objects) {\n map[type.name] = true;\n }\n\n for (const type of implementations.interfaces) {\n map[type.name] = true;\n }\n }\n\n this._subTypeMap[abstractType.name] = map;\n }\n\n return map[maybeSubType.name] !== undefined;\n }\n\n getDirectives() {\n return this._directives;\n }\n\n getDirective(name) {\n return this.getDirectives().find((directive) => directive.name === name);\n }\n\n toConfig() {\n return {\n description: this.description,\n query: this.getQueryType(),\n mutation: this.getMutationType(),\n subscription: this.getSubscriptionType(),\n types: Object.values(this.getTypeMap()),\n directives: this.getDirectives(),\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n assumeValid: this.__validationErrors !== undefined,\n };\n }\n}\n\nfunction collectReferencedTypes(type, typeSet) {\n const namedType = Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"getNamedType\"])(type);\n\n if (!typeSet.has(namedType)) {\n typeSet.add(namedType);\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isUnionType\"])(namedType)) {\n for (const memberType of namedType.getTypes()) {\n collectReferencedTypes(memberType, typeSet);\n }\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isObjectType\"])(namedType) || Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isInterfaceType\"])(namedType)) {\n for (const interfaceType of namedType.getInterfaces()) {\n collectReferencedTypes(interfaceType, typeSet);\n }\n\n for (const field of Object.values(namedType.getFields())) {\n collectReferencedTypes(field.type, typeSet);\n\n for (const arg of field.args) {\n collectReferencedTypes(arg.type, typeSet);\n }\n }\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isInputObjectType\"])(namedType)) {\n for (const field of Object.values(namedType.getFields())) {\n collectReferencedTypes(field.type, typeSet);\n }\n }\n }\n\n return typeSet;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9zY2hlbWEubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9zY2hlbWEubWpzPzQ4OGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGV2QXNzZXJ0IH0gZnJvbSAnLi4vanN1dGlscy9kZXZBc3NlcnQubWpzJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGluc3RhbmNlT2YgfSBmcm9tICcuLi9qc3V0aWxzL2luc3RhbmNlT2YubWpzJztcbmltcG9ydCB7IGlzT2JqZWN0TGlrZSB9IGZyb20gJy4uL2pzdXRpbHMvaXNPYmplY3RMaWtlLm1qcyc7XG5pbXBvcnQgeyB0b09iak1hcCB9IGZyb20gJy4uL2pzdXRpbHMvdG9PYmpNYXAubWpzJztcbmltcG9ydCB7IE9wZXJhdGlvblR5cGVOb2RlIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvYXN0Lm1qcyc7XG5pbXBvcnQge1xuICBnZXROYW1lZFR5cGUsXG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzT2JqZWN0VHlwZSxcbiAgaXNVbmlvblR5cGUsXG59IGZyb20gJy4vZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHsgaXNEaXJlY3RpdmUsIHNwZWNpZmllZERpcmVjdGl2ZXMgfSBmcm9tICcuL2RpcmVjdGl2ZXMubWpzJztcbmltcG9ydCB7IF9fU2NoZW1hIH0gZnJvbSAnLi9pbnRyb3NwZWN0aW9uLm1qcyc7XG4vKipcbiAqIFRlc3QgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgR3JhcGhRTCBzY2hlbWEuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2NoZW1hKHNjaGVtYSkge1xuICByZXR1cm4gaW5zdGFuY2VPZihzY2hlbWEsIEdyYXBoUUxTY2hlbWEpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFNjaGVtYShzY2hlbWEpIHtcbiAgaWYgKCFpc1NjaGVtYShzY2hlbWEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3Qoc2NoZW1hKX0gdG8gYmUgYSBHcmFwaFFMIHNjaGVtYS5gKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59XG4vKipcbiAqIEN1c3RvbSBleHRlbnNpb25zXG4gKlxuICogQHJlbWFya3NcbiAqIFVzZSBhIHVuaXF1ZSBpZGVudGlmaWVyIG5hbWUgZm9yIHlvdXIgZXh0ZW5zaW9uLCBmb3IgZXhhbXBsZSB0aGUgbmFtZSBvZlxuICogeW91ciBsaWJyYXJ5IG9yIHByb2plY3QuIERvIG5vdCB1c2UgYSBzaG9ydGVuZWQgaWRlbnRpZmllciBhcyB0aGlzIGluY3JlYXNlc1xuICogdGhlIHJpc2sgb2YgY29uZmxpY3RzLiBXZSByZWNvbW1lbmQgeW91IGFkZCBhdCBtb3N0IG9uZSBleHRlbnNpb24gZmllbGQsXG4gKiBhbiBvYmplY3Qgd2hpY2ggY2FuIGNvbnRhaW4gYWxsIHRoZSB2YWx1ZXMgeW91IG5lZWQuXG4gKi9cblxuLyoqXG4gKiBTY2hlbWEgRGVmaW5pdGlvblxuICpcbiAqIEEgU2NoZW1hIGlzIGNyZWF0ZWQgYnkgc3VwcGx5aW5nIHRoZSByb290IHR5cGVzIG9mIGVhY2ggdHlwZSBvZiBvcGVyYXRpb24sXG4gKiBxdWVyeSBhbmQgbXV0YXRpb24gKG9wdGlvbmFsKS4gQSBzY2hlbWEgZGVmaW5pdGlvbiBpcyB0aGVuIHN1cHBsaWVkIHRvIHRoZVxuICogdmFsaWRhdG9yIGFuZCBleGVjdXRvci5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBNeUFwcFNjaGVtYSA9IG5ldyBHcmFwaFFMU2NoZW1hKHtcbiAqICAgcXVlcnk6IE15QXBwUXVlcnlSb290VHlwZSxcbiAqICAgbXV0YXRpb246IE15QXBwTXV0YXRpb25Sb290VHlwZSxcbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBXaGVuIHRoZSBzY2hlbWEgaXMgY29uc3RydWN0ZWQsIGJ5IGRlZmF1bHQgb25seSB0aGUgdHlwZXMgdGhhdCBhcmVcbiAqIHJlYWNoYWJsZSBieSB0cmF2ZXJzaW5nIHRoZSByb290IHR5cGVzIGFyZSBpbmNsdWRlZCwgb3RoZXIgdHlwZXMgbXVzdCBiZVxuICogZXhwbGljaXRseSByZWZlcmVuY2VkLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IGNoYXJhY3RlckludGVyZmFjZSA9IG5ldyBHcmFwaFFMSW50ZXJmYWNlVHlwZSh7XG4gKiAgIG5hbWU6ICdDaGFyYWN0ZXInLFxuICogICAuLi5cbiAqIH0pO1xuICpcbiAqIGNvbnN0IGh1bWFuVHlwZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gKiAgIG5hbWU6ICdIdW1hbicsXG4gKiAgIGludGVyZmFjZXM6IFtjaGFyYWN0ZXJJbnRlcmZhY2VdLFxuICogICAuLi5cbiAqIH0pO1xuICpcbiAqIGNvbnN0IGRyb2lkVHlwZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gKiAgIG5hbWU6ICdEcm9pZCcsXG4gKiAgIGludGVyZmFjZXM6IFtjaGFyYWN0ZXJJbnRlcmZhY2VdLFxuICogICAuLi5cbiAqIH0pO1xuICpcbiAqIGNvbnN0IHNjaGVtYSA9IG5ldyBHcmFwaFFMU2NoZW1hKHtcbiAqICAgcXVlcnk6IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gKiAgICAgbmFtZTogJ1F1ZXJ5JyxcbiAqICAgICBmaWVsZHM6IHtcbiAqICAgICAgIGhlcm86IHsgdHlwZTogY2hhcmFjdGVySW50ZXJmYWNlLCAuLi4gfSxcbiAqICAgICB9XG4gKiAgIH0pLFxuICogICAuLi5cbiAqICAgLy8gU2luY2UgdGhpcyBzY2hlbWEgcmVmZXJlbmNlcyBvbmx5IHRoZSBgQ2hhcmFjdGVyYCBpbnRlcmZhY2UgaXQnc1xuICogICAvLyBuZWNlc3NhcnkgdG8gZXhwbGljaXRseSBsaXN0IHRoZSB0eXBlcyB0aGF0IGltcGxlbWVudCBpdCBpZlxuICogICAvLyB5b3Ugd2FudCB0aGVtIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCBzY2hlbWEuXG4gKiAgIHR5cGVzOiBbaHVtYW5UeXBlLCBkcm9pZFR5cGVdLFxuICogfSlcbiAqIGBgYFxuICpcbiAqIE5vdGU6IElmIGFuIGFycmF5IG9mIGBkaXJlY3RpdmVzYCBhcmUgcHJvdmlkZWQgdG8gR3JhcGhRTFNjaGVtYSwgdGhhdCB3aWxsIGJlXG4gKiB0aGUgZXhhY3QgbGlzdCBvZiBkaXJlY3RpdmVzIHJlcHJlc2VudGVkIGFuZCBhbGxvd2VkLiBJZiBgZGlyZWN0aXZlc2AgaXMgbm90XG4gKiBwcm92aWRlZCB0aGVuIGEgZGVmYXVsdCBzZXQgb2YgdGhlIHNwZWNpZmllZCBkaXJlY3RpdmVzIChlLmcuIGBAaW5jbHVkZWAgYW5kXG4gKiBgQHNraXBgKSB3aWxsIGJlIHVzZWQuIElmIHlvdSB3aXNoIHRvIHByb3ZpZGUgKmFkZGl0aW9uYWwqIGRpcmVjdGl2ZXMgdG8gdGhlc2VcbiAqIHNwZWNpZmllZCBkaXJlY3RpdmVzLCB5b3UgbXVzdCBleHBsaWNpdGx5IGRlY2xhcmUgdGhlbS4gRXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgTXlBcHBTY2hlbWEgPSBuZXcgR3JhcGhRTFNjaGVtYSh7XG4gKiAgIC4uLlxuICogICBkaXJlY3RpdmVzOiBzcGVjaWZpZWREaXJlY3RpdmVzLmNvbmNhdChbIG15Q3VzdG9tRGlyZWN0aXZlIF0pLFxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTFNjaGVtYSB7XG4gIC8vIFVzZWQgYXMgYSBjYWNoZSBmb3IgdmFsaWRhdGVTY2hlbWEoKS5cbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgdmFyIF9jb25maWckZXh0ZW5zaW9uQVNUTiwgX2NvbmZpZyRkaXJlY3RpdmVzO1xuXG4gICAgLy8gSWYgdGhpcyBzY2hlbWEgd2FzIGJ1aWx0IGZyb20gYSBzb3VyY2Uga25vd24gdG8gYmUgdmFsaWQsIHRoZW4gaXQgbWF5IGJlXG4gICAgLy8gbWFya2VkIHdpdGggYXNzdW1lVmFsaWQgdG8gYXZvaWQgYW4gYWRkaXRpb25hbCB0eXBlIHN5c3RlbSB2YWxpZGF0aW9uLlxuICAgIHRoaXMuX192YWxpZGF0aW9uRXJyb3JzID0gY29uZmlnLmFzc3VtZVZhbGlkID09PSB0cnVlID8gW10gOiB1bmRlZmluZWQ7IC8vIENoZWNrIGZvciBjb21tb24gbWlzdGFrZXMgZHVyaW5nIGNvbnN0cnVjdGlvbiB0byBwcm9kdWNlIGVhcmx5IGVycm9ycy5cblxuICAgIGlzT2JqZWN0TGlrZShjb25maWcpIHx8XG4gICAgICBkZXZBc3NlcnQoZmFsc2UsICdNdXN0IHByb3ZpZGUgY29uZmlndXJhdGlvbiBvYmplY3QuJyk7XG4gICAgIWNvbmZpZy50eXBlcyB8fFxuICAgICAgQXJyYXkuaXNBcnJheShjb25maWcudHlwZXMpIHx8XG4gICAgICBkZXZBc3NlcnQoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBgXCJ0eXBlc1wiIG11c3QgYmUgQXJyYXkgaWYgcHJvdmlkZWQgYnV0IGdvdDogJHtpbnNwZWN0KGNvbmZpZy50eXBlcyl9LmAsXG4gICAgICApO1xuICAgICFjb25maWcuZGlyZWN0aXZlcyB8fFxuICAgICAgQXJyYXkuaXNBcnJheShjb25maWcuZGlyZWN0aXZlcykgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgICdcImRpcmVjdGl2ZXNcIiBtdXN0IGJlIEFycmF5IGlmIHByb3ZpZGVkIGJ1dCBnb3Q6ICcgK1xuICAgICAgICAgIGAke2luc3BlY3QoY29uZmlnLmRpcmVjdGl2ZXMpfS5gLFxuICAgICAgKTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gY29uZmlnLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHRvT2JqTWFwKGNvbmZpZy5leHRlbnNpb25zKTtcbiAgICB0aGlzLmFzdE5vZGUgPSBjb25maWcuYXN0Tm9kZTtcbiAgICB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzID1cbiAgICAgIChfY29uZmlnJGV4dGVuc2lvbkFTVE4gPSBjb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMpICE9PSBudWxsICYmXG4gICAgICBfY29uZmlnJGV4dGVuc2lvbkFTVE4gIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckZXh0ZW5zaW9uQVNUTlxuICAgICAgICA6IFtdO1xuICAgIHRoaXMuX3F1ZXJ5VHlwZSA9IGNvbmZpZy5xdWVyeTtcbiAgICB0aGlzLl9tdXRhdGlvblR5cGUgPSBjb25maWcubXV0YXRpb247XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uVHlwZSA9IGNvbmZpZy5zdWJzY3JpcHRpb247IC8vIFByb3ZpZGUgc3BlY2lmaWVkIGRpcmVjdGl2ZXMgKGUuZy4gQGluY2x1ZGUgYW5kIEBza2lwKSBieSBkZWZhdWx0LlxuXG4gICAgdGhpcy5fZGlyZWN0aXZlcyA9XG4gICAgICAoX2NvbmZpZyRkaXJlY3RpdmVzID0gY29uZmlnLmRpcmVjdGl2ZXMpICE9PSBudWxsICYmXG4gICAgICBfY29uZmlnJGRpcmVjdGl2ZXMgIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckZGlyZWN0aXZlc1xuICAgICAgICA6IHNwZWNpZmllZERpcmVjdGl2ZXM7IC8vIFRvIHByZXNlcnZlIG9yZGVyIG9mIHVzZXItcHJvdmlkZWQgdHlwZXMsIHdlIGFkZCBmaXJzdCB0byBhZGQgdGhlbSB0b1xuICAgIC8vIHRoZSBzZXQgb2YgXCJjb2xsZWN0ZWRcIiB0eXBlcywgc28gYGNvbGxlY3RSZWZlcmVuY2VkVHlwZXNgIGlnbm9yZSB0aGVtLlxuXG4gICAgY29uc3QgYWxsUmVmZXJlbmNlZFR5cGVzID0gbmV3IFNldChjb25maWcudHlwZXMpO1xuXG4gICAgaWYgKGNvbmZpZy50eXBlcyAhPSBudWxsKSB7XG4gICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgY29uZmlnLnR5cGVzKSB7XG4gICAgICAgIC8vIFdoZW4gd2UgcmVhZHkgdG8gcHJvY2VzcyB0aGlzIHR5cGUsIHdlIHJlbW92ZSBpdCBmcm9tIFwiY29sbGVjdGVkXCIgdHlwZXNcbiAgICAgICAgLy8gYW5kIHRoZW4gYWRkIGl0IHRvZ2V0aGVyIHdpdGggYWxsIGRlcGVuZGVudCB0eXBlcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbi5cbiAgICAgICAgYWxsUmVmZXJlbmNlZFR5cGVzLmRlbGV0ZSh0eXBlKTtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyh0eXBlLCBhbGxSZWZlcmVuY2VkVHlwZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9xdWVyeVR5cGUgIT0gbnVsbCkge1xuICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyh0aGlzLl9xdWVyeVR5cGUsIGFsbFJlZmVyZW5jZWRUeXBlcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX211dGF0aW9uVHlwZSAhPSBudWxsKSB7XG4gICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKHRoaXMuX211dGF0aW9uVHlwZSwgYWxsUmVmZXJlbmNlZFR5cGVzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uVHlwZSAhPSBudWxsKSB7XG4gICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKHRoaXMuX3N1YnNjcmlwdGlvblR5cGUsIGFsbFJlZmVyZW5jZWRUeXBlcyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkaXJlY3RpdmUgb2YgdGhpcy5fZGlyZWN0aXZlcykge1xuICAgICAgLy8gRGlyZWN0aXZlcyBhcmUgbm90IHZhbGlkYXRlZCB1bnRpbCB2YWxpZGF0ZVNjaGVtYSgpIGlzIGNhbGxlZC5cbiAgICAgIGlmIChpc0RpcmVjdGl2ZShkaXJlY3RpdmUpKSB7XG4gICAgICAgIGZvciAoY29uc3QgYXJnIG9mIGRpcmVjdGl2ZS5hcmdzKSB7XG4gICAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhhcmcudHlwZSwgYWxsUmVmZXJlbmNlZFR5cGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXMoX19TY2hlbWEsIGFsbFJlZmVyZW5jZWRUeXBlcyk7IC8vIFN0b3JpbmcgdGhlIHJlc3VsdGluZyBtYXAgZm9yIHJlZmVyZW5jZSBieSB0aGUgc2NoZW1hLlxuXG4gICAgdGhpcy5fdHlwZU1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5fc3ViVHlwZU1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7IC8vIEtlZXAgdHJhY2sgb2YgYWxsIGltcGxlbWVudGF0aW9ucyBieSBpbnRlcmZhY2UgbmFtZS5cblxuICAgIHRoaXMuX2ltcGxlbWVudGF0aW9uc01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBmb3IgKGNvbnN0IG5hbWVkVHlwZSBvZiBhbGxSZWZlcmVuY2VkVHlwZXMpIHtcbiAgICAgIGlmIChuYW1lZFR5cGUgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHlwZU5hbWUgPSBuYW1lZFR5cGUubmFtZTtcbiAgICAgIHR5cGVOYW1lIHx8XG4gICAgICAgIGRldkFzc2VydChcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAnT25lIG9mIHRoZSBwcm92aWRlZCB0eXBlcyBmb3IgYnVpbGRpbmcgdGhlIFNjaGVtYSBpcyBtaXNzaW5nIGEgbmFtZS4nLFxuICAgICAgICApO1xuXG4gICAgICBpZiAodGhpcy5fdHlwZU1hcFt0eXBlTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFNjaGVtYSBtdXN0IGNvbnRhaW4gdW5pcXVlbHkgbmFtZWQgdHlwZXMgYnV0IGNvbnRhaW5zIG11bHRpcGxlIHR5cGVzIG5hbWVkIFwiJHt0eXBlTmFtZX1cIi5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl90eXBlTWFwW3R5cGVOYW1lXSA9IG5hbWVkVHlwZTtcblxuICAgICAgaWYgKGlzSW50ZXJmYWNlVHlwZShuYW1lZFR5cGUpKSB7XG4gICAgICAgIC8vIFN0b3JlIGltcGxlbWVudGF0aW9ucyBieSBpbnRlcmZhY2UuXG4gICAgICAgIGZvciAoY29uc3QgaWZhY2Ugb2YgbmFtZWRUeXBlLmdldEludGVyZmFjZXMoKSkge1xuICAgICAgICAgIGlmIChpc0ludGVyZmFjZVR5cGUoaWZhY2UpKSB7XG4gICAgICAgICAgICBsZXQgaW1wbGVtZW50YXRpb25zID0gdGhpcy5faW1wbGVtZW50YXRpb25zTWFwW2lmYWNlLm5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoaW1wbGVtZW50YXRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zID0gdGhpcy5faW1wbGVtZW50YXRpb25zTWFwW2lmYWNlLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgIG9iamVjdHM6IFtdLFxuICAgICAgICAgICAgICAgIGludGVyZmFjZXM6IFtdLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMuaW50ZXJmYWNlcy5wdXNoKG5hbWVkVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0VHlwZShuYW1lZFR5cGUpKSB7XG4gICAgICAgIC8vIFN0b3JlIGltcGxlbWVudGF0aW9ucyBieSBvYmplY3RzLlxuICAgICAgICBmb3IgKGNvbnN0IGlmYWNlIG9mIG5hbWVkVHlwZS5nZXRJbnRlcmZhY2VzKCkpIHtcbiAgICAgICAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKGlmYWNlKSkge1xuICAgICAgICAgICAgbGV0IGltcGxlbWVudGF0aW9ucyA9IHRoaXMuX2ltcGxlbWVudGF0aW9uc01hcFtpZmFjZS5uYW1lXTtcblxuICAgICAgICAgICAgaWYgKGltcGxlbWVudGF0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyA9IHRoaXMuX2ltcGxlbWVudGF0aW9uc01hcFtpZmFjZS5uYW1lXSA9IHtcbiAgICAgICAgICAgICAgICBvYmplY3RzOiBbXSxcbiAgICAgICAgICAgICAgICBpbnRlcmZhY2VzOiBbXSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zLm9iamVjdHMucHVzaChuYW1lZFR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0dyYXBoUUxTY2hlbWEnO1xuICB9XG5cbiAgZ2V0UXVlcnlUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeVR5cGU7XG4gIH1cblxuICBnZXRNdXRhdGlvblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX211dGF0aW9uVHlwZTtcbiAgfVxuXG4gIGdldFN1YnNjcmlwdGlvblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YnNjcmlwdGlvblR5cGU7XG4gIH1cblxuICBnZXRSb290VHlwZShvcGVyYXRpb24pIHtcbiAgICBzd2l0Y2ggKG9wZXJhdGlvbikge1xuICAgICAgY2FzZSBPcGVyYXRpb25UeXBlTm9kZS5RVUVSWTpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UXVlcnlUeXBlKCk7XG5cbiAgICAgIGNhc2UgT3BlcmF0aW9uVHlwZU5vZGUuTVVUQVRJT046XG4gICAgICAgIHJldHVybiB0aGlzLmdldE11dGF0aW9uVHlwZSgpO1xuXG4gICAgICBjYXNlIE9wZXJhdGlvblR5cGVOb2RlLlNVQlNDUklQVElPTjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFR5cGVNYXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGVNYXA7XG4gIH1cblxuICBnZXRUeXBlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUeXBlTWFwKClbbmFtZV07XG4gIH1cblxuICBnZXRQb3NzaWJsZVR5cGVzKGFic3RyYWN0VHlwZSkge1xuICAgIHJldHVybiBpc1VuaW9uVHlwZShhYnN0cmFjdFR5cGUpXG4gICAgICA/IGFic3RyYWN0VHlwZS5nZXRUeXBlcygpXG4gICAgICA6IHRoaXMuZ2V0SW1wbGVtZW50YXRpb25zKGFic3RyYWN0VHlwZSkub2JqZWN0cztcbiAgfVxuXG4gIGdldEltcGxlbWVudGF0aW9ucyhpbnRlcmZhY2VUeXBlKSB7XG4gICAgY29uc3QgaW1wbGVtZW50YXRpb25zID0gdGhpcy5faW1wbGVtZW50YXRpb25zTWFwW2ludGVyZmFjZVR5cGUubmFtZV07XG4gICAgcmV0dXJuIGltcGxlbWVudGF0aW9ucyAhPT0gbnVsbCAmJiBpbXBsZW1lbnRhdGlvbnMgIT09IHZvaWQgMFxuICAgICAgPyBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIDoge1xuICAgICAgICAgIG9iamVjdHM6IFtdLFxuICAgICAgICAgIGludGVyZmFjZXM6IFtdLFxuICAgICAgICB9O1xuICB9XG5cbiAgaXNTdWJUeXBlKGFic3RyYWN0VHlwZSwgbWF5YmVTdWJUeXBlKSB7XG4gICAgbGV0IG1hcCA9IHRoaXMuX3N1YlR5cGVNYXBbYWJzdHJhY3RUeXBlLm5hbWVdO1xuXG4gICAgaWYgKG1hcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgICBpZiAoaXNVbmlvblR5cGUoYWJzdHJhY3RUeXBlKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgYWJzdHJhY3RUeXBlLmdldFR5cGVzKCkpIHtcbiAgICAgICAgICBtYXBbdHlwZS5uYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGltcGxlbWVudGF0aW9ucyA9IHRoaXMuZ2V0SW1wbGVtZW50YXRpb25zKGFic3RyYWN0VHlwZSk7XG5cbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIGltcGxlbWVudGF0aW9ucy5vYmplY3RzKSB7XG4gICAgICAgICAgbWFwW3R5cGUubmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIGltcGxlbWVudGF0aW9ucy5pbnRlcmZhY2VzKSB7XG4gICAgICAgICAgbWFwW3R5cGUubmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3N1YlR5cGVNYXBbYWJzdHJhY3RUeXBlLm5hbWVdID0gbWFwO1xuICAgIH1cblxuICAgIHJldHVybiBtYXBbbWF5YmVTdWJUeXBlLm5hbWVdICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXREaXJlY3RpdmVzKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXJlY3RpdmVzO1xuICB9XG5cbiAgZ2V0RGlyZWN0aXZlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXJlY3RpdmVzKCkuZmluZCgoZGlyZWN0aXZlKSA9PiBkaXJlY3RpdmUubmFtZSA9PT0gbmFtZSk7XG4gIH1cblxuICB0b0NvbmZpZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBxdWVyeTogdGhpcy5nZXRRdWVyeVR5cGUoKSxcbiAgICAgIG11dGF0aW9uOiB0aGlzLmdldE11dGF0aW9uVHlwZSgpLFxuICAgICAgc3Vic2NyaXB0aW9uOiB0aGlzLmdldFN1YnNjcmlwdGlvblR5cGUoKSxcbiAgICAgIHR5cGVzOiBPYmplY3QudmFsdWVzKHRoaXMuZ2V0VHlwZU1hcCgpKSxcbiAgICAgIGRpcmVjdGl2ZXM6IHRoaXMuZ2V0RGlyZWN0aXZlcygpLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgICBhc3N1bWVWYWxpZDogdGhpcy5fX3ZhbGlkYXRpb25FcnJvcnMgIT09IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXModHlwZSwgdHlwZVNldCkge1xuICBjb25zdCBuYW1lZFR5cGUgPSBnZXROYW1lZFR5cGUodHlwZSk7XG5cbiAgaWYgKCF0eXBlU2V0LmhhcyhuYW1lZFR5cGUpKSB7XG4gICAgdHlwZVNldC5hZGQobmFtZWRUeXBlKTtcblxuICAgIGlmIChpc1VuaW9uVHlwZShuYW1lZFR5cGUpKSB7XG4gICAgICBmb3IgKGNvbnN0IG1lbWJlclR5cGUgb2YgbmFtZWRUeXBlLmdldFR5cGVzKCkpIHtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhtZW1iZXJUeXBlLCB0eXBlU2V0KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0VHlwZShuYW1lZFR5cGUpIHx8IGlzSW50ZXJmYWNlVHlwZShuYW1lZFR5cGUpKSB7XG4gICAgICBmb3IgKGNvbnN0IGludGVyZmFjZVR5cGUgb2YgbmFtZWRUeXBlLmdldEludGVyZmFjZXMoKSkge1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKGludGVyZmFjZVR5cGUsIHR5cGVTZXQpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIE9iamVjdC52YWx1ZXMobmFtZWRUeXBlLmdldEZpZWxkcygpKSkge1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKGZpZWxkLnR5cGUsIHR5cGVTZXQpO1xuXG4gICAgICAgIGZvciAoY29uc3QgYXJnIG9mIGZpZWxkLmFyZ3MpIHtcbiAgICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKGFyZy50eXBlLCB0eXBlU2V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNJbnB1dE9iamVjdFR5cGUobmFtZWRUeXBlKSkge1xuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBPYmplY3QudmFsdWVzKG5hbWVkVHlwZS5nZXRGaWVsZHMoKSkpIHtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhmaWVsZC50eXBlLCB0eXBlU2V0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHlwZVNldDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/schema.mjs\n");
|
877 |
|
878 | }),
|
879 |
|
880 | "../../../node_modules/graphql/type/validate.mjs":
|
881 |
|
882 |
|
883 |
|
884 |
|
885 | (function(module, __webpack_exports__, __webpack_require__) {
|
886 |
|
887 | "use strict";
|
888 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateSchema\", function() { return validateSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertValidSchema\", function() { return assertValidSchema; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_ast_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utilities/typeComparators.mjs */ \"../../../node_modules/graphql/utilities/typeComparators.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _directives_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _introspection_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _schema_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n\n\n\n\n\n\n\n\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n */\n\nfunction validateSchema(schema) {\n // First check to ensure the provided value is in fact a GraphQLSchema.\n Object(_schema_mjs__WEBPACK_IMPORTED_MODULE_7__[\"assertSchema\"])(schema); // If this Schema has already been validated, return the previous results.\n\n if (schema.__validationErrors) {\n return schema.__validationErrors;\n } // Validate the schema, producing a list of errors.\n\n const context = new SchemaValidationContext(schema);\n validateRootTypes(context);\n validateDirectives(context);\n validateTypes(context); // Persist the results of validation before returning to ensure validation\n // does not run multiple times for this schema.\n\n const errors = context.getErrors();\n schema.__validationErrors = errors;\n return errors;\n}\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n */\n\nfunction assertValidSchema(schema) {\n const errors = validateSchema(schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n\nclass SchemaValidationContext {\n constructor(schema) {\n this._errors = [];\n this.schema = schema;\n }\n\n reportError(message, nodes) {\n const _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes;\n\n this._errors.push(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](message, {\n nodes: _nodes,\n }),\n );\n }\n\n getErrors() {\n return this._errors;\n }\n}\n\nfunction validateRootTypes(context) {\n const schema = context.schema;\n const queryType = schema.getQueryType();\n\n if (!queryType) {\n context.reportError('Query root type must be provided.', schema.astNode);\n } else if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(queryType)) {\n var _getOperationTypeNode;\n\n context.reportError(\n `Query root type must be Object type, it cannot be ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(\n queryType,\n )}.`,\n (_getOperationTypeNode = getOperationTypeNode(\n schema,\n _language_ast_mjs__WEBPACK_IMPORTED_MODULE_2__[\"OperationTypeNode\"].QUERY,\n )) !== null && _getOperationTypeNode !== void 0\n ? _getOperationTypeNode\n : queryType.astNode,\n );\n }\n\n const mutationType = schema.getMutationType();\n\n if (mutationType && !Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(mutationType)) {\n var _getOperationTypeNode2;\n\n context.reportError(\n 'Mutation root type must be Object type if provided, it cannot be ' +\n `${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(mutationType)}.`,\n (_getOperationTypeNode2 = getOperationTypeNode(\n schema,\n _language_ast_mjs__WEBPACK_IMPORTED_MODULE_2__[\"OperationTypeNode\"].MUTATION,\n )) !== null && _getOperationTypeNode2 !== void 0\n ? _getOperationTypeNode2\n : mutationType.astNode,\n );\n }\n\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && !Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(subscriptionType)) {\n var _getOperationTypeNode3;\n\n context.reportError(\n 'Subscription root type must be Object type if provided, it cannot be ' +\n `${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(subscriptionType)}.`,\n (_getOperationTypeNode3 = getOperationTypeNode(\n schema,\n _language_ast_mjs__WEBPACK_IMPORTED_MODULE_2__[\"OperationTypeNode\"].SUBSCRIPTION,\n )) !== null && _getOperationTypeNode3 !== void 0\n ? _getOperationTypeNode3\n : subscriptionType.astNode,\n );\n }\n}\n\nfunction getOperationTypeNode(schema, operation) {\n var _flatMap$find;\n\n return (_flatMap$find = [schema.astNode, ...schema.extensionASTNodes]\n .flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (schemaNode) => {\n var _schemaNode$operation;\n\n return (\n /* c8 ignore next */\n (_schemaNode$operation =\n schemaNode === null || schemaNode === void 0\n ? void 0\n : schemaNode.operationTypes) !== null &&\n _schemaNode$operation !== void 0\n ? _schemaNode$operation\n : []\n );\n },\n )\n .find((operationNode) => operationNode.operation === operation)) === null ||\n _flatMap$find === void 0\n ? void 0\n : _flatMap$find.type;\n}\n\nfunction validateDirectives(context) {\n for (const directive of context.schema.getDirectives()) {\n // Ensure all directives are in fact GraphQL directives.\n if (!Object(_directives_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isDirective\"])(directive)) {\n context.reportError(\n `Expected directive but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(directive)}.`,\n directive === null || directive === void 0 ? void 0 : directive.astNode,\n );\n continue;\n } // Ensure they are named correctly.\n\n validateName(context, directive); // TODO: Ensure proper locations.\n // Ensure the arguments are valid.\n\n for (const arg of directive.args) {\n // Ensure they are named correctly.\n validateName(context, arg); // Ensure the type is an input type.\n\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputType\"])(arg.type)) {\n context.reportError(\n `The type of @${directive.name}(${arg.name}:) must be Input Type ` +\n `but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(arg.type)}.`,\n arg.astNode,\n );\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isRequiredArgument\"])(arg) && arg.deprecationReason != null) {\n var _arg$astNode;\n\n context.reportError(\n `Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(arg.astNode),\n (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0\n ? void 0\n : _arg$astNode.type,\n ],\n );\n }\n }\n }\n}\n\nfunction validateName(context, node) {\n // Ensure names are valid, however introspection types opt out.\n if (node.name.startsWith('__')) {\n context.reportError(\n `Name \"${node.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n node.astNode,\n );\n }\n}\n\nfunction validateTypes(context) {\n const validateInputObjectCircularRefs =\n createInputObjectCircularRefsValidator(context);\n const typeMap = context.schema.getTypeMap();\n\n for (const type of Object.values(typeMap)) {\n // Ensure all provided types are in fact GraphQL type.\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNamedType\"])(type)) {\n context.reportError(\n `Expected GraphQL named type but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(type)}.`,\n type.astNode,\n );\n continue;\n } // Ensure it is named correctly (excluding introspection types).\n\n if (!Object(_introspection_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isIntrospectionType\"])(type)) {\n validateName(context, type);\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(type)) {\n // Ensure fields are valid\n validateFields(context, type); // Ensure objects implement the interfaces they claim to.\n\n validateInterfaces(context, type);\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(type)) {\n // Ensure fields are valid.\n validateFields(context, type); // Ensure interfaces implement the interfaces they claim to.\n\n validateInterfaces(context, type);\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isUnionType\"])(type)) {\n // Ensure Unions include valid member types.\n validateUnionMembers(context, type);\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isEnumType\"])(type)) {\n // Ensure Enums have valid values.\n validateEnumValues(context, type);\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputObjectType\"])(type)) {\n // Ensure Input Object fields are valid.\n validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references\n\n validateInputObjectCircularRefs(type);\n }\n }\n}\n\nfunction validateFields(context, type) {\n const fields = Object.values(type.getFields()); // Objects and Interfaces both must define one or more fields.\n\n if (fields.length === 0) {\n context.reportError(`Type ${type.name} must define one or more fields.`, [\n type.astNode,\n ...type.extensionASTNodes,\n ]);\n }\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an output type\n\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isOutputType\"])(field.type)) {\n var _field$astNode;\n\n context.reportError(\n `The type of ${type.name}.${field.name} must be Output Type ` +\n `but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(field.type)}.`,\n (_field$astNode = field.astNode) === null || _field$astNode === void 0\n ? void 0\n : _field$astNode.type,\n );\n } // Ensure the arguments are valid\n\n for (const arg of field.args) {\n const argName = arg.name; // Ensure they are named correctly.\n\n validateName(context, arg); // Ensure the type is an input type\n\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputType\"])(arg.type)) {\n var _arg$astNode2;\n\n context.reportError(\n `The type of ${type.name}.${field.name}(${argName}:) must be Input ` +\n `Type but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(arg.type)}.`,\n (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0\n ? void 0\n : _arg$astNode2.type,\n );\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isRequiredArgument\"])(arg) && arg.deprecationReason != null) {\n var _arg$astNode3;\n\n context.reportError(\n `Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(arg.astNode),\n (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0\n ? void 0\n : _arg$astNode3.type,\n ],\n );\n }\n }\n }\n}\n\nfunction validateInterfaces(context, type) {\n const ifaceTypeNames = Object.create(null);\n\n for (const iface of type.getInterfaces()) {\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(iface)) {\n context.reportError(\n `Type ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(type)} must only implement Interface types, ` +\n `it cannot implement ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(iface)}.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (type === iface) {\n context.reportError(\n `Type ${type.name} cannot implement itself because it would create a circular reference.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (ifaceTypeNames[iface.name]) {\n context.reportError(\n `Type ${type.name} can only implement ${iface.name} once.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n ifaceTypeNames[iface.name] = true;\n validateTypeImplementsAncestors(context, type, iface);\n validateTypeImplementsInterface(context, type, iface);\n }\n}\n\nfunction validateTypeImplementsInterface(context, type, iface) {\n const typeFieldMap = type.getFields(); // Assert each interface field is implemented.\n\n for (const ifaceField of Object.values(iface.getFields())) {\n const fieldName = ifaceField.name;\n const typeField = typeFieldMap[fieldName]; // Assert interface field exists on type.\n\n if (!typeField) {\n context.reportError(\n `Interface field ${iface.name}.${fieldName} expected but ${type.name} does not provide it.`,\n [ifaceField.astNode, type.astNode, ...type.extensionASTNodes],\n );\n continue;\n } // Assert interface field type is satisfied by type field type, by being\n // a valid subtype. (covariant)\n\n if (!Object(_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeSubTypeOf\"])(context.schema, typeField.type, ifaceField.type)) {\n var _ifaceField$astNode, _typeField$astNode;\n\n context.reportError(\n `Interface field ${iface.name}.${fieldName} expects type ` +\n `${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(ifaceField.type)} but ${type.name}.${fieldName} ` +\n `is type ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(typeField.type)}.`,\n [\n (_ifaceField$astNode = ifaceField.astNode) === null ||\n _ifaceField$astNode === void 0\n ? void 0\n : _ifaceField$astNode.type,\n (_typeField$astNode = typeField.astNode) === null ||\n _typeField$astNode === void 0\n ? void 0\n : _typeField$astNode.type,\n ],\n );\n } // Assert each interface field arg is implemented.\n\n for (const ifaceArg of ifaceField.args) {\n const argName = ifaceArg.name;\n const typeArg = typeField.args.find((arg) => arg.name === argName); // Assert interface field arg exists on object field.\n\n if (!typeArg) {\n context.reportError(\n `Interface field argument ${iface.name}.${fieldName}(${argName}:) expected but ${type.name}.${fieldName} does not provide it.`,\n [ifaceArg.astNode, typeField.astNode],\n );\n continue;\n } // Assert interface field arg type matches object field arg type.\n // (invariant)\n // TODO: change to contravariant?\n\n if (!Object(_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isEqualType\"])(ifaceArg.type, typeArg.type)) {\n var _ifaceArg$astNode, _typeArg$astNode;\n\n context.reportError(\n `Interface field argument ${iface.name}.${fieldName}(${argName}:) ` +\n `expects type ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(ifaceArg.type)} but ` +\n `${type.name}.${fieldName}(${argName}:) is type ` +\n `${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(typeArg.type)}.`,\n [\n (_ifaceArg$astNode = ifaceArg.astNode) === null ||\n _ifaceArg$astNode === void 0\n ? void 0\n : _ifaceArg$astNode.type,\n (_typeArg$astNode = typeArg.astNode) === null ||\n _typeArg$astNode === void 0\n ? void 0\n : _typeArg$astNode.type,\n ],\n );\n } // TODO: validate default values?\n } // Assert additional arguments must not be required.\n\n for (const typeArg of typeField.args) {\n const argName = typeArg.name;\n const ifaceArg = ifaceField.args.find((arg) => arg.name === argName);\n\n if (!ifaceArg && Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isRequiredArgument\"])(typeArg)) {\n context.reportError(\n `Object field ${type.name}.${fieldName} includes required argument ${argName} that is missing from the Interface field ${iface.name}.${fieldName}.`,\n [typeArg.astNode, ifaceField.astNode],\n );\n }\n }\n }\n}\n\nfunction validateTypeImplementsAncestors(context, type, iface) {\n const ifaceInterfaces = type.getInterfaces();\n\n for (const transitive of iface.getInterfaces()) {\n if (!ifaceInterfaces.includes(transitive)) {\n context.reportError(\n transitive === type\n ? `Type ${type.name} cannot implement ${iface.name} because it would create a circular reference.`\n : `Type ${type.name} must implement ${transitive.name} because it is implemented by ${iface.name}.`,\n [\n ...getAllImplementsInterfaceNodes(iface, transitive),\n ...getAllImplementsInterfaceNodes(type, iface),\n ],\n );\n }\n }\n}\n\nfunction validateUnionMembers(context, union) {\n const memberTypes = union.getTypes();\n\n if (memberTypes.length === 0) {\n context.reportError(\n `Union type ${union.name} must define one or more member types.`,\n [union.astNode, ...union.extensionASTNodes],\n );\n }\n\n const includedTypeNames = Object.create(null);\n\n for (const memberType of memberTypes) {\n if (includedTypeNames[memberType.name]) {\n context.reportError(\n `Union type ${union.name} can only include type ${memberType.name} once.`,\n getUnionMemberTypeNodes(union, memberType.name),\n );\n continue;\n }\n\n includedTypeNames[memberType.name] = true;\n\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(memberType)) {\n context.reportError(\n `Union type ${union.name} can only include Object types, ` +\n `it cannot include ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(memberType)}.`,\n getUnionMemberTypeNodes(union, String(memberType)),\n );\n }\n }\n}\n\nfunction validateEnumValues(context, enumType) {\n const enumValues = enumType.getValues();\n\n if (enumValues.length === 0) {\n context.reportError(\n `Enum type ${enumType.name} must define one or more values.`,\n [enumType.astNode, ...enumType.extensionASTNodes],\n );\n }\n\n for (const enumValue of enumValues) {\n // Ensure valid name.\n validateName(context, enumValue);\n }\n}\n\nfunction validateInputFields(context, inputObj) {\n const fields = Object.values(inputObj.getFields());\n\n if (fields.length === 0) {\n context.reportError(\n `Input Object type ${inputObj.name} must define one or more fields.`,\n [inputObj.astNode, ...inputObj.extensionASTNodes],\n );\n } // Ensure the arguments are valid\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an input type\n\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputType\"])(field.type)) {\n var _field$astNode2;\n\n context.reportError(\n `The type of ${inputObj.name}.${field.name} must be Input Type ` +\n `but got: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(field.type)}.`,\n (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0\n ? void 0\n : _field$astNode2.type,\n );\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isRequiredInputField\"])(field) && field.deprecationReason != null) {\n var _field$astNode3;\n\n context.reportError(\n `Required input field ${inputObj.name}.${field.name} cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(field.astNode),\n (_field$astNode3 = field.astNode) === null ||\n _field$astNode3 === void 0\n ? void 0\n : _field$astNode3.type,\n ],\n );\n }\n }\n}\n\nfunction createInputObjectCircularRefsValidator(context) {\n // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n // Tracks already visited types to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors\n\n const fieldPath = []; // Position in the type path\n\n const fieldPathIndexByTypeName = Object.create(null);\n return detectCycleRecursive; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(inputObj) {\n if (visitedTypes[inputObj.name]) {\n return;\n }\n\n visitedTypes[inputObj.name] = true;\n fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n const fields = Object.values(inputObj.getFields());\n\n for (const field of fields) {\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(field.type) && Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputObjectType\"])(field.type.ofType)) {\n const fieldType = field.type.ofType;\n const cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n fieldPath.push(field);\n\n if (cycleIndex === undefined) {\n detectCycleRecursive(fieldType);\n } else {\n const cyclePath = fieldPath.slice(cycleIndex);\n const pathStr = cyclePath.map((fieldObj) => fieldObj.name).join('.');\n context.reportError(\n `Cannot reference Input Object \"${fieldType.name}\" within itself through a series of non-null fields: \"${pathStr}\".`,\n cyclePath.map((fieldObj) => fieldObj.astNode),\n );\n }\n\n fieldPath.pop();\n }\n }\n\n fieldPathIndexByTypeName[inputObj.name] = undefined;\n }\n}\n\nfunction getAllImplementsInterfaceNodes(type, iface) {\n const { astNode, extensionASTNodes } = type;\n const nodes =\n astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n return nodes\n .flatMap((typeNode) => {\n var _typeNode$interfaces;\n\n return (\n /* c8 ignore next */\n (_typeNode$interfaces = typeNode.interfaces) !== null &&\n _typeNode$interfaces !== void 0\n ? _typeNode$interfaces\n : []\n );\n })\n .filter((ifaceNode) => ifaceNode.name.value === iface.name);\n}\n\nfunction getUnionMemberTypeNodes(union, typeName) {\n const { astNode, extensionASTNodes } = union;\n const nodes =\n astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n return nodes\n .flatMap((unionNode) => {\n var _unionNode$types;\n\n return (\n /* c8 ignore next */\n (_unionNode$types = unionNode.types) !== null &&\n _unionNode$types !== void 0\n ? _unionNode$types\n : []\n );\n })\n .filter((typeNode) => typeNode.name.value === typeName);\n}\n\nfunction getDeprecatedDirectiveNode(definitionNode) {\n var _definitionNode$direc;\n\n return definitionNode === null || definitionNode === void 0\n ? void 0\n : (_definitionNode$direc = definitionNode.directives) === null ||\n _definitionNode$direc === void 0\n ? void 0\n : _definitionNode$direc.find(\n (node) => node.name.value === _directives_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLDeprecatedDirective\"].name,\n );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS92YWxpZGF0ZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL3ZhbGlkYXRlLm1qcz81Nzc3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uVHlwZU5vZGUgfSBmcm9tICcuLi9sYW5ndWFnZS9hc3QubWpzJztcbmltcG9ydCB7IGlzRXF1YWxUeXBlLCBpc1R5cGVTdWJUeXBlT2YgfSBmcm9tICcuLi91dGlsaXRpZXMvdHlwZUNvbXBhcmF0b3JzLm1qcyc7XG5pbXBvcnQge1xuICBpc0VudW1UeXBlLFxuICBpc0lucHV0T2JqZWN0VHlwZSxcbiAgaXNJbnB1dFR5cGUsXG4gIGlzSW50ZXJmYWNlVHlwZSxcbiAgaXNOYW1lZFR5cGUsXG4gIGlzTm9uTnVsbFR5cGUsXG4gIGlzT2JqZWN0VHlwZSxcbiAgaXNPdXRwdXRUeXBlLFxuICBpc1JlcXVpcmVkQXJndW1lbnQsXG4gIGlzUmVxdWlyZWRJbnB1dEZpZWxkLFxuICBpc1VuaW9uVHlwZSxcbn0gZnJvbSAnLi9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRGVwcmVjYXRlZERpcmVjdGl2ZSwgaXNEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMubWpzJztcbmltcG9ydCB7IGlzSW50cm9zcGVjdGlvblR5cGUgfSBmcm9tICcuL2ludHJvc3BlY3Rpb24ubWpzJztcbmltcG9ydCB7IGFzc2VydFNjaGVtYSB9IGZyb20gJy4vc2NoZW1hLm1qcyc7XG4vKipcbiAqIEltcGxlbWVudHMgdGhlIFwiVHlwZSBWYWxpZGF0aW9uXCIgc3ViLXNlY3Rpb25zIG9mIHRoZSBzcGVjaWZpY2F0aW9uJ3NcbiAqIFwiVHlwZSBTeXN0ZW1cIiBzZWN0aW9uLlxuICpcbiAqIFZhbGlkYXRpb24gcnVucyBzeW5jaHJvbm91c2x5LCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgZW5jb3VudGVyZWQgZXJyb3JzLCBvclxuICogYW4gZW1wdHkgYXJyYXkgaWYgbm8gZXJyb3JzIHdlcmUgZW5jb3VudGVyZWQgYW5kIHRoZSBTY2hlbWEgaXMgdmFsaWQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2NoZW1hKHNjaGVtYSkge1xuICAvLyBGaXJzdCBjaGVjayB0byBlbnN1cmUgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIGluIGZhY3QgYSBHcmFwaFFMU2NoZW1hLlxuICBhc3NlcnRTY2hlbWEoc2NoZW1hKTsgLy8gSWYgdGhpcyBTY2hlbWEgaGFzIGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQsIHJldHVybiB0aGUgcHJldmlvdXMgcmVzdWx0cy5cblxuICBpZiAoc2NoZW1hLl9fdmFsaWRhdGlvbkVycm9ycykge1xuICAgIHJldHVybiBzY2hlbWEuX192YWxpZGF0aW9uRXJyb3JzO1xuICB9IC8vIFZhbGlkYXRlIHRoZSBzY2hlbWEsIHByb2R1Y2luZyBhIGxpc3Qgb2YgZXJyb3JzLlxuXG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgU2NoZW1hVmFsaWRhdGlvbkNvbnRleHQoc2NoZW1hKTtcbiAgdmFsaWRhdGVSb290VHlwZXMoY29udGV4dCk7XG4gIHZhbGlkYXRlRGlyZWN0aXZlcyhjb250ZXh0KTtcbiAgdmFsaWRhdGVUeXBlcyhjb250ZXh0KTsgLy8gUGVyc2lzdCB0aGUgcmVzdWx0cyBvZiB2YWxpZGF0aW9uIGJlZm9yZSByZXR1cm5pbmcgdG8gZW5zdXJlIHZhbGlkYXRpb25cbiAgLy8gZG9lcyBub3QgcnVuIG11bHRpcGxlIHRpbWVzIGZvciB0aGlzIHNjaGVtYS5cblxuICBjb25zdCBlcnJvcnMgPSBjb250ZXh0LmdldEVycm9ycygpO1xuICBzY2hlbWEuX192YWxpZGF0aW9uRXJyb3JzID0gZXJyb3JzO1xuICByZXR1cm4gZXJyb3JzO1xufVxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHdoaWNoIGFzc2VydHMgYSBzY2hlbWEgaXMgdmFsaWQgYnkgdGhyb3dpbmcgYW4gZXJyb3IgaWZcbiAqIGl0IGlzIGludmFsaWQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFZhbGlkU2NoZW1hKHNjaGVtYSkge1xuICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZVNjaGVtYShzY2hlbWEpO1xuXG4gIGlmIChlcnJvcnMubGVuZ3RoICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5tYXAoKGVycm9yKSA9PiBlcnJvci5tZXNzYWdlKS5qb2luKCdcXG5cXG4nKSk7XG4gIH1cbn1cblxuY2xhc3MgU2NoZW1hVmFsaWRhdGlvbkNvbnRleHQge1xuICBjb25zdHJ1Y3RvcihzY2hlbWEpIHtcbiAgICB0aGlzLl9lcnJvcnMgPSBbXTtcbiAgICB0aGlzLnNjaGVtYSA9IHNjaGVtYTtcbiAgfVxuXG4gIHJlcG9ydEVycm9yKG1lc3NhZ2UsIG5vZGVzKSB7XG4gICAgY29uc3QgX25vZGVzID0gQXJyYXkuaXNBcnJheShub2RlcykgPyBub2Rlcy5maWx0ZXIoQm9vbGVhbikgOiBub2RlcztcblxuICAgIHRoaXMuX2Vycm9ycy5wdXNoKFxuICAgICAgbmV3IEdyYXBoUUxFcnJvcihtZXNzYWdlLCB7XG4gICAgICAgIG5vZGVzOiBfbm9kZXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgZ2V0RXJyb3JzKCkge1xuICAgIHJldHVybiB0aGlzLl9lcnJvcnM7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVSb290VHlwZXMoY29udGV4dCkge1xuICBjb25zdCBzY2hlbWEgPSBjb250ZXh0LnNjaGVtYTtcbiAgY29uc3QgcXVlcnlUeXBlID0gc2NoZW1hLmdldFF1ZXJ5VHlwZSgpO1xuXG4gIGlmICghcXVlcnlUeXBlKSB7XG4gICAgY29udGV4dC5yZXBvcnRFcnJvcignUXVlcnkgcm9vdCB0eXBlIG11c3QgYmUgcHJvdmlkZWQuJywgc2NoZW1hLmFzdE5vZGUpO1xuICB9IGVsc2UgaWYgKCFpc09iamVjdFR5cGUocXVlcnlUeXBlKSkge1xuICAgIHZhciBfZ2V0T3BlcmF0aW9uVHlwZU5vZGU7XG5cbiAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgYFF1ZXJ5IHJvb3QgdHlwZSBtdXN0IGJlIE9iamVjdCB0eXBlLCBpdCBjYW5ub3QgYmUgJHtpbnNwZWN0KFxuICAgICAgICBxdWVyeVR5cGUsXG4gICAgICApfS5gLFxuICAgICAgKF9nZXRPcGVyYXRpb25UeXBlTm9kZSA9IGdldE9wZXJhdGlvblR5cGVOb2RlKFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIE9wZXJhdGlvblR5cGVOb2RlLlFVRVJZLFxuICAgICAgKSkgIT09IG51bGwgJiYgX2dldE9wZXJhdGlvblR5cGVOb2RlICE9PSB2b2lkIDBcbiAgICAgICAgPyBfZ2V0T3BlcmF0aW9uVHlwZU5vZGVcbiAgICAgICAgOiBxdWVyeVR5cGUuYXN0Tm9kZSxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbXV0YXRpb25UeXBlID0gc2NoZW1hLmdldE11dGF0aW9uVHlwZSgpO1xuXG4gIGlmIChtdXRhdGlvblR5cGUgJiYgIWlzT2JqZWN0VHlwZShtdXRhdGlvblR5cGUpKSB7XG4gICAgdmFyIF9nZXRPcGVyYXRpb25UeXBlTm9kZTI7XG5cbiAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgJ011dGF0aW9uIHJvb3QgdHlwZSBtdXN0IGJlIE9iamVjdCB0eXBlIGlmIHByb3ZpZGVkLCBpdCBjYW5ub3QgYmUgJyArXG4gICAgICAgIGAke2luc3BlY3QobXV0YXRpb25UeXBlKX0uYCxcbiAgICAgIChfZ2V0T3BlcmF0aW9uVHlwZU5vZGUyID0gZ2V0T3BlcmF0aW9uVHlwZU5vZGUoXG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgT3BlcmF0aW9uVHlwZU5vZGUuTVVUQVRJT04sXG4gICAgICApKSAhPT0gbnVsbCAmJiBfZ2V0T3BlcmF0aW9uVHlwZU5vZGUyICE9PSB2b2lkIDBcbiAgICAgICAgPyBfZ2V0T3BlcmF0aW9uVHlwZU5vZGUyXG4gICAgICAgIDogbXV0YXRpb25UeXBlLmFzdE5vZGUsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHN1YnNjcmlwdGlvblR5cGUgPSBzY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpO1xuXG4gIGlmIChzdWJzY3JpcHRpb25UeXBlICYmICFpc09iamVjdFR5cGUoc3Vic2NyaXB0aW9uVHlwZSkpIHtcbiAgICB2YXIgX2dldE9wZXJhdGlvblR5cGVOb2RlMztcblxuICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAnU3Vic2NyaXB0aW9uIHJvb3QgdHlwZSBtdXN0IGJlIE9iamVjdCB0eXBlIGlmIHByb3ZpZGVkLCBpdCBjYW5ub3QgYmUgJyArXG4gICAgICAgIGAke2luc3BlY3Qoc3Vic2NyaXB0aW9uVHlwZSl9LmAsXG4gICAgICAoX2dldE9wZXJhdGlvblR5cGVOb2RlMyA9IGdldE9wZXJhdGlvblR5cGVOb2RlKFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIE9wZXJhdGlvblR5cGVOb2RlLlNVQlNDUklQVElPTixcbiAgICAgICkpICE9PSBudWxsICYmIF9nZXRPcGVyYXRpb25UeXBlTm9kZTMgIT09IHZvaWQgMFxuICAgICAgICA/IF9nZXRPcGVyYXRpb25UeXBlTm9kZTNcbiAgICAgICAgOiBzdWJzY3JpcHRpb25UeXBlLmFzdE5vZGUsXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRPcGVyYXRpb25UeXBlTm9kZShzY2hlbWEsIG9wZXJhdGlvbikge1xuICB2YXIgX2ZsYXRNYXAkZmluZDtcblxuICByZXR1cm4gKF9mbGF0TWFwJGZpbmQgPSBbc2NoZW1hLmFzdE5vZGUsIC4uLnNjaGVtYS5leHRlbnNpb25BU1ROb2Rlc11cbiAgICAuZmxhdE1hcChcbiAgICAgIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG4gICAgICAoc2NoZW1hTm9kZSkgPT4ge1xuICAgICAgICB2YXIgX3NjaGVtYU5vZGUkb3BlcmF0aW9uO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAoX3NjaGVtYU5vZGUkb3BlcmF0aW9uID1cbiAgICAgICAgICAgIHNjaGVtYU5vZGUgPT09IG51bGwgfHwgc2NoZW1hTm9kZSA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogc2NoZW1hTm9kZS5vcGVyYXRpb25UeXBlcykgIT09IG51bGwgJiZcbiAgICAgICAgICAgIF9zY2hlbWFOb2RlJG9wZXJhdGlvbiAhPT0gdm9pZCAwXG4gICAgICAgICAgICA/IF9zY2hlbWFOb2RlJG9wZXJhdGlvblxuICAgICAgICAgICAgOiBbXVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICApXG4gICAgLmZpbmQoKG9wZXJhdGlvbk5vZGUpID0+IG9wZXJhdGlvbk5vZGUub3BlcmF0aW9uID09PSBvcGVyYXRpb24pKSA9PT0gbnVsbCB8fFxuICAgIF9mbGF0TWFwJGZpbmQgPT09IHZvaWQgMFxuICAgID8gdm9pZCAwXG4gICAgOiBfZmxhdE1hcCRmaW5kLnR5cGU7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGlyZWN0aXZlcyhjb250ZXh0KSB7XG4gIGZvciAoY29uc3QgZGlyZWN0aXZlIG9mIGNvbnRleHQuc2NoZW1hLmdldERpcmVjdGl2ZXMoKSkge1xuICAgIC8vIEVuc3VyZSBhbGwgZGlyZWN0aXZlcyBhcmUgaW4gZmFjdCBHcmFwaFFMIGRpcmVjdGl2ZXMuXG4gICAgaWYgKCFpc0RpcmVjdGl2ZShkaXJlY3RpdmUpKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICBgRXhwZWN0ZWQgZGlyZWN0aXZlIGJ1dCBnb3Q6ICR7aW5zcGVjdChkaXJlY3RpdmUpfS5gLFxuICAgICAgICBkaXJlY3RpdmUgPT09IG51bGwgfHwgZGlyZWN0aXZlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkaXJlY3RpdmUuYXN0Tm9kZSxcbiAgICAgICk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIEVuc3VyZSB0aGV5IGFyZSBuYW1lZCBjb3JyZWN0bHkuXG5cbiAgICB2YWxpZGF0ZU5hbWUoY29udGV4dCwgZGlyZWN0aXZlKTsgLy8gVE9ETzogRW5zdXJlIHByb3BlciBsb2NhdGlvbnMuXG4gICAgLy8gRW5zdXJlIHRoZSBhcmd1bWVudHMgYXJlIHZhbGlkLlxuXG4gICAgZm9yIChjb25zdCBhcmcgb2YgZGlyZWN0aXZlLmFyZ3MpIHtcbiAgICAgIC8vIEVuc3VyZSB0aGV5IGFyZSBuYW1lZCBjb3JyZWN0bHkuXG4gICAgICB2YWxpZGF0ZU5hbWUoY29udGV4dCwgYXJnKTsgLy8gRW5zdXJlIHRoZSB0eXBlIGlzIGFuIGlucHV0IHR5cGUuXG5cbiAgICAgIGlmICghaXNJbnB1dFR5cGUoYXJnLnR5cGUpKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgYFRoZSB0eXBlIG9mIEAke2RpcmVjdGl2ZS5uYW1lfSgke2FyZy5uYW1lfTopIG11c3QgYmUgSW5wdXQgVHlwZSBgICtcbiAgICAgICAgICAgIGBidXQgZ290OiAke2luc3BlY3QoYXJnLnR5cGUpfS5gLFxuICAgICAgICAgIGFyZy5hc3ROb2RlLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNSZXF1aXJlZEFyZ3VtZW50KGFyZykgJiYgYXJnLmRlcHJlY2F0aW9uUmVhc29uICE9IG51bGwpIHtcbiAgICAgICAgdmFyIF9hcmckYXN0Tm9kZTtcblxuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIGBSZXF1aXJlZCBhcmd1bWVudCBAJHtkaXJlY3RpdmUubmFtZX0oJHthcmcubmFtZX06KSBjYW5ub3QgYmUgZGVwcmVjYXRlZC5gLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIGdldERlcHJlY2F0ZWREaXJlY3RpdmVOb2RlKGFyZy5hc3ROb2RlKSxcbiAgICAgICAgICAgIChfYXJnJGFzdE5vZGUgPSBhcmcuYXN0Tm9kZSkgPT09IG51bGwgfHwgX2FyZyRhc3ROb2RlID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBfYXJnJGFzdE5vZGUudHlwZSxcbiAgICAgICAgICBdLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZU5hbWUoY29udGV4dCwgbm9kZSkge1xuICAvLyBFbnN1cmUgbmFtZXMgYXJlIHZhbGlkLCBob3dldmVyIGludHJvc3BlY3Rpb24gdHlwZXMgb3B0IG91dC5cbiAgaWYgKG5vZGUubmFtZS5zdGFydHNXaXRoKCdfXycpKSB7XG4gICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgIGBOYW1lIFwiJHtub2RlLm5hbWV9XCIgbXVzdCBub3QgYmVnaW4gd2l0aCBcIl9fXCIsIHdoaWNoIGlzIHJlc2VydmVkIGJ5IEdyYXBoUUwgaW50cm9zcGVjdGlvbi5gLFxuICAgICAgbm9kZS5hc3ROb2RlLFxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVUeXBlcyhjb250ZXh0KSB7XG4gIGNvbnN0IHZhbGlkYXRlSW5wdXRPYmplY3RDaXJjdWxhclJlZnMgPVxuICAgIGNyZWF0ZUlucHV0T2JqZWN0Q2lyY3VsYXJSZWZzVmFsaWRhdG9yKGNvbnRleHQpO1xuICBjb25zdCB0eXBlTWFwID0gY29udGV4dC5zY2hlbWEuZ2V0VHlwZU1hcCgpO1xuXG4gIGZvciAoY29uc3QgdHlwZSBvZiBPYmplY3QudmFsdWVzKHR5cGVNYXApKSB7XG4gICAgLy8gRW5zdXJlIGFsbCBwcm92aWRlZCB0eXBlcyBhcmUgaW4gZmFjdCBHcmFwaFFMIHR5cGUuXG4gICAgaWYgKCFpc05hbWVkVHlwZSh0eXBlKSkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgYEV4cGVjdGVkIEdyYXBoUUwgbmFtZWQgdHlwZSBidXQgZ290OiAke2luc3BlY3QodHlwZSl9LmAsXG4gICAgICAgIHR5cGUuYXN0Tm9kZSxcbiAgICAgICk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIEVuc3VyZSBpdCBpcyBuYW1lZCBjb3JyZWN0bHkgKGV4Y2x1ZGluZyBpbnRyb3NwZWN0aW9uIHR5cGVzKS5cblxuICAgIGlmICghaXNJbnRyb3NwZWN0aW9uVHlwZSh0eXBlKSkge1xuICAgICAgdmFsaWRhdGVOYW1lKGNvbnRleHQsIHR5cGUpO1xuICAgIH1cblxuICAgIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgIC8vIEVuc3VyZSBmaWVsZHMgYXJlIHZhbGlkXG4gICAgICB2YWxpZGF0ZUZpZWxkcyhjb250ZXh0LCB0eXBlKTsgLy8gRW5zdXJlIG9iamVjdHMgaW1wbGVtZW50IHRoZSBpbnRlcmZhY2VzIHRoZXkgY2xhaW0gdG8uXG5cbiAgICAgIHZhbGlkYXRlSW50ZXJmYWNlcyhjb250ZXh0LCB0eXBlKTtcbiAgICB9IGVsc2UgaWYgKGlzSW50ZXJmYWNlVHlwZSh0eXBlKSkge1xuICAgICAgLy8gRW5zdXJlIGZpZWxkcyBhcmUgdmFsaWQuXG4gICAgICB2YWxpZGF0ZUZpZWxkcyhjb250ZXh0LCB0eXBlKTsgLy8gRW5zdXJlIGludGVyZmFjZXMgaW1wbGVtZW50IHRoZSBpbnRlcmZhY2VzIHRoZXkgY2xhaW0gdG8uXG5cbiAgICAgIHZhbGlkYXRlSW50ZXJmYWNlcyhjb250ZXh0LCB0eXBlKTtcbiAgICB9IGVsc2UgaWYgKGlzVW5pb25UeXBlKHR5cGUpKSB7XG4gICAgICAvLyBFbnN1cmUgVW5pb25zIGluY2x1ZGUgdmFsaWQgbWVtYmVyIHR5cGVzLlxuICAgICAgdmFsaWRhdGVVbmlvbk1lbWJlcnMoY29udGV4dCwgdHlwZSk7XG4gICAgfSBlbHNlIGlmIChpc0VudW1UeXBlKHR5cGUpKSB7XG4gICAgICAvLyBFbnN1cmUgRW51bXMgaGF2ZSB2YWxpZCB2YWx1ZXMuXG4gICAgICB2YWxpZGF0ZUVudW1WYWx1ZXMoY29udGV4dCwgdHlwZSk7XG4gICAgfSBlbHNlIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgICAgLy8gRW5zdXJlIElucHV0IE9iamVjdCBmaWVsZHMgYXJlIHZhbGlkLlxuICAgICAgdmFsaWRhdGVJbnB1dEZpZWxkcyhjb250ZXh0LCB0eXBlKTsgLy8gRW5zdXJlIElucHV0IE9iamVjdHMgZG8gbm90IGNvbnRhaW4gbm9uLW51bGxhYmxlIGNpcmN1bGFyIHJlZmVyZW5jZXNcblxuICAgICAgdmFsaWRhdGVJbnB1dE9iamVjdENpcmN1bGFyUmVmcyh0eXBlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVGaWVsZHMoY29udGV4dCwgdHlwZSkge1xuICBjb25zdCBmaWVsZHMgPSBPYmplY3QudmFsdWVzKHR5cGUuZ2V0RmllbGRzKCkpOyAvLyBPYmplY3RzIGFuZCBJbnRlcmZhY2VzIGJvdGggbXVzdCBkZWZpbmUgb25lIG9yIG1vcmUgZmllbGRzLlxuXG4gIGlmIChmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgY29udGV4dC5yZXBvcnRFcnJvcihgVHlwZSAke3R5cGUubmFtZX0gbXVzdCBkZWZpbmUgb25lIG9yIG1vcmUgZmllbGRzLmAsIFtcbiAgICAgIHR5cGUuYXN0Tm9kZSxcbiAgICAgIC4uLnR5cGUuZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgXSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgIC8vIEVuc3VyZSB0aGV5IGFyZSBuYW1lZCBjb3JyZWN0bHkuXG4gICAgdmFsaWRhdGVOYW1lKGNvbnRleHQsIGZpZWxkKTsgLy8gRW5zdXJlIHRoZSB0eXBlIGlzIGFuIG91dHB1dCB0eXBlXG5cbiAgICBpZiAoIWlzT3V0cHV0VHlwZShmaWVsZC50eXBlKSkge1xuICAgICAgdmFyIF9maWVsZCRhc3ROb2RlO1xuXG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICBgVGhlIHR5cGUgb2YgJHt0eXBlLm5hbWV9LiR7ZmllbGQubmFtZX0gbXVzdCBiZSBPdXRwdXQgVHlwZSBgICtcbiAgICAgICAgICBgYnV0IGdvdDogJHtpbnNwZWN0KGZpZWxkLnR5cGUpfS5gLFxuICAgICAgICAoX2ZpZWxkJGFzdE5vZGUgPSBmaWVsZC5hc3ROb2RlKSA9PT0gbnVsbCB8fCBfZmllbGQkYXN0Tm9kZSA9PT0gdm9pZCAwXG4gICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICA6IF9maWVsZCRhc3ROb2RlLnR5cGUsXG4gICAgICApO1xuICAgIH0gLy8gRW5zdXJlIHRoZSBhcmd1bWVudHMgYXJlIHZhbGlkXG5cbiAgICBmb3IgKGNvbnN0IGFyZyBvZiBmaWVsZC5hcmdzKSB7XG4gICAgICBjb25zdCBhcmdOYW1lID0gYXJnLm5hbWU7IC8vIEVuc3VyZSB0aGV5IGFyZSBuYW1lZCBjb3JyZWN0bHkuXG5cbiAgICAgIHZhbGlkYXRlTmFtZShjb250ZXh0LCBhcmcpOyAvLyBFbnN1cmUgdGhlIHR5cGUgaXMgYW4gaW5wdXQgdHlwZVxuXG4gICAgICBpZiAoIWlzSW5wdXRUeXBlKGFyZy50eXBlKSkge1xuICAgICAgICB2YXIgX2FyZyRhc3ROb2RlMjtcblxuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIGBUaGUgdHlwZSBvZiAke3R5cGUubmFtZX0uJHtmaWVsZC5uYW1lfSgke2FyZ05hbWV9OikgbXVzdCBiZSBJbnB1dCBgICtcbiAgICAgICAgICAgIGBUeXBlIGJ1dCBnb3Q6ICR7aW5zcGVjdChhcmcudHlwZSl9LmAsXG4gICAgICAgICAgKF9hcmckYXN0Tm9kZTIgPSBhcmcuYXN0Tm9kZSkgPT09IG51bGwgfHwgX2FyZyRhc3ROb2RlMiA9PT0gdm9pZCAwXG4gICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgOiBfYXJnJGFzdE5vZGUyLnR5cGUsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1JlcXVpcmVkQXJndW1lbnQoYXJnKSAmJiBhcmcuZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbCkge1xuICAgICAgICB2YXIgX2FyZyRhc3ROb2RlMztcblxuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIGBSZXF1aXJlZCBhcmd1bWVudCAke3R5cGUubmFtZX0uJHtmaWVsZC5uYW1lfSgke2FyZ05hbWV9OikgY2Fubm90IGJlIGRlcHJlY2F0ZWQuYCxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBnZXREZXByZWNhdGVkRGlyZWN0aXZlTm9kZShhcmcuYXN0Tm9kZSksXG4gICAgICAgICAgICAoX2FyZyRhc3ROb2RlMyA9IGFyZy5hc3ROb2RlKSA9PT0gbnVsbCB8fCBfYXJnJGFzdE5vZGUzID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBfYXJnJGFzdE5vZGUzLnR5cGUsXG4gICAgICAgICAgXSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVJbnRlcmZhY2VzKGNvbnRleHQsIHR5cGUpIHtcbiAgY29uc3QgaWZhY2VUeXBlTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3QgaWZhY2Ugb2YgdHlwZS5nZXRJbnRlcmZhY2VzKCkpIHtcbiAgICBpZiAoIWlzSW50ZXJmYWNlVHlwZShpZmFjZSkpIHtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgIGBUeXBlICR7aW5zcGVjdCh0eXBlKX0gbXVzdCBvbmx5IGltcGxlbWVudCBJbnRlcmZhY2UgdHlwZXMsIGAgK1xuICAgICAgICAgIGBpdCBjYW5ub3QgaW1wbGVtZW50ICR7aW5zcGVjdChpZmFjZSl9LmAsXG4gICAgICAgIGdldEFsbEltcGxlbWVudHNJbnRlcmZhY2VOb2Rlcyh0eXBlLCBpZmFjZSksXG4gICAgICApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09IGlmYWNlKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICBgVHlwZSAke3R5cGUubmFtZX0gY2Fubm90IGltcGxlbWVudCBpdHNlbGYgYmVjYXVzZSBpdCB3b3VsZCBjcmVhdGUgYSBjaXJjdWxhciByZWZlcmVuY2UuYCxcbiAgICAgICAgZ2V0QWxsSW1wbGVtZW50c0ludGVyZmFjZU5vZGVzKHR5cGUsIGlmYWNlKSxcbiAgICAgICk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoaWZhY2VUeXBlTmFtZXNbaWZhY2UubmFtZV0pIHtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgIGBUeXBlICR7dHlwZS5uYW1lfSBjYW4gb25seSBpbXBsZW1lbnQgJHtpZmFjZS5uYW1lfSBvbmNlLmAsXG4gICAgICAgIGdldEFsbEltcGxlbWVudHNJbnRlcmZhY2VOb2Rlcyh0eXBlLCBpZmFjZSksXG4gICAgICApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWZhY2VUeXBlTmFtZXNbaWZhY2UubmFtZV0gPSB0cnVlO1xuICAgIHZhbGlkYXRlVHlwZUltcGxlbWVudHNBbmNlc3RvcnMoY29udGV4dCwgdHlwZSwgaWZhY2UpO1xuICAgIHZhbGlkYXRlVHlwZUltcGxlbWVudHNJbnRlcmZhY2UoY29udGV4dCwgdHlwZSwgaWZhY2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVHlwZUltcGxlbWVudHNJbnRlcmZhY2UoY29udGV4dCwgdHlwZSwgaWZhY2UpIHtcbiAgY29uc3QgdHlwZUZpZWxkTWFwID0gdHlwZS5nZXRGaWVsZHMoKTsgLy8gQXNzZXJ0IGVhY2ggaW50ZXJmYWNlIGZpZWxkIGlzIGltcGxlbWVudGVkLlxuXG4gIGZvciAoY29uc3QgaWZhY2VGaWVsZCBvZiBPYmplY3QudmFsdWVzKGlmYWNlLmdldEZpZWxkcygpKSkge1xuICAgIGNvbnN0IGZpZWxkTmFtZSA9IGlmYWNlRmllbGQubmFtZTtcbiAgICBjb25zdCB0eXBlRmllbGQgPSB0eXBlRmllbGRNYXBbZmllbGROYW1lXTsgLy8gQXNzZXJ0IGludGVyZmFjZSBmaWVsZCBleGlzdHMgb24gdHlwZS5cblxuICAgIGlmICghdHlwZUZpZWxkKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICBgSW50ZXJmYWNlIGZpZWxkICR7aWZhY2UubmFtZX0uJHtmaWVsZE5hbWV9IGV4cGVjdGVkIGJ1dCAke3R5cGUubmFtZX0gZG9lcyBub3QgcHJvdmlkZSBpdC5gLFxuICAgICAgICBbaWZhY2VGaWVsZC5hc3ROb2RlLCB0eXBlLmFzdE5vZGUsIC4uLnR5cGUuZXh0ZW5zaW9uQVNUTm9kZXNdLFxuICAgICAgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gQXNzZXJ0IGludGVyZmFjZSBmaWVsZCB0eXBlIGlzIHNhdGlzZmllZCBieSB0eXBlIGZpZWxkIHR5cGUsIGJ5IGJlaW5nXG4gICAgLy8gYSB2YWxpZCBzdWJ0eXBlLiAoY292YXJpYW50KVxuXG4gICAgaWYgKCFpc1R5cGVTdWJUeXBlT2YoY29udGV4dC5zY2hlbWEsIHR5cGVGaWVsZC50eXBlLCBpZmFjZUZpZWxkLnR5cGUpKSB7XG4gICAgICB2YXIgX2lmYWNlRmllbGQkYXN0Tm9kZSwgX3R5cGVGaWVsZCRhc3ROb2RlO1xuXG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICBgSW50ZXJmYWNlIGZpZWxkICR7aWZhY2UubmFtZX0uJHtmaWVsZE5hbWV9IGV4cGVjdHMgdHlwZSBgICtcbiAgICAgICAgICBgJHtpbnNwZWN0KGlmYWNlRmllbGQudHlwZSl9IGJ1dCAke3R5cGUubmFtZX0uJHtmaWVsZE5hbWV9IGAgK1xuICAgICAgICAgIGBpcyB0eXBlICR7aW5zcGVjdCh0eXBlRmllbGQudHlwZSl9LmAsXG4gICAgICAgIFtcbiAgICAgICAgICAoX2lmYWNlRmllbGQkYXN0Tm9kZSA9IGlmYWNlRmllbGQuYXN0Tm9kZSkgPT09IG51bGwgfHxcbiAgICAgICAgICBfaWZhY2VGaWVsZCRhc3ROb2RlID09PSB2b2lkIDBcbiAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICA6IF9pZmFjZUZpZWxkJGFzdE5vZGUudHlwZSxcbiAgICAgICAgICAoX3R5cGVGaWVsZCRhc3ROb2RlID0gdHlwZUZpZWxkLmFzdE5vZGUpID09PSBudWxsIHx8XG4gICAgICAgICAgX3R5cGVGaWVsZCRhc3ROb2RlID09PSB2b2lkIDBcbiAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICA6IF90eXBlRmllbGQkYXN0Tm9kZS50eXBlLFxuICAgICAgICBdLFxuICAgICAgKTtcbiAgICB9IC8vIEFzc2VydCBlYWNoIGludGVyZmFjZSBmaWVsZCBhcmcgaXMgaW1wbGVtZW50ZWQuXG5cbiAgICBmb3IgKGNvbnN0IGlmYWNlQXJnIG9mIGlmYWNlRmllbGQuYXJncykge1xuICAgICAgY29uc3QgYXJnTmFtZSA9IGlmYWNlQXJnLm5hbWU7XG4gICAgICBjb25zdCB0eXBlQXJnID0gdHlwZUZpZWxkLmFyZ3MuZmluZCgoYXJnKSA9PiBhcmcubmFtZSA9PT0gYXJnTmFtZSk7IC8vIEFzc2VydCBpbnRlcmZhY2UgZmllbGQgYXJnIGV4aXN0cyBvbiBvYmplY3QgZmllbGQuXG5cbiAgICAgIGlmICghdHlwZUFyZykge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIGBJbnRlcmZhY2UgZmllbGQgYXJndW1lbnQgJHtpZmFjZS5uYW1lfS4ke2ZpZWxkTmFtZX0oJHthcmdOYW1lfTopIGV4cGVjdGVkIGJ1dCAke3R5cGUubmFtZX0uJHtmaWVsZE5hbWV9IGRvZXMgbm90IHByb3ZpZGUgaXQuYCxcbiAgICAgICAgICBbaWZhY2VBcmcuYXN0Tm9kZSwgdHlwZUZpZWxkLmFzdE5vZGVdLFxuICAgICAgICApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gQXNzZXJ0IGludGVyZmFjZSBmaWVsZCBhcmcgdHlwZSBtYXRjaGVzIG9iamVjdCBmaWVsZCBhcmcgdHlwZS5cbiAgICAgIC8vIChpbnZhcmlhbnQpXG4gICAgICAvLyBUT0RPOiBjaGFuZ2UgdG8gY29udHJhdmFyaWFudD9cblxuICAgICAgaWYgKCFpc0VxdWFsVHlwZShpZmFjZUFyZy50eXBlLCB0eXBlQXJnLnR5cGUpKSB7XG4gICAgICAgIHZhciBfaWZhY2VBcmckYXN0Tm9kZSwgX3R5cGVBcmckYXN0Tm9kZTtcblxuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIGBJbnRlcmZhY2UgZmllbGQgYXJndW1lbnQgJHtpZmFjZS5uYW1lfS4ke2ZpZWxkTmFtZX0oJHthcmdOYW1lfTopIGAgK1xuICAgICAgICAgICAgYGV4cGVjdHMgdHlwZSAke2luc3BlY3QoaWZhY2VBcmcudHlwZSl9IGJ1dCBgICtcbiAgICAgICAgICAgIGAke3R5cGUubmFtZX0uJHtmaWVsZE5hbWV9KCR7YXJnTmFtZX06KSBpcyB0eXBlIGAgK1xuICAgICAgICAgICAgYCR7aW5zcGVjdCh0eXBlQXJnLnR5cGUpfS5gLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChfaWZhY2VBcmckYXN0Tm9kZSA9IGlmYWNlQXJnLmFzdE5vZGUpID09PSBudWxsIHx8XG4gICAgICAgICAgICBfaWZhY2VBcmckYXN0Tm9kZSA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogX2lmYWNlQXJnJGFzdE5vZGUudHlwZSxcbiAgICAgICAgICAgIChfdHlwZUFyZyRhc3ROb2RlID0gdHlwZUFyZy5hc3ROb2RlKSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgX3R5cGVBcmckYXN0Tm9kZSA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogX3R5cGVBcmckYXN0Tm9kZS50eXBlLFxuICAgICAgICAgIF0sXG4gICAgICAgICk7XG4gICAgICB9IC8vIFRPRE86IHZhbGlkYXRlIGRlZmF1bHQgdmFsdWVzP1xuICAgIH0gLy8gQXNzZXJ0IGFkZGl0aW9uYWwgYXJndW1lbnRzIG11c3Qgbm90IGJlIHJlcXVpcmVkLlxuXG4gICAgZm9yIChjb25zdCB0eXBlQXJnIG9mIHR5cGVGaWVsZC5hcmdzKSB7XG4gICAgICBjb25zdCBhcmdOYW1lID0gdHlwZUFyZy5uYW1lO1xuICAgICAgY29uc3QgaWZhY2VBcmcgPSBpZmFjZUZpZWxkLmFyZ3MuZmluZCgoYXJnKSA9PiBhcmcubmFtZSA9PT0gYXJnTmFtZSk7XG5cbiAgICAgIGlmICghaWZhY2VBcmcgJiYgaXNSZXF1aXJlZEFyZ3VtZW50KHR5cGVBcmcpKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgYE9iamVjdCBmaWVsZCAke3R5cGUubmFtZX0uJHtmaWVsZE5hbWV9IGluY2x1ZGVzIHJlcXVpcmVkIGFyZ3VtZW50ICR7YXJnTmFtZX0gdGhhdCBpcyBtaXNzaW5nIGZyb20gdGhlIEludGVyZmFjZSBmaWVsZCAke2lmYWNlLm5hbWV9LiR7ZmllbGROYW1lfS5gLFxuICAgICAgICAgIFt0eXBlQXJnLmFzdE5vZGUsIGlmYWNlRmllbGQuYXN0Tm9kZV0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVHlwZUltcGxlbWVudHNBbmNlc3RvcnMoY29udGV4dCwgdHlwZSwgaWZhY2UpIHtcbiAgY29uc3QgaWZhY2VJbnRlcmZhY2VzID0gdHlwZS5nZXRJbnRlcmZhY2VzKCk7XG5cbiAgZm9yIChjb25zdCB0cmFuc2l0aXZlIG9mIGlmYWNlLmdldEludGVyZmFjZXMoKSkge1xuICAgIGlmICghaWZhY2VJbnRlcmZhY2VzLmluY2x1ZGVzKHRyYW5zaXRpdmUpKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICB0cmFuc2l0aXZlID09PSB0eXBlXG4gICAgICAgICAgPyBgVHlwZSAke3R5cGUubmFtZX0gY2Fubm90IGltcGxlbWVudCAke2lmYWNlLm5hbWV9IGJlY2F1c2UgaXQgd291bGQgY3JlYXRlIGEgY2lyY3VsYXIgcmVmZXJlbmNlLmBcbiAgICAgICAgICA6IGBUeXBlICR7dHlwZS5uYW1lfSBtdXN0IGltcGxlbWVudCAke3RyYW5zaXRpdmUubmFtZX0gYmVjYXVzZSBpdCBpcyBpbXBsZW1lbnRlZCBieSAke2lmYWNlLm5hbWV9LmAsXG4gICAgICAgIFtcbiAgICAgICAgICAuLi5nZXRBbGxJbXBsZW1lbnRzSW50ZXJmYWNlTm9kZXMoaWZhY2UsIHRyYW5zaXRpdmUpLFxuICAgICAgICAgIC4uLmdldEFsbEltcGxlbWVudHNJbnRlcmZhY2VOb2Rlcyh0eXBlLCBpZmFjZSksXG4gICAgICAgIF0sXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVVuaW9uTWVtYmVycyhjb250ZXh0LCB1bmlvbikge1xuICBjb25zdCBtZW1iZXJUeXBlcyA9IHVuaW9uLmdldFR5cGVzKCk7XG5cbiAgaWYgKG1lbWJlclR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICBgVW5pb24gdHlwZSAke3VuaW9uLm5hbWV9IG11c3QgZGVmaW5lIG9uZSBvciBtb3JlIG1lbWJlciB0eXBlcy5gLFxuICAgICAgW3VuaW9uLmFzdE5vZGUsIC4uLnVuaW9uLmV4dGVuc2lvbkFTVE5vZGVzXSxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5jbHVkZWRUeXBlTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyVHlwZSBvZiBtZW1iZXJUeXBlcykge1xuICAgIGlmIChpbmNsdWRlZFR5cGVOYW1lc1ttZW1iZXJUeXBlLm5hbWVdKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICBgVW5pb24gdHlwZSAke3VuaW9uLm5hbWV9IGNhbiBvbmx5IGluY2x1ZGUgdHlwZSAke21lbWJlclR5cGUubmFtZX0gb25jZS5gLFxuICAgICAgICBnZXRVbmlvbk1lbWJlclR5cGVOb2Rlcyh1bmlvbiwgbWVtYmVyVHlwZS5uYW1lKSxcbiAgICAgICk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpbmNsdWRlZFR5cGVOYW1lc1ttZW1iZXJUeXBlLm5hbWVdID0gdHJ1ZTtcblxuICAgIGlmICghaXNPYmplY3RUeXBlKG1lbWJlclR5cGUpKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICBgVW5pb24gdHlwZSAke3VuaW9uLm5hbWV9IGNhbiBvbmx5IGluY2x1ZGUgT2JqZWN0IHR5cGVzLCBgICtcbiAgICAgICAgICBgaXQgY2Fubm90IGluY2x1ZGUgJHtpbnNwZWN0KG1lbWJlclR5cGUpfS5gLFxuICAgICAgICBnZXRVbmlvbk1lbWJlclR5cGVOb2Rlcyh1bmlvbiwgU3RyaW5nKG1lbWJlclR5cGUpKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRW51bVZhbHVlcyhjb250ZXh0LCBlbnVtVHlwZSkge1xuICBjb25zdCBlbnVtVmFsdWVzID0gZW51bVR5cGUuZ2V0VmFsdWVzKCk7XG5cbiAgaWYgKGVudW1WYWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgIGBFbnVtIHR5cGUgJHtlbnVtVHlwZS5uYW1lfSBtdXN0IGRlZmluZSBvbmUgb3IgbW9yZSB2YWx1ZXMuYCxcbiAgICAgIFtlbnVtVHlwZS5hc3ROb2RlLCAuLi5lbnVtVHlwZS5leHRlbnNpb25BU1ROb2Rlc10sXG4gICAgKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgZW51bVZhbHVlIG9mIGVudW1WYWx1ZXMpIHtcbiAgICAvLyBFbnN1cmUgdmFsaWQgbmFtZS5cbiAgICB2YWxpZGF0ZU5hbWUoY29udGV4dCwgZW51bVZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUlucHV0RmllbGRzKGNvbnRleHQsIGlucHV0T2JqKSB7XG4gIGNvbnN0IGZpZWxkcyA9IE9iamVjdC52YWx1ZXMoaW5wdXRPYmouZ2V0RmllbGRzKCkpO1xuXG4gIGlmIChmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgIGBJbnB1dCBPYmplY3QgdHlwZSAke2lucHV0T2JqLm5hbWV9IG11c3QgZGVmaW5lIG9uZSBvciBtb3JlIGZpZWxkcy5gLFxuICAgICAgW2lucHV0T2JqLmFzdE5vZGUsIC4uLmlucHV0T2JqLmV4dGVuc2lvbkFTVE5vZGVzXSxcbiAgICApO1xuICB9IC8vIEVuc3VyZSB0aGUgYXJndW1lbnRzIGFyZSB2YWxpZFxuXG4gIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgLy8gRW5zdXJlIHRoZXkgYXJlIG5hbWVkIGNvcnJlY3RseS5cbiAgICB2YWxpZGF0ZU5hbWUoY29udGV4dCwgZmllbGQpOyAvLyBFbnN1cmUgdGhlIHR5cGUgaXMgYW4gaW5wdXQgdHlwZVxuXG4gICAgaWYgKCFpc0lucHV0VHlwZShmaWVsZC50eXBlKSkge1xuICAgICAgdmFyIF9maWVsZCRhc3ROb2RlMjtcblxuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgYFRoZSB0eXBlIG9mICR7aW5wdXRPYmoubmFtZX0uJHtmaWVsZC5uYW1lfSBtdXN0IGJlIElucHV0IFR5cGUgYCArXG4gICAgICAgICAgYGJ1dCBnb3Q6ICR7aW5zcGVjdChmaWVsZC50eXBlKX0uYCxcbiAgICAgICAgKF9maWVsZCRhc3ROb2RlMiA9IGZpZWxkLmFzdE5vZGUpID09PSBudWxsIHx8IF9maWVsZCRhc3ROb2RlMiA9PT0gdm9pZCAwXG4gICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICA6IF9maWVsZCRhc3ROb2RlMi50eXBlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaXNSZXF1aXJlZElucHV0RmllbGQoZmllbGQpICYmIGZpZWxkLmRlcHJlY2F0aW9uUmVhc29uICE9IG51bGwpIHtcbiAgICAgIHZhciBfZmllbGQkYXN0Tm9kZTM7XG5cbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgIGBSZXF1aXJlZCBpbnB1dCBmaWVsZCAke2lucHV0T2JqLm5hbWV9LiR7ZmllbGQubmFtZX0gY2Fubm90IGJlIGRlcHJlY2F0ZWQuYCxcbiAgICAgICAgW1xuICAgICAgICAgIGdldERlcHJlY2F0ZWREaXJlY3RpdmVOb2RlKGZpZWxkLmFzdE5vZGUpLFxuICAgICAgICAgIChfZmllbGQkYXN0Tm9kZTMgPSBmaWVsZC5hc3ROb2RlKSA9PT0gbnVsbCB8fFxuICAgICAgICAgIF9maWVsZCRhc3ROb2RlMyA9PT0gdm9pZCAwXG4gICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgOiBfZmllbGQkYXN0Tm9kZTMudHlwZSxcbiAgICAgICAgXSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUlucHV0T2JqZWN0Q2lyY3VsYXJSZWZzVmFsaWRhdG9yKGNvbnRleHQpIHtcbiAgLy8gTW9kaWZpZWQgY29weSBvZiBhbGdvcml0aG0gZnJvbSAnc3JjL3ZhbGlkYXRpb24vcnVsZXMvTm9GcmFnbWVudEN5Y2xlcy5qcycuXG4gIC8vIFRyYWNrcyBhbHJlYWR5IHZpc2l0ZWQgdHlwZXMgdG8gbWFpbnRhaW4gTyhOKSBhbmQgdG8gZW5zdXJlIHRoYXQgY3ljbGVzXG4gIC8vIGFyZSBub3QgcmVkdW5kYW50bHkgcmVwb3J0ZWQuXG4gIGNvbnN0IHZpc2l0ZWRUeXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7IC8vIEFycmF5IG9mIHR5cGVzIG5vZGVzIHVzZWQgdG8gcHJvZHVjZSBtZWFuaW5nZnVsIGVycm9yc1xuXG4gIGNvbnN0IGZpZWxkUGF0aCA9IFtdOyAvLyBQb3NpdGlvbiBpbiB0aGUgdHlwZSBwYXRoXG5cbiAgY29uc3QgZmllbGRQYXRoSW5kZXhCeVR5cGVOYW1lID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIGRldGVjdEN5Y2xlUmVjdXJzaXZlOyAvLyBUaGlzIGRvZXMgYSBzdHJhaWdodC1mb3J3YXJkIERGUyB0byBmaW5kIGN5Y2xlcy5cbiAgLy8gSXQgZG9lcyBub3QgdGVybWluYXRlIHdoZW4gYSBjeWNsZSB3YXMgZm91bmQgYnV0IGNvbnRpbnVlcyB0byBleHBsb3JlXG4gIC8vIHRoZSBncmFwaCB0byBmaW5kIGFsbCBwb3NzaWJsZSBjeWNsZXMuXG5cbiAgZnVuY3Rpb24gZGV0ZWN0Q3ljbGVSZWN1cnNpdmUoaW5wdXRPYmopIHtcbiAgICBpZiAodmlzaXRlZFR5cGVzW2lucHV0T2JqLm5hbWVdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmlzaXRlZFR5cGVzW2lucHV0T2JqLm5hbWVdID0gdHJ1ZTtcbiAgICBmaWVsZFBhdGhJbmRleEJ5VHlwZU5hbWVbaW5wdXRPYmoubmFtZV0gPSBmaWVsZFBhdGgubGVuZ3RoO1xuICAgIGNvbnN0IGZpZWxkcyA9IE9iamVjdC52YWx1ZXMoaW5wdXRPYmouZ2V0RmllbGRzKCkpO1xuXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgIGlmIChpc05vbk51bGxUeXBlKGZpZWxkLnR5cGUpICYmIGlzSW5wdXRPYmplY3RUeXBlKGZpZWxkLnR5cGUub2ZUeXBlKSkge1xuICAgICAgICBjb25zdCBmaWVsZFR5cGUgPSBmaWVsZC50eXBlLm9mVHlwZTtcbiAgICAgICAgY29uc3QgY3ljbGVJbmRleCA9IGZpZWxkUGF0aEluZGV4QnlUeXBlTmFtZVtmaWVsZFR5cGUubmFtZV07XG4gICAgICAgIGZpZWxkUGF0aC5wdXNoKGZpZWxkKTtcblxuICAgICAgICBpZiAoY3ljbGVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZGV0ZWN0Q3ljbGVSZWN1cnNpdmUoZmllbGRUeXBlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjeWNsZVBhdGggPSBmaWVsZFBhdGguc2xpY2UoY3ljbGVJbmRleCk7XG4gICAgICAgICAgY29uc3QgcGF0aFN0ciA9IGN5Y2xlUGF0aC5tYXAoKGZpZWxkT2JqKSA9PiBmaWVsZE9iai5uYW1lKS5qb2luKCcuJyk7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3QgcmVmZXJlbmNlIElucHV0IE9iamVjdCBcIiR7ZmllbGRUeXBlLm5hbWV9XCIgd2l0aGluIGl0c2VsZiB0aHJvdWdoIGEgc2VyaWVzIG9mIG5vbi1udWxsIGZpZWxkczogXCIke3BhdGhTdHJ9XCIuYCxcbiAgICAgICAgICAgIGN5Y2xlUGF0aC5tYXAoKGZpZWxkT2JqKSA9PiBmaWVsZE9iai5hc3ROb2RlKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgZmllbGRQYXRoLnBvcCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZpZWxkUGF0aEluZGV4QnlUeXBlTmFtZVtpbnB1dE9iai5uYW1lXSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBbGxJbXBsZW1lbnRzSW50ZXJmYWNlTm9kZXModHlwZSwgaWZhY2UpIHtcbiAgY29uc3QgeyBhc3ROb2RlLCBleHRlbnNpb25BU1ROb2RlcyB9ID0gdHlwZTtcbiAgY29uc3Qgbm9kZXMgPVxuICAgIGFzdE5vZGUgIT0gbnVsbCA/IFthc3ROb2RlLCAuLi5leHRlbnNpb25BU1ROb2Rlc10gOiBleHRlbnNpb25BU1ROb2RlczsgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcblxuICByZXR1cm4gbm9kZXNcbiAgICAuZmxhdE1hcCgodHlwZU5vZGUpID0+IHtcbiAgICAgIHZhciBfdHlwZU5vZGUkaW50ZXJmYWNlcztcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgICAgKF90eXBlTm9kZSRpbnRlcmZhY2VzID0gdHlwZU5vZGUuaW50ZXJmYWNlcykgIT09IG51bGwgJiZcbiAgICAgICAgICBfdHlwZU5vZGUkaW50ZXJmYWNlcyAhPT0gdm9pZCAwXG4gICAgICAgICAgPyBfdHlwZU5vZGUkaW50ZXJmYWNlc1xuICAgICAgICAgIDogW11cbiAgICAgICk7XG4gICAgfSlcbiAgICAuZmlsdGVyKChpZmFjZU5vZGUpID0+IGlmYWNlTm9kZS5uYW1lLnZhbHVlID09PSBpZmFjZS5uYW1lKTtcbn1cblxuZnVuY3Rpb24gZ2V0VW5pb25NZW1iZXJUeXBlTm9kZXModW5pb24sIHR5cGVOYW1lKSB7XG4gIGNvbnN0IHsgYXN0Tm9kZSwgZXh0ZW5zaW9uQVNUTm9kZXMgfSA9IHVuaW9uO1xuICBjb25zdCBub2RlcyA9XG4gICAgYXN0Tm9kZSAhPSBudWxsID8gW2FzdE5vZGUsIC4uLmV4dGVuc2lvbkFTVE5vZGVzXSA6IGV4dGVuc2lvbkFTVE5vZGVzOyAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuXG4gIHJldHVybiBub2Rlc1xuICAgIC5mbGF0TWFwKCh1bmlvbk5vZGUpID0+IHtcbiAgICAgIHZhciBfdW5pb25Ob2RlJHR5cGVzO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAoX3VuaW9uTm9kZSR0eXBlcyA9IHVuaW9uTm9kZS50eXBlcykgIT09IG51bGwgJiZcbiAgICAgICAgICBfdW5pb25Ob2RlJHR5cGVzICE9PSB2b2lkIDBcbiAgICAgICAgICA/IF91bmlvbk5vZGUkdHlwZXNcbiAgICAgICAgICA6IFtdXG4gICAgICApO1xuICAgIH0pXG4gICAgLmZpbHRlcigodHlwZU5vZGUpID0+IHR5cGVOb2RlLm5hbWUudmFsdWUgPT09IHR5cGVOYW1lKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGVwcmVjYXRlZERpcmVjdGl2ZU5vZGUoZGVmaW5pdGlvbk5vZGUpIHtcbiAgdmFyIF9kZWZpbml0aW9uTm9kZSRkaXJlYztcblxuICByZXR1cm4gZGVmaW5pdGlvbk5vZGUgPT09IG51bGwgfHwgZGVmaW5pdGlvbk5vZGUgPT09IHZvaWQgMFxuICAgID8gdm9pZCAwXG4gICAgOiAoX2RlZmluaXRpb25Ob2RlJGRpcmVjID0gZGVmaW5pdGlvbk5vZGUuZGlyZWN0aXZlcykgPT09IG51bGwgfHxcbiAgICAgIF9kZWZpbml0aW9uTm9kZSRkaXJlYyA9PT0gdm9pZCAwXG4gICAgPyB2b2lkIDBcbiAgICA6IF9kZWZpbml0aW9uTm9kZSRkaXJlYy5maW5kKFxuICAgICAgICAobm9kZSkgPT4gbm9kZS5uYW1lLnZhbHVlID09PSBHcmFwaFFMRGVwcmVjYXRlZERpcmVjdGl2ZS5uYW1lLFxuICAgICAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/validate.mjs\n");
|
889 |
|
890 | }),
|
891 |
|
892 | "../../../node_modules/graphql/utilities/TypeInfo.mjs":
|
893 |
|
894 |
|
895 |
|
896 |
|
897 | (function(module, __webpack_exports__, __webpack_require__) {
|
898 |
|
899 | "use strict";
|
900 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TypeInfo\", function() { return TypeInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitWithTypeInfo\", function() { return visitWithTypeInfo; });\n/* harmony import */ var _language_ast_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\n\nclass TypeInfo {\n constructor(\n schema,\n /**\n * Initial type may be provided in rare cases to facilitate traversals\n * beginning somewhere other than documents.\n */\n initialType,\n /** @deprecated will be removed in 17.0.0 */\n getFieldDefFn,\n ) {\n this._schema = schema;\n this._typeStack = [];\n this._parentTypeStack = [];\n this._inputTypeStack = [];\n this._fieldDefStack = [];\n this._defaultValueStack = [];\n this._directive = null;\n this._argument = null;\n this._enumValue = null;\n this._getFieldDef =\n getFieldDefFn !== null && getFieldDefFn !== void 0\n ? getFieldDefFn\n : getFieldDef;\n\n if (initialType) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isInputType\"])(initialType)) {\n this._inputTypeStack.push(initialType);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isCompositeType\"])(initialType)) {\n this._parentTypeStack.push(initialType);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isOutputType\"])(initialType)) {\n this._typeStack.push(initialType);\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'TypeInfo';\n }\n\n getType() {\n if (this._typeStack.length > 0) {\n return this._typeStack[this._typeStack.length - 1];\n }\n }\n\n getParentType() {\n if (this._parentTypeStack.length > 0) {\n return this._parentTypeStack[this._parentTypeStack.length - 1];\n }\n }\n\n getInputType() {\n if (this._inputTypeStack.length > 0) {\n return this._inputTypeStack[this._inputTypeStack.length - 1];\n }\n }\n\n getParentInputType() {\n if (this._inputTypeStack.length > 1) {\n return this._inputTypeStack[this._inputTypeStack.length - 2];\n }\n }\n\n getFieldDef() {\n if (this._fieldDefStack.length > 0) {\n return this._fieldDefStack[this._fieldDefStack.length - 1];\n }\n }\n\n getDefaultValue() {\n if (this._defaultValueStack.length > 0) {\n return this._defaultValueStack[this._defaultValueStack.length - 1];\n }\n }\n\n getDirective() {\n return this._directive;\n }\n\n getArgument() {\n return this._argument;\n }\n\n getEnumValue() {\n return this._enumValue;\n }\n\n enter(node) {\n const schema = this._schema; // Note: many of the types below are explicitly typed as \"unknown\" to drop\n // any assumptions of a valid schema to ensure runtime types are properly\n // checked before continuing since TypeInfo is used as part of validation\n // which occurs before guarantees of schema and document validity.\n\n switch (node.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SELECTION_SET: {\n const namedType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getNamedType\"])(this.getType());\n\n this._parentTypeStack.push(\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isCompositeType\"])(namedType) ? namedType : undefined,\n );\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FIELD: {\n const parentType = this.getParentType();\n let fieldDef;\n let fieldType;\n\n if (parentType) {\n fieldDef = this._getFieldDef(schema, parentType, node);\n\n if (fieldDef) {\n fieldType = fieldDef.type;\n }\n }\n\n this._fieldDefStack.push(fieldDef);\n\n this._typeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isOutputType\"])(fieldType) ? fieldType : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].DIRECTIVE:\n this._directive = schema.getDirective(node.name.value);\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OPERATION_DEFINITION: {\n const rootType = schema.getRootType(node.operation);\n\n this._typeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isObjectType\"])(rootType) ? rootType : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INLINE_FRAGMENT:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FRAGMENT_DEFINITION: {\n const typeConditionAST = node.typeCondition;\n const outputType = typeConditionAST\n ? Object(_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_5__[\"typeFromAST\"])(schema, typeConditionAST)\n : Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getNamedType\"])(this.getType());\n\n this._typeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isOutputType\"])(outputType) ? outputType : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].VARIABLE_DEFINITION: {\n const inputType = Object(_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_5__[\"typeFromAST\"])(schema, node.type);\n\n this._inputTypeStack.push(\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isInputType\"])(inputType) ? inputType : undefined,\n );\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ARGUMENT: {\n var _this$getDirective;\n\n let argDef;\n let argType;\n const fieldOrDirective =\n (_this$getDirective = this.getDirective()) !== null &&\n _this$getDirective !== void 0\n ? _this$getDirective\n : this.getFieldDef();\n\n if (fieldOrDirective) {\n argDef = fieldOrDirective.args.find(\n (arg) => arg.name === node.name.value,\n );\n\n if (argDef) {\n argType = argDef.type;\n }\n }\n\n this._argument = argDef;\n\n this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n\n this._inputTypeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isInputType\"])(argType) ? argType : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].LIST: {\n const listType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getNullableType\"])(this.getInputType());\n const itemType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isListType\"])(listType) ? listType.ofType : listType; // List positions never have a default value.\n\n this._defaultValueStack.push(undefined);\n\n this._inputTypeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isInputType\"])(itemType) ? itemType : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OBJECT_FIELD: {\n const objectType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getNamedType\"])(this.getInputType());\n let inputFieldType;\n let inputField;\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isInputObjectType\"])(objectType)) {\n inputField = objectType.getFields()[node.name.value];\n\n if (inputField) {\n inputFieldType = inputField.type;\n }\n }\n\n this._defaultValueStack.push(\n inputField ? inputField.defaultValue : undefined,\n );\n\n this._inputTypeStack.push(\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isInputType\"])(inputFieldType) ? inputFieldType : undefined,\n );\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ENUM: {\n const enumType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getNamedType\"])(this.getInputType());\n let enumValue;\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isEnumType\"])(enumType)) {\n enumValue = enumType.getValue(node.value);\n }\n\n this._enumValue = enumValue;\n break;\n }\n\n default: // Ignore other nodes\n }\n }\n\n leave(node) {\n switch (node.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SELECTION_SET:\n this._parentTypeStack.pop();\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FIELD:\n this._fieldDefStack.pop();\n\n this._typeStack.pop();\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].DIRECTIVE:\n this._directive = null;\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OPERATION_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INLINE_FRAGMENT:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FRAGMENT_DEFINITION:\n this._typeStack.pop();\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].VARIABLE_DEFINITION:\n this._inputTypeStack.pop();\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ARGUMENT:\n this._argument = null;\n\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].LIST:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OBJECT_FIELD:\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ENUM:\n this._enumValue = null;\n break;\n\n default: // Ignore other nodes\n }\n }\n}\n\n/**\n * Not exactly the same as the executor's definition of getFieldDef, in this\n * statically evaluated environment we do not always have an Object type,\n * and need to handle Interface and Union types.\n */\nfunction getFieldDef(schema, parentType, fieldNode) {\n const name = fieldNode.name.value;\n\n if (\n name === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"SchemaMetaFieldDef\"].name &&\n schema.getQueryType() === parentType\n ) {\n return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"SchemaMetaFieldDef\"];\n }\n\n if (name === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TypeMetaFieldDef\"].name && schema.getQueryType() === parentType) {\n return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TypeMetaFieldDef\"];\n }\n\n if (name === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TypeNameMetaFieldDef\"].name && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isCompositeType\"])(parentType)) {\n return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TypeNameMetaFieldDef\"];\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isObjectType\"])(parentType) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isInterfaceType\"])(parentType)) {\n return parentType.getFields()[name];\n }\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nfunction visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter(...args) {\n const node = args[0];\n typeInfo.enter(node);\n const fn = Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getEnterLeaveForKind\"])(visitor, node.kind).enter;\n\n if (fn) {\n const result = fn.apply(visitor, args);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (Object(_language_ast_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isNode\"])(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n\n leave(...args) {\n const node = args[0];\n const fn = Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getEnterLeaveForKind\"])(visitor, node.kind).leave;\n let result;\n\n if (fn) {\n result = fn.apply(visitor, args);\n }\n\n typeInfo.leave(node);\n return result;\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL1R5cGVJbmZvLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9UeXBlSW5mby5tanM/MjhmZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05vZGUgfSBmcm9tICcuLi9sYW5ndWFnZS9hc3QubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuaW1wb3J0IHsgZ2V0RW50ZXJMZWF2ZUZvcktpbmQgfSBmcm9tICcuLi9sYW5ndWFnZS92aXNpdG9yLm1qcyc7XG5pbXBvcnQge1xuICBnZXROYW1lZFR5cGUsXG4gIGdldE51bGxhYmxlVHlwZSxcbiAgaXNDb21wb3NpdGVUeXBlLFxuICBpc0VudW1UeXBlLFxuICBpc0lucHV0T2JqZWN0VHlwZSxcbiAgaXNJbnB1dFR5cGUsXG4gIGlzSW50ZXJmYWNlVHlwZSxcbiAgaXNMaXN0VHlwZSxcbiAgaXNPYmplY3RUeXBlLFxuICBpc091dHB1dFR5cGUsXG59IGZyb20gJy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHtcbiAgU2NoZW1hTWV0YUZpZWxkRGVmLFxuICBUeXBlTWV0YUZpZWxkRGVmLFxuICBUeXBlTmFtZU1ldGFGaWVsZERlZixcbn0gZnJvbSAnLi4vdHlwZS9pbnRyb3NwZWN0aW9uLm1qcyc7XG5pbXBvcnQgeyB0eXBlRnJvbUFTVCB9IGZyb20gJy4vdHlwZUZyb21BU1QubWpzJztcbi8qKlxuICogVHlwZUluZm8gaXMgYSB1dGlsaXR5IGNsYXNzIHdoaWNoLCBnaXZlbiBhIEdyYXBoUUwgc2NoZW1hLCBjYW4ga2VlcCB0cmFja1xuICogb2YgdGhlIGN1cnJlbnQgZmllbGQgYW5kIHR5cGUgZGVmaW5pdGlvbnMgYXQgYW55IHBvaW50IGluIGEgR3JhcGhRTCBkb2N1bWVudFxuICogQVNUIGR1cmluZyBhIHJlY3Vyc2l2ZSBkZXNjZW50IGJ5IGNhbGxpbmcgYGVudGVyKG5vZGUpYCBhbmQgYGxlYXZlKG5vZGUpYC5cbiAqL1xuXG5leHBvcnQgY2xhc3MgVHlwZUluZm8ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY2hlbWEsXG4gICAgLyoqXG4gICAgICogSW5pdGlhbCB0eXBlIG1heSBiZSBwcm92aWRlZCBpbiByYXJlIGNhc2VzIHRvIGZhY2lsaXRhdGUgdHJhdmVyc2Fsc1xuICAgICAqICBiZWdpbm5pbmcgc29tZXdoZXJlIG90aGVyIHRoYW4gZG9jdW1lbnRzLlxuICAgICAqL1xuICAgIGluaXRpYWxUeXBlLFxuICAgIC8qKiBAZGVwcmVjYXRlZCB3aWxsIGJlIHJlbW92ZWQgaW4gMTcuMC4wICovXG4gICAgZ2V0RmllbGREZWZGbixcbiAgKSB7XG4gICAgdGhpcy5fc2NoZW1hID0gc2NoZW1hO1xuICAgIHRoaXMuX3R5cGVTdGFjayA9IFtdO1xuICAgIHRoaXMuX3BhcmVudFR5cGVTdGFjayA9IFtdO1xuICAgIHRoaXMuX2lucHV0VHlwZVN0YWNrID0gW107XG4gICAgdGhpcy5fZmllbGREZWZTdGFjayA9IFtdO1xuICAgIHRoaXMuX2RlZmF1bHRWYWx1ZVN0YWNrID0gW107XG4gICAgdGhpcy5fZGlyZWN0aXZlID0gbnVsbDtcbiAgICB0aGlzLl9hcmd1bWVudCA9IG51bGw7XG4gICAgdGhpcy5fZW51bVZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9nZXRGaWVsZERlZiA9XG4gICAgICBnZXRGaWVsZERlZkZuICE9PSBudWxsICYmIGdldEZpZWxkRGVmRm4gIT09IHZvaWQgMFxuICAgICAgICA/IGdldEZpZWxkRGVmRm5cbiAgICAgICAgOiBnZXRGaWVsZERlZjtcblxuICAgIGlmIChpbml0aWFsVHlwZSkge1xuICAgICAgaWYgKGlzSW5wdXRUeXBlKGluaXRpYWxUeXBlKSkge1xuICAgICAgICB0aGlzLl9pbnB1dFR5cGVTdGFjay5wdXNoKGluaXRpYWxUeXBlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzQ29tcG9zaXRlVHlwZShpbml0aWFsVHlwZSkpIHtcbiAgICAgICAgdGhpcy5fcGFyZW50VHlwZVN0YWNrLnB1c2goaW5pdGlhbFR5cGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNPdXRwdXRUeXBlKGluaXRpYWxUeXBlKSkge1xuICAgICAgICB0aGlzLl90eXBlU3RhY2sucHVzaChpbml0aWFsVHlwZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnVHlwZUluZm8nO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICBpZiAodGhpcy5fdHlwZVN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLl90eXBlU3RhY2tbdGhpcy5fdHlwZVN0YWNrLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgfVxuXG4gIGdldFBhcmVudFR5cGUoKSB7XG4gICAgaWYgKHRoaXMuX3BhcmVudFR5cGVTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcGFyZW50VHlwZVN0YWNrW3RoaXMuX3BhcmVudFR5cGVTdGFjay5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH1cblxuICBnZXRJbnB1dFR5cGUoKSB7XG4gICAgaWYgKHRoaXMuX2lucHV0VHlwZVN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnB1dFR5cGVTdGFja1t0aGlzLl9pbnB1dFR5cGVTdGFjay5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH1cblxuICBnZXRQYXJlbnRJbnB1dFR5cGUoKSB7XG4gICAgaWYgKHRoaXMuX2lucHV0VHlwZVN0YWNrLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnB1dFR5cGVTdGFja1t0aGlzLl9pbnB1dFR5cGVTdGFjay5sZW5ndGggLSAyXTtcbiAgICB9XG4gIH1cblxuICBnZXRGaWVsZERlZigpIHtcbiAgICBpZiAodGhpcy5fZmllbGREZWZTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmllbGREZWZTdGFja1t0aGlzLl9maWVsZERlZlN0YWNrLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgfVxuXG4gIGdldERlZmF1bHRWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5fZGVmYXVsdFZhbHVlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZVN0YWNrW3RoaXMuX2RlZmF1bHRWYWx1ZVN0YWNrLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgfVxuXG4gIGdldERpcmVjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlyZWN0aXZlO1xuICB9XG5cbiAgZ2V0QXJndW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FyZ3VtZW50O1xuICB9XG5cbiAgZ2V0RW51bVZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9lbnVtVmFsdWU7XG4gIH1cblxuICBlbnRlcihub2RlKSB7XG4gICAgY29uc3Qgc2NoZW1hID0gdGhpcy5fc2NoZW1hOyAvLyBOb3RlOiBtYW55IG9mIHRoZSB0eXBlcyBiZWxvdyBhcmUgZXhwbGljaXRseSB0eXBlZCBhcyBcInVua25vd25cIiB0byBkcm9wXG4gICAgLy8gYW55IGFzc3VtcHRpb25zIG9mIGEgdmFsaWQgc2NoZW1hIHRvIGVuc3VyZSBydW50aW1lIHR5cGVzIGFyZSBwcm9wZXJseVxuICAgIC8vIGNoZWNrZWQgYmVmb3JlIGNvbnRpbnVpbmcgc2luY2UgVHlwZUluZm8gaXMgdXNlZCBhcyBwYXJ0IG9mIHZhbGlkYXRpb25cbiAgICAvLyB3aGljaCBvY2N1cnMgYmVmb3JlIGd1YXJhbnRlZXMgb2Ygc2NoZW1hIGFuZCBkb2N1bWVudCB2YWxpZGl0eS5cblxuICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICBjYXNlIEtpbmQuU0VMRUNUSU9OX1NFVDoge1xuICAgICAgICBjb25zdCBuYW1lZFR5cGUgPSBnZXROYW1lZFR5cGUodGhpcy5nZXRUeXBlKCkpO1xuXG4gICAgICAgIHRoaXMuX3BhcmVudFR5cGVTdGFjay5wdXNoKFxuICAgICAgICAgIGlzQ29tcG9zaXRlVHlwZShuYW1lZFR5cGUpID8gbmFtZWRUeXBlIDogdW5kZWZpbmVkLFxuICAgICAgICApO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuRklFTEQ6IHtcbiAgICAgICAgY29uc3QgcGFyZW50VHlwZSA9IHRoaXMuZ2V0UGFyZW50VHlwZSgpO1xuICAgICAgICBsZXQgZmllbGREZWY7XG4gICAgICAgIGxldCBmaWVsZFR5cGU7XG5cbiAgICAgICAgaWYgKHBhcmVudFR5cGUpIHtcbiAgICAgICAgICBmaWVsZERlZiA9IHRoaXMuX2dldEZpZWxkRGVmKHNjaGVtYSwgcGFyZW50VHlwZSwgbm9kZSk7XG5cbiAgICAgICAgICBpZiAoZmllbGREZWYpIHtcbiAgICAgICAgICAgIGZpZWxkVHlwZSA9IGZpZWxkRGVmLnR5cGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZmllbGREZWZTdGFjay5wdXNoKGZpZWxkRGVmKTtcblxuICAgICAgICB0aGlzLl90eXBlU3RhY2sucHVzaChpc091dHB1dFR5cGUoZmllbGRUeXBlKSA/IGZpZWxkVHlwZSA6IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5ESVJFQ1RJVkU6XG4gICAgICAgIHRoaXMuX2RpcmVjdGl2ZSA9IHNjaGVtYS5nZXREaXJlY3RpdmUobm9kZS5uYW1lLnZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5PUEVSQVRJT05fREVGSU5JVElPTjoge1xuICAgICAgICBjb25zdCByb290VHlwZSA9IHNjaGVtYS5nZXRSb290VHlwZShub2RlLm9wZXJhdGlvbik7XG5cbiAgICAgICAgdGhpcy5fdHlwZVN0YWNrLnB1c2goaXNPYmplY3RUeXBlKHJvb3RUeXBlKSA/IHJvb3RUeXBlIDogdW5kZWZpbmVkKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBLaW5kLklOTElORV9GUkFHTUVOVDpcbiAgICAgIGNhc2UgS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OOiB7XG4gICAgICAgIGNvbnN0IHR5cGVDb25kaXRpb25BU1QgPSBub2RlLnR5cGVDb25kaXRpb247XG4gICAgICAgIGNvbnN0IG91dHB1dFR5cGUgPSB0eXBlQ29uZGl0aW9uQVNUXG4gICAgICAgICAgPyB0eXBlRnJvbUFTVChzY2hlbWEsIHR5cGVDb25kaXRpb25BU1QpXG4gICAgICAgICAgOiBnZXROYW1lZFR5cGUodGhpcy5nZXRUeXBlKCkpO1xuXG4gICAgICAgIHRoaXMuX3R5cGVTdGFjay5wdXNoKGlzT3V0cHV0VHlwZShvdXRwdXRUeXBlKSA/IG91dHB1dFR5cGUgOiB1bmRlZmluZWQpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuVkFSSUFCTEVfREVGSU5JVElPTjoge1xuICAgICAgICBjb25zdCBpbnB1dFR5cGUgPSB0eXBlRnJvbUFTVChzY2hlbWEsIG5vZGUudHlwZSk7XG5cbiAgICAgICAgdGhpcy5faW5wdXRUeXBlU3RhY2sucHVzaChcbiAgICAgICAgICBpc0lucHV0VHlwZShpbnB1dFR5cGUpID8gaW5wdXRUeXBlIDogdW5kZWZpbmVkLFxuICAgICAgICApO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuQVJHVU1FTlQ6IHtcbiAgICAgICAgdmFyIF90aGlzJGdldERpcmVjdGl2ZTtcblxuICAgICAgICBsZXQgYXJnRGVmO1xuICAgICAgICBsZXQgYXJnVHlwZTtcbiAgICAgICAgY29uc3QgZmllbGRPckRpcmVjdGl2ZSA9XG4gICAgICAgICAgKF90aGlzJGdldERpcmVjdGl2ZSA9IHRoaXMuZ2V0RGlyZWN0aXZlKCkpICE9PSBudWxsICYmXG4gICAgICAgICAgX3RoaXMkZ2V0RGlyZWN0aXZlICE9PSB2b2lkIDBcbiAgICAgICAgICAgID8gX3RoaXMkZ2V0RGlyZWN0aXZlXG4gICAgICAgICAgICA6IHRoaXMuZ2V0RmllbGREZWYoKTtcblxuICAgICAgICBpZiAoZmllbGRPckRpcmVjdGl2ZSkge1xuICAgICAgICAgIGFyZ0RlZiA9IGZpZWxkT3JEaXJlY3RpdmUuYXJncy5maW5kKFxuICAgICAgICAgICAgKGFyZykgPT4gYXJnLm5hbWUgPT09IG5vZGUubmFtZS52YWx1ZSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGFyZ0RlZikge1xuICAgICAgICAgICAgYXJnVHlwZSA9IGFyZ0RlZi50eXBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2FyZ3VtZW50ID0gYXJnRGVmO1xuXG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZVN0YWNrLnB1c2goYXJnRGVmID8gYXJnRGVmLmRlZmF1bHRWYWx1ZSA6IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgdGhpcy5faW5wdXRUeXBlU3RhY2sucHVzaChpc0lucHV0VHlwZShhcmdUeXBlKSA/IGFyZ1R5cGUgOiB1bmRlZmluZWQpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuTElTVDoge1xuICAgICAgICBjb25zdCBsaXN0VHlwZSA9IGdldE51bGxhYmxlVHlwZSh0aGlzLmdldElucHV0VHlwZSgpKTtcbiAgICAgICAgY29uc3QgaXRlbVR5cGUgPSBpc0xpc3RUeXBlKGxpc3RUeXBlKSA/IGxpc3RUeXBlLm9mVHlwZSA6IGxpc3RUeXBlOyAvLyBMaXN0IHBvc2l0aW9ucyBuZXZlciBoYXZlIGEgZGVmYXVsdCB2YWx1ZS5cblxuICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWVTdGFjay5wdXNoKHVuZGVmaW5lZCk7XG5cbiAgICAgICAgdGhpcy5faW5wdXRUeXBlU3RhY2sucHVzaChpc0lucHV0VHlwZShpdGVtVHlwZSkgPyBpdGVtVHlwZSA6IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5PQkpFQ1RfRklFTEQ6IHtcbiAgICAgICAgY29uc3Qgb2JqZWN0VHlwZSA9IGdldE5hbWVkVHlwZSh0aGlzLmdldElucHV0VHlwZSgpKTtcbiAgICAgICAgbGV0IGlucHV0RmllbGRUeXBlO1xuICAgICAgICBsZXQgaW5wdXRGaWVsZDtcblxuICAgICAgICBpZiAoaXNJbnB1dE9iamVjdFR5cGUob2JqZWN0VHlwZSkpIHtcbiAgICAgICAgICBpbnB1dEZpZWxkID0gb2JqZWN0VHlwZS5nZXRGaWVsZHMoKVtub2RlLm5hbWUudmFsdWVdO1xuXG4gICAgICAgICAgaWYgKGlucHV0RmllbGQpIHtcbiAgICAgICAgICAgIGlucHV0RmllbGRUeXBlID0gaW5wdXRGaWVsZC50eXBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZVN0YWNrLnB1c2goXG4gICAgICAgICAgaW5wdXRGaWVsZCA/IGlucHV0RmllbGQuZGVmYXVsdFZhbHVlIDogdW5kZWZpbmVkLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2lucHV0VHlwZVN0YWNrLnB1c2goXG4gICAgICAgICAgaXNJbnB1dFR5cGUoaW5wdXRGaWVsZFR5cGUpID8gaW5wdXRGaWVsZFR5cGUgOiB1bmRlZmluZWQsXG4gICAgICAgICk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5FTlVNOiB7XG4gICAgICAgIGNvbnN0IGVudW1UeXBlID0gZ2V0TmFtZWRUeXBlKHRoaXMuZ2V0SW5wdXRUeXBlKCkpO1xuICAgICAgICBsZXQgZW51bVZhbHVlO1xuXG4gICAgICAgIGlmIChpc0VudW1UeXBlKGVudW1UeXBlKSkge1xuICAgICAgICAgIGVudW1WYWx1ZSA9IGVudW1UeXBlLmdldFZhbHVlKG5vZGUudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZW51bVZhbHVlID0gZW51bVZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDogLy8gSWdub3JlIG90aGVyIG5vZGVzXG4gICAgfVxuICB9XG5cbiAgbGVhdmUobm9kZSkge1xuICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICBjYXNlIEtpbmQuU0VMRUNUSU9OX1NFVDpcbiAgICAgICAgdGhpcy5fcGFyZW50VHlwZVN0YWNrLnBvcCgpO1xuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEtpbmQuRklFTEQ6XG4gICAgICAgIHRoaXMuX2ZpZWxkRGVmU3RhY2sucG9wKCk7XG5cbiAgICAgICAgdGhpcy5fdHlwZVN0YWNrLnBvcCgpO1xuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEtpbmQuRElSRUNUSVZFOlxuICAgICAgICB0aGlzLl9kaXJlY3RpdmUgPSBudWxsO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OOlxuICAgICAgY2FzZSBLaW5kLklOTElORV9GUkFHTUVOVDpcbiAgICAgIGNhc2UgS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OOlxuICAgICAgICB0aGlzLl90eXBlU3RhY2sucG9wKCk7XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5WQVJJQUJMRV9ERUZJTklUSU9OOlxuICAgICAgICB0aGlzLl9pbnB1dFR5cGVTdGFjay5wb3AoKTtcblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBLaW5kLkFSR1VNRU5UOlxuICAgICAgICB0aGlzLl9hcmd1bWVudCA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlU3RhY2sucG9wKCk7XG5cbiAgICAgICAgdGhpcy5faW5wdXRUeXBlU3RhY2sucG9wKCk7XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5MSVNUOlxuICAgICAgY2FzZSBLaW5kLk9CSkVDVF9GSUVMRDpcbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlU3RhY2sucG9wKCk7XG5cbiAgICAgICAgdGhpcy5faW5wdXRUeXBlU3RhY2sucG9wKCk7XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5FTlVNOlxuICAgICAgICB0aGlzLl9lbnVtVmFsdWUgPSBudWxsO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDogLy8gSWdub3JlIG90aGVyIG5vZGVzXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogTm90IGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIGV4ZWN1dG9yJ3MgZGVmaW5pdGlvbiBvZiBnZXRGaWVsZERlZiwgaW4gdGhpc1xuICogc3RhdGljYWxseSBldmFsdWF0ZWQgZW52aXJvbm1lbnQgd2UgZG8gbm90IGFsd2F5cyBoYXZlIGFuIE9iamVjdCB0eXBlLFxuICogYW5kIG5lZWQgdG8gaGFuZGxlIEludGVyZmFjZSBhbmQgVW5pb24gdHlwZXMuXG4gKi9cbmZ1bmN0aW9uIGdldEZpZWxkRGVmKHNjaGVtYSwgcGFyZW50VHlwZSwgZmllbGROb2RlKSB7XG4gIGNvbnN0IG5hbWUgPSBmaWVsZE5vZGUubmFtZS52YWx1ZTtcblxuICBpZiAoXG4gICAgbmFtZSA9PT0gU2NoZW1hTWV0YUZpZWxkRGVmLm5hbWUgJiZcbiAgICBzY2hlbWEuZ2V0UXVlcnlUeXBlKCkgPT09IHBhcmVudFR5cGVcbiAgKSB7XG4gICAgcmV0dXJuIFNjaGVtYU1ldGFGaWVsZERlZjtcbiAgfVxuXG4gIGlmIChuYW1lID09PSBUeXBlTWV0YUZpZWxkRGVmLm5hbWUgJiYgc2NoZW1hLmdldFF1ZXJ5VHlwZSgpID09PSBwYXJlbnRUeXBlKSB7XG4gICAgcmV0dXJuIFR5cGVNZXRhRmllbGREZWY7XG4gIH1cblxuICBpZiAobmFtZSA9PT0gVHlwZU5hbWVNZXRhRmllbGREZWYubmFtZSAmJiBpc0NvbXBvc2l0ZVR5cGUocGFyZW50VHlwZSkpIHtcbiAgICByZXR1cm4gVHlwZU5hbWVNZXRhRmllbGREZWY7XG4gIH1cblxuICBpZiAoaXNPYmplY3RUeXBlKHBhcmVudFR5cGUpIHx8IGlzSW50ZXJmYWNlVHlwZShwYXJlbnRUeXBlKSkge1xuICAgIHJldHVybiBwYXJlbnRUeXBlLmdldEZpZWxkcygpW25hbWVdO1xuICB9XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgdmlzaXRvciBpbnN0YW5jZSB3aGljaCBtYWludGFpbnMgYSBwcm92aWRlZCBUeXBlSW5mbyBpbnN0YW5jZVxuICogYWxvbmcgd2l0aCB2aXNpdGluZyB2aXNpdG9yLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdFdpdGhUeXBlSW5mbyh0eXBlSW5mbywgdmlzaXRvcikge1xuICByZXR1cm4ge1xuICAgIGVudGVyKC4uLmFyZ3MpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBhcmdzWzBdO1xuICAgICAgdHlwZUluZm8uZW50ZXIobm9kZSk7XG4gICAgICBjb25zdCBmbiA9IGdldEVudGVyTGVhdmVGb3JLaW5kKHZpc2l0b3IsIG5vZGUua2luZCkuZW50ZXI7XG5cbiAgICAgIGlmIChmbikge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmbi5hcHBseSh2aXNpdG9yLCBhcmdzKTtcblxuICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0eXBlSW5mby5sZWF2ZShub2RlKTtcblxuICAgICAgICAgIGlmIChpc05vZGUocmVzdWx0KSkge1xuICAgICAgICAgICAgdHlwZUluZm8uZW50ZXIocmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBsZWF2ZSguLi5hcmdzKSB7XG4gICAgICBjb25zdCBub2RlID0gYXJnc1swXTtcbiAgICAgIGNvbnN0IGZuID0gZ2V0RW50ZXJMZWF2ZUZvcktpbmQodmlzaXRvciwgbm9kZS5raW5kKS5sZWF2ZTtcbiAgICAgIGxldCByZXN1bHQ7XG5cbiAgICAgIGlmIChmbikge1xuICAgICAgICByZXN1bHQgPSBmbi5hcHBseSh2aXNpdG9yLCBhcmdzKTtcbiAgICAgIH1cblxuICAgICAgdHlwZUluZm8ubGVhdmUobm9kZSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQVlBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/TypeInfo.mjs\n");
|
901 |
|
902 | }),
|
903 |
|
904 | "../../../node_modules/graphql/utilities/assertValidName.mjs":
|
905 |
|
906 |
|
907 |
|
908 |
|
909 | (function(module, __webpack_exports__, __webpack_require__) {
|
910 |
|
911 | "use strict";
|
912 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertValidName\", function() { return assertValidName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValidNameError\", function() { return isValidNameError; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_assertName_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../type/assertName.mjs */ \"../../../node_modules/graphql/type/assertName.mjs\");\n\n\n\n/* c8 ignore start */\n\n/**\n * Upholds the spec rules about naming.\n * @deprecated Please use `assertName` instead. Will be removed in v17\n */\n\nfunction assertValidName(name) {\n const error = isValidNameError(name);\n\n if (error) {\n throw error;\n }\n\n return name;\n}\n/**\n * Returns an Error if a name is invalid.\n * @deprecated Please use `assertName` instead. Will be removed in v17\n */\n\nfunction isValidNameError(name) {\n typeof name === 'string' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(false, 'Expected name to be a string.');\n\n if (name.startsWith('__')) {\n return new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `Name \"${name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n );\n }\n\n try {\n Object(_type_assertName_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertName\"])(name);\n } catch (error) {\n return error;\n }\n}\n/* c8 ignore stop */\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2Fzc2VydFZhbGlkTmFtZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvYXNzZXJ0VmFsaWROYW1lLm1qcz83OWZhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRldkFzc2VydCB9IGZyb20gJy4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7IGFzc2VydE5hbWUgfSBmcm9tICcuLi90eXBlL2Fzc2VydE5hbWUubWpzJztcbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuXG4vKipcbiAqIFVwaG9sZHMgdGhlIHNwZWMgcnVsZXMgYWJvdXQgbmFtaW5nLlxuICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgYXNzZXJ0TmFtZWAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxN1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRWYWxpZE5hbWUobmFtZSkge1xuICBjb25zdCBlcnJvciA9IGlzVmFsaWROYW1lRXJyb3IobmFtZSk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICByZXR1cm4gbmFtZTtcbn1cbi8qKlxuICogUmV0dXJucyBhbiBFcnJvciBpZiBhIG5hbWUgaXMgaW52YWxpZC5cbiAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYGFzc2VydE5hbWVgIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTdcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE5hbWVFcnJvcihuYW1lKSB7XG4gIHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyB8fCBkZXZBc3NlcnQoZmFsc2UsICdFeHBlY3RlZCBuYW1lIHRvIGJlIGEgc3RyaW5nLicpO1xuXG4gIGlmIChuYW1lLnN0YXJ0c1dpdGgoJ19fJykpIHtcbiAgICByZXR1cm4gbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgIGBOYW1lIFwiJHtuYW1lfVwiIG11c3Qgbm90IGJlZ2luIHdpdGggXCJfX1wiLCB3aGljaCBpcyByZXNlcnZlZCBieSBHcmFwaFFMIGludHJvc3BlY3Rpb24uYCxcbiAgICApO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhc3NlcnROYW1lKG5hbWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBlcnJvcjtcbiAgfVxufVxuLyogYzggaWdub3JlIHN0b3AgKi9cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/assertValidName.mjs\n");
|
913 |
|
914 | }),
|
915 |
|
916 | "../../../node_modules/graphql/utilities/astFromValue.mjs":
|
917 |
|
918 |
|
919 |
|
920 |
|
921 | (function(module, __webpack_exports__, __webpack_require__) {
|
922 |
|
923 | "use strict";
|
924 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"astFromValue\", function() { return astFromValue; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_isIterableObject_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/isIterableObject.mjs */ \"../../../node_modules/graphql/jsutils/isIterableObject.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n\n\n\n\n\n\n\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using suggested GraphQLInputType. For example:\n *\n * astFromValue(\"value\", GraphQLString)\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * JavaScript values.\n *\n * | JSON Value | GraphQL Value |\n * | ------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String / Enum Value |\n * | Number | Int / Float |\n * | Unknown | Enum Value |\n * | null | NullValue |\n *\n */\n\nfunction astFromValue(value, type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isNonNullType\"])(type)) {\n const astValue = astFromValue(value, type.ofType);\n\n if (\n (astValue === null || astValue === void 0 ? void 0 : astValue.kind) ===\n _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].NULL\n ) {\n return null;\n }\n\n return astValue;\n } // only explicit null, not undefined, NaN\n\n if (value === null) {\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].NULL,\n };\n } // undefined\n\n if (value === undefined) {\n return null;\n } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n // the value is not an array, convert the value using the list's item type.\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isListType\"])(type)) {\n const itemType = type.ofType;\n\n if (Object(_jsutils_isIterableObject_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isIterableObject\"])(value)) {\n const valuesNodes = [];\n\n for (const item of value) {\n const itemNode = astFromValue(item, itemType);\n\n if (itemNode != null) {\n valuesNodes.push(itemNode);\n }\n }\n\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].LIST,\n values: valuesNodes,\n };\n }\n\n return astFromValue(value, itemType);\n } // Populate the fields of the input object by creating ASTs from each value\n // in the JavaScript object according to the fields in the input type.\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isInputObjectType\"])(type)) {\n if (!Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isObjectLike\"])(value)) {\n return null;\n }\n\n const fieldNodes = [];\n\n for (const field of Object.values(type.getFields())) {\n const fieldValue = astFromValue(value[field.name], field.type);\n\n if (fieldValue) {\n fieldNodes.push({\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].OBJECT_FIELD,\n name: {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].NAME,\n value: field.name,\n },\n value: fieldValue,\n });\n }\n }\n\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].OBJECT,\n fields: fieldNodes,\n };\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isLeafType\"])(type)) {\n // Since value is an internally represented value, it must be serialized\n // to an externally represented value before converting into an AST.\n const serialized = type.serialize(value);\n\n if (serialized == null) {\n return null;\n } // Others serialize based on their corresponding JavaScript scalar types.\n\n if (typeof serialized === 'boolean') {\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].BOOLEAN,\n value: serialized,\n };\n } // JavaScript numbers can be Int or Float values.\n\n if (typeof serialized === 'number' && Number.isFinite(serialized)) {\n const stringNum = String(serialized);\n return integerStringRegExp.test(stringNum)\n ? {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].INT,\n value: stringNum,\n }\n : {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].FLOAT,\n value: stringNum,\n };\n }\n\n if (typeof serialized === 'string') {\n // Enum types use Enum literals.\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isEnumType\"])(type)) {\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].ENUM,\n value: serialized,\n };\n } // ID types can use Int literals.\n\n if (type === _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLID\"] && integerStringRegExp.test(serialized)) {\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].INT,\n value: serialized,\n };\n }\n\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].STRING,\n value: serialized,\n };\n }\n\n throw new TypeError(`Cannot convert value to AST: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(serialized)}.`);\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"invariant\"])(false, 'Unexpected input type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(type));\n}\n/**\n * IntValue:\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit ( Digit+ )?\n */\n\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2FzdEZyb21WYWx1ZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvYXN0RnJvbVZhbHVlLm1qcz8yODQxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJy4uL2pzdXRpbHMvaW52YXJpYW50Lm1qcyc7XG5pbXBvcnQgeyBpc0l0ZXJhYmxlT2JqZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pc0l0ZXJhYmxlT2JqZWN0Lm1qcyc7XG5pbXBvcnQgeyBpc09iamVjdExpa2UgfSBmcm9tICcuLi9qc3V0aWxzL2lzT2JqZWN0TGlrZS5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQge1xuICBpc0VudW1UeXBlLFxuICBpc0lucHV0T2JqZWN0VHlwZSxcbiAgaXNMZWFmVHlwZSxcbiAgaXNMaXN0VHlwZSxcbiAgaXNOb25OdWxsVHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMSUQgfSBmcm9tICcuLi90eXBlL3NjYWxhcnMubWpzJztcbi8qKlxuICogUHJvZHVjZXMgYSBHcmFwaFFMIFZhbHVlIEFTVCBnaXZlbiBhIEphdmFTY3JpcHQgb2JqZWN0LlxuICogRnVuY3Rpb24gd2lsbCBtYXRjaCBKYXZhU2NyaXB0L0pTT04gdmFsdWVzIHRvIEdyYXBoUUwgQVNUIHNjaGVtYSBmb3JtYXRcbiAqIGJ5IHVzaW5nIHN1Z2dlc3RlZCBHcmFwaFFMSW5wdXRUeXBlLiBGb3IgZXhhbXBsZTpcbiAqXG4gKiAgICAgYXN0RnJvbVZhbHVlKFwidmFsdWVcIiwgR3JhcGhRTFN0cmluZylcbiAqXG4gKiBBIEdyYXBoUUwgdHlwZSBtdXN0IGJlIHByb3ZpZGVkLCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gaW50ZXJwcmV0IGRpZmZlcmVudFxuICogSmF2YVNjcmlwdCB2YWx1ZXMuXG4gKlxuICogfCBKU09OIFZhbHVlICAgIHwgR3JhcGhRTCBWYWx1ZSAgICAgICAgfFxuICogfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICogfCBPYmplY3QgICAgICAgIHwgSW5wdXQgT2JqZWN0ICAgICAgICAgfFxuICogfCBBcnJheSAgICAgICAgIHwgTGlzdCAgICAgICAgICAgICAgICAgfFxuICogfCBCb29sZWFuICAgICAgIHwgQm9vbGVhbiAgICAgICAgICAgICAgfFxuICogfCBTdHJpbmcgICAgICAgIHwgU3RyaW5nIC8gRW51bSBWYWx1ZSAgfFxuICogfCBOdW1iZXIgICAgICAgIHwgSW50IC8gRmxvYXQgICAgICAgICAgfFxuICogfCBVbmtub3duICAgICAgIHwgRW51bSBWYWx1ZSAgICAgICAgICAgfFxuICogfCBudWxsICAgICAgICAgIHwgTnVsbFZhbHVlICAgICAgICAgICAgfFxuICpcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXN0RnJvbVZhbHVlKHZhbHVlLCB0eXBlKSB7XG4gIGlmIChpc05vbk51bGxUeXBlKHR5cGUpKSB7XG4gICAgY29uc3QgYXN0VmFsdWUgPSBhc3RGcm9tVmFsdWUodmFsdWUsIHR5cGUub2ZUeXBlKTtcblxuICAgIGlmIChcbiAgICAgIChhc3RWYWx1ZSA9PT0gbnVsbCB8fCBhc3RWYWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXN0VmFsdWUua2luZCkgPT09XG4gICAgICBLaW5kLk5VTExcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBhc3RWYWx1ZTtcbiAgfSAvLyBvbmx5IGV4cGxpY2l0IG51bGwsIG5vdCB1bmRlZmluZWQsIE5hTlxuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLk5VTEwsXG4gICAgfTtcbiAgfSAvLyB1bmRlZmluZWRcblxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9IC8vIENvbnZlcnQgSmF2YVNjcmlwdCBhcnJheSB0byBHcmFwaFFMIGxpc3QuIElmIHRoZSBHcmFwaFFMVHlwZSBpcyBhIGxpc3QsIGJ1dFxuICAvLyB0aGUgdmFsdWUgaXMgbm90IGFuIGFycmF5LCBjb252ZXJ0IHRoZSB2YWx1ZSB1c2luZyB0aGUgbGlzdCdzIGl0ZW0gdHlwZS5cblxuICBpZiAoaXNMaXN0VHlwZSh0eXBlKSkge1xuICAgIGNvbnN0IGl0ZW1UeXBlID0gdHlwZS5vZlR5cGU7XG5cbiAgICBpZiAoaXNJdGVyYWJsZU9iamVjdCh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHZhbHVlc05vZGVzID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB2YWx1ZSkge1xuICAgICAgICBjb25zdCBpdGVtTm9kZSA9IGFzdEZyb21WYWx1ZShpdGVtLCBpdGVtVHlwZSk7XG5cbiAgICAgICAgaWYgKGl0ZW1Ob2RlICE9IG51bGwpIHtcbiAgICAgICAgICB2YWx1ZXNOb2Rlcy5wdXNoKGl0ZW1Ob2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiBLaW5kLkxJU1QsXG4gICAgICAgIHZhbHVlczogdmFsdWVzTm9kZXMsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBhc3RGcm9tVmFsdWUodmFsdWUsIGl0ZW1UeXBlKTtcbiAgfSAvLyBQb3B1bGF0ZSB0aGUgZmllbGRzIG9mIHRoZSBpbnB1dCBvYmplY3QgYnkgY3JlYXRpbmcgQVNUcyBmcm9tIGVhY2ggdmFsdWVcbiAgLy8gaW4gdGhlIEphdmFTY3JpcHQgb2JqZWN0IGFjY29yZGluZyB0byB0aGUgZmllbGRzIGluIHRoZSBpbnB1dCB0eXBlLlxuXG4gIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGROb2RlcyA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBPYmplY3QudmFsdWVzKHR5cGUuZ2V0RmllbGRzKCkpKSB7XG4gICAgICBjb25zdCBmaWVsZFZhbHVlID0gYXN0RnJvbVZhbHVlKHZhbHVlW2ZpZWxkLm5hbWVdLCBmaWVsZC50eXBlKTtcblxuICAgICAgaWYgKGZpZWxkVmFsdWUpIHtcbiAgICAgICAgZmllbGROb2Rlcy5wdXNoKHtcbiAgICAgICAgICBraW5kOiBLaW5kLk9CSkVDVF9GSUVMRCxcbiAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICBraW5kOiBLaW5kLk5BTUUsXG4gICAgICAgICAgICB2YWx1ZTogZmllbGQubmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZhbHVlOiBmaWVsZFZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAga2luZDogS2luZC5PQkpFQ1QsXG4gICAgICBmaWVsZHM6IGZpZWxkTm9kZXMsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChpc0xlYWZUeXBlKHR5cGUpKSB7XG4gICAgLy8gU2luY2UgdmFsdWUgaXMgYW4gaW50ZXJuYWxseSByZXByZXNlbnRlZCB2YWx1ZSwgaXQgbXVzdCBiZSBzZXJpYWxpemVkXG4gICAgLy8gdG8gYW4gZXh0ZXJuYWxseSByZXByZXNlbnRlZCB2YWx1ZSBiZWZvcmUgY29udmVydGluZyBpbnRvIGFuIEFTVC5cbiAgICBjb25zdCBzZXJpYWxpemVkID0gdHlwZS5zZXJpYWxpemUodmFsdWUpO1xuXG4gICAgaWYgKHNlcmlhbGl6ZWQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSAvLyBPdGhlcnMgc2VyaWFsaXplIGJhc2VkIG9uIHRoZWlyIGNvcnJlc3BvbmRpbmcgSmF2YVNjcmlwdCBzY2FsYXIgdHlwZXMuXG5cbiAgICBpZiAodHlwZW9mIHNlcmlhbGl6ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogS2luZC5CT09MRUFOLFxuICAgICAgICB2YWx1ZTogc2VyaWFsaXplZCxcbiAgICAgIH07XG4gICAgfSAvLyBKYXZhU2NyaXB0IG51bWJlcnMgY2FuIGJlIEludCBvciBGbG9hdCB2YWx1ZXMuXG5cbiAgICBpZiAodHlwZW9mIHNlcmlhbGl6ZWQgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZShzZXJpYWxpemVkKSkge1xuICAgICAgY29uc3Qgc3RyaW5nTnVtID0gU3RyaW5nKHNlcmlhbGl6ZWQpO1xuICAgICAgcmV0dXJuIGludGVnZXJTdHJpbmdSZWdFeHAudGVzdChzdHJpbmdOdW0pXG4gICAgICAgID8ge1xuICAgICAgICAgICAga2luZDogS2luZC5JTlQsXG4gICAgICAgICAgICB2YWx1ZTogc3RyaW5nTnVtLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICBraW5kOiBLaW5kLkZMT0FULFxuICAgICAgICAgICAgdmFsdWU6IHN0cmluZ051bSxcbiAgICAgICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIEVudW0gdHlwZXMgdXNlIEVudW0gbGl0ZXJhbHMuXG4gICAgICBpZiAoaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtpbmQ6IEtpbmQuRU5VTSxcbiAgICAgICAgICB2YWx1ZTogc2VyaWFsaXplZCxcbiAgICAgICAgfTtcbiAgICAgIH0gLy8gSUQgdHlwZXMgY2FuIHVzZSBJbnQgbGl0ZXJhbHMuXG5cbiAgICAgIGlmICh0eXBlID09PSBHcmFwaFFMSUQgJiYgaW50ZWdlclN0cmluZ1JlZ0V4cC50ZXN0KHNlcmlhbGl6ZWQpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2luZDogS2luZC5JTlQsXG4gICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZWQsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6IEtpbmQuU1RSSU5HLFxuICAgICAgICB2YWx1ZTogc2VyaWFsaXplZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IGNvbnZlcnQgdmFsdWUgdG8gQVNUOiAke2luc3BlY3Qoc2VyaWFsaXplZCl9LmApO1xuICB9XG4gIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgLy8gTm90IHJlYWNoYWJsZSwgYWxsIHBvc3NpYmxlIHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkLlxuXG4gIGZhbHNlIHx8IGludmFyaWFudChmYWxzZSwgJ1VuZXhwZWN0ZWQgaW5wdXQgdHlwZTogJyArIGluc3BlY3QodHlwZSkpO1xufVxuLyoqXG4gKiBJbnRWYWx1ZTpcbiAqICAgLSBOZWdhdGl2ZVNpZ24/IDBcbiAqICAgLSBOZWdhdGl2ZVNpZ24/IE5vblplcm9EaWdpdCAoIERpZ2l0KyApP1xuICovXG5cbmNvbnN0IGludGVnZXJTdHJpbmdSZWdFeHAgPSAvXi0/KD86MHxbMS05XVswLTldKikkLztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/astFromValue.mjs\n");
|
925 |
|
926 | }),
|
927 |
|
928 | "../../../node_modules/graphql/utilities/buildASTSchema.mjs":
|
929 |
|
930 |
|
931 |
|
932 |
|
933 | (function(module, __webpack_exports__, __webpack_require__) {
|
934 |
|
935 | "use strict";
|
936 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildASTSchema\", function() { return buildASTSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildSchema\", function() { return buildSchema; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_parser_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/parser.mjs */ \"../../../node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_schema_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n/* harmony import */ var _validation_validate_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../validation/validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n/* harmony import */ var _extendSchema_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./extendSchema.mjs */ \"../../../node_modules/graphql/utilities/extendSchema.mjs\");\n\n\n\n\n\n\n\n\n/**\n * This takes the ast of a schema document produced by the parse function in\n * src/language/parser.js.\n *\n * If no schema definition is provided, then it will look for types named Query,\n * Mutation and Subscription.\n *\n * Given that AST it constructs a GraphQLSchema. The resulting schema\n * has no resolve methods, so execution will use default resolvers.\n */\nfunction buildASTSchema(documentAST, options) {\n (documentAST != null && documentAST.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].DOCUMENT) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(false, 'Must provide valid Document AST.');\n\n if (\n (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n true &&\n (options === null || options === void 0\n ? void 0\n : options.assumeValidSDL) !== true\n ) {\n Object(_validation_validate_mjs__WEBPACK_IMPORTED_MODULE_5__[\"assertValidSDL\"])(documentAST);\n }\n\n const emptySchemaConfig = {\n description: undefined,\n types: [],\n directives: [],\n extensions: Object.create(null),\n extensionASTNodes: [],\n assumeValid: false,\n };\n const config = Object(_extendSchema_mjs__WEBPACK_IMPORTED_MODULE_6__[\"extendSchemaImpl\"])(emptySchemaConfig, documentAST, options);\n\n if (config.astNode == null) {\n for (const type of config.types) {\n switch (type.name) {\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n case 'Query':\n // @ts-expect-error validated in `validateSchema`\n config.query = type;\n break;\n\n case 'Mutation':\n // @ts-expect-error validated in `validateSchema`\n config.mutation = type;\n break;\n\n case 'Subscription':\n // @ts-expect-error validated in `validateSchema`\n config.subscription = type;\n break;\n }\n }\n }\n\n const directives = [\n ...config.directives, // If specified directives were not explicitly declared, add them.\n ..._type_directives_mjs__WEBPACK_IMPORTED_MODULE_3__[\"specifiedDirectives\"].filter((stdDirective) =>\n config.directives.every(\n (directive) => directive.name !== stdDirective.name,\n ),\n ),\n ];\n return new _type_schema_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLSchema\"]({ ...config, directives });\n}\n/**\n * A helper function to build a GraphQLSchema directly from a source\n * document.\n */\n\nfunction buildSchema(source, options) {\n const document = Object(_language_parser_mjs__WEBPACK_IMPORTED_MODULE_2__[\"parse\"])(source, {\n noLocation:\n options === null || options === void 0 ? void 0 : options.noLocation,\n allowLegacyFragmentVariables:\n options === null || options === void 0\n ? void 0\n : options.allowLegacyFragmentVariables,\n });\n return buildASTSchema(document, {\n assumeValidSDL:\n options === null || options === void 0 ? void 0 : options.assumeValidSDL,\n assumeValid:\n options === null || options === void 0 ? void 0 : options.assumeValid,\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2J1aWxkQVNUU2NoZW1hLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9idWlsZEFTVFNjaGVtYS5tanM/NjVlNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXZBc3NlcnQgfSBmcm9tICcuLi9qc3V0aWxzL2RldkFzc2VydC5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJy4uL2xhbmd1YWdlL3BhcnNlci5tanMnO1xuaW1wb3J0IHsgc3BlY2lmaWVkRGlyZWN0aXZlcyB9IGZyb20gJy4uL3R5cGUvZGlyZWN0aXZlcy5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTFNjaGVtYSB9IGZyb20gJy4uL3R5cGUvc2NoZW1hLm1qcyc7XG5pbXBvcnQgeyBhc3NlcnRWYWxpZFNETCB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGUubWpzJztcbmltcG9ydCB7IGV4dGVuZFNjaGVtYUltcGwgfSBmcm9tICcuL2V4dGVuZFNjaGVtYS5tanMnO1xuXG4vKipcbiAqIFRoaXMgdGFrZXMgdGhlIGFzdCBvZiBhIHNjaGVtYSBkb2N1bWVudCBwcm9kdWNlZCBieSB0aGUgcGFyc2UgZnVuY3Rpb24gaW5cbiAqIHNyYy9sYW5ndWFnZS9wYXJzZXIuanMuXG4gKlxuICogSWYgbm8gc2NoZW1hIGRlZmluaXRpb24gaXMgcHJvdmlkZWQsIHRoZW4gaXQgd2lsbCBsb29rIGZvciB0eXBlcyBuYW1lZCBRdWVyeSxcbiAqIE11dGF0aW9uIGFuZCBTdWJzY3JpcHRpb24uXG4gKlxuICogR2l2ZW4gdGhhdCBBU1QgaXQgY29uc3RydWN0cyBhIEdyYXBoUUxTY2hlbWEuIFRoZSByZXN1bHRpbmcgc2NoZW1hXG4gKiBoYXMgbm8gcmVzb2x2ZSBtZXRob2RzLCBzbyBleGVjdXRpb24gd2lsbCB1c2UgZGVmYXVsdCByZXNvbHZlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFTVFNjaGVtYShkb2N1bWVudEFTVCwgb3B0aW9ucykge1xuICAoZG9jdW1lbnRBU1QgIT0gbnVsbCAmJiBkb2N1bWVudEFTVC5raW5kID09PSBLaW5kLkRPQ1VNRU5UKSB8fFxuICAgIGRldkFzc2VydChmYWxzZSwgJ011c3QgcHJvdmlkZSB2YWxpZCBEb2N1bWVudCBBU1QuJyk7XG5cbiAgaWYgKFxuICAgIChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYXNzdW1lVmFsaWQpICE9PVxuICAgICAgdHJ1ZSAmJlxuICAgIChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMFxuICAgICAgPyB2b2lkIDBcbiAgICAgIDogb3B0aW9ucy5hc3N1bWVWYWxpZFNETCkgIT09IHRydWVcbiAgKSB7XG4gICAgYXNzZXJ0VmFsaWRTREwoZG9jdW1lbnRBU1QpO1xuICB9XG5cbiAgY29uc3QgZW1wdHlTY2hlbWFDb25maWcgPSB7XG4gICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCxcbiAgICB0eXBlczogW10sXG4gICAgZGlyZWN0aXZlczogW10sXG4gICAgZXh0ZW5zaW9uczogT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgICBleHRlbnNpb25BU1ROb2RlczogW10sXG4gICAgYXNzdW1lVmFsaWQ6IGZhbHNlLFxuICB9O1xuICBjb25zdCBjb25maWcgPSBleHRlbmRTY2hlbWFJbXBsKGVtcHR5U2NoZW1hQ29uZmlnLCBkb2N1bWVudEFTVCwgb3B0aW9ucyk7XG5cbiAgaWYgKGNvbmZpZy5hc3ROb2RlID09IG51bGwpIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgY29uZmlnLnR5cGVzKSB7XG4gICAgICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgICAgICAvLyBOb3RlOiBXaGlsZSB0aGlzIGNvdWxkIG1ha2UgZWFybHkgYXNzZXJ0aW9ucyB0byBnZXQgdGhlIGNvcnJlY3RseVxuICAgICAgICAvLyB0eXBlZCB2YWx1ZXMgYmVsb3csIHRoYXQgd291bGQgdGhyb3cgaW1tZWRpYXRlbHkgd2hpbGUgdHlwZSBzeXN0ZW1cbiAgICAgICAgLy8gdmFsaWRhdGlvbiB3aXRoIHZhbGlkYXRlU2NoZW1hKCkgd2lsbCBwcm9kdWNlIG1vcmUgYWN0aW9uYWJsZSByZXN1bHRzLlxuICAgICAgICBjYXNlICdRdWVyeSc6XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB2YWxpZGF0ZWQgaW4gYHZhbGlkYXRlU2NoZW1hYFxuICAgICAgICAgIGNvbmZpZy5xdWVyeSA9IHR5cGU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnTXV0YXRpb24nOlxuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdmFsaWRhdGVkIGluIGB2YWxpZGF0ZVNjaGVtYWBcbiAgICAgICAgICBjb25maWcubXV0YXRpb24gPSB0eXBlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ1N1YnNjcmlwdGlvbic6XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB2YWxpZGF0ZWQgaW4gYHZhbGlkYXRlU2NoZW1hYFxuICAgICAgICAgIGNvbmZpZy5zdWJzY3JpcHRpb24gPSB0eXBlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRpcmVjdGl2ZXMgPSBbXG4gICAgLi4uY29uZmlnLmRpcmVjdGl2ZXMsIC8vIElmIHNwZWNpZmllZCBkaXJlY3RpdmVzIHdlcmUgbm90IGV4cGxpY2l0bHkgZGVjbGFyZWQsIGFkZCB0aGVtLlxuICAgIC4uLnNwZWNpZmllZERpcmVjdGl2ZXMuZmlsdGVyKChzdGREaXJlY3RpdmUpID0+XG4gICAgICBjb25maWcuZGlyZWN0aXZlcy5ldmVyeShcbiAgICAgICAgKGRpcmVjdGl2ZSkgPT4gZGlyZWN0aXZlLm5hbWUgIT09IHN0ZERpcmVjdGl2ZS5uYW1lLFxuICAgICAgKSxcbiAgICApLFxuICBdO1xuICByZXR1cm4gbmV3IEdyYXBoUUxTY2hlbWEoeyAuLi5jb25maWcsIGRpcmVjdGl2ZXMgfSk7XG59XG4vKipcbiAqIEEgaGVscGVyIGZ1bmN0aW9uIHRvIGJ1aWxkIGEgR3JhcGhRTFNjaGVtYSBkaXJlY3RseSBmcm9tIGEgc291cmNlXG4gKiBkb2N1bWVudC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTY2hlbWEoc291cmNlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGRvY3VtZW50ID0gcGFyc2Uoc291cmNlLCB7XG4gICAgbm9Mb2NhdGlvbjpcbiAgICAgIG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5ub0xvY2F0aW9uLFxuICAgIGFsbG93TGVnYWN5RnJhZ21lbnRWYXJpYWJsZXM6XG4gICAgICBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IG9wdGlvbnMuYWxsb3dMZWdhY3lGcmFnbWVudFZhcmlhYmxlcyxcbiAgfSk7XG4gIHJldHVybiBidWlsZEFTVFNjaGVtYShkb2N1bWVudCwge1xuICAgIGFzc3VtZVZhbGlkU0RMOlxuICAgICAgb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFzc3VtZVZhbGlkU0RMLFxuICAgIGFzc3VtZVZhbGlkOlxuICAgICAgb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFzc3VtZVZhbGlkLFxuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/buildASTSchema.mjs\n");
|
937 |
|
938 | }),
|
939 |
|
940 | "../../../node_modules/graphql/utilities/buildClientSchema.mjs":
|
941 |
|
942 |
|
943 |
|
944 |
|
945 | (function(module, __webpack_exports__, __webpack_require__) {
|
946 |
|
947 | "use strict";
|
948 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildClientSchema\", function() { return buildClientSchema; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/keyValMap.mjs */ \"../../../node_modules/graphql/jsutils/keyValMap.mjs\");\n/* harmony import */ var _language_parser_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/parser.mjs */ \"../../../node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _type_schema_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../type/schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n/* harmony import */ var _valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./valueFromAST.mjs */ \"../../../node_modules/graphql/utilities/valueFromAST.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Build a GraphQLSchema for use by client tools.\n *\n * Given the result of a client running the introspection query, creates and\n * returns a GraphQLSchema instance which can be then used with all graphql-js\n * tools, but cannot be used to execute a query, as introspection does not\n * represent the \"resolver\", \"parse\" or \"serialize\" functions or any other\n * server-internal mechanisms.\n *\n * This function expects a complete introspection result. Don't forget to check\n * the \"errors\" field of a server response before calling this function.\n */\n\nfunction buildClientSchema(introspection, options) {\n (Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isObjectLike\"])(introspection) && Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isObjectLike\"])(introspection.__schema)) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(\n false,\n `Invalid or incomplete introspection result. Ensure that you are passing \"data\" property of introspection response and no \"errors\" was returned alongside: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(\n introspection,\n )}.`,\n ); // Get the schema from the introspection result.\n\n const schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each.\n\n const typeMap = Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"keyValMap\"])(\n schemaIntrospection.types,\n (typeIntrospection) => typeIntrospection.name,\n (typeIntrospection) => buildType(typeIntrospection),\n ); // Include standard types only if they are used.\n\n for (const stdType of [..._type_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__[\"specifiedScalarTypes\"], ..._type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__[\"introspectionTypes\"]]) {\n if (typeMap[stdType.name]) {\n typeMap[stdType.name] = stdType;\n }\n } // Get the root Query, Mutation, and Subscription types.\n\n const queryType = schemaIntrospection.queryType\n ? getObjectType(schemaIntrospection.queryType)\n : null;\n const mutationType = schemaIntrospection.mutationType\n ? getObjectType(schemaIntrospection.mutationType)\n : null;\n const subscriptionType = schemaIntrospection.subscriptionType\n ? getObjectType(schemaIntrospection.subscriptionType)\n : null; // Get the directives supported by Introspection, assuming empty-set if\n // directives were not queried for.\n\n const directives = schemaIntrospection.directives\n ? schemaIntrospection.directives.map(buildDirective)\n : []; // Then produce and return a Schema with these types.\n\n return new _type_schema_mjs__WEBPACK_IMPORTED_MODULE_9__[\"GraphQLSchema\"]({\n description: schemaIntrospection.description,\n query: queryType,\n mutation: mutationType,\n subscription: subscriptionType,\n types: Object.values(typeMap),\n directives,\n assumeValid:\n options === null || options === void 0 ? void 0 : options.assumeValid,\n }); // Given a type reference in introspection, return the GraphQLType instance.\n // preferring cached instances before building new instances.\n\n function getType(typeRef) {\n if (typeRef.kind === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__[\"TypeKind\"].LIST) {\n const itemRef = typeRef.ofType;\n\n if (!itemRef) {\n throw new Error('Decorated type deeper than introspection query.');\n }\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLList\"](getType(itemRef));\n }\n\n if (typeRef.kind === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__[\"TypeKind\"].NON_NULL) {\n const nullableRef = typeRef.ofType;\n\n if (!nullableRef) {\n throw new Error('Decorated type deeper than introspection query.');\n }\n\n const nullableType = getType(nullableRef);\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLNonNull\"](Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"assertNullableType\"])(nullableType));\n }\n\n return getNamedType(typeRef);\n }\n\n function getNamedType(typeRef) {\n const typeName = typeRef.name;\n\n if (!typeName) {\n throw new Error(`Unknown type reference: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(typeRef)}.`);\n }\n\n const type = typeMap[typeName];\n\n if (!type) {\n throw new Error(\n `Invalid or incomplete schema, unknown type: ${typeName}. Ensure that a full introspection query is used in order to build a client schema.`,\n );\n }\n\n return type;\n }\n\n function getObjectType(typeRef) {\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"assertObjectType\"])(getNamedType(typeRef));\n }\n\n function getInterfaceType(typeRef) {\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"assertInterfaceType\"])(getNamedType(typeRef));\n } // Given a type's introspection result, construct the correct\n // GraphQLType instance.\n\n function buildType(type) {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (type != null && type.name != null && type.kind != null) {\n // FIXME: Properly type IntrospectionType, it's a breaking change so fix in v17\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (type.kind) {\n case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__[\"TypeKind\"].SCALAR:\n return buildScalarDef(type);\n\n case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__[\"TypeKind\"].OBJECT:\n return buildObjectDef(type);\n\n case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__[\"TypeKind\"].INTERFACE:\n return buildInterfaceDef(type);\n\n case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__[\"TypeKind\"].UNION:\n return buildUnionDef(type);\n\n case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__[\"TypeKind\"].ENUM:\n return buildEnumDef(type);\n\n case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__[\"TypeKind\"].INPUT_OBJECT:\n return buildInputObjectDef(type);\n }\n }\n\n const typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(type);\n throw new Error(\n `Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${typeStr}.`,\n );\n }\n\n function buildScalarDef(scalarIntrospection) {\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLScalarType\"]({\n name: scalarIntrospection.name,\n description: scalarIntrospection.description,\n specifiedByURL: scalarIntrospection.specifiedByURL,\n });\n }\n\n function buildImplementationsList(implementingIntrospection) {\n // TODO: Temporary workaround until GraphQL ecosystem will fully support\n // 'interfaces' on interface types.\n if (\n implementingIntrospection.interfaces === null &&\n implementingIntrospection.kind === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__[\"TypeKind\"].INTERFACE\n ) {\n return [];\n }\n\n if (!implementingIntrospection.interfaces) {\n const implementingIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(implementingIntrospection);\n throw new Error(\n `Introspection result missing interfaces: ${implementingIntrospectionStr}.`,\n );\n }\n\n return implementingIntrospection.interfaces.map(getInterfaceType);\n }\n\n function buildObjectDef(objectIntrospection) {\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLObjectType\"]({\n name: objectIntrospection.name,\n description: objectIntrospection.description,\n interfaces: () => buildImplementationsList(objectIntrospection),\n fields: () => buildFieldDefMap(objectIntrospection),\n });\n }\n\n function buildInterfaceDef(interfaceIntrospection) {\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLInterfaceType\"]({\n name: interfaceIntrospection.name,\n description: interfaceIntrospection.description,\n interfaces: () => buildImplementationsList(interfaceIntrospection),\n fields: () => buildFieldDefMap(interfaceIntrospection),\n });\n }\n\n function buildUnionDef(unionIntrospection) {\n if (!unionIntrospection.possibleTypes) {\n const unionIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(unionIntrospection);\n throw new Error(\n `Introspection result missing possibleTypes: ${unionIntrospectionStr}.`,\n );\n }\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLUnionType\"]({\n name: unionIntrospection.name,\n description: unionIntrospection.description,\n types: () => unionIntrospection.possibleTypes.map(getObjectType),\n });\n }\n\n function buildEnumDef(enumIntrospection) {\n if (!enumIntrospection.enumValues) {\n const enumIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(enumIntrospection);\n throw new Error(\n `Introspection result missing enumValues: ${enumIntrospectionStr}.`,\n );\n }\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLEnumType\"]({\n name: enumIntrospection.name,\n description: enumIntrospection.description,\n values: Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"keyValMap\"])(\n enumIntrospection.enumValues,\n (valueIntrospection) => valueIntrospection.name,\n (valueIntrospection) => ({\n description: valueIntrospection.description,\n deprecationReason: valueIntrospection.deprecationReason,\n }),\n ),\n });\n }\n\n function buildInputObjectDef(inputObjectIntrospection) {\n if (!inputObjectIntrospection.inputFields) {\n const inputObjectIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(inputObjectIntrospection);\n throw new Error(\n `Introspection result missing inputFields: ${inputObjectIntrospectionStr}.`,\n );\n }\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLInputObjectType\"]({\n name: inputObjectIntrospection.name,\n description: inputObjectIntrospection.description,\n fields: () => buildInputValueDefMap(inputObjectIntrospection.inputFields),\n });\n }\n\n function buildFieldDefMap(typeIntrospection) {\n if (!typeIntrospection.fields) {\n throw new Error(\n `Introspection result missing fields: ${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(typeIntrospection)}.`,\n );\n }\n\n return Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"keyValMap\"])(\n typeIntrospection.fields,\n (fieldIntrospection) => fieldIntrospection.name,\n buildField,\n );\n }\n\n function buildField(fieldIntrospection) {\n const type = getType(fieldIntrospection.type);\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isOutputType\"])(type)) {\n const typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(type);\n throw new Error(\n `Introspection must provide output type for fields, but received: ${typeStr}.`,\n );\n }\n\n if (!fieldIntrospection.args) {\n const fieldIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(fieldIntrospection);\n throw new Error(\n `Introspection result missing field args: ${fieldIntrospectionStr}.`,\n );\n }\n\n return {\n description: fieldIntrospection.description,\n deprecationReason: fieldIntrospection.deprecationReason,\n type,\n args: buildInputValueDefMap(fieldIntrospection.args),\n };\n }\n\n function buildInputValueDefMap(inputValueIntrospections) {\n return Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"keyValMap\"])(\n inputValueIntrospections,\n (inputValue) => inputValue.name,\n buildInputValue,\n );\n }\n\n function buildInputValue(inputValueIntrospection) {\n const type = getType(inputValueIntrospection.type);\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isInputType\"])(type)) {\n const typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(type);\n throw new Error(\n `Introspection must provide input type for arguments, but received: ${typeStr}.`,\n );\n }\n\n const defaultValue =\n inputValueIntrospection.defaultValue != null\n ? Object(_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_10__[\"valueFromAST\"])(Object(_language_parser_mjs__WEBPACK_IMPORTED_MODULE_4__[\"parseValue\"])(inputValueIntrospection.defaultValue), type)\n : undefined;\n return {\n description: inputValueIntrospection.description,\n type,\n defaultValue,\n deprecationReason: inputValueIntrospection.deprecationReason,\n };\n }\n\n function buildDirective(directiveIntrospection) {\n if (!directiveIntrospection.args) {\n const directiveIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(directiveIntrospection);\n throw new Error(\n `Introspection result missing directive args: ${directiveIntrospectionStr}.`,\n );\n }\n\n if (!directiveIntrospection.locations) {\n const directiveIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(directiveIntrospection);\n throw new Error(\n `Introspection result missing directive locations: ${directiveIntrospectionStr}.`,\n );\n }\n\n return new _type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLDirective\"]({\n name: directiveIntrospection.name,\n description: directiveIntrospection.description,\n isRepeatable: directiveIntrospection.isRepeatable,\n locations: directiveIntrospection.locations.slice(),\n args: buildInputValueDefMap(directiveIntrospection.args),\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2J1aWxkQ2xpZW50U2NoZW1hLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9idWlsZENsaWVudFNjaGVtYS5tanM/NWY0NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXZBc3NlcnQgfSBmcm9tICcuLi9qc3V0aWxzL2RldkFzc2VydC5tanMnO1xuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaXNPYmplY3RMaWtlIH0gZnJvbSAnLi4vanN1dGlscy9pc09iamVjdExpa2UubWpzJztcbmltcG9ydCB7IGtleVZhbE1hcCB9IGZyb20gJy4uL2pzdXRpbHMva2V5VmFsTWFwLm1qcyc7XG5pbXBvcnQgeyBwYXJzZVZhbHVlIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvcGFyc2VyLm1qcyc7XG5pbXBvcnQge1xuICBhc3NlcnRJbnRlcmZhY2VUeXBlLFxuICBhc3NlcnROdWxsYWJsZVR5cGUsXG4gIGFzc2VydE9iamVjdFR5cGUsXG4gIEdyYXBoUUxFbnVtVHlwZSxcbiAgR3JhcGhRTElucHV0T2JqZWN0VHlwZSxcbiAgR3JhcGhRTEludGVyZmFjZVR5cGUsXG4gIEdyYXBoUUxMaXN0LFxuICBHcmFwaFFMTm9uTnVsbCxcbiAgR3JhcGhRTE9iamVjdFR5cGUsXG4gIEdyYXBoUUxTY2FsYXJUeXBlLFxuICBHcmFwaFFMVW5pb25UeXBlLFxuICBpc0lucHV0VHlwZSxcbiAgaXNPdXRwdXRUeXBlLFxufSBmcm9tICcuLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7IEdyYXBoUUxEaXJlY3RpdmUgfSBmcm9tICcuLi90eXBlL2RpcmVjdGl2ZXMubWpzJztcbmltcG9ydCB7IGludHJvc3BlY3Rpb25UeXBlcywgVHlwZUtpbmQgfSBmcm9tICcuLi90eXBlL2ludHJvc3BlY3Rpb24ubWpzJztcbmltcG9ydCB7IHNwZWNpZmllZFNjYWxhclR5cGVzIH0gZnJvbSAnLi4vdHlwZS9zY2FsYXJzLm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMU2NoZW1hIH0gZnJvbSAnLi4vdHlwZS9zY2hlbWEubWpzJztcbmltcG9ydCB7IHZhbHVlRnJvbUFTVCB9IGZyb20gJy4vdmFsdWVGcm9tQVNULm1qcyc7XG4vKipcbiAqIEJ1aWxkIGEgR3JhcGhRTFNjaGVtYSBmb3IgdXNlIGJ5IGNsaWVudCB0b29scy5cbiAqXG4gKiBHaXZlbiB0aGUgcmVzdWx0IG9mIGEgY2xpZW50IHJ1bm5pbmcgdGhlIGludHJvc3BlY3Rpb24gcXVlcnksIGNyZWF0ZXMgYW5kXG4gKiByZXR1cm5zIGEgR3JhcGhRTFNjaGVtYSBpbnN0YW5jZSB3aGljaCBjYW4gYmUgdGhlbiB1c2VkIHdpdGggYWxsIGdyYXBocWwtanNcbiAqIHRvb2xzLCBidXQgY2Fubm90IGJlIHVzZWQgdG8gZXhlY3V0ZSBhIHF1ZXJ5LCBhcyBpbnRyb3NwZWN0aW9uIGRvZXMgbm90XG4gKiByZXByZXNlbnQgdGhlIFwicmVzb2x2ZXJcIiwgXCJwYXJzZVwiIG9yIFwic2VyaWFsaXplXCIgZnVuY3Rpb25zIG9yIGFueSBvdGhlclxuICogc2VydmVyLWludGVybmFsIG1lY2hhbmlzbXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBleHBlY3RzIGEgY29tcGxldGUgaW50cm9zcGVjdGlvbiByZXN1bHQuIERvbid0IGZvcmdldCB0byBjaGVja1xuICogdGhlIFwiZXJyb3JzXCIgZmllbGQgb2YgYSBzZXJ2ZXIgcmVzcG9uc2UgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDbGllbnRTY2hlbWEoaW50cm9zcGVjdGlvbiwgb3B0aW9ucykge1xuICAoaXNPYmplY3RMaWtlKGludHJvc3BlY3Rpb24pICYmIGlzT2JqZWN0TGlrZShpbnRyb3NwZWN0aW9uLl9fc2NoZW1hKSkgfHxcbiAgICBkZXZBc3NlcnQoXG4gICAgICBmYWxzZSxcbiAgICAgIGBJbnZhbGlkIG9yIGluY29tcGxldGUgaW50cm9zcGVjdGlvbiByZXN1bHQuIEVuc3VyZSB0aGF0IHlvdSBhcmUgcGFzc2luZyBcImRhdGFcIiBwcm9wZXJ0eSBvZiBpbnRyb3NwZWN0aW9uIHJlc3BvbnNlIGFuZCBubyBcImVycm9yc1wiIHdhcyByZXR1cm5lZCBhbG9uZ3NpZGU6ICR7aW5zcGVjdChcbiAgICAgICAgaW50cm9zcGVjdGlvbixcbiAgICAgICl9LmAsXG4gICAgKTsgLy8gR2V0IHRoZSBzY2hlbWEgZnJvbSB0aGUgaW50cm9zcGVjdGlvbiByZXN1bHQuXG5cbiAgY29uc3Qgc2NoZW1hSW50cm9zcGVjdGlvbiA9IGludHJvc3BlY3Rpb24uX19zY2hlbWE7IC8vIEl0ZXJhdGUgdGhyb3VnaCBhbGwgdHlwZXMsIGdldHRpbmcgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgZWFjaC5cblxuICBjb25zdCB0eXBlTWFwID0ga2V5VmFsTWFwKFxuICAgIHNjaGVtYUludHJvc3BlY3Rpb24udHlwZXMsXG4gICAgKHR5cGVJbnRyb3NwZWN0aW9uKSA9PiB0eXBlSW50cm9zcGVjdGlvbi5uYW1lLFxuICAgICh0eXBlSW50cm9zcGVjdGlvbikgPT4gYnVpbGRUeXBlKHR5cGVJbnRyb3NwZWN0aW9uKSxcbiAgKTsgLy8gSW5jbHVkZSBzdGFuZGFyZCB0eXBlcyBvbmx5IGlmIHRoZXkgYXJlIHVzZWQuXG5cbiAgZm9yIChjb25zdCBzdGRUeXBlIG9mIFsuLi5zcGVjaWZpZWRTY2FsYXJUeXBlcywgLi4uaW50cm9zcGVjdGlvblR5cGVzXSkge1xuICAgIGlmICh0eXBlTWFwW3N0ZFR5cGUubmFtZV0pIHtcbiAgICAgIHR5cGVNYXBbc3RkVHlwZS5uYW1lXSA9IHN0ZFR5cGU7XG4gICAgfVxuICB9IC8vIEdldCB0aGUgcm9vdCBRdWVyeSwgTXV0YXRpb24sIGFuZCBTdWJzY3JpcHRpb24gdHlwZXMuXG5cbiAgY29uc3QgcXVlcnlUeXBlID0gc2NoZW1hSW50cm9zcGVjdGlvbi5xdWVyeVR5cGVcbiAgICA/IGdldE9iamVjdFR5cGUoc2NoZW1hSW50cm9zcGVjdGlvbi5xdWVyeVR5cGUpXG4gICAgOiBudWxsO1xuICBjb25zdCBtdXRhdGlvblR5cGUgPSBzY2hlbWFJbnRyb3NwZWN0aW9uLm11dGF0aW9uVHlwZVxuICAgID8gZ2V0T2JqZWN0VHlwZShzY2hlbWFJbnRyb3NwZWN0aW9uLm11dGF0aW9uVHlwZSlcbiAgICA6IG51bGw7XG4gIGNvbnN0IHN1YnNjcmlwdGlvblR5cGUgPSBzY2hlbWFJbnRyb3NwZWN0aW9uLnN1YnNjcmlwdGlvblR5cGVcbiAgICA/IGdldE9iamVjdFR5cGUoc2NoZW1hSW50cm9zcGVjdGlvbi5zdWJzY3JpcHRpb25UeXBlKVxuICAgIDogbnVsbDsgLy8gR2V0IHRoZSBkaXJlY3RpdmVzIHN1cHBvcnRlZCBieSBJbnRyb3NwZWN0aW9uLCBhc3N1bWluZyBlbXB0eS1zZXQgaWZcbiAgLy8gZGlyZWN0aXZlcyB3ZXJlIG5vdCBxdWVyaWVkIGZvci5cblxuICBjb25zdCBkaXJlY3RpdmVzID0gc2NoZW1hSW50cm9zcGVjdGlvbi5kaXJlY3RpdmVzXG4gICAgPyBzY2hlbWFJbnRyb3NwZWN0aW9uLmRpcmVjdGl2ZXMubWFwKGJ1aWxkRGlyZWN0aXZlKVxuICAgIDogW107IC8vIFRoZW4gcHJvZHVjZSBhbmQgcmV0dXJuIGEgU2NoZW1hIHdpdGggdGhlc2UgdHlwZXMuXG5cbiAgcmV0dXJuIG5ldyBHcmFwaFFMU2NoZW1hKHtcbiAgICBkZXNjcmlwdGlvbjogc2NoZW1hSW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICBxdWVyeTogcXVlcnlUeXBlLFxuICAgIG11dGF0aW9uOiBtdXRhdGlvblR5cGUsXG4gICAgc3Vic2NyaXB0aW9uOiBzdWJzY3JpcHRpb25UeXBlLFxuICAgIHR5cGVzOiBPYmplY3QudmFsdWVzKHR5cGVNYXApLFxuICAgIGRpcmVjdGl2ZXMsXG4gICAgYXNzdW1lVmFsaWQ6XG4gICAgICBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYXNzdW1lVmFsaWQsXG4gIH0pOyAvLyBHaXZlbiBhIHR5cGUgcmVmZXJlbmNlIGluIGludHJvc3BlY3Rpb24sIHJldHVybiB0aGUgR3JhcGhRTFR5cGUgaW5zdGFuY2UuXG4gIC8vIHByZWZlcnJpbmcgY2FjaGVkIGluc3RhbmNlcyBiZWZvcmUgYnVpbGRpbmcgbmV3IGluc3RhbmNlcy5cblxuICBmdW5jdGlvbiBnZXRUeXBlKHR5cGVSZWYpIHtcbiAgICBpZiAodHlwZVJlZi5raW5kID09PSBUeXBlS2luZC5MSVNUKSB7XG4gICAgICBjb25zdCBpdGVtUmVmID0gdHlwZVJlZi5vZlR5cGU7XG5cbiAgICAgIGlmICghaXRlbVJlZikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RlY29yYXRlZCB0eXBlIGRlZXBlciB0aGFuIGludHJvc3BlY3Rpb24gcXVlcnkuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTExpc3QoZ2V0VHlwZShpdGVtUmVmKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVSZWYua2luZCA9PT0gVHlwZUtpbmQuTk9OX05VTEwpIHtcbiAgICAgIGNvbnN0IG51bGxhYmxlUmVmID0gdHlwZVJlZi5vZlR5cGU7XG5cbiAgICAgIGlmICghbnVsbGFibGVSZWYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZWNvcmF0ZWQgdHlwZSBkZWVwZXIgdGhhbiBpbnRyb3NwZWN0aW9uIHF1ZXJ5LicpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBudWxsYWJsZVR5cGUgPSBnZXRUeXBlKG51bGxhYmxlUmVmKTtcbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTE5vbk51bGwoYXNzZXJ0TnVsbGFibGVUeXBlKG51bGxhYmxlVHlwZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBnZXROYW1lZFR5cGUodHlwZVJlZik7XG4gIH1cblxuICBmdW5jdGlvbiBnZXROYW1lZFR5cGUodHlwZVJlZikge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZVJlZi5uYW1lO1xuXG4gICAgaWYgKCF0eXBlTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR5cGUgcmVmZXJlbmNlOiAke2luc3BlY3QodHlwZVJlZil9LmApO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGUgPSB0eXBlTWFwW3R5cGVOYW1lXTtcblxuICAgIGlmICghdHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBvciBpbmNvbXBsZXRlIHNjaGVtYSwgdW5rbm93biB0eXBlOiAke3R5cGVOYW1lfS4gRW5zdXJlIHRoYXQgYSBmdWxsIGludHJvc3BlY3Rpb24gcXVlcnkgaXMgdXNlZCBpbiBvcmRlciB0byBidWlsZCBhIGNsaWVudCBzY2hlbWEuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRPYmplY3RUeXBlKHR5cGVSZWYpIHtcbiAgICByZXR1cm4gYXNzZXJ0T2JqZWN0VHlwZShnZXROYW1lZFR5cGUodHlwZVJlZikpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0SW50ZXJmYWNlVHlwZSh0eXBlUmVmKSB7XG4gICAgcmV0dXJuIGFzc2VydEludGVyZmFjZVR5cGUoZ2V0TmFtZWRUeXBlKHR5cGVSZWYpKTtcbiAgfSAvLyBHaXZlbiBhIHR5cGUncyBpbnRyb3NwZWN0aW9uIHJlc3VsdCwgY29uc3RydWN0IHRoZSBjb3JyZWN0XG4gIC8vIEdyYXBoUUxUeXBlIGluc3RhbmNlLlxuXG4gIGZ1bmN0aW9uIGJ1aWxkVHlwZSh0eXBlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItb3B0aW9uYWwtY2hhaW5cbiAgICBpZiAodHlwZSAhPSBudWxsICYmIHR5cGUubmFtZSAhPSBudWxsICYmIHR5cGUua2luZCAhPSBudWxsKSB7XG4gICAgICAvLyBGSVhNRTogUHJvcGVybHkgdHlwZSBJbnRyb3NwZWN0aW9uVHlwZSwgaXQncyBhIGJyZWFraW5nIGNoYW5nZSBzbyBmaXggaW4gdjE3XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3N3aXRjaC1leGhhdXN0aXZlbmVzcy1jaGVja1xuICAgICAgc3dpdGNoICh0eXBlLmtpbmQpIHtcbiAgICAgICAgY2FzZSBUeXBlS2luZC5TQ0FMQVI6XG4gICAgICAgICAgcmV0dXJuIGJ1aWxkU2NhbGFyRGVmKHR5cGUpO1xuXG4gICAgICAgIGNhc2UgVHlwZUtpbmQuT0JKRUNUOlxuICAgICAgICAgIHJldHVybiBidWlsZE9iamVjdERlZih0eXBlKTtcblxuICAgICAgICBjYXNlIFR5cGVLaW5kLklOVEVSRkFDRTpcbiAgICAgICAgICByZXR1cm4gYnVpbGRJbnRlcmZhY2VEZWYodHlwZSk7XG5cbiAgICAgICAgY2FzZSBUeXBlS2luZC5VTklPTjpcbiAgICAgICAgICByZXR1cm4gYnVpbGRVbmlvbkRlZih0eXBlKTtcblxuICAgICAgICBjYXNlIFR5cGVLaW5kLkVOVU06XG4gICAgICAgICAgcmV0dXJuIGJ1aWxkRW51bURlZih0eXBlKTtcblxuICAgICAgICBjYXNlIFR5cGVLaW5kLklOUFVUX09CSkVDVDpcbiAgICAgICAgICByZXR1cm4gYnVpbGRJbnB1dE9iamVjdERlZih0eXBlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0eXBlU3RyID0gaW5zcGVjdCh0eXBlKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBvciBpbmNvbXBsZXRlIGludHJvc3BlY3Rpb24gcmVzdWx0LiBFbnN1cmUgdGhhdCBhIGZ1bGwgaW50cm9zcGVjdGlvbiBxdWVyeSBpcyB1c2VkIGluIG9yZGVyIHRvIGJ1aWxkIGEgY2xpZW50IHNjaGVtYTogJHt0eXBlU3RyfS5gLFxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZFNjYWxhckRlZihzY2FsYXJJbnRyb3NwZWN0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gICAgICBuYW1lOiBzY2FsYXJJbnRyb3NwZWN0aW9uLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogc2NhbGFySW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHNwZWNpZmllZEJ5VVJMOiBzY2FsYXJJbnRyb3NwZWN0aW9uLnNwZWNpZmllZEJ5VVJMLFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRJbXBsZW1lbnRhdGlvbnNMaXN0KGltcGxlbWVudGluZ0ludHJvc3BlY3Rpb24pIHtcbiAgICAvLyBUT0RPOiBUZW1wb3Jhcnkgd29ya2Fyb3VuZCB1bnRpbCBHcmFwaFFMIGVjb3N5c3RlbSB3aWxsIGZ1bGx5IHN1cHBvcnRcbiAgICAvLyAnaW50ZXJmYWNlcycgb24gaW50ZXJmYWNlIHR5cGVzLlxuICAgIGlmIChcbiAgICAgIGltcGxlbWVudGluZ0ludHJvc3BlY3Rpb24uaW50ZXJmYWNlcyA9PT0gbnVsbCAmJlxuICAgICAgaW1wbGVtZW50aW5nSW50cm9zcGVjdGlvbi5raW5kID09PSBUeXBlS2luZC5JTlRFUkZBQ0VcbiAgICApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoIWltcGxlbWVudGluZ0ludHJvc3BlY3Rpb24uaW50ZXJmYWNlcykge1xuICAgICAgY29uc3QgaW1wbGVtZW50aW5nSW50cm9zcGVjdGlvblN0ciA9IGluc3BlY3QoaW1wbGVtZW50aW5nSW50cm9zcGVjdGlvbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIGludGVyZmFjZXM6ICR7aW1wbGVtZW50aW5nSW50cm9zcGVjdGlvblN0cn0uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGltcGxlbWVudGluZ0ludHJvc3BlY3Rpb24uaW50ZXJmYWNlcy5tYXAoZ2V0SW50ZXJmYWNlVHlwZSk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZE9iamVjdERlZihvYmplY3RJbnRyb3NwZWN0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gICAgICBuYW1lOiBvYmplY3RJbnRyb3NwZWN0aW9uLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogb2JqZWN0SW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIGludGVyZmFjZXM6ICgpID0+IGJ1aWxkSW1wbGVtZW50YXRpb25zTGlzdChvYmplY3RJbnRyb3NwZWN0aW9uKSxcbiAgICAgIGZpZWxkczogKCkgPT4gYnVpbGRGaWVsZERlZk1hcChvYmplY3RJbnRyb3NwZWN0aW9uKSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkSW50ZXJmYWNlRGVmKGludGVyZmFjZUludHJvc3BlY3Rpb24pIHtcbiAgICByZXR1cm4gbmV3IEdyYXBoUUxJbnRlcmZhY2VUeXBlKHtcbiAgICAgIG5hbWU6IGludGVyZmFjZUludHJvc3BlY3Rpb24ubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBpbnRlcmZhY2VJbnRyb3NwZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgaW50ZXJmYWNlczogKCkgPT4gYnVpbGRJbXBsZW1lbnRhdGlvbnNMaXN0KGludGVyZmFjZUludHJvc3BlY3Rpb24pLFxuICAgICAgZmllbGRzOiAoKSA9PiBidWlsZEZpZWxkRGVmTWFwKGludGVyZmFjZUludHJvc3BlY3Rpb24pLFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRVbmlvbkRlZih1bmlvbkludHJvc3BlY3Rpb24pIHtcbiAgICBpZiAoIXVuaW9uSW50cm9zcGVjdGlvbi5wb3NzaWJsZVR5cGVzKSB7XG4gICAgICBjb25zdCB1bmlvbkludHJvc3BlY3Rpb25TdHIgPSBpbnNwZWN0KHVuaW9uSW50cm9zcGVjdGlvbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIHBvc3NpYmxlVHlwZXM6ICR7dW5pb25JbnRyb3NwZWN0aW9uU3RyfS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEdyYXBoUUxVbmlvblR5cGUoe1xuICAgICAgbmFtZTogdW5pb25JbnRyb3NwZWN0aW9uLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdW5pb25JbnRyb3NwZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZXM6ICgpID0+IHVuaW9uSW50cm9zcGVjdGlvbi5wb3NzaWJsZVR5cGVzLm1hcChnZXRPYmplY3RUeXBlKSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkRW51bURlZihlbnVtSW50cm9zcGVjdGlvbikge1xuICAgIGlmICghZW51bUludHJvc3BlY3Rpb24uZW51bVZhbHVlcykge1xuICAgICAgY29uc3QgZW51bUludHJvc3BlY3Rpb25TdHIgPSBpbnNwZWN0KGVudW1JbnRyb3NwZWN0aW9uKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludHJvc3BlY3Rpb24gcmVzdWx0IG1pc3NpbmcgZW51bVZhbHVlczogJHtlbnVtSW50cm9zcGVjdGlvblN0cn0uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICAgICAgbmFtZTogZW51bUludHJvc3BlY3Rpb24ubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBlbnVtSW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHZhbHVlczoga2V5VmFsTWFwKFxuICAgICAgICBlbnVtSW50cm9zcGVjdGlvbi5lbnVtVmFsdWVzLFxuICAgICAgICAodmFsdWVJbnRyb3NwZWN0aW9uKSA9PiB2YWx1ZUludHJvc3BlY3Rpb24ubmFtZSxcbiAgICAgICAgKHZhbHVlSW50cm9zcGVjdGlvbikgPT4gKHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdmFsdWVJbnRyb3NwZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiB2YWx1ZUludHJvc3BlY3Rpb24uZGVwcmVjYXRpb25SZWFzb24sXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkSW5wdXRPYmplY3REZWYoaW5wdXRPYmplY3RJbnRyb3NwZWN0aW9uKSB7XG4gICAgaWYgKCFpbnB1dE9iamVjdEludHJvc3BlY3Rpb24uaW5wdXRGaWVsZHMpIHtcbiAgICAgIGNvbnN0IGlucHV0T2JqZWN0SW50cm9zcGVjdGlvblN0ciA9IGluc3BlY3QoaW5wdXRPYmplY3RJbnRyb3NwZWN0aW9uKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludHJvc3BlY3Rpb24gcmVzdWx0IG1pc3NpbmcgaW5wdXRGaWVsZHM6ICR7aW5wdXRPYmplY3RJbnRyb3NwZWN0aW9uU3RyfS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICAgICAgbmFtZTogaW5wdXRPYmplY3RJbnRyb3NwZWN0aW9uLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogaW5wdXRPYmplY3RJbnRyb3NwZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgZmllbGRzOiAoKSA9PiBidWlsZElucHV0VmFsdWVEZWZNYXAoaW5wdXRPYmplY3RJbnRyb3NwZWN0aW9uLmlucHV0RmllbGRzKSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkRmllbGREZWZNYXAodHlwZUludHJvc3BlY3Rpb24pIHtcbiAgICBpZiAoIXR5cGVJbnRyb3NwZWN0aW9uLmZpZWxkcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW50cm9zcGVjdGlvbiByZXN1bHQgbWlzc2luZyBmaWVsZHM6ICR7aW5zcGVjdCh0eXBlSW50cm9zcGVjdGlvbil9LmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlWYWxNYXAoXG4gICAgICB0eXBlSW50cm9zcGVjdGlvbi5maWVsZHMsXG4gICAgICAoZmllbGRJbnRyb3NwZWN0aW9uKSA9PiBmaWVsZEludHJvc3BlY3Rpb24ubmFtZSxcbiAgICAgIGJ1aWxkRmllbGQsXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkRmllbGQoZmllbGRJbnRyb3NwZWN0aW9uKSB7XG4gICAgY29uc3QgdHlwZSA9IGdldFR5cGUoZmllbGRJbnRyb3NwZWN0aW9uLnR5cGUpO1xuXG4gICAgaWYgKCFpc091dHB1dFR5cGUodHlwZSkpIHtcbiAgICAgIGNvbnN0IHR5cGVTdHIgPSBpbnNwZWN0KHR5cGUpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW50cm9zcGVjdGlvbiBtdXN0IHByb3ZpZGUgb3V0cHV0IHR5cGUgZm9yIGZpZWxkcywgYnV0IHJlY2VpdmVkOiAke3R5cGVTdHJ9LmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghZmllbGRJbnRyb3NwZWN0aW9uLmFyZ3MpIHtcbiAgICAgIGNvbnN0IGZpZWxkSW50cm9zcGVjdGlvblN0ciA9IGluc3BlY3QoZmllbGRJbnRyb3NwZWN0aW9uKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludHJvc3BlY3Rpb24gcmVzdWx0IG1pc3NpbmcgZmllbGQgYXJnczogJHtmaWVsZEludHJvc3BlY3Rpb25TdHJ9LmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbjogZmllbGRJbnRyb3NwZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgZGVwcmVjYXRpb25SZWFzb246IGZpZWxkSW50cm9zcGVjdGlvbi5kZXByZWNhdGlvblJlYXNvbixcbiAgICAgIHR5cGUsXG4gICAgICBhcmdzOiBidWlsZElucHV0VmFsdWVEZWZNYXAoZmllbGRJbnRyb3NwZWN0aW9uLmFyZ3MpLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZElucHV0VmFsdWVEZWZNYXAoaW5wdXRWYWx1ZUludHJvc3BlY3Rpb25zKSB7XG4gICAgcmV0dXJuIGtleVZhbE1hcChcbiAgICAgIGlucHV0VmFsdWVJbnRyb3NwZWN0aW9ucyxcbiAgICAgIChpbnB1dFZhbHVlKSA9PiBpbnB1dFZhbHVlLm5hbWUsXG4gICAgICBidWlsZElucHV0VmFsdWUsXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkSW5wdXRWYWx1ZShpbnB1dFZhbHVlSW50cm9zcGVjdGlvbikge1xuICAgIGNvbnN0IHR5cGUgPSBnZXRUeXBlKGlucHV0VmFsdWVJbnRyb3NwZWN0aW9uLnR5cGUpO1xuXG4gICAgaWYgKCFpc0lucHV0VHlwZSh0eXBlKSkge1xuICAgICAgY29uc3QgdHlwZVN0ciA9IGluc3BlY3QodHlwZSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnRyb3NwZWN0aW9uIG11c3QgcHJvdmlkZSBpbnB1dCB0eXBlIGZvciBhcmd1bWVudHMsIGJ1dCByZWNlaXZlZDogJHt0eXBlU3RyfS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPVxuICAgICAgaW5wdXRWYWx1ZUludHJvc3BlY3Rpb24uZGVmYXVsdFZhbHVlICE9IG51bGxcbiAgICAgICAgPyB2YWx1ZUZyb21BU1QocGFyc2VWYWx1ZShpbnB1dFZhbHVlSW50cm9zcGVjdGlvbi5kZWZhdWx0VmFsdWUpLCB0eXBlKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgZGVzY3JpcHRpb246IGlucHV0VmFsdWVJbnRyb3NwZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZSxcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBpbnB1dFZhbHVlSW50cm9zcGVjdGlvbi5kZXByZWNhdGlvblJlYXNvbixcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGREaXJlY3RpdmUoZGlyZWN0aXZlSW50cm9zcGVjdGlvbikge1xuICAgIGlmICghZGlyZWN0aXZlSW50cm9zcGVjdGlvbi5hcmdzKSB7XG4gICAgICBjb25zdCBkaXJlY3RpdmVJbnRyb3NwZWN0aW9uU3RyID0gaW5zcGVjdChkaXJlY3RpdmVJbnRyb3NwZWN0aW9uKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludHJvc3BlY3Rpb24gcmVzdWx0IG1pc3NpbmcgZGlyZWN0aXZlIGFyZ3M6ICR7ZGlyZWN0aXZlSW50cm9zcGVjdGlvblN0cn0uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFkaXJlY3RpdmVJbnRyb3NwZWN0aW9uLmxvY2F0aW9ucykge1xuICAgICAgY29uc3QgZGlyZWN0aXZlSW50cm9zcGVjdGlvblN0ciA9IGluc3BlY3QoZGlyZWN0aXZlSW50cm9zcGVjdGlvbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIGRpcmVjdGl2ZSBsb2NhdGlvbnM6ICR7ZGlyZWN0aXZlSW50cm9zcGVjdGlvblN0cn0uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMRGlyZWN0aXZlKHtcbiAgICAgIG5hbWU6IGRpcmVjdGl2ZUludHJvc3BlY3Rpb24ubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkaXJlY3RpdmVJbnRyb3NwZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgaXNSZXBlYXRhYmxlOiBkaXJlY3RpdmVJbnRyb3NwZWN0aW9uLmlzUmVwZWF0YWJsZSxcbiAgICAgIGxvY2F0aW9uczogZGlyZWN0aXZlSW50cm9zcGVjdGlvbi5sb2NhdGlvbnMuc2xpY2UoKSxcbiAgICAgIGFyZ3M6IGJ1aWxkSW5wdXRWYWx1ZURlZk1hcChkaXJlY3RpdmVJbnRyb3NwZWN0aW9uLmFyZ3MpLFxuICAgIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/buildClientSchema.mjs\n");
|
949 |
|
950 | }),
|
951 |
|
952 | "../../../node_modules/graphql/utilities/coerceInputValue.mjs":
|
953 |
|
954 |
|
955 |
|
956 |
|
957 | (function(module, __webpack_exports__, __webpack_require__) {
|
958 |
|
959 | "use strict";
|
960 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"coerceInputValue\", function() { return coerceInputValue; });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_isIterableObject_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/isIterableObject.mjs */ \"../../../node_modules/graphql/jsutils/isIterableObject.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/Path.mjs */ \"../../../node_modules/graphql/jsutils/Path.mjs\");\n/* harmony import */ var _jsutils_printPathArray_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/printPathArray.mjs */ \"../../../node_modules/graphql/jsutils/printPathArray.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nfunction coerceInputValue(inputValue, type, onError = defaultOnError) {\n return coerceInputValueImpl(inputValue, type, onError, undefined);\n}\n\nfunction defaultOnError(path, invalidValue, error) {\n let errorPrefix = 'Invalid value ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(invalidValue);\n\n if (path.length > 0) {\n errorPrefix += ` at \"value${Object(_jsutils_printPathArray_mjs__WEBPACK_IMPORTED_MODULE_6__[\"printPathArray\"])(path)}\"`;\n }\n\n error.message = errorPrefix + ': ' + error.message;\n throw error;\n}\n\nfunction coerceInputValueImpl(inputValue, type, onError, path) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isNonNullType\"])(type)) {\n if (inputValue != null) {\n return coerceInputValueImpl(inputValue, type.ofType, onError, path);\n }\n\n onError(\n Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_5__[\"pathToArray\"])(path),\n inputValue,\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLError\"](\n `Expected non-nullable type \"${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(type)}\" not to be null.`,\n ),\n );\n return;\n }\n\n if (inputValue == null) {\n // Explicitly return the value null.\n return null;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isListType\"])(type)) {\n const itemType = type.ofType;\n\n if (Object(_jsutils_isIterableObject_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isIterableObject\"])(inputValue)) {\n return Array.from(inputValue, (itemValue, index) => {\n const itemPath = Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_5__[\"addPath\"])(path, index, undefined);\n return coerceInputValueImpl(itemValue, itemType, onError, itemPath);\n });\n } // Lists accept a non-list value as a list of one.\n\n return [coerceInputValueImpl(inputValue, itemType, onError, path)];\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isInputObjectType\"])(type)) {\n if (!Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectLike\"])(inputValue)) {\n onError(\n Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_5__[\"pathToArray\"])(path),\n inputValue,\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLError\"](`Expected type \"${type.name}\" to be an object.`),\n );\n return;\n }\n\n const coercedValue = {};\n const fieldDefs = type.getFields();\n\n for (const field of Object.values(fieldDefs)) {\n const fieldValue = inputValue[field.name];\n\n if (fieldValue === undefined) {\n if (field.defaultValue !== undefined) {\n coercedValue[field.name] = field.defaultValue;\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isNonNullType\"])(field.type)) {\n const typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(field.type);\n onError(\n Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_5__[\"pathToArray\"])(path),\n inputValue,\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLError\"](\n `Field \"${field.name}\" of required type \"${typeStr}\" was not provided.`,\n ),\n );\n }\n\n continue;\n }\n\n coercedValue[field.name] = coerceInputValueImpl(\n fieldValue,\n field.type,\n onError,\n Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_5__[\"addPath\"])(path, field.name, type.name),\n );\n } // Ensure every provided field is defined.\n\n for (const fieldName of Object.keys(inputValue)) {\n if (!fieldDefs[fieldName]) {\n const suggestions = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_7__[\"suggestionList\"])(\n fieldName,\n Object.keys(type.getFields()),\n );\n onError(\n Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_5__[\"pathToArray\"])(path),\n inputValue,\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLError\"](\n `Field \"${fieldName}\" is not defined by type \"${type.name}\".` +\n Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__[\"didYouMean\"])(suggestions),\n ),\n );\n }\n }\n\n return coercedValue;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isLeafType\"])(type)) {\n let parseResult; // Scalars and Enums determine if a input value is valid via parseValue(),\n // which can throw to indicate failure. If it throws, maintain a reference\n // to the original error.\n\n try {\n parseResult = type.parseValue(inputValue);\n } catch (error) {\n if (error instanceof _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLError\"]) {\n onError(Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_5__[\"pathToArray\"])(path), inputValue, error);\n } else {\n onError(\n Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_5__[\"pathToArray\"])(path),\n inputValue,\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLError\"](`Expected type \"${type.name}\". ` + error.message, {\n originalError: error,\n }),\n );\n }\n\n return;\n }\n\n if (parseResult === undefined) {\n onError(\n Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_5__[\"pathToArray\"])(path),\n inputValue,\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLError\"](`Expected type \"${type.name}\".`),\n );\n }\n\n return parseResult;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__[\"invariant\"])(false, 'Unexpected input type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(type));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2NvZXJjZUlucHV0VmFsdWUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2NvZXJjZUlucHV0VmFsdWUubWpzPzk2YWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlkWW91TWVhbiB9IGZyb20gJy4uL2pzdXRpbHMvZGlkWW91TWVhbi5tanMnO1xuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vanN1dGlscy9pbnZhcmlhbnQubWpzJztcbmltcG9ydCB7IGlzSXRlcmFibGVPYmplY3QgfSBmcm9tICcuLi9qc3V0aWxzL2lzSXRlcmFibGVPYmplY3QubWpzJztcbmltcG9ydCB7IGlzT2JqZWN0TGlrZSB9IGZyb20gJy4uL2pzdXRpbHMvaXNPYmplY3RMaWtlLm1qcyc7XG5pbXBvcnQgeyBhZGRQYXRoLCBwYXRoVG9BcnJheSB9IGZyb20gJy4uL2pzdXRpbHMvUGF0aC5tanMnO1xuaW1wb3J0IHsgcHJpbnRQYXRoQXJyYXkgfSBmcm9tICcuLi9qc3V0aWxzL3ByaW50UGF0aEFycmF5Lm1qcyc7XG5pbXBvcnQgeyBzdWdnZXN0aW9uTGlzdCB9IGZyb20gJy4uL2pzdXRpbHMvc3VnZ2VzdGlvbkxpc3QubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHtcbiAgaXNJbnB1dE9iamVjdFR5cGUsXG4gIGlzTGVhZlR5cGUsXG4gIGlzTGlzdFR5cGUsXG4gIGlzTm9uTnVsbFR5cGUsXG59IGZyb20gJy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuXG4vKipcbiAqIENvZXJjZXMgYSBKYXZhU2NyaXB0IHZhbHVlIGdpdmVuIGEgR3JhcGhRTCBJbnB1dCBUeXBlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlSW5wdXRWYWx1ZShpbnB1dFZhbHVlLCB0eXBlLCBvbkVycm9yID0gZGVmYXVsdE9uRXJyb3IpIHtcbiAgcmV0dXJuIGNvZXJjZUlucHV0VmFsdWVJbXBsKGlucHV0VmFsdWUsIHR5cGUsIG9uRXJyb3IsIHVuZGVmaW5lZCk7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKHBhdGgsIGludmFsaWRWYWx1ZSwgZXJyb3IpIHtcbiAgbGV0IGVycm9yUHJlZml4ID0gJ0ludmFsaWQgdmFsdWUgJyArIGluc3BlY3QoaW52YWxpZFZhbHVlKTtcblxuICBpZiAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgZXJyb3JQcmVmaXggKz0gYCBhdCBcInZhbHVlJHtwcmludFBhdGhBcnJheShwYXRoKX1cImA7XG4gIH1cblxuICBlcnJvci5tZXNzYWdlID0gZXJyb3JQcmVmaXggKyAnOiAnICsgZXJyb3IubWVzc2FnZTtcbiAgdGhyb3cgZXJyb3I7XG59XG5cbmZ1bmN0aW9uIGNvZXJjZUlucHV0VmFsdWVJbXBsKGlucHV0VmFsdWUsIHR5cGUsIG9uRXJyb3IsIHBhdGgpIHtcbiAgaWYgKGlzTm9uTnVsbFR5cGUodHlwZSkpIHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gY29lcmNlSW5wdXRWYWx1ZUltcGwoaW5wdXRWYWx1ZSwgdHlwZS5vZlR5cGUsIG9uRXJyb3IsIHBhdGgpO1xuICAgIH1cblxuICAgIG9uRXJyb3IoXG4gICAgICBwYXRoVG9BcnJheShwYXRoKSxcbiAgICAgIGlucHV0VmFsdWUsXG4gICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgRXhwZWN0ZWQgbm9uLW51bGxhYmxlIHR5cGUgXCIke2luc3BlY3QodHlwZSl9XCIgbm90IHRvIGJlIG51bGwuYCxcbiAgICAgICksXG4gICAgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoaW5wdXRWYWx1ZSA9PSBudWxsKSB7XG4gICAgLy8gRXhwbGljaXRseSByZXR1cm4gdGhlIHZhbHVlIG51bGwuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoaXNMaXN0VHlwZSh0eXBlKSkge1xuICAgIGNvbnN0IGl0ZW1UeXBlID0gdHlwZS5vZlR5cGU7XG5cbiAgICBpZiAoaXNJdGVyYWJsZU9iamVjdChpbnB1dFZhbHVlKSkge1xuICAgICAgcmV0dXJuIEFycmF5LmZyb20oaW5wdXRWYWx1ZSwgKGl0ZW1WYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgaXRlbVBhdGggPSBhZGRQYXRoKHBhdGgsIGluZGV4LCB1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm4gY29lcmNlSW5wdXRWYWx1ZUltcGwoaXRlbVZhbHVlLCBpdGVtVHlwZSwgb25FcnJvciwgaXRlbVBhdGgpO1xuICAgICAgfSk7XG4gICAgfSAvLyBMaXN0cyBhY2NlcHQgYSBub24tbGlzdCB2YWx1ZSBhcyBhIGxpc3Qgb2Ygb25lLlxuXG4gICAgcmV0dXJuIFtjb2VyY2VJbnB1dFZhbHVlSW1wbChpbnB1dFZhbHVlLCBpdGVtVHlwZSwgb25FcnJvciwgcGF0aCldO1xuICB9XG5cbiAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgaWYgKCFpc09iamVjdExpa2UoaW5wdXRWYWx1ZSkpIHtcbiAgICAgIG9uRXJyb3IoXG4gICAgICAgIHBhdGhUb0FycmF5KHBhdGgpLFxuICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICBuZXcgR3JhcGhRTEVycm9yKGBFeHBlY3RlZCB0eXBlIFwiJHt0eXBlLm5hbWV9XCIgdG8gYmUgYW4gb2JqZWN0LmApLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSB7fTtcbiAgICBjb25zdCBmaWVsZERlZnMgPSB0eXBlLmdldEZpZWxkcygpO1xuXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBPYmplY3QudmFsdWVzKGZpZWxkRGVmcykpIHtcbiAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSBpbnB1dFZhbHVlW2ZpZWxkLm5hbWVdO1xuXG4gICAgICBpZiAoZmllbGRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChmaWVsZC5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvZXJjZWRWYWx1ZVtmaWVsZC5uYW1lXSA9IGZpZWxkLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChpc05vbk51bGxUeXBlKGZpZWxkLnR5cGUpKSB7XG4gICAgICAgICAgY29uc3QgdHlwZVN0ciA9IGluc3BlY3QoZmllbGQudHlwZSk7XG4gICAgICAgICAgb25FcnJvcihcbiAgICAgICAgICAgIHBhdGhUb0FycmF5KHBhdGgpLFxuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAgIGBGaWVsZCBcIiR7ZmllbGQubmFtZX1cIiBvZiByZXF1aXJlZCB0eXBlIFwiJHt0eXBlU3RyfVwiIHdhcyBub3QgcHJvdmlkZWQuYCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb2VyY2VkVmFsdWVbZmllbGQubmFtZV0gPSBjb2VyY2VJbnB1dFZhbHVlSW1wbChcbiAgICAgICAgZmllbGRWYWx1ZSxcbiAgICAgICAgZmllbGQudHlwZSxcbiAgICAgICAgb25FcnJvcixcbiAgICAgICAgYWRkUGF0aChwYXRoLCBmaWVsZC5uYW1lLCB0eXBlLm5hbWUpLFxuICAgICAgKTtcbiAgICB9IC8vIEVuc3VyZSBldmVyeSBwcm92aWRlZCBmaWVsZCBpcyBkZWZpbmVkLlxuXG4gICAgZm9yIChjb25zdCBmaWVsZE5hbWUgb2YgT2JqZWN0LmtleXMoaW5wdXRWYWx1ZSkpIHtcbiAgICAgIGlmICghZmllbGREZWZzW2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9uTGlzdChcbiAgICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgICAgT2JqZWN0LmtleXModHlwZS5nZXRGaWVsZHMoKSksXG4gICAgICAgICk7XG4gICAgICAgIG9uRXJyb3IoXG4gICAgICAgICAgcGF0aFRvQXJyYXkocGF0aCksXG4gICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYEZpZWxkIFwiJHtmaWVsZE5hbWV9XCIgaXMgbm90IGRlZmluZWQgYnkgdHlwZSBcIiR7dHlwZS5uYW1lfVwiLmAgK1xuICAgICAgICAgICAgICBkaWRZb3VNZWFuKHN1Z2dlc3Rpb25zKSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb2VyY2VkVmFsdWU7XG4gIH1cblxuICBpZiAoaXNMZWFmVHlwZSh0eXBlKSkge1xuICAgIGxldCBwYXJzZVJlc3VsdDsgLy8gU2NhbGFycyBhbmQgRW51bXMgZGV0ZXJtaW5lIGlmIGEgaW5wdXQgdmFsdWUgaXMgdmFsaWQgdmlhIHBhcnNlVmFsdWUoKSxcbiAgICAvLyB3aGljaCBjYW4gdGhyb3cgdG8gaW5kaWNhdGUgZmFpbHVyZS4gSWYgaXQgdGhyb3dzLCBtYWludGFpbiBhIHJlZmVyZW5jZVxuICAgIC8vIHRvIHRoZSBvcmlnaW5hbCBlcnJvci5cblxuICAgIHRyeSB7XG4gICAgICBwYXJzZVJlc3VsdCA9IHR5cGUucGFyc2VWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgR3JhcGhRTEVycm9yKSB7XG4gICAgICAgIG9uRXJyb3IocGF0aFRvQXJyYXkocGF0aCksIGlucHV0VmFsdWUsIGVycm9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uRXJyb3IoXG4gICAgICAgICAgcGF0aFRvQXJyYXkocGF0aCksXG4gICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKGBFeHBlY3RlZCB0eXBlIFwiJHt0eXBlLm5hbWV9XCIuIGAgKyBlcnJvci5tZXNzYWdlLCB7XG4gICAgICAgICAgICBvcmlnaW5hbEVycm9yOiBlcnJvcixcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwYXJzZVJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvbkVycm9yKFxuICAgICAgICBwYXRoVG9BcnJheShwYXRoKSxcbiAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihgRXhwZWN0ZWQgdHlwZSBcIiR7dHlwZS5uYW1lfVwiLmApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VSZXN1bHQ7XG4gIH1cbiAgLyogYzggaWdub3JlIG5leHQgMyAqL1xuICAvLyBOb3QgcmVhY2hhYmxlLCBhbGwgcG9zc2libGUgdHlwZXMgaGF2ZSBiZWVuIGNvbnNpZGVyZWQuXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KGZhbHNlLCAnVW5leHBlY3RlZCBpbnB1dCB0eXBlOiAnICsgaW5zcGVjdCh0eXBlKSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/coerceInputValue.mjs\n");
|
961 |
|
962 | }),
|
963 |
|
964 | "../../../node_modules/graphql/utilities/concatAST.mjs":
|
965 |
|
966 |
|
967 |
|
968 |
|
969 | (function(module, __webpack_exports__, __webpack_require__) {
|
970 |
|
971 | "use strict";
|
972 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"concatAST\", function() { return concatAST; });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n\n/**\n * Provided a collection of ASTs, presumably each from different files,\n * concatenate the ASTs together into batched AST, useful for validating many\n * GraphQL source files which together represent one conceptual application.\n */\n\nfunction concatAST(documents) {\n const definitions = [];\n\n for (const doc of documents) {\n definitions.push(...doc.definitions);\n }\n\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].DOCUMENT,\n definitions,\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2NvbmNhdEFTVC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvY29uY2F0QVNULm1qcz84MTc2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuLyoqXG4gKiBQcm92aWRlZCBhIGNvbGxlY3Rpb24gb2YgQVNUcywgcHJlc3VtYWJseSBlYWNoIGZyb20gZGlmZmVyZW50IGZpbGVzLFxuICogY29uY2F0ZW5hdGUgdGhlIEFTVHMgdG9nZXRoZXIgaW50byBiYXRjaGVkIEFTVCwgdXNlZnVsIGZvciB2YWxpZGF0aW5nIG1hbnlcbiAqIEdyYXBoUUwgc291cmNlIGZpbGVzIHdoaWNoIHRvZ2V0aGVyIHJlcHJlc2VudCBvbmUgY29uY2VwdHVhbCBhcHBsaWNhdGlvbi5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0QVNUKGRvY3VtZW50cykge1xuICBjb25zdCBkZWZpbml0aW9ucyA9IFtdO1xuXG4gIGZvciAoY29uc3QgZG9jIG9mIGRvY3VtZW50cykge1xuICAgIGRlZmluaXRpb25zLnB1c2goLi4uZG9jLmRlZmluaXRpb25zKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAga2luZDogS2luZC5ET0NVTUVOVCxcbiAgICBkZWZpbml0aW9ucyxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/concatAST.mjs\n");
|
973 |
|
974 | }),
|
975 |
|
976 | "../../../node_modules/graphql/utilities/extendSchema.mjs":
|
977 |
|
978 |
|
979 |
|
980 |
|
981 | (function(module, __webpack_exports__, __webpack_require__) {
|
982 |
|
983 | "use strict";
|
984 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extendSchema\", function() { return extendSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extendSchemaImpl\", function() { return extendSchemaImpl; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/mapValue.mjs */ \"../../../node_modules/graphql/jsutils/mapValue.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../language/predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _type_schema_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../type/schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n/* harmony import */ var _validation_validate_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../validation/validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n/* harmony import */ var _execution_values_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../execution/values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n/* harmony import */ var _valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./valueFromAST.mjs */ \"../../../node_modules/graphql/utilities/valueFromAST.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Produces a new schema given an existing schema and a document which may\n * contain GraphQL type extensions and definitions. The original schema will\n * remain unaltered.\n *\n * Because a schema represents a graph of references, a schema cannot be\n * extended without effectively making an entire copy. We do not know until it's\n * too late if subgraphs remain unchanged.\n *\n * This algorithm copies the provided schema, applying extensions while\n * producing the copy. The original schema remains unaltered.\n */\nfunction extendSchema(schema, documentAST, options) {\n Object(_type_schema_mjs__WEBPACK_IMPORTED_MODULE_11__[\"assertSchema\"])(schema);\n (documentAST != null && documentAST.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].DOCUMENT) ||\n Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(false, 'Must provide valid Document AST.');\n\n if (\n (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n true &&\n (options === null || options === void 0\n ? void 0\n : options.assumeValidSDL) !== true\n ) {\n Object(_validation_validate_mjs__WEBPACK_IMPORTED_MODULE_12__[\"assertValidSDLExtension\"])(documentAST, schema);\n }\n\n const schemaConfig = schema.toConfig();\n const extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);\n return schemaConfig === extendedConfig\n ? schema\n : new _type_schema_mjs__WEBPACK_IMPORTED_MODULE_11__[\"GraphQLSchema\"](extendedConfig);\n}\n/**\n * @internal\n */\n\nfunction extendSchemaImpl(schemaConfig, documentAST, options) {\n var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;\n\n // Collect the type definitions and extensions found in the document.\n const typeDefs = [];\n const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can\n // have the same name. For example, a type named \"skip\".\n\n const directiveDefs = [];\n let schemaDef; // Schema extensions are collected which may add additional operation types.\n\n const schemaExtensions = [];\n\n for (const def of documentAST.definitions) {\n if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCHEMA_DEFINITION) {\n schemaDef = def;\n } else if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCHEMA_EXTENSION) {\n schemaExtensions.push(def);\n } else if (Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isTypeDefinitionNode\"])(def)) {\n typeDefs.push(def);\n } else if (Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isTypeExtensionNode\"])(def)) {\n const extendedTypeName = def.name.value;\n const existingTypeExtensions = typeExtensionsMap[extendedTypeName];\n typeExtensionsMap[extendedTypeName] = existingTypeExtensions\n ? existingTypeExtensions.concat([def])\n : [def];\n } else if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].DIRECTIVE_DEFINITION) {\n directiveDefs.push(def);\n }\n } // If this document contains no new types, extensions, or directives then\n // return the same unmodified GraphQLSchema instance.\n\n if (\n Object.keys(typeExtensionsMap).length === 0 &&\n typeDefs.length === 0 &&\n directiveDefs.length === 0 &&\n schemaExtensions.length === 0 &&\n schemaDef == null\n ) {\n return schemaConfig;\n }\n\n const typeMap = Object.create(null);\n\n for (const existingType of schemaConfig.types) {\n typeMap[existingType.name] = extendNamedType(existingType);\n }\n\n for (const typeNode of typeDefs) {\n var _stdTypeMap$name;\n\n const name = typeNode.name.value;\n typeMap[name] =\n (_stdTypeMap$name = stdTypeMap[name]) !== null &&\n _stdTypeMap$name !== void 0\n ? _stdTypeMap$name\n : buildType(typeNode);\n }\n\n const operationTypes = {\n // Get the extended root operation types.\n query: schemaConfig.query && replaceNamedType(schemaConfig.query),\n mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),\n subscription:\n schemaConfig.subscription && replaceNamedType(schemaConfig.subscription),\n // Then, incorporate schema definition and all schema extensions.\n ...(schemaDef && getOperationTypes([schemaDef])),\n ...getOperationTypes(schemaExtensions),\n }; // Then produce and return a Schema config with these types.\n\n return {\n description:\n (_schemaDef = schemaDef) === null || _schemaDef === void 0\n ? void 0\n : (_schemaDef$descriptio = _schemaDef.description) === null ||\n _schemaDef$descriptio === void 0\n ? void 0\n : _schemaDef$descriptio.value,\n ...operationTypes,\n types: Object.values(typeMap),\n directives: [\n ...schemaConfig.directives.map(replaceDirective),\n ...directiveDefs.map(buildDirective),\n ],\n extensions: Object.create(null),\n astNode:\n (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0\n ? _schemaDef2\n : schemaConfig.astNode,\n extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),\n assumeValid:\n (_options$assumeValid =\n options === null || options === void 0\n ? void 0\n : options.assumeValid) !== null && _options$assumeValid !== void 0\n ? _options$assumeValid\n : false,\n }; // Below are functions used for producing this schema that have closed over\n // this scope and have access to the schema, cache, and newly defined types.\n\n function replaceType(type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isListType\"])(type)) {\n // @ts-expect-error\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](replaceType(type.ofType));\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(type)) {\n // @ts-expect-error\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](replaceType(type.ofType));\n } // @ts-expect-error FIXME\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n // Note: While this could make early assertions to get the correctly\n // typed values, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n return typeMap[type.name];\n }\n\n function replaceDirective(directive) {\n const config = directive.toConfig();\n return new _type_directives_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLDirective\"]({\n ...config,\n args: Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_4__[\"mapValue\"])(config.args, extendArg),\n });\n }\n\n function extendNamedType(type) {\n if (Object(_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isIntrospectionType\"])(type) || Object(_type_scalars_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isSpecifiedScalarType\"])(type)) {\n // Builtin types are not extended.\n return type;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isScalarType\"])(type)) {\n return extendScalarType(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isObjectType\"])(type)) {\n return extendObjectType(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInterfaceType\"])(type)) {\n return extendInterfaceType(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isUnionType\"])(type)) {\n return extendUnionType(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isEnumType\"])(type)) {\n return extendEnumType(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInputObjectType\"])(type)) {\n return extendInputObjectType(type);\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible type definition nodes have been considered.\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__[\"invariant\"])(false, 'Unexpected type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(type));\n }\n\n function extendInputObjectType(type) {\n var _typeExtensionsMap$co;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co !== void 0\n ? _typeExtensionsMap$co\n : [];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLInputObjectType\"]({\n ...config,\n fields: () => ({\n ...Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_4__[\"mapValue\"])(config.fields, (field) => ({\n ...field,\n type: replaceType(field.type),\n })),\n ...buildInputFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendEnumType(type) {\n var _typeExtensionsMap$ty;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null &&\n _typeExtensionsMap$ty !== void 0\n ? _typeExtensionsMap$ty\n : [];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLEnumType\"]({\n ...config,\n values: { ...config.values, ...buildEnumValueMap(extensions) },\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendScalarType(type) {\n var _typeExtensionsMap$co2;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co2 !== void 0\n ? _typeExtensionsMap$co2\n : [];\n let specifiedByURL = config.specifiedByURL;\n\n for (const extensionNode of extensions) {\n var _getSpecifiedByURL;\n\n specifiedByURL =\n (_getSpecifiedByURL = getSpecifiedByURL(extensionNode)) !== null &&\n _getSpecifiedByURL !== void 0\n ? _getSpecifiedByURL\n : specifiedByURL;\n }\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLScalarType\"]({\n ...config,\n specifiedByURL,\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendObjectType(type) {\n var _typeExtensionsMap$co3;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co3 !== void 0\n ? _typeExtensionsMap$co3\n : [];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLObjectType\"]({\n ...config,\n interfaces: () => [\n ...type.getInterfaces().map(replaceNamedType),\n ...buildInterfaces(extensions),\n ],\n fields: () => ({\n ...Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_4__[\"mapValue\"])(config.fields, extendField),\n ...buildFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendInterfaceType(type) {\n var _typeExtensionsMap$co4;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co4 !== void 0\n ? _typeExtensionsMap$co4\n : [];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLInterfaceType\"]({\n ...config,\n interfaces: () => [\n ...type.getInterfaces().map(replaceNamedType),\n ...buildInterfaces(extensions),\n ],\n fields: () => ({\n ...Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_4__[\"mapValue\"])(config.fields, extendField),\n ...buildFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendUnionType(type) {\n var _typeExtensionsMap$co5;\n\n const config = type.toConfig();\n const extensions =\n (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null &&\n _typeExtensionsMap$co5 !== void 0\n ? _typeExtensionsMap$co5\n : [];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLUnionType\"]({\n ...config,\n types: () => [\n ...type.getTypes().map(replaceNamedType),\n ...buildUnionTypes(extensions),\n ],\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n });\n }\n\n function extendField(field) {\n return {\n ...field,\n type: replaceType(field.type),\n args: field.args && Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_4__[\"mapValue\"])(field.args, extendArg),\n };\n }\n\n function extendArg(arg) {\n return { ...arg, type: replaceType(arg.type) };\n }\n\n function getOperationTypes(nodes) {\n const opTypes = {};\n\n for (const node of nodes) {\n var _node$operationTypes;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const operationTypesNodes =\n /* c8 ignore next */\n (_node$operationTypes = node.operationTypes) !== null &&\n _node$operationTypes !== void 0\n ? _node$operationTypes\n : [];\n\n for (const operationType of operationTypesNodes) {\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n opTypes[operationType.operation] = getNamedType(operationType.type);\n }\n }\n\n return opTypes;\n }\n\n function getNamedType(node) {\n var _stdTypeMap$name2;\n\n const name = node.name.value;\n const type =\n (_stdTypeMap$name2 = stdTypeMap[name]) !== null &&\n _stdTypeMap$name2 !== void 0\n ? _stdTypeMap$name2\n : typeMap[name];\n\n if (type === undefined) {\n throw new Error(`Unknown type: \"${name}\".`);\n }\n\n return type;\n }\n\n function getWrappedType(node) {\n if (node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].LIST_TYPE) {\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](getWrappedType(node.type));\n }\n\n if (node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].NON_NULL_TYPE) {\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](getWrappedType(node.type));\n }\n\n return getNamedType(node);\n }\n\n function buildDirective(node) {\n var _node$description;\n\n return new _type_directives_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLDirective\"]({\n name: node.name.value,\n description:\n (_node$description = node.description) === null ||\n _node$description === void 0\n ? void 0\n : _node$description.value,\n // @ts-expect-error\n locations: node.locations.map(({ value }) => value),\n isRepeatable: node.repeatable,\n args: buildArgumentMap(node.arguments),\n astNode: node,\n });\n }\n\n function buildFieldMap(nodes) {\n const fieldConfigMap = Object.create(null);\n\n for (const node of nodes) {\n var _node$fields;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const nodeFields =\n /* c8 ignore next */\n (_node$fields = node.fields) !== null && _node$fields !== void 0\n ? _node$fields\n : [];\n\n for (const field of nodeFields) {\n var _field$description;\n\n fieldConfigMap[field.name.value] = {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n type: getWrappedType(field.type),\n description:\n (_field$description = field.description) === null ||\n _field$description === void 0\n ? void 0\n : _field$description.value,\n args: buildArgumentMap(field.arguments),\n deprecationReason: getDeprecationReason(field),\n astNode: field,\n };\n }\n }\n\n return fieldConfigMap;\n }\n\n function buildArgumentMap(args) {\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const argsNodes =\n /* c8 ignore next */\n args !== null && args !== void 0 ? args : [];\n const argConfigMap = Object.create(null);\n\n for (const arg of argsNodes) {\n var _arg$description;\n\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n const type = getWrappedType(arg.type);\n argConfigMap[arg.name.value] = {\n type,\n description:\n (_arg$description = arg.description) === null ||\n _arg$description === void 0\n ? void 0\n : _arg$description.value,\n defaultValue: Object(_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_14__[\"valueFromAST\"])(arg.defaultValue, type),\n deprecationReason: getDeprecationReason(arg),\n astNode: arg,\n };\n }\n\n return argConfigMap;\n }\n\n function buildInputFieldMap(nodes) {\n const inputFieldMap = Object.create(null);\n\n for (const node of nodes) {\n var _node$fields2;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const fieldsNodes =\n /* c8 ignore next */\n (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0\n ? _node$fields2\n : [];\n\n for (const field of fieldsNodes) {\n var _field$description2;\n\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n const type = getWrappedType(field.type);\n inputFieldMap[field.name.value] = {\n type,\n description:\n (_field$description2 = field.description) === null ||\n _field$description2 === void 0\n ? void 0\n : _field$description2.value,\n defaultValue: Object(_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_14__[\"valueFromAST\"])(field.defaultValue, type),\n deprecationReason: getDeprecationReason(field),\n astNode: field,\n };\n }\n }\n\n return inputFieldMap;\n }\n\n function buildEnumValueMap(nodes) {\n const enumValueMap = Object.create(null);\n\n for (const node of nodes) {\n var _node$values;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n const valuesNodes =\n /* c8 ignore next */\n (_node$values = node.values) !== null && _node$values !== void 0\n ? _node$values\n : [];\n\n for (const value of valuesNodes) {\n var _value$description;\n\n enumValueMap[value.name.value] = {\n description:\n (_value$description = value.description) === null ||\n _value$description === void 0\n ? void 0\n : _value$description.value,\n deprecationReason: getDeprecationReason(value),\n astNode: value,\n };\n }\n }\n\n return enumValueMap;\n }\n\n function buildInterfaces(nodes) {\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n return nodes.flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (node) => {\n var _node$interfaces$map, _node$interfaces;\n\n return (\n /* c8 ignore next */\n (_node$interfaces$map =\n (_node$interfaces = node.interfaces) === null ||\n _node$interfaces === void 0\n ? void 0\n : _node$interfaces.map(getNamedType)) !== null &&\n _node$interfaces$map !== void 0\n ? _node$interfaces$map\n : []\n );\n },\n );\n }\n\n function buildUnionTypes(nodes) {\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n return nodes.flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (node) => {\n var _node$types$map, _node$types;\n\n return (\n /* c8 ignore next */\n (_node$types$map =\n (_node$types = node.types) === null || _node$types === void 0\n ? void 0\n : _node$types.map(getNamedType)) !== null &&\n _node$types$map !== void 0\n ? _node$types$map\n : []\n );\n },\n );\n }\n\n function buildType(astNode) {\n var _typeExtensionsMap$na;\n\n const name = astNode.name.value;\n const extensionASTNodes =\n (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null &&\n _typeExtensionsMap$na !== void 0\n ? _typeExtensionsMap$na\n : [];\n\n switch (astNode.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].OBJECT_TYPE_DEFINITION: {\n var _astNode$description;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLObjectType\"]({\n name,\n description:\n (_astNode$description = astNode.description) === null ||\n _astNode$description === void 0\n ? void 0\n : _astNode$description.value,\n interfaces: () => buildInterfaces(allNodes),\n fields: () => buildFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INTERFACE_TYPE_DEFINITION: {\n var _astNode$description2;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLInterfaceType\"]({\n name,\n description:\n (_astNode$description2 = astNode.description) === null ||\n _astNode$description2 === void 0\n ? void 0\n : _astNode$description2.value,\n interfaces: () => buildInterfaces(allNodes),\n fields: () => buildFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].ENUM_TYPE_DEFINITION: {\n var _astNode$description3;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLEnumType\"]({\n name,\n description:\n (_astNode$description3 = astNode.description) === null ||\n _astNode$description3 === void 0\n ? void 0\n : _astNode$description3.value,\n values: buildEnumValueMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].UNION_TYPE_DEFINITION: {\n var _astNode$description4;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLUnionType\"]({\n name,\n description:\n (_astNode$description4 = astNode.description) === null ||\n _astNode$description4 === void 0\n ? void 0\n : _astNode$description4.value,\n types: () => buildUnionTypes(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCALAR_TYPE_DEFINITION: {\n var _astNode$description5;\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLScalarType\"]({\n name,\n description:\n (_astNode$description5 = astNode.description) === null ||\n _astNode$description5 === void 0\n ? void 0\n : _astNode$description5.value,\n specifiedByURL: getSpecifiedByURL(astNode),\n astNode,\n extensionASTNodes,\n });\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_OBJECT_TYPE_DEFINITION: {\n var _astNode$description6;\n\n const allNodes = [astNode, ...extensionASTNodes];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLInputObjectType\"]({\n name,\n description:\n (_astNode$description6 = astNode.description) === null ||\n _astNode$description6 === void 0\n ? void 0\n : _astNode$description6.value,\n fields: () => buildInputFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n }\n }\n}\nconst stdTypeMap = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"keyMap\"])(\n [..._type_scalars_mjs__WEBPACK_IMPORTED_MODULE_10__[\"specifiedScalarTypes\"], ..._type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"introspectionTypes\"]],\n (type) => type.name,\n);\n/**\n * Given a field or enum value node, returns the string value for the\n * deprecation reason.\n */\n\nfunction getDeprecationReason(node) {\n const deprecated = Object(_execution_values_mjs__WEBPACK_IMPORTED_MODULE_13__[\"getDirectiveValues\"])(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLDeprecatedDirective\"], node); // @ts-expect-error validated by `getDirectiveValues`\n\n return deprecated === null || deprecated === void 0\n ? void 0\n : deprecated.reason;\n}\n/**\n * Given a scalar node, returns the string value for the specifiedByURL.\n */\n\nfunction getSpecifiedByURL(node) {\n const specifiedBy = Object(_execution_values_mjs__WEBPACK_IMPORTED_MODULE_13__[\"getDirectiveValues\"])(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLSpecifiedByDirective\"], node); // @ts-expect-error validated by `getDirectiveValues`\n\n return specifiedBy === null || specifiedBy === void 0\n ? void 0\n : specifiedBy.url;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2V4dGVuZFNjaGVtYS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvZXh0ZW5kU2NoZW1hLm1qcz8wM2ZiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRldkFzc2VydCB9IGZyb20gJy4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qcyc7XG5pbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICcuLi9qc3V0aWxzL2ludmFyaWFudC5tanMnO1xuaW1wb3J0IHsga2V5TWFwIH0gZnJvbSAnLi4vanN1dGlscy9rZXlNYXAubWpzJztcbmltcG9ydCB7IG1hcFZhbHVlIH0gZnJvbSAnLi4vanN1dGlscy9tYXBWYWx1ZS5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQge1xuICBpc1R5cGVEZWZpbml0aW9uTm9kZSxcbiAgaXNUeXBlRXh0ZW5zaW9uTm9kZSxcbn0gZnJvbSAnLi4vbGFuZ3VhZ2UvcHJlZGljYXRlcy5tanMnO1xuaW1wb3J0IHtcbiAgR3JhcGhRTEVudW1UeXBlLFxuICBHcmFwaFFMSW5wdXRPYmplY3RUeXBlLFxuICBHcmFwaFFMSW50ZXJmYWNlVHlwZSxcbiAgR3JhcGhRTExpc3QsXG4gIEdyYXBoUUxOb25OdWxsLFxuICBHcmFwaFFMT2JqZWN0VHlwZSxcbiAgR3JhcGhRTFNjYWxhclR5cGUsXG4gIEdyYXBoUUxVbmlvblR5cGUsXG4gIGlzRW51bVR5cGUsXG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzTGlzdFR5cGUsXG4gIGlzTm9uTnVsbFR5cGUsXG4gIGlzT2JqZWN0VHlwZSxcbiAgaXNTY2FsYXJUeXBlLFxuICBpc1VuaW9uVHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQge1xuICBHcmFwaFFMRGVwcmVjYXRlZERpcmVjdGl2ZSxcbiAgR3JhcGhRTERpcmVjdGl2ZSxcbiAgR3JhcGhRTFNwZWNpZmllZEJ5RGlyZWN0aXZlLFxufSBmcm9tICcuLi90eXBlL2RpcmVjdGl2ZXMubWpzJztcbmltcG9ydCB7XG4gIGludHJvc3BlY3Rpb25UeXBlcyxcbiAgaXNJbnRyb3NwZWN0aW9uVHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9pbnRyb3NwZWN0aW9uLm1qcyc7XG5pbXBvcnQge1xuICBpc1NwZWNpZmllZFNjYWxhclR5cGUsXG4gIHNwZWNpZmllZFNjYWxhclR5cGVzLFxufSBmcm9tICcuLi90eXBlL3NjYWxhcnMubWpzJztcbmltcG9ydCB7IGFzc2VydFNjaGVtYSwgR3JhcGhRTFNjaGVtYSB9IGZyb20gJy4uL3R5cGUvc2NoZW1hLm1qcyc7XG5pbXBvcnQgeyBhc3NlcnRWYWxpZFNETEV4dGVuc2lvbiB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGUubWpzJztcbmltcG9ydCB7IGdldERpcmVjdGl2ZVZhbHVlcyB9IGZyb20gJy4uL2V4ZWN1dGlvbi92YWx1ZXMubWpzJztcbmltcG9ydCB7IHZhbHVlRnJvbUFTVCB9IGZyb20gJy4vdmFsdWVGcm9tQVNULm1qcyc7XG5cbi8qKlxuICogUHJvZHVjZXMgYSBuZXcgc2NoZW1hIGdpdmVuIGFuIGV4aXN0aW5nIHNjaGVtYSBhbmQgYSBkb2N1bWVudCB3aGljaCBtYXlcbiAqIGNvbnRhaW4gR3JhcGhRTCB0eXBlIGV4dGVuc2lvbnMgYW5kIGRlZmluaXRpb25zLiBUaGUgb3JpZ2luYWwgc2NoZW1hIHdpbGxcbiAqIHJlbWFpbiB1bmFsdGVyZWQuXG4gKlxuICogQmVjYXVzZSBhIHNjaGVtYSByZXByZXNlbnRzIGEgZ3JhcGggb2YgcmVmZXJlbmNlcywgYSBzY2hlbWEgY2Fubm90IGJlXG4gKiBleHRlbmRlZCB3aXRob3V0IGVmZmVjdGl2ZWx5IG1ha2luZyBhbiBlbnRpcmUgY29weS4gV2UgZG8gbm90IGtub3cgdW50aWwgaXQnc1xuICogdG9vIGxhdGUgaWYgc3ViZ3JhcGhzIHJlbWFpbiB1bmNoYW5nZWQuXG4gKlxuICogVGhpcyBhbGdvcml0aG0gY29waWVzIHRoZSBwcm92aWRlZCBzY2hlbWEsIGFwcGx5aW5nIGV4dGVuc2lvbnMgd2hpbGVcbiAqIHByb2R1Y2luZyB0aGUgY29weS4gVGhlIG9yaWdpbmFsIHNjaGVtYSByZW1haW5zIHVuYWx0ZXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZFNjaGVtYShzY2hlbWEsIGRvY3VtZW50QVNULCBvcHRpb25zKSB7XG4gIGFzc2VydFNjaGVtYShzY2hlbWEpO1xuICAoZG9jdW1lbnRBU1QgIT0gbnVsbCAmJiBkb2N1bWVudEFTVC5raW5kID09PSBLaW5kLkRPQ1VNRU5UKSB8fFxuICAgIGRldkFzc2VydChmYWxzZSwgJ011c3QgcHJvdmlkZSB2YWxpZCBEb2N1bWVudCBBU1QuJyk7XG5cbiAgaWYgKFxuICAgIChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYXNzdW1lVmFsaWQpICE9PVxuICAgICAgdHJ1ZSAmJlxuICAgIChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMFxuICAgICAgPyB2b2lkIDBcbiAgICAgIDogb3B0aW9ucy5hc3N1bWVWYWxpZFNETCkgIT09IHRydWVcbiAgKSB7XG4gICAgYXNzZXJ0VmFsaWRTRExFeHRlbnNpb24oZG9jdW1lbnRBU1QsIHNjaGVtYSk7XG4gIH1cblxuICBjb25zdCBzY2hlbWFDb25maWcgPSBzY2hlbWEudG9Db25maWcoKTtcbiAgY29uc3QgZXh0ZW5kZWRDb25maWcgPSBleHRlbmRTY2hlbWFJbXBsKHNjaGVtYUNvbmZpZywgZG9jdW1lbnRBU1QsIG9wdGlvbnMpO1xuICByZXR1cm4gc2NoZW1hQ29uZmlnID09PSBleHRlbmRlZENvbmZpZ1xuICAgID8gc2NoZW1hXG4gICAgOiBuZXcgR3JhcGhRTFNjaGVtYShleHRlbmRlZENvbmZpZyk7XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmRTY2hlbWFJbXBsKHNjaGVtYUNvbmZpZywgZG9jdW1lbnRBU1QsIG9wdGlvbnMpIHtcbiAgdmFyIF9zY2hlbWFEZWYsIF9zY2hlbWFEZWYkZGVzY3JpcHRpbywgX3NjaGVtYURlZjIsIF9vcHRpb25zJGFzc3VtZVZhbGlkO1xuXG4gIC8vIENvbGxlY3QgdGhlIHR5cGUgZGVmaW5pdGlvbnMgYW5kIGV4dGVuc2lvbnMgZm91bmQgaW4gdGhlIGRvY3VtZW50LlxuICBjb25zdCB0eXBlRGVmcyA9IFtdO1xuICBjb25zdCB0eXBlRXh0ZW5zaW9uc01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7IC8vIE5ldyBkaXJlY3RpdmVzIGFuZCB0eXBlcyBhcmUgc2VwYXJhdGUgYmVjYXVzZSBhIGRpcmVjdGl2ZXMgYW5kIHR5cGVzIGNhblxuICAvLyBoYXZlIHRoZSBzYW1lIG5hbWUuIEZvciBleGFtcGxlLCBhIHR5cGUgbmFtZWQgXCJza2lwXCIuXG5cbiAgY29uc3QgZGlyZWN0aXZlRGVmcyA9IFtdO1xuICBsZXQgc2NoZW1hRGVmOyAvLyBTY2hlbWEgZXh0ZW5zaW9ucyBhcmUgY29sbGVjdGVkIHdoaWNoIG1heSBhZGQgYWRkaXRpb25hbCBvcGVyYXRpb24gdHlwZXMuXG5cbiAgY29uc3Qgc2NoZW1hRXh0ZW5zaW9ucyA9IFtdO1xuXG4gIGZvciAoY29uc3QgZGVmIG9mIGRvY3VtZW50QVNULmRlZmluaXRpb25zKSB7XG4gICAgaWYgKGRlZi5raW5kID09PSBLaW5kLlNDSEVNQV9ERUZJTklUSU9OKSB7XG4gICAgICBzY2hlbWFEZWYgPSBkZWY7XG4gICAgfSBlbHNlIGlmIChkZWYua2luZCA9PT0gS2luZC5TQ0hFTUFfRVhURU5TSU9OKSB7XG4gICAgICBzY2hlbWFFeHRlbnNpb25zLnB1c2goZGVmKTtcbiAgICB9IGVsc2UgaWYgKGlzVHlwZURlZmluaXRpb25Ob2RlKGRlZikpIHtcbiAgICAgIHR5cGVEZWZzLnB1c2goZGVmKTtcbiAgICB9IGVsc2UgaWYgKGlzVHlwZUV4dGVuc2lvbk5vZGUoZGVmKSkge1xuICAgICAgY29uc3QgZXh0ZW5kZWRUeXBlTmFtZSA9IGRlZi5uYW1lLnZhbHVlO1xuICAgICAgY29uc3QgZXhpc3RpbmdUeXBlRXh0ZW5zaW9ucyA9IHR5cGVFeHRlbnNpb25zTWFwW2V4dGVuZGVkVHlwZU5hbWVdO1xuICAgICAgdHlwZUV4dGVuc2lvbnNNYXBbZXh0ZW5kZWRUeXBlTmFtZV0gPSBleGlzdGluZ1R5cGVFeHRlbnNpb25zXG4gICAgICAgID8gZXhpc3RpbmdUeXBlRXh0ZW5zaW9ucy5jb25jYXQoW2RlZl0pXG4gICAgICAgIDogW2RlZl07XG4gICAgfSBlbHNlIGlmIChkZWYua2luZCA9PT0gS2luZC5ESVJFQ1RJVkVfREVGSU5JVElPTikge1xuICAgICAgZGlyZWN0aXZlRGVmcy5wdXNoKGRlZik7XG4gICAgfVxuICB9IC8vIElmIHRoaXMgZG9jdW1lbnQgY29udGFpbnMgbm8gbmV3IHR5cGVzLCBleHRlbnNpb25zLCBvciBkaXJlY3RpdmVzIHRoZW5cbiAgLy8gcmV0dXJuIHRoZSBzYW1lIHVubW9kaWZpZWQgR3JhcGhRTFNjaGVtYSBpbnN0YW5jZS5cblxuICBpZiAoXG4gICAgT2JqZWN0LmtleXModHlwZUV4dGVuc2lvbnNNYXApLmxlbmd0aCA9PT0gMCAmJlxuICAgIHR5cGVEZWZzLmxlbmd0aCA9PT0gMCAmJlxuICAgIGRpcmVjdGl2ZURlZnMubGVuZ3RoID09PSAwICYmXG4gICAgc2NoZW1hRXh0ZW5zaW9ucy5sZW5ndGggPT09IDAgJiZcbiAgICBzY2hlbWFEZWYgPT0gbnVsbFxuICApIHtcbiAgICByZXR1cm4gc2NoZW1hQ29uZmlnO1xuICB9XG5cbiAgY29uc3QgdHlwZU1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yIChjb25zdCBleGlzdGluZ1R5cGUgb2Ygc2NoZW1hQ29uZmlnLnR5cGVzKSB7XG4gICAgdHlwZU1hcFtleGlzdGluZ1R5cGUubmFtZV0gPSBleHRlbmROYW1lZFR5cGUoZXhpc3RpbmdUeXBlKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgdHlwZU5vZGUgb2YgdHlwZURlZnMpIHtcbiAgICB2YXIgX3N0ZFR5cGVNYXAkbmFtZTtcblxuICAgIGNvbnN0IG5hbWUgPSB0eXBlTm9kZS5uYW1lLnZhbHVlO1xuICAgIHR5cGVNYXBbbmFtZV0gPVxuICAgICAgKF9zdGRUeXBlTWFwJG5hbWUgPSBzdGRUeXBlTWFwW25hbWVdKSAhPT0gbnVsbCAmJlxuICAgICAgX3N0ZFR5cGVNYXAkbmFtZSAhPT0gdm9pZCAwXG4gICAgICAgID8gX3N0ZFR5cGVNYXAkbmFtZVxuICAgICAgICA6IGJ1aWxkVHlwZSh0eXBlTm9kZSk7XG4gIH1cblxuICBjb25zdCBvcGVyYXRpb25UeXBlcyA9IHtcbiAgICAvLyBHZXQgdGhlIGV4dGVuZGVkIHJvb3Qgb3BlcmF0aW9uIHR5cGVzLlxuICAgIHF1ZXJ5OiBzY2hlbWFDb25maWcucXVlcnkgJiYgcmVwbGFjZU5hbWVkVHlwZShzY2hlbWFDb25maWcucXVlcnkpLFxuICAgIG11dGF0aW9uOiBzY2hlbWFDb25maWcubXV0YXRpb24gJiYgcmVwbGFjZU5hbWVkVHlwZShzY2hlbWFDb25maWcubXV0YXRpb24pLFxuICAgIHN1YnNjcmlwdGlvbjpcbiAgICAgIHNjaGVtYUNvbmZpZy5zdWJzY3JpcHRpb24gJiYgcmVwbGFjZU5hbWVkVHlwZShzY2hlbWFDb25maWcuc3Vic2NyaXB0aW9uKSxcbiAgICAvLyBUaGVuLCBpbmNvcnBvcmF0ZSBzY2hlbWEgZGVmaW5pdGlvbiBhbmQgYWxsIHNjaGVtYSBleHRlbnNpb25zLlxuICAgIC4uLihzY2hlbWFEZWYgJiYgZ2V0T3BlcmF0aW9uVHlwZXMoW3NjaGVtYURlZl0pKSxcbiAgICAuLi5nZXRPcGVyYXRpb25UeXBlcyhzY2hlbWFFeHRlbnNpb25zKSxcbiAgfTsgLy8gVGhlbiBwcm9kdWNlIGFuZCByZXR1cm4gYSBTY2hlbWEgY29uZmlnIHdpdGggdGhlc2UgdHlwZXMuXG5cbiAgcmV0dXJuIHtcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIChfc2NoZW1hRGVmID0gc2NoZW1hRGVmKSA9PT0gbnVsbCB8fCBfc2NoZW1hRGVmID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiAoX3NjaGVtYURlZiRkZXNjcmlwdGlvID0gX3NjaGVtYURlZi5kZXNjcmlwdGlvbikgPT09IG51bGwgfHxcbiAgICAgICAgICBfc2NoZW1hRGVmJGRlc2NyaXB0aW8gPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IF9zY2hlbWFEZWYkZGVzY3JpcHRpby52YWx1ZSxcbiAgICAuLi5vcGVyYXRpb25UeXBlcyxcbiAgICB0eXBlczogT2JqZWN0LnZhbHVlcyh0eXBlTWFwKSxcbiAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAuLi5zY2hlbWFDb25maWcuZGlyZWN0aXZlcy5tYXAocmVwbGFjZURpcmVjdGl2ZSksXG4gICAgICAuLi5kaXJlY3RpdmVEZWZzLm1hcChidWlsZERpcmVjdGl2ZSksXG4gICAgXSxcbiAgICBleHRlbnNpb25zOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgIGFzdE5vZGU6XG4gICAgICAoX3NjaGVtYURlZjIgPSBzY2hlbWFEZWYpICE9PSBudWxsICYmIF9zY2hlbWFEZWYyICE9PSB2b2lkIDBcbiAgICAgICAgPyBfc2NoZW1hRGVmMlxuICAgICAgICA6IHNjaGVtYUNvbmZpZy5hc3ROb2RlLFxuICAgIGV4dGVuc2lvbkFTVE5vZGVzOiBzY2hlbWFDb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMuY29uY2F0KHNjaGVtYUV4dGVuc2lvbnMpLFxuICAgIGFzc3VtZVZhbGlkOlxuICAgICAgKF9vcHRpb25zJGFzc3VtZVZhbGlkID1cbiAgICAgICAgb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDBcbiAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgIDogb3B0aW9ucy5hc3N1bWVWYWxpZCkgIT09IG51bGwgJiYgX29wdGlvbnMkYXNzdW1lVmFsaWQgIT09IHZvaWQgMFxuICAgICAgICA/IF9vcHRpb25zJGFzc3VtZVZhbGlkXG4gICAgICAgIDogZmFsc2UsXG4gIH07IC8vIEJlbG93IGFyZSBmdW5jdGlvbnMgdXNlZCBmb3IgcHJvZHVjaW5nIHRoaXMgc2NoZW1hIHRoYXQgaGF2ZSBjbG9zZWQgb3ZlclxuICAvLyB0aGlzIHNjb3BlIGFuZCBoYXZlIGFjY2VzcyB0byB0aGUgc2NoZW1hLCBjYWNoZSwgYW5kIG5ld2x5IGRlZmluZWQgdHlwZXMuXG5cbiAgZnVuY3Rpb24gcmVwbGFjZVR5cGUodHlwZSkge1xuICAgIGlmIChpc0xpc3RUeXBlKHR5cGUpKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4gbmV3IEdyYXBoUUxMaXN0KHJlcGxhY2VUeXBlKHR5cGUub2ZUeXBlKSk7XG4gICAgfVxuXG4gICAgaWYgKGlzTm9uTnVsbFR5cGUodHlwZSkpIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTE5vbk51bGwocmVwbGFjZVR5cGUodHlwZS5vZlR5cGUpKTtcbiAgICB9IC8vIEB0cy1leHBlY3QtZXJyb3IgRklYTUVcblxuICAgIHJldHVybiByZXBsYWNlTmFtZWRUeXBlKHR5cGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZU5hbWVkVHlwZSh0eXBlKSB7XG4gICAgLy8gTm90ZTogV2hpbGUgdGhpcyBjb3VsZCBtYWtlIGVhcmx5IGFzc2VydGlvbnMgdG8gZ2V0IHRoZSBjb3JyZWN0bHlcbiAgICAvLyB0eXBlZCB2YWx1ZXMsIHRoYXQgd291bGQgdGhyb3cgaW1tZWRpYXRlbHkgd2hpbGUgdHlwZSBzeXN0ZW1cbiAgICAvLyB2YWxpZGF0aW9uIHdpdGggdmFsaWRhdGVTY2hlbWEoKSB3aWxsIHByb2R1Y2UgbW9yZSBhY3Rpb25hYmxlIHJlc3VsdHMuXG4gICAgcmV0dXJuIHR5cGVNYXBbdHlwZS5uYW1lXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VEaXJlY3RpdmUoZGlyZWN0aXZlKSB7XG4gICAgY29uc3QgY29uZmlnID0gZGlyZWN0aXZlLnRvQ29uZmlnKCk7XG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMRGlyZWN0aXZlKHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGFyZ3M6IG1hcFZhbHVlKGNvbmZpZy5hcmdzLCBleHRlbmRBcmcpLFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZXh0ZW5kTmFtZWRUeXBlKHR5cGUpIHtcbiAgICBpZiAoaXNJbnRyb3NwZWN0aW9uVHlwZSh0eXBlKSB8fCBpc1NwZWNpZmllZFNjYWxhclR5cGUodHlwZSkpIHtcbiAgICAgIC8vIEJ1aWx0aW4gdHlwZXMgYXJlIG5vdCBleHRlbmRlZC5cbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cblxuICAgIGlmIChpc1NjYWxhclR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiBleHRlbmRTY2FsYXJUeXBlKHR5cGUpO1xuICAgIH1cblxuICAgIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiBleHRlbmRPYmplY3RUeXBlKHR5cGUpO1xuICAgIH1cblxuICAgIGlmIChpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiBleHRlbmRJbnRlcmZhY2VUeXBlKHR5cGUpO1xuICAgIH1cblxuICAgIGlmIChpc1VuaW9uVHlwZSh0eXBlKSkge1xuICAgICAgcmV0dXJuIGV4dGVuZFVuaW9uVHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgICAgcmV0dXJuIGV4dGVuZEVudW1UeXBlKHR5cGUpO1xuICAgIH1cblxuICAgIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgICAgcmV0dXJuIGV4dGVuZElucHV0T2JqZWN0VHlwZSh0eXBlKTtcbiAgICB9XG4gICAgLyogYzggaWdub3JlIG5leHQgMyAqL1xuICAgIC8vIE5vdCByZWFjaGFibGUsIGFsbCBwb3NzaWJsZSB0eXBlIGRlZmluaXRpb24gbm9kZXMgaGF2ZSBiZWVuIGNvbnNpZGVyZWQuXG5cbiAgICBmYWxzZSB8fCBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIHR5cGU6ICcgKyBpbnNwZWN0KHR5cGUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVuZElucHV0T2JqZWN0VHlwZSh0eXBlKSB7XG4gICAgdmFyIF90eXBlRXh0ZW5zaW9uc01hcCRjbztcblxuICAgIGNvbnN0IGNvbmZpZyA9IHR5cGUudG9Db25maWcoKTtcbiAgICBjb25zdCBleHRlbnNpb25zID1cbiAgICAgIChfdHlwZUV4dGVuc2lvbnNNYXAkY28gPSB0eXBlRXh0ZW5zaW9uc01hcFtjb25maWcubmFtZV0pICE9PSBudWxsICYmXG4gICAgICBfdHlwZUV4dGVuc2lvbnNNYXAkY28gIT09IHZvaWQgMFxuICAgICAgICA/IF90eXBlRXh0ZW5zaW9uc01hcCRjb1xuICAgICAgICA6IFtdO1xuICAgIHJldHVybiBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBmaWVsZHM6ICgpID0+ICh7XG4gICAgICAgIC4uLm1hcFZhbHVlKGNvbmZpZy5maWVsZHMsIChmaWVsZCkgPT4gKHtcbiAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICB0eXBlOiByZXBsYWNlVHlwZShmaWVsZC50eXBlKSxcbiAgICAgICAgfSkpLFxuICAgICAgICAuLi5idWlsZElucHV0RmllbGRNYXAoZXh0ZW5zaW9ucyksXG4gICAgICB9KSxcbiAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiBjb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMuY29uY2F0KGV4dGVuc2lvbnMpLFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZXh0ZW5kRW51bVR5cGUodHlwZSkge1xuICAgIHZhciBfdHlwZUV4dGVuc2lvbnNNYXAkdHk7XG5cbiAgICBjb25zdCBjb25maWcgPSB0eXBlLnRvQ29uZmlnKCk7XG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9XG4gICAgICAoX3R5cGVFeHRlbnNpb25zTWFwJHR5ID0gdHlwZUV4dGVuc2lvbnNNYXBbdHlwZS5uYW1lXSkgIT09IG51bGwgJiZcbiAgICAgIF90eXBlRXh0ZW5zaW9uc01hcCR0eSAhPT0gdm9pZCAwXG4gICAgICAgID8gX3R5cGVFeHRlbnNpb25zTWFwJHR5XG4gICAgICAgIDogW107XG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgdmFsdWVzOiB7IC4uLmNvbmZpZy52YWx1ZXMsIC4uLmJ1aWxkRW51bVZhbHVlTWFwKGV4dGVuc2lvbnMpIH0sXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzLmNvbmNhdChleHRlbnNpb25zKSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVuZFNjYWxhclR5cGUodHlwZSkge1xuICAgIHZhciBfdHlwZUV4dGVuc2lvbnNNYXAkY28yO1xuXG4gICAgY29uc3QgY29uZmlnID0gdHlwZS50b0NvbmZpZygpO1xuICAgIGNvbnN0IGV4dGVuc2lvbnMgPVxuICAgICAgKF90eXBlRXh0ZW5zaW9uc01hcCRjbzIgPSB0eXBlRXh0ZW5zaW9uc01hcFtjb25maWcubmFtZV0pICE9PSBudWxsICYmXG4gICAgICBfdHlwZUV4dGVuc2lvbnNNYXAkY28yICE9PSB2b2lkIDBcbiAgICAgICAgPyBfdHlwZUV4dGVuc2lvbnNNYXAkY28yXG4gICAgICAgIDogW107XG4gICAgbGV0IHNwZWNpZmllZEJ5VVJMID0gY29uZmlnLnNwZWNpZmllZEJ5VVJMO1xuXG4gICAgZm9yIChjb25zdCBleHRlbnNpb25Ob2RlIG9mIGV4dGVuc2lvbnMpIHtcbiAgICAgIHZhciBfZ2V0U3BlY2lmaWVkQnlVUkw7XG5cbiAgICAgIHNwZWNpZmllZEJ5VVJMID1cbiAgICAgICAgKF9nZXRTcGVjaWZpZWRCeVVSTCA9IGdldFNwZWNpZmllZEJ5VVJMKGV4dGVuc2lvbk5vZGUpKSAhPT0gbnVsbCAmJlxuICAgICAgICBfZ2V0U3BlY2lmaWVkQnlVUkwgIT09IHZvaWQgMFxuICAgICAgICAgID8gX2dldFNwZWNpZmllZEJ5VVJMXG4gICAgICAgICAgOiBzcGVjaWZpZWRCeVVSTDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEdyYXBoUUxTY2FsYXJUeXBlKHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHNwZWNpZmllZEJ5VVJMLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IGNvbmZpZy5leHRlbnNpb25BU1ROb2Rlcy5jb25jYXQoZXh0ZW5zaW9ucyksXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBleHRlbmRPYmplY3RUeXBlKHR5cGUpIHtcbiAgICB2YXIgX3R5cGVFeHRlbnNpb25zTWFwJGNvMztcblxuICAgIGNvbnN0IGNvbmZpZyA9IHR5cGUudG9Db25maWcoKTtcbiAgICBjb25zdCBleHRlbnNpb25zID1cbiAgICAgIChfdHlwZUV4dGVuc2lvbnNNYXAkY28zID0gdHlwZUV4dGVuc2lvbnNNYXBbY29uZmlnLm5hbWVdKSAhPT0gbnVsbCAmJlxuICAgICAgX3R5cGVFeHRlbnNpb25zTWFwJGNvMyAhPT0gdm9pZCAwXG4gICAgICAgID8gX3R5cGVFeHRlbnNpb25zTWFwJGNvM1xuICAgICAgICA6IFtdO1xuICAgIHJldHVybiBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgaW50ZXJmYWNlczogKCkgPT4gW1xuICAgICAgICAuLi50eXBlLmdldEludGVyZmFjZXMoKS5tYXAocmVwbGFjZU5hbWVkVHlwZSksXG4gICAgICAgIC4uLmJ1aWxkSW50ZXJmYWNlcyhleHRlbnNpb25zKSxcbiAgICAgIF0sXG4gICAgICBmaWVsZHM6ICgpID0+ICh7XG4gICAgICAgIC4uLm1hcFZhbHVlKGNvbmZpZy5maWVsZHMsIGV4dGVuZEZpZWxkKSxcbiAgICAgICAgLi4uYnVpbGRGaWVsZE1hcChleHRlbnNpb25zKSxcbiAgICAgIH0pLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IGNvbmZpZy5leHRlbnNpb25BU1ROb2Rlcy5jb25jYXQoZXh0ZW5zaW9ucyksXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBleHRlbmRJbnRlcmZhY2VUeXBlKHR5cGUpIHtcbiAgICB2YXIgX3R5cGVFeHRlbnNpb25zTWFwJGNvNDtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHR5cGUudG9Db25maWcoKTtcbiAgICBjb25zdCBleHRlbnNpb25zID1cbiAgICAgIChfdHlwZUV4dGVuc2lvbnNNYXAkY280ID0gdHlwZUV4dGVuc2lvbnNNYXBbY29uZmlnLm5hbWVdKSAhPT0gbnVsbCAmJlxuICAgICAgX3R5cGVFeHRlbnNpb25zTWFwJGNvNCAhPT0gdm9pZCAwXG4gICAgICAgID8gX3R5cGVFeHRlbnNpb25zTWFwJGNvNFxuICAgICAgICA6IFtdO1xuICAgIHJldHVybiBuZXcgR3JhcGhRTEludGVyZmFjZVR5cGUoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgaW50ZXJmYWNlczogKCkgPT4gW1xuICAgICAgICAuLi50eXBlLmdldEludGVyZmFjZXMoKS5tYXAocmVwbGFjZU5hbWVkVHlwZSksXG4gICAgICAgIC4uLmJ1aWxkSW50ZXJmYWNlcyhleHRlbnNpb25zKSxcbiAgICAgIF0sXG4gICAgICBmaWVsZHM6ICgpID0+ICh7XG4gICAgICAgIC4uLm1hcFZhbHVlKGNvbmZpZy5maWVsZHMsIGV4dGVuZEZpZWxkKSxcbiAgICAgICAgLi4uYnVpbGRGaWVsZE1hcChleHRlbnNpb25zKSxcbiAgICAgIH0pLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IGNvbmZpZy5leHRlbnNpb25BU1ROb2Rlcy5jb25jYXQoZXh0ZW5zaW9ucyksXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBleHRlbmRVbmlvblR5cGUodHlwZSkge1xuICAgIHZhciBfdHlwZUV4dGVuc2lvbnNNYXAkY281O1xuXG4gICAgY29uc3QgY29uZmlnID0gdHlwZS50b0NvbmZpZygpO1xuICAgIGNvbnN0IGV4dGVuc2lvbnMgPVxuICAgICAgKF90eXBlRXh0ZW5zaW9uc01hcCRjbzUgPSB0eXBlRXh0ZW5zaW9uc01hcFtjb25maWcubmFtZV0pICE9PSBudWxsICYmXG4gICAgICBfdHlwZUV4dGVuc2lvbnNNYXAkY281ICE9PSB2b2lkIDBcbiAgICAgICAgPyBfdHlwZUV4dGVuc2lvbnNNYXAkY281XG4gICAgICAgIDogW107XG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMVW5pb25UeXBlKHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHR5cGVzOiAoKSA9PiBbXG4gICAgICAgIC4uLnR5cGUuZ2V0VHlwZXMoKS5tYXAocmVwbGFjZU5hbWVkVHlwZSksXG4gICAgICAgIC4uLmJ1aWxkVW5pb25UeXBlcyhleHRlbnNpb25zKSxcbiAgICAgIF0sXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzLmNvbmNhdChleHRlbnNpb25zKSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVuZEZpZWxkKGZpZWxkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmZpZWxkLFxuICAgICAgdHlwZTogcmVwbGFjZVR5cGUoZmllbGQudHlwZSksXG4gICAgICBhcmdzOiBmaWVsZC5hcmdzICYmIG1hcFZhbHVlKGZpZWxkLmFyZ3MsIGV4dGVuZEFyZyksXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVuZEFyZyhhcmcpIHtcbiAgICByZXR1cm4geyAuLi5hcmcsIHR5cGU6IHJlcGxhY2VUeXBlKGFyZy50eXBlKSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0T3BlcmF0aW9uVHlwZXMobm9kZXMpIHtcbiAgICBjb25zdCBvcFR5cGVzID0ge307XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgIHZhciBfbm9kZSRvcGVyYXRpb25UeXBlcztcblxuICAgICAgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcbiAgICAgIGNvbnN0IG9wZXJhdGlvblR5cGVzTm9kZXMgPVxuICAgICAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAoX25vZGUkb3BlcmF0aW9uVHlwZXMgPSBub2RlLm9wZXJhdGlvblR5cGVzKSAhPT0gbnVsbCAmJlxuICAgICAgICBfbm9kZSRvcGVyYXRpb25UeXBlcyAhPT0gdm9pZCAwXG4gICAgICAgICAgPyBfbm9kZSRvcGVyYXRpb25UeXBlc1xuICAgICAgICAgIDogW107XG5cbiAgICAgIGZvciAoY29uc3Qgb3BlcmF0aW9uVHlwZSBvZiBvcGVyYXRpb25UeXBlc05vZGVzKSB7XG4gICAgICAgIC8vIE5vdGU6IFdoaWxlIHRoaXMgY291bGQgbWFrZSBlYXJseSBhc3NlcnRpb25zIHRvIGdldCB0aGUgY29ycmVjdGx5XG4gICAgICAgIC8vIHR5cGVkIHZhbHVlcyBiZWxvdywgdGhhdCB3b3VsZCB0aHJvdyBpbW1lZGlhdGVseSB3aGlsZSB0eXBlIHN5c3RlbVxuICAgICAgICAvLyB2YWxpZGF0aW9uIHdpdGggdmFsaWRhdGVTY2hlbWEoKSB3aWxsIHByb2R1Y2UgbW9yZSBhY3Rpb25hYmxlIHJlc3VsdHMuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgb3BUeXBlc1tvcGVyYXRpb25UeXBlLm9wZXJhdGlvbl0gPSBnZXROYW1lZFR5cGUob3BlcmF0aW9uVHlwZS50eXBlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb3BUeXBlcztcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE5hbWVkVHlwZShub2RlKSB7XG4gICAgdmFyIF9zdGRUeXBlTWFwJG5hbWUyO1xuXG4gICAgY29uc3QgbmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICBjb25zdCB0eXBlID1cbiAgICAgIChfc3RkVHlwZU1hcCRuYW1lMiA9IHN0ZFR5cGVNYXBbbmFtZV0pICE9PSBudWxsICYmXG4gICAgICBfc3RkVHlwZU1hcCRuYW1lMiAhPT0gdm9pZCAwXG4gICAgICAgID8gX3N0ZFR5cGVNYXAkbmFtZTJcbiAgICAgICAgOiB0eXBlTWFwW25hbWVdO1xuXG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR5cGU6IFwiJHtuYW1lfVwiLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0V3JhcHBlZFR5cGUobm9kZSkge1xuICAgIGlmIChub2RlLmtpbmQgPT09IEtpbmQuTElTVF9UWVBFKSB7XG4gICAgICByZXR1cm4gbmV3IEdyYXBoUUxMaXN0KGdldFdyYXBwZWRUeXBlKG5vZGUudHlwZSkpO1xuICAgIH1cblxuICAgIGlmIChub2RlLmtpbmQgPT09IEtpbmQuTk9OX05VTExfVFlQRSkge1xuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMTm9uTnVsbChnZXRXcmFwcGVkVHlwZShub2RlLnR5cGUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0TmFtZWRUeXBlKG5vZGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGREaXJlY3RpdmUobm9kZSkge1xuICAgIHZhciBfbm9kZSRkZXNjcmlwdGlvbjtcblxuICAgIHJldHVybiBuZXcgR3JhcGhRTERpcmVjdGl2ZSh7XG4gICAgICBuYW1lOiBub2RlLm5hbWUudmFsdWUsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgKF9ub2RlJGRlc2NyaXB0aW9uID0gbm9kZS5kZXNjcmlwdGlvbikgPT09IG51bGwgfHxcbiAgICAgICAgX25vZGUkZGVzY3JpcHRpb24gPT09IHZvaWQgMFxuICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgOiBfbm9kZSRkZXNjcmlwdGlvbi52YWx1ZSxcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIGxvY2F0aW9uczogbm9kZS5sb2NhdGlvbnMubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKSxcbiAgICAgIGlzUmVwZWF0YWJsZTogbm9kZS5yZXBlYXRhYmxlLFxuICAgICAgYXJnczogYnVpbGRBcmd1bWVudE1hcChub2RlLmFyZ3VtZW50cyksXG4gICAgICBhc3ROb2RlOiBub2RlLFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRGaWVsZE1hcChub2Rlcykge1xuICAgIGNvbnN0IGZpZWxkQ29uZmlnTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgdmFyIF9ub2RlJGZpZWxkcztcblxuICAgICAgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcbiAgICAgIGNvbnN0IG5vZGVGaWVsZHMgPVxuICAgICAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAoX25vZGUkZmllbGRzID0gbm9kZS5maWVsZHMpICE9PSBudWxsICYmIF9ub2RlJGZpZWxkcyAhPT0gdm9pZCAwXG4gICAgICAgICAgPyBfbm9kZSRmaWVsZHNcbiAgICAgICAgICA6IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIG5vZGVGaWVsZHMpIHtcbiAgICAgICAgdmFyIF9maWVsZCRkZXNjcmlwdGlvbjtcblxuICAgICAgICBmaWVsZENvbmZpZ01hcFtmaWVsZC5uYW1lLnZhbHVlXSA9IHtcbiAgICAgICAgICAvLyBOb3RlOiBXaGlsZSB0aGlzIGNvdWxkIG1ha2UgYXNzZXJ0aW9ucyB0byBnZXQgdGhlIGNvcnJlY3RseSB0eXBlZFxuICAgICAgICAgIC8vIHZhbHVlLCB0aGF0IHdvdWxkIHRocm93IGltbWVkaWF0ZWx5IHdoaWxlIHR5cGUgc3lzdGVtIHZhbGlkYXRpb25cbiAgICAgICAgICAvLyB3aXRoIHZhbGlkYXRlU2NoZW1hKCkgd2lsbCBwcm9kdWNlIG1vcmUgYWN0aW9uYWJsZSByZXN1bHRzLlxuICAgICAgICAgIHR5cGU6IGdldFdyYXBwZWRUeXBlKGZpZWxkLnR5cGUpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgKF9maWVsZCRkZXNjcmlwdGlvbiA9IGZpZWxkLmRlc2NyaXB0aW9uKSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgX2ZpZWxkJGRlc2NyaXB0aW9uID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBfZmllbGQkZGVzY3JpcHRpb24udmFsdWUsXG4gICAgICAgICAgYXJnczogYnVpbGRBcmd1bWVudE1hcChmaWVsZC5hcmd1bWVudHMpLFxuICAgICAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBnZXREZXByZWNhdGlvblJlYXNvbihmaWVsZCksXG4gICAgICAgICAgYXN0Tm9kZTogZmllbGQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkQ29uZmlnTWFwO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRBcmd1bWVudE1hcChhcmdzKSB7XG4gICAgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcbiAgICBjb25zdCBhcmdzTm9kZXMgPVxuICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgIGFyZ3MgIT09IG51bGwgJiYgYXJncyAhPT0gdm9pZCAwID8gYXJncyA6IFtdO1xuICAgIGNvbnN0IGFyZ0NvbmZpZ01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBmb3IgKGNvbnN0IGFyZyBvZiBhcmdzTm9kZXMpIHtcbiAgICAgIHZhciBfYXJnJGRlc2NyaXB0aW9uO1xuXG4gICAgICAvLyBOb3RlOiBXaGlsZSB0aGlzIGNvdWxkIG1ha2UgYXNzZXJ0aW9ucyB0byBnZXQgdGhlIGNvcnJlY3RseSB0eXBlZFxuICAgICAgLy8gdmFsdWUsIHRoYXQgd291bGQgdGhyb3cgaW1tZWRpYXRlbHkgd2hpbGUgdHlwZSBzeXN0ZW0gdmFsaWRhdGlvblxuICAgICAgLy8gd2l0aCB2YWxpZGF0ZVNjaGVtYSgpIHdpbGwgcHJvZHVjZSBtb3JlIGFjdGlvbmFibGUgcmVzdWx0cy5cbiAgICAgIGNvbnN0IHR5cGUgPSBnZXRXcmFwcGVkVHlwZShhcmcudHlwZSk7XG4gICAgICBhcmdDb25maWdNYXBbYXJnLm5hbWUudmFsdWVdID0ge1xuICAgICAgICB0eXBlLFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAoX2FyZyRkZXNjcmlwdGlvbiA9IGFyZy5kZXNjcmlwdGlvbikgPT09IG51bGwgfHxcbiAgICAgICAgICBfYXJnJGRlc2NyaXB0aW9uID09PSB2b2lkIDBcbiAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICA6IF9hcmckZGVzY3JpcHRpb24udmFsdWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdmFsdWVGcm9tQVNUKGFyZy5kZWZhdWx0VmFsdWUsIHR5cGUpLFxuICAgICAgICBkZXByZWNhdGlvblJlYXNvbjogZ2V0RGVwcmVjYXRpb25SZWFzb24oYXJnKSxcbiAgICAgICAgYXN0Tm9kZTogYXJnLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJnQ29uZmlnTWFwO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRJbnB1dEZpZWxkTWFwKG5vZGVzKSB7XG4gICAgY29uc3QgaW5wdXRGaWVsZE1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgIHZhciBfbm9kZSRmaWVsZHMyO1xuXG4gICAgICAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuICAgICAgY29uc3QgZmllbGRzTm9kZXMgPVxuICAgICAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAoX25vZGUkZmllbGRzMiA9IG5vZGUuZmllbGRzKSAhPT0gbnVsbCAmJiBfbm9kZSRmaWVsZHMyICE9PSB2b2lkIDBcbiAgICAgICAgICA/IF9ub2RlJGZpZWxkczJcbiAgICAgICAgICA6IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkc05vZGVzKSB7XG4gICAgICAgIHZhciBfZmllbGQkZGVzY3JpcHRpb24yO1xuXG4gICAgICAgIC8vIE5vdGU6IFdoaWxlIHRoaXMgY291bGQgbWFrZSBhc3NlcnRpb25zIHRvIGdldCB0aGUgY29ycmVjdGx5IHR5cGVkXG4gICAgICAgIC8vIHZhbHVlLCB0aGF0IHdvdWxkIHRocm93IGltbWVkaWF0ZWx5IHdoaWxlIHR5cGUgc3lzdGVtIHZhbGlkYXRpb25cbiAgICAgICAgLy8gd2l0aCB2YWxpZGF0ZVNjaGVtYSgpIHdpbGwgcHJvZHVjZSBtb3JlIGFjdGlvbmFibGUgcmVzdWx0cy5cbiAgICAgICAgY29uc3QgdHlwZSA9IGdldFdyYXBwZWRUeXBlKGZpZWxkLnR5cGUpO1xuICAgICAgICBpbnB1dEZpZWxkTWFwW2ZpZWxkLm5hbWUudmFsdWVdID0ge1xuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAoX2ZpZWxkJGRlc2NyaXB0aW9uMiA9IGZpZWxkLmRlc2NyaXB0aW9uKSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgX2ZpZWxkJGRlc2NyaXB0aW9uMiA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogX2ZpZWxkJGRlc2NyaXB0aW9uMi52YWx1ZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IHZhbHVlRnJvbUFTVChmaWVsZC5kZWZhdWx0VmFsdWUsIHR5cGUpLFxuICAgICAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBnZXREZXByZWNhdGlvblJlYXNvbihmaWVsZCksXG4gICAgICAgICAgYXN0Tm9kZTogZmllbGQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlucHV0RmllbGRNYXA7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZEVudW1WYWx1ZU1hcChub2Rlcykge1xuICAgIGNvbnN0IGVudW1WYWx1ZU1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgIHZhciBfbm9kZSR2YWx1ZXM7XG5cbiAgICAgIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG4gICAgICBjb25zdCB2YWx1ZXNOb2RlcyA9XG4gICAgICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgICAgIChfbm9kZSR2YWx1ZXMgPSBub2RlLnZhbHVlcykgIT09IG51bGwgJiYgX25vZGUkdmFsdWVzICE9PSB2b2lkIDBcbiAgICAgICAgICA/IF9ub2RlJHZhbHVlc1xuICAgICAgICAgIDogW107XG5cbiAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzTm9kZXMpIHtcbiAgICAgICAgdmFyIF92YWx1ZSRkZXNjcmlwdGlvbjtcblxuICAgICAgICBlbnVtVmFsdWVNYXBbdmFsdWUubmFtZS52YWx1ZV0gPSB7XG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAoX3ZhbHVlJGRlc2NyaXB0aW9uID0gdmFsdWUuZGVzY3JpcHRpb24pID09PSBudWxsIHx8XG4gICAgICAgICAgICBfdmFsdWUkZGVzY3JpcHRpb24gPT09IHZvaWQgMFxuICAgICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgICA6IF92YWx1ZSRkZXNjcmlwdGlvbi52YWx1ZSxcbiAgICAgICAgICBkZXByZWNhdGlvblJlYXNvbjogZ2V0RGVwcmVjYXRpb25SZWFzb24odmFsdWUpLFxuICAgICAgICAgIGFzdE5vZGU6IHZhbHVlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbnVtVmFsdWVNYXA7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZEludGVyZmFjZXMobm9kZXMpIHtcbiAgICAvLyBOb3RlOiBXaGlsZSB0aGlzIGNvdWxkIG1ha2UgYXNzZXJ0aW9ucyB0byBnZXQgdGhlIGNvcnJlY3RseSB0eXBlZFxuICAgIC8vIHZhbHVlcyBiZWxvdywgdGhhdCB3b3VsZCB0aHJvdyBpbW1lZGlhdGVseSB3aGlsZSB0eXBlIHN5c3RlbVxuICAgIC8vIHZhbGlkYXRpb24gd2l0aCB2YWxpZGF0ZVNjaGVtYSgpIHdpbGwgcHJvZHVjZSBtb3JlIGFjdGlvbmFibGUgcmVzdWx0cy5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgcmV0dXJuIG5vZGVzLmZsYXRNYXAoXG4gICAgICAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuICAgICAgKG5vZGUpID0+IHtcbiAgICAgICAgdmFyIF9ub2RlJGludGVyZmFjZXMkbWFwLCBfbm9kZSRpbnRlcmZhY2VzO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAoX25vZGUkaW50ZXJmYWNlcyRtYXAgPVxuICAgICAgICAgICAgKF9ub2RlJGludGVyZmFjZXMgPSBub2RlLmludGVyZmFjZXMpID09PSBudWxsIHx8XG4gICAgICAgICAgICBfbm9kZSRpbnRlcmZhY2VzID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBfbm9kZSRpbnRlcmZhY2VzLm1hcChnZXROYW1lZFR5cGUpKSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgX25vZGUkaW50ZXJmYWNlcyRtYXAgIT09IHZvaWQgMFxuICAgICAgICAgICAgPyBfbm9kZSRpbnRlcmZhY2VzJG1hcFxuICAgICAgICAgICAgOiBbXVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRVbmlvblR5cGVzKG5vZGVzKSB7XG4gICAgLy8gTm90ZTogV2hpbGUgdGhpcyBjb3VsZCBtYWtlIGFzc2VydGlvbnMgdG8gZ2V0IHRoZSBjb3JyZWN0bHkgdHlwZWRcbiAgICAvLyB2YWx1ZXMgYmVsb3csIHRoYXQgd291bGQgdGhyb3cgaW1tZWRpYXRlbHkgd2hpbGUgdHlwZSBzeXN0ZW1cbiAgICAvLyB2YWxpZGF0aW9uIHdpdGggdmFsaWRhdGVTY2hlbWEoKSB3aWxsIHByb2R1Y2UgbW9yZSBhY3Rpb25hYmxlIHJlc3VsdHMuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiBub2Rlcy5mbGF0TWFwKFxuICAgICAgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcbiAgICAgIChub2RlKSA9PiB7XG4gICAgICAgIHZhciBfbm9kZSR0eXBlcyRtYXAsIF9ub2RlJHR5cGVzO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAoX25vZGUkdHlwZXMkbWFwID1cbiAgICAgICAgICAgIChfbm9kZSR0eXBlcyA9IG5vZGUudHlwZXMpID09PSBudWxsIHx8IF9ub2RlJHR5cGVzID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBfbm9kZSR0eXBlcy5tYXAoZ2V0TmFtZWRUeXBlKSkgIT09IG51bGwgJiZcbiAgICAgICAgICAgIF9ub2RlJHR5cGVzJG1hcCAhPT0gdm9pZCAwXG4gICAgICAgICAgICA/IF9ub2RlJHR5cGVzJG1hcFxuICAgICAgICAgICAgOiBbXVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRUeXBlKGFzdE5vZGUpIHtcbiAgICB2YXIgX3R5cGVFeHRlbnNpb25zTWFwJG5hO1xuXG4gICAgY29uc3QgbmFtZSA9IGFzdE5vZGUubmFtZS52YWx1ZTtcbiAgICBjb25zdCBleHRlbnNpb25BU1ROb2RlcyA9XG4gICAgICAoX3R5cGVFeHRlbnNpb25zTWFwJG5hID0gdHlwZUV4dGVuc2lvbnNNYXBbbmFtZV0pICE9PSBudWxsICYmXG4gICAgICBfdHlwZUV4dGVuc2lvbnNNYXAkbmEgIT09IHZvaWQgMFxuICAgICAgICA/IF90eXBlRXh0ZW5zaW9uc01hcCRuYVxuICAgICAgICA6IFtdO1xuXG4gICAgc3dpdGNoIChhc3ROb2RlLmtpbmQpIHtcbiAgICAgIGNhc2UgS2luZC5PQkpFQ1RfVFlQRV9ERUZJTklUSU9OOiB7XG4gICAgICAgIHZhciBfYXN0Tm9kZSRkZXNjcmlwdGlvbjtcblxuICAgICAgICBjb25zdCBhbGxOb2RlcyA9IFthc3ROb2RlLCAuLi5leHRlbnNpb25BU1ROb2Rlc107XG4gICAgICAgIHJldHVybiBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAoX2FzdE5vZGUkZGVzY3JpcHRpb24gPSBhc3ROb2RlLmRlc2NyaXB0aW9uKSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgX2FzdE5vZGUkZGVzY3JpcHRpb24gPT09IHZvaWQgMFxuICAgICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgICA6IF9hc3ROb2RlJGRlc2NyaXB0aW9uLnZhbHVlLFxuICAgICAgICAgIGludGVyZmFjZXM6ICgpID0+IGJ1aWxkSW50ZXJmYWNlcyhhbGxOb2RlcyksXG4gICAgICAgICAgZmllbGRzOiAoKSA9PiBidWlsZEZpZWxkTWFwKGFsbE5vZGVzKSxcbiAgICAgICAgICBhc3ROb2RlLFxuICAgICAgICAgIGV4dGVuc2lvbkFTVE5vZGVzLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBLaW5kLklOVEVSRkFDRV9UWVBFX0RFRklOSVRJT046IHtcbiAgICAgICAgdmFyIF9hc3ROb2RlJGRlc2NyaXB0aW9uMjtcblxuICAgICAgICBjb25zdCBhbGxOb2RlcyA9IFthc3ROb2RlLCAuLi5leHRlbnNpb25BU1ROb2Rlc107XG4gICAgICAgIHJldHVybiBuZXcgR3JhcGhRTEludGVyZmFjZVR5cGUoe1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAoX2FzdE5vZGUkZGVzY3JpcHRpb24yID0gYXN0Tm9kZS5kZXNjcmlwdGlvbikgPT09IG51bGwgfHxcbiAgICAgICAgICAgIF9hc3ROb2RlJGRlc2NyaXB0aW9uMiA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogX2FzdE5vZGUkZGVzY3JpcHRpb24yLnZhbHVlLFxuICAgICAgICAgIGludGVyZmFjZXM6ICgpID0+IGJ1aWxkSW50ZXJmYWNlcyhhbGxOb2RlcyksXG4gICAgICAgICAgZmllbGRzOiAoKSA9PiBidWlsZEZpZWxkTWFwKGFsbE5vZGVzKSxcbiAgICAgICAgICBhc3ROb2RlLFxuICAgICAgICAgIGV4dGVuc2lvbkFTVE5vZGVzLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBLaW5kLkVOVU1fVFlQRV9ERUZJTklUSU9OOiB7XG4gICAgICAgIHZhciBfYXN0Tm9kZSRkZXNjcmlwdGlvbjM7XG5cbiAgICAgICAgY29uc3QgYWxsTm9kZXMgPSBbYXN0Tm9kZSwgLi4uZXh0ZW5zaW9uQVNUTm9kZXNdO1xuICAgICAgICByZXR1cm4gbmV3IEdyYXBoUUxFbnVtVHlwZSh7XG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIChfYXN0Tm9kZSRkZXNjcmlwdGlvbjMgPSBhc3ROb2RlLmRlc2NyaXB0aW9uKSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgX2FzdE5vZGUkZGVzY3JpcHRpb24zID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBfYXN0Tm9kZSRkZXNjcmlwdGlvbjMudmFsdWUsXG4gICAgICAgICAgdmFsdWVzOiBidWlsZEVudW1WYWx1ZU1hcChhbGxOb2RlcyksXG4gICAgICAgICAgYXN0Tm9kZSxcbiAgICAgICAgICBleHRlbnNpb25BU1ROb2RlcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5VTklPTl9UWVBFX0RFRklOSVRJT046IHtcbiAgICAgICAgdmFyIF9hc3ROb2RlJGRlc2NyaXB0aW9uNDtcblxuICAgICAgICBjb25zdCBhbGxOb2RlcyA9IFthc3ROb2RlLCAuLi5leHRlbnNpb25BU1ROb2Rlc107XG4gICAgICAgIHJldHVybiBuZXcgR3JhcGhRTFVuaW9uVHlwZSh7XG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIChfYXN0Tm9kZSRkZXNjcmlwdGlvbjQgPSBhc3ROb2RlLmRlc2NyaXB0aW9uKSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgX2FzdE5vZGUkZGVzY3JpcHRpb240ID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBfYXN0Tm9kZSRkZXNjcmlwdGlvbjQudmFsdWUsXG4gICAgICAgICAgdHlwZXM6ICgpID0+IGJ1aWxkVW5pb25UeXBlcyhhbGxOb2RlcyksXG4gICAgICAgICAgYXN0Tm9kZSxcbiAgICAgICAgICBleHRlbnNpb25BU1ROb2RlcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5TQ0FMQVJfVFlQRV9ERUZJTklUSU9OOiB7XG4gICAgICAgIHZhciBfYXN0Tm9kZSRkZXNjcmlwdGlvbjU7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIChfYXN0Tm9kZSRkZXNjcmlwdGlvbjUgPSBhc3ROb2RlLmRlc2NyaXB0aW9uKSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgX2FzdE5vZGUkZGVzY3JpcHRpb241ID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBfYXN0Tm9kZSRkZXNjcmlwdGlvbjUudmFsdWUsXG4gICAgICAgICAgc3BlY2lmaWVkQnlVUkw6IGdldFNwZWNpZmllZEJ5VVJMKGFzdE5vZGUpLFxuICAgICAgICAgIGFzdE5vZGUsXG4gICAgICAgICAgZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTjoge1xuICAgICAgICB2YXIgX2FzdE5vZGUkZGVzY3JpcHRpb242O1xuXG4gICAgICAgIGNvbnN0IGFsbE5vZGVzID0gW2FzdE5vZGUsIC4uLmV4dGVuc2lvbkFTVE5vZGVzXTtcbiAgICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgKF9hc3ROb2RlJGRlc2NyaXB0aW9uNiA9IGFzdE5vZGUuZGVzY3JpcHRpb24pID09PSBudWxsIHx8XG4gICAgICAgICAgICBfYXN0Tm9kZSRkZXNjcmlwdGlvbjYgPT09IHZvaWQgMFxuICAgICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgICA6IF9hc3ROb2RlJGRlc2NyaXB0aW9uNi52YWx1ZSxcbiAgICAgICAgICBmaWVsZHM6ICgpID0+IGJ1aWxkSW5wdXRGaWVsZE1hcChhbGxOb2RlcyksXG4gICAgICAgICAgYXN0Tm9kZSxcbiAgICAgICAgICBleHRlbnNpb25BU1ROb2RlcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jb25zdCBzdGRUeXBlTWFwID0ga2V5TWFwKFxuICBbLi4uc3BlY2lmaWVkU2NhbGFyVHlwZXMsIC4uLmludHJvc3BlY3Rpb25UeXBlc10sXG4gICh0eXBlKSA9PiB0eXBlLm5hbWUsXG4pO1xuLyoqXG4gKiBHaXZlbiBhIGZpZWxkIG9yIGVudW0gdmFsdWUgbm9kZSwgcmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIGZvciB0aGVcbiAqIGRlcHJlY2F0aW9uIHJlYXNvbi5cbiAqL1xuXG5mdW5jdGlvbiBnZXREZXByZWNhdGlvblJlYXNvbihub2RlKSB7XG4gIGNvbnN0IGRlcHJlY2F0ZWQgPSBnZXREaXJlY3RpdmVWYWx1ZXMoR3JhcGhRTERlcHJlY2F0ZWREaXJlY3RpdmUsIG5vZGUpOyAvLyBAdHMtZXhwZWN0LWVycm9yIHZhbGlkYXRlZCBieSBgZ2V0RGlyZWN0aXZlVmFsdWVzYFxuXG4gIHJldHVybiBkZXByZWNhdGVkID09PSBudWxsIHx8IGRlcHJlY2F0ZWQgPT09IHZvaWQgMFxuICAgID8gdm9pZCAwXG4gICAgOiBkZXByZWNhdGVkLnJlYXNvbjtcbn1cbi8qKlxuICogR2l2ZW4gYSBzY2FsYXIgbm9kZSwgcmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkQnlVUkwuXG4gKi9cblxuZnVuY3Rpb24gZ2V0U3BlY2lmaWVkQnlVUkwobm9kZSkge1xuICBjb25zdCBzcGVjaWZpZWRCeSA9IGdldERpcmVjdGl2ZVZhbHVlcyhHcmFwaFFMU3BlY2lmaWVkQnlEaXJlY3RpdmUsIG5vZGUpOyAvLyBAdHMtZXhwZWN0LWVycm9yIHZhbGlkYXRlZCBieSBgZ2V0RGlyZWN0aXZlVmFsdWVzYFxuXG4gIHJldHVybiBzcGVjaWZpZWRCeSA9PT0gbnVsbCB8fCBzcGVjaWZpZWRCeSA9PT0gdm9pZCAwXG4gICAgPyB2b2lkIDBcbiAgICA6IHNwZWNpZmllZEJ5LnVybDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFrQkE7QUFLQTtBQUlBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/extendSchema.mjs\n");
|
985 |
|
986 | }),
|
987 |
|
988 | "../../../node_modules/graphql/utilities/findBreakingChanges.mjs":
|
989 |
|
990 |
|
991 |
|
992 |
|
993 | (function(module, __webpack_exports__, __webpack_require__) {
|
994 |
|
995 | "use strict";
|
996 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BreakingChangeType\", function() { return BreakingChangeType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DangerousChangeType\", function() { return DangerousChangeType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findBreakingChanges\", function() { return findBreakingChanges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findDangerousChanges\", function() { return findDangerousChanges; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _astFromValue_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./astFromValue.mjs */ \"../../../node_modules/graphql/utilities/astFromValue.mjs\");\n/* harmony import */ var _sortValueNode_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./sortValueNode.mjs */ \"../../../node_modules/graphql/utilities/sortValueNode.mjs\");\n\n\n\n\n\n\n\n\nlet BreakingChangeType;\n\n(function (BreakingChangeType) {\n BreakingChangeType['TYPE_REMOVED'] = 'TYPE_REMOVED';\n BreakingChangeType['TYPE_CHANGED_KIND'] = 'TYPE_CHANGED_KIND';\n BreakingChangeType['TYPE_REMOVED_FROM_UNION'] = 'TYPE_REMOVED_FROM_UNION';\n BreakingChangeType['VALUE_REMOVED_FROM_ENUM'] = 'VALUE_REMOVED_FROM_ENUM';\n BreakingChangeType['REQUIRED_INPUT_FIELD_ADDED'] =\n 'REQUIRED_INPUT_FIELD_ADDED';\n BreakingChangeType['IMPLEMENTED_INTERFACE_REMOVED'] =\n 'IMPLEMENTED_INTERFACE_REMOVED';\n BreakingChangeType['FIELD_REMOVED'] = 'FIELD_REMOVED';\n BreakingChangeType['FIELD_CHANGED_KIND'] = 'FIELD_CHANGED_KIND';\n BreakingChangeType['REQUIRED_ARG_ADDED'] = 'REQUIRED_ARG_ADDED';\n BreakingChangeType['ARG_REMOVED'] = 'ARG_REMOVED';\n BreakingChangeType['ARG_CHANGED_KIND'] = 'ARG_CHANGED_KIND';\n BreakingChangeType['DIRECTIVE_REMOVED'] = 'DIRECTIVE_REMOVED';\n BreakingChangeType['DIRECTIVE_ARG_REMOVED'] = 'DIRECTIVE_ARG_REMOVED';\n BreakingChangeType['REQUIRED_DIRECTIVE_ARG_ADDED'] =\n 'REQUIRED_DIRECTIVE_ARG_ADDED';\n BreakingChangeType['DIRECTIVE_REPEATABLE_REMOVED'] =\n 'DIRECTIVE_REPEATABLE_REMOVED';\n BreakingChangeType['DIRECTIVE_LOCATION_REMOVED'] =\n 'DIRECTIVE_LOCATION_REMOVED';\n})(BreakingChangeType || (BreakingChangeType = {}));\n\nlet DangerousChangeType;\n\n(function (DangerousChangeType) {\n DangerousChangeType['VALUE_ADDED_TO_ENUM'] = 'VALUE_ADDED_TO_ENUM';\n DangerousChangeType['TYPE_ADDED_TO_UNION'] = 'TYPE_ADDED_TO_UNION';\n DangerousChangeType['OPTIONAL_INPUT_FIELD_ADDED'] =\n 'OPTIONAL_INPUT_FIELD_ADDED';\n DangerousChangeType['OPTIONAL_ARG_ADDED'] = 'OPTIONAL_ARG_ADDED';\n DangerousChangeType['IMPLEMENTED_INTERFACE_ADDED'] =\n 'IMPLEMENTED_INTERFACE_ADDED';\n DangerousChangeType['ARG_DEFAULT_VALUE_CHANGE'] = 'ARG_DEFAULT_VALUE_CHANGE';\n})(DangerousChangeType || (DangerousChangeType = {}));\n\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of breaking changes covered by the other functions down below.\n */\nfunction findBreakingChanges(oldSchema, newSchema) {\n // @ts-expect-error\n return findSchemaChanges(oldSchema, newSchema).filter(\n (change) => change.type in BreakingChangeType,\n );\n}\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of potentially dangerous changes covered by the other functions down below.\n */\n\nfunction findDangerousChanges(oldSchema, newSchema) {\n // @ts-expect-error\n return findSchemaChanges(oldSchema, newSchema).filter(\n (change) => change.type in DangerousChangeType,\n );\n}\n\nfunction findSchemaChanges(oldSchema, newSchema) {\n return [\n ...findTypeChanges(oldSchema, newSchema),\n ...findDirectiveChanges(oldSchema, newSchema),\n ];\n}\n\nfunction findDirectiveChanges(oldSchema, newSchema) {\n const schemaChanges = [];\n const directivesDiff = diff(\n oldSchema.getDirectives(),\n newSchema.getDirectives(),\n );\n\n for (const oldDirective of directivesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_REMOVED,\n description: `${oldDirective.name} was removed.`,\n });\n }\n\n for (const [oldDirective, newDirective] of directivesDiff.persisted) {\n const argsDiff = diff(oldDirective.args, newDirective.args);\n\n for (const newArg of argsDiff.added) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isRequiredArgument\"])(newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,\n description: `A required arg ${newArg.name} on directive ${oldDirective.name} was added.`,\n });\n }\n }\n\n for (const oldArg of argsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,\n description: `${oldArg.name} was removed from ${oldDirective.name}.`,\n });\n }\n\n if (oldDirective.isRepeatable && !newDirective.isRepeatable) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED,\n description: `Repeatable flag was removed from ${oldDirective.name}.`,\n });\n }\n\n for (const location of oldDirective.locations) {\n if (!newDirective.locations.includes(location)) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,\n description: `${location} was removed from ${oldDirective.name}.`,\n });\n }\n }\n }\n\n return schemaChanges;\n}\n\nfunction findTypeChanges(oldSchema, newSchema) {\n const schemaChanges = [];\n const typesDiff = diff(\n Object.values(oldSchema.getTypeMap()),\n Object.values(newSchema.getTypeMap()),\n );\n\n for (const oldType of typesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED,\n description: Object(_type_scalars_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isSpecifiedScalarType\"])(oldType)\n ? `Standard scalar ${oldType.name} was removed because it is not referenced anymore.`\n : `${oldType.name} was removed.`,\n });\n }\n\n for (const [oldType, newType] of typesDiff.persisted) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isEnumType\"])(oldType) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isEnumType\"])(newType)) {\n schemaChanges.push(...findEnumTypeChanges(oldType, newType));\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isUnionType\"])(oldType) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isUnionType\"])(newType)) {\n schemaChanges.push(...findUnionTypeChanges(oldType, newType));\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputObjectType\"])(oldType) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputObjectType\"])(newType)) {\n schemaChanges.push(...findInputObjectTypeChanges(oldType, newType));\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(oldType) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(newType)) {\n schemaChanges.push(\n ...findFieldChanges(oldType, newType),\n ...findImplementedInterfacesChanges(oldType, newType),\n );\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(oldType) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(newType)) {\n schemaChanges.push(\n ...findFieldChanges(oldType, newType),\n ...findImplementedInterfacesChanges(oldType, newType),\n );\n } else if (oldType.constructor !== newType.constructor) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_CHANGED_KIND,\n description:\n `${oldType.name} changed from ` +\n `${typeKindName(oldType)} to ${typeKindName(newType)}.`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findInputObjectTypeChanges(oldType, newType) {\n const schemaChanges = [];\n const fieldsDiff = diff(\n Object.values(oldType.getFields()),\n Object.values(newType.getFields()),\n );\n\n for (const newField of fieldsDiff.added) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isRequiredInputField\"])(newField)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,\n description: `A required field ${newField.name} on input type ${oldType.name} was added.`,\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,\n description: `An optional field ${newField.name} on input type ${oldType.name} was added.`,\n });\n }\n }\n\n for (const oldField of fieldsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: `${oldType.name}.${oldField.name} was removed.`,\n });\n }\n\n for (const [oldField, newField] of fieldsDiff.persisted) {\n const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n oldField.type,\n newField.type,\n );\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description:\n `${oldType.name}.${oldField.name} changed type from ` +\n `${String(oldField.type)} to ${String(newField.type)}.`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findUnionTypeChanges(oldType, newType) {\n const schemaChanges = [];\n const possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());\n\n for (const newPossibleType of possibleTypesDiff.added) {\n schemaChanges.push({\n type: DangerousChangeType.TYPE_ADDED_TO_UNION,\n description: `${newPossibleType.name} was added to union type ${oldType.name}.`,\n });\n }\n\n for (const oldPossibleType of possibleTypesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,\n description: `${oldPossibleType.name} was removed from union type ${oldType.name}.`,\n });\n }\n\n return schemaChanges;\n}\n\nfunction findEnumTypeChanges(oldType, newType) {\n const schemaChanges = [];\n const valuesDiff = diff(oldType.getValues(), newType.getValues());\n\n for (const newValue of valuesDiff.added) {\n schemaChanges.push({\n type: DangerousChangeType.VALUE_ADDED_TO_ENUM,\n description: `${newValue.name} was added to enum type ${oldType.name}.`,\n });\n }\n\n for (const oldValue of valuesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,\n description: `${oldValue.name} was removed from enum type ${oldType.name}.`,\n });\n }\n\n return schemaChanges;\n}\n\nfunction findImplementedInterfacesChanges(oldType, newType) {\n const schemaChanges = [];\n const interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());\n\n for (const newInterface of interfacesDiff.added) {\n schemaChanges.push({\n type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED,\n description: `${newInterface.name} added to interfaces implemented by ${oldType.name}.`,\n });\n }\n\n for (const oldInterface of interfacesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED,\n description: `${oldType.name} no longer implements interface ${oldInterface.name}.`,\n });\n }\n\n return schemaChanges;\n}\n\nfunction findFieldChanges(oldType, newType) {\n const schemaChanges = [];\n const fieldsDiff = diff(\n Object.values(oldType.getFields()),\n Object.values(newType.getFields()),\n );\n\n for (const oldField of fieldsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: `${oldType.name}.${oldField.name} was removed.`,\n });\n }\n\n for (const [oldField, newField] of fieldsDiff.persisted) {\n schemaChanges.push(...findArgChanges(oldType, oldField, newField));\n const isSafe = isChangeSafeForObjectOrInterfaceField(\n oldField.type,\n newField.type,\n );\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description:\n `${oldType.name}.${oldField.name} changed type from ` +\n `${String(oldField.type)} to ${String(newField.type)}.`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findArgChanges(oldType, oldField, newField) {\n const schemaChanges = [];\n const argsDiff = diff(oldField.args, newField.args);\n\n for (const oldArg of argsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_REMOVED,\n description: `${oldType.name}.${oldField.name} arg ${oldArg.name} was removed.`,\n });\n }\n\n for (const [oldArg, newArg] of argsDiff.persisted) {\n const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n oldArg.type,\n newArg.type,\n );\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_CHANGED_KIND,\n description:\n `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed type from ` +\n `${String(oldArg.type)} to ${String(newArg.type)}.`,\n });\n } else if (oldArg.defaultValue !== undefined) {\n if (newArg.defaultValue === undefined) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: `${oldType.name}.${oldField.name} arg ${oldArg.name} defaultValue was removed.`,\n });\n } else {\n // Since we looking only for client's observable changes we should\n // compare default values in the same representation as they are\n // represented inside introspection.\n const oldValueStr = stringifyValue(oldArg.defaultValue, oldArg.type);\n const newValueStr = stringifyValue(newArg.defaultValue, newArg.type);\n\n if (oldValueStr !== newValueStr) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed defaultValue from ${oldValueStr} to ${newValueStr}.`,\n });\n }\n }\n }\n }\n\n for (const newArg of argsDiff.added) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isRequiredArgument\"])(newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_ARG_ADDED,\n description: `A required arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_ARG_ADDED,\n description: `An optional arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction isChangeSafeForObjectOrInterfaceField(oldType, newType) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isListType\"])(oldType)) {\n return (\n // if they're both lists, make sure the underlying types are compatible\n (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isListType\"])(newType) &&\n isChangeSafeForObjectOrInterfaceField(\n oldType.ofType,\n newType.ofType,\n )) || // moving from nullable to non-null of the same underlying type is safe\n (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(newType) &&\n isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n );\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(oldType)) {\n // if they're both non-null, make sure the underlying types are compatible\n return (\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(newType) &&\n isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType)\n );\n }\n\n return (\n // if they're both named types, see if their names are equivalent\n (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNamedType\"])(newType) && oldType.name === newType.name) || // moving from nullable to non-null of the same underlying type is safe\n (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(newType) &&\n isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n );\n}\n\nfunction isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isListType\"])(oldType)) {\n // if they're both lists, make sure the underlying types are compatible\n return (\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isListType\"])(newType) &&\n isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType)\n );\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(oldType)) {\n return (\n // if they're both non-null, make sure the underlying types are\n // compatible\n (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(newType) &&\n isChangeSafeForInputObjectFieldOrFieldArg(\n oldType.ofType,\n newType.ofType,\n )) || // moving from non-null to nullable of the same underlying type is safe\n (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(newType) &&\n isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType))\n );\n } // if they're both named types, see if their names are equivalent\n\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNamedType\"])(newType) && oldType.name === newType.name;\n}\n\nfunction typeKindName(type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isScalarType\"])(type)) {\n return 'a Scalar type';\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(type)) {\n return 'an Object type';\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(type)) {\n return 'an Interface type';\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isUnionType\"])(type)) {\n return 'a Union type';\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isEnumType\"])(type)) {\n return 'an Enum type';\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputObjectType\"])(type)) {\n return 'an Input type';\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"invariant\"])(false, 'Unexpected type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(type));\n}\n\nfunction stringifyValue(value, type) {\n const ast = Object(_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_6__[\"astFromValue\"])(value, type);\n ast != null || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"invariant\"])(false);\n return Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__[\"print\"])(Object(_sortValueNode_mjs__WEBPACK_IMPORTED_MODULE_7__[\"sortValueNode\"])(ast));\n}\n\nfunction diff(oldArray, newArray) {\n const added = [];\n const removed = [];\n const persisted = [];\n const oldMap = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_2__[\"keyMap\"])(oldArray, ({ name }) => name);\n const newMap = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_2__[\"keyMap\"])(newArray, ({ name }) => name);\n\n for (const oldItem of oldArray) {\n const newItem = newMap[oldItem.name];\n\n if (newItem === undefined) {\n removed.push(oldItem);\n } else {\n persisted.push([oldItem, newItem]);\n }\n }\n\n for (const newItem of newArray) {\n if (oldMap[newItem.name] === undefined) {\n added.push(newItem);\n }\n }\n\n return {\n added,\n persisted,\n removed,\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2ZpbmRCcmVha2luZ0NoYW5nZXMubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2ZpbmRCcmVha2luZ0NoYW5nZXMubWpzP2M1MGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vanN1dGlscy9pbnZhcmlhbnQubWpzJztcbmltcG9ydCB7IGtleU1hcCB9IGZyb20gJy4uL2pzdXRpbHMva2V5TWFwLm1qcyc7XG5pbXBvcnQgeyBwcmludCB9IGZyb20gJy4uL2xhbmd1YWdlL3ByaW50ZXIubWpzJztcbmltcG9ydCB7XG4gIGlzRW51bVR5cGUsXG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzTGlzdFR5cGUsXG4gIGlzTmFtZWRUeXBlLFxuICBpc05vbk51bGxUeXBlLFxuICBpc09iamVjdFR5cGUsXG4gIGlzUmVxdWlyZWRBcmd1bWVudCxcbiAgaXNSZXF1aXJlZElucHV0RmllbGQsXG4gIGlzU2NhbGFyVHlwZSxcbiAgaXNVbmlvblR5cGUsXG59IGZyb20gJy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHsgaXNTcGVjaWZpZWRTY2FsYXJUeXBlIH0gZnJvbSAnLi4vdHlwZS9zY2FsYXJzLm1qcyc7XG5pbXBvcnQgeyBhc3RGcm9tVmFsdWUgfSBmcm9tICcuL2FzdEZyb21WYWx1ZS5tanMnO1xuaW1wb3J0IHsgc29ydFZhbHVlTm9kZSB9IGZyb20gJy4vc29ydFZhbHVlTm9kZS5tanMnO1xuZXhwb3J0IGxldCBCcmVha2luZ0NoYW5nZVR5cGU7XG5cbihmdW5jdGlvbiAoQnJlYWtpbmdDaGFuZ2VUeXBlKSB7XG4gIEJyZWFraW5nQ2hhbmdlVHlwZVsnVFlQRV9SRU1PVkVEJ10gPSAnVFlQRV9SRU1PVkVEJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydUWVBFX0NIQU5HRURfS0lORCddID0gJ1RZUEVfQ0hBTkdFRF9LSU5EJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydUWVBFX1JFTU9WRURfRlJPTV9VTklPTiddID0gJ1RZUEVfUkVNT1ZFRF9GUk9NX1VOSU9OJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydWQUxVRV9SRU1PVkVEX0ZST01fRU5VTSddID0gJ1ZBTFVFX1JFTU9WRURfRlJPTV9FTlVNJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydSRVFVSVJFRF9JTlBVVF9GSUVMRF9BRERFRCddID1cbiAgICAnUkVRVUlSRURfSU5QVVRfRklFTERfQURERUQnO1xuICBCcmVha2luZ0NoYW5nZVR5cGVbJ0lNUExFTUVOVEVEX0lOVEVSRkFDRV9SRU1PVkVEJ10gPVxuICAgICdJTVBMRU1FTlRFRF9JTlRFUkZBQ0VfUkVNT1ZFRCc7XG4gIEJyZWFraW5nQ2hhbmdlVHlwZVsnRklFTERfUkVNT1ZFRCddID0gJ0ZJRUxEX1JFTU9WRUQnO1xuICBCcmVha2luZ0NoYW5nZVR5cGVbJ0ZJRUxEX0NIQU5HRURfS0lORCddID0gJ0ZJRUxEX0NIQU5HRURfS0lORCc7XG4gIEJyZWFraW5nQ2hhbmdlVHlwZVsnUkVRVUlSRURfQVJHX0FEREVEJ10gPSAnUkVRVUlSRURfQVJHX0FEREVEJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydBUkdfUkVNT1ZFRCddID0gJ0FSR19SRU1PVkVEJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydBUkdfQ0hBTkdFRF9LSU5EJ10gPSAnQVJHX0NIQU5HRURfS0lORCc7XG4gIEJyZWFraW5nQ2hhbmdlVHlwZVsnRElSRUNUSVZFX1JFTU9WRUQnXSA9ICdESVJFQ1RJVkVfUkVNT1ZFRCc7XG4gIEJyZWFraW5nQ2hhbmdlVHlwZVsnRElSRUNUSVZFX0FSR19SRU1PVkVEJ10gPSAnRElSRUNUSVZFX0FSR19SRU1PVkVEJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydSRVFVSVJFRF9ESVJFQ1RJVkVfQVJHX0FEREVEJ10gPVxuICAgICdSRVFVSVJFRF9ESVJFQ1RJVkVfQVJHX0FEREVEJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydESVJFQ1RJVkVfUkVQRUFUQUJMRV9SRU1PVkVEJ10gPVxuICAgICdESVJFQ1RJVkVfUkVQRUFUQUJMRV9SRU1PVkVEJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydESVJFQ1RJVkVfTE9DQVRJT05fUkVNT1ZFRCddID1cbiAgICAnRElSRUNUSVZFX0xPQ0FUSU9OX1JFTU9WRUQnO1xufSkoQnJlYWtpbmdDaGFuZ2VUeXBlIHx8IChCcmVha2luZ0NoYW5nZVR5cGUgPSB7fSkpO1xuXG5leHBvcnQgbGV0IERhbmdlcm91c0NoYW5nZVR5cGU7XG5cbihmdW5jdGlvbiAoRGFuZ2Vyb3VzQ2hhbmdlVHlwZSkge1xuICBEYW5nZXJvdXNDaGFuZ2VUeXBlWydWQUxVRV9BRERFRF9UT19FTlVNJ10gPSAnVkFMVUVfQURERURfVE9fRU5VTSc7XG4gIERhbmdlcm91c0NoYW5nZVR5cGVbJ1RZUEVfQURERURfVE9fVU5JT04nXSA9ICdUWVBFX0FEREVEX1RPX1VOSU9OJztcbiAgRGFuZ2Vyb3VzQ2hhbmdlVHlwZVsnT1BUSU9OQUxfSU5QVVRfRklFTERfQURERUQnXSA9XG4gICAgJ09QVElPTkFMX0lOUFVUX0ZJRUxEX0FEREVEJztcbiAgRGFuZ2Vyb3VzQ2hhbmdlVHlwZVsnT1BUSU9OQUxfQVJHX0FEREVEJ10gPSAnT1BUSU9OQUxfQVJHX0FEREVEJztcbiAgRGFuZ2Vyb3VzQ2hhbmdlVHlwZVsnSU1QTEVNRU5URURfSU5URVJGQUNFX0FEREVEJ10gPVxuICAgICdJTVBMRU1FTlRFRF9JTlRFUkZBQ0VfQURERUQnO1xuICBEYW5nZXJvdXNDaGFuZ2VUeXBlWydBUkdfREVGQVVMVF9WQUxVRV9DSEFOR0UnXSA9ICdBUkdfREVGQVVMVF9WQUxVRV9DSEFOR0UnO1xufSkoRGFuZ2Vyb3VzQ2hhbmdlVHlwZSB8fCAoRGFuZ2Vyb3VzQ2hhbmdlVHlwZSA9IHt9KSk7XG5cbi8qKlxuICogR2l2ZW4gdHdvIHNjaGVtYXMsIHJldHVybnMgYW4gQXJyYXkgY29udGFpbmluZyBkZXNjcmlwdGlvbnMgb2YgYWxsIHRoZSB0eXBlc1xuICogb2YgYnJlYWtpbmcgY2hhbmdlcyBjb3ZlcmVkIGJ5IHRoZSBvdGhlciBmdW5jdGlvbnMgZG93biBiZWxvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRCcmVha2luZ0NoYW5nZXMob2xkU2NoZW1hLCBuZXdTY2hlbWEpIHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICByZXR1cm4gZmluZFNjaGVtYUNoYW5nZXMob2xkU2NoZW1hLCBuZXdTY2hlbWEpLmZpbHRlcihcbiAgICAoY2hhbmdlKSA9PiBjaGFuZ2UudHlwZSBpbiBCcmVha2luZ0NoYW5nZVR5cGUsXG4gICk7XG59XG4vKipcbiAqIEdpdmVuIHR3byBzY2hlbWFzLCByZXR1cm5zIGFuIEFycmF5IGNvbnRhaW5pbmcgZGVzY3JpcHRpb25zIG9mIGFsbCB0aGUgdHlwZXNcbiAqIG9mIHBvdGVudGlhbGx5IGRhbmdlcm91cyBjaGFuZ2VzIGNvdmVyZWQgYnkgdGhlIG90aGVyIGZ1bmN0aW9ucyBkb3duIGJlbG93LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRGFuZ2Vyb3VzQ2hhbmdlcyhvbGRTY2hlbWEsIG5ld1NjaGVtYSkge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIHJldHVybiBmaW5kU2NoZW1hQ2hhbmdlcyhvbGRTY2hlbWEsIG5ld1NjaGVtYSkuZmlsdGVyKFxuICAgIChjaGFuZ2UpID0+IGNoYW5nZS50eXBlIGluIERhbmdlcm91c0NoYW5nZVR5cGUsXG4gICk7XG59XG5cbmZ1bmN0aW9uIGZpbmRTY2hlbWFDaGFuZ2VzKG9sZFNjaGVtYSwgbmV3U2NoZW1hKSB7XG4gIHJldHVybiBbXG4gICAgLi4uZmluZFR5cGVDaGFuZ2VzKG9sZFNjaGVtYSwgbmV3U2NoZW1hKSxcbiAgICAuLi5maW5kRGlyZWN0aXZlQ2hhbmdlcyhvbGRTY2hlbWEsIG5ld1NjaGVtYSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIGZpbmREaXJlY3RpdmVDaGFuZ2VzKG9sZFNjaGVtYSwgbmV3U2NoZW1hKSB7XG4gIGNvbnN0IHNjaGVtYUNoYW5nZXMgPSBbXTtcbiAgY29uc3QgZGlyZWN0aXZlc0RpZmYgPSBkaWZmKFxuICAgIG9sZFNjaGVtYS5nZXREaXJlY3RpdmVzKCksXG4gICAgbmV3U2NoZW1hLmdldERpcmVjdGl2ZXMoKSxcbiAgKTtcblxuICBmb3IgKGNvbnN0IG9sZERpcmVjdGl2ZSBvZiBkaXJlY3RpdmVzRGlmZi5yZW1vdmVkKSB7XG4gICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5ESVJFQ1RJVkVfUkVNT1ZFRCxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtvbGREaXJlY3RpdmUubmFtZX0gd2FzIHJlbW92ZWQuYCxcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW29sZERpcmVjdGl2ZSwgbmV3RGlyZWN0aXZlXSBvZiBkaXJlY3RpdmVzRGlmZi5wZXJzaXN0ZWQpIHtcbiAgICBjb25zdCBhcmdzRGlmZiA9IGRpZmYob2xkRGlyZWN0aXZlLmFyZ3MsIG5ld0RpcmVjdGl2ZS5hcmdzKTtcblxuICAgIGZvciAoY29uc3QgbmV3QXJnIG9mIGFyZ3NEaWZmLmFkZGVkKSB7XG4gICAgICBpZiAoaXNSZXF1aXJlZEFyZ3VtZW50KG5ld0FyZykpIHtcbiAgICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuUkVRVUlSRURfRElSRUNUSVZFX0FSR19BRERFRCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYEEgcmVxdWlyZWQgYXJnICR7bmV3QXJnLm5hbWV9IG9uIGRpcmVjdGl2ZSAke29sZERpcmVjdGl2ZS5uYW1lfSB3YXMgYWRkZWQuYCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBvbGRBcmcgb2YgYXJnc0RpZmYucmVtb3ZlZCkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLkRJUkVDVElWRV9BUkdfUkVNT1ZFRCxcbiAgICAgICAgZGVzY3JpcHRpb246IGAke29sZEFyZy5uYW1lfSB3YXMgcmVtb3ZlZCBmcm9tICR7b2xkRGlyZWN0aXZlLm5hbWV9LmAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob2xkRGlyZWN0aXZlLmlzUmVwZWF0YWJsZSAmJiAhbmV3RGlyZWN0aXZlLmlzUmVwZWF0YWJsZSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLkRJUkVDVElWRV9SRVBFQVRBQkxFX1JFTU9WRUQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgUmVwZWF0YWJsZSBmbGFnIHdhcyByZW1vdmVkIGZyb20gJHtvbGREaXJlY3RpdmUubmFtZX0uYCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2Ygb2xkRGlyZWN0aXZlLmxvY2F0aW9ucykge1xuICAgICAgaWYgKCFuZXdEaXJlY3RpdmUubG9jYXRpb25zLmluY2x1ZGVzKGxvY2F0aW9uKSkge1xuICAgICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5ESVJFQ1RJVkVfTE9DQVRJT05fUkVNT1ZFRCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYCR7bG9jYXRpb259IHdhcyByZW1vdmVkIGZyb20gJHtvbGREaXJlY3RpdmUubmFtZX0uYCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYUNoYW5nZXM7XG59XG5cbmZ1bmN0aW9uIGZpbmRUeXBlQ2hhbmdlcyhvbGRTY2hlbWEsIG5ld1NjaGVtYSkge1xuICBjb25zdCBzY2hlbWFDaGFuZ2VzID0gW107XG4gIGNvbnN0IHR5cGVzRGlmZiA9IGRpZmYoXG4gICAgT2JqZWN0LnZhbHVlcyhvbGRTY2hlbWEuZ2V0VHlwZU1hcCgpKSxcbiAgICBPYmplY3QudmFsdWVzKG5ld1NjaGVtYS5nZXRUeXBlTWFwKCkpLFxuICApO1xuXG4gIGZvciAoY29uc3Qgb2xkVHlwZSBvZiB0eXBlc0RpZmYucmVtb3ZlZCkge1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuVFlQRV9SRU1PVkVELFxuICAgICAgZGVzY3JpcHRpb246IGlzU3BlY2lmaWVkU2NhbGFyVHlwZShvbGRUeXBlKVxuICAgICAgICA/IGBTdGFuZGFyZCBzY2FsYXIgJHtvbGRUeXBlLm5hbWV9IHdhcyByZW1vdmVkIGJlY2F1c2UgaXQgaXMgbm90IHJlZmVyZW5jZWQgYW55bW9yZS5gXG4gICAgICAgIDogYCR7b2xkVHlwZS5uYW1lfSB3YXMgcmVtb3ZlZC5gLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBbb2xkVHlwZSwgbmV3VHlwZV0gb2YgdHlwZXNEaWZmLnBlcnNpc3RlZCkge1xuICAgIGlmIChpc0VudW1UeXBlKG9sZFR5cGUpICYmIGlzRW51bVR5cGUobmV3VHlwZSkpIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaCguLi5maW5kRW51bVR5cGVDaGFuZ2VzKG9sZFR5cGUsIG5ld1R5cGUpKTtcbiAgICB9IGVsc2UgaWYgKGlzVW5pb25UeXBlKG9sZFR5cGUpICYmIGlzVW5pb25UeXBlKG5ld1R5cGUpKSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goLi4uZmluZFVuaW9uVHlwZUNoYW5nZXMob2xkVHlwZSwgbmV3VHlwZSkpO1xuICAgIH0gZWxzZSBpZiAoaXNJbnB1dE9iamVjdFR5cGUob2xkVHlwZSkgJiYgaXNJbnB1dE9iamVjdFR5cGUobmV3VHlwZSkpIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaCguLi5maW5kSW5wdXRPYmplY3RUeXBlQ2hhbmdlcyhvbGRUeXBlLCBuZXdUeXBlKSk7XG4gICAgfSBlbHNlIGlmIChpc09iamVjdFR5cGUob2xkVHlwZSkgJiYgaXNPYmplY3RUeXBlKG5ld1R5cGUpKSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goXG4gICAgICAgIC4uLmZpbmRGaWVsZENoYW5nZXMob2xkVHlwZSwgbmV3VHlwZSksXG4gICAgICAgIC4uLmZpbmRJbXBsZW1lbnRlZEludGVyZmFjZXNDaGFuZ2VzKG9sZFR5cGUsIG5ld1R5cGUpLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzSW50ZXJmYWNlVHlwZShvbGRUeXBlKSAmJiBpc0ludGVyZmFjZVR5cGUobmV3VHlwZSkpIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaChcbiAgICAgICAgLi4uZmluZEZpZWxkQ2hhbmdlcyhvbGRUeXBlLCBuZXdUeXBlKSxcbiAgICAgICAgLi4uZmluZEltcGxlbWVudGVkSW50ZXJmYWNlc0NoYW5nZXMob2xkVHlwZSwgbmV3VHlwZSksXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAob2xkVHlwZS5jb25zdHJ1Y3RvciAhPT0gbmV3VHlwZS5jb25zdHJ1Y3Rvcikge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLlRZUEVfQ0hBTkdFRF9LSU5ELFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICBgJHtvbGRUeXBlLm5hbWV9IGNoYW5nZWQgZnJvbSBgICtcbiAgICAgICAgICBgJHt0eXBlS2luZE5hbWUob2xkVHlwZSl9IHRvICR7dHlwZUtpbmROYW1lKG5ld1R5cGUpfS5gLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYUNoYW5nZXM7XG59XG5cbmZ1bmN0aW9uIGZpbmRJbnB1dE9iamVjdFR5cGVDaGFuZ2VzKG9sZFR5cGUsIG5ld1R5cGUpIHtcbiAgY29uc3Qgc2NoZW1hQ2hhbmdlcyA9IFtdO1xuICBjb25zdCBmaWVsZHNEaWZmID0gZGlmZihcbiAgICBPYmplY3QudmFsdWVzKG9sZFR5cGUuZ2V0RmllbGRzKCkpLFxuICAgIE9iamVjdC52YWx1ZXMobmV3VHlwZS5nZXRGaWVsZHMoKSksXG4gICk7XG5cbiAgZm9yIChjb25zdCBuZXdGaWVsZCBvZiBmaWVsZHNEaWZmLmFkZGVkKSB7XG4gICAgaWYgKGlzUmVxdWlyZWRJbnB1dEZpZWxkKG5ld0ZpZWxkKSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLlJFUVVJUkVEX0lOUFVUX0ZJRUxEX0FEREVELFxuICAgICAgICBkZXNjcmlwdGlvbjogYEEgcmVxdWlyZWQgZmllbGQgJHtuZXdGaWVsZC5uYW1lfSBvbiBpbnB1dCB0eXBlICR7b2xkVHlwZS5uYW1lfSB3YXMgYWRkZWQuYCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICB0eXBlOiBEYW5nZXJvdXNDaGFuZ2VUeXBlLk9QVElPTkFMX0lOUFVUX0ZJRUxEX0FEREVELFxuICAgICAgICBkZXNjcmlwdGlvbjogYEFuIG9wdGlvbmFsIGZpZWxkICR7bmV3RmllbGQubmFtZX0gb24gaW5wdXQgdHlwZSAke29sZFR5cGUubmFtZX0gd2FzIGFkZGVkLmAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IG9sZEZpZWxkIG9mIGZpZWxkc0RpZmYucmVtb3ZlZCkge1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuRklFTERfUkVNT1ZFRCxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtvbGRUeXBlLm5hbWV9LiR7b2xkRmllbGQubmFtZX0gd2FzIHJlbW92ZWQuYCxcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW29sZEZpZWxkLCBuZXdGaWVsZF0gb2YgZmllbGRzRGlmZi5wZXJzaXN0ZWQpIHtcbiAgICBjb25zdCBpc1NhZmUgPSBpc0NoYW5nZVNhZmVGb3JJbnB1dE9iamVjdEZpZWxkT3JGaWVsZEFyZyhcbiAgICAgIG9sZEZpZWxkLnR5cGUsXG4gICAgICBuZXdGaWVsZC50eXBlLFxuICAgICk7XG5cbiAgICBpZiAoIWlzU2FmZSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLkZJRUxEX0NIQU5HRURfS0lORCxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgYCR7b2xkVHlwZS5uYW1lfS4ke29sZEZpZWxkLm5hbWV9IGNoYW5nZWQgdHlwZSBmcm9tIGAgK1xuICAgICAgICAgIGAke1N0cmluZyhvbGRGaWVsZC50eXBlKX0gdG8gJHtTdHJpbmcobmV3RmllbGQudHlwZSl9LmAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NoZW1hQ2hhbmdlcztcbn1cblxuZnVuY3Rpb24gZmluZFVuaW9uVHlwZUNoYW5nZXMob2xkVHlwZSwgbmV3VHlwZSkge1xuICBjb25zdCBzY2hlbWFDaGFuZ2VzID0gW107XG4gIGNvbnN0IHBvc3NpYmxlVHlwZXNEaWZmID0gZGlmZihvbGRUeXBlLmdldFR5cGVzKCksIG5ld1R5cGUuZ2V0VHlwZXMoKSk7XG5cbiAgZm9yIChjb25zdCBuZXdQb3NzaWJsZVR5cGUgb2YgcG9zc2libGVUeXBlc0RpZmYuYWRkZWQpIHtcbiAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgdHlwZTogRGFuZ2Vyb3VzQ2hhbmdlVHlwZS5UWVBFX0FEREVEX1RPX1VOSU9OLFxuICAgICAgZGVzY3JpcHRpb246IGAke25ld1Bvc3NpYmxlVHlwZS5uYW1lfSB3YXMgYWRkZWQgdG8gdW5pb24gdHlwZSAke29sZFR5cGUubmFtZX0uYCxcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAoY29uc3Qgb2xkUG9zc2libGVUeXBlIG9mIHBvc3NpYmxlVHlwZXNEaWZmLnJlbW92ZWQpIHtcbiAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLlRZUEVfUkVNT1ZFRF9GUk9NX1VOSU9OLFxuICAgICAgZGVzY3JpcHRpb246IGAke29sZFBvc3NpYmxlVHlwZS5uYW1lfSB3YXMgcmVtb3ZlZCBmcm9tIHVuaW9uIHR5cGUgJHtvbGRUeXBlLm5hbWV9LmAsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hQ2hhbmdlcztcbn1cblxuZnVuY3Rpb24gZmluZEVudW1UeXBlQ2hhbmdlcyhvbGRUeXBlLCBuZXdUeXBlKSB7XG4gIGNvbnN0IHNjaGVtYUNoYW5nZXMgPSBbXTtcbiAgY29uc3QgdmFsdWVzRGlmZiA9IGRpZmYob2xkVHlwZS5nZXRWYWx1ZXMoKSwgbmV3VHlwZS5nZXRWYWx1ZXMoKSk7XG5cbiAgZm9yIChjb25zdCBuZXdWYWx1ZSBvZiB2YWx1ZXNEaWZmLmFkZGVkKSB7XG4gICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgIHR5cGU6IERhbmdlcm91c0NoYW5nZVR5cGUuVkFMVUVfQURERURfVE9fRU5VTSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtuZXdWYWx1ZS5uYW1lfSB3YXMgYWRkZWQgdG8gZW51bSB0eXBlICR7b2xkVHlwZS5uYW1lfS5gLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBvbGRWYWx1ZSBvZiB2YWx1ZXNEaWZmLnJlbW92ZWQpIHtcbiAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLlZBTFVFX1JFTU9WRURfRlJPTV9FTlVNLFxuICAgICAgZGVzY3JpcHRpb246IGAke29sZFZhbHVlLm5hbWV9IHdhcyByZW1vdmVkIGZyb20gZW51bSB0eXBlICR7b2xkVHlwZS5uYW1lfS5gLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYUNoYW5nZXM7XG59XG5cbmZ1bmN0aW9uIGZpbmRJbXBsZW1lbnRlZEludGVyZmFjZXNDaGFuZ2VzKG9sZFR5cGUsIG5ld1R5cGUpIHtcbiAgY29uc3Qgc2NoZW1hQ2hhbmdlcyA9IFtdO1xuICBjb25zdCBpbnRlcmZhY2VzRGlmZiA9IGRpZmYob2xkVHlwZS5nZXRJbnRlcmZhY2VzKCksIG5ld1R5cGUuZ2V0SW50ZXJmYWNlcygpKTtcblxuICBmb3IgKGNvbnN0IG5ld0ludGVyZmFjZSBvZiBpbnRlcmZhY2VzRGlmZi5hZGRlZCkge1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICB0eXBlOiBEYW5nZXJvdXNDaGFuZ2VUeXBlLklNUExFTUVOVEVEX0lOVEVSRkFDRV9BRERFRCxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtuZXdJbnRlcmZhY2UubmFtZX0gYWRkZWQgdG8gaW50ZXJmYWNlcyBpbXBsZW1lbnRlZCBieSAke29sZFR5cGUubmFtZX0uYCxcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAoY29uc3Qgb2xkSW50ZXJmYWNlIG9mIGludGVyZmFjZXNEaWZmLnJlbW92ZWQpIHtcbiAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLklNUExFTUVOVEVEX0lOVEVSRkFDRV9SRU1PVkVELFxuICAgICAgZGVzY3JpcHRpb246IGAke29sZFR5cGUubmFtZX0gbm8gbG9uZ2VyIGltcGxlbWVudHMgaW50ZXJmYWNlICR7b2xkSW50ZXJmYWNlLm5hbWV9LmAsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hQ2hhbmdlcztcbn1cblxuZnVuY3Rpb24gZmluZEZpZWxkQ2hhbmdlcyhvbGRUeXBlLCBuZXdUeXBlKSB7XG4gIGNvbnN0IHNjaGVtYUNoYW5nZXMgPSBbXTtcbiAgY29uc3QgZmllbGRzRGlmZiA9IGRpZmYoXG4gICAgT2JqZWN0LnZhbHVlcyhvbGRUeXBlLmdldEZpZWxkcygpKSxcbiAgICBPYmplY3QudmFsdWVzKG5ld1R5cGUuZ2V0RmllbGRzKCkpLFxuICApO1xuXG4gIGZvciAoY29uc3Qgb2xkRmllbGQgb2YgZmllbGRzRGlmZi5yZW1vdmVkKSB7XG4gICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5GSUVMRF9SRU1PVkVELFxuICAgICAgZGVzY3JpcHRpb246IGAke29sZFR5cGUubmFtZX0uJHtvbGRGaWVsZC5uYW1lfSB3YXMgcmVtb3ZlZC5gLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBbb2xkRmllbGQsIG5ld0ZpZWxkXSBvZiBmaWVsZHNEaWZmLnBlcnNpc3RlZCkge1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCguLi5maW5kQXJnQ2hhbmdlcyhvbGRUeXBlLCBvbGRGaWVsZCwgbmV3RmllbGQpKTtcbiAgICBjb25zdCBpc1NhZmUgPSBpc0NoYW5nZVNhZmVGb3JPYmplY3RPckludGVyZmFjZUZpZWxkKFxuICAgICAgb2xkRmllbGQudHlwZSxcbiAgICAgIG5ld0ZpZWxkLnR5cGUsXG4gICAgKTtcblxuICAgIGlmICghaXNTYWZlKSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuRklFTERfQ0hBTkdFRF9LSU5ELFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICBgJHtvbGRUeXBlLm5hbWV9LiR7b2xkRmllbGQubmFtZX0gY2hhbmdlZCB0eXBlIGZyb20gYCArXG4gICAgICAgICAgYCR7U3RyaW5nKG9sZEZpZWxkLnR5cGUpfSB0byAke1N0cmluZyhuZXdGaWVsZC50eXBlKX0uYCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzY2hlbWFDaGFuZ2VzO1xufVxuXG5mdW5jdGlvbiBmaW5kQXJnQ2hhbmdlcyhvbGRUeXBlLCBvbGRGaWVsZCwgbmV3RmllbGQpIHtcbiAgY29uc3Qgc2NoZW1hQ2hhbmdlcyA9IFtdO1xuICBjb25zdCBhcmdzRGlmZiA9IGRpZmYob2xkRmllbGQuYXJncywgbmV3RmllbGQuYXJncyk7XG5cbiAgZm9yIChjb25zdCBvbGRBcmcgb2YgYXJnc0RpZmYucmVtb3ZlZCkge1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuQVJHX1JFTU9WRUQsXG4gICAgICBkZXNjcmlwdGlvbjogYCR7b2xkVHlwZS5uYW1lfS4ke29sZEZpZWxkLm5hbWV9IGFyZyAke29sZEFyZy5uYW1lfSB3YXMgcmVtb3ZlZC5gLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBbb2xkQXJnLCBuZXdBcmddIG9mIGFyZ3NEaWZmLnBlcnNpc3RlZCkge1xuICAgIGNvbnN0IGlzU2FmZSA9IGlzQ2hhbmdlU2FmZUZvcklucHV0T2JqZWN0RmllbGRPckZpZWxkQXJnKFxuICAgICAgb2xkQXJnLnR5cGUsXG4gICAgICBuZXdBcmcudHlwZSxcbiAgICApO1xuXG4gICAgaWYgKCFpc1NhZmUpIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5BUkdfQ0hBTkdFRF9LSU5ELFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICBgJHtvbGRUeXBlLm5hbWV9LiR7b2xkRmllbGQubmFtZX0gYXJnICR7b2xkQXJnLm5hbWV9IGhhcyBjaGFuZ2VkIHR5cGUgZnJvbSBgICtcbiAgICAgICAgICBgJHtTdHJpbmcob2xkQXJnLnR5cGUpfSB0byAke1N0cmluZyhuZXdBcmcudHlwZSl9LmAsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKG9sZEFyZy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKG5ld0FyZy5kZWZhdWx0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICAgIHR5cGU6IERhbmdlcm91c0NoYW5nZVR5cGUuQVJHX0RFRkFVTFRfVkFMVUVfQ0hBTkdFLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgJHtvbGRUeXBlLm5hbWV9LiR7b2xkRmllbGQubmFtZX0gYXJnICR7b2xkQXJnLm5hbWV9IGRlZmF1bHRWYWx1ZSB3YXMgcmVtb3ZlZC5gLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNpbmNlIHdlIGxvb2tpbmcgb25seSBmb3IgY2xpZW50J3Mgb2JzZXJ2YWJsZSBjaGFuZ2VzIHdlIHNob3VsZFxuICAgICAgICAvLyBjb21wYXJlIGRlZmF1bHQgdmFsdWVzIGluIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uIGFzIHRoZXkgYXJlXG4gICAgICAgIC8vIHJlcHJlc2VudGVkIGluc2lkZSBpbnRyb3NwZWN0aW9uLlxuICAgICAgICBjb25zdCBvbGRWYWx1ZVN0ciA9IHN0cmluZ2lmeVZhbHVlKG9sZEFyZy5kZWZhdWx0VmFsdWUsIG9sZEFyZy50eXBlKTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWVTdHIgPSBzdHJpbmdpZnlWYWx1ZShuZXdBcmcuZGVmYXVsdFZhbHVlLCBuZXdBcmcudHlwZSk7XG5cbiAgICAgICAgaWYgKG9sZFZhbHVlU3RyICE9PSBuZXdWYWx1ZVN0cikge1xuICAgICAgICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBEYW5nZXJvdXNDaGFuZ2VUeXBlLkFSR19ERUZBVUxUX1ZBTFVFX0NIQU5HRSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgJHtvbGRUeXBlLm5hbWV9LiR7b2xkRmllbGQubmFtZX0gYXJnICR7b2xkQXJnLm5hbWV9IGhhcyBjaGFuZ2VkIGRlZmF1bHRWYWx1ZSBmcm9tICR7b2xkVmFsdWVTdHJ9IHRvICR7bmV3VmFsdWVTdHJ9LmAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IG5ld0FyZyBvZiBhcmdzRGlmZi5hZGRlZCkge1xuICAgIGlmIChpc1JlcXVpcmVkQXJndW1lbnQobmV3QXJnKSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLlJFUVVJUkVEX0FSR19BRERFRCxcbiAgICAgICAgZGVzY3JpcHRpb246IGBBIHJlcXVpcmVkIGFyZyAke25ld0FyZy5uYW1lfSBvbiAke29sZFR5cGUubmFtZX0uJHtvbGRGaWVsZC5uYW1lfSB3YXMgYWRkZWQuYCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICB0eXBlOiBEYW5nZXJvdXNDaGFuZ2VUeXBlLk9QVElPTkFMX0FSR19BRERFRCxcbiAgICAgICAgZGVzY3JpcHRpb246IGBBbiBvcHRpb25hbCBhcmcgJHtuZXdBcmcubmFtZX0gb24gJHtvbGRUeXBlLm5hbWV9LiR7b2xkRmllbGQubmFtZX0gd2FzIGFkZGVkLmAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NoZW1hQ2hhbmdlcztcbn1cblxuZnVuY3Rpb24gaXNDaGFuZ2VTYWZlRm9yT2JqZWN0T3JJbnRlcmZhY2VGaWVsZChvbGRUeXBlLCBuZXdUeXBlKSB7XG4gIGlmIChpc0xpc3RUeXBlKG9sZFR5cGUpKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIC8vIGlmIHRoZXkncmUgYm90aCBsaXN0cywgbWFrZSBzdXJlIHRoZSB1bmRlcmx5aW5nIHR5cGVzIGFyZSBjb21wYXRpYmxlXG4gICAgICAoaXNMaXN0VHlwZShuZXdUeXBlKSAmJlxuICAgICAgICBpc0NoYW5nZVNhZmVGb3JPYmplY3RPckludGVyZmFjZUZpZWxkKFxuICAgICAgICAgIG9sZFR5cGUub2ZUeXBlLFxuICAgICAgICAgIG5ld1R5cGUub2ZUeXBlLFxuICAgICAgICApKSB8fCAvLyBtb3ZpbmcgZnJvbSBudWxsYWJsZSB0byBub24tbnVsbCBvZiB0aGUgc2FtZSB1bmRlcmx5aW5nIHR5cGUgaXMgc2FmZVxuICAgICAgKGlzTm9uTnVsbFR5cGUobmV3VHlwZSkgJiZcbiAgICAgICAgaXNDaGFuZ2VTYWZlRm9yT2JqZWN0T3JJbnRlcmZhY2VGaWVsZChvbGRUeXBlLCBuZXdUeXBlLm9mVHlwZSkpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc05vbk51bGxUeXBlKG9sZFR5cGUpKSB7XG4gICAgLy8gaWYgdGhleSdyZSBib3RoIG5vbi1udWxsLCBtYWtlIHN1cmUgdGhlIHVuZGVybHlpbmcgdHlwZXMgYXJlIGNvbXBhdGlibGVcbiAgICByZXR1cm4gKFxuICAgICAgaXNOb25OdWxsVHlwZShuZXdUeXBlKSAmJlxuICAgICAgaXNDaGFuZ2VTYWZlRm9yT2JqZWN0T3JJbnRlcmZhY2VGaWVsZChvbGRUeXBlLm9mVHlwZSwgbmV3VHlwZS5vZlR5cGUpXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgLy8gaWYgdGhleSdyZSBib3RoIG5hbWVkIHR5cGVzLCBzZWUgaWYgdGhlaXIgbmFtZXMgYXJlIGVxdWl2YWxlbnRcbiAgICAoaXNOYW1lZFR5cGUobmV3VHlwZSkgJiYgb2xkVHlwZS5uYW1lID09PSBuZXdUeXBlLm5hbWUpIHx8IC8vIG1vdmluZyBmcm9tIG51bGxhYmxlIHRvIG5vbi1udWxsIG9mIHRoZSBzYW1lIHVuZGVybHlpbmcgdHlwZSBpcyBzYWZlXG4gICAgKGlzTm9uTnVsbFR5cGUobmV3VHlwZSkgJiZcbiAgICAgIGlzQ2hhbmdlU2FmZUZvck9iamVjdE9ySW50ZXJmYWNlRmllbGQob2xkVHlwZSwgbmV3VHlwZS5vZlR5cGUpKVxuICApO1xufVxuXG5mdW5jdGlvbiBpc0NoYW5nZVNhZmVGb3JJbnB1dE9iamVjdEZpZWxkT3JGaWVsZEFyZyhvbGRUeXBlLCBuZXdUeXBlKSB7XG4gIGlmIChpc0xpc3RUeXBlKG9sZFR5cGUpKSB7XG4gICAgLy8gaWYgdGhleSdyZSBib3RoIGxpc3RzLCBtYWtlIHN1cmUgdGhlIHVuZGVybHlpbmcgdHlwZXMgYXJlIGNvbXBhdGlibGVcbiAgICByZXR1cm4gKFxuICAgICAgaXNMaXN0VHlwZShuZXdUeXBlKSAmJlxuICAgICAgaXNDaGFuZ2VTYWZlRm9ySW5wdXRPYmplY3RGaWVsZE9yRmllbGRBcmcob2xkVHlwZS5vZlR5cGUsIG5ld1R5cGUub2ZUeXBlKVxuICAgICk7XG4gIH1cblxuICBpZiAoaXNOb25OdWxsVHlwZShvbGRUeXBlKSkge1xuICAgIHJldHVybiAoXG4gICAgICAvLyBpZiB0aGV5J3JlIGJvdGggbm9uLW51bGwsIG1ha2Ugc3VyZSB0aGUgdW5kZXJseWluZyB0eXBlcyBhcmVcbiAgICAgIC8vIGNvbXBhdGlibGVcbiAgICAgIChpc05vbk51bGxUeXBlKG5ld1R5cGUpICYmXG4gICAgICAgIGlzQ2hhbmdlU2FmZUZvcklucHV0T2JqZWN0RmllbGRPckZpZWxkQXJnKFxuICAgICAgICAgIG9sZFR5cGUub2ZUeXBlLFxuICAgICAgICAgIG5ld1R5cGUub2ZUeXBlLFxuICAgICAgICApKSB8fCAvLyBtb3ZpbmcgZnJvbSBub24tbnVsbCB0byBudWxsYWJsZSBvZiB0aGUgc2FtZSB1bmRlcmx5aW5nIHR5cGUgaXMgc2FmZVxuICAgICAgKCFpc05vbk51bGxUeXBlKG5ld1R5cGUpICYmXG4gICAgICAgIGlzQ2hhbmdlU2FmZUZvcklucHV0T2JqZWN0RmllbGRPckZpZWxkQXJnKG9sZFR5cGUub2ZUeXBlLCBuZXdUeXBlKSlcbiAgICApO1xuICB9IC8vIGlmIHRoZXkncmUgYm90aCBuYW1lZCB0eXBlcywgc2VlIGlmIHRoZWlyIG5hbWVzIGFyZSBlcXVpdmFsZW50XG5cbiAgcmV0dXJuIGlzTmFtZWRUeXBlKG5ld1R5cGUpICYmIG9sZFR5cGUubmFtZSA9PT0gbmV3VHlwZS5uYW1lO1xufVxuXG5mdW5jdGlvbiB0eXBlS2luZE5hbWUodHlwZSkge1xuICBpZiAoaXNTY2FsYXJUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuICdhIFNjYWxhciB0eXBlJztcbiAgfVxuXG4gIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gJ2FuIE9iamVjdCB0eXBlJztcbiAgfVxuXG4gIGlmIChpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gJ2FuIEludGVyZmFjZSB0eXBlJztcbiAgfVxuXG4gIGlmIChpc1VuaW9uVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiAnYSBVbmlvbiB0eXBlJztcbiAgfVxuXG4gIGlmIChpc0VudW1UeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuICdhbiBFbnVtIHR5cGUnO1xuICB9XG5cbiAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuICdhbiBJbnB1dCB0eXBlJztcbiAgfVxuICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gIC8vIE5vdCByZWFjaGFibGUsIGFsbCBwb3NzaWJsZSB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZC5cblxuICBmYWxzZSB8fCBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIHR5cGU6ICcgKyBpbnNwZWN0KHR5cGUpKTtcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5VmFsdWUodmFsdWUsIHR5cGUpIHtcbiAgY29uc3QgYXN0ID0gYXN0RnJvbVZhbHVlKHZhbHVlLCB0eXBlKTtcbiAgYXN0ICE9IG51bGwgfHwgaW52YXJpYW50KGZhbHNlKTtcbiAgcmV0dXJuIHByaW50KHNvcnRWYWx1ZU5vZGUoYXN0KSk7XG59XG5cbmZ1bmN0aW9uIGRpZmYob2xkQXJyYXksIG5ld0FycmF5KSB7XG4gIGNvbnN0IGFkZGVkID0gW107XG4gIGNvbnN0IHJlbW92ZWQgPSBbXTtcbiAgY29uc3QgcGVyc2lzdGVkID0gW107XG4gIGNvbnN0IG9sZE1hcCA9IGtleU1hcChvbGRBcnJheSwgKHsgbmFtZSB9KSA9PiBuYW1lKTtcbiAgY29uc3QgbmV3TWFwID0ga2V5TWFwKG5ld0FycmF5LCAoeyBuYW1lIH0pID0+IG5hbWUpO1xuXG4gIGZvciAoY29uc3Qgb2xkSXRlbSBvZiBvbGRBcnJheSkge1xuICAgIGNvbnN0IG5ld0l0ZW0gPSBuZXdNYXBbb2xkSXRlbS5uYW1lXTtcblxuICAgIGlmIChuZXdJdGVtID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlbW92ZWQucHVzaChvbGRJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGVyc2lzdGVkLnB1c2goW29sZEl0ZW0sIG5ld0l0ZW1dKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IG5ld0l0ZW0gb2YgbmV3QXJyYXkpIHtcbiAgICBpZiAob2xkTWFwW25ld0l0ZW0ubmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWRkZWQucHVzaChuZXdJdGVtKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFkZGVkLFxuICAgIHBlcnNpc3RlZCxcbiAgICByZW1vdmVkLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/findBreakingChanges.mjs\n");
|
997 |
|
998 | }),
|
999 |
|
1000 | "../../../node_modules/graphql/utilities/getIntrospectionQuery.mjs":
|
1001 |
|
1002 |
|
1003 |
|
1004 |
|
1005 | (function(module, __webpack_exports__, __webpack_require__) {
|
1006 |
|
1007 | "use strict";
|
1008 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getIntrospectionQuery\", function() { return getIntrospectionQuery; });\n/**\n * Produce the GraphQL query recommended for a full schema introspection.\n * Accepts optional IntrospectionOptions.\n */\nfunction getIntrospectionQuery(options) {\n const optionsWithDefault = {\n descriptions: true,\n specifiedByUrl: false,\n directiveIsRepeatable: false,\n schemaDescription: false,\n inputValueDeprecation: false,\n ...options,\n };\n const descriptions = optionsWithDefault.descriptions ? 'description' : '';\n const specifiedByUrl = optionsWithDefault.specifiedByUrl\n ? 'specifiedByURL'\n : '';\n const directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable\n ? 'isRepeatable'\n : '';\n const schemaDescription = optionsWithDefault.schemaDescription\n ? descriptions\n : '';\n\n function inputDeprecation(str) {\n return optionsWithDefault.inputValueDeprecation ? str : '';\n }\n\n return `\n query IntrospectionQuery {\n __schema {\n ${schemaDescription}\n queryType { name }\n mutationType { name }\n subscriptionType { name }\n types {\n ...FullType\n }\n directives {\n name\n ${descriptions}\n ${directiveIsRepeatable}\n locations\n args${inputDeprecation('(includeDeprecated: true)')} {\n ...InputValue\n }\n }\n }\n }\n\n fragment FullType on __Type {\n kind\n name\n ${descriptions}\n ${specifiedByUrl}\n fields(includeDeprecated: true) {\n name\n ${descriptions}\n args${inputDeprecation('(includeDeprecated: true)')} {\n ...InputValue\n }\n type {\n ...TypeRef\n }\n isDeprecated\n deprecationReason\n }\n inputFields${inputDeprecation('(includeDeprecated: true)')} {\n ...InputValue\n }\n interfaces {\n ...TypeRef\n }\n enumValues(includeDeprecated: true) {\n name\n ${descriptions}\n isDeprecated\n deprecationReason\n }\n possibleTypes {\n ...TypeRef\n }\n }\n\n fragment InputValue on __InputValue {\n name\n ${descriptions}\n type { ...TypeRef }\n defaultValue\n ${inputDeprecation('isDeprecated')}\n ${inputDeprecation('deprecationReason')}\n }\n\n fragment TypeRef on __Type {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n }\n }\n }\n `;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2dldEludHJvc3BlY3Rpb25RdWVyeS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvZ2V0SW50cm9zcGVjdGlvblF1ZXJ5Lm1qcz8wOTU4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvZHVjZSB0aGUgR3JhcGhRTCBxdWVyeSByZWNvbW1lbmRlZCBmb3IgYSBmdWxsIHNjaGVtYSBpbnRyb3NwZWN0aW9uLlxuICogQWNjZXB0cyBvcHRpb25hbCBJbnRyb3NwZWN0aW9uT3B0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEludHJvc3BlY3Rpb25RdWVyeShvcHRpb25zKSB7XG4gIGNvbnN0IG9wdGlvbnNXaXRoRGVmYXVsdCA9IHtcbiAgICBkZXNjcmlwdGlvbnM6IHRydWUsXG4gICAgc3BlY2lmaWVkQnlVcmw6IGZhbHNlLFxuICAgIGRpcmVjdGl2ZUlzUmVwZWF0YWJsZTogZmFsc2UsXG4gICAgc2NoZW1hRGVzY3JpcHRpb246IGZhbHNlLFxuICAgIGlucHV0VmFsdWVEZXByZWNhdGlvbjogZmFsc2UsXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcbiAgY29uc3QgZGVzY3JpcHRpb25zID0gb3B0aW9uc1dpdGhEZWZhdWx0LmRlc2NyaXB0aW9ucyA/ICdkZXNjcmlwdGlvbicgOiAnJztcbiAgY29uc3Qgc3BlY2lmaWVkQnlVcmwgPSBvcHRpb25zV2l0aERlZmF1bHQuc3BlY2lmaWVkQnlVcmxcbiAgICA/ICdzcGVjaWZpZWRCeVVSTCdcbiAgICA6ICcnO1xuICBjb25zdCBkaXJlY3RpdmVJc1JlcGVhdGFibGUgPSBvcHRpb25zV2l0aERlZmF1bHQuZGlyZWN0aXZlSXNSZXBlYXRhYmxlXG4gICAgPyAnaXNSZXBlYXRhYmxlJ1xuICAgIDogJyc7XG4gIGNvbnN0IHNjaGVtYURlc2NyaXB0aW9uID0gb3B0aW9uc1dpdGhEZWZhdWx0LnNjaGVtYURlc2NyaXB0aW9uXG4gICAgPyBkZXNjcmlwdGlvbnNcbiAgICA6ICcnO1xuXG4gIGZ1bmN0aW9uIGlucHV0RGVwcmVjYXRpb24oc3RyKSB7XG4gICAgcmV0dXJuIG9wdGlvbnNXaXRoRGVmYXVsdC5pbnB1dFZhbHVlRGVwcmVjYXRpb24gPyBzdHIgOiAnJztcbiAgfVxuXG4gIHJldHVybiBgXG4gICAgcXVlcnkgSW50cm9zcGVjdGlvblF1ZXJ5IHtcbiAgICAgIF9fc2NoZW1hIHtcbiAgICAgICAgJHtzY2hlbWFEZXNjcmlwdGlvbn1cbiAgICAgICAgcXVlcnlUeXBlIHsgbmFtZSB9XG4gICAgICAgIG11dGF0aW9uVHlwZSB7IG5hbWUgfVxuICAgICAgICBzdWJzY3JpcHRpb25UeXBlIHsgbmFtZSB9XG4gICAgICAgIHR5cGVzIHtcbiAgICAgICAgICAuLi5GdWxsVHlwZVxuICAgICAgICB9XG4gICAgICAgIGRpcmVjdGl2ZXMge1xuICAgICAgICAgIG5hbWVcbiAgICAgICAgICAke2Rlc2NyaXB0aW9uc31cbiAgICAgICAgICAke2RpcmVjdGl2ZUlzUmVwZWF0YWJsZX1cbiAgICAgICAgICBsb2NhdGlvbnNcbiAgICAgICAgICBhcmdzJHtpbnB1dERlcHJlY2F0aW9uKCcoaW5jbHVkZURlcHJlY2F0ZWQ6IHRydWUpJyl9IHtcbiAgICAgICAgICAgIC4uLklucHV0VmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmcmFnbWVudCBGdWxsVHlwZSBvbiBfX1R5cGUge1xuICAgICAga2luZFxuICAgICAgbmFtZVxuICAgICAgJHtkZXNjcmlwdGlvbnN9XG4gICAgICAke3NwZWNpZmllZEJ5VXJsfVxuICAgICAgZmllbGRzKGluY2x1ZGVEZXByZWNhdGVkOiB0cnVlKSB7XG4gICAgICAgIG5hbWVcbiAgICAgICAgJHtkZXNjcmlwdGlvbnN9XG4gICAgICAgIGFyZ3Mke2lucHV0RGVwcmVjYXRpb24oJyhpbmNsdWRlRGVwcmVjYXRlZDogdHJ1ZSknKX0ge1xuICAgICAgICAgIC4uLklucHV0VmFsdWVcbiAgICAgICAgfVxuICAgICAgICB0eXBlIHtcbiAgICAgICAgICAuLi5UeXBlUmVmXG4gICAgICAgIH1cbiAgICAgICAgaXNEZXByZWNhdGVkXG4gICAgICAgIGRlcHJlY2F0aW9uUmVhc29uXG4gICAgICB9XG4gICAgICBpbnB1dEZpZWxkcyR7aW5wdXREZXByZWNhdGlvbignKGluY2x1ZGVEZXByZWNhdGVkOiB0cnVlKScpfSB7XG4gICAgICAgIC4uLklucHV0VmFsdWVcbiAgICAgIH1cbiAgICAgIGludGVyZmFjZXMge1xuICAgICAgICAuLi5UeXBlUmVmXG4gICAgICB9XG4gICAgICBlbnVtVmFsdWVzKGluY2x1ZGVEZXByZWNhdGVkOiB0cnVlKSB7XG4gICAgICAgIG5hbWVcbiAgICAgICAgJHtkZXNjcmlwdGlvbnN9XG4gICAgICAgIGlzRGVwcmVjYXRlZFxuICAgICAgICBkZXByZWNhdGlvblJlYXNvblxuICAgICAgfVxuICAgICAgcG9zc2libGVUeXBlcyB7XG4gICAgICAgIC4uLlR5cGVSZWZcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmcmFnbWVudCBJbnB1dFZhbHVlIG9uIF9fSW5wdXRWYWx1ZSB7XG4gICAgICBuYW1lXG4gICAgICAke2Rlc2NyaXB0aW9uc31cbiAgICAgIHR5cGUgeyAuLi5UeXBlUmVmIH1cbiAgICAgIGRlZmF1bHRWYWx1ZVxuICAgICAgJHtpbnB1dERlcHJlY2F0aW9uKCdpc0RlcHJlY2F0ZWQnKX1cbiAgICAgICR7aW5wdXREZXByZWNhdGlvbignZGVwcmVjYXRpb25SZWFzb24nKX1cbiAgICB9XG5cbiAgICBmcmFnbWVudCBUeXBlUmVmIG9uIF9fVHlwZSB7XG4gICAgICBraW5kXG4gICAgICBuYW1lXG4gICAgICBvZlR5cGUge1xuICAgICAgICBraW5kXG4gICAgICAgIG5hbWVcbiAgICAgICAgb2ZUeXBlIHtcbiAgICAgICAgICBraW5kXG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIG9mVHlwZSB7XG4gICAgICAgICAgICBraW5kXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBvZlR5cGUge1xuICAgICAgICAgICAgICBraW5kXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgb2ZUeXBlIHtcbiAgICAgICAgICAgICAgICBraW5kXG4gICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgIG9mVHlwZSB7XG4gICAgICAgICAgICAgICAgICBraW5kXG4gICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICBvZlR5cGUge1xuICAgICAgICAgICAgICAgICAgICBraW5kXG4gICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIGA7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/getIntrospectionQuery.mjs\n");
|
1009 |
|
1010 | }),
|
1011 |
|
1012 | "../../../node_modules/graphql/utilities/getOperationAST.mjs":
|
1013 |
|
1014 |
|
1015 |
|
1016 |
|
1017 | (function(module, __webpack_exports__, __webpack_require__) {
|
1018 |
|
1019 | "use strict";
|
1020 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOperationAST\", function() { return getOperationAST; });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n\n/**\n * Returns an operation AST given a document AST and optionally an operation\n * name. If a name is not provided, an operation is only returned if only one is\n * provided in the document.\n */\n\nfunction getOperationAST(documentAST, operationName) {\n let operation = null;\n\n for (const definition of documentAST.definitions) {\n if (definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].OPERATION_DEFINITION) {\n var _definition$name;\n\n if (operationName == null) {\n // If no operation name was provided, only return an Operation if there\n // is one defined in the document. Upon encountering the second, return\n // null.\n if (operation) {\n return null;\n }\n\n operation = definition;\n } else if (\n ((_definition$name = definition.name) === null ||\n _definition$name === void 0\n ? void 0\n : _definition$name.value) === operationName\n ) {\n return definition;\n }\n }\n }\n\n return operation;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2dldE9wZXJhdGlvbkFTVC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvZ2V0T3BlcmF0aW9uQVNULm1qcz83MDlkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuLyoqXG4gKiBSZXR1cm5zIGFuIG9wZXJhdGlvbiBBU1QgZ2l2ZW4gYSBkb2N1bWVudCBBU1QgYW5kIG9wdGlvbmFsbHkgYW4gb3BlcmF0aW9uXG4gKiBuYW1lLiBJZiBhIG5hbWUgaXMgbm90IHByb3ZpZGVkLCBhbiBvcGVyYXRpb24gaXMgb25seSByZXR1cm5lZCBpZiBvbmx5IG9uZSBpc1xuICogcHJvdmlkZWQgaW4gdGhlIGRvY3VtZW50LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcGVyYXRpb25BU1QoZG9jdW1lbnRBU1QsIG9wZXJhdGlvbk5hbWUpIHtcbiAgbGV0IG9wZXJhdGlvbiA9IG51bGw7XG5cbiAgZm9yIChjb25zdCBkZWZpbml0aW9uIG9mIGRvY3VtZW50QVNULmRlZmluaXRpb25zKSB7XG4gICAgaWYgKGRlZmluaXRpb24ua2luZCA9PT0gS2luZC5PUEVSQVRJT05fREVGSU5JVElPTikge1xuICAgICAgdmFyIF9kZWZpbml0aW9uJG5hbWU7XG5cbiAgICAgIGlmIChvcGVyYXRpb25OYW1lID09IG51bGwpIHtcbiAgICAgICAgLy8gSWYgbm8gb3BlcmF0aW9uIG5hbWUgd2FzIHByb3ZpZGVkLCBvbmx5IHJldHVybiBhbiBPcGVyYXRpb24gaWYgdGhlcmVcbiAgICAgICAgLy8gaXMgb25lIGRlZmluZWQgaW4gdGhlIGRvY3VtZW50LiBVcG9uIGVuY291bnRlcmluZyB0aGUgc2Vjb25kLCByZXR1cm5cbiAgICAgICAgLy8gbnVsbC5cbiAgICAgICAgaWYgKG9wZXJhdGlvbikge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgb3BlcmF0aW9uID0gZGVmaW5pdGlvbjtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICgoX2RlZmluaXRpb24kbmFtZSA9IGRlZmluaXRpb24ubmFtZSkgPT09IG51bGwgfHxcbiAgICAgICAgX2RlZmluaXRpb24kbmFtZSA9PT0gdm9pZCAwXG4gICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICA6IF9kZWZpbml0aW9uJG5hbWUudmFsdWUpID09PSBvcGVyYXRpb25OYW1lXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9wZXJhdGlvbjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/getOperationAST.mjs\n");
|
1021 |
|
1022 | }),
|
1023 |
|
1024 | "../../../node_modules/graphql/utilities/getOperationRootType.mjs":
|
1025 |
|
1026 |
|
1027 |
|
1028 |
|
1029 | (function(module, __webpack_exports__, __webpack_require__) {
|
1030 |
|
1031 | "use strict";
|
1032 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOperationRootType\", function() { return getOperationRootType; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Extracts the root type of the operation from the schema.\n *\n * @deprecated Please use `GraphQLSchema.getRootType` instead. Will be removed in v17\n */\nfunction getOperationRootType(schema, operation) {\n if (operation.operation === 'query') {\n const queryType = schema.getQueryType();\n\n if (!queryType) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n 'Schema does not define the required query root type.',\n {\n nodes: operation,\n },\n );\n }\n\n return queryType;\n }\n\n if (operation.operation === 'mutation') {\n const mutationType = schema.getMutationType();\n\n if (!mutationType) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"]('Schema is not configured for mutations.', {\n nodes: operation,\n });\n }\n\n return mutationType;\n }\n\n if (operation.operation === 'subscription') {\n const subscriptionType = schema.getSubscriptionType();\n\n if (!subscriptionType) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"]('Schema is not configured for subscriptions.', {\n nodes: operation,\n });\n }\n\n return subscriptionType;\n }\n\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n 'Can only have query, mutation and subscription operations.',\n {\n nodes: operation,\n },\n );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2dldE9wZXJhdGlvblJvb3RUeXBlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9nZXRPcGVyYXRpb25Sb290VHlwZS5tanM/MWViYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcm9vdCB0eXBlIG9mIHRoZSBvcGVyYXRpb24gZnJvbSB0aGUgc2NoZW1hLlxuICpcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYEdyYXBoUUxTY2hlbWEuZ2V0Um9vdFR5cGVgIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9wZXJhdGlvblJvb3RUeXBlKHNjaGVtYSwgb3BlcmF0aW9uKSB7XG4gIGlmIChvcGVyYXRpb24ub3BlcmF0aW9uID09PSAncXVlcnknKSB7XG4gICAgY29uc3QgcXVlcnlUeXBlID0gc2NoZW1hLmdldFF1ZXJ5VHlwZSgpO1xuXG4gICAgaWYgKCFxdWVyeVR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICdTY2hlbWEgZG9lcyBub3QgZGVmaW5lIHRoZSByZXF1aXJlZCBxdWVyeSByb290IHR5cGUuJyxcbiAgICAgICAge1xuICAgICAgICAgIG5vZGVzOiBvcGVyYXRpb24sXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBxdWVyeVR5cGU7XG4gIH1cblxuICBpZiAob3BlcmF0aW9uLm9wZXJhdGlvbiA9PT0gJ211dGF0aW9uJykge1xuICAgIGNvbnN0IG11dGF0aW9uVHlwZSA9IHNjaGVtYS5nZXRNdXRhdGlvblR5cGUoKTtcblxuICAgIGlmICghbXV0YXRpb25UeXBlKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKCdTY2hlbWEgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIG11dGF0aW9ucy4nLCB7XG4gICAgICAgIG5vZGVzOiBvcGVyYXRpb24sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbXV0YXRpb25UeXBlO1xuICB9XG5cbiAgaWYgKG9wZXJhdGlvbi5vcGVyYXRpb24gPT09ICdzdWJzY3JpcHRpb24nKSB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uVHlwZSA9IHNjaGVtYS5nZXRTdWJzY3JpcHRpb25UeXBlKCk7XG5cbiAgICBpZiAoIXN1YnNjcmlwdGlvblR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoJ1NjaGVtYSBpcyBub3QgY29uZmlndXJlZCBmb3Igc3Vic2NyaXB0aW9ucy4nLCB7XG4gICAgICAgIG5vZGVzOiBvcGVyYXRpb24sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic2NyaXB0aW9uVHlwZTtcbiAgfVxuXG4gIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgJ0NhbiBvbmx5IGhhdmUgcXVlcnksIG11dGF0aW9uIGFuZCBzdWJzY3JpcHRpb24gb3BlcmF0aW9ucy4nLFxuICAgIHtcbiAgICAgIG5vZGVzOiBvcGVyYXRpb24sXG4gICAgfSxcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/getOperationRootType.mjs\n");
|
1033 |
|
1034 | }),
|
1035 |
|
1036 | "../../../node_modules/graphql/utilities/index.mjs":
|
1037 |
|
1038 |
|
1039 |
|
1040 |
|
1041 | (function(module, __webpack_exports__, __webpack_require__) {
|
1042 |
|
1043 | "use strict";
|
1044 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getIntrospectionQuery_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getIntrospectionQuery.mjs */ \"../../../node_modules/graphql/utilities/getIntrospectionQuery.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getIntrospectionQuery\", function() { return _getIntrospectionQuery_mjs__WEBPACK_IMPORTED_MODULE_0__[\"getIntrospectionQuery\"]; });\n\n/* harmony import */ var _getOperationAST_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getOperationAST.mjs */ \"../../../node_modules/graphql/utilities/getOperationAST.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOperationAST\", function() { return _getOperationAST_mjs__WEBPACK_IMPORTED_MODULE_1__[\"getOperationAST\"]; });\n\n/* harmony import */ var _getOperationRootType_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getOperationRootType.mjs */ \"../../../node_modules/graphql/utilities/getOperationRootType.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOperationRootType\", function() { return _getOperationRootType_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getOperationRootType\"]; });\n\n/* harmony import */ var _introspectionFromSchema_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./introspectionFromSchema.mjs */ \"../../../node_modules/graphql/utilities/introspectionFromSchema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"introspectionFromSchema\", function() { return _introspectionFromSchema_mjs__WEBPACK_IMPORTED_MODULE_3__[\"introspectionFromSchema\"]; });\n\n/* harmony import */ var _buildClientSchema_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./buildClientSchema.mjs */ \"../../../node_modules/graphql/utilities/buildClientSchema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildClientSchema\", function() { return _buildClientSchema_mjs__WEBPACK_IMPORTED_MODULE_4__[\"buildClientSchema\"]; });\n\n/* harmony import */ var _buildASTSchema_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./buildASTSchema.mjs */ \"../../../node_modules/graphql/utilities/buildASTSchema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildASTSchema\", function() { return _buildASTSchema_mjs__WEBPACK_IMPORTED_MODULE_5__[\"buildASTSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildSchema\", function() { return _buildASTSchema_mjs__WEBPACK_IMPORTED_MODULE_5__[\"buildSchema\"]; });\n\n/* harmony import */ var _extendSchema_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./extendSchema.mjs */ \"../../../node_modules/graphql/utilities/extendSchema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"extendSchema\", function() { return _extendSchema_mjs__WEBPACK_IMPORTED_MODULE_6__[\"extendSchema\"]; });\n\n/* harmony import */ var _lexicographicSortSchema_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./lexicographicSortSchema.mjs */ \"../../../node_modules/graphql/utilities/lexicographicSortSchema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lexicographicSortSchema\", function() { return _lexicographicSortSchema_mjs__WEBPACK_IMPORTED_MODULE_7__[\"lexicographicSortSchema\"]; });\n\n/* harmony import */ var _printSchema_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./printSchema.mjs */ \"../../../node_modules/graphql/utilities/printSchema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printSchema\", function() { return _printSchema_mjs__WEBPACK_IMPORTED_MODULE_8__[\"printSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printType\", function() { return _printSchema_mjs__WEBPACK_IMPORTED_MODULE_8__[\"printType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printIntrospectionSchema\", function() { return _printSchema_mjs__WEBPACK_IMPORTED_MODULE_8__[\"printIntrospectionSchema\"]; });\n\n/* harmony import */ var _typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"typeFromAST\", function() { return _typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_9__[\"typeFromAST\"]; });\n\n/* harmony import */ var _valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./valueFromAST.mjs */ \"../../../node_modules/graphql/utilities/valueFromAST.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"valueFromAST\", function() { return _valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_10__[\"valueFromAST\"]; });\n\n/* harmony import */ var _valueFromASTUntyped_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./valueFromASTUntyped.mjs */ \"../../../node_modules/graphql/utilities/valueFromASTUntyped.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"valueFromASTUntyped\", function() { return _valueFromASTUntyped_mjs__WEBPACK_IMPORTED_MODULE_11__[\"valueFromASTUntyped\"]; });\n\n/* harmony import */ var _astFromValue_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./astFromValue.mjs */ \"../../../node_modules/graphql/utilities/astFromValue.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"astFromValue\", function() { return _astFromValue_mjs__WEBPACK_IMPORTED_MODULE_12__[\"astFromValue\"]; });\n\n/* harmony import */ var _TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./TypeInfo.mjs */ \"../../../node_modules/graphql/utilities/TypeInfo.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeInfo\", function() { return _TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_13__[\"TypeInfo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visitWithTypeInfo\", function() { return _TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_13__[\"visitWithTypeInfo\"]; });\n\n/* harmony import */ var _coerceInputValue_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./coerceInputValue.mjs */ \"../../../node_modules/graphql/utilities/coerceInputValue.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"coerceInputValue\", function() { return _coerceInputValue_mjs__WEBPACK_IMPORTED_MODULE_14__[\"coerceInputValue\"]; });\n\n/* harmony import */ var _concatAST_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./concatAST.mjs */ \"../../../node_modules/graphql/utilities/concatAST.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"concatAST\", function() { return _concatAST_mjs__WEBPACK_IMPORTED_MODULE_15__[\"concatAST\"]; });\n\n/* harmony import */ var _separateOperations_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./separateOperations.mjs */ \"../../../node_modules/graphql/utilities/separateOperations.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"separateOperations\", function() { return _separateOperations_mjs__WEBPACK_IMPORTED_MODULE_16__[\"separateOperations\"]; });\n\n/* harmony import */ var _stripIgnoredCharacters_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./stripIgnoredCharacters.mjs */ \"../../../node_modules/graphql/utilities/stripIgnoredCharacters.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stripIgnoredCharacters\", function() { return _stripIgnoredCharacters_mjs__WEBPACK_IMPORTED_MODULE_17__[\"stripIgnoredCharacters\"]; });\n\n/* harmony import */ var _typeComparators_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./typeComparators.mjs */ \"../../../node_modules/graphql/utilities/typeComparators.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEqualType\", function() { return _typeComparators_mjs__WEBPACK_IMPORTED_MODULE_18__[\"isEqualType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeSubTypeOf\", function() { return _typeComparators_mjs__WEBPACK_IMPORTED_MODULE_18__[\"isTypeSubTypeOf\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"doTypesOverlap\", function() { return _typeComparators_mjs__WEBPACK_IMPORTED_MODULE_18__[\"doTypesOverlap\"]; });\n\n/* harmony import */ var _assertValidName_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./assertValidName.mjs */ \"../../../node_modules/graphql/utilities/assertValidName.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertValidName\", function() { return _assertValidName_mjs__WEBPACK_IMPORTED_MODULE_19__[\"assertValidName\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isValidNameError\", function() { return _assertValidName_mjs__WEBPACK_IMPORTED_MODULE_19__[\"isValidNameError\"]; });\n\n/* harmony import */ var _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./findBreakingChanges.mjs */ \"../../../node_modules/graphql/utilities/findBreakingChanges.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BreakingChangeType\", function() { return _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__[\"BreakingChangeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DangerousChangeType\", function() { return _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__[\"DangerousChangeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findBreakingChanges\", function() { return _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__[\"findBreakingChanges\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findDangerousChanges\", function() { return _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__[\"findDangerousChanges\"]; });\n\n// Produce the GraphQL query recommended for a full schema introspection.\n\n// Gets the target Operation from a Document.\n // Gets the Type for the target Operation AST.\n\n // Convert a GraphQLSchema to an IntrospectionQuery.\n\n // Build a GraphQLSchema from an introspection result.\n\n // Build a GraphQLSchema from GraphQL Schema language.\n\n\n// Extends an existing GraphQLSchema from a parsed GraphQL Schema language AST.\n // Sort a GraphQLSchema.\n\n // Print a GraphQLSchema to GraphQL Schema language.\n\n // Create a GraphQLType from a GraphQL language AST.\n\n // Create a JavaScript value from a GraphQL language AST with a type.\n\n // Create a JavaScript value from a GraphQL language AST without a type.\n\n // Create a GraphQL language AST from a JavaScript value.\n\n // A helper to use within recursive-descent visitors which need to be aware of the GraphQL type system.\n\n // Coerces a JavaScript value to a GraphQL type, or produces errors.\n\n // Concatenates multiple AST together.\n\n // Separates an AST into an AST per Operation.\n\n // Strips characters that are not significant to the validity or execution of a GraphQL document.\n\n // Comparators for types\n\n // Asserts that a string is a valid GraphQL name\n\n // Compares two GraphQLSchemas and detects breaking changes.\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2luZGV4Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9pbmRleC5tanM/MTE4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQcm9kdWNlIHRoZSBHcmFwaFFMIHF1ZXJ5IHJlY29tbWVuZGVkIGZvciBhIGZ1bGwgc2NoZW1hIGludHJvc3BlY3Rpb24uXG5leHBvcnQgeyBnZXRJbnRyb3NwZWN0aW9uUXVlcnkgfSBmcm9tICcuL2dldEludHJvc3BlY3Rpb25RdWVyeS5tanMnO1xuLy8gR2V0cyB0aGUgdGFyZ2V0IE9wZXJhdGlvbiBmcm9tIGEgRG9jdW1lbnQuXG5leHBvcnQgeyBnZXRPcGVyYXRpb25BU1QgfSBmcm9tICcuL2dldE9wZXJhdGlvbkFTVC5tanMnOyAvLyBHZXRzIHRoZSBUeXBlIGZvciB0aGUgdGFyZ2V0IE9wZXJhdGlvbiBBU1QuXG5cbmV4cG9ydCB7IGdldE9wZXJhdGlvblJvb3RUeXBlIH0gZnJvbSAnLi9nZXRPcGVyYXRpb25Sb290VHlwZS5tanMnOyAvLyBDb252ZXJ0IGEgR3JhcGhRTFNjaGVtYSB0byBhbiBJbnRyb3NwZWN0aW9uUXVlcnkuXG5cbmV4cG9ydCB7IGludHJvc3BlY3Rpb25Gcm9tU2NoZW1hIH0gZnJvbSAnLi9pbnRyb3NwZWN0aW9uRnJvbVNjaGVtYS5tanMnOyAvLyBCdWlsZCBhIEdyYXBoUUxTY2hlbWEgZnJvbSBhbiBpbnRyb3NwZWN0aW9uIHJlc3VsdC5cblxuZXhwb3J0IHsgYnVpbGRDbGllbnRTY2hlbWEgfSBmcm9tICcuL2J1aWxkQ2xpZW50U2NoZW1hLm1qcyc7IC8vIEJ1aWxkIGEgR3JhcGhRTFNjaGVtYSBmcm9tIEdyYXBoUUwgU2NoZW1hIGxhbmd1YWdlLlxuXG5leHBvcnQgeyBidWlsZEFTVFNjaGVtYSwgYnVpbGRTY2hlbWEgfSBmcm9tICcuL2J1aWxkQVNUU2NoZW1hLm1qcyc7XG4vLyBFeHRlbmRzIGFuIGV4aXN0aW5nIEdyYXBoUUxTY2hlbWEgZnJvbSBhIHBhcnNlZCBHcmFwaFFMIFNjaGVtYSBsYW5ndWFnZSBBU1QuXG5leHBvcnQgeyBleHRlbmRTY2hlbWEgfSBmcm9tICcuL2V4dGVuZFNjaGVtYS5tanMnOyAvLyBTb3J0IGEgR3JhcGhRTFNjaGVtYS5cblxuZXhwb3J0IHsgbGV4aWNvZ3JhcGhpY1NvcnRTY2hlbWEgfSBmcm9tICcuL2xleGljb2dyYXBoaWNTb3J0U2NoZW1hLm1qcyc7IC8vIFByaW50IGEgR3JhcGhRTFNjaGVtYSB0byBHcmFwaFFMIFNjaGVtYSBsYW5ndWFnZS5cblxuZXhwb3J0IHtcbiAgcHJpbnRTY2hlbWEsXG4gIHByaW50VHlwZSxcbiAgcHJpbnRJbnRyb3NwZWN0aW9uU2NoZW1hLFxufSBmcm9tICcuL3ByaW50U2NoZW1hLm1qcyc7IC8vIENyZWF0ZSBhIEdyYXBoUUxUeXBlIGZyb20gYSBHcmFwaFFMIGxhbmd1YWdlIEFTVC5cblxuZXhwb3J0IHsgdHlwZUZyb21BU1QgfSBmcm9tICcuL3R5cGVGcm9tQVNULm1qcyc7IC8vIENyZWF0ZSBhIEphdmFTY3JpcHQgdmFsdWUgZnJvbSBhIEdyYXBoUUwgbGFuZ3VhZ2UgQVNUIHdpdGggYSB0eXBlLlxuXG5leHBvcnQgeyB2YWx1ZUZyb21BU1QgfSBmcm9tICcuL3ZhbHVlRnJvbUFTVC5tanMnOyAvLyBDcmVhdGUgYSBKYXZhU2NyaXB0IHZhbHVlIGZyb20gYSBHcmFwaFFMIGxhbmd1YWdlIEFTVCB3aXRob3V0IGEgdHlwZS5cblxuZXhwb3J0IHsgdmFsdWVGcm9tQVNUVW50eXBlZCB9IGZyb20gJy4vdmFsdWVGcm9tQVNUVW50eXBlZC5tanMnOyAvLyBDcmVhdGUgYSBHcmFwaFFMIGxhbmd1YWdlIEFTVCBmcm9tIGEgSmF2YVNjcmlwdCB2YWx1ZS5cblxuZXhwb3J0IHsgYXN0RnJvbVZhbHVlIH0gZnJvbSAnLi9hc3RGcm9tVmFsdWUubWpzJzsgLy8gQSBoZWxwZXIgdG8gdXNlIHdpdGhpbiByZWN1cnNpdmUtZGVzY2VudCB2aXNpdG9ycyB3aGljaCBuZWVkIHRvIGJlIGF3YXJlIG9mIHRoZSBHcmFwaFFMIHR5cGUgc3lzdGVtLlxuXG5leHBvcnQgeyBUeXBlSW5mbywgdmlzaXRXaXRoVHlwZUluZm8gfSBmcm9tICcuL1R5cGVJbmZvLm1qcyc7IC8vIENvZXJjZXMgYSBKYXZhU2NyaXB0IHZhbHVlIHRvIGEgR3JhcGhRTCB0eXBlLCBvciBwcm9kdWNlcyBlcnJvcnMuXG5cbmV4cG9ydCB7IGNvZXJjZUlucHV0VmFsdWUgfSBmcm9tICcuL2NvZXJjZUlucHV0VmFsdWUubWpzJzsgLy8gQ29uY2F0ZW5hdGVzIG11bHRpcGxlIEFTVCB0b2dldGhlci5cblxuZXhwb3J0IHsgY29uY2F0QVNUIH0gZnJvbSAnLi9jb25jYXRBU1QubWpzJzsgLy8gU2VwYXJhdGVzIGFuIEFTVCBpbnRvIGFuIEFTVCBwZXIgT3BlcmF0aW9uLlxuXG5leHBvcnQgeyBzZXBhcmF0ZU9wZXJhdGlvbnMgfSBmcm9tICcuL3NlcGFyYXRlT3BlcmF0aW9ucy5tanMnOyAvLyBTdHJpcHMgY2hhcmFjdGVycyB0aGF0IGFyZSBub3Qgc2lnbmlmaWNhbnQgdG8gdGhlIHZhbGlkaXR5IG9yIGV4ZWN1dGlvbiBvZiBhIEdyYXBoUUwgZG9jdW1lbnQuXG5cbmV4cG9ydCB7IHN0cmlwSWdub3JlZENoYXJhY3RlcnMgfSBmcm9tICcuL3N0cmlwSWdub3JlZENoYXJhY3RlcnMubWpzJzsgLy8gQ29tcGFyYXRvcnMgZm9yIHR5cGVzXG5cbmV4cG9ydCB7XG4gIGlzRXF1YWxUeXBlLFxuICBpc1R5cGVTdWJUeXBlT2YsXG4gIGRvVHlwZXNPdmVybGFwLFxufSBmcm9tICcuL3R5cGVDb21wYXJhdG9ycy5tanMnOyAvLyBBc3NlcnRzIHRoYXQgYSBzdHJpbmcgaXMgYSB2YWxpZCBHcmFwaFFMIG5hbWVcblxuZXhwb3J0IHsgYXNzZXJ0VmFsaWROYW1lLCBpc1ZhbGlkTmFtZUVycm9yIH0gZnJvbSAnLi9hc3NlcnRWYWxpZE5hbWUubWpzJzsgLy8gQ29tcGFyZXMgdHdvIEdyYXBoUUxTY2hlbWFzIGFuZCBkZXRlY3RzIGJyZWFraW5nIGNoYW5nZXMuXG5cbmV4cG9ydCB7XG4gIEJyZWFraW5nQ2hhbmdlVHlwZSxcbiAgRGFuZ2Vyb3VzQ2hhbmdlVHlwZSxcbiAgZmluZEJyZWFraW5nQ2hhbmdlcyxcbiAgZmluZERhbmdlcm91c0NoYW5nZXMsXG59IGZyb20gJy4vZmluZEJyZWFraW5nQ2hhbmdlcy5tanMnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/index.mjs\n");
|
1045 |
|
1046 | }),
|
1047 |
|
1048 | "../../../node_modules/graphql/utilities/introspectionFromSchema.mjs":
|
1049 |
|
1050 |
|
1051 |
|
1052 |
|
1053 | (function(module, __webpack_exports__, __webpack_require__) {
|
1054 |
|
1055 | "use strict";
|
1056 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"introspectionFromSchema\", function() { return introspectionFromSchema; });\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _language_parser_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/parser.mjs */ \"../../../node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _execution_execute_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../execution/execute.mjs */ \"../../../node_modules/graphql/execution/execute.mjs\");\n/* harmony import */ var _getIntrospectionQuery_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getIntrospectionQuery.mjs */ \"../../../node_modules/graphql/utilities/getIntrospectionQuery.mjs\");\n\n\n\n\n/**\n * Build an IntrospectionQuery from a GraphQLSchema\n *\n * IntrospectionQuery is useful for utilities that care about type and field\n * relationships, but do not need to traverse through those relationships.\n *\n * This is the inverse of buildClientSchema. The primary use case is outside\n * of the server context, for instance when doing schema comparisons.\n */\n\nfunction introspectionFromSchema(schema, options) {\n const optionsWithDefaults = {\n specifiedByUrl: true,\n directiveIsRepeatable: true,\n schemaDescription: true,\n inputValueDeprecation: true,\n ...options,\n };\n const document = Object(_language_parser_mjs__WEBPACK_IMPORTED_MODULE_1__[\"parse\"])(Object(_getIntrospectionQuery_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getIntrospectionQuery\"])(optionsWithDefaults));\n const result = Object(_execution_execute_mjs__WEBPACK_IMPORTED_MODULE_2__[\"executeSync\"])({\n schema,\n document,\n });\n (!result.errors && result.data) || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__[\"invariant\"])(false);\n return result.data;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2ludHJvc3BlY3Rpb25Gcm9tU2NoZW1hLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9pbnRyb3NwZWN0aW9uRnJvbVNjaGVtYS5tanM/MzVhZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICcuLi9qc3V0aWxzL2ludmFyaWFudC5tanMnO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICcuLi9sYW5ndWFnZS9wYXJzZXIubWpzJztcbmltcG9ydCB7IGV4ZWN1dGVTeW5jIH0gZnJvbSAnLi4vZXhlY3V0aW9uL2V4ZWN1dGUubWpzJztcbmltcG9ydCB7IGdldEludHJvc3BlY3Rpb25RdWVyeSB9IGZyb20gJy4vZ2V0SW50cm9zcGVjdGlvblF1ZXJ5Lm1qcyc7XG4vKipcbiAqIEJ1aWxkIGFuIEludHJvc3BlY3Rpb25RdWVyeSBmcm9tIGEgR3JhcGhRTFNjaGVtYVxuICpcbiAqIEludHJvc3BlY3Rpb25RdWVyeSBpcyB1c2VmdWwgZm9yIHV0aWxpdGllcyB0aGF0IGNhcmUgYWJvdXQgdHlwZSBhbmQgZmllbGRcbiAqIHJlbGF0aW9uc2hpcHMsIGJ1dCBkbyBub3QgbmVlZCB0byB0cmF2ZXJzZSB0aHJvdWdoIHRob3NlIHJlbGF0aW9uc2hpcHMuXG4gKlxuICogVGhpcyBpcyB0aGUgaW52ZXJzZSBvZiBidWlsZENsaWVudFNjaGVtYS4gVGhlIHByaW1hcnkgdXNlIGNhc2UgaXMgb3V0c2lkZVxuICogb2YgdGhlIHNlcnZlciBjb250ZXh0LCBmb3IgaW5zdGFuY2Ugd2hlbiBkb2luZyBzY2hlbWEgY29tcGFyaXNvbnMuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGludHJvc3BlY3Rpb25Gcm9tU2NoZW1hKHNjaGVtYSwgb3B0aW9ucykge1xuICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgIHNwZWNpZmllZEJ5VXJsOiB0cnVlLFxuICAgIGRpcmVjdGl2ZUlzUmVwZWF0YWJsZTogdHJ1ZSxcbiAgICBzY2hlbWFEZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICBpbnB1dFZhbHVlRGVwcmVjYXRpb246IHRydWUsXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcbiAgY29uc3QgZG9jdW1lbnQgPSBwYXJzZShnZXRJbnRyb3NwZWN0aW9uUXVlcnkob3B0aW9uc1dpdGhEZWZhdWx0cykpO1xuICBjb25zdCByZXN1bHQgPSBleGVjdXRlU3luYyh7XG4gICAgc2NoZW1hLFxuICAgIGRvY3VtZW50LFxuICB9KTtcbiAgKCFyZXN1bHQuZXJyb3JzICYmIHJlc3VsdC5kYXRhKSB8fCBpbnZhcmlhbnQoZmFsc2UpO1xuICByZXR1cm4gcmVzdWx0LmRhdGE7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/introspectionFromSchema.mjs\n");
|
1057 |
|
1058 | }),
|
1059 |
|
1060 | "../../../node_modules/graphql/utilities/lexicographicSortSchema.mjs":
|
1061 |
|
1062 |
|
1063 |
|
1064 |
|
1065 | (function(module, __webpack_exports__, __webpack_require__) {
|
1066 |
|
1067 | "use strict";
|
1068 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lexicographicSortSchema\", function() { return lexicographicSortSchema; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/keyValMap.mjs */ \"../../../node_modules/graphql/jsutils/keyValMap.mjs\");\n/* harmony import */ var _jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/naturalCompare.mjs */ \"../../../node_modules/graphql/jsutils/naturalCompare.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_schema_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../type/schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n\n\n\n\n\n\n\n\n/**\n * Sort GraphQLSchema.\n *\n * This function returns a sorted copy of the given GraphQLSchema.\n */\n\nfunction lexicographicSortSchema(schema) {\n const schemaConfig = schema.toConfig();\n const typeMap = Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_2__[\"keyValMap\"])(\n sortByName(schemaConfig.types),\n (type) => type.name,\n sortNamedType,\n );\n return new _type_schema_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLSchema\"]({\n ...schemaConfig,\n types: Object.values(typeMap),\n directives: sortByName(schemaConfig.directives).map(sortDirective),\n query: replaceMaybeType(schemaConfig.query),\n mutation: replaceMaybeType(schemaConfig.mutation),\n subscription: replaceMaybeType(schemaConfig.subscription),\n });\n\n function replaceType(type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isListType\"])(type)) {\n // @ts-expect-error\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLList\"](replaceType(type.ofType));\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(type)) {\n // @ts-expect-error\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLNonNull\"](replaceType(type.ofType));\n } // @ts-expect-error FIXME: TS Conversion\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n return typeMap[type.name];\n }\n\n function replaceMaybeType(maybeType) {\n return maybeType && replaceNamedType(maybeType);\n }\n\n function sortDirective(directive) {\n const config = directive.toConfig();\n return new _type_directives_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLDirective\"]({\n ...config,\n locations: sortBy(config.locations, (x) => x),\n args: sortArgs(config.args),\n });\n }\n\n function sortArgs(args) {\n return sortObjMap(args, (arg) => ({ ...arg, type: replaceType(arg.type) }));\n }\n\n function sortFields(fieldsMap) {\n return sortObjMap(fieldsMap, (field) => ({\n ...field,\n type: replaceType(field.type),\n args: field.args && sortArgs(field.args),\n }));\n }\n\n function sortInputFields(fieldsMap) {\n return sortObjMap(fieldsMap, (field) => ({\n ...field,\n type: replaceType(field.type),\n }));\n }\n\n function sortTypes(array) {\n return sortByName(array).map(replaceNamedType);\n }\n\n function sortNamedType(type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isScalarType\"])(type) || Object(_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isIntrospectionType\"])(type)) {\n return type;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(type)) {\n const config = type.toConfig();\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLObjectType\"]({\n ...config,\n interfaces: () => sortTypes(config.interfaces),\n fields: () => sortFields(config.fields),\n });\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(type)) {\n const config = type.toConfig();\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLInterfaceType\"]({\n ...config,\n interfaces: () => sortTypes(config.interfaces),\n fields: () => sortFields(config.fields),\n });\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isUnionType\"])(type)) {\n const config = type.toConfig();\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLUnionType\"]({\n ...config,\n types: () => sortTypes(config.types),\n });\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isEnumType\"])(type)) {\n const config = type.toConfig();\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLEnumType\"]({\n ...config,\n values: sortObjMap(config.values, (value) => value),\n });\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputObjectType\"])(type)) {\n const config = type.toConfig();\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLInputObjectType\"]({\n ...config,\n fields: () => sortInputFields(config.fields),\n });\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"invariant\"])(false, 'Unexpected type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(type));\n }\n}\n\nfunction sortObjMap(map, sortValueFn) {\n const sortedMap = Object.create(null);\n\n for (const key of Object.keys(map).sort(_jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_3__[\"naturalCompare\"])) {\n sortedMap[key] = sortValueFn(map[key]);\n }\n\n return sortedMap;\n}\n\nfunction sortByName(array) {\n return sortBy(array, (obj) => obj.name);\n}\n\nfunction sortBy(array, mapToKey) {\n return array.slice().sort((obj1, obj2) => {\n const key1 = mapToKey(obj1);\n const key2 = mapToKey(obj2);\n return Object(_jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_3__[\"naturalCompare\"])(key1, key2);\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2xleGljb2dyYXBoaWNTb3J0U2NoZW1hLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9sZXhpY29ncmFwaGljU29ydFNjaGVtYS5tanM/ODc2YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICcuLi9qc3V0aWxzL2ludmFyaWFudC5tanMnO1xuaW1wb3J0IHsga2V5VmFsTWFwIH0gZnJvbSAnLi4vanN1dGlscy9rZXlWYWxNYXAubWpzJztcbmltcG9ydCB7IG5hdHVyYWxDb21wYXJlIH0gZnJvbSAnLi4vanN1dGlscy9uYXR1cmFsQ29tcGFyZS5tanMnO1xuaW1wb3J0IHtcbiAgR3JhcGhRTEVudW1UeXBlLFxuICBHcmFwaFFMSW5wdXRPYmplY3RUeXBlLFxuICBHcmFwaFFMSW50ZXJmYWNlVHlwZSxcbiAgR3JhcGhRTExpc3QsXG4gIEdyYXBoUUxOb25OdWxsLFxuICBHcmFwaFFMT2JqZWN0VHlwZSxcbiAgR3JhcGhRTFVuaW9uVHlwZSxcbiAgaXNFbnVtVHlwZSxcbiAgaXNJbnB1dE9iamVjdFR5cGUsXG4gIGlzSW50ZXJmYWNlVHlwZSxcbiAgaXNMaXN0VHlwZSxcbiAgaXNOb25OdWxsVHlwZSxcbiAgaXNPYmplY3RUeXBlLFxuICBpc1NjYWxhclR5cGUsXG4gIGlzVW5pb25UeXBlLFxufSBmcm9tICcuLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7IEdyYXBoUUxEaXJlY3RpdmUgfSBmcm9tICcuLi90eXBlL2RpcmVjdGl2ZXMubWpzJztcbmltcG9ydCB7IGlzSW50cm9zcGVjdGlvblR5cGUgfSBmcm9tICcuLi90eXBlL2ludHJvc3BlY3Rpb24ubWpzJztcbmltcG9ydCB7IEdyYXBoUUxTY2hlbWEgfSBmcm9tICcuLi90eXBlL3NjaGVtYS5tanMnO1xuLyoqXG4gKiBTb3J0IEdyYXBoUUxTY2hlbWEuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgc29ydGVkIGNvcHkgb2YgdGhlIGdpdmVuIEdyYXBoUUxTY2hlbWEuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGxleGljb2dyYXBoaWNTb3J0U2NoZW1hKHNjaGVtYSkge1xuICBjb25zdCBzY2hlbWFDb25maWcgPSBzY2hlbWEudG9Db25maWcoKTtcbiAgY29uc3QgdHlwZU1hcCA9IGtleVZhbE1hcChcbiAgICBzb3J0QnlOYW1lKHNjaGVtYUNvbmZpZy50eXBlcyksXG4gICAgKHR5cGUpID0+IHR5cGUubmFtZSxcbiAgICBzb3J0TmFtZWRUeXBlLFxuICApO1xuICByZXR1cm4gbmV3IEdyYXBoUUxTY2hlbWEoe1xuICAgIC4uLnNjaGVtYUNvbmZpZyxcbiAgICB0eXBlczogT2JqZWN0LnZhbHVlcyh0eXBlTWFwKSxcbiAgICBkaXJlY3RpdmVzOiBzb3J0QnlOYW1lKHNjaGVtYUNvbmZpZy5kaXJlY3RpdmVzKS5tYXAoc29ydERpcmVjdGl2ZSksXG4gICAgcXVlcnk6IHJlcGxhY2VNYXliZVR5cGUoc2NoZW1hQ29uZmlnLnF1ZXJ5KSxcbiAgICBtdXRhdGlvbjogcmVwbGFjZU1heWJlVHlwZShzY2hlbWFDb25maWcubXV0YXRpb24pLFxuICAgIHN1YnNjcmlwdGlvbjogcmVwbGFjZU1heWJlVHlwZShzY2hlbWFDb25maWcuc3Vic2NyaXB0aW9uKSxcbiAgfSk7XG5cbiAgZnVuY3Rpb24gcmVwbGFjZVR5cGUodHlwZSkge1xuICAgIGlmIChpc0xpc3RUeXBlKHR5cGUpKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4gbmV3IEdyYXBoUUxMaXN0KHJlcGxhY2VUeXBlKHR5cGUub2ZUeXBlKSk7XG4gICAgfSBlbHNlIGlmIChpc05vbk51bGxUeXBlKHR5cGUpKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4gbmV3IEdyYXBoUUxOb25OdWxsKHJlcGxhY2VUeXBlKHR5cGUub2ZUeXBlKSk7XG4gICAgfSAvLyBAdHMtZXhwZWN0LWVycm9yIEZJWE1FOiBUUyBDb252ZXJzaW9uXG5cbiAgICByZXR1cm4gcmVwbGFjZU5hbWVkVHlwZSh0eXBlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VOYW1lZFR5cGUodHlwZSkge1xuICAgIHJldHVybiB0eXBlTWFwW3R5cGUubmFtZV07XG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlTWF5YmVUeXBlKG1heWJlVHlwZSkge1xuICAgIHJldHVybiBtYXliZVR5cGUgJiYgcmVwbGFjZU5hbWVkVHlwZShtYXliZVR5cGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gc29ydERpcmVjdGl2ZShkaXJlY3RpdmUpIHtcbiAgICBjb25zdCBjb25maWcgPSBkaXJlY3RpdmUudG9Db25maWcoKTtcbiAgICByZXR1cm4gbmV3IEdyYXBoUUxEaXJlY3RpdmUoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgbG9jYXRpb25zOiBzb3J0QnkoY29uZmlnLmxvY2F0aW9ucywgKHgpID0+IHgpLFxuICAgICAgYXJnczogc29ydEFyZ3MoY29uZmlnLmFyZ3MpLFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gc29ydEFyZ3MoYXJncykge1xuICAgIHJldHVybiBzb3J0T2JqTWFwKGFyZ3MsIChhcmcpID0+ICh7IC4uLmFyZywgdHlwZTogcmVwbGFjZVR5cGUoYXJnLnR5cGUpIH0pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNvcnRGaWVsZHMoZmllbGRzTWFwKSB7XG4gICAgcmV0dXJuIHNvcnRPYmpNYXAoZmllbGRzTWFwLCAoZmllbGQpID0+ICh7XG4gICAgICAuLi5maWVsZCxcbiAgICAgIHR5cGU6IHJlcGxhY2VUeXBlKGZpZWxkLnR5cGUpLFxuICAgICAgYXJnczogZmllbGQuYXJncyAmJiBzb3J0QXJncyhmaWVsZC5hcmdzKSxcbiAgICB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiBzb3J0SW5wdXRGaWVsZHMoZmllbGRzTWFwKSB7XG4gICAgcmV0dXJuIHNvcnRPYmpNYXAoZmllbGRzTWFwLCAoZmllbGQpID0+ICh7XG4gICAgICAuLi5maWVsZCxcbiAgICAgIHR5cGU6IHJlcGxhY2VUeXBlKGZpZWxkLnR5cGUpLFxuICAgIH0pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNvcnRUeXBlcyhhcnJheSkge1xuICAgIHJldHVybiBzb3J0QnlOYW1lKGFycmF5KS5tYXAocmVwbGFjZU5hbWVkVHlwZSk7XG4gIH1cblxuICBmdW5jdGlvbiBzb3J0TmFtZWRUeXBlKHR5cGUpIHtcbiAgICBpZiAoaXNTY2FsYXJUeXBlKHR5cGUpIHx8IGlzSW50cm9zcGVjdGlvblR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cblxuICAgIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHR5cGUudG9Db25maWcoKTtcbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIGludGVyZmFjZXM6ICgpID0+IHNvcnRUeXBlcyhjb25maWcuaW50ZXJmYWNlcyksXG4gICAgICAgIGZpZWxkczogKCkgPT4gc29ydEZpZWxkcyhjb25maWcuZmllbGRzKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHR5cGUudG9Db25maWcoKTtcbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTEludGVyZmFjZVR5cGUoe1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIGludGVyZmFjZXM6ICgpID0+IHNvcnRUeXBlcyhjb25maWcuaW50ZXJmYWNlcyksXG4gICAgICAgIGZpZWxkczogKCkgPT4gc29ydEZpZWxkcyhjb25maWcuZmllbGRzKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc1VuaW9uVHlwZSh0eXBlKSkge1xuICAgICAgY29uc3QgY29uZmlnID0gdHlwZS50b0NvbmZpZygpO1xuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMVW5pb25UeXBlKHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICB0eXBlczogKCkgPT4gc29ydFR5cGVzKGNvbmZpZy50eXBlcyksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgICAgY29uc3QgY29uZmlnID0gdHlwZS50b0NvbmZpZygpO1xuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIHZhbHVlczogc29ydE9iak1hcChjb25maWcudmFsdWVzLCAodmFsdWUpID0+IHZhbHVlKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgICAgY29uc3QgY29uZmlnID0gdHlwZS50b0NvbmZpZygpO1xuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBmaWVsZHM6ICgpID0+IHNvcnRJbnB1dEZpZWxkcyhjb25maWcuZmllbGRzKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgLy8gTm90IHJlYWNoYWJsZSwgYWxsIHBvc3NpYmxlIHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkLlxuXG4gICAgZmFsc2UgfHwgaW52YXJpYW50KGZhbHNlLCAnVW5leHBlY3RlZCB0eXBlOiAnICsgaW5zcGVjdCh0eXBlKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc29ydE9iak1hcChtYXAsIHNvcnRWYWx1ZUZuKSB7XG4gIGNvbnN0IHNvcnRlZE1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWFwKS5zb3J0KG5hdHVyYWxDb21wYXJlKSkge1xuICAgIHNvcnRlZE1hcFtrZXldID0gc29ydFZhbHVlRm4obWFwW2tleV0pO1xuICB9XG5cbiAgcmV0dXJuIHNvcnRlZE1hcDtcbn1cblxuZnVuY3Rpb24gc29ydEJ5TmFtZShhcnJheSkge1xuICByZXR1cm4gc29ydEJ5KGFycmF5LCAob2JqKSA9PiBvYmoubmFtZSk7XG59XG5cbmZ1bmN0aW9uIHNvcnRCeShhcnJheSwgbWFwVG9LZXkpIHtcbiAgcmV0dXJuIGFycmF5LnNsaWNlKCkuc29ydCgob2JqMSwgb2JqMikgPT4ge1xuICAgIGNvbnN0IGtleTEgPSBtYXBUb0tleShvYmoxKTtcbiAgICBjb25zdCBrZXkyID0gbWFwVG9LZXkob2JqMik7XG4gICAgcmV0dXJuIG5hdHVyYWxDb21wYXJlKGtleTEsIGtleTIpO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/lexicographicSortSchema.mjs\n");
|
1069 |
|
1070 | }),
|
1071 |
|
1072 | "../../../node_modules/graphql/utilities/printSchema.mjs":
|
1073 |
|
1074 |
|
1075 |
|
1076 |
|
1077 | (function(module, __webpack_exports__, __webpack_require__) {
|
1078 |
|
1079 | "use strict";
|
1080 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printSchema\", function() { return printSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printIntrospectionSchema\", function() { return printIntrospectionSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printType\", function() { return printType; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _language_blockString_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/blockString.mjs */ \"../../../node_modules/graphql/language/blockString.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _astFromValue_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./astFromValue.mjs */ \"../../../node_modules/graphql/utilities/astFromValue.mjs\");\n\n\n\n\n\n\n\n\n\n\nfunction printSchema(schema) {\n return printFilteredSchema(\n schema,\n (n) => !Object(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isSpecifiedDirective\"])(n),\n isDefinedType,\n );\n}\nfunction printIntrospectionSchema(schema) {\n return printFilteredSchema(schema, _type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isSpecifiedDirective\"], _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isIntrospectionType\"]);\n}\n\nfunction isDefinedType(type) {\n return !Object(_type_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__[\"isSpecifiedScalarType\"])(type) && !Object(_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isIntrospectionType\"])(type);\n}\n\nfunction printFilteredSchema(schema, directiveFilter, typeFilter) {\n const directives = schema.getDirectives().filter(directiveFilter);\n const types = Object.values(schema.getTypeMap()).filter(typeFilter);\n return [\n printSchemaDefinition(schema),\n ...directives.map((directive) => printDirective(directive)),\n ...types.map((type) => printType(type)),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n}\n\nfunction printSchemaDefinition(schema) {\n if (schema.description == null && isSchemaOfCommonNames(schema)) {\n return;\n }\n\n const operationTypes = [];\n const queryType = schema.getQueryType();\n\n if (queryType) {\n operationTypes.push(` query: ${queryType.name}`);\n }\n\n const mutationType = schema.getMutationType();\n\n if (mutationType) {\n operationTypes.push(` mutation: ${mutationType.name}`);\n }\n\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType) {\n operationTypes.push(` subscription: ${subscriptionType.name}`);\n }\n\n return printDescription(schema) + `schema {\\n${operationTypes.join('\\n')}\\n}`;\n}\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * ```graphql\n * schema {\n * query: Query\n * mutation: Mutation\n * subscription: Subscription\n * }\n * ```\n *\n * When using this naming convention, the schema description can be omitted.\n */\n\nfunction isSchemaOfCommonNames(schema) {\n const queryType = schema.getQueryType();\n\n if (queryType && queryType.name !== 'Query') {\n return false;\n }\n\n const mutationType = schema.getMutationType();\n\n if (mutationType && mutationType.name !== 'Mutation') {\n return false;\n }\n\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && subscriptionType.name !== 'Subscription') {\n return false;\n }\n\n return true;\n}\n\nfunction printType(type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isScalarType\"])(type)) {\n return printScalar(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isObjectType\"])(type)) {\n return printObject(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isInterfaceType\"])(type)) {\n return printInterface(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isUnionType\"])(type)) {\n return printUnion(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isEnumType\"])(type)) {\n return printEnum(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isInputObjectType\"])(type)) {\n return printInputObject(type);\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"invariant\"])(false, 'Unexpected type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(type));\n}\n\nfunction printScalar(type) {\n return (\n printDescription(type) + `scalar ${type.name}` + printSpecifiedByURL(type)\n );\n}\n\nfunction printImplementedInterfaces(type) {\n const interfaces = type.getInterfaces();\n return interfaces.length\n ? ' implements ' + interfaces.map((i) => i.name).join(' & ')\n : '';\n}\n\nfunction printObject(type) {\n return (\n printDescription(type) +\n `type ${type.name}` +\n printImplementedInterfaces(type) +\n printFields(type)\n );\n}\n\nfunction printInterface(type) {\n return (\n printDescription(type) +\n `interface ${type.name}` +\n printImplementedInterfaces(type) +\n printFields(type)\n );\n}\n\nfunction printUnion(type) {\n const types = type.getTypes();\n const possibleTypes = types.length ? ' = ' + types.join(' | ') : '';\n return printDescription(type) + 'union ' + type.name + possibleTypes;\n}\n\nfunction printEnum(type) {\n const values = type\n .getValues()\n .map(\n (value, i) =>\n printDescription(value, ' ', !i) +\n ' ' +\n value.name +\n printDeprecated(value.deprecationReason),\n );\n return printDescription(type) + `enum ${type.name}` + printBlock(values);\n}\n\nfunction printInputObject(type) {\n const fields = Object.values(type.getFields()).map(\n (f, i) => printDescription(f, ' ', !i) + ' ' + printInputValue(f),\n );\n return printDescription(type) + `input ${type.name}` + printBlock(fields);\n}\n\nfunction printFields(type) {\n const fields = Object.values(type.getFields()).map(\n (f, i) =>\n printDescription(f, ' ', !i) +\n ' ' +\n f.name +\n printArgs(f.args, ' ') +\n ': ' +\n String(f.type) +\n printDeprecated(f.deprecationReason),\n );\n return printBlock(fields);\n}\n\nfunction printBlock(items) {\n return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n}\n\nfunction printArgs(args, indentation = '') {\n if (args.length === 0) {\n return '';\n } // If every arg does not have a description, print them on one line.\n\n if (args.every((arg) => !arg.description)) {\n return '(' + args.map(printInputValue).join(', ') + ')';\n }\n\n return (\n '(\\n' +\n args\n .map(\n (arg, i) =>\n printDescription(arg, ' ' + indentation, !i) +\n ' ' +\n indentation +\n printInputValue(arg),\n )\n .join('\\n') +\n '\\n' +\n indentation +\n ')'\n );\n}\n\nfunction printInputValue(arg) {\n const defaultAST = Object(_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_9__[\"astFromValue\"])(arg.defaultValue, arg.type);\n let argDecl = arg.name + ': ' + String(arg.type);\n\n if (defaultAST) {\n argDecl += ` = ${Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"print\"])(defaultAST)}`;\n }\n\n return argDecl + printDeprecated(arg.deprecationReason);\n}\n\nfunction printDirective(directive) {\n return (\n printDescription(directive) +\n 'directive @' +\n directive.name +\n printArgs(directive.args) +\n (directive.isRepeatable ? ' repeatable' : '') +\n ' on ' +\n directive.locations.join(' | ')\n );\n}\n\nfunction printDeprecated(reason) {\n if (reason == null) {\n return '';\n }\n\n if (reason !== _type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__[\"DEFAULT_DEPRECATION_REASON\"]) {\n const astValue = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"print\"])({\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].STRING,\n value: reason,\n });\n return ` @deprecated(reason: ${astValue})`;\n }\n\n return ' @deprecated';\n}\n\nfunction printSpecifiedByURL(scalar) {\n if (scalar.specifiedByURL == null) {\n return '';\n }\n\n const astValue = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"print\"])({\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].STRING,\n value: scalar.specifiedByURL,\n });\n return ` @specifiedBy(url: ${astValue})`;\n}\n\nfunction printDescription(def, indentation = '', firstInBlock = true) {\n const { description } = def;\n\n if (description == null) {\n return '';\n }\n\n const blockString = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"print\"])({\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].STRING,\n value: description,\n block: Object(_language_blockString_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isPrintableAsBlockString\"])(description),\n });\n const prefix =\n indentation && !firstInBlock ? '\\n' + indentation : indentation;\n return prefix + blockString.replace(/\\n/g, '\\n' + indentation) + '\\n';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3ByaW50U2NoZW1hLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9wcmludFNjaGVtYS5tanM/YjEwYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICcuLi9qc3V0aWxzL2ludmFyaWFudC5tanMnO1xuaW1wb3J0IHsgaXNQcmludGFibGVBc0Jsb2NrU3RyaW5nIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvYmxvY2tTdHJpbmcubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tICcuLi9sYW5ndWFnZS9wcmludGVyLm1qcyc7XG5pbXBvcnQge1xuICBpc0VudW1UeXBlLFxuICBpc0lucHV0T2JqZWN0VHlwZSxcbiAgaXNJbnRlcmZhY2VUeXBlLFxuICBpc09iamVjdFR5cGUsXG4gIGlzU2NhbGFyVHlwZSxcbiAgaXNVbmlvblR5cGUsXG59IGZyb20gJy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9ERVBSRUNBVElPTl9SRUFTT04sXG4gIGlzU3BlY2lmaWVkRGlyZWN0aXZlLFxufSBmcm9tICcuLi90eXBlL2RpcmVjdGl2ZXMubWpzJztcbmltcG9ydCB7IGlzSW50cm9zcGVjdGlvblR5cGUgfSBmcm9tICcuLi90eXBlL2ludHJvc3BlY3Rpb24ubWpzJztcbmltcG9ydCB7IGlzU3BlY2lmaWVkU2NhbGFyVHlwZSB9IGZyb20gJy4uL3R5cGUvc2NhbGFycy5tanMnO1xuaW1wb3J0IHsgYXN0RnJvbVZhbHVlIH0gZnJvbSAnLi9hc3RGcm9tVmFsdWUubWpzJztcbmV4cG9ydCBmdW5jdGlvbiBwcmludFNjaGVtYShzY2hlbWEpIHtcbiAgcmV0dXJuIHByaW50RmlsdGVyZWRTY2hlbWEoXG4gICAgc2NoZW1hLFxuICAgIChuKSA9PiAhaXNTcGVjaWZpZWREaXJlY3RpdmUobiksXG4gICAgaXNEZWZpbmVkVHlwZSxcbiAgKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwcmludEludHJvc3BlY3Rpb25TY2hlbWEoc2NoZW1hKSB7XG4gIHJldHVybiBwcmludEZpbHRlcmVkU2NoZW1hKHNjaGVtYSwgaXNTcGVjaWZpZWREaXJlY3RpdmUsIGlzSW50cm9zcGVjdGlvblR5cGUpO1xufVxuXG5mdW5jdGlvbiBpc0RlZmluZWRUeXBlKHR5cGUpIHtcbiAgcmV0dXJuICFpc1NwZWNpZmllZFNjYWxhclR5cGUodHlwZSkgJiYgIWlzSW50cm9zcGVjdGlvblR5cGUodHlwZSk7XG59XG5cbmZ1bmN0aW9uIHByaW50RmlsdGVyZWRTY2hlbWEoc2NoZW1hLCBkaXJlY3RpdmVGaWx0ZXIsIHR5cGVGaWx0ZXIpIHtcbiAgY29uc3QgZGlyZWN0aXZlcyA9IHNjaGVtYS5nZXREaXJlY3RpdmVzKCkuZmlsdGVyKGRpcmVjdGl2ZUZpbHRlcik7XG4gIGNvbnN0IHR5cGVzID0gT2JqZWN0LnZhbHVlcyhzY2hlbWEuZ2V0VHlwZU1hcCgpKS5maWx0ZXIodHlwZUZpbHRlcik7XG4gIHJldHVybiBbXG4gICAgcHJpbnRTY2hlbWFEZWZpbml0aW9uKHNjaGVtYSksXG4gICAgLi4uZGlyZWN0aXZlcy5tYXAoKGRpcmVjdGl2ZSkgPT4gcHJpbnREaXJlY3RpdmUoZGlyZWN0aXZlKSksXG4gICAgLi4udHlwZXMubWFwKCh0eXBlKSA9PiBwcmludFR5cGUodHlwZSkpLFxuICBdXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5qb2luKCdcXG5cXG4nKTtcbn1cblxuZnVuY3Rpb24gcHJpbnRTY2hlbWFEZWZpbml0aW9uKHNjaGVtYSkge1xuICBpZiAoc2NoZW1hLmRlc2NyaXB0aW9uID09IG51bGwgJiYgaXNTY2hlbWFPZkNvbW1vbk5hbWVzKHNjaGVtYSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvcGVyYXRpb25UeXBlcyA9IFtdO1xuICBjb25zdCBxdWVyeVR5cGUgPSBzY2hlbWEuZ2V0UXVlcnlUeXBlKCk7XG5cbiAgaWYgKHF1ZXJ5VHlwZSkge1xuICAgIG9wZXJhdGlvblR5cGVzLnB1c2goYCAgcXVlcnk6ICR7cXVlcnlUeXBlLm5hbWV9YCk7XG4gIH1cblxuICBjb25zdCBtdXRhdGlvblR5cGUgPSBzY2hlbWEuZ2V0TXV0YXRpb25UeXBlKCk7XG5cbiAgaWYgKG11dGF0aW9uVHlwZSkge1xuICAgIG9wZXJhdGlvblR5cGVzLnB1c2goYCAgbXV0YXRpb246ICR7bXV0YXRpb25UeXBlLm5hbWV9YCk7XG4gIH1cblxuICBjb25zdCBzdWJzY3JpcHRpb25UeXBlID0gc2NoZW1hLmdldFN1YnNjcmlwdGlvblR5cGUoKTtcblxuICBpZiAoc3Vic2NyaXB0aW9uVHlwZSkge1xuICAgIG9wZXJhdGlvblR5cGVzLnB1c2goYCAgc3Vic2NyaXB0aW9uOiAke3N1YnNjcmlwdGlvblR5cGUubmFtZX1gKTtcbiAgfVxuXG4gIHJldHVybiBwcmludERlc2NyaXB0aW9uKHNjaGVtYSkgKyBgc2NoZW1hIHtcXG4ke29wZXJhdGlvblR5cGVzLmpvaW4oJ1xcbicpfVxcbn1gO1xufVxuLyoqXG4gKiBHcmFwaFFMIHNjaGVtYSBkZWZpbmUgcm9vdCB0eXBlcyBmb3IgZWFjaCB0eXBlIG9mIG9wZXJhdGlvbi4gVGhlc2UgdHlwZXMgYXJlXG4gKiB0aGUgc2FtZSBhcyBhbnkgb3RoZXIgdHlwZSBhbmQgY2FuIGJlIG5hbWVkIGluIGFueSBtYW5uZXIsIGhvd2V2ZXIgdGhlcmUgaXNcbiAqIGEgY29tbW9uIG5hbWluZyBjb252ZW50aW9uOlxuICpcbiAqIGBgYGdyYXBocWxcbiAqICAgc2NoZW1hIHtcbiAqICAgICBxdWVyeTogUXVlcnlcbiAqICAgICBtdXRhdGlvbjogTXV0YXRpb25cbiAqICAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvblxuICogICB9XG4gKiBgYGBcbiAqXG4gKiBXaGVuIHVzaW5nIHRoaXMgbmFtaW5nIGNvbnZlbnRpb24sIHRoZSBzY2hlbWEgZGVzY3JpcHRpb24gY2FuIGJlIG9taXR0ZWQuXG4gKi9cblxuZnVuY3Rpb24gaXNTY2hlbWFPZkNvbW1vbk5hbWVzKHNjaGVtYSkge1xuICBjb25zdCBxdWVyeVR5cGUgPSBzY2hlbWEuZ2V0UXVlcnlUeXBlKCk7XG5cbiAgaWYgKHF1ZXJ5VHlwZSAmJiBxdWVyeVR5cGUubmFtZSAhPT0gJ1F1ZXJ5Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IG11dGF0aW9uVHlwZSA9IHNjaGVtYS5nZXRNdXRhdGlvblR5cGUoKTtcblxuICBpZiAobXV0YXRpb25UeXBlICYmIG11dGF0aW9uVHlwZS5uYW1lICE9PSAnTXV0YXRpb24nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc3Vic2NyaXB0aW9uVHlwZSA9IHNjaGVtYS5nZXRTdWJzY3JpcHRpb25UeXBlKCk7XG5cbiAgaWYgKHN1YnNjcmlwdGlvblR5cGUgJiYgc3Vic2NyaXB0aW9uVHlwZS5uYW1lICE9PSAnU3Vic2NyaXB0aW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRUeXBlKHR5cGUpIHtcbiAgaWYgKGlzU2NhbGFyVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBwcmludFNjYWxhcih0eXBlKTtcbiAgfVxuXG4gIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gcHJpbnRPYmplY3QodHlwZSk7XG4gIH1cblxuICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIHByaW50SW50ZXJmYWNlKHR5cGUpO1xuICB9XG5cbiAgaWYgKGlzVW5pb25UeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIHByaW50VW5pb24odHlwZSk7XG4gIH1cblxuICBpZiAoaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBwcmludEVudW0odHlwZSk7XG4gIH1cblxuICBpZiAoaXNJbnB1dE9iamVjdFR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gcHJpbnRJbnB1dE9iamVjdCh0eXBlKTtcbiAgfVxuICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gIC8vIE5vdCByZWFjaGFibGUsIGFsbCBwb3NzaWJsZSB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZC5cblxuICBmYWxzZSB8fCBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIHR5cGU6ICcgKyBpbnNwZWN0KHR5cGUpKTtcbn1cblxuZnVuY3Rpb24gcHJpbnRTY2FsYXIodHlwZSkge1xuICByZXR1cm4gKFxuICAgIHByaW50RGVzY3JpcHRpb24odHlwZSkgKyBgc2NhbGFyICR7dHlwZS5uYW1lfWAgKyBwcmludFNwZWNpZmllZEJ5VVJMKHR5cGUpXG4gICk7XG59XG5cbmZ1bmN0aW9uIHByaW50SW1wbGVtZW50ZWRJbnRlcmZhY2VzKHR5cGUpIHtcbiAgY29uc3QgaW50ZXJmYWNlcyA9IHR5cGUuZ2V0SW50ZXJmYWNlcygpO1xuICByZXR1cm4gaW50ZXJmYWNlcy5sZW5ndGhcbiAgICA/ICcgaW1wbGVtZW50cyAnICsgaW50ZXJmYWNlcy5tYXAoKGkpID0+IGkubmFtZSkuam9pbignICYgJylcbiAgICA6ICcnO1xufVxuXG5mdW5jdGlvbiBwcmludE9iamVjdCh0eXBlKSB7XG4gIHJldHVybiAoXG4gICAgcHJpbnREZXNjcmlwdGlvbih0eXBlKSArXG4gICAgYHR5cGUgJHt0eXBlLm5hbWV9YCArXG4gICAgcHJpbnRJbXBsZW1lbnRlZEludGVyZmFjZXModHlwZSkgK1xuICAgIHByaW50RmllbGRzKHR5cGUpXG4gICk7XG59XG5cbmZ1bmN0aW9uIHByaW50SW50ZXJmYWNlKHR5cGUpIHtcbiAgcmV0dXJuIChcbiAgICBwcmludERlc2NyaXB0aW9uKHR5cGUpICtcbiAgICBgaW50ZXJmYWNlICR7dHlwZS5uYW1lfWAgK1xuICAgIHByaW50SW1wbGVtZW50ZWRJbnRlcmZhY2VzKHR5cGUpICtcbiAgICBwcmludEZpZWxkcyh0eXBlKVxuICApO1xufVxuXG5mdW5jdGlvbiBwcmludFVuaW9uKHR5cGUpIHtcbiAgY29uc3QgdHlwZXMgPSB0eXBlLmdldFR5cGVzKCk7XG4gIGNvbnN0IHBvc3NpYmxlVHlwZXMgPSB0eXBlcy5sZW5ndGggPyAnID0gJyArIHR5cGVzLmpvaW4oJyB8ICcpIDogJyc7XG4gIHJldHVybiBwcmludERlc2NyaXB0aW9uKHR5cGUpICsgJ3VuaW9uICcgKyB0eXBlLm5hbWUgKyBwb3NzaWJsZVR5cGVzO1xufVxuXG5mdW5jdGlvbiBwcmludEVudW0odHlwZSkge1xuICBjb25zdCB2YWx1ZXMgPSB0eXBlXG4gICAgLmdldFZhbHVlcygpXG4gICAgLm1hcChcbiAgICAgICh2YWx1ZSwgaSkgPT5cbiAgICAgICAgcHJpbnREZXNjcmlwdGlvbih2YWx1ZSwgJyAgJywgIWkpICtcbiAgICAgICAgJyAgJyArXG4gICAgICAgIHZhbHVlLm5hbWUgK1xuICAgICAgICBwcmludERlcHJlY2F0ZWQodmFsdWUuZGVwcmVjYXRpb25SZWFzb24pLFxuICAgICk7XG4gIHJldHVybiBwcmludERlc2NyaXB0aW9uKHR5cGUpICsgYGVudW0gJHt0eXBlLm5hbWV9YCArIHByaW50QmxvY2sodmFsdWVzKTtcbn1cblxuZnVuY3Rpb24gcHJpbnRJbnB1dE9iamVjdCh0eXBlKSB7XG4gIGNvbnN0IGZpZWxkcyA9IE9iamVjdC52YWx1ZXModHlwZS5nZXRGaWVsZHMoKSkubWFwKFxuICAgIChmLCBpKSA9PiBwcmludERlc2NyaXB0aW9uKGYsICcgICcsICFpKSArICcgICcgKyBwcmludElucHV0VmFsdWUoZiksXG4gICk7XG4gIHJldHVybiBwcmludERlc2NyaXB0aW9uKHR5cGUpICsgYGlucHV0ICR7dHlwZS5uYW1lfWAgKyBwcmludEJsb2NrKGZpZWxkcyk7XG59XG5cbmZ1bmN0aW9uIHByaW50RmllbGRzKHR5cGUpIHtcbiAgY29uc3QgZmllbGRzID0gT2JqZWN0LnZhbHVlcyh0eXBlLmdldEZpZWxkcygpKS5tYXAoXG4gICAgKGYsIGkpID0+XG4gICAgICBwcmludERlc2NyaXB0aW9uKGYsICcgICcsICFpKSArXG4gICAgICAnICAnICtcbiAgICAgIGYubmFtZSArXG4gICAgICBwcmludEFyZ3MoZi5hcmdzLCAnICAnKSArXG4gICAgICAnOiAnICtcbiAgICAgIFN0cmluZyhmLnR5cGUpICtcbiAgICAgIHByaW50RGVwcmVjYXRlZChmLmRlcHJlY2F0aW9uUmVhc29uKSxcbiAgKTtcbiAgcmV0dXJuIHByaW50QmxvY2soZmllbGRzKTtcbn1cblxuZnVuY3Rpb24gcHJpbnRCbG9jayhpdGVtcykge1xuICByZXR1cm4gaXRlbXMubGVuZ3RoICE9PSAwID8gJyB7XFxuJyArIGl0ZW1zLmpvaW4oJ1xcbicpICsgJ1xcbn0nIDogJyc7XG59XG5cbmZ1bmN0aW9uIHByaW50QXJncyhhcmdzLCBpbmRlbnRhdGlvbiA9ICcnKSB7XG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnJztcbiAgfSAvLyBJZiBldmVyeSBhcmcgZG9lcyBub3QgaGF2ZSBhIGRlc2NyaXB0aW9uLCBwcmludCB0aGVtIG9uIG9uZSBsaW5lLlxuXG4gIGlmIChhcmdzLmV2ZXJ5KChhcmcpID0+ICFhcmcuZGVzY3JpcHRpb24pKSB7XG4gICAgcmV0dXJuICcoJyArIGFyZ3MubWFwKHByaW50SW5wdXRWYWx1ZSkuam9pbignLCAnKSArICcpJztcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgJyhcXG4nICtcbiAgICBhcmdzXG4gICAgICAubWFwKFxuICAgICAgICAoYXJnLCBpKSA9PlxuICAgICAgICAgIHByaW50RGVzY3JpcHRpb24oYXJnLCAnICAnICsgaW5kZW50YXRpb24sICFpKSArXG4gICAgICAgICAgJyAgJyArXG4gICAgICAgICAgaW5kZW50YXRpb24gK1xuICAgICAgICAgIHByaW50SW5wdXRWYWx1ZShhcmcpLFxuICAgICAgKVxuICAgICAgLmpvaW4oJ1xcbicpICtcbiAgICAnXFxuJyArXG4gICAgaW5kZW50YXRpb24gK1xuICAgICcpJ1xuICApO1xufVxuXG5mdW5jdGlvbiBwcmludElucHV0VmFsdWUoYXJnKSB7XG4gIGNvbnN0IGRlZmF1bHRBU1QgPSBhc3RGcm9tVmFsdWUoYXJnLmRlZmF1bHRWYWx1ZSwgYXJnLnR5cGUpO1xuICBsZXQgYXJnRGVjbCA9IGFyZy5uYW1lICsgJzogJyArIFN0cmluZyhhcmcudHlwZSk7XG5cbiAgaWYgKGRlZmF1bHRBU1QpIHtcbiAgICBhcmdEZWNsICs9IGAgPSAke3ByaW50KGRlZmF1bHRBU1QpfWA7XG4gIH1cblxuICByZXR1cm4gYXJnRGVjbCArIHByaW50RGVwcmVjYXRlZChhcmcuZGVwcmVjYXRpb25SZWFzb24pO1xufVxuXG5mdW5jdGlvbiBwcmludERpcmVjdGl2ZShkaXJlY3RpdmUpIHtcbiAgcmV0dXJuIChcbiAgICBwcmludERlc2NyaXB0aW9uKGRpcmVjdGl2ZSkgK1xuICAgICdkaXJlY3RpdmUgQCcgK1xuICAgIGRpcmVjdGl2ZS5uYW1lICtcbiAgICBwcmludEFyZ3MoZGlyZWN0aXZlLmFyZ3MpICtcbiAgICAoZGlyZWN0aXZlLmlzUmVwZWF0YWJsZSA/ICcgcmVwZWF0YWJsZScgOiAnJykgK1xuICAgICcgb24gJyArXG4gICAgZGlyZWN0aXZlLmxvY2F0aW9ucy5qb2luKCcgfCAnKVxuICApO1xufVxuXG5mdW5jdGlvbiBwcmludERlcHJlY2F0ZWQocmVhc29uKSB7XG4gIGlmIChyZWFzb24gPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGlmIChyZWFzb24gIT09IERFRkFVTFRfREVQUkVDQVRJT05fUkVBU09OKSB7XG4gICAgY29uc3QgYXN0VmFsdWUgPSBwcmludCh7XG4gICAgICBraW5kOiBLaW5kLlNUUklORyxcbiAgICAgIHZhbHVlOiByZWFzb24sXG4gICAgfSk7XG4gICAgcmV0dXJuIGAgQGRlcHJlY2F0ZWQocmVhc29uOiAke2FzdFZhbHVlfSlgO1xuICB9XG5cbiAgcmV0dXJuICcgQGRlcHJlY2F0ZWQnO1xufVxuXG5mdW5jdGlvbiBwcmludFNwZWNpZmllZEJ5VVJMKHNjYWxhcikge1xuICBpZiAoc2NhbGFyLnNwZWNpZmllZEJ5VVJMID09IG51bGwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCBhc3RWYWx1ZSA9IHByaW50KHtcbiAgICBraW5kOiBLaW5kLlNUUklORyxcbiAgICB2YWx1ZTogc2NhbGFyLnNwZWNpZmllZEJ5VVJMLFxuICB9KTtcbiAgcmV0dXJuIGAgQHNwZWNpZmllZEJ5KHVybDogJHthc3RWYWx1ZX0pYDtcbn1cblxuZnVuY3Rpb24gcHJpbnREZXNjcmlwdGlvbihkZWYsIGluZGVudGF0aW9uID0gJycsIGZpcnN0SW5CbG9jayA9IHRydWUpIHtcbiAgY29uc3QgeyBkZXNjcmlwdGlvbiB9ID0gZGVmO1xuXG4gIGlmIChkZXNjcmlwdGlvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3QgYmxvY2tTdHJpbmcgPSBwcmludCh7XG4gICAga2luZDogS2luZC5TVFJJTkcsXG4gICAgdmFsdWU6IGRlc2NyaXB0aW9uLFxuICAgIGJsb2NrOiBpc1ByaW50YWJsZUFzQmxvY2tTdHJpbmcoZGVzY3JpcHRpb24pLFxuICB9KTtcbiAgY29uc3QgcHJlZml4ID1cbiAgICBpbmRlbnRhdGlvbiAmJiAhZmlyc3RJbkJsb2NrID8gJ1xcbicgKyBpbmRlbnRhdGlvbiA6IGluZGVudGF0aW9uO1xuICByZXR1cm4gcHJlZml4ICsgYmxvY2tTdHJpbmcucmVwbGFjZSgvXFxuL2csICdcXG4nICsgaW5kZW50YXRpb24pICsgJ1xcbic7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/printSchema.mjs\n");
|
1081 |
|
1082 | }),
|
1083 |
|
1084 | "../../../node_modules/graphql/utilities/separateOperations.mjs":
|
1085 |
|
1086 |
|
1087 |
|
1088 |
|
1089 | (function(module, __webpack_exports__, __webpack_require__) {
|
1090 |
|
1091 | "use strict";
|
1092 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"separateOperations\", function() { return separateOperations; });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n\n\n/**\n * separateOperations accepts a single AST document which may contain many\n * operations and fragments and returns a collection of AST documents each of\n * which contains a single operation as well the fragment definitions it\n * refers to.\n */\n\nfunction separateOperations(documentAST) {\n const operations = [];\n const depGraph = Object.create(null); // Populate metadata and build a dependency graph.\n\n for (const definitionNode of documentAST.definitions) {\n switch (definitionNode.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].OPERATION_DEFINITION:\n operations.push(definitionNode);\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FRAGMENT_DEFINITION:\n depGraph[definitionNode.name.value] = collectDependencies(\n definitionNode.selectionSet,\n );\n break;\n\n default: // ignore non-executable definitions\n }\n } // For each operation, produce a new synthesized AST which includes only what\n // is necessary for completing that operation.\n\n const separatedDocumentASTs = Object.create(null);\n\n for (const operation of operations) {\n const dependencies = new Set();\n\n for (const fragmentName of collectDependencies(operation.selectionSet)) {\n collectTransitiveDependencies(dependencies, depGraph, fragmentName);\n } // Provides the empty string for anonymous operations.\n\n const operationName = operation.name ? operation.name.value : ''; // The list of definition nodes to be included for this operation, sorted\n // to retain the same order as the original document.\n\n separatedDocumentASTs[operationName] = {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].DOCUMENT,\n definitions: documentAST.definitions.filter(\n (node) =>\n node === operation ||\n (node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FRAGMENT_DEFINITION &&\n dependencies.has(node.name.value)),\n ),\n };\n }\n\n return separatedDocumentASTs;\n}\n\n// From a dependency graph, collects a list of transitive dependencies by\n// recursing through a dependency graph.\nfunction collectTransitiveDependencies(collected, depGraph, fromName) {\n if (!collected.has(fromName)) {\n collected.add(fromName);\n const immediateDeps = depGraph[fromName];\n\n if (immediateDeps !== undefined) {\n for (const toName of immediateDeps) {\n collectTransitiveDependencies(collected, depGraph, toName);\n }\n }\n }\n}\n\nfunction collectDependencies(selectionSet) {\n const dependencies = [];\n Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_1__[\"visit\"])(selectionSet, {\n FragmentSpread(node) {\n dependencies.push(node.name.value);\n },\n });\n return dependencies;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3NlcGFyYXRlT3BlcmF0aW9ucy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvc2VwYXJhdGVPcGVyYXRpb25zLm1qcz8yNzU5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuaW1wb3J0IHsgdmlzaXQgfSBmcm9tICcuLi9sYW5ndWFnZS92aXNpdG9yLm1qcyc7XG4vKipcbiAqIHNlcGFyYXRlT3BlcmF0aW9ucyBhY2NlcHRzIGEgc2luZ2xlIEFTVCBkb2N1bWVudCB3aGljaCBtYXkgY29udGFpbiBtYW55XG4gKiBvcGVyYXRpb25zIGFuZCBmcmFnbWVudHMgYW5kIHJldHVybnMgYSBjb2xsZWN0aW9uIG9mIEFTVCBkb2N1bWVudHMgZWFjaCBvZlxuICogd2hpY2ggY29udGFpbnMgYSBzaW5nbGUgb3BlcmF0aW9uIGFzIHdlbGwgdGhlIGZyYWdtZW50IGRlZmluaXRpb25zIGl0XG4gKiByZWZlcnMgdG8uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlT3BlcmF0aW9ucyhkb2N1bWVudEFTVCkge1xuICBjb25zdCBvcGVyYXRpb25zID0gW107XG4gIGNvbnN0IGRlcEdyYXBoID0gT2JqZWN0LmNyZWF0ZShudWxsKTsgLy8gUG9wdWxhdGUgbWV0YWRhdGEgYW5kIGJ1aWxkIGEgZGVwZW5kZW5jeSBncmFwaC5cblxuICBmb3IgKGNvbnN0IGRlZmluaXRpb25Ob2RlIG9mIGRvY3VtZW50QVNULmRlZmluaXRpb25zKSB7XG4gICAgc3dpdGNoIChkZWZpbml0aW9uTm9kZS5raW5kKSB7XG4gICAgICBjYXNlIEtpbmQuT1BFUkFUSU9OX0RFRklOSVRJT046XG4gICAgICAgIG9wZXJhdGlvbnMucHVzaChkZWZpbml0aW9uTm9kZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEtpbmQuRlJBR01FTlRfREVGSU5JVElPTjpcbiAgICAgICAgZGVwR3JhcGhbZGVmaW5pdGlvbk5vZGUubmFtZS52YWx1ZV0gPSBjb2xsZWN0RGVwZW5kZW5jaWVzKFxuICAgICAgICAgIGRlZmluaXRpb25Ob2RlLnNlbGVjdGlvblNldCxcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6IC8vIGlnbm9yZSBub24tZXhlY3V0YWJsZSBkZWZpbml0aW9uc1xuICAgIH1cbiAgfSAvLyBGb3IgZWFjaCBvcGVyYXRpb24sIHByb2R1Y2UgYSBuZXcgc3ludGhlc2l6ZWQgQVNUIHdoaWNoIGluY2x1ZGVzIG9ubHkgd2hhdFxuICAvLyBpcyBuZWNlc3NhcnkgZm9yIGNvbXBsZXRpbmcgdGhhdCBvcGVyYXRpb24uXG5cbiAgY29uc3Qgc2VwYXJhdGVkRG9jdW1lbnRBU1RzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IG9wZXJhdGlvbiBvZiBvcGVyYXRpb25zKSB7XG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gbmV3IFNldCgpO1xuXG4gICAgZm9yIChjb25zdCBmcmFnbWVudE5hbWUgb2YgY29sbGVjdERlcGVuZGVuY2llcyhvcGVyYXRpb24uc2VsZWN0aW9uU2V0KSkge1xuICAgICAgY29sbGVjdFRyYW5zaXRpdmVEZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzLCBkZXBHcmFwaCwgZnJhZ21lbnROYW1lKTtcbiAgICB9IC8vIFByb3ZpZGVzIHRoZSBlbXB0eSBzdHJpbmcgZm9yIGFub255bW91cyBvcGVyYXRpb25zLlxuXG4gICAgY29uc3Qgb3BlcmF0aW9uTmFtZSA9IG9wZXJhdGlvbi5uYW1lID8gb3BlcmF0aW9uLm5hbWUudmFsdWUgOiAnJzsgLy8gVGhlIGxpc3Qgb2YgZGVmaW5pdGlvbiBub2RlcyB0byBiZSBpbmNsdWRlZCBmb3IgdGhpcyBvcGVyYXRpb24sIHNvcnRlZFxuICAgIC8vIHRvIHJldGFpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgb3JpZ2luYWwgZG9jdW1lbnQuXG5cbiAgICBzZXBhcmF0ZWREb2N1bWVudEFTVHNbb3BlcmF0aW9uTmFtZV0gPSB7XG4gICAgICBraW5kOiBLaW5kLkRPQ1VNRU5ULFxuICAgICAgZGVmaW5pdGlvbnM6IGRvY3VtZW50QVNULmRlZmluaXRpb25zLmZpbHRlcihcbiAgICAgICAgKG5vZGUpID0+XG4gICAgICAgICAgbm9kZSA9PT0gb3BlcmF0aW9uIHx8XG4gICAgICAgICAgKG5vZGUua2luZCA9PT0gS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OICYmXG4gICAgICAgICAgICBkZXBlbmRlbmNpZXMuaGFzKG5vZGUubmFtZS52YWx1ZSkpLFxuICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHNlcGFyYXRlZERvY3VtZW50QVNUcztcbn1cblxuLy8gRnJvbSBhIGRlcGVuZGVuY3kgZ3JhcGgsIGNvbGxlY3RzIGEgbGlzdCBvZiB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcyBieVxuLy8gcmVjdXJzaW5nIHRocm91Z2ggYSBkZXBlbmRlbmN5IGdyYXBoLlxuZnVuY3Rpb24gY29sbGVjdFRyYW5zaXRpdmVEZXBlbmRlbmNpZXMoY29sbGVjdGVkLCBkZXBHcmFwaCwgZnJvbU5hbWUpIHtcbiAgaWYgKCFjb2xsZWN0ZWQuaGFzKGZyb21OYW1lKSkge1xuICAgIGNvbGxlY3RlZC5hZGQoZnJvbU5hbWUpO1xuICAgIGNvbnN0IGltbWVkaWF0ZURlcHMgPSBkZXBHcmFwaFtmcm9tTmFtZV07XG5cbiAgICBpZiAoaW1tZWRpYXRlRGVwcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IHRvTmFtZSBvZiBpbW1lZGlhdGVEZXBzKSB7XG4gICAgICAgIGNvbGxlY3RUcmFuc2l0aXZlRGVwZW5kZW5jaWVzKGNvbGxlY3RlZCwgZGVwR3JhcGgsIHRvTmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3REZXBlbmRlbmNpZXMoc2VsZWN0aW9uU2V0KSB7XG4gIGNvbnN0IGRlcGVuZGVuY2llcyA9IFtdO1xuICB2aXNpdChzZWxlY3Rpb25TZXQsIHtcbiAgICBGcmFnbWVudFNwcmVhZChub2RlKSB7XG4gICAgICBkZXBlbmRlbmNpZXMucHVzaChub2RlLm5hbWUudmFsdWUpO1xuICAgIH0sXG4gIH0pO1xuICByZXR1cm4gZGVwZW5kZW5jaWVzO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/separateOperations.mjs\n");
|
1093 |
|
1094 | }),
|
1095 |
|
1096 | "../../../node_modules/graphql/utilities/sortValueNode.mjs":
|
1097 |
|
1098 |
|
1099 |
|
1100 |
|
1101 | (function(module, __webpack_exports__, __webpack_require__) {
|
1102 |
|
1103 | "use strict";
|
1104 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sortValueNode\", function() { return sortValueNode; });\n/* harmony import */ var _jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/naturalCompare.mjs */ \"../../../node_modules/graphql/jsutils/naturalCompare.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n\n\n/**\n * Sort ValueNode.\n *\n * This function returns a sorted copy of the given ValueNode.\n *\n * @internal\n */\n\nfunction sortValueNode(valueNode) {\n switch (valueNode.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OBJECT:\n return { ...valueNode, fields: sortFields(valueNode.fields) };\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].LIST:\n return { ...valueNode, values: valueNode.values.map(sortValueNode) };\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INT:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FLOAT:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].STRING:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].BOOLEAN:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].NULL:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ENUM:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].VARIABLE:\n return valueNode;\n }\n}\n\nfunction sortFields(fields) {\n return fields\n .map((fieldNode) => ({\n ...fieldNode,\n value: sortValueNode(fieldNode.value),\n }))\n .sort((fieldA, fieldB) =>\n Object(_jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_0__[\"naturalCompare\"])(fieldA.name.value, fieldB.name.value),\n );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3NvcnRWYWx1ZU5vZGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3NvcnRWYWx1ZU5vZGUubWpzPzQ3MWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbmF0dXJhbENvbXBhcmUgfSBmcm9tICcuLi9qc3V0aWxzL25hdHVyYWxDb21wYXJlLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbi8qKlxuICogU29ydCBWYWx1ZU5vZGUuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgc29ydGVkIGNvcHkgb2YgdGhlIGdpdmVuIFZhbHVlTm9kZS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc29ydFZhbHVlTm9kZSh2YWx1ZU5vZGUpIHtcbiAgc3dpdGNoICh2YWx1ZU5vZGUua2luZCkge1xuICAgIGNhc2UgS2luZC5PQkpFQ1Q6XG4gICAgICByZXR1cm4geyAuLi52YWx1ZU5vZGUsIGZpZWxkczogc29ydEZpZWxkcyh2YWx1ZU5vZGUuZmllbGRzKSB9O1xuXG4gICAgY2FzZSBLaW5kLkxJU1Q6XG4gICAgICByZXR1cm4geyAuLi52YWx1ZU5vZGUsIHZhbHVlczogdmFsdWVOb2RlLnZhbHVlcy5tYXAoc29ydFZhbHVlTm9kZSkgfTtcblxuICAgIGNhc2UgS2luZC5JTlQ6XG4gICAgY2FzZSBLaW5kLkZMT0FUOlxuICAgIGNhc2UgS2luZC5TVFJJTkc6XG4gICAgY2FzZSBLaW5kLkJPT0xFQU46XG4gICAgY2FzZSBLaW5kLk5VTEw6XG4gICAgY2FzZSBLaW5kLkVOVU06XG4gICAgY2FzZSBLaW5kLlZBUklBQkxFOlxuICAgICAgcmV0dXJuIHZhbHVlTm9kZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzb3J0RmllbGRzKGZpZWxkcykge1xuICByZXR1cm4gZmllbGRzXG4gICAgLm1hcCgoZmllbGROb2RlKSA9PiAoe1xuICAgICAgLi4uZmllbGROb2RlLFxuICAgICAgdmFsdWU6IHNvcnRWYWx1ZU5vZGUoZmllbGROb2RlLnZhbHVlKSxcbiAgICB9KSlcbiAgICAuc29ydCgoZmllbGRBLCBmaWVsZEIpID0+XG4gICAgICBuYXR1cmFsQ29tcGFyZShmaWVsZEEubmFtZS52YWx1ZSwgZmllbGRCLm5hbWUudmFsdWUpLFxuICAgICk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/sortValueNode.mjs\n");
|
1105 |
|
1106 | }),
|
1107 |
|
1108 | "../../../node_modules/graphql/utilities/stripIgnoredCharacters.mjs":
|
1109 |
|
1110 |
|
1111 |
|
1112 |
|
1113 | (function(module, __webpack_exports__, __webpack_require__) {
|
1114 |
|
1115 | "use strict";
|
1116 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stripIgnoredCharacters\", function() { return stripIgnoredCharacters; });\n/* harmony import */ var _language_blockString_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/blockString.mjs */ \"../../../node_modules/graphql/language/blockString.mjs\");\n/* harmony import */ var _language_lexer_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/lexer.mjs */ \"../../../node_modules/graphql/language/lexer.mjs\");\n/* harmony import */ var _language_source_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/source.mjs */ \"../../../node_modules/graphql/language/source.mjs\");\n/* harmony import */ var _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/tokenKind.mjs */ \"../../../node_modules/graphql/language/tokenKind.mjs\");\n\n\n\n\n/**\n * Strips characters that are not significant to the validity or execution\n * of a GraphQL document:\n * - UnicodeBOM\n * - WhiteSpace\n * - LineTerminator\n * - Comment\n * - Comma\n * - BlockString indentation\n *\n * Note: It is required to have a delimiter character between neighboring\n * non-punctuator tokens and this function always uses single space as delimiter.\n *\n * It is guaranteed that both input and output documents if parsed would result\n * in the exact same AST except for nodes location.\n *\n * Warning: It is guaranteed that this function will always produce stable results.\n * However, it's not guaranteed that it will stay the same between different\n * releases due to bugfixes or changes in the GraphQL specification.\n *\n * Query example:\n *\n * ```graphql\n * query SomeQuery($foo: String!, $bar: String) {\n * someField(foo: $foo, bar: $bar) {\n * a\n * b {\n * c\n * d\n * }\n * }\n * }\n * ```\n *\n * Becomes:\n *\n * ```graphql\n * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}\n * ```\n *\n * SDL example:\n *\n * ```graphql\n * \"\"\"\n * Type description\n * \"\"\"\n * type Foo {\n * \"\"\"\n * Field description\n * \"\"\"\n * bar: String\n * }\n * ```\n *\n * Becomes:\n *\n * ```graphql\n * \"\"\"Type description\"\"\" type Foo{\"\"\"Field description\"\"\" bar:String}\n * ```\n */\n\nfunction stripIgnoredCharacters(source) {\n const sourceObj = Object(_language_source_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isSource\"])(source) ? source : new _language_source_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Source\"](source);\n const body = sourceObj.body;\n const lexer = new _language_lexer_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Lexer\"](sourceObj);\n let strippedBody = '';\n let wasLastAddedTokenNonPunctuator = false;\n\n while (lexer.advance().kind !== _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].EOF) {\n const currentToken = lexer.token;\n const tokenKind = currentToken.kind;\n /**\n * Every two non-punctuator tokens should have space between them.\n * Also prevent case of non-punctuator token following by spread resulting\n * in invalid token (e.g. `1...` is invalid Float token).\n */\n\n const isNonPunctuator = !Object(_language_lexer_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isPunctuatorTokenKind\"])(currentToken.kind);\n\n if (wasLastAddedTokenNonPunctuator) {\n if (isNonPunctuator || currentToken.kind === _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].SPREAD) {\n strippedBody += ' ';\n }\n }\n\n const tokenBody = body.slice(currentToken.start, currentToken.end);\n\n if (tokenKind === _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BLOCK_STRING) {\n strippedBody += Object(_language_blockString_mjs__WEBPACK_IMPORTED_MODULE_0__[\"printBlockString\"])(currentToken.value, {\n minimize: true,\n });\n } else {\n strippedBody += tokenBody;\n }\n\n wasLastAddedTokenNonPunctuator = isNonPunctuator;\n }\n\n return strippedBody;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3N0cmlwSWdub3JlZENoYXJhY3RlcnMubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3N0cmlwSWdub3JlZENoYXJhY3RlcnMubWpzPzg5NTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJpbnRCbG9ja1N0cmluZyB9IGZyb20gJy4uL2xhbmd1YWdlL2Jsb2NrU3RyaW5nLm1qcyc7XG5pbXBvcnQgeyBpc1B1bmN0dWF0b3JUb2tlbktpbmQsIExleGVyIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvbGV4ZXIubWpzJztcbmltcG9ydCB7IGlzU291cmNlLCBTb3VyY2UgfSBmcm9tICcuLi9sYW5ndWFnZS9zb3VyY2UubWpzJztcbmltcG9ydCB7IFRva2VuS2luZCB9IGZyb20gJy4uL2xhbmd1YWdlL3Rva2VuS2luZC5tanMnO1xuLyoqXG4gKiBTdHJpcHMgY2hhcmFjdGVycyB0aGF0IGFyZSBub3Qgc2lnbmlmaWNhbnQgdG8gdGhlIHZhbGlkaXR5IG9yIGV4ZWN1dGlvblxuICogb2YgYSBHcmFwaFFMIGRvY3VtZW50OlxuICogICAtIFVuaWNvZGVCT01cbiAqICAgLSBXaGl0ZVNwYWNlXG4gKiAgIC0gTGluZVRlcm1pbmF0b3JcbiAqICAgLSBDb21tZW50XG4gKiAgIC0gQ29tbWFcbiAqICAgLSBCbG9ja1N0cmluZyBpbmRlbnRhdGlvblxuICpcbiAqIE5vdGU6IEl0IGlzIHJlcXVpcmVkIHRvIGhhdmUgYSBkZWxpbWl0ZXIgY2hhcmFjdGVyIGJldHdlZW4gbmVpZ2hib3JpbmdcbiAqIG5vbi1wdW5jdHVhdG9yIHRva2VucyBhbmQgdGhpcyBmdW5jdGlvbiBhbHdheXMgdXNlcyBzaW5nbGUgc3BhY2UgYXMgZGVsaW1pdGVyLlxuICpcbiAqIEl0IGlzIGd1YXJhbnRlZWQgdGhhdCBib3RoIGlucHV0IGFuZCBvdXRwdXQgZG9jdW1lbnRzIGlmIHBhcnNlZCB3b3VsZCByZXN1bHRcbiAqIGluIHRoZSBleGFjdCBzYW1lIEFTVCBleGNlcHQgZm9yIG5vZGVzIGxvY2F0aW9uLlxuICpcbiAqIFdhcm5pbmc6IEl0IGlzIGd1YXJhbnRlZWQgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHByb2R1Y2Ugc3RhYmxlIHJlc3VsdHMuXG4gKiBIb3dldmVyLCBpdCdzIG5vdCBndWFyYW50ZWVkIHRoYXQgaXQgd2lsbCBzdGF5IHRoZSBzYW1lIGJldHdlZW4gZGlmZmVyZW50XG4gKiByZWxlYXNlcyBkdWUgdG8gYnVnZml4ZXMgb3IgY2hhbmdlcyBpbiB0aGUgR3JhcGhRTCBzcGVjaWZpY2F0aW9uLlxuICpcbiAqIFF1ZXJ5IGV4YW1wbGU6XG4gKlxuICogYGBgZ3JhcGhxbFxuICogcXVlcnkgU29tZVF1ZXJ5KCRmb286IFN0cmluZyEsICRiYXI6IFN0cmluZykge1xuICogICBzb21lRmllbGQoZm9vOiAkZm9vLCBiYXI6ICRiYXIpIHtcbiAqICAgICBhXG4gKiAgICAgYiB7XG4gKiAgICAgICBjXG4gKiAgICAgICBkXG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBCZWNvbWVzOlxuICpcbiAqIGBgYGdyYXBocWxcbiAqIHF1ZXJ5IFNvbWVRdWVyeSgkZm9vOlN0cmluZyEkYmFyOlN0cmluZyl7c29tZUZpZWxkKGZvbzokZm9vIGJhcjokYmFyKXthIGJ7YyBkfX19XG4gKiBgYGBcbiAqXG4gKiBTREwgZXhhbXBsZTpcbiAqXG4gKiBgYGBncmFwaHFsXG4gKiBcIlwiXCJcbiAqIFR5cGUgZGVzY3JpcHRpb25cbiAqIFwiXCJcIlxuICogdHlwZSBGb28ge1xuICogICBcIlwiXCJcbiAqICAgRmllbGQgZGVzY3JpcHRpb25cbiAqICAgXCJcIlwiXG4gKiAgIGJhcjogU3RyaW5nXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBCZWNvbWVzOlxuICpcbiAqIGBgYGdyYXBocWxcbiAqIFwiXCJcIlR5cGUgZGVzY3JpcHRpb25cIlwiXCIgdHlwZSBGb297XCJcIlwiRmllbGQgZGVzY3JpcHRpb25cIlwiXCIgYmFyOlN0cmluZ31cbiAqIGBgYFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcElnbm9yZWRDaGFyYWN0ZXJzKHNvdXJjZSkge1xuICBjb25zdCBzb3VyY2VPYmogPSBpc1NvdXJjZShzb3VyY2UpID8gc291cmNlIDogbmV3IFNvdXJjZShzb3VyY2UpO1xuICBjb25zdCBib2R5ID0gc291cmNlT2JqLmJvZHk7XG4gIGNvbnN0IGxleGVyID0gbmV3IExleGVyKHNvdXJjZU9iaik7XG4gIGxldCBzdHJpcHBlZEJvZHkgPSAnJztcbiAgbGV0IHdhc0xhc3RBZGRlZFRva2VuTm9uUHVuY3R1YXRvciA9IGZhbHNlO1xuXG4gIHdoaWxlIChsZXhlci5hZHZhbmNlKCkua2luZCAhPT0gVG9rZW5LaW5kLkVPRikge1xuICAgIGNvbnN0IGN1cnJlbnRUb2tlbiA9IGxleGVyLnRva2VuO1xuICAgIGNvbnN0IHRva2VuS2luZCA9IGN1cnJlbnRUb2tlbi5raW5kO1xuICAgIC8qKlxuICAgICAqIEV2ZXJ5IHR3byBub24tcHVuY3R1YXRvciB0b2tlbnMgc2hvdWxkIGhhdmUgc3BhY2UgYmV0d2VlbiB0aGVtLlxuICAgICAqIEFsc28gcHJldmVudCBjYXNlIG9mIG5vbi1wdW5jdHVhdG9yIHRva2VuIGZvbGxvd2luZyBieSBzcHJlYWQgcmVzdWx0aW5nXG4gICAgICogaW4gaW52YWxpZCB0b2tlbiAoZS5nLiBgMS4uLmAgaXMgaW52YWxpZCBGbG9hdCB0b2tlbikuXG4gICAgICovXG5cbiAgICBjb25zdCBpc05vblB1bmN0dWF0b3IgPSAhaXNQdW5jdHVhdG9yVG9rZW5LaW5kKGN1cnJlbnRUb2tlbi5raW5kKTtcblxuICAgIGlmICh3YXNMYXN0QWRkZWRUb2tlbk5vblB1bmN0dWF0b3IpIHtcbiAgICAgIGlmIChpc05vblB1bmN0dWF0b3IgfHwgY3VycmVudFRva2VuLmtpbmQgPT09IFRva2VuS2luZC5TUFJFQUQpIHtcbiAgICAgICAgc3RyaXBwZWRCb2R5ICs9ICcgJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbkJvZHkgPSBib2R5LnNsaWNlKGN1cnJlbnRUb2tlbi5zdGFydCwgY3VycmVudFRva2VuLmVuZCk7XG5cbiAgICBpZiAodG9rZW5LaW5kID09PSBUb2tlbktpbmQuQkxPQ0tfU1RSSU5HKSB7XG4gICAgICBzdHJpcHBlZEJvZHkgKz0gcHJpbnRCbG9ja1N0cmluZyhjdXJyZW50VG9rZW4udmFsdWUsIHtcbiAgICAgICAgbWluaW1pemU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyaXBwZWRCb2R5ICs9IHRva2VuQm9keTtcbiAgICB9XG5cbiAgICB3YXNMYXN0QWRkZWRUb2tlbk5vblB1bmN0dWF0b3IgPSBpc05vblB1bmN0dWF0b3I7XG4gIH1cblxuICByZXR1cm4gc3RyaXBwZWRCb2R5O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/stripIgnoredCharacters.mjs\n");
|
1117 |
|
1118 | }),
|
1119 |
|
1120 | "../../../node_modules/graphql/utilities/typeComparators.mjs":
|
1121 |
|
1122 |
|
1123 |
|
1124 |
|
1125 | (function(module, __webpack_exports__, __webpack_require__) {
|
1126 |
|
1127 | "use strict";
|
1128 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEqualType\", function() { return isEqualType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypeSubTypeOf\", function() { return isTypeSubTypeOf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"doTypesOverlap\", function() { return doTypesOverlap; });\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n/**\n * Provided two types, return true if the types are equal (invariant).\n */\nfunction isEqualType(typeA, typeB) {\n // Equivalent types are equal.\n if (typeA === typeB) {\n return true;\n } // If either type is non-null, the other must also be non-null.\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isNonNullType\"])(typeA) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isNonNullType\"])(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // If either type is a list, the other must also be a list.\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isListType\"])(typeA) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isListType\"])(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // Otherwise the types are not equal.\n\n return false;\n}\n/**\n * Provided a type and a super type, return true if the first type is either\n * equal or a subset of the second super type (covariant).\n */\n\nfunction isTypeSubTypeOf(schema, maybeSubType, superType) {\n // Equivalent type is a valid subtype\n if (maybeSubType === superType) {\n return true;\n } // If superType is non-null, maybeSubType must also be non-null.\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isNonNullType\"])(superType)) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isNonNullType\"])(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isNonNullType\"])(maybeSubType)) {\n // If superType is nullable, maybeSubType may be non-null or nullable.\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);\n } // If superType type is a list, maybeSubType type must also be a list.\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isListType\"])(superType)) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isListType\"])(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isListType\"])(maybeSubType)) {\n // If superType is not a list, maybeSubType must also be not a list.\n return false;\n } // If superType type is an abstract type, check if it is super type of maybeSubType.\n // Otherwise, the child type is not a valid subtype of the parent type.\n\n return (\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isAbstractType\"])(superType) &&\n (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isInterfaceType\"])(maybeSubType) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isObjectType\"])(maybeSubType)) &&\n schema.isSubType(superType, maybeSubType)\n );\n}\n/**\n * Provided two composite types, determine if they \"overlap\". Two composite\n * types overlap when the Sets of possible concrete types for each intersect.\n *\n * This is often used to determine if a fragment of a given type could possibly\n * be visited in a context of another type.\n *\n * This function is commutative.\n */\n\nfunction doTypesOverlap(schema, typeA, typeB) {\n // Equivalent types overlap\n if (typeA === typeB) {\n return true;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isAbstractType\"])(typeA)) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isAbstractType\"])(typeB)) {\n // If both types are abstract, then determine if there is any intersection\n // between possible concrete types of each.\n return schema\n .getPossibleTypes(typeA)\n .some((type) => schema.isSubType(typeB, type));\n } // Determine if the latter type is a possible concrete type of the former.\n\n return schema.isSubType(typeA, typeB);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isAbstractType\"])(typeB)) {\n // Determine if the former type is a possible concrete type of the latter.\n return schema.isSubType(typeB, typeA);\n } // Otherwise the types do not overlap.\n\n return false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3R5cGVDb21wYXJhdG9ycy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvdHlwZUNvbXBhcmF0b3JzLm1qcz8yNGMwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzQWJzdHJhY3RUeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzTGlzdFR5cGUsXG4gIGlzTm9uTnVsbFR5cGUsXG4gIGlzT2JqZWN0VHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5cbi8qKlxuICogUHJvdmlkZWQgdHdvIHR5cGVzLCByZXR1cm4gdHJ1ZSBpZiB0aGUgdHlwZXMgYXJlIGVxdWFsIChpbnZhcmlhbnQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFcXVhbFR5cGUodHlwZUEsIHR5cGVCKSB7XG4gIC8vIEVxdWl2YWxlbnQgdHlwZXMgYXJlIGVxdWFsLlxuICBpZiAodHlwZUEgPT09IHR5cGVCKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gSWYgZWl0aGVyIHR5cGUgaXMgbm9uLW51bGwsIHRoZSBvdGhlciBtdXN0IGFsc28gYmUgbm9uLW51bGwuXG5cbiAgaWYgKGlzTm9uTnVsbFR5cGUodHlwZUEpICYmIGlzTm9uTnVsbFR5cGUodHlwZUIpKSB7XG4gICAgcmV0dXJuIGlzRXF1YWxUeXBlKHR5cGVBLm9mVHlwZSwgdHlwZUIub2ZUeXBlKTtcbiAgfSAvLyBJZiBlaXRoZXIgdHlwZSBpcyBhIGxpc3QsIHRoZSBvdGhlciBtdXN0IGFsc28gYmUgYSBsaXN0LlxuXG4gIGlmIChpc0xpc3RUeXBlKHR5cGVBKSAmJiBpc0xpc3RUeXBlKHR5cGVCKSkge1xuICAgIHJldHVybiBpc0VxdWFsVHlwZSh0eXBlQS5vZlR5cGUsIHR5cGVCLm9mVHlwZSk7XG4gIH0gLy8gT3RoZXJ3aXNlIHRoZSB0eXBlcyBhcmUgbm90IGVxdWFsLlxuXG4gIHJldHVybiBmYWxzZTtcbn1cbi8qKlxuICogUHJvdmlkZWQgYSB0eXBlIGFuZCBhIHN1cGVyIHR5cGUsIHJldHVybiB0cnVlIGlmIHRoZSBmaXJzdCB0eXBlIGlzIGVpdGhlclxuICogZXF1YWwgb3IgYSBzdWJzZXQgb2YgdGhlIHNlY29uZCBzdXBlciB0eXBlIChjb3ZhcmlhbnQpLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVTdWJUeXBlT2Yoc2NoZW1hLCBtYXliZVN1YlR5cGUsIHN1cGVyVHlwZSkge1xuICAvLyBFcXVpdmFsZW50IHR5cGUgaXMgYSB2YWxpZCBzdWJ0eXBlXG4gIGlmIChtYXliZVN1YlR5cGUgPT09IHN1cGVyVHlwZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIElmIHN1cGVyVHlwZSBpcyBub24tbnVsbCwgbWF5YmVTdWJUeXBlIG11c3QgYWxzbyBiZSBub24tbnVsbC5cblxuICBpZiAoaXNOb25OdWxsVHlwZShzdXBlclR5cGUpKSB7XG4gICAgaWYgKGlzTm9uTnVsbFR5cGUobWF5YmVTdWJUeXBlKSkge1xuICAgICAgcmV0dXJuIGlzVHlwZVN1YlR5cGVPZihzY2hlbWEsIG1heWJlU3ViVHlwZS5vZlR5cGUsIHN1cGVyVHlwZS5vZlR5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc05vbk51bGxUeXBlKG1heWJlU3ViVHlwZSkpIHtcbiAgICAvLyBJZiBzdXBlclR5cGUgaXMgbnVsbGFibGUsIG1heWJlU3ViVHlwZSBtYXkgYmUgbm9uLW51bGwgb3IgbnVsbGFibGUuXG4gICAgcmV0dXJuIGlzVHlwZVN1YlR5cGVPZihzY2hlbWEsIG1heWJlU3ViVHlwZS5vZlR5cGUsIHN1cGVyVHlwZSk7XG4gIH0gLy8gSWYgc3VwZXJUeXBlIHR5cGUgaXMgYSBsaXN0LCBtYXliZVN1YlR5cGUgdHlwZSBtdXN0IGFsc28gYmUgYSBsaXN0LlxuXG4gIGlmIChpc0xpc3RUeXBlKHN1cGVyVHlwZSkpIHtcbiAgICBpZiAoaXNMaXN0VHlwZShtYXliZVN1YlR5cGUpKSB7XG4gICAgICByZXR1cm4gaXNUeXBlU3ViVHlwZU9mKHNjaGVtYSwgbWF5YmVTdWJUeXBlLm9mVHlwZSwgc3VwZXJUeXBlLm9mVHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzTGlzdFR5cGUobWF5YmVTdWJUeXBlKSkge1xuICAgIC8vIElmIHN1cGVyVHlwZSBpcyBub3QgYSBsaXN0LCBtYXliZVN1YlR5cGUgbXVzdCBhbHNvIGJlIG5vdCBhIGxpc3QuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIElmIHN1cGVyVHlwZSB0eXBlIGlzIGFuIGFic3RyYWN0IHR5cGUsIGNoZWNrIGlmIGl0IGlzIHN1cGVyIHR5cGUgb2YgbWF5YmVTdWJUeXBlLlxuICAvLyBPdGhlcndpc2UsIHRoZSBjaGlsZCB0eXBlIGlzIG5vdCBhIHZhbGlkIHN1YnR5cGUgb2YgdGhlIHBhcmVudCB0eXBlLlxuXG4gIHJldHVybiAoXG4gICAgaXNBYnN0cmFjdFR5cGUoc3VwZXJUeXBlKSAmJlxuICAgIChpc0ludGVyZmFjZVR5cGUobWF5YmVTdWJUeXBlKSB8fCBpc09iamVjdFR5cGUobWF5YmVTdWJUeXBlKSkgJiZcbiAgICBzY2hlbWEuaXNTdWJUeXBlKHN1cGVyVHlwZSwgbWF5YmVTdWJUeXBlKVxuICApO1xufVxuLyoqXG4gKiBQcm92aWRlZCB0d28gY29tcG9zaXRlIHR5cGVzLCBkZXRlcm1pbmUgaWYgdGhleSBcIm92ZXJsYXBcIi4gVHdvIGNvbXBvc2l0ZVxuICogdHlwZXMgb3ZlcmxhcCB3aGVuIHRoZSBTZXRzIG9mIHBvc3NpYmxlIGNvbmNyZXRlIHR5cGVzIGZvciBlYWNoIGludGVyc2VjdC5cbiAqXG4gKiBUaGlzIGlzIG9mdGVuIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgZnJhZ21lbnQgb2YgYSBnaXZlbiB0eXBlIGNvdWxkIHBvc3NpYmx5XG4gKiBiZSB2aXNpdGVkIGluIGEgY29udGV4dCBvZiBhbm90aGVyIHR5cGUuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBpcyBjb21tdXRhdGl2ZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZG9UeXBlc092ZXJsYXAoc2NoZW1hLCB0eXBlQSwgdHlwZUIpIHtcbiAgLy8gRXF1aXZhbGVudCB0eXBlcyBvdmVybGFwXG4gIGlmICh0eXBlQSA9PT0gdHlwZUIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc0Fic3RyYWN0VHlwZSh0eXBlQSkpIHtcbiAgICBpZiAoaXNBYnN0cmFjdFR5cGUodHlwZUIpKSB7XG4gICAgICAvLyBJZiBib3RoIHR5cGVzIGFyZSBhYnN0cmFjdCwgdGhlbiBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYW55IGludGVyc2VjdGlvblxuICAgICAgLy8gYmV0d2VlbiBwb3NzaWJsZSBjb25jcmV0ZSB0eXBlcyBvZiBlYWNoLlxuICAgICAgcmV0dXJuIHNjaGVtYVxuICAgICAgICAuZ2V0UG9zc2libGVUeXBlcyh0eXBlQSlcbiAgICAgICAgLnNvbWUoKHR5cGUpID0+IHNjaGVtYS5pc1N1YlR5cGUodHlwZUIsIHR5cGUpKTtcbiAgICB9IC8vIERldGVybWluZSBpZiB0aGUgbGF0dGVyIHR5cGUgaXMgYSBwb3NzaWJsZSBjb25jcmV0ZSB0eXBlIG9mIHRoZSBmb3JtZXIuXG5cbiAgICByZXR1cm4gc2NoZW1hLmlzU3ViVHlwZSh0eXBlQSwgdHlwZUIpO1xuICB9XG5cbiAgaWYgKGlzQWJzdHJhY3RUeXBlKHR5cGVCKSkge1xuICAgIC8vIERldGVybWluZSBpZiB0aGUgZm9ybWVyIHR5cGUgaXMgYSBwb3NzaWJsZSBjb25jcmV0ZSB0eXBlIG9mIHRoZSBsYXR0ZXIuXG4gICAgcmV0dXJuIHNjaGVtYS5pc1N1YlR5cGUodHlwZUIsIHR5cGVBKTtcbiAgfSAvLyBPdGhlcndpc2UgdGhlIHR5cGVzIGRvIG5vdCBvdmVybGFwLlxuXG4gIHJldHVybiBmYWxzZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/typeComparators.mjs\n");
|
1129 |
|
1130 | }),
|
1131 |
|
1132 | "../../../node_modules/graphql/utilities/typeFromAST.mjs":
|
1133 |
|
1134 |
|
1135 |
|
1136 |
|
1137 | (function(module, __webpack_exports__, __webpack_require__) {
|
1138 |
|
1139 | "use strict";
|
1140 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"typeFromAST\", function() { return typeFromAST; });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\nfunction typeFromAST(schema, typeNode) {\n switch (typeNode.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].LIST_TYPE: {\n const innerType = typeFromAST(schema, typeNode.type);\n return innerType && new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLList\"](innerType);\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].NON_NULL_TYPE: {\n const innerType = typeFromAST(schema, typeNode.type);\n return innerType && new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLNonNull\"](innerType);\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].NAMED_TYPE:\n return schema.getType(typeNode.name.value);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3R5cGVGcm9tQVNULm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy90eXBlRnJvbUFTVC5tanM/MmVjOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IEdyYXBoUUxMaXN0LCBHcmFwaFFMTm9uTnVsbCB9IGZyb20gJy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tQVNUKHNjaGVtYSwgdHlwZU5vZGUpIHtcbiAgc3dpdGNoICh0eXBlTm9kZS5raW5kKSB7XG4gICAgY2FzZSBLaW5kLkxJU1RfVFlQRToge1xuICAgICAgY29uc3QgaW5uZXJUeXBlID0gdHlwZUZyb21BU1Qoc2NoZW1hLCB0eXBlTm9kZS50eXBlKTtcbiAgICAgIHJldHVybiBpbm5lclR5cGUgJiYgbmV3IEdyYXBoUUxMaXN0KGlubmVyVHlwZSk7XG4gICAgfVxuXG4gICAgY2FzZSBLaW5kLk5PTl9OVUxMX1RZUEU6IHtcbiAgICAgIGNvbnN0IGlubmVyVHlwZSA9IHR5cGVGcm9tQVNUKHNjaGVtYSwgdHlwZU5vZGUudHlwZSk7XG4gICAgICByZXR1cm4gaW5uZXJUeXBlICYmIG5ldyBHcmFwaFFMTm9uTnVsbChpbm5lclR5cGUpO1xuICAgIH1cblxuICAgIGNhc2UgS2luZC5OQU1FRF9UWVBFOlxuICAgICAgcmV0dXJuIHNjaGVtYS5nZXRUeXBlKHR5cGVOb2RlLm5hbWUudmFsdWUpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/typeFromAST.mjs\n");
|
1141 |
|
1142 | }),
|
1143 |
|
1144 | "../../../node_modules/graphql/utilities/valueFromAST.mjs":
|
1145 |
|
1146 |
|
1147 |
|
1148 |
|
1149 | (function(module, __webpack_exports__, __webpack_require__) {
|
1150 |
|
1151 | "use strict";
|
1152 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"valueFromAST\", function() { return valueFromAST; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value | JSON Value |\n * | -------------------- | ------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String | String |\n * | Int / Float | Number |\n * | Enum Value | Unknown |\n * | NullValue | null |\n *\n */\n\nfunction valueFromAST(valueNode, type, variables) {\n if (!valueNode) {\n // When there is no node, then there is also no value.\n // Importantly, this is different from returning the value null.\n return;\n }\n\n if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].VARIABLE) {\n const variableName = valueNode.name.value;\n\n if (variables == null || variables[variableName] === undefined) {\n // No valid return value.\n return;\n }\n\n const variableValue = variables[variableName];\n\n if (variableValue === null && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(type)) {\n return; // Invalid: intentionally return no value.\n } // Note: This does no further checking that this variable is correct.\n // This assumes that this query has been validated and the variable\n // usage here is of the correct type.\n\n return variableValue;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(type)) {\n if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].NULL) {\n return; // Invalid: intentionally return no value.\n }\n\n return valueFromAST(valueNode, type.ofType, variables);\n }\n\n if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].NULL) {\n // This is explicitly returning the value null.\n return null;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isListType\"])(type)) {\n const itemType = type.ofType;\n\n if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].LIST) {\n const coercedValues = [];\n\n for (const itemNode of valueNode.values) {\n if (isMissingVariable(itemNode, variables)) {\n // If an array contains a missing variable, it is either coerced to\n // null or if the item type is non-null, it considered invalid.\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(itemType)) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(null);\n } else {\n const itemValue = valueFromAST(itemNode, itemType, variables);\n\n if (itemValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(itemValue);\n }\n }\n\n return coercedValues;\n }\n\n const coercedValue = valueFromAST(valueNode, itemType, variables);\n\n if (coercedValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n return [coercedValue];\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputObjectType\"])(type)) {\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].OBJECT) {\n return; // Invalid: intentionally return no value.\n }\n\n const coercedObj = Object.create(null);\n const fieldNodes = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_2__[\"keyMap\"])(valueNode.fields, (field) => field.name.value);\n\n for (const field of Object.values(type.getFields())) {\n const fieldNode = fieldNodes[field.name];\n\n if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {\n if (field.defaultValue !== undefined) {\n coercedObj[field.name] = field.defaultValue;\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(field.type)) {\n return; // Invalid: intentionally return no value.\n }\n\n continue;\n }\n\n const fieldValue = valueFromAST(fieldNode.value, field.type, variables);\n\n if (fieldValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedObj[field.name] = fieldValue;\n }\n\n return coercedObj;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isLeafType\"])(type)) {\n // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n // Invalid values represent a failure to parse correctly, in which case\n // no value is returned.\n let result;\n\n try {\n result = type.parseLiteral(valueNode, variables);\n } catch (_error) {\n return; // Invalid: intentionally return no value.\n }\n\n if (result === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n return result;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible input types have been considered.\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"invariant\"])(false, 'Unexpected input type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(type));\n} // Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\n\nfunction isMissingVariable(valueNode, variables) {\n return (\n valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].VARIABLE &&\n (variables == null || variables[valueNode.name.value] === undefined)\n );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3ZhbHVlRnJvbUFTVC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvdmFsdWVGcm9tQVNULm1qcz9mZGM5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJy4uL2pzdXRpbHMvaW52YXJpYW50Lm1qcyc7XG5pbXBvcnQgeyBrZXlNYXAgfSBmcm9tICcuLi9qc3V0aWxzL2tleU1hcC5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQge1xuICBpc0lucHV0T2JqZWN0VHlwZSxcbiAgaXNMZWFmVHlwZSxcbiAgaXNMaXN0VHlwZSxcbiAgaXNOb25OdWxsVHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG4vKipcbiAqIFByb2R1Y2VzIGEgSmF2YVNjcmlwdCB2YWx1ZSBnaXZlbiBhIEdyYXBoUUwgVmFsdWUgQVNULlxuICpcbiAqIEEgR3JhcGhRTCB0eXBlIG11c3QgYmUgcHJvdmlkZWQsIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBpbnRlcnByZXQgZGlmZmVyZW50XG4gKiBHcmFwaFFMIFZhbHVlIGxpdGVyYWxzLlxuICpcbiAqIFJldHVybnMgYHVuZGVmaW5lZGAgd2hlbiB0aGUgdmFsdWUgY291bGQgbm90IGJlIHZhbGlkbHkgY29lcmNlZCBhY2NvcmRpbmcgdG9cbiAqIHRoZSBwcm92aWRlZCB0eXBlLlxuICpcbiAqIHwgR3JhcGhRTCBWYWx1ZSAgICAgICAgfCBKU09OIFZhbHVlICAgIHxcbiAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHxcbiAqIHwgSW5wdXQgT2JqZWN0ICAgICAgICAgfCBPYmplY3QgICAgICAgIHxcbiAqIHwgTGlzdCAgICAgICAgICAgICAgICAgfCBBcnJheSAgICAgICAgIHxcbiAqIHwgQm9vbGVhbiAgICAgICAgICAgICAgfCBCb29sZWFuICAgICAgIHxcbiAqIHwgU3RyaW5nICAgICAgICAgICAgICAgfCBTdHJpbmcgICAgICAgIHxcbiAqIHwgSW50IC8gRmxvYXQgICAgICAgICAgfCBOdW1iZXIgICAgICAgIHxcbiAqIHwgRW51bSBWYWx1ZSAgICAgICAgICAgfCBVbmtub3duICAgICAgIHxcbiAqIHwgTnVsbFZhbHVlICAgICAgICAgICAgfCBudWxsICAgICAgICAgIHxcbiAqXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbUFTVCh2YWx1ZU5vZGUsIHR5cGUsIHZhcmlhYmxlcykge1xuICBpZiAoIXZhbHVlTm9kZSkge1xuICAgIC8vIFdoZW4gdGhlcmUgaXMgbm8gbm9kZSwgdGhlbiB0aGVyZSBpcyBhbHNvIG5vIHZhbHVlLlxuICAgIC8vIEltcG9ydGFudGx5LCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIHJldHVybmluZyB0aGUgdmFsdWUgbnVsbC5cbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodmFsdWVOb2RlLmtpbmQgPT09IEtpbmQuVkFSSUFCTEUpIHtcbiAgICBjb25zdCB2YXJpYWJsZU5hbWUgPSB2YWx1ZU5vZGUubmFtZS52YWx1ZTtcblxuICAgIGlmICh2YXJpYWJsZXMgPT0gbnVsbCB8fCB2YXJpYWJsZXNbdmFyaWFibGVOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBObyB2YWxpZCByZXR1cm4gdmFsdWUuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFyaWFibGVWYWx1ZSA9IHZhcmlhYmxlc1t2YXJpYWJsZU5hbWVdO1xuXG4gICAgaWYgKHZhcmlhYmxlVmFsdWUgPT09IG51bGwgJiYgaXNOb25OdWxsVHlwZSh0eXBlKSkge1xuICAgICAgcmV0dXJuOyAvLyBJbnZhbGlkOiBpbnRlbnRpb25hbGx5IHJldHVybiBubyB2YWx1ZS5cbiAgICB9IC8vIE5vdGU6IFRoaXMgZG9lcyBubyBmdXJ0aGVyIGNoZWNraW5nIHRoYXQgdGhpcyB2YXJpYWJsZSBpcyBjb3JyZWN0LlxuICAgIC8vIFRoaXMgYXNzdW1lcyB0aGF0IHRoaXMgcXVlcnkgaGFzIGJlZW4gdmFsaWRhdGVkIGFuZCB0aGUgdmFyaWFibGVcbiAgICAvLyB1c2FnZSBoZXJlIGlzIG9mIHRoZSBjb3JyZWN0IHR5cGUuXG5cbiAgICByZXR1cm4gdmFyaWFibGVWYWx1ZTtcbiAgfVxuXG4gIGlmIChpc05vbk51bGxUeXBlKHR5cGUpKSB7XG4gICAgaWYgKHZhbHVlTm9kZS5raW5kID09PSBLaW5kLk5VTEwpIHtcbiAgICAgIHJldHVybjsgLy8gSW52YWxpZDogaW50ZW50aW9uYWxseSByZXR1cm4gbm8gdmFsdWUuXG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlRnJvbUFTVCh2YWx1ZU5vZGUsIHR5cGUub2ZUeXBlLCB2YXJpYWJsZXMpO1xuICB9XG5cbiAgaWYgKHZhbHVlTm9kZS5raW5kID09PSBLaW5kLk5VTEwpIHtcbiAgICAvLyBUaGlzIGlzIGV4cGxpY2l0bHkgcmV0dXJuaW5nIHRoZSB2YWx1ZSBudWxsLlxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGlzTGlzdFR5cGUodHlwZSkpIHtcbiAgICBjb25zdCBpdGVtVHlwZSA9IHR5cGUub2ZUeXBlO1xuXG4gICAgaWYgKHZhbHVlTm9kZS5raW5kID09PSBLaW5kLkxJU1QpIHtcbiAgICAgIGNvbnN0IGNvZXJjZWRWYWx1ZXMgPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBpdGVtTm9kZSBvZiB2YWx1ZU5vZGUudmFsdWVzKSB7XG4gICAgICAgIGlmIChpc01pc3NpbmdWYXJpYWJsZShpdGVtTm9kZSwgdmFyaWFibGVzKSkge1xuICAgICAgICAgIC8vIElmIGFuIGFycmF5IGNvbnRhaW5zIGEgbWlzc2luZyB2YXJpYWJsZSwgaXQgaXMgZWl0aGVyIGNvZXJjZWQgdG9cbiAgICAgICAgICAvLyBudWxsIG9yIGlmIHRoZSBpdGVtIHR5cGUgaXMgbm9uLW51bGwsIGl0IGNvbnNpZGVyZWQgaW52YWxpZC5cbiAgICAgICAgICBpZiAoaXNOb25OdWxsVHlwZShpdGVtVHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gSW52YWxpZDogaW50ZW50aW9uYWxseSByZXR1cm4gbm8gdmFsdWUuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29lcmNlZFZhbHVlcy5wdXNoKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IHZhbHVlRnJvbUFTVChpdGVtTm9kZSwgaXRlbVR5cGUsIHZhcmlhYmxlcyk7XG5cbiAgICAgICAgICBpZiAoaXRlbVZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gSW52YWxpZDogaW50ZW50aW9uYWxseSByZXR1cm4gbm8gdmFsdWUuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29lcmNlZFZhbHVlcy5wdXNoKGl0ZW1WYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvZXJjZWRWYWx1ZXM7XG4gICAgfVxuXG4gICAgY29uc3QgY29lcmNlZFZhbHVlID0gdmFsdWVGcm9tQVNUKHZhbHVlTm9kZSwgaXRlbVR5cGUsIHZhcmlhYmxlcyk7XG5cbiAgICBpZiAoY29lcmNlZFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjsgLy8gSW52YWxpZDogaW50ZW50aW9uYWxseSByZXR1cm4gbm8gdmFsdWUuXG4gICAgfVxuXG4gICAgcmV0dXJuIFtjb2VyY2VkVmFsdWVdO1xuICB9XG5cbiAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgaWYgKHZhbHVlTm9kZS5raW5kICE9PSBLaW5kLk9CSkVDVCkge1xuICAgICAgcmV0dXJuOyAvLyBJbnZhbGlkOiBpbnRlbnRpb25hbGx5IHJldHVybiBubyB2YWx1ZS5cbiAgICB9XG5cbiAgICBjb25zdCBjb2VyY2VkT2JqID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBjb25zdCBmaWVsZE5vZGVzID0ga2V5TWFwKHZhbHVlTm9kZS5maWVsZHMsIChmaWVsZCkgPT4gZmllbGQubmFtZS52YWx1ZSk7XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIE9iamVjdC52YWx1ZXModHlwZS5nZXRGaWVsZHMoKSkpIHtcbiAgICAgIGNvbnN0IGZpZWxkTm9kZSA9IGZpZWxkTm9kZXNbZmllbGQubmFtZV07XG5cbiAgICAgIGlmICghZmllbGROb2RlIHx8IGlzTWlzc2luZ1ZhcmlhYmxlKGZpZWxkTm9kZS52YWx1ZSwgdmFyaWFibGVzKSkge1xuICAgICAgICBpZiAoZmllbGQuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb2VyY2VkT2JqW2ZpZWxkLm5hbWVdID0gZmllbGQuZGVmYXVsdFZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTm9uTnVsbFR5cGUoZmllbGQudHlwZSkpIHtcbiAgICAgICAgICByZXR1cm47IC8vIEludmFsaWQ6IGludGVudGlvbmFsbHkgcmV0dXJuIG5vIHZhbHVlLlxuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB2YWx1ZUZyb21BU1QoZmllbGROb2RlLnZhbHVlLCBmaWVsZC50eXBlLCB2YXJpYWJsZXMpO1xuXG4gICAgICBpZiAoZmllbGRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjsgLy8gSW52YWxpZDogaW50ZW50aW9uYWxseSByZXR1cm4gbm8gdmFsdWUuXG4gICAgICB9XG5cbiAgICAgIGNvZXJjZWRPYmpbZmllbGQubmFtZV0gPSBmaWVsZFZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBjb2VyY2VkT2JqO1xuICB9XG5cbiAgaWYgKGlzTGVhZlR5cGUodHlwZSkpIHtcbiAgICAvLyBTY2FsYXJzIGFuZCBFbnVtcyBmdWxmaWxsIHBhcnNpbmcgYSBsaXRlcmFsIHZhbHVlIHZpYSBwYXJzZUxpdGVyYWwoKS5cbiAgICAvLyBJbnZhbGlkIHZhbHVlcyByZXByZXNlbnQgYSBmYWlsdXJlIHRvIHBhcnNlIGNvcnJlY3RseSwgaW4gd2hpY2ggY2FzZVxuICAgIC8vIG5vIHZhbHVlIGlzIHJldHVybmVkLlxuICAgIGxldCByZXN1bHQ7XG5cbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gdHlwZS5wYXJzZUxpdGVyYWwodmFsdWVOb2RlLCB2YXJpYWJsZXMpO1xuICAgIH0gY2F0Y2ggKF9lcnJvcikge1xuICAgICAgcmV0dXJuOyAvLyBJbnZhbGlkOiBpbnRlbnRpb25hbGx5IHJldHVybiBubyB2YWx1ZS5cbiAgICB9XG5cbiAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjsgLy8gSW52YWxpZDogaW50ZW50aW9uYWxseSByZXR1cm4gbm8gdmFsdWUuXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gIC8vIE5vdCByZWFjaGFibGUsIGFsbCBwb3NzaWJsZSBpbnB1dCB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZC5cblxuICBmYWxzZSB8fCBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIGlucHV0IHR5cGU6ICcgKyBpbnNwZWN0KHR5cGUpKTtcbn0gLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlZCB2YWx1ZU5vZGUgaXMgYSB2YXJpYWJsZSB3aGljaCBpcyBub3QgZGVmaW5lZFxuLy8gaW4gdGhlIHNldCBvZiB2YXJpYWJsZXMuXG5cbmZ1bmN0aW9uIGlzTWlzc2luZ1ZhcmlhYmxlKHZhbHVlTm9kZSwgdmFyaWFibGVzKSB7XG4gIHJldHVybiAoXG4gICAgdmFsdWVOb2RlLmtpbmQgPT09IEtpbmQuVkFSSUFCTEUgJiZcbiAgICAodmFyaWFibGVzID09IG51bGwgfHwgdmFyaWFibGVzW3ZhbHVlTm9kZS5uYW1lLnZhbHVlXSA9PT0gdW5kZWZpbmVkKVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/valueFromAST.mjs\n");
|
1153 |
|
1154 | }),
|
1155 |
|
1156 | "../../../node_modules/graphql/utilities/valueFromASTUntyped.mjs":
|
1157 |
|
1158 |
|
1159 |
|
1160 |
|
1161 | (function(module, __webpack_exports__, __webpack_require__) {
|
1162 |
|
1163 | "use strict";
|
1164 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"valueFromASTUntyped\", function() { return valueFromASTUntyped; });\n/* harmony import */ var _jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/keyValMap.mjs */ \"../../../node_modules/graphql/jsutils/keyValMap.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value\n * will reflect the provided GraphQL value AST.\n *\n * | GraphQL Value | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String / Enum | String |\n * | Int / Float | Number |\n * | Null | null |\n *\n */\n\nfunction valueFromASTUntyped(valueNode, variables) {\n switch (valueNode.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].NULL:\n return null;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INT:\n return parseInt(valueNode.value, 10);\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FLOAT:\n return parseFloat(valueNode.value);\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].STRING:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ENUM:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].BOOLEAN:\n return valueNode.value;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].LIST:\n return valueNode.values.map((node) =>\n valueFromASTUntyped(node, variables),\n );\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OBJECT:\n return Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_0__[\"keyValMap\"])(\n valueNode.fields,\n (field) => field.name.value,\n (field) => valueFromASTUntyped(field.value, variables),\n );\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].VARIABLE:\n return variables === null || variables === void 0\n ? void 0\n : variables[valueNode.name.value];\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3ZhbHVlRnJvbUFTVFVudHlwZWQubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3ZhbHVlRnJvbUFTVFVudHlwZWQubWpzPzMxNTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsga2V5VmFsTWFwIH0gZnJvbSAnLi4vanN1dGlscy9rZXlWYWxNYXAubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuLyoqXG4gKiBQcm9kdWNlcyBhIEphdmFTY3JpcHQgdmFsdWUgZ2l2ZW4gYSBHcmFwaFFMIFZhbHVlIEFTVC5cbiAqXG4gKiBVbmxpa2UgYHZhbHVlRnJvbUFTVCgpYCwgbm8gdHlwZSBpcyBwcm92aWRlZC4gVGhlIHJlc3VsdGluZyBKYXZhU2NyaXB0IHZhbHVlXG4gKiB3aWxsIHJlZmxlY3QgdGhlIHByb3ZpZGVkIEdyYXBoUUwgdmFsdWUgQVNULlxuICpcbiAqIHwgR3JhcGhRTCBWYWx1ZSAgICAgICAgfCBKYXZhU2NyaXB0IFZhbHVlIHxcbiAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tIHxcbiAqIHwgSW5wdXQgT2JqZWN0ICAgICAgICAgfCBPYmplY3QgICAgICAgICAgIHxcbiAqIHwgTGlzdCAgICAgICAgICAgICAgICAgfCBBcnJheSAgICAgICAgICAgIHxcbiAqIHwgQm9vbGVhbiAgICAgICAgICAgICAgfCBCb29sZWFuICAgICAgICAgIHxcbiAqIHwgU3RyaW5nIC8gRW51bSAgICAgICAgfCBTdHJpbmcgICAgICAgICAgIHxcbiAqIHwgSW50IC8gRmxvYXQgICAgICAgICAgfCBOdW1iZXIgICAgICAgICAgIHxcbiAqIHwgTnVsbCAgICAgICAgICAgICAgICAgfCBudWxsICAgICAgICAgICAgIHxcbiAqXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbUFTVFVudHlwZWQodmFsdWVOb2RlLCB2YXJpYWJsZXMpIHtcbiAgc3dpdGNoICh2YWx1ZU5vZGUua2luZCkge1xuICAgIGNhc2UgS2luZC5OVUxMOlxuICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICBjYXNlIEtpbmQuSU5UOlxuICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlTm9kZS52YWx1ZSwgMTApO1xuXG4gICAgY2FzZSBLaW5kLkZMT0FUOlxuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWVOb2RlLnZhbHVlKTtcblxuICAgIGNhc2UgS2luZC5TVFJJTkc6XG4gICAgY2FzZSBLaW5kLkVOVU06XG4gICAgY2FzZSBLaW5kLkJPT0xFQU46XG4gICAgICByZXR1cm4gdmFsdWVOb2RlLnZhbHVlO1xuXG4gICAgY2FzZSBLaW5kLkxJU1Q6XG4gICAgICByZXR1cm4gdmFsdWVOb2RlLnZhbHVlcy5tYXAoKG5vZGUpID0+XG4gICAgICAgIHZhbHVlRnJvbUFTVFVudHlwZWQobm9kZSwgdmFyaWFibGVzKSxcbiAgICAgICk7XG5cbiAgICBjYXNlIEtpbmQuT0JKRUNUOlxuICAgICAgcmV0dXJuIGtleVZhbE1hcChcbiAgICAgICAgdmFsdWVOb2RlLmZpZWxkcyxcbiAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lLnZhbHVlLFxuICAgICAgICAoZmllbGQpID0+IHZhbHVlRnJvbUFTVFVudHlwZWQoZmllbGQudmFsdWUsIHZhcmlhYmxlcyksXG4gICAgICApO1xuXG4gICAgY2FzZSBLaW5kLlZBUklBQkxFOlxuICAgICAgcmV0dXJuIHZhcmlhYmxlcyA9PT0gbnVsbCB8fCB2YXJpYWJsZXMgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IHZhcmlhYmxlc1t2YWx1ZU5vZGUubmFtZS52YWx1ZV07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/valueFromASTUntyped.mjs\n");
|
1165 |
|
1166 | }),
|
1167 |
|
1168 | "../../../node_modules/graphql/validation/ValidationContext.mjs":
|
1169 |
|
1170 |
|
1171 |
|
1172 |
|
1173 | (function(module, __webpack_exports__, __webpack_require__) {
|
1174 |
|
1175 | "use strict";
|
1176 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ASTValidationContext\", function() { return ASTValidationContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SDLValidationContext\", function() { return SDLValidationContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ValidationContext\", function() { return ValidationContext; });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var _utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utilities/TypeInfo.mjs */ \"../../../node_modules/graphql/utilities/TypeInfo.mjs\");\n\n\n\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nclass ASTValidationContext {\n constructor(ast, onError) {\n this._ast = ast;\n this._fragments = undefined;\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n this._onError = onError;\n }\n\n get [Symbol.toStringTag]() {\n return 'ASTValidationContext';\n }\n\n reportError(error) {\n this._onError(error);\n }\n\n getDocument() {\n return this._ast;\n }\n\n getFragment(name) {\n let fragments;\n\n if (this._fragments) {\n fragments = this._fragments;\n } else {\n fragments = Object.create(null);\n\n for (const defNode of this.getDocument().definitions) {\n if (defNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FRAGMENT_DEFINITION) {\n fragments[defNode.name.value] = defNode;\n }\n }\n\n this._fragments = fragments;\n }\n\n return fragments[name];\n }\n\n getFragmentSpreads(node) {\n let spreads = this._fragmentSpreads.get(node);\n\n if (!spreads) {\n spreads = [];\n const setsToVisit = [node];\n let set;\n\n while ((set = setsToVisit.pop())) {\n for (const selection of set.selections) {\n if (selection.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n\n this._fragmentSpreads.set(node, spreads);\n }\n\n return spreads;\n }\n\n getRecursivelyReferencedFragments(operation) {\n let fragments = this._recursivelyReferencedFragments.get(operation);\n\n if (!fragments) {\n fragments = [];\n const collectedNames = Object.create(null);\n const nodesToVisit = [operation.selectionSet];\n let node;\n\n while ((node = nodesToVisit.pop())) {\n for (const spread of this.getFragmentSpreads(node)) {\n const fragName = spread.name.value;\n\n if (collectedNames[fragName] !== true) {\n collectedNames[fragName] = true;\n const fragment = this.getFragment(fragName);\n\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n\n return fragments;\n }\n}\nclass SDLValidationContext extends ASTValidationContext {\n constructor(ast, schema, onError) {\n super(ast, onError);\n this._schema = schema;\n }\n\n get [Symbol.toStringTag]() {\n return 'SDLValidationContext';\n }\n\n getSchema() {\n return this._schema;\n }\n}\nclass ValidationContext extends ASTValidationContext {\n constructor(schema, ast, typeInfo, onError) {\n super(ast, onError);\n this._schema = schema;\n this._typeInfo = typeInfo;\n this._variableUsages = new Map();\n this._recursiveVariableUsages = new Map();\n }\n\n get [Symbol.toStringTag]() {\n return 'ValidationContext';\n }\n\n getSchema() {\n return this._schema;\n }\n\n getVariableUsages(node) {\n let usages = this._variableUsages.get(node);\n\n if (!usages) {\n const newUsages = [];\n const typeInfo = new _utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TypeInfo\"](this._schema);\n Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_1__[\"visit\"])(\n node,\n Object(_utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_2__[\"visitWithTypeInfo\"])(typeInfo, {\n VariableDefinition: () => false,\n\n Variable(variable) {\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n defaultValue: typeInfo.getDefaultValue(),\n });\n },\n }),\n );\n usages = newUsages;\n\n this._variableUsages.set(node, usages);\n }\n\n return usages;\n }\n\n getRecursiveVariableUsages(operation) {\n let usages = this._recursiveVariableUsages.get(operation);\n\n if (!usages) {\n usages = this.getVariableUsages(operation);\n\n for (const frag of this.getRecursivelyReferencedFragments(operation)) {\n usages = usages.concat(this.getVariableUsages(frag));\n }\n\n this._recursiveVariableUsages.set(operation, usages);\n }\n\n return usages;\n }\n\n getType() {\n return this._typeInfo.getType();\n }\n\n getParentType() {\n return this._typeInfo.getParentType();\n }\n\n getInputType() {\n return this._typeInfo.getInputType();\n }\n\n getParentInputType() {\n return this._typeInfo.getParentInputType();\n }\n\n getFieldDef() {\n return this._typeInfo.getFieldDef();\n }\n\n getDirective() {\n return this._typeInfo.getDirective();\n }\n\n getArgument() {\n return this._typeInfo.getArgument();\n }\n\n getEnumValue() {\n return this._typeInfo.getEnumValue();\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9WYWxpZGF0aW9uQ29udGV4dC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL1ZhbGlkYXRpb25Db250ZXh0Lm1qcz82MzlkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuaW1wb3J0IHsgdmlzaXQgfSBmcm9tICcuLi9sYW5ndWFnZS92aXNpdG9yLm1qcyc7XG5pbXBvcnQgeyBUeXBlSW5mbywgdmlzaXRXaXRoVHlwZUluZm8gfSBmcm9tICcuLi91dGlsaXRpZXMvVHlwZUluZm8ubWpzJztcblxuLyoqXG4gKiBBbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGlzIHBhc3NlZCBhcyB0aGUgXCJ0aGlzXCIgY29udGV4dCB0byBhbGwgdmFsaWRhdG9ycyxcbiAqIGFsbG93aW5nIGFjY2VzcyB0byBjb21tb25seSB1c2VmdWwgY29udGV4dHVhbCBpbmZvcm1hdGlvbiBmcm9tIHdpdGhpbiBhXG4gKiB2YWxpZGF0aW9uIHJ1bGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBU1RWYWxpZGF0aW9uQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGFzdCwgb25FcnJvcikge1xuICAgIHRoaXMuX2FzdCA9IGFzdDtcbiAgICB0aGlzLl9mcmFnbWVudHMgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fZnJhZ21lbnRTcHJlYWRzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX3JlY3Vyc2l2ZWx5UmVmZXJlbmNlZEZyYWdtZW50cyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9vbkVycm9yID0gb25FcnJvcjtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0FTVFZhbGlkYXRpb25Db250ZXh0JztcbiAgfVxuXG4gIHJlcG9ydEVycm9yKGVycm9yKSB7XG4gICAgdGhpcy5fb25FcnJvcihlcnJvcik7XG4gIH1cblxuICBnZXREb2N1bWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYXN0O1xuICB9XG5cbiAgZ2V0RnJhZ21lbnQobmFtZSkge1xuICAgIGxldCBmcmFnbWVudHM7XG5cbiAgICBpZiAodGhpcy5fZnJhZ21lbnRzKSB7XG4gICAgICBmcmFnbWVudHMgPSB0aGlzLl9mcmFnbWVudHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZyYWdtZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgIGZvciAoY29uc3QgZGVmTm9kZSBvZiB0aGlzLmdldERvY3VtZW50KCkuZGVmaW5pdGlvbnMpIHtcbiAgICAgICAgaWYgKGRlZk5vZGUua2luZCA9PT0gS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OKSB7XG4gICAgICAgICAgZnJhZ21lbnRzW2RlZk5vZGUubmFtZS52YWx1ZV0gPSBkZWZOb2RlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2ZyYWdtZW50cyA9IGZyYWdtZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhZ21lbnRzW25hbWVdO1xuICB9XG5cbiAgZ2V0RnJhZ21lbnRTcHJlYWRzKG5vZGUpIHtcbiAgICBsZXQgc3ByZWFkcyA9IHRoaXMuX2ZyYWdtZW50U3ByZWFkcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoIXNwcmVhZHMpIHtcbiAgICAgIHNwcmVhZHMgPSBbXTtcbiAgICAgIGNvbnN0IHNldHNUb1Zpc2l0ID0gW25vZGVdO1xuICAgICAgbGV0IHNldDtcblxuICAgICAgd2hpbGUgKChzZXQgPSBzZXRzVG9WaXNpdC5wb3AoKSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBzZWxlY3Rpb24gb2Ygc2V0LnNlbGVjdGlvbnMpIHtcbiAgICAgICAgICBpZiAoc2VsZWN0aW9uLmtpbmQgPT09IEtpbmQuRlJBR01FTlRfU1BSRUFEKSB7XG4gICAgICAgICAgICBzcHJlYWRzLnB1c2goc2VsZWN0aW9uKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbi5zZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgIHNldHNUb1Zpc2l0LnB1c2goc2VsZWN0aW9uLnNlbGVjdGlvblNldCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2ZyYWdtZW50U3ByZWFkcy5zZXQobm9kZSwgc3ByZWFkcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNwcmVhZHM7XG4gIH1cblxuICBnZXRSZWN1cnNpdmVseVJlZmVyZW5jZWRGcmFnbWVudHMob3BlcmF0aW9uKSB7XG4gICAgbGV0IGZyYWdtZW50cyA9IHRoaXMuX3JlY3Vyc2l2ZWx5UmVmZXJlbmNlZEZyYWdtZW50cy5nZXQob3BlcmF0aW9uKTtcblxuICAgIGlmICghZnJhZ21lbnRzKSB7XG4gICAgICBmcmFnbWVudHMgPSBbXTtcbiAgICAgIGNvbnN0IGNvbGxlY3RlZE5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIGNvbnN0IG5vZGVzVG9WaXNpdCA9IFtvcGVyYXRpb24uc2VsZWN0aW9uU2V0XTtcbiAgICAgIGxldCBub2RlO1xuXG4gICAgICB3aGlsZSAoKG5vZGUgPSBub2Rlc1RvVmlzaXQucG9wKCkpKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc3ByZWFkIG9mIHRoaXMuZ2V0RnJhZ21lbnRTcHJlYWRzKG5vZGUpKSB7XG4gICAgICAgICAgY29uc3QgZnJhZ05hbWUgPSBzcHJlYWQubmFtZS52YWx1ZTtcblxuICAgICAgICAgIGlmIChjb2xsZWN0ZWROYW1lc1tmcmFnTmFtZV0gIT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbGxlY3RlZE5hbWVzW2ZyYWdOYW1lXSA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBmcmFnbWVudCA9IHRoaXMuZ2V0RnJhZ21lbnQoZnJhZ05hbWUpO1xuXG4gICAgICAgICAgICBpZiAoZnJhZ21lbnQpIHtcbiAgICAgICAgICAgICAgZnJhZ21lbnRzLnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICBub2Rlc1RvVmlzaXQucHVzaChmcmFnbWVudC5zZWxlY3Rpb25TZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9yZWN1cnNpdmVseVJlZmVyZW5jZWRGcmFnbWVudHMuc2V0KG9wZXJhdGlvbiwgZnJhZ21lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhZ21lbnRzO1xuICB9XG59XG5leHBvcnQgY2xhc3MgU0RMVmFsaWRhdGlvbkNvbnRleHQgZXh0ZW5kcyBBU1RWYWxpZGF0aW9uQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGFzdCwgc2NoZW1hLCBvbkVycm9yKSB7XG4gICAgc3VwZXIoYXN0LCBvbkVycm9yKTtcbiAgICB0aGlzLl9zY2hlbWEgPSBzY2hlbWE7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdTRExWYWxpZGF0aW9uQ29udGV4dCc7XG4gIH1cblxuICBnZXRTY2hlbWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NjaGVtYTtcbiAgfVxufVxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25Db250ZXh0IGV4dGVuZHMgQVNUVmFsaWRhdGlvbkNvbnRleHQge1xuICBjb25zdHJ1Y3RvcihzY2hlbWEsIGFzdCwgdHlwZUluZm8sIG9uRXJyb3IpIHtcbiAgICBzdXBlcihhc3QsIG9uRXJyb3IpO1xuICAgIHRoaXMuX3NjaGVtYSA9IHNjaGVtYTtcbiAgICB0aGlzLl90eXBlSW5mbyA9IHR5cGVJbmZvO1xuICAgIHRoaXMuX3ZhcmlhYmxlVXNhZ2VzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX3JlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzID0gbmV3IE1hcCgpO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnVmFsaWRhdGlvbkNvbnRleHQnO1xuICB9XG5cbiAgZ2V0U2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLl9zY2hlbWE7XG4gIH1cblxuICBnZXRWYXJpYWJsZVVzYWdlcyhub2RlKSB7XG4gICAgbGV0IHVzYWdlcyA9IHRoaXMuX3ZhcmlhYmxlVXNhZ2VzLmdldChub2RlKTtcblxuICAgIGlmICghdXNhZ2VzKSB7XG4gICAgICBjb25zdCBuZXdVc2FnZXMgPSBbXTtcbiAgICAgIGNvbnN0IHR5cGVJbmZvID0gbmV3IFR5cGVJbmZvKHRoaXMuX3NjaGVtYSk7XG4gICAgICB2aXNpdChcbiAgICAgICAgbm9kZSxcbiAgICAgICAgdmlzaXRXaXRoVHlwZUluZm8odHlwZUluZm8sIHtcbiAgICAgICAgICBWYXJpYWJsZURlZmluaXRpb246ICgpID0+IGZhbHNlLFxuXG4gICAgICAgICAgVmFyaWFibGUodmFyaWFibGUpIHtcbiAgICAgICAgICAgIG5ld1VzYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgbm9kZTogdmFyaWFibGUsXG4gICAgICAgICAgICAgIHR5cGU6IHR5cGVJbmZvLmdldElucHV0VHlwZSgpLFxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHR5cGVJbmZvLmdldERlZmF1bHRWYWx1ZSgpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgICAgdXNhZ2VzID0gbmV3VXNhZ2VzO1xuXG4gICAgICB0aGlzLl92YXJpYWJsZVVzYWdlcy5zZXQobm9kZSwgdXNhZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNhZ2VzO1xuICB9XG5cbiAgZ2V0UmVjdXJzaXZlVmFyaWFibGVVc2FnZXMob3BlcmF0aW9uKSB7XG4gICAgbGV0IHVzYWdlcyA9IHRoaXMuX3JlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzLmdldChvcGVyYXRpb24pO1xuXG4gICAgaWYgKCF1c2FnZXMpIHtcbiAgICAgIHVzYWdlcyA9IHRoaXMuZ2V0VmFyaWFibGVVc2FnZXMob3BlcmF0aW9uKTtcblxuICAgICAgZm9yIChjb25zdCBmcmFnIG9mIHRoaXMuZ2V0UmVjdXJzaXZlbHlSZWZlcmVuY2VkRnJhZ21lbnRzKG9wZXJhdGlvbikpIHtcbiAgICAgICAgdXNhZ2VzID0gdXNhZ2VzLmNvbmNhdCh0aGlzLmdldFZhcmlhYmxlVXNhZ2VzKGZyYWcpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVjdXJzaXZlVmFyaWFibGVVc2FnZXMuc2V0KG9wZXJhdGlvbiwgdXNhZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNhZ2VzO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0VHlwZSgpO1xuICB9XG5cbiAgZ2V0UGFyZW50VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0UGFyZW50VHlwZSgpO1xuICB9XG5cbiAgZ2V0SW5wdXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl90eXBlSW5mby5nZXRJbnB1dFR5cGUoKTtcbiAgfVxuXG4gIGdldFBhcmVudElucHV0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0UGFyZW50SW5wdXRUeXBlKCk7XG4gIH1cblxuICBnZXRGaWVsZERlZigpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0RmllbGREZWYoKTtcbiAgfVxuXG4gIGdldERpcmVjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0RGlyZWN0aXZlKCk7XG4gIH1cblxuICBnZXRBcmd1bWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0QXJndW1lbnQoKTtcbiAgfVxuXG4gIGdldEVudW1WYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0RW51bVZhbHVlKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/ValidationContext.mjs\n");
|
1177 |
|
1178 | }),
|
1179 |
|
1180 | "../../../node_modules/graphql/validation/index.mjs":
|
1181 |
|
1182 |
|
1183 |
|
1184 |
|
1185 | (function(module, __webpack_exports__, __webpack_require__) {
|
1186 |
|
1187 | "use strict";
|
1188 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validate_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"validate\", function() { return _validate_mjs__WEBPACK_IMPORTED_MODULE_0__[\"validate\"]; });\n\n/* harmony import */ var _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ValidationContext.mjs */ \"../../../node_modules/graphql/validation/ValidationContext.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ValidationContext\", function() { return _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_1__[\"ValidationContext\"]; });\n\n/* harmony import */ var _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./specifiedRules.mjs */ \"../../../node_modules/graphql/validation/specifiedRules.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"specifiedRules\", function() { return _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_2__[\"specifiedRules\"]; });\n\n/* harmony import */ var _rules_ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rules/ExecutableDefinitionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ExecutableDefinitionsRule\", function() { return _rules_ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_3__[\"ExecutableDefinitionsRule\"]; });\n\n/* harmony import */ var _rules_FieldsOnCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rules/FieldsOnCorrectTypeRule.mjs */ \"../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FieldsOnCorrectTypeRule\", function() { return _rules_FieldsOnCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_4__[\"FieldsOnCorrectTypeRule\"]; });\n\n/* harmony import */ var _rules_FragmentsOnCompositeTypesRule_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./rules/FragmentsOnCompositeTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FragmentsOnCompositeTypesRule\", function() { return _rules_FragmentsOnCompositeTypesRule_mjs__WEBPACK_IMPORTED_MODULE_5__[\"FragmentsOnCompositeTypesRule\"]; });\n\n/* harmony import */ var _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./rules/KnownArgumentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownArgumentNamesRule\", function() { return _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_6__[\"KnownArgumentNamesRule\"]; });\n\n/* harmony import */ var _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./rules/KnownDirectivesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownDirectivesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownDirectivesRule\", function() { return _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_7__[\"KnownDirectivesRule\"]; });\n\n/* harmony import */ var _rules_KnownFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rules/KnownFragmentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownFragmentNamesRule\", function() { return _rules_KnownFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_8__[\"KnownFragmentNamesRule\"]; });\n\n/* harmony import */ var _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rules/KnownTypeNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownTypeNamesRule\", function() { return _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_9__[\"KnownTypeNamesRule\"]; });\n\n/* harmony import */ var _rules_LoneAnonymousOperationRule_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rules/LoneAnonymousOperationRule.mjs */ \"../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LoneAnonymousOperationRule\", function() { return _rules_LoneAnonymousOperationRule_mjs__WEBPACK_IMPORTED_MODULE_10__[\"LoneAnonymousOperationRule\"]; });\n\n/* harmony import */ var _rules_NoFragmentCyclesRule_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rules/NoFragmentCyclesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoFragmentCyclesRule\", function() { return _rules_NoFragmentCyclesRule_mjs__WEBPACK_IMPORTED_MODULE_11__[\"NoFragmentCyclesRule\"]; });\n\n/* harmony import */ var _rules_NoUndefinedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rules/NoUndefinedVariablesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoUndefinedVariablesRule\", function() { return _rules_NoUndefinedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_12__[\"NoUndefinedVariablesRule\"]; });\n\n/* harmony import */ var _rules_NoUnusedFragmentsRule_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rules/NoUnusedFragmentsRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoUnusedFragmentsRule\", function() { return _rules_NoUnusedFragmentsRule_mjs__WEBPACK_IMPORTED_MODULE_13__[\"NoUnusedFragmentsRule\"]; });\n\n/* harmony import */ var _rules_NoUnusedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rules/NoUnusedVariablesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoUnusedVariablesRule\", function() { return _rules_NoUnusedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_14__[\"NoUnusedVariablesRule\"]; });\n\n/* harmony import */ var _rules_OverlappingFieldsCanBeMergedRule_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./rules/OverlappingFieldsCanBeMergedRule.mjs */ \"../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OverlappingFieldsCanBeMergedRule\", function() { return _rules_OverlappingFieldsCanBeMergedRule_mjs__WEBPACK_IMPORTED_MODULE_15__[\"OverlappingFieldsCanBeMergedRule\"]; });\n\n/* harmony import */ var _rules_PossibleFragmentSpreadsRule_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./rules/PossibleFragmentSpreadsRule.mjs */ \"../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PossibleFragmentSpreadsRule\", function() { return _rules_PossibleFragmentSpreadsRule_mjs__WEBPACK_IMPORTED_MODULE_16__[\"PossibleFragmentSpreadsRule\"]; });\n\n/* harmony import */ var _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./rules/ProvidedRequiredArgumentsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ProvidedRequiredArgumentsRule\", function() { return _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_17__[\"ProvidedRequiredArgumentsRule\"]; });\n\n/* harmony import */ var _rules_ScalarLeafsRule_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./rules/ScalarLeafsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ScalarLeafsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ScalarLeafsRule\", function() { return _rules_ScalarLeafsRule_mjs__WEBPACK_IMPORTED_MODULE_18__[\"ScalarLeafsRule\"]; });\n\n/* harmony import */ var _rules_SingleFieldSubscriptionsRule_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./rules/SingleFieldSubscriptionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SingleFieldSubscriptionsRule\", function() { return _rules_SingleFieldSubscriptionsRule_mjs__WEBPACK_IMPORTED_MODULE_19__[\"SingleFieldSubscriptionsRule\"]; });\n\n/* harmony import */ var _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./rules/UniqueArgumentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueArgumentNamesRule\", function() { return _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__[\"UniqueArgumentNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./rules/UniqueDirectivesPerLocationRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueDirectivesPerLocationRule\", function() { return _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_21__[\"UniqueDirectivesPerLocationRule\"]; });\n\n/* harmony import */ var _rules_UniqueFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./rules/UniqueFragmentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueFragmentNamesRule\", function() { return _rules_UniqueFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_22__[\"UniqueFragmentNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./rules/UniqueInputFieldNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueInputFieldNamesRule\", function() { return _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_23__[\"UniqueInputFieldNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueOperationNamesRule_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./rules/UniqueOperationNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueOperationNamesRule\", function() { return _rules_UniqueOperationNamesRule_mjs__WEBPACK_IMPORTED_MODULE_24__[\"UniqueOperationNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueVariableNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./rules/UniqueVariableNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueVariableNamesRule\", function() { return _rules_UniqueVariableNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__[\"UniqueVariableNamesRule\"]; });\n\n/* harmony import */ var _rules_ValuesOfCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./rules/ValuesOfCorrectTypeRule.mjs */ \"../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ValuesOfCorrectTypeRule\", function() { return _rules_ValuesOfCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_26__[\"ValuesOfCorrectTypeRule\"]; });\n\n/* harmony import */ var _rules_VariablesAreInputTypesRule_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./rules/VariablesAreInputTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VariablesAreInputTypesRule\", function() { return _rules_VariablesAreInputTypesRule_mjs__WEBPACK_IMPORTED_MODULE_27__[\"VariablesAreInputTypesRule\"]; });\n\n/* harmony import */ var _rules_VariablesInAllowedPositionRule_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./rules/VariablesInAllowedPositionRule.mjs */ \"../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VariablesInAllowedPositionRule\", function() { return _rules_VariablesInAllowedPositionRule_mjs__WEBPACK_IMPORTED_MODULE_28__[\"VariablesInAllowedPositionRule\"]; });\n\n/* harmony import */ var _rules_LoneSchemaDefinitionRule_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./rules/LoneSchemaDefinitionRule.mjs */ \"../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LoneSchemaDefinitionRule\", function() { return _rules_LoneSchemaDefinitionRule_mjs__WEBPACK_IMPORTED_MODULE_29__[\"LoneSchemaDefinitionRule\"]; });\n\n/* harmony import */ var _rules_UniqueOperationTypesRule_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./rules/UniqueOperationTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueOperationTypesRule\", function() { return _rules_UniqueOperationTypesRule_mjs__WEBPACK_IMPORTED_MODULE_30__[\"UniqueOperationTypesRule\"]; });\n\n/* harmony import */ var _rules_UniqueTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./rules/UniqueTypeNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueTypeNamesRule\", function() { return _rules_UniqueTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_31__[\"UniqueTypeNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueEnumValueNamesRule_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./rules/UniqueEnumValueNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueEnumValueNamesRule\", function() { return _rules_UniqueEnumValueNamesRule_mjs__WEBPACK_IMPORTED_MODULE_32__[\"UniqueEnumValueNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueFieldDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./rules/UniqueFieldDefinitionNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueFieldDefinitionNamesRule\", function() { return _rules_UniqueFieldDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_33__[\"UniqueFieldDefinitionNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueArgumentDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./rules/UniqueArgumentDefinitionNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueArgumentDefinitionNamesRule\", function() { return _rules_UniqueArgumentDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_34__[\"UniqueArgumentDefinitionNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueDirectiveNamesRule_mjs__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./rules/UniqueDirectiveNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueDirectiveNamesRule\", function() { return _rules_UniqueDirectiveNamesRule_mjs__WEBPACK_IMPORTED_MODULE_35__[\"UniqueDirectiveNamesRule\"]; });\n\n/* harmony import */ var _rules_PossibleTypeExtensionsRule_mjs__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./rules/PossibleTypeExtensionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PossibleTypeExtensionsRule\", function() { return _rules_PossibleTypeExtensionsRule_mjs__WEBPACK_IMPORTED_MODULE_36__[\"PossibleTypeExtensionsRule\"]; });\n\n/* harmony import */ var _rules_custom_NoDeprecatedCustomRule_mjs__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./rules/custom/NoDeprecatedCustomRule.mjs */ \"../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoDeprecatedCustomRule\", function() { return _rules_custom_NoDeprecatedCustomRule_mjs__WEBPACK_IMPORTED_MODULE_37__[\"NoDeprecatedCustomRule\"]; });\n\n/* harmony import */ var _rules_custom_NoSchemaIntrospectionCustomRule_mjs__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./rules/custom/NoSchemaIntrospectionCustomRule.mjs */ \"../../../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoSchemaIntrospectionCustomRule\", function() { return _rules_custom_NoSchemaIntrospectionCustomRule_mjs__WEBPACK_IMPORTED_MODULE_38__[\"NoSchemaIntrospectionCustomRule\"]; });\n\n\n\n// All validation rules in the GraphQL Specification.\n // Spec Section: \"Executable Definitions\"\n\n // Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n\n // Spec Section: \"Fragments on Composite Types\"\n\n // Spec Section: \"Argument Names\"\n\n // Spec Section: \"Directives Are Defined\"\n\n // Spec Section: \"Fragment spread target defined\"\n\n // Spec Section: \"Fragment Spread Type Existence\"\n\n // Spec Section: \"Lone Anonymous Operation\"\n\n // Spec Section: \"Fragments must not form cycles\"\n\n // Spec Section: \"All Variable Used Defined\"\n\n // Spec Section: \"Fragments must be used\"\n\n // Spec Section: \"All Variables Used\"\n\n // Spec Section: \"Field Selection Merging\"\n\n // Spec Section: \"Fragment spread is possible\"\n\n // Spec Section: \"Argument Optionality\"\n\n // Spec Section: \"Leaf Field Selections\"\n\n // Spec Section: \"Subscriptions with Single Root Field\"\n\n // Spec Section: \"Argument Uniqueness\"\n\n // Spec Section: \"Directives Are Unique Per Location\"\n\n // Spec Section: \"Fragment Name Uniqueness\"\n\n // Spec Section: \"Input Object Field Uniqueness\"\n\n // Spec Section: \"Operation Name Uniqueness\"\n\n // Spec Section: \"Variable Uniqueness\"\n\n // Spec Section: \"Values Type Correctness\"\n\n // Spec Section: \"Variables are Input Types\"\n\n // Spec Section: \"All Variable Usages Are Allowed\"\n\n // SDL-specific validation rules\n\n\n\n\n\n\n\n\n // Optional rules not defined by the GraphQL Specification\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9pbmRleC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL2luZGV4Lm1qcz83NmU2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHZhbGlkYXRlIH0gZnJvbSAnLi92YWxpZGF0ZS5tanMnO1xuZXhwb3J0IHsgVmFsaWRhdGlvbkNvbnRleHQgfSBmcm9tICcuL1ZhbGlkYXRpb25Db250ZXh0Lm1qcyc7XG4vLyBBbGwgdmFsaWRhdGlvbiBydWxlcyBpbiB0aGUgR3JhcGhRTCBTcGVjaWZpY2F0aW9uLlxuZXhwb3J0IHsgc3BlY2lmaWVkUnVsZXMgfSBmcm9tICcuL3NwZWNpZmllZFJ1bGVzLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJFeGVjdXRhYmxlIERlZmluaXRpb25zXCJcblxuZXhwb3J0IHsgRXhlY3V0YWJsZURlZmluaXRpb25zUnVsZSB9IGZyb20gJy4vcnVsZXMvRXhlY3V0YWJsZURlZmluaXRpb25zUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRmllbGQgU2VsZWN0aW9ucyBvbiBPYmplY3RzLCBJbnRlcmZhY2VzLCBhbmQgVW5pb25zIFR5cGVzXCJcblxuZXhwb3J0IHsgRmllbGRzT25Db3JyZWN0VHlwZVJ1bGUgfSBmcm9tICcuL3J1bGVzL0ZpZWxkc09uQ29ycmVjdFR5cGVSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudHMgb24gQ29tcG9zaXRlIFR5cGVzXCJcblxuZXhwb3J0IHsgRnJhZ21lbnRzT25Db21wb3NpdGVUeXBlc1J1bGUgfSBmcm9tICcuL3J1bGVzL0ZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJBcmd1bWVudCBOYW1lc1wiXG5cbmV4cG9ydCB7IEtub3duQXJndW1lbnROYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL0tub3duQXJndW1lbnROYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkRpcmVjdGl2ZXMgQXJlIERlZmluZWRcIlxuXG5leHBvcnQgeyBLbm93bkRpcmVjdGl2ZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9Lbm93bkRpcmVjdGl2ZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudCBzcHJlYWQgdGFyZ2V0IGRlZmluZWRcIlxuXG5leHBvcnQgeyBLbm93bkZyYWdtZW50TmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9Lbm93bkZyYWdtZW50TmFtZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudCBTcHJlYWQgVHlwZSBFeGlzdGVuY2VcIlxuXG5leHBvcnQgeyBLbm93blR5cGVOYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL0tub3duVHlwZU5hbWVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiTG9uZSBBbm9ueW1vdXMgT3BlcmF0aW9uXCJcblxuZXhwb3J0IHsgTG9uZUFub255bW91c09wZXJhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL0xvbmVBbm9ueW1vdXNPcGVyYXRpb25SdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudHMgbXVzdCBub3QgZm9ybSBjeWNsZXNcIlxuXG5leHBvcnQgeyBOb0ZyYWdtZW50Q3ljbGVzUnVsZSB9IGZyb20gJy4vcnVsZXMvTm9GcmFnbWVudEN5Y2xlc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkFsbCBWYXJpYWJsZSBVc2VkIERlZmluZWRcIlxuXG5leHBvcnQgeyBOb1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUgfSBmcm9tICcuL3J1bGVzL05vVW5kZWZpbmVkVmFyaWFibGVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnRzIG11c3QgYmUgdXNlZFwiXG5cbmV4cG9ydCB7IE5vVW51c2VkRnJhZ21lbnRzUnVsZSB9IGZyb20gJy4vcnVsZXMvTm9VbnVzZWRGcmFnbWVudHNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJBbGwgVmFyaWFibGVzIFVzZWRcIlxuXG5leHBvcnQgeyBOb1VudXNlZFZhcmlhYmxlc1J1bGUgfSBmcm9tICcuL3J1bGVzL05vVW51c2VkVmFyaWFibGVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRmllbGQgU2VsZWN0aW9uIE1lcmdpbmdcIlxuXG5leHBvcnQgeyBPdmVybGFwcGluZ0ZpZWxkc0NhbkJlTWVyZ2VkUnVsZSB9IGZyb20gJy4vcnVsZXMvT3ZlcmxhcHBpbmdGaWVsZHNDYW5CZU1lcmdlZFJ1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50IHNwcmVhZCBpcyBwb3NzaWJsZVwiXG5cbmV4cG9ydCB7IFBvc3NpYmxlRnJhZ21lbnRTcHJlYWRzUnVsZSB9IGZyb20gJy4vcnVsZXMvUG9zc2libGVGcmFnbWVudFNwcmVhZHNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJBcmd1bWVudCBPcHRpb25hbGl0eVwiXG5cbmV4cG9ydCB7IFByb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNSdWxlIH0gZnJvbSAnLi9ydWxlcy9Qcm92aWRlZFJlcXVpcmVkQXJndW1lbnRzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiTGVhZiBGaWVsZCBTZWxlY3Rpb25zXCJcblxuZXhwb3J0IHsgU2NhbGFyTGVhZnNSdWxlIH0gZnJvbSAnLi9ydWxlcy9TY2FsYXJMZWFmc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIlN1YnNjcmlwdGlvbnMgd2l0aCBTaW5nbGUgUm9vdCBGaWVsZFwiXG5cbmV4cG9ydCB7IFNpbmdsZUZpZWxkU3Vic2NyaXB0aW9uc1J1bGUgfSBmcm9tICcuL3J1bGVzL1NpbmdsZUZpZWxkU3Vic2NyaXB0aW9uc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkFyZ3VtZW50IFVuaXF1ZW5lc3NcIlxuXG5leHBvcnQgeyBVbmlxdWVBcmd1bWVudE5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlQXJndW1lbnROYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkRpcmVjdGl2ZXMgQXJlIFVuaXF1ZSBQZXIgTG9jYXRpb25cIlxuXG5leHBvcnQgeyBVbmlxdWVEaXJlY3RpdmVzUGVyTG9jYXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVEaXJlY3RpdmVzUGVyTG9jYXRpb25SdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudCBOYW1lIFVuaXF1ZW5lc3NcIlxuXG5leHBvcnQgeyBVbmlxdWVGcmFnbWVudE5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlRnJhZ21lbnROYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIklucHV0IE9iamVjdCBGaWVsZCBVbmlxdWVuZXNzXCJcblxuZXhwb3J0IHsgVW5pcXVlSW5wdXRGaWVsZE5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlSW5wdXRGaWVsZE5hbWVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiT3BlcmF0aW9uIE5hbWUgVW5pcXVlbmVzc1wiXG5cbmV4cG9ydCB7IFVuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlT3BlcmF0aW9uTmFtZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJWYXJpYWJsZSBVbmlxdWVuZXNzXCJcblxuZXhwb3J0IHsgVW5pcXVlVmFyaWFibGVOYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZVZhcmlhYmxlTmFtZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJWYWx1ZXMgVHlwZSBDb3JyZWN0bmVzc1wiXG5cbmV4cG9ydCB7IFZhbHVlc09mQ29ycmVjdFR5cGVSdWxlIH0gZnJvbSAnLi9ydWxlcy9WYWx1ZXNPZkNvcnJlY3RUeXBlUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiVmFyaWFibGVzIGFyZSBJbnB1dCBUeXBlc1wiXG5cbmV4cG9ydCB7IFZhcmlhYmxlc0FyZUlucHV0VHlwZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9WYXJpYWJsZXNBcmVJbnB1dFR5cGVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiQWxsIFZhcmlhYmxlIFVzYWdlcyBBcmUgQWxsb3dlZFwiXG5cbmV4cG9ydCB7IFZhcmlhYmxlc0luQWxsb3dlZFBvc2l0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvVmFyaWFibGVzSW5BbGxvd2VkUG9zaXRpb25SdWxlLm1qcyc7IC8vIFNETC1zcGVjaWZpYyB2YWxpZGF0aW9uIHJ1bGVzXG5cbmV4cG9ydCB7IExvbmVTY2hlbWFEZWZpbml0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvTG9uZVNjaGVtYURlZmluaXRpb25SdWxlLm1qcyc7XG5leHBvcnQgeyBVbmlxdWVPcGVyYXRpb25UeXBlc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZU9wZXJhdGlvblR5cGVzUnVsZS5tanMnO1xuZXhwb3J0IHsgVW5pcXVlVHlwZU5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlVHlwZU5hbWVzUnVsZS5tanMnO1xuZXhwb3J0IHsgVW5pcXVlRW51bVZhbHVlTmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVFbnVtVmFsdWVOYW1lc1J1bGUubWpzJztcbmV4cG9ydCB7IFVuaXF1ZUZpZWxkRGVmaW5pdGlvbk5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlRmllbGREZWZpbml0aW9uTmFtZXNSdWxlLm1qcyc7XG5leHBvcnQgeyBVbmlxdWVBcmd1bWVudERlZmluaXRpb25OYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZUFyZ3VtZW50RGVmaW5pdGlvbk5hbWVzUnVsZS5tanMnO1xuZXhwb3J0IHsgVW5pcXVlRGlyZWN0aXZlTmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUubWpzJztcbmV4cG9ydCB7IFBvc3NpYmxlVHlwZUV4dGVuc2lvbnNSdWxlIH0gZnJvbSAnLi9ydWxlcy9Qb3NzaWJsZVR5cGVFeHRlbnNpb25zUnVsZS5tanMnOyAvLyBPcHRpb25hbCBydWxlcyBub3QgZGVmaW5lZCBieSB0aGUgR3JhcGhRTCBTcGVjaWZpY2F0aW9uXG5cbmV4cG9ydCB7IE5vRGVwcmVjYXRlZEN1c3RvbVJ1bGUgfSBmcm9tICcuL3J1bGVzL2N1c3RvbS9Ob0RlcHJlY2F0ZWRDdXN0b21SdWxlLm1qcyc7XG5leHBvcnQgeyBOb1NjaGVtYUludHJvc3BlY3Rpb25DdXN0b21SdWxlIH0gZnJvbSAnLi9ydWxlcy9jdXN0b20vTm9TY2hlbWFJbnRyb3NwZWN0aW9uQ3VzdG9tUnVsZS5tanMnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/index.mjs\n");
|
1189 |
|
1190 | }),
|
1191 |
|
1192 | "../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs":
|
1193 |
|
1194 |
|
1195 |
|
1196 |
|
1197 | (function(module, __webpack_exports__, __webpack_require__) {
|
1198 |
|
1199 | "use strict";
|
1200 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ExecutableDefinitionsRule\", function() { return ExecutableDefinitionsRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../language/predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n\n\n\n\n/**\n * Executable definitions\n *\n * A GraphQL document is only valid for execution if all definitions are either\n * operation or fragment definitions.\n *\n * See https://spec.graphql.org/draft/#sec-Executable-Definitions\n */\nfunction ExecutableDefinitionsRule(context) {\n return {\n Document(node) {\n for (const definition of node.definitions) {\n if (!Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isExecutableDefinitionNode\"])(definition)) {\n const defName =\n definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SCHEMA_DEFINITION ||\n definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SCHEMA_EXTENSION\n ? 'schema'\n : '\"' + definition.name.value + '\"';\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](`The ${defName} definition is not executable.`, {\n nodes: definition,\n }),\n );\n }\n }\n\n return false;\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9FeGVjdXRhYmxlRGVmaW5pdGlvbnNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvRXhlY3V0YWJsZURlZmluaXRpb25zUnVsZS5tanM/ZjU2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuaW1wb3J0IHsgaXNFeGVjdXRhYmxlRGVmaW5pdGlvbk5vZGUgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9wcmVkaWNhdGVzLm1qcyc7XG5cbi8qKlxuICogRXhlY3V0YWJsZSBkZWZpbml0aW9uc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGZvciBleGVjdXRpb24gaWYgYWxsIGRlZmluaXRpb25zIGFyZSBlaXRoZXJcbiAqIG9wZXJhdGlvbiBvciBmcmFnbWVudCBkZWZpbml0aW9ucy5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtRXhlY3V0YWJsZS1EZWZpbml0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gRXhlY3V0YWJsZURlZmluaXRpb25zUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgRG9jdW1lbnQobm9kZSkge1xuICAgICAgZm9yIChjb25zdCBkZWZpbml0aW9uIG9mIG5vZGUuZGVmaW5pdGlvbnMpIHtcbiAgICAgICAgaWYgKCFpc0V4ZWN1dGFibGVEZWZpbml0aW9uTm9kZShkZWZpbml0aW9uKSkge1xuICAgICAgICAgIGNvbnN0IGRlZk5hbWUgPVxuICAgICAgICAgICAgZGVmaW5pdGlvbi5raW5kID09PSBLaW5kLlNDSEVNQV9ERUZJTklUSU9OIHx8XG4gICAgICAgICAgICBkZWZpbml0aW9uLmtpbmQgPT09IEtpbmQuU0NIRU1BX0VYVEVOU0lPTlxuICAgICAgICAgICAgICA/ICdzY2hlbWEnXG4gICAgICAgICAgICAgIDogJ1wiJyArIGRlZmluaXRpb24ubmFtZS52YWx1ZSArICdcIic7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoYFRoZSAke2RlZk5hbWV9IGRlZmluaXRpb24gaXMgbm90IGV4ZWN1dGFibGUuYCwge1xuICAgICAgICAgICAgICBub2RlczogZGVmaW5pdGlvbixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\n");
|
1201 |
|
1202 | }),
|
1203 |
|
1204 | "../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs":
|
1205 |
|
1206 |
|
1207 |
|
1208 |
|
1209 | (function(module, __webpack_exports__, __webpack_require__) {
|
1210 |
|
1211 | "use strict";
|
1212 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FieldsOnCorrectTypeRule\", function() { return FieldsOnCorrectTypeRule; });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/naturalCompare.mjs */ \"../../../node_modules/graphql/jsutils/naturalCompare.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n/**\n * Fields on correct type\n *\n * A GraphQL document is only valid if all fields selected are defined by the\n * parent type, or are an allowed meta field such as __typename.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selections\n */\nfunction FieldsOnCorrectTypeRule(context) {\n return {\n Field(node) {\n const type = context.getParentType();\n\n if (type) {\n const fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n // This field doesn't exist, lets look for suggestions.\n const schema = context.getSchema();\n const fieldName = node.name.value; // First determine if there are any suggested types to condition on.\n\n let suggestion = Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__[\"didYouMean\"])(\n 'to use an inline fragment on',\n getSuggestedTypeNames(schema, type, fieldName),\n ); // If there are no suggested types, then perhaps this was a typo?\n\n if (suggestion === '') {\n suggestion = Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__[\"didYouMean\"])(getSuggestedFieldNames(type, fieldName));\n } // Report an error, including helpful suggestions.\n\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](\n `Cannot query field \"${fieldName}\" on type \"${type.name}\".` +\n suggestion,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n };\n}\n/**\n * Go through all of the implementations of type, as well as the interfaces that\n * they implement. If any of those types include the provided field, suggest them,\n * sorted by how often the type is referenced.\n */\n\nfunction getSuggestedTypeNames(schema, type, fieldName) {\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isAbstractType\"])(type)) {\n // Must be an Object type, which does not have possible fields.\n return [];\n }\n\n const suggestedTypes = new Set();\n const usageCount = Object.create(null);\n\n for (const possibleType of schema.getPossibleTypes(type)) {\n if (!possibleType.getFields()[fieldName]) {\n continue;\n } // This object type defines this field.\n\n suggestedTypes.add(possibleType);\n usageCount[possibleType.name] = 1;\n\n for (const possibleInterface of possibleType.getInterfaces()) {\n var _usageCount$possibleI;\n\n if (!possibleInterface.getFields()[fieldName]) {\n continue;\n } // This interface type defines this field.\n\n suggestedTypes.add(possibleInterface);\n usageCount[possibleInterface.name] =\n ((_usageCount$possibleI = usageCount[possibleInterface.name]) !==\n null && _usageCount$possibleI !== void 0\n ? _usageCount$possibleI\n : 0) + 1;\n }\n }\n\n return [...suggestedTypes]\n .sort((typeA, typeB) => {\n // Suggest both interface and object types based on how common they are.\n const usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name];\n\n if (usageCountDiff !== 0) {\n return usageCountDiff;\n } // Suggest super types first followed by subtypes\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(typeA) && schema.isSubType(typeA, typeB)) {\n return -1;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(typeB) && schema.isSubType(typeB, typeA)) {\n return 1;\n }\n\n return Object(_jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_1__[\"naturalCompare\"])(typeA.name, typeB.name);\n })\n .map((x) => x.name);\n}\n/**\n * For the field name provided, determine if there are any similar field names\n * that may be the result of a typo.\n */\n\nfunction getSuggestedFieldNames(type, fieldName) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(type) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(type)) {\n const possibleFieldNames = Object.keys(type.getFields());\n return Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_2__[\"suggestionList\"])(fieldName, possibleFieldNames);\n } // Otherwise, must be a Union type, which does not define fields.\n\n return [];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9GaWVsZHNPbkNvcnJlY3RUeXBlUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0ZpZWxkc09uQ29ycmVjdFR5cGVSdWxlLm1qcz85Zjk0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpZFlvdU1lYW4gfSBmcm9tICcuLi8uLi9qc3V0aWxzL2RpZFlvdU1lYW4ubWpzJztcbmltcG9ydCB7IG5hdHVyYWxDb21wYXJlIH0gZnJvbSAnLi4vLi4vanN1dGlscy9uYXR1cmFsQ29tcGFyZS5tanMnO1xuaW1wb3J0IHsgc3VnZ2VzdGlvbkxpc3QgfSBmcm9tICcuLi8uLi9qc3V0aWxzL3N1Z2dlc3Rpb25MaXN0Lm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7XG4gIGlzQWJzdHJhY3RUeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzT2JqZWN0VHlwZSxcbn0gZnJvbSAnLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5cbi8qKlxuICogRmllbGRzIG9uIGNvcnJlY3QgdHlwZVxuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBmaWVsZHMgc2VsZWN0ZWQgYXJlIGRlZmluZWQgYnkgdGhlXG4gKiBwYXJlbnQgdHlwZSwgb3IgYXJlIGFuIGFsbG93ZWQgbWV0YSBmaWVsZCBzdWNoIGFzIF9fdHlwZW5hbWUuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLUZpZWxkLVNlbGVjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEZpZWxkc09uQ29ycmVjdFR5cGVSdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBGaWVsZChub2RlKSB7XG4gICAgICBjb25zdCB0eXBlID0gY29udGV4dC5nZXRQYXJlbnRUeXBlKCk7XG5cbiAgICAgIGlmICh0eXBlKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkRGVmID0gY29udGV4dC5nZXRGaWVsZERlZigpO1xuXG4gICAgICAgIGlmICghZmllbGREZWYpIHtcbiAgICAgICAgICAvLyBUaGlzIGZpZWxkIGRvZXNuJ3QgZXhpc3QsIGxldHMgbG9vayBmb3Igc3VnZ2VzdGlvbnMuXG4gICAgICAgICAgY29uc3Qgc2NoZW1hID0gY29udGV4dC5nZXRTY2hlbWEoKTtcbiAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBub2RlLm5hbWUudmFsdWU7IC8vIEZpcnN0IGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IHN1Z2dlc3RlZCB0eXBlcyB0byBjb25kaXRpb24gb24uXG5cbiAgICAgICAgICBsZXQgc3VnZ2VzdGlvbiA9IGRpZFlvdU1lYW4oXG4gICAgICAgICAgICAndG8gdXNlIGFuIGlubGluZSBmcmFnbWVudCBvbicsXG4gICAgICAgICAgICBnZXRTdWdnZXN0ZWRUeXBlTmFtZXMoc2NoZW1hLCB0eXBlLCBmaWVsZE5hbWUpLFxuICAgICAgICAgICk7IC8vIElmIHRoZXJlIGFyZSBubyBzdWdnZXN0ZWQgdHlwZXMsIHRoZW4gcGVyaGFwcyB0aGlzIHdhcyBhIHR5cG8/XG5cbiAgICAgICAgICBpZiAoc3VnZ2VzdGlvbiA9PT0gJycpIHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb24gPSBkaWRZb3VNZWFuKGdldFN1Z2dlc3RlZEZpZWxkTmFtZXModHlwZSwgZmllbGROYW1lKSk7XG4gICAgICAgICAgfSAvLyBSZXBvcnQgYW4gZXJyb3IsIGluY2x1ZGluZyBoZWxwZnVsIHN1Z2dlc3Rpb25zLlxuXG4gICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAgIGBDYW5ub3QgcXVlcnkgZmllbGQgXCIke2ZpZWxkTmFtZX1cIiBvbiB0eXBlIFwiJHt0eXBlLm5hbWV9XCIuYCArXG4gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5vZGVzOiBub2RlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbi8qKlxuICogR28gdGhyb3VnaCBhbGwgb2YgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0eXBlLCBhcyB3ZWxsIGFzIHRoZSBpbnRlcmZhY2VzIHRoYXRcbiAqIHRoZXkgaW1wbGVtZW50LiBJZiBhbnkgb2YgdGhvc2UgdHlwZXMgaW5jbHVkZSB0aGUgcHJvdmlkZWQgZmllbGQsIHN1Z2dlc3QgdGhlbSxcbiAqIHNvcnRlZCBieSBob3cgb2Z0ZW4gdGhlIHR5cGUgaXMgcmVmZXJlbmNlZC5cbiAqL1xuXG5mdW5jdGlvbiBnZXRTdWdnZXN0ZWRUeXBlTmFtZXMoc2NoZW1hLCB0eXBlLCBmaWVsZE5hbWUpIHtcbiAgaWYgKCFpc0Fic3RyYWN0VHlwZSh0eXBlKSkge1xuICAgIC8vIE11c3QgYmUgYW4gT2JqZWN0IHR5cGUsIHdoaWNoIGRvZXMgbm90IGhhdmUgcG9zc2libGUgZmllbGRzLlxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHN1Z2dlc3RlZFR5cGVzID0gbmV3IFNldCgpO1xuICBjb25zdCB1c2FnZUNvdW50ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IHBvc3NpYmxlVHlwZSBvZiBzY2hlbWEuZ2V0UG9zc2libGVUeXBlcyh0eXBlKSkge1xuICAgIGlmICghcG9zc2libGVUeXBlLmdldEZpZWxkcygpW2ZpZWxkTmFtZV0pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gVGhpcyBvYmplY3QgdHlwZSBkZWZpbmVzIHRoaXMgZmllbGQuXG5cbiAgICBzdWdnZXN0ZWRUeXBlcy5hZGQocG9zc2libGVUeXBlKTtcbiAgICB1c2FnZUNvdW50W3Bvc3NpYmxlVHlwZS5uYW1lXSA9IDE7XG5cbiAgICBmb3IgKGNvbnN0IHBvc3NpYmxlSW50ZXJmYWNlIG9mIHBvc3NpYmxlVHlwZS5nZXRJbnRlcmZhY2VzKCkpIHtcbiAgICAgIHZhciBfdXNhZ2VDb3VudCRwb3NzaWJsZUk7XG5cbiAgICAgIGlmICghcG9zc2libGVJbnRlcmZhY2UuZ2V0RmllbGRzKClbZmllbGROYW1lXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gVGhpcyBpbnRlcmZhY2UgdHlwZSBkZWZpbmVzIHRoaXMgZmllbGQuXG5cbiAgICAgIHN1Z2dlc3RlZFR5cGVzLmFkZChwb3NzaWJsZUludGVyZmFjZSk7XG4gICAgICB1c2FnZUNvdW50W3Bvc3NpYmxlSW50ZXJmYWNlLm5hbWVdID1cbiAgICAgICAgKChfdXNhZ2VDb3VudCRwb3NzaWJsZUkgPSB1c2FnZUNvdW50W3Bvc3NpYmxlSW50ZXJmYWNlLm5hbWVdKSAhPT1cbiAgICAgICAgICBudWxsICYmIF91c2FnZUNvdW50JHBvc3NpYmxlSSAhPT0gdm9pZCAwXG4gICAgICAgICAgPyBfdXNhZ2VDb3VudCRwb3NzaWJsZUlcbiAgICAgICAgICA6IDApICsgMTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gWy4uLnN1Z2dlc3RlZFR5cGVzXVxuICAgIC5zb3J0KCh0eXBlQSwgdHlwZUIpID0+IHtcbiAgICAgIC8vIFN1Z2dlc3QgYm90aCBpbnRlcmZhY2UgYW5kIG9iamVjdCB0eXBlcyBiYXNlZCBvbiBob3cgY29tbW9uIHRoZXkgYXJlLlxuICAgICAgY29uc3QgdXNhZ2VDb3VudERpZmYgPSB1c2FnZUNvdW50W3R5cGVCLm5hbWVdIC0gdXNhZ2VDb3VudFt0eXBlQS5uYW1lXTtcblxuICAgICAgaWYgKHVzYWdlQ291bnREaWZmICE9PSAwKSB7XG4gICAgICAgIHJldHVybiB1c2FnZUNvdW50RGlmZjtcbiAgICAgIH0gLy8gU3VnZ2VzdCBzdXBlciB0eXBlcyBmaXJzdCBmb2xsb3dlZCBieSBzdWJ0eXBlc1xuXG4gICAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGVBKSAmJiBzY2hlbWEuaXNTdWJUeXBlKHR5cGVBLCB0eXBlQikpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGVCKSAmJiBzY2hlbWEuaXNTdWJUeXBlKHR5cGVCLCB0eXBlQSkpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuYXR1cmFsQ29tcGFyZSh0eXBlQS5uYW1lLCB0eXBlQi5uYW1lKTtcbiAgICB9KVxuICAgIC5tYXAoKHgpID0+IHgubmFtZSk7XG59XG4vKipcbiAqIEZvciB0aGUgZmllbGQgbmFtZSBwcm92aWRlZCwgZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhbnkgc2ltaWxhciBmaWVsZCBuYW1lc1xuICogdGhhdCBtYXkgYmUgdGhlIHJlc3VsdCBvZiBhIHR5cG8uXG4gKi9cblxuZnVuY3Rpb24gZ2V0U3VnZ2VzdGVkRmllbGROYW1lcyh0eXBlLCBmaWVsZE5hbWUpIHtcbiAgaWYgKGlzT2JqZWN0VHlwZSh0eXBlKSB8fCBpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICBjb25zdCBwb3NzaWJsZUZpZWxkTmFtZXMgPSBPYmplY3Qua2V5cyh0eXBlLmdldEZpZWxkcygpKTtcbiAgICByZXR1cm4gc3VnZ2VzdGlvbkxpc3QoZmllbGROYW1lLCBwb3NzaWJsZUZpZWxkTmFtZXMpO1xuICB9IC8vIE90aGVyd2lzZSwgbXVzdCBiZSBhIFVuaW9uIHR5cGUsIHdoaWNoIGRvZXMgbm90IGRlZmluZSBmaWVsZHMuXG5cbiAgcmV0dXJuIFtdO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs\n");
|
1213 |
|
1214 | }),
|
1215 |
|
1216 | "../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs":
|
1217 |
|
1218 |
|
1219 |
|
1220 |
|
1221 | (function(module, __webpack_exports__, __webpack_require__) {
|
1222 |
|
1223 | "use strict";
|
1224 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FragmentsOnCompositeTypesRule\", function() { return FragmentsOnCompositeTypesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n/**\n * Fragments on composite type\n *\n * Fragments use a type condition to determine if they apply, since fragments\n * can only be spread into a composite type (object, interface, or union), the\n * type condition must also be a composite type.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-On-Composite-Types\n */\nfunction FragmentsOnCompositeTypesRule(context) {\n return {\n InlineFragment(node) {\n const typeCondition = node.typeCondition;\n\n if (typeCondition) {\n const type = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__[\"typeFromAST\"])(context.getSchema(), typeCondition);\n\n if (type && !Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isCompositeType\"])(type)) {\n const typeStr = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_1__[\"print\"])(typeCondition);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `Fragment cannot condition on non composite type \"${typeStr}\".`,\n {\n nodes: typeCondition,\n },\n ),\n );\n }\n }\n },\n\n FragmentDefinition(node) {\n const type = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__[\"typeFromAST\"])(context.getSchema(), node.typeCondition);\n\n if (type && !Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isCompositeType\"])(type)) {\n const typeStr = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_1__[\"print\"])(node.typeCondition);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `Fragment \"${node.name.value}\" cannot condition on non composite type \"${typeStr}\".`,\n {\n nodes: node.typeCondition,\n },\n ),\n );\n }\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9GcmFnbWVudHNPbkNvbXBvc2l0ZVR5cGVzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0ZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlLm1qcz8yZDAwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9wcmludGVyLm1qcyc7XG5pbXBvcnQgeyBpc0NvbXBvc2l0ZVR5cGUgfSBmcm9tICcuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7IHR5cGVGcm9tQVNUIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3R5cGVGcm9tQVNULm1qcyc7XG5cbi8qKlxuICogRnJhZ21lbnRzIG9uIGNvbXBvc2l0ZSB0eXBlXG4gKlxuICogRnJhZ21lbnRzIHVzZSBhIHR5cGUgY29uZGl0aW9uIHRvIGRldGVybWluZSBpZiB0aGV5IGFwcGx5LCBzaW5jZSBmcmFnbWVudHNcbiAqIGNhbiBvbmx5IGJlIHNwcmVhZCBpbnRvIGEgY29tcG9zaXRlIHR5cGUgKG9iamVjdCwgaW50ZXJmYWNlLCBvciB1bmlvbiksIHRoZVxuICogdHlwZSBjb25kaXRpb24gbXVzdCBhbHNvIGJlIGEgY29tcG9zaXRlIHR5cGUuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLUZyYWdtZW50cy1Pbi1Db21wb3NpdGUtVHlwZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBJbmxpbmVGcmFnbWVudChub2RlKSB7XG4gICAgICBjb25zdCB0eXBlQ29uZGl0aW9uID0gbm9kZS50eXBlQ29uZGl0aW9uO1xuXG4gICAgICBpZiAodHlwZUNvbmRpdGlvbikge1xuICAgICAgICBjb25zdCB0eXBlID0gdHlwZUZyb21BU1QoY29udGV4dC5nZXRTY2hlbWEoKSwgdHlwZUNvbmRpdGlvbik7XG5cbiAgICAgICAgaWYgKHR5cGUgJiYgIWlzQ29tcG9zaXRlVHlwZSh0eXBlKSkge1xuICAgICAgICAgIGNvbnN0IHR5cGVTdHIgPSBwcmludCh0eXBlQ29uZGl0aW9uKTtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgYEZyYWdtZW50IGNhbm5vdCBjb25kaXRpb24gb24gbm9uIGNvbXBvc2l0ZSB0eXBlIFwiJHt0eXBlU3RyfVwiLmAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBub2RlczogdHlwZUNvbmRpdGlvbixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBGcmFnbWVudERlZmluaXRpb24obm9kZSkge1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVGcm9tQVNUKGNvbnRleHQuZ2V0U2NoZW1hKCksIG5vZGUudHlwZUNvbmRpdGlvbik7XG5cbiAgICAgIGlmICh0eXBlICYmICFpc0NvbXBvc2l0ZVR5cGUodHlwZSkpIHtcbiAgICAgICAgY29uc3QgdHlwZVN0ciA9IHByaW50KG5vZGUudHlwZUNvbmRpdGlvbik7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBGcmFnbWVudCBcIiR7bm9kZS5uYW1lLnZhbHVlfVwiIGNhbm5vdCBjb25kaXRpb24gb24gbm9uIGNvbXBvc2l0ZSB0eXBlIFwiJHt0eXBlU3RyfVwiLmAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5vZGVzOiBub2RlLnR5cGVDb25kaXRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs\n");
|
1225 |
|
1226 | }),
|
1227 |
|
1228 | "../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs":
|
1229 |
|
1230 |
|
1231 |
|
1232 |
|
1233 | (function(module, __webpack_exports__, __webpack_require__) {
|
1234 |
|
1235 | "use strict";
|
1236 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KnownArgumentNamesRule\", function() { return KnownArgumentNamesRule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KnownArgumentNamesOnDirectivesRule\", function() { return KnownArgumentNamesOnDirectivesRule; });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n\n\n\n\n\n\n/**\n * Known argument names\n *\n * A GraphQL field is only valid if all supplied arguments are defined by\n * that field.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n * See https://spec.graphql.org/draft/#sec-Directives-Are-In-Valid-Locations\n */\nfunction KnownArgumentNamesRule(context) {\n return {\n // eslint-disable-next-line new-cap\n ...KnownArgumentNamesOnDirectivesRule(context),\n\n Argument(argNode) {\n const argDef = context.getArgument();\n const fieldDef = context.getFieldDef();\n const parentType = context.getParentType();\n\n if (!argDef && fieldDef && parentType) {\n const argName = argNode.name.value;\n const knownArgsNames = fieldDef.args.map((arg) => arg.name);\n const suggestions = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_1__[\"suggestionList\"])(argName, knownArgsNames);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Unknown argument \"${argName}\" on field \"${parentType.name}.${fieldDef.name}\".` +\n Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__[\"didYouMean\"])(suggestions),\n {\n nodes: argNode,\n },\n ),\n );\n }\n },\n };\n}\n/**\n * @internal\n */\n\nfunction KnownArgumentNamesOnDirectivesRule(context) {\n const directiveArgs = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : _type_directives_mjs__WEBPACK_IMPORTED_MODULE_4__[\"specifiedDirectives\"];\n\n for (const directive of definedDirectives) {\n directiveArgs[directive.name] = directive.args.map((arg) => arg.name);\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].DIRECTIVE_DEFINITION) {\n var _def$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argsNodes =\n (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n ? _def$arguments\n : [];\n directiveArgs[def.name.value] = argsNodes.map((arg) => arg.name.value);\n }\n }\n\n return {\n Directive(directiveNode) {\n const directiveName = directiveNode.name.value;\n const knownArgs = directiveArgs[directiveName];\n\n if (directiveNode.arguments && knownArgs) {\n for (const argNode of directiveNode.arguments) {\n const argName = argNode.name.value;\n\n if (!knownArgs.includes(argName)) {\n const suggestions = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_1__[\"suggestionList\"])(argName, knownArgs);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Unknown argument \"${argName}\" on directive \"@${directiveName}\".` +\n Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__[\"didYouMean\"])(suggestions),\n {\n nodes: argNode,\n },\n ),\n );\n }\n }\n }\n\n return false;\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Lbm93bkFyZ3VtZW50TmFtZXNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvS25vd25Bcmd1bWVudE5hbWVzUnVsZS5tanM/YjgzYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWRZb3VNZWFuIH0gZnJvbSAnLi4vLi4vanN1dGlscy9kaWRZb3VNZWFuLm1qcyc7XG5pbXBvcnQgeyBzdWdnZXN0aW9uTGlzdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvc3VnZ2VzdGlvbkxpc3QubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBzcGVjaWZpZWREaXJlY3RpdmVzIH0gZnJvbSAnLi4vLi4vdHlwZS9kaXJlY3RpdmVzLm1qcyc7XG5cbi8qKlxuICogS25vd24gYXJndW1lbnQgbmFtZXNcbiAqXG4gKiBBIEdyYXBoUUwgZmllbGQgaXMgb25seSB2YWxpZCBpZiBhbGwgc3VwcGxpZWQgYXJndW1lbnRzIGFyZSBkZWZpbmVkIGJ5XG4gKiB0aGF0IGZpZWxkLlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1Bcmd1bWVudC1OYW1lc1xuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLURpcmVjdGl2ZXMtQXJlLUluLVZhbGlkLUxvY2F0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gS25vd25Bcmd1bWVudE5hbWVzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAuLi5Lbm93bkFyZ3VtZW50TmFtZXNPbkRpcmVjdGl2ZXNSdWxlKGNvbnRleHQpLFxuXG4gICAgQXJndW1lbnQoYXJnTm9kZSkge1xuICAgICAgY29uc3QgYXJnRGVmID0gY29udGV4dC5nZXRBcmd1bWVudCgpO1xuICAgICAgY29uc3QgZmllbGREZWYgPSBjb250ZXh0LmdldEZpZWxkRGVmKCk7XG4gICAgICBjb25zdCBwYXJlbnRUeXBlID0gY29udGV4dC5nZXRQYXJlbnRUeXBlKCk7XG5cbiAgICAgIGlmICghYXJnRGVmICYmIGZpZWxkRGVmICYmIHBhcmVudFR5cGUpIHtcbiAgICAgICAgY29uc3QgYXJnTmFtZSA9IGFyZ05vZGUubmFtZS52YWx1ZTtcbiAgICAgICAgY29uc3Qga25vd25BcmdzTmFtZXMgPSBmaWVsZERlZi5hcmdzLm1hcCgoYXJnKSA9PiBhcmcubmFtZSk7XG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbkxpc3QoYXJnTmFtZSwga25vd25BcmdzTmFtZXMpO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgVW5rbm93biBhcmd1bWVudCBcIiR7YXJnTmFtZX1cIiBvbiBmaWVsZCBcIiR7cGFyZW50VHlwZS5uYW1lfS4ke2ZpZWxkRGVmLm5hbWV9XCIuYCArXG4gICAgICAgICAgICAgIGRpZFlvdU1lYW4oc3VnZ2VzdGlvbnMpLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBub2RlczogYXJnTm9kZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gS25vd25Bcmd1bWVudE5hbWVzT25EaXJlY3RpdmVzUnVsZShjb250ZXh0KSB7XG4gIGNvbnN0IGRpcmVjdGl2ZUFyZ3MgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICBjb25zdCBkZWZpbmVkRGlyZWN0aXZlcyA9IHNjaGVtYVxuICAgID8gc2NoZW1hLmdldERpcmVjdGl2ZXMoKVxuICAgIDogc3BlY2lmaWVkRGlyZWN0aXZlcztcblxuICBmb3IgKGNvbnN0IGRpcmVjdGl2ZSBvZiBkZWZpbmVkRGlyZWN0aXZlcykge1xuICAgIGRpcmVjdGl2ZUFyZ3NbZGlyZWN0aXZlLm5hbWVdID0gZGlyZWN0aXZlLmFyZ3MubWFwKChhcmcpID0+IGFyZy5uYW1lKTtcbiAgfVxuXG4gIGNvbnN0IGFzdERlZmluaXRpb25zID0gY29udGV4dC5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zO1xuXG4gIGZvciAoY29uc3QgZGVmIG9mIGFzdERlZmluaXRpb25zKSB7XG4gICAgaWYgKGRlZi5raW5kID09PSBLaW5kLkRJUkVDVElWRV9ERUZJTklUSU9OKSB7XG4gICAgICB2YXIgX2RlZiRhcmd1bWVudHM7XG5cbiAgICAgIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG5cbiAgICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgICBjb25zdCBhcmdzTm9kZXMgPVxuICAgICAgICAoX2RlZiRhcmd1bWVudHMgPSBkZWYuYXJndW1lbnRzKSAhPT0gbnVsbCAmJiBfZGVmJGFyZ3VtZW50cyAhPT0gdm9pZCAwXG4gICAgICAgICAgPyBfZGVmJGFyZ3VtZW50c1xuICAgICAgICAgIDogW107XG4gICAgICBkaXJlY3RpdmVBcmdzW2RlZi5uYW1lLnZhbHVlXSA9IGFyZ3NOb2Rlcy5tYXAoKGFyZykgPT4gYXJnLm5hbWUudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgRGlyZWN0aXZlKGRpcmVjdGl2ZU5vZGUpIHtcbiAgICAgIGNvbnN0IGRpcmVjdGl2ZU5hbWUgPSBkaXJlY3RpdmVOb2RlLm5hbWUudmFsdWU7XG4gICAgICBjb25zdCBrbm93bkFyZ3MgPSBkaXJlY3RpdmVBcmdzW2RpcmVjdGl2ZU5hbWVdO1xuXG4gICAgICBpZiAoZGlyZWN0aXZlTm9kZS5hcmd1bWVudHMgJiYga25vd25BcmdzKSB7XG4gICAgICAgIGZvciAoY29uc3QgYXJnTm9kZSBvZiBkaXJlY3RpdmVOb2RlLmFyZ3VtZW50cykge1xuICAgICAgICAgIGNvbnN0IGFyZ05hbWUgPSBhcmdOb2RlLm5hbWUudmFsdWU7XG5cbiAgICAgICAgICBpZiAoIWtub3duQXJncy5pbmNsdWRlcyhhcmdOYW1lKSkge1xuICAgICAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9uTGlzdChhcmdOYW1lLCBrbm93bkFyZ3MpO1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgICBgVW5rbm93biBhcmd1bWVudCBcIiR7YXJnTmFtZX1cIiBvbiBkaXJlY3RpdmUgXCJAJHtkaXJlY3RpdmVOYW1lfVwiLmAgK1xuICAgICAgICAgICAgICAgICAgZGlkWW91TWVhbihzdWdnZXN0aW9ucyksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbm9kZXM6IGFyZ05vZGUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs\n");
|
1237 |
|
1238 | }),
|
1239 |
|
1240 | "../../../node_modules/graphql/validation/rules/KnownDirectivesRule.mjs":
|
1241 |
|
1242 |
|
1243 |
|
1244 |
|
1245 | (function(module, __webpack_exports__, __webpack_require__) {
|
1246 |
|
1247 | "use strict";
|
1248 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KnownDirectivesRule\", function() { return KnownDirectivesRule; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_ast_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../language/ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../language/directiveLocation.mjs */ \"../../../node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n\n\n\n\n\n\n\n\n/**\n * Known directives\n *\n * A GraphQL document is only valid if all `@directives` are known by the\n * schema and legally positioned.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Defined\n */\nfunction KnownDirectivesRule(context) {\n const locationsMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : _type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__[\"specifiedDirectives\"];\n\n for (const directive of definedDirectives) {\n locationsMap[directive.name] = directive.locations;\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].DIRECTIVE_DEFINITION) {\n locationsMap[def.name.value] = def.locations.map((name) => name.value);\n }\n }\n\n return {\n Directive(node, _key, _parent, _path, ancestors) {\n const name = node.name.value;\n const locations = locationsMap[name];\n\n if (!locations) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](`Unknown directive \"@${name}\".`, {\n nodes: node,\n }),\n );\n return;\n }\n\n const candidateLocation = getDirectiveLocationForASTPath(ancestors);\n\n if (candidateLocation && !locations.includes(candidateLocation)) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Directive \"@${name}\" may not be used on ${candidateLocation}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n\nfunction getDirectiveLocationForASTPath(ancestors) {\n const appliedTo = ancestors[ancestors.length - 1];\n 'kind' in appliedTo || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"invariant\"])(false);\n\n switch (appliedTo.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].OPERATION_DEFINITION:\n return getDirectiveLocationForOperation(appliedTo.operation);\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].FIELD:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].FIELD;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].FRAGMENT_SPREAD:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].FRAGMENT_SPREAD;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INLINE_FRAGMENT:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].INLINE_FRAGMENT;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].FRAGMENT_DEFINITION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].FRAGMENT_DEFINITION;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].VARIABLE_DEFINITION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].VARIABLE_DEFINITION;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCHEMA_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCHEMA_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].SCHEMA;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCALAR_TYPE_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCALAR_TYPE_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].SCALAR;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].OBJECT_TYPE_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].OBJECT_TYPE_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].OBJECT;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].FIELD_DEFINITION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].FIELD_DEFINITION;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INTERFACE_TYPE_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INTERFACE_TYPE_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].INTERFACE;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].UNION_TYPE_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].UNION_TYPE_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].UNION;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].ENUM_TYPE_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].ENUM_TYPE_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].ENUM;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].ENUM_VALUE_DEFINITION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].ENUM_VALUE;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_OBJECT_TYPE_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_OBJECT_TYPE_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].INPUT_OBJECT;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_VALUE_DEFINITION: {\n const parentNode = ancestors[ancestors.length - 3];\n 'kind' in parentNode || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"invariant\"])(false);\n return parentNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_OBJECT_TYPE_DEFINITION\n ? _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].INPUT_FIELD_DEFINITION\n : _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].ARGUMENT_DEFINITION;\n }\n // Not reachable, all possible types have been considered.\n\n /* c8 ignore next */\n\n default:\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"invariant\"])(false, 'Unexpected kind: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(appliedTo.kind));\n }\n}\n\nfunction getDirectiveLocationForOperation(operation) {\n switch (operation) {\n case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_3__[\"OperationTypeNode\"].QUERY:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].QUERY;\n\n case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_3__[\"OperationTypeNode\"].MUTATION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].MUTATION;\n\n case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_3__[\"OperationTypeNode\"].SUBSCRIPTION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].SUBSCRIPTION;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Lbm93bkRpcmVjdGl2ZXNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvS25vd25EaXJlY3RpdmVzUnVsZS5tanM/Y2QxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICcuLi8uLi9qc3V0aWxzL2ludmFyaWFudC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBPcGVyYXRpb25UeXBlTm9kZSB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL2FzdC5tanMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlTG9jYXRpb24gfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9kaXJlY3RpdmVMb2NhdGlvbi5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBzcGVjaWZpZWREaXJlY3RpdmVzIH0gZnJvbSAnLi4vLi4vdHlwZS9kaXJlY3RpdmVzLm1qcyc7XG5cbi8qKlxuICogS25vd24gZGlyZWN0aXZlc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBgQGRpcmVjdGl2ZXNgIGFyZSBrbm93biBieSB0aGVcbiAqIHNjaGVtYSBhbmQgbGVnYWxseSBwb3NpdGlvbmVkLlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1EaXJlY3RpdmVzLUFyZS1EZWZpbmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBLbm93bkRpcmVjdGl2ZXNSdWxlKGNvbnRleHQpIHtcbiAgY29uc3QgbG9jYXRpb25zTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgY29uc3Qgc2NoZW1hID0gY29udGV4dC5nZXRTY2hlbWEoKTtcbiAgY29uc3QgZGVmaW5lZERpcmVjdGl2ZXMgPSBzY2hlbWFcbiAgICA/IHNjaGVtYS5nZXREaXJlY3RpdmVzKClcbiAgICA6IHNwZWNpZmllZERpcmVjdGl2ZXM7XG5cbiAgZm9yIChjb25zdCBkaXJlY3RpdmUgb2YgZGVmaW5lZERpcmVjdGl2ZXMpIHtcbiAgICBsb2NhdGlvbnNNYXBbZGlyZWN0aXZlLm5hbWVdID0gZGlyZWN0aXZlLmxvY2F0aW9ucztcbiAgfVxuXG4gIGNvbnN0IGFzdERlZmluaXRpb25zID0gY29udGV4dC5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zO1xuXG4gIGZvciAoY29uc3QgZGVmIG9mIGFzdERlZmluaXRpb25zKSB7XG4gICAgaWYgKGRlZi5raW5kID09PSBLaW5kLkRJUkVDVElWRV9ERUZJTklUSU9OKSB7XG4gICAgICBsb2NhdGlvbnNNYXBbZGVmLm5hbWUudmFsdWVdID0gZGVmLmxvY2F0aW9ucy5tYXAoKG5hbWUpID0+IG5hbWUudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgRGlyZWN0aXZlKG5vZGUsIF9rZXksIF9wYXJlbnQsIF9wYXRoLCBhbmNlc3RvcnMpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG4gICAgICBjb25zdCBsb2NhdGlvbnMgPSBsb2NhdGlvbnNNYXBbbmFtZV07XG5cbiAgICAgIGlmICghbG9jYXRpb25zKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihgVW5rbm93biBkaXJlY3RpdmUgXCJAJHtuYW1lfVwiLmAsIHtcbiAgICAgICAgICAgIG5vZGVzOiBub2RlLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbmRpZGF0ZUxvY2F0aW9uID0gZ2V0RGlyZWN0aXZlTG9jYXRpb25Gb3JBU1RQYXRoKGFuY2VzdG9ycyk7XG5cbiAgICAgIGlmIChjYW5kaWRhdGVMb2NhdGlvbiAmJiAhbG9jYXRpb25zLmluY2x1ZGVzKGNhbmRpZGF0ZUxvY2F0aW9uKSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgRGlyZWN0aXZlIFwiQCR7bmFtZX1cIiBtYXkgbm90IGJlIHVzZWQgb24gJHtjYW5kaWRhdGVMb2NhdGlvbn0uYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbm9kZXM6IG5vZGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGlyZWN0aXZlTG9jYXRpb25Gb3JBU1RQYXRoKGFuY2VzdG9ycykge1xuICBjb25zdCBhcHBsaWVkVG8gPSBhbmNlc3RvcnNbYW5jZXN0b3JzLmxlbmd0aCAtIDFdO1xuICAna2luZCcgaW4gYXBwbGllZFRvIHx8IGludmFyaWFudChmYWxzZSk7XG5cbiAgc3dpdGNoIChhcHBsaWVkVG8ua2luZCkge1xuICAgIGNhc2UgS2luZC5PUEVSQVRJT05fREVGSU5JVElPTjpcbiAgICAgIHJldHVybiBnZXREaXJlY3RpdmVMb2NhdGlvbkZvck9wZXJhdGlvbihhcHBsaWVkVG8ub3BlcmF0aW9uKTtcblxuICAgIGNhc2UgS2luZC5GSUVMRDpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5GSUVMRDtcblxuICAgIGNhc2UgS2luZC5GUkFHTUVOVF9TUFJFQUQ6XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uRlJBR01FTlRfU1BSRUFEO1xuXG4gICAgY2FzZSBLaW5kLklOTElORV9GUkFHTUVOVDpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5JTkxJTkVfRlJBR01FTlQ7XG5cbiAgICBjYXNlIEtpbmQuRlJBR01FTlRfREVGSU5JVElPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5GUkFHTUVOVF9ERUZJTklUSU9OO1xuXG4gICAgY2FzZSBLaW5kLlZBUklBQkxFX0RFRklOSVRJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uVkFSSUFCTEVfREVGSU5JVElPTjtcblxuICAgIGNhc2UgS2luZC5TQ0hFTUFfREVGSU5JVElPTjpcbiAgICBjYXNlIEtpbmQuU0NIRU1BX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5TQ0hFTUE7XG5cbiAgICBjYXNlIEtpbmQuU0NBTEFSX1RZUEVfREVGSU5JVElPTjpcbiAgICBjYXNlIEtpbmQuU0NBTEFSX1RZUEVfRVhURU5TSU9OOlxuICAgICAgcmV0dXJuIERpcmVjdGl2ZUxvY2F0aW9uLlNDQUxBUjtcblxuICAgIGNhc2UgS2luZC5PQkpFQ1RfVFlQRV9ERUZJTklUSU9OOlxuICAgIGNhc2UgS2luZC5PQkpFQ1RfVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uT0JKRUNUO1xuXG4gICAgY2FzZSBLaW5kLkZJRUxEX0RFRklOSVRJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uRklFTERfREVGSU5JVElPTjtcblxuICAgIGNhc2UgS2luZC5JTlRFUkZBQ0VfVFlQRV9ERUZJTklUSU9OOlxuICAgIGNhc2UgS2luZC5JTlRFUkZBQ0VfVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uSU5URVJGQUNFO1xuXG4gICAgY2FzZSBLaW5kLlVOSU9OX1RZUEVfREVGSU5JVElPTjpcbiAgICBjYXNlIEtpbmQuVU5JT05fVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uVU5JT047XG5cbiAgICBjYXNlIEtpbmQuRU5VTV9UWVBFX0RFRklOSVRJT046XG4gICAgY2FzZSBLaW5kLkVOVU1fVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uRU5VTTtcblxuICAgIGNhc2UgS2luZC5FTlVNX1ZBTFVFX0RFRklOSVRJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uRU5VTV9WQUxVRTtcblxuICAgIGNhc2UgS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9ERUZJTklUSU9OOlxuICAgIGNhc2UgS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uSU5QVVRfT0JKRUNUO1xuXG4gICAgY2FzZSBLaW5kLklOUFVUX1ZBTFVFX0RFRklOSVRJT046IHtcbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBhbmNlc3RvcnNbYW5jZXN0b3JzLmxlbmd0aCAtIDNdO1xuICAgICAgJ2tpbmQnIGluIHBhcmVudE5vZGUgfHwgaW52YXJpYW50KGZhbHNlKTtcbiAgICAgIHJldHVybiBwYXJlbnROb2RlLmtpbmQgPT09IEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTlxuICAgICAgICA/IERpcmVjdGl2ZUxvY2F0aW9uLklOUFVUX0ZJRUxEX0RFRklOSVRJT05cbiAgICAgICAgOiBEaXJlY3RpdmVMb2NhdGlvbi5BUkdVTUVOVF9ERUZJTklUSU9OO1xuICAgIH1cbiAgICAvLyBOb3QgcmVhY2hhYmxlLCBhbGwgcG9zc2libGUgdHlwZXMgaGF2ZSBiZWVuIGNvbnNpZGVyZWQuXG5cbiAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGZhbHNlIHx8IGludmFyaWFudChmYWxzZSwgJ1VuZXhwZWN0ZWQga2luZDogJyArIGluc3BlY3QoYXBwbGllZFRvLmtpbmQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREaXJlY3RpdmVMb2NhdGlvbkZvck9wZXJhdGlvbihvcGVyYXRpb24pIHtcbiAgc3dpdGNoIChvcGVyYXRpb24pIHtcbiAgICBjYXNlIE9wZXJhdGlvblR5cGVOb2RlLlFVRVJZOlxuICAgICAgcmV0dXJuIERpcmVjdGl2ZUxvY2F0aW9uLlFVRVJZO1xuXG4gICAgY2FzZSBPcGVyYXRpb25UeXBlTm9kZS5NVVRBVElPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5NVVRBVElPTjtcblxuICAgIGNhc2UgT3BlcmF0aW9uVHlwZU5vZGUuU1VCU0NSSVBUSU9OOlxuICAgICAgcmV0dXJuIERpcmVjdGl2ZUxvY2F0aW9uLlNVQlNDUklQVElPTjtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/KnownDirectivesRule.mjs\n");
|
1249 |
|
1250 | }),
|
1251 |
|
1252 | "../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs":
|
1253 |
|
1254 |
|
1255 |
|
1256 |
|
1257 | (function(module, __webpack_exports__, __webpack_require__) {
|
1258 |
|
1259 | "use strict";
|
1260 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KnownFragmentNamesRule\", function() { return KnownFragmentNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Known fragment names\n *\n * A GraphQL document is only valid if all `...Fragment` fragment spreads refer\n * to fragments defined in the same document.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined\n */\nfunction KnownFragmentNamesRule(context) {\n return {\n FragmentSpread(node) {\n const fragmentName = node.name.value;\n const fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](`Unknown fragment \"${fragmentName}\".`, {\n nodes: node.name,\n }),\n );\n }\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Lbm93bkZyYWdtZW50TmFtZXNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvS25vd25GcmFnbWVudE5hbWVzUnVsZS5tanM/MzMwZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcblxuLyoqXG4gKiBLbm93biBmcmFnbWVudCBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBgLi4uRnJhZ21lbnRgIGZyYWdtZW50IHNwcmVhZHMgcmVmZXJcbiAqIHRvIGZyYWdtZW50cyBkZWZpbmVkIGluIHRoZSBzYW1lIGRvY3VtZW50LlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1GcmFnbWVudC1zcHJlYWQtdGFyZ2V0LWRlZmluZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEtub3duRnJhZ21lbnROYW1lc1J1bGUoY29udGV4dCkge1xuICByZXR1cm4ge1xuICAgIEZyYWdtZW50U3ByZWFkKG5vZGUpIHtcbiAgICAgIGNvbnN0IGZyYWdtZW50TmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgIGNvbnN0IGZyYWdtZW50ID0gY29udGV4dC5nZXRGcmFnbWVudChmcmFnbWVudE5hbWUpO1xuXG4gICAgICBpZiAoIWZyYWdtZW50KSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihgVW5rbm93biBmcmFnbWVudCBcIiR7ZnJhZ21lbnROYW1lfVwiLmAsIHtcbiAgICAgICAgICAgIG5vZGVzOiBub2RlLm5hbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs\n");
|
1261 |
|
1262 | }),
|
1263 |
|
1264 | "../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs":
|
1265 |
|
1266 |
|
1267 |
|
1268 |
|
1269 | (function(module, __webpack_exports__, __webpack_require__) {
|
1270 |
|
1271 | "use strict";
|
1272 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KnownTypeNamesRule\", function() { return KnownTypeNamesRule; });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../language/predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n\n\n\n\n\n\n\n/**\n * Known type names\n *\n * A GraphQL document is only valid if referenced types (specifically\n * variable definitions and fragment conditions) are defined by the type schema.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence\n */\nfunction KnownTypeNamesRule(context) {\n const schema = context.getSchema();\n const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n const definedTypes = Object.create(null);\n\n for (const def of context.getDocument().definitions) {\n if (Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeDefinitionNode\"])(def)) {\n definedTypes[def.name.value] = true;\n }\n }\n\n const typeNames = [\n ...Object.keys(existingTypesMap),\n ...Object.keys(definedTypes),\n ];\n return {\n NamedType(node, _1, parent, _2, ancestors) {\n const typeName = node.name.value;\n\n if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n var _ancestors$;\n\n const definitionNode =\n (_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0\n ? _ancestors$\n : parent;\n const isSDL = definitionNode != null && isSDLNode(definitionNode);\n\n if (isSDL && standardTypeNames.includes(typeName)) {\n return;\n }\n\n const suggestedTypes = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_1__[\"suggestionList\"])(\n typeName,\n isSDL ? standardTypeNames.concat(typeNames) : typeNames,\n );\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Unknown type \"${typeName}\".` + Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__[\"didYouMean\"])(suggestedTypes),\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\nconst standardTypeNames = [..._type_scalars_mjs__WEBPACK_IMPORTED_MODULE_5__[\"specifiedScalarTypes\"], ..._type_introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"introspectionTypes\"]].map(\n (type) => type.name,\n);\n\nfunction isSDLNode(value) {\n return (\n 'kind' in value &&\n (Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeSystemDefinitionNode\"])(value) || Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeSystemExtensionNode\"])(value))\n );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Lbm93blR5cGVOYW1lc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Lbm93blR5cGVOYW1lc1J1bGUubWpzP2FhZDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlkWW91TWVhbiB9IGZyb20gJy4uLy4uL2pzdXRpbHMvZGlkWW91TWVhbi5tanMnO1xuaW1wb3J0IHsgc3VnZ2VzdGlvbkxpc3QgfSBmcm9tICcuLi8uLi9qc3V0aWxzL3N1Z2dlc3Rpb25MaXN0Lm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7XG4gIGlzVHlwZURlZmluaXRpb25Ob2RlLFxuICBpc1R5cGVTeXN0ZW1EZWZpbml0aW9uTm9kZSxcbiAgaXNUeXBlU3lzdGVtRXh0ZW5zaW9uTm9kZSxcbn0gZnJvbSAnLi4vLi4vbGFuZ3VhZ2UvcHJlZGljYXRlcy5tanMnO1xuaW1wb3J0IHsgaW50cm9zcGVjdGlvblR5cGVzIH0gZnJvbSAnLi4vLi4vdHlwZS9pbnRyb3NwZWN0aW9uLm1qcyc7XG5pbXBvcnQgeyBzcGVjaWZpZWRTY2FsYXJUeXBlcyB9IGZyb20gJy4uLy4uL3R5cGUvc2NhbGFycy5tanMnO1xuXG4vKipcbiAqIEtub3duIHR5cGUgbmFtZXNcbiAqXG4gKiBBIEdyYXBoUUwgZG9jdW1lbnQgaXMgb25seSB2YWxpZCBpZiByZWZlcmVuY2VkIHR5cGVzIChzcGVjaWZpY2FsbHlcbiAqIHZhcmlhYmxlIGRlZmluaXRpb25zIGFuZCBmcmFnbWVudCBjb25kaXRpb25zKSBhcmUgZGVmaW5lZCBieSB0aGUgdHlwZSBzY2hlbWEuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLUZyYWdtZW50LVNwcmVhZC1UeXBlLUV4aXN0ZW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gS25vd25UeXBlTmFtZXNSdWxlKGNvbnRleHQpIHtcbiAgY29uc3Qgc2NoZW1hID0gY29udGV4dC5nZXRTY2hlbWEoKTtcbiAgY29uc3QgZXhpc3RpbmdUeXBlc01hcCA9IHNjaGVtYSA/IHNjaGVtYS5nZXRUeXBlTWFwKCkgOiBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCBkZWZpbmVkVHlwZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3QgZGVmIG9mIGNvbnRleHQuZ2V0RG9jdW1lbnQoKS5kZWZpbml0aW9ucykge1xuICAgIGlmIChpc1R5cGVEZWZpbml0aW9uTm9kZShkZWYpKSB7XG4gICAgICBkZWZpbmVkVHlwZXNbZGVmLm5hbWUudmFsdWVdID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB0eXBlTmFtZXMgPSBbXG4gICAgLi4uT2JqZWN0LmtleXMoZXhpc3RpbmdUeXBlc01hcCksXG4gICAgLi4uT2JqZWN0LmtleXMoZGVmaW5lZFR5cGVzKSxcbiAgXTtcbiAgcmV0dXJuIHtcbiAgICBOYW1lZFR5cGUobm9kZSwgXzEsIHBhcmVudCwgXzIsIGFuY2VzdG9ycykge1xuICAgICAgY29uc3QgdHlwZU5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG5cbiAgICAgIGlmICghZXhpc3RpbmdUeXBlc01hcFt0eXBlTmFtZV0gJiYgIWRlZmluZWRUeXBlc1t0eXBlTmFtZV0pIHtcbiAgICAgICAgdmFyIF9hbmNlc3RvcnMkO1xuXG4gICAgICAgIGNvbnN0IGRlZmluaXRpb25Ob2RlID1cbiAgICAgICAgICAoX2FuY2VzdG9ycyQgPSBhbmNlc3RvcnNbMl0pICE9PSBudWxsICYmIF9hbmNlc3RvcnMkICE9PSB2b2lkIDBcbiAgICAgICAgICAgID8gX2FuY2VzdG9ycyRcbiAgICAgICAgICAgIDogcGFyZW50O1xuICAgICAgICBjb25zdCBpc1NETCA9IGRlZmluaXRpb25Ob2RlICE9IG51bGwgJiYgaXNTRExOb2RlKGRlZmluaXRpb25Ob2RlKTtcblxuICAgICAgICBpZiAoaXNTREwgJiYgc3RhbmRhcmRUeXBlTmFtZXMuaW5jbHVkZXModHlwZU5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VnZ2VzdGVkVHlwZXMgPSBzdWdnZXN0aW9uTGlzdChcbiAgICAgICAgICB0eXBlTmFtZSxcbiAgICAgICAgICBpc1NETCA/IHN0YW5kYXJkVHlwZU5hbWVzLmNvbmNhdCh0eXBlTmFtZXMpIDogdHlwZU5hbWVzLFxuICAgICAgICApO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgVW5rbm93biB0eXBlIFwiJHt0eXBlTmFtZX1cIi5gICsgZGlkWW91TWVhbihzdWdnZXN0ZWRUeXBlcyksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5vZGVzOiBub2RlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5jb25zdCBzdGFuZGFyZFR5cGVOYW1lcyA9IFsuLi5zcGVjaWZpZWRTY2FsYXJUeXBlcywgLi4uaW50cm9zcGVjdGlvblR5cGVzXS5tYXAoXG4gICh0eXBlKSA9PiB0eXBlLm5hbWUsXG4pO1xuXG5mdW5jdGlvbiBpc1NETE5vZGUodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICAna2luZCcgaW4gdmFsdWUgJiZcbiAgICAoaXNUeXBlU3lzdGVtRGVmaW5pdGlvbk5vZGUodmFsdWUpIHx8IGlzVHlwZVN5c3RlbUV4dGVuc2lvbk5vZGUodmFsdWUpKVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs\n");
|
1273 |
|
1274 | }),
|
1275 |
|
1276 | "../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs":
|
1277 |
|
1278 |
|
1279 |
|
1280 |
|
1281 | (function(module, __webpack_exports__, __webpack_require__) {
|
1282 |
|
1283 | "use strict";
|
1284 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoneAnonymousOperationRule\", function() { return LoneAnonymousOperationRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n\n\n\n/**\n * Lone anonymous operation\n *\n * A GraphQL document is only valid if when it contains an anonymous operation\n * (the query short-hand) that it contains only that one operation definition.\n *\n * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation\n */\nfunction LoneAnonymousOperationRule(context) {\n let operationCount = 0;\n return {\n Document(node) {\n operationCount = node.definitions.filter(\n (definition) => definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OPERATION_DEFINITION,\n ).length;\n },\n\n OperationDefinition(node) {\n if (!node.name && operationCount > 1) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n 'This anonymous operation must be the only defined operation.',\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Mb25lQW5vbnltb3VzT3BlcmF0aW9uUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0xvbmVBbm9ueW1vdXNPcGVyYXRpb25SdWxlLm1qcz8zM2NjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5cbi8qKlxuICogTG9uZSBhbm9ueW1vdXMgb3BlcmF0aW9uXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgd2hlbiBpdCBjb250YWlucyBhbiBhbm9ueW1vdXMgb3BlcmF0aW9uXG4gKiAodGhlIHF1ZXJ5IHNob3J0LWhhbmQpIHRoYXQgaXQgY29udGFpbnMgb25seSB0aGF0IG9uZSBvcGVyYXRpb24gZGVmaW5pdGlvbi5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtTG9uZS1Bbm9ueW1vdXMtT3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBMb25lQW5vbnltb3VzT3BlcmF0aW9uUnVsZShjb250ZXh0KSB7XG4gIGxldCBvcGVyYXRpb25Db3VudCA9IDA7XG4gIHJldHVybiB7XG4gICAgRG9jdW1lbnQobm9kZSkge1xuICAgICAgb3BlcmF0aW9uQ291bnQgPSBub2RlLmRlZmluaXRpb25zLmZpbHRlcihcbiAgICAgICAgKGRlZmluaXRpb24pID0+IGRlZmluaXRpb24ua2luZCA9PT0gS2luZC5PUEVSQVRJT05fREVGSU5JVElPTixcbiAgICAgICkubGVuZ3RoO1xuICAgIH0sXG5cbiAgICBPcGVyYXRpb25EZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIGlmICghbm9kZS5uYW1lICYmIG9wZXJhdGlvbkNvdW50ID4gMSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAnVGhpcyBhbm9ueW1vdXMgb3BlcmF0aW9uIG11c3QgYmUgdGhlIG9ubHkgZGVmaW5lZCBvcGVyYXRpb24uJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbm9kZXM6IG5vZGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs\n");
|
1285 |
|
1286 | }),
|
1287 |
|
1288 | "../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs":
|
1289 |
|
1290 |
|
1291 |
|
1292 |
|
1293 | (function(module, __webpack_exports__, __webpack_require__) {
|
1294 |
|
1295 | "use strict";
|
1296 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoneSchemaDefinitionRule\", function() { return LoneSchemaDefinitionRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Lone Schema definition\n *\n * A GraphQL document is only valid if it contains only one schema definition.\n */\nfunction LoneSchemaDefinitionRule(context) {\n var _ref, _ref2, _oldSchema$astNode;\n\n const oldSchema = context.getSchema();\n const alreadyDefined =\n (_ref =\n (_ref2 =\n (_oldSchema$astNode =\n oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.astNode) !== null && _oldSchema$astNode !== void 0\n ? _oldSchema$astNode\n : oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.getQueryType()) !== null && _ref2 !== void 0\n ? _ref2\n : oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.getMutationType()) !== null && _ref !== void 0\n ? _ref\n : oldSchema === null || oldSchema === void 0\n ? void 0\n : oldSchema.getSubscriptionType();\n let schemaDefinitionsCount = 0;\n return {\n SchemaDefinition(node) {\n if (alreadyDefined) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n 'Cannot define a new schema within a schema extension.',\n {\n nodes: node,\n },\n ),\n );\n return;\n }\n\n if (schemaDefinitionsCount > 0) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"]('Must provide only one schema definition.', {\n nodes: node,\n }),\n );\n }\n\n ++schemaDefinitionsCount;\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Mb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Mb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUubWpzPzlmNmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5cbi8qKlxuICogTG9uZSBTY2hlbWEgZGVmaW5pdGlvblxuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGl0IGNvbnRhaW5zIG9ubHkgb25lIHNjaGVtYSBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gTG9uZVNjaGVtYURlZmluaXRpb25SdWxlKGNvbnRleHQpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfb2xkU2NoZW1hJGFzdE5vZGU7XG5cbiAgY29uc3Qgb2xkU2NoZW1hID0gY29udGV4dC5nZXRTY2hlbWEoKTtcbiAgY29uc3QgYWxyZWFkeURlZmluZWQgPVxuICAgIChfcmVmID1cbiAgICAgIChfcmVmMiA9XG4gICAgICAgIChfb2xkU2NoZW1hJGFzdE5vZGUgPVxuICAgICAgICAgIG9sZFNjaGVtYSA9PT0gbnVsbCB8fCBvbGRTY2hlbWEgPT09IHZvaWQgMFxuICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgIDogb2xkU2NoZW1hLmFzdE5vZGUpICE9PSBudWxsICYmIF9vbGRTY2hlbWEkYXN0Tm9kZSAhPT0gdm9pZCAwXG4gICAgICAgICAgPyBfb2xkU2NoZW1hJGFzdE5vZGVcbiAgICAgICAgICA6IG9sZFNjaGVtYSA9PT0gbnVsbCB8fCBvbGRTY2hlbWEgPT09IHZvaWQgMFxuICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgOiBvbGRTY2hlbWEuZ2V0UXVlcnlUeXBlKCkpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDBcbiAgICAgICAgPyBfcmVmMlxuICAgICAgICA6IG9sZFNjaGVtYSA9PT0gbnVsbCB8fCBvbGRTY2hlbWEgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IG9sZFNjaGVtYS5nZXRNdXRhdGlvblR5cGUoKSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwXG4gICAgICA/IF9yZWZcbiAgICAgIDogb2xkU2NoZW1hID09PSBudWxsIHx8IG9sZFNjaGVtYSA9PT0gdm9pZCAwXG4gICAgICA/IHZvaWQgMFxuICAgICAgOiBvbGRTY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpO1xuICBsZXQgc2NoZW1hRGVmaW5pdGlvbnNDb3VudCA9IDA7XG4gIHJldHVybiB7XG4gICAgU2NoZW1hRGVmaW5pdGlvbihub2RlKSB7XG4gICAgICBpZiAoYWxyZWFkeURlZmluZWQpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgJ0Nhbm5vdCBkZWZpbmUgYSBuZXcgc2NoZW1hIHdpdGhpbiBhIHNjaGVtYSBleHRlbnNpb24uJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbm9kZXM6IG5vZGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHNjaGVtYURlZmluaXRpb25zQ291bnQgPiAwKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcignTXVzdCBwcm92aWRlIG9ubHkgb25lIHNjaGVtYSBkZWZpbml0aW9uLicsIHtcbiAgICAgICAgICAgIG5vZGVzOiBub2RlLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICArK3NjaGVtYURlZmluaXRpb25zQ291bnQ7XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs\n");
|
1297 |
|
1298 | }),
|
1299 |
|
1300 | "../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs":
|
1301 |
|
1302 |
|
1303 |
|
1304 |
|
1305 | (function(module, __webpack_exports__, __webpack_require__) {
|
1306 |
|
1307 | "use strict";
|
1308 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoFragmentCyclesRule\", function() { return NoFragmentCyclesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * No fragment cycles\n *\n * The graph of fragment spreads must not form any cycles including spreading itself.\n * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles\n */\nfunction NoFragmentCyclesRule(context) {\n // Tracks already visited fragments to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors\n\n const spreadPath = []; // Position in the spread path\n\n const spreadPathIndexByName = Object.create(null);\n return {\n OperationDefinition: () => false,\n\n FragmentDefinition(node) {\n detectCycleRecursive(node);\n return false;\n },\n }; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(fragment) {\n if (visitedFrags[fragment.name.value]) {\n return;\n }\n\n const fragmentName = fragment.name.value;\n visitedFrags[fragmentName] = true;\n const spreadNodes = context.getFragmentSpreads(fragment.selectionSet);\n\n if (spreadNodes.length === 0) {\n return;\n }\n\n spreadPathIndexByName[fragmentName] = spreadPath.length;\n\n for (const spreadNode of spreadNodes) {\n const spreadName = spreadNode.name.value;\n const cycleIndex = spreadPathIndexByName[spreadName];\n spreadPath.push(spreadNode);\n\n if (cycleIndex === undefined) {\n const spreadFragment = context.getFragment(spreadName);\n\n if (spreadFragment) {\n detectCycleRecursive(spreadFragment);\n }\n } else {\n const cyclePath = spreadPath.slice(cycleIndex);\n const viaPath = cyclePath\n .slice(0, -1)\n .map((s) => '\"' + s.name.value + '\"')\n .join(', ');\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `Cannot spread fragment \"${spreadName}\" within itself` +\n (viaPath !== '' ? ` via ${viaPath}.` : '.'),\n {\n nodes: cyclePath,\n },\n ),\n );\n }\n\n spreadPath.pop();\n }\n\n spreadPathIndexByName[fragmentName] = undefined;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob0ZyYWdtZW50Q3ljbGVzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL05vRnJhZ21lbnRDeWNsZXNSdWxlLm1qcz8zM2FhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuXG4vKipcbiAqIE5vIGZyYWdtZW50IGN5Y2xlc1xuICpcbiAqIFRoZSBncmFwaCBvZiBmcmFnbWVudCBzcHJlYWRzIG11c3Qgbm90IGZvcm0gYW55IGN5Y2xlcyBpbmNsdWRpbmcgc3ByZWFkaW5nIGl0c2VsZi5cbiAqIE90aGVyd2lzZSBhbiBvcGVyYXRpb24gY291bGQgaW5maW5pdGVseSBzcHJlYWQgb3IgaW5maW5pdGVseSBleGVjdXRlIG9uIGN5Y2xlcyBpbiB0aGUgdW5kZXJseWluZyBkYXRhLlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1GcmFnbWVudC1zcHJlYWRzLW11c3Qtbm90LWZvcm0tY3ljbGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBOb0ZyYWdtZW50Q3ljbGVzUnVsZShjb250ZXh0KSB7XG4gIC8vIFRyYWNrcyBhbHJlYWR5IHZpc2l0ZWQgZnJhZ21lbnRzIHRvIG1haW50YWluIE8oTikgYW5kIHRvIGVuc3VyZSB0aGF0IGN5Y2xlc1xuICAvLyBhcmUgbm90IHJlZHVuZGFudGx5IHJlcG9ydGVkLlxuICBjb25zdCB2aXNpdGVkRnJhZ3MgPSBPYmplY3QuY3JlYXRlKG51bGwpOyAvLyBBcnJheSBvZiBBU1Qgbm9kZXMgdXNlZCB0byBwcm9kdWNlIG1lYW5pbmdmdWwgZXJyb3JzXG5cbiAgY29uc3Qgc3ByZWFkUGF0aCA9IFtdOyAvLyBQb3NpdGlvbiBpbiB0aGUgc3ByZWFkIHBhdGhcblxuICBjb25zdCBzcHJlYWRQYXRoSW5kZXhCeU5hbWUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb246ICgpID0+IGZhbHNlLFxuXG4gICAgRnJhZ21lbnREZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIGRldGVjdEN5Y2xlUmVjdXJzaXZlKG5vZGUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gIH07IC8vIFRoaXMgZG9lcyBhIHN0cmFpZ2h0LWZvcndhcmQgREZTIHRvIGZpbmQgY3ljbGVzLlxuICAvLyBJdCBkb2VzIG5vdCB0ZXJtaW5hdGUgd2hlbiBhIGN5Y2xlIHdhcyBmb3VuZCBidXQgY29udGludWVzIHRvIGV4cGxvcmVcbiAgLy8gdGhlIGdyYXBoIHRvIGZpbmQgYWxsIHBvc3NpYmxlIGN5Y2xlcy5cblxuICBmdW5jdGlvbiBkZXRlY3RDeWNsZVJlY3Vyc2l2ZShmcmFnbWVudCkge1xuICAgIGlmICh2aXNpdGVkRnJhZ3NbZnJhZ21lbnQubmFtZS52YWx1ZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmcmFnbWVudE5hbWUgPSBmcmFnbWVudC5uYW1lLnZhbHVlO1xuICAgIHZpc2l0ZWRGcmFnc1tmcmFnbWVudE5hbWVdID0gdHJ1ZTtcbiAgICBjb25zdCBzcHJlYWROb2RlcyA9IGNvbnRleHQuZ2V0RnJhZ21lbnRTcHJlYWRzKGZyYWdtZW50LnNlbGVjdGlvblNldCk7XG5cbiAgICBpZiAoc3ByZWFkTm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3ByZWFkUGF0aEluZGV4QnlOYW1lW2ZyYWdtZW50TmFtZV0gPSBzcHJlYWRQYXRoLmxlbmd0aDtcblxuICAgIGZvciAoY29uc3Qgc3ByZWFkTm9kZSBvZiBzcHJlYWROb2Rlcykge1xuICAgICAgY29uc3Qgc3ByZWFkTmFtZSA9IHNwcmVhZE5vZGUubmFtZS52YWx1ZTtcbiAgICAgIGNvbnN0IGN5Y2xlSW5kZXggPSBzcHJlYWRQYXRoSW5kZXhCeU5hbWVbc3ByZWFkTmFtZV07XG4gICAgICBzcHJlYWRQYXRoLnB1c2goc3ByZWFkTm9kZSk7XG5cbiAgICAgIGlmIChjeWNsZUluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgc3ByZWFkRnJhZ21lbnQgPSBjb250ZXh0LmdldEZyYWdtZW50KHNwcmVhZE5hbWUpO1xuXG4gICAgICAgIGlmIChzcHJlYWRGcmFnbWVudCkge1xuICAgICAgICAgIGRldGVjdEN5Y2xlUmVjdXJzaXZlKHNwcmVhZEZyYWdtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY3ljbGVQYXRoID0gc3ByZWFkUGF0aC5zbGljZShjeWNsZUluZGV4KTtcbiAgICAgICAgY29uc3QgdmlhUGF0aCA9IGN5Y2xlUGF0aFxuICAgICAgICAgIC5zbGljZSgwLCAtMSlcbiAgICAgICAgICAubWFwKChzKSA9PiAnXCInICsgcy5uYW1lLnZhbHVlICsgJ1wiJylcbiAgICAgICAgICAuam9pbignLCAnKTtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYENhbm5vdCBzcHJlYWQgZnJhZ21lbnQgXCIke3NwcmVhZE5hbWV9XCIgd2l0aGluIGl0c2VsZmAgK1xuICAgICAgICAgICAgICAodmlhUGF0aCAhPT0gJycgPyBgIHZpYSAke3ZpYVBhdGh9LmAgOiAnLicpLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBub2RlczogY3ljbGVQYXRoLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBzcHJlYWRQYXRoLnBvcCgpO1xuICAgIH1cblxuICAgIHNwcmVhZFBhdGhJbmRleEJ5TmFtZVtmcmFnbWVudE5hbWVdID0gdW5kZWZpbmVkO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs\n");
|
1309 |
|
1310 | }),
|
1311 |
|
1312 | "../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs":
|
1313 |
|
1314 |
|
1315 |
|
1316 |
|
1317 | (function(module, __webpack_exports__, __webpack_require__) {
|
1318 |
|
1319 | "use strict";
|
1320 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoUndefinedVariablesRule\", function() { return NoUndefinedVariablesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * No undefined variables\n *\n * A GraphQL operation is only valid if all variables encountered, both directly\n * and via fragment spreads, are defined by that operation.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined\n */\nfunction NoUndefinedVariablesRule(context) {\n let variableNameDefined = Object.create(null);\n return {\n OperationDefinition: {\n enter() {\n variableNameDefined = Object.create(null);\n },\n\n leave(operation) {\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node } of usages) {\n const varName = node.name.value;\n\n if (variableNameDefined[varName] !== true) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n operation.name\n ? `Variable \"$${varName}\" is not defined by operation \"${operation.name.value}\".`\n : `Variable \"$${varName}\" is not defined.`,\n {\n nodes: [node, operation],\n },\n ),\n );\n }\n }\n },\n },\n\n VariableDefinition(node) {\n variableNameDefined[node.variable.name.value] = true;\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUubWpzP2I4MDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5cbi8qKlxuICogTm8gdW5kZWZpbmVkIHZhcmlhYmxlc1xuICpcbiAqIEEgR3JhcGhRTCBvcGVyYXRpb24gaXMgb25seSB2YWxpZCBpZiBhbGwgdmFyaWFibGVzIGVuY291bnRlcmVkLCBib3RoIGRpcmVjdGx5XG4gKiBhbmQgdmlhIGZyYWdtZW50IHNwcmVhZHMsIGFyZSBkZWZpbmVkIGJ5IHRoYXQgb3BlcmF0aW9uLlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1BbGwtVmFyaWFibGUtVXNlcy1EZWZpbmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBOb1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUoY29udGV4dCkge1xuICBsZXQgdmFyaWFibGVOYW1lRGVmaW5lZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiB7XG4gICAgT3BlcmF0aW9uRGVmaW5pdGlvbjoge1xuICAgICAgZW50ZXIoKSB7XG4gICAgICAgIHZhcmlhYmxlTmFtZURlZmluZWQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgfSxcblxuICAgICAgbGVhdmUob3BlcmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHVzYWdlcyA9IGNvbnRleHQuZ2V0UmVjdXJzaXZlVmFyaWFibGVVc2FnZXMob3BlcmF0aW9uKTtcblxuICAgICAgICBmb3IgKGNvbnN0IHsgbm9kZSB9IG9mIHVzYWdlcykge1xuICAgICAgICAgIGNvbnN0IHZhck5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG5cbiAgICAgICAgICBpZiAodmFyaWFibGVOYW1lRGVmaW5lZFt2YXJOYW1lXSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24ubmFtZVxuICAgICAgICAgICAgICAgICAgPyBgVmFyaWFibGUgXCIkJHt2YXJOYW1lfVwiIGlzIG5vdCBkZWZpbmVkIGJ5IG9wZXJhdGlvbiBcIiR7b3BlcmF0aW9uLm5hbWUudmFsdWV9XCIuYFxuICAgICAgICAgICAgICAgICAgOiBgVmFyaWFibGUgXCIkJHt2YXJOYW1lfVwiIGlzIG5vdCBkZWZpbmVkLmAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbm9kZXM6IFtub2RlLCBvcGVyYXRpb25dLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgVmFyaWFibGVEZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIHZhcmlhYmxlTmFtZURlZmluZWRbbm9kZS52YXJpYWJsZS5uYW1lLnZhbHVlXSA9IHRydWU7XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs\n");
|
1321 |
|
1322 | }),
|
1323 |
|
1324 | "../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs":
|
1325 |
|
1326 |
|
1327 |
|
1328 |
|
1329 | (function(module, __webpack_exports__, __webpack_require__) {
|
1330 |
|
1331 | "use strict";
|
1332 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoUnusedFragmentsRule\", function() { return NoUnusedFragmentsRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * No unused fragments\n *\n * A GraphQL document is only valid if all fragment definitions are spread\n * within operations, or spread within other fragments spread within operations.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-Must-Be-Used\n */\nfunction NoUnusedFragmentsRule(context) {\n const operationDefs = [];\n const fragmentDefs = [];\n return {\n OperationDefinition(node) {\n operationDefs.push(node);\n return false;\n },\n\n FragmentDefinition(node) {\n fragmentDefs.push(node);\n return false;\n },\n\n Document: {\n leave() {\n const fragmentNameUsed = Object.create(null);\n\n for (const operation of operationDefs) {\n for (const fragment of context.getRecursivelyReferencedFragments(\n operation,\n )) {\n fragmentNameUsed[fragment.name.value] = true;\n }\n }\n\n for (const fragmentDef of fragmentDefs) {\n const fragName = fragmentDef.name.value;\n\n if (fragmentNameUsed[fragName] !== true) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](`Fragment \"${fragName}\" is never used.`, {\n nodes: fragmentDef,\n }),\n );\n }\n }\n },\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VudXNlZEZyYWdtZW50c1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VudXNlZEZyYWdtZW50c1J1bGUubWpzP2U3ZDYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5cbi8qKlxuICogTm8gdW51c2VkIGZyYWdtZW50c1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBmcmFnbWVudCBkZWZpbml0aW9ucyBhcmUgc3ByZWFkXG4gKiB3aXRoaW4gb3BlcmF0aW9ucywgb3Igc3ByZWFkIHdpdGhpbiBvdGhlciBmcmFnbWVudHMgc3ByZWFkIHdpdGhpbiBvcGVyYXRpb25zLlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1GcmFnbWVudHMtTXVzdC1CZS1Vc2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBOb1VudXNlZEZyYWdtZW50c1J1bGUoY29udGV4dCkge1xuICBjb25zdCBvcGVyYXRpb25EZWZzID0gW107XG4gIGNvbnN0IGZyYWdtZW50RGVmcyA9IFtdO1xuICByZXR1cm4ge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb24obm9kZSkge1xuICAgICAgb3BlcmF0aW9uRGVmcy5wdXNoKG5vZGUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG5cbiAgICBGcmFnbWVudERlZmluaXRpb24obm9kZSkge1xuICAgICAgZnJhZ21lbnREZWZzLnB1c2gobm9kZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcblxuICAgIERvY3VtZW50OiB7XG4gICAgICBsZWF2ZSgpIHtcbiAgICAgICAgY29uc3QgZnJhZ21lbnROYW1lVXNlZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBvcGVyYXRpb24gb2Ygb3BlcmF0aW9uRGVmcykge1xuICAgICAgICAgIGZvciAoY29uc3QgZnJhZ21lbnQgb2YgY29udGV4dC5nZXRSZWN1cnNpdmVseVJlZmVyZW5jZWRGcmFnbWVudHMoXG4gICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgKSkge1xuICAgICAgICAgICAgZnJhZ21lbnROYW1lVXNlZFtmcmFnbWVudC5uYW1lLnZhbHVlXSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmcmFnbWVudERlZiBvZiBmcmFnbWVudERlZnMpIHtcbiAgICAgICAgICBjb25zdCBmcmFnTmFtZSA9IGZyYWdtZW50RGVmLm5hbWUudmFsdWU7XG5cbiAgICAgICAgICBpZiAoZnJhZ21lbnROYW1lVXNlZFtmcmFnTmFtZV0gIT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoYEZyYWdtZW50IFwiJHtmcmFnTmFtZX1cIiBpcyBuZXZlciB1c2VkLmAsIHtcbiAgICAgICAgICAgICAgICBub2RlczogZnJhZ21lbnREZWYsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs\n");
|
1333 |
|
1334 | }),
|
1335 |
|
1336 | "../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs":
|
1337 |
|
1338 |
|
1339 |
|
1340 |
|
1341 | (function(module, __webpack_exports__, __webpack_require__) {
|
1342 |
|
1343 | "use strict";
|
1344 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoUnusedVariablesRule\", function() { return NoUnusedVariablesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * No unused variables\n *\n * A GraphQL operation is only valid if all variables defined by an operation\n * are used, either directly or within a spread fragment.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variables-Used\n */\nfunction NoUnusedVariablesRule(context) {\n let variableDefs = [];\n return {\n OperationDefinition: {\n enter() {\n variableDefs = [];\n },\n\n leave(operation) {\n const variableNameUsed = Object.create(null);\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node } of usages) {\n variableNameUsed[node.name.value] = true;\n }\n\n for (const variableDef of variableDefs) {\n const variableName = variableDef.variable.name.value;\n\n if (variableNameUsed[variableName] !== true) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n operation.name\n ? `Variable \"$${variableName}\" is never used in operation \"${operation.name.value}\".`\n : `Variable \"$${variableName}\" is never used.`,\n {\n nodes: variableDef,\n },\n ),\n );\n }\n }\n },\n },\n\n VariableDefinition(def) {\n variableDefs.push(def);\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VudXNlZFZhcmlhYmxlc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VudXNlZFZhcmlhYmxlc1J1bGUubWpzP2I2OTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5cbi8qKlxuICogTm8gdW51c2VkIHZhcmlhYmxlc1xuICpcbiAqIEEgR3JhcGhRTCBvcGVyYXRpb24gaXMgb25seSB2YWxpZCBpZiBhbGwgdmFyaWFibGVzIGRlZmluZWQgYnkgYW4gb3BlcmF0aW9uXG4gKiBhcmUgdXNlZCwgZWl0aGVyIGRpcmVjdGx5IG9yIHdpdGhpbiBhIHNwcmVhZCBmcmFnbWVudC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtQWxsLVZhcmlhYmxlcy1Vc2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBOb1VudXNlZFZhcmlhYmxlc1J1bGUoY29udGV4dCkge1xuICBsZXQgdmFyaWFibGVEZWZzID0gW107XG4gIHJldHVybiB7XG4gICAgT3BlcmF0aW9uRGVmaW5pdGlvbjoge1xuICAgICAgZW50ZXIoKSB7XG4gICAgICAgIHZhcmlhYmxlRGVmcyA9IFtdO1xuICAgICAgfSxcblxuICAgICAgbGVhdmUob3BlcmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZVVzZWQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBjb25zdCB1c2FnZXMgPSBjb250ZXh0LmdldFJlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzKG9wZXJhdGlvbik7XG5cbiAgICAgICAgZm9yIChjb25zdCB7IG5vZGUgfSBvZiB1c2FnZXMpIHtcbiAgICAgICAgICB2YXJpYWJsZU5hbWVVc2VkW25vZGUubmFtZS52YWx1ZV0gPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCB2YXJpYWJsZURlZiBvZiB2YXJpYWJsZURlZnMpIHtcbiAgICAgICAgICBjb25zdCB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZURlZi52YXJpYWJsZS5uYW1lLnZhbHVlO1xuXG4gICAgICAgICAgaWYgKHZhcmlhYmxlTmFtZVVzZWRbdmFyaWFibGVOYW1lXSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24ubmFtZVxuICAgICAgICAgICAgICAgICAgPyBgVmFyaWFibGUgXCIkJHt2YXJpYWJsZU5hbWV9XCIgaXMgbmV2ZXIgdXNlZCBpbiBvcGVyYXRpb24gXCIke29wZXJhdGlvbi5uYW1lLnZhbHVlfVwiLmBcbiAgICAgICAgICAgICAgICAgIDogYFZhcmlhYmxlIFwiJCR7dmFyaWFibGVOYW1lfVwiIGlzIG5ldmVyIHVzZWQuYCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBub2RlczogdmFyaWFibGVEZWYsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBWYXJpYWJsZURlZmluaXRpb24oZGVmKSB7XG4gICAgICB2YXJpYWJsZURlZnMucHVzaChkZWYpO1xuICAgIH0sXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs\n");
|
1345 |
|
1346 | }),
|
1347 |
|
1348 | "../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs":
|
1349 |
|
1350 |
|
1351 |
|
1352 |
|
1353 | (function(module, __webpack_exports__, __webpack_require__) {
|
1354 |
|
1355 | "use strict";
|
1356 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OverlappingFieldsCanBeMergedRule\", function() { return OverlappingFieldsCanBeMergedRule; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_sortValueNode_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utilities/sortValueNode.mjs */ \"../../../node_modules/graphql/utilities/sortValueNode.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n\n\n\nfunction reasonMessage(reason) {\n if (Array.isArray(reason)) {\n return reason\n .map(\n ([responseName, subReason]) =>\n `subfields \"${responseName}\" conflict because ` +\n reasonMessage(subReason),\n )\n .join(' and ');\n }\n\n return reason;\n}\n/**\n * Overlapping fields can be merged\n *\n * A selection set is only valid if all fields (including spreading any\n * fragments) either correspond to distinct response names or can be merged\n * without ambiguity.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selection-Merging\n */\n\nfunction OverlappingFieldsCanBeMergedRule(context) {\n // A memoization for when two fragments are compared \"between\" each other for\n // conflicts. Two fragments may be compared many times, so memoizing this can\n // dramatically improve the performance of this validator.\n const comparedFragmentPairs = new PairSet(); // A cache for the \"field map\" and list of fragment names found in any given\n // selection set. Selection sets may be asked for this information multiple\n // times, so this improves the performance of this validator.\n\n const cachedFieldsAndFragmentNames = new Map();\n return {\n SelectionSet(selectionSet) {\n const conflicts = findConflictsWithinSelectionSet(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n context.getParentType(),\n selectionSet,\n );\n\n for (const [[responseName, reason], fields1, fields2] of conflicts) {\n const reasonMsg = reasonMessage(reason);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `Fields \"${responseName}\" conflict because ${reasonMsg}. Use different aliases on the fields to fetch both if this was intentional.`,\n {\n nodes: fields1.concat(fields2),\n },\n ),\n );\n }\n },\n };\n}\n\n/**\n * Algorithm:\n *\n * Conflicts occur when two fields exist in a query which will produce the same\n * response name, but represent differing values, thus creating a conflict.\n * The algorithm below finds all conflicts via making a series of comparisons\n * between fields. In order to compare as few fields as possible, this makes\n * a series of comparisons \"within\" sets of fields and \"between\" sets of fields.\n *\n * Given any selection set, a collection produces both a set of fields by\n * also including all inline fragments, as well as a list of fragments\n * referenced by fragment spreads.\n *\n * A) Each selection set represented in the document first compares \"within\" its\n * collected set of fields, finding any conflicts between every pair of\n * overlapping fields.\n * Note: This is the *only time* that a the fields \"within\" a set are compared\n * to each other. After this only fields \"between\" sets are compared.\n *\n * B) Also, if any fragment is referenced in a selection set, then a\n * comparison is made \"between\" the original set of fields and the\n * referenced fragment.\n *\n * C) Also, if multiple fragments are referenced, then comparisons\n * are made \"between\" each referenced fragment.\n *\n * D) When comparing \"between\" a set of fields and a referenced fragment, first\n * a comparison is made between each field in the original set of fields and\n * each field in the the referenced set of fields.\n *\n * E) Also, if any fragment is referenced in the referenced selection set,\n * then a comparison is made \"between\" the original set of fields and the\n * referenced fragment (recursively referring to step D).\n *\n * F) When comparing \"between\" two fragments, first a comparison is made between\n * each field in the first referenced set of fields and each field in the the\n * second referenced set of fields.\n *\n * G) Also, any fragments referenced by the first must be compared to the\n * second, and any fragments referenced by the second must be compared to the\n * first (recursively referring to step F).\n *\n * H) When comparing two fields, if both have selection sets, then a comparison\n * is made \"between\" both selection sets, first comparing the set of fields in\n * the first selection set with the set of fields in the second.\n *\n * I) Also, if any fragment is referenced in either selection set, then a\n * comparison is made \"between\" the other set of fields and the\n * referenced fragment.\n *\n * J) Also, if two fragments are referenced in both selection sets, then a\n * comparison is made \"between\" the two fragments.\n *\n */\n// Find all conflicts found \"within\" a selection set, including those found\n// via spreading in fragments. Called when visiting each SelectionSet in the\n// GraphQL Document.\nfunction findConflictsWithinSelectionSet(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentType,\n selectionSet,\n) {\n const conflicts = [];\n const [fieldMap, fragmentNames] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType,\n selectionSet,\n ); // (A) Find find all conflicts \"within\" the fields of this selection set.\n // Note: this is the *only place* `collectConflictsWithin` is called.\n\n collectConflictsWithin(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n fieldMap,\n );\n\n if (fragmentNames.length !== 0) {\n // (B) Then collect conflicts between these fields and those represented by\n // each spread fragment name found.\n for (let i = 0; i < fragmentNames.length; i++) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n false,\n fieldMap,\n fragmentNames[i],\n ); // (C) Then compare this fragment with all other fragments found in this\n // selection set to collect conflicts between fragments spread together.\n // This compares each item in the list of fragment names to every other\n // item in that same list (except for itself).\n\n for (let j = i + 1; j < fragmentNames.length; j++) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n false,\n fragmentNames[i],\n fragmentNames[j],\n );\n }\n }\n }\n\n return conflicts;\n} // Collect all conflicts found between a set of fields and a fragment reference\n// including via spreading in any nested fragments.\n\nfunction collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n fragmentName,\n) {\n const fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n return;\n }\n\n const [fieldMap2, referencedFragmentNames] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment,\n ); // Do not compare a fragment's fieldMap to itself.\n\n if (fieldMap === fieldMap2) {\n return;\n } // (D) First collect any conflicts between the provided collection of fields\n // and the collection of fields represented by the given fragment.\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n fieldMap2,\n ); // (E) Then collect any conflicts between the provided collection of fields\n // and any fragment names found in the given fragment.\n\n for (const referencedFragmentName of referencedFragmentNames) {\n // Memoize so two fragments are not compared for conflicts more than once.\n if (\n comparedFragmentPairs.has(\n referencedFragmentName,\n fragmentName,\n areMutuallyExclusive,\n )\n ) {\n continue;\n }\n\n comparedFragmentPairs.add(\n referencedFragmentName,\n fragmentName,\n areMutuallyExclusive,\n );\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n referencedFragmentName,\n );\n }\n} // Collect all conflicts found between two fragments, including via spreading in\n// any nested fragments.\n\nfunction collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n fragmentName2,\n) {\n // No need to compare a fragment to itself.\n if (fragmentName1 === fragmentName2) {\n return;\n } // Memoize so two fragments are not compared for conflicts more than once.\n\n if (\n comparedFragmentPairs.has(\n fragmentName1,\n fragmentName2,\n areMutuallyExclusive,\n )\n ) {\n return;\n }\n\n comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive);\n const fragment1 = context.getFragment(fragmentName1);\n const fragment2 = context.getFragment(fragmentName2);\n\n if (!fragment1 || !fragment2) {\n return;\n }\n\n const [fieldMap1, referencedFragmentNames1] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment1,\n );\n const [fieldMap2, referencedFragmentNames2] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment2,\n ); // (F) First, collect all conflicts between these two collections of fields\n // (not including any nested fragments).\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n ); // (G) Then collect conflicts between the first fragment and any nested\n // fragments spread in the second fragment.\n\n for (const referencedFragmentName2 of referencedFragmentNames2) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n referencedFragmentName2,\n );\n } // (G) Then collect conflicts between the second fragment and any nested\n // fragments spread in the first fragment.\n\n for (const referencedFragmentName1 of referencedFragmentNames1) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n referencedFragmentName1,\n fragmentName2,\n );\n }\n} // Find all conflicts found between two selection sets, including those found\n// via spreading in fragments. Called when determining if conflicts exist\n// between the sub-fields of two overlapping fields.\n\nfunction findConflictsBetweenSubSelectionSets(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n parentType1,\n selectionSet1,\n parentType2,\n selectionSet2,\n) {\n const conflicts = [];\n const [fieldMap1, fragmentNames1] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType1,\n selectionSet1,\n );\n const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType2,\n selectionSet2,\n ); // (H) First, collect all conflicts between these two collections of field.\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n ); // (I) Then collect conflicts between the first collection of fields and\n // those referenced by each fragment name associated with the second.\n\n for (const fragmentName2 of fragmentNames2) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fragmentName2,\n );\n } // (I) Then collect conflicts between the second collection of fields and\n // those referenced by each fragment name associated with the first.\n\n for (const fragmentName1 of fragmentNames1) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap2,\n fragmentName1,\n );\n } // (J) Also collect conflicts between any fragment names by the first and\n // fragment names by the second. This compares each item in the first set of\n // names to each item in the second set of names.\n\n for (const fragmentName1 of fragmentNames1) {\n for (const fragmentName2 of fragmentNames2) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n fragmentName2,\n );\n }\n }\n\n return conflicts;\n} // Collect all Conflicts \"within\" one collection of fields.\n\nfunction collectConflictsWithin(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n fieldMap,\n) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For every response name, if there are multiple fields, they\n // must be compared to find a potential conflict.\n for (const [responseName, fields] of Object.entries(fieldMap)) {\n // This compares every field in the list to every other field in this list\n // (except to itself). If the list only has one item, nothing needs to\n // be compared.\n if (fields.length > 1) {\n for (let i = 0; i < fields.length; i++) {\n for (let j = i + 1; j < fields.length; j++) {\n const conflict = findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n false, // within one collection is never mutually exclusive\n responseName,\n fields[i],\n fields[j],\n );\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Collect all Conflicts between two collections of fields. This is similar to,\n// but different from the `collectConflictsWithin` function above. This check\n// assumes that `collectConflictsWithin` has already been called on each\n// provided collection of fields. This is true because this validator traverses\n// each individual selection set.\n\nfunction collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For any response name which appears in both provided field\n // maps, each field from the first field map must be compared to every field\n // in the second field map to find potential conflicts.\n for (const [responseName, fields1] of Object.entries(fieldMap1)) {\n const fields2 = fieldMap2[responseName];\n\n if (fields2) {\n for (const field1 of fields1) {\n for (const field2 of fields2) {\n const conflict = findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n responseName,\n field1,\n field2,\n );\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Determines if there is a conflict between two particular fields, including\n// comparing their sub-fields.\n\nfunction findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n responseName,\n field1,\n field2,\n) {\n const [parentType1, node1, def1] = field1;\n const [parentType2, node2, def2] = field2; // If it is known that two fields could not possibly apply at the same\n // time, due to the parent types, then it is safe to permit them to diverge\n // in aliased field or arguments used as they will not present any ambiguity\n // by differing.\n // It is known that two parent types could never overlap if they are\n // different Object types. Interface or Union types might overlap - if not\n // in the current state of the schema, then perhaps in some future version,\n // thus may not safely diverge.\n\n const areMutuallyExclusive =\n parentFieldsAreMutuallyExclusive ||\n (parentType1 !== parentType2 &&\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(parentType1) &&\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(parentType2));\n\n if (!areMutuallyExclusive) {\n // Two aliases must refer to the same field.\n const name1 = node1.name.value;\n const name2 = node2.name.value;\n\n if (name1 !== name2) {\n return [\n [responseName, `\"${name1}\" and \"${name2}\" are different fields`],\n [node1],\n [node2],\n ];\n } // Two field calls must have the same arguments.\n\n if (stringifyArguments(node1) !== stringifyArguments(node2)) {\n return [\n [responseName, 'they have differing arguments'],\n [node1],\n [node2],\n ];\n }\n } // The return type for each field.\n\n const type1 = def1 === null || def1 === void 0 ? void 0 : def1.type;\n const type2 = def2 === null || def2 === void 0 ? void 0 : def2.type;\n\n if (type1 && type2 && doTypesConflict(type1, type2)) {\n return [\n [\n responseName,\n `they return conflicting types \"${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(type1)}\" and \"${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(\n type2,\n )}\"`,\n ],\n [node1],\n [node2],\n ];\n } // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n // for both collections so fields in a fragment reference are never\n // compared to themselves.\n\n const selectionSet1 = node1.selectionSet;\n const selectionSet2 = node2.selectionSet;\n\n if (selectionSet1 && selectionSet2) {\n const conflicts = findConflictsBetweenSubSelectionSets(\n context,\n cachedFieldsAndFragmentNames,\n comparedFragmentPairs,\n areMutuallyExclusive,\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getNamedType\"])(type1),\n selectionSet1,\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getNamedType\"])(type2),\n selectionSet2,\n );\n return subfieldConflicts(conflicts, responseName, node1, node2);\n }\n}\n\nfunction stringifyArguments(fieldNode) {\n var _fieldNode$arguments;\n\n // FIXME https://github.com/graphql/graphql-js/issues/2203\n const args =\n /* c8 ignore next */\n (_fieldNode$arguments = fieldNode.arguments) !== null &&\n _fieldNode$arguments !== void 0\n ? _fieldNode$arguments\n : [];\n const inputObjectWithArgs = {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Kind\"].OBJECT,\n fields: args.map((argNode) => ({\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Kind\"].OBJECT_FIELD,\n name: argNode.name,\n value: argNode.value,\n })),\n };\n return Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__[\"print\"])(Object(_utilities_sortValueNode_mjs__WEBPACK_IMPORTED_MODULE_5__[\"sortValueNode\"])(inputObjectWithArgs));\n} // Two types conflict if both types could not apply to a value simultaneously.\n// Composite types are ignored as their individual field types will be compared\n// later recursively. However List and Non-Null types must match.\n\nfunction doTypesConflict(type1, type2) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isListType\"])(type1)) {\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isListType\"])(type2)\n ? doTypesConflict(type1.ofType, type2.ofType)\n : true;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isListType\"])(type2)) {\n return true;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(type1)) {\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(type2)\n ? doTypesConflict(type1.ofType, type2.ofType)\n : true;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isNonNullType\"])(type2)) {\n return true;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isLeafType\"])(type1) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isLeafType\"])(type2)) {\n return type1 !== type2;\n }\n\n return false;\n} // Given a selection set, return the collection of fields (a mapping of response\n// name to field nodes and definitions) as well as a list of fragment names\n// referenced via fragment spreads.\n\nfunction getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType,\n selectionSet,\n) {\n const cached = cachedFieldsAndFragmentNames.get(selectionSet);\n\n if (cached) {\n return cached;\n }\n\n const nodeAndDefs = Object.create(null);\n const fragmentNames = Object.create(null);\n\n _collectFieldsAndFragmentNames(\n context,\n parentType,\n selectionSet,\n nodeAndDefs,\n fragmentNames,\n );\n\n const result = [nodeAndDefs, Object.keys(fragmentNames)];\n cachedFieldsAndFragmentNames.set(selectionSet, result);\n return result;\n} // Given a reference to a fragment, return the represented collection of fields\n// as well as a list of nested fragment names referenced via fragment spreads.\n\nfunction getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment,\n) {\n // Short-circuit building a type from the node if possible.\n const cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet);\n\n if (cached) {\n return cached;\n }\n\n const fragmentType = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_6__[\"typeFromAST\"])(context.getSchema(), fragment.typeCondition);\n return getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragmentType,\n fragment.selectionSet,\n );\n}\n\nfunction _collectFieldsAndFragmentNames(\n context,\n parentType,\n selectionSet,\n nodeAndDefs,\n fragmentNames,\n) {\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Kind\"].FIELD: {\n const fieldName = selection.name.value;\n let fieldDef;\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(parentType) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(parentType)) {\n fieldDef = parentType.getFields()[fieldName];\n }\n\n const responseName = selection.alias\n ? selection.alias.value\n : fieldName;\n\n if (!nodeAndDefs[responseName]) {\n nodeAndDefs[responseName] = [];\n }\n\n nodeAndDefs[responseName].push([parentType, selection, fieldDef]);\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Kind\"].FRAGMENT_SPREAD:\n fragmentNames[selection.name.value] = true;\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Kind\"].INLINE_FRAGMENT: {\n const typeCondition = selection.typeCondition;\n const inlineFragmentType = typeCondition\n ? Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_6__[\"typeFromAST\"])(context.getSchema(), typeCondition)\n : parentType;\n\n _collectFieldsAndFragmentNames(\n context,\n inlineFragmentType,\n selection.selectionSet,\n nodeAndDefs,\n fragmentNames,\n );\n\n break;\n }\n }\n }\n} // Given a series of Conflicts which occurred between two sub-fields, generate\n// a single Conflict.\n\nfunction subfieldConflicts(conflicts, responseName, node1, node2) {\n if (conflicts.length > 0) {\n return [\n [responseName, conflicts.map(([reason]) => reason)],\n [node1, ...conflicts.map(([, fields1]) => fields1).flat()],\n [node2, ...conflicts.map(([, , fields2]) => fields2).flat()],\n ];\n }\n}\n/**\n * A way to keep track of pairs of things when the ordering of the pair does not matter.\n */\n\nclass PairSet {\n constructor() {\n this._data = new Map();\n }\n\n has(a, b, areMutuallyExclusive) {\n var _this$_data$get;\n\n const [key1, key2] = a < b ? [a, b] : [b, a];\n const result =\n (_this$_data$get = this._data.get(key1)) === null ||\n _this$_data$get === void 0\n ? void 0\n : _this$_data$get.get(key2);\n\n if (result === undefined) {\n return false;\n } // areMutuallyExclusive being false is a superset of being true, hence if\n // we want to know if this PairSet \"has\" these two with no exclusivity,\n // we have to ensure it was added as such.\n\n return areMutuallyExclusive ? true : areMutuallyExclusive === result;\n }\n\n add(a, b, areMutuallyExclusive) {\n const [key1, key2] = a < b ? [a, b] : [b, a];\n\n const map = this._data.get(key1);\n\n if (map === undefined) {\n this._data.set(key1, new Map([[key2, areMutuallyExclusive]]));\n } else {\n map.set(key2, areMutuallyExclusive);\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9PdmVybGFwcGluZ0ZpZWxkc0NhbkJlTWVyZ2VkUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL092ZXJsYXBwaW5nRmllbGRzQ2FuQmVNZXJnZWRSdWxlLm1qcz8yZDk0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi8uLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBwcmludCB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL3ByaW50ZXIubWpzJztcbmltcG9ydCB7XG4gIGdldE5hbWVkVHlwZSxcbiAgaXNJbnRlcmZhY2VUeXBlLFxuICBpc0xlYWZUeXBlLFxuICBpc0xpc3RUeXBlLFxuICBpc05vbk51bGxUeXBlLFxuICBpc09iamVjdFR5cGUsXG59IGZyb20gJy4uLy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHsgc29ydFZhbHVlTm9kZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9zb3J0VmFsdWVOb2RlLm1qcyc7XG5pbXBvcnQgeyB0eXBlRnJvbUFTVCB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy90eXBlRnJvbUFTVC5tanMnO1xuXG5mdW5jdGlvbiByZWFzb25NZXNzYWdlKHJlYXNvbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyZWFzb24pKSB7XG4gICAgcmV0dXJuIHJlYXNvblxuICAgICAgLm1hcChcbiAgICAgICAgKFtyZXNwb25zZU5hbWUsIHN1YlJlYXNvbl0pID0+XG4gICAgICAgICAgYHN1YmZpZWxkcyBcIiR7cmVzcG9uc2VOYW1lfVwiIGNvbmZsaWN0IGJlY2F1c2UgYCArXG4gICAgICAgICAgcmVhc29uTWVzc2FnZShzdWJSZWFzb24pLFxuICAgICAgKVxuICAgICAgLmpvaW4oJyBhbmQgJyk7XG4gIH1cblxuICByZXR1cm4gcmVhc29uO1xufVxuLyoqXG4gKiBPdmVybGFwcGluZyBmaWVsZHMgY2FuIGJlIG1lcmdlZFxuICpcbiAqIEEgc2VsZWN0aW9uIHNldCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBmaWVsZHMgKGluY2x1ZGluZyBzcHJlYWRpbmcgYW55XG4gKiBmcmFnbWVudHMpIGVpdGhlciBjb3JyZXNwb25kIHRvIGRpc3RpbmN0IHJlc3BvbnNlIG5hbWVzIG9yIGNhbiBiZSBtZXJnZWRcbiAqIHdpdGhvdXQgYW1iaWd1aXR5LlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1GaWVsZC1TZWxlY3Rpb24tTWVyZ2luZ1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBPdmVybGFwcGluZ0ZpZWxkc0NhbkJlTWVyZ2VkUnVsZShjb250ZXh0KSB7XG4gIC8vIEEgbWVtb2l6YXRpb24gZm9yIHdoZW4gdHdvIGZyYWdtZW50cyBhcmUgY29tcGFyZWQgXCJiZXR3ZWVuXCIgZWFjaCBvdGhlciBmb3JcbiAgLy8gY29uZmxpY3RzLiBUd28gZnJhZ21lbnRzIG1heSBiZSBjb21wYXJlZCBtYW55IHRpbWVzLCBzbyBtZW1vaXppbmcgdGhpcyBjYW5cbiAgLy8gZHJhbWF0aWNhbGx5IGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHRoaXMgdmFsaWRhdG9yLlxuICBjb25zdCBjb21wYXJlZEZyYWdtZW50UGFpcnMgPSBuZXcgUGFpclNldCgpOyAvLyBBIGNhY2hlIGZvciB0aGUgXCJmaWVsZCBtYXBcIiBhbmQgbGlzdCBvZiBmcmFnbWVudCBuYW1lcyBmb3VuZCBpbiBhbnkgZ2l2ZW5cbiAgLy8gc2VsZWN0aW9uIHNldC4gU2VsZWN0aW9uIHNldHMgbWF5IGJlIGFza2VkIGZvciB0aGlzIGluZm9ybWF0aW9uIG11bHRpcGxlXG4gIC8vIHRpbWVzLCBzbyB0aGlzIGltcHJvdmVzIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGlzIHZhbGlkYXRvci5cblxuICBjb25zdCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzID0gbmV3IE1hcCgpO1xuICByZXR1cm4ge1xuICAgIFNlbGVjdGlvblNldChzZWxlY3Rpb25TZXQpIHtcbiAgICAgIGNvbnN0IGNvbmZsaWN0cyA9IGZpbmRDb25mbGljdHNXaXRoaW5TZWxlY3Rpb25TZXQoXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgICAgIGNvbXBhcmVkRnJhZ21lbnRQYWlycyxcbiAgICAgICAgY29udGV4dC5nZXRQYXJlbnRUeXBlKCksXG4gICAgICAgIHNlbGVjdGlvblNldCxcbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgW1tyZXNwb25zZU5hbWUsIHJlYXNvbl0sIGZpZWxkczEsIGZpZWxkczJdIG9mIGNvbmZsaWN0cykge1xuICAgICAgICBjb25zdCByZWFzb25Nc2cgPSByZWFzb25NZXNzYWdlKHJlYXNvbik7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBGaWVsZHMgXCIke3Jlc3BvbnNlTmFtZX1cIiBjb25mbGljdCBiZWNhdXNlICR7cmVhc29uTXNnfS4gVXNlIGRpZmZlcmVudCBhbGlhc2VzIG9uIHRoZSBmaWVsZHMgdG8gZmV0Y2ggYm90aCBpZiB0aGlzIHdhcyBpbnRlbnRpb25hbC5gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBub2RlczogZmllbGRzMS5jb25jYXQoZmllbGRzMiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbGdvcml0aG06XG4gKlxuICogQ29uZmxpY3RzIG9jY3VyIHdoZW4gdHdvIGZpZWxkcyBleGlzdCBpbiBhIHF1ZXJ5IHdoaWNoIHdpbGwgcHJvZHVjZSB0aGUgc2FtZVxuICogcmVzcG9uc2UgbmFtZSwgYnV0IHJlcHJlc2VudCBkaWZmZXJpbmcgdmFsdWVzLCB0aHVzIGNyZWF0aW5nIGEgY29uZmxpY3QuXG4gKiBUaGUgYWxnb3JpdGhtIGJlbG93IGZpbmRzIGFsbCBjb25mbGljdHMgdmlhIG1ha2luZyBhIHNlcmllcyBvZiBjb21wYXJpc29uc1xuICogYmV0d2VlbiBmaWVsZHMuIEluIG9yZGVyIHRvIGNvbXBhcmUgYXMgZmV3IGZpZWxkcyBhcyBwb3NzaWJsZSwgdGhpcyBtYWtlc1xuICogYSBzZXJpZXMgb2YgY29tcGFyaXNvbnMgXCJ3aXRoaW5cIiBzZXRzIG9mIGZpZWxkcyBhbmQgXCJiZXR3ZWVuXCIgc2V0cyBvZiBmaWVsZHMuXG4gKlxuICogR2l2ZW4gYW55IHNlbGVjdGlvbiBzZXQsIGEgY29sbGVjdGlvbiBwcm9kdWNlcyBib3RoIGEgc2V0IG9mIGZpZWxkcyBieVxuICogYWxzbyBpbmNsdWRpbmcgYWxsIGlubGluZSBmcmFnbWVudHMsIGFzIHdlbGwgYXMgYSBsaXN0IG9mIGZyYWdtZW50c1xuICogcmVmZXJlbmNlZCBieSBmcmFnbWVudCBzcHJlYWRzLlxuICpcbiAqIEEpIEVhY2ggc2VsZWN0aW9uIHNldCByZXByZXNlbnRlZCBpbiB0aGUgZG9jdW1lbnQgZmlyc3QgY29tcGFyZXMgXCJ3aXRoaW5cIiBpdHNcbiAqIGNvbGxlY3RlZCBzZXQgb2YgZmllbGRzLCBmaW5kaW5nIGFueSBjb25mbGljdHMgYmV0d2VlbiBldmVyeSBwYWlyIG9mXG4gKiBvdmVybGFwcGluZyBmaWVsZHMuXG4gKiBOb3RlOiBUaGlzIGlzIHRoZSAqb25seSB0aW1lKiB0aGF0IGEgdGhlIGZpZWxkcyBcIndpdGhpblwiIGEgc2V0IGFyZSBjb21wYXJlZFxuICogdG8gZWFjaCBvdGhlci4gQWZ0ZXIgdGhpcyBvbmx5IGZpZWxkcyBcImJldHdlZW5cIiBzZXRzIGFyZSBjb21wYXJlZC5cbiAqXG4gKiBCKSBBbHNvLCBpZiBhbnkgZnJhZ21lbnQgaXMgcmVmZXJlbmNlZCBpbiBhIHNlbGVjdGlvbiBzZXQsIHRoZW4gYVxuICogY29tcGFyaXNvbiBpcyBtYWRlIFwiYmV0d2VlblwiIHRoZSBvcmlnaW5hbCBzZXQgb2YgZmllbGRzIGFuZCB0aGVcbiAqIHJlZmVyZW5jZWQgZnJhZ21lbnQuXG4gKlxuICogQykgQWxzbywgaWYgbXVsdGlwbGUgZnJhZ21lbnRzIGFyZSByZWZlcmVuY2VkLCB0aGVuIGNvbXBhcmlzb25zXG4gKiBhcmUgbWFkZSBcImJldHdlZW5cIiBlYWNoIHJlZmVyZW5jZWQgZnJhZ21lbnQuXG4gKlxuICogRCkgV2hlbiBjb21wYXJpbmcgXCJiZXR3ZWVuXCIgYSBzZXQgb2YgZmllbGRzIGFuZCBhIHJlZmVyZW5jZWQgZnJhZ21lbnQsIGZpcnN0XG4gKiBhIGNvbXBhcmlzb24gaXMgbWFkZSBiZXR3ZWVuIGVhY2ggZmllbGQgaW4gdGhlIG9yaWdpbmFsIHNldCBvZiBmaWVsZHMgYW5kXG4gKiBlYWNoIGZpZWxkIGluIHRoZSB0aGUgcmVmZXJlbmNlZCBzZXQgb2YgZmllbGRzLlxuICpcbiAqIEUpIEFsc28sIGlmIGFueSBmcmFnbWVudCBpcyByZWZlcmVuY2VkIGluIHRoZSByZWZlcmVuY2VkIHNlbGVjdGlvbiBzZXQsXG4gKiB0aGVuIGEgY29tcGFyaXNvbiBpcyBtYWRlIFwiYmV0d2VlblwiIHRoZSBvcmlnaW5hbCBzZXQgb2YgZmllbGRzIGFuZCB0aGVcbiAqIHJlZmVyZW5jZWQgZnJhZ21lbnQgKHJlY3Vyc2l2ZWx5IHJlZmVycmluZyB0byBzdGVwIEQpLlxuICpcbiAqIEYpIFdoZW4gY29tcGFyaW5nIFwiYmV0d2VlblwiIHR3byBmcmFnbWVudHMsIGZpcnN0IGEgY29tcGFyaXNvbiBpcyBtYWRlIGJldHdlZW5cbiAqIGVhY2ggZmllbGQgaW4gdGhlIGZpcnN0IHJlZmVyZW5jZWQgc2V0IG9mIGZpZWxkcyBhbmQgZWFjaCBmaWVsZCBpbiB0aGUgdGhlXG4gKiBzZWNvbmQgcmVmZXJlbmNlZCBzZXQgb2YgZmllbGRzLlxuICpcbiAqIEcpIEFsc28sIGFueSBmcmFnbWVudHMgcmVmZXJlbmNlZCBieSB0aGUgZmlyc3QgbXVzdCBiZSBjb21wYXJlZCB0byB0aGVcbiAqIHNlY29uZCwgYW5kIGFueSBmcmFnbWVudHMgcmVmZXJlbmNlZCBieSB0aGUgc2Vjb25kIG11c3QgYmUgY29tcGFyZWQgdG8gdGhlXG4gKiBmaXJzdCAocmVjdXJzaXZlbHkgcmVmZXJyaW5nIHRvIHN0ZXAgRikuXG4gKlxuICogSCkgV2hlbiBjb21wYXJpbmcgdHdvIGZpZWxkcywgaWYgYm90aCBoYXZlIHNlbGVjdGlvbiBzZXRzLCB0aGVuIGEgY29tcGFyaXNvblxuICogaXMgbWFkZSBcImJldHdlZW5cIiBib3RoIHNlbGVjdGlvbiBzZXRzLCBmaXJzdCBjb21wYXJpbmcgdGhlIHNldCBvZiBmaWVsZHMgaW5cbiAqIHRoZSBmaXJzdCBzZWxlY3Rpb24gc2V0IHdpdGggdGhlIHNldCBvZiBmaWVsZHMgaW4gdGhlIHNlY29uZC5cbiAqXG4gKiBJKSBBbHNvLCBpZiBhbnkgZnJhZ21lbnQgaXMgcmVmZXJlbmNlZCBpbiBlaXRoZXIgc2VsZWN0aW9uIHNldCwgdGhlbiBhXG4gKiBjb21wYXJpc29uIGlzIG1hZGUgXCJiZXR3ZWVuXCIgdGhlIG90aGVyIHNldCBvZiBmaWVsZHMgYW5kIHRoZVxuICogcmVmZXJlbmNlZCBmcmFnbWVudC5cbiAqXG4gKiBKKSBBbHNvLCBpZiB0d28gZnJhZ21lbnRzIGFyZSByZWZlcmVuY2VkIGluIGJvdGggc2VsZWN0aW9uIHNldHMsIHRoZW4gYVxuICogY29tcGFyaXNvbiBpcyBtYWRlIFwiYmV0d2VlblwiIHRoZSB0d28gZnJhZ21lbnRzLlxuICpcbiAqL1xuLy8gRmluZCBhbGwgY29uZmxpY3RzIGZvdW5kIFwid2l0aGluXCIgYSBzZWxlY3Rpb24gc2V0LCBpbmNsdWRpbmcgdGhvc2UgZm91bmRcbi8vIHZpYSBzcHJlYWRpbmcgaW4gZnJhZ21lbnRzLiBDYWxsZWQgd2hlbiB2aXNpdGluZyBlYWNoIFNlbGVjdGlvblNldCBpbiB0aGVcbi8vIEdyYXBoUUwgRG9jdW1lbnQuXG5mdW5jdGlvbiBmaW5kQ29uZmxpY3RzV2l0aGluU2VsZWN0aW9uU2V0KFxuICBjb250ZXh0LFxuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gIHBhcmVudFR5cGUsXG4gIHNlbGVjdGlvblNldCxcbikge1xuICBjb25zdCBjb25mbGljdHMgPSBbXTtcbiAgY29uc3QgW2ZpZWxkTWFwLCBmcmFnbWVudE5hbWVzXSA9IGdldEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoXG4gICAgY29udGV4dCxcbiAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgIHBhcmVudFR5cGUsXG4gICAgc2VsZWN0aW9uU2V0LFxuICApOyAvLyAoQSkgRmluZCBmaW5kIGFsbCBjb25mbGljdHMgXCJ3aXRoaW5cIiB0aGUgZmllbGRzIG9mIHRoaXMgc2VsZWN0aW9uIHNldC5cbiAgLy8gTm90ZTogdGhpcyBpcyB0aGUgKm9ubHkgcGxhY2UqIGBjb2xsZWN0Q29uZmxpY3RzV2l0aGluYCBpcyBjYWxsZWQuXG5cbiAgY29sbGVjdENvbmZsaWN0c1dpdGhpbihcbiAgICBjb250ZXh0LFxuICAgIGNvbmZsaWN0cyxcbiAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgIGNvbXBhcmVkRnJhZ21lbnRQYWlycyxcbiAgICBmaWVsZE1hcCxcbiAgKTtcblxuICBpZiAoZnJhZ21lbnROYW1lcy5sZW5ndGggIT09IDApIHtcbiAgICAvLyAoQikgVGhlbiBjb2xsZWN0IGNvbmZsaWN0cyBiZXR3ZWVuIHRoZXNlIGZpZWxkcyBhbmQgdGhvc2UgcmVwcmVzZW50ZWQgYnlcbiAgICAvLyBlYWNoIHNwcmVhZCBmcmFnbWVudCBuYW1lIGZvdW5kLlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJhZ21lbnROYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29sbGVjdENvbmZsaWN0c0JldHdlZW5GaWVsZHNBbmRGcmFnbWVudChcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgY29uZmxpY3RzLFxuICAgICAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgICAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBmaWVsZE1hcCxcbiAgICAgICAgZnJhZ21lbnROYW1lc1tpXSxcbiAgICAgICk7IC8vIChDKSBUaGVuIGNvbXBhcmUgdGhpcyBmcmFnbWVudCB3aXRoIGFsbCBvdGhlciBmcmFnbWVudHMgZm91bmQgaW4gdGhpc1xuICAgICAgLy8gc2VsZWN0aW9uIHNldCB0byBjb2xsZWN0IGNvbmZsaWN0cyBiZXR3ZWVuIGZyYWdtZW50cyBzcHJlYWQgdG9nZXRoZXIuXG4gICAgICAvLyBUaGlzIGNvbXBhcmVzIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBvZiBmcmFnbWVudCBuYW1lcyB0byBldmVyeSBvdGhlclxuICAgICAgLy8gaXRlbSBpbiB0aGF0IHNhbWUgbGlzdCAoZXhjZXB0IGZvciBpdHNlbGYpLlxuXG4gICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBmcmFnbWVudE5hbWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuRnJhZ21lbnRzKFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgY29uZmxpY3RzLFxuICAgICAgICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgICAgICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIGZyYWdtZW50TmFtZXNbaV0sXG4gICAgICAgICAgZnJhZ21lbnROYW1lc1tqXSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmxpY3RzO1xufSAvLyBDb2xsZWN0IGFsbCBjb25mbGljdHMgZm91bmQgYmV0d2VlbiBhIHNldCBvZiBmaWVsZHMgYW5kIGEgZnJhZ21lbnQgcmVmZXJlbmNlXG4vLyBpbmNsdWRpbmcgdmlhIHNwcmVhZGluZyBpbiBhbnkgbmVzdGVkIGZyYWdtZW50cy5cblxuZnVuY3Rpb24gY29sbGVjdENvbmZsaWN0c0JldHdlZW5GaWVsZHNBbmRGcmFnbWVudChcbiAgY29udGV4dCxcbiAgY29uZmxpY3RzLFxuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICBmaWVsZE1hcCxcbiAgZnJhZ21lbnROYW1lLFxuKSB7XG4gIGNvbnN0IGZyYWdtZW50ID0gY29udGV4dC5nZXRGcmFnbWVudChmcmFnbWVudE5hbWUpO1xuXG4gIGlmICghZnJhZ21lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBbZmllbGRNYXAyLCByZWZlcmVuY2VkRnJhZ21lbnROYW1lc10gPVxuICAgIGdldFJlZmVyZW5jZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzKFxuICAgICAgY29udGV4dCxcbiAgICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgICBmcmFnbWVudCxcbiAgICApOyAvLyBEbyBub3QgY29tcGFyZSBhIGZyYWdtZW50J3MgZmllbGRNYXAgdG8gaXRzZWxmLlxuXG4gIGlmIChmaWVsZE1hcCA9PT0gZmllbGRNYXAyKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIChEKSBGaXJzdCBjb2xsZWN0IGFueSBjb25mbGljdHMgYmV0d2VlbiB0aGUgcHJvdmlkZWQgY29sbGVjdGlvbiBvZiBmaWVsZHNcbiAgLy8gYW5kIHRoZSBjb2xsZWN0aW9uIG9mIGZpZWxkcyByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gZnJhZ21lbnQuXG5cbiAgY29sbGVjdENvbmZsaWN0c0JldHdlZW4oXG4gICAgY29udGV4dCxcbiAgICBjb25mbGljdHMsXG4gICAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gICAgYXJlTXV0dWFsbHlFeGNsdXNpdmUsXG4gICAgZmllbGRNYXAsXG4gICAgZmllbGRNYXAyLFxuICApOyAvLyAoRSkgVGhlbiBjb2xsZWN0IGFueSBjb25mbGljdHMgYmV0d2VlbiB0aGUgcHJvdmlkZWQgY29sbGVjdGlvbiBvZiBmaWVsZHNcbiAgLy8gYW5kIGFueSBmcmFnbWVudCBuYW1lcyBmb3VuZCBpbiB0aGUgZ2l2ZW4gZnJhZ21lbnQuXG5cbiAgZm9yIChjb25zdCByZWZlcmVuY2VkRnJhZ21lbnROYW1lIG9mIHJlZmVyZW5jZWRGcmFnbWVudE5hbWVzKSB7XG4gICAgLy8gTWVtb2l6ZSBzbyB0d28gZnJhZ21lbnRzIGFyZSBub3QgY29tcGFyZWQgZm9yIGNvbmZsaWN0cyBtb3JlIHRoYW4gb25jZS5cbiAgICBpZiAoXG4gICAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMuaGFzKFxuICAgICAgICByZWZlcmVuY2VkRnJhZ21lbnROYW1lLFxuICAgICAgICBmcmFnbWVudE5hbWUsXG4gICAgICAgIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICAgICAgKVxuICAgICkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLmFkZChcbiAgICAgIHJlZmVyZW5jZWRGcmFnbWVudE5hbWUsXG4gICAgICBmcmFnbWVudE5hbWUsXG4gICAgICBhcmVNdXR1YWxseUV4Y2x1c2l2ZSxcbiAgICApO1xuICAgIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuRmllbGRzQW5kRnJhZ21lbnQoXG4gICAgICBjb250ZXh0LFxuICAgICAgY29uZmxpY3RzLFxuICAgICAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgICAgIGNvbXBhcmVkRnJhZ21lbnRQYWlycyxcbiAgICAgIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICAgICAgZmllbGRNYXAsXG4gICAgICByZWZlcmVuY2VkRnJhZ21lbnROYW1lLFxuICAgICk7XG4gIH1cbn0gLy8gQ29sbGVjdCBhbGwgY29uZmxpY3RzIGZvdW5kIGJldHdlZW4gdHdvIGZyYWdtZW50cywgaW5jbHVkaW5nIHZpYSBzcHJlYWRpbmcgaW5cbi8vIGFueSBuZXN0ZWQgZnJhZ21lbnRzLlxuXG5mdW5jdGlvbiBjb2xsZWN0Q29uZmxpY3RzQmV0d2VlbkZyYWdtZW50cyhcbiAgY29udGV4dCxcbiAgY29uZmxpY3RzLFxuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICBmcmFnbWVudE5hbWUxLFxuICBmcmFnbWVudE5hbWUyLFxuKSB7XG4gIC8vIE5vIG5lZWQgdG8gY29tcGFyZSBhIGZyYWdtZW50IHRvIGl0c2VsZi5cbiAgaWYgKGZyYWdtZW50TmFtZTEgPT09IGZyYWdtZW50TmFtZTIpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gTWVtb2l6ZSBzbyB0d28gZnJhZ21lbnRzIGFyZSBub3QgY29tcGFyZWQgZm9yIGNvbmZsaWN0cyBtb3JlIHRoYW4gb25jZS5cblxuICBpZiAoXG4gICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLmhhcyhcbiAgICAgIGZyYWdtZW50TmFtZTEsXG4gICAgICBmcmFnbWVudE5hbWUyLFxuICAgICAgYXJlTXV0dWFsbHlFeGNsdXNpdmUsXG4gICAgKVxuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMuYWRkKGZyYWdtZW50TmFtZTEsIGZyYWdtZW50TmFtZTIsIGFyZU11dHVhbGx5RXhjbHVzaXZlKTtcbiAgY29uc3QgZnJhZ21lbnQxID0gY29udGV4dC5nZXRGcmFnbWVudChmcmFnbWVudE5hbWUxKTtcbiAgY29uc3QgZnJhZ21lbnQyID0gY29udGV4dC5nZXRGcmFnbWVudChmcmFnbWVudE5hbWUyKTtcblxuICBpZiAoIWZyYWdtZW50MSB8fCAhZnJhZ21lbnQyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgW2ZpZWxkTWFwMSwgcmVmZXJlbmNlZEZyYWdtZW50TmFtZXMxXSA9XG4gICAgZ2V0UmVmZXJlbmNlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoXG4gICAgICBjb250ZXh0LFxuICAgICAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgICAgIGZyYWdtZW50MSxcbiAgICApO1xuICBjb25zdCBbZmllbGRNYXAyLCByZWZlcmVuY2VkRnJhZ21lbnROYW1lczJdID1cbiAgICBnZXRSZWZlcmVuY2VkRmllbGRzQW5kRnJhZ21lbnROYW1lcyhcbiAgICAgIGNvbnRleHQsXG4gICAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgICAgZnJhZ21lbnQyLFxuICAgICk7IC8vIChGKSBGaXJzdCwgY29sbGVjdCBhbGwgY29uZmxpY3RzIGJldHdlZW4gdGhlc2UgdHdvIGNvbGxlY3Rpb25zIG9mIGZpZWxkc1xuICAvLyAobm90IGluY2x1ZGluZyBhbnkgbmVzdGVkIGZyYWdtZW50cykuXG5cbiAgY29sbGVjdENvbmZsaWN0c0JldHdlZW4oXG4gICAgY29udGV4dCxcbiAgICBjb25mbGljdHMsXG4gICAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gICAgYXJlTXV0dWFsbHlFeGNsdXNpdmUsXG4gICAgZmllbGRNYXAxLFxuICAgIGZpZWxkTWFwMixcbiAgKTsgLy8gKEcpIFRoZW4gY29sbGVjdCBjb25mbGljdHMgYmV0d2VlbiB0aGUgZmlyc3QgZnJhZ21lbnQgYW5kIGFueSBuZXN0ZWRcbiAgLy8gZnJhZ21lbnRzIHNwcmVhZCBpbiB0aGUgc2Vjb25kIGZyYWdtZW50LlxuXG4gIGZvciAoY29uc3QgcmVmZXJlbmNlZEZyYWdtZW50TmFtZTIgb2YgcmVmZXJlbmNlZEZyYWdtZW50TmFtZXMyKSB7XG4gICAgY29sbGVjdENvbmZsaWN0c0JldHdlZW5GcmFnbWVudHMoXG4gICAgICBjb250ZXh0LFxuICAgICAgY29uZmxpY3RzLFxuICAgICAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgICAgIGNvbXBhcmVkRnJhZ21lbnRQYWlycyxcbiAgICAgIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICAgICAgZnJhZ21lbnROYW1lMSxcbiAgICAgIHJlZmVyZW5jZWRGcmFnbWVudE5hbWUyLFxuICAgICk7XG4gIH0gLy8gKEcpIFRoZW4gY29sbGVjdCBjb25mbGljdHMgYmV0d2VlbiB0aGUgc2Vjb25kIGZyYWdtZW50IGFuZCBhbnkgbmVzdGVkXG4gIC8vIGZyYWdtZW50cyBzcHJlYWQgaW4gdGhlIGZpcnN0IGZyYWdtZW50LlxuXG4gIGZvciAoY29uc3QgcmVmZXJlbmNlZEZyYWdtZW50TmFtZTEgb2YgcmVmZXJlbmNlZEZyYWdtZW50TmFtZXMxKSB7XG4gICAgY29sbGVjdENvbmZsaWN0c0JldHdlZW5GcmFnbWVudHMoXG4gICAgICBjb250ZXh0LFxuICAgICAgY29uZmxpY3RzLFxuICAgICAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgICAgIGNvbXBhcmVkRnJhZ21lbnRQYWlycyxcbiAgICAgIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICAgICAgcmVmZXJlbmNlZEZyYWdtZW50TmFtZTEsXG4gICAgICBmcmFnbWVudE5hbWUyLFxuICAgICk7XG4gIH1cbn0gLy8gRmluZCBhbGwgY29uZmxpY3RzIGZvdW5kIGJldHdlZW4gdHdvIHNlbGVjdGlvbiBzZXRzLCBpbmNsdWRpbmcgdGhvc2UgZm91bmRcbi8vIHZpYSBzcHJlYWRpbmcgaW4gZnJhZ21lbnRzLiBDYWxsZWQgd2hlbiBkZXRlcm1pbmluZyBpZiBjb25mbGljdHMgZXhpc3Rcbi8vIGJldHdlZW4gdGhlIHN1Yi1maWVsZHMgb2YgdHdvIG92ZXJsYXBwaW5nIGZpZWxkcy5cblxuZnVuY3Rpb24gZmluZENvbmZsaWN0c0JldHdlZW5TdWJTZWxlY3Rpb25TZXRzKFxuICBjb250ZXh0LFxuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICBwYXJlbnRUeXBlMSxcbiAgc2VsZWN0aW9uU2V0MSxcbiAgcGFyZW50VHlwZTIsXG4gIHNlbGVjdGlvblNldDIsXG4pIHtcbiAgY29uc3QgY29uZmxpY3RzID0gW107XG4gIGNvbnN0IFtmaWVsZE1hcDEsIGZyYWdtZW50TmFtZXMxXSA9IGdldEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoXG4gICAgY29udGV4dCxcbiAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgIHBhcmVudFR5cGUxLFxuICAgIHNlbGVjdGlvblNldDEsXG4gICk7XG4gIGNvbnN0IFtmaWVsZE1hcDIsIGZyYWdtZW50TmFtZXMyXSA9IGdldEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoXG4gICAgY29udGV4dCxcbiAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgIHBhcmVudFR5cGUyLFxuICAgIHNlbGVjdGlvblNldDIsXG4gICk7IC8vIChIKSBGaXJzdCwgY29sbGVjdCBhbGwgY29uZmxpY3RzIGJldHdlZW4gdGhlc2UgdHdvIGNvbGxlY3Rpb25zIG9mIGZpZWxkLlxuXG4gIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuKFxuICAgIGNvbnRleHQsXG4gICAgY29uZmxpY3RzLFxuICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLFxuICAgIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICAgIGZpZWxkTWFwMSxcbiAgICBmaWVsZE1hcDIsXG4gICk7IC8vIChJKSBUaGVuIGNvbGxlY3QgY29uZmxpY3RzIGJldHdlZW4gdGhlIGZpcnN0IGNvbGxlY3Rpb24gb2YgZmllbGRzIGFuZFxuICAvLyB0aG9zZSByZWZlcmVuY2VkIGJ5IGVhY2ggZnJhZ21lbnQgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNlY29uZC5cblxuICBmb3IgKGNvbnN0IGZyYWdtZW50TmFtZTIgb2YgZnJhZ21lbnROYW1lczIpIHtcbiAgICBjb2xsZWN0Q29uZmxpY3RzQmV0d2VlbkZpZWxkc0FuZEZyYWdtZW50KFxuICAgICAgY29udGV4dCxcbiAgICAgIGNvbmZsaWN0cyxcbiAgICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gICAgICBhcmVNdXR1YWxseUV4Y2x1c2l2ZSxcbiAgICAgIGZpZWxkTWFwMSxcbiAgICAgIGZyYWdtZW50TmFtZTIsXG4gICAgKTtcbiAgfSAvLyAoSSkgVGhlbiBjb2xsZWN0IGNvbmZsaWN0cyBiZXR3ZWVuIHRoZSBzZWNvbmQgY29sbGVjdGlvbiBvZiBmaWVsZHMgYW5kXG4gIC8vIHRob3NlIHJlZmVyZW5jZWQgYnkgZWFjaCBmcmFnbWVudCBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlyc3QuXG5cbiAgZm9yIChjb25zdCBmcmFnbWVudE5hbWUxIG9mIGZyYWdtZW50TmFtZXMxKSB7XG4gICAgY29sbGVjdENvbmZsaWN0c0JldHdlZW5GaWVsZHNBbmRGcmFnbWVudChcbiAgICAgIGNvbnRleHQsXG4gICAgICBjb25mbGljdHMsXG4gICAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLFxuICAgICAgYXJlTXV0dWFsbHlFeGNsdXNpdmUsXG4gICAgICBmaWVsZE1hcDIsXG4gICAgICBmcmFnbWVudE5hbWUxLFxuICAgICk7XG4gIH0gLy8gKEopIEFsc28gY29sbGVjdCBjb25mbGljdHMgYmV0d2VlbiBhbnkgZnJhZ21lbnQgbmFtZXMgYnkgdGhlIGZpcnN0IGFuZFxuICAvLyBmcmFnbWVudCBuYW1lcyBieSB0aGUgc2Vjb25kLiBUaGlzIGNvbXBhcmVzIGVhY2ggaXRlbSBpbiB0aGUgZmlyc3Qgc2V0IG9mXG4gIC8vIG5hbWVzIHRvIGVhY2ggaXRlbSBpbiB0aGUgc2Vjb25kIHNldCBvZiBuYW1lcy5cblxuICBmb3IgKGNvbnN0IGZyYWdtZW50TmFtZTEgb2YgZnJhZ21lbnROYW1lczEpIHtcbiAgICBmb3IgKGNvbnN0IGZyYWdtZW50TmFtZTIgb2YgZnJhZ21lbnROYW1lczIpIHtcbiAgICAgIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuRnJhZ21lbnRzKFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjb25mbGljdHMsXG4gICAgICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgICAgIGNvbXBhcmVkRnJhZ21lbnRQYWlycyxcbiAgICAgICAgYXJlTXV0dWFsbHlFeGNsdXNpdmUsXG4gICAgICAgIGZyYWdtZW50TmFtZTEsXG4gICAgICAgIGZyYWdtZW50TmFtZTIsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25mbGljdHM7XG59IC8vIENvbGxlY3QgYWxsIENvbmZsaWN0cyBcIndpdGhpblwiIG9uZSBjb2xsZWN0aW9uIG9mIGZpZWxkcy5cblxuZnVuY3Rpb24gY29sbGVjdENvbmZsaWN0c1dpdGhpbihcbiAgY29udGV4dCxcbiAgY29uZmxpY3RzLFxuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gIGZpZWxkTWFwLFxuKSB7XG4gIC8vIEEgZmllbGQgbWFwIGlzIGEga2V5ZWQgY29sbGVjdGlvbiwgd2hlcmUgZWFjaCBrZXkgcmVwcmVzZW50cyBhIHJlc3BvbnNlXG4gIC8vIG5hbWUgYW5kIHRoZSB2YWx1ZSBhdCB0aGF0IGtleSBpcyBhIGxpc3Qgb2YgYWxsIGZpZWxkcyB3aGljaCBwcm92aWRlIHRoYXRcbiAgLy8gcmVzcG9uc2UgbmFtZS4gRm9yIGV2ZXJ5IHJlc3BvbnNlIG5hbWUsIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBmaWVsZHMsIHRoZXlcbiAgLy8gbXVzdCBiZSBjb21wYXJlZCB0byBmaW5kIGEgcG90ZW50aWFsIGNvbmZsaWN0LlxuICBmb3IgKGNvbnN0IFtyZXNwb25zZU5hbWUsIGZpZWxkc10gb2YgT2JqZWN0LmVudHJpZXMoZmllbGRNYXApKSB7XG4gICAgLy8gVGhpcyBjb21wYXJlcyBldmVyeSBmaWVsZCBpbiB0aGUgbGlzdCB0byBldmVyeSBvdGhlciBmaWVsZCBpbiB0aGlzIGxpc3RcbiAgICAvLyAoZXhjZXB0IHRvIGl0c2VsZikuIElmIHRoZSBsaXN0IG9ubHkgaGFzIG9uZSBpdGVtLCBub3RoaW5nIG5lZWRzIHRvXG4gICAgLy8gYmUgY29tcGFyZWQuXG4gICAgaWYgKGZpZWxkcy5sZW5ndGggPiAxKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBmaWVsZHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBjb25zdCBjb25mbGljdCA9IGZpbmRDb25mbGljdChcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgICAgICAgICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLFxuICAgICAgICAgICAgZmFsc2UsIC8vIHdpdGhpbiBvbmUgY29sbGVjdGlvbiBpcyBuZXZlciBtdXR1YWxseSBleGNsdXNpdmVcbiAgICAgICAgICAgIHJlc3BvbnNlTmFtZSxcbiAgICAgICAgICAgIGZpZWxkc1tpXSxcbiAgICAgICAgICAgIGZpZWxkc1tqXSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGNvbmZsaWN0KSB7XG4gICAgICAgICAgICBjb25mbGljdHMucHVzaChjb25mbGljdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59IC8vIENvbGxlY3QgYWxsIENvbmZsaWN0cyBiZXR3ZWVuIHR3byBjb2xsZWN0aW9ucyBvZiBmaWVsZHMuIFRoaXMgaXMgc2ltaWxhciB0byxcbi8vIGJ1dCBkaWZmZXJlbnQgZnJvbSB0aGUgYGNvbGxlY3RDb25mbGljdHNXaXRoaW5gIGZ1bmN0aW9uIGFib3ZlLiBUaGlzIGNoZWNrXG4vLyBhc3N1bWVzIHRoYXQgYGNvbGxlY3RDb25mbGljdHNXaXRoaW5gIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIG9uIGVhY2hcbi8vIHByb3ZpZGVkIGNvbGxlY3Rpb24gb2YgZmllbGRzLiBUaGlzIGlzIHRydWUgYmVjYXVzZSB0aGlzIHZhbGlkYXRvciB0cmF2ZXJzZXNcbi8vIGVhY2ggaW5kaXZpZHVhbCBzZWxlY3Rpb24gc2V0LlxuXG5mdW5jdGlvbiBjb2xsZWN0Q29uZmxpY3RzQmV0d2VlbihcbiAgY29udGV4dCxcbiAgY29uZmxpY3RzLFxuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gIHBhcmVudEZpZWxkc0FyZU11dHVhbGx5RXhjbHVzaXZlLFxuICBmaWVsZE1hcDEsXG4gIGZpZWxkTWFwMixcbikge1xuICAvLyBBIGZpZWxkIG1hcCBpcyBhIGtleWVkIGNvbGxlY3Rpb24sIHdoZXJlIGVhY2gga2V5IHJlcHJlc2VudHMgYSByZXNwb25zZVxuICAvLyBuYW1lIGFuZCB0aGUgdmFsdWUgYXQgdGhhdCBrZXkgaXMgYSBsaXN0IG9mIGFsbCBmaWVsZHMgd2hpY2ggcHJvdmlkZSB0aGF0XG4gIC8vIHJlc3BvbnNlIG5hbWUuIEZvciBhbnkgcmVzcG9uc2UgbmFtZSB3aGljaCBhcHBlYXJzIGluIGJvdGggcHJvdmlkZWQgZmllbGRcbiAgLy8gbWFwcywgZWFjaCBmaWVsZCBmcm9tIHRoZSBmaXJzdCBmaWVsZCBtYXAgbXVzdCBiZSBjb21wYXJlZCB0byBldmVyeSBmaWVsZFxuICAvLyBpbiB0aGUgc2Vjb25kIGZpZWxkIG1hcCB0byBmaW5kIHBvdGVudGlhbCBjb25mbGljdHMuXG4gIGZvciAoY29uc3QgW3Jlc3BvbnNlTmFtZSwgZmllbGRzMV0gb2YgT2JqZWN0LmVudHJpZXMoZmllbGRNYXAxKSkge1xuICAgIGNvbnN0IGZpZWxkczIgPSBmaWVsZE1hcDJbcmVzcG9uc2VOYW1lXTtcblxuICAgIGlmIChmaWVsZHMyKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkMSBvZiBmaWVsZHMxKSB7XG4gICAgICAgIGZvciAoY29uc3QgZmllbGQyIG9mIGZpZWxkczIpIHtcbiAgICAgICAgICBjb25zdCBjb25mbGljdCA9IGZpbmRDb25mbGljdChcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgICAgICAgICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLFxuICAgICAgICAgICAgcGFyZW50RmllbGRzQXJlTXV0dWFsbHlFeGNsdXNpdmUsXG4gICAgICAgICAgICByZXNwb25zZU5hbWUsXG4gICAgICAgICAgICBmaWVsZDEsXG4gICAgICAgICAgICBmaWVsZDIsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChjb25mbGljdCkge1xuICAgICAgICAgICAgY29uZmxpY3RzLnB1c2goY29uZmxpY3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSAvLyBEZXRlcm1pbmVzIGlmIHRoZXJlIGlzIGEgY29uZmxpY3QgYmV0d2VlbiB0d28gcGFydGljdWxhciBmaWVsZHMsIGluY2x1ZGluZ1xuLy8gY29tcGFyaW5nIHRoZWlyIHN1Yi1maWVsZHMuXG5cbmZ1bmN0aW9uIGZpbmRDb25mbGljdChcbiAgY29udGV4dCxcbiAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgY29tcGFyZWRGcmFnbWVudFBhaXJzLFxuICBwYXJlbnRGaWVsZHNBcmVNdXR1YWxseUV4Y2x1c2l2ZSxcbiAgcmVzcG9uc2VOYW1lLFxuICBmaWVsZDEsXG4gIGZpZWxkMixcbikge1xuICBjb25zdCBbcGFyZW50VHlwZTEsIG5vZGUxLCBkZWYxXSA9IGZpZWxkMTtcbiAgY29uc3QgW3BhcmVudFR5cGUyLCBub2RlMiwgZGVmMl0gPSBmaWVsZDI7IC8vIElmIGl0IGlzIGtub3duIHRoYXQgdHdvIGZpZWxkcyBjb3VsZCBub3QgcG9zc2libHkgYXBwbHkgYXQgdGhlIHNhbWVcbiAgLy8gdGltZSwgZHVlIHRvIHRoZSBwYXJlbnQgdHlwZXMsIHRoZW4gaXQgaXMgc2FmZSB0byBwZXJtaXQgdGhlbSB0byBkaXZlcmdlXG4gIC8vIGluIGFsaWFzZWQgZmllbGQgb3IgYXJndW1lbnRzIHVzZWQgYXMgdGhleSB3aWxsIG5vdCBwcmVzZW50IGFueSBhbWJpZ3VpdHlcbiAgLy8gYnkgZGlmZmVyaW5nLlxuICAvLyBJdCBpcyBrbm93biB0aGF0IHR3byBwYXJlbnQgdHlwZXMgY291bGQgbmV2ZXIgb3ZlcmxhcCBpZiB0aGV5IGFyZVxuICAvLyBkaWZmZXJlbnQgT2JqZWN0IHR5cGVzLiBJbnRlcmZhY2Ugb3IgVW5pb24gdHlwZXMgbWlnaHQgb3ZlcmxhcCAtIGlmIG5vdFxuICAvLyBpbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc2NoZW1hLCB0aGVuIHBlcmhhcHMgaW4gc29tZSBmdXR1cmUgdmVyc2lvbixcbiAgLy8gdGh1cyBtYXkgbm90IHNhZmVseSBkaXZlcmdlLlxuXG4gIGNvbnN0IGFyZU11dHVhbGx5RXhjbHVzaXZlID1cbiAgICBwYXJlbnRGaWVsZHNBcmVNdXR1YWxseUV4Y2x1c2l2ZSB8fFxuICAgIChwYXJlbnRUeXBlMSAhPT0gcGFyZW50VHlwZTIgJiZcbiAgICAgIGlzT2JqZWN0VHlwZShwYXJlbnRUeXBlMSkgJiZcbiAgICAgIGlzT2JqZWN0VHlwZShwYXJlbnRUeXBlMikpO1xuXG4gIGlmICghYXJlTXV0dWFsbHlFeGNsdXNpdmUpIHtcbiAgICAvLyBUd28gYWxpYXNlcyBtdXN0IHJlZmVyIHRvIHRoZSBzYW1lIGZpZWxkLlxuICAgIGNvbnN0IG5hbWUxID0gbm9kZTEubmFtZS52YWx1ZTtcbiAgICBjb25zdCBuYW1lMiA9IG5vZGUyLm5hbWUudmFsdWU7XG5cbiAgICBpZiAobmFtZTEgIT09IG5hbWUyKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBbcmVzcG9uc2VOYW1lLCBgXCIke25hbWUxfVwiIGFuZCBcIiR7bmFtZTJ9XCIgYXJlIGRpZmZlcmVudCBmaWVsZHNgXSxcbiAgICAgICAgW25vZGUxXSxcbiAgICAgICAgW25vZGUyXSxcbiAgICAgIF07XG4gICAgfSAvLyBUd28gZmllbGQgY2FsbHMgbXVzdCBoYXZlIHRoZSBzYW1lIGFyZ3VtZW50cy5cblxuICAgIGlmIChzdHJpbmdpZnlBcmd1bWVudHMobm9kZTEpICE9PSBzdHJpbmdpZnlBcmd1bWVudHMobm9kZTIpKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBbcmVzcG9uc2VOYW1lLCAndGhleSBoYXZlIGRpZmZlcmluZyBhcmd1bWVudHMnXSxcbiAgICAgICAgW25vZGUxXSxcbiAgICAgICAgW25vZGUyXSxcbiAgICAgIF07XG4gICAgfVxuICB9IC8vIFRoZSByZXR1cm4gdHlwZSBmb3IgZWFjaCBmaWVsZC5cblxuICBjb25zdCB0eXBlMSA9IGRlZjEgPT09IG51bGwgfHwgZGVmMSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVmMS50eXBlO1xuICBjb25zdCB0eXBlMiA9IGRlZjIgPT09IG51bGwgfHwgZGVmMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVmMi50eXBlO1xuXG4gIGlmICh0eXBlMSAmJiB0eXBlMiAmJiBkb1R5cGVzQ29uZmxpY3QodHlwZTEsIHR5cGUyKSkge1xuICAgIHJldHVybiBbXG4gICAgICBbXG4gICAgICAgIHJlc3BvbnNlTmFtZSxcbiAgICAgICAgYHRoZXkgcmV0dXJuIGNvbmZsaWN0aW5nIHR5cGVzIFwiJHtpbnNwZWN0KHR5cGUxKX1cIiBhbmQgXCIke2luc3BlY3QoXG4gICAgICAgICAgdHlwZTIsXG4gICAgICAgICl9XCJgLFxuICAgICAgXSxcbiAgICAgIFtub2RlMV0sXG4gICAgICBbbm9kZTJdLFxuICAgIF07XG4gIH0gLy8gQ29sbGVjdCBhbmQgY29tcGFyZSBzdWItZmllbGRzLiBVc2UgdGhlIHNhbWUgXCJ2aXNpdGVkIGZyYWdtZW50IG5hbWVzXCIgbGlzdFxuICAvLyBmb3IgYm90aCBjb2xsZWN0aW9ucyBzbyBmaWVsZHMgaW4gYSBmcmFnbWVudCByZWZlcmVuY2UgYXJlIG5ldmVyXG4gIC8vIGNvbXBhcmVkIHRvIHRoZW1zZWx2ZXMuXG5cbiAgY29uc3Qgc2VsZWN0aW9uU2V0MSA9IG5vZGUxLnNlbGVjdGlvblNldDtcbiAgY29uc3Qgc2VsZWN0aW9uU2V0MiA9IG5vZGUyLnNlbGVjdGlvblNldDtcblxuICBpZiAoc2VsZWN0aW9uU2V0MSAmJiBzZWxlY3Rpb25TZXQyKSB7XG4gICAgY29uc3QgY29uZmxpY3RzID0gZmluZENvbmZsaWN0c0JldHdlZW5TdWJTZWxlY3Rpb25TZXRzKFxuICAgICAgY29udGV4dCxcbiAgICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gICAgICBhcmVNdXR1YWxseUV4Y2x1c2l2ZSxcbiAgICAgIGdldE5hbWVkVHlwZSh0eXBlMSksXG4gICAgICBzZWxlY3Rpb25TZXQxLFxuICAgICAgZ2V0TmFtZWRUeXBlKHR5cGUyKSxcbiAgICAgIHNlbGVjdGlvblNldDIsXG4gICAgKTtcbiAgICByZXR1cm4gc3ViZmllbGRDb25mbGljdHMoY29uZmxpY3RzLCByZXNwb25zZU5hbWUsIG5vZGUxLCBub2RlMik7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5QXJndW1lbnRzKGZpZWxkTm9kZSkge1xuICB2YXIgX2ZpZWxkTm9kZSRhcmd1bWVudHM7XG5cbiAgLy8gRklYTUUgaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuICBjb25zdCBhcmdzID1cbiAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgIChfZmllbGROb2RlJGFyZ3VtZW50cyA9IGZpZWxkTm9kZS5hcmd1bWVudHMpICE9PSBudWxsICYmXG4gICAgX2ZpZWxkTm9kZSRhcmd1bWVudHMgIT09IHZvaWQgMFxuICAgICAgPyBfZmllbGROb2RlJGFyZ3VtZW50c1xuICAgICAgOiBbXTtcbiAgY29uc3QgaW5wdXRPYmplY3RXaXRoQXJncyA9IHtcbiAgICBraW5kOiBLaW5kLk9CSkVDVCxcbiAgICBmaWVsZHM6IGFyZ3MubWFwKChhcmdOb2RlKSA9PiAoe1xuICAgICAga2luZDogS2luZC5PQkpFQ1RfRklFTEQsXG4gICAgICBuYW1lOiBhcmdOb2RlLm5hbWUsXG4gICAgICB2YWx1ZTogYXJnTm9kZS52YWx1ZSxcbiAgICB9KSksXG4gIH07XG4gIHJldHVybiBwcmludChzb3J0VmFsdWVOb2RlKGlucHV0T2JqZWN0V2l0aEFyZ3MpKTtcbn0gLy8gVHdvIHR5cGVzIGNvbmZsaWN0IGlmIGJvdGggdHlwZXMgY291bGQgbm90IGFwcGx5IHRvIGEgdmFsdWUgc2ltdWx0YW5lb3VzbHkuXG4vLyBDb21wb3NpdGUgdHlwZXMgYXJlIGlnbm9yZWQgYXMgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZCB0eXBlcyB3aWxsIGJlIGNvbXBhcmVkXG4vLyBsYXRlciByZWN1cnNpdmVseS4gSG93ZXZlciBMaXN0IGFuZCBOb24tTnVsbCB0eXBlcyBtdXN0IG1hdGNoLlxuXG5mdW5jdGlvbiBkb1R5cGVzQ29uZmxpY3QodHlwZTEsIHR5cGUyKSB7XG4gIGlmIChpc0xpc3RUeXBlKHR5cGUxKSkge1xuICAgIHJldHVybiBpc0xpc3RUeXBlKHR5cGUyKVxuICAgICAgPyBkb1R5cGVzQ29uZmxpY3QodHlwZTEub2ZUeXBlLCB0eXBlMi5vZlR5cGUpXG4gICAgICA6IHRydWU7XG4gIH1cblxuICBpZiAoaXNMaXN0VHlwZSh0eXBlMikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc05vbk51bGxUeXBlKHR5cGUxKSkge1xuICAgIHJldHVybiBpc05vbk51bGxUeXBlKHR5cGUyKVxuICAgICAgPyBkb1R5cGVzQ29uZmxpY3QodHlwZTEub2ZUeXBlLCB0eXBlMi5vZlR5cGUpXG4gICAgICA6IHRydWU7XG4gIH1cblxuICBpZiAoaXNOb25OdWxsVHlwZSh0eXBlMikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc0xlYWZUeXBlKHR5cGUxKSB8fCBpc0xlYWZUeXBlKHR5cGUyKSkge1xuICAgIHJldHVybiB0eXBlMSAhPT0gdHlwZTI7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59IC8vIEdpdmVuIGEgc2VsZWN0aW9uIHNldCwgcmV0dXJuIHRoZSBjb2xsZWN0aW9uIG9mIGZpZWxkcyAoYSBtYXBwaW5nIG9mIHJlc3BvbnNlXG4vLyBuYW1lIHRvIGZpZWxkIG5vZGVzIGFuZCBkZWZpbml0aW9ucykgYXMgd2VsbCBhcyBhIGxpc3Qgb2YgZnJhZ21lbnQgbmFtZXNcbi8vIHJlZmVyZW5jZWQgdmlhIGZyYWdtZW50IHNwcmVhZHMuXG5cbmZ1bmN0aW9uIGdldEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoXG4gIGNvbnRleHQsXG4gIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gIHBhcmVudFR5cGUsXG4gIHNlbGVjdGlvblNldCxcbikge1xuICBjb25zdCBjYWNoZWQgPSBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLmdldChzZWxlY3Rpb25TZXQpO1xuXG4gIGlmIChjYWNoZWQpIHtcbiAgICByZXR1cm4gY2FjaGVkO1xuICB9XG5cbiAgY29uc3Qgbm9kZUFuZERlZnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCBmcmFnbWVudE5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBfY29sbGVjdEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoXG4gICAgY29udGV4dCxcbiAgICBwYXJlbnRUeXBlLFxuICAgIHNlbGVjdGlvblNldCxcbiAgICBub2RlQW5kRGVmcyxcbiAgICBmcmFnbWVudE5hbWVzLFxuICApO1xuXG4gIGNvbnN0IHJlc3VsdCA9IFtub2RlQW5kRGVmcywgT2JqZWN0LmtleXMoZnJhZ21lbnROYW1lcyldO1xuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLnNldChzZWxlY3Rpb25TZXQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59IC8vIEdpdmVuIGEgcmVmZXJlbmNlIHRvIGEgZnJhZ21lbnQsIHJldHVybiB0aGUgcmVwcmVzZW50ZWQgY29sbGVjdGlvbiBvZiBmaWVsZHNcbi8vIGFzIHdlbGwgYXMgYSBsaXN0IG9mIG5lc3RlZCBmcmFnbWVudCBuYW1lcyByZWZlcmVuY2VkIHZpYSBmcmFnbWVudCBzcHJlYWRzLlxuXG5mdW5jdGlvbiBnZXRSZWZlcmVuY2VkRmllbGRzQW5kRnJhZ21lbnROYW1lcyhcbiAgY29udGV4dCxcbiAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgZnJhZ21lbnQsXG4pIHtcbiAgLy8gU2hvcnQtY2lyY3VpdCBidWlsZGluZyBhIHR5cGUgZnJvbSB0aGUgbm9kZSBpZiBwb3NzaWJsZS5cbiAgY29uc3QgY2FjaGVkID0gY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcy5nZXQoZnJhZ21lbnQuc2VsZWN0aW9uU2V0KTtcblxuICBpZiAoY2FjaGVkKSB7XG4gICAgcmV0dXJuIGNhY2hlZDtcbiAgfVxuXG4gIGNvbnN0IGZyYWdtZW50VHlwZSA9IHR5cGVGcm9tQVNUKGNvbnRleHQuZ2V0U2NoZW1hKCksIGZyYWdtZW50LnR5cGVDb25kaXRpb24pO1xuICByZXR1cm4gZ2V0RmllbGRzQW5kRnJhZ21lbnROYW1lcyhcbiAgICBjb250ZXh0LFxuICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgZnJhZ21lbnRUeXBlLFxuICAgIGZyYWdtZW50LnNlbGVjdGlvblNldCxcbiAgKTtcbn1cblxuZnVuY3Rpb24gX2NvbGxlY3RGaWVsZHNBbmRGcmFnbWVudE5hbWVzKFxuICBjb250ZXh0LFxuICBwYXJlbnRUeXBlLFxuICBzZWxlY3Rpb25TZXQsXG4gIG5vZGVBbmREZWZzLFxuICBmcmFnbWVudE5hbWVzLFxuKSB7XG4gIGZvciAoY29uc3Qgc2VsZWN0aW9uIG9mIHNlbGVjdGlvblNldC5zZWxlY3Rpb25zKSB7XG4gICAgc3dpdGNoIChzZWxlY3Rpb24ua2luZCkge1xuICAgICAgY2FzZSBLaW5kLkZJRUxEOiB7XG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IHNlbGVjdGlvbi5uYW1lLnZhbHVlO1xuICAgICAgICBsZXQgZmllbGREZWY7XG5cbiAgICAgICAgaWYgKGlzT2JqZWN0VHlwZShwYXJlbnRUeXBlKSB8fCBpc0ludGVyZmFjZVR5cGUocGFyZW50VHlwZSkpIHtcbiAgICAgICAgICBmaWVsZERlZiA9IHBhcmVudFR5cGUuZ2V0RmllbGRzKClbZmllbGROYW1lXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlTmFtZSA9IHNlbGVjdGlvbi5hbGlhc1xuICAgICAgICAgID8gc2VsZWN0aW9uLmFsaWFzLnZhbHVlXG4gICAgICAgICAgOiBmaWVsZE5hbWU7XG5cbiAgICAgICAgaWYgKCFub2RlQW5kRGVmc1tyZXNwb25zZU5hbWVdKSB7XG4gICAgICAgICAgbm9kZUFuZERlZnNbcmVzcG9uc2VOYW1lXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZUFuZERlZnNbcmVzcG9uc2VOYW1lXS5wdXNoKFtwYXJlbnRUeXBlLCBzZWxlY3Rpb24sIGZpZWxkRGVmXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuRlJBR01FTlRfU1BSRUFEOlxuICAgICAgICBmcmFnbWVudE5hbWVzW3NlbGVjdGlvbi5uYW1lLnZhbHVlXSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEtpbmQuSU5MSU5FX0ZSQUdNRU5UOiB7XG4gICAgICAgIGNvbnN0IHR5cGVDb25kaXRpb24gPSBzZWxlY3Rpb24udHlwZUNvbmRpdGlvbjtcbiAgICAgICAgY29uc3QgaW5saW5lRnJhZ21lbnRUeXBlID0gdHlwZUNvbmRpdGlvblxuICAgICAgICAgID8gdHlwZUZyb21BU1QoY29udGV4dC5nZXRTY2hlbWEoKSwgdHlwZUNvbmRpdGlvbilcbiAgICAgICAgICA6IHBhcmVudFR5cGU7XG5cbiAgICAgICAgX2NvbGxlY3RGaWVsZHNBbmRGcmFnbWVudE5hbWVzKFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgaW5saW5lRnJhZ21lbnRUeXBlLFxuICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3Rpb25TZXQsXG4gICAgICAgICAgbm9kZUFuZERlZnMsXG4gICAgICAgICAgZnJhZ21lbnROYW1lcyxcbiAgICAgICAgKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0gLy8gR2l2ZW4gYSBzZXJpZXMgb2YgQ29uZmxpY3RzIHdoaWNoIG9jY3VycmVkIGJldHdlZW4gdHdvIHN1Yi1maWVsZHMsIGdlbmVyYXRlXG4vLyBhIHNpbmdsZSBDb25mbGljdC5cblxuZnVuY3Rpb24gc3ViZmllbGRDb25mbGljdHMoY29uZmxpY3RzLCByZXNwb25zZU5hbWUsIG5vZGUxLCBub2RlMikge1xuICBpZiAoY29uZmxpY3RzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gW1xuICAgICAgW3Jlc3BvbnNlTmFtZSwgY29uZmxpY3RzLm1hcCgoW3JlYXNvbl0pID0+IHJlYXNvbildLFxuICAgICAgW25vZGUxLCAuLi5jb25mbGljdHMubWFwKChbLCBmaWVsZHMxXSkgPT4gZmllbGRzMSkuZmxhdCgpXSxcbiAgICAgIFtub2RlMiwgLi4uY29uZmxpY3RzLm1hcCgoWywgLCBmaWVsZHMyXSkgPT4gZmllbGRzMikuZmxhdCgpXSxcbiAgICBdO1xuICB9XG59XG4vKipcbiAqIEEgd2F5IHRvIGtlZXAgdHJhY2sgb2YgcGFpcnMgb2YgdGhpbmdzIHdoZW4gdGhlIG9yZGVyaW5nIG9mIHRoZSBwYWlyIGRvZXMgbm90IG1hdHRlci5cbiAqL1xuXG5jbGFzcyBQYWlyU2V0IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fZGF0YSA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIGhhcyhhLCBiLCBhcmVNdXR1YWxseUV4Y2x1c2l2ZSkge1xuICAgIHZhciBfdGhpcyRfZGF0YSRnZXQ7XG5cbiAgICBjb25zdCBba2V5MSwga2V5Ml0gPSBhIDwgYiA/IFthLCBiXSA6IFtiLCBhXTtcbiAgICBjb25zdCByZXN1bHQgPVxuICAgICAgKF90aGlzJF9kYXRhJGdldCA9IHRoaXMuX2RhdGEuZ2V0KGtleTEpKSA9PT0gbnVsbCB8fFxuICAgICAgX3RoaXMkX2RhdGEkZ2V0ID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiBfdGhpcyRfZGF0YSRnZXQuZ2V0KGtleTIpO1xuXG4gICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSAvLyBhcmVNdXR1YWxseUV4Y2x1c2l2ZSBiZWluZyBmYWxzZSBpcyBhIHN1cGVyc2V0IG9mIGJlaW5nIHRydWUsIGhlbmNlIGlmXG4gICAgLy8gd2Ugd2FudCB0byBrbm93IGlmIHRoaXMgUGFpclNldCBcImhhc1wiIHRoZXNlIHR3byB3aXRoIG5vIGV4Y2x1c2l2aXR5LFxuICAgIC8vIHdlIGhhdmUgdG8gZW5zdXJlIGl0IHdhcyBhZGRlZCBhcyBzdWNoLlxuXG4gICAgcmV0dXJuIGFyZU11dHVhbGx5RXhjbHVzaXZlID8gdHJ1ZSA6IGFyZU11dHVhbGx5RXhjbHVzaXZlID09PSByZXN1bHQ7XG4gIH1cblxuICBhZGQoYSwgYiwgYXJlTXV0dWFsbHlFeGNsdXNpdmUpIHtcbiAgICBjb25zdCBba2V5MSwga2V5Ml0gPSBhIDwgYiA/IFthLCBiXSA6IFtiLCBhXTtcblxuICAgIGNvbnN0IG1hcCA9IHRoaXMuX2RhdGEuZ2V0KGtleTEpO1xuXG4gICAgaWYgKG1hcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9kYXRhLnNldChrZXkxLCBuZXcgTWFwKFtba2V5MiwgYXJlTXV0dWFsbHlFeGNsdXNpdmVdXSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXAuc2V0KGtleTIsIGFyZU11dHVhbGx5RXhjbHVzaXZlKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs\n");
|
1357 |
|
1358 | }),
|
1359 |
|
1360 | "../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs":
|
1361 |
|
1362 |
|
1363 |
|
1364 |
|
1365 | (function(module, __webpack_exports__, __webpack_require__) {
|
1366 |
|
1367 | "use strict";
|
1368 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PossibleFragmentSpreadsRule\", function() { return PossibleFragmentSpreadsRule; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utilities/typeComparators.mjs */ \"../../../node_modules/graphql/utilities/typeComparators.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n\n/**\n * Possible fragment spread\n *\n * A fragment spread is only valid if the type condition could ever possibly\n * be true: if there is a non-empty intersection of the possible parent types,\n * and possible types which pass the type condition.\n */\nfunction PossibleFragmentSpreadsRule(context) {\n return {\n InlineFragment(node) {\n const fragType = context.getType();\n const parentType = context.getParentType();\n\n if (\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isCompositeType\"])(fragType) &&\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isCompositeType\"])(parentType) &&\n !Object(_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_3__[\"doTypesOverlap\"])(context.getSchema(), fragType, parentType)\n ) {\n const parentTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(parentType);\n const fragTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(fragType);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `Fragment cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n FragmentSpread(node) {\n const fragName = node.name.value;\n const fragType = getFragmentType(context, fragName);\n const parentType = context.getParentType();\n\n if (\n fragType &&\n parentType &&\n !Object(_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_3__[\"doTypesOverlap\"])(context.getSchema(), fragType, parentType)\n ) {\n const parentTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(parentType);\n const fragTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(fragType);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `Fragment \"${fragName}\" cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n\nfunction getFragmentType(context, name) {\n const frag = context.getFragment(name);\n\n if (frag) {\n const type = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_4__[\"typeFromAST\"])(context.getSchema(), frag.typeCondition);\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isCompositeType\"])(type)) {\n return type;\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Qb3NzaWJsZUZyYWdtZW50U3ByZWFkc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Qb3NzaWJsZUZyYWdtZW50U3ByZWFkc1J1bGUubWpzPzFlZWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBpc0NvbXBvc2l0ZVR5cGUgfSBmcm9tICcuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7IGRvVHlwZXNPdmVybGFwIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3R5cGVDb21wYXJhdG9ycy5tanMnO1xuaW1wb3J0IHsgdHlwZUZyb21BU1QgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvdHlwZUZyb21BU1QubWpzJztcblxuLyoqXG4gKiBQb3NzaWJsZSBmcmFnbWVudCBzcHJlYWRcbiAqXG4gKiBBIGZyYWdtZW50IHNwcmVhZCBpcyBvbmx5IHZhbGlkIGlmIHRoZSB0eXBlIGNvbmRpdGlvbiBjb3VsZCBldmVyIHBvc3NpYmx5XG4gKiBiZSB0cnVlOiBpZiB0aGVyZSBpcyBhIG5vbi1lbXB0eSBpbnRlcnNlY3Rpb24gb2YgdGhlIHBvc3NpYmxlIHBhcmVudCB0eXBlcyxcbiAqIGFuZCBwb3NzaWJsZSB0eXBlcyB3aGljaCBwYXNzIHRoZSB0eXBlIGNvbmRpdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFBvc3NpYmxlRnJhZ21lbnRTcHJlYWRzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgSW5saW5lRnJhZ21lbnQobm9kZSkge1xuICAgICAgY29uc3QgZnJhZ1R5cGUgPSBjb250ZXh0LmdldFR5cGUoKTtcbiAgICAgIGNvbnN0IHBhcmVudFR5cGUgPSBjb250ZXh0LmdldFBhcmVudFR5cGUoKTtcblxuICAgICAgaWYgKFxuICAgICAgICBpc0NvbXBvc2l0ZVR5cGUoZnJhZ1R5cGUpICYmXG4gICAgICAgIGlzQ29tcG9zaXRlVHlwZShwYXJlbnRUeXBlKSAmJlxuICAgICAgICAhZG9UeXBlc092ZXJsYXAoY29udGV4dC5nZXRTY2hlbWEoKSwgZnJhZ1R5cGUsIHBhcmVudFR5cGUpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcGFyZW50VHlwZVN0ciA9IGluc3BlY3QocGFyZW50VHlwZSk7XG4gICAgICAgIGNvbnN0IGZyYWdUeXBlU3RyID0gaW5zcGVjdChmcmFnVHlwZSk7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBGcmFnbWVudCBjYW5ub3QgYmUgc3ByZWFkIGhlcmUgYXMgb2JqZWN0cyBvZiB0eXBlIFwiJHtwYXJlbnRUeXBlU3RyfVwiIGNhbiBuZXZlciBiZSBvZiB0eXBlIFwiJHtmcmFnVHlwZVN0cn1cIi5gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBub2Rlczogbm9kZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgRnJhZ21lbnRTcHJlYWQobm9kZSkge1xuICAgICAgY29uc3QgZnJhZ05hbWUgPSBub2RlLm5hbWUudmFsdWU7XG4gICAgICBjb25zdCBmcmFnVHlwZSA9IGdldEZyYWdtZW50VHlwZShjb250ZXh0LCBmcmFnTmFtZSk7XG4gICAgICBjb25zdCBwYXJlbnRUeXBlID0gY29udGV4dC5nZXRQYXJlbnRUeXBlKCk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgZnJhZ1R5cGUgJiZcbiAgICAgICAgcGFyZW50VHlwZSAmJlxuICAgICAgICAhZG9UeXBlc092ZXJsYXAoY29udGV4dC5nZXRTY2hlbWEoKSwgZnJhZ1R5cGUsIHBhcmVudFR5cGUpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcGFyZW50VHlwZVN0ciA9IGluc3BlY3QocGFyZW50VHlwZSk7XG4gICAgICAgIGNvbnN0IGZyYWdUeXBlU3RyID0gaW5zcGVjdChmcmFnVHlwZSk7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBGcmFnbWVudCBcIiR7ZnJhZ05hbWV9XCIgY2Fubm90IGJlIHNwcmVhZCBoZXJlIGFzIG9iamVjdHMgb2YgdHlwZSBcIiR7cGFyZW50VHlwZVN0cn1cIiBjYW4gbmV2ZXIgYmUgb2YgdHlwZSBcIiR7ZnJhZ1R5cGVTdHJ9XCIuYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbm9kZXM6IG5vZGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RnJhZ21lbnRUeXBlKGNvbnRleHQsIG5hbWUpIHtcbiAgY29uc3QgZnJhZyA9IGNvbnRleHQuZ2V0RnJhZ21lbnQobmFtZSk7XG5cbiAgaWYgKGZyYWcpIHtcbiAgICBjb25zdCB0eXBlID0gdHlwZUZyb21BU1QoY29udGV4dC5nZXRTY2hlbWEoKSwgZnJhZy50eXBlQ29uZGl0aW9uKTtcblxuICAgIGlmIChpc0NvbXBvc2l0ZVR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs\n");
|
1369 |
|
1370 | }),
|
1371 |
|
1372 | "../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs":
|
1373 |
|
1374 |
|
1375 |
|
1376 |
|
1377 | (function(module, __webpack_exports__, __webpack_require__) {
|
1378 |
|
1379 | "use strict";
|
1380 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PossibleTypeExtensionsRule\", function() { return PossibleTypeExtensionsRule; });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../language/predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n\n\n\n/**\n * Possible type extension\n *\n * A type extension is only valid if the type is defined and has the same kind.\n */\nfunction PossibleTypeExtensionsRule(context) {\n const schema = context.getSchema();\n const definedTypes = Object.create(null);\n\n for (const def of context.getDocument().definitions) {\n if (Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isTypeDefinitionNode\"])(def)) {\n definedTypes[def.name.value] = def;\n }\n }\n\n return {\n ScalarTypeExtension: checkExtension,\n ObjectTypeExtension: checkExtension,\n InterfaceTypeExtension: checkExtension,\n UnionTypeExtension: checkExtension,\n EnumTypeExtension: checkExtension,\n InputObjectTypeExtension: checkExtension,\n };\n\n function checkExtension(node) {\n const typeName = node.name.value;\n const defNode = definedTypes[typeName];\n const existingType =\n schema === null || schema === void 0 ? void 0 : schema.getType(typeName);\n let expectedKind;\n\n if (defNode) {\n expectedKind = defKindToExtKind[defNode.kind];\n } else if (existingType) {\n expectedKind = typeToExtKind(existingType);\n }\n\n if (expectedKind) {\n if (expectedKind !== node.kind) {\n const kindStr = extensionKindToTypeName(node.kind);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](`Cannot extend non-${kindStr} type \"${typeName}\".`, {\n nodes: defNode ? [defNode, node] : node,\n }),\n );\n }\n } else {\n const allTypeNames = Object.keys({\n ...definedTypes,\n ...(schema === null || schema === void 0\n ? void 0\n : schema.getTypeMap()),\n });\n const suggestedTypes = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_3__[\"suggestionList\"])(typeName, allTypeNames);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\n `Cannot extend type \"${typeName}\" because it is not defined.` +\n Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__[\"didYouMean\"])(suggestedTypes),\n {\n nodes: node.name,\n },\n ),\n );\n }\n }\n}\nconst defKindToExtKind = {\n [_language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCALAR_TYPE_DEFINITION]: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCALAR_TYPE_EXTENSION,\n [_language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].OBJECT_TYPE_DEFINITION]: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].OBJECT_TYPE_EXTENSION,\n [_language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INTERFACE_TYPE_DEFINITION]: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INTERFACE_TYPE_EXTENSION,\n [_language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].UNION_TYPE_DEFINITION]: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].UNION_TYPE_EXTENSION,\n [_language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].ENUM_TYPE_DEFINITION]: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].ENUM_TYPE_EXTENSION,\n [_language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_OBJECT_TYPE_DEFINITION]: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_OBJECT_TYPE_EXTENSION,\n};\n\nfunction typeToExtKind(type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isScalarType\"])(type)) {\n return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCALAR_TYPE_EXTENSION;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isObjectType\"])(type)) {\n return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].OBJECT_TYPE_EXTENSION;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInterfaceType\"])(type)) {\n return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INTERFACE_TYPE_EXTENSION;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isUnionType\"])(type)) {\n return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].UNION_TYPE_EXTENSION;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isEnumType\"])(type)) {\n return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].ENUM_TYPE_EXTENSION;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInputObjectType\"])(type)) {\n return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_OBJECT_TYPE_EXTENSION;\n }\n /* c8 ignore next 3 */\n // Not reachable. All possible types have been considered\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__[\"invariant\"])(false, 'Unexpected type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(type));\n}\n\nfunction extensionKindToTypeName(kind) {\n switch (kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCALAR_TYPE_EXTENSION:\n return 'scalar';\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].OBJECT_TYPE_EXTENSION:\n return 'object';\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INTERFACE_TYPE_EXTENSION:\n return 'interface';\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].UNION_TYPE_EXTENSION:\n return 'union';\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].ENUM_TYPE_EXTENSION:\n return 'enum';\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_OBJECT_TYPE_EXTENSION:\n return 'input object';\n // Not reachable. All possible types have been considered\n\n /* c8 ignore next */\n\n default:\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__[\"invariant\"])(false, 'Unexpected kind: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(kind));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Qb3NzaWJsZVR5cGVFeHRlbnNpb25zUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1Bvc3NpYmxlVHlwZUV4dGVuc2lvbnNSdWxlLm1qcz8zMDVmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpZFlvdU1lYW4gfSBmcm9tICcuLi8uLi9qc3V0aWxzL2RpZFlvdU1lYW4ubWpzJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi8uLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvaW52YXJpYW50Lm1qcyc7XG5pbXBvcnQgeyBzdWdnZXN0aW9uTGlzdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvc3VnZ2VzdGlvbkxpc3QubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBpc1R5cGVEZWZpbml0aW9uTm9kZSB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL3ByZWRpY2F0ZXMubWpzJztcbmltcG9ydCB7XG4gIGlzRW51bVR5cGUsXG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzT2JqZWN0VHlwZSxcbiAgaXNTY2FsYXJUeXBlLFxuICBpc1VuaW9uVHlwZSxcbn0gZnJvbSAnLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5cbi8qKlxuICogUG9zc2libGUgdHlwZSBleHRlbnNpb25cbiAqXG4gKiBBIHR5cGUgZXh0ZW5zaW9uIGlzIG9ubHkgdmFsaWQgaWYgdGhlIHR5cGUgaXMgZGVmaW5lZCBhbmQgaGFzIHRoZSBzYW1lIGtpbmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBQb3NzaWJsZVR5cGVFeHRlbnNpb25zUnVsZShjb250ZXh0KSB7XG4gIGNvbnN0IHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIGNvbnN0IGRlZmluZWRUeXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yIChjb25zdCBkZWYgb2YgY29udGV4dC5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zKSB7XG4gICAgaWYgKGlzVHlwZURlZmluaXRpb25Ob2RlKGRlZikpIHtcbiAgICAgIGRlZmluZWRUeXBlc1tkZWYubmFtZS52YWx1ZV0gPSBkZWY7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBTY2FsYXJUeXBlRXh0ZW5zaW9uOiBjaGVja0V4dGVuc2lvbixcbiAgICBPYmplY3RUeXBlRXh0ZW5zaW9uOiBjaGVja0V4dGVuc2lvbixcbiAgICBJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uOiBjaGVja0V4dGVuc2lvbixcbiAgICBVbmlvblR5cGVFeHRlbnNpb246IGNoZWNrRXh0ZW5zaW9uLFxuICAgIEVudW1UeXBlRXh0ZW5zaW9uOiBjaGVja0V4dGVuc2lvbixcbiAgICBJbnB1dE9iamVjdFR5cGVFeHRlbnNpb246IGNoZWNrRXh0ZW5zaW9uLFxuICB9O1xuXG4gIGZ1bmN0aW9uIGNoZWNrRXh0ZW5zaW9uKG5vZGUpIHtcbiAgICBjb25zdCB0eXBlTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICBjb25zdCBkZWZOb2RlID0gZGVmaW5lZFR5cGVzW3R5cGVOYW1lXTtcbiAgICBjb25zdCBleGlzdGluZ1R5cGUgPVxuICAgICAgc2NoZW1hID09PSBudWxsIHx8IHNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NoZW1hLmdldFR5cGUodHlwZU5hbWUpO1xuICAgIGxldCBleHBlY3RlZEtpbmQ7XG5cbiAgICBpZiAoZGVmTm9kZSkge1xuICAgICAgZXhwZWN0ZWRLaW5kID0gZGVmS2luZFRvRXh0S2luZFtkZWZOb2RlLmtpbmRdO1xuICAgIH0gZWxzZSBpZiAoZXhpc3RpbmdUeXBlKSB7XG4gICAgICBleHBlY3RlZEtpbmQgPSB0eXBlVG9FeHRLaW5kKGV4aXN0aW5nVHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKGV4cGVjdGVkS2luZCkge1xuICAgICAgaWYgKGV4cGVjdGVkS2luZCAhPT0gbm9kZS5raW5kKSB7XG4gICAgICAgIGNvbnN0IGtpbmRTdHIgPSBleHRlbnNpb25LaW5kVG9UeXBlTmFtZShub2RlLmtpbmQpO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoYENhbm5vdCBleHRlbmQgbm9uLSR7a2luZFN0cn0gdHlwZSBcIiR7dHlwZU5hbWV9XCIuYCwge1xuICAgICAgICAgICAgbm9kZXM6IGRlZk5vZGUgPyBbZGVmTm9kZSwgbm9kZV0gOiBub2RlLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhbGxUeXBlTmFtZXMgPSBPYmplY3Qua2V5cyh7XG4gICAgICAgIC4uLmRlZmluZWRUeXBlcyxcbiAgICAgICAgLi4uKHNjaGVtYSA9PT0gbnVsbCB8fCBzY2hlbWEgPT09IHZvaWQgMFxuICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgOiBzY2hlbWEuZ2V0VHlwZU1hcCgpKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc3VnZ2VzdGVkVHlwZXMgPSBzdWdnZXN0aW9uTGlzdCh0eXBlTmFtZSwgYWxsVHlwZU5hbWVzKTtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgYENhbm5vdCBleHRlbmQgdHlwZSBcIiR7dHlwZU5hbWV9XCIgYmVjYXVzZSBpdCBpcyBub3QgZGVmaW5lZC5gICtcbiAgICAgICAgICAgIGRpZFlvdU1lYW4oc3VnZ2VzdGVkVHlwZXMpLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5vZGVzOiBub2RlLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5jb25zdCBkZWZLaW5kVG9FeHRLaW5kID0ge1xuICBbS2luZC5TQ0FMQVJfVFlQRV9ERUZJTklUSU9OXTogS2luZC5TQ0FMQVJfVFlQRV9FWFRFTlNJT04sXG4gIFtLaW5kLk9CSkVDVF9UWVBFX0RFRklOSVRJT05dOiBLaW5kLk9CSkVDVF9UWVBFX0VYVEVOU0lPTixcbiAgW0tpbmQuSU5URVJGQUNFX1RZUEVfREVGSU5JVElPTl06IEtpbmQuSU5URVJGQUNFX1RZUEVfRVhURU5TSU9OLFxuICBbS2luZC5VTklPTl9UWVBFX0RFRklOSVRJT05dOiBLaW5kLlVOSU9OX1RZUEVfRVhURU5TSU9OLFxuICBbS2luZC5FTlVNX1RZUEVfREVGSU5JVElPTl06IEtpbmQuRU5VTV9UWVBFX0VYVEVOU0lPTixcbiAgW0tpbmQuSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTl06IEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OLFxufTtcblxuZnVuY3Rpb24gdHlwZVRvRXh0S2luZCh0eXBlKSB7XG4gIGlmIChpc1NjYWxhclR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gS2luZC5TQ0FMQVJfVFlQRV9FWFRFTlNJT047XG4gIH1cblxuICBpZiAoaXNPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIEtpbmQuT0JKRUNUX1RZUEVfRVhURU5TSU9OO1xuICB9XG5cbiAgaWYgKGlzSW50ZXJmYWNlVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBLaW5kLklOVEVSRkFDRV9UWVBFX0VYVEVOU0lPTjtcbiAgfVxuXG4gIGlmIChpc1VuaW9uVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBLaW5kLlVOSU9OX1RZUEVfRVhURU5TSU9OO1xuICB9XG5cbiAgaWYgKGlzRW51bVR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gS2luZC5FTlVNX1RZUEVfRVhURU5TSU9OO1xuICB9XG5cbiAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OO1xuICB9XG4gIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgLy8gTm90IHJlYWNoYWJsZS4gQWxsIHBvc3NpYmxlIHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KGZhbHNlLCAnVW5leHBlY3RlZCB0eXBlOiAnICsgaW5zcGVjdCh0eXBlKSk7XG59XG5cbmZ1bmN0aW9uIGV4dGVuc2lvbktpbmRUb1R5cGVOYW1lKGtpbmQpIHtcbiAgc3dpdGNoIChraW5kKSB7XG4gICAgY2FzZSBLaW5kLlNDQUxBUl9UWVBFX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiAnc2NhbGFyJztcblxuICAgIGNhc2UgS2luZC5PQkpFQ1RfVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gJ29iamVjdCc7XG5cbiAgICBjYXNlIEtpbmQuSU5URVJGQUNFX1RZUEVfRVhURU5TSU9OOlxuICAgICAgcmV0dXJuICdpbnRlcmZhY2UnO1xuXG4gICAgY2FzZSBLaW5kLlVOSU9OX1RZUEVfRVhURU5TSU9OOlxuICAgICAgcmV0dXJuICd1bmlvbic7XG5cbiAgICBjYXNlIEtpbmQuRU5VTV9UWVBFX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiAnZW51bSc7XG5cbiAgICBjYXNlIEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OOlxuICAgICAgcmV0dXJuICdpbnB1dCBvYmplY3QnO1xuICAgIC8vIE5vdCByZWFjaGFibGUuIEFsbCBwb3NzaWJsZSB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZFxuXG4gICAgLyogYzggaWdub3JlIG5leHQgKi9cblxuICAgIGRlZmF1bHQ6XG4gICAgICBmYWxzZSB8fCBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIGtpbmQ6ICcgKyBpbnNwZWN0KGtpbmQpKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs\n");
|
1381 |
|
1382 | }),
|
1383 |
|
1384 | "../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs":
|
1385 |
|
1386 |
|
1387 |
|
1388 |
|
1389 | (function(module, __webpack_exports__, __webpack_require__) {
|
1390 |
|
1391 | "use strict";
|
1392 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ProvidedRequiredArgumentsRule\", function() { return ProvidedRequiredArgumentsRule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ProvidedRequiredArgumentsOnDirectivesRule\", function() { return ProvidedRequiredArgumentsOnDirectivesRule; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n\n\n\n\n\n\n\n\n/**\n * Provided required arguments\n *\n * A field or directive is only valid if all required (non-null without a\n * default value) field arguments have been provided.\n */\nfunction ProvidedRequiredArgumentsRule(context) {\n return {\n // eslint-disable-next-line new-cap\n ...ProvidedRequiredArgumentsOnDirectivesRule(context),\n Field: {\n // Validate on leave to allow for deeper errors to appear first.\n leave(fieldNode) {\n var _fieldNode$arguments;\n\n const fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n return false;\n }\n\n const providedArgs = new Set( // FIXME: https://github.com/graphql/graphql-js/issues/2203\n /* c8 ignore next */\n (_fieldNode$arguments = fieldNode.arguments) === null ||\n _fieldNode$arguments === void 0\n ? void 0\n : _fieldNode$arguments.map((arg) => arg.name.value),\n );\n\n for (const argDef of fieldDef.args) {\n if (!providedArgs.has(argDef.name) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isRequiredArgument\"])(argDef)) {\n const argTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(argDef.type);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Field \"${fieldDef.name}\" argument \"${argDef.name}\" of type \"${argTypeStr}\" is required, but it was not provided.`,\n {\n nodes: fieldNode,\n },\n ),\n );\n }\n }\n },\n },\n };\n}\n/**\n * @internal\n */\n\nfunction ProvidedRequiredArgumentsOnDirectivesRule(context) {\n var _schema$getDirectives;\n\n const requiredArgsMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives =\n (_schema$getDirectives =\n schema === null || schema === void 0\n ? void 0\n : schema.getDirectives()) !== null && _schema$getDirectives !== void 0\n ? _schema$getDirectives\n : _type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__[\"specifiedDirectives\"];\n\n for (const directive of definedDirectives) {\n requiredArgsMap[directive.name] = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"keyMap\"])(\n directive.args.filter(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isRequiredArgument\"]),\n (arg) => arg.name,\n );\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].DIRECTIVE_DEFINITION) {\n var _def$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argNodes =\n (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n ? _def$arguments\n : [];\n requiredArgsMap[def.name.value] = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"keyMap\"])(\n argNodes.filter(isRequiredArgumentNode),\n (arg) => arg.name.value,\n );\n }\n }\n\n return {\n Directive: {\n // Validate on leave to allow for deeper errors to appear first.\n leave(directiveNode) {\n const directiveName = directiveNode.name.value;\n const requiredArgs = requiredArgsMap[directiveName];\n\n if (requiredArgs) {\n var _directiveNode$argume;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argNodes =\n (_directiveNode$argume = directiveNode.arguments) !== null &&\n _directiveNode$argume !== void 0\n ? _directiveNode$argume\n : [];\n const argNodeMap = new Set(argNodes.map((arg) => arg.name.value));\n\n for (const [argName, argDef] of Object.entries(requiredArgs)) {\n if (!argNodeMap.has(argName)) {\n const argType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isType\"])(argDef.type)\n ? Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(argDef.type)\n : Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"print\"])(argDef.type);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\n `Directive \"@${directiveName}\" argument \"${argName}\" of type \"${argType}\" is required, but it was not provided.`,\n {\n nodes: directiveNode,\n },\n ),\n );\n }\n }\n }\n },\n },\n };\n}\n\nfunction isRequiredArgumentNode(arg) {\n return arg.type.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].NON_NULL_TYPE && arg.defaultValue == null;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Qcm92aWRlZFJlcXVpcmVkQXJndW1lbnRzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1Byb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNSdWxlLm1qcz82N2Y4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi8uLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGtleU1hcCB9IGZyb20gJy4uLy4uL2pzdXRpbHMva2V5TWFwLm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9wcmludGVyLm1qcyc7XG5pbXBvcnQgeyBpc1JlcXVpcmVkQXJndW1lbnQsIGlzVHlwZSB9IGZyb20gJy4uLy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHsgc3BlY2lmaWVkRGlyZWN0aXZlcyB9IGZyb20gJy4uLy4uL3R5cGUvZGlyZWN0aXZlcy5tanMnO1xuXG4vKipcbiAqIFByb3ZpZGVkIHJlcXVpcmVkIGFyZ3VtZW50c1xuICpcbiAqIEEgZmllbGQgb3IgZGlyZWN0aXZlIGlzIG9ubHkgdmFsaWQgaWYgYWxsIHJlcXVpcmVkIChub24tbnVsbCB3aXRob3V0IGFcbiAqIGRlZmF1bHQgdmFsdWUpIGZpZWxkIGFyZ3VtZW50cyBoYXZlIGJlZW4gcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBQcm92aWRlZFJlcXVpcmVkQXJndW1lbnRzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAuLi5Qcm92aWRlZFJlcXVpcmVkQXJndW1lbnRzT25EaXJlY3RpdmVzUnVsZShjb250ZXh0KSxcbiAgICBGaWVsZDoge1xuICAgICAgLy8gVmFsaWRhdGUgb24gbGVhdmUgdG8gYWxsb3cgZm9yIGRlZXBlciBlcnJvcnMgdG8gYXBwZWFyIGZpcnN0LlxuICAgICAgbGVhdmUoZmllbGROb2RlKSB7XG4gICAgICAgIHZhciBfZmllbGROb2RlJGFyZ3VtZW50cztcblxuICAgICAgICBjb25zdCBmaWVsZERlZiA9IGNvbnRleHQuZ2V0RmllbGREZWYoKTtcblxuICAgICAgICBpZiAoIWZpZWxkRGVmKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvdmlkZWRBcmdzID0gbmV3IFNldCggLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcbiAgICAgICAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIChfZmllbGROb2RlJGFyZ3VtZW50cyA9IGZpZWxkTm9kZS5hcmd1bWVudHMpID09PSBudWxsIHx8XG4gICAgICAgICAgX2ZpZWxkTm9kZSRhcmd1bWVudHMgPT09IHZvaWQgMFxuICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgIDogX2ZpZWxkTm9kZSRhcmd1bWVudHMubWFwKChhcmcpID0+IGFyZy5uYW1lLnZhbHVlKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGFyZ0RlZiBvZiBmaWVsZERlZi5hcmdzKSB7XG4gICAgICAgICAgaWYgKCFwcm92aWRlZEFyZ3MuaGFzKGFyZ0RlZi5uYW1lKSAmJiBpc1JlcXVpcmVkQXJndW1lbnQoYXJnRGVmKSkge1xuICAgICAgICAgICAgY29uc3QgYXJnVHlwZVN0ciA9IGluc3BlY3QoYXJnRGVmLnR5cGUpO1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgICBgRmllbGQgXCIke2ZpZWxkRGVmLm5hbWV9XCIgYXJndW1lbnQgXCIke2FyZ0RlZi5uYW1lfVwiIG9mIHR5cGUgXCIke2FyZ1R5cGVTdHJ9XCIgaXMgcmVxdWlyZWQsIGJ1dCBpdCB3YXMgbm90IHByb3ZpZGVkLmAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbm9kZXM6IGZpZWxkTm9kZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIFByb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNPbkRpcmVjdGl2ZXNSdWxlKGNvbnRleHQpIHtcbiAgdmFyIF9zY2hlbWEkZ2V0RGlyZWN0aXZlcztcblxuICBjb25zdCByZXF1aXJlZEFyZ3NNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICBjb25zdCBkZWZpbmVkRGlyZWN0aXZlcyA9XG4gICAgKF9zY2hlbWEkZ2V0RGlyZWN0aXZlcyA9XG4gICAgICBzY2hlbWEgPT09IG51bGwgfHwgc2NoZW1hID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiBzY2hlbWEuZ2V0RGlyZWN0aXZlcygpKSAhPT0gbnVsbCAmJiBfc2NoZW1hJGdldERpcmVjdGl2ZXMgIT09IHZvaWQgMFxuICAgICAgPyBfc2NoZW1hJGdldERpcmVjdGl2ZXNcbiAgICAgIDogc3BlY2lmaWVkRGlyZWN0aXZlcztcblxuICBmb3IgKGNvbnN0IGRpcmVjdGl2ZSBvZiBkZWZpbmVkRGlyZWN0aXZlcykge1xuICAgIHJlcXVpcmVkQXJnc01hcFtkaXJlY3RpdmUubmFtZV0gPSBrZXlNYXAoXG4gICAgICBkaXJlY3RpdmUuYXJncy5maWx0ZXIoaXNSZXF1aXJlZEFyZ3VtZW50KSxcbiAgICAgIChhcmcpID0+IGFyZy5uYW1lLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBhc3REZWZpbml0aW9ucyA9IGNvbnRleHQuZ2V0RG9jdW1lbnQoKS5kZWZpbml0aW9ucztcblxuICBmb3IgKGNvbnN0IGRlZiBvZiBhc3REZWZpbml0aW9ucykge1xuICAgIGlmIChkZWYua2luZCA9PT0gS2luZC5ESVJFQ1RJVkVfREVGSU5JVElPTikge1xuICAgICAgdmFyIF9kZWYkYXJndW1lbnRzO1xuXG4gICAgICAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuXG4gICAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgICAgY29uc3QgYXJnTm9kZXMgPVxuICAgICAgICAoX2RlZiRhcmd1bWVudHMgPSBkZWYuYXJndW1lbnRzKSAhPT0gbnVsbCAmJiBfZGVmJGFyZ3VtZW50cyAhPT0gdm9pZCAwXG4gICAgICAgICAgPyBfZGVmJGFyZ3VtZW50c1xuICAgICAgICAgIDogW107XG4gICAgICByZXF1aXJlZEFyZ3NNYXBbZGVmLm5hbWUudmFsdWVdID0ga2V5TWFwKFxuICAgICAgICBhcmdOb2Rlcy5maWx0ZXIoaXNSZXF1aXJlZEFyZ3VtZW50Tm9kZSksXG4gICAgICAgIChhcmcpID0+IGFyZy5uYW1lLnZhbHVlLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIERpcmVjdGl2ZToge1xuICAgICAgLy8gVmFsaWRhdGUgb24gbGVhdmUgdG8gYWxsb3cgZm9yIGRlZXBlciBlcnJvcnMgdG8gYXBwZWFyIGZpcnN0LlxuICAgICAgbGVhdmUoZGlyZWN0aXZlTm9kZSkge1xuICAgICAgICBjb25zdCBkaXJlY3RpdmVOYW1lID0gZGlyZWN0aXZlTm9kZS5uYW1lLnZhbHVlO1xuICAgICAgICBjb25zdCByZXF1aXJlZEFyZ3MgPSByZXF1aXJlZEFyZ3NNYXBbZGlyZWN0aXZlTmFtZV07XG5cbiAgICAgICAgaWYgKHJlcXVpcmVkQXJncykge1xuICAgICAgICAgIHZhciBfZGlyZWN0aXZlTm9kZSRhcmd1bWU7XG5cbiAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuXG4gICAgICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgICAgICBjb25zdCBhcmdOb2RlcyA9XG4gICAgICAgICAgICAoX2RpcmVjdGl2ZU5vZGUkYXJndW1lID0gZGlyZWN0aXZlTm9kZS5hcmd1bWVudHMpICE9PSBudWxsICYmXG4gICAgICAgICAgICBfZGlyZWN0aXZlTm9kZSRhcmd1bWUgIT09IHZvaWQgMFxuICAgICAgICAgICAgICA/IF9kaXJlY3RpdmVOb2RlJGFyZ3VtZVxuICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgIGNvbnN0IGFyZ05vZGVNYXAgPSBuZXcgU2V0KGFyZ05vZGVzLm1hcCgoYXJnKSA9PiBhcmcubmFtZS52YWx1ZSkpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBbYXJnTmFtZSwgYXJnRGVmXSBvZiBPYmplY3QuZW50cmllcyhyZXF1aXJlZEFyZ3MpKSB7XG4gICAgICAgICAgICBpZiAoIWFyZ05vZGVNYXAuaGFzKGFyZ05hbWUpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFyZ1R5cGUgPSBpc1R5cGUoYXJnRGVmLnR5cGUpXG4gICAgICAgICAgICAgICAgPyBpbnNwZWN0KGFyZ0RlZi50eXBlKVxuICAgICAgICAgICAgICAgIDogcHJpbnQoYXJnRGVmLnR5cGUpO1xuICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAgICAgICBgRGlyZWN0aXZlIFwiQCR7ZGlyZWN0aXZlTmFtZX1cIiBhcmd1bWVudCBcIiR7YXJnTmFtZX1cIiBvZiB0eXBlIFwiJHthcmdUeXBlfVwiIGlzIHJlcXVpcmVkLCBidXQgaXQgd2FzIG5vdCBwcm92aWRlZC5gLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBub2RlczogZGlyZWN0aXZlTm9kZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNSZXF1aXJlZEFyZ3VtZW50Tm9kZShhcmcpIHtcbiAgcmV0dXJuIGFyZy50eXBlLmtpbmQgPT09IEtpbmQuTk9OX05VTExfVFlQRSAmJiBhcmcuZGVmYXVsdFZhbHVlID09IG51bGw7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs\n");
|
1393 |
|
1394 | }),
|
1395 |
|
1396 | "../../../node_modules/graphql/validation/rules/ScalarLeafsRule.mjs":
|
1397 |
|
1398 |
|
1399 |
|
1400 |
|
1401 | (function(module, __webpack_exports__, __webpack_require__) {
|
1402 |
|
1403 | "use strict";
|
1404 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ScalarLeafsRule\", function() { return ScalarLeafsRule; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n/**\n * Scalar leafs\n *\n * A GraphQL document is valid only if all leaf fields (fields without\n * sub selections) are of scalar or enum types.\n */\nfunction ScalarLeafsRule(context) {\n return {\n Field(node) {\n const type = context.getType();\n const selectionSet = node.selectionSet;\n\n if (type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isLeafType\"])(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getNamedType\"])(type))) {\n if (selectionSet) {\n const fieldName = node.name.value;\n const typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(type);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `Field \"${fieldName}\" must not have a selection since type \"${typeStr}\" has no subfields.`,\n {\n nodes: selectionSet,\n },\n ),\n );\n }\n } else if (!selectionSet) {\n const fieldName = node.name.value;\n const typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(type);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `Field \"${fieldName}\" of type \"${typeStr}\" must have a selection of subfields. Did you mean \"${fieldName} { ... }\"?`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9TY2FsYXJMZWFmc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9TY2FsYXJMZWFmc1J1bGUubWpzP2M3ZjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBnZXROYW1lZFR5cGUsIGlzTGVhZlR5cGUgfSBmcm9tICcuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzJztcblxuLyoqXG4gKiBTY2FsYXIgbGVhZnNcbiAqXG4gKiBBIEdyYXBoUUwgZG9jdW1lbnQgaXMgdmFsaWQgb25seSBpZiBhbGwgbGVhZiBmaWVsZHMgKGZpZWxkcyB3aXRob3V0XG4gKiBzdWIgc2VsZWN0aW9ucykgYXJlIG9mIHNjYWxhciBvciBlbnVtIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gU2NhbGFyTGVhZnNSdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBGaWVsZChub2RlKSB7XG4gICAgICBjb25zdCB0eXBlID0gY29udGV4dC5nZXRUeXBlKCk7XG4gICAgICBjb25zdCBzZWxlY3Rpb25TZXQgPSBub2RlLnNlbGVjdGlvblNldDtcblxuICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgaWYgKGlzTGVhZlR5cGUoZ2V0TmFtZWRUeXBlKHR5cGUpKSkge1xuICAgICAgICAgIGlmIChzZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVTdHIgPSBpbnNwZWN0KHR5cGUpO1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgICBgRmllbGQgXCIke2ZpZWxkTmFtZX1cIiBtdXN0IG5vdCBoYXZlIGEgc2VsZWN0aW9uIHNpbmNlIHR5cGUgXCIke3R5cGVTdHJ9XCIgaGFzIG5vIHN1YmZpZWxkcy5gLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5vZGVzOiBzZWxlY3Rpb25TZXQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFzZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG4gICAgICAgICAgY29uc3QgdHlwZVN0ciA9IGluc3BlY3QodHlwZSk7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAgIGBGaWVsZCBcIiR7ZmllbGROYW1lfVwiIG9mIHR5cGUgXCIke3R5cGVTdHJ9XCIgbXVzdCBoYXZlIGEgc2VsZWN0aW9uIG9mIHN1YmZpZWxkcy4gRGlkIHlvdSBtZWFuIFwiJHtmaWVsZE5hbWV9IHsgLi4uIH1cIj9gLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbm9kZXM6IG5vZGUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/ScalarLeafsRule.mjs\n");
|
1405 |
|
1406 | }),
|
1407 |
|
1408 | "../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs":
|
1409 |
|
1410 |
|
1411 |
|
1412 |
|
1413 | (function(module, __webpack_exports__, __webpack_require__) {
|
1414 |
|
1415 | "use strict";
|
1416 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SingleFieldSubscriptionsRule\", function() { return SingleFieldSubscriptionsRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _execution_collectFields_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../execution/collectFields.mjs */ \"../../../node_modules/graphql/execution/collectFields.mjs\");\n\n\n\n\n/**\n * Subscriptions must only include a non-introspection field.\n *\n * A GraphQL subscription is valid only if it contains a single root field and\n * that root field is not an introspection field.\n *\n * See https://spec.graphql.org/draft/#sec-Single-root-field\n */\nfunction SingleFieldSubscriptionsRule(context) {\n return {\n OperationDefinition(node) {\n if (node.operation === 'subscription') {\n const schema = context.getSchema();\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType) {\n const operationName = node.name ? node.name.value : null;\n const variableValues = Object.create(null);\n const document = context.getDocument();\n const fragments = Object.create(null);\n\n for (const definition of document.definitions) {\n if (definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FRAGMENT_DEFINITION) {\n fragments[definition.name.value] = definition;\n }\n }\n\n const fields = Object(_execution_collectFields_mjs__WEBPACK_IMPORTED_MODULE_2__[\"collectFields\"])(\n schema,\n fragments,\n variableValues,\n subscriptionType,\n node.selectionSet,\n );\n\n if (fields.size > 1) {\n const fieldSelectionLists = [...fields.values()];\n const extraFieldSelectionLists = fieldSelectionLists.slice(1);\n const extraFieldSelections = extraFieldSelectionLists.flat();\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n operationName != null\n ? `Subscription \"${operationName}\" must select only one top level field.`\n : 'Anonymous Subscription must select only one top level field.',\n {\n nodes: extraFieldSelections,\n },\n ),\n );\n }\n\n for (const fieldNodes of fields.values()) {\n const field = fieldNodes[0];\n const fieldName = field.name.value;\n\n if (fieldName.startsWith('__')) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n operationName != null\n ? `Subscription \"${operationName}\" must not select an introspection top level field.`\n : 'Anonymous Subscription must not select an introspection top level field.',\n {\n nodes: fieldNodes,\n },\n ),\n );\n }\n }\n }\n }\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9TaW5nbGVGaWVsZFN1YnNjcmlwdGlvbnNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvU2luZ2xlRmllbGRTdWJzY3JpcHRpb25zUnVsZS5tanM/M2ZlZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuaW1wb3J0IHsgY29sbGVjdEZpZWxkcyB9IGZyb20gJy4uLy4uL2V4ZWN1dGlvbi9jb2xsZWN0RmllbGRzLm1qcyc7XG5cbi8qKlxuICogU3Vic2NyaXB0aW9ucyBtdXN0IG9ubHkgaW5jbHVkZSBhIG5vbi1pbnRyb3NwZWN0aW9uIGZpZWxkLlxuICpcbiAqIEEgR3JhcGhRTCBzdWJzY3JpcHRpb24gaXMgdmFsaWQgb25seSBpZiBpdCBjb250YWlucyBhIHNpbmdsZSByb290IGZpZWxkIGFuZFxuICogdGhhdCByb290IGZpZWxkIGlzIG5vdCBhbiBpbnRyb3NwZWN0aW9uIGZpZWxkLlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1TaW5nbGUtcm9vdC1maWVsZFxuICovXG5leHBvcnQgZnVuY3Rpb24gU2luZ2xlRmllbGRTdWJzY3JpcHRpb25zUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgT3BlcmF0aW9uRGVmaW5pdGlvbihub2RlKSB7XG4gICAgICBpZiAobm9kZS5vcGVyYXRpb24gPT09ICdzdWJzY3JpcHRpb24nKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvblR5cGUgPSBzY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpO1xuXG4gICAgICAgIGlmIChzdWJzY3JpcHRpb25UeXBlKSB7XG4gICAgICAgICAgY29uc3Qgb3BlcmF0aW9uTmFtZSA9IG5vZGUubmFtZSA/IG5vZGUubmFtZS52YWx1ZSA6IG51bGw7XG4gICAgICAgICAgY29uc3QgdmFyaWFibGVWYWx1ZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIGNvbnN0IGRvY3VtZW50ID0gY29udGV4dC5nZXREb2N1bWVudCgpO1xuICAgICAgICAgIGNvbnN0IGZyYWdtZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGRlZmluaXRpb24gb2YgZG9jdW1lbnQuZGVmaW5pdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChkZWZpbml0aW9uLmtpbmQgPT09IEtpbmQuRlJBR01FTlRfREVGSU5JVElPTikge1xuICAgICAgICAgICAgICBmcmFnbWVudHNbZGVmaW5pdGlvbi5uYW1lLnZhbHVlXSA9IGRlZmluaXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZmllbGRzID0gY29sbGVjdEZpZWxkcyhcbiAgICAgICAgICAgIHNjaGVtYSxcbiAgICAgICAgICAgIGZyYWdtZW50cyxcbiAgICAgICAgICAgIHZhcmlhYmxlVmFsdWVzLFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uVHlwZSxcbiAgICAgICAgICAgIG5vZGUuc2VsZWN0aW9uU2V0LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoZmllbGRzLnNpemUgPiAxKSB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFNlbGVjdGlvbkxpc3RzID0gWy4uLmZpZWxkcy52YWx1ZXMoKV07XG4gICAgICAgICAgICBjb25zdCBleHRyYUZpZWxkU2VsZWN0aW9uTGlzdHMgPSBmaWVsZFNlbGVjdGlvbkxpc3RzLnNsaWNlKDEpO1xuICAgICAgICAgICAgY29uc3QgZXh0cmFGaWVsZFNlbGVjdGlvbnMgPSBleHRyYUZpZWxkU2VsZWN0aW9uTGlzdHMuZmxhdCgpO1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgICBvcGVyYXRpb25OYW1lICE9IG51bGxcbiAgICAgICAgICAgICAgICAgID8gYFN1YnNjcmlwdGlvbiBcIiR7b3BlcmF0aW9uTmFtZX1cIiBtdXN0IHNlbGVjdCBvbmx5IG9uZSB0b3AgbGV2ZWwgZmllbGQuYFxuICAgICAgICAgICAgICAgICAgOiAnQW5vbnltb3VzIFN1YnNjcmlwdGlvbiBtdXN0IHNlbGVjdCBvbmx5IG9uZSB0b3AgbGV2ZWwgZmllbGQuJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBub2RlczogZXh0cmFGaWVsZFNlbGVjdGlvbnMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChjb25zdCBmaWVsZE5vZGVzIG9mIGZpZWxkcy52YWx1ZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZE5vZGVzWzBdO1xuICAgICAgICAgICAgY29uc3QgZmllbGROYW1lID0gZmllbGQubmFtZS52YWx1ZTtcblxuICAgICAgICAgICAgaWYgKGZpZWxkTmFtZS5zdGFydHNXaXRoKCdfXycpKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWUgIT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICA/IGBTdWJzY3JpcHRpb24gXCIke29wZXJhdGlvbk5hbWV9XCIgbXVzdCBub3Qgc2VsZWN0IGFuIGludHJvc3BlY3Rpb24gdG9wIGxldmVsIGZpZWxkLmBcbiAgICAgICAgICAgICAgICAgICAgOiAnQW5vbnltb3VzIFN1YnNjcmlwdGlvbiBtdXN0IG5vdCBzZWxlY3QgYW4gaW50cm9zcGVjdGlvbiB0b3AgbGV2ZWwgZmllbGQuJyxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXM6IGZpZWxkTm9kZXMsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs\n");
|
1417 |
|
1418 | }),
|
1419 |
|
1420 | "../../../node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs":
|
1421 |
|
1422 |
|
1423 |
|
1424 |
|
1425 | (function(module, __webpack_exports__, __webpack_require__) {
|
1426 |
|
1427 | "use strict";
|
1428 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueArgumentDefinitionNamesRule\", function() { return UniqueArgumentDefinitionNamesRule; });\n/* harmony import */ var _jsutils_groupBy_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/groupBy.mjs */ \"../../../node_modules/graphql/jsutils/groupBy.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n\n/**\n * Unique argument definition names\n *\n * A GraphQL Object or Interface type is only valid if all its fields have uniquely named arguments.\n * A GraphQL Directive is only valid if all its arguments are uniquely named.\n */\nfunction UniqueArgumentDefinitionNamesRule(context) {\n return {\n DirectiveDefinition(directiveNode) {\n var _directiveNode$argume;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argumentNodes =\n (_directiveNode$argume = directiveNode.arguments) !== null &&\n _directiveNode$argume !== void 0\n ? _directiveNode$argume\n : [];\n return checkArgUniqueness(`@${directiveNode.name.value}`, argumentNodes);\n },\n\n InterfaceTypeDefinition: checkArgUniquenessPerField,\n InterfaceTypeExtension: checkArgUniquenessPerField,\n ObjectTypeDefinition: checkArgUniquenessPerField,\n ObjectTypeExtension: checkArgUniquenessPerField,\n };\n\n function checkArgUniquenessPerField(typeNode) {\n var _typeNode$fields;\n\n const typeName = typeNode.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const fieldNodes =\n (_typeNode$fields = typeNode.fields) !== null &&\n _typeNode$fields !== void 0\n ? _typeNode$fields\n : [];\n\n for (const fieldDef of fieldNodes) {\n var _fieldDef$arguments;\n\n const fieldName = fieldDef.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const argumentNodes =\n (_fieldDef$arguments = fieldDef.arguments) !== null &&\n _fieldDef$arguments !== void 0\n ? _fieldDef$arguments\n : [];\n checkArgUniqueness(`${typeName}.${fieldName}`, argumentNodes);\n }\n\n return false;\n }\n\n function checkArgUniqueness(parentName, argumentNodes) {\n const seenArgs = Object(_jsutils_groupBy_mjs__WEBPACK_IMPORTED_MODULE_0__[\"groupBy\"])(argumentNodes, (arg) => arg.name.value);\n\n for (const [argName, argNodes] of seenArgs) {\n if (argNodes.length > 1) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `Argument \"${parentName}(${argName}:)\" can only be defined once.`,\n {\n nodes: argNodes.map((node) => node.name),\n },\n ),\n );\n }\n }\n\n return false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVBcmd1bWVudERlZmluaXRpb25OYW1lc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVBcmd1bWVudERlZmluaXRpb25OYW1lc1J1bGUubWpzPzMxZDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ3JvdXBCeSB9IGZyb20gJy4uLy4uL2pzdXRpbHMvZ3JvdXBCeS5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5cbi8qKlxuICogVW5pcXVlIGFyZ3VtZW50IGRlZmluaXRpb24gbmFtZXNcbiAqXG4gKiBBIEdyYXBoUUwgT2JqZWN0IG9yIEludGVyZmFjZSB0eXBlIGlzIG9ubHkgdmFsaWQgaWYgYWxsIGl0cyBmaWVsZHMgaGF2ZSB1bmlxdWVseSBuYW1lZCBhcmd1bWVudHMuXG4gKiBBIEdyYXBoUUwgRGlyZWN0aXZlIGlzIG9ubHkgdmFsaWQgaWYgYWxsIGl0cyBhcmd1bWVudHMgYXJlIHVuaXF1ZWx5IG5hbWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVW5pcXVlQXJndW1lbnREZWZpbml0aW9uTmFtZXNSdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBEaXJlY3RpdmVEZWZpbml0aW9uKGRpcmVjdGl2ZU5vZGUpIHtcbiAgICAgIHZhciBfZGlyZWN0aXZlTm9kZSRhcmd1bWU7XG5cbiAgICAgIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG5cbiAgICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgICBjb25zdCBhcmd1bWVudE5vZGVzID1cbiAgICAgICAgKF9kaXJlY3RpdmVOb2RlJGFyZ3VtZSA9IGRpcmVjdGl2ZU5vZGUuYXJndW1lbnRzKSAhPT0gbnVsbCAmJlxuICAgICAgICBfZGlyZWN0aXZlTm9kZSRhcmd1bWUgIT09IHZvaWQgMFxuICAgICAgICAgID8gX2RpcmVjdGl2ZU5vZGUkYXJndW1lXG4gICAgICAgICAgOiBbXTtcbiAgICAgIHJldHVybiBjaGVja0FyZ1VuaXF1ZW5lc3MoYEAke2RpcmVjdGl2ZU5vZGUubmFtZS52YWx1ZX1gLCBhcmd1bWVudE5vZGVzKTtcbiAgICB9LFxuXG4gICAgSW50ZXJmYWNlVHlwZURlZmluaXRpb246IGNoZWNrQXJnVW5pcXVlbmVzc1BlckZpZWxkLFxuICAgIEludGVyZmFjZVR5cGVFeHRlbnNpb246IGNoZWNrQXJnVW5pcXVlbmVzc1BlckZpZWxkLFxuICAgIE9iamVjdFR5cGVEZWZpbml0aW9uOiBjaGVja0FyZ1VuaXF1ZW5lc3NQZXJGaWVsZCxcbiAgICBPYmplY3RUeXBlRXh0ZW5zaW9uOiBjaGVja0FyZ1VuaXF1ZW5lc3NQZXJGaWVsZCxcbiAgfTtcblxuICBmdW5jdGlvbiBjaGVja0FyZ1VuaXF1ZW5lc3NQZXJGaWVsZCh0eXBlTm9kZSkge1xuICAgIHZhciBfdHlwZU5vZGUkZmllbGRzO1xuXG4gICAgY29uc3QgdHlwZU5hbWUgPSB0eXBlTm9kZS5uYW1lLnZhbHVlOyAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuXG4gICAgLyogYzggaWdub3JlIG5leHQgKi9cblxuICAgIGNvbnN0IGZpZWxkTm9kZXMgPVxuICAgICAgKF90eXBlTm9kZSRmaWVsZHMgPSB0eXBlTm9kZS5maWVsZHMpICE9PSBudWxsICYmXG4gICAgICBfdHlwZU5vZGUkZmllbGRzICE9PSB2b2lkIDBcbiAgICAgICAgPyBfdHlwZU5vZGUkZmllbGRzXG4gICAgICAgIDogW107XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkRGVmIG9mIGZpZWxkTm9kZXMpIHtcbiAgICAgIHZhciBfZmllbGREZWYkYXJndW1lbnRzO1xuXG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWVsZERlZi5uYW1lLnZhbHVlOyAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuXG4gICAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuXG4gICAgICBjb25zdCBhcmd1bWVudE5vZGVzID1cbiAgICAgICAgKF9maWVsZERlZiRhcmd1bWVudHMgPSBmaWVsZERlZi5hcmd1bWVudHMpICE9PSBudWxsICYmXG4gICAgICAgIF9maWVsZERlZiRhcmd1bWVudHMgIT09IHZvaWQgMFxuICAgICAgICAgID8gX2ZpZWxkRGVmJGFyZ3VtZW50c1xuICAgICAgICAgIDogW107XG4gICAgICBjaGVja0FyZ1VuaXF1ZW5lc3MoYCR7dHlwZU5hbWV9LiR7ZmllbGROYW1lfWAsIGFyZ3VtZW50Tm9kZXMpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNoZWNrQXJnVW5pcXVlbmVzcyhwYXJlbnROYW1lLCBhcmd1bWVudE5vZGVzKSB7XG4gICAgY29uc3Qgc2VlbkFyZ3MgPSBncm91cEJ5KGFyZ3VtZW50Tm9kZXMsIChhcmcpID0+IGFyZy5uYW1lLnZhbHVlKTtcblxuICAgIGZvciAoY29uc3QgW2FyZ05hbWUsIGFyZ05vZGVzXSBvZiBzZWVuQXJncykge1xuICAgICAgaWYgKGFyZ05vZGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYEFyZ3VtZW50IFwiJHtwYXJlbnROYW1lfSgke2FyZ05hbWV9OilcIiBjYW4gb25seSBiZSBkZWZpbmVkIG9uY2UuYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbm9kZXM6IGFyZ05vZGVzLm1hcCgobm9kZSkgPT4gbm9kZS5uYW1lKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs\n");
|
1429 |
|
1430 | }),
|
1431 |
|
1432 | "../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs":
|
1433 |
|
1434 |
|
1435 |
|
1436 |
|
1437 | (function(module, __webpack_exports__, __webpack_require__) {
|
1438 |
|
1439 | "use strict";
|
1440 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueArgumentNamesRule\", function() { return UniqueArgumentNamesRule; });\n/* harmony import */ var _jsutils_groupBy_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/groupBy.mjs */ \"../../../node_modules/graphql/jsutils/groupBy.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n\n/**\n * Unique argument names\n *\n * A GraphQL field or directive is only valid if all supplied arguments are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n */\nfunction UniqueArgumentNamesRule(context) {\n return {\n Field: checkArgUniqueness,\n Directive: checkArgUniqueness,\n };\n\n function checkArgUniqueness(parentNode) {\n var _parentNode$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argumentNodes =\n (_parentNode$arguments = parentNode.arguments) !== null &&\n _parentNode$arguments !== void 0\n ? _parentNode$arguments\n : [];\n const seenArgs = Object(_jsutils_groupBy_mjs__WEBPACK_IMPORTED_MODULE_0__[\"groupBy\"])(argumentNodes, (arg) => arg.name.value);\n\n for (const [argName, argNodes] of seenArgs) {\n if (argNodes.length > 1) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `There can be only one argument named \"${argName}\".`,\n {\n nodes: argNodes.map((node) => node.name),\n },\n ),\n );\n }\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVBcmd1bWVudE5hbWVzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZUFyZ3VtZW50TmFtZXNSdWxlLm1qcz9jZDg5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdyb3VwQnkgfSBmcm9tICcuLi8uLi9qc3V0aWxzL2dyb3VwQnkubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuXG4vKipcbiAqIFVuaXF1ZSBhcmd1bWVudCBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBmaWVsZCBvciBkaXJlY3RpdmUgaXMgb25seSB2YWxpZCBpZiBhbGwgc3VwcGxpZWQgYXJndW1lbnRzIGFyZVxuICogdW5pcXVlbHkgbmFtZWQuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLUFyZ3VtZW50LU5hbWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbmlxdWVBcmd1bWVudE5hbWVzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgRmllbGQ6IGNoZWNrQXJnVW5pcXVlbmVzcyxcbiAgICBEaXJlY3RpdmU6IGNoZWNrQXJnVW5pcXVlbmVzcyxcbiAgfTtcblxuICBmdW5jdGlvbiBjaGVja0FyZ1VuaXF1ZW5lc3MocGFyZW50Tm9kZSkge1xuICAgIHZhciBfcGFyZW50Tm9kZSRhcmd1bWVudHM7XG5cbiAgICAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuXG4gICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICBjb25zdCBhcmd1bWVudE5vZGVzID1cbiAgICAgIChfcGFyZW50Tm9kZSRhcmd1bWVudHMgPSBwYXJlbnROb2RlLmFyZ3VtZW50cykgIT09IG51bGwgJiZcbiAgICAgIF9wYXJlbnROb2RlJGFyZ3VtZW50cyAhPT0gdm9pZCAwXG4gICAgICAgID8gX3BhcmVudE5vZGUkYXJndW1lbnRzXG4gICAgICAgIDogW107XG4gICAgY29uc3Qgc2VlbkFyZ3MgPSBncm91cEJ5KGFyZ3VtZW50Tm9kZXMsIChhcmcpID0+IGFyZy5uYW1lLnZhbHVlKTtcblxuICAgIGZvciAoY29uc3QgW2FyZ05hbWUsIGFyZ05vZGVzXSBvZiBzZWVuQXJncykge1xuICAgICAgaWYgKGFyZ05vZGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBhcmd1bWVudCBuYW1lZCBcIiR7YXJnTmFtZX1cIi5gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBub2RlczogYXJnTm9kZXMubWFwKChub2RlKSA9PiBub2RlLm5hbWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs\n");
|
1441 |
|
1442 | }),
|
1443 |
|
1444 | "../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs":
|
1445 |
|
1446 |
|
1447 |
|
1448 |
|
1449 | (function(module, __webpack_exports__, __webpack_require__) {
|
1450 |
|
1451 | "use strict";
|
1452 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueDirectiveNamesRule\", function() { return UniqueDirectiveNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique directive names\n *\n * A GraphQL document is only valid if all defined directives have unique names.\n */\nfunction UniqueDirectiveNamesRule(context) {\n const knownDirectiveNames = Object.create(null);\n const schema = context.getSchema();\n return {\n DirectiveDefinition(node) {\n const directiveName = node.name.value;\n\n if (\n schema !== null &&\n schema !== void 0 &&\n schema.getDirective(directiveName)\n ) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `Directive \"@${directiveName}\" already exists in the schema. It cannot be redefined.`,\n {\n nodes: node.name,\n },\n ),\n );\n return;\n }\n\n if (knownDirectiveNames[directiveName]) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `There can be only one directive named \"@${directiveName}\".`,\n {\n nodes: [knownDirectiveNames[directiveName], node.name],\n },\n ),\n );\n } else {\n knownDirectiveNames[directiveName] = node.name;\n }\n\n return false;\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUubWpzPzQzMGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5cbi8qKlxuICogVW5pcXVlIGRpcmVjdGl2ZSBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBkZWZpbmVkIGRpcmVjdGl2ZXMgaGF2ZSB1bmlxdWUgbmFtZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUoY29udGV4dCkge1xuICBjb25zdCBrbm93bkRpcmVjdGl2ZU5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgY29uc3Qgc2NoZW1hID0gY29udGV4dC5nZXRTY2hlbWEoKTtcbiAgcmV0dXJuIHtcbiAgICBEaXJlY3RpdmVEZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIGNvbnN0IGRpcmVjdGl2ZU5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG5cbiAgICAgIGlmIChcbiAgICAgICAgc2NoZW1hICE9PSBudWxsICYmXG4gICAgICAgIHNjaGVtYSAhPT0gdm9pZCAwICYmXG4gICAgICAgIHNjaGVtYS5nZXREaXJlY3RpdmUoZGlyZWN0aXZlTmFtZSlcbiAgICAgICkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgRGlyZWN0aXZlIFwiQCR7ZGlyZWN0aXZlTmFtZX1cIiBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgc2NoZW1hLiBJdCBjYW5ub3QgYmUgcmVkZWZpbmVkLmAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5vZGVzOiBub2RlLm5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGtub3duRGlyZWN0aXZlTmFtZXNbZGlyZWN0aXZlTmFtZV0pIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBkaXJlY3RpdmUgbmFtZWQgXCJAJHtkaXJlY3RpdmVOYW1lfVwiLmAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5vZGVzOiBba25vd25EaXJlY3RpdmVOYW1lc1tkaXJlY3RpdmVOYW1lXSwgbm9kZS5uYW1lXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGtub3duRGlyZWN0aXZlTmFtZXNbZGlyZWN0aXZlTmFtZV0gPSBub2RlLm5hbWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs\n");
|
1453 |
|
1454 | }),
|
1455 |
|
1456 | "../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs":
|
1457 |
|
1458 |
|
1459 |
|
1460 |
|
1461 | (function(module, __webpack_exports__, __webpack_require__) {
|
1462 |
|
1463 | "use strict";
|
1464 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueDirectivesPerLocationRule\", function() { return UniqueDirectivesPerLocationRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../language/predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n\n\n\n\n\n/**\n * Unique directive names per location\n *\n * A GraphQL document is only valid if all non-repeatable directives at\n * a given location are uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location\n */\nfunction UniqueDirectivesPerLocationRule(context) {\n const uniqueDirectiveMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : _type_directives_mjs__WEBPACK_IMPORTED_MODULE_3__[\"specifiedDirectives\"];\n\n for (const directive of definedDirectives) {\n uniqueDirectiveMap[directive.name] = !directive.isRepeatable;\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].DIRECTIVE_DEFINITION) {\n uniqueDirectiveMap[def.name.value] = !def.repeatable;\n }\n }\n\n const schemaDirectives = Object.create(null);\n const typeDirectivesMap = Object.create(null);\n return {\n // Many different AST nodes may contain directives. Rather than listing\n // them all, just listen for entering any node, and check to see if it\n // defines any directives.\n enter(node) {\n if (!('directives' in node) || !node.directives) {\n return;\n }\n\n let seenDirectives;\n\n if (\n node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SCHEMA_DEFINITION ||\n node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SCHEMA_EXTENSION\n ) {\n seenDirectives = schemaDirectives;\n } else if (Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isTypeDefinitionNode\"])(node) || Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isTypeExtensionNode\"])(node)) {\n const typeName = node.name.value;\n seenDirectives = typeDirectivesMap[typeName];\n\n if (seenDirectives === undefined) {\n typeDirectivesMap[typeName] = seenDirectives = Object.create(null);\n }\n } else {\n seenDirectives = Object.create(null);\n }\n\n for (const directive of node.directives) {\n const directiveName = directive.name.value;\n\n if (uniqueDirectiveMap[directiveName]) {\n if (seenDirectives[directiveName]) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `The directive \"@${directiveName}\" can only be used once at this location.`,\n {\n nodes: [seenDirectives[directiveName], directive],\n },\n ),\n );\n } else {\n seenDirectives[directiveName] = directive;\n }\n }\n }\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVEaXJlY3RpdmVzUGVyTG9jYXRpb25SdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvVW5pcXVlRGlyZWN0aXZlc1BlckxvY2F0aW9uUnVsZS5tanM/ZjE1YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuaW1wb3J0IHtcbiAgaXNUeXBlRGVmaW5pdGlvbk5vZGUsXG4gIGlzVHlwZUV4dGVuc2lvbk5vZGUsXG59IGZyb20gJy4uLy4uL2xhbmd1YWdlL3ByZWRpY2F0ZXMubWpzJztcbmltcG9ydCB7IHNwZWNpZmllZERpcmVjdGl2ZXMgfSBmcm9tICcuLi8uLi90eXBlL2RpcmVjdGl2ZXMubWpzJztcblxuLyoqXG4gKiBVbmlxdWUgZGlyZWN0aXZlIG5hbWVzIHBlciBsb2NhdGlvblxuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBub24tcmVwZWF0YWJsZSBkaXJlY3RpdmVzIGF0XG4gKiBhIGdpdmVuIGxvY2F0aW9uIGFyZSB1bmlxdWVseSBuYW1lZC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtRGlyZWN0aXZlcy1BcmUtVW5pcXVlLVBlci1Mb2NhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gVW5pcXVlRGlyZWN0aXZlc1BlckxvY2F0aW9uUnVsZShjb250ZXh0KSB7XG4gIGNvbnN0IHVuaXF1ZURpcmVjdGl2ZU1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGNvbnN0IHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIGNvbnN0IGRlZmluZWREaXJlY3RpdmVzID0gc2NoZW1hXG4gICAgPyBzY2hlbWEuZ2V0RGlyZWN0aXZlcygpXG4gICAgOiBzcGVjaWZpZWREaXJlY3RpdmVzO1xuXG4gIGZvciAoY29uc3QgZGlyZWN0aXZlIG9mIGRlZmluZWREaXJlY3RpdmVzKSB7XG4gICAgdW5pcXVlRGlyZWN0aXZlTWFwW2RpcmVjdGl2ZS5uYW1lXSA9ICFkaXJlY3RpdmUuaXNSZXBlYXRhYmxlO1xuICB9XG5cbiAgY29uc3QgYXN0RGVmaW5pdGlvbnMgPSBjb250ZXh0LmdldERvY3VtZW50KCkuZGVmaW5pdGlvbnM7XG5cbiAgZm9yIChjb25zdCBkZWYgb2YgYXN0RGVmaW5pdGlvbnMpIHtcbiAgICBpZiAoZGVmLmtpbmQgPT09IEtpbmQuRElSRUNUSVZFX0RFRklOSVRJT04pIHtcbiAgICAgIHVuaXF1ZURpcmVjdGl2ZU1hcFtkZWYubmFtZS52YWx1ZV0gPSAhZGVmLnJlcGVhdGFibGU7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NoZW1hRGlyZWN0aXZlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGNvbnN0IHR5cGVEaXJlY3RpdmVzTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIHtcbiAgICAvLyBNYW55IGRpZmZlcmVudCBBU1Qgbm9kZXMgbWF5IGNvbnRhaW4gZGlyZWN0aXZlcy4gUmF0aGVyIHRoYW4gbGlzdGluZ1xuICAgIC8vIHRoZW0gYWxsLCBqdXN0IGxpc3RlbiBmb3IgZW50ZXJpbmcgYW55IG5vZGUsIGFuZCBjaGVjayB0byBzZWUgaWYgaXRcbiAgICAvLyBkZWZpbmVzIGFueSBkaXJlY3RpdmVzLlxuICAgIGVudGVyKG5vZGUpIHtcbiAgICAgIGlmICghKCdkaXJlY3RpdmVzJyBpbiBub2RlKSB8fCAhbm9kZS5kaXJlY3RpdmVzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHNlZW5EaXJlY3RpdmVzO1xuXG4gICAgICBpZiAoXG4gICAgICAgIG5vZGUua2luZCA9PT0gS2luZC5TQ0hFTUFfREVGSU5JVElPTiB8fFxuICAgICAgICBub2RlLmtpbmQgPT09IEtpbmQuU0NIRU1BX0VYVEVOU0lPTlxuICAgICAgKSB7XG4gICAgICAgIHNlZW5EaXJlY3RpdmVzID0gc2NoZW1hRGlyZWN0aXZlcztcbiAgICAgIH0gZWxzZSBpZiAoaXNUeXBlRGVmaW5pdGlvbk5vZGUobm9kZSkgfHwgaXNUeXBlRXh0ZW5zaW9uTm9kZShub2RlKSkge1xuICAgICAgICBjb25zdCB0eXBlTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgICAgc2VlbkRpcmVjdGl2ZXMgPSB0eXBlRGlyZWN0aXZlc01hcFt0eXBlTmFtZV07XG5cbiAgICAgICAgaWYgKHNlZW5EaXJlY3RpdmVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0eXBlRGlyZWN0aXZlc01hcFt0eXBlTmFtZV0gPSBzZWVuRGlyZWN0aXZlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlZW5EaXJlY3RpdmVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkaXJlY3RpdmUgb2Ygbm9kZS5kaXJlY3RpdmVzKSB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGl2ZU5hbWUgPSBkaXJlY3RpdmUubmFtZS52YWx1ZTtcblxuICAgICAgICBpZiAodW5pcXVlRGlyZWN0aXZlTWFwW2RpcmVjdGl2ZU5hbWVdKSB7XG4gICAgICAgICAgaWYgKHNlZW5EaXJlY3RpdmVzW2RpcmVjdGl2ZU5hbWVdKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgICAgIGBUaGUgZGlyZWN0aXZlIFwiQCR7ZGlyZWN0aXZlTmFtZX1cIiBjYW4gb25seSBiZSB1c2VkIG9uY2UgYXQgdGhpcyBsb2NhdGlvbi5gLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5vZGVzOiBbc2VlbkRpcmVjdGl2ZXNbZGlyZWN0aXZlTmFtZV0sIGRpcmVjdGl2ZV0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlZW5EaXJlY3RpdmVzW2RpcmVjdGl2ZU5hbWVdID0gZGlyZWN0aXZlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs\n");
|
1465 |
|
1466 | }),
|
1467 |
|
1468 | "../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs":
|
1469 |
|
1470 |
|
1471 |
|
1472 |
|
1473 | (function(module, __webpack_exports__, __webpack_require__) {
|
1474 |
|
1475 | "use strict";
|
1476 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueEnumValueNamesRule\", function() { return UniqueEnumValueNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n/**\n * Unique enum value names\n *\n * A GraphQL enum type is only valid if all its values are uniquely named.\n */\nfunction UniqueEnumValueNamesRule(context) {\n const schema = context.getSchema();\n const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n const knownValueNames = Object.create(null);\n return {\n EnumTypeDefinition: checkValueUniqueness,\n EnumTypeExtension: checkValueUniqueness,\n };\n\n function checkValueUniqueness(node) {\n var _node$values;\n\n const typeName = node.name.value;\n\n if (!knownValueNames[typeName]) {\n knownValueNames[typeName] = Object.create(null);\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const valueNodes =\n (_node$values = node.values) !== null && _node$values !== void 0\n ? _node$values\n : [];\n const valueNames = knownValueNames[typeName];\n\n for (const valueDef of valueNodes) {\n const valueName = valueDef.name.value;\n const existingType = existingTypeMap[typeName];\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isEnumType\"])(existingType) && existingType.getValue(valueName)) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `Enum value \"${typeName}.${valueName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n {\n nodes: valueDef.name,\n },\n ),\n );\n } else if (valueNames[valueName]) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `Enum value \"${typeName}.${valueName}\" can only be defined once.`,\n {\n nodes: [valueNames[valueName], valueDef.name],\n },\n ),\n );\n } else {\n valueNames[valueName] = valueDef.name;\n }\n }\n\n return false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVFbnVtVmFsdWVOYW1lc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVFbnVtVmFsdWVOYW1lc1J1bGUubWpzP2IzYTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBpc0VudW1UeXBlIH0gZnJvbSAnLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5cbi8qKlxuICogVW5pcXVlIGVudW0gdmFsdWUgbmFtZXNcbiAqXG4gKiBBIEdyYXBoUUwgZW51bSB0eXBlIGlzIG9ubHkgdmFsaWQgaWYgYWxsIGl0cyB2YWx1ZXMgYXJlIHVuaXF1ZWx5IG5hbWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVW5pcXVlRW51bVZhbHVlTmFtZXNSdWxlKGNvbnRleHQpIHtcbiAgY29uc3Qgc2NoZW1hID0gY29udGV4dC5nZXRTY2hlbWEoKTtcbiAgY29uc3QgZXhpc3RpbmdUeXBlTWFwID0gc2NoZW1hID8gc2NoZW1hLmdldFR5cGVNYXAoKSA6IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGNvbnN0IGtub3duVmFsdWVOYW1lcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiB7XG4gICAgRW51bVR5cGVEZWZpbml0aW9uOiBjaGVja1ZhbHVlVW5pcXVlbmVzcyxcbiAgICBFbnVtVHlwZUV4dGVuc2lvbjogY2hlY2tWYWx1ZVVuaXF1ZW5lc3MsXG4gIH07XG5cbiAgZnVuY3Rpb24gY2hlY2tWYWx1ZVVuaXF1ZW5lc3Mobm9kZSkge1xuICAgIHZhciBfbm9kZSR2YWx1ZXM7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcblxuICAgIGlmICgha25vd25WYWx1ZU5hbWVzW3R5cGVOYW1lXSkge1xuICAgICAga25vd25WYWx1ZU5hbWVzW3R5cGVOYW1lXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfSAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuXG4gICAgLyogYzggaWdub3JlIG5leHQgKi9cblxuICAgIGNvbnN0IHZhbHVlTm9kZXMgPVxuICAgICAgKF9ub2RlJHZhbHVlcyA9IG5vZGUudmFsdWVzKSAhPT0gbnVsbCAmJiBfbm9kZSR2YWx1ZXMgIT09IHZvaWQgMFxuICAgICAgICA/IF9ub2RlJHZhbHVlc1xuICAgICAgICA6IFtdO1xuICAgIGNvbnN0IHZhbHVlTmFtZXMgPSBrbm93blZhbHVlTmFtZXNbdHlwZU5hbWVdO1xuXG4gICAgZm9yIChjb25zdCB2YWx1ZURlZiBvZiB2YWx1ZU5vZGVzKSB7XG4gICAgICBjb25zdCB2YWx1ZU5hbWUgPSB2YWx1ZURlZi5uYW1lLnZhbHVlO1xuICAgICAgY29uc3QgZXhpc3RpbmdUeXBlID0gZXhpc3RpbmdUeXBlTWFwW3R5cGVOYW1lXTtcblxuICAgICAgaWYgKGlzRW51bVR5cGUoZXhpc3RpbmdUeXBlKSAmJiBleGlzdGluZ1R5cGUuZ2V0VmFsdWUodmFsdWVOYW1lKSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgRW51bSB2YWx1ZSBcIiR7dHlwZU5hbWV9LiR7dmFsdWVOYW1lfVwiIGFscmVhZHkgZXhpc3RzIGluIHRoZSBzY2hlbWEuIEl0IGNhbm5vdCBhbHNvIGJlIGRlZmluZWQgaW4gdGhpcyB0eXBlIGV4dGVuc2lvbi5gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBub2RlczogdmFsdWVEZWYubmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWVOYW1lc1t2YWx1ZU5hbWVdKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBFbnVtIHZhbHVlIFwiJHt0eXBlTmFtZX0uJHt2YWx1ZU5hbWV9XCIgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbmNlLmAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5vZGVzOiBbdmFsdWVOYW1lc1t2YWx1ZU5hbWVdLCB2YWx1ZURlZi5uYW1lXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlTmFtZXNbdmFsdWVOYW1lXSA9IHZhbHVlRGVmLm5hbWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs\n");
|
1477 |
|
1478 | }),
|
1479 |
|
1480 | "../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs":
|
1481 |
|
1482 |
|
1483 |
|
1484 |
|
1485 | (function(module, __webpack_exports__, __webpack_require__) {
|
1486 |
|
1487 | "use strict";
|
1488 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueFieldDefinitionNamesRule\", function() { return UniqueFieldDefinitionNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n/**\n * Unique field definition names\n *\n * A GraphQL complex type is only valid if all its fields are uniquely named.\n */\nfunction UniqueFieldDefinitionNamesRule(context) {\n const schema = context.getSchema();\n const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n const knownFieldNames = Object.create(null);\n return {\n InputObjectTypeDefinition: checkFieldUniqueness,\n InputObjectTypeExtension: checkFieldUniqueness,\n InterfaceTypeDefinition: checkFieldUniqueness,\n InterfaceTypeExtension: checkFieldUniqueness,\n ObjectTypeDefinition: checkFieldUniqueness,\n ObjectTypeExtension: checkFieldUniqueness,\n };\n\n function checkFieldUniqueness(node) {\n var _node$fields;\n\n const typeName = node.name.value;\n\n if (!knownFieldNames[typeName]) {\n knownFieldNames[typeName] = Object.create(null);\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const fieldNodes =\n (_node$fields = node.fields) !== null && _node$fields !== void 0\n ? _node$fields\n : [];\n const fieldNames = knownFieldNames[typeName];\n\n for (const fieldDef of fieldNodes) {\n const fieldName = fieldDef.name.value;\n\n if (hasField(existingTypeMap[typeName], fieldName)) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `Field \"${typeName}.${fieldName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n {\n nodes: fieldDef.name,\n },\n ),\n );\n } else if (fieldNames[fieldName]) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `Field \"${typeName}.${fieldName}\" can only be defined once.`,\n {\n nodes: [fieldNames[fieldName], fieldDef.name],\n },\n ),\n );\n } else {\n fieldNames[fieldName] = fieldDef.name;\n }\n }\n\n return false;\n }\n}\n\nfunction hasField(type, fieldName) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isObjectType\"])(type) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isInterfaceType\"])(type) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isInputObjectType\"])(type)) {\n return type.getFields()[fieldName] != null;\n }\n\n return false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUubWpzPzZiMGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQge1xuICBpc0lucHV0T2JqZWN0VHlwZSxcbiAgaXNJbnRlcmZhY2VUeXBlLFxuICBpc09iamVjdFR5cGUsXG59IGZyb20gJy4uLy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuXG4vKipcbiAqIFVuaXF1ZSBmaWVsZCBkZWZpbml0aW9uIG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGNvbXBsZXggdHlwZSBpcyBvbmx5IHZhbGlkIGlmIGFsbCBpdHMgZmllbGRzIGFyZSB1bmlxdWVseSBuYW1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZUZpZWxkRGVmaW5pdGlvbk5hbWVzUnVsZShjb250ZXh0KSB7XG4gIGNvbnN0IHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIGNvbnN0IGV4aXN0aW5nVHlwZU1hcCA9IHNjaGVtYSA/IHNjaGVtYS5nZXRUeXBlTWFwKCkgOiBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCBrbm93bkZpZWxkTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIElucHV0T2JqZWN0VHlwZURlZmluaXRpb246IGNoZWNrRmllbGRVbmlxdWVuZXNzLFxuICAgIElucHV0T2JqZWN0VHlwZUV4dGVuc2lvbjogY2hlY2tGaWVsZFVuaXF1ZW5lc3MsXG4gICAgSW50ZXJmYWNlVHlwZURlZmluaXRpb246IGNoZWNrRmllbGRVbmlxdWVuZXNzLFxuICAgIEludGVyZmFjZVR5cGVFeHRlbnNpb246IGNoZWNrRmllbGRVbmlxdWVuZXNzLFxuICAgIE9iamVjdFR5cGVEZWZpbml0aW9uOiBjaGVja0ZpZWxkVW5pcXVlbmVzcyxcbiAgICBPYmplY3RUeXBlRXh0ZW5zaW9uOiBjaGVja0ZpZWxkVW5pcXVlbmVzcyxcbiAgfTtcblxuICBmdW5jdGlvbiBjaGVja0ZpZWxkVW5pcXVlbmVzcyhub2RlKSB7XG4gICAgdmFyIF9ub2RlJGZpZWxkcztcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gbm9kZS5uYW1lLnZhbHVlO1xuXG4gICAgaWYgKCFrbm93bkZpZWxkTmFtZXNbdHlwZU5hbWVdKSB7XG4gICAgICBrbm93bkZpZWxkTmFtZXNbdHlwZU5hbWVdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9IC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG5cbiAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuXG4gICAgY29uc3QgZmllbGROb2RlcyA9XG4gICAgICAoX25vZGUkZmllbGRzID0gbm9kZS5maWVsZHMpICE9PSBudWxsICYmIF9ub2RlJGZpZWxkcyAhPT0gdm9pZCAwXG4gICAgICAgID8gX25vZGUkZmllbGRzXG4gICAgICAgIDogW107XG4gICAgY29uc3QgZmllbGROYW1lcyA9IGtub3duRmllbGROYW1lc1t0eXBlTmFtZV07XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkRGVmIG9mIGZpZWxkTm9kZXMpIHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZpZWxkRGVmLm5hbWUudmFsdWU7XG5cbiAgICAgIGlmIChoYXNGaWVsZChleGlzdGluZ1R5cGVNYXBbdHlwZU5hbWVdLCBmaWVsZE5hbWUpKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBGaWVsZCBcIiR7dHlwZU5hbWV9LiR7ZmllbGROYW1lfVwiIGFscmVhZHkgZXhpc3RzIGluIHRoZSBzY2hlbWEuIEl0IGNhbm5vdCBhbHNvIGJlIGRlZmluZWQgaW4gdGhpcyB0eXBlIGV4dGVuc2lvbi5gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBub2RlczogZmllbGREZWYubmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmllbGROYW1lc1tmaWVsZE5hbWVdKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBGaWVsZCBcIiR7dHlwZU5hbWV9LiR7ZmllbGROYW1lfVwiIGNhbiBvbmx5IGJlIGRlZmluZWQgb25jZS5gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBub2RlczogW2ZpZWxkTmFtZXNbZmllbGROYW1lXSwgZmllbGREZWYubmFtZV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWVsZE5hbWVzW2ZpZWxkTmFtZV0gPSBmaWVsZERlZi5uYW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNGaWVsZCh0eXBlLCBmaWVsZE5hbWUpIHtcbiAgaWYgKGlzT2JqZWN0VHlwZSh0eXBlKSB8fCBpc0ludGVyZmFjZVR5cGUodHlwZSkgfHwgaXNJbnB1dE9iamVjdFR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gdHlwZS5nZXRGaWVsZHMoKVtmaWVsZE5hbWVdICE9IG51bGw7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs\n");
|
1489 |
|
1490 | }),
|
1491 |
|
1492 | "../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs":
|
1493 |
|
1494 |
|
1495 |
|
1496 |
|
1497 | (function(module, __webpack_exports__, __webpack_require__) {
|
1498 |
|
1499 | "use strict";
|
1500 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueFragmentNamesRule\", function() { return UniqueFragmentNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique fragment names\n *\n * A GraphQL document is only valid if all defined fragments have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness\n */\nfunction UniqueFragmentNamesRule(context) {\n const knownFragmentNames = Object.create(null);\n return {\n OperationDefinition: () => false,\n\n FragmentDefinition(node) {\n const fragmentName = node.name.value;\n\n if (knownFragmentNames[fragmentName]) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `There can be only one fragment named \"${fragmentName}\".`,\n {\n nodes: [knownFragmentNames[fragmentName], node.name],\n },\n ),\n );\n } else {\n knownFragmentNames[fragmentName] = node.name;\n }\n\n return false;\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVGcmFnbWVudE5hbWVzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZUZyYWdtZW50TmFtZXNSdWxlLm1qcz83MjRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuXG4vKipcbiAqIFVuaXF1ZSBmcmFnbWVudCBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBkZWZpbmVkIGZyYWdtZW50cyBoYXZlIHVuaXF1ZSBuYW1lcy5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtRnJhZ21lbnQtTmFtZS1VbmlxdWVuZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbmlxdWVGcmFnbWVudE5hbWVzUnVsZShjb250ZXh0KSB7XG4gIGNvbnN0IGtub3duRnJhZ21lbnROYW1lcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiB7XG4gICAgT3BlcmF0aW9uRGVmaW5pdGlvbjogKCkgPT4gZmFsc2UsXG5cbiAgICBGcmFnbWVudERlZmluaXRpb24obm9kZSkge1xuICAgICAgY29uc3QgZnJhZ21lbnROYW1lID0gbm9kZS5uYW1lLnZhbHVlO1xuXG4gICAgICBpZiAoa25vd25GcmFnbWVudE5hbWVzW2ZyYWdtZW50TmFtZV0pIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBmcmFnbWVudCBuYW1lZCBcIiR7ZnJhZ21lbnROYW1lfVwiLmAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5vZGVzOiBba25vd25GcmFnbWVudE5hbWVzW2ZyYWdtZW50TmFtZV0sIG5vZGUubmFtZV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrbm93bkZyYWdtZW50TmFtZXNbZnJhZ21lbnROYW1lXSA9IG5vZGUubmFtZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs\n");
|
1501 |
|
1502 | }),
|
1503 |
|
1504 | "../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs":
|
1505 |
|
1506 |
|
1507 |
|
1508 |
|
1509 | (function(module, __webpack_exports__, __webpack_require__) {
|
1510 |
|
1511 | "use strict";
|
1512 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueInputFieldNamesRule\", function() { return UniqueInputFieldNamesRule; });\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n\n/**\n * Unique input field names\n *\n * A GraphQL input object value is only valid if all supplied fields are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness\n */\nfunction UniqueInputFieldNamesRule(context) {\n const knownNameStack = [];\n let knownNames = Object.create(null);\n return {\n ObjectValue: {\n enter() {\n knownNameStack.push(knownNames);\n knownNames = Object.create(null);\n },\n\n leave() {\n const prevKnownNames = knownNameStack.pop();\n prevKnownNames || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__[\"invariant\"])(false);\n knownNames = prevKnownNames;\n },\n },\n\n ObjectField(node) {\n const fieldName = node.name.value;\n\n if (knownNames[fieldName]) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `There can be only one input field named \"${fieldName}\".`,\n {\n nodes: [knownNames[fieldName], node.name],\n },\n ),\n );\n } else {\n knownNames[fieldName] = node.name;\n }\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvVW5pcXVlSW5wdXRGaWVsZE5hbWVzUnVsZS5tanM/Yjc1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICcuLi8uLi9qc3V0aWxzL2ludmFyaWFudC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5cbi8qKlxuICogVW5pcXVlIGlucHV0IGZpZWxkIG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGlucHV0IG9iamVjdCB2YWx1ZSBpcyBvbmx5IHZhbGlkIGlmIGFsbCBzdXBwbGllZCBmaWVsZHMgYXJlXG4gKiB1bmlxdWVseSBuYW1lZC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtSW5wdXQtT2JqZWN0LUZpZWxkLVVuaXF1ZW5lc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZUlucHV0RmllbGROYW1lc1J1bGUoY29udGV4dCkge1xuICBjb25zdCBrbm93bk5hbWVTdGFjayA9IFtdO1xuICBsZXQga25vd25OYW1lcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiB7XG4gICAgT2JqZWN0VmFsdWU6IHtcbiAgICAgIGVudGVyKCkge1xuICAgICAgICBrbm93bk5hbWVTdGFjay5wdXNoKGtub3duTmFtZXMpO1xuICAgICAgICBrbm93bk5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH0sXG5cbiAgICAgIGxlYXZlKCkge1xuICAgICAgICBjb25zdCBwcmV2S25vd25OYW1lcyA9IGtub3duTmFtZVN0YWNrLnBvcCgpO1xuICAgICAgICBwcmV2S25vd25OYW1lcyB8fCBpbnZhcmlhbnQoZmFsc2UpO1xuICAgICAgICBrbm93bk5hbWVzID0gcHJldktub3duTmFtZXM7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBPYmplY3RGaWVsZChub2RlKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG5cbiAgICAgIGlmIChrbm93bk5hbWVzW2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBpbnB1dCBmaWVsZCBuYW1lZCBcIiR7ZmllbGROYW1lfVwiLmAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5vZGVzOiBba25vd25OYW1lc1tmaWVsZE5hbWVdLCBub2RlLm5hbWVdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga25vd25OYW1lc1tmaWVsZE5hbWVdID0gbm9kZS5uYW1lO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs\n");
|
1513 |
|
1514 | }),
|
1515 |
|
1516 | "../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs":
|
1517 |
|
1518 |
|
1519 |
|
1520 |
|
1521 | (function(module, __webpack_exports__, __webpack_require__) {
|
1522 |
|
1523 | "use strict";
|
1524 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueOperationNamesRule\", function() { return UniqueOperationNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique operation names\n *\n * A GraphQL document is only valid if all defined operations have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness\n */\nfunction UniqueOperationNamesRule(context) {\n const knownOperationNames = Object.create(null);\n return {\n OperationDefinition(node) {\n const operationName = node.name;\n\n if (operationName) {\n if (knownOperationNames[operationName.value]) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `There can be only one operation named \"${operationName.value}\".`,\n {\n nodes: [\n knownOperationNames[operationName.value],\n operationName,\n ],\n },\n ),\n );\n } else {\n knownOperationNames[operationName.value] = operationName;\n }\n }\n\n return false;\n },\n\n FragmentDefinition: () => false,\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVPcGVyYXRpb25OYW1lc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVPcGVyYXRpb25OYW1lc1J1bGUubWpzPzY5ZmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5cbi8qKlxuICogVW5pcXVlIG9wZXJhdGlvbiBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBkZWZpbmVkIG9wZXJhdGlvbnMgaGF2ZSB1bmlxdWUgbmFtZXMuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLU9wZXJhdGlvbi1OYW1lLVVuaXF1ZW5lc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZShjb250ZXh0KSB7XG4gIGNvbnN0IGtub3duT3BlcmF0aW9uTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb24obm9kZSkge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uTmFtZSA9IG5vZGUubmFtZTtcblxuICAgICAgaWYgKG9wZXJhdGlvbk5hbWUpIHtcbiAgICAgICAgaWYgKGtub3duT3BlcmF0aW9uTmFtZXNbb3BlcmF0aW9uTmFtZS52YWx1ZV0pIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgYFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBvcGVyYXRpb24gbmFtZWQgXCIke29wZXJhdGlvbk5hbWUudmFsdWV9XCIuYCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5vZGVzOiBbXG4gICAgICAgICAgICAgICAgICBrbm93bk9wZXJhdGlvbk5hbWVzW29wZXJhdGlvbk5hbWUudmFsdWVdLFxuICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmFtZSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGtub3duT3BlcmF0aW9uTmFtZXNbb3BlcmF0aW9uTmFtZS52YWx1ZV0gPSBvcGVyYXRpb25OYW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuXG4gICAgRnJhZ21lbnREZWZpbml0aW9uOiAoKSA9PiBmYWxzZSxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs\n");
|
1525 |
|
1526 | }),
|
1527 |
|
1528 | "../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs":
|
1529 |
|
1530 |
|
1531 |
|
1532 |
|
1533 | (function(module, __webpack_exports__, __webpack_require__) {
|
1534 |
|
1535 | "use strict";
|
1536 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueOperationTypesRule\", function() { return UniqueOperationTypesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique operation types\n *\n * A GraphQL document is only valid if it has only one type per operation.\n */\nfunction UniqueOperationTypesRule(context) {\n const schema = context.getSchema();\n const definedOperationTypes = Object.create(null);\n const existingOperationTypes = schema\n ? {\n query: schema.getQueryType(),\n mutation: schema.getMutationType(),\n subscription: schema.getSubscriptionType(),\n }\n : {};\n return {\n SchemaDefinition: checkOperationTypes,\n SchemaExtension: checkOperationTypes,\n };\n\n function checkOperationTypes(node) {\n var _node$operationTypes;\n\n // See: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const operationTypesNodes =\n (_node$operationTypes = node.operationTypes) !== null &&\n _node$operationTypes !== void 0\n ? _node$operationTypes\n : [];\n\n for (const operationType of operationTypesNodes) {\n const operation = operationType.operation;\n const alreadyDefinedOperationType = definedOperationTypes[operation];\n\n if (existingOperationTypes[operation]) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `Type for ${operation} already defined in the schema. It cannot be redefined.`,\n {\n nodes: operationType,\n },\n ),\n );\n } else if (alreadyDefinedOperationType) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `There can be only one ${operation} type in schema.`,\n {\n nodes: [alreadyDefinedOperationType, operationType],\n },\n ),\n );\n } else {\n definedOperationTypes[operation] = operationType;\n }\n }\n\n return false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVPcGVyYXRpb25UeXBlc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVPcGVyYXRpb25UeXBlc1J1bGUubWpzPzcyOTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5cbi8qKlxuICogVW5pcXVlIG9wZXJhdGlvbiB0eXBlc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGl0IGhhcyBvbmx5IG9uZSB0eXBlIHBlciBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbmlxdWVPcGVyYXRpb25UeXBlc1J1bGUoY29udGV4dCkge1xuICBjb25zdCBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICBjb25zdCBkZWZpbmVkT3BlcmF0aW9uVHlwZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCBleGlzdGluZ09wZXJhdGlvblR5cGVzID0gc2NoZW1hXG4gICAgPyB7XG4gICAgICAgIHF1ZXJ5OiBzY2hlbWEuZ2V0UXVlcnlUeXBlKCksXG4gICAgICAgIG11dGF0aW9uOiBzY2hlbWEuZ2V0TXV0YXRpb25UeXBlKCksXG4gICAgICAgIHN1YnNjcmlwdGlvbjogc2NoZW1hLmdldFN1YnNjcmlwdGlvblR5cGUoKSxcbiAgICAgIH1cbiAgICA6IHt9O1xuICByZXR1cm4ge1xuICAgIFNjaGVtYURlZmluaXRpb246IGNoZWNrT3BlcmF0aW9uVHlwZXMsXG4gICAgU2NoZW1hRXh0ZW5zaW9uOiBjaGVja09wZXJhdGlvblR5cGVzLFxuICB9O1xuXG4gIGZ1bmN0aW9uIGNoZWNrT3BlcmF0aW9uVHlwZXMobm9kZSkge1xuICAgIHZhciBfbm9kZSRvcGVyYXRpb25UeXBlcztcblxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuXG4gICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICBjb25zdCBvcGVyYXRpb25UeXBlc05vZGVzID1cbiAgICAgIChfbm9kZSRvcGVyYXRpb25UeXBlcyA9IG5vZGUub3BlcmF0aW9uVHlwZXMpICE9PSBudWxsICYmXG4gICAgICBfbm9kZSRvcGVyYXRpb25UeXBlcyAhPT0gdm9pZCAwXG4gICAgICAgID8gX25vZGUkb3BlcmF0aW9uVHlwZXNcbiAgICAgICAgOiBbXTtcblxuICAgIGZvciAoY29uc3Qgb3BlcmF0aW9uVHlwZSBvZiBvcGVyYXRpb25UeXBlc05vZGVzKSB7XG4gICAgICBjb25zdCBvcGVyYXRpb24gPSBvcGVyYXRpb25UeXBlLm9wZXJhdGlvbjtcbiAgICAgIGNvbnN0IGFscmVhZHlEZWZpbmVkT3BlcmF0aW9uVHlwZSA9IGRlZmluZWRPcGVyYXRpb25UeXBlc1tvcGVyYXRpb25dO1xuXG4gICAgICBpZiAoZXhpc3RpbmdPcGVyYXRpb25UeXBlc1tvcGVyYXRpb25dKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBUeXBlIGZvciAke29wZXJhdGlvbn0gYWxyZWFkeSBkZWZpbmVkIGluIHRoZSBzY2hlbWEuIEl0IGNhbm5vdCBiZSByZWRlZmluZWQuYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbm9kZXM6IG9wZXJhdGlvblR5cGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGFscmVhZHlEZWZpbmVkT3BlcmF0aW9uVHlwZSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgVGhlcmUgY2FuIGJlIG9ubHkgb25lICR7b3BlcmF0aW9ufSB0eXBlIGluIHNjaGVtYS5gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBub2RlczogW2FscmVhZHlEZWZpbmVkT3BlcmF0aW9uVHlwZSwgb3BlcmF0aW9uVHlwZV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZpbmVkT3BlcmF0aW9uVHlwZXNbb3BlcmF0aW9uXSA9IG9wZXJhdGlvblR5cGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs\n");
|
1537 |
|
1538 | }),
|
1539 |
|
1540 | "../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs":
|
1541 |
|
1542 |
|
1543 |
|
1544 |
|
1545 | (function(module, __webpack_exports__, __webpack_require__) {
|
1546 |
|
1547 | "use strict";
|
1548 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueTypeNamesRule\", function() { return UniqueTypeNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique type names\n *\n * A GraphQL document is only valid if all defined types have unique names.\n */\nfunction UniqueTypeNamesRule(context) {\n const knownTypeNames = Object.create(null);\n const schema = context.getSchema();\n return {\n ScalarTypeDefinition: checkTypeName,\n ObjectTypeDefinition: checkTypeName,\n InterfaceTypeDefinition: checkTypeName,\n UnionTypeDefinition: checkTypeName,\n EnumTypeDefinition: checkTypeName,\n InputObjectTypeDefinition: checkTypeName,\n };\n\n function checkTypeName(node) {\n const typeName = node.name.value;\n\n if (schema !== null && schema !== void 0 && schema.getType(typeName)) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `Type \"${typeName}\" already exists in the schema. It cannot also be defined in this type definition.`,\n {\n nodes: node.name,\n },\n ),\n );\n return;\n }\n\n if (knownTypeNames[typeName]) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](`There can be only one type named \"${typeName}\".`, {\n nodes: [knownTypeNames[typeName], node.name],\n }),\n );\n } else {\n knownTypeNames[typeName] = node.name;\n }\n\n return false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVUeXBlTmFtZXNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvVW5pcXVlVHlwZU5hbWVzUnVsZS5tanM/ZDBmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcblxuLyoqXG4gKiBVbmlxdWUgdHlwZSBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBkZWZpbmVkIHR5cGVzIGhhdmUgdW5pcXVlIG5hbWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVW5pcXVlVHlwZU5hbWVzUnVsZShjb250ZXh0KSB7XG4gIGNvbnN0IGtub3duVHlwZU5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgY29uc3Qgc2NoZW1hID0gY29udGV4dC5nZXRTY2hlbWEoKTtcbiAgcmV0dXJuIHtcbiAgICBTY2FsYXJUeXBlRGVmaW5pdGlvbjogY2hlY2tUeXBlTmFtZSxcbiAgICBPYmplY3RUeXBlRGVmaW5pdGlvbjogY2hlY2tUeXBlTmFtZSxcbiAgICBJbnRlcmZhY2VUeXBlRGVmaW5pdGlvbjogY2hlY2tUeXBlTmFtZSxcbiAgICBVbmlvblR5cGVEZWZpbml0aW9uOiBjaGVja1R5cGVOYW1lLFxuICAgIEVudW1UeXBlRGVmaW5pdGlvbjogY2hlY2tUeXBlTmFtZSxcbiAgICBJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uOiBjaGVja1R5cGVOYW1lLFxuICB9O1xuXG4gIGZ1bmN0aW9uIGNoZWNrVHlwZU5hbWUobm9kZSkge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gbm9kZS5uYW1lLnZhbHVlO1xuXG4gICAgaWYgKHNjaGVtYSAhPT0gbnVsbCAmJiBzY2hlbWEgIT09IHZvaWQgMCAmJiBzY2hlbWEuZ2V0VHlwZSh0eXBlTmFtZSkpIHtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgYFR5cGUgXCIke3R5cGVOYW1lfVwiIGFscmVhZHkgZXhpc3RzIGluIHRoZSBzY2hlbWEuIEl0IGNhbm5vdCBhbHNvIGJlIGRlZmluZWQgaW4gdGhpcyB0eXBlIGRlZmluaXRpb24uYCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBub2Rlczogbm9kZS5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChrbm93blR5cGVOYW1lc1t0eXBlTmFtZV0pIHtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoYFRoZXJlIGNhbiBiZSBvbmx5IG9uZSB0eXBlIG5hbWVkIFwiJHt0eXBlTmFtZX1cIi5gLCB7XG4gICAgICAgICAgbm9kZXM6IFtrbm93blR5cGVOYW1lc1t0eXBlTmFtZV0sIG5vZGUubmFtZV0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAga25vd25UeXBlTmFtZXNbdHlwZU5hbWVdID0gbm9kZS5uYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs\n");
|
1549 |
|
1550 | }),
|
1551 |
|
1552 | "../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs":
|
1553 |
|
1554 |
|
1555 |
|
1556 |
|
1557 | (function(module, __webpack_exports__, __webpack_require__) {
|
1558 |
|
1559 | "use strict";
|
1560 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueVariableNamesRule\", function() { return UniqueVariableNamesRule; });\n/* harmony import */ var _jsutils_groupBy_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/groupBy.mjs */ \"../../../node_modules/graphql/jsutils/groupBy.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n\n/**\n * Unique variable names\n *\n * A GraphQL operation is only valid if all its variables are uniquely named.\n */\nfunction UniqueVariableNamesRule(context) {\n return {\n OperationDefinition(operationNode) {\n var _operationNode$variab;\n\n // See: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const variableDefinitions =\n (_operationNode$variab = operationNode.variableDefinitions) !== null &&\n _operationNode$variab !== void 0\n ? _operationNode$variab\n : [];\n const seenVariableDefinitions = Object(_jsutils_groupBy_mjs__WEBPACK_IMPORTED_MODULE_0__[\"groupBy\"])(\n variableDefinitions,\n (node) => node.variable.name.value,\n );\n\n for (const [variableName, variableNodes] of seenVariableDefinitions) {\n if (variableNodes.length > 1) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `There can be only one variable named \"$${variableName}\".`,\n {\n nodes: variableNodes.map((node) => node.variable.name),\n },\n ),\n );\n }\n }\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVWYXJpYWJsZU5hbWVzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZVZhcmlhYmxlTmFtZXNSdWxlLm1qcz9lN2RlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdyb3VwQnkgfSBmcm9tICcuLi8uLi9qc3V0aWxzL2dyb3VwQnkubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuXG4vKipcbiAqIFVuaXF1ZSB2YXJpYWJsZSBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBvcGVyYXRpb24gaXMgb25seSB2YWxpZCBpZiBhbGwgaXRzIHZhcmlhYmxlcyBhcmUgdW5pcXVlbHkgbmFtZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbmlxdWVWYXJpYWJsZU5hbWVzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgT3BlcmF0aW9uRGVmaW5pdGlvbihvcGVyYXRpb25Ob2RlKSB7XG4gICAgICB2YXIgX29wZXJhdGlvbk5vZGUkdmFyaWFiO1xuXG4gICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcblxuICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgIGNvbnN0IHZhcmlhYmxlRGVmaW5pdGlvbnMgPVxuICAgICAgICAoX29wZXJhdGlvbk5vZGUkdmFyaWFiID0gb3BlcmF0aW9uTm9kZS52YXJpYWJsZURlZmluaXRpb25zKSAhPT0gbnVsbCAmJlxuICAgICAgICBfb3BlcmF0aW9uTm9kZSR2YXJpYWIgIT09IHZvaWQgMFxuICAgICAgICAgID8gX29wZXJhdGlvbk5vZGUkdmFyaWFiXG4gICAgICAgICAgOiBbXTtcbiAgICAgIGNvbnN0IHNlZW5WYXJpYWJsZURlZmluaXRpb25zID0gZ3JvdXBCeShcbiAgICAgICAgdmFyaWFibGVEZWZpbml0aW9ucyxcbiAgICAgICAgKG5vZGUpID0+IG5vZGUudmFyaWFibGUubmFtZS52YWx1ZSxcbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgW3ZhcmlhYmxlTmFtZSwgdmFyaWFibGVOb2Rlc10gb2Ygc2VlblZhcmlhYmxlRGVmaW5pdGlvbnMpIHtcbiAgICAgICAgaWYgKHZhcmlhYmxlTm9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgICBgVGhlcmUgY2FuIGJlIG9ubHkgb25lIHZhcmlhYmxlIG5hbWVkIFwiJCR7dmFyaWFibGVOYW1lfVwiLmAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBub2RlczogdmFyaWFibGVOb2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUudmFyaWFibGUubmFtZSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs\n");
|
1561 |
|
1562 | }),
|
1563 |
|
1564 | "../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs":
|
1565 |
|
1566 |
|
1567 |
|
1568 |
|
1569 | (function(module, __webpack_exports__, __webpack_require__) {
|
1570 |
|
1571 | "use strict";
|
1572 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ValuesOfCorrectTypeRule\", function() { return ValuesOfCorrectTypeRule; });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n\n\n/**\n * Value literals of correct type\n *\n * A GraphQL document is only valid if all value literals are of the type\n * expected at their position.\n *\n * See https://spec.graphql.org/draft/#sec-Values-of-Correct-Type\n */\nfunction ValuesOfCorrectTypeRule(context) {\n return {\n ListValue(node) {\n // Note: TypeInfo will traverse into a list's item type, so look to the\n // parent input type to check if it is a list.\n const type = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"getNullableType\"])(context.getParentInputType());\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isListType\"])(type)) {\n isValidValueNode(context, node);\n return false; // Don't traverse further.\n }\n },\n\n ObjectValue(node) {\n const type = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"getNamedType\"])(context.getInputType());\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isInputObjectType\"])(type)) {\n isValidValueNode(context, node);\n return false; // Don't traverse further.\n } // Ensure every required field exists.\n\n const fieldNodeMap = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_2__[\"keyMap\"])(node.fields, (field) => field.name.value);\n\n for (const fieldDef of Object.values(type.getFields())) {\n const fieldNode = fieldNodeMap[fieldDef.name];\n\n if (!fieldNode && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isRequiredInputField\"])(fieldDef)) {\n const typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(fieldDef.type);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\n `Field \"${type.name}.${fieldDef.name}\" of required type \"${typeStr}\" was not provided.`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n\n ObjectField(node) {\n const parentType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"getNamedType\"])(context.getParentInputType());\n const fieldType = context.getInputType();\n\n if (!fieldType && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isInputObjectType\"])(parentType)) {\n const suggestions = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_3__[\"suggestionList\"])(\n node.name.value,\n Object.keys(parentType.getFields()),\n );\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\n `Field \"${node.name.value}\" is not defined by type \"${parentType.name}\".` +\n Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__[\"didYouMean\"])(suggestions),\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n NullValue(node) {\n const type = context.getInputType();\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isNonNullType\"])(type)) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\n `Expected value of type \"${Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(type)}\", found ${Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n EnumValue: (node) => isValidValueNode(context, node),\n IntValue: (node) => isValidValueNode(context, node),\n FloatValue: (node) => isValidValueNode(context, node),\n StringValue: (node) => isValidValueNode(context, node),\n BooleanValue: (node) => isValidValueNode(context, node),\n };\n}\n/**\n * Any value literal may be a valid representation of a Scalar, depending on\n * that scalar type.\n */\n\nfunction isValidValueNode(context, node) {\n // Report any error at the full type expected by the location.\n const locationType = context.getInputType();\n\n if (!locationType) {\n return;\n }\n\n const type = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"getNamedType\"])(locationType);\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isLeafType\"])(type)) {\n const typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(locationType);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\n `Expected value of type \"${typeStr}\", found ${Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n return;\n } // Scalars and Enums determine if a literal value is valid via parseLiteral(),\n // which may throw or return an invalid value to indicate failure.\n\n try {\n const parseResult = type.parseLiteral(\n node,\n undefined,\n /* variables */\n );\n\n if (parseResult === undefined) {\n const typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(locationType);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\n `Expected value of type \"${typeStr}\", found ${Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n } catch (error) {\n const typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"inspect\"])(locationType);\n\n if (error instanceof _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"]) {\n context.reportError(error);\n } else {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\n `Expected value of type \"${typeStr}\", found ${Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(node)}; ` +\n error.message,\n {\n nodes: node,\n originalError: error,\n },\n ),\n );\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9WYWx1ZXNPZkNvcnJlY3RUeXBlUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1ZhbHVlc09mQ29ycmVjdFR5cGVSdWxlLm1qcz9lOGYxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpZFlvdU1lYW4gfSBmcm9tICcuLi8uLi9qc3V0aWxzL2RpZFlvdU1lYW4ubWpzJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi8uLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGtleU1hcCB9IGZyb20gJy4uLy4uL2pzdXRpbHMva2V5TWFwLm1qcyc7XG5pbXBvcnQgeyBzdWdnZXN0aW9uTGlzdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvc3VnZ2VzdGlvbkxpc3QubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9wcmludGVyLm1qcyc7XG5pbXBvcnQge1xuICBnZXROYW1lZFR5cGUsXG4gIGdldE51bGxhYmxlVHlwZSxcbiAgaXNJbnB1dE9iamVjdFR5cGUsXG4gIGlzTGVhZlR5cGUsXG4gIGlzTGlzdFR5cGUsXG4gIGlzTm9uTnVsbFR5cGUsXG4gIGlzUmVxdWlyZWRJbnB1dEZpZWxkLFxufSBmcm9tICcuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzJztcblxuLyoqXG4gKiBWYWx1ZSBsaXRlcmFscyBvZiBjb3JyZWN0IHR5cGVcbiAqXG4gKiBBIEdyYXBoUUwgZG9jdW1lbnQgaXMgb25seSB2YWxpZCBpZiBhbGwgdmFsdWUgbGl0ZXJhbHMgYXJlIG9mIHRoZSB0eXBlXG4gKiBleHBlY3RlZCBhdCB0aGVpciBwb3NpdGlvbi5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtVmFsdWVzLW9mLUNvcnJlY3QtVHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gVmFsdWVzT2ZDb3JyZWN0VHlwZVJ1bGUoY29udGV4dCkge1xuICByZXR1cm4ge1xuICAgIExpc3RWYWx1ZShub2RlKSB7XG4gICAgICAvLyBOb3RlOiBUeXBlSW5mbyB3aWxsIHRyYXZlcnNlIGludG8gYSBsaXN0J3MgaXRlbSB0eXBlLCBzbyBsb29rIHRvIHRoZVxuICAgICAgLy8gcGFyZW50IGlucHV0IHR5cGUgdG8gY2hlY2sgaWYgaXQgaXMgYSBsaXN0LlxuICAgICAgY29uc3QgdHlwZSA9IGdldE51bGxhYmxlVHlwZShjb250ZXh0LmdldFBhcmVudElucHV0VHlwZSgpKTtcblxuICAgICAgaWYgKCFpc0xpc3RUeXBlKHR5cGUpKSB7XG4gICAgICAgIGlzVmFsaWRWYWx1ZU5vZGUoY29udGV4dCwgbm9kZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gRG9uJ3QgdHJhdmVyc2UgZnVydGhlci5cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgT2JqZWN0VmFsdWUobm9kZSkge1xuICAgICAgY29uc3QgdHlwZSA9IGdldE5hbWVkVHlwZShjb250ZXh0LmdldElucHV0VHlwZSgpKTtcblxuICAgICAgaWYgKCFpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgICAgICBpc1ZhbGlkVmFsdWVOb2RlKGNvbnRleHQsIG5vZGUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7IC8vIERvbid0IHRyYXZlcnNlIGZ1cnRoZXIuXG4gICAgICB9IC8vIEVuc3VyZSBldmVyeSByZXF1aXJlZCBmaWVsZCBleGlzdHMuXG5cbiAgICAgIGNvbnN0IGZpZWxkTm9kZU1hcCA9IGtleU1hcChub2RlLmZpZWxkcywgKGZpZWxkKSA9PiBmaWVsZC5uYW1lLnZhbHVlKTtcblxuICAgICAgZm9yIChjb25zdCBmaWVsZERlZiBvZiBPYmplY3QudmFsdWVzKHR5cGUuZ2V0RmllbGRzKCkpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkTm9kZSA9IGZpZWxkTm9kZU1hcFtmaWVsZERlZi5uYW1lXTtcblxuICAgICAgICBpZiAoIWZpZWxkTm9kZSAmJiBpc1JlcXVpcmVkSW5wdXRGaWVsZChmaWVsZERlZikpIHtcbiAgICAgICAgICBjb25zdCB0eXBlU3RyID0gaW5zcGVjdChmaWVsZERlZi50eXBlKTtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgYEZpZWxkIFwiJHt0eXBlLm5hbWV9LiR7ZmllbGREZWYubmFtZX1cIiBvZiByZXF1aXJlZCB0eXBlIFwiJHt0eXBlU3RyfVwiIHdhcyBub3QgcHJvdmlkZWQuYCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5vZGVzOiBub2RlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIE9iamVjdEZpZWxkKG5vZGUpIHtcbiAgICAgIGNvbnN0IHBhcmVudFR5cGUgPSBnZXROYW1lZFR5cGUoY29udGV4dC5nZXRQYXJlbnRJbnB1dFR5cGUoKSk7XG4gICAgICBjb25zdCBmaWVsZFR5cGUgPSBjb250ZXh0LmdldElucHV0VHlwZSgpO1xuXG4gICAgICBpZiAoIWZpZWxkVHlwZSAmJiBpc0lucHV0T2JqZWN0VHlwZShwYXJlbnRUeXBlKSkge1xuICAgICAgICBjb25zdCBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25MaXN0KFxuICAgICAgICAgIG5vZGUubmFtZS52YWx1ZSxcbiAgICAgICAgICBPYmplY3Qua2V5cyhwYXJlbnRUeXBlLmdldEZpZWxkcygpKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYEZpZWxkIFwiJHtub2RlLm5hbWUudmFsdWV9XCIgaXMgbm90IGRlZmluZWQgYnkgdHlwZSBcIiR7cGFyZW50VHlwZS5uYW1lfVwiLmAgK1xuICAgICAgICAgICAgICBkaWRZb3VNZWFuKHN1Z2dlc3Rpb25zKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbm9kZXM6IG5vZGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIE51bGxWYWx1ZShub2RlKSB7XG4gICAgICBjb25zdCB0eXBlID0gY29udGV4dC5nZXRJbnB1dFR5cGUoKTtcblxuICAgICAgaWYgKGlzTm9uTnVsbFR5cGUodHlwZSkpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYEV4cGVjdGVkIHZhbHVlIG9mIHR5cGUgXCIke2luc3BlY3QodHlwZSl9XCIsIGZvdW5kICR7cHJpbnQobm9kZSl9LmAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5vZGVzOiBub2RlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBFbnVtVmFsdWU6IChub2RlKSA9PiBpc1ZhbGlkVmFsdWVOb2RlKGNvbnRleHQsIG5vZGUpLFxuICAgIEludFZhbHVlOiAobm9kZSkgPT4gaXNWYWxpZFZhbHVlTm9kZShjb250ZXh0LCBub2RlKSxcbiAgICBGbG9hdFZhbHVlOiAobm9kZSkgPT4gaXNWYWxpZFZhbHVlTm9kZShjb250ZXh0LCBub2RlKSxcbiAgICBTdHJpbmdWYWx1ZTogKG5vZGUpID0+IGlzVmFsaWRWYWx1ZU5vZGUoY29udGV4dCwgbm9kZSksXG4gICAgQm9vbGVhblZhbHVlOiAobm9kZSkgPT4gaXNWYWxpZFZhbHVlTm9kZShjb250ZXh0LCBub2RlKSxcbiAgfTtcbn1cbi8qKlxuICogQW55IHZhbHVlIGxpdGVyYWwgbWF5IGJlIGEgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgYSBTY2FsYXIsIGRlcGVuZGluZyBvblxuICogdGhhdCBzY2FsYXIgdHlwZS5cbiAqL1xuXG5mdW5jdGlvbiBpc1ZhbGlkVmFsdWVOb2RlKGNvbnRleHQsIG5vZGUpIHtcbiAgLy8gUmVwb3J0IGFueSBlcnJvciBhdCB0aGUgZnVsbCB0eXBlIGV4cGVjdGVkIGJ5IHRoZSBsb2NhdGlvbi5cbiAgY29uc3QgbG9jYXRpb25UeXBlID0gY29udGV4dC5nZXRJbnB1dFR5cGUoKTtcblxuICBpZiAoIWxvY2F0aW9uVHlwZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHR5cGUgPSBnZXROYW1lZFR5cGUobG9jYXRpb25UeXBlKTtcblxuICBpZiAoIWlzTGVhZlR5cGUodHlwZSkpIHtcbiAgICBjb25zdCB0eXBlU3RyID0gaW5zcGVjdChsb2NhdGlvblR5cGUpO1xuICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgRXhwZWN0ZWQgdmFsdWUgb2YgdHlwZSBcIiR7dHlwZVN0cn1cIiwgZm91bmQgJHtwcmludChub2RlKX0uYCxcbiAgICAgICAge1xuICAgICAgICAgIG5vZGVzOiBub2RlLFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICApO1xuICAgIHJldHVybjtcbiAgfSAvLyBTY2FsYXJzIGFuZCBFbnVtcyBkZXRlcm1pbmUgaWYgYSBsaXRlcmFsIHZhbHVlIGlzIHZhbGlkIHZpYSBwYXJzZUxpdGVyYWwoKSxcbiAgLy8gd2hpY2ggbWF5IHRocm93IG9yIHJldHVybiBhbiBpbnZhbGlkIHZhbHVlIHRvIGluZGljYXRlIGZhaWx1cmUuXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZVJlc3VsdCA9IHR5cGUucGFyc2VMaXRlcmFsKFxuICAgICAgbm9kZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIC8qIHZhcmlhYmxlcyAqL1xuICAgICk7XG5cbiAgICBpZiAocGFyc2VSZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdHlwZVN0ciA9IGluc3BlY3QobG9jYXRpb25UeXBlKTtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgYEV4cGVjdGVkIHZhbHVlIG9mIHR5cGUgXCIke3R5cGVTdHJ9XCIsIGZvdW5kICR7cHJpbnQobm9kZSl9LmAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbm9kZXM6IG5vZGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IHR5cGVTdHIgPSBpbnNwZWN0KGxvY2F0aW9uVHlwZSk7XG5cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBHcmFwaFFMRXJyb3IpIHtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoZXJyb3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgIGBFeHBlY3RlZCB2YWx1ZSBvZiB0eXBlIFwiJHt0eXBlU3RyfVwiLCBmb3VuZCAke3ByaW50KG5vZGUpfTsgYCArXG4gICAgICAgICAgICBlcnJvci5tZXNzYWdlLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5vZGVzOiBub2RlLFxuICAgICAgICAgICAgb3JpZ2luYWxFcnJvcjogZXJyb3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs\n");
|
1573 |
|
1574 | }),
|
1575 |
|
1576 | "../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs":
|
1577 |
|
1578 |
|
1579 |
|
1580 |
|
1581 | (function(module, __webpack_exports__, __webpack_require__) {
|
1582 |
|
1583 | "use strict";
|
1584 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VariablesAreInputTypesRule\", function() { return VariablesAreInputTypesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n/**\n * Variables are input types\n *\n * A GraphQL operation is only valid if all the variables it defines are of\n * input types (scalar, enum, or input object).\n *\n * See https://spec.graphql.org/draft/#sec-Variables-Are-Input-Types\n */\nfunction VariablesAreInputTypesRule(context) {\n return {\n VariableDefinition(node) {\n const type = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__[\"typeFromAST\"])(context.getSchema(), node.type);\n\n if (type !== undefined && !Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isInputType\"])(type)) {\n const variableName = node.variable.name.value;\n const typeName = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_1__[\"print\"])(node.type);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `Variable \"$${variableName}\" cannot be non-input type \"${typeName}\".`,\n {\n nodes: node.type,\n },\n ),\n );\n }\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9WYXJpYWJsZXNBcmVJbnB1dFR5cGVzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1ZhcmlhYmxlc0FyZUlucHV0VHlwZXNSdWxlLm1qcz9iOGNmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9wcmludGVyLm1qcyc7XG5pbXBvcnQgeyBpc0lucHV0VHlwZSB9IGZyb20gJy4uLy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHsgdHlwZUZyb21BU1QgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvdHlwZUZyb21BU1QubWpzJztcblxuLyoqXG4gKiBWYXJpYWJsZXMgYXJlIGlucHV0IHR5cGVzXG4gKlxuICogQSBHcmFwaFFMIG9wZXJhdGlvbiBpcyBvbmx5IHZhbGlkIGlmIGFsbCB0aGUgdmFyaWFibGVzIGl0IGRlZmluZXMgYXJlIG9mXG4gKiBpbnB1dCB0eXBlcyAoc2NhbGFyLCBlbnVtLCBvciBpbnB1dCBvYmplY3QpLlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1WYXJpYWJsZXMtQXJlLUlucHV0LVR5cGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBWYXJpYWJsZXNBcmVJbnB1dFR5cGVzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgVmFyaWFibGVEZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlRnJvbUFTVChjb250ZXh0LmdldFNjaGVtYSgpLCBub2RlLnR5cGUpO1xuXG4gICAgICBpZiAodHlwZSAhPT0gdW5kZWZpbmVkICYmICFpc0lucHV0VHlwZSh0eXBlKSkge1xuICAgICAgICBjb25zdCB2YXJpYWJsZU5hbWUgPSBub2RlLnZhcmlhYmxlLm5hbWUudmFsdWU7XG4gICAgICAgIGNvbnN0IHR5cGVOYW1lID0gcHJpbnQobm9kZS50eXBlKTtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYFZhcmlhYmxlIFwiJCR7dmFyaWFibGVOYW1lfVwiIGNhbm5vdCBiZSBub24taW5wdXQgdHlwZSBcIiR7dHlwZU5hbWV9XCIuYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbm9kZXM6IG5vZGUudHlwZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs\n");
|
1585 |
|
1586 | }),
|
1587 |
|
1588 | "../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs":
|
1589 |
|
1590 |
|
1591 |
|
1592 |
|
1593 | (function(module, __webpack_exports__, __webpack_require__) {
|
1594 |
|
1595 | "use strict";
|
1596 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VariablesInAllowedPositionRule\", function() { return VariablesInAllowedPositionRule; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utilities/typeComparators.mjs */ \"../../../node_modules/graphql/utilities/typeComparators.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n\n\n/**\n * Variables in allowed position\n *\n * Variable usages must be compatible with the arguments they are passed to.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed\n */\nfunction VariablesInAllowedPositionRule(context) {\n let varDefMap = Object.create(null);\n return {\n OperationDefinition: {\n enter() {\n varDefMap = Object.create(null);\n },\n\n leave(operation) {\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node, type, defaultValue } of usages) {\n const varName = node.name.value;\n const varDef = varDefMap[varName];\n\n if (varDef && type) {\n // A var type is allowed if it is the same or more strict (e.g. is\n // a subtype of) than the expected type. It can be more strict if\n // the variable type is non-null when the expected type is nullable.\n // If both are list types, the variable item type can be more strict\n // than the expected item type (contravariant).\n const schema = context.getSchema();\n const varType = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_5__[\"typeFromAST\"])(schema, varDef.type);\n\n if (\n varType &&\n !allowedVariableUsage(\n schema,\n varType,\n varDef.defaultValue,\n type,\n defaultValue,\n )\n ) {\n const varTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(varType);\n const typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"inspect\"])(type);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `Variable \"$${varName}\" of type \"${varTypeStr}\" used in position expecting type \"${typeStr}\".`,\n {\n nodes: [varDef, node],\n },\n ),\n );\n }\n }\n }\n },\n },\n\n VariableDefinition(node) {\n varDefMap[node.variable.name.value] = node;\n },\n };\n}\n/**\n * Returns true if the variable is allowed in the location it was found,\n * which includes considering if default values exist for either the variable\n * or the location at which it is located.\n */\n\nfunction allowedVariableUsage(\n schema,\n varType,\n varDefaultValue,\n locationType,\n locationDefaultValue,\n) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isNonNullType\"])(locationType) && !Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isNonNullType\"])(varType)) {\n const hasNonNullVariableDefaultValue =\n varDefaultValue != null && varDefaultValue.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Kind\"].NULL;\n const hasLocationDefaultValue = locationDefaultValue !== undefined;\n\n if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {\n return false;\n }\n\n const nullableLocationType = locationType.ofType;\n return Object(_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isTypeSubTypeOf\"])(schema, varType, nullableLocationType);\n }\n\n return Object(_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isTypeSubTypeOf\"])(schema, varType, locationType);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9WYXJpYWJsZXNJbkFsbG93ZWRQb3NpdGlvblJ1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9WYXJpYWJsZXNJbkFsbG93ZWRQb3NpdGlvblJ1bGUubWpzP2I0YmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IGlzTm9uTnVsbFR5cGUgfSBmcm9tICcuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7IGlzVHlwZVN1YlR5cGVPZiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy90eXBlQ29tcGFyYXRvcnMubWpzJztcbmltcG9ydCB7IHR5cGVGcm9tQVNUIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3R5cGVGcm9tQVNULm1qcyc7XG5cbi8qKlxuICogVmFyaWFibGVzIGluIGFsbG93ZWQgcG9zaXRpb25cbiAqXG4gKiBWYXJpYWJsZSB1c2FnZXMgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGFyZ3VtZW50cyB0aGV5IGFyZSBwYXNzZWQgdG8uXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLUFsbC1WYXJpYWJsZS1Vc2FnZXMtYXJlLUFsbG93ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFZhcmlhYmxlc0luQWxsb3dlZFBvc2l0aW9uUnVsZShjb250ZXh0KSB7XG4gIGxldCB2YXJEZWZNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb246IHtcbiAgICAgIGVudGVyKCkge1xuICAgICAgICB2YXJEZWZNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgfSxcblxuICAgICAgbGVhdmUob3BlcmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHVzYWdlcyA9IGNvbnRleHQuZ2V0UmVjdXJzaXZlVmFyaWFibGVVc2FnZXMob3BlcmF0aW9uKTtcblxuICAgICAgICBmb3IgKGNvbnN0IHsgbm9kZSwgdHlwZSwgZGVmYXVsdFZhbHVlIH0gb2YgdXNhZ2VzKSB7XG4gICAgICAgICAgY29uc3QgdmFyTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgICAgICBjb25zdCB2YXJEZWYgPSB2YXJEZWZNYXBbdmFyTmFtZV07XG5cbiAgICAgICAgICBpZiAodmFyRGVmICYmIHR5cGUpIHtcbiAgICAgICAgICAgIC8vIEEgdmFyIHR5cGUgaXMgYWxsb3dlZCBpZiBpdCBpcyB0aGUgc2FtZSBvciBtb3JlIHN0cmljdCAoZS5nLiBpc1xuICAgICAgICAgICAgLy8gYSBzdWJ0eXBlIG9mKSB0aGFuIHRoZSBleHBlY3RlZCB0eXBlLiBJdCBjYW4gYmUgbW9yZSBzdHJpY3QgaWZcbiAgICAgICAgICAgIC8vIHRoZSB2YXJpYWJsZSB0eXBlIGlzIG5vbi1udWxsIHdoZW4gdGhlIGV4cGVjdGVkIHR5cGUgaXMgbnVsbGFibGUuXG4gICAgICAgICAgICAvLyBJZiBib3RoIGFyZSBsaXN0IHR5cGVzLCB0aGUgdmFyaWFibGUgaXRlbSB0eXBlIGNhbiBiZSBtb3JlIHN0cmljdFxuICAgICAgICAgICAgLy8gdGhhbiB0aGUgZXhwZWN0ZWQgaXRlbSB0eXBlIChjb250cmF2YXJpYW50KS5cbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gICAgICAgICAgICBjb25zdCB2YXJUeXBlID0gdHlwZUZyb21BU1Qoc2NoZW1hLCB2YXJEZWYudHlwZSk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdmFyVHlwZSAmJlxuICAgICAgICAgICAgICAhYWxsb3dlZFZhcmlhYmxlVXNhZ2UoXG4gICAgICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgICAgIHZhclR5cGUsXG4gICAgICAgICAgICAgICAgdmFyRGVmLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhclR5cGVTdHIgPSBpbnNwZWN0KHZhclR5cGUpO1xuICAgICAgICAgICAgICBjb25zdCB0eXBlU3RyID0gaW5zcGVjdCh0eXBlKTtcbiAgICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgICAgICAgYFZhcmlhYmxlIFwiJCR7dmFyTmFtZX1cIiBvZiB0eXBlIFwiJHt2YXJUeXBlU3RyfVwiIHVzZWQgaW4gcG9zaXRpb24gZXhwZWN0aW5nIHR5cGUgXCIke3R5cGVTdHJ9XCIuYCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXM6IFt2YXJEZWYsIG5vZGVdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgVmFyaWFibGVEZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIHZhckRlZk1hcFtub2RlLnZhcmlhYmxlLm5hbWUudmFsdWVdID0gbm9kZTtcbiAgICB9LFxuICB9O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIHZhcmlhYmxlIGlzIGFsbG93ZWQgaW4gdGhlIGxvY2F0aW9uIGl0IHdhcyBmb3VuZCxcbiAqIHdoaWNoIGluY2x1ZGVzIGNvbnNpZGVyaW5nIGlmIGRlZmF1bHQgdmFsdWVzIGV4aXN0IGZvciBlaXRoZXIgdGhlIHZhcmlhYmxlXG4gKiBvciB0aGUgbG9jYXRpb24gYXQgd2hpY2ggaXQgaXMgbG9jYXRlZC5cbiAqL1xuXG5mdW5jdGlvbiBhbGxvd2VkVmFyaWFibGVVc2FnZShcbiAgc2NoZW1hLFxuICB2YXJUeXBlLFxuICB2YXJEZWZhdWx0VmFsdWUsXG4gIGxvY2F0aW9uVHlwZSxcbiAgbG9jYXRpb25EZWZhdWx0VmFsdWUsXG4pIHtcbiAgaWYgKGlzTm9uTnVsbFR5cGUobG9jYXRpb25UeXBlKSAmJiAhaXNOb25OdWxsVHlwZSh2YXJUeXBlKSkge1xuICAgIGNvbnN0IGhhc05vbk51bGxWYXJpYWJsZURlZmF1bHRWYWx1ZSA9XG4gICAgICB2YXJEZWZhdWx0VmFsdWUgIT0gbnVsbCAmJiB2YXJEZWZhdWx0VmFsdWUua2luZCAhPT0gS2luZC5OVUxMO1xuICAgIGNvbnN0IGhhc0xvY2F0aW9uRGVmYXVsdFZhbHVlID0gbG9jYXRpb25EZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZDtcblxuICAgIGlmICghaGFzTm9uTnVsbFZhcmlhYmxlRGVmYXVsdFZhbHVlICYmICFoYXNMb2NhdGlvbkRlZmF1bHRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG51bGxhYmxlTG9jYXRpb25UeXBlID0gbG9jYXRpb25UeXBlLm9mVHlwZTtcbiAgICByZXR1cm4gaXNUeXBlU3ViVHlwZU9mKHNjaGVtYSwgdmFyVHlwZSwgbnVsbGFibGVMb2NhdGlvblR5cGUpO1xuICB9XG5cbiAgcmV0dXJuIGlzVHlwZVN1YlR5cGVPZihzY2hlbWEsIHZhclR5cGUsIGxvY2F0aW9uVHlwZSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs\n");
|
1597 |
|
1598 | }),
|
1599 |
|
1600 | "../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs":
|
1601 |
|
1602 |
|
1603 |
|
1604 |
|
1605 | (function(module, __webpack_exports__, __webpack_require__) {
|
1606 |
|
1607 | "use strict";
|
1608 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoDeprecatedCustomRule\", function() { return NoDeprecatedCustomRule; });\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n/**\n * No deprecated\n *\n * A GraphQL document is only valid if all selected fields and all used enum values have not been\n * deprecated.\n *\n * Note: This rule is optional and is not part of the Validation section of the GraphQL\n * Specification. The main purpose of this rule is detection of deprecated usages and not\n * necessarily to forbid their use when querying a service.\n */\nfunction NoDeprecatedCustomRule(context) {\n return {\n Field(node) {\n const fieldDef = context.getFieldDef();\n const deprecationReason =\n fieldDef === null || fieldDef === void 0\n ? void 0\n : fieldDef.deprecationReason;\n\n if (fieldDef && deprecationReason != null) {\n const parentType = context.getParentType();\n parentType != null || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__[\"invariant\"])(false);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `The field ${parentType.name}.${fieldDef.name} is deprecated. ${deprecationReason}`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n Argument(node) {\n const argDef = context.getArgument();\n const deprecationReason =\n argDef === null || argDef === void 0\n ? void 0\n : argDef.deprecationReason;\n\n if (argDef && deprecationReason != null) {\n const directiveDef = context.getDirective();\n\n if (directiveDef != null) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `Directive \"@${directiveDef.name}\" argument \"${argDef.name}\" is deprecated. ${deprecationReason}`,\n {\n nodes: node,\n },\n ),\n );\n } else {\n const parentType = context.getParentType();\n const fieldDef = context.getFieldDef();\n (parentType != null && fieldDef != null) || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__[\"invariant\"])(false);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `Field \"${parentType.name}.${fieldDef.name}\" argument \"${argDef.name}\" is deprecated. ${deprecationReason}`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n\n ObjectField(node) {\n const inputObjectDef = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getNamedType\"])(context.getParentInputType());\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isInputObjectType\"])(inputObjectDef)) {\n const inputFieldDef = inputObjectDef.getFields()[node.name.value];\n const deprecationReason =\n inputFieldDef === null || inputFieldDef === void 0\n ? void 0\n : inputFieldDef.deprecationReason;\n\n if (deprecationReason != null) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `The input field ${inputObjectDef.name}.${inputFieldDef.name} is deprecated. ${deprecationReason}`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n\n EnumValue(node) {\n const enumValueDef = context.getEnumValue();\n const deprecationReason =\n enumValueDef === null || enumValueDef === void 0\n ? void 0\n : enumValueDef.deprecationReason;\n\n if (enumValueDef && deprecationReason != null) {\n const enumTypeDef = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getNamedType\"])(context.getInputType());\n enumTypeDef != null || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__[\"invariant\"])(false);\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n `The enum value \"${enumTypeDef.name}.${enumValueDef.name}\" is deprecated. ${deprecationReason}`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9jdXN0b20vTm9EZXByZWNhdGVkQ3VzdG9tUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL2N1c3RvbS9Ob0RlcHJlY2F0ZWRDdXN0b21SdWxlLm1qcz80YmMwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJy4uLy4uLy4uL2pzdXRpbHMvaW52YXJpYW50Lm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7IGdldE5hbWVkVHlwZSwgaXNJbnB1dE9iamVjdFR5cGUgfSBmcm9tICcuLi8uLi8uLi90eXBlL2RlZmluaXRpb24ubWpzJztcblxuLyoqXG4gKiBObyBkZXByZWNhdGVkXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIHNlbGVjdGVkIGZpZWxkcyBhbmQgYWxsIHVzZWQgZW51bSB2YWx1ZXMgaGF2ZSBub3QgYmVlblxuICogZGVwcmVjYXRlZC5cbiAqXG4gKiBOb3RlOiBUaGlzIHJ1bGUgaXMgb3B0aW9uYWwgYW5kIGlzIG5vdCBwYXJ0IG9mIHRoZSBWYWxpZGF0aW9uIHNlY3Rpb24gb2YgdGhlIEdyYXBoUUxcbiAqIFNwZWNpZmljYXRpb24uIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBydWxlIGlzIGRldGVjdGlvbiBvZiBkZXByZWNhdGVkIHVzYWdlcyBhbmQgbm90XG4gKiBuZWNlc3NhcmlseSB0byBmb3JiaWQgdGhlaXIgdXNlIHdoZW4gcXVlcnlpbmcgYSBzZXJ2aWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gTm9EZXByZWNhdGVkQ3VzdG9tUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgRmllbGQobm9kZSkge1xuICAgICAgY29uc3QgZmllbGREZWYgPSBjb250ZXh0LmdldEZpZWxkRGVmKCk7XG4gICAgICBjb25zdCBkZXByZWNhdGlvblJlYXNvbiA9XG4gICAgICAgIGZpZWxkRGVmID09PSBudWxsIHx8IGZpZWxkRGVmID09PSB2b2lkIDBcbiAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgIDogZmllbGREZWYuZGVwcmVjYXRpb25SZWFzb247XG5cbiAgICAgIGlmIChmaWVsZERlZiAmJiBkZXByZWNhdGlvblJlYXNvbiAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudFR5cGUgPSBjb250ZXh0LmdldFBhcmVudFR5cGUoKTtcbiAgICAgICAgcGFyZW50VHlwZSAhPSBudWxsIHx8IGludmFyaWFudChmYWxzZSk7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBUaGUgZmllbGQgJHtwYXJlbnRUeXBlLm5hbWV9LiR7ZmllbGREZWYubmFtZX0gaXMgZGVwcmVjYXRlZC4gJHtkZXByZWNhdGlvblJlYXNvbn1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBub2Rlczogbm9kZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgQXJndW1lbnQobm9kZSkge1xuICAgICAgY29uc3QgYXJnRGVmID0gY29udGV4dC5nZXRBcmd1bWVudCgpO1xuICAgICAgY29uc3QgZGVwcmVjYXRpb25SZWFzb24gPVxuICAgICAgICBhcmdEZWYgPT09IG51bGwgfHwgYXJnRGVmID09PSB2b2lkIDBcbiAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgIDogYXJnRGVmLmRlcHJlY2F0aW9uUmVhc29uO1xuXG4gICAgICBpZiAoYXJnRGVmICYmIGRlcHJlY2F0aW9uUmVhc29uICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgZGlyZWN0aXZlRGVmID0gY29udGV4dC5nZXREaXJlY3RpdmUoKTtcblxuICAgICAgICBpZiAoZGlyZWN0aXZlRGVmICE9IG51bGwpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgYERpcmVjdGl2ZSBcIkAke2RpcmVjdGl2ZURlZi5uYW1lfVwiIGFyZ3VtZW50IFwiJHthcmdEZWYubmFtZX1cIiBpcyBkZXByZWNhdGVkLiAke2RlcHJlY2F0aW9uUmVhc29ufWAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBub2Rlczogbm9kZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBwYXJlbnRUeXBlID0gY29udGV4dC5nZXRQYXJlbnRUeXBlKCk7XG4gICAgICAgICAgY29uc3QgZmllbGREZWYgPSBjb250ZXh0LmdldEZpZWxkRGVmKCk7XG4gICAgICAgICAgKHBhcmVudFR5cGUgIT0gbnVsbCAmJiBmaWVsZERlZiAhPSBudWxsKSB8fCBpbnZhcmlhbnQoZmFsc2UpO1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgICBgRmllbGQgXCIke3BhcmVudFR5cGUubmFtZX0uJHtmaWVsZERlZi5uYW1lfVwiIGFyZ3VtZW50IFwiJHthcmdEZWYubmFtZX1cIiBpcyBkZXByZWNhdGVkLiAke2RlcHJlY2F0aW9uUmVhc29ufWAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBub2Rlczogbm9kZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBPYmplY3RGaWVsZChub2RlKSB7XG4gICAgICBjb25zdCBpbnB1dE9iamVjdERlZiA9IGdldE5hbWVkVHlwZShjb250ZXh0LmdldFBhcmVudElucHV0VHlwZSgpKTtcblxuICAgICAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKGlucHV0T2JqZWN0RGVmKSkge1xuICAgICAgICBjb25zdCBpbnB1dEZpZWxkRGVmID0gaW5wdXRPYmplY3REZWYuZ2V0RmllbGRzKClbbm9kZS5uYW1lLnZhbHVlXTtcbiAgICAgICAgY29uc3QgZGVwcmVjYXRpb25SZWFzb24gPVxuICAgICAgICAgIGlucHV0RmllbGREZWYgPT09IG51bGwgfHwgaW5wdXRGaWVsZERlZiA9PT0gdm9pZCAwXG4gICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgOiBpbnB1dEZpZWxkRGVmLmRlcHJlY2F0aW9uUmVhc29uO1xuXG4gICAgICAgIGlmIChkZXByZWNhdGlvblJlYXNvbiAhPSBudWxsKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAgIGBUaGUgaW5wdXQgZmllbGQgJHtpbnB1dE9iamVjdERlZi5uYW1lfS4ke2lucHV0RmllbGREZWYubmFtZX0gaXMgZGVwcmVjYXRlZC4gJHtkZXByZWNhdGlvblJlYXNvbn1gLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbm9kZXM6IG5vZGUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgRW51bVZhbHVlKG5vZGUpIHtcbiAgICAgIGNvbnN0IGVudW1WYWx1ZURlZiA9IGNvbnRleHQuZ2V0RW51bVZhbHVlKCk7XG4gICAgICBjb25zdCBkZXByZWNhdGlvblJlYXNvbiA9XG4gICAgICAgIGVudW1WYWx1ZURlZiA9PT0gbnVsbCB8fCBlbnVtVmFsdWVEZWYgPT09IHZvaWQgMFxuICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgOiBlbnVtVmFsdWVEZWYuZGVwcmVjYXRpb25SZWFzb247XG5cbiAgICAgIGlmIChlbnVtVmFsdWVEZWYgJiYgZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBlbnVtVHlwZURlZiA9IGdldE5hbWVkVHlwZShjb250ZXh0LmdldElucHV0VHlwZSgpKTtcbiAgICAgICAgZW51bVR5cGVEZWYgIT0gbnVsbCB8fCBpbnZhcmlhbnQoZmFsc2UpO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgVGhlIGVudW0gdmFsdWUgXCIke2VudW1UeXBlRGVmLm5hbWV9LiR7ZW51bVZhbHVlRGVmLm5hbWV9XCIgaXMgZGVwcmVjYXRlZC4gJHtkZXByZWNhdGlvblJlYXNvbn1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBub2Rlczogbm9kZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs\n");
|
1609 |
|
1610 | }),
|
1611 |
|
1612 | "../../../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs":
|
1613 |
|
1614 |
|
1615 |
|
1616 |
|
1617 | (function(module, __webpack_exports__, __webpack_require__) {
|
1618 |
|
1619 | "use strict";
|
1620 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoSchemaIntrospectionCustomRule\", function() { return NoSchemaIntrospectionCustomRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n\n\n\n\n/**\n * Prohibit introspection queries\n *\n * A GraphQL document is only valid if all fields selected are not fields that\n * return an introspection type.\n *\n * Note: This rule is optional and is not part of the Validation section of the\n * GraphQL Specification. This rule effectively disables introspection, which\n * does not reflect best practices and should only be done if absolutely necessary.\n */\nfunction NoSchemaIntrospectionCustomRule(context) {\n return {\n Field(node) {\n const type = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"getNamedType\"])(context.getType());\n\n if (type && Object(_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isIntrospectionType\"])(type)) {\n context.reportError(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\n `GraphQL introspection has been disabled, but the requested query contained the field \"${node.name.value}\".`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9jdXN0b20vTm9TY2hlbWFJbnRyb3NwZWN0aW9uQ3VzdG9tUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL2N1c3RvbS9Ob1NjaGVtYUludHJvc3BlY3Rpb25DdXN0b21SdWxlLm1qcz84Y2FlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgZ2V0TmFtZWRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQgeyBpc0ludHJvc3BlY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZS9pbnRyb3NwZWN0aW9uLm1qcyc7XG5cbi8qKlxuICogUHJvaGliaXQgaW50cm9zcGVjdGlvbiBxdWVyaWVzXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGZpZWxkcyBzZWxlY3RlZCBhcmUgbm90IGZpZWxkcyB0aGF0XG4gKiByZXR1cm4gYW4gaW50cm9zcGVjdGlvbiB0eXBlLlxuICpcbiAqIE5vdGU6IFRoaXMgcnVsZSBpcyBvcHRpb25hbCBhbmQgaXMgbm90IHBhcnQgb2YgdGhlIFZhbGlkYXRpb24gc2VjdGlvbiBvZiB0aGVcbiAqIEdyYXBoUUwgU3BlY2lmaWNhdGlvbi4gVGhpcyBydWxlIGVmZmVjdGl2ZWx5IGRpc2FibGVzIGludHJvc3BlY3Rpb24sIHdoaWNoXG4gKiBkb2VzIG5vdCByZWZsZWN0IGJlc3QgcHJhY3RpY2VzIGFuZCBzaG91bGQgb25seSBiZSBkb25lIGlmIGFic29sdXRlbHkgbmVjZXNzYXJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gTm9TY2hlbWFJbnRyb3NwZWN0aW9uQ3VzdG9tUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgRmllbGQobm9kZSkge1xuICAgICAgY29uc3QgdHlwZSA9IGdldE5hbWVkVHlwZShjb250ZXh0LmdldFR5cGUoKSk7XG5cbiAgICAgIGlmICh0eXBlICYmIGlzSW50cm9zcGVjdGlvblR5cGUodHlwZSkpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYEdyYXBoUUwgaW50cm9zcGVjdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCwgYnV0IHRoZSByZXF1ZXN0ZWQgcXVlcnkgY29udGFpbmVkIHRoZSBmaWVsZCBcIiR7bm9kZS5uYW1lLnZhbHVlfVwiLmAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5vZGVzOiBub2RlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs\n");
|
1621 |
|
1622 | }),
|
1623 |
|
1624 | "../../../node_modules/graphql/validation/specifiedRules.mjs":
|
1625 |
|
1626 |
|
1627 |
|
1628 |
|
1629 | (function(module, __webpack_exports__, __webpack_require__) {
|
1630 |
|
1631 | "use strict";
|
1632 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"specifiedRules\", function() { return specifiedRules; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"specifiedSDLRules\", function() { return specifiedSDLRules; });\n/* harmony import */ var _rules_ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rules/ExecutableDefinitionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\");\n/* harmony import */ var _rules_FieldsOnCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rules/FieldsOnCorrectTypeRule.mjs */ \"../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs\");\n/* harmony import */ var _rules_FragmentsOnCompositeTypesRule_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rules/FragmentsOnCompositeTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs\");\n/* harmony import */ var _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rules/KnownArgumentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs\");\n/* harmony import */ var _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rules/KnownDirectivesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownDirectivesRule.mjs\");\n/* harmony import */ var _rules_KnownFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./rules/KnownFragmentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs\");\n/* harmony import */ var _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./rules/KnownTypeNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs\");\n/* harmony import */ var _rules_LoneAnonymousOperationRule_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./rules/LoneAnonymousOperationRule.mjs */ \"../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs\");\n/* harmony import */ var _rules_LoneSchemaDefinitionRule_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rules/LoneSchemaDefinitionRule.mjs */ \"../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs\");\n/* harmony import */ var _rules_NoFragmentCyclesRule_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rules/NoFragmentCyclesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs\");\n/* harmony import */ var _rules_NoUndefinedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rules/NoUndefinedVariablesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs\");\n/* harmony import */ var _rules_NoUnusedFragmentsRule_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rules/NoUnusedFragmentsRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs\");\n/* harmony import */ var _rules_NoUnusedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rules/NoUnusedVariablesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs\");\n/* harmony import */ var _rules_OverlappingFieldsCanBeMergedRule_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rules/OverlappingFieldsCanBeMergedRule.mjs */ \"../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs\");\n/* harmony import */ var _rules_PossibleFragmentSpreadsRule_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rules/PossibleFragmentSpreadsRule.mjs */ \"../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs\");\n/* harmony import */ var _rules_PossibleTypeExtensionsRule_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./rules/PossibleTypeExtensionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs\");\n/* harmony import */ var _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./rules/ProvidedRequiredArgumentsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs\");\n/* harmony import */ var _rules_ScalarLeafsRule_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./rules/ScalarLeafsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ScalarLeafsRule.mjs\");\n/* harmony import */ var _rules_SingleFieldSubscriptionsRule_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./rules/SingleFieldSubscriptionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs\");\n/* harmony import */ var _rules_UniqueArgumentDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./rules/UniqueArgumentDefinitionNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./rules/UniqueArgumentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueDirectiveNamesRule_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./rules/UniqueDirectiveNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./rules/UniqueDirectivesPerLocationRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs\");\n/* harmony import */ var _rules_UniqueEnumValueNamesRule_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./rules/UniqueEnumValueNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueFieldDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./rules/UniqueFieldDefinitionNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./rules/UniqueFragmentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./rules/UniqueInputFieldNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueOperationNamesRule_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./rules/UniqueOperationNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueOperationTypesRule_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./rules/UniqueOperationTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs\");\n/* harmony import */ var _rules_UniqueTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./rules/UniqueTypeNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueVariableNamesRule_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./rules/UniqueVariableNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs\");\n/* harmony import */ var _rules_ValuesOfCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./rules/ValuesOfCorrectTypeRule.mjs */ \"../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs\");\n/* harmony import */ var _rules_VariablesAreInputTypesRule_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./rules/VariablesAreInputTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs\");\n/* harmony import */ var _rules_VariablesInAllowedPositionRule_mjs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./rules/VariablesInAllowedPositionRule.mjs */ \"../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs\");\n// Spec Section: \"Executable Definitions\"\n // Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n\n // Spec Section: \"Fragments on Composite Types\"\n\n // Spec Section: \"Argument Names\"\n\n // Spec Section: \"Directives Are Defined\"\n\n // Spec Section: \"Fragment spread target defined\"\n\n // Spec Section: \"Fragment Spread Type Existence\"\n\n // Spec Section: \"Lone Anonymous Operation\"\n\n // SDL-specific validation rules\n\n // Spec Section: \"Fragments must not form cycles\"\n\n // Spec Section: \"All Variable Used Defined\"\n\n // Spec Section: \"Fragments must be used\"\n\n // Spec Section: \"All Variables Used\"\n\n // Spec Section: \"Field Selection Merging\"\n\n // Spec Section: \"Fragment spread is possible\"\n\n\n // Spec Section: \"Argument Optionality\"\n\n // Spec Section: \"Leaf Field Selections\"\n\n // Spec Section: \"Subscriptions with Single Root Field\"\n\n\n // Spec Section: \"Argument Uniqueness\"\n\n\n // Spec Section: \"Directives Are Unique Per Location\"\n\n\n\n // Spec Section: \"Fragment Name Uniqueness\"\n\n // Spec Section: \"Input Object Field Uniqueness\"\n\n // Spec Section: \"Operation Name Uniqueness\"\n\n\n\n // Spec Section: \"Variable Uniqueness\"\n\n // Spec Section: \"Value Type Correctness\"\n\n // Spec Section: \"Variables are Input Types\"\n\n // Spec Section: \"All Variable Usages Are Allowed\"\n\n\n\n/**\n * This set includes all validation rules defined by the GraphQL spec.\n *\n * The order of the rules in this list has been adjusted to lead to the\n * most clear output when encountering multiple validation errors.\n */\nconst specifiedRules = Object.freeze([\n _rules_ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_0__[\"ExecutableDefinitionsRule\"],\n _rules_UniqueOperationNamesRule_mjs__WEBPACK_IMPORTED_MODULE_27__[\"UniqueOperationNamesRule\"],\n _rules_LoneAnonymousOperationRule_mjs__WEBPACK_IMPORTED_MODULE_7__[\"LoneAnonymousOperationRule\"],\n _rules_SingleFieldSubscriptionsRule_mjs__WEBPACK_IMPORTED_MODULE_18__[\"SingleFieldSubscriptionsRule\"],\n _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_6__[\"KnownTypeNamesRule\"],\n _rules_FragmentsOnCompositeTypesRule_mjs__WEBPACK_IMPORTED_MODULE_2__[\"FragmentsOnCompositeTypesRule\"],\n _rules_VariablesAreInputTypesRule_mjs__WEBPACK_IMPORTED_MODULE_32__[\"VariablesAreInputTypesRule\"],\n _rules_ScalarLeafsRule_mjs__WEBPACK_IMPORTED_MODULE_17__[\"ScalarLeafsRule\"],\n _rules_FieldsOnCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_1__[\"FieldsOnCorrectTypeRule\"],\n _rules_UniqueFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__[\"UniqueFragmentNamesRule\"],\n _rules_KnownFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_5__[\"KnownFragmentNamesRule\"],\n _rules_NoUnusedFragmentsRule_mjs__WEBPACK_IMPORTED_MODULE_11__[\"NoUnusedFragmentsRule\"],\n _rules_PossibleFragmentSpreadsRule_mjs__WEBPACK_IMPORTED_MODULE_14__[\"PossibleFragmentSpreadsRule\"],\n _rules_NoFragmentCyclesRule_mjs__WEBPACK_IMPORTED_MODULE_9__[\"NoFragmentCyclesRule\"],\n _rules_UniqueVariableNamesRule_mjs__WEBPACK_IMPORTED_MODULE_30__[\"UniqueVariableNamesRule\"],\n _rules_NoUndefinedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_10__[\"NoUndefinedVariablesRule\"],\n _rules_NoUnusedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_12__[\"NoUnusedVariablesRule\"],\n _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_4__[\"KnownDirectivesRule\"],\n _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_22__[\"UniqueDirectivesPerLocationRule\"],\n _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_3__[\"KnownArgumentNamesRule\"],\n _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__[\"UniqueArgumentNamesRule\"],\n _rules_ValuesOfCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_31__[\"ValuesOfCorrectTypeRule\"],\n _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_16__[\"ProvidedRequiredArgumentsRule\"],\n _rules_VariablesInAllowedPositionRule_mjs__WEBPACK_IMPORTED_MODULE_33__[\"VariablesInAllowedPositionRule\"],\n _rules_OverlappingFieldsCanBeMergedRule_mjs__WEBPACK_IMPORTED_MODULE_13__[\"OverlappingFieldsCanBeMergedRule\"],\n _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_26__[\"UniqueInputFieldNamesRule\"],\n]);\n/**\n * @internal\n */\n\nconst specifiedSDLRules = Object.freeze([\n _rules_LoneSchemaDefinitionRule_mjs__WEBPACK_IMPORTED_MODULE_8__[\"LoneSchemaDefinitionRule\"],\n _rules_UniqueOperationTypesRule_mjs__WEBPACK_IMPORTED_MODULE_28__[\"UniqueOperationTypesRule\"],\n _rules_UniqueTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_29__[\"UniqueTypeNamesRule\"],\n _rules_UniqueEnumValueNamesRule_mjs__WEBPACK_IMPORTED_MODULE_23__[\"UniqueEnumValueNamesRule\"],\n _rules_UniqueFieldDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_24__[\"UniqueFieldDefinitionNamesRule\"],\n _rules_UniqueArgumentDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_19__[\"UniqueArgumentDefinitionNamesRule\"],\n _rules_UniqueDirectiveNamesRule_mjs__WEBPACK_IMPORTED_MODULE_21__[\"UniqueDirectiveNamesRule\"],\n _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_6__[\"KnownTypeNamesRule\"],\n _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_4__[\"KnownDirectivesRule\"],\n _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_22__[\"UniqueDirectivesPerLocationRule\"],\n _rules_PossibleTypeExtensionsRule_mjs__WEBPACK_IMPORTED_MODULE_15__[\"PossibleTypeExtensionsRule\"],\n _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_3__[\"KnownArgumentNamesOnDirectivesRule\"],\n _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__[\"UniqueArgumentNamesRule\"],\n _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_26__[\"UniqueInputFieldNamesRule\"],\n _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_16__[\"ProvidedRequiredArgumentsOnDirectivesRule\"],\n]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9zcGVjaWZpZWRSdWxlcy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3NwZWNpZmllZFJ1bGVzLm1qcz8zMDA5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNwZWMgU2VjdGlvbjogXCJFeGVjdXRhYmxlIERlZmluaXRpb25zXCJcbmltcG9ydCB7IEV4ZWN1dGFibGVEZWZpbml0aW9uc1J1bGUgfSBmcm9tICcuL3J1bGVzL0V4ZWN1dGFibGVEZWZpbml0aW9uc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkZpZWxkIFNlbGVjdGlvbnMgb24gT2JqZWN0cywgSW50ZXJmYWNlcywgYW5kIFVuaW9ucyBUeXBlc1wiXG5cbmltcG9ydCB7IEZpZWxkc09uQ29ycmVjdFR5cGVSdWxlIH0gZnJvbSAnLi9ydWxlcy9GaWVsZHNPbkNvcnJlY3RUeXBlUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnRzIG9uIENvbXBvc2l0ZSBUeXBlc1wiXG5cbmltcG9ydCB7IEZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9GcmFnbWVudHNPbkNvbXBvc2l0ZVR5cGVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiQXJndW1lbnQgTmFtZXNcIlxuXG5pbXBvcnQge1xuICBLbm93bkFyZ3VtZW50TmFtZXNPbkRpcmVjdGl2ZXNSdWxlLFxuICBLbm93bkFyZ3VtZW50TmFtZXNSdWxlLFxufSBmcm9tICcuL3J1bGVzL0tub3duQXJndW1lbnROYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkRpcmVjdGl2ZXMgQXJlIERlZmluZWRcIlxuXG5pbXBvcnQgeyBLbm93bkRpcmVjdGl2ZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9Lbm93bkRpcmVjdGl2ZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudCBzcHJlYWQgdGFyZ2V0IGRlZmluZWRcIlxuXG5pbXBvcnQgeyBLbm93bkZyYWdtZW50TmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9Lbm93bkZyYWdtZW50TmFtZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudCBTcHJlYWQgVHlwZSBFeGlzdGVuY2VcIlxuXG5pbXBvcnQgeyBLbm93blR5cGVOYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL0tub3duVHlwZU5hbWVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiTG9uZSBBbm9ueW1vdXMgT3BlcmF0aW9uXCJcblxuaW1wb3J0IHsgTG9uZUFub255bW91c09wZXJhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL0xvbmVBbm9ueW1vdXNPcGVyYXRpb25SdWxlLm1qcyc7IC8vIFNETC1zcGVjaWZpYyB2YWxpZGF0aW9uIHJ1bGVzXG5cbmltcG9ydCB7IExvbmVTY2hlbWFEZWZpbml0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvTG9uZVNjaGVtYURlZmluaXRpb25SdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudHMgbXVzdCBub3QgZm9ybSBjeWNsZXNcIlxuXG5pbXBvcnQgeyBOb0ZyYWdtZW50Q3ljbGVzUnVsZSB9IGZyb20gJy4vcnVsZXMvTm9GcmFnbWVudEN5Y2xlc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkFsbCBWYXJpYWJsZSBVc2VkIERlZmluZWRcIlxuXG5pbXBvcnQgeyBOb1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUgfSBmcm9tICcuL3J1bGVzL05vVW5kZWZpbmVkVmFyaWFibGVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnRzIG11c3QgYmUgdXNlZFwiXG5cbmltcG9ydCB7IE5vVW51c2VkRnJhZ21lbnRzUnVsZSB9IGZyb20gJy4vcnVsZXMvTm9VbnVzZWRGcmFnbWVudHNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJBbGwgVmFyaWFibGVzIFVzZWRcIlxuXG5pbXBvcnQgeyBOb1VudXNlZFZhcmlhYmxlc1J1bGUgfSBmcm9tICcuL3J1bGVzL05vVW51c2VkVmFyaWFibGVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRmllbGQgU2VsZWN0aW9uIE1lcmdpbmdcIlxuXG5pbXBvcnQgeyBPdmVybGFwcGluZ0ZpZWxkc0NhbkJlTWVyZ2VkUnVsZSB9IGZyb20gJy4vcnVsZXMvT3ZlcmxhcHBpbmdGaWVsZHNDYW5CZU1lcmdlZFJ1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50IHNwcmVhZCBpcyBwb3NzaWJsZVwiXG5cbmltcG9ydCB7IFBvc3NpYmxlRnJhZ21lbnRTcHJlYWRzUnVsZSB9IGZyb20gJy4vcnVsZXMvUG9zc2libGVGcmFnbWVudFNwcmVhZHNSdWxlLm1qcyc7XG5pbXBvcnQgeyBQb3NzaWJsZVR5cGVFeHRlbnNpb25zUnVsZSB9IGZyb20gJy4vcnVsZXMvUG9zc2libGVUeXBlRXh0ZW5zaW9uc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkFyZ3VtZW50IE9wdGlvbmFsaXR5XCJcblxuaW1wb3J0IHtcbiAgUHJvdmlkZWRSZXF1aXJlZEFyZ3VtZW50c09uRGlyZWN0aXZlc1J1bGUsXG4gIFByb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNSdWxlLFxufSBmcm9tICcuL3J1bGVzL1Byb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJMZWFmIEZpZWxkIFNlbGVjdGlvbnNcIlxuXG5pbXBvcnQgeyBTY2FsYXJMZWFmc1J1bGUgfSBmcm9tICcuL3J1bGVzL1NjYWxhckxlYWZzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiU3Vic2NyaXB0aW9ucyB3aXRoIFNpbmdsZSBSb290IEZpZWxkXCJcblxuaW1wb3J0IHsgU2luZ2xlRmllbGRTdWJzY3JpcHRpb25zUnVsZSB9IGZyb20gJy4vcnVsZXMvU2luZ2xlRmllbGRTdWJzY3JpcHRpb25zUnVsZS5tanMnO1xuaW1wb3J0IHsgVW5pcXVlQXJndW1lbnREZWZpbml0aW9uTmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVBcmd1bWVudERlZmluaXRpb25OYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkFyZ3VtZW50IFVuaXF1ZW5lc3NcIlxuXG5pbXBvcnQgeyBVbmlxdWVBcmd1bWVudE5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlQXJndW1lbnROYW1lc1J1bGUubWpzJztcbmltcG9ydCB7IFVuaXF1ZURpcmVjdGl2ZU5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlRGlyZWN0aXZlTmFtZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJEaXJlY3RpdmVzIEFyZSBVbmlxdWUgUGVyIExvY2F0aW9uXCJcblxuaW1wb3J0IHsgVW5pcXVlRGlyZWN0aXZlc1BlckxvY2F0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlRGlyZWN0aXZlc1BlckxvY2F0aW9uUnVsZS5tanMnO1xuaW1wb3J0IHsgVW5pcXVlRW51bVZhbHVlTmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVFbnVtVmFsdWVOYW1lc1J1bGUubWpzJztcbmltcG9ydCB7IFVuaXF1ZUZpZWxkRGVmaW5pdGlvbk5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlRmllbGREZWZpbml0aW9uTmFtZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudCBOYW1lIFVuaXF1ZW5lc3NcIlxuXG5pbXBvcnQgeyBVbmlxdWVGcmFnbWVudE5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlRnJhZ21lbnROYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIklucHV0IE9iamVjdCBGaWVsZCBVbmlxdWVuZXNzXCJcblxuaW1wb3J0IHsgVW5pcXVlSW5wdXRGaWVsZE5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlSW5wdXRGaWVsZE5hbWVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiT3BlcmF0aW9uIE5hbWUgVW5pcXVlbmVzc1wiXG5cbmltcG9ydCB7IFVuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlT3BlcmF0aW9uTmFtZXNSdWxlLm1qcyc7XG5pbXBvcnQgeyBVbmlxdWVPcGVyYXRpb25UeXBlc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZU9wZXJhdGlvblR5cGVzUnVsZS5tanMnO1xuaW1wb3J0IHsgVW5pcXVlVHlwZU5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlVHlwZU5hbWVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiVmFyaWFibGUgVW5pcXVlbmVzc1wiXG5cbmltcG9ydCB7IFVuaXF1ZVZhcmlhYmxlTmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVWYXJpYWJsZU5hbWVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiVmFsdWUgVHlwZSBDb3JyZWN0bmVzc1wiXG5cbmltcG9ydCB7IFZhbHVlc09mQ29ycmVjdFR5cGVSdWxlIH0gZnJvbSAnLi9ydWxlcy9WYWx1ZXNPZkNvcnJlY3RUeXBlUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiVmFyaWFibGVzIGFyZSBJbnB1dCBUeXBlc1wiXG5cbmltcG9ydCB7IFZhcmlhYmxlc0FyZUlucHV0VHlwZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9WYXJpYWJsZXNBcmVJbnB1dFR5cGVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiQWxsIFZhcmlhYmxlIFVzYWdlcyBBcmUgQWxsb3dlZFwiXG5cbmltcG9ydCB7IFZhcmlhYmxlc0luQWxsb3dlZFBvc2l0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvVmFyaWFibGVzSW5BbGxvd2VkUG9zaXRpb25SdWxlLm1qcyc7XG5cbi8qKlxuICogVGhpcyBzZXQgaW5jbHVkZXMgYWxsIHZhbGlkYXRpb24gcnVsZXMgZGVmaW5lZCBieSB0aGUgR3JhcGhRTCBzcGVjLlxuICpcbiAqIFRoZSBvcmRlciBvZiB0aGUgcnVsZXMgaW4gdGhpcyBsaXN0IGhhcyBiZWVuIGFkanVzdGVkIHRvIGxlYWQgdG8gdGhlXG4gKiBtb3N0IGNsZWFyIG91dHB1dCB3aGVuIGVuY291bnRlcmluZyBtdWx0aXBsZSB2YWxpZGF0aW9uIGVycm9ycy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNwZWNpZmllZFJ1bGVzID0gT2JqZWN0LmZyZWV6ZShbXG4gIEV4ZWN1dGFibGVEZWZpbml0aW9uc1J1bGUsXG4gIFVuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZSxcbiAgTG9uZUFub255bW91c09wZXJhdGlvblJ1bGUsXG4gIFNpbmdsZUZpZWxkU3Vic2NyaXB0aW9uc1J1bGUsXG4gIEtub3duVHlwZU5hbWVzUnVsZSxcbiAgRnJhZ21lbnRzT25Db21wb3NpdGVUeXBlc1J1bGUsXG4gIFZhcmlhYmxlc0FyZUlucHV0VHlwZXNSdWxlLFxuICBTY2FsYXJMZWFmc1J1bGUsXG4gIEZpZWxkc09uQ29ycmVjdFR5cGVSdWxlLFxuICBVbmlxdWVGcmFnbWVudE5hbWVzUnVsZSxcbiAgS25vd25GcmFnbWVudE5hbWVzUnVsZSxcbiAgTm9VbnVzZWRGcmFnbWVudHNSdWxlLFxuICBQb3NzaWJsZUZyYWdtZW50U3ByZWFkc1J1bGUsXG4gIE5vRnJhZ21lbnRDeWNsZXNSdWxlLFxuICBVbmlxdWVWYXJpYWJsZU5hbWVzUnVsZSxcbiAgTm9VbmRlZmluZWRWYXJpYWJsZXNSdWxlLFxuICBOb1VudXNlZFZhcmlhYmxlc1J1bGUsXG4gIEtub3duRGlyZWN0aXZlc1J1bGUsXG4gIFVuaXF1ZURpcmVjdGl2ZXNQZXJMb2NhdGlvblJ1bGUsXG4gIEtub3duQXJndW1lbnROYW1lc1J1bGUsXG4gIFVuaXF1ZUFyZ3VtZW50TmFtZXNSdWxlLFxuICBWYWx1ZXNPZkNvcnJlY3RUeXBlUnVsZSxcbiAgUHJvdmlkZWRSZXF1aXJlZEFyZ3VtZW50c1J1bGUsXG4gIFZhcmlhYmxlc0luQWxsb3dlZFBvc2l0aW9uUnVsZSxcbiAgT3ZlcmxhcHBpbmdGaWVsZHNDYW5CZU1lcmdlZFJ1bGUsXG4gIFVuaXF1ZUlucHV0RmllbGROYW1lc1J1bGUsXG5dKTtcbi8qKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGNvbnN0IHNwZWNpZmllZFNETFJ1bGVzID0gT2JqZWN0LmZyZWV6ZShbXG4gIExvbmVTY2hlbWFEZWZpbml0aW9uUnVsZSxcbiAgVW5pcXVlT3BlcmF0aW9uVHlwZXNSdWxlLFxuICBVbmlxdWVUeXBlTmFtZXNSdWxlLFxuICBVbmlxdWVFbnVtVmFsdWVOYW1lc1J1bGUsXG4gIFVuaXF1ZUZpZWxkRGVmaW5pdGlvbk5hbWVzUnVsZSxcbiAgVW5pcXVlQXJndW1lbnREZWZpbml0aW9uTmFtZXNSdWxlLFxuICBVbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUsXG4gIEtub3duVHlwZU5hbWVzUnVsZSxcbiAgS25vd25EaXJlY3RpdmVzUnVsZSxcbiAgVW5pcXVlRGlyZWN0aXZlc1BlckxvY2F0aW9uUnVsZSxcbiAgUG9zc2libGVUeXBlRXh0ZW5zaW9uc1J1bGUsXG4gIEtub3duQXJndW1lbnROYW1lc09uRGlyZWN0aXZlc1J1bGUsXG4gIFVuaXF1ZUFyZ3VtZW50TmFtZXNSdWxlLFxuICBVbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlLFxuICBQcm92aWRlZFJlcXVpcmVkQXJndW1lbnRzT25EaXJlY3RpdmVzUnVsZSxcbl0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/specifiedRules.mjs\n");
|
1633 |
|
1634 | }),
|
1635 |
|
1636 | "../../../node_modules/graphql/validation/validate.mjs":
|
1637 |
|
1638 |
|
1639 |
|
1640 |
|
1641 | (function(module, __webpack_exports__, __webpack_require__) {
|
1642 |
|
1643 | "use strict";
|
1644 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validate\", function() { return validate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateSDL\", function() { return validateSDL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertValidSDL\", function() { return assertValidSDL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertValidSDLExtension\", function() { return assertValidSDLExtension; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var _type_validate_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../type/validate.mjs */ \"../../../node_modules/graphql/type/validate.mjs\");\n/* harmony import */ var _utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utilities/TypeInfo.mjs */ \"../../../node_modules/graphql/utilities/TypeInfo.mjs\");\n/* harmony import */ var _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./specifiedRules.mjs */ \"../../../node_modules/graphql/validation/specifiedRules.mjs\");\n/* harmony import */ var _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ValidationContext.mjs */ \"../../../node_modules/graphql/validation/ValidationContext.mjs\");\n\n\n\n\n\n\n\n/**\n * Implements the \"Validation\" section of the spec.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the document is valid.\n *\n * A list of specific validation rules may be provided. If not provided, the\n * default list of rules defined by the GraphQL specification will be used.\n *\n * Each validation rules is a function which returns a visitor\n * (see the language/visitor API). Visitor methods are expected to return\n * GraphQLErrors, or Arrays of GraphQLErrors when invalid.\n *\n * Validate will stop validation after a `maxErrors` limit has been reached.\n * Attackers can send pathologically invalid queries to induce a DoS attack,\n * so by default `maxErrors` set to 100 errors.\n *\n * Optionally a custom TypeInfo instance may be provided. If not provided, one\n * will be created from the provided schema.\n */\n\nfunction validate(\n schema,\n documentAST,\n rules = _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_5__[\"specifiedRules\"],\n options,\n /** @deprecated will be removed in 17.0.0 */\n typeInfo = new _utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TypeInfo\"](schema),\n) {\n var _options$maxErrors;\n\n const maxErrors =\n (_options$maxErrors =\n options === null || options === void 0 ? void 0 : options.maxErrors) !==\n null && _options$maxErrors !== void 0\n ? _options$maxErrors\n : 100;\n documentAST || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"devAssert\"])(false, 'Must provide document.'); // If the schema used for validation is invalid, throw an error.\n\n Object(_type_validate_mjs__WEBPACK_IMPORTED_MODULE_3__[\"assertValidSchema\"])(schema);\n const abortObj = Object.freeze({});\n const errors = [];\n const context = new _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_6__[\"ValidationContext\"](\n schema,\n documentAST,\n typeInfo,\n (error) => {\n if (errors.length >= maxErrors) {\n errors.push(\n new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\n 'Too many validation errors, error limit reached. Validation aborted.',\n ),\n ); // eslint-disable-next-line @typescript-eslint/no-throw-literal\n\n throw abortObj;\n }\n\n errors.push(error);\n },\n ); // This uses a specialized visitor which runs multiple visitors in parallel,\n // while maintaining the visitor skip and break API.\n\n const visitor = Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__[\"visitInParallel\"])(rules.map((rule) => rule(context))); // Visit the whole document with each instance of all provided rules.\n\n try {\n Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__[\"visit\"])(documentAST, Object(_utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_4__[\"visitWithTypeInfo\"])(typeInfo, visitor));\n } catch (e) {\n if (e !== abortObj) {\n throw e;\n }\n }\n\n return errors;\n}\n/**\n * @internal\n */\n\nfunction validateSDL(\n documentAST,\n schemaToExtend,\n rules = _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_5__[\"specifiedSDLRules\"],\n) {\n const errors = [];\n const context = new _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_6__[\"SDLValidationContext\"](\n documentAST,\n schemaToExtend,\n (error) => {\n errors.push(error);\n },\n );\n const visitors = rules.map((rule) => rule(context));\n Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__[\"visit\"])(documentAST, Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__[\"visitInParallel\"])(visitors));\n return errors;\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDL(documentAST) {\n const errors = validateSDL(documentAST);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDLExtension(documentAST, schema) {\n const errors = validateSDL(documentAST, schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi92YWxpZGF0ZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3ZhbGlkYXRlLm1qcz8zNGQ2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRldkFzc2VydCB9IGZyb20gJy4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7IHZpc2l0LCB2aXNpdEluUGFyYWxsZWwgfSBmcm9tICcuLi9sYW5ndWFnZS92aXNpdG9yLm1qcyc7XG5pbXBvcnQgeyBhc3NlcnRWYWxpZFNjaGVtYSB9IGZyb20gJy4uL3R5cGUvdmFsaWRhdGUubWpzJztcbmltcG9ydCB7IFR5cGVJbmZvLCB2aXNpdFdpdGhUeXBlSW5mbyB9IGZyb20gJy4uL3V0aWxpdGllcy9UeXBlSW5mby5tanMnO1xuaW1wb3J0IHsgc3BlY2lmaWVkUnVsZXMsIHNwZWNpZmllZFNETFJ1bGVzIH0gZnJvbSAnLi9zcGVjaWZpZWRSdWxlcy5tanMnO1xuaW1wb3J0IHtcbiAgU0RMVmFsaWRhdGlvbkNvbnRleHQsXG4gIFZhbGlkYXRpb25Db250ZXh0LFxufSBmcm9tICcuL1ZhbGlkYXRpb25Db250ZXh0Lm1qcyc7XG4vKipcbiAqIEltcGxlbWVudHMgdGhlIFwiVmFsaWRhdGlvblwiIHNlY3Rpb24gb2YgdGhlIHNwZWMuXG4gKlxuICogVmFsaWRhdGlvbiBydW5zIHN5bmNocm9ub3VzbHksIHJldHVybmluZyBhbiBhcnJheSBvZiBlbmNvdW50ZXJlZCBlcnJvcnMsIG9yXG4gKiBhbiBlbXB0eSBhcnJheSBpZiBubyBlcnJvcnMgd2VyZSBlbmNvdW50ZXJlZCBhbmQgdGhlIGRvY3VtZW50IGlzIHZhbGlkLlxuICpcbiAqIEEgbGlzdCBvZiBzcGVjaWZpYyB2YWxpZGF0aW9uIHJ1bGVzIG1heSBiZSBwcm92aWRlZC4gSWYgbm90IHByb3ZpZGVkLCB0aGVcbiAqIGRlZmF1bHQgbGlzdCBvZiBydWxlcyBkZWZpbmVkIGJ5IHRoZSBHcmFwaFFMIHNwZWNpZmljYXRpb24gd2lsbCBiZSB1c2VkLlxuICpcbiAqIEVhY2ggdmFsaWRhdGlvbiBydWxlcyBpcyBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYSB2aXNpdG9yXG4gKiAoc2VlIHRoZSBsYW5ndWFnZS92aXNpdG9yIEFQSSkuIFZpc2l0b3IgbWV0aG9kcyBhcmUgZXhwZWN0ZWQgdG8gcmV0dXJuXG4gKiBHcmFwaFFMRXJyb3JzLCBvciBBcnJheXMgb2YgR3JhcGhRTEVycm9ycyB3aGVuIGludmFsaWQuXG4gKlxuICogVmFsaWRhdGUgd2lsbCBzdG9wIHZhbGlkYXRpb24gYWZ0ZXIgYSBgbWF4RXJyb3JzYCBsaW1pdCBoYXMgYmVlbiByZWFjaGVkLlxuICogQXR0YWNrZXJzIGNhbiBzZW5kIHBhdGhvbG9naWNhbGx5IGludmFsaWQgcXVlcmllcyB0byBpbmR1Y2UgYSBEb1MgYXR0YWNrLFxuICogc28gYnkgZGVmYXVsdCBgbWF4RXJyb3JzYCBzZXQgdG8gMTAwIGVycm9ycy5cbiAqXG4gKiBPcHRpb25hbGx5IGEgY3VzdG9tIFR5cGVJbmZvIGluc3RhbmNlIG1heSBiZSBwcm92aWRlZC4gSWYgbm90IHByb3ZpZGVkLCBvbmVcbiAqIHdpbGwgYmUgY3JlYXRlZCBmcm9tIHRoZSBwcm92aWRlZCBzY2hlbWEuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlKFxuICBzY2hlbWEsXG4gIGRvY3VtZW50QVNULFxuICBydWxlcyA9IHNwZWNpZmllZFJ1bGVzLFxuICBvcHRpb25zLFxuICAvKiogQGRlcHJlY2F0ZWQgd2lsbCBiZSByZW1vdmVkIGluIDE3LjAuMCAqL1xuICB0eXBlSW5mbyA9IG5ldyBUeXBlSW5mbyhzY2hlbWEpLFxuKSB7XG4gIHZhciBfb3B0aW9ucyRtYXhFcnJvcnM7XG5cbiAgY29uc3QgbWF4RXJyb3JzID1cbiAgICAoX29wdGlvbnMkbWF4RXJyb3JzID1cbiAgICAgIG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5tYXhFcnJvcnMpICE9PVxuICAgICAgbnVsbCAmJiBfb3B0aW9ucyRtYXhFcnJvcnMgIT09IHZvaWQgMFxuICAgICAgPyBfb3B0aW9ucyRtYXhFcnJvcnNcbiAgICAgIDogMTAwO1xuICBkb2N1bWVudEFTVCB8fCBkZXZBc3NlcnQoZmFsc2UsICdNdXN0IHByb3ZpZGUgZG9jdW1lbnQuJyk7IC8vIElmIHRoZSBzY2hlbWEgdXNlZCBmb3IgdmFsaWRhdGlvbiBpcyBpbnZhbGlkLCB0aHJvdyBhbiBlcnJvci5cblxuICBhc3NlcnRWYWxpZFNjaGVtYShzY2hlbWEpO1xuICBjb25zdCBhYm9ydE9iaiA9IE9iamVjdC5mcmVlemUoe30pO1xuICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBWYWxpZGF0aW9uQ29udGV4dChcbiAgICBzY2hlbWEsXG4gICAgZG9jdW1lbnRBU1QsXG4gICAgdHlwZUluZm8sXG4gICAgKGVycm9yKSA9PiB7XG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+PSBtYXhFcnJvcnMpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICdUb28gbWFueSB2YWxpZGF0aW9uIGVycm9ycywgZXJyb3IgbGltaXQgcmVhY2hlZC4gVmFsaWRhdGlvbiBhYm9ydGVkLicsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aHJvdy1saXRlcmFsXG5cbiAgICAgICAgdGhyb3cgYWJvcnRPYmo7XG4gICAgICB9XG5cbiAgICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgICB9LFxuICApOyAvLyBUaGlzIHVzZXMgYSBzcGVjaWFsaXplZCB2aXNpdG9yIHdoaWNoIHJ1bnMgbXVsdGlwbGUgdmlzaXRvcnMgaW4gcGFyYWxsZWwsXG4gIC8vIHdoaWxlIG1haW50YWluaW5nIHRoZSB2aXNpdG9yIHNraXAgYW5kIGJyZWFrIEFQSS5cblxuICBjb25zdCB2aXNpdG9yID0gdmlzaXRJblBhcmFsbGVsKHJ1bGVzLm1hcCgocnVsZSkgPT4gcnVsZShjb250ZXh0KSkpOyAvLyBWaXNpdCB0aGUgd2hvbGUgZG9jdW1lbnQgd2l0aCBlYWNoIGluc3RhbmNlIG9mIGFsbCBwcm92aWRlZCBydWxlcy5cblxuICB0cnkge1xuICAgIHZpc2l0KGRvY3VtZW50QVNULCB2aXNpdFdpdGhUeXBlSW5mbyh0eXBlSW5mbywgdmlzaXRvcikpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGUgIT09IGFib3J0T2JqKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNETChcbiAgZG9jdW1lbnRBU1QsXG4gIHNjaGVtYVRvRXh0ZW5kLFxuICBydWxlcyA9IHNwZWNpZmllZFNETFJ1bGVzLFxuKSB7XG4gIGNvbnN0IGVycm9ycyA9IFtdO1xuICBjb25zdCBjb250ZXh0ID0gbmV3IFNETFZhbGlkYXRpb25Db250ZXh0KFxuICAgIGRvY3VtZW50QVNULFxuICAgIHNjaGVtYVRvRXh0ZW5kLFxuICAgIChlcnJvcikgPT4ge1xuICAgICAgZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgIH0sXG4gICk7XG4gIGNvbnN0IHZpc2l0b3JzID0gcnVsZXMubWFwKChydWxlKSA9PiBydWxlKGNvbnRleHQpKTtcbiAgdmlzaXQoZG9jdW1lbnRBU1QsIHZpc2l0SW5QYXJhbGxlbCh2aXNpdG9ycykpO1xuICByZXR1cm4gZXJyb3JzO1xufVxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHdoaWNoIGFzc2VydHMgYSBTREwgZG9jdW1lbnQgaXMgdmFsaWQgYnkgdGhyb3dpbmcgYW4gZXJyb3JcbiAqIGlmIGl0IGlzIGludmFsaWQuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFZhbGlkU0RMKGRvY3VtZW50QVNUKSB7XG4gIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlU0RMKGRvY3VtZW50QVNUKTtcblxuICBpZiAoZXJyb3JzLmxlbmd0aCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvcnMubWFwKChlcnJvcikgPT4gZXJyb3IubWVzc2FnZSkuam9pbignXFxuXFxuJykpO1xuICB9XG59XG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggYXNzZXJ0cyBhIFNETCBkb2N1bWVudCBpcyB2YWxpZCBieSB0aHJvd2luZyBhbiBlcnJvclxuICogaWYgaXQgaXMgaW52YWxpZC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VmFsaWRTRExFeHRlbnNpb24oZG9jdW1lbnRBU1QsIHNjaGVtYSkge1xuICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZVNETChkb2N1bWVudEFTVCwgc2NoZW1hKTtcblxuICBpZiAoZXJyb3JzLmxlbmd0aCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvcnMubWFwKChlcnJvcikgPT4gZXJyb3IubWVzc2FnZSkuam9pbignXFxuXFxuJykpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/validate.mjs\n");
|
1645 |
|
1646 | }),
|
1647 |
|
1648 | "../../../node_modules/graphql/version.mjs":
|
1649 |
|
1650 |
|
1651 |
|
1652 |
|
1653 | (function(module, __webpack_exports__, __webpack_require__) {
|
1654 |
|
1655 | "use strict";
|
1656 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"versionInfo\", function() { return versionInfo; });\n// Note: This file is autogenerated using \"resources/gen-version.js\" script and\n// automatically updated by \"npm version\" command.\n\n/**\n * A string containing the version of the GraphQL.js library\n */\nconst version = '16.5.0';\n/**\n * An object containing the components of the GraphQL.js version string\n */\n\nconst versionInfo = Object.freeze({\n major: 16,\n minor: 5,\n patch: 0,\n preReleaseTag: null,\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmVyc2lvbi5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92ZXJzaW9uLm1qcz9lNzg1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIE5vdGU6IFRoaXMgZmlsZSBpcyBhdXRvZ2VuZXJhdGVkIHVzaW5nIFwicmVzb3VyY2VzL2dlbi12ZXJzaW9uLmpzXCIgc2NyaXB0IGFuZFxuLy8gYXV0b21hdGljYWxseSB1cGRhdGVkIGJ5IFwibnBtIHZlcnNpb25cIiBjb21tYW5kLlxuXG4vKipcbiAqIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHZlcnNpb24gb2YgdGhlIEdyYXBoUUwuanMgbGlicmFyeVxuICovXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9ICcxNi41LjAnO1xuLyoqXG4gKiBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgY29tcG9uZW50cyBvZiB0aGUgR3JhcGhRTC5qcyB2ZXJzaW9uIHN0cmluZ1xuICovXG5cbmV4cG9ydCBjb25zdCB2ZXJzaW9uSW5mbyA9IE9iamVjdC5mcmVlemUoe1xuICBtYWpvcjogMTYsXG4gIG1pbm9yOiA1LFxuICBwYXRjaDogMCxcbiAgcHJlUmVsZWFzZVRhZzogbnVsbCxcbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/version.mjs\n");
|
1657 |
|
1658 | }),
|
1659 |
|
1660 | "../../../node_modules/linkify-it/index.js":
|
1661 |
|
1662 |
|
1663 |
|
1664 |
|
1665 | (function(module, exports, __webpack_require__) {
|
1666 |
|
1667 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict'; ////////////////////////////////////////////////////////////////////////////////\n // Helpers\n // Merge objects\n //\n\n function assign(obj\n /*from1, from2, from3, ...*/\n ) {\n var sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n return obj;\n }\n\n function _class(obj) {\n return Object.prototype.toString.call(obj);\n }\n\n function isString(obj) {\n return _class(obj) === '[object String]';\n }\n\n function isObject(obj) {\n return _class(obj) === '[object Object]';\n }\n\n function isRegExp(obj) {\n return _class(obj) === '[object RegExp]';\n }\n\n function isFunction(obj) {\n return _class(obj) === '[object Function]';\n }\n\n function escapeRE(str) {\n return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n } ////////////////////////////////////////////////////////////////////////////////\n\n\n var defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n };\n\n function isOptionsObj(obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n return acc || defaultOptions.hasOwnProperty(k);\n }, false);\n }\n\n var defaultSchemas = {\n 'http:': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp('^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i');\n }\n\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length;\n }\n\n return 0;\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp('^' + self.re.src_auth + // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' + self.re.src_port + self.re.src_host_terminator + self.re.src_path, 'i');\n }\n\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') {\n return 0;\n }\n\n if (pos >= 3 && text[pos - 3] === '/') {\n return 0;\n }\n\n return tail.match(self.re.no_http)[0].length;\n }\n\n return 0;\n }\n },\n 'mailto:': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.mailto) {\n self.re.mailto = new RegExp('^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i');\n }\n\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length;\n }\n\n return 0;\n }\n }\n };\n /*eslint-disable max-len*/\n // RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\n\n var tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]'; // DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\n\n var tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');\n /*eslint-enable max-len*/\n ////////////////////////////////////////////////////////////////////////////////\n\n function resetScanCache(self) {\n self.__index__ = -1;\n self.__text_cache__ = '';\n }\n\n function createValidator(re) {\n return function (text, pos) {\n var tail = text.slice(pos);\n\n if (re.test(tail)) {\n return tail.match(re)[0].length;\n }\n\n return 0;\n };\n }\n\n function createNormalizer() {\n return function (match, self) {\n self.normalize(match);\n };\n } // Schemas compiler. Build regexps.\n //\n\n\n function compile(self) {\n // Load & clone RE patterns.\n var re = self.re = __webpack_require__(/*! ./lib/re */ \"../../../node_modules/linkify-it/lib/re.js\")(self.__opts__); // Define dynamic patterns\n\n\n var tlds = self.__tlds__.slice();\n\n self.onCompile();\n\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re);\n }\n\n tlds.push(re.src_xn);\n re.src_tlds = tlds.join('|');\n\n function untpl(tpl) {\n return tpl.replace('%TLDS%', re.src_tlds);\n }\n\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i');\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i');\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i');\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i'); //\n // Compile each schema\n //\n\n var aliases = [];\n self.__compiled__ = {}; // Reset compiled data\n\n function schemaError(name, val) {\n throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val);\n }\n\n Object.keys(self.__schemas__).forEach(function (name) {\n var val = self.__schemas__[name]; // skip disabled methods\n\n if (val === null) {\n return;\n }\n\n var compiled = {\n validate: null,\n link: null\n };\n self.__compiled__[name] = compiled;\n\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate);\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate;\n } else {\n schemaError(name, val);\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize;\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer();\n } else {\n schemaError(name, val);\n }\n\n return;\n }\n\n if (isString(val)) {\n aliases.push(name);\n return;\n }\n\n schemaError(name, val);\n }); //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return;\n }\n\n self.__compiled__[alias].validate = self.__compiled__[self.__schemas__[alias]].validate;\n self.__compiled__[alias].normalize = self.__compiled__[self.__schemas__[alias]].normalize;\n }); //\n // Fake record for guessed links\n //\n\n self.__compiled__[''] = {\n validate: null,\n normalize: createNormalizer()\n }; //\n // Build schema condition\n //\n\n var slist = Object.keys(self.__compiled__).filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name];\n }).map(escapeRE).join('|'); // (?!_) cause 1.5x slowdown\n\n self.re.schema_test = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'i');\n self.re.schema_search = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'ig');\n self.re.pretest = RegExp('(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@', 'i'); //\n // Cleanup\n //\n\n resetScanCache(self);\n }\n /**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\n\n\n function Match(self, shift) {\n var start = self.__index__,\n end = self.__last_index__,\n text = self.__text_cache__.slice(start, end);\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n\n\n this.schema = self.__schema__.toLowerCase();\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n\n this.index = start + shift;\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n\n this.lastIndex = end + shift;\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n\n this.raw = text;\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n\n this.text = text;\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n\n this.url = text;\n }\n\n function createMatch(self, shift) {\n var match = new Match(self, shift);\n\n self.__compiled__[match.schema].normalize(match, self);\n\n return match;\n }\n /**\n * class LinkifyIt\n **/\n\n /**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\n\n\n function LinkifyIt(schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options);\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas;\n schemas = {};\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options); // Cache last tested result. Used to skip repeating steps on next `match` call.\n\n this.__index__ = -1;\n this.__last_index__ = -1; // Next scan position\n\n this.__schema__ = '';\n this.__text_cache__ = '';\n this.__schemas__ = assign({}, defaultSchemas, schemas);\n this.__compiled__ = {};\n this.__tlds__ = tlds_default;\n this.__tlds_replaced__ = false;\n this.re = {};\n compile(this);\n }\n /** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\n\n\n LinkifyIt.prototype.add = function add(schema, definition) {\n this.__schemas__[schema] = definition;\n compile(this);\n return this;\n };\n /** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\n\n\n LinkifyIt.prototype.set = function set(options) {\n this.__opts__ = assign(this.__opts__, options);\n return this;\n };\n /**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\n\n\n LinkifyIt.prototype.test = function test(text) {\n // Reset scan cache\n this.__text_cache__ = text;\n this.__index__ = -1;\n\n if (!text.length) {\n return false;\n }\n\n var m, ml, me, len, shift, next, re, tld_pos, at_pos; // try to scan for link with schema - that's the most simple rule\n\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search;\n re.lastIndex = 0;\n\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex);\n\n if (len) {\n this.__schema__ = m[2];\n this.__index__ = m.index + m[1].length;\n this.__last_index__ = m.index + m[0].length + len;\n break;\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n tld_pos = text.search(this.re.host_fuzzy_test);\n\n if (tld_pos >= 0) {\n // if tld is located after found link - no need to check fuzzy pattern\n if (this.__index__ < 0 || tld_pos < this.__index__) {\n if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n shift = ml.index + ml[1].length;\n\n if (this.__index__ < 0 || shift < this.__index__) {\n this.__schema__ = '';\n this.__index__ = shift;\n this.__last_index__ = ml.index + ml[0].length;\n }\n }\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n at_pos = text.indexOf('@');\n\n if (at_pos >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if ((me = text.match(this.re.email_fuzzy)) !== null) {\n shift = me.index + me[1].length;\n next = me.index + me[0].length;\n\n if (this.__index__ < 0 || shift < this.__index__ || shift === this.__index__ && next > this.__last_index__) {\n this.__schema__ = 'mailto:';\n this.__index__ = shift;\n this.__last_index__ = next;\n }\n }\n }\n }\n\n return this.__index__ >= 0;\n };\n /**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\n\n\n LinkifyIt.prototype.pretest = function pretest(text) {\n return this.re.pretest.test(text);\n };\n /**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\n\n\n LinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0;\n }\n\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this);\n };\n /**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\n\n\n LinkifyIt.prototype.match = function match(text) {\n var shift = 0,\n result = []; // Try to take previous element from cache, if .test() called before\n\n if (this.__index__ >= 0 && this.__text_cache__ === text) {\n result.push(createMatch(this, shift));\n shift = this.__last_index__;\n } // Cut head if cache was used\n\n\n var tail = shift ? text.slice(shift) : text; // Scan string until end reached\n\n while (this.test(tail)) {\n result.push(createMatch(this, shift));\n tail = tail.slice(this.__last_index__);\n shift += this.__last_index__;\n }\n\n if (result.length) {\n return result;\n }\n\n return null;\n };\n /** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\n\n\n LinkifyIt.prototype.tlds = function tlds(list, keepOld) {\n list = Array.isArray(list) ? list : [list];\n\n if (!keepOld) {\n this.__tlds__ = list.slice();\n this.__tlds_replaced__ = true;\n compile(this);\n return this;\n }\n\n this.__tlds__ = this.__tlds__.concat(list).sort().filter(function (el, idx, arr) {\n return el !== arr[idx - 1];\n }).reverse();\n compile(this);\n return this;\n };\n /**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\n\n\n LinkifyIt.prototype.normalize = function normalize(match) {\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n if (!match.schema) {\n match.url = 'http://' + match.url;\n }\n\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = 'mailto:' + match.url;\n }\n };\n /**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\n\n\n LinkifyIt.prototype.onCompile = function onCompile() {};\n\n module.exports = LinkifyIt;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xpbmtpZnktaXQvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbGlua2lmeS1pdC9pbmRleC5qcz84MDE2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGVscGVyc1xuXG4vLyBNZXJnZSBvYmplY3RzXG4vL1xuZnVuY3Rpb24gYXNzaWduKG9iaiAvKmZyb20xLCBmcm9tMiwgZnJvbTMsIC4uLiovKSB7XG4gIHZhciBzb3VyY2VzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICBzb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgIGlmICghc291cmNlKSB7IHJldHVybjsgfVxuXG4gICAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIG9ialtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIF9jbGFzcyhvYmopIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopOyB9XG5mdW5jdGlvbiBpc1N0cmluZyhvYmopIHsgcmV0dXJuIF9jbGFzcyhvYmopID09PSAnW29iamVjdCBTdHJpbmddJzsgfVxuZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7IHJldHVybiBfY2xhc3Mob2JqKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7IH1cbmZ1bmN0aW9uIGlzUmVnRXhwKG9iaikgeyByZXR1cm4gX2NsYXNzKG9iaikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nOyB9XG5mdW5jdGlvbiBpc0Z1bmN0aW9uKG9iaikgeyByZXR1cm4gX2NsYXNzKG9iaikgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7IH1cblxuXG5mdW5jdGlvbiBlc2NhcGVSRShzdHIpIHsgcmV0dXJuIHN0ci5yZXBsYWNlKC9bLj8qK14kW1xcXVxcXFwoKXt9fC1dL2csICdcXFxcJCYnKTsgfVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5cbnZhciBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgZnV6enlMaW5rOiB0cnVlLFxuICBmdXp6eUVtYWlsOiB0cnVlLFxuICBmdXp6eUlQOiBmYWxzZVxufTtcblxuXG5mdW5jdGlvbiBpc09wdGlvbnNPYmoob2JqKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmogfHwge30pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrKSB7XG4gICAgcmV0dXJuIGFjYyB8fCBkZWZhdWx0T3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShrKTtcbiAgfSwgZmFsc2UpO1xufVxuXG5cbnZhciBkZWZhdWx0U2NoZW1hcyA9IHtcbiAgJ2h0dHA6Jzoge1xuICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAodGV4dCwgcG9zLCBzZWxmKSB7XG4gICAgICB2YXIgdGFpbCA9IHRleHQuc2xpY2UocG9zKTtcblxuICAgICAgaWYgKCFzZWxmLnJlLmh0dHApIHtcbiAgICAgICAgLy8gY29tcGlsZSBsYXppbHksIGJlY2F1c2UgXCJob3N0XCItY29udGFpbmluZyB2YXJpYWJsZXMgY2FuIGNoYW5nZSBvbiB0bGRzIHVwZGF0ZS5cbiAgICAgICAgc2VsZi5yZS5odHRwID0gIG5ldyBSZWdFeHAoXG4gICAgICAgICAgJ15cXFxcL1xcXFwvJyArIHNlbGYucmUuc3JjX2F1dGggKyBzZWxmLnJlLnNyY19ob3N0X3BvcnRfc3RyaWN0ICsgc2VsZi5yZS5zcmNfcGF0aCwgJ2knXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoc2VsZi5yZS5odHRwLnRlc3QodGFpbCkpIHtcbiAgICAgICAgcmV0dXJuIHRhaWwubWF0Y2goc2VsZi5yZS5odHRwKVswXS5sZW5ndGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH0sXG4gICdodHRwczonOiAgJ2h0dHA6JyxcbiAgJ2Z0cDonOiAgICAnaHR0cDonLFxuICAnLy8nOiAgICAgIHtcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKHRleHQsIHBvcywgc2VsZikge1xuICAgICAgdmFyIHRhaWwgPSB0ZXh0LnNsaWNlKHBvcyk7XG5cbiAgICAgIGlmICghc2VsZi5yZS5ub19odHRwKSB7XG4gICAgICAvLyBjb21waWxlIGxhemlseSwgYmVjYXVzZSBcImhvc3RcIi1jb250YWluaW5nIHZhcmlhYmxlcyBjYW4gY2hhbmdlIG9uIHRsZHMgdXBkYXRlLlxuICAgICAgICBzZWxmLnJlLm5vX2h0dHAgPSAgbmV3IFJlZ0V4cChcbiAgICAgICAgICAnXicgK1xuICAgICAgICAgIHNlbGYucmUuc3JjX2F1dGggK1xuICAgICAgICAgIC8vIERvbid0IGFsbG93IHNpbmdsZS1sZXZlbCBkb21haW5zLCBiZWNhdXNlIG9mIGZhbHNlIHBvc2l0aXZlcyBsaWtlICcvL3Rlc3QnXG4gICAgICAgICAgLy8gd2l0aCBjb2RlIGNvbW1lbnRzXG4gICAgICAgICAgJyg/OmxvY2FsaG9zdHwoPzooPzonICsgc2VsZi5yZS5zcmNfZG9tYWluICsgJylcXFxcLikrJyArIHNlbGYucmUuc3JjX2RvbWFpbl9yb290ICsgJyknICtcbiAgICAgICAgICBzZWxmLnJlLnNyY19wb3J0ICtcbiAgICAgICAgICBzZWxmLnJlLnNyY19ob3N0X3Rlcm1pbmF0b3IgK1xuICAgICAgICAgIHNlbGYucmUuc3JjX3BhdGgsXG5cbiAgICAgICAgICAnaSdcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGYucmUubm9faHR0cC50ZXN0KHRhaWwpKSB7XG4gICAgICAgIC8vIHNob3VsZCBub3QgYmUgYDovL2AgJiBgLy8vYCwgdGhhdCBwcm90ZWN0cyBmcm9tIGVycm9ycyBpbiBwcm90b2NvbCBuYW1lXG4gICAgICAgIGlmIChwb3MgPj0gMyAmJiB0ZXh0W3BvcyAtIDNdID09PSAnOicpIHsgcmV0dXJuIDA7IH1cbiAgICAgICAgaWYgKHBvcyA+PSAzICYmIHRleHRbcG9zIC0gM10gPT09ICcvJykgeyByZXR1cm4gMDsgfVxuICAgICAgICByZXR1cm4gdGFpbC5tYXRjaChzZWxmLnJlLm5vX2h0dHApWzBdLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSxcbiAgJ21haWx0bzonOiB7XG4gICAgdmFsaWRhdGU6IGZ1bmN0aW9uICh0ZXh0LCBwb3MsIHNlbGYpIHtcbiAgICAgIHZhciB0YWlsID0gdGV4dC5zbGljZShwb3MpO1xuXG4gICAgICBpZiAoIXNlbGYucmUubWFpbHRvKSB7XG4gICAgICAgIHNlbGYucmUubWFpbHRvID0gIG5ldyBSZWdFeHAoXG4gICAgICAgICAgJ14nICsgc2VsZi5yZS5zcmNfZW1haWxfbmFtZSArICdAJyArIHNlbGYucmUuc3JjX2hvc3Rfc3RyaWN0LCAnaSdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZWxmLnJlLm1haWx0by50ZXN0KHRhaWwpKSB7XG4gICAgICAgIHJldHVybiB0YWlsLm1hdGNoKHNlbGYucmUubWFpbHRvKVswXS5sZW5ndGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cbn07XG5cbi8qZXNsaW50LWRpc2FibGUgbWF4LWxlbiovXG5cbi8vIFJFIHBhdHRlcm4gZm9yIDItY2hhcmFjdGVyIHRsZHMgKGF1dG9nZW5lcmF0ZWQgYnkgLi9zdXBwb3J0L3RsZHNfMmNoYXJfZ2VuLmpzKVxudmFyIHRsZHNfMmNoX3NyY19yZSA9ICdhW2NkZWZnaWxtbm9xcnN0dXd4el18YlthYmRlZmdoaWptbm9yc3R2d3l6XXxjW2FjZGZnaGlrbG1ub3J1dnd4eXpdfGRbZWprbW96XXxlW2NlZ3JzdHVdfGZbaWprbW9yXXxnW2FiZGVmZ2hpbG1ucHFyc3R1d3ldfGhba21ucnR1XXxpW2RlbG1ub3Fyc3RdfGpbZW1vcF18a1tlZ2hpbW5wcnd5el18bFthYmNpa3JzdHV2eV18bVthY2RlZ2hrbG1ub3BxcnN0dXZ3eHl6XXxuW2FjZWZnaWxvcHJ1el18b218cFthZWZnaGtsbW5yc3R3eV18cWF8cltlb3N1d118c1thYmNkZWdoaWprbG1ub3J0dXZ4eXpdfHRbY2RmZ2hqa2xtbm9ydHZ3el18dVthZ2tzeXpdfHZbYWNlZ2ludV18d1tmc118eVtldF18elthbXddJztcblxuLy8gRE9OJ1QgdHJ5IHRvIG1ha2UgUFJzIHdpdGggY2hhbmdlcy4gRXh0ZW5kIFRMRHMgd2l0aCBMaW5raWZ5SXQudGxkcygpIGluc3RlYWRcbnZhciB0bGRzX2RlZmF1bHQgPSAnYml6fGNvbXxlZHV8Z292fG5ldHxvcmd8cHJvfHdlYnx4eHh8YWVyb3xhc2lhfGNvb3B8aW5mb3xtdXNldW18bmFtZXxzaG9wfNGA0YQnLnNwbGl0KCd8Jyk7XG5cbi8qZXNsaW50LWVuYWJsZSBtYXgtbGVuKi9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZnVuY3Rpb24gcmVzZXRTY2FuQ2FjaGUoc2VsZikge1xuICBzZWxmLl9faW5kZXhfXyA9IC0xO1xuICBzZWxmLl9fdGV4dF9jYWNoZV9fICAgPSAnJztcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmFsaWRhdG9yKHJlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGV4dCwgcG9zKSB7XG4gICAgdmFyIHRhaWwgPSB0ZXh0LnNsaWNlKHBvcyk7XG5cbiAgICBpZiAocmUudGVzdCh0YWlsKSkge1xuICAgICAgcmV0dXJuIHRhaWwubWF0Y2gocmUpWzBdLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU5vcm1hbGl6ZXIoKSB7XG4gIHJldHVybiBmdW5jdGlvbiAobWF0Y2gsIHNlbGYpIHtcbiAgICBzZWxmLm5vcm1hbGl6ZShtYXRjaCk7XG4gIH07XG59XG5cbi8vIFNjaGVtYXMgY29tcGlsZXIuIEJ1aWxkIHJlZ2V4cHMuXG4vL1xuZnVuY3Rpb24gY29tcGlsZShzZWxmKSB7XG5cbiAgLy8gTG9hZCAmIGNsb25lIFJFIHBhdHRlcm5zLlxuICB2YXIgcmUgPSBzZWxmLnJlID0gcmVxdWlyZSgnLi9saWIvcmUnKShzZWxmLl9fb3B0c19fKTtcblxuICAvLyBEZWZpbmUgZHluYW1pYyBwYXR0ZXJuc1xuICB2YXIgdGxkcyA9IHNlbGYuX190bGRzX18uc2xpY2UoKTtcblxuICBzZWxmLm9uQ29tcGlsZSgpO1xuXG4gIGlmICghc2VsZi5fX3RsZHNfcmVwbGFjZWRfXykge1xuICAgIHRsZHMucHVzaCh0bGRzXzJjaF9zcmNfcmUpO1xuICB9XG4gIHRsZHMucHVzaChyZS5zcmNfeG4pO1xuXG4gIHJlLnNyY190bGRzID0gdGxkcy5qb2luKCd8Jyk7XG5cbiAgZnVuY3Rpb24gdW50cGwodHBsKSB7IHJldHVybiB0cGwucmVwbGFjZSgnJVRMRFMlJywgcmUuc3JjX3RsZHMpOyB9XG5cbiAgcmUuZW1haWxfZnV6enkgICAgICA9IFJlZ0V4cCh1bnRwbChyZS50cGxfZW1haWxfZnV6enkpLCAnaScpO1xuICByZS5saW5rX2Z1enp5ICAgICAgID0gUmVnRXhwKHVudHBsKHJlLnRwbF9saW5rX2Z1enp5KSwgJ2knKTtcbiAgcmUubGlua19ub19pcF9mdXp6eSA9IFJlZ0V4cCh1bnRwbChyZS50cGxfbGlua19ub19pcF9mdXp6eSksICdpJyk7XG4gIHJlLmhvc3RfZnV6enlfdGVzdCAgPSBSZWdFeHAodW50cGwocmUudHBsX2hvc3RfZnV6enlfdGVzdCksICdpJyk7XG5cbiAgLy9cbiAgLy8gQ29tcGlsZSBlYWNoIHNjaGVtYVxuICAvL1xuXG4gIHZhciBhbGlhc2VzID0gW107XG5cbiAgc2VsZi5fX2NvbXBpbGVkX18gPSB7fTsgLy8gUmVzZXQgY29tcGlsZWQgZGF0YVxuXG4gIGZ1bmN0aW9uIHNjaGVtYUVycm9yKG5hbWUsIHZhbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignKExpbmtpZnlJdCkgSW52YWxpZCBzY2hlbWEgXCInICsgbmFtZSArICdcIjogJyArIHZhbCk7XG4gIH1cblxuICBPYmplY3Qua2V5cyhzZWxmLl9fc2NoZW1hc19fKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIHZhbCA9IHNlbGYuX19zY2hlbWFzX19bbmFtZV07XG5cbiAgICAvLyBza2lwIGRpc2FibGVkIG1ldGhvZHNcbiAgICBpZiAodmFsID09PSBudWxsKSB7IHJldHVybjsgfVxuXG4gICAgdmFyIGNvbXBpbGVkID0geyB2YWxpZGF0ZTogbnVsbCwgbGluazogbnVsbCB9O1xuXG4gICAgc2VsZi5fX2NvbXBpbGVkX19bbmFtZV0gPSBjb21waWxlZDtcblxuICAgIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAgICBpZiAoaXNSZWdFeHAodmFsLnZhbGlkYXRlKSkge1xuICAgICAgICBjb21waWxlZC52YWxpZGF0ZSA9IGNyZWF0ZVZhbGlkYXRvcih2YWwudmFsaWRhdGUpO1xuICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbC52YWxpZGF0ZSkpIHtcbiAgICAgICAgY29tcGlsZWQudmFsaWRhdGUgPSB2YWwudmFsaWRhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY2hlbWFFcnJvcihuYW1lLCB2YWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNGdW5jdGlvbih2YWwubm9ybWFsaXplKSkge1xuICAgICAgICBjb21waWxlZC5ub3JtYWxpemUgPSB2YWwubm9ybWFsaXplO1xuICAgICAgfSBlbHNlIGlmICghdmFsLm5vcm1hbGl6ZSkge1xuICAgICAgICBjb21waWxlZC5ub3JtYWxpemUgPSBjcmVhdGVOb3JtYWxpemVyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY2hlbWFFcnJvcihuYW1lLCB2YWwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKHZhbCkpIHtcbiAgICAgIGFsaWFzZXMucHVzaChuYW1lKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzY2hlbWFFcnJvcihuYW1lLCB2YWwpO1xuICB9KTtcblxuICAvL1xuICAvLyBDb21waWxlIHBvc3Rwb25lZCBhbGlhc2VzXG4gIC8vXG5cbiAgYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uIChhbGlhcykge1xuICAgIGlmICghc2VsZi5fX2NvbXBpbGVkX19bc2VsZi5fX3NjaGVtYXNfX1thbGlhc11dKSB7XG4gICAgICAvLyBTaWxlbnRseSBmYWlsIG9uIG1pc3NlZCBzY2hlbWFzIHRvIGF2b2lkIGVycm9ucyBvbiBkaXNhYmxlLlxuICAgICAgLy8gc2NoZW1hRXJyb3IoYWxpYXMsIHNlbGYuX19zY2hlbWFzX19bYWxpYXNdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLl9fY29tcGlsZWRfX1thbGlhc10udmFsaWRhdGUgPVxuICAgICAgc2VsZi5fX2NvbXBpbGVkX19bc2VsZi5fX3NjaGVtYXNfX1thbGlhc11dLnZhbGlkYXRlO1xuICAgIHNlbGYuX19jb21waWxlZF9fW2FsaWFzXS5ub3JtYWxpemUgPVxuICAgICAgc2VsZi5fX2NvbXBpbGVkX19bc2VsZi5fX3NjaGVtYXNfX1thbGlhc11dLm5vcm1hbGl6ZTtcbiAgfSk7XG5cbiAgLy9cbiAgLy8gRmFrZSByZWNvcmQgZm9yIGd1ZXNzZWQgbGlua3NcbiAgLy9cbiAgc2VsZi5fX2NvbXBpbGVkX19bJyddID0geyB2YWxpZGF0ZTogbnVsbCwgbm9ybWFsaXplOiBjcmVhdGVOb3JtYWxpemVyKCkgfTtcblxuICAvL1xuICAvLyBCdWlsZCBzY2hlbWEgY29uZGl0aW9uXG4gIC8vXG4gIHZhciBzbGlzdCA9IE9iamVjdC5rZXlzKHNlbGYuX19jb21waWxlZF9fKVxuICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbHRlciBkaXNhYmxlZCAmIGZha2Ugc2NoZW1hc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUubGVuZ3RoID4gMCAmJiBzZWxmLl9fY29tcGlsZWRfX1tuYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZXNjYXBlUkUpXG4gICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJ3wnKTtcbiAgLy8gKD8hXykgY2F1c2UgMS41eCBzbG93ZG93blxuICBzZWxmLnJlLnNjaGVtYV90ZXN0ICAgPSBSZWdFeHAoJyhefCg/IV8pKD86Wz48XFx1ZmY1Y118JyArIHJlLnNyY19aUENjICsgJykpKCcgKyBzbGlzdCArICcpJywgJ2knKTtcbiAgc2VsZi5yZS5zY2hlbWFfc2VhcmNoID0gUmVnRXhwKCcoXnwoPyFfKSg/Ols+PFxcdWZmNWNdfCcgKyByZS5zcmNfWlBDYyArICcpKSgnICsgc2xpc3QgKyAnKScsICdpZycpO1xuXG4gIHNlbGYucmUucHJldGVzdCA9IFJlZ0V4cChcbiAgICAnKCcgKyBzZWxmLnJlLnNjaGVtYV90ZXN0LnNvdXJjZSArICcpfCgnICsgc2VsZi5yZS5ob3N0X2Z1enp5X3Rlc3Quc291cmNlICsgJyl8QCcsXG4gICAgJ2knXG4gICk7XG5cbiAgLy9cbiAgLy8gQ2xlYW51cFxuICAvL1xuXG4gIHJlc2V0U2NhbkNhY2hlKHNlbGYpO1xufVxuXG4vKipcbiAqIGNsYXNzIE1hdGNoXG4gKlxuICogTWF0Y2ggcmVzdWx0LiBTaW5nbGUgZWxlbWVudCBvZiBhcnJheSwgcmV0dXJuZWQgYnkgW1tMaW5raWZ5SXQjbWF0Y2hdXVxuICoqL1xuZnVuY3Rpb24gTWF0Y2goc2VsZiwgc2hpZnQpIHtcbiAgdmFyIHN0YXJ0ID0gc2VsZi5fX2luZGV4X18sXG4gICAgICBlbmQgICA9IHNlbGYuX19sYXN0X2luZGV4X18sXG4gICAgICB0ZXh0ICA9IHNlbGYuX190ZXh0X2NhY2hlX18uc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgLyoqXG4gICAqIE1hdGNoI3NjaGVtYSAtPiBTdHJpbmdcbiAgICpcbiAgICogUHJlZml4IChwcm90b2NvbCkgZm9yIG1hdGNoZWQgc3RyaW5nLlxuICAgKiovXG4gIHRoaXMuc2NoZW1hICAgID0gc2VsZi5fX3NjaGVtYV9fLnRvTG93ZXJDYXNlKCk7XG4gIC8qKlxuICAgKiBNYXRjaCNpbmRleCAtPiBOdW1iZXJcbiAgICpcbiAgICogRmlyc3QgcG9zaXRpb24gb2YgbWF0Y2hlZCBzdHJpbmcuXG4gICAqKi9cbiAgdGhpcy5pbmRleCAgICAgPSBzdGFydCArIHNoaWZ0O1xuICAvKipcbiAgICogTWF0Y2gjbGFzdEluZGV4IC0+IE51bWJlclxuICAgKlxuICAgKiBOZXh0IHBvc2l0aW9uIGFmdGVyIG1hdGNoZWQgc3RyaW5nLlxuICAgKiovXG4gIHRoaXMubGFzdEluZGV4ID0gZW5kICsgc2hpZnQ7XG4gIC8qKlxuICAgKiBNYXRjaCNyYXcgLT4gU3RyaW5nXG4gICAqXG4gICAqIE1hdGNoZWQgc3RyaW5nLlxuICAgKiovXG4gIHRoaXMucmF3ICAgICAgID0gdGV4dDtcbiAgLyoqXG4gICAqIE1hdGNoI3RleHQgLT4gU3RyaW5nXG4gICAqXG4gICAqIE5vdG1hbGl6ZWQgdGV4dCBvZiBtYXRjaGVkIHN0cmluZy5cbiAgICoqL1xuICB0aGlzLnRleHQgICAgICA9IHRleHQ7XG4gIC8qKlxuICAgKiBNYXRjaCN1cmwgLT4gU3RyaW5nXG4gICAqXG4gICAqIE5vcm1hbGl6ZWQgdXJsIG9mIG1hdGNoZWQgc3RyaW5nLlxuICAgKiovXG4gIHRoaXMudXJsICAgICAgID0gdGV4dDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTWF0Y2goc2VsZiwgc2hpZnQpIHtcbiAgdmFyIG1hdGNoID0gbmV3IE1hdGNoKHNlbGYsIHNoaWZ0KTtcblxuICBzZWxmLl9fY29tcGlsZWRfX1ttYXRjaC5zY2hlbWFdLm5vcm1hbGl6ZShtYXRjaCwgc2VsZik7XG5cbiAgcmV0dXJuIG1hdGNoO1xufVxuXG5cbi8qKlxuICogY2xhc3MgTGlua2lmeUl0XG4gKiovXG5cbi8qKlxuICogbmV3IExpbmtpZnlJdChzY2hlbWFzLCBvcHRpb25zKVxuICogLSBzY2hlbWFzIChPYmplY3QpOiBPcHRpb25hbC4gQWRkaXRpb25hbCBzY2hlbWFzIHRvIHZhbGlkYXRlIChwcmVmaXgvdmFsaWRhdG9yKVxuICogLSBvcHRpb25zIChPYmplY3QpOiB7IGZ1enp5TGlua3xmdXp6eUVtYWlsfGZ1enp5SVA6IHRydWV8ZmFsc2UgfVxuICpcbiAqIENyZWF0ZXMgbmV3IGxpbmtpZmllciBpbnN0YW5jZSB3aXRoIG9wdGlvbmFsIGFkZGl0aW9uYWwgc2NoZW1hcy5cbiAqIENhbiBiZSBjYWxsZWQgd2l0aG91dCBgbmV3YCBrZXl3b3JkIGZvciBjb252ZW5pZW5jZS5cbiAqXG4gKiBCeSBkZWZhdWx0IHVuZGVyc3RhbmRzOlxuICpcbiAqIC0gYGh0dHAocyk6Ly8uLi5gICwgYGZ0cDovLy4uLmAsIGBtYWlsdG86Li4uYCAmIGAvLy4uLmAgbGlua3NcbiAqIC0gXCJmdXp6eVwiIGxpbmtzIGFuZCBlbWFpbHMgKGV4YW1wbGUuY29tLCBmb29AYmFyLmNvbSkuXG4gKlxuICogYHNjaGVtYXNgIGlzIGFuIG9iamVjdCwgd2hlcmUgZWFjaCBrZXkvdmFsdWUgZGVzY3JpYmVzIHByb3RvY29sL3J1bGU6XG4gKlxuICogLSBfX2tleV9fIC0gbGluayBwcmVmaXggKHVzdWFsbHksIHByb3RvY29sIG5hbWUgd2l0aCBgOmAgYXQgdGhlIGVuZCwgYHNreXBlOmBcbiAqICAgZm9yIGV4YW1wbGUpLiBgbGlua2lmeS1pdGAgbWFrZXMgc2h1cmUgdGhhdCBwcmVmaXggaXMgbm90IHByZWNlZWRlZCB3aXRoXG4gKiAgIGFscGhhbnVtZXJpYyBjaGFyIGFuZCBzeW1ib2xzLiBPbmx5IHdoaXRlc3BhY2VzIGFuZCBwdW5jdHVhdGlvbiBhbGxvd2VkLlxuICogLSBfX3ZhbHVlX18gLSBydWxlIHRvIGNoZWNrIHRhaWwgYWZ0ZXIgbGluayBwcmVmaXhcbiAqICAgLSBfU3RyaW5nXyAtIGp1c3QgYWxpYXMgdG8gZXhpc3RpbmcgcnVsZVxuICogICAtIF9PYmplY3RfXG4gKiAgICAgLSBfdmFsaWRhdGVfIC0gdmFsaWRhdG9yIGZ1bmN0aW9uIChzaG91bGQgcmV0dXJuIG1hdGNoZWQgbGVuZ3RoIG9uIHN1Y2Nlc3MpLFxuICogICAgICAgb3IgYFJlZ0V4cGAuXG4gKiAgICAgLSBfbm9ybWFsaXplXyAtIG9wdGlvbmFsIGZ1bmN0aW9uIHRvIG5vcm1hbGl6ZSB0ZXh0ICYgdXJsIG9mIG1hdGNoZWQgcmVzdWx0XG4gKiAgICAgICAoZm9yIGV4YW1wbGUsIGZvciBAdHdpdHRlciBtZW50aW9ucykuXG4gKlxuICogYG9wdGlvbnNgOlxuICpcbiAqIC0gX19mdXp6eUxpbmtfXyAtIHJlY29nbmlnZSBVUkwtcyB3aXRob3V0IGBodHRwKHMpOmAgcHJlZml4LiBEZWZhdWx0IGB0cnVlYC5cbiAqIC0gX19mdXp6eUlQX18gLSBhbGxvdyBJUHMgaW4gZnV6enkgbGlua3MgYWJvdmUuIENhbiBjb25mbGljdCB3aXRoIHNvbWUgdGV4dHNcbiAqICAgbGlrZSB2ZXJzaW9uIG51bWJlcnMuIERlZmF1bHQgYGZhbHNlYC5cbiAqIC0gX19mdXp6eUVtYWlsX18gLSByZWNvZ25pemUgZW1haWxzIHdpdGhvdXQgYG1haWx0bzpgIHByZWZpeC5cbiAqXG4gKiovXG5mdW5jdGlvbiBMaW5raWZ5SXQoc2NoZW1hcywgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTGlua2lmeUl0KSkge1xuICAgIHJldHVybiBuZXcgTGlua2lmeUl0KHNjaGVtYXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgaWYgKGlzT3B0aW9uc09iaihzY2hlbWFzKSkge1xuICAgICAgb3B0aW9ucyA9IHNjaGVtYXM7XG4gICAgICBzY2hlbWFzID0ge307XG4gICAgfVxuICB9XG5cbiAgdGhpcy5fX29wdHNfXyAgICAgICAgICAgPSBhc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcblxuICAvLyBDYWNoZSBsYXN0IHRlc3RlZCByZXN1bHQuIFVzZWQgdG8gc2tpcCByZXBlYXRpbmcgc3RlcHMgb24gbmV4dCBgbWF0Y2hgIGNhbGwuXG4gIHRoaXMuX19pbmRleF9fICAgICAgICAgID0gLTE7XG4gIHRoaXMuX19sYXN0X2luZGV4X18gICAgID0gLTE7IC8vIE5leHQgc2NhbiBwb3NpdGlvblxuICB0aGlzLl9fc2NoZW1hX18gICAgICAgICA9ICcnO1xuICB0aGlzLl9fdGV4dF9jYWNoZV9fICAgICA9ICcnO1xuXG4gIHRoaXMuX19zY2hlbWFzX18gICAgICAgID0gYXNzaWduKHt9LCBkZWZhdWx0U2NoZW1hcywgc2NoZW1hcyk7XG4gIHRoaXMuX19jb21waWxlZF9fICAgICAgID0ge307XG5cbiAgdGhpcy5fX3RsZHNfXyAgICAgICAgICAgPSB0bGRzX2RlZmF1bHQ7XG4gIHRoaXMuX190bGRzX3JlcGxhY2VkX18gID0gZmFsc2U7XG5cbiAgdGhpcy5yZSA9IHt9O1xuXG4gIGNvbXBpbGUodGhpcyk7XG59XG5cblxuLyoqIGNoYWluYWJsZVxuICogTGlua2lmeUl0I2FkZChzY2hlbWEsIGRlZmluaXRpb24pXG4gKiAtIHNjaGVtYSAoU3RyaW5nKTogcnVsZSBuYW1lIChmaXhlZCBwYXR0ZXJuIHByZWZpeClcbiAqIC0gZGVmaW5pdGlvbiAoU3RyaW5nfFJlZ0V4cHxPYmplY3QpOiBzY2hlbWEgZGVmaW5pdGlvblxuICpcbiAqIEFkZCBuZXcgcnVsZSBkZWZpbml0aW9uLiBTZWUgY29uc3RydWN0b3IgZGVzY3JpcHRpb24gZm9yIGRldGFpbHMuXG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChzY2hlbWEsIGRlZmluaXRpb24pIHtcbiAgdGhpcy5fX3NjaGVtYXNfX1tzY2hlbWFdID0gZGVmaW5pdGlvbjtcbiAgY29tcGlsZSh0aGlzKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5cbi8qKiBjaGFpbmFibGVcbiAqIExpbmtpZnlJdCNzZXQob3B0aW9ucylcbiAqIC0gb3B0aW9ucyAoT2JqZWN0KTogeyBmdXp6eUxpbmt8ZnV6enlFbWFpbHxmdXp6eUlQOiB0cnVlfGZhbHNlIH1cbiAqXG4gKiBTZXQgcmVjb2duaXRpb24gb3B0aW9ucyBmb3IgbGlua3Mgd2l0aG91dCBzY2hlbWEuXG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIHNldChvcHRpb25zKSB7XG4gIHRoaXMuX19vcHRzX18gPSBhc3NpZ24odGhpcy5fX29wdHNfXywgb3B0aW9ucyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuXG4vKipcbiAqIExpbmtpZnlJdCN0ZXN0KHRleHQpIC0+IEJvb2xlYW5cbiAqXG4gKiBTZWFyY2hlcyBsaW5raWZpYWJsZSBwYXR0ZXJuIGFuZCByZXR1cm5zIGB0cnVlYCBvbiBzdWNjZXNzIG9yIGBmYWxzZWAgb24gZmFpbC5cbiAqKi9cbkxpbmtpZnlJdC5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uIHRlc3QodGV4dCkge1xuICAvLyBSZXNldCBzY2FuIGNhY2hlXG4gIHRoaXMuX190ZXh0X2NhY2hlX18gPSB0ZXh0O1xuICB0aGlzLl9faW5kZXhfXyAgICAgID0gLTE7XG5cbiAgaWYgKCF0ZXh0Lmxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICB2YXIgbSwgbWwsIG1lLCBsZW4sIHNoaWZ0LCBuZXh0LCByZSwgdGxkX3BvcywgYXRfcG9zO1xuXG4gIC8vIHRyeSB0byBzY2FuIGZvciBsaW5rIHdpdGggc2NoZW1hIC0gdGhhdCdzIHRoZSBtb3N0IHNpbXBsZSBydWxlXG4gIGlmICh0aGlzLnJlLnNjaGVtYV90ZXN0LnRlc3QodGV4dCkpIHtcbiAgICByZSA9IHRoaXMucmUuc2NoZW1hX3NlYXJjaDtcbiAgICByZS5sYXN0SW5kZXggPSAwO1xuICAgIHdoaWxlICgobSA9IHJlLmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBsZW4gPSB0aGlzLnRlc3RTY2hlbWFBdCh0ZXh0LCBtWzJdLCByZS5sYXN0SW5kZXgpO1xuICAgICAgaWYgKGxlbikge1xuICAgICAgICB0aGlzLl9fc2NoZW1hX18gICAgID0gbVsyXTtcbiAgICAgICAgdGhpcy5fX2luZGV4X18gICAgICA9IG0uaW5kZXggKyBtWzFdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5fX2xhc3RfaW5kZXhfXyA9IG0uaW5kZXggKyBtWzBdLmxlbmd0aCArIGxlbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoaXMuX19vcHRzX18uZnV6enlMaW5rICYmIHRoaXMuX19jb21waWxlZF9fWydodHRwOiddKSB7XG4gICAgLy8gZ3Vlc3Mgc2NoZW1hbGVzcyBsaW5rc1xuICAgIHRsZF9wb3MgPSB0ZXh0LnNlYXJjaCh0aGlzLnJlLmhvc3RfZnV6enlfdGVzdCk7XG4gICAgaWYgKHRsZF9wb3MgPj0gMCkge1xuICAgICAgLy8gaWYgdGxkIGlzIGxvY2F0ZWQgYWZ0ZXIgZm91bmQgbGluayAtIG5vIG5lZWQgdG8gY2hlY2sgZnV6enkgcGF0dGVyblxuICAgICAgaWYgKHRoaXMuX19pbmRleF9fIDwgMCB8fCB0bGRfcG9zIDwgdGhpcy5fX2luZGV4X18pIHtcbiAgICAgICAgaWYgKChtbCA9IHRleHQubWF0Y2godGhpcy5fX29wdHNfXy5mdXp6eUlQID8gdGhpcy5yZS5saW5rX2Z1enp5IDogdGhpcy5yZS5saW5rX25vX2lwX2Z1enp5KSkgIT09IG51bGwpIHtcblxuICAgICAgICAgIHNoaWZ0ID0gbWwuaW5kZXggKyBtbFsxXS5sZW5ndGg7XG5cbiAgICAgICAgICBpZiAodGhpcy5fX2luZGV4X18gPCAwIHx8IHNoaWZ0IDwgdGhpcy5fX2luZGV4X18pIHtcbiAgICAgICAgICAgIHRoaXMuX19zY2hlbWFfXyAgICAgPSAnJztcbiAgICAgICAgICAgIHRoaXMuX19pbmRleF9fICAgICAgPSBzaGlmdDtcbiAgICAgICAgICAgIHRoaXMuX19sYXN0X2luZGV4X18gPSBtbC5pbmRleCArIG1sWzBdLmxlbmd0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy5fX29wdHNfXy5mdXp6eUVtYWlsICYmIHRoaXMuX19jb21waWxlZF9fWydtYWlsdG86J10pIHtcbiAgICAvLyBndWVzcyBzY2hlbWFsZXNzIGVtYWlsc1xuICAgIGF0X3BvcyA9IHRleHQuaW5kZXhPZignQCcpO1xuICAgIGlmIChhdF9wb3MgPj0gMCkge1xuICAgICAgLy8gV2UgY2FuJ3Qgc2tpcCB0aGlzIGNoZWNrLCBiZWNhdXNlIHRoaXMgY2FzZXMgYXJlIHBvc3NpYmxlOlxuICAgICAgLy8gMTkyLjE2OC4xLjFAZ21haWwuY29tLCBteS5pbkBleGFtcGxlLmNvbVxuICAgICAgaWYgKChtZSA9IHRleHQubWF0Y2godGhpcy5yZS5lbWFpbF9mdXp6eSkpICE9PSBudWxsKSB7XG5cbiAgICAgICAgc2hpZnQgPSBtZS5pbmRleCArIG1lWzFdLmxlbmd0aDtcbiAgICAgICAgbmV4dCAgPSBtZS5pbmRleCArIG1lWzBdLmxlbmd0aDtcblxuICAgICAgICBpZiAodGhpcy5fX2luZGV4X18gPCAwIHx8IHNoaWZ0IDwgdGhpcy5fX2luZGV4X18gfHxcbiAgICAgICAgICAgIChzaGlmdCA9PT0gdGhpcy5fX2luZGV4X18gJiYgbmV4dCA+IHRoaXMuX19sYXN0X2luZGV4X18pKSB7XG4gICAgICAgICAgdGhpcy5fX3NjaGVtYV9fICAgICA9ICdtYWlsdG86JztcbiAgICAgICAgICB0aGlzLl9faW5kZXhfXyAgICAgID0gc2hpZnQ7XG4gICAgICAgICAgdGhpcy5fX2xhc3RfaW5kZXhfXyA9IG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcy5fX2luZGV4X18gPj0gMDtcbn07XG5cblxuLyoqXG4gKiBMaW5raWZ5SXQjcHJldGVzdCh0ZXh0KSAtPiBCb29sZWFuXG4gKlxuICogVmVyeSBxdWljayBjaGVjaywgdGhhdCBjYW4gZ2l2ZSBmYWxzZSBwb3NpdGl2ZXMuIFJldHVybnMgdHJ1ZSBpZiBsaW5rIE1BWSBCRVxuICogY2FuIGV4aXN0cy4gQ2FuIGJlIHVzZWQgZm9yIHNwZWVkIG9wdGltaXphdGlvbiwgd2hlbiB5b3UgbmVlZCB0byBjaGVjayB0aGF0XG4gKiBsaW5rIE5PVCBleGlzdHMuXG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLnByZXRlc3QgPSBmdW5jdGlvbiBwcmV0ZXN0KHRleHQpIHtcbiAgcmV0dXJuIHRoaXMucmUucHJldGVzdC50ZXN0KHRleHQpO1xufTtcblxuXG4vKipcbiAqIExpbmtpZnlJdCN0ZXN0U2NoZW1hQXQodGV4dCwgbmFtZSwgcG9zaXRpb24pIC0+IE51bWJlclxuICogLSB0ZXh0IChTdHJpbmcpOiB0ZXh0IHRvIHNjYW5cbiAqIC0gbmFtZSAoU3RyaW5nKTogcnVsZSAoc2NoZW1hKSBuYW1lXG4gKiAtIHBvc2l0aW9uIChOdW1iZXIpOiB0ZXh0IG9mZnNldCB0byBjaGVjayBmcm9tXG4gKlxuICogU2ltaWxhciB0byBbW0xpbmtpZnlJdCN0ZXN0XV0gYnV0IGNoZWNrcyBvbmx5IHNwZWNpZmljIHByb3RvY29sIHRhaWwgZXhhY3RseVxuICogYXQgZ2l2ZW4gcG9zaXRpb24uIFJldHVybnMgbGVuZ3RoIG9mIGZvdW5kIHBhdHRlcm4gKDAgb24gZmFpbCkuXG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLnRlc3RTY2hlbWFBdCA9IGZ1bmN0aW9uIHRlc3RTY2hlbWFBdCh0ZXh0LCBzY2hlbWEsIHBvcykge1xuICAvLyBJZiBub3Qgc3VwcG9ydGVkIHNjaGVtYSBjaGVjayByZXF1ZXN0ZWQgLSB0ZXJtaW5hdGVcbiAgaWYgKCF0aGlzLl9fY29tcGlsZWRfX1tzY2hlbWEudG9Mb3dlckNhc2UoKV0pIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICByZXR1cm4gdGhpcy5fX2NvbXBpbGVkX19bc2NoZW1hLnRvTG93ZXJDYXNlKCldLnZhbGlkYXRlKHRleHQsIHBvcywgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogTGlua2lmeUl0I21hdGNoKHRleHQpIC0+IEFycmF5fG51bGxcbiAqXG4gKiBSZXR1cm5zIGFycmF5IG9mIGZvdW5kIGxpbmsgZGVzY3JpcHRpb25zIG9yIGBudWxsYCBvbiBmYWlsLiBXZSBzdHJvbmdseVxuICogcmVjb21tZW5kIHRvIHVzZSBbW0xpbmtpZnlJdCN0ZXN0XV0gZmlyc3QsIGZvciBiZXN0IHNwZWVkLlxuICpcbiAqICMjIyMjIFJlc3VsdCBtYXRjaCBkZXNjcmlwdGlvblxuICpcbiAqIC0gX19zY2hlbWFfXyAtIGxpbmsgc2NoZW1hLCBjYW4gYmUgZW1wdHkgZm9yIGZ1enp5IGxpbmtzLCBvciBgLy9gIGZvclxuICogICBwcm90b2NvbC1uZXV0cmFsICBsaW5rcy5cbiAqIC0gX19pbmRleF9fIC0gb2Zmc2V0IG9mIG1hdGNoZWQgdGV4dFxuICogLSBfX2xhc3RJbmRleF9fIC0gaW5kZXggb2YgbmV4dCBjaGFyIGFmdGVyIG1hdGhjaCBlbmRcbiAqIC0gX19yYXdfXyAtIG1hdGNoZWQgdGV4dFxuICogLSBfX3RleHRfXyAtIG5vcm1hbGl6ZWQgdGV4dFxuICogLSBfX3VybF9fIC0gbGluaywgZ2VuZXJhdGVkIGZyb20gbWF0Y2hlZCB0ZXh0XG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gbWF0Y2godGV4dCkge1xuICB2YXIgc2hpZnQgPSAwLCByZXN1bHQgPSBbXTtcblxuICAvLyBUcnkgdG8gdGFrZSBwcmV2aW91cyBlbGVtZW50IGZyb20gY2FjaGUsIGlmIC50ZXN0KCkgY2FsbGVkIGJlZm9yZVxuICBpZiAodGhpcy5fX2luZGV4X18gPj0gMCAmJiB0aGlzLl9fdGV4dF9jYWNoZV9fID09PSB0ZXh0KSB7XG4gICAgcmVzdWx0LnB1c2goY3JlYXRlTWF0Y2godGhpcywgc2hpZnQpKTtcbiAgICBzaGlmdCA9IHRoaXMuX19sYXN0X2luZGV4X187XG4gIH1cblxuICAvLyBDdXQgaGVhZCBpZiBjYWNoZSB3YXMgdXNlZFxuICB2YXIgdGFpbCA9IHNoaWZ0ID8gdGV4dC5zbGljZShzaGlmdCkgOiB0ZXh0O1xuXG4gIC8vIFNjYW4gc3RyaW5nIHVudGlsIGVuZCByZWFjaGVkXG4gIHdoaWxlICh0aGlzLnRlc3QodGFpbCkpIHtcbiAgICByZXN1bHQucHVzaChjcmVhdGVNYXRjaCh0aGlzLCBzaGlmdCkpO1xuXG4gICAgdGFpbCA9IHRhaWwuc2xpY2UodGhpcy5fX2xhc3RfaW5kZXhfXyk7XG4gICAgc2hpZnQgKz0gdGhpcy5fX2xhc3RfaW5kZXhfXztcbiAgfVxuXG4gIGlmIChyZXN1bHQubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuXG4vKiogY2hhaW5hYmxlXG4gKiBMaW5raWZ5SXQjdGxkcyhsaXN0IFssIGtlZXBPbGRdKSAtPiB0aGlzXG4gKiAtIGxpc3QgKEFycmF5KTogbGlzdCBvZiB0bGRzXG4gKiAtIGtlZXBPbGQgKEJvb2xlYW4pOiBtZXJnZSB3aXRoIGN1cnJlbnQgbGlzdCBpZiBgdHJ1ZWAgKGBmYWxzZWAgYnkgZGVmYXVsdClcbiAqXG4gKiBMb2FkIChvciBtZXJnZSkgbmV3IHRsZHMgbGlzdC4gVGhvc2UgYXJlIHVzZXIgZm9yIGZ1enp5IGxpbmtzICh3aXRob3V0IHByZWZpeClcbiAqIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcy4gQnkgZGVmYXVsdCB0aGlzIGFsZ29yeXRobSB1c2VkOlxuICpcbiAqIC0gaG9zdG5hbWUgd2l0aCBhbnkgMi1sZXR0ZXIgcm9vdCB6b25lcyBhcmUgb2suXG4gKiAtIGJpenxjb218ZWR1fGdvdnxuZXR8b3JnfHByb3x3ZWJ8eHh4fGFlcm98YXNpYXxjb29wfGluZm98bXVzZXVtfG5hbWV8c2hvcHzRgNGEXG4gKiAgIGFyZSBvay5cbiAqIC0gZW5jb2RlZCAoYHhuLS0uLi5gKSByb290IHpvbmVzIGFyZSBvay5cbiAqXG4gKiBJZiBsaXN0IGlzIHJlcGxhY2VkLCB0aGVuIGV4YWN0IG1hdGNoIGZvciAyLWNoYXJzIHJvb3Qgem9uZXMgd2lsbCBiZSBjaGVja2VkLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS50bGRzID0gZnVuY3Rpb24gdGxkcyhsaXN0LCBrZWVwT2xkKSB7XG4gIGxpc3QgPSBBcnJheS5pc0FycmF5KGxpc3QpID8gbGlzdCA6IFsgbGlzdCBdO1xuXG4gIGlmICgha2VlcE9sZCkge1xuICAgIHRoaXMuX190bGRzX18gPSBsaXN0LnNsaWNlKCk7XG4gICAgdGhpcy5fX3RsZHNfcmVwbGFjZWRfXyA9IHRydWU7XG4gICAgY29tcGlsZSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRoaXMuX190bGRzX18gPSB0aGlzLl9fdGxkc19fLmNvbmNhdChsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChlbCwgaWR4LCBhcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbCAhPT0gYXJyW2lkeCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJldmVyc2UoKTtcblxuICBjb21waWxlKHRoaXMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogTGlua2lmeUl0I25vcm1hbGl6ZShtYXRjaClcbiAqXG4gKiBEZWZhdWx0IG5vcm1hbGl6ZXIgKGlmIHNjaGVtYSBkb2VzIG5vdCBkZWZpbmUgaXQncyBvd24pLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUobWF0Y2gpIHtcblxuICAvLyBEbyBtaW5pbWFsIHBvc3NpYmxlIGNoYW5nZXMgYnkgZGVmYXVsdC4gTmVlZCB0byBjb2xsZWN0IGZlZWRiYWNrIHByaW9yXG4gIC8vIHRvIG1vdmUgZm9yd2FyZCBodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbGlua2lmeS1pdC9pc3N1ZXMvMVxuXG4gIGlmICghbWF0Y2guc2NoZW1hKSB7IG1hdGNoLnVybCA9ICdodHRwOi8vJyArIG1hdGNoLnVybDsgfVxuXG4gIGlmIChtYXRjaC5zY2hlbWEgPT09ICdtYWlsdG86JyAmJiAhL15tYWlsdG86L2kudGVzdChtYXRjaC51cmwpKSB7XG4gICAgbWF0Y2gudXJsID0gJ21haWx0bzonICsgbWF0Y2gudXJsO1xuICB9XG59O1xuXG5cbi8qKlxuICogTGlua2lmeUl0I29uQ29tcGlsZSgpXG4gKlxuICogT3ZlcnJpZGUgdG8gbW9kaWZ5IGJhc2ljIFJlZ0V4cC1zLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS5vbkNvbXBpbGUgPSBmdW5jdGlvbiBvbkNvbXBpbGUoKSB7XG59O1xuXG5cbm1vZHVsZS5leHBvcnRzID0gTGlua2lmeUl0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFkQTtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTNCQTtBQTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBYkE7QUFoREE7QUFpRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFHQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/linkify-it/index.js\n");
|
1668 |
|
1669 | }),
|
1670 |
|
1671 | "../../../node_modules/linkify-it/lib/re.js":
|
1672 |
|
1673 |
|
1674 |
|
1675 |
|
1676 | (function(module, exports, __webpack_require__) {
|
1677 |
|
1678 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n module.exports = function (opts) {\n var re = {}; // Use direct extract instead of `regenerate` to reduse browserified size\n\n re.src_Any = __webpack_require__(/*! uc.micro/properties/Any/regex */ \"../../../node_modules/uc.micro/properties/Any/regex.js\").source;\n re.src_Cc = __webpack_require__(/*! uc.micro/categories/Cc/regex */ \"../../../node_modules/uc.micro/categories/Cc/regex.js\").source;\n re.src_Z = __webpack_require__(/*! uc.micro/categories/Z/regex */ \"../../../node_modules/uc.micro/categories/Z/regex.js\").source;\n re.src_P = __webpack_require__(/*! uc.micro/categories/P/regex */ \"../../../node_modules/uc.micro/categories/P/regex.js\").source; // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n\n re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join('|'); // \\p{\\Z\\Cc} (white spaces + control)\n\n re.src_ZCc = [re.src_Z, re.src_Cc].join('|'); // Experimental. List of chars, completely prohibited in links\n // because can separate it from other part of text\n\n var text_separators = '[><\\uff5c]'; // All possible word characters (everything without punctuation, spaces & controls)\n // Defined via punctuation & spaces to save space\n // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n\n re.src_pseudo_letter = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')'; // The same as abothe but without [0-9]\n // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n ////////////////////////////////////////////////////////////////////////////////\n\n re.src_ip4 = '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'; // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n\n re.src_auth = '(?:(?:(?!' + re.src_ZCc + '|[@/\\\\[\\\\]()]).)+@)?';\n re.src_port = '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?';\n re.src_host_terminator = '(?=$|' + text_separators + '|' + re.src_ZPCc + ')(?!-|_|:\\\\d|\\\\.-|\\\\.(?!$|' + re.src_ZPCc + '))';\n re.src_path = '(?:' + '[/?#]' + '(?:' + '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\\\]{}.,\"\\'?!\\\\-;]).|' + '\\\\[(?:(?!' + re.src_ZCc + '|\\\\]).)*\\\\]|' + '\\\\((?:(?!' + re.src_ZCc + '|[)]).)*\\\\)|' + '\\\\{(?:(?!' + re.src_ZCc + '|[}]).)*\\\\}|' + '\\\\\"(?:(?!' + re.src_ZCc + '|[\"]).)+\\\\\"|' + \"\\\\'(?:(?!\" + re.src_ZCc + \"|[']).)+\\\\'|\" + \"\\\\'(?=\" + re.src_pseudo_letter + '|[-]).|' + // allow `I'm_king` if no pair found\n '\\\\.{2,}[a-zA-Z0-9%/&]|' + // google has many dots in \"google search\" links (#66, #81).\n // github has ... in commit range links,\n // Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // - params separator\n // until more examples found.\n '\\\\.(?!' + re.src_ZCc + '|[.]).|' + (opts && opts['---'] ? '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n : '\\\\-+|') + ',(?!' + re.src_ZCc + ').|' + // allow `,,,` in paths\n ';(?!' + re.src_ZCc + ').|' + // allow `;` if not followed by space-like char\n '\\\\!+(?!' + re.src_ZCc + '|[!]).|' + // allow `!!!` in paths, but not at the end\n '\\\\?(?!' + re.src_ZCc + '|[?]).' + ')+' + '|\\\\/' + ')?'; // Allow anything in markdown spec, forbid quote (\") at the first position\n // because emails enclosed in quotes are far more common\n\n re.src_email_name = '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*';\n re.src_xn = 'xn--[a-z0-9\\\\-]{1,59}'; // More to read about domain names\n // http://serverfault.com/questions/638260/\n\n re.src_domain_root = // Allow letters & digits (http://test1)\n '(?:' + re.src_xn + '|' + re.src_pseudo_letter + '{1,63}' + ')';\n re.src_domain = '(?:' + re.src_xn + '|' + '(?:' + re.src_pseudo_letter + ')' + '|' + '(?:' + re.src_pseudo_letter + '(?:-|' + re.src_pseudo_letter + '){0,61}' + re.src_pseudo_letter + ')' + ')';\n re.src_host = '(?:' + // Don't need IP check, because digits are already allowed in normal domain names\n // src_ip4 +\n // '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)*' + re.src_domain\n /*_root*/\n + ')' + ')';\n re.tpl_host_fuzzy = '(?:' + re.src_ip4 + '|' + '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))' + ')';\n re.tpl_host_no_ip_fuzzy = '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))';\n re.src_host_strict = re.src_host + re.src_host_terminator;\n re.tpl_host_fuzzy_strict = re.tpl_host_fuzzy + re.src_host_terminator;\n re.src_host_port_strict = re.src_host + re.src_port + re.src_host_terminator;\n re.tpl_host_port_fuzzy_strict = re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;\n re.tpl_host_port_no_ip_fuzzy_strict = re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator; ////////////////////////////////////////////////////////////////////////////////\n // Main rules\n // Rude test fuzzy links by host, for quick deny\n\n re.tpl_host_fuzzy_test = 'localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:' + re.src_ZPCc + '|>|$))';\n re.tpl_email_fuzzy = '(^|' + text_separators + '|\"|\\\\(|' + re.src_ZCc + ')' + '(' + re.src_email_name + '@' + re.tpl_host_fuzzy_strict + ')';\n re.tpl_link_fuzzy = // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' + '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_fuzzy_strict + re.src_path + ')';\n re.tpl_link_no_ip_fuzzy = // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' + '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ')';\n return re;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xpbmtpZnktaXQvbGliL3JlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2xpbmtpZnktaXQvbGliL3JlLmpzP2U0ZGMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdHMpIHtcbiAgdmFyIHJlID0ge307XG5cbiAgLy8gVXNlIGRpcmVjdCBleHRyYWN0IGluc3RlYWQgb2YgYHJlZ2VuZXJhdGVgIHRvIHJlZHVzZSBicm93c2VyaWZpZWQgc2l6ZVxuICByZS5zcmNfQW55ID0gcmVxdWlyZSgndWMubWljcm8vcHJvcGVydGllcy9BbnkvcmVnZXgnKS5zb3VyY2U7XG4gIHJlLnNyY19DYyAgPSByZXF1aXJlKCd1Yy5taWNyby9jYXRlZ29yaWVzL0NjL3JlZ2V4Jykuc291cmNlO1xuICByZS5zcmNfWiAgID0gcmVxdWlyZSgndWMubWljcm8vY2F0ZWdvcmllcy9aL3JlZ2V4Jykuc291cmNlO1xuICByZS5zcmNfUCAgID0gcmVxdWlyZSgndWMubWljcm8vY2F0ZWdvcmllcy9QL3JlZ2V4Jykuc291cmNlO1xuXG4gIC8vIFxccHtcXFpcXFBcXENjXFxDRn0gKHdoaXRlIHNwYWNlcyArIGNvbnRyb2wgKyBmb3JtYXQgKyBwdW5jdHVhdGlvbilcbiAgcmUuc3JjX1pQQ2MgPSBbIHJlLnNyY19aLCByZS5zcmNfUCwgcmUuc3JjX0NjIF0uam9pbignfCcpO1xuXG4gIC8vIFxccHtcXFpcXENjfSAod2hpdGUgc3BhY2VzICsgY29udHJvbClcbiAgcmUuc3JjX1pDYyA9IFsgcmUuc3JjX1osIHJlLnNyY19DYyBdLmpvaW4oJ3wnKTtcblxuICAvLyBFeHBlcmltZW50YWwuIExpc3Qgb2YgY2hhcnMsIGNvbXBsZXRlbHkgcHJvaGliaXRlZCBpbiBsaW5rc1xuICAvLyBiZWNhdXNlIGNhbiBzZXBhcmF0ZSBpdCBmcm9tIG90aGVyIHBhcnQgb2YgdGV4dFxuICB2YXIgdGV4dF9zZXBhcmF0b3JzID0gJ1s+PFxcdWZmNWNdJztcblxuICAvLyBBbGwgcG9zc2libGUgd29yZCBjaGFyYWN0ZXJzIChldmVyeXRoaW5nIHdpdGhvdXQgcHVuY3R1YXRpb24sIHNwYWNlcyAmIGNvbnRyb2xzKVxuICAvLyBEZWZpbmVkIHZpYSBwdW5jdHVhdGlvbiAmIHNwYWNlcyB0byBzYXZlIHNwYWNlXG4gIC8vIFNob3VsZCBiZSBzb21ldGhpbmcgbGlrZSBcXHB7XFxMXFxOXFxTXFxNfSAoXFx3IGJ1dCB3aXRob3V0IGBfYClcbiAgcmUuc3JjX3BzZXVkb19sZXR0ZXIgICAgICAgPSAnKD86KD8hJyArIHRleHRfc2VwYXJhdG9ycyArICd8JyArIHJlLnNyY19aUENjICsgJyknICsgcmUuc3JjX0FueSArICcpJztcbiAgLy8gVGhlIHNhbWUgYXMgYWJvdGhlIGJ1dCB3aXRob3V0IFswLTldXG4gIC8vIHZhciBzcmNfcHNldWRvX2xldHRlcl9ub25fZCA9ICcoPzooPyFbMC05XXwnICsgc3JjX1pQQ2MgKyAnKScgKyBzcmNfQW55ICsgJyknO1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgcmUuc3JjX2lwNCA9XG5cbiAgICAnKD86KDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcXFxcLil7M30oMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KSc7XG5cbiAgLy8gUHJvaGliaXQgYW55IG9mIFwiQC9bXSgpXCIgaW4gdXNlci9wYXNzIHRvIGF2b2lkIHdyb25nIGRvbWFpbiBmZXRjaC5cbiAgcmUuc3JjX2F1dGggICAgPSAnKD86KD86KD8hJyArIHJlLnNyY19aQ2MgKyAnfFtAL1xcXFxbXFxcXF0oKV0pLikrQCk/JztcblxuICByZS5zcmNfcG9ydCA9XG5cbiAgICAnKD86Oig/OjYoPzpbMC00XVxcXFxkezN9fDUoPzpbMC00XVxcXFxkezJ9fDUoPzpbMC0yXVxcXFxkfDNbMC01XSkpKXxbMS01XT9cXFxcZHsxLDR9KSk/JztcblxuICByZS5zcmNfaG9zdF90ZXJtaW5hdG9yID1cblxuICAgICcoPz0kfCcgKyB0ZXh0X3NlcGFyYXRvcnMgKyAnfCcgKyByZS5zcmNfWlBDYyArICcpKD8hLXxffDpcXFxcZHxcXFxcLi18XFxcXC4oPyEkfCcgKyByZS5zcmNfWlBDYyArICcpKSc7XG5cbiAgcmUuc3JjX3BhdGggPVxuXG4gICAgJyg/OicgK1xuICAgICAgJ1svPyNdJyArXG4gICAgICAgICcoPzonICtcbiAgICAgICAgICAnKD8hJyArIHJlLnNyY19aQ2MgKyAnfCcgKyB0ZXh0X3NlcGFyYXRvcnMgKyAnfFsoKVtcXFxcXXt9LixcIlxcJz8hXFxcXC07XSkufCcgK1xuICAgICAgICAgICdcXFxcWyg/Oig/IScgKyByZS5zcmNfWkNjICsgJ3xcXFxcXSkuKSpcXFxcXXwnICtcbiAgICAgICAgICAnXFxcXCgoPzooPyEnICsgcmUuc3JjX1pDYyArICd8WyldKS4pKlxcXFwpfCcgK1xuICAgICAgICAgICdcXFxceyg/Oig/IScgKyByZS5zcmNfWkNjICsgJ3xbfV0pLikqXFxcXH18JyArXG4gICAgICAgICAgJ1xcXFxcIig/Oig/IScgKyByZS5zcmNfWkNjICsgJ3xbXCJdKS4pK1xcXFxcInwnICtcbiAgICAgICAgICBcIlxcXFwnKD86KD8hXCIgKyByZS5zcmNfWkNjICsgXCJ8WyddKS4pK1xcXFwnfFwiICtcbiAgICAgICAgICBcIlxcXFwnKD89XCIgKyByZS5zcmNfcHNldWRvX2xldHRlciArICd8Wy1dKS58JyArICAvLyBhbGxvdyBgSSdtX2tpbmdgIGlmIG5vIHBhaXIgZm91bmRcbiAgICAgICAgICAnXFxcXC57Mix9W2EtekEtWjAtOSUvJl18JyArIC8vIGdvb2dsZSBoYXMgbWFueSBkb3RzIGluIFwiZ29vZ2xlIHNlYXJjaFwiIGxpbmtzICgjNjYsICM4MSkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2l0aHViIGhhcyAuLi4gaW4gY29tbWl0IHJhbmdlIGxpbmtzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3RyaWN0IHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBlbmdsaXNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBwZXJjZW50LWVuY29kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIHBhcnRzIG9mIGZpbGUgcGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gcGFyYW1zIHNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVudGlsIG1vcmUgZXhhbXBsZXMgZm91bmQuXG4gICAgICAgICAgJ1xcXFwuKD8hJyArIHJlLnNyY19aQ2MgKyAnfFsuXSkufCcgK1xuICAgICAgICAgIChvcHRzICYmIG9wdHNbJy0tLSddID9cbiAgICAgICAgICAgICdcXFxcLSg/IS0tKD86W14tXXwkKSkoPzotKil8JyAvLyBgLS0tYCA9PiBsb25nIGRhc2gsIHRlcm1pbmF0ZVxuICAgICAgICAgICAgOlxuICAgICAgICAgICAgJ1xcXFwtK3wnXG4gICAgICAgICAgKSArXG4gICAgICAgICAgJywoPyEnICsgcmUuc3JjX1pDYyArICcpLnwnICsgICAgICAgLy8gYWxsb3cgYCwsLGAgaW4gcGF0aHNcbiAgICAgICAgICAnOyg/IScgKyByZS5zcmNfWkNjICsgJykufCcgKyAgICAgICAvLyBhbGxvdyBgO2AgaWYgbm90IGZvbGxvd2VkIGJ5IHNwYWNlLWxpa2UgY2hhclxuICAgICAgICAgICdcXFxcISsoPyEnICsgcmUuc3JjX1pDYyArICd8WyFdKS58JyArICAvLyBhbGxvdyBgISEhYCBpbiBwYXRocywgYnV0IG5vdCBhdCB0aGUgZW5kXG4gICAgICAgICAgJ1xcXFw/KD8hJyArIHJlLnNyY19aQ2MgKyAnfFs/XSkuJyArXG4gICAgICAgICcpKycgK1xuICAgICAgJ3xcXFxcLycgK1xuICAgICcpPyc7XG5cbiAgLy8gQWxsb3cgYW55dGhpbmcgaW4gbWFya2Rvd24gc3BlYywgZm9yYmlkIHF1b3RlIChcIikgYXQgdGhlIGZpcnN0IHBvc2l0aW9uXG4gIC8vIGJlY2F1c2UgZW1haWxzIGVuY2xvc2VkIGluIHF1b3RlcyBhcmUgZmFyIG1vcmUgY29tbW9uXG4gIHJlLnNyY19lbWFpbF9uYW1lID1cblxuICAgICdbXFxcXC07OiY9XFxcXCtcXFxcJCxcXFxcLmEtekEtWjAtOV9dW1xcXFwtOzomPVxcXFwrXFxcXCQsXFxcXFwiXFxcXC5hLXpBLVowLTlfXSonO1xuXG4gIHJlLnNyY194biA9XG5cbiAgICAneG4tLVthLXowLTlcXFxcLV17MSw1OX0nO1xuXG4gIC8vIE1vcmUgdG8gcmVhZCBhYm91dCBkb21haW4gbmFtZXNcbiAgLy8gaHR0cDovL3NlcnZlcmZhdWx0LmNvbS9xdWVzdGlvbnMvNjM4MjYwL1xuXG4gIHJlLnNyY19kb21haW5fcm9vdCA9XG5cbiAgICAvLyBBbGxvdyBsZXR0ZXJzICYgZGlnaXRzIChodHRwOi8vdGVzdDEpXG4gICAgJyg/OicgK1xuICAgICAgcmUuc3JjX3huICtcbiAgICAgICd8JyArXG4gICAgICByZS5zcmNfcHNldWRvX2xldHRlciArICd7MSw2M30nICtcbiAgICAnKSc7XG5cbiAgcmUuc3JjX2RvbWFpbiA9XG5cbiAgICAnKD86JyArXG4gICAgICByZS5zcmNfeG4gK1xuICAgICAgJ3wnICtcbiAgICAgICcoPzonICsgcmUuc3JjX3BzZXVkb19sZXR0ZXIgKyAnKScgK1xuICAgICAgJ3wnICtcbiAgICAgICcoPzonICsgcmUuc3JjX3BzZXVkb19sZXR0ZXIgKyAnKD86LXwnICsgcmUuc3JjX3BzZXVkb19sZXR0ZXIgKyAnKXswLDYxfScgKyByZS5zcmNfcHNldWRvX2xldHRlciArICcpJyArXG4gICAgJyknO1xuXG4gIHJlLnNyY19ob3N0ID1cblxuICAgICcoPzonICtcbiAgICAvLyBEb24ndCBuZWVkIElQIGNoZWNrLCBiZWNhdXNlIGRpZ2l0cyBhcmUgYWxyZWFkeSBhbGxvd2VkIGluIG5vcm1hbCBkb21haW4gbmFtZXNcbiAgICAvLyAgIHNyY19pcDQgK1xuICAgIC8vICd8JyArXG4gICAgICAnKD86KD86KD86JyArIHJlLnNyY19kb21haW4gKyAnKVxcXFwuKSonICsgcmUuc3JjX2RvbWFpbi8qX3Jvb3QqLyArICcpJyArXG4gICAgJyknO1xuXG4gIHJlLnRwbF9ob3N0X2Z1enp5ID1cblxuICAgICcoPzonICtcbiAgICAgIHJlLnNyY19pcDQgK1xuICAgICd8JyArXG4gICAgICAnKD86KD86KD86JyArIHJlLnNyY19kb21haW4gKyAnKVxcXFwuKSsoPzolVExEUyUpKScgK1xuICAgICcpJztcblxuICByZS50cGxfaG9zdF9ub19pcF9mdXp6eSA9XG5cbiAgICAnKD86KD86KD86JyArIHJlLnNyY19kb21haW4gKyAnKVxcXFwuKSsoPzolVExEUyUpKSc7XG5cbiAgcmUuc3JjX2hvc3Rfc3RyaWN0ID1cblxuICAgIHJlLnNyY19ob3N0ICsgcmUuc3JjX2hvc3RfdGVybWluYXRvcjtcblxuICByZS50cGxfaG9zdF9mdXp6eV9zdHJpY3QgPVxuXG4gICAgcmUudHBsX2hvc3RfZnV6enkgKyByZS5zcmNfaG9zdF90ZXJtaW5hdG9yO1xuXG4gIHJlLnNyY19ob3N0X3BvcnRfc3RyaWN0ID1cblxuICAgIHJlLnNyY19ob3N0ICsgcmUuc3JjX3BvcnQgKyByZS5zcmNfaG9zdF90ZXJtaW5hdG9yO1xuXG4gIHJlLnRwbF9ob3N0X3BvcnRfZnV6enlfc3RyaWN0ID1cblxuICAgIHJlLnRwbF9ob3N0X2Z1enp5ICsgcmUuc3JjX3BvcnQgKyByZS5zcmNfaG9zdF90ZXJtaW5hdG9yO1xuXG4gIHJlLnRwbF9ob3N0X3BvcnRfbm9faXBfZnV6enlfc3RyaWN0ID1cblxuICAgIHJlLnRwbF9ob3N0X25vX2lwX2Z1enp5ICsgcmUuc3JjX3BvcnQgKyByZS5zcmNfaG9zdF90ZXJtaW5hdG9yO1xuXG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gTWFpbiBydWxlc1xuXG4gIC8vIFJ1ZGUgdGVzdCBmdXp6eSBsaW5rcyBieSBob3N0LCBmb3IgcXVpY2sgZGVueVxuICByZS50cGxfaG9zdF9mdXp6eV90ZXN0ID1cblxuICAgICdsb2NhbGhvc3R8d3d3XFxcXC58XFxcXC5cXFxcZHsxLDN9XFxcXC58KD86XFxcXC4oPzolVExEUyUpKD86JyArIHJlLnNyY19aUENjICsgJ3w+fCQpKSc7XG5cbiAgcmUudHBsX2VtYWlsX2Z1enp5ID1cblxuICAgICAgJyhefCcgKyB0ZXh0X3NlcGFyYXRvcnMgKyAnfFwifFxcXFwofCcgKyByZS5zcmNfWkNjICsgJyknICtcbiAgICAgICcoJyArIHJlLnNyY19lbWFpbF9uYW1lICsgJ0AnICsgcmUudHBsX2hvc3RfZnV6enlfc3RyaWN0ICsgJyknO1xuXG4gIHJlLnRwbF9saW5rX2Z1enp5ID1cbiAgICAgIC8vIEZ1enp5IGxpbmsgY2FuJ3QgYmUgcHJlcGVuZGVkIHdpdGggLjovXFwtIGFuZCBub24gcHVuY3R1YXRpb24uXG4gICAgICAvLyBidXQgY2FuIHN0YXJ0IHdpdGggPiAobWFya2Rvd24gYmxvY2txdW90ZSlcbiAgICAgICcoXnwoPyFbLjovXFxcXC1fQF0pKD86WyQrPD0+XmB8XFx1ZmY1Y118JyArIHJlLnNyY19aUENjICsgJykpJyArXG4gICAgICAnKCg/IVskKzw9Pl5gfFxcdWZmNWNdKScgKyByZS50cGxfaG9zdF9wb3J0X2Z1enp5X3N0cmljdCArIHJlLnNyY19wYXRoICsgJyknO1xuXG4gIHJlLnRwbF9saW5rX25vX2lwX2Z1enp5ID1cbiAgICAgIC8vIEZ1enp5IGxpbmsgY2FuJ3QgYmUgcHJlcGVuZGVkIHdpdGggLjovXFwtIGFuZCBub24gcHVuY3R1YXRpb24uXG4gICAgICAvLyBidXQgY2FuIHN0YXJ0IHdpdGggPiAobWFya2Rvd24gYmxvY2txdW90ZSlcbiAgICAgICcoXnwoPyFbLjovXFxcXC1fQF0pKD86WyQrPD0+XmB8XFx1ZmY1Y118JyArIHJlLnNyY19aUENjICsgJykpJyArXG4gICAgICAnKCg/IVskKzw9Pl5gfFxcdWZmNWNdKScgKyByZS50cGxfaG9zdF9wb3J0X25vX2lwX2Z1enp5X3N0cmljdCArIHJlLnNyY19wYXRoICsgJyknO1xuXG4gIHJldHVybiByZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBSUE7QUFJQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUFBO0FBSUE7QUFLQTtBQUNBO0FBQ0E7QUFHQTtBQU1BO0FBVUE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUpBO0FBT0E7QUFRQTtBQUlBO0FBSUE7QUFJQTtBQUlBO0FBSUE7QUFNQTtBQUVBO0FBQ0E7QUFBQTtBQUlBO0FBS0E7QUFFQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/linkify-it/lib/re.js\n");
|
1679 |
|
1680 | }),
|
1681 |
|
1682 | "../../../node_modules/markdown-it/index.js":
|
1683 |
|
1684 |
|
1685 |
|
1686 |
|
1687 | (function(module, exports, __webpack_require__) {
|
1688 |
|
1689 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n module.exports = __webpack_require__(/*! ./lib/ */ \"../../../node_modules/markdown-it/lib/index.js\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2luZGV4LmpzP2JkNDUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvJyk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/index.js\n");
|
1690 |
|
1691 | }),
|
1692 |
|
1693 | "../../../node_modules/markdown-it/lib/common/entities.js":
|
1694 |
|
1695 |
|
1696 |
|
1697 |
|
1698 | (function(module, exports, __webpack_require__) {
|
1699 |
|
1700 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // HTML5 entities map: { name -> utf16string }\n //\n 'use strict';\n /*eslint quotes:0*/\n\n module.exports = __webpack_require__(/*! entities/lib/maps/entities.json */ \"../../../node_modules/entities/lib/maps/entities.json\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9jb21tb24vZW50aXRpZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2NvbW1vbi9lbnRpdGllcy5qcz84YjkwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEhUTUw1IGVudGl0aWVzIG1hcDogeyBuYW1lIC0+IHV0ZjE2c3RyaW5nIH1cbi8vXG4ndXNlIHN0cmljdCc7XG5cbi8qZXNsaW50IHF1b3RlczowKi9cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnZW50aXRpZXMvbGliL21hcHMvZW50aXRpZXMuanNvbicpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/common/entities.js\n");
|
1701 |
|
1702 | }),
|
1703 |
|
1704 | "../../../node_modules/markdown-it/lib/common/html_blocks.js":
|
1705 |
|
1706 |
|
1707 |
|
1708 |
|
1709 | (function(module, exports, __webpack_require__) {
|
1710 |
|
1711 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // List of valid html blocks names, accorting to commonmark spec\n // http://jgm.github.io/CommonMark/spec.html#html-blocks\n 'use strict';\n\n module.exports = ['address', 'article', 'aside', 'base', 'basefont', 'blockquote', 'body', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dialog', 'dir', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'iframe', 'legend', 'li', 'link', 'main', 'menu', 'menuitem', 'nav', 'noframes', 'ol', 'optgroup', 'option', 'p', 'param', 'section', 'source', 'summary', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul'];\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9jb21tb24vaHRtbF9ibG9ja3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2NvbW1vbi9odG1sX2Jsb2Nrcy5qcz9iNzA4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIExpc3Qgb2YgdmFsaWQgaHRtbCBibG9ja3MgbmFtZXMsIGFjY29ydGluZyB0byBjb21tb25tYXJrIHNwZWNcbi8vIGh0dHA6Ly9qZ20uZ2l0aHViLmlvL0NvbW1vbk1hcmsvc3BlYy5odG1sI2h0bWwtYmxvY2tzXG5cbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2FkZHJlc3MnLFxuICAnYXJ0aWNsZScsXG4gICdhc2lkZScsXG4gICdiYXNlJyxcbiAgJ2Jhc2Vmb250JyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnYm9keScsXG4gICdjYXB0aW9uJyxcbiAgJ2NlbnRlcicsXG4gICdjb2wnLFxuICAnY29sZ3JvdXAnLFxuICAnZGQnLFxuICAnZGV0YWlscycsXG4gICdkaWFsb2cnLFxuICAnZGlyJyxcbiAgJ2RpdicsXG4gICdkbCcsXG4gICdkdCcsXG4gICdmaWVsZHNldCcsXG4gICdmaWdjYXB0aW9uJyxcbiAgJ2ZpZ3VyZScsXG4gICdmb290ZXInLFxuICAnZm9ybScsXG4gICdmcmFtZScsXG4gICdmcmFtZXNldCcsXG4gICdoMScsXG4gICdoMicsXG4gICdoMycsXG4gICdoNCcsXG4gICdoNScsXG4gICdoNicsXG4gICdoZWFkJyxcbiAgJ2hlYWRlcicsXG4gICdocicsXG4gICdodG1sJyxcbiAgJ2lmcmFtZScsXG4gICdsZWdlbmQnLFxuICAnbGknLFxuICAnbGluaycsXG4gICdtYWluJyxcbiAgJ21lbnUnLFxuICAnbWVudWl0ZW0nLFxuICAnbmF2JyxcbiAgJ25vZnJhbWVzJyxcbiAgJ29sJyxcbiAgJ29wdGdyb3VwJyxcbiAgJ29wdGlvbicsXG4gICdwJyxcbiAgJ3BhcmFtJyxcbiAgJ3NlY3Rpb24nLFxuICAnc291cmNlJyxcbiAgJ3N1bW1hcnknLFxuICAndGFibGUnLFxuICAndGJvZHknLFxuICAndGQnLFxuICAndGZvb3QnLFxuICAndGgnLFxuICAndGhlYWQnLFxuICAndGl0bGUnLFxuICAndHInLFxuICAndHJhY2snLFxuICAndWwnXG5dO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/common/html_blocks.js\n");
|
1712 |
|
1713 | }),
|
1714 |
|
1715 | "../../../node_modules/markdown-it/lib/common/html_re.js":
|
1716 |
|
1717 |
|
1718 |
|
1719 |
|
1720 | (function(module, exports, __webpack_require__) {
|
1721 |
|
1722 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Regexps to match html elements\n 'use strict';\n\n var attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\n var unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\n var single_quoted = \"'[^']*'\";\n var double_quoted = '\"[^\"]*\"';\n var attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')';\n var attribute = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)';\n var open_tag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\n var close_tag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\n var comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';\n var processing = '<[?][\\\\s\\\\S]*?[?]>';\n var declaration = '<![A-Z]+\\\\s+[^>]*>';\n var cdata = '<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>';\n var HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment + '|' + processing + '|' + declaration + '|' + cdata + ')');\n var HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')');\n module.exports.HTML_TAG_RE = HTML_TAG_RE;\n module.exports.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9jb21tb24vaHRtbF9yZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvY29tbW9uL2h0bWxfcmUuanM/M2MwYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBSZWdleHBzIHRvIG1hdGNoIGh0bWwgZWxlbWVudHNcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXR0cl9uYW1lICAgICA9ICdbYS16QS1aXzpdW2EtekEtWjAtOTouXy1dKic7XG5cbnZhciB1bnF1b3RlZCAgICAgID0gJ1teXCJcXCc9PD5gXFxcXHgwMC1cXFxceDIwXSsnO1xudmFyIHNpbmdsZV9xdW90ZWQgPSBcIidbXiddKidcIjtcbnZhciBkb3VibGVfcXVvdGVkID0gJ1wiW15cIl0qXCInO1xuXG52YXIgYXR0cl92YWx1ZSAgPSAnKD86JyArIHVucXVvdGVkICsgJ3wnICsgc2luZ2xlX3F1b3RlZCArICd8JyArIGRvdWJsZV9xdW90ZWQgKyAnKSc7XG5cbnZhciBhdHRyaWJ1dGUgICA9ICcoPzpcXFxccysnICsgYXR0cl9uYW1lICsgJyg/OlxcXFxzKj1cXFxccyonICsgYXR0cl92YWx1ZSArICcpPyknO1xuXG52YXIgb3Blbl90YWcgICAgPSAnPFtBLVphLXpdW0EtWmEtejAtOVxcXFwtXSonICsgYXR0cmlidXRlICsgJypcXFxccypcXFxcLz8+JztcblxudmFyIGNsb3NlX3RhZyAgID0gJzxcXFxcL1tBLVphLXpdW0EtWmEtejAtOVxcXFwtXSpcXFxccyo+JztcbnZhciBjb21tZW50ICAgICA9ICc8IS0tLS0+fDwhLS0oPzotP1tePi1dKSg/Oi0/W14tXSkqLS0+JztcbnZhciBwcm9jZXNzaW5nICA9ICc8Wz9dW1xcXFxzXFxcXFNdKj9bP10+JztcbnZhciBkZWNsYXJhdGlvbiA9ICc8IVtBLVpdK1xcXFxzK1tePl0qPic7XG52YXIgY2RhdGEgICAgICAgPSAnPCFcXFxcW0NEQVRBXFxcXFtbXFxcXHNcXFxcU10qP1xcXFxdXFxcXF0+JztcblxudmFyIEhUTUxfVEFHX1JFID0gbmV3IFJlZ0V4cCgnXig/OicgKyBvcGVuX3RhZyArICd8JyArIGNsb3NlX3RhZyArICd8JyArIGNvbW1lbnQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3wnICsgcHJvY2Vzc2luZyArICd8JyArIGRlY2xhcmF0aW9uICsgJ3wnICsgY2RhdGEgKyAnKScpO1xudmFyIEhUTUxfT1BFTl9DTE9TRV9UQUdfUkUgPSBuZXcgUmVnRXhwKCdeKD86JyArIG9wZW5fdGFnICsgJ3wnICsgY2xvc2VfdGFnICsgJyknKTtcblxubW9kdWxlLmV4cG9ydHMuSFRNTF9UQUdfUkUgPSBIVE1MX1RBR19SRTtcbm1vZHVsZS5leHBvcnRzLkhUTUxfT1BFTl9DTE9TRV9UQUdfUkUgPSBIVE1MX09QRU5fQ0xPU0VfVEFHX1JFO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/common/html_re.js\n");
|
1723 |
|
1724 | }),
|
1725 |
|
1726 | "../../../node_modules/markdown-it/lib/common/utils.js":
|
1727 |
|
1728 |
|
1729 |
|
1730 |
|
1731 | (function(module, exports, __webpack_require__) {
|
1732 |
|
1733 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Utilities\n //\n 'use strict';\n\n function _class(obj) {\n return Object.prototype.toString.call(obj);\n }\n\n function isString(obj) {\n return _class(obj) === '[object String]';\n }\n\n var _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n function has(object, key) {\n return _hasOwnProperty.call(object, key);\n } // Merge objects\n //\n\n\n function assign(obj\n /*from1, from2, from3, ...*/\n ) {\n var sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object');\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n return obj;\n } // Remove element from array and put another array at those position.\n // Useful for some operations with tokens\n\n\n function arrayReplaceAt(src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));\n } ////////////////////////////////////////////////////////////////////////////////\n\n\n function isValidEntityCode(c) {\n /*eslint no-bitwise:0*/\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) {\n return false;\n } // never used\n\n\n if (c >= 0xFDD0 && c <= 0xFDEF) {\n return false;\n }\n\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) {\n return false;\n } // control codes\n\n\n if (c >= 0x00 && c <= 0x08) {\n return false;\n }\n\n if (c === 0x0B) {\n return false;\n }\n\n if (c >= 0x0E && c <= 0x1F) {\n return false;\n }\n\n if (c >= 0x7F && c <= 0x9F) {\n return false;\n } // out of range\n\n\n if (c > 0x10FFFF) {\n return false;\n }\n\n return true;\n }\n\n function fromCodePoint(c) {\n /*eslint no-bitwise:0*/\n if (c > 0xffff) {\n c -= 0x10000;\n var surrogate1 = 0xd800 + (c >> 10),\n surrogate2 = 0xdc00 + (c & 0x3ff);\n return String.fromCharCode(surrogate1, surrogate2);\n }\n\n return String.fromCharCode(c);\n }\n\n var UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g;\n var ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;\n var UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi');\n var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;\n\n var entities = __webpack_require__(/*! ./entities */ \"../../../node_modules/markdown-it/lib/common/entities.js\");\n\n function replaceEntityPattern(match, name) {\n var code = 0;\n\n if (has(entities, name)) {\n return entities[name];\n }\n\n if (name.charCodeAt(0) === 0x23\n /* # */\n && DIGITAL_ENTITY_TEST_RE.test(name)) {\n code = name[1].toLowerCase() === 'x' ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);\n\n if (isValidEntityCode(code)) {\n return fromCodePoint(code);\n }\n }\n\n return match;\n }\n /*function replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n \n return str.replace(ENTITY_RE, replaceEntityPattern);\n }*/\n\n\n function unescapeMd(str) {\n if (str.indexOf('\\\\') < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_MD_RE, '$1');\n }\n\n function unescapeAll(str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) {\n return escaped;\n }\n\n return replaceEntityPattern(match, entity);\n });\n } ////////////////////////////////////////////////////////////////////////////////\n\n\n var HTML_ESCAPE_TEST_RE = /[&<>\"]/;\n var HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\n var HTML_REPLACEMENTS = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"'\n };\n\n function replaceUnsafeChar(ch) {\n return HTML_REPLACEMENTS[ch];\n }\n\n function escapeHtml(str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n }\n\n return str;\n } ////////////////////////////////////////////////////////////////////////////////\n\n\n var REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\n\n function escapeRE(str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&');\n } ////////////////////////////////////////////////////////////////////////////////\n\n\n function isSpace(code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true;\n }\n\n return false;\n } // Zs (unicode class) || [\\t\\f\\v\\r\\n]\n\n\n function isWhiteSpace(code) {\n if (code >= 0x2000 && code <= 0x200A) {\n return true;\n }\n\n switch (code) {\n case 0x09: // \\t\n\n case 0x0A: // \\n\n\n case 0x0B: // \\v\n\n case 0x0C: // \\f\n\n case 0x0D: // \\r\n\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true;\n }\n\n return false;\n } ////////////////////////////////////////////////////////////////////////////////\n\n /*eslint-disable max-len*/\n\n\n var UNICODE_PUNCT_RE = __webpack_require__(/*! uc.micro/categories/P/regex */ \"../../../node_modules/uc.micro/categories/P/regex.js\"); // Currently without astral characters support.\n\n\n function isPunctChar(ch) {\n return UNICODE_PUNCT_RE.test(ch);\n } // Markdown ASCII punctuation characters.\n //\n // !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n // http://spec.commonmark.org/0.15/#ascii-punctuation-character\n //\n // Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n //\n\n\n function isMdAsciiPunct(ch) {\n switch (ch) {\n case 0x21\n /* ! */\n :\n case 0x22\n /* \" */\n :\n case 0x23\n /* # */\n :\n case 0x24\n /* $ */\n :\n case 0x25\n /* % */\n :\n case 0x26\n /* & */\n :\n case 0x27\n /* ' */\n :\n case 0x28\n /* ( */\n :\n case 0x29\n /* ) */\n :\n case 0x2A\n /* * */\n :\n case 0x2B\n /* + */\n :\n case 0x2C\n /* , */\n :\n case 0x2D\n /* - */\n :\n case 0x2E\n /* . */\n :\n case 0x2F\n /* / */\n :\n case 0x3A\n /* : */\n :\n case 0x3B\n /* ; */\n :\n case 0x3C\n /* < */\n :\n case 0x3D\n /* = */\n :\n case 0x3E\n /* > */\n :\n case 0x3F\n /* ? */\n :\n case 0x40\n /* @ */\n :\n case 0x5B\n /* [ */\n :\n case 0x5C\n /* \\ */\n :\n case 0x5D\n /* ] */\n :\n case 0x5E\n /* ^ */\n :\n case 0x5F\n /* _ */\n :\n case 0x60\n /* ` */\n :\n case 0x7B\n /* { */\n :\n case 0x7C\n /* | */\n :\n case 0x7D\n /* } */\n :\n case 0x7E\n /* ~ */\n :\n return true;\n\n default:\n return false;\n }\n } // Hepler to unify [reference labels].\n //\n\n\n function normalizeReference(str) {\n // Trim and collapse whitespace\n //\n str = str.trim().replace(/\\s+/g, ' '); // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n // fixed in v12 (couldn't find any details).\n //\n // So treat this one as a special case\n // (remove this when node v10 is no longer supported).\n //\n\n if ('ẞ'.toLowerCase() === 'Ṿ') {\n str = str.replace(/ẞ/g, 'ß');\n } // .toLowerCase().toUpperCase() should get rid of all differences\n // between letter variants.\n //\n // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n // uppercased versions).\n //\n // Here's an example showing how it happens. Lets take greek letter omega:\n // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n //\n // Unicode entries:\n // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n // 03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;\n //\n // Case-insensitive comparison should treat all of them as equivalent.\n //\n // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n // and .toUpperCase() doesn't change ϴ (already uppercase).\n //\n // Applying first lower then upper case normalizes any character:\n // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n //\n // Note: this is equivalent to unicode case folding; unicode normalization\n // is a different step that is not required here.\n //\n // Final result should be uppercased, because it's later stored in an object\n // (this avoid a conflict with Object.prototype members,\n // most notably, `__proto__`)\n //\n\n\n return str.toLowerCase().toUpperCase();\n } ////////////////////////////////////////////////////////////////////////////////\n // Re-export libraries commonly used in both markdown-it and its plugins,\n // so plugins won't have to depend on them explicitly, which reduces their\n // bundled size (e.g. a browser build).\n //\n\n\n exports.lib = {};\n exports.lib.mdurl = __webpack_require__(/*! mdurl */ \"../../../node_modules/mdurl/index.js\");\n exports.lib.ucmicro = __webpack_require__(/*! uc.micro */ \"../../../node_modules/uc.micro/index.js\");\n exports.assign = assign;\n exports.isString = isString;\n exports.has = has;\n exports.unescapeMd = unescapeMd;\n exports.unescapeAll = unescapeAll;\n exports.isValidEntityCode = isValidEntityCode;\n exports.fromCodePoint = fromCodePoint; // exports.replaceEntities = replaceEntities;\n\n exports.escapeHtml = escapeHtml;\n exports.arrayReplaceAt = arrayReplaceAt;\n exports.isSpace = isSpace;\n exports.isWhiteSpace = isWhiteSpace;\n exports.isMdAsciiPunct = isMdAsciiPunct;\n exports.isPunctChar = isPunctChar;\n exports.escapeRE = escapeRE;\n exports.normalizeReference = normalizeReference;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9jb21tb24vdXRpbHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2NvbW1vbi91dGlscy5qcz9iNTE5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFV0aWxpdGllc1xuLy9cbid1c2Ugc3RyaWN0JztcblxuXG5mdW5jdGlvbiBfY2xhc3Mob2JqKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKTsgfVxuXG5mdW5jdGlvbiBpc1N0cmluZyhvYmopIHsgcmV0dXJuIF9jbGFzcyhvYmopID09PSAnW29iamVjdCBTdHJpbmddJzsgfVxuXG52YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gaGFzKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBfaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG59XG5cbi8vIE1lcmdlIG9iamVjdHNcbi8vXG5mdW5jdGlvbiBhc3NpZ24ob2JqIC8qZnJvbTEsIGZyb20yLCBmcm9tMywgLi4uKi8pIHtcbiAgdmFyIHNvdXJjZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gIHNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgaWYgKCFzb3VyY2UpIHsgcmV0dXJuOyB9XG5cbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Ioc291cmNlICsgJ211c3QgYmUgb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIG9ialtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBvYmo7XG59XG5cbi8vIFJlbW92ZSBlbGVtZW50IGZyb20gYXJyYXkgYW5kIHB1dCBhbm90aGVyIGFycmF5IGF0IHRob3NlIHBvc2l0aW9uLlxuLy8gVXNlZnVsIGZvciBzb21lIG9wZXJhdGlvbnMgd2l0aCB0b2tlbnNcbmZ1bmN0aW9uIGFycmF5UmVwbGFjZUF0KHNyYywgcG9zLCBuZXdFbGVtZW50cykge1xuICByZXR1cm4gW10uY29uY2F0KHNyYy5zbGljZSgwLCBwb3MpLCBuZXdFbGVtZW50cywgc3JjLnNsaWNlKHBvcyArIDEpKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZnVuY3Rpb24gaXNWYWxpZEVudGl0eUNvZGUoYykge1xuICAvKmVzbGludCBuby1iaXR3aXNlOjAqL1xuICAvLyBicm9rZW4gc2VxdWVuY2VcbiAgaWYgKGMgPj0gMHhEODAwICYmIGMgPD0gMHhERkZGKSB7IHJldHVybiBmYWxzZTsgfVxuICAvLyBuZXZlciB1c2VkXG4gIGlmIChjID49IDB4RkREMCAmJiBjIDw9IDB4RkRFRikgeyByZXR1cm4gZmFsc2U7IH1cbiAgaWYgKChjICYgMHhGRkZGKSA9PT0gMHhGRkZGIHx8IChjICYgMHhGRkZGKSA9PT0gMHhGRkZFKSB7IHJldHVybiBmYWxzZTsgfVxuICAvLyBjb250cm9sIGNvZGVzXG4gIGlmIChjID49IDB4MDAgJiYgYyA8PSAweDA4KSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoYyA9PT0gMHgwQikgeyByZXR1cm4gZmFsc2U7IH1cbiAgaWYgKGMgPj0gMHgwRSAmJiBjIDw9IDB4MUYpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChjID49IDB4N0YgJiYgYyA8PSAweDlGKSB7IHJldHVybiBmYWxzZTsgfVxuICAvLyBvdXQgb2YgcmFuZ2VcbiAgaWYgKGMgPiAweDEwRkZGRikgeyByZXR1cm4gZmFsc2U7IH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGZyb21Db2RlUG9pbnQoYykge1xuICAvKmVzbGludCBuby1iaXR3aXNlOjAqL1xuICBpZiAoYyA+IDB4ZmZmZikge1xuICAgIGMgLT0gMHgxMDAwMDtcbiAgICB2YXIgc3Vycm9nYXRlMSA9IDB4ZDgwMCArIChjID4+IDEwKSxcbiAgICAgICAgc3Vycm9nYXRlMiA9IDB4ZGMwMCArIChjICYgMHgzZmYpO1xuXG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoc3Vycm9nYXRlMSwgc3Vycm9nYXRlMik7XG4gIH1cbiAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7XG59XG5cblxudmFyIFVORVNDQVBFX01EX1JFICA9IC9cXFxcKFshXCIjJCUmJygpKissXFwtLlxcLzo7PD0+P0BbXFxcXFxcXV5fYHt8fX5dKS9nO1xudmFyIEVOVElUWV9SRSAgICAgICA9IC8mKFthLXojXVthLXowLTldezEsMzF9KTsvZ2k7XG52YXIgVU5FU0NBUEVfQUxMX1JFID0gbmV3IFJlZ0V4cChVTkVTQ0FQRV9NRF9SRS5zb3VyY2UgKyAnfCcgKyBFTlRJVFlfUkUuc291cmNlLCAnZ2knKTtcblxudmFyIERJR0lUQUxfRU5USVRZX1RFU1RfUkUgPSAvXiMoKD86eFthLWYwLTldezEsOH18WzAtOV17MSw4fSkpL2k7XG5cbnZhciBlbnRpdGllcyA9IHJlcXVpcmUoJy4vZW50aXRpZXMnKTtcblxuZnVuY3Rpb24gcmVwbGFjZUVudGl0eVBhdHRlcm4obWF0Y2gsIG5hbWUpIHtcbiAgdmFyIGNvZGUgPSAwO1xuXG4gIGlmIChoYXMoZW50aXRpZXMsIG5hbWUpKSB7XG4gICAgcmV0dXJuIGVudGl0aWVzW25hbWVdO1xuICB9XG5cbiAgaWYgKG5hbWUuY2hhckNvZGVBdCgwKSA9PT0gMHgyMy8qICMgKi8gJiYgRElHSVRBTF9FTlRJVFlfVEVTVF9SRS50ZXN0KG5hbWUpKSB7XG4gICAgY29kZSA9IG5hbWVbMV0udG9Mb3dlckNhc2UoKSA9PT0gJ3gnID9cbiAgICAgIHBhcnNlSW50KG5hbWUuc2xpY2UoMiksIDE2KSA6IHBhcnNlSW50KG5hbWUuc2xpY2UoMSksIDEwKTtcblxuICAgIGlmIChpc1ZhbGlkRW50aXR5Q29kZShjb2RlKSkge1xuICAgICAgcmV0dXJuIGZyb21Db2RlUG9pbnQoY29kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1hdGNoO1xufVxuXG4vKmZ1bmN0aW9uIHJlcGxhY2VFbnRpdGllcyhzdHIpIHtcbiAgaWYgKHN0ci5pbmRleE9mKCcmJykgPCAwKSB7IHJldHVybiBzdHI7IH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2UoRU5USVRZX1JFLCByZXBsYWNlRW50aXR5UGF0dGVybik7XG59Ki9cblxuZnVuY3Rpb24gdW5lc2NhcGVNZChzdHIpIHtcbiAgaWYgKHN0ci5pbmRleE9mKCdcXFxcJykgPCAwKSB7IHJldHVybiBzdHI7IH1cbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFVORVNDQVBFX01EX1JFLCAnJDEnKTtcbn1cblxuZnVuY3Rpb24gdW5lc2NhcGVBbGwoc3RyKSB7XG4gIGlmIChzdHIuaW5kZXhPZignXFxcXCcpIDwgMCAmJiBzdHIuaW5kZXhPZignJicpIDwgMCkgeyByZXR1cm4gc3RyOyB9XG5cbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFVORVNDQVBFX0FMTF9SRSwgZnVuY3Rpb24gKG1hdGNoLCBlc2NhcGVkLCBlbnRpdHkpIHtcbiAgICBpZiAoZXNjYXBlZCkgeyByZXR1cm4gZXNjYXBlZDsgfVxuICAgIHJldHVybiByZXBsYWNlRW50aXR5UGF0dGVybihtYXRjaCwgZW50aXR5KTtcbiAgfSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbnZhciBIVE1MX0VTQ0FQRV9URVNUX1JFID0gL1smPD5cIl0vO1xudmFyIEhUTUxfRVNDQVBFX1JFUExBQ0VfUkUgPSAvWyY8PlwiXS9nO1xudmFyIEhUTUxfUkVQTEFDRU1FTlRTID0ge1xuICAnJic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzogJyZxdW90Oydcbn07XG5cbmZ1bmN0aW9uIHJlcGxhY2VVbnNhZmVDaGFyKGNoKSB7XG4gIHJldHVybiBIVE1MX1JFUExBQ0VNRU5UU1tjaF07XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUh0bWwoc3RyKSB7XG4gIGlmIChIVE1MX0VTQ0FQRV9URVNUX1JFLnRlc3Qoc3RyKSkge1xuICAgIHJldHVybiBzdHIucmVwbGFjZShIVE1MX0VTQ0FQRV9SRVBMQUNFX1JFLCByZXBsYWNlVW5zYWZlQ2hhcik7XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxudmFyIFJFR0VYUF9FU0NBUEVfUkUgPSAvWy4/KiteJFtcXF1cXFxcKCl7fXwtXS9nO1xuXG5mdW5jdGlvbiBlc2NhcGVSRShzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFJFR0VYUF9FU0NBUEVfUkUsICdcXFxcJCYnKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZnVuY3Rpb24gaXNTcGFjZShjb2RlKSB7XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgMHgwOTpcbiAgICBjYXNlIDB4MjA6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFpzICh1bmljb2RlIGNsYXNzKSB8fCBbXFx0XFxmXFx2XFxyXFxuXVxuZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGNvZGUpIHtcbiAgaWYgKGNvZGUgPj0gMHgyMDAwICYmIGNvZGUgPD0gMHgyMDBBKSB7IHJldHVybiB0cnVlOyB9XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgMHgwOTogLy8gXFx0XG4gICAgY2FzZSAweDBBOiAvLyBcXG5cbiAgICBjYXNlIDB4MEI6IC8vIFxcdlxuICAgIGNhc2UgMHgwQzogLy8gXFxmXG4gICAgY2FzZSAweDBEOiAvLyBcXHJcbiAgICBjYXNlIDB4MjA6XG4gICAgY2FzZSAweEEwOlxuICAgIGNhc2UgMHgxNjgwOlxuICAgIGNhc2UgMHgyMDJGOlxuICAgIGNhc2UgMHgyMDVGOlxuICAgIGNhc2UgMHgzMDAwOlxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vKmVzbGludC1kaXNhYmxlIG1heC1sZW4qL1xudmFyIFVOSUNPREVfUFVOQ1RfUkUgPSByZXF1aXJlKCd1Yy5taWNyby9jYXRlZ29yaWVzL1AvcmVnZXgnKTtcblxuLy8gQ3VycmVudGx5IHdpdGhvdXQgYXN0cmFsIGNoYXJhY3RlcnMgc3VwcG9ydC5cbmZ1bmN0aW9uIGlzUHVuY3RDaGFyKGNoKSB7XG4gIHJldHVybiBVTklDT0RFX1BVTkNUX1JFLnRlc3QoY2gpO1xufVxuXG5cbi8vIE1hcmtkb3duIEFTQ0lJIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMuXG4vL1xuLy8gISwgXCIsICMsICQsICUsICYsICcsICgsICksICosICssICwsIC0sIC4sIC8sIDosIDssIDwsID0sID4sID8sIEAsIFssIFxcLCBdLCBeLCBfLCBgLCB7LCB8LCB9LCBvciB+XG4vLyBodHRwOi8vc3BlYy5jb21tb25tYXJrLm9yZy8wLjE1LyNhc2NpaS1wdW5jdHVhdGlvbi1jaGFyYWN0ZXJcbi8vXG4vLyBEb24ndCBjb25mdXNlIHdpdGggdW5pY29kZSBwdW5jdHVhdGlvbiAhISEgSXQgbGFja3Mgc29tZSBjaGFycyBpbiBhc2NpaSByYW5nZS5cbi8vXG5mdW5jdGlvbiBpc01kQXNjaWlQdW5jdChjaCkge1xuICBzd2l0Y2ggKGNoKSB7XG4gICAgY2FzZSAweDIxLyogISAqLzpcbiAgICBjYXNlIDB4MjIvKiBcIiAqLzpcbiAgICBjYXNlIDB4MjMvKiAjICovOlxuICAgIGNhc2UgMHgyNC8qICQgKi86XG4gICAgY2FzZSAweDI1LyogJSAqLzpcbiAgICBjYXNlIDB4MjYvKiAmICovOlxuICAgIGNhc2UgMHgyNy8qICcgKi86XG4gICAgY2FzZSAweDI4LyogKCAqLzpcbiAgICBjYXNlIDB4MjkvKiApICovOlxuICAgIGNhc2UgMHgyQS8qICogKi86XG4gICAgY2FzZSAweDJCLyogKyAqLzpcbiAgICBjYXNlIDB4MkMvKiAsICovOlxuICAgIGNhc2UgMHgyRC8qIC0gKi86XG4gICAgY2FzZSAweDJFLyogLiAqLzpcbiAgICBjYXNlIDB4MkYvKiAvICovOlxuICAgIGNhc2UgMHgzQS8qIDogKi86XG4gICAgY2FzZSAweDNCLyogOyAqLzpcbiAgICBjYXNlIDB4M0MvKiA8ICovOlxuICAgIGNhc2UgMHgzRC8qID0gKi86XG4gICAgY2FzZSAweDNFLyogPiAqLzpcbiAgICBjYXNlIDB4M0YvKiA/ICovOlxuICAgIGNhc2UgMHg0MC8qIEAgKi86XG4gICAgY2FzZSAweDVCLyogWyAqLzpcbiAgICBjYXNlIDB4NUMvKiBcXCAqLzpcbiAgICBjYXNlIDB4NUQvKiBdICovOlxuICAgIGNhc2UgMHg1RS8qIF4gKi86XG4gICAgY2FzZSAweDVGLyogXyAqLzpcbiAgICBjYXNlIDB4NjAvKiBgICovOlxuICAgIGNhc2UgMHg3Qi8qIHsgKi86XG4gICAgY2FzZSAweDdDLyogfCAqLzpcbiAgICBjYXNlIDB4N0QvKiB9ICovOlxuICAgIGNhc2UgMHg3RS8qIH4gKi86XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vIEhlcGxlciB0byB1bmlmeSBbcmVmZXJlbmNlIGxhYmVsc10uXG4vL1xuZnVuY3Rpb24gbm9ybWFsaXplUmVmZXJlbmNlKHN0cikge1xuICAvLyBUcmltIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlXG4gIC8vXG4gIHN0ciA9IHN0ci50cmltKCkucmVwbGFjZSgvXFxzKy9nLCAnICcpO1xuXG4gIC8vIEluIG5vZGUgdjEwICfhup4nLnRvTG93ZXJDYXNlKCkgPT09ICfhub4nLCB3aGljaCBpcyBwcmVzdW1lZCB0byBiZSBhIGJ1Z1xuICAvLyBmaXhlZCBpbiB2MTIgKGNvdWxkbid0IGZpbmQgYW55IGRldGFpbHMpLlxuICAvL1xuICAvLyBTbyB0cmVhdCB0aGlzIG9uZSBhcyBhIHNwZWNpYWwgY2FzZVxuICAvLyAocmVtb3ZlIHRoaXMgd2hlbiBub2RlIHYxMCBpcyBubyBsb25nZXIgc3VwcG9ydGVkKS5cbiAgLy9cbiAgaWYgKCfhup4nLnRvTG93ZXJDYXNlKCkgPT09ICfhub4nKSB7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL+G6ni9nLCAnw58nKTtcbiAgfVxuXG4gIC8vIC50b0xvd2VyQ2FzZSgpLnRvVXBwZXJDYXNlKCkgc2hvdWxkIGdldCByaWQgb2YgYWxsIGRpZmZlcmVuY2VzXG4gIC8vIGJldHdlZW4gbGV0dGVyIHZhcmlhbnRzLlxuICAvL1xuICAvLyBTaW1wbGUgLnRvTG93ZXJDYXNlKCkgZG9lc24ndCBub3JtYWxpemUgMTI1IGNvZGUgcG9pbnRzIGNvcnJlY3RseSxcbiAgLy8gYW5kIC50b1VwcGVyQ2FzZSBkb2Vzbid0IG5vcm1hbGl6ZSA2IG9mIHRoZW0gKGxpc3Qgb2YgZXhjZXB0aW9uczpcbiAgLy8gxLAsIM+0LCDhup4sIOKEpiwg4oSqLCDihKsgLSB0aG9zZSBhcmUgYWxyZWFkeSB1cHBlcmNhc2VkLCBidXQgaGF2ZSBkaWZmZXJlbnRseVxuICAvLyB1cHBlcmNhc2VkIHZlcnNpb25zKS5cbiAgLy9cbiAgLy8gSGVyZSdzIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgaXQgaGFwcGVucy4gTGV0cyB0YWtlIGdyZWVrIGxldHRlciBvbWVnYTpcbiAgLy8gdXBwZXJjYXNlIFUrMDM5OCAozpgpLCBVKzAzZjQgKM+0KSBhbmQgbG93ZXJjYXNlIFUrMDNiOCAozrgpLCBVKzAzZDEgKM+RKVxuICAvL1xuICAvLyBVbmljb2RlIGVudHJpZXM6XG4gIC8vIDAzOTg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVEhFVEE7THU7MDtMOzs7OztOOzs7OzAzQjg7XG4gIC8vIDAzQjg7R1JFRUsgU01BTEwgTEVUVEVSIFRIRVRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTg7OzAzOThcbiAgLy8gMDNEMTtHUkVFSyBUSEVUQSBTWU1CT0w7TGw7MDtMOzxjb21wYXQ+IDAzQjg7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0NSSVBUIFRIRVRBOzswMzk4OzswMzk4XG4gIC8vIDAzRjQ7R1JFRUsgQ0FQSVRBTCBUSEVUQSBTWU1CT0w7THU7MDtMOzxjb21wYXQ+IDAzOTg7Ozs7Tjs7OzswM0I4O1xuICAvL1xuICAvLyBDYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gc2hvdWxkIHRyZWF0IGFsbCBvZiB0aGVtIGFzIGVxdWl2YWxlbnQuXG4gIC8vXG4gIC8vIEJ1dCAudG9Mb3dlckNhc2UoKSBkb2Vzbid0IGNoYW5nZSDPkSAoaXQncyBhbHJlYWR5IGxvd2VyY2FzZSksXG4gIC8vIGFuZCAudG9VcHBlckNhc2UoKSBkb2Vzbid0IGNoYW5nZSDPtCAoYWxyZWFkeSB1cHBlcmNhc2UpLlxuICAvL1xuICAvLyBBcHBseWluZyBmaXJzdCBsb3dlciB0aGVuIHVwcGVyIGNhc2Ugbm9ybWFsaXplcyBhbnkgY2hhcmFjdGVyOlxuICAvLyAnXFx1MDM5OFxcdTAzZjRcXHUwM2I4XFx1MDNkMScudG9Mb3dlckNhc2UoKS50b1VwcGVyQ2FzZSgpID09PSAnXFx1MDM5OFxcdTAzOThcXHUwMzk4XFx1MDM5OCdcbiAgLy9cbiAgLy8gTm90ZTogdGhpcyBpcyBlcXVpdmFsZW50IHRvIHVuaWNvZGUgY2FzZSBmb2xkaW5nOyB1bmljb2RlIG5vcm1hbGl6YXRpb25cbiAgLy8gaXMgYSBkaWZmZXJlbnQgc3RlcCB0aGF0IGlzIG5vdCByZXF1aXJlZCBoZXJlLlxuICAvL1xuICAvLyBGaW5hbCByZXN1bHQgc2hvdWxkIGJlIHVwcGVyY2FzZWQsIGJlY2F1c2UgaXQncyBsYXRlciBzdG9yZWQgaW4gYW4gb2JqZWN0XG4gIC8vICh0aGlzIGF2b2lkIGEgY29uZmxpY3Qgd2l0aCBPYmplY3QucHJvdG90eXBlIG1lbWJlcnMsXG4gIC8vIG1vc3Qgbm90YWJseSwgYF9fcHJvdG9fX2ApXG4gIC8vXG4gIHJldHVybiBzdHIudG9Mb3dlckNhc2UoKS50b1VwcGVyQ2FzZSgpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLyBSZS1leHBvcnQgbGlicmFyaWVzIGNvbW1vbmx5IHVzZWQgaW4gYm90aCBtYXJrZG93bi1pdCBhbmQgaXRzIHBsdWdpbnMsXG4vLyBzbyBwbHVnaW5zIHdvbid0IGhhdmUgdG8gZGVwZW5kIG9uIHRoZW0gZXhwbGljaXRseSwgd2hpY2ggcmVkdWNlcyB0aGVpclxuLy8gYnVuZGxlZCBzaXplIChlLmcuIGEgYnJvd3NlciBidWlsZCkuXG4vL1xuZXhwb3J0cy5saWIgICAgICAgICAgICAgICAgID0ge307XG5leHBvcnRzLmxpYi5tZHVybCAgICAgICAgICAgPSByZXF1aXJlKCdtZHVybCcpO1xuZXhwb3J0cy5saWIudWNtaWNybyAgICAgICAgID0gcmVxdWlyZSgndWMubWljcm8nKTtcblxuZXhwb3J0cy5hc3NpZ24gICAgICAgICAgICAgID0gYXNzaWduO1xuZXhwb3J0cy5pc1N0cmluZyAgICAgICAgICAgID0gaXNTdHJpbmc7XG5leHBvcnRzLmhhcyAgICAgICAgICAgICAgICAgPSBoYXM7XG5leHBvcnRzLnVuZXNjYXBlTWQgICAgICAgICAgPSB1bmVzY2FwZU1kO1xuZXhwb3J0cy51bmVzY2FwZUFsbCAgICAgICAgID0gdW5lc2NhcGVBbGw7XG5leHBvcnRzLmlzVmFsaWRFbnRpdHlDb2RlICAgPSBpc1ZhbGlkRW50aXR5Q29kZTtcbmV4cG9ydHMuZnJvbUNvZGVQb2ludCAgICAgICA9IGZyb21Db2RlUG9pbnQ7XG4vLyBleHBvcnRzLnJlcGxhY2VFbnRpdGllcyAgICAgPSByZXBsYWNlRW50aXRpZXM7XG5leHBvcnRzLmVzY2FwZUh0bWwgICAgICAgICAgPSBlc2NhcGVIdG1sO1xuZXhwb3J0cy5hcnJheVJlcGxhY2VBdCAgICAgID0gYXJyYXlSZXBsYWNlQXQ7XG5leHBvcnRzLmlzU3BhY2UgICAgICAgICAgICAgPSBpc1NwYWNlO1xuZXhwb3J0cy5pc1doaXRlU3BhY2UgICAgICAgID0gaXNXaGl0ZVNwYWNlO1xuZXhwb3J0cy5pc01kQXNjaWlQdW5jdCAgICAgID0gaXNNZEFzY2lpUHVuY3Q7XG5leHBvcnRzLmlzUHVuY3RDaGFyICAgICAgICAgPSBpc1B1bmN0Q2hhcjtcbmV4cG9ydHMuZXNjYXBlUkUgICAgICAgICAgICA9IGVzY2FwZVJFO1xuZXhwb3J0cy5ub3JtYWxpemVSZWZlcmVuY2UgID0gbm9ybWFsaXplUmVmZXJlbmNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBQ0E7QUFhQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBbkNBO0FBcUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/common/utils.js\n");
|
1734 |
|
1735 | }),
|
1736 |
|
1737 | "../../../node_modules/markdown-it/lib/helpers/index.js":
|
1738 |
|
1739 |
|
1740 |
|
1741 |
|
1742 | (function(module, exports, __webpack_require__) {
|
1743 |
|
1744 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Just a shortcut for bulk export\n 'use strict';\n\n exports.parseLinkLabel = __webpack_require__(/*! ./parse_link_label */ \"../../../node_modules/markdown-it/lib/helpers/parse_link_label.js\");\n exports.parseLinkDestination = __webpack_require__(/*! ./parse_link_destination */ \"../../../node_modules/markdown-it/lib/helpers/parse_link_destination.js\");\n exports.parseLinkTitle = __webpack_require__(/*! ./parse_link_title */ \"../../../node_modules/markdown-it/lib/helpers/parse_link_title.js\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9oZWxwZXJzL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9oZWxwZXJzL2luZGV4LmpzP2JmNTkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSnVzdCBhIHNob3J0Y3V0IGZvciBidWxrIGV4cG9ydFxuJ3VzZSBzdHJpY3QnO1xuXG5cbmV4cG9ydHMucGFyc2VMaW5rTGFiZWwgICAgICAgPSByZXF1aXJlKCcuL3BhcnNlX2xpbmtfbGFiZWwnKTtcbmV4cG9ydHMucGFyc2VMaW5rRGVzdGluYXRpb24gPSByZXF1aXJlKCcuL3BhcnNlX2xpbmtfZGVzdGluYXRpb24nKTtcbmV4cG9ydHMucGFyc2VMaW5rVGl0bGUgICAgICAgPSByZXF1aXJlKCcuL3BhcnNlX2xpbmtfdGl0bGUnKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/helpers/index.js\n");
|
1745 |
|
1746 | }),
|
1747 |
|
1748 | "../../../node_modules/markdown-it/lib/helpers/parse_link_destination.js":
|
1749 |
|
1750 |
|
1751 |
|
1752 |
|
1753 | (function(module, exports, __webpack_require__) {
|
1754 |
|
1755 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Parse link destination\n //\n 'use strict';\n\n var unescapeAll = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").unescapeAll;\n\n module.exports = function parseLinkDestination(str, pos, max) {\n var code,\n level,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (str.charCodeAt(pos) === 0x3C\n /* < */\n ) {\n pos++;\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === 0x0A\n /* \\n */\n ) {\n return result;\n }\n\n if (code === 0x3C\n /* < */\n ) {\n return result;\n }\n\n if (code === 0x3E\n /* > */\n ) {\n result.pos = pos + 1;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n }\n\n if (code === 0x5C\n /* \\ */\n && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n pos++;\n } // no closing '>'\n\n\n return result;\n } // this should be ... } else { ... branch\n\n\n level = 0;\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === 0x20) {\n break;\n } // ascii control characters\n\n\n if (code < 0x20 || code === 0x7F) {\n break;\n }\n\n if (code === 0x5C\n /* \\ */\n && pos + 1 < max) {\n if (str.charCodeAt(pos + 1) === 0x20) {\n break;\n }\n\n pos += 2;\n continue;\n }\n\n if (code === 0x28\n /* ( */\n ) {\n level++;\n\n if (level > 32) {\n return result;\n }\n }\n\n if (code === 0x29\n /* ) */\n ) {\n if (level === 0) {\n break;\n }\n\n level--;\n }\n\n pos++;\n }\n\n if (start === pos) {\n return result;\n }\n\n if (level !== 0) {\n return result;\n }\n\n result.str = unescapeAll(str.slice(start, pos));\n result.lines = lines;\n result.pos = pos;\n result.ok = true;\n return result;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9oZWxwZXJzL3BhcnNlX2xpbmtfZGVzdGluYXRpb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2hlbHBlcnMvcGFyc2VfbGlua19kZXN0aW5hdGlvbi5qcz8yM2E3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBhcnNlIGxpbmsgZGVzdGluYXRpb25cbi8vXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIHVuZXNjYXBlQWxsID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykudW5lc2NhcGVBbGw7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUxpbmtEZXN0aW5hdGlvbihzdHIsIHBvcywgbWF4KSB7XG4gIHZhciBjb2RlLCBsZXZlbCxcbiAgICAgIGxpbmVzID0gMCxcbiAgICAgIHN0YXJ0ID0gcG9zLFxuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIHBvczogMCxcbiAgICAgICAgbGluZXM6IDAsXG4gICAgICAgIHN0cjogJydcbiAgICAgIH07XG5cbiAgaWYgKHN0ci5jaGFyQ29kZUF0KHBvcykgPT09IDB4M0MgLyogPCAqLykge1xuICAgIHBvcysrO1xuICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgIGNvZGUgPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGNvZGUgPT09IDB4MEEgLyogXFxuICovKSB7IHJldHVybiByZXN1bHQ7IH1cbiAgICAgIGlmIChjb2RlID09PSAweDNDIC8qIDwgKi8pIHsgcmV0dXJuIHJlc3VsdDsgfVxuICAgICAgaWYgKGNvZGUgPT09IDB4M0UgLyogPiAqLykge1xuICAgICAgICByZXN1bHQucG9zID0gcG9zICsgMTtcbiAgICAgICAgcmVzdWx0LnN0ciA9IHVuZXNjYXBlQWxsKHN0ci5zbGljZShzdGFydCArIDEsIHBvcykpO1xuICAgICAgICByZXN1bHQub2sgPSB0cnVlO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKGNvZGUgPT09IDB4NUMgLyogXFwgKi8gJiYgcG9zICsgMSA8IG1heCkge1xuICAgICAgICBwb3MgKz0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHBvcysrO1xuICAgIH1cblxuICAgIC8vIG5vIGNsb3NpbmcgJz4nXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIHRoaXMgc2hvdWxkIGJlIC4uLiB9IGVsc2UgeyAuLi4gYnJhbmNoXG5cbiAgbGV2ZWwgPSAwO1xuICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgY29kZSA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICBpZiAoY29kZSA9PT0gMHgyMCkgeyBicmVhazsgfVxuXG4gICAgLy8gYXNjaWkgY29udHJvbCBjaGFyYWN0ZXJzXG4gICAgaWYgKGNvZGUgPCAweDIwIHx8IGNvZGUgPT09IDB4N0YpIHsgYnJlYWs7IH1cblxuICAgIGlmIChjb2RlID09PSAweDVDIC8qIFxcICovICYmIHBvcyArIDEgPCBtYXgpIHtcbiAgICAgIGlmIChzdHIuY2hhckNvZGVBdChwb3MgKyAxKSA9PT0gMHgyMCkgeyBicmVhazsgfVxuICAgICAgcG9zICs9IDI7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gMHgyOCAvKiAoICovKSB7XG4gICAgICBsZXZlbCsrO1xuICAgICAgaWYgKGxldmVsID4gMzIpIHsgcmV0dXJuIHJlc3VsdDsgfVxuICAgIH1cblxuICAgIGlmIChjb2RlID09PSAweDI5IC8qICkgKi8pIHtcbiAgICAgIGlmIChsZXZlbCA9PT0gMCkgeyBicmVhazsgfVxuICAgICAgbGV2ZWwtLTtcbiAgICB9XG5cbiAgICBwb3MrKztcbiAgfVxuXG4gIGlmIChzdGFydCA9PT0gcG9zKSB7IHJldHVybiByZXN1bHQ7IH1cbiAgaWYgKGxldmVsICE9PSAwKSB7IHJldHVybiByZXN1bHQ7IH1cblxuICByZXN1bHQuc3RyID0gdW5lc2NhcGVBbGwoc3RyLnNsaWNlKHN0YXJ0LCBwb3MpKTtcbiAgcmVzdWx0LmxpbmVzID0gbGluZXM7XG4gIHJlc3VsdC5wb3MgPSBwb3M7XG4gIHJlc3VsdC5vayA9IHRydWU7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQU1BO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/helpers/parse_link_destination.js\n");
|
1756 |
|
1757 | }),
|
1758 |
|
1759 | "../../../node_modules/markdown-it/lib/helpers/parse_link_label.js":
|
1760 |
|
1761 |
|
1762 |
|
1763 |
|
1764 | (function(module, exports, __webpack_require__) {
|
1765 |
|
1766 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Parse link label\n //\n // this function assumes that first character (\"[\") already matches;\n // returns the end of the label\n //\n 'use strict';\n\n module.exports = function parseLinkLabel(state, start, disableNested) {\n var level,\n found,\n marker,\n prevPos,\n labelEnd = -1,\n max = state.posMax,\n oldPos = state.pos;\n state.pos = start + 1;\n level = 1;\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos);\n\n if (marker === 0x5D\n /* ] */\n ) {\n level--;\n\n if (level === 0) {\n found = true;\n break;\n }\n }\n\n prevPos = state.pos;\n state.md.inline.skipToken(state);\n\n if (marker === 0x5B\n /* [ */\n ) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++;\n } else if (disableNested) {\n state.pos = oldPos;\n return -1;\n }\n }\n }\n\n if (found) {\n labelEnd = state.pos;\n } // restore old state\n\n\n state.pos = oldPos;\n return labelEnd;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9oZWxwZXJzL3BhcnNlX2xpbmtfbGFiZWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2hlbHBlcnMvcGFyc2VfbGlua19sYWJlbC5qcz9lNjg3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBhcnNlIGxpbmsgbGFiZWxcbi8vXG4vLyB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBmaXJzdCBjaGFyYWN0ZXIgKFwiW1wiKSBhbHJlYWR5IG1hdGNoZXM7XG4vLyByZXR1cm5zIHRoZSBlbmQgb2YgdGhlIGxhYmVsXG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBhcnNlTGlua0xhYmVsKHN0YXRlLCBzdGFydCwgZGlzYWJsZU5lc3RlZCkge1xuICB2YXIgbGV2ZWwsIGZvdW5kLCBtYXJrZXIsIHByZXZQb3MsXG4gICAgICBsYWJlbEVuZCA9IC0xLFxuICAgICAgbWF4ID0gc3RhdGUucG9zTWF4LFxuICAgICAgb2xkUG9zID0gc3RhdGUucG9zO1xuXG4gIHN0YXRlLnBvcyA9IHN0YXJ0ICsgMTtcbiAgbGV2ZWwgPSAxO1xuXG4gIHdoaWxlIChzdGF0ZS5wb3MgPCBtYXgpIHtcbiAgICBtYXJrZXIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChzdGF0ZS5wb3MpO1xuICAgIGlmIChtYXJrZXIgPT09IDB4NUQgLyogXSAqLykge1xuICAgICAgbGV2ZWwtLTtcbiAgICAgIGlmIChsZXZlbCA9PT0gMCkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByZXZQb3MgPSBzdGF0ZS5wb3M7XG4gICAgc3RhdGUubWQuaW5saW5lLnNraXBUb2tlbihzdGF0ZSk7XG4gICAgaWYgKG1hcmtlciA9PT0gMHg1QiAvKiBbICovKSB7XG4gICAgICBpZiAocHJldlBvcyA9PT0gc3RhdGUucG9zIC0gMSkge1xuICAgICAgICAvLyBpbmNyZWFzZSBsZXZlbCBpZiB3ZSBmaW5kIHRleHQgYFtgLCB3aGljaCBpcyBub3QgYSBwYXJ0IG9mIGFueSB0b2tlblxuICAgICAgICBsZXZlbCsrO1xuICAgICAgfSBlbHNlIGlmIChkaXNhYmxlTmVzdGVkKSB7XG4gICAgICAgIHN0YXRlLnBvcyA9IG9sZFBvcztcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChmb3VuZCkge1xuICAgIGxhYmVsRW5kID0gc3RhdGUucG9zO1xuICB9XG5cbiAgLy8gcmVzdG9yZSBvbGQgc3RhdGVcbiAgc3RhdGUucG9zID0gb2xkUG9zO1xuXG4gIHJldHVybiBsYWJlbEVuZDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/helpers/parse_link_label.js\n");
|
1767 |
|
1768 | }),
|
1769 |
|
1770 | "../../../node_modules/markdown-it/lib/helpers/parse_link_title.js":
|
1771 |
|
1772 |
|
1773 |
|
1774 |
|
1775 | (function(module, exports, __webpack_require__) {
|
1776 |
|
1777 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Parse link title\n //\n 'use strict';\n\n var unescapeAll = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").unescapeAll;\n\n module.exports = function parseLinkTitle(str, pos, max) {\n var code,\n marker,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (pos >= max) {\n return result;\n }\n\n marker = str.charCodeAt(pos);\n\n if (marker !== 0x22\n /* \" */\n && marker !== 0x27\n /* ' */\n && marker !== 0x28\n /* ( */\n ) {\n return result;\n }\n\n pos++; // if opening marker is \"(\", switch it to closing marker \")\"\n\n if (marker === 0x28) {\n marker = 0x29;\n }\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === marker) {\n result.pos = pos + 1;\n result.lines = lines;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n } else if (code === 0x28\n /* ( */\n && marker === 0x29\n /* ) */\n ) {\n return result;\n } else if (code === 0x0A) {\n lines++;\n } else if (code === 0x5C\n /* \\ */\n && pos + 1 < max) {\n pos++;\n\n if (str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n\n pos++;\n }\n\n return result;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9oZWxwZXJzL3BhcnNlX2xpbmtfdGl0bGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2hlbHBlcnMvcGFyc2VfbGlua190aXRsZS5qcz8zMDdmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBhcnNlIGxpbmsgdGl0bGVcbi8vXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIHVuZXNjYXBlQWxsID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykudW5lc2NhcGVBbGw7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUxpbmtUaXRsZShzdHIsIHBvcywgbWF4KSB7XG4gIHZhciBjb2RlLFxuICAgICAgbWFya2VyLFxuICAgICAgbGluZXMgPSAwLFxuICAgICAgc3RhcnQgPSBwb3MsXG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgcG9zOiAwLFxuICAgICAgICBsaW5lczogMCxcbiAgICAgICAgc3RyOiAnJ1xuICAgICAgfTtcblxuICBpZiAocG9zID49IG1heCkgeyByZXR1cm4gcmVzdWx0OyB9XG5cbiAgbWFya2VyID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcblxuICBpZiAobWFya2VyICE9PSAweDIyIC8qIFwiICovICYmIG1hcmtlciAhPT0gMHgyNyAvKiAnICovICYmIG1hcmtlciAhPT0gMHgyOCAvKiAoICovKSB7IHJldHVybiByZXN1bHQ7IH1cblxuICBwb3MrKztcblxuICAvLyBpZiBvcGVuaW5nIG1hcmtlciBpcyBcIihcIiwgc3dpdGNoIGl0IHRvIGNsb3NpbmcgbWFya2VyIFwiKVwiXG4gIGlmIChtYXJrZXIgPT09IDB4MjgpIHsgbWFya2VyID0gMHgyOTsgfVxuXG4gIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICBjb2RlID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICByZXN1bHQucG9zID0gcG9zICsgMTtcbiAgICAgIHJlc3VsdC5saW5lcyA9IGxpbmVzO1xuICAgICAgcmVzdWx0LnN0ciA9IHVuZXNjYXBlQWxsKHN0ci5zbGljZShzdGFydCArIDEsIHBvcykpO1xuICAgICAgcmVzdWx0Lm9rID0gdHJ1ZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIGlmIChjb2RlID09PSAweDI4IC8qICggKi8gJiYgbWFya2VyID09PSAweDI5IC8qICkgKi8pIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIGlmIChjb2RlID09PSAweDBBKSB7XG4gICAgICBsaW5lcysrO1xuICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHg1QyAvKiBcXCAqLyAmJiBwb3MgKyAxIDwgbWF4KSB7XG4gICAgICBwb3MrKztcbiAgICAgIGlmIChzdHIuY2hhckNvZGVBdChwb3MpID09PSAweDBBKSB7XG4gICAgICAgIGxpbmVzKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFNQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/helpers/parse_link_title.js\n");
|
1778 |
|
1779 | }),
|
1780 |
|
1781 | "../../../node_modules/markdown-it/lib/index.js":
|
1782 |
|
1783 |
|
1784 |
|
1785 |
|
1786 | (function(module, exports, __webpack_require__) {
|
1787 |
|
1788 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Main parser class\n 'use strict';\n\n var utils = __webpack_require__(/*! ./common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\");\n\n var helpers = __webpack_require__(/*! ./helpers */ \"../../../node_modules/markdown-it/lib/helpers/index.js\");\n\n var Renderer = __webpack_require__(/*! ./renderer */ \"../../../node_modules/markdown-it/lib/renderer.js\");\n\n var ParserCore = __webpack_require__(/*! ./parser_core */ \"../../../node_modules/markdown-it/lib/parser_core.js\");\n\n var ParserBlock = __webpack_require__(/*! ./parser_block */ \"../../../node_modules/markdown-it/lib/parser_block.js\");\n\n var ParserInline = __webpack_require__(/*! ./parser_inline */ \"../../../node_modules/markdown-it/lib/parser_inline.js\");\n\n var LinkifyIt = __webpack_require__(/*! linkify-it */ \"../../../node_modules/linkify-it/index.js\");\n\n var mdurl = __webpack_require__(/*! mdurl */ \"../../../node_modules/mdurl/index.js\");\n\n var punycode = __webpack_require__(/*! punycode */ \"../../../node_modules/node-libs-browser/node_modules/punycode/punycode.js\");\n\n var config = {\n default: __webpack_require__(/*! ./presets/default */ \"../../../node_modules/markdown-it/lib/presets/default.js\"),\n zero: __webpack_require__(/*! ./presets/zero */ \"../../../node_modules/markdown-it/lib/presets/zero.js\"),\n commonmark: __webpack_require__(/*! ./presets/commonmark */ \"../../../node_modules/markdown-it/lib/presets/commonmark.js\")\n }; ////////////////////////////////////////////////////////////////////////////////\n //\n // This validator can prohibit more than really needed to prevent XSS. It's a\n // tradeoff to keep code simple and to be secure by default.\n //\n // If you need different setup - override validator method as you wish. Or\n // replace it with dummy function and use external sanitizer.\n //\n\n var BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\n var GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/;\n\n function validateLink(url) {\n // url should be normalized at this point, and existing entities are decoded\n var str = url.trim().toLowerCase();\n return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) ? true : false : true;\n } ////////////////////////////////////////////////////////////////////////////////\n\n\n var RECODE_HOSTNAME_FOR = ['http:', 'https:', 'mailto:'];\n\n function normalizeLink(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toASCII(parsed.hostname);\n } catch (er) {\n /**/\n }\n }\n }\n\n return mdurl.encode(mdurl.format(parsed));\n }\n\n function normalizeLinkText(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toUnicode(parsed.hostname);\n } catch (er) {\n /**/\n }\n }\n } // add '%' to exclude list because of https://github.com/markdown-it/markdown-it/issues/720\n\n\n return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + '%');\n }\n /**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n * md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n /**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js) -\n * configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) -\n * similar to GFM, used when no preset name given. Enables all available rules,\n * but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.js) -\n * all rules disabled. Useful to quickly setup your config via `.enable()`.\n * For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n * That's not safe! You may need external sanitizer to protect output from XSS.\n * It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n * (`<br />`). This is needed only for full CommonMark compatibility. In real\n * world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `<br>`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n * Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__ - `false`. Set `true` to enable [some language-neutral\n * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) +\n * quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n * pairs, when typographer enabled and smartquotes on. For example, you can\n * use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n * `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n * Highlighter `function (str, lang)` should return escaped HTML. It can also\n * return empty string if the source was not changed and should be escaped\n * externaly. If result starts with <pre... internal wrapper is skipped.\n *\n * ##### Example\n *\n * ```javascript\n * // commonmark mode\n * var md = require('markdown-it')('commonmark');\n *\n * // default mode\n * var md = require('markdown-it')();\n *\n * // enable everything\n * var md = require('markdown-it')({\n * html: true,\n * linkify: true,\n * typographer: true\n * });\n * ```\n *\n * ##### Syntax highlighting\n *\n * ```js\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return hljs.highlight(str, { language: lang, ignoreIllegals: true }).value;\n * } catch (__) {}\n * }\n *\n * return ''; // use external default escaping\n * }\n * });\n * ```\n *\n * Or with full wrapper override (if you need assign class to `<pre>`):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return '<pre class=\"hljs\"><code>' +\n * hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +\n * '</code></pre>';\n * } catch (__) {}\n * }\n *\n * return '<pre class=\"hljs\"><code>' + md.utils.escapeHtml(str) + '</code></pre>';\n * }\n * });\n * ```\n *\n **/\n\n\n function MarkdownIt(presetName, options) {\n if (!(this instanceof MarkdownIt)) {\n return new MarkdownIt(presetName, options);\n }\n\n if (!options) {\n if (!utils.isString(presetName)) {\n options = presetName || {};\n presetName = 'default';\n }\n }\n /**\n * MarkdownIt#inline -> ParserInline\n *\n * Instance of [[ParserInline]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n\n\n this.inline = new ParserInline();\n /**\n * MarkdownIt#block -> ParserBlock\n *\n * Instance of [[ParserBlock]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n\n this.block = new ParserBlock();\n /**\n * MarkdownIt#core -> Core\n *\n * Instance of [[Core]] chain executor. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n\n this.core = new ParserCore();\n /**\n * MarkdownIt#renderer -> Renderer\n *\n * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n * rules for new token types, generated by plugins.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * function myToken(tokens, idx, options, env, self) {\n * //...\n * return result;\n * };\n *\n * md.renderer.rules['my_token'] = myToken\n * ```\n *\n * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js).\n **/\n\n this.renderer = new Renderer();\n /**\n * MarkdownIt#linkify -> LinkifyIt\n *\n * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js)\n * rule.\n **/\n\n this.linkify = new LinkifyIt();\n /**\n * MarkdownIt#validateLink(url) -> Boolean\n *\n * Link validation function. CommonMark allows too much in links. By default\n * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n * except some embedded image types.\n *\n * You can change this behaviour:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * // enable everything\n * md.validateLink = function () { return true; }\n * ```\n **/\n\n this.validateLink = validateLink;\n /**\n * MarkdownIt#normalizeLink(url) -> String\n *\n * Function used to encode link url to a machine-readable format,\n * which includes url-encoding, punycode, etc.\n **/\n\n this.normalizeLink = normalizeLink;\n /**\n * MarkdownIt#normalizeLinkText(url) -> String\n *\n * Function used to decode link url to a human-readable format`\n **/\n\n this.normalizeLinkText = normalizeLinkText; // Expose utils & helpers for easy acces from plugins\n\n /**\n * MarkdownIt#utils -> utils\n *\n * Assorted utility functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js).\n **/\n\n this.utils = utils;\n /**\n * MarkdownIt#helpers -> helpers\n *\n * Link components parser functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n **/\n\n this.helpers = utils.assign({}, helpers);\n this.options = {};\n this.configure(presetName);\n\n if (options) {\n this.set(options);\n }\n }\n /** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .set({ html: true, breaks: true })\n * .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\n\n\n MarkdownIt.prototype.set = function (options) {\n utils.assign(this.options, options);\n return this;\n };\n /** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you will - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\n\n\n MarkdownIt.prototype.configure = function (presets) {\n var self = this,\n presetName;\n\n if (utils.isString(presets)) {\n presetName = presets;\n presets = config[presetName];\n\n if (!presets) {\n throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name');\n }\n }\n\n if (!presets) {\n throw new Error('Wrong `markdown-it` preset, can\\'t be empty');\n }\n\n if (presets.options) {\n self.set(presets.options);\n }\n\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name) {\n if (presets.components[name].rules) {\n self[name].ruler.enableOnly(presets.components[name].rules);\n }\n\n if (presets.components[name].rules2) {\n self[name].ruler2.enableOnly(presets.components[name].rules2);\n }\n });\n }\n\n return this;\n };\n /** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .enable(['sub', 'sup'])\n * .disable('smartquotes');\n * ```\n **/\n\n\n MarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.enable(list, true));\n }, this);\n result = result.concat(this.inline.ruler2.enable(list, true));\n var missed = list.filter(function (name) {\n return result.indexOf(name) < 0;\n });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed);\n }\n\n return this;\n };\n /** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\n\n\n MarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.disable(list, true));\n }, this);\n result = result.concat(this.inline.ruler2.disable(list, true));\n var missed = list.filter(function (name) {\n return result.indexOf(name) < 0;\n });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed);\n }\n\n return this;\n };\n /** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n * });\n * ```\n **/\n\n\n MarkdownIt.prototype.use = function (plugin\n /*, params, ... */\n ) {\n var args = [this].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n };\n /** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and return list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\n\n\n MarkdownIt.prototype.parse = function (src, env) {\n if (typeof src !== 'string') {\n throw new Error('Input data should be a String');\n }\n\n var state = new this.core.State(src, this, env);\n this.core.process(state);\n return state.tokens;\n };\n /**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\n\n\n MarkdownIt.prototype.render = function (src, env) {\n env = env || {};\n return this.renderer.render(this.parse(src, env), this.options, env);\n };\n /** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\n\n\n MarkdownIt.prototype.parseInline = function (src, env) {\n var state = new this.core.State(src, this, env);\n state.inlineMode = true;\n this.core.process(state);\n return state.tokens;\n };\n /**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `<p>` tags.\n **/\n\n\n MarkdownIt.prototype.renderInline = function (src, env) {\n env = env || {};\n return this.renderer.render(this.parseInline(src, env), this.options, env);\n };\n\n module.exports = MarkdownIt;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvaW5kZXguanM/NzI2MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBNYWluIHBhcnNlciBjbGFzc1xuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIHV0aWxzICAgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uL3V0aWxzJyk7XG52YXIgaGVscGVycyAgICAgID0gcmVxdWlyZSgnLi9oZWxwZXJzJyk7XG52YXIgUmVuZGVyZXIgICAgID0gcmVxdWlyZSgnLi9yZW5kZXJlcicpO1xudmFyIFBhcnNlckNvcmUgICA9IHJlcXVpcmUoJy4vcGFyc2VyX2NvcmUnKTtcbnZhciBQYXJzZXJCbG9jayAgPSByZXF1aXJlKCcuL3BhcnNlcl9ibG9jaycpO1xudmFyIFBhcnNlcklubGluZSA9IHJlcXVpcmUoJy4vcGFyc2VyX2lubGluZScpO1xudmFyIExpbmtpZnlJdCAgICA9IHJlcXVpcmUoJ2xpbmtpZnktaXQnKTtcbnZhciBtZHVybCAgICAgICAgPSByZXF1aXJlKCdtZHVybCcpO1xudmFyIHB1bnljb2RlICAgICA9IHJlcXVpcmUoJ3B1bnljb2RlJyk7XG5cblxudmFyIGNvbmZpZyA9IHtcbiAgZGVmYXVsdDogcmVxdWlyZSgnLi9wcmVzZXRzL2RlZmF1bHQnKSxcbiAgemVybzogcmVxdWlyZSgnLi9wcmVzZXRzL3plcm8nKSxcbiAgY29tbW9ubWFyazogcmVxdWlyZSgnLi9wcmVzZXRzL2NvbW1vbm1hcmsnKVxufTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vXG4vLyBUaGlzIHZhbGlkYXRvciBjYW4gcHJvaGliaXQgbW9yZSB0aGFuIHJlYWxseSBuZWVkZWQgdG8gcHJldmVudCBYU1MuIEl0J3MgYVxuLy8gdHJhZGVvZmYgdG8ga2VlcCBjb2RlIHNpbXBsZSBhbmQgdG8gYmUgc2VjdXJlIGJ5IGRlZmF1bHQuXG4vL1xuLy8gSWYgeW91IG5lZWQgZGlmZmVyZW50IHNldHVwIC0gb3ZlcnJpZGUgdmFsaWRhdG9yIG1ldGhvZCBhcyB5b3Ugd2lzaC4gT3Jcbi8vIHJlcGxhY2UgaXQgd2l0aCBkdW1teSBmdW5jdGlvbiBhbmQgdXNlIGV4dGVybmFsIHNhbml0aXplci5cbi8vXG5cbnZhciBCQURfUFJPVE9fUkUgPSAvXih2YnNjcmlwdHxqYXZhc2NyaXB0fGZpbGV8ZGF0YSk6LztcbnZhciBHT09EX0RBVEFfUkUgPSAvXmRhdGE6aW1hZ2VcXC8oZ2lmfHBuZ3xqcGVnfHdlYnApOy87XG5cbmZ1bmN0aW9uIHZhbGlkYXRlTGluayh1cmwpIHtcbiAgLy8gdXJsIHNob3VsZCBiZSBub3JtYWxpemVkIGF0IHRoaXMgcG9pbnQsIGFuZCBleGlzdGluZyBlbnRpdGllcyBhcmUgZGVjb2RlZFxuICB2YXIgc3RyID0gdXJsLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gIHJldHVybiBCQURfUFJPVE9fUkUudGVzdChzdHIpID8gKEdPT0RfREFUQV9SRS50ZXN0KHN0cikgPyB0cnVlIDogZmFsc2UpIDogdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuXG52YXIgUkVDT0RFX0hPU1ROQU1FX0ZPUiA9IFsgJ2h0dHA6JywgJ2h0dHBzOicsICdtYWlsdG86JyBdO1xuXG5mdW5jdGlvbiBub3JtYWxpemVMaW5rKHVybCkge1xuICB2YXIgcGFyc2VkID0gbWR1cmwucGFyc2UodXJsLCB0cnVlKTtcblxuICBpZiAocGFyc2VkLmhvc3RuYW1lKSB7XG4gICAgLy8gRW5jb2RlIGhvc3RuYW1lcyBpbiB1cmxzIGxpa2U6XG4gICAgLy8gYGh0dHA6Ly9ob3N0L2AsIGBodHRwczovL2hvc3QvYCwgYG1haWx0bzp1c2VyQGhvc3RgLCBgLy9ob3N0L2BcbiAgICAvL1xuICAgIC8vIFdlIGRvbid0IGVuY29kZSB1bmtub3duIHNjaGVtYXMsIGJlY2F1c2UgaXQncyBsaWtlbHkgdGhhdCB3ZSBlbmNvZGVcbiAgICAvLyBzb21ldGhpbmcgd2Ugc2hvdWxkbid0IChlLmcuIGBza3lwZTpuYW1lYCB0cmVhdGVkIGFzIGBza3lwZTpob3N0YClcbiAgICAvL1xuICAgIGlmICghcGFyc2VkLnByb3RvY29sIHx8IFJFQ09ERV9IT1NUTkFNRV9GT1IuaW5kZXhPZihwYXJzZWQucHJvdG9jb2wpID49IDApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZC5ob3N0bmFtZSA9IHB1bnljb2RlLnRvQVNDSUkocGFyc2VkLmhvc3RuYW1lKTtcbiAgICAgIH0gY2F0Y2ggKGVyKSB7IC8qKi8gfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZHVybC5lbmNvZGUobWR1cmwuZm9ybWF0KHBhcnNlZCkpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVMaW5rVGV4dCh1cmwpIHtcbiAgdmFyIHBhcnNlZCA9IG1kdXJsLnBhcnNlKHVybCwgdHJ1ZSk7XG5cbiAgaWYgKHBhcnNlZC5ob3N0bmFtZSkge1xuICAgIC8vIEVuY29kZSBob3N0bmFtZXMgaW4gdXJscyBsaWtlOlxuICAgIC8vIGBodHRwOi8vaG9zdC9gLCBgaHR0cHM6Ly9ob3N0L2AsIGBtYWlsdG86dXNlckBob3N0YCwgYC8vaG9zdC9gXG4gICAgLy9cbiAgICAvLyBXZSBkb24ndCBlbmNvZGUgdW5rbm93biBzY2hlbWFzLCBiZWNhdXNlIGl0J3MgbGlrZWx5IHRoYXQgd2UgZW5jb2RlXG4gICAgLy8gc29tZXRoaW5nIHdlIHNob3VsZG4ndCAoZS5nLiBgc2t5cGU6bmFtZWAgdHJlYXRlZCBhcyBgc2t5cGU6aG9zdGApXG4gICAgLy9cbiAgICBpZiAoIXBhcnNlZC5wcm90b2NvbCB8fCBSRUNPREVfSE9TVE5BTUVfRk9SLmluZGV4T2YocGFyc2VkLnByb3RvY29sKSA+PSAwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWQuaG9zdG5hbWUgPSBwdW55Y29kZS50b1VuaWNvZGUocGFyc2VkLmhvc3RuYW1lKTtcbiAgICAgIH0gY2F0Y2ggKGVyKSB7IC8qKi8gfVxuICAgIH1cbiAgfVxuXG4gIC8vIGFkZCAnJScgdG8gZXhjbHVkZSBsaXN0IGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2lzc3Vlcy83MjBcbiAgcmV0dXJuIG1kdXJsLmRlY29kZShtZHVybC5mb3JtYXQocGFyc2VkKSwgbWR1cmwuZGVjb2RlLmRlZmF1bHRDaGFycyArICclJyk7XG59XG5cblxuLyoqXG4gKiBjbGFzcyBNYXJrZG93bkl0XG4gKlxuICogTWFpbiBwYXJzZXIvcmVuZGVyZXIgY2xhc3MuXG4gKlxuICogIyMjIyMgVXNhZ2VcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiAvLyBub2RlLmpzLCBcImNsYXNzaWNcIiB3YXk6XG4gKiB2YXIgTWFya2Rvd25JdCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JyksXG4gKiAgICAgbWQgPSBuZXcgTWFya2Rvd25JdCgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcignIyBtYXJrZG93bi1pdCBydWxlenohJyk7XG4gKlxuICogLy8gbm9kZS5qcywgdGhlIHNhbWUsIGJ1dCB3aXRoIHN1Z2FyOlxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcignIyBtYXJrZG93bi1pdCBydWxlenohJyk7XG4gKlxuICogLy8gYnJvd3NlciB3aXRob3V0IEFNRCwgYWRkZWQgdG8gXCJ3aW5kb3dcIiBvbiBzY3JpcHQgbG9hZFxuICogLy8gTm90ZSwgdGhlcmUgYXJlIG5vIGRhc2guXG4gKiB2YXIgbWQgPSB3aW5kb3cubWFya2Rvd25pdCgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcignIyBtYXJrZG93bi1pdCBydWxlenohJyk7XG4gKiBgYGBcbiAqXG4gKiBTaW5nbGUgbGluZSByZW5kZXJpbmcsIHdpdGhvdXQgcGFyYWdyYXBoIHdyYXA6XG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcklubGluZSgnX19tYXJrZG93bi1pdF9fIHJ1bGV6eiEnKTtcbiAqIGBgYFxuICoqL1xuXG4vKipcbiAqIG5ldyBNYXJrZG93bkl0KFtwcmVzZXROYW1lLCBvcHRpb25zXSlcbiAqIC0gcHJlc2V0TmFtZSAoU3RyaW5nKTogb3B0aW9uYWwsIGBjb21tb25tYXJrYCAvIGB6ZXJvYFxuICogLSBvcHRpb25zIChPYmplY3QpXG4gKlxuICogQ3JlYXRlcyBwYXJzZXIgaW5zdGFuc2Ugd2l0aCBnaXZlbiBjb25maWcuIENhbiBiZSBjYWxsZWQgd2l0aG91dCBgbmV3YC5cbiAqXG4gKiAjIyMjIyBwcmVzZXROYW1lXG4gKlxuICogTWFya2Rvd25JdCBwcm92aWRlcyBuYW1lZCBwcmVzZXRzIGFzIGEgY29udmVuaWVuY2UgdG8gcXVpY2tseVxuICogZW5hYmxlL2Rpc2FibGUgYWN0aXZlIHN5bnRheCBydWxlcyBhbmQgb3B0aW9ucyBmb3IgY29tbW9uIHVzZSBjYXNlcy5cbiAqXG4gKiAtIFtcImNvbW1vbm1hcmtcIl0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9wcmVzZXRzL2NvbW1vbm1hcmsuanMpIC1cbiAqICAgY29uZmlndXJlcyBwYXJzZXIgdG8gc3RyaWN0IFtDb21tb25NYXJrXShodHRwOi8vY29tbW9ubWFyay5vcmcvKSBtb2RlLlxuICogLSBbZGVmYXVsdF0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9wcmVzZXRzL2RlZmF1bHQuanMpIC1cbiAqICAgc2ltaWxhciB0byBHRk0sIHVzZWQgd2hlbiBubyBwcmVzZXQgbmFtZSBnaXZlbi4gRW5hYmxlcyBhbGwgYXZhaWxhYmxlIHJ1bGVzLFxuICogICBidXQgc3RpbGwgd2l0aG91dCBodG1sLCB0eXBvZ3JhcGhlciAmIGF1dG9saW5rZXIuXG4gKiAtIFtcInplcm9cIl0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9wcmVzZXRzL3plcm8uanMpIC1cbiAqICAgYWxsIHJ1bGVzIGRpc2FibGVkLiBVc2VmdWwgdG8gcXVpY2tseSBzZXR1cCB5b3VyIGNvbmZpZyB2aWEgYC5lbmFibGUoKWAuXG4gKiAgIEZvciBleGFtcGxlLCB3aGVuIHlvdSBuZWVkIG9ubHkgYGJvbGRgIGFuZCBgaXRhbGljYCBtYXJrdXAgYW5kIG5vdGhpbmcgZWxzZS5cbiAqXG4gKiAjIyMjIyBvcHRpb25zOlxuICpcbiAqIC0gX19odG1sX18gLSBgZmFsc2VgLiBTZXQgYHRydWVgIHRvIGVuYWJsZSBIVE1MIHRhZ3MgaW4gc291cmNlLiBCZSBjYXJlZnVsIVxuICogICBUaGF0J3Mgbm90IHNhZmUhIFlvdSBtYXkgbmVlZCBleHRlcm5hbCBzYW5pdGl6ZXIgdG8gcHJvdGVjdCBvdXRwdXQgZnJvbSBYU1MuXG4gKiAgIEl0J3MgYmV0dGVyIHRvIGV4dGVuZCBmZWF0dXJlcyB2aWEgcGx1Z2lucywgaW5zdGVhZCBvZiBlbmFibGluZyBIVE1MLlxuICogLSBfX3hodG1sT3V0X18gLSBgZmFsc2VgLiBTZXQgYHRydWVgIHRvIGFkZCAnLycgd2hlbiBjbG9zaW5nIHNpbmdsZSB0YWdzXG4gKiAgIChgPGJyIC8+YCkuIFRoaXMgaXMgbmVlZGVkIG9ubHkgZm9yIGZ1bGwgQ29tbW9uTWFyayBjb21wYXRpYmlsaXR5LiBJbiByZWFsXG4gKiAgIHdvcmxkIHlvdSB3aWxsIG5lZWQgSFRNTCBvdXRwdXQuXG4gKiAtIF9fYnJlYWtzX18gLSBgZmFsc2VgLiBTZXQgYHRydWVgIHRvIGNvbnZlcnQgYFxcbmAgaW4gcGFyYWdyYXBocyBpbnRvIGA8YnI+YC5cbiAqIC0gX19sYW5nUHJlZml4X18gLSBgbGFuZ3VhZ2UtYC4gQ1NTIGxhbmd1YWdlIGNsYXNzIHByZWZpeCBmb3IgZmVuY2VkIGJsb2Nrcy5cbiAqICAgQ2FuIGJlIHVzZWZ1bCBmb3IgZXh0ZXJuYWwgaGlnaGxpZ2h0ZXJzLlxuICogLSBfX2xpbmtpZnlfXyAtIGBmYWxzZWAuIFNldCBgdHJ1ZWAgdG8gYXV0b2NvbnZlcnQgVVJMLWxpa2UgdGV4dCB0byBsaW5rcy5cbiAqIC0gX190eXBvZ3JhcGhlcl9fICAtIGBmYWxzZWAuIFNldCBgdHJ1ZWAgdG8gZW5hYmxlIFtzb21lIGxhbmd1YWdlLW5ldXRyYWxcbiAqICAgcmVwbGFjZW1lbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvcnVsZXNfY29yZS9yZXBsYWNlbWVudHMuanMpICtcbiAqICAgcXVvdGVzIGJlYXV0aWZpY2F0aW9uIChzbWFydHF1b3RlcykuXG4gKiAtIF9fcXVvdGVzX18gLSBg4oCc4oCd4oCY4oCZYCwgU3RyaW5nIG9yIEFycmF5LiBEb3VibGUgKyBzaW5nbGUgcXVvdGVzIHJlcGxhY2VtZW50XG4gKiAgIHBhaXJzLCB3aGVuIHR5cG9ncmFwaGVyIGVuYWJsZWQgYW5kIHNtYXJ0cXVvdGVzIG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhblxuICogICB1c2UgYCfCq8K74oCe4oCcJ2AgZm9yIFJ1c3NpYW4sIGAn4oCe4oCc4oCa4oCYJ2AgZm9yIEdlcm1hbiwgYW5kXG4gKiAgIGBbJ8KrXFx4QTAnLCAnXFx4QTDCuycsICfigLlcXHhBMCcsICdcXHhBMOKAuiddYCBmb3IgRnJlbmNoIChpbmNsdWRpbmcgbmJzcCkuXG4gKiAtIF9faGlnaGxpZ2h0X18gLSBgbnVsbGAuIEhpZ2hsaWdodGVyIGZ1bmN0aW9uIGZvciBmZW5jZWQgY29kZSBibG9ja3MuXG4gKiAgIEhpZ2hsaWdodGVyIGBmdW5jdGlvbiAoc3RyLCBsYW5nKWAgc2hvdWxkIHJldHVybiBlc2NhcGVkIEhUTUwuIEl0IGNhbiBhbHNvXG4gKiAgIHJldHVybiBlbXB0eSBzdHJpbmcgaWYgdGhlIHNvdXJjZSB3YXMgbm90IGNoYW5nZWQgYW5kIHNob3VsZCBiZSBlc2NhcGVkXG4gKiAgIGV4dGVybmFseS4gSWYgcmVzdWx0IHN0YXJ0cyB3aXRoIDxwcmUuLi4gaW50ZXJuYWwgd3JhcHBlciBpcyBza2lwcGVkLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiAvLyBjb21tb25tYXJrIG1vZGVcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoJ2NvbW1vbm1hcmsnKTtcbiAqXG4gKiAvLyBkZWZhdWx0IG1vZGVcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKTtcbiAqXG4gKiAvLyBlbmFibGUgZXZlcnl0aGluZ1xuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSh7XG4gKiAgIGh0bWw6IHRydWUsXG4gKiAgIGxpbmtpZnk6IHRydWUsXG4gKiAgIHR5cG9ncmFwaGVyOiB0cnVlXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqICMjIyMjIFN5bnRheCBoaWdobGlnaHRpbmdcbiAqXG4gKiBgYGBqc1xuICogdmFyIGhsanMgPSByZXF1aXJlKCdoaWdobGlnaHQuanMnKSAvLyBodHRwczovL2hpZ2hsaWdodGpzLm9yZy9cbiAqXG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKHtcbiAqICAgaGlnaGxpZ2h0OiBmdW5jdGlvbiAoc3RyLCBsYW5nKSB7XG4gKiAgICAgaWYgKGxhbmcgJiYgaGxqcy5nZXRMYW5ndWFnZShsYW5nKSkge1xuICogICAgICAgdHJ5IHtcbiAqICAgICAgICAgcmV0dXJuIGhsanMuaGlnaGxpZ2h0KHN0ciwgeyBsYW5ndWFnZTogbGFuZywgaWdub3JlSWxsZWdhbHM6IHRydWUgfSkudmFsdWU7XG4gKiAgICAgICB9IGNhdGNoIChfXykge31cbiAqICAgICB9XG4gKlxuICogICAgIHJldHVybiAnJzsgLy8gdXNlIGV4dGVybmFsIGRlZmF1bHQgZXNjYXBpbmdcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBPciB3aXRoIGZ1bGwgd3JhcHBlciBvdmVycmlkZSAoaWYgeW91IG5lZWQgYXNzaWduIGNsYXNzIHRvIGA8cHJlPmApOlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBobGpzID0gcmVxdWlyZSgnaGlnaGxpZ2h0LmpzJykgLy8gaHR0cHM6Ly9oaWdobGlnaHRqcy5vcmcvXG4gKlxuICogLy8gQWN0dWFsIGRlZmF1bHQgdmFsdWVzXG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKHtcbiAqICAgaGlnaGxpZ2h0OiBmdW5jdGlvbiAoc3RyLCBsYW5nKSB7XG4gKiAgICAgaWYgKGxhbmcgJiYgaGxqcy5nZXRMYW5ndWFnZShsYW5nKSkge1xuICogICAgICAgdHJ5IHtcbiAqICAgICAgICAgcmV0dXJuICc8cHJlIGNsYXNzPVwiaGxqc1wiPjxjb2RlPicgK1xuICogICAgICAgICAgICAgICAgaGxqcy5oaWdobGlnaHQoc3RyLCB7IGxhbmd1YWdlOiBsYW5nLCBpZ25vcmVJbGxlZ2FsczogdHJ1ZSB9KS52YWx1ZSArXG4gKiAgICAgICAgICAgICAgICAnPC9jb2RlPjwvcHJlPic7XG4gKiAgICAgICB9IGNhdGNoIChfXykge31cbiAqICAgICB9XG4gKlxuICogICAgIHJldHVybiAnPHByZSBjbGFzcz1cImhsanNcIj48Y29kZT4nICsgbWQudXRpbHMuZXNjYXBlSHRtbChzdHIpICsgJzwvY29kZT48L3ByZT4nO1xuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqKi9cbmZ1bmN0aW9uIE1hcmtkb3duSXQocHJlc2V0TmFtZSwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTWFya2Rvd25JdCkpIHtcbiAgICByZXR1cm4gbmV3IE1hcmtkb3duSXQocHJlc2V0TmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBpZiAoIXV0aWxzLmlzU3RyaW5nKHByZXNldE5hbWUpKSB7XG4gICAgICBvcHRpb25zID0gcHJlc2V0TmFtZSB8fCB7fTtcbiAgICAgIHByZXNldE5hbWUgPSAnZGVmYXVsdCc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjaW5saW5lIC0+IFBhcnNlcklubGluZVxuICAgKlxuICAgKiBJbnN0YW5jZSBvZiBbW1BhcnNlcklubGluZV1dLiBZb3UgbWF5IG5lZWQgaXQgdG8gYWRkIG5ldyBydWxlcyB3aGVuXG4gICAqIHdyaXRpbmcgcGx1Z2lucy4gRm9yIHNpbXBsZSBydWxlcyBjb250cm9sIHVzZSBbW01hcmtkb3duSXQuZGlzYWJsZV1dIGFuZFxuICAgKiBbW01hcmtkb3duSXQuZW5hYmxlXV0uXG4gICAqKi9cbiAgdGhpcy5pbmxpbmUgPSBuZXcgUGFyc2VySW5saW5lKCk7XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjYmxvY2sgLT4gUGFyc2VyQmxvY2tcbiAgICpcbiAgICogSW5zdGFuY2Ugb2YgW1tQYXJzZXJCbG9ja11dLiBZb3UgbWF5IG5lZWQgaXQgdG8gYWRkIG5ldyBydWxlcyB3aGVuXG4gICAqIHdyaXRpbmcgcGx1Z2lucy4gRm9yIHNpbXBsZSBydWxlcyBjb250cm9sIHVzZSBbW01hcmtkb3duSXQuZGlzYWJsZV1dIGFuZFxuICAgKiBbW01hcmtkb3duSXQuZW5hYmxlXV0uXG4gICAqKi9cbiAgdGhpcy5ibG9jayA9IG5ldyBQYXJzZXJCbG9jaygpO1xuXG4gIC8qKlxuICAgKiBNYXJrZG93bkl0I2NvcmUgLT4gQ29yZVxuICAgKlxuICAgKiBJbnN0YW5jZSBvZiBbW0NvcmVdXSBjaGFpbiBleGVjdXRvci4gWW91IG1heSBuZWVkIGl0IHRvIGFkZCBuZXcgcnVsZXMgd2hlblxuICAgKiB3cml0aW5nIHBsdWdpbnMuIEZvciBzaW1wbGUgcnVsZXMgY29udHJvbCB1c2UgW1tNYXJrZG93bkl0LmRpc2FibGVdXSBhbmRcbiAgICogW1tNYXJrZG93bkl0LmVuYWJsZV1dLlxuICAgKiovXG4gIHRoaXMuY29yZSA9IG5ldyBQYXJzZXJDb3JlKCk7XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjcmVuZGVyZXIgLT4gUmVuZGVyZXJcbiAgICpcbiAgICogSW5zdGFuY2Ugb2YgW1tSZW5kZXJlcl1dLiBVc2UgaXQgdG8gbW9kaWZ5IG91dHB1dCBsb29rLiBPciB0byBhZGQgcmVuZGVyaW5nXG4gICAqIHJ1bGVzIGZvciBuZXcgdG9rZW4gdHlwZXMsIGdlbmVyYXRlZCBieSBwbHVnaW5zLlxuICAgKlxuICAgKiAjIyMjIyBFeGFtcGxlXG4gICAqXG4gICAqIGBgYGphdmFzY3JpcHRcbiAgICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICAgKlxuICAgKiBmdW5jdGlvbiBteVRva2VuKHRva2VucywgaWR4LCBvcHRpb25zLCBlbnYsIHNlbGYpIHtcbiAgICogICAvLy4uLlxuICAgKiAgIHJldHVybiByZXN1bHQ7XG4gICAqIH07XG4gICAqXG4gICAqIG1kLnJlbmRlcmVyLnJ1bGVzWydteV90b2tlbiddID0gbXlUb2tlblxuICAgKiBgYGBcbiAgICpcbiAgICogU2VlIFtbUmVuZGVyZXJdXSBkb2NzIGFuZCBbc291cmNlIGNvZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvcmVuZGVyZXIuanMpLlxuICAgKiovXG4gIHRoaXMucmVuZGVyZXIgPSBuZXcgUmVuZGVyZXIoKTtcblxuICAvKipcbiAgICogTWFya2Rvd25JdCNsaW5raWZ5IC0+IExpbmtpZnlJdFxuICAgKlxuICAgKiBbbGlua2lmeS1pdF0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L2xpbmtpZnktaXQpIGluc3RhbmNlLlxuICAgKiBVc2VkIGJ5IFtsaW5raWZ5XShodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbWFya2Rvd24taXQvYmxvYi9tYXN0ZXIvbGliL3J1bGVzX2NvcmUvbGlua2lmeS5qcylcbiAgICogcnVsZS5cbiAgICoqL1xuICB0aGlzLmxpbmtpZnkgPSBuZXcgTGlua2lmeUl0KCk7XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjdmFsaWRhdGVMaW5rKHVybCkgLT4gQm9vbGVhblxuICAgKlxuICAgKiBMaW5rIHZhbGlkYXRpb24gZnVuY3Rpb24uIENvbW1vbk1hcmsgYWxsb3dzIHRvbyBtdWNoIGluIGxpbmtzLiBCeSBkZWZhdWx0XG4gICAqIHdlIGRpc2FibGUgYGphdmFzY3JpcHQ6YCwgYHZic2NyaXB0OmAsIGBmaWxlOmAgc2NoZW1hcywgYW5kIGFsbW9zdCBhbGwgYGRhdGE6Li4uYCBzY2hlbWFzXG4gICAqIGV4Y2VwdCBzb21lIGVtYmVkZGVkIGltYWdlIHR5cGVzLlxuICAgKlxuICAgKiBZb3UgY2FuIGNoYW5nZSB0aGlzIGJlaGF2aW91cjpcbiAgICpcbiAgICogYGBgamF2YXNjcmlwdFxuICAgKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gICAqIC8vIGVuYWJsZSBldmVyeXRoaW5nXG4gICAqIG1kLnZhbGlkYXRlTGluayA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH1cbiAgICogYGBgXG4gICAqKi9cbiAgdGhpcy52YWxpZGF0ZUxpbmsgPSB2YWxpZGF0ZUxpbms7XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjbm9ybWFsaXplTGluayh1cmwpIC0+IFN0cmluZ1xuICAgKlxuICAgKiBGdW5jdGlvbiB1c2VkIHRvIGVuY29kZSBsaW5rIHVybCB0byBhIG1hY2hpbmUtcmVhZGFibGUgZm9ybWF0LFxuICAgKiB3aGljaCBpbmNsdWRlcyB1cmwtZW5jb2RpbmcsIHB1bnljb2RlLCBldGMuXG4gICAqKi9cbiAgdGhpcy5ub3JtYWxpemVMaW5rID0gbm9ybWFsaXplTGluaztcblxuICAvKipcbiAgICogTWFya2Rvd25JdCNub3JtYWxpemVMaW5rVGV4dCh1cmwpIC0+IFN0cmluZ1xuICAgKlxuICAgKiBGdW5jdGlvbiB1c2VkIHRvIGRlY29kZSBsaW5rIHVybCB0byBhIGh1bWFuLXJlYWRhYmxlIGZvcm1hdGBcbiAgICoqL1xuICB0aGlzLm5vcm1hbGl6ZUxpbmtUZXh0ID0gbm9ybWFsaXplTGlua1RleHQ7XG5cblxuICAvLyBFeHBvc2UgdXRpbHMgJiBoZWxwZXJzIGZvciBlYXN5IGFjY2VzIGZyb20gcGx1Z2luc1xuXG4gIC8qKlxuICAgKiBNYXJrZG93bkl0I3V0aWxzIC0+IHV0aWxzXG4gICAqXG4gICAqIEFzc29ydGVkIHV0aWxpdHkgZnVuY3Rpb25zLCB1c2VmdWwgdG8gd3JpdGUgcGx1Z2lucy4gU2VlIGRldGFpbHNcbiAgICogW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvY29tbW9uL3V0aWxzLmpzKS5cbiAgICoqL1xuICB0aGlzLnV0aWxzID0gdXRpbHM7XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjaGVscGVycyAtPiBoZWxwZXJzXG4gICAqXG4gICAqIExpbmsgY29tcG9uZW50cyBwYXJzZXIgZnVuY3Rpb25zLCB1c2VmdWwgdG8gd3JpdGUgcGx1Z2lucy4gU2VlIGRldGFpbHNcbiAgICogW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvaGVscGVycykuXG4gICAqKi9cbiAgdGhpcy5oZWxwZXJzID0gdXRpbHMuYXNzaWduKHt9LCBoZWxwZXJzKTtcblxuXG4gIHRoaXMub3B0aW9ucyA9IHt9O1xuICB0aGlzLmNvbmZpZ3VyZShwcmVzZXROYW1lKTtcblxuICBpZiAob3B0aW9ucykgeyB0aGlzLnNldChvcHRpb25zKTsgfVxufVxuXG5cbi8qKiBjaGFpbmFibGVcbiAqIE1hcmtkb3duSXQuc2V0KG9wdGlvbnMpXG4gKlxuICogU2V0IHBhcnNlciBvcHRpb25zIChpbiB0aGUgc2FtZSBmb3JtYXQgYXMgaW4gY29uc3RydWN0b3IpLiBQcm9iYWJseSwgeW91XG4gKiB3aWxsIG5ldmVyIG5lZWQgaXQsIGJ1dCB5b3UgY2FuIGNoYW5nZSBvcHRpb25zIGFmdGVyIGNvbnN0cnVjdG9yIGNhbGwuXG4gKlxuICogIyMjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKVxuICogICAgICAgICAgICAgLnNldCh7IGh0bWw6IHRydWUsIGJyZWFrczogdHJ1ZSB9KVxuICogICAgICAgICAgICAgLnNldCh7IHR5cG9ncmFwaGVyLCB0cnVlIH0pO1xuICogYGBgXG4gKlxuICogX19Ob3RlOl9fIFRvIGFjaGlldmUgdGhlIGJlc3QgcG9zc2libGUgcGVyZm9ybWFuY2UsIGRvbid0IG1vZGlmeSBhXG4gKiBgbWFya2Rvd24taXRgIGluc3RhbmNlIG9wdGlvbnMgb24gdGhlIGZseS4gSWYgeW91IG5lZWQgbXVsdGlwbGUgY29uZmlndXJhdGlvbnNcbiAqIGl0J3MgYmVzdCB0byBjcmVhdGUgbXVsdGlwbGUgaW5zdGFuY2VzIGFuZCBpbml0aWFsaXplIGVhY2ggd2l0aCBzZXBhcmF0ZVxuICogY29uZmlnLlxuICoqL1xuTWFya2Rvd25JdC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdXRpbHMuYXNzaWduKHRoaXMub3B0aW9ucywgb3B0aW9ucyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuXG4vKiogY2hhaW5hYmxlLCBpbnRlcm5hbFxuICogTWFya2Rvd25JdC5jb25maWd1cmUocHJlc2V0cylcbiAqXG4gKiBCYXRjaCBsb2FkIG9mIGFsbCBvcHRpb25zIGFuZCBjb21wZW5lbnQgc2V0dGluZ3MuIFRoaXMgaXMgaW50ZXJuYWwgbWV0aG9kLFxuICogYW5kIHlvdSBwcm9iYWJseSB3aWxsIG5vdCBuZWVkIGl0LiBCdXQgaWYgeW91IHdpbGwgLSBzZWUgYXZhaWxhYmxlIHByZXNldHNcbiAqIGFuZCBkYXRhIHN0cnVjdHVyZSBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L3RyZWUvbWFzdGVyL2xpYi9wcmVzZXRzKVxuICpcbiAqIFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB0byB1c2UgcHJlc2V0cyBpbnN0ZWFkIG9mIGRpcmVjdCBjb25maWcgbG9hZHMuIFRoYXRcbiAqIHdpbGwgZ2l2ZSBiZXR0ZXIgY29tcGF0aWJpbGl0eSB3aXRoIG5leHQgdmVyc2lvbnMuXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5jb25maWd1cmUgPSBmdW5jdGlvbiAocHJlc2V0cykge1xuICB2YXIgc2VsZiA9IHRoaXMsIHByZXNldE5hbWU7XG5cbiAgaWYgKHV0aWxzLmlzU3RyaW5nKHByZXNldHMpKSB7XG4gICAgcHJlc2V0TmFtZSA9IHByZXNldHM7XG4gICAgcHJlc2V0cyA9IGNvbmZpZ1twcmVzZXROYW1lXTtcbiAgICBpZiAoIXByZXNldHMpIHsgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBgbWFya2Rvd24taXRgIHByZXNldCBcIicgKyBwcmVzZXROYW1lICsgJ1wiLCBjaGVjayBuYW1lJyk7IH1cbiAgfVxuXG4gIGlmICghcHJlc2V0cykgeyB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIGBtYXJrZG93bi1pdGAgcHJlc2V0LCBjYW5cXCd0IGJlIGVtcHR5Jyk7IH1cblxuICBpZiAocHJlc2V0cy5vcHRpb25zKSB7IHNlbGYuc2V0KHByZXNldHMub3B0aW9ucyk7IH1cblxuICBpZiAocHJlc2V0cy5jb21wb25lbnRzKSB7XG4gICAgT2JqZWN0LmtleXMocHJlc2V0cy5jb21wb25lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICBpZiAocHJlc2V0cy5jb21wb25lbnRzW25hbWVdLnJ1bGVzKSB7XG4gICAgICAgIHNlbGZbbmFtZV0ucnVsZXIuZW5hYmxlT25seShwcmVzZXRzLmNvbXBvbmVudHNbbmFtZV0ucnVsZXMpO1xuICAgICAgfVxuICAgICAgaWYgKHByZXNldHMuY29tcG9uZW50c1tuYW1lXS5ydWxlczIpIHtcbiAgICAgICAgc2VsZltuYW1lXS5ydWxlcjIuZW5hYmxlT25seShwcmVzZXRzLmNvbXBvbmVudHNbbmFtZV0ucnVsZXMyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cblxuLyoqIGNoYWluYWJsZVxuICogTWFya2Rvd25JdC5lbmFibGUobGlzdCwgaWdub3JlSW52YWxpZClcbiAqIC0gbGlzdCAoU3RyaW5nfEFycmF5KTogcnVsZSBuYW1lIG9yIGxpc3Qgb2YgcnVsZSBuYW1lcyB0byBlbmFibGVcbiAqIC0gaWdub3JlSW52YWxpZCAoQm9vbGVhbik6IHNldCBgdHJ1ZWAgdG8gaWdub3JlIGVycm9ycyB3aGVuIHJ1bGUgbm90IGZvdW5kLlxuICpcbiAqIEVuYWJsZSBsaXN0IG9yIHJ1bGVzLiBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgZmluZCBhcHByb3ByaWF0ZSBjb21wb25lbnRzLFxuICogY29udGFpbmluZyBydWxlcyB3aXRoIGdpdmVuIG5hbWVzLiBJZiBydWxlIG5vdCBmb3VuZCwgYW5kIGBpZ25vcmVJbnZhbGlkYFxuICogbm90IHNldCAtIHRocm93cyBleGNlcHRpb24uXG4gKlxuICogIyMjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKVxuICogICAgICAgICAgICAgLmVuYWJsZShbJ3N1YicsICdzdXAnXSlcbiAqICAgICAgICAgICAgIC5kaXNhYmxlKCdzbWFydHF1b3RlcycpO1xuICogYGBgXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbiAobGlzdCwgaWdub3JlSW52YWxpZCkge1xuICB2YXIgcmVzdWx0ID0gW107XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3QpKSB7IGxpc3QgPSBbIGxpc3QgXTsgfVxuXG4gIFsgJ2NvcmUnLCAnYmxvY2snLCAnaW5saW5lJyBdLmZvckVhY2goZnVuY3Rpb24gKGNoYWluKSB7XG4gICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh0aGlzW2NoYWluXS5ydWxlci5lbmFibGUobGlzdCwgdHJ1ZSkpO1xuICB9LCB0aGlzKTtcblxuICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHRoaXMuaW5saW5lLnJ1bGVyMi5lbmFibGUobGlzdCwgdHJ1ZSkpO1xuXG4gIHZhciBtaXNzZWQgPSBsaXN0LmZpbHRlcihmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gcmVzdWx0LmluZGV4T2YobmFtZSkgPCAwOyB9KTtcblxuICBpZiAobWlzc2VkLmxlbmd0aCAmJiAhaWdub3JlSW52YWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWFya2Rvd25JdC4gRmFpbGVkIHRvIGVuYWJsZSB1bmtub3duIHJ1bGUocyk6ICcgKyBtaXNzZWQpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5cbi8qKiBjaGFpbmFibGVcbiAqIE1hcmtkb3duSXQuZGlzYWJsZShsaXN0LCBpZ25vcmVJbnZhbGlkKVxuICogLSBsaXN0IChTdHJpbmd8QXJyYXkpOiBydWxlIG5hbWUgb3IgbGlzdCBvZiBydWxlIG5hbWVzIHRvIGRpc2FibGUuXG4gKiAtIGlnbm9yZUludmFsaWQgKEJvb2xlYW4pOiBzZXQgYHRydWVgIHRvIGlnbm9yZSBlcnJvcnMgd2hlbiBydWxlIG5vdCBmb3VuZC5cbiAqXG4gKiBUaGUgc2FtZSBhcyBbW01hcmtkb3duSXQuZW5hYmxlXV0sIGJ1dCB0dXJuIHNwZWNpZmllZCBydWxlcyBvZmYuXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5kaXNhYmxlID0gZnVuY3Rpb24gKGxpc3QsIGlnbm9yZUludmFsaWQpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkgeyBsaXN0ID0gWyBsaXN0IF07IH1cblxuICBbICdjb3JlJywgJ2Jsb2NrJywgJ2lubGluZScgXS5mb3JFYWNoKGZ1bmN0aW9uIChjaGFpbikge1xuICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGhpc1tjaGFpbl0ucnVsZXIuZGlzYWJsZShsaXN0LCB0cnVlKSk7XG4gIH0sIHRoaXMpO1xuXG4gIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGhpcy5pbmxpbmUucnVsZXIyLmRpc2FibGUobGlzdCwgdHJ1ZSkpO1xuXG4gIHZhciBtaXNzZWQgPSBsaXN0LmZpbHRlcihmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gcmVzdWx0LmluZGV4T2YobmFtZSkgPCAwOyB9KTtcblxuICBpZiAobWlzc2VkLmxlbmd0aCAmJiAhaWdub3JlSW52YWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWFya2Rvd25JdC4gRmFpbGVkIHRvIGRpc2FibGUgdW5rbm93biBydWxlKHMpOiAnICsgbWlzc2VkKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cblxuLyoqIGNoYWluYWJsZVxuICogTWFya2Rvd25JdC51c2UocGx1Z2luLCBwYXJhbXMpXG4gKlxuICogTG9hZCBzcGVjaWZpZWQgcGx1Z2luIHdpdGggZ2l2ZW4gcGFyYW1zIGludG8gY3VycmVudCBwYXJzZXIgaW5zdGFuY2UuXG4gKiBJdCdzIGp1c3QgYSBzdWdhciB0byBjYWxsIGBwbHVnaW4obWQsIHBhcmFtcylgIHdpdGggY3VycmluZy5cbiAqXG4gKiAjIyMjIyBFeGFtcGxlXG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogdmFyIGl0ZXJhdG9yID0gcmVxdWlyZSgnbWFya2Rvd24taXQtZm9yLWlubGluZScpO1xuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpXG4gKiAgICAgICAgICAgICAudXNlKGl0ZXJhdG9yLCAnZm9vX3JlcGxhY2UnLCAndGV4dCcsIGZ1bmN0aW9uICh0b2tlbnMsIGlkeCkge1xuICogICAgICAgICAgICAgICB0b2tlbnNbaWR4XS5jb250ZW50ID0gdG9rZW5zW2lkeF0uY29udGVudC5yZXBsYWNlKC9mb28vZywgJ2JhcicpO1xuICogICAgICAgICAgICAgfSk7XG4gKiBgYGBcbiAqKi9cbk1hcmtkb3duSXQucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIChwbHVnaW4gLyosIHBhcmFtcywgLi4uICovKSB7XG4gIHZhciBhcmdzID0gWyB0aGlzIF0uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpO1xuICBwbHVnaW4uYXBwbHkocGx1Z2luLCBhcmdzKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5cbi8qKiBpbnRlcm5hbFxuICogTWFya2Rvd25JdC5wYXJzZShzcmMsIGVudikgLT4gQXJyYXlcbiAqIC0gc3JjIChTdHJpbmcpOiBzb3VyY2Ugc3RyaW5nXG4gKiAtIGVudiAoT2JqZWN0KTogZW52aXJvbm1lbnQgc2FuZGJveFxuICpcbiAqIFBhcnNlIGlucHV0IHN0cmluZyBhbmQgcmV0dXJuIGxpc3Qgb2YgYmxvY2sgdG9rZW5zIChzcGVjaWFsIHRva2VuIHR5cGVcbiAqIFwiaW5saW5lXCIgd2lsbCBjb250YWluIGxpc3Qgb2YgaW5saW5lIHRva2VucykuIFlvdSBzaG91bGQgbm90IGNhbGwgdGhpc1xuICogbWV0aG9kIGRpcmVjdGx5LCB1bnRpbCB5b3Ugd3JpdGUgY3VzdG9tIHJlbmRlcmVyIChmb3IgZXhhbXBsZSwgdG8gcHJvZHVjZVxuICogQVNUKS5cbiAqXG4gKiBgZW52YCBpcyB1c2VkIHRvIHBhc3MgZGF0YSBiZXR3ZWVuIFwiZGlzdHJpYnV0ZWRcIiBydWxlcyBhbmQgcmV0dXJuIGFkZGl0aW9uYWxcbiAqIG1ldGFkYXRhIGxpa2UgcmVmZXJlbmNlIGluZm8sIG5lZWRlZCBmb3IgdGhlIHJlbmRlcmVyLiBJdCBhbHNvIGNhbiBiZSB1c2VkIHRvXG4gKiBpbmplY3QgZGF0YSBpbiBzcGVjaWZpYyBjYXNlcy4gVXN1YWxseSwgeW91IHdpbGwgYmUgb2sgdG8gcGFzcyBge31gLFxuICogYW5kIHRoZW4gcGFzcyB1cGRhdGVkIG9iamVjdCB0byByZW5kZXJlci5cbiAqKi9cbk1hcmtkb3duSXQucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24gKHNyYywgZW52KSB7XG4gIGlmICh0eXBlb2Ygc3JjICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgZGF0YSBzaG91bGQgYmUgYSBTdHJpbmcnKTtcbiAgfVxuXG4gIHZhciBzdGF0ZSA9IG5ldyB0aGlzLmNvcmUuU3RhdGUoc3JjLCB0aGlzLCBlbnYpO1xuXG4gIHRoaXMuY29yZS5wcm9jZXNzKHN0YXRlKTtcblxuICByZXR1cm4gc3RhdGUudG9rZW5zO1xufTtcblxuXG4vKipcbiAqIE1hcmtkb3duSXQucmVuZGVyKHNyYyBbLCBlbnZdKSAtPiBTdHJpbmdcbiAqIC0gc3JjIChTdHJpbmcpOiBzb3VyY2Ugc3RyaW5nXG4gKiAtIGVudiAoT2JqZWN0KTogZW52aXJvbm1lbnQgc2FuZGJveFxuICpcbiAqIFJlbmRlciBtYXJrZG93biBzdHJpbmcgaW50byBodG1sLiBJdCBkb2VzIGFsbCBtYWdpYyBmb3IgeW91IDopLlxuICpcbiAqIGBlbnZgIGNhbiBiZSB1c2VkIHRvIGluamVjdCBhZGRpdGlvbmFsIG1ldGFkYXRhIChge31gIGJ5IGRlZmF1bHQpLlxuICogQnV0IHlvdSB3aWxsIG5vdCBuZWVkIGl0IHdpdGggaGlnaCBwcm9iYWJpbGl0eS4gU2VlIGFsc28gY29tbWVudFxuICogaW4gW1tNYXJrZG93bkl0LnBhcnNlXV0uXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoc3JjLCBlbnYpIHtcbiAgZW52ID0gZW52IHx8IHt9O1xuXG4gIHJldHVybiB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnBhcnNlKHNyYywgZW52KSwgdGhpcy5vcHRpb25zLCBlbnYpO1xufTtcblxuXG4vKiogaW50ZXJuYWxcbiAqIE1hcmtkb3duSXQucGFyc2VJbmxpbmUoc3JjLCBlbnYpIC0+IEFycmF5XG4gKiAtIHNyYyAoU3RyaW5nKTogc291cmNlIHN0cmluZ1xuICogLSBlbnYgKE9iamVjdCk6IGVudmlyb25tZW50IHNhbmRib3hcbiAqXG4gKiBUaGUgc2FtZSBhcyBbW01hcmtkb3duSXQucGFyc2VdXSBidXQgc2tpcCBhbGwgYmxvY2sgcnVsZXMuIEl0IHJldHVybnMgdGhlXG4gKiBibG9jayB0b2tlbnMgbGlzdCB3aXRoIHRoZSBzaW5nbGUgYGlubGluZWAgZWxlbWVudCwgY29udGFpbmluZyBwYXJzZWQgaW5saW5lXG4gKiB0b2tlbnMgaW4gYGNoaWxkcmVuYCBwcm9wZXJ0eS4gQWxzbyB1cGRhdGVzIGBlbnZgIG9iamVjdC5cbiAqKi9cbk1hcmtkb3duSXQucHJvdG90eXBlLnBhcnNlSW5saW5lID0gZnVuY3Rpb24gKHNyYywgZW52KSB7XG4gIHZhciBzdGF0ZSA9IG5ldyB0aGlzLmNvcmUuU3RhdGUoc3JjLCB0aGlzLCBlbnYpO1xuXG4gIHN0YXRlLmlubGluZU1vZGUgPSB0cnVlO1xuICB0aGlzLmNvcmUucHJvY2VzcyhzdGF0ZSk7XG5cbiAgcmV0dXJuIHN0YXRlLnRva2Vucztcbn07XG5cblxuLyoqXG4gKiBNYXJrZG93bkl0LnJlbmRlcklubGluZShzcmMgWywgZW52XSkgLT4gU3RyaW5nXG4gKiAtIHNyYyAoU3RyaW5nKTogc291cmNlIHN0cmluZ1xuICogLSBlbnYgKE9iamVjdCk6IGVudmlyb25tZW50IHNhbmRib3hcbiAqXG4gKiBTaW1pbGFyIHRvIFtbTWFya2Rvd25JdC5yZW5kZXJdXSBidXQgZm9yIHNpbmdsZSBwYXJhZ3JhcGggY29udGVudC4gUmVzdWx0XG4gKiB3aWxsIE5PVCBiZSB3cmFwcGVkIGludG8gYDxwPmAgdGFncy5cbiAqKi9cbk1hcmtkb3duSXQucHJvdG90eXBlLnJlbmRlcklubGluZSA9IGZ1bmN0aW9uIChzcmMsIGVudikge1xuICBlbnYgPSBlbnYgfHwge307XG5cbiAgcmV0dXJuIHRoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMucGFyc2VJbmxpbmUoc3JjLCBlbnYpLCB0aGlzLm9wdGlvbnMsIGVudik7XG59O1xuXG5cbm1vZHVsZS5leHBvcnRzID0gTWFya2Rvd25JdDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/index.js\n");
|
1789 |
|
1790 | }),
|
1791 |
|
1792 | "../../../node_modules/markdown-it/lib/parser_block.js":
|
1793 |
|
1794 |
|
1795 |
|
1796 |
|
1797 | (function(module, exports, __webpack_require__) {
|
1798 |
|
1799 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n /** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n 'use strict';\n\n var Ruler = __webpack_require__(/*! ./ruler */ \"../../../node_modules/markdown-it/lib/ruler.js\");\n\n var _rules = [// First 2 params - rule name & source. Secondary array - list of rules,\n // which can be terminated by this one.\n ['table', __webpack_require__(/*! ./rules_block/table */ \"../../../node_modules/markdown-it/lib/rules_block/table.js\"), ['paragraph', 'reference']], ['code', __webpack_require__(/*! ./rules_block/code */ \"../../../node_modules/markdown-it/lib/rules_block/code.js\")], ['fence', __webpack_require__(/*! ./rules_block/fence */ \"../../../node_modules/markdown-it/lib/rules_block/fence.js\"), ['paragraph', 'reference', 'blockquote', 'list']], ['blockquote', __webpack_require__(/*! ./rules_block/blockquote */ \"../../../node_modules/markdown-it/lib/rules_block/blockquote.js\"), ['paragraph', 'reference', 'blockquote', 'list']], ['hr', __webpack_require__(/*! ./rules_block/hr */ \"../../../node_modules/markdown-it/lib/rules_block/hr.js\"), ['paragraph', 'reference', 'blockquote', 'list']], ['list', __webpack_require__(/*! ./rules_block/list */ \"../../../node_modules/markdown-it/lib/rules_block/list.js\"), ['paragraph', 'reference', 'blockquote']], ['reference', __webpack_require__(/*! ./rules_block/reference */ \"../../../node_modules/markdown-it/lib/rules_block/reference.js\")], ['html_block', __webpack_require__(/*! ./rules_block/html_block */ \"../../../node_modules/markdown-it/lib/rules_block/html_block.js\"), ['paragraph', 'reference', 'blockquote']], ['heading', __webpack_require__(/*! ./rules_block/heading */ \"../../../node_modules/markdown-it/lib/rules_block/heading.js\"), ['paragraph', 'reference', 'blockquote']], ['lheading', __webpack_require__(/*! ./rules_block/lheading */ \"../../../node_modules/markdown-it/lib/rules_block/lheading.js\")], ['paragraph', __webpack_require__(/*! ./rules_block/paragraph */ \"../../../node_modules/markdown-it/lib/rules_block/paragraph.js\")]];\n /**\n * new ParserBlock()\n **/\n\n function ParserBlock() {\n /**\n * ParserBlock#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of block rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1], {\n alt: (_rules[i][2] || []).slice()\n });\n }\n } // Generate tokens for input range\n //\n\n\n ParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n var ok,\n i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n line = startLine,\n hasEmptyLines = false,\n maxNesting = state.md.options.maxNesting;\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line);\n\n if (line >= endLine) {\n break;\n } // Termination condition for nested calls.\n // Nested calls currently used for blockquotes & lists\n\n\n if (state.sCount[line] < state.blkIndent) {\n break;\n } // If nesting level exceeded - skip tail to the end. That's not ordinary\n // situation and we should not care about content.\n\n\n if (state.level >= maxNesting) {\n state.line = endLine;\n break;\n } // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.line`\n // - update `state.tokens`\n // - return true\n\n\n for (i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false);\n\n if (ok) {\n break;\n }\n } // set state.tight if we had an empty line before current tag\n // i.e. latest empty line should not count\n\n\n state.tight = !hasEmptyLines; // paragraph might \"eat\" one newline after it in nested lists\n\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true;\n }\n\n line = state.line;\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true;\n line++;\n state.line = line;\n }\n }\n };\n /**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\n\n\n ParserBlock.prototype.parse = function (src, md, env, outTokens) {\n var state;\n\n if (!src) {\n return;\n }\n\n state = new this.State(src, md, env, outTokens);\n this.tokenize(state, state.line, state.lineMax);\n };\n\n ParserBlock.prototype.State = __webpack_require__(/*! ./rules_block/state_block */ \"../../../node_modules/markdown-it/lib/rules_block/state_block.js\");\n module.exports = ParserBlock;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wYXJzZXJfYmxvY2suanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3BhcnNlcl9ibG9jay5qcz83Y2YwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBpbnRlcm5hbFxuICogY2xhc3MgUGFyc2VyQmxvY2tcbiAqXG4gKiBCbG9jay1sZXZlbCB0b2tlbml6ZXIuXG4gKiovXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFJ1bGVyICAgICAgICAgICA9IHJlcXVpcmUoJy4vcnVsZXInKTtcblxuXG52YXIgX3J1bGVzID0gW1xuICAvLyBGaXJzdCAyIHBhcmFtcyAtIHJ1bGUgbmFtZSAmIHNvdXJjZS4gU2Vjb25kYXJ5IGFycmF5IC0gbGlzdCBvZiBydWxlcyxcbiAgLy8gd2hpY2ggY2FuIGJlIHRlcm1pbmF0ZWQgYnkgdGhpcyBvbmUuXG4gIFsgJ3RhYmxlJywgICAgICByZXF1aXJlKCcuL3J1bGVzX2Jsb2NrL3RhYmxlJyksICAgICAgWyAncGFyYWdyYXBoJywgJ3JlZmVyZW5jZScgXSBdLFxuICBbICdjb2RlJywgICAgICAgcmVxdWlyZSgnLi9ydWxlc19ibG9jay9jb2RlJykgXSxcbiAgWyAnZmVuY2UnLCAgICAgIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svZmVuY2UnKSwgICAgICBbICdwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJywgJ2Jsb2NrcXVvdGUnLCAnbGlzdCcgXSBdLFxuICBbICdibG9ja3F1b3RlJywgcmVxdWlyZSgnLi9ydWxlc19ibG9jay9ibG9ja3F1b3RlJyksIFsgJ3BhcmFncmFwaCcsICdyZWZlcmVuY2UnLCAnYmxvY2txdW90ZScsICdsaXN0JyBdIF0sXG4gIFsgJ2hyJywgICAgICAgICByZXF1aXJlKCcuL3J1bGVzX2Jsb2NrL2hyJyksICAgICAgICAgWyAncGFyYWdyYXBoJywgJ3JlZmVyZW5jZScsICdibG9ja3F1b3RlJywgJ2xpc3QnIF0gXSxcbiAgWyAnbGlzdCcsICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svbGlzdCcpLCAgICAgICBbICdwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJywgJ2Jsb2NrcXVvdGUnIF0gXSxcbiAgWyAncmVmZXJlbmNlJywgIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svcmVmZXJlbmNlJykgXSxcbiAgWyAnaHRtbF9ibG9jaycsIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svaHRtbF9ibG9jaycpLCBbICdwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJywgJ2Jsb2NrcXVvdGUnIF0gXSxcbiAgWyAnaGVhZGluZycsICAgIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svaGVhZGluZycpLCAgICBbICdwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJywgJ2Jsb2NrcXVvdGUnIF0gXSxcbiAgWyAnbGhlYWRpbmcnLCAgIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svbGhlYWRpbmcnKSBdLFxuICBbICdwYXJhZ3JhcGgnLCAgcmVxdWlyZSgnLi9ydWxlc19ibG9jay9wYXJhZ3JhcGgnKSBdXG5dO1xuXG5cbi8qKlxuICogbmV3IFBhcnNlckJsb2NrKClcbiAqKi9cbmZ1bmN0aW9uIFBhcnNlckJsb2NrKCkge1xuICAvKipcbiAgICogUGFyc2VyQmxvY2sjcnVsZXIgLT4gUnVsZXJcbiAgICpcbiAgICogW1tSdWxlcl1dIGluc3RhbmNlLiBLZWVwIGNvbmZpZ3VyYXRpb24gb2YgYmxvY2sgcnVsZXMuXG4gICAqKi9cbiAgdGhpcy5ydWxlciA9IG5ldyBSdWxlcigpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgX3J1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5ydWxlci5wdXNoKF9ydWxlc1tpXVswXSwgX3J1bGVzW2ldWzFdLCB7IGFsdDogKF9ydWxlc1tpXVsyXSB8fCBbXSkuc2xpY2UoKSB9KTtcbiAgfVxufVxuXG5cbi8vIEdlbmVyYXRlIHRva2VucyBmb3IgaW5wdXQgcmFuZ2Vcbi8vXG5QYXJzZXJCbG9jay5wcm90b3R5cGUudG9rZW5pemUgPSBmdW5jdGlvbiAoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSkge1xuICB2YXIgb2ssIGksXG4gICAgICBydWxlcyA9IHRoaXMucnVsZXIuZ2V0UnVsZXMoJycpLFxuICAgICAgbGVuID0gcnVsZXMubGVuZ3RoLFxuICAgICAgbGluZSA9IHN0YXJ0TGluZSxcbiAgICAgIGhhc0VtcHR5TGluZXMgPSBmYWxzZSxcbiAgICAgIG1heE5lc3RpbmcgPSBzdGF0ZS5tZC5vcHRpb25zLm1heE5lc3Rpbmc7XG5cbiAgd2hpbGUgKGxpbmUgPCBlbmRMaW5lKSB7XG4gICAgc3RhdGUubGluZSA9IGxpbmUgPSBzdGF0ZS5za2lwRW1wdHlMaW5lcyhsaW5lKTtcbiAgICBpZiAobGluZSA+PSBlbmRMaW5lKSB7IGJyZWFrOyB9XG5cbiAgICAvLyBUZXJtaW5hdGlvbiBjb25kaXRpb24gZm9yIG5lc3RlZCBjYWxscy5cbiAgICAvLyBOZXN0ZWQgY2FsbHMgY3VycmVudGx5IHVzZWQgZm9yIGJsb2NrcXVvdGVzICYgbGlzdHNcbiAgICBpZiAoc3RhdGUuc0NvdW50W2xpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7IGJyZWFrOyB9XG5cbiAgICAvLyBJZiBuZXN0aW5nIGxldmVsIGV4Y2VlZGVkIC0gc2tpcCB0YWlsIHRvIHRoZSBlbmQuIFRoYXQncyBub3Qgb3JkaW5hcnlcbiAgICAvLyBzaXR1YXRpb24gYW5kIHdlIHNob3VsZCBub3QgY2FyZSBhYm91dCBjb250ZW50LlxuICAgIGlmIChzdGF0ZS5sZXZlbCA+PSBtYXhOZXN0aW5nKSB7XG4gICAgICBzdGF0ZS5saW5lID0gZW5kTGluZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFRyeSBhbGwgcG9zc2libGUgcnVsZXMuXG4gICAgLy8gT24gc3VjY2VzcywgcnVsZSBzaG91bGQ6XG4gICAgLy9cbiAgICAvLyAtIHVwZGF0ZSBgc3RhdGUubGluZWBcbiAgICAvLyAtIHVwZGF0ZSBgc3RhdGUudG9rZW5zYFxuICAgIC8vIC0gcmV0dXJuIHRydWVcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgb2sgPSBydWxlc1tpXShzdGF0ZSwgbGluZSwgZW5kTGluZSwgZmFsc2UpO1xuICAgICAgaWYgKG9rKSB7IGJyZWFrOyB9XG4gICAgfVxuXG4gICAgLy8gc2V0IHN0YXRlLnRpZ2h0IGlmIHdlIGhhZCBhbiBlbXB0eSBsaW5lIGJlZm9yZSBjdXJyZW50IHRhZ1xuICAgIC8vIGkuZS4gbGF0ZXN0IGVtcHR5IGxpbmUgc2hvdWxkIG5vdCBjb3VudFxuICAgIHN0YXRlLnRpZ2h0ID0gIWhhc0VtcHR5TGluZXM7XG5cbiAgICAvLyBwYXJhZ3JhcGggbWlnaHQgXCJlYXRcIiBvbmUgbmV3bGluZSBhZnRlciBpdCBpbiBuZXN0ZWQgbGlzdHNcbiAgICBpZiAoc3RhdGUuaXNFbXB0eShzdGF0ZS5saW5lIC0gMSkpIHtcbiAgICAgIGhhc0VtcHR5TGluZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGxpbmUgPSBzdGF0ZS5saW5lO1xuXG4gICAgaWYgKGxpbmUgPCBlbmRMaW5lICYmIHN0YXRlLmlzRW1wdHkobGluZSkpIHtcbiAgICAgIGhhc0VtcHR5TGluZXMgPSB0cnVlO1xuICAgICAgbGluZSsrO1xuICAgICAgc3RhdGUubGluZSA9IGxpbmU7XG4gICAgfVxuICB9XG59O1xuXG5cbi8qKlxuICogUGFyc2VyQmxvY2sucGFyc2Uoc3RyLCBtZCwgZW52LCBvdXRUb2tlbnMpXG4gKlxuICogUHJvY2VzcyBpbnB1dCBzdHJpbmcgYW5kIHB1c2ggYmxvY2sgdG9rZW5zIGludG8gYG91dFRva2Vuc2BcbiAqKi9cblBhcnNlckJsb2NrLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uIChzcmMsIG1kLCBlbnYsIG91dFRva2Vucykge1xuICB2YXIgc3RhdGU7XG5cbiAgaWYgKCFzcmMpIHsgcmV0dXJuOyB9XG5cbiAgc3RhdGUgPSBuZXcgdGhpcy5TdGF0ZShzcmMsIG1kLCBlbnYsIG91dFRva2Vucyk7XG5cbiAgdGhpcy50b2tlbml6ZShzdGF0ZSwgc3RhdGUubGluZSwgc3RhdGUubGluZU1heCk7XG59O1xuXG5cblBhcnNlckJsb2NrLnByb3RvdHlwZS5TdGF0ZSA9IHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svc3RhdGVfYmxvY2snKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFBhcnNlckJsb2NrO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQWNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/parser_block.js\n");
|
1800 |
|
1801 | }),
|
1802 |
|
1803 | "../../../node_modules/markdown-it/lib/parser_core.js":
|
1804 |
|
1805 |
|
1806 |
|
1807 |
|
1808 | (function(module, exports, __webpack_require__) {
|
1809 |
|
1810 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n /** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n 'use strict';\n\n var Ruler = __webpack_require__(/*! ./ruler */ \"../../../node_modules/markdown-it/lib/ruler.js\");\n\n var _rules = [['normalize', __webpack_require__(/*! ./rules_core/normalize */ \"../../../node_modules/markdown-it/lib/rules_core/normalize.js\")], ['block', __webpack_require__(/*! ./rules_core/block */ \"../../../node_modules/markdown-it/lib/rules_core/block.js\")], ['inline', __webpack_require__(/*! ./rules_core/inline */ \"../../../node_modules/markdown-it/lib/rules_core/inline.js\")], ['linkify', __webpack_require__(/*! ./rules_core/linkify */ \"../../../node_modules/markdown-it/lib/rules_core/linkify.js\")], ['replacements', __webpack_require__(/*! ./rules_core/replacements */ \"../../../node_modules/markdown-it/lib/rules_core/replacements.js\")], ['smartquotes', __webpack_require__(/*! ./rules_core/smartquotes */ \"../../../node_modules/markdown-it/lib/rules_core/smartquotes.js\")]];\n /**\n * new Core()\n **/\n\n function Core() {\n /**\n * Core#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of core rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n }\n /**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\n\n\n Core.prototype.process = function (state) {\n var i, l, rules;\n rules = this.ruler.getRules('');\n\n for (i = 0, l = rules.length; i < l; i++) {\n rules[i](state);\n }\n };\n\n Core.prototype.State = __webpack_require__(/*! ./rules_core/state_core */ \"../../../node_modules/markdown-it/lib/rules_core/state_core.js\");\n module.exports = Core;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wYXJzZXJfY29yZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcGFyc2VyX2NvcmUuanM/NGRmYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogaW50ZXJuYWxcbiAqIGNsYXNzIENvcmVcbiAqXG4gKiBUb3AtbGV2ZWwgcnVsZXMgZXhlY3V0b3IuIEdsdWVzIGJsb2NrL2lubGluZSBwYXJzZXJzIGFuZCBkb2VzIGludGVybWVkaWF0ZVxuICogdHJhbnNmb3JtYXRpb25zLlxuICoqL1xuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBSdWxlciAgPSByZXF1aXJlKCcuL3J1bGVyJyk7XG5cblxudmFyIF9ydWxlcyA9IFtcbiAgWyAnbm9ybWFsaXplJywgICAgICByZXF1aXJlKCcuL3J1bGVzX2NvcmUvbm9ybWFsaXplJykgICAgICBdLFxuICBbICdibG9jaycsICAgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfY29yZS9ibG9jaycpICAgICAgICAgIF0sXG4gIFsgJ2lubGluZScsICAgICAgICAgcmVxdWlyZSgnLi9ydWxlc19jb3JlL2lubGluZScpICAgICAgICAgXSxcbiAgWyAnbGlua2lmeScsICAgICAgICByZXF1aXJlKCcuL3J1bGVzX2NvcmUvbGlua2lmeScpICAgICAgICBdLFxuICBbICdyZXBsYWNlbWVudHMnLCAgIHJlcXVpcmUoJy4vcnVsZXNfY29yZS9yZXBsYWNlbWVudHMnKSAgIF0sXG4gIFsgJ3NtYXJ0cXVvdGVzJywgICAgcmVxdWlyZSgnLi9ydWxlc19jb3JlL3NtYXJ0cXVvdGVzJykgICAgXVxuXTtcblxuXG4vKipcbiAqIG5ldyBDb3JlKClcbiAqKi9cbmZ1bmN0aW9uIENvcmUoKSB7XG4gIC8qKlxuICAgKiBDb3JlI3J1bGVyIC0+IFJ1bGVyXG4gICAqXG4gICAqIFtbUnVsZXJdXSBpbnN0YW5jZS4gS2VlcCBjb25maWd1cmF0aW9uIG9mIGNvcmUgcnVsZXMuXG4gICAqKi9cbiAgdGhpcy5ydWxlciA9IG5ldyBSdWxlcigpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgX3J1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5ydWxlci5wdXNoKF9ydWxlc1tpXVswXSwgX3J1bGVzW2ldWzFdKTtcbiAgfVxufVxuXG5cbi8qKlxuICogQ29yZS5wcm9jZXNzKHN0YXRlKVxuICpcbiAqIEV4ZWN1dGVzIGNvcmUgY2hhaW4gcnVsZXMuXG4gKiovXG5Db3JlLnByb3RvdHlwZS5wcm9jZXNzID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIHZhciBpLCBsLCBydWxlcztcblxuICBydWxlcyA9IHRoaXMucnVsZXIuZ2V0UnVsZXMoJycpO1xuXG4gIGZvciAoaSA9IDAsIGwgPSBydWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBydWxlc1tpXShzdGF0ZSk7XG4gIH1cbn07XG5cbkNvcmUucHJvdG90eXBlLlN0YXRlID0gcmVxdWlyZSgnLi9ydWxlc19jb3JlL3N0YXRlX2NvcmUnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IENvcmU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/parser_core.js\n");
|
1811 |
|
1812 | }),
|
1813 |
|
1814 | "../../../node_modules/markdown-it/lib/parser_inline.js":
|
1815 |
|
1816 |
|
1817 |
|
1818 |
|
1819 | (function(module, exports, __webpack_require__) {
|
1820 |
|
1821 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n /** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n 'use strict';\n\n var Ruler = __webpack_require__(/*! ./ruler */ \"../../../node_modules/markdown-it/lib/ruler.js\"); ////////////////////////////////////////////////////////////////////////////////\n // Parser rules\n\n\n var _rules = [['text', __webpack_require__(/*! ./rules_inline/text */ \"../../../node_modules/markdown-it/lib/rules_inline/text.js\")], ['newline', __webpack_require__(/*! ./rules_inline/newline */ \"../../../node_modules/markdown-it/lib/rules_inline/newline.js\")], ['escape', __webpack_require__(/*! ./rules_inline/escape */ \"../../../node_modules/markdown-it/lib/rules_inline/escape.js\")], ['backticks', __webpack_require__(/*! ./rules_inline/backticks */ \"../../../node_modules/markdown-it/lib/rules_inline/backticks.js\")], ['strikethrough', __webpack_require__(/*! ./rules_inline/strikethrough */ \"../../../node_modules/markdown-it/lib/rules_inline/strikethrough.js\").tokenize], ['emphasis', __webpack_require__(/*! ./rules_inline/emphasis */ \"../../../node_modules/markdown-it/lib/rules_inline/emphasis.js\").tokenize], ['link', __webpack_require__(/*! ./rules_inline/link */ \"../../../node_modules/markdown-it/lib/rules_inline/link.js\")], ['image', __webpack_require__(/*! ./rules_inline/image */ \"../../../node_modules/markdown-it/lib/rules_inline/image.js\")], ['autolink', __webpack_require__(/*! ./rules_inline/autolink */ \"../../../node_modules/markdown-it/lib/rules_inline/autolink.js\")], ['html_inline', __webpack_require__(/*! ./rules_inline/html_inline */ \"../../../node_modules/markdown-it/lib/rules_inline/html_inline.js\")], ['entity', __webpack_require__(/*! ./rules_inline/entity */ \"../../../node_modules/markdown-it/lib/rules_inline/entity.js\")]];\n var _rules2 = [['balance_pairs', __webpack_require__(/*! ./rules_inline/balance_pairs */ \"../../../node_modules/markdown-it/lib/rules_inline/balance_pairs.js\")], ['strikethrough', __webpack_require__(/*! ./rules_inline/strikethrough */ \"../../../node_modules/markdown-it/lib/rules_inline/strikethrough.js\").postProcess], ['emphasis', __webpack_require__(/*! ./rules_inline/emphasis */ \"../../../node_modules/markdown-it/lib/rules_inline/emphasis.js\").postProcess], ['text_collapse', __webpack_require__(/*! ./rules_inline/text_collapse */ \"../../../node_modules/markdown-it/lib/rules_inline/text_collapse.js\")]];\n /**\n * new ParserInline()\n **/\n\n function ParserInline() {\n var i;\n /**\n * ParserInline#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of inline rules.\n **/\n\n this.ruler = new Ruler();\n\n for (i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n /**\n * ParserInline#ruler2 -> Ruler\n *\n * [[Ruler]] instance. Second ruler used for post-processing\n * (e.g. in emphasis-like rules).\n **/\n\n\n this.ruler2 = new Ruler();\n\n for (i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1]);\n }\n } // Skip single token by running all rules in validation mode;\n // returns `true` if any rule reported success\n //\n\n\n ParserInline.prototype.skipToken = function (state) {\n var ok,\n i,\n pos = state.pos,\n rules = this.ruler.getRules(''),\n len = rules.length,\n maxNesting = state.md.options.maxNesting,\n cache = state.cache;\n\n if (typeof cache[pos] !== 'undefined') {\n state.pos = cache[pos];\n return;\n }\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n // Increment state.level and decrement it later to limit recursion.\n // It's harmless to do here, because no tokens are created. But ideally,\n // we'd need a separate private state variable for this purpose.\n //\n state.level++;\n ok = rules[i](state, true);\n state.level--;\n\n if (ok) {\n break;\n }\n }\n } else {\n // Too much nesting, just skip until the end of the paragraph.\n //\n // NOTE: this will cause links to behave incorrectly in the following case,\n // when an amount of `[` is exactly equal to `maxNesting + 1`:\n //\n // [[[[[[[[[[[[[[[[[[[[[foo]()\n //\n // TODO: remove this workaround when CM standard will allow nested links\n // (we can replace it by preventing links from being parsed in\n // validation mode)\n //\n state.pos = state.posMax;\n }\n\n if (!ok) {\n state.pos++;\n }\n\n cache[pos] = state.pos;\n }; // Generate tokens for input range\n //\n\n\n ParserInline.prototype.tokenize = function (state) {\n var ok,\n i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n end = state.posMax,\n maxNesting = state.md.options.maxNesting;\n\n while (state.pos < end) {\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n ok = rules[i](state, false);\n\n if (ok) {\n break;\n }\n }\n }\n\n if (ok) {\n if (state.pos >= end) {\n break;\n }\n\n continue;\n }\n\n state.pending += state.src[state.pos++];\n }\n\n if (state.pending) {\n state.pushPending();\n }\n };\n /**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\n\n\n ParserInline.prototype.parse = function (str, md, env, outTokens) {\n var i, rules, len;\n var state = new this.State(str, md, env, outTokens);\n this.tokenize(state);\n rules = this.ruler2.getRules('');\n len = rules.length;\n\n for (i = 0; i < len; i++) {\n rules[i](state);\n }\n };\n\n ParserInline.prototype.State = __webpack_require__(/*! ./rules_inline/state_inline */ \"../../../node_modules/markdown-it/lib/rules_inline/state_inline.js\");\n module.exports = ParserInline;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wYXJzZXJfaW5saW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wYXJzZXJfaW5saW5lLmpzP2U2YTAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIGludGVybmFsXG4gKiBjbGFzcyBQYXJzZXJJbmxpbmVcbiAqXG4gKiBUb2tlbml6ZXMgcGFyYWdyYXBoIGNvbnRlbnQuXG4gKiovXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFJ1bGVyICAgICAgICAgICA9IHJlcXVpcmUoJy4vcnVsZXInKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGFyc2VyIHJ1bGVzXG5cbnZhciBfcnVsZXMgPSBbXG4gIFsgJ3RleHQnLCAgICAgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL3RleHQnKSBdLFxuICBbICduZXdsaW5lJywgICAgICAgICByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9uZXdsaW5lJykgXSxcbiAgWyAnZXNjYXBlJywgICAgICAgICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvZXNjYXBlJykgXSxcbiAgWyAnYmFja3RpY2tzJywgICAgICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvYmFja3RpY2tzJykgXSxcbiAgWyAnc3RyaWtldGhyb3VnaCcsICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvc3RyaWtldGhyb3VnaCcpLnRva2VuaXplIF0sXG4gIFsgJ2VtcGhhc2lzJywgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2VtcGhhc2lzJykudG9rZW5pemUgXSxcbiAgWyAnbGluaycsICAgICAgICAgICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvbGluaycpIF0sXG4gIFsgJ2ltYWdlJywgICAgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2ltYWdlJykgXSxcbiAgWyAnYXV0b2xpbmsnLCAgICAgICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvYXV0b2xpbmsnKSBdLFxuICBbICdodG1sX2lubGluZScsICAgICByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9odG1sX2lubGluZScpIF0sXG4gIFsgJ2VudGl0eScsICAgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2VudGl0eScpIF1cbl07XG5cbnZhciBfcnVsZXMyID0gW1xuICBbICdiYWxhbmNlX3BhaXJzJywgICByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9iYWxhbmNlX3BhaXJzJykgXSxcbiAgWyAnc3RyaWtldGhyb3VnaCcsICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvc3RyaWtldGhyb3VnaCcpLnBvc3RQcm9jZXNzIF0sXG4gIFsgJ2VtcGhhc2lzJywgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2VtcGhhc2lzJykucG9zdFByb2Nlc3MgXSxcbiAgWyAndGV4dF9jb2xsYXBzZScsICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvdGV4dF9jb2xsYXBzZScpIF1cbl07XG5cblxuLyoqXG4gKiBuZXcgUGFyc2VySW5saW5lKClcbiAqKi9cbmZ1bmN0aW9uIFBhcnNlcklubGluZSgpIHtcbiAgdmFyIGk7XG5cbiAgLyoqXG4gICAqIFBhcnNlcklubGluZSNydWxlciAtPiBSdWxlclxuICAgKlxuICAgKiBbW1J1bGVyXV0gaW5zdGFuY2UuIEtlZXAgY29uZmlndXJhdGlvbiBvZiBpbmxpbmUgcnVsZXMuXG4gICAqKi9cbiAgdGhpcy5ydWxlciA9IG5ldyBSdWxlcigpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBfcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLnJ1bGVyLnB1c2goX3J1bGVzW2ldWzBdLCBfcnVsZXNbaV1bMV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcklubGluZSNydWxlcjIgLT4gUnVsZXJcbiAgICpcbiAgICogW1tSdWxlcl1dIGluc3RhbmNlLiBTZWNvbmQgcnVsZXIgdXNlZCBmb3IgcG9zdC1wcm9jZXNzaW5nXG4gICAqIChlLmcuIGluIGVtcGhhc2lzLWxpa2UgcnVsZXMpLlxuICAgKiovXG4gIHRoaXMucnVsZXIyID0gbmV3IFJ1bGVyKCk7XG5cbiAgZm9yIChpID0gMDsgaSA8IF9ydWxlczIubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLnJ1bGVyMi5wdXNoKF9ydWxlczJbaV1bMF0sIF9ydWxlczJbaV1bMV0pO1xuICB9XG59XG5cblxuLy8gU2tpcCBzaW5nbGUgdG9rZW4gYnkgcnVubmluZyBhbGwgcnVsZXMgaW4gdmFsaWRhdGlvbiBtb2RlO1xuLy8gcmV0dXJucyBgdHJ1ZWAgaWYgYW55IHJ1bGUgcmVwb3J0ZWQgc3VjY2Vzc1xuLy9cblBhcnNlcklubGluZS5wcm90b3R5cGUuc2tpcFRva2VuID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIHZhciBvaywgaSwgcG9zID0gc3RhdGUucG9zLFxuICAgICAgcnVsZXMgPSB0aGlzLnJ1bGVyLmdldFJ1bGVzKCcnKSxcbiAgICAgIGxlbiA9IHJ1bGVzLmxlbmd0aCxcbiAgICAgIG1heE5lc3RpbmcgPSBzdGF0ZS5tZC5vcHRpb25zLm1heE5lc3RpbmcsXG4gICAgICBjYWNoZSA9IHN0YXRlLmNhY2hlO1xuXG5cbiAgaWYgKHR5cGVvZiBjYWNoZVtwb3NdICE9PSAndW5kZWZpbmVkJykge1xuICAgIHN0YXRlLnBvcyA9IGNhY2hlW3Bvc107XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHN0YXRlLmxldmVsIDwgbWF4TmVzdGluZykge1xuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgLy8gSW5jcmVtZW50IHN0YXRlLmxldmVsIGFuZCBkZWNyZW1lbnQgaXQgbGF0ZXIgdG8gbGltaXQgcmVjdXJzaW9uLlxuICAgICAgLy8gSXQncyBoYXJtbGVzcyB0byBkbyBoZXJlLCBiZWNhdXNlIG5vIHRva2VucyBhcmUgY3JlYXRlZC4gQnV0IGlkZWFsbHksXG4gICAgICAvLyB3ZSdkIG5lZWQgYSBzZXBhcmF0ZSBwcml2YXRlIHN0YXRlIHZhcmlhYmxlIGZvciB0aGlzIHB1cnBvc2UuXG4gICAgICAvL1xuICAgICAgc3RhdGUubGV2ZWwrKztcbiAgICAgIG9rID0gcnVsZXNbaV0oc3RhdGUsIHRydWUpO1xuICAgICAgc3RhdGUubGV2ZWwtLTtcblxuICAgICAgaWYgKG9rKSB7IGJyZWFrOyB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFRvbyBtdWNoIG5lc3RpbmcsIGp1c3Qgc2tpcCB1bnRpbCB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGguXG4gICAgLy9cbiAgICAvLyBOT1RFOiB0aGlzIHdpbGwgY2F1c2UgbGlua3MgdG8gYmVoYXZlIGluY29ycmVjdGx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZSxcbiAgICAvLyAgICAgICB3aGVuIGFuIGFtb3VudCBvZiBgW2AgaXMgZXhhY3RseSBlcXVhbCB0byBgbWF4TmVzdGluZyArIDFgOlxuICAgIC8vXG4gICAgLy8gICAgICAgW1tbW1tbW1tbW1tbW1tbW1tbW1tbZm9vXSgpXG4gICAgLy9cbiAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyB3b3JrYXJvdW5kIHdoZW4gQ00gc3RhbmRhcmQgd2lsbCBhbGxvdyBuZXN0ZWQgbGlua3NcbiAgICAvLyAgICAgICAod2UgY2FuIHJlcGxhY2UgaXQgYnkgcHJldmVudGluZyBsaW5rcyBmcm9tIGJlaW5nIHBhcnNlZCBpblxuICAgIC8vICAgICAgIHZhbGlkYXRpb24gbW9kZSlcbiAgICAvL1xuICAgIHN0YXRlLnBvcyA9IHN0YXRlLnBvc01heDtcbiAgfVxuXG4gIGlmICghb2spIHsgc3RhdGUucG9zKys7IH1cbiAgY2FjaGVbcG9zXSA9IHN0YXRlLnBvcztcbn07XG5cblxuLy8gR2VuZXJhdGUgdG9rZW5zIGZvciBpbnB1dCByYW5nZVxuLy9cblBhcnNlcklubGluZS5wcm90b3R5cGUudG9rZW5pemUgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgdmFyIG9rLCBpLFxuICAgICAgcnVsZXMgPSB0aGlzLnJ1bGVyLmdldFJ1bGVzKCcnKSxcbiAgICAgIGxlbiA9IHJ1bGVzLmxlbmd0aCxcbiAgICAgIGVuZCA9IHN0YXRlLnBvc01heCxcbiAgICAgIG1heE5lc3RpbmcgPSBzdGF0ZS5tZC5vcHRpb25zLm1heE5lc3Rpbmc7XG5cbiAgd2hpbGUgKHN0YXRlLnBvcyA8IGVuZCkge1xuICAgIC8vIFRyeSBhbGwgcG9zc2libGUgcnVsZXMuXG4gICAgLy8gT24gc3VjY2VzcywgcnVsZSBzaG91bGQ6XG4gICAgLy9cbiAgICAvLyAtIHVwZGF0ZSBgc3RhdGUucG9zYFxuICAgIC8vIC0gdXBkYXRlIGBzdGF0ZS50b2tlbnNgXG4gICAgLy8gLSByZXR1cm4gdHJ1ZVxuXG4gICAgaWYgKHN0YXRlLmxldmVsIDwgbWF4TmVzdGluZykge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIG9rID0gcnVsZXNbaV0oc3RhdGUsIGZhbHNlKTtcbiAgICAgICAgaWYgKG9rKSB7IGJyZWFrOyB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9rKSB7XG4gICAgICBpZiAoc3RhdGUucG9zID49IGVuZCkgeyBicmVhazsgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgc3RhdGUucGVuZGluZyArPSBzdGF0ZS5zcmNbc3RhdGUucG9zKytdO1xuICB9XG5cbiAgaWYgKHN0YXRlLnBlbmRpbmcpIHtcbiAgICBzdGF0ZS5wdXNoUGVuZGluZygpO1xuICB9XG59O1xuXG5cbi8qKlxuICogUGFyc2VySW5saW5lLnBhcnNlKHN0ciwgbWQsIGVudiwgb3V0VG9rZW5zKVxuICpcbiAqIFByb2Nlc3MgaW5wdXQgc3RyaW5nIGFuZCBwdXNoIGlubGluZSB0b2tlbnMgaW50byBgb3V0VG9rZW5zYFxuICoqL1xuUGFyc2VySW5saW5lLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uIChzdHIsIG1kLCBlbnYsIG91dFRva2Vucykge1xuICB2YXIgaSwgcnVsZXMsIGxlbjtcbiAgdmFyIHN0YXRlID0gbmV3IHRoaXMuU3RhdGUoc3RyLCBtZCwgZW52LCBvdXRUb2tlbnMpO1xuXG4gIHRoaXMudG9rZW5pemUoc3RhdGUpO1xuXG4gIHJ1bGVzID0gdGhpcy5ydWxlcjIuZ2V0UnVsZXMoJycpO1xuICBsZW4gPSBydWxlcy5sZW5ndGg7XG5cbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcnVsZXNbaV0oc3RhdGUpO1xuICB9XG59O1xuXG5cblBhcnNlcklubGluZS5wcm90b3R5cGUuU3RhdGUgPSByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9zdGF0ZV9pbmxpbmUnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFBhcnNlcklubGluZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFjQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/parser_inline.js\n");
|
1822 |
|
1823 | }),
|
1824 |
|
1825 | "../../../node_modules/markdown-it/lib/presets/commonmark.js":
|
1826 |
|
1827 |
|
1828 |
|
1829 |
|
1830 | (function(module, exports, __webpack_require__) {
|
1831 |
|
1832 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Commonmark default options\n 'use strict';\n\n module.exports = {\n options: {\n html: true,\n // Enable HTML tags in source\n xhtmlOut: true,\n // Use '/' to close single tags (<br />)\n breaks: false,\n // Convert '\\n' in paragraphs into <br>\n langPrefix: 'language-',\n // CSS language prefix for fenced blocks\n linkify: false,\n // autoconvert URL-like texts to links\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019',\n\n /* “”‘’ */\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with <pre... internal wrapper is skipped.\n //\n // function (/*str, lang*/) { return ''; }\n //\n highlight: null,\n maxNesting: 20 // Internal protection, recursion limit\n\n },\n components: {\n core: {\n rules: ['normalize', 'block', 'inline']\n },\n block: {\n rules: ['blockquote', 'code', 'fence', 'heading', 'hr', 'html_block', 'lheading', 'list', 'reference', 'paragraph']\n },\n inline: {\n rules: ['autolink', 'backticks', 'emphasis', 'entity', 'escape', 'html_inline', 'image', 'link', 'newline', 'text'],\n rules2: ['balance_pairs', 'emphasis', 'text_collapse']\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wcmVzZXRzL2NvbW1vbm1hcmsuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3ByZXNldHMvY29tbW9ubWFyay5qcz9kODVjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvbW1vbm1hcmsgZGVmYXVsdCBvcHRpb25zXG5cbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgb3B0aW9uczoge1xuICAgIGh0bWw6ICAgICAgICAgdHJ1ZSwgICAgICAgICAvLyBFbmFibGUgSFRNTCB0YWdzIGluIHNvdXJjZVxuICAgIHhodG1sT3V0OiAgICAgdHJ1ZSwgICAgICAgICAvLyBVc2UgJy8nIHRvIGNsb3NlIHNpbmdsZSB0YWdzICg8YnIgLz4pXG4gICAgYnJlYWtzOiAgICAgICBmYWxzZSwgICAgICAgIC8vIENvbnZlcnQgJ1xcbicgaW4gcGFyYWdyYXBocyBpbnRvIDxicj5cbiAgICBsYW5nUHJlZml4OiAgICdsYW5ndWFnZS0nLCAgLy8gQ1NTIGxhbmd1YWdlIHByZWZpeCBmb3IgZmVuY2VkIGJsb2Nrc1xuICAgIGxpbmtpZnk6ICAgICAgZmFsc2UsICAgICAgICAvLyBhdXRvY29udmVydCBVUkwtbGlrZSB0ZXh0cyB0byBsaW5rc1xuXG4gICAgLy8gRW5hYmxlIHNvbWUgbGFuZ3VhZ2UtbmV1dHJhbCByZXBsYWNlbWVudHMgKyBxdW90ZXMgYmVhdXRpZmljYXRpb25cbiAgICB0eXBvZ3JhcGhlcjogIGZhbHNlLFxuXG4gICAgLy8gRG91YmxlICsgc2luZ2xlIHF1b3RlcyByZXBsYWNlbWVudCBwYWlycywgd2hlbiB0eXBvZ3JhcGhlciBlbmFibGVkLFxuICAgIC8vIGFuZCBzbWFydHF1b3RlcyBvbi4gQ291bGQgYmUgZWl0aGVyIGEgU3RyaW5nIG9yIGFuIEFycmF5LlxuICAgIC8vXG4gICAgLy8gRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlICfCq8K74oCe4oCcJyBmb3IgUnVzc2lhbiwgJ+KAnuKAnOKAmuKAmCcgZm9yIEdlcm1hbixcbiAgICAvLyBhbmQgWyfCq1xceEEwJywgJ1xceEEwwrsnLCAn4oC5XFx4QTAnLCAnXFx4QTDigLonXSBmb3IgRnJlbmNoIChpbmNsdWRpbmcgbmJzcCkuXG4gICAgcXVvdGVzOiAnXFx1MjAxY1xcdTIwMWRcXHUyMDE4XFx1MjAxOScsIC8qIOKAnOKAneKAmOKAmSAqL1xuXG4gICAgLy8gSGlnaGxpZ2h0ZXIgZnVuY3Rpb24uIFNob3VsZCByZXR1cm4gZXNjYXBlZCBIVE1MLFxuICAgIC8vIG9yICcnIGlmIHRoZSBzb3VyY2Ugc3RyaW5nIGlzIG5vdCBjaGFuZ2VkIGFuZCBzaG91bGQgYmUgZXNjYXBlZCBleHRlcm5hbHkuXG4gICAgLy8gSWYgcmVzdWx0IHN0YXJ0cyB3aXRoIDxwcmUuLi4gaW50ZXJuYWwgd3JhcHBlciBpcyBza2lwcGVkLlxuICAgIC8vXG4gICAgLy8gZnVuY3Rpb24gKC8qc3RyLCBsYW5nKi8pIHsgcmV0dXJuICcnOyB9XG4gICAgLy9cbiAgICBoaWdobGlnaHQ6IG51bGwsXG5cbiAgICBtYXhOZXN0aW5nOiAgIDIwICAgICAgICAgICAgLy8gSW50ZXJuYWwgcHJvdGVjdGlvbiwgcmVjdXJzaW9uIGxpbWl0XG4gIH0sXG5cbiAgY29tcG9uZW50czoge1xuXG4gICAgY29yZToge1xuICAgICAgcnVsZXM6IFtcbiAgICAgICAgJ25vcm1hbGl6ZScsXG4gICAgICAgICdibG9jaycsXG4gICAgICAgICdpbmxpbmUnXG4gICAgICBdXG4gICAgfSxcblxuICAgIGJsb2NrOiB7XG4gICAgICBydWxlczogW1xuICAgICAgICAnYmxvY2txdW90ZScsXG4gICAgICAgICdjb2RlJyxcbiAgICAgICAgJ2ZlbmNlJyxcbiAgICAgICAgJ2hlYWRpbmcnLFxuICAgICAgICAnaHInLFxuICAgICAgICAnaHRtbF9ibG9jaycsXG4gICAgICAgICdsaGVhZGluZycsXG4gICAgICAgICdsaXN0JyxcbiAgICAgICAgJ3JlZmVyZW5jZScsXG4gICAgICAgICdwYXJhZ3JhcGgnXG4gICAgICBdXG4gICAgfSxcblxuICAgIGlubGluZToge1xuICAgICAgcnVsZXM6IFtcbiAgICAgICAgJ2F1dG9saW5rJyxcbiAgICAgICAgJ2JhY2t0aWNrcycsXG4gICAgICAgICdlbXBoYXNpcycsXG4gICAgICAgICdlbnRpdHknLFxuICAgICAgICAnZXNjYXBlJyxcbiAgICAgICAgJ2h0bWxfaW5saW5lJyxcbiAgICAgICAgJ2ltYWdlJyxcbiAgICAgICAgJ2xpbmsnLFxuICAgICAgICAnbmV3bGluZScsXG4gICAgICAgICd0ZXh0J1xuICAgICAgXSxcbiAgICAgIHJ1bGVzMjogW1xuICAgICAgICAnYmFsYW5jZV9wYWlycycsXG4gICAgICAgICdlbXBoYXNpcycsXG4gICAgICAgICd0ZXh0X2NvbGxhcHNlJ1xuICAgICAgXVxuICAgIH1cbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQTFCQTtBQTRCQTtBQUVBO0FBQ0E7QUFEQTtBQVFBO0FBQ0E7QUFEQTtBQWVBO0FBQ0E7QUFZQTtBQWJBO0FBekJBO0FBN0JBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/presets/commonmark.js\n");
|
1833 |
|
1834 | }),
|
1835 |
|
1836 | "../../../node_modules/markdown-it/lib/presets/default.js":
|
1837 |
|
1838 |
|
1839 |
|
1840 |
|
1841 | (function(module, exports, __webpack_require__) {
|
1842 |
|
1843 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // markdown-it default options\n 'use strict';\n\n module.exports = {\n options: {\n html: false,\n // Enable HTML tags in source\n xhtmlOut: false,\n // Use '/' to close single tags (<br />)\n breaks: false,\n // Convert '\\n' in paragraphs into <br>\n langPrefix: 'language-',\n // CSS language prefix for fenced blocks\n linkify: false,\n // autoconvert URL-like texts to links\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019',\n\n /* “”‘’ */\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with <pre... internal wrapper is skipped.\n //\n // function (/*str, lang*/) { return ''; }\n //\n highlight: null,\n maxNesting: 100 // Internal protection, recursion limit\n\n },\n components: {\n core: {},\n block: {},\n inline: {}\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wcmVzZXRzL2RlZmF1bHQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3ByZXNldHMvZGVmYXVsdC5qcz9jZDAxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG1hcmtkb3duLWl0IGRlZmF1bHQgb3B0aW9uc1xuXG4ndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG9wdGlvbnM6IHtcbiAgICBodG1sOiAgICAgICAgIGZhbHNlLCAgICAgICAgLy8gRW5hYmxlIEhUTUwgdGFncyBpbiBzb3VyY2VcbiAgICB4aHRtbE91dDogICAgIGZhbHNlLCAgICAgICAgLy8gVXNlICcvJyB0byBjbG9zZSBzaW5nbGUgdGFncyAoPGJyIC8+KVxuICAgIGJyZWFrczogICAgICAgZmFsc2UsICAgICAgICAvLyBDb252ZXJ0ICdcXG4nIGluIHBhcmFncmFwaHMgaW50byA8YnI+XG4gICAgbGFuZ1ByZWZpeDogICAnbGFuZ3VhZ2UtJywgIC8vIENTUyBsYW5ndWFnZSBwcmVmaXggZm9yIGZlbmNlZCBibG9ja3NcbiAgICBsaW5raWZ5OiAgICAgIGZhbHNlLCAgICAgICAgLy8gYXV0b2NvbnZlcnQgVVJMLWxpa2UgdGV4dHMgdG8gbGlua3NcblxuICAgIC8vIEVuYWJsZSBzb21lIGxhbmd1YWdlLW5ldXRyYWwgcmVwbGFjZW1lbnRzICsgcXVvdGVzIGJlYXV0aWZpY2F0aW9uXG4gICAgdHlwb2dyYXBoZXI6ICBmYWxzZSxcblxuICAgIC8vIERvdWJsZSArIHNpbmdsZSBxdW90ZXMgcmVwbGFjZW1lbnQgcGFpcnMsIHdoZW4gdHlwb2dyYXBoZXIgZW5hYmxlZCxcbiAgICAvLyBhbmQgc21hcnRxdW90ZXMgb24uIENvdWxkIGJlIGVpdGhlciBhIFN0cmluZyBvciBhbiBBcnJheS5cbiAgICAvL1xuICAgIC8vIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSAnwqvCu+KAnuKAnCcgZm9yIFJ1c3NpYW4sICfigJ7igJzigJrigJgnIGZvciBHZXJtYW4sXG4gICAgLy8gYW5kIFsnwqtcXHhBMCcsICdcXHhBMMK7JywgJ+KAuVxceEEwJywgJ1xceEEw4oC6J10gZm9yIEZyZW5jaCAoaW5jbHVkaW5nIG5ic3ApLlxuICAgIHF1b3RlczogJ1xcdTIwMWNcXHUyMDFkXFx1MjAxOFxcdTIwMTknLCAvKiDigJzigJ3igJjigJkgKi9cblxuICAgIC8vIEhpZ2hsaWdodGVyIGZ1bmN0aW9uLiBTaG91bGQgcmV0dXJuIGVzY2FwZWQgSFRNTCxcbiAgICAvLyBvciAnJyBpZiB0aGUgc291cmNlIHN0cmluZyBpcyBub3QgY2hhbmdlZCBhbmQgc2hvdWxkIGJlIGVzY2FwZWQgZXh0ZXJuYWx5LlxuICAgIC8vIElmIHJlc3VsdCBzdGFydHMgd2l0aCA8cHJlLi4uIGludGVybmFsIHdyYXBwZXIgaXMgc2tpcHBlZC5cbiAgICAvL1xuICAgIC8vIGZ1bmN0aW9uICgvKnN0ciwgbGFuZyovKSB7IHJldHVybiAnJzsgfVxuICAgIC8vXG4gICAgaGlnaGxpZ2h0OiBudWxsLFxuXG4gICAgbWF4TmVzdGluZzogICAxMDAgICAgICAgICAgICAvLyBJbnRlcm5hbCBwcm90ZWN0aW9uLCByZWN1cnNpb24gbGltaXRcbiAgfSxcblxuICBjb21wb25lbnRzOiB7XG5cbiAgICBjb3JlOiB7fSxcbiAgICBibG9jazoge30sXG4gICAgaW5saW5lOiB7fVxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBMUJBO0FBNEJBO0FBRUE7QUFDQTtBQUNBO0FBSkE7QUE3QkE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/presets/default.js\n");
|
1844 |
|
1845 | }),
|
1846 |
|
1847 | "../../../node_modules/markdown-it/lib/presets/zero.js":
|
1848 |
|
1849 |
|
1850 |
|
1851 |
|
1852 | (function(module, exports, __webpack_require__) {
|
1853 |
|
1854 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // \"Zero\" preset, with nothing enabled. Useful for manual configuring of simple\n // modes. For example, to parse bold/italic only.\n 'use strict';\n\n module.exports = {\n options: {\n html: false,\n // Enable HTML tags in source\n xhtmlOut: false,\n // Use '/' to close single tags (<br />)\n breaks: false,\n // Convert '\\n' in paragraphs into <br>\n langPrefix: 'language-',\n // CSS language prefix for fenced blocks\n linkify: false,\n // autoconvert URL-like texts to links\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019',\n\n /* “”‘’ */\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with <pre... internal wrapper is skipped.\n //\n // function (/*str, lang*/) { return ''; }\n //\n highlight: null,\n maxNesting: 20 // Internal protection, recursion limit\n\n },\n components: {\n core: {\n rules: ['normalize', 'block', 'inline']\n },\n block: {\n rules: ['paragraph']\n },\n inline: {\n rules: ['text'],\n rules2: ['balance_pairs', 'text_collapse']\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wcmVzZXRzL3plcm8uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3ByZXNldHMvemVyby5qcz8zYmVhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFwiWmVyb1wiIHByZXNldCwgd2l0aCBub3RoaW5nIGVuYWJsZWQuIFVzZWZ1bCBmb3IgbWFudWFsIGNvbmZpZ3VyaW5nIG9mIHNpbXBsZVxuLy8gbW9kZXMuIEZvciBleGFtcGxlLCB0byBwYXJzZSBib2xkL2l0YWxpYyBvbmx5LlxuXG4ndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG9wdGlvbnM6IHtcbiAgICBodG1sOiAgICAgICAgIGZhbHNlLCAgICAgICAgLy8gRW5hYmxlIEhUTUwgdGFncyBpbiBzb3VyY2VcbiAgICB4aHRtbE91dDogICAgIGZhbHNlLCAgICAgICAgLy8gVXNlICcvJyB0byBjbG9zZSBzaW5nbGUgdGFncyAoPGJyIC8+KVxuICAgIGJyZWFrczogICAgICAgZmFsc2UsICAgICAgICAvLyBDb252ZXJ0ICdcXG4nIGluIHBhcmFncmFwaHMgaW50byA8YnI+XG4gICAgbGFuZ1ByZWZpeDogICAnbGFuZ3VhZ2UtJywgIC8vIENTUyBsYW5ndWFnZSBwcmVmaXggZm9yIGZlbmNlZCBibG9ja3NcbiAgICBsaW5raWZ5OiAgICAgIGZhbHNlLCAgICAgICAgLy8gYXV0b2NvbnZlcnQgVVJMLWxpa2UgdGV4dHMgdG8gbGlua3NcblxuICAgIC8vIEVuYWJsZSBzb21lIGxhbmd1YWdlLW5ldXRyYWwgcmVwbGFjZW1lbnRzICsgcXVvdGVzIGJlYXV0aWZpY2F0aW9uXG4gICAgdHlwb2dyYXBoZXI6ICBmYWxzZSxcblxuICAgIC8vIERvdWJsZSArIHNpbmdsZSBxdW90ZXMgcmVwbGFjZW1lbnQgcGFpcnMsIHdoZW4gdHlwb2dyYXBoZXIgZW5hYmxlZCxcbiAgICAvLyBhbmQgc21hcnRxdW90ZXMgb24uIENvdWxkIGJlIGVpdGhlciBhIFN0cmluZyBvciBhbiBBcnJheS5cbiAgICAvL1xuICAgIC8vIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSAnwqvCu+KAnuKAnCcgZm9yIFJ1c3NpYW4sICfigJ7igJzigJrigJgnIGZvciBHZXJtYW4sXG4gICAgLy8gYW5kIFsnwqtcXHhBMCcsICdcXHhBMMK7JywgJ+KAuVxceEEwJywgJ1xceEEw4oC6J10gZm9yIEZyZW5jaCAoaW5jbHVkaW5nIG5ic3ApLlxuICAgIHF1b3RlczogJ1xcdTIwMWNcXHUyMDFkXFx1MjAxOFxcdTIwMTknLCAvKiDigJzigJ3igJjigJkgKi9cblxuICAgIC8vIEhpZ2hsaWdodGVyIGZ1bmN0aW9uLiBTaG91bGQgcmV0dXJuIGVzY2FwZWQgSFRNTCxcbiAgICAvLyBvciAnJyBpZiB0aGUgc291cmNlIHN0cmluZyBpcyBub3QgY2hhbmdlZCBhbmQgc2hvdWxkIGJlIGVzY2FwZWQgZXh0ZXJuYWx5LlxuICAgIC8vIElmIHJlc3VsdCBzdGFydHMgd2l0aCA8cHJlLi4uIGludGVybmFsIHdyYXBwZXIgaXMgc2tpcHBlZC5cbiAgICAvL1xuICAgIC8vIGZ1bmN0aW9uICgvKnN0ciwgbGFuZyovKSB7IHJldHVybiAnJzsgfVxuICAgIC8vXG4gICAgaGlnaGxpZ2h0OiBudWxsLFxuXG4gICAgbWF4TmVzdGluZzogICAyMCAgICAgICAgICAgIC8vIEludGVybmFsIHByb3RlY3Rpb24sIHJlY3Vyc2lvbiBsaW1pdFxuICB9LFxuXG4gIGNvbXBvbmVudHM6IHtcblxuICAgIGNvcmU6IHtcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgICdub3JtYWxpemUnLFxuICAgICAgICAnYmxvY2snLFxuICAgICAgICAnaW5saW5lJ1xuICAgICAgXVxuICAgIH0sXG5cbiAgICBibG9jazoge1xuICAgICAgcnVsZXM6IFtcbiAgICAgICAgJ3BhcmFncmFwaCdcbiAgICAgIF1cbiAgICB9LFxuXG4gICAgaW5saW5lOiB7XG4gICAgICBydWxlczogW1xuICAgICAgICAndGV4dCdcbiAgICAgIF0sXG4gICAgICBydWxlczI6IFtcbiAgICAgICAgJ2JhbGFuY2VfcGFpcnMnLFxuICAgICAgICAndGV4dF9jb2xsYXBzZSdcbiAgICAgIF1cbiAgICB9XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQTFCQTtBQTRCQTtBQUVBO0FBQ0E7QUFEQTtBQVFBO0FBQ0E7QUFEQTtBQU1BO0FBQ0E7QUFHQTtBQUpBO0FBaEJBO0FBN0JBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/presets/zero.js\n");
|
1855 |
|
1856 | }),
|
1857 |
|
1858 | "../../../node_modules/markdown-it/lib/renderer.js":
|
1859 |
|
1860 |
|
1861 |
|
1862 |
|
1863 | (function(module, exports, __webpack_require__) {
|
1864 |
|
1865 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n /**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n 'use strict';\n\n var assign = __webpack_require__(/*! ./common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").assign;\n\n var unescapeAll = __webpack_require__(/*! ./common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").unescapeAll;\n\n var escapeHtml = __webpack_require__(/*! ./common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").escapeHtml; ////////////////////////////////////////////////////////////////////////////////\n\n\n var default_rules = {};\n\n default_rules.code_inline = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n return '<code' + slf.renderAttrs(token) + '>' + escapeHtml(tokens[idx].content) + '</code>';\n };\n\n default_rules.code_block = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n return '<pre' + slf.renderAttrs(token) + '><code>' + escapeHtml(tokens[idx].content) + '</code></pre>\\n';\n };\n\n default_rules.fence = function (tokens, idx, options, env, slf) {\n var token = tokens[idx],\n info = token.info ? unescapeAll(token.info).trim() : '',\n langName = '',\n langAttrs = '',\n highlighted,\n i,\n arr,\n tmpAttrs,\n tmpToken;\n\n if (info) {\n arr = info.split(/(\\s+)/g);\n langName = arr[0];\n langAttrs = arr.slice(2).join('');\n }\n\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content);\n } else {\n highlighted = escapeHtml(token.content);\n }\n\n if (highlighted.indexOf('<pre') === 0) {\n return highlighted + '\\n';\n } // If language exists, inject class gently, without modifying original token.\n // May be, one day we will add .deepClone() for token and simplify this part, but\n // now we prefer to keep things local.\n\n\n if (info) {\n i = token.attrIndex('class');\n tmpAttrs = token.attrs ? token.attrs.slice() : [];\n\n if (i < 0) {\n tmpAttrs.push(['class', options.langPrefix + langName]);\n } else {\n tmpAttrs[i] = tmpAttrs[i].slice();\n tmpAttrs[i][1] += ' ' + options.langPrefix + langName;\n } // Fake token just to render attributes\n\n\n tmpToken = {\n attrs: tmpAttrs\n };\n return '<pre><code' + slf.renderAttrs(tmpToken) + '>' + highlighted + '</code></pre>\\n';\n }\n\n return '<pre><code' + slf.renderAttrs(token) + '>' + highlighted + '</code></pre>\\n';\n };\n\n default_rules.image = function (tokens, idx, options, env, slf) {\n var token = tokens[idx]; // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n // should be placed on proper position for tests.\n //\n // Replace content with actual value\n\n token.attrs[token.attrIndex('alt')][1] = slf.renderInlineAsText(token.children, options, env);\n return slf.renderToken(tokens, idx, options);\n };\n\n default_rules.hardbreak = function (tokens, idx, options\n /*, env */\n ) {\n return options.xhtmlOut ? '<br />\\n' : '<br>\\n';\n };\n\n default_rules.softbreak = function (tokens, idx, options\n /*, env */\n ) {\n return options.breaks ? options.xhtmlOut ? '<br />\\n' : '<br>\\n' : '\\n';\n };\n\n default_rules.text = function (tokens, idx\n /*, options, env */\n ) {\n return escapeHtml(tokens[idx].content);\n };\n\n default_rules.html_block = function (tokens, idx\n /*, options, env */\n ) {\n return tokens[idx].content;\n };\n\n default_rules.html_inline = function (tokens, idx\n /*, options, env */\n ) {\n return tokens[idx].content;\n };\n /**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\n\n\n function Renderer() {\n /**\n * Renderer#rules -> Object\n *\n * Contains render rules for tokens. Can be updated and extended.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.renderer.rules.strong_open = function () { return '<b>'; };\n * md.renderer.rules.strong_close = function () { return '</b>'; };\n *\n * var result = md.renderInline(...);\n * ```\n *\n * Each rule is called as independent static function with fixed signature:\n *\n * ```javascript\n * function my_token_render(tokens, idx, options, env, renderer) {\n * // ...\n * return renderedHTML;\n * }\n * ```\n *\n * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js)\n * for more details and examples.\n **/\n this.rules = assign({}, default_rules);\n }\n /**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\n\n\n Renderer.prototype.renderAttrs = function renderAttrs(token) {\n var i, l, result;\n\n if (!token.attrs) {\n return '';\n }\n\n result = '';\n\n for (i = 0, l = token.attrs.length; i < l; i++) {\n result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"';\n }\n\n return result;\n };\n /**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\n\n\n Renderer.prototype.renderToken = function renderToken(tokens, idx, options) {\n var nextToken,\n result = '',\n needLf = false,\n token = tokens[idx]; // Tight list paragraphs\n\n if (token.hidden) {\n return '';\n } // Insert a newline between hidden paragraph and subsequent opening\n // block-level tag.\n //\n // For example, here we should insert a newline before blockquote:\n // - a\n // >\n //\n\n\n if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += '\\n';\n } // Add token name, e.g. `<img`\n\n\n result += (token.nesting === -1 ? '</' : '<') + token.tag; // Encode attributes, e.g. `<img src=\"foo\"`\n\n result += this.renderAttrs(token); // Add a slash for self-closing tags, e.g. `<img src=\"foo\" /`\n\n if (token.nesting === 0 && options.xhtmlOut) {\n result += ' /';\n } // Check if we need to add a newline after this tag\n\n\n if (token.block) {\n needLf = true;\n\n if (token.nesting === 1) {\n if (idx + 1 < tokens.length) {\n nextToken = tokens[idx + 1];\n\n if (nextToken.type === 'inline' || nextToken.hidden) {\n // Block-level tag containing an inline tag.\n //\n needLf = false;\n } else if (nextToken.nesting === -1 && nextToken.tag === token.tag) {\n // Opening tag + closing tag of the same type. E.g. `<li></li>`.\n //\n needLf = false;\n }\n }\n }\n }\n\n result += needLf ? '>\\n' : '>';\n return result;\n };\n /**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\n\n\n Renderer.prototype.renderInline = function (tokens, options, env) {\n var type,\n result = '',\n rules = this.rules;\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options);\n }\n }\n\n return result;\n };\n /** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\n\n\n Renderer.prototype.renderInlineAsText = function (tokens, options, env) {\n var result = '';\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n if (tokens[i].type === 'text') {\n result += tokens[i].content;\n } else if (tokens[i].type === 'image') {\n result += this.renderInlineAsText(tokens[i].children, options, env);\n } else if (tokens[i].type === 'softbreak') {\n result += '\\n';\n }\n }\n\n return result;\n };\n /**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\n\n\n Renderer.prototype.render = function (tokens, options, env) {\n var i,\n len,\n type,\n result = '',\n rules = this.rules;\n\n for (i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env);\n } else if (typeof rules[type] !== 'undefined') {\n result += rules[tokens[i].type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options, env);\n }\n }\n\n return result;\n };\n\n module.exports = Renderer;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9yZW5kZXJlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcmVuZGVyZXIuanM/NzgzYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNsYXNzIFJlbmRlcmVyXG4gKlxuICogR2VuZXJhdGVzIEhUTUwgZnJvbSBwYXJzZWQgdG9rZW4gc3RyZWFtLiBFYWNoIGluc3RhbmNlIGhhcyBpbmRlcGVuZGVudFxuICogY29weSBvZiBydWxlcy4gVGhvc2UgY2FuIGJlIHJld3JpdHRlbiB3aXRoIGVhc2UuIEFsc28sIHlvdSBjYW4gYWRkIG5ld1xuICogcnVsZXMgaWYgeW91IGNyZWF0ZSBwbHVnaW4gYW5kIGFkZHMgbmV3IHRva2VuIHR5cGVzLlxuICoqL1xuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBhc3NpZ24gICAgICAgICAgPSByZXF1aXJlKCcuL2NvbW1vbi91dGlscycpLmFzc2lnbjtcbnZhciB1bmVzY2FwZUFsbCAgICAgPSByZXF1aXJlKCcuL2NvbW1vbi91dGlscycpLnVuZXNjYXBlQWxsO1xudmFyIGVzY2FwZUh0bWwgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uL3V0aWxzJykuZXNjYXBlSHRtbDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG52YXIgZGVmYXVsdF9ydWxlcyA9IHt9O1xuXG5cbmRlZmF1bHRfcnVsZXMuY29kZV9pbmxpbmUgPSBmdW5jdGlvbiAodG9rZW5zLCBpZHgsIG9wdGlvbnMsIGVudiwgc2xmKSB7XG4gIHZhciB0b2tlbiA9IHRva2Vuc1tpZHhdO1xuXG4gIHJldHVybiAgJzxjb2RlJyArIHNsZi5yZW5kZXJBdHRycyh0b2tlbikgKyAnPicgK1xuICAgICAgICAgIGVzY2FwZUh0bWwodG9rZW5zW2lkeF0uY29udGVudCkgK1xuICAgICAgICAgICc8L2NvZGU+Jztcbn07XG5cblxuZGVmYXVsdF9ydWxlcy5jb2RlX2Jsb2NrID0gZnVuY3Rpb24gKHRva2VucywgaWR4LCBvcHRpb25zLCBlbnYsIHNsZikge1xuICB2YXIgdG9rZW4gPSB0b2tlbnNbaWR4XTtcblxuICByZXR1cm4gICc8cHJlJyArIHNsZi5yZW5kZXJBdHRycyh0b2tlbikgKyAnPjxjb2RlPicgK1xuICAgICAgICAgIGVzY2FwZUh0bWwodG9rZW5zW2lkeF0uY29udGVudCkgK1xuICAgICAgICAgICc8L2NvZGU+PC9wcmU+XFxuJztcbn07XG5cblxuZGVmYXVsdF9ydWxlcy5mZW5jZSA9IGZ1bmN0aW9uICh0b2tlbnMsIGlkeCwgb3B0aW9ucywgZW52LCBzbGYpIHtcbiAgdmFyIHRva2VuID0gdG9rZW5zW2lkeF0sXG4gICAgICBpbmZvID0gdG9rZW4uaW5mbyA/IHVuZXNjYXBlQWxsKHRva2VuLmluZm8pLnRyaW0oKSA6ICcnLFxuICAgICAgbGFuZ05hbWUgPSAnJyxcbiAgICAgIGxhbmdBdHRycyA9ICcnLFxuICAgICAgaGlnaGxpZ2h0ZWQsIGksIGFyciwgdG1wQXR0cnMsIHRtcFRva2VuO1xuXG4gIGlmIChpbmZvKSB7XG4gICAgYXJyID0gaW5mby5zcGxpdCgvKFxccyspL2cpO1xuICAgIGxhbmdOYW1lID0gYXJyWzBdO1xuICAgIGxhbmdBdHRycyA9IGFyci5zbGljZSgyKS5qb2luKCcnKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmhpZ2hsaWdodCkge1xuICAgIGhpZ2hsaWdodGVkID0gb3B0aW9ucy5oaWdobGlnaHQodG9rZW4uY29udGVudCwgbGFuZ05hbWUsIGxhbmdBdHRycykgfHwgZXNjYXBlSHRtbCh0b2tlbi5jb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBoaWdobGlnaHRlZCA9IGVzY2FwZUh0bWwodG9rZW4uY29udGVudCk7XG4gIH1cblxuICBpZiAoaGlnaGxpZ2h0ZWQuaW5kZXhPZignPHByZScpID09PSAwKSB7XG4gICAgcmV0dXJuIGhpZ2hsaWdodGVkICsgJ1xcbic7XG4gIH1cblxuICAvLyBJZiBsYW5ndWFnZSBleGlzdHMsIGluamVjdCBjbGFzcyBnZW50bHksIHdpdGhvdXQgbW9kaWZ5aW5nIG9yaWdpbmFsIHRva2VuLlxuICAvLyBNYXkgYmUsIG9uZSBkYXkgd2Ugd2lsbCBhZGQgLmRlZXBDbG9uZSgpIGZvciB0b2tlbiBhbmQgc2ltcGxpZnkgdGhpcyBwYXJ0LCBidXRcbiAgLy8gbm93IHdlIHByZWZlciB0byBrZWVwIHRoaW5ncyBsb2NhbC5cbiAgaWYgKGluZm8pIHtcbiAgICBpICAgICAgICA9IHRva2VuLmF0dHJJbmRleCgnY2xhc3MnKTtcbiAgICB0bXBBdHRycyA9IHRva2VuLmF0dHJzID8gdG9rZW4uYXR0cnMuc2xpY2UoKSA6IFtdO1xuXG4gICAgaWYgKGkgPCAwKSB7XG4gICAgICB0bXBBdHRycy5wdXNoKFsgJ2NsYXNzJywgb3B0aW9ucy5sYW5nUHJlZml4ICsgbGFuZ05hbWUgXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRtcEF0dHJzW2ldID0gdG1wQXR0cnNbaV0uc2xpY2UoKTtcbiAgICAgIHRtcEF0dHJzW2ldWzFdICs9ICcgJyArIG9wdGlvbnMubGFuZ1ByZWZpeCArIGxhbmdOYW1lO1xuICAgIH1cblxuICAgIC8vIEZha2UgdG9rZW4ganVzdCB0byByZW5kZXIgYXR0cmlidXRlc1xuICAgIHRtcFRva2VuID0ge1xuICAgICAgYXR0cnM6IHRtcEF0dHJzXG4gICAgfTtcblxuICAgIHJldHVybiAgJzxwcmU+PGNvZGUnICsgc2xmLnJlbmRlckF0dHJzKHRtcFRva2VuKSArICc+J1xuICAgICAgICAgICsgaGlnaGxpZ2h0ZWRcbiAgICAgICAgICArICc8L2NvZGU+PC9wcmU+XFxuJztcbiAgfVxuXG5cbiAgcmV0dXJuICAnPHByZT48Y29kZScgKyBzbGYucmVuZGVyQXR0cnModG9rZW4pICsgJz4nXG4gICAgICAgICsgaGlnaGxpZ2h0ZWRcbiAgICAgICAgKyAnPC9jb2RlPjwvcHJlPlxcbic7XG59O1xuXG5cbmRlZmF1bHRfcnVsZXMuaW1hZ2UgPSBmdW5jdGlvbiAodG9rZW5zLCBpZHgsIG9wdGlvbnMsIGVudiwgc2xmKSB7XG4gIHZhciB0b2tlbiA9IHRva2Vuc1tpZHhdO1xuXG4gIC8vIFwiYWx0XCIgYXR0ciBNVVNUIGJlIHNldCwgZXZlbiBpZiBlbXB0eS4gQmVjYXVzZSBpdCdzIG1hbmRhdG9yeSBhbmRcbiAgLy8gc2hvdWxkIGJlIHBsYWNlZCBvbiBwcm9wZXIgcG9zaXRpb24gZm9yIHRlc3RzLlxuICAvL1xuICAvLyBSZXBsYWNlIGNvbnRlbnQgd2l0aCBhY3R1YWwgdmFsdWVcblxuICB0b2tlbi5hdHRyc1t0b2tlbi5hdHRySW5kZXgoJ2FsdCcpXVsxXSA9XG4gICAgc2xmLnJlbmRlcklubGluZUFzVGV4dCh0b2tlbi5jaGlsZHJlbiwgb3B0aW9ucywgZW52KTtcblxuICByZXR1cm4gc2xmLnJlbmRlclRva2VuKHRva2VucywgaWR4LCBvcHRpb25zKTtcbn07XG5cblxuZGVmYXVsdF9ydWxlcy5oYXJkYnJlYWsgPSBmdW5jdGlvbiAodG9rZW5zLCBpZHgsIG9wdGlvbnMgLyosIGVudiAqLykge1xuICByZXR1cm4gb3B0aW9ucy54aHRtbE91dCA/ICc8YnIgLz5cXG4nIDogJzxicj5cXG4nO1xufTtcbmRlZmF1bHRfcnVsZXMuc29mdGJyZWFrID0gZnVuY3Rpb24gKHRva2VucywgaWR4LCBvcHRpb25zIC8qLCBlbnYgKi8pIHtcbiAgcmV0dXJuIG9wdGlvbnMuYnJlYWtzID8gKG9wdGlvbnMueGh0bWxPdXQgPyAnPGJyIC8+XFxuJyA6ICc8YnI+XFxuJykgOiAnXFxuJztcbn07XG5cblxuZGVmYXVsdF9ydWxlcy50ZXh0ID0gZnVuY3Rpb24gKHRva2VucywgaWR4IC8qLCBvcHRpb25zLCBlbnYgKi8pIHtcbiAgcmV0dXJuIGVzY2FwZUh0bWwodG9rZW5zW2lkeF0uY29udGVudCk7XG59O1xuXG5cbmRlZmF1bHRfcnVsZXMuaHRtbF9ibG9jayA9IGZ1bmN0aW9uICh0b2tlbnMsIGlkeCAvKiwgb3B0aW9ucywgZW52ICovKSB7XG4gIHJldHVybiB0b2tlbnNbaWR4XS5jb250ZW50O1xufTtcbmRlZmF1bHRfcnVsZXMuaHRtbF9pbmxpbmUgPSBmdW5jdGlvbiAodG9rZW5zLCBpZHggLyosIG9wdGlvbnMsIGVudiAqLykge1xuICByZXR1cm4gdG9rZW5zW2lkeF0uY29udGVudDtcbn07XG5cblxuLyoqXG4gKiBuZXcgUmVuZGVyZXIoKVxuICpcbiAqIENyZWF0ZXMgbmV3IFtbUmVuZGVyZXJdXSBpbnN0YW5jZSBhbmQgZmlsbCBbW1JlbmRlcmVyI3J1bGVzXV0gd2l0aCBkZWZhdWx0cy5cbiAqKi9cbmZ1bmN0aW9uIFJlbmRlcmVyKCkge1xuXG4gIC8qKlxuICAgKiBSZW5kZXJlciNydWxlcyAtPiBPYmplY3RcbiAgICpcbiAgICogQ29udGFpbnMgcmVuZGVyIHJ1bGVzIGZvciB0b2tlbnMuIENhbiBiZSB1cGRhdGVkIGFuZCBleHRlbmRlZC5cbiAgICpcbiAgICogIyMjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBgYGBqYXZhc2NyaXB0XG4gICAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKTtcbiAgICpcbiAgICogbWQucmVuZGVyZXIucnVsZXMuc3Ryb25nX29wZW4gID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJzxiPic7IH07XG4gICAqIG1kLnJlbmRlcmVyLnJ1bGVzLnN0cm9uZ19jbG9zZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICc8L2I+JzsgfTtcbiAgICpcbiAgICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcklubGluZSguLi4pO1xuICAgKiBgYGBcbiAgICpcbiAgICogRWFjaCBydWxlIGlzIGNhbGxlZCBhcyBpbmRlcGVuZGVudCBzdGF0aWMgZnVuY3Rpb24gd2l0aCBmaXhlZCBzaWduYXR1cmU6XG4gICAqXG4gICAqIGBgYGphdmFzY3JpcHRcbiAgICogZnVuY3Rpb24gbXlfdG9rZW5fcmVuZGVyKHRva2VucywgaWR4LCBvcHRpb25zLCBlbnYsIHJlbmRlcmVyKSB7XG4gICAqICAgLy8gLi4uXG4gICAqICAgcmV0dXJuIHJlbmRlcmVkSFRNTDtcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogU2VlIFtzb3VyY2UgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9yZW5kZXJlci5qcylcbiAgICogZm9yIG1vcmUgZGV0YWlscyBhbmQgZXhhbXBsZXMuXG4gICAqKi9cbiAgdGhpcy5ydWxlcyA9IGFzc2lnbih7fSwgZGVmYXVsdF9ydWxlcyk7XG59XG5cblxuLyoqXG4gKiBSZW5kZXJlci5yZW5kZXJBdHRycyh0b2tlbikgLT4gU3RyaW5nXG4gKlxuICogUmVuZGVyIHRva2VuIGF0dHJpYnV0ZXMgdG8gc3RyaW5nLlxuICoqL1xuUmVuZGVyZXIucHJvdG90eXBlLnJlbmRlckF0dHJzID0gZnVuY3Rpb24gcmVuZGVyQXR0cnModG9rZW4pIHtcbiAgdmFyIGksIGwsIHJlc3VsdDtcblxuICBpZiAoIXRva2VuLmF0dHJzKSB7IHJldHVybiAnJzsgfVxuXG4gIHJlc3VsdCA9ICcnO1xuXG4gIGZvciAoaSA9IDAsIGwgPSB0b2tlbi5hdHRycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICByZXN1bHQgKz0gJyAnICsgZXNjYXBlSHRtbCh0b2tlbi5hdHRyc1tpXVswXSkgKyAnPVwiJyArIGVzY2FwZUh0bWwodG9rZW4uYXR0cnNbaV1bMV0pICsgJ1wiJztcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8qKlxuICogUmVuZGVyZXIucmVuZGVyVG9rZW4odG9rZW5zLCBpZHgsIG9wdGlvbnMpIC0+IFN0cmluZ1xuICogLSB0b2tlbnMgKEFycmF5KTogbGlzdCBvZiB0b2tlbnNcbiAqIC0gaWR4IChOdW1iZWQpOiB0b2tlbiBpbmRleCB0byByZW5kZXJcbiAqIC0gb3B0aW9ucyAoT2JqZWN0KTogcGFyYW1zIG9mIHBhcnNlciBpbnN0YW5jZVxuICpcbiAqIERlZmF1bHQgdG9rZW4gcmVuZGVyZXIuIENhbiBiZSBvdmVycmlkZW4gYnkgY3VzdG9tIGZ1bmN0aW9uXG4gKiBpbiBbW1JlbmRlcmVyI3J1bGVzXV0uXG4gKiovXG5SZW5kZXJlci5wcm90b3R5cGUucmVuZGVyVG9rZW4gPSBmdW5jdGlvbiByZW5kZXJUb2tlbih0b2tlbnMsIGlkeCwgb3B0aW9ucykge1xuICB2YXIgbmV4dFRva2VuLFxuICAgICAgcmVzdWx0ID0gJycsXG4gICAgICBuZWVkTGYgPSBmYWxzZSxcbiAgICAgIHRva2VuID0gdG9rZW5zW2lkeF07XG5cbiAgLy8gVGlnaHQgbGlzdCBwYXJhZ3JhcGhzXG4gIGlmICh0b2tlbi5oaWRkZW4pIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvLyBJbnNlcnQgYSBuZXdsaW5lIGJldHdlZW4gaGlkZGVuIHBhcmFncmFwaCBhbmQgc3Vic2VxdWVudCBvcGVuaW5nXG4gIC8vIGJsb2NrLWxldmVsIHRhZy5cbiAgLy9cbiAgLy8gRm9yIGV4YW1wbGUsIGhlcmUgd2Ugc2hvdWxkIGluc2VydCBhIG5ld2xpbmUgYmVmb3JlIGJsb2NrcXVvdGU6XG4gIC8vICAtIGFcbiAgLy8gICAgPlxuICAvL1xuICBpZiAodG9rZW4uYmxvY2sgJiYgdG9rZW4ubmVzdGluZyAhPT0gLTEgJiYgaWR4ICYmIHRva2Vuc1tpZHggLSAxXS5oaWRkZW4pIHtcbiAgICByZXN1bHQgKz0gJ1xcbic7XG4gIH1cblxuICAvLyBBZGQgdG9rZW4gbmFtZSwgZS5nLiBgPGltZ2BcbiAgcmVzdWx0ICs9ICh0b2tlbi5uZXN0aW5nID09PSAtMSA/ICc8LycgOiAnPCcpICsgdG9rZW4udGFnO1xuXG4gIC8vIEVuY29kZSBhdHRyaWJ1dGVzLCBlLmcuIGA8aW1nIHNyYz1cImZvb1wiYFxuICByZXN1bHQgKz0gdGhpcy5yZW5kZXJBdHRycyh0b2tlbik7XG5cbiAgLy8gQWRkIGEgc2xhc2ggZm9yIHNlbGYtY2xvc2luZyB0YWdzLCBlLmcuIGA8aW1nIHNyYz1cImZvb1wiIC9gXG4gIGlmICh0b2tlbi5uZXN0aW5nID09PSAwICYmIG9wdGlvbnMueGh0bWxPdXQpIHtcbiAgICByZXN1bHQgKz0gJyAvJztcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHdlIG5lZWQgdG8gYWRkIGEgbmV3bGluZSBhZnRlciB0aGlzIHRhZ1xuICBpZiAodG9rZW4uYmxvY2spIHtcbiAgICBuZWVkTGYgPSB0cnVlO1xuXG4gICAgaWYgKHRva2VuLm5lc3RpbmcgPT09IDEpIHtcbiAgICAgIGlmIChpZHggKyAxIDwgdG9rZW5zLmxlbmd0aCkge1xuICAgICAgICBuZXh0VG9rZW4gPSB0b2tlbnNbaWR4ICsgMV07XG5cbiAgICAgICAgaWYgKG5leHRUb2tlbi50eXBlID09PSAnaW5saW5lJyB8fCBuZXh0VG9rZW4uaGlkZGVuKSB7XG4gICAgICAgICAgLy8gQmxvY2stbGV2ZWwgdGFnIGNvbnRhaW5pbmcgYW4gaW5saW5lIHRhZy5cbiAgICAgICAgICAvL1xuICAgICAgICAgIG5lZWRMZiA9IGZhbHNlO1xuXG4gICAgICAgIH0gZWxzZSBpZiAobmV4dFRva2VuLm5lc3RpbmcgPT09IC0xICYmIG5leHRUb2tlbi50YWcgPT09IHRva2VuLnRhZykge1xuICAgICAgICAgIC8vIE9wZW5pbmcgdGFnICsgY2xvc2luZyB0YWcgb2YgdGhlIHNhbWUgdHlwZS4gRS5nLiBgPGxpPjwvbGk+YC5cbiAgICAgICAgICAvL1xuICAgICAgICAgIG5lZWRMZiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVzdWx0ICs9IG5lZWRMZiA/ICc+XFxuJyA6ICc+JztcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG4vKipcbiAqIFJlbmRlcmVyLnJlbmRlcklubGluZSh0b2tlbnMsIG9wdGlvbnMsIGVudikgLT4gU3RyaW5nXG4gKiAtIHRva2VucyAoQXJyYXkpOiBsaXN0IG9uIGJsb2NrIHRva2VucyB0byByZW50ZXJcbiAqIC0gb3B0aW9ucyAoT2JqZWN0KTogcGFyYW1zIG9mIHBhcnNlciBpbnN0YW5jZVxuICogLSBlbnYgKE9iamVjdCk6IGFkZGl0aW9uYWwgZGF0YSBmcm9tIHBhcnNlZCBpbnB1dCAocmVmZXJlbmNlcywgZm9yIGV4YW1wbGUpXG4gKlxuICogVGhlIHNhbWUgYXMgW1tSZW5kZXJlci5yZW5kZXJdXSwgYnV0IGZvciBzaW5nbGUgdG9rZW4gb2YgYGlubGluZWAgdHlwZS5cbiAqKi9cblJlbmRlcmVyLnByb3RvdHlwZS5yZW5kZXJJbmxpbmUgPSBmdW5jdGlvbiAodG9rZW5zLCBvcHRpb25zLCBlbnYpIHtcbiAgdmFyIHR5cGUsXG4gICAgICByZXN1bHQgPSAnJyxcbiAgICAgIHJ1bGVzID0gdGhpcy5ydWxlcztcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdG9rZW5zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdHlwZSA9IHRva2Vuc1tpXS50eXBlO1xuXG4gICAgaWYgKHR5cGVvZiBydWxlc1t0eXBlXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJlc3VsdCArPSBydWxlc1t0eXBlXSh0b2tlbnMsIGksIG9wdGlvbnMsIGVudiwgdGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCArPSB0aGlzLnJlbmRlclRva2VuKHRva2VucywgaSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqIGludGVybmFsXG4gKiBSZW5kZXJlci5yZW5kZXJJbmxpbmVBc1RleHQodG9rZW5zLCBvcHRpb25zLCBlbnYpIC0+IFN0cmluZ1xuICogLSB0b2tlbnMgKEFycmF5KTogbGlzdCBvbiBibG9jayB0b2tlbnMgdG8gcmVudGVyXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHBhcmFtcyBvZiBwYXJzZXIgaW5zdGFuY2VcbiAqIC0gZW52IChPYmplY3QpOiBhZGRpdGlvbmFsIGRhdGEgZnJvbSBwYXJzZWQgaW5wdXQgKHJlZmVyZW5jZXMsIGZvciBleGFtcGxlKVxuICpcbiAqIFNwZWNpYWwga2x1ZGdlIGZvciBpbWFnZSBgYWx0YCBhdHRyaWJ1dGVzIHRvIGNvbmZvcm0gQ29tbW9uTWFyayBzcGVjLlxuICogRG9uJ3QgdHJ5IHRvIHVzZSBpdCEgU3BlYyByZXF1aXJlcyB0byBzaG93IGBhbHRgIGNvbnRlbnQgd2l0aCBzdHJpcHBlZCBtYXJrdXAsXG4gKiBpbnN0ZWFkIG9mIHNpbXBsZSBlc2NhcGluZy5cbiAqKi9cblJlbmRlcmVyLnByb3RvdHlwZS5yZW5kZXJJbmxpbmVBc1RleHQgPSBmdW5jdGlvbiAodG9rZW5zLCBvcHRpb25zLCBlbnYpIHtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0b2tlbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAodG9rZW5zW2ldLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgcmVzdWx0ICs9IHRva2Vuc1tpXS5jb250ZW50O1xuICAgIH0gZWxzZSBpZiAodG9rZW5zW2ldLnR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgIHJlc3VsdCArPSB0aGlzLnJlbmRlcklubGluZUFzVGV4dCh0b2tlbnNbaV0uY2hpbGRyZW4sIG9wdGlvbnMsIGVudik7XG4gICAgfSBlbHNlIGlmICh0b2tlbnNbaV0udHlwZSA9PT0gJ3NvZnRicmVhaycpIHtcbiAgICAgIHJlc3VsdCArPSAnXFxuJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG4vKipcbiAqIFJlbmRlcmVyLnJlbmRlcih0b2tlbnMsIG9wdGlvbnMsIGVudikgLT4gU3RyaW5nXG4gKiAtIHRva2VucyAoQXJyYXkpOiBsaXN0IG9uIGJsb2NrIHRva2VucyB0byByZW50ZXJcbiAqIC0gb3B0aW9ucyAoT2JqZWN0KTogcGFyYW1zIG9mIHBhcnNlciBpbnN0YW5jZVxuICogLSBlbnYgKE9iamVjdCk6IGFkZGl0aW9uYWwgZGF0YSBmcm9tIHBhcnNlZCBpbnB1dCAocmVmZXJlbmNlcywgZm9yIGV4YW1wbGUpXG4gKlxuICogVGFrZXMgdG9rZW4gc3RyZWFtIGFuZCBnZW5lcmF0ZXMgSFRNTC4gUHJvYmFibHksIHlvdSB3aWxsIG5ldmVyIG5lZWQgdG8gY2FsbFxuICogdGhpcyBtZXRob2QgZGlyZWN0bHkuXG4gKiovXG5SZW5kZXJlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKHRva2Vucywgb3B0aW9ucywgZW52KSB7XG4gIHZhciBpLCBsZW4sIHR5cGUsXG4gICAgICByZXN1bHQgPSAnJyxcbiAgICAgIHJ1bGVzID0gdGhpcy5ydWxlcztcblxuICBmb3IgKGkgPSAwLCBsZW4gPSB0b2tlbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICB0eXBlID0gdG9rZW5zW2ldLnR5cGU7XG5cbiAgICBpZiAodHlwZSA9PT0gJ2lubGluZScpIHtcbiAgICAgIHJlc3VsdCArPSB0aGlzLnJlbmRlcklubGluZSh0b2tlbnNbaV0uY2hpbGRyZW4sIG9wdGlvbnMsIGVudik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcnVsZXNbdHlwZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXN1bHQgKz0gcnVsZXNbdG9rZW5zW2ldLnR5cGVdKHRva2VucywgaSwgb3B0aW9ucywgZW52LCB0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ICs9IHRoaXMucmVuZGVyVG9rZW4odG9rZW5zLCBpLCBvcHRpb25zLCBlbnYpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlbmRlcmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSUE7QUFHQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/renderer.js\n");
|
1866 |
|
1867 | }),
|
1868 |
|
1869 | "../../../node_modules/markdown-it/lib/ruler.js":
|
1870 |
|
1871 |
|
1872 |
|
1873 |
|
1874 | (function(module, exports, __webpack_require__) {
|
1875 |
|
1876 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n /**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n 'use strict';\n /**\n * new Ruler()\n **/\n\n function Ruler() {\n // List of added rules. Each element is:\n //\n // {\n // name: XXX,\n // enabled: Boolean,\n // fn: Function(),\n // alt: [ name2, name3 ]\n // }\n //\n this.__rules__ = []; // Cached rule chains.\n //\n // First level - chain name, '' for default.\n // Second level - diginal anchor for fast filtering by charcodes.\n //\n\n this.__cache__ = null;\n } ////////////////////////////////////////////////////////////////////////////////\n // Helper methods, should not be used directly\n // Find rule index by name\n //\n\n\n Ruler.prototype.__find__ = function (name) {\n for (var i = 0; i < this.__rules__.length; i++) {\n if (this.__rules__[i].name === name) {\n return i;\n }\n }\n\n return -1;\n }; // Build rules lookup cache\n //\n\n\n Ruler.prototype.__compile__ = function () {\n var self = this;\n var chains = ['']; // collect unique names\n\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) {\n return;\n }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName);\n }\n });\n });\n\n self.__cache__ = {};\n chains.forEach(function (chain) {\n self.__cache__[chain] = [];\n\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) {\n return;\n }\n\n if (chain && rule.alt.indexOf(chain) < 0) {\n return;\n }\n\n self.__cache__[chain].push(rule.fn);\n });\n });\n };\n /**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n * //...\n * });\n * ```\n **/\n\n\n Ruler.prototype.at = function (name, fn, options) {\n var index = this.__find__(name);\n\n var opt = options || {};\n\n if (index === -1) {\n throw new Error('Parser rule not found: ' + name);\n }\n\n this.__rules__[index].fn = fn;\n this.__rules__[index].alt = opt.alt || [];\n this.__cache__ = null;\n };\n /**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\n\n\n Ruler.prototype.before = function (beforeName, ruleName, fn, options) {\n var index = this.__find__(beforeName);\n\n var opt = options || {};\n\n if (index === -1) {\n throw new Error('Parser rule not found: ' + beforeName);\n }\n\n this.__rules__.splice(index, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n };\n /**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\n\n\n Ruler.prototype.after = function (afterName, ruleName, fn, options) {\n var index = this.__find__(afterName);\n\n var opt = options || {};\n\n if (index === -1) {\n throw new Error('Parser rule not found: ' + afterName);\n }\n\n this.__rules__.splice(index + 1, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n };\n /**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\n\n\n Ruler.prototype.push = function (ruleName, fn, options) {\n var opt = options || {};\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n };\n /**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\n\n\n Ruler.prototype.enable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n var result = []; // Search by name and enable\n\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) {\n return;\n }\n\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n\n this.__rules__[idx].enabled = true;\n result.push(name);\n }, this);\n this.__cache__ = null;\n return result;\n };\n /**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\n\n\n Ruler.prototype.enableOnly = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n this.__rules__.forEach(function (rule) {\n rule.enabled = false;\n });\n\n this.enable(list, ignoreInvalid);\n };\n /**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\n\n\n Ruler.prototype.disable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n var result = []; // Search by name and disable\n\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) {\n return;\n }\n\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n\n this.__rules__[idx].enabled = false;\n result.push(name);\n }, this);\n this.__cache__ = null;\n return result;\n };\n /**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\n\n\n Ruler.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__();\n } // Chain can be empty, if rules disabled. But we still have to return Array.\n\n\n return this.__cache__[chainName] || [];\n };\n\n module.exports = Ruler;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXIuanM/MzA3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNsYXNzIFJ1bGVyXG4gKlxuICogSGVscGVyIGNsYXNzLCB1c2VkIGJ5IFtbTWFya2Rvd25JdCNjb3JlXV0sIFtbTWFya2Rvd25JdCNibG9ja11dIGFuZFxuICogW1tNYXJrZG93bkl0I2lubGluZV1dIHRvIG1hbmFnZSBzZXF1ZW5jZXMgb2YgZnVuY3Rpb25zIChydWxlcyk6XG4gKlxuICogLSBrZWVwIHJ1bGVzIGluIGRlZmluZWQgb3JkZXJcbiAqIC0gYXNzaWduIHRoZSBuYW1lIHRvIGVhY2ggcnVsZVxuICogLSBlbmFibGUvZGlzYWJsZSBydWxlc1xuICogLSBhZGQvcmVwbGFjZSBydWxlc1xuICogLSBhbGxvdyBhc3NpZ24gcnVsZXMgdG8gYWRkaXRpb25hbCBuYW1lZCBjaGFpbnMgKGluIHRoZSBzYW1lKVxuICogLSBjYWNoZWluZyBsaXN0cyBvZiBhY3RpdmUgcnVsZXNcbiAqXG4gKiBZb3Ugd2lsbCBub3QgbmVlZCB1c2UgdGhpcyBjbGFzcyBkaXJlY3RseSB1bnRpbCB3cml0ZSBwbHVnaW5zLiBGb3Igc2ltcGxlXG4gKiBydWxlcyBjb250cm9sIHVzZSBbW01hcmtkb3duSXQuZGlzYWJsZV1dLCBbW01hcmtkb3duSXQuZW5hYmxlXV0gYW5kXG4gKiBbW01hcmtkb3duSXQudXNlXV0uXG4gKiovXG4ndXNlIHN0cmljdCc7XG5cblxuLyoqXG4gKiBuZXcgUnVsZXIoKVxuICoqL1xuZnVuY3Rpb24gUnVsZXIoKSB7XG4gIC8vIExpc3Qgb2YgYWRkZWQgcnVsZXMuIEVhY2ggZWxlbWVudCBpczpcbiAgLy9cbiAgLy8ge1xuICAvLyAgIG5hbWU6IFhYWCxcbiAgLy8gICBlbmFibGVkOiBCb29sZWFuLFxuICAvLyAgIGZuOiBGdW5jdGlvbigpLFxuICAvLyAgIGFsdDogWyBuYW1lMiwgbmFtZTMgXVxuICAvLyB9XG4gIC8vXG4gIHRoaXMuX19ydWxlc19fID0gW107XG5cbiAgLy8gQ2FjaGVkIHJ1bGUgY2hhaW5zLlxuICAvL1xuICAvLyBGaXJzdCBsZXZlbCAtIGNoYWluIG5hbWUsICcnIGZvciBkZWZhdWx0LlxuICAvLyBTZWNvbmQgbGV2ZWwgLSBkaWdpbmFsIGFuY2hvciBmb3IgZmFzdCBmaWx0ZXJpbmcgYnkgY2hhcmNvZGVzLlxuICAvL1xuICB0aGlzLl9fY2FjaGVfXyA9IG51bGw7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIZWxwZXIgbWV0aG9kcywgc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5XG5cblxuLy8gRmluZCBydWxlIGluZGV4IGJ5IG5hbWVcbi8vXG5SdWxlci5wcm90b3R5cGUuX19maW5kX18gPSBmdW5jdGlvbiAobmFtZSkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX19ydWxlc19fLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRoaXMuX19ydWxlc19fW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59O1xuXG5cbi8vIEJ1aWxkIHJ1bGVzIGxvb2t1cCBjYWNoZVxuLy9cblJ1bGVyLnByb3RvdHlwZS5fX2NvbXBpbGVfXyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgY2hhaW5zID0gWyAnJyBdO1xuXG4gIC8vIGNvbGxlY3QgdW5pcXVlIG5hbWVzXG4gIHNlbGYuX19ydWxlc19fLmZvckVhY2goZnVuY3Rpb24gKHJ1bGUpIHtcbiAgICBpZiAoIXJ1bGUuZW5hYmxlZCkgeyByZXR1cm47IH1cblxuICAgIHJ1bGUuYWx0LmZvckVhY2goZnVuY3Rpb24gKGFsdE5hbWUpIHtcbiAgICAgIGlmIChjaGFpbnMuaW5kZXhPZihhbHROYW1lKSA8IDApIHtcbiAgICAgICAgY2hhaW5zLnB1c2goYWx0TmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHNlbGYuX19jYWNoZV9fID0ge307XG5cbiAgY2hhaW5zLmZvckVhY2goZnVuY3Rpb24gKGNoYWluKSB7XG4gICAgc2VsZi5fX2NhY2hlX19bY2hhaW5dID0gW107XG4gICAgc2VsZi5fX3J1bGVzX18uZm9yRWFjaChmdW5jdGlvbiAocnVsZSkge1xuICAgICAgaWYgKCFydWxlLmVuYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgIGlmIChjaGFpbiAmJiBydWxlLmFsdC5pbmRleE9mKGNoYWluKSA8IDApIHsgcmV0dXJuOyB9XG5cbiAgICAgIHNlbGYuX19jYWNoZV9fW2NoYWluXS5wdXNoKHJ1bGUuZm4pO1xuICAgIH0pO1xuICB9KTtcbn07XG5cblxuLyoqXG4gKiBSdWxlci5hdChuYW1lLCBmbiBbLCBvcHRpb25zXSlcbiAqIC0gbmFtZSAoU3RyaW5nKTogcnVsZSBuYW1lIHRvIHJlcGxhY2UuXG4gKiAtIGZuIChGdW5jdGlvbik6IG5ldyBydWxlIGZ1bmN0aW9uLlxuICogLSBvcHRpb25zIChPYmplY3QpOiBuZXcgcnVsZSBvcHRpb25zIChub3QgbWFuZGF0b3J5KS5cbiAqXG4gKiBSZXBsYWNlIHJ1bGUgYnkgbmFtZSB3aXRoIG5ldyBmdW5jdGlvbiAmIG9wdGlvbnMuIFRocm93cyBlcnJvciBpZiBuYW1lIG5vdFxuICogZm91bmQuXG4gKlxuICogIyMjIyMgT3B0aW9uczpcbiAqXG4gKiAtIF9fYWx0X18gLSBhcnJheSB3aXRoIG5hbWVzIG9mIFwiYWx0ZXJuYXRlXCIgY2hhaW5zLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBSZXBsYWNlIGV4aXN0aW5nIHR5cG9ncmFwaGVyIHJlcGxhY2VtZW50IHJ1bGUgd2l0aCBuZXcgb25lOlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKTtcbiAqXG4gKiBtZC5jb3JlLnJ1bGVyLmF0KCdyZXBsYWNlbWVudHMnLCBmdW5jdGlvbiByZXBsYWNlKHN0YXRlKSB7XG4gKiAgIC8vLi4uXG4gKiB9KTtcbiAqIGBgYFxuICoqL1xuUnVsZXIucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24gKG5hbWUsIGZuLCBvcHRpb25zKSB7XG4gIHZhciBpbmRleCA9IHRoaXMuX19maW5kX18obmFtZSk7XG4gIHZhciBvcHQgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGlmIChpbmRleCA9PT0gLTEpIHsgdGhyb3cgbmV3IEVycm9yKCdQYXJzZXIgcnVsZSBub3QgZm91bmQ6ICcgKyBuYW1lKTsgfVxuXG4gIHRoaXMuX19ydWxlc19fW2luZGV4XS5mbiA9IGZuO1xuICB0aGlzLl9fcnVsZXNfX1tpbmRleF0uYWx0ID0gb3B0LmFsdCB8fCBbXTtcbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblxuXG4vKipcbiAqIFJ1bGVyLmJlZm9yZShiZWZvcmVOYW1lLCBydWxlTmFtZSwgZm4gWywgb3B0aW9uc10pXG4gKiAtIGJlZm9yZU5hbWUgKFN0cmluZyk6IG5ldyBydWxlIHdpbGwgYmUgYWRkZWQgYmVmb3JlIHRoaXMgb25lLlxuICogLSBydWxlTmFtZSAoU3RyaW5nKTogbmFtZSBvZiBhZGRlZCBydWxlLlxuICogLSBmbiAoRnVuY3Rpb24pOiBydWxlIGZ1bmN0aW9uLlxuICogLSBvcHRpb25zIChPYmplY3QpOiBydWxlIG9wdGlvbnMgKG5vdCBtYW5kYXRvcnkpLlxuICpcbiAqIEFkZCBuZXcgcnVsZSB0byBjaGFpbiBiZWZvcmUgb25lIHdpdGggZ2l2ZW4gbmFtZS4gU2VlIGFsc29cbiAqIFtbUnVsZXIuYWZ0ZXJdXSwgW1tSdWxlci5wdXNoXV0uXG4gKlxuICogIyMjIyMgT3B0aW9uczpcbiAqXG4gKiAtIF9fYWx0X18gLSBhcnJheSB3aXRoIG5hbWVzIG9mIFwiYWx0ZXJuYXRlXCIgY2hhaW5zLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gKlxuICogbWQuYmxvY2sucnVsZXIuYmVmb3JlKCdwYXJhZ3JhcGgnLCAnbXlfcnVsZScsIGZ1bmN0aW9uIHJlcGxhY2Uoc3RhdGUpIHtcbiAqICAgLy8uLi5cbiAqIH0pO1xuICogYGBgXG4gKiovXG5SdWxlci5wcm90b3R5cGUuYmVmb3JlID0gZnVuY3Rpb24gKGJlZm9yZU5hbWUsIHJ1bGVOYW1lLCBmbiwgb3B0aW9ucykge1xuICB2YXIgaW5kZXggPSB0aGlzLl9fZmluZF9fKGJlZm9yZU5hbWUpO1xuICB2YXIgb3B0ID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAoaW5kZXggPT09IC0xKSB7IHRocm93IG5ldyBFcnJvcignUGFyc2VyIHJ1bGUgbm90IGZvdW5kOiAnICsgYmVmb3JlTmFtZSk7IH1cblxuICB0aGlzLl9fcnVsZXNfXy5zcGxpY2UoaW5kZXgsIDAsIHtcbiAgICBuYW1lOiBydWxlTmFtZSxcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGZuOiBmbixcbiAgICBhbHQ6IG9wdC5hbHQgfHwgW11cbiAgfSk7XG5cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblxuXG4vKipcbiAqIFJ1bGVyLmFmdGVyKGFmdGVyTmFtZSwgcnVsZU5hbWUsIGZuIFssIG9wdGlvbnNdKVxuICogLSBhZnRlck5hbWUgKFN0cmluZyk6IG5ldyBydWxlIHdpbGwgYmUgYWRkZWQgYWZ0ZXIgdGhpcyBvbmUuXG4gKiAtIHJ1bGVOYW1lIChTdHJpbmcpOiBuYW1lIG9mIGFkZGVkIHJ1bGUuXG4gKiAtIGZuIChGdW5jdGlvbik6IHJ1bGUgZnVuY3Rpb24uXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHJ1bGUgb3B0aW9ucyAobm90IG1hbmRhdG9yeSkuXG4gKlxuICogQWRkIG5ldyBydWxlIHRvIGNoYWluIGFmdGVyIG9uZSB3aXRoIGdpdmVuIG5hbWUuIFNlZSBhbHNvXG4gKiBbW1J1bGVyLmJlZm9yZV1dLCBbW1J1bGVyLnB1c2hdXS5cbiAqXG4gKiAjIyMjIyBPcHRpb25zOlxuICpcbiAqIC0gX19hbHRfXyAtIGFycmF5IHdpdGggbmFtZXMgb2YgXCJhbHRlcm5hdGVcIiBjaGFpbnMuXG4gKlxuICogIyMjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKTtcbiAqXG4gKiBtZC5pbmxpbmUucnVsZXIuYWZ0ZXIoJ3RleHQnLCAnbXlfcnVsZScsIGZ1bmN0aW9uIHJlcGxhY2Uoc3RhdGUpIHtcbiAqICAgLy8uLi5cbiAqIH0pO1xuICogYGBgXG4gKiovXG5SdWxlci5wcm90b3R5cGUuYWZ0ZXIgPSBmdW5jdGlvbiAoYWZ0ZXJOYW1lLCBydWxlTmFtZSwgZm4sIG9wdGlvbnMpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fX2ZpbmRfXyhhZnRlck5hbWUpO1xuICB2YXIgb3B0ID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAoaW5kZXggPT09IC0xKSB7IHRocm93IG5ldyBFcnJvcignUGFyc2VyIHJ1bGUgbm90IGZvdW5kOiAnICsgYWZ0ZXJOYW1lKTsgfVxuXG4gIHRoaXMuX19ydWxlc19fLnNwbGljZShpbmRleCArIDEsIDAsIHtcbiAgICBuYW1lOiBydWxlTmFtZSxcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGZuOiBmbixcbiAgICBhbHQ6IG9wdC5hbHQgfHwgW11cbiAgfSk7XG5cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblxuLyoqXG4gKiBSdWxlci5wdXNoKHJ1bGVOYW1lLCBmbiBbLCBvcHRpb25zXSlcbiAqIC0gcnVsZU5hbWUgKFN0cmluZyk6IG5hbWUgb2YgYWRkZWQgcnVsZS5cbiAqIC0gZm4gKEZ1bmN0aW9uKTogcnVsZSBmdW5jdGlvbi5cbiAqIC0gb3B0aW9ucyAoT2JqZWN0KTogcnVsZSBvcHRpb25zIChub3QgbWFuZGF0b3J5KS5cbiAqXG4gKiBQdXNoIG5ldyBydWxlIHRvIHRoZSBlbmQgb2YgY2hhaW4uIFNlZSBhbHNvXG4gKiBbW1J1bGVyLmJlZm9yZV1dLCBbW1J1bGVyLmFmdGVyXV0uXG4gKlxuICogIyMjIyMgT3B0aW9uczpcbiAqXG4gKiAtIF9fYWx0X18gLSBhcnJheSB3aXRoIG5hbWVzIG9mIFwiYWx0ZXJuYXRlXCIgY2hhaW5zLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gKlxuICogbWQuY29yZS5ydWxlci5wdXNoKCdteV9ydWxlJywgZnVuY3Rpb24gcmVwbGFjZShzdGF0ZSkge1xuICogICAvLy4uLlxuICogfSk7XG4gKiBgYGBcbiAqKi9cblJ1bGVyLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKHJ1bGVOYW1lLCBmbiwgb3B0aW9ucykge1xuICB2YXIgb3B0ID0gb3B0aW9ucyB8fCB7fTtcblxuICB0aGlzLl9fcnVsZXNfXy5wdXNoKHtcbiAgICBuYW1lOiBydWxlTmFtZSxcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGZuOiBmbixcbiAgICBhbHQ6IG9wdC5hbHQgfHwgW11cbiAgfSk7XG5cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblxuXG4vKipcbiAqIFJ1bGVyLmVuYWJsZShsaXN0IFssIGlnbm9yZUludmFsaWRdKSAtPiBBcnJheVxuICogLSBsaXN0IChTdHJpbmd8QXJyYXkpOiBsaXN0IG9mIHJ1bGUgbmFtZXMgdG8gZW5hYmxlLlxuICogLSBpZ25vcmVJbnZhbGlkIChCb29sZWFuKTogc2V0IGB0cnVlYCB0byBpZ25vcmUgZXJyb3JzIHdoZW4gcnVsZSBub3QgZm91bmQuXG4gKlxuICogRW5hYmxlIHJ1bGVzIHdpdGggZ2l2ZW4gbmFtZXMuIElmIGFueSBydWxlIG5hbWUgbm90IGZvdW5kIC0gdGhyb3cgRXJyb3IuXG4gKiBFcnJvcnMgY2FuIGJlIGRpc2FibGVkIGJ5IHNlY29uZCBwYXJhbS5cbiAqXG4gKiBSZXR1cm5zIGxpc3Qgb2YgZm91bmQgcnVsZSBuYW1lcyAoaWYgbm8gZXhjZXB0aW9uIGhhcHBlbmVkKS5cbiAqXG4gKiBTZWUgYWxzbyBbW1J1bGVyLmRpc2FibGVdXSwgW1tSdWxlci5lbmFibGVPbmx5XV0uXG4gKiovXG5SdWxlci5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24gKGxpc3QsIGlnbm9yZUludmFsaWQpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3QpKSB7IGxpc3QgPSBbIGxpc3QgXTsgfVxuXG4gIHZhciByZXN1bHQgPSBbXTtcblxuICAvLyBTZWFyY2ggYnkgbmFtZSBhbmQgZW5hYmxlXG4gIGxpc3QuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBpZHggPSB0aGlzLl9fZmluZF9fKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA8IDApIHtcbiAgICAgIGlmIChpZ25vcmVJbnZhbGlkKSB7IHJldHVybjsgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdWxlcyBtYW5hZ2VyOiBpbnZhbGlkIHJ1bGUgbmFtZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHRoaXMuX19ydWxlc19fW2lkeF0uZW5hYmxlZCA9IHRydWU7XG4gICAgcmVzdWx0LnB1c2gobmFtZSk7XG4gIH0sIHRoaXMpO1xuXG4gIHRoaXMuX19jYWNoZV9fID0gbnVsbDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqXG4gKiBSdWxlci5lbmFibGVPbmx5KGxpc3QgWywgaWdub3JlSW52YWxpZF0pXG4gKiAtIGxpc3QgKFN0cmluZ3xBcnJheSk6IGxpc3Qgb2YgcnVsZSBuYW1lcyB0byBlbmFibGUgKHdoaXRlbGlzdCkuXG4gKiAtIGlnbm9yZUludmFsaWQgKEJvb2xlYW4pOiBzZXQgYHRydWVgIHRvIGlnbm9yZSBlcnJvcnMgd2hlbiBydWxlIG5vdCBmb3VuZC5cbiAqXG4gKiBFbmFibGUgcnVsZXMgd2l0aCBnaXZlbiBuYW1lcywgYW5kIGRpc2FibGUgZXZlcnl0aGluZyBlbHNlLiBJZiBhbnkgcnVsZSBuYW1lXG4gKiBub3QgZm91bmQgLSB0aHJvdyBFcnJvci4gRXJyb3JzIGNhbiBiZSBkaXNhYmxlZCBieSBzZWNvbmQgcGFyYW0uXG4gKlxuICogU2VlIGFsc28gW1tSdWxlci5kaXNhYmxlXV0sIFtbUnVsZXIuZW5hYmxlXV0uXG4gKiovXG5SdWxlci5wcm90b3R5cGUuZW5hYmxlT25seSA9IGZ1bmN0aW9uIChsaXN0LCBpZ25vcmVJbnZhbGlkKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkgeyBsaXN0ID0gWyBsaXN0IF07IH1cblxuICB0aGlzLl9fcnVsZXNfXy5mb3JFYWNoKGZ1bmN0aW9uIChydWxlKSB7IHJ1bGUuZW5hYmxlZCA9IGZhbHNlOyB9KTtcblxuICB0aGlzLmVuYWJsZShsaXN0LCBpZ25vcmVJbnZhbGlkKTtcbn07XG5cblxuLyoqXG4gKiBSdWxlci5kaXNhYmxlKGxpc3QgWywgaWdub3JlSW52YWxpZF0pIC0+IEFycmF5XG4gKiAtIGxpc3QgKFN0cmluZ3xBcnJheSk6IGxpc3Qgb2YgcnVsZSBuYW1lcyB0byBkaXNhYmxlLlxuICogLSBpZ25vcmVJbnZhbGlkIChCb29sZWFuKTogc2V0IGB0cnVlYCB0byBpZ25vcmUgZXJyb3JzIHdoZW4gcnVsZSBub3QgZm91bmQuXG4gKlxuICogRGlzYWJsZSBydWxlcyB3aXRoIGdpdmVuIG5hbWVzLiBJZiBhbnkgcnVsZSBuYW1lIG5vdCBmb3VuZCAtIHRocm93IEVycm9yLlxuICogRXJyb3JzIGNhbiBiZSBkaXNhYmxlZCBieSBzZWNvbmQgcGFyYW0uXG4gKlxuICogUmV0dXJucyBsaXN0IG9mIGZvdW5kIHJ1bGUgbmFtZXMgKGlmIG5vIGV4Y2VwdGlvbiBoYXBwZW5lZCkuXG4gKlxuICogU2VlIGFsc28gW1tSdWxlci5lbmFibGVdXSwgW1tSdWxlci5lbmFibGVPbmx5XV0uXG4gKiovXG5SdWxlci5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uIChsaXN0LCBpZ25vcmVJbnZhbGlkKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkgeyBsaXN0ID0gWyBsaXN0IF07IH1cblxuICB2YXIgcmVzdWx0ID0gW107XG5cbiAgLy8gU2VhcmNoIGJ5IG5hbWUgYW5kIGRpc2FibGVcbiAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX19maW5kX18obmFtZSk7XG5cbiAgICBpZiAoaWR4IDwgMCkge1xuICAgICAgaWYgKGlnbm9yZUludmFsaWQpIHsgcmV0dXJuOyB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1bGVzIG1hbmFnZXI6IGludmFsaWQgcnVsZSBuYW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgdGhpcy5fX3J1bGVzX19baWR4XS5lbmFibGVkID0gZmFsc2U7XG4gICAgcmVzdWx0LnB1c2gobmFtZSk7XG4gIH0sIHRoaXMpO1xuXG4gIHRoaXMuX19jYWNoZV9fID0gbnVsbDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqXG4gKiBSdWxlci5nZXRSdWxlcyhjaGFpbk5hbWUpIC0+IEFycmF5XG4gKlxuICogUmV0dXJuIGFycmF5IG9mIGFjdGl2ZSBmdW5jdGlvbnMgKHJ1bGVzKSBmb3IgZ2l2ZW4gY2hhaW4gbmFtZS4gSXQgYW5hbHl6ZXNcbiAqIHJ1bGVzIGNvbmZpZ3VyYXRpb24sIGNvbXBpbGVzIGNhY2hlcyBpZiBub3QgZXhpc3RzIGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBEZWZhdWx0IGNoYWluIG5hbWUgaXMgYCcnYCAoZW1wdHkgc3RyaW5nKS4gSXQgY2FuJ3QgYmUgc2tpcHBlZC4gVGhhdCdzXG4gKiBkb25lIGludGVudGlvbmFsbHksIHRvIGtlZXAgc2lnbmF0dXJlIG1vbm9tb3JwaGljIGZvciBoaWdoIHNwZWVkLlxuICoqL1xuUnVsZXIucHJvdG90eXBlLmdldFJ1bGVzID0gZnVuY3Rpb24gKGNoYWluTmFtZSkge1xuICBpZiAodGhpcy5fX2NhY2hlX18gPT09IG51bGwpIHtcbiAgICB0aGlzLl9fY29tcGlsZV9fKCk7XG4gIH1cblxuICAvLyBDaGFpbiBjYW4gYmUgZW1wdHksIGlmIHJ1bGVzIGRpc2FibGVkLiBCdXQgd2Ugc3RpbGwgaGF2ZSB0byByZXR1cm4gQXJyYXkuXG4gIHJldHVybiB0aGlzLl9fY2FjaGVfX1tjaGFpbk5hbWVdIHx8IFtdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSdWxlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQU1BO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFNQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQU1BO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/ruler.js\n");
|
1877 |
|
1878 | }),
|
1879 |
|
1880 | "../../../node_modules/markdown-it/lib/rules_block/blockquote.js":
|
1881 |
|
1882 |
|
1883 |
|
1884 |
|
1885 | (function(module, exports, __webpack_require__) {
|
1886 |
|
1887 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Block quotes\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function blockquote(state, startLine, endLine, silent) {\n var adjustTab,\n ch,\n i,\n initial,\n l,\n lastLineEmpty,\n lines,\n nextLine,\n offset,\n oldBMarks,\n oldBSCount,\n oldIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n spaceAfterMarker,\n terminate,\n terminatorRules,\n token,\n isOutdented,\n oldLineMax = state.lineMax,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n } // check the block quote marker\n\n\n if (state.src.charCodeAt(pos++) !== 0x3E\n /* > */\n ) {\n return false;\n } // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n\n\n if (silent) {\n return true;\n } // set offset past spaces and \">\"\n\n\n initial = offset = state.sCount[startLine] + 1; // skip one optional space after '>'\n\n if (state.src.charCodeAt(pos) === 0x20\n /* space */\n ) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09\n /* tab */\n ) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[startLine] + offset) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n oldBMarks = [state.bMarks[startLine]];\n state.bMarks[startLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n oldBSCount = [state.bsCount[startLine]];\n state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0);\n lastLineEmpty = pos >= max;\n oldSCount = [state.sCount[startLine]];\n state.sCount[startLine] = offset - initial;\n oldTShift = [state.tShift[startLine]];\n state.tShift[startLine] = pos - state.bMarks[startLine];\n terminatorRules = state.md.block.ruler.getRules('blockquote');\n oldParentType = state.parentType;\n state.parentType = 'blockquote'; // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag:\n // ```\n // > test\n // - - -\n // ```\n\n for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {\n // check if it's outdented, i.e. it's inside list item and indented\n // less than said list item:\n //\n // ```\n // 1. anything\n // > current blockquote\n // 2. checking this line\n // ```\n isOutdented = state.sCount[nextLine] < state.blkIndent;\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break;\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E\n /* > */\n && !isOutdented) {\n // This line is inside the blockquote.\n // set offset past spaces and \">\"\n initial = offset = state.sCount[nextLine] + 1; // skip one optional space after '>'\n\n if (state.src.charCodeAt(pos) === 0x20\n /* space */\n ) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09\n /* tab */\n ) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[nextLine] + offset) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n state.bMarks[nextLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n lastLineEmpty = pos >= max;\n oldBSCount.push(state.bsCount[nextLine]);\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] = offset - initial;\n oldTShift.push(state.tShift[nextLine]);\n state.tShift[nextLine] = pos - state.bMarks[nextLine];\n continue;\n } // Case 2: line is not inside the blockquote, and the last line was empty.\n\n\n if (lastLineEmpty) {\n break;\n } // Case 3: another tag found.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n // Quirk to enforce \"hard termination mode\" for paragraphs;\n // normally if you call `tokenize(state, startLine, nextLine)`,\n // paragraphs will look below nextLine for paragraph continuation,\n // but if blockquote is terminated by another tag, they shouldn't\n state.lineMax = nextLine;\n\n if (state.blkIndent !== 0) {\n // state.blkIndent was non-zero, we now set it to zero,\n // so we need to re-calculate all offsets to appear as\n // if indent wasn't changed\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] -= state.blkIndent;\n }\n\n break;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]); // A negative indentation means that this is a paragraph continuation\n //\n\n state.sCount[nextLine] = -1;\n }\n\n oldIndent = state.blkIndent;\n state.blkIndent = 0;\n token = state.push('blockquote_open', 'blockquote', 1);\n token.markup = '>';\n token.map = lines = [startLine, 0];\n state.md.block.tokenize(state, startLine, nextLine);\n token = state.push('blockquote_close', 'blockquote', -1);\n token.markup = '>';\n state.lineMax = oldLineMax;\n state.parentType = oldParentType;\n lines[1] = state.line; // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n\n for (i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i];\n state.tShift[i + startLine] = oldTShift[i];\n state.sCount[i + startLine] = oldSCount[i];\n state.bsCount[i + startLine] = oldBSCount[i];\n }\n\n state.blkIndent = oldIndent;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9ibG9ja3F1b3RlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9ibG9ja3F1b3RlLmpzPzM0YTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQmxvY2sgcXVvdGVzXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGlzU3BhY2UgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1NwYWNlO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmxvY2txdW90ZShzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpIHtcbiAgdmFyIGFkanVzdFRhYixcbiAgICAgIGNoLFxuICAgICAgaSxcbiAgICAgIGluaXRpYWwsXG4gICAgICBsLFxuICAgICAgbGFzdExpbmVFbXB0eSxcbiAgICAgIGxpbmVzLFxuICAgICAgbmV4dExpbmUsXG4gICAgICBvZmZzZXQsXG4gICAgICBvbGRCTWFya3MsXG4gICAgICBvbGRCU0NvdW50LFxuICAgICAgb2xkSW5kZW50LFxuICAgICAgb2xkUGFyZW50VHlwZSxcbiAgICAgIG9sZFNDb3VudCxcbiAgICAgIG9sZFRTaGlmdCxcbiAgICAgIHNwYWNlQWZ0ZXJNYXJrZXIsXG4gICAgICB0ZXJtaW5hdGUsXG4gICAgICB0ZXJtaW5hdG9yUnVsZXMsXG4gICAgICB0b2tlbixcbiAgICAgIGlzT3V0ZGVudGVkLFxuICAgICAgb2xkTGluZU1heCA9IHN0YXRlLmxpbmVNYXgsXG4gICAgICBwb3MgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdLFxuICAgICAgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV07XG5cbiAgLy8gaWYgaXQncyBpbmRlbnRlZCBtb3JlIHRoYW4gMyBzcGFjZXMsIGl0IHNob3VsZCBiZSBhIGNvZGUgYmxvY2tcbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gY2hlY2sgdGhlIGJsb2NrIHF1b3RlIG1hcmtlclxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspICE9PSAweDNFLyogPiAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICAvLyB3ZSBrbm93IHRoYXQgaXQncyBnb2luZyB0byBiZSBhIHZhbGlkIGJsb2NrcXVvdGUsXG4gIC8vIHNvIG5vIHBvaW50IHRyeWluZyB0byBmaW5kIHRoZSBlbmQgb2YgaXQgaW4gc2lsZW50IG1vZGVcbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gdHJ1ZTsgfVxuXG4gIC8vIHNldCBvZmZzZXQgcGFzdCBzcGFjZXMgYW5kIFwiPlwiXG4gIGluaXRpYWwgPSBvZmZzZXQgPSBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSArIDE7XG5cbiAgLy8gc2tpcCBvbmUgb3B0aW9uYWwgc3BhY2UgYWZ0ZXIgJz4nXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpID09PSAweDIwIC8qIHNwYWNlICovKSB7XG4gICAgLy8gJyA+ICAgdGVzdCAnXG4gICAgLy8gICAgIF4gLS0gcG9zaXRpb24gc3RhcnQgb2YgbGluZSBoZXJlOlxuICAgIHBvcysrO1xuICAgIGluaXRpYWwrKztcbiAgICBvZmZzZXQrKztcbiAgICBhZGp1c3RUYWIgPSBmYWxzZTtcbiAgICBzcGFjZUFmdGVyTWFya2VyID0gdHJ1ZTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpID09PSAweDA5IC8qIHRhYiAqLykge1xuICAgIHNwYWNlQWZ0ZXJNYXJrZXIgPSB0cnVlO1xuXG4gICAgaWYgKChzdGF0ZS5ic0NvdW50W3N0YXJ0TGluZV0gKyBvZmZzZXQpICUgNCA9PT0gMykge1xuICAgICAgLy8gJyAgPlxcdCAgdGVzdCAnXG4gICAgICAvLyAgICAgICBeIC0tIHBvc2l0aW9uIHN0YXJ0IG9mIGxpbmUgaGVyZSAodGFiIGhhcyB3aWR0aD09PTEpXG4gICAgICBwb3MrKztcbiAgICAgIGluaXRpYWwrKztcbiAgICAgIG9mZnNldCsrO1xuICAgICAgYWRqdXN0VGFiID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vICcgPlxcdCAgdGVzdCAnXG4gICAgICAvLyAgICBeIC0tIHBvc2l0aW9uIHN0YXJ0IG9mIGxpbmUgaGVyZSArIHNoaWZ0IGJzQ291bnQgc2xpZ2h0bHlcbiAgICAgIC8vICAgICAgICAgdG8gbWFrZSBleHRyYSBzcGFjZSBhcHBlYXJcbiAgICAgIGFkanVzdFRhYiA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNwYWNlQWZ0ZXJNYXJrZXIgPSBmYWxzZTtcbiAgfVxuXG4gIG9sZEJNYXJrcyA9IFsgc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gXTtcbiAgc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gPSBwb3M7XG5cbiAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcblxuICAgIGlmIChpc1NwYWNlKGNoKSkge1xuICAgICAgaWYgKGNoID09PSAweDA5KSB7XG4gICAgICAgIG9mZnNldCArPSA0IC0gKG9mZnNldCArIHN0YXRlLmJzQ291bnRbc3RhcnRMaW5lXSArIChhZGp1c3RUYWIgPyAxIDogMCkpICUgNDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9mZnNldCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBwb3MrKztcbiAgfVxuXG4gIG9sZEJTQ291bnQgPSBbIHN0YXRlLmJzQ291bnRbc3RhcnRMaW5lXSBdO1xuICBzdGF0ZS5ic0NvdW50W3N0YXJ0TGluZV0gPSBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSArIDEgKyAoc3BhY2VBZnRlck1hcmtlciA/IDEgOiAwKTtcblxuICBsYXN0TGluZUVtcHR5ID0gcG9zID49IG1heDtcblxuICBvbGRTQ291bnQgPSBbIHN0YXRlLnNDb3VudFtzdGFydExpbmVdIF07XG4gIHN0YXRlLnNDb3VudFtzdGFydExpbmVdID0gb2Zmc2V0IC0gaW5pdGlhbDtcblxuICBvbGRUU2hpZnQgPSBbIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdIF07XG4gIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdID0gcG9zIC0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV07XG5cbiAgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoJ2Jsb2NrcXVvdGUnKTtcblxuICBvbGRQYXJlbnRUeXBlID0gc3RhdGUucGFyZW50VHlwZTtcbiAgc3RhdGUucGFyZW50VHlwZSA9ICdibG9ja3F1b3RlJztcblxuICAvLyBTZWFyY2ggdGhlIGVuZCBvZiB0aGUgYmxvY2tcbiAgLy9cbiAgLy8gQmxvY2sgZW5kcyB3aXRoIGVpdGhlcjpcbiAgLy8gIDEuIGFuIGVtcHR5IGxpbmUgb3V0c2lkZTpcbiAgLy8gICAgIGBgYFxuICAvLyAgICAgPiB0ZXN0XG4gIC8vXG4gIC8vICAgICBgYGBcbiAgLy8gIDIuIGFuIGVtcHR5IGxpbmUgaW5zaWRlOlxuICAvLyAgICAgYGBgXG4gIC8vICAgICA+XG4gIC8vICAgICB0ZXN0XG4gIC8vICAgICBgYGBcbiAgLy8gIDMuIGFub3RoZXIgdGFnOlxuICAvLyAgICAgYGBgXG4gIC8vICAgICA+IHRlc3RcbiAgLy8gICAgICAtIC0gLVxuICAvLyAgICAgYGBgXG4gIGZvciAobmV4dExpbmUgPSBzdGFydExpbmUgKyAxOyBuZXh0TGluZSA8IGVuZExpbmU7IG5leHRMaW5lKyspIHtcbiAgICAvLyBjaGVjayBpZiBpdCdzIG91dGRlbnRlZCwgaS5lLiBpdCdzIGluc2lkZSBsaXN0IGl0ZW0gYW5kIGluZGVudGVkXG4gICAgLy8gbGVzcyB0aGFuIHNhaWQgbGlzdCBpdGVtOlxuICAgIC8vXG4gICAgLy8gYGBgXG4gICAgLy8gMS4gYW55dGhpbmdcbiAgICAvLyAgICA+IGN1cnJlbnQgYmxvY2txdW90ZVxuICAgIC8vIDIuIGNoZWNraW5nIHRoaXMgbGluZVxuICAgIC8vIGBgYFxuICAgIGlzT3V0ZGVudGVkID0gc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IHN0YXRlLmJsa0luZGVudDtcblxuICAgIHBvcyA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdO1xuICAgIG1heCA9IHN0YXRlLmVNYXJrc1tuZXh0TGluZV07XG5cbiAgICBpZiAocG9zID49IG1heCkge1xuICAgICAgLy8gQ2FzZSAxOiBsaW5lIGlzIG5vdCBpbnNpZGUgdGhlIGJsb2NrcXVvdGUsIGFuZCB0aGlzIGxpbmUgaXMgZW1wdHkuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspID09PSAweDNFLyogPiAqLyAmJiAhaXNPdXRkZW50ZWQpIHtcbiAgICAgIC8vIFRoaXMgbGluZSBpcyBpbnNpZGUgdGhlIGJsb2NrcXVvdGUuXG5cbiAgICAgIC8vIHNldCBvZmZzZXQgcGFzdCBzcGFjZXMgYW5kIFwiPlwiXG4gICAgICBpbml0aWFsID0gb2Zmc2V0ID0gc3RhdGUuc0NvdW50W25leHRMaW5lXSArIDE7XG5cbiAgICAgIC8vIHNraXAgb25lIG9wdGlvbmFsIHNwYWNlIGFmdGVyICc+J1xuICAgICAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDB4MjAgLyogc3BhY2UgKi8pIHtcbiAgICAgICAgLy8gJyA+ICAgdGVzdCAnXG4gICAgICAgIC8vICAgICBeIC0tIHBvc2l0aW9uIHN0YXJ0IG9mIGxpbmUgaGVyZTpcbiAgICAgICAgcG9zKys7XG4gICAgICAgIGluaXRpYWwrKztcbiAgICAgICAgb2Zmc2V0Kys7XG4gICAgICAgIGFkanVzdFRhYiA9IGZhbHNlO1xuICAgICAgICBzcGFjZUFmdGVyTWFya2VyID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgwOSAvKiB0YWIgKi8pIHtcbiAgICAgICAgc3BhY2VBZnRlck1hcmtlciA9IHRydWU7XG5cbiAgICAgICAgaWYgKChzdGF0ZS5ic0NvdW50W25leHRMaW5lXSArIG9mZnNldCkgJSA0ID09PSAzKSB7XG4gICAgICAgICAgLy8gJyAgPlxcdCAgdGVzdCAnXG4gICAgICAgICAgLy8gICAgICAgXiAtLSBwb3NpdGlvbiBzdGFydCBvZiBsaW5lIGhlcmUgKHRhYiBoYXMgd2lkdGg9PT0xKVxuICAgICAgICAgIHBvcysrO1xuICAgICAgICAgIGluaXRpYWwrKztcbiAgICAgICAgICBvZmZzZXQrKztcbiAgICAgICAgICBhZGp1c3RUYWIgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyAnID5cXHQgIHRlc3QgJ1xuICAgICAgICAgIC8vICAgIF4gLS0gcG9zaXRpb24gc3RhcnQgb2YgbGluZSBoZXJlICsgc2hpZnQgYnNDb3VudCBzbGlnaHRseVxuICAgICAgICAgIC8vICAgICAgICAgdG8gbWFrZSBleHRyYSBzcGFjZSBhcHBlYXJcbiAgICAgICAgICBhZGp1c3RUYWIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzcGFjZUFmdGVyTWFya2VyID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIG9sZEJNYXJrcy5wdXNoKHN0YXRlLmJNYXJrc1tuZXh0TGluZV0pO1xuICAgICAgc3RhdGUuYk1hcmtzW25leHRMaW5lXSA9IHBvcztcblxuICAgICAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgICAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICAgICAgaWYgKGlzU3BhY2UoY2gpKSB7XG4gICAgICAgICAgaWYgKGNoID09PSAweDA5KSB7XG4gICAgICAgICAgICBvZmZzZXQgKz0gNCAtIChvZmZzZXQgKyBzdGF0ZS5ic0NvdW50W25leHRMaW5lXSArIChhZGp1c3RUYWIgPyAxIDogMCkpICUgNDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2Zmc2V0Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9zKys7XG4gICAgICB9XG5cbiAgICAgIGxhc3RMaW5lRW1wdHkgPSBwb3MgPj0gbWF4O1xuXG4gICAgICBvbGRCU0NvdW50LnB1c2goc3RhdGUuYnNDb3VudFtuZXh0TGluZV0pO1xuICAgICAgc3RhdGUuYnNDb3VudFtuZXh0TGluZV0gPSBzdGF0ZS5zQ291bnRbbmV4dExpbmVdICsgMSArIChzcGFjZUFmdGVyTWFya2VyID8gMSA6IDApO1xuXG4gICAgICBvbGRTQ291bnQucHVzaChzdGF0ZS5zQ291bnRbbmV4dExpbmVdKTtcbiAgICAgIHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPSBvZmZzZXQgLSBpbml0aWFsO1xuXG4gICAgICBvbGRUU2hpZnQucHVzaChzdGF0ZS50U2hpZnRbbmV4dExpbmVdKTtcbiAgICAgIHN0YXRlLnRTaGlmdFtuZXh0TGluZV0gPSBwb3MgLSBzdGF0ZS5iTWFya3NbbmV4dExpbmVdO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gQ2FzZSAyOiBsaW5lIGlzIG5vdCBpbnNpZGUgdGhlIGJsb2NrcXVvdGUsIGFuZCB0aGUgbGFzdCBsaW5lIHdhcyBlbXB0eS5cbiAgICBpZiAobGFzdExpbmVFbXB0eSkgeyBicmVhazsgfVxuXG4gICAgLy8gQ2FzZSAzOiBhbm90aGVyIHRhZyBmb3VuZC5cbiAgICB0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdGVybWluYXRvclJ1bGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKHRlcm1pbmF0b3JSdWxlc1tpXShzdGF0ZSwgbmV4dExpbmUsIGVuZExpbmUsIHRydWUpKSB7XG4gICAgICAgIHRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0ZXJtaW5hdGUpIHtcbiAgICAgIC8vIFF1aXJrIHRvIGVuZm9yY2UgXCJoYXJkIHRlcm1pbmF0aW9uIG1vZGVcIiBmb3IgcGFyYWdyYXBocztcbiAgICAgIC8vIG5vcm1hbGx5IGlmIHlvdSBjYWxsIGB0b2tlbml6ZShzdGF0ZSwgc3RhcnRMaW5lLCBuZXh0TGluZSlgLFxuICAgICAgLy8gcGFyYWdyYXBocyB3aWxsIGxvb2sgYmVsb3cgbmV4dExpbmUgZm9yIHBhcmFncmFwaCBjb250aW51YXRpb24sXG4gICAgICAvLyBidXQgaWYgYmxvY2txdW90ZSBpcyB0ZXJtaW5hdGVkIGJ5IGFub3RoZXIgdGFnLCB0aGV5IHNob3VsZG4ndFxuICAgICAgc3RhdGUubGluZU1heCA9IG5leHRMaW5lO1xuXG4gICAgICBpZiAoc3RhdGUuYmxrSW5kZW50ICE9PSAwKSB7XG4gICAgICAgIC8vIHN0YXRlLmJsa0luZGVudCB3YXMgbm9uLXplcm8sIHdlIG5vdyBzZXQgaXQgdG8gemVybyxcbiAgICAgICAgLy8gc28gd2UgbmVlZCB0byByZS1jYWxjdWxhdGUgYWxsIG9mZnNldHMgdG8gYXBwZWFyIGFzXG4gICAgICAgIC8vIGlmIGluZGVudCB3YXNuJ3QgY2hhbmdlZFxuICAgICAgICBvbGRCTWFya3MucHVzaChzdGF0ZS5iTWFya3NbbmV4dExpbmVdKTtcbiAgICAgICAgb2xkQlNDb3VudC5wdXNoKHN0YXRlLmJzQ291bnRbbmV4dExpbmVdKTtcbiAgICAgICAgb2xkVFNoaWZ0LnB1c2goc3RhdGUudFNoaWZ0W25leHRMaW5lXSk7XG4gICAgICAgIG9sZFNDb3VudC5wdXNoKHN0YXRlLnNDb3VudFtuZXh0TGluZV0pO1xuICAgICAgICBzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC09IHN0YXRlLmJsa0luZGVudDtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgb2xkQk1hcmtzLnB1c2goc3RhdGUuYk1hcmtzW25leHRMaW5lXSk7XG4gICAgb2xkQlNDb3VudC5wdXNoKHN0YXRlLmJzQ291bnRbbmV4dExpbmVdKTtcbiAgICBvbGRUU2hpZnQucHVzaChzdGF0ZS50U2hpZnRbbmV4dExpbmVdKTtcbiAgICBvbGRTQ291bnQucHVzaChzdGF0ZS5zQ291bnRbbmV4dExpbmVdKTtcblxuICAgIC8vIEEgbmVnYXRpdmUgaW5kZW50YXRpb24gbWVhbnMgdGhhdCB0aGlzIGlzIGEgcGFyYWdyYXBoIGNvbnRpbnVhdGlvblxuICAgIC8vXG4gICAgc3RhdGUuc0NvdW50W25leHRMaW5lXSA9IC0xO1xuICB9XG5cbiAgb2xkSW5kZW50ID0gc3RhdGUuYmxrSW5kZW50O1xuICBzdGF0ZS5ibGtJbmRlbnQgPSAwO1xuXG4gIHRva2VuICAgICAgICA9IHN0YXRlLnB1c2goJ2Jsb2NrcXVvdGVfb3BlbicsICdibG9ja3F1b3RlJywgMSk7XG4gIHRva2VuLm1hcmt1cCA9ICc+JztcbiAgdG9rZW4ubWFwICAgID0gbGluZXMgPSBbIHN0YXJ0TGluZSwgMCBdO1xuXG4gIHN0YXRlLm1kLmJsb2NrLnRva2VuaXplKHN0YXRlLCBzdGFydExpbmUsIG5leHRMaW5lKTtcblxuICB0b2tlbiAgICAgICAgPSBzdGF0ZS5wdXNoKCdibG9ja3F1b3RlX2Nsb3NlJywgJ2Jsb2NrcXVvdGUnLCAtMSk7XG4gIHRva2VuLm1hcmt1cCA9ICc+JztcblxuICBzdGF0ZS5saW5lTWF4ID0gb2xkTGluZU1heDtcbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGU7XG4gIGxpbmVzWzFdID0gc3RhdGUubGluZTtcblxuICAvLyBSZXN0b3JlIG9yaWdpbmFsIHRTaGlmdDsgdGhpcyBtaWdodCBub3QgYmUgbmVjZXNzYXJ5IHNpbmNlIHRoZSBwYXJzZXJcbiAgLy8gaGFzIGFscmVhZHkgYmVlbiBoZXJlLCBidXQganVzdCB0byBtYWtlIHN1cmUgd2UgY2FuIGRvIHRoYXQuXG4gIGZvciAoaSA9IDA7IGkgPCBvbGRUU2hpZnQubGVuZ3RoOyBpKyspIHtcbiAgICBzdGF0ZS5iTWFya3NbaSArIHN0YXJ0TGluZV0gPSBvbGRCTWFya3NbaV07XG4gICAgc3RhdGUudFNoaWZ0W2kgKyBzdGFydExpbmVdID0gb2xkVFNoaWZ0W2ldO1xuICAgIHN0YXRlLnNDb3VudFtpICsgc3RhcnRMaW5lXSA9IG9sZFNDb3VudFtpXTtcbiAgICBzdGF0ZS5ic0NvdW50W2kgKyBzdGFydExpbmVdID0gb2xkQlNDb3VudFtpXTtcbiAgfVxuICBzdGF0ZS5ibGtJbmRlbnQgPSBvbGRJbmRlbnQ7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXdCQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/blockquote.js\n");
|
1888 |
|
1889 | }),
|
1890 |
|
1891 | "../../../node_modules/markdown-it/lib/rules_block/code.js":
|
1892 |
|
1893 |
|
1894 |
|
1895 |
|
1896 | (function(module, exports, __webpack_require__) {
|
1897 |
|
1898 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Code block (4 spaces padded)\n 'use strict';\n\n module.exports = function code(state, startLine, endLine\n /*, silent*/\n ) {\n var nextLine, last, token;\n\n if (state.sCount[startLine] - state.blkIndent < 4) {\n return false;\n }\n\n last = nextLine = startLine + 1;\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n nextLine++;\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n nextLine++;\n last = nextLine;\n continue;\n }\n\n break;\n }\n\n state.line = last;\n token = state.push('code_block', 'code', 0);\n token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + '\\n';\n token.map = [startLine, state.line];\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9jb2RlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9jb2RlLmpzPzY0NWYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZSBibG9jayAoNCBzcGFjZXMgcGFkZGVkKVxuXG4ndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb2RlKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUvKiwgc2lsZW50Ki8pIHtcbiAgdmFyIG5leHRMaW5lLCBsYXN0LCB0b2tlbjtcblxuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPCA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGxhc3QgPSBuZXh0TGluZSA9IHN0YXJ0TGluZSArIDE7XG5cbiAgd2hpbGUgKG5leHRMaW5lIDwgZW5kTGluZSkge1xuICAgIGlmIChzdGF0ZS5pc0VtcHR5KG5leHRMaW5lKSkge1xuICAgICAgbmV4dExpbmUrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHtcbiAgICAgIG5leHRMaW5lKys7XG4gICAgICBsYXN0ID0gbmV4dExpbmU7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cblxuICBzdGF0ZS5saW5lID0gbGFzdDtcblxuICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgnY29kZV9ibG9jaycsICdjb2RlJywgMCk7XG4gIHRva2VuLmNvbnRlbnQgPSBzdGF0ZS5nZXRMaW5lcyhzdGFydExpbmUsIGxhc3QsIDQgKyBzdGF0ZS5ibGtJbmRlbnQsIGZhbHNlKSArICdcXG4nO1xuICB0b2tlbi5tYXAgICAgID0gWyBzdGFydExpbmUsIHN0YXRlLmxpbmUgXTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/code.js\n");
|
1899 |
|
1900 | }),
|
1901 |
|
1902 | "../../../node_modules/markdown-it/lib/rules_block/fence.js":
|
1903 |
|
1904 |
|
1905 |
|
1906 |
|
1907 | (function(module, exports, __webpack_require__) {
|
1908 |
|
1909 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // fences (``` lang, ~~~ lang)\n 'use strict';\n\n module.exports = function fence(state, startLine, endLine, silent) {\n var marker,\n len,\n params,\n nextLine,\n mem,\n token,\n markup,\n haveEndMarker = false,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (pos + 3 > max) {\n return false;\n }\n\n marker = state.src.charCodeAt(pos);\n\n if (marker !== 0x7E\n /* ~ */\n && marker !== 0x60\n /* ` */\n ) {\n return false;\n } // scan marker length\n\n\n mem = pos;\n pos = state.skipChars(pos, marker);\n len = pos - mem;\n\n if (len < 3) {\n return false;\n }\n\n markup = state.src.slice(mem, pos);\n params = state.src.slice(pos, max);\n\n if (marker === 0x60\n /* ` */\n ) {\n if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n return false;\n }\n } // Since start is found, we can report success here in validation mode\n\n\n if (silent) {\n return true;\n } // search end of block\n\n\n nextLine = startLine;\n\n for (;;) {\n nextLine++;\n\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break;\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break;\n }\n\n if (state.src.charCodeAt(pos) !== marker) {\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue;\n }\n\n pos = state.skipChars(pos, marker); // closing code fence must be at least as long as the opening one\n\n if (pos - mem < len) {\n continue;\n } // make sure tail has spaces only\n\n\n pos = state.skipSpaces(pos);\n\n if (pos < max) {\n continue;\n }\n\n haveEndMarker = true; // found!\n\n break;\n } // If a fence has heading spaces, they should be removed from its inner block\n\n\n len = state.sCount[startLine];\n state.line = nextLine + (haveEndMarker ? 1 : 0);\n token = state.push('fence', 'code', 0);\n token.info = params;\n token.content = state.getLines(startLine + 1, nextLine, len, true);\n token.markup = markup;\n token.map = [startLine, state.line];\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9mZW5jZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svZmVuY2UuanM/N2ZmMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmZW5jZXMgKGBgYCBsYW5nLCB+fn4gbGFuZylcblxuJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZmVuY2Uoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgc2lsZW50KSB7XG4gIHZhciBtYXJrZXIsIGxlbiwgcGFyYW1zLCBuZXh0TGluZSwgbWVtLCB0b2tlbiwgbWFya3VwLFxuICAgICAgaGF2ZUVuZE1hcmtlciA9IGZhbHNlLFxuICAgICAgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSxcbiAgICAgIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChwb3MgKyAzID4gbWF4KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIG1hcmtlciA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgaWYgKG1hcmtlciAhPT0gMHg3RS8qIH4gKi8gJiYgbWFya2VyICE9PSAweDYwIC8qIGAgKi8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBzY2FuIG1hcmtlciBsZW5ndGhcbiAgbWVtID0gcG9zO1xuICBwb3MgPSBzdGF0ZS5za2lwQ2hhcnMocG9zLCBtYXJrZXIpO1xuXG4gIGxlbiA9IHBvcyAtIG1lbTtcblxuICBpZiAobGVuIDwgMykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBtYXJrdXAgPSBzdGF0ZS5zcmMuc2xpY2UobWVtLCBwb3MpO1xuICBwYXJhbXMgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXgpO1xuXG4gIGlmIChtYXJrZXIgPT09IDB4NjAgLyogYCAqLykge1xuICAgIGlmIChwYXJhbXMuaW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlcikpID49IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyBTaW5jZSBzdGFydCBpcyBmb3VuZCwgd2UgY2FuIHJlcG9ydCBzdWNjZXNzIGhlcmUgaW4gdmFsaWRhdGlvbiBtb2RlXG4gIGlmIChzaWxlbnQpIHsgcmV0dXJuIHRydWU7IH1cblxuICAvLyBzZWFyY2ggZW5kIG9mIGJsb2NrXG4gIG5leHRMaW5lID0gc3RhcnRMaW5lO1xuXG4gIGZvciAoOzspIHtcbiAgICBuZXh0TGluZSsrO1xuICAgIGlmIChuZXh0TGluZSA+PSBlbmRMaW5lKSB7XG4gICAgICAvLyB1bmNsb3NlZCBibG9jayBzaG91bGQgYmUgYXV0b2Nsb3NlZCBieSBlbmQgb2YgZG9jdW1lbnQuXG4gICAgICAvLyBhbHNvIGJsb2NrIHNlZW1zIHRvIGJlIGF1dG9jbG9zZWQgYnkgZW5kIG9mIHBhcmVudFxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcG9zID0gbWVtID0gc3RhdGUuYk1hcmtzW25leHRMaW5lXSArIHN0YXRlLnRTaGlmdFtuZXh0TGluZV07XG4gICAgbWF4ID0gc3RhdGUuZU1hcmtzW25leHRMaW5lXTtcblxuICAgIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IHN0YXRlLmJsa0luZGVudCkge1xuICAgICAgLy8gbm9uLWVtcHR5IGxpbmUgd2l0aCBuZWdhdGl2ZSBpbmRlbnQgc2hvdWxkIHN0b3AgdGhlIGxpc3Q6XG4gICAgICAvLyAtIGBgYFxuICAgICAgLy8gIHRlc3RcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSBtYXJrZXIpIHsgY29udGludWU7IH1cblxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHtcbiAgICAgIC8vIGNsb3NpbmcgZmVuY2Ugc2hvdWxkIGJlIGluZGVudGVkIGxlc3MgdGhhbiA0IHNwYWNlc1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcG9zID0gc3RhdGUuc2tpcENoYXJzKHBvcywgbWFya2VyKTtcblxuICAgIC8vIGNsb3NpbmcgY29kZSBmZW5jZSBtdXN0IGJlIGF0IGxlYXN0IGFzIGxvbmcgYXMgdGhlIG9wZW5pbmcgb25lXG4gICAgaWYgKHBvcyAtIG1lbSA8IGxlbikgeyBjb250aW51ZTsgfVxuXG4gICAgLy8gbWFrZSBzdXJlIHRhaWwgaGFzIHNwYWNlcyBvbmx5XG4gICAgcG9zID0gc3RhdGUuc2tpcFNwYWNlcyhwb3MpO1xuXG4gICAgaWYgKHBvcyA8IG1heCkgeyBjb250aW51ZTsgfVxuXG4gICAgaGF2ZUVuZE1hcmtlciA9IHRydWU7XG4gICAgLy8gZm91bmQhXG4gICAgYnJlYWs7XG4gIH1cblxuICAvLyBJZiBhIGZlbmNlIGhhcyBoZWFkaW5nIHNwYWNlcywgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIGl0cyBpbm5lciBibG9ja1xuICBsZW4gPSBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXTtcblxuICBzdGF0ZS5saW5lID0gbmV4dExpbmUgKyAoaGF2ZUVuZE1hcmtlciA/IDEgOiAwKTtcblxuICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgnZmVuY2UnLCAnY29kZScsIDApO1xuICB0b2tlbi5pbmZvICAgID0gcGFyYW1zO1xuICB0b2tlbi5jb250ZW50ID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lICsgMSwgbmV4dExpbmUsIGxlbiwgdHJ1ZSk7XG4gIHRva2VuLm1hcmt1cCAgPSBtYXJrdXA7XG4gIHRva2VuLm1hcCAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuXG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/fence.js\n");
|
1910 |
|
1911 | }),
|
1912 |
|
1913 | "../../../node_modules/markdown-it/lib/rules_block/heading.js":
|
1914 |
|
1915 |
|
1916 |
|
1917 |
|
1918 | (function(module, exports, __webpack_require__) {
|
1919 |
|
1920 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // heading (#, ##, ...)\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function heading(state, startLine, endLine, silent) {\n var ch,\n level,\n tmp,\n token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x23\n /* # */\n || pos >= max) {\n return false;\n } // count heading level\n\n\n level = 1;\n ch = state.src.charCodeAt(++pos);\n\n while (ch === 0x23\n /* # */\n && pos < max && level <= 6) {\n level++;\n ch = state.src.charCodeAt(++pos);\n }\n\n if (level > 6 || pos < max && !isSpace(ch)) {\n return false;\n }\n\n if (silent) {\n return true;\n } // Let's cut tails like ' ### ' from the end of string\n\n\n max = state.skipSpacesBack(max, pos);\n tmp = state.skipCharsBack(max, 0x23, pos); // #\n\n if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n max = tmp;\n }\n\n state.line = startLine + 1;\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = '########'.slice(0, level);\n token.map = [startLine, state.line];\n token = state.push('inline', '', 0);\n token.content = state.src.slice(pos, max).trim();\n token.map = [startLine, state.line];\n token.children = [];\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = '########'.slice(0, level);\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9oZWFkaW5nLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9oZWFkaW5nLmpzPzMwZmUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaGVhZGluZyAoIywgIyMsIC4uLilcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNTcGFjZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBoZWFkaW5nKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHNpbGVudCkge1xuICB2YXIgY2gsIGxldmVsLCB0bXAsIHRva2VuLFxuICAgICAgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSxcbiAgICAgIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGNoICA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgaWYgKGNoICE9PSAweDIzLyogIyAqLyB8fCBwb3MgPj0gbWF4KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIGNvdW50IGhlYWRpbmcgbGV2ZWxcbiAgbGV2ZWwgPSAxO1xuICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KCsrcG9zKTtcbiAgd2hpbGUgKGNoID09PSAweDIzLyogIyAqLyAmJiBwb3MgPCBtYXggJiYgbGV2ZWwgPD0gNikge1xuICAgIGxldmVsKys7XG4gICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdCgrK3Bvcyk7XG4gIH1cblxuICBpZiAobGV2ZWwgPiA2IHx8IChwb3MgPCBtYXggJiYgIWlzU3BhY2UoY2gpKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoc2lsZW50KSB7IHJldHVybiB0cnVlOyB9XG5cbiAgLy8gTGV0J3MgY3V0IHRhaWxzIGxpa2UgJyAgICAjIyMgICcgZnJvbSB0aGUgZW5kIG9mIHN0cmluZ1xuXG4gIG1heCA9IHN0YXRlLnNraXBTcGFjZXNCYWNrKG1heCwgcG9zKTtcbiAgdG1wID0gc3RhdGUuc2tpcENoYXJzQmFjayhtYXgsIDB4MjMsIHBvcyk7IC8vICNcbiAgaWYgKHRtcCA+IHBvcyAmJiBpc1NwYWNlKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHRtcCAtIDEpKSkge1xuICAgIG1heCA9IHRtcDtcbiAgfVxuXG4gIHN0YXRlLmxpbmUgPSBzdGFydExpbmUgKyAxO1xuXG4gIHRva2VuICAgICAgICA9IHN0YXRlLnB1c2goJ2hlYWRpbmdfb3BlbicsICdoJyArIFN0cmluZyhsZXZlbCksIDEpO1xuICB0b2tlbi5tYXJrdXAgPSAnIyMjIyMjIyMnLnNsaWNlKDAsIGxldmVsKTtcbiAgdG9rZW4ubWFwICAgID0gWyBzdGFydExpbmUsIHN0YXRlLmxpbmUgXTtcblxuICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ2lubGluZScsICcnLCAwKTtcbiAgdG9rZW4uY29udGVudCAgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXgpLnRyaW0oKTtcbiAgdG9rZW4ubWFwICAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuICB0b2tlbi5jaGlsZHJlbiA9IFtdO1xuXG4gIHRva2VuICAgICAgICA9IHN0YXRlLnB1c2goJ2hlYWRpbmdfY2xvc2UnLCAnaCcgKyBTdHJpbmcobGV2ZWwpLCAtMSk7XG4gIHRva2VuLm1hcmt1cCA9ICcjIyMjIyMjIycuc2xpY2UoMCwgbGV2ZWwpO1xuXG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/heading.js\n");
|
1921 |
|
1922 | }),
|
1923 |
|
1924 | "../../../node_modules/markdown-it/lib/rules_block/hr.js":
|
1925 |
|
1926 |
|
1927 |
|
1928 |
|
1929 | (function(module, exports, __webpack_require__) {
|
1930 |
|
1931 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Horizontal rule\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function hr(state, startLine, endLine, silent) {\n var marker,\n cnt,\n ch,\n token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n marker = state.src.charCodeAt(pos++); // Check hr marker\n\n if (marker !== 0x2A\n /* * */\n && marker !== 0x2D\n /* - */\n && marker !== 0x5F\n /* _ */\n ) {\n return false;\n } // markers can be mixed with spaces, but there should be at least 3 of them\n\n\n cnt = 1;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos++);\n\n if (ch !== marker && !isSpace(ch)) {\n return false;\n }\n\n if (ch === marker) {\n cnt++;\n }\n }\n\n if (cnt < 3) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n state.line = startLine + 1;\n token = state.push('hr', 'hr', 0);\n token.map = [startLine, state.line];\n token.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9oci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svaHIuanM/ODQ1NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBIb3Jpem9udGFsIHJ1bGVcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNTcGFjZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBocihzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpIHtcbiAgdmFyIG1hcmtlciwgY250LCBjaCwgdG9rZW4sXG4gICAgICBwb3MgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdLFxuICAgICAgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV07XG5cbiAgLy8gaWYgaXQncyBpbmRlbnRlZCBtb3JlIHRoYW4gMyBzcGFjZXMsIGl0IHNob3VsZCBiZSBhIGNvZGUgYmxvY2tcbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgbWFya2VyID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspO1xuXG4gIC8vIENoZWNrIGhyIG1hcmtlclxuICBpZiAobWFya2VyICE9PSAweDJBLyogKiAqLyAmJlxuICAgICAgbWFya2VyICE9PSAweDJELyogLSAqLyAmJlxuICAgICAgbWFya2VyICE9PSAweDVGLyogXyAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIG1hcmtlcnMgY2FuIGJlIG1peGVkIHdpdGggc3BhY2VzLCBidXQgdGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgb2YgdGhlbVxuXG4gIGNudCA9IDE7XG4gIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKTtcbiAgICBpZiAoY2ggIT09IG1hcmtlciAmJiAhaXNTcGFjZShjaCkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgaWYgKGNoID09PSBtYXJrZXIpIHsgY250Kys7IH1cbiAgfVxuXG4gIGlmIChjbnQgPCAzKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChzaWxlbnQpIHsgcmV0dXJuIHRydWU7IH1cblxuICBzdGF0ZS5saW5lID0gc3RhcnRMaW5lICsgMTtcblxuICB0b2tlbiAgICAgICAgPSBzdGF0ZS5wdXNoKCdocicsICdocicsIDApO1xuICB0b2tlbi5tYXAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuICB0b2tlbi5tYXJrdXAgPSBBcnJheShjbnQgKyAxKS5qb2luKFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyKSk7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBRkE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/hr.js\n");
|
1932 |
|
1933 | }),
|
1934 |
|
1935 | "../../../node_modules/markdown-it/lib/rules_block/html_block.js":
|
1936 |
|
1937 |
|
1938 |
|
1939 |
|
1940 | (function(module, exports, __webpack_require__) {
|
1941 |
|
1942 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // HTML block\n 'use strict';\n\n var block_names = __webpack_require__(/*! ../common/html_blocks */ \"../../../node_modules/markdown-it/lib/common/html_blocks.js\");\n\n var HTML_OPEN_CLOSE_TAG_RE = __webpack_require__(/*! ../common/html_re */ \"../../../node_modules/markdown-it/lib/common/html_re.js\").HTML_OPEN_CLOSE_TAG_RE; // An array of opening and corresponding closing sequences for html tags,\n // last argument defines whether it can terminate a paragraph or not\n //\n\n\n var HTML_SEQUENCES = [[/^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true], [/^<!--/, /-->/, true], [/^<\\?/, /\\?>/, true], [/^<![A-Z]/, />/, true], [/^<!\\[CDATA\\[/, /\\]\\]>/, true], [new RegExp('^</?(' + block_names.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true], [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false]];\n\n module.exports = function html_block(state, startLine, endLine, silent) {\n var i,\n nextLine,\n token,\n lineText,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (!state.md.options.html) {\n return false;\n }\n\n if (state.src.charCodeAt(pos) !== 0x3C\n /* < */\n ) {\n return false;\n }\n\n lineText = state.src.slice(pos, max);\n\n for (i = 0; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) {\n break;\n }\n }\n\n if (i === HTML_SEQUENCES.length) {\n return false;\n }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2];\n }\n\n nextLine = startLine + 1; // If we are here - we detected HTML block.\n // Let's roll down till block end.\n\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n lineText = state.src.slice(pos, max);\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) {\n nextLine++;\n }\n\n break;\n }\n }\n }\n\n state.line = nextLine;\n token = state.push('html_block', '', 0);\n token.map = [startLine, nextLine];\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9odG1sX2Jsb2NrLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9odG1sX2Jsb2NrLmpzP2UxNzgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSFRNTCBibG9ja1xuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIGJsb2NrX25hbWVzID0gcmVxdWlyZSgnLi4vY29tbW9uL2h0bWxfYmxvY2tzJyk7XG52YXIgSFRNTF9PUEVOX0NMT1NFX1RBR19SRSA9IHJlcXVpcmUoJy4uL2NvbW1vbi9odG1sX3JlJykuSFRNTF9PUEVOX0NMT1NFX1RBR19SRTtcblxuLy8gQW4gYXJyYXkgb2Ygb3BlbmluZyBhbmQgY29ycmVzcG9uZGluZyBjbG9zaW5nIHNlcXVlbmNlcyBmb3IgaHRtbCB0YWdzLFxuLy8gbGFzdCBhcmd1bWVudCBkZWZpbmVzIHdoZXRoZXIgaXQgY2FuIHRlcm1pbmF0ZSBhIHBhcmFncmFwaCBvciBub3Rcbi8vXG52YXIgSFRNTF9TRVFVRU5DRVMgPSBbXG4gIFsgL148KHNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpKD89KFxcc3w+fCQpKS9pLCAvPFxcLyhzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKT4vaSwgdHJ1ZSBdLFxuICBbIC9ePCEtLS8sICAgICAgICAvLS0+LywgICB0cnVlIF0sXG4gIFsgL148XFw/LywgICAgICAgICAvXFw/Pi8sICAgdHJ1ZSBdLFxuICBbIC9ePCFbQS1aXS8sICAgICAvPi8sICAgICB0cnVlIF0sXG4gIFsgL148IVxcW0NEQVRBXFxbLywgL1xcXVxcXT4vLCB0cnVlIF0sXG4gIFsgbmV3IFJlZ0V4cCgnXjwvPygnICsgYmxvY2tfbmFtZXMuam9pbignfCcpICsgJykoPz0oXFxcXHN8Lz8+fCQpKScsICdpJyksIC9eJC8sIHRydWUgXSxcbiAgWyBuZXcgUmVnRXhwKEhUTUxfT1BFTl9DTE9TRV9UQUdfUkUuc291cmNlICsgJ1xcXFxzKiQnKSwgIC9eJC8sIGZhbHNlIF1cbl07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBodG1sX2Jsb2NrKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHNpbGVudCkge1xuICB2YXIgaSwgbmV4dExpbmUsIHRva2VuLCBsaW5lVGV4dCxcbiAgICAgIHBvcyA9IHN0YXRlLmJNYXJrc1tzdGFydExpbmVdICsgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0sXG4gICAgICBtYXggPSBzdGF0ZS5lTWFya3Nbc3RhcnRMaW5lXTtcblxuICAvLyBpZiBpdCdzIGluZGVudGVkIG1vcmUgdGhhbiAzIHNwYWNlcywgaXQgc2hvdWxkIGJlIGEgY29kZSBibG9ja1xuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoIXN0YXRlLm1kLm9wdGlvbnMuaHRtbCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgzQy8qIDwgKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgbGluZVRleHQgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXgpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBIVE1MX1NFUVVFTkNFUy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChIVE1MX1NFUVVFTkNFU1tpXVswXS50ZXN0KGxpbmVUZXh0KSkgeyBicmVhazsgfVxuICB9XG5cbiAgaWYgKGkgPT09IEhUTUxfU0VRVUVOQ0VTLmxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgLy8gdHJ1ZSBpZiB0aGlzIHNlcXVlbmNlIGNhbiBiZSBhIHRlcm1pbmF0b3IsIGZhbHNlIG90aGVyd2lzZVxuICAgIHJldHVybiBIVE1MX1NFUVVFTkNFU1tpXVsyXTtcbiAgfVxuXG4gIG5leHRMaW5lID0gc3RhcnRMaW5lICsgMTtcblxuICAvLyBJZiB3ZSBhcmUgaGVyZSAtIHdlIGRldGVjdGVkIEhUTUwgYmxvY2suXG4gIC8vIExldCdzIHJvbGwgZG93biB0aWxsIGJsb2NrIGVuZC5cbiAgaWYgKCFIVE1MX1NFUVVFTkNFU1tpXVsxXS50ZXN0KGxpbmVUZXh0KSkge1xuICAgIGZvciAoOyBuZXh0TGluZSA8IGVuZExpbmU7IG5leHRMaW5lKyspIHtcbiAgICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7IGJyZWFrOyB9XG5cbiAgICAgIHBvcyA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdO1xuICAgICAgbWF4ID0gc3RhdGUuZU1hcmtzW25leHRMaW5lXTtcbiAgICAgIGxpbmVUZXh0ID0gc3RhdGUuc3JjLnNsaWNlKHBvcywgbWF4KTtcblxuICAgICAgaWYgKEhUTUxfU0VRVUVOQ0VTW2ldWzFdLnRlc3QobGluZVRleHQpKSB7XG4gICAgICAgIGlmIChsaW5lVGV4dC5sZW5ndGggIT09IDApIHsgbmV4dExpbmUrKzsgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0ZS5saW5lID0gbmV4dExpbmU7XG5cbiAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ2h0bWxfYmxvY2snLCAnJywgMCk7XG4gIHRva2VuLm1hcCAgICAgPSBbIHN0YXJ0TGluZSwgbmV4dExpbmUgXTtcbiAgdG9rZW4uY29udGVudCA9IHN0YXRlLmdldExpbmVzKHN0YXJ0TGluZSwgbmV4dExpbmUsIHN0YXRlLmJsa0luZGVudCwgdHJ1ZSk7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQVVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/html_block.js\n");
|
1943 |
|
1944 | }),
|
1945 |
|
1946 | "../../../node_modules/markdown-it/lib/rules_block/lheading.js":
|
1947 |
|
1948 |
|
1949 |
|
1950 |
|
1951 | (function(module, exports, __webpack_require__) {
|
1952 |
|
1953 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // lheading (---, ===)\n 'use strict';\n\n module.exports = function lheading(state, startLine, endLine\n /*, silent*/\n ) {\n var content,\n terminate,\n i,\n l,\n token,\n pos,\n max,\n level,\n marker,\n nextLine = startLine + 1,\n oldParentType,\n terminatorRules = state.md.block.ruler.getRules('paragraph'); // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n oldParentType = state.parentType;\n state.parentType = 'paragraph'; // use paragraph to match terminatorRules\n // jump line-by-line until empty one or EOF\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n } //\n // Check for underline in setext header\n //\n\n\n if (state.sCount[nextLine] >= state.blkIndent) {\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max) {\n marker = state.src.charCodeAt(pos);\n\n if (marker === 0x2D\n /* - */\n || marker === 0x3D\n /* = */\n ) {\n pos = state.skipChars(pos, marker);\n pos = state.skipSpaces(pos);\n\n if (pos >= max) {\n level = marker === 0x3D\n /* = */\n ? 1 : 2;\n break;\n }\n }\n }\n } // quirk for blockquotes, this line should already be checked by that rule\n\n\n if (state.sCount[nextLine] < 0) {\n continue;\n } // Some tags can terminate paragraph without empty line.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n if (!level) {\n // Didn't find valid underline\n return false;\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n state.line = nextLine + 1;\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = String.fromCharCode(marker);\n token.map = [startLine, state.line];\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [startLine, state.line - 1];\n token.children = [];\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = String.fromCharCode(marker);\n state.parentType = oldParentType;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9saGVhZGluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svbGhlYWRpbmcuanM/ZWVjMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBsaGVhZGluZyAoLS0tLCA9PT0pXG5cbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxoZWFkaW5nKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUvKiwgc2lsZW50Ki8pIHtcbiAgdmFyIGNvbnRlbnQsIHRlcm1pbmF0ZSwgaSwgbCwgdG9rZW4sIHBvcywgbWF4LCBsZXZlbCwgbWFya2VyLFxuICAgICAgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxLCBvbGRQYXJlbnRUeXBlLFxuICAgICAgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoJ3BhcmFncmFwaCcpO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIG9sZFBhcmVudFR5cGUgPSBzdGF0ZS5wYXJlbnRUeXBlO1xuICBzdGF0ZS5wYXJlbnRUeXBlID0gJ3BhcmFncmFwaCc7IC8vIHVzZSBwYXJhZ3JhcGggdG8gbWF0Y2ggdGVybWluYXRvclJ1bGVzXG5cbiAgLy8ganVtcCBsaW5lLWJ5LWxpbmUgdW50aWwgZW1wdHkgb25lIG9yIEVPRlxuICBmb3IgKDsgbmV4dExpbmUgPCBlbmRMaW5lICYmICFzdGF0ZS5pc0VtcHR5KG5leHRMaW5lKTsgbmV4dExpbmUrKykge1xuICAgIC8vIHRoaXMgd291bGQgYmUgYSBjb2RlIGJsb2NrIG5vcm1hbGx5LCBidXQgYWZ0ZXIgcGFyYWdyYXBoXG4gICAgLy8gaXQncyBjb25zaWRlcmVkIGEgbGF6eSBjb250aW51YXRpb24gcmVnYXJkbGVzcyBvZiB3aGF0J3MgdGhlcmVcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+IDMpIHsgY29udGludWU7IH1cblxuICAgIC8vXG4gICAgLy8gQ2hlY2sgZm9yIHVuZGVybGluZSBpbiBzZXRleHQgaGVhZGVyXG4gICAgLy9cbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA+PSBzdGF0ZS5ibGtJbmRlbnQpIHtcbiAgICAgIHBvcyA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdO1xuICAgICAgbWF4ID0gc3RhdGUuZU1hcmtzW25leHRMaW5lXTtcblxuICAgICAgaWYgKHBvcyA8IG1heCkge1xuICAgICAgICBtYXJrZXIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuXG4gICAgICAgIGlmIChtYXJrZXIgPT09IDB4MkQvKiAtICovIHx8IG1hcmtlciA9PT0gMHgzRC8qID0gKi8pIHtcbiAgICAgICAgICBwb3MgPSBzdGF0ZS5za2lwQ2hhcnMocG9zLCBtYXJrZXIpO1xuICAgICAgICAgIHBvcyA9IHN0YXRlLnNraXBTcGFjZXMocG9zKTtcblxuICAgICAgICAgIGlmIChwb3MgPj0gbWF4KSB7XG4gICAgICAgICAgICBsZXZlbCA9IChtYXJrZXIgPT09IDB4M0QvKiA9ICovID8gMSA6IDIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gcXVpcmsgZm9yIGJsb2NrcXVvdGVzLCB0aGlzIGxpbmUgc2hvdWxkIGFscmVhZHkgYmUgY2hlY2tlZCBieSB0aGF0IHJ1bGVcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IDApIHsgY29udGludWU7IH1cblxuICAgIC8vIFNvbWUgdGFncyBjYW4gdGVybWluYXRlIHBhcmFncmFwaCB3aXRob3V0IGVtcHR5IGxpbmUuXG4gICAgdGVybWluYXRlID0gZmFsc2U7XG4gICAgZm9yIChpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0ZXJtaW5hdG9yUnVsZXNbaV0oc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKSkge1xuICAgICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRlcm1pbmF0ZSkgeyBicmVhazsgfVxuICB9XG5cbiAgaWYgKCFsZXZlbCkge1xuICAgIC8vIERpZG4ndCBmaW5kIHZhbGlkIHVuZGVybGluZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnRlbnQgPSBzdGF0ZS5nZXRMaW5lcyhzdGFydExpbmUsIG5leHRMaW5lLCBzdGF0ZS5ibGtJbmRlbnQsIGZhbHNlKS50cmltKCk7XG5cbiAgc3RhdGUubGluZSA9IG5leHRMaW5lICsgMTtcblxuICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ2hlYWRpbmdfb3BlbicsICdoJyArIFN0cmluZyhsZXZlbCksIDEpO1xuICB0b2tlbi5tYXJrdXAgICA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyKTtcbiAgdG9rZW4ubWFwICAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuXG4gIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgnaW5saW5lJywgJycsIDApO1xuICB0b2tlbi5jb250ZW50ICA9IGNvbnRlbnQ7XG4gIHRva2VuLm1hcCAgICAgID0gWyBzdGFydExpbmUsIHN0YXRlLmxpbmUgLSAxIF07XG4gIHRva2VuLmNoaWxkcmVuID0gW107XG5cbiAgdG9rZW4gICAgICAgICAgPSBzdGF0ZS5wdXNoKCdoZWFkaW5nX2Nsb3NlJywgJ2gnICsgU3RyaW5nKGxldmVsKSwgLTEpO1xuICB0b2tlbi5tYXJrdXAgICA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyKTtcblxuICBzdGF0ZS5wYXJlbnRUeXBlID0gb2xkUGFyZW50VHlwZTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/lheading.js\n");
|
1954 |
|
1955 | }),
|
1956 |
|
1957 | "../../../node_modules/markdown-it/lib/rules_block/list.js":
|
1958 |
|
1959 |
|
1960 |
|
1961 |
|
1962 | (function(module, exports, __webpack_require__) {
|
1963 |
|
1964 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Lists\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace; // Search `[-+*][\\n ]`, returns next pos after marker on success\n // or -1 on fail.\n\n\n function skipBulletListMarker(state, startLine) {\n var marker, pos, max, ch;\n pos = state.bMarks[startLine] + state.tShift[startLine];\n max = state.eMarks[startLine];\n marker = state.src.charCodeAt(pos++); // Check bullet\n\n if (marker !== 0x2A\n /* * */\n && marker !== 0x2D\n /* - */\n && marker !== 0x2B\n /* + */\n ) {\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" -test \" - is not a list item\n return -1;\n }\n }\n\n return pos;\n } // Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n // or -1 on fail.\n\n\n function skipOrderedListMarker(state, startLine) {\n var ch,\n start = state.bMarks[startLine] + state.tShift[startLine],\n pos = start,\n max = state.eMarks[startLine]; // List marker should have at least 2 chars (digit + dot)\n\n if (pos + 1 >= max) {\n return -1;\n }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch < 0x30\n /* 0 */\n || ch > 0x39\n /* 9 */\n ) {\n return -1;\n }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) {\n return -1;\n }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch >= 0x30\n /* 0 */\n && ch <= 0x39\n /* 9 */\n ) {\n // List marker should have no more than 9 digits\n // (prevents integer overflow in browsers)\n if (pos - start >= 10) {\n return -1;\n }\n\n continue;\n } // found valid marker\n\n\n if (ch === 0x29\n /* ) */\n || ch === 0x2e\n /* . */\n ) {\n break;\n }\n\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" 1.test \" - is not a list item\n return -1;\n }\n }\n\n return pos;\n }\n\n function markTightParagraphs(state, idx) {\n var i,\n l,\n level = state.level + 2;\n\n for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true;\n state.tokens[i].hidden = true;\n i += 2;\n }\n }\n }\n\n module.exports = function list(state, startLine, endLine, silent) {\n var ch,\n contentStart,\n i,\n indent,\n indentAfterMarker,\n initial,\n isOrdered,\n itemLines,\n l,\n listLines,\n listTokIdx,\n markerCharCode,\n markerValue,\n max,\n nextLine,\n offset,\n oldListIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n oldTight,\n pos,\n posAfterMarker,\n prevEmptyEnd,\n start,\n terminate,\n terminatorRules,\n token,\n isTerminatingParagraph = false,\n tight = true; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n } // Special case:\n // - item 1\n // - item 2\n // - item 3\n // - item 4\n // - this one is a paragraph continuation\n\n\n if (state.listIndent >= 0 && state.sCount[startLine] - state.listIndent >= 4 && state.sCount[startLine] < state.blkIndent) {\n return false;\n } // limit conditions when list can interrupt\n // a paragraph (validation mode only)\n\n\n if (silent && state.parentType === 'paragraph') {\n // Next list item should still terminate previous list item;\n //\n // This code can fail if plugins use blkIndent as well as lists,\n // but I hope the spec gets fixed long before that happens.\n //\n if (state.tShift[startLine] >= state.blkIndent) {\n isTerminatingParagraph = true;\n }\n } // Detect list type and position after marker\n\n\n if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {\n isOrdered = true;\n start = state.bMarks[startLine] + state.tShift[startLine];\n markerValue = Number(state.src.slice(start, posAfterMarker - 1)); // If we're starting a new ordered list right after\n // a paragraph, it should start with 1.\n\n if (isTerminatingParagraph && markerValue !== 1) return false;\n } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {\n isOrdered = false;\n } else {\n return false;\n } // If we're starting a new unordered list right after\n // a paragraph, first line should not be empty.\n\n\n if (isTerminatingParagraph) {\n if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine]) return false;\n } // We should terminate list on style change. Remember first one to compare.\n\n\n markerCharCode = state.src.charCodeAt(posAfterMarker - 1); // For validation mode we can terminate immediately\n\n if (silent) {\n return true;\n } // Start list\n\n\n listTokIdx = state.tokens.length;\n\n if (isOrdered) {\n token = state.push('ordered_list_open', 'ol', 1);\n\n if (markerValue !== 1) {\n token.attrs = [['start', markerValue]];\n }\n } else {\n token = state.push('bullet_list_open', 'ul', 1);\n }\n\n token.map = listLines = [startLine, 0];\n token.markup = String.fromCharCode(markerCharCode); //\n // Iterate list items\n //\n\n nextLine = startLine;\n prevEmptyEnd = false;\n terminatorRules = state.md.block.ruler.getRules('list');\n oldParentType = state.parentType;\n state.parentType = 'list';\n\n while (nextLine < endLine) {\n pos = posAfterMarker;\n max = state.eMarks[nextLine];\n initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine]) % 4;\n } else if (ch === 0x20) {\n offset++;\n } else {\n break;\n }\n\n pos++;\n }\n\n contentStart = pos;\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1;\n } else {\n indentAfterMarker = offset - initial;\n } // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n\n\n if (indentAfterMarker > 4) {\n indentAfterMarker = 1;\n } // \" - test\"\n // ^^^^^ - calculating total length of this thing\n\n\n indent = initial + indentAfterMarker; // Run subparser & write tokens\n\n token = state.push('list_item_open', 'li', 1);\n token.markup = String.fromCharCode(markerCharCode);\n token.map = itemLines = [startLine, 0];\n\n if (isOrdered) {\n token.info = state.src.slice(start, posAfterMarker - 1);\n } // change current state, then restore it after parser subcall\n\n\n oldTight = state.tight;\n oldTShift = state.tShift[startLine];\n oldSCount = state.sCount[startLine]; // - example list\n // ^ listIndent position will be here\n // ^ blkIndent position will be here\n //\n\n oldListIndent = state.listIndent;\n state.listIndent = state.blkIndent;\n state.blkIndent = indent;\n state.tight = true;\n state.tShift[startLine] = contentStart - state.bMarks[startLine];\n state.sCount[startLine] = offset;\n\n if (contentStart >= max && state.isEmpty(startLine + 1)) {\n // workaround for this case\n // (list item is empty, list terminates before \"foo\"):\n // ~~~~~~~~\n // -\n //\n // foo\n // ~~~~~~~~\n state.line = Math.min(state.line + 2, endLine);\n } else {\n state.md.block.tokenize(state, startLine, endLine, true);\n } // If any of list item is tight, mark list as tight\n\n\n if (!state.tight || prevEmptyEnd) {\n tight = false;\n } // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n\n\n prevEmptyEnd = state.line - startLine > 1 && state.isEmpty(state.line - 1);\n state.blkIndent = state.listIndent;\n state.listIndent = oldListIndent;\n state.tShift[startLine] = oldTShift;\n state.sCount[startLine] = oldSCount;\n state.tight = oldTight;\n token = state.push('list_item_close', 'li', -1);\n token.markup = String.fromCharCode(markerCharCode);\n nextLine = startLine = state.line;\n itemLines[1] = nextLine;\n contentStart = state.bMarks[startLine];\n\n if (nextLine >= endLine) {\n break;\n } //\n // Try to check if list is terminated or continued.\n //\n\n\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n } // if it's indented more than 3 spaces, it should be a code block\n\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n break;\n } // fail if terminating block found\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n } // fail if list has another type\n\n\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine);\n\n if (posAfterMarker < 0) {\n break;\n }\n\n start = state.bMarks[nextLine] + state.tShift[nextLine];\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine);\n\n if (posAfterMarker < 0) {\n break;\n }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) {\n break;\n }\n } // Finalize list\n\n\n if (isOrdered) {\n token = state.push('ordered_list_close', 'ol', -1);\n } else {\n token = state.push('bullet_list_close', 'ul', -1);\n }\n\n token.markup = String.fromCharCode(markerCharCode);\n listLines[1] = nextLine;\n state.line = nextLine;\n state.parentType = oldParentType; // mark paragraphs tight if needed\n\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9saXN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9saXN0LmpzPzRjZTQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTGlzdHNcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNTcGFjZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxuLy8gU2VhcmNoIGBbLSsqXVtcXG4gXWAsIHJldHVybnMgbmV4dCBwb3MgYWZ0ZXIgbWFya2VyIG9uIHN1Y2Nlc3Ncbi8vIG9yIC0xIG9uIGZhaWwuXG5mdW5jdGlvbiBza2lwQnVsbGV0TGlzdE1hcmtlcihzdGF0ZSwgc3RhcnRMaW5lKSB7XG4gIHZhciBtYXJrZXIsIHBvcywgbWF4LCBjaDtcblxuICBwb3MgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdO1xuICBtYXggPSBzdGF0ZS5lTWFya3Nbc3RhcnRMaW5lXTtcblxuICBtYXJrZXIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MrKyk7XG4gIC8vIENoZWNrIGJ1bGxldFxuICBpZiAobWFya2VyICE9PSAweDJBLyogKiAqLyAmJlxuICAgICAgbWFya2VyICE9PSAweDJELyogLSAqLyAmJlxuICAgICAgbWFya2VyICE9PSAweDJCLyogKyAqLykge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGlmIChwb3MgPCBtYXgpIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICBpZiAoIWlzU3BhY2UoY2gpKSB7XG4gICAgICAvLyBcIiAtdGVzdCBcIiAtIGlzIG5vdCBhIGxpc3QgaXRlbVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwb3M7XG59XG5cbi8vIFNlYXJjaCBgXFxkK1suKV1bXFxuIF1gLCByZXR1cm5zIG5leHQgcG9zIGFmdGVyIG1hcmtlciBvbiBzdWNjZXNzXG4vLyBvciAtMSBvbiBmYWlsLlxuZnVuY3Rpb24gc2tpcE9yZGVyZWRMaXN0TWFya2VyKHN0YXRlLCBzdGFydExpbmUpIHtcbiAgdmFyIGNoLFxuICAgICAgc3RhcnQgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdLFxuICAgICAgcG9zID0gc3RhcnQsXG4gICAgICBtYXggPSBzdGF0ZS5lTWFya3Nbc3RhcnRMaW5lXTtcblxuICAvLyBMaXN0IG1hcmtlciBzaG91bGQgaGF2ZSBhdCBsZWFzdCAyIGNoYXJzIChkaWdpdCArIGRvdClcbiAgaWYgKHBvcyArIDEgPj0gbWF4KSB7IHJldHVybiAtMTsgfVxuXG4gIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspO1xuXG4gIGlmIChjaCA8IDB4MzAvKiAwICovIHx8IGNoID4gMHgzOS8qIDkgKi8pIHsgcmV0dXJuIC0xOyB9XG5cbiAgZm9yICg7Oykge1xuICAgIC8vIEVPTCAtPiBmYWlsXG4gICAgaWYgKHBvcyA+PSBtYXgpIHsgcmV0dXJuIC0xOyB9XG5cbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKTtcblxuICAgIGlmIChjaCA+PSAweDMwLyogMCAqLyAmJiBjaCA8PSAweDM5LyogOSAqLykge1xuXG4gICAgICAvLyBMaXN0IG1hcmtlciBzaG91bGQgaGF2ZSBubyBtb3JlIHRoYW4gOSBkaWdpdHNcbiAgICAgIC8vIChwcmV2ZW50cyBpbnRlZ2VyIG92ZXJmbG93IGluIGJyb3dzZXJzKVxuICAgICAgaWYgKHBvcyAtIHN0YXJ0ID49IDEwKSB7IHJldHVybiAtMTsgfVxuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBmb3VuZCB2YWxpZCBtYXJrZXJcbiAgICBpZiAoY2ggPT09IDB4MjkvKiApICovIHx8IGNoID09PSAweDJlLyogLiAqLykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIC0xO1xuICB9XG5cblxuICBpZiAocG9zIDwgbWF4KSB7XG4gICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuXG4gICAgaWYgKCFpc1NwYWNlKGNoKSkge1xuICAgICAgLy8gXCIgMS50ZXN0IFwiIC0gaXMgbm90IGEgbGlzdCBpdGVtXG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiBwb3M7XG59XG5cbmZ1bmN0aW9uIG1hcmtUaWdodFBhcmFncmFwaHMoc3RhdGUsIGlkeCkge1xuICB2YXIgaSwgbCxcbiAgICAgIGxldmVsID0gc3RhdGUubGV2ZWwgKyAyO1xuXG4gIGZvciAoaSA9IGlkeCArIDIsIGwgPSBzdGF0ZS50b2tlbnMubGVuZ3RoIC0gMjsgaSA8IGw7IGkrKykge1xuICAgIGlmIChzdGF0ZS50b2tlbnNbaV0ubGV2ZWwgPT09IGxldmVsICYmIHN0YXRlLnRva2Vuc1tpXS50eXBlID09PSAncGFyYWdyYXBoX29wZW4nKSB7XG4gICAgICBzdGF0ZS50b2tlbnNbaSArIDJdLmhpZGRlbiA9IHRydWU7XG4gICAgICBzdGF0ZS50b2tlbnNbaV0uaGlkZGVuID0gdHJ1ZTtcbiAgICAgIGkgKz0gMjtcbiAgICB9XG4gIH1cbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpc3Qoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgc2lsZW50KSB7XG4gIHZhciBjaCxcbiAgICAgIGNvbnRlbnRTdGFydCxcbiAgICAgIGksXG4gICAgICBpbmRlbnQsXG4gICAgICBpbmRlbnRBZnRlck1hcmtlcixcbiAgICAgIGluaXRpYWwsXG4gICAgICBpc09yZGVyZWQsXG4gICAgICBpdGVtTGluZXMsXG4gICAgICBsLFxuICAgICAgbGlzdExpbmVzLFxuICAgICAgbGlzdFRva0lkeCxcbiAgICAgIG1hcmtlckNoYXJDb2RlLFxuICAgICAgbWFya2VyVmFsdWUsXG4gICAgICBtYXgsXG4gICAgICBuZXh0TGluZSxcbiAgICAgIG9mZnNldCxcbiAgICAgIG9sZExpc3RJbmRlbnQsXG4gICAgICBvbGRQYXJlbnRUeXBlLFxuICAgICAgb2xkU0NvdW50LFxuICAgICAgb2xkVFNoaWZ0LFxuICAgICAgb2xkVGlnaHQsXG4gICAgICBwb3MsXG4gICAgICBwb3NBZnRlck1hcmtlcixcbiAgICAgIHByZXZFbXB0eUVuZCxcbiAgICAgIHN0YXJ0LFxuICAgICAgdGVybWluYXRlLFxuICAgICAgdGVybWluYXRvclJ1bGVzLFxuICAgICAgdG9rZW4sXG4gICAgICBpc1Rlcm1pbmF0aW5nUGFyYWdyYXBoID0gZmFsc2UsXG4gICAgICB0aWdodCA9IHRydWU7XG5cbiAgLy8gaWYgaXQncyBpbmRlbnRlZCBtb3JlIHRoYW4gMyBzcGFjZXMsIGl0IHNob3VsZCBiZSBhIGNvZGUgYmxvY2tcbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gU3BlY2lhbCBjYXNlOlxuICAvLyAgLSBpdGVtIDFcbiAgLy8gICAtIGl0ZW0gMlxuICAvLyAgICAtIGl0ZW0gM1xuICAvLyAgICAgLSBpdGVtIDRcbiAgLy8gICAgICAtIHRoaXMgb25lIGlzIGEgcGFyYWdyYXBoIGNvbnRpbnVhdGlvblxuICBpZiAoc3RhdGUubGlzdEluZGVudCA+PSAwICYmXG4gICAgICBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmxpc3RJbmRlbnQgPj0gNCAmJlxuICAgICAgc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gPCBzdGF0ZS5ibGtJbmRlbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBsaW1pdCBjb25kaXRpb25zIHdoZW4gbGlzdCBjYW4gaW50ZXJydXB0XG4gIC8vIGEgcGFyYWdyYXBoICh2YWxpZGF0aW9uIG1vZGUgb25seSlcbiAgaWYgKHNpbGVudCAmJiBzdGF0ZS5wYXJlbnRUeXBlID09PSAncGFyYWdyYXBoJykge1xuICAgIC8vIE5leHQgbGlzdCBpdGVtIHNob3VsZCBzdGlsbCB0ZXJtaW5hdGUgcHJldmlvdXMgbGlzdCBpdGVtO1xuICAgIC8vXG4gICAgLy8gVGhpcyBjb2RlIGNhbiBmYWlsIGlmIHBsdWdpbnMgdXNlIGJsa0luZGVudCBhcyB3ZWxsIGFzIGxpc3RzLFxuICAgIC8vIGJ1dCBJIGhvcGUgdGhlIHNwZWMgZ2V0cyBmaXhlZCBsb25nIGJlZm9yZSB0aGF0IGhhcHBlbnMuXG4gICAgLy9cbiAgICBpZiAoc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0gPj0gc3RhdGUuYmxrSW5kZW50KSB7XG4gICAgICBpc1Rlcm1pbmF0aW5nUGFyYWdyYXBoID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBEZXRlY3QgbGlzdCB0eXBlIGFuZCBwb3NpdGlvbiBhZnRlciBtYXJrZXJcbiAgaWYgKChwb3NBZnRlck1hcmtlciA9IHNraXBPcmRlcmVkTGlzdE1hcmtlcihzdGF0ZSwgc3RhcnRMaW5lKSkgPj0gMCkge1xuICAgIGlzT3JkZXJlZCA9IHRydWU7XG4gICAgc3RhcnQgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdO1xuICAgIG1hcmtlclZhbHVlID0gTnVtYmVyKHN0YXRlLnNyYy5zbGljZShzdGFydCwgcG9zQWZ0ZXJNYXJrZXIgLSAxKSk7XG5cbiAgICAvLyBJZiB3ZSdyZSBzdGFydGluZyBhIG5ldyBvcmRlcmVkIGxpc3QgcmlnaHQgYWZ0ZXJcbiAgICAvLyBhIHBhcmFncmFwaCwgaXQgc2hvdWxkIHN0YXJ0IHdpdGggMS5cbiAgICBpZiAoaXNUZXJtaW5hdGluZ1BhcmFncmFwaCAmJiBtYXJrZXJWYWx1ZSAhPT0gMSkgcmV0dXJuIGZhbHNlO1xuXG4gIH0gZWxzZSBpZiAoKHBvc0FmdGVyTWFya2VyID0gc2tpcEJ1bGxldExpc3RNYXJrZXIoc3RhdGUsIHN0YXJ0TGluZSkpID49IDApIHtcbiAgICBpc09yZGVyZWQgPSBmYWxzZTtcblxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIElmIHdlJ3JlIHN0YXJ0aW5nIGEgbmV3IHVub3JkZXJlZCBsaXN0IHJpZ2h0IGFmdGVyXG4gIC8vIGEgcGFyYWdyYXBoLCBmaXJzdCBsaW5lIHNob3VsZCBub3QgYmUgZW1wdHkuXG4gIGlmIChpc1Rlcm1pbmF0aW5nUGFyYWdyYXBoKSB7XG4gICAgaWYgKHN0YXRlLnNraXBTcGFjZXMocG9zQWZ0ZXJNYXJrZXIpID49IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdKSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBXZSBzaG91bGQgdGVybWluYXRlIGxpc3Qgb24gc3R5bGUgY2hhbmdlLiBSZW1lbWJlciBmaXJzdCBvbmUgdG8gY29tcGFyZS5cbiAgbWFya2VyQ2hhckNvZGUgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3NBZnRlck1hcmtlciAtIDEpO1xuXG4gIC8vIEZvciB2YWxpZGF0aW9uIG1vZGUgd2UgY2FuIHRlcm1pbmF0ZSBpbW1lZGlhdGVseVxuICBpZiAoc2lsZW50KSB7IHJldHVybiB0cnVlOyB9XG5cbiAgLy8gU3RhcnQgbGlzdFxuICBsaXN0VG9rSWR4ID0gc3RhdGUudG9rZW5zLmxlbmd0aDtcblxuICBpZiAoaXNPcmRlcmVkKSB7XG4gICAgdG9rZW4gICAgICAgPSBzdGF0ZS5wdXNoKCdvcmRlcmVkX2xpc3Rfb3BlbicsICdvbCcsIDEpO1xuICAgIGlmIChtYXJrZXJWYWx1ZSAhPT0gMSkge1xuICAgICAgdG9rZW4uYXR0cnMgPSBbIFsgJ3N0YXJ0JywgbWFya2VyVmFsdWUgXSBdO1xuICAgIH1cblxuICB9IGVsc2Uge1xuICAgIHRva2VuICAgICAgID0gc3RhdGUucHVzaCgnYnVsbGV0X2xpc3Rfb3BlbicsICd1bCcsIDEpO1xuICB9XG5cbiAgdG9rZW4ubWFwICAgID0gbGlzdExpbmVzID0gWyBzdGFydExpbmUsIDAgXTtcbiAgdG9rZW4ubWFya3VwID0gU3RyaW5nLmZyb21DaGFyQ29kZShtYXJrZXJDaGFyQ29kZSk7XG5cbiAgLy9cbiAgLy8gSXRlcmF0ZSBsaXN0IGl0ZW1zXG4gIC8vXG5cbiAgbmV4dExpbmUgPSBzdGFydExpbmU7XG4gIHByZXZFbXB0eUVuZCA9IGZhbHNlO1xuICB0ZXJtaW5hdG9yUnVsZXMgPSBzdGF0ZS5tZC5ibG9jay5ydWxlci5nZXRSdWxlcygnbGlzdCcpO1xuXG4gIG9sZFBhcmVudFR5cGUgPSBzdGF0ZS5wYXJlbnRUeXBlO1xuICBzdGF0ZS5wYXJlbnRUeXBlID0gJ2xpc3QnO1xuXG4gIHdoaWxlIChuZXh0TGluZSA8IGVuZExpbmUpIHtcbiAgICBwb3MgPSBwb3NBZnRlck1hcmtlcjtcbiAgICBtYXggPSBzdGF0ZS5lTWFya3NbbmV4dExpbmVdO1xuXG4gICAgaW5pdGlhbCA9IG9mZnNldCA9IHN0YXRlLnNDb3VudFtuZXh0TGluZV0gKyBwb3NBZnRlck1hcmtlciAtIChzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdKTtcblxuICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcblxuICAgICAgaWYgKGNoID09PSAweDA5KSB7XG4gICAgICAgIG9mZnNldCArPSA0IC0gKG9mZnNldCArIHN0YXRlLmJzQ291bnRbbmV4dExpbmVdKSAlIDQ7XG4gICAgICB9IGVsc2UgaWYgKGNoID09PSAweDIwKSB7XG4gICAgICAgIG9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHBvcysrO1xuICAgIH1cblxuICAgIGNvbnRlbnRTdGFydCA9IHBvcztcblxuICAgIGlmIChjb250ZW50U3RhcnQgPj0gbWF4KSB7XG4gICAgICAvLyB0cmltbWluZyBzcGFjZSBpbiBcIi0gICAgXFxuICAzXCIgY2FzZSwgaW5kZW50IGlzIDEgaGVyZVxuICAgICAgaW5kZW50QWZ0ZXJNYXJrZXIgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbmRlbnRBZnRlck1hcmtlciA9IG9mZnNldCAtIGluaXRpYWw7XG4gICAgfVxuXG4gICAgLy8gSWYgd2UgaGF2ZSBtb3JlIHRoYW4gNCBzcGFjZXMsIHRoZSBpbmRlbnQgaXMgMVxuICAgIC8vICh0aGUgcmVzdCBpcyBqdXN0IGluZGVudGVkIGNvZGUgYmxvY2spXG4gICAgaWYgKGluZGVudEFmdGVyTWFya2VyID4gNCkgeyBpbmRlbnRBZnRlck1hcmtlciA9IDE7IH1cblxuICAgIC8vIFwiICAtICB0ZXN0XCJcbiAgICAvLyAgXl5eXl4gLSBjYWxjdWxhdGluZyB0b3RhbCBsZW5ndGggb2YgdGhpcyB0aGluZ1xuICAgIGluZGVudCA9IGluaXRpYWwgKyBpbmRlbnRBZnRlck1hcmtlcjtcblxuICAgIC8vIFJ1biBzdWJwYXJzZXIgJiB3cml0ZSB0b2tlbnNcbiAgICB0b2tlbiAgICAgICAgPSBzdGF0ZS5wdXNoKCdsaXN0X2l0ZW1fb3BlbicsICdsaScsIDEpO1xuICAgIHRva2VuLm1hcmt1cCA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyQ2hhckNvZGUpO1xuICAgIHRva2VuLm1hcCAgICA9IGl0ZW1MaW5lcyA9IFsgc3RhcnRMaW5lLCAwIF07XG4gICAgaWYgKGlzT3JkZXJlZCkge1xuICAgICAgdG9rZW4uaW5mbyA9IHN0YXRlLnNyYy5zbGljZShzdGFydCwgcG9zQWZ0ZXJNYXJrZXIgLSAxKTtcbiAgICB9XG5cbiAgICAvLyBjaGFuZ2UgY3VycmVudCBzdGF0ZSwgdGhlbiByZXN0b3JlIGl0IGFmdGVyIHBhcnNlciBzdWJjYWxsXG4gICAgb2xkVGlnaHQgPSBzdGF0ZS50aWdodDtcbiAgICBvbGRUU2hpZnQgPSBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXTtcbiAgICBvbGRTQ291bnQgPSBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXTtcblxuICAgIC8vICAtIGV4YW1wbGUgbGlzdFxuICAgIC8vIF4gbGlzdEluZGVudCBwb3NpdGlvbiB3aWxsIGJlIGhlcmVcbiAgICAvLyAgIF4gYmxrSW5kZW50IHBvc2l0aW9uIHdpbGwgYmUgaGVyZVxuICAgIC8vXG4gICAgb2xkTGlzdEluZGVudCA9IHN0YXRlLmxpc3RJbmRlbnQ7XG4gICAgc3RhdGUubGlzdEluZGVudCA9IHN0YXRlLmJsa0luZGVudDtcbiAgICBzdGF0ZS5ibGtJbmRlbnQgPSBpbmRlbnQ7XG5cbiAgICBzdGF0ZS50aWdodCA9IHRydWU7XG4gICAgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0gPSBjb250ZW50U3RhcnQgLSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXTtcbiAgICBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSA9IG9mZnNldDtcblxuICAgIGlmIChjb250ZW50U3RhcnQgPj0gbWF4ICYmIHN0YXRlLmlzRW1wdHkoc3RhcnRMaW5lICsgMSkpIHtcbiAgICAgIC8vIHdvcmthcm91bmQgZm9yIHRoaXMgY2FzZVxuICAgICAgLy8gKGxpc3QgaXRlbSBpcyBlbXB0eSwgbGlzdCB0ZXJtaW5hdGVzIGJlZm9yZSBcImZvb1wiKTpcbiAgICAgIC8vIH5+fn5+fn5+XG4gICAgICAvLyAgIC1cbiAgICAgIC8vXG4gICAgICAvLyAgICAgZm9vXG4gICAgICAvLyB+fn5+fn5+flxuICAgICAgc3RhdGUubGluZSA9IE1hdGgubWluKHN0YXRlLmxpbmUgKyAyLCBlbmRMaW5lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUubWQuYmxvY2sudG9rZW5pemUoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gSWYgYW55IG9mIGxpc3QgaXRlbSBpcyB0aWdodCwgbWFyayBsaXN0IGFzIHRpZ2h0XG4gICAgaWYgKCFzdGF0ZS50aWdodCB8fCBwcmV2RW1wdHlFbmQpIHtcbiAgICAgIHRpZ2h0ID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIEl0ZW0gYmVjb21lIGxvb3NlIGlmIGZpbmlzaCB3aXRoIGVtcHR5IGxpbmUsXG4gICAgLy8gYnV0IHdlIHNob3VsZCBmaWx0ZXIgbGFzdCBlbGVtZW50LCBiZWNhdXNlIGl0IG1lYW5zIGxpc3QgZmluaXNoXG4gICAgcHJldkVtcHR5RW5kID0gKHN0YXRlLmxpbmUgLSBzdGFydExpbmUpID4gMSAmJiBzdGF0ZS5pc0VtcHR5KHN0YXRlLmxpbmUgLSAxKTtcblxuICAgIHN0YXRlLmJsa0luZGVudCA9IHN0YXRlLmxpc3RJbmRlbnQ7XG4gICAgc3RhdGUubGlzdEluZGVudCA9IG9sZExpc3RJbmRlbnQ7XG4gICAgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0gPSBvbGRUU2hpZnQ7XG4gICAgc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gPSBvbGRTQ291bnQ7XG4gICAgc3RhdGUudGlnaHQgPSBvbGRUaWdodDtcblxuICAgIHRva2VuICAgICAgICA9IHN0YXRlLnB1c2goJ2xpc3RfaXRlbV9jbG9zZScsICdsaScsIC0xKTtcbiAgICB0b2tlbi5tYXJrdXAgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlckNoYXJDb2RlKTtcblxuICAgIG5leHRMaW5lID0gc3RhcnRMaW5lID0gc3RhdGUubGluZTtcbiAgICBpdGVtTGluZXNbMV0gPSBuZXh0TGluZTtcbiAgICBjb250ZW50U3RhcnQgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXTtcblxuICAgIGlmIChuZXh0TGluZSA+PSBlbmRMaW5lKSB7IGJyZWFrOyB9XG5cbiAgICAvL1xuICAgIC8vIFRyeSB0byBjaGVjayBpZiBsaXN0IGlzIHRlcm1pbmF0ZWQgb3IgY29udGludWVkLlxuICAgIC8vXG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCBzdGF0ZS5ibGtJbmRlbnQpIHsgYnJlYWs7IH1cblxuICAgIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gICAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgYnJlYWs7IH1cblxuICAgIC8vIGZhaWwgaWYgdGVybWluYXRpbmcgYmxvY2sgZm91bmRcbiAgICB0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdGVybWluYXRvclJ1bGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKHRlcm1pbmF0b3JSdWxlc1tpXShzdGF0ZSwgbmV4dExpbmUsIGVuZExpbmUsIHRydWUpKSB7XG4gICAgICAgIHRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGVybWluYXRlKSB7IGJyZWFrOyB9XG5cbiAgICAvLyBmYWlsIGlmIGxpc3QgaGFzIGFub3RoZXIgdHlwZVxuICAgIGlmIChpc09yZGVyZWQpIHtcbiAgICAgIHBvc0FmdGVyTWFya2VyID0gc2tpcE9yZGVyZWRMaXN0TWFya2VyKHN0YXRlLCBuZXh0TGluZSk7XG4gICAgICBpZiAocG9zQWZ0ZXJNYXJrZXIgPCAwKSB7IGJyZWFrOyB9XG4gICAgICBzdGFydCA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3NBZnRlck1hcmtlciA9IHNraXBCdWxsZXRMaXN0TWFya2VyKHN0YXRlLCBuZXh0TGluZSk7XG4gICAgICBpZiAocG9zQWZ0ZXJNYXJrZXIgPCAwKSB7IGJyZWFrOyB9XG4gICAgfVxuXG4gICAgaWYgKG1hcmtlckNoYXJDb2RlICE9PSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3NBZnRlck1hcmtlciAtIDEpKSB7IGJyZWFrOyB9XG4gIH1cblxuICAvLyBGaW5hbGl6ZSBsaXN0XG4gIGlmIChpc09yZGVyZWQpIHtcbiAgICB0b2tlbiA9IHN0YXRlLnB1c2goJ29yZGVyZWRfbGlzdF9jbG9zZScsICdvbCcsIC0xKTtcbiAgfSBlbHNlIHtcbiAgICB0b2tlbiA9IHN0YXRlLnB1c2goJ2J1bGxldF9saXN0X2Nsb3NlJywgJ3VsJywgLTEpO1xuICB9XG4gIHRva2VuLm1hcmt1cCA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyQ2hhckNvZGUpO1xuXG4gIGxpc3RMaW5lc1sxXSA9IG5leHRMaW5lO1xuICBzdGF0ZS5saW5lID0gbmV4dExpbmU7XG5cbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGU7XG5cbiAgLy8gbWFyayBwYXJhZ3JhcGhzIHRpZ2h0IGlmIG5lZWRlZFxuICBpZiAodGlnaHQpIHtcbiAgICBtYXJrVGlnaHRQYXJhZ3JhcGhzKHN0YXRlLCBsaXN0VG9rSWR4KTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUZBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUtBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBK0JBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/list.js\n");
|
1965 |
|
1966 | }),
|
1967 |
|
1968 | "../../../node_modules/markdown-it/lib/rules_block/paragraph.js":
|
1969 |
|
1970 |
|
1971 |
|
1972 |
|
1973 | (function(module, exports, __webpack_require__) {
|
1974 |
|
1975 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Paragraph\n 'use strict';\n\n module.exports = function paragraph(state, startLine\n /*, endLine*/\n ) {\n var content,\n terminate,\n i,\n l,\n token,\n oldParentType,\n nextLine = startLine + 1,\n terminatorRules = state.md.block.ruler.getRules('paragraph'),\n endLine = state.lineMax;\n oldParentType = state.parentType;\n state.parentType = 'paragraph'; // jump line-by-line until empty one or EOF\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n } // quirk for blockquotes, this line should already be checked by that rule\n\n\n if (state.sCount[nextLine] < 0) {\n continue;\n } // Some tags can terminate paragraph without empty line.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n state.line = nextLine;\n token = state.push('paragraph_open', 'p', 1);\n token.map = [startLine, state.line];\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [startLine, state.line];\n token.children = [];\n token = state.push('paragraph_close', 'p', -1);\n state.parentType = oldParentType;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9wYXJhZ3JhcGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2Jsb2NrL3BhcmFncmFwaC5qcz9hZWFjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBhcmFncmFwaFxuXG4ndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJhZ3JhcGgoc3RhdGUsIHN0YXJ0TGluZS8qLCBlbmRMaW5lKi8pIHtcbiAgdmFyIGNvbnRlbnQsIHRlcm1pbmF0ZSwgaSwgbCwgdG9rZW4sIG9sZFBhcmVudFR5cGUsXG4gICAgICBuZXh0TGluZSA9IHN0YXJ0TGluZSArIDEsXG4gICAgICB0ZXJtaW5hdG9yUnVsZXMgPSBzdGF0ZS5tZC5ibG9jay5ydWxlci5nZXRSdWxlcygncGFyYWdyYXBoJyksXG4gICAgICBlbmRMaW5lID0gc3RhdGUubGluZU1heDtcblxuICBvbGRQYXJlbnRUeXBlID0gc3RhdGUucGFyZW50VHlwZTtcbiAgc3RhdGUucGFyZW50VHlwZSA9ICdwYXJhZ3JhcGgnO1xuXG4gIC8vIGp1bXAgbGluZS1ieS1saW5lIHVudGlsIGVtcHR5IG9uZSBvciBFT0ZcbiAgZm9yICg7IG5leHRMaW5lIDwgZW5kTGluZSAmJiAhc3RhdGUuaXNFbXB0eShuZXh0TGluZSk7IG5leHRMaW5lKyspIHtcbiAgICAvLyB0aGlzIHdvdWxkIGJlIGEgY29kZSBibG9jayBub3JtYWxseSwgYnV0IGFmdGVyIHBhcmFncmFwaFxuICAgIC8vIGl0J3MgY29uc2lkZXJlZCBhIGxhenkgY29udGludWF0aW9uIHJlZ2FyZGxlc3Mgb2Ygd2hhdCdzIHRoZXJlXG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPiAzKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAvLyBxdWlyayBmb3IgYmxvY2txdW90ZXMsIHRoaXMgbGluZSBzaG91bGQgYWxyZWFkeSBiZSBjaGVja2VkIGJ5IHRoYXQgcnVsZVxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgMCkgeyBjb250aW51ZTsgfVxuXG4gICAgLy8gU29tZSB0YWdzIGNhbiB0ZXJtaW5hdGUgcGFyYWdyYXBoIHdpdGhvdXQgZW1wdHkgbGluZS5cbiAgICB0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdGVybWluYXRvclJ1bGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKHRlcm1pbmF0b3JSdWxlc1tpXShzdGF0ZSwgbmV4dExpbmUsIGVuZExpbmUsIHRydWUpKSB7XG4gICAgICAgIHRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGVybWluYXRlKSB7IGJyZWFrOyB9XG4gIH1cblxuICBjb250ZW50ID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lLCBuZXh0TGluZSwgc3RhdGUuYmxrSW5kZW50LCBmYWxzZSkudHJpbSgpO1xuXG4gIHN0YXRlLmxpbmUgPSBuZXh0TGluZTtcblxuICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ3BhcmFncmFwaF9vcGVuJywgJ3AnLCAxKTtcbiAgdG9rZW4ubWFwICAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuXG4gIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgnaW5saW5lJywgJycsIDApO1xuICB0b2tlbi5jb250ZW50ICA9IGNvbnRlbnQ7XG4gIHRva2VuLm1hcCAgICAgID0gWyBzdGFydExpbmUsIHN0YXRlLmxpbmUgXTtcbiAgdG9rZW4uY2hpbGRyZW4gPSBbXTtcblxuICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ3BhcmFncmFwaF9jbG9zZScsICdwJywgLTEpO1xuXG4gIHN0YXRlLnBhcmVudFR5cGUgPSBvbGRQYXJlbnRUeXBlO1xuXG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/paragraph.js\n");
|
1976 |
|
1977 | }),
|
1978 |
|
1979 | "../../../node_modules/markdown-it/lib/rules_block/reference.js":
|
1980 |
|
1981 |
|
1982 |
|
1983 |
|
1984 | (function(module, exports, __webpack_require__) {
|
1985 |
|
1986 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n var normalizeReference = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").normalizeReference;\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function reference(state, startLine, _endLine, silent) {\n var ch,\n destEndPos,\n destEndLineNo,\n endLine,\n href,\n i,\n l,\n label,\n labelEnd,\n oldParentType,\n res,\n start,\n str,\n terminate,\n terminatorRules,\n title,\n lines = 0,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine],\n nextLine = startLine + 1; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (state.src.charCodeAt(pos) !== 0x5B\n /* [ */\n ) {\n return false;\n } // Simple check to quickly interrupt scan on [link](url) at the start of line.\n // Can be useful on practice: https://github.com/markdown-it/markdown-it/issues/54\n\n\n while (++pos < max) {\n if (state.src.charCodeAt(pos) === 0x5D\n /* ] */\n && state.src.charCodeAt(pos - 1) !== 0x5C\n /* \\ */\n ) {\n if (pos + 1 === max) {\n return false;\n }\n\n if (state.src.charCodeAt(pos + 1) !== 0x3A\n /* : */\n ) {\n return false;\n }\n\n break;\n }\n }\n\n endLine = state.lineMax; // jump line-by-line until empty one or EOF\n\n terminatorRules = state.md.block.ruler.getRules('reference');\n oldParentType = state.parentType;\n state.parentType = 'reference';\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n } // quirk for blockquotes, this line should already be checked by that rule\n\n\n if (state.sCount[nextLine] < 0) {\n continue;\n } // Some tags can terminate paragraph without empty line.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n max = str.length;\n\n for (pos = 1; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 0x5B\n /* [ */\n ) {\n return false;\n } else if (ch === 0x5D\n /* ] */\n ) {\n labelEnd = pos;\n break;\n } else if (ch === 0x0A\n /* \\n */\n ) {\n lines++;\n } else if (ch === 0x5C\n /* \\ */\n ) {\n pos++;\n\n if (pos < max && str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n }\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A\n /* : */\n ) {\n return false;\n } // [label]: destination 'title'\n // ^^^ skip optional whitespace here\n\n\n for (pos = labelEnd + 2; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n } // [label]: destination 'title'\n // ^^^^^^^^^^^ parse this\n\n\n res = state.md.helpers.parseLinkDestination(str, pos, max);\n\n if (!res.ok) {\n return false;\n }\n\n href = state.md.normalizeLink(res.str);\n\n if (!state.md.validateLink(href)) {\n return false;\n }\n\n pos = res.pos;\n lines += res.lines; // save cursor state, we could require to rollback later\n\n destEndPos = pos;\n destEndLineNo = lines; // [label]: destination 'title'\n // ^^^ skipping those spaces\n\n start = pos;\n\n for (; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n } // [label]: destination 'title'\n // ^^^^^^^ parse this\n\n\n res = state.md.helpers.parseLinkTitle(str, pos, max);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n lines += res.lines;\n } else {\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n } // skip trailing spaces until the rest of the line\n\n\n while (pos < max) {\n ch = str.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n\n pos++;\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n if (title) {\n // garbage at the end of the line after title,\n // but it could still be a valid reference if we roll back\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n\n while (pos < max) {\n ch = str.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n\n pos++;\n }\n }\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n // garbage at the end of the line\n return false;\n }\n\n label = normalizeReference(str.slice(1, labelEnd));\n\n if (!label) {\n // CommonMark 0.20 disallows empty labels\n return false;\n } // Reference can not terminate anything. This check is for safety only.\n\n /*istanbul ignore if*/\n\n\n if (silent) {\n return true;\n }\n\n if (typeof state.env.references === 'undefined') {\n state.env.references = {};\n }\n\n if (typeof state.env.references[label] === 'undefined') {\n state.env.references[label] = {\n title: title,\n href: href\n };\n }\n\n state.parentType = oldParentType;\n state.line = startLine + lines + 1;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9yZWZlcmVuY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2Jsb2NrL3JlZmVyZW5jZS5qcz84MzUwIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuXG52YXIgbm9ybWFsaXplUmVmZXJlbmNlICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5ub3JtYWxpemVSZWZlcmVuY2U7XG52YXIgaXNTcGFjZSAgICAgICAgICAgICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1NwYWNlO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmVmZXJlbmNlKHN0YXRlLCBzdGFydExpbmUsIF9lbmRMaW5lLCBzaWxlbnQpIHtcbiAgdmFyIGNoLFxuICAgICAgZGVzdEVuZFBvcyxcbiAgICAgIGRlc3RFbmRMaW5lTm8sXG4gICAgICBlbmRMaW5lLFxuICAgICAgaHJlZixcbiAgICAgIGksXG4gICAgICBsLFxuICAgICAgbGFiZWwsXG4gICAgICBsYWJlbEVuZCxcbiAgICAgIG9sZFBhcmVudFR5cGUsXG4gICAgICByZXMsXG4gICAgICBzdGFydCxcbiAgICAgIHN0cixcbiAgICAgIHRlcm1pbmF0ZSxcbiAgICAgIHRlcm1pbmF0b3JSdWxlcyxcbiAgICAgIHRpdGxlLFxuICAgICAgbGluZXMgPSAwLFxuICAgICAgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSxcbiAgICAgIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdLFxuICAgICAgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDVCLyogWyAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICAvLyBTaW1wbGUgY2hlY2sgdG8gcXVpY2tseSBpbnRlcnJ1cHQgc2NhbiBvbiBbbGlua10odXJsKSBhdCB0aGUgc3RhcnQgb2YgbGluZS5cbiAgLy8gQ2FuIGJlIHVzZWZ1bCBvbiBwcmFjdGljZTogaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2lzc3Vlcy81NFxuICB3aGlsZSAoKytwb3MgPCBtYXgpIHtcbiAgICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHg1RCAvKiBdICovICYmXG4gICAgICAgIHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyAtIDEpICE9PSAweDVDLyogXFwgKi8pIHtcbiAgICAgIGlmIChwb3MgKyAxID09PSBtYXgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zICsgMSkgIT09IDB4M0EvKiA6ICovKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgZW5kTGluZSA9IHN0YXRlLmxpbmVNYXg7XG5cbiAgLy8ganVtcCBsaW5lLWJ5LWxpbmUgdW50aWwgZW1wdHkgb25lIG9yIEVPRlxuICB0ZXJtaW5hdG9yUnVsZXMgPSBzdGF0ZS5tZC5ibG9jay5ydWxlci5nZXRSdWxlcygncmVmZXJlbmNlJyk7XG5cbiAgb2xkUGFyZW50VHlwZSA9IHN0YXRlLnBhcmVudFR5cGU7XG4gIHN0YXRlLnBhcmVudFR5cGUgPSAncmVmZXJlbmNlJztcblxuICBmb3IgKDsgbmV4dExpbmUgPCBlbmRMaW5lICYmICFzdGF0ZS5pc0VtcHR5KG5leHRMaW5lKTsgbmV4dExpbmUrKykge1xuICAgIC8vIHRoaXMgd291bGQgYmUgYSBjb2RlIGJsb2NrIG5vcm1hbGx5LCBidXQgYWZ0ZXIgcGFyYWdyYXBoXG4gICAgLy8gaXQncyBjb25zaWRlcmVkIGEgbGF6eSBjb250aW51YXRpb24gcmVnYXJkbGVzcyBvZiB3aGF0J3MgdGhlcmVcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+IDMpIHsgY29udGludWU7IH1cblxuICAgIC8vIHF1aXJrIGZvciBibG9ja3F1b3RlcywgdGhpcyBsaW5lIHNob3VsZCBhbHJlYWR5IGJlIGNoZWNrZWQgYnkgdGhhdCBydWxlXG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCAwKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAvLyBTb21lIHRhZ3MgY2FuIHRlcm1pbmF0ZSBwYXJhZ3JhcGggd2l0aG91dCBlbXB0eSBsaW5lLlxuICAgIHRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgIGZvciAoaSA9IDAsIGwgPSB0ZXJtaW5hdG9yUnVsZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAodGVybWluYXRvclJ1bGVzW2ldKHN0YXRlLCBuZXh0TGluZSwgZW5kTGluZSwgdHJ1ZSkpIHtcbiAgICAgICAgdGVybWluYXRlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0ZXJtaW5hdGUpIHsgYnJlYWs7IH1cbiAgfVxuXG4gIHN0ciA9IHN0YXRlLmdldExpbmVzKHN0YXJ0TGluZSwgbmV4dExpbmUsIHN0YXRlLmJsa0luZGVudCwgZmFsc2UpLnRyaW0oKTtcbiAgbWF4ID0gc3RyLmxlbmd0aDtcblxuICBmb3IgKHBvcyA9IDE7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICBjaCA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gICAgaWYgKGNoID09PSAweDVCIC8qIFsgKi8pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGNoID09PSAweDVEIC8qIF0gKi8pIHtcbiAgICAgIGxhYmVsRW5kID0gcG9zO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHgwQSAvKiBcXG4gKi8pIHtcbiAgICAgIGxpbmVzKys7XG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHg1QyAvKiBcXCAqLykge1xuICAgICAgcG9zKys7XG4gICAgICBpZiAocG9zIDwgbWF4ICYmIHN0ci5jaGFyQ29kZUF0KHBvcykgPT09IDB4MEEpIHtcbiAgICAgICAgbGluZXMrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAobGFiZWxFbmQgPCAwIHx8IHN0ci5jaGFyQ29kZUF0KGxhYmVsRW5kICsgMSkgIT09IDB4M0EvKiA6ICovKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIFtsYWJlbF06ICAgZGVzdGluYXRpb24gICAndGl0bGUnXG4gIC8vICAgICAgICAgXl5eIHNraXAgb3B0aW9uYWwgd2hpdGVzcGFjZSBoZXJlXG4gIGZvciAocG9zID0gbGFiZWxFbmQgKyAyOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgY2ggPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuICAgIGlmIChjaCA9PT0gMHgwQSkge1xuICAgICAgbGluZXMrKztcbiAgICB9IGVsc2UgaWYgKGlzU3BhY2UoY2gpKSB7XG4gICAgICAvKmVzbGludCBuby1lbXB0eTowKi9cbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gW2xhYmVsXTogICBkZXN0aW5hdGlvbiAgICd0aXRsZSdcbiAgLy8gICAgICAgICAgICBeXl5eXl5eXl5eXiBwYXJzZSB0aGlzXG4gIHJlcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rRGVzdGluYXRpb24oc3RyLCBwb3MsIG1heCk7XG4gIGlmICghcmVzLm9rKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGhyZWYgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rKHJlcy5zdHIpO1xuICBpZiAoIXN0YXRlLm1kLnZhbGlkYXRlTGluayhocmVmKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBwb3MgPSByZXMucG9zO1xuICBsaW5lcyArPSByZXMubGluZXM7XG5cbiAgLy8gc2F2ZSBjdXJzb3Igc3RhdGUsIHdlIGNvdWxkIHJlcXVpcmUgdG8gcm9sbGJhY2sgbGF0ZXJcbiAgZGVzdEVuZFBvcyA9IHBvcztcbiAgZGVzdEVuZExpbmVObyA9IGxpbmVzO1xuXG4gIC8vIFtsYWJlbF06ICAgZGVzdGluYXRpb24gICAndGl0bGUnXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICBeXl4gc2tpcHBpbmcgdGhvc2Ugc3BhY2VzXG4gIHN0YXJ0ID0gcG9zO1xuICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgIGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoY2ggPT09IDB4MEEpIHtcbiAgICAgIGxpbmVzKys7XG4gICAgfSBlbHNlIGlmIChpc1NwYWNlKGNoKSkge1xuICAgICAgLyplc2xpbnQgbm8tZW1wdHk6MCovXG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFtsYWJlbF06ICAgZGVzdGluYXRpb24gICAndGl0bGUnXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eIHBhcnNlIHRoaXNcbiAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtUaXRsZShzdHIsIHBvcywgbWF4KTtcbiAgaWYgKHBvcyA8IG1heCAmJiBzdGFydCAhPT0gcG9zICYmIHJlcy5vaykge1xuICAgIHRpdGxlID0gcmVzLnN0cjtcbiAgICBwb3MgPSByZXMucG9zO1xuICAgIGxpbmVzICs9IHJlcy5saW5lcztcbiAgfSBlbHNlIHtcbiAgICB0aXRsZSA9ICcnO1xuICAgIHBvcyA9IGRlc3RFbmRQb3M7XG4gICAgbGluZXMgPSBkZXN0RW5kTGluZU5vO1xuICB9XG5cbiAgLy8gc2tpcCB0cmFpbGluZyBzcGFjZXMgdW50aWwgdGhlIHJlc3Qgb2YgdGhlIGxpbmVcbiAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgIGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoIWlzU3BhY2UoY2gpKSB7IGJyZWFrOyB9XG4gICAgcG9zKys7XG4gIH1cblxuICBpZiAocG9zIDwgbWF4ICYmIHN0ci5jaGFyQ29kZUF0KHBvcykgIT09IDB4MEEpIHtcbiAgICBpZiAodGl0bGUpIHtcbiAgICAgIC8vIGdhcmJhZ2UgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBhZnRlciB0aXRsZSxcbiAgICAgIC8vIGJ1dCBpdCBjb3VsZCBzdGlsbCBiZSBhIHZhbGlkIHJlZmVyZW5jZSBpZiB3ZSByb2xsIGJhY2tcbiAgICAgIHRpdGxlID0gJyc7XG4gICAgICBwb3MgPSBkZXN0RW5kUG9zO1xuICAgICAgbGluZXMgPSBkZXN0RW5kTGluZU5vO1xuICAgICAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgICAgICBjaCA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICAgIGlmICghaXNTcGFjZShjaCkpIHsgYnJlYWs7IH1cbiAgICAgICAgcG9zKys7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHBvcyA8IG1heCAmJiBzdHIuY2hhckNvZGVBdChwb3MpICE9PSAweDBBKSB7XG4gICAgLy8gZ2FyYmFnZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGFiZWwgPSBub3JtYWxpemVSZWZlcmVuY2Uoc3RyLnNsaWNlKDEsIGxhYmVsRW5kKSk7XG4gIGlmICghbGFiZWwpIHtcbiAgICAvLyBDb21tb25NYXJrIDAuMjAgZGlzYWxsb3dzIGVtcHR5IGxhYmVsc1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIFJlZmVyZW5jZSBjYW4gbm90IHRlcm1pbmF0ZSBhbnl0aGluZy4gVGhpcyBjaGVjayBpcyBmb3Igc2FmZXR5IG9ubHkuXG4gIC8qaXN0YW5idWwgaWdub3JlIGlmKi9cbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gdHJ1ZTsgfVxuXG4gIGlmICh0eXBlb2Ygc3RhdGUuZW52LnJlZmVyZW5jZXMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgc3RhdGUuZW52LnJlZmVyZW5jZXMgPSB7fTtcbiAgfVxuICBpZiAodHlwZW9mIHN0YXRlLmVudi5yZWZlcmVuY2VzW2xhYmVsXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBzdGF0ZS5lbnYucmVmZXJlbmNlc1tsYWJlbF0gPSB7IHRpdGxlOiB0aXRsZSwgaHJlZjogaHJlZiB9O1xuICB9XG5cbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGU7XG5cbiAgc3RhdGUubGluZSA9IHN0YXJ0TGluZSArIGxpbmVzICsgMTtcbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBcUJBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/reference.js\n");
|
1987 |
|
1988 | }),
|
1989 |
|
1990 | "../../../node_modules/markdown-it/lib/rules_block/state_block.js":
|
1991 |
|
1992 |
|
1993 |
|
1994 |
|
1995 | (function(module, exports, __webpack_require__) {
|
1996 |
|
1997 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Parser state class\n 'use strict';\n\n var Token = __webpack_require__(/*! ../token */ \"../../../node_modules/markdown-it/lib/token.js\");\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n function StateBlock(src, md, env, tokens) {\n var ch, s, start, pos, len, indent, offset, indent_found;\n this.src = src; // link to parser instance\n\n this.md = md;\n this.env = env; //\n // Internal state vartiables\n //\n\n this.tokens = tokens;\n this.bMarks = []; // line begin offsets for fast jumps\n\n this.eMarks = []; // line end offsets for fast jumps\n\n this.tShift = []; // offsets of the first non-space characters (tabs not expanded)\n\n this.sCount = []; // indents for each line (tabs expanded)\n // An amount of virtual spaces (tabs expanded) between beginning\n // of each line (bMarks) and real beginning of that line.\n //\n // It exists only as a hack because blockquotes override bMarks\n // losing information in the process.\n //\n // It's used only when expanding tabs, you can think about it as\n // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n // means first tab should be expanded to 4-21%4 === 3 spaces.\n //\n\n this.bsCount = []; // block parser variables\n\n this.blkIndent = 0; // required block content indent (for example, if we are\n // inside a list, it would be positioned after list marker)\n\n this.line = 0; // line index in src\n\n this.lineMax = 0; // lines count\n\n this.tight = false; // loose/tight mode for lists\n\n this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any)\n\n this.listIndent = -1; // indent of the current list block (-1 if there isn't any)\n // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n // used in lists to determine if they interrupt a paragraph\n\n this.parentType = 'root';\n this.level = 0; // renderer\n\n this.result = ''; // Create caches\n // Generate markers.\n\n s = this.src;\n indent_found = false;\n\n for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {\n ch = s.charCodeAt(pos);\n\n if (!indent_found) {\n if (isSpace(ch)) {\n indent++;\n\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n\n continue;\n } else {\n indent_found = true;\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) {\n pos++;\n }\n\n this.bMarks.push(start);\n this.eMarks.push(pos);\n this.tShift.push(indent);\n this.sCount.push(offset);\n this.bsCount.push(0);\n indent_found = false;\n indent = 0;\n offset = 0;\n start = pos + 1;\n }\n } // Push fake entry to simplify cache bounds checks\n\n\n this.bMarks.push(s.length);\n this.eMarks.push(s.length);\n this.tShift.push(0);\n this.sCount.push(0);\n this.bsCount.push(0);\n this.lineMax = this.bMarks.length - 1; // don't count last fake line\n } // Push new token to \"stream\".\n //\n\n\n StateBlock.prototype.push = function (type, tag, nesting) {\n var token = new Token(type, tag, nesting);\n token.block = true;\n if (nesting < 0) this.level--; // closing tag\n\n token.level = this.level;\n if (nesting > 0) this.level++; // opening tag\n\n this.tokens.push(token);\n return token;\n };\n\n StateBlock.prototype.isEmpty = function isEmpty(line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n };\n\n StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n for (var max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break;\n }\n }\n\n return from;\n }; // Skip spaces from given position.\n\n\n StateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n var ch;\n\n for (var max = this.src.length; pos < max; pos++) {\n ch = this.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n }\n\n return pos;\n }; // Skip spaces from given position in reverse.\n\n\n StateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {\n if (pos <= min) {\n return pos;\n }\n\n while (pos > min) {\n if (!isSpace(this.src.charCodeAt(--pos))) {\n return pos + 1;\n }\n }\n\n return pos;\n }; // Skip char codes from given position\n\n\n StateBlock.prototype.skipChars = function skipChars(pos, code) {\n for (var max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) {\n break;\n }\n }\n\n return pos;\n }; // Skip char codes reverse from given position - 1\n\n\n StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n if (pos <= min) {\n return pos;\n }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) {\n return pos + 1;\n }\n }\n\n return pos;\n }; // cut lines range from source.\n\n\n StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n var i,\n lineIndent,\n ch,\n first,\n last,\n queue,\n lineStart,\n line = begin;\n\n if (begin >= end) {\n return '';\n }\n\n queue = new Array(end - begin);\n\n for (i = 0; line < end; line++, i++) {\n lineIndent = 0;\n lineStart = first = this.bMarks[line];\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1;\n } else {\n last = this.eMarks[line];\n }\n\n while (first < last && lineIndent < indent) {\n ch = this.src.charCodeAt(first);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;\n } else {\n lineIndent++;\n }\n } else if (first - lineStart < this.tShift[line]) {\n // patched tShift masked characters to look like spaces (blockquotes, list markers)\n lineIndent++;\n } else {\n break;\n }\n\n first++;\n }\n\n if (lineIndent > indent) {\n // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n // with indent=2 becomes ' \\tfoobar'\n queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last);\n } else {\n queue[i] = this.src.slice(first, last);\n }\n }\n\n return queue.join('');\n }; // re-export Token class to use in block rules\n\n\n StateBlock.prototype.Token = Token;\n module.exports = StateBlock;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9zdGF0ZV9ibG9jay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svc3RhdGVfYmxvY2suanM/MzRmNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQYXJzZXIgc3RhdGUgY2xhc3NcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgVG9rZW4gPSByZXF1aXJlKCcuLi90b2tlbicpO1xudmFyIGlzU3BhY2UgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1NwYWNlO1xuXG5cbmZ1bmN0aW9uIFN0YXRlQmxvY2soc3JjLCBtZCwgZW52LCB0b2tlbnMpIHtcbiAgdmFyIGNoLCBzLCBzdGFydCwgcG9zLCBsZW4sIGluZGVudCwgb2Zmc2V0LCBpbmRlbnRfZm91bmQ7XG5cbiAgdGhpcy5zcmMgPSBzcmM7XG5cbiAgLy8gbGluayB0byBwYXJzZXIgaW5zdGFuY2VcbiAgdGhpcy5tZCAgICAgPSBtZDtcblxuICB0aGlzLmVudiA9IGVudjtcblxuICAvL1xuICAvLyBJbnRlcm5hbCBzdGF0ZSB2YXJ0aWFibGVzXG4gIC8vXG5cbiAgdGhpcy50b2tlbnMgPSB0b2tlbnM7XG5cbiAgdGhpcy5iTWFya3MgPSBbXTsgIC8vIGxpbmUgYmVnaW4gb2Zmc2V0cyBmb3IgZmFzdCBqdW1wc1xuICB0aGlzLmVNYXJrcyA9IFtdOyAgLy8gbGluZSBlbmQgb2Zmc2V0cyBmb3IgZmFzdCBqdW1wc1xuICB0aGlzLnRTaGlmdCA9IFtdOyAgLy8gb2Zmc2V0cyBvZiB0aGUgZmlyc3Qgbm9uLXNwYWNlIGNoYXJhY3RlcnMgKHRhYnMgbm90IGV4cGFuZGVkKVxuICB0aGlzLnNDb3VudCA9IFtdOyAgLy8gaW5kZW50cyBmb3IgZWFjaCBsaW5lICh0YWJzIGV4cGFuZGVkKVxuXG4gIC8vIEFuIGFtb3VudCBvZiB2aXJ0dWFsIHNwYWNlcyAodGFicyBleHBhbmRlZCkgYmV0d2VlbiBiZWdpbm5pbmdcbiAgLy8gb2YgZWFjaCBsaW5lIChiTWFya3MpIGFuZCByZWFsIGJlZ2lubmluZyBvZiB0aGF0IGxpbmUuXG4gIC8vXG4gIC8vIEl0IGV4aXN0cyBvbmx5IGFzIGEgaGFjayBiZWNhdXNlIGJsb2NrcXVvdGVzIG92ZXJyaWRlIGJNYXJrc1xuICAvLyBsb3NpbmcgaW5mb3JtYXRpb24gaW4gdGhlIHByb2Nlc3MuXG4gIC8vXG4gIC8vIEl0J3MgdXNlZCBvbmx5IHdoZW4gZXhwYW5kaW5nIHRhYnMsIHlvdSBjYW4gdGhpbmsgYWJvdXQgaXQgYXNcbiAgLy8gYW4gaW5pdGlhbCB0YWIgbGVuZ3RoLCBlLmcuIGJzQ291bnQ9MjEgYXBwbGllZCB0byBzdHJpbmcgYFxcdDEyM2BcbiAgLy8gbWVhbnMgZmlyc3QgdGFiIHNob3VsZCBiZSBleHBhbmRlZCB0byA0LTIxJTQgPT09IDMgc3BhY2VzLlxuICAvL1xuICB0aGlzLmJzQ291bnQgPSBbXTtcblxuICAvLyBibG9jayBwYXJzZXIgdmFyaWFibGVzXG4gIHRoaXMuYmxrSW5kZW50ICA9IDA7IC8vIHJlcXVpcmVkIGJsb2NrIGNvbnRlbnQgaW5kZW50IChmb3IgZXhhbXBsZSwgaWYgd2UgYXJlXG4gICAgICAgICAgICAgICAgICAgICAgIC8vIGluc2lkZSBhIGxpc3QsIGl0IHdvdWxkIGJlIHBvc2l0aW9uZWQgYWZ0ZXIgbGlzdCBtYXJrZXIpXG4gIHRoaXMubGluZSAgICAgICA9IDA7IC8vIGxpbmUgaW5kZXggaW4gc3JjXG4gIHRoaXMubGluZU1heCAgICA9IDA7IC8vIGxpbmVzIGNvdW50XG4gIHRoaXMudGlnaHQgICAgICA9IGZhbHNlOyAgLy8gbG9vc2UvdGlnaHQgbW9kZSBmb3IgbGlzdHNcbiAgdGhpcy5kZEluZGVudCAgID0gLTE7IC8vIGluZGVudCBvZiB0aGUgY3VycmVudCBkZCBibG9jayAoLTEgaWYgdGhlcmUgaXNuJ3QgYW55KVxuICB0aGlzLmxpc3RJbmRlbnQgPSAtMTsgLy8gaW5kZW50IG9mIHRoZSBjdXJyZW50IGxpc3QgYmxvY2sgKC0xIGlmIHRoZXJlIGlzbid0IGFueSlcblxuICAvLyBjYW4gYmUgJ2Jsb2NrcXVvdGUnLCAnbGlzdCcsICdyb290JywgJ3BhcmFncmFwaCcgb3IgJ3JlZmVyZW5jZSdcbiAgLy8gdXNlZCBpbiBsaXN0cyB0byBkZXRlcm1pbmUgaWYgdGhleSBpbnRlcnJ1cHQgYSBwYXJhZ3JhcGhcbiAgdGhpcy5wYXJlbnRUeXBlID0gJ3Jvb3QnO1xuXG4gIHRoaXMubGV2ZWwgPSAwO1xuXG4gIC8vIHJlbmRlcmVyXG4gIHRoaXMucmVzdWx0ID0gJyc7XG5cbiAgLy8gQ3JlYXRlIGNhY2hlc1xuICAvLyBHZW5lcmF0ZSBtYXJrZXJzLlxuICBzID0gdGhpcy5zcmM7XG4gIGluZGVudF9mb3VuZCA9IGZhbHNlO1xuXG4gIGZvciAoc3RhcnQgPSBwb3MgPSBpbmRlbnQgPSBvZmZzZXQgPSAwLCBsZW4gPSBzLmxlbmd0aDsgcG9zIDwgbGVuOyBwb3MrKykge1xuICAgIGNoID0gcy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICBpZiAoIWluZGVudF9mb3VuZCkge1xuICAgICAgaWYgKGlzU3BhY2UoY2gpKSB7XG4gICAgICAgIGluZGVudCsrO1xuXG4gICAgICAgIGlmIChjaCA9PT0gMHgwOSkge1xuICAgICAgICAgIG9mZnNldCArPSA0IC0gb2Zmc2V0ICUgNDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmZzZXQrKztcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGVudF9mb3VuZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoID09PSAweDBBIHx8IHBvcyA9PT0gbGVuIC0gMSkge1xuICAgICAgaWYgKGNoICE9PSAweDBBKSB7IHBvcysrOyB9XG4gICAgICB0aGlzLmJNYXJrcy5wdXNoKHN0YXJ0KTtcbiAgICAgIHRoaXMuZU1hcmtzLnB1c2gocG9zKTtcbiAgICAgIHRoaXMudFNoaWZ0LnB1c2goaW5kZW50KTtcbiAgICAgIHRoaXMuc0NvdW50LnB1c2gob2Zmc2V0KTtcbiAgICAgIHRoaXMuYnNDb3VudC5wdXNoKDApO1xuXG4gICAgICBpbmRlbnRfZm91bmQgPSBmYWxzZTtcbiAgICAgIGluZGVudCA9IDA7XG4gICAgICBvZmZzZXQgPSAwO1xuICAgICAgc3RhcnQgPSBwb3MgKyAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIFB1c2ggZmFrZSBlbnRyeSB0byBzaW1wbGlmeSBjYWNoZSBib3VuZHMgY2hlY2tzXG4gIHRoaXMuYk1hcmtzLnB1c2gocy5sZW5ndGgpO1xuICB0aGlzLmVNYXJrcy5wdXNoKHMubGVuZ3RoKTtcbiAgdGhpcy50U2hpZnQucHVzaCgwKTtcbiAgdGhpcy5zQ291bnQucHVzaCgwKTtcbiAgdGhpcy5ic0NvdW50LnB1c2goMCk7XG5cbiAgdGhpcy5saW5lTWF4ID0gdGhpcy5iTWFya3MubGVuZ3RoIC0gMTsgLy8gZG9uJ3QgY291bnQgbGFzdCBmYWtlIGxpbmVcbn1cblxuLy8gUHVzaCBuZXcgdG9rZW4gdG8gXCJzdHJlYW1cIi5cbi8vXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKHR5cGUsIHRhZywgbmVzdGluZykge1xuICB2YXIgdG9rZW4gPSBuZXcgVG9rZW4odHlwZSwgdGFnLCBuZXN0aW5nKTtcbiAgdG9rZW4uYmxvY2sgPSB0cnVlO1xuXG4gIGlmIChuZXN0aW5nIDwgMCkgdGhpcy5sZXZlbC0tOyAvLyBjbG9zaW5nIHRhZ1xuICB0b2tlbi5sZXZlbCA9IHRoaXMubGV2ZWw7XG4gIGlmIChuZXN0aW5nID4gMCkgdGhpcy5sZXZlbCsrOyAvLyBvcGVuaW5nIHRhZ1xuXG4gIHRoaXMudG9rZW5zLnB1c2godG9rZW4pO1xuICByZXR1cm4gdG9rZW47XG59O1xuXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gaXNFbXB0eShsaW5lKSB7XG4gIHJldHVybiB0aGlzLmJNYXJrc1tsaW5lXSArIHRoaXMudFNoaWZ0W2xpbmVdID49IHRoaXMuZU1hcmtzW2xpbmVdO1xufTtcblxuU3RhdGVCbG9jay5wcm90b3R5cGUuc2tpcEVtcHR5TGluZXMgPSBmdW5jdGlvbiBza2lwRW1wdHlMaW5lcyhmcm9tKSB7XG4gIGZvciAodmFyIG1heCA9IHRoaXMubGluZU1heDsgZnJvbSA8IG1heDsgZnJvbSsrKSB7XG4gICAgaWYgKHRoaXMuYk1hcmtzW2Zyb21dICsgdGhpcy50U2hpZnRbZnJvbV0gPCB0aGlzLmVNYXJrc1tmcm9tXSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmcm9tO1xufTtcblxuLy8gU2tpcCBzcGFjZXMgZnJvbSBnaXZlbiBwb3NpdGlvbi5cblN0YXRlQmxvY2sucHJvdG90eXBlLnNraXBTcGFjZXMgPSBmdW5jdGlvbiBza2lwU3BhY2VzKHBvcykge1xuICB2YXIgY2g7XG5cbiAgZm9yICh2YXIgbWF4ID0gdGhpcy5zcmMubGVuZ3RoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgY2ggPSB0aGlzLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgaWYgKCFpc1NwYWNlKGNoKSkgeyBicmVhazsgfVxuICB9XG4gIHJldHVybiBwb3M7XG59O1xuXG4vLyBTa2lwIHNwYWNlcyBmcm9tIGdpdmVuIHBvc2l0aW9uIGluIHJldmVyc2UuXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5za2lwU3BhY2VzQmFjayA9IGZ1bmN0aW9uIHNraXBTcGFjZXNCYWNrKHBvcywgbWluKSB7XG4gIGlmIChwb3MgPD0gbWluKSB7IHJldHVybiBwb3M7IH1cblxuICB3aGlsZSAocG9zID4gbWluKSB7XG4gICAgaWYgKCFpc1NwYWNlKHRoaXMuc3JjLmNoYXJDb2RlQXQoLS1wb3MpKSkgeyByZXR1cm4gcG9zICsgMTsgfVxuICB9XG4gIHJldHVybiBwb3M7XG59O1xuXG4vLyBTa2lwIGNoYXIgY29kZXMgZnJvbSBnaXZlbiBwb3NpdGlvblxuU3RhdGVCbG9jay5wcm90b3R5cGUuc2tpcENoYXJzID0gZnVuY3Rpb24gc2tpcENoYXJzKHBvcywgY29kZSkge1xuICBmb3IgKHZhciBtYXggPSB0aGlzLnNyYy5sZW5ndGg7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICBpZiAodGhpcy5zcmMuY2hhckNvZGVBdChwb3MpICE9PSBjb2RlKSB7IGJyZWFrOyB9XG4gIH1cbiAgcmV0dXJuIHBvcztcbn07XG5cbi8vIFNraXAgY2hhciBjb2RlcyByZXZlcnNlIGZyb20gZ2l2ZW4gcG9zaXRpb24gLSAxXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5za2lwQ2hhcnNCYWNrID0gZnVuY3Rpb24gc2tpcENoYXJzQmFjayhwb3MsIGNvZGUsIG1pbikge1xuICBpZiAocG9zIDw9IG1pbikgeyByZXR1cm4gcG9zOyB9XG5cbiAgd2hpbGUgKHBvcyA+IG1pbikge1xuICAgIGlmIChjb2RlICE9PSB0aGlzLnNyYy5jaGFyQ29kZUF0KC0tcG9zKSkgeyByZXR1cm4gcG9zICsgMTsgfVxuICB9XG4gIHJldHVybiBwb3M7XG59O1xuXG4vLyBjdXQgbGluZXMgcmFuZ2UgZnJvbSBzb3VyY2UuXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5nZXRMaW5lcyA9IGZ1bmN0aW9uIGdldExpbmVzKGJlZ2luLCBlbmQsIGluZGVudCwga2VlcExhc3RMRikge1xuICB2YXIgaSwgbGluZUluZGVudCwgY2gsIGZpcnN0LCBsYXN0LCBxdWV1ZSwgbGluZVN0YXJ0LFxuICAgICAgbGluZSA9IGJlZ2luO1xuXG4gIGlmIChiZWdpbiA+PSBlbmQpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBxdWV1ZSA9IG5ldyBBcnJheShlbmQgLSBiZWdpbik7XG5cbiAgZm9yIChpID0gMDsgbGluZSA8IGVuZDsgbGluZSsrLCBpKyspIHtcbiAgICBsaW5lSW5kZW50ID0gMDtcbiAgICBsaW5lU3RhcnQgPSBmaXJzdCA9IHRoaXMuYk1hcmtzW2xpbmVdO1xuXG4gICAgaWYgKGxpbmUgKyAxIDwgZW5kIHx8IGtlZXBMYXN0TEYpIHtcbiAgICAgIC8vIE5vIG5lZWQgZm9yIGJvdW5kcyBjaGVjayBiZWNhdXNlIHdlIGhhdmUgZmFrZSBlbnRyeSBvbiB0YWlsLlxuICAgICAgbGFzdCA9IHRoaXMuZU1hcmtzW2xpbmVdICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFzdCA9IHRoaXMuZU1hcmtzW2xpbmVdO1xuICAgIH1cblxuICAgIHdoaWxlIChmaXJzdCA8IGxhc3QgJiYgbGluZUluZGVudCA8IGluZGVudCkge1xuICAgICAgY2ggPSB0aGlzLnNyYy5jaGFyQ29kZUF0KGZpcnN0KTtcblxuICAgICAgaWYgKGlzU3BhY2UoY2gpKSB7XG4gICAgICAgIGlmIChjaCA9PT0gMHgwOSkge1xuICAgICAgICAgIGxpbmVJbmRlbnQgKz0gNCAtIChsaW5lSW5kZW50ICsgdGhpcy5ic0NvdW50W2xpbmVdKSAlIDQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZUluZGVudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGZpcnN0IC0gbGluZVN0YXJ0IDwgdGhpcy50U2hpZnRbbGluZV0pIHtcbiAgICAgICAgLy8gcGF0Y2hlZCB0U2hpZnQgbWFza2VkIGNoYXJhY3RlcnMgdG8gbG9vayBsaWtlIHNwYWNlcyAoYmxvY2txdW90ZXMsIGxpc3QgbWFya2VycylcbiAgICAgICAgbGluZUluZGVudCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGZpcnN0Kys7XG4gICAgfVxuXG4gICAgaWYgKGxpbmVJbmRlbnQgPiBpbmRlbnQpIHtcbiAgICAgIC8vIHBhcnRpYWxseSBleHBhbmRpbmcgdGFicyBpbiBjb2RlIGJsb2NrcywgZS5nICdcXHRcXHRmb29iYXInXG4gICAgICAvLyB3aXRoIGluZGVudD0yIGJlY29tZXMgJyAgXFx0Zm9vYmFyJ1xuICAgICAgcXVldWVbaV0gPSBuZXcgQXJyYXkobGluZUluZGVudCAtIGluZGVudCArIDEpLmpvaW4oJyAnKSArIHRoaXMuc3JjLnNsaWNlKGZpcnN0LCBsYXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcXVldWVbaV0gPSB0aGlzLnNyYy5zbGljZShmaXJzdCwgbGFzdCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1ZXVlLmpvaW4oJycpO1xufTtcblxuLy8gcmUtZXhwb3J0IFRva2VuIGNsYXNzIHRvIHVzZSBpbiBibG9jayBydWxlc1xuU3RhdGVCbG9jay5wcm90b3R5cGUuVG9rZW4gPSBUb2tlbjtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0YXRlQmxvY2s7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/state_block.js\n");
|
1998 |
|
1999 | }),
|
2000 |
|
2001 | "../../../node_modules/markdown-it/lib/rules_block/table.js":
|
2002 |
|
2003 |
|
2004 |
|
2005 |
|
2006 | (function(module, exports, __webpack_require__) {
|
2007 |
|
2008 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // GFM table, https://github.github.com/gfm/#tables-extension-\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n function getLine(state, line) {\n var pos = state.bMarks[line] + state.tShift[line],\n max = state.eMarks[line];\n return state.src.substr(pos, max - pos);\n }\n\n function escapedSplit(str) {\n var result = [],\n pos = 0,\n max = str.length,\n ch,\n isEscaped = false,\n lastPos = 0,\n current = '';\n ch = str.charCodeAt(pos);\n\n while (pos < max) {\n if (ch === 0x7c\n /* | */\n ) {\n if (!isEscaped) {\n // pipe separating cells, '|'\n result.push(current + str.substring(lastPos, pos));\n current = '';\n lastPos = pos + 1;\n } else {\n // escaped pipe, '\\|'\n current += str.substring(lastPos, pos - 1);\n lastPos = pos;\n }\n }\n\n isEscaped = ch === 0x5c\n /* \\ */\n ;\n pos++;\n ch = str.charCodeAt(pos);\n }\n\n result.push(current + str.substring(lastPos));\n return result;\n }\n\n module.exports = function table(state, startLine, endLine, silent) {\n var ch, lineText, pos, i, l, nextLine, columns, columnCount, token, aligns, t, tableLines, tbodyLines, oldParentType, terminate, terminatorRules, firstCh, secondCh; // should have at least two lines\n\n if (startLine + 2 > endLine) {\n return false;\n }\n\n nextLine = startLine + 1;\n\n if (state.sCount[nextLine] < state.blkIndent) {\n return false;\n } // if it's indented more than 3 spaces, it should be a code block\n\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n return false;\n } // first character of the second line should be '|', '-', ':',\n // and no other characters are allowed but spaces;\n // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n\n if (pos >= state.eMarks[nextLine]) {\n return false;\n }\n\n firstCh = state.src.charCodeAt(pos++);\n\n if (firstCh !== 0x7C\n /* | */\n && firstCh !== 0x2D\n /* - */\n && firstCh !== 0x3A\n /* : */\n ) {\n return false;\n }\n\n if (pos >= state.eMarks[nextLine]) {\n return false;\n }\n\n secondCh = state.src.charCodeAt(pos++);\n\n if (secondCh !== 0x7C\n /* | */\n && secondCh !== 0x2D\n /* - */\n && secondCh !== 0x3A\n /* : */\n && !isSpace(secondCh)) {\n return false;\n } // if first character is '-', then second character must not be a space\n // (due to parsing ambiguity with list)\n\n\n if (firstCh === 0x2D\n /* - */\n && isSpace(secondCh)) {\n return false;\n }\n\n while (pos < state.eMarks[nextLine]) {\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x7C\n /* | */\n && ch !== 0x2D\n /* - */\n && ch !== 0x3A\n /* : */\n && !isSpace(ch)) {\n return false;\n }\n\n pos++;\n }\n\n lineText = getLine(state, startLine + 1);\n columns = lineText.split('|');\n aligns = [];\n\n for (i = 0; i < columns.length; i++) {\n t = columns[i].trim();\n\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === columns.length - 1) {\n continue;\n } else {\n return false;\n }\n }\n\n if (!/^:?-+:?$/.test(t)) {\n return false;\n }\n\n if (t.charCodeAt(t.length - 1) === 0x3A\n /* : */\n ) {\n aligns.push(t.charCodeAt(0) === 0x3A\n /* : */\n ? 'center' : 'right');\n } else if (t.charCodeAt(0) === 0x3A\n /* : */\n ) {\n aligns.push('left');\n } else {\n aligns.push('');\n }\n }\n\n lineText = getLine(state, startLine).trim();\n\n if (lineText.indexOf('|') === -1) {\n return false;\n }\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n columns = escapedSplit(lineText);\n if (columns.length && columns[0] === '') columns.shift();\n if (columns.length && columns[columns.length - 1] === '') columns.pop(); // header row will define an amount of columns in the entire table,\n // and align row should be exactly the same (the rest of the rows can differ)\n\n columnCount = columns.length;\n\n if (columnCount === 0 || columnCount !== aligns.length) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n oldParentType = state.parentType;\n state.parentType = 'table'; // use 'blockquote' lists for termination because it's\n // the most similar to tables\n\n terminatorRules = state.md.block.ruler.getRules('blockquote');\n token = state.push('table_open', 'table', 1);\n token.map = tableLines = [startLine, 0];\n token = state.push('thead_open', 'thead', 1);\n token.map = [startLine, startLine + 1];\n token = state.push('tr_open', 'tr', 1);\n token.map = [startLine, startLine + 1];\n\n for (i = 0; i < columns.length; i++) {\n token = state.push('th_open', 'th', 1);\n\n if (aligns[i]) {\n token.attrs = [['style', 'text-align:' + aligns[i]]];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i].trim();\n token.children = [];\n token = state.push('th_close', 'th', -1);\n }\n\n token = state.push('tr_close', 'tr', -1);\n token = state.push('thead_close', 'thead', -1);\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n }\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n\n lineText = getLine(state, nextLine).trim();\n\n if (!lineText) {\n break;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n break;\n }\n\n columns = escapedSplit(lineText);\n if (columns.length && columns[0] === '') columns.shift();\n if (columns.length && columns[columns.length - 1] === '') columns.pop();\n\n if (nextLine === startLine + 2) {\n token = state.push('tbody_open', 'tbody', 1);\n token.map = tbodyLines = [startLine + 2, 0];\n }\n\n token = state.push('tr_open', 'tr', 1);\n token.map = [nextLine, nextLine + 1];\n\n for (i = 0; i < columnCount; i++) {\n token = state.push('td_open', 'td', 1);\n\n if (aligns[i]) {\n token.attrs = [['style', 'text-align:' + aligns[i]]];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i] ? columns[i].trim() : '';\n token.children = [];\n token = state.push('td_close', 'td', -1);\n }\n\n token = state.push('tr_close', 'tr', -1);\n }\n\n if (tbodyLines) {\n token = state.push('tbody_close', 'tbody', -1);\n tbodyLines[1] = nextLine;\n }\n\n token = state.push('table_close', 'table', -1);\n tableLines[1] = nextLine;\n state.parentType = oldParentType;\n state.line = nextLine;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay90YWJsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svdGFibGUuanM/ZTVjZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRk0gdGFibGUsIGh0dHBzOi8vZ2l0aHViLmdpdGh1Yi5jb20vZ2ZtLyN0YWJsZXMtZXh0ZW5zaW9uLVxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc1NwYWNlID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNTcGFjZTtcblxuXG5mdW5jdGlvbiBnZXRMaW5lKHN0YXRlLCBsaW5lKSB7XG4gIHZhciBwb3MgPSBzdGF0ZS5iTWFya3NbbGluZV0gKyBzdGF0ZS50U2hpZnRbbGluZV0sXG4gICAgICBtYXggPSBzdGF0ZS5lTWFya3NbbGluZV07XG5cbiAgcmV0dXJuIHN0YXRlLnNyYy5zdWJzdHIocG9zLCBtYXggLSBwb3MpO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVkU3BsaXQoc3RyKSB7XG4gIHZhciByZXN1bHQgPSBbXSxcbiAgICAgIHBvcyA9IDAsXG4gICAgICBtYXggPSBzdHIubGVuZ3RoLFxuICAgICAgY2gsXG4gICAgICBpc0VzY2FwZWQgPSBmYWxzZSxcbiAgICAgIGxhc3RQb3MgPSAwLFxuICAgICAgY3VycmVudCA9ICcnO1xuXG4gIGNoICA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgIGlmIChjaCA9PT0gMHg3Yy8qIHwgKi8pIHtcbiAgICAgIGlmICghaXNFc2NhcGVkKSB7XG4gICAgICAgIC8vIHBpcGUgc2VwYXJhdGluZyBjZWxscywgJ3wnXG4gICAgICAgIHJlc3VsdC5wdXNoKGN1cnJlbnQgKyBzdHIuc3Vic3RyaW5nKGxhc3RQb3MsIHBvcykpO1xuICAgICAgICBjdXJyZW50ID0gJyc7XG4gICAgICAgIGxhc3RQb3MgPSBwb3MgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXNjYXBlZCBwaXBlLCAnXFx8J1xuICAgICAgICBjdXJyZW50ICs9IHN0ci5zdWJzdHJpbmcobGFzdFBvcywgcG9zIC0gMSk7XG4gICAgICAgIGxhc3RQb3MgPSBwb3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaXNFc2NhcGVkID0gKGNoID09PSAweDVjLyogXFwgKi8pO1xuICAgIHBvcysrO1xuXG4gICAgY2ggPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuICB9XG5cbiAgcmVzdWx0LnB1c2goY3VycmVudCArIHN0ci5zdWJzdHJpbmcobGFzdFBvcykpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0YWJsZShzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpIHtcbiAgdmFyIGNoLCBsaW5lVGV4dCwgcG9zLCBpLCBsLCBuZXh0TGluZSwgY29sdW1ucywgY29sdW1uQ291bnQsIHRva2VuLFxuICAgICAgYWxpZ25zLCB0LCB0YWJsZUxpbmVzLCB0Ym9keUxpbmVzLCBvbGRQYXJlbnRUeXBlLCB0ZXJtaW5hdGUsXG4gICAgICB0ZXJtaW5hdG9yUnVsZXMsIGZpcnN0Q2gsIHNlY29uZENoO1xuXG4gIC8vIHNob3VsZCBoYXZlIGF0IGxlYXN0IHR3byBsaW5lc1xuICBpZiAoc3RhcnRMaW5lICsgMiA+IGVuZExpbmUpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxO1xuXG4gIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzZWNvbmQgbGluZSBzaG91bGQgYmUgJ3wnLCAnLScsICc6JyxcbiAgLy8gYW5kIG5vIG90aGVyIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgYnV0IHNwYWNlcztcbiAgLy8gYmFzaWNhbGx5LCB0aGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIC9eWy06fF1bLTp8XFxzXSokLyByZWdleHBcblxuICBwb3MgPSBzdGF0ZS5iTWFya3NbbmV4dExpbmVdICsgc3RhdGUudFNoaWZ0W25leHRMaW5lXTtcbiAgaWYgKHBvcyA+PSBzdGF0ZS5lTWFya3NbbmV4dExpbmVdKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGZpcnN0Q2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MrKyk7XG4gIGlmIChmaXJzdENoICE9PSAweDdDLyogfCAqLyAmJiBmaXJzdENoICE9PSAweDJELyogLSAqLyAmJiBmaXJzdENoICE9PSAweDNBLyogOiAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAocG9zID49IHN0YXRlLmVNYXJrc1tuZXh0TGluZV0pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgc2Vjb25kQ2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MrKyk7XG4gIGlmIChzZWNvbmRDaCAhPT0gMHg3Qy8qIHwgKi8gJiYgc2Vjb25kQ2ggIT09IDB4MkQvKiAtICovICYmIHNlY29uZENoICE9PSAweDNBLyogOiAqLyAmJiAhaXNTcGFjZShzZWNvbmRDaCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBpZiBmaXJzdCBjaGFyYWN0ZXIgaXMgJy0nLCB0aGVuIHNlY29uZCBjaGFyYWN0ZXIgbXVzdCBub3QgYmUgYSBzcGFjZVxuICAvLyAoZHVlIHRvIHBhcnNpbmcgYW1iaWd1aXR5IHdpdGggbGlzdClcbiAgaWYgKGZpcnN0Q2ggPT09IDB4MkQvKiAtICovICYmIGlzU3BhY2Uoc2Vjb25kQ2gpKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIHdoaWxlIChwb3MgPCBzdGF0ZS5lTWFya3NbbmV4dExpbmVdKSB7XG4gICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuXG4gICAgaWYgKGNoICE9PSAweDdDLyogfCAqLyAmJiBjaCAhPT0gMHgyRC8qIC0gKi8gJiYgY2ggIT09IDB4M0EvKiA6ICovICYmICFpc1NwYWNlKGNoKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgIHBvcysrO1xuICB9XG5cbiAgbGluZVRleHQgPSBnZXRMaW5lKHN0YXRlLCBzdGFydExpbmUgKyAxKTtcblxuICBjb2x1bW5zID0gbGluZVRleHQuc3BsaXQoJ3wnKTtcbiAgYWxpZ25zID0gW107XG4gIGZvciAoaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgdCA9IGNvbHVtbnNbaV0udHJpbSgpO1xuICAgIGlmICghdCkge1xuICAgICAgLy8gYWxsb3cgZW1wdHkgY29sdW1ucyBiZWZvcmUgYW5kIGFmdGVyIHRhYmxlLCBidXQgbm90IGluIGJldHdlZW4gY29sdW1ucztcbiAgICAgIC8vIGUuZy4gYWxsb3cgYCB8LS0tfCBgLCBkaXNhbGxvdyBgIC0tLXx8LS0tIGBcbiAgICAgIGlmIChpID09PSAwIHx8IGkgPT09IGNvbHVtbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIS9eOj8tKzo/JC8udGVzdCh0KSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAodC5jaGFyQ29kZUF0KHQubGVuZ3RoIC0gMSkgPT09IDB4M0EvKiA6ICovKSB7XG4gICAgICBhbGlnbnMucHVzaCh0LmNoYXJDb2RlQXQoMCkgPT09IDB4M0EvKiA6ICovID8gJ2NlbnRlcicgOiAncmlnaHQnKTtcbiAgICB9IGVsc2UgaWYgKHQuY2hhckNvZGVBdCgwKSA9PT0gMHgzQS8qIDogKi8pIHtcbiAgICAgIGFsaWducy5wdXNoKCdsZWZ0Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFsaWducy5wdXNoKCcnKTtcbiAgICB9XG4gIH1cblxuICBsaW5lVGV4dCA9IGdldExpbmUoc3RhdGUsIHN0YXJ0TGluZSkudHJpbSgpO1xuICBpZiAobGluZVRleHQuaW5kZXhPZignfCcpID09PSAtMSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGNvbHVtbnMgPSBlc2NhcGVkU3BsaXQobGluZVRleHQpO1xuICBpZiAoY29sdW1ucy5sZW5ndGggJiYgY29sdW1uc1swXSA9PT0gJycpIGNvbHVtbnMuc2hpZnQoKTtcbiAgaWYgKGNvbHVtbnMubGVuZ3RoICYmIGNvbHVtbnNbY29sdW1ucy5sZW5ndGggLSAxXSA9PT0gJycpIGNvbHVtbnMucG9wKCk7XG5cbiAgLy8gaGVhZGVyIHJvdyB3aWxsIGRlZmluZSBhbiBhbW91bnQgb2YgY29sdW1ucyBpbiB0aGUgZW50aXJlIHRhYmxlLFxuICAvLyBhbmQgYWxpZ24gcm93IHNob3VsZCBiZSBleGFjdGx5IHRoZSBzYW1lICh0aGUgcmVzdCBvZiB0aGUgcm93cyBjYW4gZGlmZmVyKVxuICBjb2x1bW5Db3VudCA9IGNvbHVtbnMubGVuZ3RoO1xuICBpZiAoY29sdW1uQ291bnQgPT09IDAgfHwgY29sdW1uQ291bnQgIT09IGFsaWducy5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gdHJ1ZTsgfVxuXG4gIG9sZFBhcmVudFR5cGUgPSBzdGF0ZS5wYXJlbnRUeXBlO1xuICBzdGF0ZS5wYXJlbnRUeXBlID0gJ3RhYmxlJztcblxuICAvLyB1c2UgJ2Jsb2NrcXVvdGUnIGxpc3RzIGZvciB0ZXJtaW5hdGlvbiBiZWNhdXNlIGl0J3NcbiAgLy8gdGhlIG1vc3Qgc2ltaWxhciB0byB0YWJsZXNcbiAgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoJ2Jsb2NrcXVvdGUnKTtcblxuICB0b2tlbiAgICAgPSBzdGF0ZS5wdXNoKCd0YWJsZV9vcGVuJywgJ3RhYmxlJywgMSk7XG4gIHRva2VuLm1hcCA9IHRhYmxlTGluZXMgPSBbIHN0YXJ0TGluZSwgMCBdO1xuXG4gIHRva2VuICAgICA9IHN0YXRlLnB1c2goJ3RoZWFkX29wZW4nLCAndGhlYWQnLCAxKTtcbiAgdG9rZW4ubWFwID0gWyBzdGFydExpbmUsIHN0YXJ0TGluZSArIDEgXTtcblxuICB0b2tlbiAgICAgPSBzdGF0ZS5wdXNoKCd0cl9vcGVuJywgJ3RyJywgMSk7XG4gIHRva2VuLm1hcCA9IFsgc3RhcnRMaW5lLCBzdGFydExpbmUgKyAxIF07XG5cbiAgZm9yIChpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ3RoX29wZW4nLCAndGgnLCAxKTtcbiAgICBpZiAoYWxpZ25zW2ldKSB7XG4gICAgICB0b2tlbi5hdHRycyAgPSBbIFsgJ3N0eWxlJywgJ3RleHQtYWxpZ246JyArIGFsaWduc1tpXSBdIF07XG4gICAgfVxuXG4gICAgdG9rZW4gICAgICAgICAgPSBzdGF0ZS5wdXNoKCdpbmxpbmUnLCAnJywgMCk7XG4gICAgdG9rZW4uY29udGVudCAgPSBjb2x1bW5zW2ldLnRyaW0oKTtcbiAgICB0b2tlbi5jaGlsZHJlbiA9IFtdO1xuXG4gICAgdG9rZW4gICAgICAgICAgPSBzdGF0ZS5wdXNoKCd0aF9jbG9zZScsICd0aCcsIC0xKTtcbiAgfVxuXG4gIHRva2VuICAgICA9IHN0YXRlLnB1c2goJ3RyX2Nsb3NlJywgJ3RyJywgLTEpO1xuICB0b2tlbiAgICAgPSBzdGF0ZS5wdXNoKCd0aGVhZF9jbG9zZScsICd0aGVhZCcsIC0xKTtcblxuICBmb3IgKG5leHRMaW5lID0gc3RhcnRMaW5lICsgMjsgbmV4dExpbmUgPCBlbmRMaW5lOyBuZXh0TGluZSsrKSB7XG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCBzdGF0ZS5ibGtJbmRlbnQpIHsgYnJlYWs7IH1cblxuICAgIHRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgIGZvciAoaSA9IDAsIGwgPSB0ZXJtaW5hdG9yUnVsZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAodGVybWluYXRvclJ1bGVzW2ldKHN0YXRlLCBuZXh0TGluZSwgZW5kTGluZSwgdHJ1ZSkpIHtcbiAgICAgICAgdGVybWluYXRlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRlcm1pbmF0ZSkgeyBicmVhazsgfVxuICAgIGxpbmVUZXh0ID0gZ2V0TGluZShzdGF0ZSwgbmV4dExpbmUpLnRyaW0oKTtcbiAgICBpZiAoIWxpbmVUZXh0KSB7IGJyZWFrOyB9XG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkgeyBicmVhazsgfVxuICAgIGNvbHVtbnMgPSBlc2NhcGVkU3BsaXQobGluZVRleHQpO1xuICAgIGlmIChjb2x1bW5zLmxlbmd0aCAmJiBjb2x1bW5zWzBdID09PSAnJykgY29sdW1ucy5zaGlmdCgpO1xuICAgIGlmIChjb2x1bW5zLmxlbmd0aCAmJiBjb2x1bW5zW2NvbHVtbnMubGVuZ3RoIC0gMV0gPT09ICcnKSBjb2x1bW5zLnBvcCgpO1xuXG4gICAgaWYgKG5leHRMaW5lID09PSBzdGFydExpbmUgKyAyKSB7XG4gICAgICB0b2tlbiAgICAgPSBzdGF0ZS5wdXNoKCd0Ym9keV9vcGVuJywgJ3Rib2R5JywgMSk7XG4gICAgICB0b2tlbi5tYXAgPSB0Ym9keUxpbmVzID0gWyBzdGFydExpbmUgKyAyLCAwIF07XG4gICAgfVxuXG4gICAgdG9rZW4gICAgID0gc3RhdGUucHVzaCgndHJfb3BlbicsICd0cicsIDEpO1xuICAgIHRva2VuLm1hcCA9IFsgbmV4dExpbmUsIG5leHRMaW5lICsgMSBdO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGNvbHVtbkNvdW50OyBpKyspIHtcbiAgICAgIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgndGRfb3BlbicsICd0ZCcsIDEpO1xuICAgICAgaWYgKGFsaWduc1tpXSkge1xuICAgICAgICB0b2tlbi5hdHRycyAgPSBbIFsgJ3N0eWxlJywgJ3RleHQtYWxpZ246JyArIGFsaWduc1tpXSBdIF07XG4gICAgICB9XG5cbiAgICAgIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgnaW5saW5lJywgJycsIDApO1xuICAgICAgdG9rZW4uY29udGVudCAgPSBjb2x1bW5zW2ldID8gY29sdW1uc1tpXS50cmltKCkgOiAnJztcbiAgICAgIHRva2VuLmNoaWxkcmVuID0gW107XG5cbiAgICAgIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgndGRfY2xvc2UnLCAndGQnLCAtMSk7XG4gICAgfVxuICAgIHRva2VuID0gc3RhdGUucHVzaCgndHJfY2xvc2UnLCAndHInLCAtMSk7XG4gIH1cblxuICBpZiAodGJvZHlMaW5lcykge1xuICAgIHRva2VuID0gc3RhdGUucHVzaCgndGJvZHlfY2xvc2UnLCAndGJvZHknLCAtMSk7XG4gICAgdGJvZHlMaW5lc1sxXSA9IG5leHRMaW5lO1xuICB9XG5cbiAgdG9rZW4gPSBzdGF0ZS5wdXNoKCd0YWJsZV9jbG9zZScsICd0YWJsZScsIC0xKTtcbiAgdGFibGVMaW5lc1sxXSA9IG5leHRMaW5lO1xuXG4gIHN0YXRlLnBhcmVudFR5cGUgPSBvbGRQYXJlbnRUeXBlO1xuICBzdGF0ZS5saW5lID0gbmV4dExpbmU7XG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/table.js\n");
|
2009 |
|
2010 | }),
|
2011 |
|
2012 | "../../../node_modules/markdown-it/lib/rules_core/block.js":
|
2013 |
|
2014 |
|
2015 |
|
2016 |
|
2017 | (function(module, exports, __webpack_require__) {
|
2018 |
|
2019 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n module.exports = function block(state) {\n var token;\n\n if (state.inlineMode) {\n token = new state.Token('inline', '', 0);\n token.content = state.src;\n token.map = [0, 1];\n token.children = [];\n state.tokens.push(token);\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens);\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL2Jsb2NrLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL2Jsb2NrLmpzP2U2ZDkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmxvY2soc3RhdGUpIHtcbiAgdmFyIHRva2VuO1xuXG4gIGlmIChzdGF0ZS5pbmxpbmVNb2RlKSB7XG4gICAgdG9rZW4gICAgICAgICAgPSBuZXcgc3RhdGUuVG9rZW4oJ2lubGluZScsICcnLCAwKTtcbiAgICB0b2tlbi5jb250ZW50ICA9IHN0YXRlLnNyYztcbiAgICB0b2tlbi5tYXAgICAgICA9IFsgMCwgMSBdO1xuICAgIHRva2VuLmNoaWxkcmVuID0gW107XG4gICAgc3RhdGUudG9rZW5zLnB1c2godG9rZW4pO1xuICB9IGVsc2Uge1xuICAgIHN0YXRlLm1kLmJsb2NrLnBhcnNlKHN0YXRlLnNyYywgc3RhdGUubWQsIHN0YXRlLmVudiwgc3RhdGUudG9rZW5zKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/block.js\n");
|
2020 |
|
2021 | }),
|
2022 |
|
2023 | "../../../node_modules/markdown-it/lib/rules_core/inline.js":
|
2024 |
|
2025 |
|
2026 |
|
2027 |
|
2028 | (function(module, exports, __webpack_require__) {
|
2029 |
|
2030 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n module.exports = function inline(state) {\n var tokens = state.tokens,\n tok,\n i,\n l; // Parse inlines\n\n for (i = 0, l = tokens.length; i < l; i++) {\n tok = tokens[i];\n\n if (tok.type === 'inline') {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children);\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL2lubGluZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9pbmxpbmUuanM/ZjYyOCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5saW5lKHN0YXRlKSB7XG4gIHZhciB0b2tlbnMgPSBzdGF0ZS50b2tlbnMsIHRvaywgaSwgbDtcblxuICAvLyBQYXJzZSBpbmxpbmVzXG4gIGZvciAoaSA9IDAsIGwgPSB0b2tlbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdG9rID0gdG9rZW5zW2ldO1xuICAgIGlmICh0b2sudHlwZSA9PT0gJ2lubGluZScpIHtcbiAgICAgIHN0YXRlLm1kLmlubGluZS5wYXJzZSh0b2suY29udGVudCwgc3RhdGUubWQsIHN0YXRlLmVudiwgdG9rLmNoaWxkcmVuKTtcbiAgICB9XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/inline.js\n");
|
2031 |
|
2032 | }),
|
2033 |
|
2034 | "../../../node_modules/markdown-it/lib/rules_core/linkify.js":
|
2035 |
|
2036 |
|
2037 |
|
2038 |
|
2039 | (function(module, exports, __webpack_require__) {
|
2040 |
|
2041 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Replace link-like texts with link nodes.\n //\n // Currently restricted by `md.validateLink()` to http/https/ftp\n //\n 'use strict';\n\n var arrayReplaceAt = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").arrayReplaceAt;\n\n function isLinkOpen(str) {\n return /^<a[>\\s]/i.test(str);\n }\n\n function isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n }\n\n module.exports = function linkify(state) {\n var i,\n j,\n l,\n tokens,\n token,\n currentToken,\n nodes,\n ln,\n text,\n pos,\n lastPos,\n level,\n htmlLinkLevel,\n url,\n fullUrl,\n urlText,\n blockTokens = state.tokens,\n links;\n\n if (!state.md.options.linkify) {\n return;\n }\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline' || !state.md.linkify.pretest(blockTokens[j].content)) {\n continue;\n }\n\n tokens = blockTokens[j].children;\n htmlLinkLevel = 0; // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n\n for (i = tokens.length - 1; i >= 0; i--) {\n currentToken = tokens[i]; // Skip content of markdown links\n\n if (currentToken.type === 'link_close') {\n i--;\n\n while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n i--;\n }\n\n continue;\n } // Skip content of html tag links\n\n\n if (currentToken.type === 'html_inline') {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--;\n }\n\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++;\n }\n }\n\n if (htmlLinkLevel > 0) {\n continue;\n }\n\n if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n text = currentToken.content;\n links = state.md.linkify.match(text); // Now split string to nodes\n\n nodes = [];\n level = currentToken.level;\n lastPos = 0;\n\n for (ln = 0; ln < links.length; ln++) {\n url = links[ln].url;\n fullUrl = state.md.normalizeLink(url);\n\n if (!state.md.validateLink(fullUrl)) {\n continue;\n }\n\n urlText = links[ln].text; // Linkifier might send raw hostnames like \"example.com\", where url\n // starts with domain name. So we prepend http:// in those cases,\n // and remove it afterwards.\n //\n\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '');\n } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '');\n } else {\n urlText = state.md.normalizeLinkText(urlText);\n }\n\n pos = links[ln].index;\n\n if (pos > lastPos) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos, pos);\n token.level = level;\n nodes.push(token);\n }\n\n token = new state.Token('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.level = level++;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n token = new state.Token('text', '', 0);\n token.content = urlText;\n token.level = level;\n nodes.push(token);\n token = new state.Token('link_close', 'a', -1);\n token.level = --level;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n lastPos = links[ln].lastIndex;\n }\n\n if (lastPos < text.length) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos);\n token.level = level;\n nodes.push(token);\n } // replace current node\n\n\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n }\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL2xpbmtpZnkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2NvcmUvbGlua2lmeS5qcz80Y2ZlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFJlcGxhY2UgbGluay1saWtlIHRleHRzIHdpdGggbGluayBub2Rlcy5cbi8vXG4vLyBDdXJyZW50bHkgcmVzdHJpY3RlZCBieSBgbWQudmFsaWRhdGVMaW5rKClgIHRvIGh0dHAvaHR0cHMvZnRwXG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBhcnJheVJlcGxhY2VBdCA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmFycmF5UmVwbGFjZUF0O1xuXG5cbmZ1bmN0aW9uIGlzTGlua09wZW4oc3RyKSB7XG4gIHJldHVybiAvXjxhWz5cXHNdL2kudGVzdChzdHIpO1xufVxuZnVuY3Rpb24gaXNMaW5rQ2xvc2Uoc3RyKSB7XG4gIHJldHVybiAvXjxcXC9hXFxzKj4vaS50ZXN0KHN0cik7XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBsaW5raWZ5KHN0YXRlKSB7XG4gIHZhciBpLCBqLCBsLCB0b2tlbnMsIHRva2VuLCBjdXJyZW50VG9rZW4sIG5vZGVzLCBsbiwgdGV4dCwgcG9zLCBsYXN0UG9zLFxuICAgICAgbGV2ZWwsIGh0bWxMaW5rTGV2ZWwsIHVybCwgZnVsbFVybCwgdXJsVGV4dCxcbiAgICAgIGJsb2NrVG9rZW5zID0gc3RhdGUudG9rZW5zLFxuICAgICAgbGlua3M7XG5cbiAgaWYgKCFzdGF0ZS5tZC5vcHRpb25zLmxpbmtpZnkpIHsgcmV0dXJuOyB9XG5cbiAgZm9yIChqID0gMCwgbCA9IGJsb2NrVG9rZW5zLmxlbmd0aDsgaiA8IGw7IGorKykge1xuICAgIGlmIChibG9ja1Rva2Vuc1tqXS50eXBlICE9PSAnaW5saW5lJyB8fFxuICAgICAgICAhc3RhdGUubWQubGlua2lmeS5wcmV0ZXN0KGJsb2NrVG9rZW5zW2pdLmNvbnRlbnQpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB0b2tlbnMgPSBibG9ja1Rva2Vuc1tqXS5jaGlsZHJlbjtcblxuICAgIGh0bWxMaW5rTGV2ZWwgPSAwO1xuXG4gICAgLy8gV2Ugc2NhbiBmcm9tIHRoZSBlbmQsIHRvIGtlZXAgcG9zaXRpb24gd2hlbiBuZXcgdGFncyBhZGRlZC5cbiAgICAvLyBVc2UgcmV2ZXJzZWQgbG9naWMgaW4gbGlua3Mgc3RhcnQvZW5kIG1hdGNoXG4gICAgZm9yIChpID0gdG9rZW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjdXJyZW50VG9rZW4gPSB0b2tlbnNbaV07XG5cbiAgICAgIC8vIFNraXAgY29udGVudCBvZiBtYXJrZG93biBsaW5rc1xuICAgICAgaWYgKGN1cnJlbnRUb2tlbi50eXBlID09PSAnbGlua19jbG9zZScpIHtcbiAgICAgICAgaS0tO1xuICAgICAgICB3aGlsZSAodG9rZW5zW2ldLmxldmVsICE9PSBjdXJyZW50VG9rZW4ubGV2ZWwgJiYgdG9rZW5zW2ldLnR5cGUgIT09ICdsaW5rX29wZW4nKSB7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBTa2lwIGNvbnRlbnQgb2YgaHRtbCB0YWcgbGlua3NcbiAgICAgIGlmIChjdXJyZW50VG9rZW4udHlwZSA9PT0gJ2h0bWxfaW5saW5lJykge1xuICAgICAgICBpZiAoaXNMaW5rT3BlbihjdXJyZW50VG9rZW4uY29udGVudCkgJiYgaHRtbExpbmtMZXZlbCA+IDApIHtcbiAgICAgICAgICBodG1sTGlua0xldmVsLS07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTGlua0Nsb3NlKGN1cnJlbnRUb2tlbi5jb250ZW50KSkge1xuICAgICAgICAgIGh0bWxMaW5rTGV2ZWwrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGh0bWxMaW5rTGV2ZWwgPiAwKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAgIGlmIChjdXJyZW50VG9rZW4udHlwZSA9PT0gJ3RleHQnICYmIHN0YXRlLm1kLmxpbmtpZnkudGVzdChjdXJyZW50VG9rZW4uY29udGVudCkpIHtcblxuICAgICAgICB0ZXh0ID0gY3VycmVudFRva2VuLmNvbnRlbnQ7XG4gICAgICAgIGxpbmtzID0gc3RhdGUubWQubGlua2lmeS5tYXRjaCh0ZXh0KTtcblxuICAgICAgICAvLyBOb3cgc3BsaXQgc3RyaW5nIHRvIG5vZGVzXG4gICAgICAgIG5vZGVzID0gW107XG4gICAgICAgIGxldmVsID0gY3VycmVudFRva2VuLmxldmVsO1xuICAgICAgICBsYXN0UG9zID0gMDtcblxuICAgICAgICBmb3IgKGxuID0gMDsgbG4gPCBsaW5rcy5sZW5ndGg7IGxuKyspIHtcblxuICAgICAgICAgIHVybCA9IGxpbmtzW2xuXS51cmw7XG4gICAgICAgICAgZnVsbFVybCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmsodXJsKTtcbiAgICAgICAgICBpZiAoIXN0YXRlLm1kLnZhbGlkYXRlTGluayhmdWxsVXJsKSkgeyBjb250aW51ZTsgfVxuXG4gICAgICAgICAgdXJsVGV4dCA9IGxpbmtzW2xuXS50ZXh0O1xuXG4gICAgICAgICAgLy8gTGlua2lmaWVyIG1pZ2h0IHNlbmQgcmF3IGhvc3RuYW1lcyBsaWtlIFwiZXhhbXBsZS5jb21cIiwgd2hlcmUgdXJsXG4gICAgICAgICAgLy8gc3RhcnRzIHdpdGggZG9tYWluIG5hbWUuIFNvIHdlIHByZXBlbmQgaHR0cDovLyBpbiB0aG9zZSBjYXNlcyxcbiAgICAgICAgICAvLyBhbmQgcmVtb3ZlIGl0IGFmdGVyd2FyZHMuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBpZiAoIWxpbmtzW2xuXS5zY2hlbWEpIHtcbiAgICAgICAgICAgIHVybFRleHQgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rVGV4dCgnaHR0cDovLycgKyB1cmxUZXh0KS5yZXBsYWNlKC9eaHR0cDpcXC9cXC8vLCAnJyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChsaW5rc1tsbl0uc2NoZW1hID09PSAnbWFpbHRvOicgJiYgIS9ebWFpbHRvOi9pLnRlc3QodXJsVGV4dCkpIHtcbiAgICAgICAgICAgIHVybFRleHQgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rVGV4dCgnbWFpbHRvOicgKyB1cmxUZXh0KS5yZXBsYWNlKC9ebWFpbHRvOi8sICcnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsVGV4dCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmtUZXh0KHVybFRleHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBvcyA9IGxpbmtzW2xuXS5pbmRleDtcblxuICAgICAgICAgIGlmIChwb3MgPiBsYXN0UG9zKSB7XG4gICAgICAgICAgICB0b2tlbiAgICAgICAgID0gbmV3IHN0YXRlLlRva2VuKCd0ZXh0JywgJycsIDApO1xuICAgICAgICAgICAgdG9rZW4uY29udGVudCA9IHRleHQuc2xpY2UobGFzdFBvcywgcG9zKTtcbiAgICAgICAgICAgIHRva2VuLmxldmVsICAgPSBsZXZlbDtcbiAgICAgICAgICAgIG5vZGVzLnB1c2godG9rZW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRva2VuICAgICAgICAgPSBuZXcgc3RhdGUuVG9rZW4oJ2xpbmtfb3BlbicsICdhJywgMSk7XG4gICAgICAgICAgdG9rZW4uYXR0cnMgICA9IFsgWyAnaHJlZicsIGZ1bGxVcmwgXSBdO1xuICAgICAgICAgIHRva2VuLmxldmVsICAgPSBsZXZlbCsrO1xuICAgICAgICAgIHRva2VuLm1hcmt1cCAgPSAnbGlua2lmeSc7XG4gICAgICAgICAgdG9rZW4uaW5mbyAgICA9ICdhdXRvJztcbiAgICAgICAgICBub2Rlcy5wdXNoKHRva2VuKTtcblxuICAgICAgICAgIHRva2VuICAgICAgICAgPSBuZXcgc3RhdGUuVG9rZW4oJ3RleHQnLCAnJywgMCk7XG4gICAgICAgICAgdG9rZW4uY29udGVudCA9IHVybFRleHQ7XG4gICAgICAgICAgdG9rZW4ubGV2ZWwgICA9IGxldmVsO1xuICAgICAgICAgIG5vZGVzLnB1c2godG9rZW4pO1xuXG4gICAgICAgICAgdG9rZW4gICAgICAgICA9IG5ldyBzdGF0ZS5Ub2tlbignbGlua19jbG9zZScsICdhJywgLTEpO1xuICAgICAgICAgIHRva2VuLmxldmVsICAgPSAtLWxldmVsO1xuICAgICAgICAgIHRva2VuLm1hcmt1cCAgPSAnbGlua2lmeSc7XG4gICAgICAgICAgdG9rZW4uaW5mbyAgICA9ICdhdXRvJztcbiAgICAgICAgICBub2Rlcy5wdXNoKHRva2VuKTtcblxuICAgICAgICAgIGxhc3RQb3MgPSBsaW5rc1tsbl0ubGFzdEluZGV4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChsYXN0UG9zIDwgdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgICB0b2tlbiAgICAgICAgID0gbmV3IHN0YXRlLlRva2VuKCd0ZXh0JywgJycsIDApO1xuICAgICAgICAgIHRva2VuLmNvbnRlbnQgPSB0ZXh0LnNsaWNlKGxhc3RQb3MpO1xuICAgICAgICAgIHRva2VuLmxldmVsICAgPSBsZXZlbDtcbiAgICAgICAgICBub2Rlcy5wdXNoKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlcGxhY2UgY3VycmVudCBub2RlXG4gICAgICAgIGJsb2NrVG9rZW5zW2pdLmNoaWxkcmVuID0gdG9rZW5zID0gYXJyYXlSZXBsYWNlQXQodG9rZW5zLCBpLCBub2Rlcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/linkify.js\n");
|
2042 |
|
2043 | }),
|
2044 |
|
2045 | "../../../node_modules/markdown-it/lib/rules_core/normalize.js":
|
2046 |
|
2047 |
|
2048 |
|
2049 |
|
2050 | (function(module, exports, __webpack_require__) {
|
2051 |
|
2052 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Normalize input string\n 'use strict'; // https://spec.commonmark.org/0.29/#line-ending\n\n var NEWLINES_RE = /\\r\\n?|\\n/g;\n var NULL_RE = /\\0/g;\n\n module.exports = function normalize(state) {\n var str; // Normalize newlines\n\n str = state.src.replace(NEWLINES_RE, '\\n'); // Replace NULL characters\n\n str = str.replace(NULL_RE, '\\uFFFD');\n state.src = str;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL25vcm1hbGl6ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9ub3JtYWxpemUuanM/YTVmNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOb3JtYWxpemUgaW5wdXQgc3RyaW5nXG5cbid1c2Ugc3RyaWN0JztcblxuXG4vLyBodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcvMC4yOS8jbGluZS1lbmRpbmdcbnZhciBORVdMSU5FU19SRSAgPSAvXFxyXFxuP3xcXG4vZztcbnZhciBOVUxMX1JFICAgICAgPSAvXFwwL2c7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBub3JtYWxpemUoc3RhdGUpIHtcbiAgdmFyIHN0cjtcblxuICAvLyBOb3JtYWxpemUgbmV3bGluZXNcbiAgc3RyID0gc3RhdGUuc3JjLnJlcGxhY2UoTkVXTElORVNfUkUsICdcXG4nKTtcblxuICAvLyBSZXBsYWNlIE5VTEwgY2hhcmFjdGVyc1xuICBzdHIgPSBzdHIucmVwbGFjZShOVUxMX1JFLCAnXFx1RkZGRCcpO1xuXG4gIHN0YXRlLnNyYyA9IHN0cjtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/normalize.js\n");
|
2053 |
|
2054 | }),
|
2055 |
|
2056 | "../../../node_modules/markdown-it/lib/rules_core/replacements.js":
|
2057 |
|
2058 |
|
2059 |
|
2060 |
|
2061 | (function(module, exports, __webpack_require__) {
|
2062 |
|
2063 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Simple typographic replacements\n //\n // (c) (C) → ©\n // (tm) (TM) → ™\n // (r) (R) → ®\n // +- → ±\n // (p) (P) -> §\n // ... → … (also ?.... → ?.., !.... → !..)\n // ???????? → ???, !!!!! → !!!, `,,` → `,`\n // -- → –, --- → —\n //\n 'use strict'; // TODO:\n // - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n // - miltiplication 2 x 4 -> 2 × 4\n\n var RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/; // Workaround for phantomjs - need regex without /g flag,\n // or root check will fail every second time\n\n var SCOPED_ABBR_TEST_RE = /\\((c|tm|r|p)\\)/i;\n var SCOPED_ABBR_RE = /\\((c|tm|r|p)\\)/ig;\n var SCOPED_ABBR = {\n c: '©',\n r: '®',\n p: '§',\n tm: '™'\n };\n\n function replaceFn(match, name) {\n return SCOPED_ABBR[name.toLowerCase()];\n }\n\n function replace_scoped(inlineTokens) {\n var i,\n token,\n inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n }\n\n function replace_rare(inlineTokens) {\n var i,\n token,\n inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n if (RARE_RE.test(token.content)) {\n token.content = token.content.replace(/\\+-/g, '±') // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..').replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',') // em-dash\n .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\\u2014') // en-dash\n .replace(/(^|\\s)--(?=\\s|$)/mg, '$1\\u2013').replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, '$1\\u2013');\n }\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n }\n\n module.exports = function replace(state) {\n var blkIdx;\n\n if (!state.md.options.typographer) {\n return;\n }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline') {\n continue;\n }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children);\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children);\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL3JlcGxhY2VtZW50cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9yZXBsYWNlbWVudHMuanM/NTYwYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTaW1wbGUgdHlwb2dyYXBoaWMgcmVwbGFjZW1lbnRzXG4vL1xuLy8gKGMpIChDKSDihpIgwqlcbi8vICh0bSkgKFRNKSDihpIg4oSiXG4vLyAocikgKFIpIOKGkiDCrlxuLy8gKy0g4oaSIMKxXG4vLyAocCkgKFApIC0+IMKnXG4vLyAuLi4g4oaSIOKApiAoYWxzbyA/Li4uLiDihpIgPy4uLCAhLi4uLiDihpIgIS4uKVxuLy8gPz8/Pz8/Pz8g4oaSID8/PywgISEhISEg4oaSICEhISwgYCwsYCDihpIgYCxgXG4vLyAtLSDihpIgJm5kYXNoOywgLS0tIOKGkiAmbWRhc2g7XG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyBUT0RPOlxuLy8gLSBmcmFjdGlvbmFscyAxLzIsIDEvNCwgMy80IC0+IMK9LCDCvCwgwr5cbi8vIC0gbWlsdGlwbGljYXRpb24gMiB4IDQgLT4gMiDDlyA0XG5cbnZhciBSQVJFX1JFID0gL1xcKy18XFwuXFwufFxcP1xcP1xcP1xcP3whISEhfCwsfC0tLztcblxuLy8gV29ya2Fyb3VuZCBmb3IgcGhhbnRvbWpzIC0gbmVlZCByZWdleCB3aXRob3V0IC9nIGZsYWcsXG4vLyBvciByb290IGNoZWNrIHdpbGwgZmFpbCBldmVyeSBzZWNvbmQgdGltZVxudmFyIFNDT1BFRF9BQkJSX1RFU1RfUkUgPSAvXFwoKGN8dG18cnxwKVxcKS9pO1xuXG52YXIgU0NPUEVEX0FCQlJfUkUgPSAvXFwoKGN8dG18cnxwKVxcKS9pZztcbnZhciBTQ09QRURfQUJCUiA9IHtcbiAgYzogJ8KpJyxcbiAgcjogJ8KuJyxcbiAgcDogJ8KnJyxcbiAgdG06ICfihKInXG59O1xuXG5mdW5jdGlvbiByZXBsYWNlRm4obWF0Y2gsIG5hbWUpIHtcbiAgcmV0dXJuIFNDT1BFRF9BQkJSW25hbWUudG9Mb3dlckNhc2UoKV07XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2Vfc2NvcGVkKGlubGluZVRva2Vucykge1xuICB2YXIgaSwgdG9rZW4sIGluc2lkZV9hdXRvbGluayA9IDA7XG5cbiAgZm9yIChpID0gaW5saW5lVG9rZW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdG9rZW4gPSBpbmxpbmVUb2tlbnNbaV07XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ3RleHQnICYmICFpbnNpZGVfYXV0b2xpbmspIHtcbiAgICAgIHRva2VuLmNvbnRlbnQgPSB0b2tlbi5jb250ZW50LnJlcGxhY2UoU0NPUEVEX0FCQlJfUkUsIHJlcGxhY2VGbik7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdsaW5rX29wZW4nICYmIHRva2VuLmluZm8gPT09ICdhdXRvJykge1xuICAgICAgaW5zaWRlX2F1dG9saW5rLS07XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdsaW5rX2Nsb3NlJyAmJiB0b2tlbi5pbmZvID09PSAnYXV0bycpIHtcbiAgICAgIGluc2lkZV9hdXRvbGluaysrO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlX3JhcmUoaW5saW5lVG9rZW5zKSB7XG4gIHZhciBpLCB0b2tlbiwgaW5zaWRlX2F1dG9saW5rID0gMDtcblxuICBmb3IgKGkgPSBpbmxpbmVUb2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB0b2tlbiA9IGlubGluZVRva2Vuc1tpXTtcblxuICAgIGlmICh0b2tlbi50eXBlID09PSAndGV4dCcgJiYgIWluc2lkZV9hdXRvbGluaykge1xuICAgICAgaWYgKFJBUkVfUkUudGVzdCh0b2tlbi5jb250ZW50KSkge1xuICAgICAgICB0b2tlbi5jb250ZW50ID0gdG9rZW4uY29udGVudFxuICAgICAgICAgIC5yZXBsYWNlKC9cXCstL2csICfCsScpXG4gICAgICAgICAgLy8gLi4sIC4uLiwgLi4uLi4uLiAtPiDigKZcbiAgICAgICAgICAvLyBidXQgPy4uLi4uICYgIS4uLi4uIC0+ID8uLiAmICEuLlxuICAgICAgICAgIC5yZXBsYWNlKC9cXC57Mix9L2csICfigKYnKS5yZXBsYWNlKC8oWz8hXSnigKYvZywgJyQxLi4nKVxuICAgICAgICAgIC5yZXBsYWNlKC8oWz8hXSl7NCx9L2csICckMSQxJDEnKS5yZXBsYWNlKC8sezIsfS9nLCAnLCcpXG4gICAgICAgICAgLy8gZW0tZGFzaFxuICAgICAgICAgIC5yZXBsYWNlKC8oXnxbXi1dKS0tLSg/PVteLV18JCkvbWcsICckMVxcdTIwMTQnKVxuICAgICAgICAgIC8vIGVuLWRhc2hcbiAgICAgICAgICAucmVwbGFjZSgvKF58XFxzKS0tKD89XFxzfCQpL21nLCAnJDFcXHUyMDEzJylcbiAgICAgICAgICAucmVwbGFjZSgvKF58W14tXFxzXSktLSg/PVteLVxcc118JCkvbWcsICckMVxcdTIwMTMnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ2xpbmtfb3BlbicgJiYgdG9rZW4uaW5mbyA9PT0gJ2F1dG8nKSB7XG4gICAgICBpbnNpZGVfYXV0b2xpbmstLTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ2xpbmtfY2xvc2UnICYmIHRva2VuLmluZm8gPT09ICdhdXRvJykge1xuICAgICAgaW5zaWRlX2F1dG9saW5rKys7XG4gICAgfVxuICB9XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZXBsYWNlKHN0YXRlKSB7XG4gIHZhciBibGtJZHg7XG5cbiAgaWYgKCFzdGF0ZS5tZC5vcHRpb25zLnR5cG9ncmFwaGVyKSB7IHJldHVybjsgfVxuXG4gIGZvciAoYmxrSWR4ID0gc3RhdGUudG9rZW5zLmxlbmd0aCAtIDE7IGJsa0lkeCA+PSAwOyBibGtJZHgtLSkge1xuXG4gICAgaWYgKHN0YXRlLnRva2Vuc1tibGtJZHhdLnR5cGUgIT09ICdpbmxpbmUnKSB7IGNvbnRpbnVlOyB9XG5cbiAgICBpZiAoU0NPUEVEX0FCQlJfVEVTVF9SRS50ZXN0KHN0YXRlLnRva2Vuc1tibGtJZHhdLmNvbnRlbnQpKSB7XG4gICAgICByZXBsYWNlX3Njb3BlZChzdGF0ZS50b2tlbnNbYmxrSWR4XS5jaGlsZHJlbik7XG4gICAgfVxuXG4gICAgaWYgKFJBUkVfUkUudGVzdChzdGF0ZS50b2tlbnNbYmxrSWR4XS5jb250ZW50KSkge1xuICAgICAgcmVwbGFjZV9yYXJlKHN0YXRlLnRva2Vuc1tibGtJZHhdLmNoaWxkcmVuKTtcbiAgICB9XG5cbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBSEE7QUFBQTtBQUFBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/replacements.js\n");
|
2064 |
|
2065 | }),
|
2066 |
|
2067 | "../../../node_modules/markdown-it/lib/rules_core/smartquotes.js":
|
2068 |
|
2069 |
|
2070 |
|
2071 |
|
2072 | (function(module, exports, __webpack_require__) {
|
2073 |
|
2074 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Convert straight quotation marks to typographic ones\n //\n 'use strict';\n\n var isWhiteSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isWhiteSpace;\n\n var isPunctChar = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isPunctChar;\n\n var isMdAsciiPunct = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isMdAsciiPunct;\n\n var QUOTE_TEST_RE = /['\"]/;\n var QUOTE_RE = /['\"]/g;\n var APOSTROPHE = '\\u2019';\n /* ’ */\n\n function replaceAt(str, index, ch) {\n return str.substr(0, index) + ch + str.substr(index + 1);\n }\n\n function process_inlines(tokens, state) {\n var i, token, text, t, pos, max, thisLevel, item, lastChar, nextChar, isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace, canOpen, canClose, j, isSingle, stack, openQuote, closeQuote;\n stack = [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n thisLevel = tokens[i].level;\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) {\n break;\n }\n }\n\n stack.length = j + 1;\n\n if (token.type !== 'text') {\n continue;\n }\n\n text = token.content;\n pos = 0;\n max = text.length;\n /*eslint no-labels:0,block-scoped-var:0*/\n\n OUTER: while (pos < max) {\n QUOTE_RE.lastIndex = pos;\n t = QUOTE_RE.exec(text);\n\n if (!t) {\n break;\n }\n\n canOpen = canClose = true;\n pos = t.index + 1;\n isSingle = t[0] === \"'\"; // Find previous character,\n // default to space if it's the beginning of the line\n //\n\n lastChar = 0x20;\n\n if (t.index - 1 >= 0) {\n lastChar = text.charCodeAt(t.index - 1);\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // lastChar defaults to 0x20\n\n if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);\n break;\n }\n } // Find next character,\n // default to space if it's the end of the line\n //\n\n\n nextChar = 0x20;\n\n if (pos < max) {\n nextChar = text.charCodeAt(pos);\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // nextChar defaults to 0x20\n\n if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n nextChar = tokens[j].content.charCodeAt(0);\n break;\n }\n }\n\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n canOpen = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false;\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false;\n }\n }\n\n if (nextChar === 0x22\n /* \" */\n && t[0] === '\"') {\n if (lastChar >= 0x30\n /* 0 */\n && lastChar <= 0x39\n /* 9 */\n ) {\n // special case: 1\"\" - count first quote as an inch\n canClose = canOpen = false;\n }\n }\n\n if (canOpen && canClose) {\n // Replace quotes in the middle of punctuation sequence, but not\n // in the middle of the words, i.e.:\n //\n // 1. foo \" bar \" baz - not replaced\n // 2. foo-\"-bar-\"-baz - replaced\n // 3. foo\"bar\"baz - not replaced\n //\n canOpen = isLastPunctChar;\n canClose = isNextPunctChar;\n }\n\n if (!canOpen && !canClose) {\n // middle of word\n if (isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n\n continue;\n }\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n item = stack[j];\n\n if (stack[j].level < thisLevel) {\n break;\n }\n\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j];\n\n if (isSingle) {\n openQuote = state.md.options.quotes[2];\n closeQuote = state.md.options.quotes[3];\n } else {\n openQuote = state.md.options.quotes[0];\n closeQuote = state.md.options.quotes[1];\n } // replace token.content *before* tokens[item.token].content,\n // because, if they are pointing at the same token, replaceAt\n // could mess up indices when quote length != 1\n\n\n token.content = replaceAt(token.content, t.index, closeQuote);\n tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, openQuote);\n pos += closeQuote.length - 1;\n\n if (item.token === i) {\n pos += openQuote.length - 1;\n }\n\n text = token.content;\n max = text.length;\n stack.length = j;\n continue OUTER;\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n });\n } else if (canClose && isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n }\n }\n }\n\n module.exports = function smartquotes(state) {\n /*eslint max-depth:0*/\n var blkIdx;\n\n if (!state.md.options.typographer) {\n return;\n }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline' || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue;\n }\n\n process_inlines(state.tokens[blkIdx].children, state);\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL3NtYXJ0cXVvdGVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL3NtYXJ0cXVvdGVzLmpzPzg0NTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29udmVydCBzdHJhaWdodCBxdW90YXRpb24gbWFya3MgdG8gdHlwb2dyYXBoaWMgb25lc1xuLy9cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgaXNXaGl0ZVNwYWNlICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1doaXRlU3BhY2U7XG52YXIgaXNQdW5jdENoYXIgICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1B1bmN0Q2hhcjtcbnZhciBpc01kQXNjaWlQdW5jdCA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzTWRBc2NpaVB1bmN0O1xuXG52YXIgUVVPVEVfVEVTVF9SRSA9IC9bJ1wiXS87XG52YXIgUVVPVEVfUkUgPSAvWydcIl0vZztcbnZhciBBUE9TVFJPUEhFID0gJ1xcdTIwMTknOyAvKiDigJkgKi9cblxuXG5mdW5jdGlvbiByZXBsYWNlQXQoc3RyLCBpbmRleCwgY2gpIHtcbiAgcmV0dXJuIHN0ci5zdWJzdHIoMCwgaW5kZXgpICsgY2ggKyBzdHIuc3Vic3RyKGluZGV4ICsgMSk7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NfaW5saW5lcyh0b2tlbnMsIHN0YXRlKSB7XG4gIHZhciBpLCB0b2tlbiwgdGV4dCwgdCwgcG9zLCBtYXgsIHRoaXNMZXZlbCwgaXRlbSwgbGFzdENoYXIsIG5leHRDaGFyLFxuICAgICAgaXNMYXN0UHVuY3RDaGFyLCBpc05leHRQdW5jdENoYXIsIGlzTGFzdFdoaXRlU3BhY2UsIGlzTmV4dFdoaXRlU3BhY2UsXG4gICAgICBjYW5PcGVuLCBjYW5DbG9zZSwgaiwgaXNTaW5nbGUsIHN0YWNrLCBvcGVuUXVvdGUsIGNsb3NlUXVvdGU7XG5cbiAgc3RhY2sgPSBbXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgdG9rZW4gPSB0b2tlbnNbaV07XG5cbiAgICB0aGlzTGV2ZWwgPSB0b2tlbnNbaV0ubGV2ZWw7XG5cbiAgICBmb3IgKGogPSBzdGFjay5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgaWYgKHN0YWNrW2pdLmxldmVsIDw9IHRoaXNMZXZlbCkgeyBicmVhazsgfVxuICAgIH1cbiAgICBzdGFjay5sZW5ndGggPSBqICsgMTtcblxuICAgIGlmICh0b2tlbi50eXBlICE9PSAndGV4dCcpIHsgY29udGludWU7IH1cblxuICAgIHRleHQgPSB0b2tlbi5jb250ZW50O1xuICAgIHBvcyA9IDA7XG4gICAgbWF4ID0gdGV4dC5sZW5ndGg7XG5cbiAgICAvKmVzbGludCBuby1sYWJlbHM6MCxibG9jay1zY29wZWQtdmFyOjAqL1xuICAgIE9VVEVSOlxuICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgIFFVT1RFX1JFLmxhc3RJbmRleCA9IHBvcztcbiAgICAgIHQgPSBRVU9URV9SRS5leGVjKHRleHQpO1xuICAgICAgaWYgKCF0KSB7IGJyZWFrOyB9XG5cbiAgICAgIGNhbk9wZW4gPSBjYW5DbG9zZSA9IHRydWU7XG4gICAgICBwb3MgPSB0LmluZGV4ICsgMTtcbiAgICAgIGlzU2luZ2xlID0gKHRbMF0gPT09IFwiJ1wiKTtcblxuICAgICAgLy8gRmluZCBwcmV2aW91cyBjaGFyYWN0ZXIsXG4gICAgICAvLyBkZWZhdWx0IHRvIHNwYWNlIGlmIGl0J3MgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZVxuICAgICAgLy9cbiAgICAgIGxhc3RDaGFyID0gMHgyMDtcblxuICAgICAgaWYgKHQuaW5kZXggLSAxID49IDApIHtcbiAgICAgICAgbGFzdENoYXIgPSB0ZXh0LmNoYXJDb2RlQXQodC5pbmRleCAtIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChqID0gaSAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgaWYgKHRva2Vuc1tqXS50eXBlID09PSAnc29mdGJyZWFrJyB8fCB0b2tlbnNbal0udHlwZSA9PT0gJ2hhcmRicmVhaycpIGJyZWFrOyAvLyBsYXN0Q2hhciBkZWZhdWx0cyB0byAweDIwXG4gICAgICAgICAgaWYgKCF0b2tlbnNbal0uY29udGVudCkgY29udGludWU7IC8vIHNob3VsZCBza2lwIGFsbCB0b2tlbnMgZXhjZXB0ICd0ZXh0JywgJ2h0bWxfaW5saW5lJyBvciAnY29kZV9pbmxpbmUnXG5cbiAgICAgICAgICBsYXN0Q2hhciA9IHRva2Vuc1tqXS5jb250ZW50LmNoYXJDb2RlQXQodG9rZW5zW2pdLmNvbnRlbnQubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gRmluZCBuZXh0IGNoYXJhY3RlcixcbiAgICAgIC8vIGRlZmF1bHQgdG8gc3BhY2UgaWYgaXQncyB0aGUgZW5kIG9mIHRoZSBsaW5lXG4gICAgICAvL1xuICAgICAgbmV4dENoYXIgPSAweDIwO1xuXG4gICAgICBpZiAocG9zIDwgbWF4KSB7XG4gICAgICAgIG5leHRDaGFyID0gdGV4dC5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IHRva2Vucy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGlmICh0b2tlbnNbal0udHlwZSA9PT0gJ3NvZnRicmVhaycgfHwgdG9rZW5zW2pdLnR5cGUgPT09ICdoYXJkYnJlYWsnKSBicmVhazsgLy8gbmV4dENoYXIgZGVmYXVsdHMgdG8gMHgyMFxuICAgICAgICAgIGlmICghdG9rZW5zW2pdLmNvbnRlbnQpIGNvbnRpbnVlOyAvLyBzaG91bGQgc2tpcCBhbGwgdG9rZW5zIGV4Y2VwdCAndGV4dCcsICdodG1sX2lubGluZScgb3IgJ2NvZGVfaW5saW5lJ1xuXG4gICAgICAgICAgbmV4dENoYXIgPSB0b2tlbnNbal0uY29udGVudC5jaGFyQ29kZUF0KDApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlzTGFzdFB1bmN0Q2hhciA9IGlzTWRBc2NpaVB1bmN0KGxhc3RDaGFyKSB8fCBpc1B1bmN0Q2hhcihTdHJpbmcuZnJvbUNoYXJDb2RlKGxhc3RDaGFyKSk7XG4gICAgICBpc05leHRQdW5jdENoYXIgPSBpc01kQXNjaWlQdW5jdChuZXh0Q2hhcikgfHwgaXNQdW5jdENoYXIoU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0Q2hhcikpO1xuXG4gICAgICBpc0xhc3RXaGl0ZVNwYWNlID0gaXNXaGl0ZVNwYWNlKGxhc3RDaGFyKTtcbiAgICAgIGlzTmV4dFdoaXRlU3BhY2UgPSBpc1doaXRlU3BhY2UobmV4dENoYXIpO1xuXG4gICAgICBpZiAoaXNOZXh0V2hpdGVTcGFjZSkge1xuICAgICAgICBjYW5PcGVuID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKGlzTmV4dFB1bmN0Q2hhcikge1xuICAgICAgICBpZiAoIShpc0xhc3RXaGl0ZVNwYWNlIHx8IGlzTGFzdFB1bmN0Q2hhcikpIHtcbiAgICAgICAgICBjYW5PcGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzTGFzdFdoaXRlU3BhY2UpIHtcbiAgICAgICAgY2FuQ2xvc2UgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoaXNMYXN0UHVuY3RDaGFyKSB7XG4gICAgICAgIGlmICghKGlzTmV4dFdoaXRlU3BhY2UgfHwgaXNOZXh0UHVuY3RDaGFyKSkge1xuICAgICAgICAgIGNhbkNsb3NlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5leHRDaGFyID09PSAweDIyIC8qIFwiICovICYmIHRbMF0gPT09ICdcIicpIHtcbiAgICAgICAgaWYgKGxhc3RDaGFyID49IDB4MzAgLyogMCAqLyAmJiBsYXN0Q2hhciA8PSAweDM5IC8qIDkgKi8pIHtcbiAgICAgICAgICAvLyBzcGVjaWFsIGNhc2U6IDFcIlwiIC0gY291bnQgZmlyc3QgcXVvdGUgYXMgYW4gaW5jaFxuICAgICAgICAgIGNhbkNsb3NlID0gY2FuT3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5PcGVuICYmIGNhbkNsb3NlKSB7XG4gICAgICAgIC8vIFJlcGxhY2UgcXVvdGVzIGluIHRoZSBtaWRkbGUgb2YgcHVuY3R1YXRpb24gc2VxdWVuY2UsIGJ1dCBub3RcbiAgICAgICAgLy8gaW4gdGhlIG1pZGRsZSBvZiB0aGUgd29yZHMsIGkuZS46XG4gICAgICAgIC8vXG4gICAgICAgIC8vIDEuIGZvbyBcIiBiYXIgXCIgYmF6IC0gbm90IHJlcGxhY2VkXG4gICAgICAgIC8vIDIuIGZvby1cIi1iYXItXCItYmF6IC0gcmVwbGFjZWRcbiAgICAgICAgLy8gMy4gZm9vXCJiYXJcImJheiAgICAgLSBub3QgcmVwbGFjZWRcbiAgICAgICAgLy9cbiAgICAgICAgY2FuT3BlbiA9IGlzTGFzdFB1bmN0Q2hhcjtcbiAgICAgICAgY2FuQ2xvc2UgPSBpc05leHRQdW5jdENoYXI7XG4gICAgICB9XG5cbiAgICAgIGlmICghY2FuT3BlbiAmJiAhY2FuQ2xvc2UpIHtcbiAgICAgICAgLy8gbWlkZGxlIG9mIHdvcmRcbiAgICAgICAgaWYgKGlzU2luZ2xlKSB7XG4gICAgICAgICAgdG9rZW4uY29udGVudCA9IHJlcGxhY2VBdCh0b2tlbi5jb250ZW50LCB0LmluZGV4LCBBUE9TVFJPUEhFKTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhbkNsb3NlKSB7XG4gICAgICAgIC8vIHRoaXMgY291bGQgYmUgYSBjbG9zaW5nIHF1b3RlLCByZXdpbmQgdGhlIHN0YWNrIHRvIGdldCBhIG1hdGNoXG4gICAgICAgIGZvciAoaiA9IHN0YWNrLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgaXRlbSA9IHN0YWNrW2pdO1xuICAgICAgICAgIGlmIChzdGFja1tqXS5sZXZlbCA8IHRoaXNMZXZlbCkgeyBicmVhazsgfVxuICAgICAgICAgIGlmIChpdGVtLnNpbmdsZSA9PT0gaXNTaW5nbGUgJiYgc3RhY2tbal0ubGV2ZWwgPT09IHRoaXNMZXZlbCkge1xuICAgICAgICAgICAgaXRlbSA9IHN0YWNrW2pdO1xuXG4gICAgICAgICAgICBpZiAoaXNTaW5nbGUpIHtcbiAgICAgICAgICAgICAgb3BlblF1b3RlID0gc3RhdGUubWQub3B0aW9ucy5xdW90ZXNbMl07XG4gICAgICAgICAgICAgIGNsb3NlUXVvdGUgPSBzdGF0ZS5tZC5vcHRpb25zLnF1b3Rlc1szXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9wZW5RdW90ZSA9IHN0YXRlLm1kLm9wdGlvbnMucXVvdGVzWzBdO1xuICAgICAgICAgICAgICBjbG9zZVF1b3RlID0gc3RhdGUubWQub3B0aW9ucy5xdW90ZXNbMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlcGxhY2UgdG9rZW4uY29udGVudCAqYmVmb3JlKiB0b2tlbnNbaXRlbS50b2tlbl0uY29udGVudCxcbiAgICAgICAgICAgIC8vIGJlY2F1c2UsIGlmIHRoZXkgYXJlIHBvaW50aW5nIGF0IHRoZSBzYW1lIHRva2VuLCByZXBsYWNlQXRcbiAgICAgICAgICAgIC8vIGNvdWxkIG1lc3MgdXAgaW5kaWNlcyB3aGVuIHF1b3RlIGxlbmd0aCAhPSAxXG4gICAgICAgICAgICB0b2tlbi5jb250ZW50ID0gcmVwbGFjZUF0KHRva2VuLmNvbnRlbnQsIHQuaW5kZXgsIGNsb3NlUXVvdGUpO1xuICAgICAgICAgICAgdG9rZW5zW2l0ZW0udG9rZW5dLmNvbnRlbnQgPSByZXBsYWNlQXQoXG4gICAgICAgICAgICAgIHRva2Vuc1tpdGVtLnRva2VuXS5jb250ZW50LCBpdGVtLnBvcywgb3BlblF1b3RlKTtcblxuICAgICAgICAgICAgcG9zICs9IGNsb3NlUXVvdGUubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGlmIChpdGVtLnRva2VuID09PSBpKSB7IHBvcyArPSBvcGVuUXVvdGUubGVuZ3RoIC0gMTsgfVxuXG4gICAgICAgICAgICB0ZXh0ID0gdG9rZW4uY29udGVudDtcbiAgICAgICAgICAgIG1heCA9IHRleHQubGVuZ3RoO1xuXG4gICAgICAgICAgICBzdGFjay5sZW5ndGggPSBqO1xuICAgICAgICAgICAgY29udGludWUgT1VURVI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5PcGVuKSB7XG4gICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgIHRva2VuOiBpLFxuICAgICAgICAgIHBvczogdC5pbmRleCxcbiAgICAgICAgICBzaW5nbGU6IGlzU2luZ2xlLFxuICAgICAgICAgIGxldmVsOiB0aGlzTGV2ZWxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbkNsb3NlICYmIGlzU2luZ2xlKSB7XG4gICAgICAgIHRva2VuLmNvbnRlbnQgPSByZXBsYWNlQXQodG9rZW4uY29udGVudCwgdC5pbmRleCwgQVBPU1RST1BIRSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzbWFydHF1b3RlcyhzdGF0ZSkge1xuICAvKmVzbGludCBtYXgtZGVwdGg6MCovXG4gIHZhciBibGtJZHg7XG5cbiAgaWYgKCFzdGF0ZS5tZC5vcHRpb25zLnR5cG9ncmFwaGVyKSB7IHJldHVybjsgfVxuXG4gIGZvciAoYmxrSWR4ID0gc3RhdGUudG9rZW5zLmxlbmd0aCAtIDE7IGJsa0lkeCA+PSAwOyBibGtJZHgtLSkge1xuXG4gICAgaWYgKHN0YXRlLnRva2Vuc1tibGtJZHhdLnR5cGUgIT09ICdpbmxpbmUnIHx8XG4gICAgICAgICFRVU9URV9URVNUX1JFLnRlc3Qoc3RhdGUudG9rZW5zW2Jsa0lkeF0uY29udGVudCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHByb2Nlc3NfaW5saW5lcyhzdGF0ZS50b2tlbnNbYmxrSWR4XS5jaGlsZHJlbiwgc3RhdGUpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/smartquotes.js\n");
|
2075 |
|
2076 | }),
|
2077 |
|
2078 | "../../../node_modules/markdown-it/lib/rules_core/state_core.js":
|
2079 |
|
2080 |
|
2081 |
|
2082 |
|
2083 | (function(module, exports, __webpack_require__) {
|
2084 |
|
2085 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Core state object\n //\n 'use strict';\n\n var Token = __webpack_require__(/*! ../token */ \"../../../node_modules/markdown-it/lib/token.js\");\n\n function StateCore(src, md, env) {\n this.src = src;\n this.env = env;\n this.tokens = [];\n this.inlineMode = false;\n this.md = md; // link to parser instance\n } // re-export Token class to use in core rules\n\n\n StateCore.prototype.Token = Token;\n module.exports = StateCore;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL3N0YXRlX2NvcmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2NvcmUvc3RhdGVfY29yZS5qcz8yODA1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcmUgc3RhdGUgb2JqZWN0XG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgVG9rZW4gPSByZXF1aXJlKCcuLi90b2tlbicpO1xuXG5cbmZ1bmN0aW9uIFN0YXRlQ29yZShzcmMsIG1kLCBlbnYpIHtcbiAgdGhpcy5zcmMgPSBzcmM7XG4gIHRoaXMuZW52ID0gZW52O1xuICB0aGlzLnRva2VucyA9IFtdO1xuICB0aGlzLmlubGluZU1vZGUgPSBmYWxzZTtcbiAgdGhpcy5tZCA9IG1kOyAvLyBsaW5rIHRvIHBhcnNlciBpbnN0YW5jZVxufVxuXG4vLyByZS1leHBvcnQgVG9rZW4gY2xhc3MgdG8gdXNlIGluIGNvcmUgcnVsZXNcblN0YXRlQ29yZS5wcm90b3R5cGUuVG9rZW4gPSBUb2tlbjtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0YXRlQ29yZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/state_core.js\n");
|
2086 |
|
2087 | }),
|
2088 |
|
2089 | "../../../node_modules/markdown-it/lib/rules_inline/autolink.js":
|
2090 |
|
2091 |
|
2092 |
|
2093 |
|
2094 | (function(module, exports, __webpack_require__) {
|
2095 |
|
2096 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process autolinks '<protocol:...>'\n 'use strict';\n /*eslint max-len:0*/\n\n var EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/;\n var AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)$/;\n\n module.exports = function autolink(state, silent) {\n var url,\n fullUrl,\n token,\n ch,\n start,\n max,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x3C\n /* < */\n ) {\n return false;\n }\n\n start = state.pos;\n max = state.posMax;\n\n for (;;) {\n if (++pos >= max) return false;\n ch = state.src.charCodeAt(pos);\n if (ch === 0x3C\n /* < */\n ) return false;\n if (ch === 0x3E\n /* > */\n ) break;\n }\n\n url = state.src.slice(start + 1, pos);\n\n if (AUTOLINK_RE.test(url)) {\n fullUrl = state.md.normalizeLink(url);\n\n if (!state.md.validateLink(fullUrl)) {\n return false;\n }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.markup = 'autolink';\n token.info = 'auto';\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += url.length + 2;\n return true;\n }\n\n if (EMAIL_RE.test(url)) {\n fullUrl = state.md.normalizeLink('mailto:' + url);\n\n if (!state.md.validateLink(fullUrl)) {\n return false;\n }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.markup = 'autolink';\n token.info = 'auto';\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += url.length + 2;\n return true;\n }\n\n return false;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvYXV0b2xpbmsuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9hdXRvbGluay5qcz9kZjg0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFByb2Nlc3MgYXV0b2xpbmtzICc8cHJvdG9jb2w6Li4uPidcblxuJ3VzZSBzdHJpY3QnO1xuXG5cbi8qZXNsaW50IG1heC1sZW46MCovXG52YXIgRU1BSUxfUkUgICAgPSAvXihbYS16QS1aMC05LiEjJCUmJyorXFwvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqKSQvO1xudmFyIEFVVE9MSU5LX1JFID0gL14oW2EtekEtWl1bYS16QS1aMC05Ky5cXC1dezEsMzF9KTooW148PlxceDAwLVxceDIwXSopJC87XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBhdXRvbGluayhzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciB1cmwsIGZ1bGxVcmwsIHRva2VuLCBjaCwgc3RhcnQsIG1heCxcbiAgICAgIHBvcyA9IHN0YXRlLnBvcztcblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgzQy8qIDwgKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgc3RhcnQgPSBzdGF0ZS5wb3M7XG4gIG1heCA9IHN0YXRlLnBvc01heDtcblxuICBmb3IgKDs7KSB7XG4gICAgaWYgKCsrcG9zID49IG1heCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuXG4gICAgaWYgKGNoID09PSAweDNDIC8qIDwgKi8pIHJldHVybiBmYWxzZTtcbiAgICBpZiAoY2ggPT09IDB4M0UgLyogPiAqLykgYnJlYWs7XG4gIH1cblxuICB1cmwgPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQgKyAxLCBwb3MpO1xuXG4gIGlmIChBVVRPTElOS19SRS50ZXN0KHVybCkpIHtcbiAgICBmdWxsVXJsID0gc3RhdGUubWQubm9ybWFsaXplTGluayh1cmwpO1xuICAgIGlmICghc3RhdGUubWQudmFsaWRhdGVMaW5rKGZ1bGxVcmwpKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS5wdXNoKCdsaW5rX29wZW4nLCAnYScsIDEpO1xuICAgICAgdG9rZW4uYXR0cnMgICA9IFsgWyAnaHJlZicsIGZ1bGxVcmwgXSBdO1xuICAgICAgdG9rZW4ubWFya3VwICA9ICdhdXRvbGluayc7XG4gICAgICB0b2tlbi5pbmZvICAgID0gJ2F1dG8nO1xuXG4gICAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgndGV4dCcsICcnLCAwKTtcbiAgICAgIHRva2VuLmNvbnRlbnQgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rVGV4dCh1cmwpO1xuXG4gICAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgnbGlua19jbG9zZScsICdhJywgLTEpO1xuICAgICAgdG9rZW4ubWFya3VwICA9ICdhdXRvbGluayc7XG4gICAgICB0b2tlbi5pbmZvICAgID0gJ2F1dG8nO1xuICAgIH1cblxuICAgIHN0YXRlLnBvcyArPSB1cmwubGVuZ3RoICsgMjtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChFTUFJTF9SRS50ZXN0KHVybCkpIHtcbiAgICBmdWxsVXJsID0gc3RhdGUubWQubm9ybWFsaXplTGluaygnbWFpbHRvOicgKyB1cmwpO1xuICAgIGlmICghc3RhdGUubWQudmFsaWRhdGVMaW5rKGZ1bGxVcmwpKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS5wdXNoKCdsaW5rX29wZW4nLCAnYScsIDEpO1xuICAgICAgdG9rZW4uYXR0cnMgICA9IFsgWyAnaHJlZicsIGZ1bGxVcmwgXSBdO1xuICAgICAgdG9rZW4ubWFya3VwICA9ICdhdXRvbGluayc7XG4gICAgICB0b2tlbi5pbmZvICAgID0gJ2F1dG8nO1xuXG4gICAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgndGV4dCcsICcnLCAwKTtcbiAgICAgIHRva2VuLmNvbnRlbnQgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rVGV4dCh1cmwpO1xuXG4gICAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgnbGlua19jbG9zZScsICdhJywgLTEpO1xuICAgICAgdG9rZW4ubWFya3VwICA9ICdhdXRvbGluayc7XG4gICAgICB0b2tlbi5pbmZvICAgID0gJ2F1dG8nO1xuICAgIH1cblxuICAgIHN0YXRlLnBvcyArPSB1cmwubGVuZ3RoICsgMjtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/autolink.js\n");
|
2097 |
|
2098 | }),
|
2099 |
|
2100 | "../../../node_modules/markdown-it/lib/rules_inline/backticks.js":
|
2101 |
|
2102 |
|
2103 |
|
2104 |
|
2105 | (function(module, exports, __webpack_require__) {
|
2106 |
|
2107 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Parse backticks\n 'use strict';\n\n module.exports = function backtick(state, silent) {\n var start,\n max,\n marker,\n token,\n matchStart,\n matchEnd,\n openerLength,\n closerLength,\n pos = state.pos,\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x60\n /* ` */\n ) {\n return false;\n }\n\n start = pos;\n pos++;\n max = state.posMax; // scan marker length\n\n while (pos < max && state.src.charCodeAt(pos) === 0x60\n /* ` */\n ) {\n pos++;\n }\n\n marker = state.src.slice(start, pos);\n openerLength = marker.length;\n\n if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n if (!silent) state.pending += marker;\n state.pos += openerLength;\n return true;\n }\n\n matchStart = matchEnd = pos; // Nothing found in the cache, scan until the end of the line (or until marker is found)\n\n while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n matchEnd = matchStart + 1; // scan marker length\n\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60\n /* ` */\n ) {\n matchEnd++;\n }\n\n closerLength = matchEnd - matchStart;\n\n if (closerLength === openerLength) {\n // Found matching closer length.\n if (!silent) {\n token = state.push('code_inline', 'code', 0);\n token.markup = marker;\n token.content = state.src.slice(pos, matchStart).replace(/\\n/g, ' ').replace(/^ (.+) $/, '$1');\n }\n\n state.pos = matchEnd;\n return true;\n } // Some different length found, put it in cache as upper limit of where closer can be found\n\n\n state.backticks[closerLength] = matchStart;\n } // Scanned through the end, didn't find anything\n\n\n state.backticksScanned = true;\n if (!silent) state.pending += marker;\n state.pos += openerLength;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvYmFja3RpY2tzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvYmFja3RpY2tzLmpzPzgyODEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUGFyc2UgYmFja3RpY2tzXG5cbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJhY2t0aWNrKHN0YXRlLCBzaWxlbnQpIHtcbiAgdmFyIHN0YXJ0LCBtYXgsIG1hcmtlciwgdG9rZW4sIG1hdGNoU3RhcnQsIG1hdGNoRW5kLCBvcGVuZXJMZW5ndGgsIGNsb3Nlckxlbmd0aCxcbiAgICAgIHBvcyA9IHN0YXRlLnBvcyxcbiAgICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcblxuICBpZiAoY2ggIT09IDB4NjAvKiBgICovKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIHN0YXJ0ID0gcG9zO1xuICBwb3MrKztcbiAgbWF4ID0gc3RhdGUucG9zTWF4O1xuXG4gIC8vIHNjYW4gbWFya2VyIGxlbmd0aFxuICB3aGlsZSAocG9zIDwgbWF4ICYmIHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDB4NjAvKiBgICovKSB7IHBvcysrOyB9XG5cbiAgbWFya2VyID0gc3RhdGUuc3JjLnNsaWNlKHN0YXJ0LCBwb3MpO1xuICBvcGVuZXJMZW5ndGggPSBtYXJrZXIubGVuZ3RoO1xuXG4gIGlmIChzdGF0ZS5iYWNrdGlja3NTY2FubmVkICYmIChzdGF0ZS5iYWNrdGlja3Nbb3BlbmVyTGVuZ3RoXSB8fCAwKSA8PSBzdGFydCkge1xuICAgIGlmICghc2lsZW50KSBzdGF0ZS5wZW5kaW5nICs9IG1hcmtlcjtcbiAgICBzdGF0ZS5wb3MgKz0gb3BlbmVyTGVuZ3RoO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbWF0Y2hTdGFydCA9IG1hdGNoRW5kID0gcG9zO1xuXG4gIC8vIE5vdGhpbmcgZm91bmQgaW4gdGhlIGNhY2hlLCBzY2FuIHVudGlsIHRoZSBlbmQgb2YgdGhlIGxpbmUgKG9yIHVudGlsIG1hcmtlciBpcyBmb3VuZClcbiAgd2hpbGUgKChtYXRjaFN0YXJ0ID0gc3RhdGUuc3JjLmluZGV4T2YoJ2AnLCBtYXRjaEVuZCkpICE9PSAtMSkge1xuICAgIG1hdGNoRW5kID0gbWF0Y2hTdGFydCArIDE7XG5cbiAgICAvLyBzY2FuIG1hcmtlciBsZW5ndGhcbiAgICB3aGlsZSAobWF0Y2hFbmQgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQobWF0Y2hFbmQpID09PSAweDYwLyogYCAqLykgeyBtYXRjaEVuZCsrOyB9XG5cbiAgICBjbG9zZXJMZW5ndGggPSBtYXRjaEVuZCAtIG1hdGNoU3RhcnQ7XG5cbiAgICBpZiAoY2xvc2VyTGVuZ3RoID09PSBvcGVuZXJMZW5ndGgpIHtcbiAgICAgIC8vIEZvdW5kIG1hdGNoaW5nIGNsb3NlciBsZW5ndGguXG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICB0b2tlbiAgICAgPSBzdGF0ZS5wdXNoKCdjb2RlX2lubGluZScsICdjb2RlJywgMCk7XG4gICAgICAgIHRva2VuLm1hcmt1cCAgPSBtYXJrZXI7XG4gICAgICAgIHRva2VuLmNvbnRlbnQgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXRjaFN0YXJ0KVxuICAgICAgICAgIC5yZXBsYWNlKC9cXG4vZywgJyAnKVxuICAgICAgICAgIC5yZXBsYWNlKC9eICguKykgJC8sICckMScpO1xuICAgICAgfVxuICAgICAgc3RhdGUucG9zID0gbWF0Y2hFbmQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBTb21lIGRpZmZlcmVudCBsZW5ndGggZm91bmQsIHB1dCBpdCBpbiBjYWNoZSBhcyB1cHBlciBsaW1pdCBvZiB3aGVyZSBjbG9zZXIgY2FuIGJlIGZvdW5kXG4gICAgc3RhdGUuYmFja3RpY2tzW2Nsb3Nlckxlbmd0aF0gPSBtYXRjaFN0YXJ0O1xuICB9XG5cbiAgLy8gU2Nhbm5lZCB0aHJvdWdoIHRoZSBlbmQsIGRpZG4ndCBmaW5kIGFueXRoaW5nXG4gIHN0YXRlLmJhY2t0aWNrc1NjYW5uZWQgPSB0cnVlO1xuXG4gIGlmICghc2lsZW50KSBzdGF0ZS5wZW5kaW5nICs9IG1hcmtlcjtcbiAgc3RhdGUucG9zICs9IG9wZW5lckxlbmd0aDtcbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/backticks.js\n");
|
2108 |
|
2109 | }),
|
2110 |
|
2111 | "../../../node_modules/markdown-it/lib/rules_inline/balance_pairs.js":
|
2112 |
|
2113 |
|
2114 |
|
2115 |
|
2116 | (function(module, exports, __webpack_require__) {
|
2117 |
|
2118 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // For each opening emphasis-like marker find a matching closing one\n //\n 'use strict';\n\n function processDelimiters(state, delimiters) {\n var closerIdx,\n openerIdx,\n closer,\n opener,\n minOpenerIdx,\n newMinOpenerIdx,\n isOddMatch,\n lastJump,\n openersBottom = {},\n max = delimiters.length;\n\n for (closerIdx = 0; closerIdx < max; closerIdx++) {\n closer = delimiters[closerIdx]; // Length is only used for emphasis-specific \"rule of 3\",\n // if it's not defined (in strikethrough or 3rd party plugins),\n // we can default it to 0 to disable those checks.\n //\n\n closer.length = closer.length || 0;\n if (!closer.close) continue; // Previously calculated lower bounds (previous fails)\n // for each marker, each delimiter length modulo 3,\n // and for whether this closer can be an opener;\n // https://github.com/commonmark/cmark/commit/34250e12ccebdc6372b8b49c44fab57c72443460\n\n if (!openersBottom.hasOwnProperty(closer.marker)) {\n openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1];\n }\n\n minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3];\n openerIdx = closerIdx - closer.jump - 1; // avoid crash if `closer.jump` is pointing outside of the array, see #742\n\n if (openerIdx < -1) openerIdx = -1;\n newMinOpenerIdx = openerIdx;\n\n for (; openerIdx > minOpenerIdx; openerIdx -= opener.jump + 1) {\n opener = delimiters[openerIdx];\n if (opener.marker !== closer.marker) continue;\n\n if (opener.open && opener.end < 0) {\n isOddMatch = false; // from spec:\n //\n // If one of the delimiters can both open and close emphasis, then the\n // sum of the lengths of the delimiter runs containing the opening and\n // closing delimiters must not be a multiple of 3 unless both lengths\n // are multiples of 3.\n //\n\n if (opener.close || closer.open) {\n if ((opener.length + closer.length) % 3 === 0) {\n if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n isOddMatch = true;\n }\n }\n }\n\n if (!isOddMatch) {\n // If previous delimiter cannot be an opener, we can safely skip\n // the entire sequence in future checks. This is required to make\n // sure algorithm has linear complexity (see *_*_*_*_*_... case).\n //\n lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? delimiters[openerIdx - 1].jump + 1 : 0;\n closer.jump = closerIdx - openerIdx + lastJump;\n closer.open = false;\n opener.end = closerIdx;\n opener.jump = lastJump;\n opener.close = false;\n newMinOpenerIdx = -1;\n break;\n }\n }\n }\n\n if (newMinOpenerIdx !== -1) {\n // If match for this delimiter run failed, we want to set lower bound for\n // future lookups. This is required to make sure algorithm has linear\n // complexity.\n //\n // See details here:\n // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442\n //\n openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx;\n }\n }\n }\n\n module.exports = function link_pairs(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n processDelimiters(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n processDelimiters(state, tokens_meta[curr].delimiters);\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvYmFsYW5jZV9wYWlycy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL2JhbGFuY2VfcGFpcnMuanM/NGFjZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBGb3IgZWFjaCBvcGVuaW5nIGVtcGhhc2lzLWxpa2UgbWFya2VyIGZpbmQgYSBtYXRjaGluZyBjbG9zaW5nIG9uZVxuLy9cbid1c2Ugc3RyaWN0JztcblxuXG5mdW5jdGlvbiBwcm9jZXNzRGVsaW1pdGVycyhzdGF0ZSwgZGVsaW1pdGVycykge1xuICB2YXIgY2xvc2VySWR4LCBvcGVuZXJJZHgsIGNsb3Nlciwgb3BlbmVyLCBtaW5PcGVuZXJJZHgsIG5ld01pbk9wZW5lcklkeCxcbiAgICAgIGlzT2RkTWF0Y2gsIGxhc3RKdW1wLFxuICAgICAgb3BlbmVyc0JvdHRvbSA9IHt9LFxuICAgICAgbWF4ID0gZGVsaW1pdGVycy5sZW5ndGg7XG5cbiAgZm9yIChjbG9zZXJJZHggPSAwOyBjbG9zZXJJZHggPCBtYXg7IGNsb3NlcklkeCsrKSB7XG4gICAgY2xvc2VyID0gZGVsaW1pdGVyc1tjbG9zZXJJZHhdO1xuXG4gICAgLy8gTGVuZ3RoIGlzIG9ubHkgdXNlZCBmb3IgZW1waGFzaXMtc3BlY2lmaWMgXCJydWxlIG9mIDNcIixcbiAgICAvLyBpZiBpdCdzIG5vdCBkZWZpbmVkIChpbiBzdHJpa2V0aHJvdWdoIG9yIDNyZCBwYXJ0eSBwbHVnaW5zKSxcbiAgICAvLyB3ZSBjYW4gZGVmYXVsdCBpdCB0byAwIHRvIGRpc2FibGUgdGhvc2UgY2hlY2tzLlxuICAgIC8vXG4gICAgY2xvc2VyLmxlbmd0aCA9IGNsb3Nlci5sZW5ndGggfHwgMDtcblxuICAgIGlmICghY2xvc2VyLmNsb3NlKSBjb250aW51ZTtcblxuICAgIC8vIFByZXZpb3VzbHkgY2FsY3VsYXRlZCBsb3dlciBib3VuZHMgKHByZXZpb3VzIGZhaWxzKVxuICAgIC8vIGZvciBlYWNoIG1hcmtlciwgZWFjaCBkZWxpbWl0ZXIgbGVuZ3RoIG1vZHVsbyAzLFxuICAgIC8vIGFuZCBmb3Igd2hldGhlciB0aGlzIGNsb3NlciBjYW4gYmUgYW4gb3BlbmVyO1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jb21tb25tYXJrL2NtYXJrL2NvbW1pdC8zNDI1MGUxMmNjZWJkYzYzNzJiOGI0OWM0NGZhYjU3YzcyNDQzNDYwXG4gICAgaWYgKCFvcGVuZXJzQm90dG9tLmhhc093blByb3BlcnR5KGNsb3Nlci5tYXJrZXIpKSB7XG4gICAgICBvcGVuZXJzQm90dG9tW2Nsb3Nlci5tYXJrZXJdID0gWyAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xIF07XG4gICAgfVxuXG4gICAgbWluT3BlbmVySWR4ID0gb3BlbmVyc0JvdHRvbVtjbG9zZXIubWFya2VyXVsoY2xvc2VyLm9wZW4gPyAzIDogMCkgKyAoY2xvc2VyLmxlbmd0aCAlIDMpXTtcblxuICAgIG9wZW5lcklkeCA9IGNsb3NlcklkeCAtIGNsb3Nlci5qdW1wIC0gMTtcblxuICAgIC8vIGF2b2lkIGNyYXNoIGlmIGBjbG9zZXIuanVtcGAgaXMgcG9pbnRpbmcgb3V0c2lkZSBvZiB0aGUgYXJyYXksIHNlZSAjNzQyXG4gICAgaWYgKG9wZW5lcklkeCA8IC0xKSBvcGVuZXJJZHggPSAtMTtcblxuICAgIG5ld01pbk9wZW5lcklkeCA9IG9wZW5lcklkeDtcblxuICAgIGZvciAoOyBvcGVuZXJJZHggPiBtaW5PcGVuZXJJZHg7IG9wZW5lcklkeCAtPSBvcGVuZXIuanVtcCArIDEpIHtcbiAgICAgIG9wZW5lciA9IGRlbGltaXRlcnNbb3BlbmVySWR4XTtcblxuICAgICAgaWYgKG9wZW5lci5tYXJrZXIgIT09IGNsb3Nlci5tYXJrZXIpIGNvbnRpbnVlO1xuXG4gICAgICBpZiAob3BlbmVyLm9wZW4gJiYgb3BlbmVyLmVuZCA8IDApIHtcblxuICAgICAgICBpc09kZE1hdGNoID0gZmFsc2U7XG5cbiAgICAgICAgLy8gZnJvbSBzcGVjOlxuICAgICAgICAvL1xuICAgICAgICAvLyBJZiBvbmUgb2YgdGhlIGRlbGltaXRlcnMgY2FuIGJvdGggb3BlbiBhbmQgY2xvc2UgZW1waGFzaXMsIHRoZW4gdGhlXG4gICAgICAgIC8vIHN1bSBvZiB0aGUgbGVuZ3RocyBvZiB0aGUgZGVsaW1pdGVyIHJ1bnMgY29udGFpbmluZyB0aGUgb3BlbmluZyBhbmRcbiAgICAgICAgLy8gY2xvc2luZyBkZWxpbWl0ZXJzIG11c3Qgbm90IGJlIGEgbXVsdGlwbGUgb2YgMyB1bmxlc3MgYm90aCBsZW5ndGhzXG4gICAgICAgIC8vIGFyZSBtdWx0aXBsZXMgb2YgMy5cbiAgICAgICAgLy9cbiAgICAgICAgaWYgKG9wZW5lci5jbG9zZSB8fCBjbG9zZXIub3Blbikge1xuICAgICAgICAgIGlmICgob3BlbmVyLmxlbmd0aCArIGNsb3Nlci5sZW5ndGgpICUgMyA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKG9wZW5lci5sZW5ndGggJSAzICE9PSAwIHx8IGNsb3Nlci5sZW5ndGggJSAzICE9PSAwKSB7XG4gICAgICAgICAgICAgIGlzT2RkTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNPZGRNYXRjaCkge1xuICAgICAgICAgIC8vIElmIHByZXZpb3VzIGRlbGltaXRlciBjYW5ub3QgYmUgYW4gb3BlbmVyLCB3ZSBjYW4gc2FmZWx5IHNraXBcbiAgICAgICAgICAvLyB0aGUgZW50aXJlIHNlcXVlbmNlIGluIGZ1dHVyZSBjaGVja3MuIFRoaXMgaXMgcmVxdWlyZWQgdG8gbWFrZVxuICAgICAgICAgIC8vIHN1cmUgYWxnb3JpdGhtIGhhcyBsaW5lYXIgY29tcGxleGl0eSAoc2VlICpfKl8qXypfKl8uLi4gY2FzZSkuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBsYXN0SnVtcCA9IG9wZW5lcklkeCA+IDAgJiYgIWRlbGltaXRlcnNbb3BlbmVySWR4IC0gMV0ub3BlbiA/XG4gICAgICAgICAgICBkZWxpbWl0ZXJzW29wZW5lcklkeCAtIDFdLmp1bXAgKyAxIDpcbiAgICAgICAgICAgIDA7XG5cbiAgICAgICAgICBjbG9zZXIuanVtcCAgPSBjbG9zZXJJZHggLSBvcGVuZXJJZHggKyBsYXN0SnVtcDtcbiAgICAgICAgICBjbG9zZXIub3BlbiAgPSBmYWxzZTtcbiAgICAgICAgICBvcGVuZXIuZW5kICAgPSBjbG9zZXJJZHg7XG4gICAgICAgICAgb3BlbmVyLmp1bXAgID0gbGFzdEp1bXA7XG4gICAgICAgICAgb3BlbmVyLmNsb3NlID0gZmFsc2U7XG4gICAgICAgICAgbmV3TWluT3BlbmVySWR4ID0gLTE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmV3TWluT3BlbmVySWR4ICE9PSAtMSkge1xuICAgICAgLy8gSWYgbWF0Y2ggZm9yIHRoaXMgZGVsaW1pdGVyIHJ1biBmYWlsZWQsIHdlIHdhbnQgdG8gc2V0IGxvd2VyIGJvdW5kIGZvclxuICAgICAgLy8gZnV0dXJlIGxvb2t1cHMuIFRoaXMgaXMgcmVxdWlyZWQgdG8gbWFrZSBzdXJlIGFsZ29yaXRobSBoYXMgbGluZWFyXG4gICAgICAvLyBjb21wbGV4aXR5LlxuICAgICAgLy9cbiAgICAgIC8vIFNlZSBkZXRhaWxzIGhlcmU6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vY29tbW9ubWFyay9jbWFyay9pc3N1ZXMvMTc4I2lzc3VlY29tbWVudC0yNzA0MTc0NDJcbiAgICAgIC8vXG4gICAgICBvcGVuZXJzQm90dG9tW2Nsb3Nlci5tYXJrZXJdWyhjbG9zZXIub3BlbiA/IDMgOiAwKSArICgoY2xvc2VyLmxlbmd0aCB8fCAwKSAlIDMpXSA9IG5ld01pbk9wZW5lcklkeDtcbiAgICB9XG4gIH1cbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpbmtfcGFpcnMoc3RhdGUpIHtcbiAgdmFyIGN1cnIsXG4gICAgICB0b2tlbnNfbWV0YSA9IHN0YXRlLnRva2Vuc19tZXRhLFxuICAgICAgbWF4ID0gc3RhdGUudG9rZW5zX21ldGEubGVuZ3RoO1xuXG4gIHByb2Nlc3NEZWxpbWl0ZXJzKHN0YXRlLCBzdGF0ZS5kZWxpbWl0ZXJzKTtcblxuICBmb3IgKGN1cnIgPSAwOyBjdXJyIDwgbWF4OyBjdXJyKyspIHtcbiAgICBpZiAodG9rZW5zX21ldGFbY3Vycl0gJiYgdG9rZW5zX21ldGFbY3Vycl0uZGVsaW1pdGVycykge1xuICAgICAgcHJvY2Vzc0RlbGltaXRlcnMoc3RhdGUsIHRva2Vuc19tZXRhW2N1cnJdLmRlbGltaXRlcnMpO1xuICAgIH1cbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/balance_pairs.js\n");
|
2119 |
|
2120 | }),
|
2121 |
|
2122 | "../../../node_modules/markdown-it/lib/rules_inline/emphasis.js":
|
2123 |
|
2124 |
|
2125 |
|
2126 |
|
2127 | (function(module, exports, __webpack_require__) {
|
2128 |
|
2129 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process *this* and _that_\n //\n 'use strict'; // Insert each marker as a separate text token, and add it to delimiter list\n //\n\n module.exports.tokenize = function emphasis(state, silent) {\n var i,\n scanned,\n token,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) {\n return false;\n }\n\n if (marker !== 0x5F\n /* _ */\n && marker !== 0x2A\n /* * */\n ) {\n return false;\n }\n\n scanned = state.scanDelims(state.pos, marker === 0x2A);\n\n for (i = 0; i < scanned.length; i++) {\n token = state.push('text', '', 0);\n token.content = String.fromCharCode(marker);\n state.delimiters.push({\n // Char code of the starting marker (number).\n //\n marker: marker,\n // Total length of these series of delimiters.\n //\n length: scanned.length,\n // An amount of characters before this one that's equivalent to\n // current one. In plain English: if this delimiter does not open\n // an emphasis, neither do previous `jump` characters.\n //\n // Used to skip sequences like \"*****\" in one step, for 1st asterisk\n // value will be 0, for 2nd it's 1 and so on.\n //\n jump: i,\n // A position of the token this delimiter corresponds to.\n //\n token: state.tokens.length - 1,\n // If this delimiter is matched as a valid opener, `end` will be\n // equal to its position, otherwise it's `-1`.\n //\n end: -1,\n // Boolean flags that determine if this delimiter could open or close\n // an emphasis.\n //\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n return true;\n };\n\n function postProcess(state, delimiters) {\n var i,\n startDelim,\n endDelim,\n token,\n ch,\n isStrong,\n max = delimiters.length;\n\n for (i = max - 1; i >= 0; i--) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x5F\n /* _ */\n && startDelim.marker !== 0x2A\n /* * */\n ) {\n continue;\n } // Process only opening markers\n\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end]; // If the previous delimiter has the same marker and is adjacent to this one,\n // merge those into one strong delimiter.\n //\n // `<em><em>whatever</em></em>` -> `<strong>whatever</strong>`\n //\n\n isStrong = i > 0 && delimiters[i - 1].end === startDelim.end + 1 && delimiters[i - 1].token === startDelim.token - 1 && delimiters[startDelim.end + 1].token === endDelim.token + 1 && delimiters[i - 1].marker === startDelim.marker;\n ch = String.fromCharCode(startDelim.marker);\n token = state.tokens[startDelim.token];\n token.type = isStrong ? 'strong_open' : 'em_open';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = 1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n token = state.tokens[endDelim.token];\n token.type = isStrong ? 'strong_close' : 'em_close';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = -1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n\n if (isStrong) {\n state.tokens[delimiters[i - 1].token].content = '';\n state.tokens[delimiters[startDelim.end + 1].token].content = '';\n i--;\n }\n }\n } // Walk through delimiter list and replace text tokens with tags\n //\n\n\n module.exports.postProcess = function emphasis(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n postProcess(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters);\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvZW1waGFzaXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9lbXBoYXNpcy5qcz84ZmYwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFByb2Nlc3MgKnRoaXMqIGFuZCBfdGhhdF9cbi8vXG4ndXNlIHN0cmljdCc7XG5cblxuLy8gSW5zZXJ0IGVhY2ggbWFya2VyIGFzIGEgc2VwYXJhdGUgdGV4dCB0b2tlbiwgYW5kIGFkZCBpdCB0byBkZWxpbWl0ZXIgbGlzdFxuLy9cbm1vZHVsZS5leHBvcnRzLnRva2VuaXplID0gZnVuY3Rpb24gZW1waGFzaXMoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgaSwgc2Nhbm5lZCwgdG9rZW4sXG4gICAgICBzdGFydCA9IHN0YXRlLnBvcyxcbiAgICAgIG1hcmtlciA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHN0YXJ0KTtcblxuICBpZiAoc2lsZW50KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChtYXJrZXIgIT09IDB4NUYgLyogXyAqLyAmJiBtYXJrZXIgIT09IDB4MkEgLyogKiAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBzY2FubmVkID0gc3RhdGUuc2NhbkRlbGltcyhzdGF0ZS5wb3MsIG1hcmtlciA9PT0gMHgyQSk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHNjYW5uZWQubGVuZ3RoOyBpKyspIHtcbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgndGV4dCcsICcnLCAwKTtcbiAgICB0b2tlbi5jb250ZW50ID0gU3RyaW5nLmZyb21DaGFyQ29kZShtYXJrZXIpO1xuXG4gICAgc3RhdGUuZGVsaW1pdGVycy5wdXNoKHtcbiAgICAgIC8vIENoYXIgY29kZSBvZiB0aGUgc3RhcnRpbmcgbWFya2VyIChudW1iZXIpLlxuICAgICAgLy9cbiAgICAgIG1hcmtlcjogbWFya2VyLFxuXG4gICAgICAvLyBUb3RhbCBsZW5ndGggb2YgdGhlc2Ugc2VyaWVzIG9mIGRlbGltaXRlcnMuXG4gICAgICAvL1xuICAgICAgbGVuZ3RoOiBzY2FubmVkLmxlbmd0aCxcblxuICAgICAgLy8gQW4gYW1vdW50IG9mIGNoYXJhY3RlcnMgYmVmb3JlIHRoaXMgb25lIHRoYXQncyBlcXVpdmFsZW50IHRvXG4gICAgICAvLyBjdXJyZW50IG9uZS4gSW4gcGxhaW4gRW5nbGlzaDogaWYgdGhpcyBkZWxpbWl0ZXIgZG9lcyBub3Qgb3BlblxuICAgICAgLy8gYW4gZW1waGFzaXMsIG5laXRoZXIgZG8gcHJldmlvdXMgYGp1bXBgIGNoYXJhY3RlcnMuXG4gICAgICAvL1xuICAgICAgLy8gVXNlZCB0byBza2lwIHNlcXVlbmNlcyBsaWtlIFwiKioqKipcIiBpbiBvbmUgc3RlcCwgZm9yIDFzdCBhc3Rlcmlza1xuICAgICAgLy8gdmFsdWUgd2lsbCBiZSAwLCBmb3IgMm5kIGl0J3MgMSBhbmQgc28gb24uXG4gICAgICAvL1xuICAgICAganVtcDogICBpLFxuXG4gICAgICAvLyBBIHBvc2l0aW9uIG9mIHRoZSB0b2tlbiB0aGlzIGRlbGltaXRlciBjb3JyZXNwb25kcyB0by5cbiAgICAgIC8vXG4gICAgICB0b2tlbjogIHN0YXRlLnRva2Vucy5sZW5ndGggLSAxLFxuXG4gICAgICAvLyBJZiB0aGlzIGRlbGltaXRlciBpcyBtYXRjaGVkIGFzIGEgdmFsaWQgb3BlbmVyLCBgZW5kYCB3aWxsIGJlXG4gICAgICAvLyBlcXVhbCB0byBpdHMgcG9zaXRpb24sIG90aGVyd2lzZSBpdCdzIGAtMWAuXG4gICAgICAvL1xuICAgICAgZW5kOiAgICAtMSxcblxuICAgICAgLy8gQm9vbGVhbiBmbGFncyB0aGF0IGRldGVybWluZSBpZiB0aGlzIGRlbGltaXRlciBjb3VsZCBvcGVuIG9yIGNsb3NlXG4gICAgICAvLyBhbiBlbXBoYXNpcy5cbiAgICAgIC8vXG4gICAgICBvcGVuOiAgIHNjYW5uZWQuY2FuX29wZW4sXG4gICAgICBjbG9zZTogIHNjYW5uZWQuY2FuX2Nsb3NlXG4gICAgfSk7XG4gIH1cblxuICBzdGF0ZS5wb3MgKz0gc2Nhbm5lZC5sZW5ndGg7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5cbmZ1bmN0aW9uIHBvc3RQcm9jZXNzKHN0YXRlLCBkZWxpbWl0ZXJzKSB7XG4gIHZhciBpLFxuICAgICAgc3RhcnREZWxpbSxcbiAgICAgIGVuZERlbGltLFxuICAgICAgdG9rZW4sXG4gICAgICBjaCxcbiAgICAgIGlzU3Ryb25nLFxuICAgICAgbWF4ID0gZGVsaW1pdGVycy5sZW5ndGg7XG5cbiAgZm9yIChpID0gbWF4IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBzdGFydERlbGltID0gZGVsaW1pdGVyc1tpXTtcblxuICAgIGlmIChzdGFydERlbGltLm1hcmtlciAhPT0gMHg1Ri8qIF8gKi8gJiYgc3RhcnREZWxpbS5tYXJrZXIgIT09IDB4MkEvKiAqICovKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIG9ubHkgb3BlbmluZyBtYXJrZXJzXG4gICAgaWYgKHN0YXJ0RGVsaW0uZW5kID09PSAtMSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZW5kRGVsaW0gPSBkZWxpbWl0ZXJzW3N0YXJ0RGVsaW0uZW5kXTtcblxuICAgIC8vIElmIHRoZSBwcmV2aW91cyBkZWxpbWl0ZXIgaGFzIHRoZSBzYW1lIG1hcmtlciBhbmQgaXMgYWRqYWNlbnQgdG8gdGhpcyBvbmUsXG4gICAgLy8gbWVyZ2UgdGhvc2UgaW50byBvbmUgc3Ryb25nIGRlbGltaXRlci5cbiAgICAvL1xuICAgIC8vIGA8ZW0+PGVtPndoYXRldmVyPC9lbT48L2VtPmAgLT4gYDxzdHJvbmc+d2hhdGV2ZXI8L3N0cm9uZz5gXG4gICAgLy9cbiAgICBpc1N0cm9uZyA9IGkgPiAwICYmXG4gICAgICAgICAgICAgICBkZWxpbWl0ZXJzW2kgLSAxXS5lbmQgPT09IHN0YXJ0RGVsaW0uZW5kICsgMSAmJlxuICAgICAgICAgICAgICAgZGVsaW1pdGVyc1tpIC0gMV0udG9rZW4gPT09IHN0YXJ0RGVsaW0udG9rZW4gLSAxICYmXG4gICAgICAgICAgICAgICBkZWxpbWl0ZXJzW3N0YXJ0RGVsaW0uZW5kICsgMV0udG9rZW4gPT09IGVuZERlbGltLnRva2VuICsgMSAmJlxuICAgICAgICAgICAgICAgZGVsaW1pdGVyc1tpIC0gMV0ubWFya2VyID09PSBzdGFydERlbGltLm1hcmtlcjtcblxuICAgIGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShzdGFydERlbGltLm1hcmtlcik7XG5cbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUudG9rZW5zW3N0YXJ0RGVsaW0udG9rZW5dO1xuICAgIHRva2VuLnR5cGUgICAgPSBpc1N0cm9uZyA/ICdzdHJvbmdfb3BlbicgOiAnZW1fb3Blbic7XG4gICAgdG9rZW4udGFnICAgICA9IGlzU3Ryb25nID8gJ3N0cm9uZycgOiAnZW0nO1xuICAgIHRva2VuLm5lc3RpbmcgPSAxO1xuICAgIHRva2VuLm1hcmt1cCAgPSBpc1N0cm9uZyA/IGNoICsgY2ggOiBjaDtcbiAgICB0b2tlbi5jb250ZW50ID0gJyc7XG5cbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUudG9rZW5zW2VuZERlbGltLnRva2VuXTtcbiAgICB0b2tlbi50eXBlICAgID0gaXNTdHJvbmcgPyAnc3Ryb25nX2Nsb3NlJyA6ICdlbV9jbG9zZSc7XG4gICAgdG9rZW4udGFnICAgICA9IGlzU3Ryb25nID8gJ3N0cm9uZycgOiAnZW0nO1xuICAgIHRva2VuLm5lc3RpbmcgPSAtMTtcbiAgICB0b2tlbi5tYXJrdXAgID0gaXNTdHJvbmcgPyBjaCArIGNoIDogY2g7XG4gICAgdG9rZW4uY29udGVudCA9ICcnO1xuXG4gICAgaWYgKGlzU3Ryb25nKSB7XG4gICAgICBzdGF0ZS50b2tlbnNbZGVsaW1pdGVyc1tpIC0gMV0udG9rZW5dLmNvbnRlbnQgPSAnJztcbiAgICAgIHN0YXRlLnRva2Vuc1tkZWxpbWl0ZXJzW3N0YXJ0RGVsaW0uZW5kICsgMV0udG9rZW5dLmNvbnRlbnQgPSAnJztcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBXYWxrIHRocm91Z2ggZGVsaW1pdGVyIGxpc3QgYW5kIHJlcGxhY2UgdGV4dCB0b2tlbnMgd2l0aCB0YWdzXG4vL1xubW9kdWxlLmV4cG9ydHMucG9zdFByb2Nlc3MgPSBmdW5jdGlvbiBlbXBoYXNpcyhzdGF0ZSkge1xuICB2YXIgY3VycixcbiAgICAgIHRva2Vuc19tZXRhID0gc3RhdGUudG9rZW5zX21ldGEsXG4gICAgICBtYXggPSBzdGF0ZS50b2tlbnNfbWV0YS5sZW5ndGg7XG5cbiAgcG9zdFByb2Nlc3Moc3RhdGUsIHN0YXRlLmRlbGltaXRlcnMpO1xuXG4gIGZvciAoY3VyciA9IDA7IGN1cnIgPCBtYXg7IGN1cnIrKykge1xuICAgIGlmICh0b2tlbnNfbWV0YVtjdXJyXSAmJiB0b2tlbnNfbWV0YVtjdXJyXS5kZWxpbWl0ZXJzKSB7XG4gICAgICBwb3N0UHJvY2VzcyhzdGF0ZSwgdG9rZW5zX21ldGFbY3Vycl0uZGVsaW1pdGVycyk7XG4gICAgfVxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEvQkE7QUFpQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/emphasis.js\n");
|
2130 |
|
2131 | }),
|
2132 |
|
2133 | "../../../node_modules/markdown-it/lib/rules_inline/entity.js":
|
2134 |
|
2135 |
|
2136 |
|
2137 |
|
2138 | (function(module, exports, __webpack_require__) {
|
2139 |
|
2140 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process html entity - {, ¯, ", ...\n 'use strict';\n\n var entities = __webpack_require__(/*! ../common/entities */ \"../../../node_modules/markdown-it/lib/common/entities.js\");\n\n var has = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").has;\n\n var isValidEntityCode = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isValidEntityCode;\n\n var fromCodePoint = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").fromCodePoint;\n\n var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;\n var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\n module.exports = function entity(state, silent) {\n var ch,\n code,\n match,\n pos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x26\n /* & */\n ) {\n return false;\n }\n\n if (pos + 1 < max) {\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 0x23\n /* # */\n ) {\n match = state.src.slice(pos).match(DIGITAL_RE);\n\n if (match) {\n if (!silent) {\n code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n }\n\n state.pos += match[0].length;\n return true;\n }\n } else {\n match = state.src.slice(pos).match(NAMED_RE);\n\n if (match) {\n if (has(entities, match[1])) {\n if (!silent) {\n state.pending += entities[match[1]];\n }\n\n state.pos += match[0].length;\n return true;\n }\n }\n }\n }\n\n if (!silent) {\n state.pending += '&';\n }\n\n state.pos++;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvZW50aXR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvZW50aXR5LmpzP2U2NzciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUHJvY2VzcyBodG1sIGVudGl0eSAtICYjMTIzOywgJiN4QUY7LCAmcXVvdDssIC4uLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbnRpdGllcyAgICAgICAgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi9lbnRpdGllcycpO1xudmFyIGhhcyAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaGFzO1xudmFyIGlzVmFsaWRFbnRpdHlDb2RlID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNWYWxpZEVudGl0eUNvZGU7XG52YXIgZnJvbUNvZGVQb2ludCAgICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5mcm9tQ29kZVBvaW50O1xuXG5cbnZhciBESUdJVEFMX1JFID0gL14mIygoPzp4W2EtZjAtOV17MSw2fXxbMC05XXsxLDd9KSk7L2k7XG52YXIgTkFNRURfUkUgICA9IC9eJihbYS16XVthLXowLTldezEsMzF9KTsvaTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVudGl0eShzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBjaCwgY29kZSwgbWF0Y2gsIHBvcyA9IHN0YXRlLnBvcywgbWF4ID0gc3RhdGUucG9zTWF4O1xuXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDI2LyogJiAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAocG9zICsgMSA8IG1heCkge1xuICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zICsgMSk7XG5cbiAgICBpZiAoY2ggPT09IDB4MjMgLyogIyAqLykge1xuICAgICAgbWF0Y2ggPSBzdGF0ZS5zcmMuc2xpY2UocG9zKS5tYXRjaChESUdJVEFMX1JFKTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICAgIGNvZGUgPSBtYXRjaFsxXVswXS50b0xvd2VyQ2FzZSgpID09PSAneCcgPyBwYXJzZUludChtYXRjaFsxXS5zbGljZSgxKSwgMTYpIDogcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgICAgICAgICBzdGF0ZS5wZW5kaW5nICs9IGlzVmFsaWRFbnRpdHlDb2RlKGNvZGUpID8gZnJvbUNvZGVQb2ludChjb2RlKSA6IGZyb21Db2RlUG9pbnQoMHhGRkZEKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWF0Y2ggPSBzdGF0ZS5zcmMuc2xpY2UocG9zKS5tYXRjaChOQU1FRF9SRSk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgaWYgKGhhcyhlbnRpdGllcywgbWF0Y2hbMV0pKSB7XG4gICAgICAgICAgaWYgKCFzaWxlbnQpIHsgc3RhdGUucGVuZGluZyArPSBlbnRpdGllc1ttYXRjaFsxXV07IH1cbiAgICAgICAgICBzdGF0ZS5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFzaWxlbnQpIHsgc3RhdGUucGVuZGluZyArPSAnJic7IH1cbiAgc3RhdGUucG9zKys7XG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/entity.js\n");
|
2141 |
|
2142 | }),
|
2143 |
|
2144 | "../../../node_modules/markdown-it/lib/rules_inline/escape.js":
|
2145 |
|
2146 |
|
2147 |
|
2148 |
|
2149 | (function(module, exports, __webpack_require__) {
|
2150 |
|
2151 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process escaped chars and hardbreaks\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n var ESCAPED = [];\n\n for (var i = 0; i < 256; i++) {\n ESCAPED.push(0);\n }\n\n '\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'.split('').forEach(function (ch) {\n ESCAPED[ch.charCodeAt(0)] = 1;\n });\n\n module.exports = function escape(state, silent) {\n var ch,\n pos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x5C\n /* \\ */\n ) {\n return false;\n }\n\n pos++;\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch < 256 && ESCAPED[ch] !== 0) {\n if (!silent) {\n state.pending += state.src[pos];\n }\n\n state.pos += 2;\n return true;\n }\n\n if (ch === 0x0A) {\n if (!silent) {\n state.push('hardbreak', 'br', 0);\n }\n\n pos++; // skip leading whitespaces from next line\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n\n pos++;\n }\n\n state.pos = pos;\n return true;\n }\n }\n\n if (!silent) {\n state.pending += '\\\\';\n }\n\n state.pos++;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvZXNjYXBlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvZXNjYXBlLmpzPzI2ZGEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUHJvY2VzcyBlc2NhcGVkIGNoYXJzIGFuZCBoYXJkYnJlYWtzXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGlzU3BhY2UgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1NwYWNlO1xuXG52YXIgRVNDQVBFRCA9IFtdO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7IEVTQ0FQRUQucHVzaCgwKTsgfVxuXG4nXFxcXCFcIiMkJSZcXCcoKSorLC4vOjs8PT4/QFtdXl9ge3x9fi0nXG4gIC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoY2gpIHsgRVNDQVBFRFtjaC5jaGFyQ29kZUF0KDApXSA9IDE7IH0pO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZXNjYXBlKHN0YXRlLCBzaWxlbnQpIHtcbiAgdmFyIGNoLCBwb3MgPSBzdGF0ZS5wb3MsIG1heCA9IHN0YXRlLnBvc01heDtcblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHg1Qy8qIFxcICovKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIHBvcysrO1xuXG4gIGlmIChwb3MgPCBtYXgpIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICBpZiAoY2ggPCAyNTYgJiYgRVNDQVBFRFtjaF0gIT09IDApIHtcbiAgICAgIGlmICghc2lsZW50KSB7IHN0YXRlLnBlbmRpbmcgKz0gc3RhdGUuc3JjW3Bvc107IH1cbiAgICAgIHN0YXRlLnBvcyArPSAyO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNoID09PSAweDBBKSB7XG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBzdGF0ZS5wdXNoKCdoYXJkYnJlYWsnLCAnYnInLCAwKTtcbiAgICAgIH1cblxuICAgICAgcG9zKys7XG4gICAgICAvLyBza2lwIGxlYWRpbmcgd2hpdGVzcGFjZXMgZnJvbSBuZXh0IGxpbmVcbiAgICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuICAgICAgICBpZiAoIWlzU3BhY2UoY2gpKSB7IGJyZWFrOyB9XG4gICAgICAgIHBvcysrO1xuICAgICAgfVxuXG4gICAgICBzdGF0ZS5wb3MgPSBwb3M7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXNpbGVudCkgeyBzdGF0ZS5wZW5kaW5nICs9ICdcXFxcJzsgfVxuICBzdGF0ZS5wb3MrKztcbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/escape.js\n");
|
2152 |
|
2153 | }),
|
2154 |
|
2155 | "../../../node_modules/markdown-it/lib/rules_inline/html_inline.js":
|
2156 |
|
2157 |
|
2158 |
|
2159 |
|
2160 | (function(module, exports, __webpack_require__) {
|
2161 |
|
2162 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process html tags\n 'use strict';\n\n var HTML_TAG_RE = __webpack_require__(/*! ../common/html_re */ \"../../../node_modules/markdown-it/lib/common/html_re.js\").HTML_TAG_RE;\n\n function isLetter(ch) {\n /*eslint no-bitwise:0*/\n var lc = ch | 0x20; // to lower case\n\n return lc >= 0x61\n /* a */\n && lc <= 0x7a\n /* z */\n ;\n }\n\n module.exports = function html_inline(state, silent) {\n var ch,\n match,\n max,\n token,\n pos = state.pos;\n\n if (!state.md.options.html) {\n return false;\n } // Check start\n\n\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x3C\n /* < */\n || pos + 2 >= max) {\n return false;\n } // Quick fail on second char\n\n\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch !== 0x21\n /* ! */\n && ch !== 0x3F\n /* ? */\n && ch !== 0x2F\n /* / */\n && !isLetter(ch)) {\n return false;\n }\n\n match = state.src.slice(pos).match(HTML_TAG_RE);\n\n if (!match) {\n return false;\n }\n\n if (!silent) {\n token = state.push('html_inline', '', 0);\n token.content = state.src.slice(pos, pos + match[0].length);\n }\n\n state.pos += match[0].length;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvaHRtbF9pbmxpbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9odG1sX2lubGluZS5qcz9kYjY4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFByb2Nlc3MgaHRtbCB0YWdzXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgSFRNTF9UQUdfUkUgPSByZXF1aXJlKCcuLi9jb21tb24vaHRtbF9yZScpLkhUTUxfVEFHX1JFO1xuXG5cbmZ1bmN0aW9uIGlzTGV0dGVyKGNoKSB7XG4gIC8qZXNsaW50IG5vLWJpdHdpc2U6MCovXG4gIHZhciBsYyA9IGNoIHwgMHgyMDsgLy8gdG8gbG93ZXIgY2FzZVxuICByZXR1cm4gKGxjID49IDB4NjEvKiBhICovKSAmJiAobGMgPD0gMHg3YS8qIHogKi8pO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaHRtbF9pbmxpbmUoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgY2gsIG1hdGNoLCBtYXgsIHRva2VuLFxuICAgICAgcG9zID0gc3RhdGUucG9zO1xuXG4gIGlmICghc3RhdGUubWQub3B0aW9ucy5odG1sKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIENoZWNrIHN0YXJ0XG4gIG1heCA9IHN0YXRlLnBvc01heDtcbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgIT09IDB4M0MvKiA8ICovIHx8XG4gICAgICBwb3MgKyAyID49IG1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIFF1aWNrIGZhaWwgb24gc2Vjb25kIGNoYXJcbiAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MgKyAxKTtcbiAgaWYgKGNoICE9PSAweDIxLyogISAqLyAmJlxuICAgICAgY2ggIT09IDB4M0YvKiA/ICovICYmXG4gICAgICBjaCAhPT0gMHgyRi8qIC8gKi8gJiZcbiAgICAgICFpc0xldHRlcihjaCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBtYXRjaCA9IHN0YXRlLnNyYy5zbGljZShwb3MpLm1hdGNoKEhUTUxfVEFHX1JFKTtcbiAgaWYgKCFtYXRjaCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoIXNpbGVudCkge1xuICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS5wdXNoKCdodG1sX2lubGluZScsICcnLCAwKTtcbiAgICB0b2tlbi5jb250ZW50ID0gc3RhdGUuc3JjLnNsaWNlKHBvcywgcG9zICsgbWF0Y2hbMF0ubGVuZ3RoKTtcbiAgfVxuICBzdGF0ZS5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICByZXR1cm4gdHJ1ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/html_inline.js\n");
|
2163 |
|
2164 | }),
|
2165 |
|
2166 | "../../../node_modules/markdown-it/lib/rules_inline/image.js":
|
2167 |
|
2168 |
|
2169 |
|
2170 |
|
2171 | (function(module, exports, __webpack_require__) {
|
2172 |
|
2173 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process ![image](<src> \"title\")\n 'use strict';\n\n var normalizeReference = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").normalizeReference;\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function image(state, silent) {\n var attrs,\n code,\n content,\n label,\n labelEnd,\n labelStart,\n pos,\n ref,\n res,\n title,\n token,\n tokens,\n start,\n href = '',\n oldPos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(state.pos) !== 0x21\n /* ! */\n ) {\n return false;\n }\n\n if (state.src.charCodeAt(state.pos + 1) !== 0x5B\n /* [ */\n ) {\n return false;\n }\n\n labelStart = state.pos + 2;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false); // parser failed to find ']', so it's not a valid link\n\n if (labelEnd < 0) {\n return false;\n }\n\n pos = labelEnd + 1;\n\n if (pos < max && state.src.charCodeAt(pos) === 0x28\n /* ( */\n ) {\n //\n // Inline link\n //\n // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n pos++;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n\n if (pos >= max) {\n return false;\n } // [link]( <href> \"title\" )\n // ^^^^^^ parsing link destination\n\n\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n } // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n\n\n start = pos;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n } // [link]( <href> \"title\" )\n // ^^^^^^^ parsing link title\n\n\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos; // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29\n /* ) */\n ) {\n state.pos = oldPos;\n return false;\n }\n\n pos++;\n } else {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') {\n return false;\n }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B\n /* [ */\n ) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n } // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n\n\n if (!label) {\n label = state.src.slice(labelStart, labelEnd);\n }\n\n ref = state.env.references[normalizeReference(label)];\n\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n\n href = ref.href;\n title = ref.title;\n } //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n\n\n if (!silent) {\n content = state.src.slice(labelStart, labelEnd);\n state.md.inline.parse(content, state.md, state.env, tokens = []);\n token = state.push('image', 'img', 0);\n token.attrs = attrs = [['src', href], ['alt', '']];\n token.children = tokens;\n token.content = content;\n\n if (title) {\n attrs.push(['title', title]);\n }\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvaW1hZ2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9pbWFnZS5qcz8xODc2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFByb2Nlc3MgIVtpbWFnZV0oPHNyYz4gXCJ0aXRsZVwiKVxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBub3JtYWxpemVSZWZlcmVuY2UgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLm5vcm1hbGl6ZVJlZmVyZW5jZTtcbnZhciBpc1NwYWNlICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbWFnZShzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBhdHRycyxcbiAgICAgIGNvZGUsXG4gICAgICBjb250ZW50LFxuICAgICAgbGFiZWwsXG4gICAgICBsYWJlbEVuZCxcbiAgICAgIGxhYmVsU3RhcnQsXG4gICAgICBwb3MsXG4gICAgICByZWYsXG4gICAgICByZXMsXG4gICAgICB0aXRsZSxcbiAgICAgIHRva2VuLFxuICAgICAgdG9rZW5zLFxuICAgICAgc3RhcnQsXG4gICAgICBocmVmID0gJycsXG4gICAgICBvbGRQb3MgPSBzdGF0ZS5wb3MsXG4gICAgICBtYXggPSBzdGF0ZS5wb3NNYXg7XG5cbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHN0YXRlLnBvcykgIT09IDB4MjEvKiAhICovKSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQoc3RhdGUucG9zICsgMSkgIT09IDB4NUIvKiBbICovKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGxhYmVsU3RhcnQgPSBzdGF0ZS5wb3MgKyAyO1xuICBsYWJlbEVuZCA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rTGFiZWwoc3RhdGUsIHN0YXRlLnBvcyArIDEsIGZhbHNlKTtcblxuICAvLyBwYXJzZXIgZmFpbGVkIHRvIGZpbmQgJ10nLCBzbyBpdCdzIG5vdCBhIHZhbGlkIGxpbmtcbiAgaWYgKGxhYmVsRW5kIDwgMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBwb3MgPSBsYWJlbEVuZCArIDE7XG4gIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgyOC8qICggKi8pIHtcbiAgICAvL1xuICAgIC8vIElubGluZSBsaW5rXG4gICAgLy9cblxuICAgIC8vIFtsaW5rXSggIDxocmVmPiAgXCJ0aXRsZVwiICApXG4gICAgLy8gICAgICAgIF5eIHNraXBwaW5nIHRoZXNlIHNwYWNlc1xuICAgIHBvcysrO1xuICAgIGZvciAoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgICBjb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrOyB9XG4gICAgfVxuICAgIGlmIChwb3MgPj0gbWF4KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAvLyAgICAgICAgICBeXl5eXl4gcGFyc2luZyBsaW5rIGRlc3RpbmF0aW9uXG4gICAgc3RhcnQgPSBwb3M7XG4gICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtEZXN0aW5hdGlvbihzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KTtcbiAgICBpZiAocmVzLm9rKSB7XG4gICAgICBocmVmID0gc3RhdGUubWQubm9ybWFsaXplTGluayhyZXMuc3RyKTtcbiAgICAgIGlmIChzdGF0ZS5tZC52YWxpZGF0ZUxpbmsoaHJlZikpIHtcbiAgICAgICAgcG9zID0gcmVzLnBvcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhyZWYgPSAnJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgIC8vICAgICAgICAgICAgICAgIF5eIHNraXBwaW5nIHRoZXNlIHNwYWNlc1xuICAgIHN0YXJ0ID0gcG9zO1xuICAgIGZvciAoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgICBjb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrOyB9XG4gICAgfVxuXG4gICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAvLyAgICAgICAgICAgICAgICAgIF5eXl5eXl4gcGFyc2luZyBsaW5rIHRpdGxlXG4gICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtUaXRsZShzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KTtcbiAgICBpZiAocG9zIDwgbWF4ICYmIHN0YXJ0ICE9PSBwb3MgJiYgcmVzLm9rKSB7XG4gICAgICB0aXRsZSA9IHJlcy5zdHI7XG4gICAgICBwb3MgPSByZXMucG9zO1xuXG4gICAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgXl4gc2tpcHBpbmcgdGhlc2Ugc3BhY2VzXG4gICAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgICBjb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgICAgaWYgKCFpc1NwYWNlKGNvZGUpICYmIGNvZGUgIT09IDB4MEEpIHsgYnJlYWs7IH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGl0bGUgPSAnJztcbiAgICB9XG5cbiAgICBpZiAocG9zID49IG1heCB8fCBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDI5LyogKSAqLykge1xuICAgICAgc3RhdGUucG9zID0gb2xkUG9zO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBwb3MrKztcbiAgfSBlbHNlIHtcbiAgICAvL1xuICAgIC8vIExpbmsgcmVmZXJlbmNlXG4gICAgLy9cbiAgICBpZiAodHlwZW9mIHN0YXRlLmVudi5yZWZlcmVuY2VzID09PSAndW5kZWZpbmVkJykgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHg1Qi8qIFsgKi8pIHtcbiAgICAgIHN0YXJ0ID0gcG9zICsgMTtcbiAgICAgIHBvcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rTGFiZWwoc3RhdGUsIHBvcyk7XG4gICAgICBpZiAocG9zID49IDApIHtcbiAgICAgICAgbGFiZWwgPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQsIHBvcysrKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvcyA9IGxhYmVsRW5kICsgMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcG9zID0gbGFiZWxFbmQgKyAxO1xuICAgIH1cblxuICAgIC8vIGNvdmVycyBsYWJlbCA9PT0gJycgYW5kIGxhYmVsID09PSB1bmRlZmluZWRcbiAgICAvLyAoY29sbGFwc2VkIHJlZmVyZW5jZSBsaW5rIGFuZCBzaG9ydGN1dCByZWZlcmVuY2UgbGluayByZXNwZWN0aXZlbHkpXG4gICAgaWYgKCFsYWJlbCkgeyBsYWJlbCA9IHN0YXRlLnNyYy5zbGljZShsYWJlbFN0YXJ0LCBsYWJlbEVuZCk7IH1cblxuICAgIHJlZiA9IHN0YXRlLmVudi5yZWZlcmVuY2VzW25vcm1hbGl6ZVJlZmVyZW5jZShsYWJlbCldO1xuICAgIGlmICghcmVmKSB7XG4gICAgICBzdGF0ZS5wb3MgPSBvbGRQb3M7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGhyZWYgPSByZWYuaHJlZjtcbiAgICB0aXRsZSA9IHJlZi50aXRsZTtcbiAgfVxuXG4gIC8vXG4gIC8vIFdlIGZvdW5kIHRoZSBlbmQgb2YgdGhlIGxpbmssIGFuZCBrbm93IGZvciBhIGZhY3QgaXQncyBhIHZhbGlkIGxpbms7XG4gIC8vIHNvIGFsbCB0aGF0J3MgbGVmdCB0byBkbyBpcyB0byBjYWxsIHRva2VuaXplci5cbiAgLy9cbiAgaWYgKCFzaWxlbnQpIHtcbiAgICBjb250ZW50ID0gc3RhdGUuc3JjLnNsaWNlKGxhYmVsU3RhcnQsIGxhYmVsRW5kKTtcblxuICAgIHN0YXRlLm1kLmlubGluZS5wYXJzZShcbiAgICAgIGNvbnRlbnQsXG4gICAgICBzdGF0ZS5tZCxcbiAgICAgIHN0YXRlLmVudixcbiAgICAgIHRva2VucyA9IFtdXG4gICAgKTtcblxuICAgIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgnaW1hZ2UnLCAnaW1nJywgMCk7XG4gICAgdG9rZW4uYXR0cnMgICAgPSBhdHRycyA9IFsgWyAnc3JjJywgaHJlZiBdLCBbICdhbHQnLCAnJyBdIF07XG4gICAgdG9rZW4uY2hpbGRyZW4gPSB0b2tlbnM7XG4gICAgdG9rZW4uY29udGVudCAgPSBjb250ZW50O1xuXG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICBhdHRycy5wdXNoKFsgJ3RpdGxlJywgdGl0bGUgXSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUucG9zID0gcG9zO1xuICBzdGF0ZS5wb3NNYXggPSBtYXg7XG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/image.js\n");
|
2174 |
|
2175 | }),
|
2176 |
|
2177 | "../../../node_modules/markdown-it/lib/rules_inline/link.js":
|
2178 |
|
2179 |
|
2180 |
|
2181 |
|
2182 | (function(module, exports, __webpack_require__) {
|
2183 |
|
2184 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process [link](<to> \"stuff\")\n 'use strict';\n\n var normalizeReference = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").normalizeReference;\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function link(state, silent) {\n var attrs,\n code,\n label,\n labelEnd,\n labelStart,\n pos,\n res,\n ref,\n token,\n href = '',\n title = '',\n oldPos = state.pos,\n max = state.posMax,\n start = state.pos,\n parseReference = true;\n\n if (state.src.charCodeAt(state.pos) !== 0x5B\n /* [ */\n ) {\n return false;\n }\n\n labelStart = state.pos + 1;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true); // parser failed to find ']', so it's not a valid link\n\n if (labelEnd < 0) {\n return false;\n }\n\n pos = labelEnd + 1;\n\n if (pos < max && state.src.charCodeAt(pos) === 0x28\n /* ( */\n ) {\n //\n // Inline link\n //\n // might have found a valid shortcut link, disable reference parsing\n parseReference = false; // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n\n pos++;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n\n if (pos >= max) {\n return false;\n } // [link]( <href> \"title\" )\n // ^^^^^^ parsing link destination\n\n\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n } // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n\n\n start = pos;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n } // [link]( <href> \"title\" )\n // ^^^^^^^ parsing link title\n\n\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos; // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n }\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29\n /* ) */\n ) {\n // parsing a valid shortcut link failed, fallback to reference\n parseReference = true;\n }\n\n pos++;\n }\n\n if (parseReference) {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') {\n return false;\n }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B\n /* [ */\n ) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n } // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n\n\n if (!label) {\n label = state.src.slice(labelStart, labelEnd);\n }\n\n ref = state.env.references[normalizeReference(label)];\n\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n\n href = ref.href;\n title = ref.title;\n } //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n\n\n if (!silent) {\n state.pos = labelStart;\n state.posMax = labelEnd;\n token = state.push('link_open', 'a', 1);\n token.attrs = attrs = [['href', href]];\n\n if (title) {\n attrs.push(['title', title]);\n }\n\n state.md.inline.tokenize(state);\n token = state.push('link_close', 'a', -1);\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvbGluay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL2xpbmsuanM/NjE3YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQcm9jZXNzIFtsaW5rXSg8dG8+IFwic3R1ZmZcIilcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgbm9ybWFsaXplUmVmZXJlbmNlICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5ub3JtYWxpemVSZWZlcmVuY2U7XG52YXIgaXNTcGFjZSAgICAgICAgICAgICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1NwYWNlO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbGluayhzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBhdHRycyxcbiAgICAgIGNvZGUsXG4gICAgICBsYWJlbCxcbiAgICAgIGxhYmVsRW5kLFxuICAgICAgbGFiZWxTdGFydCxcbiAgICAgIHBvcyxcbiAgICAgIHJlcyxcbiAgICAgIHJlZixcbiAgICAgIHRva2VuLFxuICAgICAgaHJlZiA9ICcnLFxuICAgICAgdGl0bGUgPSAnJyxcbiAgICAgIG9sZFBvcyA9IHN0YXRlLnBvcyxcbiAgICAgIG1heCA9IHN0YXRlLnBvc01heCxcbiAgICAgIHN0YXJ0ID0gc3RhdGUucG9zLFxuICAgICAgcGFyc2VSZWZlcmVuY2UgPSB0cnVlO1xuXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChzdGF0ZS5wb3MpICE9PSAweDVCLyogWyAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBsYWJlbFN0YXJ0ID0gc3RhdGUucG9zICsgMTtcbiAgbGFiZWxFbmQgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua0xhYmVsKHN0YXRlLCBzdGF0ZS5wb3MsIHRydWUpO1xuXG4gIC8vIHBhcnNlciBmYWlsZWQgdG8gZmluZCAnXScsIHNvIGl0J3Mgbm90IGEgdmFsaWQgbGlua1xuICBpZiAobGFiZWxFbmQgPCAwKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIHBvcyA9IGxhYmVsRW5kICsgMTtcbiAgaWYgKHBvcyA8IG1heCAmJiBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpID09PSAweDI4LyogKCAqLykge1xuICAgIC8vXG4gICAgLy8gSW5saW5lIGxpbmtcbiAgICAvL1xuXG4gICAgLy8gbWlnaHQgaGF2ZSBmb3VuZCBhIHZhbGlkIHNob3J0Y3V0IGxpbmssIGRpc2FibGUgcmVmZXJlbmNlIHBhcnNpbmdcbiAgICBwYXJzZVJlZmVyZW5jZSA9IGZhbHNlO1xuXG4gICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAvLyAgICAgICAgXl4gc2tpcHBpbmcgdGhlc2Ugc3BhY2VzXG4gICAgcG9zKys7XG4gICAgZm9yICg7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICAgIGNvZGUgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKCFpc1NwYWNlKGNvZGUpICYmIGNvZGUgIT09IDB4MEEpIHsgYnJlYWs7IH1cbiAgICB9XG4gICAgaWYgKHBvcyA+PSBtYXgpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgIC8vICAgICAgICAgIF5eXl5eXiBwYXJzaW5nIGxpbmsgZGVzdGluYXRpb25cbiAgICBzdGFydCA9IHBvcztcbiAgICByZXMgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua0Rlc3RpbmF0aW9uKHN0YXRlLnNyYywgcG9zLCBzdGF0ZS5wb3NNYXgpO1xuICAgIGlmIChyZXMub2spIHtcbiAgICAgIGhyZWYgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rKHJlcy5zdHIpO1xuICAgICAgaWYgKHN0YXRlLm1kLnZhbGlkYXRlTGluayhocmVmKSkge1xuICAgICAgICBwb3MgPSByZXMucG9zO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaHJlZiA9ICcnO1xuICAgICAgfVxuXG4gICAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgICAgLy8gICAgICAgICAgICAgICAgXl4gc2tpcHBpbmcgdGhlc2Ugc3BhY2VzXG4gICAgICBzdGFydCA9IHBvcztcbiAgICAgIGZvciAoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgICAgIGNvZGUgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuICAgICAgICBpZiAoIWlzU3BhY2UoY29kZSkgJiYgY29kZSAhPT0gMHgwQSkgeyBicmVhazsgfVxuICAgICAgfVxuXG4gICAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgICAgLy8gICAgICAgICAgICAgICAgICBeXl5eXl5eIHBhcnNpbmcgbGluayB0aXRsZVxuICAgICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtUaXRsZShzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KTtcbiAgICAgIGlmIChwb3MgPCBtYXggJiYgc3RhcnQgIT09IHBvcyAmJiByZXMub2spIHtcbiAgICAgICAgdGl0bGUgPSByZXMuc3RyO1xuICAgICAgICBwb3MgPSByZXMucG9zO1xuXG4gICAgICAgIC8vIFtsaW5rXSggIDxocmVmPiAgXCJ0aXRsZVwiICApXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIF5eIHNraXBwaW5nIHRoZXNlIHNwYWNlc1xuICAgICAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgICAgIGNvZGUgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuICAgICAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocG9zID49IG1heCB8fCBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDI5LyogKSAqLykge1xuICAgICAgLy8gcGFyc2luZyBhIHZhbGlkIHNob3J0Y3V0IGxpbmsgZmFpbGVkLCBmYWxsYmFjayB0byByZWZlcmVuY2VcbiAgICAgIHBhcnNlUmVmZXJlbmNlID0gdHJ1ZTtcbiAgICB9XG4gICAgcG9zKys7XG4gIH1cblxuICBpZiAocGFyc2VSZWZlcmVuY2UpIHtcbiAgICAvL1xuICAgIC8vIExpbmsgcmVmZXJlbmNlXG4gICAgLy9cbiAgICBpZiAodHlwZW9mIHN0YXRlLmVudi5yZWZlcmVuY2VzID09PSAndW5kZWZpbmVkJykgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHg1Qi8qIFsgKi8pIHtcbiAgICAgIHN0YXJ0ID0gcG9zICsgMTtcbiAgICAgIHBvcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rTGFiZWwoc3RhdGUsIHBvcyk7XG4gICAgICBpZiAocG9zID49IDApIHtcbiAgICAgICAgbGFiZWwgPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQsIHBvcysrKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvcyA9IGxhYmVsRW5kICsgMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcG9zID0gbGFiZWxFbmQgKyAxO1xuICAgIH1cblxuICAgIC8vIGNvdmVycyBsYWJlbCA9PT0gJycgYW5kIGxhYmVsID09PSB1bmRlZmluZWRcbiAgICAvLyAoY29sbGFwc2VkIHJlZmVyZW5jZSBsaW5rIGFuZCBzaG9ydGN1dCByZWZlcmVuY2UgbGluayByZXNwZWN0aXZlbHkpXG4gICAgaWYgKCFsYWJlbCkgeyBsYWJlbCA9IHN0YXRlLnNyYy5zbGljZShsYWJlbFN0YXJ0LCBsYWJlbEVuZCk7IH1cblxuICAgIHJlZiA9IHN0YXRlLmVudi5yZWZlcmVuY2VzW25vcm1hbGl6ZVJlZmVyZW5jZShsYWJlbCldO1xuICAgIGlmICghcmVmKSB7XG4gICAgICBzdGF0ZS5wb3MgPSBvbGRQb3M7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGhyZWYgPSByZWYuaHJlZjtcbiAgICB0aXRsZSA9IHJlZi50aXRsZTtcbiAgfVxuXG4gIC8vXG4gIC8vIFdlIGZvdW5kIHRoZSBlbmQgb2YgdGhlIGxpbmssIGFuZCBrbm93IGZvciBhIGZhY3QgaXQncyBhIHZhbGlkIGxpbms7XG4gIC8vIHNvIGFsbCB0aGF0J3MgbGVmdCB0byBkbyBpcyB0byBjYWxsIHRva2VuaXplci5cbiAgLy9cbiAgaWYgKCFzaWxlbnQpIHtcbiAgICBzdGF0ZS5wb3MgPSBsYWJlbFN0YXJ0O1xuICAgIHN0YXRlLnBvc01heCA9IGxhYmVsRW5kO1xuXG4gICAgdG9rZW4gICAgICAgID0gc3RhdGUucHVzaCgnbGlua19vcGVuJywgJ2EnLCAxKTtcbiAgICB0b2tlbi5hdHRycyAgPSBhdHRycyA9IFsgWyAnaHJlZicsIGhyZWYgXSBdO1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgYXR0cnMucHVzaChbICd0aXRsZScsIHRpdGxlIF0pO1xuICAgIH1cblxuICAgIHN0YXRlLm1kLmlubGluZS50b2tlbml6ZShzdGF0ZSk7XG5cbiAgICB0b2tlbiAgICAgICAgPSBzdGF0ZS5wdXNoKCdsaW5rX2Nsb3NlJywgJ2EnLCAtMSk7XG4gIH1cblxuICBzdGF0ZS5wb3MgPSBwb3M7XG4gIHN0YXRlLnBvc01heCA9IG1heDtcbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/link.js\n");
|
2185 |
|
2186 | }),
|
2187 |
|
2188 | "../../../node_modules/markdown-it/lib/rules_inline/newline.js":
|
2189 |
|
2190 |
|
2191 |
|
2192 |
|
2193 | (function(module, exports, __webpack_require__) {
|
2194 |
|
2195 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Proceess '\\n'\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function newline(state, silent) {\n var pmax,\n max,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x0A\n /* \\n */\n ) {\n return false;\n }\n\n pmax = state.pending.length - 1;\n max = state.posMax; // ' \\n' -> hardbreak\n // Lookup in pending chars is bad practice! Don't copy to other rules!\n // Pending string is stored in concat mode, indexed lookups will cause\n // convertion to flat mode.\n\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n state.pending = state.pending.replace(/ +$/, '');\n state.push('hardbreak', 'br', 0);\n } else {\n state.pending = state.pending.slice(0, -1);\n state.push('softbreak', 'br', 0);\n }\n } else {\n state.push('softbreak', 'br', 0);\n }\n }\n\n pos++; // skip heading spaces for next line\n\n while (pos < max && isSpace(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n state.pos = pos;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvbmV3bGluZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL25ld2xpbmUuanM/M2VhNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQcm9jZWVzcyAnXFxuJ1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc1NwYWNlID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNTcGFjZTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5ld2xpbmUoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgcG1heCwgbWF4LCBwb3MgPSBzdGF0ZS5wb3M7XG5cbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgIT09IDB4MEEvKiBcXG4gKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgcG1heCA9IHN0YXRlLnBlbmRpbmcubGVuZ3RoIC0gMTtcbiAgbWF4ID0gc3RhdGUucG9zTWF4O1xuXG4gIC8vICcgIFxcbicgLT4gaGFyZGJyZWFrXG4gIC8vIExvb2t1cCBpbiBwZW5kaW5nIGNoYXJzIGlzIGJhZCBwcmFjdGljZSEgRG9uJ3QgY29weSB0byBvdGhlciBydWxlcyFcbiAgLy8gUGVuZGluZyBzdHJpbmcgaXMgc3RvcmVkIGluIGNvbmNhdCBtb2RlLCBpbmRleGVkIGxvb2t1cHMgd2lsbCBjYXVzZVxuICAvLyBjb252ZXJ0aW9uIHRvIGZsYXQgbW9kZS5cbiAgaWYgKCFzaWxlbnQpIHtcbiAgICBpZiAocG1heCA+PSAwICYmIHN0YXRlLnBlbmRpbmcuY2hhckNvZGVBdChwbWF4KSA9PT0gMHgyMCkge1xuICAgICAgaWYgKHBtYXggPj0gMSAmJiBzdGF0ZS5wZW5kaW5nLmNoYXJDb2RlQXQocG1heCAtIDEpID09PSAweDIwKSB7XG4gICAgICAgIHN0YXRlLnBlbmRpbmcgPSBzdGF0ZS5wZW5kaW5nLnJlcGxhY2UoLyArJC8sICcnKTtcbiAgICAgICAgc3RhdGUucHVzaCgnaGFyZGJyZWFrJywgJ2JyJywgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5wZW5kaW5nID0gc3RhdGUucGVuZGluZy5zbGljZSgwLCAtMSk7XG4gICAgICAgIHN0YXRlLnB1c2goJ3NvZnRicmVhaycsICdicicsIDApO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnB1c2goJ3NvZnRicmVhaycsICdicicsIDApO1xuICAgIH1cbiAgfVxuXG4gIHBvcysrO1xuXG4gIC8vIHNraXAgaGVhZGluZyBzcGFjZXMgZm9yIG5leHQgbGluZVxuICB3aGlsZSAocG9zIDwgbWF4ICYmIGlzU3BhY2Uoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSkpIHsgcG9zKys7IH1cblxuICBzdGF0ZS5wb3MgPSBwb3M7XG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/newline.js\n");
|
2196 |
|
2197 | }),
|
2198 |
|
2199 | "../../../node_modules/markdown-it/lib/rules_inline/state_inline.js":
|
2200 |
|
2201 |
|
2202 |
|
2203 |
|
2204 | (function(module, exports, __webpack_require__) {
|
2205 |
|
2206 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Inline parser state\n 'use strict';\n\n var Token = __webpack_require__(/*! ../token */ \"../../../node_modules/markdown-it/lib/token.js\");\n\n var isWhiteSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isWhiteSpace;\n\n var isPunctChar = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isPunctChar;\n\n var isMdAsciiPunct = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isMdAsciiPunct;\n\n function StateInline(src, md, env, outTokens) {\n this.src = src;\n this.env = env;\n this.md = md;\n this.tokens = outTokens;\n this.tokens_meta = Array(outTokens.length);\n this.pos = 0;\n this.posMax = this.src.length;\n this.level = 0;\n this.pending = '';\n this.pendingLevel = 0; // Stores { start: end } pairs. Useful for backtrack\n // optimization of pairs parse (emphasis, strikes).\n\n this.cache = {}; // List of emphasis-like delimiters for current tag\n\n this.delimiters = []; // Stack of delimiter lists for upper level tags\n\n this._prev_delimiters = []; // backtick length => last seen position\n\n this.backticks = {};\n this.backticksScanned = false;\n } // Flush pending text\n //\n\n\n StateInline.prototype.pushPending = function () {\n var token = new Token('text', '', 0);\n token.content = this.pending;\n token.level = this.pendingLevel;\n this.tokens.push(token);\n this.pending = '';\n return token;\n }; // Push new token to \"stream\".\n // If pending text exists - flush it as text token\n //\n\n\n StateInline.prototype.push = function (type, tag, nesting) {\n if (this.pending) {\n this.pushPending();\n }\n\n var token = new Token(type, tag, nesting);\n var token_meta = null;\n\n if (nesting < 0) {\n // closing tag\n this.level--;\n this.delimiters = this._prev_delimiters.pop();\n }\n\n token.level = this.level;\n\n if (nesting > 0) {\n // opening tag\n this.level++;\n\n this._prev_delimiters.push(this.delimiters);\n\n this.delimiters = [];\n token_meta = {\n delimiters: this.delimiters\n };\n }\n\n this.pendingLevel = this.level;\n this.tokens.push(token);\n this.tokens_meta.push(token_meta);\n return token;\n }; // Scan a sequence of emphasis-like markers, and determine whether\n // it can start an emphasis sequence or end an emphasis sequence.\n //\n // - start - position to scan from (it should point at a valid marker);\n // - canSplitWord - determine if these markers can be found inside a word\n //\n\n\n StateInline.prototype.scanDelims = function (start, canSplitWord) {\n var pos = start,\n lastChar,\n nextChar,\n count,\n can_open,\n can_close,\n isLastWhiteSpace,\n isLastPunctChar,\n isNextWhiteSpace,\n isNextPunctChar,\n left_flanking = true,\n right_flanking = true,\n max = this.posMax,\n marker = this.src.charCodeAt(start); // treat beginning of the line as a whitespace\n\n lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20;\n\n while (pos < max && this.src.charCodeAt(pos) === marker) {\n pos++;\n }\n\n count = pos - start; // treat end of the line as a whitespace\n\n nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n left_flanking = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n left_flanking = false;\n }\n }\n\n if (isLastWhiteSpace) {\n right_flanking = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n right_flanking = false;\n }\n }\n\n if (!canSplitWord) {\n can_open = left_flanking && (!right_flanking || isLastPunctChar);\n can_close = right_flanking && (!left_flanking || isNextPunctChar);\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n\n return {\n can_open: can_open,\n can_close: can_close,\n length: count\n };\n }; // re-export Token class to use in block rules\n\n\n StateInline.prototype.Token = Token;\n module.exports = StateInline;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvc3RhdGVfaW5saW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvc3RhdGVfaW5saW5lLmpzP2ViYTAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW5saW5lIHBhcnNlciBzdGF0ZVxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFRva2VuICAgICAgICAgID0gcmVxdWlyZSgnLi4vdG9rZW4nKTtcbnZhciBpc1doaXRlU3BhY2UgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzV2hpdGVTcGFjZTtcbnZhciBpc1B1bmN0Q2hhciAgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzUHVuY3RDaGFyO1xudmFyIGlzTWRBc2NpaVB1bmN0ID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNNZEFzY2lpUHVuY3Q7XG5cblxuZnVuY3Rpb24gU3RhdGVJbmxpbmUoc3JjLCBtZCwgZW52LCBvdXRUb2tlbnMpIHtcbiAgdGhpcy5zcmMgPSBzcmM7XG4gIHRoaXMuZW52ID0gZW52O1xuICB0aGlzLm1kID0gbWQ7XG4gIHRoaXMudG9rZW5zID0gb3V0VG9rZW5zO1xuICB0aGlzLnRva2Vuc19tZXRhID0gQXJyYXkob3V0VG9rZW5zLmxlbmd0aCk7XG5cbiAgdGhpcy5wb3MgPSAwO1xuICB0aGlzLnBvc01heCA9IHRoaXMuc3JjLmxlbmd0aDtcbiAgdGhpcy5sZXZlbCA9IDA7XG4gIHRoaXMucGVuZGluZyA9ICcnO1xuICB0aGlzLnBlbmRpbmdMZXZlbCA9IDA7XG5cbiAgLy8gU3RvcmVzIHsgc3RhcnQ6IGVuZCB9IHBhaXJzLiBVc2VmdWwgZm9yIGJhY2t0cmFja1xuICAvLyBvcHRpbWl6YXRpb24gb2YgcGFpcnMgcGFyc2UgKGVtcGhhc2lzLCBzdHJpa2VzKS5cbiAgdGhpcy5jYWNoZSA9IHt9O1xuXG4gIC8vIExpc3Qgb2YgZW1waGFzaXMtbGlrZSBkZWxpbWl0ZXJzIGZvciBjdXJyZW50IHRhZ1xuICB0aGlzLmRlbGltaXRlcnMgPSBbXTtcblxuICAvLyBTdGFjayBvZiBkZWxpbWl0ZXIgbGlzdHMgZm9yIHVwcGVyIGxldmVsIHRhZ3NcbiAgdGhpcy5fcHJldl9kZWxpbWl0ZXJzID0gW107XG5cbiAgLy8gYmFja3RpY2sgbGVuZ3RoID0+IGxhc3Qgc2VlbiBwb3NpdGlvblxuICB0aGlzLmJhY2t0aWNrcyA9IHt9O1xuICB0aGlzLmJhY2t0aWNrc1NjYW5uZWQgPSBmYWxzZTtcbn1cblxuXG4vLyBGbHVzaCBwZW5kaW5nIHRleHRcbi8vXG5TdGF0ZUlubGluZS5wcm90b3R5cGUucHVzaFBlbmRpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0b2tlbiA9IG5ldyBUb2tlbigndGV4dCcsICcnLCAwKTtcbiAgdG9rZW4uY29udGVudCA9IHRoaXMucGVuZGluZztcbiAgdG9rZW4ubGV2ZWwgPSB0aGlzLnBlbmRpbmdMZXZlbDtcbiAgdGhpcy50b2tlbnMucHVzaCh0b2tlbik7XG4gIHRoaXMucGVuZGluZyA9ICcnO1xuICByZXR1cm4gdG9rZW47XG59O1xuXG5cbi8vIFB1c2ggbmV3IHRva2VuIHRvIFwic3RyZWFtXCIuXG4vLyBJZiBwZW5kaW5nIHRleHQgZXhpc3RzIC0gZmx1c2ggaXQgYXMgdGV4dCB0b2tlblxuLy9cblN0YXRlSW5saW5lLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKHR5cGUsIHRhZywgbmVzdGluZykge1xuICBpZiAodGhpcy5wZW5kaW5nKSB7XG4gICAgdGhpcy5wdXNoUGVuZGluZygpO1xuICB9XG5cbiAgdmFyIHRva2VuID0gbmV3IFRva2VuKHR5cGUsIHRhZywgbmVzdGluZyk7XG4gIHZhciB0b2tlbl9tZXRhID0gbnVsbDtcblxuICBpZiAobmVzdGluZyA8IDApIHtcbiAgICAvLyBjbG9zaW5nIHRhZ1xuICAgIHRoaXMubGV2ZWwtLTtcbiAgICB0aGlzLmRlbGltaXRlcnMgPSB0aGlzLl9wcmV2X2RlbGltaXRlcnMucG9wKCk7XG4gIH1cblxuICB0b2tlbi5sZXZlbCA9IHRoaXMubGV2ZWw7XG5cbiAgaWYgKG5lc3RpbmcgPiAwKSB7XG4gICAgLy8gb3BlbmluZyB0YWdcbiAgICB0aGlzLmxldmVsKys7XG4gICAgdGhpcy5fcHJldl9kZWxpbWl0ZXJzLnB1c2godGhpcy5kZWxpbWl0ZXJzKTtcbiAgICB0aGlzLmRlbGltaXRlcnMgPSBbXTtcbiAgICB0b2tlbl9tZXRhID0geyBkZWxpbWl0ZXJzOiB0aGlzLmRlbGltaXRlcnMgfTtcbiAgfVxuXG4gIHRoaXMucGVuZGluZ0xldmVsID0gdGhpcy5sZXZlbDtcbiAgdGhpcy50b2tlbnMucHVzaCh0b2tlbik7XG4gIHRoaXMudG9rZW5zX21ldGEucHVzaCh0b2tlbl9tZXRhKTtcbiAgcmV0dXJuIHRva2VuO1xufTtcblxuXG4vLyBTY2FuIGEgc2VxdWVuY2Ugb2YgZW1waGFzaXMtbGlrZSBtYXJrZXJzLCBhbmQgZGV0ZXJtaW5lIHdoZXRoZXJcbi8vIGl0IGNhbiBzdGFydCBhbiBlbXBoYXNpcyBzZXF1ZW5jZSBvciBlbmQgYW4gZW1waGFzaXMgc2VxdWVuY2UuXG4vL1xuLy8gIC0gc3RhcnQgLSBwb3NpdGlvbiB0byBzY2FuIGZyb20gKGl0IHNob3VsZCBwb2ludCBhdCBhIHZhbGlkIG1hcmtlcik7XG4vLyAgLSBjYW5TcGxpdFdvcmQgLSBkZXRlcm1pbmUgaWYgdGhlc2UgbWFya2VycyBjYW4gYmUgZm91bmQgaW5zaWRlIGEgd29yZFxuLy9cblN0YXRlSW5saW5lLnByb3RvdHlwZS5zY2FuRGVsaW1zID0gZnVuY3Rpb24gKHN0YXJ0LCBjYW5TcGxpdFdvcmQpIHtcbiAgdmFyIHBvcyA9IHN0YXJ0LCBsYXN0Q2hhciwgbmV4dENoYXIsIGNvdW50LCBjYW5fb3BlbiwgY2FuX2Nsb3NlLFxuICAgICAgaXNMYXN0V2hpdGVTcGFjZSwgaXNMYXN0UHVuY3RDaGFyLFxuICAgICAgaXNOZXh0V2hpdGVTcGFjZSwgaXNOZXh0UHVuY3RDaGFyLFxuICAgICAgbGVmdF9mbGFua2luZyA9IHRydWUsXG4gICAgICByaWdodF9mbGFua2luZyA9IHRydWUsXG4gICAgICBtYXggPSB0aGlzLnBvc01heCxcbiAgICAgIG1hcmtlciA9IHRoaXMuc3JjLmNoYXJDb2RlQXQoc3RhcnQpO1xuXG4gIC8vIHRyZWF0IGJlZ2lubmluZyBvZiB0aGUgbGluZSBhcyBhIHdoaXRlc3BhY2VcbiAgbGFzdENoYXIgPSBzdGFydCA+IDAgPyB0aGlzLnNyYy5jaGFyQ29kZUF0KHN0YXJ0IC0gMSkgOiAweDIwO1xuXG4gIHdoaWxlIChwb3MgPCBtYXggJiYgdGhpcy5zcmMuY2hhckNvZGVBdChwb3MpID09PSBtYXJrZXIpIHsgcG9zKys7IH1cblxuICBjb3VudCA9IHBvcyAtIHN0YXJ0O1xuXG4gIC8vIHRyZWF0IGVuZCBvZiB0aGUgbGluZSBhcyBhIHdoaXRlc3BhY2VcbiAgbmV4dENoYXIgPSBwb3MgPCBtYXggPyB0aGlzLnNyYy5jaGFyQ29kZUF0KHBvcykgOiAweDIwO1xuXG4gIGlzTGFzdFB1bmN0Q2hhciA9IGlzTWRBc2NpaVB1bmN0KGxhc3RDaGFyKSB8fCBpc1B1bmN0Q2hhcihTdHJpbmcuZnJvbUNoYXJDb2RlKGxhc3RDaGFyKSk7XG4gIGlzTmV4dFB1bmN0Q2hhciA9IGlzTWRBc2NpaVB1bmN0KG5leHRDaGFyKSB8fCBpc1B1bmN0Q2hhcihTdHJpbmcuZnJvbUNoYXJDb2RlKG5leHRDaGFyKSk7XG5cbiAgaXNMYXN0V2hpdGVTcGFjZSA9IGlzV2hpdGVTcGFjZShsYXN0Q2hhcik7XG4gIGlzTmV4dFdoaXRlU3BhY2UgPSBpc1doaXRlU3BhY2UobmV4dENoYXIpO1xuXG4gIGlmIChpc05leHRXaGl0ZVNwYWNlKSB7XG4gICAgbGVmdF9mbGFua2luZyA9IGZhbHNlO1xuICB9IGVsc2UgaWYgKGlzTmV4dFB1bmN0Q2hhcikge1xuICAgIGlmICghKGlzTGFzdFdoaXRlU3BhY2UgfHwgaXNMYXN0UHVuY3RDaGFyKSkge1xuICAgICAgbGVmdF9mbGFua2luZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc0xhc3RXaGl0ZVNwYWNlKSB7XG4gICAgcmlnaHRfZmxhbmtpbmcgPSBmYWxzZTtcbiAgfSBlbHNlIGlmIChpc0xhc3RQdW5jdENoYXIpIHtcbiAgICBpZiAoIShpc05leHRXaGl0ZVNwYWNlIHx8IGlzTmV4dFB1bmN0Q2hhcikpIHtcbiAgICAgIHJpZ2h0X2ZsYW5raW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjYW5TcGxpdFdvcmQpIHtcbiAgICBjYW5fb3BlbiAgPSBsZWZ0X2ZsYW5raW5nICAmJiAoIXJpZ2h0X2ZsYW5raW5nIHx8IGlzTGFzdFB1bmN0Q2hhcik7XG4gICAgY2FuX2Nsb3NlID0gcmlnaHRfZmxhbmtpbmcgJiYgKCFsZWZ0X2ZsYW5raW5nICB8fCBpc05leHRQdW5jdENoYXIpO1xuICB9IGVsc2Uge1xuICAgIGNhbl9vcGVuICA9IGxlZnRfZmxhbmtpbmc7XG4gICAgY2FuX2Nsb3NlID0gcmlnaHRfZmxhbmtpbmc7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNhbl9vcGVuOiAgY2FuX29wZW4sXG4gICAgY2FuX2Nsb3NlOiBjYW5fY2xvc2UsXG4gICAgbGVuZ3RoOiAgICBjb3VudFxuICB9O1xufTtcblxuXG4vLyByZS1leHBvcnQgVG9rZW4gY2xhc3MgdG8gdXNlIGluIGJsb2NrIHJ1bGVzXG5TdGF0ZUlubGluZS5wcm90b3R5cGUuVG9rZW4gPSBUb2tlbjtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0YXRlSW5saW5lO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/state_inline.js\n");
|
2207 |
|
2208 | }),
|
2209 |
|
2210 | "../../../node_modules/markdown-it/lib/rules_inline/strikethrough.js":
|
2211 |
|
2212 |
|
2213 |
|
2214 |
|
2215 | (function(module, exports, __webpack_require__) {
|
2216 |
|
2217 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // ~~strike through~~\n //\n 'use strict'; // Insert each marker as a separate text token, and add it to delimiter list\n //\n\n module.exports.tokenize = function strikethrough(state, silent) {\n var i,\n scanned,\n token,\n len,\n ch,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) {\n return false;\n }\n\n if (marker !== 0x7E\n /* ~ */\n ) {\n return false;\n }\n\n scanned = state.scanDelims(state.pos, true);\n len = scanned.length;\n ch = String.fromCharCode(marker);\n\n if (len < 2) {\n return false;\n }\n\n if (len % 2) {\n token = state.push('text', '', 0);\n token.content = ch;\n len--;\n }\n\n for (i = 0; i < len; i += 2) {\n token = state.push('text', '', 0);\n token.content = ch + ch;\n state.delimiters.push({\n marker: marker,\n length: 0,\n // disable \"rule of 3\" length checks meant for emphasis\n jump: i / 2,\n // for `~~` 1 marker = 2 characters\n token: state.tokens.length - 1,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n return true;\n };\n\n function postProcess(state, delimiters) {\n var i,\n j,\n startDelim,\n endDelim,\n token,\n loneMarkers = [],\n max = delimiters.length;\n\n for (i = 0; i < max; i++) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x7E\n /* ~ */\n ) {\n continue;\n }\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n token = state.tokens[startDelim.token];\n token.type = 's_open';\n token.tag = 's';\n token.nesting = 1;\n token.markup = '~~';\n token.content = '';\n token = state.tokens[endDelim.token];\n token.type = 's_close';\n token.tag = 's';\n token.nesting = -1;\n token.markup = '~~';\n token.content = '';\n\n if (state.tokens[endDelim.token - 1].type === 'text' && state.tokens[endDelim.token - 1].content === '~') {\n loneMarkers.push(endDelim.token - 1);\n }\n } // If a marker sequence has an odd number of characters, it's splitted\n // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n // start of the sequence.\n //\n // So, we have to move all those markers after subsequent s_close tags.\n //\n\n\n while (loneMarkers.length) {\n i = loneMarkers.pop();\n j = i + 1;\n\n while (j < state.tokens.length && state.tokens[j].type === 's_close') {\n j++;\n }\n\n j--;\n\n if (i !== j) {\n token = state.tokens[j];\n state.tokens[j] = state.tokens[i];\n state.tokens[i] = token;\n }\n }\n } // Walk through delimiter list and replace text tokens with tags\n //\n\n\n module.exports.postProcess = function strikethrough(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n postProcess(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters);\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvc3RyaWtldGhyb3VnaC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL3N0cmlrZXRocm91Z2guanM/M2IzYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fnN0cmlrZSB0aHJvdWdofn5cbi8vXG4ndXNlIHN0cmljdCc7XG5cblxuLy8gSW5zZXJ0IGVhY2ggbWFya2VyIGFzIGEgc2VwYXJhdGUgdGV4dCB0b2tlbiwgYW5kIGFkZCBpdCB0byBkZWxpbWl0ZXIgbGlzdFxuLy9cbm1vZHVsZS5leHBvcnRzLnRva2VuaXplID0gZnVuY3Rpb24gc3RyaWtldGhyb3VnaChzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBpLCBzY2FubmVkLCB0b2tlbiwgbGVuLCBjaCxcbiAgICAgIHN0YXJ0ID0gc3RhdGUucG9zLFxuICAgICAgbWFya2VyID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQoc3RhcnQpO1xuXG4gIGlmIChzaWxlbnQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgaWYgKG1hcmtlciAhPT0gMHg3RS8qIH4gKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgc2Nhbm5lZCA9IHN0YXRlLnNjYW5EZWxpbXMoc3RhdGUucG9zLCB0cnVlKTtcbiAgbGVuID0gc2Nhbm5lZC5sZW5ndGg7XG4gIGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShtYXJrZXIpO1xuXG4gIGlmIChsZW4gPCAyKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChsZW4gJSAyKSB7XG4gICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ3RleHQnLCAnJywgMCk7XG4gICAgdG9rZW4uY29udGVudCA9IGNoO1xuICAgIGxlbi0tO1xuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ3RleHQnLCAnJywgMCk7XG4gICAgdG9rZW4uY29udGVudCA9IGNoICsgY2g7XG5cbiAgICBzdGF0ZS5kZWxpbWl0ZXJzLnB1c2goe1xuICAgICAgbWFya2VyOiBtYXJrZXIsXG4gICAgICBsZW5ndGg6IDAsICAgICAvLyBkaXNhYmxlIFwicnVsZSBvZiAzXCIgbGVuZ3RoIGNoZWNrcyBtZWFudCBmb3IgZW1waGFzaXNcbiAgICAgIGp1bXA6ICAgaSAvIDIsIC8vIGZvciBgfn5gIDEgbWFya2VyID0gMiBjaGFyYWN0ZXJzXG4gICAgICB0b2tlbjogIHN0YXRlLnRva2Vucy5sZW5ndGggLSAxLFxuICAgICAgZW5kOiAgICAtMSxcbiAgICAgIG9wZW46ICAgc2Nhbm5lZC5jYW5fb3BlbixcbiAgICAgIGNsb3NlOiAgc2Nhbm5lZC5jYW5fY2xvc2VcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRlLnBvcyArPSBzY2FubmVkLmxlbmd0aDtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cblxuZnVuY3Rpb24gcG9zdFByb2Nlc3Moc3RhdGUsIGRlbGltaXRlcnMpIHtcbiAgdmFyIGksIGosXG4gICAgICBzdGFydERlbGltLFxuICAgICAgZW5kRGVsaW0sXG4gICAgICB0b2tlbixcbiAgICAgIGxvbmVNYXJrZXJzID0gW10sXG4gICAgICBtYXggPSBkZWxpbWl0ZXJzLmxlbmd0aDtcblxuICBmb3IgKGkgPSAwOyBpIDwgbWF4OyBpKyspIHtcbiAgICBzdGFydERlbGltID0gZGVsaW1pdGVyc1tpXTtcblxuICAgIGlmIChzdGFydERlbGltLm1hcmtlciAhPT0gMHg3RS8qIH4gKi8pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChzdGFydERlbGltLmVuZCA9PT0gLTEpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGVuZERlbGltID0gZGVsaW1pdGVyc1tzdGFydERlbGltLmVuZF07XG5cbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUudG9rZW5zW3N0YXJ0RGVsaW0udG9rZW5dO1xuICAgIHRva2VuLnR5cGUgICAgPSAnc19vcGVuJztcbiAgICB0b2tlbi50YWcgICAgID0gJ3MnO1xuICAgIHRva2VuLm5lc3RpbmcgPSAxO1xuICAgIHRva2VuLm1hcmt1cCAgPSAnfn4nO1xuICAgIHRva2VuLmNvbnRlbnQgPSAnJztcblxuICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS50b2tlbnNbZW5kRGVsaW0udG9rZW5dO1xuICAgIHRva2VuLnR5cGUgICAgPSAnc19jbG9zZSc7XG4gICAgdG9rZW4udGFnICAgICA9ICdzJztcbiAgICB0b2tlbi5uZXN0aW5nID0gLTE7XG4gICAgdG9rZW4ubWFya3VwICA9ICd+fic7XG4gICAgdG9rZW4uY29udGVudCA9ICcnO1xuXG4gICAgaWYgKHN0YXRlLnRva2Vuc1tlbmREZWxpbS50b2tlbiAtIDFdLnR5cGUgPT09ICd0ZXh0JyAmJlxuICAgICAgICBzdGF0ZS50b2tlbnNbZW5kRGVsaW0udG9rZW4gLSAxXS5jb250ZW50ID09PSAnficpIHtcblxuICAgICAgbG9uZU1hcmtlcnMucHVzaChlbmREZWxpbS50b2tlbiAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIGEgbWFya2VyIHNlcXVlbmNlIGhhcyBhbiBvZGQgbnVtYmVyIG9mIGNoYXJhY3RlcnMsIGl0J3Mgc3BsaXR0ZWRcbiAgLy8gbGlrZSB0aGlzOiBgfn5+fn5gIC0+IGB+YCArIGB+fmAgKyBgfn5gLCBsZWF2aW5nIG9uZSBtYXJrZXIgYXQgdGhlXG4gIC8vIHN0YXJ0IG9mIHRoZSBzZXF1ZW5jZS5cbiAgLy9cbiAgLy8gU28sIHdlIGhhdmUgdG8gbW92ZSBhbGwgdGhvc2UgbWFya2VycyBhZnRlciBzdWJzZXF1ZW50IHNfY2xvc2UgdGFncy5cbiAgLy9cbiAgd2hpbGUgKGxvbmVNYXJrZXJzLmxlbmd0aCkge1xuICAgIGkgPSBsb25lTWFya2Vycy5wb3AoKTtcbiAgICBqID0gaSArIDE7XG5cbiAgICB3aGlsZSAoaiA8IHN0YXRlLnRva2Vucy5sZW5ndGggJiYgc3RhdGUudG9rZW5zW2pdLnR5cGUgPT09ICdzX2Nsb3NlJykge1xuICAgICAgaisrO1xuICAgIH1cblxuICAgIGotLTtcblxuICAgIGlmIChpICE9PSBqKSB7XG4gICAgICB0b2tlbiA9IHN0YXRlLnRva2Vuc1tqXTtcbiAgICAgIHN0YXRlLnRva2Vuc1tqXSA9IHN0YXRlLnRva2Vuc1tpXTtcbiAgICAgIHN0YXRlLnRva2Vuc1tpXSA9IHRva2VuO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFdhbGsgdGhyb3VnaCBkZWxpbWl0ZXIgbGlzdCBhbmQgcmVwbGFjZSB0ZXh0IHRva2VucyB3aXRoIHRhZ3Ncbi8vXG5tb2R1bGUuZXhwb3J0cy5wb3N0UHJvY2VzcyA9IGZ1bmN0aW9uIHN0cmlrZXRocm91Z2goc3RhdGUpIHtcbiAgdmFyIGN1cnIsXG4gICAgICB0b2tlbnNfbWV0YSA9IHN0YXRlLnRva2Vuc19tZXRhLFxuICAgICAgbWF4ID0gc3RhdGUudG9rZW5zX21ldGEubGVuZ3RoO1xuXG4gIHBvc3RQcm9jZXNzKHN0YXRlLCBzdGF0ZS5kZWxpbWl0ZXJzKTtcblxuICBmb3IgKGN1cnIgPSAwOyBjdXJyIDwgbWF4OyBjdXJyKyspIHtcbiAgICBpZiAodG9rZW5zX21ldGFbY3Vycl0gJiYgdG9rZW5zX21ldGFbY3Vycl0uZGVsaW1pdGVycykge1xuICAgICAgcG9zdFByb2Nlc3Moc3RhdGUsIHRva2Vuc19tZXRhW2N1cnJdLmRlbGltaXRlcnMpO1xuICAgIH1cbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQVNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/strikethrough.js\n");
|
2218 |
|
2219 | }),
|
2220 |
|
2221 | "../../../node_modules/markdown-it/lib/rules_inline/text.js":
|
2222 |
|
2223 |
|
2224 |
|
2225 |
|
2226 | (function(module, exports, __webpack_require__) {
|
2227 |
|
2228 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Skip text characters for text token, place those to pending buffer\n // and increment current pos\n 'use strict'; // Rule to skip pure text\n // '{}$%@~+=:' reserved for extentions\n // !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n // !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n // http://spec.commonmark.org/0.15/#ascii-punctuation-character\n\n function isTerminatorChar(ch) {\n switch (ch) {\n case 0x0A\n /* \\n */\n :\n case 0x21\n /* ! */\n :\n case 0x23\n /* # */\n :\n case 0x24\n /* $ */\n :\n case 0x25\n /* % */\n :\n case 0x26\n /* & */\n :\n case 0x2A\n /* * */\n :\n case 0x2B\n /* + */\n :\n case 0x2D\n /* - */\n :\n case 0x3A\n /* : */\n :\n case 0x3C\n /* < */\n :\n case 0x3D\n /* = */\n :\n case 0x3E\n /* > */\n :\n case 0x40\n /* @ */\n :\n case 0x5B\n /* [ */\n :\n case 0x5C\n /* \\ */\n :\n case 0x5D\n /* ] */\n :\n case 0x5E\n /* ^ */\n :\n case 0x5F\n /* _ */\n :\n case 0x60\n /* ` */\n :\n case 0x7B\n /* { */\n :\n case 0x7D\n /* } */\n :\n case 0x7E\n /* ~ */\n :\n return true;\n\n default:\n return false;\n }\n }\n\n module.exports = function text(state, silent) {\n var pos = state.pos;\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n if (pos === state.pos) {\n return false;\n }\n\n if (!silent) {\n state.pending += state.src.slice(state.pos, pos);\n }\n\n state.pos = pos;\n return true;\n }; // Alternative implementation, for memory.\n //\n // It costs 10% of performance, but allows extend terminators list, if place it\n // to `ParcerInline` property. Probably, will switch to it sometime, such\n // flexibility required.\n\n /*\n var TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n \n module.exports = function text(state, silent) {\n var pos = state.pos,\n idx = state.src.slice(pos).search(TERMINATOR_RE);\n \n // first char is terminator -> empty text\n if (idx === 0) { return false; }\n \n // no terminator -> text till end of string\n if (idx < 0) {\n if (!silent) { state.pending += state.src.slice(pos); }\n state.pos = state.src.length;\n return true;\n }\n \n if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n \n state.pos += idx;\n \n return true;\n };*/\n\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvdGV4dC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL3RleHQuanM/ZTBjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTa2lwIHRleHQgY2hhcmFjdGVycyBmb3IgdGV4dCB0b2tlbiwgcGxhY2UgdGhvc2UgdG8gcGVuZGluZyBidWZmZXJcbi8vIGFuZCBpbmNyZW1lbnQgY3VycmVudCBwb3NcblxuJ3VzZSBzdHJpY3QnO1xuXG5cbi8vIFJ1bGUgdG8gc2tpcCBwdXJlIHRleHRcbi8vICd7fSQlQH4rPTonIHJlc2VydmVkIGZvciBleHRlbnRpb25zXG5cbi8vICEsIFwiLCAjLCAkLCAlLCAmLCAnLCAoLCApLCAqLCArLCAsLCAtLCAuLCAvLCA6LCA7LCA8LCA9LCA+LCA/LCBALCBbLCBcXCwgXSwgXiwgXywgYCwgeywgfCwgfSwgb3IgflxuXG4vLyAhISEhIERvbid0IGNvbmZ1c2Ugd2l0aCBcIk1hcmtkb3duIEFTQ0lJIFB1bmN0dWF0aW9uXCIgY2hhcnNcbi8vIGh0dHA6Ly9zcGVjLmNvbW1vbm1hcmsub3JnLzAuMTUvI2FzY2lpLXB1bmN0dWF0aW9uLWNoYXJhY3RlclxuZnVuY3Rpb24gaXNUZXJtaW5hdG9yQ2hhcihjaCkge1xuICBzd2l0Y2ggKGNoKSB7XG4gICAgY2FzZSAweDBBLyogXFxuICovOlxuICAgIGNhc2UgMHgyMS8qICEgKi86XG4gICAgY2FzZSAweDIzLyogIyAqLzpcbiAgICBjYXNlIDB4MjQvKiAkICovOlxuICAgIGNhc2UgMHgyNS8qICUgKi86XG4gICAgY2FzZSAweDI2LyogJiAqLzpcbiAgICBjYXNlIDB4MkEvKiAqICovOlxuICAgIGNhc2UgMHgyQi8qICsgKi86XG4gICAgY2FzZSAweDJELyogLSAqLzpcbiAgICBjYXNlIDB4M0EvKiA6ICovOlxuICAgIGNhc2UgMHgzQy8qIDwgKi86XG4gICAgY2FzZSAweDNELyogPSAqLzpcbiAgICBjYXNlIDB4M0UvKiA+ICovOlxuICAgIGNhc2UgMHg0MC8qIEAgKi86XG4gICAgY2FzZSAweDVCLyogWyAqLzpcbiAgICBjYXNlIDB4NUMvKiBcXCAqLzpcbiAgICBjYXNlIDB4NUQvKiBdICovOlxuICAgIGNhc2UgMHg1RS8qIF4gKi86XG4gICAgY2FzZSAweDVGLyogXyAqLzpcbiAgICBjYXNlIDB4NjAvKiBgICovOlxuICAgIGNhc2UgMHg3Qi8qIHsgKi86XG4gICAgY2FzZSAweDdELyogfSAqLzpcbiAgICBjYXNlIDB4N0UvKiB+ICovOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRleHQoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgcG9zID0gc3RhdGUucG9zO1xuXG4gIHdoaWxlIChwb3MgPCBzdGF0ZS5wb3NNYXggJiYgIWlzVGVybWluYXRvckNoYXIoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSkpIHtcbiAgICBwb3MrKztcbiAgfVxuXG4gIGlmIChwb3MgPT09IHN0YXRlLnBvcykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoIXNpbGVudCkgeyBzdGF0ZS5wZW5kaW5nICs9IHN0YXRlLnNyYy5zbGljZShzdGF0ZS5wb3MsIHBvcyk7IH1cblxuICBzdGF0ZS5wb3MgPSBwb3M7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBBbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgZm9yIG1lbW9yeS5cbi8vXG4vLyBJdCBjb3N0cyAxMCUgb2YgcGVyZm9ybWFuY2UsIGJ1dCBhbGxvd3MgZXh0ZW5kIHRlcm1pbmF0b3JzIGxpc3QsIGlmIHBsYWNlIGl0XG4vLyB0byBgUGFyY2VySW5saW5lYCBwcm9wZXJ0eS4gUHJvYmFibHksIHdpbGwgc3dpdGNoIHRvIGl0IHNvbWV0aW1lLCBzdWNoXG4vLyBmbGV4aWJpbGl0eSByZXF1aXJlZC5cblxuLypcbnZhciBURVJNSU5BVE9SX1JFID0gL1tcXG4hIyQlJiorXFwtOjw9PkBbXFxcXFxcXV5fYHt9fl0vO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRleHQoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgcG9zID0gc3RhdGUucG9zLFxuICAgICAgaWR4ID0gc3RhdGUuc3JjLnNsaWNlKHBvcykuc2VhcmNoKFRFUk1JTkFUT1JfUkUpO1xuXG4gIC8vIGZpcnN0IGNoYXIgaXMgdGVybWluYXRvciAtPiBlbXB0eSB0ZXh0XG4gIGlmIChpZHggPT09IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gbm8gdGVybWluYXRvciAtPiB0ZXh0IHRpbGwgZW5kIG9mIHN0cmluZ1xuICBpZiAoaWR4IDwgMCkge1xuICAgIGlmICghc2lsZW50KSB7IHN0YXRlLnBlbmRpbmcgKz0gc3RhdGUuc3JjLnNsaWNlKHBvcyk7IH1cbiAgICBzdGF0ZS5wb3MgPSBzdGF0ZS5zcmMubGVuZ3RoO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKCFzaWxlbnQpIHsgc3RhdGUucGVuZGluZyArPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBwb3MgKyBpZHgpOyB9XG5cbiAgc3RhdGUucG9zICs9IGlkeDtcblxuICByZXR1cm4gdHJ1ZTtcbn07Ki9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFJQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBMUJBO0FBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/text.js\n");
|
2229 |
|
2230 | }),
|
2231 |
|
2232 | "../../../node_modules/markdown-it/lib/rules_inline/text_collapse.js":
|
2233 |
|
2234 |
|
2235 |
|
2236 |
|
2237 | (function(module, exports, __webpack_require__) {
|
2238 |
|
2239 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Clean up tokens after emphasis and strikethrough postprocessing:\n // merge adjacent text nodes into one and re-calculate all token levels\n //\n // This is necessary because initially emphasis delimiter markers (*, _, ~)\n // are treated as their own separate text tokens. Then emphasis rule either\n // leaves them as text (needed to merge with adjacent text) or turns them\n // into opening/closing tags (which messes up levels inside).\n //\n 'use strict';\n\n module.exports = function text_collapse(state) {\n var curr,\n last,\n level = 0,\n tokens = state.tokens,\n max = state.tokens.length;\n\n for (curr = last = 0; curr < max; curr++) {\n // re-calculate levels after emphasis/strikethrough turns some text nodes\n // into opening/closing tags\n if (tokens[curr].nesting < 0) level--; // closing tag\n\n tokens[curr].level = level;\n if (tokens[curr].nesting > 0) level++; // opening tag\n\n if (tokens[curr].type === 'text' && curr + 1 < max && tokens[curr + 1].type === 'text') {\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n } else {\n if (curr !== last) {\n tokens[last] = tokens[curr];\n }\n\n last++;\n }\n }\n\n if (curr !== last) {\n tokens.length = last;\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvdGV4dF9jb2xsYXBzZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL3RleHRfY29sbGFwc2UuanM/YjkyMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDbGVhbiB1cCB0b2tlbnMgYWZ0ZXIgZW1waGFzaXMgYW5kIHN0cmlrZXRocm91Z2ggcG9zdHByb2Nlc3Npbmc6XG4vLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzIGludG8gb25lIGFuZCByZS1jYWxjdWxhdGUgYWxsIHRva2VuIGxldmVsc1xuLy9cbi8vIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaW5pdGlhbGx5IGVtcGhhc2lzIGRlbGltaXRlciBtYXJrZXJzICgqLCBfLCB+KVxuLy8gYXJlIHRyZWF0ZWQgYXMgdGhlaXIgb3duIHNlcGFyYXRlIHRleHQgdG9rZW5zLiBUaGVuIGVtcGhhc2lzIHJ1bGUgZWl0aGVyXG4vLyBsZWF2ZXMgdGhlbSBhcyB0ZXh0IChuZWVkZWQgdG8gbWVyZ2Ugd2l0aCBhZGphY2VudCB0ZXh0KSBvciB0dXJucyB0aGVtXG4vLyBpbnRvIG9wZW5pbmcvY2xvc2luZyB0YWdzICh3aGljaCBtZXNzZXMgdXAgbGV2ZWxzIGluc2lkZSkuXG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdGV4dF9jb2xsYXBzZShzdGF0ZSkge1xuICB2YXIgY3VyciwgbGFzdCxcbiAgICAgIGxldmVsID0gMCxcbiAgICAgIHRva2VucyA9IHN0YXRlLnRva2VucyxcbiAgICAgIG1heCA9IHN0YXRlLnRva2Vucy5sZW5ndGg7XG5cbiAgZm9yIChjdXJyID0gbGFzdCA9IDA7IGN1cnIgPCBtYXg7IGN1cnIrKykge1xuICAgIC8vIHJlLWNhbGN1bGF0ZSBsZXZlbHMgYWZ0ZXIgZW1waGFzaXMvc3RyaWtldGhyb3VnaCB0dXJucyBzb21lIHRleHQgbm9kZXNcbiAgICAvLyBpbnRvIG9wZW5pbmcvY2xvc2luZyB0YWdzXG4gICAgaWYgKHRva2Vuc1tjdXJyXS5uZXN0aW5nIDwgMCkgbGV2ZWwtLTsgLy8gY2xvc2luZyB0YWdcbiAgICB0b2tlbnNbY3Vycl0ubGV2ZWwgPSBsZXZlbDtcbiAgICBpZiAodG9rZW5zW2N1cnJdLm5lc3RpbmcgPiAwKSBsZXZlbCsrOyAvLyBvcGVuaW5nIHRhZ1xuXG4gICAgaWYgKHRva2Vuc1tjdXJyXS50eXBlID09PSAndGV4dCcgJiZcbiAgICAgICAgY3VyciArIDEgPCBtYXggJiZcbiAgICAgICAgdG9rZW5zW2N1cnIgKyAxXS50eXBlID09PSAndGV4dCcpIHtcblxuICAgICAgLy8gY29sbGFwc2UgdHdvIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgIHRva2Vuc1tjdXJyICsgMV0uY29udGVudCA9IHRva2Vuc1tjdXJyXS5jb250ZW50ICsgdG9rZW5zW2N1cnIgKyAxXS5jb250ZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VyciAhPT0gbGFzdCkgeyB0b2tlbnNbbGFzdF0gPSB0b2tlbnNbY3Vycl07IH1cblxuICAgICAgbGFzdCsrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjdXJyICE9PSBsYXN0KSB7XG4gICAgdG9rZW5zLmxlbmd0aCA9IGxhc3Q7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/text_collapse.js\n");
|
2240 |
|
2241 | }),
|
2242 |
|
2243 | "../../../node_modules/markdown-it/lib/token.js":
|
2244 |
|
2245 |
|
2246 |
|
2247 |
|
2248 | (function(module, exports, __webpack_require__) {
|
2249 |
|
2250 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Token class\n 'use strict';\n /**\n * class Token\n **/\n\n /**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\n\n function Token(type, tag, nesting) {\n /**\n * Token#type -> String\n *\n * Type of the token (string, e.g. \"paragraph_open\")\n **/\n this.type = type;\n /**\n * Token#tag -> String\n *\n * html tag name, e.g. \"p\"\n **/\n\n this.tag = tag;\n /**\n * Token#attrs -> Array\n *\n * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n **/\n\n this.attrs = null;\n /**\n * Token#map -> Array\n *\n * Source map info. Format: `[ line_begin, line_end ]`\n **/\n\n this.map = null;\n /**\n * Token#nesting -> Number\n *\n * Level change (number in {-1, 0, 1} set), where:\n *\n * - `1` means the tag is opening\n * - `0` means the tag is self-closing\n * - `-1` means the tag is closing\n **/\n\n this.nesting = nesting;\n /**\n * Token#level -> Number\n *\n * nesting level, the same as `state.level`\n **/\n\n this.level = 0;\n /**\n * Token#children -> Array\n *\n * An array of child nodes (inline and img tokens)\n **/\n\n this.children = null;\n /**\n * Token#content -> String\n *\n * In a case of self-closing tag (code, html, fence, etc.),\n * it has contents of this tag.\n **/\n\n this.content = '';\n /**\n * Token#markup -> String\n *\n * '*' or '_' for emphasis, fence string for fence, etc.\n **/\n\n this.markup = '';\n /**\n * Token#info -> String\n *\n * Additional information:\n *\n * - Info string for \"fence\" tokens\n * - The value \"auto\" for autolink \"link_open\" and \"link_close\" tokens\n * - The string value of the item marker for ordered-list \"list_item_open\" tokens\n **/\n\n this.info = '';\n /**\n * Token#meta -> Object\n *\n * A place for plugins to store an arbitrary data\n **/\n\n this.meta = null;\n /**\n * Token#block -> Boolean\n *\n * True for block-level tokens, false for inline tokens.\n * Used in renderer to calculate line breaks\n **/\n\n this.block = false;\n /**\n * Token#hidden -> Boolean\n *\n * If it's true, ignore this element when rendering. Used for tight lists\n * to hide paragraphs.\n **/\n\n this.hidden = false;\n }\n /**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\n\n\n Token.prototype.attrIndex = function attrIndex(name) {\n var attrs, i, len;\n\n if (!this.attrs) {\n return -1;\n }\n\n attrs = this.attrs;\n\n for (i = 0, len = attrs.length; i < len; i++) {\n if (attrs[i][0] === name) {\n return i;\n }\n }\n\n return -1;\n };\n /**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\n\n\n Token.prototype.attrPush = function attrPush(attrData) {\n if (this.attrs) {\n this.attrs.push(attrData);\n } else {\n this.attrs = [attrData];\n }\n };\n /**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\n\n\n Token.prototype.attrSet = function attrSet(name, value) {\n var idx = this.attrIndex(name),\n attrData = [name, value];\n\n if (idx < 0) {\n this.attrPush(attrData);\n } else {\n this.attrs[idx] = attrData;\n }\n };\n /**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\n\n\n Token.prototype.attrGet = function attrGet(name) {\n var idx = this.attrIndex(name),\n value = null;\n\n if (idx >= 0) {\n value = this.attrs[idx][1];\n }\n\n return value;\n };\n /**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\n\n\n Token.prototype.attrJoin = function attrJoin(name, value) {\n var idx = this.attrIndex(name);\n\n if (idx < 0) {\n this.attrPush([name, value]);\n } else {\n this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value;\n }\n };\n\n module.exports = Token;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi90b2tlbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvdG9rZW4uanM/ZTJjOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUb2tlbiBjbGFzc1xuXG4ndXNlIHN0cmljdCc7XG5cblxuLyoqXG4gKiBjbGFzcyBUb2tlblxuICoqL1xuXG4vKipcbiAqIG5ldyBUb2tlbih0eXBlLCB0YWcsIG5lc3RpbmcpXG4gKlxuICogQ3JlYXRlIG5ldyB0b2tlbiBhbmQgZmlsbCBwYXNzZWQgcHJvcGVydGllcy5cbiAqKi9cbmZ1bmN0aW9uIFRva2VuKHR5cGUsIHRhZywgbmVzdGluZykge1xuICAvKipcbiAgICogVG9rZW4jdHlwZSAtPiBTdHJpbmdcbiAgICpcbiAgICogVHlwZSBvZiB0aGUgdG9rZW4gKHN0cmluZywgZS5nLiBcInBhcmFncmFwaF9vcGVuXCIpXG4gICAqKi9cbiAgdGhpcy50eXBlICAgICA9IHR5cGU7XG5cbiAgLyoqXG4gICAqIFRva2VuI3RhZyAtPiBTdHJpbmdcbiAgICpcbiAgICogaHRtbCB0YWcgbmFtZSwgZS5nLiBcInBcIlxuICAgKiovXG4gIHRoaXMudGFnICAgICAgPSB0YWc7XG5cbiAgLyoqXG4gICAqIFRva2VuI2F0dHJzIC0+IEFycmF5XG4gICAqXG4gICAqIEh0bWwgYXR0cmlidXRlcy4gRm9ybWF0OiBgWyBbIG5hbWUxLCB2YWx1ZTEgXSwgWyBuYW1lMiwgdmFsdWUyIF0gXWBcbiAgICoqL1xuICB0aGlzLmF0dHJzICAgID0gbnVsbDtcblxuICAvKipcbiAgICogVG9rZW4jbWFwIC0+IEFycmF5XG4gICAqXG4gICAqIFNvdXJjZSBtYXAgaW5mby4gRm9ybWF0OiBgWyBsaW5lX2JlZ2luLCBsaW5lX2VuZCBdYFxuICAgKiovXG4gIHRoaXMubWFwICAgICAgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUb2tlbiNuZXN0aW5nIC0+IE51bWJlclxuICAgKlxuICAgKiBMZXZlbCBjaGFuZ2UgKG51bWJlciBpbiB7LTEsIDAsIDF9IHNldCksIHdoZXJlOlxuICAgKlxuICAgKiAtICBgMWAgbWVhbnMgdGhlIHRhZyBpcyBvcGVuaW5nXG4gICAqIC0gIGAwYCBtZWFucyB0aGUgdGFnIGlzIHNlbGYtY2xvc2luZ1xuICAgKiAtIGAtMWAgbWVhbnMgdGhlIHRhZyBpcyBjbG9zaW5nXG4gICAqKi9cbiAgdGhpcy5uZXN0aW5nICA9IG5lc3Rpbmc7XG5cbiAgLyoqXG4gICAqIFRva2VuI2xldmVsIC0+IE51bWJlclxuICAgKlxuICAgKiBuZXN0aW5nIGxldmVsLCB0aGUgc2FtZSBhcyBgc3RhdGUubGV2ZWxgXG4gICAqKi9cbiAgdGhpcy5sZXZlbCAgICA9IDA7XG5cbiAgLyoqXG4gICAqIFRva2VuI2NoaWxkcmVuIC0+IEFycmF5XG4gICAqXG4gICAqIEFuIGFycmF5IG9mIGNoaWxkIG5vZGVzIChpbmxpbmUgYW5kIGltZyB0b2tlbnMpXG4gICAqKi9cbiAgdGhpcy5jaGlsZHJlbiA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRva2VuI2NvbnRlbnQgLT4gU3RyaW5nXG4gICAqXG4gICAqIEluIGEgY2FzZSBvZiBzZWxmLWNsb3NpbmcgdGFnIChjb2RlLCBodG1sLCBmZW5jZSwgZXRjLiksXG4gICAqIGl0IGhhcyBjb250ZW50cyBvZiB0aGlzIHRhZy5cbiAgICoqL1xuICB0aGlzLmNvbnRlbnQgID0gJyc7XG5cbiAgLyoqXG4gICAqIFRva2VuI21hcmt1cCAtPiBTdHJpbmdcbiAgICpcbiAgICogJyonIG9yICdfJyBmb3IgZW1waGFzaXMsIGZlbmNlIHN0cmluZyBmb3IgZmVuY2UsIGV0Yy5cbiAgICoqL1xuICB0aGlzLm1hcmt1cCAgID0gJyc7XG5cbiAgLyoqXG4gICAqIFRva2VuI2luZm8gLT4gU3RyaW5nXG4gICAqXG4gICAqIEFkZGl0aW9uYWwgaW5mb3JtYXRpb246XG4gICAqXG4gICAqIC0gSW5mbyBzdHJpbmcgZm9yIFwiZmVuY2VcIiB0b2tlbnNcbiAgICogLSBUaGUgdmFsdWUgXCJhdXRvXCIgZm9yIGF1dG9saW5rIFwibGlua19vcGVuXCIgYW5kIFwibGlua19jbG9zZVwiIHRva2Vuc1xuICAgKiAtIFRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlIGl0ZW0gbWFya2VyIGZvciBvcmRlcmVkLWxpc3QgXCJsaXN0X2l0ZW1fb3BlblwiIHRva2Vuc1xuICAgKiovXG4gIHRoaXMuaW5mbyAgICAgPSAnJztcblxuICAvKipcbiAgICogVG9rZW4jbWV0YSAtPiBPYmplY3RcbiAgICpcbiAgICogQSBwbGFjZSBmb3IgcGx1Z2lucyB0byBzdG9yZSBhbiBhcmJpdHJhcnkgZGF0YVxuICAgKiovXG4gIHRoaXMubWV0YSAgICAgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUb2tlbiNibG9jayAtPiBCb29sZWFuXG4gICAqXG4gICAqIFRydWUgZm9yIGJsb2NrLWxldmVsIHRva2VucywgZmFsc2UgZm9yIGlubGluZSB0b2tlbnMuXG4gICAqIFVzZWQgaW4gcmVuZGVyZXIgdG8gY2FsY3VsYXRlIGxpbmUgYnJlYWtzXG4gICAqKi9cbiAgdGhpcy5ibG9jayAgICA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUb2tlbiNoaWRkZW4gLT4gQm9vbGVhblxuICAgKlxuICAgKiBJZiBpdCdzIHRydWUsIGlnbm9yZSB0aGlzIGVsZW1lbnQgd2hlbiByZW5kZXJpbmcuIFVzZWQgZm9yIHRpZ2h0IGxpc3RzXG4gICAqIHRvIGhpZGUgcGFyYWdyYXBocy5cbiAgICoqL1xuICB0aGlzLmhpZGRlbiAgID0gZmFsc2U7XG59XG5cblxuLyoqXG4gKiBUb2tlbi5hdHRySW5kZXgobmFtZSkgLT4gTnVtYmVyXG4gKlxuICogU2VhcmNoIGF0dHJpYnV0ZSBpbmRleCBieSBuYW1lLlxuICoqL1xuVG9rZW4ucHJvdG90eXBlLmF0dHJJbmRleCA9IGZ1bmN0aW9uIGF0dHJJbmRleChuYW1lKSB7XG4gIHZhciBhdHRycywgaSwgbGVuO1xuXG4gIGlmICghdGhpcy5hdHRycykgeyByZXR1cm4gLTE7IH1cblxuICBhdHRycyA9IHRoaXMuYXR0cnM7XG5cbiAgZm9yIChpID0gMCwgbGVuID0gYXR0cnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXR0cnNbaV1bMF0gPT09IG5hbWUpIHsgcmV0dXJuIGk7IH1cbiAgfVxuICByZXR1cm4gLTE7XG59O1xuXG5cbi8qKlxuICogVG9rZW4uYXR0clB1c2goYXR0ckRhdGEpXG4gKlxuICogQWRkIGBbIG5hbWUsIHZhbHVlIF1gIGF0dHJpYnV0ZSB0byBsaXN0LiBJbml0IGF0dHJzIGlmIG5lY2Vzc2FyeVxuICoqL1xuVG9rZW4ucHJvdG90eXBlLmF0dHJQdXNoID0gZnVuY3Rpb24gYXR0clB1c2goYXR0ckRhdGEpIHtcbiAgaWYgKHRoaXMuYXR0cnMpIHtcbiAgICB0aGlzLmF0dHJzLnB1c2goYXR0ckRhdGEpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuYXR0cnMgPSBbIGF0dHJEYXRhIF07XG4gIH1cbn07XG5cblxuLyoqXG4gKiBUb2tlbi5hdHRyU2V0KG5hbWUsIHZhbHVlKVxuICpcbiAqIFNldCBgbmFtZWAgYXR0cmlidXRlIHRvIGB2YWx1ZWAuIE92ZXJyaWRlIG9sZCB2YWx1ZSBpZiBleGlzdHMuXG4gKiovXG5Ub2tlbi5wcm90b3R5cGUuYXR0clNldCA9IGZ1bmN0aW9uIGF0dHJTZXQobmFtZSwgdmFsdWUpIHtcbiAgdmFyIGlkeCA9IHRoaXMuYXR0ckluZGV4KG5hbWUpLFxuICAgICAgYXR0ckRhdGEgPSBbIG5hbWUsIHZhbHVlIF07XG5cbiAgaWYgKGlkeCA8IDApIHtcbiAgICB0aGlzLmF0dHJQdXNoKGF0dHJEYXRhKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmF0dHJzW2lkeF0gPSBhdHRyRGF0YTtcbiAgfVxufTtcblxuXG4vKipcbiAqIFRva2VuLmF0dHJHZXQobmFtZSlcbiAqXG4gKiBHZXQgdGhlIHZhbHVlIG9mIGF0dHJpYnV0ZSBgbmFtZWAsIG9yIG51bGwgaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gKiovXG5Ub2tlbi5wcm90b3R5cGUuYXR0ckdldCA9IGZ1bmN0aW9uIGF0dHJHZXQobmFtZSkge1xuICB2YXIgaWR4ID0gdGhpcy5hdHRySW5kZXgobmFtZSksIHZhbHVlID0gbnVsbDtcbiAgaWYgKGlkeCA+PSAwKSB7XG4gICAgdmFsdWUgPSB0aGlzLmF0dHJzW2lkeF1bMV07XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuXG4vKipcbiAqIFRva2VuLmF0dHJKb2luKG5hbWUsIHZhbHVlKVxuICpcbiAqIEpvaW4gdmFsdWUgdG8gZXhpc3RpbmcgYXR0cmlidXRlIHZpYSBzcGFjZS4gT3IgY3JlYXRlIG5ldyBhdHRyaWJ1dGUgaWYgbm90XG4gKiBleGlzdHMuIFVzZWZ1bCB0byBvcGVyYXRlIHdpdGggdG9rZW4gY2xhc3Nlcy5cbiAqKi9cblRva2VuLnByb3RvdHlwZS5hdHRySm9pbiA9IGZ1bmN0aW9uIGF0dHJKb2luKG5hbWUsIHZhbHVlKSB7XG4gIHZhciBpZHggPSB0aGlzLmF0dHJJbmRleChuYW1lKTtcblxuICBpZiAoaWR4IDwgMCkge1xuICAgIHRoaXMuYXR0clB1c2goWyBuYW1lLCB2YWx1ZSBdKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmF0dHJzW2lkeF1bMV0gPSB0aGlzLmF0dHJzW2lkeF1bMV0gKyAnICcgKyB2YWx1ZTtcbiAgfVxufTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFRva2VuO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/token.js\n");
|
2251 |
|
2252 | }),
|
2253 |
|
2254 | "../../../node_modules/mdurl/decode.js":
|
2255 |
|
2256 |
|
2257 |
|
2258 |
|
2259 | (function(module, exports, __webpack_require__) {
|
2260 |
|
2261 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n /* eslint-disable no-bitwise */\n\n var decodeCache = {};\n\n function getDecodeCache(exclude) {\n var i,\n ch,\n cache = decodeCache[exclude];\n\n if (cache) {\n return cache;\n }\n\n cache = decodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (i = 0; i < exclude.length; i++) {\n ch = exclude.charCodeAt(i);\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache;\n } // Decode percent-encoded string.\n //\n\n\n function decode(string, exclude) {\n var cache;\n\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars;\n }\n\n cache = getDecodeCache(exclude);\n return string.replace(/(%[a-f0-9]{2})+/gi, function (seq) {\n var i,\n l,\n b1,\n b2,\n b3,\n b4,\n chr,\n result = '';\n\n for (i = 0, l = seq.length; i < l; i += 3) {\n b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 0x80) {\n result += cache[b1];\n continue;\n }\n\n if ((b1 & 0xE0) === 0xC0 && i + 3 < l) {\n // 110xxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 0xC0) === 0x80) {\n chr = b1 << 6 & 0x7C0 | b2 & 0x3F;\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue;\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && i + 6 < l) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n chr = b1 << 12 & 0xF000 | b2 << 6 & 0xFC0 | b3 & 0x3F;\n\n if (chr < 0x800 || chr >= 0xD800 && chr <= 0xDFFF) {\n result += '\\ufffd\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && i + 9 < l) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n chr = b1 << 18 & 0x1C0000 | b2 << 12 & 0x3F000 | b3 << 6 & 0xFC0 | b4 & 0x3F;\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd';\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += '\\ufffd';\n }\n\n return result;\n });\n }\n\n decode.defaultChars = ';/?:@&=+$,#';\n decode.componentChars = '';\n module.exports = decode;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21kdXJsL2RlY29kZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tZHVybC9kZWNvZGUuanM/NjIzNiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbid1c2Ugc3RyaWN0JztcblxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG5cbnZhciBkZWNvZGVDYWNoZSA9IHt9O1xuXG5mdW5jdGlvbiBnZXREZWNvZGVDYWNoZShleGNsdWRlKSB7XG4gIHZhciBpLCBjaCwgY2FjaGUgPSBkZWNvZGVDYWNoZVtleGNsdWRlXTtcbiAgaWYgKGNhY2hlKSB7IHJldHVybiBjYWNoZTsgfVxuXG4gIGNhY2hlID0gZGVjb2RlQ2FjaGVbZXhjbHVkZV0gPSBbXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgMTI4OyBpKyspIHtcbiAgICBjaCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7XG4gICAgY2FjaGUucHVzaChjaCk7XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgZXhjbHVkZS5sZW5ndGg7IGkrKykge1xuICAgIGNoID0gZXhjbHVkZS5jaGFyQ29kZUF0KGkpO1xuICAgIGNhY2hlW2NoXSA9ICclJyArICgnMCcgKyBjaC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkuc2xpY2UoLTIpO1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlO1xufVxuXG5cbi8vIERlY29kZSBwZXJjZW50LWVuY29kZWQgc3RyaW5nLlxuLy9cbmZ1bmN0aW9uIGRlY29kZShzdHJpbmcsIGV4Y2x1ZGUpIHtcbiAgdmFyIGNhY2hlO1xuXG4gIGlmICh0eXBlb2YgZXhjbHVkZSAhPT0gJ3N0cmluZycpIHtcbiAgICBleGNsdWRlID0gZGVjb2RlLmRlZmF1bHRDaGFycztcbiAgfVxuXG4gIGNhY2hlID0gZ2V0RGVjb2RlQ2FjaGUoZXhjbHVkZSk7XG5cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8oJVthLWYwLTldezJ9KSsvZ2ksIGZ1bmN0aW9uKHNlcSkge1xuICAgIHZhciBpLCBsLCBiMSwgYjIsIGIzLCBiNCwgY2hyLFxuICAgICAgICByZXN1bHQgPSAnJztcblxuICAgIGZvciAoaSA9IDAsIGwgPSBzZXEubGVuZ3RoOyBpIDwgbDsgaSArPSAzKSB7XG4gICAgICBiMSA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgMSwgaSArIDMpLCAxNik7XG5cbiAgICAgIGlmIChiMSA8IDB4ODApIHtcbiAgICAgICAgcmVzdWx0ICs9IGNhY2hlW2IxXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICgoYjEgJiAweEUwKSA9PT0gMHhDMCAmJiAoaSArIDMgPCBsKSkge1xuICAgICAgICAvLyAxMTB4eHh4eCAxMHh4eHh4eFxuICAgICAgICBiMiA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgNCwgaSArIDYpLCAxNik7XG5cbiAgICAgICAgaWYgKChiMiAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgY2hyID0gKChiMSA8PCA2KSAmIDB4N0MwKSB8IChiMiAmIDB4M0YpO1xuXG4gICAgICAgICAgaWYgKGNociA8IDB4ODApIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSAnXFx1ZmZmZFxcdWZmZmQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoKGIxICYgMHhGMCkgPT09IDB4RTAgJiYgKGkgKyA2IDwgbCkpIHtcbiAgICAgICAgLy8gMTExMHh4eHggMTB4eHh4eHggMTB4eHh4eHhcbiAgICAgICAgYjIgPSBwYXJzZUludChzZXEuc2xpY2UoaSArIDQsIGkgKyA2KSwgMTYpO1xuICAgICAgICBiMyA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgNywgaSArIDkpLCAxNik7XG5cbiAgICAgICAgaWYgKChiMiAmIDB4QzApID09PSAweDgwICYmIChiMyAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgY2hyID0gKChiMSA8PCAxMikgJiAweEYwMDApIHwgKChiMiA8PCA2KSAmIDB4RkMwKSB8IChiMyAmIDB4M0YpO1xuXG4gICAgICAgICAgaWYgKGNociA8IDB4ODAwIHx8IChjaHIgPj0gMHhEODAwICYmIGNociA8PSAweERGRkYpKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gJ1xcdWZmZmRcXHVmZmZkXFx1ZmZmZCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaSArPSA2O1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICgoYjEgJiAweEY4KSA9PT0gMHhGMCAmJiAoaSArIDkgPCBsKSkge1xuICAgICAgICAvLyAxMTExMTB4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eFxuICAgICAgICBiMiA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgNCwgaSArIDYpLCAxNik7XG4gICAgICAgIGIzID0gcGFyc2VJbnQoc2VxLnNsaWNlKGkgKyA3LCBpICsgOSksIDE2KTtcbiAgICAgICAgYjQgPSBwYXJzZUludChzZXEuc2xpY2UoaSArIDEwLCBpICsgMTIpLCAxNik7XG5cbiAgICAgICAgaWYgKChiMiAmIDB4QzApID09PSAweDgwICYmIChiMyAmIDB4QzApID09PSAweDgwICYmIChiNCAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgY2hyID0gKChiMSA8PCAxOCkgJiAweDFDMDAwMCkgfCAoKGIyIDw8IDEyKSAmIDB4M0YwMDApIHwgKChiMyA8PCA2KSAmIDB4RkMwKSB8IChiNCAmIDB4M0YpO1xuXG4gICAgICAgICAgaWYgKGNociA8IDB4MTAwMDAgfHwgY2hyID4gMHgxMEZGRkYpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSAnXFx1ZmZmZFxcdWZmZmRcXHVmZmZkXFx1ZmZmZCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNociAtPSAweDEwMDAwO1xuICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODAwICsgKGNociA+PiAxMCksIDB4REMwMCArIChjaHIgJiAweDNGRikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGkgKz0gOTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXN1bHQgKz0gJ1xcdWZmZmQnO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5cbmRlY29kZS5kZWZhdWx0Q2hhcnMgICA9ICc7Lz86QCY9KyQsIyc7XG5kZWNvZGUuY29tcG9uZW50Q2hhcnMgPSAnJztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY29kZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mdurl/decode.js\n");
|
2262 |
|
2263 | }),
|
2264 |
|
2265 | "../../../node_modules/mdurl/encode.js":
|
2266 |
|
2267 |
|
2268 |
|
2269 |
|
2270 | (function(module, exports, __webpack_require__) {
|
2271 |
|
2272 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n var encodeCache = {}; // Create a lookup array where anything but characters in `chars` string\n // and alphanumeric chars is percent-encoded.\n //\n\n function getEncodeCache(exclude) {\n var i,\n ch,\n cache = encodeCache[exclude];\n\n if (cache) {\n return cache;\n }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n } // Encode unsafe characters with percent-encoding, skipping already\n // encoded sequences.\n //\n // - string - string to encode\n // - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n // - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n //\n\n\n function encode(string, exclude, keepEscaped) {\n var i,\n l,\n code,\n nextCode,\n cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25\n /* % */\n && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n }\n\n encode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\n encode.componentChars = \"-_.!~*'()\";\n module.exports = encode;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21kdXJsL2VuY29kZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tZHVybC9lbmNvZGUuanM/NmZiNiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbid1c2Ugc3RyaWN0JztcblxuXG52YXIgZW5jb2RlQ2FjaGUgPSB7fTtcblxuXG4vLyBDcmVhdGUgYSBsb29rdXAgYXJyYXkgd2hlcmUgYW55dGhpbmcgYnV0IGNoYXJhY3RlcnMgaW4gYGNoYXJzYCBzdHJpbmdcbi8vIGFuZCBhbHBoYW51bWVyaWMgY2hhcnMgaXMgcGVyY2VudC1lbmNvZGVkLlxuLy9cbmZ1bmN0aW9uIGdldEVuY29kZUNhY2hlKGV4Y2x1ZGUpIHtcbiAgdmFyIGksIGNoLCBjYWNoZSA9IGVuY29kZUNhY2hlW2V4Y2x1ZGVdO1xuICBpZiAoY2FjaGUpIHsgcmV0dXJuIGNhY2hlOyB9XG5cbiAgY2FjaGUgPSBlbmNvZGVDYWNoZVtleGNsdWRlXSA9IFtdO1xuXG4gIGZvciAoaSA9IDA7IGkgPCAxMjg7IGkrKykge1xuICAgIGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShpKTtcblxuICAgIGlmICgvXlswLTlhLXpdJC9pLnRlc3QoY2gpKSB7XG4gICAgICAvLyBhbHdheXMgYWxsb3cgdW5lbmNvZGVkIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzXG4gICAgICBjYWNoZS5wdXNoKGNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FjaGUucHVzaCgnJScgKyAoJzAnICsgaS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkuc2xpY2UoLTIpKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgZXhjbHVkZS5sZW5ndGg7IGkrKykge1xuICAgIGNhY2hlW2V4Y2x1ZGUuY2hhckNvZGVBdChpKV0gPSBleGNsdWRlW2ldO1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlO1xufVxuXG5cbi8vIEVuY29kZSB1bnNhZmUgY2hhcmFjdGVycyB3aXRoIHBlcmNlbnQtZW5jb2RpbmcsIHNraXBwaW5nIGFscmVhZHlcbi8vIGVuY29kZWQgc2VxdWVuY2VzLlxuLy9cbi8vICAtIHN0cmluZyAgICAgICAtIHN0cmluZyB0byBlbmNvZGVcbi8vICAtIGV4Y2x1ZGUgICAgICAtIGxpc3Qgb2YgY2hhcmFjdGVycyB0byBpZ25vcmUgKGluIGFkZGl0aW9uIHRvIGEtekEtWjAtOSlcbi8vICAtIGtlZXBFc2NhcGVkICAtIGRvbid0IGVuY29kZSAnJScgaW4gYSBjb3JyZWN0IGVzY2FwZSBzZXF1ZW5jZSAoZGVmYXVsdDogdHJ1ZSlcbi8vXG5mdW5jdGlvbiBlbmNvZGUoc3RyaW5nLCBleGNsdWRlLCBrZWVwRXNjYXBlZCkge1xuICB2YXIgaSwgbCwgY29kZSwgbmV4dENvZGUsIGNhY2hlLFxuICAgICAgcmVzdWx0ID0gJyc7XG5cbiAgaWYgKHR5cGVvZiBleGNsdWRlICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGVuY29kZShzdHJpbmcsIGtlZXBFc2NhcGVkKVxuICAgIGtlZXBFc2NhcGVkICA9IGV4Y2x1ZGU7XG4gICAgZXhjbHVkZSA9IGVuY29kZS5kZWZhdWx0Q2hhcnM7XG4gIH1cblxuICBpZiAodHlwZW9mIGtlZXBFc2NhcGVkID09PSAndW5kZWZpbmVkJykge1xuICAgIGtlZXBFc2NhcGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGNhY2hlID0gZ2V0RW5jb2RlQ2FjaGUoZXhjbHVkZSk7XG5cbiAgZm9yIChpID0gMCwgbCA9IHN0cmluZy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb2RlID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG5cbiAgICBpZiAoa2VlcEVzY2FwZWQgJiYgY29kZSA9PT0gMHgyNSAvKiAlICovICYmIGkgKyAyIDwgbCkge1xuICAgICAgaWYgKC9eWzAtOWEtZl17Mn0kL2kudGVzdChzdHJpbmcuc2xpY2UoaSArIDEsIGkgKyAzKSkpIHtcbiAgICAgICAgcmVzdWx0ICs9IHN0cmluZy5zbGljZShpLCBpICsgMyk7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPCAxMjgpIHtcbiAgICAgIHJlc3VsdCArPSBjYWNoZVtjb2RlXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjb2RlID49IDB4RDgwMCAmJiBjb2RlIDw9IDB4REZGRikge1xuICAgICAgaWYgKGNvZGUgPj0gMHhEODAwICYmIGNvZGUgPD0gMHhEQkZGICYmIGkgKyAxIDwgbCkge1xuICAgICAgICBuZXh0Q29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgICAgICAgaWYgKG5leHRDb2RlID49IDB4REMwMCAmJiBuZXh0Q29kZSA8PSAweERGRkYpIHtcbiAgICAgICAgICByZXN1bHQgKz0gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ1tpXSArIHN0cmluZ1tpICsgMV0pO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzdWx0ICs9ICclRUYlQkYlQkQnO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcmVzdWx0ICs9IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZW5jb2RlLmRlZmF1bHRDaGFycyAgID0gXCI7Lz86QCY9KyQsLV8uIX4qJygpI1wiO1xuZW5jb2RlLmNvbXBvbmVudENoYXJzID0gXCItXy4hfionKClcIjtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGVuY29kZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mdurl/encode.js\n");
|
2273 |
|
2274 | }),
|
2275 |
|
2276 | "../../../node_modules/mdurl/format.js":
|
2277 |
|
2278 |
|
2279 |
|
2280 |
|
2281 | (function(module, exports, __webpack_require__) {
|
2282 |
|
2283 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n module.exports = function format(url) {\n var result = '';\n result += url.protocol || '';\n result += url.slashes ? '//' : '';\n result += url.auth ? url.auth + '@' : '';\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']';\n } else {\n result += url.hostname || '';\n }\n\n result += url.port ? ':' + url.port : '';\n result += url.pathname || '';\n result += url.search || '';\n result += url.hash || '';\n return result;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21kdXJsL2Zvcm1hdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tZHVybC9mb3JtYXQuanM/OTgyZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZvcm1hdCh1cmwpIHtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuXG4gIHJlc3VsdCArPSB1cmwucHJvdG9jb2wgfHwgJyc7XG4gIHJlc3VsdCArPSB1cmwuc2xhc2hlcyA/ICcvLycgOiAnJztcbiAgcmVzdWx0ICs9IHVybC5hdXRoID8gdXJsLmF1dGggKyAnQCcgOiAnJztcblxuICBpZiAodXJsLmhvc3RuYW1lICYmIHVybC5ob3N0bmFtZS5pbmRleE9mKCc6JykgIT09IC0xKSB7XG4gICAgLy8gaXB2NiBhZGRyZXNzXG4gICAgcmVzdWx0ICs9ICdbJyArIHVybC5ob3N0bmFtZSArICddJztcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgKz0gdXJsLmhvc3RuYW1lIHx8ICcnO1xuICB9XG5cbiAgcmVzdWx0ICs9IHVybC5wb3J0ID8gJzonICsgdXJsLnBvcnQgOiAnJztcbiAgcmVzdWx0ICs9IHVybC5wYXRobmFtZSB8fCAnJztcbiAgcmVzdWx0ICs9IHVybC5zZWFyY2ggfHwgJyc7XG4gIHJlc3VsdCArPSB1cmwuaGFzaCB8fCAnJztcblxuICByZXR1cm4gcmVzdWx0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mdurl/format.js\n");
|
2284 |
|
2285 | }),
|
2286 |
|
2287 | "../../../node_modules/mdurl/index.js":
|
2288 |
|
2289 |
|
2290 |
|
2291 |
|
2292 | (function(module, exports, __webpack_require__) {
|
2293 |
|
2294 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n module.exports.encode = __webpack_require__(/*! ./encode */ \"../../../node_modules/mdurl/encode.js\");\n module.exports.decode = __webpack_require__(/*! ./decode */ \"../../../node_modules/mdurl/decode.js\");\n module.exports.format = __webpack_require__(/*! ./format */ \"../../../node_modules/mdurl/format.js\");\n module.exports.parse = __webpack_require__(/*! ./parse */ \"../../../node_modules/mdurl/parse.js\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21kdXJsL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21kdXJsL2luZGV4LmpzPzg0ZWYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzLmVuY29kZSA9IHJlcXVpcmUoJy4vZW5jb2RlJyk7XG5tb2R1bGUuZXhwb3J0cy5kZWNvZGUgPSByZXF1aXJlKCcuL2RlY29kZScpO1xubW9kdWxlLmV4cG9ydHMuZm9ybWF0ID0gcmVxdWlyZSgnLi9mb3JtYXQnKTtcbm1vZHVsZS5leHBvcnRzLnBhcnNlICA9IHJlcXVpcmUoJy4vcGFyc2UnKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mdurl/index.js\n");
|
2295 |
|
2296 | }),
|
2297 |
|
2298 | "../../../node_modules/mdurl/parse.js":
|
2299 |
|
2300 |
|
2301 |
|
2302 |
|
2303 | (function(module, exports, __webpack_require__) {
|
2304 |
|
2305 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Copyright Joyent, Inc. and other Node contributors.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a\n // copy of this software and associated documentation files (the\n // \"Software\"), to deal in the Software without restriction, including\n // without limitation the rights to use, copy, modify, merge, publish,\n // distribute, sublicense, and/or sell copies of the Software, and to permit\n // persons to whom the Software is furnished to do so, subject to the\n // following conditions:\n //\n // The above copyright notice and this permission notice shall be included\n // in all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n // USE OR OTHER DEALINGS IN THE SOFTWARE.\n 'use strict'; //\n // Changes from joyent/node:\n //\n // 1. No leading slash in paths,\n // e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n //\n // 2. Backslashes are not replaced with slashes,\n // so `http:\\\\example.org\\` is treated like a relative path\n //\n // 3. Trailing colon is treated like a part of the path,\n // i.e. in `http://example.org:foo` pathname is `:foo`\n //\n // 4. Nothing is URL-encoded in the resulting object,\n // (in joyent/node some chars in auth and paths are encoded)\n //\n // 5. `url.parse()` does not have `parseQueryString` argument\n //\n // 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n // which can be constructed using other parts of the url.\n //\n\n function Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.pathname = null;\n } // Reference: RFC 3986, RFC 1808, RFC 2396\n // define these here so at least they only have to be\n // compiled once on the first module load.\n\n\n var protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n\n /* eslint-disable no-script-url */\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n };\n /* eslint-enable no-script-url */\n\n function urlParse(url, slashesDenoteHost) {\n if (url && url instanceof Url) {\n return url;\n }\n\n var u = new Url();\n u.parse(url, slashesDenoteHost);\n return u;\n }\n\n Url.prototype.parse = function (url, slashesDenoteHost) {\n var i,\n l,\n lowerProto,\n hec,\n slashes,\n rest = url; // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n\n if (simplePath) {\n this.pathname = simplePath[1];\n\n if (simplePath[2]) {\n this.search = simplePath[2];\n }\n\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n\n if (proto) {\n proto = proto[0];\n lowerProto = proto.toLowerCase();\n this.protocol = proto;\n rest = rest.substr(proto.length);\n } // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n\n\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//';\n\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n\n for (i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i]);\n\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n } // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n\n\n var auth, atSign;\n\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n } // Now we have a portion which is definitely the auth.\n // Pull that off.\n\n\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = auth;\n } // the host is the remaining to the left of the first non-host char\n\n\n hostEnd = -1;\n\n for (i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i]);\n\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n } // if we still have not hit it, then the entire thing is a host.\n\n\n if (hostEnd === -1) {\n hostEnd = rest.length;\n }\n\n if (rest[hostEnd - 1] === ':') {\n hostEnd--;\n }\n\n var host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd); // pull out port.\n\n this.parseHost(host); // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n\n this.hostname = this.hostname || ''; // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; // validate a little.\n\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n\n for (i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n\n if (!part) {\n continue;\n }\n\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n } // we test again with ASCII char only\n\n\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n\n if (notHost.length) {\n rest = notHost.join('.') + rest;\n }\n\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } // strip [ and ] from the hostname\n // the host field still retains them, though\n\n\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n }\n } // chop off from the tail first.\n\n\n var hash = rest.indexOf('#');\n\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n\n var qm = rest.indexOf('?');\n\n if (qm !== -1) {\n this.search = rest.substr(qm);\n rest = rest.slice(0, qm);\n }\n\n if (rest) {\n this.pathname = rest;\n }\n\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '';\n }\n\n return this;\n };\n\n Url.prototype.parseHost = function (host) {\n var port = portPattern.exec(host);\n\n if (port) {\n port = port[0];\n\n if (port !== ':') {\n this.port = port.substr(1);\n }\n\n host = host.substr(0, host.length - port.length);\n }\n\n if (host) {\n this.hostname = host;\n }\n };\n\n module.exports = urlParse;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21kdXJsL3BhcnNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21kdXJsL3BhcnNlLmpzP2Q4MTIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLy9cbi8vIENoYW5nZXMgZnJvbSBqb3llbnQvbm9kZTpcbi8vXG4vLyAxLiBObyBsZWFkaW5nIHNsYXNoIGluIHBhdGhzLFxuLy8gICAgZS5nLiBpbiBgdXJsLnBhcnNlKCdodHRwOi8vZm9vP2JhcicpYCBwYXRobmFtZSBpcyBgYCwgbm90IGAvYFxuLy9cbi8vIDIuIEJhY2tzbGFzaGVzIGFyZSBub3QgcmVwbGFjZWQgd2l0aCBzbGFzaGVzLFxuLy8gICAgc28gYGh0dHA6XFxcXGV4YW1wbGUub3JnXFxgIGlzIHRyZWF0ZWQgbGlrZSBhIHJlbGF0aXZlIHBhdGhcbi8vXG4vLyAzLiBUcmFpbGluZyBjb2xvbiBpcyB0cmVhdGVkIGxpa2UgYSBwYXJ0IG9mIHRoZSBwYXRoLFxuLy8gICAgaS5lLiBpbiBgaHR0cDovL2V4YW1wbGUub3JnOmZvb2AgcGF0aG5hbWUgaXMgYDpmb29gXG4vL1xuLy8gNC4gTm90aGluZyBpcyBVUkwtZW5jb2RlZCBpbiB0aGUgcmVzdWx0aW5nIG9iamVjdCxcbi8vICAgIChpbiBqb3llbnQvbm9kZSBzb21lIGNoYXJzIGluIGF1dGggYW5kIHBhdGhzIGFyZSBlbmNvZGVkKVxuLy9cbi8vIDUuIGB1cmwucGFyc2UoKWAgZG9lcyBub3QgaGF2ZSBgcGFyc2VRdWVyeVN0cmluZ2AgYXJndW1lbnRcbi8vXG4vLyA2LiBSZW1vdmVkIGV4dHJhbmVvdXMgcmVzdWx0IHByb3BlcnRpZXM6IGBob3N0YCwgYHBhdGhgLCBgcXVlcnlgLCBldGMuLFxuLy8gICAgd2hpY2ggY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIG90aGVyIHBhcnRzIG9mIHRoZSB1cmwuXG4vL1xuXG5cbmZ1bmN0aW9uIFVybCgpIHtcbiAgdGhpcy5wcm90b2NvbCA9IG51bGw7XG4gIHRoaXMuc2xhc2hlcyA9IG51bGw7XG4gIHRoaXMuYXV0aCA9IG51bGw7XG4gIHRoaXMucG9ydCA9IG51bGw7XG4gIHRoaXMuaG9zdG5hbWUgPSBudWxsO1xuICB0aGlzLmhhc2ggPSBudWxsO1xuICB0aGlzLnNlYXJjaCA9IG51bGw7XG4gIHRoaXMucGF0aG5hbWUgPSBudWxsO1xufVxuXG4vLyBSZWZlcmVuY2U6IFJGQyAzOTg2LCBSRkMgMTgwOCwgUkZDIDIzOTZcblxuLy8gZGVmaW5lIHRoZXNlIGhlcmUgc28gYXQgbGVhc3QgdGhleSBvbmx5IGhhdmUgdG8gYmVcbi8vIGNvbXBpbGVkIG9uY2Ugb24gdGhlIGZpcnN0IG1vZHVsZSBsb2FkLlxudmFyIHByb3RvY29sUGF0dGVybiA9IC9eKFthLXowLTkuKy1dKzopL2ksXG4gICAgcG9ydFBhdHRlcm4gPSAvOlswLTldKiQvLFxuXG4gICAgLy8gU3BlY2lhbCBjYXNlIGZvciBhIHNpbXBsZSBwYXRoIFVSTFxuICAgIHNpbXBsZVBhdGhQYXR0ZXJuID0gL14oXFwvXFwvPyg/IVxcLylbXlxcP1xcc10qKShcXD9bXlxcc10qKT8kLyxcblxuICAgIC8vIFJGQyAyMzk2OiBjaGFyYWN0ZXJzIHJlc2VydmVkIGZvciBkZWxpbWl0aW5nIFVSTHMuXG4gICAgLy8gV2UgYWN0dWFsbHkganVzdCBhdXRvLWVzY2FwZSB0aGVzZS5cbiAgICBkZWxpbXMgPSBbICc8JywgJz4nLCAnXCInLCAnYCcsICcgJywgJ1xccicsICdcXG4nLCAnXFx0JyBdLFxuXG4gICAgLy8gUkZDIDIzOTY6IGNoYXJhY3RlcnMgbm90IGFsbG93ZWQgZm9yIHZhcmlvdXMgcmVhc29ucy5cbiAgICB1bndpc2UgPSBbICd7JywgJ30nLCAnfCcsICdcXFxcJywgJ14nLCAnYCcgXS5jb25jYXQoZGVsaW1zKSxcblxuICAgIC8vIEFsbG93ZWQgYnkgUkZDcywgYnV0IGNhdXNlIG9mIFhTUyBhdHRhY2tzLiAgQWx3YXlzIGVzY2FwZSB0aGVzZS5cbiAgICBhdXRvRXNjYXBlID0gWyAnXFwnJyBdLmNvbmNhdCh1bndpc2UpLFxuICAgIC8vIENoYXJhY3RlcnMgdGhhdCBhcmUgbmV2ZXIgZXZlciBhbGxvd2VkIGluIGEgaG9zdG5hbWUuXG4gICAgLy8gTm90ZSB0aGF0IGFueSBpbnZhbGlkIGNoYXJzIGFyZSBhbHNvIGhhbmRsZWQsIGJ1dCB0aGVzZVxuICAgIC8vIGFyZSB0aGUgb25lcyB0aGF0IGFyZSAqZXhwZWN0ZWQqIHRvIGJlIHNlZW4sIHNvIHdlIGZhc3QtcGF0aFxuICAgIC8vIHRoZW0uXG4gICAgbm9uSG9zdENoYXJzID0gWyAnJScsICcvJywgJz8nLCAnOycsICcjJyBdLmNvbmNhdChhdXRvRXNjYXBlKSxcbiAgICBob3N0RW5kaW5nQ2hhcnMgPSBbICcvJywgJz8nLCAnIycgXSxcbiAgICBob3N0bmFtZU1heExlbiA9IDI1NSxcbiAgICBob3N0bmFtZVBhcnRQYXR0ZXJuID0gL15bK2EtejAtOUEtWl8tXXswLDYzfSQvLFxuICAgIGhvc3RuYW1lUGFydFN0YXJ0ID0gL14oWythLXowLTlBLVpfLV17MCw2M30pKC4qKSQvLFxuICAgIC8vIHByb3RvY29scyB0aGF0IGNhbiBhbGxvdyBcInVuc2FmZVwiIGFuZCBcInVud2lzZVwiIGNoYXJzLlxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXNjcmlwdC11cmwgKi9cbiAgICAvLyBwcm90b2NvbHMgdGhhdCBuZXZlciBoYXZlIGEgaG9zdG5hbWUuXG4gICAgaG9zdGxlc3NQcm90b2NvbCA9IHtcbiAgICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgICB9LFxuICAgIC8vIHByb3RvY29scyB0aGF0IGFsd2F5cyBjb250YWluIGEgLy8gYml0LlxuICAgIHNsYXNoZWRQcm90b2NvbCA9IHtcbiAgICAgICdodHRwJzogdHJ1ZSxcbiAgICAgICdodHRwcyc6IHRydWUsXG4gICAgICAnZnRwJzogdHJ1ZSxcbiAgICAgICdnb3BoZXInOiB0cnVlLFxuICAgICAgJ2ZpbGUnOiB0cnVlLFxuICAgICAgJ2h0dHA6JzogdHJ1ZSxcbiAgICAgICdodHRwczonOiB0cnVlLFxuICAgICAgJ2Z0cDonOiB0cnVlLFxuICAgICAgJ2dvcGhlcjonOiB0cnVlLFxuICAgICAgJ2ZpbGU6JzogdHJ1ZVxuICAgIH07XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1zY3JpcHQtdXJsICovXG5cbmZ1bmN0aW9uIHVybFBhcnNlKHVybCwgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgaWYgKHVybCAmJiB1cmwgaW5zdGFuY2VvZiBVcmwpIHsgcmV0dXJuIHVybDsgfVxuXG4gIHZhciB1ID0gbmV3IFVybCgpO1xuICB1LnBhcnNlKHVybCwgc2xhc2hlc0Rlbm90ZUhvc3QpO1xuICByZXR1cm4gdTtcbn1cblxuVXJsLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKHVybCwgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgdmFyIGksIGwsIGxvd2VyUHJvdG8sIGhlYywgc2xhc2hlcyxcbiAgICAgIHJlc3QgPSB1cmw7XG5cbiAgLy8gdHJpbSBiZWZvcmUgcHJvY2VlZGluZy5cbiAgLy8gVGhpcyBpcyB0byBzdXBwb3J0IHBhcnNlIHN0dWZmIGxpa2UgXCIgIGh0dHA6Ly9mb28uY29tICBcXG5cIlxuICByZXN0ID0gcmVzdC50cmltKCk7XG5cbiAgaWYgKCFzbGFzaGVzRGVub3RlSG9zdCAmJiB1cmwuc3BsaXQoJyMnKS5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBUcnkgZmFzdCBwYXRoIHJlZ2V4cFxuICAgIHZhciBzaW1wbGVQYXRoID0gc2ltcGxlUGF0aFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgICBpZiAoc2ltcGxlUGF0aCkge1xuICAgICAgdGhpcy5wYXRobmFtZSA9IHNpbXBsZVBhdGhbMV07XG4gICAgICBpZiAoc2ltcGxlUGF0aFsyXSkge1xuICAgICAgICB0aGlzLnNlYXJjaCA9IHNpbXBsZVBhdGhbMl07XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICB2YXIgcHJvdG8gPSBwcm90b2NvbFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgaWYgKHByb3RvKSB7XG4gICAgcHJvdG8gPSBwcm90b1swXTtcbiAgICBsb3dlclByb3RvID0gcHJvdG8udG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLnByb3RvY29sID0gcHJvdG87XG4gICAgcmVzdCA9IHJlc3Quc3Vic3RyKHByb3RvLmxlbmd0aCk7XG4gIH1cblxuICAvLyBmaWd1cmUgb3V0IGlmIGl0J3MgZ290IGEgaG9zdFxuICAvLyB1c2VyQHNlcnZlciBpcyAqYWx3YXlzKiBpbnRlcnByZXRlZCBhcyBhIGhvc3RuYW1lLCBhbmQgdXJsXG4gIC8vIHJlc29sdXRpb24gd2lsbCB0cmVhdCAvL2Zvby9iYXIgYXMgaG9zdD1mb28scGF0aD1iYXIgYmVjYXVzZSB0aGF0J3NcbiAgLy8gaG93IHRoZSBicm93c2VyIHJlc29sdmVzIHJlbGF0aXZlIFVSTHMuXG4gIGlmIChzbGFzaGVzRGVub3RlSG9zdCB8fCBwcm90byB8fCByZXN0Lm1hdGNoKC9eXFwvXFwvW15AXFwvXStAW15AXFwvXSsvKSkge1xuICAgIHNsYXNoZXMgPSByZXN0LnN1YnN0cigwLCAyKSA9PT0gJy8vJztcbiAgICBpZiAoc2xhc2hlcyAmJiAhKHByb3RvICYmIGhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dKSkge1xuICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDIpO1xuICAgICAgdGhpcy5zbGFzaGVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dICYmXG4gICAgICAoc2xhc2hlcyB8fCAocHJvdG8gJiYgIXNsYXNoZWRQcm90b2NvbFtwcm90b10pKSkge1xuXG4gICAgLy8gdGhlcmUncyBhIGhvc3RuYW1lLlxuICAgIC8vIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiAvLCA/LCA7LCBvciAjIGVuZHMgdGhlIGhvc3QuXG4gICAgLy9cbiAgICAvLyBJZiB0aGVyZSBpcyBhbiBAIGluIHRoZSBob3N0bmFtZSwgdGhlbiBub24taG9zdCBjaGFycyAqYXJlKiBhbGxvd2VkXG4gICAgLy8gdG8gdGhlIGxlZnQgb2YgdGhlIGxhc3QgQCBzaWduLCB1bmxlc3Mgc29tZSBob3N0LWVuZGluZyBjaGFyYWN0ZXJcbiAgICAvLyBjb21lcyAqYmVmb3JlKiB0aGUgQC1zaWduLlxuICAgIC8vIFVSTHMgYXJlIG9ibm94aW91cy5cbiAgICAvL1xuICAgIC8vIGV4OlxuICAgIC8vIGh0dHA6Ly9hQGJAYy8gPT4gdXNlcjphQGIgaG9zdDpjXG4gICAgLy8gaHR0cDovL2FAYj9AYyA9PiB1c2VyOmEgaG9zdDpjIHBhdGg6Lz9AY1xuXG4gICAgLy8gdjAuMTIgVE9ETyhpc2FhY3MpOiBUaGlzIGlzIG5vdCBxdWl0ZSBob3cgQ2hyb21lIGRvZXMgdGhpbmdzLlxuICAgIC8vIFJldmlldyBvdXIgdGVzdCBjYXNlIGFnYWluc3QgYnJvd3NlcnMgbW9yZSBjb21wcmVoZW5zaXZlbHkuXG5cbiAgICAvLyBmaW5kIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBhbnkgaG9zdEVuZGluZ0NoYXJzXG4gICAgdmFyIGhvc3RFbmQgPSAtMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgaG9zdEVuZGluZ0NoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoZWMgPSByZXN0LmluZGV4T2YoaG9zdEVuZGluZ0NoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSkge1xuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGF0IHRoaXMgcG9pbnQsIGVpdGhlciB3ZSBoYXZlIGFuIGV4cGxpY2l0IHBvaW50IHdoZXJlIHRoZVxuICAgIC8vIGF1dGggcG9ydGlvbiBjYW5ub3QgZ28gcGFzdCwgb3IgdGhlIGxhc3QgQCBjaGFyIGlzIHRoZSBkZWNpZGVyLlxuICAgIHZhciBhdXRoLCBhdFNpZ247XG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKSB7XG4gICAgICAvLyBhdFNpZ24gY2FuIGJlIGFueXdoZXJlLlxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhdFNpZ24gbXVzdCBiZSBpbiBhdXRoIHBvcnRpb24uXG4gICAgICAvLyBodHRwOi8vYUBiL2NAZCA9PiBob3N0OmIgYXV0aDphIHBhdGg6L2NAZFxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcsIGhvc3RFbmQpO1xuICAgIH1cblxuICAgIC8vIE5vdyB3ZSBoYXZlIGEgcG9ydGlvbiB3aGljaCBpcyBkZWZpbml0ZWx5IHRoZSBhdXRoLlxuICAgIC8vIFB1bGwgdGhhdCBvZmYuXG4gICAgaWYgKGF0U2lnbiAhPT0gLTEpIHtcbiAgICAgIGF1dGggPSByZXN0LnNsaWNlKDAsIGF0U2lnbik7XG4gICAgICByZXN0ID0gcmVzdC5zbGljZShhdFNpZ24gKyAxKTtcbiAgICAgIHRoaXMuYXV0aCA9IGF1dGg7XG4gICAgfVxuXG4gICAgLy8gdGhlIGhvc3QgaXMgdGhlIHJlbWFpbmluZyB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3Qgbm9uLWhvc3QgY2hhclxuICAgIGhvc3RFbmQgPSAtMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbm9uSG9zdENoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoZWMgPSByZXN0LmluZGV4T2Yobm9uSG9zdENoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSkge1xuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBpZiB3ZSBzdGlsbCBoYXZlIG5vdCBoaXQgaXQsIHRoZW4gdGhlIGVudGlyZSB0aGluZyBpcyBhIGhvc3QuXG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKSB7XG4gICAgICBob3N0RW5kID0gcmVzdC5sZW5ndGg7XG4gICAgfVxuXG4gICAgaWYgKHJlc3RbaG9zdEVuZCAtIDFdID09PSAnOicpIHsgaG9zdEVuZC0tOyB9XG4gICAgdmFyIGhvc3QgPSByZXN0LnNsaWNlKDAsIGhvc3RFbmQpO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKGhvc3RFbmQpO1xuXG4gICAgLy8gcHVsbCBvdXQgcG9ydC5cbiAgICB0aGlzLnBhcnNlSG9zdChob3N0KTtcblxuICAgIC8vIHdlJ3ZlIGluZGljYXRlZCB0aGF0IHRoZXJlIGlzIGEgaG9zdG5hbWUsXG4gICAgLy8gc28gZXZlbiBpZiBpdCdzIGVtcHR5LCBpdCBoYXMgdG8gYmUgcHJlc2VudC5cbiAgICB0aGlzLmhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZSB8fCAnJztcblxuICAgIC8vIGlmIGhvc3RuYW1lIGJlZ2lucyB3aXRoIFsgYW5kIGVuZHMgd2l0aCBdXG4gICAgLy8gYXNzdW1lIHRoYXQgaXQncyBhbiBJUHY2IGFkZHJlc3MuXG4gICAgdmFyIGlwdjZIb3N0bmFtZSA9IHRoaXMuaG9zdG5hbWVbMF0gPT09ICdbJyAmJlxuICAgICAgICB0aGlzLmhvc3RuYW1lW3RoaXMuaG9zdG5hbWUubGVuZ3RoIC0gMV0gPT09ICddJztcblxuICAgIC8vIHZhbGlkYXRlIGEgbGl0dGxlLlxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB2YXIgaG9zdHBhcnRzID0gdGhpcy5ob3N0bmFtZS5zcGxpdCgvXFwuLyk7XG4gICAgICBmb3IgKGkgPSAwLCBsID0gaG9zdHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB2YXIgcGFydCA9IGhvc3RwYXJ0c1tpXTtcbiAgICAgICAgaWYgKCFwYXJ0KSB7IGNvbnRpbnVlOyB9XG4gICAgICAgIGlmICghcGFydC5tYXRjaChob3N0bmFtZVBhcnRQYXR0ZXJuKSkge1xuICAgICAgICAgIHZhciBuZXdwYXJ0ID0gJyc7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGsgPSBwYXJ0Lmxlbmd0aDsgaiA8IGs7IGorKykge1xuICAgICAgICAgICAgaWYgKHBhcnQuY2hhckNvZGVBdChqKSA+IDEyNykge1xuICAgICAgICAgICAgICAvLyB3ZSByZXBsYWNlIG5vbi1BU0NJSSBjaGFyIHdpdGggYSB0ZW1wb3JhcnkgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0aGlzIHRvIG1ha2Ugc3VyZSBzaXplIG9mIGhvc3RuYW1lIGlzIG5vdFxuICAgICAgICAgICAgICAvLyBicm9rZW4gYnkgcmVwbGFjaW5nIG5vbi1BU0NJSSBieSBub3RoaW5nXG4gICAgICAgICAgICAgIG5ld3BhcnQgKz0gJ3gnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3cGFydCArPSBwYXJ0W2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB3ZSB0ZXN0IGFnYWluIHdpdGggQVNDSUkgY2hhciBvbmx5XG4gICAgICAgICAgaWYgKCFuZXdwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgICB2YXIgdmFsaWRQYXJ0cyA9IGhvc3RwYXJ0cy5zbGljZSgwLCBpKTtcbiAgICAgICAgICAgIHZhciBub3RIb3N0ID0gaG9zdHBhcnRzLnNsaWNlKGkgKyAxKTtcbiAgICAgICAgICAgIHZhciBiaXQgPSBwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFN0YXJ0KTtcbiAgICAgICAgICAgIGlmIChiaXQpIHtcbiAgICAgICAgICAgICAgdmFsaWRQYXJ0cy5wdXNoKGJpdFsxXSk7XG4gICAgICAgICAgICAgIG5vdEhvc3QudW5zaGlmdChiaXRbMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vdEhvc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJlc3QgPSBub3RIb3N0LmpvaW4oJy4nKSArIHJlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmhvc3RuYW1lID0gdmFsaWRQYXJ0cy5qb2luKCcuJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5ob3N0bmFtZS5sZW5ndGggPiBob3N0bmFtZU1heExlbikge1xuICAgICAgdGhpcy5ob3N0bmFtZSA9ICcnO1xuICAgIH1cblxuICAgIC8vIHN0cmlwIFsgYW5kIF0gZnJvbSB0aGUgaG9zdG5hbWVcbiAgICAvLyB0aGUgaG9zdCBmaWVsZCBzdGlsbCByZXRhaW5zIHRoZW0sIHRob3VnaFxuICAgIGlmIChpcHY2SG9zdG5hbWUpIHtcbiAgICAgIHRoaXMuaG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lLnN1YnN0cigxLCB0aGlzLmhvc3RuYW1lLmxlbmd0aCAtIDIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGNob3Agb2ZmIGZyb20gdGhlIHRhaWwgZmlyc3QuXG4gIHZhciBoYXNoID0gcmVzdC5pbmRleE9mKCcjJyk7XG4gIGlmIChoYXNoICE9PSAtMSkge1xuICAgIC8vIGdvdCBhIGZyYWdtZW50IHN0cmluZy5cbiAgICB0aGlzLmhhc2ggPSByZXN0LnN1YnN0cihoYXNoKTtcbiAgICByZXN0ID0gcmVzdC5zbGljZSgwLCBoYXNoKTtcbiAgfVxuICB2YXIgcW0gPSByZXN0LmluZGV4T2YoJz8nKTtcbiAgaWYgKHFtICE9PSAtMSkge1xuICAgIHRoaXMuc2VhcmNoID0gcmVzdC5zdWJzdHIocW0pO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIHFtKTtcbiAgfVxuICBpZiAocmVzdCkgeyB0aGlzLnBhdGhuYW1lID0gcmVzdDsgfVxuICBpZiAoc2xhc2hlZFByb3RvY29sW2xvd2VyUHJvdG9dICYmXG4gICAgICB0aGlzLmhvc3RuYW1lICYmICF0aGlzLnBhdGhuYW1lKSB7XG4gICAgdGhpcy5wYXRobmFtZSA9ICcnO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5VcmwucHJvdG90eXBlLnBhcnNlSG9zdCA9IGZ1bmN0aW9uKGhvc3QpIHtcbiAgdmFyIHBvcnQgPSBwb3J0UGF0dGVybi5leGVjKGhvc3QpO1xuICBpZiAocG9ydCkge1xuICAgIHBvcnQgPSBwb3J0WzBdO1xuICAgIGlmIChwb3J0ICE9PSAnOicpIHtcbiAgICAgIHRoaXMucG9ydCA9IHBvcnQuc3Vic3RyKDEpO1xuICAgIH1cbiAgICBob3N0ID0gaG9zdC5zdWJzdHIoMCwgaG9zdC5sZW5ndGggLSBwb3J0Lmxlbmd0aCk7XG4gIH1cbiAgaWYgKGhvc3QpIHsgdGhpcy5ob3N0bmFtZSA9IGhvc3Q7IH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gdXJsUGFyc2U7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFJQTtBQUpBO0FBT0E7QUFDQTtBQVJBO0FBV0E7QUFYQTtBQWNBO0FBZEE7QUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBd0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQTNCQTtBQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mdurl/parse.js\n");
|
2306 |
|
2307 | }),
|
2308 |
|
2309 | "../../../node_modules/meros/browser/index.mjs":
|
2310 |
|
2311 |
|
2312 |
|
2313 |
|
2314 | (function(module, __webpack_exports__, __webpack_require__) {
|
2315 |
|
2316 | "use strict";
|
2317 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"meros\", function() { return meros; });\nconst separator = '\\r\\n\\r\\n';\r\nconst decoder = new TextDecoder;\r\nasync function* generate(stream, boundary, options) {\r\n const reader = stream.getReader(), is_eager = !options || !options.multiple;\r\n let buffer = '', is_preamble = true, payloads = [];\r\n try {\r\n let result;\r\n outer: while (!(result = await reader.read()).done) {\r\n const chunk = decoder.decode(result.value);\r\n const idx_chunk = chunk.indexOf(boundary);\r\n let idx_boundary = buffer.length;\r\n buffer += chunk;\r\n if (!!~idx_chunk) {\r\n // chunk itself had `boundary` marker\r\n idx_boundary += idx_chunk;\r\n }\r\n else {\r\n // search combined (boundary can be across chunks)\r\n idx_boundary = buffer.indexOf(boundary);\r\n }\r\n payloads = [];\r\n while (!!~idx_boundary) {\r\n const current = buffer.substring(0, idx_boundary);\r\n const next = buffer.substring(idx_boundary + boundary.length);\r\n if (is_preamble) {\r\n is_preamble = false;\r\n }\r\n else {\r\n const headers = {};\r\n const idx_headers = current.indexOf(separator);\r\n const arr_headers = buffer.slice(0, idx_headers).toString().trim().split(/\\r\\n/);\r\n // parse headers\r\n let tmp;\r\n while (tmp = arr_headers.shift()) {\r\n tmp = tmp.split(': ');\r\n headers[tmp.shift().toLowerCase()] = tmp.join(': ');\r\n }\r\n let body = current.substring(idx_headers + separator.length, current.lastIndexOf('\\r\\n'));\r\n let is_json = false;\r\n tmp = headers['content-type'];\r\n if (tmp && !!~tmp.indexOf('application/json')) {\r\n try {\r\n body = JSON.parse(body);\r\n is_json = true;\r\n }\r\n catch (_) {\r\n }\r\n }\r\n tmp = { headers, body, json: is_json };\r\n is_eager ? yield tmp : payloads.push(tmp);\r\n // hit a tail boundary, break\r\n if (next.substring(0, 2) === '--')\r\n break outer;\r\n }\r\n buffer = next;\r\n idx_boundary = buffer.indexOf(boundary);\r\n }\r\n if (payloads.length)\r\n yield payloads;\r\n }\r\n }\r\n finally {\r\n if (payloads.length)\r\n yield payloads;\r\n reader.releaseLock();\r\n }\r\n}\n\n/**\r\n * Yield immediately for every part made available on the response. If the `content-type` of the response isn't a\r\n * multipart body, then we'll resolve with {@link Response}.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * const parts = await fetch('/fetch-multipart')\r\n * .then(meros);\r\n *\r\n * for await (const part of parts) {\r\n * // do something with this part\r\n * }\r\n * ```\r\n */\r\nasync function meros(response, options) {\r\n if (!response.ok || !response.body || response.bodyUsed)\r\n return response;\r\n const ctype = response.headers.get('content-type');\r\n if (!ctype || !~ctype.indexOf('multipart/mixed'))\r\n return response;\r\n const idx_boundary = ctype.indexOf('boundary=');\r\n return generate(response.body, `--${!!~idx_boundary\r\n ? // +9 for 'boundary='.length\r\n ctype.substring(idx_boundary + 9).trim().replace(/['\"]/g, '')\r\n : '-'}`, options);\r\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm9zL2Jyb3dzZXIvaW5kZXgubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21lcm9zL2Jyb3dzZXIvaW5kZXgubWpzPzUyYTQiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgc2VwYXJhdG9yID0gJ1xcclxcblxcclxcbic7XHJcbmNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXI7XHJcbmFzeW5jIGZ1bmN0aW9uKiBnZW5lcmF0ZShzdHJlYW0sIGJvdW5kYXJ5LCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCksIGlzX2VhZ2VyID0gIW9wdGlvbnMgfHwgIW9wdGlvbnMubXVsdGlwbGU7XHJcbiAgICBsZXQgYnVmZmVyID0gJycsIGlzX3ByZWFtYmxlID0gdHJ1ZSwgcGF5bG9hZHMgPSBbXTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdDtcclxuICAgICAgICBvdXRlcjogd2hpbGUgKCEocmVzdWx0ID0gYXdhaXQgcmVhZGVyLnJlYWQoKSkuZG9uZSkge1xyXG4gICAgICAgICAgICBjb25zdCBjaHVuayA9IGRlY29kZXIuZGVjb2RlKHJlc3VsdC52YWx1ZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGlkeF9jaHVuayA9IGNodW5rLmluZGV4T2YoYm91bmRhcnkpO1xyXG4gICAgICAgICAgICBsZXQgaWR4X2JvdW5kYXJ5ID0gYnVmZmVyLmxlbmd0aDtcclxuICAgICAgICAgICAgYnVmZmVyICs9IGNodW5rO1xyXG4gICAgICAgICAgICBpZiAoISF+aWR4X2NodW5rKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjaHVuayBpdHNlbGYgaGFkIGBib3VuZGFyeWAgbWFya2VyXHJcbiAgICAgICAgICAgICAgICBpZHhfYm91bmRhcnkgKz0gaWR4X2NodW5rO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gc2VhcmNoIGNvbWJpbmVkIChib3VuZGFyeSBjYW4gYmUgYWNyb3NzIGNodW5rcylcclxuICAgICAgICAgICAgICAgIGlkeF9ib3VuZGFyeSA9IGJ1ZmZlci5pbmRleE9mKGJvdW5kYXJ5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXlsb2FkcyA9IFtdO1xyXG4gICAgICAgICAgICB3aGlsZSAoISF+aWR4X2JvdW5kYXJ5KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gYnVmZmVyLnN1YnN0cmluZygwLCBpZHhfYm91bmRhcnkpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGJ1ZmZlci5zdWJzdHJpbmcoaWR4X2JvdW5kYXJ5ICsgYm91bmRhcnkubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc19wcmVhbWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlzX3ByZWFtYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXJzID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWR4X2hlYWRlcnMgPSBjdXJyZW50LmluZGV4T2Yoc2VwYXJhdG9yKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnJfaGVhZGVycyA9IGJ1ZmZlci5zbGljZSgwLCBpZHhfaGVhZGVycykudG9TdHJpbmcoKS50cmltKCkuc3BsaXQoL1xcclxcbi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcnNlIGhlYWRlcnNcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdG1wO1xyXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICh0bXAgPSBhcnJfaGVhZGVycy5zaGlmdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IHRtcC5zcGxpdCgnOiAnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1t0bXAuc2hpZnQoKS50b0xvd2VyQ2FzZSgpXSA9IHRtcC5qb2luKCc6ICcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgYm9keSA9IGN1cnJlbnQuc3Vic3RyaW5nKGlkeF9oZWFkZXJzICsgc2VwYXJhdG9yLmxlbmd0aCwgY3VycmVudC5sYXN0SW5kZXhPZignXFxyXFxuJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpc19qc29uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdG1wID0gaGVhZGVyc1snY29udGVudC10eXBlJ107XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCAmJiAhIX50bXAuaW5kZXhPZignYXBwbGljYXRpb24vanNvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gSlNPTi5wYXJzZShib2R5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2pzb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChfKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdG1wID0geyBoZWFkZXJzLCBib2R5LCBqc29uOiBpc19qc29uIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaXNfZWFnZXIgPyB5aWVsZCB0bXAgOiBwYXlsb2Fkcy5wdXNoKHRtcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaGl0IGEgdGFpbCBib3VuZGFyeSwgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dC5zdWJzdHJpbmcoMCwgMikgPT09ICctLScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG91dGVyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnVmZmVyID0gbmV4dDtcclxuICAgICAgICAgICAgICAgIGlkeF9ib3VuZGFyeSA9IGJ1ZmZlci5pbmRleE9mKGJvdW5kYXJ5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocGF5bG9hZHMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgeWllbGQgcGF5bG9hZHM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgaWYgKHBheWxvYWRzLmxlbmd0aClcclxuICAgICAgICAgICAgeWllbGQgcGF5bG9hZHM7XHJcbiAgICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7XHJcbiAgICB9XHJcbn1cblxuLyoqXHJcbiAqIFlpZWxkIGltbWVkaWF0ZWx5IGZvciBldmVyeSBwYXJ0IG1hZGUgYXZhaWxhYmxlIG9uIHRoZSByZXNwb25zZS4gSWYgdGhlIGBjb250ZW50LXR5cGVgIG9mIHRoZSByZXNwb25zZSBpc24ndCBhXHJcbiAqIG11bHRpcGFydCBib2R5LCB0aGVuIHdlJ2xsIHJlc29sdmUgd2l0aCB7QGxpbmsgUmVzcG9uc2V9LlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKlxyXG4gKiBgYGBqc1xyXG4gKiBjb25zdCBwYXJ0cyA9IGF3YWl0IGZldGNoKCcvZmV0Y2gtbXVsdGlwYXJ0JylcclxuICogICAgICAudGhlbihtZXJvcyk7XHJcbiAqXHJcbiAqIGZvciBhd2FpdCAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xyXG4gKiAgICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhpcyBwYXJ0XHJcbiAqIH1cclxuICogYGBgXHJcbiAqL1xyXG5hc3luYyBmdW5jdGlvbiBtZXJvcyhyZXNwb25zZSwgb3B0aW9ucykge1xyXG4gICAgaWYgKCFyZXNwb25zZS5vayB8fCAhcmVzcG9uc2UuYm9keSB8fCByZXNwb25zZS5ib2R5VXNlZClcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICBjb25zdCBjdHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKTtcclxuICAgIGlmICghY3R5cGUgfHwgIX5jdHlwZS5pbmRleE9mKCdtdWx0aXBhcnQvbWl4ZWQnKSlcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICBjb25zdCBpZHhfYm91bmRhcnkgPSBjdHlwZS5pbmRleE9mKCdib3VuZGFyeT0nKTtcclxuICAgIHJldHVybiBnZW5lcmF0ZShyZXNwb25zZS5ib2R5LCBgLS0keyEhfmlkeF9ib3VuZGFyeVxyXG4gICAgICAgID8gLy8gKzkgZm9yICdib3VuZGFyeT0nLmxlbmd0aFxyXG4gICAgICAgICAgICBjdHlwZS5zdWJzdHJpbmcoaWR4X2JvdW5kYXJ5ICsgOSkudHJpbSgpLnJlcGxhY2UoL1snXCJdL2csICcnKVxyXG4gICAgICAgIDogJy0nfWAsIG9wdGlvbnMpO1xyXG59XG5cbmV4cG9ydCB7IG1lcm9zIH07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/meros/browser/index.mjs\n");
|
2318 |
|
2319 | }),
|
2320 |
|
2321 | "../../../node_modules/node-libs-browser/node_modules/punycode/punycode.js":
|
2322 |
|
2323 |
|
2324 |
|
2325 |
|
2326 | (function(module, exports, __webpack_require__) {
|
2327 |
|
2328 | eval("/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n /*! https://mths.be/punycode v1.4.1 by @mathias */\n ;\n\n (function (root) {\n /** Detect free variables */\n var freeExports = true && exports && !exports.nodeType && exports;\n var freeModule = true && module && !module.nodeType && module;\n var freeGlobal = typeof global == 'object' && global;\n\n if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n root = freeGlobal;\n }\n /**\n * The `punycode` object.\n * @name punycode\n * @type Object\n */\n\n\n var punycode,\n\n /** Highest positive signed 32-bit float value */\n maxInt = 2147483647,\n // aka. 0x7FFFFFFF or 2^31-1\n\n /** Bootstring parameters */\n base = 36,\n tMin = 1,\n tMax = 26,\n skew = 38,\n damp = 700,\n initialBias = 72,\n initialN = 128,\n // 0x80\n delimiter = '-',\n // '\\x2D'\n\n /** Regular expressions */\n regexPunycode = /^xn--/,\n regexNonASCII = /[^\\x20-\\x7E]/,\n // unprintable ASCII chars + non-ASCII chars\n regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n // RFC 3490 separators\n\n /** Error messages */\n errors = {\n 'overflow': 'Overflow: input needs wider integers to process',\n 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n 'invalid-input': 'Invalid input'\n },\n\n /** Convenience shortcuts */\n baseMinusTMin = base - tMin,\n floor = Math.floor,\n stringFromCharCode = String.fromCharCode,\n\n /** Temporary variable */\n key;\n /*--------------------------------------------------------------------------*/\n\n /**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\n\n function error(type) {\n throw new RangeError(errors[type]);\n }\n /**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\n\n\n function map(array, fn) {\n var length = array.length;\n var result = [];\n\n while (length--) {\n result[length] = fn(array[length]);\n }\n\n return result;\n }\n /**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\n\n\n function mapDomain(string, fn) {\n var parts = string.split('@');\n var result = '';\n\n if (parts.length > 1) {\n // In email addresses, only the domain name should be punycoded. Leave\n // the local part (i.e. everything up to `@`) intact.\n result = parts[0] + '@';\n string = parts[1];\n } // Avoid `split(regex)` for IE8 compatibility. See #17.\n\n\n string = string.replace(regexSeparators, '\\x2E');\n var labels = string.split('.');\n var encoded = map(labels, fn).join('.');\n return result + encoded;\n }\n /**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\n\n\n function ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n\n while (counter < length) {\n value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n }\n /**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\n\n\n function ucs2encode(array) {\n return map(array, function (value) {\n var output = '';\n\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n\n output += stringFromCharCode(value);\n return output;\n }).join('');\n }\n /**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\n\n\n function basicToDigit(codePoint) {\n if (codePoint - 48 < 10) {\n return codePoint - 22;\n }\n\n if (codePoint - 65 < 26) {\n return codePoint - 65;\n }\n\n if (codePoint - 97 < 26) {\n return codePoint - 97;\n }\n\n return base;\n }\n /**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\n\n\n function digitToBasic(digit, flag) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n }\n /**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\n\n\n function adapt(delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n }\n /**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\n\n\n function decode(input) {\n // Don't use UCS-2\n var output = [],\n inputLength = input.length,\n out,\n i = 0,\n n = initialN,\n bias = initialBias,\n basic,\n j,\n index,\n oldi,\n w,\n k,\n digit,\n t,\n\n /** Cached calculation results */\n baseMinusT; // Handle the basic code points: let `basic` be the number of input code\n // points before the last delimiter, or `0` if there is none, then copy\n // the first basic code points to the output.\n\n basic = input.lastIndexOf(delimiter);\n\n if (basic < 0) {\n basic = 0;\n }\n\n for (j = 0; j < basic; ++j) {\n // if it's not a basic code point\n if (input.charCodeAt(j) >= 0x80) {\n error('not-basic');\n }\n\n output.push(input.charCodeAt(j));\n } // Main decoding loop: start just after the last delimiter if any basic code\n // points were copied; start at the beginning otherwise.\n\n\n for (index = basic > 0 ? basic + 1 : 0; index < inputLength;) {\n // `index` is the index of the next character to be consumed.\n // Decode a generalized variable-length integer into `delta`,\n // which gets added to `i`. The overflow checking is easier\n // if we increase `i` as we go, then subtract off its starting\n // value at the end to obtain `delta`.\n for (oldi = i, w = 1, k = base;; k += base) {\n if (index >= inputLength) {\n error('invalid-input');\n }\n\n digit = basicToDigit(input.charCodeAt(index++));\n\n if (digit >= base || digit > floor((maxInt - i) / w)) {\n error('overflow');\n }\n\n i += digit * w;\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (digit < t) {\n break;\n }\n\n baseMinusT = base - t;\n\n if (w > floor(maxInt / baseMinusT)) {\n error('overflow');\n }\n\n w *= baseMinusT;\n }\n\n out = output.length + 1;\n bias = adapt(i - oldi, out, oldi == 0); // `i` was supposed to wrap around from `out` to `0`,\n // incrementing `n` each time, so we'll fix that now:\n\n if (floor(i / out) > maxInt - n) {\n error('overflow');\n }\n\n n += floor(i / out);\n i %= out; // Insert `n` at position `i` of the output\n\n output.splice(i++, 0, n);\n }\n\n return ucs2encode(output);\n }\n /**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\n\n\n function encode(input) {\n var n,\n delta,\n handledCPCount,\n basicLength,\n bias,\n j,\n m,\n q,\n k,\n t,\n currentValue,\n output = [],\n\n /** `inputLength` will hold the number of code points in `input`. */\n inputLength,\n\n /** Cached calculation results */\n handledCPCountPlusOne,\n baseMinusT,\n qMinusT; // Convert the input in UCS-2 to Unicode\n\n input = ucs2decode(input); // Cache the length\n\n inputLength = input.length; // Initialize the state\n\n n = initialN;\n delta = 0;\n bias = initialBias; // Handle the basic code points\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n handledCPCount = basicLength = output.length; // `handledCPCount` is the number of code points that have been handled;\n // `basicLength` is the number of basic code points.\n // Finish the basic string - if it is not empty - with a delimiter\n\n if (basicLength) {\n output.push(delimiter);\n } // Main encoding loop:\n\n\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next\n // larger one:\n for (m = maxInt, j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n } // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n // but guard against overflow\n\n\n handledCPCountPlusOne = handledCPCount + 1;\n\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n error('overflow');\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < n && ++delta > maxInt) {\n error('overflow');\n }\n\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer\n for (q = delta, k = base;; k += base) {\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (q < t) {\n break;\n }\n\n qMinusT = q - t;\n baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q, 0)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n\n return output.join('');\n }\n /**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\n\n\n function toUnicode(input) {\n return mapDomain(input, function (string) {\n return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n });\n }\n /**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\n\n\n function toASCII(input) {\n return mapDomain(input, function (string) {\n return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n });\n }\n /*--------------------------------------------------------------------------*/\n\n /** Define the public API */\n\n\n punycode = {\n /**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\n 'version': '1.4.1',\n\n /**\n * An object of methods to convert from JavaScript's internal character\n * representation (UCS-2) to Unicode code points, and back.\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode\n * @type Object\n */\n 'ucs2': {\n 'decode': ucs2decode,\n 'encode': ucs2encode\n },\n 'decode': decode,\n 'encode': encode,\n 'toASCII': toASCII,\n 'toUnicode': toUnicode\n };\n /** Expose `punycode` */\n // Some AMD build optimizers, like r.js, check for specific condition patterns\n // like the following:\n\n if (true) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n return punycode;\n }).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n })(void 0);\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ \"../../../node_modules/webpack/buildin/module.js\")(module), __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \"../../../node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25vZGUtbGlicy1icm93c2VyL25vZGVfbW9kdWxlcy9wdW55Y29kZS9wdW55Y29kZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ub2RlLWxpYnMtYnJvd3Nlci9ub2RlX21vZHVsZXMvcHVueWNvZGUvcHVueWNvZGUuanM/Y2NmMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgaHR0cHM6Ly9tdGhzLmJlL3B1bnljb2RlIHYxLjQuMSBieSBAbWF0aGlhcyAqL1xuOyhmdW5jdGlvbihyb290KSB7XG5cblx0LyoqIERldGVjdCBmcmVlIHZhcmlhYmxlcyAqL1xuXHR2YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmXG5cdFx0IWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblx0dmFyIGZyZWVNb2R1bGUgPSB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJlxuXHRcdCFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXHR2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsO1xuXHRpZiAoXG5cdFx0ZnJlZUdsb2JhbC5nbG9iYWwgPT09IGZyZWVHbG9iYWwgfHxcblx0XHRmcmVlR2xvYmFsLndpbmRvdyA9PT0gZnJlZUdsb2JhbCB8fFxuXHRcdGZyZWVHbG9iYWwuc2VsZiA9PT0gZnJlZUdsb2JhbFxuXHQpIHtcblx0XHRyb290ID0gZnJlZUdsb2JhbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgYHB1bnljb2RlYCBvYmplY3QuXG5cdCAqIEBuYW1lIHB1bnljb2RlXG5cdCAqIEB0eXBlIE9iamVjdFxuXHQgKi9cblx0dmFyIHB1bnljb2RlLFxuXG5cdC8qKiBIaWdoZXN0IHBvc2l0aXZlIHNpZ25lZCAzMi1iaXQgZmxvYXQgdmFsdWUgKi9cblx0bWF4SW50ID0gMjE0NzQ4MzY0NywgLy8gYWthLiAweDdGRkZGRkZGIG9yIDJeMzEtMVxuXG5cdC8qKiBCb290c3RyaW5nIHBhcmFtZXRlcnMgKi9cblx0YmFzZSA9IDM2LFxuXHR0TWluID0gMSxcblx0dE1heCA9IDI2LFxuXHRza2V3ID0gMzgsXG5cdGRhbXAgPSA3MDAsXG5cdGluaXRpYWxCaWFzID0gNzIsXG5cdGluaXRpYWxOID0gMTI4LCAvLyAweDgwXG5cdGRlbGltaXRlciA9ICctJywgLy8gJ1xceDJEJ1xuXG5cdC8qKiBSZWd1bGFyIGV4cHJlc3Npb25zICovXG5cdHJlZ2V4UHVueWNvZGUgPSAvXnhuLS0vLFxuXHRyZWdleE5vbkFTQ0lJID0gL1teXFx4MjAtXFx4N0VdLywgLy8gdW5wcmludGFibGUgQVNDSUkgY2hhcnMgKyBub24tQVNDSUkgY2hhcnNcblx0cmVnZXhTZXBhcmF0b3JzID0gL1tcXHgyRVxcdTMwMDJcXHVGRjBFXFx1RkY2MV0vZywgLy8gUkZDIDM0OTAgc2VwYXJhdG9yc1xuXG5cdC8qKiBFcnJvciBtZXNzYWdlcyAqL1xuXHRlcnJvcnMgPSB7XG5cdFx0J292ZXJmbG93JzogJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJyxcblx0XHQnbm90LWJhc2ljJzogJ0lsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCknLFxuXHRcdCdpbnZhbGlkLWlucHV0JzogJ0ludmFsaWQgaW5wdXQnXG5cdH0sXG5cblx0LyoqIENvbnZlbmllbmNlIHNob3J0Y3V0cyAqL1xuXHRiYXNlTWludXNUTWluID0gYmFzZSAtIHRNaW4sXG5cdGZsb29yID0gTWF0aC5mbG9vcixcblx0c3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZSxcblxuXHQvKiogVGVtcG9yYXJ5IHZhcmlhYmxlICovXG5cdGtleTtcblxuXHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuXHQvKipcblx0ICogQSBnZW5lcmljIGVycm9yIHV0aWxpdHkgZnVuY3Rpb24uXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIFRoZSBlcnJvciB0eXBlLlxuXHQgKiBAcmV0dXJucyB7RXJyb3J9IFRocm93cyBhIGBSYW5nZUVycm9yYCB3aXRoIHRoZSBhcHBsaWNhYmxlIGVycm9yIG1lc3NhZ2UuXG5cdCAqL1xuXHRmdW5jdGlvbiBlcnJvcih0eXBlKSB7XG5cdFx0dGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG5cdCAqIGl0ZW0uXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgYXJyYXkgb2YgdmFsdWVzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cblx0ICovXG5cdGZ1bmN0aW9uIG1hcChhcnJheSwgZm4pIHtcblx0XHR2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXHRcdHZhciByZXN1bHQgPSBbXTtcblx0XHR3aGlsZSAobGVuZ3RoLS0pIHtcblx0XHRcdHJlc3VsdFtsZW5ndGhdID0gZm4oYXJyYXlbbGVuZ3RoXSk7XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogQSBzaW1wbGUgYEFycmF5I21hcGAtbGlrZSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBkb21haW4gbmFtZSBzdHJpbmdzIG9yIGVtYWlsXG5cdCAqIGFkZHJlc3Nlcy5cblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGRvbWFpbiBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcy5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5XG5cdCAqIGNoYXJhY3Rlci5cblx0ICogQHJldHVybnMge0FycmF5fSBBIG5ldyBzdHJpbmcgb2YgY2hhcmFjdGVycyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2tcblx0ICogZnVuY3Rpb24uXG5cdCAqL1xuXHRmdW5jdGlvbiBtYXBEb21haW4oc3RyaW5nLCBmbikge1xuXHRcdHZhciBwYXJ0cyA9IHN0cmluZy5zcGxpdCgnQCcpO1xuXHRcdHZhciByZXN1bHQgPSAnJztcblx0XHRpZiAocGFydHMubGVuZ3RoID4gMSkge1xuXHRcdFx0Ly8gSW4gZW1haWwgYWRkcmVzc2VzLCBvbmx5IHRoZSBkb21haW4gbmFtZSBzaG91bGQgYmUgcHVueWNvZGVkLiBMZWF2ZVxuXHRcdFx0Ly8gdGhlIGxvY2FsIHBhcnQgKGkuZS4gZXZlcnl0aGluZyB1cCB0byBgQGApIGludGFjdC5cblx0XHRcdHJlc3VsdCA9IHBhcnRzWzBdICsgJ0AnO1xuXHRcdFx0c3RyaW5nID0gcGFydHNbMV07XG5cdFx0fVxuXHRcdC8vIEF2b2lkIGBzcGxpdChyZWdleClgIGZvciBJRTggY29tcGF0aWJpbGl0eS4gU2VlICMxNy5cblx0XHRzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShyZWdleFNlcGFyYXRvcnMsICdcXHgyRScpO1xuXHRcdHZhciBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoJy4nKTtcblx0XHR2YXIgZW5jb2RlZCA9IG1hcChsYWJlbHMsIGZuKS5qb2luKCcuJyk7XG5cdFx0cmV0dXJuIHJlc3VsdCArIGVuY29kZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBudW1lcmljIGNvZGUgcG9pbnRzIG9mIGVhY2ggVW5pY29kZVxuXHQgKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG5cdCAqIHRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgcGFpciBvZiBzdXJyb2dhdGUgaGFsdmVzIChlYWNoIG9mIHdoaWNoXG5cdCAqIFVDUy0yIGV4cG9zZXMgYXMgc2VwYXJhdGUgY2hhcmFjdGVycykgaW50byBhIHNpbmdsZSBjb2RlIHBvaW50LFxuXHQgKiBtYXRjaGluZyBVVEYtMTYuXG5cdCAqIEBzZWUgYHB1bnljb2RlLnVjczIuZW5jb2RlYFxuXHQgKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcblx0ICogQG5hbWUgZGVjb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmcgVGhlIFVuaWNvZGUgaW5wdXQgc3RyaW5nIChVQ1MtMikuXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gVGhlIG5ldyBhcnJheSBvZiBjb2RlIHBvaW50cy5cblx0ICovXG5cdGZ1bmN0aW9uIHVjczJkZWNvZGUoc3RyaW5nKSB7XG5cdFx0dmFyIG91dHB1dCA9IFtdLFxuXHRcdCAgICBjb3VudGVyID0gMCxcblx0XHQgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCxcblx0XHQgICAgdmFsdWUsXG5cdFx0ICAgIGV4dHJhO1xuXHRcdHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7XG5cdFx0XHR2YWx1ZSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0XHRpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG5cdFx0XHRcdC8vIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3RlclxuXHRcdFx0XHRleHRyYSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0XHRcdGlmICgoZXh0cmEgJiAweEZDMDApID09IDB4REMwMCkgeyAvLyBsb3cgc3Vycm9nYXRlXG5cdFx0XHRcdFx0b3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyB1bm1hdGNoZWQgc3Vycm9nYXRlOyBvbmx5IGFwcGVuZCB0aGlzIGNvZGUgdW5pdCwgaW4gY2FzZSB0aGUgbmV4dFxuXHRcdFx0XHRcdC8vIGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpclxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHRcdFx0XHRjb3VudGVyLS07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG91dHB1dDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgc3RyaW5nIGJhc2VkIG9uIGFuIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG5cdCAqIEBzZWUgYHB1bnljb2RlLnVjczIuZGVjb2RlYFxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuXHQgKiBAbmFtZSBlbmNvZGVcblx0ICogQHBhcmFtIHtBcnJheX0gY29kZVBvaW50cyBUaGUgYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIG5ldyBVbmljb2RlIHN0cmluZyAoVUNTLTIpLlxuXHQgKi9cblx0ZnVuY3Rpb24gdWNzMmVuY29kZShhcnJheSkge1xuXHRcdHJldHVybiBtYXAoYXJyYXksIGZ1bmN0aW9uKHZhbHVlKSB7XG5cdFx0XHR2YXIgb3V0cHV0ID0gJyc7XG5cdFx0XHRpZiAodmFsdWUgPiAweEZGRkYpIHtcblx0XHRcdFx0dmFsdWUgLT0gMHgxMDAwMDtcblx0XHRcdFx0b3V0cHV0ICs9IHN0cmluZ0Zyb21DaGFyQ29kZSh2YWx1ZSA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMCk7XG5cdFx0XHRcdHZhbHVlID0gMHhEQzAwIHwgdmFsdWUgJiAweDNGRjtcblx0XHRcdH1cblx0XHRcdG91dHB1dCArPSBzdHJpbmdGcm9tQ2hhckNvZGUodmFsdWUpO1xuXHRcdFx0cmV0dXJuIG91dHB1dDtcblx0XHR9KS5qb2luKCcnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIGJhc2ljIGNvZGUgcG9pbnQgaW50byBhIGRpZ2l0L2ludGVnZXIuXG5cdCAqIEBzZWUgYGRpZ2l0VG9CYXNpYygpYFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge051bWJlcn0gY29kZVBvaW50IFRoZSBiYXNpYyBudW1lcmljIGNvZGUgcG9pbnQgdmFsdWUuXG5cdCAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludCAoZm9yIHVzZSBpblxuXHQgKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGluIHRoZSByYW5nZSBgMGAgdG8gYGJhc2UgLSAxYCwgb3IgYGJhc2VgIGlmXG5cdCAqIHRoZSBjb2RlIHBvaW50IGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbHVlLlxuXHQgKi9cblx0ZnVuY3Rpb24gYmFzaWNUb0RpZ2l0KGNvZGVQb2ludCkge1xuXHRcdGlmIChjb2RlUG9pbnQgLSA0OCA8IDEwKSB7XG5cdFx0XHRyZXR1cm4gY29kZVBvaW50IC0gMjI7XG5cdFx0fVxuXHRcdGlmIChjb2RlUG9pbnQgLSA2NSA8IDI2KSB7XG5cdFx0XHRyZXR1cm4gY29kZVBvaW50IC0gNjU7XG5cdFx0fVxuXHRcdGlmIChjb2RlUG9pbnQgLSA5NyA8IDI2KSB7XG5cdFx0XHRyZXR1cm4gY29kZVBvaW50IC0gOTc7XG5cdFx0fVxuXHRcdHJldHVybiBiYXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgZGlnaXQvaW50ZWdlciBpbnRvIGEgYmFzaWMgY29kZSBwb2ludC5cblx0ICogQHNlZSBgYmFzaWNUb0RpZ2l0KClgXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBkaWdpdCBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQuXG5cdCAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBiYXNpYyBjb2RlIHBvaW50IHdob3NlIHZhbHVlICh3aGVuIHVzZWQgZm9yXG5cdCAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG5cdCAqIGAwYCB0byBgYmFzZSAtIDFgLiBJZiBgZmxhZ2AgaXMgbm9uLXplcm8sIHRoZSB1cHBlcmNhc2UgZm9ybSBpc1xuXHQgKiB1c2VkOyBlbHNlLCB0aGUgbG93ZXJjYXNlIGZvcm0gaXMgdXNlZC4gVGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZFxuXHQgKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuXHQgKi9cblx0ZnVuY3Rpb24gZGlnaXRUb0Jhc2ljKGRpZ2l0LCBmbGFnKSB7XG5cdFx0Ly8gIDAuLjI1IG1hcCB0byBBU0NJSSBhLi56IG9yIEEuLlpcblx0XHQvLyAyNi4uMzUgbWFwIHRvIEFTQ0lJIDAuLjlcblx0XHRyZXR1cm4gZGlnaXQgKyAyMiArIDc1ICogKGRpZ2l0IDwgMjYpIC0gKChmbGFnICE9IDApIDw8IDUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEJpYXMgYWRhcHRhdGlvbiBmdW5jdGlvbiBhcyBwZXIgc2VjdGlvbiAzLjQgb2YgUkZDIDM0OTIuXG5cdCAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBhZGFwdChkZWx0YSwgbnVtUG9pbnRzLCBmaXJzdFRpbWUpIHtcblx0XHR2YXIgayA9IDA7XG5cdFx0ZGVsdGEgPSBmaXJzdFRpbWUgPyBmbG9vcihkZWx0YSAvIGRhbXApIDogZGVsdGEgPj4gMTtcblx0XHRkZWx0YSArPSBmbG9vcihkZWx0YSAvIG51bVBvaW50cyk7XG5cdFx0Zm9yICgvKiBubyBpbml0aWFsaXphdGlvbiAqLzsgZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcblx0XHRcdGRlbHRhID0gZmxvb3IoZGVsdGEgLyBiYXNlTWludXNUTWluKTtcblx0XHR9XG5cdFx0cmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzIHRvIGEgc3RyaW5nIG9mIFVuaWNvZGVcblx0ICogc3ltYm9scy5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuXHQgKi9cblx0ZnVuY3Rpb24gZGVjb2RlKGlucHV0KSB7XG5cdFx0Ly8gRG9uJ3QgdXNlIFVDUy0yXG5cdFx0dmFyIG91dHB1dCA9IFtdLFxuXHRcdCAgICBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCxcblx0XHQgICAgb3V0LFxuXHRcdCAgICBpID0gMCxcblx0XHQgICAgbiA9IGluaXRpYWxOLFxuXHRcdCAgICBiaWFzID0gaW5pdGlhbEJpYXMsXG5cdFx0ICAgIGJhc2ljLFxuXHRcdCAgICBqLFxuXHRcdCAgICBpbmRleCxcblx0XHQgICAgb2xkaSxcblx0XHQgICAgdyxcblx0XHQgICAgayxcblx0XHQgICAgZGlnaXQsXG5cdFx0ICAgIHQsXG5cdFx0ICAgIC8qKiBDYWNoZWQgY2FsY3VsYXRpb24gcmVzdWx0cyAqL1xuXHRcdCAgICBiYXNlTWludXNUO1xuXG5cdFx0Ly8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50czogbGV0IGBiYXNpY2AgYmUgdGhlIG51bWJlciBvZiBpbnB1dCBjb2RlXG5cdFx0Ly8gcG9pbnRzIGJlZm9yZSB0aGUgbGFzdCBkZWxpbWl0ZXIsIG9yIGAwYCBpZiB0aGVyZSBpcyBub25lLCB0aGVuIGNvcHlcblx0XHQvLyB0aGUgZmlyc3QgYmFzaWMgY29kZSBwb2ludHMgdG8gdGhlIG91dHB1dC5cblxuXHRcdGJhc2ljID0gaW5wdXQubGFzdEluZGV4T2YoZGVsaW1pdGVyKTtcblx0XHRpZiAoYmFzaWMgPCAwKSB7XG5cdFx0XHRiYXNpYyA9IDA7XG5cdFx0fVxuXG5cdFx0Zm9yIChqID0gMDsgaiA8IGJhc2ljOyArK2opIHtcblx0XHRcdC8vIGlmIGl0J3Mgbm90IGEgYmFzaWMgY29kZSBwb2ludFxuXHRcdFx0aWYgKGlucHV0LmNoYXJDb2RlQXQoaikgPj0gMHg4MCkge1xuXHRcdFx0XHRlcnJvcignbm90LWJhc2ljJyk7XG5cdFx0XHR9XG5cdFx0XHRvdXRwdXQucHVzaChpbnB1dC5jaGFyQ29kZUF0KGopKTtcblx0XHR9XG5cblx0XHQvLyBNYWluIGRlY29kaW5nIGxvb3A6IHN0YXJ0IGp1c3QgYWZ0ZXIgdGhlIGxhc3QgZGVsaW1pdGVyIGlmIGFueSBiYXNpYyBjb2RlXG5cdFx0Ly8gcG9pbnRzIHdlcmUgY29waWVkOyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG90aGVyd2lzZS5cblxuXHRcdGZvciAoaW5kZXggPSBiYXNpYyA+IDAgPyBiYXNpYyArIDEgOiAwOyBpbmRleCA8IGlucHV0TGVuZ3RoOyAvKiBubyBmaW5hbCBleHByZXNzaW9uICovKSB7XG5cblx0XHRcdC8vIGBpbmRleGAgaXMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBjb25zdW1lZC5cblx0XHRcdC8vIERlY29kZSBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIGludG8gYGRlbHRhYCxcblx0XHRcdC8vIHdoaWNoIGdldHMgYWRkZWQgdG8gYGlgLiBUaGUgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgZWFzaWVyXG5cdFx0XHQvLyBpZiB3ZSBpbmNyZWFzZSBgaWAgYXMgd2UgZ28sIHRoZW4gc3VidHJhY3Qgb2ZmIGl0cyBzdGFydGluZ1xuXHRcdFx0Ly8gdmFsdWUgYXQgdGhlIGVuZCB0byBvYnRhaW4gYGRlbHRhYC5cblx0XHRcdGZvciAob2xkaSA9IGksIHcgPSAxLCBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovOyBrICs9IGJhc2UpIHtcblxuXHRcdFx0XHRpZiAoaW5kZXggPj0gaW5wdXRMZW5ndGgpIHtcblx0XHRcdFx0XHRlcnJvcignaW52YWxpZC1pbnB1dCcpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGlnaXQgPSBiYXNpY1RvRGlnaXQoaW5wdXQuY2hhckNvZGVBdChpbmRleCsrKSk7XG5cblx0XHRcdFx0aWYgKGRpZ2l0ID49IGJhc2UgfHwgZGlnaXQgPiBmbG9vcigobWF4SW50IC0gaSkgLyB3KSkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aSArPSBkaWdpdCAqIHc7XG5cdFx0XHRcdHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXG5cdFx0XHRcdGlmIChkaWdpdCA8IHQpIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdFx0aWYgKHcgPiBmbG9vcihtYXhJbnQgLyBiYXNlTWludXNUKSkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dyAqPSBiYXNlTWludXNUO1xuXG5cdFx0XHR9XG5cblx0XHRcdG91dCA9IG91dHB1dC5sZW5ndGggKyAxO1xuXHRcdFx0YmlhcyA9IGFkYXB0KGkgLSBvbGRpLCBvdXQsIG9sZGkgPT0gMCk7XG5cblx0XHRcdC8vIGBpYCB3YXMgc3VwcG9zZWQgdG8gd3JhcCBhcm91bmQgZnJvbSBgb3V0YCB0byBgMGAsXG5cdFx0XHQvLyBpbmNyZW1lbnRpbmcgYG5gIGVhY2ggdGltZSwgc28gd2UnbGwgZml4IHRoYXQgbm93OlxuXHRcdFx0aWYgKGZsb29yKGkgLyBvdXQpID4gbWF4SW50IC0gbikge1xuXHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdH1cblxuXHRcdFx0biArPSBmbG9vcihpIC8gb3V0KTtcblx0XHRcdGkgJT0gb3V0O1xuXG5cdFx0XHQvLyBJbnNlcnQgYG5gIGF0IHBvc2l0aW9uIGBpYCBvZiB0aGUgb3V0cHV0XG5cdFx0XHRvdXRwdXQuc3BsaWNlKGkrKywgMCwgbik7XG5cblx0XHR9XG5cblx0XHRyZXR1cm4gdWNzMmVuY29kZShvdXRwdXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scyAoZS5nLiBhIGRvbWFpbiBuYW1lIGxhYmVsKSB0byBhXG5cdCAqIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cblx0ICovXG5cdGZ1bmN0aW9uIGVuY29kZShpbnB1dCkge1xuXHRcdHZhciBuLFxuXHRcdCAgICBkZWx0YSxcblx0XHQgICAgaGFuZGxlZENQQ291bnQsXG5cdFx0ICAgIGJhc2ljTGVuZ3RoLFxuXHRcdCAgICBiaWFzLFxuXHRcdCAgICBqLFxuXHRcdCAgICBtLFxuXHRcdCAgICBxLFxuXHRcdCAgICBrLFxuXHRcdCAgICB0LFxuXHRcdCAgICBjdXJyZW50VmFsdWUsXG5cdFx0ICAgIG91dHB1dCA9IFtdLFxuXHRcdCAgICAvKiogYGlucHV0TGVuZ3RoYCB3aWxsIGhvbGQgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyBpbiBgaW5wdXRgLiAqL1xuXHRcdCAgICBpbnB1dExlbmd0aCxcblx0XHQgICAgLyoqIENhY2hlZCBjYWxjdWxhdGlvbiByZXN1bHRzICovXG5cdFx0ICAgIGhhbmRsZWRDUENvdW50UGx1c09uZSxcblx0XHQgICAgYmFzZU1pbnVzVCxcblx0XHQgICAgcU1pbnVzVDtcblxuXHRcdC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIFVuaWNvZGVcblx0XHRpbnB1dCA9IHVjczJkZWNvZGUoaW5wdXQpO1xuXG5cdFx0Ly8gQ2FjaGUgdGhlIGxlbmd0aFxuXHRcdGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG5cdFx0Ly8gSW5pdGlhbGl6ZSB0aGUgc3RhdGVcblx0XHRuID0gaW5pdGlhbE47XG5cdFx0ZGVsdGEgPSAwO1xuXHRcdGJpYXMgPSBpbml0aWFsQmlhcztcblxuXHRcdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHNcblx0XHRmb3IgKGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuXHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cdFx0XHRpZiAoY3VycmVudFZhbHVlIDwgMHg4MCkge1xuXHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoY3VycmVudFZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7XG5cblx0XHQvLyBgaGFuZGxlZENQQ291bnRgIGlzIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgdGhhdCBoYXZlIGJlZW4gaGFuZGxlZDtcblx0XHQvLyBgYmFzaWNMZW5ndGhgIGlzIHRoZSBudW1iZXIgb2YgYmFzaWMgY29kZSBwb2ludHMuXG5cblx0XHQvLyBGaW5pc2ggdGhlIGJhc2ljIHN0cmluZyAtIGlmIGl0IGlzIG5vdCBlbXB0eSAtIHdpdGggYSBkZWxpbWl0ZXJcblx0XHRpZiAoYmFzaWNMZW5ndGgpIHtcblx0XHRcdG91dHB1dC5wdXNoKGRlbGltaXRlcik7XG5cdFx0fVxuXG5cdFx0Ly8gTWFpbiBlbmNvZGluZyBsb29wOlxuXHRcdHdoaWxlIChoYW5kbGVkQ1BDb3VudCA8IGlucHV0TGVuZ3RoKSB7XG5cblx0XHRcdC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHRcblx0XHRcdC8vIGxhcmdlciBvbmU6XG5cdFx0XHRmb3IgKG0gPSBtYXhJbnQsIGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuXHRcdFx0XHRjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcblx0XHRcdFx0XHRtID0gY3VycmVudFZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEluY3JlYXNlIGBkZWx0YWAgZW5vdWdoIHRvIGFkdmFuY2UgdGhlIGRlY29kZXIncyA8bixpPiBzdGF0ZSB0byA8bSwwPixcblx0XHRcdC8vIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93XG5cdFx0XHRoYW5kbGVkQ1BDb3VudFBsdXNPbmUgPSBoYW5kbGVkQ1BDb3VudCArIDE7XG5cdFx0XHRpZiAobSAtIG4gPiBmbG9vcigobWF4SW50IC0gZGVsdGEpIC8gaGFuZGxlZENQQ291bnRQbHVzT25lKSkge1xuXHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdH1cblxuXHRcdFx0ZGVsdGEgKz0gKG0gLSBuKSAqIGhhbmRsZWRDUENvdW50UGx1c09uZTtcblx0XHRcdG4gPSBtO1xuXG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuXHRcdFx0XHRjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcblxuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlIDwgbiAmJiArK2RlbHRhID4gbWF4SW50KSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlID09IG4pIHtcblx0XHRcdFx0XHQvLyBSZXByZXNlbnQgZGVsdGEgYXMgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlclxuXHRcdFx0XHRcdGZvciAocSA9IGRlbHRhLCBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovOyBrICs9IGJhc2UpIHtcblx0XHRcdFx0XHRcdHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXHRcdFx0XHRcdFx0aWYgKHEgPCB0KSB7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cU1pbnVzVCA9IHEgLSB0O1xuXHRcdFx0XHRcdFx0YmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuXHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goXG5cdFx0XHRcdFx0XHRcdHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWModCArIHFNaW51c1QgJSBiYXNlTWludXNULCAwKSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRxID0gZmxvb3IocU1pbnVzVCAvIGJhc2VNaW51c1QpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWMocSwgMCkpKTtcblx0XHRcdFx0XHRiaWFzID0gYWRhcHQoZGVsdGEsIGhhbmRsZWRDUENvdW50UGx1c09uZSwgaGFuZGxlZENQQ291bnQgPT0gYmFzaWNMZW5ndGgpO1xuXHRcdFx0XHRcdGRlbHRhID0gMDtcblx0XHRcdFx0XHQrK2hhbmRsZWRDUENvdW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdCsrZGVsdGE7XG5cdFx0XHQrK247XG5cblx0XHR9XG5cdFx0cmV0dXJuIG91dHB1dC5qb2luKCcnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzXG5cdCAqIHRvIFVuaWNvZGUuIE9ubHkgdGhlIFB1bnljb2RlZCBwYXJ0cyBvZiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQsIGkuZS5cblx0ICogaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgb24gYSBzdHJpbmcgdGhhdCBoYXMgYWxyZWFkeSBiZWVuXG5cdCAqIGNvbnZlcnRlZCB0byBVbmljb2RlLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZWQgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0b1xuXHQgKiBjb252ZXJ0IHRvIFVuaWNvZGUuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBVbmljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBQdW55Y29kZVxuXHQgKiBzdHJpbmcuXG5cdCAqL1xuXHRmdW5jdGlvbiB0b1VuaWNvZGUoaW5wdXQpIHtcblx0XHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRcdHJldHVybiByZWdleFB1bnljb2RlLnRlc3Qoc3RyaW5nKVxuXHRcdFx0XHQ/IGRlY29kZShzdHJpbmcuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSlcblx0XHRcdFx0OiBzdHJpbmc7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBVbmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzIHRvXG5cdCAqIFB1bnljb2RlLiBPbmx5IHRoZSBub24tQVNDSUkgcGFydHMgb2YgdGhlIGRvbWFpbiBuYW1lIHdpbGwgYmUgY29udmVydGVkLFxuXHQgKiBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCdzIGFscmVhZHkgaW5cblx0ICogQVNDSUkuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG8gY29udmVydCwgYXMgYVxuXHQgKiBVbmljb2RlIHN0cmluZy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIFB1bnljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBkb21haW4gbmFtZSBvclxuXHQgKiBlbWFpbCBhZGRyZXNzLlxuXHQgKi9cblx0ZnVuY3Rpb24gdG9BU0NJSShpbnB1dCkge1xuXHRcdHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uKHN0cmluZykge1xuXHRcdFx0cmV0dXJuIHJlZ2V4Tm9uQVNDSUkudGVzdChzdHJpbmcpXG5cdFx0XHRcdD8gJ3huLS0nICsgZW5jb2RlKHN0cmluZylcblx0XHRcdFx0OiBzdHJpbmc7XG5cdFx0fSk7XG5cdH1cblxuXHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuXHQvKiogRGVmaW5lIHRoZSBwdWJsaWMgQVBJICovXG5cdHB1bnljb2RlID0ge1xuXHRcdC8qKlxuXHRcdCAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBQdW55Y29kZS5qcyB2ZXJzaW9uIG51bWJlci5cblx0XHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0XHQgKiBAdHlwZSBTdHJpbmdcblx0XHQgKi9cblx0XHQndmVyc2lvbic6ICcxLjQuMScsXG5cdFx0LyoqXG5cdFx0ICogQW4gb2JqZWN0IG9mIG1ldGhvZHMgdG8gY29udmVydCBmcm9tIEphdmFTY3JpcHQncyBpbnRlcm5hbCBjaGFyYWN0ZXJcblx0XHQgKiByZXByZXNlbnRhdGlvbiAoVUNTLTIpIHRvIFVuaWNvZGUgY29kZSBwb2ludHMsIGFuZCBiYWNrLlxuXHRcdCAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuXHRcdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHRcdCAqIEB0eXBlIE9iamVjdFxuXHRcdCAqL1xuXHRcdCd1Y3MyJzoge1xuXHRcdFx0J2RlY29kZSc6IHVjczJkZWNvZGUsXG5cdFx0XHQnZW5jb2RlJzogdWNzMmVuY29kZVxuXHRcdH0sXG5cdFx0J2RlY29kZSc6IGRlY29kZSxcblx0XHQnZW5jb2RlJzogZW5jb2RlLFxuXHRcdCd0b0FTQ0lJJzogdG9BU0NJSSxcblx0XHQndG9Vbmljb2RlJzogdG9Vbmljb2RlXG5cdH07XG5cblx0LyoqIEV4cG9zZSBgcHVueWNvZGVgICovXG5cdC8vIFNvbWUgQU1EIGJ1aWxkIG9wdGltaXplcnMsIGxpa2Ugci5qcywgY2hlY2sgZm9yIHNwZWNpZmljIGNvbmRpdGlvbiBwYXR0ZXJuc1xuXHQvLyBsaWtlIHRoZSBmb2xsb3dpbmc6XG5cdGlmIChcblx0XHR0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiZcblx0XHR0eXBlb2YgZGVmaW5lLmFtZCA9PSAnb2JqZWN0JyAmJlxuXHRcdGRlZmluZS5hbWRcblx0KSB7XG5cdFx0ZGVmaW5lKCdwdW55Y29kZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHB1bnljb2RlO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKGZyZWVFeHBvcnRzICYmIGZyZWVNb2R1bGUpIHtcblx0XHRpZiAobW9kdWxlLmV4cG9ydHMgPT0gZnJlZUV4cG9ydHMpIHtcblx0XHRcdC8vIGluIE5vZGUuanMsIGlvLmpzLCBvciBSaW5nb0pTIHYwLjguMCtcblx0XHRcdGZyZWVNb2R1bGUuZXhwb3J0cyA9IHB1bnljb2RlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBpbiBOYXJ3aGFsIG9yIFJpbmdvSlMgdjAuNy4wLVxuXHRcdFx0Zm9yIChrZXkgaW4gcHVueWNvZGUpIHtcblx0XHRcdFx0cHVueWNvZGUuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAoZnJlZUV4cG9ydHNba2V5XSA9IHB1bnljb2RlW2tleV0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHQvLyBpbiBSaGlubyBvciBhIHdlYiBicm93c2VyXG5cdFx0cm9vdC5wdW55Y29kZSA9IHB1bnljb2RlO1xuXHR9XG5cbn0odGhpcykpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFJQTtBQUNBO0FBTkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQTtBQWJBO0FBQ0E7QUFjQTtBQUNBO0FBaEJBO0FBQUE7QUFrQkE7QUFsQkE7QUFDQTtBQW1CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUtBO0FBQ0E7QUE1QkE7QUFBQTtBQUNBO0FBK0JBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBYUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFXQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBZkE7QUFBQTtBQUNBO0FBbUJBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFyQkE7QUF3QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQ0EsYUFhQTtBQUVBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/node-libs-browser/node_modules/punycode/punycode.js\n");
|
2329 |
|
2330 | }),
|
2331 |
|
2332 | "../../../node_modules/regenerator-runtime/runtime.js":
|
2333 |
|
2334 |
|
2335 |
|
2336 |
|
2337 | (function(module, exports, __webpack_require__) {
|
2338 |
|
2339 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n /**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n var runtime = function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function (obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\"; // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n\n var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n\n\n var IteratorPrototype = {};\n\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"); // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n\n exports.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n\n genFun.prototype = Object.create(Gp);\n return genFun;\n }; // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && typeof value === \"object\" && hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function (unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function (error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n } // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n\n exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n\n exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n } // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted; // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n } // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).\n\n context.next = delegate.nextLoc; // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n } // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n\n\n context.delegate = null;\n return ContinueSentinel;\n } // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n\n\n defineIteratorMethods(Gp);\n define(Gp, toStringTagSymbol, \"Generator\"); // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n\n Gp[iteratorSymbol] = function () {\n return this;\n };\n\n Gp.toString = function () {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{\n tryLoc: \"root\"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse(); // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n } // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n return next;\n };\n\n return next.next = next;\n }\n } // Return an iterator with no values.\n\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function (skipTempReset) {\n this.prev = 0;\n this.next = 0; // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined;\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n stop: function () {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function (exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n abrupt: function (type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n complete: function (record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" || record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n finish: function (finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function (tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n } // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function (iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n }; // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n\n return exports;\n }( // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n true ? module.exports : undefined);\n\n try {\n regeneratorRuntime = runtime;\n } catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanM/NjllMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbnZhciBydW50aW1lID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gSUUgOCBoYXMgYSBicm9rZW4gT2JqZWN0LmRlZmluZVByb3BlcnR5IHRoYXQgb25seSB3b3JrcyBvbiBET00gb2JqZWN0cy5cbiAgICBkZWZpbmUoe30sIFwiXCIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbihvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBleHBvcnRzLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRlZmluZShcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSxcbiAgICB0b1N0cmluZ1RhZ1N5bWJvbCxcbiAgICBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgKTtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBkZWZpbmUocHJvdG90eXBlLCBtZXRob2QsIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBkZWZpbmUoZ2VuRnVuLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKTtcbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgZXhwb3J0cy5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yLCBQcm9taXNlSW1wbCkge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICAvLyBJZiBhIHJlamVjdGVkIFByb21pc2Ugd2FzIHlpZWxkZWQsIHRocm93IHRoZSByZWplY3Rpb24gYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgaGFuZGxlZCB0aGVyZS5cbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlSW1wbChmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBleHBvcnRzLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBleHBvcnRzLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QsIFByb21pc2VJbXBsKSB7XG4gICAgaWYgKFByb21pc2VJbXBsID09PSB2b2lkIDApIFByb21pc2VJbXBsID0gUHJvbWlzZTtcblxuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSxcbiAgICAgIFByb21pc2VJbXBsXG4gICAgKTtcblxuICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAvLyBOb3RlOiBbXCJyZXR1cm5cIl0gbXVzdCBiZSB1c2VkIGZvciBFUzMgcGFyc2luZyBjb21wYXRpYmlsaXR5LlxuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBkZWZpbmUoR3AsIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvclwiKTtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBleHBvcnRzLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgZXhwb3J0cy52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlXG4gIC8vIG9yIG5vdCwgcmV0dXJuIHRoZSBydW50aW1lIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBkZWNsYXJlIHRoZSB2YXJpYWJsZVxuICAvLyByZWdlbmVyYXRvclJ1bnRpbWUgaW4gdGhlIG91dGVyIHNjb3BlLCB3aGljaCBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmVcbiAgLy8gaW5qZWN0ZWQgZWFzaWx5IGJ5IGBiaW4vcmVnZW5lcmF0b3IgLS1pbmNsdWRlLXJ1bnRpbWUgc2NyaXB0LmpzYC5cbiAgcmV0dXJuIGV4cG9ydHM7XG5cbn0oXG4gIC8vIElmIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZSwgdXNlIG1vZHVsZS5leHBvcnRzXG4gIC8vIGFzIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgbmFtZXNwYWNlLiBPdGhlcndpc2UgY3JlYXRlIGEgbmV3IGVtcHR5XG4gIC8vIG9iamVjdC4gRWl0aGVyIHdheSwgdGhlIHJlc3VsdGluZyBvYmplY3Qgd2lsbCBiZSB1c2VkIHRvIGluaXRpYWxpemVcbiAgLy8gdGhlIHJlZ2VuZXJhdG9yUnVudGltZSB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS5cbiAgdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiA/IG1vZHVsZS5leHBvcnRzIDoge31cbikpO1xuXG50cnkge1xuICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lO1xufSBjYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgLy8gVGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSBydW5uaW5nIGluIHN0cmljdCBtb2RlLCBzbyB0aGUgYWJvdmVcbiAgLy8gYXNzaWdubWVudCBzaG91bGQgYWx3YXlzIHdvcmsgdW5sZXNzIHNvbWV0aGluZyBpcyBtaXNjb25maWd1cmVkLiBKdXN0XG4gIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuIGVzY2FwZVxuICAvLyBzdHJpY3QgbW9kZSB1c2luZyBhIGdsb2JhbCBGdW5jdGlvbiBjYWxsLiBUaGlzIGNvdWxkIGNvbmNlaXZhYmx5IGZhaWxcbiAgLy8gaWYgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmb3JiaWRzIHVzaW5nIEZ1bmN0aW9uLCBidXQgaW4gdGhhdCBjYXNlXG4gIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gIC8vIHlvdSd2ZSBtaXNjb25maWd1cmVkIHlvdXIgYnVuZGxlciB0byBmb3JjZSBzdHJpY3QgbW9kZSBhbmQgYXBwbGllZCBhXG4gIC8vIENTUCB0byBmb3JiaWQgRnVuY3Rpb24sIGFuZCB5b3UncmUgbm90IHdpbGxpbmcgdG8gZml4IGVpdGhlciBvZiB0aG9zZVxuICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBS0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXJNQTtBQXlNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/regenerator-runtime/runtime.js\n");
|
2340 |
|
2341 | }),
|
2342 |
|
2343 | "../../../node_modules/uc.micro/categories/Cc/regex.js":
|
2344 |
|
2345 |
|
2346 |
|
2347 |
|
2348 | (function(module, exports, __webpack_require__) {
|
2349 |
|
2350 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = /[\\0-\\x1F\\x7F-\\x9F]/;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VjLm1pY3JvL2NhdGVnb3JpZXMvQ2MvcmVnZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvdWMubWljcm8vY2F0ZWdvcmllcy9DYy9yZWdleC5qcz84MzMxIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzPS9bXFwwLVxceDFGXFx4N0YtXFx4OUZdLyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/uc.micro/categories/Cc/regex.js\n");
|
2351 |
|
2352 | }),
|
2353 |
|
2354 | "../../../node_modules/uc.micro/categories/Cf/regex.js":
|
2355 |
|
2356 |
|
2357 |
|
2358 |
|
2359 | (function(module, exports, __webpack_require__) {
|
2360 |
|
2361 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VjLm1pY3JvL2NhdGVnb3JpZXMvQ2YvcmVnZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvdWMubWljcm8vY2F0ZWdvcmllcy9DZi9yZWdleC5qcz8zODFmIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzPS9bXFx4QURcXHUwNjAwLVxcdTA2MDVcXHUwNjFDXFx1MDZERFxcdTA3MEZcXHUwOEUyXFx1MTgwRVxcdTIwMEItXFx1MjAwRlxcdTIwMkEtXFx1MjAyRVxcdTIwNjAtXFx1MjA2NFxcdTIwNjYtXFx1MjA2RlxcdUZFRkZcXHVGRkY5LVxcdUZGRkJdfFxcdUQ4MDRbXFx1RENCRFxcdURDQ0RdfFxcdUQ4MkZbXFx1RENBMC1cXHVEQ0EzXXxcXHVEODM0W1xcdURENzMtXFx1REQ3QV18XFx1REI0MFtcXHVEQzAxXFx1REMyMC1cXHVEQzdGXS8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/uc.micro/categories/Cf/regex.js\n");
|
2362 |
|
2363 | }),
|
2364 |
|
2365 | "../../../node_modules/uc.micro/categories/P/regex.js":
|
2366 |
|
2367 |
|
2368 |
|
2369 |
|
2370 | (function(module, exports, __webpack_require__) {
|
2371 |
|
2372 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4E\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VjLm1pY3JvL2NhdGVnb3JpZXMvUC9yZWdleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy91Yy5taWNyby9jYXRlZ29yaWVzL1AvcmVnZXguanM/MTQ0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cz0vWyEtIyUtXFwqLC1cXC86O1xcP0BcXFstXFxdX1xce1xcfVxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTA5RkRcXHUwQTc2XFx1MEFGMFxcdTBDODRcXHUwREY0XFx1MEU0RlxcdTBFNUFcXHUwRTVCXFx1MEYwNC1cXHUwRjEyXFx1MEYxNFxcdTBGM0EtXFx1MEYzRFxcdTBGODVcXHUwRkQwLVxcdTBGRDRcXHUwRkQ5XFx1MEZEQVxcdTEwNEEtXFx1MTA0RlxcdTEwRkJcXHUxMzYwLVxcdTEzNjhcXHUxNDAwXFx1MTY2RFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNEVcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XXxcXHVEODAwW1xcdUREMDAtXFx1REQwMlxcdURGOUZcXHVERkQwXXxcXHVEODAxXFx1REQ2RnxcXHVEODAyW1xcdURDNTdcXHVERDFGXFx1REQzRlxcdURFNTAtXFx1REU1OFxcdURFN0ZcXHVERUYwLVxcdURFRjZcXHVERjM5LVxcdURGM0ZcXHVERjk5LVxcdURGOUNdfFxcdUQ4MDNbXFx1REY1NS1cXHVERjU5XXxcXHVEODA0W1xcdURDNDctXFx1REM0RFxcdURDQkJcXHVEQ0JDXFx1RENCRS1cXHVEQ0MxXFx1REQ0MC1cXHVERDQzXFx1REQ3NFxcdURENzVcXHVEREM1LVxcdUREQzhcXHVERENEXFx1REREQlxcdUREREQtXFx1RERERlxcdURFMzgtXFx1REUzRFxcdURFQTldfFxcdUQ4MDVbXFx1REM0Qi1cXHVEQzRGXFx1REM1QlxcdURDNURcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REU2MC1cXHVERTZDXFx1REYzQy1cXHVERjNFXXxcXHVEODA2W1xcdURDM0JcXHVERTNGLVxcdURFNDZcXHVERTlBLVxcdURFOUNcXHVERTlFLVxcdURFQTJdfFxcdUQ4MDdbXFx1REM0MS1cXHVEQzQ1XFx1REM3MFxcdURDNzFcXHVERUY3XFx1REVGOF18XFx1RDgwOVtcXHVEQzcwLVxcdURDNzRdfFxcdUQ4MUFbXFx1REU2RVxcdURFNkZcXHVERUY1XFx1REYzNy1cXHVERjNCXFx1REY0NF18XFx1RDgxQltcXHVERTk3LVxcdURFOUFdfFxcdUQ4MkZcXHVEQzlGfFxcdUQ4MzZbXFx1REU4Ny1cXHVERThCXXxcXHVEODNBW1xcdURENUVcXHVERDVGXS8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/uc.micro/categories/P/regex.js\n");
|
2373 |
|
2374 | }),
|
2375 |
|
2376 | "../../../node_modules/uc.micro/categories/Z/regex.js":
|
2377 |
|
2378 |
|
2379 |
|
2380 |
|
2381 | (function(module, exports, __webpack_require__) {
|
2382 |
|
2383 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = /[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VjLm1pY3JvL2NhdGVnb3JpZXMvWi9yZWdleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy91Yy5taWNyby9jYXRlZ29yaWVzL1ovcmVnZXguanM/MmE5ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cz0vWyBcXHhBMFxcdTE2ODBcXHUyMDAwLVxcdTIwMEFcXHUyMDI4XFx1MjAyOVxcdTIwMkZcXHUyMDVGXFx1MzAwMF0vIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/uc.micro/categories/Z/regex.js\n");
|
2384 |
|
2385 | }),
|
2386 |
|
2387 | "../../../node_modules/uc.micro/index.js":
|
2388 |
|
2389 |
|
2390 |
|
2391 |
|
2392 | (function(module, exports, __webpack_require__) {
|
2393 |
|
2394 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n exports.Any = __webpack_require__(/*! ./properties/Any/regex */ \"../../../node_modules/uc.micro/properties/Any/regex.js\");\n exports.Cc = __webpack_require__(/*! ./categories/Cc/regex */ \"../../../node_modules/uc.micro/categories/Cc/regex.js\");\n exports.Cf = __webpack_require__(/*! ./categories/Cf/regex */ \"../../../node_modules/uc.micro/categories/Cf/regex.js\");\n exports.P = __webpack_require__(/*! ./categories/P/regex */ \"../../../node_modules/uc.micro/categories/P/regex.js\");\n exports.Z = __webpack_require__(/*! ./categories/Z/regex */ \"../../../node_modules/uc.micro/categories/Z/regex.js\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VjLm1pY3JvL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL3VjLm1pY3JvL2luZGV4LmpzPzcwNTEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLkFueSA9IHJlcXVpcmUoJy4vcHJvcGVydGllcy9BbnkvcmVnZXgnKTtcbmV4cG9ydHMuQ2MgID0gcmVxdWlyZSgnLi9jYXRlZ29yaWVzL0NjL3JlZ2V4Jyk7XG5leHBvcnRzLkNmICA9IHJlcXVpcmUoJy4vY2F0ZWdvcmllcy9DZi9yZWdleCcpO1xuZXhwb3J0cy5QICAgPSByZXF1aXJlKCcuL2NhdGVnb3JpZXMvUC9yZWdleCcpO1xuZXhwb3J0cy5aICAgPSByZXF1aXJlKCcuL2NhdGVnb3JpZXMvWi9yZWdleCcpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/uc.micro/index.js\n");
|
2395 |
|
2396 | }),
|
2397 |
|
2398 | "../../../node_modules/uc.micro/properties/Any/regex.js":
|
2399 |
|
2400 |
|
2401 |
|
2402 |
|
2403 | (function(module, exports, __webpack_require__) {
|
2404 |
|
2405 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VjLm1pY3JvL3Byb3BlcnRpZXMvQW55L3JlZ2V4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL3VjLm1pY3JvL3Byb3BlcnRpZXMvQW55L3JlZ2V4LmpzPzNmYzYiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHM9L1tcXDAtXFx1RDdGRlxcdUUwMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXS8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/uc.micro/properties/Any/regex.js\n");
|
2406 |
|
2407 | }),
|
2408 |
|
2409 | "../../../node_modules/webpack/buildin/global.js":
|
2410 |
|
2411 |
|
2412 |
|
2413 |
|
2414 | (function(module, exports, __webpack_require__) {
|
2415 |
|
2416 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var g; // This works in non-strict mode\n\n g = function () {\n return this;\n }();\n\n try {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n } catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n } // g can still be undefined, but nothing to do about it...\n // We return undefined, instead of nothing here, so it's\n // easier to handle this case. if(!global) { ...}\n\n\n module.exports = g;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9nbG9iYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanM/Y2QwMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/webpack/buildin/global.js\n");
|
2417 |
|
2418 | }),
|
2419 |
|
2420 | "../../../node_modules/webpack/buildin/module.js":
|
2421 |
|
2422 |
|
2423 |
|
2424 |
|
2425 | (function(module, exports, __webpack_require__) {
|
2426 |
|
2427 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function () {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function () {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9tb2R1bGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8od2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanM/Y2VkMiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRpZiAoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XG5cdH1cblx0cmV0dXJuIG1vZHVsZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/webpack/buildin/module.js\n");
|
2428 |
|
2429 | }),
|
2430 |
|
2431 | "../../graphiql-react/dist/Range.es.js":
|
2432 |
|
2433 |
|
2434 |
|
2435 |
|
2436 | (function(module, exports, __webpack_require__) {
|
2437 |
|
2438 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.R = _exports.P = _exports.C = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n class CharacterStream {\n constructor(sourceText) {\n var _this = this;\n\n this.getStartOfToken = () => this._start;\n\n this.getCurrentPosition = () => this._pos;\n\n this.eol = () => this._sourceText.length === this._pos;\n\n this.sol = () => this._pos === 0;\n\n this.peek = () => {\n return this._sourceText.charAt(this._pos) ? this._sourceText.charAt(this._pos) : null;\n };\n\n this.next = () => {\n const char = this._sourceText.charAt(this._pos);\n\n this._pos++;\n return char;\n };\n\n this.eat = pattern => {\n const isMatched = this._testNextCharacter(pattern);\n\n if (isMatched) {\n this._start = this._pos;\n this._pos++;\n return this._sourceText.charAt(this._pos - 1);\n }\n\n return void 0;\n };\n\n this.eatWhile = match => {\n let isMatched = this._testNextCharacter(match);\n\n let didEat = false;\n\n if (isMatched) {\n didEat = isMatched;\n this._start = this._pos;\n }\n\n while (isMatched) {\n this._pos++;\n isMatched = this._testNextCharacter(match);\n didEat = true;\n }\n\n return didEat;\n };\n\n this.eatSpace = () => this.eatWhile(/[\\s\\u00a0]/);\n\n this.skipToEnd = () => {\n this._pos = this._sourceText.length;\n };\n\n this.skipTo = position => {\n this._pos = position;\n };\n\n this.match = function (pattern) {\n let consume = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let caseFold = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n let token = null;\n let match = null;\n\n if (typeof pattern === \"string\") {\n const regex = new RegExp(pattern, caseFold ? \"i\" : \"g\");\n match = regex.test(_this._sourceText.substr(_this._pos, pattern.length));\n token = pattern;\n } else if (pattern instanceof RegExp) {\n match = _this._sourceText.slice(_this._pos).match(pattern);\n token = match === null || match === void 0 ? void 0 : match[0];\n }\n\n if (match != null) {\n if (typeof pattern === \"string\" || match instanceof Array && _this._sourceText.startsWith(match[0], _this._pos)) {\n if (consume) {\n _this._start = _this._pos;\n\n if (token && token.length) {\n _this._pos += token.length;\n }\n }\n\n return match;\n }\n }\n\n return false;\n };\n\n this.backUp = num => {\n this._pos -= num;\n };\n\n this.column = () => this._pos;\n\n this.indentation = () => {\n const match = this._sourceText.match(/\\s*/);\n\n let indent = 0;\n\n if (match && match.length !== 0) {\n const whiteSpaces = match[0];\n let pos = 0;\n\n while (whiteSpaces.length > pos) {\n if (whiteSpaces.charCodeAt(pos) === 9) {\n indent += 2;\n } else {\n indent++;\n }\n\n pos++;\n }\n }\n\n return indent;\n };\n\n this.current = () => this._sourceText.slice(this._start, this._pos);\n\n this._start = 0;\n this._pos = 0;\n this._sourceText = sourceText;\n }\n\n _testNextCharacter(pattern) {\n const character = this._sourceText.charAt(this._pos);\n\n let isMatched = false;\n\n if (typeof pattern === \"string\") {\n isMatched = character === pattern;\n } else {\n isMatched = pattern instanceof RegExp ? pattern.test(character) : pattern(character);\n }\n\n return isMatched;\n }\n\n }\n\n _exports.C = CharacterStream;\n\n __name(CharacterStream, \"CharacterStream\");\n\n class Range {\n constructor(start, end) {\n this.containsPosition = position => {\n if (this.start.line === position.line) {\n return this.start.character <= position.character;\n } else if (this.end.line === position.line) {\n return this.end.character >= position.character;\n } else {\n return this.start.line <= position.line && this.end.line >= position.line;\n }\n };\n\n this.start = start;\n this.end = end;\n }\n\n setStart(line, character) {\n this.start = new Position(line, character);\n }\n\n setEnd(line, character) {\n this.end = new Position(line, character);\n }\n\n }\n\n _exports.R = Range;\n\n __name(Range, \"Range\");\n\n class Position {\n constructor(line, character) {\n this.lessThanOrEqualTo = position => this.line < position.line || this.line === position.line && this.character <= position.character;\n\n this.line = line;\n this.character = character;\n }\n\n setLine(line) {\n this.line = line;\n }\n\n setCharacter(character) {\n this.character = character;\n }\n\n }\n\n _exports.P = Position;\n\n __name(Position, \"Position\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9SYW5nZS5lcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL3BhY2thZ2VzL2dyYXBoaXFsLXJlYWN0L2Rpc3QvUmFuZ2UuZXMuanM/Nzc4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSA9ICh0YXJnZXQsIHZhbHVlKSA9PiBfX2RlZlByb3AodGFyZ2V0LCBcIm5hbWVcIiwgeyB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuY2xhc3MgQ2hhcmFjdGVyU3RyZWFtIHtcbiAgY29uc3RydWN0b3Ioc291cmNlVGV4dCkge1xuICAgIHRoaXMuZ2V0U3RhcnRPZlRva2VuID0gKCkgPT4gdGhpcy5fc3RhcnQ7XG4gICAgdGhpcy5nZXRDdXJyZW50UG9zaXRpb24gPSAoKSA9PiB0aGlzLl9wb3M7XG4gICAgdGhpcy5lb2wgPSAoKSA9PiB0aGlzLl9zb3VyY2VUZXh0Lmxlbmd0aCA9PT0gdGhpcy5fcG9zO1xuICAgIHRoaXMuc29sID0gKCkgPT4gdGhpcy5fcG9zID09PSAwO1xuICAgIHRoaXMucGVlayA9ICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VUZXh0LmNoYXJBdCh0aGlzLl9wb3MpID8gdGhpcy5fc291cmNlVGV4dC5jaGFyQXQodGhpcy5fcG9zKSA6IG51bGw7XG4gICAgfTtcbiAgICB0aGlzLm5leHQgPSAoKSA9PiB7XG4gICAgICBjb25zdCBjaGFyID0gdGhpcy5fc291cmNlVGV4dC5jaGFyQXQodGhpcy5fcG9zKTtcbiAgICAgIHRoaXMuX3BvcysrO1xuICAgICAgcmV0dXJuIGNoYXI7XG4gICAgfTtcbiAgICB0aGlzLmVhdCA9IChwYXR0ZXJuKSA9PiB7XG4gICAgICBjb25zdCBpc01hdGNoZWQgPSB0aGlzLl90ZXN0TmV4dENoYXJhY3RlcihwYXR0ZXJuKTtcbiAgICAgIGlmIChpc01hdGNoZWQpIHtcbiAgICAgICAgdGhpcy5fc3RhcnQgPSB0aGlzLl9wb3M7XG4gICAgICAgIHRoaXMuX3BvcysrO1xuICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlVGV4dC5jaGFyQXQodGhpcy5fcG9zIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH07XG4gICAgdGhpcy5lYXRXaGlsZSA9IChtYXRjaCkgPT4ge1xuICAgICAgbGV0IGlzTWF0Y2hlZCA9IHRoaXMuX3Rlc3ROZXh0Q2hhcmFjdGVyKG1hdGNoKTtcbiAgICAgIGxldCBkaWRFYXQgPSBmYWxzZTtcbiAgICAgIGlmIChpc01hdGNoZWQpIHtcbiAgICAgICAgZGlkRWF0ID0gaXNNYXRjaGVkO1xuICAgICAgICB0aGlzLl9zdGFydCA9IHRoaXMuX3BvcztcbiAgICAgIH1cbiAgICAgIHdoaWxlIChpc01hdGNoZWQpIHtcbiAgICAgICAgdGhpcy5fcG9zKys7XG4gICAgICAgIGlzTWF0Y2hlZCA9IHRoaXMuX3Rlc3ROZXh0Q2hhcmFjdGVyKG1hdGNoKTtcbiAgICAgICAgZGlkRWF0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkaWRFYXQ7XG4gICAgfTtcbiAgICB0aGlzLmVhdFNwYWNlID0gKCkgPT4gdGhpcy5lYXRXaGlsZSgvW1xcc1xcdTAwYTBdLyk7XG4gICAgdGhpcy5za2lwVG9FbmQgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9wb3MgPSB0aGlzLl9zb3VyY2VUZXh0Lmxlbmd0aDtcbiAgICB9O1xuICAgIHRoaXMuc2tpcFRvID0gKHBvc2l0aW9uKSA9PiB7XG4gICAgICB0aGlzLl9wb3MgPSBwb3NpdGlvbjtcbiAgICB9O1xuICAgIHRoaXMubWF0Y2ggPSAocGF0dGVybiwgY29uc3VtZSA9IHRydWUsIGNhc2VGb2xkID0gZmFsc2UpID0+IHtcbiAgICAgIGxldCB0b2tlbiA9IG51bGw7XG4gICAgICBsZXQgbWF0Y2ggPSBudWxsO1xuICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChwYXR0ZXJuLCBjYXNlRm9sZCA/IFwiaVwiIDogXCJnXCIpO1xuICAgICAgICBtYXRjaCA9IHJlZ2V4LnRlc3QodGhpcy5fc291cmNlVGV4dC5zdWJzdHIodGhpcy5fcG9zLCBwYXR0ZXJuLmxlbmd0aCkpO1xuICAgICAgICB0b2tlbiA9IHBhdHRlcm47XG4gICAgICB9IGVsc2UgaWYgKHBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgbWF0Y2ggPSB0aGlzLl9zb3VyY2VUZXh0LnNsaWNlKHRoaXMuX3BvcykubWF0Y2gocGF0dGVybik7XG4gICAgICAgIHRva2VuID0gbWF0Y2ggPT09IG51bGwgfHwgbWF0Y2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1hdGNoWzBdO1xuICAgICAgfVxuICAgICAgaWYgKG1hdGNoICE9IG51bGwpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSBcInN0cmluZ1wiIHx8IG1hdGNoIGluc3RhbmNlb2YgQXJyYXkgJiYgdGhpcy5fc291cmNlVGV4dC5zdGFydHNXaXRoKG1hdGNoWzBdLCB0aGlzLl9wb3MpKSB7XG4gICAgICAgICAgaWYgKGNvbnN1bWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0ID0gdGhpcy5fcG9zO1xuICAgICAgICAgICAgaWYgKHRva2VuICYmIHRva2VuLmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLl9wb3MgKz0gdG9rZW4ubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIHRoaXMuYmFja1VwID0gKG51bSkgPT4ge1xuICAgICAgdGhpcy5fcG9zIC09IG51bTtcbiAgICB9O1xuICAgIHRoaXMuY29sdW1uID0gKCkgPT4gdGhpcy5fcG9zO1xuICAgIHRoaXMuaW5kZW50YXRpb24gPSAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRjaCA9IHRoaXMuX3NvdXJjZVRleHQubWF0Y2goL1xccyovKTtcbiAgICAgIGxldCBpbmRlbnQgPSAwO1xuICAgICAgaWYgKG1hdGNoICYmIG1hdGNoLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBjb25zdCB3aGl0ZVNwYWNlcyA9IG1hdGNoWzBdO1xuICAgICAgICBsZXQgcG9zID0gMDtcbiAgICAgICAgd2hpbGUgKHdoaXRlU3BhY2VzLmxlbmd0aCA+IHBvcykge1xuICAgICAgICAgIGlmICh3aGl0ZVNwYWNlcy5jaGFyQ29kZUF0KHBvcykgPT09IDkpIHtcbiAgICAgICAgICAgIGluZGVudCArPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmRlbnQrKztcbiAgICAgICAgICB9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmRlbnQ7XG4gICAgfTtcbiAgICB0aGlzLmN1cnJlbnQgPSAoKSA9PiB0aGlzLl9zb3VyY2VUZXh0LnNsaWNlKHRoaXMuX3N0YXJ0LCB0aGlzLl9wb3MpO1xuICAgIHRoaXMuX3N0YXJ0ID0gMDtcbiAgICB0aGlzLl9wb3MgPSAwO1xuICAgIHRoaXMuX3NvdXJjZVRleHQgPSBzb3VyY2VUZXh0O1xuICB9XG4gIF90ZXN0TmV4dENoYXJhY3RlcihwYXR0ZXJuKSB7XG4gICAgY29uc3QgY2hhcmFjdGVyID0gdGhpcy5fc291cmNlVGV4dC5jaGFyQXQodGhpcy5fcG9zKTtcbiAgICBsZXQgaXNNYXRjaGVkID0gZmFsc2U7XG4gICAgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBpc01hdGNoZWQgPSBjaGFyYWN0ZXIgPT09IHBhdHRlcm47XG4gICAgfSBlbHNlIHtcbiAgICAgIGlzTWF0Y2hlZCA9IHBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHAgPyBwYXR0ZXJuLnRlc3QoY2hhcmFjdGVyKSA6IHBhdHRlcm4oY2hhcmFjdGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzTWF0Y2hlZDtcbiAgfVxufVxuX19uYW1lKENoYXJhY3RlclN0cmVhbSwgXCJDaGFyYWN0ZXJTdHJlYW1cIik7XG5jbGFzcyBSYW5nZSB7XG4gIGNvbnN0cnVjdG9yKHN0YXJ0LCBlbmQpIHtcbiAgICB0aGlzLmNvbnRhaW5zUG9zaXRpb24gPSAocG9zaXRpb24pID0+IHtcbiAgICAgIGlmICh0aGlzLnN0YXJ0LmxpbmUgPT09IHBvc2l0aW9uLmxpbmUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnQuY2hhcmFjdGVyIDw9IHBvc2l0aW9uLmNoYXJhY3RlcjtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5lbmQubGluZSA9PT0gcG9zaXRpb24ubGluZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbmQuY2hhcmFjdGVyID49IHBvc2l0aW9uLmNoYXJhY3RlcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0LmxpbmUgPD0gcG9zaXRpb24ubGluZSAmJiB0aGlzLmVuZC5saW5lID49IHBvc2l0aW9uLmxpbmU7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gIH1cbiAgc2V0U3RhcnQobGluZSwgY2hhcmFjdGVyKSB7XG4gICAgdGhpcy5zdGFydCA9IG5ldyBQb3NpdGlvbihsaW5lLCBjaGFyYWN0ZXIpO1xuICB9XG4gIHNldEVuZChsaW5lLCBjaGFyYWN0ZXIpIHtcbiAgICB0aGlzLmVuZCA9IG5ldyBQb3NpdGlvbihsaW5lLCBjaGFyYWN0ZXIpO1xuICB9XG59XG5fX25hbWUoUmFuZ2UsIFwiUmFuZ2VcIik7XG5jbGFzcyBQb3NpdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGxpbmUsIGNoYXJhY3Rlcikge1xuICAgIHRoaXMubGVzc1RoYW5PckVxdWFsVG8gPSAocG9zaXRpb24pID0+IHRoaXMubGluZSA8IHBvc2l0aW9uLmxpbmUgfHwgdGhpcy5saW5lID09PSBwb3NpdGlvbi5saW5lICYmIHRoaXMuY2hhcmFjdGVyIDw9IHBvc2l0aW9uLmNoYXJhY3RlcjtcbiAgICB0aGlzLmxpbmUgPSBsaW5lO1xuICAgIHRoaXMuY2hhcmFjdGVyID0gY2hhcmFjdGVyO1xuICB9XG4gIHNldExpbmUobGluZSkge1xuICAgIHRoaXMubGluZSA9IGxpbmU7XG4gIH1cbiAgc2V0Q2hhcmFjdGVyKGNoYXJhY3Rlcikge1xuICAgIHRoaXMuY2hhcmFjdGVyID0gY2hhcmFjdGVyO1xuICB9XG59XG5fX25hbWUoUG9zaXRpb24sIFwiUG9zaXRpb25cIik7XG5leHBvcnQgeyBDaGFyYWN0ZXJTdHJlYW0gYXMgQywgUG9zaXRpb24gYXMgUCwgUmFuZ2UgYXMgUiB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQXhHQTtBQUNBOzs7QUF3R0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXBCQTtBQUNBOzs7QUFvQkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBWkE7QUFDQTs7O0FBWUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/Range.es.js\n");
|
2439 |
|
2440 | }),
|
2441 |
|
2442 | "../../graphiql-react/dist/SchemaReference.es.js":
|
2443 |
|
2444 |
|
2445 |
|
2446 |
|
2447 | (function(module, exports, __webpack_require__) {
|
2448 |
|
2449 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./introspection.es.js */ \"../../graphiql-react/dist/introspection.es.js\"), __webpack_require__(/*! ./forEachState.es.js */ \"../../graphiql-react/dist/forEachState.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _introspectionEs, _forEachStateEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.a = getFieldReference;\n _exports.b = getDirectiveReference;\n _exports.c = getArgumentReference;\n _exports.d = getEnumValueReference;\n _exports.e = getTypeReference;\n _exports.g = getTypeInfo;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function getTypeInfo(schema, tokenState) {\n const info = {\n schema,\n type: null,\n parentType: null,\n inputType: null,\n directiveDef: null,\n fieldDef: null,\n argDef: null,\n argDefs: null,\n objectFieldDefs: null\n };\n (0, _forEachStateEs.f)(tokenState, state => {\n var _a, _b;\n\n switch (state.kind) {\n case \"Query\":\n case \"ShortQuery\":\n info.type = schema.getQueryType();\n break;\n\n case \"Mutation\":\n info.type = schema.getMutationType();\n break;\n\n case \"Subscription\":\n info.type = schema.getSubscriptionType();\n break;\n\n case \"InlineFragment\":\n case \"FragmentDefinition\":\n if (state.type) {\n info.type = schema.getType(state.type);\n }\n\n break;\n\n case \"Field\":\n case \"AliasedField\":\n info.fieldDef = info.type && state.name ? getFieldDef(schema, info.parentType, state.name) : null;\n info.type = (_a = info.fieldDef) === null || _a === void 0 ? void 0 : _a.type;\n break;\n\n case \"SelectionSet\":\n info.parentType = info.type ? (0, _graphql.getNamedType)(info.type) : null;\n break;\n\n case \"Directive\":\n info.directiveDef = state.name ? schema.getDirective(state.name) : null;\n break;\n\n case \"Arguments\":\n const parentDef = state.prevState ? state.prevState.kind === \"Field\" ? info.fieldDef : state.prevState.kind === \"Directive\" ? info.directiveDef : state.prevState.kind === \"AliasedField\" ? state.prevState.name && getFieldDef(schema, info.parentType, state.prevState.name) : null : null;\n info.argDefs = parentDef ? parentDef.args : null;\n break;\n\n case \"Argument\":\n info.argDef = null;\n\n if (info.argDefs) {\n for (let i = 0; i < info.argDefs.length; i++) {\n if (info.argDefs[i].name === state.name) {\n info.argDef = info.argDefs[i];\n break;\n }\n }\n }\n\n info.inputType = (_b = info.argDef) === null || _b === void 0 ? void 0 : _b.type;\n break;\n\n case \"EnumValue\":\n const enumType = info.inputType ? (0, _graphql.getNamedType)(info.inputType) : null;\n info.enumValue = enumType instanceof _graphql.GraphQLEnumType ? find(enumType.getValues(), val => val.value === state.name) : null;\n break;\n\n case \"ListValue\":\n const nullableType = info.inputType ? (0, _graphql.getNullableType)(info.inputType) : null;\n info.inputType = nullableType instanceof _graphql.GraphQLList ? nullableType.ofType : null;\n break;\n\n case \"ObjectValue\":\n const objectType = info.inputType ? (0, _graphql.getNamedType)(info.inputType) : null;\n info.objectFieldDefs = objectType instanceof _graphql.GraphQLInputObjectType ? objectType.getFields() : null;\n break;\n\n case \"ObjectField\":\n const objectField = state.name && info.objectFieldDefs ? info.objectFieldDefs[state.name] : null;\n info.inputType = objectField === null || objectField === void 0 ? void 0 : objectField.type;\n break;\n\n case \"NamedType\":\n info.type = state.name ? schema.getType(state.name) : null;\n break;\n }\n });\n return info;\n }\n\n __name(getTypeInfo, \"getTypeInfo\");\n\n function getFieldDef(schema, type, fieldName) {\n if (fieldName === _introspectionEs.S.name && schema.getQueryType() === type) {\n return _introspectionEs.S;\n }\n\n if (fieldName === _introspectionEs.T.name && schema.getQueryType() === type) {\n return _introspectionEs.T;\n }\n\n if (fieldName === _introspectionEs.a.name && (0, _graphql.isCompositeType)(type)) {\n return _introspectionEs.a;\n }\n\n if (type && type.getFields) {\n return type.getFields()[fieldName];\n }\n }\n\n __name(getFieldDef, \"getFieldDef\");\n\n function find(array, predicate) {\n for (let i = 0; i < array.length; i++) {\n if (predicate(array[i])) {\n return array[i];\n }\n }\n }\n\n __name(find, \"find\");\n\n function getFieldReference(typeInfo) {\n return {\n kind: \"Field\",\n schema: typeInfo.schema,\n field: typeInfo.fieldDef,\n type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType\n };\n }\n\n __name(getFieldReference, \"getFieldReference\");\n\n function getDirectiveReference(typeInfo) {\n return {\n kind: \"Directive\",\n schema: typeInfo.schema,\n directive: typeInfo.directiveDef\n };\n }\n\n __name(getDirectiveReference, \"getDirectiveReference\");\n\n function getArgumentReference(typeInfo) {\n return typeInfo.directiveDef ? {\n kind: \"Argument\",\n schema: typeInfo.schema,\n argument: typeInfo.argDef,\n directive: typeInfo.directiveDef\n } : {\n kind: \"Argument\",\n schema: typeInfo.schema,\n argument: typeInfo.argDef,\n field: typeInfo.fieldDef,\n type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType\n };\n }\n\n __name(getArgumentReference, \"getArgumentReference\");\n\n function getEnumValueReference(typeInfo) {\n return {\n kind: \"EnumValue\",\n value: typeInfo.enumValue || void 0,\n type: typeInfo.inputType ? (0, _graphql.getNamedType)(typeInfo.inputType) : void 0\n };\n }\n\n __name(getEnumValueReference, \"getEnumValueReference\");\n\n function getTypeReference(typeInfo, type) {\n return {\n kind: \"Type\",\n schema: typeInfo.schema,\n type: type || typeInfo.type\n };\n }\n\n __name(getTypeReference, \"getTypeReference\");\n\n function isMetaField(fieldDef) {\n return fieldDef.name.slice(0, 2) === \"__\";\n }\n\n __name(isMetaField, \"isMetaField\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9TY2hlbWFSZWZlcmVuY2UuZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9wYWNrYWdlcy9ncmFwaGlxbC1yZWFjdC9kaXN0L1NjaGVtYVJlZmVyZW5jZS5lcy5qcz8wZDZkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lID0gKHRhcmdldCwgdmFsdWUpID0+IF9fZGVmUHJvcCh0YXJnZXQsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG5pbXBvcnQgeyBnZXROYW1lZFR5cGUsIEdyYXBoUUxJbnB1dE9iamVjdFR5cGUsIGdldE51bGxhYmxlVHlwZSwgR3JhcGhRTExpc3QsIEdyYXBoUUxFbnVtVHlwZSwgaXNDb21wb3NpdGVUeXBlIH0gZnJvbSBcImdyYXBocWxcIjtcbmltcG9ydCB7IFMgYXMgU2NoZW1hTWV0YUZpZWxkRGVmLCBUIGFzIFR5cGVNZXRhRmllbGREZWYsIGEgYXMgVHlwZU5hbWVNZXRhRmllbGREZWYgfSBmcm9tIFwiLi9pbnRyb3NwZWN0aW9uLmVzLmpzXCI7XG5pbXBvcnQgeyBmIGFzIGZvckVhY2hTdGF0ZSB9IGZyb20gXCIuL2ZvckVhY2hTdGF0ZS5lcy5qc1wiO1xuZnVuY3Rpb24gZ2V0VHlwZUluZm8oc2NoZW1hLCB0b2tlblN0YXRlKSB7XG4gIGNvbnN0IGluZm8gPSB7XG4gICAgc2NoZW1hLFxuICAgIHR5cGU6IG51bGwsXG4gICAgcGFyZW50VHlwZTogbnVsbCxcbiAgICBpbnB1dFR5cGU6IG51bGwsXG4gICAgZGlyZWN0aXZlRGVmOiBudWxsLFxuICAgIGZpZWxkRGVmOiBudWxsLFxuICAgIGFyZ0RlZjogbnVsbCxcbiAgICBhcmdEZWZzOiBudWxsLFxuICAgIG9iamVjdEZpZWxkRGVmczogbnVsbFxuICB9O1xuICBmb3JFYWNoU3RhdGUodG9rZW5TdGF0ZSwgKHN0YXRlKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBzd2l0Y2ggKHN0YXRlLmtpbmQpIHtcbiAgICAgIGNhc2UgXCJRdWVyeVwiOlxuICAgICAgY2FzZSBcIlNob3J0UXVlcnlcIjpcbiAgICAgICAgaW5mby50eXBlID0gc2NoZW1hLmdldFF1ZXJ5VHlwZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJNdXRhdGlvblwiOlxuICAgICAgICBpbmZvLnR5cGUgPSBzY2hlbWEuZ2V0TXV0YXRpb25UeXBlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlN1YnNjcmlwdGlvblwiOlxuICAgICAgICBpbmZvLnR5cGUgPSBzY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJJbmxpbmVGcmFnbWVudFwiOlxuICAgICAgY2FzZSBcIkZyYWdtZW50RGVmaW5pdGlvblwiOlxuICAgICAgICBpZiAoc3RhdGUudHlwZSkge1xuICAgICAgICAgIGluZm8udHlwZSA9IHNjaGVtYS5nZXRUeXBlKHN0YXRlLnR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkZpZWxkXCI6XG4gICAgICBjYXNlIFwiQWxpYXNlZEZpZWxkXCI6XG4gICAgICAgIGluZm8uZmllbGREZWYgPSBpbmZvLnR5cGUgJiYgc3RhdGUubmFtZSA/IGdldEZpZWxkRGVmKHNjaGVtYSwgaW5mby5wYXJlbnRUeXBlLCBzdGF0ZS5uYW1lKSA6IG51bGw7XG4gICAgICAgIGluZm8udHlwZSA9IChfYSA9IGluZm8uZmllbGREZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50eXBlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJTZWxlY3Rpb25TZXRcIjpcbiAgICAgICAgaW5mby5wYXJlbnRUeXBlID0gaW5mby50eXBlID8gZ2V0TmFtZWRUeXBlKGluZm8udHlwZSkgOiBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJEaXJlY3RpdmVcIjpcbiAgICAgICAgaW5mby5kaXJlY3RpdmVEZWYgPSBzdGF0ZS5uYW1lID8gc2NoZW1hLmdldERpcmVjdGl2ZShzdGF0ZS5uYW1lKSA6IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkFyZ3VtZW50c1wiOlxuICAgICAgICBjb25zdCBwYXJlbnREZWYgPSBzdGF0ZS5wcmV2U3RhdGUgPyBzdGF0ZS5wcmV2U3RhdGUua2luZCA9PT0gXCJGaWVsZFwiID8gaW5mby5maWVsZERlZiA6IHN0YXRlLnByZXZTdGF0ZS5raW5kID09PSBcIkRpcmVjdGl2ZVwiID8gaW5mby5kaXJlY3RpdmVEZWYgOiBzdGF0ZS5wcmV2U3RhdGUua2luZCA9PT0gXCJBbGlhc2VkRmllbGRcIiA/IHN0YXRlLnByZXZTdGF0ZS5uYW1lICYmIGdldEZpZWxkRGVmKHNjaGVtYSwgaW5mby5wYXJlbnRUeXBlLCBzdGF0ZS5wcmV2U3RhdGUubmFtZSkgOiBudWxsIDogbnVsbDtcbiAgICAgICAgaW5mby5hcmdEZWZzID0gcGFyZW50RGVmID8gcGFyZW50RGVmLmFyZ3MgOiBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJBcmd1bWVudFwiOlxuICAgICAgICBpbmZvLmFyZ0RlZiA9IG51bGw7XG4gICAgICAgIGlmIChpbmZvLmFyZ0RlZnMpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZm8uYXJnRGVmcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGluZm8uYXJnRGVmc1tpXS5uYW1lID09PSBzdGF0ZS5uYW1lKSB7XG4gICAgICAgICAgICAgIGluZm8uYXJnRGVmID0gaW5mby5hcmdEZWZzW2ldO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5mby5pbnB1dFR5cGUgPSAoX2IgPSBpbmZvLmFyZ0RlZikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnR5cGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkVudW1WYWx1ZVwiOlxuICAgICAgICBjb25zdCBlbnVtVHlwZSA9IGluZm8uaW5wdXRUeXBlID8gZ2V0TmFtZWRUeXBlKGluZm8uaW5wdXRUeXBlKSA6IG51bGw7XG4gICAgICAgIGluZm8uZW51bVZhbHVlID0gZW51bVR5cGUgaW5zdGFuY2VvZiBHcmFwaFFMRW51bVR5cGUgPyBmaW5kKGVudW1UeXBlLmdldFZhbHVlcygpLCAodmFsKSA9PiB2YWwudmFsdWUgPT09IHN0YXRlLm5hbWUpIDogbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiTGlzdFZhbHVlXCI6XG4gICAgICAgIGNvbnN0IG51bGxhYmxlVHlwZSA9IGluZm8uaW5wdXRUeXBlID8gZ2V0TnVsbGFibGVUeXBlKGluZm8uaW5wdXRUeXBlKSA6IG51bGw7XG4gICAgICAgIGluZm8uaW5wdXRUeXBlID0gbnVsbGFibGVUeXBlIGluc3RhbmNlb2YgR3JhcGhRTExpc3QgPyBudWxsYWJsZVR5cGUub2ZUeXBlIDogbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiT2JqZWN0VmFsdWVcIjpcbiAgICAgICAgY29uc3Qgb2JqZWN0VHlwZSA9IGluZm8uaW5wdXRUeXBlID8gZ2V0TmFtZWRUeXBlKGluZm8uaW5wdXRUeXBlKSA6IG51bGw7XG4gICAgICAgIGluZm8ub2JqZWN0RmllbGREZWZzID0gb2JqZWN0VHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxJbnB1dE9iamVjdFR5cGUgPyBvYmplY3RUeXBlLmdldEZpZWxkcygpIDogbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiT2JqZWN0RmllbGRcIjpcbiAgICAgICAgY29uc3Qgb2JqZWN0RmllbGQgPSBzdGF0ZS5uYW1lICYmIGluZm8ub2JqZWN0RmllbGREZWZzID8gaW5mby5vYmplY3RGaWVsZERlZnNbc3RhdGUubmFtZV0gOiBudWxsO1xuICAgICAgICBpbmZvLmlucHV0VHlwZSA9IG9iamVjdEZpZWxkID09PSBudWxsIHx8IG9iamVjdEZpZWxkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvYmplY3RGaWVsZC50eXBlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJOYW1lZFR5cGVcIjpcbiAgICAgICAgaW5mby50eXBlID0gc3RhdGUubmFtZSA/IHNjaGVtYS5nZXRUeXBlKHN0YXRlLm5hbWUpIDogbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGluZm87XG59XG5fX25hbWUoZ2V0VHlwZUluZm8sIFwiZ2V0VHlwZUluZm9cIik7XG5mdW5jdGlvbiBnZXRGaWVsZERlZihzY2hlbWEsIHR5cGUsIGZpZWxkTmFtZSkge1xuICBpZiAoZmllbGROYW1lID09PSBTY2hlbWFNZXRhRmllbGREZWYubmFtZSAmJiBzY2hlbWEuZ2V0UXVlcnlUeXBlKCkgPT09IHR5cGUpIHtcbiAgICByZXR1cm4gU2NoZW1hTWV0YUZpZWxkRGVmO1xuICB9XG4gIGlmIChmaWVsZE5hbWUgPT09IFR5cGVNZXRhRmllbGREZWYubmFtZSAmJiBzY2hlbWEuZ2V0UXVlcnlUeXBlKCkgPT09IHR5cGUpIHtcbiAgICByZXR1cm4gVHlwZU1ldGFGaWVsZERlZjtcbiAgfVxuICBpZiAoZmllbGROYW1lID09PSBUeXBlTmFtZU1ldGFGaWVsZERlZi5uYW1lICYmIGlzQ29tcG9zaXRlVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBUeXBlTmFtZU1ldGFGaWVsZERlZjtcbiAgfVxuICBpZiAodHlwZSAmJiB0eXBlLmdldEZpZWxkcykge1xuICAgIHJldHVybiB0eXBlLmdldEZpZWxkcygpW2ZpZWxkTmFtZV07XG4gIH1cbn1cbl9fbmFtZShnZXRGaWVsZERlZiwgXCJnZXRGaWVsZERlZlwiKTtcbmZ1bmN0aW9uIGZpbmQoYXJyYXksIHByZWRpY2F0ZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJheVtpXSkpIHtcbiAgICAgIHJldHVybiBhcnJheVtpXTtcbiAgICB9XG4gIH1cbn1cbl9fbmFtZShmaW5kLCBcImZpbmRcIik7XG5mdW5jdGlvbiBnZXRGaWVsZFJlZmVyZW5jZSh0eXBlSW5mbykge1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IFwiRmllbGRcIixcbiAgICBzY2hlbWE6IHR5cGVJbmZvLnNjaGVtYSxcbiAgICBmaWVsZDogdHlwZUluZm8uZmllbGREZWYsXG4gICAgdHlwZTogaXNNZXRhRmllbGQodHlwZUluZm8uZmllbGREZWYpID8gbnVsbCA6IHR5cGVJbmZvLnBhcmVudFR5cGVcbiAgfTtcbn1cbl9fbmFtZShnZXRGaWVsZFJlZmVyZW5jZSwgXCJnZXRGaWVsZFJlZmVyZW5jZVwiKTtcbmZ1bmN0aW9uIGdldERpcmVjdGl2ZVJlZmVyZW5jZSh0eXBlSW5mbykge1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IFwiRGlyZWN0aXZlXCIsXG4gICAgc2NoZW1hOiB0eXBlSW5mby5zY2hlbWEsXG4gICAgZGlyZWN0aXZlOiB0eXBlSW5mby5kaXJlY3RpdmVEZWZcbiAgfTtcbn1cbl9fbmFtZShnZXREaXJlY3RpdmVSZWZlcmVuY2UsIFwiZ2V0RGlyZWN0aXZlUmVmZXJlbmNlXCIpO1xuZnVuY3Rpb24gZ2V0QXJndW1lbnRSZWZlcmVuY2UodHlwZUluZm8pIHtcbiAgcmV0dXJuIHR5cGVJbmZvLmRpcmVjdGl2ZURlZiA/IHtcbiAgICBraW5kOiBcIkFyZ3VtZW50XCIsXG4gICAgc2NoZW1hOiB0eXBlSW5mby5zY2hlbWEsXG4gICAgYXJndW1lbnQ6IHR5cGVJbmZvLmFyZ0RlZixcbiAgICBkaXJlY3RpdmU6IHR5cGVJbmZvLmRpcmVjdGl2ZURlZlxuICB9IDoge1xuICAgIGtpbmQ6IFwiQXJndW1lbnRcIixcbiAgICBzY2hlbWE6IHR5cGVJbmZvLnNjaGVtYSxcbiAgICBhcmd1bWVudDogdHlwZUluZm8uYXJnRGVmLFxuICAgIGZpZWxkOiB0eXBlSW5mby5maWVsZERlZixcbiAgICB0eXBlOiBpc01ldGFGaWVsZCh0eXBlSW5mby5maWVsZERlZikgPyBudWxsIDogdHlwZUluZm8ucGFyZW50VHlwZVxuICB9O1xufVxuX19uYW1lKGdldEFyZ3VtZW50UmVmZXJlbmNlLCBcImdldEFyZ3VtZW50UmVmZXJlbmNlXCIpO1xuZnVuY3Rpb24gZ2V0RW51bVZhbHVlUmVmZXJlbmNlKHR5cGVJbmZvKSB7XG4gIHJldHVybiB7XG4gICAga2luZDogXCJFbnVtVmFsdWVcIixcbiAgICB2YWx1ZTogdHlwZUluZm8uZW51bVZhbHVlIHx8IHZvaWQgMCxcbiAgICB0eXBlOiB0eXBlSW5mby5pbnB1dFR5cGUgPyBnZXROYW1lZFR5cGUodHlwZUluZm8uaW5wdXRUeXBlKSA6IHZvaWQgMFxuICB9O1xufVxuX19uYW1lKGdldEVudW1WYWx1ZVJlZmVyZW5jZSwgXCJnZXRFbnVtVmFsdWVSZWZlcmVuY2VcIik7XG5mdW5jdGlvbiBnZXRUeXBlUmVmZXJlbmNlKHR5cGVJbmZvLCB0eXBlKSB7XG4gIHJldHVybiB7XG4gICAga2luZDogXCJUeXBlXCIsXG4gICAgc2NoZW1hOiB0eXBlSW5mby5zY2hlbWEsXG4gICAgdHlwZTogdHlwZSB8fCB0eXBlSW5mby50eXBlXG4gIH07XG59XG5fX25hbWUoZ2V0VHlwZVJlZmVyZW5jZSwgXCJnZXRUeXBlUmVmZXJlbmNlXCIpO1xuZnVuY3Rpb24gaXNNZXRhRmllbGQoZmllbGREZWYpIHtcbiAgcmV0dXJuIGZpZWxkRGVmLm5hbWUuc2xpY2UoMCwgMikgPT09IFwiX19cIjtcbn1cbl9fbmFtZShpc01ldGFGaWVsZCwgXCJpc01ldGFGaWVsZFwiKTtcbmV4cG9ydCB7IGdldEZpZWxkUmVmZXJlbmNlIGFzIGEsIGdldERpcmVjdGl2ZVJlZmVyZW5jZSBhcyBiLCBnZXRBcmd1bWVudFJlZmVyZW5jZSBhcyBjLCBnZXRFbnVtVmFsdWVSZWZlcmVuY2UgYXMgZCwgZ2V0VHlwZVJlZmVyZW5jZSBhcyBlLCBnZXRUeXBlSW5mbyBhcyBnIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBOURBO0FBZ0VBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/SchemaReference.es.js\n");
|
2450 |
|
2451 | }),
|
2452 |
|
2453 | "../../graphiql-react/dist/brace-fold.es.js":
|
2454 |
|
2455 |
|
2456 |
|
2457 |
|
2458 | (function(module, exports, __webpack_require__) {
|
2459 |
|
2460 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.b = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var braceFold$2 = {\n exports: {}\n };\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports);\n })(function (CodeMirror) {\n function bracketFolding(pairs) {\n return function (cm, start) {\n var line = start.line,\n lineText = cm.getLine(line);\n\n function findOpening(pair) {\n var tokenType;\n\n for (var at = start.ch, pass = 0;;) {\n var found2 = at <= 0 ? -1 : lineText.lastIndexOf(pair[0], at - 1);\n\n if (found2 == -1) {\n if (pass == 1) break;\n pass = 1;\n at = lineText.length;\n continue;\n }\n\n if (pass == 1 && found2 < start.ch) break;\n tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found2 + 1));\n if (!/^(comment|string)/.test(tokenType)) return {\n ch: found2 + 1,\n tokenType,\n pair\n };\n at = found2 - 1;\n }\n }\n\n __name(findOpening, \"findOpening\");\n\n function findRange(found2) {\n var count = 1,\n lastLine = cm.lastLine(),\n end,\n startCh = found2.ch,\n endCh;\n\n outer: for (var i2 = line; i2 <= lastLine; ++i2) {\n var text = cm.getLine(i2),\n pos = i2 == line ? startCh : 0;\n\n for (;;) {\n var nextOpen = text.indexOf(found2.pair[0], pos),\n nextClose = text.indexOf(found2.pair[1], pos);\n if (nextOpen < 0) nextOpen = text.length;\n if (nextClose < 0) nextClose = text.length;\n pos = Math.min(nextOpen, nextClose);\n if (pos == text.length) break;\n\n if (cm.getTokenTypeAt(CodeMirror.Pos(i2, pos + 1)) == found2.tokenType) {\n if (pos == nextOpen) ++count;else if (! --count) {\n end = i2;\n endCh = pos;\n break outer;\n }\n }\n\n ++pos;\n }\n }\n\n if (end == null || line == end) return null;\n return {\n from: CodeMirror.Pos(line, startCh),\n to: CodeMirror.Pos(end, endCh)\n };\n }\n\n __name(findRange, \"findRange\");\n\n var found = [];\n\n for (var i = 0; i < pairs.length; i++) {\n var open = findOpening(pairs[i]);\n if (open) found.push(open);\n }\n\n found.sort(function (a, b) {\n return a.ch - b.ch;\n });\n\n for (var i = 0; i < found.length; i++) {\n var range = findRange(found[i]);\n if (range) return range;\n }\n\n return null;\n };\n }\n\n __name(bracketFolding, \"bracketFolding\");\n\n CodeMirror.registerHelper(\"fold\", \"brace\", bracketFolding([[\"{\", \"}\"], [\"[\", \"]\"]]));\n CodeMirror.registerHelper(\"fold\", \"brace-paren\", bracketFolding([[\"{\", \"}\"], [\"[\", \"]\"], [\"(\", \")\"]]));\n CodeMirror.registerHelper(\"fold\", \"import\", function (cm, start) {\n function hasImport(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start2 = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start2.string)) start2 = cm.getTokenAt(CodeMirror.Pos(line, start2.end + 1));\n if (start2.type != \"keyword\" || start2.string != \"import\") return null;\n\n for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n var text = cm.getLine(i),\n semi = text.indexOf(\";\");\n if (semi != -1) return {\n startCh: start2.end,\n end: CodeMirror.Pos(i, semi)\n };\n }\n }\n\n __name(hasImport, \"hasImport\");\n\n var startLine = start.line,\n has = hasImport(startLine),\n prev;\n if (!has || hasImport(startLine - 1) || (prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1) return null;\n\n for (var end = has.end;;) {\n var next = hasImport(end.line + 1);\n if (next == null) break;\n end = next.end;\n }\n\n return {\n from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)),\n to: end\n };\n });\n CodeMirror.registerHelper(\"fold\", \"include\", function (cm, start) {\n function hasInclude(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start2 = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start2.string)) start2 = cm.getTokenAt(CodeMirror.Pos(line, start2.end + 1));\n if (start2.type == \"meta\" && start2.string.slice(0, 8) == \"#include\") return start2.start + 8;\n }\n\n __name(hasInclude, \"hasInclude\");\n\n var startLine = start.line,\n has = hasInclude(startLine);\n if (has == null || hasInclude(startLine - 1) != null) return null;\n\n for (var end = startLine;;) {\n var next = hasInclude(end + 1);\n if (next == null) break;\n ++end;\n }\n\n return {\n from: CodeMirror.Pos(startLine, has + 1),\n to: cm.clipPos(CodeMirror.Pos(end))\n };\n });\n });\n })();\n\n var braceFold = braceFold$2.exports;\n var braceFold$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": braceFold\n }, [braceFold$2.exports]));\n _exports.b = braceFold$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9icmFjZS1mb2xkLmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9icmFjZS1mb2xkLmVzLmpzP2ZlYzciXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IGEgYXMgY29kZW1pcnJvciB9IGZyb20gXCIuL2NvZGVtaXJyb3IuZXMuanNcIjtcbmZ1bmN0aW9uIF9tZXJnZU5hbWVzcGFjZXMobiwgbSkge1xuICBtLmZvckVhY2goZnVuY3Rpb24oZSkge1xuICAgIGUgJiYgdHlwZW9mIGUgIT09IFwic3RyaW5nXCIgJiYgIUFycmF5LmlzQXJyYXkoZSkgJiYgT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgIShrIGluIG4pKSB7XG4gICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGssIGQuZ2V0ID8gZCA6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gZVtrXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUobik7XG59XG5fX25hbWUoX21lcmdlTmFtZXNwYWNlcywgXCJfbWVyZ2VOYW1lc3BhY2VzXCIpO1xudmFyIGJyYWNlRm9sZCQyID0geyBleHBvcnRzOiB7fSB9O1xuKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuICAoZnVuY3Rpb24obW9kKSB7XG4gICAgbW9kKGNvZGVtaXJyb3IuZXhwb3J0cyk7XG4gIH0pKGZ1bmN0aW9uKENvZGVNaXJyb3IpIHtcbiAgICBmdW5jdGlvbiBicmFja2V0Rm9sZGluZyhwYWlycykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNtLCBzdGFydCkge1xuICAgICAgICB2YXIgbGluZSA9IHN0YXJ0LmxpbmUsIGxpbmVUZXh0ID0gY20uZ2V0TGluZShsaW5lKTtcbiAgICAgICAgZnVuY3Rpb24gZmluZE9wZW5pbmcocGFpcikge1xuICAgICAgICAgIHZhciB0b2tlblR5cGU7XG4gICAgICAgICAgZm9yICh2YXIgYXQgPSBzdGFydC5jaCwgcGFzcyA9IDA7IDsgKSB7XG4gICAgICAgICAgICB2YXIgZm91bmQyID0gYXQgPD0gMCA/IC0xIDogbGluZVRleHQubGFzdEluZGV4T2YocGFpclswXSwgYXQgLSAxKTtcbiAgICAgICAgICAgIGlmIChmb3VuZDIgPT0gLTEpIHtcbiAgICAgICAgICAgICAgaWYgKHBhc3MgPT0gMSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgcGFzcyA9IDE7XG4gICAgICAgICAgICAgIGF0ID0gbGluZVRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXNzID09IDEgJiYgZm91bmQyIDwgc3RhcnQuY2gpXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgdG9rZW5UeXBlID0gY20uZ2V0VG9rZW5UeXBlQXQoQ29kZU1pcnJvci5Qb3MobGluZSwgZm91bmQyICsgMSkpO1xuICAgICAgICAgICAgaWYgKCEvXihjb21tZW50fHN0cmluZykvLnRlc3QodG9rZW5UeXBlKSlcbiAgICAgICAgICAgICAgcmV0dXJuIHsgY2g6IGZvdW5kMiArIDEsIHRva2VuVHlwZSwgcGFpciB9O1xuICAgICAgICAgICAgYXQgPSBmb3VuZDIgLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBfX25hbWUoZmluZE9wZW5pbmcsIFwiZmluZE9wZW5pbmdcIik7XG4gICAgICAgIGZ1bmN0aW9uIGZpbmRSYW5nZShmb3VuZDIpIHtcbiAgICAgICAgICB2YXIgY291bnQgPSAxLCBsYXN0TGluZSA9IGNtLmxhc3RMaW5lKCksIGVuZCwgc3RhcnRDaCA9IGZvdW5kMi5jaCwgZW5kQ2g7XG4gICAgICAgICAgb3V0ZXI6XG4gICAgICAgICAgICBmb3IgKHZhciBpMiA9IGxpbmU7IGkyIDw9IGxhc3RMaW5lOyArK2kyKSB7XG4gICAgICAgICAgICAgIHZhciB0ZXh0ID0gY20uZ2V0TGluZShpMiksIHBvcyA9IGkyID09IGxpbmUgPyBzdGFydENoIDogMDtcbiAgICAgICAgICAgICAgZm9yICg7IDsgKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5leHRPcGVuID0gdGV4dC5pbmRleE9mKGZvdW5kMi5wYWlyWzBdLCBwb3MpLCBuZXh0Q2xvc2UgPSB0ZXh0LmluZGV4T2YoZm91bmQyLnBhaXJbMV0sIHBvcyk7XG4gICAgICAgICAgICAgICAgaWYgKG5leHRPcGVuIDwgMClcbiAgICAgICAgICAgICAgICAgIG5leHRPcGVuID0gdGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKG5leHRDbG9zZSA8IDApXG4gICAgICAgICAgICAgICAgICBuZXh0Q2xvc2UgPSB0ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICBwb3MgPSBNYXRoLm1pbihuZXh0T3BlbiwgbmV4dENsb3NlKTtcbiAgICAgICAgICAgICAgICBpZiAocG9zID09IHRleHQubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgaWYgKGNtLmdldFRva2VuVHlwZUF0KENvZGVNaXJyb3IuUG9zKGkyLCBwb3MgKyAxKSkgPT0gZm91bmQyLnRva2VuVHlwZSkge1xuICAgICAgICAgICAgICAgICAgaWYgKHBvcyA9PSBuZXh0T3BlbilcbiAgICAgICAgICAgICAgICAgICAgKytjb3VudDtcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCEtLWNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZCA9IGkyO1xuICAgICAgICAgICAgICAgICAgICBlbmRDaCA9IHBvcztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgb3V0ZXI7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICsrcG9zO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVuZCA9PSBudWxsIHx8IGxpbmUgPT0gZW5kKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZyb206IENvZGVNaXJyb3IuUG9zKGxpbmUsIHN0YXJ0Q2gpLFxuICAgICAgICAgICAgdG86IENvZGVNaXJyb3IuUG9zKGVuZCwgZW5kQ2gpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBfX25hbWUoZmluZFJhbmdlLCBcImZpbmRSYW5nZVwiKTtcbiAgICAgICAgdmFyIGZvdW5kID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFpcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgb3BlbiA9IGZpbmRPcGVuaW5nKHBhaXJzW2ldKTtcbiAgICAgICAgICBpZiAob3BlbilcbiAgICAgICAgICAgIGZvdW5kLnB1c2gob3Blbik7XG4gICAgICAgIH1cbiAgICAgICAgZm91bmQuc29ydChmdW5jdGlvbihhLCBiKSB7XG4gICAgICAgICAgcmV0dXJuIGEuY2ggLSBiLmNoO1xuICAgICAgICB9KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3VuZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciByYW5nZSA9IGZpbmRSYW5nZShmb3VuZFtpXSk7XG4gICAgICAgICAgaWYgKHJhbmdlKVxuICAgICAgICAgICAgcmV0dXJuIHJhbmdlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfTtcbiAgICB9XG4gICAgX19uYW1lKGJyYWNrZXRGb2xkaW5nLCBcImJyYWNrZXRGb2xkaW5nXCIpO1xuICAgIENvZGVNaXJyb3IucmVnaXN0ZXJIZWxwZXIoXCJmb2xkXCIsIFwiYnJhY2VcIiwgYnJhY2tldEZvbGRpbmcoW1tcIntcIiwgXCJ9XCJdLCBbXCJbXCIsIFwiXVwiXV0pKTtcbiAgICBDb2RlTWlycm9yLnJlZ2lzdGVySGVscGVyKFwiZm9sZFwiLCBcImJyYWNlLXBhcmVuXCIsIGJyYWNrZXRGb2xkaW5nKFtbXCJ7XCIsIFwifVwiXSwgW1wiW1wiLCBcIl1cIl0sIFtcIihcIiwgXCIpXCJdXSkpO1xuICAgIENvZGVNaXJyb3IucmVnaXN0ZXJIZWxwZXIoXCJmb2xkXCIsIFwiaW1wb3J0XCIsIGZ1bmN0aW9uKGNtLCBzdGFydCkge1xuICAgICAgZnVuY3Rpb24gaGFzSW1wb3J0KGxpbmUpIHtcbiAgICAgICAgaWYgKGxpbmUgPCBjbS5maXJzdExpbmUoKSB8fCBsaW5lID4gY20ubGFzdExpbmUoKSlcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgdmFyIHN0YXJ0MiA9IGNtLmdldFRva2VuQXQoQ29kZU1pcnJvci5Qb3MobGluZSwgMSkpO1xuICAgICAgICBpZiAoIS9cXFMvLnRlc3Qoc3RhcnQyLnN0cmluZykpXG4gICAgICAgICAgc3RhcnQyID0gY20uZ2V0VG9rZW5BdChDb2RlTWlycm9yLlBvcyhsaW5lLCBzdGFydDIuZW5kICsgMSkpO1xuICAgICAgICBpZiAoc3RhcnQyLnR5cGUgIT0gXCJrZXl3b3JkXCIgfHwgc3RhcnQyLnN0cmluZyAhPSBcImltcG9ydFwiKVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBmb3IgKHZhciBpID0gbGluZSwgZSA9IE1hdGgubWluKGNtLmxhc3RMaW5lKCksIGxpbmUgKyAxMCk7IGkgPD0gZTsgKytpKSB7XG4gICAgICAgICAgdmFyIHRleHQgPSBjbS5nZXRMaW5lKGkpLCBzZW1pID0gdGV4dC5pbmRleE9mKFwiO1wiKTtcbiAgICAgICAgICBpZiAoc2VtaSAhPSAtMSlcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXJ0Q2g6IHN0YXJ0Mi5lbmQsIGVuZDogQ29kZU1pcnJvci5Qb3MoaSwgc2VtaSkgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKGhhc0ltcG9ydCwgXCJoYXNJbXBvcnRcIik7XG4gICAgICB2YXIgc3RhcnRMaW5lID0gc3RhcnQubGluZSwgaGFzID0gaGFzSW1wb3J0KHN0YXJ0TGluZSksIHByZXY7XG4gICAgICBpZiAoIWhhcyB8fCBoYXNJbXBvcnQoc3RhcnRMaW5lIC0gMSkgfHwgKHByZXYgPSBoYXNJbXBvcnQoc3RhcnRMaW5lIC0gMikpICYmIHByZXYuZW5kLmxpbmUgPT0gc3RhcnRMaW5lIC0gMSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBmb3IgKHZhciBlbmQgPSBoYXMuZW5kOyA7ICkge1xuICAgICAgICB2YXIgbmV4dCA9IGhhc0ltcG9ydChlbmQubGluZSArIDEpO1xuICAgICAgICBpZiAobmV4dCA9PSBudWxsKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBlbmQgPSBuZXh0LmVuZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGZyb206IGNtLmNsaXBQb3MoQ29kZU1pcnJvci5Qb3Moc3RhcnRMaW5lLCBoYXMuc3RhcnRDaCArIDEpKSwgdG86IGVuZCB9O1xuICAgIH0pO1xuICAgIENvZGVNaXJyb3IucmVnaXN0ZXJIZWxwZXIoXCJmb2xkXCIsIFwiaW5jbHVkZVwiLCBmdW5jdGlvbihjbSwgc3RhcnQpIHtcbiAgICAgIGZ1bmN0aW9uIGhhc0luY2x1ZGUobGluZSkge1xuICAgICAgICBpZiAobGluZSA8IGNtLmZpcnN0TGluZSgpIHx8IGxpbmUgPiBjbS5sYXN0TGluZSgpKVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB2YXIgc3RhcnQyID0gY20uZ2V0VG9rZW5BdChDb2RlTWlycm9yLlBvcyhsaW5lLCAxKSk7XG4gICAgICAgIGlmICghL1xcUy8udGVzdChzdGFydDIuc3RyaW5nKSlcbiAgICAgICAgICBzdGFydDIgPSBjbS5nZXRUb2tlbkF0KENvZGVNaXJyb3IuUG9zKGxpbmUsIHN0YXJ0Mi5lbmQgKyAxKSk7XG4gICAgICAgIGlmIChzdGFydDIudHlwZSA9PSBcIm1ldGFcIiAmJiBzdGFydDIuc3RyaW5nLnNsaWNlKDAsIDgpID09IFwiI2luY2x1ZGVcIilcbiAgICAgICAgICByZXR1cm4gc3RhcnQyLnN0YXJ0ICsgODtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShoYXNJbmNsdWRlLCBcImhhc0luY2x1ZGVcIik7XG4gICAgICB2YXIgc3RhcnRMaW5lID0gc3RhcnQubGluZSwgaGFzID0gaGFzSW5jbHVkZShzdGFydExpbmUpO1xuICAgICAgaWYgKGhhcyA9PSBudWxsIHx8IGhhc0luY2x1ZGUoc3RhcnRMaW5lIC0gMSkgIT0gbnVsbClcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBmb3IgKHZhciBlbmQgPSBzdGFydExpbmU7IDsgKSB7XG4gICAgICAgIHZhciBuZXh0ID0gaGFzSW5jbHVkZShlbmQgKyAxKTtcbiAgICAgICAgaWYgKG5leHQgPT0gbnVsbClcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgKytlbmQ7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBDb2RlTWlycm9yLlBvcyhzdGFydExpbmUsIGhhcyArIDEpLFxuICAgICAgICB0bzogY20uY2xpcFBvcyhDb2RlTWlycm9yLlBvcyhlbmQpKVxuICAgICAgfTtcbiAgICB9KTtcbiAgfSk7XG59KSgpO1xudmFyIGJyYWNlRm9sZCA9IGJyYWNlRm9sZCQyLmV4cG9ydHM7XG52YXIgYnJhY2VGb2xkJDEgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmZyZWV6ZSgvKiBAX19QVVJFX18gKi8gX21lcmdlTmFtZXNwYWNlcyh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IFwiTW9kdWxlXCIsXG4gIFwiZGVmYXVsdFwiOiBicmFjZUZvbGRcbn0sIFticmFjZUZvbGQkMi5leHBvcnRzXSkpO1xuZXhwb3J0IHsgYnJhY2VGb2xkJDEgYXMgYiB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/brace-fold.es.js\n");
|
2461 |
|
2462 | }),
|
2463 |
|
2464 | "../../graphiql-react/dist/closebrackets.es.js":
|
2465 |
|
2466 |
|
2467 |
|
2468 |
|
2469 | (function(module, exports, __webpack_require__) {
|
2470 |
|
2471 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.c = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var closebrackets$2 = {\n exports: {}\n };\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports);\n })(function (CodeMirror) {\n var defaults = {\n pairs: `()[]{}''\"\"`,\n closeBefore: `)]}'\":;>`,\n triples: \"\",\n explode: \"[]{}\"\n };\n var Pos = CodeMirror.Pos;\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function (cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n\n if (val) {\n ensureBound(getOption(val, \"pairs\"));\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n\n __name(getOption, \"getOption\");\n\n var keyMap = {\n Backspace: handleBackspace,\n Enter: handleEnter\n };\n\n function ensureBound(chars) {\n for (var i = 0; i < chars.length; i++) {\n var ch = chars.charAt(i),\n key = \"'\" + ch + \"'\";\n if (!keyMap[key]) keyMap[key] = handler(ch);\n }\n }\n\n __name(ensureBound, \"ensureBound\");\n\n ensureBound(defaults.pairs + \"`\");\n\n function handler(ch) {\n return function (cm) {\n return handleChar(cm, ch);\n };\n }\n\n __name(handler, \"handler\");\n\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n\n __name(getConfig, \"getConfig\");\n\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n\n for (var i = ranges.length - 1; i >= 0; i--) {\n var cur = ranges[i].head;\n cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n }\n }\n\n __name(handleBackspace, \"handleBackspace\");\n\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var ranges = cm.listSelections();\n\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n\n cm.operation(function () {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n moveSel(cm, -1);\n ranges = cm.listSelections();\n\n for (var i2 = 0; i2 < ranges.length; i2++) {\n var line = ranges[i2].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n\n __name(handleEnter, \"handleEnter\");\n\n function moveSel(cm, dir) {\n var newRanges = [],\n ranges = cm.listSelections(),\n primary = 0;\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.head == cm.getCursor()) primary = i;\n var pos = range.head.ch || dir > 0 ? {\n line: range.head.line,\n ch: range.head.ch + dir\n } : {\n line: range.head.line - 1\n };\n newRanges.push({\n anchor: pos,\n head: pos\n });\n }\n\n cm.setSelections(newRanges, primary);\n }\n\n __name(moveSel, \"moveSel\");\n\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {\n anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))\n };\n }\n\n __name(contractSelection, \"contractSelection\");\n\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n var closeBefore = getOption(conf, \"closeBefore\");\n var triples = getOption(conf, \"triples\");\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n var type;\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i],\n cur = range.head,\n curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n\n if (opening && !range.empty()) {\n curType = \"surround\";\n } else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur)) curType = \"both\";else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch) curType = \"skipThree\";else curType = \"skip\";\n } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 && cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur);\n if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";else return CodeMirror.Pass;\n } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n curType = \"both\";\n } else {\n return CodeMirror.Pass;\n }\n\n if (!type) type = curType;else if (type != curType) return CodeMirror.Pass;\n }\n\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function () {\n if (type == \"skip\") {\n moveSel(cm, 1);\n } else if (type == \"skipThree\") {\n moveSel(cm, 3);\n } else if (type == \"surround\") {\n var sels = cm.getSelections();\n\n for (var i2 = 0; i2 < sels.length; i2++) sels[i2] = left + sels[i2] + right;\n\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n\n for (var i2 = 0; i2 < sels.length; i2++) sels[i2] = contractSelection(sels[i2]);\n\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n moveSel(cm, -1);\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n moveSel(cm, 1);\n }\n });\n }\n\n __name(handleChar, \"handleChar\");\n\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1), Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n\n __name(charsAround, \"charsAround\");\n\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1));\n return /\\bstring/.test(token.type) && token.start == pos.ch && (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)));\n }\n\n __name(stringStartsAfter, \"stringStartsAfter\");\n });\n })();\n\n var closebrackets = closebrackets$2.exports;\n var closebrackets$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": closebrackets\n }, [closebrackets$2.exports]));\n _exports.c = closebrackets$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9jbG9zZWJyYWNrZXRzLmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9jbG9zZWJyYWNrZXRzLmVzLmpzP2IxN2UiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IGEgYXMgY29kZW1pcnJvciB9IGZyb20gXCIuL2NvZGVtaXJyb3IuZXMuanNcIjtcbmZ1bmN0aW9uIF9tZXJnZU5hbWVzcGFjZXMobiwgbSkge1xuICBtLmZvckVhY2goZnVuY3Rpb24oZSkge1xuICAgIGUgJiYgdHlwZW9mIGUgIT09IFwic3RyaW5nXCIgJiYgIUFycmF5LmlzQXJyYXkoZSkgJiYgT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgIShrIGluIG4pKSB7XG4gICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGssIGQuZ2V0ID8gZCA6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gZVtrXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUobik7XG59XG5fX25hbWUoX21lcmdlTmFtZXNwYWNlcywgXCJfbWVyZ2VOYW1lc3BhY2VzXCIpO1xudmFyIGNsb3NlYnJhY2tldHMkMiA9IHsgZXhwb3J0czoge30gfTtcbihmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcbiAgKGZ1bmN0aW9uKG1vZCkge1xuICAgIG1vZChjb2RlbWlycm9yLmV4cG9ydHMpO1xuICB9KShmdW5jdGlvbihDb2RlTWlycm9yKSB7XG4gICAgdmFyIGRlZmF1bHRzID0ge1xuICAgICAgcGFpcnM6IGAoKVtde30nJ1wiXCJgLFxuICAgICAgY2xvc2VCZWZvcmU6IGApXX0nXCI6Oz5gLFxuICAgICAgdHJpcGxlczogXCJcIixcbiAgICAgIGV4cGxvZGU6IFwiW117fVwiXG4gICAgfTtcbiAgICB2YXIgUG9zID0gQ29kZU1pcnJvci5Qb3M7XG4gICAgQ29kZU1pcnJvci5kZWZpbmVPcHRpb24oXCJhdXRvQ2xvc2VCcmFja2V0c1wiLCBmYWxzZSwgZnVuY3Rpb24oY20sIHZhbCwgb2xkKSB7XG4gICAgICBpZiAob2xkICYmIG9sZCAhPSBDb2RlTWlycm9yLkluaXQpIHtcbiAgICAgICAgY20ucmVtb3ZlS2V5TWFwKGtleU1hcCk7XG4gICAgICAgIGNtLnN0YXRlLmNsb3NlQnJhY2tldHMgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHZhbCkge1xuICAgICAgICBlbnN1cmVCb3VuZChnZXRPcHRpb24odmFsLCBcInBhaXJzXCIpKTtcbiAgICAgICAgY20uc3RhdGUuY2xvc2VCcmFja2V0cyA9IHZhbDtcbiAgICAgICAgY20uYWRkS2V5TWFwKGtleU1hcCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gZ2V0T3B0aW9uKGNvbmYsIG5hbWUpIHtcbiAgICAgIGlmIChuYW1lID09IFwicGFpcnNcIiAmJiB0eXBlb2YgY29uZiA9PSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4gY29uZjtcbiAgICAgIGlmICh0eXBlb2YgY29uZiA9PSBcIm9iamVjdFwiICYmIGNvbmZbbmFtZV0gIT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGNvbmZbbmFtZV07XG4gICAgICByZXR1cm4gZGVmYXVsdHNbbmFtZV07XG4gICAgfVxuICAgIF9fbmFtZShnZXRPcHRpb24sIFwiZ2V0T3B0aW9uXCIpO1xuICAgIHZhciBrZXlNYXAgPSB7IEJhY2tzcGFjZTogaGFuZGxlQmFja3NwYWNlLCBFbnRlcjogaGFuZGxlRW50ZXIgfTtcbiAgICBmdW5jdGlvbiBlbnN1cmVCb3VuZChjaGFycykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2ggPSBjaGFycy5jaGFyQXQoaSksIGtleSA9IFwiJ1wiICsgY2ggKyBcIidcIjtcbiAgICAgICAgaWYgKCFrZXlNYXBba2V5XSlcbiAgICAgICAgICBrZXlNYXBba2V5XSA9IGhhbmRsZXIoY2gpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoZW5zdXJlQm91bmQsIFwiZW5zdXJlQm91bmRcIik7XG4gICAgZW5zdXJlQm91bmQoZGVmYXVsdHMucGFpcnMgKyBcImBcIik7XG4gICAgZnVuY3Rpb24gaGFuZGxlcihjaCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVDaGFyKGNtLCBjaCk7XG4gICAgICB9O1xuICAgIH1cbiAgICBfX25hbWUoaGFuZGxlciwgXCJoYW5kbGVyXCIpO1xuICAgIGZ1bmN0aW9uIGdldENvbmZpZyhjbSkge1xuICAgICAgdmFyIGRlZmx0ID0gY20uc3RhdGUuY2xvc2VCcmFja2V0cztcbiAgICAgIGlmICghZGVmbHQgfHwgZGVmbHQub3ZlcnJpZGUpXG4gICAgICAgIHJldHVybiBkZWZsdDtcbiAgICAgIHZhciBtb2RlID0gY20uZ2V0TW9kZUF0KGNtLmdldEN1cnNvcigpKTtcbiAgICAgIHJldHVybiBtb2RlLmNsb3NlQnJhY2tldHMgfHwgZGVmbHQ7XG4gICAgfVxuICAgIF9fbmFtZShnZXRDb25maWcsIFwiZ2V0Q29uZmlnXCIpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUJhY2tzcGFjZShjbSkge1xuICAgICAgdmFyIGNvbmYgPSBnZXRDb25maWcoY20pO1xuICAgICAgaWYgKCFjb25mIHx8IGNtLmdldE9wdGlvbihcImRpc2FibGVJbnB1dFwiKSlcbiAgICAgICAgcmV0dXJuIENvZGVNaXJyb3IuUGFzcztcbiAgICAgIHZhciBwYWlycyA9IGdldE9wdGlvbihjb25mLCBcInBhaXJzXCIpO1xuICAgICAgdmFyIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoIXJhbmdlc1tpXS5lbXB0eSgpKVxuICAgICAgICAgIHJldHVybiBDb2RlTWlycm9yLlBhc3M7XG4gICAgICAgIHZhciBhcm91bmQgPSBjaGFyc0Fyb3VuZChjbSwgcmFuZ2VzW2ldLmhlYWQpO1xuICAgICAgICBpZiAoIWFyb3VuZCB8fCBwYWlycy5pbmRleE9mKGFyb3VuZCkgJSAyICE9IDApXG4gICAgICAgICAgcmV0dXJuIENvZGVNaXJyb3IuUGFzcztcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSByYW5nZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdmFyIGN1ciA9IHJhbmdlc1tpXS5oZWFkO1xuICAgICAgICBjbS5yZXBsYWNlUmFuZ2UoXCJcIiwgUG9zKGN1ci5saW5lLCBjdXIuY2ggLSAxKSwgUG9zKGN1ci5saW5lLCBjdXIuY2ggKyAxKSwgXCIrZGVsZXRlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoaGFuZGxlQmFja3NwYWNlLCBcImhhbmRsZUJhY2tzcGFjZVwiKTtcbiAgICBmdW5jdGlvbiBoYW5kbGVFbnRlcihjbSkge1xuICAgICAgdmFyIGNvbmYgPSBnZXRDb25maWcoY20pO1xuICAgICAgdmFyIGV4cGxvZGUgPSBjb25mICYmIGdldE9wdGlvbihjb25mLCBcImV4cGxvZGVcIik7XG4gICAgICBpZiAoIWV4cGxvZGUgfHwgY20uZ2V0T3B0aW9uKFwiZGlzYWJsZUlucHV0XCIpKVxuICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuICAgICAgdmFyIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoIXJhbmdlc1tpXS5lbXB0eSgpKVxuICAgICAgICAgIHJldHVybiBDb2RlTWlycm9yLlBhc3M7XG4gICAgICAgIHZhciBhcm91bmQgPSBjaGFyc0Fyb3VuZChjbSwgcmFuZ2VzW2ldLmhlYWQpO1xuICAgICAgICBpZiAoIWFyb3VuZCB8fCBleHBsb2RlLmluZGV4T2YoYXJvdW5kKSAlIDIgIT0gMClcbiAgICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuICAgICAgfVxuICAgICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbGluZXNlcCA9IGNtLmxpbmVTZXBhcmF0b3IoKSB8fCBcIlxcblwiO1xuICAgICAgICBjbS5yZXBsYWNlU2VsZWN0aW9uKGxpbmVzZXAgKyBsaW5lc2VwLCBudWxsKTtcbiAgICAgICAgbW92ZVNlbChjbSwgLTEpO1xuICAgICAgICByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpO1xuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgcmFuZ2VzLmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgIHZhciBsaW5lID0gcmFuZ2VzW2kyXS5oZWFkLmxpbmU7XG4gICAgICAgICAgY20uaW5kZW50TGluZShsaW5lLCBudWxsLCB0cnVlKTtcbiAgICAgICAgICBjbS5pbmRlbnRMaW5lKGxpbmUgKyAxLCBudWxsLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIF9fbmFtZShoYW5kbGVFbnRlciwgXCJoYW5kbGVFbnRlclwiKTtcbiAgICBmdW5jdGlvbiBtb3ZlU2VsKGNtLCBkaXIpIHtcbiAgICAgIHZhciBuZXdSYW5nZXMgPSBbXSwgcmFuZ2VzID0gY20ubGlzdFNlbGVjdGlvbnMoKSwgcHJpbWFyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcmFuZ2UgPSByYW5nZXNbaV07XG4gICAgICAgIGlmIChyYW5nZS5oZWFkID09IGNtLmdldEN1cnNvcigpKVxuICAgICAgICAgIHByaW1hcnkgPSBpO1xuICAgICAgICB2YXIgcG9zID0gcmFuZ2UuaGVhZC5jaCB8fCBkaXIgPiAwID8geyBsaW5lOiByYW5nZS5oZWFkLmxpbmUsIGNoOiByYW5nZS5oZWFkLmNoICsgZGlyIH0gOiB7IGxpbmU6IHJhbmdlLmhlYWQubGluZSAtIDEgfTtcbiAgICAgICAgbmV3UmFuZ2VzLnB1c2goeyBhbmNob3I6IHBvcywgaGVhZDogcG9zIH0pO1xuICAgICAgfVxuICAgICAgY20uc2V0U2VsZWN0aW9ucyhuZXdSYW5nZXMsIHByaW1hcnkpO1xuICAgIH1cbiAgICBfX25hbWUobW92ZVNlbCwgXCJtb3ZlU2VsXCIpO1xuICAgIGZ1bmN0aW9uIGNvbnRyYWN0U2VsZWN0aW9uKHNlbCkge1xuICAgICAgdmFyIGludmVydGVkID0gQ29kZU1pcnJvci5jbXBQb3Moc2VsLmFuY2hvciwgc2VsLmhlYWQpID4gMDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFuY2hvcjogbmV3IFBvcyhzZWwuYW5jaG9yLmxpbmUsIHNlbC5hbmNob3IuY2ggKyAoaW52ZXJ0ZWQgPyAtMSA6IDEpKSxcbiAgICAgICAgaGVhZDogbmV3IFBvcyhzZWwuaGVhZC5saW5lLCBzZWwuaGVhZC5jaCArIChpbnZlcnRlZCA/IDEgOiAtMSkpXG4gICAgICB9O1xuICAgIH1cbiAgICBfX25hbWUoY29udHJhY3RTZWxlY3Rpb24sIFwiY29udHJhY3RTZWxlY3Rpb25cIik7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2hhcihjbSwgY2gpIHtcbiAgICAgIHZhciBjb25mID0gZ2V0Q29uZmlnKGNtKTtcbiAgICAgIGlmICghY29uZiB8fCBjbS5nZXRPcHRpb24oXCJkaXNhYmxlSW5wdXRcIikpXG4gICAgICAgIHJldHVybiBDb2RlTWlycm9yLlBhc3M7XG4gICAgICB2YXIgcGFpcnMgPSBnZXRPcHRpb24oY29uZiwgXCJwYWlyc1wiKTtcbiAgICAgIHZhciBwb3MgPSBwYWlycy5pbmRleE9mKGNoKTtcbiAgICAgIGlmIChwb3MgPT0gLTEpXG4gICAgICAgIHJldHVybiBDb2RlTWlycm9yLlBhc3M7XG4gICAgICB2YXIgY2xvc2VCZWZvcmUgPSBnZXRPcHRpb24oY29uZiwgXCJjbG9zZUJlZm9yZVwiKTtcbiAgICAgIHZhciB0cmlwbGVzID0gZ2V0T3B0aW9uKGNvbmYsIFwidHJpcGxlc1wiKTtcbiAgICAgIHZhciBpZGVudGljYWwgPSBwYWlycy5jaGFyQXQocG9zICsgMSkgPT0gY2g7XG4gICAgICB2YXIgcmFuZ2VzID0gY20ubGlzdFNlbGVjdGlvbnMoKTtcbiAgICAgIHZhciBvcGVuaW5nID0gcG9zICUgMiA9PSAwO1xuICAgICAgdmFyIHR5cGU7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcmFuZ2UgPSByYW5nZXNbaV0sIGN1ciA9IHJhbmdlLmhlYWQsIGN1clR5cGU7XG4gICAgICAgIHZhciBuZXh0ID0gY20uZ2V0UmFuZ2UoY3VyLCBQb3MoY3VyLmxpbmUsIGN1ci5jaCArIDEpKTtcbiAgICAgICAgaWYgKG9wZW5pbmcgJiYgIXJhbmdlLmVtcHR5KCkpIHtcbiAgICAgICAgICBjdXJUeXBlID0gXCJzdXJyb3VuZFwiO1xuICAgICAgICB9IGVsc2UgaWYgKChpZGVudGljYWwgfHwgIW9wZW5pbmcpICYmIG5leHQgPT0gY2gpIHtcbiAgICAgICAgICBpZiAoaWRlbnRpY2FsICYmIHN0cmluZ1N0YXJ0c0FmdGVyKGNtLCBjdXIpKVxuICAgICAgICAgICAgY3VyVHlwZSA9IFwiYm90aFwiO1xuICAgICAgICAgIGVsc2UgaWYgKHRyaXBsZXMuaW5kZXhPZihjaCkgPj0gMCAmJiBjbS5nZXRSYW5nZShjdXIsIFBvcyhjdXIubGluZSwgY3VyLmNoICsgMykpID09IGNoICsgY2ggKyBjaClcbiAgICAgICAgICAgIGN1clR5cGUgPSBcInNraXBUaHJlZVwiO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGN1clR5cGUgPSBcInNraXBcIjtcbiAgICAgICAgfSBlbHNlIGlmIChpZGVudGljYWwgJiYgY3VyLmNoID4gMSAmJiB0cmlwbGVzLmluZGV4T2YoY2gpID49IDAgJiYgY20uZ2V0UmFuZ2UoUG9zKGN1ci5saW5lLCBjdXIuY2ggLSAyKSwgY3VyKSA9PSBjaCArIGNoKSB7XG4gICAgICAgICAgaWYgKGN1ci5jaCA+IDIgJiYgL1xcYnN0cmluZy8udGVzdChjbS5nZXRUb2tlblR5cGVBdChQb3MoY3VyLmxpbmUsIGN1ci5jaCAtIDIpKSkpXG4gICAgICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuICAgICAgICAgIGN1clR5cGUgPSBcImFkZEZvdXJcIjtcbiAgICAgICAgfSBlbHNlIGlmIChpZGVudGljYWwpIHtcbiAgICAgICAgICB2YXIgcHJldiA9IGN1ci5jaCA9PSAwID8gXCIgXCIgOiBjbS5nZXRSYW5nZShQb3MoY3VyLmxpbmUsIGN1ci5jaCAtIDEpLCBjdXIpO1xuICAgICAgICAgIGlmICghQ29kZU1pcnJvci5pc1dvcmRDaGFyKG5leHQpICYmIHByZXYgIT0gY2ggJiYgIUNvZGVNaXJyb3IuaXNXb3JkQ2hhcihwcmV2KSlcbiAgICAgICAgICAgIGN1clR5cGUgPSBcImJvdGhcIjtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZW5pbmcgJiYgKG5leHQubGVuZ3RoID09PSAwIHx8IC9cXHMvLnRlc3QobmV4dCkgfHwgY2xvc2VCZWZvcmUuaW5kZXhPZihuZXh0KSA+IC0xKSkge1xuICAgICAgICAgIGN1clR5cGUgPSBcImJvdGhcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdHlwZSlcbiAgICAgICAgICB0eXBlID0gY3VyVHlwZTtcbiAgICAgICAgZWxzZSBpZiAodHlwZSAhPSBjdXJUeXBlKVxuICAgICAgICAgIHJldHVybiBDb2RlTWlycm9yLlBhc3M7XG4gICAgICB9XG4gICAgICB2YXIgbGVmdCA9IHBvcyAlIDIgPyBwYWlycy5jaGFyQXQocG9zIC0gMSkgOiBjaDtcbiAgICAgIHZhciByaWdodCA9IHBvcyAlIDIgPyBjaCA6IHBhaXJzLmNoYXJBdChwb3MgKyAxKTtcbiAgICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHR5cGUgPT0gXCJza2lwXCIpIHtcbiAgICAgICAgICBtb3ZlU2VsKGNtLCAxKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFwic2tpcFRocmVlXCIpIHtcbiAgICAgICAgICBtb3ZlU2VsKGNtLCAzKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFwic3Vycm91bmRcIikge1xuICAgICAgICAgIHZhciBzZWxzID0gY20uZ2V0U2VsZWN0aW9ucygpO1xuICAgICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBzZWxzLmxlbmd0aDsgaTIrKylcbiAgICAgICAgICAgIHNlbHNbaTJdID0gbGVmdCArIHNlbHNbaTJdICsgcmlnaHQ7XG4gICAgICAgICAgY20ucmVwbGFjZVNlbGVjdGlvbnMoc2VscywgXCJhcm91bmRcIik7XG4gICAgICAgICAgc2VscyA9IGNtLmxpc3RTZWxlY3Rpb25zKCkuc2xpY2UoKTtcbiAgICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgc2Vscy5sZW5ndGg7IGkyKyspXG4gICAgICAgICAgICBzZWxzW2kyXSA9IGNvbnRyYWN0U2VsZWN0aW9uKHNlbHNbaTJdKTtcbiAgICAgICAgICBjbS5zZXRTZWxlY3Rpb25zKHNlbHMpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJib3RoXCIpIHtcbiAgICAgICAgICBjbS5yZXBsYWNlU2VsZWN0aW9uKGxlZnQgKyByaWdodCwgbnVsbCk7XG4gICAgICAgICAgY20udHJpZ2dlckVsZWN0cmljKGxlZnQgKyByaWdodCk7XG4gICAgICAgICAgbW92ZVNlbChjbSwgLTEpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJhZGRGb3VyXCIpIHtcbiAgICAgICAgICBjbS5yZXBsYWNlU2VsZWN0aW9uKGxlZnQgKyBsZWZ0ICsgbGVmdCArIGxlZnQsIFwiYmVmb3JlXCIpO1xuICAgICAgICAgIG1vdmVTZWwoY20sIDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgX19uYW1lKGhhbmRsZUNoYXIsIFwiaGFuZGxlQ2hhclwiKTtcbiAgICBmdW5jdGlvbiBjaGFyc0Fyb3VuZChjbSwgcG9zKSB7XG4gICAgICB2YXIgc3RyID0gY20uZ2V0UmFuZ2UoUG9zKHBvcy5saW5lLCBwb3MuY2ggLSAxKSwgUG9zKHBvcy5saW5lLCBwb3MuY2ggKyAxKSk7XG4gICAgICByZXR1cm4gc3RyLmxlbmd0aCA9PSAyID8gc3RyIDogbnVsbDtcbiAgICB9XG4gICAgX19uYW1lKGNoYXJzQXJvdW5kLCBcImNoYXJzQXJvdW5kXCIpO1xuICAgIGZ1bmN0aW9uIHN0cmluZ1N0YXJ0c0FmdGVyKGNtLCBwb3MpIHtcbiAgICAgIHZhciB0b2tlbiA9IGNtLmdldFRva2VuQXQoUG9zKHBvcy5saW5lLCBwb3MuY2ggKyAxKSk7XG4gICAgICByZXR1cm4gL1xcYnN0cmluZy8udGVzdCh0b2tlbi50eXBlKSAmJiB0b2tlbi5zdGFydCA9PSBwb3MuY2ggJiYgKHBvcy5jaCA9PSAwIHx8ICEvXFxic3RyaW5nLy50ZXN0KGNtLmdldFRva2VuVHlwZUF0KHBvcykpKTtcbiAgICB9XG4gICAgX19uYW1lKHN0cmluZ1N0YXJ0c0FmdGVyLCBcInN0cmluZ1N0YXJ0c0FmdGVyXCIpO1xuICB9KTtcbn0pKCk7XG52YXIgY2xvc2VicmFja2V0cyA9IGNsb3NlYnJhY2tldHMkMi5leHBvcnRzO1xudmFyIGNsb3NlYnJhY2tldHMkMSA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBfbWVyZ2VOYW1lc3BhY2VzKHtcbiAgX19wcm90b19fOiBudWxsLFxuICBbU3ltYm9sLnRvU3RyaW5nVGFnXTogXCJNb2R1bGVcIixcbiAgXCJkZWZhdWx0XCI6IGNsb3NlYnJhY2tldHNcbn0sIFtjbG9zZWJyYWNrZXRzJDIuZXhwb3J0c10pKTtcbmV4cG9ydCB7IGNsb3NlYnJhY2tldHMkMSBhcyBjIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/closebrackets.es.js\n");
|
2472 |
|
2473 | }),
|
2474 |
|
2475 | "../../graphiql-react/dist/codemirror.es.js":
|
2476 |
|
2477 |
|
2478 |
|
2479 |
|
2480 | (function(module, exports, __webpack_require__) {
|
2481 |
|
2482 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _indexEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.c = _exports.a = _exports.C = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var codemirror$1 = {\n exports: {}\n };\n _exports.a = codemirror$1;\n\n (function (module, exports) {\n (function (global, factory) {\n module.exports = factory();\n })(_indexEs.c, function () {\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n\n if (presto_version) {\n presto_version = Number(presto_version[1]);\n }\n\n if (presto_version && presto_version >= 15) {\n presto = false;\n webkit = true;\n }\n\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || ie && ie_version >= 9;\n\n function classTest(cls) {\n return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n }\n\n __name(classTest, \"classTest\");\n\n var rmClass = /* @__PURE__ */__name(function (node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n }, \"rmClass\");\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count) {\n e.removeChild(e.firstChild);\n }\n\n return e;\n }\n\n __name(removeChildren, \"removeChildren\");\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e);\n }\n\n __name(removeChildrenAndAdd, \"removeChildrenAndAdd\");\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n\n if (className) {\n e.className = className;\n }\n\n if (style) {\n e.style.cssText = style;\n }\n\n if (typeof content == \"string\") {\n e.appendChild(document.createTextNode(content));\n } else if (content) {\n for (var i2 = 0; i2 < content.length; ++i2) {\n e.appendChild(content[i2]);\n }\n }\n\n return e;\n }\n\n __name(elt, \"elt\");\n\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e;\n }\n\n __name(eltP, \"eltP\");\n\n var range;\n\n if (document.createRange) {\n range = /* @__PURE__ */__name(function (node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r;\n }, \"range\");\n } else {\n range = /* @__PURE__ */__name(function (node, start, end) {\n var r = document.body.createTextRange();\n\n try {\n r.moveToElementText(node.parentNode);\n } catch (e) {\n return r;\n }\n\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r;\n }, \"range\");\n }\n\n function contains(parent, child) {\n if (child.nodeType == 3) {\n child = child.parentNode;\n }\n\n if (parent.contains) {\n return parent.contains(child);\n }\n\n do {\n if (child.nodeType == 11) {\n child = child.host;\n }\n\n if (child == parent) {\n return true;\n }\n } while (child = child.parentNode);\n }\n\n __name(contains, \"contains\");\n\n function activeElt() {\n var activeElement;\n\n try {\n activeElement = document.activeElement;\n } catch (e) {\n activeElement = document.body || null;\n }\n\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n\n return activeElement;\n }\n\n __name(activeElt, \"activeElt\");\n\n function addClass(node, cls) {\n var current = node.className;\n\n if (!classTest(cls).test(current)) {\n node.className += (current ? \" \" : \"\") + cls;\n }\n }\n\n __name(addClass, \"addClass\");\n\n function joinClasses(a, b) {\n var as = a.split(\" \");\n\n for (var i2 = 0; i2 < as.length; i2++) {\n if (as[i2] && !classTest(as[i2]).test(b)) {\n b += \" \" + as[i2];\n }\n }\n\n return b;\n }\n\n __name(joinClasses, \"joinClasses\");\n\n var selectInput = /* @__PURE__ */__name(function (node) {\n node.select();\n }, \"selectInput\");\n\n if (ios) {\n selectInput = /* @__PURE__ */__name(function (node) {\n node.selectionStart = 0;\n node.selectionEnd = node.value.length;\n }, \"selectInput\");\n } else if (ie) {\n selectInput = /* @__PURE__ */__name(function (node) {\n try {\n node.select();\n } catch (_e) {}\n }, \"selectInput\");\n }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function () {\n return f.apply(null, args);\n };\n }\n\n __name(bind, \"bind\");\n\n function copyObj(obj, target, overwrite) {\n if (!target) {\n target = {};\n }\n\n for (var prop2 in obj) {\n if (obj.hasOwnProperty(prop2) && (overwrite !== false || !target.hasOwnProperty(prop2))) {\n target[prop2] = obj[prop2];\n }\n }\n\n return target;\n }\n\n __name(copyObj, \"copyObj\");\n\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n\n if (end == -1) {\n end = string.length;\n }\n }\n\n for (var i2 = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\t\", i2);\n\n if (nextTab < 0 || nextTab >= end) {\n return n + (end - i2);\n }\n\n n += nextTab - i2;\n n += tabSize - n % tabSize;\n i2 = nextTab + 1;\n }\n }\n\n __name(countColumn, \"countColumn\");\n\n var Delayed = /* @__PURE__ */__name(function () {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n }, \"Delayed\");\n\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n\n if (self.time <= +new Date()) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date());\n }\n };\n\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date() + ms;\n\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt2) {\n for (var i2 = 0; i2 < array.length; ++i2) {\n if (array[i2] == elt2) {\n return i2;\n }\n }\n\n return -1;\n }\n\n __name(indexOf, \"indexOf\");\n\n var scrollerGap = 50;\n var Pass = {\n toString: function () {\n return \"CodeMirror.Pass\";\n }\n };\n var sel_dontScroll = {\n scroll: false\n },\n sel_mouse = {\n origin: \"*mouse\"\n },\n sel_move = {\n origin: \"+move\"\n };\n\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\t\", pos);\n\n if (nextTab == -1) {\n nextTab = string.length;\n }\n\n var skipped = nextTab - pos;\n\n if (nextTab == string.length || col + skipped >= goal) {\n return pos + Math.min(skipped, goal - col);\n }\n\n col += nextTab - pos;\n col += tabSize - col % tabSize;\n pos = nextTab + 1;\n\n if (col >= goal) {\n return pos;\n }\n }\n }\n\n __name(findColumn, \"findColumn\");\n\n var spaceStrs = [\"\"];\n\n function spaceStr(n) {\n while (spaceStrs.length <= n) {\n spaceStrs.push(lst(spaceStrs) + \" \");\n }\n\n return spaceStrs[n];\n }\n\n __name(spaceStr, \"spaceStr\");\n\n function lst(arr) {\n return arr[arr.length - 1];\n }\n\n __name(lst, \"lst\");\n\n function map(array, f) {\n var out = [];\n\n for (var i2 = 0; i2 < array.length; i2++) {\n out[i2] = f(array[i2], i2);\n }\n\n return out;\n }\n\n __name(map, \"map\");\n\n function insertSorted(array, value, score) {\n var pos = 0,\n priority = score(value);\n\n while (pos < array.length && score(array[pos]) <= priority) {\n pos++;\n }\n\n array.splice(pos, 0, value);\n }\n\n __name(insertSorted, \"insertSorted\");\n\n function nothing() {}\n\n __name(nothing, \"nothing\");\n\n function createObj(base, props) {\n var inst;\n\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n\n if (props) {\n copyObj(props, inst);\n }\n\n return inst;\n }\n\n __name(createObj, \"createObj\");\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));\n }\n\n __name(isWordCharBasic, \"isWordCharBasic\");\n\n function isWordChar(ch, helper) {\n if (!helper) {\n return isWordCharBasic(ch);\n }\n\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) {\n return true;\n }\n\n return helper.test(ch);\n }\n\n __name(isWordChar, \"isWordChar\");\n\n function isEmpty(obj) {\n for (var n in obj) {\n if (obj.hasOwnProperty(n) && obj[n]) {\n return false;\n }\n }\n\n return true;\n }\n\n __name(isEmpty, \"isEmpty\");\n\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n\n function isExtendingChar(ch) {\n return ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n }\n\n __name(isExtendingChar, \"isExtendingChar\");\n\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) {\n pos += dir;\n }\n\n return pos;\n }\n\n __name(skipExtendingChars, \"skipExtendingChars\");\n\n function findFirst(pred, from, to) {\n var dir = from > to ? -1 : 1;\n\n for (;;) {\n if (from == to) {\n return from;\n }\n\n var midF = (from + to) / 2,\n mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n\n if (mid == from) {\n return pred(mid) ? from : to;\n }\n\n if (pred(mid)) {\n to = mid;\n } else {\n from = mid + dir;\n }\n }\n }\n\n __name(findFirst, \"findFirst\");\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) {\n return f(from, to, \"ltr\", 0);\n }\n\n var found = false;\n\n for (var i2 = 0; i2 < order.length; ++i2) {\n var part = order[i2];\n\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i2);\n found = true;\n }\n }\n\n if (!found) {\n f(from, to, \"ltr\");\n }\n }\n\n __name(iterateBidiSections, \"iterateBidiSections\");\n\n var bidiOther = null;\n\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n\n for (var i2 = 0; i2 < order.length; ++i2) {\n var cur = order[i2];\n\n if (cur.from < ch && cur.to > ch) {\n return i2;\n }\n\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") {\n found = i2;\n } else {\n bidiOther = i2;\n }\n }\n\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") {\n found = i2;\n } else {\n bidiOther = i2;\n }\n }\n }\n\n return found != null ? found : bidiOther;\n }\n\n __name(getBidiPartAt, \"getBidiPartAt\");\n\n var bidiOrdering = function () {\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n\n function charType(code) {\n if (code <= 247) {\n return lowTypes.charAt(code);\n } else if (1424 <= code && code <= 1524) {\n return \"R\";\n } else if (1536 <= code && code <= 1785) {\n return arabicTypes.charAt(code - 1536);\n } else if (1774 <= code && code <= 2220) {\n return \"r\";\n } else if (8192 <= code && code <= 8203) {\n return \"w\";\n } else if (code == 8204) {\n return \"b\";\n } else {\n return \"L\";\n }\n }\n\n __name(charType, \"charType\");\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/,\n isStrong = /[LRr]/,\n countsAsLeft = /[Lb1n]/,\n countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from;\n this.to = to;\n }\n\n __name(BidiSpan, \"BidiSpan\");\n\n return function (str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) {\n return false;\n }\n\n var len = str.length,\n types = [];\n\n for (var i2 = 0; i2 < len; ++i2) {\n types.push(charType(str.charCodeAt(i2)));\n }\n\n for (var i$12 = 0, prev = outerType; i$12 < len; ++i$12) {\n var type = types[i$12];\n\n if (type == \"m\") {\n types[i$12] = prev;\n } else {\n prev = type;\n }\n }\n\n for (var i$22 = 0, cur = outerType; i$22 < len; ++i$22) {\n var type$1 = types[i$22];\n\n if (type$1 == \"1\" && cur == \"r\") {\n types[i$22] = \"n\";\n } else if (isStrong.test(type$1)) {\n cur = type$1;\n\n if (type$1 == \"r\") {\n types[i$22] = \"R\";\n }\n }\n }\n\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3 + 1] == \"1\") {\n types[i$3] = \"1\";\n } else if (type$2 == \",\" && prev$1 == types[i$3 + 1] && (prev$1 == \"1\" || prev$1 == \"n\")) {\n types[i$3] = prev$1;\n }\n\n prev$1 = type$2;\n }\n\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n\n if (type$3 == \",\") {\n types[i$4] = \"N\";\n } else if (type$3 == \"%\") {\n var end = void 0;\n\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n\n var replace = i$4 && types[i$4 - 1] == \"!\" || end < len && types[end] == \"1\" ? \"1\" : \"N\";\n\n for (var j = i$4; j < end; ++j) {\n types[j] = replace;\n }\n\n i$4 = end - 1;\n }\n }\n\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n\n if (cur$1 == \"L\" && type$4 == \"1\") {\n types[i$5] = \"L\";\n } else if (isStrong.test(type$4)) {\n cur$1 = type$4;\n }\n }\n\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = void 0;\n\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n\n var before = (i$6 ? types[i$6 - 1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? before ? \"L\" : \"R\" : outerType;\n\n for (var j$1 = i$6; j$1 < end$1; ++j$1) {\n types[j$1] = replace$1;\n }\n\n i$6 = end$1 - 1;\n }\n }\n\n var order = [],\n m;\n\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7,\n at = order.length,\n isRTL = direction == \"rtl\" ? 1 : 0;\n\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) {\n order.splice(at, 0, new BidiSpan(1, pos, j$2));\n at += isRTL;\n }\n\n var nstart = j$2;\n\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else {\n ++j$2;\n }\n }\n\n if (pos < i$7) {\n order.splice(at, 0, new BidiSpan(1, pos, i$7));\n }\n }\n }\n\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order;\n };\n }();\n\n function getOrder(line, direction) {\n var order = line.order;\n\n if (order == null) {\n order = line.order = bidiOrdering(line.text, direction);\n }\n\n return order;\n }\n\n __name(getOrder, \"getOrder\");\n\n var noHandlers = [];\n\n var on = /* @__PURE__ */__name(function (emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map2 = emitter._handlers || (emitter._handlers = {});\n map2[type] = (map2[type] || noHandlers).concat(f);\n }\n }, \"on\");\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers;\n }\n\n __name(getHandlers, \"getHandlers\");\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map2 = emitter._handlers,\n arr = map2 && map2[type];\n\n if (arr) {\n var index = indexOf(arr, f);\n\n if (index > -1) {\n map2[type] = arr.slice(0, index).concat(arr.slice(index + 1));\n }\n }\n }\n }\n\n __name(off, \"off\");\n\n function signal(emitter, type) {\n var handlers = getHandlers(emitter, type);\n\n if (!handlers.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2);\n\n for (var i2 = 0; i2 < handlers.length; ++i2) {\n handlers[i2].apply(null, args);\n }\n }\n\n __name(signal, \"signal\");\n\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\") {\n e = {\n type: e,\n preventDefault: function () {\n this.defaultPrevented = true;\n }\n };\n }\n\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore;\n }\n\n __name(signalDOMEvent, \"signalDOMEvent\");\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n\n if (!arr) {\n return;\n }\n\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n\n for (var i2 = 0; i2 < arr.length; ++i2) {\n if (indexOf(set, arr[i2]) == -1) {\n set.push(arr[i2]);\n }\n }\n }\n\n __name(signalCursorActivity, \"signalCursorActivity\");\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0;\n }\n\n __name(hasHandler, \"hasHandler\");\n\n function eventMixin(ctor) {\n ctor.prototype.on = function (type, f) {\n on(this, type, f);\n };\n\n ctor.prototype.off = function (type, f) {\n off(this, type, f);\n };\n }\n\n __name(eventMixin, \"eventMixin\");\n\n function e_preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n }\n\n __name(e_preventDefault, \"e_preventDefault\");\n\n function e_stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n }\n\n __name(e_stopPropagation, \"e_stopPropagation\");\n\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;\n }\n\n __name(e_defaultPrevented, \"e_defaultPrevented\");\n\n function e_stop(e) {\n e_preventDefault(e);\n e_stopPropagation(e);\n }\n\n __name(e_stop, \"e_stop\");\n\n function e_target(e) {\n return e.target || e.srcElement;\n }\n\n __name(e_target, \"e_target\");\n\n function e_button(e) {\n var b = e.which;\n\n if (b == null) {\n if (e.button & 1) {\n b = 1;\n } else if (e.button & 2) {\n b = 3;\n } else if (e.button & 4) {\n b = 2;\n }\n }\n\n if (mac && e.ctrlKey && b == 1) {\n b = 3;\n }\n\n return b;\n }\n\n __name(e_button, \"e_button\");\n\n var dragAndDrop = function () {\n if (ie && ie_version < 9) {\n return false;\n }\n\n var div = elt(\"div\");\n return \"draggable\" in div || \"dragDrop\" in div;\n }();\n\n var zwspSupported;\n\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200B\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n\n if (measure.firstChild.offsetHeight != 0) {\n zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n }\n }\n\n var node = zwspSupported ? elt(\"span\", \"\\u200B\") : elt(\"span\", \"\\xA0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node;\n }\n\n __name(zeroWidthElement, \"zeroWidthElement\");\n\n var badBidiRects;\n\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) {\n return badBidiRects;\n }\n\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062EA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n\n if (!r0 || r0.left == r0.right) {\n return false;\n }\n\n return badBidiRects = r1.right - r0.right < 3;\n }\n\n __name(hasBadBidiRects, \"hasBadBidiRects\");\n\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0,\n result = [],\n l = string.length;\n\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n\n if (nl == -1) {\n nl = string.length;\n }\n\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n\n return result;\n } : function (string) {\n return string.split(/\\r\\n?|\\n/);\n };\n var hasSelection = window.getSelection ? function (te) {\n try {\n return te.selectionStart != te.selectionEnd;\n } catch (e) {\n return false;\n }\n } : function (te) {\n var range2;\n\n try {\n range2 = te.ownerDocument.selection.createRange();\n } catch (e) {}\n\n if (!range2 || range2.parentElement() != te) {\n return false;\n }\n\n return range2.compareEndPoints(\"StartToEnd\", range2) != 0;\n };\n\n var hasCopyEvent = function () {\n var e = elt(\"div\");\n\n if (\"oncopy\" in e) {\n return true;\n }\n\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\";\n }();\n\n var badZoomedRects = null;\n\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) {\n return badZoomedRects;\n }\n\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;\n }\n\n __name(hasBadZoomedRects, \"hasBadZoomedRects\");\n\n var modes = {},\n mimeModes = {};\n\n function defineMode(name, mode) {\n if (arguments.length > 2) {\n mode.dependencies = Array.prototype.slice.call(arguments, 2);\n }\n\n modes[name] = mode;\n }\n\n __name(defineMode, \"defineMode\");\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n __name(defineMIME, \"defineMIME\");\n\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n\n if (typeof found == \"string\") {\n found = {\n name: found\n };\n }\n\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\");\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\");\n }\n\n if (typeof spec == \"string\") {\n return {\n name: spec\n };\n } else {\n return spec || {\n name: \"null\"\n };\n }\n }\n\n __name(resolveMode, \"resolveMode\");\n\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n\n if (!mfactory) {\n return getMode(options, \"text/plain\");\n }\n\n var modeObj = mfactory(options, spec);\n\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n\n for (var prop2 in exts) {\n if (!exts.hasOwnProperty(prop2)) {\n continue;\n }\n\n if (modeObj.hasOwnProperty(prop2)) {\n modeObj[\"_\" + prop2] = modeObj[prop2];\n }\n\n modeObj[prop2] = exts[prop2];\n }\n }\n\n modeObj.name = spec.name;\n\n if (spec.helperType) {\n modeObj.helperType = spec.helperType;\n }\n\n if (spec.modeProps) {\n for (var prop$1 in spec.modeProps) {\n modeObj[prop$1] = spec.modeProps[prop$1];\n }\n }\n\n return modeObj;\n }\n\n __name(getMode, \"getMode\");\n\n var modeExtensions = {};\n\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : modeExtensions[mode] = {};\n copyObj(properties, exts);\n }\n\n __name(extendMode, \"extendMode\");\n\n function copyState(mode, state) {\n if (state === true) {\n return state;\n }\n\n if (mode.copyState) {\n return mode.copyState(state);\n }\n\n var nstate = {};\n\n for (var n in state) {\n var val = state[n];\n\n if (val instanceof Array) {\n val = val.concat([]);\n }\n\n nstate[n] = val;\n }\n\n return nstate;\n }\n\n __name(copyState, \"copyState\");\n\n function innerMode(mode, state) {\n var info;\n\n while (mode.innerMode) {\n info = mode.innerMode(state);\n\n if (!info || info.mode == mode) {\n break;\n }\n\n state = info.state;\n mode = info.mode;\n }\n\n return info || {\n mode,\n state\n };\n }\n\n __name(innerMode, \"innerMode\");\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true;\n }\n\n __name(startState, \"startState\");\n\n var StringStream = /* @__PURE__ */__name(function (string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n }, \"StringStream\");\n\n StringStream.prototype.eol = function () {\n return this.pos >= this.string.length;\n };\n\n StringStream.prototype.sol = function () {\n return this.pos == this.lineStart;\n };\n\n StringStream.prototype.peek = function () {\n return this.string.charAt(this.pos) || void 0;\n };\n\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length) {\n return this.string.charAt(this.pos++);\n }\n };\n\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n\n if (typeof match == \"string\") {\n ok = ch == match;\n } else {\n ok = ch && (match.test ? match.test(ch) : match(ch));\n }\n\n if (ok) {\n ++this.pos;\n return ch;\n }\n };\n\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n\n while (this.eat(match)) {}\n\n return this.pos > start;\n };\n\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) {\n ++this.pos;\n }\n\n return this.pos > start;\n };\n\n StringStream.prototype.skipToEnd = function () {\n this.pos = this.string.length;\n };\n\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n\n if (found > -1) {\n this.pos = found;\n return true;\n }\n };\n\n StringStream.prototype.backUp = function (n) {\n this.pos -= n;\n };\n\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = /* @__PURE__ */__name(function (str) {\n return caseInsensitive ? str.toLowerCase() : str;\n }, \"cased\");\n\n var substr = this.string.substr(this.pos, pattern.length);\n\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) {\n this.pos += pattern.length;\n }\n\n return true;\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n\n if (match && match.index > 0) {\n return null;\n }\n\n if (match && consume !== false) {\n this.pos += match[0].length;\n }\n\n return match;\n }\n };\n\n StringStream.prototype.current = function () {\n return this.string.slice(this.start, this.pos);\n };\n\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n\n try {\n return inner();\n } finally {\n this.lineStart -= n;\n }\n };\n\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n);\n };\n\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos);\n };\n\n function getLine(doc, n) {\n n -= doc.first;\n\n if (n < 0 || n >= doc.size) {\n throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n }\n\n var chunk = doc;\n\n while (!chunk.lines) {\n for (var i2 = 0;; ++i2) {\n var child = chunk.children[i2],\n sz = child.chunkSize();\n\n if (n < sz) {\n chunk = child;\n break;\n }\n\n n -= sz;\n }\n }\n\n return chunk.lines[n];\n }\n\n __name(getLine, \"getLine\");\n\n function getBetween(doc, start, end) {\n var out = [],\n n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n\n if (n == end.line) {\n text = text.slice(0, end.ch);\n }\n\n if (n == start.line) {\n text = text.slice(start.ch);\n }\n\n out.push(text);\n ++n;\n });\n return out;\n }\n\n __name(getBetween, \"getBetween\");\n\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) {\n out.push(line.text);\n });\n return out;\n }\n\n __name(getLines, \"getLines\");\n\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n\n if (diff) {\n for (var n = line; n; n = n.parent) {\n n.height += diff;\n }\n }\n }\n\n __name(updateLineHeight, \"updateLineHeight\");\n\n function lineNo(line) {\n if (line.parent == null) {\n return null;\n }\n\n var cur = line.parent,\n no = indexOf(cur.lines, line);\n\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i2 = 0;; ++i2) {\n if (chunk.children[i2] == cur) {\n break;\n }\n\n no += chunk.children[i2].chunkSize();\n }\n }\n\n return no + cur.first;\n }\n\n __name(lineNo, \"lineNo\");\n\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n\n outer: do {\n for (var i$12 = 0; i$12 < chunk.children.length; ++i$12) {\n var child = chunk.children[i$12],\n ch = child.height;\n\n if (h < ch) {\n chunk = child;\n continue outer;\n }\n\n h -= ch;\n n += child.chunkSize();\n }\n\n return n;\n } while (!chunk.lines);\n\n var i2 = 0;\n\n for (; i2 < chunk.lines.length; ++i2) {\n var line = chunk.lines[i2],\n lh = line.height;\n\n if (h < lh) {\n break;\n }\n\n h -= lh;\n }\n\n return n + i2;\n }\n\n __name(lineAtHeight, \"lineAtHeight\");\n\n function isLine(doc, l) {\n return l >= doc.first && l < doc.first + doc.size;\n }\n\n __name(isLine, \"isLine\");\n\n function lineNumberFor(options, i2) {\n return String(options.lineNumberFormatter(i2 + options.firstLineNumber));\n }\n\n __name(lineNumberFor, \"lineNumberFor\");\n\n function Pos(line, ch, sticky) {\n if (sticky === void 0) sticky = null;\n\n if (!(this instanceof Pos)) {\n return new Pos(line, ch, sticky);\n }\n\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n __name(Pos, \"Pos\");\n\n function cmp(a, b) {\n return a.line - b.line || a.ch - b.ch;\n }\n\n __name(cmp, \"cmp\");\n\n function equalCursorPos(a, b) {\n return a.sticky == b.sticky && cmp(a, b) == 0;\n }\n\n __name(equalCursorPos, \"equalCursorPos\");\n\n function copyPos(x) {\n return Pos(x.line, x.ch);\n }\n\n __name(copyPos, \"copyPos\");\n\n function maxPos(a, b) {\n return cmp(a, b) < 0 ? b : a;\n }\n\n __name(maxPos, \"maxPos\");\n\n function minPos(a, b) {\n return cmp(a, b) < 0 ? a : b;\n }\n\n __name(minPos, \"minPos\");\n\n function clipLine(doc, n) {\n return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));\n }\n\n __name(clipLine, \"clipLine\");\n\n function clipPos(doc, pos) {\n if (pos.line < doc.first) {\n return Pos(doc.first, 0);\n }\n\n var last = doc.first + doc.size - 1;\n\n if (pos.line > last) {\n return Pos(last, getLine(doc, last).text.length);\n }\n\n return clipToLen(pos, getLine(doc, pos.line).text.length);\n }\n\n __name(clipPos, \"clipPos\");\n\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n\n if (ch == null || ch > linelen) {\n return Pos(pos.line, linelen);\n } else if (ch < 0) {\n return Pos(pos.line, 0);\n } else {\n return pos;\n }\n }\n\n __name(clipToLen, \"clipToLen\");\n\n function clipPosArray(doc, array) {\n var out = [];\n\n for (var i2 = 0; i2 < array.length; i2++) {\n out[i2] = clipPos(doc, array[i2]);\n }\n\n return out;\n }\n\n __name(clipPosArray, \"clipPosArray\");\n\n var SavedContext = /* @__PURE__ */__name(function (state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n }, \"SavedContext\");\n\n var Context = /* @__PURE__ */__name(function (doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n }, \"Context\");\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n\n if (line != null && n > this.maxLookAhead) {\n this.maxLookAhead = n;\n }\n\n return line;\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) {\n return null;\n }\n\n while (this.baseTokens[this.baseTokenPos] <= n) {\n this.baseTokenPos += 2;\n }\n\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {\n type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n\n };\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n\n if (this.maxLookAhead > 0) {\n this.maxLookAhead--;\n }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext) {\n return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead);\n } else {\n return new Context(doc, copyState(doc.mode, saved), line);\n }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state;\n };\n\n function highlightLine(cm, line, context, forceToEnd) {\n var st = [cm.state.modeGen],\n lineClasses = {};\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) {\n return st.push(end, style);\n }, lineClasses, forceToEnd);\n var state = context.state;\n\n var loop = /* @__PURE__ */__name(function (o2) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o2],\n i2 = 1,\n at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i2;\n\n while (at < end) {\n var i_end = st[i2];\n\n if (i_end > end) {\n st.splice(i2, 1, end, st[i2 + 1], i_end);\n }\n\n i2 += 2;\n at = Math.min(end, i_end);\n }\n\n if (!style) {\n return;\n }\n\n if (overlay.opaque) {\n st.splice(start, i2 - start, end, \"overlay \" + style);\n i2 = start + 2;\n } else {\n for (; start < i2; start += 2) {\n var cur = st[start + 1];\n st[start + 1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n }, \"loop\");\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop(o);\n\n return {\n styles: st,\n classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null\n };\n }\n\n __name(highlightLine, \"highlightLine\");\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n\n if (resetState) {\n context.state = resetState;\n }\n\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n\n if (result.classes) {\n line.styleClasses = result.classes;\n } else if (line.styleClasses) {\n line.styleClasses = null;\n }\n\n if (updateFrontier === cm.doc.highlightFrontier) {\n cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier);\n }\n }\n\n return line.styles;\n }\n\n __name(getLineStyles, \"getLineStyles\");\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc,\n display = cm.display;\n\n if (!doc.mode.startState) {\n return new Context(doc, true, n);\n }\n\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n\n if (precise) {\n doc.modeFrontier = context.line;\n }\n\n return context;\n }\n\n __name(getContextBefore, \"getContextBefore\");\n\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n\n if (text == \"\") {\n callBlankLine(mode, context.state);\n }\n\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n __name(processLine, \"processLine\");\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) {\n return mode.blankLine(state);\n }\n\n if (!mode.innerMode) {\n return;\n }\n\n var inner = innerMode(mode, state);\n\n if (inner.mode.blankLine) {\n return inner.mode.blankLine(inner.state);\n }\n }\n\n __name(callBlankLine, \"callBlankLine\");\n\n function readToken(mode, stream, state, inner) {\n for (var i2 = 0; i2 < 10; i2++) {\n if (inner) {\n inner[0] = innerMode(mode, state).mode;\n }\n\n var style = mode.token(stream, state);\n\n if (stream.pos > stream.start) {\n return style;\n }\n }\n\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\");\n }\n\n __name(readToken, \"readToken\");\n\n var Token = /* @__PURE__ */__name(function (stream, type, state) {\n this.start = stream.start;\n this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n }, \"Token\");\n\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc,\n mode = doc.mode,\n style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line),\n context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context),\n tokens;\n\n if (asArray) {\n tokens = [];\n }\n\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n\n if (asArray) {\n tokens.push(new Token(stream, style, copyState(doc.mode, context.state)));\n }\n }\n\n return asArray ? tokens : new Token(stream, style, context.state);\n }\n\n __name(takeToken, \"takeToken\");\n\n function extractLineClasses(type, output) {\n if (type) {\n for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n\n if (!lineClass) {\n break;\n }\n\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop2 = lineClass[1] ? \"bgClass\" : \"textClass\";\n\n if (output[prop2] == null) {\n output[prop2] = lineClass[2];\n } else if (!new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\").test(output[prop2])) {\n output[prop2] += \" \" + lineClass[2];\n }\n }\n }\n\n return type;\n }\n\n __name(extractLineClasses, \"extractLineClasses\");\n\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n\n if (flattenSpans == null) {\n flattenSpans = cm.options.flattenSpans;\n }\n\n var curStart = 0,\n curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context),\n style;\n var inner = cm.options.addModeClass && [null];\n\n if (text == \"\") {\n extractLineClasses(callBlankLine(mode, context.state), lineClasses);\n }\n\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n\n if (forceToEnd) {\n processLine(cm, text, context, stream.pos);\n }\n\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n\n if (inner) {\n var mName = inner[0].name;\n\n if (mName) {\n style = \"m-\" + (style ? mName + \" \" + style : mName);\n }\n }\n\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5e3);\n f(curStart, curStyle);\n }\n\n curStyle = style;\n }\n\n stream.start = stream.pos;\n }\n\n while (curStart < stream.pos) {\n var pos = Math.min(stream.pos, curStart + 5e3);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n __name(runMode, \"runMode\");\n\n function findStartLine(cm, n, precise) {\n var minindent,\n minline,\n doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1e3 : 100);\n\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) {\n return doc.first;\n }\n\n var line = getLine(doc, search - 1),\n after = line.stateAfter;\n\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) {\n return search;\n }\n\n var indented = countColumn(line.text, null, cm.options.tabSize);\n\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n\n return minline;\n }\n\n __name(findStartLine, \"findStartLine\");\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n\n if (doc.highlightFrontier < n - 10) {\n return;\n }\n\n var start = doc.first;\n\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break;\n }\n }\n\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n __name(retreatFrontier, \"retreatFrontier\");\n\n var sawReadOnlySpans = false,\n sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n __name(seeReadOnlySpans, \"seeReadOnlySpans\");\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n __name(seeCollapsedSpans, \"seeCollapsedSpans\");\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from;\n this.to = to;\n }\n\n __name(MarkedSpan, \"MarkedSpan\");\n\n function getMarkedSpanFor(spans, marker) {\n if (spans) {\n for (var i2 = 0; i2 < spans.length; ++i2) {\n var span = spans[i2];\n\n if (span.marker == marker) {\n return span;\n }\n }\n }\n }\n\n __name(getMarkedSpanFor, \"getMarkedSpanFor\");\n\n function removeMarkedSpan(spans, span) {\n var r;\n\n for (var i2 = 0; i2 < spans.length; ++i2) {\n if (spans[i2] != span) {\n (r || (r = [])).push(spans[i2]);\n }\n }\n\n return r;\n }\n\n __name(removeMarkedSpan, \"removeMarkedSpan\");\n\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = /* @__PURE__ */new WeakSet()));\n\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n\n if (inThisOp) {\n inThisOp.add(line.markedSpans);\n }\n }\n\n span.marker.attachLine(line);\n }\n\n __name(addMarkedSpan, \"addMarkedSpan\");\n\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i2 = 0; i2 < old.length; ++i2) {\n var span = old[i2],\n marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n }\n }\n\n return nw;\n }\n\n __name(markedSpansBefore, \"markedSpansBefore\");\n\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i2 = 0; i2 < old.length; ++i2) {\n var span = old[i2],\n marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, span.to == null ? null : span.to - endCh));\n }\n }\n }\n\n return nw;\n }\n\n __name(markedSpansAfter, \"markedSpansAfter\");\n\n function stretchSpansOverChange(doc, change) {\n if (change.full) {\n return null;\n }\n\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n\n if (!oldFirst && !oldLast) {\n return null;\n }\n\n var startCh = change.from.ch,\n endCh = change.to.ch,\n isInsert = cmp(change.from, change.to) == 0;\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n var sameLine = change.text.length == 1,\n offset = lst(change.text).length + (sameLine ? startCh : 0);\n\n if (first) {\n for (var i2 = 0; i2 < first.length; ++i2) {\n var span = first[i2];\n\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n\n if (!found) {\n span.to = startCh;\n } else if (sameLine) {\n span.to = found.to == null ? null : found.to + offset;\n }\n }\n }\n }\n\n if (last) {\n for (var i$12 = 0; i$12 < last.length; ++i$12) {\n var span$1 = last[i$12];\n\n if (span$1.to != null) {\n span$1.to += offset;\n }\n\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n\n if (!found$1) {\n span$1.from = offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n } else {\n span$1.from += offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n }\n }\n\n if (first) {\n first = clearEmptySpans(first);\n }\n\n if (last && last != first) {\n last = clearEmptySpans(last);\n }\n\n var newMarkers = [first];\n\n if (!sameLine) {\n var gap = change.text.length - 2,\n gapMarkers;\n\n if (gap > 0 && first) {\n for (var i$22 = 0; i$22 < first.length; ++i$22) {\n if (first[i$22].to == null) {\n (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$22].marker, null, null));\n }\n }\n }\n\n for (var i$3 = 0; i$3 < gap; ++i$3) {\n newMarkers.push(gapMarkers);\n }\n\n newMarkers.push(last);\n }\n\n return newMarkers;\n }\n\n __name(stretchSpansOverChange, \"stretchSpansOverChange\");\n\n function clearEmptySpans(spans) {\n for (var i2 = 0; i2 < spans.length; ++i2) {\n var span = spans[i2];\n\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) {\n spans.splice(i2--, 1);\n }\n }\n\n if (!spans.length) {\n return null;\n }\n\n return spans;\n }\n\n __name(clearEmptySpans, \"clearEmptySpans\");\n\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) {\n for (var i3 = 0; i3 < line.markedSpans.length; ++i3) {\n var mark = line.markedSpans[i3].marker;\n\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) {\n (markers || (markers = [])).push(mark);\n }\n }\n }\n });\n\n if (!markers) {\n return null;\n }\n\n var parts = [{\n from,\n to\n }];\n\n for (var i2 = 0; i2 < markers.length; ++i2) {\n var mk = markers[i2],\n m = mk.find(0);\n\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) {\n continue;\n }\n\n var newParts = [j, 1],\n dfrom = cmp(p.from, m.from),\n dto = cmp(p.to, m.to);\n\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) {\n newParts.push({\n from: p.from,\n to: m.from\n });\n }\n\n if (dto > 0 || !mk.inclusiveRight && !dto) {\n newParts.push({\n from: m.to,\n to: p.to\n });\n }\n\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n\n return parts;\n }\n\n __name(removeReadOnlyRanges, \"removeReadOnlyRanges\");\n\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n\n if (!spans) {\n return;\n }\n\n for (var i2 = 0; i2 < spans.length; ++i2) {\n spans[i2].marker.detachLine(line);\n }\n\n line.markedSpans = null;\n }\n\n __name(detachMarkedSpans, \"detachMarkedSpans\");\n\n function attachMarkedSpans(line, spans) {\n if (!spans) {\n return;\n }\n\n for (var i2 = 0; i2 < spans.length; ++i2) {\n spans[i2].marker.attachLine(line);\n }\n\n line.markedSpans = spans;\n }\n\n __name(attachMarkedSpans, \"attachMarkedSpans\");\n\n function extraLeft(marker) {\n return marker.inclusiveLeft ? -1 : 0;\n }\n\n __name(extraLeft, \"extraLeft\");\n\n function extraRight(marker) {\n return marker.inclusiveRight ? 1 : 0;\n }\n\n __name(extraRight, \"extraRight\");\n\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n\n if (lenDiff != 0) {\n return lenDiff;\n }\n\n var aPos = a.find(),\n bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n\n if (fromCmp) {\n return -fromCmp;\n }\n\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n\n if (toCmp) {\n return toCmp;\n }\n\n return b.id - a.id;\n }\n\n __name(compareCollapsedMarkers, \"compareCollapsedMarkers\");\n\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var sp = void 0, i2 = 0; i2 < sps.length; ++i2) {\n sp = sps[i2];\n\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n }\n\n __name(collapsedSpanAtSide, \"collapsedSpanAtSide\");\n\n function collapsedSpanAtStart(line) {\n return collapsedSpanAtSide(line, true);\n }\n\n __name(collapsedSpanAtStart, \"collapsedSpanAtStart\");\n\n function collapsedSpanAtEnd(line) {\n return collapsedSpanAtSide(line, false);\n }\n\n __name(collapsedSpanAtEnd, \"collapsedSpanAtEnd\");\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var i2 = 0; i2 < sps.length; ++i2) {\n var sp = sps[i2];\n\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n }\n\n __name(collapsedSpanAround, \"collapsedSpanAround\");\n\n function conflictingCollapsedRange(doc, lineNo2, from, to, marker) {\n var line = getLine(doc, lineNo2);\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var i2 = 0; i2 < sps.length; ++i2) {\n var sp = sps[i2];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) {\n continue;\n }\n\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) {\n return true;\n }\n }\n }\n }\n\n __name(conflictingCollapsedRange, \"conflictingCollapsedRange\");\n\n function visualLine(line) {\n var merged;\n\n while (merged = collapsedSpanAtStart(line)) {\n line = merged.find(-1, true).line;\n }\n\n return line;\n }\n\n __name(visualLine, \"visualLine\");\n\n function visualLineEnd(line) {\n var merged;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return line;\n }\n\n __name(visualLineEnd, \"visualLineEnd\");\n\n function visualLineContinued(line) {\n var merged, lines;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n (lines || (lines = [])).push(line);\n }\n\n return lines;\n }\n\n __name(visualLineContinued, \"visualLineContinued\");\n\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN),\n vis = visualLine(line);\n\n if (line == vis) {\n return lineN;\n }\n\n return lineNo(vis);\n }\n\n __name(visualLineNo, \"visualLineNo\");\n\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) {\n return lineN;\n }\n\n var line = getLine(doc, lineN),\n merged;\n\n if (!lineIsHidden(doc, line)) {\n return lineN;\n }\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return lineNo(line) + 1;\n }\n\n __name(visualLineEndNo, \"visualLineEndNo\");\n\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var sp = void 0, i2 = 0; i2 < sps.length; ++i2) {\n sp = sps[i2];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n if (sp.from == null) {\n return true;\n }\n\n if (sp.marker.widgetNode) {\n continue;\n }\n\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n }\n }\n\n __name(lineIsHidden, \"lineIsHidden\");\n\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));\n }\n\n if (span.marker.inclusiveRight && span.to == line.text.length) {\n return true;\n }\n\n for (var sp = void 0, i2 = 0; i2 < line.markedSpans.length; ++i2) {\n sp = line.markedSpans[i2];\n\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n }\n\n __name(lineIsHiddenInner, \"lineIsHiddenInner\");\n\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n var h = 0,\n chunk = lineObj.parent;\n\n for (var i2 = 0; i2 < chunk.lines.length; ++i2) {\n var line = chunk.lines[i2];\n\n if (line == lineObj) {\n break;\n } else {\n h += line.height;\n }\n }\n\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$12 = 0; i$12 < p.children.length; ++i$12) {\n var cur = p.children[i$12];\n\n if (cur == chunk) {\n break;\n } else {\n h += cur.height;\n }\n }\n }\n\n return h;\n }\n\n __name(heightAtLine, \"heightAtLine\");\n\n function lineLength(line) {\n if (line.height == 0) {\n return 0;\n }\n\n var len = line.text.length,\n merged,\n cur = line;\n\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n\n cur = line;\n\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n\n return len;\n }\n\n __name(lineLength, \"lineLength\");\n\n function findMaxLine(cm) {\n var d = cm.display,\n doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n __name(findMaxLine, \"findMaxLine\");\n\n var Line = /* @__PURE__ */__name(function (text, markedSpans, estimateHeight2) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight2 ? estimateHeight2(this) : 1;\n }, \"Line\");\n\n Line.prototype.lineNo = function () {\n return lineNo(this);\n };\n\n eventMixin(Line);\n\n function updateLine(line, text, markedSpans, estimateHeight2) {\n line.text = text;\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n\n if (line.order != null) {\n line.order = null;\n }\n\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight2 ? estimateHeight2(line) : 1;\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n }\n\n __name(updateLine, \"updateLine\");\n\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n __name(cleanUpLine, \"cleanUpLine\");\n\n var styleToClassCache = {},\n styleToClassCacheWithMode = {};\n\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) {\n return null;\n }\n\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] || (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\n }\n\n __name(interpretTokenStyle, \"interpretTokenStyle\");\n\n function buildLineContent(cm, lineView) {\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {\n pre: eltP(\"pre\", [content], \"CodeMirror-line\"),\n content,\n col: 0,\n pos: 0,\n cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")\n };\n lineView.measure = {};\n\n for (var i2 = 0; i2 <= (lineView.rest ? lineView.rest.length : 0); i2++) {\n var line = i2 ? lineView.rest[i2 - 1] : lineView.line,\n order = void 0;\n builder.pos = 0;\n builder.addToken = buildToken;\n\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) {\n builder.addToken = buildTokenBadBidi(builder.addToken, order);\n }\n\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n\n if (line.styleClasses) {\n if (line.styleClasses.bgClass) {\n builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n }\n\n if (line.styleClasses.textClass) {\n builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n }\n }\n\n if (builder.map.length == 0) {\n builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n }\n\n if (i2 == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);\n (lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n if (webkit) {\n var last = builder.content.lastChild;\n\n if (/\\bcm-tab\\b/.test(last.className) || last.querySelector && last.querySelector(\".cm-tab\")) {\n builder.content.className = \"cm-tab-wrap-hack\";\n }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n\n if (builder.pre.className) {\n builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n }\n\n return builder;\n }\n\n __name(buildLineContent, \"buildLineContent\");\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token;\n }\n\n __name(defaultSpecialCharPlaceholder, \"defaultSpecialCharPlaceholder\");\n\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) {\n return;\n }\n\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars,\n mustWrap = false;\n var content;\n\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n\n if (ie && ie_version < 9) {\n mustWrap = true;\n }\n\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt]));\n } else {\n content.appendChild(txt);\n }\n\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n\n if (!m) {\n break;\n }\n\n pos += skipped + 1;\n var txt$1 = void 0;\n\n if (m[0] == \"\t\") {\n var tabSize = builder.cm.options.tabSize,\n tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240D\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt$1]));\n } else {\n content.appendChild(txt$1);\n }\n\n builder.col += 1;\n }\n\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n\n if (startStyle) {\n fullStyle += startStyle;\n }\n\n if (endStyle) {\n fullStyle += endStyle;\n }\n\n var token = elt(\"span\", [content], fullStyle, css);\n\n if (attributes) {\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\") {\n token.setAttribute(attr, attributes[attr]);\n }\n }\n }\n\n return builder.content.appendChild(token);\n }\n\n builder.content.appendChild(content);\n }\n\n __name(buildToken, \"buildToken\");\n\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) {\n return text;\n }\n\n var spaceBefore = trailingBefore,\n result = \"\";\n\n for (var i2 = 0; i2 < text.length; i2++) {\n var ch = text.charAt(i2);\n\n if (ch == \" \" && spaceBefore && (i2 == text.length - 1 || text.charCodeAt(i2 + 1) == 32)) {\n ch = \"\\xA0\";\n }\n\n result += ch;\n spaceBefore = ch == \" \";\n }\n\n return result;\n }\n\n __name(splitSpaces, \"splitSpaces\");\n\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos,\n end = start + text.length;\n\n for (;;) {\n var part = void 0;\n\n for (var i2 = 0; i2 < order.length; i2++) {\n part = order[i2];\n\n if (part.to > start && part.from <= start) {\n break;\n }\n }\n\n if (part.to >= end) {\n return inner(builder, text, style, startStyle, endStyle, css, attributes);\n }\n\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n };\n }\n\n __name(buildTokenBadBidi, \"buildTokenBadBidi\");\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n\n if (widget) {\n builder.map.push(builder.pos, builder.pos + size, widget);\n }\n\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget) {\n widget = builder.content.appendChild(document.createElement(\"span\"));\n }\n\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n __name(buildCollapsedSpan, \"buildCollapsedSpan\");\n\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans,\n allText = line.text,\n at = 0;\n\n if (!spans) {\n for (var i$12 = 1; i$12 < styles.length; i$12 += 2) {\n builder.addToken(builder, allText.slice(at, at = styles[i$12]), interpretTokenStyle(styles[i$12 + 1], builder.cm.options));\n }\n\n return;\n }\n\n var len = allText.length,\n pos = 0,\n i2 = 1,\n text = \"\",\n style,\n css;\n var nextChange = 0,\n spanStyle,\n spanEndStyle,\n spanStartStyle,\n collapsed,\n attributes;\n\n for (;;) {\n if (nextChange == pos) {\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null;\n nextChange = Infinity;\n var foundBookmarks = [],\n endStyles = void 0;\n\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j],\n m = sp.marker;\n\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n\n if (m.className) {\n spanStyle += \" \" + m.className;\n }\n\n if (m.css) {\n css = (css ? css + \";\" : \"\") + m.css;\n }\n\n if (m.startStyle && sp.from == pos) {\n spanStartStyle += \" \" + m.startStyle;\n }\n\n if (m.endStyle && sp.to == nextChange) {\n (endStyles || (endStyles = [])).push(m.endStyle, sp.to);\n }\n\n if (m.title) {\n (attributes || (attributes = {})).title = m.title;\n }\n\n if (m.attributes) {\n for (var attr in m.attributes) {\n (attributes || (attributes = {}))[attr] = m.attributes[attr];\n }\n }\n\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) {\n collapsed = sp;\n }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n\n if (endStyles) {\n for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) {\n if (endStyles[j$1 + 1] == nextChange) {\n spanEndStyle += \" \" + endStyles[j$1];\n }\n }\n }\n\n if (!collapsed || collapsed.from == pos) {\n for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) {\n buildCollapsedSpan(builder, 0, foundBookmarks[j$2]);\n }\n }\n\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, collapsed.marker, collapsed.from == null);\n\n if (collapsed.to == null) {\n return;\n }\n\n if (collapsed.to == pos) {\n collapsed = false;\n }\n }\n }\n\n if (pos >= len) {\n break;\n }\n\n var upto = Math.min(len, nextChange);\n\n while (true) {\n if (text) {\n var end = pos + text.length;\n\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n\n if (end >= upto) {\n text = text.slice(upto - pos);\n pos = upto;\n break;\n }\n\n pos = end;\n spanStartStyle = \"\";\n }\n\n text = allText.slice(at, at = styles[i2++]);\n style = interpretTokenStyle(styles[i2++], builder.cm.options);\n }\n }\n }\n\n __name(insertLineContent, \"insertLineContent\");\n\n function LineView(doc, line, lineN) {\n this.line = line;\n this.rest = visualLineContinued(line);\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n __name(LineView, \"LineView\");\n\n function buildViewArray(cm, from, to) {\n var array = [],\n nextPos;\n\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n\n return array;\n }\n\n __name(buildViewArray, \"buildViewArray\");\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n __name(pushOperation, \"pushOperation\");\n\n function fireCallbacksForOps(group) {\n var callbacks = group.delayedCallbacks,\n i2 = 0;\n\n do {\n for (; i2 < callbacks.length; i2++) {\n callbacks[i2].call(null);\n }\n\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n\n if (op.cursorActivityHandlers) {\n while (op.cursorActivityCalled < op.cursorActivityHandlers.length) {\n op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);\n }\n }\n }\n } while (i2 < callbacks.length);\n }\n\n __name(fireCallbacksForOps, \"fireCallbacksForOps\");\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n\n if (!group) {\n return;\n }\n\n try {\n fireCallbacksForOps(group);\n } finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n __name(finishOperation, \"finishOperation\");\n\n var orphanDelayedCallbacks = null;\n\n function signalLater(emitter, type) {\n var arr = getHandlers(emitter, type);\n\n if (!arr.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2),\n list;\n\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n\n var loop = /* @__PURE__ */__name(function (i3) {\n list.push(function () {\n return arr[i3].apply(null, args);\n });\n }, \"loop\");\n\n for (var i2 = 0; i2 < arr.length; ++i2) loop(i2);\n }\n\n __name(signalLater, \"signalLater\");\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n\n for (var i2 = 0; i2 < delayed.length; ++i2) {\n delayed[i2]();\n }\n }\n\n __name(fireOrphanDelayed, \"fireOrphanDelayed\");\n\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n\n if (type == \"text\") {\n updateLineText(cm, lineView);\n } else if (type == \"gutter\") {\n updateLineGutter(cm, lineView, lineN, dims);\n } else if (type == \"class\") {\n updateLineClasses(cm, lineView);\n } else if (type == \"widget\") {\n updateLineWidgets(cm, lineView, dims);\n }\n }\n\n lineView.changes = null;\n }\n\n __name(updateLineForChanges, \"updateLineForChanges\");\n\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n\n if (lineView.text.parentNode) {\n lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n }\n\n lineView.node.appendChild(lineView.text);\n\n if (ie && ie_version < 8) {\n lineView.node.style.zIndex = 2;\n }\n }\n\n return lineView.node;\n }\n\n __name(ensureLineWrapped, \"ensureLineWrapped\");\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n\n if (cls) {\n cls += \" CodeMirror-linebackground\";\n }\n\n if (lineView.background) {\n if (cls) {\n lineView.background.className = cls;\n } else {\n lineView.background.parentNode.removeChild(lineView.background);\n lineView.background = null;\n }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n __name(updateLineBackground, \"updateLineBackground\");\n\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built;\n }\n\n return buildLineContent(cm, lineView);\n }\n\n __name(getLineContent, \"getLineContent\");\n\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n\n if (lineView.text == lineView.node) {\n lineView.node = built.pre;\n }\n\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n __name(updateLineText, \"updateLineText\");\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n\n if (lineView.line.wrapClass) {\n ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n } else if (lineView.node != lineView.text) {\n lineView.node.className = \"\";\n }\n\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n __name(updateLineClasses, \"updateLineClasses\");\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass, \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + dims.gutterTotalWidth + \"px\");\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n\n var markers = lineView.line.gutterMarkers;\n\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\");\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n\n if (lineView.line.gutterClass) {\n gutterWrap.className += \" \" + lineView.line.gutterClass;\n }\n\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"])) {\n lineView.lineNumber = gutterWrap.appendChild(elt(\"div\", lineNumberFor(cm.options, lineN), \"CodeMirror-linenumber CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[\"CodeMirror-linenumbers\"] + \"px; width: \" + cm.display.lineNumInnerWidth + \"px\"));\n }\n\n if (markers) {\n for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className,\n found = markers.hasOwnProperty(id) && markers[id];\n\n if (found) {\n gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\n }\n }\n }\n }\n }\n\n __name(updateLineGutter, \"updateLineGutter\");\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) {\n lineView.alignable = null;\n }\n\n var isWidget = classTest(\"CodeMirror-linewidget\");\n\n for (var node = lineView.node.firstChild, next = void 0; node; node = next) {\n next = node.nextSibling;\n\n if (isWidget.test(node.className)) {\n lineView.node.removeChild(node);\n }\n }\n\n insertLineWidgets(cm, lineView, dims);\n }\n\n __name(updateLineWidgets, \"updateLineWidgets\");\n\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n\n if (built.bgClass) {\n lineView.bgClass = built.bgClass;\n }\n\n if (built.textClass) {\n lineView.textClass = built.textClass;\n }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node;\n }\n\n __name(buildLineElement, \"buildLineElement\");\n\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n\n if (lineView.rest) {\n for (var i2 = 0; i2 < lineView.rest.length; i2++) {\n insertLineWidgetsFor(cm, lineView.rest[i2], lineView, dims, false);\n }\n }\n }\n\n __name(insertLineWidgets, \"insertLineWidgets\");\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) {\n return;\n }\n\n var wrap = ensureLineWrapped(lineView);\n\n for (var i2 = 0, ws = line.widgets; i2 < ws.length; ++i2) {\n var widget = ws[i2],\n node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n\n if (!widget.handleMouseEvents) {\n node.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n\n if (allowAbove && widget.above) {\n wrap.insertBefore(node, lineView.gutter || lineView.text);\n } else {\n wrap.appendChild(node);\n }\n\n signalLater(widget, \"redraw\");\n }\n }\n\n __name(insertLineWidgetsFor, \"insertLineWidgetsFor\");\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n\n node.style.width = width + \"px\";\n }\n\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n\n if (!widget.noHScroll) {\n node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n }\n }\n }\n\n __name(positionLineWidget, \"positionLineWidget\");\n\n function widgetHeight(widget) {\n if (widget.height != null) {\n return widget.height;\n }\n\n var cm = widget.doc.cm;\n\n if (!cm) {\n return 0;\n }\n\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n\n if (widget.coverGutter) {\n parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\";\n }\n\n if (widget.noHScroll) {\n parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\";\n }\n\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n\n return widget.height = widget.node.parentNode.offsetHeight;\n }\n\n __name(widgetHeight, \"widgetHeight\");\n\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\" || n.parentNode == display.sizer && n != display.mover) {\n return true;\n }\n }\n }\n\n __name(eventInWidget, \"eventInWidget\");\n\n function paddingTop(display) {\n return display.lineSpace.offsetTop;\n }\n\n __name(paddingTop, \"paddingTop\");\n\n function paddingVert(display) {\n return display.mover.offsetHeight - display.lineSpace.offsetHeight;\n }\n\n __name(paddingVert, \"paddingVert\");\n\n function paddingH(display) {\n if (display.cachedPaddingH) {\n return display.cachedPaddingH;\n }\n\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight)\n };\n\n if (!isNaN(data.left) && !isNaN(data.right)) {\n display.cachedPaddingH = data;\n }\n\n return data;\n }\n\n __name(paddingH, \"paddingH\");\n\n function scrollGap(cm) {\n return scrollerGap - cm.display.nativeBarWidth;\n }\n\n __name(scrollGap, \"scrollGap\");\n\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth;\n }\n\n __name(displayWidth, \"displayWidth\");\n\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight;\n }\n\n __name(displayHeight, \"displayHeight\");\n\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n\n for (var i2 = 0; i2 < rects.length - 1; i2++) {\n var cur = rects[i2],\n next = rects[i2 + 1];\n\n if (Math.abs(cur.bottom - next.bottom) > 2) {\n heights.push((cur.bottom + next.top) / 2 - rect.top);\n }\n }\n }\n\n heights.push(rect.bottom - rect.top);\n }\n }\n\n __name(ensureLineHeights, \"ensureLineHeights\");\n\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line) {\n return {\n map: lineView.measure.map,\n cache: lineView.measure.cache\n };\n }\n\n if (lineView.rest) {\n for (var i2 = 0; i2 < lineView.rest.length; i2++) {\n if (lineView.rest[i2] == line) {\n return {\n map: lineView.measure.maps[i2],\n cache: lineView.measure.caches[i2]\n };\n }\n }\n\n for (var i$12 = 0; i$12 < lineView.rest.length; i$12++) {\n if (lineNo(lineView.rest[i$12]) > lineN) {\n return {\n map: lineView.measure.maps[i$12],\n cache: lineView.measure.caches[i$12],\n before: true\n };\n }\n }\n }\n }\n\n __name(mapFromLineView, \"mapFromLineView\");\n\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view;\n }\n\n __name(updateExternalMeasurement, \"updateExternalMeasurement\");\n\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n }\n\n __name(measureChar, \"measureChar\");\n\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) {\n return cm.display.view[findViewIndex(cm, lineN)];\n }\n\n var ext = cm.display.externalMeasured;\n\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) {\n return ext;\n }\n }\n\n __name(findViewForLine, \"findViewForLine\");\n\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n\n if (!view) {\n view = updateExternalMeasurement(cm, line);\n }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line,\n view,\n rect: null,\n map: info.map,\n cache: info.cache,\n before: info.before,\n hasHeights: false\n };\n }\n\n __name(prepareMeasureForLine, \"prepareMeasureForLine\");\n\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) {\n ch = -1;\n }\n\n var key = ch + (bias || \"\"),\n found;\n\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect) {\n prepared.rect = prepared.view.text.getBoundingClientRect();\n }\n\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n\n found = measureCharInner(cm, prepared, ch, bias);\n\n if (!found.bogus) {\n prepared.cache[key] = found;\n }\n }\n\n return {\n left: found.left,\n right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom\n };\n }\n\n __name(measureCharPrepared, \"measureCharPrepared\");\n\n var nullRect = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n\n function nodeAndOffsetInLineMap(map2, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n\n for (var i2 = 0; i2 < map2.length; i2 += 3) {\n mStart = map2[i2];\n mEnd = map2[i2 + 1];\n\n if (ch < mStart) {\n start = 0;\n end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i2 == map2.length - 3 || ch == mEnd && map2[i2 + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n\n if (ch >= mEnd) {\n collapse = \"right\";\n }\n }\n\n if (start != null) {\n node = map2[i2 + 2];\n\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\")) {\n collapse = bias;\n }\n\n if (bias == \"left\" && start == 0) {\n while (i2 && map2[i2 - 2] == map2[i2 - 3] && map2[i2 - 1].insertLeft) {\n node = map2[(i2 -= 3) + 2];\n collapse = \"left\";\n }\n }\n\n if (bias == \"right\" && start == mEnd - mStart) {\n while (i2 < map2.length - 3 && map2[i2 + 3] == map2[i2 + 4] && !map2[i2 + 5].insertLeft) {\n node = map2[(i2 += 3) + 2];\n collapse = \"right\";\n }\n }\n\n break;\n }\n }\n\n return {\n node,\n start,\n end,\n collapse,\n coverStart: mStart,\n coverEnd: mEnd\n };\n }\n\n __name(nodeAndOffsetInLineMap, \"nodeAndOffsetInLineMap\");\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n\n if (bias == \"left\") {\n for (var i2 = 0; i2 < rects.length; i2++) {\n if ((rect = rects[i2]).left != rect.right) {\n break;\n }\n }\n } else {\n for (var i$12 = rects.length - 1; i$12 >= 0; i$12--) {\n if ((rect = rects[i$12]).left != rect.right) {\n break;\n }\n }\n }\n\n return rect;\n }\n\n __name(getUsefulRect, \"getUsefulRect\");\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node,\n start = place.start,\n end = place.end,\n collapse = place.collapse;\n var rect;\n\n if (node.nodeType == 3) {\n for (var i$12 = 0; i$12 < 4; i$12++) {\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) {\n --start;\n }\n\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) {\n ++end;\n }\n\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) {\n rect = node.parentNode.getBoundingClientRect();\n } else {\n rect = getUsefulRect(range(node, start, end).getClientRects(), bias);\n }\n\n if (rect.left || rect.right || start == 0) {\n break;\n }\n\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n\n if (ie && ie_version < 11) {\n rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n }\n } else {\n if (start > 0) {\n collapse = bias = \"right\";\n }\n\n var rects;\n\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) {\n rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n } else {\n rect = node.getBoundingClientRect();\n }\n }\n\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n\n if (rSpan) {\n rect = {\n left: rSpan.left,\n right: rSpan.left + charWidth(cm.display),\n top: rSpan.top,\n bottom: rSpan.bottom\n };\n } else {\n rect = nullRect;\n }\n }\n\n var rtop = rect.top - prepared.rect.top,\n rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i2 = 0;\n\n for (; i2 < heights.length - 1; i2++) {\n if (mid < heights[i2]) {\n break;\n }\n }\n\n var top = i2 ? heights[i2 - 1] : 0,\n bot = heights[i2];\n var result = {\n left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top,\n bottom: bot\n };\n\n if (!rect.left && !rect.right) {\n result.bogus = true;\n }\n\n if (!cm.options.singleCursorHeightPerLine) {\n result.rtop = rtop;\n result.rbottom = rbot;\n }\n\n return result;\n }\n\n __name(measureCharInner, \"measureCharInner\");\n\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) {\n return rect;\n }\n\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {\n left: rect.left * scaleX,\n right: rect.right * scaleX,\n top: rect.top * scaleY,\n bottom: rect.bottom * scaleY\n };\n }\n\n __name(maybeUpdateRectForZooming, \"maybeUpdateRectForZooming\");\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n\n if (lineView.rest) {\n for (var i2 = 0; i2 < lineView.rest.length; i2++) {\n lineView.measure.caches[i2] = {};\n }\n }\n }\n }\n\n __name(clearLineMeasurementCacheFor, \"clearLineMeasurementCacheFor\");\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n\n for (var i2 = 0; i2 < cm.display.view.length; i2++) {\n clearLineMeasurementCacheFor(cm.display.view[i2]);\n }\n }\n\n __name(clearLineMeasurementCache, \"clearLineMeasurementCache\");\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n\n if (!cm.options.lineWrapping) {\n cm.display.maxLineChanged = true;\n }\n\n cm.display.lineNumChars = null;\n }\n\n __name(clearCaches, \"clearCaches\");\n\n function pageScrollX() {\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft));\n }\n\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft;\n }\n\n __name(pageScrollX, \"pageScrollX\");\n\n function pageScrollY() {\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop));\n }\n\n return window.pageYOffset || (document.documentElement || document.body).scrollTop;\n }\n\n __name(pageScrollY, \"pageScrollY\");\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n\n if (widgets) {\n for (var i2 = 0; i2 < widgets.length; ++i2) {\n if (widgets[i2].above) {\n height += widgetHeight(widgets[i2]);\n }\n }\n }\n\n return height;\n }\n\n __name(widgetTopHeight, \"widgetTopHeight\");\n\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height;\n rect.bottom += height;\n }\n\n if (context == \"line\") {\n return rect;\n }\n\n if (!context) {\n context = \"local\";\n }\n\n var yOff = heightAtLine(lineObj);\n\n if (context == \"local\") {\n yOff += paddingTop(cm.display);\n } else {\n yOff -= cm.display.viewOffset;\n }\n\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff;\n rect.right += xOff;\n }\n\n rect.top += yOff;\n rect.bottom += yOff;\n return rect;\n }\n\n __name(intoCoordSystem, \"intoCoordSystem\");\n\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") {\n return coords;\n }\n\n var left = coords.left,\n top = coords.top;\n\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {\n left: left - lineSpaceBox.left,\n top: top - lineSpaceBox.top\n };\n }\n\n __name(fromCoordSystem, \"fromCoordSystem\");\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) {\n lineObj = getLine(cm.doc, pos.line);\n }\n\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\n }\n\n __name(charCoords, \"charCoords\");\n\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n function get(ch2, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch2, right ? \"right\" : \"left\", varHeight);\n\n if (right) {\n m.left = m.right;\n } else {\n m.right = m.left;\n }\n\n return intoCoordSystem(cm, lineObj, m, context);\n }\n\n __name(get, \"get\");\n\n var order = getOrder(lineObj, cm.doc.direction),\n ch = pos.ch,\n sticky = pos.sticky;\n\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n\n if (!order) {\n return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\");\n }\n\n function getBidi(ch2, partPos2, invert) {\n var part = order[partPos2],\n right = part.level == 1;\n return get(invert ? ch2 - 1 : ch2, right != invert);\n }\n\n __name(getBidi, \"getBidi\");\n\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n\n if (other != null) {\n val.other = getBidi(ch, other, sticky != \"before\");\n }\n\n return val;\n }\n\n __name(cursorCoords, \"cursorCoords\");\n\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n\n if (!cm.options.lineWrapping) {\n left = charWidth(cm.display) * pos.ch;\n }\n\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {\n left,\n right: left,\n top,\n bottom: top + lineObj.height\n };\n }\n\n __name(estimateCoords, \"estimateCoords\");\n\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n\n if (outside) {\n pos.outside = outside;\n }\n\n return pos;\n }\n\n __name(PosWithInfo, \"PosWithInfo\");\n\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n\n if (y < 0) {\n return PosWithInfo(doc.first, 0, null, -1, -1);\n }\n\n var lineN = lineAtHeight(doc, y),\n last = doc.first + doc.size - 1;\n\n if (lineN > last) {\n return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1);\n }\n\n if (x < 0) {\n x = 0;\n }\n\n var lineObj = getLine(doc, lineN);\n\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n\n if (!collapsed) {\n return found;\n }\n\n var rangeEnd = collapsed.find(1);\n\n if (rangeEnd.line == lineN) {\n return rangeEnd;\n }\n\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n __name(coordsChar, \"coordsChar\");\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y;\n }, end, 0);\n end = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch).top > y;\n }, begin, end);\n return {\n begin,\n end\n };\n }\n\n __name(wrappedLineExtent, \"wrappedLineExtent\");\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop);\n }\n\n __name(wrappedLineExtentChar, \"wrappedLineExtentChar\");\n\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x;\n }\n\n __name(boxIsAfter, \"boxIsAfter\");\n\n function coordsCharInner(cm, lineObj, lineNo2, x, y) {\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n var widgetHeight2 = widgetTopHeight(lineObj);\n var begin = 0,\n end = lineObj.text.length,\n ltr = true;\n var order = getOrder(lineObj, cm.doc.direction);\n\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)(cm, lineObj, lineNo2, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n var chAround = null,\n boxAround = null;\n var ch = findFirst(function (ch2) {\n var box = measureCharPrepared(cm, preparedMeasure, ch2);\n box.top += widgetHeight2;\n box.bottom += widgetHeight2;\n\n if (!boxIsAfter(box, x, y, false)) {\n return false;\n }\n\n if (box.top <= y && box.left <= x) {\n chAround = ch2;\n boxAround = box;\n }\n\n return true;\n }, begin, end);\n var baseX,\n sticky,\n outside = false;\n\n if (boxAround) {\n var atLeft = x - boxAround.left < boxAround.right - x,\n atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n if (!ltr && (ch == end || ch == begin)) {\n ch++;\n }\n\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight2 <= y == ltr ? \"after\" : \"before\";\n var coords = cursorCoords(cm, Pos(lineNo2, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo2, ch, sticky, outside, x - baseX);\n }\n\n __name(coordsCharInner, \"coordsCharInner\");\n\n function coordsBidiPart(cm, lineObj, lineNo2, preparedMeasure, order, x, y) {\n var index = findFirst(function (i2) {\n var part2 = order[i2],\n ltr2 = part2.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo2, ltr2 ? part2.to : part2.from, ltr2 ? \"before\" : \"after\"), \"line\", lineObj, preparedMeasure), x, y, true);\n }, 0, order.length - 1);\n var part = order[index];\n\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo2, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"), \"line\", lineObj, preparedMeasure);\n\n if (boxIsAfter(start, x, y, true) && start.top > y) {\n part = order[index - 1];\n }\n }\n\n return part;\n }\n\n __name(coordsBidiPart, \"coordsBidiPart\");\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n\n if (/\\s/.test(lineObj.text.charAt(end - 1))) {\n end--;\n }\n\n var part = null,\n closestDist = null;\n\n for (var i2 = 0; i2 < order.length; i2++) {\n var p = order[i2];\n\n if (p.from >= end || p.to <= begin) {\n continue;\n }\n\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n\n if (!part) {\n part = order[order.length - 1];\n }\n\n if (part.from < begin) {\n part = {\n from: begin,\n to: part.to,\n level: part.level\n };\n }\n\n if (part.to > end) {\n part = {\n from: part.from,\n to: end,\n level: part.level\n };\n }\n\n return part;\n }\n\n __name(coordsBidiPartWrapped, \"coordsBidiPartWrapped\");\n\n var measureText;\n\n function textHeight(display) {\n if (display.cachedTextHeight != null) {\n return display.cachedTextHeight;\n }\n\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n\n for (var i2 = 0; i2 < 49; ++i2) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n\n if (height > 3) {\n display.cachedTextHeight = height;\n }\n\n removeChildren(display.measure);\n return height || 1;\n }\n\n __name(textHeight, \"textHeight\");\n\n function charWidth(display) {\n if (display.cachedCharWidth != null) {\n return display.cachedCharWidth;\n }\n\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(),\n width = (rect.right - rect.left) / 10;\n\n if (width > 2) {\n display.cachedCharWidth = width;\n }\n\n return width || 10;\n }\n\n __name(charWidth, \"charWidth\");\n\n function getDimensions(cm) {\n var d = cm.display,\n left = {},\n width = {};\n var gutterLeft = d.gutters.clientLeft;\n\n for (var n = d.gutters.firstChild, i2 = 0; n; n = n.nextSibling, ++i2) {\n var id = cm.display.gutterSpecs[i2].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n\n return {\n fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth\n };\n }\n\n __name(getDimensions, \"getDimensions\");\n\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\n }\n\n __name(compensateForHScroll, \"compensateForHScroll\");\n\n function estimateHeight(cm) {\n var th = textHeight(cm.display),\n wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) {\n return 0;\n }\n\n var widgetsHeight = 0;\n\n if (line.widgets) {\n for (var i2 = 0; i2 < line.widgets.length; i2++) {\n if (line.widgets[i2].height) {\n widgetsHeight += line.widgets[i2].height;\n }\n }\n }\n\n if (wrapping) {\n return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n } else {\n return widgetsHeight + th;\n }\n };\n }\n\n __name(estimateHeight, \"estimateHeight\");\n\n function estimateLineHeights(cm) {\n var doc = cm.doc,\n est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n });\n }\n\n __name(estimateLineHeights, \"estimateLineHeights\");\n\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") {\n return null;\n }\n\n var x,\n y,\n space = display.lineSpace.getBoundingClientRect();\n\n try {\n x = e.clientX - space.left;\n y = e.clientY - space.top;\n } catch (e$1) {\n return null;\n }\n\n var coords = coordsChar(cm, x, y),\n line;\n\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n\n return coords;\n }\n\n __name(posFromMouse, \"posFromMouse\");\n\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) {\n return null;\n }\n\n n -= cm.display.viewFrom;\n\n if (n < 0) {\n return null;\n }\n\n var view = cm.display.view;\n\n for (var i2 = 0; i2 < view.length; i2++) {\n n -= view[i2].size;\n\n if (n < 0) {\n return i2;\n }\n }\n }\n\n __name(findViewIndex, \"findViewIndex\");\n\n function regChange(cm, from, to, lendiff) {\n if (from == null) {\n from = cm.doc.first;\n }\n\n if (to == null) {\n to = cm.doc.first + cm.doc.size;\n }\n\n if (!lendiff) {\n lendiff = 0;\n }\n\n var display = cm.display;\n\n if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) {\n display.updateLineNumbers = from;\n }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) {\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) {\n resetView(cm);\n }\n } else if (to <= display.viewFrom) {\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) {\n resetView(cm);\n } else if (from <= display.viewFrom) {\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) {\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else {\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index).concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)).concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n\n if (ext) {\n if (to < ext.lineN) {\n ext.lineN += lendiff;\n } else if (from < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n }\n }\n\n __name(regChange, \"regChange\");\n\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display,\n ext = cm.display.externalMeasured;\n\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n\n if (line < display.viewFrom || line >= display.viewTo) {\n return;\n }\n\n var lineView = display.view[findViewIndex(cm, line)];\n\n if (lineView.node == null) {\n return;\n }\n\n var arr = lineView.changes || (lineView.changes = []);\n\n if (indexOf(arr, type) == -1) {\n arr.push(type);\n }\n }\n\n __name(regLineChange, \"regLineChange\");\n\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n __name(resetView, \"resetView\");\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN),\n diff,\n view = cm.display.view;\n\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) {\n return {\n index,\n lineN: newN\n };\n }\n\n var n = cm.display.viewFrom;\n\n for (var i2 = 0; i2 < index; i2++) {\n n += view[i2].size;\n }\n\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) {\n return null;\n }\n\n diff = n + view[index].size - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n\n oldN += diff;\n newN += diff;\n }\n\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) {\n return null;\n }\n\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n\n return {\n index,\n lineN: newN\n };\n }\n\n __name(viewCuttingPoint, \"viewCuttingPoint\");\n\n function adjustView(cm, from, to) {\n var display = cm.display,\n view = display.view;\n\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from) {\n display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n } else if (display.viewFrom < from) {\n display.view = display.view.slice(findViewIndex(cm, from));\n }\n\n display.viewFrom = from;\n\n if (display.viewTo < to) {\n display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n } else if (display.viewTo > to) {\n display.view = display.view.slice(0, findViewIndex(cm, to));\n }\n }\n\n display.viewTo = to;\n }\n\n __name(adjustView, \"adjustView\");\n\n function countDirtyView(cm) {\n var view = cm.display.view,\n dirty = 0;\n\n for (var i2 = 0; i2 < view.length; i2++) {\n var lineView = view[i2];\n\n if (!lineView.hidden && (!lineView.node || lineView.changes)) {\n ++dirty;\n }\n }\n\n return dirty;\n }\n\n __name(countDirtyView, \"countDirtyView\");\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n __name(updateSelection, \"updateSelection\");\n\n function prepareSelection(cm, primary) {\n if (primary === void 0) primary = true;\n var doc = cm.doc,\n result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n var customCursor = cm.options.$customCursor;\n\n if (customCursor) {\n primary = true;\n }\n\n for (var i2 = 0; i2 < doc.sel.ranges.length; i2++) {\n if (!primary && i2 == doc.sel.primIndex) {\n continue;\n }\n\n var range2 = doc.sel.ranges[i2];\n\n if (range2.from().line >= cm.display.viewTo || range2.to().line < cm.display.viewFrom) {\n continue;\n }\n\n var collapsed = range2.empty();\n\n if (customCursor) {\n var head = customCursor(cm, range2);\n\n if (head) {\n drawSelectionCursor(cm, head, curFragment);\n }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range2.head, curFragment);\n }\n\n if (!collapsed) {\n drawSelectionRange(cm, range2, selFragment);\n }\n }\n\n return result;\n }\n\n __name(prepareSelection, \"prepareSelection\");\n\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n var cursor = output.appendChild(elt(\"div\", \"\\xA0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n var otherCursor = output.appendChild(elt(\"div\", \"\\xA0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * 0.85 + \"px\";\n }\n }\n\n __name(drawSelectionCursor, \"drawSelectionCursor\");\n\n function cmpCoords(a, b) {\n return a.top - b.top || a.left - b.left;\n }\n\n __name(cmpCoords, \"cmpCoords\");\n\n function drawSelectionRange(cm, range2, output) {\n var display = cm.display,\n doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display),\n leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) {\n top = 0;\n }\n\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", \"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\"));\n }\n\n __name(add, \"add\");\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias);\n }\n\n __name(coords, \"coords\");\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop2 = dir == \"ltr\" == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop2)[prop2];\n }\n\n __name(wrapX, \"wrapX\");\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i2) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n var openStart = fromArg == null && from == 0,\n openEnd = toArg == null && to == lineLen;\n var first = i2 == 0,\n last = !order || i2 == order.length - 1;\n\n if (toPos.top - fromPos.top <= 3) {\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else {\n var topLeft, topRight, botLeft, botRight;\n\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n\n if (fromPos.bottom < toPos.top) {\n add(leftSide, fromPos.bottom, null, toPos.top);\n }\n\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) {\n start = fromPos;\n }\n\n if (cmpCoords(toPos, start) < 0) {\n start = toPos;\n }\n\n if (!end || cmpCoords(fromPos, end) < 0) {\n end = fromPos;\n }\n\n if (cmpCoords(toPos, end) < 0) {\n end = toPos;\n }\n });\n return {\n start,\n end\n };\n }\n\n __name(drawForLine, \"drawForLine\");\n\n var sFrom = range2.from(),\n sTo = range2.to();\n\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line),\n toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n\n if (leftEnd.bottom < rightStart.top) {\n add(leftSide, leftEnd.bottom, null, rightStart.top);\n }\n }\n\n output.appendChild(fragment);\n }\n\n __name(drawSelectionRange, \"drawSelectionRange\");\n\n function restartBlink(cm) {\n if (!cm.state.focused) {\n return;\n }\n\n var display = cm.display;\n clearInterval(display.blinker);\n var on2 = true;\n display.cursorDiv.style.visibility = \"\";\n\n if (cm.options.cursorBlinkRate > 0) {\n display.blinker = setInterval(function () {\n if (!cm.hasFocus()) {\n onBlur(cm);\n }\n\n display.cursorDiv.style.visibility = (on2 = !on2) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate);\n } else if (cm.options.cursorBlinkRate < 0) {\n display.cursorDiv.style.visibility = \"hidden\";\n }\n }\n\n __name(restartBlink, \"restartBlink\");\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n\n if (!cm.state.focused) {\n onFocus(cm);\n }\n }\n }\n\n __name(ensureFocus, \"ensureFocus\");\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () {\n if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n\n if (cm.state.focused) {\n onBlur(cm);\n }\n }\n }, 100);\n }\n\n __name(delayBlurEvent, \"delayBlurEvent\");\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) {\n cm.state.delayingBlurEvent = false;\n }\n\n if (cm.options.readOnly == \"nocursor\") {\n return;\n }\n\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n\n if (webkit) {\n setTimeout(function () {\n return cm.display.input.reset(true);\n }, 20);\n }\n }\n\n cm.display.input.receivedFocus();\n }\n\n restartBlink(cm);\n }\n\n __name(onFocus, \"onFocus\");\n\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) {\n return;\n }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n\n clearInterval(cm.display.blinker);\n setTimeout(function () {\n if (!cm.state.focused) {\n cm.display.shift = false;\n }\n }, 150);\n }\n\n __name(onBlur, \"onBlur\");\n\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n\n for (var i2 = 0; i2 < display.view.length; i2++) {\n var cur = display.view[i2],\n wrapping = cm.options.lineWrapping;\n var height = void 0,\n width = 0;\n\n if (cur.hidden) {\n continue;\n }\n\n oldHeight += cur.line.height;\n\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n\n if (!wrapping && cur.text.firstChild) {\n width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1;\n }\n }\n\n var diff = cur.line.height - height;\n\n if (diff > 5e-3 || diff < -5e-3) {\n if (oldHeight < viewTop) {\n mustScroll -= diff;\n }\n\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n\n if (cur.rest) {\n for (var j = 0; j < cur.rest.length; j++) {\n updateWidgetHeight(cur.rest[j]);\n }\n }\n }\n\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n\n if (Math.abs(mustScroll) > 2) {\n display.scroller.scrollTop += mustScroll;\n }\n }\n\n __name(updateHeightsInViewport, \"updateHeightsInViewport\");\n\n function updateWidgetHeight(line) {\n if (line.widgets) {\n for (var i2 = 0; i2 < line.widgets.length; ++i2) {\n var w = line.widgets[i2],\n parent = w.node.parentNode;\n\n if (parent) {\n w.height = parent.offsetHeight;\n }\n }\n }\n }\n\n __name(updateWidgetHeight, \"updateWidgetHeight\");\n\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n var from = lineAtHeight(doc, top),\n to = lineAtHeight(doc, bottom);\n\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line,\n ensureTo = viewport.ensure.to.line;\n\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n\n return {\n from,\n to: Math.max(to, from + 1)\n };\n }\n\n __name(visibleLines, \"visibleLines\");\n\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) {\n return;\n }\n\n var display = cm.display,\n box = display.sizer.getBoundingClientRect(),\n doScroll = null;\n\n if (rect.top + box.top < 0) {\n doScroll = true;\n } else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) {\n doScroll = false;\n }\n\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200B\", null, \"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + rect.left + \"px; width: \" + Math.max(2, rect.right - rect.left) + \"px;\");\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n __name(maybeScrollWindow, \"maybeScrollWindow\");\n\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) {\n margin = 0;\n }\n\n var rect;\n\n if (!cm.options.lineWrapping && pos == end) {\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {\n left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin\n };\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop,\n startLeft = cm.doc.scrollLeft;\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) {\n changed = true;\n }\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) {\n changed = true;\n }\n }\n\n if (!changed) {\n break;\n }\n }\n\n return rect;\n }\n\n __name(scrollPosIntoView, \"scrollPosIntoView\");\n\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n }\n }\n\n __name(scrollIntoView, \"scrollIntoView\");\n\n function calculateScrollPos(cm, rect) {\n var display = cm.display,\n snapMargin = textHeight(cm.display);\n\n if (rect.top < 0) {\n rect.top = 0;\n }\n\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen2 = displayHeight(cm),\n result = {};\n\n if (rect.bottom - rect.top > screen2) {\n rect.bottom = rect.top + screen2;\n }\n\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin,\n atBottom = rect.bottom > docBottom - snapMargin;\n\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen2) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen2);\n\n if (newTop != screentop) {\n result.scrollTop = newTop;\n }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n\n if (tooWide) {\n rect.right = rect.left + screenw;\n }\n\n if (rect.left < 10) {\n result.scrollLeft = 0;\n } else if (rect.left < screenleft) {\n result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10));\n } else if (rect.right > screenw + screenleft - 3) {\n result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw;\n }\n\n return result;\n }\n\n __name(calculateScrollPos, \"calculateScrollPos\");\n\n function addToScrollTop(cm, top) {\n if (top == null) {\n return;\n }\n\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n __name(addToScrollTop, \"addToScrollTop\");\n\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {\n from: cur,\n to: cur,\n margin: cm.options.cursorScrollMargin\n };\n }\n\n __name(ensureCursorVisible, \"ensureCursorVisible\");\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) {\n resolveScrollToPos(cm);\n }\n\n if (x != null) {\n cm.curOp.scrollLeft = x;\n }\n\n if (y != null) {\n cm.curOp.scrollTop = y;\n }\n }\n\n __name(scrollToCoords, \"scrollToCoords\");\n\n function scrollToRange(cm, range2) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range2;\n }\n\n __name(scrollToRange, \"scrollToRange\");\n\n function resolveScrollToPos(cm) {\n var range2 = cm.curOp.scrollToPos;\n\n if (range2) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range2.from),\n to = estimateCoords(cm, range2.to);\n scrollToCoordsRange(cm, from, to, range2.margin);\n }\n }\n\n __name(resolveScrollToPos, \"resolveScrollToPos\");\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n __name(scrollToCoordsRange, \"scrollToCoordsRange\");\n\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) {\n return;\n }\n\n if (!gecko) {\n updateDisplaySimple(cm, {\n top: val\n });\n }\n\n setScrollTop(cm, val, true);\n\n if (gecko) {\n updateDisplaySimple(cm);\n }\n\n startWorker(cm, 100);\n }\n\n __name(updateScrollTop, \"updateScrollTop\");\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n\n if (cm.display.scroller.scrollTop == val && !forceScroll) {\n return;\n }\n\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n\n if (cm.display.scroller.scrollTop != val) {\n cm.display.scroller.scrollTop = val;\n }\n }\n\n __name(setScrollTop, \"setScrollTop\");\n\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) {\n return;\n }\n\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n\n if (cm.display.scroller.scrollLeft != val) {\n cm.display.scroller.scrollLeft = val;\n }\n\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n __name(setScrollLeft, \"setScrollLeft\");\n\n function measureForScrollbars(cm) {\n var d = cm.display,\n gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth,\n clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n };\n }\n\n __name(measureForScrollbars, \"measureForScrollbars\");\n\n var NativeScrollbars = /* @__PURE__ */__name(function (place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert);\n place(horiz);\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) {\n scroll(vert.scrollTop, \"vertical\");\n }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) {\n scroll(horiz.scrollLeft, \"horizontal\");\n }\n });\n this.checkedZeroWidth = false;\n\n if (ie && ie_version < 8) {\n this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\";\n }\n }, \"NativeScrollbars\");\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n this.vert.firstChild.style.height = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width = Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) {\n this.zeroWidthHack();\n }\n\n this.checkedZeroWidth = true;\n }\n\n return {\n right: needsV ? sWidth : 0,\n bottom: needsH ? sWidth : 0\n };\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) {\n this.horiz.scrollLeft = pos;\n }\n\n if (this.disableHoriz) {\n this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\");\n }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) {\n this.vert.scrollTop = pos;\n }\n\n if (this.disableVert) {\n this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\");\n }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed();\n this.disableVert = new Delayed();\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n\n function maybeDisable() {\n var box = bar.getBoundingClientRect();\n var elt2 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n\n if (elt2 != bar) {\n bar.style.pointerEvents = \"none\";\n } else {\n delay.set(1e3, maybeDisable);\n }\n }\n\n __name(maybeDisable, \"maybeDisable\");\n\n delay.set(1e3, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = /* @__PURE__ */__name(function () {}, \"NullScrollbars\");\n\n NullScrollbars.prototype.update = function () {\n return {\n bottom: 0,\n right: 0\n };\n };\n\n NullScrollbars.prototype.setScrollLeft = function () {};\n\n NullScrollbars.prototype.setScrollTop = function () {};\n\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) {\n measure = measureForScrollbars(cm);\n }\n\n var startWidth = cm.display.barWidth,\n startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n\n for (var i2 = 0; i2 < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i2++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping) {\n updateHeightsInViewport(cm);\n }\n\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth;\n startHeight = cm.display.barHeight;\n }\n }\n\n __name(updateScrollbars, \"updateScrollbars\");\n\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else {\n d.scrollbarFiller.style.display = \"\";\n }\n\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else {\n d.gutterFiller.style.display = \"\";\n }\n }\n\n __name(updateScrollbarsInner, \"updateScrollbarsInner\");\n\n var scrollbarModel = {\n \"native\": NativeScrollbars,\n \"null\": NullScrollbars\n };\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n\n if (cm.display.scrollbars.addClass) {\n rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n on(node, \"mousedown\", function () {\n if (cm.state.focused) {\n setTimeout(function () {\n return cm.display.input.focus();\n }, 0);\n }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") {\n setScrollLeft(cm, pos);\n } else {\n updateScrollTop(cm, pos);\n }\n }, cm);\n\n if (cm.display.scrollbars.addClass) {\n addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n }\n\n __name(initScrollbars, \"initScrollbars\");\n\n var nextOpId = 0;\n\n function startOperation(cm) {\n cm.curOp = {\n cm,\n viewChanged: false,\n startHeight: cm.doc.height,\n forceUpdate: false,\n updateInput: 0,\n typing: false,\n changeObjs: null,\n cursorActivityHandlers: null,\n cursorActivityCalled: 0,\n selectionChanged: false,\n updateMaxLine: false,\n scrollLeft: null,\n scrollTop: null,\n scrollToPos: null,\n focus: false,\n id: ++nextOpId,\n markArrays: null\n };\n pushOperation(cm.curOp);\n }\n\n __name(startOperation, \"startOperation\");\n\n function endOperation(cm) {\n var op = cm.curOp;\n\n if (op) {\n finishOperation(op, function (group) {\n for (var i2 = 0; i2 < group.ops.length; i2++) {\n group.ops[i2].cm.curOp = null;\n }\n\n endOperations(group);\n });\n }\n }\n\n __name(endOperation, \"endOperation\");\n\n function endOperations(group) {\n var ops = group.ops;\n\n for (var i2 = 0; i2 < ops.length; i2++) {\n endOperation_R1(ops[i2]);\n }\n\n for (var i$12 = 0; i$12 < ops.length; i$12++) {\n endOperation_W1(ops[i$12]);\n }\n\n for (var i$22 = 0; i$22 < ops.length; i$22++) {\n endOperation_R2(ops[i$22]);\n }\n\n for (var i$3 = 0; i$3 < ops.length; i$3++) {\n endOperation_W2(ops[i$3]);\n }\n\n for (var i$4 = 0; i$4 < ops.length; i$4++) {\n endOperation_finish(ops[i$4]);\n }\n }\n\n __name(endOperations, \"endOperations\");\n\n function endOperation_R1(op) {\n var cm = op.cm,\n display = cm.display;\n maybeClipScrollbars(cm);\n\n if (op.updateMaxLine) {\n findMaxLine(cm);\n }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && {\n top: op.scrollTop,\n ensure: op.scrollToPos\n }, op.forceUpdate);\n }\n\n __name(endOperation_R1, \"endOperation_R1\");\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n __name(endOperation_W1, \"endOperation_W1\");\n\n function endOperation_R2(op) {\n var cm = op.cm,\n display = cm.display;\n\n if (op.updatedDisplay) {\n updateHeightsInViewport(cm);\n }\n\n op.barMeasure = measureForScrollbars(cm);\n\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth = Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged) {\n op.preparedSelection = display.input.prepareSelection();\n }\n }\n\n __name(endOperation_R2, \"endOperation_R2\");\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n\n if (op.maxScrollLeft < cm.doc.scrollLeft) {\n setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n }\n\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n\n if (op.preparedSelection) {\n cm.display.input.showSelection(op.preparedSelection, takeFocus);\n }\n\n if (op.updatedDisplay || op.startHeight != cm.doc.height) {\n updateScrollbars(cm, op.barMeasure);\n }\n\n if (op.updatedDisplay) {\n setDocumentHeight(cm, op.barMeasure);\n }\n\n if (op.selectionChanged) {\n restartBlink(cm);\n }\n\n if (cm.state.focused && op.updateInput) {\n cm.display.input.reset(op.typing);\n }\n\n if (takeFocus) {\n ensureFocus(op.cm);\n }\n }\n\n __name(endOperation_W2, \"endOperation_W2\");\n\n function endOperation_finish(op) {\n var cm = op.cm,\n display = cm.display,\n doc = cm.doc;\n\n if (op.updatedDisplay) {\n postUpdateDisplay(cm, op.update);\n }\n\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) {\n display.wheelStartX = display.wheelStartY = null;\n }\n\n if (op.scrollTop != null) {\n setScrollTop(cm, op.scrollTop, op.forceScroll);\n }\n\n if (op.scrollLeft != null) {\n setScrollLeft(cm, op.scrollLeft, true, true);\n }\n\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n var hidden = op.maybeHiddenMarkers,\n unhidden = op.maybeUnhiddenMarkers;\n\n if (hidden) {\n for (var i2 = 0; i2 < hidden.length; ++i2) {\n if (!hidden[i2].lines.length) {\n signal(hidden[i2], \"hide\");\n }\n }\n }\n\n if (unhidden) {\n for (var i$12 = 0; i$12 < unhidden.length; ++i$12) {\n if (unhidden[i$12].lines.length) {\n signal(unhidden[i$12], \"unhide\");\n }\n }\n }\n\n if (display.wrapper.offsetHeight) {\n doc.scrollTop = cm.display.scroller.scrollTop;\n }\n\n if (op.changeObjs) {\n signal(cm, \"changes\", cm, op.changeObjs);\n }\n\n if (op.update) {\n op.update.finish();\n }\n }\n\n __name(endOperation_finish, \"endOperation_finish\");\n\n function runInOp(cm, f) {\n if (cm.curOp) {\n return f();\n }\n\n startOperation(cm);\n\n try {\n return f();\n } finally {\n endOperation(cm);\n }\n }\n\n __name(runInOp, \"runInOp\");\n\n function operation(cm, f) {\n return function () {\n if (cm.curOp) {\n return f.apply(cm, arguments);\n }\n\n startOperation(cm);\n\n try {\n return f.apply(cm, arguments);\n } finally {\n endOperation(cm);\n }\n };\n }\n\n __name(operation, \"operation\");\n\n function methodOp(f) {\n return function () {\n if (this.curOp) {\n return f.apply(this, arguments);\n }\n\n startOperation(this);\n\n try {\n return f.apply(this, arguments);\n } finally {\n endOperation(this);\n }\n };\n }\n\n __name(methodOp, \"methodOp\");\n\n function docMethodOp(f) {\n return function () {\n var cm = this.cm;\n\n if (!cm || cm.curOp) {\n return f.apply(this, arguments);\n }\n\n startOperation(cm);\n\n try {\n return f.apply(this, arguments);\n } finally {\n endOperation(cm);\n }\n };\n }\n\n __name(docMethodOp, \"docMethodOp\");\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo) {\n cm.state.highlight.set(time, bind(highlightWorker, cm));\n }\n }\n\n __name(startWorker, \"startWorker\");\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n\n if (doc.highlightFrontier >= cm.display.viewTo) {\n return;\n }\n\n var end = +new Date() + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) {\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n\n if (resetState) {\n context.state = resetState;\n }\n\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses,\n newCls = highlighted.classes;\n\n if (newCls) {\n line.styleClasses = newCls;\n } else if (oldCls) {\n line.styleClasses = null;\n }\n\n var ischange = !oldStyles || oldStyles.length != line.styles.length || oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n\n for (var i2 = 0; !ischange && i2 < oldStyles.length; ++i2) {\n ischange = oldStyles[i2] != line.styles[i2];\n }\n\n if (ischange) {\n changedLines.push(context.line);\n }\n\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength) {\n processLine(cm, line.text, context);\n }\n\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n\n if (+new Date() > end) {\n startWorker(cm, cm.options.workDelay);\n return true;\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n\n if (changedLines.length) {\n runInOp(cm, function () {\n for (var i2 = 0; i2 < changedLines.length; i2++) {\n regLineChange(cm, changedLines[i2], \"text\");\n }\n });\n }\n }\n\n __name(highlightWorker, \"highlightWorker\");\n\n var DisplayUpdate = /* @__PURE__ */__name(function (cm, viewport, force) {\n var display = cm.display;\n this.viewport = viewport;\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n }, \"DisplayUpdate\");\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type)) {\n this.events.push(arguments);\n }\n };\n\n DisplayUpdate.prototype.finish = function () {\n for (var i2 = 0; i2 < this.events.length; i2++) {\n signal.apply(null, this.events[i2]);\n }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n __name(maybeClipScrollbars, \"maybeClipScrollbars\");\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) {\n return null;\n }\n\n var active = activeElt();\n\n if (!active || !contains(cm.display.lineDiv, active)) {\n return null;\n }\n\n var result = {\n activeElt: active\n };\n\n if (window.getSelection) {\n var sel = window.getSelection();\n\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n\n return result;\n }\n\n __name(selectionSnapshot, \"selectionSnapshot\");\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) {\n return;\n }\n\n snapshot.activeElt.focus();\n\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) && snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(),\n range2 = document.createRange();\n range2.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range2.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range2);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n __name(restoreSelection, \"restoreSelection\");\n\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display,\n doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false;\n }\n\n if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) {\n return false;\n }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n\n if (display.viewFrom < from && from - display.viewFrom < 20) {\n from = Math.max(doc.first, display.viewFrom);\n }\n\n if (display.viewTo > to && display.viewTo - to < 20) {\n to = Math.min(end, display.viewTo);\n }\n\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo || display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n cm.display.mover.style.top = display.viewOffset + \"px\";\n var toUpdate = countDirtyView(cm);\n\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) {\n return false;\n }\n\n var selSnapshot = selectionSnapshot(cm);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"none\";\n }\n\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"\";\n }\n\n display.renderedView = display.view;\n restoreSelection(selSnapshot);\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n return true;\n }\n\n __name(updateDisplayIfNeeded, \"updateDisplayIfNeeded\");\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n if (viewport && viewport.top != null) {\n viewport = {\n top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)\n };\n }\n\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) {\n break;\n }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n\n if (!updateDisplayIfNeeded(cm, update)) {\n break;\n }\n\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom;\n cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n __name(postUpdateDisplay, \"postUpdateDisplay\");\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n __name(updateDisplaySimple, \"updateDisplaySimple\");\n\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display,\n lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv,\n cur = container.firstChild;\n\n function rm(node2) {\n var next = node2.nextSibling;\n\n if (webkit && mac && cm.display.currentWheelTarget == node2) {\n node2.style.display = \"none\";\n } else {\n node2.parentNode.removeChild(node2);\n }\n\n return next;\n }\n\n __name(rm, \"rm\");\n\n var view = display.view,\n lineN = display.viewFrom;\n\n for (var i2 = 0; i2 < view.length; i2++) {\n var lineView = view[i2];\n if (lineView.hidden) ;else if (!lineView.node || lineView.node.parentNode != container) {\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else {\n while (cur != lineView.node) {\n cur = rm(cur);\n }\n\n var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber;\n\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) {\n updateNumber = false;\n }\n\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n\n while (cur) {\n cur = rm(cur);\n }\n }\n\n __name(patchDisplay, \"patchDisplay\");\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n signalLater(display, \"gutterChanged\", display);\n }\n\n __name(updateGutterSpace, \"updateGutterSpace\");\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = measure.docHeight + cm.display.barHeight + scrollGap(cm) + \"px\";\n }\n\n __name(setDocumentHeight, \"setDocumentHeight\");\n\n function alignHorizontally(cm) {\n var display = cm.display,\n view = display.view;\n\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) {\n return;\n }\n\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth,\n left = comp + \"px\";\n\n for (var i2 = 0; i2 < view.length; i2++) {\n if (!view[i2].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i2].gutter) {\n view[i2].gutter.style.left = left;\n }\n\n if (view[i2].gutterBackground) {\n view[i2].gutterBackground.style.left = left;\n }\n }\n\n var align = view[i2].alignable;\n\n if (align) {\n for (var j = 0; j < align.length; j++) {\n align[j].style.left = left;\n }\n }\n }\n }\n\n if (cm.options.fixedGutter) {\n display.gutters.style.left = comp + gutterW + \"px\";\n }\n }\n\n __name(alignHorizontally, \"alignHorizontally\");\n\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) {\n return false;\n }\n\n var doc = cm.doc,\n last = lineNumberFor(cm.options, doc.first + doc.size - 1),\n display = cm.display;\n\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)], \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth,\n padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true;\n }\n\n return false;\n }\n\n __name(maybeUpdateLineNumberWidth, \"maybeUpdateLineNumberWidth\");\n\n function getGutters(gutters, lineNumbers) {\n var result = [],\n sawLineNumbers = false;\n\n for (var i2 = 0; i2 < gutters.length; i2++) {\n var name = gutters[i2],\n style = null;\n\n if (typeof name != \"string\") {\n style = name.style;\n name = name.className;\n }\n\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) {\n continue;\n } else {\n sawLineNumbers = true;\n }\n }\n\n result.push({\n className: name,\n style\n });\n }\n\n if (lineNumbers && !sawLineNumbers) {\n result.push({\n className: \"CodeMirror-linenumbers\",\n style: null\n });\n }\n\n return result;\n }\n\n __name(getGutters, \"getGutters\");\n\n function renderGutters(display) {\n var gutters = display.gutters,\n specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n\n for (var i2 = 0; i2 < specs.length; ++i2) {\n var ref = specs[i2];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n\n if (style) {\n gElt.style.cssText = style;\n }\n\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n __name(renderGutters, \"renderGutters\");\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n __name(updateGutters, \"updateGutters\");\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n d.wrapper.setAttribute(\"translate\", \"no\");\n\n if (ie && ie_version < 8) {\n d.gutters.style.zIndex = -1;\n d.scroller.style.paddingRight = 0;\n }\n\n if (!webkit && !(gecko && mobile)) {\n d.scroller.draggable = true;\n }\n\n if (place) {\n if (place.appendChild) {\n place.appendChild(d.wrapper);\n } else {\n place(d.wrapper);\n }\n }\n\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n d.view = [];\n d.renderedView = null;\n d.externalMeasured = null;\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n d.alignWidgets = false;\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n d.shift = false;\n d.selForContextMenu = null;\n d.activeTouch = null;\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n input.init(d);\n }\n\n __name(Display, \"Display\");\n\n var wheelSamples = 0,\n wheelPixelsPerUnit = null;\n\n if (ie) {\n wheelPixelsPerUnit = -0.53;\n } else if (gecko) {\n wheelPixelsPerUnit = 15;\n } else if (chrome) {\n wheelPixelsPerUnit = -0.7;\n } else if (safari) {\n wheelPixelsPerUnit = -1 / 3;\n }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX,\n dy = e.wheelDeltaY;\n\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) {\n dx = e.detail;\n }\n\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) {\n dy = e.detail;\n } else if (dy == null) {\n dy = e.wheelDelta;\n }\n\n return {\n x: dx,\n y: dy\n };\n }\n\n __name(wheelEventDelta, \"wheelEventDelta\");\n\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta;\n }\n\n __name(wheelEventPixels, \"wheelEventPixels\");\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e),\n dx = delta.x,\n dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display,\n scroll = display.scroller;\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n\n if (!(dx && canScrollX || dy && canScrollY)) {\n return;\n }\n\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i2 = 0; i2 < view.length; i2++) {\n if (view[i2].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer;\n }\n }\n }\n }\n\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY) {\n updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit));\n }\n\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n\n if (!dy || dy && canScrollY) {\n e_preventDefault(e);\n }\n\n display.wheelStartX = null;\n return;\n }\n\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop,\n bot = top + display.wrapper.clientHeight;\n\n if (pixels < 0) {\n top = Math.max(0, top + pixels - 50);\n } else {\n bot = Math.min(cm.doc.height, bot + pixels + 50);\n }\n\n updateDisplaySimple(cm, {\n top,\n bottom: bot\n });\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft;\n display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx;\n display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) {\n return;\n }\n\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = movedY && display.wheelDY && movedY / display.wheelDY || movedX && display.wheelDX && movedX / display.wheelDX;\n display.wheelStartX = display.wheelStartY = null;\n\n if (!sample) {\n return;\n }\n\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx;\n display.wheelDY += dy;\n }\n }\n }\n\n __name(onScrollWheel, \"onScrollWheel\");\n\n var Selection = /* @__PURE__ */__name(function (ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n }, \"Selection\");\n\n Selection.prototype.primary = function () {\n return this.ranges[this.primIndex];\n };\n\n Selection.prototype.equals = function (other) {\n if (other == this) {\n return true;\n }\n\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) {\n return false;\n }\n\n for (var i2 = 0; i2 < this.ranges.length; i2++) {\n var here = this.ranges[i2],\n there = other.ranges[i2];\n\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) {\n return false;\n }\n }\n\n return true;\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n\n for (var i2 = 0; i2 < this.ranges.length; i2++) {\n out[i2] = new Range(copyPos(this.ranges[i2].anchor), copyPos(this.ranges[i2].head));\n }\n\n return new Selection(out, this.primIndex);\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i2 = 0; i2 < this.ranges.length; i2++) {\n if (!this.ranges[i2].empty()) {\n return true;\n }\n }\n\n return false;\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) {\n end = pos;\n }\n\n for (var i2 = 0; i2 < this.ranges.length; i2++) {\n var range2 = this.ranges[i2];\n\n if (cmp(end, range2.from()) >= 0 && cmp(pos, range2.to()) <= 0) {\n return i2;\n }\n }\n\n return -1;\n };\n\n var Range = /* @__PURE__ */__name(function (anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }, \"Range\");\n\n Range.prototype.from = function () {\n return minPos(this.anchor, this.head);\n };\n\n Range.prototype.to = function () {\n return maxPos(this.anchor, this.head);\n };\n\n Range.prototype.empty = function () {\n return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;\n };\n\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) {\n return cmp(a.from(), b.from());\n });\n primIndex = indexOf(ranges, prim);\n\n for (var i2 = 1; i2 < ranges.length; i2++) {\n var cur = ranges[i2],\n prev = ranges[i2 - 1];\n var diff = cmp(prev.to(), cur.from());\n\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()),\n to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n\n if (i2 <= primIndex) {\n --primIndex;\n }\n\n ranges.splice(--i2, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n\n return new Selection(ranges, primIndex);\n }\n\n __name(normalizeSelection, \"normalizeSelection\");\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0);\n }\n\n __name(simpleSelection, \"simpleSelection\");\n\n function changeEnd(change) {\n if (!change.text) {\n return change.to;\n }\n\n return Pos(change.from.line + change.text.length - 1, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\n }\n\n __name(changeEnd, \"changeEnd\");\n\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) {\n return pos;\n }\n\n if (cmp(pos, change.to) <= 0) {\n return changeEnd(change);\n }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1,\n ch = pos.ch;\n\n if (pos.line == change.to.line) {\n ch += changeEnd(change).ch - change.to.ch;\n }\n\n return Pos(line, ch);\n }\n\n __name(adjustForChange, \"adjustForChange\");\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n\n for (var i2 = 0; i2 < doc.sel.ranges.length; i2++) {\n var range2 = doc.sel.ranges[i2];\n out.push(new Range(adjustForChange(range2.anchor, change), adjustForChange(range2.head, change)));\n }\n\n return normalizeSelection(doc.cm, out, doc.sel.primIndex);\n }\n\n __name(computeSelAfterChange, \"computeSelAfterChange\");\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line) {\n return Pos(nw.line, pos.ch - old.ch + nw.ch);\n } else {\n return Pos(nw.line + (pos.line - old.line), pos.ch);\n }\n }\n\n __name(offsetPos, \"offsetPos\");\n\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0),\n newPrev = oldPrev;\n\n for (var i2 = 0; i2 < changes.length; i2++) {\n var change = changes[i2];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n\n if (hint == \"around\") {\n var range2 = doc.sel.ranges[i2],\n inv = cmp(range2.head, range2.anchor) < 0;\n out[i2] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i2] = new Range(from, from);\n }\n }\n\n return new Selection(out, doc.sel.primIndex);\n }\n\n __name(computeReplacedSel, \"computeReplacedSel\");\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n __name(loadMode, \"loadMode\");\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n\n if (cm.curOp) {\n regChange(cm);\n }\n }\n\n __name(resetModeState, \"resetModeState\");\n\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n }\n\n __name(isWholeLineUpdate, \"isWholeLineUpdate\");\n\n function updateDoc(doc, change, markedSpans, estimateHeight2) {\n function spansFor(n) {\n return markedSpans ? markedSpans[n] : null;\n }\n\n __name(spansFor, \"spansFor\");\n\n function update(line, text2, spans) {\n updateLine(line, text2, spans, estimateHeight2);\n signalLater(line, \"change\", line, change);\n }\n\n __name(update, \"update\");\n\n function linesFor(start, end) {\n var result = [];\n\n for (var i2 = start; i2 < end; ++i2) {\n result.push(new Line(text[i2], spansFor(i2), estimateHeight2));\n }\n\n return result;\n }\n\n __name(linesFor, \"linesFor\");\n\n var from = change.from,\n to = change.to,\n text = change.text;\n var firstLine = getLine(doc, from.line),\n lastLine = getLine(doc, to.line);\n var lastText = lst(text),\n lastSpans = spansFor(text.length - 1),\n nlines = to.line - from.line;\n\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n\n if (nlines) {\n doc.remove(from.line, nlines);\n }\n\n if (added.length) {\n doc.insert(from.line, added);\n }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight2));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n\n if (nlines > 1) {\n doc.remove(from.line + 1, nlines - 1);\n }\n\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n __name(updateDoc, \"updateDoc\");\n\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc2, skip, sharedHist) {\n if (doc2.linked) {\n for (var i2 = 0; i2 < doc2.linked.length; ++i2) {\n var rel = doc2.linked[i2];\n\n if (rel.doc == skip) {\n continue;\n }\n\n var shared = sharedHist && rel.sharedHist;\n\n if (sharedHistOnly && !shared) {\n continue;\n }\n\n f(rel.doc, shared);\n propagate(rel.doc, doc2, shared);\n }\n }\n }\n\n __name(propagate, \"propagate\");\n\n propagate(doc, null, true);\n }\n\n __name(linkedDocs, \"linkedDocs\");\n\n function attachDoc(cm, doc) {\n if (doc.cm) {\n throw new Error(\"This document is already in use.\");\n }\n\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n\n if (!cm.options.lineWrapping) {\n findMaxLine(cm);\n }\n\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n __name(attachDoc, \"attachDoc\");\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n __name(setDirectionClass, \"setDirectionClass\");\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n __name(directionChanged, \"directionChanged\");\n\n function History(prev) {\n this.done = [];\n this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n __name(History, \"History\");\n\n function historyChangeFromChange(doc, change) {\n var histChange = {\n from: copyPos(change.from),\n to: changeEnd(change),\n text: getBetween(doc, change.from, change.to)\n };\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc2) {\n return attachLocalSpans(doc2, histChange, change.from.line, change.to.line + 1);\n }, true);\n return histChange;\n }\n\n __name(historyChangeFromChange, \"historyChangeFromChange\");\n\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n\n if (last.ranges) {\n array.pop();\n } else {\n break;\n }\n }\n }\n\n __name(clearSelectionEvents, \"clearSelectionEvents\");\n\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done);\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done);\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done);\n }\n }\n\n __name(lastChangeEvent, \"lastChangeEvent\");\n\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date(),\n cur;\n var last;\n\n if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && (change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500) || change.origin.charAt(0) == \"*\")) && (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n last = lst(cur.changes);\n\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n last.to = changeEnd(change);\n } else {\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n var before = lst(hist.done);\n\n if (!before || !before.ranges) {\n pushSelectionToHistory(doc.sel, hist.done);\n }\n\n cur = {\n changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation\n };\n hist.done.push(cur);\n\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n\n if (!hist.done[0].ranges) {\n hist.done.shift();\n }\n }\n }\n\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) {\n signal(doc, \"historyAdded\");\n }\n }\n\n __name(addChangeToHistory, \"addChangeToHistory\");\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" || ch == \"+\" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && new Date() - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\n }\n\n __name(selectionEventCanBeMerged, \"selectionEventCanBeMerged\");\n\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history,\n origin = options && options.origin;\n\n if (opId == hist.lastSelOp || origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) {\n hist.done[hist.done.length - 1] = sel;\n } else {\n pushSelectionToHistory(sel, hist.done);\n }\n\n hist.lastSelTime = +new Date();\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n\n if (options && options.clearRedo !== false) {\n clearSelectionEvents(hist.undone);\n }\n }\n\n __name(addSelectionToHistory, \"addSelectionToHistory\");\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n\n if (!(top && top.ranges && top.equals(sel))) {\n dest.push(sel);\n }\n }\n\n __name(pushSelectionToHistory, \"pushSelectionToHistory\");\n\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id],\n n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans) {\n (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\n }\n\n ++n;\n });\n }\n\n __name(attachLocalSpans, \"attachLocalSpans\");\n\n function removeClearedSpans(spans) {\n if (!spans) {\n return null;\n }\n\n var out;\n\n for (var i2 = 0; i2 < spans.length; ++i2) {\n if (spans[i2].marker.explicitlyCleared) {\n if (!out) {\n out = spans.slice(0, i2);\n }\n } else if (out) {\n out.push(spans[i2]);\n }\n }\n\n return !out ? spans : out.length ? out : null;\n }\n\n __name(removeClearedSpans, \"removeClearedSpans\");\n\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n\n if (!found) {\n return null;\n }\n\n var nw = [];\n\n for (var i2 = 0; i2 < change.text.length; ++i2) {\n nw.push(removeClearedSpans(found[i2]));\n }\n\n return nw;\n }\n\n __name(getOldSpans, \"getOldSpans\");\n\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n\n if (!old) {\n return stretched;\n }\n\n if (!stretched) {\n return old;\n }\n\n for (var i2 = 0; i2 < old.length; ++i2) {\n var oldCur = old[i2],\n stretchCur = stretched[i2];\n\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n\n for (var k = 0; k < oldCur.length; ++k) {\n if (oldCur[k].marker == span.marker) {\n continue spans;\n }\n }\n\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i2] = stretchCur;\n }\n }\n\n return old;\n }\n\n __name(mergeOldSpans, \"mergeOldSpans\");\n\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n\n for (var i2 = 0; i2 < events.length; ++i2) {\n var event = events[i2];\n\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue;\n }\n\n var changes = event.changes,\n newChanges = [];\n copy.push({\n changes: newChanges\n });\n\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j],\n m = void 0;\n newChanges.push({\n from: change.from,\n to: change.to,\n text: change.text\n });\n\n if (newGroup) {\n for (var prop2 in change) {\n if (m = prop2.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop2] = change[prop2];\n delete change[prop2];\n }\n }\n }\n }\n }\n }\n\n return copy;\n }\n\n __name(copyHistoryArray, \"copyHistoryArray\");\n\n function extendRange(range2, head, other, extend) {\n if (extend) {\n var anchor = range2.anchor;\n\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n\n if (posBefore != cmp(other, anchor) < 0) {\n anchor = head;\n head = other;\n } else if (posBefore != cmp(head, other) < 0) {\n head = other;\n }\n }\n\n return new Range(anchor, head);\n } else {\n return new Range(other || head, head);\n }\n }\n\n __name(extendRange, \"extendRange\");\n\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) {\n extend = doc.cm && (doc.cm.display.shift || doc.extend);\n }\n\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n __name(extendSelection, \"extendSelection\");\n\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n\n for (var i2 = 0; i2 < doc.sel.ranges.length; i2++) {\n out[i2] = extendRange(doc.sel.ranges[i2], heads[i2], null, extend);\n }\n\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n __name(extendSelections, \"extendSelections\");\n\n function replaceOneSelection(doc, i2, range2, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i2] = range2;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n __name(replaceOneSelection, \"replaceOneSelection\");\n\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n __name(setSimpleSelection, \"setSimpleSelection\");\n\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function (ranges) {\n this.ranges = [];\n\n for (var i2 = 0; i2 < ranges.length; i2++) {\n this.ranges[i2] = new Range(clipPos(doc, ranges[i2].anchor), clipPos(doc, ranges[i2].head));\n }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n }\n\n if (obj.ranges != sel.ranges) {\n return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1);\n } else {\n return sel;\n }\n }\n\n __name(filterSelectionChange, \"filterSelectionChange\");\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done,\n last = lst(done);\n\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n __name(setSelectionReplaceHistory, \"setSelectionReplaceHistory\");\n\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n __name(setSelection, \"setSelection\");\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\")) {\n sel = filterSelectionChange(doc, sel, options);\n }\n\n var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\") {\n ensureCursorVisible(doc.cm);\n }\n }\n\n __name(setSelectionNoUndo, \"setSelectionNoUndo\");\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) {\n return;\n }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n __name(setSelectionInner, \"setSelectionInner\");\n\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n __name(reCheckSelection, \"reCheckSelection\");\n\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n\n for (var i2 = 0; i2 < sel.ranges.length; i2++) {\n var range2 = sel.ranges[i2];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i2];\n var newAnchor = skipAtomic(doc, range2.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range2.head, old && old.head, bias, mayClear);\n\n if (out || newAnchor != range2.anchor || newHead != range2.head) {\n if (!out) {\n out = sel.ranges.slice(0, i2);\n }\n\n out[i2] = new Range(newAnchor, newHead);\n }\n }\n\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel;\n }\n\n __name(skipAtomicInSelection, \"skipAtomicInSelection\");\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n\n if (line.markedSpans) {\n for (var i2 = 0; i2 < line.markedSpans.length; ++i2) {\n var sp = line.markedSpans[i2],\n m = sp.marker;\n var preventCursorLeft = \"selectLeft\" in m ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = \"selectRight\" in m ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n\n if (m.explicitlyCleared) {\n if (!line.markedSpans) {\n break;\n } else {\n --i2;\n continue;\n }\n }\n }\n\n if (!m.atomic) {\n continue;\n }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1),\n diff = void 0;\n\n if (dir < 0 ? preventCursorRight : preventCursorLeft) {\n near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null);\n }\n\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) {\n return skipAtomicInner(doc, near, pos, dir, mayClear);\n }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n\n if (dir < 0 ? preventCursorLeft : preventCursorRight) {\n far = movePos(doc, far, dir, far.line == pos.line ? line : null);\n }\n\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null;\n }\n }\n }\n\n return pos;\n }\n\n __name(skipAtomicInner, \"skipAtomicInner\");\n\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, dir, true) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true);\n\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0);\n }\n\n return found;\n }\n\n __name(skipAtomic, \"skipAtomic\");\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) {\n return clipPos(doc, Pos(pos.line - 1));\n } else {\n return null;\n }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) {\n return Pos(pos.line + 1, 0);\n } else {\n return null;\n }\n } else {\n return new Pos(pos.line, pos.ch + dir);\n }\n }\n\n __name(movePos, \"movePos\");\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n __name(selectAll, \"selectAll\");\n\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () {\n return obj.canceled = true;\n }\n };\n\n if (update) {\n obj.update = function (from, to, text, origin) {\n if (from) {\n obj.from = clipPos(doc, from);\n }\n\n if (to) {\n obj.to = clipPos(doc, to);\n }\n\n if (text) {\n obj.text = text;\n }\n\n if (origin !== void 0) {\n obj.origin = origin;\n }\n };\n }\n\n signal(doc, \"beforeChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeChange\", doc.cm, obj);\n }\n\n if (obj.canceled) {\n if (doc.cm) {\n doc.cm.curOp.updateInput = 2;\n }\n\n return null;\n }\n\n return {\n from: obj.from,\n to: obj.to,\n text: obj.text,\n origin: obj.origin\n };\n }\n\n __name(filterChange, \"filterChange\");\n\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) {\n return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n }\n\n if (doc.cm.state.suppressEdits) {\n return;\n }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n\n if (!change) {\n return;\n }\n }\n\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n\n if (split) {\n for (var i2 = split.length - 1; i2 >= 0; --i2) {\n makeChangeInner(doc, {\n from: split[i2].from,\n to: split[i2].to,\n text: i2 ? [\"\"] : change.text,\n origin: change.origin\n });\n }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n __name(makeChange, \"makeChange\");\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) {\n return;\n }\n\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n linkedDocs(doc, function (doc2, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc2.history) == -1) {\n rebaseHist(doc2.history, change);\n rebased.push(doc2.history);\n }\n\n makeChangeSingleDoc(doc2, change, null, stretchSpansOverChange(doc2, change));\n });\n }\n\n __name(makeChangeInner, \"makeChangeInner\");\n\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n\n if (suppress && !allowSelectionOnly) {\n return;\n }\n\n var hist = doc.history,\n event,\n selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone,\n dest = type == \"undo\" ? hist.undone : hist.done;\n var i2 = 0;\n\n for (; i2 < source.length; i2++) {\n event = source[i2];\n\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) {\n break;\n }\n }\n\n if (i2 == source.length) {\n return;\n }\n\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {\n clearRedo: false\n });\n return;\n }\n\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return;\n } else {\n break;\n }\n }\n\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({\n changes: antiChanges,\n generation: hist.generation\n });\n hist.generation = event.generation || ++hist.maxGeneration;\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = /* @__PURE__ */__name(function (i3) {\n var change = event.changes[i3];\n change.origin = type;\n\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {};\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n var after = i3 ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n\n if (!i3 && doc.cm) {\n doc.cm.scrollIntoView({\n from: change.from,\n to: changeEnd(change)\n });\n }\n\n var rebased = [];\n linkedDocs(doc, function (doc2, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc2.history) == -1) {\n rebaseHist(doc2.history, change);\n rebased.push(doc2.history);\n }\n\n makeChangeSingleDoc(doc2, change, null, mergeOldSpans(doc2, change));\n });\n }, \"loop\");\n\n for (var i$12 = event.changes.length - 1; i$12 >= 0; --i$12) {\n var returned = loop(i$12);\n if (returned) return returned.v;\n }\n }\n\n __name(makeChangeFromHistory, \"makeChangeFromHistory\");\n\n function shiftDoc(doc, distance) {\n if (distance == 0) {\n return;\n }\n\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range2) {\n return new Range(Pos(range2.anchor.line + distance, range2.anchor.ch), Pos(range2.head.line + distance, range2.head.ch));\n }), doc.sel.primIndex);\n\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) {\n regLineChange(doc.cm, l, \"gutter\");\n }\n }\n }\n\n __name(shiftDoc, \"shiftDoc\");\n\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\n }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return;\n }\n\n if (change.from.line > doc.lastLine()) {\n return;\n }\n\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {\n from: Pos(doc.first, 0),\n to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)],\n origin: change.origin\n };\n }\n\n var last = doc.lastLine();\n\n if (change.to.line > last) {\n change = {\n from: change.from,\n to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]],\n origin: change.origin\n };\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) {\n selAfter = computeSelAfterChange(doc, change);\n }\n\n if (doc.cm) {\n makeChangeSingleDocInEditor(doc.cm, change, spans);\n } else {\n updateDoc(doc, change, spans);\n }\n\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) {\n doc.cantEdit = false;\n }\n }\n\n __name(makeChangeSingleDoc, \"makeChangeSingleDoc\");\n\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc,\n display = cm.display,\n from = change.from,\n to = change.to;\n var recomputeMaxLength = false,\n checkWidthStart = from.line;\n\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true;\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1) {\n signalCursorActivity(cm);\n }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n\n if (recomputeMaxLength) {\n cm.curOp.updateMaxLine = true;\n }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n var lendiff = change.text.length - (to.line - from.line) - 1;\n\n if (change.full) {\n regChange(cm);\n } else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) {\n regLineChange(cm, from.line, \"text\");\n } else {\n regChange(cm, from.line, to.line + 1, lendiff);\n }\n\n var changesHandler = hasHandler(cm, \"changes\"),\n changeHandler = hasHandler(cm, \"change\");\n\n if (changeHandler || changesHandler) {\n var obj = {\n from,\n to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n\n if (changeHandler) {\n signalLater(cm, \"change\", cm, obj);\n }\n\n if (changesHandler) {\n (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n }\n }\n\n cm.display.selForContextMenu = null;\n }\n\n __name(makeChangeSingleDocInEditor, \"makeChangeSingleDocInEditor\");\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) {\n to = from;\n }\n\n if (cmp(to, from) < 0) {\n assign = [to, from], from = assign[0], to = assign[1];\n }\n\n if (typeof code == \"string\") {\n code = doc.splitLines(code);\n }\n\n makeChange(doc, {\n from,\n to,\n text: code,\n origin\n });\n }\n\n __name(replaceRange, \"replaceRange\");\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n __name(rebaseHistSelSingle, \"rebaseHistSelSingle\");\n\n function rebaseHistArray(array, from, to, diff) {\n for (var i2 = 0; i2 < array.length; ++i2) {\n var sub = array[i2],\n ok = true;\n\n if (sub.ranges) {\n if (!sub.copied) {\n sub = array[i2] = sub.deepCopy();\n sub.copied = true;\n }\n\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n\n continue;\n }\n\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break;\n }\n }\n\n if (!ok) {\n array.splice(0, i2 + 1);\n i2 = 0;\n }\n }\n }\n\n __name(rebaseHistArray, \"rebaseHistArray\");\n\n function rebaseHist(hist, change) {\n var from = change.from.line,\n to = change.to.line,\n diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n __name(rebaseHist, \"rebaseHist\");\n\n function changeLine(doc, handle, changeType, op) {\n var no = handle,\n line = handle;\n\n if (typeof handle == \"number\") {\n line = getLine(doc, clipLine(doc, handle));\n } else {\n no = lineNo(handle);\n }\n\n if (no == null) {\n return null;\n }\n\n if (op(line, no) && doc.cm) {\n regLineChange(doc.cm, no, changeType);\n }\n\n return line;\n }\n\n __name(changeLine, \"changeLine\");\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n\n for (var i2 = 0; i2 < lines.length; ++i2) {\n lines[i2].parent = this;\n height += lines[i2].height;\n }\n\n this.height = height;\n }\n\n __name(LeafChunk, \"LeafChunk\");\n\n LeafChunk.prototype = {\n chunkSize: function () {\n return this.lines.length;\n },\n removeInner: function (at, n) {\n for (var i2 = at, e = at + n; i2 < e; ++i2) {\n var line = this.lines[i2];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n\n this.lines.splice(at, n);\n },\n collapse: function (lines) {\n lines.push.apply(lines, this.lines);\n },\n insertInner: function (at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n\n for (var i2 = 0; i2 < lines.length; ++i2) {\n lines[i2].parent = this;\n }\n },\n iterN: function (at, n, op) {\n for (var e = at + n; at < e; ++at) {\n if (op(this.lines[at])) {\n return true;\n }\n }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0,\n height = 0;\n\n for (var i2 = 0; i2 < children.length; ++i2) {\n var ch = children[i2];\n size += ch.chunkSize();\n height += ch.height;\n ch.parent = this;\n }\n\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n __name(BranchChunk, \"BranchChunk\");\n\n BranchChunk.prototype = {\n chunkSize: function () {\n return this.size;\n },\n removeInner: function (at, n) {\n this.size -= n;\n\n for (var i2 = 0; i2 < this.children.length; ++i2) {\n var child = this.children[i2],\n sz = child.chunkSize();\n\n if (at < sz) {\n var rm = Math.min(n, sz - at),\n oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n\n if (sz == rm) {\n this.children.splice(i2--, 1);\n child.parent = null;\n }\n\n if ((n -= rm) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n }\n\n if (this.size - n < 25 && (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n collapse: function (lines) {\n for (var i2 = 0; i2 < this.children.length; ++i2) {\n this.children[i2].collapse(lines);\n }\n },\n insertInner: function (at, lines, height) {\n this.size += lines.length;\n this.height += height;\n\n for (var i2 = 0; i2 < this.children.length; ++i2) {\n var child = this.children[i2],\n sz = child.chunkSize();\n\n if (at <= sz) {\n child.insertInner(at, lines, height);\n\n if (child.lines && child.lines.length > 50) {\n var remaining = child.lines.length % 25 + 25;\n\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i2, 0, leaf);\n leaf.parent = this;\n }\n\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n\n break;\n }\n\n at -= sz;\n }\n },\n maybeSpill: function () {\n if (this.children.length <= 10) {\n return;\n }\n\n var me = this;\n\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n\n if (!me.parent) {\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n\n sibling.parent = me.parent;\n } while (me.children.length > 10);\n\n me.parent.maybeSpill();\n },\n iterN: function (at, n, op) {\n for (var i2 = 0; i2 < this.children.length; ++i2) {\n var child = this.children[i2],\n sz = child.chunkSize();\n\n if (at < sz) {\n var used = Math.min(n, sz - at);\n\n if (child.iterN(at, used, op)) {\n return true;\n }\n\n if ((n -= used) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n }\n }\n };\n\n var LineWidget = /* @__PURE__ */__name(function (doc, node, options) {\n if (options) {\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n this[opt] = options[opt];\n }\n }\n }\n\n this.doc = doc;\n this.node = node;\n }, \"LineWidget\");\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm,\n ws = this.line.widgets,\n line = this.line,\n no = lineNo(line);\n\n if (no == null || !ws) {\n return;\n }\n\n for (var i2 = 0; i2 < ws.length; ++i2) {\n if (ws[i2] == this) {\n ws.splice(i2--, 1);\n }\n }\n\n if (!ws.length) {\n line.widgets = null;\n }\n\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1$1 = this;\n var oldH = this.height,\n cm = this.doc.cm,\n line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n\n if (!diff) {\n return;\n }\n\n if (!lineIsHidden(this.doc, line)) {\n updateLineHeight(line, line.height + diff);\n }\n\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1$1, lineNo(line));\n });\n }\n };\n\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < (cm.curOp && cm.curOp.scrollTop || cm.doc.scrollTop)) {\n addToScrollTop(cm, diff);\n }\n }\n\n __name(adjustScrollWhenAboveVisible, \"adjustScrollWhenAboveVisible\");\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n\n if (cm && widget.noHScroll) {\n cm.display.alignWidgets = true;\n }\n\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n\n if (widget.insertAt == null) {\n widgets.push(widget);\n } else {\n widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget);\n }\n\n widget.line = line;\n\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n\n if (aboveVisible) {\n addToScrollTop(cm, widget.height);\n }\n\n cm.curOp.forceUpdate = true;\n }\n\n return true;\n });\n\n if (cm) {\n signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n }\n\n return widget;\n }\n\n __name(addLineWidget, \"addLineWidget\");\n\n var nextMarkerId = 0;\n\n var TextMarker = /* @__PURE__ */__name(function (doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n }, \"TextMarker\");\n\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n\n var cm = this.doc.cm,\n withOp = cm && !cm.curOp;\n\n if (withOp) {\n startOperation(cm);\n }\n\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n\n if (found) {\n signalLater(this, \"clear\", found.from, found.to);\n }\n }\n\n var min = null,\n max = null;\n\n for (var i2 = 0; i2 < this.lines.length; ++i2) {\n var line = this.lines[i2];\n var span = getMarkedSpanFor(line.markedSpans, this);\n\n if (cm && !this.collapsed) {\n regLineChange(cm, lineNo(line), \"text\");\n } else if (cm) {\n if (span.to != null) {\n max = lineNo(line);\n }\n\n if (span.from != null) {\n min = lineNo(line);\n }\n }\n\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) {\n updateLineHeight(line, textHeight(cm.display));\n }\n }\n\n if (cm && this.collapsed && !cm.options.lineWrapping) {\n for (var i$12 = 0; i$12 < this.lines.length; ++i$12) {\n var visual = visualLine(this.lines[i$12]),\n len = lineLength(visual);\n\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n }\n }\n\n if (min != null && cm && this.collapsed) {\n regChange(cm, min, max + 1);\n }\n\n this.lines.length = 0;\n this.explicitlyCleared = true;\n\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n\n if (cm) {\n reCheckSelection(cm.doc);\n }\n }\n\n if (cm) {\n signalLater(cm, \"markerCleared\", cm, this, min, max);\n }\n\n if (withOp) {\n endOperation(cm);\n }\n\n if (this.parent) {\n this.parent.clear();\n }\n };\n\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") {\n side = 1;\n }\n\n var from, to;\n\n for (var i2 = 0; i2 < this.lines.length; ++i2) {\n var line = this.lines[i2];\n var span = getMarkedSpanFor(line.markedSpans, this);\n\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n\n if (side == -1) {\n return from;\n }\n }\n\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n\n if (side == 1) {\n return to;\n }\n }\n }\n\n return from && {\n from,\n to\n };\n };\n\n TextMarker.prototype.changed = function () {\n var this$1$1 = this;\n var pos = this.find(-1, true),\n widget = this,\n cm = this.doc.cm;\n\n if (!pos || !cm) {\n return;\n }\n\n runInOp(cm, function () {\n var line = pos.line,\n lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n\n cm.curOp.updateMaxLine = true;\n\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n\n if (dHeight) {\n updateLineHeight(line, line.height + dHeight);\n }\n }\n\n signalLater(cm, \"markerChanged\", cm, this$1$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) {\n (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n }\n }\n\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n\n eventMixin(TextMarker);\n\n function markText(doc, from, to, options, type) {\n if (options && options.shared) {\n return markTextShared(doc, from, to, options, type);\n }\n\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, markText)(doc, from, to, options, type);\n }\n\n var marker = new TextMarker(doc, type),\n diff = cmp(from, to);\n\n if (options) {\n copyObj(options, marker, false);\n }\n\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) {\n return marker;\n }\n\n if (marker.replacedWith) {\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n\n if (!options.handleMouseEvents) {\n marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n if (options.insertLeft) {\n marker.widgetNode.insertLeft = true;\n }\n }\n\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) {\n throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n }\n\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory) {\n addChangeToHistory(doc, {\n from,\n to,\n origin: \"markText\"\n }, doc.sel, NaN);\n }\n\n var curLine = from.line,\n cm = doc.cm,\n updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) {\n updateMaxLine = true;\n }\n\n if (marker.collapsed && curLine != from.line) {\n updateLineHeight(line, 0);\n }\n\n addMarkedSpan(line, new MarkedSpan(marker, curLine == from.line ? from.ch : null, curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n\n if (marker.collapsed) {\n doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) {\n updateLineHeight(line, 0);\n }\n });\n }\n\n if (marker.clearOnEnter) {\n on(marker, \"beforeCursorEnter\", function () {\n return marker.clear();\n });\n }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n\n if (doc.history.done.length || doc.history.undone.length) {\n doc.clearHistory();\n }\n }\n\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n\n if (cm) {\n if (updateMaxLine) {\n cm.curOp.updateMaxLine = true;\n }\n\n if (marker.collapsed) {\n regChange(cm, from.line, to.line + 1);\n } else if (marker.className || marker.startStyle || marker.endStyle || marker.css || marker.attributes || marker.title) {\n for (var i2 = from.line; i2 <= to.line; i2++) {\n regLineChange(cm, i2, \"text\");\n }\n }\n\n if (marker.atomic) {\n reCheckSelection(cm.doc);\n }\n\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n\n return marker;\n }\n\n __name(markText, \"markText\");\n\n var SharedTextMarker = /* @__PURE__ */__name(function (markers, primary) {\n this.markers = markers;\n this.primary = primary;\n\n for (var i2 = 0; i2 < markers.length; ++i2) {\n markers[i2].parent = this;\n }\n }, \"SharedTextMarker\");\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n\n this.explicitlyCleared = true;\n\n for (var i2 = 0; i2 < this.markers.length; ++i2) {\n this.markers[i2].clear();\n }\n\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj);\n };\n\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)],\n primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc2) {\n if (widget) {\n options.widgetNode = widget.cloneNode(true);\n }\n\n markers.push(markText(doc2, clipPos(doc2, from), clipPos(doc2, to), options, type));\n\n for (var i2 = 0; i2 < doc2.linked.length; ++i2) {\n if (doc2.linked[i2].isParent) {\n return;\n }\n }\n\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary);\n }\n\n __name(markTextShared, \"markTextShared\");\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) {\n return m.parent;\n });\n }\n\n __name(findSharedMarkers, \"findSharedMarkers\");\n\n function copySharedMarkers(doc, markers) {\n for (var i2 = 0; i2 < markers.length; i2++) {\n var marker = markers[i2],\n pos = marker.find();\n var mFrom = doc.clipPos(pos.from),\n mTo = doc.clipPos(pos.to);\n\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n __name(copySharedMarkers, \"copySharedMarkers\");\n\n function detachSharedMarkers(markers) {\n var loop = /* @__PURE__ */__name(function (i3) {\n var marker = markers[i3],\n linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) {\n return linked.push(d);\n });\n\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n }, \"loop\");\n\n for (var i2 = 0; i2 < markers.length; i2++) loop(i2);\n }\n\n __name(detachSharedMarkers, \"detachSharedMarkers\");\n\n var nextDocId = 0;\n\n var Doc = /* @__PURE__ */__name(function (text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) {\n return new Doc(text, mode, firstLine, lineSep, direction);\n }\n\n if (firstLine == null) {\n firstLine = 0;\n }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = direction == \"rtl\" ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") {\n text = this.splitLines(text);\n }\n\n updateDoc(this, {\n from: start,\n to: start,\n text\n });\n setSelection(this, simpleSelection(start), sel_dontScroll);\n }, \"Doc\");\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n iter: function (from, to, op) {\n if (op) {\n this.iterN(from - this.first, to - from, op);\n } else {\n this.iterN(this.first, this.first + this.size, from);\n }\n },\n insert: function (at, lines) {\n var height = 0;\n\n for (var i2 = 0; i2 < lines.length; ++i2) {\n height += lines[i2].height;\n }\n\n this.insertInner(at - this.first, lines, height);\n },\n remove: function (at, n) {\n this.removeInner(at - this.first, n);\n },\n getValue: function (lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n\n if (lineSep === false) {\n return lines;\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n setValue: docMethodOp(function (code) {\n var top = Pos(this.first, 0),\n last = this.first + this.size - 1;\n makeChange(this, {\n from: top,\n to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code),\n origin: \"setValue\",\n full: true\n }, true);\n\n if (this.cm) {\n scrollToCoords(this.cm, 0, 0);\n }\n\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function (code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function (from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n\n if (lineSep === false) {\n return lines;\n }\n\n if (lineSep === \"\") {\n return lines.join(\"\");\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n getLine: function (line) {\n var l = this.getLineHandle(line);\n return l && l.text;\n },\n getLineHandle: function (line) {\n if (isLine(this, line)) {\n return getLine(this, line);\n }\n },\n getLineNumber: function (line) {\n return lineNo(line);\n },\n getLineHandleVisualStart: function (line) {\n if (typeof line == \"number\") {\n line = getLine(this, line);\n }\n\n return visualLine(line);\n },\n lineCount: function () {\n return this.size;\n },\n firstLine: function () {\n return this.first;\n },\n lastLine: function () {\n return this.first + this.size - 1;\n },\n clipPos: function (pos) {\n return clipPos(this, pos);\n },\n getCursor: function (start) {\n var range2 = this.sel.primary(),\n pos;\n\n if (start == null || start == \"head\") {\n pos = range2.head;\n } else if (start == \"anchor\") {\n pos = range2.anchor;\n } else if (start == \"end\" || start == \"to\" || start === false) {\n pos = range2.to();\n } else {\n pos = range2.from();\n }\n\n return pos;\n },\n listSelections: function () {\n return this.sel.ranges;\n },\n somethingSelected: function () {\n return this.sel.somethingSelected();\n },\n setCursor: docMethodOp(function (line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function (anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function (head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function (heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function (f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function (ranges, primary, options) {\n if (!ranges.length) {\n return;\n }\n\n var out = [];\n\n for (var i2 = 0; i2 < ranges.length; i2++) {\n out[i2] = new Range(clipPos(this, ranges[i2].anchor), clipPos(this, ranges[i2].head || ranges[i2].anchor));\n }\n\n if (primary == null) {\n primary = Math.min(ranges.length - 1, this.sel.primIndex);\n }\n\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function (anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n getSelection: function (lineSep) {\n var ranges = this.sel.ranges,\n lines;\n\n for (var i2 = 0; i2 < ranges.length; i2++) {\n var sel = getBetween(this, ranges[i2].from(), ranges[i2].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n\n if (lineSep === false) {\n return lines;\n } else {\n return lines.join(lineSep || this.lineSeparator());\n }\n },\n getSelections: function (lineSep) {\n var parts = [],\n ranges = this.sel.ranges;\n\n for (var i2 = 0; i2 < ranges.length; i2++) {\n var sel = getBetween(this, ranges[i2].from(), ranges[i2].to());\n\n if (lineSep !== false) {\n sel = sel.join(lineSep || this.lineSeparator());\n }\n\n parts[i2] = sel;\n }\n\n return parts;\n },\n replaceSelection: function (code, collapse, origin) {\n var dup = [];\n\n for (var i2 = 0; i2 < this.sel.ranges.length; i2++) {\n dup[i2] = code;\n }\n\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function (code, collapse, origin) {\n var changes = [],\n sel = this.sel;\n\n for (var i2 = 0; i2 < sel.ranges.length; i2++) {\n var range2 = sel.ranges[i2];\n changes[i2] = {\n from: range2.from(),\n to: range2.to(),\n text: this.splitLines(code[i2]),\n origin\n };\n }\n\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n\n for (var i$12 = changes.length - 1; i$12 >= 0; i$12--) {\n makeChange(this, changes[i$12]);\n }\n\n if (newSel) {\n setSelectionReplaceHistory(this, newSel);\n } else if (this.cm) {\n ensureCursorVisible(this.cm);\n }\n }),\n undo: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\");\n }),\n redo: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\");\n }),\n undoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\", true);\n }),\n redoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\", true);\n }),\n setExtending: function (val) {\n this.extend = val;\n },\n getExtending: function () {\n return this.extend;\n },\n historySize: function () {\n var hist = this.history,\n done = 0,\n undone = 0;\n\n for (var i2 = 0; i2 < hist.done.length; i2++) {\n if (!hist.done[i2].ranges) {\n ++done;\n }\n }\n\n for (var i$12 = 0; i$12 < hist.undone.length; i$12++) {\n if (!hist.undone[i$12].ranges) {\n ++undone;\n }\n }\n\n return {\n undo: done,\n redo: undone\n };\n },\n clearHistory: function () {\n var this$1$1 = this;\n this.history = new History(this.history);\n linkedDocs(this, function (doc) {\n return doc.history = this$1$1.history;\n }, true);\n },\n markClean: function () {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function (forceSplit) {\n if (forceSplit) {\n this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n }\n\n return this.history.generation;\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration);\n },\n getHistory: function () {\n return {\n done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)\n };\n },\n setHistory: function (histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n setGutterMarker: docMethodOp(function (line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line2) {\n var markers = line2.gutterMarkers || (line2.gutterMarkers = {});\n markers[gutterID] = value;\n\n if (!value && isEmpty(markers)) {\n line2.gutterMarkers = null;\n }\n\n return true;\n });\n }),\n clearGutter: docMethodOp(function (gutterID) {\n var this$1$1 = this;\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n\n if (isEmpty(line.gutterMarkers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }\n });\n }),\n lineInfo: function (line) {\n var n;\n\n if (typeof line == \"number\") {\n if (!isLine(this, line)) {\n return null;\n }\n\n n = line;\n line = getLine(this, line);\n\n if (!line) {\n return null;\n }\n } else {\n n = lineNo(line);\n\n if (n == null) {\n return null;\n }\n }\n\n return {\n line: n,\n handle: line,\n text: line.text,\n gutterMarkers: line.gutterMarkers,\n textClass: line.textClass,\n bgClass: line.bgClass,\n wrapClass: line.wrapClass,\n widgets: line.widgets\n };\n },\n addLineClass: docMethodOp(function (handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop2 = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n\n if (!line[prop2]) {\n line[prop2] = cls;\n } else if (classTest(cls).test(line[prop2])) {\n return false;\n } else {\n line[prop2] += \" \" + cls;\n }\n\n return true;\n });\n }),\n removeLineClass: docMethodOp(function (handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop2 = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop2];\n\n if (!cur) {\n return false;\n } else if (cls == null) {\n line[prop2] = null;\n } else {\n var found = cur.match(classTest(cls));\n\n if (!found) {\n return false;\n }\n\n var end = found.index + found[0].length;\n line[prop2] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n\n return true;\n });\n }),\n addLineWidget: docMethodOp(function (handle, node, options) {\n return addLineWidget(this, handle, node, options);\n }),\n removeLineWidget: function (widget) {\n widget.clear();\n },\n markText: function (from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\");\n },\n setBookmark: function (pos, options) {\n var realOpts = {\n replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false,\n shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents\n };\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\");\n },\n findMarksAt: function (pos) {\n pos = clipPos(this, pos);\n var markers = [],\n spans = getLine(this, pos.line).markedSpans;\n\n if (spans) {\n for (var i2 = 0; i2 < spans.length; ++i2) {\n var span = spans[i2];\n\n if ((span.from == null || span.from <= pos.ch) && (span.to == null || span.to >= pos.ch)) {\n markers.push(span.marker.parent || span.marker);\n }\n }\n }\n\n return markers;\n },\n findMarks: function (from, to, filter) {\n from = clipPos(this, from);\n to = clipPos(this, to);\n var found = [],\n lineNo2 = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n\n if (spans) {\n for (var i2 = 0; i2 < spans.length; i2++) {\n var span = spans[i2];\n\n if (!(span.to != null && lineNo2 == from.line && from.ch >= span.to || span.from == null && lineNo2 != from.line || span.from != null && lineNo2 == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) {\n found.push(span.marker.parent || span.marker);\n }\n }\n }\n\n ++lineNo2;\n });\n return found;\n },\n getAllMarks: function () {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n\n if (sps) {\n for (var i2 = 0; i2 < sps.length; ++i2) {\n if (sps[i2].from != null) {\n markers.push(sps[i2].marker);\n }\n }\n }\n });\n return markers;\n },\n posFromIndex: function (off2) {\n var ch,\n lineNo2 = this.first,\n sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n\n if (sz > off2) {\n ch = off2;\n return true;\n }\n\n off2 -= sz;\n ++lineNo2;\n });\n return clipPos(this, Pos(lineNo2, ch));\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n\n if (coords.line < this.first || coords.ch < 0) {\n return 0;\n }\n\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) {\n index += line.text.length + sepSize;\n });\n return index;\n },\n copy: function (copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop;\n doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n\n return doc;\n },\n linkedDoc: function (options) {\n if (!options) {\n options = {};\n }\n\n var from = this.first,\n to = this.first + this.size;\n\n if (options.from != null && options.from > from) {\n from = options.from;\n }\n\n if (options.to != null && options.to < to) {\n to = options.to;\n }\n\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n\n if (options.sharedHist) {\n copy.history = this.history;\n }\n\n (this.linked || (this.linked = [])).push({\n doc: copy,\n sharedHist: options.sharedHist\n });\n copy.linked = [{\n doc: this,\n isParent: true,\n sharedHist: options.sharedHist\n }];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy;\n },\n unlinkDoc: function (other) {\n if (other instanceof CodeMirror2) {\n other = other.doc;\n }\n\n if (this.linked) {\n for (var i2 = 0; i2 < this.linked.length; ++i2) {\n var link = this.linked[i2];\n\n if (link.doc != other) {\n continue;\n }\n\n this.linked.splice(i2, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break;\n }\n }\n\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) {\n return splitIds.push(doc.id);\n }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function (f) {\n linkedDocs(this, f);\n },\n getMode: function () {\n return this.mode;\n },\n getEditor: function () {\n return this.cm;\n },\n splitLines: function (str) {\n if (this.lineSep) {\n return str.split(this.lineSep);\n }\n\n return splitLinesAuto(str);\n },\n lineSeparator: function () {\n return this.lineSep || \"\\n\";\n },\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") {\n dir = \"ltr\";\n }\n\n if (dir == this.direction) {\n return;\n }\n\n this.direction = dir;\n this.iter(function (line) {\n return line.order = null;\n });\n\n if (this.cm) {\n directionChanged(this.cm);\n }\n })\n });\n Doc.prototype.eachLine = Doc.prototype.iter;\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n\n if (ie) {\n lastDrop = +new Date();\n }\n\n var pos = posFromMouse(cm, e, true),\n files = e.dataTransfer.files;\n\n if (!pos || cm.isReadOnly()) {\n return;\n }\n\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length,\n text = Array(n),\n read = 0;\n\n var markAsReadAndPasteIfAllFilesAreRead = /* @__PURE__ */__name(function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {\n from: pos,\n to: pos,\n text: cm.doc.splitLines(text.filter(function (t) {\n return t != null;\n }).join(cm.doc.lineSeparator())),\n origin: \"paste\"\n };\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n }, \"markAsReadAndPasteIfAllFilesAreRead\");\n\n var readTextFromFile = /* @__PURE__ */__name(function (file, i3) {\n if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n\n var reader = new FileReader();\n\n reader.onerror = function () {\n return markAsReadAndPasteIfAllFilesAreRead();\n };\n\n reader.onload = function () {\n var content = reader.result;\n\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n\n text[i3] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n\n reader.readAsText(file);\n }, \"readTextFromFile\");\n\n for (var i2 = 0; i2 < files.length; i2++) {\n readTextFromFile(files[i2], i2);\n }\n } else {\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n setTimeout(function () {\n return cm.display.input.focus();\n }, 20);\n return;\n }\n\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n\n if (text$1) {\n var selected;\n\n if (cm.state.draggingText && !cm.state.draggingText.copy) {\n selected = cm.listSelections();\n }\n\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n\n if (selected) {\n for (var i$12 = 0; i$12 < selected.length; ++i$12) {\n replaceRange(cm.doc, \"\", selected[i$12].anchor, selected[i$12].head, \"drag\");\n }\n }\n\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n } catch (e$1) {}\n }\n }\n\n __name(onDrop, \"onDrop\");\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date() - lastDrop < 100)) {\n e_stop(e);\n return;\n }\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n img._top = img.offsetTop;\n }\n\n e.dataTransfer.setDragImage(img, 0, 0);\n\n if (presto) {\n img.parentNode.removeChild(img);\n }\n }\n }\n\n __name(onDragStart, \"onDragStart\");\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n\n if (!pos) {\n return;\n }\n\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n __name(onDragOver, \"onDragOver\");\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n __name(clearDragCursor, \"clearDragCursor\");\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) {\n return;\n }\n\n var byClass = document.getElementsByClassName(\"CodeMirror\"),\n editors = [];\n\n for (var i2 = 0; i2 < byClass.length; i2++) {\n var cm = byClass[i2].CodeMirror;\n\n if (cm) {\n editors.push(cm);\n }\n }\n\n if (editors.length) {\n editors[0].operation(function () {\n for (var i3 = 0; i3 < editors.length; i3++) {\n f(editors[i3]);\n }\n });\n }\n }\n\n __name(forEachCodeMirror, \"forEachCodeMirror\");\n\n var globalsRegistered = false;\n\n function ensureGlobalHandlers() {\n if (globalsRegistered) {\n return;\n }\n\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n\n __name(ensureGlobalHandlers, \"ensureGlobalHandlers\");\n\n function registerGlobalHandlers() {\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) {\n resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100);\n }\n });\n on(window, \"blur\", function () {\n return forEachCodeMirror(onBlur);\n });\n }\n\n __name(registerGlobalHandlers, \"registerGlobalHandlers\");\n\n function onResize(cm) {\n var d = cm.display;\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n __name(onResize, \"onResize\");\n\n var keyNames = {\n 3: \"Pause\",\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Ctrl\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"PrintScrn\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Mod\",\n 92: \"Mod\",\n 93: \"Mod\",\n 106: \"*\",\n 107: \"=\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 145: \"ScrollLock\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\",\n 224: \"Mod\",\n 63232: \"Up\",\n 63233: \"Down\",\n 63234: \"Left\",\n 63235: \"Right\",\n 63272: \"Delete\",\n 63273: \"Home\",\n 63275: \"End\",\n 63276: \"PageUp\",\n 63277: \"PageDown\",\n 63302: \"Insert\"\n };\n\n for (var i = 0; i < 10; i++) {\n keyNames[i + 48] = keyNames[i + 96] = String(i);\n }\n\n for (var i$1 = 65; i$1 <= 90; i$1++) {\n keyNames[i$1] = String.fromCharCode(i$1);\n }\n\n for (var i$2 = 1; i$2 <= 12; i$2++) {\n keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2;\n }\n\n var keyMap = {};\n keyMap.basic = {\n \"Left\": \"goCharLeft\",\n \"Right\": \"goCharRight\",\n \"Up\": \"goLineUp\",\n \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\",\n \"Home\": \"goLineStartSmart\",\n \"PageUp\": \"goPageUp\",\n \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\",\n \"Backspace\": \"delCharBefore\",\n \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\",\n \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\",\n \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\",\n \"Ctrl-D\": \"deleteLine\",\n \"Ctrl-Z\": \"undo\",\n \"Shift-Ctrl-Z\": \"redo\",\n \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\",\n \"Ctrl-End\": \"goDocEnd\",\n \"Ctrl-Up\": \"goLineUp\",\n \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\",\n \"Ctrl-Right\": \"goGroupRight\",\n \"Alt-Left\": \"goLineStart\",\n \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\",\n \"Ctrl-Delete\": \"delGroupAfter\",\n \"Ctrl-S\": \"save\",\n \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\",\n \"Shift-Ctrl-G\": \"findPrev\",\n \"Shift-Ctrl-F\": \"replace\",\n \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\",\n \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\",\n \"Shift-Ctrl-U\": \"redoSelection\",\n \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\",\n \"Ctrl-B\": \"goCharLeft\",\n \"Ctrl-P\": \"goLineUp\",\n \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\",\n \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\",\n \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\",\n \"Ctrl-H\": \"delCharBefore\",\n \"Alt-Backspace\": \"delWordBefore\",\n \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\",\n \"Cmd-D\": \"deleteLine\",\n \"Cmd-Z\": \"undo\",\n \"Shift-Cmd-Z\": \"redo\",\n \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\",\n \"Cmd-Up\": \"goDocStart\",\n \"Cmd-End\": \"goDocEnd\",\n \"Cmd-Down\": \"goDocEnd\",\n \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\",\n \"Cmd-Left\": \"goLineLeft\",\n \"Cmd-Right\": \"goLineRight\",\n \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\",\n \"Alt-Delete\": \"delGroupAfter\",\n \"Cmd-S\": \"save\",\n \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\",\n \"Shift-Cmd-G\": \"findPrev\",\n \"Cmd-Alt-F\": \"replace\",\n \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\",\n \"Cmd-]\": \"indentMore\",\n \"Cmd-Backspace\": \"delWrappedLineLeft\",\n \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\",\n \"Shift-Cmd-U\": \"redoSelection\",\n \"Ctrl-Up\": \"goDocStart\",\n \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n\n for (var i2 = 0; i2 < parts.length - 1; i2++) {\n var mod = parts[i2];\n\n if (/^(cmd|meta|m)$/i.test(mod)) {\n cmd = true;\n } else if (/^a(lt)?$/i.test(mod)) {\n alt = true;\n } else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true;\n } else if (/^s(hift)?$/i.test(mod)) {\n shift = true;\n } else {\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n }\n\n if (alt) {\n name = \"Alt-\" + name;\n }\n\n if (ctrl) {\n name = \"Ctrl-\" + name;\n }\n\n if (cmd) {\n name = \"Cmd-\" + name;\n }\n\n if (shift) {\n name = \"Shift-\" + name;\n }\n\n return name;\n }\n\n __name(normalizeKeyName, \"normalizeKeyName\");\n\n function normalizeKeyMap(keymap) {\n var copy = {};\n\n for (var keyname in keymap) {\n if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) {\n continue;\n }\n\n if (value == \"...\") {\n delete keymap[keyname];\n continue;\n }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n\n for (var i2 = 0; i2 < keys.length; i2++) {\n var val = void 0,\n name = void 0;\n\n if (i2 == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i2 + 1).join(\" \");\n val = \"...\";\n }\n\n var prev = copy[name];\n\n if (!prev) {\n copy[name] = val;\n } else if (prev != val) {\n throw new Error(\"Inconsistent bindings for \" + name);\n }\n }\n\n delete keymap[keyname];\n }\n }\n\n for (var prop2 in copy) {\n keymap[prop2] = copy[prop2];\n }\n\n return keymap;\n }\n\n __name(normalizeKeyMap, \"normalizeKeyMap\");\n\n function lookupKey(key, map2, handle, context) {\n map2 = getKeyMap(map2);\n var found = map2.call ? map2.call(key, context) : map2[key];\n\n if (found === false) {\n return \"nothing\";\n }\n\n if (found === \"...\") {\n return \"multi\";\n }\n\n if (found != null && handle(found)) {\n return \"handled\";\n }\n\n if (map2.fallthrough) {\n if (Object.prototype.toString.call(map2.fallthrough) != \"[object Array]\") {\n return lookupKey(key, map2.fallthrough, handle, context);\n }\n\n for (var i2 = 0; i2 < map2.fallthrough.length; i2++) {\n var result = lookupKey(key, map2.fallthrough[i2], handle, context);\n\n if (result) {\n return result;\n }\n }\n }\n }\n\n __name(lookupKey, \"lookupKey\");\n\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\";\n }\n\n __name(isModifierKey, \"isModifierKey\");\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n\n if (event.altKey && base != \"Alt\") {\n name = \"Alt-\" + name;\n }\n\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") {\n name = \"Ctrl-\" + name;\n }\n\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") {\n name = \"Cmd-\" + name;\n }\n\n if (!noShift && event.shiftKey && base != \"Shift\") {\n name = \"Shift-\" + name;\n }\n\n return name;\n }\n\n __name(addModifierNames, \"addModifierNames\");\n\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) {\n return false;\n }\n\n var name = keyNames[event.keyCode];\n\n if (name == null || event.altGraphKey) {\n return false;\n }\n\n if (event.keyCode == 3 && event.code) {\n name = event.code;\n }\n\n return addModifierNames(name, event, noShift);\n }\n\n __name(keyName, \"keyName\");\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val;\n }\n\n __name(getKeyMap, \"getKeyMap\");\n\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges,\n kill = [];\n\n for (var i2 = 0; i2 < ranges.length; i2++) {\n var toKill = compute(ranges[i2]);\n\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break;\n }\n }\n\n kill.push(toKill);\n }\n\n runInOp(cm, function () {\n for (var i3 = kill.length - 1; i3 >= 0; i3--) {\n replaceRange(cm.doc, \"\", kill[i3].from, kill[i3].to, \"+delete\");\n }\n\n ensureCursorVisible(cm);\n });\n }\n\n __name(deleteNearSelection, \"deleteNearSelection\");\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target;\n }\n\n __name(moveCharLogically, \"moveCharLogically\");\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\");\n }\n\n __name(moveLogically, \"moveLogically\");\n\n function endOfLine(visually, cm, lineObj, lineNo2, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") {\n dir = -dir;\n }\n\n var order = getOrder(lineObj, cm.doc.direction);\n\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = dir < 0 == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch2) {\n return measureCharPrepared(cm, prep, ch2).top == targetTop;\n }, dir < 0 == (part.level == 1) ? part.from : part.to - 1, ch);\n\n if (sticky == \"before\") {\n ch = moveCharLogically(lineObj, ch, 1);\n }\n } else {\n ch = dir < 0 ? part.to : part.from;\n }\n\n return new Pos(lineNo2, ch, sticky);\n }\n }\n\n return new Pos(lineNo2, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\");\n }\n\n __name(endOfLine, \"endOfLine\");\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n\n if (!bidi) {\n return moveLogically(line, start, dir);\n }\n\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky),\n part = bidi[partPos];\n\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n return moveLogically(line, start, dir);\n }\n\n var mv = /* @__PURE__ */__name(function (pos, dir2) {\n return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir2);\n }, \"mv\");\n\n var prep;\n\n var getWrappedLineExtent = /* @__PURE__ */__name(function (ch2) {\n if (!cm.options.lineWrapping) {\n return {\n begin: 0,\n end: line.text.length\n };\n }\n\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch2);\n }, \"getWrappedLineExtent\");\n\n var wrappedLineExtent2 = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = part.level == 1 == dir < 0;\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent2.begin : ch <= part.to && ch <= wrappedLineExtent2.end)) {\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky);\n }\n }\n\n var searchInVisualLine = /* @__PURE__ */__name(function (partPos2, dir2, wrappedLineExtent3) {\n var getRes = /* @__PURE__ */__name(function (ch3, moveInStorageOrder3) {\n return moveInStorageOrder3 ? new Pos(start.line, mv(ch3, 1), \"before\") : new Pos(start.line, ch3, \"after\");\n }, \"getRes\");\n\n for (; partPos2 >= 0 && partPos2 < bidi.length; partPos2 += dir2) {\n var part2 = bidi[partPos2];\n var moveInStorageOrder2 = dir2 > 0 == (part2.level != 1);\n var ch2 = moveInStorageOrder2 ? wrappedLineExtent3.begin : mv(wrappedLineExtent3.end, -1);\n\n if (part2.from <= ch2 && ch2 < part2.to) {\n return getRes(ch2, moveInStorageOrder2);\n }\n\n ch2 = moveInStorageOrder2 ? part2.from : mv(part2.to, -1);\n\n if (wrappedLineExtent3.begin <= ch2 && ch2 < wrappedLineExtent3.end) {\n return getRes(ch2, moveInStorageOrder2);\n }\n }\n }, \"searchInVisualLine\");\n\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent2);\n\n if (res) {\n return res;\n }\n\n var nextCh = dir > 0 ? wrappedLineExtent2.end : mv(wrappedLineExtent2.begin, -1);\n\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n\n if (res) {\n return res;\n }\n }\n\n return null;\n }\n\n __name(moveVisually, \"moveVisually\");\n\n var commands = {\n selectAll,\n singleSelection: function (cm) {\n return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n },\n killLine: function (cm) {\n return deleteNearSelection(cm, function (range2) {\n if (range2.empty()) {\n var len = getLine(cm.doc, range2.head.line).text.length;\n\n if (range2.head.ch == len && range2.head.line < cm.lastLine()) {\n return {\n from: range2.head,\n to: Pos(range2.head.line + 1, 0)\n };\n } else {\n return {\n from: range2.head,\n to: Pos(range2.head.line, len)\n };\n }\n } else {\n return {\n from: range2.from(),\n to: range2.to()\n };\n }\n });\n },\n deleteLine: function (cm) {\n return deleteNearSelection(cm, function (range2) {\n return {\n from: Pos(range2.from().line, 0),\n to: clipPos(cm.doc, Pos(range2.to().line + 1, 0))\n };\n });\n },\n delLineLeft: function (cm) {\n return deleteNearSelection(cm, function (range2) {\n return {\n from: Pos(range2.from().line, 0),\n to: range2.from()\n };\n });\n },\n delWrappedLineLeft: function (cm) {\n return deleteNearSelection(cm, function (range2) {\n var top = cm.charCoords(range2.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({\n left: 0,\n top\n }, \"div\");\n return {\n from: leftPos,\n to: range2.from()\n };\n });\n },\n delWrappedLineRight: function (cm) {\n return deleteNearSelection(cm, function (range2) {\n var top = cm.charCoords(range2.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top\n }, \"div\");\n return {\n from: range2.from(),\n to: rightPos\n };\n });\n },\n undo: function (cm) {\n return cm.undo();\n },\n redo: function (cm) {\n return cm.redo();\n },\n undoSelection: function (cm) {\n return cm.undoSelection();\n },\n redoSelection: function (cm) {\n return cm.redoSelection();\n },\n goDocStart: function (cm) {\n return cm.extendSelection(Pos(cm.firstLine(), 0));\n },\n goDocEnd: function (cm) {\n return cm.extendSelection(Pos(cm.lastLine()));\n },\n goLineStart: function (cm) {\n return cm.extendSelectionsBy(function (range2) {\n return lineStart(cm, range2.head.line);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineStartSmart: function (cm) {\n return cm.extendSelectionsBy(function (range2) {\n return lineStartSmart(cm, range2.head);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineEnd: function (cm) {\n return cm.extendSelectionsBy(function (range2) {\n return lineEnd(cm, range2.head.line);\n }, {\n origin: \"+move\",\n bias: -1\n });\n },\n goLineRight: function (cm) {\n return cm.extendSelectionsBy(function (range2) {\n var top = cm.cursorCoords(range2.head, \"div\").top + 5;\n return cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top\n }, \"div\");\n }, sel_move);\n },\n goLineLeft: function (cm) {\n return cm.extendSelectionsBy(function (range2) {\n var top = cm.cursorCoords(range2.head, \"div\").top + 5;\n return cm.coordsChar({\n left: 0,\n top\n }, \"div\");\n }, sel_move);\n },\n goLineLeftSmart: function (cm) {\n return cm.extendSelectionsBy(function (range2) {\n var top = cm.cursorCoords(range2.head, \"div\").top + 5;\n var pos = cm.coordsChar({\n left: 0,\n top\n }, \"div\");\n\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) {\n return lineStartSmart(cm, range2.head);\n }\n\n return pos;\n }, sel_move);\n },\n goLineUp: function (cm) {\n return cm.moveV(-1, \"line\");\n },\n goLineDown: function (cm) {\n return cm.moveV(1, \"line\");\n },\n goPageUp: function (cm) {\n return cm.moveV(-1, \"page\");\n },\n goPageDown: function (cm) {\n return cm.moveV(1, \"page\");\n },\n goCharLeft: function (cm) {\n return cm.moveH(-1, \"char\");\n },\n goCharRight: function (cm) {\n return cm.moveH(1, \"char\");\n },\n goColumnLeft: function (cm) {\n return cm.moveH(-1, \"column\");\n },\n goColumnRight: function (cm) {\n return cm.moveH(1, \"column\");\n },\n goWordLeft: function (cm) {\n return cm.moveH(-1, \"word\");\n },\n goGroupRight: function (cm) {\n return cm.moveH(1, \"group\");\n },\n goGroupLeft: function (cm) {\n return cm.moveH(-1, \"group\");\n },\n goWordRight: function (cm) {\n return cm.moveH(1, \"word\");\n },\n delCharBefore: function (cm) {\n return cm.deleteH(-1, \"codepoint\");\n },\n delCharAfter: function (cm) {\n return cm.deleteH(1, \"char\");\n },\n delWordBefore: function (cm) {\n return cm.deleteH(-1, \"word\");\n },\n delWordAfter: function (cm) {\n return cm.deleteH(1, \"word\");\n },\n delGroupBefore: function (cm) {\n return cm.deleteH(-1, \"group\");\n },\n delGroupAfter: function (cm) {\n return cm.deleteH(1, \"group\");\n },\n indentAuto: function (cm) {\n return cm.indentSelection(\"smart\");\n },\n indentMore: function (cm) {\n return cm.indentSelection(\"add\");\n },\n indentLess: function (cm) {\n return cm.indentSelection(\"subtract\");\n },\n insertTab: function (cm) {\n return cm.replaceSelection(\"\t\");\n },\n insertSoftTab: function (cm) {\n var spaces = [],\n ranges = cm.listSelections(),\n tabSize = cm.options.tabSize;\n\n for (var i2 = 0; i2 < ranges.length; i2++) {\n var pos = ranges[i2].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) {\n cm.indentSelection(\"add\");\n } else {\n cm.execCommand(\"insertTab\");\n }\n },\n transposeChars: function (cm) {\n return runInOp(cm, function () {\n var ranges = cm.listSelections(),\n newSel = [];\n\n for (var i2 = 0; i2 < ranges.length; i2++) {\n if (!ranges[i2].empty()) {\n continue;\n }\n\n var cur = ranges[i2].head,\n line = getLine(cm.doc, cur.line).text;\n\n if (line) {\n if (cur.ch == line.length) {\n cur = new Pos(cur.line, cur.ch - 1);\n }\n\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + prev.charAt(prev.length - 1), Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n\n newSel.push(new Range(cur, cur));\n }\n\n cm.setSelections(newSel);\n });\n },\n newlineAndIndent: function (cm) {\n return runInOp(cm, function () {\n var sels = cm.listSelections();\n\n for (var i2 = sels.length - 1; i2 >= 0; i2--) {\n cm.replaceRange(cm.doc.lineSeparator(), sels[i2].anchor, sels[i2].head, \"+input\");\n }\n\n sels = cm.listSelections();\n\n for (var i$12 = 0; i$12 < sels.length; i$12++) {\n cm.indentLine(sels[i$12].from().line, null, true);\n }\n\n ensureCursorVisible(cm);\n });\n },\n openLine: function (cm) {\n return cm.replaceSelection(\"\\n\", \"start\");\n },\n toggleOverwrite: function (cm) {\n return cm.toggleOverwrite();\n }\n };\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, visual, lineN, 1);\n }\n\n __name(lineStart, \"lineStart\");\n\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, line, lineN, -1);\n }\n\n __name(lineEnd, \"lineEnd\");\n\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky);\n }\n\n return start;\n }\n\n __name(lineStartSmart, \"lineStartSmart\");\n\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n\n if (!bound) {\n return false;\n }\n }\n\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift,\n done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n if (dropShift) {\n cm.display.shift = false;\n }\n\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n\n return done;\n }\n\n __name(doHandleBinding, \"doHandleBinding\");\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i2 = 0; i2 < cm.state.keyMaps.length; i2++) {\n var result = lookupKey(name, cm.state.keyMaps[i2], handle, cm);\n\n if (result) {\n return result;\n }\n }\n\n return cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm) || lookupKey(name, cm.options.keyMap, handle, cm);\n }\n\n __name(lookupKeyForEditor, \"lookupKeyForEditor\");\n\n var stopSeq = new Delayed();\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n\n if (seq) {\n if (isModifierKey(name)) {\n return \"handled\";\n }\n\n if (/\\'$/.test(name)) {\n cm.state.keySeq = null;\n } else {\n stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n });\n }\n\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) {\n return true;\n }\n }\n\n return dispatchKeyInner(cm, name, e, handle);\n }\n\n __name(dispatchKey, \"dispatchKey\");\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\") {\n cm.state.keySeq = name;\n }\n\n if (result == \"handled\") {\n signalLater(cm, \"keyHandled\", cm, name, e);\n }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result;\n }\n\n __name(dispatchKeyInner, \"dispatchKeyInner\");\n\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n\n if (!name) {\n return false;\n }\n\n if (e.shiftKey && !cm.state.keySeq) {\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) {\n return doHandleBinding(cm, b, true);\n }) || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion) {\n return doHandleBinding(cm, b);\n }\n });\n } else {\n return dispatchKey(cm, name, e, function (b) {\n return doHandleBinding(cm, b);\n });\n }\n }\n\n __name(handleKeyBinding, \"handleKeyBinding\");\n\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) {\n return doHandleBinding(cm, b, true);\n });\n }\n\n __name(handleCharBinding, \"handleCharBinding\");\n\n var lastStoppedKey = null;\n\n function onKeyDown(e) {\n var cm = this;\n\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n\n cm.curOp.focus = activeElt();\n\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n if (ie && ie_version < 11 && e.keyCode == 27) {\n e.returnValue = false;\n }\n\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n\n if (presto) {\n lastStoppedKey = handled ? code : null;\n\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n }\n\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) {\n document.execCommand(\"cut\");\n }\n\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className)) {\n showCrossHair(cm);\n }\n }\n\n __name(onKeyDown, \"onKeyDown\");\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n\n __name(up, \"up\");\n\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n __name(showCrossHair, \"showCrossHair\");\n\n function onKeyUp(e) {\n if (e.keyCode == 16) {\n this.doc.sel.shift = false;\n }\n\n signalDOMEvent(this, e);\n }\n\n __name(onKeyUp, \"onKeyUp\");\n\n function onKeyPress(e) {\n var cm = this;\n\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) {\n return;\n }\n\n var keyCode = e.keyCode,\n charCode = e.charCode;\n\n if (presto && keyCode == lastStoppedKey) {\n lastStoppedKey = null;\n e_preventDefault(e);\n return;\n }\n\n if (presto && (!e.which || e.which < 10) && handleKeyBinding(cm, e)) {\n return;\n }\n\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n\n if (ch == \"\\b\") {\n return;\n }\n\n if (handleCharBinding(cm, e, ch)) {\n return;\n }\n\n cm.display.input.onKeyPress(e);\n }\n\n __name(onKeyPress, \"onKeyPress\");\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = /* @__PURE__ */__name(function (time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n }, \"PastClick\");\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time && cmp(pos, this.pos) == 0 && button == this.button;\n };\n\n var lastClick, lastDoubleClick;\n\n function clickRepeat(pos, button) {\n var now = +new Date();\n\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\";\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\";\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\";\n }\n }\n\n __name(clickRepeat, \"clickRepeat\");\n\n function onMouseDown(e) {\n var cm = this,\n display = cm.display;\n\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) {\n return;\n }\n\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n display.scroller.draggable = false;\n setTimeout(function () {\n return display.scroller.draggable = true;\n }, 100);\n }\n\n return;\n }\n\n if (clickInGutter(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e),\n button = e_button(e),\n repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n if (button == 1 && cm.state.selectingText) {\n cm.state.selectingText(e);\n }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) {\n return;\n }\n\n if (button == 1) {\n if (pos) {\n leftButtonDown(cm, pos, repeat, e);\n } else if (e_target(e) == display.scroller) {\n e_preventDefault(e);\n }\n } else if (button == 2) {\n if (pos) {\n extendSelection(cm.doc, pos);\n }\n\n setTimeout(function () {\n return display.input.focus();\n }, 20);\n } else if (button == 3) {\n if (captureRightClick) {\n cm.display.input.onContextMenu(e);\n } else {\n delayBlurEvent(cm);\n }\n }\n }\n\n __name(onMouseDown, \"onMouseDown\");\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n\n if (repeat == \"double\") {\n name = \"Double\" + name;\n } else if (repeat == \"triple\") {\n name = \"Triple\" + name;\n }\n\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n }\n\n if (!bound) {\n return false;\n }\n\n var done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n\n return done;\n });\n }\n\n __name(handleMappedButton, \"handleMappedButton\");\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n\n if (value.extend == null || cm.doc.extend) {\n value.extend = cm.doc.extend || event.shiftKey;\n }\n\n if (value.addNew == null) {\n value.addNew = mac ? event.metaKey : event.ctrlKey;\n }\n\n if (value.moveOnDrag == null) {\n value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey);\n }\n\n return value;\n }\n\n __name(configureMouse, \"configureMouse\");\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) {\n setTimeout(bind(ensureFocus, cm), 0);\n } else {\n cm.curOp.focus = activeElt();\n }\n\n var behavior = configureMouse(cm, repeat, event);\n var sel = cm.doc.sel,\n contained;\n\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && repeat == \"single\" && (contained = sel.contains(pos)) > -1 && (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) {\n leftButtonStartDrag(cm, event, pos, behavior);\n } else {\n leftButtonSelect(cm, event, pos, behavior);\n }\n }\n\n __name(leftButtonDown, \"leftButtonDown\");\n\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display,\n moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) {\n display.scroller.draggable = false;\n }\n\n cm.state.draggingText = false;\n\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) {\n cm.state.delayingBlurEvent = false;\n } else {\n delayBlurEvent(cm);\n }\n }\n\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n\n if (!moved) {\n e_preventDefault(e);\n\n if (!behavior.addNew) {\n extendSelection(cm.doc, pos, null, null, behavior.extend);\n }\n\n if (webkit && !safari || ie && ie_version == 9) {\n setTimeout(function () {\n display.wrapper.ownerDocument.body.focus({\n preventScroll: true\n });\n display.input.focus();\n }, 20);\n } else {\n display.input.focus();\n }\n }\n });\n\n var mouseMove = /* @__PURE__ */__name(function (e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n }, \"mouseMove\");\n\n var dragStart = /* @__PURE__ */__name(function () {\n return moved = true;\n }, \"dragStart\");\n\n if (webkit) {\n display.scroller.draggable = true;\n }\n\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n cm.state.delayingBlurEvent = true;\n setTimeout(function () {\n return display.input.focus();\n }, 20);\n\n if (display.scroller.dragDrop) {\n display.scroller.dragDrop();\n }\n }\n\n __name(leftButtonStartDrag, \"leftButtonStartDrag\");\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") {\n return new Range(pos, pos);\n }\n\n if (unit == \"word\") {\n return cm.findWordAt(pos);\n }\n\n if (unit == \"line\") {\n return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n var result = unit(cm, pos);\n return new Range(result.from, result.to);\n }\n\n __name(rangeForUnit, \"rangeForUnit\");\n\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) {\n delayBlurEvent(cm);\n }\n\n var display = cm.display,\n doc = cm.doc;\n e_preventDefault(event);\n var ourRange,\n ourIndex,\n startSel = doc.sel,\n ranges = startSel.ranges;\n\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n\n if (ourIndex > -1) {\n ourRange = ranges[ourIndex];\n } else {\n ourRange = new Range(start, start);\n }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) {\n ourRange = new Range(start, start);\n }\n\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range2 = rangeForUnit(cm, start, behavior.unit);\n\n if (behavior.extend) {\n ourRange = extendRange(ourRange, range2.anchor, range2.head, behavior.extend);\n } else {\n ourRange = range2;\n }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), {\n scroll: false,\n origin: \"*mouse\"\n });\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), {\n scroll: false,\n origin: \"*mouse\"\n });\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) {\n return;\n }\n\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges2 = [],\n tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol),\n right = Math.max(startCol, posCol);\n\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); line <= end; line++) {\n var text = getLine(doc, line).text,\n leftPos = findColumn(text, left, tabSize);\n\n if (left == right) {\n ranges2.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n } else if (text.length > leftPos) {\n ranges2.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));\n }\n }\n\n if (!ranges2.length) {\n ranges2.push(new Range(start, start));\n }\n\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges2), ourIndex), {\n origin: \"*mouse\",\n scroll: false\n });\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range3 = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor,\n head;\n\n if (cmp(range3.anchor, anchor) > 0) {\n head = range3.head;\n anchor = minPos(oldRange.from(), range3.anchor);\n } else {\n head = range3.anchor;\n anchor = maxPos(oldRange.to(), range3.head);\n }\n\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n __name(extendTo, \"extendTo\");\n\n var editorSize = display.wrapper.getBoundingClientRect();\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n\n if (!cur) {\n return;\n }\n\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n\n if (cur.line >= visible.to || cur.line < visible.from) {\n setTimeout(operation(cm, function () {\n if (counter == curCount) {\n extend(e);\n }\n }), 150);\n }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n\n if (outside) {\n setTimeout(operation(cm, function () {\n if (counter != curCount) {\n return;\n }\n\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50);\n }\n }\n }\n\n __name(extend, \"extend\");\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n __name(done, \"done\");\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) {\n done(e);\n } else {\n extend(e);\n }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n __name(leftButtonSelect, \"leftButtonSelect\");\n\n function bidiSimplify(cm, range2) {\n var anchor = range2.anchor;\n var head = range2.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) {\n return range2;\n }\n\n var order = getOrder(anchorLine);\n\n if (!order) {\n return range2;\n }\n\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky),\n part = order[index];\n\n if (part.from != anchor.ch && part.to != anchor.ch) {\n return range2;\n }\n\n var boundary = index + (part.from == anchor.ch == (part.level != 1) ? 0 : 1);\n\n if (boundary == 0 || boundary == order.length) {\n return range2;\n }\n\n var leftSide;\n\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n\n if (headIndex == boundary - 1 || headIndex == boundary) {\n leftSide = dir < 0;\n } else {\n leftSide = dir > 0;\n }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to,\n sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range2 : new Range(new Pos(anchor.line, ch, sticky), head);\n }\n\n __name(bidiSimplify, \"bidiSimplify\");\n\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try {\n mX = e.clientX;\n mY = e.clientY;\n } catch (e$1) {\n return false;\n }\n }\n\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) {\n return false;\n }\n\n if (prevent) {\n e_preventDefault(e);\n }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) {\n return e_defaultPrevented(e);\n }\n\n mY -= lineBox.top - display.viewOffset;\n\n for (var i2 = 0; i2 < cm.display.gutterSpecs.length; ++i2) {\n var g = display.gutters.childNodes[i2];\n\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i2];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e);\n }\n }\n }\n\n __name(gutterEvent, \"gutterEvent\");\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true);\n }\n\n __name(clickInGutter, \"clickInGutter\");\n\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) {\n return;\n }\n\n if (signalDOMEvent(cm, e, \"contextmenu\")) {\n return;\n }\n\n if (!captureRightClick) {\n cm.display.input.onContextMenu(e);\n }\n }\n\n __name(onContextMenu, \"onContextMenu\");\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) {\n return false;\n }\n\n return gutterEvent(cm, e, \"gutterContextMenu\", false);\n }\n\n __name(contextMenuInGutter, \"contextMenuInGutter\");\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") + cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n __name(themeChanged, \"themeChanged\");\n\n var Init = {\n toString: function () {\n return \"CodeMirror.Init\";\n }\n };\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror3) {\n var optionHandlers2 = CodeMirror3.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror3.defaults[name] = deflt;\n\n if (handle) {\n optionHandlers2[name] = notOnInit ? function (cm, val, old) {\n if (old != Init) {\n handle(cm, val, old);\n }\n } : handle;\n }\n }\n\n __name(option, \"option\");\n\n CodeMirror3.defineOption = option;\n CodeMirror3.Init = Init;\n option(\"value\", \"\", function (cm, val) {\n return cm.setValue(val);\n }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n\n if (!val) {\n return;\n }\n\n var newBreaks = [],\n lineNo2 = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n\n if (found == -1) {\n break;\n }\n\n pos = found + val.length;\n newBreaks.push(Pos(lineNo2, found));\n }\n\n lineNo2++;\n });\n\n for (var i2 = newBreaks.length - 1; i2 >= 0; i2--) {\n replaceRange(cm.doc, val, newBreaks[i2], Pos(newBreaks[i2].line, newBreaks[i2].ch + val.length));\n }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\t\") ? \"\" : \"|\t\"), \"g\");\n\n if (old != Init) {\n cm.refresh();\n }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) {\n return cm.refresh();\n }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\");\n }, true);\n option(\"spellcheck\", false, function (cm, val) {\n return cm.getInputField().spellcheck = val;\n }, true);\n option(\"autocorrect\", false, function (cm, val) {\n return cm.getInputField().autocorrect = val;\n }, true);\n option(\"autocapitalize\", false, function (cm, val) {\n return cm.getInputField().autocapitalize = val;\n }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n\n if (prev && prev.detach) {\n prev.detach(cm, next);\n }\n\n if (next.attach) {\n next.attach(cm, prev || null);\n }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) {\n return updateScrollbars(cm);\n }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) {\n return integer;\n }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n\n cm.display.input.readOnlyChanged(val);\n });\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = val === \"\" ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n option(\"disableInput\", false, function (cm, val) {\n if (!val) {\n cm.display.input.reset();\n }\n }, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) {\n return cm.doc.history.undoDepth = val;\n });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) {\n return cm.refresh();\n }, true);\n option(\"maxHighlightLength\", 1e4, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) {\n cm.display.input.resetPosition();\n }\n });\n option(\"tabindex\", null, function (cm, val) {\n return cm.display.input.getField().tabIndex = val || \"\";\n });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) {\n return cm.doc.setDirection(val);\n }, true);\n option(\"phrases\", null);\n }\n\n __name(defineOptions, \"defineOptions\");\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n __name(dragDropChanged, \"dragDropChanged\");\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () {\n return updateScrollbars(cm);\n }, 100);\n }\n\n __name(wrappingChanged, \"wrappingChanged\");\n\n function CodeMirror2(place, options) {\n var this$1$1 = this;\n\n if (!(this instanceof CodeMirror2)) {\n return new CodeMirror2(place, options);\n }\n\n this.options = options = options ? copyObj(options) : {};\n copyObj(defaults, options, false);\n var doc = options.value;\n\n if (typeof doc == \"string\") {\n doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction);\n } else if (options.mode) {\n doc.modeOption = options.mode;\n }\n\n this.doc = doc;\n var input = new CodeMirror2.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n\n if (options.lineWrapping) {\n this.display.wrapper.className += \" CodeMirror-wrap\";\n }\n\n initScrollbars(this);\n this.state = {\n keyMaps: [],\n overlays: [],\n modeGen: 0,\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false,\n pasteIncoming: -1,\n cutIncoming: -1,\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(),\n keySeq: null,\n specialChars: null\n };\n\n if (options.autofocus && !mobile) {\n display.input.focus();\n }\n\n if (ie && ie_version < 11) {\n setTimeout(function () {\n return this$1$1.display.input.reset(true);\n }, 20);\n }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if (options.autofocus && !mobile || this.hasFocus()) {\n setTimeout(function () {\n if (this$1$1.hasFocus() && !this$1$1.state.focused) {\n onFocus(this$1$1);\n }\n }, 20);\n } else {\n onBlur(this);\n }\n\n for (var opt in optionHandlers) {\n if (optionHandlers.hasOwnProperty(opt)) {\n optionHandlers[opt](this, options[opt], Init);\n }\n }\n\n maybeUpdateLineNumberWidth(this);\n\n if (options.finishInit) {\n options.finishInit(this);\n }\n\n for (var i2 = 0; i2 < initHooks.length; ++i2) {\n initHooks[i2](this);\n }\n\n endOperation(this);\n\n if (webkit && options.lineWrapping && getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\") {\n display.lineDiv.style.textRendering = \"auto\";\n }\n }\n\n __name(CodeMirror2, \"CodeMirror\");\n\n CodeMirror2.defaults = defaults;\n CodeMirror2.optionHandlers = optionHandlers;\n\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n\n if (ie && ie_version < 11) {\n on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e);\n\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n }));\n } else {\n on(d.scroller, \"dblclick\", function (e) {\n return signalDOMEvent(cm, e) || e_preventDefault(e);\n });\n }\n\n on(d.scroller, \"contextmenu\", function (e) {\n return onContextMenu(cm, e);\n });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) {\n onContextMenu(cm, e);\n }\n });\n var touchFinished,\n prevTouch = {\n end: 0\n };\n\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () {\n return d.activeTouch = null;\n }, 1e3);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date();\n }\n }\n\n __name(finishTouch, \"finishTouch\");\n\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) {\n return false;\n }\n\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1;\n }\n\n __name(isMouseLikeTouchEvent, \"isMouseLikeTouchEvent\");\n\n function farAway(touch, other) {\n if (other.left == null) {\n return true;\n }\n\n var dx = other.left - touch.left,\n dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20;\n }\n\n __name(farAway, \"farAway\");\n\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date();\n d.activeTouch = {\n start: now,\n moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null\n };\n\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) {\n d.activeTouch.moved = true;\n }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n\n if (touch && !eventInWidget(d, e) && touch.left != null && !touch.moved && new Date() - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"),\n range2;\n\n if (!touch.prev || farAway(touch, touch.prev)) {\n range2 = new Range(pos, pos);\n } else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) {\n range2 = cm.findWordAt(pos);\n } else {\n range2 = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n cm.setSelection(range2.anchor, range2.head);\n cm.focus();\n e_preventDefault(e);\n }\n\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n on(d.scroller, \"mousewheel\", function (e) {\n return onScrollWheel(cm, e);\n });\n on(d.scroller, \"DOMMouseScroll\", function (e) {\n return onScrollWheel(cm, e);\n });\n on(d.wrapper, \"scroll\", function () {\n return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0;\n });\n d.dragFunctions = {\n enter: function (e) {\n if (!signalDOMEvent(cm, e)) {\n e_stop(e);\n }\n },\n over: function (e) {\n if (!signalDOMEvent(cm, e)) {\n onDragOver(cm, e);\n e_stop(e);\n }\n },\n start: function (e) {\n return onDragStart(cm, e);\n },\n drop: operation(cm, onDrop),\n leave: function (e) {\n if (!signalDOMEvent(cm, e)) {\n clearDragCursor(cm);\n }\n }\n };\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) {\n return onKeyUp.call(cm, e);\n });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) {\n return onFocus(cm, e);\n });\n on(inp, \"blur\", function (e) {\n return onBlur(cm, e);\n });\n }\n\n __name(registerEventHandlers, \"registerEventHandlers\");\n\n var initHooks = [];\n\n CodeMirror2.defineInitHook = function (f) {\n return initHooks.push(f);\n };\n\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc,\n state;\n\n if (how == null) {\n how = \"add\";\n }\n\n if (how == \"smart\") {\n if (!doc.mode.indent) {\n how = \"prev\";\n } else {\n state = getContextBefore(cm, n).state;\n }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n),\n curSpace = countColumn(line.text, null, tabSize);\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n var curSpaceString = line.text.match(/^\\s*/)[0],\n indentation;\n\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) {\n return;\n }\n\n how = \"prev\";\n }\n }\n\n if (how == \"prev\") {\n if (n > doc.first) {\n indentation = countColumn(getLine(doc, n - 1).text, null, tabSize);\n } else {\n indentation = 0;\n }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n\n indentation = Math.max(0, indentation);\n var indentString = \"\",\n pos = 0;\n\n if (cm.options.indentWithTabs) {\n for (var i2 = Math.floor(indentation / tabSize); i2; --i2) {\n pos += tabSize;\n indentString += \"\t\";\n }\n }\n\n if (pos < indentation) {\n indentString += spaceStr(indentation - pos);\n }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true;\n } else {\n for (var i$12 = 0; i$12 < doc.sel.ranges.length; i$12++) {\n var range2 = doc.sel.ranges[i$12];\n\n if (range2.head.line == n && range2.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$12, new Range(pos$1, pos$1));\n break;\n }\n }\n }\n }\n\n __name(indentLine, \"indentLine\");\n\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n __name(setLastCopied, \"setLastCopied\");\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n\n if (!sel) {\n sel = doc.sel;\n }\n\n var recent = +new Date() - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted),\n multiPaste = null;\n\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n\n for (var i2 = 0; i2 < lastCopied.text.length; i2++) {\n multiPaste.push(doc.splitLines(lastCopied.text[i2]));\n }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) {\n return [l];\n });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n\n for (var i$12 = sel.ranges.length - 1; i$12 >= 0; i$12--) {\n var range2 = sel.ranges[i$12];\n var from = range2.from(),\n to = range2.to();\n\n if (range2.empty()) {\n if (deleted && deleted > 0) {\n from = Pos(from.line, from.ch - deleted);\n } else if (cm.state.overwrite && !paste) {\n to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));\n } else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\")) {\n from = to = Pos(from.line, 0);\n }\n }\n\n var changeEvent = {\n from,\n to,\n text: multiPaste ? multiPaste[i$12 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")\n };\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n\n if (inserted && !paste) {\n triggerElectric(cm, inserted);\n }\n\n ensureCursorVisible(cm);\n\n if (cm.curOp.updateInput < 2) {\n cm.curOp.updateInput = updateInput;\n }\n\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n __name(applyTextInput, \"applyTextInput\");\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n\n if (pasted) {\n e.preventDefault();\n\n if (!cm.isReadOnly() && !cm.options.disableInput) {\n runInOp(cm, function () {\n return applyTextInput(cm, pasted, 0, null, \"paste\");\n });\n }\n\n return true;\n }\n }\n\n __name(handlePaste, \"handlePaste\");\n\n function triggerElectric(cm, inserted) {\n if (!cm.options.electricChars || !cm.options.smartIndent) {\n return;\n }\n\n var sel = cm.doc.sel;\n\n for (var i2 = sel.ranges.length - 1; i2 >= 0; i2--) {\n var range2 = sel.ranges[i2];\n\n if (range2.head.ch > 100 || i2 && sel.ranges[i2 - 1].head.line == range2.head.line) {\n continue;\n }\n\n var mode = cm.getModeAt(range2.head);\n var indented = false;\n\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++) {\n if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range2.head.line, \"smart\");\n break;\n }\n }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range2.head.line).text.slice(0, range2.head.ch))) {\n indented = indentLine(cm, range2.head.line, \"smart\");\n }\n }\n\n if (indented) {\n signalLater(cm, \"electricInput\", cm, range2.head.line);\n }\n }\n }\n\n __name(triggerElectric, \"triggerElectric\");\n\n function copyableRanges(cm) {\n var text = [],\n ranges = [];\n\n for (var i2 = 0; i2 < cm.doc.sel.ranges.length; i2++) {\n var line = cm.doc.sel.ranges[i2].head.line;\n var lineRange = {\n anchor: Pos(line, 0),\n head: Pos(line + 1, 0)\n };\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n\n return {\n text,\n ranges\n };\n }\n\n __name(copyableRanges, \"copyableRanges\");\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n __name(disableBrowserMagic, \"disableBrowserMagic\");\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n\n if (webkit) {\n te.style.width = \"1000px\";\n } else {\n te.setAttribute(\"wrap\", \"off\");\n }\n\n if (ios) {\n te.style.border = \"1px solid black\";\n }\n\n disableBrowserMagic(te);\n return div;\n }\n\n __name(hiddenTextarea, \"hiddenTextarea\");\n\n function addEditorMethods(CodeMirror3) {\n var optionHandlers2 = CodeMirror3.optionHandlers;\n var helpers = CodeMirror3.helpers = {};\n CodeMirror3.prototype = {\n constructor: CodeMirror3,\n focus: function () {\n window.focus();\n this.display.input.focus();\n },\n setOption: function (option, value) {\n var options = this.options,\n old = options[option];\n\n if (options[option] == value && option != \"mode\") {\n return;\n }\n\n options[option] = value;\n\n if (optionHandlers2.hasOwnProperty(option)) {\n operation(this, optionHandlers2[option])(this, value, old);\n }\n\n signal(this, \"optionChange\", this, option);\n },\n getOption: function (option) {\n return this.options[option];\n },\n getDoc: function () {\n return this.doc;\n },\n addKeyMap: function (map2, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map2));\n },\n removeKeyMap: function (map2) {\n var maps = this.state.keyMaps;\n\n for (var i2 = 0; i2 < maps.length; ++i2) {\n if (maps[i2] == map2 || maps[i2].name == map2) {\n maps.splice(i2, 1);\n return true;\n }\n }\n },\n addOverlay: methodOp(function (spec, options) {\n var mode = spec.token ? spec : CodeMirror3.getMode(this.options, spec);\n\n if (mode.startState) {\n throw new Error(\"Overlays may not be stateful.\");\n }\n\n insertSorted(this.state.overlays, {\n mode,\n modeSpec: spec,\n opaque: options && options.opaque,\n priority: options && options.priority || 0\n }, function (overlay) {\n return overlay.priority;\n });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function (spec) {\n var overlays = this.state.overlays;\n\n for (var i2 = 0; i2 < overlays.length; ++i2) {\n var cur = overlays[i2].modeSpec;\n\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i2, 1);\n this.state.modeGen++;\n regChange(this);\n return;\n }\n }\n }),\n indentLine: methodOp(function (n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) {\n dir = this.options.smartIndent ? \"smart\" : \"prev\";\n } else {\n dir = dir ? \"add\" : \"subtract\";\n }\n }\n\n if (isLine(this.doc, n)) {\n indentLine(this, n, dir, aggressive);\n }\n }),\n indentSelection: methodOp(function (how) {\n var ranges = this.doc.sel.ranges,\n end = -1;\n\n for (var i2 = 0; i2 < ranges.length; i2++) {\n var range2 = ranges[i2];\n\n if (!range2.empty()) {\n var from = range2.from(),\n to = range2.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n\n for (var j = start; j < end; ++j) {\n indentLine(this, j, how);\n }\n\n var newRanges = this.doc.sel.ranges;\n\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i2].from().ch > 0) {\n replaceOneSelection(this.doc, i2, new Range(from, newRanges[i2].to()), sel_dontScroll);\n }\n } else if (range2.head.line > end) {\n indentLine(this, range2.head.line, how, true);\n end = range2.head.line;\n\n if (i2 == this.doc.sel.primIndex) {\n ensureCursorVisible(this);\n }\n }\n }\n }),\n getTokenAt: function (pos, precise) {\n return takeToken(this, pos, precise);\n },\n getLineTokens: function (line, precise) {\n return takeToken(this, Pos(line), precise, true);\n },\n getTokenTypeAt: function (pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0,\n after = (styles.length - 1) / 2,\n ch = pos.ch;\n var type;\n\n if (ch == 0) {\n type = styles[2];\n } else {\n for (;;) {\n var mid = before + after >> 1;\n\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) {\n after = mid;\n } else if (styles[mid * 2 + 1] < ch) {\n before = mid + 1;\n } else {\n type = styles[mid * 2 + 2];\n break;\n }\n }\n }\n\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\n },\n getModeAt: function (pos) {\n var mode = this.doc.mode;\n\n if (!mode.innerMode) {\n return mode;\n }\n\n return CodeMirror3.innerMode(mode, this.getTokenAt(pos).state).mode;\n },\n getHelper: function (pos, type) {\n return this.getHelpers(pos, type)[0];\n },\n getHelpers: function (pos, type) {\n var found = [];\n\n if (!helpers.hasOwnProperty(type)) {\n return found;\n }\n\n var help = helpers[type],\n mode = this.getModeAt(pos);\n\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) {\n found.push(help[mode[type]]);\n }\n } else if (mode[type]) {\n for (var i2 = 0; i2 < mode[type].length; i2++) {\n var val = help[mode[type][i2]];\n\n if (val) {\n found.push(val);\n }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n\n for (var i$12 = 0; i$12 < help._global.length; i$12++) {\n var cur = help._global[i$12];\n\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) {\n found.push(cur.val);\n }\n }\n\n return found;\n },\n getStateAfter: function (line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1 : line);\n return getContextBefore(this, line + 1, precise).state;\n },\n cursorCoords: function (start, mode) {\n var pos,\n range2 = this.doc.sel.primary();\n\n if (start == null) {\n pos = range2.head;\n } else if (typeof start == \"object\") {\n pos = clipPos(this.doc, start);\n } else {\n pos = start ? range2.from() : range2.to();\n }\n\n return cursorCoords(this, pos, mode || \"page\");\n },\n charCoords: function (pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\");\n },\n coordsChar: function (coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top);\n },\n lineAtHeight: function (height, mode) {\n height = fromCoordSystem(this, {\n top: height,\n left: 0\n }, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset);\n },\n heightAtLine: function (line, mode, includeWidgets) {\n var end = false,\n lineObj;\n\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n\n if (line < this.doc.first) {\n line = this.doc.first;\n } else if (line > last) {\n line = last;\n end = true;\n }\n\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n\n return intoCoordSystem(this, lineObj, {\n top: 0,\n left: 0\n }, mode || \"page\", includeWidgets || end).top + (end ? this.doc.height - heightAtLine(lineObj) : 0);\n },\n defaultTextHeight: function () {\n return textHeight(this.display);\n },\n defaultCharWidth: function () {\n return charWidth(this.display);\n },\n getViewport: function () {\n return {\n from: this.display.viewFrom,\n to: this.display.viewTo\n };\n },\n addWidget: function (pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom,\n left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n\n if ((vert == \"above\" || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) {\n top = pos.top - node.offsetHeight;\n } else if (pos.bottom + node.offsetHeight <= vspace) {\n top = pos.bottom;\n }\n\n if (left + node.offsetWidth > hspace) {\n left = hspace - node.offsetWidth;\n }\n }\n\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") {\n left = 0;\n } else if (horiz == \"middle\") {\n left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n }\n\n node.style.left = left + \"px\";\n }\n\n if (scroll) {\n scrollIntoView(this, {\n left,\n top,\n right: left + node.offsetWidth,\n bottom: top + node.offsetHeight\n });\n }\n },\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n execCommand: function (cmd) {\n if (commands.hasOwnProperty(cmd)) {\n return commands[cmd].call(null, this);\n }\n },\n triggerElectric: methodOp(function (text) {\n triggerElectric(this, text);\n }),\n findPosH: function (from, amount, unit, visually) {\n var dir = 1;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = clipPos(this.doc, from);\n\n for (var i2 = 0; i2 < amount; ++i2) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveH: methodOp(function (dir, unit) {\n var this$1$1 = this;\n this.extendSelectionsBy(function (range2) {\n if (this$1$1.display.shift || this$1$1.doc.extend || range2.empty()) {\n return findPosH(this$1$1.doc, range2.head, dir, unit, this$1$1.options.rtlMoveVisually);\n } else {\n return dir < 0 ? range2.from() : range2.to();\n }\n }, sel_move);\n }),\n deleteH: methodOp(function (dir, unit) {\n var sel = this.doc.sel,\n doc = this.doc;\n\n if (sel.somethingSelected()) {\n doc.replaceSelection(\"\", null, \"+delete\");\n } else {\n deleteNearSelection(this, function (range2) {\n var other = findPosH(doc, range2.head, dir, unit, false);\n return dir < 0 ? {\n from: other,\n to: range2.head\n } : {\n from: range2.head,\n to: other\n };\n });\n }\n }),\n findPosV: function (from, amount, unit, goalColumn) {\n var dir = 1,\n x = goalColumn;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = clipPos(this.doc, from);\n\n for (var i2 = 0; i2 < amount; ++i2) {\n var coords = cursorCoords(this, cur, \"div\");\n\n if (x == null) {\n x = coords.left;\n } else {\n coords.left = x;\n }\n\n cur = findPosV(this, coords, dir, unit);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveV: methodOp(function (dir, unit) {\n var this$1$1 = this;\n var doc = this.doc,\n goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range2) {\n if (collapse) {\n return dir < 0 ? range2.from() : range2.to();\n }\n\n var headPos = cursorCoords(this$1$1, range2.head, \"div\");\n\n if (range2.goalColumn != null) {\n headPos.left = range2.goalColumn;\n }\n\n goals.push(headPos.left);\n var pos = findPosV(this$1$1, headPos, dir, unit);\n\n if (unit == \"page\" && range2 == doc.sel.primary()) {\n addToScrollTop(this$1$1, charCoords(this$1$1, pos, \"div\").top - headPos.top);\n }\n\n return pos;\n }, sel_move);\n\n if (goals.length) {\n for (var i2 = 0; i2 < doc.sel.ranges.length; i2++) {\n doc.sel.ranges[i2].goalColumn = goals[i2];\n }\n }\n }),\n findWordAt: function (pos) {\n var doc = this.doc,\n line = getLine(doc, pos.line).text;\n var start = pos.ch,\n end = pos.ch;\n\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n\n if ((pos.sticky == \"before\" || end == line.length) && start) {\n --start;\n } else {\n ++end;\n }\n\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper) ? function (ch) {\n return isWordChar(ch, helper);\n } : /\\s/.test(startChar) ? function (ch) {\n return /\\s/.test(ch);\n } : function (ch) {\n return !/\\s/.test(ch) && !isWordChar(ch);\n };\n\n while (start > 0 && check(line.charAt(start - 1))) {\n --start;\n }\n\n while (end < line.length && check(line.charAt(end))) {\n ++end;\n }\n }\n\n return new Range(Pos(pos.line, start), Pos(pos.line, end));\n },\n toggleOverwrite: function (value) {\n if (value != null && value == this.state.overwrite) {\n return;\n }\n\n if (this.state.overwrite = !this.state.overwrite) {\n addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n } else {\n rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function () {\n return this.display.input.getField() == activeElt();\n },\n isReadOnly: function () {\n return !!(this.options.readOnly || this.doc.cantEdit);\n },\n scrollTo: methodOp(function (x, y) {\n scrollToCoords(this, x, y);\n }),\n getScrollInfo: function () {\n var scroller = this.display.scroller;\n return {\n left: scroller.scrollLeft,\n top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this),\n clientWidth: displayWidth(this)\n };\n },\n scrollIntoView: methodOp(function (range2, margin) {\n if (range2 == null) {\n range2 = {\n from: this.doc.sel.primary().head,\n to: null\n };\n\n if (margin == null) {\n margin = this.options.cursorScrollMargin;\n }\n } else if (typeof range2 == \"number\") {\n range2 = {\n from: Pos(range2, 0),\n to: null\n };\n } else if (range2.from == null) {\n range2 = {\n from: range2,\n to: null\n };\n }\n\n if (!range2.to) {\n range2.to = range2.from;\n }\n\n range2.margin = margin || 0;\n\n if (range2.from.line != null) {\n scrollToRange(this, range2);\n } else {\n scrollToCoordsRange(this, range2.from, range2.to, range2.margin);\n }\n }),\n setSize: methodOp(function (width, height) {\n var this$1$1 = this;\n\n var interpret = /* @__PURE__ */__name(function (val) {\n return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n }, \"interpret\");\n\n if (width != null) {\n this.display.wrapper.style.width = interpret(width);\n }\n\n if (height != null) {\n this.display.wrapper.style.height = interpret(height);\n }\n\n if (this.options.lineWrapping) {\n clearLineMeasurementCache(this);\n }\n\n var lineNo2 = this.display.viewFrom;\n this.doc.iter(lineNo2, this.display.viewTo, function (line) {\n if (line.widgets) {\n for (var i2 = 0; i2 < line.widgets.length; i2++) {\n if (line.widgets[i2].noHScroll) {\n regLineChange(this$1$1, lineNo2, \"widget\");\n break;\n }\n }\n }\n\n ++lineNo2;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n operation: function (f) {\n return runInOp(this, f);\n },\n startOperation: function () {\n return startOperation(this);\n },\n endOperation: function () {\n return endOperation(this);\n },\n refresh: methodOp(function () {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > 0.5 || this.options.lineWrapping) {\n estimateLineHeights(this);\n }\n\n signal(this, \"refresh\", this);\n }),\n swapDoc: methodOp(function (doc) {\n var old = this.doc;\n old.cm = null;\n\n if (this.state.selectingText) {\n this.state.selectingText();\n }\n\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old;\n }),\n phrase: function (phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText;\n },\n getInputField: function () {\n return this.display.input.getField();\n },\n getWrapperElement: function () {\n return this.display.wrapper;\n },\n getScrollerElement: function () {\n return this.display.scroller;\n },\n getGutterElement: function () {\n return this.display.gutters;\n }\n };\n eventMixin(CodeMirror3);\n\n CodeMirror3.registerHelper = function (type, name, value) {\n if (!helpers.hasOwnProperty(type)) {\n helpers[type] = CodeMirror3[type] = {\n _global: []\n };\n }\n\n helpers[type][name] = value;\n };\n\n CodeMirror3.registerGlobalHelper = function (type, name, predicate, value) {\n CodeMirror3.registerHelper(type, name, value);\n\n helpers[type]._global.push({\n pred: predicate,\n val: value\n });\n };\n }\n\n __name(addEditorMethods, \"addEditorMethods\");\n\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n\n function findNextLine() {\n var l = pos.line + lineDir;\n\n if (l < doc.first || l >= doc.first + doc.size) {\n return false;\n }\n\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l);\n }\n\n __name(findNextLine, \"findNextLine\");\n\n function moveOnce(boundToLine) {\n var next;\n\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 55296 && ch < 56320 : ch >= 56320 && ch < 57343;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n\n if (next == null) {\n if (!boundToLine && findNextLine()) {\n pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir);\n } else {\n return false;\n }\n } else {\n pos = next;\n }\n\n return true;\n }\n\n __name(moveOnce, \"moveOnce\");\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null,\n group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) {\n break;\n }\n\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\" : group && cur == \"\\n\" ? \"n\" : !group || /\\s/.test(cur) ? null : \"p\";\n\n if (group && !first && !type) {\n type = \"s\";\n }\n\n if (sawType && sawType != type) {\n if (dir < 0) {\n dir = 1;\n moveOnce();\n pos.sticky = \"after\";\n }\n\n break;\n }\n\n if (type) {\n sawType = type;\n }\n\n if (dir > 0 && !moveOnce(!first)) {\n break;\n }\n }\n }\n\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n\n if (equalCursorPos(oldPos, result)) {\n result.hitSide = true;\n }\n\n return result;\n }\n\n __name(findPosH, \"findPosH\");\n\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc,\n x = pos.left,\n y;\n\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - 0.5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n\n var target;\n\n for (;;) {\n target = coordsChar(cm, x, y);\n\n if (!target.outside) {\n break;\n }\n\n if (dir < 0 ? y <= 0 : y >= doc.height) {\n target.hitSide = true;\n break;\n }\n\n y += dir * 5;\n }\n\n return target;\n }\n\n __name(findPosV, \"findPosV\");\n\n var ContentEditableInput = /* @__PURE__ */__name(function (cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n }, \"ContentEditableInput\");\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1$1 = this;\n var input = this,\n cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) {\n return true;\n }\n\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) {\n break;\n }\n }\n\n return false;\n }\n\n __name(belongsToInput, \"belongsToInput\");\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n }\n\n if (ie_version <= 11) {\n setTimeout(operation(cm, function () {\n return this$1$1.updateFromDOM();\n }), 20);\n }\n });\n on(div, \"compositionstart\", function (e) {\n this$1$1.composing = {\n data: e.data,\n done: false\n };\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1$1.composing) {\n this$1$1.composing = {\n data: e.data,\n done: false\n };\n }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1$1.composing) {\n if (e.data != this$1$1.composing.data) {\n this$1$1.readFromDOMSoon();\n }\n\n this$1$1.composing.done = true;\n }\n });\n on(div, \"touchstart\", function () {\n return input.forceCompositionEnd();\n });\n on(div, \"input\", function () {\n if (!this$1$1.composing) {\n this$1$1.readFromDOMSoon();\n }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n\n if (e.type == \"cut\") {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n e.clipboardData.setData(\"Text\", content);\n\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return;\n }\n }\n\n var kludge = hiddenTextarea(),\n te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n\n if (hadFocus == div) {\n input.showPrimarySelection();\n }\n }, 50);\n }\n\n __name(onCopyCut, \"onCopyCut\");\n\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n if (label) {\n this.div.setAttribute(\"aria-label\", label);\n } else {\n this.div.removeAttribute(\"aria-label\");\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result;\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) {\n return;\n }\n\n if (info.focus || takeFocus) {\n this.showPrimarySelection();\n }\n\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection();\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(),\n cm = this.cm,\n prim = cm.doc.sel.primary();\n var from = prim.from(),\n to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return;\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && cmp(minPos(curAnchor, curFocus), from) == 0 && cmp(maxPos(curAnchor, curFocus), to) == 0) {\n return;\n }\n\n var view = cm.display.view;\n var start = from.line >= cm.display.viewFrom && posToDOM(cm, from) || {\n node: view[0].measure.map[2],\n offset: 0\n };\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map2 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {\n node: map2[map2.length - 1],\n offset: map2[map2.length - 2] - map2[map2.length - 3]\n };\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return;\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0),\n rng;\n\n try {\n rng = range(start.node, start.offset, end.offset, end.node);\n } catch (e) {}\n\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n\n if (old && sel.anchorNode == null) {\n sel.addRange(old);\n } else if (gecko) {\n this.startGracePeriod();\n }\n }\n\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1$1 = this;\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1$1.gracePeriod = false;\n\n if (this$1$1.selectionChanged()) {\n this$1$1.cm.operation(function () {\n return this$1$1.cm.curOp.selectionChanged = true;\n });\n }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode;\n this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode;\n this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n\n if (!sel.rangeCount) {\n return false;\n }\n\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node);\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div) {\n this.showSelection(this.prepareSelection(), true);\n }\n\n this.div.focus();\n }\n };\n\n ContentEditableInput.prototype.blur = function () {\n this.div.blur();\n };\n\n ContentEditableInput.prototype.getField = function () {\n return this.div;\n };\n\n ContentEditableInput.prototype.supportsTouch = function () {\n return true;\n };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1$1 = this;\n var input = this;\n\n if (this.selectionInEditor()) {\n setTimeout(function () {\n return this$1$1.pollSelection();\n }, 20);\n } else {\n runInOp(this.cm, function () {\n return input.cm.curOp.selectionChanged = true;\n });\n }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n\n __name(poll, \"poll\");\n\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset;\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) {\n return;\n }\n\n var sel = this.getSelection(),\n cm = this.cm;\n\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({\n type: \"keydown\",\n keyCode: 8,\n preventDefault: Math.abs\n });\n this.blur();\n this.focus();\n return;\n }\n\n if (this.composing) {\n return;\n }\n\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (anchor && head) {\n runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n\n if (anchor.bad || head.bad) {\n cm.curOp.selectionChanged = true;\n }\n });\n }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm,\n display = cm.display,\n sel = cm.doc.sel.primary();\n var from = sel.from(),\n to = sel.to();\n\n if (from.ch == 0 && from.line > cm.firstLine()) {\n from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length);\n }\n\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) {\n to = Pos(to.line + 1, 0);\n }\n\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) {\n return false;\n }\n\n var fromIndex, fromLine, fromNode;\n\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) {\n return false;\n }\n\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) {\n newText.pop();\n oldText.pop();\n toLine--;\n } else if (newText[0] == oldText[0]) {\n newText.shift();\n oldText.shift();\n fromLine++;\n } else {\n break;\n }\n }\n\n var cutFront = 0,\n cutEnd = 0;\n var newTop = newText[0],\n oldTop = oldText[0],\n maxCutFront = Math.min(newTop.length, oldTop.length);\n\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) {\n ++cutFront;\n }\n\n var newBot = lst(newText),\n oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), oldBot.length - (oldText.length == 1 ? cutFront : 0));\n\n while (cutEnd < maxCutEnd && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n ++cutEnd;\n }\n\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true;\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) {\n return;\n }\n\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1$1 = this;\n\n if (this.readDOMTimeout != null) {\n return;\n }\n\n this.readDOMTimeout = setTimeout(function () {\n this$1$1.readDOMTimeout = null;\n\n if (this$1$1.composing) {\n if (this$1$1.composing.done) {\n this$1$1.composing = null;\n } else {\n return;\n }\n }\n\n this$1$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent()) {\n runInOp(this.cm, function () {\n return regChange(this$1$1.cm);\n });\n }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) {\n return;\n }\n\n e.preventDefault();\n\n if (!this.cm.isReadOnly()) {\n operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);\n }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n\n if (!view || view.hidden) {\n return null;\n }\n\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n var order = getOrder(line, cm.doc.direction),\n side = \"left\";\n\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result;\n }\n\n __name(posToDOM, \"posToDOM\");\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode) {\n if (/CodeMirror-gutter-wrapper/.test(scan.className)) {\n return true;\n }\n }\n\n return false;\n }\n\n __name(isInGutter, \"isInGutter\");\n\n function badPos(pos, bad) {\n if (bad) {\n pos.bad = true;\n }\n\n return pos;\n }\n\n __name(badPos, \"badPos\");\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\",\n closing = false,\n lineSep = cm.doc.lineSeparator(),\n extraLinebreak = false;\n\n function recognizeMarker(id) {\n return function (marker) {\n return marker.id == id;\n };\n }\n\n __name(recognizeMarker, \"recognizeMarker\");\n\n function close() {\n if (closing) {\n text += lineSep;\n\n if (extraLinebreak) {\n text += lineSep;\n }\n\n closing = extraLinebreak = false;\n }\n }\n\n __name(close, \"close\");\n\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n\n __name(addText, \"addText\");\n\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n\n if (cmText) {\n addText(cmText);\n return;\n }\n\n var markerID = node.getAttribute(\"cm-marker\"),\n range2;\n\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n\n if (found.length && (range2 = found[0].find(0))) {\n addText(getBetween(cm.doc, range2.from, range2.to).join(lineSep));\n }\n\n return;\n }\n\n if (node.getAttribute(\"contenteditable\") == \"false\") {\n return;\n }\n\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) {\n return;\n }\n\n if (isBlock) {\n close();\n }\n\n for (var i2 = 0; i2 < node.childNodes.length; i2++) {\n walk(node.childNodes[i2]);\n }\n\n if (/^(pre|p)$/i.test(node.nodeName)) {\n extraLinebreak = true;\n }\n\n if (isBlock) {\n closing = true;\n }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n\n __name(walk, \"walk\");\n\n for (;;) {\n walk(from);\n\n if (from == to) {\n break;\n }\n\n from = from.nextSibling;\n extraLinebreak = false;\n }\n\n return text;\n }\n\n __name(domTextBetween, \"domTextBetween\");\n\n function domToPos(cm, node, offset) {\n var lineNode;\n\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n\n if (!lineNode) {\n return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);\n }\n\n node = null;\n offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) {\n return null;\n }\n\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) {\n break;\n }\n }\n }\n\n for (var i2 = 0; i2 < cm.display.view.length; i2++) {\n var lineView = cm.display.view[i2];\n\n if (lineView.node == lineNode) {\n return locateNodeInLineView(lineView, node, offset);\n }\n }\n }\n\n __name(domToPos, \"domToPos\");\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild,\n bad = false;\n\n if (!node || !contains(wrapper, node)) {\n return badPos(Pos(lineNo(lineView.line), 0), true);\n }\n\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad);\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null,\n topNode = node;\n\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n\n if (offset) {\n offset = textNode.nodeValue.length;\n }\n }\n\n while (topNode.parentNode != wrapper) {\n topNode = topNode.parentNode;\n }\n\n var measure = lineView.measure,\n maps = measure.maps;\n\n function find(textNode2, topNode2, offset2) {\n for (var i2 = -1; i2 < (maps ? maps.length : 0); i2++) {\n var map2 = i2 < 0 ? measure.map : maps[i2];\n\n for (var j = 0; j < map2.length; j += 3) {\n var curNode = map2[j + 2];\n\n if (curNode == textNode2 || curNode == topNode2) {\n var line2 = lineNo(i2 < 0 ? lineView.line : lineView.rest[i2]);\n var ch = map2[j] + offset2;\n\n if (offset2 < 0 || curNode != textNode2) {\n ch = map2[j + (offset2 ? 1 : 0)];\n }\n\n return Pos(line2, ch);\n }\n }\n }\n }\n\n __name(find, \"find\");\n\n var found = find(textNode, topNode, offset);\n\n if (found) {\n return badPos(found, bad);\n }\n\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n\n if (found) {\n return badPos(Pos(found.line, found.ch - dist), bad);\n } else {\n dist += after.textContent.length;\n }\n }\n\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n\n if (found) {\n return badPos(Pos(found.line, found.ch + dist$1), bad);\n } else {\n dist$1 += before.textContent.length;\n }\n }\n }\n\n __name(locateNodeInLineView, \"locateNodeInLineView\");\n\n var TextareaInput = /* @__PURE__ */__name(function (cm) {\n this.cm = cm;\n this.prevInput = \"\";\n this.pollingFast = false;\n this.polling = new Delayed();\n this.hasSelection = false;\n this.composing = null;\n }, \"TextareaInput\");\n\n TextareaInput.prototype.init = function (display) {\n var this$1$1 = this;\n var input = this,\n cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n if (ios) {\n te.style.width = \"0px\";\n }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1$1.hasSelection) {\n this$1$1.hasSelection = null;\n }\n\n input.poll();\n });\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n }\n\n cm.state.pasteIncoming = +new Date();\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n\n if (e.type == \"cut\") {\n cm.state.cutIncoming = +new Date();\n }\n }\n\n __name(prepareCopyCut, \"prepareCopyCut\");\n\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) {\n return;\n }\n\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date();\n input.focus();\n return;\n }\n\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) {\n e_preventDefault(e);\n }\n });\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n\n if (input.composing) {\n input.composing.range.clear();\n }\n\n input.composing = {\n start,\n range: cm.markText(start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n })\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n this.wrapper = hiddenTextarea();\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n if (label) {\n this.textarea.setAttribute(\"aria-label\", label);\n } else {\n this.textarea.removeAttribute(\"aria-label\");\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n var cm = this.cm,\n display = cm.display,\n doc = cm.doc;\n var result = prepareSelection(cm);\n\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(),\n lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result;\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm,\n display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) {\n return;\n }\n\n var cm = this.cm;\n\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n\n if (cm.state.focused) {\n selectInput(this.textarea);\n }\n\n if (ie && ie_version >= 9) {\n this.hasSelection = content;\n }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n }\n };\n\n TextareaInput.prototype.getField = function () {\n return this.textarea;\n };\n\n TextareaInput.prototype.supportsTouch = function () {\n return false;\n };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try {\n this.textarea.focus();\n } catch (e) {}\n }\n };\n\n TextareaInput.prototype.blur = function () {\n this.textarea.blur();\n };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () {\n this.slowPoll();\n };\n\n TextareaInput.prototype.slowPoll = function () {\n var this$1$1 = this;\n\n if (this.pollingFast) {\n return;\n }\n\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1$1.poll();\n\n if (this$1$1.cm.state.focused) {\n this$1$1.slowPoll();\n }\n });\n };\n\n TextareaInput.prototype.fastPoll = function () {\n var missed = false,\n input = this;\n input.pollingFast = true;\n\n function p() {\n var changed = input.poll();\n\n if (!changed && !missed) {\n missed = true;\n input.polling.set(60, p);\n } else {\n input.pollingFast = false;\n input.slowPoll();\n }\n }\n\n __name(p, \"p\");\n\n input.polling.set(20, p);\n };\n\n TextareaInput.prototype.poll = function () {\n var this$1$1 = this;\n var cm = this.cm,\n input = this.textarea,\n prevInput = this.prevInput;\n\n if (this.contextMenuPending || !cm.state.focused || hasSelection(input) && !prevInput && !this.composing || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) {\n return false;\n }\n\n var text = input.value;\n\n if (text == prevInput && !cm.somethingSelected()) {\n return false;\n }\n\n if (ie && ie_version >= 9 && this.hasSelection === text || mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false;\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n\n if (first == 8203 && !prevInput) {\n prevInput = \"\\u200B\";\n }\n\n if (first == 8666) {\n this.reset();\n return this.cm.execCommand(\"undo\");\n }\n }\n\n var same = 0,\n l = Math.min(prevInput.length, text.length);\n\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) {\n ++same;\n }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same, null, this$1$1.composing ? \"*compose\" : null);\n\n if (text.length > 1e3 || text.indexOf(\"\\n\") > -1) {\n input.value = this$1$1.prevInput = \"\";\n } else {\n this$1$1.prevInput = text;\n }\n\n if (this$1$1.composing) {\n this$1$1.composing.range.clear();\n this$1$1.composing.range = cm.markText(this$1$1.composing.start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n });\n }\n });\n return true;\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) {\n this.pollingFast = false;\n }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this,\n cm = input.cm,\n display = cm.display,\n te = input.textarea;\n\n if (input.contextMenuPending) {\n input.contextMenuPending();\n }\n\n var pos = posFromMouse(cm, e),\n scrollPos = display.scroller.scrollTop;\n\n if (!pos || presto) {\n return;\n }\n\n var reset = cm.options.resetSelectionOnContextMenu;\n\n if (reset && cm.doc.sel.contains(pos) == -1) {\n operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n }\n\n var oldCSS = te.style.cssText,\n oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n\n if (webkit) {\n oldScrollY = window.scrollY;\n }\n\n display.input.focus();\n\n if (webkit) {\n window.scrollTo(null, oldScrollY);\n }\n\n display.input.reset();\n\n if (!cm.somethingSelected()) {\n te.value = input.prevInput = \" \";\n }\n\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200B\" + (selected ? te.value : \"\");\n te.value = \"\\u21DA\";\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200B\";\n te.selectionStart = 1;\n te.selectionEnd = extval.length;\n display.selForContextMenu = cm.doc.sel;\n }\n }\n\n __name(prepareSelectAllHack, \"prepareSelectAllHack\");\n\n function rehide() {\n if (input.contextMenuPending != rehide) {\n return;\n }\n\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n\n if (ie && ie_version < 9) {\n display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);\n }\n\n if (te.selectionStart != null) {\n if (!ie || ie && ie_version < 9) {\n prepareSelectAllHack();\n }\n\n var i2 = 0,\n poll = /* @__PURE__ */__name(function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && te.selectionEnd > 0 && input.prevInput == \"\\u200B\") {\n operation(cm, selectAll)(cm);\n } else if (i2++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n }, \"poll\");\n\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n __name(rehide, \"rehide\");\n\n if (ie && ie_version >= 9) {\n prepareSelectAllHack();\n }\n\n if (captureRightClick) {\n e_stop(e);\n\n var mouseup = /* @__PURE__ */__name(function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n }, \"mouseup\");\n\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) {\n this.reset();\n }\n\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n\n if (!options.tabindex && textarea.tabIndex) {\n options.tabindex = textarea.tabIndex;\n }\n\n if (!options.placeholder && textarea.placeholder) {\n options.placeholder = textarea.placeholder;\n }\n\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea || textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {\n textarea.value = cm.getValue();\n }\n\n __name(save, \"save\");\n\n var realSubmit;\n\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch (e) {}\n }\n }\n\n options.finishInit = function (cm2) {\n cm2.save = save;\n\n cm2.getTextArea = function () {\n return textarea;\n };\n\n cm2.toTextArea = function () {\n cm2.toTextArea = isNaN;\n save();\n textarea.parentNode.removeChild(cm2.getWrapperElement());\n textarea.style.display = \"\";\n\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\") {\n textarea.form.submit = realSubmit;\n }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror2(function (node) {\n return textarea.parentNode.insertBefore(node, textarea.nextSibling);\n }, options);\n return cm;\n }\n\n __name(fromTextArea, \"fromTextArea\");\n\n function addLegacyProps(CodeMirror3) {\n CodeMirror3.off = off;\n CodeMirror3.on = on;\n CodeMirror3.wheelEventPixels = wheelEventPixels;\n CodeMirror3.Doc = Doc;\n CodeMirror3.splitLines = splitLinesAuto;\n CodeMirror3.countColumn = countColumn;\n CodeMirror3.findColumn = findColumn;\n CodeMirror3.isWordChar = isWordCharBasic;\n CodeMirror3.Pass = Pass;\n CodeMirror3.signal = signal;\n CodeMirror3.Line = Line;\n CodeMirror3.changeEnd = changeEnd;\n CodeMirror3.scrollbarModel = scrollbarModel;\n CodeMirror3.Pos = Pos;\n CodeMirror3.cmpPos = cmp;\n CodeMirror3.modes = modes;\n CodeMirror3.mimeModes = mimeModes;\n CodeMirror3.resolveMode = resolveMode;\n CodeMirror3.getMode = getMode;\n CodeMirror3.modeExtensions = modeExtensions;\n CodeMirror3.extendMode = extendMode;\n CodeMirror3.copyState = copyState;\n CodeMirror3.startState = startState;\n CodeMirror3.innerMode = innerMode;\n CodeMirror3.commands = commands;\n CodeMirror3.keyMap = keyMap;\n CodeMirror3.keyName = keyName;\n CodeMirror3.isModifierKey = isModifierKey;\n CodeMirror3.lookupKey = lookupKey;\n CodeMirror3.normalizeKeyMap = normalizeKeyMap;\n CodeMirror3.StringStream = StringStream;\n CodeMirror3.SharedTextMarker = SharedTextMarker;\n CodeMirror3.TextMarker = TextMarker;\n CodeMirror3.LineWidget = LineWidget;\n CodeMirror3.e_preventDefault = e_preventDefault;\n CodeMirror3.e_stopPropagation = e_stopPropagation;\n CodeMirror3.e_stop = e_stop;\n CodeMirror3.addClass = addClass;\n CodeMirror3.contains = contains;\n CodeMirror3.rmClass = rmClass;\n CodeMirror3.keyNames = keyNames;\n }\n\n __name(addLegacyProps, \"addLegacyProps\");\n\n defineOptions(CodeMirror2);\n addEditorMethods(CodeMirror2);\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n\n for (var prop in Doc.prototype) {\n if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) {\n CodeMirror2.prototype[prop] = function (method) {\n return function () {\n return method.apply(this.doc, arguments);\n };\n }(Doc.prototype[prop]);\n }\n }\n\n eventMixin(Doc);\n CodeMirror2.inputStyles = {\n \"textarea\": TextareaInput,\n \"contenteditable\": ContentEditableInput\n };\n\n CodeMirror2.defineMode = function (name) {\n if (!CodeMirror2.defaults.mode && name != \"null\") {\n CodeMirror2.defaults.mode = name;\n }\n\n defineMode.apply(this, arguments);\n };\n\n CodeMirror2.defineMIME = defineMIME;\n CodeMirror2.defineMode(\"null\", function () {\n return {\n token: function (stream) {\n return stream.skipToEnd();\n }\n };\n });\n CodeMirror2.defineMIME(\"text/plain\", \"null\");\n\n CodeMirror2.defineExtension = function (name, func) {\n CodeMirror2.prototype[name] = func;\n };\n\n CodeMirror2.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror2.fromTextArea = fromTextArea;\n addLegacyProps(CodeMirror2);\n CodeMirror2.version = \"5.65.3\";\n return CodeMirror2;\n });\n })(codemirror$1);\n\n var CodeMirror = codemirror$1.exports;\n _exports.C = CodeMirror;\n var codemirror = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": CodeMirror\n }, [codemirror$1.exports]));\n _exports.c = codemirror;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9jb2RlbWlycm9yLmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9jb2RlbWlycm9yLmVzLmpzPzg2YjkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IGMgYXMgY29tbW9uanNHbG9iYWwgfSBmcm9tIFwiLi9pbmRleC5lcy5qc1wiO1xuZnVuY3Rpb24gX21lcmdlTmFtZXNwYWNlcyhuLCBtKSB7XG4gIG0uZm9yRWFjaChmdW5jdGlvbihlKSB7XG4gICAgZSAmJiB0eXBlb2YgZSAhPT0gXCJzdHJpbmdcIiAmJiAhQXJyYXkuaXNBcnJheShlKSAmJiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgICAgIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiAhKGsgaW4gbikpIHtcbiAgICAgICAgdmFyIGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIGspO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwgaywgZC5nZXQgPyBkIDoge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBlW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmZyZWV6ZShuKTtcbn1cbl9fbmFtZShfbWVyZ2VOYW1lc3BhY2VzLCBcIl9tZXJnZU5hbWVzcGFjZXNcIik7XG52YXIgY29kZW1pcnJvciQxID0geyBleHBvcnRzOiB7fSB9O1xuKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuICAoZnVuY3Rpb24oZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG4gIH0pKGNvbW1vbmpzR2xvYmFsLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICB2YXIgcGxhdGZvcm0gPSBuYXZpZ2F0b3IucGxhdGZvcm07XG4gICAgdmFyIGdlY2tvID0gL2dlY2tvXFwvXFxkL2kudGVzdCh1c2VyQWdlbnQpO1xuICAgIHZhciBpZV91cHRvMTAgPSAvTVNJRSBcXGQvLnRlc3QodXNlckFnZW50KTtcbiAgICB2YXIgaWVfMTF1cCA9IC9UcmlkZW50XFwvKD86WzctOV18XFxkezIsfSlcXC4uKnJ2OihcXGQrKS8uZXhlYyh1c2VyQWdlbnQpO1xuICAgIHZhciBlZGdlID0gL0VkZ2VcXC8oXFxkKykvLmV4ZWModXNlckFnZW50KTtcbiAgICB2YXIgaWUgPSBpZV91cHRvMTAgfHwgaWVfMTF1cCB8fCBlZGdlO1xuICAgIHZhciBpZV92ZXJzaW9uID0gaWUgJiYgKGllX3VwdG8xMCA/IGRvY3VtZW50LmRvY3VtZW50TW9kZSB8fCA2IDogKyhlZGdlIHx8IGllXzExdXApWzFdKTtcbiAgICB2YXIgd2Via2l0ID0gIWVkZ2UgJiYgL1dlYktpdFxcLy8udGVzdCh1c2VyQWdlbnQpO1xuICAgIHZhciBxdHdlYmtpdCA9IHdlYmtpdCAmJiAvUXRcXC9cXGQrXFwuXFxkKy8udGVzdCh1c2VyQWdlbnQpO1xuICAgIHZhciBjaHJvbWUgPSAhZWRnZSAmJiAvQ2hyb21lXFwvLy50ZXN0KHVzZXJBZ2VudCk7XG4gICAgdmFyIHByZXN0byA9IC9PcGVyYVxcLy8udGVzdCh1c2VyQWdlbnQpO1xuICAgIHZhciBzYWZhcmkgPSAvQXBwbGUgQ29tcHV0ZXIvLnRlc3QobmF2aWdhdG9yLnZlbmRvcik7XG4gICAgdmFyIG1hY19nZU1vdW50YWluTGlvbiA9IC9NYWMgT1MgWCAxXFxkXFxEKFs4LTldfFxcZFxcZClcXEQvLnRlc3QodXNlckFnZW50KTtcbiAgICB2YXIgcGhhbnRvbSA9IC9QaGFudG9tSlMvLnRlc3QodXNlckFnZW50KTtcbiAgICB2YXIgaW9zID0gc2FmYXJpICYmICgvTW9iaWxlXFwvXFx3Ky8udGVzdCh1c2VyQWdlbnQpIHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDIpO1xuICAgIHZhciBhbmRyb2lkID0gL0FuZHJvaWQvLnRlc3QodXNlckFnZW50KTtcbiAgICB2YXIgbW9iaWxlID0gaW9zIHx8IGFuZHJvaWQgfHwgL3dlYk9TfEJsYWNrQmVycnl8T3BlcmEgTWluaXxPcGVyYSBNb2JpfElFTW9iaWxlL2kudGVzdCh1c2VyQWdlbnQpO1xuICAgIHZhciBtYWMgPSBpb3MgfHwgL01hYy8udGVzdChwbGF0Zm9ybSk7XG4gICAgdmFyIGNocm9tZU9TID0gL1xcYkNyT1NcXGIvLnRlc3QodXNlckFnZW50KTtcbiAgICB2YXIgd2luZG93cyA9IC93aW4vaS50ZXN0KHBsYXRmb3JtKTtcbiAgICB2YXIgcHJlc3RvX3ZlcnNpb24gPSBwcmVzdG8gJiYgdXNlckFnZW50Lm1hdGNoKC9WZXJzaW9uXFwvKFxcZCpcXC5cXGQqKS8pO1xuICAgIGlmIChwcmVzdG9fdmVyc2lvbikge1xuICAgICAgcHJlc3RvX3ZlcnNpb24gPSBOdW1iZXIocHJlc3RvX3ZlcnNpb25bMV0pO1xuICAgIH1cbiAgICBpZiAocHJlc3RvX3ZlcnNpb24gJiYgcHJlc3RvX3ZlcnNpb24gPj0gMTUpIHtcbiAgICAgIHByZXN0byA9IGZhbHNlO1xuICAgICAgd2Via2l0ID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGZsaXBDdHJsQ21kID0gbWFjICYmIChxdHdlYmtpdCB8fCBwcmVzdG8gJiYgKHByZXN0b192ZXJzaW9uID09IG51bGwgfHwgcHJlc3RvX3ZlcnNpb24gPCAxMi4xMSkpO1xuICAgIHZhciBjYXB0dXJlUmlnaHRDbGljayA9IGdlY2tvIHx8IGllICYmIGllX3ZlcnNpb24gPj0gOTtcbiAgICBmdW5jdGlvbiBjbGFzc1Rlc3QoY2xzKSB7XG4gICAgICByZXR1cm4gbmV3IFJlZ0V4cChcIihefFxcXFxzKVwiICsgY2xzICsgXCIoPzokfFxcXFxzKVxcXFxzKlwiKTtcbiAgICB9XG4gICAgX19uYW1lKGNsYXNzVGVzdCwgXCJjbGFzc1Rlc3RcIik7XG4gICAgdmFyIHJtQ2xhc3MgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKG5vZGUsIGNscykge1xuICAgICAgdmFyIGN1cnJlbnQgPSBub2RlLmNsYXNzTmFtZTtcbiAgICAgIHZhciBtYXRjaCA9IGNsYXNzVGVzdChjbHMpLmV4ZWMoY3VycmVudCk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgdmFyIGFmdGVyID0gY3VycmVudC5zbGljZShtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgIG5vZGUuY2xhc3NOYW1lID0gY3VycmVudC5zbGljZSgwLCBtYXRjaC5pbmRleCkgKyAoYWZ0ZXIgPyBtYXRjaFsxXSArIGFmdGVyIDogXCJcIik7XG4gICAgICB9XG4gICAgfSwgXCJybUNsYXNzXCIpO1xuICAgIGZ1bmN0aW9uIHJlbW92ZUNoaWxkcmVuKGUpIHtcbiAgICAgIGZvciAodmFyIGNvdW50ID0gZS5jaGlsZE5vZGVzLmxlbmd0aDsgY291bnQgPiAwOyAtLWNvdW50KSB7XG4gICAgICAgIGUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlO1xuICAgIH1cbiAgICBfX25hbWUocmVtb3ZlQ2hpbGRyZW4sIFwicmVtb3ZlQ2hpbGRyZW5cIik7XG4gICAgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRyZW5BbmRBZGQocGFyZW50LCBlKSB7XG4gICAgICByZXR1cm4gcmVtb3ZlQ2hpbGRyZW4ocGFyZW50KS5hcHBlbmRDaGlsZChlKTtcbiAgICB9XG4gICAgX19uYW1lKHJlbW92ZUNoaWxkcmVuQW5kQWRkLCBcInJlbW92ZUNoaWxkcmVuQW5kQWRkXCIpO1xuICAgIGZ1bmN0aW9uIGVsdCh0YWcsIGNvbnRlbnQsIGNsYXNzTmFtZSwgc3R5bGUpIHtcbiAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO1xuICAgICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICBlLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgIH1cbiAgICAgIGlmIChzdHlsZSkge1xuICAgICAgICBlLnN0eWxlLmNzc1RleHQgPSBzdHlsZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29udGVudCkpO1xuICAgICAgfSBlbHNlIGlmIChjb250ZW50KSB7XG4gICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBjb250ZW50Lmxlbmd0aDsgKytpMikge1xuICAgICAgICAgIGUuYXBwZW5kQ2hpbGQoY29udGVudFtpMl0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZTtcbiAgICB9XG4gICAgX19uYW1lKGVsdCwgXCJlbHRcIik7XG4gICAgZnVuY3Rpb24gZWx0UCh0YWcsIGNvbnRlbnQsIGNsYXNzTmFtZSwgc3R5bGUpIHtcbiAgICAgIHZhciBlID0gZWx0KHRhZywgY29udGVudCwgY2xhc3NOYW1lLCBzdHlsZSk7XG4gICAgICBlLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJwcmVzZW50YXRpb25cIik7XG4gICAgICByZXR1cm4gZTtcbiAgICB9XG4gICAgX19uYW1lKGVsdFAsIFwiZWx0UFwiKTtcbiAgICB2YXIgcmFuZ2U7XG4gICAgaWYgKGRvY3VtZW50LmNyZWF0ZVJhbmdlKSB7XG4gICAgICByYW5nZSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24obm9kZSwgc3RhcnQsIGVuZCwgZW5kTm9kZSkge1xuICAgICAgICB2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIHIuc2V0RW5kKGVuZE5vZGUgfHwgbm9kZSwgZW5kKTtcbiAgICAgICAgci5zZXRTdGFydChub2RlLCBzdGFydCk7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfSwgXCJyYW5nZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2UgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKG5vZGUsIHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgdmFyIHIgPSBkb2N1bWVudC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHIubW92ZVRvRWxlbWVudFRleHQobm9kZS5wYXJlbnROb2RlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9XG4gICAgICAgIHIuY29sbGFwc2UodHJ1ZSk7XG4gICAgICAgIHIubW92ZUVuZChcImNoYXJhY3RlclwiLCBlbmQpO1xuICAgICAgICByLm1vdmVTdGFydChcImNoYXJhY3RlclwiLCBzdGFydCk7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfSwgXCJyYW5nZVwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY29udGFpbnMocGFyZW50LCBjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09IDMpIHtcbiAgICAgICAgY2hpbGQgPSBjaGlsZC5wYXJlbnROb2RlO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmVudC5jb250YWlucykge1xuICAgICAgICByZXR1cm4gcGFyZW50LmNvbnRhaW5zKGNoaWxkKTtcbiAgICAgIH1cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09IDExKSB7XG4gICAgICAgICAgY2hpbGQgPSBjaGlsZC5ob3N0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGlsZCA9PSBwYXJlbnQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSB3aGlsZSAoY2hpbGQgPSBjaGlsZC5wYXJlbnROb2RlKTtcbiAgICB9XG4gICAgX19uYW1lKGNvbnRhaW5zLCBcImNvbnRhaW5zXCIpO1xuICAgIGZ1bmN0aW9uIGFjdGl2ZUVsdCgpIHtcbiAgICAgIHZhciBhY3RpdmVFbGVtZW50O1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5ib2R5IHx8IG51bGw7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYWN0aXZlRWxlbWVudCAmJiBhY3RpdmVFbGVtZW50LnNoYWRvd1Jvb3QgJiYgYWN0aXZlRWxlbWVudC5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgYWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnQ7XG4gICAgfVxuICAgIF9fbmFtZShhY3RpdmVFbHQsIFwiYWN0aXZlRWx0XCIpO1xuICAgIGZ1bmN0aW9uIGFkZENsYXNzKG5vZGUsIGNscykge1xuICAgICAgdmFyIGN1cnJlbnQgPSBub2RlLmNsYXNzTmFtZTtcbiAgICAgIGlmICghY2xhc3NUZXN0KGNscykudGVzdChjdXJyZW50KSkge1xuICAgICAgICBub2RlLmNsYXNzTmFtZSArPSAoY3VycmVudCA/IFwiIFwiIDogXCJcIikgKyBjbHM7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShhZGRDbGFzcywgXCJhZGRDbGFzc1wiKTtcbiAgICBmdW5jdGlvbiBqb2luQ2xhc3NlcyhhLCBiKSB7XG4gICAgICB2YXIgYXMgPSBhLnNwbGl0KFwiIFwiKTtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBhcy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgaWYgKGFzW2kyXSAmJiAhY2xhc3NUZXN0KGFzW2kyXSkudGVzdChiKSkge1xuICAgICAgICAgIGIgKz0gXCIgXCIgKyBhc1tpMl07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBiO1xuICAgIH1cbiAgICBfX25hbWUoam9pbkNsYXNzZXMsIFwiam9pbkNsYXNzZXNcIik7XG4gICAgdmFyIHNlbGVjdElucHV0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihub2RlKSB7XG4gICAgICBub2RlLnNlbGVjdCgpO1xuICAgIH0sIFwic2VsZWN0SW5wdXRcIik7XG4gICAgaWYgKGlvcykge1xuICAgICAgc2VsZWN0SW5wdXQgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgICAgbm9kZS5zZWxlY3Rpb25TdGFydCA9IDA7XG4gICAgICAgIG5vZGUuc2VsZWN0aW9uRW5kID0gbm9kZS52YWx1ZS5sZW5ndGg7XG4gICAgICB9LCBcInNlbGVjdElucHV0XCIpO1xuICAgIH0gZWxzZSBpZiAoaWUpIHtcbiAgICAgIHNlbGVjdElucHV0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbm9kZS5zZWxlY3QoKTtcbiAgICAgICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgICAgfVxuICAgICAgfSwgXCJzZWxlY3RJbnB1dFwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYmluZChmKSB7XG4gICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgICAgfTtcbiAgICB9XG4gICAgX19uYW1lKGJpbmQsIFwiYmluZFwiKTtcbiAgICBmdW5jdGlvbiBjb3B5T2JqKG9iaiwgdGFyZ2V0LCBvdmVyd3JpdGUpIHtcbiAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgIHRhcmdldCA9IHt9O1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgcHJvcDIgaW4gb2JqKSB7XG4gICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocHJvcDIpICYmIChvdmVyd3JpdGUgIT09IGZhbHNlIHx8ICF0YXJnZXQuaGFzT3duUHJvcGVydHkocHJvcDIpKSkge1xuICAgICAgICAgIHRhcmdldFtwcm9wMl0gPSBvYmpbcHJvcDJdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICBfX25hbWUoY29weU9iaiwgXCJjb3B5T2JqXCIpO1xuICAgIGZ1bmN0aW9uIGNvdW50Q29sdW1uKHN0cmluZywgZW5kLCB0YWJTaXplLCBzdGFydEluZGV4LCBzdGFydFZhbHVlKSB7XG4gICAgICBpZiAoZW5kID09IG51bGwpIHtcbiAgICAgICAgZW5kID0gc3RyaW5nLnNlYXJjaCgvW15cXHNcXHUwMGEwXS8pO1xuICAgICAgICBpZiAoZW5kID09IC0xKSB7XG4gICAgICAgICAgZW5kID0gc3RyaW5nLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yICh2YXIgaTIgPSBzdGFydEluZGV4IHx8IDAsIG4gPSBzdGFydFZhbHVlIHx8IDA7IDsgKSB7XG4gICAgICAgIHZhciBuZXh0VGFiID0gc3RyaW5nLmluZGV4T2YoXCJcdFwiLCBpMik7XG4gICAgICAgIGlmIChuZXh0VGFiIDwgMCB8fCBuZXh0VGFiID49IGVuZCkge1xuICAgICAgICAgIHJldHVybiBuICsgKGVuZCAtIGkyKTtcbiAgICAgICAgfVxuICAgICAgICBuICs9IG5leHRUYWIgLSBpMjtcbiAgICAgICAgbiArPSB0YWJTaXplIC0gbiAlIHRhYlNpemU7XG4gICAgICAgIGkyID0gbmV4dFRhYiArIDE7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShjb3VudENvbHVtbiwgXCJjb3VudENvbHVtblwiKTtcbiAgICB2YXIgRGVsYXllZCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmlkID0gbnVsbDtcbiAgICAgIHRoaXMuZiA9IG51bGw7XG4gICAgICB0aGlzLnRpbWUgPSAwO1xuICAgICAgdGhpcy5oYW5kbGVyID0gYmluZCh0aGlzLm9uVGltZW91dCwgdGhpcyk7XG4gICAgfSwgXCJEZWxheWVkXCIpO1xuICAgIERlbGF5ZWQucHJvdG90eXBlLm9uVGltZW91dCA9IGZ1bmN0aW9uKHNlbGYpIHtcbiAgICAgIHNlbGYuaWQgPSAwO1xuICAgICAgaWYgKHNlbGYudGltZSA8PSArbmV3IERhdGUoKSkge1xuICAgICAgICBzZWxmLmYoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRpbWVvdXQoc2VsZi5oYW5kbGVyLCBzZWxmLnRpbWUgLSArbmV3IERhdGUoKSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBEZWxheWVkLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihtcywgZikge1xuICAgICAgdGhpcy5mID0gZjtcbiAgICAgIHZhciB0aW1lID0gK25ldyBEYXRlKCkgKyBtcztcbiAgICAgIGlmICghdGhpcy5pZCB8fCB0aW1lIDwgdGhpcy50aW1lKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmlkKTtcbiAgICAgICAgdGhpcy5pZCA9IHNldFRpbWVvdXQodGhpcy5oYW5kbGVyLCBtcyk7XG4gICAgICAgIHRoaXMudGltZSA9IHRpbWU7XG4gICAgICB9XG4gICAgfTtcbiAgICBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCBlbHQyKSB7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgYXJyYXkubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIGlmIChhcnJheVtpMl0gPT0gZWx0Mikge1xuICAgICAgICAgIHJldHVybiBpMjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBfX25hbWUoaW5kZXhPZiwgXCJpbmRleE9mXCIpO1xuICAgIHZhciBzY3JvbGxlckdhcCA9IDUwO1xuICAgIHZhciBQYXNzID0geyB0b1N0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJDb2RlTWlycm9yLlBhc3NcIjtcbiAgICB9IH07XG4gICAgdmFyIHNlbF9kb250U2Nyb2xsID0geyBzY3JvbGw6IGZhbHNlIH0sIHNlbF9tb3VzZSA9IHsgb3JpZ2luOiBcIiptb3VzZVwiIH0sIHNlbF9tb3ZlID0geyBvcmlnaW46IFwiK21vdmVcIiB9O1xuICAgIGZ1bmN0aW9uIGZpbmRDb2x1bW4oc3RyaW5nLCBnb2FsLCB0YWJTaXplKSB7XG4gICAgICBmb3IgKHZhciBwb3MgPSAwLCBjb2wgPSAwOyA7ICkge1xuICAgICAgICB2YXIgbmV4dFRhYiA9IHN0cmluZy5pbmRleE9mKFwiXHRcIiwgcG9zKTtcbiAgICAgICAgaWYgKG5leHRUYWIgPT0gLTEpIHtcbiAgICAgICAgICBuZXh0VGFiID0gc3RyaW5nLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2tpcHBlZCA9IG5leHRUYWIgLSBwb3M7XG4gICAgICAgIGlmIChuZXh0VGFiID09IHN0cmluZy5sZW5ndGggfHwgY29sICsgc2tpcHBlZCA+PSBnb2FsKSB7XG4gICAgICAgICAgcmV0dXJuIHBvcyArIE1hdGgubWluKHNraXBwZWQsIGdvYWwgLSBjb2wpO1xuICAgICAgICB9XG4gICAgICAgIGNvbCArPSBuZXh0VGFiIC0gcG9zO1xuICAgICAgICBjb2wgKz0gdGFiU2l6ZSAtIGNvbCAlIHRhYlNpemU7XG4gICAgICAgIHBvcyA9IG5leHRUYWIgKyAxO1xuICAgICAgICBpZiAoY29sID49IGdvYWwpIHtcbiAgICAgICAgICByZXR1cm4gcG9zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShmaW5kQ29sdW1uLCBcImZpbmRDb2x1bW5cIik7XG4gICAgdmFyIHNwYWNlU3RycyA9IFtcIlwiXTtcbiAgICBmdW5jdGlvbiBzcGFjZVN0cihuKSB7XG4gICAgICB3aGlsZSAoc3BhY2VTdHJzLmxlbmd0aCA8PSBuKSB7XG4gICAgICAgIHNwYWNlU3Rycy5wdXNoKGxzdChzcGFjZVN0cnMpICsgXCIgXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNwYWNlU3Ryc1tuXTtcbiAgICB9XG4gICAgX19uYW1lKHNwYWNlU3RyLCBcInNwYWNlU3RyXCIpO1xuICAgIGZ1bmN0aW9uIGxzdChhcnIpIHtcbiAgICAgIHJldHVybiBhcnJbYXJyLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICBfX25hbWUobHN0LCBcImxzdFwiKTtcbiAgICBmdW5jdGlvbiBtYXAoYXJyYXksIGYpIHtcbiAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBhcnJheS5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgb3V0W2kyXSA9IGYoYXJyYXlbaTJdLCBpMik7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICBfX25hbWUobWFwLCBcIm1hcFwiKTtcbiAgICBmdW5jdGlvbiBpbnNlcnRTb3J0ZWQoYXJyYXksIHZhbHVlLCBzY29yZSkge1xuICAgICAgdmFyIHBvcyA9IDAsIHByaW9yaXR5ID0gc2NvcmUodmFsdWUpO1xuICAgICAgd2hpbGUgKHBvcyA8IGFycmF5Lmxlbmd0aCAmJiBzY29yZShhcnJheVtwb3NdKSA8PSBwcmlvcml0eSkge1xuICAgICAgICBwb3MrKztcbiAgICAgIH1cbiAgICAgIGFycmF5LnNwbGljZShwb3MsIDAsIHZhbHVlKTtcbiAgICB9XG4gICAgX19uYW1lKGluc2VydFNvcnRlZCwgXCJpbnNlcnRTb3J0ZWRcIik7XG4gICAgZnVuY3Rpb24gbm90aGluZygpIHtcbiAgICB9XG4gICAgX19uYW1lKG5vdGhpbmcsIFwibm90aGluZ1wiKTtcbiAgICBmdW5jdGlvbiBjcmVhdGVPYmooYmFzZSwgcHJvcHMpIHtcbiAgICAgIHZhciBpbnN0O1xuICAgICAgaWYgKE9iamVjdC5jcmVhdGUpIHtcbiAgICAgICAgaW5zdCA9IE9iamVjdC5jcmVhdGUoYmFzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub3RoaW5nLnByb3RvdHlwZSA9IGJhc2U7XG4gICAgICAgIGluc3QgPSBuZXcgbm90aGluZygpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgIGNvcHlPYmoocHJvcHMsIGluc3QpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGluc3Q7XG4gICAgfVxuICAgIF9fbmFtZShjcmVhdGVPYmosIFwiY3JlYXRlT2JqXCIpO1xuICAgIHZhciBub25BU0NJSVNpbmdsZUNhc2VXb3JkQ2hhciA9IC9bXFx1MDBkZlxcdTA1ODdcXHUwNTkwLVxcdTA1ZjRcXHUwNjAwLVxcdTA2ZmZcXHUzMDQwLVxcdTMwOWZcXHUzMGEwLVxcdTMwZmZcXHUzNDAwLVxcdTRkYjVcXHU0ZTAwLVxcdTlmY2NcXHVhYzAwLVxcdWQ3YWZdLztcbiAgICBmdW5jdGlvbiBpc1dvcmRDaGFyQmFzaWMoY2gpIHtcbiAgICAgIHJldHVybiAvXFx3Ly50ZXN0KGNoKSB8fCBjaCA+IFwiXFx4ODBcIiAmJiAoY2gudG9VcHBlckNhc2UoKSAhPSBjaC50b0xvd2VyQ2FzZSgpIHx8IG5vbkFTQ0lJU2luZ2xlQ2FzZVdvcmRDaGFyLnRlc3QoY2gpKTtcbiAgICB9XG4gICAgX19uYW1lKGlzV29yZENoYXJCYXNpYywgXCJpc1dvcmRDaGFyQmFzaWNcIik7XG4gICAgZnVuY3Rpb24gaXNXb3JkQ2hhcihjaCwgaGVscGVyKSB7XG4gICAgICBpZiAoIWhlbHBlcikge1xuICAgICAgICByZXR1cm4gaXNXb3JkQ2hhckJhc2ljKGNoKTtcbiAgICAgIH1cbiAgICAgIGlmIChoZWxwZXIuc291cmNlLmluZGV4T2YoXCJcXFxcd1wiKSA+IC0xICYmIGlzV29yZENoYXJCYXNpYyhjaCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGVscGVyLnRlc3QoY2gpO1xuICAgIH1cbiAgICBfX25hbWUoaXNXb3JkQ2hhciwgXCJpc1dvcmRDaGFyXCIpO1xuICAgIGZ1bmN0aW9uIGlzRW1wdHkob2JqKSB7XG4gICAgICBmb3IgKHZhciBuIGluIG9iaikge1xuICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KG4pICYmIG9ialtuXSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIF9fbmFtZShpc0VtcHR5LCBcImlzRW1wdHlcIik7XG4gICAgdmFyIGV4dGVuZGluZ0NoYXJzID0gL1tcXHUwMzAwLVxcdTAzNmZcXHUwNDgzLVxcdTA0ODlcXHUwNTkxLVxcdTA1YmRcXHUwNWJmXFx1MDVjMVxcdTA1YzJcXHUwNWM0XFx1MDVjNVxcdTA1YzdcXHUwNjEwLVxcdTA2MWFcXHUwNjRiLVxcdTA2NWVcXHUwNjcwXFx1MDZkNi1cXHUwNmRjXFx1MDZkZS1cXHUwNmU0XFx1MDZlN1xcdTA2ZThcXHUwNmVhLVxcdTA2ZWRcXHUwNzExXFx1MDczMC1cXHUwNzRhXFx1MDdhNi1cXHUwN2IwXFx1MDdlYi1cXHUwN2YzXFx1MDgxNi1cXHUwODE5XFx1MDgxYi1cXHUwODIzXFx1MDgyNS1cXHUwODI3XFx1MDgyOS1cXHUwODJkXFx1MDkwMC1cXHUwOTAyXFx1MDkzY1xcdTA5NDEtXFx1MDk0OFxcdTA5NGRcXHUwOTUxLVxcdTA5NTVcXHUwOTYyXFx1MDk2M1xcdTA5ODFcXHUwOWJjXFx1MDliZVxcdTA5YzEtXFx1MDljNFxcdTA5Y2RcXHUwOWQ3XFx1MDllMlxcdTA5ZTNcXHUwYTAxXFx1MGEwMlxcdTBhM2NcXHUwYTQxXFx1MGE0MlxcdTBhNDdcXHUwYTQ4XFx1MGE0Yi1cXHUwYTRkXFx1MGE1MVxcdTBhNzBcXHUwYTcxXFx1MGE3NVxcdTBhODFcXHUwYTgyXFx1MGFiY1xcdTBhYzEtXFx1MGFjNVxcdTBhYzdcXHUwYWM4XFx1MGFjZFxcdTBhZTJcXHUwYWUzXFx1MGIwMVxcdTBiM2NcXHUwYjNlXFx1MGIzZlxcdTBiNDEtXFx1MGI0NFxcdTBiNGRcXHUwYjU2XFx1MGI1N1xcdTBiNjJcXHUwYjYzXFx1MGI4MlxcdTBiYmVcXHUwYmMwXFx1MGJjZFxcdTBiZDdcXHUwYzNlLVxcdTBjNDBcXHUwYzQ2LVxcdTBjNDhcXHUwYzRhLVxcdTBjNGRcXHUwYzU1XFx1MGM1NlxcdTBjNjJcXHUwYzYzXFx1MGNiY1xcdTBjYmZcXHUwY2MyXFx1MGNjNlxcdTBjY2NcXHUwY2NkXFx1MGNkNVxcdTBjZDZcXHUwY2UyXFx1MGNlM1xcdTBkM2VcXHUwZDQxLVxcdTBkNDRcXHUwZDRkXFx1MGQ1N1xcdTBkNjJcXHUwZDYzXFx1MGRjYVxcdTBkY2ZcXHUwZGQyLVxcdTBkZDRcXHUwZGQ2XFx1MGRkZlxcdTBlMzFcXHUwZTM0LVxcdTBlM2FcXHUwZTQ3LVxcdTBlNGVcXHUwZWIxXFx1MGViNC1cXHUwZWI5XFx1MGViYlxcdTBlYmNcXHUwZWM4LVxcdTBlY2RcXHUwZjE4XFx1MGYxOVxcdTBmMzVcXHUwZjM3XFx1MGYzOVxcdTBmNzEtXFx1MGY3ZVxcdTBmODAtXFx1MGY4NFxcdTBmODZcXHUwZjg3XFx1MGY5MC1cXHUwZjk3XFx1MGY5OS1cXHUwZmJjXFx1MGZjNlxcdTEwMmQtXFx1MTAzMFxcdTEwMzItXFx1MTAzN1xcdTEwMzlcXHUxMDNhXFx1MTAzZFxcdTEwM2VcXHUxMDU4XFx1MTA1OVxcdTEwNWUtXFx1MTA2MFxcdTEwNzEtXFx1MTA3NFxcdTEwODJcXHUxMDg1XFx1MTA4NlxcdTEwOGRcXHUxMDlkXFx1MTM1ZlxcdTE3MTItXFx1MTcxNFxcdTE3MzItXFx1MTczNFxcdTE3NTJcXHUxNzUzXFx1MTc3MlxcdTE3NzNcXHUxN2I3LVxcdTE3YmRcXHUxN2M2XFx1MTdjOS1cXHUxN2QzXFx1MTdkZFxcdTE4MGItXFx1MTgwZFxcdTE4YTlcXHUxOTIwLVxcdTE5MjJcXHUxOTI3XFx1MTkyOFxcdTE5MzJcXHUxOTM5LVxcdTE5M2JcXHUxYTE3XFx1MWExOFxcdTFhNTZcXHUxYTU4LVxcdTFhNWVcXHUxYTYwXFx1MWE2MlxcdTFhNjUtXFx1MWE2Y1xcdTFhNzMtXFx1MWE3Y1xcdTFhN2ZcXHUxYjAwLVxcdTFiMDNcXHUxYjM0XFx1MWIzNi1cXHUxYjNhXFx1MWIzY1xcdTFiNDJcXHUxYjZiLVxcdTFiNzNcXHUxYjgwXFx1MWI4MVxcdTFiYTItXFx1MWJhNVxcdTFiYThcXHUxYmE5XFx1MWMyYy1cXHUxYzMzXFx1MWMzNlxcdTFjMzdcXHUxY2QwLVxcdTFjZDJcXHUxY2Q0LVxcdTFjZTBcXHUxY2UyLVxcdTFjZThcXHUxY2VkXFx1MWRjMC1cXHUxZGU2XFx1MWRmZC1cXHUxZGZmXFx1MjAwY1xcdTIwMGRcXHUyMGQwLVxcdTIwZjBcXHUyY2VmLVxcdTJjZjFcXHUyZGUwLVxcdTJkZmZcXHUzMDJhLVxcdTMwMmZcXHUzMDk5XFx1MzA5YVxcdWE2NmYtXFx1YTY3MlxcdWE2N2NcXHVhNjdkXFx1YTZmMFxcdWE2ZjFcXHVhODAyXFx1YTgwNlxcdWE4MGJcXHVhODI1XFx1YTgyNlxcdWE4YzRcXHVhOGUwLVxcdWE4ZjFcXHVhOTI2LVxcdWE5MmRcXHVhOTQ3LVxcdWE5NTFcXHVhOTgwLVxcdWE5ODJcXHVhOWIzXFx1YTliNi1cXHVhOWI5XFx1YTliY1xcdWFhMjktXFx1YWEyZVxcdWFhMzFcXHVhYTMyXFx1YWEzNVxcdWFhMzZcXHVhYTQzXFx1YWE0Y1xcdWFhYjBcXHVhYWIyLVxcdWFhYjRcXHVhYWI3XFx1YWFiOFxcdWFhYmVcXHVhYWJmXFx1YWFjMVxcdWFiZTVcXHVhYmU4XFx1YWJlZFxcdWRjMDAtXFx1ZGZmZlxcdWZiMWVcXHVmZTAwLVxcdWZlMGZcXHVmZTIwLVxcdWZlMjZcXHVmZjllXFx1ZmY5Zl0vO1xuICAgIGZ1bmN0aW9uIGlzRXh0ZW5kaW5nQ2hhcihjaCkge1xuICAgICAgcmV0dXJuIGNoLmNoYXJDb2RlQXQoMCkgPj0gNzY4ICYmIGV4dGVuZGluZ0NoYXJzLnRlc3QoY2gpO1xuICAgIH1cbiAgICBfX25hbWUoaXNFeHRlbmRpbmdDaGFyLCBcImlzRXh0ZW5kaW5nQ2hhclwiKTtcbiAgICBmdW5jdGlvbiBza2lwRXh0ZW5kaW5nQ2hhcnMoc3RyLCBwb3MsIGRpcikge1xuICAgICAgd2hpbGUgKChkaXIgPCAwID8gcG9zID4gMCA6IHBvcyA8IHN0ci5sZW5ndGgpICYmIGlzRXh0ZW5kaW5nQ2hhcihzdHIuY2hhckF0KHBvcykpKSB7XG4gICAgICAgIHBvcyArPSBkaXI7XG4gICAgICB9XG4gICAgICByZXR1cm4gcG9zO1xuICAgIH1cbiAgICBfX25hbWUoc2tpcEV4dGVuZGluZ0NoYXJzLCBcInNraXBFeHRlbmRpbmdDaGFyc1wiKTtcbiAgICBmdW5jdGlvbiBmaW5kRmlyc3QocHJlZCwgZnJvbSwgdG8pIHtcbiAgICAgIHZhciBkaXIgPSBmcm9tID4gdG8gPyAtMSA6IDE7XG4gICAgICBmb3IgKDsgOyApIHtcbiAgICAgICAgaWYgKGZyb20gPT0gdG8pIHtcbiAgICAgICAgICByZXR1cm4gZnJvbTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbWlkRiA9IChmcm9tICsgdG8pIC8gMiwgbWlkID0gZGlyIDwgMCA/IE1hdGguY2VpbChtaWRGKSA6IE1hdGguZmxvb3IobWlkRik7XG4gICAgICAgIGlmIChtaWQgPT0gZnJvbSkge1xuICAgICAgICAgIHJldHVybiBwcmVkKG1pZCkgPyBmcm9tIDogdG87XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByZWQobWlkKSkge1xuICAgICAgICAgIHRvID0gbWlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZyb20gPSBtaWQgKyBkaXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGZpbmRGaXJzdCwgXCJmaW5kRmlyc3RcIik7XG4gICAgZnVuY3Rpb24gaXRlcmF0ZUJpZGlTZWN0aW9ucyhvcmRlciwgZnJvbSwgdG8sIGYpIHtcbiAgICAgIGlmICghb3JkZXIpIHtcbiAgICAgICAgcmV0dXJuIGYoZnJvbSwgdG8sIFwibHRyXCIsIDApO1xuICAgICAgfVxuICAgICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgb3JkZXIubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIHZhciBwYXJ0ID0gb3JkZXJbaTJdO1xuICAgICAgICBpZiAocGFydC5mcm9tIDwgdG8gJiYgcGFydC50byA+IGZyb20gfHwgZnJvbSA9PSB0byAmJiBwYXJ0LnRvID09IGZyb20pIHtcbiAgICAgICAgICBmKE1hdGgubWF4KHBhcnQuZnJvbSwgZnJvbSksIE1hdGgubWluKHBhcnQudG8sIHRvKSwgcGFydC5sZXZlbCA9PSAxID8gXCJydGxcIiA6IFwibHRyXCIsIGkyKTtcbiAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgZihmcm9tLCB0bywgXCJsdHJcIik7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShpdGVyYXRlQmlkaVNlY3Rpb25zLCBcIml0ZXJhdGVCaWRpU2VjdGlvbnNcIik7XG4gICAgdmFyIGJpZGlPdGhlciA9IG51bGw7XG4gICAgZnVuY3Rpb24gZ2V0QmlkaVBhcnRBdChvcmRlciwgY2gsIHN0aWNreSkge1xuICAgICAgdmFyIGZvdW5kO1xuICAgICAgYmlkaU90aGVyID0gbnVsbDtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBvcmRlci5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgdmFyIGN1ciA9IG9yZGVyW2kyXTtcbiAgICAgICAgaWYgKGN1ci5mcm9tIDwgY2ggJiYgY3VyLnRvID4gY2gpIHtcbiAgICAgICAgICByZXR1cm4gaTI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1ci50byA9PSBjaCkge1xuICAgICAgICAgIGlmIChjdXIuZnJvbSAhPSBjdXIudG8gJiYgc3RpY2t5ID09IFwiYmVmb3JlXCIpIHtcbiAgICAgICAgICAgIGZvdW5kID0gaTI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJpZGlPdGhlciA9IGkyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VyLmZyb20gPT0gY2gpIHtcbiAgICAgICAgICBpZiAoY3VyLmZyb20gIT0gY3VyLnRvICYmIHN0aWNreSAhPSBcImJlZm9yZVwiKSB7XG4gICAgICAgICAgICBmb3VuZCA9IGkyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiaWRpT3RoZXIgPSBpMjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3VuZCAhPSBudWxsID8gZm91bmQgOiBiaWRpT3RoZXI7XG4gICAgfVxuICAgIF9fbmFtZShnZXRCaWRpUGFydEF0LCBcImdldEJpZGlQYXJ0QXRcIik7XG4gICAgdmFyIGJpZGlPcmRlcmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGxvd1R5cGVzID0gXCJiYmJiYmJiYmJ0c3R3c2JiYmJiYmJiYmJiYmJic3NzdHdOTiUlJU5OTk5OTixOLE4xMTExMTExMTExTk5OTk5OTkxMTExMTExMTExMTExMTExMTExMTExMTExMTk5OTk5OTExMTExMTExMTExMTExMTExMTExMTExMTExOTk5OYmJiYmJic2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiLE4lJSUlTk5OTkxOTk5OTiUlMTFOTE5OTjFMTk5OTk5MTExMTExMTExMTExMTExMTExMTExMTE5MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTlwiO1xuICAgICAgdmFyIGFyYWJpY1R5cGVzID0gXCJubm5ubm5OTnIlJXIsck5ObW1tbW1tbW1tbW1ycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJtbW1tbW1tbW1tbW1tbW1tbW1tbW1ubm5ubm5ubm5uJW5ucnJybXJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJybW1tbW1tbW5ObW1tbW1tcnJtbU5tbW1tcnIxMTExMTExMTExXCI7XG4gICAgICBmdW5jdGlvbiBjaGFyVHlwZShjb2RlKSB7XG4gICAgICAgIGlmIChjb2RlIDw9IDI0Nykge1xuICAgICAgICAgIHJldHVybiBsb3dUeXBlcy5jaGFyQXQoY29kZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoMTQyNCA8PSBjb2RlICYmIGNvZGUgPD0gMTUyNCkge1xuICAgICAgICAgIHJldHVybiBcIlJcIjtcbiAgICAgICAgfSBlbHNlIGlmICgxNTM2IDw9IGNvZGUgJiYgY29kZSA8PSAxNzg1KSB7XG4gICAgICAgICAgcmV0dXJuIGFyYWJpY1R5cGVzLmNoYXJBdChjb2RlIC0gMTUzNik7XG4gICAgICAgIH0gZWxzZSBpZiAoMTc3NCA8PSBjb2RlICYmIGNvZGUgPD0gMjIyMCkge1xuICAgICAgICAgIHJldHVybiBcInJcIjtcbiAgICAgICAgfSBlbHNlIGlmICg4MTkyIDw9IGNvZGUgJiYgY29kZSA8PSA4MjAzKSB7XG4gICAgICAgICAgcmV0dXJuIFwid1wiO1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gODIwNCkge1xuICAgICAgICAgIHJldHVybiBcImJcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gXCJMXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9fbmFtZShjaGFyVHlwZSwgXCJjaGFyVHlwZVwiKTtcbiAgICAgIHZhciBiaWRpUkUgPSAvW1xcdTA1OTAtXFx1MDVmNFxcdTA2MDAtXFx1MDZmZlxcdTA3MDAtXFx1MDhhY10vO1xuICAgICAgdmFyIGlzTmV1dHJhbCA9IC9bc3R3Tl0vLCBpc1N0cm9uZyA9IC9bTFJyXS8sIGNvdW50c0FzTGVmdCA9IC9bTGIxbl0vLCBjb3VudHNBc051bSA9IC9bMW5dLztcbiAgICAgIGZ1bmN0aW9uIEJpZGlTcGFuKGxldmVsLCBmcm9tLCB0bykge1xuICAgICAgICB0aGlzLmxldmVsID0gbGV2ZWw7XG4gICAgICAgIHRoaXMuZnJvbSA9IGZyb207XG4gICAgICAgIHRoaXMudG8gPSB0bztcbiAgICAgIH1cbiAgICAgIF9fbmFtZShCaWRpU3BhbiwgXCJCaWRpU3BhblwiKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdHIsIGRpcmVjdGlvbikge1xuICAgICAgICB2YXIgb3V0ZXJUeXBlID0gZGlyZWN0aW9uID09IFwibHRyXCIgPyBcIkxcIiA6IFwiUlwiO1xuICAgICAgICBpZiAoc3RyLmxlbmd0aCA9PSAwIHx8IGRpcmVjdGlvbiA9PSBcImx0clwiICYmICFiaWRpUkUudGVzdChzdHIpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZW4gPSBzdHIubGVuZ3RoLCB0eXBlcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgbGVuOyArK2kyKSB7XG4gICAgICAgICAgdHlwZXMucHVzaChjaGFyVHlwZShzdHIuY2hhckNvZGVBdChpMikpKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpJDEyID0gMCwgcHJldiA9IG91dGVyVHlwZTsgaSQxMiA8IGxlbjsgKytpJDEyKSB7XG4gICAgICAgICAgdmFyIHR5cGUgPSB0eXBlc1tpJDEyXTtcbiAgICAgICAgICBpZiAodHlwZSA9PSBcIm1cIikge1xuICAgICAgICAgICAgdHlwZXNbaSQxMl0gPSBwcmV2O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcmV2ID0gdHlwZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSQyMiA9IDAsIGN1ciA9IG91dGVyVHlwZTsgaSQyMiA8IGxlbjsgKytpJDIyKSB7XG4gICAgICAgICAgdmFyIHR5cGUkMSA9IHR5cGVzW2kkMjJdO1xuICAgICAgICAgIGlmICh0eXBlJDEgPT0gXCIxXCIgJiYgY3VyID09IFwiclwiKSB7XG4gICAgICAgICAgICB0eXBlc1tpJDIyXSA9IFwiblwiO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNTdHJvbmcudGVzdCh0eXBlJDEpKSB7XG4gICAgICAgICAgICBjdXIgPSB0eXBlJDE7XG4gICAgICAgICAgICBpZiAodHlwZSQxID09IFwiclwiKSB7XG4gICAgICAgICAgICAgIHR5cGVzW2kkMjJdID0gXCJSXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkkMyA9IDEsIHByZXYkMSA9IHR5cGVzWzBdOyBpJDMgPCBsZW4gLSAxOyArK2kkMykge1xuICAgICAgICAgIHZhciB0eXBlJDIgPSB0eXBlc1tpJDNdO1xuICAgICAgICAgIGlmICh0eXBlJDIgPT0gXCIrXCIgJiYgcHJldiQxID09IFwiMVwiICYmIHR5cGVzW2kkMyArIDFdID09IFwiMVwiKSB7XG4gICAgICAgICAgICB0eXBlc1tpJDNdID0gXCIxXCI7XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlJDIgPT0gXCIsXCIgJiYgcHJldiQxID09IHR5cGVzW2kkMyArIDFdICYmIChwcmV2JDEgPT0gXCIxXCIgfHwgcHJldiQxID09IFwiblwiKSkge1xuICAgICAgICAgICAgdHlwZXNbaSQzXSA9IHByZXYkMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJldiQxID0gdHlwZSQyO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkkNCA9IDA7IGkkNCA8IGxlbjsgKytpJDQpIHtcbiAgICAgICAgICB2YXIgdHlwZSQzID0gdHlwZXNbaSQ0XTtcbiAgICAgICAgICBpZiAodHlwZSQzID09IFwiLFwiKSB7XG4gICAgICAgICAgICB0eXBlc1tpJDRdID0gXCJOXCI7XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlJDMgPT0gXCIlXCIpIHtcbiAgICAgICAgICAgIHZhciBlbmQgPSB2b2lkIDA7XG4gICAgICAgICAgICBmb3IgKGVuZCA9IGkkNCArIDE7IGVuZCA8IGxlbiAmJiB0eXBlc1tlbmRdID09IFwiJVwiOyArK2VuZCkge1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHJlcGxhY2UgPSBpJDQgJiYgdHlwZXNbaSQ0IC0gMV0gPT0gXCIhXCIgfHwgZW5kIDwgbGVuICYmIHR5cGVzW2VuZF0gPT0gXCIxXCIgPyBcIjFcIiA6IFwiTlwiO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGkkNDsgaiA8IGVuZDsgKytqKSB7XG4gICAgICAgICAgICAgIHR5cGVzW2pdID0gcmVwbGFjZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkkNCA9IGVuZCAtIDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkkNSA9IDAsIGN1ciQxID0gb3V0ZXJUeXBlOyBpJDUgPCBsZW47ICsraSQ1KSB7XG4gICAgICAgICAgdmFyIHR5cGUkNCA9IHR5cGVzW2kkNV07XG4gICAgICAgICAgaWYgKGN1ciQxID09IFwiTFwiICYmIHR5cGUkNCA9PSBcIjFcIikge1xuICAgICAgICAgICAgdHlwZXNbaSQ1XSA9IFwiTFwiO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNTdHJvbmcudGVzdCh0eXBlJDQpKSB7XG4gICAgICAgICAgICBjdXIkMSA9IHR5cGUkNDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSQ2ID0gMDsgaSQ2IDwgbGVuOyArK2kkNikge1xuICAgICAgICAgIGlmIChpc05ldXRyYWwudGVzdCh0eXBlc1tpJDZdKSkge1xuICAgICAgICAgICAgdmFyIGVuZCQxID0gdm9pZCAwO1xuICAgICAgICAgICAgZm9yIChlbmQkMSA9IGkkNiArIDE7IGVuZCQxIDwgbGVuICYmIGlzTmV1dHJhbC50ZXN0KHR5cGVzW2VuZCQxXSk7ICsrZW5kJDEpIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBiZWZvcmUgPSAoaSQ2ID8gdHlwZXNbaSQ2IC0gMV0gOiBvdXRlclR5cGUpID09IFwiTFwiO1xuICAgICAgICAgICAgdmFyIGFmdGVyID0gKGVuZCQxIDwgbGVuID8gdHlwZXNbZW5kJDFdIDogb3V0ZXJUeXBlKSA9PSBcIkxcIjtcbiAgICAgICAgICAgIHZhciByZXBsYWNlJDEgPSBiZWZvcmUgPT0gYWZ0ZXIgPyBiZWZvcmUgPyBcIkxcIiA6IFwiUlwiIDogb3V0ZXJUeXBlO1xuICAgICAgICAgICAgZm9yICh2YXIgaiQxID0gaSQ2OyBqJDEgPCBlbmQkMTsgKytqJDEpIHtcbiAgICAgICAgICAgICAgdHlwZXNbaiQxXSA9IHJlcGxhY2UkMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkkNiA9IGVuZCQxIC0gMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG9yZGVyID0gW10sIG07XG4gICAgICAgIGZvciAodmFyIGkkNyA9IDA7IGkkNyA8IGxlbjsgKSB7XG4gICAgICAgICAgaWYgKGNvdW50c0FzTGVmdC50ZXN0KHR5cGVzW2kkN10pKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnQgPSBpJDc7XG4gICAgICAgICAgICBmb3IgKCsraSQ3OyBpJDcgPCBsZW4gJiYgY291bnRzQXNMZWZ0LnRlc3QodHlwZXNbaSQ3XSk7ICsraSQ3KSB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcmRlci5wdXNoKG5ldyBCaWRpU3BhbigwLCBzdGFydCwgaSQ3KSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBwb3MgPSBpJDcsIGF0ID0gb3JkZXIubGVuZ3RoLCBpc1JUTCA9IGRpcmVjdGlvbiA9PSBcInJ0bFwiID8gMSA6IDA7XG4gICAgICAgICAgICBmb3IgKCsraSQ3OyBpJDcgPCBsZW4gJiYgdHlwZXNbaSQ3XSAhPSBcIkxcIjsgKytpJDcpIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIGokMiA9IHBvczsgaiQyIDwgaSQ3OyApIHtcbiAgICAgICAgICAgICAgaWYgKGNvdW50c0FzTnVtLnRlc3QodHlwZXNbaiQyXSkpIHtcbiAgICAgICAgICAgICAgICBpZiAocG9zIDwgaiQyKSB7XG4gICAgICAgICAgICAgICAgICBvcmRlci5zcGxpY2UoYXQsIDAsIG5ldyBCaWRpU3BhbigxLCBwb3MsIGokMikpO1xuICAgICAgICAgICAgICAgICAgYXQgKz0gaXNSVEw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBuc3RhcnQgPSBqJDI7XG4gICAgICAgICAgICAgICAgZm9yICgrK2okMjsgaiQyIDwgaSQ3ICYmIGNvdW50c0FzTnVtLnRlc3QodHlwZXNbaiQyXSk7ICsraiQyKSB7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9yZGVyLnNwbGljZShhdCwgMCwgbmV3IEJpZGlTcGFuKDIsIG5zdGFydCwgaiQyKSk7XG4gICAgICAgICAgICAgICAgYXQgKz0gaXNSVEw7XG4gICAgICAgICAgICAgICAgcG9zID0gaiQyO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICsraiQyO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocG9zIDwgaSQ3KSB7XG4gICAgICAgICAgICAgIG9yZGVyLnNwbGljZShhdCwgMCwgbmV3IEJpZGlTcGFuKDEsIHBvcywgaSQ3KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJsdHJcIikge1xuICAgICAgICAgIGlmIChvcmRlclswXS5sZXZlbCA9PSAxICYmIChtID0gc3RyLm1hdGNoKC9eXFxzKy8pKSkge1xuICAgICAgICAgICAgb3JkZXJbMF0uZnJvbSA9IG1bMF0ubGVuZ3RoO1xuICAgICAgICAgICAgb3JkZXIudW5zaGlmdChuZXcgQmlkaVNwYW4oMCwgMCwgbVswXS5sZW5ndGgpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxzdChvcmRlcikubGV2ZWwgPT0gMSAmJiAobSA9IHN0ci5tYXRjaCgvXFxzKyQvKSkpIHtcbiAgICAgICAgICAgIGxzdChvcmRlcikudG8gLT0gbVswXS5sZW5ndGg7XG4gICAgICAgICAgICBvcmRlci5wdXNoKG5ldyBCaWRpU3BhbigwLCBsZW4gLSBtWzBdLmxlbmd0aCwgbGVuKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT0gXCJydGxcIiA/IG9yZGVyLnJldmVyc2UoKSA6IG9yZGVyO1xuICAgICAgfTtcbiAgICB9KCk7XG4gICAgZnVuY3Rpb24gZ2V0T3JkZXIobGluZSwgZGlyZWN0aW9uKSB7XG4gICAgICB2YXIgb3JkZXIgPSBsaW5lLm9yZGVyO1xuICAgICAgaWYgKG9yZGVyID09IG51bGwpIHtcbiAgICAgICAgb3JkZXIgPSBsaW5lLm9yZGVyID0gYmlkaU9yZGVyaW5nKGxpbmUudGV4dCwgZGlyZWN0aW9uKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcmRlcjtcbiAgICB9XG4gICAgX19uYW1lKGdldE9yZGVyLCBcImdldE9yZGVyXCIpO1xuICAgIHZhciBub0hhbmRsZXJzID0gW107XG4gICAgdmFyIG9uID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihlbWl0dGVyLCB0eXBlLCBmKSB7XG4gICAgICBpZiAoZW1pdHRlci5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGVtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBmLCBmYWxzZSk7XG4gICAgICB9IGVsc2UgaWYgKGVtaXR0ZXIuYXR0YWNoRXZlbnQpIHtcbiAgICAgICAgZW1pdHRlci5hdHRhY2hFdmVudChcIm9uXCIgKyB0eXBlLCBmKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBtYXAyID0gZW1pdHRlci5faGFuZGxlcnMgfHwgKGVtaXR0ZXIuX2hhbmRsZXJzID0ge30pO1xuICAgICAgICBtYXAyW3R5cGVdID0gKG1hcDJbdHlwZV0gfHwgbm9IYW5kbGVycykuY29uY2F0KGYpO1xuICAgICAgfVxuICAgIH0sIFwib25cIik7XG4gICAgZnVuY3Rpb24gZ2V0SGFuZGxlcnMoZW1pdHRlciwgdHlwZSkge1xuICAgICAgcmV0dXJuIGVtaXR0ZXIuX2hhbmRsZXJzICYmIGVtaXR0ZXIuX2hhbmRsZXJzW3R5cGVdIHx8IG5vSGFuZGxlcnM7XG4gICAgfVxuICAgIF9fbmFtZShnZXRIYW5kbGVycywgXCJnZXRIYW5kbGVyc1wiKTtcbiAgICBmdW5jdGlvbiBvZmYoZW1pdHRlciwgdHlwZSwgZikge1xuICAgICAgaWYgKGVtaXR0ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICBlbWl0dGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgZiwgZmFsc2UpO1xuICAgICAgfSBlbHNlIGlmIChlbWl0dGVyLmRldGFjaEV2ZW50KSB7XG4gICAgICAgIGVtaXR0ZXIuZGV0YWNoRXZlbnQoXCJvblwiICsgdHlwZSwgZik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbWFwMiA9IGVtaXR0ZXIuX2hhbmRsZXJzLCBhcnIgPSBtYXAyICYmIG1hcDJbdHlwZV07XG4gICAgICAgIGlmIChhcnIpIHtcbiAgICAgICAgICB2YXIgaW5kZXggPSBpbmRleE9mKGFyciwgZik7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIG1hcDJbdHlwZV0gPSBhcnIuc2xpY2UoMCwgaW5kZXgpLmNvbmNhdChhcnIuc2xpY2UoaW5kZXggKyAxKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShvZmYsIFwib2ZmXCIpO1xuICAgIGZ1bmN0aW9uIHNpZ25hbChlbWl0dGVyLCB0eXBlKSB7XG4gICAgICB2YXIgaGFuZGxlcnMgPSBnZXRIYW5kbGVycyhlbWl0dGVyLCB0eXBlKTtcbiAgICAgIGlmICghaGFuZGxlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBoYW5kbGVycy5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgaGFuZGxlcnNbaTJdLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoc2lnbmFsLCBcInNpZ25hbFwiKTtcbiAgICBmdW5jdGlvbiBzaWduYWxET01FdmVudChjbSwgZSwgb3ZlcnJpZGUpIHtcbiAgICAgIGlmICh0eXBlb2YgZSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGUgPSB7IHR5cGU6IGUsIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlO1xuICAgICAgICB9IH07XG4gICAgICB9XG4gICAgICBzaWduYWwoY20sIG92ZXJyaWRlIHx8IGUudHlwZSwgY20sIGUpO1xuICAgICAgcmV0dXJuIGVfZGVmYXVsdFByZXZlbnRlZChlKSB8fCBlLmNvZGVtaXJyb3JJZ25vcmU7XG4gICAgfVxuICAgIF9fbmFtZShzaWduYWxET01FdmVudCwgXCJzaWduYWxET01FdmVudFwiKTtcbiAgICBmdW5jdGlvbiBzaWduYWxDdXJzb3JBY3Rpdml0eShjbSkge1xuICAgICAgdmFyIGFyciA9IGNtLl9oYW5kbGVycyAmJiBjbS5faGFuZGxlcnMuY3Vyc29yQWN0aXZpdHk7XG4gICAgICBpZiAoIWFycikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgc2V0ID0gY20uY3VyT3AuY3Vyc29yQWN0aXZpdHlIYW5kbGVycyB8fCAoY20uY3VyT3AuY3Vyc29yQWN0aXZpdHlIYW5kbGVycyA9IFtdKTtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBhcnIubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIGlmIChpbmRleE9mKHNldCwgYXJyW2kyXSkgPT0gLTEpIHtcbiAgICAgICAgICBzZXQucHVzaChhcnJbaTJdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoc2lnbmFsQ3Vyc29yQWN0aXZpdHksIFwic2lnbmFsQ3Vyc29yQWN0aXZpdHlcIik7XG4gICAgZnVuY3Rpb24gaGFzSGFuZGxlcihlbWl0dGVyLCB0eXBlKSB7XG4gICAgICByZXR1cm4gZ2V0SGFuZGxlcnMoZW1pdHRlciwgdHlwZSkubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgX19uYW1lKGhhc0hhbmRsZXIsIFwiaGFzSGFuZGxlclwiKTtcbiAgICBmdW5jdGlvbiBldmVudE1peGluKGN0b3IpIHtcbiAgICAgIGN0b3IucHJvdG90eXBlLm9uID0gZnVuY3Rpb24odHlwZSwgZikge1xuICAgICAgICBvbih0aGlzLCB0eXBlLCBmKTtcbiAgICAgIH07XG4gICAgICBjdG9yLnByb3RvdHlwZS5vZmYgPSBmdW5jdGlvbih0eXBlLCBmKSB7XG4gICAgICAgIG9mZih0aGlzLCB0eXBlLCBmKTtcbiAgICAgIH07XG4gICAgfVxuICAgIF9fbmFtZShldmVudE1peGluLCBcImV2ZW50TWl4aW5cIik7XG4gICAgZnVuY3Rpb24gZV9wcmV2ZW50RGVmYXVsdChlKSB7XG4gICAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShlX3ByZXZlbnREZWZhdWx0LCBcImVfcHJldmVudERlZmF1bHRcIik7XG4gICAgZnVuY3Rpb24gZV9zdG9wUHJvcGFnYXRpb24oZSkge1xuICAgICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlLmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShlX3N0b3BQcm9wYWdhdGlvbiwgXCJlX3N0b3BQcm9wYWdhdGlvblwiKTtcbiAgICBmdW5jdGlvbiBlX2RlZmF1bHRQcmV2ZW50ZWQoZSkge1xuICAgICAgcmV0dXJuIGUuZGVmYXVsdFByZXZlbnRlZCAhPSBudWxsID8gZS5kZWZhdWx0UHJldmVudGVkIDogZS5yZXR1cm5WYWx1ZSA9PSBmYWxzZTtcbiAgICB9XG4gICAgX19uYW1lKGVfZGVmYXVsdFByZXZlbnRlZCwgXCJlX2RlZmF1bHRQcmV2ZW50ZWRcIik7XG4gICAgZnVuY3Rpb24gZV9zdG9wKGUpIHtcbiAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7XG4gICAgICBlX3N0b3BQcm9wYWdhdGlvbihlKTtcbiAgICB9XG4gICAgX19uYW1lKGVfc3RvcCwgXCJlX3N0b3BcIik7XG4gICAgZnVuY3Rpb24gZV90YXJnZXQoZSkge1xuICAgICAgcmV0dXJuIGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudDtcbiAgICB9XG4gICAgX19uYW1lKGVfdGFyZ2V0LCBcImVfdGFyZ2V0XCIpO1xuICAgIGZ1bmN0aW9uIGVfYnV0dG9uKGUpIHtcbiAgICAgIHZhciBiID0gZS53aGljaDtcbiAgICAgIGlmIChiID09IG51bGwpIHtcbiAgICAgICAgaWYgKGUuYnV0dG9uICYgMSkge1xuICAgICAgICAgIGIgPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKGUuYnV0dG9uICYgMikge1xuICAgICAgICAgIGIgPSAzO1xuICAgICAgICB9IGVsc2UgaWYgKGUuYnV0dG9uICYgNCkge1xuICAgICAgICAgIGIgPSAyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWFjICYmIGUuY3RybEtleSAmJiBiID09IDEpIHtcbiAgICAgICAgYiA9IDM7XG4gICAgICB9XG4gICAgICByZXR1cm4gYjtcbiAgICB9XG4gICAgX19uYW1lKGVfYnV0dG9uLCBcImVfYnV0dG9uXCIpO1xuICAgIHZhciBkcmFnQW5kRHJvcCA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCA5KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBkaXYgPSBlbHQoXCJkaXZcIik7XG4gICAgICByZXR1cm4gXCJkcmFnZ2FibGVcIiBpbiBkaXYgfHwgXCJkcmFnRHJvcFwiIGluIGRpdjtcbiAgICB9KCk7XG4gICAgdmFyIHp3c3BTdXBwb3J0ZWQ7XG4gICAgZnVuY3Rpb24gemVyb1dpZHRoRWxlbWVudChtZWFzdXJlKSB7XG4gICAgICBpZiAoendzcFN1cHBvcnRlZCA9PSBudWxsKSB7XG4gICAgICAgIHZhciB0ZXN0ID0gZWx0KFwic3BhblwiLCBcIlxcdTIwMEJcIik7XG4gICAgICAgIHJlbW92ZUNoaWxkcmVuQW5kQWRkKG1lYXN1cmUsIGVsdChcInNwYW5cIiwgW3Rlc3QsIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwieFwiKV0pKTtcbiAgICAgICAgaWYgKG1lYXN1cmUuZmlyc3RDaGlsZC5vZmZzZXRIZWlnaHQgIT0gMCkge1xuICAgICAgICAgIHp3c3BTdXBwb3J0ZWQgPSB0ZXN0Lm9mZnNldFdpZHRoIDw9IDEgJiYgdGVzdC5vZmZzZXRIZWlnaHQgPiAyICYmICEoaWUgJiYgaWVfdmVyc2lvbiA8IDgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgbm9kZSA9IHp3c3BTdXBwb3J0ZWQgPyBlbHQoXCJzcGFuXCIsIFwiXFx1MjAwQlwiKSA6IGVsdChcInNwYW5cIiwgXCJcXHhBMFwiLCBudWxsLCBcImRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDFweDsgbWFyZ2luLXJpZ2h0OiAtMXB4XCIpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJjbS10ZXh0XCIsIFwiXCIpO1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIF9fbmFtZSh6ZXJvV2lkdGhFbGVtZW50LCBcInplcm9XaWR0aEVsZW1lbnRcIik7XG4gICAgdmFyIGJhZEJpZGlSZWN0cztcbiAgICBmdW5jdGlvbiBoYXNCYWRCaWRpUmVjdHMobWVhc3VyZSkge1xuICAgICAgaWYgKGJhZEJpZGlSZWN0cyAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBiYWRCaWRpUmVjdHM7XG4gICAgICB9XG4gICAgICB2YXIgdHh0ID0gcmVtb3ZlQ2hpbGRyZW5BbmRBZGQobWVhc3VyZSwgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJBXFx1MDYyRUFcIikpO1xuICAgICAgdmFyIHIwID0gcmFuZ2UodHh0LCAwLCAxKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHZhciByMSA9IHJhbmdlKHR4dCwgMSwgMikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICByZW1vdmVDaGlsZHJlbihtZWFzdXJlKTtcbiAgICAgIGlmICghcjAgfHwgcjAubGVmdCA9PSByMC5yaWdodCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFkQmlkaVJlY3RzID0gcjEucmlnaHQgLSByMC5yaWdodCA8IDM7XG4gICAgfVxuICAgIF9fbmFtZShoYXNCYWRCaWRpUmVjdHMsIFwiaGFzQmFkQmlkaVJlY3RzXCIpO1xuICAgIHZhciBzcGxpdExpbmVzQXV0byA9IFwiXFxuXFxuYlwiLnNwbGl0KC9cXG4vKS5sZW5ndGggIT0gMyA/IGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgdmFyIHBvcyA9IDAsIHJlc3VsdCA9IFtdLCBsID0gc3RyaW5nLmxlbmd0aDtcbiAgICAgIHdoaWxlIChwb3MgPD0gbCkge1xuICAgICAgICB2YXIgbmwgPSBzdHJpbmcuaW5kZXhPZihcIlxcblwiLCBwb3MpO1xuICAgICAgICBpZiAobmwgPT0gLTEpIHtcbiAgICAgICAgICBubCA9IHN0cmluZy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zLCBzdHJpbmcuY2hhckF0KG5sIC0gMSkgPT0gXCJcXHJcIiA/IG5sIC0gMSA6IG5sKTtcbiAgICAgICAgdmFyIHJ0ID0gbGluZS5pbmRleE9mKFwiXFxyXCIpO1xuICAgICAgICBpZiAocnQgIT0gLTEpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChsaW5lLnNsaWNlKDAsIHJ0KSk7XG4gICAgICAgICAgcG9zICs9IHJ0ICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQucHVzaChsaW5lKTtcbiAgICAgICAgICBwb3MgPSBubCArIDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSA6IGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgcmV0dXJuIHN0cmluZy5zcGxpdCgvXFxyXFxuP3xcXG4vKTtcbiAgICB9O1xuICAgIHZhciBoYXNTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uID8gZnVuY3Rpb24odGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0ZS5zZWxlY3Rpb25TdGFydCAhPSB0ZS5zZWxlY3Rpb25FbmQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IDogZnVuY3Rpb24odGUpIHtcbiAgICAgIHZhciByYW5nZTI7XG4gICAgICB0cnkge1xuICAgICAgICByYW5nZTIgPSB0ZS5vd25lckRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgICAgaWYgKCFyYW5nZTIgfHwgcmFuZ2UyLnBhcmVudEVsZW1lbnQoKSAhPSB0ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmFuZ2UyLmNvbXBhcmVFbmRQb2ludHMoXCJTdGFydFRvRW5kXCIsIHJhbmdlMikgIT0gMDtcbiAgICB9O1xuICAgIHZhciBoYXNDb3B5RXZlbnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlID0gZWx0KFwiZGl2XCIpO1xuICAgICAgaWYgKFwib25jb3B5XCIgaW4gZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGUuc2V0QXR0cmlidXRlKFwib25jb3B5XCIsIFwicmV0dXJuO1wiKTtcbiAgICAgIHJldHVybiB0eXBlb2YgZS5vbmNvcHkgPT0gXCJmdW5jdGlvblwiO1xuICAgIH0oKTtcbiAgICB2YXIgYmFkWm9vbWVkUmVjdHMgPSBudWxsO1xuICAgIGZ1bmN0aW9uIGhhc0JhZFpvb21lZFJlY3RzKG1lYXN1cmUpIHtcbiAgICAgIGlmIChiYWRab29tZWRSZWN0cyAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBiYWRab29tZWRSZWN0cztcbiAgICAgIH1cbiAgICAgIHZhciBub2RlID0gcmVtb3ZlQ2hpbGRyZW5BbmRBZGQobWVhc3VyZSwgZWx0KFwic3BhblwiLCBcInhcIikpO1xuICAgICAgdmFyIG5vcm1hbCA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB2YXIgZnJvbVJhbmdlID0gcmFuZ2Uobm9kZSwgMCwgMSkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICByZXR1cm4gYmFkWm9vbWVkUmVjdHMgPSBNYXRoLmFicyhub3JtYWwubGVmdCAtIGZyb21SYW5nZS5sZWZ0KSA+IDE7XG4gICAgfVxuICAgIF9fbmFtZShoYXNCYWRab29tZWRSZWN0cywgXCJoYXNCYWRab29tZWRSZWN0c1wiKTtcbiAgICB2YXIgbW9kZXMgPSB7fSwgbWltZU1vZGVzID0ge307XG4gICAgZnVuY3Rpb24gZGVmaW5lTW9kZShuYW1lLCBtb2RlKSB7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgbW9kZS5kZXBlbmRlbmNpZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpO1xuICAgICAgfVxuICAgICAgbW9kZXNbbmFtZV0gPSBtb2RlO1xuICAgIH1cbiAgICBfX25hbWUoZGVmaW5lTW9kZSwgXCJkZWZpbmVNb2RlXCIpO1xuICAgIGZ1bmN0aW9uIGRlZmluZU1JTUUobWltZSwgc3BlYykge1xuICAgICAgbWltZU1vZGVzW21pbWVdID0gc3BlYztcbiAgICB9XG4gICAgX19uYW1lKGRlZmluZU1JTUUsIFwiZGVmaW5lTUlNRVwiKTtcbiAgICBmdW5jdGlvbiByZXNvbHZlTW9kZShzcGVjKSB7XG4gICAgICBpZiAodHlwZW9mIHNwZWMgPT0gXCJzdHJpbmdcIiAmJiBtaW1lTW9kZXMuaGFzT3duUHJvcGVydHkoc3BlYykpIHtcbiAgICAgICAgc3BlYyA9IG1pbWVNb2Rlc1tzcGVjXTtcbiAgICAgIH0gZWxzZSBpZiAoc3BlYyAmJiB0eXBlb2Ygc3BlYy5uYW1lID09IFwic3RyaW5nXCIgJiYgbWltZU1vZGVzLmhhc093blByb3BlcnR5KHNwZWMubmFtZSkpIHtcbiAgICAgICAgdmFyIGZvdW5kID0gbWltZU1vZGVzW3NwZWMubmFtZV07XG4gICAgICAgIGlmICh0eXBlb2YgZm91bmQgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIGZvdW5kID0geyBuYW1lOiBmb3VuZCB9O1xuICAgICAgICB9XG4gICAgICAgIHNwZWMgPSBjcmVhdGVPYmooZm91bmQsIHNwZWMpO1xuICAgICAgICBzcGVjLm5hbWUgPSBmb3VuZC5uYW1lO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3BlYyA9PSBcInN0cmluZ1wiICYmIC9eW1xcd1xcLV0rXFwvW1xcd1xcLV0rXFwreG1sJC8udGVzdChzcGVjKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZU1vZGUoXCJhcHBsaWNhdGlvbi94bWxcIik7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzcGVjID09IFwic3RyaW5nXCIgJiYgL15bXFx3XFwtXStcXC9bXFx3XFwtXStcXCtqc29uJC8udGVzdChzcGVjKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZU1vZGUoXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBzcGVjID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIHsgbmFtZTogc3BlYyB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNwZWMgfHwgeyBuYW1lOiBcIm51bGxcIiB9O1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUocmVzb2x2ZU1vZGUsIFwicmVzb2x2ZU1vZGVcIik7XG4gICAgZnVuY3Rpb24gZ2V0TW9kZShvcHRpb25zLCBzcGVjKSB7XG4gICAgICBzcGVjID0gcmVzb2x2ZU1vZGUoc3BlYyk7XG4gICAgICB2YXIgbWZhY3RvcnkgPSBtb2Rlc1tzcGVjLm5hbWVdO1xuICAgICAgaWYgKCFtZmFjdG9yeSkge1xuICAgICAgICByZXR1cm4gZ2V0TW9kZShvcHRpb25zLCBcInRleHQvcGxhaW5cIik7XG4gICAgICB9XG4gICAgICB2YXIgbW9kZU9iaiA9IG1mYWN0b3J5KG9wdGlvbnMsIHNwZWMpO1xuICAgICAgaWYgKG1vZGVFeHRlbnNpb25zLmhhc093blByb3BlcnR5KHNwZWMubmFtZSkpIHtcbiAgICAgICAgdmFyIGV4dHMgPSBtb2RlRXh0ZW5zaW9uc1tzcGVjLm5hbWVdO1xuICAgICAgICBmb3IgKHZhciBwcm9wMiBpbiBleHRzKSB7XG4gICAgICAgICAgaWYgKCFleHRzLmhhc093blByb3BlcnR5KHByb3AyKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtb2RlT2JqLmhhc093blByb3BlcnR5KHByb3AyKSkge1xuICAgICAgICAgICAgbW9kZU9ialtcIl9cIiArIHByb3AyXSA9IG1vZGVPYmpbcHJvcDJdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtb2RlT2JqW3Byb3AyXSA9IGV4dHNbcHJvcDJdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBtb2RlT2JqLm5hbWUgPSBzcGVjLm5hbWU7XG4gICAgICBpZiAoc3BlYy5oZWxwZXJUeXBlKSB7XG4gICAgICAgIG1vZGVPYmouaGVscGVyVHlwZSA9IHNwZWMuaGVscGVyVHlwZTtcbiAgICAgIH1cbiAgICAgIGlmIChzcGVjLm1vZGVQcm9wcykge1xuICAgICAgICBmb3IgKHZhciBwcm9wJDEgaW4gc3BlYy5tb2RlUHJvcHMpIHtcbiAgICAgICAgICBtb2RlT2JqW3Byb3AkMV0gPSBzcGVjLm1vZGVQcm9wc1twcm9wJDFdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbW9kZU9iajtcbiAgICB9XG4gICAgX19uYW1lKGdldE1vZGUsIFwiZ2V0TW9kZVwiKTtcbiAgICB2YXIgbW9kZUV4dGVuc2lvbnMgPSB7fTtcbiAgICBmdW5jdGlvbiBleHRlbmRNb2RlKG1vZGUsIHByb3BlcnRpZXMpIHtcbiAgICAgIHZhciBleHRzID0gbW9kZUV4dGVuc2lvbnMuaGFzT3duUHJvcGVydHkobW9kZSkgPyBtb2RlRXh0ZW5zaW9uc1ttb2RlXSA6IG1vZGVFeHRlbnNpb25zW21vZGVdID0ge307XG4gICAgICBjb3B5T2JqKHByb3BlcnRpZXMsIGV4dHMpO1xuICAgIH1cbiAgICBfX25hbWUoZXh0ZW5kTW9kZSwgXCJleHRlbmRNb2RlXCIpO1xuICAgIGZ1bmN0aW9uIGNvcHlTdGF0ZShtb2RlLCBzdGF0ZSkge1xuICAgICAgaWYgKHN0YXRlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmIChtb2RlLmNvcHlTdGF0ZSkge1xuICAgICAgICByZXR1cm4gbW9kZS5jb3B5U3RhdGUoc3RhdGUpO1xuICAgICAgfVxuICAgICAgdmFyIG5zdGF0ZSA9IHt9O1xuICAgICAgZm9yICh2YXIgbiBpbiBzdGF0ZSkge1xuICAgICAgICB2YXIgdmFsID0gc3RhdGVbbl07XG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgIHZhbCA9IHZhbC5jb25jYXQoW10pO1xuICAgICAgICB9XG4gICAgICAgIG5zdGF0ZVtuXSA9IHZhbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuc3RhdGU7XG4gICAgfVxuICAgIF9fbmFtZShjb3B5U3RhdGUsIFwiY29weVN0YXRlXCIpO1xuICAgIGZ1bmN0aW9uIGlubmVyTW9kZShtb2RlLCBzdGF0ZSkge1xuICAgICAgdmFyIGluZm87XG4gICAgICB3aGlsZSAobW9kZS5pbm5lck1vZGUpIHtcbiAgICAgICAgaW5mbyA9IG1vZGUuaW5uZXJNb2RlKHN0YXRlKTtcbiAgICAgICAgaWYgKCFpbmZvIHx8IGluZm8ubW9kZSA9PSBtb2RlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUgPSBpbmZvLnN0YXRlO1xuICAgICAgICBtb2RlID0gaW5mby5tb2RlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGluZm8gfHwgeyBtb2RlLCBzdGF0ZSB9O1xuICAgIH1cbiAgICBfX25hbWUoaW5uZXJNb2RlLCBcImlubmVyTW9kZVwiKTtcbiAgICBmdW5jdGlvbiBzdGFydFN0YXRlKG1vZGUsIGExLCBhMikge1xuICAgICAgcmV0dXJuIG1vZGUuc3RhcnRTdGF0ZSA/IG1vZGUuc3RhcnRTdGF0ZShhMSwgYTIpIDogdHJ1ZTtcbiAgICB9XG4gICAgX19uYW1lKHN0YXJ0U3RhdGUsIFwic3RhcnRTdGF0ZVwiKTtcbiAgICB2YXIgU3RyaW5nU3RyZWFtID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihzdHJpbmcsIHRhYlNpemUsIGxpbmVPcmFjbGUpIHtcbiAgICAgIHRoaXMucG9zID0gdGhpcy5zdGFydCA9IDA7XG4gICAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICAgIHRoaXMudGFiU2l6ZSA9IHRhYlNpemUgfHwgODtcbiAgICAgIHRoaXMubGFzdENvbHVtblBvcyA9IHRoaXMubGFzdENvbHVtblZhbHVlID0gMDtcbiAgICAgIHRoaXMubGluZVN0YXJ0ID0gMDtcbiAgICAgIHRoaXMubGluZU9yYWNsZSA9IGxpbmVPcmFjbGU7XG4gICAgfSwgXCJTdHJpbmdTdHJlYW1cIik7XG4gICAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5lb2wgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnBvcyA+PSB0aGlzLnN0cmluZy5sZW5ndGg7XG4gICAgfTtcbiAgICBTdHJpbmdTdHJlYW0ucHJvdG90eXBlLnNvbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMucG9zID09IHRoaXMubGluZVN0YXJ0O1xuICAgIH07XG4gICAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5wZWVrID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdHJpbmcuY2hhckF0KHRoaXMucG9zKSB8fCB2b2lkIDA7XG4gICAgfTtcbiAgICBTdHJpbmdTdHJlYW0ucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLnBvcyA8IHRoaXMuc3RyaW5nLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmcuY2hhckF0KHRoaXMucG9zKyspO1xuICAgICAgfVxuICAgIH07XG4gICAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5lYXQgPSBmdW5jdGlvbihtYXRjaCkge1xuICAgICAgdmFyIGNoID0gdGhpcy5zdHJpbmcuY2hhckF0KHRoaXMucG9zKTtcbiAgICAgIHZhciBvaztcbiAgICAgIGlmICh0eXBlb2YgbWF0Y2ggPT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvayA9IGNoID09IG1hdGNoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2sgPSBjaCAmJiAobWF0Y2gudGVzdCA/IG1hdGNoLnRlc3QoY2gpIDogbWF0Y2goY2gpKTtcbiAgICAgIH1cbiAgICAgIGlmIChvaykge1xuICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICByZXR1cm4gY2g7XG4gICAgICB9XG4gICAgfTtcbiAgICBTdHJpbmdTdHJlYW0ucHJvdG90eXBlLmVhdFdoaWxlID0gZnVuY3Rpb24obWF0Y2gpIHtcbiAgICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgd2hpbGUgKHRoaXMuZWF0KG1hdGNoKSkge1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucG9zID4gc3RhcnQ7XG4gICAgfTtcbiAgICBTdHJpbmdTdHJlYW0ucHJvdG90eXBlLmVhdFNwYWNlID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICAgIHdoaWxlICgvW1xcc1xcdTAwYTBdLy50ZXN0KHRoaXMuc3RyaW5nLmNoYXJBdCh0aGlzLnBvcykpKSB7XG4gICAgICAgICsrdGhpcy5wb3M7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5wb3MgPiBzdGFydDtcbiAgICB9O1xuICAgIFN0cmluZ1N0cmVhbS5wcm90b3R5cGUuc2tpcFRvRW5kID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLnBvcyA9IHRoaXMuc3RyaW5nLmxlbmd0aDtcbiAgICB9O1xuICAgIFN0cmluZ1N0cmVhbS5wcm90b3R5cGUuc2tpcFRvID0gZnVuY3Rpb24oY2gpIHtcbiAgICAgIHZhciBmb3VuZCA9IHRoaXMuc3RyaW5nLmluZGV4T2YoY2gsIHRoaXMucG9zKTtcbiAgICAgIGlmIChmb3VuZCA+IC0xKSB7XG4gICAgICAgIHRoaXMucG9zID0gZm91bmQ7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH07XG4gICAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5iYWNrVXAgPSBmdW5jdGlvbihuKSB7XG4gICAgICB0aGlzLnBvcyAtPSBuO1xuICAgIH07XG4gICAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5jb2x1bW4gPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLmxhc3RDb2x1bW5Qb3MgPCB0aGlzLnN0YXJ0KSB7XG4gICAgICAgIHRoaXMubGFzdENvbHVtblZhbHVlID0gY291bnRDb2x1bW4odGhpcy5zdHJpbmcsIHRoaXMuc3RhcnQsIHRoaXMudGFiU2l6ZSwgdGhpcy5sYXN0Q29sdW1uUG9zLCB0aGlzLmxhc3RDb2x1bW5WYWx1ZSk7XG4gICAgICAgIHRoaXMubGFzdENvbHVtblBvcyA9IHRoaXMuc3RhcnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5sYXN0Q29sdW1uVmFsdWUgLSAodGhpcy5saW5lU3RhcnQgPyBjb3VudENvbHVtbih0aGlzLnN0cmluZywgdGhpcy5saW5lU3RhcnQsIHRoaXMudGFiU2l6ZSkgOiAwKTtcbiAgICB9O1xuICAgIFN0cmluZ1N0cmVhbS5wcm90b3R5cGUuaW5kZW50YXRpb24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBjb3VudENvbHVtbih0aGlzLnN0cmluZywgbnVsbCwgdGhpcy50YWJTaXplKSAtICh0aGlzLmxpbmVTdGFydCA/IGNvdW50Q29sdW1uKHRoaXMuc3RyaW5nLCB0aGlzLmxpbmVTdGFydCwgdGhpcy50YWJTaXplKSA6IDApO1xuICAgIH07XG4gICAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uKHBhdHRlcm4sIGNvbnN1bWUsIGNhc2VJbnNlbnNpdGl2ZSkge1xuICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdmFyIGNhc2VkID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihzdHIpIHtcbiAgICAgICAgICByZXR1cm4gY2FzZUluc2Vuc2l0aXZlID8gc3RyLnRvTG93ZXJDYXNlKCkgOiBzdHI7XG4gICAgICAgIH0sIFwiY2FzZWRcIik7XG4gICAgICAgIHZhciBzdWJzdHIgPSB0aGlzLnN0cmluZy5zdWJzdHIodGhpcy5wb3MsIHBhdHRlcm4ubGVuZ3RoKTtcbiAgICAgICAgaWYgKGNhc2VkKHN1YnN0cikgPT0gY2FzZWQocGF0dGVybikpIHtcbiAgICAgICAgICBpZiAoY29uc3VtZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMucG9zICs9IHBhdHRlcm4ubGVuZ3RoO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG1hdGNoID0gdGhpcy5zdHJpbmcuc2xpY2UodGhpcy5wb3MpLm1hdGNoKHBhdHRlcm4pO1xuICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2guaW5kZXggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoICYmIGNvbnN1bWUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH1cbiAgICB9O1xuICAgIFN0cmluZ1N0cmVhbS5wcm90b3R5cGUuY3VycmVudCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RyaW5nLnNsaWNlKHRoaXMuc3RhcnQsIHRoaXMucG9zKTtcbiAgICB9O1xuICAgIFN0cmluZ1N0cmVhbS5wcm90b3R5cGUuaGlkZUZpcnN0Q2hhcnMgPSBmdW5jdGlvbihuLCBpbm5lcikge1xuICAgICAgdGhpcy5saW5lU3RhcnQgKz0gbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBpbm5lcigpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5saW5lU3RhcnQgLT0gbjtcbiAgICAgIH1cbiAgICB9O1xuICAgIFN0cmluZ1N0cmVhbS5wcm90b3R5cGUubG9va0FoZWFkID0gZnVuY3Rpb24obikge1xuICAgICAgdmFyIG9yYWNsZSA9IHRoaXMubGluZU9yYWNsZTtcbiAgICAgIHJldHVybiBvcmFjbGUgJiYgb3JhY2xlLmxvb2tBaGVhZChuKTtcbiAgICB9O1xuICAgIFN0cmluZ1N0cmVhbS5wcm90b3R5cGUuYmFzZVRva2VuID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgb3JhY2xlID0gdGhpcy5saW5lT3JhY2xlO1xuICAgICAgcmV0dXJuIG9yYWNsZSAmJiBvcmFjbGUuYmFzZVRva2VuKHRoaXMucG9zKTtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldExpbmUoZG9jLCBuKSB7XG4gICAgICBuIC09IGRvYy5maXJzdDtcbiAgICAgIGlmIChuIDwgMCB8fCBuID49IGRvYy5zaXplKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZXJlIGlzIG5vIGxpbmUgXCIgKyAobiArIGRvYy5maXJzdCkgKyBcIiBpbiB0aGUgZG9jdW1lbnQuXCIpO1xuICAgICAgfVxuICAgICAgdmFyIGNodW5rID0gZG9jO1xuICAgICAgd2hpbGUgKCFjaHVuay5saW5lcykge1xuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IDsgKytpMikge1xuICAgICAgICAgIHZhciBjaGlsZCA9IGNodW5rLmNoaWxkcmVuW2kyXSwgc3ogPSBjaGlsZC5jaHVua1NpemUoKTtcbiAgICAgICAgICBpZiAobiA8IHN6KSB7XG4gICAgICAgICAgICBjaHVuayA9IGNoaWxkO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIG4gLT0gc3o7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjaHVuay5saW5lc1tuXTtcbiAgICB9XG4gICAgX19uYW1lKGdldExpbmUsIFwiZ2V0TGluZVwiKTtcbiAgICBmdW5jdGlvbiBnZXRCZXR3ZWVuKGRvYywgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIG91dCA9IFtdLCBuID0gc3RhcnQubGluZTtcbiAgICAgIGRvYy5pdGVyKHN0YXJ0LmxpbmUsIGVuZC5saW5lICsgMSwgZnVuY3Rpb24obGluZSkge1xuICAgICAgICB2YXIgdGV4dCA9IGxpbmUudGV4dDtcbiAgICAgICAgaWYgKG4gPT0gZW5kLmxpbmUpIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZSgwLCBlbmQuY2gpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuID09IHN0YXJ0LmxpbmUpIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZShzdGFydC5jaCk7XG4gICAgICAgIH1cbiAgICAgICAgb3V0LnB1c2godGV4dCk7XG4gICAgICAgICsrbjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgX19uYW1lKGdldEJldHdlZW4sIFwiZ2V0QmV0d2VlblwiKTtcbiAgICBmdW5jdGlvbiBnZXRMaW5lcyhkb2MsIGZyb20sIHRvKSB7XG4gICAgICB2YXIgb3V0ID0gW107XG4gICAgICBkb2MuaXRlcihmcm9tLCB0bywgZnVuY3Rpb24obGluZSkge1xuICAgICAgICBvdXQucHVzaChsaW5lLnRleHQpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICBfX25hbWUoZ2V0TGluZXMsIFwiZ2V0TGluZXNcIik7XG4gICAgZnVuY3Rpb24gdXBkYXRlTGluZUhlaWdodChsaW5lLCBoZWlnaHQpIHtcbiAgICAgIHZhciBkaWZmID0gaGVpZ2h0IC0gbGluZS5oZWlnaHQ7XG4gICAgICBpZiAoZGlmZikge1xuICAgICAgICBmb3IgKHZhciBuID0gbGluZTsgbjsgbiA9IG4ucGFyZW50KSB7XG4gICAgICAgICAgbi5oZWlnaHQgKz0gZGlmZjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUodXBkYXRlTGluZUhlaWdodCwgXCJ1cGRhdGVMaW5lSGVpZ2h0XCIpO1xuICAgIGZ1bmN0aW9uIGxpbmVObyhsaW5lKSB7XG4gICAgICBpZiAobGluZS5wYXJlbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBjdXIgPSBsaW5lLnBhcmVudCwgbm8gPSBpbmRleE9mKGN1ci5saW5lcywgbGluZSk7XG4gICAgICBmb3IgKHZhciBjaHVuayA9IGN1ci5wYXJlbnQ7IGNodW5rOyBjdXIgPSBjaHVuaywgY2h1bmsgPSBjaHVuay5wYXJlbnQpIHtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyA7ICsraTIpIHtcbiAgICAgICAgICBpZiAoY2h1bmsuY2hpbGRyZW5baTJdID09IGN1cikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5vICs9IGNodW5rLmNoaWxkcmVuW2kyXS5jaHVua1NpemUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5vICsgY3VyLmZpcnN0O1xuICAgIH1cbiAgICBfX25hbWUobGluZU5vLCBcImxpbmVOb1wiKTtcbiAgICBmdW5jdGlvbiBsaW5lQXRIZWlnaHQoY2h1bmssIGgpIHtcbiAgICAgIHZhciBuID0gY2h1bmsuZmlyc3Q7XG4gICAgICBvdXRlcjpcbiAgICAgICAgZG8ge1xuICAgICAgICAgIGZvciAodmFyIGkkMTIgPSAwOyBpJDEyIDwgY2h1bmsuY2hpbGRyZW4ubGVuZ3RoOyArK2kkMTIpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZCA9IGNodW5rLmNoaWxkcmVuW2kkMTJdLCBjaCA9IGNoaWxkLmhlaWdodDtcbiAgICAgICAgICAgIGlmIChoIDwgY2gpIHtcbiAgICAgICAgICAgICAgY2h1bmsgPSBjaGlsZDtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoIC09IGNoO1xuICAgICAgICAgICAgbiArPSBjaGlsZC5jaHVua1NpemUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH0gd2hpbGUgKCFjaHVuay5saW5lcyk7XG4gICAgICB2YXIgaTIgPSAwO1xuICAgICAgZm9yICg7IGkyIDwgY2h1bmsubGluZXMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIHZhciBsaW5lID0gY2h1bmsubGluZXNbaTJdLCBsaCA9IGxpbmUuaGVpZ2h0O1xuICAgICAgICBpZiAoaCA8IGxoKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaCAtPSBsaDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuICsgaTI7XG4gICAgfVxuICAgIF9fbmFtZShsaW5lQXRIZWlnaHQsIFwibGluZUF0SGVpZ2h0XCIpO1xuICAgIGZ1bmN0aW9uIGlzTGluZShkb2MsIGwpIHtcbiAgICAgIHJldHVybiBsID49IGRvYy5maXJzdCAmJiBsIDwgZG9jLmZpcnN0ICsgZG9jLnNpemU7XG4gICAgfVxuICAgIF9fbmFtZShpc0xpbmUsIFwiaXNMaW5lXCIpO1xuICAgIGZ1bmN0aW9uIGxpbmVOdW1iZXJGb3Iob3B0aW9ucywgaTIpIHtcbiAgICAgIHJldHVybiBTdHJpbmcob3B0aW9ucy5saW5lTnVtYmVyRm9ybWF0dGVyKGkyICsgb3B0aW9ucy5maXJzdExpbmVOdW1iZXIpKTtcbiAgICB9XG4gICAgX19uYW1lKGxpbmVOdW1iZXJGb3IsIFwibGluZU51bWJlckZvclwiKTtcbiAgICBmdW5jdGlvbiBQb3MobGluZSwgY2gsIHN0aWNreSkge1xuICAgICAgaWYgKHN0aWNreSA9PT0gdm9pZCAwKVxuICAgICAgICBzdGlja3kgPSBudWxsO1xuICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBvcykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQb3MobGluZSwgY2gsIHN0aWNreSk7XG4gICAgICB9XG4gICAgICB0aGlzLmxpbmUgPSBsaW5lO1xuICAgICAgdGhpcy5jaCA9IGNoO1xuICAgICAgdGhpcy5zdGlja3kgPSBzdGlja3k7XG4gICAgfVxuICAgIF9fbmFtZShQb3MsIFwiUG9zXCIpO1xuICAgIGZ1bmN0aW9uIGNtcChhLCBiKSB7XG4gICAgICByZXR1cm4gYS5saW5lIC0gYi5saW5lIHx8IGEuY2ggLSBiLmNoO1xuICAgIH1cbiAgICBfX25hbWUoY21wLCBcImNtcFwiKTtcbiAgICBmdW5jdGlvbiBlcXVhbEN1cnNvclBvcyhhLCBiKSB7XG4gICAgICByZXR1cm4gYS5zdGlja3kgPT0gYi5zdGlja3kgJiYgY21wKGEsIGIpID09IDA7XG4gICAgfVxuICAgIF9fbmFtZShlcXVhbEN1cnNvclBvcywgXCJlcXVhbEN1cnNvclBvc1wiKTtcbiAgICBmdW5jdGlvbiBjb3B5UG9zKHgpIHtcbiAgICAgIHJldHVybiBQb3MoeC5saW5lLCB4LmNoKTtcbiAgICB9XG4gICAgX19uYW1lKGNvcHlQb3MsIFwiY29weVBvc1wiKTtcbiAgICBmdW5jdGlvbiBtYXhQb3MoYSwgYikge1xuICAgICAgcmV0dXJuIGNtcChhLCBiKSA8IDAgPyBiIDogYTtcbiAgICB9XG4gICAgX19uYW1lKG1heFBvcywgXCJtYXhQb3NcIik7XG4gICAgZnVuY3Rpb24gbWluUG9zKGEsIGIpIHtcbiAgICAgIHJldHVybiBjbXAoYSwgYikgPCAwID8gYSA6IGI7XG4gICAgfVxuICAgIF9fbmFtZShtaW5Qb3MsIFwibWluUG9zXCIpO1xuICAgIGZ1bmN0aW9uIGNsaXBMaW5lKGRvYywgbikge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KGRvYy5maXJzdCwgTWF0aC5taW4obiwgZG9jLmZpcnN0ICsgZG9jLnNpemUgLSAxKSk7XG4gICAgfVxuICAgIF9fbmFtZShjbGlwTGluZSwgXCJjbGlwTGluZVwiKTtcbiAgICBmdW5jdGlvbiBjbGlwUG9zKGRvYywgcG9zKSB7XG4gICAgICBpZiAocG9zLmxpbmUgPCBkb2MuZmlyc3QpIHtcbiAgICAgICAgcmV0dXJuIFBvcyhkb2MuZmlyc3QsIDApO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3QgPSBkb2MuZmlyc3QgKyBkb2Muc2l6ZSAtIDE7XG4gICAgICBpZiAocG9zLmxpbmUgPiBsYXN0KSB7XG4gICAgICAgIHJldHVybiBQb3MobGFzdCwgZ2V0TGluZShkb2MsIGxhc3QpLnRleHQubGVuZ3RoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGlwVG9MZW4ocG9zLCBnZXRMaW5lKGRvYywgcG9zLmxpbmUpLnRleHQubGVuZ3RoKTtcbiAgICB9XG4gICAgX19uYW1lKGNsaXBQb3MsIFwiY2xpcFBvc1wiKTtcbiAgICBmdW5jdGlvbiBjbGlwVG9MZW4ocG9zLCBsaW5lbGVuKSB7XG4gICAgICB2YXIgY2ggPSBwb3MuY2g7XG4gICAgICBpZiAoY2ggPT0gbnVsbCB8fCBjaCA+IGxpbmVsZW4pIHtcbiAgICAgICAgcmV0dXJuIFBvcyhwb3MubGluZSwgbGluZWxlbik7XG4gICAgICB9IGVsc2UgaWYgKGNoIDwgMCkge1xuICAgICAgICByZXR1cm4gUG9zKHBvcy5saW5lLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwb3M7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShjbGlwVG9MZW4sIFwiY2xpcFRvTGVuXCIpO1xuICAgIGZ1bmN0aW9uIGNsaXBQb3NBcnJheShkb2MsIGFycmF5KSB7XG4gICAgICB2YXIgb3V0ID0gW107XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgYXJyYXkubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIG91dFtpMl0gPSBjbGlwUG9zKGRvYywgYXJyYXlbaTJdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuICAgIF9fbmFtZShjbGlwUG9zQXJyYXksIFwiY2xpcFBvc0FycmF5XCIpO1xuICAgIHZhciBTYXZlZENvbnRleHQgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKHN0YXRlLCBsb29rQWhlYWQpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgIHRoaXMubG9va0FoZWFkID0gbG9va0FoZWFkO1xuICAgIH0sIFwiU2F2ZWRDb250ZXh0XCIpO1xuICAgIHZhciBDb250ZXh0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihkb2MsIHN0YXRlLCBsaW5lLCBsb29rQWhlYWQpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgIHRoaXMuZG9jID0gZG9jO1xuICAgICAgdGhpcy5saW5lID0gbGluZTtcbiAgICAgIHRoaXMubWF4TG9va0FoZWFkID0gbG9va0FoZWFkIHx8IDA7XG4gICAgICB0aGlzLmJhc2VUb2tlbnMgPSBudWxsO1xuICAgICAgdGhpcy5iYXNlVG9rZW5Qb3MgPSAxO1xuICAgIH0sIFwiQ29udGV4dFwiKTtcbiAgICBDb250ZXh0LnByb3RvdHlwZS5sb29rQWhlYWQgPSBmdW5jdGlvbihuKSB7XG4gICAgICB2YXIgbGluZSA9IHRoaXMuZG9jLmdldExpbmUodGhpcy5saW5lICsgbik7XG4gICAgICBpZiAobGluZSAhPSBudWxsICYmIG4gPiB0aGlzLm1heExvb2tBaGVhZCkge1xuICAgICAgICB0aGlzLm1heExvb2tBaGVhZCA9IG47XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluZTtcbiAgICB9O1xuICAgIENvbnRleHQucHJvdG90eXBlLmJhc2VUb2tlbiA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgIGlmICghdGhpcy5iYXNlVG9rZW5zKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgd2hpbGUgKHRoaXMuYmFzZVRva2Vuc1t0aGlzLmJhc2VUb2tlblBvc10gPD0gbikge1xuICAgICAgICB0aGlzLmJhc2VUb2tlblBvcyArPSAyO1xuICAgICAgfVxuICAgICAgdmFyIHR5cGUgPSB0aGlzLmJhc2VUb2tlbnNbdGhpcy5iYXNlVG9rZW5Qb3MgKyAxXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IHR5cGUgJiYgdHlwZS5yZXBsYWNlKC8oIHxeKW92ZXJsYXkgLiovLCBcIlwiKSxcbiAgICAgICAgc2l6ZTogdGhpcy5iYXNlVG9rZW5zW3RoaXMuYmFzZVRva2VuUG9zXSAtIG5cbiAgICAgIH07XG4gICAgfTtcbiAgICBDb250ZXh0LnByb3RvdHlwZS5uZXh0TGluZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5saW5lKys7XG4gICAgICBpZiAodGhpcy5tYXhMb29rQWhlYWQgPiAwKSB7XG4gICAgICAgIHRoaXMubWF4TG9va0FoZWFkLS07XG4gICAgICB9XG4gICAgfTtcbiAgICBDb250ZXh0LmZyb21TYXZlZCA9IGZ1bmN0aW9uKGRvYywgc2F2ZWQsIGxpbmUpIHtcbiAgICAgIGlmIChzYXZlZCBpbnN0YW5jZW9mIFNhdmVkQ29udGV4dCkge1xuICAgICAgICByZXR1cm4gbmV3IENvbnRleHQoZG9jLCBjb3B5U3RhdGUoZG9jLm1vZGUsIHNhdmVkLnN0YXRlKSwgbGluZSwgc2F2ZWQubG9va0FoZWFkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29udGV4dChkb2MsIGNvcHlTdGF0ZShkb2MubW9kZSwgc2F2ZWQpLCBsaW5lKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIENvbnRleHQucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbihjb3B5KSB7XG4gICAgICB2YXIgc3RhdGUgPSBjb3B5ICE9PSBmYWxzZSA/IGNvcHlTdGF0ZSh0aGlzLmRvYy5tb2RlLCB0aGlzLnN0YXRlKSA6IHRoaXMuc3RhdGU7XG4gICAgICByZXR1cm4gdGhpcy5tYXhMb29rQWhlYWQgPiAwID8gbmV3IFNhdmVkQ29udGV4dChzdGF0ZSwgdGhpcy5tYXhMb29rQWhlYWQpIDogc3RhdGU7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBoaWdobGlnaHRMaW5lKGNtLCBsaW5lLCBjb250ZXh0LCBmb3JjZVRvRW5kKSB7XG4gICAgICB2YXIgc3QgPSBbY20uc3RhdGUubW9kZUdlbl0sIGxpbmVDbGFzc2VzID0ge307XG4gICAgICBydW5Nb2RlKGNtLCBsaW5lLnRleHQsIGNtLmRvYy5tb2RlLCBjb250ZXh0LCBmdW5jdGlvbihlbmQsIHN0eWxlKSB7XG4gICAgICAgIHJldHVybiBzdC5wdXNoKGVuZCwgc3R5bGUpO1xuICAgICAgfSwgbGluZUNsYXNzZXMsIGZvcmNlVG9FbmQpO1xuICAgICAgdmFyIHN0YXRlID0gY29udGV4dC5zdGF0ZTtcbiAgICAgIHZhciBsb29wID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihvMikge1xuICAgICAgICBjb250ZXh0LmJhc2VUb2tlbnMgPSBzdDtcbiAgICAgICAgdmFyIG92ZXJsYXkgPSBjbS5zdGF0ZS5vdmVybGF5c1tvMl0sIGkyID0gMSwgYXQgPSAwO1xuICAgICAgICBjb250ZXh0LnN0YXRlID0gdHJ1ZTtcbiAgICAgICAgcnVuTW9kZShjbSwgbGluZS50ZXh0LCBvdmVybGF5Lm1vZGUsIGNvbnRleHQsIGZ1bmN0aW9uKGVuZCwgc3R5bGUpIHtcbiAgICAgICAgICB2YXIgc3RhcnQgPSBpMjtcbiAgICAgICAgICB3aGlsZSAoYXQgPCBlbmQpIHtcbiAgICAgICAgICAgIHZhciBpX2VuZCA9IHN0W2kyXTtcbiAgICAgICAgICAgIGlmIChpX2VuZCA+IGVuZCkge1xuICAgICAgICAgICAgICBzdC5zcGxpY2UoaTIsIDEsIGVuZCwgc3RbaTIgKyAxXSwgaV9lbmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaTIgKz0gMjtcbiAgICAgICAgICAgIGF0ID0gTWF0aC5taW4oZW5kLCBpX2VuZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghc3R5bGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG92ZXJsYXkub3BhcXVlKSB7XG4gICAgICAgICAgICBzdC5zcGxpY2Uoc3RhcnQsIGkyIC0gc3RhcnQsIGVuZCwgXCJvdmVybGF5IFwiICsgc3R5bGUpO1xuICAgICAgICAgICAgaTIgPSBzdGFydCArIDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoOyBzdGFydCA8IGkyOyBzdGFydCArPSAyKSB7XG4gICAgICAgICAgICAgIHZhciBjdXIgPSBzdFtzdGFydCArIDFdO1xuICAgICAgICAgICAgICBzdFtzdGFydCArIDFdID0gKGN1ciA/IGN1ciArIFwiIFwiIDogXCJcIikgKyBcIm92ZXJsYXkgXCIgKyBzdHlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIGxpbmVDbGFzc2VzKTtcbiAgICAgICAgY29udGV4dC5zdGF0ZSA9IHN0YXRlO1xuICAgICAgICBjb250ZXh0LmJhc2VUb2tlbnMgPSBudWxsO1xuICAgICAgICBjb250ZXh0LmJhc2VUb2tlblBvcyA9IDE7XG4gICAgICB9LCBcImxvb3BcIik7XG4gICAgICBmb3IgKHZhciBvID0gMDsgbyA8IGNtLnN0YXRlLm92ZXJsYXlzLmxlbmd0aDsgKytvKVxuICAgICAgICBsb29wKG8pO1xuICAgICAgcmV0dXJuIHsgc3R5bGVzOiBzdCwgY2xhc3NlczogbGluZUNsYXNzZXMuYmdDbGFzcyB8fCBsaW5lQ2xhc3Nlcy50ZXh0Q2xhc3MgPyBsaW5lQ2xhc3NlcyA6IG51bGwgfTtcbiAgICB9XG4gICAgX19uYW1lKGhpZ2hsaWdodExpbmUsIFwiaGlnaGxpZ2h0TGluZVwiKTtcbiAgICBmdW5jdGlvbiBnZXRMaW5lU3R5bGVzKGNtLCBsaW5lLCB1cGRhdGVGcm9udGllcikge1xuICAgICAgaWYgKCFsaW5lLnN0eWxlcyB8fCBsaW5lLnN0eWxlc1swXSAhPSBjbS5zdGF0ZS5tb2RlR2VuKSB7XG4gICAgICAgIHZhciBjb250ZXh0ID0gZ2V0Q29udGV4dEJlZm9yZShjbSwgbGluZU5vKGxpbmUpKTtcbiAgICAgICAgdmFyIHJlc2V0U3RhdGUgPSBsaW5lLnRleHQubGVuZ3RoID4gY20ub3B0aW9ucy5tYXhIaWdobGlnaHRMZW5ndGggJiYgY29weVN0YXRlKGNtLmRvYy5tb2RlLCBjb250ZXh0LnN0YXRlKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGhpZ2hsaWdodExpbmUoY20sIGxpbmUsIGNvbnRleHQpO1xuICAgICAgICBpZiAocmVzZXRTdGF0ZSkge1xuICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSByZXNldFN0YXRlO1xuICAgICAgICB9XG4gICAgICAgIGxpbmUuc3RhdGVBZnRlciA9IGNvbnRleHQuc2F2ZSghcmVzZXRTdGF0ZSk7XG4gICAgICAgIGxpbmUuc3R5bGVzID0gcmVzdWx0LnN0eWxlcztcbiAgICAgICAgaWYgKHJlc3VsdC5jbGFzc2VzKSB7XG4gICAgICAgICAgbGluZS5zdHlsZUNsYXNzZXMgPSByZXN1bHQuY2xhc3NlcztcbiAgICAgICAgfSBlbHNlIGlmIChsaW5lLnN0eWxlQ2xhc3Nlcykge1xuICAgICAgICAgIGxpbmUuc3R5bGVDbGFzc2VzID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXBkYXRlRnJvbnRpZXIgPT09IGNtLmRvYy5oaWdobGlnaHRGcm9udGllcikge1xuICAgICAgICAgIGNtLmRvYy5tb2RlRnJvbnRpZXIgPSBNYXRoLm1heChjbS5kb2MubW9kZUZyb250aWVyLCArK2NtLmRvYy5oaWdobGlnaHRGcm9udGllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5lLnN0eWxlcztcbiAgICB9XG4gICAgX19uYW1lKGdldExpbmVTdHlsZXMsIFwiZ2V0TGluZVN0eWxlc1wiKTtcbiAgICBmdW5jdGlvbiBnZXRDb250ZXh0QmVmb3JlKGNtLCBuLCBwcmVjaXNlKSB7XG4gICAgICB2YXIgZG9jID0gY20uZG9jLCBkaXNwbGF5ID0gY20uZGlzcGxheTtcbiAgICAgIGlmICghZG9jLm1vZGUuc3RhcnRTdGF0ZSkge1xuICAgICAgICByZXR1cm4gbmV3IENvbnRleHQoZG9jLCB0cnVlLCBuKTtcbiAgICAgIH1cbiAgICAgIHZhciBzdGFydCA9IGZpbmRTdGFydExpbmUoY20sIG4sIHByZWNpc2UpO1xuICAgICAgdmFyIHNhdmVkID0gc3RhcnQgPiBkb2MuZmlyc3QgJiYgZ2V0TGluZShkb2MsIHN0YXJ0IC0gMSkuc3RhdGVBZnRlcjtcbiAgICAgIHZhciBjb250ZXh0ID0gc2F2ZWQgPyBDb250ZXh0LmZyb21TYXZlZChkb2MsIHNhdmVkLCBzdGFydCkgOiBuZXcgQ29udGV4dChkb2MsIHN0YXJ0U3RhdGUoZG9jLm1vZGUpLCBzdGFydCk7XG4gICAgICBkb2MuaXRlcihzdGFydCwgbiwgZnVuY3Rpb24obGluZSkge1xuICAgICAgICBwcm9jZXNzTGluZShjbSwgbGluZS50ZXh0LCBjb250ZXh0KTtcbiAgICAgICAgdmFyIHBvcyA9IGNvbnRleHQubGluZTtcbiAgICAgICAgbGluZS5zdGF0ZUFmdGVyID0gcG9zID09IG4gLSAxIHx8IHBvcyAlIDUgPT0gMCB8fCBwb3MgPj0gZGlzcGxheS52aWV3RnJvbSAmJiBwb3MgPCBkaXNwbGF5LnZpZXdUbyA/IGNvbnRleHQuc2F2ZSgpIDogbnVsbDtcbiAgICAgICAgY29udGV4dC5uZXh0TGluZSgpO1xuICAgICAgfSk7XG4gICAgICBpZiAocHJlY2lzZSkge1xuICAgICAgICBkb2MubW9kZUZyb250aWVyID0gY29udGV4dC5saW5lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfVxuICAgIF9fbmFtZShnZXRDb250ZXh0QmVmb3JlLCBcImdldENvbnRleHRCZWZvcmVcIik7XG4gICAgZnVuY3Rpb24gcHJvY2Vzc0xpbmUoY20sIHRleHQsIGNvbnRleHQsIHN0YXJ0QXQpIHtcbiAgICAgIHZhciBtb2RlID0gY20uZG9jLm1vZGU7XG4gICAgICB2YXIgc3RyZWFtID0gbmV3IFN0cmluZ1N0cmVhbSh0ZXh0LCBjbS5vcHRpb25zLnRhYlNpemUsIGNvbnRleHQpO1xuICAgICAgc3RyZWFtLnN0YXJ0ID0gc3RyZWFtLnBvcyA9IHN0YXJ0QXQgfHwgMDtcbiAgICAgIGlmICh0ZXh0ID09IFwiXCIpIHtcbiAgICAgICAgY2FsbEJsYW5rTGluZShtb2RlLCBjb250ZXh0LnN0YXRlKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICghc3RyZWFtLmVvbCgpKSB7XG4gICAgICAgIHJlYWRUb2tlbihtb2RlLCBzdHJlYW0sIGNvbnRleHQuc3RhdGUpO1xuICAgICAgICBzdHJlYW0uc3RhcnQgPSBzdHJlYW0ucG9zO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUocHJvY2Vzc0xpbmUsIFwicHJvY2Vzc0xpbmVcIik7XG4gICAgZnVuY3Rpb24gY2FsbEJsYW5rTGluZShtb2RlLCBzdGF0ZSkge1xuICAgICAgaWYgKG1vZGUuYmxhbmtMaW5lKSB7XG4gICAgICAgIHJldHVybiBtb2RlLmJsYW5rTGluZShzdGF0ZSk7XG4gICAgICB9XG4gICAgICBpZiAoIW1vZGUuaW5uZXJNb2RlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBpbm5lciA9IGlubmVyTW9kZShtb2RlLCBzdGF0ZSk7XG4gICAgICBpZiAoaW5uZXIubW9kZS5ibGFua0xpbmUpIHtcbiAgICAgICAgcmV0dXJuIGlubmVyLm1vZGUuYmxhbmtMaW5lKGlubmVyLnN0YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGNhbGxCbGFua0xpbmUsIFwiY2FsbEJsYW5rTGluZVwiKTtcbiAgICBmdW5jdGlvbiByZWFkVG9rZW4obW9kZSwgc3RyZWFtLCBzdGF0ZSwgaW5uZXIpIHtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCAxMDsgaTIrKykge1xuICAgICAgICBpZiAoaW5uZXIpIHtcbiAgICAgICAgICBpbm5lclswXSA9IGlubmVyTW9kZShtb2RlLCBzdGF0ZSkubW9kZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3R5bGUgPSBtb2RlLnRva2VuKHN0cmVhbSwgc3RhdGUpO1xuICAgICAgICBpZiAoc3RyZWFtLnBvcyA+IHN0cmVhbS5zdGFydCkge1xuICAgICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTW9kZSBcIiArIG1vZGUubmFtZSArIFwiIGZhaWxlZCB0byBhZHZhbmNlIHN0cmVhbS5cIik7XG4gICAgfVxuICAgIF9fbmFtZShyZWFkVG9rZW4sIFwicmVhZFRva2VuXCIpO1xuICAgIHZhciBUb2tlbiA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oc3RyZWFtLCB0eXBlLCBzdGF0ZSkge1xuICAgICAgdGhpcy5zdGFydCA9IHN0cmVhbS5zdGFydDtcbiAgICAgIHRoaXMuZW5kID0gc3RyZWFtLnBvcztcbiAgICAgIHRoaXMuc3RyaW5nID0gc3RyZWFtLmN1cnJlbnQoKTtcbiAgICAgIHRoaXMudHlwZSA9IHR5cGUgfHwgbnVsbDtcbiAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB9LCBcIlRva2VuXCIpO1xuICAgIGZ1bmN0aW9uIHRha2VUb2tlbihjbSwgcG9zLCBwcmVjaXNlLCBhc0FycmF5KSB7XG4gICAgICB2YXIgZG9jID0gY20uZG9jLCBtb2RlID0gZG9jLm1vZGUsIHN0eWxlO1xuICAgICAgcG9zID0gY2xpcFBvcyhkb2MsIHBvcyk7XG4gICAgICB2YXIgbGluZSA9IGdldExpbmUoZG9jLCBwb3MubGluZSksIGNvbnRleHQgPSBnZXRDb250ZXh0QmVmb3JlKGNtLCBwb3MubGluZSwgcHJlY2lzZSk7XG4gICAgICB2YXIgc3RyZWFtID0gbmV3IFN0cmluZ1N0cmVhbShsaW5lLnRleHQsIGNtLm9wdGlvbnMudGFiU2l6ZSwgY29udGV4dCksIHRva2VucztcbiAgICAgIGlmIChhc0FycmF5KSB7XG4gICAgICAgIHRva2VucyA9IFtdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKChhc0FycmF5IHx8IHN0cmVhbS5wb3MgPCBwb3MuY2gpICYmICFzdHJlYW0uZW9sKCkpIHtcbiAgICAgICAgc3RyZWFtLnN0YXJ0ID0gc3RyZWFtLnBvcztcbiAgICAgICAgc3R5bGUgPSByZWFkVG9rZW4obW9kZSwgc3RyZWFtLCBjb250ZXh0LnN0YXRlKTtcbiAgICAgICAgaWYgKGFzQXJyYXkpIHtcbiAgICAgICAgICB0b2tlbnMucHVzaChuZXcgVG9rZW4oc3RyZWFtLCBzdHlsZSwgY29weVN0YXRlKGRvYy5tb2RlLCBjb250ZXh0LnN0YXRlKSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYXNBcnJheSA/IHRva2VucyA6IG5ldyBUb2tlbihzdHJlYW0sIHN0eWxlLCBjb250ZXh0LnN0YXRlKTtcbiAgICB9XG4gICAgX19uYW1lKHRha2VUb2tlbiwgXCJ0YWtlVG9rZW5cIik7XG4gICAgZnVuY3Rpb24gZXh0cmFjdExpbmVDbGFzc2VzKHR5cGUsIG91dHB1dCkge1xuICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgZm9yICg7IDsgKSB7XG4gICAgICAgICAgdmFyIGxpbmVDbGFzcyA9IHR5cGUubWF0Y2goLyg/Ol58XFxzKylsaW5lLShiYWNrZ3JvdW5kLSk/KFxcUyspLyk7XG4gICAgICAgICAgaWYgKCFsaW5lQ2xhc3MpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0eXBlID0gdHlwZS5zbGljZSgwLCBsaW5lQ2xhc3MuaW5kZXgpICsgdHlwZS5zbGljZShsaW5lQ2xhc3MuaW5kZXggKyBsaW5lQ2xhc3NbMF0ubGVuZ3RoKTtcbiAgICAgICAgICB2YXIgcHJvcDIgPSBsaW5lQ2xhc3NbMV0gPyBcImJnQ2xhc3NcIiA6IFwidGV4dENsYXNzXCI7XG4gICAgICAgICAgaWYgKG91dHB1dFtwcm9wMl0gPT0gbnVsbCkge1xuICAgICAgICAgICAgb3V0cHV0W3Byb3AyXSA9IGxpbmVDbGFzc1syXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFuZXcgUmVnRXhwKFwiKD86XnxcXFxccylcIiArIGxpbmVDbGFzc1syXSArIFwiKD86JHxcXFxccylcIikudGVzdChvdXRwdXRbcHJvcDJdKSkge1xuICAgICAgICAgICAgb3V0cHV0W3Byb3AyXSArPSBcIiBcIiArIGxpbmVDbGFzc1syXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgICBfX25hbWUoZXh0cmFjdExpbmVDbGFzc2VzLCBcImV4dHJhY3RMaW5lQ2xhc3Nlc1wiKTtcbiAgICBmdW5jdGlvbiBydW5Nb2RlKGNtLCB0ZXh0LCBtb2RlLCBjb250ZXh0LCBmLCBsaW5lQ2xhc3NlcywgZm9yY2VUb0VuZCkge1xuICAgICAgdmFyIGZsYXR0ZW5TcGFucyA9IG1vZGUuZmxhdHRlblNwYW5zO1xuICAgICAgaWYgKGZsYXR0ZW5TcGFucyA9PSBudWxsKSB7XG4gICAgICAgIGZsYXR0ZW5TcGFucyA9IGNtLm9wdGlvbnMuZmxhdHRlblNwYW5zO1xuICAgICAgfVxuICAgICAgdmFyIGN1clN0YXJ0ID0gMCwgY3VyU3R5bGUgPSBudWxsO1xuICAgICAgdmFyIHN0cmVhbSA9IG5ldyBTdHJpbmdTdHJlYW0odGV4dCwgY20ub3B0aW9ucy50YWJTaXplLCBjb250ZXh0KSwgc3R5bGU7XG4gICAgICB2YXIgaW5uZXIgPSBjbS5vcHRpb25zLmFkZE1vZGVDbGFzcyAmJiBbbnVsbF07XG4gICAgICBpZiAodGV4dCA9PSBcIlwiKSB7XG4gICAgICAgIGV4dHJhY3RMaW5lQ2xhc3NlcyhjYWxsQmxhbmtMaW5lKG1vZGUsIGNvbnRleHQuc3RhdGUpLCBsaW5lQ2xhc3Nlcyk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoIXN0cmVhbS5lb2woKSkge1xuICAgICAgICBpZiAoc3RyZWFtLnBvcyA+IGNtLm9wdGlvbnMubWF4SGlnaGxpZ2h0TGVuZ3RoKSB7XG4gICAgICAgICAgZmxhdHRlblNwYW5zID0gZmFsc2U7XG4gICAgICAgICAgaWYgKGZvcmNlVG9FbmQpIHtcbiAgICAgICAgICAgIHByb2Nlc3NMaW5lKGNtLCB0ZXh0LCBjb250ZXh0LCBzdHJlYW0ucG9zKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RyZWFtLnBvcyA9IHRleHQubGVuZ3RoO1xuICAgICAgICAgIHN0eWxlID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHlsZSA9IGV4dHJhY3RMaW5lQ2xhc3NlcyhyZWFkVG9rZW4obW9kZSwgc3RyZWFtLCBjb250ZXh0LnN0YXRlLCBpbm5lciksIGxpbmVDbGFzc2VzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5uZXIpIHtcbiAgICAgICAgICB2YXIgbU5hbWUgPSBpbm5lclswXS5uYW1lO1xuICAgICAgICAgIGlmIChtTmFtZSkge1xuICAgICAgICAgICAgc3R5bGUgPSBcIm0tXCIgKyAoc3R5bGUgPyBtTmFtZSArIFwiIFwiICsgc3R5bGUgOiBtTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghZmxhdHRlblNwYW5zIHx8IGN1clN0eWxlICE9IHN0eWxlKSB7XG4gICAgICAgICAgd2hpbGUgKGN1clN0YXJ0IDwgc3RyZWFtLnN0YXJ0KSB7XG4gICAgICAgICAgICBjdXJTdGFydCA9IE1hdGgubWluKHN0cmVhbS5zdGFydCwgY3VyU3RhcnQgKyA1ZTMpO1xuICAgICAgICAgICAgZihjdXJTdGFydCwgY3VyU3R5bGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJTdHlsZSA9IHN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIHN0cmVhbS5zdGFydCA9IHN0cmVhbS5wb3M7XG4gICAgICB9XG4gICAgICB3aGlsZSAoY3VyU3RhcnQgPCBzdHJlYW0ucG9zKSB7XG4gICAgICAgIHZhciBwb3MgPSBNYXRoLm1pbihzdHJlYW0ucG9zLCBjdXJTdGFydCArIDVlMyk7XG4gICAgICAgIGYocG9zLCBjdXJTdHlsZSk7XG4gICAgICAgIGN1clN0YXJ0ID0gcG9zO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUocnVuTW9kZSwgXCJydW5Nb2RlXCIpO1xuICAgIGZ1bmN0aW9uIGZpbmRTdGFydExpbmUoY20sIG4sIHByZWNpc2UpIHtcbiAgICAgIHZhciBtaW5pbmRlbnQsIG1pbmxpbmUsIGRvYyA9IGNtLmRvYztcbiAgICAgIHZhciBsaW0gPSBwcmVjaXNlID8gLTEgOiBuIC0gKGNtLmRvYy5tb2RlLmlubmVyTW9kZSA/IDFlMyA6IDEwMCk7XG4gICAgICBmb3IgKHZhciBzZWFyY2ggPSBuOyBzZWFyY2ggPiBsaW07IC0tc2VhcmNoKSB7XG4gICAgICAgIGlmIChzZWFyY2ggPD0gZG9jLmZpcnN0KSB7XG4gICAgICAgICAgcmV0dXJuIGRvYy5maXJzdDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGluZSA9IGdldExpbmUoZG9jLCBzZWFyY2ggLSAxKSwgYWZ0ZXIgPSBsaW5lLnN0YXRlQWZ0ZXI7XG4gICAgICAgIGlmIChhZnRlciAmJiAoIXByZWNpc2UgfHwgc2VhcmNoICsgKGFmdGVyIGluc3RhbmNlb2YgU2F2ZWRDb250ZXh0ID8gYWZ0ZXIubG9va0FoZWFkIDogMCkgPD0gZG9jLm1vZGVGcm9udGllcikpIHtcbiAgICAgICAgICByZXR1cm4gc2VhcmNoO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbmRlbnRlZCA9IGNvdW50Q29sdW1uKGxpbmUudGV4dCwgbnVsbCwgY20ub3B0aW9ucy50YWJTaXplKTtcbiAgICAgICAgaWYgKG1pbmxpbmUgPT0gbnVsbCB8fCBtaW5pbmRlbnQgPiBpbmRlbnRlZCkge1xuICAgICAgICAgIG1pbmxpbmUgPSBzZWFyY2ggLSAxO1xuICAgICAgICAgIG1pbmluZGVudCA9IGluZGVudGVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbWlubGluZTtcbiAgICB9XG4gICAgX19uYW1lKGZpbmRTdGFydExpbmUsIFwiZmluZFN0YXJ0TGluZVwiKTtcbiAgICBmdW5jdGlvbiByZXRyZWF0RnJvbnRpZXIoZG9jLCBuKSB7XG4gICAgICBkb2MubW9kZUZyb250aWVyID0gTWF0aC5taW4oZG9jLm1vZGVGcm9udGllciwgbik7XG4gICAgICBpZiAoZG9jLmhpZ2hsaWdodEZyb250aWVyIDwgbiAtIDEwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBzdGFydCA9IGRvYy5maXJzdDtcbiAgICAgIGZvciAodmFyIGxpbmUgPSBuIC0gMTsgbGluZSA+IHN0YXJ0OyBsaW5lLS0pIHtcbiAgICAgICAgdmFyIHNhdmVkID0gZ2V0TGluZShkb2MsIGxpbmUpLnN0YXRlQWZ0ZXI7XG4gICAgICAgIGlmIChzYXZlZCAmJiAoIShzYXZlZCBpbnN0YW5jZW9mIFNhdmVkQ29udGV4dCkgfHwgbGluZSArIHNhdmVkLmxvb2tBaGVhZCA8IG4pKSB7XG4gICAgICAgICAgc3RhcnQgPSBsaW5lICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZG9jLmhpZ2hsaWdodEZyb250aWVyID0gTWF0aC5taW4oZG9jLmhpZ2hsaWdodEZyb250aWVyLCBzdGFydCk7XG4gICAgfVxuICAgIF9fbmFtZShyZXRyZWF0RnJvbnRpZXIsIFwicmV0cmVhdEZyb250aWVyXCIpO1xuICAgIHZhciBzYXdSZWFkT25seVNwYW5zID0gZmFsc2UsIHNhd0NvbGxhcHNlZFNwYW5zID0gZmFsc2U7XG4gICAgZnVuY3Rpb24gc2VlUmVhZE9ubHlTcGFucygpIHtcbiAgICAgIHNhd1JlYWRPbmx5U3BhbnMgPSB0cnVlO1xuICAgIH1cbiAgICBfX25hbWUoc2VlUmVhZE9ubHlTcGFucywgXCJzZWVSZWFkT25seVNwYW5zXCIpO1xuICAgIGZ1bmN0aW9uIHNlZUNvbGxhcHNlZFNwYW5zKCkge1xuICAgICAgc2F3Q29sbGFwc2VkU3BhbnMgPSB0cnVlO1xuICAgIH1cbiAgICBfX25hbWUoc2VlQ29sbGFwc2VkU3BhbnMsIFwic2VlQ29sbGFwc2VkU3BhbnNcIik7XG4gICAgZnVuY3Rpb24gTWFya2VkU3BhbihtYXJrZXIsIGZyb20sIHRvKSB7XG4gICAgICB0aGlzLm1hcmtlciA9IG1hcmtlcjtcbiAgICAgIHRoaXMuZnJvbSA9IGZyb207XG4gICAgICB0aGlzLnRvID0gdG87XG4gICAgfVxuICAgIF9fbmFtZShNYXJrZWRTcGFuLCBcIk1hcmtlZFNwYW5cIik7XG4gICAgZnVuY3Rpb24gZ2V0TWFya2VkU3BhbkZvcihzcGFucywgbWFya2VyKSB7XG4gICAgICBpZiAoc3BhbnMpIHtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHNwYW5zLmxlbmd0aDsgKytpMikge1xuICAgICAgICAgIHZhciBzcGFuID0gc3BhbnNbaTJdO1xuICAgICAgICAgIGlmIChzcGFuLm1hcmtlciA9PSBtYXJrZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBzcGFuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoZ2V0TWFya2VkU3BhbkZvciwgXCJnZXRNYXJrZWRTcGFuRm9yXCIpO1xuICAgIGZ1bmN0aW9uIHJlbW92ZU1hcmtlZFNwYW4oc3BhbnMsIHNwYW4pIHtcbiAgICAgIHZhciByO1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHNwYW5zLmxlbmd0aDsgKytpMikge1xuICAgICAgICBpZiAoc3BhbnNbaTJdICE9IHNwYW4pIHtcbiAgICAgICAgICAociB8fCAociA9IFtdKSkucHVzaChzcGFuc1tpMl0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcjtcbiAgICB9XG4gICAgX19uYW1lKHJlbW92ZU1hcmtlZFNwYW4sIFwicmVtb3ZlTWFya2VkU3BhblwiKTtcbiAgICBmdW5jdGlvbiBhZGRNYXJrZWRTcGFuKGxpbmUsIHNwYW4sIG9wKSB7XG4gICAgICB2YXIgaW5UaGlzT3AgPSBvcCAmJiB3aW5kb3cuV2Vha1NldCAmJiAob3AubWFya2VkU3BhbnMgfHwgKG9wLm1hcmtlZFNwYW5zID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrU2V0KCkpKTtcbiAgICAgIGlmIChpblRoaXNPcCAmJiBsaW5lLm1hcmtlZFNwYW5zICYmIGluVGhpc09wLmhhcyhsaW5lLm1hcmtlZFNwYW5zKSkge1xuICAgICAgICBsaW5lLm1hcmtlZFNwYW5zLnB1c2goc3Bhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaW5lLm1hcmtlZFNwYW5zID0gbGluZS5tYXJrZWRTcGFucyA/IGxpbmUubWFya2VkU3BhbnMuY29uY2F0KFtzcGFuXSkgOiBbc3Bhbl07XG4gICAgICAgIGlmIChpblRoaXNPcCkge1xuICAgICAgICAgIGluVGhpc09wLmFkZChsaW5lLm1hcmtlZFNwYW5zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3Bhbi5tYXJrZXIuYXR0YWNoTGluZShsaW5lKTtcbiAgICB9XG4gICAgX19uYW1lKGFkZE1hcmtlZFNwYW4sIFwiYWRkTWFya2VkU3BhblwiKTtcbiAgICBmdW5jdGlvbiBtYXJrZWRTcGFuc0JlZm9yZShvbGQsIHN0YXJ0Q2gsIGlzSW5zZXJ0KSB7XG4gICAgICB2YXIgbnc7XG4gICAgICBpZiAob2xkKSB7XG4gICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBvbGQubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgICAgdmFyIHNwYW4gPSBvbGRbaTJdLCBtYXJrZXIgPSBzcGFuLm1hcmtlcjtcbiAgICAgICAgICB2YXIgc3RhcnRzQmVmb3JlID0gc3Bhbi5mcm9tID09IG51bGwgfHwgKG1hcmtlci5pbmNsdXNpdmVMZWZ0ID8gc3Bhbi5mcm9tIDw9IHN0YXJ0Q2ggOiBzcGFuLmZyb20gPCBzdGFydENoKTtcbiAgICAgICAgICBpZiAoc3RhcnRzQmVmb3JlIHx8IHNwYW4uZnJvbSA9PSBzdGFydENoICYmIG1hcmtlci50eXBlID09IFwiYm9va21hcmtcIiAmJiAoIWlzSW5zZXJ0IHx8ICFzcGFuLm1hcmtlci5pbnNlcnRMZWZ0KSkge1xuICAgICAgICAgICAgdmFyIGVuZHNBZnRlciA9IHNwYW4udG8gPT0gbnVsbCB8fCAobWFya2VyLmluY2x1c2l2ZVJpZ2h0ID8gc3Bhbi50byA+PSBzdGFydENoIDogc3Bhbi50byA+IHN0YXJ0Q2gpO1xuICAgICAgICAgICAgKG53IHx8IChudyA9IFtdKSkucHVzaChuZXcgTWFya2VkU3BhbihtYXJrZXIsIHNwYW4uZnJvbSwgZW5kc0FmdGVyID8gbnVsbCA6IHNwYW4udG8pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudztcbiAgICB9XG4gICAgX19uYW1lKG1hcmtlZFNwYW5zQmVmb3JlLCBcIm1hcmtlZFNwYW5zQmVmb3JlXCIpO1xuICAgIGZ1bmN0aW9uIG1hcmtlZFNwYW5zQWZ0ZXIob2xkLCBlbmRDaCwgaXNJbnNlcnQpIHtcbiAgICAgIHZhciBudztcbiAgICAgIGlmIChvbGQpIHtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IG9sZC5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgICB2YXIgc3BhbiA9IG9sZFtpMl0sIG1hcmtlciA9IHNwYW4ubWFya2VyO1xuICAgICAgICAgIHZhciBlbmRzQWZ0ZXIgPSBzcGFuLnRvID09IG51bGwgfHwgKG1hcmtlci5pbmNsdXNpdmVSaWdodCA/IHNwYW4udG8gPj0gZW5kQ2ggOiBzcGFuLnRvID4gZW5kQ2gpO1xuICAgICAgICAgIGlmIChlbmRzQWZ0ZXIgfHwgc3Bhbi5mcm9tID09IGVuZENoICYmIG1hcmtlci50eXBlID09IFwiYm9va21hcmtcIiAmJiAoIWlzSW5zZXJ0IHx8IHNwYW4ubWFya2VyLmluc2VydExlZnQpKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnRzQmVmb3JlID0gc3Bhbi5mcm9tID09IG51bGwgfHwgKG1hcmtlci5pbmNsdXNpdmVMZWZ0ID8gc3Bhbi5mcm9tIDw9IGVuZENoIDogc3Bhbi5mcm9tIDwgZW5kQ2gpO1xuICAgICAgICAgICAgKG53IHx8IChudyA9IFtdKSkucHVzaChuZXcgTWFya2VkU3BhbihtYXJrZXIsIHN0YXJ0c0JlZm9yZSA/IG51bGwgOiBzcGFuLmZyb20gLSBlbmRDaCwgc3Bhbi50byA9PSBudWxsID8gbnVsbCA6IHNwYW4udG8gLSBlbmRDaCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG53O1xuICAgIH1cbiAgICBfX25hbWUobWFya2VkU3BhbnNBZnRlciwgXCJtYXJrZWRTcGFuc0FmdGVyXCIpO1xuICAgIGZ1bmN0aW9uIHN0cmV0Y2hTcGFuc092ZXJDaGFuZ2UoZG9jLCBjaGFuZ2UpIHtcbiAgICAgIGlmIChjaGFuZ2UuZnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBvbGRGaXJzdCA9IGlzTGluZShkb2MsIGNoYW5nZS5mcm9tLmxpbmUpICYmIGdldExpbmUoZG9jLCBjaGFuZ2UuZnJvbS5saW5lKS5tYXJrZWRTcGFucztcbiAgICAgIHZhciBvbGRMYXN0ID0gaXNMaW5lKGRvYywgY2hhbmdlLnRvLmxpbmUpICYmIGdldExpbmUoZG9jLCBjaGFuZ2UudG8ubGluZSkubWFya2VkU3BhbnM7XG4gICAgICBpZiAoIW9sZEZpcnN0ICYmICFvbGRMYXN0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIHN0YXJ0Q2ggPSBjaGFuZ2UuZnJvbS5jaCwgZW5kQ2ggPSBjaGFuZ2UudG8uY2gsIGlzSW5zZXJ0ID0gY21wKGNoYW5nZS5mcm9tLCBjaGFuZ2UudG8pID09IDA7XG4gICAgICB2YXIgZmlyc3QgPSBtYXJrZWRTcGFuc0JlZm9yZShvbGRGaXJzdCwgc3RhcnRDaCwgaXNJbnNlcnQpO1xuICAgICAgdmFyIGxhc3QgPSBtYXJrZWRTcGFuc0FmdGVyKG9sZExhc3QsIGVuZENoLCBpc0luc2VydCk7XG4gICAgICB2YXIgc2FtZUxpbmUgPSBjaGFuZ2UudGV4dC5sZW5ndGggPT0gMSwgb2Zmc2V0ID0gbHN0KGNoYW5nZS50ZXh0KS5sZW5ndGggKyAoc2FtZUxpbmUgPyBzdGFydENoIDogMCk7XG4gICAgICBpZiAoZmlyc3QpIHtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGZpcnN0Lmxlbmd0aDsgKytpMikge1xuICAgICAgICAgIHZhciBzcGFuID0gZmlyc3RbaTJdO1xuICAgICAgICAgIGlmIChzcGFuLnRvID09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBmb3VuZCA9IGdldE1hcmtlZFNwYW5Gb3IobGFzdCwgc3Bhbi5tYXJrZXIpO1xuICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICBzcGFuLnRvID0gc3RhcnRDaDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2FtZUxpbmUpIHtcbiAgICAgICAgICAgICAgc3Bhbi50byA9IGZvdW5kLnRvID09IG51bGwgPyBudWxsIDogZm91bmQudG8gKyBvZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobGFzdCkge1xuICAgICAgICBmb3IgKHZhciBpJDEyID0gMDsgaSQxMiA8IGxhc3QubGVuZ3RoOyArK2kkMTIpIHtcbiAgICAgICAgICB2YXIgc3BhbiQxID0gbGFzdFtpJDEyXTtcbiAgICAgICAgICBpZiAoc3BhbiQxLnRvICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNwYW4kMS50byArPSBvZmZzZXQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzcGFuJDEuZnJvbSA9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgZm91bmQkMSA9IGdldE1hcmtlZFNwYW5Gb3IoZmlyc3QsIHNwYW4kMS5tYXJrZXIpO1xuICAgICAgICAgICAgaWYgKCFmb3VuZCQxKSB7XG4gICAgICAgICAgICAgIHNwYW4kMS5mcm9tID0gb2Zmc2V0O1xuICAgICAgICAgICAgICBpZiAoc2FtZUxpbmUpIHtcbiAgICAgICAgICAgICAgICAoZmlyc3QgfHwgKGZpcnN0ID0gW10pKS5wdXNoKHNwYW4kMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3BhbiQxLmZyb20gKz0gb2Zmc2V0O1xuICAgICAgICAgICAgaWYgKHNhbWVMaW5lKSB7XG4gICAgICAgICAgICAgIChmaXJzdCB8fCAoZmlyc3QgPSBbXSkpLnB1c2goc3BhbiQxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmaXJzdCkge1xuICAgICAgICBmaXJzdCA9IGNsZWFyRW1wdHlTcGFucyhmaXJzdCk7XG4gICAgICB9XG4gICAgICBpZiAobGFzdCAmJiBsYXN0ICE9IGZpcnN0KSB7XG4gICAgICAgIGxhc3QgPSBjbGVhckVtcHR5U3BhbnMobGFzdCk7XG4gICAgICB9XG4gICAgICB2YXIgbmV3TWFya2VycyA9IFtmaXJzdF07XG4gICAgICBpZiAoIXNhbWVMaW5lKSB7XG4gICAgICAgIHZhciBnYXAgPSBjaGFuZ2UudGV4dC5sZW5ndGggLSAyLCBnYXBNYXJrZXJzO1xuICAgICAgICBpZiAoZ2FwID4gMCAmJiBmaXJzdCkge1xuICAgICAgICAgIGZvciAodmFyIGkkMjIgPSAwOyBpJDIyIDwgZmlyc3QubGVuZ3RoOyArK2kkMjIpIHtcbiAgICAgICAgICAgIGlmIChmaXJzdFtpJDIyXS50byA9PSBudWxsKSB7XG4gICAgICAgICAgICAgIChnYXBNYXJrZXJzIHx8IChnYXBNYXJrZXJzID0gW10pKS5wdXNoKG5ldyBNYXJrZWRTcGFuKGZpcnN0W2kkMjJdLm1hcmtlciwgbnVsbCwgbnVsbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpJDMgPSAwOyBpJDMgPCBnYXA7ICsraSQzKSB7XG4gICAgICAgICAgbmV3TWFya2Vycy5wdXNoKGdhcE1hcmtlcnMpO1xuICAgICAgICB9XG4gICAgICAgIG5ld01hcmtlcnMucHVzaChsYXN0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXdNYXJrZXJzO1xuICAgIH1cbiAgICBfX25hbWUoc3RyZXRjaFNwYW5zT3ZlckNoYW5nZSwgXCJzdHJldGNoU3BhbnNPdmVyQ2hhbmdlXCIpO1xuICAgIGZ1bmN0aW9uIGNsZWFyRW1wdHlTcGFucyhzcGFucykge1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHNwYW5zLmxlbmd0aDsgKytpMikge1xuICAgICAgICB2YXIgc3BhbiA9IHNwYW5zW2kyXTtcbiAgICAgICAgaWYgKHNwYW4uZnJvbSAhPSBudWxsICYmIHNwYW4uZnJvbSA9PSBzcGFuLnRvICYmIHNwYW4ubWFya2VyLmNsZWFyV2hlbkVtcHR5ICE9PSBmYWxzZSkge1xuICAgICAgICAgIHNwYW5zLnNwbGljZShpMi0tLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFzcGFucy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3BhbnM7XG4gICAgfVxuICAgIF9fbmFtZShjbGVhckVtcHR5U3BhbnMsIFwiY2xlYXJFbXB0eVNwYW5zXCIpO1xuICAgIGZ1bmN0aW9uIHJlbW92ZVJlYWRPbmx5UmFuZ2VzKGRvYywgZnJvbSwgdG8pIHtcbiAgICAgIHZhciBtYXJrZXJzID0gbnVsbDtcbiAgICAgIGRvYy5pdGVyKGZyb20ubGluZSwgdG8ubGluZSArIDEsIGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgaWYgKGxpbmUubWFya2VkU3BhbnMpIHtcbiAgICAgICAgICBmb3IgKHZhciBpMyA9IDA7IGkzIDwgbGluZS5tYXJrZWRTcGFucy5sZW5ndGg7ICsraTMpIHtcbiAgICAgICAgICAgIHZhciBtYXJrID0gbGluZS5tYXJrZWRTcGFuc1tpM10ubWFya2VyO1xuICAgICAgICAgICAgaWYgKG1hcmsucmVhZE9ubHkgJiYgKCFtYXJrZXJzIHx8IGluZGV4T2YobWFya2VycywgbWFyaykgPT0gLTEpKSB7XG4gICAgICAgICAgICAgIChtYXJrZXJzIHx8IChtYXJrZXJzID0gW10pKS5wdXNoKG1hcmspO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoIW1hcmtlcnMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgcGFydHMgPSBbeyBmcm9tLCB0byB9XTtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBtYXJrZXJzLmxlbmd0aDsgKytpMikge1xuICAgICAgICB2YXIgbWsgPSBtYXJrZXJzW2kyXSwgbSA9IG1rLmZpbmQoMCk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGFydHMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICB2YXIgcCA9IHBhcnRzW2pdO1xuICAgICAgICAgIGlmIChjbXAocC50bywgbS5mcm9tKSA8IDAgfHwgY21wKHAuZnJvbSwgbS50bykgPiAwKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG5ld1BhcnRzID0gW2osIDFdLCBkZnJvbSA9IGNtcChwLmZyb20sIG0uZnJvbSksIGR0byA9IGNtcChwLnRvLCBtLnRvKTtcbiAgICAgICAgICBpZiAoZGZyb20gPCAwIHx8ICFtay5pbmNsdXNpdmVMZWZ0ICYmICFkZnJvbSkge1xuICAgICAgICAgICAgbmV3UGFydHMucHVzaCh7IGZyb206IHAuZnJvbSwgdG86IG0uZnJvbSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGR0byA+IDAgfHwgIW1rLmluY2x1c2l2ZVJpZ2h0ICYmICFkdG8pIHtcbiAgICAgICAgICAgIG5ld1BhcnRzLnB1c2goeyBmcm9tOiBtLnRvLCB0bzogcC50byB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGFydHMuc3BsaWNlLmFwcGx5KHBhcnRzLCBuZXdQYXJ0cyk7XG4gICAgICAgICAgaiArPSBuZXdQYXJ0cy5sZW5ndGggLSAzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIF9fbmFtZShyZW1vdmVSZWFkT25seVJhbmdlcywgXCJyZW1vdmVSZWFkT25seVJhbmdlc1wiKTtcbiAgICBmdW5jdGlvbiBkZXRhY2hNYXJrZWRTcGFucyhsaW5lKSB7XG4gICAgICB2YXIgc3BhbnMgPSBsaW5lLm1hcmtlZFNwYW5zO1xuICAgICAgaWYgKCFzcGFucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgc3BhbnMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIHNwYW5zW2kyXS5tYXJrZXIuZGV0YWNoTGluZShsaW5lKTtcbiAgICAgIH1cbiAgICAgIGxpbmUubWFya2VkU3BhbnMgPSBudWxsO1xuICAgIH1cbiAgICBfX25hbWUoZGV0YWNoTWFya2VkU3BhbnMsIFwiZGV0YWNoTWFya2VkU3BhbnNcIik7XG4gICAgZnVuY3Rpb24gYXR0YWNoTWFya2VkU3BhbnMobGluZSwgc3BhbnMpIHtcbiAgICAgIGlmICghc3BhbnMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHNwYW5zLmxlbmd0aDsgKytpMikge1xuICAgICAgICBzcGFuc1tpMl0ubWFya2VyLmF0dGFjaExpbmUobGluZSk7XG4gICAgICB9XG4gICAgICBsaW5lLm1hcmtlZFNwYW5zID0gc3BhbnM7XG4gICAgfVxuICAgIF9fbmFtZShhdHRhY2hNYXJrZWRTcGFucywgXCJhdHRhY2hNYXJrZWRTcGFuc1wiKTtcbiAgICBmdW5jdGlvbiBleHRyYUxlZnQobWFya2VyKSB7XG4gICAgICByZXR1cm4gbWFya2VyLmluY2x1c2l2ZUxlZnQgPyAtMSA6IDA7XG4gICAgfVxuICAgIF9fbmFtZShleHRyYUxlZnQsIFwiZXh0cmFMZWZ0XCIpO1xuICAgIGZ1bmN0aW9uIGV4dHJhUmlnaHQobWFya2VyKSB7XG4gICAgICByZXR1cm4gbWFya2VyLmluY2x1c2l2ZVJpZ2h0ID8gMSA6IDA7XG4gICAgfVxuICAgIF9fbmFtZShleHRyYVJpZ2h0LCBcImV4dHJhUmlnaHRcIik7XG4gICAgZnVuY3Rpb24gY29tcGFyZUNvbGxhcHNlZE1hcmtlcnMoYSwgYikge1xuICAgICAgdmFyIGxlbkRpZmYgPSBhLmxpbmVzLmxlbmd0aCAtIGIubGluZXMubGVuZ3RoO1xuICAgICAgaWYgKGxlbkRpZmYgIT0gMCkge1xuICAgICAgICByZXR1cm4gbGVuRGlmZjtcbiAgICAgIH1cbiAgICAgIHZhciBhUG9zID0gYS5maW5kKCksIGJQb3MgPSBiLmZpbmQoKTtcbiAgICAgIHZhciBmcm9tQ21wID0gY21wKGFQb3MuZnJvbSwgYlBvcy5mcm9tKSB8fCBleHRyYUxlZnQoYSkgLSBleHRyYUxlZnQoYik7XG4gICAgICBpZiAoZnJvbUNtcCkge1xuICAgICAgICByZXR1cm4gLWZyb21DbXA7XG4gICAgICB9XG4gICAgICB2YXIgdG9DbXAgPSBjbXAoYVBvcy50bywgYlBvcy50bykgfHwgZXh0cmFSaWdodChhKSAtIGV4dHJhUmlnaHQoYik7XG4gICAgICBpZiAodG9DbXApIHtcbiAgICAgICAgcmV0dXJuIHRvQ21wO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGIuaWQgLSBhLmlkO1xuICAgIH1cbiAgICBfX25hbWUoY29tcGFyZUNvbGxhcHNlZE1hcmtlcnMsIFwiY29tcGFyZUNvbGxhcHNlZE1hcmtlcnNcIik7XG4gICAgZnVuY3Rpb24gY29sbGFwc2VkU3BhbkF0U2lkZShsaW5lLCBzdGFydCkge1xuICAgICAgdmFyIHNwcyA9IHNhd0NvbGxhcHNlZFNwYW5zICYmIGxpbmUubWFya2VkU3BhbnMsIGZvdW5kO1xuICAgICAgaWYgKHNwcykge1xuICAgICAgICBmb3IgKHZhciBzcCA9IHZvaWQgMCwgaTIgPSAwOyBpMiA8IHNwcy5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgICBzcCA9IHNwc1tpMl07XG4gICAgICAgICAgaWYgKHNwLm1hcmtlci5jb2xsYXBzZWQgJiYgKHN0YXJ0ID8gc3AuZnJvbSA6IHNwLnRvKSA9PSBudWxsICYmICghZm91bmQgfHwgY29tcGFyZUNvbGxhcHNlZE1hcmtlcnMoZm91bmQsIHNwLm1hcmtlcikgPCAwKSkge1xuICAgICAgICAgICAgZm91bmQgPSBzcC5tYXJrZXI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZm91bmQ7XG4gICAgfVxuICAgIF9fbmFtZShjb2xsYXBzZWRTcGFuQXRTaWRlLCBcImNvbGxhcHNlZFNwYW5BdFNpZGVcIik7XG4gICAgZnVuY3Rpb24gY29sbGFwc2VkU3BhbkF0U3RhcnQobGluZSkge1xuICAgICAgcmV0dXJuIGNvbGxhcHNlZFNwYW5BdFNpZGUobGluZSwgdHJ1ZSk7XG4gICAgfVxuICAgIF9fbmFtZShjb2xsYXBzZWRTcGFuQXRTdGFydCwgXCJjb2xsYXBzZWRTcGFuQXRTdGFydFwiKTtcbiAgICBmdW5jdGlvbiBjb2xsYXBzZWRTcGFuQXRFbmQobGluZSkge1xuICAgICAgcmV0dXJuIGNvbGxhcHNlZFNwYW5BdFNpZGUobGluZSwgZmFsc2UpO1xuICAgIH1cbiAgICBfX25hbWUoY29sbGFwc2VkU3BhbkF0RW5kLCBcImNvbGxhcHNlZFNwYW5BdEVuZFwiKTtcbiAgICBmdW5jdGlvbiBjb2xsYXBzZWRTcGFuQXJvdW5kKGxpbmUsIGNoKSB7XG4gICAgICB2YXIgc3BzID0gc2F3Q29sbGFwc2VkU3BhbnMgJiYgbGluZS5tYXJrZWRTcGFucywgZm91bmQ7XG4gICAgICBpZiAoc3BzKSB7XG4gICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBzcHMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgICAgdmFyIHNwID0gc3BzW2kyXTtcbiAgICAgICAgICBpZiAoc3AubWFya2VyLmNvbGxhcHNlZCAmJiAoc3AuZnJvbSA9PSBudWxsIHx8IHNwLmZyb20gPCBjaCkgJiYgKHNwLnRvID09IG51bGwgfHwgc3AudG8gPiBjaCkgJiYgKCFmb3VuZCB8fCBjb21wYXJlQ29sbGFwc2VkTWFya2Vycyhmb3VuZCwgc3AubWFya2VyKSA8IDApKSB7XG4gICAgICAgICAgICBmb3VuZCA9IHNwLm1hcmtlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG4gICAgX19uYW1lKGNvbGxhcHNlZFNwYW5Bcm91bmQsIFwiY29sbGFwc2VkU3BhbkFyb3VuZFwiKTtcbiAgICBmdW5jdGlvbiBjb25mbGljdGluZ0NvbGxhcHNlZFJhbmdlKGRvYywgbGluZU5vMiwgZnJvbSwgdG8sIG1hcmtlcikge1xuICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKGRvYywgbGluZU5vMik7XG4gICAgICB2YXIgc3BzID0gc2F3Q29sbGFwc2VkU3BhbnMgJiYgbGluZS5tYXJrZWRTcGFucztcbiAgICAgIGlmIChzcHMpIHtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHNwcy5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgICB2YXIgc3AgPSBzcHNbaTJdO1xuICAgICAgICAgIGlmICghc3AubWFya2VyLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBmb3VuZCA9IHNwLm1hcmtlci5maW5kKDApO1xuICAgICAgICAgIHZhciBmcm9tQ21wID0gY21wKGZvdW5kLmZyb20sIGZyb20pIHx8IGV4dHJhTGVmdChzcC5tYXJrZXIpIC0gZXh0cmFMZWZ0KG1hcmtlcik7XG4gICAgICAgICAgdmFyIHRvQ21wID0gY21wKGZvdW5kLnRvLCB0bykgfHwgZXh0cmFSaWdodChzcC5tYXJrZXIpIC0gZXh0cmFSaWdodChtYXJrZXIpO1xuICAgICAgICAgIGlmIChmcm9tQ21wID49IDAgJiYgdG9DbXAgPD0gMCB8fCBmcm9tQ21wIDw9IDAgJiYgdG9DbXAgPj0gMCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmcm9tQ21wIDw9IDAgJiYgKHNwLm1hcmtlci5pbmNsdXNpdmVSaWdodCAmJiBtYXJrZXIuaW5jbHVzaXZlTGVmdCA/IGNtcChmb3VuZC50bywgZnJvbSkgPj0gMCA6IGNtcChmb3VuZC50bywgZnJvbSkgPiAwKSB8fCBmcm9tQ21wID49IDAgJiYgKHNwLm1hcmtlci5pbmNsdXNpdmVSaWdodCAmJiBtYXJrZXIuaW5jbHVzaXZlTGVmdCA/IGNtcChmb3VuZC5mcm9tLCB0bykgPD0gMCA6IGNtcChmb3VuZC5mcm9tLCB0bykgPCAwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShjb25mbGljdGluZ0NvbGxhcHNlZFJhbmdlLCBcImNvbmZsaWN0aW5nQ29sbGFwc2VkUmFuZ2VcIik7XG4gICAgZnVuY3Rpb24gdmlzdWFsTGluZShsaW5lKSB7XG4gICAgICB2YXIgbWVyZ2VkO1xuICAgICAgd2hpbGUgKG1lcmdlZCA9IGNvbGxhcHNlZFNwYW5BdFN0YXJ0KGxpbmUpKSB7XG4gICAgICAgIGxpbmUgPSBtZXJnZWQuZmluZCgtMSwgdHJ1ZSkubGluZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5lO1xuICAgIH1cbiAgICBfX25hbWUodmlzdWFsTGluZSwgXCJ2aXN1YWxMaW5lXCIpO1xuICAgIGZ1bmN0aW9uIHZpc3VhbExpbmVFbmQobGluZSkge1xuICAgICAgdmFyIG1lcmdlZDtcbiAgICAgIHdoaWxlIChtZXJnZWQgPSBjb2xsYXBzZWRTcGFuQXRFbmQobGluZSkpIHtcbiAgICAgICAgbGluZSA9IG1lcmdlZC5maW5kKDEsIHRydWUpLmxpbmU7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluZTtcbiAgICB9XG4gICAgX19uYW1lKHZpc3VhbExpbmVFbmQsIFwidmlzdWFsTGluZUVuZFwiKTtcbiAgICBmdW5jdGlvbiB2aXN1YWxMaW5lQ29udGludWVkKGxpbmUpIHtcbiAgICAgIHZhciBtZXJnZWQsIGxpbmVzO1xuICAgICAgd2hpbGUgKG1lcmdlZCA9IGNvbGxhcHNlZFNwYW5BdEVuZChsaW5lKSkge1xuICAgICAgICBsaW5lID0gbWVyZ2VkLmZpbmQoMSwgdHJ1ZSkubGluZTtcbiAgICAgICAgKGxpbmVzIHx8IChsaW5lcyA9IFtdKSkucHVzaChsaW5lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5lcztcbiAgICB9XG4gICAgX19uYW1lKHZpc3VhbExpbmVDb250aW51ZWQsIFwidmlzdWFsTGluZUNvbnRpbnVlZFwiKTtcbiAgICBmdW5jdGlvbiB2aXN1YWxMaW5lTm8oZG9jLCBsaW5lTikge1xuICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKGRvYywgbGluZU4pLCB2aXMgPSB2aXN1YWxMaW5lKGxpbmUpO1xuICAgICAgaWYgKGxpbmUgPT0gdmlzKSB7XG4gICAgICAgIHJldHVybiBsaW5lTjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5lTm8odmlzKTtcbiAgICB9XG4gICAgX19uYW1lKHZpc3VhbExpbmVObywgXCJ2aXN1YWxMaW5lTm9cIik7XG4gICAgZnVuY3Rpb24gdmlzdWFsTGluZUVuZE5vKGRvYywgbGluZU4pIHtcbiAgICAgIGlmIChsaW5lTiA+IGRvYy5sYXN0TGluZSgpKSB7XG4gICAgICAgIHJldHVybiBsaW5lTjtcbiAgICAgIH1cbiAgICAgIHZhciBsaW5lID0gZ2V0TGluZShkb2MsIGxpbmVOKSwgbWVyZ2VkO1xuICAgICAgaWYgKCFsaW5lSXNIaWRkZW4oZG9jLCBsaW5lKSkge1xuICAgICAgICByZXR1cm4gbGluZU47XG4gICAgICB9XG4gICAgICB3aGlsZSAobWVyZ2VkID0gY29sbGFwc2VkU3BhbkF0RW5kKGxpbmUpKSB7XG4gICAgICAgIGxpbmUgPSBtZXJnZWQuZmluZCgxLCB0cnVlKS5saW5lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxpbmVObyhsaW5lKSArIDE7XG4gICAgfVxuICAgIF9fbmFtZSh2aXN1YWxMaW5lRW5kTm8sIFwidmlzdWFsTGluZUVuZE5vXCIpO1xuICAgIGZ1bmN0aW9uIGxpbmVJc0hpZGRlbihkb2MsIGxpbmUpIHtcbiAgICAgIHZhciBzcHMgPSBzYXdDb2xsYXBzZWRTcGFucyAmJiBsaW5lLm1hcmtlZFNwYW5zO1xuICAgICAgaWYgKHNwcykge1xuICAgICAgICBmb3IgKHZhciBzcCA9IHZvaWQgMCwgaTIgPSAwOyBpMiA8IHNwcy5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgICBzcCA9IHNwc1tpMl07XG4gICAgICAgICAgaWYgKCFzcC5tYXJrZXIuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNwLmZyb20gPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzcC5tYXJrZXIud2lkZ2V0Tm9kZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzcC5mcm9tID09IDAgJiYgc3AubWFya2VyLmluY2x1c2l2ZUxlZnQgJiYgbGluZUlzSGlkZGVuSW5uZXIoZG9jLCBsaW5lLCBzcCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUobGluZUlzSGlkZGVuLCBcImxpbmVJc0hpZGRlblwiKTtcbiAgICBmdW5jdGlvbiBsaW5lSXNIaWRkZW5Jbm5lcihkb2MsIGxpbmUsIHNwYW4pIHtcbiAgICAgIGlmIChzcGFuLnRvID09IG51bGwpIHtcbiAgICAgICAgdmFyIGVuZCA9IHNwYW4ubWFya2VyLmZpbmQoMSwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiBsaW5lSXNIaWRkZW5Jbm5lcihkb2MsIGVuZC5saW5lLCBnZXRNYXJrZWRTcGFuRm9yKGVuZC5saW5lLm1hcmtlZFNwYW5zLCBzcGFuLm1hcmtlcikpO1xuICAgICAgfVxuICAgICAgaWYgKHNwYW4ubWFya2VyLmluY2x1c2l2ZVJpZ2h0ICYmIHNwYW4udG8gPT0gbGluZS50ZXh0Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIHNwID0gdm9pZCAwLCBpMiA9IDA7IGkyIDwgbGluZS5tYXJrZWRTcGFucy5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgc3AgPSBsaW5lLm1hcmtlZFNwYW5zW2kyXTtcbiAgICAgICAgaWYgKHNwLm1hcmtlci5jb2xsYXBzZWQgJiYgIXNwLm1hcmtlci53aWRnZXROb2RlICYmIHNwLmZyb20gPT0gc3Bhbi50byAmJiAoc3AudG8gPT0gbnVsbCB8fCBzcC50byAhPSBzcGFuLmZyb20pICYmIChzcC5tYXJrZXIuaW5jbHVzaXZlTGVmdCB8fCBzcGFuLm1hcmtlci5pbmNsdXNpdmVSaWdodCkgJiYgbGluZUlzSGlkZGVuSW5uZXIoZG9jLCBsaW5lLCBzcCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUobGluZUlzSGlkZGVuSW5uZXIsIFwibGluZUlzSGlkZGVuSW5uZXJcIik7XG4gICAgZnVuY3Rpb24gaGVpZ2h0QXRMaW5lKGxpbmVPYmopIHtcbiAgICAgIGxpbmVPYmogPSB2aXN1YWxMaW5lKGxpbmVPYmopO1xuICAgICAgdmFyIGggPSAwLCBjaHVuayA9IGxpbmVPYmoucGFyZW50O1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGNodW5rLmxpbmVzLmxlbmd0aDsgKytpMikge1xuICAgICAgICB2YXIgbGluZSA9IGNodW5rLmxpbmVzW2kyXTtcbiAgICAgICAgaWYgKGxpbmUgPT0gbGluZU9iaikge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGggKz0gbGluZS5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAodmFyIHAgPSBjaHVuay5wYXJlbnQ7IHA7IGNodW5rID0gcCwgcCA9IGNodW5rLnBhcmVudCkge1xuICAgICAgICBmb3IgKHZhciBpJDEyID0gMDsgaSQxMiA8IHAuY2hpbGRyZW4ubGVuZ3RoOyArK2kkMTIpIHtcbiAgICAgICAgICB2YXIgY3VyID0gcC5jaGlsZHJlbltpJDEyXTtcbiAgICAgICAgICBpZiAoY3VyID09IGNodW5rKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaCArPSBjdXIuaGVpZ2h0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGg7XG4gICAgfVxuICAgIF9fbmFtZShoZWlnaHRBdExpbmUsIFwiaGVpZ2h0QXRMaW5lXCIpO1xuICAgIGZ1bmN0aW9uIGxpbmVMZW5ndGgobGluZSkge1xuICAgICAgaWYgKGxpbmUuaGVpZ2h0ID09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICB2YXIgbGVuID0gbGluZS50ZXh0Lmxlbmd0aCwgbWVyZ2VkLCBjdXIgPSBsaW5lO1xuICAgICAgd2hpbGUgKG1lcmdlZCA9IGNvbGxhcHNlZFNwYW5BdFN0YXJ0KGN1cikpIHtcbiAgICAgICAgdmFyIGZvdW5kID0gbWVyZ2VkLmZpbmQoMCwgdHJ1ZSk7XG4gICAgICAgIGN1ciA9IGZvdW5kLmZyb20ubGluZTtcbiAgICAgICAgbGVuICs9IGZvdW5kLmZyb20uY2ggLSBmb3VuZC50by5jaDtcbiAgICAgIH1cbiAgICAgIGN1ciA9IGxpbmU7XG4gICAgICB3aGlsZSAobWVyZ2VkID0gY29sbGFwc2VkU3BhbkF0RW5kKGN1cikpIHtcbiAgICAgICAgdmFyIGZvdW5kJDEgPSBtZXJnZWQuZmluZCgwLCB0cnVlKTtcbiAgICAgICAgbGVuIC09IGN1ci50ZXh0Lmxlbmd0aCAtIGZvdW5kJDEuZnJvbS5jaDtcbiAgICAgICAgY3VyID0gZm91bmQkMS50by5saW5lO1xuICAgICAgICBsZW4gKz0gY3VyLnRleHQubGVuZ3RoIC0gZm91bmQkMS50by5jaDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsZW47XG4gICAgfVxuICAgIF9fbmFtZShsaW5lTGVuZ3RoLCBcImxpbmVMZW5ndGhcIik7XG4gICAgZnVuY3Rpb24gZmluZE1heExpbmUoY20pIHtcbiAgICAgIHZhciBkID0gY20uZGlzcGxheSwgZG9jID0gY20uZG9jO1xuICAgICAgZC5tYXhMaW5lID0gZ2V0TGluZShkb2MsIGRvYy5maXJzdCk7XG4gICAgICBkLm1heExpbmVMZW5ndGggPSBsaW5lTGVuZ3RoKGQubWF4TGluZSk7XG4gICAgICBkLm1heExpbmVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgIGRvYy5pdGVyKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgdmFyIGxlbiA9IGxpbmVMZW5ndGgobGluZSk7XG4gICAgICAgIGlmIChsZW4gPiBkLm1heExpbmVMZW5ndGgpIHtcbiAgICAgICAgICBkLm1heExpbmVMZW5ndGggPSBsZW47XG4gICAgICAgICAgZC5tYXhMaW5lID0gbGluZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIF9fbmFtZShmaW5kTWF4TGluZSwgXCJmaW5kTWF4TGluZVwiKTtcbiAgICB2YXIgTGluZSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24odGV4dCwgbWFya2VkU3BhbnMsIGVzdGltYXRlSGVpZ2h0Mikge1xuICAgICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICAgIGF0dGFjaE1hcmtlZFNwYW5zKHRoaXMsIG1hcmtlZFNwYW5zKTtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZXN0aW1hdGVIZWlnaHQyID8gZXN0aW1hdGVIZWlnaHQyKHRoaXMpIDogMTtcbiAgICB9LCBcIkxpbmVcIik7XG4gICAgTGluZS5wcm90b3R5cGUubGluZU5vID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gbGluZU5vKHRoaXMpO1xuICAgIH07XG4gICAgZXZlbnRNaXhpbihMaW5lKTtcbiAgICBmdW5jdGlvbiB1cGRhdGVMaW5lKGxpbmUsIHRleHQsIG1hcmtlZFNwYW5zLCBlc3RpbWF0ZUhlaWdodDIpIHtcbiAgICAgIGxpbmUudGV4dCA9IHRleHQ7XG4gICAgICBpZiAobGluZS5zdGF0ZUFmdGVyKSB7XG4gICAgICAgIGxpbmUuc3RhdGVBZnRlciA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAobGluZS5zdHlsZXMpIHtcbiAgICAgICAgbGluZS5zdHlsZXMgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGxpbmUub3JkZXIgIT0gbnVsbCkge1xuICAgICAgICBsaW5lLm9yZGVyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGRldGFjaE1hcmtlZFNwYW5zKGxpbmUpO1xuICAgICAgYXR0YWNoTWFya2VkU3BhbnMobGluZSwgbWFya2VkU3BhbnMpO1xuICAgICAgdmFyIGVzdEhlaWdodCA9IGVzdGltYXRlSGVpZ2h0MiA/IGVzdGltYXRlSGVpZ2h0MihsaW5lKSA6IDE7XG4gICAgICBpZiAoZXN0SGVpZ2h0ICE9IGxpbmUuaGVpZ2h0KSB7XG4gICAgICAgIHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgZXN0SGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHVwZGF0ZUxpbmUsIFwidXBkYXRlTGluZVwiKTtcbiAgICBmdW5jdGlvbiBjbGVhblVwTGluZShsaW5lKSB7XG4gICAgICBsaW5lLnBhcmVudCA9IG51bGw7XG4gICAgICBkZXRhY2hNYXJrZWRTcGFucyhsaW5lKTtcbiAgICB9XG4gICAgX19uYW1lKGNsZWFuVXBMaW5lLCBcImNsZWFuVXBMaW5lXCIpO1xuICAgIHZhciBzdHlsZVRvQ2xhc3NDYWNoZSA9IHt9LCBzdHlsZVRvQ2xhc3NDYWNoZVdpdGhNb2RlID0ge307XG4gICAgZnVuY3Rpb24gaW50ZXJwcmV0VG9rZW5TdHlsZShzdHlsZSwgb3B0aW9ucykge1xuICAgICAgaWYgKCFzdHlsZSB8fCAvXlxccyokLy50ZXN0KHN0eWxlKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBjYWNoZSA9IG9wdGlvbnMuYWRkTW9kZUNsYXNzID8gc3R5bGVUb0NsYXNzQ2FjaGVXaXRoTW9kZSA6IHN0eWxlVG9DbGFzc0NhY2hlO1xuICAgICAgcmV0dXJuIGNhY2hlW3N0eWxlXSB8fCAoY2FjaGVbc3R5bGVdID0gc3R5bGUucmVwbGFjZSgvXFxTKy9nLCBcImNtLSQmXCIpKTtcbiAgICB9XG4gICAgX19uYW1lKGludGVycHJldFRva2VuU3R5bGUsIFwiaW50ZXJwcmV0VG9rZW5TdHlsZVwiKTtcbiAgICBmdW5jdGlvbiBidWlsZExpbmVDb250ZW50KGNtLCBsaW5lVmlldykge1xuICAgICAgdmFyIGNvbnRlbnQgPSBlbHRQKFwic3BhblwiLCBudWxsLCBudWxsLCB3ZWJraXQgPyBcInBhZGRpbmctcmlnaHQ6IC4xcHhcIiA6IG51bGwpO1xuICAgICAgdmFyIGJ1aWxkZXIgPSB7XG4gICAgICAgIHByZTogZWx0UChcInByZVwiLCBbY29udGVudF0sIFwiQ29kZU1pcnJvci1saW5lXCIpLFxuICAgICAgICBjb250ZW50LFxuICAgICAgICBjb2w6IDAsXG4gICAgICAgIHBvczogMCxcbiAgICAgICAgY20sXG4gICAgICAgIHRyYWlsaW5nU3BhY2U6IGZhbHNlLFxuICAgICAgICBzcGxpdFNwYWNlczogY20uZ2V0T3B0aW9uKFwibGluZVdyYXBwaW5nXCIpXG4gICAgICB9O1xuICAgICAgbGluZVZpZXcubWVhc3VyZSA9IHt9O1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8PSAobGluZVZpZXcucmVzdCA/IGxpbmVWaWV3LnJlc3QubGVuZ3RoIDogMCk7IGkyKyspIHtcbiAgICAgICAgdmFyIGxpbmUgPSBpMiA/IGxpbmVWaWV3LnJlc3RbaTIgLSAxXSA6IGxpbmVWaWV3LmxpbmUsIG9yZGVyID0gdm9pZCAwO1xuICAgICAgICBidWlsZGVyLnBvcyA9IDA7XG4gICAgICAgIGJ1aWxkZXIuYWRkVG9rZW4gPSBidWlsZFRva2VuO1xuICAgICAgICBpZiAoaGFzQmFkQmlkaVJlY3RzKGNtLmRpc3BsYXkubWVhc3VyZSkgJiYgKG9yZGVyID0gZ2V0T3JkZXIobGluZSwgY20uZG9jLmRpcmVjdGlvbikpKSB7XG4gICAgICAgICAgYnVpbGRlci5hZGRUb2tlbiA9IGJ1aWxkVG9rZW5CYWRCaWRpKGJ1aWxkZXIuYWRkVG9rZW4sIG9yZGVyKTtcbiAgICAgICAgfVxuICAgICAgICBidWlsZGVyLm1hcCA9IFtdO1xuICAgICAgICB2YXIgYWxsb3dGcm9udGllclVwZGF0ZSA9IGxpbmVWaWV3ICE9IGNtLmRpc3BsYXkuZXh0ZXJuYWxNZWFzdXJlZCAmJiBsaW5lTm8obGluZSk7XG4gICAgICAgIGluc2VydExpbmVDb250ZW50KGxpbmUsIGJ1aWxkZXIsIGdldExpbmVTdHlsZXMoY20sIGxpbmUsIGFsbG93RnJvbnRpZXJVcGRhdGUpKTtcbiAgICAgICAgaWYgKGxpbmUuc3R5bGVDbGFzc2VzKSB7XG4gICAgICAgICAgaWYgKGxpbmUuc3R5bGVDbGFzc2VzLmJnQ2xhc3MpIHtcbiAgICAgICAgICAgIGJ1aWxkZXIuYmdDbGFzcyA9IGpvaW5DbGFzc2VzKGxpbmUuc3R5bGVDbGFzc2VzLmJnQ2xhc3MsIGJ1aWxkZXIuYmdDbGFzcyB8fCBcIlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxpbmUuc3R5bGVDbGFzc2VzLnRleHRDbGFzcykge1xuICAgICAgICAgICAgYnVpbGRlci50ZXh0Q2xhc3MgPSBqb2luQ2xhc3NlcyhsaW5lLnN0eWxlQ2xhc3Nlcy50ZXh0Q2xhc3MsIGJ1aWxkZXIudGV4dENsYXNzIHx8IFwiXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYnVpbGRlci5tYXAubGVuZ3RoID09IDApIHtcbiAgICAgICAgICBidWlsZGVyLm1hcC5wdXNoKDAsIDAsIGJ1aWxkZXIuY29udGVudC5hcHBlbmRDaGlsZCh6ZXJvV2lkdGhFbGVtZW50KGNtLmRpc3BsYXkubWVhc3VyZSkpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaTIgPT0gMCkge1xuICAgICAgICAgIGxpbmVWaWV3Lm1lYXN1cmUubWFwID0gYnVpbGRlci5tYXA7XG4gICAgICAgICAgbGluZVZpZXcubWVhc3VyZS5jYWNoZSA9IHt9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIChsaW5lVmlldy5tZWFzdXJlLm1hcHMgfHwgKGxpbmVWaWV3Lm1lYXN1cmUubWFwcyA9IFtdKSkucHVzaChidWlsZGVyLm1hcCk7XG4gICAgICAgICAgKGxpbmVWaWV3Lm1lYXN1cmUuY2FjaGVzIHx8IChsaW5lVmlldy5tZWFzdXJlLmNhY2hlcyA9IFtdKSkucHVzaCh7fSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh3ZWJraXQpIHtcbiAgICAgICAgdmFyIGxhc3QgPSBidWlsZGVyLmNvbnRlbnQubGFzdENoaWxkO1xuICAgICAgICBpZiAoL1xcYmNtLXRhYlxcYi8udGVzdChsYXN0LmNsYXNzTmFtZSkgfHwgbGFzdC5xdWVyeVNlbGVjdG9yICYmIGxhc3QucXVlcnlTZWxlY3RvcihcIi5jbS10YWJcIikpIHtcbiAgICAgICAgICBidWlsZGVyLmNvbnRlbnQuY2xhc3NOYW1lID0gXCJjbS10YWItd3JhcC1oYWNrXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNpZ25hbChjbSwgXCJyZW5kZXJMaW5lXCIsIGNtLCBsaW5lVmlldy5saW5lLCBidWlsZGVyLnByZSk7XG4gICAgICBpZiAoYnVpbGRlci5wcmUuY2xhc3NOYW1lKSB7XG4gICAgICAgIGJ1aWxkZXIudGV4dENsYXNzID0gam9pbkNsYXNzZXMoYnVpbGRlci5wcmUuY2xhc3NOYW1lLCBidWlsZGVyLnRleHRDbGFzcyB8fCBcIlwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBidWlsZGVyO1xuICAgIH1cbiAgICBfX25hbWUoYnVpbGRMaW5lQ29udGVudCwgXCJidWlsZExpbmVDb250ZW50XCIpO1xuICAgIGZ1bmN0aW9uIGRlZmF1bHRTcGVjaWFsQ2hhclBsYWNlaG9sZGVyKGNoKSB7XG4gICAgICB2YXIgdG9rZW4gPSBlbHQoXCJzcGFuXCIsIFwiXFx1MjAyMlwiLCBcImNtLWludmFsaWRjaGFyXCIpO1xuICAgICAgdG9rZW4udGl0bGUgPSBcIlxcXFx1XCIgKyBjaC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KTtcbiAgICAgIHRva2VuLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgdG9rZW4udGl0bGUpO1xuICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH1cbiAgICBfX25hbWUoZGVmYXVsdFNwZWNpYWxDaGFyUGxhY2Vob2xkZXIsIFwiZGVmYXVsdFNwZWNpYWxDaGFyUGxhY2Vob2xkZXJcIik7XG4gICAgZnVuY3Rpb24gYnVpbGRUb2tlbihidWlsZGVyLCB0ZXh0LCBzdHlsZSwgc3RhcnRTdHlsZSwgZW5kU3R5bGUsIGNzcywgYXR0cmlidXRlcykge1xuICAgICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBkaXNwbGF5VGV4dCA9IGJ1aWxkZXIuc3BsaXRTcGFjZXMgPyBzcGxpdFNwYWNlcyh0ZXh0LCBidWlsZGVyLnRyYWlsaW5nU3BhY2UpIDogdGV4dDtcbiAgICAgIHZhciBzcGVjaWFsID0gYnVpbGRlci5jbS5zdGF0ZS5zcGVjaWFsQ2hhcnMsIG11c3RXcmFwID0gZmFsc2U7XG4gICAgICB2YXIgY29udGVudDtcbiAgICAgIGlmICghc3BlY2lhbC50ZXN0KHRleHQpKSB7XG4gICAgICAgIGJ1aWxkZXIuY29sICs9IHRleHQubGVuZ3RoO1xuICAgICAgICBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGlzcGxheVRleHQpO1xuICAgICAgICBidWlsZGVyLm1hcC5wdXNoKGJ1aWxkZXIucG9zLCBidWlsZGVyLnBvcyArIHRleHQubGVuZ3RoLCBjb250ZW50KTtcbiAgICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCA5KSB7XG4gICAgICAgICAgbXVzdFdyYXAgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGJ1aWxkZXIucG9zICs9IHRleHQubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgdmFyIHBvcyA9IDA7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgc3BlY2lhbC5sYXN0SW5kZXggPSBwb3M7XG4gICAgICAgICAgdmFyIG0gPSBzcGVjaWFsLmV4ZWModGV4dCk7XG4gICAgICAgICAgdmFyIHNraXBwZWQgPSBtID8gbS5pbmRleCAtIHBvcyA6IHRleHQubGVuZ3RoIC0gcG9zO1xuICAgICAgICAgIGlmIChza2lwcGVkKSB7XG4gICAgICAgICAgICB2YXIgdHh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGlzcGxheVRleHQuc2xpY2UocG9zLCBwb3MgKyBza2lwcGVkKSk7XG4gICAgICAgICAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA8IDkpIHtcbiAgICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChlbHQoXCJzcGFuXCIsIFt0eHRdKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHR4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWlsZGVyLm1hcC5wdXNoKGJ1aWxkZXIucG9zLCBidWlsZGVyLnBvcyArIHNraXBwZWQsIHR4dCk7XG4gICAgICAgICAgICBidWlsZGVyLmNvbCArPSBza2lwcGVkO1xuICAgICAgICAgICAgYnVpbGRlci5wb3MgKz0gc2tpcHBlZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgcG9zICs9IHNraXBwZWQgKyAxO1xuICAgICAgICAgIHZhciB0eHQkMSA9IHZvaWQgMDtcbiAgICAgICAgICBpZiAobVswXSA9PSBcIlx0XCIpIHtcbiAgICAgICAgICAgIHZhciB0YWJTaXplID0gYnVpbGRlci5jbS5vcHRpb25zLnRhYlNpemUsIHRhYldpZHRoID0gdGFiU2l6ZSAtIGJ1aWxkZXIuY29sICUgdGFiU2l6ZTtcbiAgICAgICAgICAgIHR4dCQxID0gY29udGVudC5hcHBlbmRDaGlsZChlbHQoXCJzcGFuXCIsIHNwYWNlU3RyKHRhYldpZHRoKSwgXCJjbS10YWJcIikpO1xuICAgICAgICAgICAgdHh0JDEuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcInByZXNlbnRhdGlvblwiKTtcbiAgICAgICAgICAgIHR4dCQxLnNldEF0dHJpYnV0ZShcImNtLXRleHRcIiwgXCJcdFwiKTtcbiAgICAgICAgICAgIGJ1aWxkZXIuY29sICs9IHRhYldpZHRoO1xuICAgICAgICAgIH0gZWxzZSBpZiAobVswXSA9PSBcIlxcclwiIHx8IG1bMF0gPT0gXCJcXG5cIikge1xuICAgICAgICAgICAgdHh0JDEgPSBjb250ZW50LmFwcGVuZENoaWxkKGVsdChcInNwYW5cIiwgbVswXSA9PSBcIlxcclwiID8gXCJcXHUyNDBEXCIgOiBcIlxcdTI0MjRcIiwgXCJjbS1pbnZhbGlkY2hhclwiKSk7XG4gICAgICAgICAgICB0eHQkMS5zZXRBdHRyaWJ1dGUoXCJjbS10ZXh0XCIsIG1bMF0pO1xuICAgICAgICAgICAgYnVpbGRlci5jb2wgKz0gMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHh0JDEgPSBidWlsZGVyLmNtLm9wdGlvbnMuc3BlY2lhbENoYXJQbGFjZWhvbGRlcihtWzBdKTtcbiAgICAgICAgICAgIHR4dCQxLnNldEF0dHJpYnV0ZShcImNtLXRleHRcIiwgbVswXSk7XG4gICAgICAgICAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA8IDkpIHtcbiAgICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChlbHQoXCJzcGFuXCIsIFt0eHQkMV0pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQodHh0JDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVpbGRlci5jb2wgKz0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnVpbGRlci5tYXAucHVzaChidWlsZGVyLnBvcywgYnVpbGRlci5wb3MgKyAxLCB0eHQkMSk7XG4gICAgICAgICAgYnVpbGRlci5wb3MrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnVpbGRlci50cmFpbGluZ1NwYWNlID0gZGlzcGxheVRleHQuY2hhckNvZGVBdCh0ZXh0Lmxlbmd0aCAtIDEpID09IDMyO1xuICAgICAgaWYgKHN0eWxlIHx8IHN0YXJ0U3R5bGUgfHwgZW5kU3R5bGUgfHwgbXVzdFdyYXAgfHwgY3NzIHx8IGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdmFyIGZ1bGxTdHlsZSA9IHN0eWxlIHx8IFwiXCI7XG4gICAgICAgIGlmIChzdGFydFN0eWxlKSB7XG4gICAgICAgICAgZnVsbFN0eWxlICs9IHN0YXJ0U3R5bGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZFN0eWxlKSB7XG4gICAgICAgICAgZnVsbFN0eWxlICs9IGVuZFN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b2tlbiA9IGVsdChcInNwYW5cIiwgW2NvbnRlbnRdLCBmdWxsU3R5bGUsIGNzcyk7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgZm9yICh2YXIgYXR0ciBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShhdHRyKSAmJiBhdHRyICE9IFwic3R5bGVcIiAmJiBhdHRyICE9IFwiY2xhc3NcIikge1xuICAgICAgICAgICAgICB0b2tlbi5zZXRBdHRyaWJ1dGUoYXR0ciwgYXR0cmlidXRlc1thdHRyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBidWlsZGVyLmNvbnRlbnQuYXBwZW5kQ2hpbGQodG9rZW4pO1xuICAgICAgfVxuICAgICAgYnVpbGRlci5jb250ZW50LmFwcGVuZENoaWxkKGNvbnRlbnQpO1xuICAgIH1cbiAgICBfX25hbWUoYnVpbGRUb2tlbiwgXCJidWlsZFRva2VuXCIpO1xuICAgIGZ1bmN0aW9uIHNwbGl0U3BhY2VzKHRleHQsIHRyYWlsaW5nQmVmb3JlKSB7XG4gICAgICBpZiAodGV4dC5sZW5ndGggPiAxICYmICEvICAvLnRlc3QodGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgICB9XG4gICAgICB2YXIgc3BhY2VCZWZvcmUgPSB0cmFpbGluZ0JlZm9yZSwgcmVzdWx0ID0gXCJcIjtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCB0ZXh0Lmxlbmd0aDsgaTIrKykge1xuICAgICAgICB2YXIgY2ggPSB0ZXh0LmNoYXJBdChpMik7XG4gICAgICAgIGlmIChjaCA9PSBcIiBcIiAmJiBzcGFjZUJlZm9yZSAmJiAoaTIgPT0gdGV4dC5sZW5ndGggLSAxIHx8IHRleHQuY2hhckNvZGVBdChpMiArIDEpID09IDMyKSkge1xuICAgICAgICAgIGNoID0gXCJcXHhBMFwiO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCArPSBjaDtcbiAgICAgICAgc3BhY2VCZWZvcmUgPSBjaCA9PSBcIiBcIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIF9fbmFtZShzcGxpdFNwYWNlcywgXCJzcGxpdFNwYWNlc1wiKTtcbiAgICBmdW5jdGlvbiBidWlsZFRva2VuQmFkQmlkaShpbm5lciwgb3JkZXIpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihidWlsZGVyLCB0ZXh0LCBzdHlsZSwgc3RhcnRTdHlsZSwgZW5kU3R5bGUsIGNzcywgYXR0cmlidXRlcykge1xuICAgICAgICBzdHlsZSA9IHN0eWxlID8gc3R5bGUgKyBcIiBjbS1mb3JjZS1ib3JkZXJcIiA6IFwiY20tZm9yY2UtYm9yZGVyXCI7XG4gICAgICAgIHZhciBzdGFydCA9IGJ1aWxkZXIucG9zLCBlbmQgPSBzdGFydCArIHRleHQubGVuZ3RoO1xuICAgICAgICBmb3IgKDsgOyApIHtcbiAgICAgICAgICB2YXIgcGFydCA9IHZvaWQgMDtcbiAgICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgb3JkZXIubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgICAgICBwYXJ0ID0gb3JkZXJbaTJdO1xuICAgICAgICAgICAgaWYgKHBhcnQudG8gPiBzdGFydCAmJiBwYXJ0LmZyb20gPD0gc3RhcnQpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwYXJ0LnRvID49IGVuZCkge1xuICAgICAgICAgICAgcmV0dXJuIGlubmVyKGJ1aWxkZXIsIHRleHQsIHN0eWxlLCBzdGFydFN0eWxlLCBlbmRTdHlsZSwgY3NzLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5uZXIoYnVpbGRlciwgdGV4dC5zbGljZSgwLCBwYXJ0LnRvIC0gc3RhcnQpLCBzdHlsZSwgc3RhcnRTdHlsZSwgbnVsbCwgY3NzLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgICBzdGFydFN0eWxlID0gbnVsbDtcbiAgICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZShwYXJ0LnRvIC0gc3RhcnQpO1xuICAgICAgICAgIHN0YXJ0ID0gcGFydC50bztcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgX19uYW1lKGJ1aWxkVG9rZW5CYWRCaWRpLCBcImJ1aWxkVG9rZW5CYWRCaWRpXCIpO1xuICAgIGZ1bmN0aW9uIGJ1aWxkQ29sbGFwc2VkU3BhbihidWlsZGVyLCBzaXplLCBtYXJrZXIsIGlnbm9yZVdpZGdldCkge1xuICAgICAgdmFyIHdpZGdldCA9ICFpZ25vcmVXaWRnZXQgJiYgbWFya2VyLndpZGdldE5vZGU7XG4gICAgICBpZiAod2lkZ2V0KSB7XG4gICAgICAgIGJ1aWxkZXIubWFwLnB1c2goYnVpbGRlci5wb3MsIGJ1aWxkZXIucG9zICsgc2l6ZSwgd2lkZ2V0KTtcbiAgICAgIH1cbiAgICAgIGlmICghaWdub3JlV2lkZ2V0ICYmIGJ1aWxkZXIuY20uZGlzcGxheS5pbnB1dC5uZWVkc0NvbnRlbnRBdHRyaWJ1dGUpIHtcbiAgICAgICAgaWYgKCF3aWRnZXQpIHtcbiAgICAgICAgICB3aWRnZXQgPSBidWlsZGVyLmNvbnRlbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIikpO1xuICAgICAgICB9XG4gICAgICAgIHdpZGdldC5zZXRBdHRyaWJ1dGUoXCJjbS1tYXJrZXJcIiwgbWFya2VyLmlkKTtcbiAgICAgIH1cbiAgICAgIGlmICh3aWRnZXQpIHtcbiAgICAgICAgYnVpbGRlci5jbS5kaXNwbGF5LmlucHV0LnNldFVuZWRpdGFibGUod2lkZ2V0KTtcbiAgICAgICAgYnVpbGRlci5jb250ZW50LmFwcGVuZENoaWxkKHdpZGdldCk7XG4gICAgICB9XG4gICAgICBidWlsZGVyLnBvcyArPSBzaXplO1xuICAgICAgYnVpbGRlci50cmFpbGluZ1NwYWNlID0gZmFsc2U7XG4gICAgfVxuICAgIF9fbmFtZShidWlsZENvbGxhcHNlZFNwYW4sIFwiYnVpbGRDb2xsYXBzZWRTcGFuXCIpO1xuICAgIGZ1bmN0aW9uIGluc2VydExpbmVDb250ZW50KGxpbmUsIGJ1aWxkZXIsIHN0eWxlcykge1xuICAgICAgdmFyIHNwYW5zID0gbGluZS5tYXJrZWRTcGFucywgYWxsVGV4dCA9IGxpbmUudGV4dCwgYXQgPSAwO1xuICAgICAgaWYgKCFzcGFucykge1xuICAgICAgICBmb3IgKHZhciBpJDEyID0gMTsgaSQxMiA8IHN0eWxlcy5sZW5ndGg7IGkkMTIgKz0gMikge1xuICAgICAgICAgIGJ1aWxkZXIuYWRkVG9rZW4oYnVpbGRlciwgYWxsVGV4dC5zbGljZShhdCwgYXQgPSBzdHlsZXNbaSQxMl0pLCBpbnRlcnByZXRUb2tlblN0eWxlKHN0eWxlc1tpJDEyICsgMV0sIGJ1aWxkZXIuY20ub3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBsZW4gPSBhbGxUZXh0Lmxlbmd0aCwgcG9zID0gMCwgaTIgPSAxLCB0ZXh0ID0gXCJcIiwgc3R5bGUsIGNzcztcbiAgICAgIHZhciBuZXh0Q2hhbmdlID0gMCwgc3BhblN0eWxlLCBzcGFuRW5kU3R5bGUsIHNwYW5TdGFydFN0eWxlLCBjb2xsYXBzZWQsIGF0dHJpYnV0ZXM7XG4gICAgICBmb3IgKDsgOyApIHtcbiAgICAgICAgaWYgKG5leHRDaGFuZ2UgPT0gcG9zKSB7XG4gICAgICAgICAgc3BhblN0eWxlID0gc3BhbkVuZFN0eWxlID0gc3BhblN0YXJ0U3R5bGUgPSBjc3MgPSBcIlwiO1xuICAgICAgICAgIGF0dHJpYnV0ZXMgPSBudWxsO1xuICAgICAgICAgIGNvbGxhcHNlZCA9IG51bGw7XG4gICAgICAgICAgbmV4dENoYW5nZSA9IEluZmluaXR5O1xuICAgICAgICAgIHZhciBmb3VuZEJvb2ttYXJrcyA9IFtdLCBlbmRTdHlsZXMgPSB2b2lkIDA7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzcGFucy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgdmFyIHNwID0gc3BhbnNbal0sIG0gPSBzcC5tYXJrZXI7XG4gICAgICAgICAgICBpZiAobS50eXBlID09IFwiYm9va21hcmtcIiAmJiBzcC5mcm9tID09IHBvcyAmJiBtLndpZGdldE5vZGUpIHtcbiAgICAgICAgICAgICAgZm91bmRCb29rbWFya3MucHVzaChtKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3AuZnJvbSA8PSBwb3MgJiYgKHNwLnRvID09IG51bGwgfHwgc3AudG8gPiBwb3MgfHwgbS5jb2xsYXBzZWQgJiYgc3AudG8gPT0gcG9zICYmIHNwLmZyb20gPT0gcG9zKSkge1xuICAgICAgICAgICAgICBpZiAoc3AudG8gIT0gbnVsbCAmJiBzcC50byAhPSBwb3MgJiYgbmV4dENoYW5nZSA+IHNwLnRvKSB7XG4gICAgICAgICAgICAgICAgbmV4dENoYW5nZSA9IHNwLnRvO1xuICAgICAgICAgICAgICAgIHNwYW5FbmRTdHlsZSA9IFwiXCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKG0uY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICAgICAgc3BhblN0eWxlICs9IFwiIFwiICsgbS5jbGFzc05hbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKG0uY3NzKSB7XG4gICAgICAgICAgICAgICAgY3NzID0gKGNzcyA/IGNzcyArIFwiO1wiIDogXCJcIikgKyBtLmNzcztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAobS5zdGFydFN0eWxlICYmIHNwLmZyb20gPT0gcG9zKSB7XG4gICAgICAgICAgICAgICAgc3BhblN0YXJ0U3R5bGUgKz0gXCIgXCIgKyBtLnN0YXJ0U3R5bGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKG0uZW5kU3R5bGUgJiYgc3AudG8gPT0gbmV4dENoYW5nZSkge1xuICAgICAgICAgICAgICAgIChlbmRTdHlsZXMgfHwgKGVuZFN0eWxlcyA9IFtdKSkucHVzaChtLmVuZFN0eWxlLCBzcC50byk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKG0udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAoYXR0cmlidXRlcyB8fCAoYXR0cmlidXRlcyA9IHt9KSkudGl0bGUgPSBtLnRpdGxlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChtLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBhdHRyIGluIG0uYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgICAgKGF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0ZXMgPSB7fSkpW2F0dHJdID0gbS5hdHRyaWJ1dGVzW2F0dHJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAobS5jb2xsYXBzZWQgJiYgKCFjb2xsYXBzZWQgfHwgY29tcGFyZUNvbGxhcHNlZE1hcmtlcnMoY29sbGFwc2VkLm1hcmtlciwgbSkgPCAwKSkge1xuICAgICAgICAgICAgICAgIGNvbGxhcHNlZCA9IHNwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNwLmZyb20gPiBwb3MgJiYgbmV4dENoYW5nZSA+IHNwLmZyb20pIHtcbiAgICAgICAgICAgICAgbmV4dENoYW5nZSA9IHNwLmZyb207XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbmRTdHlsZXMpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGokMSA9IDA7IGokMSA8IGVuZFN0eWxlcy5sZW5ndGg7IGokMSArPSAyKSB7XG4gICAgICAgICAgICAgIGlmIChlbmRTdHlsZXNbaiQxICsgMV0gPT0gbmV4dENoYW5nZSkge1xuICAgICAgICAgICAgICAgIHNwYW5FbmRTdHlsZSArPSBcIiBcIiArIGVuZFN0eWxlc1tqJDFdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghY29sbGFwc2VkIHx8IGNvbGxhcHNlZC5mcm9tID09IHBvcykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiQyID0gMDsgaiQyIDwgZm91bmRCb29rbWFya3MubGVuZ3RoOyArK2okMikge1xuICAgICAgICAgICAgICBidWlsZENvbGxhcHNlZFNwYW4oYnVpbGRlciwgMCwgZm91bmRCb29rbWFya3NbaiQyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb2xsYXBzZWQgJiYgKGNvbGxhcHNlZC5mcm9tIHx8IDApID09IHBvcykge1xuICAgICAgICAgICAgYnVpbGRDb2xsYXBzZWRTcGFuKGJ1aWxkZXIsIChjb2xsYXBzZWQudG8gPT0gbnVsbCA/IGxlbiArIDEgOiBjb2xsYXBzZWQudG8pIC0gcG9zLCBjb2xsYXBzZWQubWFya2VyLCBjb2xsYXBzZWQuZnJvbSA9PSBudWxsKTtcbiAgICAgICAgICAgIGlmIChjb2xsYXBzZWQudG8gPT0gbnVsbCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sbGFwc2VkLnRvID09IHBvcykge1xuICAgICAgICAgICAgICBjb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvcyA+PSBsZW4pIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB2YXIgdXB0byA9IE1hdGgubWluKGxlbiwgbmV4dENoYW5nZSk7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgICAgIHZhciBlbmQgPSBwb3MgKyB0ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgIGlmICghY29sbGFwc2VkKSB7XG4gICAgICAgICAgICAgIHZhciB0b2tlblRleHQgPSBlbmQgPiB1cHRvID8gdGV4dC5zbGljZSgwLCB1cHRvIC0gcG9zKSA6IHRleHQ7XG4gICAgICAgICAgICAgIGJ1aWxkZXIuYWRkVG9rZW4oYnVpbGRlciwgdG9rZW5UZXh0LCBzdHlsZSA/IHN0eWxlICsgc3BhblN0eWxlIDogc3BhblN0eWxlLCBzcGFuU3RhcnRTdHlsZSwgcG9zICsgdG9rZW5UZXh0Lmxlbmd0aCA9PSBuZXh0Q2hhbmdlID8gc3BhbkVuZFN0eWxlIDogXCJcIiwgY3NzLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbmQgPj0gdXB0bykge1xuICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZSh1cHRvIC0gcG9zKTtcbiAgICAgICAgICAgICAgcG9zID0gdXB0bztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3MgPSBlbmQ7XG4gICAgICAgICAgICBzcGFuU3RhcnRTdHlsZSA9IFwiXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRleHQgPSBhbGxUZXh0LnNsaWNlKGF0LCBhdCA9IHN0eWxlc1tpMisrXSk7XG4gICAgICAgICAgc3R5bGUgPSBpbnRlcnByZXRUb2tlblN0eWxlKHN0eWxlc1tpMisrXSwgYnVpbGRlci5jbS5vcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoaW5zZXJ0TGluZUNvbnRlbnQsIFwiaW5zZXJ0TGluZUNvbnRlbnRcIik7XG4gICAgZnVuY3Rpb24gTGluZVZpZXcoZG9jLCBsaW5lLCBsaW5lTikge1xuICAgICAgdGhpcy5saW5lID0gbGluZTtcbiAgICAgIHRoaXMucmVzdCA9IHZpc3VhbExpbmVDb250aW51ZWQobGluZSk7XG4gICAgICB0aGlzLnNpemUgPSB0aGlzLnJlc3QgPyBsaW5lTm8obHN0KHRoaXMucmVzdCkpIC0gbGluZU4gKyAxIDogMTtcbiAgICAgIHRoaXMubm9kZSA9IHRoaXMudGV4dCA9IG51bGw7XG4gICAgICB0aGlzLmhpZGRlbiA9IGxpbmVJc0hpZGRlbihkb2MsIGxpbmUpO1xuICAgIH1cbiAgICBfX25hbWUoTGluZVZpZXcsIFwiTGluZVZpZXdcIik7XG4gICAgZnVuY3Rpb24gYnVpbGRWaWV3QXJyYXkoY20sIGZyb20sIHRvKSB7XG4gICAgICB2YXIgYXJyYXkgPSBbXSwgbmV4dFBvcztcbiAgICAgIGZvciAodmFyIHBvcyA9IGZyb207IHBvcyA8IHRvOyBwb3MgPSBuZXh0UG9zKSB7XG4gICAgICAgIHZhciB2aWV3ID0gbmV3IExpbmVWaWV3KGNtLmRvYywgZ2V0TGluZShjbS5kb2MsIHBvcyksIHBvcyk7XG4gICAgICAgIG5leHRQb3MgPSBwb3MgKyB2aWV3LnNpemU7XG4gICAgICAgIGFycmF5LnB1c2godmlldyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuICAgIF9fbmFtZShidWlsZFZpZXdBcnJheSwgXCJidWlsZFZpZXdBcnJheVwiKTtcbiAgICB2YXIgb3BlcmF0aW9uR3JvdXAgPSBudWxsO1xuICAgIGZ1bmN0aW9uIHB1c2hPcGVyYXRpb24ob3ApIHtcbiAgICAgIGlmIChvcGVyYXRpb25Hcm91cCkge1xuICAgICAgICBvcGVyYXRpb25Hcm91cC5vcHMucHVzaChvcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcC5vd25zR3JvdXAgPSBvcGVyYXRpb25Hcm91cCA9IHtcbiAgICAgICAgICBvcHM6IFtvcF0sXG4gICAgICAgICAgZGVsYXllZENhbGxiYWNrczogW11cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHB1c2hPcGVyYXRpb24sIFwicHVzaE9wZXJhdGlvblwiKTtcbiAgICBmdW5jdGlvbiBmaXJlQ2FsbGJhY2tzRm9yT3BzKGdyb3VwKSB7XG4gICAgICB2YXIgY2FsbGJhY2tzID0gZ3JvdXAuZGVsYXllZENhbGxiYWNrcywgaTIgPSAwO1xuICAgICAgZG8ge1xuICAgICAgICBmb3IgKDsgaTIgPCBjYWxsYmFja3MubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgICAgY2FsbGJhY2tzW2kyXS5jYWxsKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZ3JvdXAub3BzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgdmFyIG9wID0gZ3JvdXAub3BzW2pdO1xuICAgICAgICAgIGlmIChvcC5jdXJzb3JBY3Rpdml0eUhhbmRsZXJzKSB7XG4gICAgICAgICAgICB3aGlsZSAob3AuY3Vyc29yQWN0aXZpdHlDYWxsZWQgPCBvcC5jdXJzb3JBY3Rpdml0eUhhbmRsZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICBvcC5jdXJzb3JBY3Rpdml0eUhhbmRsZXJzW29wLmN1cnNvckFjdGl2aXR5Q2FsbGVkKytdLmNhbGwobnVsbCwgb3AuY20pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSB3aGlsZSAoaTIgPCBjYWxsYmFja3MubGVuZ3RoKTtcbiAgICB9XG4gICAgX19uYW1lKGZpcmVDYWxsYmFja3NGb3JPcHMsIFwiZmlyZUNhbGxiYWNrc0Zvck9wc1wiKTtcbiAgICBmdW5jdGlvbiBmaW5pc2hPcGVyYXRpb24ob3AsIGVuZENiKSB7XG4gICAgICB2YXIgZ3JvdXAgPSBvcC5vd25zR3JvdXA7XG4gICAgICBpZiAoIWdyb3VwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGZpcmVDYWxsYmFja3NGb3JPcHMoZ3JvdXApO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgb3BlcmF0aW9uR3JvdXAgPSBudWxsO1xuICAgICAgICBlbmRDYihncm91cCk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShmaW5pc2hPcGVyYXRpb24sIFwiZmluaXNoT3BlcmF0aW9uXCIpO1xuICAgIHZhciBvcnBoYW5EZWxheWVkQ2FsbGJhY2tzID0gbnVsbDtcbiAgICBmdW5jdGlvbiBzaWduYWxMYXRlcihlbWl0dGVyLCB0eXBlKSB7XG4gICAgICB2YXIgYXJyID0gZ2V0SGFuZGxlcnMoZW1pdHRlciwgdHlwZSk7XG4gICAgICBpZiAoIWFyci5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpLCBsaXN0O1xuICAgICAgaWYgKG9wZXJhdGlvbkdyb3VwKSB7XG4gICAgICAgIGxpc3QgPSBvcGVyYXRpb25Hcm91cC5kZWxheWVkQ2FsbGJhY2tzO1xuICAgICAgfSBlbHNlIGlmIChvcnBoYW5EZWxheWVkQ2FsbGJhY2tzKSB7XG4gICAgICAgIGxpc3QgPSBvcnBoYW5EZWxheWVkQ2FsbGJhY2tzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdCA9IG9ycGhhbkRlbGF5ZWRDYWxsYmFja3MgPSBbXTtcbiAgICAgICAgc2V0VGltZW91dChmaXJlT3JwaGFuRGVsYXllZCwgMCk7XG4gICAgICB9XG4gICAgICB2YXIgbG9vcCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oaTMpIHtcbiAgICAgICAgbGlzdC5wdXNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBhcnJbaTNdLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIFwibG9vcFwiKTtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBhcnIubGVuZ3RoOyArK2kyKVxuICAgICAgICBsb29wKGkyKTtcbiAgICB9XG4gICAgX19uYW1lKHNpZ25hbExhdGVyLCBcInNpZ25hbExhdGVyXCIpO1xuICAgIGZ1bmN0aW9uIGZpcmVPcnBoYW5EZWxheWVkKCkge1xuICAgICAgdmFyIGRlbGF5ZWQgPSBvcnBoYW5EZWxheWVkQ2FsbGJhY2tzO1xuICAgICAgb3JwaGFuRGVsYXllZENhbGxiYWNrcyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgZGVsYXllZC5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgZGVsYXllZFtpMl0oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGZpcmVPcnBoYW5EZWxheWVkLCBcImZpcmVPcnBoYW5EZWxheWVkXCIpO1xuICAgIGZ1bmN0aW9uIHVwZGF0ZUxpbmVGb3JDaGFuZ2VzKGNtLCBsaW5lVmlldywgbGluZU4sIGRpbXMpIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGluZVZpZXcuY2hhbmdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgdHlwZSA9IGxpbmVWaWV3LmNoYW5nZXNbal07XG4gICAgICAgIGlmICh0eXBlID09IFwidGV4dFwiKSB7XG4gICAgICAgICAgdXBkYXRlTGluZVRleHQoY20sIGxpbmVWaWV3KTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFwiZ3V0dGVyXCIpIHtcbiAgICAgICAgICB1cGRhdGVMaW5lR3V0dGVyKGNtLCBsaW5lVmlldywgbGluZU4sIGRpbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJjbGFzc1wiKSB7XG4gICAgICAgICAgdXBkYXRlTGluZUNsYXNzZXMoY20sIGxpbmVWaWV3KTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFwid2lkZ2V0XCIpIHtcbiAgICAgICAgICB1cGRhdGVMaW5lV2lkZ2V0cyhjbSwgbGluZVZpZXcsIGRpbXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaW5lVmlldy5jaGFuZ2VzID0gbnVsbDtcbiAgICB9XG4gICAgX19uYW1lKHVwZGF0ZUxpbmVGb3JDaGFuZ2VzLCBcInVwZGF0ZUxpbmVGb3JDaGFuZ2VzXCIpO1xuICAgIGZ1bmN0aW9uIGVuc3VyZUxpbmVXcmFwcGVkKGxpbmVWaWV3KSB7XG4gICAgICBpZiAobGluZVZpZXcubm9kZSA9PSBsaW5lVmlldy50ZXh0KSB7XG4gICAgICAgIGxpbmVWaWV3Lm5vZGUgPSBlbHQoXCJkaXZcIiwgbnVsbCwgbnVsbCwgXCJwb3NpdGlvbjogcmVsYXRpdmVcIik7XG4gICAgICAgIGlmIChsaW5lVmlldy50ZXh0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICBsaW5lVmlldy50ZXh0LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGxpbmVWaWV3Lm5vZGUsIGxpbmVWaWV3LnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGxpbmVWaWV3Lm5vZGUuYXBwZW5kQ2hpbGQobGluZVZpZXcudGV4dCk7XG4gICAgICAgIGlmIChpZSAmJiBpZV92ZXJzaW9uIDwgOCkge1xuICAgICAgICAgIGxpbmVWaWV3Lm5vZGUuc3R5bGUuekluZGV4ID0gMjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGxpbmVWaWV3Lm5vZGU7XG4gICAgfVxuICAgIF9fbmFtZShlbnN1cmVMaW5lV3JhcHBlZCwgXCJlbnN1cmVMaW5lV3JhcHBlZFwiKTtcbiAgICBmdW5jdGlvbiB1cGRhdGVMaW5lQmFja2dyb3VuZChjbSwgbGluZVZpZXcpIHtcbiAgICAgIHZhciBjbHMgPSBsaW5lVmlldy5iZ0NsYXNzID8gbGluZVZpZXcuYmdDbGFzcyArIFwiIFwiICsgKGxpbmVWaWV3LmxpbmUuYmdDbGFzcyB8fCBcIlwiKSA6IGxpbmVWaWV3LmxpbmUuYmdDbGFzcztcbiAgICAgIGlmIChjbHMpIHtcbiAgICAgICAgY2xzICs9IFwiIENvZGVNaXJyb3ItbGluZWJhY2tncm91bmRcIjtcbiAgICAgIH1cbiAgICAgIGlmIChsaW5lVmlldy5iYWNrZ3JvdW5kKSB7XG4gICAgICAgIGlmIChjbHMpIHtcbiAgICAgICAgICBsaW5lVmlldy5iYWNrZ3JvdW5kLmNsYXNzTmFtZSA9IGNscztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsaW5lVmlldy5iYWNrZ3JvdW5kLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobGluZVZpZXcuYmFja2dyb3VuZCk7XG4gICAgICAgICAgbGluZVZpZXcuYmFja2dyb3VuZCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2xzKSB7XG4gICAgICAgIHZhciB3cmFwID0gZW5zdXJlTGluZVdyYXBwZWQobGluZVZpZXcpO1xuICAgICAgICBsaW5lVmlldy5iYWNrZ3JvdW5kID0gd3JhcC5pbnNlcnRCZWZvcmUoZWx0KFwiZGl2XCIsIG51bGwsIGNscyksIHdyYXAuZmlyc3RDaGlsZCk7XG4gICAgICAgIGNtLmRpc3BsYXkuaW5wdXQuc2V0VW5lZGl0YWJsZShsaW5lVmlldy5iYWNrZ3JvdW5kKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHVwZGF0ZUxpbmVCYWNrZ3JvdW5kLCBcInVwZGF0ZUxpbmVCYWNrZ3JvdW5kXCIpO1xuICAgIGZ1bmN0aW9uIGdldExpbmVDb250ZW50KGNtLCBsaW5lVmlldykge1xuICAgICAgdmFyIGV4dCA9IGNtLmRpc3BsYXkuZXh0ZXJuYWxNZWFzdXJlZDtcbiAgICAgIGlmIChleHQgJiYgZXh0LmxpbmUgPT0gbGluZVZpZXcubGluZSkge1xuICAgICAgICBjbS5kaXNwbGF5LmV4dGVybmFsTWVhc3VyZWQgPSBudWxsO1xuICAgICAgICBsaW5lVmlldy5tZWFzdXJlID0gZXh0Lm1lYXN1cmU7XG4gICAgICAgIHJldHVybiBleHQuYnVpbHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYnVpbGRMaW5lQ29udGVudChjbSwgbGluZVZpZXcpO1xuICAgIH1cbiAgICBfX25hbWUoZ2V0TGluZUNvbnRlbnQsIFwiZ2V0TGluZUNvbnRlbnRcIik7XG4gICAgZnVuY3Rpb24gdXBkYXRlTGluZVRleHQoY20sIGxpbmVWaWV3KSB7XG4gICAgICB2YXIgY2xzID0gbGluZVZpZXcudGV4dC5jbGFzc05hbWU7XG4gICAgICB2YXIgYnVpbHQgPSBnZXRMaW5lQ29udGVudChjbSwgbGluZVZpZXcpO1xuICAgICAgaWYgKGxpbmVWaWV3LnRleHQgPT0gbGluZVZpZXcubm9kZSkge1xuICAgICAgICBsaW5lVmlldy5ub2RlID0gYnVpbHQucHJlO1xuICAgICAgfVxuICAgICAgbGluZVZpZXcudGV4dC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChidWlsdC5wcmUsIGxpbmVWaWV3LnRleHQpO1xuICAgICAgbGluZVZpZXcudGV4dCA9IGJ1aWx0LnByZTtcbiAgICAgIGlmIChidWlsdC5iZ0NsYXNzICE9IGxpbmVWaWV3LmJnQ2xhc3MgfHwgYnVpbHQudGV4dENsYXNzICE9IGxpbmVWaWV3LnRleHRDbGFzcykge1xuICAgICAgICBsaW5lVmlldy5iZ0NsYXNzID0gYnVpbHQuYmdDbGFzcztcbiAgICAgICAgbGluZVZpZXcudGV4dENsYXNzID0gYnVpbHQudGV4dENsYXNzO1xuICAgICAgICB1cGRhdGVMaW5lQ2xhc3NlcyhjbSwgbGluZVZpZXcpO1xuICAgICAgfSBlbHNlIGlmIChjbHMpIHtcbiAgICAgICAgbGluZVZpZXcudGV4dC5jbGFzc05hbWUgPSBjbHM7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZSh1cGRhdGVMaW5lVGV4dCwgXCJ1cGRhdGVMaW5lVGV4dFwiKTtcbiAgICBmdW5jdGlvbiB1cGRhdGVMaW5lQ2xhc3NlcyhjbSwgbGluZVZpZXcpIHtcbiAgICAgIHVwZGF0ZUxpbmVCYWNrZ3JvdW5kKGNtLCBsaW5lVmlldyk7XG4gICAgICBpZiAobGluZVZpZXcubGluZS53cmFwQ2xhc3MpIHtcbiAgICAgICAgZW5zdXJlTGluZVdyYXBwZWQobGluZVZpZXcpLmNsYXNzTmFtZSA9IGxpbmVWaWV3LmxpbmUud3JhcENsYXNzO1xuICAgICAgfSBlbHNlIGlmIChsaW5lVmlldy5ub2RlICE9IGxpbmVWaWV3LnRleHQpIHtcbiAgICAgICAgbGluZVZpZXcubm9kZS5jbGFzc05hbWUgPSBcIlwiO1xuICAgICAgfVxuICAgICAgdmFyIHRleHRDbGFzcyA9IGxpbmVWaWV3LnRleHRDbGFzcyA/IGxpbmVWaWV3LnRleHRDbGFzcyArIFwiIFwiICsgKGxpbmVWaWV3LmxpbmUudGV4dENsYXNzIHx8IFwiXCIpIDogbGluZVZpZXcubGluZS50ZXh0Q2xhc3M7XG4gICAgICBsaW5lVmlldy50ZXh0LmNsYXNzTmFtZSA9IHRleHRDbGFzcyB8fCBcIlwiO1xuICAgIH1cbiAgICBfX25hbWUodXBkYXRlTGluZUNsYXNzZXMsIFwidXBkYXRlTGluZUNsYXNzZXNcIik7XG4gICAgZnVuY3Rpb24gdXBkYXRlTGluZUd1dHRlcihjbSwgbGluZVZpZXcsIGxpbmVOLCBkaW1zKSB7XG4gICAgICBpZiAobGluZVZpZXcuZ3V0dGVyKSB7XG4gICAgICAgIGxpbmVWaWV3Lm5vZGUucmVtb3ZlQ2hpbGQobGluZVZpZXcuZ3V0dGVyKTtcbiAgICAgICAgbGluZVZpZXcuZ3V0dGVyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChsaW5lVmlldy5ndXR0ZXJCYWNrZ3JvdW5kKSB7XG4gICAgICAgIGxpbmVWaWV3Lm5vZGUucmVtb3ZlQ2hpbGQobGluZVZpZXcuZ3V0dGVyQmFja2dyb3VuZCk7XG4gICAgICAgIGxpbmVWaWV3Lmd1dHRlckJhY2tncm91bmQgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGxpbmVWaWV3LmxpbmUuZ3V0dGVyQ2xhc3MpIHtcbiAgICAgICAgdmFyIHdyYXAgPSBlbnN1cmVMaW5lV3JhcHBlZChsaW5lVmlldyk7XG4gICAgICAgIGxpbmVWaWV3Lmd1dHRlckJhY2tncm91bmQgPSBlbHQoXCJkaXZcIiwgbnVsbCwgXCJDb2RlTWlycm9yLWd1dHRlci1iYWNrZ3JvdW5kIFwiICsgbGluZVZpZXcubGluZS5ndXR0ZXJDbGFzcywgXCJsZWZ0OiBcIiArIChjbS5vcHRpb25zLmZpeGVkR3V0dGVyID8gZGltcy5maXhlZFBvcyA6IC1kaW1zLmd1dHRlclRvdGFsV2lkdGgpICsgXCJweDsgd2lkdGg6IFwiICsgZGltcy5ndXR0ZXJUb3RhbFdpZHRoICsgXCJweFwiKTtcbiAgICAgICAgY20uZGlzcGxheS5pbnB1dC5zZXRVbmVkaXRhYmxlKGxpbmVWaWV3Lmd1dHRlckJhY2tncm91bmQpO1xuICAgICAgICB3cmFwLmluc2VydEJlZm9yZShsaW5lVmlldy5ndXR0ZXJCYWNrZ3JvdW5kLCBsaW5lVmlldy50ZXh0KTtcbiAgICAgIH1cbiAgICAgIHZhciBtYXJrZXJzID0gbGluZVZpZXcubGluZS5ndXR0ZXJNYXJrZXJzO1xuICAgICAgaWYgKGNtLm9wdGlvbnMubGluZU51bWJlcnMgfHwgbWFya2Vycykge1xuICAgICAgICB2YXIgd3JhcCQxID0gZW5zdXJlTGluZVdyYXBwZWQobGluZVZpZXcpO1xuICAgICAgICB2YXIgZ3V0dGVyV3JhcCA9IGxpbmVWaWV3Lmd1dHRlciA9IGVsdChcImRpdlwiLCBudWxsLCBcIkNvZGVNaXJyb3ItZ3V0dGVyLXdyYXBwZXJcIiwgXCJsZWZ0OiBcIiArIChjbS5vcHRpb25zLmZpeGVkR3V0dGVyID8gZGltcy5maXhlZFBvcyA6IC1kaW1zLmd1dHRlclRvdGFsV2lkdGgpICsgXCJweFwiKTtcbiAgICAgICAgZ3V0dGVyV3JhcC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLCBcInRydWVcIik7XG4gICAgICAgIGNtLmRpc3BsYXkuaW5wdXQuc2V0VW5lZGl0YWJsZShndXR0ZXJXcmFwKTtcbiAgICAgICAgd3JhcCQxLmluc2VydEJlZm9yZShndXR0ZXJXcmFwLCBsaW5lVmlldy50ZXh0KTtcbiAgICAgICAgaWYgKGxpbmVWaWV3LmxpbmUuZ3V0dGVyQ2xhc3MpIHtcbiAgICAgICAgICBndXR0ZXJXcmFwLmNsYXNzTmFtZSArPSBcIiBcIiArIGxpbmVWaWV3LmxpbmUuZ3V0dGVyQ2xhc3M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNtLm9wdGlvbnMubGluZU51bWJlcnMgJiYgKCFtYXJrZXJzIHx8ICFtYXJrZXJzW1wiQ29kZU1pcnJvci1saW5lbnVtYmVyc1wiXSkpIHtcbiAgICAgICAgICBsaW5lVmlldy5saW5lTnVtYmVyID0gZ3V0dGVyV3JhcC5hcHBlbmRDaGlsZChlbHQoXCJkaXZcIiwgbGluZU51bWJlckZvcihjbS5vcHRpb25zLCBsaW5lTiksIFwiQ29kZU1pcnJvci1saW5lbnVtYmVyIENvZGVNaXJyb3ItZ3V0dGVyLWVsdFwiLCBcImxlZnQ6IFwiICsgZGltcy5ndXR0ZXJMZWZ0W1wiQ29kZU1pcnJvci1saW5lbnVtYmVyc1wiXSArIFwicHg7IHdpZHRoOiBcIiArIGNtLmRpc3BsYXkubGluZU51bUlubmVyV2lkdGggKyBcInB4XCIpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFya2Vycykge1xuICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgY20uZGlzcGxheS5ndXR0ZXJTcGVjcy5sZW5ndGg7ICsraykge1xuICAgICAgICAgICAgdmFyIGlkID0gY20uZGlzcGxheS5ndXR0ZXJTcGVjc1trXS5jbGFzc05hbWUsIGZvdW5kID0gbWFya2Vycy5oYXNPd25Qcm9wZXJ0eShpZCkgJiYgbWFya2Vyc1tpZF07XG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgZ3V0dGVyV3JhcC5hcHBlbmRDaGlsZChlbHQoXCJkaXZcIiwgW2ZvdW5kXSwgXCJDb2RlTWlycm9yLWd1dHRlci1lbHRcIiwgXCJsZWZ0OiBcIiArIGRpbXMuZ3V0dGVyTGVmdFtpZF0gKyBcInB4OyB3aWR0aDogXCIgKyBkaW1zLmd1dHRlcldpZHRoW2lkXSArIFwicHhcIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUodXBkYXRlTGluZUd1dHRlciwgXCJ1cGRhdGVMaW5lR3V0dGVyXCIpO1xuICAgIGZ1bmN0aW9uIHVwZGF0ZUxpbmVXaWRnZXRzKGNtLCBsaW5lVmlldywgZGltcykge1xuICAgICAgaWYgKGxpbmVWaWV3LmFsaWduYWJsZSkge1xuICAgICAgICBsaW5lVmlldy5hbGlnbmFibGUgPSBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGlzV2lkZ2V0ID0gY2xhc3NUZXN0KFwiQ29kZU1pcnJvci1saW5ld2lkZ2V0XCIpO1xuICAgICAgZm9yICh2YXIgbm9kZSA9IGxpbmVWaWV3Lm5vZGUuZmlyc3RDaGlsZCwgbmV4dCA9IHZvaWQgMDsgbm9kZTsgbm9kZSA9IG5leHQpIHtcbiAgICAgICAgbmV4dCA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgIGlmIChpc1dpZGdldC50ZXN0KG5vZGUuY2xhc3NOYW1lKSkge1xuICAgICAgICAgIGxpbmVWaWV3Lm5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGluc2VydExpbmVXaWRnZXRzKGNtLCBsaW5lVmlldywgZGltcyk7XG4gICAgfVxuICAgIF9fbmFtZSh1cGRhdGVMaW5lV2lkZ2V0cywgXCJ1cGRhdGVMaW5lV2lkZ2V0c1wiKTtcbiAgICBmdW5jdGlvbiBidWlsZExpbmVFbGVtZW50KGNtLCBsaW5lVmlldywgbGluZU4sIGRpbXMpIHtcbiAgICAgIHZhciBidWlsdCA9IGdldExpbmVDb250ZW50KGNtLCBsaW5lVmlldyk7XG4gICAgICBsaW5lVmlldy50ZXh0ID0gbGluZVZpZXcubm9kZSA9IGJ1aWx0LnByZTtcbiAgICAgIGlmIChidWlsdC5iZ0NsYXNzKSB7XG4gICAgICAgIGxpbmVWaWV3LmJnQ2xhc3MgPSBidWlsdC5iZ0NsYXNzO1xuICAgICAgfVxuICAgICAgaWYgKGJ1aWx0LnRleHRDbGFzcykge1xuICAgICAgICBsaW5lVmlldy50ZXh0Q2xhc3MgPSBidWlsdC50ZXh0Q2xhc3M7XG4gICAgICB9XG4gICAgICB1cGRhdGVMaW5lQ2xhc3NlcyhjbSwgbGluZVZpZXcpO1xuICAgICAgdXBkYXRlTGluZUd1dHRlcihjbSwgbGluZVZpZXcsIGxpbmVOLCBkaW1zKTtcbiAgICAgIGluc2VydExpbmVXaWRnZXRzKGNtLCBsaW5lVmlldywgZGltcyk7XG4gICAgICByZXR1cm4gbGluZVZpZXcubm9kZTtcbiAgICB9XG4gICAgX19uYW1lKGJ1aWxkTGluZUVsZW1lbnQsIFwiYnVpbGRMaW5lRWxlbWVudFwiKTtcbiAgICBmdW5jdGlvbiBpbnNlcnRMaW5lV2lkZ2V0cyhjbSwgbGluZVZpZXcsIGRpbXMpIHtcbiAgICAgIGluc2VydExpbmVXaWRnZXRzRm9yKGNtLCBsaW5lVmlldy5saW5lLCBsaW5lVmlldywgZGltcywgdHJ1ZSk7XG4gICAgICBpZiAobGluZVZpZXcucmVzdCkge1xuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgbGluZVZpZXcucmVzdC5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICBpbnNlcnRMaW5lV2lkZ2V0c0ZvcihjbSwgbGluZVZpZXcucmVzdFtpMl0sIGxpbmVWaWV3LCBkaW1zLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGluc2VydExpbmVXaWRnZXRzLCBcImluc2VydExpbmVXaWRnZXRzXCIpO1xuICAgIGZ1bmN0aW9uIGluc2VydExpbmVXaWRnZXRzRm9yKGNtLCBsaW5lLCBsaW5lVmlldywgZGltcywgYWxsb3dBYm92ZSkge1xuICAgICAgaWYgKCFsaW5lLndpZGdldHMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHdyYXAgPSBlbnN1cmVMaW5lV3JhcHBlZChsaW5lVmlldyk7XG4gICAgICBmb3IgKHZhciBpMiA9IDAsIHdzID0gbGluZS53aWRnZXRzOyBpMiA8IHdzLmxlbmd0aDsgKytpMikge1xuICAgICAgICB2YXIgd2lkZ2V0ID0gd3NbaTJdLCBub2RlID0gZWx0KFwiZGl2XCIsIFt3aWRnZXQubm9kZV0sIFwiQ29kZU1pcnJvci1saW5ld2lkZ2V0XCIgKyAod2lkZ2V0LmNsYXNzTmFtZSA/IFwiIFwiICsgd2lkZ2V0LmNsYXNzTmFtZSA6IFwiXCIpKTtcbiAgICAgICAgaWYgKCF3aWRnZXQuaGFuZGxlTW91c2VFdmVudHMpIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImNtLWlnbm9yZS1ldmVudHNcIiwgXCJ0cnVlXCIpO1xuICAgICAgICB9XG4gICAgICAgIHBvc2l0aW9uTGluZVdpZGdldCh3aWRnZXQsIG5vZGUsIGxpbmVWaWV3LCBkaW1zKTtcbiAgICAgICAgY20uZGlzcGxheS5pbnB1dC5zZXRVbmVkaXRhYmxlKG5vZGUpO1xuICAgICAgICBpZiAoYWxsb3dBYm92ZSAmJiB3aWRnZXQuYWJvdmUpIHtcbiAgICAgICAgICB3cmFwLmluc2VydEJlZm9yZShub2RlLCBsaW5lVmlldy5ndXR0ZXIgfHwgbGluZVZpZXcudGV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JhcC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgICAgfVxuICAgICAgICBzaWduYWxMYXRlcih3aWRnZXQsIFwicmVkcmF3XCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoaW5zZXJ0TGluZVdpZGdldHNGb3IsIFwiaW5zZXJ0TGluZVdpZGdldHNGb3JcIik7XG4gICAgZnVuY3Rpb24gcG9zaXRpb25MaW5lV2lkZ2V0KHdpZGdldCwgbm9kZSwgbGluZVZpZXcsIGRpbXMpIHtcbiAgICAgIGlmICh3aWRnZXQubm9IU2Nyb2xsKSB7XG4gICAgICAgIChsaW5lVmlldy5hbGlnbmFibGUgfHwgKGxpbmVWaWV3LmFsaWduYWJsZSA9IFtdKSkucHVzaChub2RlKTtcbiAgICAgICAgdmFyIHdpZHRoID0gZGltcy53cmFwcGVyV2lkdGg7XG4gICAgICAgIG5vZGUuc3R5bGUubGVmdCA9IGRpbXMuZml4ZWRQb3MgKyBcInB4XCI7XG4gICAgICAgIGlmICghd2lkZ2V0LmNvdmVyR3V0dGVyKSB7XG4gICAgICAgICAgd2lkdGggLT0gZGltcy5ndXR0ZXJUb3RhbFdpZHRoO1xuICAgICAgICAgIG5vZGUuc3R5bGUucGFkZGluZ0xlZnQgPSBkaW1zLmd1dHRlclRvdGFsV2lkdGggKyBcInB4XCI7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5zdHlsZS53aWR0aCA9IHdpZHRoICsgXCJweFwiO1xuICAgICAgfVxuICAgICAgaWYgKHdpZGdldC5jb3Zlckd1dHRlcikge1xuICAgICAgICBub2RlLnN0eWxlLnpJbmRleCA9IDU7XG4gICAgICAgIG5vZGUuc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG4gICAgICAgIGlmICghd2lkZ2V0Lm5vSFNjcm9sbCkge1xuICAgICAgICAgIG5vZGUuc3R5bGUubWFyZ2luTGVmdCA9IC1kaW1zLmd1dHRlclRvdGFsV2lkdGggKyBcInB4XCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHBvc2l0aW9uTGluZVdpZGdldCwgXCJwb3NpdGlvbkxpbmVXaWRnZXRcIik7XG4gICAgZnVuY3Rpb24gd2lkZ2V0SGVpZ2h0KHdpZGdldCkge1xuICAgICAgaWYgKHdpZGdldC5oZWlnaHQgIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gd2lkZ2V0LmhlaWdodDtcbiAgICAgIH1cbiAgICAgIHZhciBjbSA9IHdpZGdldC5kb2MuY207XG4gICAgICBpZiAoIWNtKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgaWYgKCFjb250YWlucyhkb2N1bWVudC5ib2R5LCB3aWRnZXQubm9kZSkpIHtcbiAgICAgICAgdmFyIHBhcmVudFN0eWxlID0gXCJwb3NpdGlvbjogcmVsYXRpdmU7XCI7XG4gICAgICAgIGlmICh3aWRnZXQuY292ZXJHdXR0ZXIpIHtcbiAgICAgICAgICBwYXJlbnRTdHlsZSArPSBcIm1hcmdpbi1sZWZ0OiAtXCIgKyBjbS5kaXNwbGF5Lmd1dHRlcnMub2Zmc2V0V2lkdGggKyBcInB4O1wiO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3aWRnZXQubm9IU2Nyb2xsKSB7XG4gICAgICAgICAgcGFyZW50U3R5bGUgKz0gXCJ3aWR0aDogXCIgKyBjbS5kaXNwbGF5LndyYXBwZXIuY2xpZW50V2lkdGggKyBcInB4O1wiO1xuICAgICAgICB9XG4gICAgICAgIHJlbW92ZUNoaWxkcmVuQW5kQWRkKGNtLmRpc3BsYXkubWVhc3VyZSwgZWx0KFwiZGl2XCIsIFt3aWRnZXQubm9kZV0sIG51bGwsIHBhcmVudFN0eWxlKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd2lkZ2V0LmhlaWdodCA9IHdpZGdldC5ub2RlLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0O1xuICAgIH1cbiAgICBfX25hbWUod2lkZ2V0SGVpZ2h0LCBcIndpZGdldEhlaWdodFwiKTtcbiAgICBmdW5jdGlvbiBldmVudEluV2lkZ2V0KGRpc3BsYXksIGUpIHtcbiAgICAgIGZvciAodmFyIG4gPSBlX3RhcmdldChlKTsgbiAhPSBkaXNwbGF5LndyYXBwZXI7IG4gPSBuLnBhcmVudE5vZGUpIHtcbiAgICAgICAgaWYgKCFuIHx8IG4ubm9kZVR5cGUgPT0gMSAmJiBuLmdldEF0dHJpYnV0ZShcImNtLWlnbm9yZS1ldmVudHNcIikgPT0gXCJ0cnVlXCIgfHwgbi5wYXJlbnROb2RlID09IGRpc3BsYXkuc2l6ZXIgJiYgbiAhPSBkaXNwbGF5Lm1vdmVyKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGV2ZW50SW5XaWRnZXQsIFwiZXZlbnRJbldpZGdldFwiKTtcbiAgICBmdW5jdGlvbiBwYWRkaW5nVG9wKGRpc3BsYXkpIHtcbiAgICAgIHJldHVybiBkaXNwbGF5LmxpbmVTcGFjZS5vZmZzZXRUb3A7XG4gICAgfVxuICAgIF9fbmFtZShwYWRkaW5nVG9wLCBcInBhZGRpbmdUb3BcIik7XG4gICAgZnVuY3Rpb24gcGFkZGluZ1ZlcnQoZGlzcGxheSkge1xuICAgICAgcmV0dXJuIGRpc3BsYXkubW92ZXIub2Zmc2V0SGVpZ2h0IC0gZGlzcGxheS5saW5lU3BhY2Uub2Zmc2V0SGVpZ2h0O1xuICAgIH1cbiAgICBfX25hbWUocGFkZGluZ1ZlcnQsIFwicGFkZGluZ1ZlcnRcIik7XG4gICAgZnVuY3Rpb24gcGFkZGluZ0goZGlzcGxheSkge1xuICAgICAgaWYgKGRpc3BsYXkuY2FjaGVkUGFkZGluZ0gpIHtcbiAgICAgICAgcmV0dXJuIGRpc3BsYXkuY2FjaGVkUGFkZGluZ0g7XG4gICAgICB9XG4gICAgICB2YXIgZSA9IHJlbW92ZUNoaWxkcmVuQW5kQWRkKGRpc3BsYXkubWVhc3VyZSwgZWx0KFwicHJlXCIsIFwieFwiLCBcIkNvZGVNaXJyb3ItbGluZS1saWtlXCIpKTtcbiAgICAgIHZhciBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlID8gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkgOiBlLmN1cnJlbnRTdHlsZTtcbiAgICAgIHZhciBkYXRhID0geyBsZWZ0OiBwYXJzZUludChzdHlsZS5wYWRkaW5nTGVmdCksIHJpZ2h0OiBwYXJzZUludChzdHlsZS5wYWRkaW5nUmlnaHQpIH07XG4gICAgICBpZiAoIWlzTmFOKGRhdGEubGVmdCkgJiYgIWlzTmFOKGRhdGEucmlnaHQpKSB7XG4gICAgICAgIGRpc3BsYXkuY2FjaGVkUGFkZGluZ0ggPSBkYXRhO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIF9fbmFtZShwYWRkaW5nSCwgXCJwYWRkaW5nSFwiKTtcbiAgICBmdW5jdGlvbiBzY3JvbGxHYXAoY20pIHtcbiAgICAgIHJldHVybiBzY3JvbGxlckdhcCAtIGNtLmRpc3BsYXkubmF0aXZlQmFyV2lkdGg7XG4gICAgfVxuICAgIF9fbmFtZShzY3JvbGxHYXAsIFwic2Nyb2xsR2FwXCIpO1xuICAgIGZ1bmN0aW9uIGRpc3BsYXlXaWR0aChjbSkge1xuICAgICAgcmV0dXJuIGNtLmRpc3BsYXkuc2Nyb2xsZXIuY2xpZW50V2lkdGggLSBzY3JvbGxHYXAoY20pIC0gY20uZGlzcGxheS5iYXJXaWR0aDtcbiAgICB9XG4gICAgX19uYW1lKGRpc3BsYXlXaWR0aCwgXCJkaXNwbGF5V2lkdGhcIik7XG4gICAgZnVuY3Rpb24gZGlzcGxheUhlaWdodChjbSkge1xuICAgICAgcmV0dXJuIGNtLmRpc3BsYXkuc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC0gc2Nyb2xsR2FwKGNtKSAtIGNtLmRpc3BsYXkuYmFySGVpZ2h0O1xuICAgIH1cbiAgICBfX25hbWUoZGlzcGxheUhlaWdodCwgXCJkaXNwbGF5SGVpZ2h0XCIpO1xuICAgIGZ1bmN0aW9uIGVuc3VyZUxpbmVIZWlnaHRzKGNtLCBsaW5lVmlldywgcmVjdCkge1xuICAgICAgdmFyIHdyYXBwaW5nID0gY20ub3B0aW9ucy5saW5lV3JhcHBpbmc7XG4gICAgICB2YXIgY3VyV2lkdGggPSB3cmFwcGluZyAmJiBkaXNwbGF5V2lkdGgoY20pO1xuICAgICAgaWYgKCFsaW5lVmlldy5tZWFzdXJlLmhlaWdodHMgfHwgd3JhcHBpbmcgJiYgbGluZVZpZXcubWVhc3VyZS53aWR0aCAhPSBjdXJXaWR0aCkge1xuICAgICAgICB2YXIgaGVpZ2h0cyA9IGxpbmVWaWV3Lm1lYXN1cmUuaGVpZ2h0cyA9IFtdO1xuICAgICAgICBpZiAod3JhcHBpbmcpIHtcbiAgICAgICAgICBsaW5lVmlldy5tZWFzdXJlLndpZHRoID0gY3VyV2lkdGg7XG4gICAgICAgICAgdmFyIHJlY3RzID0gbGluZVZpZXcudGV4dC5maXJzdENoaWxkLmdldENsaWVudFJlY3RzKCk7XG4gICAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHJlY3RzLmxlbmd0aCAtIDE7IGkyKyspIHtcbiAgICAgICAgICAgIHZhciBjdXIgPSByZWN0c1tpMl0sIG5leHQgPSByZWN0c1tpMiArIDFdO1xuICAgICAgICAgICAgaWYgKE1hdGguYWJzKGN1ci5ib3R0b20gLSBuZXh0LmJvdHRvbSkgPiAyKSB7XG4gICAgICAgICAgICAgIGhlaWdodHMucHVzaCgoY3VyLmJvdHRvbSArIG5leHQudG9wKSAvIDIgLSByZWN0LnRvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGhlaWdodHMucHVzaChyZWN0LmJvdHRvbSAtIHJlY3QudG9wKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGVuc3VyZUxpbmVIZWlnaHRzLCBcImVuc3VyZUxpbmVIZWlnaHRzXCIpO1xuICAgIGZ1bmN0aW9uIG1hcEZyb21MaW5lVmlldyhsaW5lVmlldywgbGluZSwgbGluZU4pIHtcbiAgICAgIGlmIChsaW5lVmlldy5saW5lID09IGxpbmUpIHtcbiAgICAgICAgcmV0dXJuIHsgbWFwOiBsaW5lVmlldy5tZWFzdXJlLm1hcCwgY2FjaGU6IGxpbmVWaWV3Lm1lYXN1cmUuY2FjaGUgfTtcbiAgICAgIH1cbiAgICAgIGlmIChsaW5lVmlldy5yZXN0KSB7XG4gICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBsaW5lVmlldy5yZXN0Lmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgIGlmIChsaW5lVmlldy5yZXN0W2kyXSA9PSBsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4geyBtYXA6IGxpbmVWaWV3Lm1lYXN1cmUubWFwc1tpMl0sIGNhY2hlOiBsaW5lVmlldy5tZWFzdXJlLmNhY2hlc1tpMl0gfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSQxMiA9IDA7IGkkMTIgPCBsaW5lVmlldy5yZXN0Lmxlbmd0aDsgaSQxMisrKSB7XG4gICAgICAgICAgaWYgKGxpbmVObyhsaW5lVmlldy5yZXN0W2kkMTJdKSA+IGxpbmVOKSB7XG4gICAgICAgICAgICByZXR1cm4geyBtYXA6IGxpbmVWaWV3Lm1lYXN1cmUubWFwc1tpJDEyXSwgY2FjaGU6IGxpbmVWaWV3Lm1lYXN1cmUuY2FjaGVzW2kkMTJdLCBiZWZvcmU6IHRydWUgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKG1hcEZyb21MaW5lVmlldywgXCJtYXBGcm9tTGluZVZpZXdcIik7XG4gICAgZnVuY3Rpb24gdXBkYXRlRXh0ZXJuYWxNZWFzdXJlbWVudChjbSwgbGluZSkge1xuICAgICAgbGluZSA9IHZpc3VhbExpbmUobGluZSk7XG4gICAgICB2YXIgbGluZU4gPSBsaW5lTm8obGluZSk7XG4gICAgICB2YXIgdmlldyA9IGNtLmRpc3BsYXkuZXh0ZXJuYWxNZWFzdXJlZCA9IG5ldyBMaW5lVmlldyhjbS5kb2MsIGxpbmUsIGxpbmVOKTtcbiAgICAgIHZpZXcubGluZU4gPSBsaW5lTjtcbiAgICAgIHZhciBidWlsdCA9IHZpZXcuYnVpbHQgPSBidWlsZExpbmVDb250ZW50KGNtLCB2aWV3KTtcbiAgICAgIHZpZXcudGV4dCA9IGJ1aWx0LnByZTtcbiAgICAgIHJlbW92ZUNoaWxkcmVuQW5kQWRkKGNtLmRpc3BsYXkubGluZU1lYXN1cmUsIGJ1aWx0LnByZSk7XG4gICAgICByZXR1cm4gdmlldztcbiAgICB9XG4gICAgX19uYW1lKHVwZGF0ZUV4dGVybmFsTWVhc3VyZW1lbnQsIFwidXBkYXRlRXh0ZXJuYWxNZWFzdXJlbWVudFwiKTtcbiAgICBmdW5jdGlvbiBtZWFzdXJlQ2hhcihjbSwgbGluZSwgY2gsIGJpYXMpIHtcbiAgICAgIHJldHVybiBtZWFzdXJlQ2hhclByZXBhcmVkKGNtLCBwcmVwYXJlTWVhc3VyZUZvckxpbmUoY20sIGxpbmUpLCBjaCwgYmlhcyk7XG4gICAgfVxuICAgIF9fbmFtZShtZWFzdXJlQ2hhciwgXCJtZWFzdXJlQ2hhclwiKTtcbiAgICBmdW5jdGlvbiBmaW5kVmlld0ZvckxpbmUoY20sIGxpbmVOKSB7XG4gICAgICBpZiAobGluZU4gPj0gY20uZGlzcGxheS52aWV3RnJvbSAmJiBsaW5lTiA8IGNtLmRpc3BsYXkudmlld1RvKSB7XG4gICAgICAgIHJldHVybiBjbS5kaXNwbGF5LnZpZXdbZmluZFZpZXdJbmRleChjbSwgbGluZU4pXTtcbiAgICAgIH1cbiAgICAgIHZhciBleHQgPSBjbS5kaXNwbGF5LmV4dGVybmFsTWVhc3VyZWQ7XG4gICAgICBpZiAoZXh0ICYmIGxpbmVOID49IGV4dC5saW5lTiAmJiBsaW5lTiA8IGV4dC5saW5lTiArIGV4dC5zaXplKSB7XG4gICAgICAgIHJldHVybiBleHQ7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShmaW5kVmlld0ZvckxpbmUsIFwiZmluZFZpZXdGb3JMaW5lXCIpO1xuICAgIGZ1bmN0aW9uIHByZXBhcmVNZWFzdXJlRm9yTGluZShjbSwgbGluZSkge1xuICAgICAgdmFyIGxpbmVOID0gbGluZU5vKGxpbmUpO1xuICAgICAgdmFyIHZpZXcgPSBmaW5kVmlld0ZvckxpbmUoY20sIGxpbmVOKTtcbiAgICAgIGlmICh2aWV3ICYmICF2aWV3LnRleHQpIHtcbiAgICAgICAgdmlldyA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKHZpZXcgJiYgdmlldy5jaGFuZ2VzKSB7XG4gICAgICAgIHVwZGF0ZUxpbmVGb3JDaGFuZ2VzKGNtLCB2aWV3LCBsaW5lTiwgZ2V0RGltZW5zaW9ucyhjbSkpO1xuICAgICAgICBjbS5jdXJPcC5mb3JjZVVwZGF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoIXZpZXcpIHtcbiAgICAgICAgdmlldyA9IHVwZGF0ZUV4dGVybmFsTWVhc3VyZW1lbnQoY20sIGxpbmUpO1xuICAgICAgfVxuICAgICAgdmFyIGluZm8gPSBtYXBGcm9tTGluZVZpZXcodmlldywgbGluZSwgbGluZU4pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGluZSxcbiAgICAgICAgdmlldyxcbiAgICAgICAgcmVjdDogbnVsbCxcbiAgICAgICAgbWFwOiBpbmZvLm1hcCxcbiAgICAgICAgY2FjaGU6IGluZm8uY2FjaGUsXG4gICAgICAgIGJlZm9yZTogaW5mby5iZWZvcmUsXG4gICAgICAgIGhhc0hlaWdodHM6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgICBfX25hbWUocHJlcGFyZU1lYXN1cmVGb3JMaW5lLCBcInByZXBhcmVNZWFzdXJlRm9yTGluZVwiKTtcbiAgICBmdW5jdGlvbiBtZWFzdXJlQ2hhclByZXBhcmVkKGNtLCBwcmVwYXJlZCwgY2gsIGJpYXMsIHZhckhlaWdodCkge1xuICAgICAgaWYgKHByZXBhcmVkLmJlZm9yZSkge1xuICAgICAgICBjaCA9IC0xO1xuICAgICAgfVxuICAgICAgdmFyIGtleSA9IGNoICsgKGJpYXMgfHwgXCJcIiksIGZvdW5kO1xuICAgICAgaWYgKHByZXBhcmVkLmNhY2hlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgZm91bmQgPSBwcmVwYXJlZC5jYWNoZVtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFwcmVwYXJlZC5yZWN0KSB7XG4gICAgICAgICAgcHJlcGFyZWQucmVjdCA9IHByZXBhcmVkLnZpZXcudGV4dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXByZXBhcmVkLmhhc0hlaWdodHMpIHtcbiAgICAgICAgICBlbnN1cmVMaW5lSGVpZ2h0cyhjbSwgcHJlcGFyZWQudmlldywgcHJlcGFyZWQucmVjdCk7XG4gICAgICAgICAgcHJlcGFyZWQuaGFzSGVpZ2h0cyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZm91bmQgPSBtZWFzdXJlQ2hhcklubmVyKGNtLCBwcmVwYXJlZCwgY2gsIGJpYXMpO1xuICAgICAgICBpZiAoIWZvdW5kLmJvZ3VzKSB7XG4gICAgICAgICAgcHJlcGFyZWQuY2FjaGVba2V5XSA9IGZvdW5kO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiBmb3VuZC5sZWZ0LFxuICAgICAgICByaWdodDogZm91bmQucmlnaHQsXG4gICAgICAgIHRvcDogdmFySGVpZ2h0ID8gZm91bmQucnRvcCA6IGZvdW5kLnRvcCxcbiAgICAgICAgYm90dG9tOiB2YXJIZWlnaHQgPyBmb3VuZC5yYm90dG9tIDogZm91bmQuYm90dG9tXG4gICAgICB9O1xuICAgIH1cbiAgICBfX25hbWUobWVhc3VyZUNoYXJQcmVwYXJlZCwgXCJtZWFzdXJlQ2hhclByZXBhcmVkXCIpO1xuICAgIHZhciBudWxsUmVjdCA9IHsgbGVmdDogMCwgcmlnaHQ6IDAsIHRvcDogMCwgYm90dG9tOiAwIH07XG4gICAgZnVuY3Rpb24gbm9kZUFuZE9mZnNldEluTGluZU1hcChtYXAyLCBjaCwgYmlhcykge1xuICAgICAgdmFyIG5vZGUsIHN0YXJ0LCBlbmQsIGNvbGxhcHNlLCBtU3RhcnQsIG1FbmQ7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgbWFwMi5sZW5ndGg7IGkyICs9IDMpIHtcbiAgICAgICAgbVN0YXJ0ID0gbWFwMltpMl07XG4gICAgICAgIG1FbmQgPSBtYXAyW2kyICsgMV07XG4gICAgICAgIGlmIChjaCA8IG1TdGFydCkge1xuICAgICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgICBlbmQgPSAxO1xuICAgICAgICAgIGNvbGxhcHNlID0gXCJsZWZ0XCI7XG4gICAgICAgIH0gZWxzZSBpZiAoY2ggPCBtRW5kKSB7XG4gICAgICAgICAgc3RhcnQgPSBjaCAtIG1TdGFydDtcbiAgICAgICAgICBlbmQgPSBzdGFydCArIDE7XG4gICAgICAgIH0gZWxzZSBpZiAoaTIgPT0gbWFwMi5sZW5ndGggLSAzIHx8IGNoID09IG1FbmQgJiYgbWFwMltpMiArIDNdID4gY2gpIHtcbiAgICAgICAgICBlbmQgPSBtRW5kIC0gbVN0YXJ0O1xuICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gMTtcbiAgICAgICAgICBpZiAoY2ggPj0gbUVuZCkge1xuICAgICAgICAgICAgY29sbGFwc2UgPSBcInJpZ2h0XCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydCAhPSBudWxsKSB7XG4gICAgICAgICAgbm9kZSA9IG1hcDJbaTIgKyAyXTtcbiAgICAgICAgICBpZiAobVN0YXJ0ID09IG1FbmQgJiYgYmlhcyA9PSAobm9kZS5pbnNlcnRMZWZ0ID8gXCJsZWZ0XCIgOiBcInJpZ2h0XCIpKSB7XG4gICAgICAgICAgICBjb2xsYXBzZSA9IGJpYXM7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChiaWFzID09IFwibGVmdFwiICYmIHN0YXJ0ID09IDApIHtcbiAgICAgICAgICAgIHdoaWxlIChpMiAmJiBtYXAyW2kyIC0gMl0gPT0gbWFwMltpMiAtIDNdICYmIG1hcDJbaTIgLSAxXS5pbnNlcnRMZWZ0KSB7XG4gICAgICAgICAgICAgIG5vZGUgPSBtYXAyWyhpMiAtPSAzKSArIDJdO1xuICAgICAgICAgICAgICBjb2xsYXBzZSA9IFwibGVmdFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYmlhcyA9PSBcInJpZ2h0XCIgJiYgc3RhcnQgPT0gbUVuZCAtIG1TdGFydCkge1xuICAgICAgICAgICAgd2hpbGUgKGkyIDwgbWFwMi5sZW5ndGggLSAzICYmIG1hcDJbaTIgKyAzXSA9PSBtYXAyW2kyICsgNF0gJiYgIW1hcDJbaTIgKyA1XS5pbnNlcnRMZWZ0KSB7XG4gICAgICAgICAgICAgIG5vZGUgPSBtYXAyWyhpMiArPSAzKSArIDJdO1xuICAgICAgICAgICAgICBjb2xsYXBzZSA9IFwicmlnaHRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG5vZGUsIHN0YXJ0LCBlbmQsIGNvbGxhcHNlLCBjb3ZlclN0YXJ0OiBtU3RhcnQsIGNvdmVyRW5kOiBtRW5kIH07XG4gICAgfVxuICAgIF9fbmFtZShub2RlQW5kT2Zmc2V0SW5MaW5lTWFwLCBcIm5vZGVBbmRPZmZzZXRJbkxpbmVNYXBcIik7XG4gICAgZnVuY3Rpb24gZ2V0VXNlZnVsUmVjdChyZWN0cywgYmlhcykge1xuICAgICAgdmFyIHJlY3QgPSBudWxsUmVjdDtcbiAgICAgIGlmIChiaWFzID09IFwibGVmdFwiKSB7XG4gICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCByZWN0cy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICBpZiAoKHJlY3QgPSByZWN0c1tpMl0pLmxlZnQgIT0gcmVjdC5yaWdodCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpJDEyID0gcmVjdHMubGVuZ3RoIC0gMTsgaSQxMiA+PSAwOyBpJDEyLS0pIHtcbiAgICAgICAgICBpZiAoKHJlY3QgPSByZWN0c1tpJDEyXSkubGVmdCAhPSByZWN0LnJpZ2h0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZWN0O1xuICAgIH1cbiAgICBfX25hbWUoZ2V0VXNlZnVsUmVjdCwgXCJnZXRVc2VmdWxSZWN0XCIpO1xuICAgIGZ1bmN0aW9uIG1lYXN1cmVDaGFySW5uZXIoY20sIHByZXBhcmVkLCBjaCwgYmlhcykge1xuICAgICAgdmFyIHBsYWNlID0gbm9kZUFuZE9mZnNldEluTGluZU1hcChwcmVwYXJlZC5tYXAsIGNoLCBiaWFzKTtcbiAgICAgIHZhciBub2RlID0gcGxhY2Uubm9kZSwgc3RhcnQgPSBwbGFjZS5zdGFydCwgZW5kID0gcGxhY2UuZW5kLCBjb2xsYXBzZSA9IHBsYWNlLmNvbGxhcHNlO1xuICAgICAgdmFyIHJlY3Q7XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKSB7XG4gICAgICAgIGZvciAodmFyIGkkMTIgPSAwOyBpJDEyIDwgNDsgaSQxMisrKSB7XG4gICAgICAgICAgd2hpbGUgKHN0YXJ0ICYmIGlzRXh0ZW5kaW5nQ2hhcihwcmVwYXJlZC5saW5lLnRleHQuY2hhckF0KHBsYWNlLmNvdmVyU3RhcnQgKyBzdGFydCkpKSB7XG4gICAgICAgICAgICAtLXN0YXJ0O1xuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAocGxhY2UuY292ZXJTdGFydCArIGVuZCA8IHBsYWNlLmNvdmVyRW5kICYmIGlzRXh0ZW5kaW5nQ2hhcihwcmVwYXJlZC5saW5lLnRleHQuY2hhckF0KHBsYWNlLmNvdmVyU3RhcnQgKyBlbmQpKSkge1xuICAgICAgICAgICAgKytlbmQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpZSAmJiBpZV92ZXJzaW9uIDwgOSAmJiBzdGFydCA9PSAwICYmIGVuZCA9PSBwbGFjZS5jb3ZlckVuZCAtIHBsYWNlLmNvdmVyU3RhcnQpIHtcbiAgICAgICAgICAgIHJlY3QgPSBub2RlLnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlY3QgPSBnZXRVc2VmdWxSZWN0KHJhbmdlKG5vZGUsIHN0YXJ0LCBlbmQpLmdldENsaWVudFJlY3RzKCksIGJpYXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVjdC5sZWZ0IHx8IHJlY3QucmlnaHQgfHwgc3RhcnQgPT0gMCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVuZCA9IHN0YXJ0O1xuICAgICAgICAgIHN0YXJ0ID0gc3RhcnQgLSAxO1xuICAgICAgICAgIGNvbGxhcHNlID0gXCJyaWdodFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpZSAmJiBpZV92ZXJzaW9uIDwgMTEpIHtcbiAgICAgICAgICByZWN0ID0gbWF5YmVVcGRhdGVSZWN0Rm9yWm9vbWluZyhjbS5kaXNwbGF5Lm1lYXN1cmUsIHJlY3QpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc3RhcnQgPiAwKSB7XG4gICAgICAgICAgY29sbGFwc2UgPSBiaWFzID0gXCJyaWdodFwiO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZWN0cztcbiAgICAgICAgaWYgKGNtLm9wdGlvbnMubGluZVdyYXBwaW5nICYmIChyZWN0cyA9IG5vZGUuZ2V0Q2xpZW50UmVjdHMoKSkubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHJlY3QgPSByZWN0c1tiaWFzID09IFwicmlnaHRcIiA/IHJlY3RzLmxlbmd0aCAtIDEgOiAwXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCA5ICYmICFzdGFydCAmJiAoIXJlY3QgfHwgIXJlY3QubGVmdCAmJiAhcmVjdC5yaWdodCkpIHtcbiAgICAgICAgdmFyIHJTcGFuID0gbm9kZS5wYXJlbnROb2RlLmdldENsaWVudFJlY3RzKClbMF07XG4gICAgICAgIGlmIChyU3Bhbikge1xuICAgICAgICAgIHJlY3QgPSB7IGxlZnQ6IHJTcGFuLmxlZnQsIHJpZ2h0OiByU3Bhbi5sZWZ0ICsgY2hhcldpZHRoKGNtLmRpc3BsYXkpLCB0b3A6IHJTcGFuLnRvcCwgYm90dG9tOiByU3Bhbi5ib3R0b20gfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWN0ID0gbnVsbFJlY3Q7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBydG9wID0gcmVjdC50b3AgLSBwcmVwYXJlZC5yZWN0LnRvcCwgcmJvdCA9IHJlY3QuYm90dG9tIC0gcHJlcGFyZWQucmVjdC50b3A7XG4gICAgICB2YXIgbWlkID0gKHJ0b3AgKyByYm90KSAvIDI7XG4gICAgICB2YXIgaGVpZ2h0cyA9IHByZXBhcmVkLnZpZXcubWVhc3VyZS5oZWlnaHRzO1xuICAgICAgdmFyIGkyID0gMDtcbiAgICAgIGZvciAoOyBpMiA8IGhlaWdodHMubGVuZ3RoIC0gMTsgaTIrKykge1xuICAgICAgICBpZiAobWlkIDwgaGVpZ2h0c1tpMl0pIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIHRvcCA9IGkyID8gaGVpZ2h0c1tpMiAtIDFdIDogMCwgYm90ID0gaGVpZ2h0c1tpMl07XG4gICAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgICBsZWZ0OiAoY29sbGFwc2UgPT0gXCJyaWdodFwiID8gcmVjdC5yaWdodCA6IHJlY3QubGVmdCkgLSBwcmVwYXJlZC5yZWN0LmxlZnQsXG4gICAgICAgIHJpZ2h0OiAoY29sbGFwc2UgPT0gXCJsZWZ0XCIgPyByZWN0LmxlZnQgOiByZWN0LnJpZ2h0KSAtIHByZXBhcmVkLnJlY3QubGVmdCxcbiAgICAgICAgdG9wLFxuICAgICAgICBib3R0b206IGJvdFxuICAgICAgfTtcbiAgICAgIGlmICghcmVjdC5sZWZ0ICYmICFyZWN0LnJpZ2h0KSB7XG4gICAgICAgIHJlc3VsdC5ib2d1cyA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoIWNtLm9wdGlvbnMuc2luZ2xlQ3Vyc29ySGVpZ2h0UGVyTGluZSkge1xuICAgICAgICByZXN1bHQucnRvcCA9IHJ0b3A7XG4gICAgICAgIHJlc3VsdC5yYm90dG9tID0gcmJvdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIF9fbmFtZShtZWFzdXJlQ2hhcklubmVyLCBcIm1lYXN1cmVDaGFySW5uZXJcIik7XG4gICAgZnVuY3Rpb24gbWF5YmVVcGRhdGVSZWN0Rm9yWm9vbWluZyhtZWFzdXJlLCByZWN0KSB7XG4gICAgICBpZiAoIXdpbmRvdy5zY3JlZW4gfHwgc2NyZWVuLmxvZ2ljYWxYRFBJID09IG51bGwgfHwgc2NyZWVuLmxvZ2ljYWxYRFBJID09IHNjcmVlbi5kZXZpY2VYRFBJIHx8ICFoYXNCYWRab29tZWRSZWN0cyhtZWFzdXJlKSkge1xuICAgICAgICByZXR1cm4gcmVjdDtcbiAgICAgIH1cbiAgICAgIHZhciBzY2FsZVggPSBzY3JlZW4ubG9naWNhbFhEUEkgLyBzY3JlZW4uZGV2aWNlWERQSTtcbiAgICAgIHZhciBzY2FsZVkgPSBzY3JlZW4ubG9naWNhbFlEUEkgLyBzY3JlZW4uZGV2aWNlWURQSTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IHJlY3QubGVmdCAqIHNjYWxlWCxcbiAgICAgICAgcmlnaHQ6IHJlY3QucmlnaHQgKiBzY2FsZVgsXG4gICAgICAgIHRvcDogcmVjdC50b3AgKiBzY2FsZVksXG4gICAgICAgIGJvdHRvbTogcmVjdC5ib3R0b20gKiBzY2FsZVlcbiAgICAgIH07XG4gICAgfVxuICAgIF9fbmFtZShtYXliZVVwZGF0ZVJlY3RGb3Jab29taW5nLCBcIm1heWJlVXBkYXRlUmVjdEZvclpvb21pbmdcIik7XG4gICAgZnVuY3Rpb24gY2xlYXJMaW5lTWVhc3VyZW1lbnRDYWNoZUZvcihsaW5lVmlldykge1xuICAgICAgaWYgKGxpbmVWaWV3Lm1lYXN1cmUpIHtcbiAgICAgICAgbGluZVZpZXcubWVhc3VyZS5jYWNoZSA9IHt9O1xuICAgICAgICBsaW5lVmlldy5tZWFzdXJlLmhlaWdodHMgPSBudWxsO1xuICAgICAgICBpZiAobGluZVZpZXcucmVzdCkge1xuICAgICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBsaW5lVmlldy5yZXN0Lmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgICAgbGluZVZpZXcubWVhc3VyZS5jYWNoZXNbaTJdID0ge307XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShjbGVhckxpbmVNZWFzdXJlbWVudENhY2hlRm9yLCBcImNsZWFyTGluZU1lYXN1cmVtZW50Q2FjaGVGb3JcIik7XG4gICAgZnVuY3Rpb24gY2xlYXJMaW5lTWVhc3VyZW1lbnRDYWNoZShjbSkge1xuICAgICAgY20uZGlzcGxheS5leHRlcm5hbE1lYXN1cmUgPSBudWxsO1xuICAgICAgcmVtb3ZlQ2hpbGRyZW4oY20uZGlzcGxheS5saW5lTWVhc3VyZSk7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgY20uZGlzcGxheS52aWV3Lmxlbmd0aDsgaTIrKykge1xuICAgICAgICBjbGVhckxpbmVNZWFzdXJlbWVudENhY2hlRm9yKGNtLmRpc3BsYXkudmlld1tpMl0pO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoY2xlYXJMaW5lTWVhc3VyZW1lbnRDYWNoZSwgXCJjbGVhckxpbmVNZWFzdXJlbWVudENhY2hlXCIpO1xuICAgIGZ1bmN0aW9uIGNsZWFyQ2FjaGVzKGNtKSB7XG4gICAgICBjbGVhckxpbmVNZWFzdXJlbWVudENhY2hlKGNtKTtcbiAgICAgIGNtLmRpc3BsYXkuY2FjaGVkQ2hhcldpZHRoID0gY20uZGlzcGxheS5jYWNoZWRUZXh0SGVpZ2h0ID0gY20uZGlzcGxheS5jYWNoZWRQYWRkaW5nSCA9IG51bGw7XG4gICAgICBpZiAoIWNtLm9wdGlvbnMubGluZVdyYXBwaW5nKSB7XG4gICAgICAgIGNtLmRpc3BsYXkubWF4TGluZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgY20uZGlzcGxheS5saW5lTnVtQ2hhcnMgPSBudWxsO1xuICAgIH1cbiAgICBfX25hbWUoY2xlYXJDYWNoZXMsIFwiY2xlYXJDYWNoZXNcIik7XG4gICAgZnVuY3Rpb24gcGFnZVNjcm9sbFgoKSB7XG4gICAgICBpZiAoY2hyb21lICYmIGFuZHJvaWQpIHtcbiAgICAgICAgcmV0dXJuIC0oZG9jdW1lbnQuYm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5tYXJnaW5MZWZ0KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd2luZG93LnBhZ2VYT2Zmc2V0IHx8IChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keSkuc2Nyb2xsTGVmdDtcbiAgICB9XG4gICAgX19uYW1lKHBhZ2VTY3JvbGxYLCBcInBhZ2VTY3JvbGxYXCIpO1xuICAgIGZ1bmN0aW9uIHBhZ2VTY3JvbGxZKCkge1xuICAgICAgaWYgKGNocm9tZSAmJiBhbmRyb2lkKSB7XG4gICAgICAgIHJldHVybiAtKGRvY3VtZW50LmJvZHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5tYXJnaW5Ub3ApKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3aW5kb3cucGFnZVlPZmZzZXQgfHwgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCB8fCBkb2N1bWVudC5ib2R5KS5zY3JvbGxUb3A7XG4gICAgfVxuICAgIF9fbmFtZShwYWdlU2Nyb2xsWSwgXCJwYWdlU2Nyb2xsWVwiKTtcbiAgICBmdW5jdGlvbiB3aWRnZXRUb3BIZWlnaHQobGluZU9iaikge1xuICAgICAgdmFyIHJlZiA9IHZpc3VhbExpbmUobGluZU9iaik7XG4gICAgICB2YXIgd2lkZ2V0cyA9IHJlZi53aWRnZXRzO1xuICAgICAgdmFyIGhlaWdodCA9IDA7XG4gICAgICBpZiAod2lkZ2V0cykge1xuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgd2lkZ2V0cy5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgICBpZiAod2lkZ2V0c1tpMl0uYWJvdmUpIHtcbiAgICAgICAgICAgIGhlaWdodCArPSB3aWRnZXRIZWlnaHQod2lkZ2V0c1tpMl0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGhlaWdodDtcbiAgICB9XG4gICAgX19uYW1lKHdpZGdldFRvcEhlaWdodCwgXCJ3aWRnZXRUb3BIZWlnaHRcIik7XG4gICAgZnVuY3Rpb24gaW50b0Nvb3JkU3lzdGVtKGNtLCBsaW5lT2JqLCByZWN0LCBjb250ZXh0LCBpbmNsdWRlV2lkZ2V0cykge1xuICAgICAgaWYgKCFpbmNsdWRlV2lkZ2V0cykge1xuICAgICAgICB2YXIgaGVpZ2h0ID0gd2lkZ2V0VG9wSGVpZ2h0KGxpbmVPYmopO1xuICAgICAgICByZWN0LnRvcCArPSBoZWlnaHQ7XG4gICAgICAgIHJlY3QuYm90dG9tICs9IGhlaWdodDtcbiAgICAgIH1cbiAgICAgIGlmIChjb250ZXh0ID09IFwibGluZVwiKSB7XG4gICAgICAgIHJldHVybiByZWN0O1xuICAgICAgfVxuICAgICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgIGNvbnRleHQgPSBcImxvY2FsXCI7XG4gICAgICB9XG4gICAgICB2YXIgeU9mZiA9IGhlaWdodEF0TGluZShsaW5lT2JqKTtcbiAgICAgIGlmIChjb250ZXh0ID09IFwibG9jYWxcIikge1xuICAgICAgICB5T2ZmICs9IHBhZGRpbmdUb3AoY20uZGlzcGxheSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5T2ZmIC09IGNtLmRpc3BsYXkudmlld09mZnNldDtcbiAgICAgIH1cbiAgICAgIGlmIChjb250ZXh0ID09IFwicGFnZVwiIHx8IGNvbnRleHQgPT0gXCJ3aW5kb3dcIikge1xuICAgICAgICB2YXIgbE9mZiA9IGNtLmRpc3BsYXkubGluZVNwYWNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB5T2ZmICs9IGxPZmYudG9wICsgKGNvbnRleHQgPT0gXCJ3aW5kb3dcIiA/IDAgOiBwYWdlU2Nyb2xsWSgpKTtcbiAgICAgICAgdmFyIHhPZmYgPSBsT2ZmLmxlZnQgKyAoY29udGV4dCA9PSBcIndpbmRvd1wiID8gMCA6IHBhZ2VTY3JvbGxYKCkpO1xuICAgICAgICByZWN0LmxlZnQgKz0geE9mZjtcbiAgICAgICAgcmVjdC5yaWdodCArPSB4T2ZmO1xuICAgICAgfVxuICAgICAgcmVjdC50b3AgKz0geU9mZjtcbiAgICAgIHJlY3QuYm90dG9tICs9IHlPZmY7XG4gICAgICByZXR1cm4gcmVjdDtcbiAgICB9XG4gICAgX19uYW1lKGludG9Db29yZFN5c3RlbSwgXCJpbnRvQ29vcmRTeXN0ZW1cIik7XG4gICAgZnVuY3Rpb24gZnJvbUNvb3JkU3lzdGVtKGNtLCBjb29yZHMsIGNvbnRleHQpIHtcbiAgICAgIGlmIChjb250ZXh0ID09IFwiZGl2XCIpIHtcbiAgICAgICAgcmV0dXJuIGNvb3JkcztcbiAgICAgIH1cbiAgICAgIHZhciBsZWZ0ID0gY29vcmRzLmxlZnQsIHRvcCA9IGNvb3Jkcy50b3A7XG4gICAgICBpZiAoY29udGV4dCA9PSBcInBhZ2VcIikge1xuICAgICAgICBsZWZ0IC09IHBhZ2VTY3JvbGxYKCk7XG4gICAgICAgIHRvcCAtPSBwYWdlU2Nyb2xsWSgpO1xuICAgICAgfSBlbHNlIGlmIChjb250ZXh0ID09IFwibG9jYWxcIiB8fCAhY29udGV4dCkge1xuICAgICAgICB2YXIgbG9jYWxCb3ggPSBjbS5kaXNwbGF5LnNpemVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBsZWZ0ICs9IGxvY2FsQm94LmxlZnQ7XG4gICAgICAgIHRvcCArPSBsb2NhbEJveC50b3A7XG4gICAgICB9XG4gICAgICB2YXIgbGluZVNwYWNlQm94ID0gY20uZGlzcGxheS5saW5lU3BhY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICByZXR1cm4geyBsZWZ0OiBsZWZ0IC0gbGluZVNwYWNlQm94LmxlZnQsIHRvcDogdG9wIC0gbGluZVNwYWNlQm94LnRvcCB9O1xuICAgIH1cbiAgICBfX25hbWUoZnJvbUNvb3JkU3lzdGVtLCBcImZyb21Db29yZFN5c3RlbVwiKTtcbiAgICBmdW5jdGlvbiBjaGFyQ29vcmRzKGNtLCBwb3MsIGNvbnRleHQsIGxpbmVPYmosIGJpYXMpIHtcbiAgICAgIGlmICghbGluZU9iaikge1xuICAgICAgICBsaW5lT2JqID0gZ2V0TGluZShjbS5kb2MsIHBvcy5saW5lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbnRvQ29vcmRTeXN0ZW0oY20sIGxpbmVPYmosIG1lYXN1cmVDaGFyKGNtLCBsaW5lT2JqLCBwb3MuY2gsIGJpYXMpLCBjb250ZXh0KTtcbiAgICB9XG4gICAgX19uYW1lKGNoYXJDb29yZHMsIFwiY2hhckNvb3Jkc1wiKTtcbiAgICBmdW5jdGlvbiBjdXJzb3JDb29yZHMoY20sIHBvcywgY29udGV4dCwgbGluZU9iaiwgcHJlcGFyZWRNZWFzdXJlLCB2YXJIZWlnaHQpIHtcbiAgICAgIGxpbmVPYmogPSBsaW5lT2JqIHx8IGdldExpbmUoY20uZG9jLCBwb3MubGluZSk7XG4gICAgICBpZiAoIXByZXBhcmVkTWVhc3VyZSkge1xuICAgICAgICBwcmVwYXJlZE1lYXN1cmUgPSBwcmVwYXJlTWVhc3VyZUZvckxpbmUoY20sIGxpbmVPYmopO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gZ2V0KGNoMiwgcmlnaHQpIHtcbiAgICAgICAgdmFyIG0gPSBtZWFzdXJlQ2hhclByZXBhcmVkKGNtLCBwcmVwYXJlZE1lYXN1cmUsIGNoMiwgcmlnaHQgPyBcInJpZ2h0XCIgOiBcImxlZnRcIiwgdmFySGVpZ2h0KTtcbiAgICAgICAgaWYgKHJpZ2h0KSB7XG4gICAgICAgICAgbS5sZWZ0ID0gbS5yaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtLnJpZ2h0ID0gbS5sZWZ0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnRvQ29vcmRTeXN0ZW0oY20sIGxpbmVPYmosIG0sIGNvbnRleHQpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGdldCwgXCJnZXRcIik7XG4gICAgICB2YXIgb3JkZXIgPSBnZXRPcmRlcihsaW5lT2JqLCBjbS5kb2MuZGlyZWN0aW9uKSwgY2ggPSBwb3MuY2gsIHN0aWNreSA9IHBvcy5zdGlja3k7XG4gICAgICBpZiAoY2ggPj0gbGluZU9iai50ZXh0Lmxlbmd0aCkge1xuICAgICAgICBjaCA9IGxpbmVPYmoudGV4dC5sZW5ndGg7XG4gICAgICAgIHN0aWNreSA9IFwiYmVmb3JlXCI7XG4gICAgICB9IGVsc2UgaWYgKGNoIDw9IDApIHtcbiAgICAgICAgY2ggPSAwO1xuICAgICAgICBzdGlja3kgPSBcImFmdGVyXCI7XG4gICAgICB9XG4gICAgICBpZiAoIW9yZGVyKSB7XG4gICAgICAgIHJldHVybiBnZXQoc3RpY2t5ID09IFwiYmVmb3JlXCIgPyBjaCAtIDEgOiBjaCwgc3RpY2t5ID09IFwiYmVmb3JlXCIpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gZ2V0QmlkaShjaDIsIHBhcnRQb3MyLCBpbnZlcnQpIHtcbiAgICAgICAgdmFyIHBhcnQgPSBvcmRlcltwYXJ0UG9zMl0sIHJpZ2h0ID0gcGFydC5sZXZlbCA9PSAxO1xuICAgICAgICByZXR1cm4gZ2V0KGludmVydCA/IGNoMiAtIDEgOiBjaDIsIHJpZ2h0ICE9IGludmVydCk7XG4gICAgICB9XG4gICAgICBfX25hbWUoZ2V0QmlkaSwgXCJnZXRCaWRpXCIpO1xuICAgICAgdmFyIHBhcnRQb3MgPSBnZXRCaWRpUGFydEF0KG9yZGVyLCBjaCwgc3RpY2t5KTtcbiAgICAgIHZhciBvdGhlciA9IGJpZGlPdGhlcjtcbiAgICAgIHZhciB2YWwgPSBnZXRCaWRpKGNoLCBwYXJ0UG9zLCBzdGlja3kgPT0gXCJiZWZvcmVcIik7XG4gICAgICBpZiAob3RoZXIgIT0gbnVsbCkge1xuICAgICAgICB2YWwub3RoZXIgPSBnZXRCaWRpKGNoLCBvdGhlciwgc3RpY2t5ICE9IFwiYmVmb3JlXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgX19uYW1lKGN1cnNvckNvb3JkcywgXCJjdXJzb3JDb29yZHNcIik7XG4gICAgZnVuY3Rpb24gZXN0aW1hdGVDb29yZHMoY20sIHBvcykge1xuICAgICAgdmFyIGxlZnQgPSAwO1xuICAgICAgcG9zID0gY2xpcFBvcyhjbS5kb2MsIHBvcyk7XG4gICAgICBpZiAoIWNtLm9wdGlvbnMubGluZVdyYXBwaW5nKSB7XG4gICAgICAgIGxlZnQgPSBjaGFyV2lkdGgoY20uZGlzcGxheSkgKiBwb3MuY2g7XG4gICAgICB9XG4gICAgICB2YXIgbGluZU9iaiA9IGdldExpbmUoY20uZG9jLCBwb3MubGluZSk7XG4gICAgICB2YXIgdG9wID0gaGVpZ2h0QXRMaW5lKGxpbmVPYmopICsgcGFkZGluZ1RvcChjbS5kaXNwbGF5KTtcbiAgICAgIHJldHVybiB7IGxlZnQsIHJpZ2h0OiBsZWZ0LCB0b3AsIGJvdHRvbTogdG9wICsgbGluZU9iai5oZWlnaHQgfTtcbiAgICB9XG4gICAgX19uYW1lKGVzdGltYXRlQ29vcmRzLCBcImVzdGltYXRlQ29vcmRzXCIpO1xuICAgIGZ1bmN0aW9uIFBvc1dpdGhJbmZvKGxpbmUsIGNoLCBzdGlja3ksIG91dHNpZGUsIHhSZWwpIHtcbiAgICAgIHZhciBwb3MgPSBQb3MobGluZSwgY2gsIHN0aWNreSk7XG4gICAgICBwb3MueFJlbCA9IHhSZWw7XG4gICAgICBpZiAob3V0c2lkZSkge1xuICAgICAgICBwb3Mub3V0c2lkZSA9IG91dHNpZGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcG9zO1xuICAgIH1cbiAgICBfX25hbWUoUG9zV2l0aEluZm8sIFwiUG9zV2l0aEluZm9cIik7XG4gICAgZnVuY3Rpb24gY29vcmRzQ2hhcihjbSwgeCwgeSkge1xuICAgICAgdmFyIGRvYyA9IGNtLmRvYztcbiAgICAgIHkgKz0gY20uZGlzcGxheS52aWV3T2Zmc2V0O1xuICAgICAgaWYgKHkgPCAwKSB7XG4gICAgICAgIHJldHVybiBQb3NXaXRoSW5mbyhkb2MuZmlyc3QsIDAsIG51bGwsIC0xLCAtMSk7XG4gICAgICB9XG4gICAgICB2YXIgbGluZU4gPSBsaW5lQXRIZWlnaHQoZG9jLCB5KSwgbGFzdCA9IGRvYy5maXJzdCArIGRvYy5zaXplIC0gMTtcbiAgICAgIGlmIChsaW5lTiA+IGxhc3QpIHtcbiAgICAgICAgcmV0dXJuIFBvc1dpdGhJbmZvKGRvYy5maXJzdCArIGRvYy5zaXplIC0gMSwgZ2V0TGluZShkb2MsIGxhc3QpLnRleHQubGVuZ3RoLCBudWxsLCAxLCAxKTtcbiAgICAgIH1cbiAgICAgIGlmICh4IDwgMCkge1xuICAgICAgICB4ID0gMDtcbiAgICAgIH1cbiAgICAgIHZhciBsaW5lT2JqID0gZ2V0TGluZShkb2MsIGxpbmVOKTtcbiAgICAgIGZvciAoOyA7ICkge1xuICAgICAgICB2YXIgZm91bmQgPSBjb29yZHNDaGFySW5uZXIoY20sIGxpbmVPYmosIGxpbmVOLCB4LCB5KTtcbiAgICAgICAgdmFyIGNvbGxhcHNlZCA9IGNvbGxhcHNlZFNwYW5Bcm91bmQobGluZU9iaiwgZm91bmQuY2ggKyAoZm91bmQueFJlbCA+IDAgfHwgZm91bmQub3V0c2lkZSA+IDAgPyAxIDogMCkpO1xuICAgICAgICBpZiAoIWNvbGxhcHNlZCkge1xuICAgICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmFuZ2VFbmQgPSBjb2xsYXBzZWQuZmluZCgxKTtcbiAgICAgICAgaWYgKHJhbmdlRW5kLmxpbmUgPT0gbGluZU4pIHtcbiAgICAgICAgICByZXR1cm4gcmFuZ2VFbmQ7XG4gICAgICAgIH1cbiAgICAgICAgbGluZU9iaiA9IGdldExpbmUoZG9jLCBsaW5lTiA9IHJhbmdlRW5kLmxpbmUpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoY29vcmRzQ2hhciwgXCJjb29yZHNDaGFyXCIpO1xuICAgIGZ1bmN0aW9uIHdyYXBwZWRMaW5lRXh0ZW50KGNtLCBsaW5lT2JqLCBwcmVwYXJlZE1lYXN1cmUsIHkpIHtcbiAgICAgIHkgLT0gd2lkZ2V0VG9wSGVpZ2h0KGxpbmVPYmopO1xuICAgICAgdmFyIGVuZCA9IGxpbmVPYmoudGV4dC5sZW5ndGg7XG4gICAgICB2YXIgYmVnaW4gPSBmaW5kRmlyc3QoZnVuY3Rpb24oY2gpIHtcbiAgICAgICAgcmV0dXJuIG1lYXN1cmVDaGFyUHJlcGFyZWQoY20sIHByZXBhcmVkTWVhc3VyZSwgY2ggLSAxKS5ib3R0b20gPD0geTtcbiAgICAgIH0sIGVuZCwgMCk7XG4gICAgICBlbmQgPSBmaW5kRmlyc3QoZnVuY3Rpb24oY2gpIHtcbiAgICAgICAgcmV0dXJuIG1lYXN1cmVDaGFyUHJlcGFyZWQoY20sIHByZXBhcmVkTWVhc3VyZSwgY2gpLnRvcCA+IHk7XG4gICAgICB9LCBiZWdpbiwgZW5kKTtcbiAgICAgIHJldHVybiB7IGJlZ2luLCBlbmQgfTtcbiAgICB9XG4gICAgX19uYW1lKHdyYXBwZWRMaW5lRXh0ZW50LCBcIndyYXBwZWRMaW5lRXh0ZW50XCIpO1xuICAgIGZ1bmN0aW9uIHdyYXBwZWRMaW5lRXh0ZW50Q2hhcihjbSwgbGluZU9iaiwgcHJlcGFyZWRNZWFzdXJlLCB0YXJnZXQpIHtcbiAgICAgIGlmICghcHJlcGFyZWRNZWFzdXJlKSB7XG4gICAgICAgIHByZXBhcmVkTWVhc3VyZSA9IHByZXBhcmVNZWFzdXJlRm9yTGluZShjbSwgbGluZU9iaik7XG4gICAgICB9XG4gICAgICB2YXIgdGFyZ2V0VG9wID0gaW50b0Nvb3JkU3lzdGVtKGNtLCBsaW5lT2JqLCBtZWFzdXJlQ2hhclByZXBhcmVkKGNtLCBwcmVwYXJlZE1lYXN1cmUsIHRhcmdldCksIFwibGluZVwiKS50b3A7XG4gICAgICByZXR1cm4gd3JhcHBlZExpbmVFeHRlbnQoY20sIGxpbmVPYmosIHByZXBhcmVkTWVhc3VyZSwgdGFyZ2V0VG9wKTtcbiAgICB9XG4gICAgX19uYW1lKHdyYXBwZWRMaW5lRXh0ZW50Q2hhciwgXCJ3cmFwcGVkTGluZUV4dGVudENoYXJcIik7XG4gICAgZnVuY3Rpb24gYm94SXNBZnRlcihib3gsIHgsIHksIGxlZnQpIHtcbiAgICAgIHJldHVybiBib3guYm90dG9tIDw9IHkgPyBmYWxzZSA6IGJveC50b3AgPiB5ID8gdHJ1ZSA6IChsZWZ0ID8gYm94LmxlZnQgOiBib3gucmlnaHQpID4geDtcbiAgICB9XG4gICAgX19uYW1lKGJveElzQWZ0ZXIsIFwiYm94SXNBZnRlclwiKTtcbiAgICBmdW5jdGlvbiBjb29yZHNDaGFySW5uZXIoY20sIGxpbmVPYmosIGxpbmVObzIsIHgsIHkpIHtcbiAgICAgIHkgLT0gaGVpZ2h0QXRMaW5lKGxpbmVPYmopO1xuICAgICAgdmFyIHByZXBhcmVkTWVhc3VyZSA9IHByZXBhcmVNZWFzdXJlRm9yTGluZShjbSwgbGluZU9iaik7XG4gICAgICB2YXIgd2lkZ2V0SGVpZ2h0MiA9IHdpZGdldFRvcEhlaWdodChsaW5lT2JqKTtcbiAgICAgIHZhciBiZWdpbiA9IDAsIGVuZCA9IGxpbmVPYmoudGV4dC5sZW5ndGgsIGx0ciA9IHRydWU7XG4gICAgICB2YXIgb3JkZXIgPSBnZXRPcmRlcihsaW5lT2JqLCBjbS5kb2MuZGlyZWN0aW9uKTtcbiAgICAgIGlmIChvcmRlcikge1xuICAgICAgICB2YXIgcGFydCA9IChjbS5vcHRpb25zLmxpbmVXcmFwcGluZyA/IGNvb3Jkc0JpZGlQYXJ0V3JhcHBlZCA6IGNvb3Jkc0JpZGlQYXJ0KShjbSwgbGluZU9iaiwgbGluZU5vMiwgcHJlcGFyZWRNZWFzdXJlLCBvcmRlciwgeCwgeSk7XG4gICAgICAgIGx0ciA9IHBhcnQubGV2ZWwgIT0gMTtcbiAgICAgICAgYmVnaW4gPSBsdHIgPyBwYXJ0LmZyb20gOiBwYXJ0LnRvIC0gMTtcbiAgICAgICAgZW5kID0gbHRyID8gcGFydC50byA6IHBhcnQuZnJvbSAtIDE7XG4gICAgICB9XG4gICAgICB2YXIgY2hBcm91bmQgPSBudWxsLCBib3hBcm91bmQgPSBudWxsO1xuICAgICAgdmFyIGNoID0gZmluZEZpcnN0KGZ1bmN0aW9uKGNoMikge1xuICAgICAgICB2YXIgYm94ID0gbWVhc3VyZUNoYXJQcmVwYXJlZChjbSwgcHJlcGFyZWRNZWFzdXJlLCBjaDIpO1xuICAgICAgICBib3gudG9wICs9IHdpZGdldEhlaWdodDI7XG4gICAgICAgIGJveC5ib3R0b20gKz0gd2lkZ2V0SGVpZ2h0MjtcbiAgICAgICAgaWYgKCFib3hJc0FmdGVyKGJveCwgeCwgeSwgZmFsc2UpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib3gudG9wIDw9IHkgJiYgYm94LmxlZnQgPD0geCkge1xuICAgICAgICAgIGNoQXJvdW5kID0gY2gyO1xuICAgICAgICAgIGJveEFyb3VuZCA9IGJveDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sIGJlZ2luLCBlbmQpO1xuICAgICAgdmFyIGJhc2VYLCBzdGlja3ksIG91dHNpZGUgPSBmYWxzZTtcbiAgICAgIGlmIChib3hBcm91bmQpIHtcbiAgICAgICAgdmFyIGF0TGVmdCA9IHggLSBib3hBcm91bmQubGVmdCA8IGJveEFyb3VuZC5yaWdodCAtIHgsIGF0U3RhcnQgPSBhdExlZnQgPT0gbHRyO1xuICAgICAgICBjaCA9IGNoQXJvdW5kICsgKGF0U3RhcnQgPyAwIDogMSk7XG4gICAgICAgIHN0aWNreSA9IGF0U3RhcnQgPyBcImFmdGVyXCIgOiBcImJlZm9yZVwiO1xuICAgICAgICBiYXNlWCA9IGF0TGVmdCA/IGJveEFyb3VuZC5sZWZ0IDogYm94QXJvdW5kLnJpZ2h0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFsdHIgJiYgKGNoID09IGVuZCB8fCBjaCA9PSBiZWdpbikpIHtcbiAgICAgICAgICBjaCsrO1xuICAgICAgICB9XG4gICAgICAgIHN0aWNreSA9IGNoID09IDAgPyBcImFmdGVyXCIgOiBjaCA9PSBsaW5lT2JqLnRleHQubGVuZ3RoID8gXCJiZWZvcmVcIiA6IG1lYXN1cmVDaGFyUHJlcGFyZWQoY20sIHByZXBhcmVkTWVhc3VyZSwgY2ggLSAobHRyID8gMSA6IDApKS5ib3R0b20gKyB3aWRnZXRIZWlnaHQyIDw9IHkgPT0gbHRyID8gXCJhZnRlclwiIDogXCJiZWZvcmVcIjtcbiAgICAgICAgdmFyIGNvb3JkcyA9IGN1cnNvckNvb3JkcyhjbSwgUG9zKGxpbmVObzIsIGNoLCBzdGlja3kpLCBcImxpbmVcIiwgbGluZU9iaiwgcHJlcGFyZWRNZWFzdXJlKTtcbiAgICAgICAgYmFzZVggPSBjb29yZHMubGVmdDtcbiAgICAgICAgb3V0c2lkZSA9IHkgPCBjb29yZHMudG9wID8gLTEgOiB5ID49IGNvb3Jkcy5ib3R0b20gPyAxIDogMDtcbiAgICAgIH1cbiAgICAgIGNoID0gc2tpcEV4dGVuZGluZ0NoYXJzKGxpbmVPYmoudGV4dCwgY2gsIDEpO1xuICAgICAgcmV0dXJuIFBvc1dpdGhJbmZvKGxpbmVObzIsIGNoLCBzdGlja3ksIG91dHNpZGUsIHggLSBiYXNlWCk7XG4gICAgfVxuICAgIF9fbmFtZShjb29yZHNDaGFySW5uZXIsIFwiY29vcmRzQ2hhcklubmVyXCIpO1xuICAgIGZ1bmN0aW9uIGNvb3Jkc0JpZGlQYXJ0KGNtLCBsaW5lT2JqLCBsaW5lTm8yLCBwcmVwYXJlZE1lYXN1cmUsIG9yZGVyLCB4LCB5KSB7XG4gICAgICB2YXIgaW5kZXggPSBmaW5kRmlyc3QoZnVuY3Rpb24oaTIpIHtcbiAgICAgICAgdmFyIHBhcnQyID0gb3JkZXJbaTJdLCBsdHIyID0gcGFydDIubGV2ZWwgIT0gMTtcbiAgICAgICAgcmV0dXJuIGJveElzQWZ0ZXIoY3Vyc29yQ29vcmRzKGNtLCBQb3MobGluZU5vMiwgbHRyMiA/IHBhcnQyLnRvIDogcGFydDIuZnJvbSwgbHRyMiA/IFwiYmVmb3JlXCIgOiBcImFmdGVyXCIpLCBcImxpbmVcIiwgbGluZU9iaiwgcHJlcGFyZWRNZWFzdXJlKSwgeCwgeSwgdHJ1ZSk7XG4gICAgICB9LCAwLCBvcmRlci5sZW5ndGggLSAxKTtcbiAgICAgIHZhciBwYXJ0ID0gb3JkZXJbaW5kZXhdO1xuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICB2YXIgbHRyID0gcGFydC5sZXZlbCAhPSAxO1xuICAgICAgICB2YXIgc3RhcnQgPSBjdXJzb3JDb29yZHMoY20sIFBvcyhsaW5lTm8yLCBsdHIgPyBwYXJ0LmZyb20gOiBwYXJ0LnRvLCBsdHIgPyBcImFmdGVyXCIgOiBcImJlZm9yZVwiKSwgXCJsaW5lXCIsIGxpbmVPYmosIHByZXBhcmVkTWVhc3VyZSk7XG4gICAgICAgIGlmIChib3hJc0FmdGVyKHN0YXJ0LCB4LCB5LCB0cnVlKSAmJiBzdGFydC50b3AgPiB5KSB7XG4gICAgICAgICAgcGFydCA9IG9yZGVyW2luZGV4IC0gMV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0O1xuICAgIH1cbiAgICBfX25hbWUoY29vcmRzQmlkaVBhcnQsIFwiY29vcmRzQmlkaVBhcnRcIik7XG4gICAgZnVuY3Rpb24gY29vcmRzQmlkaVBhcnRXcmFwcGVkKGNtLCBsaW5lT2JqLCBfbGluZU5vLCBwcmVwYXJlZE1lYXN1cmUsIG9yZGVyLCB4LCB5KSB7XG4gICAgICB2YXIgcmVmID0gd3JhcHBlZExpbmVFeHRlbnQoY20sIGxpbmVPYmosIHByZXBhcmVkTWVhc3VyZSwgeSk7XG4gICAgICB2YXIgYmVnaW4gPSByZWYuYmVnaW47XG4gICAgICB2YXIgZW5kID0gcmVmLmVuZDtcbiAgICAgIGlmICgvXFxzLy50ZXN0KGxpbmVPYmoudGV4dC5jaGFyQXQoZW5kIC0gMSkpKSB7XG4gICAgICAgIGVuZC0tO1xuICAgICAgfVxuICAgICAgdmFyIHBhcnQgPSBudWxsLCBjbG9zZXN0RGlzdCA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgb3JkZXIubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIHZhciBwID0gb3JkZXJbaTJdO1xuICAgICAgICBpZiAocC5mcm9tID49IGVuZCB8fCBwLnRvIDw9IGJlZ2luKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGx0ciA9IHAubGV2ZWwgIT0gMTtcbiAgICAgICAgdmFyIGVuZFggPSBtZWFzdXJlQ2hhclByZXBhcmVkKGNtLCBwcmVwYXJlZE1lYXN1cmUsIGx0ciA/IE1hdGgubWluKGVuZCwgcC50bykgLSAxIDogTWF0aC5tYXgoYmVnaW4sIHAuZnJvbSkpLnJpZ2h0O1xuICAgICAgICB2YXIgZGlzdCA9IGVuZFggPCB4ID8geCAtIGVuZFggKyAxZTkgOiBlbmRYIC0geDtcbiAgICAgICAgaWYgKCFwYXJ0IHx8IGNsb3Nlc3REaXN0ID4gZGlzdCkge1xuICAgICAgICAgIHBhcnQgPSBwO1xuICAgICAgICAgIGNsb3Nlc3REaXN0ID0gZGlzdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFwYXJ0KSB7XG4gICAgICAgIHBhcnQgPSBvcmRlcltvcmRlci5sZW5ndGggLSAxXTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJ0LmZyb20gPCBiZWdpbikge1xuICAgICAgICBwYXJ0ID0geyBmcm9tOiBiZWdpbiwgdG86IHBhcnQudG8sIGxldmVsOiBwYXJ0LmxldmVsIH07XG4gICAgICB9XG4gICAgICBpZiAocGFydC50byA+IGVuZCkge1xuICAgICAgICBwYXJ0ID0geyBmcm9tOiBwYXJ0LmZyb20sIHRvOiBlbmQsIGxldmVsOiBwYXJ0LmxldmVsIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFydDtcbiAgICB9XG4gICAgX19uYW1lKGNvb3Jkc0JpZGlQYXJ0V3JhcHBlZCwgXCJjb29yZHNCaWRpUGFydFdyYXBwZWRcIik7XG4gICAgdmFyIG1lYXN1cmVUZXh0O1xuICAgIGZ1bmN0aW9uIHRleHRIZWlnaHQoZGlzcGxheSkge1xuICAgICAgaWYgKGRpc3BsYXkuY2FjaGVkVGV4dEhlaWdodCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBkaXNwbGF5LmNhY2hlZFRleHRIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAobWVhc3VyZVRleHQgPT0gbnVsbCkge1xuICAgICAgICBtZWFzdXJlVGV4dCA9IGVsdChcInByZVwiLCBudWxsLCBcIkNvZGVNaXJyb3ItbGluZS1saWtlXCIpO1xuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgNDk7ICsraTIpIHtcbiAgICAgICAgICBtZWFzdXJlVGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcInhcIikpO1xuICAgICAgICAgIG1lYXN1cmVUZXh0LmFwcGVuZENoaWxkKGVsdChcImJyXCIpKTtcbiAgICAgICAgfVxuICAgICAgICBtZWFzdXJlVGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcInhcIikpO1xuICAgICAgfVxuICAgICAgcmVtb3ZlQ2hpbGRyZW5BbmRBZGQoZGlzcGxheS5tZWFzdXJlLCBtZWFzdXJlVGV4dCk7XG4gICAgICB2YXIgaGVpZ2h0ID0gbWVhc3VyZVRleHQub2Zmc2V0SGVpZ2h0IC8gNTA7XG4gICAgICBpZiAoaGVpZ2h0ID4gMykge1xuICAgICAgICBkaXNwbGF5LmNhY2hlZFRleHRIZWlnaHQgPSBoZWlnaHQ7XG4gICAgICB9XG4gICAgICByZW1vdmVDaGlsZHJlbihkaXNwbGF5Lm1lYXN1cmUpO1xuICAgICAgcmV0dXJuIGhlaWdodCB8fCAxO1xuICAgIH1cbiAgICBfX25hbWUodGV4dEhlaWdodCwgXCJ0ZXh0SGVpZ2h0XCIpO1xuICAgIGZ1bmN0aW9uIGNoYXJXaWR0aChkaXNwbGF5KSB7XG4gICAgICBpZiAoZGlzcGxheS5jYWNoZWRDaGFyV2lkdGggIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZGlzcGxheS5jYWNoZWRDaGFyV2lkdGg7XG4gICAgICB9XG4gICAgICB2YXIgYW5jaG9yID0gZWx0KFwic3BhblwiLCBcInh4eHh4eHh4eHhcIik7XG4gICAgICB2YXIgcHJlID0gZWx0KFwicHJlXCIsIFthbmNob3JdLCBcIkNvZGVNaXJyb3ItbGluZS1saWtlXCIpO1xuICAgICAgcmVtb3ZlQ2hpbGRyZW5BbmRBZGQoZGlzcGxheS5tZWFzdXJlLCBwcmUpO1xuICAgICAgdmFyIHJlY3QgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHdpZHRoID0gKHJlY3QucmlnaHQgLSByZWN0LmxlZnQpIC8gMTA7XG4gICAgICBpZiAod2lkdGggPiAyKSB7XG4gICAgICAgIGRpc3BsYXkuY2FjaGVkQ2hhcldpZHRoID0gd2lkdGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gd2lkdGggfHwgMTA7XG4gICAgfVxuICAgIF9fbmFtZShjaGFyV2lkdGgsIFwiY2hhcldpZHRoXCIpO1xuICAgIGZ1bmN0aW9uIGdldERpbWVuc2lvbnMoY20pIHtcbiAgICAgIHZhciBkID0gY20uZGlzcGxheSwgbGVmdCA9IHt9LCB3aWR0aCA9IHt9O1xuICAgICAgdmFyIGd1dHRlckxlZnQgPSBkLmd1dHRlcnMuY2xpZW50TGVmdDtcbiAgICAgIGZvciAodmFyIG4gPSBkLmd1dHRlcnMuZmlyc3RDaGlsZCwgaTIgPSAwOyBuOyBuID0gbi5uZXh0U2libGluZywgKytpMikge1xuICAgICAgICB2YXIgaWQgPSBjbS5kaXNwbGF5Lmd1dHRlclNwZWNzW2kyXS5jbGFzc05hbWU7XG4gICAgICAgIGxlZnRbaWRdID0gbi5vZmZzZXRMZWZ0ICsgbi5jbGllbnRMZWZ0ICsgZ3V0dGVyTGVmdDtcbiAgICAgICAgd2lkdGhbaWRdID0gbi5jbGllbnRXaWR0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpeGVkUG9zOiBjb21wZW5zYXRlRm9ySFNjcm9sbChkKSxcbiAgICAgICAgZ3V0dGVyVG90YWxXaWR0aDogZC5ndXR0ZXJzLm9mZnNldFdpZHRoLFxuICAgICAgICBndXR0ZXJMZWZ0OiBsZWZ0LFxuICAgICAgICBndXR0ZXJXaWR0aDogd2lkdGgsXG4gICAgICAgIHdyYXBwZXJXaWR0aDogZC53cmFwcGVyLmNsaWVudFdpZHRoXG4gICAgICB9O1xuICAgIH1cbiAgICBfX25hbWUoZ2V0RGltZW5zaW9ucywgXCJnZXREaW1lbnNpb25zXCIpO1xuICAgIGZ1bmN0aW9uIGNvbXBlbnNhdGVGb3JIU2Nyb2xsKGRpc3BsYXkpIHtcbiAgICAgIHJldHVybiBkaXNwbGF5LnNjcm9sbGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLSBkaXNwbGF5LnNpemVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgfVxuICAgIF9fbmFtZShjb21wZW5zYXRlRm9ySFNjcm9sbCwgXCJjb21wZW5zYXRlRm9ySFNjcm9sbFwiKTtcbiAgICBmdW5jdGlvbiBlc3RpbWF0ZUhlaWdodChjbSkge1xuICAgICAgdmFyIHRoID0gdGV4dEhlaWdodChjbS5kaXNwbGF5KSwgd3JhcHBpbmcgPSBjbS5vcHRpb25zLmxpbmVXcmFwcGluZztcbiAgICAgIHZhciBwZXJMaW5lID0gd3JhcHBpbmcgJiYgTWF0aC5tYXgoNSwgY20uZGlzcGxheS5zY3JvbGxlci5jbGllbnRXaWR0aCAvIGNoYXJXaWR0aChjbS5kaXNwbGF5KSAtIDMpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgaWYgKGxpbmVJc0hpZGRlbihjbS5kb2MsIGxpbmUpKSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHdpZGdldHNIZWlnaHQgPSAwO1xuICAgICAgICBpZiAobGluZS53aWRnZXRzKSB7XG4gICAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGxpbmUud2lkZ2V0cy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICAgIGlmIChsaW5lLndpZGdldHNbaTJdLmhlaWdodCkge1xuICAgICAgICAgICAgICB3aWRnZXRzSGVpZ2h0ICs9IGxpbmUud2lkZ2V0c1tpMl0uaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAod3JhcHBpbmcpIHtcbiAgICAgICAgICByZXR1cm4gd2lkZ2V0c0hlaWdodCArIChNYXRoLmNlaWwobGluZS50ZXh0Lmxlbmd0aCAvIHBlckxpbmUpIHx8IDEpICogdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHdpZGdldHNIZWlnaHQgKyB0aDtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgX19uYW1lKGVzdGltYXRlSGVpZ2h0LCBcImVzdGltYXRlSGVpZ2h0XCIpO1xuICAgIGZ1bmN0aW9uIGVzdGltYXRlTGluZUhlaWdodHMoY20pIHtcbiAgICAgIHZhciBkb2MgPSBjbS5kb2MsIGVzdCA9IGVzdGltYXRlSGVpZ2h0KGNtKTtcbiAgICAgIGRvYy5pdGVyKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgdmFyIGVzdEhlaWdodCA9IGVzdChsaW5lKTtcbiAgICAgICAgaWYgKGVzdEhlaWdodCAhPSBsaW5lLmhlaWdodCkge1xuICAgICAgICAgIHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgZXN0SGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIF9fbmFtZShlc3RpbWF0ZUxpbmVIZWlnaHRzLCBcImVzdGltYXRlTGluZUhlaWdodHNcIik7XG4gICAgZnVuY3Rpb24gcG9zRnJvbU1vdXNlKGNtLCBlLCBsaWJlcmFsLCBmb3JSZWN0KSB7XG4gICAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXk7XG4gICAgICBpZiAoIWxpYmVyYWwgJiYgZV90YXJnZXQoZSkuZ2V0QXR0cmlidXRlKFwiY20tbm90LWNvbnRlbnRcIikgPT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgeCwgeSwgc3BhY2UgPSBkaXNwbGF5LmxpbmVTcGFjZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHggPSBlLmNsaWVudFggLSBzcGFjZS5sZWZ0O1xuICAgICAgICB5ID0gZS5jbGllbnRZIC0gc3BhY2UudG9wO1xuICAgICAgfSBjYXRjaCAoZSQxKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGNvb3JkcyA9IGNvb3Jkc0NoYXIoY20sIHgsIHkpLCBsaW5lO1xuICAgICAgaWYgKGZvclJlY3QgJiYgY29vcmRzLnhSZWwgPiAwICYmIChsaW5lID0gZ2V0TGluZShjbS5kb2MsIGNvb3Jkcy5saW5lKS50ZXh0KS5sZW5ndGggPT0gY29vcmRzLmNoKSB7XG4gICAgICAgIHZhciBjb2xEaWZmID0gY291bnRDb2x1bW4obGluZSwgbGluZS5sZW5ndGgsIGNtLm9wdGlvbnMudGFiU2l6ZSkgLSBsaW5lLmxlbmd0aDtcbiAgICAgICAgY29vcmRzID0gUG9zKGNvb3Jkcy5saW5lLCBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKCh4IC0gcGFkZGluZ0goY20uZGlzcGxheSkubGVmdCkgLyBjaGFyV2lkdGgoY20uZGlzcGxheSkpIC0gY29sRGlmZikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvb3JkcztcbiAgICB9XG4gICAgX19uYW1lKHBvc0Zyb21Nb3VzZSwgXCJwb3NGcm9tTW91c2VcIik7XG4gICAgZnVuY3Rpb24gZmluZFZpZXdJbmRleChjbSwgbikge1xuICAgICAgaWYgKG4gPj0gY20uZGlzcGxheS52aWV3VG8pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBuIC09IGNtLmRpc3BsYXkudmlld0Zyb207XG4gICAgICBpZiAobiA8IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgdmlldyA9IGNtLmRpc3BsYXkudmlldztcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCB2aWV3Lmxlbmd0aDsgaTIrKykge1xuICAgICAgICBuIC09IHZpZXdbaTJdLnNpemU7XG4gICAgICAgIGlmIChuIDwgMCkge1xuICAgICAgICAgIHJldHVybiBpMjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoZmluZFZpZXdJbmRleCwgXCJmaW5kVmlld0luZGV4XCIpO1xuICAgIGZ1bmN0aW9uIHJlZ0NoYW5nZShjbSwgZnJvbSwgdG8sIGxlbmRpZmYpIHtcbiAgICAgIGlmIChmcm9tID09IG51bGwpIHtcbiAgICAgICAgZnJvbSA9IGNtLmRvYy5maXJzdDtcbiAgICAgIH1cbiAgICAgIGlmICh0byA9PSBudWxsKSB7XG4gICAgICAgIHRvID0gY20uZG9jLmZpcnN0ICsgY20uZG9jLnNpemU7XG4gICAgICB9XG4gICAgICBpZiAoIWxlbmRpZmYpIHtcbiAgICAgICAgbGVuZGlmZiA9IDA7XG4gICAgICB9XG4gICAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXk7XG4gICAgICBpZiAobGVuZGlmZiAmJiB0byA8IGRpc3BsYXkudmlld1RvICYmIChkaXNwbGF5LnVwZGF0ZUxpbmVOdW1iZXJzID09IG51bGwgfHwgZGlzcGxheS51cGRhdGVMaW5lTnVtYmVycyA+IGZyb20pKSB7XG4gICAgICAgIGRpc3BsYXkudXBkYXRlTGluZU51bWJlcnMgPSBmcm9tO1xuICAgICAgfVxuICAgICAgY20uY3VyT3Audmlld0NoYW5nZWQgPSB0cnVlO1xuICAgICAgaWYgKGZyb20gPj0gZGlzcGxheS52aWV3VG8pIHtcbiAgICAgICAgaWYgKHNhd0NvbGxhcHNlZFNwYW5zICYmIHZpc3VhbExpbmVObyhjbS5kb2MsIGZyb20pIDwgZGlzcGxheS52aWV3VG8pIHtcbiAgICAgICAgICByZXNldFZpZXcoY20pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRvIDw9IGRpc3BsYXkudmlld0Zyb20pIHtcbiAgICAgICAgaWYgKHNhd0NvbGxhcHNlZFNwYW5zICYmIHZpc3VhbExpbmVFbmRObyhjbS5kb2MsIHRvICsgbGVuZGlmZikgPiBkaXNwbGF5LnZpZXdGcm9tKSB7XG4gICAgICAgICAgcmVzZXRWaWV3KGNtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaXNwbGF5LnZpZXdGcm9tICs9IGxlbmRpZmY7XG4gICAgICAgICAgZGlzcGxheS52aWV3VG8gKz0gbGVuZGlmZjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChmcm9tIDw9IGRpc3BsYXkudmlld0Zyb20gJiYgdG8gPj0gZGlzcGxheS52aWV3VG8pIHtcbiAgICAgICAgcmVzZXRWaWV3KGNtKTtcbiAgICAgIH0gZWxzZSBpZiAoZnJvbSA8PSBkaXNwbGF5LnZpZXdGcm9tKSB7XG4gICAgICAgIHZhciBjdXQgPSB2aWV3Q3V0dGluZ1BvaW50KGNtLCB0bywgdG8gKyBsZW5kaWZmLCAxKTtcbiAgICAgICAgaWYgKGN1dCkge1xuICAgICAgICAgIGRpc3BsYXkudmlldyA9IGRpc3BsYXkudmlldy5zbGljZShjdXQuaW5kZXgpO1xuICAgICAgICAgIGRpc3BsYXkudmlld0Zyb20gPSBjdXQubGluZU47XG4gICAgICAgICAgZGlzcGxheS52aWV3VG8gKz0gbGVuZGlmZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNldFZpZXcoY20pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRvID49IGRpc3BsYXkudmlld1RvKSB7XG4gICAgICAgIHZhciBjdXQkMSA9IHZpZXdDdXR0aW5nUG9pbnQoY20sIGZyb20sIGZyb20sIC0xKTtcbiAgICAgICAgaWYgKGN1dCQxKSB7XG4gICAgICAgICAgZGlzcGxheS52aWV3ID0gZGlzcGxheS52aWV3LnNsaWNlKDAsIGN1dCQxLmluZGV4KTtcbiAgICAgICAgICBkaXNwbGF5LnZpZXdUbyA9IGN1dCQxLmxpbmVOO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc2V0VmlldyhjbSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBjdXRUb3AgPSB2aWV3Q3V0dGluZ1BvaW50KGNtLCBmcm9tLCBmcm9tLCAtMSk7XG4gICAgICAgIHZhciBjdXRCb3QgPSB2aWV3Q3V0dGluZ1BvaW50KGNtLCB0bywgdG8gKyBsZW5kaWZmLCAxKTtcbiAgICAgICAgaWYgKGN1dFRvcCAmJiBjdXRCb3QpIHtcbiAgICAgICAgICBkaXNwbGF5LnZpZXcgPSBkaXNwbGF5LnZpZXcuc2xpY2UoMCwgY3V0VG9wLmluZGV4KS5jb25jYXQoYnVpbGRWaWV3QXJyYXkoY20sIGN1dFRvcC5saW5lTiwgY3V0Qm90LmxpbmVOKSkuY29uY2F0KGRpc3BsYXkudmlldy5zbGljZShjdXRCb3QuaW5kZXgpKTtcbiAgICAgICAgICBkaXNwbGF5LnZpZXdUbyArPSBsZW5kaWZmO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc2V0VmlldyhjbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBleHQgPSBkaXNwbGF5LmV4dGVybmFsTWVhc3VyZWQ7XG4gICAgICBpZiAoZXh0KSB7XG4gICAgICAgIGlmICh0byA8IGV4dC5saW5lTikge1xuICAgICAgICAgIGV4dC5saW5lTiArPSBsZW5kaWZmO1xuICAgICAgICB9IGVsc2UgaWYgKGZyb20gPCBleHQubGluZU4gKyBleHQuc2l6ZSkge1xuICAgICAgICAgIGRpc3BsYXkuZXh0ZXJuYWxNZWFzdXJlZCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHJlZ0NoYW5nZSwgXCJyZWdDaGFuZ2VcIik7XG4gICAgZnVuY3Rpb24gcmVnTGluZUNoYW5nZShjbSwgbGluZSwgdHlwZSkge1xuICAgICAgY20uY3VyT3Audmlld0NoYW5nZWQgPSB0cnVlO1xuICAgICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5LCBleHQgPSBjbS5kaXNwbGF5LmV4dGVybmFsTWVhc3VyZWQ7XG4gICAgICBpZiAoZXh0ICYmIGxpbmUgPj0gZXh0LmxpbmVOICYmIGxpbmUgPCBleHQubGluZU4gKyBleHQuc2l6ZSkge1xuICAgICAgICBkaXNwbGF5LmV4dGVybmFsTWVhc3VyZWQgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGxpbmUgPCBkaXNwbGF5LnZpZXdGcm9tIHx8IGxpbmUgPj0gZGlzcGxheS52aWV3VG8pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGxpbmVWaWV3ID0gZGlzcGxheS52aWV3W2ZpbmRWaWV3SW5kZXgoY20sIGxpbmUpXTtcbiAgICAgIGlmIChsaW5lVmlldy5ub2RlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGFyciA9IGxpbmVWaWV3LmNoYW5nZXMgfHwgKGxpbmVWaWV3LmNoYW5nZXMgPSBbXSk7XG4gICAgICBpZiAoaW5kZXhPZihhcnIsIHR5cGUpID09IC0xKSB7XG4gICAgICAgIGFyci5wdXNoKHR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUocmVnTGluZUNoYW5nZSwgXCJyZWdMaW5lQ2hhbmdlXCIpO1xuICAgIGZ1bmN0aW9uIHJlc2V0VmlldyhjbSkge1xuICAgICAgY20uZGlzcGxheS52aWV3RnJvbSA9IGNtLmRpc3BsYXkudmlld1RvID0gY20uZG9jLmZpcnN0O1xuICAgICAgY20uZGlzcGxheS52aWV3ID0gW107XG4gICAgICBjbS5kaXNwbGF5LnZpZXdPZmZzZXQgPSAwO1xuICAgIH1cbiAgICBfX25hbWUocmVzZXRWaWV3LCBcInJlc2V0Vmlld1wiKTtcbiAgICBmdW5jdGlvbiB2aWV3Q3V0dGluZ1BvaW50KGNtLCBvbGROLCBuZXdOLCBkaXIpIHtcbiAgICAgIHZhciBpbmRleCA9IGZpbmRWaWV3SW5kZXgoY20sIG9sZE4pLCBkaWZmLCB2aWV3ID0gY20uZGlzcGxheS52aWV3O1xuICAgICAgaWYgKCFzYXdDb2xsYXBzZWRTcGFucyB8fCBuZXdOID09IGNtLmRvYy5maXJzdCArIGNtLmRvYy5zaXplKSB7XG4gICAgICAgIHJldHVybiB7IGluZGV4LCBsaW5lTjogbmV3TiB9O1xuICAgICAgfVxuICAgICAgdmFyIG4gPSBjbS5kaXNwbGF5LnZpZXdGcm9tO1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGluZGV4OyBpMisrKSB7XG4gICAgICAgIG4gKz0gdmlld1tpMl0uc2l6ZTtcbiAgICAgIH1cbiAgICAgIGlmIChuICE9IG9sZE4pIHtcbiAgICAgICAgaWYgKGRpciA+IDApIHtcbiAgICAgICAgICBpZiAoaW5kZXggPT0gdmlldy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGlmZiA9IG4gKyB2aWV3W2luZGV4XS5zaXplIC0gb2xkTjtcbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpZmYgPSBuIC0gb2xkTjtcbiAgICAgICAgfVxuICAgICAgICBvbGROICs9IGRpZmY7XG4gICAgICAgIG5ld04gKz0gZGlmZjtcbiAgICAgIH1cbiAgICAgIHdoaWxlICh2aXN1YWxMaW5lTm8oY20uZG9jLCBuZXdOKSAhPSBuZXdOKSB7XG4gICAgICAgIGlmIChpbmRleCA9PSAoZGlyIDwgMCA/IDAgOiB2aWV3Lmxlbmd0aCAtIDEpKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbmV3TiArPSBkaXIgKiB2aWV3W2luZGV4IC0gKGRpciA8IDAgPyAxIDogMCldLnNpemU7XG4gICAgICAgIGluZGV4ICs9IGRpcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGluZGV4LCBsaW5lTjogbmV3TiB9O1xuICAgIH1cbiAgICBfX25hbWUodmlld0N1dHRpbmdQb2ludCwgXCJ2aWV3Q3V0dGluZ1BvaW50XCIpO1xuICAgIGZ1bmN0aW9uIGFkanVzdFZpZXcoY20sIGZyb20sIHRvKSB7XG4gICAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXksIHZpZXcgPSBkaXNwbGF5LnZpZXc7XG4gICAgICBpZiAodmlldy5sZW5ndGggPT0gMCB8fCBmcm9tID49IGRpc3BsYXkudmlld1RvIHx8IHRvIDw9IGRpc3BsYXkudmlld0Zyb20pIHtcbiAgICAgICAgZGlzcGxheS52aWV3ID0gYnVpbGRWaWV3QXJyYXkoY20sIGZyb20sIHRvKTtcbiAgICAgICAgZGlzcGxheS52aWV3RnJvbSA9IGZyb207XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZGlzcGxheS52aWV3RnJvbSA+IGZyb20pIHtcbiAgICAgICAgICBkaXNwbGF5LnZpZXcgPSBidWlsZFZpZXdBcnJheShjbSwgZnJvbSwgZGlzcGxheS52aWV3RnJvbSkuY29uY2F0KGRpc3BsYXkudmlldyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGlzcGxheS52aWV3RnJvbSA8IGZyb20pIHtcbiAgICAgICAgICBkaXNwbGF5LnZpZXcgPSBkaXNwbGF5LnZpZXcuc2xpY2UoZmluZFZpZXdJbmRleChjbSwgZnJvbSkpO1xuICAgICAgICB9XG4gICAgICAgIGRpc3BsYXkudmlld0Zyb20gPSBmcm9tO1xuICAgICAgICBpZiAoZGlzcGxheS52aWV3VG8gPCB0bykge1xuICAgICAgICAgIGRpc3BsYXkudmlldyA9IGRpc3BsYXkudmlldy5jb25jYXQoYnVpbGRWaWV3QXJyYXkoY20sIGRpc3BsYXkudmlld1RvLCB0bykpO1xuICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXkudmlld1RvID4gdG8pIHtcbiAgICAgICAgICBkaXNwbGF5LnZpZXcgPSBkaXNwbGF5LnZpZXcuc2xpY2UoMCwgZmluZFZpZXdJbmRleChjbSwgdG8pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGlzcGxheS52aWV3VG8gPSB0bztcbiAgICB9XG4gICAgX19uYW1lKGFkanVzdFZpZXcsIFwiYWRqdXN0Vmlld1wiKTtcbiAgICBmdW5jdGlvbiBjb3VudERpcnR5VmlldyhjbSkge1xuICAgICAgdmFyIHZpZXcgPSBjbS5kaXNwbGF5LnZpZXcsIGRpcnR5ID0gMDtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCB2aWV3Lmxlbmd0aDsgaTIrKykge1xuICAgICAgICB2YXIgbGluZVZpZXcgPSB2aWV3W2kyXTtcbiAgICAgICAgaWYgKCFsaW5lVmlldy5oaWRkZW4gJiYgKCFsaW5lVmlldy5ub2RlIHx8IGxpbmVWaWV3LmNoYW5nZXMpKSB7XG4gICAgICAgICAgKytkaXJ0eTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGRpcnR5O1xuICAgIH1cbiAgICBfX25hbWUoY291bnREaXJ0eVZpZXcsIFwiY291bnREaXJ0eVZpZXdcIik7XG4gICAgZnVuY3Rpb24gdXBkYXRlU2VsZWN0aW9uKGNtKSB7XG4gICAgICBjbS5kaXNwbGF5LmlucHV0LnNob3dTZWxlY3Rpb24oY20uZGlzcGxheS5pbnB1dC5wcmVwYXJlU2VsZWN0aW9uKCkpO1xuICAgIH1cbiAgICBfX25hbWUodXBkYXRlU2VsZWN0aW9uLCBcInVwZGF0ZVNlbGVjdGlvblwiKTtcbiAgICBmdW5jdGlvbiBwcmVwYXJlU2VsZWN0aW9uKGNtLCBwcmltYXJ5KSB7XG4gICAgICBpZiAocHJpbWFyeSA9PT0gdm9pZCAwKVxuICAgICAgICBwcmltYXJ5ID0gdHJ1ZTtcbiAgICAgIHZhciBkb2MgPSBjbS5kb2MsIHJlc3VsdCA9IHt9O1xuICAgICAgdmFyIGN1ckZyYWdtZW50ID0gcmVzdWx0LmN1cnNvcnMgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICB2YXIgc2VsRnJhZ21lbnQgPSByZXN1bHQuc2VsZWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgdmFyIGN1c3RvbUN1cnNvciA9IGNtLm9wdGlvbnMuJGN1c3RvbUN1cnNvcjtcbiAgICAgIGlmIChjdXN0b21DdXJzb3IpIHtcbiAgICAgICAgcHJpbWFyeSA9IHRydWU7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgZG9jLnNlbC5yYW5nZXMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIGlmICghcHJpbWFyeSAmJiBpMiA9PSBkb2Muc2VsLnByaW1JbmRleCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciByYW5nZTIgPSBkb2Muc2VsLnJhbmdlc1tpMl07XG4gICAgICAgIGlmIChyYW5nZTIuZnJvbSgpLmxpbmUgPj0gY20uZGlzcGxheS52aWV3VG8gfHwgcmFuZ2UyLnRvKCkubGluZSA8IGNtLmRpc3BsYXkudmlld0Zyb20pIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29sbGFwc2VkID0gcmFuZ2UyLmVtcHR5KCk7XG4gICAgICAgIGlmIChjdXN0b21DdXJzb3IpIHtcbiAgICAgICAgICB2YXIgaGVhZCA9IGN1c3RvbUN1cnNvcihjbSwgcmFuZ2UyKTtcbiAgICAgICAgICBpZiAoaGVhZCkge1xuICAgICAgICAgICAgZHJhd1NlbGVjdGlvbkN1cnNvcihjbSwgaGVhZCwgY3VyRnJhZ21lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjb2xsYXBzZWQgfHwgY20ub3B0aW9ucy5zaG93Q3Vyc29yV2hlblNlbGVjdGluZykge1xuICAgICAgICAgIGRyYXdTZWxlY3Rpb25DdXJzb3IoY20sIHJhbmdlMi5oZWFkLCBjdXJGcmFnbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb2xsYXBzZWQpIHtcbiAgICAgICAgICBkcmF3U2VsZWN0aW9uUmFuZ2UoY20sIHJhbmdlMiwgc2VsRnJhZ21lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBfX25hbWUocHJlcGFyZVNlbGVjdGlvbiwgXCJwcmVwYXJlU2VsZWN0aW9uXCIpO1xuICAgIGZ1bmN0aW9uIGRyYXdTZWxlY3Rpb25DdXJzb3IoY20sIGhlYWQsIG91dHB1dCkge1xuICAgICAgdmFyIHBvcyA9IGN1cnNvckNvb3JkcyhjbSwgaGVhZCwgXCJkaXZcIiwgbnVsbCwgbnVsbCwgIWNtLm9wdGlvbnMuc2luZ2xlQ3Vyc29ySGVpZ2h0UGVyTGluZSk7XG4gICAgICB2YXIgY3Vyc29yID0gb3V0cHV0LmFwcGVuZENoaWxkKGVsdChcImRpdlwiLCBcIlxceEEwXCIsIFwiQ29kZU1pcnJvci1jdXJzb3JcIikpO1xuICAgICAgY3Vyc29yLnN0eWxlLmxlZnQgPSBwb3MubGVmdCArIFwicHhcIjtcbiAgICAgIGN1cnNvci5zdHlsZS50b3AgPSBwb3MudG9wICsgXCJweFwiO1xuICAgICAgY3Vyc29yLnN0eWxlLmhlaWdodCA9IE1hdGgubWF4KDAsIHBvcy5ib3R0b20gLSBwb3MudG9wKSAqIGNtLm9wdGlvbnMuY3Vyc29ySGVpZ2h0ICsgXCJweFwiO1xuICAgICAgaWYgKC9cXGJjbS1mYXQtY3Vyc29yXFxiLy50ZXN0KGNtLmdldFdyYXBwZXJFbGVtZW50KCkuY2xhc3NOYW1lKSkge1xuICAgICAgICB2YXIgY2hhclBvcyA9IGNoYXJDb29yZHMoY20sIGhlYWQsIFwiZGl2XCIsIG51bGwsIG51bGwpO1xuICAgICAgICB2YXIgd2lkdGggPSBjaGFyUG9zLnJpZ2h0IC0gY2hhclBvcy5sZWZ0O1xuICAgICAgICBjdXJzb3Iuc3R5bGUud2lkdGggPSAod2lkdGggPiAwID8gd2lkdGggOiBjbS5kZWZhdWx0Q2hhcldpZHRoKCkpICsgXCJweFwiO1xuICAgICAgfVxuICAgICAgaWYgKHBvcy5vdGhlcikge1xuICAgICAgICB2YXIgb3RoZXJDdXJzb3IgPSBvdXRwdXQuYXBwZW5kQ2hpbGQoZWx0KFwiZGl2XCIsIFwiXFx4QTBcIiwgXCJDb2RlTWlycm9yLWN1cnNvciBDb2RlTWlycm9yLXNlY29uZGFyeWN1cnNvclwiKSk7XG4gICAgICAgIG90aGVyQ3Vyc29yLnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuICAgICAgICBvdGhlckN1cnNvci5zdHlsZS5sZWZ0ID0gcG9zLm90aGVyLmxlZnQgKyBcInB4XCI7XG4gICAgICAgIG90aGVyQ3Vyc29yLnN0eWxlLnRvcCA9IHBvcy5vdGhlci50b3AgKyBcInB4XCI7XG4gICAgICAgIG90aGVyQ3Vyc29yLnN0eWxlLmhlaWdodCA9IChwb3Mub3RoZXIuYm90dG9tIC0gcG9zLm90aGVyLnRvcCkgKiAwLjg1ICsgXCJweFwiO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoZHJhd1NlbGVjdGlvbkN1cnNvciwgXCJkcmF3U2VsZWN0aW9uQ3Vyc29yXCIpO1xuICAgIGZ1bmN0aW9uIGNtcENvb3JkcyhhLCBiKSB7XG4gICAgICByZXR1cm4gYS50b3AgLSBiLnRvcCB8fCBhLmxlZnQgLSBiLmxlZnQ7XG4gICAgfVxuICAgIF9fbmFtZShjbXBDb29yZHMsIFwiY21wQ29vcmRzXCIpO1xuICAgIGZ1bmN0aW9uIGRyYXdTZWxlY3Rpb25SYW5nZShjbSwgcmFuZ2UyLCBvdXRwdXQpIHtcbiAgICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheSwgZG9jID0gY20uZG9jO1xuICAgICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgdmFyIHBhZGRpbmcgPSBwYWRkaW5nSChjbS5kaXNwbGF5KSwgbGVmdFNpZGUgPSBwYWRkaW5nLmxlZnQ7XG4gICAgICB2YXIgcmlnaHRTaWRlID0gTWF0aC5tYXgoZGlzcGxheS5zaXplcldpZHRoLCBkaXNwbGF5V2lkdGgoY20pIC0gZGlzcGxheS5zaXplci5vZmZzZXRMZWZ0KSAtIHBhZGRpbmcucmlnaHQ7XG4gICAgICB2YXIgZG9jTFRSID0gZG9jLmRpcmVjdGlvbiA9PSBcImx0clwiO1xuICAgICAgZnVuY3Rpb24gYWRkKGxlZnQsIHRvcCwgd2lkdGgsIGJvdHRvbSkge1xuICAgICAgICBpZiAodG9wIDwgMCkge1xuICAgICAgICAgIHRvcCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdG9wID0gTWF0aC5yb3VuZCh0b3ApO1xuICAgICAgICBib3R0b20gPSBNYXRoLnJvdW5kKGJvdHRvbSk7XG4gICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGVsdChcImRpdlwiLCBudWxsLCBcIkNvZGVNaXJyb3Itc2VsZWN0ZWRcIiwgXCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IFwiICsgbGVmdCArIFwicHg7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IFwiICsgdG9wICsgXCJweDsgd2lkdGg6IFwiICsgKHdpZHRoID09IG51bGwgPyByaWdodFNpZGUgLSBsZWZ0IDogd2lkdGgpICsgXCJweDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIgKyAoYm90dG9tIC0gdG9wKSArIFwicHhcIikpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGFkZCwgXCJhZGRcIik7XG4gICAgICBmdW5jdGlvbiBkcmF3Rm9yTGluZShsaW5lLCBmcm9tQXJnLCB0b0FyZykge1xuICAgICAgICB2YXIgbGluZU9iaiA9IGdldExpbmUoZG9jLCBsaW5lKTtcbiAgICAgICAgdmFyIGxpbmVMZW4gPSBsaW5lT2JqLnRleHQubGVuZ3RoO1xuICAgICAgICB2YXIgc3RhcnQsIGVuZDtcbiAgICAgICAgZnVuY3Rpb24gY29vcmRzKGNoLCBiaWFzKSB7XG4gICAgICAgICAgcmV0dXJuIGNoYXJDb29yZHMoY20sIFBvcyhsaW5lLCBjaCksIFwiZGl2XCIsIGxpbmVPYmosIGJpYXMpO1xuICAgICAgICB9XG4gICAgICAgIF9fbmFtZShjb29yZHMsIFwiY29vcmRzXCIpO1xuICAgICAgICBmdW5jdGlvbiB3cmFwWChwb3MsIGRpciwgc2lkZSkge1xuICAgICAgICAgIHZhciBleHRlbnQgPSB3cmFwcGVkTGluZUV4dGVudENoYXIoY20sIGxpbmVPYmosIG51bGwsIHBvcyk7XG4gICAgICAgICAgdmFyIHByb3AyID0gZGlyID09IFwibHRyXCIgPT0gKHNpZGUgPT0gXCJhZnRlclwiKSA/IFwibGVmdFwiIDogXCJyaWdodFwiO1xuICAgICAgICAgIHZhciBjaCA9IHNpZGUgPT0gXCJhZnRlclwiID8gZXh0ZW50LmJlZ2luIDogZXh0ZW50LmVuZCAtICgvXFxzLy50ZXN0KGxpbmVPYmoudGV4dC5jaGFyQXQoZXh0ZW50LmVuZCAtIDEpKSA/IDIgOiAxKTtcbiAgICAgICAgICByZXR1cm4gY29vcmRzKGNoLCBwcm9wMilbcHJvcDJdO1xuICAgICAgICB9XG4gICAgICAgIF9fbmFtZSh3cmFwWCwgXCJ3cmFwWFwiKTtcbiAgICAgICAgdmFyIG9yZGVyID0gZ2V0T3JkZXIobGluZU9iaiwgZG9jLmRpcmVjdGlvbik7XG4gICAgICAgIGl0ZXJhdGVCaWRpU2VjdGlvbnMob3JkZXIsIGZyb21BcmcgfHwgMCwgdG9BcmcgPT0gbnVsbCA/IGxpbmVMZW4gOiB0b0FyZywgZnVuY3Rpb24oZnJvbSwgdG8sIGRpciwgaTIpIHtcbiAgICAgICAgICB2YXIgbHRyID0gZGlyID09IFwibHRyXCI7XG4gICAgICAgICAgdmFyIGZyb21Qb3MgPSBjb29yZHMoZnJvbSwgbHRyID8gXCJsZWZ0XCIgOiBcInJpZ2h0XCIpO1xuICAgICAgICAgIHZhciB0b1BvcyA9IGNvb3Jkcyh0byAtIDEsIGx0ciA/IFwicmlnaHRcIiA6IFwibGVmdFwiKTtcbiAgICAgICAgICB2YXIgb3BlblN0YXJ0ID0gZnJvbUFyZyA9PSBudWxsICYmIGZyb20gPT0gMCwgb3BlbkVuZCA9IHRvQXJnID09IG51bGwgJiYgdG8gPT0gbGluZUxlbjtcbiAgICAgICAgICB2YXIgZmlyc3QgPSBpMiA9PSAwLCBsYXN0ID0gIW9yZGVyIHx8IGkyID09IG9yZGVyLmxlbmd0aCAtIDE7XG4gICAgICAgICAgaWYgKHRvUG9zLnRvcCAtIGZyb21Qb3MudG9wIDw9IDMpIHtcbiAgICAgICAgICAgIHZhciBvcGVuTGVmdCA9IChkb2NMVFIgPyBvcGVuU3RhcnQgOiBvcGVuRW5kKSAmJiBmaXJzdDtcbiAgICAgICAgICAgIHZhciBvcGVuUmlnaHQgPSAoZG9jTFRSID8gb3BlbkVuZCA6IG9wZW5TdGFydCkgJiYgbGFzdDtcbiAgICAgICAgICAgIHZhciBsZWZ0ID0gb3BlbkxlZnQgPyBsZWZ0U2lkZSA6IChsdHIgPyBmcm9tUG9zIDogdG9Qb3MpLmxlZnQ7XG4gICAgICAgICAgICB2YXIgcmlnaHQgPSBvcGVuUmlnaHQgPyByaWdodFNpZGUgOiAobHRyID8gdG9Qb3MgOiBmcm9tUG9zKS5yaWdodDtcbiAgICAgICAgICAgIGFkZChsZWZ0LCBmcm9tUG9zLnRvcCwgcmlnaHQgLSBsZWZ0LCBmcm9tUG9zLmJvdHRvbSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciB0b3BMZWZ0LCB0b3BSaWdodCwgYm90TGVmdCwgYm90UmlnaHQ7XG4gICAgICAgICAgICBpZiAobHRyKSB7XG4gICAgICAgICAgICAgIHRvcExlZnQgPSBkb2NMVFIgJiYgb3BlblN0YXJ0ICYmIGZpcnN0ID8gbGVmdFNpZGUgOiBmcm9tUG9zLmxlZnQ7XG4gICAgICAgICAgICAgIHRvcFJpZ2h0ID0gZG9jTFRSID8gcmlnaHRTaWRlIDogd3JhcFgoZnJvbSwgZGlyLCBcImJlZm9yZVwiKTtcbiAgICAgICAgICAgICAgYm90TGVmdCA9IGRvY0xUUiA/IGxlZnRTaWRlIDogd3JhcFgodG8sIGRpciwgXCJhZnRlclwiKTtcbiAgICAgICAgICAgICAgYm90UmlnaHQgPSBkb2NMVFIgJiYgb3BlbkVuZCAmJiBsYXN0ID8gcmlnaHRTaWRlIDogdG9Qb3MucmlnaHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0b3BMZWZ0ID0gIWRvY0xUUiA/IGxlZnRTaWRlIDogd3JhcFgoZnJvbSwgZGlyLCBcImJlZm9yZVwiKTtcbiAgICAgICAgICAgICAgdG9wUmlnaHQgPSAhZG9jTFRSICYmIG9wZW5TdGFydCAmJiBmaXJzdCA/IHJpZ2h0U2lkZSA6IGZyb21Qb3MucmlnaHQ7XG4gICAgICAgICAgICAgIGJvdExlZnQgPSAhZG9jTFRSICYmIG9wZW5FbmQgJiYgbGFzdCA/IGxlZnRTaWRlIDogdG9Qb3MubGVmdDtcbiAgICAgICAgICAgICAgYm90UmlnaHQgPSAhZG9jTFRSID8gcmlnaHRTaWRlIDogd3JhcFgodG8sIGRpciwgXCJhZnRlclwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZCh0b3BMZWZ0LCBmcm9tUG9zLnRvcCwgdG9wUmlnaHQgLSB0b3BMZWZ0LCBmcm9tUG9zLmJvdHRvbSk7XG4gICAgICAgICAgICBpZiAoZnJvbVBvcy5ib3R0b20gPCB0b1Bvcy50b3ApIHtcbiAgICAgICAgICAgICAgYWRkKGxlZnRTaWRlLCBmcm9tUG9zLmJvdHRvbSwgbnVsbCwgdG9Qb3MudG9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZChib3RMZWZ0LCB0b1Bvcy50b3AsIGJvdFJpZ2h0IC0gYm90TGVmdCwgdG9Qb3MuYm90dG9tKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFzdGFydCB8fCBjbXBDb29yZHMoZnJvbVBvcywgc3RhcnQpIDwgMCkge1xuICAgICAgICAgICAgc3RhcnQgPSBmcm9tUG9zO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY21wQ29vcmRzKHRvUG9zLCBzdGFydCkgPCAwKSB7XG4gICAgICAgICAgICBzdGFydCA9IHRvUG9zO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWVuZCB8fCBjbXBDb29yZHMoZnJvbVBvcywgZW5kKSA8IDApIHtcbiAgICAgICAgICAgIGVuZCA9IGZyb21Qb3M7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjbXBDb29yZHModG9Qb3MsIGVuZCkgPCAwKSB7XG4gICAgICAgICAgICBlbmQgPSB0b1BvcztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyBzdGFydCwgZW5kIH07XG4gICAgICB9XG4gICAgICBfX25hbWUoZHJhd0ZvckxpbmUsIFwiZHJhd0ZvckxpbmVcIik7XG4gICAgICB2YXIgc0Zyb20gPSByYW5nZTIuZnJvbSgpLCBzVG8gPSByYW5nZTIudG8oKTtcbiAgICAgIGlmIChzRnJvbS5saW5lID09IHNUby5saW5lKSB7XG4gICAgICAgIGRyYXdGb3JMaW5lKHNGcm9tLmxpbmUsIHNGcm9tLmNoLCBzVG8uY2gpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGZyb21MaW5lID0gZ2V0TGluZShkb2MsIHNGcm9tLmxpbmUpLCB0b0xpbmUgPSBnZXRMaW5lKGRvYywgc1RvLmxpbmUpO1xuICAgICAgICB2YXIgc2luZ2xlVkxpbmUgPSB2aXN1YWxMaW5lKGZyb21MaW5lKSA9PSB2aXN1YWxMaW5lKHRvTGluZSk7XG4gICAgICAgIHZhciBsZWZ0RW5kID0gZHJhd0ZvckxpbmUoc0Zyb20ubGluZSwgc0Zyb20uY2gsIHNpbmdsZVZMaW5lID8gZnJvbUxpbmUudGV4dC5sZW5ndGggKyAxIDogbnVsbCkuZW5kO1xuICAgICAgICB2YXIgcmlnaHRTdGFydCA9IGRyYXdGb3JMaW5lKHNUby5saW5lLCBzaW5nbGVWTGluZSA/IDAgOiBudWxsLCBzVG8uY2gpLnN0YXJ0O1xuICAgICAgICBpZiAoc2luZ2xlVkxpbmUpIHtcbiAgICAgICAgICBpZiAobGVmdEVuZC50b3AgPCByaWdodFN0YXJ0LnRvcCAtIDIpIHtcbiAgICAgICAgICAgIGFkZChsZWZ0RW5kLnJpZ2h0LCBsZWZ0RW5kLnRvcCwgbnVsbCwgbGVmdEVuZC5ib3R0b20pO1xuICAgICAgICAgICAgYWRkKGxlZnRTaWRlLCByaWdodFN0YXJ0LnRvcCwgcmlnaHRTdGFydC5sZWZ0LCByaWdodFN0YXJ0LmJvdHRvbSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFkZChsZWZ0RW5kLnJpZ2h0LCBsZWZ0RW5kLnRvcCwgcmlnaHRTdGFydC5sZWZ0IC0gbGVmdEVuZC5yaWdodCwgbGVmdEVuZC5ib3R0b20pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobGVmdEVuZC5ib3R0b20gPCByaWdodFN0YXJ0LnRvcCkge1xuICAgICAgICAgIGFkZChsZWZ0U2lkZSwgbGVmdEVuZC5ib3R0b20sIG51bGwsIHJpZ2h0U3RhcnQudG9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGZyYWdtZW50KTtcbiAgICB9XG4gICAgX19uYW1lKGRyYXdTZWxlY3Rpb25SYW5nZSwgXCJkcmF3U2VsZWN0aW9uUmFuZ2VcIik7XG4gICAgZnVuY3Rpb24gcmVzdGFydEJsaW5rKGNtKSB7XG4gICAgICBpZiAoIWNtLnN0YXRlLmZvY3VzZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5O1xuICAgICAgY2xlYXJJbnRlcnZhbChkaXNwbGF5LmJsaW5rZXIpO1xuICAgICAgdmFyIG9uMiA9IHRydWU7XG4gICAgICBkaXNwbGF5LmN1cnNvckRpdi5zdHlsZS52aXNpYmlsaXR5ID0gXCJcIjtcbiAgICAgIGlmIChjbS5vcHRpb25zLmN1cnNvckJsaW5rUmF0ZSA+IDApIHtcbiAgICAgICAgZGlzcGxheS5ibGlua2VyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKCFjbS5oYXNGb2N1cygpKSB7XG4gICAgICAgICAgICBvbkJsdXIoY20pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkaXNwbGF5LmN1cnNvckRpdi5zdHlsZS52aXNpYmlsaXR5ID0gKG9uMiA9ICFvbjIpID8gXCJcIiA6IFwiaGlkZGVuXCI7XG4gICAgICAgIH0sIGNtLm9wdGlvbnMuY3Vyc29yQmxpbmtSYXRlKTtcbiAgICAgIH0gZWxzZSBpZiAoY20ub3B0aW9ucy5jdXJzb3JCbGlua1JhdGUgPCAwKSB7XG4gICAgICAgIGRpc3BsYXkuY3Vyc29yRGl2LnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUocmVzdGFydEJsaW5rLCBcInJlc3RhcnRCbGlua1wiKTtcbiAgICBmdW5jdGlvbiBlbnN1cmVGb2N1cyhjbSkge1xuICAgICAgaWYgKCFjbS5oYXNGb2N1cygpKSB7XG4gICAgICAgIGNtLmRpc3BsYXkuaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgaWYgKCFjbS5zdGF0ZS5mb2N1c2VkKSB7XG4gICAgICAgICAgb25Gb2N1cyhjbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGVuc3VyZUZvY3VzLCBcImVuc3VyZUZvY3VzXCIpO1xuICAgIGZ1bmN0aW9uIGRlbGF5Qmx1ckV2ZW50KGNtKSB7XG4gICAgICBjbS5zdGF0ZS5kZWxheWluZ0JsdXJFdmVudCA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoY20uc3RhdGUuZGVsYXlpbmdCbHVyRXZlbnQpIHtcbiAgICAgICAgICBjbS5zdGF0ZS5kZWxheWluZ0JsdXJFdmVudCA9IGZhbHNlO1xuICAgICAgICAgIGlmIChjbS5zdGF0ZS5mb2N1c2VkKSB7XG4gICAgICAgICAgICBvbkJsdXIoY20pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gICAgX19uYW1lKGRlbGF5Qmx1ckV2ZW50LCBcImRlbGF5Qmx1ckV2ZW50XCIpO1xuICAgIGZ1bmN0aW9uIG9uRm9jdXMoY20sIGUpIHtcbiAgICAgIGlmIChjbS5zdGF0ZS5kZWxheWluZ0JsdXJFdmVudCAmJiAhY20uc3RhdGUuZHJhZ2dpbmdUZXh0KSB7XG4gICAgICAgIGNtLnN0YXRlLmRlbGF5aW5nQmx1ckV2ZW50ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoY20ub3B0aW9ucy5yZWFkT25seSA9PSBcIm5vY3Vyc29yXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFjbS5zdGF0ZS5mb2N1c2VkKSB7XG4gICAgICAgIHNpZ25hbChjbSwgXCJmb2N1c1wiLCBjbSwgZSk7XG4gICAgICAgIGNtLnN0YXRlLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICBhZGRDbGFzcyhjbS5kaXNwbGF5LndyYXBwZXIsIFwiQ29kZU1pcnJvci1mb2N1c2VkXCIpO1xuICAgICAgICBpZiAoIWNtLmN1ck9wICYmIGNtLmRpc3BsYXkuc2VsRm9yQ29udGV4dE1lbnUgIT0gY20uZG9jLnNlbCkge1xuICAgICAgICAgIGNtLmRpc3BsYXkuaW5wdXQucmVzZXQoKTtcbiAgICAgICAgICBpZiAod2Via2l0KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICByZXR1cm4gY20uZGlzcGxheS5pbnB1dC5yZXNldCh0cnVlKTtcbiAgICAgICAgICAgIH0sIDIwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY20uZGlzcGxheS5pbnB1dC5yZWNlaXZlZEZvY3VzKCk7XG4gICAgICB9XG4gICAgICByZXN0YXJ0QmxpbmsoY20pO1xuICAgIH1cbiAgICBfX25hbWUob25Gb2N1cywgXCJvbkZvY3VzXCIpO1xuICAgIGZ1bmN0aW9uIG9uQmx1cihjbSwgZSkge1xuICAgICAgaWYgKGNtLnN0YXRlLmRlbGF5aW5nQmx1ckV2ZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChjbS5zdGF0ZS5mb2N1c2VkKSB7XG4gICAgICAgIHNpZ25hbChjbSwgXCJibHVyXCIsIGNtLCBlKTtcbiAgICAgICAgY20uc3RhdGUuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICBybUNsYXNzKGNtLmRpc3BsYXkud3JhcHBlciwgXCJDb2RlTWlycm9yLWZvY3VzZWRcIik7XG4gICAgICB9XG4gICAgICBjbGVhckludGVydmFsKGNtLmRpc3BsYXkuYmxpbmtlcik7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoIWNtLnN0YXRlLmZvY3VzZWQpIHtcbiAgICAgICAgICBjbS5kaXNwbGF5LnNoaWZ0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sIDE1MCk7XG4gICAgfVxuICAgIF9fbmFtZShvbkJsdXIsIFwib25CbHVyXCIpO1xuICAgIGZ1bmN0aW9uIHVwZGF0ZUhlaWdodHNJblZpZXdwb3J0KGNtKSB7XG4gICAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXk7XG4gICAgICB2YXIgcHJldkJvdHRvbSA9IGRpc3BsYXkubGluZURpdi5vZmZzZXRUb3A7XG4gICAgICB2YXIgdmlld1RvcCA9IE1hdGgubWF4KDAsIGRpc3BsYXkuc2Nyb2xsZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKTtcbiAgICAgIHZhciBvbGRIZWlnaHQgPSBkaXNwbGF5LmxpbmVEaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgICAgdmFyIG11c3RTY3JvbGwgPSAwO1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGRpc3BsYXkudmlldy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgdmFyIGN1ciA9IGRpc3BsYXkudmlld1tpMl0sIHdyYXBwaW5nID0gY20ub3B0aW9ucy5saW5lV3JhcHBpbmc7XG4gICAgICAgIHZhciBoZWlnaHQgPSB2b2lkIDAsIHdpZHRoID0gMDtcbiAgICAgICAgaWYgKGN1ci5oaWRkZW4pIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBvbGRIZWlnaHQgKz0gY3VyLmxpbmUuaGVpZ2h0O1xuICAgICAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA8IDgpIHtcbiAgICAgICAgICB2YXIgYm90ID0gY3VyLm5vZGUub2Zmc2V0VG9wICsgY3VyLm5vZGUub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgIGhlaWdodCA9IGJvdCAtIHByZXZCb3R0b207XG4gICAgICAgICAgcHJldkJvdHRvbSA9IGJvdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgYm94ID0gY3VyLm5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgaGVpZ2h0ID0gYm94LmJvdHRvbSAtIGJveC50b3A7XG4gICAgICAgICAgaWYgKCF3cmFwcGluZyAmJiBjdXIudGV4dC5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICB3aWR0aCA9IGN1ci50ZXh0LmZpcnN0Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQgLSBib3gubGVmdCAtIDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBkaWZmID0gY3VyLmxpbmUuaGVpZ2h0IC0gaGVpZ2h0O1xuICAgICAgICBpZiAoZGlmZiA+IDVlLTMgfHwgZGlmZiA8IC01ZS0zKSB7XG4gICAgICAgICAgaWYgKG9sZEhlaWdodCA8IHZpZXdUb3ApIHtcbiAgICAgICAgICAgIG11c3RTY3JvbGwgLT0gZGlmZjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdXBkYXRlTGluZUhlaWdodChjdXIubGluZSwgaGVpZ2h0KTtcbiAgICAgICAgICB1cGRhdGVXaWRnZXRIZWlnaHQoY3VyLmxpbmUpO1xuICAgICAgICAgIGlmIChjdXIucmVzdCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjdXIucmVzdC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICB1cGRhdGVXaWRnZXRIZWlnaHQoY3VyLnJlc3Rbal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAod2lkdGggPiBjbS5kaXNwbGF5LnNpemVyV2lkdGgpIHtcbiAgICAgICAgICB2YXIgY2hXaWR0aCA9IE1hdGguY2VpbCh3aWR0aCAvIGNoYXJXaWR0aChjbS5kaXNwbGF5KSk7XG4gICAgICAgICAgaWYgKGNoV2lkdGggPiBjbS5kaXNwbGF5Lm1heExpbmVMZW5ndGgpIHtcbiAgICAgICAgICAgIGNtLmRpc3BsYXkubWF4TGluZUxlbmd0aCA9IGNoV2lkdGg7XG4gICAgICAgICAgICBjbS5kaXNwbGF5Lm1heExpbmUgPSBjdXIubGluZTtcbiAgICAgICAgICAgIGNtLmRpc3BsYXkubWF4TGluZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKE1hdGguYWJzKG11c3RTY3JvbGwpID4gMikge1xuICAgICAgICBkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFRvcCArPSBtdXN0U2Nyb2xsO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUodXBkYXRlSGVpZ2h0c0luVmlld3BvcnQsIFwidXBkYXRlSGVpZ2h0c0luVmlld3BvcnRcIik7XG4gICAgZnVuY3Rpb24gdXBkYXRlV2lkZ2V0SGVpZ2h0KGxpbmUpIHtcbiAgICAgIGlmIChsaW5lLndpZGdldHMpIHtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGxpbmUud2lkZ2V0cy5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgICB2YXIgdyA9IGxpbmUud2lkZ2V0c1tpMl0sIHBhcmVudCA9IHcubm9kZS5wYXJlbnROb2RlO1xuICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIHcuaGVpZ2h0ID0gcGFyZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHVwZGF0ZVdpZGdldEhlaWdodCwgXCJ1cGRhdGVXaWRnZXRIZWlnaHRcIik7XG4gICAgZnVuY3Rpb24gdmlzaWJsZUxpbmVzKGRpc3BsYXksIGRvYywgdmlld3BvcnQpIHtcbiAgICAgIHZhciB0b3AgPSB2aWV3cG9ydCAmJiB2aWV3cG9ydC50b3AgIT0gbnVsbCA/IE1hdGgubWF4KDAsIHZpZXdwb3J0LnRvcCkgOiBkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFRvcDtcbiAgICAgIHRvcCA9IE1hdGguZmxvb3IodG9wIC0gcGFkZGluZ1RvcChkaXNwbGF5KSk7XG4gICAgICB2YXIgYm90dG9tID0gdmlld3BvcnQgJiYgdmlld3BvcnQuYm90dG9tICE9IG51bGwgPyB2aWV3cG9ydC5ib3R0b20gOiB0b3AgKyBkaXNwbGF5LndyYXBwZXIuY2xpZW50SGVpZ2h0O1xuICAgICAgdmFyIGZyb20gPSBsaW5lQXRIZWlnaHQoZG9jLCB0b3ApLCB0byA9IGxpbmVBdEhlaWdodChkb2MsIGJvdHRvbSk7XG4gICAgICBpZiAodmlld3BvcnQgJiYgdmlld3BvcnQuZW5zdXJlKSB7XG4gICAgICAgIHZhciBlbnN1cmVGcm9tID0gdmlld3BvcnQuZW5zdXJlLmZyb20ubGluZSwgZW5zdXJlVG8gPSB2aWV3cG9ydC5lbnN1cmUudG8ubGluZTtcbiAgICAgICAgaWYgKGVuc3VyZUZyb20gPCBmcm9tKSB7XG4gICAgICAgICAgZnJvbSA9IGVuc3VyZUZyb207XG4gICAgICAgICAgdG8gPSBsaW5lQXRIZWlnaHQoZG9jLCBoZWlnaHRBdExpbmUoZ2V0TGluZShkb2MsIGVuc3VyZUZyb20pKSArIGRpc3BsYXkud3JhcHBlci5jbGllbnRIZWlnaHQpO1xuICAgICAgICB9IGVsc2UgaWYgKE1hdGgubWluKGVuc3VyZVRvLCBkb2MubGFzdExpbmUoKSkgPj0gdG8pIHtcbiAgICAgICAgICBmcm9tID0gbGluZUF0SGVpZ2h0KGRvYywgaGVpZ2h0QXRMaW5lKGdldExpbmUoZG9jLCBlbnN1cmVUbykpIC0gZGlzcGxheS53cmFwcGVyLmNsaWVudEhlaWdodCk7XG4gICAgICAgICAgdG8gPSBlbnN1cmVUbztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZnJvbSwgdG86IE1hdGgubWF4KHRvLCBmcm9tICsgMSkgfTtcbiAgICB9XG4gICAgX19uYW1lKHZpc2libGVMaW5lcywgXCJ2aXNpYmxlTGluZXNcIik7XG4gICAgZnVuY3Rpb24gbWF5YmVTY3JvbGxXaW5kb3coY20sIHJlY3QpIHtcbiAgICAgIGlmIChzaWduYWxET01FdmVudChjbSwgXCJzY3JvbGxDdXJzb3JJbnRvVmlld1wiKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXksIGJveCA9IGRpc3BsYXkuc2l6ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIGRvU2Nyb2xsID0gbnVsbDtcbiAgICAgIGlmIChyZWN0LnRvcCArIGJveC50b3AgPCAwKSB7XG4gICAgICAgIGRvU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAocmVjdC5ib3R0b20gKyBib3gudG9wID4gKHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSkge1xuICAgICAgICBkb1Njcm9sbCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGRvU2Nyb2xsICE9IG51bGwgJiYgIXBoYW50b20pIHtcbiAgICAgICAgdmFyIHNjcm9sbE5vZGUgPSBlbHQoXCJkaXZcIiwgXCJcXHUyMDBCXCIsIG51bGwsIFwicG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IFwiICsgKHJlY3QudG9wIC0gZGlzcGxheS52aWV3T2Zmc2V0IC0gcGFkZGluZ1RvcChjbS5kaXNwbGF5KSkgKyBcInB4O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiICsgKHJlY3QuYm90dG9tIC0gcmVjdC50b3AgKyBzY3JvbGxHYXAoY20pICsgZGlzcGxheS5iYXJIZWlnaHQpICsgXCJweDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogXCIgKyByZWN0LmxlZnQgKyBcInB4OyB3aWR0aDogXCIgKyBNYXRoLm1heCgyLCByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KSArIFwicHg7XCIpO1xuICAgICAgICBjbS5kaXNwbGF5LmxpbmVTcGFjZS5hcHBlbmRDaGlsZChzY3JvbGxOb2RlKTtcbiAgICAgICAgc2Nyb2xsTm9kZS5zY3JvbGxJbnRvVmlldyhkb1Njcm9sbCk7XG4gICAgICAgIGNtLmRpc3BsYXkubGluZVNwYWNlLnJlbW92ZUNoaWxkKHNjcm9sbE5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUobWF5YmVTY3JvbGxXaW5kb3csIFwibWF5YmVTY3JvbGxXaW5kb3dcIik7XG4gICAgZnVuY3Rpb24gc2Nyb2xsUG9zSW50b1ZpZXcoY20sIHBvcywgZW5kLCBtYXJnaW4pIHtcbiAgICAgIGlmIChtYXJnaW4gPT0gbnVsbCkge1xuICAgICAgICBtYXJnaW4gPSAwO1xuICAgICAgfVxuICAgICAgdmFyIHJlY3Q7XG4gICAgICBpZiAoIWNtLm9wdGlvbnMubGluZVdyYXBwaW5nICYmIHBvcyA9PSBlbmQpIHtcbiAgICAgICAgZW5kID0gcG9zLnN0aWNreSA9PSBcImJlZm9yZVwiID8gUG9zKHBvcy5saW5lLCBwb3MuY2ggKyAxLCBcImJlZm9yZVwiKSA6IHBvcztcbiAgICAgICAgcG9zID0gcG9zLmNoID8gUG9zKHBvcy5saW5lLCBwb3Muc3RpY2t5ID09IFwiYmVmb3JlXCIgPyBwb3MuY2ggLSAxIDogcG9zLmNoLCBcImFmdGVyXCIpIDogcG9zO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgbGltaXQgPSAwOyBsaW1pdCA8IDU7IGxpbWl0KyspIHtcbiAgICAgICAgdmFyIGNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIGNvb3JkcyA9IGN1cnNvckNvb3JkcyhjbSwgcG9zKTtcbiAgICAgICAgdmFyIGVuZENvb3JkcyA9ICFlbmQgfHwgZW5kID09IHBvcyA/IGNvb3JkcyA6IGN1cnNvckNvb3JkcyhjbSwgZW5kKTtcbiAgICAgICAgcmVjdCA9IHtcbiAgICAgICAgICBsZWZ0OiBNYXRoLm1pbihjb29yZHMubGVmdCwgZW5kQ29vcmRzLmxlZnQpLFxuICAgICAgICAgIHRvcDogTWF0aC5taW4oY29vcmRzLnRvcCwgZW5kQ29vcmRzLnRvcCkgLSBtYXJnaW4sXG4gICAgICAgICAgcmlnaHQ6IE1hdGgubWF4KGNvb3Jkcy5sZWZ0LCBlbmRDb29yZHMubGVmdCksXG4gICAgICAgICAgYm90dG9tOiBNYXRoLm1heChjb29yZHMuYm90dG9tLCBlbmRDb29yZHMuYm90dG9tKSArIG1hcmdpblxuICAgICAgICB9O1xuICAgICAgICB2YXIgc2Nyb2xsUG9zID0gY2FsY3VsYXRlU2Nyb2xsUG9zKGNtLCByZWN0KTtcbiAgICAgICAgdmFyIHN0YXJ0VG9wID0gY20uZG9jLnNjcm9sbFRvcCwgc3RhcnRMZWZ0ID0gY20uZG9jLnNjcm9sbExlZnQ7XG4gICAgICAgIGlmIChzY3JvbGxQb3Muc2Nyb2xsVG9wICE9IG51bGwpIHtcbiAgICAgICAgICB1cGRhdGVTY3JvbGxUb3AoY20sIHNjcm9sbFBvcy5zY3JvbGxUb3ApO1xuICAgICAgICAgIGlmIChNYXRoLmFicyhjbS5kb2Muc2Nyb2xsVG9wIC0gc3RhcnRUb3ApID4gMSkge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzY3JvbGxQb3Muc2Nyb2xsTGVmdCAhPSBudWxsKSB7XG4gICAgICAgICAgc2V0U2Nyb2xsTGVmdChjbSwgc2Nyb2xsUG9zLnNjcm9sbExlZnQpO1xuICAgICAgICAgIGlmIChNYXRoLmFicyhjbS5kb2Muc2Nyb2xsTGVmdCAtIHN0YXJ0TGVmdCkgPiAxKSB7XG4gICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjaGFuZ2VkKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZWN0O1xuICAgIH1cbiAgICBfX25hbWUoc2Nyb2xsUG9zSW50b1ZpZXcsIFwic2Nyb2xsUG9zSW50b1ZpZXdcIik7XG4gICAgZnVuY3Rpb24gc2Nyb2xsSW50b1ZpZXcoY20sIHJlY3QpIHtcbiAgICAgIHZhciBzY3JvbGxQb3MgPSBjYWxjdWxhdGVTY3JvbGxQb3MoY20sIHJlY3QpO1xuICAgICAgaWYgKHNjcm9sbFBvcy5zY3JvbGxUb3AgIT0gbnVsbCkge1xuICAgICAgICB1cGRhdGVTY3JvbGxUb3AoY20sIHNjcm9sbFBvcy5zY3JvbGxUb3ApO1xuICAgICAgfVxuICAgICAgaWYgKHNjcm9sbFBvcy5zY3JvbGxMZWZ0ICE9IG51bGwpIHtcbiAgICAgICAgc2V0U2Nyb2xsTGVmdChjbSwgc2Nyb2xsUG9zLnNjcm9sbExlZnQpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoc2Nyb2xsSW50b1ZpZXcsIFwic2Nyb2xsSW50b1ZpZXdcIik7XG4gICAgZnVuY3Rpb24gY2FsY3VsYXRlU2Nyb2xsUG9zKGNtLCByZWN0KSB7XG4gICAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXksIHNuYXBNYXJnaW4gPSB0ZXh0SGVpZ2h0KGNtLmRpc3BsYXkpO1xuICAgICAgaWYgKHJlY3QudG9wIDwgMCkge1xuICAgICAgICByZWN0LnRvcCA9IDA7XG4gICAgICB9XG4gICAgICB2YXIgc2NyZWVudG9wID0gY20uY3VyT3AgJiYgY20uY3VyT3Auc2Nyb2xsVG9wICE9IG51bGwgPyBjbS5jdXJPcC5zY3JvbGxUb3AgOiBkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFRvcDtcbiAgICAgIHZhciBzY3JlZW4yID0gZGlzcGxheUhlaWdodChjbSksIHJlc3VsdCA9IHt9O1xuICAgICAgaWYgKHJlY3QuYm90dG9tIC0gcmVjdC50b3AgPiBzY3JlZW4yKSB7XG4gICAgICAgIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBzY3JlZW4yO1xuICAgICAgfVxuICAgICAgdmFyIGRvY0JvdHRvbSA9IGNtLmRvYy5oZWlnaHQgKyBwYWRkaW5nVmVydChkaXNwbGF5KTtcbiAgICAgIHZhciBhdFRvcCA9IHJlY3QudG9wIDwgc25hcE1hcmdpbiwgYXRCb3R0b20gPSByZWN0LmJvdHRvbSA+IGRvY0JvdHRvbSAtIHNuYXBNYXJnaW47XG4gICAgICBpZiAocmVjdC50b3AgPCBzY3JlZW50b3ApIHtcbiAgICAgICAgcmVzdWx0LnNjcm9sbFRvcCA9IGF0VG9wID8gMCA6IHJlY3QudG9wO1xuICAgICAgfSBlbHNlIGlmIChyZWN0LmJvdHRvbSA+IHNjcmVlbnRvcCArIHNjcmVlbjIpIHtcbiAgICAgICAgdmFyIG5ld1RvcCA9IE1hdGgubWluKHJlY3QudG9wLCAoYXRCb3R0b20gPyBkb2NCb3R0b20gOiByZWN0LmJvdHRvbSkgLSBzY3JlZW4yKTtcbiAgICAgICAgaWYgKG5ld1RvcCAhPSBzY3JlZW50b3ApIHtcbiAgICAgICAgICByZXN1bHQuc2Nyb2xsVG9wID0gbmV3VG9wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgZ3V0dGVyU3BhY2UgPSBjbS5vcHRpb25zLmZpeGVkR3V0dGVyID8gMCA6IGRpc3BsYXkuZ3V0dGVycy5vZmZzZXRXaWR0aDtcbiAgICAgIHZhciBzY3JlZW5sZWZ0ID0gY20uY3VyT3AgJiYgY20uY3VyT3Auc2Nyb2xsTGVmdCAhPSBudWxsID8gY20uY3VyT3Auc2Nyb2xsTGVmdCA6IGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsTGVmdCAtIGd1dHRlclNwYWNlO1xuICAgICAgdmFyIHNjcmVlbncgPSBkaXNwbGF5V2lkdGgoY20pIC0gZGlzcGxheS5ndXR0ZXJzLm9mZnNldFdpZHRoO1xuICAgICAgdmFyIHRvb1dpZGUgPSByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0ID4gc2NyZWVudztcbiAgICAgIGlmICh0b29XaWRlKSB7XG4gICAgICAgIHJlY3QucmlnaHQgPSByZWN0LmxlZnQgKyBzY3JlZW53O1xuICAgICAgfVxuICAgICAgaWYgKHJlY3QubGVmdCA8IDEwKSB7XG4gICAgICAgIHJlc3VsdC5zY3JvbGxMZWZ0ID0gMDtcbiAgICAgIH0gZWxzZSBpZiAocmVjdC5sZWZ0IDwgc2NyZWVubGVmdCkge1xuICAgICAgICByZXN1bHQuc2Nyb2xsTGVmdCA9IE1hdGgubWF4KDAsIHJlY3QubGVmdCArIGd1dHRlclNwYWNlIC0gKHRvb1dpZGUgPyAwIDogMTApKTtcbiAgICAgIH0gZWxzZSBpZiAocmVjdC5yaWdodCA+IHNjcmVlbncgKyBzY3JlZW5sZWZ0IC0gMykge1xuICAgICAgICByZXN1bHQuc2Nyb2xsTGVmdCA9IHJlY3QucmlnaHQgKyAodG9vV2lkZSA/IDAgOiAxMCkgLSBzY3JlZW53O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgX19uYW1lKGNhbGN1bGF0ZVNjcm9sbFBvcywgXCJjYWxjdWxhdGVTY3JvbGxQb3NcIik7XG4gICAgZnVuY3Rpb24gYWRkVG9TY3JvbGxUb3AoY20sIHRvcCkge1xuICAgICAgaWYgKHRvcCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlc29sdmVTY3JvbGxUb1BvcyhjbSk7XG4gICAgICBjbS5jdXJPcC5zY3JvbGxUb3AgPSAoY20uY3VyT3Auc2Nyb2xsVG9wID09IG51bGwgPyBjbS5kb2Muc2Nyb2xsVG9wIDogY20uY3VyT3Auc2Nyb2xsVG9wKSArIHRvcDtcbiAgICB9XG4gICAgX19uYW1lKGFkZFRvU2Nyb2xsVG9wLCBcImFkZFRvU2Nyb2xsVG9wXCIpO1xuICAgIGZ1bmN0aW9uIGVuc3VyZUN1cnNvclZpc2libGUoY20pIHtcbiAgICAgIHJlc29sdmVTY3JvbGxUb1BvcyhjbSk7XG4gICAgICB2YXIgY3VyID0gY20uZ2V0Q3Vyc29yKCk7XG4gICAgICBjbS5jdXJPcC5zY3JvbGxUb1BvcyA9IHsgZnJvbTogY3VyLCB0bzogY3VyLCBtYXJnaW46IGNtLm9wdGlvbnMuY3Vyc29yU2Nyb2xsTWFyZ2luIH07XG4gICAgfVxuICAgIF9fbmFtZShlbnN1cmVDdXJzb3JWaXNpYmxlLCBcImVuc3VyZUN1cnNvclZpc2libGVcIik7XG4gICAgZnVuY3Rpb24gc2Nyb2xsVG9Db29yZHMoY20sIHgsIHkpIHtcbiAgICAgIGlmICh4ICE9IG51bGwgfHwgeSAhPSBudWxsKSB7XG4gICAgICAgIHJlc29sdmVTY3JvbGxUb1BvcyhjbSk7XG4gICAgICB9XG4gICAgICBpZiAoeCAhPSBudWxsKSB7XG4gICAgICAgIGNtLmN1ck9wLnNjcm9sbExlZnQgPSB4O1xuICAgICAgfVxuICAgICAgaWYgKHkgIT0gbnVsbCkge1xuICAgICAgICBjbS5jdXJPcC5zY3JvbGxUb3AgPSB5O1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoc2Nyb2xsVG9Db29yZHMsIFwic2Nyb2xsVG9Db29yZHNcIik7XG4gICAgZnVuY3Rpb24gc2Nyb2xsVG9SYW5nZShjbSwgcmFuZ2UyKSB7XG4gICAgICByZXNvbHZlU2Nyb2xsVG9Qb3MoY20pO1xuICAgICAgY20uY3VyT3Auc2Nyb2xsVG9Qb3MgPSByYW5nZTI7XG4gICAgfVxuICAgIF9fbmFtZShzY3JvbGxUb1JhbmdlLCBcInNjcm9sbFRvUmFuZ2VcIik7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZVNjcm9sbFRvUG9zKGNtKSB7XG4gICAgICB2YXIgcmFuZ2UyID0gY20uY3VyT3Auc2Nyb2xsVG9Qb3M7XG4gICAgICBpZiAocmFuZ2UyKSB7XG4gICAgICAgIGNtLmN1ck9wLnNjcm9sbFRvUG9zID0gbnVsbDtcbiAgICAgICAgdmFyIGZyb20gPSBlc3RpbWF0ZUNvb3JkcyhjbSwgcmFuZ2UyLmZyb20pLCB0byA9IGVzdGltYXRlQ29vcmRzKGNtLCByYW5nZTIudG8pO1xuICAgICAgICBzY3JvbGxUb0Nvb3Jkc1JhbmdlKGNtLCBmcm9tLCB0bywgcmFuZ2UyLm1hcmdpbik7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShyZXNvbHZlU2Nyb2xsVG9Qb3MsIFwicmVzb2x2ZVNjcm9sbFRvUG9zXCIpO1xuICAgIGZ1bmN0aW9uIHNjcm9sbFRvQ29vcmRzUmFuZ2UoY20sIGZyb20sIHRvLCBtYXJnaW4pIHtcbiAgICAgIHZhciBzUG9zID0gY2FsY3VsYXRlU2Nyb2xsUG9zKGNtLCB7XG4gICAgICAgIGxlZnQ6IE1hdGgubWluKGZyb20ubGVmdCwgdG8ubGVmdCksXG4gICAgICAgIHRvcDogTWF0aC5taW4oZnJvbS50b3AsIHRvLnRvcCkgLSBtYXJnaW4sXG4gICAgICAgIHJpZ2h0OiBNYXRoLm1heChmcm9tLnJpZ2h0LCB0by5yaWdodCksXG4gICAgICAgIGJvdHRvbTogTWF0aC5tYXgoZnJvbS5ib3R0b20sIHRvLmJvdHRvbSkgKyBtYXJnaW5cbiAgICAgIH0pO1xuICAgICAgc2Nyb2xsVG9Db29yZHMoY20sIHNQb3Muc2Nyb2xsTGVmdCwgc1Bvcy5zY3JvbGxUb3ApO1xuICAgIH1cbiAgICBfX25hbWUoc2Nyb2xsVG9Db29yZHNSYW5nZSwgXCJzY3JvbGxUb0Nvb3Jkc1JhbmdlXCIpO1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbFRvcChjbSwgdmFsKSB7XG4gICAgICBpZiAoTWF0aC5hYnMoY20uZG9jLnNjcm9sbFRvcCAtIHZhbCkgPCAyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghZ2Vja28pIHtcbiAgICAgICAgdXBkYXRlRGlzcGxheVNpbXBsZShjbSwgeyB0b3A6IHZhbCB9KTtcbiAgICAgIH1cbiAgICAgIHNldFNjcm9sbFRvcChjbSwgdmFsLCB0cnVlKTtcbiAgICAgIGlmIChnZWNrbykge1xuICAgICAgICB1cGRhdGVEaXNwbGF5U2ltcGxlKGNtKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0V29ya2VyKGNtLCAxMDApO1xuICAgIH1cbiAgICBfX25hbWUodXBkYXRlU2Nyb2xsVG9wLCBcInVwZGF0ZVNjcm9sbFRvcFwiKTtcbiAgICBmdW5jdGlvbiBzZXRTY3JvbGxUb3AoY20sIHZhbCwgZm9yY2VTY3JvbGwpIHtcbiAgICAgIHZhbCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGNtLmRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsSGVpZ2h0IC0gY20uZGlzcGxheS5zY3JvbGxlci5jbGllbnRIZWlnaHQsIHZhbCkpO1xuICAgICAgaWYgKGNtLmRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wID09IHZhbCAmJiAhZm9yY2VTY3JvbGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY20uZG9jLnNjcm9sbFRvcCA9IHZhbDtcbiAgICAgIGNtLmRpc3BsYXkuc2Nyb2xsYmFycy5zZXRTY3JvbGxUb3AodmFsKTtcbiAgICAgIGlmIChjbS5kaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFRvcCAhPSB2YWwpIHtcbiAgICAgICAgY20uZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3AgPSB2YWw7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShzZXRTY3JvbGxUb3AsIFwic2V0U2Nyb2xsVG9wXCIpO1xuICAgIGZ1bmN0aW9uIHNldFNjcm9sbExlZnQoY20sIHZhbCwgaXNTY3JvbGxlciwgZm9yY2VTY3JvbGwpIHtcbiAgICAgIHZhbCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHZhbCwgY20uZGlzcGxheS5zY3JvbGxlci5zY3JvbGxXaWR0aCAtIGNtLmRpc3BsYXkuc2Nyb2xsZXIuY2xpZW50V2lkdGgpKTtcbiAgICAgIGlmICgoaXNTY3JvbGxlciA/IHZhbCA9PSBjbS5kb2Muc2Nyb2xsTGVmdCA6IE1hdGguYWJzKGNtLmRvYy5zY3JvbGxMZWZ0IC0gdmFsKSA8IDIpICYmICFmb3JjZVNjcm9sbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjbS5kb2Muc2Nyb2xsTGVmdCA9IHZhbDtcbiAgICAgIGFsaWduSG9yaXpvbnRhbGx5KGNtKTtcbiAgICAgIGlmIChjbS5kaXNwbGF5LnNjcm9sbGVyLnNjcm9sbExlZnQgIT0gdmFsKSB7XG4gICAgICAgIGNtLmRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IHZhbDtcbiAgICAgIH1cbiAgICAgIGNtLmRpc3BsYXkuc2Nyb2xsYmFycy5zZXRTY3JvbGxMZWZ0KHZhbCk7XG4gICAgfVxuICAgIF9fbmFtZShzZXRTY3JvbGxMZWZ0LCBcInNldFNjcm9sbExlZnRcIik7XG4gICAgZnVuY3Rpb24gbWVhc3VyZUZvclNjcm9sbGJhcnMoY20pIHtcbiAgICAgIHZhciBkID0gY20uZGlzcGxheSwgZ3V0dGVyVyA9IGQuZ3V0dGVycy5vZmZzZXRXaWR0aDtcbiAgICAgIHZhciBkb2NIID0gTWF0aC5yb3VuZChjbS5kb2MuaGVpZ2h0ICsgcGFkZGluZ1ZlcnQoY20uZGlzcGxheSkpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xpZW50SGVpZ2h0OiBkLnNjcm9sbGVyLmNsaWVudEhlaWdodCxcbiAgICAgICAgdmlld0hlaWdodDogZC53cmFwcGVyLmNsaWVudEhlaWdodCxcbiAgICAgICAgc2Nyb2xsV2lkdGg6IGQuc2Nyb2xsZXIuc2Nyb2xsV2lkdGgsXG4gICAgICAgIGNsaWVudFdpZHRoOiBkLnNjcm9sbGVyLmNsaWVudFdpZHRoLFxuICAgICAgICB2aWV3V2lkdGg6IGQud3JhcHBlci5jbGllbnRXaWR0aCxcbiAgICAgICAgYmFyTGVmdDogY20ub3B0aW9ucy5maXhlZEd1dHRlciA/IGd1dHRlclcgOiAwLFxuICAgICAgICBkb2NIZWlnaHQ6IGRvY0gsXG4gICAgICAgIHNjcm9sbEhlaWdodDogZG9jSCArIHNjcm9sbEdhcChjbSkgKyBkLmJhckhlaWdodCxcbiAgICAgICAgbmF0aXZlQmFyV2lkdGg6IGQubmF0aXZlQmFyV2lkdGgsXG4gICAgICAgIGd1dHRlcldpZHRoOiBndXR0ZXJXXG4gICAgICB9O1xuICAgIH1cbiAgICBfX25hbWUobWVhc3VyZUZvclNjcm9sbGJhcnMsIFwibWVhc3VyZUZvclNjcm9sbGJhcnNcIik7XG4gICAgdmFyIE5hdGl2ZVNjcm9sbGJhcnMgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKHBsYWNlLCBzY3JvbGwsIGNtKSB7XG4gICAgICB0aGlzLmNtID0gY207XG4gICAgICB2YXIgdmVydCA9IHRoaXMudmVydCA9IGVsdChcImRpdlwiLCBbZWx0KFwiZGl2XCIsIG51bGwsIG51bGwsIFwibWluLXdpZHRoOiAxcHhcIildLCBcIkNvZGVNaXJyb3ItdnNjcm9sbGJhclwiKTtcbiAgICAgIHZhciBob3JpeiA9IHRoaXMuaG9yaXogPSBlbHQoXCJkaXZcIiwgW2VsdChcImRpdlwiLCBudWxsLCBudWxsLCBcImhlaWdodDogMTAwJTsgbWluLWhlaWdodDogMXB4XCIpXSwgXCJDb2RlTWlycm9yLWhzY3JvbGxiYXJcIik7XG4gICAgICB2ZXJ0LnRhYkluZGV4ID0gaG9yaXoudGFiSW5kZXggPSAtMTtcbiAgICAgIHBsYWNlKHZlcnQpO1xuICAgICAgcGxhY2UoaG9yaXopO1xuICAgICAgb24odmVydCwgXCJzY3JvbGxcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh2ZXJ0LmNsaWVudEhlaWdodCkge1xuICAgICAgICAgIHNjcm9sbCh2ZXJ0LnNjcm9sbFRvcCwgXCJ2ZXJ0aWNhbFwiKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBvbihob3JpeiwgXCJzY3JvbGxcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChob3Jpei5jbGllbnRXaWR0aCkge1xuICAgICAgICAgIHNjcm9sbChob3Jpei5zY3JvbGxMZWZ0LCBcImhvcml6b250YWxcIik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5jaGVja2VkWmVyb1dpZHRoID0gZmFsc2U7XG4gICAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA8IDgpIHtcbiAgICAgICAgdGhpcy5ob3Jpei5zdHlsZS5taW5IZWlnaHQgPSB0aGlzLnZlcnQuc3R5bGUubWluV2lkdGggPSBcIjE4cHhcIjtcbiAgICAgIH1cbiAgICB9LCBcIk5hdGl2ZVNjcm9sbGJhcnNcIik7XG4gICAgTmF0aXZlU2Nyb2xsYmFycy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24obWVhc3VyZSkge1xuICAgICAgdmFyIG5lZWRzSCA9IG1lYXN1cmUuc2Nyb2xsV2lkdGggPiBtZWFzdXJlLmNsaWVudFdpZHRoICsgMTtcbiAgICAgIHZhciBuZWVkc1YgPSBtZWFzdXJlLnNjcm9sbEhlaWdodCA+IG1lYXN1cmUuY2xpZW50SGVpZ2h0ICsgMTtcbiAgICAgIHZhciBzV2lkdGggPSBtZWFzdXJlLm5hdGl2ZUJhcldpZHRoO1xuICAgICAgaWYgKG5lZWRzVikge1xuICAgICAgICB0aGlzLnZlcnQuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgdGhpcy52ZXJ0LnN0eWxlLmJvdHRvbSA9IG5lZWRzSCA/IHNXaWR0aCArIFwicHhcIiA6IFwiMFwiO1xuICAgICAgICB2YXIgdG90YWxIZWlnaHQgPSBtZWFzdXJlLnZpZXdIZWlnaHQgLSAobmVlZHNIID8gc1dpZHRoIDogMCk7XG4gICAgICAgIHRoaXMudmVydC5maXJzdENoaWxkLnN0eWxlLmhlaWdodCA9IE1hdGgubWF4KDAsIG1lYXN1cmUuc2Nyb2xsSGVpZ2h0IC0gbWVhc3VyZS5jbGllbnRIZWlnaHQgKyB0b3RhbEhlaWdodCkgKyBcInB4XCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZlcnQuc2Nyb2xsVG9wID0gMDtcbiAgICAgICAgdGhpcy52ZXJ0LnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuICAgICAgICB0aGlzLnZlcnQuZmlyc3RDaGlsZC5zdHlsZS5oZWlnaHQgPSBcIjBcIjtcbiAgICAgIH1cbiAgICAgIGlmIChuZWVkc0gpIHtcbiAgICAgICAgdGhpcy5ob3Jpei5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xuICAgICAgICB0aGlzLmhvcml6LnN0eWxlLnJpZ2h0ID0gbmVlZHNWID8gc1dpZHRoICsgXCJweFwiIDogXCIwXCI7XG4gICAgICAgIHRoaXMuaG9yaXouc3R5bGUubGVmdCA9IG1lYXN1cmUuYmFyTGVmdCArIFwicHhcIjtcbiAgICAgICAgdmFyIHRvdGFsV2lkdGggPSBtZWFzdXJlLnZpZXdXaWR0aCAtIG1lYXN1cmUuYmFyTGVmdCAtIChuZWVkc1YgPyBzV2lkdGggOiAwKTtcbiAgICAgICAgdGhpcy5ob3Jpei5maXJzdENoaWxkLnN0eWxlLndpZHRoID0gTWF0aC5tYXgoMCwgbWVhc3VyZS5zY3JvbGxXaWR0aCAtIG1lYXN1cmUuY2xpZW50V2lkdGggKyB0b3RhbFdpZHRoKSArIFwicHhcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaG9yaXouc3R5bGUuZGlzcGxheSA9IFwiXCI7XG4gICAgICAgIHRoaXMuaG9yaXouZmlyc3RDaGlsZC5zdHlsZS53aWR0aCA9IFwiMFwiO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmNoZWNrZWRaZXJvV2lkdGggJiYgbWVhc3VyZS5jbGllbnRIZWlnaHQgPiAwKSB7XG4gICAgICAgIGlmIChzV2lkdGggPT0gMCkge1xuICAgICAgICAgIHRoaXMuemVyb1dpZHRoSGFjaygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hlY2tlZFplcm9XaWR0aCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4geyByaWdodDogbmVlZHNWID8gc1dpZHRoIDogMCwgYm90dG9tOiBuZWVkc0ggPyBzV2lkdGggOiAwIH07XG4gICAgfTtcbiAgICBOYXRpdmVTY3JvbGxiYXJzLnByb3RvdHlwZS5zZXRTY3JvbGxMZWZ0ID0gZnVuY3Rpb24ocG9zKSB7XG4gICAgICBpZiAodGhpcy5ob3Jpei5zY3JvbGxMZWZ0ICE9IHBvcykge1xuICAgICAgICB0aGlzLmhvcml6LnNjcm9sbExlZnQgPSBwb3M7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kaXNhYmxlSG9yaXopIHtcbiAgICAgICAgdGhpcy5lbmFibGVaZXJvV2lkdGhCYXIodGhpcy5ob3JpeiwgdGhpcy5kaXNhYmxlSG9yaXosIFwiaG9yaXpcIik7XG4gICAgICB9XG4gICAgfTtcbiAgICBOYXRpdmVTY3JvbGxiYXJzLnByb3RvdHlwZS5zZXRTY3JvbGxUb3AgPSBmdW5jdGlvbihwb3MpIHtcbiAgICAgIGlmICh0aGlzLnZlcnQuc2Nyb2xsVG9wICE9IHBvcykge1xuICAgICAgICB0aGlzLnZlcnQuc2Nyb2xsVG9wID0gcG9zO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZGlzYWJsZVZlcnQpIHtcbiAgICAgICAgdGhpcy5lbmFibGVaZXJvV2lkdGhCYXIodGhpcy52ZXJ0LCB0aGlzLmRpc2FibGVWZXJ0LCBcInZlcnRcIik7XG4gICAgICB9XG4gICAgfTtcbiAgICBOYXRpdmVTY3JvbGxiYXJzLnByb3RvdHlwZS56ZXJvV2lkdGhIYWNrID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdyA9IG1hYyAmJiAhbWFjX2dlTW91bnRhaW5MaW9uID8gXCIxMnB4XCIgOiBcIjE4cHhcIjtcbiAgICAgIHRoaXMuaG9yaXouc3R5bGUuaGVpZ2h0ID0gdGhpcy52ZXJ0LnN0eWxlLndpZHRoID0gdztcbiAgICAgIHRoaXMuaG9yaXouc3R5bGUucG9pbnRlckV2ZW50cyA9IHRoaXMudmVydC5zdHlsZS5wb2ludGVyRXZlbnRzID0gXCJub25lXCI7XG4gICAgICB0aGlzLmRpc2FibGVIb3JpeiA9IG5ldyBEZWxheWVkKCk7XG4gICAgICB0aGlzLmRpc2FibGVWZXJ0ID0gbmV3IERlbGF5ZWQoKTtcbiAgICB9O1xuICAgIE5hdGl2ZVNjcm9sbGJhcnMucHJvdG90eXBlLmVuYWJsZVplcm9XaWR0aEJhciA9IGZ1bmN0aW9uKGJhciwgZGVsYXksIHR5cGUpIHtcbiAgICAgIGJhci5zdHlsZS5wb2ludGVyRXZlbnRzID0gXCJhdXRvXCI7XG4gICAgICBmdW5jdGlvbiBtYXliZURpc2FibGUoKSB7XG4gICAgICAgIHZhciBib3ggPSBiYXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHZhciBlbHQyID0gdHlwZSA9PSBcInZlcnRcIiA/IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoYm94LnJpZ2h0IC0gMSwgKGJveC50b3AgKyBib3guYm90dG9tKSAvIDIpIDogZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCgoYm94LnJpZ2h0ICsgYm94LmxlZnQpIC8gMiwgYm94LmJvdHRvbSAtIDEpO1xuICAgICAgICBpZiAoZWx0MiAhPSBiYXIpIHtcbiAgICAgICAgICBiYXIuc3R5bGUucG9pbnRlckV2ZW50cyA9IFwibm9uZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGF5LnNldCgxZTMsIG1heWJlRGlzYWJsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9fbmFtZShtYXliZURpc2FibGUsIFwibWF5YmVEaXNhYmxlXCIpO1xuICAgICAgZGVsYXkuc2V0KDFlMywgbWF5YmVEaXNhYmxlKTtcbiAgICB9O1xuICAgIE5hdGl2ZVNjcm9sbGJhcnMucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy5ob3Jpei5wYXJlbnROb2RlO1xuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMuaG9yaXopO1xuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMudmVydCk7XG4gICAgfTtcbiAgICB2YXIgTnVsbFNjcm9sbGJhcnMgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKCkge1xuICAgIH0sIFwiTnVsbFNjcm9sbGJhcnNcIik7XG4gICAgTnVsbFNjcm9sbGJhcnMucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHsgYm90dG9tOiAwLCByaWdodDogMCB9O1xuICAgIH07XG4gICAgTnVsbFNjcm9sbGJhcnMucHJvdG90eXBlLnNldFNjcm9sbExlZnQgPSBmdW5jdGlvbigpIHtcbiAgICB9O1xuICAgIE51bGxTY3JvbGxiYXJzLnByb3RvdHlwZS5zZXRTY3JvbGxUb3AgPSBmdW5jdGlvbigpIHtcbiAgICB9O1xuICAgIE51bGxTY3JvbGxiYXJzLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkge1xuICAgIH07XG4gICAgZnVuY3Rpb24gdXBkYXRlU2Nyb2xsYmFycyhjbSwgbWVhc3VyZSkge1xuICAgICAgaWYgKCFtZWFzdXJlKSB7XG4gICAgICAgIG1lYXN1cmUgPSBtZWFzdXJlRm9yU2Nyb2xsYmFycyhjbSk7XG4gICAgICB9XG4gICAgICB2YXIgc3RhcnRXaWR0aCA9IGNtLmRpc3BsYXkuYmFyV2lkdGgsIHN0YXJ0SGVpZ2h0ID0gY20uZGlzcGxheS5iYXJIZWlnaHQ7XG4gICAgICB1cGRhdGVTY3JvbGxiYXJzSW5uZXIoY20sIG1lYXN1cmUpO1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IDQgJiYgc3RhcnRXaWR0aCAhPSBjbS5kaXNwbGF5LmJhcldpZHRoIHx8IHN0YXJ0SGVpZ2h0ICE9IGNtLmRpc3BsYXkuYmFySGVpZ2h0OyBpMisrKSB7XG4gICAgICAgIGlmIChzdGFydFdpZHRoICE9IGNtLmRpc3BsYXkuYmFyV2lkdGggJiYgY20ub3B0aW9ucy5saW5lV3JhcHBpbmcpIHtcbiAgICAgICAgICB1cGRhdGVIZWlnaHRzSW5WaWV3cG9ydChjbSk7XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlU2Nyb2xsYmFyc0lubmVyKGNtLCBtZWFzdXJlRm9yU2Nyb2xsYmFycyhjbSkpO1xuICAgICAgICBzdGFydFdpZHRoID0gY20uZGlzcGxheS5iYXJXaWR0aDtcbiAgICAgICAgc3RhcnRIZWlnaHQgPSBjbS5kaXNwbGF5LmJhckhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHVwZGF0ZVNjcm9sbGJhcnMsIFwidXBkYXRlU2Nyb2xsYmFyc1wiKTtcbiAgICBmdW5jdGlvbiB1cGRhdGVTY3JvbGxiYXJzSW5uZXIoY20sIG1lYXN1cmUpIHtcbiAgICAgIHZhciBkID0gY20uZGlzcGxheTtcbiAgICAgIHZhciBzaXplcyA9IGQuc2Nyb2xsYmFycy51cGRhdGUobWVhc3VyZSk7XG4gICAgICBkLnNpemVyLnN0eWxlLnBhZGRpbmdSaWdodCA9IChkLmJhcldpZHRoID0gc2l6ZXMucmlnaHQpICsgXCJweFwiO1xuICAgICAgZC5zaXplci5zdHlsZS5wYWRkaW5nQm90dG9tID0gKGQuYmFySGVpZ2h0ID0gc2l6ZXMuYm90dG9tKSArIFwicHhcIjtcbiAgICAgIGQuaGVpZ2h0Rm9yY2VyLnN0eWxlLmJvcmRlckJvdHRvbSA9IHNpemVzLmJvdHRvbSArIFwicHggc29saWQgdHJhbnNwYXJlbnRcIjtcbiAgICAgIGlmIChzaXplcy5yaWdodCAmJiBzaXplcy5ib3R0b20pIHtcbiAgICAgICAgZC5zY3JvbGxiYXJGaWxsZXIuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgZC5zY3JvbGxiYXJGaWxsZXIuc3R5bGUuaGVpZ2h0ID0gc2l6ZXMuYm90dG9tICsgXCJweFwiO1xuICAgICAgICBkLnNjcm9sbGJhckZpbGxlci5zdHlsZS53aWR0aCA9IHNpemVzLnJpZ2h0ICsgXCJweFwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZC5zY3JvbGxiYXJGaWxsZXIuc3R5bGUuZGlzcGxheSA9IFwiXCI7XG4gICAgICB9XG4gICAgICBpZiAoc2l6ZXMuYm90dG9tICYmIGNtLm9wdGlvbnMuY292ZXJHdXR0ZXJOZXh0VG9TY3JvbGxiYXIgJiYgY20ub3B0aW9ucy5maXhlZEd1dHRlcikge1xuICAgICAgICBkLmd1dHRlckZpbGxlci5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xuICAgICAgICBkLmd1dHRlckZpbGxlci5zdHlsZS5oZWlnaHQgPSBzaXplcy5ib3R0b20gKyBcInB4XCI7XG4gICAgICAgIGQuZ3V0dGVyRmlsbGVyLnN0eWxlLndpZHRoID0gbWVhc3VyZS5ndXR0ZXJXaWR0aCArIFwicHhcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGQuZ3V0dGVyRmlsbGVyLnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUodXBkYXRlU2Nyb2xsYmFyc0lubmVyLCBcInVwZGF0ZVNjcm9sbGJhcnNJbm5lclwiKTtcbiAgICB2YXIgc2Nyb2xsYmFyTW9kZWwgPSB7IFwibmF0aXZlXCI6IE5hdGl2ZVNjcm9sbGJhcnMsIFwibnVsbFwiOiBOdWxsU2Nyb2xsYmFycyB9O1xuICAgIGZ1bmN0aW9uIGluaXRTY3JvbGxiYXJzKGNtKSB7XG4gICAgICBpZiAoY20uZGlzcGxheS5zY3JvbGxiYXJzKSB7XG4gICAgICAgIGNtLmRpc3BsYXkuc2Nyb2xsYmFycy5jbGVhcigpO1xuICAgICAgICBpZiAoY20uZGlzcGxheS5zY3JvbGxiYXJzLmFkZENsYXNzKSB7XG4gICAgICAgICAgcm1DbGFzcyhjbS5kaXNwbGF5LndyYXBwZXIsIGNtLmRpc3BsYXkuc2Nyb2xsYmFycy5hZGRDbGFzcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNtLmRpc3BsYXkuc2Nyb2xsYmFycyA9IG5ldyBzY3JvbGxiYXJNb2RlbFtjbS5vcHRpb25zLnNjcm9sbGJhclN0eWxlXShmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIGNtLmRpc3BsYXkud3JhcHBlci5pbnNlcnRCZWZvcmUobm9kZSwgY20uZGlzcGxheS5zY3JvbGxiYXJGaWxsZXIpO1xuICAgICAgICBvbihub2RlLCBcIm1vdXNlZG93blwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAoY20uc3RhdGUuZm9jdXNlZCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNtLmRpc3BsYXkuaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiY20tbm90LWNvbnRlbnRcIiwgXCJ0cnVlXCIpO1xuICAgICAgfSwgZnVuY3Rpb24ocG9zLCBheGlzKSB7XG4gICAgICAgIGlmIChheGlzID09IFwiaG9yaXpvbnRhbFwiKSB7XG4gICAgICAgICAgc2V0U2Nyb2xsTGVmdChjbSwgcG9zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVTY3JvbGxUb3AoY20sIHBvcyk7XG4gICAgICAgIH1cbiAgICAgIH0sIGNtKTtcbiAgICAgIGlmIChjbS5kaXNwbGF5LnNjcm9sbGJhcnMuYWRkQ2xhc3MpIHtcbiAgICAgICAgYWRkQ2xhc3MoY20uZGlzcGxheS53cmFwcGVyLCBjbS5kaXNwbGF5LnNjcm9sbGJhcnMuYWRkQ2xhc3MpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoaW5pdFNjcm9sbGJhcnMsIFwiaW5pdFNjcm9sbGJhcnNcIik7XG4gICAgdmFyIG5leHRPcElkID0gMDtcbiAgICBmdW5jdGlvbiBzdGFydE9wZXJhdGlvbihjbSkge1xuICAgICAgY20uY3VyT3AgPSB7XG4gICAgICAgIGNtLFxuICAgICAgICB2aWV3Q2hhbmdlZDogZmFsc2UsXG4gICAgICAgIHN0YXJ0SGVpZ2h0OiBjbS5kb2MuaGVpZ2h0LFxuICAgICAgICBmb3JjZVVwZGF0ZTogZmFsc2UsXG4gICAgICAgIHVwZGF0ZUlucHV0OiAwLFxuICAgICAgICB0eXBpbmc6IGZhbHNlLFxuICAgICAgICBjaGFuZ2VPYmpzOiBudWxsLFxuICAgICAgICBjdXJzb3JBY3Rpdml0eUhhbmRsZXJzOiBudWxsLFxuICAgICAgICBjdXJzb3JBY3Rpdml0eUNhbGxlZDogMCxcbiAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZDogZmFsc2UsXG4gICAgICAgIHVwZGF0ZU1heExpbmU6IGZhbHNlLFxuICAgICAgICBzY3JvbGxMZWZ0OiBudWxsLFxuICAgICAgICBzY3JvbGxUb3A6IG51bGwsXG4gICAgICAgIHNjcm9sbFRvUG9zOiBudWxsLFxuICAgICAgICBmb2N1czogZmFsc2UsXG4gICAgICAgIGlkOiArK25leHRPcElkLFxuICAgICAgICBtYXJrQXJyYXlzOiBudWxsXG4gICAgICB9O1xuICAgICAgcHVzaE9wZXJhdGlvbihjbS5jdXJPcCk7XG4gICAgfVxuICAgIF9fbmFtZShzdGFydE9wZXJhdGlvbiwgXCJzdGFydE9wZXJhdGlvblwiKTtcbiAgICBmdW5jdGlvbiBlbmRPcGVyYXRpb24oY20pIHtcbiAgICAgIHZhciBvcCA9IGNtLmN1ck9wO1xuICAgICAgaWYgKG9wKSB7XG4gICAgICAgIGZpbmlzaE9wZXJhdGlvbihvcCwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgZ3JvdXAub3BzLmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgICAgZ3JvdXAub3BzW2kyXS5jbS5jdXJPcCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVuZE9wZXJhdGlvbnMoZ3JvdXApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGVuZE9wZXJhdGlvbiwgXCJlbmRPcGVyYXRpb25cIik7XG4gICAgZnVuY3Rpb24gZW5kT3BlcmF0aW9ucyhncm91cCkge1xuICAgICAgdmFyIG9wcyA9IGdyb3VwLm9wcztcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBvcHMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIGVuZE9wZXJhdGlvbl9SMShvcHNbaTJdKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkkMTIgPSAwOyBpJDEyIDwgb3BzLmxlbmd0aDsgaSQxMisrKSB7XG4gICAgICAgIGVuZE9wZXJhdGlvbl9XMShvcHNbaSQxMl0pO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgaSQyMiA9IDA7IGkkMjIgPCBvcHMubGVuZ3RoOyBpJDIyKyspIHtcbiAgICAgICAgZW5kT3BlcmF0aW9uX1IyKG9wc1tpJDIyXSk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpJDMgPSAwOyBpJDMgPCBvcHMubGVuZ3RoOyBpJDMrKykge1xuICAgICAgICBlbmRPcGVyYXRpb25fVzIob3BzW2kkM10pO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgaSQ0ID0gMDsgaSQ0IDwgb3BzLmxlbmd0aDsgaSQ0KyspIHtcbiAgICAgICAgZW5kT3BlcmF0aW9uX2ZpbmlzaChvcHNbaSQ0XSk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShlbmRPcGVyYXRpb25zLCBcImVuZE9wZXJhdGlvbnNcIik7XG4gICAgZnVuY3Rpb24gZW5kT3BlcmF0aW9uX1IxKG9wKSB7XG4gICAgICB2YXIgY20gPSBvcC5jbSwgZGlzcGxheSA9IGNtLmRpc3BsYXk7XG4gICAgICBtYXliZUNsaXBTY3JvbGxiYXJzKGNtKTtcbiAgICAgIGlmIChvcC51cGRhdGVNYXhMaW5lKSB7XG4gICAgICAgIGZpbmRNYXhMaW5lKGNtKTtcbiAgICAgIH1cbiAgICAgIG9wLm11c3RVcGRhdGUgPSBvcC52aWV3Q2hhbmdlZCB8fCBvcC5mb3JjZVVwZGF0ZSB8fCBvcC5zY3JvbGxUb3AgIT0gbnVsbCB8fCBvcC5zY3JvbGxUb1BvcyAmJiAob3Auc2Nyb2xsVG9Qb3MuZnJvbS5saW5lIDwgZGlzcGxheS52aWV3RnJvbSB8fCBvcC5zY3JvbGxUb1Bvcy50by5saW5lID49IGRpc3BsYXkudmlld1RvKSB8fCBkaXNwbGF5Lm1heExpbmVDaGFuZ2VkICYmIGNtLm9wdGlvbnMubGluZVdyYXBwaW5nO1xuICAgICAgb3AudXBkYXRlID0gb3AubXVzdFVwZGF0ZSAmJiBuZXcgRGlzcGxheVVwZGF0ZShjbSwgb3AubXVzdFVwZGF0ZSAmJiB7IHRvcDogb3Auc2Nyb2xsVG9wLCBlbnN1cmU6IG9wLnNjcm9sbFRvUG9zIH0sIG9wLmZvcmNlVXBkYXRlKTtcbiAgICB9XG4gICAgX19uYW1lKGVuZE9wZXJhdGlvbl9SMSwgXCJlbmRPcGVyYXRpb25fUjFcIik7XG4gICAgZnVuY3Rpb24gZW5kT3BlcmF0aW9uX1cxKG9wKSB7XG4gICAgICBvcC51cGRhdGVkRGlzcGxheSA9IG9wLm11c3RVcGRhdGUgJiYgdXBkYXRlRGlzcGxheUlmTmVlZGVkKG9wLmNtLCBvcC51cGRhdGUpO1xuICAgIH1cbiAgICBfX25hbWUoZW5kT3BlcmF0aW9uX1cxLCBcImVuZE9wZXJhdGlvbl9XMVwiKTtcbiAgICBmdW5jdGlvbiBlbmRPcGVyYXRpb25fUjIob3ApIHtcbiAgICAgIHZhciBjbSA9IG9wLmNtLCBkaXNwbGF5ID0gY20uZGlzcGxheTtcbiAgICAgIGlmIChvcC51cGRhdGVkRGlzcGxheSkge1xuICAgICAgICB1cGRhdGVIZWlnaHRzSW5WaWV3cG9ydChjbSk7XG4gICAgICB9XG4gICAgICBvcC5iYXJNZWFzdXJlID0gbWVhc3VyZUZvclNjcm9sbGJhcnMoY20pO1xuICAgICAgaWYgKGRpc3BsYXkubWF4TGluZUNoYW5nZWQgJiYgIWNtLm9wdGlvbnMubGluZVdyYXBwaW5nKSB7XG4gICAgICAgIG9wLmFkanVzdFdpZHRoVG8gPSBtZWFzdXJlQ2hhcihjbSwgZGlzcGxheS5tYXhMaW5lLCBkaXNwbGF5Lm1heExpbmUudGV4dC5sZW5ndGgpLmxlZnQgKyAzO1xuICAgICAgICBjbS5kaXNwbGF5LnNpemVyV2lkdGggPSBvcC5hZGp1c3RXaWR0aFRvO1xuICAgICAgICBvcC5iYXJNZWFzdXJlLnNjcm9sbFdpZHRoID0gTWF0aC5tYXgoZGlzcGxheS5zY3JvbGxlci5jbGllbnRXaWR0aCwgZGlzcGxheS5zaXplci5vZmZzZXRMZWZ0ICsgb3AuYWRqdXN0V2lkdGhUbyArIHNjcm9sbEdhcChjbSkgKyBjbS5kaXNwbGF5LmJhcldpZHRoKTtcbiAgICAgICAgb3AubWF4U2Nyb2xsTGVmdCA9IE1hdGgubWF4KDAsIGRpc3BsYXkuc2l6ZXIub2Zmc2V0TGVmdCArIG9wLmFkanVzdFdpZHRoVG8gLSBkaXNwbGF5V2lkdGgoY20pKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcC51cGRhdGVkRGlzcGxheSB8fCBvcC5zZWxlY3Rpb25DaGFuZ2VkKSB7XG4gICAgICAgIG9wLnByZXBhcmVkU2VsZWN0aW9uID0gZGlzcGxheS5pbnB1dC5wcmVwYXJlU2VsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShlbmRPcGVyYXRpb25fUjIsIFwiZW5kT3BlcmF0aW9uX1IyXCIpO1xuICAgIGZ1bmN0aW9uIGVuZE9wZXJhdGlvbl9XMihvcCkge1xuICAgICAgdmFyIGNtID0gb3AuY207XG4gICAgICBpZiAob3AuYWRqdXN0V2lkdGhUbyAhPSBudWxsKSB7XG4gICAgICAgIGNtLmRpc3BsYXkuc2l6ZXIuc3R5bGUubWluV2lkdGggPSBvcC5hZGp1c3RXaWR0aFRvICsgXCJweFwiO1xuICAgICAgICBpZiAob3AubWF4U2Nyb2xsTGVmdCA8IGNtLmRvYy5zY3JvbGxMZWZ0KSB7XG4gICAgICAgICAgc2V0U2Nyb2xsTGVmdChjbSwgTWF0aC5taW4oY20uZGlzcGxheS5zY3JvbGxlci5zY3JvbGxMZWZ0LCBvcC5tYXhTY3JvbGxMZWZ0KSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY20uZGlzcGxheS5tYXhMaW5lQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHRha2VGb2N1cyA9IG9wLmZvY3VzICYmIG9wLmZvY3VzID09IGFjdGl2ZUVsdCgpO1xuICAgICAgaWYgKG9wLnByZXBhcmVkU2VsZWN0aW9uKSB7XG4gICAgICAgIGNtLmRpc3BsYXkuaW5wdXQuc2hvd1NlbGVjdGlvbihvcC5wcmVwYXJlZFNlbGVjdGlvbiwgdGFrZUZvY3VzKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcC51cGRhdGVkRGlzcGxheSB8fCBvcC5zdGFydEhlaWdodCAhPSBjbS5kb2MuaGVpZ2h0KSB7XG4gICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoY20sIG9wLmJhck1lYXN1cmUpO1xuICAgICAgfVxuICAgICAgaWYgKG9wLnVwZGF0ZWREaXNwbGF5KSB7XG4gICAgICAgIHNldERvY3VtZW50SGVpZ2h0KGNtLCBvcC5iYXJNZWFzdXJlKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcC5zZWxlY3Rpb25DaGFuZ2VkKSB7XG4gICAgICAgIHJlc3RhcnRCbGluayhjbSk7XG4gICAgICB9XG4gICAgICBpZiAoY20uc3RhdGUuZm9jdXNlZCAmJiBvcC51cGRhdGVJbnB1dCkge1xuICAgICAgICBjbS5kaXNwbGF5LmlucHV0LnJlc2V0KG9wLnR5cGluZyk7XG4gICAgICB9XG4gICAgICBpZiAodGFrZUZvY3VzKSB7XG4gICAgICAgIGVuc3VyZUZvY3VzKG9wLmNtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGVuZE9wZXJhdGlvbl9XMiwgXCJlbmRPcGVyYXRpb25fVzJcIik7XG4gICAgZnVuY3Rpb24gZW5kT3BlcmF0aW9uX2ZpbmlzaChvcCkge1xuICAgICAgdmFyIGNtID0gb3AuY20sIGRpc3BsYXkgPSBjbS5kaXNwbGF5LCBkb2MgPSBjbS5kb2M7XG4gICAgICBpZiAob3AudXBkYXRlZERpc3BsYXkpIHtcbiAgICAgICAgcG9zdFVwZGF0ZURpc3BsYXkoY20sIG9wLnVwZGF0ZSk7XG4gICAgICB9XG4gICAgICBpZiAoZGlzcGxheS53aGVlbFN0YXJ0WCAhPSBudWxsICYmIChvcC5zY3JvbGxUb3AgIT0gbnVsbCB8fCBvcC5zY3JvbGxMZWZ0ICE9IG51bGwgfHwgb3Auc2Nyb2xsVG9Qb3MpKSB7XG4gICAgICAgIGRpc3BsYXkud2hlZWxTdGFydFggPSBkaXNwbGF5LndoZWVsU3RhcnRZID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChvcC5zY3JvbGxUb3AgIT0gbnVsbCkge1xuICAgICAgICBzZXRTY3JvbGxUb3AoY20sIG9wLnNjcm9sbFRvcCwgb3AuZm9yY2VTY3JvbGwpO1xuICAgICAgfVxuICAgICAgaWYgKG9wLnNjcm9sbExlZnQgIT0gbnVsbCkge1xuICAgICAgICBzZXRTY3JvbGxMZWZ0KGNtLCBvcC5zY3JvbGxMZWZ0LCB0cnVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcC5zY3JvbGxUb1Bvcykge1xuICAgICAgICB2YXIgcmVjdCA9IHNjcm9sbFBvc0ludG9WaWV3KGNtLCBjbGlwUG9zKGRvYywgb3Auc2Nyb2xsVG9Qb3MuZnJvbSksIGNsaXBQb3MoZG9jLCBvcC5zY3JvbGxUb1Bvcy50byksIG9wLnNjcm9sbFRvUG9zLm1hcmdpbik7XG4gICAgICAgIG1heWJlU2Nyb2xsV2luZG93KGNtLCByZWN0KTtcbiAgICAgIH1cbiAgICAgIHZhciBoaWRkZW4gPSBvcC5tYXliZUhpZGRlbk1hcmtlcnMsIHVuaGlkZGVuID0gb3AubWF5YmVVbmhpZGRlbk1hcmtlcnM7XG4gICAgICBpZiAoaGlkZGVuKSB7XG4gICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBoaWRkZW4ubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgICAgaWYgKCFoaWRkZW5baTJdLmxpbmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc2lnbmFsKGhpZGRlbltpMl0sIFwiaGlkZVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh1bmhpZGRlbikge1xuICAgICAgICBmb3IgKHZhciBpJDEyID0gMDsgaSQxMiA8IHVuaGlkZGVuLmxlbmd0aDsgKytpJDEyKSB7XG4gICAgICAgICAgaWYgKHVuaGlkZGVuW2kkMTJdLmxpbmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc2lnbmFsKHVuaGlkZGVuW2kkMTJdLCBcInVuaGlkZVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChkaXNwbGF5LndyYXBwZXIub2Zmc2V0SGVpZ2h0KSB7XG4gICAgICAgIGRvYy5zY3JvbGxUb3AgPSBjbS5kaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFRvcDtcbiAgICAgIH1cbiAgICAgIGlmIChvcC5jaGFuZ2VPYmpzKSB7XG4gICAgICAgIHNpZ25hbChjbSwgXCJjaGFuZ2VzXCIsIGNtLCBvcC5jaGFuZ2VPYmpzKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcC51cGRhdGUpIHtcbiAgICAgICAgb3AudXBkYXRlLmZpbmlzaCgpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoZW5kT3BlcmF0aW9uX2ZpbmlzaCwgXCJlbmRPcGVyYXRpb25fZmluaXNoXCIpO1xuICAgIGZ1bmN0aW9uIHJ1bkluT3AoY20sIGYpIHtcbiAgICAgIGlmIChjbS5jdXJPcCkge1xuICAgICAgICByZXR1cm4gZigpO1xuICAgICAgfVxuICAgICAgc3RhcnRPcGVyYXRpb24oY20pO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGYoKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGVuZE9wZXJhdGlvbihjbSk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShydW5Jbk9wLCBcInJ1bkluT3BcIik7XG4gICAgZnVuY3Rpb24gb3BlcmF0aW9uKGNtLCBmKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChjbS5jdXJPcCkge1xuICAgICAgICAgIHJldHVybiBmLmFwcGx5KGNtLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXJ0T3BlcmF0aW9uKGNtKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZi5hcHBseShjbSwgYXJndW1lbnRzKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBlbmRPcGVyYXRpb24oY20pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICBfX25hbWUob3BlcmF0aW9uLCBcIm9wZXJhdGlvblwiKTtcbiAgICBmdW5jdGlvbiBtZXRob2RPcChmKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmN1ck9wKSB7XG4gICAgICAgICAgcmV0dXJuIGYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFydE9wZXJhdGlvbih0aGlzKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGVuZE9wZXJhdGlvbih0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgX19uYW1lKG1ldGhvZE9wLCBcIm1ldGhvZE9wXCIpO1xuICAgIGZ1bmN0aW9uIGRvY01ldGhvZE9wKGYpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGNtID0gdGhpcy5jbTtcbiAgICAgICAgaWYgKCFjbSB8fCBjbS5jdXJPcCkge1xuICAgICAgICAgIHJldHVybiBmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnRPcGVyYXRpb24oY20pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgZW5kT3BlcmF0aW9uKGNtKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgX19uYW1lKGRvY01ldGhvZE9wLCBcImRvY01ldGhvZE9wXCIpO1xuICAgIGZ1bmN0aW9uIHN0YXJ0V29ya2VyKGNtLCB0aW1lKSB7XG4gICAgICBpZiAoY20uZG9jLmhpZ2hsaWdodEZyb250aWVyIDwgY20uZGlzcGxheS52aWV3VG8pIHtcbiAgICAgICAgY20uc3RhdGUuaGlnaGxpZ2h0LnNldCh0aW1lLCBiaW5kKGhpZ2hsaWdodFdvcmtlciwgY20pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHN0YXJ0V29ya2VyLCBcInN0YXJ0V29ya2VyXCIpO1xuICAgIGZ1bmN0aW9uIGhpZ2hsaWdodFdvcmtlcihjbSkge1xuICAgICAgdmFyIGRvYyA9IGNtLmRvYztcbiAgICAgIGlmIChkb2MuaGlnaGxpZ2h0RnJvbnRpZXIgPj0gY20uZGlzcGxheS52aWV3VG8pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGVuZCA9ICtuZXcgRGF0ZSgpICsgY20ub3B0aW9ucy53b3JrVGltZTtcbiAgICAgIHZhciBjb250ZXh0ID0gZ2V0Q29udGV4dEJlZm9yZShjbSwgZG9jLmhpZ2hsaWdodEZyb250aWVyKTtcbiAgICAgIHZhciBjaGFuZ2VkTGluZXMgPSBbXTtcbiAgICAgIGRvYy5pdGVyKGNvbnRleHQubGluZSwgTWF0aC5taW4oZG9jLmZpcnN0ICsgZG9jLnNpemUsIGNtLmRpc3BsYXkudmlld1RvICsgNTAwKSwgZnVuY3Rpb24obGluZSkge1xuICAgICAgICBpZiAoY29udGV4dC5saW5lID49IGNtLmRpc3BsYXkudmlld0Zyb20pIHtcbiAgICAgICAgICB2YXIgb2xkU3R5bGVzID0gbGluZS5zdHlsZXM7XG4gICAgICAgICAgdmFyIHJlc2V0U3RhdGUgPSBsaW5lLnRleHQubGVuZ3RoID4gY20ub3B0aW9ucy5tYXhIaWdobGlnaHRMZW5ndGggPyBjb3B5U3RhdGUoZG9jLm1vZGUsIGNvbnRleHQuc3RhdGUpIDogbnVsbDtcbiAgICAgICAgICB2YXIgaGlnaGxpZ2h0ZWQgPSBoaWdobGlnaHRMaW5lKGNtLCBsaW5lLCBjb250ZXh0LCB0cnVlKTtcbiAgICAgICAgICBpZiAocmVzZXRTdGF0ZSkge1xuICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IHJlc2V0U3RhdGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxpbmUuc3R5bGVzID0gaGlnaGxpZ2h0ZWQuc3R5bGVzO1xuICAgICAgICAgIHZhciBvbGRDbHMgPSBsaW5lLnN0eWxlQ2xhc3NlcywgbmV3Q2xzID0gaGlnaGxpZ2h0ZWQuY2xhc3NlcztcbiAgICAgICAgICBpZiAobmV3Q2xzKSB7XG4gICAgICAgICAgICBsaW5lLnN0eWxlQ2xhc3NlcyA9IG5ld0NscztcbiAgICAgICAgICB9IGVsc2UgaWYgKG9sZENscykge1xuICAgICAgICAgICAgbGluZS5zdHlsZUNsYXNzZXMgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgaXNjaGFuZ2UgPSAhb2xkU3R5bGVzIHx8IG9sZFN0eWxlcy5sZW5ndGggIT0gbGluZS5zdHlsZXMubGVuZ3RoIHx8IG9sZENscyAhPSBuZXdDbHMgJiYgKCFvbGRDbHMgfHwgIW5ld0NscyB8fCBvbGRDbHMuYmdDbGFzcyAhPSBuZXdDbHMuYmdDbGFzcyB8fCBvbGRDbHMudGV4dENsYXNzICE9IG5ld0Nscy50ZXh0Q2xhc3MpO1xuICAgICAgICAgIGZvciAodmFyIGkyID0gMDsgIWlzY2hhbmdlICYmIGkyIDwgb2xkU3R5bGVzLmxlbmd0aDsgKytpMikge1xuICAgICAgICAgICAgaXNjaGFuZ2UgPSBvbGRTdHlsZXNbaTJdICE9IGxpbmUuc3R5bGVzW2kyXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzY2hhbmdlKSB7XG4gICAgICAgICAgICBjaGFuZ2VkTGluZXMucHVzaChjb250ZXh0LmxpbmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsaW5lLnN0YXRlQWZ0ZXIgPSBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICBjb250ZXh0Lm5leHRMaW5lKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGxpbmUudGV4dC5sZW5ndGggPD0gY20ub3B0aW9ucy5tYXhIaWdobGlnaHRMZW5ndGgpIHtcbiAgICAgICAgICAgIHByb2Nlc3NMaW5lKGNtLCBsaW5lLnRleHQsIGNvbnRleHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsaW5lLnN0YXRlQWZ0ZXIgPSBjb250ZXh0LmxpbmUgJSA1ID09IDAgPyBjb250ZXh0LnNhdmUoKSA6IG51bGw7XG4gICAgICAgICAgY29udGV4dC5uZXh0TGluZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgrbmV3IERhdGUoKSA+IGVuZCkge1xuICAgICAgICAgIHN0YXJ0V29ya2VyKGNtLCBjbS5vcHRpb25zLndvcmtEZWxheSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZG9jLmhpZ2hsaWdodEZyb250aWVyID0gY29udGV4dC5saW5lO1xuICAgICAgZG9jLm1vZGVGcm9udGllciA9IE1hdGgubWF4KGRvYy5tb2RlRnJvbnRpZXIsIGNvbnRleHQubGluZSk7XG4gICAgICBpZiAoY2hhbmdlZExpbmVzLmxlbmd0aCkge1xuICAgICAgICBydW5Jbk9wKGNtLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgY2hhbmdlZExpbmVzLmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgICAgcmVnTGluZUNoYW5nZShjbSwgY2hhbmdlZExpbmVzW2kyXSwgXCJ0ZXh0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShoaWdobGlnaHRXb3JrZXIsIFwiaGlnaGxpZ2h0V29ya2VyXCIpO1xuICAgIHZhciBEaXNwbGF5VXBkYXRlID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihjbSwgdmlld3BvcnQsIGZvcmNlKSB7XG4gICAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXk7XG4gICAgICB0aGlzLnZpZXdwb3J0ID0gdmlld3BvcnQ7XG4gICAgICB0aGlzLnZpc2libGUgPSB2aXNpYmxlTGluZXMoZGlzcGxheSwgY20uZG9jLCB2aWV3cG9ydCk7XG4gICAgICB0aGlzLmVkaXRvcklzSGlkZGVuID0gIWRpc3BsYXkud3JhcHBlci5vZmZzZXRXaWR0aDtcbiAgICAgIHRoaXMud3JhcHBlckhlaWdodCA9IGRpc3BsYXkud3JhcHBlci5jbGllbnRIZWlnaHQ7XG4gICAgICB0aGlzLndyYXBwZXJXaWR0aCA9IGRpc3BsYXkud3JhcHBlci5jbGllbnRXaWR0aDtcbiAgICAgIHRoaXMub2xkRGlzcGxheVdpZHRoID0gZGlzcGxheVdpZHRoKGNtKTtcbiAgICAgIHRoaXMuZm9yY2UgPSBmb3JjZTtcbiAgICAgIHRoaXMuZGltcyA9IGdldERpbWVuc2lvbnMoY20pO1xuICAgICAgdGhpcy5ldmVudHMgPSBbXTtcbiAgICB9LCBcIkRpc3BsYXlVcGRhdGVcIik7XG4gICAgRGlzcGxheVVwZGF0ZS5wcm90b3R5cGUuc2lnbmFsID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICAgICAgaWYgKGhhc0hhbmRsZXIoZW1pdHRlciwgdHlwZSkpIHtcbiAgICAgICAgdGhpcy5ldmVudHMucHVzaChhcmd1bWVudHMpO1xuICAgICAgfVxuICAgIH07XG4gICAgRGlzcGxheVVwZGF0ZS5wcm90b3R5cGUuZmluaXNoID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgdGhpcy5ldmVudHMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIHNpZ25hbC5hcHBseShudWxsLCB0aGlzLmV2ZW50c1tpMl0pO1xuICAgICAgfVxuICAgIH07XG4gICAgZnVuY3Rpb24gbWF5YmVDbGlwU2Nyb2xsYmFycyhjbSkge1xuICAgICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5O1xuICAgICAgaWYgKCFkaXNwbGF5LnNjcm9sbGJhcnNDbGlwcGVkICYmIGRpc3BsYXkuc2Nyb2xsZXIub2Zmc2V0V2lkdGgpIHtcbiAgICAgICAgZGlzcGxheS5uYXRpdmVCYXJXaWR0aCA9IGRpc3BsYXkuc2Nyb2xsZXIub2Zmc2V0V2lkdGggLSBkaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoO1xuICAgICAgICBkaXNwbGF5LmhlaWdodEZvcmNlci5zdHlsZS5oZWlnaHQgPSBzY3JvbGxHYXAoY20pICsgXCJweFwiO1xuICAgICAgICBkaXNwbGF5LnNpemVyLnN0eWxlLm1hcmdpbkJvdHRvbSA9IC1kaXNwbGF5Lm5hdGl2ZUJhcldpZHRoICsgXCJweFwiO1xuICAgICAgICBkaXNwbGF5LnNpemVyLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGggPSBzY3JvbGxHYXAoY20pICsgXCJweFwiO1xuICAgICAgICBkaXNwbGF5LnNjcm9sbGJhcnNDbGlwcGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKG1heWJlQ2xpcFNjcm9sbGJhcnMsIFwibWF5YmVDbGlwU2Nyb2xsYmFyc1wiKTtcbiAgICBmdW5jdGlvbiBzZWxlY3Rpb25TbmFwc2hvdChjbSkge1xuICAgICAgaWYgKGNtLmhhc0ZvY3VzKCkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgYWN0aXZlID0gYWN0aXZlRWx0KCk7XG4gICAgICBpZiAoIWFjdGl2ZSB8fCAhY29udGFpbnMoY20uZGlzcGxheS5saW5lRGl2LCBhY3RpdmUpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IHsgYWN0aXZlRWx0OiBhY3RpdmUgfTtcbiAgICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4gICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChzZWwuYW5jaG9yTm9kZSAmJiBzZWwuZXh0ZW5kICYmIGNvbnRhaW5zKGNtLmRpc3BsYXkubGluZURpdiwgc2VsLmFuY2hvck5vZGUpKSB7XG4gICAgICAgICAgcmVzdWx0LmFuY2hvck5vZGUgPSBzZWwuYW5jaG9yTm9kZTtcbiAgICAgICAgICByZXN1bHQuYW5jaG9yT2Zmc2V0ID0gc2VsLmFuY2hvck9mZnNldDtcbiAgICAgICAgICByZXN1bHQuZm9jdXNOb2RlID0gc2VsLmZvY3VzTm9kZTtcbiAgICAgICAgICByZXN1bHQuZm9jdXNPZmZzZXQgPSBzZWwuZm9jdXNPZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIF9fbmFtZShzZWxlY3Rpb25TbmFwc2hvdCwgXCJzZWxlY3Rpb25TbmFwc2hvdFwiKTtcbiAgICBmdW5jdGlvbiByZXN0b3JlU2VsZWN0aW9uKHNuYXBzaG90KSB7XG4gICAgICBpZiAoIXNuYXBzaG90IHx8ICFzbmFwc2hvdC5hY3RpdmVFbHQgfHwgc25hcHNob3QuYWN0aXZlRWx0ID09IGFjdGl2ZUVsdCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNuYXBzaG90LmFjdGl2ZUVsdC5mb2N1cygpO1xuICAgICAgaWYgKCEvXihJTlBVVHxURVhUQVJFQSkkLy50ZXN0KHNuYXBzaG90LmFjdGl2ZUVsdC5ub2RlTmFtZSkgJiYgc25hcHNob3QuYW5jaG9yTm9kZSAmJiBjb250YWlucyhkb2N1bWVudC5ib2R5LCBzbmFwc2hvdC5hbmNob3JOb2RlKSAmJiBjb250YWlucyhkb2N1bWVudC5ib2R5LCBzbmFwc2hvdC5mb2N1c05vZGUpKSB7XG4gICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCksIHJhbmdlMiA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIHJhbmdlMi5zZXRFbmQoc25hcHNob3QuYW5jaG9yTm9kZSwgc25hcHNob3QuYW5jaG9yT2Zmc2V0KTtcbiAgICAgICAgcmFuZ2UyLmNvbGxhcHNlKGZhbHNlKTtcbiAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICBzZWwuYWRkUmFuZ2UocmFuZ2UyKTtcbiAgICAgICAgc2VsLmV4dGVuZChzbmFwc2hvdC5mb2N1c05vZGUsIHNuYXBzaG90LmZvY3VzT2Zmc2V0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHJlc3RvcmVTZWxlY3Rpb24sIFwicmVzdG9yZVNlbGVjdGlvblwiKTtcbiAgICBmdW5jdGlvbiB1cGRhdGVEaXNwbGF5SWZOZWVkZWQoY20sIHVwZGF0ZSkge1xuICAgICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5LCBkb2MgPSBjbS5kb2M7XG4gICAgICBpZiAodXBkYXRlLmVkaXRvcklzSGlkZGVuKSB7XG4gICAgICAgIHJlc2V0VmlldyhjbSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghdXBkYXRlLmZvcmNlICYmIHVwZGF0ZS52aXNpYmxlLmZyb20gPj0gZGlzcGxheS52aWV3RnJvbSAmJiB1cGRhdGUudmlzaWJsZS50byA8PSBkaXNwbGF5LnZpZXdUbyAmJiAoZGlzcGxheS51cGRhdGVMaW5lTnVtYmVycyA9PSBudWxsIHx8IGRpc3BsYXkudXBkYXRlTGluZU51bWJlcnMgPj0gZGlzcGxheS52aWV3VG8pICYmIGRpc3BsYXkucmVuZGVyZWRWaWV3ID09IGRpc3BsYXkudmlldyAmJiBjb3VudERpcnR5VmlldyhjbSkgPT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAobWF5YmVVcGRhdGVMaW5lTnVtYmVyV2lkdGgoY20pKSB7XG4gICAgICAgIHJlc2V0VmlldyhjbSk7XG4gICAgICAgIHVwZGF0ZS5kaW1zID0gZ2V0RGltZW5zaW9ucyhjbSk7XG4gICAgICB9XG4gICAgICB2YXIgZW5kID0gZG9jLmZpcnN0ICsgZG9jLnNpemU7XG4gICAgICB2YXIgZnJvbSA9IE1hdGgubWF4KHVwZGF0ZS52aXNpYmxlLmZyb20gLSBjbS5vcHRpb25zLnZpZXdwb3J0TWFyZ2luLCBkb2MuZmlyc3QpO1xuICAgICAgdmFyIHRvID0gTWF0aC5taW4oZW5kLCB1cGRhdGUudmlzaWJsZS50byArIGNtLm9wdGlvbnMudmlld3BvcnRNYXJnaW4pO1xuICAgICAgaWYgKGRpc3BsYXkudmlld0Zyb20gPCBmcm9tICYmIGZyb20gLSBkaXNwbGF5LnZpZXdGcm9tIDwgMjApIHtcbiAgICAgICAgZnJvbSA9IE1hdGgubWF4KGRvYy5maXJzdCwgZGlzcGxheS52aWV3RnJvbSk7XG4gICAgICB9XG4gICAgICBpZiAoZGlzcGxheS52aWV3VG8gPiB0byAmJiBkaXNwbGF5LnZpZXdUbyAtIHRvIDwgMjApIHtcbiAgICAgICAgdG8gPSBNYXRoLm1pbihlbmQsIGRpc3BsYXkudmlld1RvKTtcbiAgICAgIH1cbiAgICAgIGlmIChzYXdDb2xsYXBzZWRTcGFucykge1xuICAgICAgICBmcm9tID0gdmlzdWFsTGluZU5vKGNtLmRvYywgZnJvbSk7XG4gICAgICAgIHRvID0gdmlzdWFsTGluZUVuZE5vKGNtLmRvYywgdG8pO1xuICAgICAgfVxuICAgICAgdmFyIGRpZmZlcmVudCA9IGZyb20gIT0gZGlzcGxheS52aWV3RnJvbSB8fCB0byAhPSBkaXNwbGF5LnZpZXdUbyB8fCBkaXNwbGF5Lmxhc3RXcmFwSGVpZ2h0ICE9IHVwZGF0ZS53cmFwcGVySGVpZ2h0IHx8IGRpc3BsYXkubGFzdFdyYXBXaWR0aCAhPSB1cGRhdGUud3JhcHBlcldpZHRoO1xuICAgICAgYWRqdXN0VmlldyhjbSwgZnJvbSwgdG8pO1xuICAgICAgZGlzcGxheS52aWV3T2Zmc2V0ID0gaGVpZ2h0QXRMaW5lKGdldExpbmUoY20uZG9jLCBkaXNwbGF5LnZpZXdGcm9tKSk7XG4gICAgICBjbS5kaXNwbGF5Lm1vdmVyLnN0eWxlLnRvcCA9IGRpc3BsYXkudmlld09mZnNldCArIFwicHhcIjtcbiAgICAgIHZhciB0b1VwZGF0ZSA9IGNvdW50RGlydHlWaWV3KGNtKTtcbiAgICAgIGlmICghZGlmZmVyZW50ICYmIHRvVXBkYXRlID09IDAgJiYgIXVwZGF0ZS5mb3JjZSAmJiBkaXNwbGF5LnJlbmRlcmVkVmlldyA9PSBkaXNwbGF5LnZpZXcgJiYgKGRpc3BsYXkudXBkYXRlTGluZU51bWJlcnMgPT0gbnVsbCB8fCBkaXNwbGF5LnVwZGF0ZUxpbmVOdW1iZXJzID49IGRpc3BsYXkudmlld1RvKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgc2VsU25hcHNob3QgPSBzZWxlY3Rpb25TbmFwc2hvdChjbSk7XG4gICAgICBpZiAodG9VcGRhdGUgPiA0KSB7XG4gICAgICAgIGRpc3BsYXkubGluZURpdi5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgICB9XG4gICAgICBwYXRjaERpc3BsYXkoY20sIGRpc3BsYXkudXBkYXRlTGluZU51bWJlcnMsIHVwZGF0ZS5kaW1zKTtcbiAgICAgIGlmICh0b1VwZGF0ZSA+IDQpIHtcbiAgICAgICAgZGlzcGxheS5saW5lRGl2LnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuICAgICAgfVxuICAgICAgZGlzcGxheS5yZW5kZXJlZFZpZXcgPSBkaXNwbGF5LnZpZXc7XG4gICAgICByZXN0b3JlU2VsZWN0aW9uKHNlbFNuYXBzaG90KTtcbiAgICAgIHJlbW92ZUNoaWxkcmVuKGRpc3BsYXkuY3Vyc29yRGl2KTtcbiAgICAgIHJlbW92ZUNoaWxkcmVuKGRpc3BsYXkuc2VsZWN0aW9uRGl2KTtcbiAgICAgIGRpc3BsYXkuZ3V0dGVycy5zdHlsZS5oZWlnaHQgPSBkaXNwbGF5LnNpemVyLnN0eWxlLm1pbkhlaWdodCA9IDA7XG4gICAgICBpZiAoZGlmZmVyZW50KSB7XG4gICAgICAgIGRpc3BsYXkubGFzdFdyYXBIZWlnaHQgPSB1cGRhdGUud3JhcHBlckhlaWdodDtcbiAgICAgICAgZGlzcGxheS5sYXN0V3JhcFdpZHRoID0gdXBkYXRlLndyYXBwZXJXaWR0aDtcbiAgICAgICAgc3RhcnRXb3JrZXIoY20sIDQwMCk7XG4gICAgICB9XG4gICAgICBkaXNwbGF5LnVwZGF0ZUxpbmVOdW1iZXJzID0gbnVsbDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBfX25hbWUodXBkYXRlRGlzcGxheUlmTmVlZGVkLCBcInVwZGF0ZURpc3BsYXlJZk5lZWRlZFwiKTtcbiAgICBmdW5jdGlvbiBwb3N0VXBkYXRlRGlzcGxheShjbSwgdXBkYXRlKSB7XG4gICAgICB2YXIgdmlld3BvcnQgPSB1cGRhdGUudmlld3BvcnQ7XG4gICAgICBmb3IgKHZhciBmaXJzdCA9IHRydWU7IDsgZmlyc3QgPSBmYWxzZSkge1xuICAgICAgICBpZiAoIWZpcnN0IHx8ICFjbS5vcHRpb25zLmxpbmVXcmFwcGluZyB8fCB1cGRhdGUub2xkRGlzcGxheVdpZHRoID09IGRpc3BsYXlXaWR0aChjbSkpIHtcbiAgICAgICAgICBpZiAodmlld3BvcnQgJiYgdmlld3BvcnQudG9wICE9IG51bGwpIHtcbiAgICAgICAgICAgIHZpZXdwb3J0ID0geyB0b3A6IE1hdGgubWluKGNtLmRvYy5oZWlnaHQgKyBwYWRkaW5nVmVydChjbS5kaXNwbGF5KSAtIGRpc3BsYXlIZWlnaHQoY20pLCB2aWV3cG9ydC50b3ApIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHVwZGF0ZS52aXNpYmxlID0gdmlzaWJsZUxpbmVzKGNtLmRpc3BsYXksIGNtLmRvYywgdmlld3BvcnQpO1xuICAgICAgICAgIGlmICh1cGRhdGUudmlzaWJsZS5mcm9tID49IGNtLmRpc3BsYXkudmlld0Zyb20gJiYgdXBkYXRlLnZpc2libGUudG8gPD0gY20uZGlzcGxheS52aWV3VG8pIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmaXJzdCkge1xuICAgICAgICAgIHVwZGF0ZS52aXNpYmxlID0gdmlzaWJsZUxpbmVzKGNtLmRpc3BsYXksIGNtLmRvYywgdmlld3BvcnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdXBkYXRlRGlzcGxheUlmTmVlZGVkKGNtLCB1cGRhdGUpKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlSGVpZ2h0c0luVmlld3BvcnQoY20pO1xuICAgICAgICB2YXIgYmFyTWVhc3VyZSA9IG1lYXN1cmVGb3JTY3JvbGxiYXJzKGNtKTtcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9uKGNtKTtcbiAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhjbSwgYmFyTWVhc3VyZSk7XG4gICAgICAgIHNldERvY3VtZW50SGVpZ2h0KGNtLCBiYXJNZWFzdXJlKTtcbiAgICAgICAgdXBkYXRlLmZvcmNlID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB1cGRhdGUuc2lnbmFsKGNtLCBcInVwZGF0ZVwiLCBjbSk7XG4gICAgICBpZiAoY20uZGlzcGxheS52aWV3RnJvbSAhPSBjbS5kaXNwbGF5LnJlcG9ydGVkVmlld0Zyb20gfHwgY20uZGlzcGxheS52aWV3VG8gIT0gY20uZGlzcGxheS5yZXBvcnRlZFZpZXdUbykge1xuICAgICAgICB1cGRhdGUuc2lnbmFsKGNtLCBcInZpZXdwb3J0Q2hhbmdlXCIsIGNtLCBjbS5kaXNwbGF5LnZpZXdGcm9tLCBjbS5kaXNwbGF5LnZpZXdUbyk7XG4gICAgICAgIGNtLmRpc3BsYXkucmVwb3J0ZWRWaWV3RnJvbSA9IGNtLmRpc3BsYXkudmlld0Zyb207XG4gICAgICAgIGNtLmRpc3BsYXkucmVwb3J0ZWRWaWV3VG8gPSBjbS5kaXNwbGF5LnZpZXdUbztcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHBvc3RVcGRhdGVEaXNwbGF5LCBcInBvc3RVcGRhdGVEaXNwbGF5XCIpO1xuICAgIGZ1bmN0aW9uIHVwZGF0ZURpc3BsYXlTaW1wbGUoY20sIHZpZXdwb3J0KSB7XG4gICAgICB2YXIgdXBkYXRlID0gbmV3IERpc3BsYXlVcGRhdGUoY20sIHZpZXdwb3J0KTtcbiAgICAgIGlmICh1cGRhdGVEaXNwbGF5SWZOZWVkZWQoY20sIHVwZGF0ZSkpIHtcbiAgICAgICAgdXBkYXRlSGVpZ2h0c0luVmlld3BvcnQoY20pO1xuICAgICAgICBwb3N0VXBkYXRlRGlzcGxheShjbSwgdXBkYXRlKTtcbiAgICAgICAgdmFyIGJhck1lYXN1cmUgPSBtZWFzdXJlRm9yU2Nyb2xsYmFycyhjbSk7XG4gICAgICAgIHVwZGF0ZVNlbGVjdGlvbihjbSk7XG4gICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoY20sIGJhck1lYXN1cmUpO1xuICAgICAgICBzZXREb2N1bWVudEhlaWdodChjbSwgYmFyTWVhc3VyZSk7XG4gICAgICAgIHVwZGF0ZS5maW5pc2goKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHVwZGF0ZURpc3BsYXlTaW1wbGUsIFwidXBkYXRlRGlzcGxheVNpbXBsZVwiKTtcbiAgICBmdW5jdGlvbiBwYXRjaERpc3BsYXkoY20sIHVwZGF0ZU51bWJlcnNGcm9tLCBkaW1zKSB7XG4gICAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXksIGxpbmVOdW1iZXJzID0gY20ub3B0aW9ucy5saW5lTnVtYmVycztcbiAgICAgIHZhciBjb250YWluZXIgPSBkaXNwbGF5LmxpbmVEaXYsIGN1ciA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgZnVuY3Rpb24gcm0obm9kZTIpIHtcbiAgICAgICAgdmFyIG5leHQgPSBub2RlMi5uZXh0U2libGluZztcbiAgICAgICAgaWYgKHdlYmtpdCAmJiBtYWMgJiYgY20uZGlzcGxheS5jdXJyZW50V2hlZWxUYXJnZXQgPT0gbm9kZTIpIHtcbiAgICAgICAgICBub2RlMi5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZTIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlMik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICB9XG4gICAgICBfX25hbWUocm0sIFwicm1cIik7XG4gICAgICB2YXIgdmlldyA9IGRpc3BsYXkudmlldywgbGluZU4gPSBkaXNwbGF5LnZpZXdGcm9tO1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHZpZXcubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIHZhciBsaW5lVmlldyA9IHZpZXdbaTJdO1xuICAgICAgICBpZiAobGluZVZpZXcuaGlkZGVuKVxuICAgICAgICAgIDtcbiAgICAgICAgZWxzZSBpZiAoIWxpbmVWaWV3Lm5vZGUgfHwgbGluZVZpZXcubm9kZS5wYXJlbnROb2RlICE9IGNvbnRhaW5lcikge1xuICAgICAgICAgIHZhciBub2RlID0gYnVpbGRMaW5lRWxlbWVudChjbSwgbGluZVZpZXcsIGxpbmVOLCBkaW1zKTtcbiAgICAgICAgICBjb250YWluZXIuaW5zZXJ0QmVmb3JlKG5vZGUsIGN1cik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2hpbGUgKGN1ciAhPSBsaW5lVmlldy5ub2RlKSB7XG4gICAgICAgICAgICBjdXIgPSBybShjdXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgdXBkYXRlTnVtYmVyID0gbGluZU51bWJlcnMgJiYgdXBkYXRlTnVtYmVyc0Zyb20gIT0gbnVsbCAmJiB1cGRhdGVOdW1iZXJzRnJvbSA8PSBsaW5lTiAmJiBsaW5lVmlldy5saW5lTnVtYmVyO1xuICAgICAgICAgIGlmIChsaW5lVmlldy5jaGFuZ2VzKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXhPZihsaW5lVmlldy5jaGFuZ2VzLCBcImd1dHRlclwiKSA+IC0xKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZU51bWJlciA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdXBkYXRlTGluZUZvckNoYW5nZXMoY20sIGxpbmVWaWV3LCBsaW5lTiwgZGltcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1cGRhdGVOdW1iZXIpIHtcbiAgICAgICAgICAgIHJlbW92ZUNoaWxkcmVuKGxpbmVWaWV3LmxpbmVOdW1iZXIpO1xuICAgICAgICAgICAgbGluZVZpZXcubGluZU51bWJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsaW5lTnVtYmVyRm9yKGNtLm9wdGlvbnMsIGxpbmVOKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXIgPSBsaW5lVmlldy5ub2RlLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgICAgIGxpbmVOICs9IGxpbmVWaWV3LnNpemU7XG4gICAgICB9XG4gICAgICB3aGlsZSAoY3VyKSB7XG4gICAgICAgIGN1ciA9IHJtKGN1cik7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShwYXRjaERpc3BsYXksIFwicGF0Y2hEaXNwbGF5XCIpO1xuICAgIGZ1bmN0aW9uIHVwZGF0ZUd1dHRlclNwYWNlKGRpc3BsYXkpIHtcbiAgICAgIHZhciB3aWR0aCA9IGRpc3BsYXkuZ3V0dGVycy5vZmZzZXRXaWR0aDtcbiAgICAgIGRpc3BsYXkuc2l6ZXIuc3R5bGUubWFyZ2luTGVmdCA9IHdpZHRoICsgXCJweFwiO1xuICAgICAgc2lnbmFsTGF0ZXIoZGlzcGxheSwgXCJndXR0ZXJDaGFuZ2VkXCIsIGRpc3BsYXkpO1xuICAgIH1cbiAgICBfX25hbWUodXBkYXRlR3V0dGVyU3BhY2UsIFwidXBkYXRlR3V0dGVyU3BhY2VcIik7XG4gICAgZnVuY3Rpb24gc2V0RG9jdW1lbnRIZWlnaHQoY20sIG1lYXN1cmUpIHtcbiAgICAgIGNtLmRpc3BsYXkuc2l6ZXIuc3R5bGUubWluSGVpZ2h0ID0gbWVhc3VyZS5kb2NIZWlnaHQgKyBcInB4XCI7XG4gICAgICBjbS5kaXNwbGF5LmhlaWdodEZvcmNlci5zdHlsZS50b3AgPSBtZWFzdXJlLmRvY0hlaWdodCArIFwicHhcIjtcbiAgICAgIGNtLmRpc3BsYXkuZ3V0dGVycy5zdHlsZS5oZWlnaHQgPSBtZWFzdXJlLmRvY0hlaWdodCArIGNtLmRpc3BsYXkuYmFySGVpZ2h0ICsgc2Nyb2xsR2FwKGNtKSArIFwicHhcIjtcbiAgICB9XG4gICAgX19uYW1lKHNldERvY3VtZW50SGVpZ2h0LCBcInNldERvY3VtZW50SGVpZ2h0XCIpO1xuICAgIGZ1bmN0aW9uIGFsaWduSG9yaXpvbnRhbGx5KGNtKSB7XG4gICAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXksIHZpZXcgPSBkaXNwbGF5LnZpZXc7XG4gICAgICBpZiAoIWRpc3BsYXkuYWxpZ25XaWRnZXRzICYmICghZGlzcGxheS5ndXR0ZXJzLmZpcnN0Q2hpbGQgfHwgIWNtLm9wdGlvbnMuZml4ZWRHdXR0ZXIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBjb21wID0gY29tcGVuc2F0ZUZvckhTY3JvbGwoZGlzcGxheSkgLSBkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbExlZnQgKyBjbS5kb2Muc2Nyb2xsTGVmdDtcbiAgICAgIHZhciBndXR0ZXJXID0gZGlzcGxheS5ndXR0ZXJzLm9mZnNldFdpZHRoLCBsZWZ0ID0gY29tcCArIFwicHhcIjtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCB2aWV3Lmxlbmd0aDsgaTIrKykge1xuICAgICAgICBpZiAoIXZpZXdbaTJdLmhpZGRlbikge1xuICAgICAgICAgIGlmIChjbS5vcHRpb25zLmZpeGVkR3V0dGVyKSB7XG4gICAgICAgICAgICBpZiAodmlld1tpMl0uZ3V0dGVyKSB7XG4gICAgICAgICAgICAgIHZpZXdbaTJdLmd1dHRlci5zdHlsZS5sZWZ0ID0gbGVmdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2aWV3W2kyXS5ndXR0ZXJCYWNrZ3JvdW5kKSB7XG4gICAgICAgICAgICAgIHZpZXdbaTJdLmd1dHRlckJhY2tncm91bmQuc3R5bGUubGVmdCA9IGxlZnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBhbGlnbiA9IHZpZXdbaTJdLmFsaWduYWJsZTtcbiAgICAgICAgICBpZiAoYWxpZ24pIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYWxpZ24ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgYWxpZ25bal0uc3R5bGUubGVmdCA9IGxlZnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY20ub3B0aW9ucy5maXhlZEd1dHRlcikge1xuICAgICAgICBkaXNwbGF5Lmd1dHRlcnMuc3R5bGUubGVmdCA9IGNvbXAgKyBndXR0ZXJXICsgXCJweFwiO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoYWxpZ25Ib3Jpem9udGFsbHksIFwiYWxpZ25Ib3Jpem9udGFsbHlcIik7XG4gICAgZnVuY3Rpb24gbWF5YmVVcGRhdGVMaW5lTnVtYmVyV2lkdGgoY20pIHtcbiAgICAgIGlmICghY20ub3B0aW9ucy5saW5lTnVtYmVycykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgZG9jID0gY20uZG9jLCBsYXN0ID0gbGluZU51bWJlckZvcihjbS5vcHRpb25zLCBkb2MuZmlyc3QgKyBkb2Muc2l6ZSAtIDEpLCBkaXNwbGF5ID0gY20uZGlzcGxheTtcbiAgICAgIGlmIChsYXN0Lmxlbmd0aCAhPSBkaXNwbGF5LmxpbmVOdW1DaGFycykge1xuICAgICAgICB2YXIgdGVzdCA9IGRpc3BsYXkubWVhc3VyZS5hcHBlbmRDaGlsZChlbHQoXCJkaXZcIiwgW2VsdChcImRpdlwiLCBsYXN0KV0sIFwiQ29kZU1pcnJvci1saW5lbnVtYmVyIENvZGVNaXJyb3ItZ3V0dGVyLWVsdFwiKSk7XG4gICAgICAgIHZhciBpbm5lclcgPSB0ZXN0LmZpcnN0Q2hpbGQub2Zmc2V0V2lkdGgsIHBhZGRpbmcgPSB0ZXN0Lm9mZnNldFdpZHRoIC0gaW5uZXJXO1xuICAgICAgICBkaXNwbGF5LmxpbmVHdXR0ZXIuc3R5bGUud2lkdGggPSBcIlwiO1xuICAgICAgICBkaXNwbGF5LmxpbmVOdW1Jbm5lcldpZHRoID0gTWF0aC5tYXgoaW5uZXJXLCBkaXNwbGF5LmxpbmVHdXR0ZXIub2Zmc2V0V2lkdGggLSBwYWRkaW5nKSArIDE7XG4gICAgICAgIGRpc3BsYXkubGluZU51bVdpZHRoID0gZGlzcGxheS5saW5lTnVtSW5uZXJXaWR0aCArIHBhZGRpbmc7XG4gICAgICAgIGRpc3BsYXkubGluZU51bUNoYXJzID0gZGlzcGxheS5saW5lTnVtSW5uZXJXaWR0aCA/IGxhc3QubGVuZ3RoIDogLTE7XG4gICAgICAgIGRpc3BsYXkubGluZUd1dHRlci5zdHlsZS53aWR0aCA9IGRpc3BsYXkubGluZU51bVdpZHRoICsgXCJweFwiO1xuICAgICAgICB1cGRhdGVHdXR0ZXJTcGFjZShjbS5kaXNwbGF5KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIF9fbmFtZShtYXliZVVwZGF0ZUxpbmVOdW1iZXJXaWR0aCwgXCJtYXliZVVwZGF0ZUxpbmVOdW1iZXJXaWR0aFwiKTtcbiAgICBmdW5jdGlvbiBnZXRHdXR0ZXJzKGd1dHRlcnMsIGxpbmVOdW1iZXJzKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW10sIHNhd0xpbmVOdW1iZXJzID0gZmFsc2U7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgZ3V0dGVycy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgdmFyIG5hbWUgPSBndXR0ZXJzW2kyXSwgc3R5bGUgPSBudWxsO1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHN0eWxlID0gbmFtZS5zdHlsZTtcbiAgICAgICAgICBuYW1lID0gbmFtZS5jbGFzc05hbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUgPT0gXCJDb2RlTWlycm9yLWxpbmVudW1iZXJzXCIpIHtcbiAgICAgICAgICBpZiAoIWxpbmVOdW1iZXJzKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2F3TGluZU51bWJlcnMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaCh7IGNsYXNzTmFtZTogbmFtZSwgc3R5bGUgfSk7XG4gICAgICB9XG4gICAgICBpZiAobGluZU51bWJlcnMgJiYgIXNhd0xpbmVOdW1iZXJzKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgY2xhc3NOYW1lOiBcIkNvZGVNaXJyb3ItbGluZW51bWJlcnNcIiwgc3R5bGU6IG51bGwgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBfX25hbWUoZ2V0R3V0dGVycywgXCJnZXRHdXR0ZXJzXCIpO1xuICAgIGZ1bmN0aW9uIHJlbmRlckd1dHRlcnMoZGlzcGxheSkge1xuICAgICAgdmFyIGd1dHRlcnMgPSBkaXNwbGF5Lmd1dHRlcnMsIHNwZWNzID0gZGlzcGxheS5ndXR0ZXJTcGVjcztcbiAgICAgIHJlbW92ZUNoaWxkcmVuKGd1dHRlcnMpO1xuICAgICAgZGlzcGxheS5saW5lR3V0dGVyID0gbnVsbDtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBzcGVjcy5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgdmFyIHJlZiA9IHNwZWNzW2kyXTtcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9IHJlZi5jbGFzc05hbWU7XG4gICAgICAgIHZhciBzdHlsZSA9IHJlZi5zdHlsZTtcbiAgICAgICAgdmFyIGdFbHQgPSBndXR0ZXJzLmFwcGVuZENoaWxkKGVsdChcImRpdlwiLCBudWxsLCBcIkNvZGVNaXJyb3ItZ3V0dGVyIFwiICsgY2xhc3NOYW1lKSk7XG4gICAgICAgIGlmIChzdHlsZSkge1xuICAgICAgICAgIGdFbHQuc3R5bGUuY3NzVGV4dCA9IHN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjbGFzc05hbWUgPT0gXCJDb2RlTWlycm9yLWxpbmVudW1iZXJzXCIpIHtcbiAgICAgICAgICBkaXNwbGF5LmxpbmVHdXR0ZXIgPSBnRWx0O1xuICAgICAgICAgIGdFbHQuc3R5bGUud2lkdGggPSAoZGlzcGxheS5saW5lTnVtV2lkdGggfHwgMSkgKyBcInB4XCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGd1dHRlcnMuc3R5bGUuZGlzcGxheSA9IHNwZWNzLmxlbmd0aCA/IFwiXCIgOiBcIm5vbmVcIjtcbiAgICAgIHVwZGF0ZUd1dHRlclNwYWNlKGRpc3BsYXkpO1xuICAgIH1cbiAgICBfX25hbWUocmVuZGVyR3V0dGVycywgXCJyZW5kZXJHdXR0ZXJzXCIpO1xuICAgIGZ1bmN0aW9uIHVwZGF0ZUd1dHRlcnMoY20pIHtcbiAgICAgIHJlbmRlckd1dHRlcnMoY20uZGlzcGxheSk7XG4gICAgICByZWdDaGFuZ2UoY20pO1xuICAgICAgYWxpZ25Ib3Jpem9udGFsbHkoY20pO1xuICAgIH1cbiAgICBfX25hbWUodXBkYXRlR3V0dGVycywgXCJ1cGRhdGVHdXR0ZXJzXCIpO1xuICAgIGZ1bmN0aW9uIERpc3BsYXkocGxhY2UsIGRvYywgaW5wdXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBkID0gdGhpcztcbiAgICAgIHRoaXMuaW5wdXQgPSBpbnB1dDtcbiAgICAgIGQuc2Nyb2xsYmFyRmlsbGVyID0gZWx0KFwiZGl2XCIsIG51bGwsIFwiQ29kZU1pcnJvci1zY3JvbGxiYXItZmlsbGVyXCIpO1xuICAgICAgZC5zY3JvbGxiYXJGaWxsZXIuc2V0QXR0cmlidXRlKFwiY20tbm90LWNvbnRlbnRcIiwgXCJ0cnVlXCIpO1xuICAgICAgZC5ndXR0ZXJGaWxsZXIgPSBlbHQoXCJkaXZcIiwgbnVsbCwgXCJDb2RlTWlycm9yLWd1dHRlci1maWxsZXJcIik7XG4gICAgICBkLmd1dHRlckZpbGxlci5zZXRBdHRyaWJ1dGUoXCJjbS1ub3QtY29udGVudFwiLCBcInRydWVcIik7XG4gICAgICBkLmxpbmVEaXYgPSBlbHRQKFwiZGl2XCIsIG51bGwsIFwiQ29kZU1pcnJvci1jb2RlXCIpO1xuICAgICAgZC5zZWxlY3Rpb25EaXYgPSBlbHQoXCJkaXZcIiwgbnVsbCwgbnVsbCwgXCJwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDFcIik7XG4gICAgICBkLmN1cnNvckRpdiA9IGVsdChcImRpdlwiLCBudWxsLCBcIkNvZGVNaXJyb3ItY3Vyc29yc1wiKTtcbiAgICAgIGQubWVhc3VyZSA9IGVsdChcImRpdlwiLCBudWxsLCBcIkNvZGVNaXJyb3ItbWVhc3VyZVwiKTtcbiAgICAgIGQubGluZU1lYXN1cmUgPSBlbHQoXCJkaXZcIiwgbnVsbCwgXCJDb2RlTWlycm9yLW1lYXN1cmVcIik7XG4gICAgICBkLmxpbmVTcGFjZSA9IGVsdFAoXCJkaXZcIiwgW2QubWVhc3VyZSwgZC5saW5lTWVhc3VyZSwgZC5zZWxlY3Rpb25EaXYsIGQuY3Vyc29yRGl2LCBkLmxpbmVEaXZdLCBudWxsLCBcInBvc2l0aW9uOiByZWxhdGl2ZTsgb3V0bGluZTogbm9uZVwiKTtcbiAgICAgIHZhciBsaW5lcyA9IGVsdFAoXCJkaXZcIiwgW2QubGluZVNwYWNlXSwgXCJDb2RlTWlycm9yLWxpbmVzXCIpO1xuICAgICAgZC5tb3ZlciA9IGVsdChcImRpdlwiLCBbbGluZXNdLCBudWxsLCBcInBvc2l0aW9uOiByZWxhdGl2ZVwiKTtcbiAgICAgIGQuc2l6ZXIgPSBlbHQoXCJkaXZcIiwgW2QubW92ZXJdLCBcIkNvZGVNaXJyb3Itc2l6ZXJcIik7XG4gICAgICBkLnNpemVyV2lkdGggPSBudWxsO1xuICAgICAgZC5oZWlnaHRGb3JjZXIgPSBlbHQoXCJkaXZcIiwgbnVsbCwgbnVsbCwgXCJwb3NpdGlvbjogYWJzb2x1dGU7IGhlaWdodDogXCIgKyBzY3JvbGxlckdhcCArIFwicHg7IHdpZHRoOiAxcHg7XCIpO1xuICAgICAgZC5ndXR0ZXJzID0gZWx0KFwiZGl2XCIsIG51bGwsIFwiQ29kZU1pcnJvci1ndXR0ZXJzXCIpO1xuICAgICAgZC5saW5lR3V0dGVyID0gbnVsbDtcbiAgICAgIGQuc2Nyb2xsZXIgPSBlbHQoXCJkaXZcIiwgW2Quc2l6ZXIsIGQuaGVpZ2h0Rm9yY2VyLCBkLmd1dHRlcnNdLCBcIkNvZGVNaXJyb3Itc2Nyb2xsXCIpO1xuICAgICAgZC5zY3JvbGxlci5zZXRBdHRyaWJ1dGUoXCJ0YWJJbmRleFwiLCBcIi0xXCIpO1xuICAgICAgZC53cmFwcGVyID0gZWx0KFwiZGl2XCIsIFtkLnNjcm9sbGJhckZpbGxlciwgZC5ndXR0ZXJGaWxsZXIsIGQuc2Nyb2xsZXJdLCBcIkNvZGVNaXJyb3JcIik7XG4gICAgICBkLndyYXBwZXIuc2V0QXR0cmlidXRlKFwidHJhbnNsYXRlXCIsIFwibm9cIik7XG4gICAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA8IDgpIHtcbiAgICAgICAgZC5ndXR0ZXJzLnN0eWxlLnpJbmRleCA9IC0xO1xuICAgICAgICBkLnNjcm9sbGVyLnN0eWxlLnBhZGRpbmdSaWdodCA9IDA7XG4gICAgICB9XG4gICAgICBpZiAoIXdlYmtpdCAmJiAhKGdlY2tvICYmIG1vYmlsZSkpIHtcbiAgICAgICAgZC5zY3JvbGxlci5kcmFnZ2FibGUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHBsYWNlKSB7XG4gICAgICAgIGlmIChwbGFjZS5hcHBlbmRDaGlsZCkge1xuICAgICAgICAgIHBsYWNlLmFwcGVuZENoaWxkKGQud3JhcHBlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGxhY2UoZC53cmFwcGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZC52aWV3RnJvbSA9IGQudmlld1RvID0gZG9jLmZpcnN0O1xuICAgICAgZC5yZXBvcnRlZFZpZXdGcm9tID0gZC5yZXBvcnRlZFZpZXdUbyA9IGRvYy5maXJzdDtcbiAgICAgIGQudmlldyA9IFtdO1xuICAgICAgZC5yZW5kZXJlZFZpZXcgPSBudWxsO1xuICAgICAgZC5leHRlcm5hbE1lYXN1cmVkID0gbnVsbDtcbiAgICAgIGQudmlld09mZnNldCA9IDA7XG4gICAgICBkLmxhc3RXcmFwSGVpZ2h0ID0gZC5sYXN0V3JhcFdpZHRoID0gMDtcbiAgICAgIGQudXBkYXRlTGluZU51bWJlcnMgPSBudWxsO1xuICAgICAgZC5uYXRpdmVCYXJXaWR0aCA9IGQuYmFySGVpZ2h0ID0gZC5iYXJXaWR0aCA9IDA7XG4gICAgICBkLnNjcm9sbGJhcnNDbGlwcGVkID0gZmFsc2U7XG4gICAgICBkLmxpbmVOdW1XaWR0aCA9IGQubGluZU51bUlubmVyV2lkdGggPSBkLmxpbmVOdW1DaGFycyA9IG51bGw7XG4gICAgICBkLmFsaWduV2lkZ2V0cyA9IGZhbHNlO1xuICAgICAgZC5jYWNoZWRDaGFyV2lkdGggPSBkLmNhY2hlZFRleHRIZWlnaHQgPSBkLmNhY2hlZFBhZGRpbmdIID0gbnVsbDtcbiAgICAgIGQubWF4TGluZSA9IG51bGw7XG4gICAgICBkLm1heExpbmVMZW5ndGggPSAwO1xuICAgICAgZC5tYXhMaW5lQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgZC53aGVlbERYID0gZC53aGVlbERZID0gZC53aGVlbFN0YXJ0WCA9IGQud2hlZWxTdGFydFkgPSBudWxsO1xuICAgICAgZC5zaGlmdCA9IGZhbHNlO1xuICAgICAgZC5zZWxGb3JDb250ZXh0TWVudSA9IG51bGw7XG4gICAgICBkLmFjdGl2ZVRvdWNoID0gbnVsbDtcbiAgICAgIGQuZ3V0dGVyU3BlY3MgPSBnZXRHdXR0ZXJzKG9wdGlvbnMuZ3V0dGVycywgb3B0aW9ucy5saW5lTnVtYmVycyk7XG4gICAgICByZW5kZXJHdXR0ZXJzKGQpO1xuICAgICAgaW5wdXQuaW5pdChkKTtcbiAgICB9XG4gICAgX19uYW1lKERpc3BsYXksIFwiRGlzcGxheVwiKTtcbiAgICB2YXIgd2hlZWxTYW1wbGVzID0gMCwgd2hlZWxQaXhlbHNQZXJVbml0ID0gbnVsbDtcbiAgICBpZiAoaWUpIHtcbiAgICAgIHdoZWVsUGl4ZWxzUGVyVW5pdCA9IC0wLjUzO1xuICAgIH0gZWxzZSBpZiAoZ2Vja28pIHtcbiAgICAgIHdoZWVsUGl4ZWxzUGVyVW5pdCA9IDE1O1xuICAgIH0gZWxzZSBpZiAoY2hyb21lKSB7XG4gICAgICB3aGVlbFBpeGVsc1BlclVuaXQgPSAtMC43O1xuICAgIH0gZWxzZSBpZiAoc2FmYXJpKSB7XG4gICAgICB3aGVlbFBpeGVsc1BlclVuaXQgPSAtMSAvIDM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdoZWVsRXZlbnREZWx0YShlKSB7XG4gICAgICB2YXIgZHggPSBlLndoZWVsRGVsdGFYLCBkeSA9IGUud2hlZWxEZWx0YVk7XG4gICAgICBpZiAoZHggPT0gbnVsbCAmJiBlLmRldGFpbCAmJiBlLmF4aXMgPT0gZS5IT1JJWk9OVEFMX0FYSVMpIHtcbiAgICAgICAgZHggPSBlLmRldGFpbDtcbiAgICAgIH1cbiAgICAgIGlmIChkeSA9PSBudWxsICYmIGUuZGV0YWlsICYmIGUuYXhpcyA9PSBlLlZFUlRJQ0FMX0FYSVMpIHtcbiAgICAgICAgZHkgPSBlLmRldGFpbDtcbiAgICAgIH0gZWxzZSBpZiAoZHkgPT0gbnVsbCkge1xuICAgICAgICBkeSA9IGUud2hlZWxEZWx0YTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHg6IGR4LCB5OiBkeSB9O1xuICAgIH1cbiAgICBfX25hbWUod2hlZWxFdmVudERlbHRhLCBcIndoZWVsRXZlbnREZWx0YVwiKTtcbiAgICBmdW5jdGlvbiB3aGVlbEV2ZW50UGl4ZWxzKGUpIHtcbiAgICAgIHZhciBkZWx0YSA9IHdoZWVsRXZlbnREZWx0YShlKTtcbiAgICAgIGRlbHRhLnggKj0gd2hlZWxQaXhlbHNQZXJVbml0O1xuICAgICAgZGVsdGEueSAqPSB3aGVlbFBpeGVsc1BlclVuaXQ7XG4gICAgICByZXR1cm4gZGVsdGE7XG4gICAgfVxuICAgIF9fbmFtZSh3aGVlbEV2ZW50UGl4ZWxzLCBcIndoZWVsRXZlbnRQaXhlbHNcIik7XG4gICAgZnVuY3Rpb24gb25TY3JvbGxXaGVlbChjbSwgZSkge1xuICAgICAgdmFyIGRlbHRhID0gd2hlZWxFdmVudERlbHRhKGUpLCBkeCA9IGRlbHRhLngsIGR5ID0gZGVsdGEueTtcbiAgICAgIHZhciBwaXhlbHNQZXJVbml0ID0gd2hlZWxQaXhlbHNQZXJVbml0O1xuICAgICAgaWYgKGUuZGVsdGFNb2RlID09PSAwKSB7XG4gICAgICAgIGR4ID0gZS5kZWx0YVg7XG4gICAgICAgIGR5ID0gZS5kZWx0YVk7XG4gICAgICAgIHBpeGVsc1BlclVuaXQgPSAxO1xuICAgICAgfVxuICAgICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5LCBzY3JvbGwgPSBkaXNwbGF5LnNjcm9sbGVyO1xuICAgICAgdmFyIGNhblNjcm9sbFggPSBzY3JvbGwuc2Nyb2xsV2lkdGggPiBzY3JvbGwuY2xpZW50V2lkdGg7XG4gICAgICB2YXIgY2FuU2Nyb2xsWSA9IHNjcm9sbC5zY3JvbGxIZWlnaHQgPiBzY3JvbGwuY2xpZW50SGVpZ2h0O1xuICAgICAgaWYgKCEoZHggJiYgY2FuU2Nyb2xsWCB8fCBkeSAmJiBjYW5TY3JvbGxZKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZHkgJiYgbWFjICYmIHdlYmtpdCkge1xuICAgICAgICBvdXRlcjpcbiAgICAgICAgICBmb3IgKHZhciBjdXIgPSBlLnRhcmdldCwgdmlldyA9IGRpc3BsYXkudmlldzsgY3VyICE9IHNjcm9sbDsgY3VyID0gY3VyLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCB2aWV3Lmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgICAgICBpZiAodmlld1tpMl0ubm9kZSA9PSBjdXIpIHtcbiAgICAgICAgICAgICAgICBjbS5kaXNwbGF5LmN1cnJlbnRXaGVlbFRhcmdldCA9IGN1cjtcbiAgICAgICAgICAgICAgICBicmVhayBvdXRlcjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChkeCAmJiAhZ2Vja28gJiYgIXByZXN0byAmJiBwaXhlbHNQZXJVbml0ICE9IG51bGwpIHtcbiAgICAgICAgaWYgKGR5ICYmIGNhblNjcm9sbFkpIHtcbiAgICAgICAgICB1cGRhdGVTY3JvbGxUb3AoY20sIE1hdGgubWF4KDAsIHNjcm9sbC5zY3JvbGxUb3AgKyBkeSAqIHBpeGVsc1BlclVuaXQpKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRTY3JvbGxMZWZ0KGNtLCBNYXRoLm1heCgwLCBzY3JvbGwuc2Nyb2xsTGVmdCArIGR4ICogcGl4ZWxzUGVyVW5pdCkpO1xuICAgICAgICBpZiAoIWR5IHx8IGR5ICYmIGNhblNjcm9sbFkpIHtcbiAgICAgICAgICBlX3ByZXZlbnREZWZhdWx0KGUpO1xuICAgICAgICB9XG4gICAgICAgIGRpc3BsYXkud2hlZWxTdGFydFggPSBudWxsO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZHkgJiYgcGl4ZWxzUGVyVW5pdCAhPSBudWxsKSB7XG4gICAgICAgIHZhciBwaXhlbHMgPSBkeSAqIHBpeGVsc1BlclVuaXQ7XG4gICAgICAgIHZhciB0b3AgPSBjbS5kb2Muc2Nyb2xsVG9wLCBib3QgPSB0b3AgKyBkaXNwbGF5LndyYXBwZXIuY2xpZW50SGVpZ2h0O1xuICAgICAgICBpZiAocGl4ZWxzIDwgMCkge1xuICAgICAgICAgIHRvcCA9IE1hdGgubWF4KDAsIHRvcCArIHBpeGVscyAtIDUwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBib3QgPSBNYXRoLm1pbihjbS5kb2MuaGVpZ2h0LCBib3QgKyBwaXhlbHMgKyA1MCk7XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlRGlzcGxheVNpbXBsZShjbSwgeyB0b3AsIGJvdHRvbTogYm90IH0pO1xuICAgICAgfVxuICAgICAgaWYgKHdoZWVsU2FtcGxlcyA8IDIwICYmIGUuZGVsdGFNb2RlICE9PSAwKSB7XG4gICAgICAgIGlmIChkaXNwbGF5LndoZWVsU3RhcnRYID09IG51bGwpIHtcbiAgICAgICAgICBkaXNwbGF5LndoZWVsU3RhcnRYID0gc2Nyb2xsLnNjcm9sbExlZnQ7XG4gICAgICAgICAgZGlzcGxheS53aGVlbFN0YXJ0WSA9IHNjcm9sbC5zY3JvbGxUb3A7XG4gICAgICAgICAgZGlzcGxheS53aGVlbERYID0gZHg7XG4gICAgICAgICAgZGlzcGxheS53aGVlbERZID0gZHk7XG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmIChkaXNwbGF5LndoZWVsU3RhcnRYID09IG51bGwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG1vdmVkWCA9IHNjcm9sbC5zY3JvbGxMZWZ0IC0gZGlzcGxheS53aGVlbFN0YXJ0WDtcbiAgICAgICAgICAgIHZhciBtb3ZlZFkgPSBzY3JvbGwuc2Nyb2xsVG9wIC0gZGlzcGxheS53aGVlbFN0YXJ0WTtcbiAgICAgICAgICAgIHZhciBzYW1wbGUgPSBtb3ZlZFkgJiYgZGlzcGxheS53aGVlbERZICYmIG1vdmVkWSAvIGRpc3BsYXkud2hlZWxEWSB8fCBtb3ZlZFggJiYgZGlzcGxheS53aGVlbERYICYmIG1vdmVkWCAvIGRpc3BsYXkud2hlZWxEWDtcbiAgICAgICAgICAgIGRpc3BsYXkud2hlZWxTdGFydFggPSBkaXNwbGF5LndoZWVsU3RhcnRZID0gbnVsbDtcbiAgICAgICAgICAgIGlmICghc2FtcGxlKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoZWVsUGl4ZWxzUGVyVW5pdCA9ICh3aGVlbFBpeGVsc1BlclVuaXQgKiB3aGVlbFNhbXBsZXMgKyBzYW1wbGUpIC8gKHdoZWVsU2FtcGxlcyArIDEpO1xuICAgICAgICAgICAgKyt3aGVlbFNhbXBsZXM7XG4gICAgICAgICAgfSwgMjAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaXNwbGF5LndoZWVsRFggKz0gZHg7XG4gICAgICAgICAgZGlzcGxheS53aGVlbERZICs9IGR5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShvblNjcm9sbFdoZWVsLCBcIm9uU2Nyb2xsV2hlZWxcIik7XG4gICAgdmFyIFNlbGVjdGlvbiA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24ocmFuZ2VzLCBwcmltSW5kZXgpIHtcbiAgICAgIHRoaXMucmFuZ2VzID0gcmFuZ2VzO1xuICAgICAgdGhpcy5wcmltSW5kZXggPSBwcmltSW5kZXg7XG4gICAgfSwgXCJTZWxlY3Rpb25cIik7XG4gICAgU2VsZWN0aW9uLnByb3RvdHlwZS5wcmltYXJ5ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5yYW5nZXNbdGhpcy5wcmltSW5kZXhdO1xuICAgIH07XG4gICAgU2VsZWN0aW9uLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbihvdGhlcikge1xuICAgICAgaWYgKG90aGVyID09IHRoaXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAob3RoZXIucHJpbUluZGV4ICE9IHRoaXMucHJpbUluZGV4IHx8IG90aGVyLnJhbmdlcy5sZW5ndGggIT0gdGhpcy5yYW5nZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCB0aGlzLnJhbmdlcy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgdmFyIGhlcmUgPSB0aGlzLnJhbmdlc1tpMl0sIHRoZXJlID0gb3RoZXIucmFuZ2VzW2kyXTtcbiAgICAgICAgaWYgKCFlcXVhbEN1cnNvclBvcyhoZXJlLmFuY2hvciwgdGhlcmUuYW5jaG9yKSB8fCAhZXF1YWxDdXJzb3JQb3MoaGVyZS5oZWFkLCB0aGVyZS5oZWFkKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBTZWxlY3Rpb24ucHJvdG90eXBlLmRlZXBDb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgb3V0ID0gW107XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgdGhpcy5yYW5nZXMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIG91dFtpMl0gPSBuZXcgUmFuZ2UoY29weVBvcyh0aGlzLnJhbmdlc1tpMl0uYW5jaG9yKSwgY29weVBvcyh0aGlzLnJhbmdlc1tpMl0uaGVhZCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBTZWxlY3Rpb24ob3V0LCB0aGlzLnByaW1JbmRleCk7XG4gICAgfTtcbiAgICBTZWxlY3Rpb24ucHJvdG90eXBlLnNvbWV0aGluZ1NlbGVjdGVkID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgdGhpcy5yYW5nZXMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIGlmICghdGhpcy5yYW5nZXNbaTJdLmVtcHR5KCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgU2VsZWN0aW9uLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uKHBvcywgZW5kKSB7XG4gICAgICBpZiAoIWVuZCkge1xuICAgICAgICBlbmQgPSBwb3M7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgdGhpcy5yYW5nZXMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIHZhciByYW5nZTIgPSB0aGlzLnJhbmdlc1tpMl07XG4gICAgICAgIGlmIChjbXAoZW5kLCByYW5nZTIuZnJvbSgpKSA+PSAwICYmIGNtcChwb3MsIHJhbmdlMi50bygpKSA8PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGkyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfTtcbiAgICB2YXIgUmFuZ2UgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKGFuY2hvciwgaGVhZCkge1xuICAgICAgdGhpcy5hbmNob3IgPSBhbmNob3I7XG4gICAgICB0aGlzLmhlYWQgPSBoZWFkO1xuICAgIH0sIFwiUmFuZ2VcIik7XG4gICAgUmFuZ2UucHJvdG90eXBlLmZyb20gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBtaW5Qb3ModGhpcy5hbmNob3IsIHRoaXMuaGVhZCk7XG4gICAgfTtcbiAgICBSYW5nZS5wcm90b3R5cGUudG8gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBtYXhQb3ModGhpcy5hbmNob3IsIHRoaXMuaGVhZCk7XG4gICAgfTtcbiAgICBSYW5nZS5wcm90b3R5cGUuZW1wdHkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmhlYWQubGluZSA9PSB0aGlzLmFuY2hvci5saW5lICYmIHRoaXMuaGVhZC5jaCA9PSB0aGlzLmFuY2hvci5jaDtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVNlbGVjdGlvbihjbSwgcmFuZ2VzLCBwcmltSW5kZXgpIHtcbiAgICAgIHZhciBtYXlUb3VjaCA9IGNtICYmIGNtLm9wdGlvbnMuc2VsZWN0aW9uc01heVRvdWNoO1xuICAgICAgdmFyIHByaW0gPSByYW5nZXNbcHJpbUluZGV4XTtcbiAgICAgIHJhbmdlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGNtcChhLmZyb20oKSwgYi5mcm9tKCkpO1xuICAgICAgfSk7XG4gICAgICBwcmltSW5kZXggPSBpbmRleE9mKHJhbmdlcywgcHJpbSk7XG4gICAgICBmb3IgKHZhciBpMiA9IDE7IGkyIDwgcmFuZ2VzLmxlbmd0aDsgaTIrKykge1xuICAgICAgICB2YXIgY3VyID0gcmFuZ2VzW2kyXSwgcHJldiA9IHJhbmdlc1tpMiAtIDFdO1xuICAgICAgICB2YXIgZGlmZiA9IGNtcChwcmV2LnRvKCksIGN1ci5mcm9tKCkpO1xuICAgICAgICBpZiAobWF5VG91Y2ggJiYgIWN1ci5lbXB0eSgpID8gZGlmZiA+IDAgOiBkaWZmID49IDApIHtcbiAgICAgICAgICB2YXIgZnJvbSA9IG1pblBvcyhwcmV2LmZyb20oKSwgY3VyLmZyb20oKSksIHRvID0gbWF4UG9zKHByZXYudG8oKSwgY3VyLnRvKCkpO1xuICAgICAgICAgIHZhciBpbnYgPSBwcmV2LmVtcHR5KCkgPyBjdXIuZnJvbSgpID09IGN1ci5oZWFkIDogcHJldi5mcm9tKCkgPT0gcHJldi5oZWFkO1xuICAgICAgICAgIGlmIChpMiA8PSBwcmltSW5kZXgpIHtcbiAgICAgICAgICAgIC0tcHJpbUluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgICByYW5nZXMuc3BsaWNlKC0taTIsIDIsIG5ldyBSYW5nZShpbnYgPyB0byA6IGZyb20sIGludiA/IGZyb20gOiB0bykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFNlbGVjdGlvbihyYW5nZXMsIHByaW1JbmRleCk7XG4gICAgfVxuICAgIF9fbmFtZShub3JtYWxpemVTZWxlY3Rpb24sIFwibm9ybWFsaXplU2VsZWN0aW9uXCIpO1xuICAgIGZ1bmN0aW9uIHNpbXBsZVNlbGVjdGlvbihhbmNob3IsIGhlYWQpIHtcbiAgICAgIHJldHVybiBuZXcgU2VsZWN0aW9uKFtuZXcgUmFuZ2UoYW5jaG9yLCBoZWFkIHx8IGFuY2hvcildLCAwKTtcbiAgICB9XG4gICAgX19uYW1lKHNpbXBsZVNlbGVjdGlvbiwgXCJzaW1wbGVTZWxlY3Rpb25cIik7XG4gICAgZnVuY3Rpb24gY2hhbmdlRW5kKGNoYW5nZSkge1xuICAgICAgaWYgKCFjaGFuZ2UudGV4dCkge1xuICAgICAgICByZXR1cm4gY2hhbmdlLnRvO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFBvcyhjaGFuZ2UuZnJvbS5saW5lICsgY2hhbmdlLnRleHQubGVuZ3RoIC0gMSwgbHN0KGNoYW5nZS50ZXh0KS5sZW5ndGggKyAoY2hhbmdlLnRleHQubGVuZ3RoID09IDEgPyBjaGFuZ2UuZnJvbS5jaCA6IDApKTtcbiAgICB9XG4gICAgX19uYW1lKGNoYW5nZUVuZCwgXCJjaGFuZ2VFbmRcIik7XG4gICAgZnVuY3Rpb24gYWRqdXN0Rm9yQ2hhbmdlKHBvcywgY2hhbmdlKSB7XG4gICAgICBpZiAoY21wKHBvcywgY2hhbmdlLmZyb20pIDwgMCkge1xuICAgICAgICByZXR1cm4gcG9zO1xuICAgICAgfVxuICAgICAgaWYgKGNtcChwb3MsIGNoYW5nZS50bykgPD0gMCkge1xuICAgICAgICByZXR1cm4gY2hhbmdlRW5kKGNoYW5nZSk7XG4gICAgICB9XG4gICAgICB2YXIgbGluZSA9IHBvcy5saW5lICsgY2hhbmdlLnRleHQubGVuZ3RoIC0gKGNoYW5nZS50by5saW5lIC0gY2hhbmdlLmZyb20ubGluZSkgLSAxLCBjaCA9IHBvcy5jaDtcbiAgICAgIGlmIChwb3MubGluZSA9PSBjaGFuZ2UudG8ubGluZSkge1xuICAgICAgICBjaCArPSBjaGFuZ2VFbmQoY2hhbmdlKS5jaCAtIGNoYW5nZS50by5jaDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQb3MobGluZSwgY2gpO1xuICAgIH1cbiAgICBfX25hbWUoYWRqdXN0Rm9yQ2hhbmdlLCBcImFkanVzdEZvckNoYW5nZVwiKTtcbiAgICBmdW5jdGlvbiBjb21wdXRlU2VsQWZ0ZXJDaGFuZ2UoZG9jLCBjaGFuZ2UpIHtcbiAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBkb2Muc2VsLnJhbmdlcy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgdmFyIHJhbmdlMiA9IGRvYy5zZWwucmFuZ2VzW2kyXTtcbiAgICAgICAgb3V0LnB1c2gobmV3IFJhbmdlKGFkanVzdEZvckNoYW5nZShyYW5nZTIuYW5jaG9yLCBjaGFuZ2UpLCBhZGp1c3RGb3JDaGFuZ2UocmFuZ2UyLmhlYWQsIGNoYW5nZSkpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBub3JtYWxpemVTZWxlY3Rpb24oZG9jLmNtLCBvdXQsIGRvYy5zZWwucHJpbUluZGV4KTtcbiAgICB9XG4gICAgX19uYW1lKGNvbXB1dGVTZWxBZnRlckNoYW5nZSwgXCJjb21wdXRlU2VsQWZ0ZXJDaGFuZ2VcIik7XG4gICAgZnVuY3Rpb24gb2Zmc2V0UG9zKHBvcywgb2xkLCBudykge1xuICAgICAgaWYgKHBvcy5saW5lID09IG9sZC5saW5lKSB7XG4gICAgICAgIHJldHVybiBQb3MobncubGluZSwgcG9zLmNoIC0gb2xkLmNoICsgbncuY2gpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFBvcyhudy5saW5lICsgKHBvcy5saW5lIC0gb2xkLmxpbmUpLCBwb3MuY2gpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUob2Zmc2V0UG9zLCBcIm9mZnNldFBvc1wiKTtcbiAgICBmdW5jdGlvbiBjb21wdXRlUmVwbGFjZWRTZWwoZG9jLCBjaGFuZ2VzLCBoaW50KSB7XG4gICAgICB2YXIgb3V0ID0gW107XG4gICAgICB2YXIgb2xkUHJldiA9IFBvcyhkb2MuZmlyc3QsIDApLCBuZXdQcmV2ID0gb2xkUHJldjtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBjaGFuZ2VzLmxlbmd0aDsgaTIrKykge1xuICAgICAgICB2YXIgY2hhbmdlID0gY2hhbmdlc1tpMl07XG4gICAgICAgIHZhciBmcm9tID0gb2Zmc2V0UG9zKGNoYW5nZS5mcm9tLCBvbGRQcmV2LCBuZXdQcmV2KTtcbiAgICAgICAgdmFyIHRvID0gb2Zmc2V0UG9zKGNoYW5nZUVuZChjaGFuZ2UpLCBvbGRQcmV2LCBuZXdQcmV2KTtcbiAgICAgICAgb2xkUHJldiA9IGNoYW5nZS50bztcbiAgICAgICAgbmV3UHJldiA9IHRvO1xuICAgICAgICBpZiAoaGludCA9PSBcImFyb3VuZFwiKSB7XG4gICAgICAgICAgdmFyIHJhbmdlMiA9IGRvYy5zZWwucmFuZ2VzW2kyXSwgaW52ID0gY21wKHJhbmdlMi5oZWFkLCByYW5nZTIuYW5jaG9yKSA8IDA7XG4gICAgICAgICAgb3V0W2kyXSA9IG5ldyBSYW5nZShpbnYgPyB0byA6IGZyb20sIGludiA/IGZyb20gOiB0byk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0W2kyXSA9IG5ldyBSYW5nZShmcm9tLCBmcm9tKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBTZWxlY3Rpb24ob3V0LCBkb2Muc2VsLnByaW1JbmRleCk7XG4gICAgfVxuICAgIF9fbmFtZShjb21wdXRlUmVwbGFjZWRTZWwsIFwiY29tcHV0ZVJlcGxhY2VkU2VsXCIpO1xuICAgIGZ1bmN0aW9uIGxvYWRNb2RlKGNtKSB7XG4gICAgICBjbS5kb2MubW9kZSA9IGdldE1vZGUoY20ub3B0aW9ucywgY20uZG9jLm1vZGVPcHRpb24pO1xuICAgICAgcmVzZXRNb2RlU3RhdGUoY20pO1xuICAgIH1cbiAgICBfX25hbWUobG9hZE1vZGUsIFwibG9hZE1vZGVcIik7XG4gICAgZnVuY3Rpb24gcmVzZXRNb2RlU3RhdGUoY20pIHtcbiAgICAgIGNtLmRvYy5pdGVyKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgaWYgKGxpbmUuc3RhdGVBZnRlcikge1xuICAgICAgICAgIGxpbmUuc3RhdGVBZnRlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmUuc3R5bGVzKSB7XG4gICAgICAgICAgbGluZS5zdHlsZXMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNtLmRvYy5tb2RlRnJvbnRpZXIgPSBjbS5kb2MuaGlnaGxpZ2h0RnJvbnRpZXIgPSBjbS5kb2MuZmlyc3Q7XG4gICAgICBzdGFydFdvcmtlcihjbSwgMTAwKTtcbiAgICAgIGNtLnN0YXRlLm1vZGVHZW4rKztcbiAgICAgIGlmIChjbS5jdXJPcCkge1xuICAgICAgICByZWdDaGFuZ2UoY20pO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUocmVzZXRNb2RlU3RhdGUsIFwicmVzZXRNb2RlU3RhdGVcIik7XG4gICAgZnVuY3Rpb24gaXNXaG9sZUxpbmVVcGRhdGUoZG9jLCBjaGFuZ2UpIHtcbiAgICAgIHJldHVybiBjaGFuZ2UuZnJvbS5jaCA9PSAwICYmIGNoYW5nZS50by5jaCA9PSAwICYmIGxzdChjaGFuZ2UudGV4dCkgPT0gXCJcIiAmJiAoIWRvYy5jbSB8fCBkb2MuY20ub3B0aW9ucy53aG9sZUxpbmVVcGRhdGVCZWZvcmUpO1xuICAgIH1cbiAgICBfX25hbWUoaXNXaG9sZUxpbmVVcGRhdGUsIFwiaXNXaG9sZUxpbmVVcGRhdGVcIik7XG4gICAgZnVuY3Rpb24gdXBkYXRlRG9jKGRvYywgY2hhbmdlLCBtYXJrZWRTcGFucywgZXN0aW1hdGVIZWlnaHQyKSB7XG4gICAgICBmdW5jdGlvbiBzcGFuc0ZvcihuKSB7XG4gICAgICAgIHJldHVybiBtYXJrZWRTcGFucyA/IG1hcmtlZFNwYW5zW25dIDogbnVsbDtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShzcGFuc0ZvciwgXCJzcGFuc0ZvclwiKTtcbiAgICAgIGZ1bmN0aW9uIHVwZGF0ZShsaW5lLCB0ZXh0Miwgc3BhbnMpIHtcbiAgICAgICAgdXBkYXRlTGluZShsaW5lLCB0ZXh0Miwgc3BhbnMsIGVzdGltYXRlSGVpZ2h0Mik7XG4gICAgICAgIHNpZ25hbExhdGVyKGxpbmUsIFwiY2hhbmdlXCIsIGxpbmUsIGNoYW5nZSk7XG4gICAgICB9XG4gICAgICBfX25hbWUodXBkYXRlLCBcInVwZGF0ZVwiKTtcbiAgICAgIGZ1bmN0aW9uIGxpbmVzRm9yKHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpMiA9IHN0YXJ0OyBpMiA8IGVuZDsgKytpMikge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBMaW5lKHRleHRbaTJdLCBzcGFuc0ZvcihpMiksIGVzdGltYXRlSGVpZ2h0MikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBfX25hbWUobGluZXNGb3IsIFwibGluZXNGb3JcIik7XG4gICAgICB2YXIgZnJvbSA9IGNoYW5nZS5mcm9tLCB0byA9IGNoYW5nZS50bywgdGV4dCA9IGNoYW5nZS50ZXh0O1xuICAgICAgdmFyIGZpcnN0TGluZSA9IGdldExpbmUoZG9jLCBmcm9tLmxpbmUpLCBsYXN0TGluZSA9IGdldExpbmUoZG9jLCB0by5saW5lKTtcbiAgICAgIHZhciBsYXN0VGV4dCA9IGxzdCh0ZXh0KSwgbGFzdFNwYW5zID0gc3BhbnNGb3IodGV4dC5sZW5ndGggLSAxKSwgbmxpbmVzID0gdG8ubGluZSAtIGZyb20ubGluZTtcbiAgICAgIGlmIChjaGFuZ2UuZnVsbCkge1xuICAgICAgICBkb2MuaW5zZXJ0KDAsIGxpbmVzRm9yKDAsIHRleHQubGVuZ3RoKSk7XG4gICAgICAgIGRvYy5yZW1vdmUodGV4dC5sZW5ndGgsIGRvYy5zaXplIC0gdGV4dC5sZW5ndGgpO1xuICAgICAgfSBlbHNlIGlmIChpc1dob2xlTGluZVVwZGF0ZShkb2MsIGNoYW5nZSkpIHtcbiAgICAgICAgdmFyIGFkZGVkID0gbGluZXNGb3IoMCwgdGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgdXBkYXRlKGxhc3RMaW5lLCBsYXN0TGluZS50ZXh0LCBsYXN0U3BhbnMpO1xuICAgICAgICBpZiAobmxpbmVzKSB7XG4gICAgICAgICAgZG9jLnJlbW92ZShmcm9tLmxpbmUsIG5saW5lcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFkZGVkLmxlbmd0aCkge1xuICAgICAgICAgIGRvYy5pbnNlcnQoZnJvbS5saW5lLCBhZGRlZCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmlyc3RMaW5lID09IGxhc3RMaW5lKSB7XG4gICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgdXBkYXRlKGZpcnN0TGluZSwgZmlyc3RMaW5lLnRleHQuc2xpY2UoMCwgZnJvbS5jaCkgKyBsYXN0VGV4dCArIGZpcnN0TGluZS50ZXh0LnNsaWNlKHRvLmNoKSwgbGFzdFNwYW5zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgYWRkZWQkMSA9IGxpbmVzRm9yKDEsIHRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgYWRkZWQkMS5wdXNoKG5ldyBMaW5lKGxhc3RUZXh0ICsgZmlyc3RMaW5lLnRleHQuc2xpY2UodG8uY2gpLCBsYXN0U3BhbnMsIGVzdGltYXRlSGVpZ2h0MikpO1xuICAgICAgICAgIHVwZGF0ZShmaXJzdExpbmUsIGZpcnN0TGluZS50ZXh0LnNsaWNlKDAsIGZyb20uY2gpICsgdGV4dFswXSwgc3BhbnNGb3IoMCkpO1xuICAgICAgICAgIGRvYy5pbnNlcnQoZnJvbS5saW5lICsgMSwgYWRkZWQkMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGV4dC5sZW5ndGggPT0gMSkge1xuICAgICAgICB1cGRhdGUoZmlyc3RMaW5lLCBmaXJzdExpbmUudGV4dC5zbGljZSgwLCBmcm9tLmNoKSArIHRleHRbMF0gKyBsYXN0TGluZS50ZXh0LnNsaWNlKHRvLmNoKSwgc3BhbnNGb3IoMCkpO1xuICAgICAgICBkb2MucmVtb3ZlKGZyb20ubGluZSArIDEsIG5saW5lcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cGRhdGUoZmlyc3RMaW5lLCBmaXJzdExpbmUudGV4dC5zbGljZSgwLCBmcm9tLmNoKSArIHRleHRbMF0sIHNwYW5zRm9yKDApKTtcbiAgICAgICAgdXBkYXRlKGxhc3RMaW5lLCBsYXN0VGV4dCArIGxhc3RMaW5lLnRleHQuc2xpY2UodG8uY2gpLCBsYXN0U3BhbnMpO1xuICAgICAgICB2YXIgYWRkZWQkMiA9IGxpbmVzRm9yKDEsIHRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgIGlmIChubGluZXMgPiAxKSB7XG4gICAgICAgICAgZG9jLnJlbW92ZShmcm9tLmxpbmUgKyAxLCBubGluZXMgLSAxKTtcbiAgICAgICAgfVxuICAgICAgICBkb2MuaW5zZXJ0KGZyb20ubGluZSArIDEsIGFkZGVkJDIpO1xuICAgICAgfVxuICAgICAgc2lnbmFsTGF0ZXIoZG9jLCBcImNoYW5nZVwiLCBkb2MsIGNoYW5nZSk7XG4gICAgfVxuICAgIF9fbmFtZSh1cGRhdGVEb2MsIFwidXBkYXRlRG9jXCIpO1xuICAgIGZ1bmN0aW9uIGxpbmtlZERvY3MoZG9jLCBmLCBzaGFyZWRIaXN0T25seSkge1xuICAgICAgZnVuY3Rpb24gcHJvcGFnYXRlKGRvYzIsIHNraXAsIHNoYXJlZEhpc3QpIHtcbiAgICAgICAgaWYgKGRvYzIubGlua2VkKSB7XG4gICAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGRvYzIubGlua2VkLmxlbmd0aDsgKytpMikge1xuICAgICAgICAgICAgdmFyIHJlbCA9IGRvYzIubGlua2VkW2kyXTtcbiAgICAgICAgICAgIGlmIChyZWwuZG9jID09IHNraXApIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgc2hhcmVkID0gc2hhcmVkSGlzdCAmJiByZWwuc2hhcmVkSGlzdDtcbiAgICAgICAgICAgIGlmIChzaGFyZWRIaXN0T25seSAmJiAhc2hhcmVkKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZihyZWwuZG9jLCBzaGFyZWQpO1xuICAgICAgICAgICAgcHJvcGFnYXRlKHJlbC5kb2MsIGRvYzIsIHNoYXJlZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUocHJvcGFnYXRlLCBcInByb3BhZ2F0ZVwiKTtcbiAgICAgIHByb3BhZ2F0ZShkb2MsIG51bGwsIHRydWUpO1xuICAgIH1cbiAgICBfX25hbWUobGlua2VkRG9jcywgXCJsaW5rZWREb2NzXCIpO1xuICAgIGZ1bmN0aW9uIGF0dGFjaERvYyhjbSwgZG9jKSB7XG4gICAgICBpZiAoZG9jLmNtKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgZG9jdW1lbnQgaXMgYWxyZWFkeSBpbiB1c2UuXCIpO1xuICAgICAgfVxuICAgICAgY20uZG9jID0gZG9jO1xuICAgICAgZG9jLmNtID0gY207XG4gICAgICBlc3RpbWF0ZUxpbmVIZWlnaHRzKGNtKTtcbiAgICAgIGxvYWRNb2RlKGNtKTtcbiAgICAgIHNldERpcmVjdGlvbkNsYXNzKGNtKTtcbiAgICAgIGNtLm9wdGlvbnMuZGlyZWN0aW9uID0gZG9jLmRpcmVjdGlvbjtcbiAgICAgIGlmICghY20ub3B0aW9ucy5saW5lV3JhcHBpbmcpIHtcbiAgICAgICAgZmluZE1heExpbmUoY20pO1xuICAgICAgfVxuICAgICAgY20ub3B0aW9ucy5tb2RlID0gZG9jLm1vZGVPcHRpb247XG4gICAgICByZWdDaGFuZ2UoY20pO1xuICAgIH1cbiAgICBfX25hbWUoYXR0YWNoRG9jLCBcImF0dGFjaERvY1wiKTtcbiAgICBmdW5jdGlvbiBzZXREaXJlY3Rpb25DbGFzcyhjbSkge1xuICAgICAgKGNtLmRvYy5kaXJlY3Rpb24gPT0gXCJydGxcIiA/IGFkZENsYXNzIDogcm1DbGFzcykoY20uZGlzcGxheS5saW5lRGl2LCBcIkNvZGVNaXJyb3ItcnRsXCIpO1xuICAgIH1cbiAgICBfX25hbWUoc2V0RGlyZWN0aW9uQ2xhc3MsIFwic2V0RGlyZWN0aW9uQ2xhc3NcIik7XG4gICAgZnVuY3Rpb24gZGlyZWN0aW9uQ2hhbmdlZChjbSkge1xuICAgICAgcnVuSW5PcChjbSwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHNldERpcmVjdGlvbkNsYXNzKGNtKTtcbiAgICAgICAgcmVnQ2hhbmdlKGNtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBfX25hbWUoZGlyZWN0aW9uQ2hhbmdlZCwgXCJkaXJlY3Rpb25DaGFuZ2VkXCIpO1xuICAgIGZ1bmN0aW9uIEhpc3RvcnkocHJldikge1xuICAgICAgdGhpcy5kb25lID0gW107XG4gICAgICB0aGlzLnVuZG9uZSA9IFtdO1xuICAgICAgdGhpcy51bmRvRGVwdGggPSBwcmV2ID8gcHJldi51bmRvRGVwdGggOiBJbmZpbml0eTtcbiAgICAgIHRoaXMubGFzdE1vZFRpbWUgPSB0aGlzLmxhc3RTZWxUaW1lID0gMDtcbiAgICAgIHRoaXMubGFzdE9wID0gdGhpcy5sYXN0U2VsT3AgPSBudWxsO1xuICAgICAgdGhpcy5sYXN0T3JpZ2luID0gdGhpcy5sYXN0U2VsT3JpZ2luID0gbnVsbDtcbiAgICAgIHRoaXMuZ2VuZXJhdGlvbiA9IHRoaXMubWF4R2VuZXJhdGlvbiA9IHByZXYgPyBwcmV2Lm1heEdlbmVyYXRpb24gOiAxO1xuICAgIH1cbiAgICBfX25hbWUoSGlzdG9yeSwgXCJIaXN0b3J5XCIpO1xuICAgIGZ1bmN0aW9uIGhpc3RvcnlDaGFuZ2VGcm9tQ2hhbmdlKGRvYywgY2hhbmdlKSB7XG4gICAgICB2YXIgaGlzdENoYW5nZSA9IHsgZnJvbTogY29weVBvcyhjaGFuZ2UuZnJvbSksIHRvOiBjaGFuZ2VFbmQoY2hhbmdlKSwgdGV4dDogZ2V0QmV0d2Vlbihkb2MsIGNoYW5nZS5mcm9tLCBjaGFuZ2UudG8pIH07XG4gICAgICBhdHRhY2hMb2NhbFNwYW5zKGRvYywgaGlzdENoYW5nZSwgY2hhbmdlLmZyb20ubGluZSwgY2hhbmdlLnRvLmxpbmUgKyAxKTtcbiAgICAgIGxpbmtlZERvY3MoZG9jLCBmdW5jdGlvbihkb2MyKSB7XG4gICAgICAgIHJldHVybiBhdHRhY2hMb2NhbFNwYW5zKGRvYzIsIGhpc3RDaGFuZ2UsIGNoYW5nZS5mcm9tLmxpbmUsIGNoYW5nZS50by5saW5lICsgMSk7XG4gICAgICB9LCB0cnVlKTtcbiAgICAgIHJldHVybiBoaXN0Q2hhbmdlO1xuICAgIH1cbiAgICBfX25hbWUoaGlzdG9yeUNoYW5nZUZyb21DaGFuZ2UsIFwiaGlzdG9yeUNoYW5nZUZyb21DaGFuZ2VcIik7XG4gICAgZnVuY3Rpb24gY2xlYXJTZWxlY3Rpb25FdmVudHMoYXJyYXkpIHtcbiAgICAgIHdoaWxlIChhcnJheS5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGxhc3QgPSBsc3QoYXJyYXkpO1xuICAgICAgICBpZiAobGFzdC5yYW5nZXMpIHtcbiAgICAgICAgICBhcnJheS5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoY2xlYXJTZWxlY3Rpb25FdmVudHMsIFwiY2xlYXJTZWxlY3Rpb25FdmVudHNcIik7XG4gICAgZnVuY3Rpb24gbGFzdENoYW5nZUV2ZW50KGhpc3QsIGZvcmNlKSB7XG4gICAgICBpZiAoZm9yY2UpIHtcbiAgICAgICAgY2xlYXJTZWxlY3Rpb25FdmVudHMoaGlzdC5kb25lKTtcbiAgICAgICAgcmV0dXJuIGxzdChoaXN0LmRvbmUpO1xuICAgICAgfSBlbHNlIGlmIChoaXN0LmRvbmUubGVuZ3RoICYmICFsc3QoaGlzdC5kb25lKS5yYW5nZXMpIHtcbiAgICAgICAgcmV0dXJuIGxzdChoaXN0LmRvbmUpO1xuICAgICAgfSBlbHNlIGlmIChoaXN0LmRvbmUubGVuZ3RoID4gMSAmJiAhaGlzdC5kb25lW2hpc3QuZG9uZS5sZW5ndGggLSAyXS5yYW5nZXMpIHtcbiAgICAgICAgaGlzdC5kb25lLnBvcCgpO1xuICAgICAgICByZXR1cm4gbHN0KGhpc3QuZG9uZSk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShsYXN0Q2hhbmdlRXZlbnQsIFwibGFzdENoYW5nZUV2ZW50XCIpO1xuICAgIGZ1bmN0aW9uIGFkZENoYW5nZVRvSGlzdG9yeShkb2MsIGNoYW5nZSwgc2VsQWZ0ZXIsIG9wSWQpIHtcbiAgICAgIHZhciBoaXN0ID0gZG9jLmhpc3Rvcnk7XG4gICAgICBoaXN0LnVuZG9uZS5sZW5ndGggPSAwO1xuICAgICAgdmFyIHRpbWUgPSArbmV3IERhdGUoKSwgY3VyO1xuICAgICAgdmFyIGxhc3Q7XG4gICAgICBpZiAoKGhpc3QubGFzdE9wID09IG9wSWQgfHwgaGlzdC5sYXN0T3JpZ2luID09IGNoYW5nZS5vcmlnaW4gJiYgY2hhbmdlLm9yaWdpbiAmJiAoY2hhbmdlLm9yaWdpbi5jaGFyQXQoMCkgPT0gXCIrXCIgJiYgaGlzdC5sYXN0TW9kVGltZSA+IHRpbWUgLSAoZG9jLmNtID8gZG9jLmNtLm9wdGlvbnMuaGlzdG9yeUV2ZW50RGVsYXkgOiA1MDApIHx8IGNoYW5nZS5vcmlnaW4uY2hhckF0KDApID09IFwiKlwiKSkgJiYgKGN1ciA9IGxhc3RDaGFuZ2VFdmVudChoaXN0LCBoaXN0Lmxhc3RPcCA9PSBvcElkKSkpIHtcbiAgICAgICAgbGFzdCA9IGxzdChjdXIuY2hhbmdlcyk7XG4gICAgICAgIGlmIChjbXAoY2hhbmdlLmZyb20sIGNoYW5nZS50bykgPT0gMCAmJiBjbXAoY2hhbmdlLmZyb20sIGxhc3QudG8pID09IDApIHtcbiAgICAgICAgICBsYXN0LnRvID0gY2hhbmdlRW5kKGNoYW5nZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VyLmNoYW5nZXMucHVzaChoaXN0b3J5Q2hhbmdlRnJvbUNoYW5nZShkb2MsIGNoYW5nZSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgYmVmb3JlID0gbHN0KGhpc3QuZG9uZSk7XG4gICAgICAgIGlmICghYmVmb3JlIHx8ICFiZWZvcmUucmFuZ2VzKSB7XG4gICAgICAgICAgcHVzaFNlbGVjdGlvblRvSGlzdG9yeShkb2Muc2VsLCBoaXN0LmRvbmUpO1xuICAgICAgICB9XG4gICAgICAgIGN1ciA9IHtcbiAgICAgICAgICBjaGFuZ2VzOiBbaGlzdG9yeUNoYW5nZUZyb21DaGFuZ2UoZG9jLCBjaGFuZ2UpXSxcbiAgICAgICAgICBnZW5lcmF0aW9uOiBoaXN0LmdlbmVyYXRpb25cbiAgICAgICAgfTtcbiAgICAgICAgaGlzdC5kb25lLnB1c2goY3VyKTtcbiAgICAgICAgd2hpbGUgKGhpc3QuZG9uZS5sZW5ndGggPiBoaXN0LnVuZG9EZXB0aCkge1xuICAgICAgICAgIGhpc3QuZG9uZS5zaGlmdCgpO1xuICAgICAgICAgIGlmICghaGlzdC5kb25lWzBdLnJhbmdlcykge1xuICAgICAgICAgICAgaGlzdC5kb25lLnNoaWZ0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBoaXN0LmRvbmUucHVzaChzZWxBZnRlcik7XG4gICAgICBoaXN0LmdlbmVyYXRpb24gPSArK2hpc3QubWF4R2VuZXJhdGlvbjtcbiAgICAgIGhpc3QubGFzdE1vZFRpbWUgPSBoaXN0Lmxhc3RTZWxUaW1lID0gdGltZTtcbiAgICAgIGhpc3QubGFzdE9wID0gaGlzdC5sYXN0U2VsT3AgPSBvcElkO1xuICAgICAgaGlzdC5sYXN0T3JpZ2luID0gaGlzdC5sYXN0U2VsT3JpZ2luID0gY2hhbmdlLm9yaWdpbjtcbiAgICAgIGlmICghbGFzdCkge1xuICAgICAgICBzaWduYWwoZG9jLCBcImhpc3RvcnlBZGRlZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGFkZENoYW5nZVRvSGlzdG9yeSwgXCJhZGRDaGFuZ2VUb0hpc3RvcnlcIik7XG4gICAgZnVuY3Rpb24gc2VsZWN0aW9uRXZlbnRDYW5CZU1lcmdlZChkb2MsIG9yaWdpbiwgcHJldiwgc2VsKSB7XG4gICAgICB2YXIgY2ggPSBvcmlnaW4uY2hhckF0KDApO1xuICAgICAgcmV0dXJuIGNoID09IFwiKlwiIHx8IGNoID09IFwiK1wiICYmIHByZXYucmFuZ2VzLmxlbmd0aCA9PSBzZWwucmFuZ2VzLmxlbmd0aCAmJiBwcmV2LnNvbWV0aGluZ1NlbGVjdGVkKCkgPT0gc2VsLnNvbWV0aGluZ1NlbGVjdGVkKCkgJiYgbmV3IERhdGUoKSAtIGRvYy5oaXN0b3J5Lmxhc3RTZWxUaW1lIDw9IChkb2MuY20gPyBkb2MuY20ub3B0aW9ucy5oaXN0b3J5RXZlbnREZWxheSA6IDUwMCk7XG4gICAgfVxuICAgIF9fbmFtZShzZWxlY3Rpb25FdmVudENhbkJlTWVyZ2VkLCBcInNlbGVjdGlvbkV2ZW50Q2FuQmVNZXJnZWRcIik7XG4gICAgZnVuY3Rpb24gYWRkU2VsZWN0aW9uVG9IaXN0b3J5KGRvYywgc2VsLCBvcElkLCBvcHRpb25zKSB7XG4gICAgICB2YXIgaGlzdCA9IGRvYy5oaXN0b3J5LCBvcmlnaW4gPSBvcHRpb25zICYmIG9wdGlvbnMub3JpZ2luO1xuICAgICAgaWYgKG9wSWQgPT0gaGlzdC5sYXN0U2VsT3AgfHwgb3JpZ2luICYmIGhpc3QubGFzdFNlbE9yaWdpbiA9PSBvcmlnaW4gJiYgKGhpc3QubGFzdE1vZFRpbWUgPT0gaGlzdC5sYXN0U2VsVGltZSAmJiBoaXN0Lmxhc3RPcmlnaW4gPT0gb3JpZ2luIHx8IHNlbGVjdGlvbkV2ZW50Q2FuQmVNZXJnZWQoZG9jLCBvcmlnaW4sIGxzdChoaXN0LmRvbmUpLCBzZWwpKSkge1xuICAgICAgICBoaXN0LmRvbmVbaGlzdC5kb25lLmxlbmd0aCAtIDFdID0gc2VsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHVzaFNlbGVjdGlvblRvSGlzdG9yeShzZWwsIGhpc3QuZG9uZSk7XG4gICAgICB9XG4gICAgICBoaXN0Lmxhc3RTZWxUaW1lID0gK25ldyBEYXRlKCk7XG4gICAgICBoaXN0Lmxhc3RTZWxPcmlnaW4gPSBvcmlnaW47XG4gICAgICBoaXN0Lmxhc3RTZWxPcCA9IG9wSWQ7XG4gICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmNsZWFyUmVkbyAhPT0gZmFsc2UpIHtcbiAgICAgICAgY2xlYXJTZWxlY3Rpb25FdmVudHMoaGlzdC51bmRvbmUpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoYWRkU2VsZWN0aW9uVG9IaXN0b3J5LCBcImFkZFNlbGVjdGlvblRvSGlzdG9yeVwiKTtcbiAgICBmdW5jdGlvbiBwdXNoU2VsZWN0aW9uVG9IaXN0b3J5KHNlbCwgZGVzdCkge1xuICAgICAgdmFyIHRvcCA9IGxzdChkZXN0KTtcbiAgICAgIGlmICghKHRvcCAmJiB0b3AucmFuZ2VzICYmIHRvcC5lcXVhbHMoc2VsKSkpIHtcbiAgICAgICAgZGVzdC5wdXNoKHNlbCk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShwdXNoU2VsZWN0aW9uVG9IaXN0b3J5LCBcInB1c2hTZWxlY3Rpb25Ub0hpc3RvcnlcIik7XG4gICAgZnVuY3Rpb24gYXR0YWNoTG9jYWxTcGFucyhkb2MsIGNoYW5nZSwgZnJvbSwgdG8pIHtcbiAgICAgIHZhciBleGlzdGluZyA9IGNoYW5nZVtcInNwYW5zX1wiICsgZG9jLmlkXSwgbiA9IDA7XG4gICAgICBkb2MuaXRlcihNYXRoLm1heChkb2MuZmlyc3QsIGZyb20pLCBNYXRoLm1pbihkb2MuZmlyc3QgKyBkb2Muc2l6ZSwgdG8pLCBmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgIGlmIChsaW5lLm1hcmtlZFNwYW5zKSB7XG4gICAgICAgICAgKGV4aXN0aW5nIHx8IChleGlzdGluZyA9IGNoYW5nZVtcInNwYW5zX1wiICsgZG9jLmlkXSA9IHt9KSlbbl0gPSBsaW5lLm1hcmtlZFNwYW5zO1xuICAgICAgICB9XG4gICAgICAgICsrbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBfX25hbWUoYXR0YWNoTG9jYWxTcGFucywgXCJhdHRhY2hMb2NhbFNwYW5zXCIpO1xuICAgIGZ1bmN0aW9uIHJlbW92ZUNsZWFyZWRTcGFucyhzcGFucykge1xuICAgICAgaWYgKCFzcGFucykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBvdXQ7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgc3BhbnMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIGlmIChzcGFuc1tpMl0ubWFya2VyLmV4cGxpY2l0bHlDbGVhcmVkKSB7XG4gICAgICAgICAgaWYgKCFvdXQpIHtcbiAgICAgICAgICAgIG91dCA9IHNwYW5zLnNsaWNlKDAsIGkyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAob3V0KSB7XG4gICAgICAgICAgb3V0LnB1c2goc3BhbnNbaTJdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuICFvdXQgPyBzcGFucyA6IG91dC5sZW5ndGggPyBvdXQgOiBudWxsO1xuICAgIH1cbiAgICBfX25hbWUocmVtb3ZlQ2xlYXJlZFNwYW5zLCBcInJlbW92ZUNsZWFyZWRTcGFuc1wiKTtcbiAgICBmdW5jdGlvbiBnZXRPbGRTcGFucyhkb2MsIGNoYW5nZSkge1xuICAgICAgdmFyIGZvdW5kID0gY2hhbmdlW1wic3BhbnNfXCIgKyBkb2MuaWRdO1xuICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBudyA9IFtdO1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGNoYW5nZS50ZXh0Lmxlbmd0aDsgKytpMikge1xuICAgICAgICBudy5wdXNoKHJlbW92ZUNsZWFyZWRTcGFucyhmb3VuZFtpMl0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudztcbiAgICB9XG4gICAgX19uYW1lKGdldE9sZFNwYW5zLCBcImdldE9sZFNwYW5zXCIpO1xuICAgIGZ1bmN0aW9uIG1lcmdlT2xkU3BhbnMoZG9jLCBjaGFuZ2UpIHtcbiAgICAgIHZhciBvbGQgPSBnZXRPbGRTcGFucyhkb2MsIGNoYW5nZSk7XG4gICAgICB2YXIgc3RyZXRjaGVkID0gc3RyZXRjaFNwYW5zT3ZlckNoYW5nZShkb2MsIGNoYW5nZSk7XG4gICAgICBpZiAoIW9sZCkge1xuICAgICAgICByZXR1cm4gc3RyZXRjaGVkO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJldGNoZWQpIHtcbiAgICAgICAgcmV0dXJuIG9sZDtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBvbGQubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIHZhciBvbGRDdXIgPSBvbGRbaTJdLCBzdHJldGNoQ3VyID0gc3RyZXRjaGVkW2kyXTtcbiAgICAgICAgaWYgKG9sZEN1ciAmJiBzdHJldGNoQ3VyKSB7XG4gICAgICAgICAgc3BhbnM6XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN0cmV0Y2hDdXIubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgICAgdmFyIHNwYW4gPSBzdHJldGNoQ3VyW2pdO1xuICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IG9sZEN1ci5sZW5ndGg7ICsraykge1xuICAgICAgICAgICAgICAgIGlmIChvbGRDdXJba10ubWFya2VyID09IHNwYW4ubWFya2VyKSB7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZSBzcGFucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb2xkQ3VyLnB1c2goc3Bhbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc3RyZXRjaEN1cikge1xuICAgICAgICAgIG9sZFtpMl0gPSBzdHJldGNoQ3VyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb2xkO1xuICAgIH1cbiAgICBfX25hbWUobWVyZ2VPbGRTcGFucywgXCJtZXJnZU9sZFNwYW5zXCIpO1xuICAgIGZ1bmN0aW9uIGNvcHlIaXN0b3J5QXJyYXkoZXZlbnRzLCBuZXdHcm91cCwgaW5zdGFudGlhdGVTZWwpIHtcbiAgICAgIHZhciBjb3B5ID0gW107XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgZXZlbnRzLmxlbmd0aDsgKytpMikge1xuICAgICAgICB2YXIgZXZlbnQgPSBldmVudHNbaTJdO1xuICAgICAgICBpZiAoZXZlbnQucmFuZ2VzKSB7XG4gICAgICAgICAgY29weS5wdXNoKGluc3RhbnRpYXRlU2VsID8gU2VsZWN0aW9uLnByb3RvdHlwZS5kZWVwQ29weS5jYWxsKGV2ZW50KSA6IGV2ZW50KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2hhbmdlcyA9IGV2ZW50LmNoYW5nZXMsIG5ld0NoYW5nZXMgPSBbXTtcbiAgICAgICAgY29weS5wdXNoKHsgY2hhbmdlczogbmV3Q2hhbmdlcyB9KTtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGFuZ2VzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgdmFyIGNoYW5nZSA9IGNoYW5nZXNbal0sIG0gPSB2b2lkIDA7XG4gICAgICAgICAgbmV3Q2hhbmdlcy5wdXNoKHsgZnJvbTogY2hhbmdlLmZyb20sIHRvOiBjaGFuZ2UudG8sIHRleHQ6IGNoYW5nZS50ZXh0IH0pO1xuICAgICAgICAgIGlmIChuZXdHcm91cCkge1xuICAgICAgICAgICAgZm9yICh2YXIgcHJvcDIgaW4gY2hhbmdlKSB7XG4gICAgICAgICAgICAgIGlmIChtID0gcHJvcDIubWF0Y2goL15zcGFuc18oXFxkKykkLykpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhPZihuZXdHcm91cCwgTnVtYmVyKG1bMV0pKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICBsc3QobmV3Q2hhbmdlcylbcHJvcDJdID0gY2hhbmdlW3Byb3AyXTtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjaGFuZ2VbcHJvcDJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuICAgIF9fbmFtZShjb3B5SGlzdG9yeUFycmF5LCBcImNvcHlIaXN0b3J5QXJyYXlcIik7XG4gICAgZnVuY3Rpb24gZXh0ZW5kUmFuZ2UocmFuZ2UyLCBoZWFkLCBvdGhlciwgZXh0ZW5kKSB7XG4gICAgICBpZiAoZXh0ZW5kKSB7XG4gICAgICAgIHZhciBhbmNob3IgPSByYW5nZTIuYW5jaG9yO1xuICAgICAgICBpZiAob3RoZXIpIHtcbiAgICAgICAgICB2YXIgcG9zQmVmb3JlID0gY21wKGhlYWQsIGFuY2hvcikgPCAwO1xuICAgICAgICAgIGlmIChwb3NCZWZvcmUgIT0gY21wKG90aGVyLCBhbmNob3IpIDwgMCkge1xuICAgICAgICAgICAgYW5jaG9yID0gaGVhZDtcbiAgICAgICAgICAgIGhlYWQgPSBvdGhlcjtcbiAgICAgICAgICB9IGVsc2UgaWYgKHBvc0JlZm9yZSAhPSBjbXAoaGVhZCwgb3RoZXIpIDwgMCkge1xuICAgICAgICAgICAgaGVhZCA9IG90aGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFJhbmdlKGFuY2hvciwgaGVhZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IFJhbmdlKG90aGVyIHx8IGhlYWQsIGhlYWQpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoZXh0ZW5kUmFuZ2UsIFwiZXh0ZW5kUmFuZ2VcIik7XG4gICAgZnVuY3Rpb24gZXh0ZW5kU2VsZWN0aW9uKGRvYywgaGVhZCwgb3RoZXIsIG9wdGlvbnMsIGV4dGVuZCkge1xuICAgICAgaWYgKGV4dGVuZCA9PSBudWxsKSB7XG4gICAgICAgIGV4dGVuZCA9IGRvYy5jbSAmJiAoZG9jLmNtLmRpc3BsYXkuc2hpZnQgfHwgZG9jLmV4dGVuZCk7XG4gICAgICB9XG4gICAgICBzZXRTZWxlY3Rpb24oZG9jLCBuZXcgU2VsZWN0aW9uKFtleHRlbmRSYW5nZShkb2Muc2VsLnByaW1hcnkoKSwgaGVhZCwgb3RoZXIsIGV4dGVuZCldLCAwKSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIF9fbmFtZShleHRlbmRTZWxlY3Rpb24sIFwiZXh0ZW5kU2VsZWN0aW9uXCIpO1xuICAgIGZ1bmN0aW9uIGV4dGVuZFNlbGVjdGlvbnMoZG9jLCBoZWFkcywgb3B0aW9ucykge1xuICAgICAgdmFyIG91dCA9IFtdO1xuICAgICAgdmFyIGV4dGVuZCA9IGRvYy5jbSAmJiAoZG9jLmNtLmRpc3BsYXkuc2hpZnQgfHwgZG9jLmV4dGVuZCk7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgZG9jLnNlbC5yYW5nZXMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIG91dFtpMl0gPSBleHRlbmRSYW5nZShkb2Muc2VsLnJhbmdlc1tpMl0sIGhlYWRzW2kyXSwgbnVsbCwgZXh0ZW5kKTtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdTZWwgPSBub3JtYWxpemVTZWxlY3Rpb24oZG9jLmNtLCBvdXQsIGRvYy5zZWwucHJpbUluZGV4KTtcbiAgICAgIHNldFNlbGVjdGlvbihkb2MsIG5ld1NlbCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIF9fbmFtZShleHRlbmRTZWxlY3Rpb25zLCBcImV4dGVuZFNlbGVjdGlvbnNcIik7XG4gICAgZnVuY3Rpb24gcmVwbGFjZU9uZVNlbGVjdGlvbihkb2MsIGkyLCByYW5nZTIsIG9wdGlvbnMpIHtcbiAgICAgIHZhciByYW5nZXMgPSBkb2Muc2VsLnJhbmdlcy5zbGljZSgwKTtcbiAgICAgIHJhbmdlc1tpMl0gPSByYW5nZTI7XG4gICAgICBzZXRTZWxlY3Rpb24oZG9jLCBub3JtYWxpemVTZWxlY3Rpb24oZG9jLmNtLCByYW5nZXMsIGRvYy5zZWwucHJpbUluZGV4KSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIF9fbmFtZShyZXBsYWNlT25lU2VsZWN0aW9uLCBcInJlcGxhY2VPbmVTZWxlY3Rpb25cIik7XG4gICAgZnVuY3Rpb24gc2V0U2ltcGxlU2VsZWN0aW9uKGRvYywgYW5jaG9yLCBoZWFkLCBvcHRpb25zKSB7XG4gICAgICBzZXRTZWxlY3Rpb24oZG9jLCBzaW1wbGVTZWxlY3Rpb24oYW5jaG9yLCBoZWFkKSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIF9fbmFtZShzZXRTaW1wbGVTZWxlY3Rpb24sIFwic2V0U2ltcGxlU2VsZWN0aW9uXCIpO1xuICAgIGZ1bmN0aW9uIGZpbHRlclNlbGVjdGlvbkNoYW5nZShkb2MsIHNlbCwgb3B0aW9ucykge1xuICAgICAgdmFyIG9iaiA9IHtcbiAgICAgICAgcmFuZ2VzOiBzZWwucmFuZ2VzLFxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKHJhbmdlcykge1xuICAgICAgICAgIHRoaXMucmFuZ2VzID0gW107XG4gICAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHJhbmdlcy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VzW2kyXSA9IG5ldyBSYW5nZShjbGlwUG9zKGRvYywgcmFuZ2VzW2kyXS5hbmNob3IpLCBjbGlwUG9zKGRvYywgcmFuZ2VzW2kyXS5oZWFkKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvcmlnaW46IG9wdGlvbnMgJiYgb3B0aW9ucy5vcmlnaW5cbiAgICAgIH07XG4gICAgICBzaWduYWwoZG9jLCBcImJlZm9yZVNlbGVjdGlvbkNoYW5nZVwiLCBkb2MsIG9iaik7XG4gICAgICBpZiAoZG9jLmNtKSB7XG4gICAgICAgIHNpZ25hbChkb2MuY20sIFwiYmVmb3JlU2VsZWN0aW9uQ2hhbmdlXCIsIGRvYy5jbSwgb2JqKTtcbiAgICAgIH1cbiAgICAgIGlmIChvYmoucmFuZ2VzICE9IHNlbC5yYW5nZXMpIHtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZVNlbGVjdGlvbihkb2MuY20sIG9iai5yYW5nZXMsIG9iai5yYW5nZXMubGVuZ3RoIC0gMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc2VsO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoZmlsdGVyU2VsZWN0aW9uQ2hhbmdlLCBcImZpbHRlclNlbGVjdGlvbkNoYW5nZVwiKTtcbiAgICBmdW5jdGlvbiBzZXRTZWxlY3Rpb25SZXBsYWNlSGlzdG9yeShkb2MsIHNlbCwgb3B0aW9ucykge1xuICAgICAgdmFyIGRvbmUgPSBkb2MuaGlzdG9yeS5kb25lLCBsYXN0ID0gbHN0KGRvbmUpO1xuICAgICAgaWYgKGxhc3QgJiYgbGFzdC5yYW5nZXMpIHtcbiAgICAgICAgZG9uZVtkb25lLmxlbmd0aCAtIDFdID0gc2VsO1xuICAgICAgICBzZXRTZWxlY3Rpb25Ob1VuZG8oZG9jLCBzZWwsIG9wdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0U2VsZWN0aW9uKGRvYywgc2VsLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHNldFNlbGVjdGlvblJlcGxhY2VIaXN0b3J5LCBcInNldFNlbGVjdGlvblJlcGxhY2VIaXN0b3J5XCIpO1xuICAgIGZ1bmN0aW9uIHNldFNlbGVjdGlvbihkb2MsIHNlbCwgb3B0aW9ucykge1xuICAgICAgc2V0U2VsZWN0aW9uTm9VbmRvKGRvYywgc2VsLCBvcHRpb25zKTtcbiAgICAgIGFkZFNlbGVjdGlvblRvSGlzdG9yeShkb2MsIGRvYy5zZWwsIGRvYy5jbSA/IGRvYy5jbS5jdXJPcC5pZCA6IE5hTiwgb3B0aW9ucyk7XG4gICAgfVxuICAgIF9fbmFtZShzZXRTZWxlY3Rpb24sIFwic2V0U2VsZWN0aW9uXCIpO1xuICAgIGZ1bmN0aW9uIHNldFNlbGVjdGlvbk5vVW5kbyhkb2MsIHNlbCwgb3B0aW9ucykge1xuICAgICAgaWYgKGhhc0hhbmRsZXIoZG9jLCBcImJlZm9yZVNlbGVjdGlvbkNoYW5nZVwiKSB8fCBkb2MuY20gJiYgaGFzSGFuZGxlcihkb2MuY20sIFwiYmVmb3JlU2VsZWN0aW9uQ2hhbmdlXCIpKSB7XG4gICAgICAgIHNlbCA9IGZpbHRlclNlbGVjdGlvbkNoYW5nZShkb2MsIHNlbCwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgICB2YXIgYmlhcyA9IG9wdGlvbnMgJiYgb3B0aW9ucy5iaWFzIHx8IChjbXAoc2VsLnByaW1hcnkoKS5oZWFkLCBkb2Muc2VsLnByaW1hcnkoKS5oZWFkKSA8IDAgPyAtMSA6IDEpO1xuICAgICAgc2V0U2VsZWN0aW9uSW5uZXIoZG9jLCBza2lwQXRvbWljSW5TZWxlY3Rpb24oZG9jLCBzZWwsIGJpYXMsIHRydWUpKTtcbiAgICAgIGlmICghKG9wdGlvbnMgJiYgb3B0aW9ucy5zY3JvbGwgPT09IGZhbHNlKSAmJiBkb2MuY20gJiYgZG9jLmNtLmdldE9wdGlvbihcInJlYWRPbmx5XCIpICE9IFwibm9jdXJzb3JcIikge1xuICAgICAgICBlbnN1cmVDdXJzb3JWaXNpYmxlKGRvYy5jbSk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShzZXRTZWxlY3Rpb25Ob1VuZG8sIFwic2V0U2VsZWN0aW9uTm9VbmRvXCIpO1xuICAgIGZ1bmN0aW9uIHNldFNlbGVjdGlvbklubmVyKGRvYywgc2VsKSB7XG4gICAgICBpZiAoc2VsLmVxdWFscyhkb2Muc2VsKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkb2Muc2VsID0gc2VsO1xuICAgICAgaWYgKGRvYy5jbSkge1xuICAgICAgICBkb2MuY20uY3VyT3AudXBkYXRlSW5wdXQgPSAxO1xuICAgICAgICBkb2MuY20uY3VyT3Auc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIHNpZ25hbEN1cnNvckFjdGl2aXR5KGRvYy5jbSk7XG4gICAgICB9XG4gICAgICBzaWduYWxMYXRlcihkb2MsIFwiY3Vyc29yQWN0aXZpdHlcIiwgZG9jKTtcbiAgICB9XG4gICAgX19uYW1lKHNldFNlbGVjdGlvbklubmVyLCBcInNldFNlbGVjdGlvbklubmVyXCIpO1xuICAgIGZ1bmN0aW9uIHJlQ2hlY2tTZWxlY3Rpb24oZG9jKSB7XG4gICAgICBzZXRTZWxlY3Rpb25Jbm5lcihkb2MsIHNraXBBdG9taWNJblNlbGVjdGlvbihkb2MsIGRvYy5zZWwsIG51bGwsIGZhbHNlKSk7XG4gICAgfVxuICAgIF9fbmFtZShyZUNoZWNrU2VsZWN0aW9uLCBcInJlQ2hlY2tTZWxlY3Rpb25cIik7XG4gICAgZnVuY3Rpb24gc2tpcEF0b21pY0luU2VsZWN0aW9uKGRvYywgc2VsLCBiaWFzLCBtYXlDbGVhcikge1xuICAgICAgdmFyIG91dDtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBzZWwucmFuZ2VzLmxlbmd0aDsgaTIrKykge1xuICAgICAgICB2YXIgcmFuZ2UyID0gc2VsLnJhbmdlc1tpMl07XG4gICAgICAgIHZhciBvbGQgPSBzZWwucmFuZ2VzLmxlbmd0aCA9PSBkb2Muc2VsLnJhbmdlcy5sZW5ndGggJiYgZG9jLnNlbC5yYW5nZXNbaTJdO1xuICAgICAgICB2YXIgbmV3QW5jaG9yID0gc2tpcEF0b21pYyhkb2MsIHJhbmdlMi5hbmNob3IsIG9sZCAmJiBvbGQuYW5jaG9yLCBiaWFzLCBtYXlDbGVhcik7XG4gICAgICAgIHZhciBuZXdIZWFkID0gc2tpcEF0b21pYyhkb2MsIHJhbmdlMi5oZWFkLCBvbGQgJiYgb2xkLmhlYWQsIGJpYXMsIG1heUNsZWFyKTtcbiAgICAgICAgaWYgKG91dCB8fCBuZXdBbmNob3IgIT0gcmFuZ2UyLmFuY2hvciB8fCBuZXdIZWFkICE9IHJhbmdlMi5oZWFkKSB7XG4gICAgICAgICAgaWYgKCFvdXQpIHtcbiAgICAgICAgICAgIG91dCA9IHNlbC5yYW5nZXMuc2xpY2UoMCwgaTIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdXRbaTJdID0gbmV3IFJhbmdlKG5ld0FuY2hvciwgbmV3SGVhZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQgPyBub3JtYWxpemVTZWxlY3Rpb24oZG9jLmNtLCBvdXQsIHNlbC5wcmltSW5kZXgpIDogc2VsO1xuICAgIH1cbiAgICBfX25hbWUoc2tpcEF0b21pY0luU2VsZWN0aW9uLCBcInNraXBBdG9taWNJblNlbGVjdGlvblwiKTtcbiAgICBmdW5jdGlvbiBza2lwQXRvbWljSW5uZXIoZG9jLCBwb3MsIG9sZFBvcywgZGlyLCBtYXlDbGVhcikge1xuICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKGRvYywgcG9zLmxpbmUpO1xuICAgICAgaWYgKGxpbmUubWFya2VkU3BhbnMpIHtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGxpbmUubWFya2VkU3BhbnMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgICAgdmFyIHNwID0gbGluZS5tYXJrZWRTcGFuc1tpMl0sIG0gPSBzcC5tYXJrZXI7XG4gICAgICAgICAgdmFyIHByZXZlbnRDdXJzb3JMZWZ0ID0gXCJzZWxlY3RMZWZ0XCIgaW4gbSA/ICFtLnNlbGVjdExlZnQgOiBtLmluY2x1c2l2ZUxlZnQ7XG4gICAgICAgICAgdmFyIHByZXZlbnRDdXJzb3JSaWdodCA9IFwic2VsZWN0UmlnaHRcIiBpbiBtID8gIW0uc2VsZWN0UmlnaHQgOiBtLmluY2x1c2l2ZVJpZ2h0O1xuICAgICAgICAgIGlmICgoc3AuZnJvbSA9PSBudWxsIHx8IChwcmV2ZW50Q3Vyc29yTGVmdCA/IHNwLmZyb20gPD0gcG9zLmNoIDogc3AuZnJvbSA8IHBvcy5jaCkpICYmIChzcC50byA9PSBudWxsIHx8IChwcmV2ZW50Q3Vyc29yUmlnaHQgPyBzcC50byA+PSBwb3MuY2ggOiBzcC50byA+IHBvcy5jaCkpKSB7XG4gICAgICAgICAgICBpZiAobWF5Q2xlYXIpIHtcbiAgICAgICAgICAgICAgc2lnbmFsKG0sIFwiYmVmb3JlQ3Vyc29yRW50ZXJcIik7XG4gICAgICAgICAgICAgIGlmIChtLmV4cGxpY2l0bHlDbGVhcmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFsaW5lLm1hcmtlZFNwYW5zKSB7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgLS1pMjtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFtLmF0b21pYykge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvbGRQb3MpIHtcbiAgICAgICAgICAgICAgdmFyIG5lYXIgPSBtLmZpbmQoZGlyIDwgMCA/IDEgOiAtMSksIGRpZmYgPSB2b2lkIDA7XG4gICAgICAgICAgICAgIGlmIChkaXIgPCAwID8gcHJldmVudEN1cnNvclJpZ2h0IDogcHJldmVudEN1cnNvckxlZnQpIHtcbiAgICAgICAgICAgICAgICBuZWFyID0gbW92ZVBvcyhkb2MsIG5lYXIsIC1kaXIsIG5lYXIgJiYgbmVhci5saW5lID09IHBvcy5saW5lID8gbGluZSA6IG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChuZWFyICYmIG5lYXIubGluZSA9PSBwb3MubGluZSAmJiAoZGlmZiA9IGNtcChuZWFyLCBvbGRQb3MpKSAmJiAoZGlyIDwgMCA/IGRpZmYgPCAwIDogZGlmZiA+IDApKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNraXBBdG9taWNJbm5lcihkb2MsIG5lYXIsIHBvcywgZGlyLCBtYXlDbGVhcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBmYXIgPSBtLmZpbmQoZGlyIDwgMCA/IC0xIDogMSk7XG4gICAgICAgICAgICBpZiAoZGlyIDwgMCA/IHByZXZlbnRDdXJzb3JMZWZ0IDogcHJldmVudEN1cnNvclJpZ2h0KSB7XG4gICAgICAgICAgICAgIGZhciA9IG1vdmVQb3MoZG9jLCBmYXIsIGRpciwgZmFyLmxpbmUgPT0gcG9zLmxpbmUgPyBsaW5lIDogbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFyID8gc2tpcEF0b21pY0lubmVyKGRvYywgZmFyLCBwb3MsIGRpciwgbWF5Q2xlYXIpIDogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBwb3M7XG4gICAgfVxuICAgIF9fbmFtZShza2lwQXRvbWljSW5uZXIsIFwic2tpcEF0b21pY0lubmVyXCIpO1xuICAgIGZ1bmN0aW9uIHNraXBBdG9taWMoZG9jLCBwb3MsIG9sZFBvcywgYmlhcywgbWF5Q2xlYXIpIHtcbiAgICAgIHZhciBkaXIgPSBiaWFzIHx8IDE7XG4gICAgICB2YXIgZm91bmQgPSBza2lwQXRvbWljSW5uZXIoZG9jLCBwb3MsIG9sZFBvcywgZGlyLCBtYXlDbGVhcikgfHwgIW1heUNsZWFyICYmIHNraXBBdG9taWNJbm5lcihkb2MsIHBvcywgb2xkUG9zLCBkaXIsIHRydWUpIHx8IHNraXBBdG9taWNJbm5lcihkb2MsIHBvcywgb2xkUG9zLCAtZGlyLCBtYXlDbGVhcikgfHwgIW1heUNsZWFyICYmIHNraXBBdG9taWNJbm5lcihkb2MsIHBvcywgb2xkUG9zLCAtZGlyLCB0cnVlKTtcbiAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgZG9jLmNhbnRFZGl0ID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIFBvcyhkb2MuZmlyc3QsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvdW5kO1xuICAgIH1cbiAgICBfX25hbWUoc2tpcEF0b21pYywgXCJza2lwQXRvbWljXCIpO1xuICAgIGZ1bmN0aW9uIG1vdmVQb3MoZG9jLCBwb3MsIGRpciwgbGluZSkge1xuICAgICAgaWYgKGRpciA8IDAgJiYgcG9zLmNoID09IDApIHtcbiAgICAgICAgaWYgKHBvcy5saW5lID4gZG9jLmZpcnN0KSB7XG4gICAgICAgICAgcmV0dXJuIGNsaXBQb3MoZG9jLCBQb3MocG9zLmxpbmUgLSAxKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGlyID4gMCAmJiBwb3MuY2ggPT0gKGxpbmUgfHwgZ2V0TGluZShkb2MsIHBvcy5saW5lKSkudGV4dC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHBvcy5saW5lIDwgZG9jLmZpcnN0ICsgZG9jLnNpemUgLSAxKSB7XG4gICAgICAgICAgcmV0dXJuIFBvcyhwb3MubGluZSArIDEsIDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IFBvcyhwb3MubGluZSwgcG9zLmNoICsgZGlyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKG1vdmVQb3MsIFwibW92ZVBvc1wiKTtcbiAgICBmdW5jdGlvbiBzZWxlY3RBbGwoY20pIHtcbiAgICAgIGNtLnNldFNlbGVjdGlvbihQb3MoY20uZmlyc3RMaW5lKCksIDApLCBQb3MoY20ubGFzdExpbmUoKSksIHNlbF9kb250U2Nyb2xsKTtcbiAgICB9XG4gICAgX19uYW1lKHNlbGVjdEFsbCwgXCJzZWxlY3RBbGxcIik7XG4gICAgZnVuY3Rpb24gZmlsdGVyQ2hhbmdlKGRvYywgY2hhbmdlLCB1cGRhdGUpIHtcbiAgICAgIHZhciBvYmogPSB7XG4gICAgICAgIGNhbmNlbGVkOiBmYWxzZSxcbiAgICAgICAgZnJvbTogY2hhbmdlLmZyb20sXG4gICAgICAgIHRvOiBjaGFuZ2UudG8sXG4gICAgICAgIHRleHQ6IGNoYW5nZS50ZXh0LFxuICAgICAgICBvcmlnaW46IGNoYW5nZS5vcmlnaW4sXG4gICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIG9iai5jYW5jZWxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBpZiAodXBkYXRlKSB7XG4gICAgICAgIG9iai51cGRhdGUgPSBmdW5jdGlvbihmcm9tLCB0bywgdGV4dCwgb3JpZ2luKSB7XG4gICAgICAgICAgaWYgKGZyb20pIHtcbiAgICAgICAgICAgIG9iai5mcm9tID0gY2xpcFBvcyhkb2MsIGZyb20pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodG8pIHtcbiAgICAgICAgICAgIG9iai50byA9IGNsaXBQb3MoZG9jLCB0byk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgICAgICBvYmoudGV4dCA9IHRleHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcmlnaW4gIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgb2JqLm9yaWdpbiA9IG9yaWdpbjtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBzaWduYWwoZG9jLCBcImJlZm9yZUNoYW5nZVwiLCBkb2MsIG9iaik7XG4gICAgICBpZiAoZG9jLmNtKSB7XG4gICAgICAgIHNpZ25hbChkb2MuY20sIFwiYmVmb3JlQ2hhbmdlXCIsIGRvYy5jbSwgb2JqKTtcbiAgICAgIH1cbiAgICAgIGlmIChvYmouY2FuY2VsZWQpIHtcbiAgICAgICAgaWYgKGRvYy5jbSkge1xuICAgICAgICAgIGRvYy5jbS5jdXJPcC51cGRhdGVJbnB1dCA9IDI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4geyBmcm9tOiBvYmouZnJvbSwgdG86IG9iai50bywgdGV4dDogb2JqLnRleHQsIG9yaWdpbjogb2JqLm9yaWdpbiB9O1xuICAgIH1cbiAgICBfX25hbWUoZmlsdGVyQ2hhbmdlLCBcImZpbHRlckNoYW5nZVwiKTtcbiAgICBmdW5jdGlvbiBtYWtlQ2hhbmdlKGRvYywgY2hhbmdlLCBpZ25vcmVSZWFkT25seSkge1xuICAgICAgaWYgKGRvYy5jbSkge1xuICAgICAgICBpZiAoIWRvYy5jbS5jdXJPcCkge1xuICAgICAgICAgIHJldHVybiBvcGVyYXRpb24oZG9jLmNtLCBtYWtlQ2hhbmdlKShkb2MsIGNoYW5nZSwgaWdub3JlUmVhZE9ubHkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkb2MuY20uc3RhdGUuc3VwcHJlc3NFZGl0cykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGhhc0hhbmRsZXIoZG9jLCBcImJlZm9yZUNoYW5nZVwiKSB8fCBkb2MuY20gJiYgaGFzSGFuZGxlcihkb2MuY20sIFwiYmVmb3JlQ2hhbmdlXCIpKSB7XG4gICAgICAgIGNoYW5nZSA9IGZpbHRlckNoYW5nZShkb2MsIGNoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIGlmICghY2hhbmdlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgc3BsaXQgPSBzYXdSZWFkT25seVNwYW5zICYmICFpZ25vcmVSZWFkT25seSAmJiByZW1vdmVSZWFkT25seVJhbmdlcyhkb2MsIGNoYW5nZS5mcm9tLCBjaGFuZ2UudG8pO1xuICAgICAgaWYgKHNwbGl0KSB7XG4gICAgICAgIGZvciAodmFyIGkyID0gc3BsaXQubGVuZ3RoIC0gMTsgaTIgPj0gMDsgLS1pMikge1xuICAgICAgICAgIG1ha2VDaGFuZ2VJbm5lcihkb2MsIHsgZnJvbTogc3BsaXRbaTJdLmZyb20sIHRvOiBzcGxpdFtpMl0udG8sIHRleHQ6IGkyID8gW1wiXCJdIDogY2hhbmdlLnRleHQsIG9yaWdpbjogY2hhbmdlLm9yaWdpbiB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFrZUNoYW5nZUlubmVyKGRvYywgY2hhbmdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKG1ha2VDaGFuZ2UsIFwibWFrZUNoYW5nZVwiKTtcbiAgICBmdW5jdGlvbiBtYWtlQ2hhbmdlSW5uZXIoZG9jLCBjaGFuZ2UpIHtcbiAgICAgIGlmIChjaGFuZ2UudGV4dC5sZW5ndGggPT0gMSAmJiBjaGFuZ2UudGV4dFswXSA9PSBcIlwiICYmIGNtcChjaGFuZ2UuZnJvbSwgY2hhbmdlLnRvKSA9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBzZWxBZnRlciA9IGNvbXB1dGVTZWxBZnRlckNoYW5nZShkb2MsIGNoYW5nZSk7XG4gICAgICBhZGRDaGFuZ2VUb0hpc3RvcnkoZG9jLCBjaGFuZ2UsIHNlbEFmdGVyLCBkb2MuY20gPyBkb2MuY20uY3VyT3AuaWQgOiBOYU4pO1xuICAgICAgbWFrZUNoYW5nZVNpbmdsZURvYyhkb2MsIGNoYW5nZSwgc2VsQWZ0ZXIsIHN0cmV0Y2hTcGFuc092ZXJDaGFuZ2UoZG9jLCBjaGFuZ2UpKTtcbiAgICAgIHZhciByZWJhc2VkID0gW107XG4gICAgICBsaW5rZWREb2NzKGRvYywgZnVuY3Rpb24oZG9jMiwgc2hhcmVkSGlzdCkge1xuICAgICAgICBpZiAoIXNoYXJlZEhpc3QgJiYgaW5kZXhPZihyZWJhc2VkLCBkb2MyLmhpc3RvcnkpID09IC0xKSB7XG4gICAgICAgICAgcmViYXNlSGlzdChkb2MyLmhpc3RvcnksIGNoYW5nZSk7XG4gICAgICAgICAgcmViYXNlZC5wdXNoKGRvYzIuaGlzdG9yeSk7XG4gICAgICAgIH1cbiAgICAgICAgbWFrZUNoYW5nZVNpbmdsZURvYyhkb2MyLCBjaGFuZ2UsIG51bGwsIHN0cmV0Y2hTcGFuc092ZXJDaGFuZ2UoZG9jMiwgY2hhbmdlKSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgX19uYW1lKG1ha2VDaGFuZ2VJbm5lciwgXCJtYWtlQ2hhbmdlSW5uZXJcIik7XG4gICAgZnVuY3Rpb24gbWFrZUNoYW5nZUZyb21IaXN0b3J5KGRvYywgdHlwZSwgYWxsb3dTZWxlY3Rpb25Pbmx5KSB7XG4gICAgICB2YXIgc3VwcHJlc3MgPSBkb2MuY20gJiYgZG9jLmNtLnN0YXRlLnN1cHByZXNzRWRpdHM7XG4gICAgICBpZiAoc3VwcHJlc3MgJiYgIWFsbG93U2VsZWN0aW9uT25seSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgaGlzdCA9IGRvYy5oaXN0b3J5LCBldmVudCwgc2VsQWZ0ZXIgPSBkb2Muc2VsO1xuICAgICAgdmFyIHNvdXJjZSA9IHR5cGUgPT0gXCJ1bmRvXCIgPyBoaXN0LmRvbmUgOiBoaXN0LnVuZG9uZSwgZGVzdCA9IHR5cGUgPT0gXCJ1bmRvXCIgPyBoaXN0LnVuZG9uZSA6IGhpc3QuZG9uZTtcbiAgICAgIHZhciBpMiA9IDA7XG4gICAgICBmb3IgKDsgaTIgPCBzb3VyY2UubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIGV2ZW50ID0gc291cmNlW2kyXTtcbiAgICAgICAgaWYgKGFsbG93U2VsZWN0aW9uT25seSA/IGV2ZW50LnJhbmdlcyAmJiAhZXZlbnQuZXF1YWxzKGRvYy5zZWwpIDogIWV2ZW50LnJhbmdlcykge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaTIgPT0gc291cmNlLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBoaXN0Lmxhc3RPcmlnaW4gPSBoaXN0Lmxhc3RTZWxPcmlnaW4gPSBudWxsO1xuICAgICAgZm9yICg7IDsgKSB7XG4gICAgICAgIGV2ZW50ID0gc291cmNlLnBvcCgpO1xuICAgICAgICBpZiAoZXZlbnQucmFuZ2VzKSB7XG4gICAgICAgICAgcHVzaFNlbGVjdGlvblRvSGlzdG9yeShldmVudCwgZGVzdCk7XG4gICAgICAgICAgaWYgKGFsbG93U2VsZWN0aW9uT25seSAmJiAhZXZlbnQuZXF1YWxzKGRvYy5zZWwpKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3Rpb24oZG9jLCBldmVudCwgeyBjbGVhclJlZG86IGZhbHNlIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZWxBZnRlciA9IGV2ZW50O1xuICAgICAgICB9IGVsc2UgaWYgKHN1cHByZXNzKSB7XG4gICAgICAgICAgc291cmNlLnB1c2goZXZlbnQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIGFudGlDaGFuZ2VzID0gW107XG4gICAgICBwdXNoU2VsZWN0aW9uVG9IaXN0b3J5KHNlbEFmdGVyLCBkZXN0KTtcbiAgICAgIGRlc3QucHVzaCh7IGNoYW5nZXM6IGFudGlDaGFuZ2VzLCBnZW5lcmF0aW9uOiBoaXN0LmdlbmVyYXRpb24gfSk7XG4gICAgICBoaXN0LmdlbmVyYXRpb24gPSBldmVudC5nZW5lcmF0aW9uIHx8ICsraGlzdC5tYXhHZW5lcmF0aW9uO1xuICAgICAgdmFyIGZpbHRlciA9IGhhc0hhbmRsZXIoZG9jLCBcImJlZm9yZUNoYW5nZVwiKSB8fCBkb2MuY20gJiYgaGFzSGFuZGxlcihkb2MuY20sIFwiYmVmb3JlQ2hhbmdlXCIpO1xuICAgICAgdmFyIGxvb3AgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKGkzKSB7XG4gICAgICAgIHZhciBjaGFuZ2UgPSBldmVudC5jaGFuZ2VzW2kzXTtcbiAgICAgICAgY2hhbmdlLm9yaWdpbiA9IHR5cGU7XG4gICAgICAgIGlmIChmaWx0ZXIgJiYgIWZpbHRlckNoYW5nZShkb2MsIGNoYW5nZSwgZmFsc2UpKSB7XG4gICAgICAgICAgc291cmNlLmxlbmd0aCA9IDA7XG4gICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGFudGlDaGFuZ2VzLnB1c2goaGlzdG9yeUNoYW5nZUZyb21DaGFuZ2UoZG9jLCBjaGFuZ2UpKTtcbiAgICAgICAgdmFyIGFmdGVyID0gaTMgPyBjb21wdXRlU2VsQWZ0ZXJDaGFuZ2UoZG9jLCBjaGFuZ2UpIDogbHN0KHNvdXJjZSk7XG4gICAgICAgIG1ha2VDaGFuZ2VTaW5nbGVEb2MoZG9jLCBjaGFuZ2UsIGFmdGVyLCBtZXJnZU9sZFNwYW5zKGRvYywgY2hhbmdlKSk7XG4gICAgICAgIGlmICghaTMgJiYgZG9jLmNtKSB7XG4gICAgICAgICAgZG9jLmNtLnNjcm9sbEludG9WaWV3KHsgZnJvbTogY2hhbmdlLmZyb20sIHRvOiBjaGFuZ2VFbmQoY2hhbmdlKSB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmViYXNlZCA9IFtdO1xuICAgICAgICBsaW5rZWREb2NzKGRvYywgZnVuY3Rpb24oZG9jMiwgc2hhcmVkSGlzdCkge1xuICAgICAgICAgIGlmICghc2hhcmVkSGlzdCAmJiBpbmRleE9mKHJlYmFzZWQsIGRvYzIuaGlzdG9yeSkgPT0gLTEpIHtcbiAgICAgICAgICAgIHJlYmFzZUhpc3QoZG9jMi5oaXN0b3J5LCBjaGFuZ2UpO1xuICAgICAgICAgICAgcmViYXNlZC5wdXNoKGRvYzIuaGlzdG9yeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG1ha2VDaGFuZ2VTaW5nbGVEb2MoZG9jMiwgY2hhbmdlLCBudWxsLCBtZXJnZU9sZFNwYW5zKGRvYzIsIGNoYW5nZSkpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIFwibG9vcFwiKTtcbiAgICAgIGZvciAodmFyIGkkMTIgPSBldmVudC5jaGFuZ2VzLmxlbmd0aCAtIDE7IGkkMTIgPj0gMDsgLS1pJDEyKSB7XG4gICAgICAgIHZhciByZXR1cm5lZCA9IGxvb3AoaSQxMik7XG4gICAgICAgIGlmIChyZXR1cm5lZClcbiAgICAgICAgICByZXR1cm4gcmV0dXJuZWQudjtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKG1ha2VDaGFuZ2VGcm9tSGlzdG9yeSwgXCJtYWtlQ2hhbmdlRnJvbUhpc3RvcnlcIik7XG4gICAgZnVuY3Rpb24gc2hpZnREb2MoZG9jLCBkaXN0YW5jZSkge1xuICAgICAgaWYgKGRpc3RhbmNlID09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZG9jLmZpcnN0ICs9IGRpc3RhbmNlO1xuICAgICAgZG9jLnNlbCA9IG5ldyBTZWxlY3Rpb24obWFwKGRvYy5zZWwucmFuZ2VzLCBmdW5jdGlvbihyYW5nZTIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSYW5nZShQb3MocmFuZ2UyLmFuY2hvci5saW5lICsgZGlzdGFuY2UsIHJhbmdlMi5hbmNob3IuY2gpLCBQb3MocmFuZ2UyLmhlYWQubGluZSArIGRpc3RhbmNlLCByYW5nZTIuaGVhZC5jaCkpO1xuICAgICAgfSksIGRvYy5zZWwucHJpbUluZGV4KTtcbiAgICAgIGlmIChkb2MuY20pIHtcbiAgICAgICAgcmVnQ2hhbmdlKGRvYy5jbSwgZG9jLmZpcnN0LCBkb2MuZmlyc3QgLSBkaXN0YW5jZSwgZGlzdGFuY2UpO1xuICAgICAgICBmb3IgKHZhciBkID0gZG9jLmNtLmRpc3BsYXksIGwgPSBkLnZpZXdGcm9tOyBsIDwgZC52aWV3VG87IGwrKykge1xuICAgICAgICAgIHJlZ0xpbmVDaGFuZ2UoZG9jLmNtLCBsLCBcImd1dHRlclwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoc2hpZnREb2MsIFwic2hpZnREb2NcIik7XG4gICAgZnVuY3Rpb24gbWFrZUNoYW5nZVNpbmdsZURvYyhkb2MsIGNoYW5nZSwgc2VsQWZ0ZXIsIHNwYW5zKSB7XG4gICAgICBpZiAoZG9jLmNtICYmICFkb2MuY20uY3VyT3ApIHtcbiAgICAgICAgcmV0dXJuIG9wZXJhdGlvbihkb2MuY20sIG1ha2VDaGFuZ2VTaW5nbGVEb2MpKGRvYywgY2hhbmdlLCBzZWxBZnRlciwgc3BhbnMpO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZS50by5saW5lIDwgZG9jLmZpcnN0KSB7XG4gICAgICAgIHNoaWZ0RG9jKGRvYywgY2hhbmdlLnRleHQubGVuZ3RoIC0gMSAtIChjaGFuZ2UudG8ubGluZSAtIGNoYW5nZS5mcm9tLmxpbmUpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZS5mcm9tLmxpbmUgPiBkb2MubGFzdExpbmUoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlLmZyb20ubGluZSA8IGRvYy5maXJzdCkge1xuICAgICAgICB2YXIgc2hpZnQgPSBjaGFuZ2UudGV4dC5sZW5ndGggLSAxIC0gKGRvYy5maXJzdCAtIGNoYW5nZS5mcm9tLmxpbmUpO1xuICAgICAgICBzaGlmdERvYyhkb2MsIHNoaWZ0KTtcbiAgICAgICAgY2hhbmdlID0ge1xuICAgICAgICAgIGZyb206IFBvcyhkb2MuZmlyc3QsIDApLFxuICAgICAgICAgIHRvOiBQb3MoY2hhbmdlLnRvLmxpbmUgKyBzaGlmdCwgY2hhbmdlLnRvLmNoKSxcbiAgICAgICAgICB0ZXh0OiBbbHN0KGNoYW5nZS50ZXh0KV0sXG4gICAgICAgICAgb3JpZ2luOiBjaGFuZ2Uub3JpZ2luXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB2YXIgbGFzdCA9IGRvYy5sYXN0TGluZSgpO1xuICAgICAgaWYgKGNoYW5nZS50by5saW5lID4gbGFzdCkge1xuICAgICAgICBjaGFuZ2UgPSB7XG4gICAgICAgICAgZnJvbTogY2hhbmdlLmZyb20sXG4gICAgICAgICAgdG86IFBvcyhsYXN0LCBnZXRMaW5lKGRvYywgbGFzdCkudGV4dC5sZW5ndGgpLFxuICAgICAgICAgIHRleHQ6IFtjaGFuZ2UudGV4dFswXV0sXG4gICAgICAgICAgb3JpZ2luOiBjaGFuZ2Uub3JpZ2luXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjaGFuZ2UucmVtb3ZlZCA9IGdldEJldHdlZW4oZG9jLCBjaGFuZ2UuZnJvbSwgY2hhbmdlLnRvKTtcbiAgICAgIGlmICghc2VsQWZ0ZXIpIHtcbiAgICAgICAgc2VsQWZ0ZXIgPSBjb21wdXRlU2VsQWZ0ZXJDaGFuZ2UoZG9jLCBjaGFuZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKGRvYy5jbSkge1xuICAgICAgICBtYWtlQ2hhbmdlU2luZ2xlRG9jSW5FZGl0b3IoZG9jLmNtLCBjaGFuZ2UsIHNwYW5zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZURvYyhkb2MsIGNoYW5nZSwgc3BhbnMpO1xuICAgICAgfVxuICAgICAgc2V0U2VsZWN0aW9uTm9VbmRvKGRvYywgc2VsQWZ0ZXIsIHNlbF9kb250U2Nyb2xsKTtcbiAgICAgIGlmIChkb2MuY2FudEVkaXQgJiYgc2tpcEF0b21pYyhkb2MsIFBvcyhkb2MuZmlyc3RMaW5lKCksIDApKSkge1xuICAgICAgICBkb2MuY2FudEVkaXQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKG1ha2VDaGFuZ2VTaW5nbGVEb2MsIFwibWFrZUNoYW5nZVNpbmdsZURvY1wiKTtcbiAgICBmdW5jdGlvbiBtYWtlQ2hhbmdlU2luZ2xlRG9jSW5FZGl0b3IoY20sIGNoYW5nZSwgc3BhbnMpIHtcbiAgICAgIHZhciBkb2MgPSBjbS5kb2MsIGRpc3BsYXkgPSBjbS5kaXNwbGF5LCBmcm9tID0gY2hhbmdlLmZyb20sIHRvID0gY2hhbmdlLnRvO1xuICAgICAgdmFyIHJlY29tcHV0ZU1heExlbmd0aCA9IGZhbHNlLCBjaGVja1dpZHRoU3RhcnQgPSBmcm9tLmxpbmU7XG4gICAgICBpZiAoIWNtLm9wdGlvbnMubGluZVdyYXBwaW5nKSB7XG4gICAgICAgIGNoZWNrV2lkdGhTdGFydCA9IGxpbmVObyh2aXN1YWxMaW5lKGdldExpbmUoZG9jLCBmcm9tLmxpbmUpKSk7XG4gICAgICAgIGRvYy5pdGVyKGNoZWNrV2lkdGhTdGFydCwgdG8ubGluZSArIDEsIGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICBpZiAobGluZSA9PSBkaXNwbGF5Lm1heExpbmUpIHtcbiAgICAgICAgICAgIHJlY29tcHV0ZU1heExlbmd0aCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGRvYy5zZWwuY29udGFpbnMoY2hhbmdlLmZyb20sIGNoYW5nZS50bykgPiAtMSkge1xuICAgICAgICBzaWduYWxDdXJzb3JBY3Rpdml0eShjbSk7XG4gICAgICB9XG4gICAgICB1cGRhdGVEb2MoZG9jLCBjaGFuZ2UsIHNwYW5zLCBlc3RpbWF0ZUhlaWdodChjbSkpO1xuICAgICAgaWYgKCFjbS5vcHRpb25zLmxpbmVXcmFwcGluZykge1xuICAgICAgICBkb2MuaXRlcihjaGVja1dpZHRoU3RhcnQsIGZyb20ubGluZSArIGNoYW5nZS50ZXh0Lmxlbmd0aCwgZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgIHZhciBsZW4gPSBsaW5lTGVuZ3RoKGxpbmUpO1xuICAgICAgICAgIGlmIChsZW4gPiBkaXNwbGF5Lm1heExpbmVMZW5ndGgpIHtcbiAgICAgICAgICAgIGRpc3BsYXkubWF4TGluZSA9IGxpbmU7XG4gICAgICAgICAgICBkaXNwbGF5Lm1heExpbmVMZW5ndGggPSBsZW47XG4gICAgICAgICAgICBkaXNwbGF5Lm1heExpbmVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlY29tcHV0ZU1heExlbmd0aCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZWNvbXB1dGVNYXhMZW5ndGgpIHtcbiAgICAgICAgICBjbS5jdXJPcC51cGRhdGVNYXhMaW5lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0cmVhdEZyb250aWVyKGRvYywgZnJvbS5saW5lKTtcbiAgICAgIHN0YXJ0V29ya2VyKGNtLCA0MDApO1xuICAgICAgdmFyIGxlbmRpZmYgPSBjaGFuZ2UudGV4dC5sZW5ndGggLSAodG8ubGluZSAtIGZyb20ubGluZSkgLSAxO1xuICAgICAgaWYgKGNoYW5nZS5mdWxsKSB7XG4gICAgICAgIHJlZ0NoYW5nZShjbSk7XG4gICAgICB9IGVsc2UgaWYgKGZyb20ubGluZSA9PSB0by5saW5lICYmIGNoYW5nZS50ZXh0Lmxlbmd0aCA9PSAxICYmICFpc1dob2xlTGluZVVwZGF0ZShjbS5kb2MsIGNoYW5nZSkpIHtcbiAgICAgICAgcmVnTGluZUNoYW5nZShjbSwgZnJvbS5saW5lLCBcInRleHRcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWdDaGFuZ2UoY20sIGZyb20ubGluZSwgdG8ubGluZSArIDEsIGxlbmRpZmYpO1xuICAgICAgfVxuICAgICAgdmFyIGNoYW5nZXNIYW5kbGVyID0gaGFzSGFuZGxlcihjbSwgXCJjaGFuZ2VzXCIpLCBjaGFuZ2VIYW5kbGVyID0gaGFzSGFuZGxlcihjbSwgXCJjaGFuZ2VcIik7XG4gICAgICBpZiAoY2hhbmdlSGFuZGxlciB8fCBjaGFuZ2VzSGFuZGxlcikge1xuICAgICAgICB2YXIgb2JqID0ge1xuICAgICAgICAgIGZyb20sXG4gICAgICAgICAgdG8sXG4gICAgICAgICAgdGV4dDogY2hhbmdlLnRleHQsXG4gICAgICAgICAgcmVtb3ZlZDogY2hhbmdlLnJlbW92ZWQsXG4gICAgICAgICAgb3JpZ2luOiBjaGFuZ2Uub3JpZ2luXG4gICAgICAgIH07XG4gICAgICAgIGlmIChjaGFuZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgc2lnbmFsTGF0ZXIoY20sIFwiY2hhbmdlXCIsIGNtLCBvYmopO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzSGFuZGxlcikge1xuICAgICAgICAgIChjbS5jdXJPcC5jaGFuZ2VPYmpzIHx8IChjbS5jdXJPcC5jaGFuZ2VPYmpzID0gW10pKS5wdXNoKG9iaik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNtLmRpc3BsYXkuc2VsRm9yQ29udGV4dE1lbnUgPSBudWxsO1xuICAgIH1cbiAgICBfX25hbWUobWFrZUNoYW5nZVNpbmdsZURvY0luRWRpdG9yLCBcIm1ha2VDaGFuZ2VTaW5nbGVEb2NJbkVkaXRvclwiKTtcbiAgICBmdW5jdGlvbiByZXBsYWNlUmFuZ2UoZG9jLCBjb2RlLCBmcm9tLCB0bywgb3JpZ2luKSB7XG4gICAgICB2YXIgYXNzaWduO1xuICAgICAgaWYgKCF0bykge1xuICAgICAgICB0byA9IGZyb207XG4gICAgICB9XG4gICAgICBpZiAoY21wKHRvLCBmcm9tKSA8IDApIHtcbiAgICAgICAgYXNzaWduID0gW3RvLCBmcm9tXSwgZnJvbSA9IGFzc2lnblswXSwgdG8gPSBhc3NpZ25bMV07XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGNvZGUgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICBjb2RlID0gZG9jLnNwbGl0TGluZXMoY29kZSk7XG4gICAgICB9XG4gICAgICBtYWtlQ2hhbmdlKGRvYywgeyBmcm9tLCB0bywgdGV4dDogY29kZSwgb3JpZ2luIH0pO1xuICAgIH1cbiAgICBfX25hbWUocmVwbGFjZVJhbmdlLCBcInJlcGxhY2VSYW5nZVwiKTtcbiAgICBmdW5jdGlvbiByZWJhc2VIaXN0U2VsU2luZ2xlKHBvcywgZnJvbSwgdG8sIGRpZmYpIHtcbiAgICAgIGlmICh0byA8IHBvcy5saW5lKSB7XG4gICAgICAgIHBvcy5saW5lICs9IGRpZmY7XG4gICAgICB9IGVsc2UgaWYgKGZyb20gPCBwb3MubGluZSkge1xuICAgICAgICBwb3MubGluZSA9IGZyb207XG4gICAgICAgIHBvcy5jaCA9IDA7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShyZWJhc2VIaXN0U2VsU2luZ2xlLCBcInJlYmFzZUhpc3RTZWxTaW5nbGVcIik7XG4gICAgZnVuY3Rpb24gcmViYXNlSGlzdEFycmF5KGFycmF5LCBmcm9tLCB0bywgZGlmZikge1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGFycmF5Lmxlbmd0aDsgKytpMikge1xuICAgICAgICB2YXIgc3ViID0gYXJyYXlbaTJdLCBvayA9IHRydWU7XG4gICAgICAgIGlmIChzdWIucmFuZ2VzKSB7XG4gICAgICAgICAgaWYgKCFzdWIuY29waWVkKSB7XG4gICAgICAgICAgICBzdWIgPSBhcnJheVtpMl0gPSBzdWIuZGVlcENvcHkoKTtcbiAgICAgICAgICAgIHN1Yi5jb3BpZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN1Yi5yYW5nZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIHJlYmFzZUhpc3RTZWxTaW5nbGUoc3ViLnJhbmdlc1tqXS5hbmNob3IsIGZyb20sIHRvLCBkaWZmKTtcbiAgICAgICAgICAgIHJlYmFzZUhpc3RTZWxTaW5nbGUoc3ViLnJhbmdlc1tqXS5oZWFkLCBmcm9tLCB0bywgZGlmZik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGokMSA9IDA7IGokMSA8IHN1Yi5jaGFuZ2VzLmxlbmd0aDsgKytqJDEpIHtcbiAgICAgICAgICB2YXIgY3VyID0gc3ViLmNoYW5nZXNbaiQxXTtcbiAgICAgICAgICBpZiAodG8gPCBjdXIuZnJvbS5saW5lKSB7XG4gICAgICAgICAgICBjdXIuZnJvbSA9IFBvcyhjdXIuZnJvbS5saW5lICsgZGlmZiwgY3VyLmZyb20uY2gpO1xuICAgICAgICAgICAgY3VyLnRvID0gUG9zKGN1ci50by5saW5lICsgZGlmZiwgY3VyLnRvLmNoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZyb20gPD0gY3VyLnRvLmxpbmUpIHtcbiAgICAgICAgICAgIG9rID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgIGFycmF5LnNwbGljZSgwLCBpMiArIDEpO1xuICAgICAgICAgIGkyID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUocmViYXNlSGlzdEFycmF5LCBcInJlYmFzZUhpc3RBcnJheVwiKTtcbiAgICBmdW5jdGlvbiByZWJhc2VIaXN0KGhpc3QsIGNoYW5nZSkge1xuICAgICAgdmFyIGZyb20gPSBjaGFuZ2UuZnJvbS5saW5lLCB0byA9IGNoYW5nZS50by5saW5lLCBkaWZmID0gY2hhbmdlLnRleHQubGVuZ3RoIC0gKHRvIC0gZnJvbSkgLSAxO1xuICAgICAgcmViYXNlSGlzdEFycmF5KGhpc3QuZG9uZSwgZnJvbSwgdG8sIGRpZmYpO1xuICAgICAgcmViYXNlSGlzdEFycmF5KGhpc3QudW5kb25lLCBmcm9tLCB0bywgZGlmZik7XG4gICAgfVxuICAgIF9fbmFtZShyZWJhc2VIaXN0LCBcInJlYmFzZUhpc3RcIik7XG4gICAgZnVuY3Rpb24gY2hhbmdlTGluZShkb2MsIGhhbmRsZSwgY2hhbmdlVHlwZSwgb3ApIHtcbiAgICAgIHZhciBubyA9IGhhbmRsZSwgbGluZSA9IGhhbmRsZTtcbiAgICAgIGlmICh0eXBlb2YgaGFuZGxlID09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgbGluZSA9IGdldExpbmUoZG9jLCBjbGlwTGluZShkb2MsIGhhbmRsZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm8gPSBsaW5lTm8oaGFuZGxlKTtcbiAgICAgIH1cbiAgICAgIGlmIChubyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKG9wKGxpbmUsIG5vKSAmJiBkb2MuY20pIHtcbiAgICAgICAgcmVnTGluZUNoYW5nZShkb2MuY20sIG5vLCBjaGFuZ2VUeXBlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5lO1xuICAgIH1cbiAgICBfX25hbWUoY2hhbmdlTGluZSwgXCJjaGFuZ2VMaW5lXCIpO1xuICAgIGZ1bmN0aW9uIExlYWZDaHVuayhsaW5lcykge1xuICAgICAgdGhpcy5saW5lcyA9IGxpbmVzO1xuICAgICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICAgICAgdmFyIGhlaWdodCA9IDA7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgbGluZXMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIGxpbmVzW2kyXS5wYXJlbnQgPSB0aGlzO1xuICAgICAgICBoZWlnaHQgKz0gbGluZXNbaTJdLmhlaWdodDtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cbiAgICBfX25hbWUoTGVhZkNodW5rLCBcIkxlYWZDaHVua1wiKTtcbiAgICBMZWFmQ2h1bmsucHJvdG90eXBlID0ge1xuICAgICAgY2h1bmtTaXplOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGluZXMubGVuZ3RoO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUlubmVyOiBmdW5jdGlvbihhdCwgbikge1xuICAgICAgICBmb3IgKHZhciBpMiA9IGF0LCBlID0gYXQgKyBuOyBpMiA8IGU7ICsraTIpIHtcbiAgICAgICAgICB2YXIgbGluZSA9IHRoaXMubGluZXNbaTJdO1xuICAgICAgICAgIHRoaXMuaGVpZ2h0IC09IGxpbmUuaGVpZ2h0O1xuICAgICAgICAgIGNsZWFuVXBMaW5lKGxpbmUpO1xuICAgICAgICAgIHNpZ25hbExhdGVyKGxpbmUsIFwiZGVsZXRlXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGluZXMuc3BsaWNlKGF0LCBuKTtcbiAgICAgIH0sXG4gICAgICBjb2xsYXBzZTogZnVuY3Rpb24obGluZXMpIHtcbiAgICAgICAgbGluZXMucHVzaC5hcHBseShsaW5lcywgdGhpcy5saW5lcyk7XG4gICAgICB9LFxuICAgICAgaW5zZXJ0SW5uZXI6IGZ1bmN0aW9uKGF0LCBsaW5lcywgaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuaGVpZ2h0ICs9IGhlaWdodDtcbiAgICAgICAgdGhpcy5saW5lcyA9IHRoaXMubGluZXMuc2xpY2UoMCwgYXQpLmNvbmNhdChsaW5lcykuY29uY2F0KHRoaXMubGluZXMuc2xpY2UoYXQpKTtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGxpbmVzLmxlbmd0aDsgKytpMikge1xuICAgICAgICAgIGxpbmVzW2kyXS5wYXJlbnQgPSB0aGlzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaXRlck46IGZ1bmN0aW9uKGF0LCBuLCBvcCkge1xuICAgICAgICBmb3IgKHZhciBlID0gYXQgKyBuOyBhdCA8IGU7ICsrYXQpIHtcbiAgICAgICAgICBpZiAob3AodGhpcy5saW5lc1thdF0pKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIEJyYW5jaENodW5rKGNoaWxkcmVuKSB7XG4gICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICB2YXIgc2l6ZSA9IDAsIGhlaWdodCA9IDA7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIHZhciBjaCA9IGNoaWxkcmVuW2kyXTtcbiAgICAgICAgc2l6ZSArPSBjaC5jaHVua1NpemUoKTtcbiAgICAgICAgaGVpZ2h0ICs9IGNoLmhlaWdodDtcbiAgICAgICAgY2gucGFyZW50ID0gdGhpcztcbiAgICAgIH1cbiAgICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgIHRoaXMucGFyZW50ID0gbnVsbDtcbiAgICB9XG4gICAgX19uYW1lKEJyYW5jaENodW5rLCBcIkJyYW5jaENodW5rXCIpO1xuICAgIEJyYW5jaENodW5rLnByb3RvdHlwZSA9IHtcbiAgICAgIGNodW5rU2l6ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpemU7XG4gICAgICB9LFxuICAgICAgcmVtb3ZlSW5uZXI6IGZ1bmN0aW9uKGF0LCBuKSB7XG4gICAgICAgIHRoaXMuc2l6ZSAtPSBuO1xuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVuW2kyXSwgc3ogPSBjaGlsZC5jaHVua1NpemUoKTtcbiAgICAgICAgICBpZiAoYXQgPCBzeikge1xuICAgICAgICAgICAgdmFyIHJtID0gTWF0aC5taW4obiwgc3ogLSBhdCksIG9sZEhlaWdodCA9IGNoaWxkLmhlaWdodDtcbiAgICAgICAgICAgIGNoaWxkLnJlbW92ZUlubmVyKGF0LCBybSk7XG4gICAgICAgICAgICB0aGlzLmhlaWdodCAtPSBvbGRIZWlnaHQgLSBjaGlsZC5oZWlnaHQ7XG4gICAgICAgICAgICBpZiAoc3ogPT0gcm0pIHtcbiAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaTItLSwgMSk7XG4gICAgICAgICAgICAgIGNoaWxkLnBhcmVudCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKG4gLT0gcm0pID09IDApIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhdCA9IDA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF0IC09IHN6O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zaXplIC0gbiA8IDI1ICYmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDEgfHwgISh0aGlzLmNoaWxkcmVuWzBdIGluc3RhbmNlb2YgTGVhZkNodW5rKSkpIHtcbiAgICAgICAgICB2YXIgbGluZXMgPSBbXTtcbiAgICAgICAgICB0aGlzLmNvbGxhcHNlKGxpbmVzKTtcbiAgICAgICAgICB0aGlzLmNoaWxkcmVuID0gW25ldyBMZWFmQ2h1bmsobGluZXMpXTtcbiAgICAgICAgICB0aGlzLmNoaWxkcmVuWzBdLnBhcmVudCA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjb2xsYXBzZTogZnVuY3Rpb24obGluZXMpIHtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgICAgdGhpcy5jaGlsZHJlbltpMl0uY29sbGFwc2UobGluZXMpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaW5zZXJ0SW5uZXI6IGZ1bmN0aW9uKGF0LCBsaW5lcywgaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuc2l6ZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuaGVpZ2h0ICs9IGhlaWdodDtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpMl0sIHN6ID0gY2hpbGQuY2h1bmtTaXplKCk7XG4gICAgICAgICAgaWYgKGF0IDw9IHN6KSB7XG4gICAgICAgICAgICBjaGlsZC5pbnNlcnRJbm5lcihhdCwgbGluZXMsIGhlaWdodCk7XG4gICAgICAgICAgICBpZiAoY2hpbGQubGluZXMgJiYgY2hpbGQubGluZXMubGVuZ3RoID4gNTApIHtcbiAgICAgICAgICAgICAgdmFyIHJlbWFpbmluZyA9IGNoaWxkLmxpbmVzLmxlbmd0aCAlIDI1ICsgMjU7XG4gICAgICAgICAgICAgIGZvciAodmFyIHBvcyA9IHJlbWFpbmluZzsgcG9zIDwgY2hpbGQubGluZXMubGVuZ3RoOyApIHtcbiAgICAgICAgICAgICAgICB2YXIgbGVhZiA9IG5ldyBMZWFmQ2h1bmsoY2hpbGQubGluZXMuc2xpY2UocG9zLCBwb3MgKz0gMjUpKTtcbiAgICAgICAgICAgICAgICBjaGlsZC5oZWlnaHQgLT0gbGVhZi5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoKytpMiwgMCwgbGVhZik7XG4gICAgICAgICAgICAgICAgbGVhZi5wYXJlbnQgPSB0aGlzO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNoaWxkLmxpbmVzID0gY2hpbGQubGluZXMuc2xpY2UoMCwgcmVtYWluaW5nKTtcbiAgICAgICAgICAgICAgdGhpcy5tYXliZVNwaWxsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgYXQgLT0gc3o7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBtYXliZVNwaWxsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIDw9IDEwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtZSA9IHRoaXM7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICB2YXIgc3BpbGxlZCA9IG1lLmNoaWxkcmVuLnNwbGljZShtZS5jaGlsZHJlbi5sZW5ndGggLSA1LCA1KTtcbiAgICAgICAgICB2YXIgc2libGluZyA9IG5ldyBCcmFuY2hDaHVuayhzcGlsbGVkKTtcbiAgICAgICAgICBpZiAoIW1lLnBhcmVudCkge1xuICAgICAgICAgICAgdmFyIGNvcHkgPSBuZXcgQnJhbmNoQ2h1bmsobWUuY2hpbGRyZW4pO1xuICAgICAgICAgICAgY29weS5wYXJlbnQgPSBtZTtcbiAgICAgICAgICAgIG1lLmNoaWxkcmVuID0gW2NvcHksIHNpYmxpbmddO1xuICAgICAgICAgICAgbWUgPSBjb3B5O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZS5zaXplIC09IHNpYmxpbmcuc2l6ZTtcbiAgICAgICAgICAgIG1lLmhlaWdodCAtPSBzaWJsaW5nLmhlaWdodDtcbiAgICAgICAgICAgIHZhciBteUluZGV4ID0gaW5kZXhPZihtZS5wYXJlbnQuY2hpbGRyZW4sIG1lKTtcbiAgICAgICAgICAgIG1lLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UobXlJbmRleCArIDEsIDAsIHNpYmxpbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzaWJsaW5nLnBhcmVudCA9IG1lLnBhcmVudDtcbiAgICAgICAgfSB3aGlsZSAobWUuY2hpbGRyZW4ubGVuZ3RoID4gMTApO1xuICAgICAgICBtZS5wYXJlbnQubWF5YmVTcGlsbCgpO1xuICAgICAgfSxcbiAgICAgIGl0ZXJOOiBmdW5jdGlvbihhdCwgbiwgb3ApIHtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpMl0sIHN6ID0gY2hpbGQuY2h1bmtTaXplKCk7XG4gICAgICAgICAgaWYgKGF0IDwgc3opIHtcbiAgICAgICAgICAgIHZhciB1c2VkID0gTWF0aC5taW4obiwgc3ogLSBhdCk7XG4gICAgICAgICAgICBpZiAoY2hpbGQuaXRlck4oYXQsIHVzZWQsIG9wKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgobiAtPSB1c2VkKSA9PSAwKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXQgPSAwO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhdCAtPSBzejtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHZhciBMaW5lV2lkZ2V0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihkb2MsIG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIGZvciAodmFyIG9wdCBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkob3B0KSkge1xuICAgICAgICAgICAgdGhpc1tvcHRdID0gb3B0aW9uc1tvcHRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5kb2MgPSBkb2M7XG4gICAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIH0sIFwiTGluZVdpZGdldFwiKTtcbiAgICBMaW5lV2lkZ2V0LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNtID0gdGhpcy5kb2MuY20sIHdzID0gdGhpcy5saW5lLndpZGdldHMsIGxpbmUgPSB0aGlzLmxpbmUsIG5vID0gbGluZU5vKGxpbmUpO1xuICAgICAgaWYgKG5vID09IG51bGwgfHwgIXdzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCB3cy5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgaWYgKHdzW2kyXSA9PSB0aGlzKSB7XG4gICAgICAgICAgd3Muc3BsaWNlKGkyLS0sIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXdzLmxlbmd0aCkge1xuICAgICAgICBsaW5lLndpZGdldHMgPSBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGhlaWdodCA9IHdpZGdldEhlaWdodCh0aGlzKTtcbiAgICAgIHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgTWF0aC5tYXgoMCwgbGluZS5oZWlnaHQgLSBoZWlnaHQpKTtcbiAgICAgIGlmIChjbSkge1xuICAgICAgICBydW5Jbk9wKGNtLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICBhZGp1c3RTY3JvbGxXaGVuQWJvdmVWaXNpYmxlKGNtLCBsaW5lLCAtaGVpZ2h0KTtcbiAgICAgICAgICByZWdMaW5lQ2hhbmdlKGNtLCBubywgXCJ3aWRnZXRcIik7XG4gICAgICAgIH0pO1xuICAgICAgICBzaWduYWxMYXRlcihjbSwgXCJsaW5lV2lkZ2V0Q2xlYXJlZFwiLCBjbSwgdGhpcywgbm8pO1xuICAgICAgfVxuICAgIH07XG4gICAgTGluZVdpZGdldC5wcm90b3R5cGUuY2hhbmdlZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgICAgIHZhciBvbGRIID0gdGhpcy5oZWlnaHQsIGNtID0gdGhpcy5kb2MuY20sIGxpbmUgPSB0aGlzLmxpbmU7XG4gICAgICB0aGlzLmhlaWdodCA9IG51bGw7XG4gICAgICB2YXIgZGlmZiA9IHdpZGdldEhlaWdodCh0aGlzKSAtIG9sZEg7XG4gICAgICBpZiAoIWRpZmYpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFsaW5lSXNIaWRkZW4odGhpcy5kb2MsIGxpbmUpKSB7XG4gICAgICAgIHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgbGluZS5oZWlnaHQgKyBkaWZmKTtcbiAgICAgIH1cbiAgICAgIGlmIChjbSkge1xuICAgICAgICBydW5Jbk9wKGNtLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICBjbS5jdXJPcC5mb3JjZVVwZGF0ZSA9IHRydWU7XG4gICAgICAgICAgYWRqdXN0U2Nyb2xsV2hlbkFib3ZlVmlzaWJsZShjbSwgbGluZSwgZGlmZik7XG4gICAgICAgICAgc2lnbmFsTGF0ZXIoY20sIFwibGluZVdpZGdldENoYW5nZWRcIiwgY20sIHRoaXMkMSQxLCBsaW5lTm8obGluZSkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV2ZW50TWl4aW4oTGluZVdpZGdldCk7XG4gICAgZnVuY3Rpb24gYWRqdXN0U2Nyb2xsV2hlbkFib3ZlVmlzaWJsZShjbSwgbGluZSwgZGlmZikge1xuICAgICAgaWYgKGhlaWdodEF0TGluZShsaW5lKSA8IChjbS5jdXJPcCAmJiBjbS5jdXJPcC5zY3JvbGxUb3AgfHwgY20uZG9jLnNjcm9sbFRvcCkpIHtcbiAgICAgICAgYWRkVG9TY3JvbGxUb3AoY20sIGRpZmYpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoYWRqdXN0U2Nyb2xsV2hlbkFib3ZlVmlzaWJsZSwgXCJhZGp1c3RTY3JvbGxXaGVuQWJvdmVWaXNpYmxlXCIpO1xuICAgIGZ1bmN0aW9uIGFkZExpbmVXaWRnZXQoZG9jLCBoYW5kbGUsIG5vZGUsIG9wdGlvbnMpIHtcbiAgICAgIHZhciB3aWRnZXQgPSBuZXcgTGluZVdpZGdldChkb2MsIG5vZGUsIG9wdGlvbnMpO1xuICAgICAgdmFyIGNtID0gZG9jLmNtO1xuICAgICAgaWYgKGNtICYmIHdpZGdldC5ub0hTY3JvbGwpIHtcbiAgICAgICAgY20uZGlzcGxheS5hbGlnbldpZGdldHMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgY2hhbmdlTGluZShkb2MsIGhhbmRsZSwgXCJ3aWRnZXRcIiwgZnVuY3Rpb24obGluZSkge1xuICAgICAgICB2YXIgd2lkZ2V0cyA9IGxpbmUud2lkZ2V0cyB8fCAobGluZS53aWRnZXRzID0gW10pO1xuICAgICAgICBpZiAod2lkZ2V0Lmluc2VydEF0ID09IG51bGwpIHtcbiAgICAgICAgICB3aWRnZXRzLnB1c2god2lkZ2V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aWRnZXRzLnNwbGljZShNYXRoLm1pbih3aWRnZXRzLmxlbmd0aCwgTWF0aC5tYXgoMCwgd2lkZ2V0Lmluc2VydEF0KSksIDAsIHdpZGdldCk7XG4gICAgICAgIH1cbiAgICAgICAgd2lkZ2V0LmxpbmUgPSBsaW5lO1xuICAgICAgICBpZiAoY20gJiYgIWxpbmVJc0hpZGRlbihkb2MsIGxpbmUpKSB7XG4gICAgICAgICAgdmFyIGFib3ZlVmlzaWJsZSA9IGhlaWdodEF0TGluZShsaW5lKSA8IGRvYy5zY3JvbGxUb3A7XG4gICAgICAgICAgdXBkYXRlTGluZUhlaWdodChsaW5lLCBsaW5lLmhlaWdodCArIHdpZGdldEhlaWdodCh3aWRnZXQpKTtcbiAgICAgICAgICBpZiAoYWJvdmVWaXNpYmxlKSB7XG4gICAgICAgICAgICBhZGRUb1Njcm9sbFRvcChjbSwgd2lkZ2V0LmhlaWdodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNtLmN1ck9wLmZvcmNlVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGNtKSB7XG4gICAgICAgIHNpZ25hbExhdGVyKGNtLCBcImxpbmVXaWRnZXRBZGRlZFwiLCBjbSwgd2lkZ2V0LCB0eXBlb2YgaGFuZGxlID09IFwibnVtYmVyXCIgPyBoYW5kbGUgOiBsaW5lTm8oaGFuZGxlKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd2lkZ2V0O1xuICAgIH1cbiAgICBfX25hbWUoYWRkTGluZVdpZGdldCwgXCJhZGRMaW5lV2lkZ2V0XCIpO1xuICAgIHZhciBuZXh0TWFya2VySWQgPSAwO1xuICAgIHZhciBUZXh0TWFya2VyID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihkb2MsIHR5cGUpIHtcbiAgICAgIHRoaXMubGluZXMgPSBbXTtcbiAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICB0aGlzLmRvYyA9IGRvYztcbiAgICAgIHRoaXMuaWQgPSArK25leHRNYXJrZXJJZDtcbiAgICB9LCBcIlRleHRNYXJrZXJcIik7XG4gICAgVGV4dE1hcmtlci5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLmV4cGxpY2l0bHlDbGVhcmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBjbSA9IHRoaXMuZG9jLmNtLCB3aXRoT3AgPSBjbSAmJiAhY20uY3VyT3A7XG4gICAgICBpZiAod2l0aE9wKSB7XG4gICAgICAgIHN0YXJ0T3BlcmF0aW9uKGNtKTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNIYW5kbGVyKHRoaXMsIFwiY2xlYXJcIikpIHtcbiAgICAgICAgdmFyIGZvdW5kID0gdGhpcy5maW5kKCk7XG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgIHNpZ25hbExhdGVyKHRoaXMsIFwiY2xlYXJcIiwgZm91bmQuZnJvbSwgZm91bmQudG8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgbWluID0gbnVsbCwgbWF4ID0gbnVsbDtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCB0aGlzLmxpbmVzLmxlbmd0aDsgKytpMikge1xuICAgICAgICB2YXIgbGluZSA9IHRoaXMubGluZXNbaTJdO1xuICAgICAgICB2YXIgc3BhbiA9IGdldE1hcmtlZFNwYW5Gb3IobGluZS5tYXJrZWRTcGFucywgdGhpcyk7XG4gICAgICAgIGlmIChjbSAmJiAhdGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICByZWdMaW5lQ2hhbmdlKGNtLCBsaW5lTm8obGluZSksIFwidGV4dFwiKTtcbiAgICAgICAgfSBlbHNlIGlmIChjbSkge1xuICAgICAgICAgIGlmIChzcGFuLnRvICE9IG51bGwpIHtcbiAgICAgICAgICAgIG1heCA9IGxpbmVObyhsaW5lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNwYW4uZnJvbSAhPSBudWxsKSB7XG4gICAgICAgICAgICBtaW4gPSBsaW5lTm8obGluZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxpbmUubWFya2VkU3BhbnMgPSByZW1vdmVNYXJrZWRTcGFuKGxpbmUubWFya2VkU3BhbnMsIHNwYW4pO1xuICAgICAgICBpZiAoc3Bhbi5mcm9tID09IG51bGwgJiYgdGhpcy5jb2xsYXBzZWQgJiYgIWxpbmVJc0hpZGRlbih0aGlzLmRvYywgbGluZSkgJiYgY20pIHtcbiAgICAgICAgICB1cGRhdGVMaW5lSGVpZ2h0KGxpbmUsIHRleHRIZWlnaHQoY20uZGlzcGxheSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY20gJiYgdGhpcy5jb2xsYXBzZWQgJiYgIWNtLm9wdGlvbnMubGluZVdyYXBwaW5nKSB7XG4gICAgICAgIGZvciAodmFyIGkkMTIgPSAwOyBpJDEyIDwgdGhpcy5saW5lcy5sZW5ndGg7ICsraSQxMikge1xuICAgICAgICAgIHZhciB2aXN1YWwgPSB2aXN1YWxMaW5lKHRoaXMubGluZXNbaSQxMl0pLCBsZW4gPSBsaW5lTGVuZ3RoKHZpc3VhbCk7XG4gICAgICAgICAgaWYgKGxlbiA+IGNtLmRpc3BsYXkubWF4TGluZUxlbmd0aCkge1xuICAgICAgICAgICAgY20uZGlzcGxheS5tYXhMaW5lID0gdmlzdWFsO1xuICAgICAgICAgICAgY20uZGlzcGxheS5tYXhMaW5lTGVuZ3RoID0gbGVuO1xuICAgICAgICAgICAgY20uZGlzcGxheS5tYXhMaW5lQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWluICE9IG51bGwgJiYgY20gJiYgdGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgcmVnQ2hhbmdlKGNtLCBtaW4sIG1heCArIDEpO1xuICAgICAgfVxuICAgICAgdGhpcy5saW5lcy5sZW5ndGggPSAwO1xuICAgICAgdGhpcy5leHBsaWNpdGx5Q2xlYXJlZCA9IHRydWU7XG4gICAgICBpZiAodGhpcy5hdG9taWMgJiYgdGhpcy5kb2MuY2FudEVkaXQpIHtcbiAgICAgICAgdGhpcy5kb2MuY2FudEVkaXQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGNtKSB7XG4gICAgICAgICAgcmVDaGVja1NlbGVjdGlvbihjbS5kb2MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY20pIHtcbiAgICAgICAgc2lnbmFsTGF0ZXIoY20sIFwibWFya2VyQ2xlYXJlZFwiLCBjbSwgdGhpcywgbWluLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKHdpdGhPcCkge1xuICAgICAgICBlbmRPcGVyYXRpb24oY20pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICAgIHRoaXMucGFyZW50LmNsZWFyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBUZXh0TWFya2VyLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24oc2lkZSwgbGluZU9iaikge1xuICAgICAgaWYgKHNpZGUgPT0gbnVsbCAmJiB0aGlzLnR5cGUgPT0gXCJib29rbWFya1wiKSB7XG4gICAgICAgIHNpZGUgPSAxO1xuICAgICAgfVxuICAgICAgdmFyIGZyb20sIHRvO1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHRoaXMubGluZXMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIHZhciBsaW5lID0gdGhpcy5saW5lc1tpMl07XG4gICAgICAgIHZhciBzcGFuID0gZ2V0TWFya2VkU3BhbkZvcihsaW5lLm1hcmtlZFNwYW5zLCB0aGlzKTtcbiAgICAgICAgaWYgKHNwYW4uZnJvbSAhPSBudWxsKSB7XG4gICAgICAgICAgZnJvbSA9IFBvcyhsaW5lT2JqID8gbGluZSA6IGxpbmVObyhsaW5lKSwgc3Bhbi5mcm9tKTtcbiAgICAgICAgICBpZiAoc2lkZSA9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZyb207XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzcGFuLnRvICE9IG51bGwpIHtcbiAgICAgICAgICB0byA9IFBvcyhsaW5lT2JqID8gbGluZSA6IGxpbmVObyhsaW5lKSwgc3Bhbi50byk7XG4gICAgICAgICAgaWYgKHNpZGUgPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZyb20gJiYgeyBmcm9tLCB0byB9O1xuICAgIH07XG4gICAgVGV4dE1hcmtlci5wcm90b3R5cGUuY2hhbmdlZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgICAgIHZhciBwb3MgPSB0aGlzLmZpbmQoLTEsIHRydWUpLCB3aWRnZXQgPSB0aGlzLCBjbSA9IHRoaXMuZG9jLmNtO1xuICAgICAgaWYgKCFwb3MgfHwgIWNtKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJ1bkluT3AoY20sIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbGluZSA9IHBvcy5saW5lLCBsaW5lTiA9IGxpbmVObyhwb3MubGluZSk7XG4gICAgICAgIHZhciB2aWV3ID0gZmluZFZpZXdGb3JMaW5lKGNtLCBsaW5lTik7XG4gICAgICAgIGlmICh2aWV3KSB7XG4gICAgICAgICAgY2xlYXJMaW5lTWVhc3VyZW1lbnRDYWNoZUZvcih2aWV3KTtcbiAgICAgICAgICBjbS5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkID0gY20uY3VyT3AuZm9yY2VVcGRhdGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNtLmN1ck9wLnVwZGF0ZU1heExpbmUgPSB0cnVlO1xuICAgICAgICBpZiAoIWxpbmVJc0hpZGRlbih3aWRnZXQuZG9jLCBsaW5lKSAmJiB3aWRnZXQuaGVpZ2h0ICE9IG51bGwpIHtcbiAgICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gd2lkZ2V0LmhlaWdodDtcbiAgICAgICAgICB3aWRnZXQuaGVpZ2h0ID0gbnVsbDtcbiAgICAgICAgICB2YXIgZEhlaWdodCA9IHdpZGdldEhlaWdodCh3aWRnZXQpIC0gb2xkSGVpZ2h0O1xuICAgICAgICAgIGlmIChkSGVpZ2h0KSB7XG4gICAgICAgICAgICB1cGRhdGVMaW5lSGVpZ2h0KGxpbmUsIGxpbmUuaGVpZ2h0ICsgZEhlaWdodCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNpZ25hbExhdGVyKGNtLCBcIm1hcmtlckNoYW5nZWRcIiwgY20sIHRoaXMkMSQxKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgVGV4dE1hcmtlci5wcm90b3R5cGUuYXR0YWNoTGluZSA9IGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIGlmICghdGhpcy5saW5lcy5sZW5ndGggJiYgdGhpcy5kb2MuY20pIHtcbiAgICAgICAgdmFyIG9wID0gdGhpcy5kb2MuY20uY3VyT3A7XG4gICAgICAgIGlmICghb3AubWF5YmVIaWRkZW5NYXJrZXJzIHx8IGluZGV4T2Yob3AubWF5YmVIaWRkZW5NYXJrZXJzLCB0aGlzKSA9PSAtMSkge1xuICAgICAgICAgIChvcC5tYXliZVVuaGlkZGVuTWFya2VycyB8fCAob3AubWF5YmVVbmhpZGRlbk1hcmtlcnMgPSBbXSkpLnB1c2godGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMubGluZXMucHVzaChsaW5lKTtcbiAgICB9O1xuICAgIFRleHRNYXJrZXIucHJvdG90eXBlLmRldGFjaExpbmUgPSBmdW5jdGlvbihsaW5lKSB7XG4gICAgICB0aGlzLmxpbmVzLnNwbGljZShpbmRleE9mKHRoaXMubGluZXMsIGxpbmUpLCAxKTtcbiAgICAgIGlmICghdGhpcy5saW5lcy5sZW5ndGggJiYgdGhpcy5kb2MuY20pIHtcbiAgICAgICAgdmFyIG9wID0gdGhpcy5kb2MuY20uY3VyT3A7XG4gICAgICAgIChvcC5tYXliZUhpZGRlbk1hcmtlcnMgfHwgKG9wLm1heWJlSGlkZGVuTWFya2VycyA9IFtdKSkucHVzaCh0aGlzKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGV2ZW50TWl4aW4oVGV4dE1hcmtlcik7XG4gICAgZnVuY3Rpb24gbWFya1RleHQoZG9jLCBmcm9tLCB0bywgb3B0aW9ucywgdHlwZSkge1xuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaGFyZWQpIHtcbiAgICAgICAgcmV0dXJuIG1hcmtUZXh0U2hhcmVkKGRvYywgZnJvbSwgdG8sIG9wdGlvbnMsIHR5cGUpO1xuICAgICAgfVxuICAgICAgaWYgKGRvYy5jbSAmJiAhZG9jLmNtLmN1ck9wKSB7XG4gICAgICAgIHJldHVybiBvcGVyYXRpb24oZG9jLmNtLCBtYXJrVGV4dCkoZG9jLCBmcm9tLCB0bywgb3B0aW9ucywgdHlwZSk7XG4gICAgICB9XG4gICAgICB2YXIgbWFya2VyID0gbmV3IFRleHRNYXJrZXIoZG9jLCB0eXBlKSwgZGlmZiA9IGNtcChmcm9tLCB0byk7XG4gICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICBjb3B5T2JqKG9wdGlvbnMsIG1hcmtlciwgZmFsc2UpO1xuICAgICAgfVxuICAgICAgaWYgKGRpZmYgPiAwIHx8IGRpZmYgPT0gMCAmJiBtYXJrZXIuY2xlYXJXaGVuRW1wdHkgIT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBtYXJrZXI7XG4gICAgICB9XG4gICAgICBpZiAobWFya2VyLnJlcGxhY2VkV2l0aCkge1xuICAgICAgICBtYXJrZXIuY29sbGFwc2VkID0gdHJ1ZTtcbiAgICAgICAgbWFya2VyLndpZGdldE5vZGUgPSBlbHRQKFwic3BhblwiLCBbbWFya2VyLnJlcGxhY2VkV2l0aF0sIFwiQ29kZU1pcnJvci13aWRnZXRcIik7XG4gICAgICAgIGlmICghb3B0aW9ucy5oYW5kbGVNb3VzZUV2ZW50cykge1xuICAgICAgICAgIG1hcmtlci53aWRnZXROb2RlLnNldEF0dHJpYnV0ZShcImNtLWlnbm9yZS1ldmVudHNcIiwgXCJ0cnVlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmluc2VydExlZnQpIHtcbiAgICAgICAgICBtYXJrZXIud2lkZ2V0Tm9kZS5pbnNlcnRMZWZ0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG1hcmtlci5jb2xsYXBzZWQpIHtcbiAgICAgICAgaWYgKGNvbmZsaWN0aW5nQ29sbGFwc2VkUmFuZ2UoZG9jLCBmcm9tLmxpbmUsIGZyb20sIHRvLCBtYXJrZXIpIHx8IGZyb20ubGluZSAhPSB0by5saW5lICYmIGNvbmZsaWN0aW5nQ29sbGFwc2VkUmFuZ2UoZG9jLCB0by5saW5lLCBmcm9tLCB0bywgbWFya2VyKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkluc2VydGluZyBjb2xsYXBzZWQgbWFya2VyIHBhcnRpYWxseSBvdmVybGFwcGluZyBhbiBleGlzdGluZyBvbmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgc2VlQ29sbGFwc2VkU3BhbnMoKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXJrZXIuYWRkVG9IaXN0b3J5KSB7XG4gICAgICAgIGFkZENoYW5nZVRvSGlzdG9yeShkb2MsIHsgZnJvbSwgdG8sIG9yaWdpbjogXCJtYXJrVGV4dFwiIH0sIGRvYy5zZWwsIE5hTik7XG4gICAgICB9XG4gICAgICB2YXIgY3VyTGluZSA9IGZyb20ubGluZSwgY20gPSBkb2MuY20sIHVwZGF0ZU1heExpbmU7XG4gICAgICBkb2MuaXRlcihjdXJMaW5lLCB0by5saW5lICsgMSwgZnVuY3Rpb24obGluZSkge1xuICAgICAgICBpZiAoY20gJiYgbWFya2VyLmNvbGxhcHNlZCAmJiAhY20ub3B0aW9ucy5saW5lV3JhcHBpbmcgJiYgdmlzdWFsTGluZShsaW5lKSA9PSBjbS5kaXNwbGF5Lm1heExpbmUpIHtcbiAgICAgICAgICB1cGRhdGVNYXhMaW5lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFya2VyLmNvbGxhcHNlZCAmJiBjdXJMaW5lICE9IGZyb20ubGluZSkge1xuICAgICAgICAgIHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgYWRkTWFya2VkU3BhbihsaW5lLCBuZXcgTWFya2VkU3BhbihtYXJrZXIsIGN1ckxpbmUgPT0gZnJvbS5saW5lID8gZnJvbS5jaCA6IG51bGwsIGN1ckxpbmUgPT0gdG8ubGluZSA/IHRvLmNoIDogbnVsbCksIGRvYy5jbSAmJiBkb2MuY20uY3VyT3ApO1xuICAgICAgICArK2N1ckxpbmU7XG4gICAgICB9KTtcbiAgICAgIGlmIChtYXJrZXIuY29sbGFwc2VkKSB7XG4gICAgICAgIGRvYy5pdGVyKGZyb20ubGluZSwgdG8ubGluZSArIDEsIGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICBpZiAobGluZUlzSGlkZGVuKGRvYywgbGluZSkpIHtcbiAgICAgICAgICAgIHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXJrZXIuY2xlYXJPbkVudGVyKSB7XG4gICAgICAgIG9uKG1hcmtlciwgXCJiZWZvcmVDdXJzb3JFbnRlclwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gbWFya2VyLmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKG1hcmtlci5yZWFkT25seSkge1xuICAgICAgICBzZWVSZWFkT25seVNwYW5zKCk7XG4gICAgICAgIGlmIChkb2MuaGlzdG9yeS5kb25lLmxlbmd0aCB8fCBkb2MuaGlzdG9yeS51bmRvbmUubGVuZ3RoKSB7XG4gICAgICAgICAgZG9jLmNsZWFySGlzdG9yeSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWFya2VyLmNvbGxhcHNlZCkge1xuICAgICAgICBtYXJrZXIuaWQgPSArK25leHRNYXJrZXJJZDtcbiAgICAgICAgbWFya2VyLmF0b21pYyA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoY20pIHtcbiAgICAgICAgaWYgKHVwZGF0ZU1heExpbmUpIHtcbiAgICAgICAgICBjbS5jdXJPcC51cGRhdGVNYXhMaW5lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFya2VyLmNvbGxhcHNlZCkge1xuICAgICAgICAgIHJlZ0NoYW5nZShjbSwgZnJvbS5saW5lLCB0by5saW5lICsgMSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyLmNsYXNzTmFtZSB8fCBtYXJrZXIuc3RhcnRTdHlsZSB8fCBtYXJrZXIuZW5kU3R5bGUgfHwgbWFya2VyLmNzcyB8fCBtYXJrZXIuYXR0cmlidXRlcyB8fCBtYXJrZXIudGl0bGUpIHtcbiAgICAgICAgICBmb3IgKHZhciBpMiA9IGZyb20ubGluZTsgaTIgPD0gdG8ubGluZTsgaTIrKykge1xuICAgICAgICAgICAgcmVnTGluZUNoYW5nZShjbSwgaTIsIFwidGV4dFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hcmtlci5hdG9taWMpIHtcbiAgICAgICAgICByZUNoZWNrU2VsZWN0aW9uKGNtLmRvYyk7XG4gICAgICAgIH1cbiAgICAgICAgc2lnbmFsTGF0ZXIoY20sIFwibWFya2VyQWRkZWRcIiwgY20sIG1hcmtlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWFya2VyO1xuICAgIH1cbiAgICBfX25hbWUobWFya1RleHQsIFwibWFya1RleHRcIik7XG4gICAgdmFyIFNoYXJlZFRleHRNYXJrZXIgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKG1hcmtlcnMsIHByaW1hcnkpIHtcbiAgICAgIHRoaXMubWFya2VycyA9IG1hcmtlcnM7XG4gICAgICB0aGlzLnByaW1hcnkgPSBwcmltYXJ5O1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IG1hcmtlcnMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIG1hcmtlcnNbaTJdLnBhcmVudCA9IHRoaXM7XG4gICAgICB9XG4gICAgfSwgXCJTaGFyZWRUZXh0TWFya2VyXCIpO1xuICAgIFNoYXJlZFRleHRNYXJrZXIucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5leHBsaWNpdGx5Q2xlYXJlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmV4cGxpY2l0bHlDbGVhcmVkID0gdHJ1ZTtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCB0aGlzLm1hcmtlcnMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIHRoaXMubWFya2Vyc1tpMl0uY2xlYXIoKTtcbiAgICAgIH1cbiAgICAgIHNpZ25hbExhdGVyKHRoaXMsIFwiY2xlYXJcIik7XG4gICAgfTtcbiAgICBTaGFyZWRUZXh0TWFya2VyLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24oc2lkZSwgbGluZU9iaikge1xuICAgICAgcmV0dXJuIHRoaXMucHJpbWFyeS5maW5kKHNpZGUsIGxpbmVPYmopO1xuICAgIH07XG4gICAgZXZlbnRNaXhpbihTaGFyZWRUZXh0TWFya2VyKTtcbiAgICBmdW5jdGlvbiBtYXJrVGV4dFNoYXJlZChkb2MsIGZyb20sIHRvLCBvcHRpb25zLCB0eXBlKSB7XG4gICAgICBvcHRpb25zID0gY29weU9iaihvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuc2hhcmVkID0gZmFsc2U7XG4gICAgICB2YXIgbWFya2VycyA9IFttYXJrVGV4dChkb2MsIGZyb20sIHRvLCBvcHRpb25zLCB0eXBlKV0sIHByaW1hcnkgPSBtYXJrZXJzWzBdO1xuICAgICAgdmFyIHdpZGdldCA9IG9wdGlvbnMud2lkZ2V0Tm9kZTtcbiAgICAgIGxpbmtlZERvY3MoZG9jLCBmdW5jdGlvbihkb2MyKSB7XG4gICAgICAgIGlmICh3aWRnZXQpIHtcbiAgICAgICAgICBvcHRpb25zLndpZGdldE5vZGUgPSB3aWRnZXQuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIG1hcmtlcnMucHVzaChtYXJrVGV4dChkb2MyLCBjbGlwUG9zKGRvYzIsIGZyb20pLCBjbGlwUG9zKGRvYzIsIHRvKSwgb3B0aW9ucywgdHlwZSkpO1xuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgZG9jMi5saW5rZWQubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgICAgaWYgKGRvYzIubGlua2VkW2kyXS5pc1BhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwcmltYXJ5ID0gbHN0KG1hcmtlcnMpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFNoYXJlZFRleHRNYXJrZXIobWFya2VycywgcHJpbWFyeSk7XG4gICAgfVxuICAgIF9fbmFtZShtYXJrVGV4dFNoYXJlZCwgXCJtYXJrVGV4dFNoYXJlZFwiKTtcbiAgICBmdW5jdGlvbiBmaW5kU2hhcmVkTWFya2Vycyhkb2MpIHtcbiAgICAgIHJldHVybiBkb2MuZmluZE1hcmtzKFBvcyhkb2MuZmlyc3QsIDApLCBkb2MuY2xpcFBvcyhQb3MoZG9jLmxhc3RMaW5lKCkpKSwgZnVuY3Rpb24obSkge1xuICAgICAgICByZXR1cm4gbS5wYXJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgX19uYW1lKGZpbmRTaGFyZWRNYXJrZXJzLCBcImZpbmRTaGFyZWRNYXJrZXJzXCIpO1xuICAgIGZ1bmN0aW9uIGNvcHlTaGFyZWRNYXJrZXJzKGRvYywgbWFya2Vycykge1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IG1hcmtlcnMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIHZhciBtYXJrZXIgPSBtYXJrZXJzW2kyXSwgcG9zID0gbWFya2VyLmZpbmQoKTtcbiAgICAgICAgdmFyIG1Gcm9tID0gZG9jLmNsaXBQb3MocG9zLmZyb20pLCBtVG8gPSBkb2MuY2xpcFBvcyhwb3MudG8pO1xuICAgICAgICBpZiAoY21wKG1Gcm9tLCBtVG8pKSB7XG4gICAgICAgICAgdmFyIHN1Yk1hcmsgPSBtYXJrVGV4dChkb2MsIG1Gcm9tLCBtVG8sIG1hcmtlci5wcmltYXJ5LCBtYXJrZXIucHJpbWFyeS50eXBlKTtcbiAgICAgICAgICBtYXJrZXIubWFya2Vycy5wdXNoKHN1Yk1hcmspO1xuICAgICAgICAgIHN1Yk1hcmsucGFyZW50ID0gbWFya2VyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShjb3B5U2hhcmVkTWFya2VycywgXCJjb3B5U2hhcmVkTWFya2Vyc1wiKTtcbiAgICBmdW5jdGlvbiBkZXRhY2hTaGFyZWRNYXJrZXJzKG1hcmtlcnMpIHtcbiAgICAgIHZhciBsb29wID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihpMykge1xuICAgICAgICB2YXIgbWFya2VyID0gbWFya2Vyc1tpM10sIGxpbmtlZCA9IFttYXJrZXIucHJpbWFyeS5kb2NdO1xuICAgICAgICBsaW5rZWREb2NzKG1hcmtlci5wcmltYXJ5LmRvYywgZnVuY3Rpb24oZCkge1xuICAgICAgICAgIHJldHVybiBsaW5rZWQucHVzaChkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbWFya2VyLm1hcmtlcnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICB2YXIgc3ViTWFya2VyID0gbWFya2VyLm1hcmtlcnNbal07XG4gICAgICAgICAgaWYgKGluZGV4T2YobGlua2VkLCBzdWJNYXJrZXIuZG9jKSA9PSAtMSkge1xuICAgICAgICAgICAgc3ViTWFya2VyLnBhcmVudCA9IG51bGw7XG4gICAgICAgICAgICBtYXJrZXIubWFya2Vycy5zcGxpY2Uoai0tLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIFwibG9vcFwiKTtcbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBtYXJrZXJzLmxlbmd0aDsgaTIrKylcbiAgICAgICAgbG9vcChpMik7XG4gICAgfVxuICAgIF9fbmFtZShkZXRhY2hTaGFyZWRNYXJrZXJzLCBcImRldGFjaFNoYXJlZE1hcmtlcnNcIik7XG4gICAgdmFyIG5leHREb2NJZCA9IDA7XG4gICAgdmFyIERvYyA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24odGV4dCwgbW9kZSwgZmlyc3RMaW5lLCBsaW5lU2VwLCBkaXJlY3Rpb24pIHtcbiAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEb2MpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRG9jKHRleHQsIG1vZGUsIGZpcnN0TGluZSwgbGluZVNlcCwgZGlyZWN0aW9uKTtcbiAgICAgIH1cbiAgICAgIGlmIChmaXJzdExpbmUgPT0gbnVsbCkge1xuICAgICAgICBmaXJzdExpbmUgPSAwO1xuICAgICAgfVxuICAgICAgQnJhbmNoQ2h1bmsuY2FsbCh0aGlzLCBbbmV3IExlYWZDaHVuayhbbmV3IExpbmUoXCJcIiwgbnVsbCldKV0pO1xuICAgICAgdGhpcy5maXJzdCA9IGZpcnN0TGluZTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9wID0gdGhpcy5zY3JvbGxMZWZ0ID0gMDtcbiAgICAgIHRoaXMuY2FudEVkaXQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2xlYW5HZW5lcmF0aW9uID0gMTtcbiAgICAgIHRoaXMubW9kZUZyb250aWVyID0gdGhpcy5oaWdobGlnaHRGcm9udGllciA9IGZpcnN0TGluZTtcbiAgICAgIHZhciBzdGFydCA9IFBvcyhmaXJzdExpbmUsIDApO1xuICAgICAgdGhpcy5zZWwgPSBzaW1wbGVTZWxlY3Rpb24oc3RhcnQpO1xuICAgICAgdGhpcy5oaXN0b3J5ID0gbmV3IEhpc3RvcnkobnVsbCk7XG4gICAgICB0aGlzLmlkID0gKytuZXh0RG9jSWQ7XG4gICAgICB0aGlzLm1vZGVPcHRpb24gPSBtb2RlO1xuICAgICAgdGhpcy5saW5lU2VwID0gbGluZVNlcDtcbiAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uID09IFwicnRsXCIgPyBcInJ0bFwiIDogXCJsdHJcIjtcbiAgICAgIHRoaXMuZXh0ZW5kID0gZmFsc2U7XG4gICAgICBpZiAodHlwZW9mIHRleHQgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0ZXh0ID0gdGhpcy5zcGxpdExpbmVzKHRleHQpO1xuICAgICAgfVxuICAgICAgdXBkYXRlRG9jKHRoaXMsIHsgZnJvbTogc3RhcnQsIHRvOiBzdGFydCwgdGV4dCB9KTtcbiAgICAgIHNldFNlbGVjdGlvbih0aGlzLCBzaW1wbGVTZWxlY3Rpb24oc3RhcnQpLCBzZWxfZG9udFNjcm9sbCk7XG4gICAgfSwgXCJEb2NcIik7XG4gICAgRG9jLnByb3RvdHlwZSA9IGNyZWF0ZU9iaihCcmFuY2hDaHVuay5wcm90b3R5cGUsIHtcbiAgICAgIGNvbnN0cnVjdG9yOiBEb2MsXG4gICAgICBpdGVyOiBmdW5jdGlvbihmcm9tLCB0bywgb3ApIHtcbiAgICAgICAgaWYgKG9wKSB7XG4gICAgICAgICAgdGhpcy5pdGVyTihmcm9tIC0gdGhpcy5maXJzdCwgdG8gLSBmcm9tLCBvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pdGVyTih0aGlzLmZpcnN0LCB0aGlzLmZpcnN0ICsgdGhpcy5zaXplLCBmcm9tKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGluc2VydDogZnVuY3Rpb24oYXQsIGxpbmVzKSB7XG4gICAgICAgIHZhciBoZWlnaHQgPSAwO1xuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgbGluZXMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgICAgaGVpZ2h0ICs9IGxpbmVzW2kyXS5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnNlcnRJbm5lcihhdCAtIHRoaXMuZmlyc3QsIGxpbmVzLCBoZWlnaHQpO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZTogZnVuY3Rpb24oYXQsIG4pIHtcbiAgICAgICAgdGhpcy5yZW1vdmVJbm5lcihhdCAtIHRoaXMuZmlyc3QsIG4pO1xuICAgICAgfSxcbiAgICAgIGdldFZhbHVlOiBmdW5jdGlvbihsaW5lU2VwKSB7XG4gICAgICAgIHZhciBsaW5lcyA9IGdldExpbmVzKHRoaXMsIHRoaXMuZmlyc3QsIHRoaXMuZmlyc3QgKyB0aGlzLnNpemUpO1xuICAgICAgICBpZiAobGluZVNlcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gbGluZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpbmVzLmpvaW4obGluZVNlcCB8fCB0aGlzLmxpbmVTZXBhcmF0b3IoKSk7XG4gICAgICB9LFxuICAgICAgc2V0VmFsdWU6IGRvY01ldGhvZE9wKGZ1bmN0aW9uKGNvZGUpIHtcbiAgICAgICAgdmFyIHRvcCA9IFBvcyh0aGlzLmZpcnN0LCAwKSwgbGFzdCA9IHRoaXMuZmlyc3QgKyB0aGlzLnNpemUgLSAxO1xuICAgICAgICBtYWtlQ2hhbmdlKHRoaXMsIHtcbiAgICAgICAgICBmcm9tOiB0b3AsXG4gICAgICAgICAgdG86IFBvcyhsYXN0LCBnZXRMaW5lKHRoaXMsIGxhc3QpLnRleHQubGVuZ3RoKSxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnNwbGl0TGluZXMoY29kZSksXG4gICAgICAgICAgb3JpZ2luOiBcInNldFZhbHVlXCIsXG4gICAgICAgICAgZnVsbDogdHJ1ZVxuICAgICAgICB9LCB0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMuY20pIHtcbiAgICAgICAgICBzY3JvbGxUb0Nvb3Jkcyh0aGlzLmNtLCAwLCAwKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRTZWxlY3Rpb24odGhpcywgc2ltcGxlU2VsZWN0aW9uKHRvcCksIHNlbF9kb250U2Nyb2xsKTtcbiAgICAgIH0pLFxuICAgICAgcmVwbGFjZVJhbmdlOiBmdW5jdGlvbihjb2RlLCBmcm9tLCB0bywgb3JpZ2luKSB7XG4gICAgICAgIGZyb20gPSBjbGlwUG9zKHRoaXMsIGZyb20pO1xuICAgICAgICB0byA9IHRvID8gY2xpcFBvcyh0aGlzLCB0bykgOiBmcm9tO1xuICAgICAgICByZXBsYWNlUmFuZ2UodGhpcywgY29kZSwgZnJvbSwgdG8sIG9yaWdpbik7XG4gICAgICB9LFxuICAgICAgZ2V0UmFuZ2U6IGZ1bmN0aW9uKGZyb20sIHRvLCBsaW5lU2VwKSB7XG4gICAgICAgIHZhciBsaW5lcyA9IGdldEJldHdlZW4odGhpcywgY2xpcFBvcyh0aGlzLCBmcm9tKSwgY2xpcFBvcyh0aGlzLCB0bykpO1xuICAgICAgICBpZiAobGluZVNlcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gbGluZXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmVTZXAgPT09IFwiXCIpIHtcbiAgICAgICAgICByZXR1cm4gbGluZXMuam9pbihcIlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGluZXMuam9pbihsaW5lU2VwIHx8IHRoaXMubGluZVNlcGFyYXRvcigpKTtcbiAgICAgIH0sXG4gICAgICBnZXRMaW5lOiBmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgIHZhciBsID0gdGhpcy5nZXRMaW5lSGFuZGxlKGxpbmUpO1xuICAgICAgICByZXR1cm4gbCAmJiBsLnRleHQ7XG4gICAgICB9LFxuICAgICAgZ2V0TGluZUhhbmRsZTogZnVuY3Rpb24obGluZSkge1xuICAgICAgICBpZiAoaXNMaW5lKHRoaXMsIGxpbmUpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldExpbmUodGhpcywgbGluZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBnZXRMaW5lTnVtYmVyOiBmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgIHJldHVybiBsaW5lTm8obGluZSk7XG4gICAgICB9LFxuICAgICAgZ2V0TGluZUhhbmRsZVZpc3VhbFN0YXJ0OiBmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbGluZSA9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgbGluZSA9IGdldExpbmUodGhpcywgbGluZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZpc3VhbExpbmUobGluZSk7XG4gICAgICB9LFxuICAgICAgbGluZUNvdW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZTtcbiAgICAgIH0sXG4gICAgICBmaXJzdExpbmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maXJzdDtcbiAgICAgIH0sXG4gICAgICBsYXN0TGluZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0ICsgdGhpcy5zaXplIC0gMTtcbiAgICAgIH0sXG4gICAgICBjbGlwUG9zOiBmdW5jdGlvbihwb3MpIHtcbiAgICAgICAgcmV0dXJuIGNsaXBQb3ModGhpcywgcG9zKTtcbiAgICAgIH0sXG4gICAgICBnZXRDdXJzb3I6IGZ1bmN0aW9uKHN0YXJ0KSB7XG4gICAgICAgIHZhciByYW5nZTIgPSB0aGlzLnNlbC5wcmltYXJ5KCksIHBvcztcbiAgICAgICAgaWYgKHN0YXJ0ID09IG51bGwgfHwgc3RhcnQgPT0gXCJoZWFkXCIpIHtcbiAgICAgICAgICBwb3MgPSByYW5nZTIuaGVhZDtcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydCA9PSBcImFuY2hvclwiKSB7XG4gICAgICAgICAgcG9zID0gcmFuZ2UyLmFuY2hvcjtcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydCA9PSBcImVuZFwiIHx8IHN0YXJ0ID09IFwidG9cIiB8fCBzdGFydCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBwb3MgPSByYW5nZTIudG8oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwb3MgPSByYW5nZTIuZnJvbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwb3M7XG4gICAgICB9LFxuICAgICAgbGlzdFNlbGVjdGlvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWwucmFuZ2VzO1xuICAgICAgfSxcbiAgICAgIHNvbWV0aGluZ1NlbGVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsLnNvbWV0aGluZ1NlbGVjdGVkKCk7XG4gICAgICB9LFxuICAgICAgc2V0Q3Vyc29yOiBkb2NNZXRob2RPcChmdW5jdGlvbihsaW5lLCBjaCwgb3B0aW9ucykge1xuICAgICAgICBzZXRTaW1wbGVTZWxlY3Rpb24odGhpcywgY2xpcFBvcyh0aGlzLCB0eXBlb2YgbGluZSA9PSBcIm51bWJlclwiID8gUG9zKGxpbmUsIGNoIHx8IDApIDogbGluZSksIG51bGwsIG9wdGlvbnMpO1xuICAgICAgfSksXG4gICAgICBzZXRTZWxlY3Rpb246IGRvY01ldGhvZE9wKGZ1bmN0aW9uKGFuY2hvciwgaGVhZCwgb3B0aW9ucykge1xuICAgICAgICBzZXRTaW1wbGVTZWxlY3Rpb24odGhpcywgY2xpcFBvcyh0aGlzLCBhbmNob3IpLCBjbGlwUG9zKHRoaXMsIGhlYWQgfHwgYW5jaG9yKSwgb3B0aW9ucyk7XG4gICAgICB9KSxcbiAgICAgIGV4dGVuZFNlbGVjdGlvbjogZG9jTWV0aG9kT3AoZnVuY3Rpb24oaGVhZCwgb3RoZXIsIG9wdGlvbnMpIHtcbiAgICAgICAgZXh0ZW5kU2VsZWN0aW9uKHRoaXMsIGNsaXBQb3ModGhpcywgaGVhZCksIG90aGVyICYmIGNsaXBQb3ModGhpcywgb3RoZXIpLCBvcHRpb25zKTtcbiAgICAgIH0pLFxuICAgICAgZXh0ZW5kU2VsZWN0aW9uczogZG9jTWV0aG9kT3AoZnVuY3Rpb24oaGVhZHMsIG9wdGlvbnMpIHtcbiAgICAgICAgZXh0ZW5kU2VsZWN0aW9ucyh0aGlzLCBjbGlwUG9zQXJyYXkodGhpcywgaGVhZHMpLCBvcHRpb25zKTtcbiAgICAgIH0pLFxuICAgICAgZXh0ZW5kU2VsZWN0aW9uc0J5OiBkb2NNZXRob2RPcChmdW5jdGlvbihmLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBoZWFkcyA9IG1hcCh0aGlzLnNlbC5yYW5nZXMsIGYpO1xuICAgICAgICBleHRlbmRTZWxlY3Rpb25zKHRoaXMsIGNsaXBQb3NBcnJheSh0aGlzLCBoZWFkcyksIG9wdGlvbnMpO1xuICAgICAgfSksXG4gICAgICBzZXRTZWxlY3Rpb25zOiBkb2NNZXRob2RPcChmdW5jdGlvbihyYW5nZXMsIHByaW1hcnksIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFyYW5nZXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHJhbmdlcy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICBvdXRbaTJdID0gbmV3IFJhbmdlKGNsaXBQb3ModGhpcywgcmFuZ2VzW2kyXS5hbmNob3IpLCBjbGlwUG9zKHRoaXMsIHJhbmdlc1tpMl0uaGVhZCB8fCByYW5nZXNbaTJdLmFuY2hvcikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmltYXJ5ID09IG51bGwpIHtcbiAgICAgICAgICBwcmltYXJ5ID0gTWF0aC5taW4ocmFuZ2VzLmxlbmd0aCAtIDEsIHRoaXMuc2VsLnByaW1JbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0U2VsZWN0aW9uKHRoaXMsIG5vcm1hbGl6ZVNlbGVjdGlvbih0aGlzLmNtLCBvdXQsIHByaW1hcnkpLCBvcHRpb25zKTtcbiAgICAgIH0pLFxuICAgICAgYWRkU2VsZWN0aW9uOiBkb2NNZXRob2RPcChmdW5jdGlvbihhbmNob3IsIGhlYWQsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHJhbmdlcyA9IHRoaXMuc2VsLnJhbmdlcy5zbGljZSgwKTtcbiAgICAgICAgcmFuZ2VzLnB1c2gobmV3IFJhbmdlKGNsaXBQb3ModGhpcywgYW5jaG9yKSwgY2xpcFBvcyh0aGlzLCBoZWFkIHx8IGFuY2hvcikpKTtcbiAgICAgICAgc2V0U2VsZWN0aW9uKHRoaXMsIG5vcm1hbGl6ZVNlbGVjdGlvbih0aGlzLmNtLCByYW5nZXMsIHJhbmdlcy5sZW5ndGggLSAxKSwgb3B0aW9ucyk7XG4gICAgICB9KSxcbiAgICAgIGdldFNlbGVjdGlvbjogZnVuY3Rpb24obGluZVNlcCkge1xuICAgICAgICB2YXIgcmFuZ2VzID0gdGhpcy5zZWwucmFuZ2VzLCBsaW5lcztcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHJhbmdlcy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICB2YXIgc2VsID0gZ2V0QmV0d2Vlbih0aGlzLCByYW5nZXNbaTJdLmZyb20oKSwgcmFuZ2VzW2kyXS50bygpKTtcbiAgICAgICAgICBsaW5lcyA9IGxpbmVzID8gbGluZXMuY29uY2F0KHNlbCkgOiBzZWw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmVTZXAgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIGxpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBsaW5lcy5qb2luKGxpbmVTZXAgfHwgdGhpcy5saW5lU2VwYXJhdG9yKCkpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZ2V0U2VsZWN0aW9uczogZnVuY3Rpb24obGluZVNlcCkge1xuICAgICAgICB2YXIgcGFydHMgPSBbXSwgcmFuZ2VzID0gdGhpcy5zZWwucmFuZ2VzO1xuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgcmFuZ2VzLmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgIHZhciBzZWwgPSBnZXRCZXR3ZWVuKHRoaXMsIHJhbmdlc1tpMl0uZnJvbSgpLCByYW5nZXNbaTJdLnRvKCkpO1xuICAgICAgICAgIGlmIChsaW5lU2VwICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgc2VsID0gc2VsLmpvaW4obGluZVNlcCB8fCB0aGlzLmxpbmVTZXBhcmF0b3IoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhcnRzW2kyXSA9IHNlbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFydHM7XG4gICAgICB9LFxuICAgICAgcmVwbGFjZVNlbGVjdGlvbjogZnVuY3Rpb24oY29kZSwgY29sbGFwc2UsIG9yaWdpbikge1xuICAgICAgICB2YXIgZHVwID0gW107XG4gICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCB0aGlzLnNlbC5yYW5nZXMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgICAgZHVwW2kyXSA9IGNvZGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXBsYWNlU2VsZWN0aW9ucyhkdXAsIGNvbGxhcHNlLCBvcmlnaW4gfHwgXCIraW5wdXRcIik7XG4gICAgICB9LFxuICAgICAgcmVwbGFjZVNlbGVjdGlvbnM6IGRvY01ldGhvZE9wKGZ1bmN0aW9uKGNvZGUsIGNvbGxhcHNlLCBvcmlnaW4pIHtcbiAgICAgICAgdmFyIGNoYW5nZXMgPSBbXSwgc2VsID0gdGhpcy5zZWw7XG4gICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBzZWwucmFuZ2VzLmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgIHZhciByYW5nZTIgPSBzZWwucmFuZ2VzW2kyXTtcbiAgICAgICAgICBjaGFuZ2VzW2kyXSA9IHsgZnJvbTogcmFuZ2UyLmZyb20oKSwgdG86IHJhbmdlMi50bygpLCB0ZXh0OiB0aGlzLnNwbGl0TGluZXMoY29kZVtpMl0pLCBvcmlnaW4gfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmV3U2VsID0gY29sbGFwc2UgJiYgY29sbGFwc2UgIT0gXCJlbmRcIiAmJiBjb21wdXRlUmVwbGFjZWRTZWwodGhpcywgY2hhbmdlcywgY29sbGFwc2UpO1xuICAgICAgICBmb3IgKHZhciBpJDEyID0gY2hhbmdlcy5sZW5ndGggLSAxOyBpJDEyID49IDA7IGkkMTItLSkge1xuICAgICAgICAgIG1ha2VDaGFuZ2UodGhpcywgY2hhbmdlc1tpJDEyXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld1NlbCkge1xuICAgICAgICAgIHNldFNlbGVjdGlvblJlcGxhY2VIaXN0b3J5KHRoaXMsIG5ld1NlbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jbSkge1xuICAgICAgICAgIGVuc3VyZUN1cnNvclZpc2libGUodGhpcy5jbSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdW5kbzogZG9jTWV0aG9kT3AoZnVuY3Rpb24oKSB7XG4gICAgICAgIG1ha2VDaGFuZ2VGcm9tSGlzdG9yeSh0aGlzLCBcInVuZG9cIik7XG4gICAgICB9KSxcbiAgICAgIHJlZG86IGRvY01ldGhvZE9wKGZ1bmN0aW9uKCkge1xuICAgICAgICBtYWtlQ2hhbmdlRnJvbUhpc3RvcnkodGhpcywgXCJyZWRvXCIpO1xuICAgICAgfSksXG4gICAgICB1bmRvU2VsZWN0aW9uOiBkb2NNZXRob2RPcChmdW5jdGlvbigpIHtcbiAgICAgICAgbWFrZUNoYW5nZUZyb21IaXN0b3J5KHRoaXMsIFwidW5kb1wiLCB0cnVlKTtcbiAgICAgIH0pLFxuICAgICAgcmVkb1NlbGVjdGlvbjogZG9jTWV0aG9kT3AoZnVuY3Rpb24oKSB7XG4gICAgICAgIG1ha2VDaGFuZ2VGcm9tSGlzdG9yeSh0aGlzLCBcInJlZG9cIiwgdHJ1ZSk7XG4gICAgICB9KSxcbiAgICAgIHNldEV4dGVuZGluZzogZnVuY3Rpb24odmFsKSB7XG4gICAgICAgIHRoaXMuZXh0ZW5kID0gdmFsO1xuICAgICAgfSxcbiAgICAgIGdldEV4dGVuZGluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4dGVuZDtcbiAgICAgIH0sXG4gICAgICBoaXN0b3J5U2l6ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBoaXN0ID0gdGhpcy5oaXN0b3J5LCBkb25lID0gMCwgdW5kb25lID0gMDtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGhpc3QuZG9uZS5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICBpZiAoIWhpc3QuZG9uZVtpMl0ucmFuZ2VzKSB7XG4gICAgICAgICAgICArK2RvbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkkMTIgPSAwOyBpJDEyIDwgaGlzdC51bmRvbmUubGVuZ3RoOyBpJDEyKyspIHtcbiAgICAgICAgICBpZiAoIWhpc3QudW5kb25lW2kkMTJdLnJhbmdlcykge1xuICAgICAgICAgICAgKyt1bmRvbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHVuZG86IGRvbmUsIHJlZG86IHVuZG9uZSB9O1xuICAgICAgfSxcbiAgICAgIGNsZWFySGlzdG9yeTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB0aGlzJDEkMSA9IHRoaXM7XG4gICAgICAgIHRoaXMuaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHRoaXMuaGlzdG9yeSk7XG4gICAgICAgIGxpbmtlZERvY3ModGhpcywgZnVuY3Rpb24oZG9jKSB7XG4gICAgICAgICAgcmV0dXJuIGRvYy5oaXN0b3J5ID0gdGhpcyQxJDEuaGlzdG9yeTtcbiAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgbWFya0NsZWFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5jbGVhbkdlbmVyYXRpb24gPSB0aGlzLmNoYW5nZUdlbmVyYXRpb24odHJ1ZSk7XG4gICAgICB9LFxuICAgICAgY2hhbmdlR2VuZXJhdGlvbjogZnVuY3Rpb24oZm9yY2VTcGxpdCkge1xuICAgICAgICBpZiAoZm9yY2VTcGxpdCkge1xuICAgICAgICAgIHRoaXMuaGlzdG9yeS5sYXN0T3AgPSB0aGlzLmhpc3RvcnkubGFzdFNlbE9wID0gdGhpcy5oaXN0b3J5Lmxhc3RPcmlnaW4gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmhpc3RvcnkuZ2VuZXJhdGlvbjtcbiAgICAgIH0sXG4gICAgICBpc0NsZWFuOiBmdW5jdGlvbihnZW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGlzdG9yeS5nZW5lcmF0aW9uID09IChnZW4gfHwgdGhpcy5jbGVhbkdlbmVyYXRpb24pO1xuICAgICAgfSxcbiAgICAgIGdldEhpc3Rvcnk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRvbmU6IGNvcHlIaXN0b3J5QXJyYXkodGhpcy5oaXN0b3J5LmRvbmUpLFxuICAgICAgICAgIHVuZG9uZTogY29weUhpc3RvcnlBcnJheSh0aGlzLmhpc3RvcnkudW5kb25lKVxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIHNldEhpc3Rvcnk6IGZ1bmN0aW9uKGhpc3REYXRhKSB7XG4gICAgICAgIHZhciBoaXN0ID0gdGhpcy5oaXN0b3J5ID0gbmV3IEhpc3RvcnkodGhpcy5oaXN0b3J5KTtcbiAgICAgICAgaGlzdC5kb25lID0gY29weUhpc3RvcnlBcnJheShoaXN0RGF0YS5kb25lLnNsaWNlKDApLCBudWxsLCB0cnVlKTtcbiAgICAgICAgaGlzdC51bmRvbmUgPSBjb3B5SGlzdG9yeUFycmF5KGhpc3REYXRhLnVuZG9uZS5zbGljZSgwKSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgc2V0R3V0dGVyTWFya2VyOiBkb2NNZXRob2RPcChmdW5jdGlvbihsaW5lLCBndXR0ZXJJRCwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGNoYW5nZUxpbmUodGhpcywgbGluZSwgXCJndXR0ZXJcIiwgZnVuY3Rpb24obGluZTIpIHtcbiAgICAgICAgICB2YXIgbWFya2VycyA9IGxpbmUyLmd1dHRlck1hcmtlcnMgfHwgKGxpbmUyLmd1dHRlck1hcmtlcnMgPSB7fSk7XG4gICAgICAgICAgbWFya2Vyc1tndXR0ZXJJRF0gPSB2YWx1ZTtcbiAgICAgICAgICBpZiAoIXZhbHVlICYmIGlzRW1wdHkobWFya2VycykpIHtcbiAgICAgICAgICAgIGxpbmUyLmd1dHRlck1hcmtlcnMgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGNsZWFyR3V0dGVyOiBkb2NNZXRob2RPcChmdW5jdGlvbihndXR0ZXJJRCkge1xuICAgICAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuICAgICAgICB0aGlzLml0ZXIoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgIGlmIChsaW5lLmd1dHRlck1hcmtlcnMgJiYgbGluZS5ndXR0ZXJNYXJrZXJzW2d1dHRlcklEXSkge1xuICAgICAgICAgICAgY2hhbmdlTGluZSh0aGlzJDEkMSwgbGluZSwgXCJndXR0ZXJcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIGxpbmUuZ3V0dGVyTWFya2Vyc1tndXR0ZXJJRF0gPSBudWxsO1xuICAgICAgICAgICAgICBpZiAoaXNFbXB0eShsaW5lLmd1dHRlck1hcmtlcnMpKSB7XG4gICAgICAgICAgICAgICAgbGluZS5ndXR0ZXJNYXJrZXJzID0gbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGxpbmVJbmZvOiBmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgIHZhciBuO1xuICAgICAgICBpZiAodHlwZW9mIGxpbmUgPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGlmICghaXNMaW5lKHRoaXMsIGxpbmUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgbiA9IGxpbmU7XG4gICAgICAgICAgbGluZSA9IGdldExpbmUodGhpcywgbGluZSk7XG4gICAgICAgICAgaWYgKCFsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbiA9IGxpbmVObyhsaW5lKTtcbiAgICAgICAgICBpZiAobiA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lOiBuLFxuICAgICAgICAgIGhhbmRsZTogbGluZSxcbiAgICAgICAgICB0ZXh0OiBsaW5lLnRleHQsXG4gICAgICAgICAgZ3V0dGVyTWFya2VyczogbGluZS5ndXR0ZXJNYXJrZXJzLFxuICAgICAgICAgIHRleHRDbGFzczogbGluZS50ZXh0Q2xhc3MsXG4gICAgICAgICAgYmdDbGFzczogbGluZS5iZ0NsYXNzLFxuICAgICAgICAgIHdyYXBDbGFzczogbGluZS53cmFwQ2xhc3MsXG4gICAgICAgICAgd2lkZ2V0czogbGluZS53aWRnZXRzXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgYWRkTGluZUNsYXNzOiBkb2NNZXRob2RPcChmdW5jdGlvbihoYW5kbGUsIHdoZXJlLCBjbHMpIHtcbiAgICAgICAgcmV0dXJuIGNoYW5nZUxpbmUodGhpcywgaGFuZGxlLCB3aGVyZSA9PSBcImd1dHRlclwiID8gXCJndXR0ZXJcIiA6IFwiY2xhc3NcIiwgZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgIHZhciBwcm9wMiA9IHdoZXJlID09IFwidGV4dFwiID8gXCJ0ZXh0Q2xhc3NcIiA6IHdoZXJlID09IFwiYmFja2dyb3VuZFwiID8gXCJiZ0NsYXNzXCIgOiB3aGVyZSA9PSBcImd1dHRlclwiID8gXCJndXR0ZXJDbGFzc1wiIDogXCJ3cmFwQ2xhc3NcIjtcbiAgICAgICAgICBpZiAoIWxpbmVbcHJvcDJdKSB7XG4gICAgICAgICAgICBsaW5lW3Byb3AyXSA9IGNscztcbiAgICAgICAgICB9IGVsc2UgaWYgKGNsYXNzVGVzdChjbHMpLnRlc3QobGluZVtwcm9wMl0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxpbmVbcHJvcDJdICs9IFwiIFwiICsgY2xzO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIHJlbW92ZUxpbmVDbGFzczogZG9jTWV0aG9kT3AoZnVuY3Rpb24oaGFuZGxlLCB3aGVyZSwgY2xzKSB7XG4gICAgICAgIHJldHVybiBjaGFuZ2VMaW5lKHRoaXMsIGhhbmRsZSwgd2hlcmUgPT0gXCJndXR0ZXJcIiA/IFwiZ3V0dGVyXCIgOiBcImNsYXNzXCIsIGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICB2YXIgcHJvcDIgPSB3aGVyZSA9PSBcInRleHRcIiA/IFwidGV4dENsYXNzXCIgOiB3aGVyZSA9PSBcImJhY2tncm91bmRcIiA/IFwiYmdDbGFzc1wiIDogd2hlcmUgPT0gXCJndXR0ZXJcIiA/IFwiZ3V0dGVyQ2xhc3NcIiA6IFwid3JhcENsYXNzXCI7XG4gICAgICAgICAgdmFyIGN1ciA9IGxpbmVbcHJvcDJdO1xuICAgICAgICAgIGlmICghY3VyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIGlmIChjbHMgPT0gbnVsbCkge1xuICAgICAgICAgICAgbGluZVtwcm9wMl0gPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgZm91bmQgPSBjdXIubWF0Y2goY2xhc3NUZXN0KGNscykpO1xuICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZW5kID0gZm91bmQuaW5kZXggKyBmb3VuZFswXS5sZW5ndGg7XG4gICAgICAgICAgICBsaW5lW3Byb3AyXSA9IGN1ci5zbGljZSgwLCBmb3VuZC5pbmRleCkgKyAoIWZvdW5kLmluZGV4IHx8IGVuZCA9PSBjdXIubGVuZ3RoID8gXCJcIiA6IFwiIFwiKSArIGN1ci5zbGljZShlbmQpIHx8IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgYWRkTGluZVdpZGdldDogZG9jTWV0aG9kT3AoZnVuY3Rpb24oaGFuZGxlLCBub2RlLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBhZGRMaW5lV2lkZ2V0KHRoaXMsIGhhbmRsZSwgbm9kZSwgb3B0aW9ucyk7XG4gICAgICB9KSxcbiAgICAgIHJlbW92ZUxpbmVXaWRnZXQ6IGZ1bmN0aW9uKHdpZGdldCkge1xuICAgICAgICB3aWRnZXQuY2xlYXIoKTtcbiAgICAgIH0sXG4gICAgICBtYXJrVGV4dDogZnVuY3Rpb24oZnJvbSwgdG8sIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG1hcmtUZXh0KHRoaXMsIGNsaXBQb3ModGhpcywgZnJvbSksIGNsaXBQb3ModGhpcywgdG8pLCBvcHRpb25zLCBvcHRpb25zICYmIG9wdGlvbnMudHlwZSB8fCBcInJhbmdlXCIpO1xuICAgICAgfSxcbiAgICAgIHNldEJvb2ttYXJrOiBmdW5jdGlvbihwb3MsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHJlYWxPcHRzID0ge1xuICAgICAgICAgIHJlcGxhY2VkV2l0aDogb3B0aW9ucyAmJiAob3B0aW9ucy5ub2RlVHlwZSA9PSBudWxsID8gb3B0aW9ucy53aWRnZXQgOiBvcHRpb25zKSxcbiAgICAgICAgICBpbnNlcnRMZWZ0OiBvcHRpb25zICYmIG9wdGlvbnMuaW5zZXJ0TGVmdCxcbiAgICAgICAgICBjbGVhcldoZW5FbXB0eTogZmFsc2UsXG4gICAgICAgICAgc2hhcmVkOiBvcHRpb25zICYmIG9wdGlvbnMuc2hhcmVkLFxuICAgICAgICAgIGhhbmRsZU1vdXNlRXZlbnRzOiBvcHRpb25zICYmIG9wdGlvbnMuaGFuZGxlTW91c2VFdmVudHNcbiAgICAgICAgfTtcbiAgICAgICAgcG9zID0gY2xpcFBvcyh0aGlzLCBwb3MpO1xuICAgICAgICByZXR1cm4gbWFya1RleHQodGhpcywgcG9zLCBwb3MsIHJlYWxPcHRzLCBcImJvb2ttYXJrXCIpO1xuICAgICAgfSxcbiAgICAgIGZpbmRNYXJrc0F0OiBmdW5jdGlvbihwb3MpIHtcbiAgICAgICAgcG9zID0gY2xpcFBvcyh0aGlzLCBwb3MpO1xuICAgICAgICB2YXIgbWFya2VycyA9IFtdLCBzcGFucyA9IGdldExpbmUodGhpcywgcG9zLmxpbmUpLm1hcmtlZFNwYW5zO1xuICAgICAgICBpZiAoc3BhbnMpIHtcbiAgICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgc3BhbnMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgICAgICB2YXIgc3BhbiA9IHNwYW5zW2kyXTtcbiAgICAgICAgICAgIGlmICgoc3Bhbi5mcm9tID09IG51bGwgfHwgc3Bhbi5mcm9tIDw9IHBvcy5jaCkgJiYgKHNwYW4udG8gPT0gbnVsbCB8fCBzcGFuLnRvID49IHBvcy5jaCkpIHtcbiAgICAgICAgICAgICAgbWFya2Vycy5wdXNoKHNwYW4ubWFya2VyLnBhcmVudCB8fCBzcGFuLm1hcmtlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXJrZXJzO1xuICAgICAgfSxcbiAgICAgIGZpbmRNYXJrczogZnVuY3Rpb24oZnJvbSwgdG8sIGZpbHRlcikge1xuICAgICAgICBmcm9tID0gY2xpcFBvcyh0aGlzLCBmcm9tKTtcbiAgICAgICAgdG8gPSBjbGlwUG9zKHRoaXMsIHRvKTtcbiAgICAgICAgdmFyIGZvdW5kID0gW10sIGxpbmVObzIgPSBmcm9tLmxpbmU7XG4gICAgICAgIHRoaXMuaXRlcihmcm9tLmxpbmUsIHRvLmxpbmUgKyAxLCBmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgdmFyIHNwYW5zID0gbGluZS5tYXJrZWRTcGFucztcbiAgICAgICAgICBpZiAoc3BhbnMpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBzcGFucy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICAgICAgdmFyIHNwYW4gPSBzcGFuc1tpMl07XG4gICAgICAgICAgICAgIGlmICghKHNwYW4udG8gIT0gbnVsbCAmJiBsaW5lTm8yID09IGZyb20ubGluZSAmJiBmcm9tLmNoID49IHNwYW4udG8gfHwgc3Bhbi5mcm9tID09IG51bGwgJiYgbGluZU5vMiAhPSBmcm9tLmxpbmUgfHwgc3Bhbi5mcm9tICE9IG51bGwgJiYgbGluZU5vMiA9PSB0by5saW5lICYmIHNwYW4uZnJvbSA+PSB0by5jaCkgJiYgKCFmaWx0ZXIgfHwgZmlsdGVyKHNwYW4ubWFya2VyKSkpIHtcbiAgICAgICAgICAgICAgICBmb3VuZC5wdXNoKHNwYW4ubWFya2VyLnBhcmVudCB8fCBzcGFuLm1hcmtlcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgKytsaW5lTm8yO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgfSxcbiAgICAgIGdldEFsbE1hcmtzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG1hcmtlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5pdGVyKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICB2YXIgc3BzID0gbGluZS5tYXJrZWRTcGFucztcbiAgICAgICAgICBpZiAoc3BzKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgc3BzLmxlbmd0aDsgKytpMikge1xuICAgICAgICAgICAgICBpZiAoc3BzW2kyXS5mcm9tICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXJzLnB1c2goc3BzW2kyXS5tYXJrZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG1hcmtlcnM7XG4gICAgICB9LFxuICAgICAgcG9zRnJvbUluZGV4OiBmdW5jdGlvbihvZmYyKSB7XG4gICAgICAgIHZhciBjaCwgbGluZU5vMiA9IHRoaXMuZmlyc3QsIHNlcFNpemUgPSB0aGlzLmxpbmVTZXBhcmF0b3IoKS5sZW5ndGg7XG4gICAgICAgIHRoaXMuaXRlcihmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgdmFyIHN6ID0gbGluZS50ZXh0Lmxlbmd0aCArIHNlcFNpemU7XG4gICAgICAgICAgaWYgKHN6ID4gb2ZmMikge1xuICAgICAgICAgICAgY2ggPSBvZmYyO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9mZjIgLT0gc3o7XG4gICAgICAgICAgKytsaW5lTm8yO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNsaXBQb3ModGhpcywgUG9zKGxpbmVObzIsIGNoKSk7XG4gICAgICB9LFxuICAgICAgaW5kZXhGcm9tUG9zOiBmdW5jdGlvbihjb29yZHMpIHtcbiAgICAgICAgY29vcmRzID0gY2xpcFBvcyh0aGlzLCBjb29yZHMpO1xuICAgICAgICB2YXIgaW5kZXggPSBjb29yZHMuY2g7XG4gICAgICAgIGlmIChjb29yZHMubGluZSA8IHRoaXMuZmlyc3QgfHwgY29vcmRzLmNoIDwgMCkge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzZXBTaXplID0gdGhpcy5saW5lU2VwYXJhdG9yKCkubGVuZ3RoO1xuICAgICAgICB0aGlzLml0ZXIodGhpcy5maXJzdCwgY29vcmRzLmxpbmUsIGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICBpbmRleCArPSBsaW5lLnRleHQubGVuZ3RoICsgc2VwU2l6ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH0sXG4gICAgICBjb3B5OiBmdW5jdGlvbihjb3B5SGlzdG9yeSkge1xuICAgICAgICB2YXIgZG9jID0gbmV3IERvYyhnZXRMaW5lcyh0aGlzLCB0aGlzLmZpcnN0LCB0aGlzLmZpcnN0ICsgdGhpcy5zaXplKSwgdGhpcy5tb2RlT3B0aW9uLCB0aGlzLmZpcnN0LCB0aGlzLmxpbmVTZXAsIHRoaXMuZGlyZWN0aW9uKTtcbiAgICAgICAgZG9jLnNjcm9sbFRvcCA9IHRoaXMuc2Nyb2xsVG9wO1xuICAgICAgICBkb2Muc2Nyb2xsTGVmdCA9IHRoaXMuc2Nyb2xsTGVmdDtcbiAgICAgICAgZG9jLnNlbCA9IHRoaXMuc2VsO1xuICAgICAgICBkb2MuZXh0ZW5kID0gZmFsc2U7XG4gICAgICAgIGlmIChjb3B5SGlzdG9yeSkge1xuICAgICAgICAgIGRvYy5oaXN0b3J5LnVuZG9EZXB0aCA9IHRoaXMuaGlzdG9yeS51bmRvRGVwdGg7XG4gICAgICAgICAgZG9jLnNldEhpc3RvcnkodGhpcy5nZXRIaXN0b3J5KCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkb2M7XG4gICAgICB9LFxuICAgICAgbGlua2VkRG9jOiBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZnJvbSA9IHRoaXMuZmlyc3QsIHRvID0gdGhpcy5maXJzdCArIHRoaXMuc2l6ZTtcbiAgICAgICAgaWYgKG9wdGlvbnMuZnJvbSAhPSBudWxsICYmIG9wdGlvbnMuZnJvbSA+IGZyb20pIHtcbiAgICAgICAgICBmcm9tID0gb3B0aW9ucy5mcm9tO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLnRvICE9IG51bGwgJiYgb3B0aW9ucy50byA8IHRvKSB7XG4gICAgICAgICAgdG8gPSBvcHRpb25zLnRvO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjb3B5ID0gbmV3IERvYyhnZXRMaW5lcyh0aGlzLCBmcm9tLCB0byksIG9wdGlvbnMubW9kZSB8fCB0aGlzLm1vZGVPcHRpb24sIGZyb20sIHRoaXMubGluZVNlcCwgdGhpcy5kaXJlY3Rpb24pO1xuICAgICAgICBpZiAob3B0aW9ucy5zaGFyZWRIaXN0KSB7XG4gICAgICAgICAgY29weS5oaXN0b3J5ID0gdGhpcy5oaXN0b3J5O1xuICAgICAgICB9XG4gICAgICAgICh0aGlzLmxpbmtlZCB8fCAodGhpcy5saW5rZWQgPSBbXSkpLnB1c2goeyBkb2M6IGNvcHksIHNoYXJlZEhpc3Q6IG9wdGlvbnMuc2hhcmVkSGlzdCB9KTtcbiAgICAgICAgY29weS5saW5rZWQgPSBbeyBkb2M6IHRoaXMsIGlzUGFyZW50OiB0cnVlLCBzaGFyZWRIaXN0OiBvcHRpb25zLnNoYXJlZEhpc3QgfV07XG4gICAgICAgIGNvcHlTaGFyZWRNYXJrZXJzKGNvcHksIGZpbmRTaGFyZWRNYXJrZXJzKHRoaXMpKTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICB9LFxuICAgICAgdW5saW5rRG9jOiBmdW5jdGlvbihvdGhlcikge1xuICAgICAgICBpZiAob3RoZXIgaW5zdGFuY2VvZiBDb2RlTWlycm9yMikge1xuICAgICAgICAgIG90aGVyID0gb3RoZXIuZG9jO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmxpbmtlZCkge1xuICAgICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCB0aGlzLmxpbmtlZC5sZW5ndGg7ICsraTIpIHtcbiAgICAgICAgICAgIHZhciBsaW5rID0gdGhpcy5saW5rZWRbaTJdO1xuICAgICAgICAgICAgaWYgKGxpbmsuZG9jICE9IG90aGVyKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5saW5rZWQuc3BsaWNlKGkyLCAxKTtcbiAgICAgICAgICAgIG90aGVyLnVubGlua0RvYyh0aGlzKTtcbiAgICAgICAgICAgIGRldGFjaFNoYXJlZE1hcmtlcnMoZmluZFNoYXJlZE1hcmtlcnModGhpcykpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlci5oaXN0b3J5ID09IHRoaXMuaGlzdG9yeSkge1xuICAgICAgICAgIHZhciBzcGxpdElkcyA9IFtvdGhlci5pZF07XG4gICAgICAgICAgbGlua2VkRG9jcyhvdGhlciwgZnVuY3Rpb24oZG9jKSB7XG4gICAgICAgICAgICByZXR1cm4gc3BsaXRJZHMucHVzaChkb2MuaWQpO1xuICAgICAgICAgIH0sIHRydWUpO1xuICAgICAgICAgIG90aGVyLmhpc3RvcnkgPSBuZXcgSGlzdG9yeShudWxsKTtcbiAgICAgICAgICBvdGhlci5oaXN0b3J5LmRvbmUgPSBjb3B5SGlzdG9yeUFycmF5KHRoaXMuaGlzdG9yeS5kb25lLCBzcGxpdElkcyk7XG4gICAgICAgICAgb3RoZXIuaGlzdG9yeS51bmRvbmUgPSBjb3B5SGlzdG9yeUFycmF5KHRoaXMuaGlzdG9yeS51bmRvbmUsIHNwbGl0SWRzKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGl0ZXJMaW5rZWREb2NzOiBmdW5jdGlvbihmKSB7XG4gICAgICAgIGxpbmtlZERvY3ModGhpcywgZik7XG4gICAgICB9LFxuICAgICAgZ2V0TW9kZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGU7XG4gICAgICB9LFxuICAgICAgZ2V0RWRpdG9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY207XG4gICAgICB9LFxuICAgICAgc3BsaXRMaW5lczogZnVuY3Rpb24oc3RyKSB7XG4gICAgICAgIGlmICh0aGlzLmxpbmVTZXApIHtcbiAgICAgICAgICByZXR1cm4gc3RyLnNwbGl0KHRoaXMubGluZVNlcCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNwbGl0TGluZXNBdXRvKHN0cik7XG4gICAgICB9LFxuICAgICAgbGluZVNlcGFyYXRvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpbmVTZXAgfHwgXCJcXG5cIjtcbiAgICAgIH0sXG4gICAgICBzZXREaXJlY3Rpb246IGRvY01ldGhvZE9wKGZ1bmN0aW9uKGRpcikge1xuICAgICAgICBpZiAoZGlyICE9IFwicnRsXCIpIHtcbiAgICAgICAgICBkaXIgPSBcImx0clwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXIgPT0gdGhpcy5kaXJlY3Rpb24pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBkaXI7XG4gICAgICAgIHRoaXMuaXRlcihmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgcmV0dXJuIGxpbmUub3JkZXIgPSBudWxsO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuY20pIHtcbiAgICAgICAgICBkaXJlY3Rpb25DaGFuZ2VkKHRoaXMuY20pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pO1xuICAgIERvYy5wcm90b3R5cGUuZWFjaExpbmUgPSBEb2MucHJvdG90eXBlLml0ZXI7XG4gICAgdmFyIGxhc3REcm9wID0gMDtcbiAgICBmdW5jdGlvbiBvbkRyb3AoZSkge1xuICAgICAgdmFyIGNtID0gdGhpcztcbiAgICAgIGNsZWFyRHJhZ0N1cnNvcihjbSk7XG4gICAgICBpZiAoc2lnbmFsRE9NRXZlbnQoY20sIGUpIHx8IGV2ZW50SW5XaWRnZXQoY20uZGlzcGxheSwgZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTtcbiAgICAgIGlmIChpZSkge1xuICAgICAgICBsYXN0RHJvcCA9ICtuZXcgRGF0ZSgpO1xuICAgICAgfVxuICAgICAgdmFyIHBvcyA9IHBvc0Zyb21Nb3VzZShjbSwgZSwgdHJ1ZSksIGZpbGVzID0gZS5kYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgICBpZiAoIXBvcyB8fCBjbS5pc1JlYWRPbmx5KCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCAmJiB3aW5kb3cuRmlsZVJlYWRlciAmJiB3aW5kb3cuRmlsZSkge1xuICAgICAgICB2YXIgbiA9IGZpbGVzLmxlbmd0aCwgdGV4dCA9IEFycmF5KG4pLCByZWFkID0gMDtcbiAgICAgICAgdmFyIG1hcmtBc1JlYWRBbmRQYXN0ZUlmQWxsRmlsZXNBcmVSZWFkID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAoKytyZWFkID09IG4pIHtcbiAgICAgICAgICAgIG9wZXJhdGlvbihjbSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHBvcyA9IGNsaXBQb3MoY20uZG9jLCBwb3MpO1xuICAgICAgICAgICAgICB2YXIgY2hhbmdlID0ge1xuICAgICAgICAgICAgICAgIGZyb206IHBvcyxcbiAgICAgICAgICAgICAgICB0bzogcG9zLFxuICAgICAgICAgICAgICAgIHRleHQ6IGNtLmRvYy5zcGxpdExpbmVzKHRleHQuZmlsdGVyKGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0ICE9IG51bGw7XG4gICAgICAgICAgICAgICAgfSkuam9pbihjbS5kb2MubGluZVNlcGFyYXRvcigpKSksXG4gICAgICAgICAgICAgICAgb3JpZ2luOiBcInBhc3RlXCJcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgbWFrZUNoYW5nZShjbS5kb2MsIGNoYW5nZSk7XG4gICAgICAgICAgICAgIHNldFNlbGVjdGlvblJlcGxhY2VIaXN0b3J5KGNtLmRvYywgc2ltcGxlU2VsZWN0aW9uKGNsaXBQb3MoY20uZG9jLCBwb3MpLCBjbGlwUG9zKGNtLmRvYywgY2hhbmdlRW5kKGNoYW5nZSkpKSk7XG4gICAgICAgICAgICB9KSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgXCJtYXJrQXNSZWFkQW5kUGFzdGVJZkFsbEZpbGVzQXJlUmVhZFwiKTtcbiAgICAgICAgdmFyIHJlYWRUZXh0RnJvbUZpbGUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKGZpbGUsIGkzKSB7XG4gICAgICAgICAgaWYgKGNtLm9wdGlvbnMuYWxsb3dEcm9wRmlsZVR5cGVzICYmIGluZGV4T2YoY20ub3B0aW9ucy5hbGxvd0Ryb3BGaWxlVHlwZXMsIGZpbGUudHlwZSkgPT0gLTEpIHtcbiAgICAgICAgICAgIG1hcmtBc1JlYWRBbmRQYXN0ZUlmQWxsRmlsZXNBcmVSZWFkKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFya0FzUmVhZEFuZFBhc3RlSWZBbGxGaWxlc0FyZVJlYWQoKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBjb250ZW50ID0gcmVhZGVyLnJlc3VsdDtcbiAgICAgICAgICAgIGlmICgvW1xceDAwLVxceDA4XFx4MGUtXFx4MWZdezJ9Ly50ZXN0KGNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgIG1hcmtBc1JlYWRBbmRQYXN0ZUlmQWxsRmlsZXNBcmVSZWFkKCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRleHRbaTNdID0gY29udGVudDtcbiAgICAgICAgICAgIG1hcmtBc1JlYWRBbmRQYXN0ZUlmQWxsRmlsZXNBcmVSZWFkKCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTtcbiAgICAgICAgfSwgXCJyZWFkVGV4dEZyb21GaWxlXCIpO1xuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgZmlsZXMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgICAgcmVhZFRleHRGcm9tRmlsZShmaWxlc1tpMl0sIGkyKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNtLnN0YXRlLmRyYWdnaW5nVGV4dCAmJiBjbS5kb2Muc2VsLmNvbnRhaW5zKHBvcykgPiAtMSkge1xuICAgICAgICAgIGNtLnN0YXRlLmRyYWdnaW5nVGV4dChlKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNtLmRpc3BsYXkuaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICB9LCAyMCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdmFyIHRleHQkMSA9IGUuZGF0YVRyYW5zZmVyLmdldERhdGEoXCJUZXh0XCIpO1xuICAgICAgICAgIGlmICh0ZXh0JDEpIHtcbiAgICAgICAgICAgIHZhciBzZWxlY3RlZDtcbiAgICAgICAgICAgIGlmIChjbS5zdGF0ZS5kcmFnZ2luZ1RleHQgJiYgIWNtLnN0YXRlLmRyYWdnaW5nVGV4dC5jb3B5KSB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkID0gY20ubGlzdFNlbGVjdGlvbnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFNlbGVjdGlvbk5vVW5kbyhjbS5kb2MsIHNpbXBsZVNlbGVjdGlvbihwb3MsIHBvcykpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIGkkMTIgPSAwOyBpJDEyIDwgc2VsZWN0ZWQubGVuZ3RoOyArK2kkMTIpIHtcbiAgICAgICAgICAgICAgICByZXBsYWNlUmFuZ2UoY20uZG9jLCBcIlwiLCBzZWxlY3RlZFtpJDEyXS5hbmNob3IsIHNlbGVjdGVkW2kkMTJdLmhlYWQsIFwiZHJhZ1wiKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY20ucmVwbGFjZVNlbGVjdGlvbih0ZXh0JDEsIFwiYXJvdW5kXCIsIFwicGFzdGVcIik7XG4gICAgICAgICAgICBjbS5kaXNwbGF5LmlucHV0LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlJDEpIHtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUob25Ecm9wLCBcIm9uRHJvcFwiKTtcbiAgICBmdW5jdGlvbiBvbkRyYWdTdGFydChjbSwgZSkge1xuICAgICAgaWYgKGllICYmICghY20uc3RhdGUuZHJhZ2dpbmdUZXh0IHx8ICtuZXcgRGF0ZSgpIC0gbGFzdERyb3AgPCAxMDApKSB7XG4gICAgICAgIGVfc3RvcChlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHNpZ25hbERPTUV2ZW50KGNtLCBlKSB8fCBldmVudEluV2lkZ2V0KGNtLmRpc3BsYXksIGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGUuZGF0YVRyYW5zZmVyLnNldERhdGEoXCJUZXh0XCIsIGNtLmdldFNlbGVjdGlvbigpKTtcbiAgICAgIGUuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBcImNvcHlNb3ZlXCI7XG4gICAgICBpZiAoZS5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlICYmICFzYWZhcmkpIHtcbiAgICAgICAgdmFyIGltZyA9IGVsdChcImltZ1wiLCBudWxsLCBudWxsLCBcInBvc2l0aW9uOiBmaXhlZDsgbGVmdDogMDsgdG9wOiAwO1wiKTtcbiAgICAgICAgaW1nLnNyYyA9IFwiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFBQUFBQ0g1QkFFS0FBRUFMQUFBQUFBQkFBRUFBQUlDVEFFQU93PT1cIjtcbiAgICAgICAgaWYgKHByZXN0bykge1xuICAgICAgICAgIGltZy53aWR0aCA9IGltZy5oZWlnaHQgPSAxO1xuICAgICAgICAgIGNtLmRpc3BsYXkud3JhcHBlci5hcHBlbmRDaGlsZChpbWcpO1xuICAgICAgICAgIGltZy5fdG9wID0gaW1nLm9mZnNldFRvcDtcbiAgICAgICAgfVxuICAgICAgICBlLmRhdGFUcmFuc2Zlci5zZXREcmFnSW1hZ2UoaW1nLCAwLCAwKTtcbiAgICAgICAgaWYgKHByZXN0bykge1xuICAgICAgICAgIGltZy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGltZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKG9uRHJhZ1N0YXJ0LCBcIm9uRHJhZ1N0YXJ0XCIpO1xuICAgIGZ1bmN0aW9uIG9uRHJhZ092ZXIoY20sIGUpIHtcbiAgICAgIHZhciBwb3MgPSBwb3NGcm9tTW91c2UoY20sIGUpO1xuICAgICAgaWYgKCFwb3MpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICBkcmF3U2VsZWN0aW9uQ3Vyc29yKGNtLCBwb3MsIGZyYWcpO1xuICAgICAgaWYgKCFjbS5kaXNwbGF5LmRyYWdDdXJzb3IpIHtcbiAgICAgICAgY20uZGlzcGxheS5kcmFnQ3Vyc29yID0gZWx0KFwiZGl2XCIsIG51bGwsIFwiQ29kZU1pcnJvci1jdXJzb3JzIENvZGVNaXJyb3ItZHJhZ2N1cnNvcnNcIik7XG4gICAgICAgIGNtLmRpc3BsYXkubGluZVNwYWNlLmluc2VydEJlZm9yZShjbS5kaXNwbGF5LmRyYWdDdXJzb3IsIGNtLmRpc3BsYXkuY3Vyc29yRGl2KTtcbiAgICAgIH1cbiAgICAgIHJlbW92ZUNoaWxkcmVuQW5kQWRkKGNtLmRpc3BsYXkuZHJhZ0N1cnNvciwgZnJhZyk7XG4gICAgfVxuICAgIF9fbmFtZShvbkRyYWdPdmVyLCBcIm9uRHJhZ092ZXJcIik7XG4gICAgZnVuY3Rpb24gY2xlYXJEcmFnQ3Vyc29yKGNtKSB7XG4gICAgICBpZiAoY20uZGlzcGxheS5kcmFnQ3Vyc29yKSB7XG4gICAgICAgIGNtLmRpc3BsYXkubGluZVNwYWNlLnJlbW92ZUNoaWxkKGNtLmRpc3BsYXkuZHJhZ0N1cnNvcik7XG4gICAgICAgIGNtLmRpc3BsYXkuZHJhZ0N1cnNvciA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShjbGVhckRyYWdDdXJzb3IsIFwiY2xlYXJEcmFnQ3Vyc29yXCIpO1xuICAgIGZ1bmN0aW9uIGZvckVhY2hDb2RlTWlycm9yKGYpIHtcbiAgICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgYnlDbGFzcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJDb2RlTWlycm9yXCIpLCBlZGl0b3JzID0gW107XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgYnlDbGFzcy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgdmFyIGNtID0gYnlDbGFzc1tpMl0uQ29kZU1pcnJvcjtcbiAgICAgICAgaWYgKGNtKSB7XG4gICAgICAgICAgZWRpdG9ycy5wdXNoKGNtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGVkaXRvcnMubGVuZ3RoKSB7XG4gICAgICAgIGVkaXRvcnNbMF0ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGZvciAodmFyIGkzID0gMDsgaTMgPCBlZGl0b3JzLmxlbmd0aDsgaTMrKykge1xuICAgICAgICAgICAgZihlZGl0b3JzW2kzXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGZvckVhY2hDb2RlTWlycm9yLCBcImZvckVhY2hDb2RlTWlycm9yXCIpO1xuICAgIHZhciBnbG9iYWxzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuICAgIGZ1bmN0aW9uIGVuc3VyZUdsb2JhbEhhbmRsZXJzKCkge1xuICAgICAgaWYgKGdsb2JhbHNSZWdpc3RlcmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlZ2lzdGVyR2xvYmFsSGFuZGxlcnMoKTtcbiAgICAgIGdsb2JhbHNSZWdpc3RlcmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgX19uYW1lKGVuc3VyZUdsb2JhbEhhbmRsZXJzLCBcImVuc3VyZUdsb2JhbEhhbmRsZXJzXCIpO1xuICAgIGZ1bmN0aW9uIHJlZ2lzdGVyR2xvYmFsSGFuZGxlcnMoKSB7XG4gICAgICB2YXIgcmVzaXplVGltZXI7XG4gICAgICBvbih3aW5kb3csIFwicmVzaXplXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAocmVzaXplVGltZXIgPT0gbnVsbCkge1xuICAgICAgICAgIHJlc2l6ZVRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJlc2l6ZVRpbWVyID0gbnVsbDtcbiAgICAgICAgICAgIGZvckVhY2hDb2RlTWlycm9yKG9uUmVzaXplKTtcbiAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG9uKHdpbmRvdywgXCJibHVyXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZm9yRWFjaENvZGVNaXJyb3Iob25CbHVyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBfX25hbWUocmVnaXN0ZXJHbG9iYWxIYW5kbGVycywgXCJyZWdpc3Rlckdsb2JhbEhhbmRsZXJzXCIpO1xuICAgIGZ1bmN0aW9uIG9uUmVzaXplKGNtKSB7XG4gICAgICB2YXIgZCA9IGNtLmRpc3BsYXk7XG4gICAgICBkLmNhY2hlZENoYXJXaWR0aCA9IGQuY2FjaGVkVGV4dEhlaWdodCA9IGQuY2FjaGVkUGFkZGluZ0ggPSBudWxsO1xuICAgICAgZC5zY3JvbGxiYXJzQ2xpcHBlZCA9IGZhbHNlO1xuICAgICAgY20uc2V0U2l6ZSgpO1xuICAgIH1cbiAgICBfX25hbWUob25SZXNpemUsIFwib25SZXNpemVcIik7XG4gICAgdmFyIGtleU5hbWVzID0ge1xuICAgICAgMzogXCJQYXVzZVwiLFxuICAgICAgODogXCJCYWNrc3BhY2VcIixcbiAgICAgIDk6IFwiVGFiXCIsXG4gICAgICAxMzogXCJFbnRlclwiLFxuICAgICAgMTY6IFwiU2hpZnRcIixcbiAgICAgIDE3OiBcIkN0cmxcIixcbiAgICAgIDE4OiBcIkFsdFwiLFxuICAgICAgMTk6IFwiUGF1c2VcIixcbiAgICAgIDIwOiBcIkNhcHNMb2NrXCIsXG4gICAgICAyNzogXCJFc2NcIixcbiAgICAgIDMyOiBcIlNwYWNlXCIsXG4gICAgICAzMzogXCJQYWdlVXBcIixcbiAgICAgIDM0OiBcIlBhZ2VEb3duXCIsXG4gICAgICAzNTogXCJFbmRcIixcbiAgICAgIDM2OiBcIkhvbWVcIixcbiAgICAgIDM3OiBcIkxlZnRcIixcbiAgICAgIDM4OiBcIlVwXCIsXG4gICAgICAzOTogXCJSaWdodFwiLFxuICAgICAgNDA6IFwiRG93blwiLFxuICAgICAgNDQ6IFwiUHJpbnRTY3JuXCIsXG4gICAgICA0NTogXCJJbnNlcnRcIixcbiAgICAgIDQ2OiBcIkRlbGV0ZVwiLFxuICAgICAgNTk6IFwiO1wiLFxuICAgICAgNjE6IFwiPVwiLFxuICAgICAgOTE6IFwiTW9kXCIsXG4gICAgICA5MjogXCJNb2RcIixcbiAgICAgIDkzOiBcIk1vZFwiLFxuICAgICAgMTA2OiBcIipcIixcbiAgICAgIDEwNzogXCI9XCIsXG4gICAgICAxMDk6IFwiLVwiLFxuICAgICAgMTEwOiBcIi5cIixcbiAgICAgIDExMTogXCIvXCIsXG4gICAgICAxNDU6IFwiU2Nyb2xsTG9ja1wiLFxuICAgICAgMTczOiBcIi1cIixcbiAgICAgIDE4NjogXCI7XCIsXG4gICAgICAxODc6IFwiPVwiLFxuICAgICAgMTg4OiBcIixcIixcbiAgICAgIDE4OTogXCItXCIsXG4gICAgICAxOTA6IFwiLlwiLFxuICAgICAgMTkxOiBcIi9cIixcbiAgICAgIDE5MjogXCJgXCIsXG4gICAgICAyMTk6IFwiW1wiLFxuICAgICAgMjIwOiBcIlxcXFxcIixcbiAgICAgIDIyMTogXCJdXCIsXG4gICAgICAyMjI6IFwiJ1wiLFxuICAgICAgMjI0OiBcIk1vZFwiLFxuICAgICAgNjMyMzI6IFwiVXBcIixcbiAgICAgIDYzMjMzOiBcIkRvd25cIixcbiAgICAgIDYzMjM0OiBcIkxlZnRcIixcbiAgICAgIDYzMjM1OiBcIlJpZ2h0XCIsXG4gICAgICA2MzI3MjogXCJEZWxldGVcIixcbiAgICAgIDYzMjczOiBcIkhvbWVcIixcbiAgICAgIDYzMjc1OiBcIkVuZFwiLFxuICAgICAgNjMyNzY6IFwiUGFnZVVwXCIsXG4gICAgICA2MzI3NzogXCJQYWdlRG93blwiLFxuICAgICAgNjMzMDI6IFwiSW5zZXJ0XCJcbiAgICB9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykge1xuICAgICAga2V5TmFtZXNbaSArIDQ4XSA9IGtleU5hbWVzW2kgKyA5Nl0gPSBTdHJpbmcoaSk7XG4gICAgfVxuICAgIGZvciAodmFyIGkkMSA9IDY1OyBpJDEgPD0gOTA7IGkkMSsrKSB7XG4gICAgICBrZXlOYW1lc1tpJDFdID0gU3RyaW5nLmZyb21DaGFyQ29kZShpJDEpO1xuICAgIH1cbiAgICBmb3IgKHZhciBpJDIgPSAxOyBpJDIgPD0gMTI7IGkkMisrKSB7XG4gICAgICBrZXlOYW1lc1tpJDIgKyAxMTFdID0ga2V5TmFtZXNbaSQyICsgNjMyMzVdID0gXCJGXCIgKyBpJDI7XG4gICAgfVxuICAgIHZhciBrZXlNYXAgPSB7fTtcbiAgICBrZXlNYXAuYmFzaWMgPSB7XG4gICAgICBcIkxlZnRcIjogXCJnb0NoYXJMZWZ0XCIsXG4gICAgICBcIlJpZ2h0XCI6IFwiZ29DaGFyUmlnaHRcIixcbiAgICAgIFwiVXBcIjogXCJnb0xpbmVVcFwiLFxuICAgICAgXCJEb3duXCI6IFwiZ29MaW5lRG93blwiLFxuICAgICAgXCJFbmRcIjogXCJnb0xpbmVFbmRcIixcbiAgICAgIFwiSG9tZVwiOiBcImdvTGluZVN0YXJ0U21hcnRcIixcbiAgICAgIFwiUGFnZVVwXCI6IFwiZ29QYWdlVXBcIixcbiAgICAgIFwiUGFnZURvd25cIjogXCJnb1BhZ2VEb3duXCIsXG4gICAgICBcIkRlbGV0ZVwiOiBcImRlbENoYXJBZnRlclwiLFxuICAgICAgXCJCYWNrc3BhY2VcIjogXCJkZWxDaGFyQmVmb3JlXCIsXG4gICAgICBcIlNoaWZ0LUJhY2tzcGFjZVwiOiBcImRlbENoYXJCZWZvcmVcIixcbiAgICAgIFwiVGFiXCI6IFwiZGVmYXVsdFRhYlwiLFxuICAgICAgXCJTaGlmdC1UYWJcIjogXCJpbmRlbnRBdXRvXCIsXG4gICAgICBcIkVudGVyXCI6IFwibmV3bGluZUFuZEluZGVudFwiLFxuICAgICAgXCJJbnNlcnRcIjogXCJ0b2dnbGVPdmVyd3JpdGVcIixcbiAgICAgIFwiRXNjXCI6IFwic2luZ2xlU2VsZWN0aW9uXCJcbiAgICB9O1xuICAgIGtleU1hcC5wY0RlZmF1bHQgPSB7XG4gICAgICBcIkN0cmwtQVwiOiBcInNlbGVjdEFsbFwiLFxuICAgICAgXCJDdHJsLURcIjogXCJkZWxldGVMaW5lXCIsXG4gICAgICBcIkN0cmwtWlwiOiBcInVuZG9cIixcbiAgICAgIFwiU2hpZnQtQ3RybC1aXCI6IFwicmVkb1wiLFxuICAgICAgXCJDdHJsLVlcIjogXCJyZWRvXCIsXG4gICAgICBcIkN0cmwtSG9tZVwiOiBcImdvRG9jU3RhcnRcIixcbiAgICAgIFwiQ3RybC1FbmRcIjogXCJnb0RvY0VuZFwiLFxuICAgICAgXCJDdHJsLVVwXCI6IFwiZ29MaW5lVXBcIixcbiAgICAgIFwiQ3RybC1Eb3duXCI6IFwiZ29MaW5lRG93blwiLFxuICAgICAgXCJDdHJsLUxlZnRcIjogXCJnb0dyb3VwTGVmdFwiLFxuICAgICAgXCJDdHJsLVJpZ2h0XCI6IFwiZ29Hcm91cFJpZ2h0XCIsXG4gICAgICBcIkFsdC1MZWZ0XCI6IFwiZ29MaW5lU3RhcnRcIixcbiAgICAgIFwiQWx0LVJpZ2h0XCI6IFwiZ29MaW5lRW5kXCIsXG4gICAgICBcIkN0cmwtQmFja3NwYWNlXCI6IFwiZGVsR3JvdXBCZWZvcmVcIixcbiAgICAgIFwiQ3RybC1EZWxldGVcIjogXCJkZWxHcm91cEFmdGVyXCIsXG4gICAgICBcIkN0cmwtU1wiOiBcInNhdmVcIixcbiAgICAgIFwiQ3RybC1GXCI6IFwiZmluZFwiLFxuICAgICAgXCJDdHJsLUdcIjogXCJmaW5kTmV4dFwiLFxuICAgICAgXCJTaGlmdC1DdHJsLUdcIjogXCJmaW5kUHJldlwiLFxuICAgICAgXCJTaGlmdC1DdHJsLUZcIjogXCJyZXBsYWNlXCIsXG4gICAgICBcIlNoaWZ0LUN0cmwtUlwiOiBcInJlcGxhY2VBbGxcIixcbiAgICAgIFwiQ3RybC1bXCI6IFwiaW5kZW50TGVzc1wiLFxuICAgICAgXCJDdHJsLV1cIjogXCJpbmRlbnRNb3JlXCIsXG4gICAgICBcIkN0cmwtVVwiOiBcInVuZG9TZWxlY3Rpb25cIixcbiAgICAgIFwiU2hpZnQtQ3RybC1VXCI6IFwicmVkb1NlbGVjdGlvblwiLFxuICAgICAgXCJBbHQtVVwiOiBcInJlZG9TZWxlY3Rpb25cIixcbiAgICAgIFwiZmFsbHRocm91Z2hcIjogXCJiYXNpY1wiXG4gICAgfTtcbiAgICBrZXlNYXAuZW1hY3N5ID0ge1xuICAgICAgXCJDdHJsLUZcIjogXCJnb0NoYXJSaWdodFwiLFxuICAgICAgXCJDdHJsLUJcIjogXCJnb0NoYXJMZWZ0XCIsXG4gICAgICBcIkN0cmwtUFwiOiBcImdvTGluZVVwXCIsXG4gICAgICBcIkN0cmwtTlwiOiBcImdvTGluZURvd25cIixcbiAgICAgIFwiQ3RybC1BXCI6IFwiZ29MaW5lU3RhcnRcIixcbiAgICAgIFwiQ3RybC1FXCI6IFwiZ29MaW5lRW5kXCIsXG4gICAgICBcIkN0cmwtVlwiOiBcImdvUGFnZURvd25cIixcbiAgICAgIFwiU2hpZnQtQ3RybC1WXCI6IFwiZ29QYWdlVXBcIixcbiAgICAgIFwiQ3RybC1EXCI6IFwiZGVsQ2hhckFmdGVyXCIsXG4gICAgICBcIkN0cmwtSFwiOiBcImRlbENoYXJCZWZvcmVcIixcbiAgICAgIFwiQWx0LUJhY2tzcGFjZVwiOiBcImRlbFdvcmRCZWZvcmVcIixcbiAgICAgIFwiQ3RybC1LXCI6IFwia2lsbExpbmVcIixcbiAgICAgIFwiQ3RybC1UXCI6IFwidHJhbnNwb3NlQ2hhcnNcIixcbiAgICAgIFwiQ3RybC1PXCI6IFwib3BlbkxpbmVcIlxuICAgIH07XG4gICAga2V5TWFwLm1hY0RlZmF1bHQgPSB7XG4gICAgICBcIkNtZC1BXCI6IFwic2VsZWN0QWxsXCIsXG4gICAgICBcIkNtZC1EXCI6IFwiZGVsZXRlTGluZVwiLFxuICAgICAgXCJDbWQtWlwiOiBcInVuZG9cIixcbiAgICAgIFwiU2hpZnQtQ21kLVpcIjogXCJyZWRvXCIsXG4gICAgICBcIkNtZC1ZXCI6IFwicmVkb1wiLFxuICAgICAgXCJDbWQtSG9tZVwiOiBcImdvRG9jU3RhcnRcIixcbiAgICAgIFwiQ21kLVVwXCI6IFwiZ29Eb2NTdGFydFwiLFxuICAgICAgXCJDbWQtRW5kXCI6IFwiZ29Eb2NFbmRcIixcbiAgICAgIFwiQ21kLURvd25cIjogXCJnb0RvY0VuZFwiLFxuICAgICAgXCJBbHQtTGVmdFwiOiBcImdvR3JvdXBMZWZ0XCIsXG4gICAgICBcIkFsdC1SaWdodFwiOiBcImdvR3JvdXBSaWdodFwiLFxuICAgICAgXCJDbWQtTGVmdFwiOiBcImdvTGluZUxlZnRcIixcbiAgICAgIFwiQ21kLVJpZ2h0XCI6IFwiZ29MaW5lUmlnaHRcIixcbiAgICAgIFwiQWx0LUJhY2tzcGFjZVwiOiBcImRlbEdyb3VwQmVmb3JlXCIsXG4gICAgICBcIkN0cmwtQWx0LUJhY2tzcGFjZVwiOiBcImRlbEdyb3VwQWZ0ZXJcIixcbiAgICAgIFwiQWx0LURlbGV0ZVwiOiBcImRlbEdyb3VwQWZ0ZXJcIixcbiAgICAgIFwiQ21kLVNcIjogXCJzYXZlXCIsXG4gICAgICBcIkNtZC1GXCI6IFwiZmluZFwiLFxuICAgICAgXCJDbWQtR1wiOiBcImZpbmROZXh0XCIsXG4gICAgICBcIlNoaWZ0LUNtZC1HXCI6IFwiZmluZFByZXZcIixcbiAgICAgIFwiQ21kLUFsdC1GXCI6IFwicmVwbGFjZVwiLFxuICAgICAgXCJTaGlmdC1DbWQtQWx0LUZcIjogXCJyZXBsYWNlQWxsXCIsXG4gICAgICBcIkNtZC1bXCI6IFwiaW5kZW50TGVzc1wiLFxuICAgICAgXCJDbWQtXVwiOiBcImluZGVudE1vcmVcIixcbiAgICAgIFwiQ21kLUJhY2tzcGFjZVwiOiBcImRlbFdyYXBwZWRMaW5lTGVmdFwiLFxuICAgICAgXCJDbWQtRGVsZXRlXCI6IFwiZGVsV3JhcHBlZExpbmVSaWdodFwiLFxuICAgICAgXCJDbWQtVVwiOiBcInVuZG9TZWxlY3Rpb25cIixcbiAgICAgIFwiU2hpZnQtQ21kLVVcIjogXCJyZWRvU2VsZWN0aW9uXCIsXG4gICAgICBcIkN0cmwtVXBcIjogXCJnb0RvY1N0YXJ0XCIsXG4gICAgICBcIkN0cmwtRG93blwiOiBcImdvRG9jRW5kXCIsXG4gICAgICBcImZhbGx0aHJvdWdoXCI6IFtcImJhc2ljXCIsIFwiZW1hY3N5XCJdXG4gICAgfTtcbiAgICBrZXlNYXBbXCJkZWZhdWx0XCJdID0gbWFjID8ga2V5TWFwLm1hY0RlZmF1bHQgOiBrZXlNYXAucGNEZWZhdWx0O1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUtleU5hbWUobmFtZSkge1xuICAgICAgdmFyIHBhcnRzID0gbmFtZS5zcGxpdCgvLSg/ISQpLyk7XG4gICAgICBuYW1lID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgICB2YXIgYWx0LCBjdHJsLCBzaGlmdCwgY21kO1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHBhcnRzLmxlbmd0aCAtIDE7IGkyKyspIHtcbiAgICAgICAgdmFyIG1vZCA9IHBhcnRzW2kyXTtcbiAgICAgICAgaWYgKC9eKGNtZHxtZXRhfG0pJC9pLnRlc3QobW9kKSkge1xuICAgICAgICAgIGNtZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoL15hKGx0KT8kL2kudGVzdChtb2QpKSB7XG4gICAgICAgICAgYWx0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICgvXihjfGN0cmx8Y29udHJvbCkkL2kudGVzdChtb2QpKSB7XG4gICAgICAgICAgY3RybCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoL15zKGhpZnQpPyQvaS50ZXN0KG1vZCkpIHtcbiAgICAgICAgICBzaGlmdCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIG1vZGlmaWVyIG5hbWU6IFwiICsgbW9kKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGFsdCkge1xuICAgICAgICBuYW1lID0gXCJBbHQtXCIgKyBuYW1lO1xuICAgICAgfVxuICAgICAgaWYgKGN0cmwpIHtcbiAgICAgICAgbmFtZSA9IFwiQ3RybC1cIiArIG5hbWU7XG4gICAgICB9XG4gICAgICBpZiAoY21kKSB7XG4gICAgICAgIG5hbWUgPSBcIkNtZC1cIiArIG5hbWU7XG4gICAgICB9XG4gICAgICBpZiAoc2hpZnQpIHtcbiAgICAgICAgbmFtZSA9IFwiU2hpZnQtXCIgKyBuYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuICAgIF9fbmFtZShub3JtYWxpemVLZXlOYW1lLCBcIm5vcm1hbGl6ZUtleU5hbWVcIik7XG4gICAgZnVuY3Rpb24gbm9ybWFsaXplS2V5TWFwKGtleW1hcCkge1xuICAgICAgdmFyIGNvcHkgPSB7fTtcbiAgICAgIGZvciAodmFyIGtleW5hbWUgaW4ga2V5bWFwKSB7XG4gICAgICAgIGlmIChrZXltYXAuaGFzT3duUHJvcGVydHkoa2V5bmFtZSkpIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSBrZXltYXBba2V5bmFtZV07XG4gICAgICAgICAgaWYgKC9eKG5hbWV8ZmFsbHRocm91Z2h8KGRlfGF0KXRhY2gpJC8udGVzdChrZXluYW1lKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YWx1ZSA9PSBcIi4uLlwiKSB7XG4gICAgICAgICAgICBkZWxldGUga2V5bWFwW2tleW5hbWVdO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBrZXlzID0gbWFwKGtleW5hbWUuc3BsaXQoXCIgXCIpLCBub3JtYWxpemVLZXlOYW1lKTtcbiAgICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwga2V5cy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICAgIHZhciB2YWwgPSB2b2lkIDAsIG5hbWUgPSB2b2lkIDA7XG4gICAgICAgICAgICBpZiAoaTIgPT0ga2V5cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIG5hbWUgPSBrZXlzLmpvaW4oXCIgXCIpO1xuICAgICAgICAgICAgICB2YWwgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5hbWUgPSBrZXlzLnNsaWNlKDAsIGkyICsgMSkuam9pbihcIiBcIik7XG4gICAgICAgICAgICAgIHZhbCA9IFwiLi4uXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcHJldiA9IGNvcHlbbmFtZV07XG4gICAgICAgICAgICBpZiAoIXByZXYpIHtcbiAgICAgICAgICAgICAgY29weVtuYW1lXSA9IHZhbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldiAhPSB2YWwpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW5jb25zaXN0ZW50IGJpbmRpbmdzIGZvciBcIiArIG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUga2V5bWFwW2tleW5hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBwcm9wMiBpbiBjb3B5KSB7XG4gICAgICAgIGtleW1hcFtwcm9wMl0gPSBjb3B5W3Byb3AyXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBrZXltYXA7XG4gICAgfVxuICAgIF9fbmFtZShub3JtYWxpemVLZXlNYXAsIFwibm9ybWFsaXplS2V5TWFwXCIpO1xuICAgIGZ1bmN0aW9uIGxvb2t1cEtleShrZXksIG1hcDIsIGhhbmRsZSwgY29udGV4dCkge1xuICAgICAgbWFwMiA9IGdldEtleU1hcChtYXAyKTtcbiAgICAgIHZhciBmb3VuZCA9IG1hcDIuY2FsbCA/IG1hcDIuY2FsbChrZXksIGNvbnRleHQpIDogbWFwMltrZXldO1xuICAgICAgaWYgKGZvdW5kID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gXCJub3RoaW5nXCI7XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQgPT09IFwiLi4uXCIpIHtcbiAgICAgICAgcmV0dXJuIFwibXVsdGlcIjtcbiAgICAgIH1cbiAgICAgIGlmIChmb3VuZCAhPSBudWxsICYmIGhhbmRsZShmb3VuZCkpIHtcbiAgICAgICAgcmV0dXJuIFwiaGFuZGxlZFwiO1xuICAgICAgfVxuICAgICAgaWYgKG1hcDIuZmFsbHRocm91Z2gpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChtYXAyLmZhbGx0aHJvdWdoKSAhPSBcIltvYmplY3QgQXJyYXldXCIpIHtcbiAgICAgICAgICByZXR1cm4gbG9va3VwS2V5KGtleSwgbWFwMi5mYWxsdGhyb3VnaCwgaGFuZGxlLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgbWFwMi5mYWxsdGhyb3VnaC5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gbG9va3VwS2V5KGtleSwgbWFwMi5mYWxsdGhyb3VnaFtpMl0sIGhhbmRsZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGxvb2t1cEtleSwgXCJsb29rdXBLZXlcIik7XG4gICAgZnVuY3Rpb24gaXNNb2RpZmllcktleSh2YWx1ZSkge1xuICAgICAgdmFyIG5hbWUgPSB0eXBlb2YgdmFsdWUgPT0gXCJzdHJpbmdcIiA/IHZhbHVlIDoga2V5TmFtZXNbdmFsdWUua2V5Q29kZV07XG4gICAgICByZXR1cm4gbmFtZSA9PSBcIkN0cmxcIiB8fCBuYW1lID09IFwiQWx0XCIgfHwgbmFtZSA9PSBcIlNoaWZ0XCIgfHwgbmFtZSA9PSBcIk1vZFwiO1xuICAgIH1cbiAgICBfX25hbWUoaXNNb2RpZmllcktleSwgXCJpc01vZGlmaWVyS2V5XCIpO1xuICAgIGZ1bmN0aW9uIGFkZE1vZGlmaWVyTmFtZXMobmFtZSwgZXZlbnQsIG5vU2hpZnQpIHtcbiAgICAgIHZhciBiYXNlID0gbmFtZTtcbiAgICAgIGlmIChldmVudC5hbHRLZXkgJiYgYmFzZSAhPSBcIkFsdFwiKSB7XG4gICAgICAgIG5hbWUgPSBcIkFsdC1cIiArIG5hbWU7XG4gICAgICB9XG4gICAgICBpZiAoKGZsaXBDdHJsQ21kID8gZXZlbnQubWV0YUtleSA6IGV2ZW50LmN0cmxLZXkpICYmIGJhc2UgIT0gXCJDdHJsXCIpIHtcbiAgICAgICAgbmFtZSA9IFwiQ3RybC1cIiArIG5hbWU7XG4gICAgICB9XG4gICAgICBpZiAoKGZsaXBDdHJsQ21kID8gZXZlbnQuY3RybEtleSA6IGV2ZW50Lm1ldGFLZXkpICYmIGJhc2UgIT0gXCJNb2RcIikge1xuICAgICAgICBuYW1lID0gXCJDbWQtXCIgKyBuYW1lO1xuICAgICAgfVxuICAgICAgaWYgKCFub1NoaWZ0ICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGJhc2UgIT0gXCJTaGlmdFwiKSB7XG4gICAgICAgIG5hbWUgPSBcIlNoaWZ0LVwiICsgbmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cbiAgICBfX25hbWUoYWRkTW9kaWZpZXJOYW1lcywgXCJhZGRNb2RpZmllck5hbWVzXCIpO1xuICAgIGZ1bmN0aW9uIGtleU5hbWUoZXZlbnQsIG5vU2hpZnQpIHtcbiAgICAgIGlmIChwcmVzdG8gJiYgZXZlbnQua2V5Q29kZSA9PSAzNCAmJiBldmVudFtcImNoYXJcIl0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIG5hbWUgPSBrZXlOYW1lc1tldmVudC5rZXlDb2RlXTtcbiAgICAgIGlmIChuYW1lID09IG51bGwgfHwgZXZlbnQuYWx0R3JhcGhLZXkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT0gMyAmJiBldmVudC5jb2RlKSB7XG4gICAgICAgIG5hbWUgPSBldmVudC5jb2RlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFkZE1vZGlmaWVyTmFtZXMobmFtZSwgZXZlbnQsIG5vU2hpZnQpO1xuICAgIH1cbiAgICBfX25hbWUoa2V5TmFtZSwgXCJrZXlOYW1lXCIpO1xuICAgIGZ1bmN0aW9uIGdldEtleU1hcCh2YWwpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsID09IFwic3RyaW5nXCIgPyBrZXlNYXBbdmFsXSA6IHZhbDtcbiAgICB9XG4gICAgX19uYW1lKGdldEtleU1hcCwgXCJnZXRLZXlNYXBcIik7XG4gICAgZnVuY3Rpb24gZGVsZXRlTmVhclNlbGVjdGlvbihjbSwgY29tcHV0ZSkge1xuICAgICAgdmFyIHJhbmdlcyA9IGNtLmRvYy5zZWwucmFuZ2VzLCBraWxsID0gW107XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgcmFuZ2VzLmxlbmd0aDsgaTIrKykge1xuICAgICAgICB2YXIgdG9LaWxsID0gY29tcHV0ZShyYW5nZXNbaTJdKTtcbiAgICAgICAgd2hpbGUgKGtpbGwubGVuZ3RoICYmIGNtcCh0b0tpbGwuZnJvbSwgbHN0KGtpbGwpLnRvKSA8PSAwKSB7XG4gICAgICAgICAgdmFyIHJlcGxhY2VkID0ga2lsbC5wb3AoKTtcbiAgICAgICAgICBpZiAoY21wKHJlcGxhY2VkLmZyb20sIHRvS2lsbC5mcm9tKSA8IDApIHtcbiAgICAgICAgICAgIHRvS2lsbC5mcm9tID0gcmVwbGFjZWQuZnJvbTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBraWxsLnB1c2godG9LaWxsKTtcbiAgICAgIH1cbiAgICAgIHJ1bkluT3AoY20sIGZ1bmN0aW9uKCkge1xuICAgICAgICBmb3IgKHZhciBpMyA9IGtpbGwubGVuZ3RoIC0gMTsgaTMgPj0gMDsgaTMtLSkge1xuICAgICAgICAgIHJlcGxhY2VSYW5nZShjbS5kb2MsIFwiXCIsIGtpbGxbaTNdLmZyb20sIGtpbGxbaTNdLnRvLCBcIitkZWxldGVcIik7XG4gICAgICAgIH1cbiAgICAgICAgZW5zdXJlQ3Vyc29yVmlzaWJsZShjbSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgX19uYW1lKGRlbGV0ZU5lYXJTZWxlY3Rpb24sIFwiZGVsZXRlTmVhclNlbGVjdGlvblwiKTtcbiAgICBmdW5jdGlvbiBtb3ZlQ2hhckxvZ2ljYWxseShsaW5lLCBjaCwgZGlyKSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gc2tpcEV4dGVuZGluZ0NoYXJzKGxpbmUudGV4dCwgY2ggKyBkaXIsIGRpcik7XG4gICAgICByZXR1cm4gdGFyZ2V0IDwgMCB8fCB0YXJnZXQgPiBsaW5lLnRleHQubGVuZ3RoID8gbnVsbCA6IHRhcmdldDtcbiAgICB9XG4gICAgX19uYW1lKG1vdmVDaGFyTG9naWNhbGx5LCBcIm1vdmVDaGFyTG9naWNhbGx5XCIpO1xuICAgIGZ1bmN0aW9uIG1vdmVMb2dpY2FsbHkobGluZSwgc3RhcnQsIGRpcikge1xuICAgICAgdmFyIGNoID0gbW92ZUNoYXJMb2dpY2FsbHkobGluZSwgc3RhcnQuY2gsIGRpcik7XG4gICAgICByZXR1cm4gY2ggPT0gbnVsbCA/IG51bGwgOiBuZXcgUG9zKHN0YXJ0LmxpbmUsIGNoLCBkaXIgPCAwID8gXCJhZnRlclwiIDogXCJiZWZvcmVcIik7XG4gICAgfVxuICAgIF9fbmFtZShtb3ZlTG9naWNhbGx5LCBcIm1vdmVMb2dpY2FsbHlcIik7XG4gICAgZnVuY3Rpb24gZW5kT2ZMaW5lKHZpc3VhbGx5LCBjbSwgbGluZU9iaiwgbGluZU5vMiwgZGlyKSB7XG4gICAgICBpZiAodmlzdWFsbHkpIHtcbiAgICAgICAgaWYgKGNtLmRvYy5kaXJlY3Rpb24gPT0gXCJydGxcIikge1xuICAgICAgICAgIGRpciA9IC1kaXI7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG9yZGVyID0gZ2V0T3JkZXIobGluZU9iaiwgY20uZG9jLmRpcmVjdGlvbik7XG4gICAgICAgIGlmIChvcmRlcikge1xuICAgICAgICAgIHZhciBwYXJ0ID0gZGlyIDwgMCA/IGxzdChvcmRlcikgOiBvcmRlclswXTtcbiAgICAgICAgICB2YXIgbW92ZUluU3RvcmFnZU9yZGVyID0gZGlyIDwgMCA9PSAocGFydC5sZXZlbCA9PSAxKTtcbiAgICAgICAgICB2YXIgc3RpY2t5ID0gbW92ZUluU3RvcmFnZU9yZGVyID8gXCJhZnRlclwiIDogXCJiZWZvcmVcIjtcbiAgICAgICAgICB2YXIgY2g7XG4gICAgICAgICAgaWYgKHBhcnQubGV2ZWwgPiAwIHx8IGNtLmRvYy5kaXJlY3Rpb24gPT0gXCJydGxcIikge1xuICAgICAgICAgICAgdmFyIHByZXAgPSBwcmVwYXJlTWVhc3VyZUZvckxpbmUoY20sIGxpbmVPYmopO1xuICAgICAgICAgICAgY2ggPSBkaXIgPCAwID8gbGluZU9iai50ZXh0Lmxlbmd0aCAtIDEgOiAwO1xuICAgICAgICAgICAgdmFyIHRhcmdldFRvcCA9IG1lYXN1cmVDaGFyUHJlcGFyZWQoY20sIHByZXAsIGNoKS50b3A7XG4gICAgICAgICAgICBjaCA9IGZpbmRGaXJzdChmdW5jdGlvbihjaDIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG1lYXN1cmVDaGFyUHJlcGFyZWQoY20sIHByZXAsIGNoMikudG9wID09IHRhcmdldFRvcDtcbiAgICAgICAgICAgIH0sIGRpciA8IDAgPT0gKHBhcnQubGV2ZWwgPT0gMSkgPyBwYXJ0LmZyb20gOiBwYXJ0LnRvIC0gMSwgY2gpO1xuICAgICAgICAgICAgaWYgKHN0aWNreSA9PSBcImJlZm9yZVwiKSB7XG4gICAgICAgICAgICAgIGNoID0gbW92ZUNoYXJMb2dpY2FsbHkobGluZU9iaiwgY2gsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaCA9IGRpciA8IDAgPyBwYXJ0LnRvIDogcGFydC5mcm9tO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFBvcyhsaW5lTm8yLCBjaCwgc3RpY2t5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQb3MobGluZU5vMiwgZGlyIDwgMCA/IGxpbmVPYmoudGV4dC5sZW5ndGggOiAwLCBkaXIgPCAwID8gXCJiZWZvcmVcIiA6IFwiYWZ0ZXJcIik7XG4gICAgfVxuICAgIF9fbmFtZShlbmRPZkxpbmUsIFwiZW5kT2ZMaW5lXCIpO1xuICAgIGZ1bmN0aW9uIG1vdmVWaXN1YWxseShjbSwgbGluZSwgc3RhcnQsIGRpcikge1xuICAgICAgdmFyIGJpZGkgPSBnZXRPcmRlcihsaW5lLCBjbS5kb2MuZGlyZWN0aW9uKTtcbiAgICAgIGlmICghYmlkaSkge1xuICAgICAgICByZXR1cm4gbW92ZUxvZ2ljYWxseShsaW5lLCBzdGFydCwgZGlyKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydC5jaCA+PSBsaW5lLnRleHQubGVuZ3RoKSB7XG4gICAgICAgIHN0YXJ0LmNoID0gbGluZS50ZXh0Lmxlbmd0aDtcbiAgICAgICAgc3RhcnQuc3RpY2t5ID0gXCJiZWZvcmVcIjtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnQuY2ggPD0gMCkge1xuICAgICAgICBzdGFydC5jaCA9IDA7XG4gICAgICAgIHN0YXJ0LnN0aWNreSA9IFwiYWZ0ZXJcIjtcbiAgICAgIH1cbiAgICAgIHZhciBwYXJ0UG9zID0gZ2V0QmlkaVBhcnRBdChiaWRpLCBzdGFydC5jaCwgc3RhcnQuc3RpY2t5KSwgcGFydCA9IGJpZGlbcGFydFBvc107XG4gICAgICBpZiAoY20uZG9jLmRpcmVjdGlvbiA9PSBcImx0clwiICYmIHBhcnQubGV2ZWwgJSAyID09IDAgJiYgKGRpciA+IDAgPyBwYXJ0LnRvID4gc3RhcnQuY2ggOiBwYXJ0LmZyb20gPCBzdGFydC5jaCkpIHtcbiAgICAgICAgcmV0dXJuIG1vdmVMb2dpY2FsbHkobGluZSwgc3RhcnQsIGRpcik7XG4gICAgICB9XG4gICAgICB2YXIgbXYgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKHBvcywgZGlyMikge1xuICAgICAgICByZXR1cm4gbW92ZUNoYXJMb2dpY2FsbHkobGluZSwgcG9zIGluc3RhbmNlb2YgUG9zID8gcG9zLmNoIDogcG9zLCBkaXIyKTtcbiAgICAgIH0sIFwibXZcIik7XG4gICAgICB2YXIgcHJlcDtcbiAgICAgIHZhciBnZXRXcmFwcGVkTGluZUV4dGVudCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oY2gyKSB7XG4gICAgICAgIGlmICghY20ub3B0aW9ucy5saW5lV3JhcHBpbmcpIHtcbiAgICAgICAgICByZXR1cm4geyBiZWdpbjogMCwgZW5kOiBsaW5lLnRleHQubGVuZ3RoIH07XG4gICAgICAgIH1cbiAgICAgICAgcHJlcCA9IHByZXAgfHwgcHJlcGFyZU1lYXN1cmVGb3JMaW5lKGNtLCBsaW5lKTtcbiAgICAgICAgcmV0dXJuIHdyYXBwZWRMaW5lRXh0ZW50Q2hhcihjbSwgbGluZSwgcHJlcCwgY2gyKTtcbiAgICAgIH0sIFwiZ2V0V3JhcHBlZExpbmVFeHRlbnRcIik7XG4gICAgICB2YXIgd3JhcHBlZExpbmVFeHRlbnQyID0gZ2V0V3JhcHBlZExpbmVFeHRlbnQoc3RhcnQuc3RpY2t5ID09IFwiYmVmb3JlXCIgPyBtdihzdGFydCwgLTEpIDogc3RhcnQuY2gpO1xuICAgICAgaWYgKGNtLmRvYy5kaXJlY3Rpb24gPT0gXCJydGxcIiB8fCBwYXJ0LmxldmVsID09IDEpIHtcbiAgICAgICAgdmFyIG1vdmVJblN0b3JhZ2VPcmRlciA9IHBhcnQubGV2ZWwgPT0gMSA9PSBkaXIgPCAwO1xuICAgICAgICB2YXIgY2ggPSBtdihzdGFydCwgbW92ZUluU3RvcmFnZU9yZGVyID8gMSA6IC0xKTtcbiAgICAgICAgaWYgKGNoICE9IG51bGwgJiYgKCFtb3ZlSW5TdG9yYWdlT3JkZXIgPyBjaCA+PSBwYXJ0LmZyb20gJiYgY2ggPj0gd3JhcHBlZExpbmVFeHRlbnQyLmJlZ2luIDogY2ggPD0gcGFydC50byAmJiBjaCA8PSB3cmFwcGVkTGluZUV4dGVudDIuZW5kKSkge1xuICAgICAgICAgIHZhciBzdGlja3kgPSBtb3ZlSW5TdG9yYWdlT3JkZXIgPyBcImJlZm9yZVwiIDogXCJhZnRlclwiO1xuICAgICAgICAgIHJldHVybiBuZXcgUG9zKHN0YXJ0LmxpbmUsIGNoLCBzdGlja3kpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgc2VhcmNoSW5WaXN1YWxMaW5lID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihwYXJ0UG9zMiwgZGlyMiwgd3JhcHBlZExpbmVFeHRlbnQzKSB7XG4gICAgICAgIHZhciBnZXRSZXMgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKGNoMywgbW92ZUluU3RvcmFnZU9yZGVyMykge1xuICAgICAgICAgIHJldHVybiBtb3ZlSW5TdG9yYWdlT3JkZXIzID8gbmV3IFBvcyhzdGFydC5saW5lLCBtdihjaDMsIDEpLCBcImJlZm9yZVwiKSA6IG5ldyBQb3Moc3RhcnQubGluZSwgY2gzLCBcImFmdGVyXCIpO1xuICAgICAgICB9LCBcImdldFJlc1wiKTtcbiAgICAgICAgZm9yICg7IHBhcnRQb3MyID49IDAgJiYgcGFydFBvczIgPCBiaWRpLmxlbmd0aDsgcGFydFBvczIgKz0gZGlyMikge1xuICAgICAgICAgIHZhciBwYXJ0MiA9IGJpZGlbcGFydFBvczJdO1xuICAgICAgICAgIHZhciBtb3ZlSW5TdG9yYWdlT3JkZXIyID0gZGlyMiA+IDAgPT0gKHBhcnQyLmxldmVsICE9IDEpO1xuICAgICAgICAgIHZhciBjaDIgPSBtb3ZlSW5TdG9yYWdlT3JkZXIyID8gd3JhcHBlZExpbmVFeHRlbnQzLmJlZ2luIDogbXYod3JhcHBlZExpbmVFeHRlbnQzLmVuZCwgLTEpO1xuICAgICAgICAgIGlmIChwYXJ0Mi5mcm9tIDw9IGNoMiAmJiBjaDIgPCBwYXJ0Mi50bykge1xuICAgICAgICAgICAgcmV0dXJuIGdldFJlcyhjaDIsIG1vdmVJblN0b3JhZ2VPcmRlcjIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjaDIgPSBtb3ZlSW5TdG9yYWdlT3JkZXIyID8gcGFydDIuZnJvbSA6IG12KHBhcnQyLnRvLCAtMSk7XG4gICAgICAgICAgaWYgKHdyYXBwZWRMaW5lRXh0ZW50My5iZWdpbiA8PSBjaDIgJiYgY2gyIDwgd3JhcHBlZExpbmVFeHRlbnQzLmVuZCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldFJlcyhjaDIsIG1vdmVJblN0b3JhZ2VPcmRlcjIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgXCJzZWFyY2hJblZpc3VhbExpbmVcIik7XG4gICAgICB2YXIgcmVzID0gc2VhcmNoSW5WaXN1YWxMaW5lKHBhcnRQb3MgKyBkaXIsIGRpciwgd3JhcHBlZExpbmVFeHRlbnQyKTtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH1cbiAgICAgIHZhciBuZXh0Q2ggPSBkaXIgPiAwID8gd3JhcHBlZExpbmVFeHRlbnQyLmVuZCA6IG12KHdyYXBwZWRMaW5lRXh0ZW50Mi5iZWdpbiwgLTEpO1xuICAgICAgaWYgKG5leHRDaCAhPSBudWxsICYmICEoZGlyID4gMCAmJiBuZXh0Q2ggPT0gbGluZS50ZXh0Lmxlbmd0aCkpIHtcbiAgICAgICAgcmVzID0gc2VhcmNoSW5WaXN1YWxMaW5lKGRpciA+IDAgPyAwIDogYmlkaS5sZW5ndGggLSAxLCBkaXIsIGdldFdyYXBwZWRMaW5lRXh0ZW50KG5leHRDaCkpO1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIF9fbmFtZShtb3ZlVmlzdWFsbHksIFwibW92ZVZpc3VhbGx5XCIpO1xuICAgIHZhciBjb21tYW5kcyA9IHtcbiAgICAgIHNlbGVjdEFsbCxcbiAgICAgIHNpbmdsZVNlbGVjdGlvbjogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLnNldFNlbGVjdGlvbihjbS5nZXRDdXJzb3IoXCJhbmNob3JcIiksIGNtLmdldEN1cnNvcihcImhlYWRcIiksIHNlbF9kb250U2Nyb2xsKTtcbiAgICAgIH0sXG4gICAgICBraWxsTGluZTogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGRlbGV0ZU5lYXJTZWxlY3Rpb24oY20sIGZ1bmN0aW9uKHJhbmdlMikge1xuICAgICAgICAgIGlmIChyYW5nZTIuZW1wdHkoKSkge1xuICAgICAgICAgICAgdmFyIGxlbiA9IGdldExpbmUoY20uZG9jLCByYW5nZTIuaGVhZC5saW5lKS50ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChyYW5nZTIuaGVhZC5jaCA9PSBsZW4gJiYgcmFuZ2UyLmhlYWQubGluZSA8IGNtLmxhc3RMaW5lKCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgZnJvbTogcmFuZ2UyLmhlYWQsIHRvOiBQb3MocmFuZ2UyLmhlYWQubGluZSArIDEsIDApIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4geyBmcm9tOiByYW5nZTIuaGVhZCwgdG86IFBvcyhyYW5nZTIuaGVhZC5saW5lLCBsZW4pIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7IGZyb206IHJhbmdlMi5mcm9tKCksIHRvOiByYW5nZTIudG8oKSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZGVsZXRlTGluZTogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGRlbGV0ZU5lYXJTZWxlY3Rpb24oY20sIGZ1bmN0aW9uKHJhbmdlMikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmcm9tOiBQb3MocmFuZ2UyLmZyb20oKS5saW5lLCAwKSxcbiAgICAgICAgICAgIHRvOiBjbGlwUG9zKGNtLmRvYywgUG9zKHJhbmdlMi50bygpLmxpbmUgKyAxLCAwKSlcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBkZWxMaW5lTGVmdDogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGRlbGV0ZU5lYXJTZWxlY3Rpb24oY20sIGZ1bmN0aW9uKHJhbmdlMikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmcm9tOiBQb3MocmFuZ2UyLmZyb20oKS5saW5lLCAwKSxcbiAgICAgICAgICAgIHRvOiByYW5nZTIuZnJvbSgpXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZGVsV3JhcHBlZExpbmVMZWZ0OiBmdW5jdGlvbihjbSkge1xuICAgICAgICByZXR1cm4gZGVsZXRlTmVhclNlbGVjdGlvbihjbSwgZnVuY3Rpb24ocmFuZ2UyKSB7XG4gICAgICAgICAgdmFyIHRvcCA9IGNtLmNoYXJDb29yZHMocmFuZ2UyLmhlYWQsIFwiZGl2XCIpLnRvcCArIDU7XG4gICAgICAgICAgdmFyIGxlZnRQb3MgPSBjbS5jb29yZHNDaGFyKHsgbGVmdDogMCwgdG9wIH0sIFwiZGl2XCIpO1xuICAgICAgICAgIHJldHVybiB7IGZyb206IGxlZnRQb3MsIHRvOiByYW5nZTIuZnJvbSgpIH07XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGRlbFdyYXBwZWRMaW5lUmlnaHQ6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBkZWxldGVOZWFyU2VsZWN0aW9uKGNtLCBmdW5jdGlvbihyYW5nZTIpIHtcbiAgICAgICAgICB2YXIgdG9wID0gY20uY2hhckNvb3JkcyhyYW5nZTIuaGVhZCwgXCJkaXZcIikudG9wICsgNTtcbiAgICAgICAgICB2YXIgcmlnaHRQb3MgPSBjbS5jb29yZHNDaGFyKHsgbGVmdDogY20uZGlzcGxheS5saW5lRGl2Lm9mZnNldFdpZHRoICsgMTAwLCB0b3AgfSwgXCJkaXZcIik7XG4gICAgICAgICAgcmV0dXJuIHsgZnJvbTogcmFuZ2UyLmZyb20oKSwgdG86IHJpZ2h0UG9zIH07XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHVuZG86IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS51bmRvKCk7XG4gICAgICB9LFxuICAgICAgcmVkbzogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLnJlZG8oKTtcbiAgICAgIH0sXG4gICAgICB1bmRvU2VsZWN0aW9uOiBmdW5jdGlvbihjbSkge1xuICAgICAgICByZXR1cm4gY20udW5kb1NlbGVjdGlvbigpO1xuICAgICAgfSxcbiAgICAgIHJlZG9TZWxlY3Rpb246IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5yZWRvU2VsZWN0aW9uKCk7XG4gICAgICB9LFxuICAgICAgZ29Eb2NTdGFydDogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLmV4dGVuZFNlbGVjdGlvbihQb3MoY20uZmlyc3RMaW5lKCksIDApKTtcbiAgICAgIH0sXG4gICAgICBnb0RvY0VuZDogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLmV4dGVuZFNlbGVjdGlvbihQb3MoY20ubGFzdExpbmUoKSkpO1xuICAgICAgfSxcbiAgICAgIGdvTGluZVN0YXJ0OiBmdW5jdGlvbihjbSkge1xuICAgICAgICByZXR1cm4gY20uZXh0ZW5kU2VsZWN0aW9uc0J5KGZ1bmN0aW9uKHJhbmdlMikge1xuICAgICAgICAgIHJldHVybiBsaW5lU3RhcnQoY20sIHJhbmdlMi5oZWFkLmxpbmUpO1xuICAgICAgICB9LCB7IG9yaWdpbjogXCIrbW92ZVwiLCBiaWFzOiAxIH0pO1xuICAgICAgfSxcbiAgICAgIGdvTGluZVN0YXJ0U21hcnQ6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5leHRlbmRTZWxlY3Rpb25zQnkoZnVuY3Rpb24ocmFuZ2UyKSB7XG4gICAgICAgICAgcmV0dXJuIGxpbmVTdGFydFNtYXJ0KGNtLCByYW5nZTIuaGVhZCk7XG4gICAgICAgIH0sIHsgb3JpZ2luOiBcIittb3ZlXCIsIGJpYXM6IDEgfSk7XG4gICAgICB9LFxuICAgICAgZ29MaW5lRW5kOiBmdW5jdGlvbihjbSkge1xuICAgICAgICByZXR1cm4gY20uZXh0ZW5kU2VsZWN0aW9uc0J5KGZ1bmN0aW9uKHJhbmdlMikge1xuICAgICAgICAgIHJldHVybiBsaW5lRW5kKGNtLCByYW5nZTIuaGVhZC5saW5lKTtcbiAgICAgICAgfSwgeyBvcmlnaW46IFwiK21vdmVcIiwgYmlhczogLTEgfSk7XG4gICAgICB9LFxuICAgICAgZ29MaW5lUmlnaHQ6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5leHRlbmRTZWxlY3Rpb25zQnkoZnVuY3Rpb24ocmFuZ2UyKSB7XG4gICAgICAgICAgdmFyIHRvcCA9IGNtLmN1cnNvckNvb3JkcyhyYW5nZTIuaGVhZCwgXCJkaXZcIikudG9wICsgNTtcbiAgICAgICAgICByZXR1cm4gY20uY29vcmRzQ2hhcih7IGxlZnQ6IGNtLmRpc3BsYXkubGluZURpdi5vZmZzZXRXaWR0aCArIDEwMCwgdG9wIH0sIFwiZGl2XCIpO1xuICAgICAgICB9LCBzZWxfbW92ZSk7XG4gICAgICB9LFxuICAgICAgZ29MaW5lTGVmdDogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbihyYW5nZTIpIHtcbiAgICAgICAgICB2YXIgdG9wID0gY20uY3Vyc29yQ29vcmRzKHJhbmdlMi5oZWFkLCBcImRpdlwiKS50b3AgKyA1O1xuICAgICAgICAgIHJldHVybiBjbS5jb29yZHNDaGFyKHsgbGVmdDogMCwgdG9wIH0sIFwiZGl2XCIpO1xuICAgICAgICB9LCBzZWxfbW92ZSk7XG4gICAgICB9LFxuICAgICAgZ29MaW5lTGVmdFNtYXJ0OiBmdW5jdGlvbihjbSkge1xuICAgICAgICByZXR1cm4gY20uZXh0ZW5kU2VsZWN0aW9uc0J5KGZ1bmN0aW9uKHJhbmdlMikge1xuICAgICAgICAgIHZhciB0b3AgPSBjbS5jdXJzb3JDb29yZHMocmFuZ2UyLmhlYWQsIFwiZGl2XCIpLnRvcCArIDU7XG4gICAgICAgICAgdmFyIHBvcyA9IGNtLmNvb3Jkc0NoYXIoeyBsZWZ0OiAwLCB0b3AgfSwgXCJkaXZcIik7XG4gICAgICAgICAgaWYgKHBvcy5jaCA8IGNtLmdldExpbmUocG9zLmxpbmUpLnNlYXJjaCgvXFxTLykpIHtcbiAgICAgICAgICAgIHJldHVybiBsaW5lU3RhcnRTbWFydChjbSwgcmFuZ2UyLmhlYWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcG9zO1xuICAgICAgICB9LCBzZWxfbW92ZSk7XG4gICAgICB9LFxuICAgICAgZ29MaW5lVXA6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5tb3ZlVigtMSwgXCJsaW5lXCIpO1xuICAgICAgfSxcbiAgICAgIGdvTGluZURvd246IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5tb3ZlVigxLCBcImxpbmVcIik7XG4gICAgICB9LFxuICAgICAgZ29QYWdlVXA6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5tb3ZlVigtMSwgXCJwYWdlXCIpO1xuICAgICAgfSxcbiAgICAgIGdvUGFnZURvd246IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5tb3ZlVigxLCBcInBhZ2VcIik7XG4gICAgICB9LFxuICAgICAgZ29DaGFyTGVmdDogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLm1vdmVIKC0xLCBcImNoYXJcIik7XG4gICAgICB9LFxuICAgICAgZ29DaGFyUmlnaHQ6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5tb3ZlSCgxLCBcImNoYXJcIik7XG4gICAgICB9LFxuICAgICAgZ29Db2x1bW5MZWZ0OiBmdW5jdGlvbihjbSkge1xuICAgICAgICByZXR1cm4gY20ubW92ZUgoLTEsIFwiY29sdW1uXCIpO1xuICAgICAgfSxcbiAgICAgIGdvQ29sdW1uUmlnaHQ6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5tb3ZlSCgxLCBcImNvbHVtblwiKTtcbiAgICAgIH0sXG4gICAgICBnb1dvcmRMZWZ0OiBmdW5jdGlvbihjbSkge1xuICAgICAgICByZXR1cm4gY20ubW92ZUgoLTEsIFwid29yZFwiKTtcbiAgICAgIH0sXG4gICAgICBnb0dyb3VwUmlnaHQ6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5tb3ZlSCgxLCBcImdyb3VwXCIpO1xuICAgICAgfSxcbiAgICAgIGdvR3JvdXBMZWZ0OiBmdW5jdGlvbihjbSkge1xuICAgICAgICByZXR1cm4gY20ubW92ZUgoLTEsIFwiZ3JvdXBcIik7XG4gICAgICB9LFxuICAgICAgZ29Xb3JkUmlnaHQ6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5tb3ZlSCgxLCBcIndvcmRcIik7XG4gICAgICB9LFxuICAgICAgZGVsQ2hhckJlZm9yZTogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLmRlbGV0ZUgoLTEsIFwiY29kZXBvaW50XCIpO1xuICAgICAgfSxcbiAgICAgIGRlbENoYXJBZnRlcjogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLmRlbGV0ZUgoMSwgXCJjaGFyXCIpO1xuICAgICAgfSxcbiAgICAgIGRlbFdvcmRCZWZvcmU6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5kZWxldGVIKC0xLCBcIndvcmRcIik7XG4gICAgICB9LFxuICAgICAgZGVsV29yZEFmdGVyOiBmdW5jdGlvbihjbSkge1xuICAgICAgICByZXR1cm4gY20uZGVsZXRlSCgxLCBcIndvcmRcIik7XG4gICAgICB9LFxuICAgICAgZGVsR3JvdXBCZWZvcmU6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5kZWxldGVIKC0xLCBcImdyb3VwXCIpO1xuICAgICAgfSxcbiAgICAgIGRlbEdyb3VwQWZ0ZXI6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5kZWxldGVIKDEsIFwiZ3JvdXBcIik7XG4gICAgICB9LFxuICAgICAgaW5kZW50QXV0bzogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLmluZGVudFNlbGVjdGlvbihcInNtYXJ0XCIpO1xuICAgICAgfSxcbiAgICAgIGluZGVudE1vcmU6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS5pbmRlbnRTZWxlY3Rpb24oXCJhZGRcIik7XG4gICAgICB9LFxuICAgICAgaW5kZW50TGVzczogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLmluZGVudFNlbGVjdGlvbihcInN1YnRyYWN0XCIpO1xuICAgICAgfSxcbiAgICAgIGluc2VydFRhYjogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLnJlcGxhY2VTZWxlY3Rpb24oXCJcdFwiKTtcbiAgICAgIH0sXG4gICAgICBpbnNlcnRTb2Z0VGFiOiBmdW5jdGlvbihjbSkge1xuICAgICAgICB2YXIgc3BhY2VzID0gW10sIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCksIHRhYlNpemUgPSBjbS5vcHRpb25zLnRhYlNpemU7XG4gICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCByYW5nZXMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgICAgdmFyIHBvcyA9IHJhbmdlc1tpMl0uZnJvbSgpO1xuICAgICAgICAgIHZhciBjb2wgPSBjb3VudENvbHVtbihjbS5nZXRMaW5lKHBvcy5saW5lKSwgcG9zLmNoLCB0YWJTaXplKTtcbiAgICAgICAgICBzcGFjZXMucHVzaChzcGFjZVN0cih0YWJTaXplIC0gY29sICUgdGFiU2l6ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNtLnJlcGxhY2VTZWxlY3Rpb25zKHNwYWNlcyk7XG4gICAgICB9LFxuICAgICAgZGVmYXVsdFRhYjogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgaWYgKGNtLnNvbWV0aGluZ1NlbGVjdGVkKCkpIHtcbiAgICAgICAgICBjbS5pbmRlbnRTZWxlY3Rpb24oXCJhZGRcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY20uZXhlY0NvbW1hbmQoXCJpbnNlcnRUYWJcIik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0cmFuc3Bvc2VDaGFyczogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIHJ1bkluT3AoY20sIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpLCBuZXdTZWwgPSBbXTtcbiAgICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgcmFuZ2VzLmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgICAgaWYgKCFyYW5nZXNbaTJdLmVtcHR5KCkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgY3VyID0gcmFuZ2VzW2kyXS5oZWFkLCBsaW5lID0gZ2V0TGluZShjbS5kb2MsIGN1ci5saW5lKS50ZXh0O1xuICAgICAgICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgICAgICAgaWYgKGN1ci5jaCA9PSBsaW5lLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGN1ciA9IG5ldyBQb3MoY3VyLmxpbmUsIGN1ci5jaCAtIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChjdXIuY2ggPiAwKSB7XG4gICAgICAgICAgICAgICAgY3VyID0gbmV3IFBvcyhjdXIubGluZSwgY3VyLmNoICsgMSk7XG4gICAgICAgICAgICAgICAgY20ucmVwbGFjZVJhbmdlKGxpbmUuY2hhckF0KGN1ci5jaCAtIDEpICsgbGluZS5jaGFyQXQoY3VyLmNoIC0gMiksIFBvcyhjdXIubGluZSwgY3VyLmNoIC0gMiksIGN1ciwgXCIrdHJhbnNwb3NlXCIpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1ci5saW5lID4gY20uZG9jLmZpcnN0KSB7XG4gICAgICAgICAgICAgICAgdmFyIHByZXYgPSBnZXRMaW5lKGNtLmRvYywgY3VyLmxpbmUgLSAxKS50ZXh0O1xuICAgICAgICAgICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgICAgICAgICBjdXIgPSBuZXcgUG9zKGN1ci5saW5lLCAxKTtcbiAgICAgICAgICAgICAgICAgIGNtLnJlcGxhY2VSYW5nZShsaW5lLmNoYXJBdCgwKSArIGNtLmRvYy5saW5lU2VwYXJhdG9yKCkgKyBwcmV2LmNoYXJBdChwcmV2Lmxlbmd0aCAtIDEpLCBQb3MoY3VyLmxpbmUgLSAxLCBwcmV2Lmxlbmd0aCAtIDEpLCBjdXIsIFwiK3RyYW5zcG9zZVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1NlbC5wdXNoKG5ldyBSYW5nZShjdXIsIGN1cikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjbS5zZXRTZWxlY3Rpb25zKG5ld1NlbCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIG5ld2xpbmVBbmRJbmRlbnQ6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBydW5Jbk9wKGNtLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgc2VscyA9IGNtLmxpc3RTZWxlY3Rpb25zKCk7XG4gICAgICAgICAgZm9yICh2YXIgaTIgPSBzZWxzLmxlbmd0aCAtIDE7IGkyID49IDA7IGkyLS0pIHtcbiAgICAgICAgICAgIGNtLnJlcGxhY2VSYW5nZShjbS5kb2MubGluZVNlcGFyYXRvcigpLCBzZWxzW2kyXS5hbmNob3IsIHNlbHNbaTJdLmhlYWQsIFwiK2lucHV0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZWxzID0gY20ubGlzdFNlbGVjdGlvbnMoKTtcbiAgICAgICAgICBmb3IgKHZhciBpJDEyID0gMDsgaSQxMiA8IHNlbHMubGVuZ3RoOyBpJDEyKyspIHtcbiAgICAgICAgICAgIGNtLmluZGVudExpbmUoc2Vsc1tpJDEyXS5mcm9tKCkubGluZSwgbnVsbCwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVuc3VyZUN1cnNvclZpc2libGUoY20pO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBvcGVuTGluZTogZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLnJlcGxhY2VTZWxlY3Rpb24oXCJcXG5cIiwgXCJzdGFydFwiKTtcbiAgICAgIH0sXG4gICAgICB0b2dnbGVPdmVyd3JpdGU6IGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiBjbS50b2dnbGVPdmVyd3JpdGUoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIGxpbmVTdGFydChjbSwgbGluZU4pIHtcbiAgICAgIHZhciBsaW5lID0gZ2V0TGluZShjbS5kb2MsIGxpbmVOKTtcbiAgICAgIHZhciB2aXN1YWwgPSB2aXN1YWxMaW5lKGxpbmUpO1xuICAgICAgaWYgKHZpc3VhbCAhPSBsaW5lKSB7XG4gICAgICAgIGxpbmVOID0gbGluZU5vKHZpc3VhbCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZW5kT2ZMaW5lKHRydWUsIGNtLCB2aXN1YWwsIGxpbmVOLCAxKTtcbiAgICB9XG4gICAgX19uYW1lKGxpbmVTdGFydCwgXCJsaW5lU3RhcnRcIik7XG4gICAgZnVuY3Rpb24gbGluZUVuZChjbSwgbGluZU4pIHtcbiAgICAgIHZhciBsaW5lID0gZ2V0TGluZShjbS5kb2MsIGxpbmVOKTtcbiAgICAgIHZhciB2aXN1YWwgPSB2aXN1YWxMaW5lRW5kKGxpbmUpO1xuICAgICAgaWYgKHZpc3VhbCAhPSBsaW5lKSB7XG4gICAgICAgIGxpbmVOID0gbGluZU5vKHZpc3VhbCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZW5kT2ZMaW5lKHRydWUsIGNtLCBsaW5lLCBsaW5lTiwgLTEpO1xuICAgIH1cbiAgICBfX25hbWUobGluZUVuZCwgXCJsaW5lRW5kXCIpO1xuICAgIGZ1bmN0aW9uIGxpbmVTdGFydFNtYXJ0KGNtLCBwb3MpIHtcbiAgICAgIHZhciBzdGFydCA9IGxpbmVTdGFydChjbSwgcG9zLmxpbmUpO1xuICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKGNtLmRvYywgc3RhcnQubGluZSk7XG4gICAgICB2YXIgb3JkZXIgPSBnZXRPcmRlcihsaW5lLCBjbS5kb2MuZGlyZWN0aW9uKTtcbiAgICAgIGlmICghb3JkZXIgfHwgb3JkZXJbMF0ubGV2ZWwgPT0gMCkge1xuICAgICAgICB2YXIgZmlyc3ROb25XUyA9IE1hdGgubWF4KHN0YXJ0LmNoLCBsaW5lLnRleHQuc2VhcmNoKC9cXFMvKSk7XG4gICAgICAgIHZhciBpbldTID0gcG9zLmxpbmUgPT0gc3RhcnQubGluZSAmJiBwb3MuY2ggPD0gZmlyc3ROb25XUyAmJiBwb3MuY2g7XG4gICAgICAgIHJldHVybiBQb3Moc3RhcnQubGluZSwgaW5XUyA/IDAgOiBmaXJzdE5vbldTLCBzdGFydC5zdGlja3kpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXJ0O1xuICAgIH1cbiAgICBfX25hbWUobGluZVN0YXJ0U21hcnQsIFwibGluZVN0YXJ0U21hcnRcIik7XG4gICAgZnVuY3Rpb24gZG9IYW5kbGVCaW5kaW5nKGNtLCBib3VuZCwgZHJvcFNoaWZ0KSB7XG4gICAgICBpZiAodHlwZW9mIGJvdW5kID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgYm91bmQgPSBjb21tYW5kc1tib3VuZF07XG4gICAgICAgIGlmICghYm91bmQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNtLmRpc3BsYXkuaW5wdXQuZW5zdXJlUG9sbGVkKCk7XG4gICAgICB2YXIgcHJldlNoaWZ0ID0gY20uZGlzcGxheS5zaGlmdCwgZG9uZSA9IGZhbHNlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGNtLmlzUmVhZE9ubHkoKSkge1xuICAgICAgICAgIGNtLnN0YXRlLnN1cHByZXNzRWRpdHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkcm9wU2hpZnQpIHtcbiAgICAgICAgICBjbS5kaXNwbGF5LnNoaWZ0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZG9uZSA9IGJvdW5kKGNtKSAhPSBQYXNzO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY20uZGlzcGxheS5zaGlmdCA9IHByZXZTaGlmdDtcbiAgICAgICAgY20uc3RhdGUuc3VwcHJlc3NFZGl0cyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRvbmU7XG4gICAgfVxuICAgIF9fbmFtZShkb0hhbmRsZUJpbmRpbmcsIFwiZG9IYW5kbGVCaW5kaW5nXCIpO1xuICAgIGZ1bmN0aW9uIGxvb2t1cEtleUZvckVkaXRvcihjbSwgbmFtZSwgaGFuZGxlKSB7XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgY20uc3RhdGUua2V5TWFwcy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGxvb2t1cEtleShuYW1lLCBjbS5zdGF0ZS5rZXlNYXBzW2kyXSwgaGFuZGxlLCBjbSk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY20ub3B0aW9ucy5leHRyYUtleXMgJiYgbG9va3VwS2V5KG5hbWUsIGNtLm9wdGlvbnMuZXh0cmFLZXlzLCBoYW5kbGUsIGNtKSB8fCBsb29rdXBLZXkobmFtZSwgY20ub3B0aW9ucy5rZXlNYXAsIGhhbmRsZSwgY20pO1xuICAgIH1cbiAgICBfX25hbWUobG9va3VwS2V5Rm9yRWRpdG9yLCBcImxvb2t1cEtleUZvckVkaXRvclwiKTtcbiAgICB2YXIgc3RvcFNlcSA9IG5ldyBEZWxheWVkKCk7XG4gICAgZnVuY3Rpb24gZGlzcGF0Y2hLZXkoY20sIG5hbWUsIGUsIGhhbmRsZSkge1xuICAgICAgdmFyIHNlcSA9IGNtLnN0YXRlLmtleVNlcTtcbiAgICAgIGlmIChzZXEpIHtcbiAgICAgICAgaWYgKGlzTW9kaWZpZXJLZXkobmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gXCJoYW5kbGVkXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKC9cXCckLy50ZXN0KG5hbWUpKSB7XG4gICAgICAgICAgY20uc3RhdGUua2V5U2VxID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdG9wU2VxLnNldCg1MCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAoY20uc3RhdGUua2V5U2VxID09IHNlcSkge1xuICAgICAgICAgICAgICBjbS5zdGF0ZS5rZXlTZXEgPSBudWxsO1xuICAgICAgICAgICAgICBjbS5kaXNwbGF5LmlucHV0LnJlc2V0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpc3BhdGNoS2V5SW5uZXIoY20sIHNlcSArIFwiIFwiICsgbmFtZSwgZSwgaGFuZGxlKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZGlzcGF0Y2hLZXlJbm5lcihjbSwgbmFtZSwgZSwgaGFuZGxlKTtcbiAgICB9XG4gICAgX19uYW1lKGRpc3BhdGNoS2V5LCBcImRpc3BhdGNoS2V5XCIpO1xuICAgIGZ1bmN0aW9uIGRpc3BhdGNoS2V5SW5uZXIoY20sIG5hbWUsIGUsIGhhbmRsZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IGxvb2t1cEtleUZvckVkaXRvcihjbSwgbmFtZSwgaGFuZGxlKTtcbiAgICAgIGlmIChyZXN1bHQgPT0gXCJtdWx0aVwiKSB7XG4gICAgICAgIGNtLnN0YXRlLmtleVNlcSA9IG5hbWU7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ID09IFwiaGFuZGxlZFwiKSB7XG4gICAgICAgIHNpZ25hbExhdGVyKGNtLCBcImtleUhhbmRsZWRcIiwgY20sIG5hbWUsIGUpO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCA9PSBcImhhbmRsZWRcIiB8fCByZXN1bHQgPT0gXCJtdWx0aVwiKSB7XG4gICAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7XG4gICAgICAgIHJlc3RhcnRCbGluayhjbSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gISFyZXN1bHQ7XG4gICAgfVxuICAgIF9fbmFtZShkaXNwYXRjaEtleUlubmVyLCBcImRpc3BhdGNoS2V5SW5uZXJcIik7XG4gICAgZnVuY3Rpb24gaGFuZGxlS2V5QmluZGluZyhjbSwgZSkge1xuICAgICAgdmFyIG5hbWUgPSBrZXlOYW1lKGUsIHRydWUpO1xuICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChlLnNoaWZ0S2V5ICYmICFjbS5zdGF0ZS5rZXlTZXEpIHtcbiAgICAgICAgcmV0dXJuIGRpc3BhdGNoS2V5KGNtLCBcIlNoaWZ0LVwiICsgbmFtZSwgZSwgZnVuY3Rpb24oYikge1xuICAgICAgICAgIHJldHVybiBkb0hhbmRsZUJpbmRpbmcoY20sIGIsIHRydWUpO1xuICAgICAgICB9KSB8fCBkaXNwYXRjaEtleShjbSwgbmFtZSwgZSwgZnVuY3Rpb24oYikge1xuICAgICAgICAgIGlmICh0eXBlb2YgYiA9PSBcInN0cmluZ1wiID8gL15nb1tBLVpdLy50ZXN0KGIpIDogYi5tb3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBkb0hhbmRsZUJpbmRpbmcoY20sIGIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGlzcGF0Y2hLZXkoY20sIG5hbWUsIGUsIGZ1bmN0aW9uKGIpIHtcbiAgICAgICAgICByZXR1cm4gZG9IYW5kbGVCaW5kaW5nKGNtLCBiKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShoYW5kbGVLZXlCaW5kaW5nLCBcImhhbmRsZUtleUJpbmRpbmdcIik7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2hhckJpbmRpbmcoY20sIGUsIGNoKSB7XG4gICAgICByZXR1cm4gZGlzcGF0Y2hLZXkoY20sIFwiJ1wiICsgY2ggKyBcIidcIiwgZSwgZnVuY3Rpb24oYikge1xuICAgICAgICByZXR1cm4gZG9IYW5kbGVCaW5kaW5nKGNtLCBiLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBfX25hbWUoaGFuZGxlQ2hhckJpbmRpbmcsIFwiaGFuZGxlQ2hhckJpbmRpbmdcIik7XG4gICAgdmFyIGxhc3RTdG9wcGVkS2V5ID0gbnVsbDtcbiAgICBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgICAgdmFyIGNtID0gdGhpcztcbiAgICAgIGlmIChlLnRhcmdldCAmJiBlLnRhcmdldCAhPSBjbS5kaXNwbGF5LmlucHV0LmdldEZpZWxkKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY20uY3VyT3AuZm9jdXMgPSBhY3RpdmVFbHQoKTtcbiAgICAgIGlmIChzaWduYWxET01FdmVudChjbSwgZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCAxMSAmJiBlLmtleUNvZGUgPT0gMjcpIHtcbiAgICAgICAgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIGNvZGUgPSBlLmtleUNvZGU7XG4gICAgICBjbS5kaXNwbGF5LnNoaWZ0ID0gY29kZSA9PSAxNiB8fCBlLnNoaWZ0S2V5O1xuICAgICAgdmFyIGhhbmRsZWQgPSBoYW5kbGVLZXlCaW5kaW5nKGNtLCBlKTtcbiAgICAgIGlmIChwcmVzdG8pIHtcbiAgICAgICAgbGFzdFN0b3BwZWRLZXkgPSBoYW5kbGVkID8gY29kZSA6IG51bGw7XG4gICAgICAgIGlmICghaGFuZGxlZCAmJiBjb2RlID09IDg4ICYmICFoYXNDb3B5RXZlbnQgJiYgKG1hYyA/IGUubWV0YUtleSA6IGUuY3RybEtleSkpIHtcbiAgICAgICAgICBjbS5yZXBsYWNlU2VsZWN0aW9uKFwiXCIsIG51bGwsIFwiY3V0XCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZ2Vja28gJiYgIW1hYyAmJiAhaGFuZGxlZCAmJiBjb2RlID09IDQ2ICYmIGUuc2hpZnRLZXkgJiYgIWUuY3RybEtleSAmJiBkb2N1bWVudC5leGVjQ29tbWFuZCkge1xuICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZChcImN1dFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChjb2RlID09IDE4ICYmICEvXFxiQ29kZU1pcnJvci1jcm9zc2hhaXJcXGIvLnRlc3QoY20uZGlzcGxheS5saW5lRGl2LmNsYXNzTmFtZSkpIHtcbiAgICAgICAgc2hvd0Nyb3NzSGFpcihjbSk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShvbktleURvd24sIFwib25LZXlEb3duXCIpO1xuICAgIGZ1bmN0aW9uIHNob3dDcm9zc0hhaXIoY20pIHtcbiAgICAgIHZhciBsaW5lRGl2ID0gY20uZGlzcGxheS5saW5lRGl2O1xuICAgICAgYWRkQ2xhc3MobGluZURpdiwgXCJDb2RlTWlycm9yLWNyb3NzaGFpclwiKTtcbiAgICAgIGZ1bmN0aW9uIHVwKGUpIHtcbiAgICAgICAgaWYgKGUua2V5Q29kZSA9PSAxOCB8fCAhZS5hbHRLZXkpIHtcbiAgICAgICAgICBybUNsYXNzKGxpbmVEaXYsIFwiQ29kZU1pcnJvci1jcm9zc2hhaXJcIik7XG4gICAgICAgICAgb2ZmKGRvY3VtZW50LCBcImtleXVwXCIsIHVwKTtcbiAgICAgICAgICBvZmYoZG9jdW1lbnQsIFwibW91c2VvdmVyXCIsIHVwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKHVwLCBcInVwXCIpO1xuICAgICAgb24oZG9jdW1lbnQsIFwia2V5dXBcIiwgdXApO1xuICAgICAgb24oZG9jdW1lbnQsIFwibW91c2VvdmVyXCIsIHVwKTtcbiAgICB9XG4gICAgX19uYW1lKHNob3dDcm9zc0hhaXIsIFwic2hvd0Nyb3NzSGFpclwiKTtcbiAgICBmdW5jdGlvbiBvbktleVVwKGUpIHtcbiAgICAgIGlmIChlLmtleUNvZGUgPT0gMTYpIHtcbiAgICAgICAgdGhpcy5kb2Muc2VsLnNoaWZ0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBzaWduYWxET01FdmVudCh0aGlzLCBlKTtcbiAgICB9XG4gICAgX19uYW1lKG9uS2V5VXAsIFwib25LZXlVcFwiKTtcbiAgICBmdW5jdGlvbiBvbktleVByZXNzKGUpIHtcbiAgICAgIHZhciBjbSA9IHRoaXM7XG4gICAgICBpZiAoZS50YXJnZXQgJiYgZS50YXJnZXQgIT0gY20uZGlzcGxheS5pbnB1dC5nZXRGaWVsZCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudEluV2lkZ2V0KGNtLmRpc3BsYXksIGUpIHx8IHNpZ25hbERPTUV2ZW50KGNtLCBlKSB8fCBlLmN0cmxLZXkgJiYgIWUuYWx0S2V5IHx8IG1hYyAmJiBlLm1ldGFLZXkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGtleUNvZGUgPSBlLmtleUNvZGUsIGNoYXJDb2RlID0gZS5jaGFyQ29kZTtcbiAgICAgIGlmIChwcmVzdG8gJiYga2V5Q29kZSA9PSBsYXN0U3RvcHBlZEtleSkge1xuICAgICAgICBsYXN0U3RvcHBlZEtleSA9IG51bGw7XG4gICAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwcmVzdG8gJiYgKCFlLndoaWNoIHx8IGUud2hpY2ggPCAxMCkgJiYgaGFuZGxlS2V5QmluZGluZyhjbSwgZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSA9PSBudWxsID8ga2V5Q29kZSA6IGNoYXJDb2RlKTtcbiAgICAgIGlmIChjaCA9PSBcIlxcYlwiKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChoYW5kbGVDaGFyQmluZGluZyhjbSwgZSwgY2gpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNtLmRpc3BsYXkuaW5wdXQub25LZXlQcmVzcyhlKTtcbiAgICB9XG4gICAgX19uYW1lKG9uS2V5UHJlc3MsIFwib25LZXlQcmVzc1wiKTtcbiAgICB2YXIgRE9VQkxFQ0xJQ0tfREVMQVkgPSA0MDA7XG4gICAgdmFyIFBhc3RDbGljayA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24odGltZSwgcG9zLCBidXR0b24pIHtcbiAgICAgIHRoaXMudGltZSA9IHRpbWU7XG4gICAgICB0aGlzLnBvcyA9IHBvcztcbiAgICAgIHRoaXMuYnV0dG9uID0gYnV0dG9uO1xuICAgIH0sIFwiUGFzdENsaWNrXCIpO1xuICAgIFBhc3RDbGljay5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uKHRpbWUsIHBvcywgYnV0dG9uKSB7XG4gICAgICByZXR1cm4gdGhpcy50aW1lICsgRE9VQkxFQ0xJQ0tfREVMQVkgPiB0aW1lICYmIGNtcChwb3MsIHRoaXMucG9zKSA9PSAwICYmIGJ1dHRvbiA9PSB0aGlzLmJ1dHRvbjtcbiAgICB9O1xuICAgIHZhciBsYXN0Q2xpY2ssIGxhc3REb3VibGVDbGljaztcbiAgICBmdW5jdGlvbiBjbGlja1JlcGVhdChwb3MsIGJ1dHRvbikge1xuICAgICAgdmFyIG5vdyA9ICtuZXcgRGF0ZSgpO1xuICAgICAgaWYgKGxhc3REb3VibGVDbGljayAmJiBsYXN0RG91YmxlQ2xpY2suY29tcGFyZShub3csIHBvcywgYnV0dG9uKSkge1xuICAgICAgICBsYXN0Q2xpY2sgPSBsYXN0RG91YmxlQ2xpY2sgPSBudWxsO1xuICAgICAgICByZXR1cm4gXCJ0cmlwbGVcIjtcbiAgICAgIH0gZWxzZSBpZiAobGFzdENsaWNrICYmIGxhc3RDbGljay5jb21wYXJlKG5vdywgcG9zLCBidXR0b24pKSB7XG4gICAgICAgIGxhc3REb3VibGVDbGljayA9IG5ldyBQYXN0Q2xpY2sobm93LCBwb3MsIGJ1dHRvbik7XG4gICAgICAgIGxhc3RDbGljayA9IG51bGw7XG4gICAgICAgIHJldHVybiBcImRvdWJsZVwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdENsaWNrID0gbmV3IFBhc3RDbGljayhub3csIHBvcywgYnV0dG9uKTtcbiAgICAgICAgbGFzdERvdWJsZUNsaWNrID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIFwic2luZ2xlXCI7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShjbGlja1JlcGVhdCwgXCJjbGlja1JlcGVhdFwiKTtcbiAgICBmdW5jdGlvbiBvbk1vdXNlRG93bihlKSB7XG4gICAgICB2YXIgY20gPSB0aGlzLCBkaXNwbGF5ID0gY20uZGlzcGxheTtcbiAgICAgIGlmIChzaWduYWxET01FdmVudChjbSwgZSkgfHwgZGlzcGxheS5hY3RpdmVUb3VjaCAmJiBkaXNwbGF5LmlucHV0LnN1cHBvcnRzVG91Y2goKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkaXNwbGF5LmlucHV0LmVuc3VyZVBvbGxlZCgpO1xuICAgICAgZGlzcGxheS5zaGlmdCA9IGUuc2hpZnRLZXk7XG4gICAgICBpZiAoZXZlbnRJbldpZGdldChkaXNwbGF5LCBlKSkge1xuICAgICAgICBpZiAoIXdlYmtpdCkge1xuICAgICAgICAgIGRpc3BsYXkuc2Nyb2xsZXIuZHJhZ2dhYmxlID0gZmFsc2U7XG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXNwbGF5LnNjcm9sbGVyLmRyYWdnYWJsZSA9IHRydWU7XG4gICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoY2xpY2tJbkd1dHRlcihjbSwgZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHBvcyA9IHBvc0Zyb21Nb3VzZShjbSwgZSksIGJ1dHRvbiA9IGVfYnV0dG9uKGUpLCByZXBlYXQgPSBwb3MgPyBjbGlja1JlcGVhdChwb3MsIGJ1dHRvbikgOiBcInNpbmdsZVwiO1xuICAgICAgd2luZG93LmZvY3VzKCk7XG4gICAgICBpZiAoYnV0dG9uID09IDEgJiYgY20uc3RhdGUuc2VsZWN0aW5nVGV4dCkge1xuICAgICAgICBjbS5zdGF0ZS5zZWxlY3RpbmdUZXh0KGUpO1xuICAgICAgfVxuICAgICAgaWYgKHBvcyAmJiBoYW5kbGVNYXBwZWRCdXR0b24oY20sIGJ1dHRvbiwgcG9zLCByZXBlYXQsIGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChidXR0b24gPT0gMSkge1xuICAgICAgICBpZiAocG9zKSB7XG4gICAgICAgICAgbGVmdEJ1dHRvbkRvd24oY20sIHBvcywgcmVwZWF0LCBlKTtcbiAgICAgICAgfSBlbHNlIGlmIChlX3RhcmdldChlKSA9PSBkaXNwbGF5LnNjcm9sbGVyKSB7XG4gICAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChidXR0b24gPT0gMikge1xuICAgICAgICBpZiAocG9zKSB7XG4gICAgICAgICAgZXh0ZW5kU2VsZWN0aW9uKGNtLmRvYywgcG9zKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBkaXNwbGF5LmlucHV0LmZvY3VzKCk7XG4gICAgICAgIH0sIDIwKTtcbiAgICAgIH0gZWxzZSBpZiAoYnV0dG9uID09IDMpIHtcbiAgICAgICAgaWYgKGNhcHR1cmVSaWdodENsaWNrKSB7XG4gICAgICAgICAgY20uZGlzcGxheS5pbnB1dC5vbkNvbnRleHRNZW51KGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGF5Qmx1ckV2ZW50KGNtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUob25Nb3VzZURvd24sIFwib25Nb3VzZURvd25cIik7XG4gICAgZnVuY3Rpb24gaGFuZGxlTWFwcGVkQnV0dG9uKGNtLCBidXR0b24sIHBvcywgcmVwZWF0LCBldmVudCkge1xuICAgICAgdmFyIG5hbWUgPSBcIkNsaWNrXCI7XG4gICAgICBpZiAocmVwZWF0ID09IFwiZG91YmxlXCIpIHtcbiAgICAgICAgbmFtZSA9IFwiRG91YmxlXCIgKyBuYW1lO1xuICAgICAgfSBlbHNlIGlmIChyZXBlYXQgPT0gXCJ0cmlwbGVcIikge1xuICAgICAgICBuYW1lID0gXCJUcmlwbGVcIiArIG5hbWU7XG4gICAgICB9XG4gICAgICBuYW1lID0gKGJ1dHRvbiA9PSAxID8gXCJMZWZ0XCIgOiBidXR0b24gPT0gMiA/IFwiTWlkZGxlXCIgOiBcIlJpZ2h0XCIpICsgbmFtZTtcbiAgICAgIHJldHVybiBkaXNwYXRjaEtleShjbSwgYWRkTW9kaWZpZXJOYW1lcyhuYW1lLCBldmVudCksIGV2ZW50LCBmdW5jdGlvbihib3VuZCkge1xuICAgICAgICBpZiAodHlwZW9mIGJvdW5kID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBib3VuZCA9IGNvbW1hbmRzW2JvdW5kXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWJvdW5kKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKGNtLmlzUmVhZE9ubHkoKSkge1xuICAgICAgICAgICAgY20uc3RhdGUuc3VwcHJlc3NFZGl0cyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRvbmUgPSBib3VuZChjbSwgcG9zKSAhPSBQYXNzO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGNtLnN0YXRlLnN1cHByZXNzRWRpdHMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZG9uZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBfX25hbWUoaGFuZGxlTWFwcGVkQnV0dG9uLCBcImhhbmRsZU1hcHBlZEJ1dHRvblwiKTtcbiAgICBmdW5jdGlvbiBjb25maWd1cmVNb3VzZShjbSwgcmVwZWF0LCBldmVudCkge1xuICAgICAgdmFyIG9wdGlvbiA9IGNtLmdldE9wdGlvbihcImNvbmZpZ3VyZU1vdXNlXCIpO1xuICAgICAgdmFyIHZhbHVlID0gb3B0aW9uID8gb3B0aW9uKGNtLCByZXBlYXQsIGV2ZW50KSA6IHt9O1xuICAgICAgaWYgKHZhbHVlLnVuaXQgPT0gbnVsbCkge1xuICAgICAgICB2YXIgcmVjdCA9IGNocm9tZU9TID8gZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQubWV0YUtleSA6IGV2ZW50LmFsdEtleTtcbiAgICAgICAgdmFsdWUudW5pdCA9IHJlY3QgPyBcInJlY3RhbmdsZVwiIDogcmVwZWF0ID09IFwic2luZ2xlXCIgPyBcImNoYXJcIiA6IHJlcGVhdCA9PSBcImRvdWJsZVwiID8gXCJ3b3JkXCIgOiBcImxpbmVcIjtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZS5leHRlbmQgPT0gbnVsbCB8fCBjbS5kb2MuZXh0ZW5kKSB7XG4gICAgICAgIHZhbHVlLmV4dGVuZCA9IGNtLmRvYy5leHRlbmQgfHwgZXZlbnQuc2hpZnRLZXk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUuYWRkTmV3ID09IG51bGwpIHtcbiAgICAgICAgdmFsdWUuYWRkTmV3ID0gbWFjID8gZXZlbnQubWV0YUtleSA6IGV2ZW50LmN0cmxLZXk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUubW92ZU9uRHJhZyA9PSBudWxsKSB7XG4gICAgICAgIHZhbHVlLm1vdmVPbkRyYWcgPSAhKG1hYyA/IGV2ZW50LmFsdEtleSA6IGV2ZW50LmN0cmxLZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBfX25hbWUoY29uZmlndXJlTW91c2UsIFwiY29uZmlndXJlTW91c2VcIik7XG4gICAgZnVuY3Rpb24gbGVmdEJ1dHRvbkRvd24oY20sIHBvcywgcmVwZWF0LCBldmVudCkge1xuICAgICAgaWYgKGllKSB7XG4gICAgICAgIHNldFRpbWVvdXQoYmluZChlbnN1cmVGb2N1cywgY20pLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNtLmN1ck9wLmZvY3VzID0gYWN0aXZlRWx0KCk7XG4gICAgICB9XG4gICAgICB2YXIgYmVoYXZpb3IgPSBjb25maWd1cmVNb3VzZShjbSwgcmVwZWF0LCBldmVudCk7XG4gICAgICB2YXIgc2VsID0gY20uZG9jLnNlbCwgY29udGFpbmVkO1xuICAgICAgaWYgKGNtLm9wdGlvbnMuZHJhZ0Ryb3AgJiYgZHJhZ0FuZERyb3AgJiYgIWNtLmlzUmVhZE9ubHkoKSAmJiByZXBlYXQgPT0gXCJzaW5nbGVcIiAmJiAoY29udGFpbmVkID0gc2VsLmNvbnRhaW5zKHBvcykpID4gLTEgJiYgKGNtcCgoY29udGFpbmVkID0gc2VsLnJhbmdlc1tjb250YWluZWRdKS5mcm9tKCksIHBvcykgPCAwIHx8IHBvcy54UmVsID4gMCkgJiYgKGNtcChjb250YWluZWQudG8oKSwgcG9zKSA+IDAgfHwgcG9zLnhSZWwgPCAwKSkge1xuICAgICAgICBsZWZ0QnV0dG9uU3RhcnREcmFnKGNtLCBldmVudCwgcG9zLCBiZWhhdmlvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0QnV0dG9uU2VsZWN0KGNtLCBldmVudCwgcG9zLCBiZWhhdmlvcik7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShsZWZ0QnV0dG9uRG93biwgXCJsZWZ0QnV0dG9uRG93blwiKTtcbiAgICBmdW5jdGlvbiBsZWZ0QnV0dG9uU3RhcnREcmFnKGNtLCBldmVudCwgcG9zLCBiZWhhdmlvcikge1xuICAgICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5LCBtb3ZlZCA9IGZhbHNlO1xuICAgICAgdmFyIGRyYWdFbmQgPSBvcGVyYXRpb24oY20sIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgaWYgKHdlYmtpdCkge1xuICAgICAgICAgIGRpc3BsYXkuc2Nyb2xsZXIuZHJhZ2dhYmxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY20uc3RhdGUuZHJhZ2dpbmdUZXh0ID0gZmFsc2U7XG4gICAgICAgIGlmIChjbS5zdGF0ZS5kZWxheWluZ0JsdXJFdmVudCkge1xuICAgICAgICAgIGlmIChjbS5oYXNGb2N1cygpKSB7XG4gICAgICAgICAgICBjbS5zdGF0ZS5kZWxheWluZ0JsdXJFdmVudCA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxheUJsdXJFdmVudChjbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9mZihkaXNwbGF5LndyYXBwZXIub3duZXJEb2N1bWVudCwgXCJtb3VzZXVwXCIsIGRyYWdFbmQpO1xuICAgICAgICBvZmYoZGlzcGxheS53cmFwcGVyLm93bmVyRG9jdW1lbnQsIFwibW91c2Vtb3ZlXCIsIG1vdXNlTW92ZSk7XG4gICAgICAgIG9mZihkaXNwbGF5LnNjcm9sbGVyLCBcImRyYWdzdGFydFwiLCBkcmFnU3RhcnQpO1xuICAgICAgICBvZmYoZGlzcGxheS5zY3JvbGxlciwgXCJkcm9wXCIsIGRyYWdFbmQpO1xuICAgICAgICBpZiAoIW1vdmVkKSB7XG4gICAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTtcbiAgICAgICAgICBpZiAoIWJlaGF2aW9yLmFkZE5ldykge1xuICAgICAgICAgICAgZXh0ZW5kU2VsZWN0aW9uKGNtLmRvYywgcG9zLCBudWxsLCBudWxsLCBiZWhhdmlvci5leHRlbmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAod2Via2l0ICYmICFzYWZhcmkgfHwgaWUgJiYgaWVfdmVyc2lvbiA9PSA5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICBkaXNwbGF5LndyYXBwZXIub3duZXJEb2N1bWVudC5ib2R5LmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgZGlzcGxheS5pbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgfSwgMjApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaXNwbGF5LmlucHV0LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBtb3VzZU1vdmUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKGUyKSB7XG4gICAgICAgIG1vdmVkID0gbW92ZWQgfHwgTWF0aC5hYnMoZXZlbnQuY2xpZW50WCAtIGUyLmNsaWVudFgpICsgTWF0aC5hYnMoZXZlbnQuY2xpZW50WSAtIGUyLmNsaWVudFkpID49IDEwO1xuICAgICAgfSwgXCJtb3VzZU1vdmVcIik7XG4gICAgICB2YXIgZHJhZ1N0YXJ0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG1vdmVkID0gdHJ1ZTtcbiAgICAgIH0sIFwiZHJhZ1N0YXJ0XCIpO1xuICAgICAgaWYgKHdlYmtpdCkge1xuICAgICAgICBkaXNwbGF5LnNjcm9sbGVyLmRyYWdnYWJsZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBjbS5zdGF0ZS5kcmFnZ2luZ1RleHQgPSBkcmFnRW5kO1xuICAgICAgZHJhZ0VuZC5jb3B5ID0gIWJlaGF2aW9yLm1vdmVPbkRyYWc7XG4gICAgICBvbihkaXNwbGF5LndyYXBwZXIub3duZXJEb2N1bWVudCwgXCJtb3VzZXVwXCIsIGRyYWdFbmQpO1xuICAgICAgb24oZGlzcGxheS53cmFwcGVyLm93bmVyRG9jdW1lbnQsIFwibW91c2Vtb3ZlXCIsIG1vdXNlTW92ZSk7XG4gICAgICBvbihkaXNwbGF5LnNjcm9sbGVyLCBcImRyYWdzdGFydFwiLCBkcmFnU3RhcnQpO1xuICAgICAgb24oZGlzcGxheS5zY3JvbGxlciwgXCJkcm9wXCIsIGRyYWdFbmQpO1xuICAgICAgY20uc3RhdGUuZGVsYXlpbmdCbHVyRXZlbnQgPSB0cnVlO1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGRpc3BsYXkuaW5wdXQuZm9jdXMoKTtcbiAgICAgIH0sIDIwKTtcbiAgICAgIGlmIChkaXNwbGF5LnNjcm9sbGVyLmRyYWdEcm9wKSB7XG4gICAgICAgIGRpc3BsYXkuc2Nyb2xsZXIuZHJhZ0Ryb3AoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGxlZnRCdXR0b25TdGFydERyYWcsIFwibGVmdEJ1dHRvblN0YXJ0RHJhZ1wiKTtcbiAgICBmdW5jdGlvbiByYW5nZUZvclVuaXQoY20sIHBvcywgdW5pdCkge1xuICAgICAgaWYgKHVuaXQgPT0gXCJjaGFyXCIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSYW5nZShwb3MsIHBvcyk7XG4gICAgICB9XG4gICAgICBpZiAodW5pdCA9PSBcIndvcmRcIikge1xuICAgICAgICByZXR1cm4gY20uZmluZFdvcmRBdChwb3MpO1xuICAgICAgfVxuICAgICAgaWYgKHVuaXQgPT0gXCJsaW5lXCIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSYW5nZShQb3MocG9zLmxpbmUsIDApLCBjbGlwUG9zKGNtLmRvYywgUG9zKHBvcy5saW5lICsgMSwgMCkpKTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSB1bml0KGNtLCBwb3MpO1xuICAgICAgcmV0dXJuIG5ldyBSYW5nZShyZXN1bHQuZnJvbSwgcmVzdWx0LnRvKTtcbiAgICB9XG4gICAgX19uYW1lKHJhbmdlRm9yVW5pdCwgXCJyYW5nZUZvclVuaXRcIik7XG4gICAgZnVuY3Rpb24gbGVmdEJ1dHRvblNlbGVjdChjbSwgZXZlbnQsIHN0YXJ0LCBiZWhhdmlvcikge1xuICAgICAgaWYgKGllKSB7XG4gICAgICAgIGRlbGF5Qmx1ckV2ZW50KGNtKTtcbiAgICAgIH1cbiAgICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheSwgZG9jID0gY20uZG9jO1xuICAgICAgZV9wcmV2ZW50RGVmYXVsdChldmVudCk7XG4gICAgICB2YXIgb3VyUmFuZ2UsIG91ckluZGV4LCBzdGFydFNlbCA9IGRvYy5zZWwsIHJhbmdlcyA9IHN0YXJ0U2VsLnJhbmdlcztcbiAgICAgIGlmIChiZWhhdmlvci5hZGROZXcgJiYgIWJlaGF2aW9yLmV4dGVuZCkge1xuICAgICAgICBvdXJJbmRleCA9IGRvYy5zZWwuY29udGFpbnMoc3RhcnQpO1xuICAgICAgICBpZiAob3VySW5kZXggPiAtMSkge1xuICAgICAgICAgIG91clJhbmdlID0gcmFuZ2VzW291ckluZGV4XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXJSYW5nZSA9IG5ldyBSYW5nZShzdGFydCwgc3RhcnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXJSYW5nZSA9IGRvYy5zZWwucHJpbWFyeSgpO1xuICAgICAgICBvdXJJbmRleCA9IGRvYy5zZWwucHJpbUluZGV4O1xuICAgICAgfVxuICAgICAgaWYgKGJlaGF2aW9yLnVuaXQgPT0gXCJyZWN0YW5nbGVcIikge1xuICAgICAgICBpZiAoIWJlaGF2aW9yLmFkZE5ldykge1xuICAgICAgICAgIG91clJhbmdlID0gbmV3IFJhbmdlKHN0YXJ0LCBzdGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnQgPSBwb3NGcm9tTW91c2UoY20sIGV2ZW50LCB0cnVlLCB0cnVlKTtcbiAgICAgICAgb3VySW5kZXggPSAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByYW5nZTIgPSByYW5nZUZvclVuaXQoY20sIHN0YXJ0LCBiZWhhdmlvci51bml0KTtcbiAgICAgICAgaWYgKGJlaGF2aW9yLmV4dGVuZCkge1xuICAgICAgICAgIG91clJhbmdlID0gZXh0ZW5kUmFuZ2Uob3VyUmFuZ2UsIHJhbmdlMi5hbmNob3IsIHJhbmdlMi5oZWFkLCBiZWhhdmlvci5leHRlbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91clJhbmdlID0gcmFuZ2UyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWJlaGF2aW9yLmFkZE5ldykge1xuICAgICAgICBvdXJJbmRleCA9IDA7XG4gICAgICAgIHNldFNlbGVjdGlvbihkb2MsIG5ldyBTZWxlY3Rpb24oW291clJhbmdlXSwgMCksIHNlbF9tb3VzZSk7XG4gICAgICAgIHN0YXJ0U2VsID0gZG9jLnNlbDtcbiAgICAgIH0gZWxzZSBpZiAob3VySW5kZXggPT0gLTEpIHtcbiAgICAgICAgb3VySW5kZXggPSByYW5nZXMubGVuZ3RoO1xuICAgICAgICBzZXRTZWxlY3Rpb24oZG9jLCBub3JtYWxpemVTZWxlY3Rpb24oY20sIHJhbmdlcy5jb25jYXQoW291clJhbmdlXSksIG91ckluZGV4KSwgeyBzY3JvbGw6IGZhbHNlLCBvcmlnaW46IFwiKm1vdXNlXCIgfSk7XG4gICAgICB9IGVsc2UgaWYgKHJhbmdlcy5sZW5ndGggPiAxICYmIHJhbmdlc1tvdXJJbmRleF0uZW1wdHkoKSAmJiBiZWhhdmlvci51bml0ID09IFwiY2hhclwiICYmICFiZWhhdmlvci5leHRlbmQpIHtcbiAgICAgICAgc2V0U2VsZWN0aW9uKGRvYywgbm9ybWFsaXplU2VsZWN0aW9uKGNtLCByYW5nZXMuc2xpY2UoMCwgb3VySW5kZXgpLmNvbmNhdChyYW5nZXMuc2xpY2Uob3VySW5kZXggKyAxKSksIDApLCB7IHNjcm9sbDogZmFsc2UsIG9yaWdpbjogXCIqbW91c2VcIiB9KTtcbiAgICAgICAgc3RhcnRTZWwgPSBkb2Muc2VsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVwbGFjZU9uZVNlbGVjdGlvbihkb2MsIG91ckluZGV4LCBvdXJSYW5nZSwgc2VsX21vdXNlKTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0UG9zID0gc3RhcnQ7XG4gICAgICBmdW5jdGlvbiBleHRlbmRUbyhwb3MpIHtcbiAgICAgICAgaWYgKGNtcChsYXN0UG9zLCBwb3MpID09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGFzdFBvcyA9IHBvcztcbiAgICAgICAgaWYgKGJlaGF2aW9yLnVuaXQgPT0gXCJyZWN0YW5nbGVcIikge1xuICAgICAgICAgIHZhciByYW5nZXMyID0gW10sIHRhYlNpemUgPSBjbS5vcHRpb25zLnRhYlNpemU7XG4gICAgICAgICAgdmFyIHN0YXJ0Q29sID0gY291bnRDb2x1bW4oZ2V0TGluZShkb2MsIHN0YXJ0LmxpbmUpLnRleHQsIHN0YXJ0LmNoLCB0YWJTaXplKTtcbiAgICAgICAgICB2YXIgcG9zQ29sID0gY291bnRDb2x1bW4oZ2V0TGluZShkb2MsIHBvcy5saW5lKS50ZXh0LCBwb3MuY2gsIHRhYlNpemUpO1xuICAgICAgICAgIHZhciBsZWZ0ID0gTWF0aC5taW4oc3RhcnRDb2wsIHBvc0NvbCksIHJpZ2h0ID0gTWF0aC5tYXgoc3RhcnRDb2wsIHBvc0NvbCk7XG4gICAgICAgICAgZm9yICh2YXIgbGluZSA9IE1hdGgubWluKHN0YXJ0LmxpbmUsIHBvcy5saW5lKSwgZW5kID0gTWF0aC5taW4oY20ubGFzdExpbmUoKSwgTWF0aC5tYXgoc3RhcnQubGluZSwgcG9zLmxpbmUpKTsgbGluZSA8PSBlbmQ7IGxpbmUrKykge1xuICAgICAgICAgICAgdmFyIHRleHQgPSBnZXRMaW5lKGRvYywgbGluZSkudGV4dCwgbGVmdFBvcyA9IGZpbmRDb2x1bW4odGV4dCwgbGVmdCwgdGFiU2l6ZSk7XG4gICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkge1xuICAgICAgICAgICAgICByYW5nZXMyLnB1c2gobmV3IFJhbmdlKFBvcyhsaW5lLCBsZWZ0UG9zKSwgUG9zKGxpbmUsIGxlZnRQb3MpKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRleHQubGVuZ3RoID4gbGVmdFBvcykge1xuICAgICAgICAgICAgICByYW5nZXMyLnB1c2gobmV3IFJhbmdlKFBvcyhsaW5lLCBsZWZ0UG9zKSwgUG9zKGxpbmUsIGZpbmRDb2x1bW4odGV4dCwgcmlnaHQsIHRhYlNpemUpKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXJhbmdlczIubGVuZ3RoKSB7XG4gICAgICAgICAgICByYW5nZXMyLnB1c2gobmV3IFJhbmdlKHN0YXJ0LCBzdGFydCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRTZWxlY3Rpb24oZG9jLCBub3JtYWxpemVTZWxlY3Rpb24oY20sIHN0YXJ0U2VsLnJhbmdlcy5zbGljZSgwLCBvdXJJbmRleCkuY29uY2F0KHJhbmdlczIpLCBvdXJJbmRleCksIHsgb3JpZ2luOiBcIiptb3VzZVwiLCBzY3JvbGw6IGZhbHNlIH0pO1xuICAgICAgICAgIGNtLnNjcm9sbEludG9WaWV3KHBvcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIG9sZFJhbmdlID0gb3VyUmFuZ2U7XG4gICAgICAgICAgdmFyIHJhbmdlMyA9IHJhbmdlRm9yVW5pdChjbSwgcG9zLCBiZWhhdmlvci51bml0KTtcbiAgICAgICAgICB2YXIgYW5jaG9yID0gb2xkUmFuZ2UuYW5jaG9yLCBoZWFkO1xuICAgICAgICAgIGlmIChjbXAocmFuZ2UzLmFuY2hvciwgYW5jaG9yKSA+IDApIHtcbiAgICAgICAgICAgIGhlYWQgPSByYW5nZTMuaGVhZDtcbiAgICAgICAgICAgIGFuY2hvciA9IG1pblBvcyhvbGRSYW5nZS5mcm9tKCksIHJhbmdlMy5hbmNob3IpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoZWFkID0gcmFuZ2UzLmFuY2hvcjtcbiAgICAgICAgICAgIGFuY2hvciA9IG1heFBvcyhvbGRSYW5nZS50bygpLCByYW5nZTMuaGVhZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciByYW5nZXMkMSA9IHN0YXJ0U2VsLnJhbmdlcy5zbGljZSgwKTtcbiAgICAgICAgICByYW5nZXMkMVtvdXJJbmRleF0gPSBiaWRpU2ltcGxpZnkoY20sIG5ldyBSYW5nZShjbGlwUG9zKGRvYywgYW5jaG9yKSwgaGVhZCkpO1xuICAgICAgICAgIHNldFNlbGVjdGlvbihkb2MsIG5vcm1hbGl6ZVNlbGVjdGlvbihjbSwgcmFuZ2VzJDEsIG91ckluZGV4KSwgc2VsX21vdXNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKGV4dGVuZFRvLCBcImV4dGVuZFRvXCIpO1xuICAgICAgdmFyIGVkaXRvclNpemUgPSBkaXNwbGF5LndyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB2YXIgY291bnRlciA9IDA7XG4gICAgICBmdW5jdGlvbiBleHRlbmQoZSkge1xuICAgICAgICB2YXIgY3VyQ291bnQgPSArK2NvdW50ZXI7XG4gICAgICAgIHZhciBjdXIgPSBwb3NGcm9tTW91c2UoY20sIGUsIHRydWUsIGJlaGF2aW9yLnVuaXQgPT0gXCJyZWN0YW5nbGVcIik7XG4gICAgICAgIGlmICghY3VyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjbXAoY3VyLCBsYXN0UG9zKSAhPSAwKSB7XG4gICAgICAgICAgY20uY3VyT3AuZm9jdXMgPSBhY3RpdmVFbHQoKTtcbiAgICAgICAgICBleHRlbmRUbyhjdXIpO1xuICAgICAgICAgIHZhciB2aXNpYmxlID0gdmlzaWJsZUxpbmVzKGRpc3BsYXksIGRvYyk7XG4gICAgICAgICAgaWYgKGN1ci5saW5lID49IHZpc2libGUudG8gfHwgY3VyLmxpbmUgPCB2aXNpYmxlLmZyb20pIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQob3BlcmF0aW9uKGNtLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT0gY3VyQ291bnQpIHtcbiAgICAgICAgICAgICAgICBleHRlbmQoZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLCAxNTApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgb3V0c2lkZSA9IGUuY2xpZW50WSA8IGVkaXRvclNpemUudG9wID8gLTIwIDogZS5jbGllbnRZID4gZWRpdG9yU2l6ZS5ib3R0b20gPyAyMCA6IDA7XG4gICAgICAgICAgaWYgKG91dHNpZGUpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQob3BlcmF0aW9uKGNtLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgaWYgKGNvdW50ZXIgIT0gY3VyQ291bnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3AgKz0gb3V0c2lkZTtcbiAgICAgICAgICAgICAgZXh0ZW5kKGUpO1xuICAgICAgICAgICAgfSksIDUwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9fbmFtZShleHRlbmQsIFwiZXh0ZW5kXCIpO1xuICAgICAgZnVuY3Rpb24gZG9uZShlKSB7XG4gICAgICAgIGNtLnN0YXRlLnNlbGVjdGluZ1RleHQgPSBmYWxzZTtcbiAgICAgICAgY291bnRlciA9IEluZmluaXR5O1xuICAgICAgICBpZiAoZSkge1xuICAgICAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7XG4gICAgICAgICAgZGlzcGxheS5pbnB1dC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIG9mZihkaXNwbGF5LndyYXBwZXIub3duZXJEb2N1bWVudCwgXCJtb3VzZW1vdmVcIiwgbW92ZSk7XG4gICAgICAgIG9mZihkaXNwbGF5LndyYXBwZXIub3duZXJEb2N1bWVudCwgXCJtb3VzZXVwXCIsIHVwKTtcbiAgICAgICAgZG9jLmhpc3RvcnkubGFzdFNlbE9yaWdpbiA9IG51bGw7XG4gICAgICB9XG4gICAgICBfX25hbWUoZG9uZSwgXCJkb25lXCIpO1xuICAgICAgdmFyIG1vdmUgPSBvcGVyYXRpb24oY20sIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgaWYgKGUuYnV0dG9ucyA9PT0gMCB8fCAhZV9idXR0b24oZSkpIHtcbiAgICAgICAgICBkb25lKGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV4dGVuZChlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgdXAgPSBvcGVyYXRpb24oY20sIGRvbmUpO1xuICAgICAgY20uc3RhdGUuc2VsZWN0aW5nVGV4dCA9IHVwO1xuICAgICAgb24oZGlzcGxheS53cmFwcGVyLm93bmVyRG9jdW1lbnQsIFwibW91c2Vtb3ZlXCIsIG1vdmUpO1xuICAgICAgb24oZGlzcGxheS53cmFwcGVyLm93bmVyRG9jdW1lbnQsIFwibW91c2V1cFwiLCB1cCk7XG4gICAgfVxuICAgIF9fbmFtZShsZWZ0QnV0dG9uU2VsZWN0LCBcImxlZnRCdXR0b25TZWxlY3RcIik7XG4gICAgZnVuY3Rpb24gYmlkaVNpbXBsaWZ5KGNtLCByYW5nZTIpIHtcbiAgICAgIHZhciBhbmNob3IgPSByYW5nZTIuYW5jaG9yO1xuICAgICAgdmFyIGhlYWQgPSByYW5nZTIuaGVhZDtcbiAgICAgIHZhciBhbmNob3JMaW5lID0gZ2V0TGluZShjbS5kb2MsIGFuY2hvci5saW5lKTtcbiAgICAgIGlmIChjbXAoYW5jaG9yLCBoZWFkKSA9PSAwICYmIGFuY2hvci5zdGlja3kgPT0gaGVhZC5zdGlja3kpIHtcbiAgICAgICAgcmV0dXJuIHJhbmdlMjtcbiAgICAgIH1cbiAgICAgIHZhciBvcmRlciA9IGdldE9yZGVyKGFuY2hvckxpbmUpO1xuICAgICAgaWYgKCFvcmRlcikge1xuICAgICAgICByZXR1cm4gcmFuZ2UyO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gZ2V0QmlkaVBhcnRBdChvcmRlciwgYW5jaG9yLmNoLCBhbmNob3Iuc3RpY2t5KSwgcGFydCA9IG9yZGVyW2luZGV4XTtcbiAgICAgIGlmIChwYXJ0LmZyb20gIT0gYW5jaG9yLmNoICYmIHBhcnQudG8gIT0gYW5jaG9yLmNoKSB7XG4gICAgICAgIHJldHVybiByYW5nZTI7XG4gICAgICB9XG4gICAgICB2YXIgYm91bmRhcnkgPSBpbmRleCArIChwYXJ0LmZyb20gPT0gYW5jaG9yLmNoID09IChwYXJ0LmxldmVsICE9IDEpID8gMCA6IDEpO1xuICAgICAgaWYgKGJvdW5kYXJ5ID09IDAgfHwgYm91bmRhcnkgPT0gb3JkZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByYW5nZTI7XG4gICAgICB9XG4gICAgICB2YXIgbGVmdFNpZGU7XG4gICAgICBpZiAoaGVhZC5saW5lICE9IGFuY2hvci5saW5lKSB7XG4gICAgICAgIGxlZnRTaWRlID0gKGhlYWQubGluZSAtIGFuY2hvci5saW5lKSAqIChjbS5kb2MuZGlyZWN0aW9uID09IFwibHRyXCIgPyAxIDogLTEpID4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBoZWFkSW5kZXggPSBnZXRCaWRpUGFydEF0KG9yZGVyLCBoZWFkLmNoLCBoZWFkLnN0aWNreSk7XG4gICAgICAgIHZhciBkaXIgPSBoZWFkSW5kZXggLSBpbmRleCB8fCAoaGVhZC5jaCAtIGFuY2hvci5jaCkgKiAocGFydC5sZXZlbCA9PSAxID8gLTEgOiAxKTtcbiAgICAgICAgaWYgKGhlYWRJbmRleCA9PSBib3VuZGFyeSAtIDEgfHwgaGVhZEluZGV4ID09IGJvdW5kYXJ5KSB7XG4gICAgICAgICAgbGVmdFNpZGUgPSBkaXIgPCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxlZnRTaWRlID0gZGlyID4gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIHVzZVBhcnQgPSBvcmRlcltib3VuZGFyeSArIChsZWZ0U2lkZSA/IC0xIDogMCldO1xuICAgICAgdmFyIGZyb20gPSBsZWZ0U2lkZSA9PSAodXNlUGFydC5sZXZlbCA9PSAxKTtcbiAgICAgIHZhciBjaCA9IGZyb20gPyB1c2VQYXJ0LmZyb20gOiB1c2VQYXJ0LnRvLCBzdGlja3kgPSBmcm9tID8gXCJhZnRlclwiIDogXCJiZWZvcmVcIjtcbiAgICAgIHJldHVybiBhbmNob3IuY2ggPT0gY2ggJiYgYW5jaG9yLnN0aWNreSA9PSBzdGlja3kgPyByYW5nZTIgOiBuZXcgUmFuZ2UobmV3IFBvcyhhbmNob3IubGluZSwgY2gsIHN0aWNreSksIGhlYWQpO1xuICAgIH1cbiAgICBfX25hbWUoYmlkaVNpbXBsaWZ5LCBcImJpZGlTaW1wbGlmeVwiKTtcbiAgICBmdW5jdGlvbiBndXR0ZXJFdmVudChjbSwgZSwgdHlwZSwgcHJldmVudCkge1xuICAgICAgdmFyIG1YLCBtWTtcbiAgICAgIGlmIChlLnRvdWNoZXMpIHtcbiAgICAgICAgbVggPSBlLnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICAgICAgbVkgPSBlLnRvdWNoZXNbMF0uY2xpZW50WTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbVggPSBlLmNsaWVudFg7XG4gICAgICAgICAgbVkgPSBlLmNsaWVudFk7XG4gICAgICAgIH0gY2F0Y2ggKGUkMSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG1YID49IE1hdGguZmxvb3IoY20uZGlzcGxheS5ndXR0ZXJzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAocHJldmVudCkge1xuICAgICAgICBlX3ByZXZlbnREZWZhdWx0KGUpO1xuICAgICAgfVxuICAgICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5O1xuICAgICAgdmFyIGxpbmVCb3ggPSBkaXNwbGF5LmxpbmVEaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAobVkgPiBsaW5lQm94LmJvdHRvbSB8fCAhaGFzSGFuZGxlcihjbSwgdHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIGVfZGVmYXVsdFByZXZlbnRlZChlKTtcbiAgICAgIH1cbiAgICAgIG1ZIC09IGxpbmVCb3gudG9wIC0gZGlzcGxheS52aWV3T2Zmc2V0O1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGNtLmRpc3BsYXkuZ3V0dGVyU3BlY3MubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgIHZhciBnID0gZGlzcGxheS5ndXR0ZXJzLmNoaWxkTm9kZXNbaTJdO1xuICAgICAgICBpZiAoZyAmJiBnLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0ID49IG1YKSB7XG4gICAgICAgICAgdmFyIGxpbmUgPSBsaW5lQXRIZWlnaHQoY20uZG9jLCBtWSk7XG4gICAgICAgICAgdmFyIGd1dHRlciA9IGNtLmRpc3BsYXkuZ3V0dGVyU3BlY3NbaTJdO1xuICAgICAgICAgIHNpZ25hbChjbSwgdHlwZSwgY20sIGxpbmUsIGd1dHRlci5jbGFzc05hbWUsIGUpO1xuICAgICAgICAgIHJldHVybiBlX2RlZmF1bHRQcmV2ZW50ZWQoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGd1dHRlckV2ZW50LCBcImd1dHRlckV2ZW50XCIpO1xuICAgIGZ1bmN0aW9uIGNsaWNrSW5HdXR0ZXIoY20sIGUpIHtcbiAgICAgIHJldHVybiBndXR0ZXJFdmVudChjbSwgZSwgXCJndXR0ZXJDbGlja1wiLCB0cnVlKTtcbiAgICB9XG4gICAgX19uYW1lKGNsaWNrSW5HdXR0ZXIsIFwiY2xpY2tJbkd1dHRlclwiKTtcbiAgICBmdW5jdGlvbiBvbkNvbnRleHRNZW51KGNtLCBlKSB7XG4gICAgICBpZiAoZXZlbnRJbldpZGdldChjbS5kaXNwbGF5LCBlKSB8fCBjb250ZXh0TWVudUluR3V0dGVyKGNtLCBlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoc2lnbmFsRE9NRXZlbnQoY20sIGUsIFwiY29udGV4dG1lbnVcIikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFjYXB0dXJlUmlnaHRDbGljaykge1xuICAgICAgICBjbS5kaXNwbGF5LmlucHV0Lm9uQ29udGV4dE1lbnUoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShvbkNvbnRleHRNZW51LCBcIm9uQ29udGV4dE1lbnVcIik7XG4gICAgZnVuY3Rpb24gY29udGV4dE1lbnVJbkd1dHRlcihjbSwgZSkge1xuICAgICAgaWYgKCFoYXNIYW5kbGVyKGNtLCBcImd1dHRlckNvbnRleHRNZW51XCIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBndXR0ZXJFdmVudChjbSwgZSwgXCJndXR0ZXJDb250ZXh0TWVudVwiLCBmYWxzZSk7XG4gICAgfVxuICAgIF9fbmFtZShjb250ZXh0TWVudUluR3V0dGVyLCBcImNvbnRleHRNZW51SW5HdXR0ZXJcIik7XG4gICAgZnVuY3Rpb24gdGhlbWVDaGFuZ2VkKGNtKSB7XG4gICAgICBjbS5kaXNwbGF5LndyYXBwZXIuY2xhc3NOYW1lID0gY20uZGlzcGxheS53cmFwcGVyLmNsYXNzTmFtZS5yZXBsYWNlKC9cXHMqY20tcy1cXFMrL2csIFwiXCIpICsgY20ub3B0aW9ucy50aGVtZS5yZXBsYWNlKC8oXnxcXHMpXFxzKi9nLCBcIiBjbS1zLVwiKTtcbiAgICAgIGNsZWFyQ2FjaGVzKGNtKTtcbiAgICB9XG4gICAgX19uYW1lKHRoZW1lQ2hhbmdlZCwgXCJ0aGVtZUNoYW5nZWRcIik7XG4gICAgdmFyIEluaXQgPSB7IHRvU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIkNvZGVNaXJyb3IuSW5pdFwiO1xuICAgIH0gfTtcbiAgICB2YXIgZGVmYXVsdHMgPSB7fTtcbiAgICB2YXIgb3B0aW9uSGFuZGxlcnMgPSB7fTtcbiAgICBmdW5jdGlvbiBkZWZpbmVPcHRpb25zKENvZGVNaXJyb3IzKSB7XG4gICAgICB2YXIgb3B0aW9uSGFuZGxlcnMyID0gQ29kZU1pcnJvcjMub3B0aW9uSGFuZGxlcnM7XG4gICAgICBmdW5jdGlvbiBvcHRpb24obmFtZSwgZGVmbHQsIGhhbmRsZSwgbm90T25Jbml0KSB7XG4gICAgICAgIENvZGVNaXJyb3IzLmRlZmF1bHRzW25hbWVdID0gZGVmbHQ7XG4gICAgICAgIGlmIChoYW5kbGUpIHtcbiAgICAgICAgICBvcHRpb25IYW5kbGVyczJbbmFtZV0gPSBub3RPbkluaXQgPyBmdW5jdGlvbihjbSwgdmFsLCBvbGQpIHtcbiAgICAgICAgICAgIGlmIChvbGQgIT0gSW5pdCkge1xuICAgICAgICAgICAgICBoYW5kbGUoY20sIHZhbCwgb2xkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IDogaGFuZGxlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUob3B0aW9uLCBcIm9wdGlvblwiKTtcbiAgICAgIENvZGVNaXJyb3IzLmRlZmluZU9wdGlvbiA9IG9wdGlvbjtcbiAgICAgIENvZGVNaXJyb3IzLkluaXQgPSBJbml0O1xuICAgICAgb3B0aW9uKFwidmFsdWVcIiwgXCJcIiwgZnVuY3Rpb24oY20sIHZhbCkge1xuICAgICAgICByZXR1cm4gY20uc2V0VmFsdWUodmFsKTtcbiAgICAgIH0sIHRydWUpO1xuICAgICAgb3B0aW9uKFwibW9kZVwiLCBudWxsLCBmdW5jdGlvbihjbSwgdmFsKSB7XG4gICAgICAgIGNtLmRvYy5tb2RlT3B0aW9uID0gdmFsO1xuICAgICAgICBsb2FkTW9kZShjbSk7XG4gICAgICB9LCB0cnVlKTtcbiAgICAgIG9wdGlvbihcImluZGVudFVuaXRcIiwgMiwgbG9hZE1vZGUsIHRydWUpO1xuICAgICAgb3B0aW9uKFwiaW5kZW50V2l0aFRhYnNcIiwgZmFsc2UpO1xuICAgICAgb3B0aW9uKFwic21hcnRJbmRlbnRcIiwgdHJ1ZSk7XG4gICAgICBvcHRpb24oXCJ0YWJTaXplXCIsIDQsIGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJlc2V0TW9kZVN0YXRlKGNtKTtcbiAgICAgICAgY2xlYXJDYWNoZXMoY20pO1xuICAgICAgICByZWdDaGFuZ2UoY20pO1xuICAgICAgfSwgdHJ1ZSk7XG4gICAgICBvcHRpb24oXCJsaW5lU2VwYXJhdG9yXCIsIG51bGwsIGZ1bmN0aW9uKGNtLCB2YWwpIHtcbiAgICAgICAgY20uZG9jLmxpbmVTZXAgPSB2YWw7XG4gICAgICAgIGlmICghdmFsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBuZXdCcmVha3MgPSBbXSwgbGluZU5vMiA9IGNtLmRvYy5maXJzdDtcbiAgICAgICAgY20uZG9jLml0ZXIoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgIGZvciAodmFyIHBvcyA9IDA7IDsgKSB7XG4gICAgICAgICAgICB2YXIgZm91bmQgPSBsaW5lLnRleHQuaW5kZXhPZih2YWwsIHBvcyk7XG4gICAgICAgICAgICBpZiAoZm91bmQgPT0gLTEpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3MgPSBmb3VuZCArIHZhbC5sZW5ndGg7XG4gICAgICAgICAgICBuZXdCcmVha3MucHVzaChQb3MobGluZU5vMiwgZm91bmQpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGluZU5vMisrO1xuICAgICAgICB9KTtcbiAgICAgICAgZm9yICh2YXIgaTIgPSBuZXdCcmVha3MubGVuZ3RoIC0gMTsgaTIgPj0gMDsgaTItLSkge1xuICAgICAgICAgIHJlcGxhY2VSYW5nZShjbS5kb2MsIHZhbCwgbmV3QnJlYWtzW2kyXSwgUG9zKG5ld0JyZWFrc1tpMl0ubGluZSwgbmV3QnJlYWtzW2kyXS5jaCArIHZhbC5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBvcHRpb24oXCJzcGVjaWFsQ2hhcnNcIiwgL1tcXHUwMDAwLVxcdTAwMWZcXHUwMDdmLVxcdTAwOWZcXHUwMGFkXFx1MDYxY1xcdTIwMGJcXHUyMDBlXFx1MjAwZlxcdTIwMjhcXHUyMDI5XFx1ZmVmZlxcdWZmZjktXFx1ZmZmY10vZywgZnVuY3Rpb24oY20sIHZhbCwgb2xkKSB7XG4gICAgICAgIGNtLnN0YXRlLnNwZWNpYWxDaGFycyA9IG5ldyBSZWdFeHAodmFsLnNvdXJjZSArICh2YWwudGVzdChcIlx0XCIpID8gXCJcIiA6IFwifFx0XCIpLCBcImdcIik7XG4gICAgICAgIGlmIChvbGQgIT0gSW5pdCkge1xuICAgICAgICAgIGNtLnJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBvcHRpb24oXCJzcGVjaWFsQ2hhclBsYWNlaG9sZGVyXCIsIGRlZmF1bHRTcGVjaWFsQ2hhclBsYWNlaG9sZGVyLCBmdW5jdGlvbihjbSkge1xuICAgICAgICByZXR1cm4gY20ucmVmcmVzaCgpO1xuICAgICAgfSwgdHJ1ZSk7XG4gICAgICBvcHRpb24oXCJlbGVjdHJpY0NoYXJzXCIsIHRydWUpO1xuICAgICAgb3B0aW9uKFwiaW5wdXRTdHlsZVwiLCBtb2JpbGUgPyBcImNvbnRlbnRlZGl0YWJsZVwiIDogXCJ0ZXh0YXJlYVwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW5wdXRTdHlsZSBjYW4gbm90ICh5ZXQpIGJlIGNoYW5nZWQgaW4gYSBydW5uaW5nIGVkaXRvclwiKTtcbiAgICAgIH0sIHRydWUpO1xuICAgICAgb3B0aW9uKFwic3BlbGxjaGVja1wiLCBmYWxzZSwgZnVuY3Rpb24oY20sIHZhbCkge1xuICAgICAgICByZXR1cm4gY20uZ2V0SW5wdXRGaWVsZCgpLnNwZWxsY2hlY2sgPSB2YWw7XG4gICAgICB9LCB0cnVlKTtcbiAgICAgIG9wdGlvbihcImF1dG9jb3JyZWN0XCIsIGZhbHNlLCBmdW5jdGlvbihjbSwgdmFsKSB7XG4gICAgICAgIHJldHVybiBjbS5nZXRJbnB1dEZpZWxkKCkuYXV0b2NvcnJlY3QgPSB2YWw7XG4gICAgICB9LCB0cnVlKTtcbiAgICAgIG9wdGlvbihcImF1dG9jYXBpdGFsaXplXCIsIGZhbHNlLCBmdW5jdGlvbihjbSwgdmFsKSB7XG4gICAgICAgIHJldHVybiBjbS5nZXRJbnB1dEZpZWxkKCkuYXV0b2NhcGl0YWxpemUgPSB2YWw7XG4gICAgICB9LCB0cnVlKTtcbiAgICAgIG9wdGlvbihcInJ0bE1vdmVWaXN1YWxseVwiLCAhd2luZG93cyk7XG4gICAgICBvcHRpb24oXCJ3aG9sZUxpbmVVcGRhdGVCZWZvcmVcIiwgdHJ1ZSk7XG4gICAgICBvcHRpb24oXCJ0aGVtZVwiLCBcImRlZmF1bHRcIiwgZnVuY3Rpb24oY20pIHtcbiAgICAgICAgdGhlbWVDaGFuZ2VkKGNtKTtcbiAgICAgICAgdXBkYXRlR3V0dGVycyhjbSk7XG4gICAgICB9LCB0cnVlKTtcbiAgICAgIG9wdGlvbihcImtleU1hcFwiLCBcImRlZmF1bHRcIiwgZnVuY3Rpb24oY20sIHZhbCwgb2xkKSB7XG4gICAgICAgIHZhciBuZXh0ID0gZ2V0S2V5TWFwKHZhbCk7XG4gICAgICAgIHZhciBwcmV2ID0gb2xkICE9IEluaXQgJiYgZ2V0S2V5TWFwKG9sZCk7XG4gICAgICAgIGlmIChwcmV2ICYmIHByZXYuZGV0YWNoKSB7XG4gICAgICAgICAgcHJldi5kZXRhY2goY20sIG5leHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXh0LmF0dGFjaCkge1xuICAgICAgICAgIG5leHQuYXR0YWNoKGNtLCBwcmV2IHx8IG51bGwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG9wdGlvbihcImV4dHJhS2V5c1wiLCBudWxsKTtcbiAgICAgIG9wdGlvbihcImNvbmZpZ3VyZU1vdXNlXCIsIG51bGwpO1xuICAgICAgb3B0aW9uKFwibGluZVdyYXBwaW5nXCIsIGZhbHNlLCB3cmFwcGluZ0NoYW5nZWQsIHRydWUpO1xuICAgICAgb3B0aW9uKFwiZ3V0dGVyc1wiLCBbXSwgZnVuY3Rpb24oY20sIHZhbCkge1xuICAgICAgICBjbS5kaXNwbGF5Lmd1dHRlclNwZWNzID0gZ2V0R3V0dGVycyh2YWwsIGNtLm9wdGlvbnMubGluZU51bWJlcnMpO1xuICAgICAgICB1cGRhdGVHdXR0ZXJzKGNtKTtcbiAgICAgIH0sIHRydWUpO1xuICAgICAgb3B0aW9uKFwiZml4ZWRHdXR0ZXJcIiwgdHJ1ZSwgZnVuY3Rpb24oY20sIHZhbCkge1xuICAgICAgICBjbS5kaXNwbGF5Lmd1dHRlcnMuc3R5bGUubGVmdCA9IHZhbCA/IGNvbXBlbnNhdGVGb3JIU2Nyb2xsKGNtLmRpc3BsYXkpICsgXCJweFwiIDogXCIwXCI7XG4gICAgICAgIGNtLnJlZnJlc2goKTtcbiAgICAgIH0sIHRydWUpO1xuICAgICAgb3B0aW9uKFwiY292ZXJHdXR0ZXJOZXh0VG9TY3JvbGxiYXJcIiwgZmFsc2UsIGZ1bmN0aW9uKGNtKSB7XG4gICAgICAgIHJldHVybiB1cGRhdGVTY3JvbGxiYXJzKGNtKTtcbiAgICAgIH0sIHRydWUpO1xuICAgICAgb3B0aW9uKFwic2Nyb2xsYmFyU3R5bGVcIiwgXCJuYXRpdmVcIiwgZnVuY3Rpb24oY20pIHtcbiAgICAgICAgaW5pdFNjcm9sbGJhcnMoY20pO1xuICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKGNtKTtcbiAgICAgICAgY20uZGlzcGxheS5zY3JvbGxiYXJzLnNldFNjcm9sbFRvcChjbS5kb2Muc2Nyb2xsVG9wKTtcbiAgICAgICAgY20uZGlzcGxheS5zY3JvbGxiYXJzLnNldFNjcm9sbExlZnQoY20uZG9jLnNjcm9sbExlZnQpO1xuICAgICAgfSwgdHJ1ZSk7XG4gICAgICBvcHRpb24oXCJsaW5lTnVtYmVyc1wiLCBmYWxzZSwgZnVuY3Rpb24oY20sIHZhbCkge1xuICAgICAgICBjbS5kaXNwbGF5Lmd1dHRlclNwZWNzID0gZ2V0R3V0dGVycyhjbS5vcHRpb25zLmd1dHRlcnMsIHZhbCk7XG4gICAgICAgIHVwZGF0ZUd1dHRlcnMoY20pO1xuICAgICAgfSwgdHJ1ZSk7XG4gICAgICBvcHRpb24oXCJmaXJzdExpbmVOdW1iZXJcIiwgMSwgdXBkYXRlR3V0dGVycywgdHJ1ZSk7XG4gICAgICBvcHRpb24oXCJsaW5lTnVtYmVyRm9ybWF0dGVyXCIsIGZ1bmN0aW9uKGludGVnZXIpIHtcbiAgICAgICAgcmV0dXJuIGludGVnZXI7XG4gICAgICB9LCB1cGRhdGVHdXR0ZXJzLCB0cnVlKTtcbiAgICAgIG9wdGlvbihcInNob3dDdXJzb3JXaGVuU2VsZWN0aW5nXCIsIGZhbHNlLCB1cGRhdGVTZWxlY3Rpb24sIHRydWUpO1xuICAgICAgb3B0aW9uKFwicmVzZXRTZWxlY3Rpb25PbkNvbnRleHRNZW51XCIsIHRydWUpO1xuICAgICAgb3B0aW9uKFwibGluZVdpc2VDb3B5Q3V0XCIsIHRydWUpO1xuICAgICAgb3B0aW9uKFwicGFzdGVMaW5lc1BlclNlbGVjdGlvblwiLCB0cnVlKTtcbiAgICAgIG9wdGlvbihcInNlbGVjdGlvbnNNYXlUb3VjaFwiLCBmYWxzZSk7XG4gICAgICBvcHRpb24oXCJyZWFkT25seVwiLCBmYWxzZSwgZnVuY3Rpb24oY20sIHZhbCkge1xuICAgICAgICBpZiAodmFsID09IFwibm9jdXJzb3JcIikge1xuICAgICAgICAgIG9uQmx1cihjbSk7XG4gICAgICAgICAgY20uZGlzcGxheS5pbnB1dC5ibHVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgY20uZGlzcGxheS5pbnB1dC5yZWFkT25seUNoYW5nZWQodmFsKTtcbiAgICAgIH0pO1xuICAgICAgb3B0aW9uKFwic2NyZWVuUmVhZGVyTGFiZWxcIiwgbnVsbCwgZnVuY3Rpb24oY20sIHZhbCkge1xuICAgICAgICB2YWwgPSB2YWwgPT09IFwiXCIgPyBudWxsIDogdmFsO1xuICAgICAgICBjbS5kaXNwbGF5LmlucHV0LnNjcmVlblJlYWRlckxhYmVsQ2hhbmdlZCh2YWwpO1xuICAgICAgfSk7XG4gICAgICBvcHRpb24oXCJkaXNhYmxlSW5wdXRcIiwgZmFsc2UsIGZ1bmN0aW9uKGNtLCB2YWwpIHtcbiAgICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgICBjbS5kaXNwbGF5LmlucHV0LnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sIHRydWUpO1xuICAgICAgb3B0aW9uKFwiZHJhZ0Ryb3BcIiwgdHJ1ZSwgZHJhZ0Ryb3BDaGFuZ2VkKTtcbiAgICAgIG9wdGlvbihcImFsbG93RHJvcEZpbGVUeXBlc1wiLCBudWxsKTtcbiAgICAgIG9wdGlvbihcImN1cnNvckJsaW5rUmF0ZVwiLCA1MzApO1xuICAgICAgb3B0aW9uKFwiY3Vyc29yU2Nyb2xsTWFyZ2luXCIsIDApO1xuICAgICAgb3B0aW9uKFwiY3Vyc29ySGVpZ2h0XCIsIDEsIHVwZGF0ZVNlbGVjdGlvbiwgdHJ1ZSk7XG4gICAgICBvcHRpb24oXCJzaW5nbGVDdXJzb3JIZWlnaHRQZXJMaW5lXCIsIHRydWUsIHVwZGF0ZVNlbGVjdGlvbiwgdHJ1ZSk7XG4gICAgICBvcHRpb24oXCJ3b3JrVGltZVwiLCAxMDApO1xuICAgICAgb3B0aW9uKFwid29ya0RlbGF5XCIsIDEwMCk7XG4gICAgICBvcHRpb24oXCJmbGF0dGVuU3BhbnNcIiwgdHJ1ZSwgcmVzZXRNb2RlU3RhdGUsIHRydWUpO1xuICAgICAgb3B0aW9uKFwiYWRkTW9kZUNsYXNzXCIsIGZhbHNlLCByZXNldE1vZGVTdGF0ZSwgdHJ1ZSk7XG4gICAgICBvcHRpb24oXCJwb2xsSW50ZXJ2YWxcIiwgMTAwKTtcbiAgICAgIG9wdGlvbihcInVuZG9EZXB0aFwiLCAyMDAsIGZ1bmN0aW9uKGNtLCB2YWwpIHtcbiAgICAgICAgcmV0dXJuIGNtLmRvYy5oaXN0b3J5LnVuZG9EZXB0aCA9IHZhbDtcbiAgICAgIH0pO1xuICAgICAgb3B0aW9uKFwiaGlzdG9yeUV2ZW50RGVsYXlcIiwgMTI1MCk7XG4gICAgICBvcHRpb24oXCJ2aWV3cG9ydE1hcmdpblwiLCAxMCwgZnVuY3Rpb24oY20pIHtcbiAgICAgICAgcmV0dXJuIGNtLnJlZnJlc2goKTtcbiAgICAgIH0sIHRydWUpO1xuICAgICAgb3B0aW9uKFwibWF4SGlnaGxpZ2h0TGVuZ3RoXCIsIDFlNCwgcmVzZXRNb2RlU3RhdGUsIHRydWUpO1xuICAgICAgb3B0aW9uKFwibW92ZUlucHV0V2l0aEN1cnNvclwiLCB0cnVlLCBmdW5jdGlvbihjbSwgdmFsKSB7XG4gICAgICAgIGlmICghdmFsKSB7XG4gICAgICAgICAgY20uZGlzcGxheS5pbnB1dC5yZXNldFBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgb3B0aW9uKFwidGFiaW5kZXhcIiwgbnVsbCwgZnVuY3Rpb24oY20sIHZhbCkge1xuICAgICAgICByZXR1cm4gY20uZGlzcGxheS5pbnB1dC5nZXRGaWVsZCgpLnRhYkluZGV4ID0gdmFsIHx8IFwiXCI7XG4gICAgICB9KTtcbiAgICAgIG9wdGlvbihcImF1dG9mb2N1c1wiLCBudWxsKTtcbiAgICAgIG9wdGlvbihcImRpcmVjdGlvblwiLCBcImx0clwiLCBmdW5jdGlvbihjbSwgdmFsKSB7XG4gICAgICAgIHJldHVybiBjbS5kb2Muc2V0RGlyZWN0aW9uKHZhbCk7XG4gICAgICB9LCB0cnVlKTtcbiAgICAgIG9wdGlvbihcInBocmFzZXNcIiwgbnVsbCk7XG4gICAgfVxuICAgIF9fbmFtZShkZWZpbmVPcHRpb25zLCBcImRlZmluZU9wdGlvbnNcIik7XG4gICAgZnVuY3Rpb24gZHJhZ0Ryb3BDaGFuZ2VkKGNtLCB2YWx1ZSwgb2xkKSB7XG4gICAgICB2YXIgd2FzT24gPSBvbGQgJiYgb2xkICE9IEluaXQ7XG4gICAgICBpZiAoIXZhbHVlICE9ICF3YXNPbikge1xuICAgICAgICB2YXIgZnVuY3MgPSBjbS5kaXNwbGF5LmRyYWdGdW5jdGlvbnM7XG4gICAgICAgIHZhciB0b2dnbGUgPSB2YWx1ZSA/IG9uIDogb2ZmO1xuICAgICAgICB0b2dnbGUoY20uZGlzcGxheS5zY3JvbGxlciwgXCJkcmFnc3RhcnRcIiwgZnVuY3Muc3RhcnQpO1xuICAgICAgICB0b2dnbGUoY20uZGlzcGxheS5zY3JvbGxlciwgXCJkcmFnZW50ZXJcIiwgZnVuY3MuZW50ZXIpO1xuICAgICAgICB0b2dnbGUoY20uZGlzcGxheS5zY3JvbGxlciwgXCJkcmFnb3ZlclwiLCBmdW5jcy5vdmVyKTtcbiAgICAgICAgdG9nZ2xlKGNtLmRpc3BsYXkuc2Nyb2xsZXIsIFwiZHJhZ2xlYXZlXCIsIGZ1bmNzLmxlYXZlKTtcbiAgICAgICAgdG9nZ2xlKGNtLmRpc3BsYXkuc2Nyb2xsZXIsIFwiZHJvcFwiLCBmdW5jcy5kcm9wKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGRyYWdEcm9wQ2hhbmdlZCwgXCJkcmFnRHJvcENoYW5nZWRcIik7XG4gICAgZnVuY3Rpb24gd3JhcHBpbmdDaGFuZ2VkKGNtKSB7XG4gICAgICBpZiAoY20ub3B0aW9ucy5saW5lV3JhcHBpbmcpIHtcbiAgICAgICAgYWRkQ2xhc3MoY20uZGlzcGxheS53cmFwcGVyLCBcIkNvZGVNaXJyb3Itd3JhcFwiKTtcbiAgICAgICAgY20uZGlzcGxheS5zaXplci5zdHlsZS5taW5XaWR0aCA9IFwiXCI7XG4gICAgICAgIGNtLmRpc3BsYXkuc2l6ZXJXaWR0aCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBybUNsYXNzKGNtLmRpc3BsYXkud3JhcHBlciwgXCJDb2RlTWlycm9yLXdyYXBcIik7XG4gICAgICAgIGZpbmRNYXhMaW5lKGNtKTtcbiAgICAgIH1cbiAgICAgIGVzdGltYXRlTGluZUhlaWdodHMoY20pO1xuICAgICAgcmVnQ2hhbmdlKGNtKTtcbiAgICAgIGNsZWFyQ2FjaGVzKGNtKTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB1cGRhdGVTY3JvbGxiYXJzKGNtKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICAgIF9fbmFtZSh3cmFwcGluZ0NoYW5nZWQsIFwid3JhcHBpbmdDaGFuZ2VkXCIpO1xuICAgIGZ1bmN0aW9uIENvZGVNaXJyb3IyKHBsYWNlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENvZGVNaXJyb3IyKSkge1xuICAgICAgICByZXR1cm4gbmV3IENvZGVNaXJyb3IyKHBsYWNlLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPSBvcHRpb25zID8gY29weU9iaihvcHRpb25zKSA6IHt9O1xuICAgICAgY29weU9iaihkZWZhdWx0cywgb3B0aW9ucywgZmFsc2UpO1xuICAgICAgdmFyIGRvYyA9IG9wdGlvbnMudmFsdWU7XG4gICAgICBpZiAodHlwZW9mIGRvYyA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGRvYyA9IG5ldyBEb2MoZG9jLCBvcHRpb25zLm1vZGUsIG51bGwsIG9wdGlvbnMubGluZVNlcGFyYXRvciwgb3B0aW9ucy5kaXJlY3Rpb24pO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLm1vZGUpIHtcbiAgICAgICAgZG9jLm1vZGVPcHRpb24gPSBvcHRpb25zLm1vZGU7XG4gICAgICB9XG4gICAgICB0aGlzLmRvYyA9IGRvYztcbiAgICAgIHZhciBpbnB1dCA9IG5ldyBDb2RlTWlycm9yMi5pbnB1dFN0eWxlc1tvcHRpb25zLmlucHV0U3R5bGVdKHRoaXMpO1xuICAgICAgdmFyIGRpc3BsYXkgPSB0aGlzLmRpc3BsYXkgPSBuZXcgRGlzcGxheShwbGFjZSwgZG9jLCBpbnB1dCwgb3B0aW9ucyk7XG4gICAgICBkaXNwbGF5LndyYXBwZXIuQ29kZU1pcnJvciA9IHRoaXM7XG4gICAgICB0aGVtZUNoYW5nZWQodGhpcyk7XG4gICAgICBpZiAob3B0aW9ucy5saW5lV3JhcHBpbmcpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5LndyYXBwZXIuY2xhc3NOYW1lICs9IFwiIENvZGVNaXJyb3Itd3JhcFwiO1xuICAgICAgfVxuICAgICAgaW5pdFNjcm9sbGJhcnModGhpcyk7XG4gICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICBrZXlNYXBzOiBbXSxcbiAgICAgICAgb3ZlcmxheXM6IFtdLFxuICAgICAgICBtb2RlR2VuOiAwLFxuICAgICAgICBvdmVyd3JpdGU6IGZhbHNlLFxuICAgICAgICBkZWxheWluZ0JsdXJFdmVudDogZmFsc2UsXG4gICAgICAgIGZvY3VzZWQ6IGZhbHNlLFxuICAgICAgICBzdXBwcmVzc0VkaXRzOiBmYWxzZSxcbiAgICAgICAgcGFzdGVJbmNvbWluZzogLTEsXG4gICAgICAgIGN1dEluY29taW5nOiAtMSxcbiAgICAgICAgc2VsZWN0aW5nVGV4dDogZmFsc2UsXG4gICAgICAgIGRyYWdnaW5nVGV4dDogZmFsc2UsXG4gICAgICAgIGhpZ2hsaWdodDogbmV3IERlbGF5ZWQoKSxcbiAgICAgICAga2V5U2VxOiBudWxsLFxuICAgICAgICBzcGVjaWFsQ2hhcnM6IG51bGxcbiAgICAgIH07XG4gICAgICBpZiAob3B0aW9ucy5hdXRvZm9jdXMgJiYgIW1vYmlsZSkge1xuICAgICAgICBkaXNwbGF5LmlucHV0LmZvY3VzKCk7XG4gICAgICB9XG4gICAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA8IDExKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMkMSQxLmRpc3BsYXkuaW5wdXQucmVzZXQodHJ1ZSk7XG4gICAgICAgIH0sIDIwKTtcbiAgICAgIH1cbiAgICAgIHJlZ2lzdGVyRXZlbnRIYW5kbGVycyh0aGlzKTtcbiAgICAgIGVuc3VyZUdsb2JhbEhhbmRsZXJzKCk7XG4gICAgICBzdGFydE9wZXJhdGlvbih0aGlzKTtcbiAgICAgIHRoaXMuY3VyT3AuZm9yY2VVcGRhdGUgPSB0cnVlO1xuICAgICAgYXR0YWNoRG9jKHRoaXMsIGRvYyk7XG4gICAgICBpZiAob3B0aW9ucy5hdXRvZm9jdXMgJiYgIW1vYmlsZSB8fCB0aGlzLmhhc0ZvY3VzKCkpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAodGhpcyQxJDEuaGFzRm9jdXMoKSAmJiAhdGhpcyQxJDEuc3RhdGUuZm9jdXNlZCkge1xuICAgICAgICAgICAgb25Gb2N1cyh0aGlzJDEkMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAyMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkJsdXIodGhpcyk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBvcHQgaW4gb3B0aW9uSGFuZGxlcnMpIHtcbiAgICAgICAgaWYgKG9wdGlvbkhhbmRsZXJzLmhhc093blByb3BlcnR5KG9wdCkpIHtcbiAgICAgICAgICBvcHRpb25IYW5kbGVyc1tvcHRdKHRoaXMsIG9wdGlvbnNbb3B0XSwgSW5pdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG1heWJlVXBkYXRlTGluZU51bWJlcldpZHRoKHRoaXMpO1xuICAgICAgaWYgKG9wdGlvbnMuZmluaXNoSW5pdCkge1xuICAgICAgICBvcHRpb25zLmZpbmlzaEluaXQodGhpcyk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgaW5pdEhvb2tzLmxlbmd0aDsgKytpMikge1xuICAgICAgICBpbml0SG9va3NbaTJdKHRoaXMpO1xuICAgICAgfVxuICAgICAgZW5kT3BlcmF0aW9uKHRoaXMpO1xuICAgICAgaWYgKHdlYmtpdCAmJiBvcHRpb25zLmxpbmVXcmFwcGluZyAmJiBnZXRDb21wdXRlZFN0eWxlKGRpc3BsYXkubGluZURpdikudGV4dFJlbmRlcmluZyA9PSBcIm9wdGltaXplbGVnaWJpbGl0eVwiKSB7XG4gICAgICAgIGRpc3BsYXkubGluZURpdi5zdHlsZS50ZXh0UmVuZGVyaW5nID0gXCJhdXRvXCI7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShDb2RlTWlycm9yMiwgXCJDb2RlTWlycm9yXCIpO1xuICAgIENvZGVNaXJyb3IyLmRlZmF1bHRzID0gZGVmYXVsdHM7XG4gICAgQ29kZU1pcnJvcjIub3B0aW9uSGFuZGxlcnMgPSBvcHRpb25IYW5kbGVycztcbiAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50SGFuZGxlcnMoY20pIHtcbiAgICAgIHZhciBkID0gY20uZGlzcGxheTtcbiAgICAgIG9uKGQuc2Nyb2xsZXIsIFwibW91c2Vkb3duXCIsIG9wZXJhdGlvbihjbSwgb25Nb3VzZURvd24pKTtcbiAgICAgIGlmIChpZSAmJiBpZV92ZXJzaW9uIDwgMTEpIHtcbiAgICAgICAgb24oZC5zY3JvbGxlciwgXCJkYmxjbGlja1wiLCBvcGVyYXRpb24oY20sIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICBpZiAoc2lnbmFsRE9NRXZlbnQoY20sIGUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBwb3MgPSBwb3NGcm9tTW91c2UoY20sIGUpO1xuICAgICAgICAgIGlmICghcG9zIHx8IGNsaWNrSW5HdXR0ZXIoY20sIGUpIHx8IGV2ZW50SW5XaWRnZXQoY20uZGlzcGxheSwgZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTtcbiAgICAgICAgICB2YXIgd29yZCA9IGNtLmZpbmRXb3JkQXQocG9zKTtcbiAgICAgICAgICBleHRlbmRTZWxlY3Rpb24oY20uZG9jLCB3b3JkLmFuY2hvciwgd29yZC5oZWFkKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb24oZC5zY3JvbGxlciwgXCJkYmxjbGlja1wiLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgcmV0dXJuIHNpZ25hbERPTUV2ZW50KGNtLCBlKSB8fCBlX3ByZXZlbnREZWZhdWx0KGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG9uKGQuc2Nyb2xsZXIsIFwiY29udGV4dG1lbnVcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICByZXR1cm4gb25Db250ZXh0TWVudShjbSwgZSk7XG4gICAgICB9KTtcbiAgICAgIG9uKGQuaW5wdXQuZ2V0RmllbGQoKSwgXCJjb250ZXh0bWVudVwiLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIGlmICghZC5zY3JvbGxlci5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICAgICAgICBvbkNvbnRleHRNZW51KGNtLCBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgdG91Y2hGaW5pc2hlZCwgcHJldlRvdWNoID0geyBlbmQ6IDAgfTtcbiAgICAgIGZ1bmN0aW9uIGZpbmlzaFRvdWNoKCkge1xuICAgICAgICBpZiAoZC5hY3RpdmVUb3VjaCkge1xuICAgICAgICAgIHRvdWNoRmluaXNoZWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIGQuYWN0aXZlVG91Y2ggPSBudWxsO1xuICAgICAgICAgIH0sIDFlMyk7XG4gICAgICAgICAgcHJldlRvdWNoID0gZC5hY3RpdmVUb3VjaDtcbiAgICAgICAgICBwcmV2VG91Y2guZW5kID0gK25ldyBEYXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9fbmFtZShmaW5pc2hUb3VjaCwgXCJmaW5pc2hUb3VjaFwiKTtcbiAgICAgIGZ1bmN0aW9uIGlzTW91c2VMaWtlVG91Y2hFdmVudChlKSB7XG4gICAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoICE9IDEpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvdWNoID0gZS50b3VjaGVzWzBdO1xuICAgICAgICByZXR1cm4gdG91Y2gucmFkaXVzWCA8PSAxICYmIHRvdWNoLnJhZGl1c1kgPD0gMTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShpc01vdXNlTGlrZVRvdWNoRXZlbnQsIFwiaXNNb3VzZUxpa2VUb3VjaEV2ZW50XCIpO1xuICAgICAgZnVuY3Rpb24gZmFyQXdheSh0b3VjaCwgb3RoZXIpIHtcbiAgICAgICAgaWYgKG90aGVyLmxlZnQgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkeCA9IG90aGVyLmxlZnQgLSB0b3VjaC5sZWZ0LCBkeSA9IG90aGVyLnRvcCAtIHRvdWNoLnRvcDtcbiAgICAgICAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5ID4gMjAgKiAyMDtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShmYXJBd2F5LCBcImZhckF3YXlcIik7XG4gICAgICBvbihkLnNjcm9sbGVyLCBcInRvdWNoc3RhcnRcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICBpZiAoIXNpZ25hbERPTUV2ZW50KGNtLCBlKSAmJiAhaXNNb3VzZUxpa2VUb3VjaEV2ZW50KGUpICYmICFjbGlja0luR3V0dGVyKGNtLCBlKSkge1xuICAgICAgICAgIGQuaW5wdXQuZW5zdXJlUG9sbGVkKCk7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRvdWNoRmluaXNoZWQpO1xuICAgICAgICAgIHZhciBub3cgPSArbmV3IERhdGUoKTtcbiAgICAgICAgICBkLmFjdGl2ZVRvdWNoID0ge1xuICAgICAgICAgICAgc3RhcnQ6IG5vdyxcbiAgICAgICAgICAgIG1vdmVkOiBmYWxzZSxcbiAgICAgICAgICAgIHByZXY6IG5vdyAtIHByZXZUb3VjaC5lbmQgPD0gMzAwID8gcHJldlRvdWNoIDogbnVsbFxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgZC5hY3RpdmVUb3VjaC5sZWZ0ID0gZS50b3VjaGVzWzBdLnBhZ2VYO1xuICAgICAgICAgICAgZC5hY3RpdmVUb3VjaC50b3AgPSBlLnRvdWNoZXNbMF0ucGFnZVk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG9uKGQuc2Nyb2xsZXIsIFwidG91Y2htb3ZlXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoZC5hY3RpdmVUb3VjaCkge1xuICAgICAgICAgIGQuYWN0aXZlVG91Y2gubW92ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG9uKGQuc2Nyb2xsZXIsIFwidG91Y2hlbmRcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICB2YXIgdG91Y2ggPSBkLmFjdGl2ZVRvdWNoO1xuICAgICAgICBpZiAodG91Y2ggJiYgIWV2ZW50SW5XaWRnZXQoZCwgZSkgJiYgdG91Y2gubGVmdCAhPSBudWxsICYmICF0b3VjaC5tb3ZlZCAmJiBuZXcgRGF0ZSgpIC0gdG91Y2guc3RhcnQgPCAzMDApIHtcbiAgICAgICAgICB2YXIgcG9zID0gY20uY29vcmRzQ2hhcihkLmFjdGl2ZVRvdWNoLCBcInBhZ2VcIiksIHJhbmdlMjtcbiAgICAgICAgICBpZiAoIXRvdWNoLnByZXYgfHwgZmFyQXdheSh0b3VjaCwgdG91Y2gucHJldikpIHtcbiAgICAgICAgICAgIHJhbmdlMiA9IG5ldyBSYW5nZShwb3MsIHBvcyk7XG4gICAgICAgICAgfSBlbHNlIGlmICghdG91Y2gucHJldi5wcmV2IHx8IGZhckF3YXkodG91Y2gsIHRvdWNoLnByZXYucHJldikpIHtcbiAgICAgICAgICAgIHJhbmdlMiA9IGNtLmZpbmRXb3JkQXQocG9zKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmFuZ2UyID0gbmV3IFJhbmdlKFBvcyhwb3MubGluZSwgMCksIGNsaXBQb3MoY20uZG9jLCBQb3MocG9zLmxpbmUgKyAxLCAwKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjbS5zZXRTZWxlY3Rpb24ocmFuZ2UyLmFuY2hvciwgcmFuZ2UyLmhlYWQpO1xuICAgICAgICAgIGNtLmZvY3VzKCk7XG4gICAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5pc2hUb3VjaCgpO1xuICAgICAgfSk7XG4gICAgICBvbihkLnNjcm9sbGVyLCBcInRvdWNoY2FuY2VsXCIsIGZpbmlzaFRvdWNoKTtcbiAgICAgIG9uKGQuc2Nyb2xsZXIsIFwic2Nyb2xsXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoZC5zY3JvbGxlci5jbGllbnRIZWlnaHQpIHtcbiAgICAgICAgICB1cGRhdGVTY3JvbGxUb3AoY20sIGQuc2Nyb2xsZXIuc2Nyb2xsVG9wKTtcbiAgICAgICAgICBzZXRTY3JvbGxMZWZ0KGNtLCBkLnNjcm9sbGVyLnNjcm9sbExlZnQsIHRydWUpO1xuICAgICAgICAgIHNpZ25hbChjbSwgXCJzY3JvbGxcIiwgY20pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG9uKGQuc2Nyb2xsZXIsIFwibW91c2V3aGVlbFwiLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIHJldHVybiBvblNjcm9sbFdoZWVsKGNtLCBlKTtcbiAgICAgIH0pO1xuICAgICAgb24oZC5zY3JvbGxlciwgXCJET01Nb3VzZVNjcm9sbFwiLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIHJldHVybiBvblNjcm9sbFdoZWVsKGNtLCBlKTtcbiAgICAgIH0pO1xuICAgICAgb24oZC53cmFwcGVyLCBcInNjcm9sbFwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGQud3JhcHBlci5zY3JvbGxUb3AgPSBkLndyYXBwZXIuc2Nyb2xsTGVmdCA9IDA7XG4gICAgICB9KTtcbiAgICAgIGQuZHJhZ0Z1bmN0aW9ucyA9IHtcbiAgICAgICAgZW50ZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICBpZiAoIXNpZ25hbERPTUV2ZW50KGNtLCBlKSkge1xuICAgICAgICAgICAgZV9zdG9wKGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb3ZlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgIGlmICghc2lnbmFsRE9NRXZlbnQoY20sIGUpKSB7XG4gICAgICAgICAgICBvbkRyYWdPdmVyKGNtLCBlKTtcbiAgICAgICAgICAgIGVfc3RvcChlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHN0YXJ0OiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgcmV0dXJuIG9uRHJhZ1N0YXJ0KGNtLCBlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZHJvcDogb3BlcmF0aW9uKGNtLCBvbkRyb3ApLFxuICAgICAgICBsZWF2ZTogZnVuY3Rpb24oZSkge1xuICAgICAgICAgIGlmICghc2lnbmFsRE9NRXZlbnQoY20sIGUpKSB7XG4gICAgICAgICAgICBjbGVhckRyYWdDdXJzb3IoY20pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHZhciBpbnAgPSBkLmlucHV0LmdldEZpZWxkKCk7XG4gICAgICBvbihpbnAsIFwia2V5dXBcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICByZXR1cm4gb25LZXlVcC5jYWxsKGNtLCBlKTtcbiAgICAgIH0pO1xuICAgICAgb24oaW5wLCBcImtleWRvd25cIiwgb3BlcmF0aW9uKGNtLCBvbktleURvd24pKTtcbiAgICAgIG9uKGlucCwgXCJrZXlwcmVzc1wiLCBvcGVyYXRpb24oY20sIG9uS2V5UHJlc3MpKTtcbiAgICAgIG9uKGlucCwgXCJmb2N1c1wiLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIHJldHVybiBvbkZvY3VzKGNtLCBlKTtcbiAgICAgIH0pO1xuICAgICAgb24oaW5wLCBcImJsdXJcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICByZXR1cm4gb25CbHVyKGNtLCBlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBfX25hbWUocmVnaXN0ZXJFdmVudEhhbmRsZXJzLCBcInJlZ2lzdGVyRXZlbnRIYW5kbGVyc1wiKTtcbiAgICB2YXIgaW5pdEhvb2tzID0gW107XG4gICAgQ29kZU1pcnJvcjIuZGVmaW5lSW5pdEhvb2sgPSBmdW5jdGlvbihmKSB7XG4gICAgICByZXR1cm4gaW5pdEhvb2tzLnB1c2goZik7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBpbmRlbnRMaW5lKGNtLCBuLCBob3csIGFnZ3Jlc3NpdmUpIHtcbiAgICAgIHZhciBkb2MgPSBjbS5kb2MsIHN0YXRlO1xuICAgICAgaWYgKGhvdyA9PSBudWxsKSB7XG4gICAgICAgIGhvdyA9IFwiYWRkXCI7XG4gICAgICB9XG4gICAgICBpZiAoaG93ID09IFwic21hcnRcIikge1xuICAgICAgICBpZiAoIWRvYy5tb2RlLmluZGVudCkge1xuICAgICAgICAgIGhvdyA9IFwicHJldlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gZ2V0Q29udGV4dEJlZm9yZShjbSwgbikuc3RhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciB0YWJTaXplID0gY20ub3B0aW9ucy50YWJTaXplO1xuICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKGRvYywgbiksIGN1clNwYWNlID0gY291bnRDb2x1bW4obGluZS50ZXh0LCBudWxsLCB0YWJTaXplKTtcbiAgICAgIGlmIChsaW5lLnN0YXRlQWZ0ZXIpIHtcbiAgICAgICAgbGluZS5zdGF0ZUFmdGVyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBjdXJTcGFjZVN0cmluZyA9IGxpbmUudGV4dC5tYXRjaCgvXlxccyovKVswXSwgaW5kZW50YXRpb247XG4gICAgICBpZiAoIWFnZ3Jlc3NpdmUgJiYgIS9cXFMvLnRlc3QobGluZS50ZXh0KSkge1xuICAgICAgICBpbmRlbnRhdGlvbiA9IDA7XG4gICAgICAgIGhvdyA9IFwibm90XCI7XG4gICAgICB9IGVsc2UgaWYgKGhvdyA9PSBcInNtYXJ0XCIpIHtcbiAgICAgICAgaW5kZW50YXRpb24gPSBkb2MubW9kZS5pbmRlbnQoc3RhdGUsIGxpbmUudGV4dC5zbGljZShjdXJTcGFjZVN0cmluZy5sZW5ndGgpLCBsaW5lLnRleHQpO1xuICAgICAgICBpZiAoaW5kZW50YXRpb24gPT0gUGFzcyB8fCBpbmRlbnRhdGlvbiA+IDE1MCkge1xuICAgICAgICAgIGlmICghYWdncmVzc2l2ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBob3cgPSBcInByZXZcIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGhvdyA9PSBcInByZXZcIikge1xuICAgICAgICBpZiAobiA+IGRvYy5maXJzdCkge1xuICAgICAgICAgIGluZGVudGF0aW9uID0gY291bnRDb2x1bW4oZ2V0TGluZShkb2MsIG4gLSAxKS50ZXh0LCBudWxsLCB0YWJTaXplKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmRlbnRhdGlvbiA9IDA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaG93ID09IFwiYWRkXCIpIHtcbiAgICAgICAgaW5kZW50YXRpb24gPSBjdXJTcGFjZSArIGNtLm9wdGlvbnMuaW5kZW50VW5pdDtcbiAgICAgIH0gZWxzZSBpZiAoaG93ID09IFwic3VidHJhY3RcIikge1xuICAgICAgICBpbmRlbnRhdGlvbiA9IGN1clNwYWNlIC0gY20ub3B0aW9ucy5pbmRlbnRVbml0O1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaG93ID09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgaW5kZW50YXRpb24gPSBjdXJTcGFjZSArIGhvdztcbiAgICAgIH1cbiAgICAgIGluZGVudGF0aW9uID0gTWF0aC5tYXgoMCwgaW5kZW50YXRpb24pO1xuICAgICAgdmFyIGluZGVudFN0cmluZyA9IFwiXCIsIHBvcyA9IDA7XG4gICAgICBpZiAoY20ub3B0aW9ucy5pbmRlbnRXaXRoVGFicykge1xuICAgICAgICBmb3IgKHZhciBpMiA9IE1hdGguZmxvb3IoaW5kZW50YXRpb24gLyB0YWJTaXplKTsgaTI7IC0taTIpIHtcbiAgICAgICAgICBwb3MgKz0gdGFiU2l6ZTtcbiAgICAgICAgICBpbmRlbnRTdHJpbmcgKz0gXCJcdFwiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocG9zIDwgaW5kZW50YXRpb24pIHtcbiAgICAgICAgaW5kZW50U3RyaW5nICs9IHNwYWNlU3RyKGluZGVudGF0aW9uIC0gcG9zKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRlbnRTdHJpbmcgIT0gY3VyU3BhY2VTdHJpbmcpIHtcbiAgICAgICAgcmVwbGFjZVJhbmdlKGRvYywgaW5kZW50U3RyaW5nLCBQb3MobiwgMCksIFBvcyhuLCBjdXJTcGFjZVN0cmluZy5sZW5ndGgpLCBcIitpbnB1dFwiKTtcbiAgICAgICAgbGluZS5zdGF0ZUFmdGVyID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpJDEyID0gMDsgaSQxMiA8IGRvYy5zZWwucmFuZ2VzLmxlbmd0aDsgaSQxMisrKSB7XG4gICAgICAgICAgdmFyIHJhbmdlMiA9IGRvYy5zZWwucmFuZ2VzW2kkMTJdO1xuICAgICAgICAgIGlmIChyYW5nZTIuaGVhZC5saW5lID09IG4gJiYgcmFuZ2UyLmhlYWQuY2ggPCBjdXJTcGFjZVN0cmluZy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBwb3MkMSA9IFBvcyhuLCBjdXJTcGFjZVN0cmluZy5sZW5ndGgpO1xuICAgICAgICAgICAgcmVwbGFjZU9uZVNlbGVjdGlvbihkb2MsIGkkMTIsIG5ldyBSYW5nZShwb3MkMSwgcG9zJDEpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoaW5kZW50TGluZSwgXCJpbmRlbnRMaW5lXCIpO1xuICAgIHZhciBsYXN0Q29waWVkID0gbnVsbDtcbiAgICBmdW5jdGlvbiBzZXRMYXN0Q29waWVkKG5ld0xhc3RDb3BpZWQpIHtcbiAgICAgIGxhc3RDb3BpZWQgPSBuZXdMYXN0Q29waWVkO1xuICAgIH1cbiAgICBfX25hbWUoc2V0TGFzdENvcGllZCwgXCJzZXRMYXN0Q29waWVkXCIpO1xuICAgIGZ1bmN0aW9uIGFwcGx5VGV4dElucHV0KGNtLCBpbnNlcnRlZCwgZGVsZXRlZCwgc2VsLCBvcmlnaW4pIHtcbiAgICAgIHZhciBkb2MgPSBjbS5kb2M7XG4gICAgICBjbS5kaXNwbGF5LnNoaWZ0ID0gZmFsc2U7XG4gICAgICBpZiAoIXNlbCkge1xuICAgICAgICBzZWwgPSBkb2Muc2VsO1xuICAgICAgfVxuICAgICAgdmFyIHJlY2VudCA9ICtuZXcgRGF0ZSgpIC0gMjAwO1xuICAgICAgdmFyIHBhc3RlID0gb3JpZ2luID09IFwicGFzdGVcIiB8fCBjbS5zdGF0ZS5wYXN0ZUluY29taW5nID4gcmVjZW50O1xuICAgICAgdmFyIHRleHRMaW5lcyA9IHNwbGl0TGluZXNBdXRvKGluc2VydGVkKSwgbXVsdGlQYXN0ZSA9IG51bGw7XG4gICAgICBpZiAocGFzdGUgJiYgc2VsLnJhbmdlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGlmIChsYXN0Q29waWVkICYmIGxhc3RDb3BpZWQudGV4dC5qb2luKFwiXFxuXCIpID09IGluc2VydGVkKSB7XG4gICAgICAgICAgaWYgKHNlbC5yYW5nZXMubGVuZ3RoICUgbGFzdENvcGllZC50ZXh0Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICBtdWx0aVBhc3RlID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgbGFzdENvcGllZC50ZXh0Lmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgICAgICBtdWx0aVBhc3RlLnB1c2goZG9jLnNwbGl0TGluZXMobGFzdENvcGllZC50ZXh0W2kyXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0ZXh0TGluZXMubGVuZ3RoID09IHNlbC5yYW5nZXMubGVuZ3RoICYmIGNtLm9wdGlvbnMucGFzdGVMaW5lc1BlclNlbGVjdGlvbikge1xuICAgICAgICAgIG11bHRpUGFzdGUgPSBtYXAodGV4dExpbmVzLCBmdW5jdGlvbihsKSB7XG4gICAgICAgICAgICByZXR1cm4gW2xdO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgdXBkYXRlSW5wdXQgPSBjbS5jdXJPcC51cGRhdGVJbnB1dDtcbiAgICAgIGZvciAodmFyIGkkMTIgPSBzZWwucmFuZ2VzLmxlbmd0aCAtIDE7IGkkMTIgPj0gMDsgaSQxMi0tKSB7XG4gICAgICAgIHZhciByYW5nZTIgPSBzZWwucmFuZ2VzW2kkMTJdO1xuICAgICAgICB2YXIgZnJvbSA9IHJhbmdlMi5mcm9tKCksIHRvID0gcmFuZ2UyLnRvKCk7XG4gICAgICAgIGlmIChyYW5nZTIuZW1wdHkoKSkge1xuICAgICAgICAgIGlmIChkZWxldGVkICYmIGRlbGV0ZWQgPiAwKSB7XG4gICAgICAgICAgICBmcm9tID0gUG9zKGZyb20ubGluZSwgZnJvbS5jaCAtIGRlbGV0ZWQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY20uc3RhdGUub3ZlcndyaXRlICYmICFwYXN0ZSkge1xuICAgICAgICAgICAgdG8gPSBQb3ModG8ubGluZSwgTWF0aC5taW4oZ2V0TGluZShkb2MsIHRvLmxpbmUpLnRleHQubGVuZ3RoLCB0by5jaCArIGxzdCh0ZXh0TGluZXMpLmxlbmd0aCkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAocGFzdGUgJiYgbGFzdENvcGllZCAmJiBsYXN0Q29waWVkLmxpbmVXaXNlICYmIGxhc3RDb3BpZWQudGV4dC5qb2luKFwiXFxuXCIpID09IHRleHRMaW5lcy5qb2luKFwiXFxuXCIpKSB7XG4gICAgICAgICAgICBmcm9tID0gdG8gPSBQb3MoZnJvbS5saW5lLCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgIGZyb20sXG4gICAgICAgICAgdG8sXG4gICAgICAgICAgdGV4dDogbXVsdGlQYXN0ZSA/IG11bHRpUGFzdGVbaSQxMiAlIG11bHRpUGFzdGUubGVuZ3RoXSA6IHRleHRMaW5lcyxcbiAgICAgICAgICBvcmlnaW46IG9yaWdpbiB8fCAocGFzdGUgPyBcInBhc3RlXCIgOiBjbS5zdGF0ZS5jdXRJbmNvbWluZyA+IHJlY2VudCA/IFwiY3V0XCIgOiBcIitpbnB1dFwiKVxuICAgICAgICB9O1xuICAgICAgICBtYWtlQ2hhbmdlKGNtLmRvYywgY2hhbmdlRXZlbnQpO1xuICAgICAgICBzaWduYWxMYXRlcihjbSwgXCJpbnB1dFJlYWRcIiwgY20sIGNoYW5nZUV2ZW50KTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnNlcnRlZCAmJiAhcGFzdGUpIHtcbiAgICAgICAgdHJpZ2dlckVsZWN0cmljKGNtLCBpbnNlcnRlZCk7XG4gICAgICB9XG4gICAgICBlbnN1cmVDdXJzb3JWaXNpYmxlKGNtKTtcbiAgICAgIGlmIChjbS5jdXJPcC51cGRhdGVJbnB1dCA8IDIpIHtcbiAgICAgICAgY20uY3VyT3AudXBkYXRlSW5wdXQgPSB1cGRhdGVJbnB1dDtcbiAgICAgIH1cbiAgICAgIGNtLmN1ck9wLnR5cGluZyA9IHRydWU7XG4gICAgICBjbS5zdGF0ZS5wYXN0ZUluY29taW5nID0gY20uc3RhdGUuY3V0SW5jb21pbmcgPSAtMTtcbiAgICB9XG4gICAgX19uYW1lKGFwcGx5VGV4dElucHV0LCBcImFwcGx5VGV4dElucHV0XCIpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZVBhc3RlKGUsIGNtKSB7XG4gICAgICB2YXIgcGFzdGVkID0gZS5jbGlwYm9hcmREYXRhICYmIGUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKFwiVGV4dFwiKTtcbiAgICAgIGlmIChwYXN0ZWQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoIWNtLmlzUmVhZE9ubHkoKSAmJiAhY20ub3B0aW9ucy5kaXNhYmxlSW5wdXQpIHtcbiAgICAgICAgICBydW5Jbk9wKGNtLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBseVRleHRJbnB1dChjbSwgcGFzdGVkLCAwLCBudWxsLCBcInBhc3RlXCIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoaGFuZGxlUGFzdGUsIFwiaGFuZGxlUGFzdGVcIik7XG4gICAgZnVuY3Rpb24gdHJpZ2dlckVsZWN0cmljKGNtLCBpbnNlcnRlZCkge1xuICAgICAgaWYgKCFjbS5vcHRpb25zLmVsZWN0cmljQ2hhcnMgfHwgIWNtLm9wdGlvbnMuc21hcnRJbmRlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHNlbCA9IGNtLmRvYy5zZWw7XG4gICAgICBmb3IgKHZhciBpMiA9IHNlbC5yYW5nZXMubGVuZ3RoIC0gMTsgaTIgPj0gMDsgaTItLSkge1xuICAgICAgICB2YXIgcmFuZ2UyID0gc2VsLnJhbmdlc1tpMl07XG4gICAgICAgIGlmIChyYW5nZTIuaGVhZC5jaCA+IDEwMCB8fCBpMiAmJiBzZWwucmFuZ2VzW2kyIC0gMV0uaGVhZC5saW5lID09IHJhbmdlMi5oZWFkLmxpbmUpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbW9kZSA9IGNtLmdldE1vZGVBdChyYW5nZTIuaGVhZCk7XG4gICAgICAgIHZhciBpbmRlbnRlZCA9IGZhbHNlO1xuICAgICAgICBpZiAobW9kZS5lbGVjdHJpY0NoYXJzKSB7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtb2RlLmVsZWN0cmljQ2hhcnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChpbnNlcnRlZC5pbmRleE9mKG1vZGUuZWxlY3RyaWNDaGFycy5jaGFyQXQoaikpID4gLTEpIHtcbiAgICAgICAgICAgICAgaW5kZW50ZWQgPSBpbmRlbnRMaW5lKGNtLCByYW5nZTIuaGVhZC5saW5lLCBcInNtYXJ0XCIpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZS5lbGVjdHJpY0lucHV0KSB7XG4gICAgICAgICAgaWYgKG1vZGUuZWxlY3RyaWNJbnB1dC50ZXN0KGdldExpbmUoY20uZG9jLCByYW5nZTIuaGVhZC5saW5lKS50ZXh0LnNsaWNlKDAsIHJhbmdlMi5oZWFkLmNoKSkpIHtcbiAgICAgICAgICAgIGluZGVudGVkID0gaW5kZW50TGluZShjbSwgcmFuZ2UyLmhlYWQubGluZSwgXCJzbWFydFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGVudGVkKSB7XG4gICAgICAgICAgc2lnbmFsTGF0ZXIoY20sIFwiZWxlY3RyaWNJbnB1dFwiLCBjbSwgcmFuZ2UyLmhlYWQubGluZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHRyaWdnZXJFbGVjdHJpYywgXCJ0cmlnZ2VyRWxlY3RyaWNcIik7XG4gICAgZnVuY3Rpb24gY29weWFibGVSYW5nZXMoY20pIHtcbiAgICAgIHZhciB0ZXh0ID0gW10sIHJhbmdlcyA9IFtdO1xuICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGNtLmRvYy5zZWwucmFuZ2VzLmxlbmd0aDsgaTIrKykge1xuICAgICAgICB2YXIgbGluZSA9IGNtLmRvYy5zZWwucmFuZ2VzW2kyXS5oZWFkLmxpbmU7XG4gICAgICAgIHZhciBsaW5lUmFuZ2UgPSB7IGFuY2hvcjogUG9zKGxpbmUsIDApLCBoZWFkOiBQb3MobGluZSArIDEsIDApIH07XG4gICAgICAgIHJhbmdlcy5wdXNoKGxpbmVSYW5nZSk7XG4gICAgICAgIHRleHQucHVzaChjbS5nZXRSYW5nZShsaW5lUmFuZ2UuYW5jaG9yLCBsaW5lUmFuZ2UuaGVhZCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgdGV4dCwgcmFuZ2VzIH07XG4gICAgfVxuICAgIF9fbmFtZShjb3B5YWJsZVJhbmdlcywgXCJjb3B5YWJsZVJhbmdlc1wiKTtcbiAgICBmdW5jdGlvbiBkaXNhYmxlQnJvd3Nlck1hZ2ljKGZpZWxkLCBzcGVsbGNoZWNrLCBhdXRvY29ycmVjdCwgYXV0b2NhcGl0YWxpemUpIHtcbiAgICAgIGZpZWxkLnNldEF0dHJpYnV0ZShcImF1dG9jb3JyZWN0XCIsIGF1dG9jb3JyZWN0ID8gXCJcIiA6IFwib2ZmXCIpO1xuICAgICAgZmllbGQuc2V0QXR0cmlidXRlKFwiYXV0b2NhcGl0YWxpemVcIiwgYXV0b2NhcGl0YWxpemUgPyBcIlwiIDogXCJvZmZcIik7XG4gICAgICBmaWVsZC5zZXRBdHRyaWJ1dGUoXCJzcGVsbGNoZWNrXCIsICEhc3BlbGxjaGVjayk7XG4gICAgfVxuICAgIF9fbmFtZShkaXNhYmxlQnJvd3Nlck1hZ2ljLCBcImRpc2FibGVCcm93c2VyTWFnaWNcIik7XG4gICAgZnVuY3Rpb24gaGlkZGVuVGV4dGFyZWEoKSB7XG4gICAgICB2YXIgdGUgPSBlbHQoXCJ0ZXh0YXJlYVwiLCBudWxsLCBudWxsLCBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgYm90dG9tOiAtMWVtOyBwYWRkaW5nOiAwOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFlbTsgbWluLWhlaWdodDogMWVtOyBvdXRsaW5lOiBub25lXCIpO1xuICAgICAgdmFyIGRpdiA9IGVsdChcImRpdlwiLCBbdGVdLCBudWxsLCBcIm92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDNweDsgaGVpZ2h0OiAwcHg7XCIpO1xuICAgICAgaWYgKHdlYmtpdCkge1xuICAgICAgICB0ZS5zdHlsZS53aWR0aCA9IFwiMTAwMHB4XCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZS5zZXRBdHRyaWJ1dGUoXCJ3cmFwXCIsIFwib2ZmXCIpO1xuICAgICAgfVxuICAgICAgaWYgKGlvcykge1xuICAgICAgICB0ZS5zdHlsZS5ib3JkZXIgPSBcIjFweCBzb2xpZCBibGFja1wiO1xuICAgICAgfVxuICAgICAgZGlzYWJsZUJyb3dzZXJNYWdpYyh0ZSk7XG4gICAgICByZXR1cm4gZGl2O1xuICAgIH1cbiAgICBfX25hbWUoaGlkZGVuVGV4dGFyZWEsIFwiaGlkZGVuVGV4dGFyZWFcIik7XG4gICAgZnVuY3Rpb24gYWRkRWRpdG9yTWV0aG9kcyhDb2RlTWlycm9yMykge1xuICAgICAgdmFyIG9wdGlvbkhhbmRsZXJzMiA9IENvZGVNaXJyb3IzLm9wdGlvbkhhbmRsZXJzO1xuICAgICAgdmFyIGhlbHBlcnMgPSBDb2RlTWlycm9yMy5oZWxwZXJzID0ge307XG4gICAgICBDb2RlTWlycm9yMy5wcm90b3R5cGUgPSB7XG4gICAgICAgIGNvbnN0cnVjdG9yOiBDb2RlTWlycm9yMyxcbiAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHdpbmRvdy5mb2N1cygpO1xuICAgICAgICAgIHRoaXMuZGlzcGxheS5pbnB1dC5mb2N1cygpO1xuICAgICAgICB9LFxuICAgICAgICBzZXRPcHRpb246IGZ1bmN0aW9uKG9wdGlvbiwgdmFsdWUpIHtcbiAgICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucywgb2xkID0gb3B0aW9uc1tvcHRpb25dO1xuICAgICAgICAgIGlmIChvcHRpb25zW29wdGlvbl0gPT0gdmFsdWUgJiYgb3B0aW9uICE9IFwibW9kZVwiKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wdGlvbnNbb3B0aW9uXSA9IHZhbHVlO1xuICAgICAgICAgIGlmIChvcHRpb25IYW5kbGVyczIuaGFzT3duUHJvcGVydHkob3B0aW9uKSkge1xuICAgICAgICAgICAgb3BlcmF0aW9uKHRoaXMsIG9wdGlvbkhhbmRsZXJzMltvcHRpb25dKSh0aGlzLCB2YWx1ZSwgb2xkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2lnbmFsKHRoaXMsIFwib3B0aW9uQ2hhbmdlXCIsIHRoaXMsIG9wdGlvbik7XG4gICAgICAgIH0sXG4gICAgICAgIGdldE9wdGlvbjogZnVuY3Rpb24ob3B0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc1tvcHRpb25dO1xuICAgICAgICB9LFxuICAgICAgICBnZXREb2M6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmRvYztcbiAgICAgICAgfSxcbiAgICAgICAgYWRkS2V5TWFwOiBmdW5jdGlvbihtYXAyLCBib3R0b20pIHtcbiAgICAgICAgICB0aGlzLnN0YXRlLmtleU1hcHNbYm90dG9tID8gXCJwdXNoXCIgOiBcInVuc2hpZnRcIl0oZ2V0S2V5TWFwKG1hcDIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlS2V5TWFwOiBmdW5jdGlvbihtYXAyKSB7XG4gICAgICAgICAgdmFyIG1hcHMgPSB0aGlzLnN0YXRlLmtleU1hcHM7XG4gICAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IG1hcHMubGVuZ3RoOyArK2kyKSB7XG4gICAgICAgICAgICBpZiAobWFwc1tpMl0gPT0gbWFwMiB8fCBtYXBzW2kyXS5uYW1lID09IG1hcDIpIHtcbiAgICAgICAgICAgICAgbWFwcy5zcGxpY2UoaTIsIDEpO1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFkZE92ZXJsYXk6IG1ldGhvZE9wKGZ1bmN0aW9uKHNwZWMsIG9wdGlvbnMpIHtcbiAgICAgICAgICB2YXIgbW9kZSA9IHNwZWMudG9rZW4gPyBzcGVjIDogQ29kZU1pcnJvcjMuZ2V0TW9kZSh0aGlzLm9wdGlvbnMsIHNwZWMpO1xuICAgICAgICAgIGlmIChtb2RlLnN0YXJ0U3RhdGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk92ZXJsYXlzIG1heSBub3QgYmUgc3RhdGVmdWwuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbnNlcnRTb3J0ZWQodGhpcy5zdGF0ZS5vdmVybGF5cywge1xuICAgICAgICAgICAgbW9kZSxcbiAgICAgICAgICAgIG1vZGVTcGVjOiBzcGVjLFxuICAgICAgICAgICAgb3BhcXVlOiBvcHRpb25zICYmIG9wdGlvbnMub3BhcXVlLFxuICAgICAgICAgICAgcHJpb3JpdHk6IG9wdGlvbnMgJiYgb3B0aW9ucy5wcmlvcml0eSB8fCAwXG4gICAgICAgICAgfSwgZnVuY3Rpb24ob3ZlcmxheSkge1xuICAgICAgICAgICAgcmV0dXJuIG92ZXJsYXkucHJpb3JpdHk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5zdGF0ZS5tb2RlR2VuKys7XG4gICAgICAgICAgcmVnQ2hhbmdlKHRoaXMpO1xuICAgICAgICB9KSxcbiAgICAgICAgcmVtb3ZlT3ZlcmxheTogbWV0aG9kT3AoZnVuY3Rpb24oc3BlYykge1xuICAgICAgICAgIHZhciBvdmVybGF5cyA9IHRoaXMuc3RhdGUub3ZlcmxheXM7XG4gICAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IG92ZXJsYXlzLmxlbmd0aDsgKytpMikge1xuICAgICAgICAgICAgdmFyIGN1ciA9IG92ZXJsYXlzW2kyXS5tb2RlU3BlYztcbiAgICAgICAgICAgIGlmIChjdXIgPT0gc3BlYyB8fCB0eXBlb2Ygc3BlYyA9PSBcInN0cmluZ1wiICYmIGN1ci5uYW1lID09IHNwZWMpIHtcbiAgICAgICAgICAgICAgb3ZlcmxheXMuc3BsaWNlKGkyLCAxKTtcbiAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5tb2RlR2VuKys7XG4gICAgICAgICAgICAgIHJlZ0NoYW5nZSh0aGlzKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGluZGVudExpbmU6IG1ldGhvZE9wKGZ1bmN0aW9uKG4sIGRpciwgYWdncmVzc2l2ZSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgZGlyICE9IFwic3RyaW5nXCIgJiYgdHlwZW9mIGRpciAhPSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBpZiAoZGlyID09IG51bGwpIHtcbiAgICAgICAgICAgICAgZGlyID0gdGhpcy5vcHRpb25zLnNtYXJ0SW5kZW50ID8gXCJzbWFydFwiIDogXCJwcmV2XCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBkaXIgPSBkaXIgPyBcImFkZFwiIDogXCJzdWJ0cmFjdFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNMaW5lKHRoaXMuZG9jLCBuKSkge1xuICAgICAgICAgICAgaW5kZW50TGluZSh0aGlzLCBuLCBkaXIsIGFnZ3Jlc3NpdmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGluZGVudFNlbGVjdGlvbjogbWV0aG9kT3AoZnVuY3Rpb24oaG93KSB7XG4gICAgICAgICAgdmFyIHJhbmdlcyA9IHRoaXMuZG9jLnNlbC5yYW5nZXMsIGVuZCA9IC0xO1xuICAgICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCByYW5nZXMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgICAgICB2YXIgcmFuZ2UyID0gcmFuZ2VzW2kyXTtcbiAgICAgICAgICAgIGlmICghcmFuZ2UyLmVtcHR5KCkpIHtcbiAgICAgICAgICAgICAgdmFyIGZyb20gPSByYW5nZTIuZnJvbSgpLCB0byA9IHJhbmdlMi50bygpO1xuICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBNYXRoLm1heChlbmQsIGZyb20ubGluZSk7XG4gICAgICAgICAgICAgIGVuZCA9IE1hdGgubWluKHRoaXMubGFzdExpbmUoKSwgdG8ubGluZSAtICh0by5jaCA/IDAgOiAxKSkgKyAxO1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gc3RhcnQ7IGogPCBlbmQ7ICsraikge1xuICAgICAgICAgICAgICAgIGluZGVudExpbmUodGhpcywgaiwgaG93KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YXIgbmV3UmFuZ2VzID0gdGhpcy5kb2Muc2VsLnJhbmdlcztcbiAgICAgICAgICAgICAgaWYgKGZyb20uY2ggPT0gMCAmJiByYW5nZXMubGVuZ3RoID09IG5ld1Jhbmdlcy5sZW5ndGggJiYgbmV3UmFuZ2VzW2kyXS5mcm9tKCkuY2ggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZU9uZVNlbGVjdGlvbih0aGlzLmRvYywgaTIsIG5ldyBSYW5nZShmcm9tLCBuZXdSYW5nZXNbaTJdLnRvKCkpLCBzZWxfZG9udFNjcm9sbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmFuZ2UyLmhlYWQubGluZSA+IGVuZCkge1xuICAgICAgICAgICAgICBpbmRlbnRMaW5lKHRoaXMsIHJhbmdlMi5oZWFkLmxpbmUsIGhvdywgdHJ1ZSk7XG4gICAgICAgICAgICAgIGVuZCA9IHJhbmdlMi5oZWFkLmxpbmU7XG4gICAgICAgICAgICAgIGlmIChpMiA9PSB0aGlzLmRvYy5zZWwucHJpbUluZGV4KSB7XG4gICAgICAgICAgICAgICAgZW5zdXJlQ3Vyc29yVmlzaWJsZSh0aGlzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGdldFRva2VuQXQ6IGZ1bmN0aW9uKHBvcywgcHJlY2lzZSkge1xuICAgICAgICAgIHJldHVybiB0YWtlVG9rZW4odGhpcywgcG9zLCBwcmVjaXNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0TGluZVRva2VuczogZnVuY3Rpb24obGluZSwgcHJlY2lzZSkge1xuICAgICAgICAgIHJldHVybiB0YWtlVG9rZW4odGhpcywgUG9zKGxpbmUpLCBwcmVjaXNlLCB0cnVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0VG9rZW5UeXBlQXQ6IGZ1bmN0aW9uKHBvcykge1xuICAgICAgICAgIHBvcyA9IGNsaXBQb3ModGhpcy5kb2MsIHBvcyk7XG4gICAgICAgICAgdmFyIHN0eWxlcyA9IGdldExpbmVTdHlsZXModGhpcywgZ2V0TGluZSh0aGlzLmRvYywgcG9zLmxpbmUpKTtcbiAgICAgICAgICB2YXIgYmVmb3JlID0gMCwgYWZ0ZXIgPSAoc3R5bGVzLmxlbmd0aCAtIDEpIC8gMiwgY2ggPSBwb3MuY2g7XG4gICAgICAgICAgdmFyIHR5cGU7XG4gICAgICAgICAgaWYgKGNoID09IDApIHtcbiAgICAgICAgICAgIHR5cGUgPSBzdHlsZXNbMl07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoOyA7ICkge1xuICAgICAgICAgICAgICB2YXIgbWlkID0gYmVmb3JlICsgYWZ0ZXIgPj4gMTtcbiAgICAgICAgICAgICAgaWYgKChtaWQgPyBzdHlsZXNbbWlkICogMiAtIDFdIDogMCkgPj0gY2gpIHtcbiAgICAgICAgICAgICAgICBhZnRlciA9IG1pZDtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdHlsZXNbbWlkICogMiArIDFdIDwgY2gpIHtcbiAgICAgICAgICAgICAgICBiZWZvcmUgPSBtaWQgKyAxO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHR5cGUgPSBzdHlsZXNbbWlkICogMiArIDJdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBjdXQgPSB0eXBlID8gdHlwZS5pbmRleE9mKFwib3ZlcmxheSBcIikgOiAtMTtcbiAgICAgICAgICByZXR1cm4gY3V0IDwgMCA/IHR5cGUgOiBjdXQgPT0gMCA/IG51bGwgOiB0eXBlLnNsaWNlKDAsIGN1dCAtIDEpO1xuICAgICAgICB9LFxuICAgICAgICBnZXRNb2RlQXQ6IGZ1bmN0aW9uKHBvcykge1xuICAgICAgICAgIHZhciBtb2RlID0gdGhpcy5kb2MubW9kZTtcbiAgICAgICAgICBpZiAoIW1vZGUuaW5uZXJNb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gbW9kZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIENvZGVNaXJyb3IzLmlubmVyTW9kZShtb2RlLCB0aGlzLmdldFRva2VuQXQocG9zKS5zdGF0ZSkubW9kZTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0SGVscGVyOiBmdW5jdGlvbihwb3MsIHR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRIZWxwZXJzKHBvcywgdHlwZSlbMF07XG4gICAgICAgIH0sXG4gICAgICAgIGdldEhlbHBlcnM6IGZ1bmN0aW9uKHBvcywgdHlwZSkge1xuICAgICAgICAgIHZhciBmb3VuZCA9IFtdO1xuICAgICAgICAgIGlmICghaGVscGVycy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgaGVscCA9IGhlbHBlcnNbdHlwZV0sIG1vZGUgPSB0aGlzLmdldE1vZGVBdChwb3MpO1xuICAgICAgICAgIGlmICh0eXBlb2YgbW9kZVt0eXBlXSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBpZiAoaGVscFttb2RlW3R5cGVdXSkge1xuICAgICAgICAgICAgICBmb3VuZC5wdXNoKGhlbHBbbW9kZVt0eXBlXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAobW9kZVt0eXBlXSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IG1vZGVbdHlwZV0ubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgICAgICAgIHZhciB2YWwgPSBoZWxwW21vZGVbdHlwZV1baTJdXTtcbiAgICAgICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgICAgIGZvdW5kLnB1c2godmFsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAobW9kZS5oZWxwZXJUeXBlICYmIGhlbHBbbW9kZS5oZWxwZXJUeXBlXSkge1xuICAgICAgICAgICAgZm91bmQucHVzaChoZWxwW21vZGUuaGVscGVyVHlwZV0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaGVscFttb2RlLm5hbWVdKSB7XG4gICAgICAgICAgICBmb3VuZC5wdXNoKGhlbHBbbW9kZS5uYW1lXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAodmFyIGkkMTIgPSAwOyBpJDEyIDwgaGVscC5fZ2xvYmFsLmxlbmd0aDsgaSQxMisrKSB7XG4gICAgICAgICAgICB2YXIgY3VyID0gaGVscC5fZ2xvYmFsW2kkMTJdO1xuICAgICAgICAgICAgaWYgKGN1ci5wcmVkKG1vZGUsIHRoaXMpICYmIGluZGV4T2YoZm91bmQsIGN1ci52YWwpID09IC0xKSB7XG4gICAgICAgICAgICAgIGZvdW5kLnB1c2goY3VyLnZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0U3RhdGVBZnRlcjogZnVuY3Rpb24obGluZSwgcHJlY2lzZSkge1xuICAgICAgICAgIHZhciBkb2MgPSB0aGlzLmRvYztcbiAgICAgICAgICBsaW5lID0gY2xpcExpbmUoZG9jLCBsaW5lID09IG51bGwgPyBkb2MuZmlyc3QgKyBkb2Muc2l6ZSAtIDEgOiBsaW5lKTtcbiAgICAgICAgICByZXR1cm4gZ2V0Q29udGV4dEJlZm9yZSh0aGlzLCBsaW5lICsgMSwgcHJlY2lzZSkuc3RhdGU7XG4gICAgICAgIH0sXG4gICAgICAgIGN1cnNvckNvb3JkczogZnVuY3Rpb24oc3RhcnQsIG1vZGUpIHtcbiAgICAgICAgICB2YXIgcG9zLCByYW5nZTIgPSB0aGlzLmRvYy5zZWwucHJpbWFyeSgpO1xuICAgICAgICAgIGlmIChzdGFydCA9PSBudWxsKSB7XG4gICAgICAgICAgICBwb3MgPSByYW5nZTIuaGVhZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdGFydCA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBwb3MgPSBjbGlwUG9zKHRoaXMuZG9jLCBzdGFydCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvcyA9IHN0YXJ0ID8gcmFuZ2UyLmZyb20oKSA6IHJhbmdlMi50bygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY3Vyc29yQ29vcmRzKHRoaXMsIHBvcywgbW9kZSB8fCBcInBhZ2VcIik7XG4gICAgICAgIH0sXG4gICAgICAgIGNoYXJDb29yZHM6IGZ1bmN0aW9uKHBvcywgbW9kZSkge1xuICAgICAgICAgIHJldHVybiBjaGFyQ29vcmRzKHRoaXMsIGNsaXBQb3ModGhpcy5kb2MsIHBvcyksIG1vZGUgfHwgXCJwYWdlXCIpO1xuICAgICAgICB9LFxuICAgICAgICBjb29yZHNDaGFyOiBmdW5jdGlvbihjb29yZHMsIG1vZGUpIHtcbiAgICAgICAgICBjb29yZHMgPSBmcm9tQ29vcmRTeXN0ZW0odGhpcywgY29vcmRzLCBtb2RlIHx8IFwicGFnZVwiKTtcbiAgICAgICAgICByZXR1cm4gY29vcmRzQ2hhcih0aGlzLCBjb29yZHMubGVmdCwgY29vcmRzLnRvcCk7XG4gICAgICAgIH0sXG4gICAgICAgIGxpbmVBdEhlaWdodDogZnVuY3Rpb24oaGVpZ2h0LCBtb2RlKSB7XG4gICAgICAgICAgaGVpZ2h0ID0gZnJvbUNvb3JkU3lzdGVtKHRoaXMsIHsgdG9wOiBoZWlnaHQsIGxlZnQ6IDAgfSwgbW9kZSB8fCBcInBhZ2VcIikudG9wO1xuICAgICAgICAgIHJldHVybiBsaW5lQXRIZWlnaHQodGhpcy5kb2MsIGhlaWdodCArIHRoaXMuZGlzcGxheS52aWV3T2Zmc2V0KTtcbiAgICAgICAgfSxcbiAgICAgICAgaGVpZ2h0QXRMaW5lOiBmdW5jdGlvbihsaW5lLCBtb2RlLCBpbmNsdWRlV2lkZ2V0cykge1xuICAgICAgICAgIHZhciBlbmQgPSBmYWxzZSwgbGluZU9iajtcbiAgICAgICAgICBpZiAodHlwZW9mIGxpbmUgPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgdmFyIGxhc3QgPSB0aGlzLmRvYy5maXJzdCArIHRoaXMuZG9jLnNpemUgLSAxO1xuICAgICAgICAgICAgaWYgKGxpbmUgPCB0aGlzLmRvYy5maXJzdCkge1xuICAgICAgICAgICAgICBsaW5lID0gdGhpcy5kb2MuZmlyc3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxpbmUgPiBsYXN0KSB7XG4gICAgICAgICAgICAgIGxpbmUgPSBsYXN0O1xuICAgICAgICAgICAgICBlbmQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZU9iaiA9IGdldExpbmUodGhpcy5kb2MsIGxpbmUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaW5lT2JqID0gbGluZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGludG9Db29yZFN5c3RlbSh0aGlzLCBsaW5lT2JqLCB7IHRvcDogMCwgbGVmdDogMCB9LCBtb2RlIHx8IFwicGFnZVwiLCBpbmNsdWRlV2lkZ2V0cyB8fCBlbmQpLnRvcCArIChlbmQgPyB0aGlzLmRvYy5oZWlnaHQgLSBoZWlnaHRBdExpbmUobGluZU9iaikgOiAwKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFRleHRIZWlnaHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiB0ZXh0SGVpZ2h0KHRoaXMuZGlzcGxheSk7XG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRDaGFyV2lkdGg6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBjaGFyV2lkdGgodGhpcy5kaXNwbGF5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0Vmlld3BvcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiB7IGZyb206IHRoaXMuZGlzcGxheS52aWV3RnJvbSwgdG86IHRoaXMuZGlzcGxheS52aWV3VG8gfTtcbiAgICAgICAgfSxcbiAgICAgICAgYWRkV2lkZ2V0OiBmdW5jdGlvbihwb3MsIG5vZGUsIHNjcm9sbCwgdmVydCwgaG9yaXopIHtcbiAgICAgICAgICB2YXIgZGlzcGxheSA9IHRoaXMuZGlzcGxheTtcbiAgICAgICAgICBwb3MgPSBjdXJzb3JDb29yZHModGhpcywgY2xpcFBvcyh0aGlzLmRvYywgcG9zKSk7XG4gICAgICAgICAgdmFyIHRvcCA9IHBvcy5ib3R0b20sIGxlZnQgPSBwb3MubGVmdDtcbiAgICAgICAgICBub2RlLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiY20taWdub3JlLWV2ZW50c1wiLCBcInRydWVcIik7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5LmlucHV0LnNldFVuZWRpdGFibGUobm9kZSk7XG4gICAgICAgICAgZGlzcGxheS5zaXplci5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgICAgICBpZiAodmVydCA9PSBcIm92ZXJcIikge1xuICAgICAgICAgICAgdG9wID0gcG9zLnRvcDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHZlcnQgPT0gXCJhYm92ZVwiIHx8IHZlcnQgPT0gXCJuZWFyXCIpIHtcbiAgICAgICAgICAgIHZhciB2c3BhY2UgPSBNYXRoLm1heChkaXNwbGF5LndyYXBwZXIuY2xpZW50SGVpZ2h0LCB0aGlzLmRvYy5oZWlnaHQpLCBoc3BhY2UgPSBNYXRoLm1heChkaXNwbGF5LnNpemVyLmNsaWVudFdpZHRoLCBkaXNwbGF5LmxpbmVTcGFjZS5jbGllbnRXaWR0aCk7XG4gICAgICAgICAgICBpZiAoKHZlcnQgPT0gXCJhYm92ZVwiIHx8IHBvcy5ib3R0b20gKyBub2RlLm9mZnNldEhlaWdodCA+IHZzcGFjZSkgJiYgcG9zLnRvcCA+IG5vZGUub2Zmc2V0SGVpZ2h0KSB7XG4gICAgICAgICAgICAgIHRvcCA9IHBvcy50b3AgLSBub2RlLm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocG9zLmJvdHRvbSArIG5vZGUub2Zmc2V0SGVpZ2h0IDw9IHZzcGFjZSkge1xuICAgICAgICAgICAgICB0b3AgPSBwb3MuYm90dG9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlZnQgKyBub2RlLm9mZnNldFdpZHRoID4gaHNwYWNlKSB7XG4gICAgICAgICAgICAgIGxlZnQgPSBoc3BhY2UgLSBub2RlLm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBub2RlLnN0eWxlLnRvcCA9IHRvcCArIFwicHhcIjtcbiAgICAgICAgICBub2RlLnN0eWxlLmxlZnQgPSBub2RlLnN0eWxlLnJpZ2h0ID0gXCJcIjtcbiAgICAgICAgICBpZiAoaG9yaXogPT0gXCJyaWdodFwiKSB7XG4gICAgICAgICAgICBsZWZ0ID0gZGlzcGxheS5zaXplci5jbGllbnRXaWR0aCAtIG5vZGUub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICBub2RlLnN0eWxlLnJpZ2h0ID0gXCIwcHhcIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGhvcml6ID09IFwibGVmdFwiKSB7XG4gICAgICAgICAgICAgIGxlZnQgPSAwO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3JpeiA9PSBcIm1pZGRsZVwiKSB7XG4gICAgICAgICAgICAgIGxlZnQgPSAoZGlzcGxheS5zaXplci5jbGllbnRXaWR0aCAtIG5vZGUub2Zmc2V0V2lkdGgpIC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUuc3R5bGUubGVmdCA9IGxlZnQgKyBcInB4XCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzY3JvbGwpIHtcbiAgICAgICAgICAgIHNjcm9sbEludG9WaWV3KHRoaXMsIHsgbGVmdCwgdG9wLCByaWdodDogbGVmdCArIG5vZGUub2Zmc2V0V2lkdGgsIGJvdHRvbTogdG9wICsgbm9kZS5vZmZzZXRIZWlnaHQgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB0cmlnZ2VyT25LZXlEb3duOiBtZXRob2RPcChvbktleURvd24pLFxuICAgICAgICB0cmlnZ2VyT25LZXlQcmVzczogbWV0aG9kT3Aob25LZXlQcmVzcyksXG4gICAgICAgIHRyaWdnZXJPbktleVVwOiBvbktleVVwLFxuICAgICAgICB0cmlnZ2VyT25Nb3VzZURvd246IG1ldGhvZE9wKG9uTW91c2VEb3duKSxcbiAgICAgICAgZXhlY0NvbW1hbmQ6IGZ1bmN0aW9uKGNtZCkge1xuICAgICAgICAgIGlmIChjb21tYW5kcy5oYXNPd25Qcm9wZXJ0eShjbWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gY29tbWFuZHNbY21kXS5jYWxsKG51bGwsIHRoaXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdHJpZ2dlckVsZWN0cmljOiBtZXRob2RPcChmdW5jdGlvbih0ZXh0KSB7XG4gICAgICAgICAgdHJpZ2dlckVsZWN0cmljKHRoaXMsIHRleHQpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmluZFBvc0g6IGZ1bmN0aW9uKGZyb20sIGFtb3VudCwgdW5pdCwgdmlzdWFsbHkpIHtcbiAgICAgICAgICB2YXIgZGlyID0gMTtcbiAgICAgICAgICBpZiAoYW1vdW50IDwgMCkge1xuICAgICAgICAgICAgZGlyID0gLTE7XG4gICAgICAgICAgICBhbW91bnQgPSAtYW1vdW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgY3VyID0gY2xpcFBvcyh0aGlzLmRvYywgZnJvbSk7XG4gICAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGFtb3VudDsgKytpMikge1xuICAgICAgICAgICAgY3VyID0gZmluZFBvc0godGhpcy5kb2MsIGN1ciwgZGlyLCB1bml0LCB2aXN1YWxseSk7XG4gICAgICAgICAgICBpZiAoY3VyLmhpdFNpZGUpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjdXI7XG4gICAgICAgIH0sXG4gICAgICAgIG1vdmVIOiBtZXRob2RPcChmdW5jdGlvbihkaXIsIHVuaXQpIHtcbiAgICAgICAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuICAgICAgICAgIHRoaXMuZXh0ZW5kU2VsZWN0aW9uc0J5KGZ1bmN0aW9uKHJhbmdlMikge1xuICAgICAgICAgICAgaWYgKHRoaXMkMSQxLmRpc3BsYXkuc2hpZnQgfHwgdGhpcyQxJDEuZG9jLmV4dGVuZCB8fCByYW5nZTIuZW1wdHkoKSkge1xuICAgICAgICAgICAgICByZXR1cm4gZmluZFBvc0godGhpcyQxJDEuZG9jLCByYW5nZTIuaGVhZCwgZGlyLCB1bml0LCB0aGlzJDEkMS5vcHRpb25zLnJ0bE1vdmVWaXN1YWxseSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMCA/IHJhbmdlMi5mcm9tKCkgOiByYW5nZTIudG8oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBzZWxfbW92ZSk7XG4gICAgICAgIH0pLFxuICAgICAgICBkZWxldGVIOiBtZXRob2RPcChmdW5jdGlvbihkaXIsIHVuaXQpIHtcbiAgICAgICAgICB2YXIgc2VsID0gdGhpcy5kb2Muc2VsLCBkb2MgPSB0aGlzLmRvYztcbiAgICAgICAgICBpZiAoc2VsLnNvbWV0aGluZ1NlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgIGRvYy5yZXBsYWNlU2VsZWN0aW9uKFwiXCIsIG51bGwsIFwiK2RlbGV0ZVwiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVsZXRlTmVhclNlbGVjdGlvbih0aGlzLCBmdW5jdGlvbihyYW5nZTIpIHtcbiAgICAgICAgICAgICAgdmFyIG90aGVyID0gZmluZFBvc0goZG9jLCByYW5nZTIuaGVhZCwgZGlyLCB1bml0LCBmYWxzZSk7XG4gICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwID8geyBmcm9tOiBvdGhlciwgdG86IHJhbmdlMi5oZWFkIH0gOiB7IGZyb206IHJhbmdlMi5oZWFkLCB0bzogb3RoZXIgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGZpbmRQb3NWOiBmdW5jdGlvbihmcm9tLCBhbW91bnQsIHVuaXQsIGdvYWxDb2x1bW4pIHtcbiAgICAgICAgICB2YXIgZGlyID0gMSwgeCA9IGdvYWxDb2x1bW47XG4gICAgICAgICAgaWYgKGFtb3VudCA8IDApIHtcbiAgICAgICAgICAgIGRpciA9IC0xO1xuICAgICAgICAgICAgYW1vdW50ID0gLWFtb3VudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGN1ciA9IGNsaXBQb3ModGhpcy5kb2MsIGZyb20pO1xuICAgICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBhbW91bnQ7ICsraTIpIHtcbiAgICAgICAgICAgIHZhciBjb29yZHMgPSBjdXJzb3JDb29yZHModGhpcywgY3VyLCBcImRpdlwiKTtcbiAgICAgICAgICAgIGlmICh4ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgeCA9IGNvb3Jkcy5sZWZ0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29vcmRzLmxlZnQgPSB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VyID0gZmluZFBvc1YodGhpcywgY29vcmRzLCBkaXIsIHVuaXQpO1xuICAgICAgICAgICAgaWYgKGN1ci5oaXRTaWRlKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICB9LFxuICAgICAgICBtb3ZlVjogbWV0aG9kT3AoZnVuY3Rpb24oZGlyLCB1bml0KSB7XG4gICAgICAgICAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgICAgICAgICB2YXIgZG9jID0gdGhpcy5kb2MsIGdvYWxzID0gW107XG4gICAgICAgICAgdmFyIGNvbGxhcHNlID0gIXRoaXMuZGlzcGxheS5zaGlmdCAmJiAhZG9jLmV4dGVuZCAmJiBkb2Muc2VsLnNvbWV0aGluZ1NlbGVjdGVkKCk7XG4gICAgICAgICAgZG9jLmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbihyYW5nZTIpIHtcbiAgICAgICAgICAgIGlmIChjb2xsYXBzZSkge1xuICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMCA/IHJhbmdlMi5mcm9tKCkgOiByYW5nZTIudG8oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBoZWFkUG9zID0gY3Vyc29yQ29vcmRzKHRoaXMkMSQxLCByYW5nZTIuaGVhZCwgXCJkaXZcIik7XG4gICAgICAgICAgICBpZiAocmFuZ2UyLmdvYWxDb2x1bW4gIT0gbnVsbCkge1xuICAgICAgICAgICAgICBoZWFkUG9zLmxlZnQgPSByYW5nZTIuZ29hbENvbHVtbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdvYWxzLnB1c2goaGVhZFBvcy5sZWZ0KTtcbiAgICAgICAgICAgIHZhciBwb3MgPSBmaW5kUG9zVih0aGlzJDEkMSwgaGVhZFBvcywgZGlyLCB1bml0KTtcbiAgICAgICAgICAgIGlmICh1bml0ID09IFwicGFnZVwiICYmIHJhbmdlMiA9PSBkb2Muc2VsLnByaW1hcnkoKSkge1xuICAgICAgICAgICAgICBhZGRUb1Njcm9sbFRvcCh0aGlzJDEkMSwgY2hhckNvb3Jkcyh0aGlzJDEkMSwgcG9zLCBcImRpdlwiKS50b3AgLSBoZWFkUG9zLnRvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcG9zO1xuICAgICAgICAgIH0sIHNlbF9tb3ZlKTtcbiAgICAgICAgICBpZiAoZ29hbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgZG9jLnNlbC5yYW5nZXMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgICAgICAgIGRvYy5zZWwucmFuZ2VzW2kyXS5nb2FsQ29sdW1uID0gZ29hbHNbaTJdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGZpbmRXb3JkQXQ6IGZ1bmN0aW9uKHBvcykge1xuICAgICAgICAgIHZhciBkb2MgPSB0aGlzLmRvYywgbGluZSA9IGdldExpbmUoZG9jLCBwb3MubGluZSkudGV4dDtcbiAgICAgICAgICB2YXIgc3RhcnQgPSBwb3MuY2gsIGVuZCA9IHBvcy5jaDtcbiAgICAgICAgICBpZiAobGluZSkge1xuICAgICAgICAgICAgdmFyIGhlbHBlciA9IHRoaXMuZ2V0SGVscGVyKHBvcywgXCJ3b3JkQ2hhcnNcIik7XG4gICAgICAgICAgICBpZiAoKHBvcy5zdGlja3kgPT0gXCJiZWZvcmVcIiB8fCBlbmQgPT0gbGluZS5sZW5ndGgpICYmIHN0YXJ0KSB7XG4gICAgICAgICAgICAgIC0tc3RhcnQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICArK2VuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzdGFydENoYXIgPSBsaW5lLmNoYXJBdChzdGFydCk7XG4gICAgICAgICAgICB2YXIgY2hlY2sgPSBpc1dvcmRDaGFyKHN0YXJ0Q2hhciwgaGVscGVyKSA/IGZ1bmN0aW9uKGNoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBpc1dvcmRDaGFyKGNoLCBoZWxwZXIpO1xuICAgICAgICAgICAgfSA6IC9cXHMvLnRlc3Qoc3RhcnRDaGFyKSA/IGZ1bmN0aW9uKGNoKSB7XG4gICAgICAgICAgICAgIHJldHVybiAvXFxzLy50ZXN0KGNoKTtcbiAgICAgICAgICAgIH0gOiBmdW5jdGlvbihjaCkge1xuICAgICAgICAgICAgICByZXR1cm4gIS9cXHMvLnRlc3QoY2gpICYmICFpc1dvcmRDaGFyKGNoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB3aGlsZSAoc3RhcnQgPiAwICYmIGNoZWNrKGxpbmUuY2hhckF0KHN0YXJ0IC0gMSkpKSB7XG4gICAgICAgICAgICAgIC0tc3RhcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoZW5kIDwgbGluZS5sZW5ndGggJiYgY2hlY2sobGluZS5jaGFyQXQoZW5kKSkpIHtcbiAgICAgICAgICAgICAgKytlbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgUmFuZ2UoUG9zKHBvcy5saW5lLCBzdGFydCksIFBvcyhwb3MubGluZSwgZW5kKSk7XG4gICAgICAgIH0sXG4gICAgICAgIHRvZ2dsZU92ZXJ3cml0ZTogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSA9PSB0aGlzLnN0YXRlLm92ZXJ3cml0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5vdmVyd3JpdGUgPSAhdGhpcy5zdGF0ZS5vdmVyd3JpdGUpIHtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuZGlzcGxheS5jdXJzb3JEaXYsIFwiQ29kZU1pcnJvci1vdmVyd3JpdGVcIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJtQ2xhc3ModGhpcy5kaXNwbGF5LmN1cnNvckRpdiwgXCJDb2RlTWlycm9yLW92ZXJ3cml0ZVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2lnbmFsKHRoaXMsIFwib3ZlcndyaXRlVG9nZ2xlXCIsIHRoaXMsIHRoaXMuc3RhdGUub3ZlcndyaXRlKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGFzRm9jdXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXkuaW5wdXQuZ2V0RmllbGQoKSA9PSBhY3RpdmVFbHQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNSZWFkT25seTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICEhKHRoaXMub3B0aW9ucy5yZWFkT25seSB8fCB0aGlzLmRvYy5jYW50RWRpdCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNjcm9sbFRvOiBtZXRob2RPcChmdW5jdGlvbih4LCB5KSB7XG4gICAgICAgICAgc2Nyb2xsVG9Db29yZHModGhpcywgeCwgeSk7XG4gICAgICAgIH0pLFxuICAgICAgICBnZXRTY3JvbGxJbmZvOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgc2Nyb2xsZXIgPSB0aGlzLmRpc3BsYXkuc2Nyb2xsZXI7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxlZnQ6IHNjcm9sbGVyLnNjcm9sbExlZnQsXG4gICAgICAgICAgICB0b3A6IHNjcm9sbGVyLnNjcm9sbFRvcCxcbiAgICAgICAgICAgIGhlaWdodDogc2Nyb2xsZXIuc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsR2FwKHRoaXMpIC0gdGhpcy5kaXNwbGF5LmJhckhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoOiBzY3JvbGxlci5zY3JvbGxXaWR0aCAtIHNjcm9sbEdhcCh0aGlzKSAtIHRoaXMuZGlzcGxheS5iYXJXaWR0aCxcbiAgICAgICAgICAgIGNsaWVudEhlaWdodDogZGlzcGxheUhlaWdodCh0aGlzKSxcbiAgICAgICAgICAgIGNsaWVudFdpZHRoOiBkaXNwbGF5V2lkdGgodGhpcylcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBzY3JvbGxJbnRvVmlldzogbWV0aG9kT3AoZnVuY3Rpb24ocmFuZ2UyLCBtYXJnaW4pIHtcbiAgICAgICAgICBpZiAocmFuZ2UyID09IG51bGwpIHtcbiAgICAgICAgICAgIHJhbmdlMiA9IHsgZnJvbTogdGhpcy5kb2Muc2VsLnByaW1hcnkoKS5oZWFkLCB0bzogbnVsbCB9O1xuICAgICAgICAgICAgaWYgKG1hcmdpbiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgIG1hcmdpbiA9IHRoaXMub3B0aW9ucy5jdXJzb3JTY3JvbGxNYXJnaW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmFuZ2UyID09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJhbmdlMiA9IHsgZnJvbTogUG9zKHJhbmdlMiwgMCksIHRvOiBudWxsIH07XG4gICAgICAgICAgfSBlbHNlIGlmIChyYW5nZTIuZnJvbSA9PSBudWxsKSB7XG4gICAgICAgICAgICByYW5nZTIgPSB7IGZyb206IHJhbmdlMiwgdG86IG51bGwgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFyYW5nZTIudG8pIHtcbiAgICAgICAgICAgIHJhbmdlMi50byA9IHJhbmdlMi5mcm9tO1xuICAgICAgICAgIH1cbiAgICAgICAgICByYW5nZTIubWFyZ2luID0gbWFyZ2luIHx8IDA7XG4gICAgICAgICAgaWYgKHJhbmdlMi5mcm9tLmxpbmUgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2Nyb2xsVG9SYW5nZSh0aGlzLCByYW5nZTIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzY3JvbGxUb0Nvb3Jkc1JhbmdlKHRoaXMsIHJhbmdlMi5mcm9tLCByYW5nZTIudG8sIHJhbmdlMi5tYXJnaW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHNldFNpemU6IG1ldGhvZE9wKGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgICAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuICAgICAgICAgIHZhciBpbnRlcnByZXQgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKHZhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJudW1iZXJcIiB8fCAvXlxcZCskLy50ZXN0KFN0cmluZyh2YWwpKSA/IHZhbCArIFwicHhcIiA6IHZhbDtcbiAgICAgICAgICB9LCBcImludGVycHJldFwiKTtcbiAgICAgICAgICBpZiAod2lkdGggIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5LndyYXBwZXIuc3R5bGUud2lkdGggPSBpbnRlcnByZXQod2lkdGgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGVpZ2h0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheS53cmFwcGVyLnN0eWxlLmhlaWdodCA9IGludGVycHJldChoZWlnaHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxpbmVXcmFwcGluZykge1xuICAgICAgICAgICAgY2xlYXJMaW5lTWVhc3VyZW1lbnRDYWNoZSh0aGlzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGxpbmVObzIgPSB0aGlzLmRpc3BsYXkudmlld0Zyb207XG4gICAgICAgICAgdGhpcy5kb2MuaXRlcihsaW5lTm8yLCB0aGlzLmRpc3BsYXkudmlld1RvLCBmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICBpZiAobGluZS53aWRnZXRzKSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBsaW5lLndpZGdldHMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxpbmUud2lkZ2V0c1tpMl0ubm9IU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICByZWdMaW5lQ2hhbmdlKHRoaXMkMSQxLCBsaW5lTm8yLCBcIndpZGdldFwiKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKytsaW5lTm8yO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY3VyT3AuZm9yY2VVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgIHNpZ25hbCh0aGlzLCBcInJlZnJlc2hcIiwgdGhpcyk7XG4gICAgICAgIH0pLFxuICAgICAgICBvcGVyYXRpb246IGZ1bmN0aW9uKGYpIHtcbiAgICAgICAgICByZXR1cm4gcnVuSW5PcCh0aGlzLCBmKTtcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnRPcGVyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBzdGFydE9wZXJhdGlvbih0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW5kT3BlcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gZW5kT3BlcmF0aW9uKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICByZWZyZXNoOiBtZXRob2RPcChmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gdGhpcy5kaXNwbGF5LmNhY2hlZFRleHRIZWlnaHQ7XG4gICAgICAgICAgcmVnQ2hhbmdlKHRoaXMpO1xuICAgICAgICAgIHRoaXMuY3VyT3AuZm9yY2VVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgIGNsZWFyQ2FjaGVzKHRoaXMpO1xuICAgICAgICAgIHNjcm9sbFRvQ29vcmRzKHRoaXMsIHRoaXMuZG9jLnNjcm9sbExlZnQsIHRoaXMuZG9jLnNjcm9sbFRvcCk7XG4gICAgICAgICAgdXBkYXRlR3V0dGVyU3BhY2UodGhpcy5kaXNwbGF5KTtcbiAgICAgICAgICBpZiAob2xkSGVpZ2h0ID09IG51bGwgfHwgTWF0aC5hYnMob2xkSGVpZ2h0IC0gdGV4dEhlaWdodCh0aGlzLmRpc3BsYXkpKSA+IDAuNSB8fCB0aGlzLm9wdGlvbnMubGluZVdyYXBwaW5nKSB7XG4gICAgICAgICAgICBlc3RpbWF0ZUxpbmVIZWlnaHRzKHRoaXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzaWduYWwodGhpcywgXCJyZWZyZXNoXCIsIHRoaXMpO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dhcERvYzogbWV0aG9kT3AoZnVuY3Rpb24oZG9jKSB7XG4gICAgICAgICAgdmFyIG9sZCA9IHRoaXMuZG9jO1xuICAgICAgICAgIG9sZC5jbSA9IG51bGw7XG4gICAgICAgICAgaWYgKHRoaXMuc3RhdGUuc2VsZWN0aW5nVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5zZWxlY3RpbmdUZXh0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF0dGFjaERvYyh0aGlzLCBkb2MpO1xuICAgICAgICAgIGNsZWFyQ2FjaGVzKHRoaXMpO1xuICAgICAgICAgIHRoaXMuZGlzcGxheS5pbnB1dC5yZXNldCgpO1xuICAgICAgICAgIHNjcm9sbFRvQ29vcmRzKHRoaXMsIGRvYy5zY3JvbGxMZWZ0LCBkb2Muc2Nyb2xsVG9wKTtcbiAgICAgICAgICB0aGlzLmN1ck9wLmZvcmNlU2Nyb2xsID0gdHJ1ZTtcbiAgICAgICAgICBzaWduYWxMYXRlcih0aGlzLCBcInN3YXBEb2NcIiwgdGhpcywgb2xkKTtcbiAgICAgICAgICByZXR1cm4gb2xkO1xuICAgICAgICB9KSxcbiAgICAgICAgcGhyYXNlOiBmdW5jdGlvbihwaHJhc2VUZXh0KSB7XG4gICAgICAgICAgdmFyIHBocmFzZXMgPSB0aGlzLm9wdGlvbnMucGhyYXNlcztcbiAgICAgICAgICByZXR1cm4gcGhyYXNlcyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGhyYXNlcywgcGhyYXNlVGV4dCkgPyBwaHJhc2VzW3BocmFzZVRleHRdIDogcGhyYXNlVGV4dDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0SW5wdXRGaWVsZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheS5pbnB1dC5nZXRGaWVsZCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXRXcmFwcGVyRWxlbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheS53cmFwcGVyO1xuICAgICAgICB9LFxuICAgICAgICBnZXRTY3JvbGxlckVsZW1lbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXkuc2Nyb2xsZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldEd1dHRlckVsZW1lbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXkuZ3V0dGVycztcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGV2ZW50TWl4aW4oQ29kZU1pcnJvcjMpO1xuICAgICAgQ29kZU1pcnJvcjMucmVnaXN0ZXJIZWxwZXIgPSBmdW5jdGlvbih0eXBlLCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAoIWhlbHBlcnMuaGFzT3duUHJvcGVydHkodHlwZSkpIHtcbiAgICAgICAgICBoZWxwZXJzW3R5cGVdID0gQ29kZU1pcnJvcjNbdHlwZV0gPSB7IF9nbG9iYWw6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyc1t0eXBlXVtuYW1lXSA9IHZhbHVlO1xuICAgICAgfTtcbiAgICAgIENvZGVNaXJyb3IzLnJlZ2lzdGVyR2xvYmFsSGVscGVyID0gZnVuY3Rpb24odHlwZSwgbmFtZSwgcHJlZGljYXRlLCB2YWx1ZSkge1xuICAgICAgICBDb2RlTWlycm9yMy5yZWdpc3RlckhlbHBlcih0eXBlLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIGhlbHBlcnNbdHlwZV0uX2dsb2JhbC5wdXNoKHsgcHJlZDogcHJlZGljYXRlLCB2YWw6IHZhbHVlIH0pO1xuICAgICAgfTtcbiAgICB9XG4gICAgX19uYW1lKGFkZEVkaXRvck1ldGhvZHMsIFwiYWRkRWRpdG9yTWV0aG9kc1wiKTtcbiAgICBmdW5jdGlvbiBmaW5kUG9zSChkb2MsIHBvcywgZGlyLCB1bml0LCB2aXN1YWxseSkge1xuICAgICAgdmFyIG9sZFBvcyA9IHBvcztcbiAgICAgIHZhciBvcmlnRGlyID0gZGlyO1xuICAgICAgdmFyIGxpbmVPYmogPSBnZXRMaW5lKGRvYywgcG9zLmxpbmUpO1xuICAgICAgdmFyIGxpbmVEaXIgPSB2aXN1YWxseSAmJiBkb2MuZGlyZWN0aW9uID09IFwicnRsXCIgPyAtZGlyIDogZGlyO1xuICAgICAgZnVuY3Rpb24gZmluZE5leHRMaW5lKCkge1xuICAgICAgICB2YXIgbCA9IHBvcy5saW5lICsgbGluZURpcjtcbiAgICAgICAgaWYgKGwgPCBkb2MuZmlyc3QgfHwgbCA+PSBkb2MuZmlyc3QgKyBkb2Muc2l6ZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBwb3MgPSBuZXcgUG9zKGwsIHBvcy5jaCwgcG9zLnN0aWNreSk7XG4gICAgICAgIHJldHVybiBsaW5lT2JqID0gZ2V0TGluZShkb2MsIGwpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGZpbmROZXh0TGluZSwgXCJmaW5kTmV4dExpbmVcIik7XG4gICAgICBmdW5jdGlvbiBtb3ZlT25jZShib3VuZFRvTGluZSkge1xuICAgICAgICB2YXIgbmV4dDtcbiAgICAgICAgaWYgKHVuaXQgPT0gXCJjb2RlcG9pbnRcIikge1xuICAgICAgICAgIHZhciBjaCA9IGxpbmVPYmoudGV4dC5jaGFyQ29kZUF0KHBvcy5jaCArIChkaXIgPiAwID8gMCA6IC0xKSk7XG4gICAgICAgICAgaWYgKGlzTmFOKGNoKSkge1xuICAgICAgICAgICAgbmV4dCA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBhc3RyYWwgPSBkaXIgPiAwID8gY2ggPj0gNTUyOTYgJiYgY2ggPCA1NjMyMCA6IGNoID49IDU2MzIwICYmIGNoIDwgNTczNDM7XG4gICAgICAgICAgICBuZXh0ID0gbmV3IFBvcyhwb3MubGluZSwgTWF0aC5tYXgoMCwgTWF0aC5taW4obGluZU9iai50ZXh0Lmxlbmd0aCwgcG9zLmNoICsgZGlyICogKGFzdHJhbCA/IDIgOiAxKSkpLCAtZGlyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodmlzdWFsbHkpIHtcbiAgICAgICAgICBuZXh0ID0gbW92ZVZpc3VhbGx5KGRvYy5jbSwgbGluZU9iaiwgcG9zLCBkaXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHQgPSBtb3ZlTG9naWNhbGx5KGxpbmVPYmosIHBvcywgZGlyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV4dCA9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKCFib3VuZFRvTGluZSAmJiBmaW5kTmV4dExpbmUoKSkge1xuICAgICAgICAgICAgcG9zID0gZW5kT2ZMaW5lKHZpc3VhbGx5LCBkb2MuY20sIGxpbmVPYmosIHBvcy5saW5lLCBsaW5lRGlyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwb3MgPSBuZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgX19uYW1lKG1vdmVPbmNlLCBcIm1vdmVPbmNlXCIpO1xuICAgICAgaWYgKHVuaXQgPT0gXCJjaGFyXCIgfHwgdW5pdCA9PSBcImNvZGVwb2ludFwiKSB7XG4gICAgICAgIG1vdmVPbmNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHVuaXQgPT0gXCJjb2x1bW5cIikge1xuICAgICAgICBtb3ZlT25jZSh0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAodW5pdCA9PSBcIndvcmRcIiB8fCB1bml0ID09IFwiZ3JvdXBcIikge1xuICAgICAgICB2YXIgc2F3VHlwZSA9IG51bGwsIGdyb3VwID0gdW5pdCA9PSBcImdyb3VwXCI7XG4gICAgICAgIHZhciBoZWxwZXIgPSBkb2MuY20gJiYgZG9jLmNtLmdldEhlbHBlcihwb3MsIFwid29yZENoYXJzXCIpO1xuICAgICAgICBmb3IgKHZhciBmaXJzdCA9IHRydWU7IDsgZmlyc3QgPSBmYWxzZSkge1xuICAgICAgICAgIGlmIChkaXIgPCAwICYmICFtb3ZlT25jZSghZmlyc3QpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGN1ciA9IGxpbmVPYmoudGV4dC5jaGFyQXQocG9zLmNoKSB8fCBcIlxcblwiO1xuICAgICAgICAgIHZhciB0eXBlID0gaXNXb3JkQ2hhcihjdXIsIGhlbHBlcikgPyBcIndcIiA6IGdyb3VwICYmIGN1ciA9PSBcIlxcblwiID8gXCJuXCIgOiAhZ3JvdXAgfHwgL1xccy8udGVzdChjdXIpID8gbnVsbCA6IFwicFwiO1xuICAgICAgICAgIGlmIChncm91cCAmJiAhZmlyc3QgJiYgIXR5cGUpIHtcbiAgICAgICAgICAgIHR5cGUgPSBcInNcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNhd1R5cGUgJiYgc2F3VHlwZSAhPSB0eXBlKSB7XG4gICAgICAgICAgICBpZiAoZGlyIDwgMCkge1xuICAgICAgICAgICAgICBkaXIgPSAxO1xuICAgICAgICAgICAgICBtb3ZlT25jZSgpO1xuICAgICAgICAgICAgICBwb3Muc3RpY2t5ID0gXCJhZnRlclwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlKSB7XG4gICAgICAgICAgICBzYXdUeXBlID0gdHlwZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRpciA+IDAgJiYgIW1vdmVPbmNlKCFmaXJzdCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IHNraXBBdG9taWMoZG9jLCBwb3MsIG9sZFBvcywgb3JpZ0RpciwgdHJ1ZSk7XG4gICAgICBpZiAoZXF1YWxDdXJzb3JQb3Mob2xkUG9zLCByZXN1bHQpKSB7XG4gICAgICAgIHJlc3VsdC5oaXRTaWRlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIF9fbmFtZShmaW5kUG9zSCwgXCJmaW5kUG9zSFwiKTtcbiAgICBmdW5jdGlvbiBmaW5kUG9zVihjbSwgcG9zLCBkaXIsIHVuaXQpIHtcbiAgICAgIHZhciBkb2MgPSBjbS5kb2MsIHggPSBwb3MubGVmdCwgeTtcbiAgICAgIGlmICh1bml0ID09IFwicGFnZVwiKSB7XG4gICAgICAgIHZhciBwYWdlU2l6ZSA9IE1hdGgubWluKGNtLmRpc3BsYXkud3JhcHBlci5jbGllbnRIZWlnaHQsIHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KTtcbiAgICAgICAgdmFyIG1vdmVBbW91bnQgPSBNYXRoLm1heChwYWdlU2l6ZSAtIDAuNSAqIHRleHRIZWlnaHQoY20uZGlzcGxheSksIDMpO1xuICAgICAgICB5ID0gKGRpciA+IDAgPyBwb3MuYm90dG9tIDogcG9zLnRvcCkgKyBkaXIgKiBtb3ZlQW1vdW50O1xuICAgICAgfSBlbHNlIGlmICh1bml0ID09IFwibGluZVwiKSB7XG4gICAgICAgIHkgPSBkaXIgPiAwID8gcG9zLmJvdHRvbSArIDMgOiBwb3MudG9wIC0gMztcbiAgICAgIH1cbiAgICAgIHZhciB0YXJnZXQ7XG4gICAgICBmb3IgKDsgOyApIHtcbiAgICAgICAgdGFyZ2V0ID0gY29vcmRzQ2hhcihjbSwgeCwgeSk7XG4gICAgICAgIGlmICghdGFyZ2V0Lm91dHNpZGUpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlyIDwgMCA/IHkgPD0gMCA6IHkgPj0gZG9jLmhlaWdodCkge1xuICAgICAgICAgIHRhcmdldC5oaXRTaWRlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB5ICs9IGRpciAqIDU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICBfX25hbWUoZmluZFBvc1YsIFwiZmluZFBvc1ZcIik7XG4gICAgdmFyIENvbnRlbnRFZGl0YWJsZUlucHV0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihjbSkge1xuICAgICAgdGhpcy5jbSA9IGNtO1xuICAgICAgdGhpcy5sYXN0QW5jaG9yTm9kZSA9IHRoaXMubGFzdEFuY2hvck9mZnNldCA9IHRoaXMubGFzdEZvY3VzTm9kZSA9IHRoaXMubGFzdEZvY3VzT2Zmc2V0ID0gbnVsbDtcbiAgICAgIHRoaXMucG9sbGluZyA9IG5ldyBEZWxheWVkKCk7XG4gICAgICB0aGlzLmNvbXBvc2luZyA9IG51bGw7XG4gICAgICB0aGlzLmdyYWNlUGVyaW9kID0gZmFsc2U7XG4gICAgICB0aGlzLnJlYWRET01UaW1lb3V0ID0gbnVsbDtcbiAgICB9LCBcIkNvbnRlbnRFZGl0YWJsZUlucHV0XCIpO1xuICAgIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oZGlzcGxheSkge1xuICAgICAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgICAgIHZhciBpbnB1dCA9IHRoaXMsIGNtID0gaW5wdXQuY207XG4gICAgICB2YXIgZGl2ID0gaW5wdXQuZGl2ID0gZGlzcGxheS5saW5lRGl2O1xuICAgICAgZGl2LmNvbnRlbnRFZGl0YWJsZSA9IHRydWU7XG4gICAgICBkaXNhYmxlQnJvd3Nlck1hZ2ljKGRpdiwgY20ub3B0aW9ucy5zcGVsbGNoZWNrLCBjbS5vcHRpb25zLmF1dG9jb3JyZWN0LCBjbS5vcHRpb25zLmF1dG9jYXBpdGFsaXplKTtcbiAgICAgIGZ1bmN0aW9uIGJlbG9uZ3NUb0lucHV0KGUpIHtcbiAgICAgICAgZm9yICh2YXIgdCA9IGUudGFyZ2V0OyB0OyB0ID0gdC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgaWYgKHQgPT0gZGl2KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKC9cXGJDb2RlTWlycm9yLSg/OmxpbmUpP3dpZGdldFxcYi8udGVzdCh0LmNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBfX25hbWUoYmVsb25nc1RvSW5wdXQsIFwiYmVsb25nc1RvSW5wdXRcIik7XG4gICAgICBvbihkaXYsIFwicGFzdGVcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICBpZiAoIWJlbG9uZ3NUb0lucHV0KGUpIHx8IHNpZ25hbERPTUV2ZW50KGNtLCBlKSB8fCBoYW5kbGVQYXN0ZShlLCBjbSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGllX3ZlcnNpb24gPD0gMTEpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KG9wZXJhdGlvbihjbSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcyQxJDEudXBkYXRlRnJvbURPTSgpO1xuICAgICAgICAgIH0pLCAyMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgb24oZGl2LCBcImNvbXBvc2l0aW9uc3RhcnRcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICB0aGlzJDEkMS5jb21wb3NpbmcgPSB7IGRhdGE6IGUuZGF0YSwgZG9uZTogZmFsc2UgfTtcbiAgICAgIH0pO1xuICAgICAgb24oZGl2LCBcImNvbXBvc2l0aW9udXBkYXRlXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgaWYgKCF0aGlzJDEkMS5jb21wb3NpbmcpIHtcbiAgICAgICAgICB0aGlzJDEkMS5jb21wb3NpbmcgPSB7IGRhdGE6IGUuZGF0YSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBvbihkaXYsIFwiY29tcG9zaXRpb25lbmRcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICBpZiAodGhpcyQxJDEuY29tcG9zaW5nKSB7XG4gICAgICAgICAgaWYgKGUuZGF0YSAhPSB0aGlzJDEkMS5jb21wb3NpbmcuZGF0YSkge1xuICAgICAgICAgICAgdGhpcyQxJDEucmVhZEZyb21ET01Tb29uKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMkMSQxLmNvbXBvc2luZy5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBvbihkaXYsIFwidG91Y2hzdGFydFwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0LmZvcmNlQ29tcG9zaXRpb25FbmQoKTtcbiAgICAgIH0pO1xuICAgICAgb24oZGl2LCBcImlucHV0XCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoIXRoaXMkMSQxLmNvbXBvc2luZykge1xuICAgICAgICAgIHRoaXMkMSQxLnJlYWRGcm9tRE9NU29vbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGZ1bmN0aW9uIG9uQ29weUN1dChlKSB7XG4gICAgICAgIGlmICghYmVsb25nc1RvSW5wdXQoZSkgfHwgc2lnbmFsRE9NRXZlbnQoY20sIGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjbS5zb21ldGhpbmdTZWxlY3RlZCgpKSB7XG4gICAgICAgICAgc2V0TGFzdENvcGllZCh7IGxpbmVXaXNlOiBmYWxzZSwgdGV4dDogY20uZ2V0U2VsZWN0aW9ucygpIH0pO1xuICAgICAgICAgIGlmIChlLnR5cGUgPT0gXCJjdXRcIikge1xuICAgICAgICAgICAgY20ucmVwbGFjZVNlbGVjdGlvbihcIlwiLCBudWxsLCBcImN1dFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWNtLm9wdGlvbnMubGluZVdpc2VDb3B5Q3V0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciByYW5nZXMgPSBjb3B5YWJsZVJhbmdlcyhjbSk7XG4gICAgICAgICAgc2V0TGFzdENvcGllZCh7IGxpbmVXaXNlOiB0cnVlLCB0ZXh0OiByYW5nZXMudGV4dCB9KTtcbiAgICAgICAgICBpZiAoZS50eXBlID09IFwiY3V0XCIpIHtcbiAgICAgICAgICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgY20uc2V0U2VsZWN0aW9ucyhyYW5nZXMucmFuZ2VzLCAwLCBzZWxfZG9udFNjcm9sbCk7XG4gICAgICAgICAgICAgIGNtLnJlcGxhY2VTZWxlY3Rpb24oXCJcIiwgbnVsbCwgXCJjdXRcIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGUuY2xpcGJvYXJkRGF0YSkge1xuICAgICAgICAgIGUuY2xpcGJvYXJkRGF0YS5jbGVhckRhdGEoKTtcbiAgICAgICAgICB2YXIgY29udGVudCA9IGxhc3RDb3BpZWQudGV4dC5qb2luKFwiXFxuXCIpO1xuICAgICAgICAgIGUuY2xpcGJvYXJkRGF0YS5zZXREYXRhKFwiVGV4dFwiLCBjb250ZW50KTtcbiAgICAgICAgICBpZiAoZS5jbGlwYm9hcmREYXRhLmdldERhdGEoXCJUZXh0XCIpID09IGNvbnRlbnQpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGtsdWRnZSA9IGhpZGRlblRleHRhcmVhKCksIHRlID0ga2x1ZGdlLmZpcnN0Q2hpbGQ7XG4gICAgICAgIGNtLmRpc3BsYXkubGluZVNwYWNlLmluc2VydEJlZm9yZShrbHVkZ2UsIGNtLmRpc3BsYXkubGluZVNwYWNlLmZpcnN0Q2hpbGQpO1xuICAgICAgICB0ZS52YWx1ZSA9IGxhc3RDb3BpZWQudGV4dC5qb2luKFwiXFxuXCIpO1xuICAgICAgICB2YXIgaGFkRm9jdXMgPSBhY3RpdmVFbHQoKTtcbiAgICAgICAgc2VsZWN0SW5wdXQodGUpO1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGNtLmRpc3BsYXkubGluZVNwYWNlLnJlbW92ZUNoaWxkKGtsdWRnZSk7XG4gICAgICAgICAgaGFkRm9jdXMuZm9jdXMoKTtcbiAgICAgICAgICBpZiAoaGFkRm9jdXMgPT0gZGl2KSB7XG4gICAgICAgICAgICBpbnB1dC5zaG93UHJpbWFyeVNlbGVjdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgNTApO1xuICAgICAgfVxuICAgICAgX19uYW1lKG9uQ29weUN1dCwgXCJvbkNvcHlDdXRcIik7XG4gICAgICBvbihkaXYsIFwiY29weVwiLCBvbkNvcHlDdXQpO1xuICAgICAgb24oZGl2LCBcImN1dFwiLCBvbkNvcHlDdXQpO1xuICAgIH07XG4gICAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnNjcmVlblJlYWRlckxhYmVsQ2hhbmdlZCA9IGZ1bmN0aW9uKGxhYmVsKSB7XG4gICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgdGhpcy5kaXYuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCBsYWJlbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpdi5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnByZXBhcmVTZWxlY3Rpb24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZXN1bHQgPSBwcmVwYXJlU2VsZWN0aW9uKHRoaXMuY20sIGZhbHNlKTtcbiAgICAgIHJlc3VsdC5mb2N1cyA9IGFjdGl2ZUVsdCgpID09IHRoaXMuZGl2O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5zaG93U2VsZWN0aW9uID0gZnVuY3Rpb24oaW5mbywgdGFrZUZvY3VzKSB7XG4gICAgICBpZiAoIWluZm8gfHwgIXRoaXMuY20uZGlzcGxheS52aWV3Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaW5mby5mb2N1cyB8fCB0YWtlRm9jdXMpIHtcbiAgICAgICAgdGhpcy5zaG93UHJpbWFyeVNlbGVjdGlvbigpO1xuICAgICAgfVxuICAgICAgdGhpcy5zaG93TXVsdGlwbGVTZWxlY3Rpb25zKGluZm8pO1xuICAgIH07XG4gICAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLmdldFNlbGVjdGlvbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY20uZGlzcGxheS53cmFwcGVyLm93bmVyRG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7XG4gICAgfTtcbiAgICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUuc2hvd1ByaW1hcnlTZWxlY3Rpb24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzZWwgPSB0aGlzLmdldFNlbGVjdGlvbigpLCBjbSA9IHRoaXMuY20sIHByaW0gPSBjbS5kb2Muc2VsLnByaW1hcnkoKTtcbiAgICAgIHZhciBmcm9tID0gcHJpbS5mcm9tKCksIHRvID0gcHJpbS50bygpO1xuICAgICAgaWYgKGNtLmRpc3BsYXkudmlld1RvID09IGNtLmRpc3BsYXkudmlld0Zyb20gfHwgZnJvbS5saW5lID49IGNtLmRpc3BsYXkudmlld1RvIHx8IHRvLmxpbmUgPCBjbS5kaXNwbGF5LnZpZXdGcm9tKSB7XG4gICAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGN1ckFuY2hvciA9IGRvbVRvUG9zKGNtLCBzZWwuYW5jaG9yTm9kZSwgc2VsLmFuY2hvck9mZnNldCk7XG4gICAgICB2YXIgY3VyRm9jdXMgPSBkb21Ub1BvcyhjbSwgc2VsLmZvY3VzTm9kZSwgc2VsLmZvY3VzT2Zmc2V0KTtcbiAgICAgIGlmIChjdXJBbmNob3IgJiYgIWN1ckFuY2hvci5iYWQgJiYgY3VyRm9jdXMgJiYgIWN1ckZvY3VzLmJhZCAmJiBjbXAobWluUG9zKGN1ckFuY2hvciwgY3VyRm9jdXMpLCBmcm9tKSA9PSAwICYmIGNtcChtYXhQb3MoY3VyQW5jaG9yLCBjdXJGb2N1cyksIHRvKSA9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciB2aWV3ID0gY20uZGlzcGxheS52aWV3O1xuICAgICAgdmFyIHN0YXJ0ID0gZnJvbS5saW5lID49IGNtLmRpc3BsYXkudmlld0Zyb20gJiYgcG9zVG9ET00oY20sIGZyb20pIHx8IHsgbm9kZTogdmlld1swXS5tZWFzdXJlLm1hcFsyXSwgb2Zmc2V0OiAwIH07XG4gICAgICB2YXIgZW5kID0gdG8ubGluZSA8IGNtLmRpc3BsYXkudmlld1RvICYmIHBvc1RvRE9NKGNtLCB0byk7XG4gICAgICBpZiAoIWVuZCkge1xuICAgICAgICB2YXIgbWVhc3VyZSA9IHZpZXdbdmlldy5sZW5ndGggLSAxXS5tZWFzdXJlO1xuICAgICAgICB2YXIgbWFwMiA9IG1lYXN1cmUubWFwcyA/IG1lYXN1cmUubWFwc1ttZWFzdXJlLm1hcHMubGVuZ3RoIC0gMV0gOiBtZWFzdXJlLm1hcDtcbiAgICAgICAgZW5kID0geyBub2RlOiBtYXAyW21hcDIubGVuZ3RoIC0gMV0sIG9mZnNldDogbWFwMlttYXAyLmxlbmd0aCAtIDJdIC0gbWFwMlttYXAyLmxlbmd0aCAtIDNdIH07XG4gICAgICB9XG4gICAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpIHtcbiAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgb2xkID0gc2VsLnJhbmdlQ291bnQgJiYgc2VsLmdldFJhbmdlQXQoMCksIHJuZztcbiAgICAgIHRyeSB7XG4gICAgICAgIHJuZyA9IHJhbmdlKHN0YXJ0Lm5vZGUsIHN0YXJ0Lm9mZnNldCwgZW5kLm9mZnNldCwgZW5kLm5vZGUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgICAgaWYgKHJuZykge1xuICAgICAgICBpZiAoIWdlY2tvICYmIGNtLnN0YXRlLmZvY3VzZWQpIHtcbiAgICAgICAgICBzZWwuY29sbGFwc2Uoc3RhcnQubm9kZSwgc3RhcnQub2Zmc2V0KTtcbiAgICAgICAgICBpZiAoIXJuZy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgICAgIHNlbC5hZGRSYW5nZShybmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgICAgc2VsLmFkZFJhbmdlKHJuZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9sZCAmJiBzZWwuYW5jaG9yTm9kZSA9PSBudWxsKSB7XG4gICAgICAgICAgc2VsLmFkZFJhbmdlKG9sZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZ2Vja28pIHtcbiAgICAgICAgICB0aGlzLnN0YXJ0R3JhY2VQZXJpb2QoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5yZW1lbWJlclNlbGVjdGlvbigpO1xuICAgIH07XG4gICAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnN0YXJ0R3JhY2VQZXJpb2QgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0aGlzJDEkMSA9IHRoaXM7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5ncmFjZVBlcmlvZCk7XG4gICAgICB0aGlzLmdyYWNlUGVyaW9kID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcyQxJDEuZ3JhY2VQZXJpb2QgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMkMSQxLnNlbGVjdGlvbkNoYW5nZWQoKSkge1xuICAgICAgICAgIHRoaXMkMSQxLmNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzJDEkMS5jbS5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSwgMjApO1xuICAgIH07XG4gICAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnNob3dNdWx0aXBsZVNlbGVjdGlvbnMgPSBmdW5jdGlvbihpbmZvKSB7XG4gICAgICByZW1vdmVDaGlsZHJlbkFuZEFkZCh0aGlzLmNtLmRpc3BsYXkuY3Vyc29yRGl2LCBpbmZvLmN1cnNvcnMpO1xuICAgICAgcmVtb3ZlQ2hpbGRyZW5BbmRBZGQodGhpcy5jbS5kaXNwbGF5LnNlbGVjdGlvbkRpdiwgaW5mby5zZWxlY3Rpb24pO1xuICAgIH07XG4gICAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnJlbWVtYmVyU2VsZWN0aW9uID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc2VsID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgIHRoaXMubGFzdEFuY2hvck5vZGUgPSBzZWwuYW5jaG9yTm9kZTtcbiAgICAgIHRoaXMubGFzdEFuY2hvck9mZnNldCA9IHNlbC5hbmNob3JPZmZzZXQ7XG4gICAgICB0aGlzLmxhc3RGb2N1c05vZGUgPSBzZWwuZm9jdXNOb2RlO1xuICAgICAgdGhpcy5sYXN0Rm9jdXNPZmZzZXQgPSBzZWwuZm9jdXNPZmZzZXQ7XG4gICAgfTtcbiAgICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUuc2VsZWN0aW9uSW5FZGl0b3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzZWwgPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgICAgaWYgKCFzZWwucmFuZ2VDb3VudCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgbm9kZSA9IHNlbC5nZXRSYW5nZUF0KDApLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO1xuICAgICAgcmV0dXJuIGNvbnRhaW5zKHRoaXMuZGl2LCBub2RlKTtcbiAgICB9O1xuICAgIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5mb2N1cyA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuY20ub3B0aW9ucy5yZWFkT25seSAhPSBcIm5vY3Vyc29yXCIpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGlvbkluRWRpdG9yKCkgfHwgYWN0aXZlRWx0KCkgIT0gdGhpcy5kaXYpIHtcbiAgICAgICAgICB0aGlzLnNob3dTZWxlY3Rpb24odGhpcy5wcmVwYXJlU2VsZWN0aW9uKCksIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGl2LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUuYmx1ciA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5kaXYuYmx1cigpO1xuICAgIH07XG4gICAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLmdldEZpZWxkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXY7XG4gICAgfTtcbiAgICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUuc3VwcG9ydHNUb3VjaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUucmVjZWl2ZWRGb2N1cyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgICAgIHZhciBpbnB1dCA9IHRoaXM7XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25JbkVkaXRvcigpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMkMSQxLnBvbGxTZWxlY3Rpb24oKTtcbiAgICAgICAgfSwgMjApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcnVuSW5PcCh0aGlzLmNtLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gaW5wdXQuY20uY3VyT3Auc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcG9sbCgpIHtcbiAgICAgICAgaWYgKGlucHV0LmNtLnN0YXRlLmZvY3VzZWQpIHtcbiAgICAgICAgICBpbnB1dC5wb2xsU2VsZWN0aW9uKCk7XG4gICAgICAgICAgaW5wdXQucG9sbGluZy5zZXQoaW5wdXQuY20ub3B0aW9ucy5wb2xsSW50ZXJ2YWwsIHBvbGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUocG9sbCwgXCJwb2xsXCIpO1xuICAgICAgdGhpcy5wb2xsaW5nLnNldCh0aGlzLmNtLm9wdGlvbnMucG9sbEludGVydmFsLCBwb2xsKTtcbiAgICB9O1xuICAgIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5zZWxlY3Rpb25DaGFuZ2VkID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc2VsID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgIHJldHVybiBzZWwuYW5jaG9yTm9kZSAhPSB0aGlzLmxhc3RBbmNob3JOb2RlIHx8IHNlbC5hbmNob3JPZmZzZXQgIT0gdGhpcy5sYXN0QW5jaG9yT2Zmc2V0IHx8IHNlbC5mb2N1c05vZGUgIT0gdGhpcy5sYXN0Rm9jdXNOb2RlIHx8IHNlbC5mb2N1c09mZnNldCAhPSB0aGlzLmxhc3RGb2N1c09mZnNldDtcbiAgICB9O1xuICAgIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5wb2xsU2VsZWN0aW9uID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5yZWFkRE9NVGltZW91dCAhPSBudWxsIHx8IHRoaXMuZ3JhY2VQZXJpb2QgfHwgIXRoaXMuc2VsZWN0aW9uQ2hhbmdlZCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBzZWwgPSB0aGlzLmdldFNlbGVjdGlvbigpLCBjbSA9IHRoaXMuY207XG4gICAgICBpZiAoYW5kcm9pZCAmJiBjaHJvbWUgJiYgdGhpcy5jbS5kaXNwbGF5Lmd1dHRlclNwZWNzLmxlbmd0aCAmJiBpc0luR3V0dGVyKHNlbC5hbmNob3JOb2RlKSkge1xuICAgICAgICB0aGlzLmNtLnRyaWdnZXJPbktleURvd24oeyB0eXBlOiBcImtleWRvd25cIiwga2V5Q29kZTogOCwgcHJldmVudERlZmF1bHQ6IE1hdGguYWJzIH0pO1xuICAgICAgICB0aGlzLmJsdXIoKTtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jb21wb3NpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW1lbWJlclNlbGVjdGlvbigpO1xuICAgICAgdmFyIGFuY2hvciA9IGRvbVRvUG9zKGNtLCBzZWwuYW5jaG9yTm9kZSwgc2VsLmFuY2hvck9mZnNldCk7XG4gICAgICB2YXIgaGVhZCA9IGRvbVRvUG9zKGNtLCBzZWwuZm9jdXNOb2RlLCBzZWwuZm9jdXNPZmZzZXQpO1xuICAgICAgaWYgKGFuY2hvciAmJiBoZWFkKSB7XG4gICAgICAgIHJ1bkluT3AoY20sIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHNldFNlbGVjdGlvbihjbS5kb2MsIHNpbXBsZVNlbGVjdGlvbihhbmNob3IsIGhlYWQpLCBzZWxfZG9udFNjcm9sbCk7XG4gICAgICAgICAgaWYgKGFuY2hvci5iYWQgfHwgaGVhZC5iYWQpIHtcbiAgICAgICAgICAgIGNtLmN1ck9wLnNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUucG9sbENvbnRlbnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLnJlYWRET01UaW1lb3V0ICE9IG51bGwpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVhZERPTVRpbWVvdXQpO1xuICAgICAgICB0aGlzLnJlYWRET01UaW1lb3V0ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBjbSA9IHRoaXMuY20sIGRpc3BsYXkgPSBjbS5kaXNwbGF5LCBzZWwgPSBjbS5kb2Muc2VsLnByaW1hcnkoKTtcbiAgICAgIHZhciBmcm9tID0gc2VsLmZyb20oKSwgdG8gPSBzZWwudG8oKTtcbiAgICAgIGlmIChmcm9tLmNoID09IDAgJiYgZnJvbS5saW5lID4gY20uZmlyc3RMaW5lKCkpIHtcbiAgICAgICAgZnJvbSA9IFBvcyhmcm9tLmxpbmUgLSAxLCBnZXRMaW5lKGNtLmRvYywgZnJvbS5saW5lIC0gMSkubGVuZ3RoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0by5jaCA9PSBnZXRMaW5lKGNtLmRvYywgdG8ubGluZSkudGV4dC5sZW5ndGggJiYgdG8ubGluZSA8IGNtLmxhc3RMaW5lKCkpIHtcbiAgICAgICAgdG8gPSBQb3ModG8ubGluZSArIDEsIDApO1xuICAgICAgfVxuICAgICAgaWYgKGZyb20ubGluZSA8IGRpc3BsYXkudmlld0Zyb20gfHwgdG8ubGluZSA+IGRpc3BsYXkudmlld1RvIC0gMSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgZnJvbUluZGV4LCBmcm9tTGluZSwgZnJvbU5vZGU7XG4gICAgICBpZiAoZnJvbS5saW5lID09IGRpc3BsYXkudmlld0Zyb20gfHwgKGZyb21JbmRleCA9IGZpbmRWaWV3SW5kZXgoY20sIGZyb20ubGluZSkpID09IDApIHtcbiAgICAgICAgZnJvbUxpbmUgPSBsaW5lTm8oZGlzcGxheS52aWV3WzBdLmxpbmUpO1xuICAgICAgICBmcm9tTm9kZSA9IGRpc3BsYXkudmlld1swXS5ub2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZnJvbUxpbmUgPSBsaW5lTm8oZGlzcGxheS52aWV3W2Zyb21JbmRleF0ubGluZSk7XG4gICAgICAgIGZyb21Ob2RlID0gZGlzcGxheS52aWV3W2Zyb21JbmRleCAtIDFdLm5vZGUubmV4dFNpYmxpbmc7XG4gICAgICB9XG4gICAgICB2YXIgdG9JbmRleCA9IGZpbmRWaWV3SW5kZXgoY20sIHRvLmxpbmUpO1xuICAgICAgdmFyIHRvTGluZSwgdG9Ob2RlO1xuICAgICAgaWYgKHRvSW5kZXggPT0gZGlzcGxheS52aWV3Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdG9MaW5lID0gZGlzcGxheS52aWV3VG8gLSAxO1xuICAgICAgICB0b05vZGUgPSBkaXNwbGF5LmxpbmVEaXYubGFzdENoaWxkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9MaW5lID0gbGluZU5vKGRpc3BsYXkudmlld1t0b0luZGV4ICsgMV0ubGluZSkgLSAxO1xuICAgICAgICB0b05vZGUgPSBkaXNwbGF5LnZpZXdbdG9JbmRleCArIDFdLm5vZGUucHJldmlvdXNTaWJsaW5nO1xuICAgICAgfVxuICAgICAgaWYgKCFmcm9tTm9kZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgbmV3VGV4dCA9IGNtLmRvYy5zcGxpdExpbmVzKGRvbVRleHRCZXR3ZWVuKGNtLCBmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTGluZSwgdG9MaW5lKSk7XG4gICAgICB2YXIgb2xkVGV4dCA9IGdldEJldHdlZW4oY20uZG9jLCBQb3MoZnJvbUxpbmUsIDApLCBQb3ModG9MaW5lLCBnZXRMaW5lKGNtLmRvYywgdG9MaW5lKS50ZXh0Lmxlbmd0aCkpO1xuICAgICAgd2hpbGUgKG5ld1RleHQubGVuZ3RoID4gMSAmJiBvbGRUZXh0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgaWYgKGxzdChuZXdUZXh0KSA9PSBsc3Qob2xkVGV4dCkpIHtcbiAgICAgICAgICBuZXdUZXh0LnBvcCgpO1xuICAgICAgICAgIG9sZFRleHQucG9wKCk7XG4gICAgICAgICAgdG9MaW5lLS07XG4gICAgICAgIH0gZWxzZSBpZiAobmV3VGV4dFswXSA9PSBvbGRUZXh0WzBdKSB7XG4gICAgICAgICAgbmV3VGV4dC5zaGlmdCgpO1xuICAgICAgICAgIG9sZFRleHQuc2hpZnQoKTtcbiAgICAgICAgICBmcm9tTGluZSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgY3V0RnJvbnQgPSAwLCBjdXRFbmQgPSAwO1xuICAgICAgdmFyIG5ld1RvcCA9IG5ld1RleHRbMF0sIG9sZFRvcCA9IG9sZFRleHRbMF0sIG1heEN1dEZyb250ID0gTWF0aC5taW4obmV3VG9wLmxlbmd0aCwgb2xkVG9wLmxlbmd0aCk7XG4gICAgICB3aGlsZSAoY3V0RnJvbnQgPCBtYXhDdXRGcm9udCAmJiBuZXdUb3AuY2hhckNvZGVBdChjdXRGcm9udCkgPT0gb2xkVG9wLmNoYXJDb2RlQXQoY3V0RnJvbnQpKSB7XG4gICAgICAgICsrY3V0RnJvbnQ7XG4gICAgICB9XG4gICAgICB2YXIgbmV3Qm90ID0gbHN0KG5ld1RleHQpLCBvbGRCb3QgPSBsc3Qob2xkVGV4dCk7XG4gICAgICB2YXIgbWF4Q3V0RW5kID0gTWF0aC5taW4obmV3Qm90Lmxlbmd0aCAtIChuZXdUZXh0Lmxlbmd0aCA9PSAxID8gY3V0RnJvbnQgOiAwKSwgb2xkQm90Lmxlbmd0aCAtIChvbGRUZXh0Lmxlbmd0aCA9PSAxID8gY3V0RnJvbnQgOiAwKSk7XG4gICAgICB3aGlsZSAoY3V0RW5kIDwgbWF4Q3V0RW5kICYmIG5ld0JvdC5jaGFyQ29kZUF0KG5ld0JvdC5sZW5ndGggLSBjdXRFbmQgLSAxKSA9PSBvbGRCb3QuY2hhckNvZGVBdChvbGRCb3QubGVuZ3RoIC0gY3V0RW5kIC0gMSkpIHtcbiAgICAgICAgKytjdXRFbmQ7XG4gICAgICB9XG4gICAgICBpZiAobmV3VGV4dC5sZW5ndGggPT0gMSAmJiBvbGRUZXh0Lmxlbmd0aCA9PSAxICYmIGZyb21MaW5lID09IGZyb20ubGluZSkge1xuICAgICAgICB3aGlsZSAoY3V0RnJvbnQgJiYgY3V0RnJvbnQgPiBmcm9tLmNoICYmIG5ld0JvdC5jaGFyQ29kZUF0KG5ld0JvdC5sZW5ndGggLSBjdXRFbmQgLSAxKSA9PSBvbGRCb3QuY2hhckNvZGVBdChvbGRCb3QubGVuZ3RoIC0gY3V0RW5kIC0gMSkpIHtcbiAgICAgICAgICBjdXRGcm9udC0tO1xuICAgICAgICAgIGN1dEVuZCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuZXdUZXh0W25ld1RleHQubGVuZ3RoIC0gMV0gPSBuZXdCb3Quc2xpY2UoMCwgbmV3Qm90Lmxlbmd0aCAtIGN1dEVuZCkucmVwbGFjZSgvXlxcdTIwMGIrLywgXCJcIik7XG4gICAgICBuZXdUZXh0WzBdID0gbmV3VGV4dFswXS5zbGljZShjdXRGcm9udCkucmVwbGFjZSgvXFx1MjAwYiskLywgXCJcIik7XG4gICAgICB2YXIgY2hGcm9tID0gUG9zKGZyb21MaW5lLCBjdXRGcm9udCk7XG4gICAgICB2YXIgY2hUbyA9IFBvcyh0b0xpbmUsIG9sZFRleHQubGVuZ3RoID8gbHN0KG9sZFRleHQpLmxlbmd0aCAtIGN1dEVuZCA6IDApO1xuICAgICAgaWYgKG5ld1RleHQubGVuZ3RoID4gMSB8fCBuZXdUZXh0WzBdIHx8IGNtcChjaEZyb20sIGNoVG8pKSB7XG4gICAgICAgIHJlcGxhY2VSYW5nZShjbS5kb2MsIG5ld1RleHQsIGNoRnJvbSwgY2hUbywgXCIraW5wdXRcIik7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH07XG4gICAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLmVuc3VyZVBvbGxlZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5mb3JjZUNvbXBvc2l0aW9uRW5kKCk7XG4gICAgfTtcbiAgICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZm9yY2VDb21wb3NpdGlvbkVuZCgpO1xuICAgIH07XG4gICAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLmZvcmNlQ29tcG9zaXRpb25FbmQgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICghdGhpcy5jb21wb3NpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVhZERPTVRpbWVvdXQpO1xuICAgICAgdGhpcy5jb21wb3NpbmcgPSBudWxsO1xuICAgICAgdGhpcy51cGRhdGVGcm9tRE9NKCk7XG4gICAgICB0aGlzLmRpdi5ibHVyKCk7XG4gICAgICB0aGlzLmRpdi5mb2N1cygpO1xuICAgIH07XG4gICAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnJlYWRGcm9tRE9NU29vbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgICAgIGlmICh0aGlzLnJlYWRET01UaW1lb3V0ICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5yZWFkRE9NVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMkMSQxLnJlYWRET01UaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMkMSQxLmNvbXBvc2luZykge1xuICAgICAgICAgIGlmICh0aGlzJDEkMS5jb21wb3NpbmcuZG9uZSkge1xuICAgICAgICAgICAgdGhpcyQxJDEuY29tcG9zaW5nID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzJDEkMS51cGRhdGVGcm9tRE9NKCk7XG4gICAgICB9LCA4MCk7XG4gICAgfTtcbiAgICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUudXBkYXRlRnJvbURPTSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgICAgIGlmICh0aGlzLmNtLmlzUmVhZE9ubHkoKSB8fCAhdGhpcy5wb2xsQ29udGVudCgpKSB7XG4gICAgICAgIHJ1bkluT3AodGhpcy5jbSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHJlZ0NoYW5nZSh0aGlzJDEkMS5jbSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnNldFVuZWRpdGFibGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgICBub2RlLmNvbnRlbnRFZGl0YWJsZSA9IFwiZmFsc2VcIjtcbiAgICB9O1xuICAgIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5vbktleVByZXNzID0gZnVuY3Rpb24oZSkge1xuICAgICAgaWYgKGUuY2hhckNvZGUgPT0gMCB8fCB0aGlzLmNvbXBvc2luZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAoIXRoaXMuY20uaXNSZWFkT25seSgpKSB7XG4gICAgICAgIG9wZXJhdGlvbih0aGlzLmNtLCBhcHBseVRleHRJbnB1dCkodGhpcy5jbSwgU3RyaW5nLmZyb21DaGFyQ29kZShlLmNoYXJDb2RlID09IG51bGwgPyBlLmtleUNvZGUgOiBlLmNoYXJDb2RlKSwgMCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUucmVhZE9ubHlDaGFuZ2VkID0gZnVuY3Rpb24odmFsKSB7XG4gICAgICB0aGlzLmRpdi5jb250ZW50RWRpdGFibGUgPSBTdHJpbmcodmFsICE9IFwibm9jdXJzb3JcIik7XG4gICAgfTtcbiAgICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUub25Db250ZXh0TWVudSA9IGZ1bmN0aW9uKCkge1xuICAgIH07XG4gICAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnJlc2V0UG9zaXRpb24gPSBmdW5jdGlvbigpIHtcbiAgICB9O1xuICAgIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5uZWVkc0NvbnRlbnRBdHRyaWJ1dGUgPSB0cnVlO1xuICAgIGZ1bmN0aW9uIHBvc1RvRE9NKGNtLCBwb3MpIHtcbiAgICAgIHZhciB2aWV3ID0gZmluZFZpZXdGb3JMaW5lKGNtLCBwb3MubGluZSk7XG4gICAgICBpZiAoIXZpZXcgfHwgdmlldy5oaWRkZW4pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgbGluZSA9IGdldExpbmUoY20uZG9jLCBwb3MubGluZSk7XG4gICAgICB2YXIgaW5mbyA9IG1hcEZyb21MaW5lVmlldyh2aWV3LCBsaW5lLCBwb3MubGluZSk7XG4gICAgICB2YXIgb3JkZXIgPSBnZXRPcmRlcihsaW5lLCBjbS5kb2MuZGlyZWN0aW9uKSwgc2lkZSA9IFwibGVmdFwiO1xuICAgICAgaWYgKG9yZGVyKSB7XG4gICAgICAgIHZhciBwYXJ0UG9zID0gZ2V0QmlkaVBhcnRBdChvcmRlciwgcG9zLmNoKTtcbiAgICAgICAgc2lkZSA9IHBhcnRQb3MgJSAyID8gXCJyaWdodFwiIDogXCJsZWZ0XCI7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gbm9kZUFuZE9mZnNldEluTGluZU1hcChpbmZvLm1hcCwgcG9zLmNoLCBzaWRlKTtcbiAgICAgIHJlc3VsdC5vZmZzZXQgPSByZXN1bHQuY29sbGFwc2UgPT0gXCJyaWdodFwiID8gcmVzdWx0LmVuZCA6IHJlc3VsdC5zdGFydDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIF9fbmFtZShwb3NUb0RPTSwgXCJwb3NUb0RPTVwiKTtcbiAgICBmdW5jdGlvbiBpc0luR3V0dGVyKG5vZGUpIHtcbiAgICAgIGZvciAodmFyIHNjYW4gPSBub2RlOyBzY2FuOyBzY2FuID0gc2Nhbi5wYXJlbnROb2RlKSB7XG4gICAgICAgIGlmICgvQ29kZU1pcnJvci1ndXR0ZXItd3JhcHBlci8udGVzdChzY2FuLmNsYXNzTmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBfX25hbWUoaXNJbkd1dHRlciwgXCJpc0luR3V0dGVyXCIpO1xuICAgIGZ1bmN0aW9uIGJhZFBvcyhwb3MsIGJhZCkge1xuICAgICAgaWYgKGJhZCkge1xuICAgICAgICBwb3MuYmFkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwb3M7XG4gICAgfVxuICAgIF9fbmFtZShiYWRQb3MsIFwiYmFkUG9zXCIpO1xuICAgIGZ1bmN0aW9uIGRvbVRleHRCZXR3ZWVuKGNtLCBmcm9tLCB0bywgZnJvbUxpbmUsIHRvTGluZSkge1xuICAgICAgdmFyIHRleHQgPSBcIlwiLCBjbG9zaW5nID0gZmFsc2UsIGxpbmVTZXAgPSBjbS5kb2MubGluZVNlcGFyYXRvcigpLCBleHRyYUxpbmVicmVhayA9IGZhbHNlO1xuICAgICAgZnVuY3Rpb24gcmVjb2duaXplTWFya2VyKGlkKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihtYXJrZXIpIHtcbiAgICAgICAgICByZXR1cm4gbWFya2VyLmlkID09IGlkO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgX19uYW1lKHJlY29nbml6ZU1hcmtlciwgXCJyZWNvZ25pemVNYXJrZXJcIik7XG4gICAgICBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgICAgaWYgKGNsb3NpbmcpIHtcbiAgICAgICAgICB0ZXh0ICs9IGxpbmVTZXA7XG4gICAgICAgICAgaWYgKGV4dHJhTGluZWJyZWFrKSB7XG4gICAgICAgICAgICB0ZXh0ICs9IGxpbmVTZXA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNsb3NpbmcgPSBleHRyYUxpbmVicmVhayA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUoY2xvc2UsIFwiY2xvc2VcIik7XG4gICAgICBmdW5jdGlvbiBhZGRUZXh0KHN0cikge1xuICAgICAgICBpZiAoc3RyKSB7XG4gICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgICB0ZXh0ICs9IHN0cjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKGFkZFRleHQsIFwiYWRkVGV4dFwiKTtcbiAgICAgIGZ1bmN0aW9uIHdhbGsobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAxKSB7XG4gICAgICAgICAgdmFyIGNtVGV4dCA9IG5vZGUuZ2V0QXR0cmlidXRlKFwiY20tdGV4dFwiKTtcbiAgICAgICAgICBpZiAoY21UZXh0KSB7XG4gICAgICAgICAgICBhZGRUZXh0KGNtVGV4dCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBtYXJrZXJJRCA9IG5vZGUuZ2V0QXR0cmlidXRlKFwiY20tbWFya2VyXCIpLCByYW5nZTI7XG4gICAgICAgICAgaWYgKG1hcmtlcklEKSB7XG4gICAgICAgICAgICB2YXIgZm91bmQgPSBjbS5maW5kTWFya3MoUG9zKGZyb21MaW5lLCAwKSwgUG9zKHRvTGluZSArIDEsIDApLCByZWNvZ25pemVNYXJrZXIoK21hcmtlcklEKSk7XG4gICAgICAgICAgICBpZiAoZm91bmQubGVuZ3RoICYmIChyYW5nZTIgPSBmb3VuZFswXS5maW5kKDApKSkge1xuICAgICAgICAgICAgICBhZGRUZXh0KGdldEJldHdlZW4oY20uZG9jLCByYW5nZTIuZnJvbSwgcmFuZ2UyLnRvKS5qb2luKGxpbmVTZXApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpID09IFwiZmFsc2VcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgaXNCbG9jayA9IC9eKHByZXxkaXZ8cHxsaXx0YWJsZXxicikkL2kudGVzdChub2RlLm5vZGVOYW1lKTtcbiAgICAgICAgICBpZiAoIS9eYnIkL2kudGVzdChub2RlLm5vZGVOYW1lKSAmJiBub2RlLnRleHRDb250ZW50Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc0Jsb2NrKSB7XG4gICAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgICAgd2Fsayhub2RlLmNoaWxkTm9kZXNbaTJdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKC9eKHByZXxwKSQvaS50ZXN0KG5vZGUubm9kZU5hbWUpKSB7XG4gICAgICAgICAgICBleHRyYUxpbmVicmVhayA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc0Jsb2NrKSB7XG4gICAgICAgICAgICBjbG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKSB7XG4gICAgICAgICAgYWRkVGV4dChub2RlLm5vZGVWYWx1ZS5yZXBsYWNlKC9cXHUyMDBiL2csIFwiXCIpLnJlcGxhY2UoL1xcdTAwYTAvZywgXCIgXCIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKHdhbGssIFwid2Fsa1wiKTtcbiAgICAgIGZvciAoOyA7ICkge1xuICAgICAgICB3YWxrKGZyb20pO1xuICAgICAgICBpZiAoZnJvbSA9PSB0bykge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGZyb20gPSBmcm9tLm5leHRTaWJsaW5nO1xuICAgICAgICBleHRyYUxpbmVicmVhayA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuICAgIF9fbmFtZShkb21UZXh0QmV0d2VlbiwgXCJkb21UZXh0QmV0d2VlblwiKTtcbiAgICBmdW5jdGlvbiBkb21Ub1BvcyhjbSwgbm9kZSwgb2Zmc2V0KSB7XG4gICAgICB2YXIgbGluZU5vZGU7XG4gICAgICBpZiAobm9kZSA9PSBjbS5kaXNwbGF5LmxpbmVEaXYpIHtcbiAgICAgICAgbGluZU5vZGUgPSBjbS5kaXNwbGF5LmxpbmVEaXYuY2hpbGROb2Rlc1tvZmZzZXRdO1xuICAgICAgICBpZiAoIWxpbmVOb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIGJhZFBvcyhjbS5jbGlwUG9zKFBvcyhjbS5kaXNwbGF5LnZpZXdUbyAtIDEpKSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZSA9IG51bGw7XG4gICAgICAgIG9mZnNldCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGxpbmVOb2RlID0gbm9kZTsgOyBsaW5lTm9kZSA9IGxpbmVOb2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICBpZiAoIWxpbmVOb2RlIHx8IGxpbmVOb2RlID09IGNtLmRpc3BsYXkubGluZURpdikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsaW5lTm9kZS5wYXJlbnROb2RlICYmIGxpbmVOb2RlLnBhcmVudE5vZGUgPT0gY20uZGlzcGxheS5saW5lRGl2KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCBjbS5kaXNwbGF5LnZpZXcubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIHZhciBsaW5lVmlldyA9IGNtLmRpc3BsYXkudmlld1tpMl07XG4gICAgICAgIGlmIChsaW5lVmlldy5ub2RlID09IGxpbmVOb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIGxvY2F0ZU5vZGVJbkxpbmVWaWV3KGxpbmVWaWV3LCBub2RlLCBvZmZzZXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShkb21Ub1BvcywgXCJkb21Ub1Bvc1wiKTtcbiAgICBmdW5jdGlvbiBsb2NhdGVOb2RlSW5MaW5lVmlldyhsaW5lVmlldywgbm9kZSwgb2Zmc2V0KSB7XG4gICAgICB2YXIgd3JhcHBlciA9IGxpbmVWaWV3LnRleHQuZmlyc3RDaGlsZCwgYmFkID0gZmFsc2U7XG4gICAgICBpZiAoIW5vZGUgfHwgIWNvbnRhaW5zKHdyYXBwZXIsIG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBiYWRQb3MoUG9zKGxpbmVObyhsaW5lVmlldy5saW5lKSwgMCksIHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUgPT0gd3JhcHBlcikge1xuICAgICAgICBiYWQgPSB0cnVlO1xuICAgICAgICBub2RlID0gd3JhcHBlci5jaGlsZE5vZGVzW29mZnNldF07XG4gICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgIHZhciBsaW5lID0gbGluZVZpZXcucmVzdCA/IGxzdChsaW5lVmlldy5yZXN0KSA6IGxpbmVWaWV3LmxpbmU7XG4gICAgICAgICAgcmV0dXJuIGJhZFBvcyhQb3MobGluZU5vKGxpbmUpLCBsaW5lLnRleHQubGVuZ3RoKSwgYmFkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIHRleHROb2RlID0gbm9kZS5ub2RlVHlwZSA9PSAzID8gbm9kZSA6IG51bGwsIHRvcE5vZGUgPSBub2RlO1xuICAgICAgaWYgKCF0ZXh0Tm9kZSAmJiBub2RlLmNoaWxkTm9kZXMubGVuZ3RoID09IDEgJiYgbm9kZS5maXJzdENoaWxkLm5vZGVUeXBlID09IDMpIHtcbiAgICAgICAgdGV4dE5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG4gICAgICAgIGlmIChvZmZzZXQpIHtcbiAgICAgICAgICBvZmZzZXQgPSB0ZXh0Tm9kZS5ub2RlVmFsdWUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAodG9wTm9kZS5wYXJlbnROb2RlICE9IHdyYXBwZXIpIHtcbiAgICAgICAgdG9wTm9kZSA9IHRvcE5vZGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICAgIHZhciBtZWFzdXJlID0gbGluZVZpZXcubWVhc3VyZSwgbWFwcyA9IG1lYXN1cmUubWFwcztcbiAgICAgIGZ1bmN0aW9uIGZpbmQodGV4dE5vZGUyLCB0b3BOb2RlMiwgb2Zmc2V0Mikge1xuICAgICAgICBmb3IgKHZhciBpMiA9IC0xOyBpMiA8IChtYXBzID8gbWFwcy5sZW5ndGggOiAwKTsgaTIrKykge1xuICAgICAgICAgIHZhciBtYXAyID0gaTIgPCAwID8gbWVhc3VyZS5tYXAgOiBtYXBzW2kyXTtcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1hcDIubGVuZ3RoOyBqICs9IDMpIHtcbiAgICAgICAgICAgIHZhciBjdXJOb2RlID0gbWFwMltqICsgMl07XG4gICAgICAgICAgICBpZiAoY3VyTm9kZSA9PSB0ZXh0Tm9kZTIgfHwgY3VyTm9kZSA9PSB0b3BOb2RlMikge1xuICAgICAgICAgICAgICB2YXIgbGluZTIgPSBsaW5lTm8oaTIgPCAwID8gbGluZVZpZXcubGluZSA6IGxpbmVWaWV3LnJlc3RbaTJdKTtcbiAgICAgICAgICAgICAgdmFyIGNoID0gbWFwMltqXSArIG9mZnNldDI7XG4gICAgICAgICAgICAgIGlmIChvZmZzZXQyIDwgMCB8fCBjdXJOb2RlICE9IHRleHROb2RlMikge1xuICAgICAgICAgICAgICAgIGNoID0gbWFwMltqICsgKG9mZnNldDIgPyAxIDogMCldO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBQb3MobGluZTIsIGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9fbmFtZShmaW5kLCBcImZpbmRcIik7XG4gICAgICB2YXIgZm91bmQgPSBmaW5kKHRleHROb2RlLCB0b3BOb2RlLCBvZmZzZXQpO1xuICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgIHJldHVybiBiYWRQb3MoZm91bmQsIGJhZCk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBhZnRlciA9IHRvcE5vZGUubmV4dFNpYmxpbmcsIGRpc3QgPSB0ZXh0Tm9kZSA/IHRleHROb2RlLm5vZGVWYWx1ZS5sZW5ndGggLSBvZmZzZXQgOiAwOyBhZnRlcjsgYWZ0ZXIgPSBhZnRlci5uZXh0U2libGluZykge1xuICAgICAgICBmb3VuZCA9IGZpbmQoYWZ0ZXIsIGFmdGVyLmZpcnN0Q2hpbGQsIDApO1xuICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICByZXR1cm4gYmFkUG9zKFBvcyhmb3VuZC5saW5lLCBmb3VuZC5jaCAtIGRpc3QpLCBiYWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpc3QgKz0gYWZ0ZXIudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBiZWZvcmUgPSB0b3BOb2RlLnByZXZpb3VzU2libGluZywgZGlzdCQxID0gb2Zmc2V0OyBiZWZvcmU7IGJlZm9yZSA9IGJlZm9yZS5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgZm91bmQgPSBmaW5kKGJlZm9yZSwgYmVmb3JlLmZpcnN0Q2hpbGQsIC0xKTtcbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgcmV0dXJuIGJhZFBvcyhQb3MoZm91bmQubGluZSwgZm91bmQuY2ggKyBkaXN0JDEpLCBiYWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpc3QkMSArPSBiZWZvcmUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShsb2NhdGVOb2RlSW5MaW5lVmlldywgXCJsb2NhdGVOb2RlSW5MaW5lVmlld1wiKTtcbiAgICB2YXIgVGV4dGFyZWFJbnB1dCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oY20pIHtcbiAgICAgIHRoaXMuY20gPSBjbTtcbiAgICAgIHRoaXMucHJldklucHV0ID0gXCJcIjtcbiAgICAgIHRoaXMucG9sbGluZ0Zhc3QgPSBmYWxzZTtcbiAgICAgIHRoaXMucG9sbGluZyA9IG5ldyBEZWxheWVkKCk7XG4gICAgICB0aGlzLmhhc1NlbGVjdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy5jb21wb3NpbmcgPSBudWxsO1xuICAgIH0sIFwiVGV4dGFyZWFJbnB1dFwiKTtcbiAgICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oZGlzcGxheSkge1xuICAgICAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgICAgIHZhciBpbnB1dCA9IHRoaXMsIGNtID0gdGhpcy5jbTtcbiAgICAgIHRoaXMuY3JlYXRlRmllbGQoZGlzcGxheSk7XG4gICAgICB2YXIgdGUgPSB0aGlzLnRleHRhcmVhO1xuICAgICAgZGlzcGxheS53cmFwcGVyLmluc2VydEJlZm9yZSh0aGlzLndyYXBwZXIsIGRpc3BsYXkud3JhcHBlci5maXJzdENoaWxkKTtcbiAgICAgIGlmIChpb3MpIHtcbiAgICAgICAgdGUuc3R5bGUud2lkdGggPSBcIjBweFwiO1xuICAgICAgfVxuICAgICAgb24odGUsIFwiaW5wdXRcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChpZSAmJiBpZV92ZXJzaW9uID49IDkgJiYgdGhpcyQxJDEuaGFzU2VsZWN0aW9uKSB7XG4gICAgICAgICAgdGhpcyQxJDEuaGFzU2VsZWN0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dC5wb2xsKCk7XG4gICAgICB9KTtcbiAgICAgIG9uKHRlLCBcInBhc3RlXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgaWYgKHNpZ25hbERPTUV2ZW50KGNtLCBlKSB8fCBoYW5kbGVQYXN0ZShlLCBjbSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY20uc3RhdGUucGFzdGVJbmNvbWluZyA9ICtuZXcgRGF0ZSgpO1xuICAgICAgICBpbnB1dC5mYXN0UG9sbCgpO1xuICAgICAgfSk7XG4gICAgICBmdW5jdGlvbiBwcmVwYXJlQ29weUN1dChlKSB7XG4gICAgICAgIGlmIChzaWduYWxET01FdmVudChjbSwgZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNtLnNvbWV0aGluZ1NlbGVjdGVkKCkpIHtcbiAgICAgICAgICBzZXRMYXN0Q29waWVkKHsgbGluZVdpc2U6IGZhbHNlLCB0ZXh0OiBjbS5nZXRTZWxlY3Rpb25zKCkgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWNtLm9wdGlvbnMubGluZVdpc2VDb3B5Q3V0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciByYW5nZXMgPSBjb3B5YWJsZVJhbmdlcyhjbSk7XG4gICAgICAgICAgc2V0TGFzdENvcGllZCh7IGxpbmVXaXNlOiB0cnVlLCB0ZXh0OiByYW5nZXMudGV4dCB9KTtcbiAgICAgICAgICBpZiAoZS50eXBlID09IFwiY3V0XCIpIHtcbiAgICAgICAgICAgIGNtLnNldFNlbGVjdGlvbnMocmFuZ2VzLnJhbmdlcywgbnVsbCwgc2VsX2RvbnRTY3JvbGwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dC5wcmV2SW5wdXQgPSBcIlwiO1xuICAgICAgICAgICAgdGUudmFsdWUgPSByYW5nZXMudGV4dC5qb2luKFwiXFxuXCIpO1xuICAgICAgICAgICAgc2VsZWN0SW5wdXQodGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZS50eXBlID09IFwiY3V0XCIpIHtcbiAgICAgICAgICBjbS5zdGF0ZS5jdXRJbmNvbWluZyA9ICtuZXcgRGF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUocHJlcGFyZUNvcHlDdXQsIFwicHJlcGFyZUNvcHlDdXRcIik7XG4gICAgICBvbih0ZSwgXCJjdXRcIiwgcHJlcGFyZUNvcHlDdXQpO1xuICAgICAgb24odGUsIFwiY29weVwiLCBwcmVwYXJlQ29weUN1dCk7XG4gICAgICBvbihkaXNwbGF5LnNjcm9sbGVyLCBcInBhc3RlXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgaWYgKGV2ZW50SW5XaWRnZXQoZGlzcGxheSwgZSkgfHwgc2lnbmFsRE9NRXZlbnQoY20sIGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGUuZGlzcGF0Y2hFdmVudCkge1xuICAgICAgICAgIGNtLnN0YXRlLnBhc3RlSW5jb21pbmcgPSArbmV3IERhdGUoKTtcbiAgICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoXCJwYXN0ZVwiKTtcbiAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YSA9IGUuY2xpcGJvYXJkRGF0YTtcbiAgICAgICAgdGUuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICB9KTtcbiAgICAgIG9uKGRpc3BsYXkubGluZVNwYWNlLCBcInNlbGVjdHN0YXJ0XCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgaWYgKCFldmVudEluV2lkZ2V0KGRpc3BsYXksIGUpKSB7XG4gICAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBvbih0ZSwgXCJjb21wb3NpdGlvbnN0YXJ0XCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc3RhcnQgPSBjbS5nZXRDdXJzb3IoXCJmcm9tXCIpO1xuICAgICAgICBpZiAoaW5wdXQuY29tcG9zaW5nKSB7XG4gICAgICAgICAgaW5wdXQuY29tcG9zaW5nLnJhbmdlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQuY29tcG9zaW5nID0ge1xuICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgIHJhbmdlOiBjbS5tYXJrVGV4dChzdGFydCwgY20uZ2V0Q3Vyc29yKFwidG9cIiksIHsgY2xhc3NOYW1lOiBcIkNvZGVNaXJyb3ItY29tcG9zaW5nXCIgfSlcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgb24odGUsIFwiY29tcG9zaXRpb25lbmRcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChpbnB1dC5jb21wb3NpbmcpIHtcbiAgICAgICAgICBpbnB1dC5wb2xsKCk7XG4gICAgICAgICAgaW5wdXQuY29tcG9zaW5nLnJhbmdlLmNsZWFyKCk7XG4gICAgICAgICAgaW5wdXQuY29tcG9zaW5nID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5jcmVhdGVGaWVsZCA9IGZ1bmN0aW9uKF9kaXNwbGF5KSB7XG4gICAgICB0aGlzLndyYXBwZXIgPSBoaWRkZW5UZXh0YXJlYSgpO1xuICAgICAgdGhpcy50ZXh0YXJlYSA9IHRoaXMud3JhcHBlci5maXJzdENoaWxkO1xuICAgIH07XG4gICAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUuc2NyZWVuUmVhZGVyTGFiZWxDaGFuZ2VkID0gZnVuY3Rpb24obGFiZWwpIHtcbiAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICB0aGlzLnRleHRhcmVhLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgbGFiZWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50ZXh0YXJlYS5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUucHJlcGFyZVNlbGVjdGlvbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNtID0gdGhpcy5jbSwgZGlzcGxheSA9IGNtLmRpc3BsYXksIGRvYyA9IGNtLmRvYztcbiAgICAgIHZhciByZXN1bHQgPSBwcmVwYXJlU2VsZWN0aW9uKGNtKTtcbiAgICAgIGlmIChjbS5vcHRpb25zLm1vdmVJbnB1dFdpdGhDdXJzb3IpIHtcbiAgICAgICAgdmFyIGhlYWRQb3MgPSBjdXJzb3JDb29yZHMoY20sIGRvYy5zZWwucHJpbWFyeSgpLmhlYWQsIFwiZGl2XCIpO1xuICAgICAgICB2YXIgd3JhcE9mZiA9IGRpc3BsYXkud3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgbGluZU9mZiA9IGRpc3BsYXkubGluZURpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmVzdWx0LnRlVG9wID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oZGlzcGxheS53cmFwcGVyLmNsaWVudEhlaWdodCAtIDEwLCBoZWFkUG9zLnRvcCArIGxpbmVPZmYudG9wIC0gd3JhcE9mZi50b3ApKTtcbiAgICAgICAgcmVzdWx0LnRlTGVmdCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGRpc3BsYXkud3JhcHBlci5jbGllbnRXaWR0aCAtIDEwLCBoZWFkUG9zLmxlZnQgKyBsaW5lT2ZmLmxlZnQgLSB3cmFwT2ZmLmxlZnQpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5zaG93U2VsZWN0aW9uID0gZnVuY3Rpb24oZHJhd24pIHtcbiAgICAgIHZhciBjbSA9IHRoaXMuY20sIGRpc3BsYXkgPSBjbS5kaXNwbGF5O1xuICAgICAgcmVtb3ZlQ2hpbGRyZW5BbmRBZGQoZGlzcGxheS5jdXJzb3JEaXYsIGRyYXduLmN1cnNvcnMpO1xuICAgICAgcmVtb3ZlQ2hpbGRyZW5BbmRBZGQoZGlzcGxheS5zZWxlY3Rpb25EaXYsIGRyYXduLnNlbGVjdGlvbik7XG4gICAgICBpZiAoZHJhd24udGVUb3AgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLndyYXBwZXIuc3R5bGUudG9wID0gZHJhd24udGVUb3AgKyBcInB4XCI7XG4gICAgICAgIHRoaXMud3JhcHBlci5zdHlsZS5sZWZ0ID0gZHJhd24udGVMZWZ0ICsgXCJweFwiO1xuICAgICAgfVxuICAgIH07XG4gICAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbih0eXBpbmcpIHtcbiAgICAgIGlmICh0aGlzLmNvbnRleHRNZW51UGVuZGluZyB8fCB0aGlzLmNvbXBvc2luZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgY20gPSB0aGlzLmNtO1xuICAgICAgaWYgKGNtLnNvbWV0aGluZ1NlbGVjdGVkKCkpIHtcbiAgICAgICAgdGhpcy5wcmV2SW5wdXQgPSBcIlwiO1xuICAgICAgICB2YXIgY29udGVudCA9IGNtLmdldFNlbGVjdGlvbigpO1xuICAgICAgICB0aGlzLnRleHRhcmVhLnZhbHVlID0gY29udGVudDtcbiAgICAgICAgaWYgKGNtLnN0YXRlLmZvY3VzZWQpIHtcbiAgICAgICAgICBzZWxlY3RJbnB1dCh0aGlzLnRleHRhcmVhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA+PSA5KSB7XG4gICAgICAgICAgdGhpcy5oYXNTZWxlY3Rpb24gPSBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCF0eXBpbmcpIHtcbiAgICAgICAgdGhpcy5wcmV2SW5wdXQgPSB0aGlzLnRleHRhcmVhLnZhbHVlID0gXCJcIjtcbiAgICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPj0gOSkge1xuICAgICAgICAgIHRoaXMuaGFzU2VsZWN0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUuZ2V0RmllbGQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHRhcmVhO1xuICAgIH07XG4gICAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUuc3VwcG9ydHNUb3VjaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLmNtLm9wdGlvbnMucmVhZE9ubHkgIT0gXCJub2N1cnNvclwiICYmICghbW9iaWxlIHx8IGFjdGl2ZUVsdCgpICE9IHRoaXMudGV4dGFyZWEpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy50ZXh0YXJlYS5mb2N1cygpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIFRleHRhcmVhSW5wdXQucHJvdG90eXBlLmJsdXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMudGV4dGFyZWEuYmx1cigpO1xuICAgIH07XG4gICAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUucmVzZXRQb3NpdGlvbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy53cmFwcGVyLnN0eWxlLnRvcCA9IHRoaXMud3JhcHBlci5zdHlsZS5sZWZ0ID0gMDtcbiAgICB9O1xuICAgIFRleHRhcmVhSW5wdXQucHJvdG90eXBlLnJlY2VpdmVkRm9jdXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuc2xvd1BvbGwoKTtcbiAgICB9O1xuICAgIFRleHRhcmVhSW5wdXQucHJvdG90eXBlLnNsb3dQb2xsID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdGhpcyQxJDEgPSB0aGlzO1xuICAgICAgaWYgKHRoaXMucG9sbGluZ0Zhc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5wb2xsaW5nLnNldCh0aGlzLmNtLm9wdGlvbnMucG9sbEludGVydmFsLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcyQxJDEucG9sbCgpO1xuICAgICAgICBpZiAodGhpcyQxJDEuY20uc3RhdGUuZm9jdXNlZCkge1xuICAgICAgICAgIHRoaXMkMSQxLnNsb3dQb2xsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUuZmFzdFBvbGwgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBtaXNzZWQgPSBmYWxzZSwgaW5wdXQgPSB0aGlzO1xuICAgICAgaW5wdXQucG9sbGluZ0Zhc3QgPSB0cnVlO1xuICAgICAgZnVuY3Rpb24gcCgpIHtcbiAgICAgICAgdmFyIGNoYW5nZWQgPSBpbnB1dC5wb2xsKCk7XG4gICAgICAgIGlmICghY2hhbmdlZCAmJiAhbWlzc2VkKSB7XG4gICAgICAgICAgbWlzc2VkID0gdHJ1ZTtcbiAgICAgICAgICBpbnB1dC5wb2xsaW5nLnNldCg2MCwgcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5wdXQucG9sbGluZ0Zhc3QgPSBmYWxzZTtcbiAgICAgICAgICBpbnB1dC5zbG93UG9sbCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUocCwgXCJwXCIpO1xuICAgICAgaW5wdXQucG9sbGluZy5zZXQoMjAsIHApO1xuICAgIH07XG4gICAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUucG9sbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHRoaXMkMSQxID0gdGhpcztcbiAgICAgIHZhciBjbSA9IHRoaXMuY20sIGlucHV0ID0gdGhpcy50ZXh0YXJlYSwgcHJldklucHV0ID0gdGhpcy5wcmV2SW5wdXQ7XG4gICAgICBpZiAodGhpcy5jb250ZXh0TWVudVBlbmRpbmcgfHwgIWNtLnN0YXRlLmZvY3VzZWQgfHwgaGFzU2VsZWN0aW9uKGlucHV0KSAmJiAhcHJldklucHV0ICYmICF0aGlzLmNvbXBvc2luZyB8fCBjbS5pc1JlYWRPbmx5KCkgfHwgY20ub3B0aW9ucy5kaXNhYmxlSW5wdXQgfHwgY20uc3RhdGUua2V5U2VxKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciB0ZXh0ID0gaW5wdXQudmFsdWU7XG4gICAgICBpZiAodGV4dCA9PSBwcmV2SW5wdXQgJiYgIWNtLnNvbWV0aGluZ1NlbGVjdGVkKCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPj0gOSAmJiB0aGlzLmhhc1NlbGVjdGlvbiA9PT0gdGV4dCB8fCBtYWMgJiYgL1tcXHVmNzAwLVxcdWY3ZmZdLy50ZXN0KHRleHQpKSB7XG4gICAgICAgIGNtLmRpc3BsYXkuaW5wdXQucmVzZXQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGNtLmRvYy5zZWwgPT0gY20uZGlzcGxheS5zZWxGb3JDb250ZXh0TWVudSkge1xuICAgICAgICB2YXIgZmlyc3QgPSB0ZXh0LmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIGlmIChmaXJzdCA9PSA4MjAzICYmICFwcmV2SW5wdXQpIHtcbiAgICAgICAgICBwcmV2SW5wdXQgPSBcIlxcdTIwMEJcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlyc3QgPT0gODY2Nikge1xuICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jbS5leGVjQ29tbWFuZChcInVuZG9cIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBzYW1lID0gMCwgbCA9IE1hdGgubWluKHByZXZJbnB1dC5sZW5ndGgsIHRleHQubGVuZ3RoKTtcbiAgICAgIHdoaWxlIChzYW1lIDwgbCAmJiBwcmV2SW5wdXQuY2hhckNvZGVBdChzYW1lKSA9PSB0ZXh0LmNoYXJDb2RlQXQoc2FtZSkpIHtcbiAgICAgICAgKytzYW1lO1xuICAgICAgfVxuICAgICAgcnVuSW5PcChjbSwgZnVuY3Rpb24oKSB7XG4gICAgICAgIGFwcGx5VGV4dElucHV0KGNtLCB0ZXh0LnNsaWNlKHNhbWUpLCBwcmV2SW5wdXQubGVuZ3RoIC0gc2FtZSwgbnVsbCwgdGhpcyQxJDEuY29tcG9zaW5nID8gXCIqY29tcG9zZVwiIDogbnVsbCk7XG4gICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IDFlMyB8fCB0ZXh0LmluZGV4T2YoXCJcXG5cIikgPiAtMSkge1xuICAgICAgICAgIGlucHV0LnZhbHVlID0gdGhpcyQxJDEucHJldklucHV0ID0gXCJcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzJDEkMS5wcmV2SW5wdXQgPSB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzJDEkMS5jb21wb3NpbmcpIHtcbiAgICAgICAgICB0aGlzJDEkMS5jb21wb3NpbmcucmFuZ2UuY2xlYXIoKTtcbiAgICAgICAgICB0aGlzJDEkMS5jb21wb3NpbmcucmFuZ2UgPSBjbS5tYXJrVGV4dCh0aGlzJDEkMS5jb21wb3Npbmcuc3RhcnQsIGNtLmdldEN1cnNvcihcInRvXCIpLCB7IGNsYXNzTmFtZTogXCJDb2RlTWlycm9yLWNvbXBvc2luZ1wiIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUuZW5zdXJlUG9sbGVkID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5wb2xsaW5nRmFzdCAmJiB0aGlzLnBvbGwoKSkge1xuICAgICAgICB0aGlzLnBvbGxpbmdGYXN0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcbiAgICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5vbktleVByZXNzID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA+PSA5KSB7XG4gICAgICAgIHRoaXMuaGFzU2VsZWN0aW9uID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmFzdFBvbGwoKTtcbiAgICB9O1xuICAgIFRleHRhcmVhSW5wdXQucHJvdG90eXBlLm9uQ29udGV4dE1lbnUgPSBmdW5jdGlvbihlKSB7XG4gICAgICB2YXIgaW5wdXQgPSB0aGlzLCBjbSA9IGlucHV0LmNtLCBkaXNwbGF5ID0gY20uZGlzcGxheSwgdGUgPSBpbnB1dC50ZXh0YXJlYTtcbiAgICAgIGlmIChpbnB1dC5jb250ZXh0TWVudVBlbmRpbmcpIHtcbiAgICAgICAgaW5wdXQuY29udGV4dE1lbnVQZW5kaW5nKCk7XG4gICAgICB9XG4gICAgICB2YXIgcG9zID0gcG9zRnJvbU1vdXNlKGNtLCBlKSwgc2Nyb2xsUG9zID0gZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3A7XG4gICAgICBpZiAoIXBvcyB8fCBwcmVzdG8pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHJlc2V0ID0gY20ub3B0aW9ucy5yZXNldFNlbGVjdGlvbk9uQ29udGV4dE1lbnU7XG4gICAgICBpZiAocmVzZXQgJiYgY20uZG9jLnNlbC5jb250YWlucyhwb3MpID09IC0xKSB7XG4gICAgICAgIG9wZXJhdGlvbihjbSwgc2V0U2VsZWN0aW9uKShjbS5kb2MsIHNpbXBsZVNlbGVjdGlvbihwb3MpLCBzZWxfZG9udFNjcm9sbCk7XG4gICAgICB9XG4gICAgICB2YXIgb2xkQ1NTID0gdGUuc3R5bGUuY3NzVGV4dCwgb2xkV3JhcHBlckNTUyA9IGlucHV0LndyYXBwZXIuc3R5bGUuY3NzVGV4dDtcbiAgICAgIHZhciB3cmFwcGVyQm94ID0gaW5wdXQud3JhcHBlci5vZmZzZXRQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpbnB1dC53cmFwcGVyLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBzdGF0aWNcIjtcbiAgICAgIHRlLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDMwcHg7IGhlaWdodDogMzBweDtcXG4gICAgICB0b3A6IFwiICsgKGUuY2xpZW50WSAtIHdyYXBwZXJCb3gudG9wIC0gNSkgKyBcInB4OyBsZWZ0OiBcIiArIChlLmNsaWVudFggLSB3cmFwcGVyQm94LmxlZnQgLSA1KSArIFwicHg7XFxuICAgICAgei1pbmRleDogMTAwMDsgYmFja2dyb3VuZDogXCIgKyAoaWUgPyBcInJnYmEoMjU1LCAyNTUsIDI1NSwgLjA1KVwiIDogXCJ0cmFuc3BhcmVudFwiKSArIFwiO1xcbiAgICAgIG91dGxpbmU6IG5vbmU7IGJvcmRlci13aWR0aDogMDsgb3V0bGluZTogbm9uZTsgb3ZlcmZsb3c6IGhpZGRlbjsgb3BhY2l0eTogLjA1OyBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NSk7XCI7XG4gICAgICB2YXIgb2xkU2Nyb2xsWTtcbiAgICAgIGlmICh3ZWJraXQpIHtcbiAgICAgICAgb2xkU2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgfVxuICAgICAgZGlzcGxheS5pbnB1dC5mb2N1cygpO1xuICAgICAgaWYgKHdlYmtpdCkge1xuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8obnVsbCwgb2xkU2Nyb2xsWSk7XG4gICAgICB9XG4gICAgICBkaXNwbGF5LmlucHV0LnJlc2V0KCk7XG4gICAgICBpZiAoIWNtLnNvbWV0aGluZ1NlbGVjdGVkKCkpIHtcbiAgICAgICAgdGUudmFsdWUgPSBpbnB1dC5wcmV2SW5wdXQgPSBcIiBcIjtcbiAgICAgIH1cbiAgICAgIGlucHV0LmNvbnRleHRNZW51UGVuZGluZyA9IHJlaGlkZTtcbiAgICAgIGRpc3BsYXkuc2VsRm9yQ29udGV4dE1lbnUgPSBjbS5kb2Muc2VsO1xuICAgICAgY2xlYXJUaW1lb3V0KGRpc3BsYXkuZGV0ZWN0aW5nU2VsZWN0QWxsKTtcbiAgICAgIGZ1bmN0aW9uIHByZXBhcmVTZWxlY3RBbGxIYWNrKCkge1xuICAgICAgICBpZiAodGUuc2VsZWN0aW9uU3RhcnQgIT0gbnVsbCkge1xuICAgICAgICAgIHZhciBzZWxlY3RlZCA9IGNtLnNvbWV0aGluZ1NlbGVjdGVkKCk7XG4gICAgICAgICAgdmFyIGV4dHZhbCA9IFwiXFx1MjAwQlwiICsgKHNlbGVjdGVkID8gdGUudmFsdWUgOiBcIlwiKTtcbiAgICAgICAgICB0ZS52YWx1ZSA9IFwiXFx1MjFEQVwiO1xuICAgICAgICAgIHRlLnZhbHVlID0gZXh0dmFsO1xuICAgICAgICAgIGlucHV0LnByZXZJbnB1dCA9IHNlbGVjdGVkID8gXCJcIiA6IFwiXFx1MjAwQlwiO1xuICAgICAgICAgIHRlLnNlbGVjdGlvblN0YXJ0ID0gMTtcbiAgICAgICAgICB0ZS5zZWxlY3Rpb25FbmQgPSBleHR2YWwubGVuZ3RoO1xuICAgICAgICAgIGRpc3BsYXkuc2VsRm9yQ29udGV4dE1lbnUgPSBjbS5kb2Muc2VsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUocHJlcGFyZVNlbGVjdEFsbEhhY2ssIFwicHJlcGFyZVNlbGVjdEFsbEhhY2tcIik7XG4gICAgICBmdW5jdGlvbiByZWhpZGUoKSB7XG4gICAgICAgIGlmIChpbnB1dC5jb250ZXh0TWVudVBlbmRpbmcgIT0gcmVoaWRlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0LmNvbnRleHRNZW51UGVuZGluZyA9IGZhbHNlO1xuICAgICAgICBpbnB1dC53cmFwcGVyLnN0eWxlLmNzc1RleHQgPSBvbGRXcmFwcGVyQ1NTO1xuICAgICAgICB0ZS5zdHlsZS5jc3NUZXh0ID0gb2xkQ1NTO1xuICAgICAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA8IDkpIHtcbiAgICAgICAgICBkaXNwbGF5LnNjcm9sbGJhcnMuc2V0U2Nyb2xsVG9wKGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wID0gc2Nyb2xsUG9zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGUuc2VsZWN0aW9uU3RhcnQgIT0gbnVsbCkge1xuICAgICAgICAgIGlmICghaWUgfHwgaWUgJiYgaWVfdmVyc2lvbiA8IDkpIHtcbiAgICAgICAgICAgIHByZXBhcmVTZWxlY3RBbGxIYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBpMiA9IDAsIHBvbGwgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKGRpc3BsYXkuc2VsRm9yQ29udGV4dE1lbnUgPT0gY20uZG9jLnNlbCAmJiB0ZS5zZWxlY3Rpb25TdGFydCA9PSAwICYmIHRlLnNlbGVjdGlvbkVuZCA+IDAgJiYgaW5wdXQucHJldklucHV0ID09IFwiXFx1MjAwQlwiKSB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbihjbSwgc2VsZWN0QWxsKShjbSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGkyKysgPCAxMCkge1xuICAgICAgICAgICAgICBkaXNwbGF5LmRldGVjdGluZ1NlbGVjdEFsbCA9IHNldFRpbWVvdXQocG9sbCwgNTAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGRpc3BsYXkuc2VsRm9yQ29udGV4dE1lbnUgPSBudWxsO1xuICAgICAgICAgICAgICBkaXNwbGF5LmlucHV0LnJlc2V0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgXCJwb2xsXCIpO1xuICAgICAgICAgIGRpc3BsYXkuZGV0ZWN0aW5nU2VsZWN0QWxsID0gc2V0VGltZW91dChwb2xsLCAyMDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUocmVoaWRlLCBcInJlaGlkZVwiKTtcbiAgICAgIGlmIChpZSAmJiBpZV92ZXJzaW9uID49IDkpIHtcbiAgICAgICAgcHJlcGFyZVNlbGVjdEFsbEhhY2soKTtcbiAgICAgIH1cbiAgICAgIGlmIChjYXB0dXJlUmlnaHRDbGljaykge1xuICAgICAgICBlX3N0b3AoZSk7XG4gICAgICAgIHZhciBtb3VzZXVwID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbigpIHtcbiAgICAgICAgICBvZmYod2luZG93LCBcIm1vdXNldXBcIiwgbW91c2V1cCk7XG4gICAgICAgICAgc2V0VGltZW91dChyZWhpZGUsIDIwKTtcbiAgICAgICAgfSwgXCJtb3VzZXVwXCIpO1xuICAgICAgICBvbih3aW5kb3csIFwibW91c2V1cFwiLCBtb3VzZXVwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRpbWVvdXQocmVoaWRlLCA1MCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5yZWFkT25seUNoYW5nZWQgPSBmdW5jdGlvbih2YWwpIHtcbiAgICAgIGlmICghdmFsKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudGV4dGFyZWEuZGlzYWJsZWQgPSB2YWwgPT0gXCJub2N1cnNvclwiO1xuICAgICAgdGhpcy50ZXh0YXJlYS5yZWFkT25seSA9ICEhdmFsO1xuICAgIH07XG4gICAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUuc2V0VW5lZGl0YWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIH07XG4gICAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUubmVlZHNDb250ZW50QXR0cmlidXRlID0gZmFsc2U7XG4gICAgZnVuY3Rpb24gZnJvbVRleHRBcmVhKHRleHRhcmVhLCBvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucyA/IGNvcHlPYmoob3B0aW9ucykgOiB7fTtcbiAgICAgIG9wdGlvbnMudmFsdWUgPSB0ZXh0YXJlYS52YWx1ZTtcbiAgICAgIGlmICghb3B0aW9ucy50YWJpbmRleCAmJiB0ZXh0YXJlYS50YWJJbmRleCkge1xuICAgICAgICBvcHRpb25zLnRhYmluZGV4ID0gdGV4dGFyZWEudGFiSW5kZXg7XG4gICAgICB9XG4gICAgICBpZiAoIW9wdGlvbnMucGxhY2Vob2xkZXIgJiYgdGV4dGFyZWEucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgb3B0aW9ucy5wbGFjZWhvbGRlciA9IHRleHRhcmVhLnBsYWNlaG9sZGVyO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuYXV0b2ZvY3VzID09IG51bGwpIHtcbiAgICAgICAgdmFyIGhhc0ZvY3VzID0gYWN0aXZlRWx0KCk7XG4gICAgICAgIG9wdGlvbnMuYXV0b2ZvY3VzID0gaGFzRm9jdXMgPT0gdGV4dGFyZWEgfHwgdGV4dGFyZWEuZ2V0QXR0cmlidXRlKFwiYXV0b2ZvY3VzXCIpICE9IG51bGwgJiYgaGFzRm9jdXMgPT0gZG9jdW1lbnQuYm9keTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHNhdmUoKSB7XG4gICAgICAgIHRleHRhcmVhLnZhbHVlID0gY20uZ2V0VmFsdWUoKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShzYXZlLCBcInNhdmVcIik7XG4gICAgICB2YXIgcmVhbFN1Ym1pdDtcbiAgICAgIGlmICh0ZXh0YXJlYS5mb3JtKSB7XG4gICAgICAgIG9uKHRleHRhcmVhLmZvcm0sIFwic3VibWl0XCIsIHNhdmUpO1xuICAgICAgICBpZiAoIW9wdGlvbnMubGVhdmVTdWJtaXRNZXRob2RBbG9uZSkge1xuICAgICAgICAgIHZhciBmb3JtID0gdGV4dGFyZWEuZm9ybTtcbiAgICAgICAgICByZWFsU3VibWl0ID0gZm9ybS5zdWJtaXQ7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciB3cmFwcGVkU3VibWl0ID0gZm9ybS5zdWJtaXQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgc2F2ZSgpO1xuICAgICAgICAgICAgICBmb3JtLnN1Ym1pdCA9IHJlYWxTdWJtaXQ7XG4gICAgICAgICAgICAgIGZvcm0uc3VibWl0KCk7XG4gICAgICAgICAgICAgIGZvcm0uc3VibWl0ID0gd3JhcHBlZFN1Ym1pdDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb3B0aW9ucy5maW5pc2hJbml0ID0gZnVuY3Rpb24oY20yKSB7XG4gICAgICAgIGNtMi5zYXZlID0gc2F2ZTtcbiAgICAgICAgY20yLmdldFRleHRBcmVhID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHRleHRhcmVhO1xuICAgICAgICB9O1xuICAgICAgICBjbTIudG9UZXh0QXJlYSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGNtMi50b1RleHRBcmVhID0gaXNOYU47XG4gICAgICAgICAgc2F2ZSgpO1xuICAgICAgICAgIHRleHRhcmVhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY20yLmdldFdyYXBwZXJFbGVtZW50KCkpO1xuICAgICAgICAgIHRleHRhcmVhLnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuICAgICAgICAgIGlmICh0ZXh0YXJlYS5mb3JtKSB7XG4gICAgICAgICAgICBvZmYodGV4dGFyZWEuZm9ybSwgXCJzdWJtaXRcIiwgc2F2ZSk7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMubGVhdmVTdWJtaXRNZXRob2RBbG9uZSAmJiB0eXBlb2YgdGV4dGFyZWEuZm9ybS5zdWJtaXQgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgIHRleHRhcmVhLmZvcm0uc3VibWl0ID0gcmVhbFN1Ym1pdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgdGV4dGFyZWEuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgdmFyIGNtID0gQ29kZU1pcnJvcjIoZnVuY3Rpb24obm9kZSkge1xuICAgICAgICByZXR1cm4gdGV4dGFyZWEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgdGV4dGFyZWEubmV4dFNpYmxpbmcpO1xuICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICByZXR1cm4gY207XG4gICAgfVxuICAgIF9fbmFtZShmcm9tVGV4dEFyZWEsIFwiZnJvbVRleHRBcmVhXCIpO1xuICAgIGZ1bmN0aW9uIGFkZExlZ2FjeVByb3BzKENvZGVNaXJyb3IzKSB7XG4gICAgICBDb2RlTWlycm9yMy5vZmYgPSBvZmY7XG4gICAgICBDb2RlTWlycm9yMy5vbiA9IG9uO1xuICAgICAgQ29kZU1pcnJvcjMud2hlZWxFdmVudFBpeGVscyA9IHdoZWVsRXZlbnRQaXhlbHM7XG4gICAgICBDb2RlTWlycm9yMy5Eb2MgPSBEb2M7XG4gICAgICBDb2RlTWlycm9yMy5zcGxpdExpbmVzID0gc3BsaXRMaW5lc0F1dG87XG4gICAgICBDb2RlTWlycm9yMy5jb3VudENvbHVtbiA9IGNvdW50Q29sdW1uO1xuICAgICAgQ29kZU1pcnJvcjMuZmluZENvbHVtbiA9IGZpbmRDb2x1bW47XG4gICAgICBDb2RlTWlycm9yMy5pc1dvcmRDaGFyID0gaXNXb3JkQ2hhckJhc2ljO1xuICAgICAgQ29kZU1pcnJvcjMuUGFzcyA9IFBhc3M7XG4gICAgICBDb2RlTWlycm9yMy5zaWduYWwgPSBzaWduYWw7XG4gICAgICBDb2RlTWlycm9yMy5MaW5lID0gTGluZTtcbiAgICAgIENvZGVNaXJyb3IzLmNoYW5nZUVuZCA9IGNoYW5nZUVuZDtcbiAgICAgIENvZGVNaXJyb3IzLnNjcm9sbGJhck1vZGVsID0gc2Nyb2xsYmFyTW9kZWw7XG4gICAgICBDb2RlTWlycm9yMy5Qb3MgPSBQb3M7XG4gICAgICBDb2RlTWlycm9yMy5jbXBQb3MgPSBjbXA7XG4gICAgICBDb2RlTWlycm9yMy5tb2RlcyA9IG1vZGVzO1xuICAgICAgQ29kZU1pcnJvcjMubWltZU1vZGVzID0gbWltZU1vZGVzO1xuICAgICAgQ29kZU1pcnJvcjMucmVzb2x2ZU1vZGUgPSByZXNvbHZlTW9kZTtcbiAgICAgIENvZGVNaXJyb3IzLmdldE1vZGUgPSBnZXRNb2RlO1xuICAgICAgQ29kZU1pcnJvcjMubW9kZUV4dGVuc2lvbnMgPSBtb2RlRXh0ZW5zaW9ucztcbiAgICAgIENvZGVNaXJyb3IzLmV4dGVuZE1vZGUgPSBleHRlbmRNb2RlO1xuICAgICAgQ29kZU1pcnJvcjMuY29weVN0YXRlID0gY29weVN0YXRlO1xuICAgICAgQ29kZU1pcnJvcjMuc3RhcnRTdGF0ZSA9IHN0YXJ0U3RhdGU7XG4gICAgICBDb2RlTWlycm9yMy5pbm5lck1vZGUgPSBpbm5lck1vZGU7XG4gICAgICBDb2RlTWlycm9yMy5jb21tYW5kcyA9IGNvbW1hbmRzO1xuICAgICAgQ29kZU1pcnJvcjMua2V5TWFwID0ga2V5TWFwO1xuICAgICAgQ29kZU1pcnJvcjMua2V5TmFtZSA9IGtleU5hbWU7XG4gICAgICBDb2RlTWlycm9yMy5pc01vZGlmaWVyS2V5ID0gaXNNb2RpZmllcktleTtcbiAgICAgIENvZGVNaXJyb3IzLmxvb2t1cEtleSA9IGxvb2t1cEtleTtcbiAgICAgIENvZGVNaXJyb3IzLm5vcm1hbGl6ZUtleU1hcCA9IG5vcm1hbGl6ZUtleU1hcDtcbiAgICAgIENvZGVNaXJyb3IzLlN0cmluZ1N0cmVhbSA9IFN0cmluZ1N0cmVhbTtcbiAgICAgIENvZGVNaXJyb3IzLlNoYXJlZFRleHRNYXJrZXIgPSBTaGFyZWRUZXh0TWFya2VyO1xuICAgICAgQ29kZU1pcnJvcjMuVGV4dE1hcmtlciA9IFRleHRNYXJrZXI7XG4gICAgICBDb2RlTWlycm9yMy5MaW5lV2lkZ2V0ID0gTGluZVdpZGdldDtcbiAgICAgIENvZGVNaXJyb3IzLmVfcHJldmVudERlZmF1bHQgPSBlX3ByZXZlbnREZWZhdWx0O1xuICAgICAgQ29kZU1pcnJvcjMuZV9zdG9wUHJvcGFnYXRpb24gPSBlX3N0b3BQcm9wYWdhdGlvbjtcbiAgICAgIENvZGVNaXJyb3IzLmVfc3RvcCA9IGVfc3RvcDtcbiAgICAgIENvZGVNaXJyb3IzLmFkZENsYXNzID0gYWRkQ2xhc3M7XG4gICAgICBDb2RlTWlycm9yMy5jb250YWlucyA9IGNvbnRhaW5zO1xuICAgICAgQ29kZU1pcnJvcjMucm1DbGFzcyA9IHJtQ2xhc3M7XG4gICAgICBDb2RlTWlycm9yMy5rZXlOYW1lcyA9IGtleU5hbWVzO1xuICAgIH1cbiAgICBfX25hbWUoYWRkTGVnYWN5UHJvcHMsIFwiYWRkTGVnYWN5UHJvcHNcIik7XG4gICAgZGVmaW5lT3B0aW9ucyhDb2RlTWlycm9yMik7XG4gICAgYWRkRWRpdG9yTWV0aG9kcyhDb2RlTWlycm9yMik7XG4gICAgdmFyIGRvbnREZWxlZ2F0ZSA9IFwiaXRlciBpbnNlcnQgcmVtb3ZlIGNvcHkgZ2V0RWRpdG9yIGNvbnN0cnVjdG9yXCIuc3BsaXQoXCIgXCIpO1xuICAgIGZvciAodmFyIHByb3AgaW4gRG9jLnByb3RvdHlwZSkge1xuICAgICAgaWYgKERvYy5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkocHJvcCkgJiYgaW5kZXhPZihkb250RGVsZWdhdGUsIHByb3ApIDwgMCkge1xuICAgICAgICBDb2RlTWlycm9yMi5wcm90b3R5cGVbcHJvcF0gPSBmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gbWV0aG9kLmFwcGx5KHRoaXMuZG9jLCBhcmd1bWVudHMpO1xuICAgICAgICAgIH07XG4gICAgICAgIH0oRG9jLnByb3RvdHlwZVtwcm9wXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGV2ZW50TWl4aW4oRG9jKTtcbiAgICBDb2RlTWlycm9yMi5pbnB1dFN0eWxlcyA9IHsgXCJ0ZXh0YXJlYVwiOiBUZXh0YXJlYUlucHV0LCBcImNvbnRlbnRlZGl0YWJsZVwiOiBDb250ZW50RWRpdGFibGVJbnB1dCB9O1xuICAgIENvZGVNaXJyb3IyLmRlZmluZU1vZGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgICBpZiAoIUNvZGVNaXJyb3IyLmRlZmF1bHRzLm1vZGUgJiYgbmFtZSAhPSBcIm51bGxcIikge1xuICAgICAgICBDb2RlTWlycm9yMi5kZWZhdWx0cy5tb2RlID0gbmFtZTtcbiAgICAgIH1cbiAgICAgIGRlZmluZU1vZGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICAgIENvZGVNaXJyb3IyLmRlZmluZU1JTUUgPSBkZWZpbmVNSU1FO1xuICAgIENvZGVNaXJyb3IyLmRlZmluZU1vZGUoXCJudWxsXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHsgdG9rZW46IGZ1bmN0aW9uKHN0cmVhbSkge1xuICAgICAgICByZXR1cm4gc3RyZWFtLnNraXBUb0VuZCgpO1xuICAgICAgfSB9O1xuICAgIH0pO1xuICAgIENvZGVNaXJyb3IyLmRlZmluZU1JTUUoXCJ0ZXh0L3BsYWluXCIsIFwibnVsbFwiKTtcbiAgICBDb2RlTWlycm9yMi5kZWZpbmVFeHRlbnNpb24gPSBmdW5jdGlvbihuYW1lLCBmdW5jKSB7XG4gICAgICBDb2RlTWlycm9yMi5wcm90b3R5cGVbbmFtZV0gPSBmdW5jO1xuICAgIH07XG4gICAgQ29kZU1pcnJvcjIuZGVmaW5lRG9jRXh0ZW5zaW9uID0gZnVuY3Rpb24obmFtZSwgZnVuYykge1xuICAgICAgRG9jLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmM7XG4gICAgfTtcbiAgICBDb2RlTWlycm9yMi5mcm9tVGV4dEFyZWEgPSBmcm9tVGV4dEFyZWE7XG4gICAgYWRkTGVnYWN5UHJvcHMoQ29kZU1pcnJvcjIpO1xuICAgIENvZGVNaXJyb3IyLnZlcnNpb24gPSBcIjUuNjUuM1wiO1xuICAgIHJldHVybiBDb2RlTWlycm9yMjtcbiAgfSk7XG59KShjb2RlbWlycm9yJDEpO1xudmFyIENvZGVNaXJyb3IgPSBjb2RlbWlycm9yJDEuZXhwb3J0cztcbnZhciBjb2RlbWlycm9yID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5mcmVlemUoLyogQF9fUFVSRV9fICovIF9tZXJnZU5hbWVzcGFjZXMoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiBcIk1vZHVsZVwiLFxuICBcImRlZmF1bHRcIjogQ29kZU1pcnJvclxufSwgW2NvZGVtaXJyb3IkMS5leHBvcnRzXSkpO1xuZXhwb3J0IHsgQ29kZU1pcnJvciBhcyBDLCBjb2RlbWlycm9yJDEgYXMgYSwgY29kZW1pcnJvciBhcyBjIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFWQTtBQVlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFtQkE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFVQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE3QkE7QUFDQTtBQThCQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFsR0E7QUFDQTtBQW1HQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBOWZBO0FBZ2dCQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXhEQTtBQUNBO0FBeURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhCQTtBQWtCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTNCQTtBQTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFkQTtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0JBO0FBaUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBeE9BO0FBQ0E7QUF5T0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWRBO0FBQ0E7QUFlQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFwQkE7QUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTlmQTtBQWdnQkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/codemirror.es.js\n");
|
2483 |
|
2484 | }),
|
2485 |
|
2486 | "../../graphiql-react/dist/comment.es.js":
|
2487 |
|
2488 |
|
2489 |
|
2490 |
|
2491 | (function(module, exports, __webpack_require__) {
|
2492 |
|
2493 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.c = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var comment$2 = {\n exports: {}\n };\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports);\n })(function (CodeMirror) {\n var noOptions = {};\n var nonWS = /[^\\s\\u00a0]/;\n var Pos = CodeMirror.Pos,\n cmp = CodeMirror.cmpPos;\n\n function firstNonWS(str) {\n var found = str.search(nonWS);\n return found == -1 ? 0 : found;\n }\n\n __name(firstNonWS, \"firstNonWS\");\n\n CodeMirror.commands.toggleComment = function (cm) {\n cm.toggleComment();\n };\n\n CodeMirror.defineExtension(\"toggleComment\", function (options) {\n if (!options) options = noOptions;\n var cm = this;\n var minLine = Infinity,\n ranges = this.listSelections(),\n mode = null;\n\n for (var i = ranges.length - 1; i >= 0; i--) {\n var from = ranges[i].from(),\n to = ranges[i].to();\n if (from.line >= minLine) continue;\n if (to.line >= minLine) to = Pos(minLine, 0);\n minLine = from.line;\n\n if (mode == null) {\n if (cm.uncomment(from, to, options)) mode = \"un\";else {\n cm.lineComment(from, to, options);\n mode = \"line\";\n }\n } else if (mode == \"un\") {\n cm.uncomment(from, to, options);\n } else {\n cm.lineComment(from, to, options);\n }\n }\n });\n\n function probablyInsideString(cm, pos, line) {\n return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line);\n }\n\n __name(probablyInsideString, \"probablyInsideString\");\n\n function getMode(cm, pos) {\n var mode = cm.getMode();\n return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos);\n }\n\n __name(getMode, \"getMode\");\n\n CodeMirror.defineExtension(\"lineComment\", function (from, to, options) {\n if (!options) options = noOptions;\n var self = this,\n mode = getMode(self, from);\n var firstLine = self.getLine(from.line);\n if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n var commentString = options.lineComment || mode.lineComment;\n\n if (!commentString) {\n if (options.blockCommentStart || mode.blockCommentStart) {\n options.fullLines = true;\n self.blockComment(from, to, options);\n }\n\n return;\n }\n\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n var pad = options.padding == null ? \" \" : options.padding;\n var blankLines = options.commentBlankLines || from.line == to.line;\n self.operation(function () {\n if (options.indent) {\n var baseString = null;\n\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i);\n var whitespace = line.slice(0, firstNonWS(line));\n\n if (baseString == null || baseString.length > whitespace.length) {\n baseString = whitespace;\n }\n }\n\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i),\n cut = baseString.length;\n if (!blankLines && !nonWS.test(line)) continue;\n if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n }\n } else {\n for (var i = from.line; i < end; ++i) {\n if (blankLines || nonWS.test(self.getLine(i))) self.replaceRange(commentString + pad, Pos(i, 0));\n }\n }\n });\n });\n CodeMirror.defineExtension(\"blockComment\", function (from, to, options) {\n if (!options) options = noOptions;\n var self = this,\n mode = getMode(self, from);\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n\n if (!startString || !endString) {\n if ((options.lineComment || mode.lineComment) && options.fullLines != false) self.lineComment(from, to, options);\n return;\n }\n\n if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return;\n var end = Math.min(to.line, self.lastLine());\n if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n var pad = options.padding == null ? \" \" : options.padding;\n if (from.line > end) return;\n self.operation(function () {\n if (options.fullLines != false) {\n var lastLineHasText = nonWS.test(self.getLine(end));\n self.replaceRange(pad + endString, Pos(end));\n self.replaceRange(startString + pad, Pos(from.line, 0));\n var lead = options.blockCommentLead || mode.blockCommentLead;\n\n if (lead != null) {\n for (var i = from.line + 1; i <= end; ++i) if (i != end || lastLineHasText) self.replaceRange(lead + pad, Pos(i, 0));\n }\n } else {\n var atCursor = cmp(self.getCursor(\"to\"), to) == 0,\n empty = !self.somethingSelected();\n self.replaceRange(endString, to);\n if (atCursor) self.setSelection(empty ? to : self.getCursor(\"from\"), to);\n self.replaceRange(startString, from);\n }\n });\n });\n CodeMirror.defineExtension(\"uncomment\", function (from, to, options) {\n if (!options) options = noOptions;\n var self = this,\n mode = getMode(self, from);\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()),\n start = Math.min(from.line, end);\n var lineString = options.lineComment || mode.lineComment,\n lines = [];\n var pad = options.padding == null ? \" \" : options.padding,\n didSomething;\n\n lineComment: {\n if (!lineString) break lineComment;\n\n for (var i = start; i <= end; ++i) {\n var line = self.getLine(i);\n var found = line.indexOf(lineString);\n if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n if (found == -1 && nonWS.test(line)) break lineComment;\n if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n lines.push(line);\n }\n\n self.operation(function () {\n for (var i2 = start; i2 <= end; ++i2) {\n var line2 = lines[i2 - start];\n var pos = line2.indexOf(lineString),\n endPos = pos + lineString.length;\n if (pos < 0) continue;\n if (line2.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n didSomething = true;\n self.replaceRange(\"\", Pos(i2, pos), Pos(i2, endPos));\n }\n });\n if (didSomething) return true;\n }\n\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) return false;\n var lead = options.blockCommentLead || mode.blockCommentLead;\n var startLine = self.getLine(start),\n open = startLine.indexOf(startString);\n if (open == -1) return false;\n var endLine = end == start ? startLine : self.getLine(end);\n var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n var insideStart = Pos(start, open + 1),\n insideEnd = Pos(end, close + 1);\n if (close == -1 || !/comment/.test(self.getTokenTypeAt(insideStart)) || !/comment/.test(self.getTokenTypeAt(insideEnd)) || self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1) return false;\n var lastStart = startLine.lastIndexOf(startString, from.ch);\n var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n firstEnd = endLine.indexOf(endString, to.ch);\n var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n lastStart = firstEnd == -1 || almostLastStart == -1 ? -1 : to.ch + almostLastStart;\n if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n self.operation(function () {\n self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)), Pos(end, close + endString.length));\n var openEnd = open + startString.length;\n if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n if (lead) for (var i2 = start + 1; i2 <= end; ++i2) {\n var line2 = self.getLine(i2),\n found2 = line2.indexOf(lead);\n if (found2 == -1 || nonWS.test(line2.slice(0, found2))) continue;\n var foundEnd = found2 + lead.length;\n if (pad && line2.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n self.replaceRange(\"\", Pos(i2, found2), Pos(i2, foundEnd));\n }\n });\n return true;\n });\n });\n })();\n\n var comment = comment$2.exports;\n var comment$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": comment\n }, [comment$2.exports]));\n _exports.c = comment$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9jb21tZW50LmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9jb21tZW50LmVzLmpzPzgxYWEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IGEgYXMgY29kZW1pcnJvciB9IGZyb20gXCIuL2NvZGVtaXJyb3IuZXMuanNcIjtcbmZ1bmN0aW9uIF9tZXJnZU5hbWVzcGFjZXMobiwgbSkge1xuICBtLmZvckVhY2goZnVuY3Rpb24oZSkge1xuICAgIGUgJiYgdHlwZW9mIGUgIT09IFwic3RyaW5nXCIgJiYgIUFycmF5LmlzQXJyYXkoZSkgJiYgT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgIShrIGluIG4pKSB7XG4gICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGssIGQuZ2V0ID8gZCA6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gZVtrXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUobik7XG59XG5fX25hbWUoX21lcmdlTmFtZXNwYWNlcywgXCJfbWVyZ2VOYW1lc3BhY2VzXCIpO1xudmFyIGNvbW1lbnQkMiA9IHsgZXhwb3J0czoge30gfTtcbihmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcbiAgKGZ1bmN0aW9uKG1vZCkge1xuICAgIG1vZChjb2RlbWlycm9yLmV4cG9ydHMpO1xuICB9KShmdW5jdGlvbihDb2RlTWlycm9yKSB7XG4gICAgdmFyIG5vT3B0aW9ucyA9IHt9O1xuICAgIHZhciBub25XUyA9IC9bXlxcc1xcdTAwYTBdLztcbiAgICB2YXIgUG9zID0gQ29kZU1pcnJvci5Qb3MsIGNtcCA9IENvZGVNaXJyb3IuY21wUG9zO1xuICAgIGZ1bmN0aW9uIGZpcnN0Tm9uV1Moc3RyKSB7XG4gICAgICB2YXIgZm91bmQgPSBzdHIuc2VhcmNoKG5vbldTKTtcbiAgICAgIHJldHVybiBmb3VuZCA9PSAtMSA/IDAgOiBmb3VuZDtcbiAgICB9XG4gICAgX19uYW1lKGZpcnN0Tm9uV1MsIFwiZmlyc3ROb25XU1wiKTtcbiAgICBDb2RlTWlycm9yLmNvbW1hbmRzLnRvZ2dsZUNvbW1lbnQgPSBmdW5jdGlvbihjbSkge1xuICAgICAgY20udG9nZ2xlQ29tbWVudCgpO1xuICAgIH07XG4gICAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJ0b2dnbGVDb21tZW50XCIsIGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgIGlmICghb3B0aW9ucylcbiAgICAgICAgb3B0aW9ucyA9IG5vT3B0aW9ucztcbiAgICAgIHZhciBjbSA9IHRoaXM7XG4gICAgICB2YXIgbWluTGluZSA9IEluZmluaXR5LCByYW5nZXMgPSB0aGlzLmxpc3RTZWxlY3Rpb25zKCksIG1vZGUgPSBudWxsO1xuICAgICAgZm9yICh2YXIgaSA9IHJhbmdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgZnJvbSA9IHJhbmdlc1tpXS5mcm9tKCksIHRvID0gcmFuZ2VzW2ldLnRvKCk7XG4gICAgICAgIGlmIChmcm9tLmxpbmUgPj0gbWluTGluZSlcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKHRvLmxpbmUgPj0gbWluTGluZSlcbiAgICAgICAgICB0byA9IFBvcyhtaW5MaW5lLCAwKTtcbiAgICAgICAgbWluTGluZSA9IGZyb20ubGluZTtcbiAgICAgICAgaWYgKG1vZGUgPT0gbnVsbCkge1xuICAgICAgICAgIGlmIChjbS51bmNvbW1lbnQoZnJvbSwgdG8sIG9wdGlvbnMpKVxuICAgICAgICAgICAgbW9kZSA9IFwidW5cIjtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNtLmxpbmVDb21tZW50KGZyb20sIHRvLCBvcHRpb25zKTtcbiAgICAgICAgICAgIG1vZGUgPSBcImxpbmVcIjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PSBcInVuXCIpIHtcbiAgICAgICAgICBjbS51bmNvbW1lbnQoZnJvbSwgdG8sIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNtLmxpbmVDb21tZW50KGZyb20sIHRvLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIHByb2JhYmx5SW5zaWRlU3RyaW5nKGNtLCBwb3MsIGxpbmUpIHtcbiAgICAgIHJldHVybiAvXFxic3RyaW5nXFxiLy50ZXN0KGNtLmdldFRva2VuVHlwZUF0KFBvcyhwb3MubGluZSwgMCkpKSAmJiAhL15bXFwnXFxcIlxcYF0vLnRlc3QobGluZSk7XG4gICAgfVxuICAgIF9fbmFtZShwcm9iYWJseUluc2lkZVN0cmluZywgXCJwcm9iYWJseUluc2lkZVN0cmluZ1wiKTtcbiAgICBmdW5jdGlvbiBnZXRNb2RlKGNtLCBwb3MpIHtcbiAgICAgIHZhciBtb2RlID0gY20uZ2V0TW9kZSgpO1xuICAgICAgcmV0dXJuIG1vZGUudXNlSW5uZXJDb21tZW50cyA9PT0gZmFsc2UgfHwgIW1vZGUuaW5uZXJNb2RlID8gbW9kZSA6IGNtLmdldE1vZGVBdChwb3MpO1xuICAgIH1cbiAgICBfX25hbWUoZ2V0TW9kZSwgXCJnZXRNb2RlXCIpO1xuICAgIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5zaW9uKFwibGluZUNvbW1lbnRcIiwgZnVuY3Rpb24oZnJvbSwgdG8sIG9wdGlvbnMpIHtcbiAgICAgIGlmICghb3B0aW9ucylcbiAgICAgICAgb3B0aW9ucyA9IG5vT3B0aW9ucztcbiAgICAgIHZhciBzZWxmID0gdGhpcywgbW9kZSA9IGdldE1vZGUoc2VsZiwgZnJvbSk7XG4gICAgICB2YXIgZmlyc3RMaW5lID0gc2VsZi5nZXRMaW5lKGZyb20ubGluZSk7XG4gICAgICBpZiAoZmlyc3RMaW5lID09IG51bGwgfHwgcHJvYmFibHlJbnNpZGVTdHJpbmcoc2VsZiwgZnJvbSwgZmlyc3RMaW5lKSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgdmFyIGNvbW1lbnRTdHJpbmcgPSBvcHRpb25zLmxpbmVDb21tZW50IHx8IG1vZGUubGluZUNvbW1lbnQ7XG4gICAgICBpZiAoIWNvbW1lbnRTdHJpbmcpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuYmxvY2tDb21tZW50U3RhcnQgfHwgbW9kZS5ibG9ja0NvbW1lbnRTdGFydCkge1xuICAgICAgICAgIG9wdGlvbnMuZnVsbExpbmVzID0gdHJ1ZTtcbiAgICAgICAgICBzZWxmLmJsb2NrQ29tbWVudChmcm9tLCB0bywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGVuZCA9IE1hdGgubWluKHRvLmNoICE9IDAgfHwgdG8ubGluZSA9PSBmcm9tLmxpbmUgPyB0by5saW5lICsgMSA6IHRvLmxpbmUsIHNlbGYubGFzdExpbmUoKSArIDEpO1xuICAgICAgdmFyIHBhZCA9IG9wdGlvbnMucGFkZGluZyA9PSBudWxsID8gXCIgXCIgOiBvcHRpb25zLnBhZGRpbmc7XG4gICAgICB2YXIgYmxhbmtMaW5lcyA9IG9wdGlvbnMuY29tbWVudEJsYW5rTGluZXMgfHwgZnJvbS5saW5lID09IHRvLmxpbmU7XG4gICAgICBzZWxmLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuaW5kZW50KSB7XG4gICAgICAgICAgdmFyIGJhc2VTdHJpbmcgPSBudWxsO1xuICAgICAgICAgIGZvciAodmFyIGkgPSBmcm9tLmxpbmU7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgICAgICAgdmFyIGxpbmUgPSBzZWxmLmdldExpbmUoaSk7XG4gICAgICAgICAgICB2YXIgd2hpdGVzcGFjZSA9IGxpbmUuc2xpY2UoMCwgZmlyc3ROb25XUyhsaW5lKSk7XG4gICAgICAgICAgICBpZiAoYmFzZVN0cmluZyA9PSBudWxsIHx8IGJhc2VTdHJpbmcubGVuZ3RoID4gd2hpdGVzcGFjZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgYmFzZVN0cmluZyA9IHdoaXRlc3BhY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAodmFyIGkgPSBmcm9tLmxpbmU7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgICAgICAgdmFyIGxpbmUgPSBzZWxmLmdldExpbmUoaSksIGN1dCA9IGJhc2VTdHJpbmcubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKCFibGFua0xpbmVzICYmICFub25XUy50ZXN0KGxpbmUpKVxuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChsaW5lLnNsaWNlKDAsIGN1dCkgIT0gYmFzZVN0cmluZylcbiAgICAgICAgICAgICAgY3V0ID0gZmlyc3ROb25XUyhsaW5lKTtcbiAgICAgICAgICAgIHNlbGYucmVwbGFjZVJhbmdlKGJhc2VTdHJpbmcgKyBjb21tZW50U3RyaW5nICsgcGFkLCBQb3MoaSwgMCksIFBvcyhpLCBjdXQpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IGZyb20ubGluZTsgaSA8IGVuZDsgKytpKSB7XG4gICAgICAgICAgICBpZiAoYmxhbmtMaW5lcyB8fCBub25XUy50ZXN0KHNlbGYuZ2V0TGluZShpKSkpXG4gICAgICAgICAgICAgIHNlbGYucmVwbGFjZVJhbmdlKGNvbW1lbnRTdHJpbmcgKyBwYWQsIFBvcyhpLCAwKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbihcImJsb2NrQ29tbWVudFwiLCBmdW5jdGlvbihmcm9tLCB0bywgb3B0aW9ucykge1xuICAgICAgaWYgKCFvcHRpb25zKVxuICAgICAgICBvcHRpb25zID0gbm9PcHRpb25zO1xuICAgICAgdmFyIHNlbGYgPSB0aGlzLCBtb2RlID0gZ2V0TW9kZShzZWxmLCBmcm9tKTtcbiAgICAgIHZhciBzdGFydFN0cmluZyA9IG9wdGlvbnMuYmxvY2tDb21tZW50U3RhcnQgfHwgbW9kZS5ibG9ja0NvbW1lbnRTdGFydDtcbiAgICAgIHZhciBlbmRTdHJpbmcgPSBvcHRpb25zLmJsb2NrQ29tbWVudEVuZCB8fCBtb2RlLmJsb2NrQ29tbWVudEVuZDtcbiAgICAgIGlmICghc3RhcnRTdHJpbmcgfHwgIWVuZFN0cmluZykge1xuICAgICAgICBpZiAoKG9wdGlvbnMubGluZUNvbW1lbnQgfHwgbW9kZS5saW5lQ29tbWVudCkgJiYgb3B0aW9ucy5mdWxsTGluZXMgIT0gZmFsc2UpXG4gICAgICAgICAgc2VsZi5saW5lQ29tbWVudChmcm9tLCB0bywgb3B0aW9ucyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICgvXFxiY29tbWVudFxcYi8udGVzdChzZWxmLmdldFRva2VuVHlwZUF0KFBvcyhmcm9tLmxpbmUsIDApKSkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIHZhciBlbmQgPSBNYXRoLm1pbih0by5saW5lLCBzZWxmLmxhc3RMaW5lKCkpO1xuICAgICAgaWYgKGVuZCAhPSBmcm9tLmxpbmUgJiYgdG8uY2ggPT0gMCAmJiBub25XUy50ZXN0KHNlbGYuZ2V0TGluZShlbmQpKSlcbiAgICAgICAgLS1lbmQ7XG4gICAgICB2YXIgcGFkID0gb3B0aW9ucy5wYWRkaW5nID09IG51bGwgPyBcIiBcIiA6IG9wdGlvbnMucGFkZGluZztcbiAgICAgIGlmIChmcm9tLmxpbmUgPiBlbmQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIHNlbGYub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAob3B0aW9ucy5mdWxsTGluZXMgIT0gZmFsc2UpIHtcbiAgICAgICAgICB2YXIgbGFzdExpbmVIYXNUZXh0ID0gbm9uV1MudGVzdChzZWxmLmdldExpbmUoZW5kKSk7XG4gICAgICAgICAgc2VsZi5yZXBsYWNlUmFuZ2UocGFkICsgZW5kU3RyaW5nLCBQb3MoZW5kKSk7XG4gICAgICAgICAgc2VsZi5yZXBsYWNlUmFuZ2Uoc3RhcnRTdHJpbmcgKyBwYWQsIFBvcyhmcm9tLmxpbmUsIDApKTtcbiAgICAgICAgICB2YXIgbGVhZCA9IG9wdGlvbnMuYmxvY2tDb21tZW50TGVhZCB8fCBtb2RlLmJsb2NrQ29tbWVudExlYWQ7XG4gICAgICAgICAgaWYgKGxlYWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IGZyb20ubGluZSArIDE7IGkgPD0gZW5kOyArK2kpXG4gICAgICAgICAgICAgIGlmIChpICE9IGVuZCB8fCBsYXN0TGluZUhhc1RleHQpXG4gICAgICAgICAgICAgICAgc2VsZi5yZXBsYWNlUmFuZ2UobGVhZCArIHBhZCwgUG9zKGksIDApKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGF0Q3Vyc29yID0gY21wKHNlbGYuZ2V0Q3Vyc29yKFwidG9cIiksIHRvKSA9PSAwLCBlbXB0eSA9ICFzZWxmLnNvbWV0aGluZ1NlbGVjdGVkKCk7XG4gICAgICAgICAgc2VsZi5yZXBsYWNlUmFuZ2UoZW5kU3RyaW5nLCB0byk7XG4gICAgICAgICAgaWYgKGF0Q3Vyc29yKVxuICAgICAgICAgICAgc2VsZi5zZXRTZWxlY3Rpb24oZW1wdHkgPyB0byA6IHNlbGYuZ2V0Q3Vyc29yKFwiZnJvbVwiKSwgdG8pO1xuICAgICAgICAgIHNlbGYucmVwbGFjZVJhbmdlKHN0YXJ0U3RyaW5nLCBmcm9tKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJ1bmNvbW1lbnRcIiwgZnVuY3Rpb24oZnJvbSwgdG8sIG9wdGlvbnMpIHtcbiAgICAgIGlmICghb3B0aW9ucylcbiAgICAgICAgb3B0aW9ucyA9IG5vT3B0aW9ucztcbiAgICAgIHZhciBzZWxmID0gdGhpcywgbW9kZSA9IGdldE1vZGUoc2VsZiwgZnJvbSk7XG4gICAgICB2YXIgZW5kID0gTWF0aC5taW4odG8uY2ggIT0gMCB8fCB0by5saW5lID09IGZyb20ubGluZSA/IHRvLmxpbmUgOiB0by5saW5lIC0gMSwgc2VsZi5sYXN0TGluZSgpKSwgc3RhcnQgPSBNYXRoLm1pbihmcm9tLmxpbmUsIGVuZCk7XG4gICAgICB2YXIgbGluZVN0cmluZyA9IG9wdGlvbnMubGluZUNvbW1lbnQgfHwgbW9kZS5saW5lQ29tbWVudCwgbGluZXMgPSBbXTtcbiAgICAgIHZhciBwYWQgPSBvcHRpb25zLnBhZGRpbmcgPT0gbnVsbCA/IFwiIFwiIDogb3B0aW9ucy5wYWRkaW5nLCBkaWRTb21ldGhpbmc7XG4gICAgICBsaW5lQ29tbWVudDoge1xuICAgICAgICBpZiAoIWxpbmVTdHJpbmcpXG4gICAgICAgICAgYnJlYWsgbGluZUNvbW1lbnQ7XG4gICAgICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8PSBlbmQ7ICsraSkge1xuICAgICAgICAgIHZhciBsaW5lID0gc2VsZi5nZXRMaW5lKGkpO1xuICAgICAgICAgIHZhciBmb3VuZCA9IGxpbmUuaW5kZXhPZihsaW5lU3RyaW5nKTtcbiAgICAgICAgICBpZiAoZm91bmQgPiAtMSAmJiAhL2NvbW1lbnQvLnRlc3Qoc2VsZi5nZXRUb2tlblR5cGVBdChQb3MoaSwgZm91bmQgKyAxKSkpKVxuICAgICAgICAgICAgZm91bmQgPSAtMTtcbiAgICAgICAgICBpZiAoZm91bmQgPT0gLTEgJiYgbm9uV1MudGVzdChsaW5lKSlcbiAgICAgICAgICAgIGJyZWFrIGxpbmVDb21tZW50O1xuICAgICAgICAgIGlmIChmb3VuZCA+IC0xICYmIG5vbldTLnRlc3QobGluZS5zbGljZSgwLCBmb3VuZCkpKVxuICAgICAgICAgICAgYnJlYWsgbGluZUNvbW1lbnQ7XG4gICAgICAgICAgbGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgfVxuICAgICAgICBzZWxmLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgICBmb3IgKHZhciBpMiA9IHN0YXJ0OyBpMiA8PSBlbmQ7ICsraTIpIHtcbiAgICAgICAgICAgIHZhciBsaW5lMiA9IGxpbmVzW2kyIC0gc3RhcnRdO1xuICAgICAgICAgICAgdmFyIHBvcyA9IGxpbmUyLmluZGV4T2YobGluZVN0cmluZyksIGVuZFBvcyA9IHBvcyArIGxpbmVTdHJpbmcubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKHBvcyA8IDApXG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKGxpbmUyLnNsaWNlKGVuZFBvcywgZW5kUG9zICsgcGFkLmxlbmd0aCkgPT0gcGFkKVxuICAgICAgICAgICAgICBlbmRQb3MgKz0gcGFkLmxlbmd0aDtcbiAgICAgICAgICAgIGRpZFNvbWV0aGluZyA9IHRydWU7XG4gICAgICAgICAgICBzZWxmLnJlcGxhY2VSYW5nZShcIlwiLCBQb3MoaTIsIHBvcyksIFBvcyhpMiwgZW5kUG9zKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRpZFNvbWV0aGluZylcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBzdGFydFN0cmluZyA9IG9wdGlvbnMuYmxvY2tDb21tZW50U3RhcnQgfHwgbW9kZS5ibG9ja0NvbW1lbnRTdGFydDtcbiAgICAgIHZhciBlbmRTdHJpbmcgPSBvcHRpb25zLmJsb2NrQ29tbWVudEVuZCB8fCBtb2RlLmJsb2NrQ29tbWVudEVuZDtcbiAgICAgIGlmICghc3RhcnRTdHJpbmcgfHwgIWVuZFN0cmluZylcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGxlYWQgPSBvcHRpb25zLmJsb2NrQ29tbWVudExlYWQgfHwgbW9kZS5ibG9ja0NvbW1lbnRMZWFkO1xuICAgICAgdmFyIHN0YXJ0TGluZSA9IHNlbGYuZ2V0TGluZShzdGFydCksIG9wZW4gPSBzdGFydExpbmUuaW5kZXhPZihzdGFydFN0cmluZyk7XG4gICAgICBpZiAob3BlbiA9PSAtMSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGVuZExpbmUgPSBlbmQgPT0gc3RhcnQgPyBzdGFydExpbmUgOiBzZWxmLmdldExpbmUoZW5kKTtcbiAgICAgIHZhciBjbG9zZSA9IGVuZExpbmUuaW5kZXhPZihlbmRTdHJpbmcsIGVuZCA9PSBzdGFydCA/IG9wZW4gKyBzdGFydFN0cmluZy5sZW5ndGggOiAwKTtcbiAgICAgIHZhciBpbnNpZGVTdGFydCA9IFBvcyhzdGFydCwgb3BlbiArIDEpLCBpbnNpZGVFbmQgPSBQb3MoZW5kLCBjbG9zZSArIDEpO1xuICAgICAgaWYgKGNsb3NlID09IC0xIHx8ICEvY29tbWVudC8udGVzdChzZWxmLmdldFRva2VuVHlwZUF0KGluc2lkZVN0YXJ0KSkgfHwgIS9jb21tZW50Ly50ZXN0KHNlbGYuZ2V0VG9rZW5UeXBlQXQoaW5zaWRlRW5kKSkgfHwgc2VsZi5nZXRSYW5nZShpbnNpZGVTdGFydCwgaW5zaWRlRW5kLCBcIlxcblwiKS5pbmRleE9mKGVuZFN0cmluZykgPiAtMSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGxhc3RTdGFydCA9IHN0YXJ0TGluZS5sYXN0SW5kZXhPZihzdGFydFN0cmluZywgZnJvbS5jaCk7XG4gICAgICB2YXIgZmlyc3RFbmQgPSBsYXN0U3RhcnQgPT0gLTEgPyAtMSA6IHN0YXJ0TGluZS5zbGljZSgwLCBmcm9tLmNoKS5pbmRleE9mKGVuZFN0cmluZywgbGFzdFN0YXJ0ICsgc3RhcnRTdHJpbmcubGVuZ3RoKTtcbiAgICAgIGlmIChsYXN0U3RhcnQgIT0gLTEgJiYgZmlyc3RFbmQgIT0gLTEgJiYgZmlyc3RFbmQgKyBlbmRTdHJpbmcubGVuZ3RoICE9IGZyb20uY2gpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGZpcnN0RW5kID0gZW5kTGluZS5pbmRleE9mKGVuZFN0cmluZywgdG8uY2gpO1xuICAgICAgdmFyIGFsbW9zdExhc3RTdGFydCA9IGVuZExpbmUuc2xpY2UodG8uY2gpLmxhc3RJbmRleE9mKHN0YXJ0U3RyaW5nLCBmaXJzdEVuZCAtIHRvLmNoKTtcbiAgICAgIGxhc3RTdGFydCA9IGZpcnN0RW5kID09IC0xIHx8IGFsbW9zdExhc3RTdGFydCA9PSAtMSA/IC0xIDogdG8uY2ggKyBhbG1vc3RMYXN0U3RhcnQ7XG4gICAgICBpZiAoZmlyc3RFbmQgIT0gLTEgJiYgbGFzdFN0YXJ0ICE9IC0xICYmIGxhc3RTdGFydCAhPSB0by5jaClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgc2VsZi5vcGVyYXRpb24oZnVuY3Rpb24oKSB7XG4gICAgICAgIHNlbGYucmVwbGFjZVJhbmdlKFwiXCIsIFBvcyhlbmQsIGNsb3NlIC0gKHBhZCAmJiBlbmRMaW5lLnNsaWNlKGNsb3NlIC0gcGFkLmxlbmd0aCwgY2xvc2UpID09IHBhZCA/IHBhZC5sZW5ndGggOiAwKSksIFBvcyhlbmQsIGNsb3NlICsgZW5kU3RyaW5nLmxlbmd0aCkpO1xuICAgICAgICB2YXIgb3BlbkVuZCA9IG9wZW4gKyBzdGFydFN0cmluZy5sZW5ndGg7XG4gICAgICAgIGlmIChwYWQgJiYgc3RhcnRMaW5lLnNsaWNlKG9wZW5FbmQsIG9wZW5FbmQgKyBwYWQubGVuZ3RoKSA9PSBwYWQpXG4gICAgICAgICAgb3BlbkVuZCArPSBwYWQubGVuZ3RoO1xuICAgICAgICBzZWxmLnJlcGxhY2VSYW5nZShcIlwiLCBQb3Moc3RhcnQsIG9wZW4pLCBQb3Moc3RhcnQsIG9wZW5FbmQpKTtcbiAgICAgICAgaWYgKGxlYWQpXG4gICAgICAgICAgZm9yICh2YXIgaTIgPSBzdGFydCArIDE7IGkyIDw9IGVuZDsgKytpMikge1xuICAgICAgICAgICAgdmFyIGxpbmUyID0gc2VsZi5nZXRMaW5lKGkyKSwgZm91bmQyID0gbGluZTIuaW5kZXhPZihsZWFkKTtcbiAgICAgICAgICAgIGlmIChmb3VuZDIgPT0gLTEgfHwgbm9uV1MudGVzdChsaW5lMi5zbGljZSgwLCBmb3VuZDIpKSlcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB2YXIgZm91bmRFbmQgPSBmb3VuZDIgKyBsZWFkLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChwYWQgJiYgbGluZTIuc2xpY2UoZm91bmRFbmQsIGZvdW5kRW5kICsgcGFkLmxlbmd0aCkgPT0gcGFkKVxuICAgICAgICAgICAgICBmb3VuZEVuZCArPSBwYWQubGVuZ3RoO1xuICAgICAgICAgICAgc2VsZi5yZXBsYWNlUmFuZ2UoXCJcIiwgUG9zKGkyLCBmb3VuZDIpLCBQb3MoaTIsIGZvdW5kRW5kKSk7XG4gICAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG59KSgpO1xudmFyIGNvbW1lbnQgPSBjb21tZW50JDIuZXhwb3J0cztcbnZhciBjb21tZW50JDEgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmZyZWV6ZSgvKiBAX19QVVJFX18gKi8gX21lcmdlTmFtZXNwYWNlcyh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IFwiTW9kdWxlXCIsXG4gIFwiZGVmYXVsdFwiOiBjb21tZW50XG59LCBbY29tbWVudCQyLmV4cG9ydHNdKSk7XG5leHBvcnQgeyBjb21tZW50JDEgYXMgYyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/comment.es.js\n");
|
2494 |
|
2495 | }),
|
2496 |
|
2497 | "../../graphiql-react/dist/dialog.es.js":
|
2498 |
|
2499 |
|
2500 |
|
2501 |
|
2502 | (function(module, exports, __webpack_require__) {
|
2503 |
|
2504 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.d = _exports.a = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var dialog$2 = {\n exports: {}\n };\n _exports.a = dialog$2;\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports);\n })(function (CodeMirror) {\n function dialogDiv(cm, template, bottom) {\n var wrap = cm.getWrapperElement();\n var dialog2;\n dialog2 = wrap.appendChild(document.createElement(\"div\"));\n if (bottom) dialog2.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";else dialog2.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n if (typeof template == \"string\") {\n dialog2.innerHTML = template;\n } else {\n dialog2.appendChild(template);\n }\n\n CodeMirror.addClass(wrap, \"dialog-opened\");\n return dialog2;\n }\n\n __name(dialogDiv, \"dialogDiv\");\n\n function closeNotification(cm, newVal) {\n if (cm.state.currentNotificationClose) cm.state.currentNotificationClose();\n cm.state.currentNotificationClose = newVal;\n }\n\n __name(closeNotification, \"closeNotification\");\n\n CodeMirror.defineExtension(\"openDialog\", function (template, callback, options) {\n if (!options) options = {};\n closeNotification(this, null);\n var dialog2 = dialogDiv(this, template, options.bottom);\n var closed = false,\n me = this;\n\n function close(newVal) {\n if (typeof newVal == \"string\") {\n inp.value = newVal;\n } else {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog2.parentNode, \"dialog-opened\");\n dialog2.parentNode.removeChild(dialog2);\n me.focus();\n if (options.onClose) options.onClose(dialog2);\n }\n }\n\n __name(close, \"close\");\n\n var inp = dialog2.getElementsByTagName(\"input\")[0],\n button;\n\n if (inp) {\n inp.focus();\n\n if (options.value) {\n inp.value = options.value;\n\n if (options.selectValueOnOpen !== false) {\n inp.select();\n }\n }\n\n if (options.onInput) CodeMirror.on(inp, \"input\", function (e) {\n options.onInput(e, inp.value, close);\n });\n if (options.onKeyUp) CodeMirror.on(inp, \"keyup\", function (e) {\n options.onKeyUp(e, inp.value, close);\n });\n CodeMirror.on(inp, \"keydown\", function (e) {\n if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) {\n return;\n }\n\n if (e.keyCode == 27 || options.closeOnEnter !== false && e.keyCode == 13) {\n inp.blur();\n CodeMirror.e_stop(e);\n close();\n }\n\n if (e.keyCode == 13) callback(inp.value, e);\n });\n if (options.closeOnBlur !== false) CodeMirror.on(dialog2, \"focusout\", function (evt) {\n if (evt.relatedTarget !== null) close();\n });\n } else if (button = dialog2.getElementsByTagName(\"button\")[0]) {\n CodeMirror.on(button, \"click\", function () {\n close();\n me.focus();\n });\n if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n button.focus();\n }\n\n return close;\n });\n CodeMirror.defineExtension(\"openConfirm\", function (template, callbacks, options) {\n closeNotification(this, null);\n var dialog2 = dialogDiv(this, template, options && options.bottom);\n var buttons = dialog2.getElementsByTagName(\"button\");\n var closed = false,\n me = this,\n blurring = 1;\n\n function close() {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog2.parentNode, \"dialog-opened\");\n dialog2.parentNode.removeChild(dialog2);\n me.focus();\n }\n\n __name(close, \"close\");\n\n buttons[0].focus();\n\n for (var i = 0; i < buttons.length; ++i) {\n var b = buttons[i];\n\n (function (callback) {\n CodeMirror.on(b, \"click\", function (e) {\n CodeMirror.e_preventDefault(e);\n close();\n if (callback) callback(me);\n });\n })(callbacks[i]);\n\n CodeMirror.on(b, \"blur\", function () {\n --blurring;\n setTimeout(function () {\n if (blurring <= 0) close();\n }, 200);\n });\n CodeMirror.on(b, \"focus\", function () {\n ++blurring;\n });\n }\n });\n CodeMirror.defineExtension(\"openNotification\", function (template, options) {\n closeNotification(this, close);\n var dialog2 = dialogDiv(this, template, options && options.bottom);\n var closed = false,\n doneTimer;\n var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5e3;\n\n function close() {\n if (closed) return;\n closed = true;\n clearTimeout(doneTimer);\n CodeMirror.rmClass(dialog2.parentNode, \"dialog-opened\");\n dialog2.parentNode.removeChild(dialog2);\n }\n\n __name(close, \"close\");\n\n CodeMirror.on(dialog2, \"click\", function (e) {\n CodeMirror.e_preventDefault(e);\n close();\n });\n if (duration) doneTimer = setTimeout(close, duration);\n return close;\n });\n });\n })();\n\n var dialog = dialog$2.exports;\n var dialog$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": dialog\n }, [dialog$2.exports]));\n _exports.d = dialog$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9kaWFsb2cuZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9wYWNrYWdlcy9ncmFwaGlxbC1yZWFjdC9kaXN0L2RpYWxvZy5lcy5qcz9iZmY1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lID0gKHRhcmdldCwgdmFsdWUpID0+IF9fZGVmUHJvcCh0YXJnZXQsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG5pbXBvcnQgeyBhIGFzIGNvZGVtaXJyb3IgfSBmcm9tIFwiLi9jb2RlbWlycm9yLmVzLmpzXCI7XG5mdW5jdGlvbiBfbWVyZ2VOYW1lc3BhY2VzKG4sIG0pIHtcbiAgbS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHtcbiAgICBlICYmIHR5cGVvZiBlICE9PSBcInN0cmluZ1wiICYmICFBcnJheS5pc0FycmF5KGUpICYmIE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgICAgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmICEoayBpbiBuKSkge1xuICAgICAgICB2YXIgZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgayk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCBrLCBkLmdldCA/IGQgOiB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIGVba107XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKG4pO1xufVxuX19uYW1lKF9tZXJnZU5hbWVzcGFjZXMsIFwiX21lcmdlTmFtZXNwYWNlc1wiKTtcbnZhciBkaWFsb2ckMiA9IHsgZXhwb3J0czoge30gfTtcbihmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcbiAgKGZ1bmN0aW9uKG1vZCkge1xuICAgIG1vZChjb2RlbWlycm9yLmV4cG9ydHMpO1xuICB9KShmdW5jdGlvbihDb2RlTWlycm9yKSB7XG4gICAgZnVuY3Rpb24gZGlhbG9nRGl2KGNtLCB0ZW1wbGF0ZSwgYm90dG9tKSB7XG4gICAgICB2YXIgd3JhcCA9IGNtLmdldFdyYXBwZXJFbGVtZW50KCk7XG4gICAgICB2YXIgZGlhbG9nMjtcbiAgICAgIGRpYWxvZzIgPSB3cmFwLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpO1xuICAgICAgaWYgKGJvdHRvbSlcbiAgICAgICAgZGlhbG9nMi5jbGFzc05hbWUgPSBcIkNvZGVNaXJyb3ItZGlhbG9nIENvZGVNaXJyb3ItZGlhbG9nLWJvdHRvbVwiO1xuICAgICAgZWxzZVxuICAgICAgICBkaWFsb2cyLmNsYXNzTmFtZSA9IFwiQ29kZU1pcnJvci1kaWFsb2cgQ29kZU1pcnJvci1kaWFsb2ctdG9wXCI7XG4gICAgICBpZiAodHlwZW9mIHRlbXBsYXRlID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZGlhbG9nMi5pbm5lckhUTUwgPSB0ZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpYWxvZzIuYXBwZW5kQ2hpbGQodGVtcGxhdGUpO1xuICAgICAgfVxuICAgICAgQ29kZU1pcnJvci5hZGRDbGFzcyh3cmFwLCBcImRpYWxvZy1vcGVuZWRcIik7XG4gICAgICByZXR1cm4gZGlhbG9nMjtcbiAgICB9XG4gICAgX19uYW1lKGRpYWxvZ0RpdiwgXCJkaWFsb2dEaXZcIik7XG4gICAgZnVuY3Rpb24gY2xvc2VOb3RpZmljYXRpb24oY20sIG5ld1ZhbCkge1xuICAgICAgaWYgKGNtLnN0YXRlLmN1cnJlbnROb3RpZmljYXRpb25DbG9zZSlcbiAgICAgICAgY20uc3RhdGUuY3VycmVudE5vdGlmaWNhdGlvbkNsb3NlKCk7XG4gICAgICBjbS5zdGF0ZS5jdXJyZW50Tm90aWZpY2F0aW9uQ2xvc2UgPSBuZXdWYWw7XG4gICAgfVxuICAgIF9fbmFtZShjbG9zZU5vdGlmaWNhdGlvbiwgXCJjbG9zZU5vdGlmaWNhdGlvblwiKTtcbiAgICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbihcIm9wZW5EaWFsb2dcIiwgZnVuY3Rpb24odGVtcGxhdGUsIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgICBpZiAoIW9wdGlvbnMpXG4gICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICAgIGNsb3NlTm90aWZpY2F0aW9uKHRoaXMsIG51bGwpO1xuICAgICAgdmFyIGRpYWxvZzIgPSBkaWFsb2dEaXYodGhpcywgdGVtcGxhdGUsIG9wdGlvbnMuYm90dG9tKTtcbiAgICAgIHZhciBjbG9zZWQgPSBmYWxzZSwgbWUgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gY2xvc2UobmV3VmFsKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmV3VmFsID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBpbnAudmFsdWUgPSBuZXdWYWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGNsb3NlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgICAgIENvZGVNaXJyb3Iucm1DbGFzcyhkaWFsb2cyLnBhcmVudE5vZGUsIFwiZGlhbG9nLW9wZW5lZFwiKTtcbiAgICAgICAgICBkaWFsb2cyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZGlhbG9nMik7XG4gICAgICAgICAgbWUuZm9jdXMoKTtcbiAgICAgICAgICBpZiAob3B0aW9ucy5vbkNsb3NlKVxuICAgICAgICAgICAgb3B0aW9ucy5vbkNsb3NlKGRpYWxvZzIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUoY2xvc2UsIFwiY2xvc2VcIik7XG4gICAgICB2YXIgaW5wID0gZGlhbG9nMi5nZXRFbGVtZW50c0J5VGFnTmFtZShcImlucHV0XCIpWzBdLCBidXR0b247XG4gICAgICBpZiAoaW5wKSB7XG4gICAgICAgIGlucC5mb2N1cygpO1xuICAgICAgICBpZiAob3B0aW9ucy52YWx1ZSkge1xuICAgICAgICAgIGlucC52YWx1ZSA9IG9wdGlvbnMudmFsdWU7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuc2VsZWN0VmFsdWVPbk9wZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBpbnAuc2VsZWN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm9uSW5wdXQpXG4gICAgICAgICAgQ29kZU1pcnJvci5vbihpbnAsIFwiaW5wdXRcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgb3B0aW9ucy5vbklucHV0KGUsIGlucC52YWx1ZSwgY2xvc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICBpZiAob3B0aW9ucy5vbktleVVwKVxuICAgICAgICAgIENvZGVNaXJyb3Iub24oaW5wLCBcImtleXVwXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIG9wdGlvbnMub25LZXlVcChlLCBpbnAudmFsdWUsIGNsb3NlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgQ29kZU1pcnJvci5vbihpbnAsIFwia2V5ZG93blwiLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5vbktleURvd24gJiYgb3B0aW9ucy5vbktleURvd24oZSwgaW5wLnZhbHVlLCBjbG9zZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGUua2V5Q29kZSA9PSAyNyB8fCBvcHRpb25zLmNsb3NlT25FbnRlciAhPT0gZmFsc2UgJiYgZS5rZXlDb2RlID09IDEzKSB7XG4gICAgICAgICAgICBpbnAuYmx1cigpO1xuICAgICAgICAgICAgQ29kZU1pcnJvci5lX3N0b3AoZSk7XG4gICAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZS5rZXlDb2RlID09IDEzKVxuICAgICAgICAgICAgY2FsbGJhY2soaW5wLnZhbHVlLCBlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChvcHRpb25zLmNsb3NlT25CbHVyICE9PSBmYWxzZSlcbiAgICAgICAgICBDb2RlTWlycm9yLm9uKGRpYWxvZzIsIFwiZm9jdXNvdXRcIiwgZnVuY3Rpb24oZXZ0KSB7XG4gICAgICAgICAgICBpZiAoZXZ0LnJlbGF0ZWRUYXJnZXQgIT09IG51bGwpXG4gICAgICAgICAgICAgIGNsb3NlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGJ1dHRvbiA9IGRpYWxvZzIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJidXR0b25cIilbMF0pIHtcbiAgICAgICAgQ29kZU1pcnJvci5vbihidXR0b24sIFwiY2xpY2tcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgICBtZS5mb2N1cygpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9wdGlvbnMuY2xvc2VPbkJsdXIgIT09IGZhbHNlKVxuICAgICAgICAgIENvZGVNaXJyb3Iub24oYnV0dG9uLCBcImJsdXJcIiwgY2xvc2UpO1xuICAgICAgICBidXR0b24uZm9jdXMoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjbG9zZTtcbiAgICB9KTtcbiAgICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbihcIm9wZW5Db25maXJtXCIsIGZ1bmN0aW9uKHRlbXBsYXRlLCBjYWxsYmFja3MsIG9wdGlvbnMpIHtcbiAgICAgIGNsb3NlTm90aWZpY2F0aW9uKHRoaXMsIG51bGwpO1xuICAgICAgdmFyIGRpYWxvZzIgPSBkaWFsb2dEaXYodGhpcywgdGVtcGxhdGUsIG9wdGlvbnMgJiYgb3B0aW9ucy5ib3R0b20pO1xuICAgICAgdmFyIGJ1dHRvbnMgPSBkaWFsb2cyLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYnV0dG9uXCIpO1xuICAgICAgdmFyIGNsb3NlZCA9IGZhbHNlLCBtZSA9IHRoaXMsIGJsdXJyaW5nID0gMTtcbiAgICAgIGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgICBpZiAoY2xvc2VkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgQ29kZU1pcnJvci5ybUNsYXNzKGRpYWxvZzIucGFyZW50Tm9kZSwgXCJkaWFsb2ctb3BlbmVkXCIpO1xuICAgICAgICBkaWFsb2cyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZGlhbG9nMik7XG4gICAgICAgIG1lLmZvY3VzKCk7XG4gICAgICB9XG4gICAgICBfX25hbWUoY2xvc2UsIFwiY2xvc2VcIik7XG4gICAgICBidXR0b25zWzBdLmZvY3VzKCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1dHRvbnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGIgPSBidXR0b25zW2ldO1xuICAgICAgICAoZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgICAgICBDb2RlTWlycm9yLm9uKGIsIFwiY2xpY2tcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgQ29kZU1pcnJvci5lX3ByZXZlbnREZWZhdWx0KGUpO1xuICAgICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjaylcbiAgICAgICAgICAgICAgY2FsbGJhY2sobWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KShjYWxsYmFja3NbaV0pO1xuICAgICAgICBDb2RlTWlycm9yLm9uKGIsIFwiYmx1clwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAtLWJsdXJyaW5nO1xuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAoYmx1cnJpbmcgPD0gMClcbiAgICAgICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgQ29kZU1pcnJvci5vbihiLCBcImZvY3VzXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICsrYmx1cnJpbmc7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5zaW9uKFwib3Blbk5vdGlmaWNhdGlvblwiLCBmdW5jdGlvbih0ZW1wbGF0ZSwgb3B0aW9ucykge1xuICAgICAgY2xvc2VOb3RpZmljYXRpb24odGhpcywgY2xvc2UpO1xuICAgICAgdmFyIGRpYWxvZzIgPSBkaWFsb2dEaXYodGhpcywgdGVtcGxhdGUsIG9wdGlvbnMgJiYgb3B0aW9ucy5ib3R0b20pO1xuICAgICAgdmFyIGNsb3NlZCA9IGZhbHNlLCBkb25lVGltZXI7XG4gICAgICB2YXIgZHVyYXRpb24gPSBvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLmR1cmF0aW9uICE9PSBcInVuZGVmaW5lZFwiID8gb3B0aW9ucy5kdXJhdGlvbiA6IDVlMztcbiAgICAgIGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgICBpZiAoY2xvc2VkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGRvbmVUaW1lcik7XG4gICAgICAgIENvZGVNaXJyb3Iucm1DbGFzcyhkaWFsb2cyLnBhcmVudE5vZGUsIFwiZGlhbG9nLW9wZW5lZFwiKTtcbiAgICAgICAgZGlhbG9nMi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRpYWxvZzIpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGNsb3NlLCBcImNsb3NlXCIpO1xuICAgICAgQ29kZU1pcnJvci5vbihkaWFsb2cyLCBcImNsaWNrXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgQ29kZU1pcnJvci5lX3ByZXZlbnREZWZhdWx0KGUpO1xuICAgICAgICBjbG9zZSgpO1xuICAgICAgfSk7XG4gICAgICBpZiAoZHVyYXRpb24pXG4gICAgICAgIGRvbmVUaW1lciA9IHNldFRpbWVvdXQoY2xvc2UsIGR1cmF0aW9uKTtcbiAgICAgIHJldHVybiBjbG9zZTtcbiAgICB9KTtcbiAgfSk7XG59KSgpO1xudmFyIGRpYWxvZyA9IGRpYWxvZyQyLmV4cG9ydHM7XG52YXIgZGlhbG9nJDEgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmZyZWV6ZSgvKiBAX19QVVJFX18gKi8gX21lcmdlTmFtZXNwYWNlcyh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IFwiTW9kdWxlXCIsXG4gIFwiZGVmYXVsdFwiOiBkaWFsb2dcbn0sIFtkaWFsb2ckMi5leHBvcnRzXSkpO1xuZXhwb3J0IHsgZGlhbG9nJDIgYXMgYSwgZGlhbG9nJDEgYXMgZCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/dialog.es.js\n");
|
2505 |
|
2506 | }),
|
2507 |
|
2508 | "../../graphiql-react/dist/foldgutter.es.js":
|
2509 |
|
2510 |
|
2511 |
|
2512 |
|
2513 | (function(module, exports, __webpack_require__) {
|
2514 |
|
2515 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.f = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var foldgutter$2 = {\n exports: {}\n };\n var foldcode = {\n exports: {}\n };\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports);\n })(function (CodeMirror) {\n function doFold(cm, pos, options, force) {\n if (options && options.call) {\n var finder = options;\n options = null;\n } else {\n var finder = getOption(cm, options, \"rangeFinder\");\n }\n\n if (typeof pos == \"number\") pos = CodeMirror.Pos(pos, 0);\n var minSize = getOption(cm, options, \"minFoldSize\");\n\n function getRange(allowFolded) {\n var range2 = finder(cm, pos);\n if (!range2 || range2.to.line - range2.from.line < minSize) return null;\n if (force === \"fold\") return range2;\n var marks = cm.findMarksAt(range2.from);\n\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold) {\n if (!allowFolded) return null;\n range2.cleared = true;\n marks[i].clear();\n }\n }\n\n return range2;\n }\n\n __name(getRange, \"getRange\");\n\n var range = getRange(true);\n if (getOption(cm, options, \"scanUp\")) while (!range && pos.line > cm.firstLine()) {\n pos = CodeMirror.Pos(pos.line - 1, 0);\n range = getRange(false);\n }\n if (!range || range.cleared || force === \"unfold\") return;\n var myWidget = makeWidget(cm, options, range);\n CodeMirror.on(myWidget, \"mousedown\", function (e) {\n myRange.clear();\n CodeMirror.e_preventDefault(e);\n });\n var myRange = cm.markText(range.from, range.to, {\n replacedWith: myWidget,\n clearOnEnter: getOption(cm, options, \"clearOnEnter\"),\n __isFold: true\n });\n myRange.on(\"clear\", function (from, to) {\n CodeMirror.signal(cm, \"unfold\", cm, from, to);\n });\n CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n }\n\n __name(doFold, \"doFold\");\n\n function makeWidget(cm, options, range) {\n var widget = getOption(cm, options, \"widget\");\n\n if (typeof widget == \"function\") {\n widget = widget(range.from, range.to);\n }\n\n if (typeof widget == \"string\") {\n var text = document.createTextNode(widget);\n widget = document.createElement(\"span\");\n widget.appendChild(text);\n widget.className = \"CodeMirror-foldmarker\";\n } else if (widget) {\n widget = widget.cloneNode(true);\n }\n\n return widget;\n }\n\n __name(makeWidget, \"makeWidget\");\n\n CodeMirror.newFoldFunction = function (rangeFinder, widget) {\n return function (cm, pos) {\n doFold(cm, pos, {\n rangeFinder,\n widget\n });\n };\n };\n\n CodeMirror.defineExtension(\"foldCode\", function (pos, options, force) {\n doFold(this, pos, options, force);\n });\n CodeMirror.defineExtension(\"isFolded\", function (pos) {\n var marks = this.findMarksAt(pos);\n\n for (var i = 0; i < marks.length; ++i) if (marks[i].__isFold) return true;\n });\n\n CodeMirror.commands.toggleFold = function (cm) {\n cm.foldCode(cm.getCursor());\n };\n\n CodeMirror.commands.fold = function (cm) {\n cm.foldCode(cm.getCursor(), null, \"fold\");\n };\n\n CodeMirror.commands.unfold = function (cm) {\n cm.foldCode(cm.getCursor(), {\n scanUp: false\n }, \"unfold\");\n };\n\n CodeMirror.commands.foldAll = function (cm) {\n cm.operation(function () {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++) cm.foldCode(CodeMirror.Pos(i, 0), {\n scanUp: false\n }, \"fold\");\n });\n };\n\n CodeMirror.commands.unfoldAll = function (cm) {\n cm.operation(function () {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++) cm.foldCode(CodeMirror.Pos(i, 0), {\n scanUp: false\n }, \"unfold\");\n });\n };\n\n CodeMirror.registerHelper(\"fold\", \"combine\", function () {\n var funcs = Array.prototype.slice.call(arguments, 0);\n return function (cm, start) {\n for (var i = 0; i < funcs.length; ++i) {\n var found = funcs[i](cm, start);\n if (found) return found;\n }\n };\n });\n CodeMirror.registerHelper(\"fold\", \"auto\", function (cm, start) {\n var helpers = cm.getHelpers(start, \"fold\");\n\n for (var i = 0; i < helpers.length; i++) {\n var cur = helpers[i](cm, start);\n if (cur) return cur;\n }\n });\n var defaultOptions = {\n rangeFinder: CodeMirror.fold.auto,\n widget: \"\\u2194\",\n minFoldSize: 0,\n scanUp: false,\n clearOnEnter: true\n };\n CodeMirror.defineOption(\"foldOptions\", null);\n\n function getOption(cm, options, name) {\n if (options && options[name] !== void 0) return options[name];\n var editorOptions = cm.options.foldOptions;\n if (editorOptions && editorOptions[name] !== void 0) return editorOptions[name];\n return defaultOptions[name];\n }\n\n __name(getOption, \"getOption\");\n\n CodeMirror.defineExtension(\"foldOption\", function (options, name) {\n return getOption(this, options, name);\n });\n });\n })();\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports, foldcode.exports);\n })(function (CodeMirror) {\n CodeMirror.defineOption(\"foldGutter\", false, function (cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.clearGutter(cm.state.foldGutter.options.gutter);\n cm.state.foldGutter = null;\n cm.off(\"gutterClick\", onGutterClick);\n cm.off(\"changes\", onChange);\n cm.off(\"viewportChange\", onViewportChange);\n cm.off(\"fold\", onFold);\n cm.off(\"unfold\", onFold);\n cm.off(\"swapDoc\", onChange);\n }\n\n if (val) {\n cm.state.foldGutter = new State(parseOptions(val));\n updateInViewport(cm);\n cm.on(\"gutterClick\", onGutterClick);\n cm.on(\"changes\", onChange);\n cm.on(\"viewportChange\", onViewportChange);\n cm.on(\"fold\", onFold);\n cm.on(\"unfold\", onFold);\n cm.on(\"swapDoc\", onChange);\n }\n });\n var Pos = CodeMirror.Pos;\n\n function State(options) {\n this.options = options;\n this.from = this.to = 0;\n }\n\n __name(State, \"State\");\n\n function parseOptions(opts) {\n if (opts === true) opts = {};\n if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n return opts;\n }\n\n __name(parseOptions, \"parseOptions\");\n\n function isFolded(cm, line) {\n var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));\n\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold) {\n var fromPos = marks[i].find(-1);\n if (fromPos && fromPos.line === line) return marks[i];\n }\n }\n }\n\n __name(isFolded, \"isFolded\");\n\n function marker(spec) {\n if (typeof spec == \"string\") {\n var elt = document.createElement(\"div\");\n elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n return elt;\n } else {\n return spec.cloneNode(true);\n }\n }\n\n __name(marker, \"marker\");\n\n function updateFoldInfo(cm, from, to) {\n var opts = cm.state.foldGutter.options,\n cur = from - 1;\n var minSize = cm.foldOption(opts, \"minFoldSize\");\n var func = cm.foldOption(opts, \"rangeFinder\");\n var clsFolded = typeof opts.indicatorFolded == \"string\" && classTest(opts.indicatorFolded);\n var clsOpen = typeof opts.indicatorOpen == \"string\" && classTest(opts.indicatorOpen);\n cm.eachLine(from, to, function (line) {\n ++cur;\n var mark = null;\n var old = line.gutterMarkers;\n if (old) old = old[opts.gutter];\n\n if (isFolded(cm, cur)) {\n if (clsFolded && old && clsFolded.test(old.className)) return;\n mark = marker(opts.indicatorFolded);\n } else {\n var pos = Pos(cur, 0);\n var range = func && func(cm, pos);\n\n if (range && range.to.line - range.from.line >= minSize) {\n if (clsOpen && old && clsOpen.test(old.className)) return;\n mark = marker(opts.indicatorOpen);\n }\n }\n\n if (!mark && !old) return;\n cm.setGutterMarker(line, opts.gutter, mark);\n });\n }\n\n __name(updateFoldInfo, \"updateFoldInfo\");\n\n function classTest(cls) {\n return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n }\n\n __name(classTest, \"classTest\");\n\n function updateInViewport(cm) {\n var vp = cm.getViewport(),\n state = cm.state.foldGutter;\n if (!state) return;\n cm.operation(function () {\n updateFoldInfo(cm, vp.from, vp.to);\n });\n state.from = vp.from;\n state.to = vp.to;\n }\n\n __name(updateInViewport, \"updateInViewport\");\n\n function onGutterClick(cm, line, gutter) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n if (gutter != opts.gutter) return;\n var folded = isFolded(cm, line);\n if (folded) folded.clear();else cm.foldCode(Pos(line, 0), opts);\n }\n\n __name(onGutterClick, \"onGutterClick\");\n\n function onChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n state.from = state.to = 0;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function () {\n updateInViewport(cm);\n }, opts.foldOnChangeTimeSpan || 600);\n }\n\n __name(onChange, \"onChange\");\n\n function onViewportChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function () {\n var vp = cm.getViewport();\n\n if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n updateInViewport(cm);\n } else {\n cm.operation(function () {\n if (vp.from < state.from) {\n updateFoldInfo(cm, vp.from, state.from);\n state.from = vp.from;\n }\n\n if (vp.to > state.to) {\n updateFoldInfo(cm, state.to, vp.to);\n state.to = vp.to;\n }\n });\n }\n }, opts.updateViewportTimeSpan || 400);\n }\n\n __name(onViewportChange, \"onViewportChange\");\n\n function onFold(cm, from) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var line = from.line;\n if (line >= state.from && line < state.to) updateFoldInfo(cm, line, line + 1);\n }\n\n __name(onFold, \"onFold\");\n });\n })();\n\n var foldgutter = foldgutter$2.exports;\n var foldgutter$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": foldgutter\n }, [foldgutter$2.exports]));\n _exports.f = foldgutter$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9mb2xkZ3V0dGVyLmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9mb2xkZ3V0dGVyLmVzLmpzPzY1ZjUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IGEgYXMgY29kZW1pcnJvciB9IGZyb20gXCIuL2NvZGVtaXJyb3IuZXMuanNcIjtcbmZ1bmN0aW9uIF9tZXJnZU5hbWVzcGFjZXMobiwgbSkge1xuICBtLmZvckVhY2goZnVuY3Rpb24oZSkge1xuICAgIGUgJiYgdHlwZW9mIGUgIT09IFwic3RyaW5nXCIgJiYgIUFycmF5LmlzQXJyYXkoZSkgJiYgT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgIShrIGluIG4pKSB7XG4gICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGssIGQuZ2V0ID8gZCA6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gZVtrXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUobik7XG59XG5fX25hbWUoX21lcmdlTmFtZXNwYWNlcywgXCJfbWVyZ2VOYW1lc3BhY2VzXCIpO1xudmFyIGZvbGRndXR0ZXIkMiA9IHsgZXhwb3J0czoge30gfTtcbnZhciBmb2xkY29kZSA9IHsgZXhwb3J0czoge30gfTtcbihmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcbiAgKGZ1bmN0aW9uKG1vZCkge1xuICAgIG1vZChjb2RlbWlycm9yLmV4cG9ydHMpO1xuICB9KShmdW5jdGlvbihDb2RlTWlycm9yKSB7XG4gICAgZnVuY3Rpb24gZG9Gb2xkKGNtLCBwb3MsIG9wdGlvbnMsIGZvcmNlKSB7XG4gICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmNhbGwpIHtcbiAgICAgICAgdmFyIGZpbmRlciA9IG9wdGlvbnM7XG4gICAgICAgIG9wdGlvbnMgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGZpbmRlciA9IGdldE9wdGlvbihjbSwgb3B0aW9ucywgXCJyYW5nZUZpbmRlclwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgcG9zID09IFwibnVtYmVyXCIpXG4gICAgICAgIHBvcyA9IENvZGVNaXJyb3IuUG9zKHBvcywgMCk7XG4gICAgICB2YXIgbWluU2l6ZSA9IGdldE9wdGlvbihjbSwgb3B0aW9ucywgXCJtaW5Gb2xkU2l6ZVwiKTtcbiAgICAgIGZ1bmN0aW9uIGdldFJhbmdlKGFsbG93Rm9sZGVkKSB7XG4gICAgICAgIHZhciByYW5nZTIgPSBmaW5kZXIoY20sIHBvcyk7XG4gICAgICAgIGlmICghcmFuZ2UyIHx8IHJhbmdlMi50by5saW5lIC0gcmFuZ2UyLmZyb20ubGluZSA8IG1pblNpemUpXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmIChmb3JjZSA9PT0gXCJmb2xkXCIpXG4gICAgICAgICAgcmV0dXJuIHJhbmdlMjtcbiAgICAgICAgdmFyIG1hcmtzID0gY20uZmluZE1hcmtzQXQocmFuZ2UyLmZyb20pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgaWYgKG1hcmtzW2ldLl9faXNGb2xkKSB7XG4gICAgICAgICAgICBpZiAoIWFsbG93Rm9sZGVkKVxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIHJhbmdlMi5jbGVhcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIG1hcmtzW2ldLmNsZWFyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByYW5nZTI7XG4gICAgICB9XG4gICAgICBfX25hbWUoZ2V0UmFuZ2UsIFwiZ2V0UmFuZ2VcIik7XG4gICAgICB2YXIgcmFuZ2UgPSBnZXRSYW5nZSh0cnVlKTtcbiAgICAgIGlmIChnZXRPcHRpb24oY20sIG9wdGlvbnMsIFwic2NhblVwXCIpKVxuICAgICAgICB3aGlsZSAoIXJhbmdlICYmIHBvcy5saW5lID4gY20uZmlyc3RMaW5lKCkpIHtcbiAgICAgICAgICBwb3MgPSBDb2RlTWlycm9yLlBvcyhwb3MubGluZSAtIDEsIDApO1xuICAgICAgICAgIHJhbmdlID0gZ2V0UmFuZ2UoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLmNsZWFyZWQgfHwgZm9yY2UgPT09IFwidW5mb2xkXCIpXG4gICAgICAgIHJldHVybjtcbiAgICAgIHZhciBteVdpZGdldCA9IG1ha2VXaWRnZXQoY20sIG9wdGlvbnMsIHJhbmdlKTtcbiAgICAgIENvZGVNaXJyb3Iub24obXlXaWRnZXQsIFwibW91c2Vkb3duXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgbXlSYW5nZS5jbGVhcigpO1xuICAgICAgICBDb2RlTWlycm9yLmVfcHJldmVudERlZmF1bHQoZSk7XG4gICAgICB9KTtcbiAgICAgIHZhciBteVJhbmdlID0gY20ubWFya1RleHQocmFuZ2UuZnJvbSwgcmFuZ2UudG8sIHtcbiAgICAgICAgcmVwbGFjZWRXaXRoOiBteVdpZGdldCxcbiAgICAgICAgY2xlYXJPbkVudGVyOiBnZXRPcHRpb24oY20sIG9wdGlvbnMsIFwiY2xlYXJPbkVudGVyXCIpLFxuICAgICAgICBfX2lzRm9sZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBteVJhbmdlLm9uKFwiY2xlYXJcIiwgZnVuY3Rpb24oZnJvbSwgdG8pIHtcbiAgICAgICAgQ29kZU1pcnJvci5zaWduYWwoY20sIFwidW5mb2xkXCIsIGNtLCBmcm9tLCB0byk7XG4gICAgICB9KTtcbiAgICAgIENvZGVNaXJyb3Iuc2lnbmFsKGNtLCBcImZvbGRcIiwgY20sIHJhbmdlLmZyb20sIHJhbmdlLnRvKTtcbiAgICB9XG4gICAgX19uYW1lKGRvRm9sZCwgXCJkb0ZvbGRcIik7XG4gICAgZnVuY3Rpb24gbWFrZVdpZGdldChjbSwgb3B0aW9ucywgcmFuZ2UpIHtcbiAgICAgIHZhciB3aWRnZXQgPSBnZXRPcHRpb24oY20sIG9wdGlvbnMsIFwid2lkZ2V0XCIpO1xuICAgICAgaWYgKHR5cGVvZiB3aWRnZXQgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHdpZGdldCA9IHdpZGdldChyYW5nZS5mcm9tLCByYW5nZS50byk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHdpZGdldCA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod2lkZ2V0KTtcbiAgICAgICAgd2lkZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgICAgIHdpZGdldC5hcHBlbmRDaGlsZCh0ZXh0KTtcbiAgICAgICAgd2lkZ2V0LmNsYXNzTmFtZSA9IFwiQ29kZU1pcnJvci1mb2xkbWFya2VyXCI7XG4gICAgICB9IGVsc2UgaWYgKHdpZGdldCkge1xuICAgICAgICB3aWRnZXQgPSB3aWRnZXQuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdpZGdldDtcbiAgICB9XG4gICAgX19uYW1lKG1ha2VXaWRnZXQsIFwibWFrZVdpZGdldFwiKTtcbiAgICBDb2RlTWlycm9yLm5ld0ZvbGRGdW5jdGlvbiA9IGZ1bmN0aW9uKHJhbmdlRmluZGVyLCB3aWRnZXQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjbSwgcG9zKSB7XG4gICAgICAgIGRvRm9sZChjbSwgcG9zLCB7IHJhbmdlRmluZGVyLCB3aWRnZXQgfSk7XG4gICAgICB9O1xuICAgIH07XG4gICAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJmb2xkQ29kZVwiLCBmdW5jdGlvbihwb3MsIG9wdGlvbnMsIGZvcmNlKSB7XG4gICAgICBkb0ZvbGQodGhpcywgcG9zLCBvcHRpb25zLCBmb3JjZSk7XG4gICAgfSk7XG4gICAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJpc0ZvbGRlZFwiLCBmdW5jdGlvbihwb3MpIHtcbiAgICAgIHZhciBtYXJrcyA9IHRoaXMuZmluZE1hcmtzQXQocG9zKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyArK2kpXG4gICAgICAgIGlmIChtYXJrc1tpXS5fX2lzRm9sZClcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICBDb2RlTWlycm9yLmNvbW1hbmRzLnRvZ2dsZUZvbGQgPSBmdW5jdGlvbihjbSkge1xuICAgICAgY20uZm9sZENvZGUoY20uZ2V0Q3Vyc29yKCkpO1xuICAgIH07XG4gICAgQ29kZU1pcnJvci5jb21tYW5kcy5mb2xkID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIGNtLmZvbGRDb2RlKGNtLmdldEN1cnNvcigpLCBudWxsLCBcImZvbGRcIik7XG4gICAgfTtcbiAgICBDb2RlTWlycm9yLmNvbW1hbmRzLnVuZm9sZCA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICBjbS5mb2xkQ29kZShjbS5nZXRDdXJzb3IoKSwgeyBzY2FuVXA6IGZhbHNlIH0sIFwidW5mb2xkXCIpO1xuICAgIH07XG4gICAgQ29kZU1pcnJvci5jb21tYW5kcy5mb2xkQWxsID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IGNtLmZpcnN0TGluZSgpLCBlID0gY20ubGFzdExpbmUoKTsgaSA8PSBlOyBpKyspXG4gICAgICAgICAgY20uZm9sZENvZGUoQ29kZU1pcnJvci5Qb3MoaSwgMCksIHsgc2NhblVwOiBmYWxzZSB9LCBcImZvbGRcIik7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIENvZGVNaXJyb3IuY29tbWFuZHMudW5mb2xkQWxsID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IGNtLmZpcnN0TGluZSgpLCBlID0gY20ubGFzdExpbmUoKTsgaSA8PSBlOyBpKyspXG4gICAgICAgICAgY20uZm9sZENvZGUoQ29kZU1pcnJvci5Qb3MoaSwgMCksIHsgc2NhblVwOiBmYWxzZSB9LCBcInVuZm9sZFwiKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgQ29kZU1pcnJvci5yZWdpc3RlckhlbHBlcihcImZvbGRcIiwgXCJjb21iaW5lXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGZ1bmNzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjbSwgc3RhcnQpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmdW5jcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIHZhciBmb3VuZCA9IGZ1bmNzW2ldKGNtLCBzdGFydCk7XG4gICAgICAgICAgaWYgKGZvdW5kKVxuICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICAgIENvZGVNaXJyb3IucmVnaXN0ZXJIZWxwZXIoXCJmb2xkXCIsIFwiYXV0b1wiLCBmdW5jdGlvbihjbSwgc3RhcnQpIHtcbiAgICAgIHZhciBoZWxwZXJzID0gY20uZ2V0SGVscGVycyhzdGFydCwgXCJmb2xkXCIpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoZWxwZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjdXIgPSBoZWxwZXJzW2ldKGNtLCBzdGFydCk7XG4gICAgICAgIGlmIChjdXIpXG4gICAgICAgICAgcmV0dXJuIGN1cjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgICByYW5nZUZpbmRlcjogQ29kZU1pcnJvci5mb2xkLmF1dG8sXG4gICAgICB3aWRnZXQ6IFwiXFx1MjE5NFwiLFxuICAgICAgbWluRm9sZFNpemU6IDAsXG4gICAgICBzY2FuVXA6IGZhbHNlLFxuICAgICAgY2xlYXJPbkVudGVyOiB0cnVlXG4gICAgfTtcbiAgICBDb2RlTWlycm9yLmRlZmluZU9wdGlvbihcImZvbGRPcHRpb25zXCIsIG51bGwpO1xuICAgIGZ1bmN0aW9uIGdldE9wdGlvbihjbSwgb3B0aW9ucywgbmFtZSkge1xuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9uc1tuYW1lXSAhPT0gdm9pZCAwKVxuICAgICAgICByZXR1cm4gb3B0aW9uc1tuYW1lXTtcbiAgICAgIHZhciBlZGl0b3JPcHRpb25zID0gY20ub3B0aW9ucy5mb2xkT3B0aW9ucztcbiAgICAgIGlmIChlZGl0b3JPcHRpb25zICYmIGVkaXRvck9wdGlvbnNbbmFtZV0gIT09IHZvaWQgMClcbiAgICAgICAgcmV0dXJuIGVkaXRvck9wdGlvbnNbbmFtZV07XG4gICAgICByZXR1cm4gZGVmYXVsdE9wdGlvbnNbbmFtZV07XG4gICAgfVxuICAgIF9fbmFtZShnZXRPcHRpb24sIFwiZ2V0T3B0aW9uXCIpO1xuICAgIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5zaW9uKFwiZm9sZE9wdGlvblwiLCBmdW5jdGlvbihvcHRpb25zLCBuYW1lKSB7XG4gICAgICByZXR1cm4gZ2V0T3B0aW9uKHRoaXMsIG9wdGlvbnMsIG5hbWUpO1xuICAgIH0pO1xuICB9KTtcbn0pKCk7XG4oZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG4gIChmdW5jdGlvbihtb2QpIHtcbiAgICBtb2QoY29kZW1pcnJvci5leHBvcnRzLCBmb2xkY29kZS5leHBvcnRzKTtcbiAgfSkoZnVuY3Rpb24oQ29kZU1pcnJvcikge1xuICAgIENvZGVNaXJyb3IuZGVmaW5lT3B0aW9uKFwiZm9sZEd1dHRlclwiLCBmYWxzZSwgZnVuY3Rpb24oY20sIHZhbCwgb2xkKSB7XG4gICAgICBpZiAob2xkICYmIG9sZCAhPSBDb2RlTWlycm9yLkluaXQpIHtcbiAgICAgICAgY20uY2xlYXJHdXR0ZXIoY20uc3RhdGUuZm9sZEd1dHRlci5vcHRpb25zLmd1dHRlcik7XG4gICAgICAgIGNtLnN0YXRlLmZvbGRHdXR0ZXIgPSBudWxsO1xuICAgICAgICBjbS5vZmYoXCJndXR0ZXJDbGlja1wiLCBvbkd1dHRlckNsaWNrKTtcbiAgICAgICAgY20ub2ZmKFwiY2hhbmdlc1wiLCBvbkNoYW5nZSk7XG4gICAgICAgIGNtLm9mZihcInZpZXdwb3J0Q2hhbmdlXCIsIG9uVmlld3BvcnRDaGFuZ2UpO1xuICAgICAgICBjbS5vZmYoXCJmb2xkXCIsIG9uRm9sZCk7XG4gICAgICAgIGNtLm9mZihcInVuZm9sZFwiLCBvbkZvbGQpO1xuICAgICAgICBjbS5vZmYoXCJzd2FwRG9jXCIsIG9uQ2hhbmdlKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgY20uc3RhdGUuZm9sZEd1dHRlciA9IG5ldyBTdGF0ZShwYXJzZU9wdGlvbnModmFsKSk7XG4gICAgICAgIHVwZGF0ZUluVmlld3BvcnQoY20pO1xuICAgICAgICBjbS5vbihcImd1dHRlckNsaWNrXCIsIG9uR3V0dGVyQ2xpY2spO1xuICAgICAgICBjbS5vbihcImNoYW5nZXNcIiwgb25DaGFuZ2UpO1xuICAgICAgICBjbS5vbihcInZpZXdwb3J0Q2hhbmdlXCIsIG9uVmlld3BvcnRDaGFuZ2UpO1xuICAgICAgICBjbS5vbihcImZvbGRcIiwgb25Gb2xkKTtcbiAgICAgICAgY20ub24oXCJ1bmZvbGRcIiwgb25Gb2xkKTtcbiAgICAgICAgY20ub24oXCJzd2FwRG9jXCIsIG9uQ2hhbmdlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgUG9zID0gQ29kZU1pcnJvci5Qb3M7XG4gICAgZnVuY3Rpb24gU3RhdGUob3B0aW9ucykge1xuICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgIHRoaXMuZnJvbSA9IHRoaXMudG8gPSAwO1xuICAgIH1cbiAgICBfX25hbWUoU3RhdGUsIFwiU3RhdGVcIik7XG4gICAgZnVuY3Rpb24gcGFyc2VPcHRpb25zKG9wdHMpIHtcbiAgICAgIGlmIChvcHRzID09PSB0cnVlKVxuICAgICAgICBvcHRzID0ge307XG4gICAgICBpZiAob3B0cy5ndXR0ZXIgPT0gbnVsbClcbiAgICAgICAgb3B0cy5ndXR0ZXIgPSBcIkNvZGVNaXJyb3ItZm9sZGd1dHRlclwiO1xuICAgICAgaWYgKG9wdHMuaW5kaWNhdG9yT3BlbiA9PSBudWxsKVxuICAgICAgICBvcHRzLmluZGljYXRvck9wZW4gPSBcIkNvZGVNaXJyb3ItZm9sZGd1dHRlci1vcGVuXCI7XG4gICAgICBpZiAob3B0cy5pbmRpY2F0b3JGb2xkZWQgPT0gbnVsbClcbiAgICAgICAgb3B0cy5pbmRpY2F0b3JGb2xkZWQgPSBcIkNvZGVNaXJyb3ItZm9sZGd1dHRlci1mb2xkZWRcIjtcbiAgICAgIHJldHVybiBvcHRzO1xuICAgIH1cbiAgICBfX25hbWUocGFyc2VPcHRpb25zLCBcInBhcnNlT3B0aW9uc1wiKTtcbiAgICBmdW5jdGlvbiBpc0ZvbGRlZChjbSwgbGluZSkge1xuICAgICAgdmFyIG1hcmtzID0gY20uZmluZE1hcmtzKFBvcyhsaW5lLCAwKSwgUG9zKGxpbmUgKyAxLCAwKSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGlmIChtYXJrc1tpXS5fX2lzRm9sZCkge1xuICAgICAgICAgIHZhciBmcm9tUG9zID0gbWFya3NbaV0uZmluZCgtMSk7XG4gICAgICAgICAgaWYgKGZyb21Qb3MgJiYgZnJvbVBvcy5saW5lID09PSBsaW5lKVxuICAgICAgICAgICAgcmV0dXJuIG1hcmtzW2ldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShpc0ZvbGRlZCwgXCJpc0ZvbGRlZFwiKTtcbiAgICBmdW5jdGlvbiBtYXJrZXIoc3BlYykge1xuICAgICAgaWYgKHR5cGVvZiBzcGVjID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdmFyIGVsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIGVsdC5jbGFzc05hbWUgPSBzcGVjICsgXCIgQ29kZU1pcnJvci1ndXR0ZXJtYXJrZXItc3VidGxlXCI7XG4gICAgICAgIHJldHVybiBlbHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc3BlYy5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShtYXJrZXIsIFwibWFya2VyXCIpO1xuICAgIGZ1bmN0aW9uIHVwZGF0ZUZvbGRJbmZvKGNtLCBmcm9tLCB0bykge1xuICAgICAgdmFyIG9wdHMgPSBjbS5zdGF0ZS5mb2xkR3V0dGVyLm9wdGlvbnMsIGN1ciA9IGZyb20gLSAxO1xuICAgICAgdmFyIG1pblNpemUgPSBjbS5mb2xkT3B0aW9uKG9wdHMsIFwibWluRm9sZFNpemVcIik7XG4gICAgICB2YXIgZnVuYyA9IGNtLmZvbGRPcHRpb24ob3B0cywgXCJyYW5nZUZpbmRlclwiKTtcbiAgICAgIHZhciBjbHNGb2xkZWQgPSB0eXBlb2Ygb3B0cy5pbmRpY2F0b3JGb2xkZWQgPT0gXCJzdHJpbmdcIiAmJiBjbGFzc1Rlc3Qob3B0cy5pbmRpY2F0b3JGb2xkZWQpO1xuICAgICAgdmFyIGNsc09wZW4gPSB0eXBlb2Ygb3B0cy5pbmRpY2F0b3JPcGVuID09IFwic3RyaW5nXCIgJiYgY2xhc3NUZXN0KG9wdHMuaW5kaWNhdG9yT3Blbik7XG4gICAgICBjbS5lYWNoTGluZShmcm9tLCB0bywgZnVuY3Rpb24obGluZSkge1xuICAgICAgICArK2N1cjtcbiAgICAgICAgdmFyIG1hcmsgPSBudWxsO1xuICAgICAgICB2YXIgb2xkID0gbGluZS5ndXR0ZXJNYXJrZXJzO1xuICAgICAgICBpZiAob2xkKVxuICAgICAgICAgIG9sZCA9IG9sZFtvcHRzLmd1dHRlcl07XG4gICAgICAgIGlmIChpc0ZvbGRlZChjbSwgY3VyKSkge1xuICAgICAgICAgIGlmIChjbHNGb2xkZWQgJiYgb2xkICYmIGNsc0ZvbGRlZC50ZXN0KG9sZC5jbGFzc05hbWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIG1hcmsgPSBtYXJrZXIob3B0cy5pbmRpY2F0b3JGb2xkZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBwb3MgPSBQb3MoY3VyLCAwKTtcbiAgICAgICAgICB2YXIgcmFuZ2UgPSBmdW5jICYmIGZ1bmMoY20sIHBvcyk7XG4gICAgICAgICAgaWYgKHJhbmdlICYmIHJhbmdlLnRvLmxpbmUgLSByYW5nZS5mcm9tLmxpbmUgPj0gbWluU2l6ZSkge1xuICAgICAgICAgICAgaWYgKGNsc09wZW4gJiYgb2xkICYmIGNsc09wZW4udGVzdChvbGQuY2xhc3NOYW1lKSlcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgbWFyayA9IG1hcmtlcihvcHRzLmluZGljYXRvck9wZW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1hcmsgJiYgIW9sZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNtLnNldEd1dHRlck1hcmtlcihsaW5lLCBvcHRzLmd1dHRlciwgbWFyayk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgX19uYW1lKHVwZGF0ZUZvbGRJbmZvLCBcInVwZGF0ZUZvbGRJbmZvXCIpO1xuICAgIGZ1bmN0aW9uIGNsYXNzVGVzdChjbHMpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnRXhwKFwiKF58XFxcXHMpXCIgKyBjbHMgKyBcIig/OiR8XFxcXHMpXFxcXHMqXCIpO1xuICAgIH1cbiAgICBfX25hbWUoY2xhc3NUZXN0LCBcImNsYXNzVGVzdFwiKTtcbiAgICBmdW5jdGlvbiB1cGRhdGVJblZpZXdwb3J0KGNtKSB7XG4gICAgICB2YXIgdnAgPSBjbS5nZXRWaWV3cG9ydCgpLCBzdGF0ZSA9IGNtLnN0YXRlLmZvbGRHdXR0ZXI7XG4gICAgICBpZiAoIXN0YXRlKVxuICAgICAgICByZXR1cm47XG4gICAgICBjbS5vcGVyYXRpb24oZnVuY3Rpb24oKSB7XG4gICAgICAgIHVwZGF0ZUZvbGRJbmZvKGNtLCB2cC5mcm9tLCB2cC50byk7XG4gICAgICB9KTtcbiAgICAgIHN0YXRlLmZyb20gPSB2cC5mcm9tO1xuICAgICAgc3RhdGUudG8gPSB2cC50bztcbiAgICB9XG4gICAgX19uYW1lKHVwZGF0ZUluVmlld3BvcnQsIFwidXBkYXRlSW5WaWV3cG9ydFwiKTtcbiAgICBmdW5jdGlvbiBvbkd1dHRlckNsaWNrKGNtLCBsaW5lLCBndXR0ZXIpIHtcbiAgICAgIHZhciBzdGF0ZSA9IGNtLnN0YXRlLmZvbGRHdXR0ZXI7XG4gICAgICBpZiAoIXN0YXRlKVxuICAgICAgICByZXR1cm47XG4gICAgICB2YXIgb3B0cyA9IHN0YXRlLm9wdGlvbnM7XG4gICAgICBpZiAoZ3V0dGVyICE9IG9wdHMuZ3V0dGVyKVxuICAgICAgICByZXR1cm47XG4gICAgICB2YXIgZm9sZGVkID0gaXNGb2xkZWQoY20sIGxpbmUpO1xuICAgICAgaWYgKGZvbGRlZClcbiAgICAgICAgZm9sZGVkLmNsZWFyKCk7XG4gICAgICBlbHNlXG4gICAgICAgIGNtLmZvbGRDb2RlKFBvcyhsaW5lLCAwKSwgb3B0cyk7XG4gICAgfVxuICAgIF9fbmFtZShvbkd1dHRlckNsaWNrLCBcIm9uR3V0dGVyQ2xpY2tcIik7XG4gICAgZnVuY3Rpb24gb25DaGFuZ2UoY20pIHtcbiAgICAgIHZhciBzdGF0ZSA9IGNtLnN0YXRlLmZvbGRHdXR0ZXI7XG4gICAgICBpZiAoIXN0YXRlKVxuICAgICAgICByZXR1cm47XG4gICAgICB2YXIgb3B0cyA9IHN0YXRlLm9wdGlvbnM7XG4gICAgICBzdGF0ZS5mcm9tID0gc3RhdGUudG8gPSAwO1xuICAgICAgY2xlYXJUaW1lb3V0KHN0YXRlLmNoYW5nZVVwZGF0ZSk7XG4gICAgICBzdGF0ZS5jaGFuZ2VVcGRhdGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICB1cGRhdGVJblZpZXdwb3J0KGNtKTtcbiAgICAgIH0sIG9wdHMuZm9sZE9uQ2hhbmdlVGltZVNwYW4gfHwgNjAwKTtcbiAgICB9XG4gICAgX19uYW1lKG9uQ2hhbmdlLCBcIm9uQ2hhbmdlXCIpO1xuICAgIGZ1bmN0aW9uIG9uVmlld3BvcnRDaGFuZ2UoY20pIHtcbiAgICAgIHZhciBzdGF0ZSA9IGNtLnN0YXRlLmZvbGRHdXR0ZXI7XG4gICAgICBpZiAoIXN0YXRlKVxuICAgICAgICByZXR1cm47XG4gICAgICB2YXIgb3B0cyA9IHN0YXRlLm9wdGlvbnM7XG4gICAgICBjbGVhclRpbWVvdXQoc3RhdGUuY2hhbmdlVXBkYXRlKTtcbiAgICAgIHN0YXRlLmNoYW5nZVVwZGF0ZSA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB2cCA9IGNtLmdldFZpZXdwb3J0KCk7XG4gICAgICAgIGlmIChzdGF0ZS5mcm9tID09IHN0YXRlLnRvIHx8IHZwLmZyb20gLSBzdGF0ZS50byA+IDIwIHx8IHN0YXRlLmZyb20gLSB2cC50byA+IDIwKSB7XG4gICAgICAgICAgdXBkYXRlSW5WaWV3cG9ydChjbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKHZwLmZyb20gPCBzdGF0ZS5mcm9tKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZUZvbGRJbmZvKGNtLCB2cC5mcm9tLCBzdGF0ZS5mcm9tKTtcbiAgICAgICAgICAgICAgc3RhdGUuZnJvbSA9IHZwLmZyb207XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodnAudG8gPiBzdGF0ZS50bykge1xuICAgICAgICAgICAgICB1cGRhdGVGb2xkSW5mbyhjbSwgc3RhdGUudG8sIHZwLnRvKTtcbiAgICAgICAgICAgICAgc3RhdGUudG8gPSB2cC50bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSwgb3B0cy51cGRhdGVWaWV3cG9ydFRpbWVTcGFuIHx8IDQwMCk7XG4gICAgfVxuICAgIF9fbmFtZShvblZpZXdwb3J0Q2hhbmdlLCBcIm9uVmlld3BvcnRDaGFuZ2VcIik7XG4gICAgZnVuY3Rpb24gb25Gb2xkKGNtLCBmcm9tKSB7XG4gICAgICB2YXIgc3RhdGUgPSBjbS5zdGF0ZS5mb2xkR3V0dGVyO1xuICAgICAgaWYgKCFzdGF0ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgdmFyIGxpbmUgPSBmcm9tLmxpbmU7XG4gICAgICBpZiAobGluZSA+PSBzdGF0ZS5mcm9tICYmIGxpbmUgPCBzdGF0ZS50bylcbiAgICAgICAgdXBkYXRlRm9sZEluZm8oY20sIGxpbmUsIGxpbmUgKyAxKTtcbiAgICB9XG4gICAgX19uYW1lKG9uRm9sZCwgXCJvbkZvbGRcIik7XG4gIH0pO1xufSkoKTtcbnZhciBmb2xkZ3V0dGVyID0gZm9sZGd1dHRlciQyLmV4cG9ydHM7XG52YXIgZm9sZGd1dHRlciQxID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5mcmVlemUoLyogQF9fUFVSRV9fICovIF9tZXJnZU5hbWVzcGFjZXMoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiBcIk1vZHVsZVwiLFxuICBcImRlZmF1bHRcIjogZm9sZGd1dHRlclxufSwgW2ZvbGRndXR0ZXIkMi5leHBvcnRzXSkpO1xuZXhwb3J0IHsgZm9sZGd1dHRlciQxIGFzIGYgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/foldgutter.es.js\n");
|
2516 |
|
2517 | }),
|
2518 |
|
2519 | "../../graphiql-react/dist/forEachState.es.js":
|
2520 |
|
2521 |
|
2522 |
|
2523 |
|
2524 | (function(module, exports, __webpack_require__) {
|
2525 |
|
2526 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.f = forEachState;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function forEachState(stack, fn) {\n const reverseStateStack = [];\n let state = stack;\n\n while (state === null || state === void 0 ? void 0 : state.kind) {\n reverseStateStack.push(state);\n state = state.prevState;\n }\n\n for (let i = reverseStateStack.length - 1; i >= 0; i--) {\n fn(reverseStateStack[i]);\n }\n }\n\n __name(forEachState, \"forEachState\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9mb3JFYWNoU3RhdGUuZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9wYWNrYWdlcy9ncmFwaGlxbC1yZWFjdC9kaXN0L2ZvckVhY2hTdGF0ZS5lcy5qcz83YzAyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lID0gKHRhcmdldCwgdmFsdWUpID0+IF9fZGVmUHJvcCh0YXJnZXQsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG5mdW5jdGlvbiBmb3JFYWNoU3RhdGUoc3RhY2ssIGZuKSB7XG4gIGNvbnN0IHJldmVyc2VTdGF0ZVN0YWNrID0gW107XG4gIGxldCBzdGF0ZSA9IHN0YWNrO1xuICB3aGlsZSAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmtpbmQpIHtcbiAgICByZXZlcnNlU3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcbiAgICBzdGF0ZSA9IHN0YXRlLnByZXZTdGF0ZTtcbiAgfVxuICBmb3IgKGxldCBpID0gcmV2ZXJzZVN0YXRlU3RhY2subGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBmbihyZXZlcnNlU3RhdGVTdGFja1tpXSk7XG4gIH1cbn1cbl9fbmFtZShmb3JFYWNoU3RhdGUsIFwiZm9yRWFjaFN0YXRlXCIpO1xuZXhwb3J0IHsgZm9yRWFjaFN0YXRlIGFzIGYgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/forEachState.es.js\n");
|
2527 |
|
2528 | }),
|
2529 |
|
2530 | "../../graphiql-react/dist/graphiql-react.es.js":
|
2531 |
|
2532 |
|
2533 |
|
2534 |
|
2535 | (function(module, exports, __webpack_require__) {
|
2536 |
|
2537 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _indexEs, _graphql, _react, _reactDom) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(_exports, \"EditorContext\", {\n enumerable: true,\n get: function () {\n return _indexEs.E;\n }\n });\n Object.defineProperty(_exports, \"EditorContextProvider\", {\n enumerable: true,\n get: function () {\n return _indexEs.a;\n }\n });\n Object.defineProperty(_exports, \"ExecutionContext\", {\n enumerable: true,\n get: function () {\n return _indexEs.q;\n }\n });\n Object.defineProperty(_exports, \"ExecutionContextProvider\", {\n enumerable: true,\n get: function () {\n return _indexEs.r;\n }\n });\n Object.defineProperty(_exports, \"ExplorerContext\", {\n enumerable: true,\n get: function () {\n return _indexEs.v;\n }\n });\n Object.defineProperty(_exports, \"ExplorerContextProvider\", {\n enumerable: true,\n get: function () {\n return _indexEs.w;\n }\n });\n Object.defineProperty(_exports, \"HistoryContext\", {\n enumerable: true,\n get: function () {\n return _indexEs.H;\n }\n });\n Object.defineProperty(_exports, \"HistoryContextProvider\", {\n enumerable: true,\n get: function () {\n return _indexEs.y;\n }\n });\n Object.defineProperty(_exports, \"ImagePreview\", {\n enumerable: true,\n get: function () {\n return _indexEs.b;\n }\n });\n Object.defineProperty(_exports, \"SchemaContext\", {\n enumerable: true,\n get: function () {\n return _indexEs.S;\n }\n });\n Object.defineProperty(_exports, \"SchemaContextProvider\", {\n enumerable: true,\n get: function () {\n return _indexEs.B;\n }\n });\n Object.defineProperty(_exports, \"StorageContext\", {\n enumerable: true,\n get: function () {\n return _indexEs.F;\n }\n });\n Object.defineProperty(_exports, \"StorageContextProvider\", {\n enumerable: true,\n get: function () {\n return _indexEs.G;\n }\n });\n Object.defineProperty(_exports, \"onHasCompletion\", {\n enumerable: true,\n get: function () {\n return _indexEs.d;\n }\n });\n Object.defineProperty(_exports, \"useAutoCompleteLeafs\", {\n enumerable: true,\n get: function () {\n return _indexEs.u;\n }\n });\n Object.defineProperty(_exports, \"useCopyQuery\", {\n enumerable: true,\n get: function () {\n return _indexEs.e;\n }\n });\n Object.defineProperty(_exports, \"useDragResize\", {\n enumerable: true,\n get: function () {\n return _indexEs.K;\n }\n });\n Object.defineProperty(_exports, \"useEditorContext\", {\n enumerable: true,\n get: function () {\n return _indexEs.f;\n }\n });\n Object.defineProperty(_exports, \"useExecutionContext\", {\n enumerable: true,\n get: function () {\n return _indexEs.s;\n }\n });\n Object.defineProperty(_exports, \"useExplorerContext\", {\n enumerable: true,\n get: function () {\n return _indexEs.x;\n }\n });\n Object.defineProperty(_exports, \"useHeaderEditor\", {\n enumerable: true,\n get: function () {\n return _indexEs.g;\n }\n });\n Object.defineProperty(_exports, \"useHistoryContext\", {\n enumerable: true,\n get: function () {\n return _indexEs.z;\n }\n });\n Object.defineProperty(_exports, \"useMergeQuery\", {\n enumerable: true,\n get: function () {\n return _indexEs.h;\n }\n });\n Object.defineProperty(_exports, \"usePrettifyEditors\", {\n enumerable: true,\n get: function () {\n return _indexEs.j;\n }\n });\n Object.defineProperty(_exports, \"useQueryEditor\", {\n enumerable: true,\n get: function () {\n return _indexEs.k;\n }\n });\n Object.defineProperty(_exports, \"useResponseEditor\", {\n enumerable: true,\n get: function () {\n return _indexEs.m;\n }\n });\n Object.defineProperty(_exports, \"useSchemaContext\", {\n enumerable: true,\n get: function () {\n return _indexEs.D;\n }\n });\n Object.defineProperty(_exports, \"useSelectHistoryItem\", {\n enumerable: true,\n get: function () {\n return _indexEs.A;\n }\n });\n Object.defineProperty(_exports, \"useStorageContext\", {\n enumerable: true,\n get: function () {\n return _indexEs.J;\n }\n });\n Object.defineProperty(_exports, \"useVariableEditor\", {\n enumerable: true,\n get: function () {\n return _indexEs.n;\n }\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9ncmFwaGlxbC1yZWFjdC5lcy5qcy5qcyIsInNvdXJjZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/graphiql-react.es.js\n");
|
2538 |
|
2539 | }),
|
2540 |
|
2541 | "../../graphiql-react/dist/hint.es.js":
|
2542 |
|
2543 |
|
2544 |
|
2545 |
|
2546 | (function(module, exports, __webpack_require__) {
|
2547 |
|
2548 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! ./show-hint.es.js */ \"../../graphiql-react/dist/show-hint.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\"), __webpack_require__(/*! ./Range.es.js */ \"../../graphiql-react/dist/Range.es.js\"), __webpack_require__(/*! ./onlineParser.es.js */ \"../../graphiql-react/dist/onlineParser.es.js\"), __webpack_require__(/*! ./introspection.es.js */ \"../../graphiql-react/dist/introspection.es.js\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_codemirrorEs, _showHintEs, _graphql, _indexEs, _RangeEs, _onlineParserEs, _introspectionEs, _react, _reactDom) {\n \"use strict\";\n\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function getDefinitionState(tokenState) {\n let definitionState;\n forEachState(tokenState, state => {\n switch (state.kind) {\n case \"Query\":\n case \"ShortQuery\":\n case \"Mutation\":\n case \"Subscription\":\n case \"FragmentDefinition\":\n definitionState = state;\n break;\n }\n });\n return definitionState;\n }\n\n __name(getDefinitionState, \"getDefinitionState\");\n\n function getFieldDef(schema, type, fieldName) {\n if (fieldName === _introspectionEs.S.name && schema.getQueryType() === type) {\n return _introspectionEs.S;\n }\n\n if (fieldName === _introspectionEs.T.name && schema.getQueryType() === type) {\n return _introspectionEs.T;\n }\n\n if (fieldName === _introspectionEs.a.name && (0, _graphql.isCompositeType)(type)) {\n return _introspectionEs.a;\n }\n\n if (\"getFields\" in type) {\n return type.getFields()[fieldName];\n }\n\n return null;\n }\n\n __name(getFieldDef, \"getFieldDef\");\n\n function forEachState(stack, fn) {\n const reverseStateStack = [];\n let state = stack;\n\n while (state === null || state === void 0 ? void 0 : state.kind) {\n reverseStateStack.push(state);\n state = state.prevState;\n }\n\n for (let i = reverseStateStack.length - 1; i >= 0; i--) {\n fn(reverseStateStack[i]);\n }\n }\n\n __name(forEachState, \"forEachState\");\n\n function objectValues(object) {\n const keys = Object.keys(object);\n const len = keys.length;\n const values = new Array(len);\n\n for (let i = 0; i < len; ++i) {\n values[i] = object[keys[i]];\n }\n\n return values;\n }\n\n __name(objectValues, \"objectValues\");\n\n function hintList(token, list) {\n return filterAndSortList(list, normalizeText(token.string));\n }\n\n __name(hintList, \"hintList\");\n\n function filterAndSortList(list, text) {\n if (!text) {\n return filterNonEmpty(list, entry => !entry.isDeprecated);\n }\n\n const byProximity = list.map(entry => ({\n proximity: getProximity(normalizeText(entry.label), text),\n entry\n }));\n return filterNonEmpty(filterNonEmpty(byProximity, pair => pair.proximity <= 2), pair => !pair.entry.isDeprecated).sort((a, b) => (a.entry.isDeprecated ? 1 : 0) - (b.entry.isDeprecated ? 1 : 0) || a.proximity - b.proximity || a.entry.label.length - b.entry.label.length).map(pair => pair.entry);\n }\n\n __name(filterAndSortList, \"filterAndSortList\");\n\n function filterNonEmpty(array, predicate) {\n const filtered = array.filter(predicate);\n return filtered.length === 0 ? array : filtered;\n }\n\n __name(filterNonEmpty, \"filterNonEmpty\");\n\n function normalizeText(text) {\n return text.toLowerCase().replace(/\\W/g, \"\");\n }\n\n __name(normalizeText, \"normalizeText\");\n\n function getProximity(suggestion, text) {\n let proximity = lexicalDistance(text, suggestion);\n\n if (suggestion.length > text.length) {\n proximity -= suggestion.length - text.length - 1;\n proximity += suggestion.indexOf(text) === 0 ? 0 : 0.5;\n }\n\n return proximity;\n }\n\n __name(getProximity, \"getProximity\");\n\n function lexicalDistance(a, b) {\n let i;\n let j;\n const d = [];\n const aLength = a.length;\n const bLength = b.length;\n\n for (i = 0; i <= aLength; i++) {\n d[i] = [i];\n }\n\n for (j = 1; j <= bLength; j++) {\n d[0][j] = j;\n }\n\n for (i = 1; i <= aLength; i++) {\n for (j = 1; j <= bLength; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);\n\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);\n }\n }\n }\n\n return d[aLength][bLength];\n }\n\n __name(lexicalDistance, \"lexicalDistance\");\n\n const SuggestionCommand = {\n command: \"editor.action.triggerSuggest\",\n title: \"Suggestions\"\n };\n\n const collectFragmentDefs = /* @__PURE__ */__name(op => {\n const externalFragments = [];\n\n if (op) {\n try {\n (0, _graphql.visit)((0, _graphql.parse)(op), {\n FragmentDefinition(def) {\n externalFragments.push(def);\n }\n\n });\n } catch (_a) {\n return [];\n }\n }\n\n return externalFragments;\n }, \"collectFragmentDefs\");\n\n function getAutocompleteSuggestions(schema, queryText, cursor, contextToken, fragmentDefs, options) {\n var _a;\n\n const opts = Object.assign(Object.assign({}, options), {\n schema\n });\n const token = contextToken || getTokenAtPosition(queryText, cursor);\n const state = token.state.kind === \"Invalid\" ? token.state.prevState : token.state;\n\n if (!state) {\n return [];\n }\n\n const kind = state.kind;\n const step = state.step;\n const typeInfo = getTypeInfo(schema, token.state);\n\n if (kind === _indexEs.R.DOCUMENT) {\n return hintList(token, [{\n label: \"query\",\n kind: _indexEs.C.Function\n }, {\n label: \"mutation\",\n kind: _indexEs.C.Function\n }, {\n label: \"subscription\",\n kind: _indexEs.C.Function\n }, {\n label: \"fragment\",\n kind: _indexEs.C.Function\n }, {\n label: \"{\",\n kind: _indexEs.C.Constructor\n }]);\n }\n\n if (kind === _indexEs.R.IMPLEMENTS || kind === _indexEs.R.NAMED_TYPE && ((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) === _indexEs.R.IMPLEMENTS) {\n return getSuggestionsForImplements(token, state, schema, queryText, typeInfo);\n }\n\n if (kind === _indexEs.R.SELECTION_SET || kind === _indexEs.R.FIELD || kind === _indexEs.R.ALIASED_FIELD) {\n return getSuggestionsForFieldNames(token, typeInfo, opts);\n }\n\n if (kind === _indexEs.R.ARGUMENTS || kind === _indexEs.R.ARGUMENT && step === 0) {\n const argDefs = typeInfo.argDefs;\n\n if (argDefs) {\n return hintList(token, argDefs.map(argDef => {\n var _a2;\n\n return {\n label: argDef.name,\n insertText: argDef.name + \": \",\n command: SuggestionCommand,\n detail: String(argDef.type),\n documentation: (_a2 = argDef.description) !== null && _a2 !== void 0 ? _a2 : void 0,\n kind: _indexEs.C.Variable,\n type: argDef.type\n };\n }));\n }\n }\n\n if (kind === _indexEs.R.OBJECT_VALUE || kind === _indexEs.R.OBJECT_FIELD && step === 0) {\n if (typeInfo.objectFieldDefs) {\n const objectFields = objectValues(typeInfo.objectFieldDefs);\n const completionKind = kind === _indexEs.R.OBJECT_VALUE ? _indexEs.C.Value : _indexEs.C.Field;\n return hintList(token, objectFields.map(field => {\n var _a2;\n\n return {\n label: field.name,\n detail: String(field.type),\n documentation: (_a2 = field.description) !== null && _a2 !== void 0 ? _a2 : void 0,\n kind: completionKind,\n type: field.type\n };\n }));\n }\n }\n\n if (kind === _indexEs.R.ENUM_VALUE || kind === _indexEs.R.LIST_VALUE && step === 1 || kind === _indexEs.R.OBJECT_FIELD && step === 2 || kind === _indexEs.R.ARGUMENT && step === 2) {\n return getSuggestionsForInputValues(token, typeInfo, queryText, schema);\n }\n\n if (kind === _indexEs.R.VARIABLE && step === 1) {\n const namedInputType = (0, _graphql.getNamedType)(typeInfo.inputType);\n const variableDefinitions = getVariableCompletions(queryText, schema, token);\n return hintList(token, variableDefinitions.filter(v => v.detail === (namedInputType === null || namedInputType === void 0 ? void 0 : namedInputType.name)));\n }\n\n if (kind === _indexEs.R.TYPE_CONDITION && step === 1 || kind === _indexEs.R.NAMED_TYPE && state.prevState != null && state.prevState.kind === _indexEs.R.TYPE_CONDITION) {\n return getSuggestionsForFragmentTypeConditions(token, typeInfo, schema);\n }\n\n if (kind === _indexEs.R.FRAGMENT_SPREAD && step === 1) {\n return getSuggestionsForFragmentSpread(token, typeInfo, schema, queryText, Array.isArray(fragmentDefs) ? fragmentDefs : collectFragmentDefs(fragmentDefs));\n }\n\n if (kind === _indexEs.R.VARIABLE_DEFINITION && step === 2 || kind === _indexEs.R.LIST_TYPE && step === 1 || kind === _indexEs.R.NAMED_TYPE && state.prevState && (state.prevState.kind === _indexEs.R.VARIABLE_DEFINITION || state.prevState.kind === _indexEs.R.LIST_TYPE || state.prevState.kind === _indexEs.R.NON_NULL_TYPE)) {\n return getSuggestionsForVariableDefinition(token, schema);\n }\n\n if (kind === _indexEs.R.DIRECTIVE) {\n return getSuggestionsForDirective(token, state, schema);\n }\n\n return [];\n }\n\n __name(getAutocompleteSuggestions, \"getAutocompleteSuggestions\");\n\n const insertSuffix = ` {\n $1\n}`;\n\n const getInsertText = /* @__PURE__ */__name(field => {\n const type = field.type;\n\n if ((0, _graphql.isCompositeType)(type)) {\n return insertSuffix;\n }\n\n if ((0, _graphql.isListType)(type) && (0, _graphql.isCompositeType)(type.ofType)) {\n return insertSuffix;\n }\n\n if ((0, _graphql.isNonNullType)(type)) {\n if ((0, _graphql.isCompositeType)(type.ofType)) {\n return insertSuffix;\n }\n\n if ((0, _graphql.isListType)(type.ofType) && (0, _graphql.isCompositeType)(type.ofType.ofType)) {\n return insertSuffix;\n }\n }\n\n return null;\n }, \"getInsertText\");\n\n function getSuggestionsForFieldNames(token, typeInfo, options) {\n var _a;\n\n if (typeInfo.parentType) {\n const parentType = typeInfo.parentType;\n let fields = [];\n\n if (\"getFields\" in parentType) {\n fields = objectValues(parentType.getFields());\n }\n\n if ((0, _graphql.isCompositeType)(parentType)) {\n fields.push(_graphql.TypeNameMetaFieldDef);\n }\n\n if (parentType === ((_a = options === null || options === void 0 ? void 0 : options.schema) === null || _a === void 0 ? void 0 : _a.getQueryType())) {\n fields.push(_graphql.SchemaMetaFieldDef, _graphql.TypeMetaFieldDef);\n }\n\n return hintList(token, fields.map((field, index) => {\n var _a2;\n\n const suggestion = {\n sortText: String(index) + field.name,\n label: field.name,\n detail: String(field.type),\n documentation: (_a2 = field.description) !== null && _a2 !== void 0 ? _a2 : void 0,\n deprecated: Boolean(field.deprecationReason),\n isDeprecated: Boolean(field.deprecationReason),\n deprecationReason: field.deprecationReason,\n kind: _indexEs.C.Field,\n type: field.type\n };\n const insertText = getInsertText(field);\n\n if (insertText) {\n suggestion.insertText = field.name + insertText;\n suggestion.insertTextFormat = _indexEs.I.Snippet;\n suggestion.command = SuggestionCommand;\n }\n\n return suggestion;\n }));\n }\n\n return [];\n }\n\n __name(getSuggestionsForFieldNames, \"getSuggestionsForFieldNames\");\n\n function getSuggestionsForInputValues(token, typeInfo, queryText, schema) {\n const namedInputType = (0, _graphql.getNamedType)(typeInfo.inputType);\n const queryVariables = getVariableCompletions(queryText, schema, token).filter(v => v.detail === namedInputType.name);\n\n if (namedInputType instanceof _graphql.GraphQLEnumType) {\n const values = namedInputType.getValues();\n return hintList(token, values.map(value => {\n var _a;\n\n return {\n label: value.name,\n detail: String(namedInputType),\n documentation: (_a = value.description) !== null && _a !== void 0 ? _a : void 0,\n deprecated: Boolean(value.deprecationReason),\n isDeprecated: Boolean(value.deprecationReason),\n deprecationReason: value.deprecationReason,\n kind: _indexEs.C.EnumMember,\n type: namedInputType\n };\n }).concat(queryVariables));\n } else if (namedInputType === _graphql.GraphQLBoolean) {\n return hintList(token, queryVariables.concat([{\n label: \"true\",\n detail: String(_graphql.GraphQLBoolean),\n documentation: \"Not false.\",\n kind: _indexEs.C.Variable,\n type: _graphql.GraphQLBoolean\n }, {\n label: \"false\",\n detail: String(_graphql.GraphQLBoolean),\n documentation: \"Not true.\",\n kind: _indexEs.C.Variable,\n type: _graphql.GraphQLBoolean\n }]));\n }\n\n return queryVariables;\n }\n\n __name(getSuggestionsForInputValues, \"getSuggestionsForInputValues\");\n\n function getSuggestionsForImplements(token, tokenState, schema, documentText, typeInfo) {\n if (tokenState.needsSeparator) {\n return [];\n }\n\n const typeMap = schema.getTypeMap();\n const schemaInterfaces = objectValues(typeMap).filter(_graphql.isInterfaceType);\n const schemaInterfaceNames = schemaInterfaces.map(_ref => {\n let {\n name\n } = _ref;\n return name;\n });\n const inlineInterfaces = /* @__PURE__ */new Set();\n runOnlineParser(documentText, (_, state) => {\n var _a, _b, _c, _d, _e;\n\n if (state.name) {\n if (state.kind === _indexEs.R.INTERFACE_DEF && !schemaInterfaceNames.includes(state.name)) {\n inlineInterfaces.add(state.name);\n }\n\n if (state.kind === _indexEs.R.NAMED_TYPE && ((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) === _indexEs.R.IMPLEMENTS) {\n if (typeInfo.interfaceDef) {\n const existingType = (_b = typeInfo.interfaceDef) === null || _b === void 0 ? void 0 : _b.getInterfaces().find(_ref2 => {\n let {\n name\n } = _ref2;\n return name === state.name;\n });\n\n if (existingType) {\n return;\n }\n\n const type = schema.getType(state.name);\n const interfaceConfig = (_c = typeInfo.interfaceDef) === null || _c === void 0 ? void 0 : _c.toConfig();\n typeInfo.interfaceDef = new _graphql.GraphQLInterfaceType(Object.assign(Object.assign({}, interfaceConfig), {\n interfaces: [...interfaceConfig.interfaces, type || new _graphql.GraphQLInterfaceType({\n name: state.name,\n fields: {}\n })]\n }));\n } else if (typeInfo.objectTypeDef) {\n const existingType = (_d = typeInfo.objectTypeDef) === null || _d === void 0 ? void 0 : _d.getInterfaces().find(_ref3 => {\n let {\n name\n } = _ref3;\n return name === state.name;\n });\n\n if (existingType) {\n return;\n }\n\n const type = schema.getType(state.name);\n const objectTypeConfig = (_e = typeInfo.objectTypeDef) === null || _e === void 0 ? void 0 : _e.toConfig();\n typeInfo.objectTypeDef = new _graphql.GraphQLObjectType(Object.assign(Object.assign({}, objectTypeConfig), {\n interfaces: [...objectTypeConfig.interfaces, type || new _graphql.GraphQLInterfaceType({\n name: state.name,\n fields: {}\n })]\n }));\n }\n }\n }\n });\n const currentTypeToExtend = typeInfo.interfaceDef || typeInfo.objectTypeDef;\n const siblingInterfaces = (currentTypeToExtend === null || currentTypeToExtend === void 0 ? void 0 : currentTypeToExtend.getInterfaces()) || [];\n const siblingInterfaceNames = siblingInterfaces.map(_ref4 => {\n let {\n name\n } = _ref4;\n return name;\n });\n const possibleInterfaces = schemaInterfaces.concat([...inlineInterfaces].map(name => ({\n name\n }))).filter(_ref5 => {\n let {\n name\n } = _ref5;\n return name !== (currentTypeToExtend === null || currentTypeToExtend === void 0 ? void 0 : currentTypeToExtend.name) && !siblingInterfaceNames.includes(name);\n });\n return hintList(token, possibleInterfaces.map(type => {\n const result = {\n label: type.name,\n kind: _indexEs.C.Interface,\n type\n };\n\n if (type === null || type === void 0 ? void 0 : type.description) {\n result.documentation = type.description;\n }\n\n return result;\n }));\n }\n\n __name(getSuggestionsForImplements, \"getSuggestionsForImplements\");\n\n function getSuggestionsForFragmentTypeConditions(token, typeInfo, schema, _kind) {\n let possibleTypes;\n\n if (typeInfo.parentType) {\n if ((0, _graphql.isAbstractType)(typeInfo.parentType)) {\n const abstractType = (0, _graphql.assertAbstractType)(typeInfo.parentType);\n const possibleObjTypes = schema.getPossibleTypes(abstractType);\n const possibleIfaceMap = /* @__PURE__ */Object.create(null);\n possibleObjTypes.forEach(type => {\n type.getInterfaces().forEach(iface => {\n possibleIfaceMap[iface.name] = iface;\n });\n });\n possibleTypes = possibleObjTypes.concat(objectValues(possibleIfaceMap));\n } else {\n possibleTypes = [typeInfo.parentType];\n }\n } else {\n const typeMap = schema.getTypeMap();\n possibleTypes = objectValues(typeMap).filter(_graphql.isCompositeType);\n }\n\n return hintList(token, possibleTypes.map(type => {\n const namedType = (0, _graphql.getNamedType)(type);\n return {\n label: String(type),\n documentation: (namedType === null || namedType === void 0 ? void 0 : namedType.description) || \"\",\n kind: _indexEs.C.Field\n };\n }));\n }\n\n __name(getSuggestionsForFragmentTypeConditions, \"getSuggestionsForFragmentTypeConditions\");\n\n function getSuggestionsForFragmentSpread(token, typeInfo, schema, queryText, fragmentDefs) {\n if (!queryText) {\n return [];\n }\n\n const typeMap = schema.getTypeMap();\n const defState = getDefinitionState(token.state);\n const fragments = getFragmentDefinitions(queryText);\n\n if (fragmentDefs && fragmentDefs.length > 0) {\n fragments.push(...fragmentDefs);\n }\n\n const relevantFrags = fragments.filter(frag => typeMap[frag.typeCondition.name.value] && !(defState && defState.kind === _indexEs.R.FRAGMENT_DEFINITION && defState.name === frag.name.value) && (0, _graphql.isCompositeType)(typeInfo.parentType) && (0, _graphql.isCompositeType)(typeMap[frag.typeCondition.name.value]) && (0, _graphql.doTypesOverlap)(schema, typeInfo.parentType, typeMap[frag.typeCondition.name.value]));\n return hintList(token, relevantFrags.map(frag => ({\n label: frag.name.value,\n detail: String(typeMap[frag.typeCondition.name.value]),\n documentation: `fragment ${frag.name.value} on ${frag.typeCondition.name.value}`,\n kind: _indexEs.C.Field,\n type: typeMap[frag.typeCondition.name.value]\n })));\n }\n\n __name(getSuggestionsForFragmentSpread, \"getSuggestionsForFragmentSpread\");\n\n const getParentDefinition = /* @__PURE__ */__name((state, kind) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n\n if (((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) === kind) {\n return state.prevState;\n }\n\n if (((_c = (_b = state.prevState) === null || _b === void 0 ? void 0 : _b.prevState) === null || _c === void 0 ? void 0 : _c.kind) === kind) {\n return state.prevState.prevState;\n }\n\n if (((_f = (_e = (_d = state.prevState) === null || _d === void 0 ? void 0 : _d.prevState) === null || _e === void 0 ? void 0 : _e.prevState) === null || _f === void 0 ? void 0 : _f.kind) === kind) {\n return state.prevState.prevState.prevState;\n }\n\n if (((_k = (_j = (_h = (_g = state.prevState) === null || _g === void 0 ? void 0 : _g.prevState) === null || _h === void 0 ? void 0 : _h.prevState) === null || _j === void 0 ? void 0 : _j.prevState) === null || _k === void 0 ? void 0 : _k.kind) === kind) {\n return state.prevState.prevState.prevState.prevState;\n }\n }, \"getParentDefinition\");\n\n function getVariableCompletions(queryText, schema, token) {\n let variableName = null;\n let variableType;\n const definitions = /* @__PURE__ */Object.create({});\n runOnlineParser(queryText, (_, state) => {\n if ((state === null || state === void 0 ? void 0 : state.kind) === _indexEs.R.VARIABLE && state.name) {\n variableName = state.name;\n }\n\n if ((state === null || state === void 0 ? void 0 : state.kind) === _indexEs.R.NAMED_TYPE && variableName) {\n const parentDefinition = getParentDefinition(state, _indexEs.R.TYPE);\n\n if (parentDefinition === null || parentDefinition === void 0 ? void 0 : parentDefinition.type) {\n variableType = schema.getType(parentDefinition === null || parentDefinition === void 0 ? void 0 : parentDefinition.type);\n }\n }\n\n if (variableName && variableType) {\n if (!definitions[variableName]) {\n definitions[variableName] = {\n detail: variableType.toString(),\n insertText: token.string === \"$\" ? variableName : \"$\" + variableName,\n label: variableName,\n type: variableType,\n kind: _indexEs.C.Variable\n };\n variableName = null;\n variableType = null;\n }\n }\n });\n return objectValues(definitions);\n }\n\n __name(getVariableCompletions, \"getVariableCompletions\");\n\n function getFragmentDefinitions(queryText) {\n const fragmentDefs = [];\n runOnlineParser(queryText, (_, state) => {\n if (state.kind === _indexEs.R.FRAGMENT_DEFINITION && state.name && state.type) {\n fragmentDefs.push({\n kind: _indexEs.R.FRAGMENT_DEFINITION,\n name: {\n kind: _graphql.Kind.NAME,\n value: state.name\n },\n selectionSet: {\n kind: _indexEs.R.SELECTION_SET,\n selections: []\n },\n typeCondition: {\n kind: _indexEs.R.NAMED_TYPE,\n name: {\n kind: _graphql.Kind.NAME,\n value: state.type\n }\n }\n });\n }\n });\n return fragmentDefs;\n }\n\n __name(getFragmentDefinitions, \"getFragmentDefinitions\");\n\n function getSuggestionsForVariableDefinition(token, schema, _kind) {\n const inputTypeMap = schema.getTypeMap();\n const inputTypes = objectValues(inputTypeMap).filter(_graphql.isInputType);\n return hintList(token, inputTypes.map(type => ({\n label: type.name,\n documentation: type.description,\n kind: _indexEs.C.Variable\n })));\n }\n\n __name(getSuggestionsForVariableDefinition, \"getSuggestionsForVariableDefinition\");\n\n function getSuggestionsForDirective(token, state, schema, _kind) {\n var _a;\n\n if ((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) {\n const directives = schema.getDirectives().filter(directive => canUseDirective(state.prevState, directive));\n return hintList(token, directives.map(directive => ({\n label: directive.name,\n documentation: directive.description || \"\",\n kind: _indexEs.C.Function\n })));\n }\n\n return [];\n }\n\n __name(getSuggestionsForDirective, \"getSuggestionsForDirective\");\n\n function getTokenAtPosition(queryText, cursor) {\n let styleAtCursor = null;\n let stateAtCursor = null;\n let stringAtCursor = null;\n const token = runOnlineParser(queryText, (stream, state, style, index) => {\n if (index === cursor.line) {\n if (stream.getCurrentPosition() >= cursor.character) {\n styleAtCursor = style;\n stateAtCursor = Object.assign({}, state);\n stringAtCursor = stream.current();\n return \"BREAK\";\n }\n }\n });\n return {\n start: token.start,\n end: token.end,\n string: stringAtCursor || token.string,\n state: stateAtCursor || token.state,\n style: styleAtCursor || token.style\n };\n }\n\n __name(getTokenAtPosition, \"getTokenAtPosition\");\n\n function runOnlineParser(queryText, callback) {\n const lines = queryText.split(\"\\n\");\n const parser = (0, _onlineParserEs.o)();\n let state = parser.startState();\n let style = \"\";\n let stream = new _RangeEs.C(\"\");\n\n for (let i = 0; i < lines.length; i++) {\n stream = new _RangeEs.C(lines[i]);\n\n while (!stream.eol()) {\n style = parser.token(stream, state);\n const code = callback(stream, state, style, i);\n\n if (code === \"BREAK\") {\n break;\n }\n }\n\n callback(stream, state, style, i);\n\n if (!state.kind) {\n state = parser.startState();\n }\n }\n\n return {\n start: stream.getStartOfToken(),\n end: stream.getCurrentPosition(),\n string: stream.current(),\n state,\n style\n };\n }\n\n __name(runOnlineParser, \"runOnlineParser\");\n\n function canUseDirective(state, directive) {\n var _a;\n\n if (!state || !state.kind) {\n return false;\n }\n\n const kind = state.kind;\n const locations = directive.locations;\n\n switch (kind) {\n case _indexEs.R.QUERY:\n return locations.indexOf(_graphql.DirectiveLocation.QUERY) !== -1;\n\n case _indexEs.R.MUTATION:\n return locations.indexOf(_graphql.DirectiveLocation.MUTATION) !== -1;\n\n case _indexEs.R.SUBSCRIPTION:\n return locations.indexOf(_graphql.DirectiveLocation.SUBSCRIPTION) !== -1;\n\n case _indexEs.R.FIELD:\n case _indexEs.R.ALIASED_FIELD:\n return locations.indexOf(_graphql.DirectiveLocation.FIELD) !== -1;\n\n case _indexEs.R.FRAGMENT_DEFINITION:\n return locations.indexOf(_graphql.DirectiveLocation.FRAGMENT_DEFINITION) !== -1;\n\n case _indexEs.R.FRAGMENT_SPREAD:\n return locations.indexOf(_graphql.DirectiveLocation.FRAGMENT_SPREAD) !== -1;\n\n case _indexEs.R.INLINE_FRAGMENT:\n return locations.indexOf(_graphql.DirectiveLocation.INLINE_FRAGMENT) !== -1;\n\n case _indexEs.R.SCHEMA_DEF:\n return locations.indexOf(_graphql.DirectiveLocation.SCHEMA) !== -1;\n\n case _indexEs.R.SCALAR_DEF:\n return locations.indexOf(_graphql.DirectiveLocation.SCALAR) !== -1;\n\n case _indexEs.R.OBJECT_TYPE_DEF:\n return locations.indexOf(_graphql.DirectiveLocation.OBJECT) !== -1;\n\n case _indexEs.R.FIELD_DEF:\n return locations.indexOf(_graphql.DirectiveLocation.FIELD_DEFINITION) !== -1;\n\n case _indexEs.R.INTERFACE_DEF:\n return locations.indexOf(_graphql.DirectiveLocation.INTERFACE) !== -1;\n\n case _indexEs.R.UNION_DEF:\n return locations.indexOf(_graphql.DirectiveLocation.UNION) !== -1;\n\n case _indexEs.R.ENUM_DEF:\n return locations.indexOf(_graphql.DirectiveLocation.ENUM) !== -1;\n\n case _indexEs.R.ENUM_VALUE:\n return locations.indexOf(_graphql.DirectiveLocation.ENUM_VALUE) !== -1;\n\n case _indexEs.R.INPUT_DEF:\n return locations.indexOf(_graphql.DirectiveLocation.INPUT_OBJECT) !== -1;\n\n case _indexEs.R.INPUT_VALUE_DEF:\n const prevStateKind = (_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind;\n\n switch (prevStateKind) {\n case _indexEs.R.ARGUMENTS_DEF:\n return locations.indexOf(_graphql.DirectiveLocation.ARGUMENT_DEFINITION) !== -1;\n\n case _indexEs.R.INPUT_DEF:\n return locations.indexOf(_graphql.DirectiveLocation.INPUT_FIELD_DEFINITION) !== -1;\n }\n\n }\n\n return false;\n }\n\n __name(canUseDirective, \"canUseDirective\");\n\n function getTypeInfo(schema, tokenState) {\n let argDef;\n let argDefs;\n let directiveDef;\n let enumValue;\n let fieldDef;\n let inputType;\n let objectTypeDef;\n let objectFieldDefs;\n let parentType;\n let type;\n let interfaceDef;\n forEachState(tokenState, state => {\n var _a;\n\n switch (state.kind) {\n case _indexEs.R.QUERY:\n case \"ShortQuery\":\n type = schema.getQueryType();\n break;\n\n case _indexEs.R.MUTATION:\n type = schema.getMutationType();\n break;\n\n case _indexEs.R.SUBSCRIPTION:\n type = schema.getSubscriptionType();\n break;\n\n case _indexEs.R.INLINE_FRAGMENT:\n case _indexEs.R.FRAGMENT_DEFINITION:\n if (state.type) {\n type = schema.getType(state.type);\n }\n\n break;\n\n case _indexEs.R.FIELD:\n case _indexEs.R.ALIASED_FIELD:\n {\n if (!type || !state.name) {\n fieldDef = null;\n } else {\n fieldDef = parentType ? getFieldDef(schema, parentType, state.name) : null;\n type = fieldDef ? fieldDef.type : null;\n }\n\n break;\n }\n\n case _indexEs.R.SELECTION_SET:\n parentType = (0, _graphql.getNamedType)(type);\n break;\n\n case _indexEs.R.DIRECTIVE:\n directiveDef = state.name ? schema.getDirective(state.name) : null;\n break;\n\n case _indexEs.R.INTERFACE_DEF:\n if (state.name) {\n objectTypeDef = null;\n interfaceDef = new _graphql.GraphQLInterfaceType({\n name: state.name,\n interfaces: [],\n fields: {}\n });\n }\n\n break;\n\n case _indexEs.R.OBJECT_TYPE_DEF:\n if (state.name) {\n interfaceDef = null;\n objectTypeDef = new _graphql.GraphQLObjectType({\n name: state.name,\n interfaces: [],\n fields: {}\n });\n }\n\n break;\n\n case _indexEs.R.ARGUMENTS:\n {\n if (!state.prevState) {\n argDefs = null;\n } else {\n switch (state.prevState.kind) {\n case _indexEs.R.FIELD:\n argDefs = fieldDef && fieldDef.args;\n break;\n\n case _indexEs.R.DIRECTIVE:\n argDefs = directiveDef && directiveDef.args;\n break;\n\n case _indexEs.R.ALIASED_FIELD:\n {\n const name = (_a = state.prevState) === null || _a === void 0 ? void 0 : _a.name;\n\n if (!name) {\n argDefs = null;\n break;\n }\n\n const field = parentType ? getFieldDef(schema, parentType, name) : null;\n\n if (!field) {\n argDefs = null;\n break;\n }\n\n argDefs = field.args;\n break;\n }\n\n default:\n argDefs = null;\n break;\n }\n }\n\n break;\n }\n\n case _indexEs.R.ARGUMENT:\n if (argDefs) {\n for (let i = 0; i < argDefs.length; i++) {\n if (argDefs[i].name === state.name) {\n argDef = argDefs[i];\n break;\n }\n }\n }\n\n inputType = argDef === null || argDef === void 0 ? void 0 : argDef.type;\n break;\n\n case _indexEs.R.ENUM_VALUE:\n const enumType = (0, _graphql.getNamedType)(inputType);\n enumValue = enumType instanceof _graphql.GraphQLEnumType ? enumType.getValues().find(val => val.value === state.name) : null;\n break;\n\n case _indexEs.R.LIST_VALUE:\n const nullableType = (0, _graphql.getNullableType)(inputType);\n inputType = nullableType instanceof _graphql.GraphQLList ? nullableType.ofType : null;\n break;\n\n case _indexEs.R.OBJECT_VALUE:\n const objectType = (0, _graphql.getNamedType)(inputType);\n objectFieldDefs = objectType instanceof _graphql.GraphQLInputObjectType ? objectType.getFields() : null;\n break;\n\n case _indexEs.R.OBJECT_FIELD:\n const objectField = state.name && objectFieldDefs ? objectFieldDefs[state.name] : null;\n inputType = objectField === null || objectField === void 0 ? void 0 : objectField.type;\n break;\n\n case _indexEs.R.NAMED_TYPE:\n if (state.name) {\n type = schema.getType(state.name);\n }\n\n break;\n }\n });\n return {\n argDef,\n argDefs,\n directiveDef,\n enumValue,\n fieldDef,\n inputType,\n objectFieldDefs,\n parentType,\n type,\n interfaceDef,\n objectTypeDef\n };\n }\n\n __name(getTypeInfo, \"getTypeInfo\");\n\n _codemirrorEs.C.registerHelper(\"hint\", \"graphql\", (editor, options) => {\n const schema = options.schema;\n\n if (!schema) {\n return;\n }\n\n const cur = editor.getCursor();\n const token = editor.getTokenAt(cur);\n const tokenStart = token.type !== null && /\"|\\w/.test(token.string[0]) ? token.start : token.end;\n const position = new _RangeEs.P(cur.line, tokenStart);\n const rawResults = getAutocompleteSuggestions(schema, editor.getValue(), position, token, options.externalFragments);\n const results = {\n list: rawResults.map(item => ({\n text: item.label,\n type: item.type,\n description: item.documentation,\n isDeprecated: item.isDeprecated,\n deprecationReason: item.deprecationReason\n })),\n from: {\n line: cur.line,\n ch: tokenStart\n },\n to: {\n line: cur.line,\n ch: token.end\n }\n };\n\n if ((results === null || results === void 0 ? void 0 : results.list) && results.list.length > 0) {\n results.from = _codemirrorEs.C.Pos(results.from.line, results.from.ch);\n results.to = _codemirrorEs.C.Pos(results.to.line, results.to.ch);\n\n _codemirrorEs.C.signal(editor, \"hasCompletion\", editor, results, token);\n }\n\n return results;\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9oaW50LmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9oaW50LmVzLmpzPzA3OWUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IEMgYXMgQ29kZU1pcnJvciB9IGZyb20gXCIuL2NvZGVtaXJyb3IuZXMuanNcIjtcbmltcG9ydCBcIi4vc2hvdy1oaW50LmVzLmpzXCI7XG5pbXBvcnQgeyBpc0NvbXBvc2l0ZVR5cGUsIGdldE5hbWVkVHlwZSwgVHlwZU5hbWVNZXRhRmllbGREZWYgYXMgVHlwZU5hbWVNZXRhRmllbGREZWYkMSwgU2NoZW1hTWV0YUZpZWxkRGVmIGFzIFNjaGVtYU1ldGFGaWVsZERlZiQxLCBUeXBlTWV0YUZpZWxkRGVmIGFzIFR5cGVNZXRhRmllbGREZWYkMSwgR3JhcGhRTEVudW1UeXBlLCBHcmFwaFFMQm9vbGVhbiwgaXNJbnRlcmZhY2VUeXBlLCBpc0Fic3RyYWN0VHlwZSwgYXNzZXJ0QWJzdHJhY3RUeXBlLCBkb1R5cGVzT3ZlcmxhcCwgaXNJbnB1dFR5cGUsIERpcmVjdGl2ZUxvY2F0aW9uLCB2aXNpdCwgcGFyc2UsIGlzTGlzdFR5cGUsIGlzTm9uTnVsbFR5cGUsIEdyYXBoUUxJbnRlcmZhY2VUeXBlLCBHcmFwaFFMT2JqZWN0VHlwZSwgS2luZCwgR3JhcGhRTElucHV0T2JqZWN0VHlwZSwgZ2V0TnVsbGFibGVUeXBlLCBHcmFwaFFMTGlzdCB9IGZyb20gXCJncmFwaHFsXCI7XG5pbXBvcnQgeyBSIGFzIFJ1bGVLaW5kcywgQyBhcyBDb21wbGV0aW9uSXRlbUtpbmQsIEkgYXMgSW5zZXJ0VGV4dEZvcm1hdCB9IGZyb20gXCIuL2luZGV4LmVzLmpzXCI7XG5pbXBvcnQgeyBDIGFzIENoYXJhY3RlclN0cmVhbSwgUCBhcyBQb3NpdGlvbiB9IGZyb20gXCIuL1JhbmdlLmVzLmpzXCI7XG5pbXBvcnQgeyBvIGFzIG9ubGluZVBhcnNlciB9IGZyb20gXCIuL29ubGluZVBhcnNlci5lcy5qc1wiO1xuaW1wb3J0IHsgUyBhcyBTY2hlbWFNZXRhRmllbGREZWYsIFQgYXMgVHlwZU1ldGFGaWVsZERlZiwgYSBhcyBUeXBlTmFtZU1ldGFGaWVsZERlZiB9IGZyb20gXCIuL2ludHJvc3BlY3Rpb24uZXMuanNcIjtcbmltcG9ydCBcInJlYWN0XCI7XG5pbXBvcnQgXCJyZWFjdC1kb21cIjtcbmZ1bmN0aW9uIGdldERlZmluaXRpb25TdGF0ZSh0b2tlblN0YXRlKSB7XG4gIGxldCBkZWZpbml0aW9uU3RhdGU7XG4gIGZvckVhY2hTdGF0ZSh0b2tlblN0YXRlLCAoc3RhdGUpID0+IHtcbiAgICBzd2l0Y2ggKHN0YXRlLmtpbmQpIHtcbiAgICAgIGNhc2UgXCJRdWVyeVwiOlxuICAgICAgY2FzZSBcIlNob3J0UXVlcnlcIjpcbiAgICAgIGNhc2UgXCJNdXRhdGlvblwiOlxuICAgICAgY2FzZSBcIlN1YnNjcmlwdGlvblwiOlxuICAgICAgY2FzZSBcIkZyYWdtZW50RGVmaW5pdGlvblwiOlxuICAgICAgICBkZWZpbml0aW9uU3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGRlZmluaXRpb25TdGF0ZTtcbn1cbl9fbmFtZShnZXREZWZpbml0aW9uU3RhdGUsIFwiZ2V0RGVmaW5pdGlvblN0YXRlXCIpO1xuZnVuY3Rpb24gZ2V0RmllbGREZWYoc2NoZW1hLCB0eXBlLCBmaWVsZE5hbWUpIHtcbiAgaWYgKGZpZWxkTmFtZSA9PT0gU2NoZW1hTWV0YUZpZWxkRGVmLm5hbWUgJiYgc2NoZW1hLmdldFF1ZXJ5VHlwZSgpID09PSB0eXBlKSB7XG4gICAgcmV0dXJuIFNjaGVtYU1ldGFGaWVsZERlZjtcbiAgfVxuICBpZiAoZmllbGROYW1lID09PSBUeXBlTWV0YUZpZWxkRGVmLm5hbWUgJiYgc2NoZW1hLmdldFF1ZXJ5VHlwZSgpID09PSB0eXBlKSB7XG4gICAgcmV0dXJuIFR5cGVNZXRhRmllbGREZWY7XG4gIH1cbiAgaWYgKGZpZWxkTmFtZSA9PT0gVHlwZU5hbWVNZXRhRmllbGREZWYubmFtZSAmJiBpc0NvbXBvc2l0ZVR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gVHlwZU5hbWVNZXRhRmllbGREZWY7XG4gIH1cbiAgaWYgKFwiZ2V0RmllbGRzXCIgaW4gdHlwZSkge1xuICAgIHJldHVybiB0eXBlLmdldEZpZWxkcygpW2ZpZWxkTmFtZV07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5fX25hbWUoZ2V0RmllbGREZWYsIFwiZ2V0RmllbGREZWZcIik7XG5mdW5jdGlvbiBmb3JFYWNoU3RhdGUoc3RhY2ssIGZuKSB7XG4gIGNvbnN0IHJldmVyc2VTdGF0ZVN0YWNrID0gW107XG4gIGxldCBzdGF0ZSA9IHN0YWNrO1xuICB3aGlsZSAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmtpbmQpIHtcbiAgICByZXZlcnNlU3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcbiAgICBzdGF0ZSA9IHN0YXRlLnByZXZTdGF0ZTtcbiAgfVxuICBmb3IgKGxldCBpID0gcmV2ZXJzZVN0YXRlU3RhY2subGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBmbihyZXZlcnNlU3RhdGVTdGFja1tpXSk7XG4gIH1cbn1cbl9fbmFtZShmb3JFYWNoU3RhdGUsIFwiZm9yRWFjaFN0YXRlXCIpO1xuZnVuY3Rpb24gb2JqZWN0VmFsdWVzKG9iamVjdCkge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcbiAgY29uc3QgbGVuID0ga2V5cy5sZW5ndGg7XG4gIGNvbnN0IHZhbHVlcyA9IG5ldyBBcnJheShsZW4pO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgdmFsdWVzW2ldID0gb2JqZWN0W2tleXNbaV1dO1xuICB9XG4gIHJldHVybiB2YWx1ZXM7XG59XG5fX25hbWUob2JqZWN0VmFsdWVzLCBcIm9iamVjdFZhbHVlc1wiKTtcbmZ1bmN0aW9uIGhpbnRMaXN0KHRva2VuLCBsaXN0KSB7XG4gIHJldHVybiBmaWx0ZXJBbmRTb3J0TGlzdChsaXN0LCBub3JtYWxpemVUZXh0KHRva2VuLnN0cmluZykpO1xufVxuX19uYW1lKGhpbnRMaXN0LCBcImhpbnRMaXN0XCIpO1xuZnVuY3Rpb24gZmlsdGVyQW5kU29ydExpc3QobGlzdCwgdGV4dCkge1xuICBpZiAoIXRleHQpIHtcbiAgICByZXR1cm4gZmlsdGVyTm9uRW1wdHkobGlzdCwgKGVudHJ5KSA9PiAhZW50cnkuaXNEZXByZWNhdGVkKTtcbiAgfVxuICBjb25zdCBieVByb3hpbWl0eSA9IGxpc3QubWFwKChlbnRyeSkgPT4gKHtcbiAgICBwcm94aW1pdHk6IGdldFByb3hpbWl0eShub3JtYWxpemVUZXh0KGVudHJ5LmxhYmVsKSwgdGV4dCksXG4gICAgZW50cnlcbiAgfSkpO1xuICByZXR1cm4gZmlsdGVyTm9uRW1wdHkoZmlsdGVyTm9uRW1wdHkoYnlQcm94aW1pdHksIChwYWlyKSA9PiBwYWlyLnByb3hpbWl0eSA8PSAyKSwgKHBhaXIpID0+ICFwYWlyLmVudHJ5LmlzRGVwcmVjYXRlZCkuc29ydCgoYSwgYikgPT4gKGEuZW50cnkuaXNEZXByZWNhdGVkID8gMSA6IDApIC0gKGIuZW50cnkuaXNEZXByZWNhdGVkID8gMSA6IDApIHx8IGEucHJveGltaXR5IC0gYi5wcm94aW1pdHkgfHwgYS5lbnRyeS5sYWJlbC5sZW5ndGggLSBiLmVudHJ5LmxhYmVsLmxlbmd0aCkubWFwKChwYWlyKSA9PiBwYWlyLmVudHJ5KTtcbn1cbl9fbmFtZShmaWx0ZXJBbmRTb3J0TGlzdCwgXCJmaWx0ZXJBbmRTb3J0TGlzdFwiKTtcbmZ1bmN0aW9uIGZpbHRlck5vbkVtcHR5KGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgY29uc3QgZmlsdGVyZWQgPSBhcnJheS5maWx0ZXIocHJlZGljYXRlKTtcbiAgcmV0dXJuIGZpbHRlcmVkLmxlbmd0aCA9PT0gMCA/IGFycmF5IDogZmlsdGVyZWQ7XG59XG5fX25hbWUoZmlsdGVyTm9uRW1wdHksIFwiZmlsdGVyTm9uRW1wdHlcIik7XG5mdW5jdGlvbiBub3JtYWxpemVUZXh0KHRleHQpIHtcbiAgcmV0dXJuIHRleHQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXFcvZywgXCJcIik7XG59XG5fX25hbWUobm9ybWFsaXplVGV4dCwgXCJub3JtYWxpemVUZXh0XCIpO1xuZnVuY3Rpb24gZ2V0UHJveGltaXR5KHN1Z2dlc3Rpb24sIHRleHQpIHtcbiAgbGV0IHByb3hpbWl0eSA9IGxleGljYWxEaXN0YW5jZSh0ZXh0LCBzdWdnZXN0aW9uKTtcbiAgaWYgKHN1Z2dlc3Rpb24ubGVuZ3RoID4gdGV4dC5sZW5ndGgpIHtcbiAgICBwcm94aW1pdHkgLT0gc3VnZ2VzdGlvbi5sZW5ndGggLSB0ZXh0Lmxlbmd0aCAtIDE7XG4gICAgcHJveGltaXR5ICs9IHN1Z2dlc3Rpb24uaW5kZXhPZih0ZXh0KSA9PT0gMCA/IDAgOiAwLjU7XG4gIH1cbiAgcmV0dXJuIHByb3hpbWl0eTtcbn1cbl9fbmFtZShnZXRQcm94aW1pdHksIFwiZ2V0UHJveGltaXR5XCIpO1xuZnVuY3Rpb24gbGV4aWNhbERpc3RhbmNlKGEsIGIpIHtcbiAgbGV0IGk7XG4gIGxldCBqO1xuICBjb25zdCBkID0gW107XG4gIGNvbnN0IGFMZW5ndGggPSBhLmxlbmd0aDtcbiAgY29uc3QgYkxlbmd0aCA9IGIubGVuZ3RoO1xuICBmb3IgKGkgPSAwOyBpIDw9IGFMZW5ndGg7IGkrKykge1xuICAgIGRbaV0gPSBbaV07XG4gIH1cbiAgZm9yIChqID0gMTsgaiA8PSBiTGVuZ3RoOyBqKyspIHtcbiAgICBkWzBdW2pdID0gajtcbiAgfVxuICBmb3IgKGkgPSAxOyBpIDw9IGFMZW5ndGg7IGkrKykge1xuICAgIGZvciAoaiA9IDE7IGogPD0gYkxlbmd0aDsgaisrKSB7XG4gICAgICBjb25zdCBjb3N0ID0gYVtpIC0gMV0gPT09IGJbaiAtIDFdID8gMCA6IDE7XG4gICAgICBkW2ldW2pdID0gTWF0aC5taW4oZFtpIC0gMV1bal0gKyAxLCBkW2ldW2ogLSAxXSArIDEsIGRbaSAtIDFdW2ogLSAxXSArIGNvc3QpO1xuICAgICAgaWYgKGkgPiAxICYmIGogPiAxICYmIGFbaSAtIDFdID09PSBiW2ogLSAyXSAmJiBhW2kgLSAyXSA9PT0gYltqIC0gMV0pIHtcbiAgICAgICAgZFtpXVtqXSA9IE1hdGgubWluKGRbaV1bal0sIGRbaSAtIDJdW2ogLSAyXSArIGNvc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZFthTGVuZ3RoXVtiTGVuZ3RoXTtcbn1cbl9fbmFtZShsZXhpY2FsRGlzdGFuY2UsIFwibGV4aWNhbERpc3RhbmNlXCIpO1xuY29uc3QgU3VnZ2VzdGlvbkNvbW1hbmQgPSB7XG4gIGNvbW1hbmQ6IFwiZWRpdG9yLmFjdGlvbi50cmlnZ2VyU3VnZ2VzdFwiLFxuICB0aXRsZTogXCJTdWdnZXN0aW9uc1wiXG59O1xuY29uc3QgY29sbGVjdEZyYWdtZW50RGVmcyA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKG9wKSA9PiB7XG4gIGNvbnN0IGV4dGVybmFsRnJhZ21lbnRzID0gW107XG4gIGlmIChvcCkge1xuICAgIHRyeSB7XG4gICAgICB2aXNpdChwYXJzZShvcCksIHtcbiAgICAgICAgRnJhZ21lbnREZWZpbml0aW9uKGRlZikge1xuICAgICAgICAgIGV4dGVybmFsRnJhZ21lbnRzLnB1c2goZGVmKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoX2EpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGV4dGVybmFsRnJhZ21lbnRzO1xufSwgXCJjb2xsZWN0RnJhZ21lbnREZWZzXCIpO1xuZnVuY3Rpb24gZ2V0QXV0b2NvbXBsZXRlU3VnZ2VzdGlvbnMoc2NoZW1hLCBxdWVyeVRleHQsIGN1cnNvciwgY29udGV4dFRva2VuLCBmcmFnbWVudERlZnMsIG9wdGlvbnMpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBvcHRzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKSwgeyBzY2hlbWEgfSk7XG4gIGNvbnN0IHRva2VuID0gY29udGV4dFRva2VuIHx8IGdldFRva2VuQXRQb3NpdGlvbihxdWVyeVRleHQsIGN1cnNvcik7XG4gIGNvbnN0IHN0YXRlID0gdG9rZW4uc3RhdGUua2luZCA9PT0gXCJJbnZhbGlkXCIgPyB0b2tlbi5zdGF0ZS5wcmV2U3RhdGUgOiB0b2tlbi5zdGF0ZTtcbiAgaWYgKCFzdGF0ZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBraW5kID0gc3RhdGUua2luZDtcbiAgY29uc3Qgc3RlcCA9IHN0YXRlLnN0ZXA7XG4gIGNvbnN0IHR5cGVJbmZvID0gZ2V0VHlwZUluZm8oc2NoZW1hLCB0b2tlbi5zdGF0ZSk7XG4gIGlmIChraW5kID09PSBSdWxlS2luZHMuRE9DVU1FTlQpIHtcbiAgICByZXR1cm4gaGludExpc3QodG9rZW4sIFtcbiAgICAgIHsgbGFiZWw6IFwicXVlcnlcIiwga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLkZ1bmN0aW9uIH0sXG4gICAgICB7IGxhYmVsOiBcIm11dGF0aW9uXCIsIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5GdW5jdGlvbiB9LFxuICAgICAgeyBsYWJlbDogXCJzdWJzY3JpcHRpb25cIiwga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLkZ1bmN0aW9uIH0sXG4gICAgICB7IGxhYmVsOiBcImZyYWdtZW50XCIsIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5GdW5jdGlvbiB9LFxuICAgICAgeyBsYWJlbDogXCJ7XCIsIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5Db25zdHJ1Y3RvciB9XG4gICAgXSk7XG4gIH1cbiAgaWYgKGtpbmQgPT09IFJ1bGVLaW5kcy5JTVBMRU1FTlRTIHx8IGtpbmQgPT09IFJ1bGVLaW5kcy5OQU1FRF9UWVBFICYmICgoX2EgPSBzdGF0ZS5wcmV2U3RhdGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5raW5kKSA9PT0gUnVsZUtpbmRzLklNUExFTUVOVFMpIHtcbiAgICByZXR1cm4gZ2V0U3VnZ2VzdGlvbnNGb3JJbXBsZW1lbnRzKHRva2VuLCBzdGF0ZSwgc2NoZW1hLCBxdWVyeVRleHQsIHR5cGVJbmZvKTtcbiAgfVxuICBpZiAoa2luZCA9PT0gUnVsZUtpbmRzLlNFTEVDVElPTl9TRVQgfHwga2luZCA9PT0gUnVsZUtpbmRzLkZJRUxEIHx8IGtpbmQgPT09IFJ1bGVLaW5kcy5BTElBU0VEX0ZJRUxEKSB7XG4gICAgcmV0dXJuIGdldFN1Z2dlc3Rpb25zRm9yRmllbGROYW1lcyh0b2tlbiwgdHlwZUluZm8sIG9wdHMpO1xuICB9XG4gIGlmIChraW5kID09PSBSdWxlS2luZHMuQVJHVU1FTlRTIHx8IGtpbmQgPT09IFJ1bGVLaW5kcy5BUkdVTUVOVCAmJiBzdGVwID09PSAwKSB7XG4gICAgY29uc3QgYXJnRGVmcyA9IHR5cGVJbmZvLmFyZ0RlZnM7XG4gICAgaWYgKGFyZ0RlZnMpIHtcbiAgICAgIHJldHVybiBoaW50TGlzdCh0b2tlbiwgYXJnRGVmcy5tYXAoKGFyZ0RlZikgPT4ge1xuICAgICAgICB2YXIgX2EyO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxhYmVsOiBhcmdEZWYubmFtZSxcbiAgICAgICAgICBpbnNlcnRUZXh0OiBhcmdEZWYubmFtZSArIFwiOiBcIixcbiAgICAgICAgICBjb21tYW5kOiBTdWdnZXN0aW9uQ29tbWFuZCxcbiAgICAgICAgICBkZXRhaWw6IFN0cmluZyhhcmdEZWYudHlwZSksXG4gICAgICAgICAgZG9jdW1lbnRhdGlvbjogKF9hMiA9IGFyZ0RlZi5kZXNjcmlwdGlvbikgIT09IG51bGwgJiYgX2EyICE9PSB2b2lkIDAgPyBfYTIgOiB2b2lkIDAsXG4gICAgICAgICAga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLlZhcmlhYmxlLFxuICAgICAgICAgIHR5cGU6IGFyZ0RlZi50eXBlXG4gICAgICAgIH07XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG4gIGlmIChraW5kID09PSBSdWxlS2luZHMuT0JKRUNUX1ZBTFVFIHx8IGtpbmQgPT09IFJ1bGVLaW5kcy5PQkpFQ1RfRklFTEQgJiYgc3RlcCA9PT0gMCkge1xuICAgIGlmICh0eXBlSW5mby5vYmplY3RGaWVsZERlZnMpIHtcbiAgICAgIGNvbnN0IG9iamVjdEZpZWxkcyA9IG9iamVjdFZhbHVlcyh0eXBlSW5mby5vYmplY3RGaWVsZERlZnMpO1xuICAgICAgY29uc3QgY29tcGxldGlvbktpbmQgPSBraW5kID09PSBSdWxlS2luZHMuT0JKRUNUX1ZBTFVFID8gQ29tcGxldGlvbkl0ZW1LaW5kLlZhbHVlIDogQ29tcGxldGlvbkl0ZW1LaW5kLkZpZWxkO1xuICAgICAgcmV0dXJuIGhpbnRMaXN0KHRva2VuLCBvYmplY3RGaWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICB2YXIgX2EyO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxhYmVsOiBmaWVsZC5uYW1lLFxuICAgICAgICAgIGRldGFpbDogU3RyaW5nKGZpZWxkLnR5cGUpLFxuICAgICAgICAgIGRvY3VtZW50YXRpb246IChfYTIgPSBmaWVsZC5kZXNjcmlwdGlvbikgIT09IG51bGwgJiYgX2EyICE9PSB2b2lkIDAgPyBfYTIgOiB2b2lkIDAsXG4gICAgICAgICAga2luZDogY29tcGxldGlvbktpbmQsXG4gICAgICAgICAgdHlwZTogZmllbGQudHlwZVxuICAgICAgICB9O1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuICBpZiAoa2luZCA9PT0gUnVsZUtpbmRzLkVOVU1fVkFMVUUgfHwga2luZCA9PT0gUnVsZUtpbmRzLkxJU1RfVkFMVUUgJiYgc3RlcCA9PT0gMSB8fCBraW5kID09PSBSdWxlS2luZHMuT0JKRUNUX0ZJRUxEICYmIHN0ZXAgPT09IDIgfHwga2luZCA9PT0gUnVsZUtpbmRzLkFSR1VNRU5UICYmIHN0ZXAgPT09IDIpIHtcbiAgICByZXR1cm4gZ2V0U3VnZ2VzdGlvbnNGb3JJbnB1dFZhbHVlcyh0b2tlbiwgdHlwZUluZm8sIHF1ZXJ5VGV4dCwgc2NoZW1hKTtcbiAgfVxuICBpZiAoa2luZCA9PT0gUnVsZUtpbmRzLlZBUklBQkxFICYmIHN0ZXAgPT09IDEpIHtcbiAgICBjb25zdCBuYW1lZElucHV0VHlwZSA9IGdldE5hbWVkVHlwZSh0eXBlSW5mby5pbnB1dFR5cGUpO1xuICAgIGNvbnN0IHZhcmlhYmxlRGVmaW5pdGlvbnMgPSBnZXRWYXJpYWJsZUNvbXBsZXRpb25zKHF1ZXJ5VGV4dCwgc2NoZW1hLCB0b2tlbik7XG4gICAgcmV0dXJuIGhpbnRMaXN0KHRva2VuLCB2YXJpYWJsZURlZmluaXRpb25zLmZpbHRlcigodikgPT4gdi5kZXRhaWwgPT09IChuYW1lZElucHV0VHlwZSA9PT0gbnVsbCB8fCBuYW1lZElucHV0VHlwZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbmFtZWRJbnB1dFR5cGUubmFtZSkpKTtcbiAgfVxuICBpZiAoa2luZCA9PT0gUnVsZUtpbmRzLlRZUEVfQ09ORElUSU9OICYmIHN0ZXAgPT09IDEgfHwga2luZCA9PT0gUnVsZUtpbmRzLk5BTUVEX1RZUEUgJiYgc3RhdGUucHJldlN0YXRlICE9IG51bGwgJiYgc3RhdGUucHJldlN0YXRlLmtpbmQgPT09IFJ1bGVLaW5kcy5UWVBFX0NPTkRJVElPTikge1xuICAgIHJldHVybiBnZXRTdWdnZXN0aW9uc0ZvckZyYWdtZW50VHlwZUNvbmRpdGlvbnModG9rZW4sIHR5cGVJbmZvLCBzY2hlbWEpO1xuICB9XG4gIGlmIChraW5kID09PSBSdWxlS2luZHMuRlJBR01FTlRfU1BSRUFEICYmIHN0ZXAgPT09IDEpIHtcbiAgICByZXR1cm4gZ2V0U3VnZ2VzdGlvbnNGb3JGcmFnbWVudFNwcmVhZCh0b2tlbiwgdHlwZUluZm8sIHNjaGVtYSwgcXVlcnlUZXh0LCBBcnJheS5pc0FycmF5KGZyYWdtZW50RGVmcykgPyBmcmFnbWVudERlZnMgOiBjb2xsZWN0RnJhZ21lbnREZWZzKGZyYWdtZW50RGVmcykpO1xuICB9XG4gIGlmIChraW5kID09PSBSdWxlS2luZHMuVkFSSUFCTEVfREVGSU5JVElPTiAmJiBzdGVwID09PSAyIHx8IGtpbmQgPT09IFJ1bGVLaW5kcy5MSVNUX1RZUEUgJiYgc3RlcCA9PT0gMSB8fCBraW5kID09PSBSdWxlS2luZHMuTkFNRURfVFlQRSAmJiBzdGF0ZS5wcmV2U3RhdGUgJiYgKHN0YXRlLnByZXZTdGF0ZS5raW5kID09PSBSdWxlS2luZHMuVkFSSUFCTEVfREVGSU5JVElPTiB8fCBzdGF0ZS5wcmV2U3RhdGUua2luZCA9PT0gUnVsZUtpbmRzLkxJU1RfVFlQRSB8fCBzdGF0ZS5wcmV2U3RhdGUua2luZCA9PT0gUnVsZUtpbmRzLk5PTl9OVUxMX1RZUEUpKSB7XG4gICAgcmV0dXJuIGdldFN1Z2dlc3Rpb25zRm9yVmFyaWFibGVEZWZpbml0aW9uKHRva2VuLCBzY2hlbWEpO1xuICB9XG4gIGlmIChraW5kID09PSBSdWxlS2luZHMuRElSRUNUSVZFKSB7XG4gICAgcmV0dXJuIGdldFN1Z2dlc3Rpb25zRm9yRGlyZWN0aXZlKHRva2VuLCBzdGF0ZSwgc2NoZW1hKTtcbiAgfVxuICByZXR1cm4gW107XG59XG5fX25hbWUoZ2V0QXV0b2NvbXBsZXRlU3VnZ2VzdGlvbnMsIFwiZ2V0QXV0b2NvbXBsZXRlU3VnZ2VzdGlvbnNcIik7XG5jb25zdCBpbnNlcnRTdWZmaXggPSBgIHtcbiAgJDFcbn1gO1xuY29uc3QgZ2V0SW5zZXJ0VGV4dCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKGZpZWxkKSA9PiB7XG4gIGNvbnN0IHR5cGUgPSBmaWVsZC50eXBlO1xuICBpZiAoaXNDb21wb3NpdGVUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIGluc2VydFN1ZmZpeDtcbiAgfVxuICBpZiAoaXNMaXN0VHlwZSh0eXBlKSAmJiBpc0NvbXBvc2l0ZVR5cGUodHlwZS5vZlR5cGUpKSB7XG4gICAgcmV0dXJuIGluc2VydFN1ZmZpeDtcbiAgfVxuICBpZiAoaXNOb25OdWxsVHlwZSh0eXBlKSkge1xuICAgIGlmIChpc0NvbXBvc2l0ZVR5cGUodHlwZS5vZlR5cGUpKSB7XG4gICAgICByZXR1cm4gaW5zZXJ0U3VmZml4O1xuICAgIH1cbiAgICBpZiAoaXNMaXN0VHlwZSh0eXBlLm9mVHlwZSkgJiYgaXNDb21wb3NpdGVUeXBlKHR5cGUub2ZUeXBlLm9mVHlwZSkpIHtcbiAgICAgIHJldHVybiBpbnNlcnRTdWZmaXg7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufSwgXCJnZXRJbnNlcnRUZXh0XCIpO1xuZnVuY3Rpb24gZ2V0U3VnZ2VzdGlvbnNGb3JGaWVsZE5hbWVzKHRva2VuLCB0eXBlSW5mbywgb3B0aW9ucykge1xuICB2YXIgX2E7XG4gIGlmICh0eXBlSW5mby5wYXJlbnRUeXBlKSB7XG4gICAgY29uc3QgcGFyZW50VHlwZSA9IHR5cGVJbmZvLnBhcmVudFR5cGU7XG4gICAgbGV0IGZpZWxkcyA9IFtdO1xuICAgIGlmIChcImdldEZpZWxkc1wiIGluIHBhcmVudFR5cGUpIHtcbiAgICAgIGZpZWxkcyA9IG9iamVjdFZhbHVlcyhwYXJlbnRUeXBlLmdldEZpZWxkcygpKTtcbiAgICB9XG4gICAgaWYgKGlzQ29tcG9zaXRlVHlwZShwYXJlbnRUeXBlKSkge1xuICAgICAgZmllbGRzLnB1c2goVHlwZU5hbWVNZXRhRmllbGREZWYkMSk7XG4gICAgfVxuICAgIGlmIChwYXJlbnRUeXBlID09PSAoKF9hID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnNjaGVtYSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldFF1ZXJ5VHlwZSgpKSkge1xuICAgICAgZmllbGRzLnB1c2goU2NoZW1hTWV0YUZpZWxkRGVmJDEsIFR5cGVNZXRhRmllbGREZWYkMSk7XG4gICAgfVxuICAgIHJldHVybiBoaW50TGlzdCh0b2tlbiwgZmllbGRzLm1hcCgoZmllbGQsIGluZGV4KSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgY29uc3Qgc3VnZ2VzdGlvbiA9IHtcbiAgICAgICAgc29ydFRleHQ6IFN0cmluZyhpbmRleCkgKyBmaWVsZC5uYW1lLFxuICAgICAgICBsYWJlbDogZmllbGQubmFtZSxcbiAgICAgICAgZGV0YWlsOiBTdHJpbmcoZmllbGQudHlwZSksXG4gICAgICAgIGRvY3VtZW50YXRpb246IChfYTIgPSBmaWVsZC5kZXNjcmlwdGlvbikgIT09IG51bGwgJiYgX2EyICE9PSB2b2lkIDAgPyBfYTIgOiB2b2lkIDAsXG4gICAgICAgIGRlcHJlY2F0ZWQ6IEJvb2xlYW4oZmllbGQuZGVwcmVjYXRpb25SZWFzb24pLFxuICAgICAgICBpc0RlcHJlY2F0ZWQ6IEJvb2xlYW4oZmllbGQuZGVwcmVjYXRpb25SZWFzb24pLFxuICAgICAgICBkZXByZWNhdGlvblJlYXNvbjogZmllbGQuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgICAgIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5GaWVsZCxcbiAgICAgICAgdHlwZTogZmllbGQudHlwZVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGluc2VydFRleHQgPSBnZXRJbnNlcnRUZXh0KGZpZWxkKTtcbiAgICAgIGlmIChpbnNlcnRUZXh0KSB7XG4gICAgICAgIHN1Z2dlc3Rpb24uaW5zZXJ0VGV4dCA9IGZpZWxkLm5hbWUgKyBpbnNlcnRUZXh0O1xuICAgICAgICBzdWdnZXN0aW9uLmluc2VydFRleHRGb3JtYXQgPSBJbnNlcnRUZXh0Rm9ybWF0LlNuaXBwZXQ7XG4gICAgICAgIHN1Z2dlc3Rpb24uY29tbWFuZCA9IFN1Z2dlc3Rpb25Db21tYW5kO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN1Z2dlc3Rpb247XG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBbXTtcbn1cbl9fbmFtZShnZXRTdWdnZXN0aW9uc0ZvckZpZWxkTmFtZXMsIFwiZ2V0U3VnZ2VzdGlvbnNGb3JGaWVsZE5hbWVzXCIpO1xuZnVuY3Rpb24gZ2V0U3VnZ2VzdGlvbnNGb3JJbnB1dFZhbHVlcyh0b2tlbiwgdHlwZUluZm8sIHF1ZXJ5VGV4dCwgc2NoZW1hKSB7XG4gIGNvbnN0IG5hbWVkSW5wdXRUeXBlID0gZ2V0TmFtZWRUeXBlKHR5cGVJbmZvLmlucHV0VHlwZSk7XG4gIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0gZ2V0VmFyaWFibGVDb21wbGV0aW9ucyhxdWVyeVRleHQsIHNjaGVtYSwgdG9rZW4pLmZpbHRlcigodikgPT4gdi5kZXRhaWwgPT09IG5hbWVkSW5wdXRUeXBlLm5hbWUpO1xuICBpZiAobmFtZWRJbnB1dFR5cGUgaW5zdGFuY2VvZiBHcmFwaFFMRW51bVR5cGUpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBuYW1lZElucHV0VHlwZS5nZXRWYWx1ZXMoKTtcbiAgICByZXR1cm4gaGludExpc3QodG9rZW4sIHZhbHVlcy5tYXAoKHZhbHVlKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsYWJlbDogdmFsdWUubmFtZSxcbiAgICAgICAgZGV0YWlsOiBTdHJpbmcobmFtZWRJbnB1dFR5cGUpLFxuICAgICAgICBkb2N1bWVudGF0aW9uOiAoX2EgPSB2YWx1ZS5kZXNjcmlwdGlvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdm9pZCAwLFxuICAgICAgICBkZXByZWNhdGVkOiBCb29sZWFuKHZhbHVlLmRlcHJlY2F0aW9uUmVhc29uKSxcbiAgICAgICAgaXNEZXByZWNhdGVkOiBCb29sZWFuKHZhbHVlLmRlcHJlY2F0aW9uUmVhc29uKSxcbiAgICAgICAgZGVwcmVjYXRpb25SZWFzb246IHZhbHVlLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgICBraW5kOiBDb21wbGV0aW9uSXRlbUtpbmQuRW51bU1lbWJlcixcbiAgICAgICAgdHlwZTogbmFtZWRJbnB1dFR5cGVcbiAgICAgIH07XG4gICAgfSkuY29uY2F0KHF1ZXJ5VmFyaWFibGVzKSk7XG4gIH0gZWxzZSBpZiAobmFtZWRJbnB1dFR5cGUgPT09IEdyYXBoUUxCb29sZWFuKSB7XG4gICAgcmV0dXJuIGhpbnRMaXN0KHRva2VuLCBxdWVyeVZhcmlhYmxlcy5jb25jYXQoW1xuICAgICAge1xuICAgICAgICBsYWJlbDogXCJ0cnVlXCIsXG4gICAgICAgIGRldGFpbDogU3RyaW5nKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgICAgZG9jdW1lbnRhdGlvbjogXCJOb3QgZmFsc2UuXCIsXG4gICAgICAgIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5WYXJpYWJsZSxcbiAgICAgICAgdHlwZTogR3JhcGhRTEJvb2xlYW5cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiBcImZhbHNlXCIsXG4gICAgICAgIGRldGFpbDogU3RyaW5nKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgICAgZG9jdW1lbnRhdGlvbjogXCJOb3QgdHJ1ZS5cIixcbiAgICAgICAga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLlZhcmlhYmxlLFxuICAgICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhblxuICAgICAgfVxuICAgIF0pKTtcbiAgfVxuICByZXR1cm4gcXVlcnlWYXJpYWJsZXM7XG59XG5fX25hbWUoZ2V0U3VnZ2VzdGlvbnNGb3JJbnB1dFZhbHVlcywgXCJnZXRTdWdnZXN0aW9uc0ZvcklucHV0VmFsdWVzXCIpO1xuZnVuY3Rpb24gZ2V0U3VnZ2VzdGlvbnNGb3JJbXBsZW1lbnRzKHRva2VuLCB0b2tlblN0YXRlLCBzY2hlbWEsIGRvY3VtZW50VGV4dCwgdHlwZUluZm8pIHtcbiAgaWYgKHRva2VuU3RhdGUubmVlZHNTZXBhcmF0b3IpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgdHlwZU1hcCA9IHNjaGVtYS5nZXRUeXBlTWFwKCk7XG4gIGNvbnN0IHNjaGVtYUludGVyZmFjZXMgPSBvYmplY3RWYWx1ZXModHlwZU1hcCkuZmlsdGVyKGlzSW50ZXJmYWNlVHlwZSk7XG4gIGNvbnN0IHNjaGVtYUludGVyZmFjZU5hbWVzID0gc2NoZW1hSW50ZXJmYWNlcy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKTtcbiAgY29uc3QgaW5saW5lSW50ZXJmYWNlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIHJ1bk9ubGluZVBhcnNlcihkb2N1bWVudFRleHQsIChfLCBzdGF0ZSkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgaWYgKHN0YXRlLm5hbWUpIHtcbiAgICAgIGlmIChzdGF0ZS5raW5kID09PSBSdWxlS2luZHMuSU5URVJGQUNFX0RFRiAmJiAhc2NoZW1hSW50ZXJmYWNlTmFtZXMuaW5jbHVkZXMoc3RhdGUubmFtZSkpIHtcbiAgICAgICAgaW5saW5lSW50ZXJmYWNlcy5hZGQoc3RhdGUubmFtZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUua2luZCA9PT0gUnVsZUtpbmRzLk5BTUVEX1RZUEUgJiYgKChfYSA9IHN0YXRlLnByZXZTdGF0ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmtpbmQpID09PSBSdWxlS2luZHMuSU1QTEVNRU5UUykge1xuICAgICAgICBpZiAodHlwZUluZm8uaW50ZXJmYWNlRGVmKSB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdUeXBlID0gKF9iID0gdHlwZUluZm8uaW50ZXJmYWNlRGVmKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZ2V0SW50ZXJmYWNlcygpLmZpbmQoKHsgbmFtZSB9KSA9PiBuYW1lID09PSBzdGF0ZS5uYW1lKTtcbiAgICAgICAgICBpZiAoZXhpc3RpbmdUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHR5cGUgPSBzY2hlbWEuZ2V0VHlwZShzdGF0ZS5uYW1lKTtcbiAgICAgICAgICBjb25zdCBpbnRlcmZhY2VDb25maWcgPSAoX2MgPSB0eXBlSW5mby5pbnRlcmZhY2VEZWYpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50b0NvbmZpZygpO1xuICAgICAgICAgIHR5cGVJbmZvLmludGVyZmFjZURlZiA9IG5ldyBHcmFwaFFMSW50ZXJmYWNlVHlwZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGludGVyZmFjZUNvbmZpZyksIHsgaW50ZXJmYWNlczogW1xuICAgICAgICAgICAgLi4uaW50ZXJmYWNlQ29uZmlnLmludGVyZmFjZXMsXG4gICAgICAgICAgICB0eXBlIHx8IG5ldyBHcmFwaFFMSW50ZXJmYWNlVHlwZSh7IG5hbWU6IHN0YXRlLm5hbWUsIGZpZWxkczoge30gfSlcbiAgICAgICAgICBdIH0pKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlSW5mby5vYmplY3RUeXBlRGVmKSB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdUeXBlID0gKF9kID0gdHlwZUluZm8ub2JqZWN0VHlwZURlZikgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmdldEludGVyZmFjZXMoKS5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gc3RhdGUubmFtZSk7XG4gICAgICAgICAgaWYgKGV4aXN0aW5nVHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB0eXBlID0gc2NoZW1hLmdldFR5cGUoc3RhdGUubmFtZSk7XG4gICAgICAgICAgY29uc3Qgb2JqZWN0VHlwZUNvbmZpZyA9IChfZSA9IHR5cGVJbmZvLm9iamVjdFR5cGVEZWYpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS50b0NvbmZpZygpO1xuICAgICAgICAgIHR5cGVJbmZvLm9iamVjdFR5cGVEZWYgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvYmplY3RUeXBlQ29uZmlnKSwgeyBpbnRlcmZhY2VzOiBbXG4gICAgICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLmludGVyZmFjZXMsXG4gICAgICAgICAgICB0eXBlIHx8IG5ldyBHcmFwaFFMSW50ZXJmYWNlVHlwZSh7IG5hbWU6IHN0YXRlLm5hbWUsIGZpZWxkczoge30gfSlcbiAgICAgICAgICBdIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGN1cnJlbnRUeXBlVG9FeHRlbmQgPSB0eXBlSW5mby5pbnRlcmZhY2VEZWYgfHwgdHlwZUluZm8ub2JqZWN0VHlwZURlZjtcbiAgY29uc3Qgc2libGluZ0ludGVyZmFjZXMgPSAoY3VycmVudFR5cGVUb0V4dGVuZCA9PT0gbnVsbCB8fCBjdXJyZW50VHlwZVRvRXh0ZW5kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXJyZW50VHlwZVRvRXh0ZW5kLmdldEludGVyZmFjZXMoKSkgfHwgW107XG4gIGNvbnN0IHNpYmxpbmdJbnRlcmZhY2VOYW1lcyA9IHNpYmxpbmdJbnRlcmZhY2VzLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpO1xuICBjb25zdCBwb3NzaWJsZUludGVyZmFjZXMgPSBzY2hlbWFJbnRlcmZhY2VzLmNvbmNhdChbLi4uaW5saW5lSW50ZXJmYWNlc10ubWFwKChuYW1lKSA9PiAoeyBuYW1lIH0pKSkuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZSAhPT0gKGN1cnJlbnRUeXBlVG9FeHRlbmQgPT09IG51bGwgfHwgY3VycmVudFR5cGVUb0V4dGVuZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VycmVudFR5cGVUb0V4dGVuZC5uYW1lKSAmJiAhc2libGluZ0ludGVyZmFjZU5hbWVzLmluY2x1ZGVzKG5hbWUpKTtcbiAgcmV0dXJuIGhpbnRMaXN0KHRva2VuLCBwb3NzaWJsZUludGVyZmFjZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgbGFiZWw6IHR5cGUubmFtZSxcbiAgICAgIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5JbnRlcmZhY2UsXG4gICAgICB0eXBlXG4gICAgfTtcbiAgICBpZiAodHlwZSA9PT0gbnVsbCB8fCB0eXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0eXBlLmRlc2NyaXB0aW9uKSB7XG4gICAgICByZXN1bHQuZG9jdW1lbnRhdGlvbiA9IHR5cGUuZGVzY3JpcHRpb247XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pKTtcbn1cbl9fbmFtZShnZXRTdWdnZXN0aW9uc0ZvckltcGxlbWVudHMsIFwiZ2V0U3VnZ2VzdGlvbnNGb3JJbXBsZW1lbnRzXCIpO1xuZnVuY3Rpb24gZ2V0U3VnZ2VzdGlvbnNGb3JGcmFnbWVudFR5cGVDb25kaXRpb25zKHRva2VuLCB0eXBlSW5mbywgc2NoZW1hLCBfa2luZCkge1xuICBsZXQgcG9zc2libGVUeXBlcztcbiAgaWYgKHR5cGVJbmZvLnBhcmVudFR5cGUpIHtcbiAgICBpZiAoaXNBYnN0cmFjdFR5cGUodHlwZUluZm8ucGFyZW50VHlwZSkpIHtcbiAgICAgIGNvbnN0IGFic3RyYWN0VHlwZSA9IGFzc2VydEFic3RyYWN0VHlwZSh0eXBlSW5mby5wYXJlbnRUeXBlKTtcbiAgICAgIGNvbnN0IHBvc3NpYmxlT2JqVHlwZXMgPSBzY2hlbWEuZ2V0UG9zc2libGVUeXBlcyhhYnN0cmFjdFR5cGUpO1xuICAgICAgY29uc3QgcG9zc2libGVJZmFjZU1hcCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgcG9zc2libGVPYmpUeXBlcy5mb3JFYWNoKCh0eXBlKSA9PiB7XG4gICAgICAgIHR5cGUuZ2V0SW50ZXJmYWNlcygpLmZvckVhY2goKGlmYWNlKSA9PiB7XG4gICAgICAgICAgcG9zc2libGVJZmFjZU1hcFtpZmFjZS5uYW1lXSA9IGlmYWNlO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgcG9zc2libGVUeXBlcyA9IHBvc3NpYmxlT2JqVHlwZXMuY29uY2F0KG9iamVjdFZhbHVlcyhwb3NzaWJsZUlmYWNlTWFwKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvc3NpYmxlVHlwZXMgPSBbdHlwZUluZm8ucGFyZW50VHlwZV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHR5cGVNYXAgPSBzY2hlbWEuZ2V0VHlwZU1hcCgpO1xuICAgIHBvc3NpYmxlVHlwZXMgPSBvYmplY3RWYWx1ZXModHlwZU1hcCkuZmlsdGVyKGlzQ29tcG9zaXRlVHlwZSk7XG4gIH1cbiAgcmV0dXJuIGhpbnRMaXN0KHRva2VuLCBwb3NzaWJsZVR5cGVzLm1hcCgodHlwZSkgPT4ge1xuICAgIGNvbnN0IG5hbWVkVHlwZSA9IGdldE5hbWVkVHlwZSh0eXBlKTtcbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IFN0cmluZyh0eXBlKSxcbiAgICAgIGRvY3VtZW50YXRpb246IChuYW1lZFR5cGUgPT09IG51bGwgfHwgbmFtZWRUeXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBuYW1lZFR5cGUuZGVzY3JpcHRpb24pIHx8IFwiXCIsXG4gICAgICBraW5kOiBDb21wbGV0aW9uSXRlbUtpbmQuRmllbGRcbiAgICB9O1xuICB9KSk7XG59XG5fX25hbWUoZ2V0U3VnZ2VzdGlvbnNGb3JGcmFnbWVudFR5cGVDb25kaXRpb25zLCBcImdldFN1Z2dlc3Rpb25zRm9yRnJhZ21lbnRUeXBlQ29uZGl0aW9uc1wiKTtcbmZ1bmN0aW9uIGdldFN1Z2dlc3Rpb25zRm9yRnJhZ21lbnRTcHJlYWQodG9rZW4sIHR5cGVJbmZvLCBzY2hlbWEsIHF1ZXJ5VGV4dCwgZnJhZ21lbnREZWZzKSB7XG4gIGlmICghcXVlcnlUZXh0KSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IHR5cGVNYXAgPSBzY2hlbWEuZ2V0VHlwZU1hcCgpO1xuICBjb25zdCBkZWZTdGF0ZSA9IGdldERlZmluaXRpb25TdGF0ZSh0b2tlbi5zdGF0ZSk7XG4gIGNvbnN0IGZyYWdtZW50cyA9IGdldEZyYWdtZW50RGVmaW5pdGlvbnMocXVlcnlUZXh0KTtcbiAgaWYgKGZyYWdtZW50RGVmcyAmJiBmcmFnbWVudERlZnMubGVuZ3RoID4gMCkge1xuICAgIGZyYWdtZW50cy5wdXNoKC4uLmZyYWdtZW50RGVmcyk7XG4gIH1cbiAgY29uc3QgcmVsZXZhbnRGcmFncyA9IGZyYWdtZW50cy5maWx0ZXIoKGZyYWcpID0+IHR5cGVNYXBbZnJhZy50eXBlQ29uZGl0aW9uLm5hbWUudmFsdWVdICYmICEoZGVmU3RhdGUgJiYgZGVmU3RhdGUua2luZCA9PT0gUnVsZUtpbmRzLkZSQUdNRU5UX0RFRklOSVRJT04gJiYgZGVmU3RhdGUubmFtZSA9PT0gZnJhZy5uYW1lLnZhbHVlKSAmJiBpc0NvbXBvc2l0ZVR5cGUodHlwZUluZm8ucGFyZW50VHlwZSkgJiYgaXNDb21wb3NpdGVUeXBlKHR5cGVNYXBbZnJhZy50eXBlQ29uZGl0aW9uLm5hbWUudmFsdWVdKSAmJiBkb1R5cGVzT3ZlcmxhcChzY2hlbWEsIHR5cGVJbmZvLnBhcmVudFR5cGUsIHR5cGVNYXBbZnJhZy50eXBlQ29uZGl0aW9uLm5hbWUudmFsdWVdKSk7XG4gIHJldHVybiBoaW50TGlzdCh0b2tlbiwgcmVsZXZhbnRGcmFncy5tYXAoKGZyYWcpID0+ICh7XG4gICAgbGFiZWw6IGZyYWcubmFtZS52YWx1ZSxcbiAgICBkZXRhaWw6IFN0cmluZyh0eXBlTWFwW2ZyYWcudHlwZUNvbmRpdGlvbi5uYW1lLnZhbHVlXSksXG4gICAgZG9jdW1lbnRhdGlvbjogYGZyYWdtZW50ICR7ZnJhZy5uYW1lLnZhbHVlfSBvbiAke2ZyYWcudHlwZUNvbmRpdGlvbi5uYW1lLnZhbHVlfWAsXG4gICAga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLkZpZWxkLFxuICAgIHR5cGU6IHR5cGVNYXBbZnJhZy50eXBlQ29uZGl0aW9uLm5hbWUudmFsdWVdXG4gIH0pKSk7XG59XG5fX25hbWUoZ2V0U3VnZ2VzdGlvbnNGb3JGcmFnbWVudFNwcmVhZCwgXCJnZXRTdWdnZXN0aW9uc0ZvckZyYWdtZW50U3ByZWFkXCIpO1xuY29uc3QgZ2V0UGFyZW50RGVmaW5pdGlvbiA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKHN0YXRlLCBraW5kKSA9PiB7XG4gIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaztcbiAgaWYgKCgoX2EgPSBzdGF0ZS5wcmV2U3RhdGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5raW5kKSA9PT0ga2luZCkge1xuICAgIHJldHVybiBzdGF0ZS5wcmV2U3RhdGU7XG4gIH1cbiAgaWYgKCgoX2MgPSAoX2IgPSBzdGF0ZS5wcmV2U3RhdGUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wcmV2U3RhdGUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5raW5kKSA9PT0ga2luZCkge1xuICAgIHJldHVybiBzdGF0ZS5wcmV2U3RhdGUucHJldlN0YXRlO1xuICB9XG4gIGlmICgoKF9mID0gKF9lID0gKF9kID0gc3RhdGUucHJldlN0YXRlKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QucHJldlN0YXRlKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UucHJldlN0YXRlKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Yua2luZCkgPT09IGtpbmQpIHtcbiAgICByZXR1cm4gc3RhdGUucHJldlN0YXRlLnByZXZTdGF0ZS5wcmV2U3RhdGU7XG4gIH1cbiAgaWYgKCgoX2sgPSAoX2ogPSAoX2ggPSAoX2cgPSBzdGF0ZS5wcmV2U3RhdGUpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5wcmV2U3RhdGUpID09PSBudWxsIHx8IF9oID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaC5wcmV2U3RhdGUpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5wcmV2U3RhdGUpID09PSBudWxsIHx8IF9rID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfay5raW5kKSA9PT0ga2luZCkge1xuICAgIHJldHVybiBzdGF0ZS5wcmV2U3RhdGUucHJldlN0YXRlLnByZXZTdGF0ZS5wcmV2U3RhdGU7XG4gIH1cbn0sIFwiZ2V0UGFyZW50RGVmaW5pdGlvblwiKTtcbmZ1bmN0aW9uIGdldFZhcmlhYmxlQ29tcGxldGlvbnMocXVlcnlUZXh0LCBzY2hlbWEsIHRva2VuKSB7XG4gIGxldCB2YXJpYWJsZU5hbWUgPSBudWxsO1xuICBsZXQgdmFyaWFibGVUeXBlO1xuICBjb25zdCBkZWZpbml0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKHt9KTtcbiAgcnVuT25saW5lUGFyc2VyKHF1ZXJ5VGV4dCwgKF8sIHN0YXRlKSA9PiB7XG4gICAgaWYgKChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUua2luZCkgPT09IFJ1bGVLaW5kcy5WQVJJQUJMRSAmJiBzdGF0ZS5uYW1lKSB7XG4gICAgICB2YXJpYWJsZU5hbWUgPSBzdGF0ZS5uYW1lO1xuICAgIH1cbiAgICBpZiAoKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5raW5kKSA9PT0gUnVsZUtpbmRzLk5BTUVEX1RZUEUgJiYgdmFyaWFibGVOYW1lKSB7XG4gICAgICBjb25zdCBwYXJlbnREZWZpbml0aW9uID0gZ2V0UGFyZW50RGVmaW5pdGlvbihzdGF0ZSwgUnVsZUtpbmRzLlRZUEUpO1xuICAgICAgaWYgKHBhcmVudERlZmluaXRpb24gPT09IG51bGwgfHwgcGFyZW50RGVmaW5pdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFyZW50RGVmaW5pdGlvbi50eXBlKSB7XG4gICAgICAgIHZhcmlhYmxlVHlwZSA9IHNjaGVtYS5nZXRUeXBlKHBhcmVudERlZmluaXRpb24gPT09IG51bGwgfHwgcGFyZW50RGVmaW5pdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFyZW50RGVmaW5pdGlvbi50eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHZhcmlhYmxlTmFtZSAmJiB2YXJpYWJsZVR5cGUpIHtcbiAgICAgIGlmICghZGVmaW5pdGlvbnNbdmFyaWFibGVOYW1lXSkge1xuICAgICAgICBkZWZpbml0aW9uc1t2YXJpYWJsZU5hbWVdID0ge1xuICAgICAgICAgIGRldGFpbDogdmFyaWFibGVUeXBlLnRvU3RyaW5nKCksXG4gICAgICAgICAgaW5zZXJ0VGV4dDogdG9rZW4uc3RyaW5nID09PSBcIiRcIiA/IHZhcmlhYmxlTmFtZSA6IFwiJFwiICsgdmFyaWFibGVOYW1lLFxuICAgICAgICAgIGxhYmVsOiB2YXJpYWJsZU5hbWUsXG4gICAgICAgICAgdHlwZTogdmFyaWFibGVUeXBlLFxuICAgICAgICAgIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5WYXJpYWJsZVxuICAgICAgICB9O1xuICAgICAgICB2YXJpYWJsZU5hbWUgPSBudWxsO1xuICAgICAgICB2YXJpYWJsZVR5cGUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvYmplY3RWYWx1ZXMoZGVmaW5pdGlvbnMpO1xufVxuX19uYW1lKGdldFZhcmlhYmxlQ29tcGxldGlvbnMsIFwiZ2V0VmFyaWFibGVDb21wbGV0aW9uc1wiKTtcbmZ1bmN0aW9uIGdldEZyYWdtZW50RGVmaW5pdGlvbnMocXVlcnlUZXh0KSB7XG4gIGNvbnN0IGZyYWdtZW50RGVmcyA9IFtdO1xuICBydW5PbmxpbmVQYXJzZXIocXVlcnlUZXh0LCAoXywgc3RhdGUpID0+IHtcbiAgICBpZiAoc3RhdGUua2luZCA9PT0gUnVsZUtpbmRzLkZSQUdNRU5UX0RFRklOSVRJT04gJiYgc3RhdGUubmFtZSAmJiBzdGF0ZS50eXBlKSB7XG4gICAgICBmcmFnbWVudERlZnMucHVzaCh7XG4gICAgICAgIGtpbmQ6IFJ1bGVLaW5kcy5GUkFHTUVOVF9ERUZJTklUSU9OLFxuICAgICAgICBuYW1lOiB7XG4gICAgICAgICAga2luZDogS2luZC5OQU1FLFxuICAgICAgICAgIHZhbHVlOiBzdGF0ZS5uYW1lXG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdGlvblNldDoge1xuICAgICAgICAgIGtpbmQ6IFJ1bGVLaW5kcy5TRUxFQ1RJT05fU0VULFxuICAgICAgICAgIHNlbGVjdGlvbnM6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVDb25kaXRpb246IHtcbiAgICAgICAgICBraW5kOiBSdWxlS2luZHMuTkFNRURfVFlQRSxcbiAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICBraW5kOiBLaW5kLk5BTUUsXG4gICAgICAgICAgICB2YWx1ZTogc3RhdGUudHlwZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGZyYWdtZW50RGVmcztcbn1cbl9fbmFtZShnZXRGcmFnbWVudERlZmluaXRpb25zLCBcImdldEZyYWdtZW50RGVmaW5pdGlvbnNcIik7XG5mdW5jdGlvbiBnZXRTdWdnZXN0aW9uc0ZvclZhcmlhYmxlRGVmaW5pdGlvbih0b2tlbiwgc2NoZW1hLCBfa2luZCkge1xuICBjb25zdCBpbnB1dFR5cGVNYXAgPSBzY2hlbWEuZ2V0VHlwZU1hcCgpO1xuICBjb25zdCBpbnB1dFR5cGVzID0gb2JqZWN0VmFsdWVzKGlucHV0VHlwZU1hcCkuZmlsdGVyKGlzSW5wdXRUeXBlKTtcbiAgcmV0dXJuIGhpbnRMaXN0KHRva2VuLCBpbnB1dFR5cGVzLm1hcCgodHlwZSkgPT4gKHtcbiAgICBsYWJlbDogdHlwZS5uYW1lLFxuICAgIGRvY3VtZW50YXRpb246IHR5cGUuZGVzY3JpcHRpb24sXG4gICAga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLlZhcmlhYmxlXG4gIH0pKSk7XG59XG5fX25hbWUoZ2V0U3VnZ2VzdGlvbnNGb3JWYXJpYWJsZURlZmluaXRpb24sIFwiZ2V0U3VnZ2VzdGlvbnNGb3JWYXJpYWJsZURlZmluaXRpb25cIik7XG5mdW5jdGlvbiBnZXRTdWdnZXN0aW9uc0ZvckRpcmVjdGl2ZSh0b2tlbiwgc3RhdGUsIHNjaGVtYSwgX2tpbmQpIHtcbiAgdmFyIF9hO1xuICBpZiAoKF9hID0gc3RhdGUucHJldlN0YXRlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eua2luZCkge1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSBzY2hlbWEuZ2V0RGlyZWN0aXZlcygpLmZpbHRlcigoZGlyZWN0aXZlKSA9PiBjYW5Vc2VEaXJlY3RpdmUoc3RhdGUucHJldlN0YXRlLCBkaXJlY3RpdmUpKTtcbiAgICByZXR1cm4gaGludExpc3QodG9rZW4sIGRpcmVjdGl2ZXMubWFwKChkaXJlY3RpdmUpID0+ICh7XG4gICAgICBsYWJlbDogZGlyZWN0aXZlLm5hbWUsXG4gICAgICBkb2N1bWVudGF0aW9uOiBkaXJlY3RpdmUuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5GdW5jdGlvblxuICAgIH0pKSk7XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuX19uYW1lKGdldFN1Z2dlc3Rpb25zRm9yRGlyZWN0aXZlLCBcImdldFN1Z2dlc3Rpb25zRm9yRGlyZWN0aXZlXCIpO1xuZnVuY3Rpb24gZ2V0VG9rZW5BdFBvc2l0aW9uKHF1ZXJ5VGV4dCwgY3Vyc29yKSB7XG4gIGxldCBzdHlsZUF0Q3Vyc29yID0gbnVsbDtcbiAgbGV0IHN0YXRlQXRDdXJzb3IgPSBudWxsO1xuICBsZXQgc3RyaW5nQXRDdXJzb3IgPSBudWxsO1xuICBjb25zdCB0b2tlbiA9IHJ1bk9ubGluZVBhcnNlcihxdWVyeVRleHQsIChzdHJlYW0sIHN0YXRlLCBzdHlsZSwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPT09IGN1cnNvci5saW5lKSB7XG4gICAgICBpZiAoc3RyZWFtLmdldEN1cnJlbnRQb3NpdGlvbigpID49IGN1cnNvci5jaGFyYWN0ZXIpIHtcbiAgICAgICAgc3R5bGVBdEN1cnNvciA9IHN0eWxlO1xuICAgICAgICBzdGF0ZUF0Q3Vyc29yID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpO1xuICAgICAgICBzdHJpbmdBdEN1cnNvciA9IHN0cmVhbS5jdXJyZW50KCk7XG4gICAgICAgIHJldHVybiBcIkJSRUFLXCI7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydDogdG9rZW4uc3RhcnQsXG4gICAgZW5kOiB0b2tlbi5lbmQsXG4gICAgc3RyaW5nOiBzdHJpbmdBdEN1cnNvciB8fCB0b2tlbi5zdHJpbmcsXG4gICAgc3RhdGU6IHN0YXRlQXRDdXJzb3IgfHwgdG9rZW4uc3RhdGUsXG4gICAgc3R5bGU6IHN0eWxlQXRDdXJzb3IgfHwgdG9rZW4uc3R5bGVcbiAgfTtcbn1cbl9fbmFtZShnZXRUb2tlbkF0UG9zaXRpb24sIFwiZ2V0VG9rZW5BdFBvc2l0aW9uXCIpO1xuZnVuY3Rpb24gcnVuT25saW5lUGFyc2VyKHF1ZXJ5VGV4dCwgY2FsbGJhY2spIHtcbiAgY29uc3QgbGluZXMgPSBxdWVyeVRleHQuc3BsaXQoXCJcXG5cIik7XG4gIGNvbnN0IHBhcnNlciA9IG9ubGluZVBhcnNlcigpO1xuICBsZXQgc3RhdGUgPSBwYXJzZXIuc3RhcnRTdGF0ZSgpO1xuICBsZXQgc3R5bGUgPSBcIlwiO1xuICBsZXQgc3RyZWFtID0gbmV3IENoYXJhY3RlclN0cmVhbShcIlwiKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIHN0cmVhbSA9IG5ldyBDaGFyYWN0ZXJTdHJlYW0obGluZXNbaV0pO1xuICAgIHdoaWxlICghc3RyZWFtLmVvbCgpKSB7XG4gICAgICBzdHlsZSA9IHBhcnNlci50b2tlbihzdHJlYW0sIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvZGUgPSBjYWxsYmFjayhzdHJlYW0sIHN0YXRlLCBzdHlsZSwgaSk7XG4gICAgICBpZiAoY29kZSA9PT0gXCJCUkVBS1wiKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBjYWxsYmFjayhzdHJlYW0sIHN0YXRlLCBzdHlsZSwgaSk7XG4gICAgaWYgKCFzdGF0ZS5raW5kKSB7XG4gICAgICBzdGF0ZSA9IHBhcnNlci5zdGFydFN0YXRlKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IHN0cmVhbS5nZXRTdGFydE9mVG9rZW4oKSxcbiAgICBlbmQ6IHN0cmVhbS5nZXRDdXJyZW50UG9zaXRpb24oKSxcbiAgICBzdHJpbmc6IHN0cmVhbS5jdXJyZW50KCksXG4gICAgc3RhdGUsXG4gICAgc3R5bGVcbiAgfTtcbn1cbl9fbmFtZShydW5PbmxpbmVQYXJzZXIsIFwicnVuT25saW5lUGFyc2VyXCIpO1xuZnVuY3Rpb24gY2FuVXNlRGlyZWN0aXZlKHN0YXRlLCBkaXJlY3RpdmUpIHtcbiAgdmFyIF9hO1xuICBpZiAoIXN0YXRlIHx8ICFzdGF0ZS5raW5kKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGtpbmQgPSBzdGF0ZS5raW5kO1xuICBjb25zdCBsb2NhdGlvbnMgPSBkaXJlY3RpdmUubG9jYXRpb25zO1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIFJ1bGVLaW5kcy5RVUVSWTpcbiAgICAgIHJldHVybiBsb2NhdGlvbnMuaW5kZXhPZihEaXJlY3RpdmVMb2NhdGlvbi5RVUVSWSkgIT09IC0xO1xuICAgIGNhc2UgUnVsZUtpbmRzLk1VVEFUSU9OOlxuICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKERpcmVjdGl2ZUxvY2F0aW9uLk1VVEFUSU9OKSAhPT0gLTE7XG4gICAgY2FzZSBSdWxlS2luZHMuU1VCU0NSSVBUSU9OOlxuICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKERpcmVjdGl2ZUxvY2F0aW9uLlNVQlNDUklQVElPTikgIT09IC0xO1xuICAgIGNhc2UgUnVsZUtpbmRzLkZJRUxEOlxuICAgIGNhc2UgUnVsZUtpbmRzLkFMSUFTRURfRklFTEQ6XG4gICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoRGlyZWN0aXZlTG9jYXRpb24uRklFTEQpICE9PSAtMTtcbiAgICBjYXNlIFJ1bGVLaW5kcy5GUkFHTUVOVF9ERUZJTklUSU9OOlxuICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKERpcmVjdGl2ZUxvY2F0aW9uLkZSQUdNRU5UX0RFRklOSVRJT04pICE9PSAtMTtcbiAgICBjYXNlIFJ1bGVLaW5kcy5GUkFHTUVOVF9TUFJFQUQ6XG4gICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoRGlyZWN0aXZlTG9jYXRpb24uRlJBR01FTlRfU1BSRUFEKSAhPT0gLTE7XG4gICAgY2FzZSBSdWxlS2luZHMuSU5MSU5FX0ZSQUdNRU5UOlxuICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKERpcmVjdGl2ZUxvY2F0aW9uLklOTElORV9GUkFHTUVOVCkgIT09IC0xO1xuICAgIGNhc2UgUnVsZUtpbmRzLlNDSEVNQV9ERUY6XG4gICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoRGlyZWN0aXZlTG9jYXRpb24uU0NIRU1BKSAhPT0gLTE7XG4gICAgY2FzZSBSdWxlS2luZHMuU0NBTEFSX0RFRjpcbiAgICAgIHJldHVybiBsb2NhdGlvbnMuaW5kZXhPZihEaXJlY3RpdmVMb2NhdGlvbi5TQ0FMQVIpICE9PSAtMTtcbiAgICBjYXNlIFJ1bGVLaW5kcy5PQkpFQ1RfVFlQRV9ERUY6XG4gICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoRGlyZWN0aXZlTG9jYXRpb24uT0JKRUNUKSAhPT0gLTE7XG4gICAgY2FzZSBSdWxlS2luZHMuRklFTERfREVGOlxuICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKERpcmVjdGl2ZUxvY2F0aW9uLkZJRUxEX0RFRklOSVRJT04pICE9PSAtMTtcbiAgICBjYXNlIFJ1bGVLaW5kcy5JTlRFUkZBQ0VfREVGOlxuICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKERpcmVjdGl2ZUxvY2F0aW9uLklOVEVSRkFDRSkgIT09IC0xO1xuICAgIGNhc2UgUnVsZUtpbmRzLlVOSU9OX0RFRjpcbiAgICAgIHJldHVybiBsb2NhdGlvbnMuaW5kZXhPZihEaXJlY3RpdmVMb2NhdGlvbi5VTklPTikgIT09IC0xO1xuICAgIGNhc2UgUnVsZUtpbmRzLkVOVU1fREVGOlxuICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKERpcmVjdGl2ZUxvY2F0aW9uLkVOVU0pICE9PSAtMTtcbiAgICBjYXNlIFJ1bGVLaW5kcy5FTlVNX1ZBTFVFOlxuICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKERpcmVjdGl2ZUxvY2F0aW9uLkVOVU1fVkFMVUUpICE9PSAtMTtcbiAgICBjYXNlIFJ1bGVLaW5kcy5JTlBVVF9ERUY6XG4gICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoRGlyZWN0aXZlTG9jYXRpb24uSU5QVVRfT0JKRUNUKSAhPT0gLTE7XG4gICAgY2FzZSBSdWxlS2luZHMuSU5QVVRfVkFMVUVfREVGOlxuICAgICAgY29uc3QgcHJldlN0YXRlS2luZCA9IChfYSA9IHN0YXRlLnByZXZTdGF0ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmtpbmQ7XG4gICAgICBzd2l0Y2ggKHByZXZTdGF0ZUtpbmQpIHtcbiAgICAgICAgY2FzZSBSdWxlS2luZHMuQVJHVU1FTlRTX0RFRjpcbiAgICAgICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoRGlyZWN0aXZlTG9jYXRpb24uQVJHVU1FTlRfREVGSU5JVElPTikgIT09IC0xO1xuICAgICAgICBjYXNlIFJ1bGVLaW5kcy5JTlBVVF9ERUY6XG4gICAgICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKERpcmVjdGl2ZUxvY2F0aW9uLklOUFVUX0ZJRUxEX0RFRklOSVRJT04pICE9PSAtMTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5fX25hbWUoY2FuVXNlRGlyZWN0aXZlLCBcImNhblVzZURpcmVjdGl2ZVwiKTtcbmZ1bmN0aW9uIGdldFR5cGVJbmZvKHNjaGVtYSwgdG9rZW5TdGF0ZSkge1xuICBsZXQgYXJnRGVmO1xuICBsZXQgYXJnRGVmcztcbiAgbGV0IGRpcmVjdGl2ZURlZjtcbiAgbGV0IGVudW1WYWx1ZTtcbiAgbGV0IGZpZWxkRGVmO1xuICBsZXQgaW5wdXRUeXBlO1xuICBsZXQgb2JqZWN0VHlwZURlZjtcbiAgbGV0IG9iamVjdEZpZWxkRGVmcztcbiAgbGV0IHBhcmVudFR5cGU7XG4gIGxldCB0eXBlO1xuICBsZXQgaW50ZXJmYWNlRGVmO1xuICBmb3JFYWNoU3RhdGUodG9rZW5TdGF0ZSwgKHN0YXRlKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIHN3aXRjaCAoc3RhdGUua2luZCkge1xuICAgICAgY2FzZSBSdWxlS2luZHMuUVVFUlk6XG4gICAgICBjYXNlIFwiU2hvcnRRdWVyeVwiOlxuICAgICAgICB0eXBlID0gc2NoZW1hLmdldFF1ZXJ5VHlwZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUnVsZUtpbmRzLk1VVEFUSU9OOlxuICAgICAgICB0eXBlID0gc2NoZW1hLmdldE11dGF0aW9uVHlwZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUnVsZUtpbmRzLlNVQlNDUklQVElPTjpcbiAgICAgICAgdHlwZSA9IHNjaGVtYS5nZXRTdWJzY3JpcHRpb25UeXBlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSdWxlS2luZHMuSU5MSU5FX0ZSQUdNRU5UOlxuICAgICAgY2FzZSBSdWxlS2luZHMuRlJBR01FTlRfREVGSU5JVElPTjpcbiAgICAgICAgaWYgKHN0YXRlLnR5cGUpIHtcbiAgICAgICAgICB0eXBlID0gc2NoZW1hLmdldFR5cGUoc3RhdGUudHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFJ1bGVLaW5kcy5GSUVMRDpcbiAgICAgIGNhc2UgUnVsZUtpbmRzLkFMSUFTRURfRklFTEQ6IHtcbiAgICAgICAgaWYgKCF0eXBlIHx8ICFzdGF0ZS5uYW1lKSB7XG4gICAgICAgICAgZmllbGREZWYgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpZWxkRGVmID0gcGFyZW50VHlwZSA/IGdldEZpZWxkRGVmKHNjaGVtYSwgcGFyZW50VHlwZSwgc3RhdGUubmFtZSkgOiBudWxsO1xuICAgICAgICAgIHR5cGUgPSBmaWVsZERlZiA/IGZpZWxkRGVmLnR5cGUgOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBSdWxlS2luZHMuU0VMRUNUSU9OX1NFVDpcbiAgICAgICAgcGFyZW50VHlwZSA9IGdldE5hbWVkVHlwZSh0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFJ1bGVLaW5kcy5ESVJFQ1RJVkU6XG4gICAgICAgIGRpcmVjdGl2ZURlZiA9IHN0YXRlLm5hbWUgPyBzY2hlbWEuZ2V0RGlyZWN0aXZlKHN0YXRlLm5hbWUpIDogbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFJ1bGVLaW5kcy5JTlRFUkZBQ0VfREVGOlxuICAgICAgICBpZiAoc3RhdGUubmFtZSkge1xuICAgICAgICAgIG9iamVjdFR5cGVEZWYgPSBudWxsO1xuICAgICAgICAgIGludGVyZmFjZURlZiA9IG5ldyBHcmFwaFFMSW50ZXJmYWNlVHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBzdGF0ZS5uYW1lLFxuICAgICAgICAgICAgaW50ZXJmYWNlczogW10sXG4gICAgICAgICAgICBmaWVsZHM6IHt9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFJ1bGVLaW5kcy5PQkpFQ1RfVFlQRV9ERUY6XG4gICAgICAgIGlmIChzdGF0ZS5uYW1lKSB7XG4gICAgICAgICAgaW50ZXJmYWNlRGVmID0gbnVsbDtcbiAgICAgICAgICBvYmplY3RUeXBlRGVmID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgICAgICAgIG5hbWU6IHN0YXRlLm5hbWUsXG4gICAgICAgICAgICBpbnRlcmZhY2VzOiBbXSxcbiAgICAgICAgICAgIGZpZWxkczoge31cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUnVsZUtpbmRzLkFSR1VNRU5UUzoge1xuICAgICAgICBpZiAoIXN0YXRlLnByZXZTdGF0ZSkge1xuICAgICAgICAgIGFyZ0RlZnMgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN3aXRjaCAoc3RhdGUucHJldlN0YXRlLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgUnVsZUtpbmRzLkZJRUxEOlxuICAgICAgICAgICAgICBhcmdEZWZzID0gZmllbGREZWYgJiYgZmllbGREZWYuYXJncztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJ1bGVLaW5kcy5ESVJFQ1RJVkU6XG4gICAgICAgICAgICAgIGFyZ0RlZnMgPSBkaXJlY3RpdmVEZWYgJiYgZGlyZWN0aXZlRGVmLmFyZ3M7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBSdWxlS2luZHMuQUxJQVNFRF9GSUVMRDoge1xuICAgICAgICAgICAgICBjb25zdCBuYW1lID0gKF9hID0gc3RhdGUucHJldlN0YXRlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmFtZTtcbiAgICAgICAgICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgICAgICAgICAgYXJnRGVmcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBwYXJlbnRUeXBlID8gZ2V0RmllbGREZWYoc2NoZW1hLCBwYXJlbnRUeXBlLCBuYW1lKSA6IG51bGw7XG4gICAgICAgICAgICAgIGlmICghZmllbGQpIHtcbiAgICAgICAgICAgICAgICBhcmdEZWZzID0gbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhcmdEZWZzID0gZmllbGQuYXJncztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBhcmdEZWZzID0gbnVsbDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBSdWxlS2luZHMuQVJHVU1FTlQ6XG4gICAgICAgIGlmIChhcmdEZWZzKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdEZWZzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoYXJnRGVmc1tpXS5uYW1lID09PSBzdGF0ZS5uYW1lKSB7XG4gICAgICAgICAgICAgIGFyZ0RlZiA9IGFyZ0RlZnNbaV07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbnB1dFR5cGUgPSBhcmdEZWYgPT09IG51bGwgfHwgYXJnRGVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcmdEZWYudHlwZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFJ1bGVLaW5kcy5FTlVNX1ZBTFVFOlxuICAgICAgICBjb25zdCBlbnVtVHlwZSA9IGdldE5hbWVkVHlwZShpbnB1dFR5cGUpO1xuICAgICAgICBlbnVtVmFsdWUgPSBlbnVtVHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxFbnVtVHlwZSA/IGVudW1UeXBlLmdldFZhbHVlcygpLmZpbmQoKHZhbCkgPT4gdmFsLnZhbHVlID09PSBzdGF0ZS5uYW1lKSA6IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSdWxlS2luZHMuTElTVF9WQUxVRTpcbiAgICAgICAgY29uc3QgbnVsbGFibGVUeXBlID0gZ2V0TnVsbGFibGVUeXBlKGlucHV0VHlwZSk7XG4gICAgICAgIGlucHV0VHlwZSA9IG51bGxhYmxlVHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxMaXN0ID8gbnVsbGFibGVUeXBlLm9mVHlwZSA6IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSdWxlS2luZHMuT0JKRUNUX1ZBTFVFOlxuICAgICAgICBjb25zdCBvYmplY3RUeXBlID0gZ2V0TmFtZWRUeXBlKGlucHV0VHlwZSk7XG4gICAgICAgIG9iamVjdEZpZWxkRGVmcyA9IG9iamVjdFR5cGUgaW5zdGFuY2VvZiBHcmFwaFFMSW5wdXRPYmplY3RUeXBlID8gb2JqZWN0VHlwZS5nZXRGaWVsZHMoKSA6IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSdWxlS2luZHMuT0JKRUNUX0ZJRUxEOlxuICAgICAgICBjb25zdCBvYmplY3RGaWVsZCA9IHN0YXRlLm5hbWUgJiYgb2JqZWN0RmllbGREZWZzID8gb2JqZWN0RmllbGREZWZzW3N0YXRlLm5hbWVdIDogbnVsbDtcbiAgICAgICAgaW5wdXRUeXBlID0gb2JqZWN0RmllbGQgPT09IG51bGwgfHwgb2JqZWN0RmllbGQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9iamVjdEZpZWxkLnR5cGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSdWxlS2luZHMuTkFNRURfVFlQRTpcbiAgICAgICAgaWYgKHN0YXRlLm5hbWUpIHtcbiAgICAgICAgICB0eXBlID0gc2NoZW1hLmdldFR5cGUoc3RhdGUubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBhcmdEZWYsXG4gICAgYXJnRGVmcyxcbiAgICBkaXJlY3RpdmVEZWYsXG4gICAgZW51bVZhbHVlLFxuICAgIGZpZWxkRGVmLFxuICAgIGlucHV0VHlwZSxcbiAgICBvYmplY3RGaWVsZERlZnMsXG4gICAgcGFyZW50VHlwZSxcbiAgICB0eXBlLFxuICAgIGludGVyZmFjZURlZixcbiAgICBvYmplY3RUeXBlRGVmXG4gIH07XG59XG5fX25hbWUoZ2V0VHlwZUluZm8sIFwiZ2V0VHlwZUluZm9cIik7XG5Db2RlTWlycm9yLnJlZ2lzdGVySGVscGVyKFwiaGludFwiLCBcImdyYXBocWxcIiwgKGVkaXRvciwgb3B0aW9ucykgPT4ge1xuICBjb25zdCBzY2hlbWEgPSBvcHRpb25zLnNjaGVtYTtcbiAgaWYgKCFzY2hlbWEpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY3VyID0gZWRpdG9yLmdldEN1cnNvcigpO1xuICBjb25zdCB0b2tlbiA9IGVkaXRvci5nZXRUb2tlbkF0KGN1cik7XG4gIGNvbnN0IHRva2VuU3RhcnQgPSB0b2tlbi50eXBlICE9PSBudWxsICYmIC9cInxcXHcvLnRlc3QodG9rZW4uc3RyaW5nWzBdKSA/IHRva2VuLnN0YXJ0IDogdG9rZW4uZW5kO1xuICBjb25zdCBwb3NpdGlvbiA9IG5ldyBQb3NpdGlvbihjdXIubGluZSwgdG9rZW5TdGFydCk7XG4gIGNvbnN0IHJhd1Jlc3VsdHMgPSBnZXRBdXRvY29tcGxldGVTdWdnZXN0aW9ucyhzY2hlbWEsIGVkaXRvci5nZXRWYWx1ZSgpLCBwb3NpdGlvbiwgdG9rZW4sIG9wdGlvbnMuZXh0ZXJuYWxGcmFnbWVudHMpO1xuICBjb25zdCByZXN1bHRzID0ge1xuICAgIGxpc3Q6IHJhd1Jlc3VsdHMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgdGV4dDogaXRlbS5sYWJlbCxcbiAgICAgIHR5cGU6IGl0ZW0udHlwZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRvY3VtZW50YXRpb24sXG4gICAgICBpc0RlcHJlY2F0ZWQ6IGl0ZW0uaXNEZXByZWNhdGVkLFxuICAgICAgZGVwcmVjYXRpb25SZWFzb246IGl0ZW0uZGVwcmVjYXRpb25SZWFzb25cbiAgICB9KSksXG4gICAgZnJvbTogeyBsaW5lOiBjdXIubGluZSwgY2g6IHRva2VuU3RhcnQgfSxcbiAgICB0bzogeyBsaW5lOiBjdXIubGluZSwgY2g6IHRva2VuLmVuZCB9XG4gIH07XG4gIGlmICgocmVzdWx0cyA9PT0gbnVsbCB8fCByZXN1bHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXN1bHRzLmxpc3QpICYmIHJlc3VsdHMubGlzdC5sZW5ndGggPiAwKSB7XG4gICAgcmVzdWx0cy5mcm9tID0gQ29kZU1pcnJvci5Qb3MocmVzdWx0cy5mcm9tLmxpbmUsIHJlc3VsdHMuZnJvbS5jaCk7XG4gICAgcmVzdWx0cy50byA9IENvZGVNaXJyb3IuUG9zKHJlc3VsdHMudG8ubGluZSwgcmVzdWx0cy50by5jaCk7XG4gICAgQ29kZU1pcnJvci5zaWduYWwoZWRpdG9yLCBcImhhc0NvbXBsZXRpb25cIiwgZWRpdG9yLCByZXN1bHRzLCB0b2tlbik7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBV0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUZBO0FBVkE7QUFrQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUpBO0FBQ0E7QUFyQ0E7QUFDQTtBQTBDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQXZCQTtBQXlCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBcEhBO0FBc0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFhQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBVEE7QUFDQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/hint.es.js\n");
|
2549 |
|
2550 | }),
|
2551 |
|
2552 | "../../graphiql-react/dist/hint.es2.js":
|
2553 |
|
2554 |
|
2555 |
|
2556 |
|
2557 | (function(module, exports, __webpack_require__) {
|
2558 |
|
2559 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./forEachState.es.js */ \"../../graphiql-react/dist/forEachState.es.js\"), __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_codemirrorEs, _graphql, _forEachStateEs, _indexEs, _react, _reactDom) {\n \"use strict\";\n\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function hintList(cursor, token, list) {\n const hints = filterAndSortList(list, normalizeText(token.string));\n\n if (!hints) {\n return;\n }\n\n const tokenStart = token.type !== null && /\"|\\w/.test(token.string[0]) ? token.start : token.end;\n return {\n list: hints,\n from: {\n line: cursor.line,\n ch: tokenStart\n },\n to: {\n line: cursor.line,\n ch: token.end\n }\n };\n }\n\n __name(hintList, \"hintList\");\n\n function filterAndSortList(list, text) {\n if (!text) {\n return filterNonEmpty(list, entry => !entry.isDeprecated);\n }\n\n const byProximity = list.map(entry => ({\n proximity: getProximity(normalizeText(entry.text), text),\n entry\n }));\n const conciseMatches = filterNonEmpty(filterNonEmpty(byProximity, pair => pair.proximity <= 2), pair => !pair.entry.isDeprecated);\n const sortedMatches = conciseMatches.sort((a, b) => (a.entry.isDeprecated ? 1 : 0) - (b.entry.isDeprecated ? 1 : 0) || a.proximity - b.proximity || a.entry.text.length - b.entry.text.length);\n return sortedMatches.map(pair => pair.entry);\n }\n\n __name(filterAndSortList, \"filterAndSortList\");\n\n function filterNonEmpty(array, predicate) {\n const filtered = array.filter(predicate);\n return filtered.length === 0 ? array : filtered;\n }\n\n __name(filterNonEmpty, \"filterNonEmpty\");\n\n function normalizeText(text) {\n return text.toLowerCase().replace(/\\W/g, \"\");\n }\n\n __name(normalizeText, \"normalizeText\");\n\n function getProximity(suggestion, text) {\n let proximity = lexicalDistance(text, suggestion);\n\n if (suggestion.length > text.length) {\n proximity -= suggestion.length - text.length - 1;\n proximity += suggestion.indexOf(text) === 0 ? 0 : 0.5;\n }\n\n return proximity;\n }\n\n __name(getProximity, \"getProximity\");\n\n function lexicalDistance(a, b) {\n let i;\n let j;\n const d = [];\n const aLength = a.length;\n const bLength = b.length;\n\n for (i = 0; i <= aLength; i++) {\n d[i] = [i];\n }\n\n for (j = 1; j <= bLength; j++) {\n d[0][j] = j;\n }\n\n for (i = 1; i <= aLength; i++) {\n for (j = 1; j <= bLength; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);\n\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);\n }\n }\n }\n\n return d[aLength][bLength];\n }\n\n __name(lexicalDistance, \"lexicalDistance\");\n\n _codemirrorEs.C.registerHelper(\"hint\", \"graphql-variables\", (editor, options) => {\n const cur = editor.getCursor();\n const token = editor.getTokenAt(cur);\n const results = getVariablesHint(cur, token, options);\n\n if ((results === null || results === void 0 ? void 0 : results.list) && results.list.length > 0) {\n results.from = _codemirrorEs.C.Pos(results.from.line, results.from.ch);\n results.to = _codemirrorEs.C.Pos(results.to.line, results.to.ch);\n\n _codemirrorEs.C.signal(editor, \"hasCompletion\", editor, results, token);\n }\n\n return results;\n });\n\n function getVariablesHint(cur, token, options) {\n const state = token.state.kind === \"Invalid\" ? token.state.prevState : token.state;\n const kind = state.kind;\n const step = state.step;\n\n if (kind === \"Document\" && step === 0) {\n return hintList(cur, token, [{\n text: \"{\"\n }]);\n }\n\n const variableToType = options.variableToType;\n\n if (!variableToType) {\n return;\n }\n\n const typeInfo = getTypeInfo(variableToType, token.state);\n\n if (kind === \"Document\" || kind === \"Variable\" && step === 0) {\n const variableNames = Object.keys(variableToType);\n return hintList(cur, token, variableNames.map(name => ({\n text: `\"${name}\": `,\n type: variableToType[name]\n })));\n }\n\n if (kind === \"ObjectValue\" || kind === \"ObjectField\" && step === 0) {\n if (typeInfo.fields) {\n const inputFields = Object.keys(typeInfo.fields).map(fieldName => typeInfo.fields[fieldName]);\n return hintList(cur, token, inputFields.map(field => ({\n text: `\"${field.name}\": `,\n type: field.type,\n description: field.description\n })));\n }\n }\n\n if (kind === \"StringValue\" || kind === \"NumberValue\" || kind === \"BooleanValue\" || kind === \"NullValue\" || kind === \"ListValue\" && step === 1 || kind === \"ObjectField\" && step === 2 || kind === \"Variable\" && step === 2) {\n const namedInputType = typeInfo.type ? (0, _graphql.getNamedType)(typeInfo.type) : void 0;\n\n if (namedInputType instanceof _graphql.GraphQLInputObjectType) {\n return hintList(cur, token, [{\n text: \"{\"\n }]);\n } else if (namedInputType instanceof _graphql.GraphQLEnumType) {\n const values = namedInputType.getValues();\n return hintList(cur, token, values.map(value => ({\n text: `\"${value.name}\"`,\n type: namedInputType,\n description: value.description\n })));\n } else if (namedInputType === _graphql.GraphQLBoolean) {\n return hintList(cur, token, [{\n text: \"true\",\n type: _graphql.GraphQLBoolean,\n description: \"Not false.\"\n }, {\n text: \"false\",\n type: _graphql.GraphQLBoolean,\n description: \"Not true.\"\n }]);\n }\n }\n }\n\n __name(getVariablesHint, \"getVariablesHint\");\n\n function getTypeInfo(variableToType, tokenState) {\n const info = {\n type: null,\n fields: null\n };\n (0, _forEachStateEs.f)(tokenState, state => {\n if (state.kind === \"Variable\") {\n info.type = variableToType[state.name];\n } else if (state.kind === \"ListValue\") {\n const nullableType = info.type ? (0, _graphql.getNullableType)(info.type) : void 0;\n info.type = nullableType instanceof _graphql.GraphQLList ? nullableType.ofType : null;\n } else if (state.kind === \"ObjectValue\") {\n const objectType = info.type ? (0, _graphql.getNamedType)(info.type) : void 0;\n info.fields = objectType instanceof _graphql.GraphQLInputObjectType ? objectType.getFields() : null;\n } else if (state.kind === \"ObjectField\") {\n const objectField = state.name && info.fields ? info.fields[state.name] : null;\n info.type = objectField === null || objectField === void 0 ? void 0 : objectField.type;\n }\n });\n return info;\n }\n\n __name(getTypeInfo, \"getTypeInfo\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9oaW50LmVzMi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL3BhY2thZ2VzL2dyYXBoaXFsLXJlYWN0L2Rpc3QvaGludC5lczIuanM/YmMzOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSA9ICh0YXJnZXQsIHZhbHVlKSA9PiBfX2RlZlByb3AodGFyZ2V0LCBcIm5hbWVcIiwgeyB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuaW1wb3J0IHsgQyBhcyBDb2RlTWlycm9yIH0gZnJvbSBcIi4vY29kZW1pcnJvci5lcy5qc1wiO1xuaW1wb3J0IHsgZ2V0TmFtZWRUeXBlLCBHcmFwaFFMSW5wdXRPYmplY3RUeXBlLCBHcmFwaFFMRW51bVR5cGUsIEdyYXBoUUxCb29sZWFuLCBnZXROdWxsYWJsZVR5cGUsIEdyYXBoUUxMaXN0IH0gZnJvbSBcImdyYXBocWxcIjtcbmltcG9ydCB7IGYgYXMgZm9yRWFjaFN0YXRlIH0gZnJvbSBcIi4vZm9yRWFjaFN0YXRlLmVzLmpzXCI7XG5pbXBvcnQgXCIuL2luZGV4LmVzLmpzXCI7XG5pbXBvcnQgXCJyZWFjdFwiO1xuaW1wb3J0IFwicmVhY3QtZG9tXCI7XG5mdW5jdGlvbiBoaW50TGlzdChjdXJzb3IsIHRva2VuLCBsaXN0KSB7XG4gIGNvbnN0IGhpbnRzID0gZmlsdGVyQW5kU29ydExpc3QobGlzdCwgbm9ybWFsaXplVGV4dCh0b2tlbi5zdHJpbmcpKTtcbiAgaWYgKCFoaW50cykge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCB0b2tlblN0YXJ0ID0gdG9rZW4udHlwZSAhPT0gbnVsbCAmJiAvXCJ8XFx3Ly50ZXN0KHRva2VuLnN0cmluZ1swXSkgPyB0b2tlbi5zdGFydCA6IHRva2VuLmVuZDtcbiAgcmV0dXJuIHtcbiAgICBsaXN0OiBoaW50cyxcbiAgICBmcm9tOiB7IGxpbmU6IGN1cnNvci5saW5lLCBjaDogdG9rZW5TdGFydCB9LFxuICAgIHRvOiB7IGxpbmU6IGN1cnNvci5saW5lLCBjaDogdG9rZW4uZW5kIH1cbiAgfTtcbn1cbl9fbmFtZShoaW50TGlzdCwgXCJoaW50TGlzdFwiKTtcbmZ1bmN0aW9uIGZpbHRlckFuZFNvcnRMaXN0KGxpc3QsIHRleHQpIHtcbiAgaWYgKCF0ZXh0KSB7XG4gICAgcmV0dXJuIGZpbHRlck5vbkVtcHR5KGxpc3QsIChlbnRyeSkgPT4gIWVudHJ5LmlzRGVwcmVjYXRlZCk7XG4gIH1cbiAgY29uc3QgYnlQcm94aW1pdHkgPSBsaXN0Lm1hcCgoZW50cnkpID0+ICh7XG4gICAgcHJveGltaXR5OiBnZXRQcm94aW1pdHkobm9ybWFsaXplVGV4dChlbnRyeS50ZXh0KSwgdGV4dCksXG4gICAgZW50cnlcbiAgfSkpO1xuICBjb25zdCBjb25jaXNlTWF0Y2hlcyA9IGZpbHRlck5vbkVtcHR5KGZpbHRlck5vbkVtcHR5KGJ5UHJveGltaXR5LCAocGFpcikgPT4gcGFpci5wcm94aW1pdHkgPD0gMiksIChwYWlyKSA9PiAhcGFpci5lbnRyeS5pc0RlcHJlY2F0ZWQpO1xuICBjb25zdCBzb3J0ZWRNYXRjaGVzID0gY29uY2lzZU1hdGNoZXMuc29ydCgoYSwgYikgPT4gKGEuZW50cnkuaXNEZXByZWNhdGVkID8gMSA6IDApIC0gKGIuZW50cnkuaXNEZXByZWNhdGVkID8gMSA6IDApIHx8IGEucHJveGltaXR5IC0gYi5wcm94aW1pdHkgfHwgYS5lbnRyeS50ZXh0Lmxlbmd0aCAtIGIuZW50cnkudGV4dC5sZW5ndGgpO1xuICByZXR1cm4gc29ydGVkTWF0Y2hlcy5tYXAoKHBhaXIpID0+IHBhaXIuZW50cnkpO1xufVxuX19uYW1lKGZpbHRlckFuZFNvcnRMaXN0LCBcImZpbHRlckFuZFNvcnRMaXN0XCIpO1xuZnVuY3Rpb24gZmlsdGVyTm9uRW1wdHkoYXJyYXksIHByZWRpY2F0ZSkge1xuICBjb25zdCBmaWx0ZXJlZCA9IGFycmF5LmZpbHRlcihwcmVkaWNhdGUpO1xuICByZXR1cm4gZmlsdGVyZWQubGVuZ3RoID09PSAwID8gYXJyYXkgOiBmaWx0ZXJlZDtcbn1cbl9fbmFtZShmaWx0ZXJOb25FbXB0eSwgXCJmaWx0ZXJOb25FbXB0eVwiKTtcbmZ1bmN0aW9uIG5vcm1hbGl6ZVRleHQodGV4dCkge1xuICByZXR1cm4gdGV4dC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xcVy9nLCBcIlwiKTtcbn1cbl9fbmFtZShub3JtYWxpemVUZXh0LCBcIm5vcm1hbGl6ZVRleHRcIik7XG5mdW5jdGlvbiBnZXRQcm94aW1pdHkoc3VnZ2VzdGlvbiwgdGV4dCkge1xuICBsZXQgcHJveGltaXR5ID0gbGV4aWNhbERpc3RhbmNlKHRleHQsIHN1Z2dlc3Rpb24pO1xuICBpZiAoc3VnZ2VzdGlvbi5sZW5ndGggPiB0ZXh0Lmxlbmd0aCkge1xuICAgIHByb3hpbWl0eSAtPSBzdWdnZXN0aW9uLmxlbmd0aCAtIHRleHQubGVuZ3RoIC0gMTtcbiAgICBwcm94aW1pdHkgKz0gc3VnZ2VzdGlvbi5pbmRleE9mKHRleHQpID09PSAwID8gMCA6IDAuNTtcbiAgfVxuICByZXR1cm4gcHJveGltaXR5O1xufVxuX19uYW1lKGdldFByb3hpbWl0eSwgXCJnZXRQcm94aW1pdHlcIik7XG5mdW5jdGlvbiBsZXhpY2FsRGlzdGFuY2UoYSwgYikge1xuICBsZXQgaTtcbiAgbGV0IGo7XG4gIGNvbnN0IGQgPSBbXTtcbiAgY29uc3QgYUxlbmd0aCA9IGEubGVuZ3RoO1xuICBjb25zdCBiTGVuZ3RoID0gYi5sZW5ndGg7XG4gIGZvciAoaSA9IDA7IGkgPD0gYUxlbmd0aDsgaSsrKSB7XG4gICAgZFtpXSA9IFtpXTtcbiAgfVxuICBmb3IgKGogPSAxOyBqIDw9IGJMZW5ndGg7IGorKykge1xuICAgIGRbMF1bal0gPSBqO1xuICB9XG4gIGZvciAoaSA9IDE7IGkgPD0gYUxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChqID0gMTsgaiA8PSBiTGVuZ3RoOyBqKyspIHtcbiAgICAgIGNvbnN0IGNvc3QgPSBhW2kgLSAxXSA9PT0gYltqIC0gMV0gPyAwIDogMTtcbiAgICAgIGRbaV1bal0gPSBNYXRoLm1pbihkW2kgLSAxXVtqXSArIDEsIGRbaV1baiAtIDFdICsgMSwgZFtpIC0gMV1baiAtIDFdICsgY29zdCk7XG4gICAgICBpZiAoaSA+IDEgJiYgaiA+IDEgJiYgYVtpIC0gMV0gPT09IGJbaiAtIDJdICYmIGFbaSAtIDJdID09PSBiW2ogLSAxXSkge1xuICAgICAgICBkW2ldW2pdID0gTWF0aC5taW4oZFtpXVtqXSwgZFtpIC0gMl1baiAtIDJdICsgY29zdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBkW2FMZW5ndGhdW2JMZW5ndGhdO1xufVxuX19uYW1lKGxleGljYWxEaXN0YW5jZSwgXCJsZXhpY2FsRGlzdGFuY2VcIik7XG5Db2RlTWlycm9yLnJlZ2lzdGVySGVscGVyKFwiaGludFwiLCBcImdyYXBocWwtdmFyaWFibGVzXCIsIChlZGl0b3IsIG9wdGlvbnMpID0+IHtcbiAgY29uc3QgY3VyID0gZWRpdG9yLmdldEN1cnNvcigpO1xuICBjb25zdCB0b2tlbiA9IGVkaXRvci5nZXRUb2tlbkF0KGN1cik7XG4gIGNvbnN0IHJlc3VsdHMgPSBnZXRWYXJpYWJsZXNIaW50KGN1ciwgdG9rZW4sIG9wdGlvbnMpO1xuICBpZiAoKHJlc3VsdHMgPT09IG51bGwgfHwgcmVzdWx0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzdWx0cy5saXN0KSAmJiByZXN1bHRzLmxpc3QubGVuZ3RoID4gMCkge1xuICAgIHJlc3VsdHMuZnJvbSA9IENvZGVNaXJyb3IuUG9zKHJlc3VsdHMuZnJvbS5saW5lLCByZXN1bHRzLmZyb20uY2gpO1xuICAgIHJlc3VsdHMudG8gPSBDb2RlTWlycm9yLlBvcyhyZXN1bHRzLnRvLmxpbmUsIHJlc3VsdHMudG8uY2gpO1xuICAgIENvZGVNaXJyb3Iuc2lnbmFsKGVkaXRvciwgXCJoYXNDb21wbGV0aW9uXCIsIGVkaXRvciwgcmVzdWx0cywgdG9rZW4pO1xuICB9XG4gIHJldHVybiByZXN1bHRzO1xufSk7XG5mdW5jdGlvbiBnZXRWYXJpYWJsZXNIaW50KGN1ciwgdG9rZW4sIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3RhdGUgPSB0b2tlbi5zdGF0ZS5raW5kID09PSBcIkludmFsaWRcIiA/IHRva2VuLnN0YXRlLnByZXZTdGF0ZSA6IHRva2VuLnN0YXRlO1xuICBjb25zdCBraW5kID0gc3RhdGUua2luZDtcbiAgY29uc3Qgc3RlcCA9IHN0YXRlLnN0ZXA7XG4gIGlmIChraW5kID09PSBcIkRvY3VtZW50XCIgJiYgc3RlcCA9PT0gMCkge1xuICAgIHJldHVybiBoaW50TGlzdChjdXIsIHRva2VuLCBbeyB0ZXh0OiBcIntcIiB9XSk7XG4gIH1cbiAgY29uc3QgdmFyaWFibGVUb1R5cGUgPSBvcHRpb25zLnZhcmlhYmxlVG9UeXBlO1xuICBpZiAoIXZhcmlhYmxlVG9UeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHR5cGVJbmZvID0gZ2V0VHlwZUluZm8odmFyaWFibGVUb1R5cGUsIHRva2VuLnN0YXRlKTtcbiAgaWYgKGtpbmQgPT09IFwiRG9jdW1lbnRcIiB8fCBraW5kID09PSBcIlZhcmlhYmxlXCIgJiYgc3RlcCA9PT0gMCkge1xuICAgIGNvbnN0IHZhcmlhYmxlTmFtZXMgPSBPYmplY3Qua2V5cyh2YXJpYWJsZVRvVHlwZSk7XG4gICAgcmV0dXJuIGhpbnRMaXN0KGN1ciwgdG9rZW4sIHZhcmlhYmxlTmFtZXMubWFwKChuYW1lKSA9PiAoe1xuICAgICAgdGV4dDogYFwiJHtuYW1lfVwiOiBgLFxuICAgICAgdHlwZTogdmFyaWFibGVUb1R5cGVbbmFtZV1cbiAgICB9KSkpO1xuICB9XG4gIGlmIChraW5kID09PSBcIk9iamVjdFZhbHVlXCIgfHwga2luZCA9PT0gXCJPYmplY3RGaWVsZFwiICYmIHN0ZXAgPT09IDApIHtcbiAgICBpZiAodHlwZUluZm8uZmllbGRzKSB7XG4gICAgICBjb25zdCBpbnB1dEZpZWxkcyA9IE9iamVjdC5rZXlzKHR5cGVJbmZvLmZpZWxkcykubWFwKChmaWVsZE5hbWUpID0+IHR5cGVJbmZvLmZpZWxkc1tmaWVsZE5hbWVdKTtcbiAgICAgIHJldHVybiBoaW50TGlzdChjdXIsIHRva2VuLCBpbnB1dEZpZWxkcy5tYXAoKGZpZWxkKSA9PiAoe1xuICAgICAgICB0ZXh0OiBgXCIke2ZpZWxkLm5hbWV9XCI6IGAsXG4gICAgICAgIHR5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBmaWVsZC5kZXNjcmlwdGlvblxuICAgICAgfSkpKTtcbiAgICB9XG4gIH1cbiAgaWYgKGtpbmQgPT09IFwiU3RyaW5nVmFsdWVcIiB8fCBraW5kID09PSBcIk51bWJlclZhbHVlXCIgfHwga2luZCA9PT0gXCJCb29sZWFuVmFsdWVcIiB8fCBraW5kID09PSBcIk51bGxWYWx1ZVwiIHx8IGtpbmQgPT09IFwiTGlzdFZhbHVlXCIgJiYgc3RlcCA9PT0gMSB8fCBraW5kID09PSBcIk9iamVjdEZpZWxkXCIgJiYgc3RlcCA9PT0gMiB8fCBraW5kID09PSBcIlZhcmlhYmxlXCIgJiYgc3RlcCA9PT0gMikge1xuICAgIGNvbnN0IG5hbWVkSW5wdXRUeXBlID0gdHlwZUluZm8udHlwZSA/IGdldE5hbWVkVHlwZSh0eXBlSW5mby50eXBlKSA6IHZvaWQgMDtcbiAgICBpZiAobmFtZWRJbnB1dFR5cGUgaW5zdGFuY2VvZiBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKSB7XG4gICAgICByZXR1cm4gaGludExpc3QoY3VyLCB0b2tlbiwgW3sgdGV4dDogXCJ7XCIgfV0pO1xuICAgIH0gZWxzZSBpZiAobmFtZWRJbnB1dFR5cGUgaW5zdGFuY2VvZiBHcmFwaFFMRW51bVR5cGUpIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IG5hbWVkSW5wdXRUeXBlLmdldFZhbHVlcygpO1xuICAgICAgcmV0dXJuIGhpbnRMaXN0KGN1ciwgdG9rZW4sIHZhbHVlcy5tYXAoKHZhbHVlKSA9PiAoe1xuICAgICAgICB0ZXh0OiBgXCIke3ZhbHVlLm5hbWV9XCJgLFxuICAgICAgICB0eXBlOiBuYW1lZElucHV0VHlwZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHZhbHVlLmRlc2NyaXB0aW9uXG4gICAgICB9KSkpO1xuICAgIH0gZWxzZSBpZiAobmFtZWRJbnB1dFR5cGUgPT09IEdyYXBoUUxCb29sZWFuKSB7XG4gICAgICByZXR1cm4gaGludExpc3QoY3VyLCB0b2tlbiwgW1xuICAgICAgICB7IHRleHQ6IFwidHJ1ZVwiLCB0eXBlOiBHcmFwaFFMQm9vbGVhbiwgZGVzY3JpcHRpb246IFwiTm90IGZhbHNlLlwiIH0sXG4gICAgICAgIHsgdGV4dDogXCJmYWxzZVwiLCB0eXBlOiBHcmFwaFFMQm9vbGVhbiwgZGVzY3JpcHRpb246IFwiTm90IHRydWUuXCIgfVxuICAgICAgXSk7XG4gICAgfVxuICB9XG59XG5fX25hbWUoZ2V0VmFyaWFibGVzSGludCwgXCJnZXRWYXJpYWJsZXNIaW50XCIpO1xuZnVuY3Rpb24gZ2V0VHlwZUluZm8odmFyaWFibGVUb1R5cGUsIHRva2VuU3RhdGUpIHtcbiAgY29uc3QgaW5mbyA9IHtcbiAgICB0eXBlOiBudWxsLFxuICAgIGZpZWxkczogbnVsbFxuICB9O1xuICBmb3JFYWNoU3RhdGUodG9rZW5TdGF0ZSwgKHN0YXRlKSA9PiB7XG4gICAgaWYgKHN0YXRlLmtpbmQgPT09IFwiVmFyaWFibGVcIikge1xuICAgICAgaW5mby50eXBlID0gdmFyaWFibGVUb1R5cGVbc3RhdGUubmFtZV07XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5raW5kID09PSBcIkxpc3RWYWx1ZVwiKSB7XG4gICAgICBjb25zdCBudWxsYWJsZVR5cGUgPSBpbmZvLnR5cGUgPyBnZXROdWxsYWJsZVR5cGUoaW5mby50eXBlKSA6IHZvaWQgMDtcbiAgICAgIGluZm8udHlwZSA9IG51bGxhYmxlVHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxMaXN0ID8gbnVsbGFibGVUeXBlLm9mVHlwZSA6IG51bGw7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5raW5kID09PSBcIk9iamVjdFZhbHVlXCIpIHtcbiAgICAgIGNvbnN0IG9iamVjdFR5cGUgPSBpbmZvLnR5cGUgPyBnZXROYW1lZFR5cGUoaW5mby50eXBlKSA6IHZvaWQgMDtcbiAgICAgIGluZm8uZmllbGRzID0gb2JqZWN0VHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxJbnB1dE9iamVjdFR5cGUgPyBvYmplY3RUeXBlLmdldEZpZWxkcygpIDogbnVsbDtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLmtpbmQgPT09IFwiT2JqZWN0RmllbGRcIikge1xuICAgICAgY29uc3Qgb2JqZWN0RmllbGQgPSBzdGF0ZS5uYW1lICYmIGluZm8uZmllbGRzID8gaW5mby5maWVsZHNbc3RhdGUubmFtZV0gOiBudWxsO1xuICAgICAgaW5mby50eXBlID0gb2JqZWN0RmllbGQgPT09IG51bGwgfHwgb2JqZWN0RmllbGQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9iamVjdEZpZWxkLnR5cGU7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGluZm87XG59XG5fX25hbWUoZ2V0VHlwZUluZm8sIFwiZ2V0VHlwZUluZm9cIik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUhBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/hint.es2.js\n");
|
2560 |
|
2561 | }),
|
2562 |
|
2563 | "../../graphiql-react/dist/index.es.js":
|
2564 |
|
2565 |
|
2566 |
|
2567 |
|
2568 | (function(module, exports, __webpack_require__) {
|
2569 |
|
2570 | eval("/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _react, _reactDom) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.A = useSelectHistoryItem;\n _exports.B = SchemaContextProvider;\n _exports.F = _exports.E = _exports.D = _exports.C = void 0;\n _exports.G = StorageContextProvider;\n _exports.J = _exports.I = _exports.H = void 0;\n _exports.K = useDragResize;\n _exports.S = _exports.R = _exports.P = _exports.L = void 0;\n _exports.a = EditorContextProvider;\n _exports.b = ImagePreview;\n _exports.c = void 0;\n _exports.d = onHasCompletion;\n _exports.e = useCopyQuery;\n _exports.f = void 0;\n _exports.g = useHeaderEditor;\n _exports.h = useMergeQuery;\n _exports.i = void 0;\n _exports.j = usePrettifyEditors;\n _exports.k = useQueryEditor;\n _exports.l = list2;\n _exports.m = useResponseEditor;\n _exports.n = useVariableEditor;\n _exports.o = opt;\n _exports.p = p;\n _exports.q = void 0;\n _exports.r = ExecutionContextProvider;\n _exports.s = void 0;\n _exports.t = t;\n _exports.u = useAutoCompleteLeafs;\n _exports.v = void 0;\n _exports.w = ExplorerContextProvider;\n _exports.x = void 0;\n _exports.y = HistoryContextProvider;\n _exports.z = void 0;\n _react = _interopRequireWildcard(_react);\n _reactDom = _interopRequireDefault(_reactDom);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\n function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n var __defProp = Object.defineProperty;\n var __defProps = Object.defineProperties;\n var __getOwnPropDescs = Object.getOwnPropertyDescriptors;\n var __getOwnPropSymbols = Object.getOwnPropertySymbols;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __propIsEnum = Object.prototype.propertyIsEnumerable;\n\n var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n }) : obj[key] = value;\n\n var __spreadValues = (a, b) => {\n for (var prop2 in b || (b = {})) if (__hasOwnProp.call(b, prop2)) __defNormalProp(a, prop2, b[prop2]);\n\n if (__getOwnPropSymbols) for (var prop2 of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop2)) __defNormalProp(a, prop2, b[prop2]);\n }\n return a;\n };\n\n var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n\n var __name = (target2, value) => __defProp(target2, \"name\", {\n value,\n configurable: true\n });\n\n var __objRest = (source, exclude) => {\n var target2 = {};\n\n for (var prop2 in source) if (__hasOwnProp.call(source, prop2) && exclude.indexOf(prop2) < 0) target2[prop2] = source[prop2];\n\n if (source != null && __getOwnPropSymbols) for (var prop2 of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop2) < 0 && __propIsEnum.call(source, prop2)) target2[prop2] = source[prop2];\n }\n return target2;\n };\n\n var commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\n _exports.c = commonjsGlobal;\n\n function getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n }\n\n __name(getDefaultExportFromCjs, \"getDefaultExportFromCjs\");\n\n function getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var a = Object.defineProperty({}, \"__esModule\", {\n value: true\n });\n Object.keys(n2).forEach(function (k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return n2[k];\n }\n });\n });\n return a;\n }\n\n __name(getAugmentedNamespace, \"getAugmentedNamespace\");\n /*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n\n var matchHtmlRegExp = /[\"'&<>]/;\n var escapeHtml_1 = escapeHtml$1;\n\n function escapeHtml$1(string) {\n var str = \"\" + string;\n var match2 = matchHtmlRegExp.exec(str);\n\n if (!match2) {\n return str;\n }\n\n var escape2;\n var html = \"\";\n var index = 0;\n var lastIndex = 0;\n\n for (index = match2.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escape2 = \""\";\n break;\n\n case 38:\n escape2 = \"&\";\n break;\n\n case 39:\n escape2 = \"'\";\n break;\n\n case 60:\n escape2 = \"<\";\n break;\n\n case 62:\n escape2 = \">\";\n break;\n\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape2;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n }\n\n __name(escapeHtml$1, \"escapeHtml$1\");\n\n var utils$1 = {};\n const Aacute = \"\\xC1\";\n const aacute = \"\\xE1\";\n const Abreve = \"\\u0102\";\n const abreve = \"\\u0103\";\n const ac = \"\\u223E\";\n const acd = \"\\u223F\";\n const acE = \"\\u223E\\u0333\";\n const Acirc = \"\\xC2\";\n const acirc = \"\\xE2\";\n const acute = \"\\xB4\";\n const Acy = \"\\u0410\";\n const acy = \"\\u0430\";\n const AElig = \"\\xC6\";\n const aelig = \"\\xE6\";\n const af = \"\\u2061\";\n const Afr = \"\\u{1D504}\";\n const afr = \"\\u{1D51E}\";\n const Agrave = \"\\xC0\";\n const agrave = \"\\xE0\";\n const alefsym = \"\\u2135\";\n const aleph = \"\\u2135\";\n const Alpha = \"\\u0391\";\n const alpha = \"\\u03B1\";\n const Amacr = \"\\u0100\";\n const amacr = \"\\u0101\";\n const amalg = \"\\u2A3F\";\n const amp = \"&\";\n const AMP = \"&\";\n const andand = \"\\u2A55\";\n const And = \"\\u2A53\";\n const and = \"\\u2227\";\n const andd = \"\\u2A5C\";\n const andslope = \"\\u2A58\";\n const andv = \"\\u2A5A\";\n const ang = \"\\u2220\";\n const ange = \"\\u29A4\";\n const angle = \"\\u2220\";\n const angmsdaa = \"\\u29A8\";\n const angmsdab = \"\\u29A9\";\n const angmsdac = \"\\u29AA\";\n const angmsdad = \"\\u29AB\";\n const angmsdae = \"\\u29AC\";\n const angmsdaf = \"\\u29AD\";\n const angmsdag = \"\\u29AE\";\n const angmsdah = \"\\u29AF\";\n const angmsd = \"\\u2221\";\n const angrt = \"\\u221F\";\n const angrtvb = \"\\u22BE\";\n const angrtvbd = \"\\u299D\";\n const angsph = \"\\u2222\";\n const angst = \"\\xC5\";\n const angzarr = \"\\u237C\";\n const Aogon = \"\\u0104\";\n const aogon = \"\\u0105\";\n const Aopf = \"\\u{1D538}\";\n const aopf = \"\\u{1D552}\";\n const apacir = \"\\u2A6F\";\n const ap = \"\\u2248\";\n const apE = \"\\u2A70\";\n const ape = \"\\u224A\";\n const apid = \"\\u224B\";\n const apos = \"'\";\n const ApplyFunction = \"\\u2061\";\n const approx = \"\\u2248\";\n const approxeq = \"\\u224A\";\n const Aring = \"\\xC5\";\n const aring = \"\\xE5\";\n const Ascr = \"\\u{1D49C}\";\n const ascr = \"\\u{1D4B6}\";\n const Assign = \"\\u2254\";\n const ast = \"*\";\n const asymp = \"\\u2248\";\n const asympeq = \"\\u224D\";\n const Atilde = \"\\xC3\";\n const atilde = \"\\xE3\";\n const Auml = \"\\xC4\";\n const auml = \"\\xE4\";\n const awconint = \"\\u2233\";\n const awint = \"\\u2A11\";\n const backcong = \"\\u224C\";\n const backepsilon = \"\\u03F6\";\n const backprime = \"\\u2035\";\n const backsim = \"\\u223D\";\n const backsimeq = \"\\u22CD\";\n const Backslash = \"\\u2216\";\n const Barv = \"\\u2AE7\";\n const barvee = \"\\u22BD\";\n const barwed = \"\\u2305\";\n const Barwed = \"\\u2306\";\n const barwedge = \"\\u2305\";\n const bbrk = \"\\u23B5\";\n const bbrktbrk = \"\\u23B6\";\n const bcong = \"\\u224C\";\n const Bcy = \"\\u0411\";\n const bcy = \"\\u0431\";\n const bdquo = \"\\u201E\";\n const becaus = \"\\u2235\";\n const because = \"\\u2235\";\n const Because = \"\\u2235\";\n const bemptyv = \"\\u29B0\";\n const bepsi = \"\\u03F6\";\n const bernou = \"\\u212C\";\n const Bernoullis = \"\\u212C\";\n const Beta = \"\\u0392\";\n const beta = \"\\u03B2\";\n const beth = \"\\u2136\";\n const between = \"\\u226C\";\n const Bfr = \"\\u{1D505}\";\n const bfr = \"\\u{1D51F}\";\n const bigcap = \"\\u22C2\";\n const bigcirc = \"\\u25EF\";\n const bigcup = \"\\u22C3\";\n const bigodot = \"\\u2A00\";\n const bigoplus = \"\\u2A01\";\n const bigotimes = \"\\u2A02\";\n const bigsqcup = \"\\u2A06\";\n const bigstar = \"\\u2605\";\n const bigtriangledown = \"\\u25BD\";\n const bigtriangleup = \"\\u25B3\";\n const biguplus = \"\\u2A04\";\n const bigvee = \"\\u22C1\";\n const bigwedge = \"\\u22C0\";\n const bkarow = \"\\u290D\";\n const blacklozenge = \"\\u29EB\";\n const blacksquare = \"\\u25AA\";\n const blacktriangle = \"\\u25B4\";\n const blacktriangledown = \"\\u25BE\";\n const blacktriangleleft = \"\\u25C2\";\n const blacktriangleright = \"\\u25B8\";\n const blank = \"\\u2423\";\n const blk12 = \"\\u2592\";\n const blk14 = \"\\u2591\";\n const blk34 = \"\\u2593\";\n const block$1 = \"\\u2588\";\n const bne = \"=\\u20E5\";\n const bnequiv = \"\\u2261\\u20E5\";\n const bNot = \"\\u2AED\";\n const bnot = \"\\u2310\";\n const Bopf = \"\\u{1D539}\";\n const bopf = \"\\u{1D553}\";\n const bot = \"\\u22A5\";\n const bottom = \"\\u22A5\";\n const bowtie = \"\\u22C8\";\n const boxbox = \"\\u29C9\";\n const boxdl = \"\\u2510\";\n const boxdL = \"\\u2555\";\n const boxDl = \"\\u2556\";\n const boxDL = \"\\u2557\";\n const boxdr = \"\\u250C\";\n const boxdR = \"\\u2552\";\n const boxDr = \"\\u2553\";\n const boxDR = \"\\u2554\";\n const boxh = \"\\u2500\";\n const boxH = \"\\u2550\";\n const boxhd = \"\\u252C\";\n const boxHd = \"\\u2564\";\n const boxhD = \"\\u2565\";\n const boxHD = \"\\u2566\";\n const boxhu = \"\\u2534\";\n const boxHu = \"\\u2567\";\n const boxhU = \"\\u2568\";\n const boxHU = \"\\u2569\";\n const boxminus = \"\\u229F\";\n const boxplus = \"\\u229E\";\n const boxtimes = \"\\u22A0\";\n const boxul = \"\\u2518\";\n const boxuL = \"\\u255B\";\n const boxUl = \"\\u255C\";\n const boxUL = \"\\u255D\";\n const boxur = \"\\u2514\";\n const boxuR = \"\\u2558\";\n const boxUr = \"\\u2559\";\n const boxUR = \"\\u255A\";\n const boxv = \"\\u2502\";\n const boxV = \"\\u2551\";\n const boxvh = \"\\u253C\";\n const boxvH = \"\\u256A\";\n const boxVh = \"\\u256B\";\n const boxVH = \"\\u256C\";\n const boxvl = \"\\u2524\";\n const boxvL = \"\\u2561\";\n const boxVl = \"\\u2562\";\n const boxVL = \"\\u2563\";\n const boxvr = \"\\u251C\";\n const boxvR = \"\\u255E\";\n const boxVr = \"\\u255F\";\n const boxVR = \"\\u2560\";\n const bprime = \"\\u2035\";\n const breve = \"\\u02D8\";\n const Breve = \"\\u02D8\";\n const brvbar = \"\\xA6\";\n const bscr = \"\\u{1D4B7}\";\n const Bscr = \"\\u212C\";\n const bsemi = \"\\u204F\";\n const bsim = \"\\u223D\";\n const bsime = \"\\u22CD\";\n const bsolb = \"\\u29C5\";\n const bsol = \"\\\\\";\n const bsolhsub = \"\\u27C8\";\n const bull = \"\\u2022\";\n const bullet = \"\\u2022\";\n const bump = \"\\u224E\";\n const bumpE = \"\\u2AAE\";\n const bumpe = \"\\u224F\";\n const Bumpeq = \"\\u224E\";\n const bumpeq = \"\\u224F\";\n const Cacute = \"\\u0106\";\n const cacute = \"\\u0107\";\n const capand = \"\\u2A44\";\n const capbrcup = \"\\u2A49\";\n const capcap = \"\\u2A4B\";\n const cap = \"\\u2229\";\n const Cap = \"\\u22D2\";\n const capcup = \"\\u2A47\";\n const capdot = \"\\u2A40\";\n const CapitalDifferentialD = \"\\u2145\";\n const caps = \"\\u2229\\uFE00\";\n const caret = \"\\u2041\";\n const caron = \"\\u02C7\";\n const Cayleys = \"\\u212D\";\n const ccaps = \"\\u2A4D\";\n const Ccaron = \"\\u010C\";\n const ccaron = \"\\u010D\";\n const Ccedil = \"\\xC7\";\n const ccedil = \"\\xE7\";\n const Ccirc = \"\\u0108\";\n const ccirc = \"\\u0109\";\n const Cconint = \"\\u2230\";\n const ccups = \"\\u2A4C\";\n const ccupssm = \"\\u2A50\";\n const Cdot = \"\\u010A\";\n const cdot = \"\\u010B\";\n const cedil = \"\\xB8\";\n const Cedilla = \"\\xB8\";\n const cemptyv = \"\\u29B2\";\n const cent = \"\\xA2\";\n const centerdot = \"\\xB7\";\n const CenterDot = \"\\xB7\";\n const cfr = \"\\u{1D520}\";\n const Cfr = \"\\u212D\";\n const CHcy = \"\\u0427\";\n const chcy = \"\\u0447\";\n const check = \"\\u2713\";\n const checkmark = \"\\u2713\";\n const Chi = \"\\u03A7\";\n const chi = \"\\u03C7\";\n const circ = \"\\u02C6\";\n const circeq = \"\\u2257\";\n const circlearrowleft = \"\\u21BA\";\n const circlearrowright = \"\\u21BB\";\n const circledast = \"\\u229B\";\n const circledcirc = \"\\u229A\";\n const circleddash = \"\\u229D\";\n const CircleDot = \"\\u2299\";\n const circledR = \"\\xAE\";\n const circledS = \"\\u24C8\";\n const CircleMinus = \"\\u2296\";\n const CirclePlus = \"\\u2295\";\n const CircleTimes = \"\\u2297\";\n const cir = \"\\u25CB\";\n const cirE = \"\\u29C3\";\n const cire = \"\\u2257\";\n const cirfnint = \"\\u2A10\";\n const cirmid = \"\\u2AEF\";\n const cirscir = \"\\u29C2\";\n const ClockwiseContourIntegral = \"\\u2232\";\n const CloseCurlyDoubleQuote = \"\\u201D\";\n const CloseCurlyQuote = \"\\u2019\";\n const clubs = \"\\u2663\";\n const clubsuit = \"\\u2663\";\n const colon = \":\";\n const Colon = \"\\u2237\";\n const Colone = \"\\u2A74\";\n const colone = \"\\u2254\";\n const coloneq = \"\\u2254\";\n const comma = \",\";\n const commat = \"@\";\n const comp = \"\\u2201\";\n const compfn = \"\\u2218\";\n const complement = \"\\u2201\";\n const complexes = \"\\u2102\";\n const cong = \"\\u2245\";\n const congdot = \"\\u2A6D\";\n const Congruent = \"\\u2261\";\n const conint = \"\\u222E\";\n const Conint = \"\\u222F\";\n const ContourIntegral = \"\\u222E\";\n const copf = \"\\u{1D554}\";\n const Copf = \"\\u2102\";\n const coprod = \"\\u2210\";\n const Coproduct = \"\\u2210\";\n const copy$1 = \"\\xA9\";\n const COPY = \"\\xA9\";\n const copysr = \"\\u2117\";\n const CounterClockwiseContourIntegral = \"\\u2233\";\n const crarr = \"\\u21B5\";\n const cross = \"\\u2717\";\n const Cross = \"\\u2A2F\";\n const Cscr = \"\\u{1D49E}\";\n const cscr = \"\\u{1D4B8}\";\n const csub = \"\\u2ACF\";\n const csube = \"\\u2AD1\";\n const csup = \"\\u2AD0\";\n const csupe = \"\\u2AD2\";\n const ctdot = \"\\u22EF\";\n const cudarrl = \"\\u2938\";\n const cudarrr = \"\\u2935\";\n const cuepr = \"\\u22DE\";\n const cuesc = \"\\u22DF\";\n const cularr = \"\\u21B6\";\n const cularrp = \"\\u293D\";\n const cupbrcap = \"\\u2A48\";\n const cupcap = \"\\u2A46\";\n const CupCap = \"\\u224D\";\n const cup = \"\\u222A\";\n const Cup = \"\\u22D3\";\n const cupcup = \"\\u2A4A\";\n const cupdot = \"\\u228D\";\n const cupor = \"\\u2A45\";\n const cups = \"\\u222A\\uFE00\";\n const curarr = \"\\u21B7\";\n const curarrm = \"\\u293C\";\n const curlyeqprec = \"\\u22DE\";\n const curlyeqsucc = \"\\u22DF\";\n const curlyvee = \"\\u22CE\";\n const curlywedge = \"\\u22CF\";\n const curren = \"\\xA4\";\n const curvearrowleft = \"\\u21B6\";\n const curvearrowright = \"\\u21B7\";\n const cuvee = \"\\u22CE\";\n const cuwed = \"\\u22CF\";\n const cwconint = \"\\u2232\";\n const cwint = \"\\u2231\";\n const cylcty = \"\\u232D\";\n const dagger = \"\\u2020\";\n const Dagger = \"\\u2021\";\n const daleth = \"\\u2138\";\n const darr = \"\\u2193\";\n const Darr = \"\\u21A1\";\n const dArr = \"\\u21D3\";\n const dash = \"\\u2010\";\n const Dashv = \"\\u2AE4\";\n const dashv = \"\\u22A3\";\n const dbkarow = \"\\u290F\";\n const dblac = \"\\u02DD\";\n const Dcaron = \"\\u010E\";\n const dcaron = \"\\u010F\";\n const Dcy = \"\\u0414\";\n const dcy = \"\\u0434\";\n const ddagger = \"\\u2021\";\n const ddarr = \"\\u21CA\";\n const DD = \"\\u2145\";\n const dd = \"\\u2146\";\n const DDotrahd = \"\\u2911\";\n const ddotseq = \"\\u2A77\";\n const deg = \"\\xB0\";\n const Del = \"\\u2207\";\n const Delta = \"\\u0394\";\n const delta = \"\\u03B4\";\n const demptyv = \"\\u29B1\";\n const dfisht = \"\\u297F\";\n const Dfr = \"\\u{1D507}\";\n const dfr = \"\\u{1D521}\";\n const dHar = \"\\u2965\";\n const dharl = \"\\u21C3\";\n const dharr = \"\\u21C2\";\n const DiacriticalAcute = \"\\xB4\";\n const DiacriticalDot = \"\\u02D9\";\n const DiacriticalDoubleAcute = \"\\u02DD\";\n const DiacriticalGrave = \"`\";\n const DiacriticalTilde = \"\\u02DC\";\n const diam = \"\\u22C4\";\n const diamond = \"\\u22C4\";\n const Diamond = \"\\u22C4\";\n const diamondsuit = \"\\u2666\";\n const diams = \"\\u2666\";\n const die = \"\\xA8\";\n const DifferentialD = \"\\u2146\";\n const digamma = \"\\u03DD\";\n const disin = \"\\u22F2\";\n const div = \"\\xF7\";\n const divide = \"\\xF7\";\n const divideontimes = \"\\u22C7\";\n const divonx = \"\\u22C7\";\n const DJcy = \"\\u0402\";\n const djcy = \"\\u0452\";\n const dlcorn = \"\\u231E\";\n const dlcrop = \"\\u230D\";\n const dollar = \"$\";\n const Dopf = \"\\u{1D53B}\";\n const dopf = \"\\u{1D555}\";\n const Dot = \"\\xA8\";\n const dot = \"\\u02D9\";\n const DotDot = \"\\u20DC\";\n const doteq = \"\\u2250\";\n const doteqdot = \"\\u2251\";\n const DotEqual = \"\\u2250\";\n const dotminus = \"\\u2238\";\n const dotplus = \"\\u2214\";\n const dotsquare = \"\\u22A1\";\n const doublebarwedge = \"\\u2306\";\n const DoubleContourIntegral = \"\\u222F\";\n const DoubleDot = \"\\xA8\";\n const DoubleDownArrow = \"\\u21D3\";\n const DoubleLeftArrow = \"\\u21D0\";\n const DoubleLeftRightArrow = \"\\u21D4\";\n const DoubleLeftTee = \"\\u2AE4\";\n const DoubleLongLeftArrow = \"\\u27F8\";\n const DoubleLongLeftRightArrow = \"\\u27FA\";\n const DoubleLongRightArrow = \"\\u27F9\";\n const DoubleRightArrow = \"\\u21D2\";\n const DoubleRightTee = \"\\u22A8\";\n const DoubleUpArrow = \"\\u21D1\";\n const DoubleUpDownArrow = \"\\u21D5\";\n const DoubleVerticalBar = \"\\u2225\";\n const DownArrowBar = \"\\u2913\";\n const downarrow = \"\\u2193\";\n const DownArrow = \"\\u2193\";\n const Downarrow = \"\\u21D3\";\n const DownArrowUpArrow = \"\\u21F5\";\n const DownBreve = \"\\u0311\";\n const downdownarrows = \"\\u21CA\";\n const downharpoonleft = \"\\u21C3\";\n const downharpoonright = \"\\u21C2\";\n const DownLeftRightVector = \"\\u2950\";\n const DownLeftTeeVector = \"\\u295E\";\n const DownLeftVectorBar = \"\\u2956\";\n const DownLeftVector = \"\\u21BD\";\n const DownRightTeeVector = \"\\u295F\";\n const DownRightVectorBar = \"\\u2957\";\n const DownRightVector = \"\\u21C1\";\n const DownTeeArrow = \"\\u21A7\";\n const DownTee = \"\\u22A4\";\n const drbkarow = \"\\u2910\";\n const drcorn = \"\\u231F\";\n const drcrop = \"\\u230C\";\n const Dscr = \"\\u{1D49F}\";\n const dscr = \"\\u{1D4B9}\";\n const DScy = \"\\u0405\";\n const dscy = \"\\u0455\";\n const dsol = \"\\u29F6\";\n const Dstrok = \"\\u0110\";\n const dstrok = \"\\u0111\";\n const dtdot = \"\\u22F1\";\n const dtri = \"\\u25BF\";\n const dtrif = \"\\u25BE\";\n const duarr = \"\\u21F5\";\n const duhar = \"\\u296F\";\n const dwangle = \"\\u29A6\";\n const DZcy = \"\\u040F\";\n const dzcy = \"\\u045F\";\n const dzigrarr = \"\\u27FF\";\n const Eacute = \"\\xC9\";\n const eacute = \"\\xE9\";\n const easter = \"\\u2A6E\";\n const Ecaron = \"\\u011A\";\n const ecaron = \"\\u011B\";\n const Ecirc = \"\\xCA\";\n const ecirc = \"\\xEA\";\n const ecir = \"\\u2256\";\n const ecolon = \"\\u2255\";\n const Ecy = \"\\u042D\";\n const ecy = \"\\u044D\";\n const eDDot = \"\\u2A77\";\n const Edot = \"\\u0116\";\n const edot = \"\\u0117\";\n const eDot = \"\\u2251\";\n const ee = \"\\u2147\";\n const efDot = \"\\u2252\";\n const Efr = \"\\u{1D508}\";\n const efr = \"\\u{1D522}\";\n const eg = \"\\u2A9A\";\n const Egrave = \"\\xC8\";\n const egrave = \"\\xE8\";\n const egs = \"\\u2A96\";\n const egsdot = \"\\u2A98\";\n const el = \"\\u2A99\";\n const Element = \"\\u2208\";\n const elinters = \"\\u23E7\";\n const ell = \"\\u2113\";\n const els = \"\\u2A95\";\n const elsdot = \"\\u2A97\";\n const Emacr = \"\\u0112\";\n const emacr = \"\\u0113\";\n const empty = \"\\u2205\";\n const emptyset = \"\\u2205\";\n const EmptySmallSquare = \"\\u25FB\";\n const emptyv = \"\\u2205\";\n const EmptyVerySmallSquare = \"\\u25AB\";\n const emsp13 = \"\\u2004\";\n const emsp14 = \"\\u2005\";\n const emsp = \"\\u2003\";\n const ENG = \"\\u014A\";\n const eng = \"\\u014B\";\n const ensp = \"\\u2002\";\n const Eogon = \"\\u0118\";\n const eogon = \"\\u0119\";\n const Eopf = \"\\u{1D53C}\";\n const eopf = \"\\u{1D556}\";\n const epar = \"\\u22D5\";\n const eparsl = \"\\u29E3\";\n const eplus = \"\\u2A71\";\n const epsi = \"\\u03B5\";\n const Epsilon = \"\\u0395\";\n const epsilon = \"\\u03B5\";\n const epsiv = \"\\u03F5\";\n const eqcirc = \"\\u2256\";\n const eqcolon = \"\\u2255\";\n const eqsim = \"\\u2242\";\n const eqslantgtr = \"\\u2A96\";\n const eqslantless = \"\\u2A95\";\n const Equal = \"\\u2A75\";\n const equals = \"=\";\n const EqualTilde = \"\\u2242\";\n const equest = \"\\u225F\";\n const Equilibrium = \"\\u21CC\";\n const equiv = \"\\u2261\";\n const equivDD = \"\\u2A78\";\n const eqvparsl = \"\\u29E5\";\n const erarr = \"\\u2971\";\n const erDot = \"\\u2253\";\n const escr = \"\\u212F\";\n const Escr = \"\\u2130\";\n const esdot = \"\\u2250\";\n const Esim = \"\\u2A73\";\n const esim = \"\\u2242\";\n const Eta = \"\\u0397\";\n const eta = \"\\u03B7\";\n const ETH = \"\\xD0\";\n const eth = \"\\xF0\";\n const Euml = \"\\xCB\";\n const euml = \"\\xEB\";\n const euro = \"\\u20AC\";\n const excl = \"!\";\n const exist = \"\\u2203\";\n const Exists = \"\\u2203\";\n const expectation = \"\\u2130\";\n const exponentiale = \"\\u2147\";\n const ExponentialE = \"\\u2147\";\n const fallingdotseq = \"\\u2252\";\n const Fcy = \"\\u0424\";\n const fcy = \"\\u0444\";\n const female = \"\\u2640\";\n const ffilig = \"\\uFB03\";\n const fflig = \"\\uFB00\";\n const ffllig = \"\\uFB04\";\n const Ffr = \"\\u{1D509}\";\n const ffr = \"\\u{1D523}\";\n const filig = \"\\uFB01\";\n const FilledSmallSquare = \"\\u25FC\";\n const FilledVerySmallSquare = \"\\u25AA\";\n const fjlig = \"fj\";\n const flat = \"\\u266D\";\n const fllig = \"\\uFB02\";\n const fltns = \"\\u25B1\";\n const fnof = \"\\u0192\";\n const Fopf = \"\\u{1D53D}\";\n const fopf = \"\\u{1D557}\";\n const forall = \"\\u2200\";\n const ForAll = \"\\u2200\";\n const fork = \"\\u22D4\";\n const forkv = \"\\u2AD9\";\n const Fouriertrf = \"\\u2131\";\n const fpartint = \"\\u2A0D\";\n const frac12 = \"\\xBD\";\n const frac13 = \"\\u2153\";\n const frac14 = \"\\xBC\";\n const frac15 = \"\\u2155\";\n const frac16 = \"\\u2159\";\n const frac18 = \"\\u215B\";\n const frac23 = \"\\u2154\";\n const frac25 = \"\\u2156\";\n const frac34 = \"\\xBE\";\n const frac35 = \"\\u2157\";\n const frac38 = \"\\u215C\";\n const frac45 = \"\\u2158\";\n const frac56 = \"\\u215A\";\n const frac58 = \"\\u215D\";\n const frac78 = \"\\u215E\";\n const frasl = \"\\u2044\";\n const frown = \"\\u2322\";\n const fscr = \"\\u{1D4BB}\";\n const Fscr = \"\\u2131\";\n const gacute = \"\\u01F5\";\n const Gamma = \"\\u0393\";\n const gamma = \"\\u03B3\";\n const Gammad = \"\\u03DC\";\n const gammad = \"\\u03DD\";\n const gap = \"\\u2A86\";\n const Gbreve = \"\\u011E\";\n const gbreve = \"\\u011F\";\n const Gcedil = \"\\u0122\";\n const Gcirc = \"\\u011C\";\n const gcirc = \"\\u011D\";\n const Gcy = \"\\u0413\";\n const gcy = \"\\u0433\";\n const Gdot = \"\\u0120\";\n const gdot = \"\\u0121\";\n const ge = \"\\u2265\";\n const gE = \"\\u2267\";\n const gEl = \"\\u2A8C\";\n const gel = \"\\u22DB\";\n const geq = \"\\u2265\";\n const geqq = \"\\u2267\";\n const geqslant = \"\\u2A7E\";\n const gescc = \"\\u2AA9\";\n const ges = \"\\u2A7E\";\n const gesdot = \"\\u2A80\";\n const gesdoto = \"\\u2A82\";\n const gesdotol = \"\\u2A84\";\n const gesl = \"\\u22DB\\uFE00\";\n const gesles = \"\\u2A94\";\n const Gfr = \"\\u{1D50A}\";\n const gfr = \"\\u{1D524}\";\n const gg = \"\\u226B\";\n const Gg = \"\\u22D9\";\n const ggg = \"\\u22D9\";\n const gimel = \"\\u2137\";\n const GJcy = \"\\u0403\";\n const gjcy = \"\\u0453\";\n const gla = \"\\u2AA5\";\n const gl = \"\\u2277\";\n const glE = \"\\u2A92\";\n const glj = \"\\u2AA4\";\n const gnap = \"\\u2A8A\";\n const gnapprox = \"\\u2A8A\";\n const gne = \"\\u2A88\";\n const gnE = \"\\u2269\";\n const gneq = \"\\u2A88\";\n const gneqq = \"\\u2269\";\n const gnsim = \"\\u22E7\";\n const Gopf = \"\\u{1D53E}\";\n const gopf = \"\\u{1D558}\";\n const grave = \"`\";\n const GreaterEqual = \"\\u2265\";\n const GreaterEqualLess = \"\\u22DB\";\n const GreaterFullEqual = \"\\u2267\";\n const GreaterGreater = \"\\u2AA2\";\n const GreaterLess = \"\\u2277\";\n const GreaterSlantEqual = \"\\u2A7E\";\n const GreaterTilde = \"\\u2273\";\n const Gscr = \"\\u{1D4A2}\";\n const gscr = \"\\u210A\";\n const gsim = \"\\u2273\";\n const gsime = \"\\u2A8E\";\n const gsiml = \"\\u2A90\";\n const gtcc = \"\\u2AA7\";\n const gtcir = \"\\u2A7A\";\n const gt = \">\";\n const GT = \">\";\n const Gt = \"\\u226B\";\n const gtdot = \"\\u22D7\";\n const gtlPar = \"\\u2995\";\n const gtquest = \"\\u2A7C\";\n const gtrapprox = \"\\u2A86\";\n const gtrarr = \"\\u2978\";\n const gtrdot = \"\\u22D7\";\n const gtreqless = \"\\u22DB\";\n const gtreqqless = \"\\u2A8C\";\n const gtrless = \"\\u2277\";\n const gtrsim = \"\\u2273\";\n const gvertneqq = \"\\u2269\\uFE00\";\n const gvnE = \"\\u2269\\uFE00\";\n const Hacek = \"\\u02C7\";\n const hairsp = \"\\u200A\";\n const half = \"\\xBD\";\n const hamilt = \"\\u210B\";\n const HARDcy = \"\\u042A\";\n const hardcy = \"\\u044A\";\n const harrcir = \"\\u2948\";\n const harr = \"\\u2194\";\n const hArr = \"\\u21D4\";\n const harrw = \"\\u21AD\";\n const Hat = \"^\";\n const hbar = \"\\u210F\";\n const Hcirc = \"\\u0124\";\n const hcirc = \"\\u0125\";\n const hearts = \"\\u2665\";\n const heartsuit = \"\\u2665\";\n const hellip = \"\\u2026\";\n const hercon = \"\\u22B9\";\n const hfr = \"\\u{1D525}\";\n const Hfr = \"\\u210C\";\n const HilbertSpace = \"\\u210B\";\n const hksearow = \"\\u2925\";\n const hkswarow = \"\\u2926\";\n const hoarr = \"\\u21FF\";\n const homtht = \"\\u223B\";\n const hookleftarrow = \"\\u21A9\";\n const hookrightarrow = \"\\u21AA\";\n const hopf = \"\\u{1D559}\";\n const Hopf = \"\\u210D\";\n const horbar = \"\\u2015\";\n const HorizontalLine = \"\\u2500\";\n const hscr = \"\\u{1D4BD}\";\n const Hscr = \"\\u210B\";\n const hslash = \"\\u210F\";\n const Hstrok = \"\\u0126\";\n const hstrok = \"\\u0127\";\n const HumpDownHump = \"\\u224E\";\n const HumpEqual = \"\\u224F\";\n const hybull = \"\\u2043\";\n const hyphen = \"\\u2010\";\n const Iacute = \"\\xCD\";\n const iacute = \"\\xED\";\n const ic = \"\\u2063\";\n const Icirc = \"\\xCE\";\n const icirc = \"\\xEE\";\n const Icy = \"\\u0418\";\n const icy = \"\\u0438\";\n const Idot = \"\\u0130\";\n const IEcy = \"\\u0415\";\n const iecy = \"\\u0435\";\n const iexcl = \"\\xA1\";\n const iff = \"\\u21D4\";\n const ifr = \"\\u{1D526}\";\n const Ifr = \"\\u2111\";\n const Igrave = \"\\xCC\";\n const igrave = \"\\xEC\";\n const ii = \"\\u2148\";\n const iiiint = \"\\u2A0C\";\n const iiint = \"\\u222D\";\n const iinfin = \"\\u29DC\";\n const iiota = \"\\u2129\";\n const IJlig = \"\\u0132\";\n const ijlig = \"\\u0133\";\n const Imacr = \"\\u012A\";\n const imacr = \"\\u012B\";\n const image$1 = \"\\u2111\";\n const ImaginaryI = \"\\u2148\";\n const imagline = \"\\u2110\";\n const imagpart = \"\\u2111\";\n const imath = \"\\u0131\";\n const Im = \"\\u2111\";\n const imof = \"\\u22B7\";\n const imped = \"\\u01B5\";\n const Implies = \"\\u21D2\";\n const incare = \"\\u2105\";\n const infin = \"\\u221E\";\n const infintie = \"\\u29DD\";\n const inodot = \"\\u0131\";\n const intcal = \"\\u22BA\";\n const int = \"\\u222B\";\n const Int = \"\\u222C\";\n const integers = \"\\u2124\";\n const Integral = \"\\u222B\";\n const intercal = \"\\u22BA\";\n const Intersection = \"\\u22C2\";\n const intlarhk = \"\\u2A17\";\n const intprod = \"\\u2A3C\";\n const InvisibleComma = \"\\u2063\";\n const InvisibleTimes = \"\\u2062\";\n const IOcy = \"\\u0401\";\n const iocy = \"\\u0451\";\n const Iogon = \"\\u012E\";\n const iogon = \"\\u012F\";\n const Iopf = \"\\u{1D540}\";\n const iopf = \"\\u{1D55A}\";\n const Iota = \"\\u0399\";\n const iota = \"\\u03B9\";\n const iprod = \"\\u2A3C\";\n const iquest = \"\\xBF\";\n const iscr = \"\\u{1D4BE}\";\n const Iscr = \"\\u2110\";\n const isin = \"\\u2208\";\n const isindot = \"\\u22F5\";\n const isinE = \"\\u22F9\";\n const isins = \"\\u22F4\";\n const isinsv = \"\\u22F3\";\n const isinv = \"\\u2208\";\n const it = \"\\u2062\";\n const Itilde = \"\\u0128\";\n const itilde = \"\\u0129\";\n const Iukcy = \"\\u0406\";\n const iukcy = \"\\u0456\";\n const Iuml = \"\\xCF\";\n const iuml = \"\\xEF\";\n const Jcirc = \"\\u0134\";\n const jcirc = \"\\u0135\";\n const Jcy = \"\\u0419\";\n const jcy = \"\\u0439\";\n const Jfr = \"\\u{1D50D}\";\n const jfr = \"\\u{1D527}\";\n const jmath = \"\\u0237\";\n const Jopf = \"\\u{1D541}\";\n const jopf = \"\\u{1D55B}\";\n const Jscr = \"\\u{1D4A5}\";\n const jscr = \"\\u{1D4BF}\";\n const Jsercy = \"\\u0408\";\n const jsercy = \"\\u0458\";\n const Jukcy = \"\\u0404\";\n const jukcy = \"\\u0454\";\n const Kappa = \"\\u039A\";\n const kappa = \"\\u03BA\";\n const kappav = \"\\u03F0\";\n const Kcedil = \"\\u0136\";\n const kcedil = \"\\u0137\";\n const Kcy = \"\\u041A\";\n const kcy = \"\\u043A\";\n const Kfr = \"\\u{1D50E}\";\n const kfr = \"\\u{1D528}\";\n const kgreen = \"\\u0138\";\n const KHcy = \"\\u0425\";\n const khcy = \"\\u0445\";\n const KJcy = \"\\u040C\";\n const kjcy = \"\\u045C\";\n const Kopf = \"\\u{1D542}\";\n const kopf = \"\\u{1D55C}\";\n const Kscr = \"\\u{1D4A6}\";\n const kscr = \"\\u{1D4C0}\";\n const lAarr = \"\\u21DA\";\n const Lacute = \"\\u0139\";\n const lacute = \"\\u013A\";\n const laemptyv = \"\\u29B4\";\n const lagran = \"\\u2112\";\n const Lambda = \"\\u039B\";\n const lambda = \"\\u03BB\";\n const lang = \"\\u27E8\";\n const Lang = \"\\u27EA\";\n const langd = \"\\u2991\";\n const langle = \"\\u27E8\";\n const lap = \"\\u2A85\";\n const Laplacetrf = \"\\u2112\";\n const laquo = \"\\xAB\";\n const larrb = \"\\u21E4\";\n const larrbfs = \"\\u291F\";\n const larr = \"\\u2190\";\n const Larr = \"\\u219E\";\n const lArr = \"\\u21D0\";\n const larrfs = \"\\u291D\";\n const larrhk = \"\\u21A9\";\n const larrlp = \"\\u21AB\";\n const larrpl = \"\\u2939\";\n const larrsim = \"\\u2973\";\n const larrtl = \"\\u21A2\";\n const latail = \"\\u2919\";\n const lAtail = \"\\u291B\";\n const lat = \"\\u2AAB\";\n const late = \"\\u2AAD\";\n const lates = \"\\u2AAD\\uFE00\";\n const lbarr = \"\\u290C\";\n const lBarr = \"\\u290E\";\n const lbbrk = \"\\u2772\";\n const lbrace = \"{\";\n const lbrack = \"[\";\n const lbrke = \"\\u298B\";\n const lbrksld = \"\\u298F\";\n const lbrkslu = \"\\u298D\";\n const Lcaron = \"\\u013D\";\n const lcaron = \"\\u013E\";\n const Lcedil = \"\\u013B\";\n const lcedil = \"\\u013C\";\n const lceil = \"\\u2308\";\n const lcub = \"{\";\n const Lcy = \"\\u041B\";\n const lcy = \"\\u043B\";\n const ldca = \"\\u2936\";\n const ldquo = \"\\u201C\";\n const ldquor = \"\\u201E\";\n const ldrdhar = \"\\u2967\";\n const ldrushar = \"\\u294B\";\n const ldsh = \"\\u21B2\";\n const le = \"\\u2264\";\n const lE = \"\\u2266\";\n const LeftAngleBracket = \"\\u27E8\";\n const LeftArrowBar = \"\\u21E4\";\n const leftarrow = \"\\u2190\";\n const LeftArrow = \"\\u2190\";\n const Leftarrow = \"\\u21D0\";\n const LeftArrowRightArrow = \"\\u21C6\";\n const leftarrowtail = \"\\u21A2\";\n const LeftCeiling = \"\\u2308\";\n const LeftDoubleBracket = \"\\u27E6\";\n const LeftDownTeeVector = \"\\u2961\";\n const LeftDownVectorBar = \"\\u2959\";\n const LeftDownVector = \"\\u21C3\";\n const LeftFloor = \"\\u230A\";\n const leftharpoondown = \"\\u21BD\";\n const leftharpoonup = \"\\u21BC\";\n const leftleftarrows = \"\\u21C7\";\n const leftrightarrow = \"\\u2194\";\n const LeftRightArrow = \"\\u2194\";\n const Leftrightarrow = \"\\u21D4\";\n const leftrightarrows = \"\\u21C6\";\n const leftrightharpoons = \"\\u21CB\";\n const leftrightsquigarrow = \"\\u21AD\";\n const LeftRightVector = \"\\u294E\";\n const LeftTeeArrow = \"\\u21A4\";\n const LeftTee = \"\\u22A3\";\n const LeftTeeVector = \"\\u295A\";\n const leftthreetimes = \"\\u22CB\";\n const LeftTriangleBar = \"\\u29CF\";\n const LeftTriangle = \"\\u22B2\";\n const LeftTriangleEqual = \"\\u22B4\";\n const LeftUpDownVector = \"\\u2951\";\n const LeftUpTeeVector = \"\\u2960\";\n const LeftUpVectorBar = \"\\u2958\";\n const LeftUpVector = \"\\u21BF\";\n const LeftVectorBar = \"\\u2952\";\n const LeftVector = \"\\u21BC\";\n const lEg = \"\\u2A8B\";\n const leg = \"\\u22DA\";\n const leq = \"\\u2264\";\n const leqq = \"\\u2266\";\n const leqslant = \"\\u2A7D\";\n const lescc = \"\\u2AA8\";\n const les = \"\\u2A7D\";\n const lesdot = \"\\u2A7F\";\n const lesdoto = \"\\u2A81\";\n const lesdotor = \"\\u2A83\";\n const lesg = \"\\u22DA\\uFE00\";\n const lesges = \"\\u2A93\";\n const lessapprox = \"\\u2A85\";\n const lessdot = \"\\u22D6\";\n const lesseqgtr = \"\\u22DA\";\n const lesseqqgtr = \"\\u2A8B\";\n const LessEqualGreater = \"\\u22DA\";\n const LessFullEqual = \"\\u2266\";\n const LessGreater = \"\\u2276\";\n const lessgtr = \"\\u2276\";\n const LessLess = \"\\u2AA1\";\n const lesssim = \"\\u2272\";\n const LessSlantEqual = \"\\u2A7D\";\n const LessTilde = \"\\u2272\";\n const lfisht = \"\\u297C\";\n const lfloor = \"\\u230A\";\n const Lfr = \"\\u{1D50F}\";\n const lfr = \"\\u{1D529}\";\n const lg = \"\\u2276\";\n const lgE = \"\\u2A91\";\n const lHar = \"\\u2962\";\n const lhard = \"\\u21BD\";\n const lharu = \"\\u21BC\";\n const lharul = \"\\u296A\";\n const lhblk = \"\\u2584\";\n const LJcy = \"\\u0409\";\n const ljcy = \"\\u0459\";\n const llarr = \"\\u21C7\";\n const ll = \"\\u226A\";\n const Ll = \"\\u22D8\";\n const llcorner = \"\\u231E\";\n const Lleftarrow = \"\\u21DA\";\n const llhard = \"\\u296B\";\n const lltri = \"\\u25FA\";\n const Lmidot = \"\\u013F\";\n const lmidot = \"\\u0140\";\n const lmoustache = \"\\u23B0\";\n const lmoust = \"\\u23B0\";\n const lnap = \"\\u2A89\";\n const lnapprox = \"\\u2A89\";\n const lne = \"\\u2A87\";\n const lnE = \"\\u2268\";\n const lneq = \"\\u2A87\";\n const lneqq = \"\\u2268\";\n const lnsim = \"\\u22E6\";\n const loang = \"\\u27EC\";\n const loarr = \"\\u21FD\";\n const lobrk = \"\\u27E6\";\n const longleftarrow = \"\\u27F5\";\n const LongLeftArrow = \"\\u27F5\";\n const Longleftarrow = \"\\u27F8\";\n const longleftrightarrow = \"\\u27F7\";\n const LongLeftRightArrow = \"\\u27F7\";\n const Longleftrightarrow = \"\\u27FA\";\n const longmapsto = \"\\u27FC\";\n const longrightarrow = \"\\u27F6\";\n const LongRightArrow = \"\\u27F6\";\n const Longrightarrow = \"\\u27F9\";\n const looparrowleft = \"\\u21AB\";\n const looparrowright = \"\\u21AC\";\n const lopar = \"\\u2985\";\n const Lopf = \"\\u{1D543}\";\n const lopf = \"\\u{1D55D}\";\n const loplus = \"\\u2A2D\";\n const lotimes = \"\\u2A34\";\n const lowast = \"\\u2217\";\n const lowbar = \"_\";\n const LowerLeftArrow = \"\\u2199\";\n const LowerRightArrow = \"\\u2198\";\n const loz = \"\\u25CA\";\n const lozenge = \"\\u25CA\";\n const lozf = \"\\u29EB\";\n const lpar = \"(\";\n const lparlt = \"\\u2993\";\n const lrarr = \"\\u21C6\";\n const lrcorner = \"\\u231F\";\n const lrhar = \"\\u21CB\";\n const lrhard = \"\\u296D\";\n const lrm = \"\\u200E\";\n const lrtri = \"\\u22BF\";\n const lsaquo = \"\\u2039\";\n const lscr = \"\\u{1D4C1}\";\n const Lscr = \"\\u2112\";\n const lsh = \"\\u21B0\";\n const Lsh = \"\\u21B0\";\n const lsim = \"\\u2272\";\n const lsime = \"\\u2A8D\";\n const lsimg = \"\\u2A8F\";\n const lsqb = \"[\";\n const lsquo = \"\\u2018\";\n const lsquor = \"\\u201A\";\n const Lstrok = \"\\u0141\";\n const lstrok = \"\\u0142\";\n const ltcc = \"\\u2AA6\";\n const ltcir = \"\\u2A79\";\n const lt = \"<\";\n const LT = \"<\";\n const Lt = \"\\u226A\";\n const ltdot = \"\\u22D6\";\n const lthree = \"\\u22CB\";\n const ltimes = \"\\u22C9\";\n const ltlarr = \"\\u2976\";\n const ltquest = \"\\u2A7B\";\n const ltri = \"\\u25C3\";\n const ltrie = \"\\u22B4\";\n const ltrif = \"\\u25C2\";\n const ltrPar = \"\\u2996\";\n const lurdshar = \"\\u294A\";\n const luruhar = \"\\u2966\";\n const lvertneqq = \"\\u2268\\uFE00\";\n const lvnE = \"\\u2268\\uFE00\";\n const macr = \"\\xAF\";\n const male = \"\\u2642\";\n const malt = \"\\u2720\";\n const maltese = \"\\u2720\";\n const map$1 = \"\\u21A6\";\n const mapsto = \"\\u21A6\";\n const mapstodown = \"\\u21A7\";\n const mapstoleft = \"\\u21A4\";\n const mapstoup = \"\\u21A5\";\n const marker = \"\\u25AE\";\n const mcomma = \"\\u2A29\";\n const Mcy = \"\\u041C\";\n const mcy = \"\\u043C\";\n const mdash = \"\\u2014\";\n const mDDot = \"\\u223A\";\n const measuredangle = \"\\u2221\";\n const MediumSpace = \"\\u205F\";\n const Mellintrf = \"\\u2133\";\n const Mfr = \"\\u{1D510}\";\n const mfr = \"\\u{1D52A}\";\n const mho = \"\\u2127\";\n const micro = \"\\xB5\";\n const midast = \"*\";\n const midcir = \"\\u2AF0\";\n const mid = \"\\u2223\";\n const middot = \"\\xB7\";\n const minusb = \"\\u229F\";\n const minus = \"\\u2212\";\n const minusd = \"\\u2238\";\n const minusdu = \"\\u2A2A\";\n const MinusPlus = \"\\u2213\";\n const mlcp = \"\\u2ADB\";\n const mldr = \"\\u2026\";\n const mnplus = \"\\u2213\";\n const models = \"\\u22A7\";\n const Mopf = \"\\u{1D544}\";\n const mopf = \"\\u{1D55E}\";\n const mp = \"\\u2213\";\n const mscr = \"\\u{1D4C2}\";\n const Mscr = \"\\u2133\";\n const mstpos = \"\\u223E\";\n const Mu = \"\\u039C\";\n const mu = \"\\u03BC\";\n const multimap = \"\\u22B8\";\n const mumap = \"\\u22B8\";\n const nabla = \"\\u2207\";\n const Nacute = \"\\u0143\";\n const nacute = \"\\u0144\";\n const nang = \"\\u2220\\u20D2\";\n const nap = \"\\u2249\";\n const napE = \"\\u2A70\\u0338\";\n const napid = \"\\u224B\\u0338\";\n const napos = \"\\u0149\";\n const napprox = \"\\u2249\";\n const natural = \"\\u266E\";\n const naturals = \"\\u2115\";\n const natur = \"\\u266E\";\n const nbsp = \"\\xA0\";\n const nbump = \"\\u224E\\u0338\";\n const nbumpe = \"\\u224F\\u0338\";\n const ncap = \"\\u2A43\";\n const Ncaron = \"\\u0147\";\n const ncaron = \"\\u0148\";\n const Ncedil = \"\\u0145\";\n const ncedil = \"\\u0146\";\n const ncong = \"\\u2247\";\n const ncongdot = \"\\u2A6D\\u0338\";\n const ncup = \"\\u2A42\";\n const Ncy = \"\\u041D\";\n const ncy = \"\\u043D\";\n const ndash = \"\\u2013\";\n const nearhk = \"\\u2924\";\n const nearr = \"\\u2197\";\n const neArr = \"\\u21D7\";\n const nearrow = \"\\u2197\";\n const ne = \"\\u2260\";\n const nedot = \"\\u2250\\u0338\";\n const NegativeMediumSpace = \"\\u200B\";\n const NegativeThickSpace = \"\\u200B\";\n const NegativeThinSpace = \"\\u200B\";\n const NegativeVeryThinSpace = \"\\u200B\";\n const nequiv = \"\\u2262\";\n const nesear = \"\\u2928\";\n const nesim = \"\\u2242\\u0338\";\n const NestedGreaterGreater = \"\\u226B\";\n const NestedLessLess = \"\\u226A\";\n const NewLine = \"\\n\";\n const nexist = \"\\u2204\";\n const nexists = \"\\u2204\";\n const Nfr = \"\\u{1D511}\";\n const nfr = \"\\u{1D52B}\";\n const ngE = \"\\u2267\\u0338\";\n const nge = \"\\u2271\";\n const ngeq = \"\\u2271\";\n const ngeqq = \"\\u2267\\u0338\";\n const ngeqslant = \"\\u2A7E\\u0338\";\n const nges = \"\\u2A7E\\u0338\";\n const nGg = \"\\u22D9\\u0338\";\n const ngsim = \"\\u2275\";\n const nGt = \"\\u226B\\u20D2\";\n const ngt = \"\\u226F\";\n const ngtr = \"\\u226F\";\n const nGtv = \"\\u226B\\u0338\";\n const nharr = \"\\u21AE\";\n const nhArr = \"\\u21CE\";\n const nhpar = \"\\u2AF2\";\n const ni = \"\\u220B\";\n const nis = \"\\u22FC\";\n const nisd = \"\\u22FA\";\n const niv = \"\\u220B\";\n const NJcy = \"\\u040A\";\n const njcy = \"\\u045A\";\n const nlarr = \"\\u219A\";\n const nlArr = \"\\u21CD\";\n const nldr = \"\\u2025\";\n const nlE = \"\\u2266\\u0338\";\n const nle = \"\\u2270\";\n const nleftarrow = \"\\u219A\";\n const nLeftarrow = \"\\u21CD\";\n const nleftrightarrow = \"\\u21AE\";\n const nLeftrightarrow = \"\\u21CE\";\n const nleq = \"\\u2270\";\n const nleqq = \"\\u2266\\u0338\";\n const nleqslant = \"\\u2A7D\\u0338\";\n const nles = \"\\u2A7D\\u0338\";\n const nless = \"\\u226E\";\n const nLl = \"\\u22D8\\u0338\";\n const nlsim = \"\\u2274\";\n const nLt = \"\\u226A\\u20D2\";\n const nlt = \"\\u226E\";\n const nltri = \"\\u22EA\";\n const nltrie = \"\\u22EC\";\n const nLtv = \"\\u226A\\u0338\";\n const nmid = \"\\u2224\";\n const NoBreak = \"\\u2060\";\n const NonBreakingSpace = \"\\xA0\";\n const nopf = \"\\u{1D55F}\";\n const Nopf = \"\\u2115\";\n const Not = \"\\u2AEC\";\n const not = \"\\xAC\";\n const NotCongruent = \"\\u2262\";\n const NotCupCap = \"\\u226D\";\n const NotDoubleVerticalBar = \"\\u2226\";\n const NotElement = \"\\u2209\";\n const NotEqual = \"\\u2260\";\n const NotEqualTilde = \"\\u2242\\u0338\";\n const NotExists = \"\\u2204\";\n const NotGreater = \"\\u226F\";\n const NotGreaterEqual = \"\\u2271\";\n const NotGreaterFullEqual = \"\\u2267\\u0338\";\n const NotGreaterGreater = \"\\u226B\\u0338\";\n const NotGreaterLess = \"\\u2279\";\n const NotGreaterSlantEqual = \"\\u2A7E\\u0338\";\n const NotGreaterTilde = \"\\u2275\";\n const NotHumpDownHump = \"\\u224E\\u0338\";\n const NotHumpEqual = \"\\u224F\\u0338\";\n const notin = \"\\u2209\";\n const notindot = \"\\u22F5\\u0338\";\n const notinE = \"\\u22F9\\u0338\";\n const notinva = \"\\u2209\";\n const notinvb = \"\\u22F7\";\n const notinvc = \"\\u22F6\";\n const NotLeftTriangleBar = \"\\u29CF\\u0338\";\n const NotLeftTriangle = \"\\u22EA\";\n const NotLeftTriangleEqual = \"\\u22EC\";\n const NotLess = \"\\u226E\";\n const NotLessEqual = \"\\u2270\";\n const NotLessGreater = \"\\u2278\";\n const NotLessLess = \"\\u226A\\u0338\";\n const NotLessSlantEqual = \"\\u2A7D\\u0338\";\n const NotLessTilde = \"\\u2274\";\n const NotNestedGreaterGreater = \"\\u2AA2\\u0338\";\n const NotNestedLessLess = \"\\u2AA1\\u0338\";\n const notni = \"\\u220C\";\n const notniva = \"\\u220C\";\n const notnivb = \"\\u22FE\";\n const notnivc = \"\\u22FD\";\n const NotPrecedes = \"\\u2280\";\n const NotPrecedesEqual = \"\\u2AAF\\u0338\";\n const NotPrecedesSlantEqual = \"\\u22E0\";\n const NotReverseElement = \"\\u220C\";\n const NotRightTriangleBar = \"\\u29D0\\u0338\";\n const NotRightTriangle = \"\\u22EB\";\n const NotRightTriangleEqual = \"\\u22ED\";\n const NotSquareSubset = \"\\u228F\\u0338\";\n const NotSquareSubsetEqual = \"\\u22E2\";\n const NotSquareSuperset = \"\\u2290\\u0338\";\n const NotSquareSupersetEqual = \"\\u22E3\";\n const NotSubset = \"\\u2282\\u20D2\";\n const NotSubsetEqual = \"\\u2288\";\n const NotSucceeds = \"\\u2281\";\n const NotSucceedsEqual = \"\\u2AB0\\u0338\";\n const NotSucceedsSlantEqual = \"\\u22E1\";\n const NotSucceedsTilde = \"\\u227F\\u0338\";\n const NotSuperset = \"\\u2283\\u20D2\";\n const NotSupersetEqual = \"\\u2289\";\n const NotTilde = \"\\u2241\";\n const NotTildeEqual = \"\\u2244\";\n const NotTildeFullEqual = \"\\u2247\";\n const NotTildeTilde = \"\\u2249\";\n const NotVerticalBar = \"\\u2224\";\n const nparallel = \"\\u2226\";\n const npar = \"\\u2226\";\n const nparsl = \"\\u2AFD\\u20E5\";\n const npart = \"\\u2202\\u0338\";\n const npolint = \"\\u2A14\";\n const npr = \"\\u2280\";\n const nprcue = \"\\u22E0\";\n const nprec = \"\\u2280\";\n const npreceq = \"\\u2AAF\\u0338\";\n const npre = \"\\u2AAF\\u0338\";\n const nrarrc = \"\\u2933\\u0338\";\n const nrarr = \"\\u219B\";\n const nrArr = \"\\u21CF\";\n const nrarrw = \"\\u219D\\u0338\";\n const nrightarrow = \"\\u219B\";\n const nRightarrow = \"\\u21CF\";\n const nrtri = \"\\u22EB\";\n const nrtrie = \"\\u22ED\";\n const nsc = \"\\u2281\";\n const nsccue = \"\\u22E1\";\n const nsce = \"\\u2AB0\\u0338\";\n const Nscr = \"\\u{1D4A9}\";\n const nscr = \"\\u{1D4C3}\";\n const nshortmid = \"\\u2224\";\n const nshortparallel = \"\\u2226\";\n const nsim = \"\\u2241\";\n const nsime = \"\\u2244\";\n const nsimeq = \"\\u2244\";\n const nsmid = \"\\u2224\";\n const nspar = \"\\u2226\";\n const nsqsube = \"\\u22E2\";\n const nsqsupe = \"\\u22E3\";\n const nsub = \"\\u2284\";\n const nsubE = \"\\u2AC5\\u0338\";\n const nsube = \"\\u2288\";\n const nsubset = \"\\u2282\\u20D2\";\n const nsubseteq = \"\\u2288\";\n const nsubseteqq = \"\\u2AC5\\u0338\";\n const nsucc = \"\\u2281\";\n const nsucceq = \"\\u2AB0\\u0338\";\n const nsup = \"\\u2285\";\n const nsupE = \"\\u2AC6\\u0338\";\n const nsupe = \"\\u2289\";\n const nsupset = \"\\u2283\\u20D2\";\n const nsupseteq = \"\\u2289\";\n const nsupseteqq = \"\\u2AC6\\u0338\";\n const ntgl = \"\\u2279\";\n const Ntilde = \"\\xD1\";\n const ntilde = \"\\xF1\";\n const ntlg = \"\\u2278\";\n const ntriangleleft = \"\\u22EA\";\n const ntrianglelefteq = \"\\u22EC\";\n const ntriangleright = \"\\u22EB\";\n const ntrianglerighteq = \"\\u22ED\";\n const Nu = \"\\u039D\";\n const nu = \"\\u03BD\";\n const num = \"#\";\n const numero = \"\\u2116\";\n const numsp = \"\\u2007\";\n const nvap = \"\\u224D\\u20D2\";\n const nvdash = \"\\u22AC\";\n const nvDash = \"\\u22AD\";\n const nVdash = \"\\u22AE\";\n const nVDash = \"\\u22AF\";\n const nvge = \"\\u2265\\u20D2\";\n const nvgt = \">\\u20D2\";\n const nvHarr = \"\\u2904\";\n const nvinfin = \"\\u29DE\";\n const nvlArr = \"\\u2902\";\n const nvle = \"\\u2264\\u20D2\";\n const nvlt = \"<\\u20D2\";\n const nvltrie = \"\\u22B4\\u20D2\";\n const nvrArr = \"\\u2903\";\n const nvrtrie = \"\\u22B5\\u20D2\";\n const nvsim = \"\\u223C\\u20D2\";\n const nwarhk = \"\\u2923\";\n const nwarr = \"\\u2196\";\n const nwArr = \"\\u21D6\";\n const nwarrow = \"\\u2196\";\n const nwnear = \"\\u2927\";\n const Oacute = \"\\xD3\";\n const oacute = \"\\xF3\";\n const oast = \"\\u229B\";\n const Ocirc = \"\\xD4\";\n const ocirc = \"\\xF4\";\n const ocir = \"\\u229A\";\n const Ocy = \"\\u041E\";\n const ocy = \"\\u043E\";\n const odash = \"\\u229D\";\n const Odblac = \"\\u0150\";\n const odblac = \"\\u0151\";\n const odiv = \"\\u2A38\";\n const odot = \"\\u2299\";\n const odsold = \"\\u29BC\";\n const OElig = \"\\u0152\";\n const oelig = \"\\u0153\";\n const ofcir = \"\\u29BF\";\n const Ofr = \"\\u{1D512}\";\n const ofr = \"\\u{1D52C}\";\n const ogon = \"\\u02DB\";\n const Ograve = \"\\xD2\";\n const ograve = \"\\xF2\";\n const ogt = \"\\u29C1\";\n const ohbar = \"\\u29B5\";\n const ohm = \"\\u03A9\";\n const oint = \"\\u222E\";\n const olarr = \"\\u21BA\";\n const olcir = \"\\u29BE\";\n const olcross = \"\\u29BB\";\n const oline = \"\\u203E\";\n const olt = \"\\u29C0\";\n const Omacr = \"\\u014C\";\n const omacr = \"\\u014D\";\n const Omega = \"\\u03A9\";\n const omega = \"\\u03C9\";\n const Omicron = \"\\u039F\";\n const omicron = \"\\u03BF\";\n const omid = \"\\u29B6\";\n const ominus = \"\\u2296\";\n const Oopf = \"\\u{1D546}\";\n const oopf = \"\\u{1D560}\";\n const opar = \"\\u29B7\";\n const OpenCurlyDoubleQuote = \"\\u201C\";\n const OpenCurlyQuote = \"\\u2018\";\n const operp = \"\\u29B9\";\n const oplus = \"\\u2295\";\n const orarr = \"\\u21BB\";\n const Or = \"\\u2A54\";\n const or = \"\\u2228\";\n const ord = \"\\u2A5D\";\n const order = \"\\u2134\";\n const orderof = \"\\u2134\";\n const ordf = \"\\xAA\";\n const ordm = \"\\xBA\";\n const origof = \"\\u22B6\";\n const oror = \"\\u2A56\";\n const orslope = \"\\u2A57\";\n const orv = \"\\u2A5B\";\n const oS = \"\\u24C8\";\n const Oscr = \"\\u{1D4AA}\";\n const oscr = \"\\u2134\";\n const Oslash = \"\\xD8\";\n const oslash = \"\\xF8\";\n const osol = \"\\u2298\";\n const Otilde = \"\\xD5\";\n const otilde = \"\\xF5\";\n const otimesas = \"\\u2A36\";\n const Otimes = \"\\u2A37\";\n const otimes = \"\\u2297\";\n const Ouml = \"\\xD6\";\n const ouml = \"\\xF6\";\n const ovbar = \"\\u233D\";\n const OverBar = \"\\u203E\";\n const OverBrace = \"\\u23DE\";\n const OverBracket = \"\\u23B4\";\n const OverParenthesis = \"\\u23DC\";\n const para = \"\\xB6\";\n const parallel = \"\\u2225\";\n const par = \"\\u2225\";\n const parsim = \"\\u2AF3\";\n const parsl = \"\\u2AFD\";\n const part = \"\\u2202\";\n const PartialD = \"\\u2202\";\n const Pcy = \"\\u041F\";\n const pcy = \"\\u043F\";\n const percnt = \"%\";\n const period = \".\";\n const permil = \"\\u2030\";\n const perp = \"\\u22A5\";\n const pertenk = \"\\u2031\";\n const Pfr = \"\\u{1D513}\";\n const pfr = \"\\u{1D52D}\";\n const Phi = \"\\u03A6\";\n const phi = \"\\u03C6\";\n const phiv = \"\\u03D5\";\n const phmmat = \"\\u2133\";\n const phone = \"\\u260E\";\n const Pi = \"\\u03A0\";\n const pi = \"\\u03C0\";\n const pitchfork = \"\\u22D4\";\n const piv = \"\\u03D6\";\n const planck = \"\\u210F\";\n const planckh = \"\\u210E\";\n const plankv = \"\\u210F\";\n const plusacir = \"\\u2A23\";\n const plusb = \"\\u229E\";\n const pluscir = \"\\u2A22\";\n const plus = \"+\";\n const plusdo = \"\\u2214\";\n const plusdu = \"\\u2A25\";\n const pluse = \"\\u2A72\";\n const PlusMinus = \"\\xB1\";\n const plusmn = \"\\xB1\";\n const plussim = \"\\u2A26\";\n const plustwo = \"\\u2A27\";\n const pm = \"\\xB1\";\n const Poincareplane = \"\\u210C\";\n const pointint = \"\\u2A15\";\n const popf = \"\\u{1D561}\";\n const Popf = \"\\u2119\";\n const pound = \"\\xA3\";\n const prap = \"\\u2AB7\";\n const Pr = \"\\u2ABB\";\n const pr = \"\\u227A\";\n const prcue = \"\\u227C\";\n const precapprox = \"\\u2AB7\";\n const prec = \"\\u227A\";\n const preccurlyeq = \"\\u227C\";\n const Precedes = \"\\u227A\";\n const PrecedesEqual = \"\\u2AAF\";\n const PrecedesSlantEqual = \"\\u227C\";\n const PrecedesTilde = \"\\u227E\";\n const preceq = \"\\u2AAF\";\n const precnapprox = \"\\u2AB9\";\n const precneqq = \"\\u2AB5\";\n const precnsim = \"\\u22E8\";\n const pre = \"\\u2AAF\";\n const prE = \"\\u2AB3\";\n const precsim = \"\\u227E\";\n const prime = \"\\u2032\";\n const Prime = \"\\u2033\";\n const primes = \"\\u2119\";\n const prnap = \"\\u2AB9\";\n const prnE = \"\\u2AB5\";\n const prnsim = \"\\u22E8\";\n const prod = \"\\u220F\";\n const Product = \"\\u220F\";\n const profalar = \"\\u232E\";\n const profline = \"\\u2312\";\n const profsurf = \"\\u2313\";\n const prop = \"\\u221D\";\n const Proportional = \"\\u221D\";\n const Proportion = \"\\u2237\";\n const propto = \"\\u221D\";\n const prsim = \"\\u227E\";\n const prurel = \"\\u22B0\";\n const Pscr = \"\\u{1D4AB}\";\n const pscr = \"\\u{1D4C5}\";\n const Psi = \"\\u03A8\";\n const psi = \"\\u03C8\";\n const puncsp = \"\\u2008\";\n const Qfr = \"\\u{1D514}\";\n const qfr = \"\\u{1D52E}\";\n const qint = \"\\u2A0C\";\n const qopf = \"\\u{1D562}\";\n const Qopf = \"\\u211A\";\n const qprime = \"\\u2057\";\n const Qscr = \"\\u{1D4AC}\";\n const qscr = \"\\u{1D4C6}\";\n const quaternions = \"\\u210D\";\n const quatint = \"\\u2A16\";\n const quest = \"?\";\n const questeq = \"\\u225F\";\n const quot = '\"';\n const QUOT = '\"';\n const rAarr = \"\\u21DB\";\n const race = \"\\u223D\\u0331\";\n const Racute = \"\\u0154\";\n const racute = \"\\u0155\";\n const radic = \"\\u221A\";\n const raemptyv = \"\\u29B3\";\n const rang = \"\\u27E9\";\n const Rang = \"\\u27EB\";\n const rangd = \"\\u2992\";\n const range = \"\\u29A5\";\n const rangle = \"\\u27E9\";\n const raquo = \"\\xBB\";\n const rarrap = \"\\u2975\";\n const rarrb = \"\\u21E5\";\n const rarrbfs = \"\\u2920\";\n const rarrc = \"\\u2933\";\n const rarr = \"\\u2192\";\n const Rarr = \"\\u21A0\";\n const rArr = \"\\u21D2\";\n const rarrfs = \"\\u291E\";\n const rarrhk = \"\\u21AA\";\n const rarrlp = \"\\u21AC\";\n const rarrpl = \"\\u2945\";\n const rarrsim = \"\\u2974\";\n const Rarrtl = \"\\u2916\";\n const rarrtl = \"\\u21A3\";\n const rarrw = \"\\u219D\";\n const ratail = \"\\u291A\";\n const rAtail = \"\\u291C\";\n const ratio = \"\\u2236\";\n const rationals = \"\\u211A\";\n const rbarr = \"\\u290D\";\n const rBarr = \"\\u290F\";\n const RBarr = \"\\u2910\";\n const rbbrk = \"\\u2773\";\n const rbrace = \"}\";\n const rbrack = \"]\";\n const rbrke = \"\\u298C\";\n const rbrksld = \"\\u298E\";\n const rbrkslu = \"\\u2990\";\n const Rcaron = \"\\u0158\";\n const rcaron = \"\\u0159\";\n const Rcedil = \"\\u0156\";\n const rcedil = \"\\u0157\";\n const rceil = \"\\u2309\";\n const rcub = \"}\";\n const Rcy = \"\\u0420\";\n const rcy = \"\\u0440\";\n const rdca = \"\\u2937\";\n const rdldhar = \"\\u2969\";\n const rdquo = \"\\u201D\";\n const rdquor = \"\\u201D\";\n const rdsh = \"\\u21B3\";\n const real = \"\\u211C\";\n const realine = \"\\u211B\";\n const realpart = \"\\u211C\";\n const reals = \"\\u211D\";\n const Re = \"\\u211C\";\n const rect = \"\\u25AD\";\n const reg = \"\\xAE\";\n const REG = \"\\xAE\";\n const ReverseElement = \"\\u220B\";\n const ReverseEquilibrium = \"\\u21CB\";\n const ReverseUpEquilibrium = \"\\u296F\";\n const rfisht = \"\\u297D\";\n const rfloor = \"\\u230B\";\n const rfr = \"\\u{1D52F}\";\n const Rfr = \"\\u211C\";\n const rHar = \"\\u2964\";\n const rhard = \"\\u21C1\";\n const rharu = \"\\u21C0\";\n const rharul = \"\\u296C\";\n const Rho = \"\\u03A1\";\n const rho = \"\\u03C1\";\n const rhov = \"\\u03F1\";\n const RightAngleBracket = \"\\u27E9\";\n const RightArrowBar = \"\\u21E5\";\n const rightarrow = \"\\u2192\";\n const RightArrow = \"\\u2192\";\n const Rightarrow = \"\\u21D2\";\n const RightArrowLeftArrow = \"\\u21C4\";\n const rightarrowtail = \"\\u21A3\";\n const RightCeiling = \"\\u2309\";\n const RightDoubleBracket = \"\\u27E7\";\n const RightDownTeeVector = \"\\u295D\";\n const RightDownVectorBar = \"\\u2955\";\n const RightDownVector = \"\\u21C2\";\n const RightFloor = \"\\u230B\";\n const rightharpoondown = \"\\u21C1\";\n const rightharpoonup = \"\\u21C0\";\n const rightleftarrows = \"\\u21C4\";\n const rightleftharpoons = \"\\u21CC\";\n const rightrightarrows = \"\\u21C9\";\n const rightsquigarrow = \"\\u219D\";\n const RightTeeArrow = \"\\u21A6\";\n const RightTee = \"\\u22A2\";\n const RightTeeVector = \"\\u295B\";\n const rightthreetimes = \"\\u22CC\";\n const RightTriangleBar = \"\\u29D0\";\n const RightTriangle = \"\\u22B3\";\n const RightTriangleEqual = \"\\u22B5\";\n const RightUpDownVector = \"\\u294F\";\n const RightUpTeeVector = \"\\u295C\";\n const RightUpVectorBar = \"\\u2954\";\n const RightUpVector = \"\\u21BE\";\n const RightVectorBar = \"\\u2953\";\n const RightVector = \"\\u21C0\";\n const ring = \"\\u02DA\";\n const risingdotseq = \"\\u2253\";\n const rlarr = \"\\u21C4\";\n const rlhar = \"\\u21CC\";\n const rlm = \"\\u200F\";\n const rmoustache = \"\\u23B1\";\n const rmoust = \"\\u23B1\";\n const rnmid = \"\\u2AEE\";\n const roang = \"\\u27ED\";\n const roarr = \"\\u21FE\";\n const robrk = \"\\u27E7\";\n const ropar = \"\\u2986\";\n const ropf = \"\\u{1D563}\";\n const Ropf = \"\\u211D\";\n const roplus = \"\\u2A2E\";\n const rotimes = \"\\u2A35\";\n const RoundImplies = \"\\u2970\";\n const rpar = \")\";\n const rpargt = \"\\u2994\";\n const rppolint = \"\\u2A12\";\n const rrarr = \"\\u21C9\";\n const Rrightarrow = \"\\u21DB\";\n const rsaquo = \"\\u203A\";\n const rscr = \"\\u{1D4C7}\";\n const Rscr = \"\\u211B\";\n const rsh = \"\\u21B1\";\n const Rsh = \"\\u21B1\";\n const rsqb = \"]\";\n const rsquo = \"\\u2019\";\n const rsquor = \"\\u2019\";\n const rthree = \"\\u22CC\";\n const rtimes = \"\\u22CA\";\n const rtri = \"\\u25B9\";\n const rtrie = \"\\u22B5\";\n const rtrif = \"\\u25B8\";\n const rtriltri = \"\\u29CE\";\n const RuleDelayed = \"\\u29F4\";\n const ruluhar = \"\\u2968\";\n const rx = \"\\u211E\";\n const Sacute = \"\\u015A\";\n const sacute = \"\\u015B\";\n const sbquo = \"\\u201A\";\n const scap = \"\\u2AB8\";\n const Scaron = \"\\u0160\";\n const scaron = \"\\u0161\";\n const Sc = \"\\u2ABC\";\n const sc = \"\\u227B\";\n const sccue = \"\\u227D\";\n const sce = \"\\u2AB0\";\n const scE = \"\\u2AB4\";\n const Scedil = \"\\u015E\";\n const scedil = \"\\u015F\";\n const Scirc = \"\\u015C\";\n const scirc = \"\\u015D\";\n const scnap = \"\\u2ABA\";\n const scnE = \"\\u2AB6\";\n const scnsim = \"\\u22E9\";\n const scpolint = \"\\u2A13\";\n const scsim = \"\\u227F\";\n const Scy = \"\\u0421\";\n const scy = \"\\u0441\";\n const sdotb = \"\\u22A1\";\n const sdot = \"\\u22C5\";\n const sdote = \"\\u2A66\";\n const searhk = \"\\u2925\";\n const searr = \"\\u2198\";\n const seArr = \"\\u21D8\";\n const searrow = \"\\u2198\";\n const sect = \"\\xA7\";\n const semi = \";\";\n const seswar = \"\\u2929\";\n const setminus = \"\\u2216\";\n const setmn = \"\\u2216\";\n const sext = \"\\u2736\";\n const Sfr = \"\\u{1D516}\";\n const sfr = \"\\u{1D530}\";\n const sfrown = \"\\u2322\";\n const sharp = \"\\u266F\";\n const SHCHcy = \"\\u0429\";\n const shchcy = \"\\u0449\";\n const SHcy = \"\\u0428\";\n const shcy = \"\\u0448\";\n const ShortDownArrow = \"\\u2193\";\n const ShortLeftArrow = \"\\u2190\";\n const shortmid = \"\\u2223\";\n const shortparallel = \"\\u2225\";\n const ShortRightArrow = \"\\u2192\";\n const ShortUpArrow = \"\\u2191\";\n const shy = \"\\xAD\";\n const Sigma = \"\\u03A3\";\n const sigma = \"\\u03C3\";\n const sigmaf = \"\\u03C2\";\n const sigmav = \"\\u03C2\";\n const sim = \"\\u223C\";\n const simdot = \"\\u2A6A\";\n const sime = \"\\u2243\";\n const simeq = \"\\u2243\";\n const simg = \"\\u2A9E\";\n const simgE = \"\\u2AA0\";\n const siml = \"\\u2A9D\";\n const simlE = \"\\u2A9F\";\n const simne = \"\\u2246\";\n const simplus = \"\\u2A24\";\n const simrarr = \"\\u2972\";\n const slarr = \"\\u2190\";\n const SmallCircle = \"\\u2218\";\n const smallsetminus = \"\\u2216\";\n const smashp = \"\\u2A33\";\n const smeparsl = \"\\u29E4\";\n const smid = \"\\u2223\";\n const smile = \"\\u2323\";\n const smt = \"\\u2AAA\";\n const smte = \"\\u2AAC\";\n const smtes = \"\\u2AAC\\uFE00\";\n const SOFTcy = \"\\u042C\";\n const softcy = \"\\u044C\";\n const solbar = \"\\u233F\";\n const solb = \"\\u29C4\";\n const sol = \"/\";\n const Sopf = \"\\u{1D54A}\";\n const sopf = \"\\u{1D564}\";\n const spades = \"\\u2660\";\n const spadesuit = \"\\u2660\";\n const spar = \"\\u2225\";\n const sqcap = \"\\u2293\";\n const sqcaps = \"\\u2293\\uFE00\";\n const sqcup = \"\\u2294\";\n const sqcups = \"\\u2294\\uFE00\";\n const Sqrt = \"\\u221A\";\n const sqsub = \"\\u228F\";\n const sqsube = \"\\u2291\";\n const sqsubset = \"\\u228F\";\n const sqsubseteq = \"\\u2291\";\n const sqsup = \"\\u2290\";\n const sqsupe = \"\\u2292\";\n const sqsupset = \"\\u2290\";\n const sqsupseteq = \"\\u2292\";\n const square = \"\\u25A1\";\n const Square = \"\\u25A1\";\n const SquareIntersection = \"\\u2293\";\n const SquareSubset = \"\\u228F\";\n const SquareSubsetEqual = \"\\u2291\";\n const SquareSuperset = \"\\u2290\";\n const SquareSupersetEqual = \"\\u2292\";\n const SquareUnion = \"\\u2294\";\n const squarf = \"\\u25AA\";\n const squ = \"\\u25A1\";\n const squf = \"\\u25AA\";\n const srarr = \"\\u2192\";\n const Sscr = \"\\u{1D4AE}\";\n const sscr = \"\\u{1D4C8}\";\n const ssetmn = \"\\u2216\";\n const ssmile = \"\\u2323\";\n const sstarf = \"\\u22C6\";\n const Star = \"\\u22C6\";\n const star = \"\\u2606\";\n const starf = \"\\u2605\";\n const straightepsilon = \"\\u03F5\";\n const straightphi = \"\\u03D5\";\n const strns = \"\\xAF\";\n const sub = \"\\u2282\";\n const Sub = \"\\u22D0\";\n const subdot = \"\\u2ABD\";\n const subE = \"\\u2AC5\";\n const sube = \"\\u2286\";\n const subedot = \"\\u2AC3\";\n const submult = \"\\u2AC1\";\n const subnE = \"\\u2ACB\";\n const subne = \"\\u228A\";\n const subplus = \"\\u2ABF\";\n const subrarr = \"\\u2979\";\n const subset = \"\\u2282\";\n const Subset = \"\\u22D0\";\n const subseteq = \"\\u2286\";\n const subseteqq = \"\\u2AC5\";\n const SubsetEqual = \"\\u2286\";\n const subsetneq = \"\\u228A\";\n const subsetneqq = \"\\u2ACB\";\n const subsim = \"\\u2AC7\";\n const subsub = \"\\u2AD5\";\n const subsup = \"\\u2AD3\";\n const succapprox = \"\\u2AB8\";\n const succ = \"\\u227B\";\n const succcurlyeq = \"\\u227D\";\n const Succeeds = \"\\u227B\";\n const SucceedsEqual = \"\\u2AB0\";\n const SucceedsSlantEqual = \"\\u227D\";\n const SucceedsTilde = \"\\u227F\";\n const succeq = \"\\u2AB0\";\n const succnapprox = \"\\u2ABA\";\n const succneqq = \"\\u2AB6\";\n const succnsim = \"\\u22E9\";\n const succsim = \"\\u227F\";\n const SuchThat = \"\\u220B\";\n const sum = \"\\u2211\";\n const Sum = \"\\u2211\";\n const sung = \"\\u266A\";\n const sup1 = \"\\xB9\";\n const sup2 = \"\\xB2\";\n const sup3 = \"\\xB3\";\n const sup = \"\\u2283\";\n const Sup = \"\\u22D1\";\n const supdot = \"\\u2ABE\";\n const supdsub = \"\\u2AD8\";\n const supE = \"\\u2AC6\";\n const supe = \"\\u2287\";\n const supedot = \"\\u2AC4\";\n const Superset = \"\\u2283\";\n const SupersetEqual = \"\\u2287\";\n const suphsol = \"\\u27C9\";\n const suphsub = \"\\u2AD7\";\n const suplarr = \"\\u297B\";\n const supmult = \"\\u2AC2\";\n const supnE = \"\\u2ACC\";\n const supne = \"\\u228B\";\n const supplus = \"\\u2AC0\";\n const supset = \"\\u2283\";\n const Supset = \"\\u22D1\";\n const supseteq = \"\\u2287\";\n const supseteqq = \"\\u2AC6\";\n const supsetneq = \"\\u228B\";\n const supsetneqq = \"\\u2ACC\";\n const supsim = \"\\u2AC8\";\n const supsub = \"\\u2AD4\";\n const supsup = \"\\u2AD6\";\n const swarhk = \"\\u2926\";\n const swarr = \"\\u2199\";\n const swArr = \"\\u21D9\";\n const swarrow = \"\\u2199\";\n const swnwar = \"\\u292A\";\n const szlig = \"\\xDF\";\n const Tab = \"\t\";\n const target = \"\\u2316\";\n const Tau = \"\\u03A4\";\n const tau = \"\\u03C4\";\n const tbrk = \"\\u23B4\";\n const Tcaron = \"\\u0164\";\n const tcaron = \"\\u0165\";\n const Tcedil = \"\\u0162\";\n const tcedil = \"\\u0163\";\n const Tcy = \"\\u0422\";\n const tcy = \"\\u0442\";\n const tdot = \"\\u20DB\";\n const telrec = \"\\u2315\";\n const Tfr = \"\\u{1D517}\";\n const tfr = \"\\u{1D531}\";\n const there4 = \"\\u2234\";\n const therefore = \"\\u2234\";\n const Therefore = \"\\u2234\";\n const Theta = \"\\u0398\";\n const theta = \"\\u03B8\";\n const thetasym = \"\\u03D1\";\n const thetav = \"\\u03D1\";\n const thickapprox = \"\\u2248\";\n const thicksim = \"\\u223C\";\n const ThickSpace = \"\\u205F\\u200A\";\n const ThinSpace = \"\\u2009\";\n const thinsp = \"\\u2009\";\n const thkap = \"\\u2248\";\n const thksim = \"\\u223C\";\n const THORN = \"\\xDE\";\n const thorn = \"\\xFE\";\n const tilde = \"\\u02DC\";\n const Tilde = \"\\u223C\";\n const TildeEqual = \"\\u2243\";\n const TildeFullEqual = \"\\u2245\";\n const TildeTilde = \"\\u2248\";\n const timesbar = \"\\u2A31\";\n const timesb = \"\\u22A0\";\n const times = \"\\xD7\";\n const timesd = \"\\u2A30\";\n const tint = \"\\u222D\";\n const toea = \"\\u2928\";\n const topbot = \"\\u2336\";\n const topcir = \"\\u2AF1\";\n const top = \"\\u22A4\";\n const Topf = \"\\u{1D54B}\";\n const topf = \"\\u{1D565}\";\n const topfork = \"\\u2ADA\";\n const tosa = \"\\u2929\";\n const tprime = \"\\u2034\";\n const trade = \"\\u2122\";\n const TRADE = \"\\u2122\";\n const triangle = \"\\u25B5\";\n const triangledown = \"\\u25BF\";\n const triangleleft = \"\\u25C3\";\n const trianglelefteq = \"\\u22B4\";\n const triangleq = \"\\u225C\";\n const triangleright = \"\\u25B9\";\n const trianglerighteq = \"\\u22B5\";\n const tridot = \"\\u25EC\";\n const trie = \"\\u225C\";\n const triminus = \"\\u2A3A\";\n const TripleDot = \"\\u20DB\";\n const triplus = \"\\u2A39\";\n const trisb = \"\\u29CD\";\n const tritime = \"\\u2A3B\";\n const trpezium = \"\\u23E2\";\n const Tscr = \"\\u{1D4AF}\";\n const tscr = \"\\u{1D4C9}\";\n const TScy = \"\\u0426\";\n const tscy = \"\\u0446\";\n const TSHcy = \"\\u040B\";\n const tshcy = \"\\u045B\";\n const Tstrok = \"\\u0166\";\n const tstrok = \"\\u0167\";\n const twixt = \"\\u226C\";\n const twoheadleftarrow = \"\\u219E\";\n const twoheadrightarrow = \"\\u21A0\";\n const Uacute = \"\\xDA\";\n const uacute = \"\\xFA\";\n const uarr = \"\\u2191\";\n const Uarr = \"\\u219F\";\n const uArr = \"\\u21D1\";\n const Uarrocir = \"\\u2949\";\n const Ubrcy = \"\\u040E\";\n const ubrcy = \"\\u045E\";\n const Ubreve = \"\\u016C\";\n const ubreve = \"\\u016D\";\n const Ucirc = \"\\xDB\";\n const ucirc = \"\\xFB\";\n const Ucy = \"\\u0423\";\n const ucy = \"\\u0443\";\n const udarr = \"\\u21C5\";\n const Udblac = \"\\u0170\";\n const udblac = \"\\u0171\";\n const udhar = \"\\u296E\";\n const ufisht = \"\\u297E\";\n const Ufr = \"\\u{1D518}\";\n const ufr = \"\\u{1D532}\";\n const Ugrave = \"\\xD9\";\n const ugrave = \"\\xF9\";\n const uHar = \"\\u2963\";\n const uharl = \"\\u21BF\";\n const uharr = \"\\u21BE\";\n const uhblk = \"\\u2580\";\n const ulcorn = \"\\u231C\";\n const ulcorner = \"\\u231C\";\n const ulcrop = \"\\u230F\";\n const ultri = \"\\u25F8\";\n const Umacr = \"\\u016A\";\n const umacr = \"\\u016B\";\n const uml = \"\\xA8\";\n const UnderBar = \"_\";\n const UnderBrace = \"\\u23DF\";\n const UnderBracket = \"\\u23B5\";\n const UnderParenthesis = \"\\u23DD\";\n const Union = \"\\u22C3\";\n const UnionPlus = \"\\u228E\";\n const Uogon = \"\\u0172\";\n const uogon = \"\\u0173\";\n const Uopf = \"\\u{1D54C}\";\n const uopf = \"\\u{1D566}\";\n const UpArrowBar = \"\\u2912\";\n const uparrow = \"\\u2191\";\n const UpArrow = \"\\u2191\";\n const Uparrow = \"\\u21D1\";\n const UpArrowDownArrow = \"\\u21C5\";\n const updownarrow = \"\\u2195\";\n const UpDownArrow = \"\\u2195\";\n const Updownarrow = \"\\u21D5\";\n const UpEquilibrium = \"\\u296E\";\n const upharpoonleft = \"\\u21BF\";\n const upharpoonright = \"\\u21BE\";\n const uplus = \"\\u228E\";\n const UpperLeftArrow = \"\\u2196\";\n const UpperRightArrow = \"\\u2197\";\n const upsi = \"\\u03C5\";\n const Upsi = \"\\u03D2\";\n const upsih = \"\\u03D2\";\n const Upsilon = \"\\u03A5\";\n const upsilon = \"\\u03C5\";\n const UpTeeArrow = \"\\u21A5\";\n const UpTee = \"\\u22A5\";\n const upuparrows = \"\\u21C8\";\n const urcorn = \"\\u231D\";\n const urcorner = \"\\u231D\";\n const urcrop = \"\\u230E\";\n const Uring = \"\\u016E\";\n const uring = \"\\u016F\";\n const urtri = \"\\u25F9\";\n const Uscr = \"\\u{1D4B0}\";\n const uscr = \"\\u{1D4CA}\";\n const utdot = \"\\u22F0\";\n const Utilde = \"\\u0168\";\n const utilde = \"\\u0169\";\n const utri = \"\\u25B5\";\n const utrif = \"\\u25B4\";\n const uuarr = \"\\u21C8\";\n const Uuml = \"\\xDC\";\n const uuml = \"\\xFC\";\n const uwangle = \"\\u29A7\";\n const vangrt = \"\\u299C\";\n const varepsilon = \"\\u03F5\";\n const varkappa = \"\\u03F0\";\n const varnothing = \"\\u2205\";\n const varphi = \"\\u03D5\";\n const varpi = \"\\u03D6\";\n const varpropto = \"\\u221D\";\n const varr = \"\\u2195\";\n const vArr = \"\\u21D5\";\n const varrho = \"\\u03F1\";\n const varsigma = \"\\u03C2\";\n const varsubsetneq = \"\\u228A\\uFE00\";\n const varsubsetneqq = \"\\u2ACB\\uFE00\";\n const varsupsetneq = \"\\u228B\\uFE00\";\n const varsupsetneqq = \"\\u2ACC\\uFE00\";\n const vartheta = \"\\u03D1\";\n const vartriangleleft = \"\\u22B2\";\n const vartriangleright = \"\\u22B3\";\n const vBar = \"\\u2AE8\";\n const Vbar = \"\\u2AEB\";\n const vBarv = \"\\u2AE9\";\n const Vcy = \"\\u0412\";\n const vcy = \"\\u0432\";\n const vdash = \"\\u22A2\";\n const vDash = \"\\u22A8\";\n const Vdash = \"\\u22A9\";\n const VDash = \"\\u22AB\";\n const Vdashl = \"\\u2AE6\";\n const veebar = \"\\u22BB\";\n const vee = \"\\u2228\";\n const Vee = \"\\u22C1\";\n const veeeq = \"\\u225A\";\n const vellip = \"\\u22EE\";\n const verbar = \"|\";\n const Verbar = \"\\u2016\";\n const vert = \"|\";\n const Vert = \"\\u2016\";\n const VerticalBar = \"\\u2223\";\n const VerticalLine = \"|\";\n const VerticalSeparator = \"\\u2758\";\n const VerticalTilde = \"\\u2240\";\n const VeryThinSpace = \"\\u200A\";\n const Vfr = \"\\u{1D519}\";\n const vfr = \"\\u{1D533}\";\n const vltri = \"\\u22B2\";\n const vnsub = \"\\u2282\\u20D2\";\n const vnsup = \"\\u2283\\u20D2\";\n const Vopf = \"\\u{1D54D}\";\n const vopf = \"\\u{1D567}\";\n const vprop = \"\\u221D\";\n const vrtri = \"\\u22B3\";\n const Vscr = \"\\u{1D4B1}\";\n const vscr = \"\\u{1D4CB}\";\n const vsubnE = \"\\u2ACB\\uFE00\";\n const vsubne = \"\\u228A\\uFE00\";\n const vsupnE = \"\\u2ACC\\uFE00\";\n const vsupne = \"\\u228B\\uFE00\";\n const Vvdash = \"\\u22AA\";\n const vzigzag = \"\\u299A\";\n const Wcirc = \"\\u0174\";\n const wcirc = \"\\u0175\";\n const wedbar = \"\\u2A5F\";\n const wedge = \"\\u2227\";\n const Wedge = \"\\u22C0\";\n const wedgeq = \"\\u2259\";\n const weierp = \"\\u2118\";\n const Wfr = \"\\u{1D51A}\";\n const wfr = \"\\u{1D534}\";\n const Wopf = \"\\u{1D54E}\";\n const wopf = \"\\u{1D568}\";\n const wp = \"\\u2118\";\n const wr = \"\\u2240\";\n const wreath = \"\\u2240\";\n const Wscr = \"\\u{1D4B2}\";\n const wscr = \"\\u{1D4CC}\";\n const xcap = \"\\u22C2\";\n const xcirc = \"\\u25EF\";\n const xcup = \"\\u22C3\";\n const xdtri = \"\\u25BD\";\n const Xfr = \"\\u{1D51B}\";\n const xfr = \"\\u{1D535}\";\n const xharr = \"\\u27F7\";\n const xhArr = \"\\u27FA\";\n const Xi = \"\\u039E\";\n const xi = \"\\u03BE\";\n const xlarr = \"\\u27F5\";\n const xlArr = \"\\u27F8\";\n const xmap = \"\\u27FC\";\n const xnis = \"\\u22FB\";\n const xodot = \"\\u2A00\";\n const Xopf = \"\\u{1D54F}\";\n const xopf = \"\\u{1D569}\";\n const xoplus = \"\\u2A01\";\n const xotime = \"\\u2A02\";\n const xrarr = \"\\u27F6\";\n const xrArr = \"\\u27F9\";\n const Xscr = \"\\u{1D4B3}\";\n const xscr = \"\\u{1D4CD}\";\n const xsqcup = \"\\u2A06\";\n const xuplus = \"\\u2A04\";\n const xutri = \"\\u25B3\";\n const xvee = \"\\u22C1\";\n const xwedge = \"\\u22C0\";\n const Yacute = \"\\xDD\";\n const yacute = \"\\xFD\";\n const YAcy = \"\\u042F\";\n const yacy = \"\\u044F\";\n const Ycirc = \"\\u0176\";\n const ycirc = \"\\u0177\";\n const Ycy = \"\\u042B\";\n const ycy = \"\\u044B\";\n const yen = \"\\xA5\";\n const Yfr = \"\\u{1D51C}\";\n const yfr = \"\\u{1D536}\";\n const YIcy = \"\\u0407\";\n const yicy = \"\\u0457\";\n const Yopf = \"\\u{1D550}\";\n const yopf = \"\\u{1D56A}\";\n const Yscr = \"\\u{1D4B4}\";\n const yscr = \"\\u{1D4CE}\";\n const YUcy = \"\\u042E\";\n const yucy = \"\\u044E\";\n const yuml = \"\\xFF\";\n const Yuml = \"\\u0178\";\n const Zacute = \"\\u0179\";\n const zacute = \"\\u017A\";\n const Zcaron = \"\\u017D\";\n const zcaron = \"\\u017E\";\n const Zcy = \"\\u0417\";\n const zcy = \"\\u0437\";\n const Zdot = \"\\u017B\";\n const zdot = \"\\u017C\";\n const zeetrf = \"\\u2128\";\n const ZeroWidthSpace = \"\\u200B\";\n const Zeta = \"\\u0396\";\n const zeta = \"\\u03B6\";\n const zfr = \"\\u{1D537}\";\n const Zfr = \"\\u2128\";\n const ZHcy = \"\\u0416\";\n const zhcy = \"\\u0436\";\n const zigrarr = \"\\u21DD\";\n const zopf = \"\\u{1D56B}\";\n const Zopf = \"\\u2124\";\n const Zscr = \"\\u{1D4B5}\";\n const zscr = \"\\u{1D4CF}\";\n const zwj = \"\\u200D\";\n const zwnj = \"\\u200C\";\n var require$$0 = {\n Aacute,\n aacute,\n Abreve,\n abreve,\n ac,\n acd,\n acE,\n Acirc,\n acirc,\n acute,\n Acy,\n acy,\n AElig,\n aelig,\n af,\n Afr,\n afr,\n Agrave,\n agrave,\n alefsym,\n aleph,\n Alpha,\n alpha,\n Amacr,\n amacr,\n amalg,\n amp,\n AMP,\n andand,\n And,\n and,\n andd,\n andslope,\n andv,\n ang,\n ange,\n angle,\n angmsdaa,\n angmsdab,\n angmsdac,\n angmsdad,\n angmsdae,\n angmsdaf,\n angmsdag,\n angmsdah,\n angmsd,\n angrt,\n angrtvb,\n angrtvbd,\n angsph,\n angst,\n angzarr,\n Aogon,\n aogon,\n Aopf,\n aopf,\n apacir,\n ap,\n apE,\n ape,\n apid,\n apos,\n ApplyFunction,\n approx,\n approxeq,\n Aring,\n aring,\n Ascr,\n ascr,\n Assign,\n ast,\n asymp,\n asympeq,\n Atilde,\n atilde,\n Auml,\n auml,\n awconint,\n awint,\n backcong,\n backepsilon,\n backprime,\n backsim,\n backsimeq,\n Backslash,\n Barv,\n barvee,\n barwed,\n Barwed,\n barwedge,\n bbrk,\n bbrktbrk,\n bcong,\n Bcy,\n bcy,\n bdquo,\n becaus,\n because,\n Because,\n bemptyv,\n bepsi,\n bernou,\n Bernoullis,\n Beta,\n beta,\n beth,\n between,\n Bfr,\n bfr,\n bigcap,\n bigcirc,\n bigcup,\n bigodot,\n bigoplus,\n bigotimes,\n bigsqcup,\n bigstar,\n bigtriangledown,\n bigtriangleup,\n biguplus,\n bigvee,\n bigwedge,\n bkarow,\n blacklozenge,\n blacksquare,\n blacktriangle,\n blacktriangledown,\n blacktriangleleft,\n blacktriangleright,\n blank,\n blk12,\n blk14,\n blk34,\n block: block$1,\n bne,\n bnequiv,\n bNot,\n bnot,\n Bopf,\n bopf,\n bot,\n bottom,\n bowtie,\n boxbox,\n boxdl,\n boxdL,\n boxDl,\n boxDL,\n boxdr,\n boxdR,\n boxDr,\n boxDR,\n boxh,\n boxH,\n boxhd,\n boxHd,\n boxhD,\n boxHD,\n boxhu,\n boxHu,\n boxhU,\n boxHU,\n boxminus,\n boxplus,\n boxtimes,\n boxul,\n boxuL,\n boxUl,\n boxUL,\n boxur,\n boxuR,\n boxUr,\n boxUR,\n boxv,\n boxV,\n boxvh,\n boxvH,\n boxVh,\n boxVH,\n boxvl,\n boxvL,\n boxVl,\n boxVL,\n boxvr,\n boxvR,\n boxVr,\n boxVR,\n bprime,\n breve,\n Breve,\n brvbar,\n bscr,\n Bscr,\n bsemi,\n bsim,\n bsime,\n bsolb,\n bsol,\n bsolhsub,\n bull,\n bullet,\n bump,\n bumpE,\n bumpe,\n Bumpeq,\n bumpeq,\n Cacute,\n cacute,\n capand,\n capbrcup,\n capcap,\n cap,\n Cap,\n capcup,\n capdot,\n CapitalDifferentialD,\n caps,\n caret,\n caron,\n Cayleys,\n ccaps,\n Ccaron,\n ccaron,\n Ccedil,\n ccedil,\n Ccirc,\n ccirc,\n Cconint,\n ccups,\n ccupssm,\n Cdot,\n cdot,\n cedil,\n Cedilla,\n cemptyv,\n cent,\n centerdot,\n CenterDot,\n cfr,\n Cfr,\n CHcy,\n chcy,\n check,\n checkmark,\n Chi,\n chi,\n circ,\n circeq,\n circlearrowleft,\n circlearrowright,\n circledast,\n circledcirc,\n circleddash,\n CircleDot,\n circledR,\n circledS,\n CircleMinus,\n CirclePlus,\n CircleTimes,\n cir,\n cirE,\n cire,\n cirfnint,\n cirmid,\n cirscir,\n ClockwiseContourIntegral,\n CloseCurlyDoubleQuote,\n CloseCurlyQuote,\n clubs,\n clubsuit,\n colon,\n Colon,\n Colone,\n colone,\n coloneq,\n comma,\n commat,\n comp,\n compfn,\n complement,\n complexes,\n cong,\n congdot,\n Congruent,\n conint,\n Conint,\n ContourIntegral,\n copf,\n Copf,\n coprod,\n Coproduct,\n copy: copy$1,\n COPY,\n copysr,\n CounterClockwiseContourIntegral,\n crarr,\n cross,\n Cross,\n Cscr,\n cscr,\n csub,\n csube,\n csup,\n csupe,\n ctdot,\n cudarrl,\n cudarrr,\n cuepr,\n cuesc,\n cularr,\n cularrp,\n cupbrcap,\n cupcap,\n CupCap,\n cup,\n Cup,\n cupcup,\n cupdot,\n cupor,\n cups,\n curarr,\n curarrm,\n curlyeqprec,\n curlyeqsucc,\n curlyvee,\n curlywedge,\n curren,\n curvearrowleft,\n curvearrowright,\n cuvee,\n cuwed,\n cwconint,\n cwint,\n cylcty,\n dagger,\n Dagger,\n daleth,\n darr,\n Darr,\n dArr,\n dash,\n Dashv,\n dashv,\n dbkarow,\n dblac,\n Dcaron,\n dcaron,\n Dcy,\n dcy,\n ddagger,\n ddarr,\n DD,\n dd,\n DDotrahd,\n ddotseq,\n deg,\n Del,\n Delta,\n delta,\n demptyv,\n dfisht,\n Dfr,\n dfr,\n dHar,\n dharl,\n dharr,\n DiacriticalAcute,\n DiacriticalDot,\n DiacriticalDoubleAcute,\n DiacriticalGrave,\n DiacriticalTilde,\n diam,\n diamond,\n Diamond,\n diamondsuit,\n diams,\n die,\n DifferentialD,\n digamma,\n disin,\n div,\n divide,\n divideontimes,\n divonx,\n DJcy,\n djcy,\n dlcorn,\n dlcrop,\n dollar,\n Dopf,\n dopf,\n Dot,\n dot,\n DotDot,\n doteq,\n doteqdot,\n DotEqual,\n dotminus,\n dotplus,\n dotsquare,\n doublebarwedge,\n DoubleContourIntegral,\n DoubleDot,\n DoubleDownArrow,\n DoubleLeftArrow,\n DoubleLeftRightArrow,\n DoubleLeftTee,\n DoubleLongLeftArrow,\n DoubleLongLeftRightArrow,\n DoubleLongRightArrow,\n DoubleRightArrow,\n DoubleRightTee,\n DoubleUpArrow,\n DoubleUpDownArrow,\n DoubleVerticalBar,\n DownArrowBar,\n downarrow,\n DownArrow,\n Downarrow,\n DownArrowUpArrow,\n DownBreve,\n downdownarrows,\n downharpoonleft,\n downharpoonright,\n DownLeftRightVector,\n DownLeftTeeVector,\n DownLeftVectorBar,\n DownLeftVector,\n DownRightTeeVector,\n DownRightVectorBar,\n DownRightVector,\n DownTeeArrow,\n DownTee,\n drbkarow,\n drcorn,\n drcrop,\n Dscr,\n dscr,\n DScy,\n dscy,\n dsol,\n Dstrok,\n dstrok,\n dtdot,\n dtri,\n dtrif,\n duarr,\n duhar,\n dwangle,\n DZcy,\n dzcy,\n dzigrarr,\n Eacute,\n eacute,\n easter,\n Ecaron,\n ecaron,\n Ecirc,\n ecirc,\n ecir,\n ecolon,\n Ecy,\n ecy,\n eDDot,\n Edot,\n edot,\n eDot,\n ee,\n efDot,\n Efr,\n efr,\n eg,\n Egrave,\n egrave,\n egs,\n egsdot,\n el,\n Element,\n elinters,\n ell,\n els,\n elsdot,\n Emacr,\n emacr,\n empty,\n emptyset,\n EmptySmallSquare,\n emptyv,\n EmptyVerySmallSquare,\n emsp13,\n emsp14,\n emsp,\n ENG,\n eng,\n ensp,\n Eogon,\n eogon,\n Eopf,\n eopf,\n epar,\n eparsl,\n eplus,\n epsi,\n Epsilon,\n epsilon,\n epsiv,\n eqcirc,\n eqcolon,\n eqsim,\n eqslantgtr,\n eqslantless,\n Equal,\n equals,\n EqualTilde,\n equest,\n Equilibrium,\n equiv,\n equivDD,\n eqvparsl,\n erarr,\n erDot,\n escr,\n Escr,\n esdot,\n Esim,\n esim,\n Eta,\n eta,\n ETH,\n eth,\n Euml,\n euml,\n euro,\n excl,\n exist,\n Exists,\n expectation,\n exponentiale,\n ExponentialE,\n fallingdotseq,\n Fcy,\n fcy,\n female,\n ffilig,\n fflig,\n ffllig,\n Ffr,\n ffr,\n filig,\n FilledSmallSquare,\n FilledVerySmallSquare,\n fjlig,\n flat,\n fllig,\n fltns,\n fnof,\n Fopf,\n fopf,\n forall,\n ForAll,\n fork,\n forkv,\n Fouriertrf,\n fpartint,\n frac12,\n frac13,\n frac14,\n frac15,\n frac16,\n frac18,\n frac23,\n frac25,\n frac34,\n frac35,\n frac38,\n frac45,\n frac56,\n frac58,\n frac78,\n frasl,\n frown,\n fscr,\n Fscr,\n gacute,\n Gamma,\n gamma,\n Gammad,\n gammad,\n gap,\n Gbreve,\n gbreve,\n Gcedil,\n Gcirc,\n gcirc,\n Gcy,\n gcy,\n Gdot,\n gdot,\n ge,\n gE,\n gEl,\n gel,\n geq,\n geqq,\n geqslant,\n gescc,\n ges,\n gesdot,\n gesdoto,\n gesdotol,\n gesl,\n gesles,\n Gfr,\n gfr,\n gg,\n Gg,\n ggg,\n gimel,\n GJcy,\n gjcy,\n gla,\n gl,\n glE,\n glj,\n gnap,\n gnapprox,\n gne,\n gnE,\n gneq,\n gneqq,\n gnsim,\n Gopf,\n gopf,\n grave,\n GreaterEqual,\n GreaterEqualLess,\n GreaterFullEqual,\n GreaterGreater,\n GreaterLess,\n GreaterSlantEqual,\n GreaterTilde,\n Gscr,\n gscr,\n gsim,\n gsime,\n gsiml,\n gtcc,\n gtcir,\n gt,\n GT,\n Gt,\n gtdot,\n gtlPar,\n gtquest,\n gtrapprox,\n gtrarr,\n gtrdot,\n gtreqless,\n gtreqqless,\n gtrless,\n gtrsim,\n gvertneqq,\n gvnE,\n Hacek,\n hairsp,\n half,\n hamilt,\n HARDcy,\n hardcy,\n harrcir,\n harr,\n hArr,\n harrw,\n Hat,\n hbar,\n Hcirc,\n hcirc,\n hearts,\n heartsuit,\n hellip,\n hercon,\n hfr,\n Hfr,\n HilbertSpace,\n hksearow,\n hkswarow,\n hoarr,\n homtht,\n hookleftarrow,\n hookrightarrow,\n hopf,\n Hopf,\n horbar,\n HorizontalLine,\n hscr,\n Hscr,\n hslash,\n Hstrok,\n hstrok,\n HumpDownHump,\n HumpEqual,\n hybull,\n hyphen,\n Iacute,\n iacute,\n ic,\n Icirc,\n icirc,\n Icy,\n icy,\n Idot,\n IEcy,\n iecy,\n iexcl,\n iff,\n ifr,\n Ifr,\n Igrave,\n igrave,\n ii,\n iiiint,\n iiint,\n iinfin,\n iiota,\n IJlig,\n ijlig,\n Imacr,\n imacr,\n image: image$1,\n ImaginaryI,\n imagline,\n imagpart,\n imath,\n Im,\n imof,\n imped,\n Implies,\n incare,\n \"in\": \"\\u2208\",\n infin,\n infintie,\n inodot,\n intcal,\n int,\n Int,\n integers,\n Integral,\n intercal,\n Intersection,\n intlarhk,\n intprod,\n InvisibleComma,\n InvisibleTimes,\n IOcy,\n iocy,\n Iogon,\n iogon,\n Iopf,\n iopf,\n Iota,\n iota,\n iprod,\n iquest,\n iscr,\n Iscr,\n isin,\n isindot,\n isinE,\n isins,\n isinsv,\n isinv,\n it,\n Itilde,\n itilde,\n Iukcy,\n iukcy,\n Iuml,\n iuml,\n Jcirc,\n jcirc,\n Jcy,\n jcy,\n Jfr,\n jfr,\n jmath,\n Jopf,\n jopf,\n Jscr,\n jscr,\n Jsercy,\n jsercy,\n Jukcy,\n jukcy,\n Kappa,\n kappa,\n kappav,\n Kcedil,\n kcedil,\n Kcy,\n kcy,\n Kfr,\n kfr,\n kgreen,\n KHcy,\n khcy,\n KJcy,\n kjcy,\n Kopf,\n kopf,\n Kscr,\n kscr,\n lAarr,\n Lacute,\n lacute,\n laemptyv,\n lagran,\n Lambda,\n lambda,\n lang,\n Lang,\n langd,\n langle,\n lap,\n Laplacetrf,\n laquo,\n larrb,\n larrbfs,\n larr,\n Larr,\n lArr,\n larrfs,\n larrhk,\n larrlp,\n larrpl,\n larrsim,\n larrtl,\n latail,\n lAtail,\n lat,\n late,\n lates,\n lbarr,\n lBarr,\n lbbrk,\n lbrace,\n lbrack,\n lbrke,\n lbrksld,\n lbrkslu,\n Lcaron,\n lcaron,\n Lcedil,\n lcedil,\n lceil,\n lcub,\n Lcy,\n lcy,\n ldca,\n ldquo,\n ldquor,\n ldrdhar,\n ldrushar,\n ldsh,\n le,\n lE,\n LeftAngleBracket,\n LeftArrowBar,\n leftarrow,\n LeftArrow,\n Leftarrow,\n LeftArrowRightArrow,\n leftarrowtail,\n LeftCeiling,\n LeftDoubleBracket,\n LeftDownTeeVector,\n LeftDownVectorBar,\n LeftDownVector,\n LeftFloor,\n leftharpoondown,\n leftharpoonup,\n leftleftarrows,\n leftrightarrow,\n LeftRightArrow,\n Leftrightarrow,\n leftrightarrows,\n leftrightharpoons,\n leftrightsquigarrow,\n LeftRightVector,\n LeftTeeArrow,\n LeftTee,\n LeftTeeVector,\n leftthreetimes,\n LeftTriangleBar,\n LeftTriangle,\n LeftTriangleEqual,\n LeftUpDownVector,\n LeftUpTeeVector,\n LeftUpVectorBar,\n LeftUpVector,\n LeftVectorBar,\n LeftVector,\n lEg,\n leg,\n leq,\n leqq,\n leqslant,\n lescc,\n les,\n lesdot,\n lesdoto,\n lesdotor,\n lesg,\n lesges,\n lessapprox,\n lessdot,\n lesseqgtr,\n lesseqqgtr,\n LessEqualGreater,\n LessFullEqual,\n LessGreater,\n lessgtr,\n LessLess,\n lesssim,\n LessSlantEqual,\n LessTilde,\n lfisht,\n lfloor,\n Lfr,\n lfr,\n lg,\n lgE,\n lHar,\n lhard,\n lharu,\n lharul,\n lhblk,\n LJcy,\n ljcy,\n llarr,\n ll,\n Ll,\n llcorner,\n Lleftarrow,\n llhard,\n lltri,\n Lmidot,\n lmidot,\n lmoustache,\n lmoust,\n lnap,\n lnapprox,\n lne,\n lnE,\n lneq,\n lneqq,\n lnsim,\n loang,\n loarr,\n lobrk,\n longleftarrow,\n LongLeftArrow,\n Longleftarrow,\n longleftrightarrow,\n LongLeftRightArrow,\n Longleftrightarrow,\n longmapsto,\n longrightarrow,\n LongRightArrow,\n Longrightarrow,\n looparrowleft,\n looparrowright,\n lopar,\n Lopf,\n lopf,\n loplus,\n lotimes,\n lowast,\n lowbar,\n LowerLeftArrow,\n LowerRightArrow,\n loz,\n lozenge,\n lozf,\n lpar,\n lparlt,\n lrarr,\n lrcorner,\n lrhar,\n lrhard,\n lrm,\n lrtri,\n lsaquo,\n lscr,\n Lscr,\n lsh,\n Lsh,\n lsim,\n lsime,\n lsimg,\n lsqb,\n lsquo,\n lsquor,\n Lstrok,\n lstrok,\n ltcc,\n ltcir,\n lt,\n LT,\n Lt,\n ltdot,\n lthree,\n ltimes,\n ltlarr,\n ltquest,\n ltri,\n ltrie,\n ltrif,\n ltrPar,\n lurdshar,\n luruhar,\n lvertneqq,\n lvnE,\n macr,\n male,\n malt,\n maltese,\n \"Map\": \"\\u2905\",\n map: map$1,\n mapsto,\n mapstodown,\n mapstoleft,\n mapstoup,\n marker,\n mcomma,\n Mcy,\n mcy,\n mdash,\n mDDot,\n measuredangle,\n MediumSpace,\n Mellintrf,\n Mfr,\n mfr,\n mho,\n micro,\n midast,\n midcir,\n mid,\n middot,\n minusb,\n minus,\n minusd,\n minusdu,\n MinusPlus,\n mlcp,\n mldr,\n mnplus,\n models,\n Mopf,\n mopf,\n mp,\n mscr,\n Mscr,\n mstpos,\n Mu,\n mu,\n multimap,\n mumap,\n nabla,\n Nacute,\n nacute,\n nang,\n nap,\n napE,\n napid,\n napos,\n napprox,\n natural,\n naturals,\n natur,\n nbsp,\n nbump,\n nbumpe,\n ncap,\n Ncaron,\n ncaron,\n Ncedil,\n ncedil,\n ncong,\n ncongdot,\n ncup,\n Ncy,\n ncy,\n ndash,\n nearhk,\n nearr,\n neArr,\n nearrow,\n ne,\n nedot,\n NegativeMediumSpace,\n NegativeThickSpace,\n NegativeThinSpace,\n NegativeVeryThinSpace,\n nequiv,\n nesear,\n nesim,\n NestedGreaterGreater,\n NestedLessLess,\n NewLine,\n nexist,\n nexists,\n Nfr,\n nfr,\n ngE,\n nge,\n ngeq,\n ngeqq,\n ngeqslant,\n nges,\n nGg,\n ngsim,\n nGt,\n ngt,\n ngtr,\n nGtv,\n nharr,\n nhArr,\n nhpar,\n ni,\n nis,\n nisd,\n niv,\n NJcy,\n njcy,\n nlarr,\n nlArr,\n nldr,\n nlE,\n nle,\n nleftarrow,\n nLeftarrow,\n nleftrightarrow,\n nLeftrightarrow,\n nleq,\n nleqq,\n nleqslant,\n nles,\n nless,\n nLl,\n nlsim,\n nLt,\n nlt,\n nltri,\n nltrie,\n nLtv,\n nmid,\n NoBreak,\n NonBreakingSpace,\n nopf,\n Nopf,\n Not,\n not,\n NotCongruent,\n NotCupCap,\n NotDoubleVerticalBar,\n NotElement,\n NotEqual,\n NotEqualTilde,\n NotExists,\n NotGreater,\n NotGreaterEqual,\n NotGreaterFullEqual,\n NotGreaterGreater,\n NotGreaterLess,\n NotGreaterSlantEqual,\n NotGreaterTilde,\n NotHumpDownHump,\n NotHumpEqual,\n notin,\n notindot,\n notinE,\n notinva,\n notinvb,\n notinvc,\n NotLeftTriangleBar,\n NotLeftTriangle,\n NotLeftTriangleEqual,\n NotLess,\n NotLessEqual,\n NotLessGreater,\n NotLessLess,\n NotLessSlantEqual,\n NotLessTilde,\n NotNestedGreaterGreater,\n NotNestedLessLess,\n notni,\n notniva,\n notnivb,\n notnivc,\n NotPrecedes,\n NotPrecedesEqual,\n NotPrecedesSlantEqual,\n NotReverseElement,\n NotRightTriangleBar,\n NotRightTriangle,\n NotRightTriangleEqual,\n NotSquareSubset,\n NotSquareSubsetEqual,\n NotSquareSuperset,\n NotSquareSupersetEqual,\n NotSubset,\n NotSubsetEqual,\n NotSucceeds,\n NotSucceedsEqual,\n NotSucceedsSlantEqual,\n NotSucceedsTilde,\n NotSuperset,\n NotSupersetEqual,\n NotTilde,\n NotTildeEqual,\n NotTildeFullEqual,\n NotTildeTilde,\n NotVerticalBar,\n nparallel,\n npar,\n nparsl,\n npart,\n npolint,\n npr,\n nprcue,\n nprec,\n npreceq,\n npre,\n nrarrc,\n nrarr,\n nrArr,\n nrarrw,\n nrightarrow,\n nRightarrow,\n nrtri,\n nrtrie,\n nsc,\n nsccue,\n nsce,\n Nscr,\n nscr,\n nshortmid,\n nshortparallel,\n nsim,\n nsime,\n nsimeq,\n nsmid,\n nspar,\n nsqsube,\n nsqsupe,\n nsub,\n nsubE,\n nsube,\n nsubset,\n nsubseteq,\n nsubseteqq,\n nsucc,\n nsucceq,\n nsup,\n nsupE,\n nsupe,\n nsupset,\n nsupseteq,\n nsupseteqq,\n ntgl,\n Ntilde,\n ntilde,\n ntlg,\n ntriangleleft,\n ntrianglelefteq,\n ntriangleright,\n ntrianglerighteq,\n Nu,\n nu,\n num,\n numero,\n numsp,\n nvap,\n nvdash,\n nvDash,\n nVdash,\n nVDash,\n nvge,\n nvgt,\n nvHarr,\n nvinfin,\n nvlArr,\n nvle,\n nvlt,\n nvltrie,\n nvrArr,\n nvrtrie,\n nvsim,\n nwarhk,\n nwarr,\n nwArr,\n nwarrow,\n nwnear,\n Oacute,\n oacute,\n oast,\n Ocirc,\n ocirc,\n ocir,\n Ocy,\n ocy,\n odash,\n Odblac,\n odblac,\n odiv,\n odot,\n odsold,\n OElig,\n oelig,\n ofcir,\n Ofr,\n ofr,\n ogon,\n Ograve,\n ograve,\n ogt,\n ohbar,\n ohm,\n oint,\n olarr,\n olcir,\n olcross,\n oline,\n olt,\n Omacr,\n omacr,\n Omega,\n omega,\n Omicron,\n omicron,\n omid,\n ominus,\n Oopf,\n oopf,\n opar,\n OpenCurlyDoubleQuote,\n OpenCurlyQuote,\n operp,\n oplus,\n orarr,\n Or,\n or,\n ord,\n order,\n orderof,\n ordf,\n ordm,\n origof,\n oror,\n orslope,\n orv,\n oS,\n Oscr,\n oscr,\n Oslash,\n oslash,\n osol,\n Otilde,\n otilde,\n otimesas,\n Otimes,\n otimes,\n Ouml,\n ouml,\n ovbar,\n OverBar,\n OverBrace,\n OverBracket,\n OverParenthesis,\n para,\n parallel,\n par,\n parsim,\n parsl,\n part,\n PartialD,\n Pcy,\n pcy,\n percnt,\n period,\n permil,\n perp,\n pertenk,\n Pfr,\n pfr,\n Phi,\n phi,\n phiv,\n phmmat,\n phone,\n Pi,\n pi,\n pitchfork,\n piv,\n planck,\n planckh,\n plankv,\n plusacir,\n plusb,\n pluscir,\n plus,\n plusdo,\n plusdu,\n pluse,\n PlusMinus,\n plusmn,\n plussim,\n plustwo,\n pm,\n Poincareplane,\n pointint,\n popf,\n Popf,\n pound,\n prap,\n Pr,\n pr,\n prcue,\n precapprox,\n prec,\n preccurlyeq,\n Precedes,\n PrecedesEqual,\n PrecedesSlantEqual,\n PrecedesTilde,\n preceq,\n precnapprox,\n precneqq,\n precnsim,\n pre,\n prE,\n precsim,\n prime,\n Prime,\n primes,\n prnap,\n prnE,\n prnsim,\n prod,\n Product,\n profalar,\n profline,\n profsurf,\n prop,\n Proportional,\n Proportion,\n propto,\n prsim,\n prurel,\n Pscr,\n pscr,\n Psi,\n psi,\n puncsp,\n Qfr,\n qfr,\n qint,\n qopf,\n Qopf,\n qprime,\n Qscr,\n qscr,\n quaternions,\n quatint,\n quest,\n questeq,\n quot,\n QUOT,\n rAarr,\n race,\n Racute,\n racute,\n radic,\n raemptyv,\n rang,\n Rang,\n rangd,\n range,\n rangle,\n raquo,\n rarrap,\n rarrb,\n rarrbfs,\n rarrc,\n rarr,\n Rarr,\n rArr,\n rarrfs,\n rarrhk,\n rarrlp,\n rarrpl,\n rarrsim,\n Rarrtl,\n rarrtl,\n rarrw,\n ratail,\n rAtail,\n ratio,\n rationals,\n rbarr,\n rBarr,\n RBarr,\n rbbrk,\n rbrace,\n rbrack,\n rbrke,\n rbrksld,\n rbrkslu,\n Rcaron,\n rcaron,\n Rcedil,\n rcedil,\n rceil,\n rcub,\n Rcy,\n rcy,\n rdca,\n rdldhar,\n rdquo,\n rdquor,\n rdsh,\n real,\n realine,\n realpart,\n reals,\n Re,\n rect,\n reg,\n REG,\n ReverseElement,\n ReverseEquilibrium,\n ReverseUpEquilibrium,\n rfisht,\n rfloor,\n rfr,\n Rfr,\n rHar,\n rhard,\n rharu,\n rharul,\n Rho,\n rho,\n rhov,\n RightAngleBracket,\n RightArrowBar,\n rightarrow,\n RightArrow,\n Rightarrow,\n RightArrowLeftArrow,\n rightarrowtail,\n RightCeiling,\n RightDoubleBracket,\n RightDownTeeVector,\n RightDownVectorBar,\n RightDownVector,\n RightFloor,\n rightharpoondown,\n rightharpoonup,\n rightleftarrows,\n rightleftharpoons,\n rightrightarrows,\n rightsquigarrow,\n RightTeeArrow,\n RightTee,\n RightTeeVector,\n rightthreetimes,\n RightTriangleBar,\n RightTriangle,\n RightTriangleEqual,\n RightUpDownVector,\n RightUpTeeVector,\n RightUpVectorBar,\n RightUpVector,\n RightVectorBar,\n RightVector,\n ring,\n risingdotseq,\n rlarr,\n rlhar,\n rlm,\n rmoustache,\n rmoust,\n rnmid,\n roang,\n roarr,\n robrk,\n ropar,\n ropf,\n Ropf,\n roplus,\n rotimes,\n RoundImplies,\n rpar,\n rpargt,\n rppolint,\n rrarr,\n Rrightarrow,\n rsaquo,\n rscr,\n Rscr,\n rsh,\n Rsh,\n rsqb,\n rsquo,\n rsquor,\n rthree,\n rtimes,\n rtri,\n rtrie,\n rtrif,\n rtriltri,\n RuleDelayed,\n ruluhar,\n rx,\n Sacute,\n sacute,\n sbquo,\n scap,\n Scaron,\n scaron,\n Sc,\n sc,\n sccue,\n sce,\n scE,\n Scedil,\n scedil,\n Scirc,\n scirc,\n scnap,\n scnE,\n scnsim,\n scpolint,\n scsim,\n Scy,\n scy,\n sdotb,\n sdot,\n sdote,\n searhk,\n searr,\n seArr,\n searrow,\n sect,\n semi,\n seswar,\n setminus,\n setmn,\n sext,\n Sfr,\n sfr,\n sfrown,\n sharp,\n SHCHcy,\n shchcy,\n SHcy,\n shcy,\n ShortDownArrow,\n ShortLeftArrow,\n shortmid,\n shortparallel,\n ShortRightArrow,\n ShortUpArrow,\n shy,\n Sigma,\n sigma,\n sigmaf,\n sigmav,\n sim,\n simdot,\n sime,\n simeq,\n simg,\n simgE,\n siml,\n simlE,\n simne,\n simplus,\n simrarr,\n slarr,\n SmallCircle,\n smallsetminus,\n smashp,\n smeparsl,\n smid,\n smile,\n smt,\n smte,\n smtes,\n SOFTcy,\n softcy,\n solbar,\n solb,\n sol,\n Sopf,\n sopf,\n spades,\n spadesuit,\n spar,\n sqcap,\n sqcaps,\n sqcup,\n sqcups,\n Sqrt,\n sqsub,\n sqsube,\n sqsubset,\n sqsubseteq,\n sqsup,\n sqsupe,\n sqsupset,\n sqsupseteq,\n square,\n Square,\n SquareIntersection,\n SquareSubset,\n SquareSubsetEqual,\n SquareSuperset,\n SquareSupersetEqual,\n SquareUnion,\n squarf,\n squ,\n squf,\n srarr,\n Sscr,\n sscr,\n ssetmn,\n ssmile,\n sstarf,\n Star,\n star,\n starf,\n straightepsilon,\n straightphi,\n strns,\n sub,\n Sub,\n subdot,\n subE,\n sube,\n subedot,\n submult,\n subnE,\n subne,\n subplus,\n subrarr,\n subset,\n Subset,\n subseteq,\n subseteqq,\n SubsetEqual,\n subsetneq,\n subsetneqq,\n subsim,\n subsub,\n subsup,\n succapprox,\n succ,\n succcurlyeq,\n Succeeds,\n SucceedsEqual,\n SucceedsSlantEqual,\n SucceedsTilde,\n succeq,\n succnapprox,\n succneqq,\n succnsim,\n succsim,\n SuchThat,\n sum,\n Sum,\n sung,\n sup1,\n sup2,\n sup3,\n sup,\n Sup,\n supdot,\n supdsub,\n supE,\n supe,\n supedot,\n Superset,\n SupersetEqual,\n suphsol,\n suphsub,\n suplarr,\n supmult,\n supnE,\n supne,\n supplus,\n supset,\n Supset,\n supseteq,\n supseteqq,\n supsetneq,\n supsetneqq,\n supsim,\n supsub,\n supsup,\n swarhk,\n swarr,\n swArr,\n swarrow,\n swnwar,\n szlig,\n Tab,\n target,\n Tau,\n tau,\n tbrk,\n Tcaron,\n tcaron,\n Tcedil,\n tcedil,\n Tcy,\n tcy,\n tdot,\n telrec,\n Tfr,\n tfr,\n there4,\n therefore,\n Therefore,\n Theta,\n theta,\n thetasym,\n thetav,\n thickapprox,\n thicksim,\n ThickSpace,\n ThinSpace,\n thinsp,\n thkap,\n thksim,\n THORN,\n thorn,\n tilde,\n Tilde,\n TildeEqual,\n TildeFullEqual,\n TildeTilde,\n timesbar,\n timesb,\n times,\n timesd,\n tint,\n toea,\n topbot,\n topcir,\n top,\n Topf,\n topf,\n topfork,\n tosa,\n tprime,\n trade,\n TRADE,\n triangle,\n triangledown,\n triangleleft,\n trianglelefteq,\n triangleq,\n triangleright,\n trianglerighteq,\n tridot,\n trie,\n triminus,\n TripleDot,\n triplus,\n trisb,\n tritime,\n trpezium,\n Tscr,\n tscr,\n TScy,\n tscy,\n TSHcy,\n tshcy,\n Tstrok,\n tstrok,\n twixt,\n twoheadleftarrow,\n twoheadrightarrow,\n Uacute,\n uacute,\n uarr,\n Uarr,\n uArr,\n Uarrocir,\n Ubrcy,\n ubrcy,\n Ubreve,\n ubreve,\n Ucirc,\n ucirc,\n Ucy,\n ucy,\n udarr,\n Udblac,\n udblac,\n udhar,\n ufisht,\n Ufr,\n ufr,\n Ugrave,\n ugrave,\n uHar,\n uharl,\n uharr,\n uhblk,\n ulcorn,\n ulcorner,\n ulcrop,\n ultri,\n Umacr,\n umacr,\n uml,\n UnderBar,\n UnderBrace,\n UnderBracket,\n UnderParenthesis,\n Union,\n UnionPlus,\n Uogon,\n uogon,\n Uopf,\n uopf,\n UpArrowBar,\n uparrow,\n UpArrow,\n Uparrow,\n UpArrowDownArrow,\n updownarrow,\n UpDownArrow,\n Updownarrow,\n UpEquilibrium,\n upharpoonleft,\n upharpoonright,\n uplus,\n UpperLeftArrow,\n UpperRightArrow,\n upsi,\n Upsi,\n upsih,\n Upsilon,\n upsilon,\n UpTeeArrow,\n UpTee,\n upuparrows,\n urcorn,\n urcorner,\n urcrop,\n Uring,\n uring,\n urtri,\n Uscr,\n uscr,\n utdot,\n Utilde,\n utilde,\n utri,\n utrif,\n uuarr,\n Uuml,\n uuml,\n uwangle,\n vangrt,\n varepsilon,\n varkappa,\n varnothing,\n varphi,\n varpi,\n varpropto,\n varr,\n vArr,\n varrho,\n varsigma,\n varsubsetneq,\n varsubsetneqq,\n varsupsetneq,\n varsupsetneqq,\n vartheta,\n vartriangleleft,\n vartriangleright,\n vBar,\n Vbar,\n vBarv,\n Vcy,\n vcy,\n vdash,\n vDash,\n Vdash,\n VDash,\n Vdashl,\n veebar,\n vee,\n Vee,\n veeeq,\n vellip,\n verbar,\n Verbar,\n vert,\n Vert,\n VerticalBar,\n VerticalLine,\n VerticalSeparator,\n VerticalTilde,\n VeryThinSpace,\n Vfr,\n vfr,\n vltri,\n vnsub,\n vnsup,\n Vopf,\n vopf,\n vprop,\n vrtri,\n Vscr,\n vscr,\n vsubnE,\n vsubne,\n vsupnE,\n vsupne,\n Vvdash,\n vzigzag,\n Wcirc,\n wcirc,\n wedbar,\n wedge,\n Wedge,\n wedgeq,\n weierp,\n Wfr,\n wfr,\n Wopf,\n wopf,\n wp,\n wr,\n wreath,\n Wscr,\n wscr,\n xcap,\n xcirc,\n xcup,\n xdtri,\n Xfr,\n xfr,\n xharr,\n xhArr,\n Xi,\n xi,\n xlarr,\n xlArr,\n xmap,\n xnis,\n xodot,\n Xopf,\n xopf,\n xoplus,\n xotime,\n xrarr,\n xrArr,\n Xscr,\n xscr,\n xsqcup,\n xuplus,\n xutri,\n xvee,\n xwedge,\n Yacute,\n yacute,\n YAcy,\n yacy,\n Ycirc,\n ycirc,\n Ycy,\n ycy,\n yen,\n Yfr,\n yfr,\n YIcy,\n yicy,\n Yopf,\n yopf,\n Yscr,\n yscr,\n YUcy,\n yucy,\n yuml,\n Yuml,\n Zacute,\n zacute,\n Zcaron,\n zcaron,\n Zcy,\n zcy,\n Zdot,\n zdot,\n zeetrf,\n ZeroWidthSpace,\n Zeta,\n zeta,\n zfr,\n Zfr,\n ZHcy,\n zhcy,\n zigrarr,\n zopf,\n Zopf,\n Zscr,\n zscr,\n zwj,\n zwnj\n };\n var entities$1 = require$$0;\n var regex$4 = /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4E\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/;\n var mdurl$1 = {};\n var encodeCache = {};\n\n function getEncodeCache(exclude) {\n var i,\n ch,\n cache = encodeCache[exclude];\n\n if (cache) {\n return cache;\n }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n cache.push(ch);\n } else {\n cache.push(\"%\" + (\"0\" + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n }\n\n __name(getEncodeCache, \"getEncodeCache\");\n\n function encode$1(string, exclude, keepEscaped) {\n var i,\n l,\n code3,\n nextCode,\n cache,\n result = \"\";\n\n if (typeof exclude !== \"string\") {\n keepEscaped = exclude;\n exclude = encode$1.defaultChars;\n }\n\n if (typeof keepEscaped === \"undefined\") {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code3 = string.charCodeAt(i);\n\n if (keepEscaped && code3 === 37 && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code3 < 128) {\n result += cache[code3];\n continue;\n }\n\n if (code3 >= 55296 && code3 <= 57343) {\n if (code3 >= 55296 && code3 <= 56319 && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n\n if (nextCode >= 56320 && nextCode <= 57343) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n\n result += \"%EF%BF%BD\";\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n }\n\n __name(encode$1, \"encode$1\");\n\n encode$1.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\n encode$1.componentChars = \"-_.!~*'()\";\n var encode_1 = encode$1;\n var decodeCache = {};\n\n function getDecodeCache(exclude) {\n var i,\n ch,\n cache = decodeCache[exclude];\n\n if (cache) {\n return cache;\n }\n\n cache = decodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (i = 0; i < exclude.length; i++) {\n ch = exclude.charCodeAt(i);\n cache[ch] = \"%\" + (\"0\" + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache;\n }\n\n __name(getDecodeCache, \"getDecodeCache\");\n\n function decode$1(string, exclude) {\n var cache;\n\n if (typeof exclude !== \"string\") {\n exclude = decode$1.defaultChars;\n }\n\n cache = getDecodeCache(exclude);\n return string.replace(/(%[a-f0-9]{2})+/gi, function (seq) {\n var i,\n l,\n b1,\n b2,\n b3,\n b4,\n chr,\n result = \"\";\n\n for (i = 0, l = seq.length; i < l; i += 3) {\n b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 128) {\n result += cache[b1];\n continue;\n }\n\n if ((b1 & 224) === 192 && i + 3 < l) {\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 192) === 128) {\n chr = b1 << 6 & 1984 | b2 & 63;\n\n if (chr < 128) {\n result += \"\\uFFFD\\uFFFD\";\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue;\n }\n }\n\n if ((b1 & 240) === 224 && i + 6 < l) {\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 192) === 128 && (b3 & 192) === 128) {\n chr = b1 << 12 & 61440 | b2 << 6 & 4032 | b3 & 63;\n\n if (chr < 2048 || chr >= 55296 && chr <= 57343) {\n result += \"\\uFFFD\\uFFFD\\uFFFD\";\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 248) === 240 && i + 9 < l) {\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 192) === 128 && (b3 & 192) === 128 && (b4 & 192) === 128) {\n chr = b1 << 18 & 1835008 | b2 << 12 & 258048 | b3 << 6 & 4032 | b4 & 63;\n\n if (chr < 65536 || chr > 1114111) {\n result += \"\\uFFFD\\uFFFD\\uFFFD\\uFFFD\";\n } else {\n chr -= 65536;\n result += String.fromCharCode(55296 + (chr >> 10), 56320 + (chr & 1023));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += \"\\uFFFD\";\n }\n\n return result;\n });\n }\n\n __name(decode$1, \"decode$1\");\n\n decode$1.defaultChars = \";/?:@&=+$,#\";\n decode$1.componentChars = \"\";\n var decode_1 = decode$1;\n\n var format$1 = /* @__PURE__ */__name(function format(url) {\n var result = \"\";\n result += url.protocol || \"\";\n result += url.slashes ? \"//\" : \"\";\n result += url.auth ? url.auth + \"@\" : \"\";\n\n if (url.hostname && url.hostname.indexOf(\":\") !== -1) {\n result += \"[\" + url.hostname + \"]\";\n } else {\n result += url.hostname || \"\";\n }\n\n result += url.port ? \":\" + url.port : \"\";\n result += url.pathname || \"\";\n result += url.search || \"\";\n result += url.hash || \"\";\n return result;\n }, \"format\");\n\n function Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.pathname = null;\n }\n\n __name(Url, \"Url\");\n\n var protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n delims = [\"<\", \">\", '\"', \"`\", \" \", \"\\r\", \"\\n\", \"\t\"],\n unwise = [\"{\", \"}\", \"|\", \"\\\\\", \"^\", \"`\"].concat(delims),\n autoEscape = [\"'\"].concat(unwise),\n nonHostChars = [\"%\", \"/\", \"?\", \";\", \"#\"].concat(autoEscape),\n hostEndingChars = [\"/\", \"?\", \"#\"],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n hostlessProtocol = {\n \"javascript\": true,\n \"javascript:\": true\n },\n slashedProtocol = {\n \"http\": true,\n \"https\": true,\n \"ftp\": true,\n \"gopher\": true,\n \"file\": true,\n \"http:\": true,\n \"https:\": true,\n \"ftp:\": true,\n \"gopher:\": true,\n \"file:\": true\n };\n\n function urlParse(url, slashesDenoteHost) {\n if (url && url instanceof Url) {\n return url;\n }\n\n var u = new Url();\n u.parse(url, slashesDenoteHost);\n return u;\n }\n\n __name(urlParse, \"urlParse\");\n\n Url.prototype.parse = function (url, slashesDenoteHost) {\n var i,\n l,\n lowerProto,\n hec,\n slashes,\n rest = url;\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split(\"#\").length === 1) {\n var simplePath = simplePathPattern.exec(rest);\n\n if (simplePath) {\n this.pathname = simplePath[1];\n\n if (simplePath[2]) {\n this.search = simplePath[2];\n }\n\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n\n if (proto) {\n proto = proto[0];\n lowerProto = proto.toLowerCase();\n this.protocol = proto;\n rest = rest.substr(proto.length);\n }\n\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === \"//\";\n\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n var hostEnd = -1;\n\n for (i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i]);\n\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n }\n\n var auth, atSign;\n\n if (hostEnd === -1) {\n atSign = rest.lastIndexOf(\"@\");\n } else {\n atSign = rest.lastIndexOf(\"@\", hostEnd);\n }\n\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = auth;\n }\n\n hostEnd = -1;\n\n for (i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i]);\n\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n }\n\n if (hostEnd === -1) {\n hostEnd = rest.length;\n }\n\n if (rest[hostEnd - 1] === \":\") {\n hostEnd--;\n }\n\n var host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n this.parseHost(host);\n this.hostname = this.hostname || \"\";\n var ipv6Hostname = this.hostname[0] === \"[\" && this.hostname[this.hostname.length - 1] === \"]\";\n\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n\n for (i = 0, l = hostparts.length; i < l; i++) {\n var part2 = hostparts[i];\n\n if (!part2) {\n continue;\n }\n\n if (!part2.match(hostnamePartPattern)) {\n var newpart = \"\";\n\n for (var j = 0, k = part2.length; j < k; j++) {\n if (part2.charCodeAt(j) > 127) {\n newpart += \"x\";\n } else {\n newpart += part2[j];\n }\n }\n\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part2.match(hostnamePartStart);\n\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n\n if (notHost.length) {\n rest = notHost.join(\".\") + rest;\n }\n\n this.hostname = validParts.join(\".\");\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = \"\";\n }\n\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n }\n }\n\n var hash = rest.indexOf(\"#\");\n\n if (hash !== -1) {\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n\n var qm = rest.indexOf(\"?\");\n\n if (qm !== -1) {\n this.search = rest.substr(qm);\n rest = rest.slice(0, qm);\n }\n\n if (rest) {\n this.pathname = rest;\n }\n\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = \"\";\n }\n\n return this;\n };\n\n Url.prototype.parseHost = function (host) {\n var port = portPattern.exec(host);\n\n if (port) {\n port = port[0];\n\n if (port !== \":\") {\n this.port = port.substr(1);\n }\n\n host = host.substr(0, host.length - port.length);\n }\n\n if (host) {\n this.hostname = host;\n }\n };\n\n var parse = urlParse;\n mdurl$1.encode = encode_1;\n mdurl$1.decode = decode_1;\n mdurl$1.format = format$1;\n mdurl$1.parse = parse;\n var uc_micro = {};\n var regex$3 = /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n var regex$2 = /[\\0-\\x1F\\x7F-\\x9F]/;\n var regex$1 = /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/;\n var regex = /[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n uc_micro.Any = regex$3;\n uc_micro.Cc = regex$2;\n uc_micro.Cf = regex$1;\n uc_micro.P = regex$4;\n uc_micro.Z = regex;\n\n (function (exports) {\n function _class2(obj) {\n return Object.prototype.toString.call(obj);\n }\n\n __name(_class2, \"_class\");\n\n function isString2(obj) {\n return _class2(obj) === \"[object String]\";\n }\n\n __name(isString2, \"isString\");\n\n var _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n function has2(object, key) {\n return _hasOwnProperty.call(object, key);\n }\n\n __name(has2, \"has\");\n\n function assign2(obj) {\n var sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n if (typeof source !== \"object\") {\n throw new TypeError(source + \"must be object\");\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n return obj;\n }\n\n __name(assign2, \"assign\");\n\n function arrayReplaceAt2(src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));\n }\n\n __name(arrayReplaceAt2, \"arrayReplaceAt\");\n\n function isValidEntityCode2(c) {\n if (c >= 55296 && c <= 57343) {\n return false;\n }\n\n if (c >= 64976 && c <= 65007) {\n return false;\n }\n\n if ((c & 65535) === 65535 || (c & 65535) === 65534) {\n return false;\n }\n\n if (c >= 0 && c <= 8) {\n return false;\n }\n\n if (c === 11) {\n return false;\n }\n\n if (c >= 14 && c <= 31) {\n return false;\n }\n\n if (c >= 127 && c <= 159) {\n return false;\n }\n\n if (c > 1114111) {\n return false;\n }\n\n return true;\n }\n\n __name(isValidEntityCode2, \"isValidEntityCode\");\n\n function fromCodePoint2(c) {\n if (c > 65535) {\n c -= 65536;\n var surrogate1 = 55296 + (c >> 10),\n surrogate2 = 56320 + (c & 1023);\n return String.fromCharCode(surrogate1, surrogate2);\n }\n\n return String.fromCharCode(c);\n }\n\n __name(fromCodePoint2, \"fromCodePoint\");\n\n var UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g;\n var ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;\n var UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + \"|\" + ENTITY_RE.source, \"gi\");\n var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;\n var entities2 = entities$1;\n\n function replaceEntityPattern(match2, name2) {\n var code3 = 0;\n\n if (has2(entities2, name2)) {\n return entities2[name2];\n }\n\n if (name2.charCodeAt(0) === 35 && DIGITAL_ENTITY_TEST_RE.test(name2)) {\n code3 = name2[1].toLowerCase() === \"x\" ? parseInt(name2.slice(2), 16) : parseInt(name2.slice(1), 10);\n\n if (isValidEntityCode2(code3)) {\n return fromCodePoint2(code3);\n }\n }\n\n return match2;\n }\n\n __name(replaceEntityPattern, \"replaceEntityPattern\");\n\n function unescapeMd(str) {\n if (str.indexOf(\"\\\\\") < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_MD_RE, \"$1\");\n }\n\n __name(unescapeMd, \"unescapeMd\");\n\n function unescapeAll2(str) {\n if (str.indexOf(\"\\\\\") < 0 && str.indexOf(\"&\") < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_ALL_RE, function (match2, escaped, entity3) {\n if (escaped) {\n return escaped;\n }\n\n return replaceEntityPattern(match2, entity3);\n });\n }\n\n __name(unescapeAll2, \"unescapeAll\");\n\n var HTML_ESCAPE_TEST_RE = /[&<>\"]/;\n var HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\n var HTML_REPLACEMENTS = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\"\n };\n\n function replaceUnsafeChar(ch) {\n return HTML_REPLACEMENTS[ch];\n }\n\n __name(replaceUnsafeChar, \"replaceUnsafeChar\");\n\n function escapeHtml2(str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n }\n\n return str;\n }\n\n __name(escapeHtml2, \"escapeHtml\");\n\n var REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\n\n function escapeRE2(str) {\n return str.replace(REGEXP_ESCAPE_RE, \"\\\\$&\");\n }\n\n __name(escapeRE2, \"escapeRE\");\n\n function isSpace2(code3) {\n switch (code3) {\n case 9:\n case 32:\n return true;\n }\n\n return false;\n }\n\n __name(isSpace2, \"isSpace\");\n\n function isWhiteSpace2(code3) {\n if (code3 >= 8192 && code3 <= 8202) {\n return true;\n }\n\n switch (code3) {\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 32:\n case 160:\n case 5760:\n case 8239:\n case 8287:\n case 12288:\n return true;\n }\n\n return false;\n }\n\n __name(isWhiteSpace2, \"isWhiteSpace\");\n\n var UNICODE_PUNCT_RE = regex$4;\n\n function isPunctChar2(ch) {\n return UNICODE_PUNCT_RE.test(ch);\n }\n\n __name(isPunctChar2, \"isPunctChar\");\n\n function isMdAsciiPunct2(ch) {\n switch (ch) {\n case 33:\n case 34:\n case 35:\n case 36:\n case 37:\n case 38:\n case 39:\n case 40:\n case 41:\n case 42:\n case 43:\n case 44:\n case 45:\n case 46:\n case 47:\n case 58:\n case 59:\n case 60:\n case 61:\n case 62:\n case 63:\n case 64:\n case 91:\n case 92:\n case 93:\n case 94:\n case 95:\n case 96:\n case 123:\n case 124:\n case 125:\n case 126:\n return true;\n\n default:\n return false;\n }\n }\n\n __name(isMdAsciiPunct2, \"isMdAsciiPunct\");\n\n function normalizeReference2(str) {\n str = str.trim().replace(/\\s+/g, \" \");\n\n if (\"\\u1E9E\".toLowerCase() === \"\\u1E7E\") {\n str = str.replace(/ẞ/g, \"\\xDF\");\n }\n\n return str.toLowerCase().toUpperCase();\n }\n\n __name(normalizeReference2, \"normalizeReference\");\n\n exports.lib = {};\n exports.lib.mdurl = mdurl$1;\n exports.lib.ucmicro = uc_micro;\n exports.assign = assign2;\n exports.isString = isString2;\n exports.has = has2;\n exports.unescapeMd = unescapeMd;\n exports.unescapeAll = unescapeAll2;\n exports.isValidEntityCode = isValidEntityCode2;\n exports.fromCodePoint = fromCodePoint2;\n exports.escapeHtml = escapeHtml2;\n exports.arrayReplaceAt = arrayReplaceAt2;\n exports.isSpace = isSpace2;\n exports.isWhiteSpace = isWhiteSpace2;\n exports.isMdAsciiPunct = isMdAsciiPunct2;\n exports.isPunctChar = isPunctChar2;\n exports.escapeRE = escapeRE2;\n exports.normalizeReference = normalizeReference2;\n })(utils$1);\n\n var helpers$1 = {};\n\n var parse_link_label = /* @__PURE__ */__name(function parseLinkLabel(state, start, disableNested) {\n var level,\n found,\n marker2,\n prevPos,\n labelEnd = -1,\n max = state.posMax,\n oldPos = state.pos;\n state.pos = start + 1;\n level = 1;\n\n while (state.pos < max) {\n marker2 = state.src.charCodeAt(state.pos);\n\n if (marker2 === 93) {\n level--;\n\n if (level === 0) {\n found = true;\n break;\n }\n }\n\n prevPos = state.pos;\n state.md.inline.skipToken(state);\n\n if (marker2 === 91) {\n if (prevPos === state.pos - 1) {\n level++;\n } else if (disableNested) {\n state.pos = oldPos;\n return -1;\n }\n }\n }\n\n if (found) {\n labelEnd = state.pos;\n }\n\n state.pos = oldPos;\n return labelEnd;\n }, \"parseLinkLabel\");\n\n var unescapeAll$2 = utils$1.unescapeAll;\n\n var parse_link_destination = /* @__PURE__ */__name(function parseLinkDestination(str, pos, max) {\n var code3,\n level,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: \"\"\n };\n\n if (str.charCodeAt(pos) === 60) {\n pos++;\n\n while (pos < max) {\n code3 = str.charCodeAt(pos);\n\n if (code3 === 10) {\n return result;\n }\n\n if (code3 === 60) {\n return result;\n }\n\n if (code3 === 62) {\n result.pos = pos + 1;\n result.str = unescapeAll$2(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n }\n\n if (code3 === 92 && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n pos++;\n }\n\n return result;\n }\n\n level = 0;\n\n while (pos < max) {\n code3 = str.charCodeAt(pos);\n\n if (code3 === 32) {\n break;\n }\n\n if (code3 < 32 || code3 === 127) {\n break;\n }\n\n if (code3 === 92 && pos + 1 < max) {\n if (str.charCodeAt(pos + 1) === 32) {\n break;\n }\n\n pos += 2;\n continue;\n }\n\n if (code3 === 40) {\n level++;\n\n if (level > 32) {\n return result;\n }\n }\n\n if (code3 === 41) {\n if (level === 0) {\n break;\n }\n\n level--;\n }\n\n pos++;\n }\n\n if (start === pos) {\n return result;\n }\n\n if (level !== 0) {\n return result;\n }\n\n result.str = unescapeAll$2(str.slice(start, pos));\n result.lines = lines;\n result.pos = pos;\n result.ok = true;\n return result;\n }, \"parseLinkDestination\");\n\n var unescapeAll$1 = utils$1.unescapeAll;\n\n var parse_link_title = /* @__PURE__ */__name(function parseLinkTitle(str, pos, max) {\n var code3,\n marker2,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: \"\"\n };\n\n if (pos >= max) {\n return result;\n }\n\n marker2 = str.charCodeAt(pos);\n\n if (marker2 !== 34 && marker2 !== 39 && marker2 !== 40) {\n return result;\n }\n\n pos++;\n\n if (marker2 === 40) {\n marker2 = 41;\n }\n\n while (pos < max) {\n code3 = str.charCodeAt(pos);\n\n if (code3 === marker2) {\n result.pos = pos + 1;\n result.lines = lines;\n result.str = unescapeAll$1(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n } else if (code3 === 40 && marker2 === 41) {\n return result;\n } else if (code3 === 10) {\n lines++;\n } else if (code3 === 92 && pos + 1 < max) {\n pos++;\n\n if (str.charCodeAt(pos) === 10) {\n lines++;\n }\n }\n\n pos++;\n }\n\n return result;\n }, \"parseLinkTitle\");\n\n helpers$1.parseLinkLabel = parse_link_label;\n helpers$1.parseLinkDestination = parse_link_destination;\n helpers$1.parseLinkTitle = parse_link_title;\n var assign$1 = utils$1.assign;\n var unescapeAll = utils$1.unescapeAll;\n var escapeHtml = utils$1.escapeHtml;\n var default_rules = {};\n\n default_rules.code_inline = function (tokens, idx, options, env, slf) {\n var token2 = tokens[idx];\n return \"<code\" + slf.renderAttrs(token2) + \">\" + escapeHtml(tokens[idx].content) + \"</code>\";\n };\n\n default_rules.code_block = function (tokens, idx, options, env, slf) {\n var token2 = tokens[idx];\n return \"<pre\" + slf.renderAttrs(token2) + \"><code>\" + escapeHtml(tokens[idx].content) + \"</code></pre>\\n\";\n };\n\n default_rules.fence = function (tokens, idx, options, env, slf) {\n var token2 = tokens[idx],\n info = token2.info ? unescapeAll(token2.info).trim() : \"\",\n langName = \"\",\n langAttrs = \"\",\n highlighted,\n i,\n arr,\n tmpAttrs,\n tmpToken;\n\n if (info) {\n arr = info.split(/(\\s+)/g);\n langName = arr[0];\n langAttrs = arr.slice(2).join(\"\");\n }\n\n if (options.highlight) {\n highlighted = options.highlight(token2.content, langName, langAttrs) || escapeHtml(token2.content);\n } else {\n highlighted = escapeHtml(token2.content);\n }\n\n if (highlighted.indexOf(\"<pre\") === 0) {\n return highlighted + \"\\n\";\n }\n\n if (info) {\n i = token2.attrIndex(\"class\");\n tmpAttrs = token2.attrs ? token2.attrs.slice() : [];\n\n if (i < 0) {\n tmpAttrs.push([\"class\", options.langPrefix + langName]);\n } else {\n tmpAttrs[i] = tmpAttrs[i].slice();\n tmpAttrs[i][1] += \" \" + options.langPrefix + langName;\n }\n\n tmpToken = {\n attrs: tmpAttrs\n };\n return \"<pre><code\" + slf.renderAttrs(tmpToken) + \">\" + highlighted + \"</code></pre>\\n\";\n }\n\n return \"<pre><code\" + slf.renderAttrs(token2) + \">\" + highlighted + \"</code></pre>\\n\";\n };\n\n default_rules.image = function (tokens, idx, options, env, slf) {\n var token2 = tokens[idx];\n token2.attrs[token2.attrIndex(\"alt\")][1] = slf.renderInlineAsText(token2.children, options, env);\n return slf.renderToken(tokens, idx, options);\n };\n\n default_rules.hardbreak = function (tokens, idx, options) {\n return options.xhtmlOut ? \"<br />\\n\" : \"<br>\\n\";\n };\n\n default_rules.softbreak = function (tokens, idx, options) {\n return options.breaks ? options.xhtmlOut ? \"<br />\\n\" : \"<br>\\n\" : \"\\n\";\n };\n\n default_rules.text = function (tokens, idx) {\n return escapeHtml(tokens[idx].content);\n };\n\n default_rules.html_block = function (tokens, idx) {\n return tokens[idx].content;\n };\n\n default_rules.html_inline = function (tokens, idx) {\n return tokens[idx].content;\n };\n\n function Renderer$1() {\n this.rules = assign$1({}, default_rules);\n }\n\n __name(Renderer$1, \"Renderer$1\");\n\n Renderer$1.prototype.renderAttrs = /* @__PURE__ */__name(function renderAttrs(token2) {\n var i, l, result;\n\n if (!token2.attrs) {\n return \"\";\n }\n\n result = \"\";\n\n for (i = 0, l = token2.attrs.length; i < l; i++) {\n result += \" \" + escapeHtml(token2.attrs[i][0]) + '=\"' + escapeHtml(token2.attrs[i][1]) + '\"';\n }\n\n return result;\n }, \"renderAttrs\");\n Renderer$1.prototype.renderToken = /* @__PURE__ */__name(function renderToken(tokens, idx, options) {\n var nextToken,\n result = \"\",\n needLf = false,\n token2 = tokens[idx];\n\n if (token2.hidden) {\n return \"\";\n }\n\n if (token2.block && token2.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += \"\\n\";\n }\n\n result += (token2.nesting === -1 ? \"</\" : \"<\") + token2.tag;\n result += this.renderAttrs(token2);\n\n if (token2.nesting === 0 && options.xhtmlOut) {\n result += \" /\";\n }\n\n if (token2.block) {\n needLf = true;\n\n if (token2.nesting === 1) {\n if (idx + 1 < tokens.length) {\n nextToken = tokens[idx + 1];\n\n if (nextToken.type === \"inline\" || nextToken.hidden) {\n needLf = false;\n } else if (nextToken.nesting === -1 && nextToken.tag === token2.tag) {\n needLf = false;\n }\n }\n }\n }\n\n result += needLf ? \">\\n\" : \">\";\n return result;\n }, \"renderToken\");\n\n Renderer$1.prototype.renderInline = function (tokens, options, env) {\n var type2,\n result = \"\",\n rules = this.rules;\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n type2 = tokens[i].type;\n\n if (typeof rules[type2] !== \"undefined\") {\n result += rules[type2](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options);\n }\n }\n\n return result;\n };\n\n Renderer$1.prototype.renderInlineAsText = function (tokens, options, env) {\n var result = \"\";\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n if (tokens[i].type === \"text\") {\n result += tokens[i].content;\n } else if (tokens[i].type === \"image\") {\n result += this.renderInlineAsText(tokens[i].children, options, env);\n } else if (tokens[i].type === \"softbreak\") {\n result += \"\\n\";\n }\n }\n\n return result;\n };\n\n Renderer$1.prototype.render = function (tokens, options, env) {\n var i,\n len,\n type2,\n result = \"\",\n rules = this.rules;\n\n for (i = 0, len = tokens.length; i < len; i++) {\n type2 = tokens[i].type;\n\n if (type2 === \"inline\") {\n result += this.renderInline(tokens[i].children, options, env);\n } else if (typeof rules[type2] !== \"undefined\") {\n result += rules[tokens[i].type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options, env);\n }\n }\n\n return result;\n };\n\n var renderer = Renderer$1;\n\n function Ruler$3() {\n this.__rules__ = [];\n this.__cache__ = null;\n }\n\n __name(Ruler$3, \"Ruler$3\");\n\n Ruler$3.prototype.__find__ = function (name2) {\n for (var i = 0; i < this.__rules__.length; i++) {\n if (this.__rules__[i].name === name2) {\n return i;\n }\n }\n\n return -1;\n };\n\n Ruler$3.prototype.__compile__ = function () {\n var self2 = this;\n var chains = [\"\"];\n\n self2.__rules__.forEach(function (rule) {\n if (!rule.enabled) {\n return;\n }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName);\n }\n });\n });\n\n self2.__cache__ = {};\n chains.forEach(function (chain) {\n self2.__cache__[chain] = [];\n\n self2.__rules__.forEach(function (rule) {\n if (!rule.enabled) {\n return;\n }\n\n if (chain && rule.alt.indexOf(chain) < 0) {\n return;\n }\n\n self2.__cache__[chain].push(rule.fn);\n });\n });\n };\n\n Ruler$3.prototype.at = function (name2, fn, options) {\n var index = this.__find__(name2);\n\n var opt2 = options || {};\n\n if (index === -1) {\n throw new Error(\"Parser rule not found: \" + name2);\n }\n\n this.__rules__[index].fn = fn;\n this.__rules__[index].alt = opt2.alt || [];\n this.__cache__ = null;\n };\n\n Ruler$3.prototype.before = function (beforeName, ruleName, fn, options) {\n var index = this.__find__(beforeName);\n\n var opt2 = options || {};\n\n if (index === -1) {\n throw new Error(\"Parser rule not found: \" + beforeName);\n }\n\n this.__rules__.splice(index, 0, {\n name: ruleName,\n enabled: true,\n fn,\n alt: opt2.alt || []\n });\n\n this.__cache__ = null;\n };\n\n Ruler$3.prototype.after = function (afterName, ruleName, fn, options) {\n var index = this.__find__(afterName);\n\n var opt2 = options || {};\n\n if (index === -1) {\n throw new Error(\"Parser rule not found: \" + afterName);\n }\n\n this.__rules__.splice(index + 1, 0, {\n name: ruleName,\n enabled: true,\n fn,\n alt: opt2.alt || []\n });\n\n this.__cache__ = null;\n };\n\n Ruler$3.prototype.push = function (ruleName, fn, options) {\n var opt2 = options || {};\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn,\n alt: opt2.alt || []\n });\n\n this.__cache__ = null;\n };\n\n Ruler$3.prototype.enable = function (list3, ignoreInvalid) {\n if (!Array.isArray(list3)) {\n list3 = [list3];\n }\n\n var result = [];\n list3.forEach(function (name2) {\n var idx = this.__find__(name2);\n\n if (idx < 0) {\n if (ignoreInvalid) {\n return;\n }\n\n throw new Error(\"Rules manager: invalid rule name \" + name2);\n }\n\n this.__rules__[idx].enabled = true;\n result.push(name2);\n }, this);\n this.__cache__ = null;\n return result;\n };\n\n Ruler$3.prototype.enableOnly = function (list3, ignoreInvalid) {\n if (!Array.isArray(list3)) {\n list3 = [list3];\n }\n\n this.__rules__.forEach(function (rule) {\n rule.enabled = false;\n });\n\n this.enable(list3, ignoreInvalid);\n };\n\n Ruler$3.prototype.disable = function (list3, ignoreInvalid) {\n if (!Array.isArray(list3)) {\n list3 = [list3];\n }\n\n var result = [];\n list3.forEach(function (name2) {\n var idx = this.__find__(name2);\n\n if (idx < 0) {\n if (ignoreInvalid) {\n return;\n }\n\n throw new Error(\"Rules manager: invalid rule name \" + name2);\n }\n\n this.__rules__[idx].enabled = false;\n result.push(name2);\n }, this);\n this.__cache__ = null;\n return result;\n };\n\n Ruler$3.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__();\n }\n\n return this.__cache__[chainName] || [];\n };\n\n var ruler = Ruler$3;\n var NEWLINES_RE = /\\r\\n?|\\n/g;\n var NULL_RE = /\\0/g;\n\n var normalize = /* @__PURE__ */__name(function normalize2(state) {\n var str;\n str = state.src.replace(NEWLINES_RE, \"\\n\");\n str = str.replace(NULL_RE, \"\\uFFFD\");\n state.src = str;\n }, \"normalize\");\n\n var block = /* @__PURE__ */__name(function block2(state) {\n var token2;\n\n if (state.inlineMode) {\n token2 = new state.Token(\"inline\", \"\", 0);\n token2.content = state.src;\n token2.map = [0, 1];\n token2.children = [];\n state.tokens.push(token2);\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens);\n }\n }, \"block\");\n\n var inline = /* @__PURE__ */__name(function inline2(state) {\n var tokens = state.tokens,\n tok,\n i,\n l;\n\n for (i = 0, l = tokens.length; i < l; i++) {\n tok = tokens[i];\n\n if (tok.type === \"inline\") {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children);\n }\n }\n }, \"inline\");\n\n var arrayReplaceAt = utils$1.arrayReplaceAt;\n\n function isLinkOpen(str) {\n return /^<a[>\\s]/i.test(str);\n }\n\n __name(isLinkOpen, \"isLinkOpen\");\n\n function isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n }\n\n __name(isLinkClose, \"isLinkClose\");\n\n var linkify = /* @__PURE__ */__name(function linkify2(state) {\n var i,\n j,\n l,\n tokens,\n token2,\n currentToken,\n nodes,\n ln,\n text3,\n pos,\n lastPos,\n level,\n htmlLinkLevel,\n url,\n fullUrl,\n urlText,\n blockTokens = state.tokens,\n links;\n\n if (!state.md.options.linkify) {\n return;\n }\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== \"inline\" || !state.md.linkify.pretest(blockTokens[j].content)) {\n continue;\n }\n\n tokens = blockTokens[j].children;\n htmlLinkLevel = 0;\n\n for (i = tokens.length - 1; i >= 0; i--) {\n currentToken = tokens[i];\n\n if (currentToken.type === \"link_close\") {\n i--;\n\n while (tokens[i].level !== currentToken.level && tokens[i].type !== \"link_open\") {\n i--;\n }\n\n continue;\n }\n\n if (currentToken.type === \"html_inline\") {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--;\n }\n\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++;\n }\n }\n\n if (htmlLinkLevel > 0) {\n continue;\n }\n\n if (currentToken.type === \"text\" && state.md.linkify.test(currentToken.content)) {\n text3 = currentToken.content;\n links = state.md.linkify.match(text3);\n nodes = [];\n level = currentToken.level;\n lastPos = 0;\n\n for (ln = 0; ln < links.length; ln++) {\n url = links[ln].url;\n fullUrl = state.md.normalizeLink(url);\n\n if (!state.md.validateLink(fullUrl)) {\n continue;\n }\n\n urlText = links[ln].text;\n\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText(\"http://\" + urlText).replace(/^http:\\/\\//, \"\");\n } else if (links[ln].schema === \"mailto:\" && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText(\"mailto:\" + urlText).replace(/^mailto:/, \"\");\n } else {\n urlText = state.md.normalizeLinkText(urlText);\n }\n\n pos = links[ln].index;\n\n if (pos > lastPos) {\n token2 = new state.Token(\"text\", \"\", 0);\n token2.content = text3.slice(lastPos, pos);\n token2.level = level;\n nodes.push(token2);\n }\n\n token2 = new state.Token(\"link_open\", \"a\", 1);\n token2.attrs = [[\"href\", fullUrl]];\n token2.level = level++;\n token2.markup = \"linkify\";\n token2.info = \"auto\";\n nodes.push(token2);\n token2 = new state.Token(\"text\", \"\", 0);\n token2.content = urlText;\n token2.level = level;\n nodes.push(token2);\n token2 = new state.Token(\"link_close\", \"a\", -1);\n token2.level = --level;\n token2.markup = \"linkify\";\n token2.info = \"auto\";\n nodes.push(token2);\n lastPos = links[ln].lastIndex;\n }\n\n if (lastPos < text3.length) {\n token2 = new state.Token(\"text\", \"\", 0);\n token2.content = text3.slice(lastPos);\n token2.level = level;\n nodes.push(token2);\n }\n\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n }\n }\n }\n }, \"linkify\");\n\n var RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/;\n var SCOPED_ABBR_TEST_RE = /\\((c|tm|r|p)\\)/i;\n var SCOPED_ABBR_RE = /\\((c|tm|r|p)\\)/ig;\n var SCOPED_ABBR = {\n c: \"\\xA9\",\n r: \"\\xAE\",\n p: \"\\xA7\",\n tm: \"\\u2122\"\n };\n\n function replaceFn(match2, name2) {\n return SCOPED_ABBR[name2.toLowerCase()];\n }\n\n __name(replaceFn, \"replaceFn\");\n\n function replace_scoped(inlineTokens) {\n var i,\n token2,\n inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token2 = inlineTokens[i];\n\n if (token2.type === \"text\" && !inside_autolink) {\n token2.content = token2.content.replace(SCOPED_ABBR_RE, replaceFn);\n }\n\n if (token2.type === \"link_open\" && token2.info === \"auto\") {\n inside_autolink--;\n }\n\n if (token2.type === \"link_close\" && token2.info === \"auto\") {\n inside_autolink++;\n }\n }\n }\n\n __name(replace_scoped, \"replace_scoped\");\n\n function replace_rare(inlineTokens) {\n var i,\n token2,\n inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token2 = inlineTokens[i];\n\n if (token2.type === \"text\" && !inside_autolink) {\n if (RARE_RE.test(token2.content)) {\n token2.content = token2.content.replace(/\\+-/g, \"\\xB1\").replace(/\\.{2,}/g, \"\\u2026\").replace(/([?!])…/g, \"$1..\").replace(/([?!]){4,}/g, \"$1$1$1\").replace(/,{2,}/g, \",\").replace(/(^|[^-])---(?=[^-]|$)/mg, \"$1\\u2014\").replace(/(^|\\s)--(?=\\s|$)/mg, \"$1\\u2013\").replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, \"$1\\u2013\");\n }\n }\n\n if (token2.type === \"link_open\" && token2.info === \"auto\") {\n inside_autolink--;\n }\n\n if (token2.type === \"link_close\" && token2.info === \"auto\") {\n inside_autolink++;\n }\n }\n }\n\n __name(replace_rare, \"replace_rare\");\n\n var replacements = /* @__PURE__ */__name(function replace(state) {\n var blkIdx;\n\n if (!state.md.options.typographer) {\n return;\n }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== \"inline\") {\n continue;\n }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children);\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children);\n }\n }\n }, \"replace\");\n\n var isWhiteSpace$1 = utils$1.isWhiteSpace;\n var isPunctChar$1 = utils$1.isPunctChar;\n var isMdAsciiPunct$1 = utils$1.isMdAsciiPunct;\n var QUOTE_TEST_RE = /['\"]/;\n var QUOTE_RE = /['\"]/g;\n var APOSTROPHE = \"\\u2019\";\n\n function replaceAt(str, index, ch) {\n return str.substr(0, index) + ch + str.substr(index + 1);\n }\n\n __name(replaceAt, \"replaceAt\");\n\n function process_inlines(tokens, state) {\n var i, token2, text3, t2, pos, max, thisLevel, item, lastChar, nextChar, isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace, canOpen, canClose, j, isSingle, stack, openQuote, closeQuote;\n stack = [];\n\n for (i = 0; i < tokens.length; i++) {\n token2 = tokens[i];\n thisLevel = tokens[i].level;\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) {\n break;\n }\n }\n\n stack.length = j + 1;\n\n if (token2.type !== \"text\") {\n continue;\n }\n\n text3 = token2.content;\n pos = 0;\n max = text3.length;\n\n OUTER: while (pos < max) {\n QUOTE_RE.lastIndex = pos;\n t2 = QUOTE_RE.exec(text3);\n\n if (!t2) {\n break;\n }\n\n canOpen = canClose = true;\n pos = t2.index + 1;\n isSingle = t2[0] === \"'\";\n lastChar = 32;\n\n if (t2.index - 1 >= 0) {\n lastChar = text3.charCodeAt(t2.index - 1);\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type === \"softbreak\" || tokens[j].type === \"hardbreak\") break;\n if (!tokens[j].content) continue;\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);\n break;\n }\n }\n\n nextChar = 32;\n\n if (pos < max) {\n nextChar = text3.charCodeAt(pos);\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type === \"softbreak\" || tokens[j].type === \"hardbreak\") break;\n if (!tokens[j].content) continue;\n nextChar = tokens[j].content.charCodeAt(0);\n break;\n }\n }\n\n isLastPunctChar = isMdAsciiPunct$1(lastChar) || isPunctChar$1(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct$1(nextChar) || isPunctChar$1(String.fromCharCode(nextChar));\n isLastWhiteSpace = isWhiteSpace$1(lastChar);\n isNextWhiteSpace = isWhiteSpace$1(nextChar);\n\n if (isNextWhiteSpace) {\n canOpen = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false;\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false;\n }\n }\n\n if (nextChar === 34 && t2[0] === '\"') {\n if (lastChar >= 48 && lastChar <= 57) {\n canClose = canOpen = false;\n }\n }\n\n if (canOpen && canClose) {\n canOpen = isLastPunctChar;\n canClose = isNextPunctChar;\n }\n\n if (!canOpen && !canClose) {\n if (isSingle) {\n token2.content = replaceAt(token2.content, t2.index, APOSTROPHE);\n }\n\n continue;\n }\n\n if (canClose) {\n for (j = stack.length - 1; j >= 0; j--) {\n item = stack[j];\n\n if (stack[j].level < thisLevel) {\n break;\n }\n\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j];\n\n if (isSingle) {\n openQuote = state.md.options.quotes[2];\n closeQuote = state.md.options.quotes[3];\n } else {\n openQuote = state.md.options.quotes[0];\n closeQuote = state.md.options.quotes[1];\n }\n\n token2.content = replaceAt(token2.content, t2.index, closeQuote);\n tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, openQuote);\n pos += closeQuote.length - 1;\n\n if (item.token === i) {\n pos += openQuote.length - 1;\n }\n\n text3 = token2.content;\n max = text3.length;\n stack.length = j;\n continue OUTER;\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t2.index,\n single: isSingle,\n level: thisLevel\n });\n } else if (canClose && isSingle) {\n token2.content = replaceAt(token2.content, t2.index, APOSTROPHE);\n }\n }\n }\n }\n\n __name(process_inlines, \"process_inlines\");\n\n var smartquotes = /* @__PURE__ */__name(function smartquotes2(state) {\n var blkIdx;\n\n if (!state.md.options.typographer) {\n return;\n }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== \"inline\" || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue;\n }\n\n process_inlines(state.tokens[blkIdx].children, state);\n }\n }, \"smartquotes\");\n\n function Token$3(type2, tag, nesting) {\n this.type = type2;\n this.tag = tag;\n this.attrs = null;\n this.map = null;\n this.nesting = nesting;\n this.level = 0;\n this.children = null;\n this.content = \"\";\n this.markup = \"\";\n this.info = \"\";\n this.meta = null;\n this.block = false;\n this.hidden = false;\n }\n\n __name(Token$3, \"Token$3\");\n\n Token$3.prototype.attrIndex = /* @__PURE__ */__name(function attrIndex(name2) {\n var attrs, i, len;\n\n if (!this.attrs) {\n return -1;\n }\n\n attrs = this.attrs;\n\n for (i = 0, len = attrs.length; i < len; i++) {\n if (attrs[i][0] === name2) {\n return i;\n }\n }\n\n return -1;\n }, \"attrIndex\");\n Token$3.prototype.attrPush = /* @__PURE__ */__name(function attrPush(attrData) {\n if (this.attrs) {\n this.attrs.push(attrData);\n } else {\n this.attrs = [attrData];\n }\n }, \"attrPush\");\n Token$3.prototype.attrSet = /* @__PURE__ */__name(function attrSet(name2, value) {\n var idx = this.attrIndex(name2),\n attrData = [name2, value];\n\n if (idx < 0) {\n this.attrPush(attrData);\n } else {\n this.attrs[idx] = attrData;\n }\n }, \"attrSet\");\n Token$3.prototype.attrGet = /* @__PURE__ */__name(function attrGet(name2) {\n var idx = this.attrIndex(name2),\n value = null;\n\n if (idx >= 0) {\n value = this.attrs[idx][1];\n }\n\n return value;\n }, \"attrGet\");\n Token$3.prototype.attrJoin = /* @__PURE__ */__name(function attrJoin(name2, value) {\n var idx = this.attrIndex(name2);\n\n if (idx < 0) {\n this.attrPush([name2, value]);\n } else {\n this.attrs[idx][1] = this.attrs[idx][1] + \" \" + value;\n }\n }, \"attrJoin\");\n var token = Token$3;\n var Token$2 = token;\n\n function StateCore(src, md, env) {\n this.src = src;\n this.env = env;\n this.tokens = [];\n this.inlineMode = false;\n this.md = md;\n }\n\n __name(StateCore, \"StateCore\");\n\n StateCore.prototype.Token = Token$2;\n var state_core = StateCore;\n var Ruler$2 = ruler;\n var _rules$2 = [[\"normalize\", normalize], [\"block\", block], [\"inline\", inline], [\"linkify\", linkify], [\"replacements\", replacements], [\"smartquotes\", smartquotes]];\n\n function Core() {\n this.ruler = new Ruler$2();\n\n for (var i = 0; i < _rules$2.length; i++) {\n this.ruler.push(_rules$2[i][0], _rules$2[i][1]);\n }\n }\n\n __name(Core, \"Core\");\n\n Core.prototype.process = function (state) {\n var i, l, rules;\n rules = this.ruler.getRules(\"\");\n\n for (i = 0, l = rules.length; i < l; i++) {\n rules[i](state);\n }\n };\n\n Core.prototype.State = state_core;\n var parser_core = Core;\n var isSpace$a = utils$1.isSpace;\n\n function getLine(state, line) {\n var pos = state.bMarks[line] + state.tShift[line],\n max = state.eMarks[line];\n return state.src.substr(pos, max - pos);\n }\n\n __name(getLine, \"getLine\");\n\n function escapedSplit(str) {\n var result = [],\n pos = 0,\n max = str.length,\n ch,\n isEscaped = false,\n lastPos = 0,\n current = \"\";\n ch = str.charCodeAt(pos);\n\n while (pos < max) {\n if (ch === 124) {\n if (!isEscaped) {\n result.push(current + str.substring(lastPos, pos));\n current = \"\";\n lastPos = pos + 1;\n } else {\n current += str.substring(lastPos, pos - 1);\n lastPos = pos;\n }\n }\n\n isEscaped = ch === 92;\n pos++;\n ch = str.charCodeAt(pos);\n }\n\n result.push(current + str.substring(lastPos));\n return result;\n }\n\n __name(escapedSplit, \"escapedSplit\");\n\n var table = /* @__PURE__ */__name(function table2(state, startLine, endLine, silent) {\n var ch, lineText, pos, i, l, nextLine, columns, columnCount, token2, aligns, t2, tableLines, tbodyLines, oldParentType, terminate, terminatorRules, firstCh, secondCh;\n\n if (startLine + 2 > endLine) {\n return false;\n }\n\n nextLine = startLine + 1;\n\n if (state.sCount[nextLine] < state.blkIndent) {\n return false;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n return false;\n }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n\n if (pos >= state.eMarks[nextLine]) {\n return false;\n }\n\n firstCh = state.src.charCodeAt(pos++);\n\n if (firstCh !== 124 && firstCh !== 45 && firstCh !== 58) {\n return false;\n }\n\n if (pos >= state.eMarks[nextLine]) {\n return false;\n }\n\n secondCh = state.src.charCodeAt(pos++);\n\n if (secondCh !== 124 && secondCh !== 45 && secondCh !== 58 && !isSpace$a(secondCh)) {\n return false;\n }\n\n if (firstCh === 45 && isSpace$a(secondCh)) {\n return false;\n }\n\n while (pos < state.eMarks[nextLine]) {\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 124 && ch !== 45 && ch !== 58 && !isSpace$a(ch)) {\n return false;\n }\n\n pos++;\n }\n\n lineText = getLine(state, startLine + 1);\n columns = lineText.split(\"|\");\n aligns = [];\n\n for (i = 0; i < columns.length; i++) {\n t2 = columns[i].trim();\n\n if (!t2) {\n if (i === 0 || i === columns.length - 1) {\n continue;\n } else {\n return false;\n }\n }\n\n if (!/^:?-+:?$/.test(t2)) {\n return false;\n }\n\n if (t2.charCodeAt(t2.length - 1) === 58) {\n aligns.push(t2.charCodeAt(0) === 58 ? \"center\" : \"right\");\n } else if (t2.charCodeAt(0) === 58) {\n aligns.push(\"left\");\n } else {\n aligns.push(\"\");\n }\n }\n\n lineText = getLine(state, startLine).trim();\n\n if (lineText.indexOf(\"|\") === -1) {\n return false;\n }\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n columns = escapedSplit(lineText);\n if (columns.length && columns[0] === \"\") columns.shift();\n if (columns.length && columns[columns.length - 1] === \"\") columns.pop();\n columnCount = columns.length;\n\n if (columnCount === 0 || columnCount !== aligns.length) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n oldParentType = state.parentType;\n state.parentType = \"table\";\n terminatorRules = state.md.block.ruler.getRules(\"blockquote\");\n token2 = state.push(\"table_open\", \"table\", 1);\n token2.map = tableLines = [startLine, 0];\n token2 = state.push(\"thead_open\", \"thead\", 1);\n token2.map = [startLine, startLine + 1];\n token2 = state.push(\"tr_open\", \"tr\", 1);\n token2.map = [startLine, startLine + 1];\n\n for (i = 0; i < columns.length; i++) {\n token2 = state.push(\"th_open\", \"th\", 1);\n\n if (aligns[i]) {\n token2.attrs = [[\"style\", \"text-align:\" + aligns[i]]];\n }\n\n token2 = state.push(\"inline\", \"\", 0);\n token2.content = columns[i].trim();\n token2.children = [];\n token2 = state.push(\"th_close\", \"th\", -1);\n }\n\n token2 = state.push(\"tr_close\", \"tr\", -1);\n token2 = state.push(\"thead_close\", \"thead\", -1);\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n }\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n\n lineText = getLine(state, nextLine).trim();\n\n if (!lineText) {\n break;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n break;\n }\n\n columns = escapedSplit(lineText);\n if (columns.length && columns[0] === \"\") columns.shift();\n if (columns.length && columns[columns.length - 1] === \"\") columns.pop();\n\n if (nextLine === startLine + 2) {\n token2 = state.push(\"tbody_open\", \"tbody\", 1);\n token2.map = tbodyLines = [startLine + 2, 0];\n }\n\n token2 = state.push(\"tr_open\", \"tr\", 1);\n token2.map = [nextLine, nextLine + 1];\n\n for (i = 0; i < columnCount; i++) {\n token2 = state.push(\"td_open\", \"td\", 1);\n\n if (aligns[i]) {\n token2.attrs = [[\"style\", \"text-align:\" + aligns[i]]];\n }\n\n token2 = state.push(\"inline\", \"\", 0);\n token2.content = columns[i] ? columns[i].trim() : \"\";\n token2.children = [];\n token2 = state.push(\"td_close\", \"td\", -1);\n }\n\n token2 = state.push(\"tr_close\", \"tr\", -1);\n }\n\n if (tbodyLines) {\n token2 = state.push(\"tbody_close\", \"tbody\", -1);\n tbodyLines[1] = nextLine;\n }\n\n token2 = state.push(\"table_close\", \"table\", -1);\n tableLines[1] = nextLine;\n state.parentType = oldParentType;\n state.line = nextLine;\n return true;\n }, \"table\");\n\n var code = /* @__PURE__ */__name(function code2(state, startLine, endLine) {\n var nextLine, last, token2;\n\n if (state.sCount[startLine] - state.blkIndent < 4) {\n return false;\n }\n\n last = nextLine = startLine + 1;\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n nextLine++;\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n nextLine++;\n last = nextLine;\n continue;\n }\n\n break;\n }\n\n state.line = last;\n token2 = state.push(\"code_block\", \"code\", 0);\n token2.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + \"\\n\";\n token2.map = [startLine, state.line];\n return true;\n }, \"code\");\n\n var fence = /* @__PURE__ */__name(function fence2(state, startLine, endLine, silent) {\n var marker2,\n len,\n params,\n nextLine,\n mem,\n token2,\n markup,\n haveEndMarker = false,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (pos + 3 > max) {\n return false;\n }\n\n marker2 = state.src.charCodeAt(pos);\n\n if (marker2 !== 126 && marker2 !== 96) {\n return false;\n }\n\n mem = pos;\n pos = state.skipChars(pos, marker2);\n len = pos - mem;\n\n if (len < 3) {\n return false;\n }\n\n markup = state.src.slice(mem, pos);\n params = state.src.slice(pos, max);\n\n if (marker2 === 96) {\n if (params.indexOf(String.fromCharCode(marker2)) >= 0) {\n return false;\n }\n }\n\n if (silent) {\n return true;\n }\n\n nextLine = startLine;\n\n for (;;) {\n nextLine++;\n\n if (nextLine >= endLine) {\n break;\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n break;\n }\n\n if (state.src.charCodeAt(pos) !== marker2) {\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n continue;\n }\n\n pos = state.skipChars(pos, marker2);\n\n if (pos - mem < len) {\n continue;\n }\n\n pos = state.skipSpaces(pos);\n\n if (pos < max) {\n continue;\n }\n\n haveEndMarker = true;\n break;\n }\n\n len = state.sCount[startLine];\n state.line = nextLine + (haveEndMarker ? 1 : 0);\n token2 = state.push(\"fence\", \"code\", 0);\n token2.info = params;\n token2.content = state.getLines(startLine + 1, nextLine, len, true);\n token2.markup = markup;\n token2.map = [startLine, state.line];\n return true;\n }, \"fence\");\n\n var isSpace$9 = utils$1.isSpace;\n\n var blockquote = /* @__PURE__ */__name(function blockquote2(state, startLine, endLine, silent) {\n var adjustTab,\n ch,\n i,\n initial,\n l,\n lastLineEmpty,\n lines,\n nextLine,\n offset,\n oldBMarks,\n oldBSCount,\n oldIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n spaceAfterMarker,\n terminate,\n terminatorRules,\n token2,\n isOutdented,\n oldLineMax = state.lineMax,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (state.src.charCodeAt(pos++) !== 62) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n initial = offset = state.sCount[startLine] + 1;\n\n if (state.src.charCodeAt(pos) === 32) {\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 9) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[startLine] + offset) % 4 === 3) {\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n oldBMarks = [state.bMarks[startLine]];\n state.bMarks[startLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace$9(ch)) {\n if (ch === 9) {\n offset += 4 - (offset + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n oldBSCount = [state.bsCount[startLine]];\n state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0);\n lastLineEmpty = pos >= max;\n oldSCount = [state.sCount[startLine]];\n state.sCount[startLine] = offset - initial;\n oldTShift = [state.tShift[startLine]];\n state.tShift[startLine] = pos - state.bMarks[startLine];\n terminatorRules = state.md.block.ruler.getRules(\"blockquote\");\n oldParentType = state.parentType;\n state.parentType = \"blockquote\";\n\n for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {\n isOutdented = state.sCount[nextLine] < state.blkIndent;\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos >= max) {\n break;\n }\n\n if (state.src.charCodeAt(pos++) === 62 && !isOutdented) {\n initial = offset = state.sCount[nextLine] + 1;\n\n if (state.src.charCodeAt(pos) === 32) {\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 9) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[nextLine] + offset) % 4 === 3) {\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n state.bMarks[nextLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace$9(ch)) {\n if (ch === 9) {\n offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n lastLineEmpty = pos >= max;\n oldBSCount.push(state.bsCount[nextLine]);\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] = offset - initial;\n oldTShift.push(state.tShift[nextLine]);\n state.tShift[nextLine] = pos - state.bMarks[nextLine];\n continue;\n }\n\n if (lastLineEmpty) {\n break;\n }\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n state.lineMax = nextLine;\n\n if (state.blkIndent !== 0) {\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] -= state.blkIndent;\n }\n\n break;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] = -1;\n }\n\n oldIndent = state.blkIndent;\n state.blkIndent = 0;\n token2 = state.push(\"blockquote_open\", \"blockquote\", 1);\n token2.markup = \">\";\n token2.map = lines = [startLine, 0];\n state.md.block.tokenize(state, startLine, nextLine);\n token2 = state.push(\"blockquote_close\", \"blockquote\", -1);\n token2.markup = \">\";\n state.lineMax = oldLineMax;\n state.parentType = oldParentType;\n lines[1] = state.line;\n\n for (i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i];\n state.tShift[i + startLine] = oldTShift[i];\n state.sCount[i + startLine] = oldSCount[i];\n state.bsCount[i + startLine] = oldBSCount[i];\n }\n\n state.blkIndent = oldIndent;\n return true;\n }, \"blockquote\");\n\n var isSpace$8 = utils$1.isSpace;\n\n var hr = /* @__PURE__ */__name(function hr2(state, startLine, endLine, silent) {\n var marker2,\n cnt,\n ch,\n token2,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n marker2 = state.src.charCodeAt(pos++);\n\n if (marker2 !== 42 && marker2 !== 45 && marker2 !== 95) {\n return false;\n }\n\n cnt = 1;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos++);\n\n if (ch !== marker2 && !isSpace$8(ch)) {\n return false;\n }\n\n if (ch === marker2) {\n cnt++;\n }\n }\n\n if (cnt < 3) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n state.line = startLine + 1;\n token2 = state.push(\"hr\", \"hr\", 0);\n token2.map = [startLine, state.line];\n token2.markup = Array(cnt + 1).join(String.fromCharCode(marker2));\n return true;\n }, \"hr\");\n\n var isSpace$7 = utils$1.isSpace;\n\n function skipBulletListMarker(state, startLine) {\n var marker2, pos, max, ch;\n pos = state.bMarks[startLine] + state.tShift[startLine];\n max = state.eMarks[startLine];\n marker2 = state.src.charCodeAt(pos++);\n\n if (marker2 !== 42 && marker2 !== 45 && marker2 !== 43) {\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace$7(ch)) {\n return -1;\n }\n }\n\n return pos;\n }\n\n __name(skipBulletListMarker, \"skipBulletListMarker\");\n\n function skipOrderedListMarker(state, startLine) {\n var ch,\n start = state.bMarks[startLine] + state.tShift[startLine],\n pos = start,\n max = state.eMarks[startLine];\n\n if (pos + 1 >= max) {\n return -1;\n }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch < 48 || ch > 57) {\n return -1;\n }\n\n for (;;) {\n if (pos >= max) {\n return -1;\n }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch >= 48 && ch <= 57) {\n if (pos - start >= 10) {\n return -1;\n }\n\n continue;\n }\n\n if (ch === 41 || ch === 46) {\n break;\n }\n\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace$7(ch)) {\n return -1;\n }\n }\n\n return pos;\n }\n\n __name(skipOrderedListMarker, \"skipOrderedListMarker\");\n\n function markTightParagraphs(state, idx) {\n var i,\n l,\n level = state.level + 2;\n\n for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === \"paragraph_open\") {\n state.tokens[i + 2].hidden = true;\n state.tokens[i].hidden = true;\n i += 2;\n }\n }\n }\n\n __name(markTightParagraphs, \"markTightParagraphs\");\n\n var list$1 = /* @__PURE__ */__name(function list(state, startLine, endLine, silent) {\n var ch,\n contentStart,\n i,\n indent,\n indentAfterMarker,\n initial,\n isOrdered,\n itemLines,\n l,\n listLines,\n listTokIdx,\n markerCharCode,\n markerValue,\n max,\n nextLine,\n offset,\n oldListIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n oldTight,\n pos,\n posAfterMarker,\n prevEmptyEnd,\n start,\n terminate,\n terminatorRules,\n token2,\n isTerminatingParagraph = false,\n tight = true;\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (state.listIndent >= 0 && state.sCount[startLine] - state.listIndent >= 4 && state.sCount[startLine] < state.blkIndent) {\n return false;\n }\n\n if (silent && state.parentType === \"paragraph\") {\n if (state.tShift[startLine] >= state.blkIndent) {\n isTerminatingParagraph = true;\n }\n }\n\n if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {\n isOrdered = true;\n start = state.bMarks[startLine] + state.tShift[startLine];\n markerValue = Number(state.src.slice(start, posAfterMarker - 1));\n if (isTerminatingParagraph && markerValue !== 1) return false;\n } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {\n isOrdered = false;\n } else {\n return false;\n }\n\n if (isTerminatingParagraph) {\n if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine]) return false;\n }\n\n markerCharCode = state.src.charCodeAt(posAfterMarker - 1);\n\n if (silent) {\n return true;\n }\n\n listTokIdx = state.tokens.length;\n\n if (isOrdered) {\n token2 = state.push(\"ordered_list_open\", \"ol\", 1);\n\n if (markerValue !== 1) {\n token2.attrs = [[\"start\", markerValue]];\n }\n } else {\n token2 = state.push(\"bullet_list_open\", \"ul\", 1);\n }\n\n token2.map = listLines = [startLine, 0];\n token2.markup = String.fromCharCode(markerCharCode);\n nextLine = startLine;\n prevEmptyEnd = false;\n terminatorRules = state.md.block.ruler.getRules(\"list\");\n oldParentType = state.parentType;\n state.parentType = \"list\";\n\n while (nextLine < endLine) {\n pos = posAfterMarker;\n max = state.eMarks[nextLine];\n initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch === 9) {\n offset += 4 - (offset + state.bsCount[nextLine]) % 4;\n } else if (ch === 32) {\n offset++;\n } else {\n break;\n }\n\n pos++;\n }\n\n contentStart = pos;\n\n if (contentStart >= max) {\n indentAfterMarker = 1;\n } else {\n indentAfterMarker = offset - initial;\n }\n\n if (indentAfterMarker > 4) {\n indentAfterMarker = 1;\n }\n\n indent = initial + indentAfterMarker;\n token2 = state.push(\"list_item_open\", \"li\", 1);\n token2.markup = String.fromCharCode(markerCharCode);\n token2.map = itemLines = [startLine, 0];\n\n if (isOrdered) {\n token2.info = state.src.slice(start, posAfterMarker - 1);\n }\n\n oldTight = state.tight;\n oldTShift = state.tShift[startLine];\n oldSCount = state.sCount[startLine];\n oldListIndent = state.listIndent;\n state.listIndent = state.blkIndent;\n state.blkIndent = indent;\n state.tight = true;\n state.tShift[startLine] = contentStart - state.bMarks[startLine];\n state.sCount[startLine] = offset;\n\n if (contentStart >= max && state.isEmpty(startLine + 1)) {\n state.line = Math.min(state.line + 2, endLine);\n } else {\n state.md.block.tokenize(state, startLine, endLine, true);\n }\n\n if (!state.tight || prevEmptyEnd) {\n tight = false;\n }\n\n prevEmptyEnd = state.line - startLine > 1 && state.isEmpty(state.line - 1);\n state.blkIndent = state.listIndent;\n state.listIndent = oldListIndent;\n state.tShift[startLine] = oldTShift;\n state.sCount[startLine] = oldSCount;\n state.tight = oldTight;\n token2 = state.push(\"list_item_close\", \"li\", -1);\n token2.markup = String.fromCharCode(markerCharCode);\n nextLine = startLine = state.line;\n itemLines[1] = nextLine;\n contentStart = state.bMarks[startLine];\n\n if (nextLine >= endLine) {\n break;\n }\n\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n }\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n break;\n }\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine);\n\n if (posAfterMarker < 0) {\n break;\n }\n\n start = state.bMarks[nextLine] + state.tShift[nextLine];\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine);\n\n if (posAfterMarker < 0) {\n break;\n }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) {\n break;\n }\n }\n\n if (isOrdered) {\n token2 = state.push(\"ordered_list_close\", \"ol\", -1);\n } else {\n token2 = state.push(\"bullet_list_close\", \"ul\", -1);\n }\n\n token2.markup = String.fromCharCode(markerCharCode);\n listLines[1] = nextLine;\n state.line = nextLine;\n state.parentType = oldParentType;\n\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n }, \"list\");\n\n var normalizeReference$2 = utils$1.normalizeReference;\n var isSpace$6 = utils$1.isSpace;\n\n var reference = /* @__PURE__ */__name(function reference2(state, startLine, _endLine, silent) {\n var ch,\n destEndPos,\n destEndLineNo,\n endLine,\n href,\n i,\n l,\n label,\n labelEnd,\n oldParentType,\n res,\n start,\n str,\n terminate,\n terminatorRules,\n title,\n lines = 0,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine],\n nextLine = startLine + 1;\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (state.src.charCodeAt(pos) !== 91) {\n return false;\n }\n\n while (++pos < max) {\n if (state.src.charCodeAt(pos) === 93 && state.src.charCodeAt(pos - 1) !== 92) {\n if (pos + 1 === max) {\n return false;\n }\n\n if (state.src.charCodeAt(pos + 1) !== 58) {\n return false;\n }\n\n break;\n }\n }\n\n endLine = state.lineMax;\n terminatorRules = state.md.block.ruler.getRules(\"reference\");\n oldParentType = state.parentType;\n state.parentType = \"reference\";\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n }\n\n if (state.sCount[nextLine] < 0) {\n continue;\n }\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n max = str.length;\n\n for (pos = 1; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 91) {\n return false;\n } else if (ch === 93) {\n labelEnd = pos;\n break;\n } else if (ch === 10) {\n lines++;\n } else if (ch === 92) {\n pos++;\n\n if (pos < max && str.charCodeAt(pos) === 10) {\n lines++;\n }\n }\n }\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 58) {\n return false;\n }\n\n for (pos = labelEnd + 2; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 10) {\n lines++;\n } else if (isSpace$6(ch)) ;else {\n break;\n }\n }\n\n res = state.md.helpers.parseLinkDestination(str, pos, max);\n\n if (!res.ok) {\n return false;\n }\n\n href = state.md.normalizeLink(res.str);\n\n if (!state.md.validateLink(href)) {\n return false;\n }\n\n pos = res.pos;\n lines += res.lines;\n destEndPos = pos;\n destEndLineNo = lines;\n start = pos;\n\n for (; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 10) {\n lines++;\n } else if (isSpace$6(ch)) ;else {\n break;\n }\n }\n\n res = state.md.helpers.parseLinkTitle(str, pos, max);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n lines += res.lines;\n } else {\n title = \"\";\n pos = destEndPos;\n lines = destEndLineNo;\n }\n\n while (pos < max) {\n ch = str.charCodeAt(pos);\n\n if (!isSpace$6(ch)) {\n break;\n }\n\n pos++;\n }\n\n if (pos < max && str.charCodeAt(pos) !== 10) {\n if (title) {\n title = \"\";\n pos = destEndPos;\n lines = destEndLineNo;\n\n while (pos < max) {\n ch = str.charCodeAt(pos);\n\n if (!isSpace$6(ch)) {\n break;\n }\n\n pos++;\n }\n }\n }\n\n if (pos < max && str.charCodeAt(pos) !== 10) {\n return false;\n }\n\n label = normalizeReference$2(str.slice(1, labelEnd));\n\n if (!label) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n if (typeof state.env.references === \"undefined\") {\n state.env.references = {};\n }\n\n if (typeof state.env.references[label] === \"undefined\") {\n state.env.references[label] = {\n title,\n href\n };\n }\n\n state.parentType = oldParentType;\n state.line = startLine + lines + 1;\n return true;\n }, \"reference\");\n\n var html_blocks = [\"address\", \"article\", \"aside\", \"base\", \"basefont\", \"blockquote\", \"body\", \"caption\", \"center\", \"col\", \"colgroup\", \"dd\", \"details\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"fieldset\", \"figcaption\", \"figure\", \"footer\", \"form\", \"frame\", \"frameset\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hr\", \"html\", \"iframe\", \"legend\", \"li\", \"link\", \"main\", \"menu\", \"menuitem\", \"nav\", \"noframes\", \"ol\", \"optgroup\", \"option\", \"p\", \"param\", \"section\", \"source\", \"summary\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"title\", \"tr\", \"track\", \"ul\"];\n var html_re = {};\n var attr_name = \"[a-zA-Z_:][a-zA-Z0-9:._-]*\";\n var unquoted = \"[^\\\"'=<>`\\\\x00-\\\\x20]+\";\n var single_quoted = \"'[^']*'\";\n var double_quoted = '\"[^\"]*\"';\n var attr_value = \"(?:\" + unquoted + \"|\" + single_quoted + \"|\" + double_quoted + \")\";\n var attribute = \"(?:\\\\s+\" + attr_name + \"(?:\\\\s*=\\\\s*\" + attr_value + \")?)\";\n var open_tag = \"<[A-Za-z][A-Za-z0-9\\\\-]*\" + attribute + \"*\\\\s*\\\\/?>\";\n var close_tag = \"<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>\";\n var comment = \"<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->\";\n var processing = \"<[?][\\\\s\\\\S]*?[?]>\";\n var declaration = \"<![A-Z]+\\\\s+[^>]*>\";\n var cdata = \"<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\";\n var HTML_TAG_RE$1 = new RegExp(\"^(?:\" + open_tag + \"|\" + close_tag + \"|\" + comment + \"|\" + processing + \"|\" + declaration + \"|\" + cdata + \")\");\n var HTML_OPEN_CLOSE_TAG_RE$1 = new RegExp(\"^(?:\" + open_tag + \"|\" + close_tag + \")\");\n html_re.HTML_TAG_RE = HTML_TAG_RE$1;\n html_re.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE$1;\n var block_names = html_blocks;\n var HTML_OPEN_CLOSE_TAG_RE = html_re.HTML_OPEN_CLOSE_TAG_RE;\n var HTML_SEQUENCES = [[/^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true], [/^<!--/, /-->/, true], [/^<\\?/, /\\?>/, true], [/^<![A-Z]/, />/, true], [/^<!\\[CDATA\\[/, /\\]\\]>/, true], [new RegExp(\"^</?(\" + block_names.join(\"|\") + \")(?=(\\\\s|/?>|$))\", \"i\"), /^$/, true], [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + \"\\\\s*$\"), /^$/, false]];\n\n var html_block = /* @__PURE__ */__name(function html_block2(state, startLine, endLine, silent) {\n var i,\n nextLine,\n token2,\n lineText,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (!state.md.options.html) {\n return false;\n }\n\n if (state.src.charCodeAt(pos) !== 60) {\n return false;\n }\n\n lineText = state.src.slice(pos, max);\n\n for (i = 0; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) {\n break;\n }\n }\n\n if (i === HTML_SEQUENCES.length) {\n return false;\n }\n\n if (silent) {\n return HTML_SEQUENCES[i][2];\n }\n\n nextLine = startLine + 1;\n\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n lineText = state.src.slice(pos, max);\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) {\n nextLine++;\n }\n\n break;\n }\n }\n }\n\n state.line = nextLine;\n token2 = state.push(\"html_block\", \"\", 0);\n token2.map = [startLine, nextLine];\n token2.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n return true;\n }, \"html_block\");\n\n var isSpace$5 = utils$1.isSpace;\n\n var heading = /* @__PURE__ */__name(function heading2(state, startLine, endLine, silent) {\n var ch,\n level,\n tmp,\n token2,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 35 || pos >= max) {\n return false;\n }\n\n level = 1;\n ch = state.src.charCodeAt(++pos);\n\n while (ch === 35 && pos < max && level <= 6) {\n level++;\n ch = state.src.charCodeAt(++pos);\n }\n\n if (level > 6 || pos < max && !isSpace$5(ch)) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n max = state.skipSpacesBack(max, pos);\n tmp = state.skipCharsBack(max, 35, pos);\n\n if (tmp > pos && isSpace$5(state.src.charCodeAt(tmp - 1))) {\n max = tmp;\n }\n\n state.line = startLine + 1;\n token2 = state.push(\"heading_open\", \"h\" + String(level), 1);\n token2.markup = \"########\".slice(0, level);\n token2.map = [startLine, state.line];\n token2 = state.push(\"inline\", \"\", 0);\n token2.content = state.src.slice(pos, max).trim();\n token2.map = [startLine, state.line];\n token2.children = [];\n token2 = state.push(\"heading_close\", \"h\" + String(level), -1);\n token2.markup = \"########\".slice(0, level);\n return true;\n }, \"heading\");\n\n var lheading = /* @__PURE__ */__name(function lheading2(state, startLine, endLine) {\n var content,\n terminate,\n i,\n l,\n token2,\n pos,\n max,\n level,\n marker2,\n nextLine = startLine + 1,\n oldParentType,\n terminatorRules = state.md.block.ruler.getRules(\"paragraph\");\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n oldParentType = state.parentType;\n state.parentType = \"paragraph\";\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n }\n\n if (state.sCount[nextLine] >= state.blkIndent) {\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max) {\n marker2 = state.src.charCodeAt(pos);\n\n if (marker2 === 45 || marker2 === 61) {\n pos = state.skipChars(pos, marker2);\n pos = state.skipSpaces(pos);\n\n if (pos >= max) {\n level = marker2 === 61 ? 1 : 2;\n break;\n }\n }\n }\n }\n\n if (state.sCount[nextLine] < 0) {\n continue;\n }\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n if (!level) {\n return false;\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n state.line = nextLine + 1;\n token2 = state.push(\"heading_open\", \"h\" + String(level), 1);\n token2.markup = String.fromCharCode(marker2);\n token2.map = [startLine, state.line];\n token2 = state.push(\"inline\", \"\", 0);\n token2.content = content;\n token2.map = [startLine, state.line - 1];\n token2.children = [];\n token2 = state.push(\"heading_close\", \"h\" + String(level), -1);\n token2.markup = String.fromCharCode(marker2);\n state.parentType = oldParentType;\n return true;\n }, \"lheading\");\n\n var paragraph = /* @__PURE__ */__name(function paragraph2(state, startLine) {\n var content,\n terminate,\n i,\n l,\n token2,\n oldParentType,\n nextLine = startLine + 1,\n terminatorRules = state.md.block.ruler.getRules(\"paragraph\"),\n endLine = state.lineMax;\n oldParentType = state.parentType;\n state.parentType = \"paragraph\";\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n }\n\n if (state.sCount[nextLine] < 0) {\n continue;\n }\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n state.line = nextLine;\n token2 = state.push(\"paragraph_open\", \"p\", 1);\n token2.map = [startLine, state.line];\n token2 = state.push(\"inline\", \"\", 0);\n token2.content = content;\n token2.map = [startLine, state.line];\n token2.children = [];\n token2 = state.push(\"paragraph_close\", \"p\", -1);\n state.parentType = oldParentType;\n return true;\n }, \"paragraph\");\n\n var Token$1 = token;\n var isSpace$4 = utils$1.isSpace;\n\n function StateBlock(src, md, env, tokens) {\n var ch, s, start, pos, len, indent, offset, indent_found;\n this.src = src;\n this.md = md;\n this.env = env;\n this.tokens = tokens;\n this.bMarks = [];\n this.eMarks = [];\n this.tShift = [];\n this.sCount = [];\n this.bsCount = [];\n this.blkIndent = 0;\n this.line = 0;\n this.lineMax = 0;\n this.tight = false;\n this.ddIndent = -1;\n this.listIndent = -1;\n this.parentType = \"root\";\n this.level = 0;\n this.result = \"\";\n s = this.src;\n indent_found = false;\n\n for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {\n ch = s.charCodeAt(pos);\n\n if (!indent_found) {\n if (isSpace$4(ch)) {\n indent++;\n\n if (ch === 9) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n\n continue;\n } else {\n indent_found = true;\n }\n }\n\n if (ch === 10 || pos === len - 1) {\n if (ch !== 10) {\n pos++;\n }\n\n this.bMarks.push(start);\n this.eMarks.push(pos);\n this.tShift.push(indent);\n this.sCount.push(offset);\n this.bsCount.push(0);\n indent_found = false;\n indent = 0;\n offset = 0;\n start = pos + 1;\n }\n }\n\n this.bMarks.push(s.length);\n this.eMarks.push(s.length);\n this.tShift.push(0);\n this.sCount.push(0);\n this.bsCount.push(0);\n this.lineMax = this.bMarks.length - 1;\n }\n\n __name(StateBlock, \"StateBlock\");\n\n StateBlock.prototype.push = function (type2, tag, nesting) {\n var token2 = new Token$1(type2, tag, nesting);\n token2.block = true;\n if (nesting < 0) this.level--;\n token2.level = this.level;\n if (nesting > 0) this.level++;\n this.tokens.push(token2);\n return token2;\n };\n\n StateBlock.prototype.isEmpty = /* @__PURE__ */__name(function isEmpty(line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n }, \"isEmpty\");\n StateBlock.prototype.skipEmptyLines = /* @__PURE__ */__name(function skipEmptyLines(from) {\n for (var max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break;\n }\n }\n\n return from;\n }, \"skipEmptyLines\");\n StateBlock.prototype.skipSpaces = /* @__PURE__ */__name(function skipSpaces(pos) {\n var ch;\n\n for (var max = this.src.length; pos < max; pos++) {\n ch = this.src.charCodeAt(pos);\n\n if (!isSpace$4(ch)) {\n break;\n }\n }\n\n return pos;\n }, \"skipSpaces\");\n StateBlock.prototype.skipSpacesBack = /* @__PURE__ */__name(function skipSpacesBack(pos, min) {\n if (pos <= min) {\n return pos;\n }\n\n while (pos > min) {\n if (!isSpace$4(this.src.charCodeAt(--pos))) {\n return pos + 1;\n }\n }\n\n return pos;\n }, \"skipSpacesBack\");\n StateBlock.prototype.skipChars = /* @__PURE__ */__name(function skipChars(pos, code3) {\n for (var max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code3) {\n break;\n }\n }\n\n return pos;\n }, \"skipChars\");\n StateBlock.prototype.skipCharsBack = /* @__PURE__ */__name(function skipCharsBack(pos, code3, min) {\n if (pos <= min) {\n return pos;\n }\n\n while (pos > min) {\n if (code3 !== this.src.charCodeAt(--pos)) {\n return pos + 1;\n }\n }\n\n return pos;\n }, \"skipCharsBack\");\n StateBlock.prototype.getLines = /* @__PURE__ */__name(function getLines(begin, end, indent, keepLastLF) {\n var i,\n lineIndent,\n ch,\n first,\n last,\n queue,\n lineStart,\n line = begin;\n\n if (begin >= end) {\n return \"\";\n }\n\n queue = new Array(end - begin);\n\n for (i = 0; line < end; line++, i++) {\n lineIndent = 0;\n lineStart = first = this.bMarks[line];\n\n if (line + 1 < end || keepLastLF) {\n last = this.eMarks[line] + 1;\n } else {\n last = this.eMarks[line];\n }\n\n while (first < last && lineIndent < indent) {\n ch = this.src.charCodeAt(first);\n\n if (isSpace$4(ch)) {\n if (ch === 9) {\n lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;\n } else {\n lineIndent++;\n }\n } else if (first - lineStart < this.tShift[line]) {\n lineIndent++;\n } else {\n break;\n }\n\n first++;\n }\n\n if (lineIndent > indent) {\n queue[i] = new Array(lineIndent - indent + 1).join(\" \") + this.src.slice(first, last);\n } else {\n queue[i] = this.src.slice(first, last);\n }\n }\n\n return queue.join(\"\");\n }, \"getLines\");\n StateBlock.prototype.Token = Token$1;\n var state_block = StateBlock;\n var Ruler$1 = ruler;\n var _rules$1 = [[\"table\", table, [\"paragraph\", \"reference\"]], [\"code\", code], [\"fence\", fence, [\"paragraph\", \"reference\", \"blockquote\", \"list\"]], [\"blockquote\", blockquote, [\"paragraph\", \"reference\", \"blockquote\", \"list\"]], [\"hr\", hr, [\"paragraph\", \"reference\", \"blockquote\", \"list\"]], [\"list\", list$1, [\"paragraph\", \"reference\", \"blockquote\"]], [\"reference\", reference], [\"html_block\", html_block, [\"paragraph\", \"reference\", \"blockquote\"]], [\"heading\", heading, [\"paragraph\", \"reference\", \"blockquote\"]], [\"lheading\", lheading], [\"paragraph\", paragraph]];\n\n function ParserBlock$1() {\n this.ruler = new Ruler$1();\n\n for (var i = 0; i < _rules$1.length; i++) {\n this.ruler.push(_rules$1[i][0], _rules$1[i][1], {\n alt: (_rules$1[i][2] || []).slice()\n });\n }\n }\n\n __name(ParserBlock$1, \"ParserBlock$1\");\n\n ParserBlock$1.prototype.tokenize = function (state, startLine, endLine) {\n var ok,\n i,\n rules = this.ruler.getRules(\"\"),\n len = rules.length,\n line = startLine,\n hasEmptyLines = false,\n maxNesting = state.md.options.maxNesting;\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line);\n\n if (line >= endLine) {\n break;\n }\n\n if (state.sCount[line] < state.blkIndent) {\n break;\n }\n\n if (state.level >= maxNesting) {\n state.line = endLine;\n break;\n }\n\n for (i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false);\n\n if (ok) {\n break;\n }\n }\n\n state.tight = !hasEmptyLines;\n\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true;\n }\n\n line = state.line;\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true;\n line++;\n state.line = line;\n }\n }\n };\n\n ParserBlock$1.prototype.parse = function (src, md, env, outTokens) {\n var state;\n\n if (!src) {\n return;\n }\n\n state = new this.State(src, md, env, outTokens);\n this.tokenize(state, state.line, state.lineMax);\n };\n\n ParserBlock$1.prototype.State = state_block;\n var parser_block = ParserBlock$1;\n\n function isTerminatorChar(ch) {\n switch (ch) {\n case 10:\n case 33:\n case 35:\n case 36:\n case 37:\n case 38:\n case 42:\n case 43:\n case 45:\n case 58:\n case 60:\n case 61:\n case 62:\n case 64:\n case 91:\n case 92:\n case 93:\n case 94:\n case 95:\n case 96:\n case 123:\n case 125:\n case 126:\n return true;\n\n default:\n return false;\n }\n }\n\n __name(isTerminatorChar, \"isTerminatorChar\");\n\n var text = /* @__PURE__ */__name(function text2(state, silent) {\n var pos = state.pos;\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n if (pos === state.pos) {\n return false;\n }\n\n if (!silent) {\n state.pending += state.src.slice(state.pos, pos);\n }\n\n state.pos = pos;\n return true;\n }, \"text\");\n\n var isSpace$3 = utils$1.isSpace;\n\n var newline = /* @__PURE__ */__name(function newline2(state, silent) {\n var pmax,\n max,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 10) {\n return false;\n }\n\n pmax = state.pending.length - 1;\n max = state.posMax;\n\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 32) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 32) {\n state.pending = state.pending.replace(/ +$/, \"\");\n state.push(\"hardbreak\", \"br\", 0);\n } else {\n state.pending = state.pending.slice(0, -1);\n state.push(\"softbreak\", \"br\", 0);\n }\n } else {\n state.push(\"softbreak\", \"br\", 0);\n }\n }\n\n pos++;\n\n while (pos < max && isSpace$3(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n state.pos = pos;\n return true;\n }, \"newline\");\n\n var isSpace$2 = utils$1.isSpace;\n var ESCAPED = [];\n\n for (var i = 0; i < 256; i++) {\n ESCAPED.push(0);\n }\n\n \"\\\\!\\\"#$%&'()*+,./:;<=>?@[]^_`{|}~-\".split(\"\").forEach(function (ch) {\n ESCAPED[ch.charCodeAt(0)] = 1;\n });\n\n var _escape = /* @__PURE__ */__name(function escape(state, silent) {\n var ch,\n pos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 92) {\n return false;\n }\n\n pos++;\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch < 256 && ESCAPED[ch] !== 0) {\n if (!silent) {\n state.pending += state.src[pos];\n }\n\n state.pos += 2;\n return true;\n }\n\n if (ch === 10) {\n if (!silent) {\n state.push(\"hardbreak\", \"br\", 0);\n }\n\n pos++;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace$2(ch)) {\n break;\n }\n\n pos++;\n }\n\n state.pos = pos;\n return true;\n }\n }\n\n if (!silent) {\n state.pending += \"\\\\\";\n }\n\n state.pos++;\n return true;\n }, \"escape\");\n\n var backticks = /* @__PURE__ */__name(function backtick(state, silent) {\n var start,\n max,\n marker2,\n token2,\n matchStart,\n matchEnd,\n openerLength,\n closerLength,\n pos = state.pos,\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 96) {\n return false;\n }\n\n start = pos;\n pos++;\n max = state.posMax;\n\n while (pos < max && state.src.charCodeAt(pos) === 96) {\n pos++;\n }\n\n marker2 = state.src.slice(start, pos);\n openerLength = marker2.length;\n\n if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n if (!silent) state.pending += marker2;\n state.pos += openerLength;\n return true;\n }\n\n matchStart = matchEnd = pos;\n\n while ((matchStart = state.src.indexOf(\"`\", matchEnd)) !== -1) {\n matchEnd = matchStart + 1;\n\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 96) {\n matchEnd++;\n }\n\n closerLength = matchEnd - matchStart;\n\n if (closerLength === openerLength) {\n if (!silent) {\n token2 = state.push(\"code_inline\", \"code\", 0);\n token2.markup = marker2;\n token2.content = state.src.slice(pos, matchStart).replace(/\\n/g, \" \").replace(/^ (.+) $/, \"$1\");\n }\n\n state.pos = matchEnd;\n return true;\n }\n\n state.backticks[closerLength] = matchStart;\n }\n\n state.backticksScanned = true;\n if (!silent) state.pending += marker2;\n state.pos += openerLength;\n return true;\n }, \"backtick\");\n\n var strikethrough = {};\n strikethrough.tokenize = /* @__PURE__ */__name(function strikethrough2(state, silent) {\n var i,\n scanned,\n token2,\n len,\n ch,\n start = state.pos,\n marker2 = state.src.charCodeAt(start);\n\n if (silent) {\n return false;\n }\n\n if (marker2 !== 126) {\n return false;\n }\n\n scanned = state.scanDelims(state.pos, true);\n len = scanned.length;\n ch = String.fromCharCode(marker2);\n\n if (len < 2) {\n return false;\n }\n\n if (len % 2) {\n token2 = state.push(\"text\", \"\", 0);\n token2.content = ch;\n len--;\n }\n\n for (i = 0; i < len; i += 2) {\n token2 = state.push(\"text\", \"\", 0);\n token2.content = ch + ch;\n state.delimiters.push({\n marker: marker2,\n length: 0,\n jump: i / 2,\n token: state.tokens.length - 1,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n return true;\n }, \"strikethrough\");\n\n function postProcess$1(state, delimiters) {\n var i,\n j,\n startDelim,\n endDelim,\n token2,\n loneMarkers = [],\n max = delimiters.length;\n\n for (i = 0; i < max; i++) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 126) {\n continue;\n }\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n token2 = state.tokens[startDelim.token];\n token2.type = \"s_open\";\n token2.tag = \"s\";\n token2.nesting = 1;\n token2.markup = \"~~\";\n token2.content = \"\";\n token2 = state.tokens[endDelim.token];\n token2.type = \"s_close\";\n token2.tag = \"s\";\n token2.nesting = -1;\n token2.markup = \"~~\";\n token2.content = \"\";\n\n if (state.tokens[endDelim.token - 1].type === \"text\" && state.tokens[endDelim.token - 1].content === \"~\") {\n loneMarkers.push(endDelim.token - 1);\n }\n }\n\n while (loneMarkers.length) {\n i = loneMarkers.pop();\n j = i + 1;\n\n while (j < state.tokens.length && state.tokens[j].type === \"s_close\") {\n j++;\n }\n\n j--;\n\n if (i !== j) {\n token2 = state.tokens[j];\n state.tokens[j] = state.tokens[i];\n state.tokens[i] = token2;\n }\n }\n }\n\n __name(postProcess$1, \"postProcess$1\");\n\n strikethrough.postProcess = /* @__PURE__ */__name(function strikethrough3(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n postProcess$1(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess$1(state, tokens_meta[curr].delimiters);\n }\n }\n }, \"strikethrough\");\n var emphasis = {};\n emphasis.tokenize = /* @__PURE__ */__name(function emphasis2(state, silent) {\n var i,\n scanned,\n token2,\n start = state.pos,\n marker2 = state.src.charCodeAt(start);\n\n if (silent) {\n return false;\n }\n\n if (marker2 !== 95 && marker2 !== 42) {\n return false;\n }\n\n scanned = state.scanDelims(state.pos, marker2 === 42);\n\n for (i = 0; i < scanned.length; i++) {\n token2 = state.push(\"text\", \"\", 0);\n token2.content = String.fromCharCode(marker2);\n state.delimiters.push({\n marker: marker2,\n length: scanned.length,\n jump: i,\n token: state.tokens.length - 1,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n return true;\n }, \"emphasis\");\n\n function postProcess(state, delimiters) {\n var i,\n startDelim,\n endDelim,\n token2,\n ch,\n isStrong,\n max = delimiters.length;\n\n for (i = max - 1; i >= 0; i--) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 95 && startDelim.marker !== 42) {\n continue;\n }\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n isStrong = i > 0 && delimiters[i - 1].end === startDelim.end + 1 && delimiters[i - 1].token === startDelim.token - 1 && delimiters[startDelim.end + 1].token === endDelim.token + 1 && delimiters[i - 1].marker === startDelim.marker;\n ch = String.fromCharCode(startDelim.marker);\n token2 = state.tokens[startDelim.token];\n token2.type = isStrong ? \"strong_open\" : \"em_open\";\n token2.tag = isStrong ? \"strong\" : \"em\";\n token2.nesting = 1;\n token2.markup = isStrong ? ch + ch : ch;\n token2.content = \"\";\n token2 = state.tokens[endDelim.token];\n token2.type = isStrong ? \"strong_close\" : \"em_close\";\n token2.tag = isStrong ? \"strong\" : \"em\";\n token2.nesting = -1;\n token2.markup = isStrong ? ch + ch : ch;\n token2.content = \"\";\n\n if (isStrong) {\n state.tokens[delimiters[i - 1].token].content = \"\";\n state.tokens[delimiters[startDelim.end + 1].token].content = \"\";\n i--;\n }\n }\n }\n\n __name(postProcess, \"postProcess\");\n\n emphasis.postProcess = /* @__PURE__ */__name(function emphasis3(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n postProcess(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters);\n }\n }\n }, \"emphasis\");\n var normalizeReference$1 = utils$1.normalizeReference;\n var isSpace$1 = utils$1.isSpace;\n\n var link = /* @__PURE__ */__name(function link2(state, silent) {\n var attrs,\n code3,\n label,\n labelEnd,\n labelStart,\n pos,\n res,\n ref,\n token2,\n href = \"\",\n title = \"\",\n oldPos = state.pos,\n max = state.posMax,\n start = state.pos,\n parseReference = true;\n\n if (state.src.charCodeAt(state.pos) !== 91) {\n return false;\n }\n\n labelStart = state.pos + 1;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);\n\n if (labelEnd < 0) {\n return false;\n }\n\n pos = labelEnd + 1;\n\n if (pos < max && state.src.charCodeAt(pos) === 40) {\n parseReference = false;\n pos++;\n\n for (; pos < max; pos++) {\n code3 = state.src.charCodeAt(pos);\n\n if (!isSpace$1(code3) && code3 !== 10) {\n break;\n }\n }\n\n if (pos >= max) {\n return false;\n }\n\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = \"\";\n }\n\n start = pos;\n\n for (; pos < max; pos++) {\n code3 = state.src.charCodeAt(pos);\n\n if (!isSpace$1(code3) && code3 !== 10) {\n break;\n }\n }\n\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n\n for (; pos < max; pos++) {\n code3 = state.src.charCodeAt(pos);\n\n if (!isSpace$1(code3) && code3 !== 10) {\n break;\n }\n }\n }\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 41) {\n parseReference = true;\n }\n\n pos++;\n }\n\n if (parseReference) {\n if (typeof state.env.references === \"undefined\") {\n return false;\n }\n\n if (pos < max && state.src.charCodeAt(pos) === 91) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n }\n\n if (!label) {\n label = state.src.slice(labelStart, labelEnd);\n }\n\n ref = state.env.references[normalizeReference$1(label)];\n\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n\n href = ref.href;\n title = ref.title;\n }\n\n if (!silent) {\n state.pos = labelStart;\n state.posMax = labelEnd;\n token2 = state.push(\"link_open\", \"a\", 1);\n token2.attrs = attrs = [[\"href\", href]];\n\n if (title) {\n attrs.push([\"title\", title]);\n }\n\n state.md.inline.tokenize(state);\n token2 = state.push(\"link_close\", \"a\", -1);\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n }, \"link\");\n\n var normalizeReference = utils$1.normalizeReference;\n var isSpace = utils$1.isSpace;\n\n var image = /* @__PURE__ */__name(function image2(state, silent) {\n var attrs,\n code3,\n content,\n label,\n labelEnd,\n labelStart,\n pos,\n ref,\n res,\n title,\n token2,\n tokens,\n start,\n href = \"\",\n oldPos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(state.pos) !== 33) {\n return false;\n }\n\n if (state.src.charCodeAt(state.pos + 1) !== 91) {\n return false;\n }\n\n labelStart = state.pos + 2;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false);\n\n if (labelEnd < 0) {\n return false;\n }\n\n pos = labelEnd + 1;\n\n if (pos < max && state.src.charCodeAt(pos) === 40) {\n pos++;\n\n for (; pos < max; pos++) {\n code3 = state.src.charCodeAt(pos);\n\n if (!isSpace(code3) && code3 !== 10) {\n break;\n }\n }\n\n if (pos >= max) {\n return false;\n }\n\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = \"\";\n }\n }\n\n start = pos;\n\n for (; pos < max; pos++) {\n code3 = state.src.charCodeAt(pos);\n\n if (!isSpace(code3) && code3 !== 10) {\n break;\n }\n }\n\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n\n for (; pos < max; pos++) {\n code3 = state.src.charCodeAt(pos);\n\n if (!isSpace(code3) && code3 !== 10) {\n break;\n }\n }\n } else {\n title = \"\";\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 41) {\n state.pos = oldPos;\n return false;\n }\n\n pos++;\n } else {\n if (typeof state.env.references === \"undefined\") {\n return false;\n }\n\n if (pos < max && state.src.charCodeAt(pos) === 91) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n }\n\n if (!label) {\n label = state.src.slice(labelStart, labelEnd);\n }\n\n ref = state.env.references[normalizeReference(label)];\n\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n\n href = ref.href;\n title = ref.title;\n }\n\n if (!silent) {\n content = state.src.slice(labelStart, labelEnd);\n state.md.inline.parse(content, state.md, state.env, tokens = []);\n token2 = state.push(\"image\", \"img\", 0);\n token2.attrs = attrs = [[\"src\", href], [\"alt\", \"\"]];\n token2.children = tokens;\n token2.content = content;\n\n if (title) {\n attrs.push([\"title\", title]);\n }\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n }, \"image\");\n\n var EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/;\n var AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)$/;\n\n var autolink = /* @__PURE__ */__name(function autolink2(state, silent) {\n var url,\n fullUrl,\n token2,\n ch,\n start,\n max,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 60) {\n return false;\n }\n\n start = state.pos;\n max = state.posMax;\n\n for (;;) {\n if (++pos >= max) return false;\n ch = state.src.charCodeAt(pos);\n if (ch === 60) return false;\n if (ch === 62) break;\n }\n\n url = state.src.slice(start + 1, pos);\n\n if (AUTOLINK_RE.test(url)) {\n fullUrl = state.md.normalizeLink(url);\n\n if (!state.md.validateLink(fullUrl)) {\n return false;\n }\n\n if (!silent) {\n token2 = state.push(\"link_open\", \"a\", 1);\n token2.attrs = [[\"href\", fullUrl]];\n token2.markup = \"autolink\";\n token2.info = \"auto\";\n token2 = state.push(\"text\", \"\", 0);\n token2.content = state.md.normalizeLinkText(url);\n token2 = state.push(\"link_close\", \"a\", -1);\n token2.markup = \"autolink\";\n token2.info = \"auto\";\n }\n\n state.pos += url.length + 2;\n return true;\n }\n\n if (EMAIL_RE.test(url)) {\n fullUrl = state.md.normalizeLink(\"mailto:\" + url);\n\n if (!state.md.validateLink(fullUrl)) {\n return false;\n }\n\n if (!silent) {\n token2 = state.push(\"link_open\", \"a\", 1);\n token2.attrs = [[\"href\", fullUrl]];\n token2.markup = \"autolink\";\n token2.info = \"auto\";\n token2 = state.push(\"text\", \"\", 0);\n token2.content = state.md.normalizeLinkText(url);\n token2 = state.push(\"link_close\", \"a\", -1);\n token2.markup = \"autolink\";\n token2.info = \"auto\";\n }\n\n state.pos += url.length + 2;\n return true;\n }\n\n return false;\n }, \"autolink\");\n\n var HTML_TAG_RE = html_re.HTML_TAG_RE;\n\n function isLetter(ch) {\n var lc = ch | 32;\n return lc >= 97 && lc <= 122;\n }\n\n __name(isLetter, \"isLetter\");\n\n var html_inline = /* @__PURE__ */__name(function html_inline2(state, silent) {\n var ch,\n match2,\n max,\n token2,\n pos = state.pos;\n\n if (!state.md.options.html) {\n return false;\n }\n\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 60 || pos + 2 >= max) {\n return false;\n }\n\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch !== 33 && ch !== 63 && ch !== 47 && !isLetter(ch)) {\n return false;\n }\n\n match2 = state.src.slice(pos).match(HTML_TAG_RE);\n\n if (!match2) {\n return false;\n }\n\n if (!silent) {\n token2 = state.push(\"html_inline\", \"\", 0);\n token2.content = state.src.slice(pos, pos + match2[0].length);\n }\n\n state.pos += match2[0].length;\n return true;\n }, \"html_inline\");\n\n var entities = entities$1;\n var has = utils$1.has;\n var isValidEntityCode = utils$1.isValidEntityCode;\n var fromCodePoint = utils$1.fromCodePoint;\n var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;\n var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\n var entity = /* @__PURE__ */__name(function entity2(state, silent) {\n var ch,\n code3,\n match2,\n pos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 38) {\n return false;\n }\n\n if (pos + 1 < max) {\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 35) {\n match2 = state.src.slice(pos).match(DIGITAL_RE);\n\n if (match2) {\n if (!silent) {\n code3 = match2[1][0].toLowerCase() === \"x\" ? parseInt(match2[1].slice(1), 16) : parseInt(match2[1], 10);\n state.pending += isValidEntityCode(code3) ? fromCodePoint(code3) : fromCodePoint(65533);\n }\n\n state.pos += match2[0].length;\n return true;\n }\n } else {\n match2 = state.src.slice(pos).match(NAMED_RE);\n\n if (match2) {\n if (has(entities, match2[1])) {\n if (!silent) {\n state.pending += entities[match2[1]];\n }\n\n state.pos += match2[0].length;\n return true;\n }\n }\n }\n }\n\n if (!silent) {\n state.pending += \"&\";\n }\n\n state.pos++;\n return true;\n }, \"entity\");\n\n function processDelimiters(state, delimiters) {\n var closerIdx,\n openerIdx,\n closer,\n opener,\n minOpenerIdx,\n newMinOpenerIdx,\n isOddMatch,\n lastJump,\n openersBottom = {},\n max = delimiters.length;\n\n for (closerIdx = 0; closerIdx < max; closerIdx++) {\n closer = delimiters[closerIdx];\n closer.length = closer.length || 0;\n if (!closer.close) continue;\n\n if (!openersBottom.hasOwnProperty(closer.marker)) {\n openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1];\n }\n\n minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3];\n openerIdx = closerIdx - closer.jump - 1;\n if (openerIdx < -1) openerIdx = -1;\n newMinOpenerIdx = openerIdx;\n\n for (; openerIdx > minOpenerIdx; openerIdx -= opener.jump + 1) {\n opener = delimiters[openerIdx];\n if (opener.marker !== closer.marker) continue;\n\n if (opener.open && opener.end < 0) {\n isOddMatch = false;\n\n if (opener.close || closer.open) {\n if ((opener.length + closer.length) % 3 === 0) {\n if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n isOddMatch = true;\n }\n }\n }\n\n if (!isOddMatch) {\n lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? delimiters[openerIdx - 1].jump + 1 : 0;\n closer.jump = closerIdx - openerIdx + lastJump;\n closer.open = false;\n opener.end = closerIdx;\n opener.jump = lastJump;\n opener.close = false;\n newMinOpenerIdx = -1;\n break;\n }\n }\n }\n\n if (newMinOpenerIdx !== -1) {\n openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx;\n }\n }\n }\n\n __name(processDelimiters, \"processDelimiters\");\n\n var balance_pairs = /* @__PURE__ */__name(function link_pairs(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n processDelimiters(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n processDelimiters(state, tokens_meta[curr].delimiters);\n }\n }\n }, \"link_pairs\");\n\n var text_collapse = /* @__PURE__ */__name(function text_collapse2(state) {\n var curr,\n last,\n level = 0,\n tokens = state.tokens,\n max = state.tokens.length;\n\n for (curr = last = 0; curr < max; curr++) {\n if (tokens[curr].nesting < 0) level--;\n tokens[curr].level = level;\n if (tokens[curr].nesting > 0) level++;\n\n if (tokens[curr].type === \"text\" && curr + 1 < max && tokens[curr + 1].type === \"text\") {\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n } else {\n if (curr !== last) {\n tokens[last] = tokens[curr];\n }\n\n last++;\n }\n }\n\n if (curr !== last) {\n tokens.length = last;\n }\n }, \"text_collapse\");\n\n var Token = token;\n var isWhiteSpace = utils$1.isWhiteSpace;\n var isPunctChar = utils$1.isPunctChar;\n var isMdAsciiPunct = utils$1.isMdAsciiPunct;\n\n function StateInline(src, md, env, outTokens) {\n this.src = src;\n this.env = env;\n this.md = md;\n this.tokens = outTokens;\n this.tokens_meta = Array(outTokens.length);\n this.pos = 0;\n this.posMax = this.src.length;\n this.level = 0;\n this.pending = \"\";\n this.pendingLevel = 0;\n this.cache = {};\n this.delimiters = [];\n this._prev_delimiters = [];\n this.backticks = {};\n this.backticksScanned = false;\n }\n\n __name(StateInline, \"StateInline\");\n\n StateInline.prototype.pushPending = function () {\n var token2 = new Token(\"text\", \"\", 0);\n token2.content = this.pending;\n token2.level = this.pendingLevel;\n this.tokens.push(token2);\n this.pending = \"\";\n return token2;\n };\n\n StateInline.prototype.push = function (type2, tag, nesting) {\n if (this.pending) {\n this.pushPending();\n }\n\n var token2 = new Token(type2, tag, nesting);\n var token_meta = null;\n\n if (nesting < 0) {\n this.level--;\n this.delimiters = this._prev_delimiters.pop();\n }\n\n token2.level = this.level;\n\n if (nesting > 0) {\n this.level++;\n\n this._prev_delimiters.push(this.delimiters);\n\n this.delimiters = [];\n token_meta = {\n delimiters: this.delimiters\n };\n }\n\n this.pendingLevel = this.level;\n this.tokens.push(token2);\n this.tokens_meta.push(token_meta);\n return token2;\n };\n\n StateInline.prototype.scanDelims = function (start, canSplitWord) {\n var pos = start,\n lastChar,\n nextChar,\n count,\n can_open,\n can_close,\n isLastWhiteSpace,\n isLastPunctChar,\n isNextWhiteSpace,\n isNextPunctChar,\n left_flanking = true,\n right_flanking = true,\n max = this.posMax,\n marker2 = this.src.charCodeAt(start);\n lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 32;\n\n while (pos < max && this.src.charCodeAt(pos) === marker2) {\n pos++;\n }\n\n count = pos - start;\n nextChar = pos < max ? this.src.charCodeAt(pos) : 32;\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n left_flanking = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n left_flanking = false;\n }\n }\n\n if (isLastWhiteSpace) {\n right_flanking = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n right_flanking = false;\n }\n }\n\n if (!canSplitWord) {\n can_open = left_flanking && (!right_flanking || isLastPunctChar);\n can_close = right_flanking && (!left_flanking || isNextPunctChar);\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n\n return {\n can_open,\n can_close,\n length: count\n };\n };\n\n StateInline.prototype.Token = Token;\n var state_inline = StateInline;\n var Ruler = ruler;\n var _rules = [[\"text\", text], [\"newline\", newline], [\"escape\", _escape], [\"backticks\", backticks], [\"strikethrough\", strikethrough.tokenize], [\"emphasis\", emphasis.tokenize], [\"link\", link], [\"image\", image], [\"autolink\", autolink], [\"html_inline\", html_inline], [\"entity\", entity]];\n var _rules2 = [[\"balance_pairs\", balance_pairs], [\"strikethrough\", strikethrough.postProcess], [\"emphasis\", emphasis.postProcess], [\"text_collapse\", text_collapse]];\n\n function ParserInline$1() {\n var i;\n this.ruler = new Ruler();\n\n for (i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n\n this.ruler2 = new Ruler();\n\n for (i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1]);\n }\n }\n\n __name(ParserInline$1, \"ParserInline$1\");\n\n ParserInline$1.prototype.skipToken = function (state) {\n var ok,\n i,\n pos = state.pos,\n rules = this.ruler.getRules(\"\"),\n len = rules.length,\n maxNesting = state.md.options.maxNesting,\n cache = state.cache;\n\n if (typeof cache[pos] !== \"undefined\") {\n state.pos = cache[pos];\n return;\n }\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n state.level++;\n ok = rules[i](state, true);\n state.level--;\n\n if (ok) {\n break;\n }\n }\n } else {\n state.pos = state.posMax;\n }\n\n if (!ok) {\n state.pos++;\n }\n\n cache[pos] = state.pos;\n };\n\n ParserInline$1.prototype.tokenize = function (state) {\n var ok,\n i,\n rules = this.ruler.getRules(\"\"),\n len = rules.length,\n end = state.posMax,\n maxNesting = state.md.options.maxNesting;\n\n while (state.pos < end) {\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n ok = rules[i](state, false);\n\n if (ok) {\n break;\n }\n }\n }\n\n if (ok) {\n if (state.pos >= end) {\n break;\n }\n\n continue;\n }\n\n state.pending += state.src[state.pos++];\n }\n\n if (state.pending) {\n state.pushPending();\n }\n };\n\n ParserInline$1.prototype.parse = function (str, md, env, outTokens) {\n var i, rules, len;\n var state = new this.State(str, md, env, outTokens);\n this.tokenize(state);\n rules = this.ruler2.getRules(\"\");\n len = rules.length;\n\n for (i = 0; i < len; i++) {\n rules[i](state);\n }\n };\n\n ParserInline$1.prototype.State = state_inline;\n var parser_inline = ParserInline$1;\n\n var re = /* @__PURE__ */__name(function (opts) {\n var re2 = {};\n re2.src_Any = regex$3.source;\n re2.src_Cc = regex$2.source;\n re2.src_Z = regex.source;\n re2.src_P = regex$4.source;\n re2.src_ZPCc = [re2.src_Z, re2.src_P, re2.src_Cc].join(\"|\");\n re2.src_ZCc = [re2.src_Z, re2.src_Cc].join(\"|\");\n var text_separators = \"[><\\uFF5C]\";\n re2.src_pseudo_letter = \"(?:(?!\" + text_separators + \"|\" + re2.src_ZPCc + \")\" + re2.src_Any + \")\";\n re2.src_ip4 = \"(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\";\n re2.src_auth = \"(?:(?:(?!\" + re2.src_ZCc + \"|[@/\\\\[\\\\]()]).)+@)?\";\n re2.src_port = \"(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?\";\n re2.src_host_terminator = \"(?=$|\" + text_separators + \"|\" + re2.src_ZPCc + \")(?!-|_|:\\\\d|\\\\.-|\\\\.(?!$|\" + re2.src_ZPCc + \"))\";\n re2.src_path = \"(?:[/?#](?:(?!\" + re2.src_ZCc + \"|\" + text_separators + `|[()[\\\\]{}.,\"'?!\\\\-;]).|\\\\[(?:(?!` + re2.src_ZCc + \"|\\\\]).)*\\\\]|\\\\((?:(?!\" + re2.src_ZCc + \"|[)]).)*\\\\)|\\\\{(?:(?!\" + re2.src_ZCc + '|[}]).)*\\\\}|\\\\\"(?:(?!' + re2.src_ZCc + `|[\"]).)+\\\\\"|\\\\'(?:(?!` + re2.src_ZCc + \"|[']).)+\\\\'|\\\\'(?=\" + re2.src_pseudo_letter + \"|[-]).|\\\\.{2,}[a-zA-Z0-9%/&]|\\\\.(?!\" + re2.src_ZCc + \"|[.]).|\" + (opts && opts[\"---\"] ? \"\\\\-(?!--(?:[^-]|$))(?:-*)|\" : \"\\\\-+|\") + \",(?!\" + re2.src_ZCc + \").|;(?!\" + re2.src_ZCc + \").|\\\\!+(?!\" + re2.src_ZCc + \"|[!]).|\\\\?(?!\" + re2.src_ZCc + \"|[?]).)+|\\\\/)?\";\n re2.src_email_name = '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*';\n re2.src_xn = \"xn--[a-z0-9\\\\-]{1,59}\";\n re2.src_domain_root = \"(?:\" + re2.src_xn + \"|\" + re2.src_pseudo_letter + \"{1,63})\";\n re2.src_domain = \"(?:\" + re2.src_xn + \"|(?:\" + re2.src_pseudo_letter + \")|(?:\" + re2.src_pseudo_letter + \"(?:-|\" + re2.src_pseudo_letter + \"){0,61}\" + re2.src_pseudo_letter + \"))\";\n re2.src_host = \"(?:(?:(?:(?:\" + re2.src_domain + \")\\\\.)*\" + re2.src_domain + \"))\";\n re2.tpl_host_fuzzy = \"(?:\" + re2.src_ip4 + \"|(?:(?:(?:\" + re2.src_domain + \")\\\\.)+(?:%TLDS%)))\";\n re2.tpl_host_no_ip_fuzzy = \"(?:(?:(?:\" + re2.src_domain + \")\\\\.)+(?:%TLDS%))\";\n re2.src_host_strict = re2.src_host + re2.src_host_terminator;\n re2.tpl_host_fuzzy_strict = re2.tpl_host_fuzzy + re2.src_host_terminator;\n re2.src_host_port_strict = re2.src_host + re2.src_port + re2.src_host_terminator;\n re2.tpl_host_port_fuzzy_strict = re2.tpl_host_fuzzy + re2.src_port + re2.src_host_terminator;\n re2.tpl_host_port_no_ip_fuzzy_strict = re2.tpl_host_no_ip_fuzzy + re2.src_port + re2.src_host_terminator;\n re2.tpl_host_fuzzy_test = \"localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:\" + re2.src_ZPCc + \"|>|$))\";\n re2.tpl_email_fuzzy = \"(^|\" + text_separators + '|\"|\\\\(|' + re2.src_ZCc + \")(\" + re2.src_email_name + \"@\" + re2.tpl_host_fuzzy_strict + \")\";\n re2.tpl_link_fuzzy = \"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uFF5C]|\" + re2.src_ZPCc + \"))((?![$+<=>^`|\\uFF5C])\" + re2.tpl_host_port_fuzzy_strict + re2.src_path + \")\";\n re2.tpl_link_no_ip_fuzzy = \"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uFF5C]|\" + re2.src_ZPCc + \"))((?![$+<=>^`|\\uFF5C])\" + re2.tpl_host_port_no_ip_fuzzy_strict + re2.src_path + \")\";\n return re2;\n }, \"re\");\n\n function assign(obj) {\n var sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n return obj;\n }\n\n __name(assign, \"assign\");\n\n function _class(obj) {\n return Object.prototype.toString.call(obj);\n }\n\n __name(_class, \"_class\");\n\n function isString(obj) {\n return _class(obj) === \"[object String]\";\n }\n\n __name(isString, \"isString\");\n\n function isObject$2(obj) {\n return _class(obj) === \"[object Object]\";\n }\n\n __name(isObject$2, \"isObject$2\");\n\n function isRegExp(obj) {\n return _class(obj) === \"[object RegExp]\";\n }\n\n __name(isRegExp, \"isRegExp\");\n\n function isFunction(obj) {\n return _class(obj) === \"[object Function]\";\n }\n\n __name(isFunction, \"isFunction\");\n\n function escapeRE(str) {\n return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, \"\\\\$&\");\n }\n\n __name(escapeRE, \"escapeRE\");\n\n var defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n };\n\n function isOptionsObj(obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n return acc || defaultOptions.hasOwnProperty(k);\n }, false);\n }\n\n __name(isOptionsObj, \"isOptionsObj\");\n\n var defaultSchemas = {\n \"http:\": {\n validate: function (text3, pos, self2) {\n var tail = text3.slice(pos);\n\n if (!self2.re.http) {\n self2.re.http = new RegExp(\"^\\\\/\\\\/\" + self2.re.src_auth + self2.re.src_host_port_strict + self2.re.src_path, \"i\");\n }\n\n if (self2.re.http.test(tail)) {\n return tail.match(self2.re.http)[0].length;\n }\n\n return 0;\n }\n },\n \"https:\": \"http:\",\n \"ftp:\": \"http:\",\n \"//\": {\n validate: function (text3, pos, self2) {\n var tail = text3.slice(pos);\n\n if (!self2.re.no_http) {\n self2.re.no_http = new RegExp(\"^\" + self2.re.src_auth + \"(?:localhost|(?:(?:\" + self2.re.src_domain + \")\\\\.)+\" + self2.re.src_domain_root + \")\" + self2.re.src_port + self2.re.src_host_terminator + self2.re.src_path, \"i\");\n }\n\n if (self2.re.no_http.test(tail)) {\n if (pos >= 3 && text3[pos - 3] === \":\") {\n return 0;\n }\n\n if (pos >= 3 && text3[pos - 3] === \"/\") {\n return 0;\n }\n\n return tail.match(self2.re.no_http)[0].length;\n }\n\n return 0;\n }\n },\n \"mailto:\": {\n validate: function (text3, pos, self2) {\n var tail = text3.slice(pos);\n\n if (!self2.re.mailto) {\n self2.re.mailto = new RegExp(\"^\" + self2.re.src_email_name + \"@\" + self2.re.src_host_strict, \"i\");\n }\n\n if (self2.re.mailto.test(tail)) {\n return tail.match(self2.re.mailto)[0].length;\n }\n\n return 0;\n }\n }\n };\n var tlds_2ch_src_re = \"a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]\";\n var tlds_default = \"biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\\u0440\\u0444\".split(\"|\");\n\n function resetScanCache(self2) {\n self2.__index__ = -1;\n self2.__text_cache__ = \"\";\n }\n\n __name(resetScanCache, \"resetScanCache\");\n\n function createValidator(re2) {\n return function (text3, pos) {\n var tail = text3.slice(pos);\n\n if (re2.test(tail)) {\n return tail.match(re2)[0].length;\n }\n\n return 0;\n };\n }\n\n __name(createValidator, \"createValidator\");\n\n function createNormalizer() {\n return function (match2, self2) {\n self2.normalize(match2);\n };\n }\n\n __name(createNormalizer, \"createNormalizer\");\n\n function compile(self2) {\n var re$1 = self2.re = re(self2.__opts__);\n\n var tlds2 = self2.__tlds__.slice();\n\n self2.onCompile();\n\n if (!self2.__tlds_replaced__) {\n tlds2.push(tlds_2ch_src_re);\n }\n\n tlds2.push(re$1.src_xn);\n re$1.src_tlds = tlds2.join(\"|\");\n\n function untpl(tpl) {\n return tpl.replace(\"%TLDS%\", re$1.src_tlds);\n }\n\n __name(untpl, \"untpl\");\n\n re$1.email_fuzzy = RegExp(untpl(re$1.tpl_email_fuzzy), \"i\");\n re$1.link_fuzzy = RegExp(untpl(re$1.tpl_link_fuzzy), \"i\");\n re$1.link_no_ip_fuzzy = RegExp(untpl(re$1.tpl_link_no_ip_fuzzy), \"i\");\n re$1.host_fuzzy_test = RegExp(untpl(re$1.tpl_host_fuzzy_test), \"i\");\n var aliases = [];\n self2.__compiled__ = {};\n\n function schemaError(name2, val) {\n throw new Error('(LinkifyIt) Invalid schema \"' + name2 + '\": ' + val);\n }\n\n __name(schemaError, \"schemaError\");\n\n Object.keys(self2.__schemas__).forEach(function (name2) {\n var val = self2.__schemas__[name2];\n\n if (val === null) {\n return;\n }\n\n var compiled = {\n validate: null,\n link: null\n };\n self2.__compiled__[name2] = compiled;\n\n if (isObject$2(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate);\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate;\n } else {\n schemaError(name2, val);\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize;\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer();\n } else {\n schemaError(name2, val);\n }\n\n return;\n }\n\n if (isString(val)) {\n aliases.push(name2);\n return;\n }\n\n schemaError(name2, val);\n });\n aliases.forEach(function (alias) {\n if (!self2.__compiled__[self2.__schemas__[alias]]) {\n return;\n }\n\n self2.__compiled__[alias].validate = self2.__compiled__[self2.__schemas__[alias]].validate;\n self2.__compiled__[alias].normalize = self2.__compiled__[self2.__schemas__[alias]].normalize;\n });\n self2.__compiled__[\"\"] = {\n validate: null,\n normalize: createNormalizer()\n };\n var slist = Object.keys(self2.__compiled__).filter(function (name2) {\n return name2.length > 0 && self2.__compiled__[name2];\n }).map(escapeRE).join(\"|\");\n self2.re.schema_test = RegExp(\"(^|(?!_)(?:[><\\uFF5C]|\" + re$1.src_ZPCc + \"))(\" + slist + \")\", \"i\");\n self2.re.schema_search = RegExp(\"(^|(?!_)(?:[><\\uFF5C]|\" + re$1.src_ZPCc + \"))(\" + slist + \")\", \"ig\");\n self2.re.pretest = RegExp(\"(\" + self2.re.schema_test.source + \")|(\" + self2.re.host_fuzzy_test.source + \")|@\", \"i\");\n resetScanCache(self2);\n }\n\n __name(compile, \"compile\");\n\n function Match(self2, shift) {\n var start = self2.__index__,\n end = self2.__last_index__,\n text3 = self2.__text_cache__.slice(start, end);\n\n this.schema = self2.__schema__.toLowerCase();\n this.index = start + shift;\n this.lastIndex = end + shift;\n this.raw = text3;\n this.text = text3;\n this.url = text3;\n }\n\n __name(Match, \"Match\");\n\n function createMatch(self2, shift) {\n var match2 = new Match(self2, shift);\n\n self2.__compiled__[match2.schema].normalize(match2, self2);\n\n return match2;\n }\n\n __name(createMatch, \"createMatch\");\n\n function LinkifyIt$1(schemas, options) {\n if (!(this instanceof LinkifyIt$1)) {\n return new LinkifyIt$1(schemas, options);\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas;\n schemas = {};\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options);\n this.__index__ = -1;\n this.__last_index__ = -1;\n this.__schema__ = \"\";\n this.__text_cache__ = \"\";\n this.__schemas__ = assign({}, defaultSchemas, schemas);\n this.__compiled__ = {};\n this.__tlds__ = tlds_default;\n this.__tlds_replaced__ = false;\n this.re = {};\n compile(this);\n }\n\n __name(LinkifyIt$1, \"LinkifyIt$1\");\n\n LinkifyIt$1.prototype.add = /* @__PURE__ */__name(function add(schema, definition) {\n this.__schemas__[schema] = definition;\n compile(this);\n return this;\n }, \"add\");\n LinkifyIt$1.prototype.set = /* @__PURE__ */__name(function set(options) {\n this.__opts__ = assign(this.__opts__, options);\n return this;\n }, \"set\");\n LinkifyIt$1.prototype.test = /* @__PURE__ */__name(function test(text3) {\n this.__text_cache__ = text3;\n this.__index__ = -1;\n\n if (!text3.length) {\n return false;\n }\n\n var m2, ml, me, len, shift, next, re2, tld_pos, at_pos;\n\n if (this.re.schema_test.test(text3)) {\n re2 = this.re.schema_search;\n re2.lastIndex = 0;\n\n while ((m2 = re2.exec(text3)) !== null) {\n len = this.testSchemaAt(text3, m2[2], re2.lastIndex);\n\n if (len) {\n this.__schema__ = m2[2];\n this.__index__ = m2.index + m2[1].length;\n this.__last_index__ = m2.index + m2[0].length + len;\n break;\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__[\"http:\"]) {\n tld_pos = text3.search(this.re.host_fuzzy_test);\n\n if (tld_pos >= 0) {\n if (this.__index__ < 0 || tld_pos < this.__index__) {\n if ((ml = text3.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n shift = ml.index + ml[1].length;\n\n if (this.__index__ < 0 || shift < this.__index__) {\n this.__schema__ = \"\";\n this.__index__ = shift;\n this.__last_index__ = ml.index + ml[0].length;\n }\n }\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__[\"mailto:\"]) {\n at_pos = text3.indexOf(\"@\");\n\n if (at_pos >= 0) {\n if ((me = text3.match(this.re.email_fuzzy)) !== null) {\n shift = me.index + me[1].length;\n next = me.index + me[0].length;\n\n if (this.__index__ < 0 || shift < this.__index__ || shift === this.__index__ && next > this.__last_index__) {\n this.__schema__ = \"mailto:\";\n this.__index__ = shift;\n this.__last_index__ = next;\n }\n }\n }\n }\n\n return this.__index__ >= 0;\n }, \"test\");\n LinkifyIt$1.prototype.pretest = /* @__PURE__ */__name(function pretest(text3) {\n return this.re.pretest.test(text3);\n }, \"pretest\");\n LinkifyIt$1.prototype.testSchemaAt = /* @__PURE__ */__name(function testSchemaAt(text3, schema, pos) {\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0;\n }\n\n return this.__compiled__[schema.toLowerCase()].validate(text3, pos, this);\n }, \"testSchemaAt\");\n LinkifyIt$1.prototype.match = /* @__PURE__ */__name(function match(text3) {\n var shift = 0,\n result = [];\n\n if (this.__index__ >= 0 && this.__text_cache__ === text3) {\n result.push(createMatch(this, shift));\n shift = this.__last_index__;\n }\n\n var tail = shift ? text3.slice(shift) : text3;\n\n while (this.test(tail)) {\n result.push(createMatch(this, shift));\n tail = tail.slice(this.__last_index__);\n shift += this.__last_index__;\n }\n\n if (result.length) {\n return result;\n }\n\n return null;\n }, \"match\");\n LinkifyIt$1.prototype.tlds = /* @__PURE__ */__name(function tlds(list3, keepOld) {\n list3 = Array.isArray(list3) ? list3 : [list3];\n\n if (!keepOld) {\n this.__tlds__ = list3.slice();\n this.__tlds_replaced__ = true;\n compile(this);\n return this;\n }\n\n this.__tlds__ = this.__tlds__.concat(list3).sort().filter(function (el2, idx, arr) {\n return el2 !== arr[idx - 1];\n }).reverse();\n compile(this);\n return this;\n }, \"tlds\");\n LinkifyIt$1.prototype.normalize = /* @__PURE__ */__name(function normalize3(match2) {\n if (!match2.schema) {\n match2.url = \"http://\" + match2.url;\n }\n\n if (match2.schema === \"mailto:\" && !/^mailto:/i.test(match2.url)) {\n match2.url = \"mailto:\" + match2.url;\n }\n }, \"normalize\");\n LinkifyIt$1.prototype.onCompile = /* @__PURE__ */__name(function onCompile() {}, \"onCompile\");\n var linkifyIt = LinkifyIt$1;\n const maxInt = 2147483647;\n const base = 36;\n const tMin = 1;\n const tMax = 26;\n const skew = 38;\n const damp = 700;\n const initialBias = 72;\n const initialN = 128;\n const delimiter = \"-\";\n const regexPunycode = /^xn--/;\n const regexNonASCII = /[^\\0-\\x7E]/;\n const regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g;\n const errors = {\n \"overflow\": \"Overflow: input needs wider integers to process\",\n \"not-basic\": \"Illegal input >= 0x80 (not a basic code point)\",\n \"invalid-input\": \"Invalid input\"\n };\n const baseMinusTMin = base - tMin;\n const floor = Math.floor;\n const stringFromCharCode = String.fromCharCode;\n\n function error(type2) {\n throw new RangeError(errors[type2]);\n }\n\n __name(error, \"error\");\n\n function map(array, fn) {\n const result = [];\n let length = array.length;\n\n while (length--) {\n result[length] = fn(array[length]);\n }\n\n return result;\n }\n\n __name(map, \"map\");\n\n function mapDomain(string, fn) {\n const parts = string.split(\"@\");\n let result = \"\";\n\n if (parts.length > 1) {\n result = parts[0] + \"@\";\n string = parts[1];\n }\n\n string = string.replace(regexSeparators, \".\");\n const labels = string.split(\".\");\n const encoded = map(labels, fn).join(\".\");\n return result + encoded;\n }\n\n __name(mapDomain, \"mapDomain\");\n\n function ucs2decode(string) {\n const output = [];\n let counter = 0;\n const length = string.length;\n\n while (counter < length) {\n const value = string.charCodeAt(counter++);\n\n if (value >= 55296 && value <= 56319 && counter < length) {\n const extra = string.charCodeAt(counter++);\n\n if ((extra & 64512) == 56320) {\n output.push(((value & 1023) << 10) + (extra & 1023) + 65536);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n }\n\n __name(ucs2decode, \"ucs2decode\");\n\n const ucs2encode = /* @__PURE__ */__name(array => String.fromCodePoint(...array), \"ucs2encode\");\n\n const basicToDigit = /* @__PURE__ */__name(function (codePoint) {\n if (codePoint - 48 < 10) {\n return codePoint - 22;\n }\n\n if (codePoint - 65 < 26) {\n return codePoint - 65;\n }\n\n if (codePoint - 97 < 26) {\n return codePoint - 97;\n }\n\n return base;\n }, \"basicToDigit\");\n\n const digitToBasic = /* @__PURE__ */__name(function (digit, flag) {\n return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n }, \"digitToBasic\");\n\n const adapt = /* @__PURE__ */__name(function (delta2, numPoints, firstTime) {\n let k = 0;\n delta2 = firstTime ? floor(delta2 / damp) : delta2 >> 1;\n delta2 += floor(delta2 / numPoints);\n\n for (; delta2 > baseMinusTMin * tMax >> 1; k += base) {\n delta2 = floor(delta2 / baseMinusTMin);\n }\n\n return floor(k + (baseMinusTMin + 1) * delta2 / (delta2 + skew));\n }, \"adapt\");\n\n const decode = /* @__PURE__ */__name(function (input) {\n const output = [];\n const inputLength = input.length;\n let i = 0;\n let n2 = initialN;\n let bias = initialBias;\n let basic = input.lastIndexOf(delimiter);\n\n if (basic < 0) {\n basic = 0;\n }\n\n for (let j = 0; j < basic; ++j) {\n if (input.charCodeAt(j) >= 128) {\n error(\"not-basic\");\n }\n\n output.push(input.charCodeAt(j));\n }\n\n for (let index = basic > 0 ? basic + 1 : 0; index < inputLength;) {\n let oldi = i;\n\n for (let w = 1, k = base;; k += base) {\n if (index >= inputLength) {\n error(\"invalid-input\");\n }\n\n const digit = basicToDigit(input.charCodeAt(index++));\n\n if (digit >= base || digit > floor((maxInt - i) / w)) {\n error(\"overflow\");\n }\n\n i += digit * w;\n const t2 = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (digit < t2) {\n break;\n }\n\n const baseMinusT = base - t2;\n\n if (w > floor(maxInt / baseMinusT)) {\n error(\"overflow\");\n }\n\n w *= baseMinusT;\n }\n\n const out = output.length + 1;\n bias = adapt(i - oldi, out, oldi == 0);\n\n if (floor(i / out) > maxInt - n2) {\n error(\"overflow\");\n }\n\n n2 += floor(i / out);\n i %= out;\n output.splice(i++, 0, n2);\n }\n\n return String.fromCodePoint(...output);\n }, \"decode\");\n\n const encode = /* @__PURE__ */__name(function (input) {\n const output = [];\n input = ucs2decode(input);\n let inputLength = input.length;\n let n2 = initialN;\n let delta2 = 0;\n let bias = initialBias;\n\n for (const currentValue of input) {\n if (currentValue < 128) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n let basicLength = output.length;\n let handledCPCount = basicLength;\n\n if (basicLength) {\n output.push(delimiter);\n }\n\n while (handledCPCount < inputLength) {\n let m2 = maxInt;\n\n for (const currentValue of input) {\n if (currentValue >= n2 && currentValue < m2) {\n m2 = currentValue;\n }\n }\n\n const handledCPCountPlusOne = handledCPCount + 1;\n\n if (m2 - n2 > floor((maxInt - delta2) / handledCPCountPlusOne)) {\n error(\"overflow\");\n }\n\n delta2 += (m2 - n2) * handledCPCountPlusOne;\n n2 = m2;\n\n for (const currentValue of input) {\n if (currentValue < n2 && ++delta2 > maxInt) {\n error(\"overflow\");\n }\n\n if (currentValue == n2) {\n let q2 = delta2;\n\n for (let k = base;; k += base) {\n const t2 = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (q2 < t2) {\n break;\n }\n\n const qMinusT = q2 - t2;\n const baseMinusT = base - t2;\n output.push(stringFromCharCode(digitToBasic(t2 + qMinusT % baseMinusT, 0)));\n q2 = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q2, 0)));\n bias = adapt(delta2, handledCPCountPlusOne, handledCPCount == basicLength);\n delta2 = 0;\n ++handledCPCount;\n }\n }\n\n ++delta2;\n ++n2;\n }\n\n return output.join(\"\");\n }, \"encode\");\n\n const toUnicode = /* @__PURE__ */__name(function (input) {\n return mapDomain(input, function (string) {\n return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n });\n }, \"toUnicode\");\n\n const toASCII = /* @__PURE__ */__name(function (input) {\n return mapDomain(input, function (string) {\n return regexNonASCII.test(string) ? \"xn--\" + encode(string) : string;\n });\n }, \"toASCII\");\n\n const punycode$1 = {\n \"version\": \"2.1.0\",\n \"ucs2\": {\n \"decode\": ucs2decode,\n \"encode\": ucs2encode\n },\n \"decode\": decode,\n \"encode\": encode,\n \"toASCII\": toASCII,\n \"toUnicode\": toUnicode\n };\n var punycode_es6 = /* @__PURE__ */Object.freeze({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n ucs2decode,\n ucs2encode,\n decode,\n encode,\n toASCII,\n toUnicode,\n \"default\": punycode$1\n });\n var require$$8 = /* @__PURE__ */getAugmentedNamespace(punycode_es6);\n var _default = {\n options: {\n html: false,\n xhtmlOut: false,\n breaks: false,\n langPrefix: \"language-\",\n linkify: false,\n typographer: false,\n quotes: \"\\u201C\\u201D\\u2018\\u2019\",\n highlight: null,\n maxNesting: 100\n },\n components: {\n core: {},\n block: {},\n inline: {}\n }\n };\n var zero = {\n options: {\n html: false,\n xhtmlOut: false,\n breaks: false,\n langPrefix: \"language-\",\n linkify: false,\n typographer: false,\n quotes: \"\\u201C\\u201D\\u2018\\u2019\",\n highlight: null,\n maxNesting: 20\n },\n components: {\n core: {\n rules: [\"normalize\", \"block\", \"inline\"]\n },\n block: {\n rules: [\"paragraph\"]\n },\n inline: {\n rules: [\"text\"],\n rules2: [\"balance_pairs\", \"text_collapse\"]\n }\n }\n };\n var commonmark = {\n options: {\n html: true,\n xhtmlOut: true,\n breaks: false,\n langPrefix: \"language-\",\n linkify: false,\n typographer: false,\n quotes: \"\\u201C\\u201D\\u2018\\u2019\",\n highlight: null,\n maxNesting: 20\n },\n components: {\n core: {\n rules: [\"normalize\", \"block\", \"inline\"]\n },\n block: {\n rules: [\"blockquote\", \"code\", \"fence\", \"heading\", \"hr\", \"html_block\", \"lheading\", \"list\", \"reference\", \"paragraph\"]\n },\n inline: {\n rules: [\"autolink\", \"backticks\", \"emphasis\", \"entity\", \"escape\", \"html_inline\", \"image\", \"link\", \"newline\", \"text\"],\n rules2: [\"balance_pairs\", \"emphasis\", \"text_collapse\"]\n }\n }\n };\n var utils = utils$1;\n var helpers = helpers$1;\n var Renderer = renderer;\n var ParserCore = parser_core;\n var ParserBlock = parser_block;\n var ParserInline = parser_inline;\n var LinkifyIt = linkifyIt;\n var mdurl = mdurl$1;\n var punycode = require$$8;\n var config = {\n default: _default,\n zero,\n commonmark\n };\n var BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\n var GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/;\n\n function validateLink(url) {\n var str = url.trim().toLowerCase();\n return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) ? true : false : true;\n }\n\n __name(validateLink, \"validateLink\");\n\n var RECODE_HOSTNAME_FOR = [\"http:\", \"https:\", \"mailto:\"];\n\n function normalizeLink(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toASCII(parsed.hostname);\n } catch (er) {}\n }\n }\n\n return mdurl.encode(mdurl.format(parsed));\n }\n\n __name(normalizeLink, \"normalizeLink\");\n\n function normalizeLinkText(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toUnicode(parsed.hostname);\n } catch (er) {}\n }\n }\n\n return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + \"%\");\n }\n\n __name(normalizeLinkText, \"normalizeLinkText\");\n\n function MarkdownIt(presetName, options) {\n if (!(this instanceof MarkdownIt)) {\n return new MarkdownIt(presetName, options);\n }\n\n if (!options) {\n if (!utils.isString(presetName)) {\n options = presetName || {};\n presetName = \"default\";\n }\n }\n\n this.inline = new ParserInline();\n this.block = new ParserBlock();\n this.core = new ParserCore();\n this.renderer = new Renderer();\n this.linkify = new LinkifyIt();\n this.validateLink = validateLink;\n this.normalizeLink = normalizeLink;\n this.normalizeLinkText = normalizeLinkText;\n this.utils = utils;\n this.helpers = utils.assign({}, helpers);\n this.options = {};\n this.configure(presetName);\n\n if (options) {\n this.set(options);\n }\n }\n\n __name(MarkdownIt, \"MarkdownIt\");\n\n MarkdownIt.prototype.set = function (options) {\n utils.assign(this.options, options);\n return this;\n };\n\n MarkdownIt.prototype.configure = function (presets) {\n var self2 = this,\n presetName;\n\n if (utils.isString(presets)) {\n presetName = presets;\n presets = config[presetName];\n\n if (!presets) {\n throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name');\n }\n }\n\n if (!presets) {\n throw new Error(\"Wrong `markdown-it` preset, can't be empty\");\n }\n\n if (presets.options) {\n self2.set(presets.options);\n }\n\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name2) {\n if (presets.components[name2].rules) {\n self2[name2].ruler.enableOnly(presets.components[name2].rules);\n }\n\n if (presets.components[name2].rules2) {\n self2[name2].ruler2.enableOnly(presets.components[name2].rules2);\n }\n });\n }\n\n return this;\n };\n\n MarkdownIt.prototype.enable = function (list3, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list3)) {\n list3 = [list3];\n }\n\n [\"core\", \"block\", \"inline\"].forEach(function (chain) {\n result = result.concat(this[chain].ruler.enable(list3, true));\n }, this);\n result = result.concat(this.inline.ruler2.enable(list3, true));\n var missed = list3.filter(function (name2) {\n return result.indexOf(name2) < 0;\n });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error(\"MarkdownIt. Failed to enable unknown rule(s): \" + missed);\n }\n\n return this;\n };\n\n MarkdownIt.prototype.disable = function (list3, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list3)) {\n list3 = [list3];\n }\n\n [\"core\", \"block\", \"inline\"].forEach(function (chain) {\n result = result.concat(this[chain].ruler.disable(list3, true));\n }, this);\n result = result.concat(this.inline.ruler2.disable(list3, true));\n var missed = list3.filter(function (name2) {\n return result.indexOf(name2) < 0;\n });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error(\"MarkdownIt. Failed to disable unknown rule(s): \" + missed);\n }\n\n return this;\n };\n\n MarkdownIt.prototype.use = function (plugin) {\n var args = [this].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n };\n\n MarkdownIt.prototype.parse = function (src, env) {\n if (typeof src !== \"string\") {\n throw new Error(\"Input data should be a String\");\n }\n\n var state = new this.core.State(src, this, env);\n this.core.process(state);\n return state.tokens;\n };\n\n MarkdownIt.prototype.render = function (src, env) {\n env = env || {};\n return this.renderer.render(this.parse(src, env), this.options, env);\n };\n\n MarkdownIt.prototype.parseInline = function (src, env) {\n var state = new this.core.State(src, this, env);\n state.inlineMode = true;\n this.core.process(state);\n return state.tokens;\n };\n\n MarkdownIt.prototype.renderInline = function (src, env) {\n env = env || {};\n return this.renderer.render(this.parseInline(src, env), this.options, env);\n };\n\n var lib = MarkdownIt;\n var markdownIt = lib;\n const markdown = new markdownIt();\n var __defProp$j = Object.defineProperty;\n\n var __name$j = /* @__PURE__ */__name((target2, value) => __defProp$j(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$j\");\n\n const DEFAULT_EDITOR_THEME = \"graphiql\";\n const DEFAULT_KEY_MAP = \"sublime\";\n let isMacOs = false;\n\n if (typeof window === \"object\") {\n isMacOs = window.navigator.platform.toLowerCase().indexOf(\"mac\") === 0;\n }\n\n const commonKeys = {\n [isMacOs ? \"Cmd-F\" : \"Ctrl-F\"]: \"findPersistent\",\n \"Cmd-G\": \"findPersistent\",\n \"Ctrl-G\": \"findPersistent\",\n \"Ctrl-Left\": \"goSubwordLeft\",\n \"Ctrl-Right\": \"goSubwordRight\",\n \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\"\n };\n\n async function importCodeMirror(addons, options) {\n const CodeMirror = await Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\", 7)).then(function (n2) {\n return n2.c;\n }).then(c => typeof c === \"function\" ? c : c.default);\n await Promise.all((options == null ? void 0 : options.useCommonAddons) === false ? addons : [Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./show-hint.es.js */ \"../../graphiql-react/dist/show-hint.es.js\", 7)).then(function (n2) {\n return n2.s;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./matchbrackets.es.js */ \"../../graphiql-react/dist/matchbrackets.es.js\", 7)).then(function (n2) {\n return n2.m;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./closebrackets.es.js */ \"../../graphiql-react/dist/closebrackets.es.js\", 7)).then(function (n2) {\n return n2.c;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./brace-fold.es.js */ \"../../graphiql-react/dist/brace-fold.es.js\", 7)).then(function (n2) {\n return n2.b;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./foldgutter.es.js */ \"../../graphiql-react/dist/foldgutter.es.js\", 7)).then(function (n2) {\n return n2.f;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./lint.es3.js */ \"../../graphiql-react/dist/lint.es3.js\", 7)).then(function (n2) {\n return n2.l;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./searchcursor.es.js */ \"../../graphiql-react/dist/searchcursor.es.js\", 7)).then(function (n2) {\n return n2.s;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./jump-to-line.es.js */ \"../../graphiql-react/dist/jump-to-line.es.js\", 7)).then(function (n2) {\n return n2.j;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./dialog.es.js */ \"../../graphiql-react/dist/dialog.es.js\", 7)).then(function (n2) {\n return n2.d;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./sublime.es.js */ \"../../graphiql-react/dist/sublime.es.js\", 7)).then(function (n2) {\n return n2.s;\n }), ...addons]);\n return CodeMirror;\n }\n\n __name(importCodeMirror, \"importCodeMirror\");\n\n __name$j(importCodeMirror, \"importCodeMirror\");\n\n var __defProp$i = Object.defineProperty;\n\n var __name$i = /* @__PURE__ */__name((target2, value) => __defProp$i(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$i\");\n\n function onHasCompletion(_cm, data, schema, explorer) {\n importCodeMirror([], {\n useCommonAddons: false\n }).then(CodeMirror => {\n let information;\n let deprecation;\n CodeMirror.on(data, \"select\", (ctx, el2) => {\n if (!information) {\n const hintsUl = el2.parentNode;\n information = document.createElement(\"div\");\n information.className = \"CodeMirror-hint-information\";\n information.addEventListener(\"click\", onClickHintInformation);\n hintsUl.appendChild(information);\n deprecation = document.createElement(\"div\");\n deprecation.className = \"CodeMirror-hint-deprecation\";\n hintsUl.appendChild(deprecation);\n let onRemoveFn;\n hintsUl.addEventListener(\"DOMNodeRemoved\", onRemoveFn = /* @__PURE__ */__name$i(event => {\n if (event.target === hintsUl) {\n hintsUl.removeEventListener(\"DOMNodeRemoved\", onRemoveFn);\n\n if (information) {\n information.removeEventListener(\"click\", onClickHintInformation);\n }\n\n information = null;\n deprecation = null;\n onRemoveFn = null;\n }\n }, \"onRemoveFn\"));\n }\n\n const description = ctx.description ? markdown.render(ctx.description) : \"Self descriptive.\";\n const type2 = ctx.type ? '<span class=\"infoType\">' + renderType(ctx.type) + \"</span>\" : \"\";\n information.innerHTML = '<div class=\"content\">' + (description.slice(0, 3) === \"<p>\" ? \"<p>\" + type2 + description.slice(3) : type2 + description) + \"</div>\";\n\n if (ctx && deprecation && ctx.deprecationReason) {\n const reason = ctx.deprecationReason ? markdown.render(ctx.deprecationReason) : \"\";\n deprecation.innerHTML = '<span class=\"deprecation-label\">Deprecated</span>' + reason;\n deprecation.style.display = \"block\";\n } else if (deprecation) {\n deprecation.style.display = \"none\";\n }\n });\n });\n\n function onClickHintInformation(event) {\n if (!schema || !explorer || !(event.currentTarget instanceof HTMLElement) || event.currentTarget.className !== \"typeName\") {\n return;\n }\n\n const typeName = event.currentTarget.innerHTML;\n const type2 = schema.getType(typeName);\n\n if (type2) {\n explorer.show();\n explorer.push({\n name: type2.name,\n def: type2\n });\n }\n }\n\n __name(onClickHintInformation, \"onClickHintInformation\");\n\n __name$i(onClickHintInformation, \"onClickHintInformation\");\n }\n\n __name(onHasCompletion, \"onHasCompletion\");\n\n __name$i(onHasCompletion, \"onHasCompletion\");\n\n function renderType(type2) {\n if ((0, _graphql.isNonNullType)(type2)) {\n return `${renderType(type2.ofType)}!`;\n }\n\n if ((0, _graphql.isListType)(type2)) {\n return `[${renderType(type2.ofType)}]`;\n }\n\n return `<a class=\"typeName\">${escapeHtml_1(type2.name)}</a>`;\n }\n\n __name(renderType, \"renderType\");\n\n __name$i(renderType, \"renderType\");\n\n var jsxRuntime = {\n exports: {}\n };\n var reactJsxRuntime_production_min = {};\n /*\n object-assign\n (c) Sindre Sorhus\n @license MIT\n */\n\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\n function toObject(val) {\n if (val === null || val === void 0) {\n throw new TypeError(\"Object.assign cannot be called with null or undefined\");\n }\n\n return Object(val);\n }\n\n __name(toObject, \"toObject\");\n\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n\n var test1 = new String(\"abc\");\n test1[5] = \"de\";\n\n if (Object.getOwnPropertyNames(test1)[0] === \"5\") {\n return false;\n }\n\n var test2 = {};\n\n for (var i = 0; i < 10; i++) {\n test2[\"_\" + String.fromCharCode(i)] = i;\n }\n\n var order2 = Object.getOwnPropertyNames(test2).map(function (n2) {\n return test2[n2];\n });\n\n if (order2.join(\"\") !== \"0123456789\") {\n return false;\n }\n\n var test3 = {};\n \"abcdefghijklmnopqrst\".split(\"\").forEach(function (letter) {\n test3[letter] = letter;\n });\n\n if (Object.keys(Object.assign({}, test3)).join(\"\") !== \"abcdefghijklmnopqrst\") {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n }\n\n __name(shouldUseNative, \"shouldUseNative\");\n\n shouldUseNative() ? Object.assign : function (target2, source) {\n var from;\n var to = toObject(target2);\n var symbols;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n\n return to;\n };\n /** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n var f = _react.default,\n g = 60103;\n reactJsxRuntime_production_min.Fragment = 60107;\n\n if (typeof Symbol === \"function\" && Symbol.for) {\n var h = Symbol.for;\n g = h(\"react.element\");\n reactJsxRuntime_production_min.Fragment = h(\"react.fragment\");\n }\n\n var m = f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,\n n = Object.prototype.hasOwnProperty,\n p$1 = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n };\n\n function q(c, a, k) {\n var b,\n d = {},\n e = null,\n l = null;\n k !== void 0 && (e = \"\" + k);\n a.key !== void 0 && (e = \"\" + a.key);\n a.ref !== void 0 && (l = a.ref);\n\n for (b in a) n.call(a, b) && !p$1.hasOwnProperty(b) && (d[b] = a[b]);\n\n if (c && c.defaultProps) for (b in a = c.defaultProps, a) d[b] === void 0 && (d[b] = a[b]);\n return {\n $$typeof: g,\n type: c,\n key: e,\n ref: l,\n props: d,\n _owner: m.current\n };\n }\n\n __name(q, \"q\");\n\n reactJsxRuntime_production_min.jsx = q;\n reactJsxRuntime_production_min.jsxs = q;\n {\n jsxRuntime.exports = reactJsxRuntime_production_min;\n }\n const jsx = jsxRuntime.exports.jsx;\n const jsxs = jsxRuntime.exports.jsxs;\n var __defProp$h = Object.defineProperty;\n\n var __name$h = /* @__PURE__ */__name((target2, value) => __defProp$h(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$h\");\n\n function ImagePreview(props) {\n var _a;\n\n const [dimensions, setDimensions] = (0, _react.useState)({\n width: null,\n height: null\n });\n const [mime, setMime] = (0, _react.useState)(null);\n const ref = (0, _react.useRef)(null);\n const src = (_a = tokenToURL(props.token)) == null ? void 0 : _a.href;\n (0, _react.useEffect)(() => {\n if (!ref.current) {\n return;\n }\n\n if (!src) {\n setDimensions({\n width: null,\n height: null\n });\n setMime(null);\n return;\n }\n\n fetch(src, {\n method: \"HEAD\"\n }).then(response => {\n setMime(response.headers.get(\"Content-Type\"));\n }).catch(() => {\n setMime(null);\n });\n }, [src]);\n const dims = dimensions.width !== null && dimensions.height !== null ? /* @__PURE__ */jsxs(\"div\", {\n children: [dimensions.width, \"x\", dimensions.height, mime !== null ? \" \" + mime : null]\n }) : null;\n return /* @__PURE__ */jsxs(\"div\", {\n children: [/* @__PURE__ */jsx(\"img\", {\n onLoad: () => {\n var _a2, _b, _c, _d;\n\n setDimensions({\n width: (_b = (_a2 = ref.current) == null ? void 0 : _a2.naturalWidth) != null ? _b : null,\n height: (_d = (_c = ref.current) == null ? void 0 : _c.naturalHeight) != null ? _d : null\n });\n },\n ref,\n src\n }), dims]\n });\n }\n\n __name(ImagePreview, \"ImagePreview\");\n\n __name$h(ImagePreview, \"ImagePreview\");\n\n ImagePreview.shouldRender = /* @__PURE__ */__name$h( /* @__PURE__ */__name(function shouldRender(token2) {\n const url = tokenToURL(token2);\n return url ? isImageURL(url) : false;\n }, \"shouldRender\"), \"shouldRender\");\n\n function tokenToURL(token2) {\n if (token2.type !== \"string\") {\n return;\n }\n\n const value = token2.string.slice(1).slice(0, -1).trim();\n\n try {\n const location = window.location;\n return new URL(value, location.protocol + \"//\" + location.host);\n } catch (err) {\n return;\n }\n }\n\n __name(tokenToURL, \"tokenToURL\");\n\n __name$h(tokenToURL, \"tokenToURL\");\n\n function isImageURL(url) {\n return /(bmp|gif|jpeg|jpg|png|svg)$/.test(url.pathname);\n }\n\n __name(isImageURL, \"isImageURL\");\n\n __name$h(isImageURL, \"isImageURL\");\n\n function isPromise(value) {\n return typeof value === \"object\" && typeof value.then === \"function\";\n }\n\n __name(isPromise, \"isPromise\");\n\n function observableToPromise(observable) {\n return new Promise((resolve, reject) => {\n const subscription = observable.subscribe({\n next: v => {\n resolve(v);\n subscription.unsubscribe();\n },\n error: reject,\n complete: () => {\n reject(new Error(\"no value resolved\"));\n }\n });\n });\n }\n\n __name(observableToPromise, \"observableToPromise\");\n\n function isObservable(value) {\n return typeof value === \"object\" && \"subscribe\" in value && typeof value.subscribe === \"function\";\n }\n\n __name(isObservable, \"isObservable\");\n\n function isAsyncIterable(input) {\n return typeof input === \"object\" && input !== null && (input[Symbol.toStringTag] === \"AsyncGenerator\" || Symbol.asyncIterator in input);\n }\n\n __name(isAsyncIterable, \"isAsyncIterable\");\n\n function asyncIterableToPromise(input) {\n return new Promise((resolve, reject) => {\n var _a;\n\n const iteratorReturn = (_a = (\"return\" in input ? input : input[Symbol.asyncIterator]()).return) === null || _a === void 0 ? void 0 : _a.bind(input);\n const iteratorNext = (\"next\" in input ? input : input[Symbol.asyncIterator]()).next.bind(input);\n iteratorNext().then(result => {\n resolve(result.value);\n iteratorReturn === null || iteratorReturn === void 0 ? void 0 : iteratorReturn();\n }).catch(err => {\n reject(err);\n });\n });\n }\n\n __name(asyncIterableToPromise, \"asyncIterableToPromise\");\n\n function fetcherReturnToPromise(fetcherResult) {\n return Promise.resolve(fetcherResult).then(result => {\n if (isAsyncIterable(result)) {\n return asyncIterableToPromise(result);\n } else if (isObservable(result)) {\n return observableToPromise(result);\n }\n\n return result;\n });\n }\n\n __name(fetcherReturnToPromise, \"fetcherReturnToPromise\");\n\n globalThis && globalThis.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n __name(adopt, \"adopt\");\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n __name(fulfilled, \"fulfilled\");\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n __name(rejected, \"rejected\");\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n __name(step, \"step\");\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\n\n var __await = globalThis && globalThis.__await || function (v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n };\n\n globalThis && globalThis.__asyncValues || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m2 = o[Symbol.asyncIterator],\n i;\n return m2 ? m2.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n2) {\n i[n2] = o[n2] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n2](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n __name(verb, \"verb\");\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v2) {\n resolve({\n value: v2,\n done: d\n });\n }, reject);\n }\n\n __name(settle, \"settle\");\n };\n\n globalThis && globalThis.__asyncGenerator || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g2 = generator.apply(thisArg, _arguments || []),\n i,\n q2 = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n2) {\n if (g2[n2]) i[n2] = function (v) {\n return new Promise(function (a, b) {\n q2.push([n2, v, a, b]) > 1 || resume(n2, v);\n });\n };\n }\n\n __name(verb, \"verb\");\n\n function resume(n2, v) {\n try {\n step(g2[n2](v));\n } catch (e) {\n settle(q2[0][3], e);\n }\n }\n\n __name(resume, \"resume\");\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q2[0][2], r);\n }\n\n __name(step, \"step\");\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n __name(fulfill, \"fulfill\");\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n __name(reject, \"reject\");\n\n function settle(f2, v) {\n if (f2(v), q2.shift(), q2.length) resume(q2[0][0], q2[0][1]);\n }\n\n __name(settle, \"settle\");\n };\n\n function stringify(obj) {\n return JSON.stringify(obj, null, 2);\n }\n\n __name(stringify, \"stringify\");\n\n function formatSingleError(error2) {\n return Object.assign(Object.assign({}, error2), {\n message: error2.message,\n stack: error2.stack\n });\n }\n\n __name(formatSingleError, \"formatSingleError\");\n\n function handleSingleError(error2) {\n if (error2 instanceof Error) {\n return formatSingleError(error2);\n }\n\n return error2;\n }\n\n __name(handleSingleError, \"handleSingleError\");\n\n function formatError(error2) {\n if (Array.isArray(error2)) {\n return stringify({\n errors: error2.map(e => handleSingleError(e))\n });\n }\n\n return stringify({\n errors: [handleSingleError(error2)]\n });\n }\n\n __name(formatError, \"formatError\");\n\n function formatResult(result) {\n return stringify(result);\n }\n\n __name(formatResult, \"formatResult\");\n\n function fillLeafs(schema, docString, getDefaultFieldNames) {\n const insertions = [];\n\n if (!schema || !docString) {\n return {\n insertions,\n result: docString\n };\n }\n\n let ast2;\n\n try {\n ast2 = (0, _graphql.parse)(docString);\n } catch (error2) {\n return {\n insertions,\n result: docString\n };\n }\n\n const fieldNameFn = getDefaultFieldNames || defaultGetDefaultFieldNames;\n const typeInfo = new _graphql.TypeInfo(schema);\n (0, _graphql.visit)(ast2, {\n leave(node) {\n typeInfo.leave(node);\n },\n\n enter(node) {\n typeInfo.enter(node);\n\n if (node.kind === \"Field\" && !node.selectionSet) {\n const fieldType = typeInfo.getType();\n const selectionSet = buildSelectionSet(isFieldType(fieldType), fieldNameFn);\n\n if (selectionSet && node.loc) {\n const indent = getIndentation(docString, node.loc.start);\n insertions.push({\n index: node.loc.end,\n string: \" \" + (0, _graphql.print)(selectionSet).replace(/\\n/g, \"\\n\" + indent)\n });\n }\n }\n }\n\n });\n return {\n insertions,\n result: withInsertions(docString, insertions)\n };\n }\n\n __name(fillLeafs, \"fillLeafs\");\n\n function defaultGetDefaultFieldNames(type2) {\n if (!(\"getFields\" in type2)) {\n return [];\n }\n\n const fields = type2.getFields();\n\n if (fields.id) {\n return [\"id\"];\n }\n\n if (fields.edges) {\n return [\"edges\"];\n }\n\n if (fields.node) {\n return [\"node\"];\n }\n\n const leafFieldNames = [];\n Object.keys(fields).forEach(fieldName => {\n if ((0, _graphql.isLeafType)(fields[fieldName].type)) {\n leafFieldNames.push(fieldName);\n }\n });\n return leafFieldNames;\n }\n\n __name(defaultGetDefaultFieldNames, \"defaultGetDefaultFieldNames\");\n\n function buildSelectionSet(type2, getDefaultFieldNames) {\n const namedType = (0, _graphql.getNamedType)(type2);\n\n if (!type2 || (0, _graphql.isLeafType)(type2)) {\n return;\n }\n\n const fieldNames = getDefaultFieldNames(namedType);\n\n if (!Array.isArray(fieldNames) || fieldNames.length === 0 || !(\"getFields\" in namedType)) {\n return;\n }\n\n return {\n kind: _graphql.Kind.SELECTION_SET,\n selections: fieldNames.map(fieldName => {\n const fieldDef = namedType.getFields()[fieldName];\n const fieldType = fieldDef ? fieldDef.type : null;\n return {\n kind: _graphql.Kind.FIELD,\n name: {\n kind: _graphql.Kind.NAME,\n value: fieldName\n },\n selectionSet: buildSelectionSet(fieldType, getDefaultFieldNames)\n };\n })\n };\n }\n\n __name(buildSelectionSet, \"buildSelectionSet\");\n\n function withInsertions(initial, insertions) {\n if (insertions.length === 0) {\n return initial;\n }\n\n let edited = \"\";\n let prevIndex = 0;\n insertions.forEach(_ref => {\n let {\n index,\n string\n } = _ref;\n edited += initial.slice(prevIndex, index) + string;\n prevIndex = index;\n });\n edited += initial.slice(prevIndex);\n return edited;\n }\n\n __name(withInsertions, \"withInsertions\");\n\n function getIndentation(str, index) {\n let indentStart = index;\n let indentEnd = index;\n\n while (indentStart) {\n const c = str.charCodeAt(indentStart - 1);\n\n if (c === 10 || c === 13 || c === 8232 || c === 8233) {\n break;\n }\n\n indentStart--;\n\n if (c !== 9 && c !== 11 && c !== 12 && c !== 32 && c !== 160) {\n indentEnd = indentStart;\n }\n }\n\n return str.substring(indentStart, indentEnd);\n }\n\n __name(getIndentation, \"getIndentation\");\n\n function isFieldType(fieldType) {\n if (fieldType) {\n return fieldType;\n }\n }\n\n __name(isFieldType, \"isFieldType\");\n\n function uniqueBy(array, iteratee) {\n var _a;\n\n const FilteredMap = /* @__PURE__ */new Map();\n const result = [];\n\n for (const item of array) {\n if (item.kind === \"Field\") {\n const uniqueValue = iteratee(item);\n const existing = FilteredMap.get(uniqueValue);\n\n if ((_a = item.directives) === null || _a === void 0 ? void 0 : _a.length) {\n const itemClone = Object.assign({}, item);\n result.push(itemClone);\n } else if ((existing === null || existing === void 0 ? void 0 : existing.selectionSet) && item.selectionSet) {\n existing.selectionSet.selections = [...existing.selectionSet.selections, ...item.selectionSet.selections];\n } else if (!existing) {\n const itemClone = Object.assign({}, item);\n FilteredMap.set(uniqueValue, itemClone);\n result.push(itemClone);\n }\n } else {\n result.push(item);\n }\n }\n\n return result;\n }\n\n __name(uniqueBy, \"uniqueBy\");\n\n function inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType) {\n var _a;\n\n const selectionSetTypeName = selectionSetType ? (0, _graphql.getNamedType)(selectionSetType).name : null;\n const outputSelections = [];\n const seenSpreads = [];\n\n for (let selection of selections) {\n if (selection.kind === \"FragmentSpread\") {\n const fragmentName = selection.name.value;\n\n if (!selection.directives || selection.directives.length === 0) {\n if (seenSpreads.indexOf(fragmentName) >= 0) {\n continue;\n } else {\n seenSpreads.push(fragmentName);\n }\n }\n\n const fragmentDefinition = fragmentDefinitions[selection.name.value];\n\n if (fragmentDefinition) {\n const {\n typeCondition,\n directives,\n selectionSet\n } = fragmentDefinition;\n selection = {\n kind: _graphql.Kind.INLINE_FRAGMENT,\n typeCondition,\n directives,\n selectionSet\n };\n }\n }\n\n if (selection.kind === _graphql.Kind.INLINE_FRAGMENT && (!selection.directives || ((_a = selection.directives) === null || _a === void 0 ? void 0 : _a.length) === 0)) {\n const fragmentTypeName = selection.typeCondition ? selection.typeCondition.name.value : null;\n\n if (!fragmentTypeName || fragmentTypeName === selectionSetTypeName) {\n outputSelections.push(...inlineRelevantFragmentSpreads(fragmentDefinitions, selection.selectionSet.selections, selectionSetType));\n continue;\n }\n }\n\n outputSelections.push(selection);\n }\n\n return outputSelections;\n }\n\n __name(inlineRelevantFragmentSpreads, \"inlineRelevantFragmentSpreads\");\n\n function mergeAst(documentAST, schema) {\n const typeInfo = schema ? new _graphql.TypeInfo(schema) : null;\n const fragmentDefinitions = /* @__PURE__ */Object.create(null);\n\n for (const definition of documentAST.definitions) {\n if (definition.kind === _graphql.Kind.FRAGMENT_DEFINITION) {\n fragmentDefinitions[definition.name.value] = definition;\n }\n }\n\n const visitors = {\n SelectionSet(node) {\n const selectionSetType = typeInfo ? typeInfo.getParentType() : null;\n let {\n selections\n } = node;\n selections = inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType);\n selections = uniqueBy(selections, selection => selection.alias ? selection.alias.value : selection.name.value);\n return Object.assign(Object.assign({}, node), {\n selections\n });\n },\n\n FragmentDefinition() {\n return null;\n }\n\n };\n return (0, _graphql.visit)(documentAST, typeInfo ? (0, _graphql.visitWithTypeInfo)(typeInfo, visitors) : visitors);\n }\n\n __name(mergeAst, \"mergeAst\");\n\n function getSelectedOperationName(prevOperations, prevSelectedOperationName, operations) {\n if (!operations || operations.length < 1) {\n return;\n }\n\n const names = operations.map(op => {\n var _a;\n\n return (_a = op.name) === null || _a === void 0 ? void 0 : _a.value;\n });\n\n if (prevSelectedOperationName && names.indexOf(prevSelectedOperationName) !== -1) {\n return prevSelectedOperationName;\n }\n\n if (prevSelectedOperationName && prevOperations) {\n const prevNames = prevOperations.map(op => {\n var _a;\n\n return (_a = op.name) === null || _a === void 0 ? void 0 : _a.value;\n });\n const prevIndex = prevNames.indexOf(prevSelectedOperationName);\n\n if (prevIndex !== -1 && prevIndex < names.length) {\n return names[prevIndex];\n }\n }\n\n return names[0];\n }\n\n __name(getSelectedOperationName, \"getSelectedOperationName\");\n\n function isQuotaError(storage, e) {\n return e instanceof DOMException && (e.code === 22 || e.code === 1014 || e.name === \"QuotaExceededError\" || e.name === \"NS_ERROR_DOM_QUOTA_REACHED\") && storage.length !== 0;\n }\n\n __name(isQuotaError, \"isQuotaError\");\n\n class StorageAPI {\n constructor(storage) {\n if (storage) {\n this.storage = storage;\n } else if (storage === null) {\n this.storage = null;\n } else {\n this.storage = typeof window !== \"undefined\" ? window.localStorage : null;\n }\n }\n\n get(name2) {\n if (!this.storage) {\n return null;\n }\n\n const key = `${STORAGE_NAMESPACE}:${name2}`;\n const value = this.storage.getItem(key);\n\n if (value === \"null\" || value === \"undefined\") {\n this.storage.removeItem(key);\n return null;\n }\n\n return value || null;\n }\n\n set(name2, value) {\n let quotaError = false;\n let error2 = null;\n\n if (this.storage) {\n const key = `${STORAGE_NAMESPACE}:${name2}`;\n\n if (value) {\n try {\n this.storage.setItem(key, value);\n } catch (e) {\n error2 = e instanceof Error ? e : new Error(`${e}`);\n quotaError = isQuotaError(this.storage, e);\n }\n } else {\n this.storage.removeItem(key);\n }\n }\n\n return {\n isQuotaError: quotaError,\n error: error2\n };\n }\n\n }\n\n __name(StorageAPI, \"StorageAPI\");\n\n const STORAGE_NAMESPACE = \"graphiql\";\n\n class QueryStore {\n constructor(key, storage) {\n let maxSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n this.key = key;\n this.storage = storage;\n this.maxSize = maxSize;\n this.items = this.fetchAll();\n }\n\n get length() {\n return this.items.length;\n }\n\n contains(item) {\n return this.items.some(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName);\n }\n\n edit(item) {\n const itemIndex = this.items.findIndex(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName);\n\n if (itemIndex !== -1) {\n this.items.splice(itemIndex, 1, item);\n this.save();\n }\n }\n\n delete(item) {\n const itemIndex = this.items.findIndex(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName);\n\n if (itemIndex !== -1) {\n this.items.splice(itemIndex, 1);\n this.save();\n }\n }\n\n fetchRecent() {\n return this.items[this.items.length - 1];\n }\n\n fetchAll() {\n const raw = this.storage.get(this.key);\n\n if (raw) {\n return JSON.parse(raw)[this.key];\n }\n\n return [];\n }\n\n push(item) {\n const items = [...this.items, item];\n\n if (this.maxSize && items.length > this.maxSize) {\n items.shift();\n }\n\n for (let attempts = 0; attempts < 5; attempts++) {\n const response = this.storage.set(this.key, JSON.stringify({\n [this.key]: items\n }));\n\n if (!response || !response.error) {\n this.items = items;\n } else if (response.isQuotaError && this.maxSize) {\n items.shift();\n } else {\n return;\n }\n }\n }\n\n save() {\n this.storage.set(this.key, JSON.stringify({\n [this.key]: this.items\n }));\n }\n\n }\n\n __name(QueryStore, \"QueryStore\");\n\n const MAX_QUERY_SIZE = 1e5;\n\n class HistoryStore {\n constructor(storage, maxHistoryLength) {\n this.storage = storage;\n this.maxHistoryLength = maxHistoryLength;\n\n this.updateHistory = (query, variables, headers, operationName) => {\n if (this.shouldSaveQuery(query, variables, headers, this.history.fetchRecent())) {\n this.history.push({\n query,\n variables,\n headers,\n operationName\n });\n const historyQueries = this.history.items;\n const favoriteQueries = this.favorite.items;\n this.queries = historyQueries.concat(favoriteQueries);\n }\n };\n\n this.history = new QueryStore(\"queries\", this.storage, this.maxHistoryLength);\n this.favorite = new QueryStore(\"favorites\", this.storage, null);\n this.queries = [...this.history.fetchAll(), ...this.favorite.fetchAll()];\n }\n\n shouldSaveQuery(query, variables, headers, lastQuerySaved) {\n if (!query) {\n return false;\n }\n\n try {\n (0, _graphql.parse)(query);\n } catch (e) {\n return false;\n }\n\n if (query.length > MAX_QUERY_SIZE) {\n return false;\n }\n\n if (!lastQuerySaved) {\n return true;\n }\n\n if (JSON.stringify(query) === JSON.stringify(lastQuerySaved.query)) {\n if (JSON.stringify(variables) === JSON.stringify(lastQuerySaved.variables)) {\n if (JSON.stringify(headers) === JSON.stringify(lastQuerySaved.headers)) {\n return false;\n }\n\n if (headers && !lastQuerySaved.headers) {\n return false;\n }\n }\n\n if (variables && !lastQuerySaved.variables) {\n return false;\n }\n }\n\n return true;\n }\n\n toggleFavorite(query, variables, headers, operationName, label, favorite) {\n const item = {\n query,\n variables,\n headers,\n operationName,\n label\n };\n\n if (!this.favorite.contains(item)) {\n item.favorite = true;\n this.favorite.push(item);\n } else if (favorite) {\n item.favorite = false;\n this.favorite.delete(item);\n }\n\n this.queries = [...this.history.items, ...this.favorite.items];\n }\n\n editLabel(query, variables, headers, operationName, label, favorite) {\n const item = {\n query,\n variables,\n headers,\n operationName,\n label\n };\n\n if (favorite) {\n this.favorite.edit(Object.assign(Object.assign({}, item), {\n favorite\n }));\n } else {\n this.history.edit(item);\n }\n\n this.queries = [...this.history.items, ...this.favorite.items];\n }\n\n }\n\n __name(HistoryStore, \"HistoryStore\");\n\n var __defProp$g = Object.defineProperty;\n\n var __name$g = /* @__PURE__ */__name((target2, value) => __defProp$g(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$g\");\n\n function createNullableContext(name2) {\n const context = /*#__PURE__*/(0, _react.createContext)(null);\n context.displayName = name2;\n return context;\n }\n\n __name(createNullableContext, \"createNullableContext\");\n\n __name$g(createNullableContext, \"createNullableContext\");\n\n function createContextHook(context) {\n function useGivenContext(options) {\n var _a;\n\n const value = (0, _react.useContext)(context);\n\n if (value === null && (options == null ? void 0 : options.nonNull)) {\n throw new Error(`Tried to use \\`${((_a = options.caller) == null ? void 0 : _a.name) || useGivenContext.caller.name}\\` without the necessary context. Make sure to render the \\`${context.displayName}Provider\\` component higher up the tree.`);\n }\n\n return value;\n }\n\n __name(useGivenContext, \"useGivenContext\");\n\n __name$g(useGivenContext, \"useGivenContext\");\n\n Object.defineProperty(useGivenContext, \"name\", {\n value: `use${context.displayName}`\n });\n return useGivenContext;\n }\n\n __name(createContextHook, \"createContextHook\");\n\n __name$g(createContextHook, \"createContextHook\");\n\n var __defProp$f = Object.defineProperty;\n\n var __name$f = /* @__PURE__ */__name((target2, value) => __defProp$f(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$f\");\n\n const StorageContext = createNullableContext(\"StorageContext\");\n _exports.F = StorageContext;\n\n function StorageContextProvider(props) {\n const isInitialRender = (0, _react.useRef)(true);\n const [storage, setStorage] = (0, _react.useState)(new StorageAPI(props.storage));\n (0, _react.useEffect)(() => {\n if (isInitialRender.current) {\n isInitialRender.current = false;\n } else {\n setStorage(new StorageAPI(props.storage));\n }\n }, [props.storage]);\n return /* @__PURE__ */jsx(StorageContext.Provider, {\n value: storage,\n children: props.children\n });\n }\n\n __name(StorageContextProvider, \"StorageContextProvider\");\n\n __name$f(StorageContextProvider, \"StorageContextProvider\");\n\n const useStorageContext = createContextHook(StorageContext);\n _exports.J = useStorageContext;\n var DocumentUri;\n\n (function (DocumentUri2) {\n function is(value) {\n return typeof value === \"string\";\n }\n\n __name(is, \"is\");\n\n DocumentUri2.is = is;\n })(DocumentUri || (DocumentUri = {}));\n\n var URI;\n\n (function (URI2) {\n function is(value) {\n return typeof value === \"string\";\n }\n\n __name(is, \"is\");\n\n URI2.is = is;\n })(URI || (URI = {}));\n\n var integer;\n\n (function (integer2) {\n integer2.MIN_VALUE = -2147483648;\n integer2.MAX_VALUE = 2147483647;\n\n function is(value) {\n return typeof value === \"number\" && integer2.MIN_VALUE <= value && value <= integer2.MAX_VALUE;\n }\n\n __name(is, \"is\");\n\n integer2.is = is;\n })(integer || (integer = {}));\n\n var uinteger;\n\n (function (uinteger2) {\n uinteger2.MIN_VALUE = 0;\n uinteger2.MAX_VALUE = 2147483647;\n\n function is(value) {\n return typeof value === \"number\" && uinteger2.MIN_VALUE <= value && value <= uinteger2.MAX_VALUE;\n }\n\n __name(is, \"is\");\n\n uinteger2.is = is;\n })(uinteger || (uinteger = {}));\n\n var Position;\n\n (function (Position2) {\n function create(line, character) {\n if (line === Number.MAX_VALUE) {\n line = uinteger.MAX_VALUE;\n }\n\n if (character === Number.MAX_VALUE) {\n character = uinteger.MAX_VALUE;\n }\n\n return {\n line,\n character\n };\n }\n\n __name(create, \"create\");\n\n Position2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character);\n }\n\n __name(is, \"is\");\n\n Position2.is = is;\n })(Position || (Position = {}));\n\n var Range;\n\n (function (Range2) {\n function create(one, two, three, four) {\n if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) {\n return {\n start: Position.create(one, two),\n end: Position.create(three, four)\n };\n } else if (Position.is(one) && Position.is(two)) {\n return {\n start: one,\n end: two\n };\n } else {\n throw new Error(\"Range#create called with invalid arguments[\".concat(one, \", \").concat(two, \", \").concat(three, \", \").concat(four, \"]\"));\n }\n }\n\n __name(create, \"create\");\n\n Range2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\n }\n\n __name(is, \"is\");\n\n Range2.is = is;\n })(Range || (Range = {}));\n\n var Location;\n\n (function (Location2) {\n function create(uri, range2) {\n return {\n uri,\n range: range2\n };\n }\n\n __name(create, \"create\");\n\n Location2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));\n }\n\n __name(is, \"is\");\n\n Location2.is = is;\n })(Location || (Location = {}));\n\n var LocationLink;\n\n (function (LocationLink2) {\n function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\n return {\n targetUri,\n targetRange,\n targetSelectionRange,\n originSelectionRange\n };\n }\n\n __name(create, \"create\");\n\n LocationLink2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri) && Range.is(candidate.targetSelectionRange) && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\n }\n\n __name(is, \"is\");\n\n LocationLink2.is = is;\n })(LocationLink || (LocationLink = {}));\n\n var Color;\n\n (function (Color2) {\n function create(red, green, blue, alpha2) {\n return {\n red,\n green,\n blue,\n alpha: alpha2\n };\n }\n\n __name(create, \"create\");\n\n Color2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.numberRange(candidate.red, 0, 1) && Is.numberRange(candidate.green, 0, 1) && Is.numberRange(candidate.blue, 0, 1) && Is.numberRange(candidate.alpha, 0, 1);\n }\n\n __name(is, \"is\");\n\n Color2.is = is;\n })(Color || (Color = {}));\n\n var ColorInformation;\n\n (function (ColorInformation2) {\n function create(range2, color) {\n return {\n range: range2,\n color\n };\n }\n\n __name(create, \"create\");\n\n ColorInformation2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && Color.is(candidate.color);\n }\n\n __name(is, \"is\");\n\n ColorInformation2.is = is;\n })(ColorInformation || (ColorInformation = {}));\n\n var ColorPresentation;\n\n (function (ColorPresentation2) {\n function create(label, textEdit, additionalTextEdits) {\n return {\n label,\n textEdit,\n additionalTextEdits\n };\n }\n\n __name(create, \"create\");\n\n ColorPresentation2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate)) && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\n }\n\n __name(is, \"is\");\n\n ColorPresentation2.is = is;\n })(ColorPresentation || (ColorPresentation = {}));\n\n var FoldingRangeKind;\n\n (function (FoldingRangeKind2) {\n FoldingRangeKind2.Comment = \"comment\";\n FoldingRangeKind2.Imports = \"imports\";\n FoldingRangeKind2.Region = \"region\";\n })(FoldingRangeKind || (FoldingRangeKind = {}));\n\n var FoldingRange;\n\n (function (FoldingRange2) {\n function create(startLine, endLine, startCharacter, endCharacter, kind, collapsedText) {\n var result = {\n startLine,\n endLine\n };\n\n if (Is.defined(startCharacter)) {\n result.startCharacter = startCharacter;\n }\n\n if (Is.defined(endCharacter)) {\n result.endCharacter = endCharacter;\n }\n\n if (Is.defined(kind)) {\n result.kind = kind;\n }\n\n if (Is.defined(collapsedText)) {\n result.collapsedText = collapsedText;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n FoldingRange2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine) && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter)) && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter)) && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\n }\n\n __name(is, \"is\");\n\n FoldingRange2.is = is;\n })(FoldingRange || (FoldingRange = {}));\n\n var DiagnosticRelatedInformation;\n\n (function (DiagnosticRelatedInformation2) {\n function create(location, message) {\n return {\n location,\n message\n };\n }\n\n __name(create, \"create\");\n\n DiagnosticRelatedInformation2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\n }\n\n __name(is, \"is\");\n\n DiagnosticRelatedInformation2.is = is;\n })(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {}));\n\n var DiagnosticSeverity;\n\n (function (DiagnosticSeverity2) {\n DiagnosticSeverity2.Error = 1;\n DiagnosticSeverity2.Warning = 2;\n DiagnosticSeverity2.Information = 3;\n DiagnosticSeverity2.Hint = 4;\n })(DiagnosticSeverity || (DiagnosticSeverity = {}));\n\n var DiagnosticTag;\n\n (function (DiagnosticTag2) {\n DiagnosticTag2.Unnecessary = 1;\n DiagnosticTag2.Deprecated = 2;\n })(DiagnosticTag || (DiagnosticTag = {}));\n\n var CodeDescription;\n\n (function (CodeDescription2) {\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.href);\n }\n\n __name(is, \"is\");\n\n CodeDescription2.is = is;\n })(CodeDescription || (CodeDescription = {}));\n\n var Diagnostic;\n\n (function (Diagnostic2) {\n function create(range2, message, severity, code3, source, relatedInformation) {\n var result = {\n range: range2,\n message\n };\n\n if (Is.defined(severity)) {\n result.severity = severity;\n }\n\n if (Is.defined(code3)) {\n result.code = code3;\n }\n\n if (Is.defined(source)) {\n result.source = source;\n }\n\n if (Is.defined(relatedInformation)) {\n result.relatedInformation = relatedInformation;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n Diagnostic2.create = create;\n\n function is(value) {\n var _a;\n\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && Is.string(candidate.message) && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) && (Is.undefined(candidate.codeDescription) || Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)) && (Is.string(candidate.source) || Is.undefined(candidate.source)) && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\n }\n\n __name(is, \"is\");\n\n Diagnostic2.is = is;\n })(Diagnostic || (Diagnostic = {}));\n\n var Command;\n\n (function (Command2) {\n function create(title, command) {\n var args = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n\n var result = {\n title,\n command\n };\n\n if (Is.defined(args) && args.length > 0) {\n result.arguments = args;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n Command2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\n }\n\n __name(is, \"is\");\n\n Command2.is = is;\n })(Command || (Command = {}));\n\n var TextEdit;\n\n (function (TextEdit2) {\n function replace2(range2, newText) {\n return {\n range: range2,\n newText\n };\n }\n\n __name(replace2, \"replace\");\n\n TextEdit2.replace = replace2;\n\n function insert(position, newText) {\n return {\n range: {\n start: position,\n end: position\n },\n newText\n };\n }\n\n __name(insert, \"insert\");\n\n TextEdit2.insert = insert;\n\n function del(range2) {\n return {\n range: range2,\n newText: \"\"\n };\n }\n\n __name(del, \"del\");\n\n TextEdit2.del = del;\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range.is(candidate.range);\n }\n\n __name(is, \"is\");\n\n TextEdit2.is = is;\n })(TextEdit || (TextEdit = {}));\n\n var ChangeAnnotation;\n\n (function (ChangeAnnotation2) {\n function create(label, needsConfirmation, description) {\n var result = {\n label\n };\n\n if (needsConfirmation !== void 0) {\n result.needsConfirmation = needsConfirmation;\n }\n\n if (description !== void 0) {\n result.description = description;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n ChangeAnnotation2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === void 0) && (Is.string(candidate.description) || candidate.description === void 0);\n }\n\n __name(is, \"is\");\n\n ChangeAnnotation2.is = is;\n })(ChangeAnnotation || (ChangeAnnotation = {}));\n\n var ChangeAnnotationIdentifier;\n\n (function (ChangeAnnotationIdentifier2) {\n function is(value) {\n var candidate = value;\n return Is.string(candidate);\n }\n\n __name(is, \"is\");\n\n ChangeAnnotationIdentifier2.is = is;\n })(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {}));\n\n var AnnotatedTextEdit;\n\n (function (AnnotatedTextEdit2) {\n function replace2(range2, newText, annotation) {\n return {\n range: range2,\n newText,\n annotationId: annotation\n };\n }\n\n __name(replace2, \"replace\");\n\n AnnotatedTextEdit2.replace = replace2;\n\n function insert(position, newText, annotation) {\n return {\n range: {\n start: position,\n end: position\n },\n newText,\n annotationId: annotation\n };\n }\n\n __name(insert, \"insert\");\n\n AnnotatedTextEdit2.insert = insert;\n\n function del(range2, annotation) {\n return {\n range: range2,\n newText: \"\",\n annotationId: annotation\n };\n }\n\n __name(del, \"del\");\n\n AnnotatedTextEdit2.del = del;\n\n function is(value) {\n var candidate = value;\n return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n\n __name(is, \"is\");\n\n AnnotatedTextEdit2.is = is;\n })(AnnotatedTextEdit || (AnnotatedTextEdit = {}));\n\n var TextDocumentEdit;\n\n (function (TextDocumentEdit2) {\n function create(textDocument, edits) {\n return {\n textDocument,\n edits\n };\n }\n\n __name(create, \"create\");\n\n TextDocumentEdit2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits);\n }\n\n __name(is, \"is\");\n\n TextDocumentEdit2.is = is;\n })(TextDocumentEdit || (TextDocumentEdit = {}));\n\n var CreateFile;\n\n (function (CreateFile2) {\n function create(uri, options, annotation) {\n var result = {\n kind: \"create\",\n uri\n };\n\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\n result.options = options;\n }\n\n if (annotation !== void 0) {\n result.annotationId = annotation;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n CreateFile2.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === \"create\" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n\n __name(is, \"is\");\n\n CreateFile2.is = is;\n })(CreateFile || (CreateFile = {}));\n\n var RenameFile;\n\n (function (RenameFile2) {\n function create(oldUri, newUri, options, annotation) {\n var result = {\n kind: \"rename\",\n oldUri,\n newUri\n };\n\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\n result.options = options;\n }\n\n if (annotation !== void 0) {\n result.annotationId = annotation;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n RenameFile2.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === \"rename\" && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n\n __name(is, \"is\");\n\n RenameFile2.is = is;\n })(RenameFile || (RenameFile = {}));\n\n var DeleteFile;\n\n (function (DeleteFile2) {\n function create(uri, options, annotation) {\n var result = {\n kind: \"delete\",\n uri\n };\n\n if (options !== void 0 && (options.recursive !== void 0 || options.ignoreIfNotExists !== void 0)) {\n result.options = options;\n }\n\n if (annotation !== void 0) {\n result.annotationId = annotation;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n DeleteFile2.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === \"delete\" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n\n __name(is, \"is\");\n\n DeleteFile2.is = is;\n })(DeleteFile || (DeleteFile = {}));\n\n var WorkspaceEdit;\n\n (function (WorkspaceEdit2) {\n function is(value) {\n var candidate = value;\n return candidate && (candidate.changes !== void 0 || candidate.documentChanges !== void 0) && (candidate.documentChanges === void 0 || candidate.documentChanges.every(function (change) {\n if (Is.string(change.kind)) {\n return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\n } else {\n return TextDocumentEdit.is(change);\n }\n }));\n }\n\n __name(is, \"is\");\n\n WorkspaceEdit2.is = is;\n })(WorkspaceEdit || (WorkspaceEdit = {}));\n\n var TextEditChangeImpl = function () {\n function TextEditChangeImpl2(edits, changeAnnotations) {\n this.edits = edits;\n this.changeAnnotations = changeAnnotations;\n }\n\n __name(TextEditChangeImpl2, \"TextEditChangeImpl\");\n\n TextEditChangeImpl2.prototype.insert = function (position, newText, annotation) {\n var edit;\n var id;\n\n if (annotation === void 0) {\n edit = TextEdit.insert(position, newText);\n } else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.insert(position, newText, annotation);\n } else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.insert(position, newText, id);\n }\n\n this.edits.push(edit);\n\n if (id !== void 0) {\n return id;\n }\n };\n\n TextEditChangeImpl2.prototype.replace = function (range2, newText, annotation) {\n var edit;\n var id;\n\n if (annotation === void 0) {\n edit = TextEdit.replace(range2, newText);\n } else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.replace(range2, newText, annotation);\n } else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.replace(range2, newText, id);\n }\n\n this.edits.push(edit);\n\n if (id !== void 0) {\n return id;\n }\n };\n\n TextEditChangeImpl2.prototype.delete = function (range2, annotation) {\n var edit;\n var id;\n\n if (annotation === void 0) {\n edit = TextEdit.del(range2);\n } else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.del(range2, annotation);\n } else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.del(range2, id);\n }\n\n this.edits.push(edit);\n\n if (id !== void 0) {\n return id;\n }\n };\n\n TextEditChangeImpl2.prototype.add = function (edit) {\n this.edits.push(edit);\n };\n\n TextEditChangeImpl2.prototype.all = function () {\n return this.edits;\n };\n\n TextEditChangeImpl2.prototype.clear = function () {\n this.edits.splice(0, this.edits.length);\n };\n\n TextEditChangeImpl2.prototype.assertChangeAnnotations = function (value) {\n if (value === void 0) {\n throw new Error(\"Text edit change is not configured to manage change annotations.\");\n }\n };\n\n return TextEditChangeImpl2;\n }();\n\n var ChangeAnnotations = function () {\n function ChangeAnnotations2(annotations) {\n this._annotations = annotations === void 0 ? /* @__PURE__ */Object.create(null) : annotations;\n this._counter = 0;\n this._size = 0;\n }\n\n __name(ChangeAnnotations2, \"ChangeAnnotations\");\n\n ChangeAnnotations2.prototype.all = function () {\n return this._annotations;\n };\n\n Object.defineProperty(ChangeAnnotations2.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: false,\n configurable: true\n });\n\n ChangeAnnotations2.prototype.manage = function (idOrAnnotation, annotation) {\n var id;\n\n if (ChangeAnnotationIdentifier.is(idOrAnnotation)) {\n id = idOrAnnotation;\n } else {\n id = this.nextId();\n annotation = idOrAnnotation;\n }\n\n if (this._annotations[id] !== void 0) {\n throw new Error(\"Id \".concat(id, \" is already in use.\"));\n }\n\n if (annotation === void 0) {\n throw new Error(\"No annotation provided for id \".concat(id));\n }\n\n this._annotations[id] = annotation;\n this._size++;\n return id;\n };\n\n ChangeAnnotations2.prototype.nextId = function () {\n this._counter++;\n return this._counter.toString();\n };\n\n return ChangeAnnotations2;\n }();\n\n (function () {\n function WorkspaceChange(workspaceEdit) {\n var _this = this;\n\n this._textEditChanges = /* @__PURE__ */Object.create(null);\n\n if (workspaceEdit !== void 0) {\n this._workspaceEdit = workspaceEdit;\n\n if (workspaceEdit.documentChanges) {\n this._changeAnnotations = new ChangeAnnotations(workspaceEdit.changeAnnotations);\n workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n workspaceEdit.documentChanges.forEach(function (change) {\n if (TextDocumentEdit.is(change)) {\n var textEditChange = new TextEditChangeImpl(change.edits, _this._changeAnnotations);\n _this._textEditChanges[change.textDocument.uri] = textEditChange;\n }\n });\n } else if (workspaceEdit.changes) {\n Object.keys(workspaceEdit.changes).forEach(function (key) {\n var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\n _this._textEditChanges[key] = textEditChange;\n });\n }\n } else {\n this._workspaceEdit = {};\n }\n }\n\n __name(WorkspaceChange, \"WorkspaceChange\");\n\n Object.defineProperty(WorkspaceChange.prototype, \"edit\", {\n get: function () {\n this.initDocumentChanges();\n\n if (this._changeAnnotations !== void 0) {\n if (this._changeAnnotations.size === 0) {\n this._workspaceEdit.changeAnnotations = void 0;\n } else {\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n }\n\n return this._workspaceEdit;\n },\n enumerable: false,\n configurable: true\n });\n\n WorkspaceChange.prototype.getTextEditChange = function (key) {\n if (OptionalVersionedTextDocumentIdentifier.is(key)) {\n this.initDocumentChanges();\n\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n\n var textDocument = {\n uri: key.uri,\n version: key.version\n };\n var result = this._textEditChanges[textDocument.uri];\n\n if (!result) {\n var edits = [];\n var textDocumentEdit = {\n textDocument,\n edits\n };\n\n this._workspaceEdit.documentChanges.push(textDocumentEdit);\n\n result = new TextEditChangeImpl(edits, this._changeAnnotations);\n this._textEditChanges[textDocument.uri] = result;\n }\n\n return result;\n } else {\n this.initChanges();\n\n if (this._workspaceEdit.changes === void 0) {\n throw new Error(\"Workspace edit is not configured for normal text edit changes.\");\n }\n\n var result = this._textEditChanges[key];\n\n if (!result) {\n var edits = [];\n this._workspaceEdit.changes[key] = edits;\n result = new TextEditChangeImpl(edits);\n this._textEditChanges[key] = result;\n }\n\n return result;\n }\n };\n\n WorkspaceChange.prototype.initDocumentChanges = function () {\n if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) {\n this._changeAnnotations = new ChangeAnnotations();\n this._workspaceEdit.documentChanges = [];\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n };\n\n WorkspaceChange.prototype.initChanges = function () {\n if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) {\n this._workspaceEdit.changes = /* @__PURE__ */Object.create(null);\n }\n };\n\n WorkspaceChange.prototype.createFile = function (uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n\n var annotation;\n\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n } else {\n options = optionsOrAnnotation;\n }\n\n var operation;\n var id;\n\n if (annotation === void 0) {\n operation = CreateFile.create(uri, options);\n } else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = CreateFile.create(uri, options, id);\n }\n\n this._workspaceEdit.documentChanges.push(operation);\n\n if (id !== void 0) {\n return id;\n }\n };\n\n WorkspaceChange.prototype.renameFile = function (oldUri, newUri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n\n var annotation;\n\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n } else {\n options = optionsOrAnnotation;\n }\n\n var operation;\n var id;\n\n if (annotation === void 0) {\n operation = RenameFile.create(oldUri, newUri, options);\n } else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = RenameFile.create(oldUri, newUri, options, id);\n }\n\n this._workspaceEdit.documentChanges.push(operation);\n\n if (id !== void 0) {\n return id;\n }\n };\n\n WorkspaceChange.prototype.deleteFile = function (uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n\n var annotation;\n\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n } else {\n options = optionsOrAnnotation;\n }\n\n var operation;\n var id;\n\n if (annotation === void 0) {\n operation = DeleteFile.create(uri, options);\n } else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = DeleteFile.create(uri, options, id);\n }\n\n this._workspaceEdit.documentChanges.push(operation);\n\n if (id !== void 0) {\n return id;\n }\n };\n\n return WorkspaceChange;\n })();\n\n var TextDocumentIdentifier;\n\n (function (TextDocumentIdentifier2) {\n function create(uri) {\n return {\n uri\n };\n }\n\n __name(create, \"create\");\n\n TextDocumentIdentifier2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri);\n }\n\n __name(is, \"is\");\n\n TextDocumentIdentifier2.is = is;\n })(TextDocumentIdentifier || (TextDocumentIdentifier = {}));\n\n var VersionedTextDocumentIdentifier;\n\n (function (VersionedTextDocumentIdentifier2) {\n function create(uri, version) {\n return {\n uri,\n version\n };\n }\n\n __name(create, \"create\");\n\n VersionedTextDocumentIdentifier2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version);\n }\n\n __name(is, \"is\");\n\n VersionedTextDocumentIdentifier2.is = is;\n })(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));\n\n var OptionalVersionedTextDocumentIdentifier;\n\n (function (OptionalVersionedTextDocumentIdentifier2) {\n function create(uri, version) {\n return {\n uri,\n version\n };\n }\n\n __name(create, \"create\");\n\n OptionalVersionedTextDocumentIdentifier2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version));\n }\n\n __name(is, \"is\");\n\n OptionalVersionedTextDocumentIdentifier2.is = is;\n })(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {}));\n\n var TextDocumentItem;\n\n (function (TextDocumentItem2) {\n function create(uri, languageId, version, text3) {\n return {\n uri,\n languageId,\n version,\n text: text3\n };\n }\n\n __name(create, \"create\");\n\n TextDocumentItem2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text);\n }\n\n __name(is, \"is\");\n\n TextDocumentItem2.is = is;\n })(TextDocumentItem || (TextDocumentItem = {}));\n\n var MarkupKind;\n\n (function (MarkupKind2) {\n MarkupKind2.PlainText = \"plaintext\";\n MarkupKind2.Markdown = \"markdown\";\n\n function is(value) {\n var candidate = value;\n return candidate === MarkupKind2.PlainText || candidate === MarkupKind2.Markdown;\n }\n\n __name(is, \"is\");\n\n MarkupKind2.is = is;\n })(MarkupKind || (MarkupKind = {}));\n\n var MarkupContent;\n\n (function (MarkupContent2) {\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\n }\n\n __name(is, \"is\");\n\n MarkupContent2.is = is;\n })(MarkupContent || (MarkupContent = {}));\n\n var CompletionItemKind$1;\n\n (function (CompletionItemKind2) {\n CompletionItemKind2.Text = 1;\n CompletionItemKind2.Method = 2;\n CompletionItemKind2.Function = 3;\n CompletionItemKind2.Constructor = 4;\n CompletionItemKind2.Field = 5;\n CompletionItemKind2.Variable = 6;\n CompletionItemKind2.Class = 7;\n CompletionItemKind2.Interface = 8;\n CompletionItemKind2.Module = 9;\n CompletionItemKind2.Property = 10;\n CompletionItemKind2.Unit = 11;\n CompletionItemKind2.Value = 12;\n CompletionItemKind2.Enum = 13;\n CompletionItemKind2.Keyword = 14;\n CompletionItemKind2.Snippet = 15;\n CompletionItemKind2.Color = 16;\n CompletionItemKind2.File = 17;\n CompletionItemKind2.Reference = 18;\n CompletionItemKind2.Folder = 19;\n CompletionItemKind2.EnumMember = 20;\n CompletionItemKind2.Constant = 21;\n CompletionItemKind2.Struct = 22;\n CompletionItemKind2.Event = 23;\n CompletionItemKind2.Operator = 24;\n CompletionItemKind2.TypeParameter = 25;\n })(CompletionItemKind$1 || (CompletionItemKind$1 = {}));\n\n var InsertTextFormat;\n _exports.I = InsertTextFormat;\n\n (function (InsertTextFormat2) {\n InsertTextFormat2.PlainText = 1;\n InsertTextFormat2.Snippet = 2;\n })(InsertTextFormat || (_exports.I = InsertTextFormat = {}));\n\n var CompletionItemTag;\n\n (function (CompletionItemTag2) {\n CompletionItemTag2.Deprecated = 1;\n })(CompletionItemTag || (CompletionItemTag = {}));\n\n var InsertReplaceEdit;\n\n (function (InsertReplaceEdit2) {\n function create(newText, insert, replace2) {\n return {\n newText,\n insert,\n replace: replace2\n };\n }\n\n __name(create, \"create\");\n\n InsertReplaceEdit2.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace);\n }\n\n __name(is, \"is\");\n\n InsertReplaceEdit2.is = is;\n })(InsertReplaceEdit || (InsertReplaceEdit = {}));\n\n var InsertTextMode;\n\n (function (InsertTextMode2) {\n InsertTextMode2.asIs = 1;\n InsertTextMode2.adjustIndentation = 2;\n })(InsertTextMode || (InsertTextMode = {}));\n\n var CompletionItemLabelDetails;\n\n (function (CompletionItemLabelDetails2) {\n function is(value) {\n var candidate = value;\n return candidate && (Is.string(candidate.detail) || candidate.detail === void 0) && (Is.string(candidate.description) || candidate.description === void 0);\n }\n\n __name(is, \"is\");\n\n CompletionItemLabelDetails2.is = is;\n })(CompletionItemLabelDetails || (CompletionItemLabelDetails = {}));\n\n var CompletionItem;\n\n (function (CompletionItem2) {\n function create(label) {\n return {\n label\n };\n }\n\n __name(create, \"create\");\n\n CompletionItem2.create = create;\n })(CompletionItem || (CompletionItem = {}));\n\n var CompletionList;\n\n (function (CompletionList2) {\n function create(items, isIncomplete) {\n return {\n items: items ? items : [],\n isIncomplete: !!isIncomplete\n };\n }\n\n __name(create, \"create\");\n\n CompletionList2.create = create;\n })(CompletionList || (CompletionList = {}));\n\n var MarkedString;\n\n (function (MarkedString2) {\n function fromPlainText(plainText) {\n return plainText.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, \"\\\\$&\");\n }\n\n __name(fromPlainText, \"fromPlainText\");\n\n MarkedString2.fromPlainText = fromPlainText;\n\n function is(value) {\n var candidate = value;\n return Is.string(candidate) || Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value);\n }\n\n __name(is, \"is\");\n\n MarkedString2.is = is;\n })(MarkedString || (MarkedString = {}));\n\n var Hover;\n\n (function (Hover2) {\n function is(value) {\n var candidate = value;\n return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) || MarkedString.is(candidate.contents) || Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === void 0 || Range.is(value.range));\n }\n\n __name(is, \"is\");\n\n Hover2.is = is;\n })(Hover || (Hover = {}));\n\n var ParameterInformation;\n\n (function (ParameterInformation2) {\n function create(label, documentation) {\n return documentation ? {\n label,\n documentation\n } : {\n label\n };\n }\n\n __name(create, \"create\");\n\n ParameterInformation2.create = create;\n })(ParameterInformation || (ParameterInformation = {}));\n\n var SignatureInformation;\n\n (function (SignatureInformation2) {\n function create(label, documentation) {\n var parameters = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n parameters[_i - 2] = arguments[_i];\n }\n\n var result = {\n label\n };\n\n if (Is.defined(documentation)) {\n result.documentation = documentation;\n }\n\n if (Is.defined(parameters)) {\n result.parameters = parameters;\n } else {\n result.parameters = [];\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n SignatureInformation2.create = create;\n })(SignatureInformation || (SignatureInformation = {}));\n\n var DocumentHighlightKind;\n\n (function (DocumentHighlightKind2) {\n DocumentHighlightKind2.Text = 1;\n DocumentHighlightKind2.Read = 2;\n DocumentHighlightKind2.Write = 3;\n })(DocumentHighlightKind || (DocumentHighlightKind = {}));\n\n var DocumentHighlight;\n\n (function (DocumentHighlight2) {\n function create(range2, kind) {\n var result = {\n range: range2\n };\n\n if (Is.number(kind)) {\n result.kind = kind;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n DocumentHighlight2.create = create;\n })(DocumentHighlight || (DocumentHighlight = {}));\n\n var SymbolKind;\n\n (function (SymbolKind2) {\n SymbolKind2.File = 1;\n SymbolKind2.Module = 2;\n SymbolKind2.Namespace = 3;\n SymbolKind2.Package = 4;\n SymbolKind2.Class = 5;\n SymbolKind2.Method = 6;\n SymbolKind2.Property = 7;\n SymbolKind2.Field = 8;\n SymbolKind2.Constructor = 9;\n SymbolKind2.Enum = 10;\n SymbolKind2.Interface = 11;\n SymbolKind2.Function = 12;\n SymbolKind2.Variable = 13;\n SymbolKind2.Constant = 14;\n SymbolKind2.String = 15;\n SymbolKind2.Number = 16;\n SymbolKind2.Boolean = 17;\n SymbolKind2.Array = 18;\n SymbolKind2.Object = 19;\n SymbolKind2.Key = 20;\n SymbolKind2.Null = 21;\n SymbolKind2.EnumMember = 22;\n SymbolKind2.Struct = 23;\n SymbolKind2.Event = 24;\n SymbolKind2.Operator = 25;\n SymbolKind2.TypeParameter = 26;\n })(SymbolKind || (SymbolKind = {}));\n\n var SymbolTag;\n\n (function (SymbolTag2) {\n SymbolTag2.Deprecated = 1;\n })(SymbolTag || (SymbolTag = {}));\n\n var SymbolInformation;\n\n (function (SymbolInformation2) {\n function create(name2, kind, range2, uri, containerName) {\n var result = {\n name: name2,\n kind,\n location: {\n uri,\n range: range2\n }\n };\n\n if (containerName) {\n result.containerName = containerName;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n SymbolInformation2.create = create;\n })(SymbolInformation || (SymbolInformation = {}));\n\n var WorkspaceSymbol;\n\n (function (WorkspaceSymbol2) {\n function create(name2, kind, uri, range2) {\n return range2 !== void 0 ? {\n name: name2,\n kind,\n location: {\n uri,\n range: range2\n }\n } : {\n name: name2,\n kind,\n location: {\n uri\n }\n };\n }\n\n __name(create, \"create\");\n\n WorkspaceSymbol2.create = create;\n })(WorkspaceSymbol || (WorkspaceSymbol = {}));\n\n var DocumentSymbol;\n\n (function (DocumentSymbol2) {\n function create(name2, detail, kind, range2, selectionRange, children) {\n var result = {\n name: name2,\n detail,\n kind,\n range: range2,\n selectionRange\n };\n\n if (children !== void 0) {\n result.children = children;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n DocumentSymbol2.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range.is(candidate.range) && Range.is(candidate.selectionRange) && (candidate.detail === void 0 || Is.string(candidate.detail)) && (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) && (candidate.children === void 0 || Array.isArray(candidate.children)) && (candidate.tags === void 0 || Array.isArray(candidate.tags));\n }\n\n __name(is, \"is\");\n\n DocumentSymbol2.is = is;\n })(DocumentSymbol || (DocumentSymbol = {}));\n\n var CodeActionKind;\n\n (function (CodeActionKind2) {\n CodeActionKind2.Empty = \"\";\n CodeActionKind2.QuickFix = \"quickfix\";\n CodeActionKind2.Refactor = \"refactor\";\n CodeActionKind2.RefactorExtract = \"refactor.extract\";\n CodeActionKind2.RefactorInline = \"refactor.inline\";\n CodeActionKind2.RefactorRewrite = \"refactor.rewrite\";\n CodeActionKind2.Source = \"source\";\n CodeActionKind2.SourceOrganizeImports = \"source.organizeImports\";\n CodeActionKind2.SourceFixAll = \"source.fixAll\";\n })(CodeActionKind || (CodeActionKind = {}));\n\n var CodeActionTriggerKind;\n\n (function (CodeActionTriggerKind2) {\n CodeActionTriggerKind2.Invoked = 1;\n CodeActionTriggerKind2.Automatic = 2;\n })(CodeActionTriggerKind || (CodeActionTriggerKind = {}));\n\n var CodeActionContext;\n\n (function (CodeActionContext2) {\n function create(diagnostics, only, triggerKind) {\n var result = {\n diagnostics\n };\n\n if (only !== void 0 && only !== null) {\n result.only = only;\n }\n\n if (triggerKind !== void 0 && triggerKind !== null) {\n result.triggerKind = triggerKind;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n CodeActionContext2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string)) && (candidate.triggerKind === void 0 || candidate.triggerKind === CodeActionTriggerKind.Invoked || candidate.triggerKind === CodeActionTriggerKind.Automatic);\n }\n\n __name(is, \"is\");\n\n CodeActionContext2.is = is;\n })(CodeActionContext || (CodeActionContext = {}));\n\n var CodeAction;\n\n (function (CodeAction2) {\n function create(title, kindOrCommandOrEdit, kind) {\n var result = {\n title\n };\n var checkKind = true;\n\n if (typeof kindOrCommandOrEdit === \"string\") {\n checkKind = false;\n result.kind = kindOrCommandOrEdit;\n } else if (Command.is(kindOrCommandOrEdit)) {\n result.command = kindOrCommandOrEdit;\n } else {\n result.edit = kindOrCommandOrEdit;\n }\n\n if (checkKind && kind !== void 0) {\n result.kind = kind;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n CodeAction2.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.title) && (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && (candidate.kind === void 0 || Is.string(candidate.kind)) && (candidate.edit !== void 0 || candidate.command !== void 0) && (candidate.command === void 0 || Command.is(candidate.command)) && (candidate.isPreferred === void 0 || Is.boolean(candidate.isPreferred)) && (candidate.edit === void 0 || WorkspaceEdit.is(candidate.edit));\n }\n\n __name(is, \"is\");\n\n CodeAction2.is = is;\n })(CodeAction || (CodeAction = {}));\n\n var CodeLens;\n\n (function (CodeLens2) {\n function create(range2, data) {\n var result = {\n range: range2\n };\n\n if (Is.defined(data)) {\n result.data = data;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n CodeLens2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\n }\n\n __name(is, \"is\");\n\n CodeLens2.is = is;\n })(CodeLens || (CodeLens = {}));\n\n var FormattingOptions;\n\n (function (FormattingOptions2) {\n function create(tabSize, insertSpaces) {\n return {\n tabSize,\n insertSpaces\n };\n }\n\n __name(create, \"create\");\n\n FormattingOptions2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n }\n\n __name(is, \"is\");\n\n FormattingOptions2.is = is;\n })(FormattingOptions || (FormattingOptions = {}));\n\n var DocumentLink;\n\n (function (DocumentLink2) {\n function create(range2, target2, data) {\n return {\n range: range2,\n target: target2,\n data\n };\n }\n\n __name(create, \"create\");\n\n DocumentLink2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\n }\n\n __name(is, \"is\");\n\n DocumentLink2.is = is;\n })(DocumentLink || (DocumentLink = {}));\n\n var SelectionRange;\n\n (function (SelectionRange2) {\n function create(range2, parent) {\n return {\n range: range2,\n parent\n };\n }\n\n __name(create, \"create\");\n\n SelectionRange2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && (candidate.parent === void 0 || SelectionRange2.is(candidate.parent));\n }\n\n __name(is, \"is\");\n\n SelectionRange2.is = is;\n })(SelectionRange || (SelectionRange = {}));\n\n var SemanticTokenTypes;\n\n (function (SemanticTokenTypes2) {\n SemanticTokenTypes2[\"namespace\"] = \"namespace\";\n SemanticTokenTypes2[\"type\"] = \"type\";\n SemanticTokenTypes2[\"class\"] = \"class\";\n SemanticTokenTypes2[\"enum\"] = \"enum\";\n SemanticTokenTypes2[\"interface\"] = \"interface\";\n SemanticTokenTypes2[\"struct\"] = \"struct\";\n SemanticTokenTypes2[\"typeParameter\"] = \"typeParameter\";\n SemanticTokenTypes2[\"parameter\"] = \"parameter\";\n SemanticTokenTypes2[\"variable\"] = \"variable\";\n SemanticTokenTypes2[\"property\"] = \"property\";\n SemanticTokenTypes2[\"enumMember\"] = \"enumMember\";\n SemanticTokenTypes2[\"event\"] = \"event\";\n SemanticTokenTypes2[\"function\"] = \"function\";\n SemanticTokenTypes2[\"method\"] = \"method\";\n SemanticTokenTypes2[\"macro\"] = \"macro\";\n SemanticTokenTypes2[\"keyword\"] = \"keyword\";\n SemanticTokenTypes2[\"modifier\"] = \"modifier\";\n SemanticTokenTypes2[\"comment\"] = \"comment\";\n SemanticTokenTypes2[\"string\"] = \"string\";\n SemanticTokenTypes2[\"number\"] = \"number\";\n SemanticTokenTypes2[\"regexp\"] = \"regexp\";\n SemanticTokenTypes2[\"operator\"] = \"operator\";\n SemanticTokenTypes2[\"decorator\"] = \"decorator\";\n })(SemanticTokenTypes || (SemanticTokenTypes = {}));\n\n var SemanticTokenModifiers;\n\n (function (SemanticTokenModifiers2) {\n SemanticTokenModifiers2[\"declaration\"] = \"declaration\";\n SemanticTokenModifiers2[\"definition\"] = \"definition\";\n SemanticTokenModifiers2[\"readonly\"] = \"readonly\";\n SemanticTokenModifiers2[\"static\"] = \"static\";\n SemanticTokenModifiers2[\"deprecated\"] = \"deprecated\";\n SemanticTokenModifiers2[\"abstract\"] = \"abstract\";\n SemanticTokenModifiers2[\"async\"] = \"async\";\n SemanticTokenModifiers2[\"modification\"] = \"modification\";\n SemanticTokenModifiers2[\"documentation\"] = \"documentation\";\n SemanticTokenModifiers2[\"defaultLibrary\"] = \"defaultLibrary\";\n })(SemanticTokenModifiers || (SemanticTokenModifiers = {}));\n\n var SemanticTokens;\n\n (function (SemanticTokens2) {\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && (candidate.resultId === void 0 || typeof candidate.resultId === \"string\") && Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === \"number\");\n }\n\n __name(is, \"is\");\n\n SemanticTokens2.is = is;\n })(SemanticTokens || (SemanticTokens = {}));\n\n var InlineValueText;\n\n (function (InlineValueText2) {\n function create(range2, text3) {\n return {\n range: range2,\n text: text3\n };\n }\n\n __name(create, \"create\");\n\n InlineValueText2.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate !== void 0 && candidate !== null && Range.is(candidate.range) && Is.string(candidate.text);\n }\n\n __name(is, \"is\");\n\n InlineValueText2.is = is;\n })(InlineValueText || (InlineValueText = {}));\n\n var InlineValueVariableLookup;\n\n (function (InlineValueVariableLookup2) {\n function create(range2, variableName, caseSensitiveLookup) {\n return {\n range: range2,\n variableName,\n caseSensitiveLookup\n };\n }\n\n __name(create, \"create\");\n\n InlineValueVariableLookup2.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate !== void 0 && candidate !== null && Range.is(candidate.range) && Is.boolean(candidate.caseSensitiveLookup) && (Is.string(candidate.variableName) || candidate.variableName === void 0);\n }\n\n __name(is, \"is\");\n\n InlineValueVariableLookup2.is = is;\n })(InlineValueVariableLookup || (InlineValueVariableLookup = {}));\n\n var InlineValueEvaluatableExpression;\n\n (function (InlineValueEvaluatableExpression2) {\n function create(range2, expression) {\n return {\n range: range2,\n expression\n };\n }\n\n __name(create, \"create\");\n\n InlineValueEvaluatableExpression2.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate !== void 0 && candidate !== null && Range.is(candidate.range) && (Is.string(candidate.expression) || candidate.expression === void 0);\n }\n\n __name(is, \"is\");\n\n InlineValueEvaluatableExpression2.is = is;\n })(InlineValueEvaluatableExpression || (InlineValueEvaluatableExpression = {}));\n\n var InlineValueContext;\n\n (function (InlineValueContext2) {\n function create(frameId, stoppedLocation) {\n return {\n frameId,\n stoppedLocation\n };\n }\n\n __name(create, \"create\");\n\n InlineValueContext2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(value.stoppedLocation);\n }\n\n __name(is, \"is\");\n\n InlineValueContext2.is = is;\n })(InlineValueContext || (InlineValueContext = {}));\n\n var InlayHintKind;\n\n (function (InlayHintKind2) {\n InlayHintKind2.Type = 1;\n InlayHintKind2.Parameter = 2;\n\n function is(value) {\n return value === 1 || value === 2;\n }\n\n __name(is, \"is\");\n\n InlayHintKind2.is = is;\n })(InlayHintKind || (InlayHintKind = {}));\n\n var InlayHintLabelPart;\n\n (function (InlayHintLabelPart2) {\n function create(value) {\n return {\n value\n };\n }\n\n __name(create, \"create\");\n\n InlayHintLabelPart2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && (candidate.tooltip === void 0 || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.location === void 0 || Location.is(candidate.location)) && (candidate.command === void 0 || Command.is(candidate.command));\n }\n\n __name(is, \"is\");\n\n InlayHintLabelPart2.is = is;\n })(InlayHintLabelPart || (InlayHintLabelPart = {}));\n\n var InlayHint;\n\n (function (InlayHint2) {\n function create(position, label, kind) {\n var result = {\n position,\n label\n };\n\n if (kind !== void 0) {\n result.kind = kind;\n }\n\n return result;\n }\n\n __name(create, \"create\");\n\n InlayHint2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.position) && (Is.string(candidate.label) || Is.typedArray(candidate.label, InlayHintLabelPart.is)) && (candidate.kind === void 0 || InlayHintKind.is(candidate.kind)) && candidate.textEdits === void 0 || Is.typedArray(candidate.textEdits, TextEdit.is) && (candidate.tooltip === void 0 || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.paddingLeft === void 0 || Is.boolean(candidate.paddingLeft)) && (candidate.paddingRight === void 0 || Is.boolean(candidate.paddingRight));\n }\n\n __name(is, \"is\");\n\n InlayHint2.is = is;\n })(InlayHint || (InlayHint = {}));\n\n var WorkspaceFolder;\n\n (function (WorkspaceFolder2) {\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && URI.is(candidate.uri) && Is.string(candidate.name);\n }\n\n __name(is, \"is\");\n\n WorkspaceFolder2.is = is;\n })(WorkspaceFolder || (WorkspaceFolder = {}));\n\n var TextDocument;\n\n (function (TextDocument2) {\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n\n __name(create, \"create\");\n\n TextDocument2.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\n }\n\n __name(is, \"is\");\n\n TextDocument2.is = is;\n\n function applyEdits(document2, edits) {\n var text3 = document2.getText();\n var sortedEdits = mergeSort(edits, function (a, b) {\n var diff = a.range.start.line - b.range.start.line;\n\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n\n return diff;\n });\n var lastModifiedOffset = text3.length;\n\n for (var i = sortedEdits.length - 1; i >= 0; i--) {\n var e = sortedEdits[i];\n var startOffset = document2.offsetAt(e.range.start);\n var endOffset = document2.offsetAt(e.range.end);\n\n if (endOffset <= lastModifiedOffset) {\n text3 = text3.substring(0, startOffset) + e.newText + text3.substring(endOffset, text3.length);\n } else {\n throw new Error(\"Overlapping edit\");\n }\n\n lastModifiedOffset = startOffset;\n }\n\n return text3;\n }\n\n __name(applyEdits, \"applyEdits\");\n\n TextDocument2.applyEdits = applyEdits;\n\n function mergeSort(data, compare) {\n if (data.length <= 1) {\n return data;\n }\n\n var p2 = data.length / 2 | 0;\n var left = data.slice(0, p2);\n var right = data.slice(p2);\n mergeSort(left, compare);\n mergeSort(right, compare);\n var leftIdx = 0;\n var rightIdx = 0;\n var i = 0;\n\n while (leftIdx < left.length && rightIdx < right.length) {\n var ret = compare(left[leftIdx], right[rightIdx]);\n\n if (ret <= 0) {\n data[i++] = left[leftIdx++];\n } else {\n data[i++] = right[rightIdx++];\n }\n }\n\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n\n return data;\n }\n\n __name(mergeSort, \"mergeSort\");\n })(TextDocument || (TextDocument = {}));\n\n var FullTextDocument = function () {\n function FullTextDocument2(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = void 0;\n }\n\n __name(FullTextDocument2, \"FullTextDocument\");\n\n Object.defineProperty(FullTextDocument2.prototype, \"uri\", {\n get: function () {\n return this._uri;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument2.prototype, \"languageId\", {\n get: function () {\n return this._languageId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument2.prototype, \"version\", {\n get: function () {\n return this._version;\n },\n enumerable: false,\n configurable: true\n });\n\n FullTextDocument2.prototype.getText = function (range2) {\n if (range2) {\n var start = this.offsetAt(range2.start);\n var end = this.offsetAt(range2.end);\n return this._content.substring(start, end);\n }\n\n return this._content;\n };\n\n FullTextDocument2.prototype.update = function (event, version) {\n this._content = event.text;\n this._version = version;\n this._lineOffsets = void 0;\n };\n\n FullTextDocument2.prototype.getLineOffsets = function () {\n if (this._lineOffsets === void 0) {\n var lineOffsets = [];\n var text3 = this._content;\n var isLineStart = true;\n\n for (var i = 0; i < text3.length; i++) {\n if (isLineStart) {\n lineOffsets.push(i);\n isLineStart = false;\n }\n\n var ch = text3.charAt(i);\n isLineStart = ch === \"\\r\" || ch === \"\\n\";\n\n if (ch === \"\\r\" && i + 1 < text3.length && text3.charAt(i + 1) === \"\\n\") {\n i++;\n }\n }\n\n if (isLineStart && text3.length > 0) {\n lineOffsets.push(text3.length);\n }\n\n this._lineOffsets = lineOffsets;\n }\n\n return this._lineOffsets;\n };\n\n FullTextDocument2.prototype.positionAt = function (offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n var lineOffsets = this.getLineOffsets();\n var low = 0,\n high = lineOffsets.length;\n\n if (high === 0) {\n return Position.create(0, offset);\n }\n\n while (low < high) {\n var mid2 = Math.floor((low + high) / 2);\n\n if (lineOffsets[mid2] > offset) {\n high = mid2;\n } else {\n low = mid2 + 1;\n }\n }\n\n var line = low - 1;\n return Position.create(line, offset - lineOffsets[line]);\n };\n\n FullTextDocument2.prototype.offsetAt = function (position) {\n var lineOffsets = this.getLineOffsets();\n\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n } else if (position.line < 0) {\n return 0;\n }\n\n var lineOffset = lineOffsets[position.line];\n var nextLineOffset = position.line + 1 < lineOffsets.length ? lineOffsets[position.line + 1] : this._content.length;\n return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\n };\n\n Object.defineProperty(FullTextDocument2.prototype, \"lineCount\", {\n get: function () {\n return this.getLineOffsets().length;\n },\n enumerable: false,\n configurable: true\n });\n return FullTextDocument2;\n }();\n\n var Is;\n\n (function (Is2) {\n var toString = Object.prototype.toString;\n\n function defined(value) {\n return typeof value !== \"undefined\";\n }\n\n __name(defined, \"defined\");\n\n Is2.defined = defined;\n\n function undefined$1(value) {\n return typeof value === \"undefined\";\n }\n\n __name(undefined$1, \"undefined$1\");\n\n Is2.undefined = undefined$1;\n\n function boolean(value) {\n return value === true || value === false;\n }\n\n __name(boolean, \"boolean\");\n\n Is2.boolean = boolean;\n\n function string(value) {\n return toString.call(value) === \"[object String]\";\n }\n\n __name(string, \"string\");\n\n Is2.string = string;\n\n function number(value) {\n return toString.call(value) === \"[object Number]\";\n }\n\n __name(number, \"number\");\n\n Is2.number = number;\n\n function numberRange(value, min, max) {\n return toString.call(value) === \"[object Number]\" && min <= value && value <= max;\n }\n\n __name(numberRange, \"numberRange\");\n\n Is2.numberRange = numberRange;\n\n function integer2(value) {\n return toString.call(value) === \"[object Number]\" && -2147483648 <= value && value <= 2147483647;\n }\n\n __name(integer2, \"integer\");\n\n Is2.integer = integer2;\n\n function uinteger2(value) {\n return toString.call(value) === \"[object Number]\" && 0 <= value && value <= 2147483647;\n }\n\n __name(uinteger2, \"uinteger\");\n\n Is2.uinteger = uinteger2;\n\n function func(value) {\n return toString.call(value) === \"[object Function]\";\n }\n\n __name(func, \"func\");\n\n Is2.func = func;\n\n function objectLiteral(value) {\n return value !== null && typeof value === \"object\";\n }\n\n __name(objectLiteral, \"objectLiteral\");\n\n Is2.objectLiteral = objectLiteral;\n\n function typedArray(value, check2) {\n return Array.isArray(value) && value.every(check2);\n }\n\n __name(typedArray, \"typedArray\");\n\n Is2.typedArray = typedArray;\n })(Is || (Is = {}));\n\n var CompletionItemKind;\n _exports.C = CompletionItemKind;\n\n (function (CompletionItemKind2) {\n CompletionItemKind2.Text = 1;\n CompletionItemKind2.Method = 2;\n CompletionItemKind2.Function = 3;\n CompletionItemKind2.Constructor = 4;\n CompletionItemKind2.Field = 5;\n CompletionItemKind2.Variable = 6;\n CompletionItemKind2.Class = 7;\n CompletionItemKind2.Interface = 8;\n CompletionItemKind2.Module = 9;\n CompletionItemKind2.Property = 10;\n CompletionItemKind2.Unit = 11;\n CompletionItemKind2.Value = 12;\n CompletionItemKind2.Enum = 13;\n CompletionItemKind2.Keyword = 14;\n CompletionItemKind2.Snippet = 15;\n CompletionItemKind2.Color = 16;\n CompletionItemKind2.File = 17;\n CompletionItemKind2.Reference = 18;\n CompletionItemKind2.Folder = 19;\n CompletionItemKind2.EnumMember = 20;\n CompletionItemKind2.Constant = 21;\n CompletionItemKind2.Struct = 22;\n CompletionItemKind2.Event = 23;\n CompletionItemKind2.Operator = 24;\n CompletionItemKind2.TypeParameter = 25;\n })(CompletionItemKind || (_exports.C = CompletionItemKind = {}));\n\n function opt(ofRule) {\n return {\n ofRule\n };\n }\n\n __name(opt, \"opt\");\n\n function list2(ofRule, separator) {\n return {\n ofRule,\n isList: true,\n separator\n };\n }\n\n __name(list2, \"list\");\n\n function butNot(rule, exclusions) {\n const ruleMatch = rule.match;\n\n rule.match = token2 => {\n let check2 = false;\n\n if (ruleMatch) {\n check2 = ruleMatch(token2);\n }\n\n return check2 && exclusions.every(exclusion => exclusion.match && !exclusion.match(token2));\n };\n\n return rule;\n }\n\n __name(butNot, \"butNot\");\n\n function t(kind, style) {\n return {\n style,\n match: token2 => token2.kind === kind\n };\n }\n\n __name(t, \"t\");\n\n function p(value, style) {\n return {\n style: style || \"punctuation\",\n match: token2 => token2.kind === \"Punctuation\" && token2.value === value\n };\n }\n\n __name(p, \"p\");\n\n const isIgnored = /* @__PURE__ */__name(ch => ch === \" \" || ch === \"\t\" || ch === \",\" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\uFEFF\" || ch === \"\\xA0\", \"isIgnored\");\n\n _exports.i = isIgnored;\n const LexRules = {\n Name: /^[_A-Za-z][_0-9A-Za-z]*/,\n Punctuation: /^(?:!|\\$|\\(|\\)|\\.\\.\\.|:|=|&|@|\\[|]|\\{|\\||\\})/,\n Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n String: /^(?:\"\"\"(?:\\\\\"\"\"|[^\"]|\"[^\"]|\"\"[^\"])*(?:\"\"\")?|\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?)/,\n Comment: /^#.*/\n };\n _exports.L = LexRules;\n const ParseRules = {\n Document: [list2(\"Definition\")],\n\n Definition(token2) {\n switch (token2.value) {\n case \"{\":\n return \"ShortQuery\";\n\n case \"query\":\n return \"Query\";\n\n case \"mutation\":\n return \"Mutation\";\n\n case \"subscription\":\n return \"Subscription\";\n\n case \"fragment\":\n return _graphql.Kind.FRAGMENT_DEFINITION;\n\n case \"schema\":\n return \"SchemaDef\";\n\n case \"scalar\":\n return \"ScalarDef\";\n\n case \"type\":\n return \"ObjectTypeDef\";\n\n case \"interface\":\n return \"InterfaceDef\";\n\n case \"union\":\n return \"UnionDef\";\n\n case \"enum\":\n return \"EnumDef\";\n\n case \"input\":\n return \"InputDef\";\n\n case \"extend\":\n return \"ExtendDef\";\n\n case \"directive\":\n return \"DirectiveDef\";\n }\n },\n\n ShortQuery: [\"SelectionSet\"],\n Query: [word(\"query\"), opt(name(\"def\")), opt(\"VariableDefinitions\"), list2(\"Directive\"), \"SelectionSet\"],\n Mutation: [word(\"mutation\"), opt(name(\"def\")), opt(\"VariableDefinitions\"), list2(\"Directive\"), \"SelectionSet\"],\n Subscription: [word(\"subscription\"), opt(name(\"def\")), opt(\"VariableDefinitions\"), list2(\"Directive\"), \"SelectionSet\"],\n VariableDefinitions: [p(\"(\"), list2(\"VariableDefinition\"), p(\")\")],\n VariableDefinition: [\"Variable\", p(\":\"), \"Type\", opt(\"DefaultValue\")],\n Variable: [p(\"$\", \"variable\"), name(\"variable\")],\n DefaultValue: [p(\"=\"), \"Value\"],\n SelectionSet: [p(\"{\"), list2(\"Selection\"), p(\"}\")],\n\n Selection(token2, stream) {\n return token2.value === \"...\" ? stream.match(/[\\s\\u00a0,]*(on\\b|@|{)/, false) ? \"InlineFragment\" : \"FragmentSpread\" : stream.match(/[\\s\\u00a0,]*:/, false) ? \"AliasedField\" : \"Field\";\n },\n\n AliasedField: [name(\"property\"), p(\":\"), name(\"qualifier\"), opt(\"Arguments\"), list2(\"Directive\"), opt(\"SelectionSet\")],\n Field: [name(\"property\"), opt(\"Arguments\"), list2(\"Directive\"), opt(\"SelectionSet\")],\n Arguments: [p(\"(\"), list2(\"Argument\"), p(\")\")],\n Argument: [name(\"attribute\"), p(\":\"), \"Value\"],\n FragmentSpread: [p(\"...\"), name(\"def\"), list2(\"Directive\")],\n InlineFragment: [p(\"...\"), opt(\"TypeCondition\"), list2(\"Directive\"), \"SelectionSet\"],\n FragmentDefinition: [word(\"fragment\"), opt(butNot(name(\"def\"), [word(\"on\")])), \"TypeCondition\", list2(\"Directive\"), \"SelectionSet\"],\n TypeCondition: [word(\"on\"), \"NamedType\"],\n\n Value(token2) {\n switch (token2.kind) {\n case \"Number\":\n return \"NumberValue\";\n\n case \"String\":\n return \"StringValue\";\n\n case \"Punctuation\":\n switch (token2.value) {\n case \"[\":\n return \"ListValue\";\n\n case \"{\":\n return \"ObjectValue\";\n\n case \"$\":\n return \"Variable\";\n\n case \"&\":\n return \"NamedType\";\n }\n\n return null;\n\n case \"Name\":\n switch (token2.value) {\n case \"true\":\n case \"false\":\n return \"BooleanValue\";\n }\n\n if (token2.value === \"null\") {\n return \"NullValue\";\n }\n\n return \"EnumValue\";\n }\n },\n\n NumberValue: [t(\"Number\", \"number\")],\n StringValue: [{\n style: \"string\",\n match: token2 => token2.kind === \"String\",\n\n update(state, token2) {\n if (token2.value.startsWith('\"\"\"')) {\n state.inBlockstring = !token2.value.slice(3).endsWith('\"\"\"');\n }\n }\n\n }],\n BooleanValue: [t(\"Name\", \"builtin\")],\n NullValue: [t(\"Name\", \"keyword\")],\n EnumValue: [name(\"string-2\")],\n ListValue: [p(\"[\"), list2(\"Value\"), p(\"]\")],\n ObjectValue: [p(\"{\"), list2(\"ObjectField\"), p(\"}\")],\n ObjectField: [name(\"attribute\"), p(\":\"), \"Value\"],\n\n Type(token2) {\n return token2.value === \"[\" ? \"ListType\" : \"NonNullType\";\n },\n\n ListType: [p(\"[\"), \"Type\", p(\"]\"), opt(p(\"!\"))],\n NonNullType: [\"NamedType\", opt(p(\"!\"))],\n NamedType: [type(\"atom\")],\n Directive: [p(\"@\", \"meta\"), name(\"meta\"), opt(\"Arguments\")],\n DirectiveDef: [word(\"directive\"), p(\"@\", \"meta\"), name(\"meta\"), opt(\"ArgumentsDef\"), word(\"on\"), list2(\"DirectiveLocation\", p(\"|\"))],\n InterfaceDef: [word(\"interface\"), name(\"atom\"), opt(\"Implements\"), list2(\"Directive\"), p(\"{\"), list2(\"FieldDef\"), p(\"}\")],\n Implements: [word(\"implements\"), list2(\"NamedType\", p(\"&\"))],\n DirectiveLocation: [name(\"string-2\")],\n SchemaDef: [word(\"schema\"), list2(\"Directive\"), p(\"{\"), list2(\"OperationTypeDef\"), p(\"}\")],\n OperationTypeDef: [name(\"keyword\"), p(\":\"), name(\"atom\")],\n ScalarDef: [word(\"scalar\"), name(\"atom\"), list2(\"Directive\")],\n ObjectTypeDef: [word(\"type\"), name(\"atom\"), opt(\"Implements\"), list2(\"Directive\"), p(\"{\"), list2(\"FieldDef\"), p(\"}\")],\n FieldDef: [name(\"property\"), opt(\"ArgumentsDef\"), p(\":\"), \"Type\", list2(\"Directive\")],\n ArgumentsDef: [p(\"(\"), list2(\"InputValueDef\"), p(\")\")],\n InputValueDef: [name(\"attribute\"), p(\":\"), \"Type\", opt(\"DefaultValue\"), list2(\"Directive\")],\n UnionDef: [word(\"union\"), name(\"atom\"), list2(\"Directive\"), p(\"=\"), list2(\"UnionMember\", p(\"|\"))],\n UnionMember: [\"NamedType\"],\n EnumDef: [word(\"enum\"), name(\"atom\"), list2(\"Directive\"), p(\"{\"), list2(\"EnumValueDef\"), p(\"}\")],\n EnumValueDef: [name(\"string-2\"), list2(\"Directive\")],\n InputDef: [word(\"input\"), name(\"atom\"), list2(\"Directive\"), p(\"{\"), list2(\"InputValueDef\"), p(\"}\")],\n ExtendDef: [word(\"extend\"), \"ObjectTypeDef\"]\n };\n _exports.P = ParseRules;\n\n function word(value) {\n return {\n style: \"keyword\",\n match: token2 => token2.kind === \"Name\" && token2.value === value\n };\n }\n\n __name(word, \"word\");\n\n function name(style) {\n return {\n style,\n match: token2 => token2.kind === \"Name\",\n\n update(state, token2) {\n state.name = token2.value;\n }\n\n };\n }\n\n __name(name, \"name\");\n\n function type(style) {\n return {\n style,\n match: token2 => token2.kind === \"Name\",\n\n update(state, token2) {\n var _a;\n\n if ((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.prevState) {\n state.name = token2.value;\n state.prevState.prevState.type = token2.value;\n }\n }\n\n };\n }\n\n __name(type, \"type\");\n\n const AdditionalRuleKinds = {\n ALIASED_FIELD: \"AliasedField\",\n ARGUMENTS: \"Arguments\",\n SHORT_QUERY: \"ShortQuery\",\n QUERY: \"Query\",\n MUTATION: \"Mutation\",\n SUBSCRIPTION: \"Subscription\",\n TYPE_CONDITION: \"TypeCondition\",\n INVALID: \"Invalid\",\n COMMENT: \"Comment\",\n SCHEMA_DEF: \"SchemaDef\",\n SCALAR_DEF: \"ScalarDef\",\n OBJECT_TYPE_DEF: \"ObjectTypeDef\",\n OBJECT_VALUE: \"ObjectValue\",\n LIST_VALUE: \"ListValue\",\n INTERFACE_DEF: \"InterfaceDef\",\n UNION_DEF: \"UnionDef\",\n ENUM_DEF: \"EnumDef\",\n ENUM_VALUE: \"EnumValue\",\n FIELD_DEF: \"FieldDef\",\n INPUT_DEF: \"InputDef\",\n INPUT_VALUE_DEF: \"InputValueDef\",\n ARGUMENTS_DEF: \"ArgumentsDef\",\n EXTEND_DEF: \"ExtendDef\",\n DIRECTIVE_DEF: \"DirectiveDef\",\n IMPLEMENTS: \"Implements\",\n VARIABLE_DEFINITIONS: \"VariableDefinitions\",\n TYPE: \"Type\"\n };\n const RuleKinds = Object.assign(Object.assign({}, _graphql.Kind), AdditionalRuleKinds);\n _exports.R = RuleKinds;\n var nullthrows$2 = {\n exports: {}\n };\n\n function nullthrows(x, message) {\n if (x != null) {\n return x;\n }\n\n var error2 = new Error(message !== void 0 ? message : \"Got unexpected \" + x);\n error2.framesToPop = 1;\n throw error2;\n }\n\n __name(nullthrows, \"nullthrows\");\n\n nullthrows$2.exports = nullthrows;\n nullthrows$2.exports.default = nullthrows;\n Object.defineProperty(nullthrows$2.exports, \"__esModule\", {\n value: true\n });\n var nullthrows$1 = /* @__PURE__ */getDefaultExportFromCjs(nullthrows$2.exports);\n\n const getFragmentDependenciesForAST = /* @__PURE__ */__name((parsedOperation, fragmentDefinitions) => {\n if (!fragmentDefinitions) {\n return [];\n }\n\n const existingFrags = /* @__PURE__ */new Map();\n const referencedFragNames = /* @__PURE__ */new Set();\n (0, _graphql.visit)(parsedOperation, {\n FragmentDefinition(node) {\n existingFrags.set(node.name.value, true);\n },\n\n FragmentSpread(node) {\n if (!referencedFragNames.has(node.name.value)) {\n referencedFragNames.add(node.name.value);\n }\n }\n\n });\n const asts = /* @__PURE__ */new Set();\n referencedFragNames.forEach(name2 => {\n if (!existingFrags.has(name2) && fragmentDefinitions.has(name2)) {\n asts.add(nullthrows$1(fragmentDefinitions.get(name2)));\n }\n });\n const referencedFragments = [];\n asts.forEach(ast2 => {\n (0, _graphql.visit)(ast2, {\n FragmentSpread(node) {\n if (!referencedFragNames.has(node.name.value) && fragmentDefinitions.get(node.name.value)) {\n asts.add(nullthrows$1(fragmentDefinitions.get(node.name.value)));\n referencedFragNames.add(node.name.value);\n }\n }\n\n });\n\n if (!existingFrags.has(ast2.name.value)) {\n referencedFragments.push(ast2);\n }\n });\n return referencedFragments;\n }, \"getFragmentDependenciesForAST\");\n\n function collectVariables(schema, documentAST) {\n const variableToType = /* @__PURE__ */Object.create(null);\n documentAST.definitions.forEach(definition => {\n if (definition.kind === \"OperationDefinition\") {\n const variableDefinitions = definition.variableDefinitions;\n\n if (variableDefinitions) {\n variableDefinitions.forEach(_ref2 => {\n let {\n variable,\n type: type2\n } = _ref2;\n const inputType = (0, _graphql.typeFromAST)(schema, type2);\n\n if (inputType) {\n variableToType[variable.name.value] = inputType;\n } else if (type2.kind === _graphql.Kind.NAMED_TYPE) {\n if (type2.name.value === \"Float\") {\n variableToType[variable.name.value] = _graphql.GraphQLFloat;\n }\n }\n });\n }\n }\n });\n return variableToType;\n }\n\n __name(collectVariables, \"collectVariables\");\n\n function getOperationASTFacts(documentAST, schema) {\n const variableToType = schema ? collectVariables(schema, documentAST) : void 0;\n const operations = [];\n (0, _graphql.visit)(documentAST, {\n OperationDefinition(node) {\n operations.push(node);\n }\n\n });\n return {\n variableToType,\n operations\n };\n }\n\n __name(getOperationASTFacts, \"getOperationASTFacts\");\n\n function getOperationFacts(schema, documentString) {\n if (!documentString) {\n return;\n }\n\n try {\n const documentAST = (0, _graphql.parse)(documentString);\n return Object.assign(Object.assign({}, getOperationASTFacts(documentAST, schema)), {\n documentAST\n });\n } catch (_a) {\n return;\n }\n }\n\n __name(getOperationFacts, \"getOperationFacts\");\n\n globalThis && globalThis.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n __name(adopt, \"adopt\");\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n __name(fulfilled, \"fulfilled\");\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n __name(rejected, \"rejected\");\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n __name(step, \"step\");\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\n /*!\n * is-primitive <https://github.com/jonschlinkert/is-primitive>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n\n var isPrimitive$1 = /* @__PURE__ */__name(function isPrimitive(val) {\n if (typeof val === \"object\") {\n return val === null;\n }\n\n return typeof val !== \"function\";\n }, \"isPrimitive\");\n /*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n\n var isobject = /* @__PURE__ */__name(function isObject(val) {\n return val != null && typeof val === \"object\" && Array.isArray(val) === false;\n }, \"isObject\");\n /*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n\n var isObject$1 = isobject;\n\n function isObjectObject(o) {\n return isObject$1(o) === true && Object.prototype.toString.call(o) === \"[object Object]\";\n }\n\n __name(isObjectObject, \"isObjectObject\");\n\n var isPlainObject$1 = /* @__PURE__ */__name(function isPlainObject(o) {\n var ctor, prot;\n if (isObjectObject(o) === false) return false;\n ctor = o.constructor;\n if (typeof ctor !== \"function\") return false;\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n if (prot.hasOwnProperty(\"isPrototypeOf\") === false) {\n return false;\n }\n\n return true;\n }, \"isPlainObject\");\n /*!\n * set-value <https://github.com/jonschlinkert/set-value>\n *\n * Copyright (c) Jon Schlinkert (https://github.com/jonschlinkert).\n * Released under the MIT License.\n */\n\n\n const {\n deleteProperty\n } = Reflect;\n const isPrimitive2 = isPrimitive$1;\n const isPlainObject2 = isPlainObject$1;\n\n const isObject2 = /* @__PURE__ */__name(value => {\n return typeof value === \"object\" && value !== null || typeof value === \"function\";\n }, \"isObject\");\n\n const isUnsafeKey = /* @__PURE__ */__name(key => {\n return key === \"__proto__\" || key === \"constructor\" || key === \"prototype\";\n }, \"isUnsafeKey\");\n\n const validateKey = /* @__PURE__ */__name(key => {\n if (!isPrimitive2(key)) {\n throw new TypeError(\"Object keys must be strings or symbols\");\n }\n\n if (isUnsafeKey(key)) {\n throw new Error(`Cannot set unsafe key: \"${key}\"`);\n }\n }, \"validateKey\");\n\n const toStringKey = /* @__PURE__ */__name(input => {\n return Array.isArray(input) ? input.flat().map(String).join(\",\") : input;\n }, \"toStringKey\");\n\n const createMemoKey = /* @__PURE__ */__name((input, options) => {\n if (typeof input !== \"string\" || !options) return input;\n let key = input + \";\";\n if (options.arrays !== void 0) key += `arrays=${options.arrays};`;\n if (options.separator !== void 0) key += `separator=${options.separator};`;\n if (options.split !== void 0) key += `split=${options.split};`;\n if (options.merge !== void 0) key += `merge=${options.merge};`;\n if (options.preservePaths !== void 0) key += `preservePaths=${options.preservePaths};`;\n return key;\n }, \"createMemoKey\");\n\n const memoize = /* @__PURE__ */__name((input, options, fn) => {\n const key = toStringKey(options ? createMemoKey(input, options) : input);\n validateKey(key);\n const value = setValue.cache.get(key) || fn();\n setValue.cache.set(key, value);\n return value;\n }, \"memoize\");\n\n const splitString = /* @__PURE__ */__name(function (input) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const sep = options.separator || \".\";\n const preserve = sep === \"/\" ? false : options.preservePaths;\n\n if (typeof input === \"string\" && preserve !== false && /\\//.test(input)) {\n return [input];\n }\n\n const parts = [];\n let part2 = \"\";\n\n const push = /* @__PURE__ */__name(part3 => {\n let number;\n\n if (part3.trim() !== \"\" && Number.isInteger(number = Number(part3))) {\n parts.push(number);\n } else {\n parts.push(part3);\n }\n }, \"push\");\n\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n\n if (value === \"\\\\\") {\n part2 += input[++i];\n continue;\n }\n\n if (value === sep) {\n push(part2);\n part2 = \"\";\n continue;\n }\n\n part2 += value;\n }\n\n if (part2) {\n push(part2);\n }\n\n return parts;\n }, \"splitString\");\n\n const split = /* @__PURE__ */__name((input, options) => {\n if (options && typeof options.split === \"function\") return options.split(input);\n if (typeof input === \"symbol\") return [input];\n if (Array.isArray(input)) return input;\n return memoize(input, options, () => splitString(input, options));\n }, \"split\");\n\n const assignProp = /* @__PURE__ */__name((obj, prop2, value, options) => {\n validateKey(prop2);\n\n if (value === void 0) {\n deleteProperty(obj, prop2);\n } else if (options && options.merge) {\n const merge = options.merge === \"function\" ? options.merge : Object.assign;\n\n if (merge && isPlainObject2(obj[prop2]) && isPlainObject2(value)) {\n obj[prop2] = merge(obj[prop2], value);\n } else {\n obj[prop2] = value;\n }\n } else {\n obj[prop2] = value;\n }\n\n return obj;\n }, \"assignProp\");\n\n const setValue = /* @__PURE__ */__name((target2, path, value, options) => {\n if (!path || !isObject2(target2)) return target2;\n const keys = split(path, options);\n let obj = target2;\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const next = keys[i + 1];\n validateKey(key);\n\n if (next === void 0) {\n assignProp(obj, key, value, options);\n break;\n }\n\n if (typeof next === \"number\" && !Array.isArray(obj[key])) {\n obj = obj[key] = [];\n continue;\n }\n\n if (!isObject2(obj[key])) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n\n return target2;\n }, \"setValue\");\n\n setValue.split = split;\n setValue.cache = /* @__PURE__ */new Map();\n\n setValue.clear = () => {\n setValue.cache = /* @__PURE__ */new Map();\n };\n\n var setValue_1 = setValue;\n var __defProp$e = Object.defineProperty;\n\n var __name$e = /* @__PURE__ */__name((target2, value) => __defProp$e(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$e\");\n\n const HistoryContext = createNullableContext(\"HistoryContext\");\n _exports.H = HistoryContext;\n\n function HistoryContextProvider(props) {\n var _a;\n\n const storage = useStorageContext();\n const historyStore = (0, _react.useRef)(new HistoryStore(storage || new StorageAPI(null), props.maxHistoryLength || DEFAULT_HISTORY_LENGTH));\n const [items, setItems] = (0, _react.useState)(((_a = historyStore.current) == null ? void 0 : _a.queries) || []);\n const [isVisible, setIsVisible] = (0, _react.useState)((storage == null ? void 0 : storage.get(STORAGE_KEY$4)) === \"true\" || false);\n const addToHistory = (0, _react.useCallback)(_ref3 => {\n let {\n query,\n variables,\n headers,\n operationName\n } = _ref3;\n\n var _a2;\n\n (_a2 = historyStore.current) == null ? void 0 : _a2.updateHistory(query, variables, headers, operationName);\n setItems(historyStore.current.queries);\n }, []);\n const editLabel = (0, _react.useCallback)(_ref4 => {\n let {\n query,\n variables,\n headers,\n operationName,\n label,\n favorite\n } = _ref4;\n historyStore.current.editLabel(query, variables, headers, operationName, label, favorite);\n setItems(historyStore.current.queries);\n }, []);\n const {\n onToggle\n } = props;\n const hide = (0, _react.useCallback)(() => {\n onToggle == null ? void 0 : onToggle(false);\n storage == null ? void 0 : storage.set(STORAGE_KEY$4, JSON.stringify(false));\n setIsVisible(false);\n }, [onToggle, storage]);\n const show = (0, _react.useCallback)(() => {\n onToggle == null ? void 0 : onToggle(true);\n storage == null ? void 0 : storage.set(STORAGE_KEY$4, JSON.stringify(true));\n setIsVisible(true);\n }, [onToggle, storage]);\n const toggle = (0, _react.useCallback)(() => {\n setIsVisible(current => {\n const newValue = !current;\n onToggle == null ? void 0 : onToggle(newValue);\n storage == null ? void 0 : storage.set(STORAGE_KEY$4, JSON.stringify(newValue));\n return newValue;\n });\n }, [onToggle, storage]);\n const toggleFavorite = (0, _react.useCallback)(_ref5 => {\n let {\n query,\n variables,\n headers,\n operationName,\n label,\n favorite\n } = _ref5;\n historyStore.current.toggleFavorite(query, variables, headers, operationName, label, favorite);\n setItems(historyStore.current.queries);\n }, []);\n const value = (0, _react.useMemo)(() => ({\n addToHistory,\n editLabel,\n hide,\n isVisible,\n items,\n show,\n toggle,\n toggleFavorite\n }), [addToHistory, editLabel, hide, isVisible, items, show, toggle, toggleFavorite]);\n return /* @__PURE__ */jsx(HistoryContext.Provider, {\n value,\n children: props.children\n });\n }\n\n __name(HistoryContextProvider, \"HistoryContextProvider\");\n\n __name$e(HistoryContextProvider, \"HistoryContextProvider\");\n\n const useHistoryContext = createContextHook(HistoryContext);\n _exports.z = useHistoryContext;\n const DEFAULT_HISTORY_LENGTH = 20;\n const STORAGE_KEY$4 = \"historyPaneOpen\";\n var __defProp$d = Object.defineProperty;\n\n var __name$d = /* @__PURE__ */__name((target2, value) => __defProp$d(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$d\");\n\n function useSelectHistoryItem() {\n const {\n headerEditor,\n queryEditor,\n variableEditor\n } = useEditorContext({\n nonNull: true,\n caller: useSelectHistoryItem\n });\n return item => {\n var _a, _b, _c;\n\n queryEditor == null ? void 0 : queryEditor.setValue((_a = item.query) != null ? _a : \"\");\n variableEditor == null ? void 0 : variableEditor.setValue((_b = item.variables) != null ? _b : \"\");\n headerEditor == null ? void 0 : headerEditor.setValue((_c = item.headers) != null ? _c : \"\");\n };\n }\n\n __name(useSelectHistoryItem, \"useSelectHistoryItem\");\n\n __name$d(useSelectHistoryItem, \"useSelectHistoryItem\");\n\n var __defProp$c = Object.defineProperty;\n\n var __name$c = /* @__PURE__ */__name((target2, value) => __defProp$c(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$c\");\n\n const ExecutionContext = createNullableContext(\"ExecutionContext\");\n _exports.q = ExecutionContext;\n\n function ExecutionContextProvider(props) {\n const {\n externalFragments,\n headerEditor,\n queryEditor,\n responseEditor,\n shouldPersistHeaders,\n variableEditor,\n updateActiveTabValues\n } = useEditorContext({\n nonNull: true,\n caller: ExecutionContextProvider\n });\n const history = useHistoryContext();\n const autoCompleteLeafs = useAutoCompleteLeafs({\n caller: ExecutionContextProvider\n });\n const [isFetching, setIsFetching] = (0, _react.useState)(false);\n const [subscription, setSubscription] = (0, _react.useState)(null);\n const queryIdRef = (0, _react.useRef)(0);\n const stop = (0, _react.useCallback)(() => {\n subscription == null ? void 0 : subscription.unsubscribe();\n setIsFetching(false);\n setSubscription(null);\n }, [subscription]);\n const {\n fetcher\n } = props;\n const run = (0, _react.useCallback)(async () => {\n var _a, _b, _c;\n\n if (!queryEditor || !responseEditor) {\n return;\n }\n\n if (subscription) {\n stop();\n return;\n }\n\n const setResponse = /* @__PURE__ */__name$c(value2 => {\n responseEditor.setValue(value2);\n updateActiveTabValues({\n response: value2\n });\n }, \"setResponse\");\n\n queryIdRef.current += 1;\n const queryId = queryIdRef.current;\n let query = autoCompleteLeafs() || queryEditor.getValue();\n const variablesString = variableEditor == null ? void 0 : variableEditor.getValue();\n let variables;\n\n try {\n variables = tryParseJsonObject({\n json: variablesString,\n errorMessageParse: \"Variables are invalid JSON\",\n errorMessageType: \"Variables are not a JSON object.\"\n });\n } catch (error2) {\n setResponse(error2 instanceof Error ? error2.message : `${error2}`);\n return;\n }\n\n const headersString = headerEditor == null ? void 0 : headerEditor.getValue();\n let headers;\n\n try {\n headers = tryParseJsonObject({\n json: headersString,\n errorMessageParse: \"Headers are invalid JSON\",\n errorMessageType: \"Headers are not a JSON object.\"\n });\n } catch (error2) {\n setResponse(error2 instanceof Error ? error2.message : `${error2}`);\n return;\n }\n\n if (externalFragments) {\n const fragmentDependencies = queryEditor.documentAST ? getFragmentDependenciesForAST(queryEditor.documentAST, externalFragments) : [];\n\n if (fragmentDependencies.length > 0) {\n query += \"\\n\" + fragmentDependencies.map(node => (0, _graphql.print)(node)).join(\"\\n\");\n }\n }\n\n setResponse(\"\");\n setIsFetching(true);\n const operationName = (_b = (_a = props.operationName) != null ? _a : queryEditor.operationName) != null ? _b : void 0;\n history == null ? void 0 : history.addToHistory({\n query,\n variables: variablesString,\n headers: headersString,\n operationName\n });\n\n try {\n let fullResponse = {\n data: {}\n };\n\n const handleResponse = /* @__PURE__ */__name$c(result => {\n if (queryId !== queryIdRef.current) {\n return;\n }\n\n let maybeMultipart = Array.isArray(result) ? result : false;\n\n if (!maybeMultipart && typeof result === \"object\" && result !== null && \"hasNext\" in result) {\n maybeMultipart = [result];\n }\n\n if (maybeMultipart) {\n const payload = {\n data: fullResponse.data\n };\n const maybeErrors = [...((fullResponse == null ? void 0 : fullResponse.errors) || []), ...maybeMultipart.map(i => i.errors).flat().filter(Boolean)];\n\n if (maybeErrors.length) {\n payload.errors = maybeErrors;\n }\n\n for (const part2 of maybeMultipart) {\n const _a2 = part2,\n {\n path,\n data,\n errors: errors2\n } = _a2,\n rest = __objRest(_a2, [\"path\", \"data\", \"errors\"]);\n\n if (path) {\n if (!data) {\n throw new Error(`Expected part to contain a data property, but got ${part2}`);\n }\n\n setValue_1(payload.data, path, data, {\n merge: true\n });\n } else if (data) {\n payload.data = part2.data;\n }\n\n fullResponse = __spreadValues(__spreadValues({}, payload), rest);\n }\n\n setIsFetching(false);\n setResponse(formatResult(fullResponse));\n } else {\n const response = formatResult(result);\n setIsFetching(false);\n setResponse(response);\n }\n }, \"handleResponse\");\n\n const fetch2 = fetcher({\n query,\n variables,\n operationName\n }, {\n headers: headers != null ? headers : void 0,\n shouldPersistHeaders,\n documentAST: (_c = queryEditor.documentAST) != null ? _c : void 0\n });\n const value2 = await Promise.resolve(fetch2);\n\n if (isObservable(value2)) {\n setSubscription(value2.subscribe({\n next(result) {\n handleResponse(result);\n },\n\n error(error2) {\n setIsFetching(false);\n\n if (error2) {\n setResponse(formatError(error2));\n }\n\n setSubscription(null);\n },\n\n complete() {\n setIsFetching(false);\n setSubscription(null);\n }\n\n }));\n } else if (isAsyncIterable(value2)) {\n setSubscription({\n unsubscribe: () => {\n var _a2, _b2;\n\n return (_b2 = (_a2 = value2[Symbol.asyncIterator]()).return) == null ? void 0 : _b2.call(_a2);\n }\n });\n\n try {\n for await (const result of value2) {\n handleResponse(result);\n }\n\n setIsFetching(false);\n setSubscription(null);\n } catch (error2) {\n setIsFetching(false);\n setResponse(formatError(error2));\n setSubscription(null);\n }\n } else {\n handleResponse(value2);\n }\n } catch (error2) {\n setIsFetching(false);\n setResponse(formatError(error2));\n setSubscription(null);\n }\n }, [autoCompleteLeafs, externalFragments, fetcher, headerEditor, history, props.operationName, queryEditor, responseEditor, shouldPersistHeaders, stop, subscription, updateActiveTabValues, variableEditor]);\n const value = (0, _react.useMemo)(() => {\n var _a;\n\n return {\n isFetching,\n operationName: (_a = props.operationName) != null ? _a : null,\n run,\n stop\n };\n }, [isFetching, props.operationName, run, stop]);\n return /* @__PURE__ */jsx(ExecutionContext.Provider, {\n value,\n children: props.children\n });\n }\n\n __name(ExecutionContextProvider, \"ExecutionContextProvider\");\n\n __name$c(ExecutionContextProvider, \"ExecutionContextProvider\");\n\n const useExecutionContext = createContextHook(ExecutionContext);\n _exports.s = useExecutionContext;\n\n function tryParseJsonObject(_ref6) {\n let {\n json,\n errorMessageParse,\n errorMessageType\n } = _ref6;\n let parsed = void 0;\n\n try {\n parsed = json && json.trim() !== \"\" ? JSON.parse(json) : void 0;\n } catch (error2) {\n throw new Error(`${errorMessageParse}: ${error2 instanceof Error ? error2.message : error2}.`);\n }\n\n const isObject3 = typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed);\n\n if (parsed !== void 0 && !isObject3) {\n throw new Error(errorMessageType);\n }\n\n return parsed;\n }\n\n __name(tryParseJsonObject, \"tryParseJsonObject\");\n\n __name$c(tryParseJsonObject, \"tryParseJsonObject\");\n\n var toggleSelection = /* @__PURE__ */__name(function () {\n var selection = document.getSelection();\n\n if (!selection.rangeCount) {\n return function () {};\n }\n\n var active = document.activeElement;\n var ranges = [];\n\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) {\n case \"INPUT\":\n case \"TEXTAREA\":\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === \"Caret\" && selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function (range2) {\n selection.addRange(range2);\n });\n }\n\n active && active.focus();\n };\n }, \"toggleSelection\");\n\n var deselectCurrent = toggleSelection;\n var clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n };\n var defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\n function format2(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"\\u2318\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n }\n\n __name(format2, \"format\");\n\n function copy(text3, options) {\n var debug,\n message,\n reselectPrevious,\n range2,\n selection,\n mark,\n success = false;\n\n if (!options) {\n options = {};\n }\n\n debug = options.debug || false;\n\n try {\n reselectPrevious = deselectCurrent();\n range2 = document.createRange();\n selection = document.getSelection();\n mark = document.createElement(\"span\");\n mark.textContent = text3;\n mark.style.all = \"unset\";\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n mark.style.whiteSpace = \"pre\";\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function (e) {\n e.stopPropagation();\n\n if (options.format) {\n e.preventDefault();\n\n if (typeof e.clipboardData === \"undefined\") {\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format3 = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"];\n window.clipboardData.setData(format3, text3);\n } else {\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text3);\n }\n }\n\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n document.body.appendChild(mark);\n range2.selectNodeContents(mark);\n selection.addRange(range2);\n var successful = document.execCommand(\"copy\");\n\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n\n try {\n window.clipboardData.setData(options.format || \"text\", text3);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err2) {\n debug && console.error(\"unable to copy using clipboardData: \", err2);\n debug && console.error(\"falling back to prompt\");\n message = format2(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text3);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range2);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n\n reselectPrevious();\n }\n\n return success;\n }\n\n __name(copy, \"copy\");\n\n var copyToClipboard = copy;\n var __defProp$b = Object.defineProperty;\n\n var __name$b = /* @__PURE__ */__name((target2, value) => __defProp$b(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$b\");\n\n const SchemaContext = createNullableContext(\"SchemaContext\");\n _exports.S = SchemaContext;\n\n function SchemaContextProvider(props) {\n const {\n initialHeaders,\n headerEditor\n } = useEditorContext({\n nonNull: true,\n caller: SchemaContextProvider\n });\n const [schema, setSchema] = (0, _react.useState)();\n const [isFetching, setIsFetching] = (0, _react.useState)(false);\n const [fetchError, setFetchError] = (0, _react.useState)(null);\n const counterRef = (0, _react.useRef)(0);\n (0, _react.useEffect)(() => {\n setSchema((0, _graphql.isSchema)(props.schema) || props.schema === null || props.schema === void 0 ? props.schema : void 0);\n counterRef.current++;\n }, [props.schema]);\n const headersRef = (0, _react.useRef)(initialHeaders);\n (0, _react.useEffect)(() => {\n if (headerEditor) {\n headersRef.current = headerEditor.getValue();\n }\n });\n const {\n introspectionQuery,\n introspectionQueryName,\n introspectionQuerySansSubscriptions\n } = useIntrospectionQuery({\n inputValueDeprecation: props.inputValueDeprecation,\n introspectionQueryName: props.introspectionQueryName,\n schemaDescription: props.schemaDescription\n });\n const {\n fetcher,\n onSchemaChange\n } = props;\n const introspect = (0, _react.useCallback)(() => {\n if ((0, _graphql.isSchema)(props.schema) || props.schema === null) {\n return;\n }\n\n const counter = ++counterRef.current;\n setSchema(void 0);\n const maybeIntrospectionData = props.schema;\n\n async function fetchIntrospectionData() {\n if (maybeIntrospectionData) {\n return maybeIntrospectionData;\n }\n\n const parsedHeaders = parseHeaderString(headersRef.current);\n\n if (!parsedHeaders.isValidJSON) {\n setFetchError(\"Introspection failed as headers are invalid.\");\n return;\n }\n\n const fetcherOpts = parsedHeaders.headers ? {\n headers: parsedHeaders.headers\n } : {};\n const fetch2 = fetcherReturnToPromise(fetcher({\n query: introspectionQuery,\n operationName: introspectionQueryName\n }, fetcherOpts));\n\n if (!isPromise(fetch2)) {\n setFetchError(\"Fetcher did not return a Promise for introspection.\");\n return;\n }\n\n setIsFetching(true);\n let result = await fetch2;\n\n if (typeof result !== \"object\" || result === null || !(\"data\" in result)) {\n const fetch22 = fetcherReturnToPromise(fetcher({\n query: introspectionQuerySansSubscriptions,\n operationName: introspectionQueryName\n }, fetcherOpts));\n\n if (!isPromise(fetch22)) {\n throw new Error(\"Fetcher did not return a Promise for introspection.\");\n }\n\n result = await fetch22;\n }\n\n setIsFetching(false);\n\n if ((result == null ? void 0 : result.data) && \"__schema\" in result.data) {\n return result.data;\n }\n\n const responseString = typeof result === \"string\" ? result : formatResult(result);\n setFetchError(responseString);\n }\n\n __name(fetchIntrospectionData, \"fetchIntrospectionData\");\n\n __name$b(fetchIntrospectionData, \"fetchIntrospectionData\");\n\n fetchIntrospectionData().then(introspectionData => {\n if (counter !== counterRef.current || !introspectionData) {\n return;\n }\n\n try {\n const newSchema = (0, _graphql.buildClientSchema)(introspectionData);\n setSchema(newSchema);\n onSchemaChange == null ? void 0 : onSchemaChange(newSchema);\n } catch (error2) {\n setFetchError(formatError(error2));\n }\n }).catch(error2 => {\n if (counter !== counterRef.current) {\n return;\n }\n\n setFetchError(formatError(error2));\n setIsFetching(false);\n });\n }, [fetcher, introspectionQueryName, introspectionQuery, introspectionQuerySansSubscriptions, onSchemaChange, props.schema]);\n (0, _react.useEffect)(() => {\n introspect();\n }, [introspect]);\n (0, _react.useEffect)(() => {\n function triggerIntrospection(event) {\n if (event.keyCode === 82 && event.shiftKey && event.ctrlKey) {\n introspect();\n }\n }\n\n __name(triggerIntrospection, \"triggerIntrospection\");\n\n __name$b(triggerIntrospection, \"triggerIntrospection\");\n\n window.addEventListener(\"keydown\", triggerIntrospection);\n return () => window.removeEventListener(\"keydown\", triggerIntrospection);\n });\n const validationErrors = (0, _react.useMemo)(() => {\n if (!schema || props.dangerouslyAssumeSchemaIsValid) {\n return [];\n }\n\n return (0, _graphql.validateSchema)(schema);\n }, [schema, props.dangerouslyAssumeSchemaIsValid]);\n const value = (0, _react.useMemo)(() => ({\n fetchError,\n introspect,\n isFetching,\n schema,\n validationErrors\n }), [fetchError, introspect, isFetching, schema, validationErrors]);\n return /* @__PURE__ */jsx(SchemaContext.Provider, {\n value,\n children: props.children\n });\n }\n\n __name(SchemaContextProvider, \"SchemaContextProvider\");\n\n __name$b(SchemaContextProvider, \"SchemaContextProvider\");\n\n const useSchemaContext = createContextHook(SchemaContext);\n _exports.D = useSchemaContext;\n\n function useIntrospectionQuery(_ref7) {\n let {\n inputValueDeprecation,\n introspectionQueryName,\n schemaDescription\n } = _ref7;\n return (0, _react.useMemo)(() => {\n const queryName = introspectionQueryName || \"IntrospectionQuery\";\n let query = (0, _graphql.getIntrospectionQuery)({\n inputValueDeprecation,\n schemaDescription\n });\n\n if (introspectionQueryName) {\n query = query.replace(\"query IntrospectionQuery\", `query ${queryName}`);\n }\n\n const querySansSubscriptions = query.replace(\"subscriptionType { name }\", \"\");\n return {\n introspectionQueryName: queryName,\n introspectionQuery: query,\n introspectionQuerySansSubscriptions: querySansSubscriptions\n };\n }, [inputValueDeprecation, introspectionQueryName, schemaDescription]);\n }\n\n __name(useIntrospectionQuery, \"useIntrospectionQuery\");\n\n __name$b(useIntrospectionQuery, \"useIntrospectionQuery\");\n\n function parseHeaderString(headersString) {\n let headers = null;\n let isValidJSON = true;\n\n try {\n if (headersString) {\n headers = JSON.parse(headersString);\n }\n } catch (err) {\n isValidJSON = false;\n }\n\n return {\n headers,\n isValidJSON\n };\n }\n\n __name(parseHeaderString, \"parseHeaderString\");\n\n __name$b(parseHeaderString, \"parseHeaderString\");\n\n var __defProp$a = Object.defineProperty;\n\n var __name$a = /* @__PURE__ */__name((target2, value) => __defProp$a(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$a\");\n\n const initialNavStackItem = {\n name: \"Schema\",\n title: \"Documentation Explorer\"\n };\n const ExplorerContext = createNullableContext(\"ExplorerContext\");\n _exports.v = ExplorerContext;\n\n function ExplorerContextProvider(props) {\n var _a, _b;\n\n const {\n isFetching\n } = useSchemaContext({\n nonNull: true,\n caller: ExplorerContextProvider\n });\n const storage = useStorageContext();\n const [isVisible, setIsVisible] = (0, _react.useState)((_b = (_a = props.isVisible) != null ? _a : (storage == null ? void 0 : storage.get(STORAGE_KEY$3)) === \"true\") != null ? _b : false);\n const [navStack, setNavStack] = (0, _react.useState)([initialNavStackItem]);\n const {\n onToggleVisibility\n } = props;\n const isInitialRender = (0, _react.useRef)(true);\n (0, _react.useEffect)(() => {\n if (isInitialRender.current) {\n isInitialRender.current = false;\n } else if (props.isVisible !== void 0) {\n setIsVisible(props.isVisible);\n }\n }, [props.isVisible]);\n const hide = (0, _react.useCallback)(() => {\n onToggleVisibility == null ? void 0 : onToggleVisibility(false);\n storage == null ? void 0 : storage.set(STORAGE_KEY$3, \"false\");\n setIsVisible(false);\n }, [onToggleVisibility, storage]);\n const push = (0, _react.useCallback)(item => {\n setNavStack(currentState => {\n const lastItem = currentState[currentState.length - 1];\n return lastItem.def === item.def ? currentState : [...currentState, item];\n });\n }, []);\n const pop = (0, _react.useCallback)(() => {\n setNavStack(currentState => currentState.length > 1 ? currentState.slice(0, -1) : currentState);\n }, []);\n const reset = (0, _react.useCallback)(() => {\n setNavStack(currentState => currentState.length === 1 ? currentState : [initialNavStackItem]);\n }, []);\n const show = (0, _react.useCallback)(() => {\n onToggleVisibility == null ? void 0 : onToggleVisibility(true);\n storage == null ? void 0 : storage.set(STORAGE_KEY$3, \"true\");\n setIsVisible(true);\n }, [onToggleVisibility, storage]);\n const showSearch = (0, _react.useCallback)(search => {\n setNavStack(currentState => {\n const lastItem = currentState[currentState.length - 1];\n const allButLastItem = currentState.slice(0, -1);\n return [...allButLastItem, __spreadProps(__spreadValues({}, lastItem), {\n search\n })];\n });\n }, []);\n (0, _react.useEffect)(() => {\n if (isFetching) {\n reset();\n }\n }, [isFetching, reset]);\n const value = (0, _react.useMemo)(() => ({\n explorerNavStack: navStack,\n hide,\n isVisible,\n push,\n pop,\n reset,\n show,\n showSearch\n }), [hide, isVisible, navStack, push, pop, reset, show, showSearch]);\n return /* @__PURE__ */jsx(ExplorerContext.Provider, {\n value,\n children: props.children\n });\n }\n\n __name(ExplorerContextProvider, \"ExplorerContextProvider\");\n\n __name$a(ExplorerContextProvider, \"ExplorerContextProvider\");\n\n const useExplorerContext = createContextHook(ExplorerContext);\n _exports.x = useExplorerContext;\n const STORAGE_KEY$3 = \"docExplorerOpen\";\n var __defProp$9 = Object.defineProperty;\n\n var __name$9 = /* @__PURE__ */__name((target2, value) => __defProp$9(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$9\");\n\n function debounce(duration, fn) {\n let timeout;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (timeout) {\n window.clearTimeout(timeout);\n }\n\n timeout = window.setTimeout(() => {\n timeout = null;\n fn(...args);\n }, duration);\n };\n }\n\n __name(debounce, \"debounce\");\n\n __name$9(debounce, \"debounce\");\n\n var __defProp$8 = Object.defineProperty;\n\n var __name$8 = /* @__PURE__ */__name((target2, value) => __defProp$8(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$8\");\n\n function useSynchronizeValue(editor, value) {\n (0, _react.useEffect)(() => {\n if (editor && typeof value === \"string\" && value !== editor.getValue()) {\n editor.setValue(value);\n }\n }, [editor, value]);\n }\n\n __name(useSynchronizeValue, \"useSynchronizeValue\");\n\n __name$8(useSynchronizeValue, \"useSynchronizeValue\");\n\n function useSynchronizeOption(editor, option, value) {\n (0, _react.useEffect)(() => {\n if (editor) {\n editor.setOption(option, value);\n }\n }, [editor, option, value]);\n }\n\n __name(useSynchronizeOption, \"useSynchronizeOption\");\n\n __name$8(useSynchronizeOption, \"useSynchronizeOption\");\n\n function useChangeHandler(editor, callback, storageKey, tabProperty, caller) {\n const {\n updateActiveTabValues\n } = useEditorContext({\n nonNull: true,\n caller\n });\n const storage = useStorageContext();\n (0, _react.useEffect)(() => {\n if (!editor) {\n return;\n }\n\n const store = debounce(500, value => {\n if (!storage || storageKey === null) {\n return;\n }\n\n storage.set(storageKey, value);\n });\n const updateTab = debounce(100, value => {\n updateActiveTabValues({\n [tabProperty]: value\n });\n });\n\n const handleChange = /* @__PURE__ */__name$8((editorInstance, changeObj) => {\n if (!changeObj) {\n return;\n }\n\n const newValue = editorInstance.getValue();\n store(newValue);\n updateTab(newValue);\n callback == null ? void 0 : callback(newValue);\n }, \"handleChange\");\n\n editor.on(\"change\", handleChange);\n return () => editor.off(\"change\", handleChange);\n }, [callback, editor, storage, storageKey, tabProperty, updateActiveTabValues]);\n }\n\n __name(useChangeHandler, \"useChangeHandler\");\n\n __name$8(useChangeHandler, \"useChangeHandler\");\n\n function useCompletion(editor, caller) {\n const {\n schema\n } = useSchemaContext({\n nonNull: true,\n caller\n });\n const explorer = useExplorerContext();\n (0, _react.useEffect)(() => {\n if (!editor) {\n return;\n }\n\n const handleCompletion = /* @__PURE__ */__name$8((instance, changeObj) => {\n onHasCompletion(instance, changeObj, schema, explorer);\n }, \"handleCompletion\");\n\n editor.on(\"hasCompletion\", handleCompletion);\n return () => editor.off(\"hasCompletion\", handleCompletion);\n }, [editor, explorer, schema]);\n }\n\n __name(useCompletion, \"useCompletion\");\n\n __name$8(useCompletion, \"useCompletion\");\n\n function useKeyMap(editor, keys, callback) {\n (0, _react.useEffect)(() => {\n if (!editor) {\n return;\n }\n\n for (const key of keys) {\n editor.removeKeyMap(key);\n }\n\n if (callback) {\n const keyMap = {};\n\n for (const key of keys) {\n keyMap[key] = () => callback();\n }\n\n editor.addKeyMap(keyMap);\n }\n }, [editor, keys, callback]);\n }\n\n __name(useKeyMap, \"useKeyMap\");\n\n __name$8(useKeyMap, \"useKeyMap\");\n\n function useCopyQuery() {\n let {\n caller,\n onCopyQuery\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n queryEditor\n } = useEditorContext({\n nonNull: true,\n caller: caller || useCopyQuery\n });\n return (0, _react.useCallback)(() => {\n if (!queryEditor) {\n return;\n }\n\n const query = queryEditor.getValue();\n copyToClipboard(query);\n onCopyQuery == null ? void 0 : onCopyQuery(query);\n }, [queryEditor, onCopyQuery]);\n }\n\n __name(useCopyQuery, \"useCopyQuery\");\n\n __name$8(useCopyQuery, \"useCopyQuery\");\n\n function useMergeQuery() {\n let {\n caller\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n queryEditor\n } = useEditorContext({\n nonNull: true,\n caller: caller || useMergeQuery\n });\n const {\n schema\n } = useSchemaContext({\n nonNull: true,\n caller: useMergeQuery\n });\n return (0, _react.useCallback)(() => {\n const documentAST = queryEditor == null ? void 0 : queryEditor.documentAST;\n const query = queryEditor == null ? void 0 : queryEditor.getValue();\n\n if (!documentAST || !query) {\n return;\n }\n\n queryEditor.setValue((0, _graphql.print)(mergeAst(documentAST, schema)));\n }, [queryEditor, schema]);\n }\n\n __name(useMergeQuery, \"useMergeQuery\");\n\n __name$8(useMergeQuery, \"useMergeQuery\");\n\n function usePrettifyEditors() {\n let {\n caller\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n queryEditor,\n headerEditor,\n variableEditor\n } = useEditorContext({\n nonNull: true,\n caller: caller || usePrettifyEditors\n });\n return (0, _react.useCallback)(() => {\n if (variableEditor) {\n const variableEditorContent = variableEditor.getValue();\n\n try {\n const prettifiedVariableEditorContent = JSON.stringify(JSON.parse(variableEditorContent), null, 2);\n\n if (prettifiedVariableEditorContent !== variableEditorContent) {\n variableEditor.setValue(prettifiedVariableEditorContent);\n }\n } catch {}\n }\n\n if (headerEditor) {\n const headerEditorContent = headerEditor.getValue();\n\n try {\n const prettifiedHeaderEditorContent = JSON.stringify(JSON.parse(headerEditorContent), null, 2);\n\n if (prettifiedHeaderEditorContent !== headerEditorContent) {\n headerEditor.setValue(prettifiedHeaderEditorContent);\n }\n } catch {}\n }\n\n if (queryEditor) {\n const editorContent = queryEditor.getValue();\n const prettifiedEditorContent = (0, _graphql.print)((0, _graphql.parse)(editorContent));\n\n if (prettifiedEditorContent !== editorContent) {\n queryEditor.setValue(prettifiedEditorContent);\n }\n }\n }, [queryEditor, variableEditor, headerEditor]);\n }\n\n __name(usePrettifyEditors, \"usePrettifyEditors\");\n\n __name$8(usePrettifyEditors, \"usePrettifyEditors\");\n\n function useAutoCompleteLeafs() {\n let {\n getDefaultFieldNames,\n caller\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n schema\n } = useSchemaContext({\n nonNull: true,\n caller: caller || useAutoCompleteLeafs\n });\n const {\n queryEditor\n } = useEditorContext({\n nonNull: true,\n caller: caller || useAutoCompleteLeafs\n });\n return (0, _react.useCallback)(() => {\n if (!queryEditor) {\n return;\n }\n\n const query = queryEditor.getValue();\n const {\n insertions,\n result\n } = fillLeafs(schema, query, getDefaultFieldNames);\n\n if (insertions && insertions.length > 0) {\n queryEditor.operation(() => {\n const cursor = queryEditor.getCursor();\n const cursorIndex = queryEditor.indexFromPos(cursor);\n queryEditor.setValue(result || \"\");\n let added = 0;\n const markers = insertions.map(_ref8 => {\n let {\n index,\n string\n } = _ref8;\n return queryEditor.markText(queryEditor.posFromIndex(index + added), queryEditor.posFromIndex(index + (added += string.length)), {\n className: \"autoInsertedLeaf\",\n clearOnEnter: true,\n title: \"Automatically added leaf fields\"\n });\n });\n setTimeout(() => markers.forEach(marker2 => marker2.clear()), 7e3);\n let newCursorIndex = cursorIndex;\n insertions.forEach(_ref9 => {\n let {\n index,\n string\n } = _ref9;\n\n if (index < cursorIndex) {\n newCursorIndex += string.length;\n }\n });\n queryEditor.setCursor(queryEditor.posFromIndex(newCursorIndex));\n });\n }\n\n return result;\n }, [getDefaultFieldNames, queryEditor, schema]);\n }\n\n __name(useAutoCompleteLeafs, \"useAutoCompleteLeafs\");\n\n __name$8(useAutoCompleteLeafs, \"useAutoCompleteLeafs\");\n\n var __defProp$7 = Object.defineProperty;\n\n var __name$7 = /* @__PURE__ */__name((target2, value) => __defProp$7(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$7\");\n\n function useHeaderEditor() {\n let {\n editorTheme = DEFAULT_EDITOR_THEME,\n keyMap = DEFAULT_KEY_MAP,\n onEdit,\n readOnly = false\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n initialHeaders,\n headerEditor,\n setHeaderEditor,\n shouldPersistHeaders\n } = useEditorContext({\n nonNull: true,\n caller: useHeaderEditor\n });\n const executionContext = useExecutionContext();\n const merge = useMergeQuery({\n caller: useHeaderEditor\n });\n const prettify = usePrettifyEditors({\n caller: useHeaderEditor\n });\n const ref = (0, _react.useRef)(null);\n (0, _react.useEffect)(() => {\n let isActive = true;\n importCodeMirror([Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./javascript.es.js */ \"../../graphiql-react/dist/javascript.es.js\", 7)).then(function (n2) {\n return n2.j;\n })]).then(CodeMirror => {\n if (!isActive) {\n return;\n }\n\n const container = ref.current;\n\n if (!container) {\n return;\n }\n\n const newEditor = CodeMirror(container, {\n value: initialHeaders,\n lineNumbers: true,\n tabSize: 2,\n mode: {\n name: \"javascript\",\n json: true\n },\n theme: editorTheme,\n autoCloseBrackets: true,\n matchBrackets: true,\n showCursorWhenSelecting: true,\n readOnly: readOnly ? \"nocursor\" : false,\n foldGutter: true,\n gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n extraKeys: commonKeys\n });\n newEditor.addKeyMap({\n \"Cmd-Space\"() {\n newEditor.showHint({\n completeSingle: false,\n container\n });\n },\n\n \"Ctrl-Space\"() {\n newEditor.showHint({\n completeSingle: false,\n container\n });\n },\n\n \"Alt-Space\"() {\n newEditor.showHint({\n completeSingle: false,\n container\n });\n },\n\n \"Shift-Space\"() {\n newEditor.showHint({\n completeSingle: false,\n container\n });\n }\n\n });\n newEditor.on(\"keyup\", (editorInstance, event) => {\n const code3 = event.keyCode;\n\n if (code3 >= 65 && code3 <= 90 || !event.shiftKey && code3 >= 48 && code3 <= 57 || event.shiftKey && code3 === 189 || event.shiftKey && code3 === 222) {\n editorInstance.execCommand(\"autocomplete\");\n }\n });\n setHeaderEditor(newEditor);\n });\n return () => {\n isActive = false;\n };\n }, [editorTheme, initialHeaders, readOnly, setHeaderEditor]);\n useSynchronizeOption(headerEditor, \"keyMap\", keyMap);\n useChangeHandler(headerEditor, onEdit, shouldPersistHeaders ? STORAGE_KEY$2 : null, \"headers\", useHeaderEditor);\n useCompletion(headerEditor, useHeaderEditor);\n useKeyMap(headerEditor, [\"Cmd-Enter\", \"Ctrl-Enter\"], executionContext == null ? void 0 : executionContext.run);\n useKeyMap(headerEditor, [\"Shift-Ctrl-P\"], prettify);\n useKeyMap(headerEditor, [\"Shift-Ctrl-M\"], merge);\n return ref;\n }\n\n __name(useHeaderEditor, \"useHeaderEditor\");\n\n __name$7(useHeaderEditor, \"useHeaderEditor\");\n\n const STORAGE_KEY$2 = \"headers\";\n var __defProp$6 = Object.defineProperty;\n\n var __name$6 = /* @__PURE__ */__name((target2, value) => __defProp$6(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$6\");\n\n const invalidCharacters = Array.from({\n length: 11\n }, (_, i) => {\n return String.fromCharCode(8192 + i);\n }).concat([\"\\u2028\", \"\\u2029\", \"\\u202F\", \"\\xA0\"]);\n const sanitizeRegex = new RegExp(\"[\" + invalidCharacters.join(\"\") + \"]\", \"g\");\n\n function normalizeWhitespace(line) {\n return line.replace(sanitizeRegex, \" \");\n }\n\n __name(normalizeWhitespace, \"normalizeWhitespace\");\n\n __name$6(normalizeWhitespace, \"normalizeWhitespace\");\n\n var __defProp$5 = Object.defineProperty;\n\n var __name$5 = /* @__PURE__ */__name((target2, value) => __defProp$5(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$5\");\n\n function useQueryEditor() {\n let {\n editorTheme = DEFAULT_EDITOR_THEME,\n keyMap = DEFAULT_KEY_MAP,\n onClickReference,\n onCopyQuery,\n onEdit,\n readOnly = false\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n schema\n } = useSchemaContext({\n nonNull: true,\n caller: useQueryEditor\n });\n const {\n externalFragments,\n initialQuery,\n queryEditor,\n setOperationName,\n setQueryEditor,\n validationRules,\n variableEditor,\n updateActiveTabValues\n } = useEditorContext({\n nonNull: true,\n caller: useQueryEditor\n });\n const executionContext = useExecutionContext();\n const storage = useStorageContext();\n const explorer = useExplorerContext();\n const copy2 = useCopyQuery({\n caller: useQueryEditor,\n onCopyQuery\n });\n const merge = useMergeQuery({\n caller: useQueryEditor\n });\n const prettify = usePrettifyEditors({\n caller: useQueryEditor\n });\n const ref = (0, _react.useRef)(null);\n const codeMirrorRef = (0, _react.useRef)();\n const onClickReferenceRef = (0, _react.useRef)(() => {});\n (0, _react.useEffect)(() => {\n onClickReferenceRef.current = reference3 => {\n if (!explorer) {\n return;\n }\n\n explorer.show();\n\n if (reference3 && reference3.kind === \"Type\") {\n explorer.push({\n name: reference3.type.name,\n def: reference3.type\n });\n } else if (reference3.kind === \"Field\") {\n explorer.push({\n name: reference3.field.name,\n def: reference3.field\n });\n } else if (reference3.kind === \"Argument\" && reference3.field) {\n explorer.push({\n name: reference3.field.name,\n def: reference3.field\n });\n } else if (reference3.kind === \"EnumValue\" && reference3.type) {\n explorer.push({\n name: reference3.type.name,\n def: reference3.type\n });\n }\n\n onClickReference == null ? void 0 : onClickReference(reference3);\n };\n }, [explorer, onClickReference]);\n (0, _react.useEffect)(() => {\n let isActive = true;\n importCodeMirror([Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./comment.es.js */ \"../../graphiql-react/dist/comment.es.js\", 7)).then(function (n2) {\n return n2.c;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./search.es.js */ \"../../graphiql-react/dist/search.es.js\", 7)).then(function (n2) {\n return n2.s;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./hint.es.js */ \"../../graphiql-react/dist/hint.es.js\", 7)), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./lint.es.js */ \"../../graphiql-react/dist/lint.es.js\", 7)), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./info.es.js */ \"../../graphiql-react/dist/info.es.js\", 7)), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./jump.es.js */ \"../../graphiql-react/dist/jump.es.js\", 7)), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./mode.es.js */ \"../../graphiql-react/dist/mode.es.js\", 7))]).then(CodeMirror => {\n if (!isActive) {\n return;\n }\n\n codeMirrorRef.current = CodeMirror;\n const container = ref.current;\n\n if (!container) {\n return;\n }\n\n const newEditor = CodeMirror(container, {\n value: initialQuery,\n lineNumbers: true,\n tabSize: 2,\n foldGutter: true,\n mode: \"graphql\",\n theme: editorTheme,\n autoCloseBrackets: true,\n matchBrackets: true,\n showCursorWhenSelecting: true,\n readOnly: readOnly ? \"nocursor\" : false,\n lint: {\n schema: void 0,\n validationRules: null,\n externalFragments: void 0\n },\n hintOptions: {\n schema: void 0,\n closeOnUnfocus: false,\n completeSingle: false,\n container,\n externalFragments: void 0\n },\n info: {\n schema: void 0,\n renderDescription: text3 => markdown.render(text3),\n onClick: reference3 => {\n onClickReferenceRef.current(reference3);\n }\n },\n jump: {\n schema: void 0,\n onClick: reference3 => {\n onClickReferenceRef.current(reference3);\n }\n },\n gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n extraKeys: __spreadProps(__spreadValues({}, commonKeys), {\n \"Cmd-S\"() {},\n\n \"Ctrl-S\"() {}\n\n })\n });\n newEditor.addKeyMap({\n \"Cmd-Space\"() {\n newEditor.showHint({\n completeSingle: true,\n container\n });\n },\n\n \"Ctrl-Space\"() {\n newEditor.showHint({\n completeSingle: true,\n container\n });\n },\n\n \"Alt-Space\"() {\n newEditor.showHint({\n completeSingle: true,\n container\n });\n },\n\n \"Shift-Space\"() {\n newEditor.showHint({\n completeSingle: true,\n container\n });\n },\n\n \"Shift-Alt-Space\"() {\n newEditor.showHint({\n completeSingle: true,\n container\n });\n }\n\n });\n newEditor.on(\"keyup\", (editorInstance, event) => {\n if (AUTO_COMPLETE_AFTER_KEY.test(event.key)) {\n editorInstance.execCommand(\"autocomplete\");\n }\n });\n newEditor.on(\"beforeChange\", (editorInstance, change) => {\n var _a;\n\n if (change.origin === \"paste\") {\n const text3 = change.text.map(normalizeWhitespace);\n (_a = change.update) == null ? void 0 : _a.call(change, change.from, change.to, text3);\n }\n });\n newEditor.documentAST = null;\n newEditor.operationName = null;\n newEditor.operations = null;\n newEditor.variableToType = null;\n setQueryEditor(newEditor);\n });\n return () => {\n isActive = false;\n };\n }, [editorTheme, initialQuery, readOnly, setQueryEditor]);\n useSynchronizeOption(queryEditor, \"keyMap\", keyMap);\n (0, _react.useEffect)(() => {\n if (!queryEditor) {\n return;\n }\n\n function getAndUpdateOperationFacts(editorInstance) {\n var _a, _b, _c, _d, _e;\n\n const operationFacts = getOperationFacts(schema, editorInstance.getValue());\n const operationName = getSelectedOperationName((_a = editorInstance.operations) != null ? _a : void 0, (_b = editorInstance.operationName) != null ? _b : void 0, operationFacts == null ? void 0 : operationFacts.operations);\n editorInstance.documentAST = (_c = operationFacts == null ? void 0 : operationFacts.documentAST) != null ? _c : null;\n editorInstance.operationName = operationName != null ? operationName : null;\n editorInstance.operations = (_d = operationFacts == null ? void 0 : operationFacts.operations) != null ? _d : null;\n\n if (variableEditor) {\n variableEditor.state.lint.linterOptions.variableToType = operationFacts == null ? void 0 : operationFacts.variableToType;\n variableEditor.options.lint.variableToType = operationFacts == null ? void 0 : operationFacts.variableToType;\n variableEditor.options.hintOptions.variableToType = operationFacts == null ? void 0 : operationFacts.variableToType;\n (_e = codeMirrorRef.current) == null ? void 0 : _e.signal(variableEditor, \"change\", variableEditor);\n }\n\n return operationFacts ? __spreadProps(__spreadValues({}, operationFacts), {\n operationName\n }) : null;\n }\n\n __name(getAndUpdateOperationFacts, \"getAndUpdateOperationFacts\");\n\n __name$5(getAndUpdateOperationFacts, \"getAndUpdateOperationFacts\");\n\n const handleChange = debounce(100, editorInstance => {\n var _a;\n\n const query = editorInstance.getValue();\n storage == null ? void 0 : storage.set(STORAGE_KEY_QUERY, query);\n const currentOperationName = editorInstance.operationName;\n const operationFacts = getAndUpdateOperationFacts(editorInstance);\n\n if ((operationFacts == null ? void 0 : operationFacts.operationName) !== void 0) {\n storage == null ? void 0 : storage.set(STORAGE_KEY_OPERATION_NAME, operationFacts.operationName);\n }\n\n onEdit == null ? void 0 : onEdit(query, operationFacts == null ? void 0 : operationFacts.documentAST);\n\n if ((operationFacts == null ? void 0 : operationFacts.operationName) && currentOperationName !== operationFacts.operationName) {\n setOperationName(operationFacts.operationName);\n }\n\n updateActiveTabValues({\n query,\n operationName: (_a = operationFacts == null ? void 0 : operationFacts.operationName) != null ? _a : null\n });\n });\n getAndUpdateOperationFacts(queryEditor);\n queryEditor.on(\"change\", handleChange);\n return () => queryEditor.off(\"change\", handleChange);\n }, [onEdit, queryEditor, schema, setOperationName, storage, variableEditor, updateActiveTabValues]);\n useSynchronizeSchema(queryEditor, schema != null ? schema : null, codeMirrorRef);\n useSynchronizeValidationRules(queryEditor, validationRules != null ? validationRules : null, codeMirrorRef);\n useSynchronizeExternalFragments(queryEditor, externalFragments, codeMirrorRef);\n useCompletion(queryEditor, useQueryEditor);\n const run = executionContext == null ? void 0 : executionContext.run;\n const runAtCursor = (0, _react.useCallback)(() => {\n var _a;\n\n if (!run || !queryEditor || !queryEditor.operations || !queryEditor.hasFocus()) {\n run == null ? void 0 : run();\n return;\n }\n\n const cursorIndex = queryEditor.indexFromPos(queryEditor.getCursor());\n let operationName;\n\n for (const operation of queryEditor.operations) {\n if (operation.loc && operation.loc.start <= cursorIndex && operation.loc.end >= cursorIndex) {\n operationName = (_a = operation.name) == null ? void 0 : _a.value;\n }\n }\n\n if (operationName && operationName !== queryEditor.operationName) {\n setOperationName(operationName);\n }\n\n run();\n }, [queryEditor, run, setOperationName]);\n useKeyMap(queryEditor, [\"Cmd-Enter\", \"Ctrl-Enter\"], runAtCursor);\n useKeyMap(queryEditor, [\"Shift-Ctrl-C\"], copy2);\n useKeyMap(queryEditor, [\"Shift-Ctrl-P\", \"Shift-Ctrl-F\"], prettify);\n useKeyMap(queryEditor, [\"Shift-Ctrl-M\"], merge);\n return ref;\n }\n\n __name(useQueryEditor, \"useQueryEditor\");\n\n __name$5(useQueryEditor, \"useQueryEditor\");\n\n function useSynchronizeSchema(editor, schema, codeMirrorRef) {\n (0, _react.useEffect)(() => {\n if (!editor) {\n return;\n }\n\n const didChange = editor.options.lint.schema !== schema;\n editor.state.lint.linterOptions.schema = schema;\n editor.options.lint.schema = schema;\n editor.options.hintOptions.schema = schema;\n editor.options.info.schema = schema;\n editor.options.jump.schema = schema;\n\n if (didChange && codeMirrorRef.current) {\n codeMirrorRef.current.signal(editor, \"change\", editor);\n }\n }, [editor, schema, codeMirrorRef]);\n }\n\n __name(useSynchronizeSchema, \"useSynchronizeSchema\");\n\n __name$5(useSynchronizeSchema, \"useSynchronizeSchema\");\n\n function useSynchronizeValidationRules(editor, validationRules, codeMirrorRef) {\n (0, _react.useEffect)(() => {\n if (!editor) {\n return;\n }\n\n const didChange = editor.options.lint.validationRules !== validationRules;\n editor.state.lint.linterOptions.validationRules = validationRules;\n editor.options.lint.validationRules = validationRules;\n\n if (didChange && codeMirrorRef.current) {\n codeMirrorRef.current.signal(editor, \"change\", editor);\n }\n }, [editor, validationRules, codeMirrorRef]);\n }\n\n __name(useSynchronizeValidationRules, \"useSynchronizeValidationRules\");\n\n __name$5(useSynchronizeValidationRules, \"useSynchronizeValidationRules\");\n\n function useSynchronizeExternalFragments(editor, externalFragments, codeMirrorRef) {\n const externalFragmentList = (0, _react.useMemo)(() => [...externalFragments.values()], [externalFragments]);\n (0, _react.useEffect)(() => {\n if (!editor) {\n return;\n }\n\n const didChange = editor.options.lint.externalFragments !== externalFragmentList;\n editor.state.lint.linterOptions.externalFragments = externalFragmentList;\n editor.options.lint.externalFragments = externalFragmentList;\n editor.options.hintOptions.externalFragments = externalFragmentList;\n\n if (didChange && codeMirrorRef.current) {\n codeMirrorRef.current.signal(editor, \"change\", editor);\n }\n }, [editor, externalFragmentList, codeMirrorRef]);\n }\n\n __name(useSynchronizeExternalFragments, \"useSynchronizeExternalFragments\");\n\n __name$5(useSynchronizeExternalFragments, \"useSynchronizeExternalFragments\");\n\n const AUTO_COMPLETE_AFTER_KEY = /^[a-zA-Z0-9_@(]$/;\n const STORAGE_KEY_QUERY = \"query\";\n const STORAGE_KEY_OPERATION_NAME = \"operationName\";\n var __defProp$4 = Object.defineProperty;\n\n var __name$4 = /* @__PURE__ */__name((target2, value) => __defProp$4(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$4\");\n\n function getDefaultTabState(_ref10) {\n let {\n headers,\n query,\n variables,\n storage\n } = _ref10;\n const storedState = storage == null ? void 0 : storage.get(STORAGE_KEY$1);\n\n try {\n if (!storedState) {\n throw new Error(\"Storage for tabs is empty\");\n }\n\n const parsed = JSON.parse(storedState);\n\n if (isTabsState(parsed)) {\n const expectedHash = hashFromTabContents({\n query,\n variables,\n headers\n });\n let matchingTabIndex = -1;\n\n for (let index = 0; index < parsed.tabs.length; index++) {\n const tab = parsed.tabs[index];\n tab.hash = hashFromTabContents({\n query: tab.query,\n variables: tab.variables,\n headers: tab.headers\n });\n\n if (tab.hash === expectedHash) {\n matchingTabIndex = index;\n }\n }\n\n if (matchingTabIndex >= 0) {\n parsed.activeTabIndex = matchingTabIndex;\n } else {\n const operationName = query ? fuzzyExtractOperationName(query) : null;\n parsed.tabs.push({\n id: guid(),\n hash: expectedHash,\n title: operationName || DEFAULT_TITLE,\n query,\n variables,\n headers,\n operationName,\n response: null\n });\n }\n\n return parsed;\n } else {\n throw new Error(\"Storage for tabs is invalid\");\n }\n } catch (err) {\n storage == null ? void 0 : storage.set(STORAGE_KEY$1, \"\");\n return {\n activeTabIndex: 0,\n tabs: [emptyTab()]\n };\n }\n }\n\n __name(getDefaultTabState, \"getDefaultTabState\");\n\n __name$4(getDefaultTabState, \"getDefaultTabState\");\n\n function isTabsState(obj) {\n return obj && typeof obj === \"object\" && !Array.isArray(obj) && hasNumberKey(obj, \"activeTabIndex\") && \"tabs\" in obj && Array.isArray(obj.tabs) && obj.tabs.every(isTabState);\n }\n\n __name(isTabsState, \"isTabsState\");\n\n __name$4(isTabsState, \"isTabsState\");\n\n function isTabState(obj) {\n return obj && typeof obj === \"object\" && !Array.isArray(obj) && hasStringKey(obj, \"id\") && hasStringKey(obj, \"title\") && hasStringOrNullKey(obj, \"query\") && hasStringOrNullKey(obj, \"variables\") && hasStringOrNullKey(obj, \"headers\") && hasStringOrNullKey(obj, \"operationName\") && hasStringOrNullKey(obj, \"response\");\n }\n\n __name(isTabState, \"isTabState\");\n\n __name$4(isTabState, \"isTabState\");\n\n function hasNumberKey(obj, key) {\n return key in obj && typeof obj[key] === \"number\";\n }\n\n __name(hasNumberKey, \"hasNumberKey\");\n\n __name$4(hasNumberKey, \"hasNumberKey\");\n\n function hasStringKey(obj, key) {\n return key in obj && typeof obj[key] === \"string\";\n }\n\n __name(hasStringKey, \"hasStringKey\");\n\n __name$4(hasStringKey, \"hasStringKey\");\n\n function hasStringOrNullKey(obj, key) {\n return key in obj && (typeof obj[key] === \"string\" || obj[key] === null);\n }\n\n __name(hasStringOrNullKey, \"hasStringOrNullKey\");\n\n __name$4(hasStringOrNullKey, \"hasStringOrNullKey\");\n\n function useSynchronizeActiveTabValues(_ref11) {\n let {\n queryEditor,\n variableEditor,\n headerEditor,\n responseEditor\n } = _ref11;\n return (0, _react.useCallback)(state => {\n var _a, _b, _c, _d, _e;\n\n const query = (_a = queryEditor == null ? void 0 : queryEditor.getValue()) != null ? _a : null;\n const variables = (_b = variableEditor == null ? void 0 : variableEditor.getValue()) != null ? _b : null;\n const headers = (_c = headerEditor == null ? void 0 : headerEditor.getValue()) != null ? _c : null;\n const operationName = (_d = queryEditor == null ? void 0 : queryEditor.operationName) != null ? _d : null;\n const response = (_e = responseEditor == null ? void 0 : responseEditor.getValue()) != null ? _e : null;\n return setPropertiesInActiveTab(state, {\n query,\n variables,\n headers,\n response,\n operationName\n });\n }, [queryEditor, variableEditor, headerEditor, responseEditor]);\n }\n\n __name(useSynchronizeActiveTabValues, \"useSynchronizeActiveTabValues\");\n\n __name$4(useSynchronizeActiveTabValues, \"useSynchronizeActiveTabValues\");\n\n function useStoreTabs(_ref12) {\n let {\n storage,\n shouldPersistHeaders\n } = _ref12;\n const store = (0, _react.useMemo)(() => debounce(500, value => {\n storage == null ? void 0 : storage.set(STORAGE_KEY$1, value);\n }), [storage]);\n return (0, _react.useCallback)(currentState => {\n store(JSON.stringify(currentState, (key, value) => key === \"hash\" || key === \"response\" || !shouldPersistHeaders && key === \"headers\" ? null : value));\n }, [shouldPersistHeaders, store]);\n }\n\n __name(useStoreTabs, \"useStoreTabs\");\n\n __name$4(useStoreTabs, \"useStoreTabs\");\n\n function useSetEditorValues(_ref13) {\n let {\n queryEditor,\n variableEditor,\n headerEditor,\n responseEditor\n } = _ref13;\n return (0, _react.useCallback)(_ref14 => {\n let {\n query,\n variables,\n headers,\n response\n } = _ref14;\n queryEditor == null ? void 0 : queryEditor.setValue(query != null ? query : \"\");\n variableEditor == null ? void 0 : variableEditor.setValue(variables != null ? variables : \"\");\n headerEditor == null ? void 0 : headerEditor.setValue(headers != null ? headers : \"\");\n responseEditor == null ? void 0 : responseEditor.setValue(response != null ? response : \"\");\n }, [headerEditor, queryEditor, responseEditor, variableEditor]);\n }\n\n __name(useSetEditorValues, \"useSetEditorValues\");\n\n __name$4(useSetEditorValues, \"useSetEditorValues\");\n\n function emptyTab() {\n return {\n id: guid(),\n hash: hashFromTabContents({\n query: null,\n variables: null,\n headers: null\n }),\n title: DEFAULT_TITLE,\n query: null,\n variables: null,\n headers: null,\n operationName: null,\n response: null\n };\n }\n\n __name(emptyTab, \"emptyTab\");\n\n __name$4(emptyTab, \"emptyTab\");\n\n function setPropertiesInActiveTab(state, partialTab) {\n return __spreadProps(__spreadValues({}, state), {\n tabs: state.tabs.map((tab, index) => {\n if (index !== state.activeTabIndex) {\n return tab;\n }\n\n const newTab = __spreadValues(__spreadValues({}, tab), partialTab);\n\n return __spreadProps(__spreadValues({}, newTab), {\n hash: hashFromTabContents(newTab),\n title: newTab.operationName || (newTab.query ? fuzzyExtractOperationName(newTab.query) : void 0) || DEFAULT_TITLE\n });\n })\n });\n }\n\n __name(setPropertiesInActiveTab, \"setPropertiesInActiveTab\");\n\n __name$4(setPropertiesInActiveTab, \"setPropertiesInActiveTab\");\n\n function guid() {\n const s4 = /* @__PURE__ */__name$4(() => {\n return Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);\n }, \"s4\");\n\n return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`;\n }\n\n __name(guid, \"guid\");\n\n __name$4(guid, \"guid\");\n\n function hashFromTabContents(args) {\n var _a, _b, _c;\n\n return [(_a = args.query) != null ? _a : \"\", (_b = args.variables) != null ? _b : \"\", (_c = args.headers) != null ? _c : \"\"].join(\"|\");\n }\n\n __name(hashFromTabContents, \"hashFromTabContents\");\n\n __name$4(hashFromTabContents, \"hashFromTabContents\");\n\n function fuzzyExtractOperationName(str) {\n var _a;\n\n const regex2 = /^(?!.*#).*(query|subscription|mutation)\\s+([a-zA-Z0-9_]+)/;\n const match2 = regex2.exec(str);\n return (_a = match2 == null ? void 0 : match2[2]) != null ? _a : null;\n }\n\n __name(fuzzyExtractOperationName, \"fuzzyExtractOperationName\");\n\n __name$4(fuzzyExtractOperationName, \"fuzzyExtractOperationName\");\n\n const DEFAULT_TITLE = \"<untitled>\";\n const STORAGE_KEY$1 = \"tabState\";\n var __defProp$3 = Object.defineProperty;\n\n var __name$3 = /* @__PURE__ */__name((target2, value) => __defProp$3(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$3\");\n\n function useVariableEditor() {\n let {\n editorTheme = DEFAULT_EDITOR_THEME,\n keyMap = DEFAULT_KEY_MAP,\n onEdit,\n readOnly = false\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n initialVariables,\n variableEditor,\n setVariableEditor\n } = useEditorContext({\n nonNull: true,\n caller: useVariableEditor\n });\n const executionContext = useExecutionContext();\n const merge = useMergeQuery({\n caller: useVariableEditor\n });\n const prettify = usePrettifyEditors({\n caller: useVariableEditor\n });\n const ref = (0, _react.useRef)(null);\n const codeMirrorRef = (0, _react.useRef)();\n (0, _react.useEffect)(() => {\n let isActive = true;\n importCodeMirror([Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./hint.es2.js */ \"../../graphiql-react/dist/hint.es2.js\", 7)), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./lint.es2.js */ \"../../graphiql-react/dist/lint.es2.js\", 7)), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./mode.es3.js */ \"../../graphiql-react/dist/mode.es3.js\", 7))]).then(CodeMirror => {\n if (!isActive) {\n return;\n }\n\n codeMirrorRef.current = CodeMirror;\n const container = ref.current;\n\n if (!container) {\n return;\n }\n\n const newEditor = CodeMirror(container, {\n value: initialVariables,\n lineNumbers: true,\n tabSize: 2,\n mode: \"graphql-variables\",\n theme: editorTheme,\n autoCloseBrackets: true,\n matchBrackets: true,\n showCursorWhenSelecting: true,\n readOnly: readOnly ? \"nocursor\" : false,\n foldGutter: true,\n lint: {\n variableToType: void 0\n },\n hintOptions: {\n closeOnUnfocus: false,\n completeSingle: false,\n container,\n variableToType: void 0\n },\n gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n extraKeys: commonKeys\n });\n newEditor.addKeyMap({\n \"Cmd-Space\"() {\n newEditor.showHint({\n completeSingle: false,\n container\n });\n },\n\n \"Ctrl-Space\"() {\n newEditor.showHint({\n completeSingle: false,\n container\n });\n },\n\n \"Alt-Space\"() {\n newEditor.showHint({\n completeSingle: false,\n container\n });\n },\n\n \"Shift-Space\"() {\n newEditor.showHint({\n completeSingle: false,\n container\n });\n }\n\n });\n newEditor.on(\"keyup\", (editorInstance, event) => {\n const code3 = event.keyCode;\n\n if (code3 >= 65 && code3 <= 90 || !event.shiftKey && code3 >= 48 && code3 <= 57 || event.shiftKey && code3 === 189 || event.shiftKey && code3 === 222) {\n editorInstance.execCommand(\"autocomplete\");\n }\n });\n setVariableEditor(newEditor);\n });\n return () => {\n isActive = false;\n };\n }, [editorTheme, initialVariables, readOnly, setVariableEditor]);\n useSynchronizeOption(variableEditor, \"keyMap\", keyMap);\n useChangeHandler(variableEditor, onEdit, STORAGE_KEY, \"variables\", useVariableEditor);\n useCompletion(variableEditor, useVariableEditor);\n useKeyMap(variableEditor, [\"Cmd-Enter\", \"Ctrl-Enter\"], executionContext == null ? void 0 : executionContext.run);\n useKeyMap(variableEditor, [\"Shift-Ctrl-P\"], prettify);\n useKeyMap(variableEditor, [\"Shift-Ctrl-M\"], merge);\n return ref;\n }\n\n __name(useVariableEditor, \"useVariableEditor\");\n\n __name$3(useVariableEditor, \"useVariableEditor\");\n\n const STORAGE_KEY = \"variables\";\n var __defProp$2 = Object.defineProperty;\n\n var __name$2 = /* @__PURE__ */__name((target2, value) => __defProp$2(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$2\");\n\n const EditorContext = createNullableContext(\"EditorContext\");\n _exports.E = EditorContext;\n\n function EditorContextProvider(props) {\n var _a, _b, _c, _d, _e;\n\n const storage = useStorageContext();\n const [headerEditor, setHeaderEditor] = (0, _react.useState)(null);\n const [queryEditor, setQueryEditor] = (0, _react.useState)(null);\n const [responseEditor, setResponseEditor] = (0, _react.useState)(null);\n const [variableEditor, setVariableEditor] = (0, _react.useState)(null);\n useSynchronizeValue(headerEditor, props.headers);\n useSynchronizeValue(queryEditor, props.query);\n useSynchronizeValue(responseEditor, props.response);\n useSynchronizeValue(variableEditor, props.variables);\n const [storedEditorValues] = (0, _react.useState)(() => {\n var _a2, _b2, _c2, _d2, _e2, _f;\n\n return {\n headers: (_b2 = (_a2 = props.headers) != null ? _a2 : storage == null ? void 0 : storage.get(STORAGE_KEY$2)) != null ? _b2 : null,\n query: (_d2 = (_c2 = props.query) != null ? _c2 : storage == null ? void 0 : storage.get(STORAGE_KEY_QUERY)) != null ? _d2 : null,\n variables: (_f = (_e2 = props.variables) != null ? _e2 : storage == null ? void 0 : storage.get(STORAGE_KEY)) != null ? _f : null\n };\n });\n const [tabState, setTabState] = (0, _react.useState)(() => getDefaultTabState(__spreadProps(__spreadValues({}, storedEditorValues), {\n storage\n })));\n const storeTabs = useStoreTabs({\n storage,\n shouldPersistHeaders: props.shouldPersistHeaders\n });\n const synchronizeActiveTabValues = useSynchronizeActiveTabValues({\n queryEditor,\n variableEditor,\n headerEditor,\n responseEditor\n });\n const setEditorValues = useSetEditorValues({\n queryEditor,\n variableEditor,\n headerEditor,\n responseEditor\n });\n const {\n onTabChange\n } = props;\n const addTab = (0, _react.useCallback)(() => {\n setTabState(current => {\n const updatedValues = synchronizeActiveTabValues(current);\n const updated = {\n tabs: [...updatedValues.tabs, emptyTab()],\n activeTabIndex: updatedValues.tabs.length\n };\n storeTabs(updated);\n setEditorValues(updated.tabs[updated.activeTabIndex]);\n onTabChange == null ? void 0 : onTabChange(updated);\n return updated;\n });\n }, [onTabChange, setEditorValues, storeTabs, synchronizeActiveTabValues]);\n const changeTab = (0, _react.useCallback)(index => {\n setTabState(current => {\n const updated = __spreadProps(__spreadValues({}, synchronizeActiveTabValues(current)), {\n activeTabIndex: index\n });\n\n storeTabs(updated);\n setEditorValues(updated.tabs[updated.activeTabIndex]);\n onTabChange == null ? void 0 : onTabChange(updated);\n return updated;\n });\n }, [onTabChange, setEditorValues, storeTabs, synchronizeActiveTabValues]);\n const closeTab = (0, _react.useCallback)(index => {\n setTabState(current => {\n const updated = {\n tabs: current.tabs.filter((_tab, i) => index !== i),\n activeTabIndex: Math.max(current.activeTabIndex - 1, 0)\n };\n storeTabs(updated);\n setEditorValues(updated.tabs[updated.activeTabIndex]);\n onTabChange == null ? void 0 : onTabChange(updated);\n return updated;\n });\n }, [onTabChange, setEditorValues, storeTabs]);\n const updateActiveTabValues = (0, _react.useCallback)(partialTab => {\n setTabState(current => {\n const updated = setPropertiesInActiveTab(current, partialTab);\n storeTabs(updated);\n onTabChange == null ? void 0 : onTabChange(updated);\n return updated;\n });\n }, [onTabChange, storeTabs]);\n const {\n onEditOperationName\n } = props;\n const setOperationName = (0, _react.useCallback)(operationName => {\n if (!queryEditor) {\n return;\n }\n\n queryEditor.operationName = operationName;\n updateActiveTabValues({\n operationName\n });\n onEditOperationName == null ? void 0 : onEditOperationName(operationName);\n }, [onEditOperationName, queryEditor, updateActiveTabValues]);\n const defaultQuery = tabState.activeTabIndex > 0 ? \"\" : (_a = props.defaultQuery) != null ? _a : DEFAULT_QUERY;\n const initialValues = (0, _react.useRef)({\n initialHeaders: (_b = storedEditorValues.headers) != null ? _b : \"\",\n initialQuery: (_c = storedEditorValues.query) != null ? _c : defaultQuery,\n initialResponse: (_d = props.response) != null ? _d : \"\",\n initialVariables: (_e = storedEditorValues.variables) != null ? _e : \"\"\n });\n const externalFragments = (0, _react.useMemo)(() => {\n const map2 = /* @__PURE__ */new Map();\n\n if (Array.isArray(props.externalFragments)) {\n for (const fragment of props.externalFragments) {\n map2.set(fragment.name.value, fragment);\n }\n } else if (typeof props.externalFragments === \"string\") {\n (0, _graphql.visit)((0, _graphql.parse)(props.externalFragments, {}), {\n FragmentDefinition(fragment) {\n map2.set(fragment.name.value, fragment);\n }\n\n });\n } else if (props.externalFragments) {\n throw new Error(\"The `externalFragments` prop must either be a string that contains the fragment definitions in SDL or a list of FragmentDefinitionNode objects.\");\n }\n\n return map2;\n }, [props.externalFragments]);\n const validationRules = (0, _react.useMemo)(() => props.validationRules || [], [props.validationRules]);\n const value = (0, _react.useMemo)(() => __spreadProps(__spreadValues(__spreadProps(__spreadValues({}, tabState), {\n addTab,\n changeTab,\n closeTab,\n updateActiveTabValues,\n headerEditor,\n queryEditor,\n responseEditor,\n variableEditor,\n setHeaderEditor,\n setQueryEditor,\n setResponseEditor,\n setVariableEditor,\n setOperationName\n }), initialValues.current), {\n externalFragments,\n validationRules,\n shouldPersistHeaders: props.shouldPersistHeaders || false\n }), [tabState, addTab, changeTab, closeTab, updateActiveTabValues, headerEditor, queryEditor, responseEditor, variableEditor, setOperationName, externalFragments, validationRules, props.shouldPersistHeaders]);\n return /* @__PURE__ */jsx(EditorContext.Provider, {\n value,\n children: props.children\n });\n }\n\n __name(EditorContextProvider, \"EditorContextProvider\");\n\n __name$2(EditorContextProvider, \"EditorContextProvider\");\n\n const useEditorContext = createContextHook(EditorContext);\n _exports.f = useEditorContext;\n const DEFAULT_QUERY = `# Welcome to GraphiQL\n#\n# GraphiQL is an in-browser tool for writing, validating, and\n# testing GraphQL queries.\n#\n# Type queries into this side of the screen, and you will see intelligent\n# typeaheads aware of the current GraphQL type schema and live syntax and\n# validation errors highlighted within the text.\n#\n# GraphQL queries typically start with a \"{\" character. Lines that start\n# with a # are ignored.\n#\n# An example GraphQL query might look like:\n#\n# {\n# field(arg: \"value\") {\n# subField\n# }\n# }\n#\n# Keyboard shortcuts:\n#\n# Prettify Query: Shift-Ctrl-P (or press the prettify button above)\n#\n# Merge Query: Shift-Ctrl-M (or press the merge button above)\n#\n# Run Query: Ctrl-Enter (or press the play button above)\n#\n# Auto Complete: Ctrl-Space (or just start typing)\n#\n\n`;\n var __defProp$1 = Object.defineProperty;\n\n var __name$1 = /* @__PURE__ */__name((target2, value) => __defProp$1(target2, \"name\", {\n value,\n configurable: true\n }), \"__name$1\");\n\n function useResponseEditor() {\n let {\n ResponseTooltip,\n editorTheme = DEFAULT_EDITOR_THEME,\n keyMap = DEFAULT_KEY_MAP\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n fetchError,\n validationErrors\n } = useSchemaContext({\n nonNull: true,\n caller: useResponseEditor\n });\n const {\n initialResponse,\n responseEditor,\n setResponseEditor\n } = useEditorContext({\n nonNull: true,\n caller: useResponseEditor\n });\n const ref = (0, _react.useRef)(null);\n const responseTooltipRef = (0, _react.useRef)(ResponseTooltip);\n (0, _react.useEffect)(() => {\n responseTooltipRef.current = ResponseTooltip;\n }, [ResponseTooltip]);\n (0, _react.useEffect)(() => {\n let isActive = true;\n importCodeMirror([Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./foldgutter.es.js */ \"../../graphiql-react/dist/foldgutter.es.js\", 7)).then(function (n2) {\n return n2.f;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./brace-fold.es.js */ \"../../graphiql-react/dist/brace-fold.es.js\", 7)).then(function (n2) {\n return n2.b;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./dialog.es.js */ \"../../graphiql-react/dist/dialog.es.js\", 7)).then(function (n2) {\n return n2.d;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./search.es.js */ \"../../graphiql-react/dist/search.es.js\", 7)).then(function (n2) {\n return n2.s;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./searchcursor.es.js */ \"../../graphiql-react/dist/searchcursor.es.js\", 7)).then(function (n2) {\n return n2.s;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./jump-to-line.es.js */ \"../../graphiql-react/dist/jump-to-line.es.js\", 7)).then(function (n2) {\n return n2.j;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./sublime.es.js */ \"../../graphiql-react/dist/sublime.es.js\", 7)).then(function (n2) {\n return n2.s;\n }), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./mode.es2.js */ \"../../graphiql-react/dist/mode.es2.js\", 7)), Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(null, /*! ./info-addon.es.js */ \"../../graphiql-react/dist/info-addon.es.js\", 7))], {\n useCommonAddons: false\n }).then(CodeMirror => {\n if (!isActive) {\n return;\n }\n\n const tooltipDiv = document.createElement(\"div\");\n CodeMirror.registerHelper(\"info\", \"graphql-results\", (token2, _options, _cm, pos) => {\n const infoElements = [];\n const ResponseTooltipComponent = responseTooltipRef.current;\n\n if (ResponseTooltipComponent) {\n infoElements.push( /* @__PURE__ */jsx(ResponseTooltipComponent, {\n pos\n }));\n }\n\n if (ImagePreview.shouldRender(token2)) {\n infoElements.push( /* @__PURE__ */jsx(ImagePreview, {\n token: token2\n }, \"image-preview\"));\n }\n\n if (!infoElements.length) {\n _reactDom.default.unmountComponentAtNode(tooltipDiv);\n\n return null;\n }\n\n _reactDom.default.render(infoElements, tooltipDiv);\n\n return tooltipDiv;\n });\n const container = ref.current;\n\n if (!container) {\n return;\n }\n\n const newEditor = CodeMirror(container, {\n value: initialResponse,\n lineWrapping: true,\n readOnly: true,\n theme: editorTheme,\n mode: \"graphql-results\",\n foldGutter: true,\n gutters: [\"CodeMirror-foldgutter\"],\n info: true,\n extraKeys: commonKeys\n });\n setResponseEditor(newEditor);\n });\n return () => {\n isActive = false;\n };\n }, [editorTheme, initialResponse, setResponseEditor]);\n useSynchronizeOption(responseEditor, \"keyMap\", keyMap);\n (0, _react.useEffect)(() => {\n if (fetchError) {\n responseEditor == null ? void 0 : responseEditor.setValue(fetchError);\n }\n\n if (validationErrors.length > 0) {\n responseEditor == null ? void 0 : responseEditor.setValue(formatError(validationErrors));\n }\n }, [responseEditor, fetchError, validationErrors]);\n return ref;\n }\n\n __name(useResponseEditor, \"useResponseEditor\");\n\n __name$1(useResponseEditor, \"useResponseEditor\");\n\n var __defProp2 = Object.defineProperty;\n\n var __name2 = /* @__PURE__ */__name((target2, value) => __defProp2(target2, \"name\", {\n value,\n configurable: true\n }), \"__name\");\n\n function useDragResize(_ref15) {\n let {\n defaultSizeRelation = DEFAULT_FLEX,\n direction,\n initiallyHidden,\n onHiddenElementChange,\n sizeThresholdFirst = 100,\n sizeThresholdSecond = 100,\n storageKey\n } = _ref15;\n const storage = useStorageContext();\n const store = (0, _react.useCallback)(debounce(500, value => {\n if (storage && storageKey) {\n storage.set(storageKey, value);\n }\n }), [storage, storageKey]);\n const [hiddenElement, _setHiddenElement] = (0, _react.useState)(() => {\n const storedValue = storage && storageKey ? storage.get(storageKey) : null;\n\n if (storedValue === HIDE_FIRST || initiallyHidden === \"first\") {\n return \"first\";\n }\n\n if (storedValue === HIDE_SECOND || initiallyHidden === \"second\") {\n return \"second\";\n }\n\n return null;\n });\n const setHiddenElement = (0, _react.useCallback)(element => {\n _setHiddenElement(element);\n\n onHiddenElementChange == null ? void 0 : onHiddenElementChange(element);\n }, [onHiddenElementChange]);\n const firstRef = (0, _react.useRef)(null);\n const dragBarRef = (0, _react.useRef)(null);\n const secondRef = (0, _react.useRef)(null);\n const defaultFlexRef = (0, _react.useRef)(`${defaultSizeRelation}`);\n (0, _react.useLayoutEffect)(() => {\n const storedValue = storage && storageKey ? storage.get(storageKey) || defaultFlexRef.current : defaultFlexRef.current;\n const flexDirection = direction === \"horizontal\" ? \"row\" : \"column\";\n\n if (firstRef.current) {\n firstRef.current.style.display = \"flex\";\n firstRef.current.style.flexDirection = flexDirection;\n firstRef.current.style.flex = storedValue === HIDE_FIRST || storedValue === HIDE_SECOND ? defaultFlexRef.current : storedValue;\n }\n\n if (secondRef.current) {\n secondRef.current.style.display = \"flex\";\n secondRef.current.style.flexDirection = flexDirection;\n secondRef.current.style.flex = \"1\";\n }\n\n if (dragBarRef.current) {\n dragBarRef.current.style.display = \"flex\";\n dragBarRef.current.style.flexDirection = flexDirection;\n }\n }, [direction, storage, storageKey]);\n const hide = (0, _react.useCallback)(resizableElement => {\n const element = resizableElement === \"first\" ? firstRef.current : secondRef.current;\n\n if (!element) {\n return;\n }\n\n element.style.left = \"-1000px\";\n element.style.position = \"absolute\";\n element.style.opacity = \"0\";\n element.style.height = \"500px\";\n element.style.width = \"500px\";\n\n if (firstRef.current) {\n const flex = parseFloat(firstRef.current.style.flex);\n\n if (!Number.isFinite(flex) || flex < 1) {\n firstRef.current.style.flex = \"1\";\n }\n\n firstRef.current.style.flex;\n }\n }, []);\n const show = (0, _react.useCallback)(resizableElement => {\n const element = resizableElement === \"first\" ? firstRef.current : secondRef.current;\n\n if (!element) {\n return;\n }\n\n element.style.width = \"\";\n element.style.height = \"\";\n element.style.opacity = \"\";\n element.style.position = \"\";\n element.style.left = \"\";\n\n if (firstRef.current && storage && storageKey) {\n const storedValue = storage == null ? void 0 : storage.get(storageKey);\n\n if (storedValue && storedValue !== HIDE_FIRST && storedValue !== HIDE_SECOND) {\n firstRef.current.style.flex = storedValue;\n }\n }\n }, [storage, storageKey]);\n (0, _react.useLayoutEffect)(() => {\n if (hiddenElement === \"first\") {\n hide(\"first\");\n } else {\n show(\"first\");\n }\n\n if (hiddenElement === \"second\") {\n hide(\"second\");\n } else {\n show(\"second\");\n }\n }, [hiddenElement, hide, show]);\n (0, _react.useEffect)(() => {\n if (!dragBarRef.current || !firstRef.current || !secondRef.current) {\n return;\n }\n\n const dragBarContainer = dragBarRef.current;\n const firstContainer = firstRef.current;\n const wrapper = firstContainer.parentElement;\n const eventProperty = direction === \"horizontal\" ? \"clientX\" : \"clientY\";\n const rectProperty = direction === \"horizontal\" ? \"left\" : \"top\";\n const adjacentRectProperty = direction === \"horizontal\" ? \"right\" : \"bottom\";\n const sizeProperty = direction === \"horizontal\" ? \"clientWidth\" : \"clientHeight\";\n\n function handleMouseDown(downEvent) {\n downEvent.preventDefault();\n const offset = downEvent[eventProperty] - dragBarContainer.getBoundingClientRect()[rectProperty];\n\n function handleMouseMove(moveEvent) {\n if (moveEvent.buttons === 0) {\n return handleMouseUp();\n }\n\n const firstSize = moveEvent[eventProperty] - wrapper.getBoundingClientRect()[rectProperty] - offset;\n const secondSize = wrapper.getBoundingClientRect()[adjacentRectProperty] - moveEvent[eventProperty] + offset - dragBarContainer[sizeProperty];\n\n if (firstSize < sizeThresholdFirst) {\n setHiddenElement(\"first\");\n store(HIDE_FIRST);\n } else if (secondSize < sizeThresholdSecond) {\n setHiddenElement(\"second\");\n store(HIDE_SECOND);\n } else {\n setHiddenElement(null);\n const newFlex = `${firstSize / secondSize}`;\n firstContainer.style.flex = newFlex;\n store(newFlex);\n }\n }\n\n __name(handleMouseMove, \"handleMouseMove\");\n\n __name2(handleMouseMove, \"handleMouseMove\");\n\n function handleMouseUp() {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n }\n\n __name(handleMouseUp, \"handleMouseUp\");\n\n __name2(handleMouseUp, \"handleMouseUp\");\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n }\n\n __name(handleMouseDown, \"handleMouseDown\");\n\n __name2(handleMouseDown, \"handleMouseDown\");\n\n dragBarContainer.addEventListener(\"mousedown\", handleMouseDown);\n\n function reset() {\n if (firstRef.current) {\n firstRef.current.style.flex = defaultFlexRef.current;\n }\n\n store(defaultFlexRef.current);\n setHiddenElement(null);\n }\n\n __name(reset, \"reset\");\n\n __name2(reset, \"reset\");\n\n dragBarContainer.addEventListener(\"dblclick\", reset);\n return () => {\n dragBarContainer.removeEventListener(\"mousedown\", handleMouseDown);\n dragBarContainer.removeEventListener(\"dblclick\", reset);\n };\n }, [direction, setHiddenElement, sizeThresholdFirst, sizeThresholdSecond, store]);\n return (0, _react.useMemo)(() => ({\n dragBarRef,\n hiddenElement,\n firstRef,\n setHiddenElement,\n secondRef\n }), [hiddenElement, setHiddenElement]);\n }\n\n __name(useDragResize, \"useDragResize\");\n\n __name2(useDragResize, \"useDragResize\");\n\n const DEFAULT_FLEX = 1;\n const HIDE_FIRST = \"hide-first\";\n const HIDE_SECOND = \"hide-second\";\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ \"../../../node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9pbmRleC5lcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL3BhY2thZ2VzL2dyYXBoaXFsLXJlYWN0L2Rpc3QvaW5kZXguZXMuanM/NmFhMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AyIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKGIsIHByb3AyKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wMiwgYltwcm9wMl0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wMiBvZiBfX2dldE93blByb3BTeW1ib2xzKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtLmNhbGwoYiwgcHJvcDIpKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcDIsIGJbcHJvcDJdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzID0gKGEsIGIpID0+IF9fZGVmUHJvcHMoYSwgX19nZXRPd25Qcm9wRGVzY3MoYikpO1xudmFyIF9fbmFtZSA9ICh0YXJnZXQyLCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG52YXIgX19vYmpSZXN0ID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0MiA9IHt9O1xuICBmb3IgKHZhciBwcm9wMiBpbiBzb3VyY2UpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKHNvdXJjZSwgcHJvcDIpICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wMikgPCAwKVxuICAgICAgdGFyZ2V0Mltwcm9wMl0gPSBzb3VyY2VbcHJvcDJdO1xuICBpZiAoc291cmNlICE9IG51bGwgJiYgX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wMiBvZiBfX2dldE93blByb3BTeW1ib2xzKHNvdXJjZSkpIHtcbiAgICAgIGlmIChleGNsdWRlLmluZGV4T2YocHJvcDIpIDwgMCAmJiBfX3Byb3BJc0VudW0uY2FsbChzb3VyY2UsIHByb3AyKSlcbiAgICAgICAgdGFyZ2V0Mltwcm9wMl0gPSBzb3VyY2VbcHJvcDJdO1xuICAgIH1cbiAgcmV0dXJuIHRhcmdldDI7XG59O1xuaW1wb3J0IHsgaXNOb25OdWxsVHlwZSwgaXNMaXN0VHlwZSwgcGFyc2UgYXMgcGFyc2UkMSwgVHlwZUluZm8sIHZpc2l0LCBwcmludCwgZ2V0TmFtZWRUeXBlLCBpc0xlYWZUeXBlLCBLaW5kLCB2aXNpdFdpdGhUeXBlSW5mbywgdHlwZUZyb21BU1QsIEdyYXBoUUxGbG9hdCwgaXNTY2hlbWEsIGdldEludHJvc3BlY3Rpb25RdWVyeSwgYnVpbGRDbGllbnRTY2hlbWEsIHZhbGlkYXRlU2NoZW1hIH0gZnJvbSBcImdyYXBocWxcIjtcbmltcG9ydCByZXF1aXJlJCQwJDEsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0LCBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbVwiO1xudmFyIGNvbW1vbmpzR2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxUaGlzIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB7fTtcbmZ1bmN0aW9uIGdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHgpIHtcbiAgcmV0dXJuIHggJiYgeC5fX2VzTW9kdWxlICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh4LCBcImRlZmF1bHRcIikgPyB4W1wiZGVmYXVsdFwiXSA6IHg7XG59XG5fX25hbWUoZ2V0RGVmYXVsdEV4cG9ydEZyb21DanMsIFwiZ2V0RGVmYXVsdEV4cG9ydEZyb21DanNcIik7XG5mdW5jdGlvbiBnZXRBdWdtZW50ZWROYW1lc3BhY2UobjIpIHtcbiAgaWYgKG4yLl9fZXNNb2R1bGUpXG4gICAgcmV0dXJuIG4yO1xuICB2YXIgYSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5rZXlzKG4yKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgICB2YXIgZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobjIsIGspO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCBrLCBkLmdldCA/IGQgOiB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG4yW2tdO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGE7XG59XG5fX25hbWUoZ2V0QXVnbWVudGVkTmFtZXNwYWNlLCBcImdldEF1Z21lbnRlZE5hbWVzcGFjZVwiKTtcbi8qIVxuICogZXNjYXBlLWh0bWxcbiAqIENvcHlyaWdodChjKSAyMDEyLTIwMTMgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDE1IEFuZHJlYXMgTHViYmVcbiAqIENvcHlyaWdodChjKSAyMDE1IFRpYW5jaGVuZyBcIlRpbW90aHlcIiBHdVxuICogTUlUIExpY2Vuc2VkXG4gKi9cbnZhciBtYXRjaEh0bWxSZWdFeHAgPSAvW1wiJyY8Pl0vO1xudmFyIGVzY2FwZUh0bWxfMSA9IGVzY2FwZUh0bWwkMTtcbmZ1bmN0aW9uIGVzY2FwZUh0bWwkMShzdHJpbmcpIHtcbiAgdmFyIHN0ciA9IFwiXCIgKyBzdHJpbmc7XG4gIHZhciBtYXRjaDIgPSBtYXRjaEh0bWxSZWdFeHAuZXhlYyhzdHIpO1xuICBpZiAoIW1hdGNoMikge1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyIGVzY2FwZTI7XG4gIHZhciBodG1sID0gXCJcIjtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxhc3RJbmRleCA9IDA7XG4gIGZvciAoaW5kZXggPSBtYXRjaDIuaW5kZXg7IGluZGV4IDwgc3RyLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIHN3aXRjaCAoc3RyLmNoYXJDb2RlQXQoaW5kZXgpKSB7XG4gICAgICBjYXNlIDM0OlxuICAgICAgICBlc2NhcGUyID0gXCImcXVvdDtcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM4OlxuICAgICAgICBlc2NhcGUyID0gXCImYW1wO1wiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzk6XG4gICAgICAgIGVzY2FwZTIgPSBcIiYjMzk7XCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2MDpcbiAgICAgICAgZXNjYXBlMiA9IFwiJmx0O1wiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNjI6XG4gICAgICAgIGVzY2FwZTIgPSBcIiZndDtcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGxhc3RJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgIGh0bWwgKz0gc3RyLnN1YnN0cmluZyhsYXN0SW5kZXgsIGluZGV4KTtcbiAgICB9XG4gICAgbGFzdEluZGV4ID0gaW5kZXggKyAxO1xuICAgIGh0bWwgKz0gZXNjYXBlMjtcbiAgfVxuICByZXR1cm4gbGFzdEluZGV4ICE9PSBpbmRleCA/IGh0bWwgKyBzdHIuc3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpIDogaHRtbDtcbn1cbl9fbmFtZShlc2NhcGVIdG1sJDEsIFwiZXNjYXBlSHRtbCQxXCIpO1xudmFyIHV0aWxzJDEgPSB7fTtcbmNvbnN0IEFhY3V0ZSA9IFwiXFx4QzFcIjtcbmNvbnN0IGFhY3V0ZSA9IFwiXFx4RTFcIjtcbmNvbnN0IEFicmV2ZSA9IFwiXFx1MDEwMlwiO1xuY29uc3QgYWJyZXZlID0gXCJcXHUwMTAzXCI7XG5jb25zdCBhYyA9IFwiXFx1MjIzRVwiO1xuY29uc3QgYWNkID0gXCJcXHUyMjNGXCI7XG5jb25zdCBhY0UgPSBcIlxcdTIyM0VcXHUwMzMzXCI7XG5jb25zdCBBY2lyYyA9IFwiXFx4QzJcIjtcbmNvbnN0IGFjaXJjID0gXCJcXHhFMlwiO1xuY29uc3QgYWN1dGUgPSBcIlxceEI0XCI7XG5jb25zdCBBY3kgPSBcIlxcdTA0MTBcIjtcbmNvbnN0IGFjeSA9IFwiXFx1MDQzMFwiO1xuY29uc3QgQUVsaWcgPSBcIlxceEM2XCI7XG5jb25zdCBhZWxpZyA9IFwiXFx4RTZcIjtcbmNvbnN0IGFmID0gXCJcXHUyMDYxXCI7XG5jb25zdCBBZnIgPSBcIlxcdXsxRDUwNH1cIjtcbmNvbnN0IGFmciA9IFwiXFx1ezFENTFFfVwiO1xuY29uc3QgQWdyYXZlID0gXCJcXHhDMFwiO1xuY29uc3QgYWdyYXZlID0gXCJcXHhFMFwiO1xuY29uc3QgYWxlZnN5bSA9IFwiXFx1MjEzNVwiO1xuY29uc3QgYWxlcGggPSBcIlxcdTIxMzVcIjtcbmNvbnN0IEFscGhhID0gXCJcXHUwMzkxXCI7XG5jb25zdCBhbHBoYSA9IFwiXFx1MDNCMVwiO1xuY29uc3QgQW1hY3IgPSBcIlxcdTAxMDBcIjtcbmNvbnN0IGFtYWNyID0gXCJcXHUwMTAxXCI7XG5jb25zdCBhbWFsZyA9IFwiXFx1MkEzRlwiO1xuY29uc3QgYW1wID0gXCImXCI7XG5jb25zdCBBTVAgPSBcIiZcIjtcbmNvbnN0IGFuZGFuZCA9IFwiXFx1MkE1NVwiO1xuY29uc3QgQW5kID0gXCJcXHUyQTUzXCI7XG5jb25zdCBhbmQgPSBcIlxcdTIyMjdcIjtcbmNvbnN0IGFuZGQgPSBcIlxcdTJBNUNcIjtcbmNvbnN0IGFuZHNsb3BlID0gXCJcXHUyQTU4XCI7XG5jb25zdCBhbmR2ID0gXCJcXHUyQTVBXCI7XG5jb25zdCBhbmcgPSBcIlxcdTIyMjBcIjtcbmNvbnN0IGFuZ2UgPSBcIlxcdTI5QTRcIjtcbmNvbnN0IGFuZ2xlID0gXCJcXHUyMjIwXCI7XG5jb25zdCBhbmdtc2RhYSA9IFwiXFx1MjlBOFwiO1xuY29uc3QgYW5nbXNkYWIgPSBcIlxcdTI5QTlcIjtcbmNvbnN0IGFuZ21zZGFjID0gXCJcXHUyOUFBXCI7XG5jb25zdCBhbmdtc2RhZCA9IFwiXFx1MjlBQlwiO1xuY29uc3QgYW5nbXNkYWUgPSBcIlxcdTI5QUNcIjtcbmNvbnN0IGFuZ21zZGFmID0gXCJcXHUyOUFEXCI7XG5jb25zdCBhbmdtc2RhZyA9IFwiXFx1MjlBRVwiO1xuY29uc3QgYW5nbXNkYWggPSBcIlxcdTI5QUZcIjtcbmNvbnN0IGFuZ21zZCA9IFwiXFx1MjIyMVwiO1xuY29uc3QgYW5ncnQgPSBcIlxcdTIyMUZcIjtcbmNvbnN0IGFuZ3J0dmIgPSBcIlxcdTIyQkVcIjtcbmNvbnN0IGFuZ3J0dmJkID0gXCJcXHUyOTlEXCI7XG5jb25zdCBhbmdzcGggPSBcIlxcdTIyMjJcIjtcbmNvbnN0IGFuZ3N0ID0gXCJcXHhDNVwiO1xuY29uc3QgYW5nemFyciA9IFwiXFx1MjM3Q1wiO1xuY29uc3QgQW9nb24gPSBcIlxcdTAxMDRcIjtcbmNvbnN0IGFvZ29uID0gXCJcXHUwMTA1XCI7XG5jb25zdCBBb3BmID0gXCJcXHV7MUQ1Mzh9XCI7XG5jb25zdCBhb3BmID0gXCJcXHV7MUQ1NTJ9XCI7XG5jb25zdCBhcGFjaXIgPSBcIlxcdTJBNkZcIjtcbmNvbnN0IGFwID0gXCJcXHUyMjQ4XCI7XG5jb25zdCBhcEUgPSBcIlxcdTJBNzBcIjtcbmNvbnN0IGFwZSA9IFwiXFx1MjI0QVwiO1xuY29uc3QgYXBpZCA9IFwiXFx1MjI0QlwiO1xuY29uc3QgYXBvcyA9IFwiJ1wiO1xuY29uc3QgQXBwbHlGdW5jdGlvbiA9IFwiXFx1MjA2MVwiO1xuY29uc3QgYXBwcm94ID0gXCJcXHUyMjQ4XCI7XG5jb25zdCBhcHByb3hlcSA9IFwiXFx1MjI0QVwiO1xuY29uc3QgQXJpbmcgPSBcIlxceEM1XCI7XG5jb25zdCBhcmluZyA9IFwiXFx4RTVcIjtcbmNvbnN0IEFzY3IgPSBcIlxcdXsxRDQ5Q31cIjtcbmNvbnN0IGFzY3IgPSBcIlxcdXsxRDRCNn1cIjtcbmNvbnN0IEFzc2lnbiA9IFwiXFx1MjI1NFwiO1xuY29uc3QgYXN0ID0gXCIqXCI7XG5jb25zdCBhc3ltcCA9IFwiXFx1MjI0OFwiO1xuY29uc3QgYXN5bXBlcSA9IFwiXFx1MjI0RFwiO1xuY29uc3QgQXRpbGRlID0gXCJcXHhDM1wiO1xuY29uc3QgYXRpbGRlID0gXCJcXHhFM1wiO1xuY29uc3QgQXVtbCA9IFwiXFx4QzRcIjtcbmNvbnN0IGF1bWwgPSBcIlxceEU0XCI7XG5jb25zdCBhd2NvbmludCA9IFwiXFx1MjIzM1wiO1xuY29uc3QgYXdpbnQgPSBcIlxcdTJBMTFcIjtcbmNvbnN0IGJhY2tjb25nID0gXCJcXHUyMjRDXCI7XG5jb25zdCBiYWNrZXBzaWxvbiA9IFwiXFx1MDNGNlwiO1xuY29uc3QgYmFja3ByaW1lID0gXCJcXHUyMDM1XCI7XG5jb25zdCBiYWNrc2ltID0gXCJcXHUyMjNEXCI7XG5jb25zdCBiYWNrc2ltZXEgPSBcIlxcdTIyQ0RcIjtcbmNvbnN0IEJhY2tzbGFzaCA9IFwiXFx1MjIxNlwiO1xuY29uc3QgQmFydiA9IFwiXFx1MkFFN1wiO1xuY29uc3QgYmFydmVlID0gXCJcXHUyMkJEXCI7XG5jb25zdCBiYXJ3ZWQgPSBcIlxcdTIzMDVcIjtcbmNvbnN0IEJhcndlZCA9IFwiXFx1MjMwNlwiO1xuY29uc3QgYmFyd2VkZ2UgPSBcIlxcdTIzMDVcIjtcbmNvbnN0IGJicmsgPSBcIlxcdTIzQjVcIjtcbmNvbnN0IGJicmt0YnJrID0gXCJcXHUyM0I2XCI7XG5jb25zdCBiY29uZyA9IFwiXFx1MjI0Q1wiO1xuY29uc3QgQmN5ID0gXCJcXHUwNDExXCI7XG5jb25zdCBiY3kgPSBcIlxcdTA0MzFcIjtcbmNvbnN0IGJkcXVvID0gXCJcXHUyMDFFXCI7XG5jb25zdCBiZWNhdXMgPSBcIlxcdTIyMzVcIjtcbmNvbnN0IGJlY2F1c2UgPSBcIlxcdTIyMzVcIjtcbmNvbnN0IEJlY2F1c2UgPSBcIlxcdTIyMzVcIjtcbmNvbnN0IGJlbXB0eXYgPSBcIlxcdTI5QjBcIjtcbmNvbnN0IGJlcHNpID0gXCJcXHUwM0Y2XCI7XG5jb25zdCBiZXJub3UgPSBcIlxcdTIxMkNcIjtcbmNvbnN0IEJlcm5vdWxsaXMgPSBcIlxcdTIxMkNcIjtcbmNvbnN0IEJldGEgPSBcIlxcdTAzOTJcIjtcbmNvbnN0IGJldGEgPSBcIlxcdTAzQjJcIjtcbmNvbnN0IGJldGggPSBcIlxcdTIxMzZcIjtcbmNvbnN0IGJldHdlZW4gPSBcIlxcdTIyNkNcIjtcbmNvbnN0IEJmciA9IFwiXFx1ezFENTA1fVwiO1xuY29uc3QgYmZyID0gXCJcXHV7MUQ1MUZ9XCI7XG5jb25zdCBiaWdjYXAgPSBcIlxcdTIyQzJcIjtcbmNvbnN0IGJpZ2NpcmMgPSBcIlxcdTI1RUZcIjtcbmNvbnN0IGJpZ2N1cCA9IFwiXFx1MjJDM1wiO1xuY29uc3QgYmlnb2RvdCA9IFwiXFx1MkEwMFwiO1xuY29uc3QgYmlnb3BsdXMgPSBcIlxcdTJBMDFcIjtcbmNvbnN0IGJpZ290aW1lcyA9IFwiXFx1MkEwMlwiO1xuY29uc3QgYmlnc3FjdXAgPSBcIlxcdTJBMDZcIjtcbmNvbnN0IGJpZ3N0YXIgPSBcIlxcdTI2MDVcIjtcbmNvbnN0IGJpZ3RyaWFuZ2xlZG93biA9IFwiXFx1MjVCRFwiO1xuY29uc3QgYmlndHJpYW5nbGV1cCA9IFwiXFx1MjVCM1wiO1xuY29uc3QgYmlndXBsdXMgPSBcIlxcdTJBMDRcIjtcbmNvbnN0IGJpZ3ZlZSA9IFwiXFx1MjJDMVwiO1xuY29uc3QgYmlnd2VkZ2UgPSBcIlxcdTIyQzBcIjtcbmNvbnN0IGJrYXJvdyA9IFwiXFx1MjkwRFwiO1xuY29uc3QgYmxhY2tsb3plbmdlID0gXCJcXHUyOUVCXCI7XG5jb25zdCBibGFja3NxdWFyZSA9IFwiXFx1MjVBQVwiO1xuY29uc3QgYmxhY2t0cmlhbmdsZSA9IFwiXFx1MjVCNFwiO1xuY29uc3QgYmxhY2t0cmlhbmdsZWRvd24gPSBcIlxcdTI1QkVcIjtcbmNvbnN0IGJsYWNrdHJpYW5nbGVsZWZ0ID0gXCJcXHUyNUMyXCI7XG5jb25zdCBibGFja3RyaWFuZ2xlcmlnaHQgPSBcIlxcdTI1QjhcIjtcbmNvbnN0IGJsYW5rID0gXCJcXHUyNDIzXCI7XG5jb25zdCBibGsxMiA9IFwiXFx1MjU5MlwiO1xuY29uc3QgYmxrMTQgPSBcIlxcdTI1OTFcIjtcbmNvbnN0IGJsazM0ID0gXCJcXHUyNTkzXCI7XG5jb25zdCBibG9jayQxID0gXCJcXHUyNTg4XCI7XG5jb25zdCBibmUgPSBcIj1cXHUyMEU1XCI7XG5jb25zdCBibmVxdWl2ID0gXCJcXHUyMjYxXFx1MjBFNVwiO1xuY29uc3QgYk5vdCA9IFwiXFx1MkFFRFwiO1xuY29uc3QgYm5vdCA9IFwiXFx1MjMxMFwiO1xuY29uc3QgQm9wZiA9IFwiXFx1ezFENTM5fVwiO1xuY29uc3QgYm9wZiA9IFwiXFx1ezFENTUzfVwiO1xuY29uc3QgYm90ID0gXCJcXHUyMkE1XCI7XG5jb25zdCBib3R0b20gPSBcIlxcdTIyQTVcIjtcbmNvbnN0IGJvd3RpZSA9IFwiXFx1MjJDOFwiO1xuY29uc3QgYm94Ym94ID0gXCJcXHUyOUM5XCI7XG5jb25zdCBib3hkbCA9IFwiXFx1MjUxMFwiO1xuY29uc3QgYm94ZEwgPSBcIlxcdTI1NTVcIjtcbmNvbnN0IGJveERsID0gXCJcXHUyNTU2XCI7XG5jb25zdCBib3hETCA9IFwiXFx1MjU1N1wiO1xuY29uc3QgYm94ZHIgPSBcIlxcdTI1MENcIjtcbmNvbnN0IGJveGRSID0gXCJcXHUyNTUyXCI7XG5jb25zdCBib3hEciA9IFwiXFx1MjU1M1wiO1xuY29uc3QgYm94RFIgPSBcIlxcdTI1NTRcIjtcbmNvbnN0IGJveGggPSBcIlxcdTI1MDBcIjtcbmNvbnN0IGJveEggPSBcIlxcdTI1NTBcIjtcbmNvbnN0IGJveGhkID0gXCJcXHUyNTJDXCI7XG5jb25zdCBib3hIZCA9IFwiXFx1MjU2NFwiO1xuY29uc3QgYm94aEQgPSBcIlxcdTI1NjVcIjtcbmNvbnN0IGJveEhEID0gXCJcXHUyNTY2XCI7XG5jb25zdCBib3hodSA9IFwiXFx1MjUzNFwiO1xuY29uc3QgYm94SHUgPSBcIlxcdTI1NjdcIjtcbmNvbnN0IGJveGhVID0gXCJcXHUyNTY4XCI7XG5jb25zdCBib3hIVSA9IFwiXFx1MjU2OVwiO1xuY29uc3QgYm94bWludXMgPSBcIlxcdTIyOUZcIjtcbmNvbnN0IGJveHBsdXMgPSBcIlxcdTIyOUVcIjtcbmNvbnN0IGJveHRpbWVzID0gXCJcXHUyMkEwXCI7XG5jb25zdCBib3h1bCA9IFwiXFx1MjUxOFwiO1xuY29uc3QgYm94dUwgPSBcIlxcdTI1NUJcIjtcbmNvbnN0IGJveFVsID0gXCJcXHUyNTVDXCI7XG5jb25zdCBib3hVTCA9IFwiXFx1MjU1RFwiO1xuY29uc3QgYm94dXIgPSBcIlxcdTI1MTRcIjtcbmNvbnN0IGJveHVSID0gXCJcXHUyNTU4XCI7XG5jb25zdCBib3hVciA9IFwiXFx1MjU1OVwiO1xuY29uc3QgYm94VVIgPSBcIlxcdTI1NUFcIjtcbmNvbnN0IGJveHYgPSBcIlxcdTI1MDJcIjtcbmNvbnN0IGJveFYgPSBcIlxcdTI1NTFcIjtcbmNvbnN0IGJveHZoID0gXCJcXHUyNTNDXCI7XG5jb25zdCBib3h2SCA9IFwiXFx1MjU2QVwiO1xuY29uc3QgYm94VmggPSBcIlxcdTI1NkJcIjtcbmNvbnN0IGJveFZIID0gXCJcXHUyNTZDXCI7XG5jb25zdCBib3h2bCA9IFwiXFx1MjUyNFwiO1xuY29uc3QgYm94dkwgPSBcIlxcdTI1NjFcIjtcbmNvbnN0IGJveFZsID0gXCJcXHUyNTYyXCI7XG5jb25zdCBib3hWTCA9IFwiXFx1MjU2M1wiO1xuY29uc3QgYm94dnIgPSBcIlxcdTI1MUNcIjtcbmNvbnN0IGJveHZSID0gXCJcXHUyNTVFXCI7XG5jb25zdCBib3hWciA9IFwiXFx1MjU1RlwiO1xuY29uc3QgYm94VlIgPSBcIlxcdTI1NjBcIjtcbmNvbnN0IGJwcmltZSA9IFwiXFx1MjAzNVwiO1xuY29uc3QgYnJldmUgPSBcIlxcdTAyRDhcIjtcbmNvbnN0IEJyZXZlID0gXCJcXHUwMkQ4XCI7XG5jb25zdCBicnZiYXIgPSBcIlxceEE2XCI7XG5jb25zdCBic2NyID0gXCJcXHV7MUQ0Qjd9XCI7XG5jb25zdCBCc2NyID0gXCJcXHUyMTJDXCI7XG5jb25zdCBic2VtaSA9IFwiXFx1MjA0RlwiO1xuY29uc3QgYnNpbSA9IFwiXFx1MjIzRFwiO1xuY29uc3QgYnNpbWUgPSBcIlxcdTIyQ0RcIjtcbmNvbnN0IGJzb2xiID0gXCJcXHUyOUM1XCI7XG5jb25zdCBic29sID0gXCJcXFxcXCI7XG5jb25zdCBic29saHN1YiA9IFwiXFx1MjdDOFwiO1xuY29uc3QgYnVsbCA9IFwiXFx1MjAyMlwiO1xuY29uc3QgYnVsbGV0ID0gXCJcXHUyMDIyXCI7XG5jb25zdCBidW1wID0gXCJcXHUyMjRFXCI7XG5jb25zdCBidW1wRSA9IFwiXFx1MkFBRVwiO1xuY29uc3QgYnVtcGUgPSBcIlxcdTIyNEZcIjtcbmNvbnN0IEJ1bXBlcSA9IFwiXFx1MjI0RVwiO1xuY29uc3QgYnVtcGVxID0gXCJcXHUyMjRGXCI7XG5jb25zdCBDYWN1dGUgPSBcIlxcdTAxMDZcIjtcbmNvbnN0IGNhY3V0ZSA9IFwiXFx1MDEwN1wiO1xuY29uc3QgY2FwYW5kID0gXCJcXHUyQTQ0XCI7XG5jb25zdCBjYXBicmN1cCA9IFwiXFx1MkE0OVwiO1xuY29uc3QgY2FwY2FwID0gXCJcXHUyQTRCXCI7XG5jb25zdCBjYXAgPSBcIlxcdTIyMjlcIjtcbmNvbnN0IENhcCA9IFwiXFx1MjJEMlwiO1xuY29uc3QgY2FwY3VwID0gXCJcXHUyQTQ3XCI7XG5jb25zdCBjYXBkb3QgPSBcIlxcdTJBNDBcIjtcbmNvbnN0IENhcGl0YWxEaWZmZXJlbnRpYWxEID0gXCJcXHUyMTQ1XCI7XG5jb25zdCBjYXBzID0gXCJcXHUyMjI5XFx1RkUwMFwiO1xuY29uc3QgY2FyZXQgPSBcIlxcdTIwNDFcIjtcbmNvbnN0IGNhcm9uID0gXCJcXHUwMkM3XCI7XG5jb25zdCBDYXlsZXlzID0gXCJcXHUyMTJEXCI7XG5jb25zdCBjY2FwcyA9IFwiXFx1MkE0RFwiO1xuY29uc3QgQ2Nhcm9uID0gXCJcXHUwMTBDXCI7XG5jb25zdCBjY2Fyb24gPSBcIlxcdTAxMERcIjtcbmNvbnN0IENjZWRpbCA9IFwiXFx4QzdcIjtcbmNvbnN0IGNjZWRpbCA9IFwiXFx4RTdcIjtcbmNvbnN0IENjaXJjID0gXCJcXHUwMTA4XCI7XG5jb25zdCBjY2lyYyA9IFwiXFx1MDEwOVwiO1xuY29uc3QgQ2NvbmludCA9IFwiXFx1MjIzMFwiO1xuY29uc3QgY2N1cHMgPSBcIlxcdTJBNENcIjtcbmNvbnN0IGNjdXBzc20gPSBcIlxcdTJBNTBcIjtcbmNvbnN0IENkb3QgPSBcIlxcdTAxMEFcIjtcbmNvbnN0IGNkb3QgPSBcIlxcdTAxMEJcIjtcbmNvbnN0IGNlZGlsID0gXCJcXHhCOFwiO1xuY29uc3QgQ2VkaWxsYSA9IFwiXFx4QjhcIjtcbmNvbnN0IGNlbXB0eXYgPSBcIlxcdTI5QjJcIjtcbmNvbnN0IGNlbnQgPSBcIlxceEEyXCI7XG5jb25zdCBjZW50ZXJkb3QgPSBcIlxceEI3XCI7XG5jb25zdCBDZW50ZXJEb3QgPSBcIlxceEI3XCI7XG5jb25zdCBjZnIgPSBcIlxcdXsxRDUyMH1cIjtcbmNvbnN0IENmciA9IFwiXFx1MjEyRFwiO1xuY29uc3QgQ0hjeSA9IFwiXFx1MDQyN1wiO1xuY29uc3QgY2hjeSA9IFwiXFx1MDQ0N1wiO1xuY29uc3QgY2hlY2sgPSBcIlxcdTI3MTNcIjtcbmNvbnN0IGNoZWNrbWFyayA9IFwiXFx1MjcxM1wiO1xuY29uc3QgQ2hpID0gXCJcXHUwM0E3XCI7XG5jb25zdCBjaGkgPSBcIlxcdTAzQzdcIjtcbmNvbnN0IGNpcmMgPSBcIlxcdTAyQzZcIjtcbmNvbnN0IGNpcmNlcSA9IFwiXFx1MjI1N1wiO1xuY29uc3QgY2lyY2xlYXJyb3dsZWZ0ID0gXCJcXHUyMUJBXCI7XG5jb25zdCBjaXJjbGVhcnJvd3JpZ2h0ID0gXCJcXHUyMUJCXCI7XG5jb25zdCBjaXJjbGVkYXN0ID0gXCJcXHUyMjlCXCI7XG5jb25zdCBjaXJjbGVkY2lyYyA9IFwiXFx1MjI5QVwiO1xuY29uc3QgY2lyY2xlZGRhc2ggPSBcIlxcdTIyOURcIjtcbmNvbnN0IENpcmNsZURvdCA9IFwiXFx1MjI5OVwiO1xuY29uc3QgY2lyY2xlZFIgPSBcIlxceEFFXCI7XG5jb25zdCBjaXJjbGVkUyA9IFwiXFx1MjRDOFwiO1xuY29uc3QgQ2lyY2xlTWludXMgPSBcIlxcdTIyOTZcIjtcbmNvbnN0IENpcmNsZVBsdXMgPSBcIlxcdTIyOTVcIjtcbmNvbnN0IENpcmNsZVRpbWVzID0gXCJcXHUyMjk3XCI7XG5jb25zdCBjaXIgPSBcIlxcdTI1Q0JcIjtcbmNvbnN0IGNpckUgPSBcIlxcdTI5QzNcIjtcbmNvbnN0IGNpcmUgPSBcIlxcdTIyNTdcIjtcbmNvbnN0IGNpcmZuaW50ID0gXCJcXHUyQTEwXCI7XG5jb25zdCBjaXJtaWQgPSBcIlxcdTJBRUZcIjtcbmNvbnN0IGNpcnNjaXIgPSBcIlxcdTI5QzJcIjtcbmNvbnN0IENsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbCA9IFwiXFx1MjIzMlwiO1xuY29uc3QgQ2xvc2VDdXJseURvdWJsZVF1b3RlID0gXCJcXHUyMDFEXCI7XG5jb25zdCBDbG9zZUN1cmx5UXVvdGUgPSBcIlxcdTIwMTlcIjtcbmNvbnN0IGNsdWJzID0gXCJcXHUyNjYzXCI7XG5jb25zdCBjbHVic3VpdCA9IFwiXFx1MjY2M1wiO1xuY29uc3QgY29sb24gPSBcIjpcIjtcbmNvbnN0IENvbG9uID0gXCJcXHUyMjM3XCI7XG5jb25zdCBDb2xvbmUgPSBcIlxcdTJBNzRcIjtcbmNvbnN0IGNvbG9uZSA9IFwiXFx1MjI1NFwiO1xuY29uc3QgY29sb25lcSA9IFwiXFx1MjI1NFwiO1xuY29uc3QgY29tbWEgPSBcIixcIjtcbmNvbnN0IGNvbW1hdCA9IFwiQFwiO1xuY29uc3QgY29tcCA9IFwiXFx1MjIwMVwiO1xuY29uc3QgY29tcGZuID0gXCJcXHUyMjE4XCI7XG5jb25zdCBjb21wbGVtZW50ID0gXCJcXHUyMjAxXCI7XG5jb25zdCBjb21wbGV4ZXMgPSBcIlxcdTIxMDJcIjtcbmNvbnN0IGNvbmcgPSBcIlxcdTIyNDVcIjtcbmNvbnN0IGNvbmdkb3QgPSBcIlxcdTJBNkRcIjtcbmNvbnN0IENvbmdydWVudCA9IFwiXFx1MjI2MVwiO1xuY29uc3QgY29uaW50ID0gXCJcXHUyMjJFXCI7XG5jb25zdCBDb25pbnQgPSBcIlxcdTIyMkZcIjtcbmNvbnN0IENvbnRvdXJJbnRlZ3JhbCA9IFwiXFx1MjIyRVwiO1xuY29uc3QgY29wZiA9IFwiXFx1ezFENTU0fVwiO1xuY29uc3QgQ29wZiA9IFwiXFx1MjEwMlwiO1xuY29uc3QgY29wcm9kID0gXCJcXHUyMjEwXCI7XG5jb25zdCBDb3Byb2R1Y3QgPSBcIlxcdTIyMTBcIjtcbmNvbnN0IGNvcHkkMSA9IFwiXFx4QTlcIjtcbmNvbnN0IENPUFkgPSBcIlxceEE5XCI7XG5jb25zdCBjb3B5c3IgPSBcIlxcdTIxMTdcIjtcbmNvbnN0IENvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWwgPSBcIlxcdTIyMzNcIjtcbmNvbnN0IGNyYXJyID0gXCJcXHUyMUI1XCI7XG5jb25zdCBjcm9zcyA9IFwiXFx1MjcxN1wiO1xuY29uc3QgQ3Jvc3MgPSBcIlxcdTJBMkZcIjtcbmNvbnN0IENzY3IgPSBcIlxcdXsxRDQ5RX1cIjtcbmNvbnN0IGNzY3IgPSBcIlxcdXsxRDRCOH1cIjtcbmNvbnN0IGNzdWIgPSBcIlxcdTJBQ0ZcIjtcbmNvbnN0IGNzdWJlID0gXCJcXHUyQUQxXCI7XG5jb25zdCBjc3VwID0gXCJcXHUyQUQwXCI7XG5jb25zdCBjc3VwZSA9IFwiXFx1MkFEMlwiO1xuY29uc3QgY3Rkb3QgPSBcIlxcdTIyRUZcIjtcbmNvbnN0IGN1ZGFycmwgPSBcIlxcdTI5MzhcIjtcbmNvbnN0IGN1ZGFycnIgPSBcIlxcdTI5MzVcIjtcbmNvbnN0IGN1ZXByID0gXCJcXHUyMkRFXCI7XG5jb25zdCBjdWVzYyA9IFwiXFx1MjJERlwiO1xuY29uc3QgY3VsYXJyID0gXCJcXHUyMUI2XCI7XG5jb25zdCBjdWxhcnJwID0gXCJcXHUyOTNEXCI7XG5jb25zdCBjdXBicmNhcCA9IFwiXFx1MkE0OFwiO1xuY29uc3QgY3VwY2FwID0gXCJcXHUyQTQ2XCI7XG5jb25zdCBDdXBDYXAgPSBcIlxcdTIyNERcIjtcbmNvbnN0IGN1cCA9IFwiXFx1MjIyQVwiO1xuY29uc3QgQ3VwID0gXCJcXHUyMkQzXCI7XG5jb25zdCBjdXBjdXAgPSBcIlxcdTJBNEFcIjtcbmNvbnN0IGN1cGRvdCA9IFwiXFx1MjI4RFwiO1xuY29uc3QgY3Vwb3IgPSBcIlxcdTJBNDVcIjtcbmNvbnN0IGN1cHMgPSBcIlxcdTIyMkFcXHVGRTAwXCI7XG5jb25zdCBjdXJhcnIgPSBcIlxcdTIxQjdcIjtcbmNvbnN0IGN1cmFycm0gPSBcIlxcdTI5M0NcIjtcbmNvbnN0IGN1cmx5ZXFwcmVjID0gXCJcXHUyMkRFXCI7XG5jb25zdCBjdXJseWVxc3VjYyA9IFwiXFx1MjJERlwiO1xuY29uc3QgY3VybHl2ZWUgPSBcIlxcdTIyQ0VcIjtcbmNvbnN0IGN1cmx5d2VkZ2UgPSBcIlxcdTIyQ0ZcIjtcbmNvbnN0IGN1cnJlbiA9IFwiXFx4QTRcIjtcbmNvbnN0IGN1cnZlYXJyb3dsZWZ0ID0gXCJcXHUyMUI2XCI7XG5jb25zdCBjdXJ2ZWFycm93cmlnaHQgPSBcIlxcdTIxQjdcIjtcbmNvbnN0IGN1dmVlID0gXCJcXHUyMkNFXCI7XG5jb25zdCBjdXdlZCA9IFwiXFx1MjJDRlwiO1xuY29uc3QgY3djb25pbnQgPSBcIlxcdTIyMzJcIjtcbmNvbnN0IGN3aW50ID0gXCJcXHUyMjMxXCI7XG5jb25zdCBjeWxjdHkgPSBcIlxcdTIzMkRcIjtcbmNvbnN0IGRhZ2dlciA9IFwiXFx1MjAyMFwiO1xuY29uc3QgRGFnZ2VyID0gXCJcXHUyMDIxXCI7XG5jb25zdCBkYWxldGggPSBcIlxcdTIxMzhcIjtcbmNvbnN0IGRhcnIgPSBcIlxcdTIxOTNcIjtcbmNvbnN0IERhcnIgPSBcIlxcdTIxQTFcIjtcbmNvbnN0IGRBcnIgPSBcIlxcdTIxRDNcIjtcbmNvbnN0IGRhc2ggPSBcIlxcdTIwMTBcIjtcbmNvbnN0IERhc2h2ID0gXCJcXHUyQUU0XCI7XG5jb25zdCBkYXNodiA9IFwiXFx1MjJBM1wiO1xuY29uc3QgZGJrYXJvdyA9IFwiXFx1MjkwRlwiO1xuY29uc3QgZGJsYWMgPSBcIlxcdTAyRERcIjtcbmNvbnN0IERjYXJvbiA9IFwiXFx1MDEwRVwiO1xuY29uc3QgZGNhcm9uID0gXCJcXHUwMTBGXCI7XG5jb25zdCBEY3kgPSBcIlxcdTA0MTRcIjtcbmNvbnN0IGRjeSA9IFwiXFx1MDQzNFwiO1xuY29uc3QgZGRhZ2dlciA9IFwiXFx1MjAyMVwiO1xuY29uc3QgZGRhcnIgPSBcIlxcdTIxQ0FcIjtcbmNvbnN0IEREID0gXCJcXHUyMTQ1XCI7XG5jb25zdCBkZCA9IFwiXFx1MjE0NlwiO1xuY29uc3QgRERvdHJhaGQgPSBcIlxcdTI5MTFcIjtcbmNvbnN0IGRkb3RzZXEgPSBcIlxcdTJBNzdcIjtcbmNvbnN0IGRlZyA9IFwiXFx4QjBcIjtcbmNvbnN0IERlbCA9IFwiXFx1MjIwN1wiO1xuY29uc3QgRGVsdGEgPSBcIlxcdTAzOTRcIjtcbmNvbnN0IGRlbHRhID0gXCJcXHUwM0I0XCI7XG5jb25zdCBkZW1wdHl2ID0gXCJcXHUyOUIxXCI7XG5jb25zdCBkZmlzaHQgPSBcIlxcdTI5N0ZcIjtcbmNvbnN0IERmciA9IFwiXFx1ezFENTA3fVwiO1xuY29uc3QgZGZyID0gXCJcXHV7MUQ1MjF9XCI7XG5jb25zdCBkSGFyID0gXCJcXHUyOTY1XCI7XG5jb25zdCBkaGFybCA9IFwiXFx1MjFDM1wiO1xuY29uc3QgZGhhcnIgPSBcIlxcdTIxQzJcIjtcbmNvbnN0IERpYWNyaXRpY2FsQWN1dGUgPSBcIlxceEI0XCI7XG5jb25zdCBEaWFjcml0aWNhbERvdCA9IFwiXFx1MDJEOVwiO1xuY29uc3QgRGlhY3JpdGljYWxEb3VibGVBY3V0ZSA9IFwiXFx1MDJERFwiO1xuY29uc3QgRGlhY3JpdGljYWxHcmF2ZSA9IFwiYFwiO1xuY29uc3QgRGlhY3JpdGljYWxUaWxkZSA9IFwiXFx1MDJEQ1wiO1xuY29uc3QgZGlhbSA9IFwiXFx1MjJDNFwiO1xuY29uc3QgZGlhbW9uZCA9IFwiXFx1MjJDNFwiO1xuY29uc3QgRGlhbW9uZCA9IFwiXFx1MjJDNFwiO1xuY29uc3QgZGlhbW9uZHN1aXQgPSBcIlxcdTI2NjZcIjtcbmNvbnN0IGRpYW1zID0gXCJcXHUyNjY2XCI7XG5jb25zdCBkaWUgPSBcIlxceEE4XCI7XG5jb25zdCBEaWZmZXJlbnRpYWxEID0gXCJcXHUyMTQ2XCI7XG5jb25zdCBkaWdhbW1hID0gXCJcXHUwM0REXCI7XG5jb25zdCBkaXNpbiA9IFwiXFx1MjJGMlwiO1xuY29uc3QgZGl2ID0gXCJcXHhGN1wiO1xuY29uc3QgZGl2aWRlID0gXCJcXHhGN1wiO1xuY29uc3QgZGl2aWRlb250aW1lcyA9IFwiXFx1MjJDN1wiO1xuY29uc3QgZGl2b254ID0gXCJcXHUyMkM3XCI7XG5jb25zdCBESmN5ID0gXCJcXHUwNDAyXCI7XG5jb25zdCBkamN5ID0gXCJcXHUwNDUyXCI7XG5jb25zdCBkbGNvcm4gPSBcIlxcdTIzMUVcIjtcbmNvbnN0IGRsY3JvcCA9IFwiXFx1MjMwRFwiO1xuY29uc3QgZG9sbGFyID0gXCIkXCI7XG5jb25zdCBEb3BmID0gXCJcXHV7MUQ1M0J9XCI7XG5jb25zdCBkb3BmID0gXCJcXHV7MUQ1NTV9XCI7XG5jb25zdCBEb3QgPSBcIlxceEE4XCI7XG5jb25zdCBkb3QgPSBcIlxcdTAyRDlcIjtcbmNvbnN0IERvdERvdCA9IFwiXFx1MjBEQ1wiO1xuY29uc3QgZG90ZXEgPSBcIlxcdTIyNTBcIjtcbmNvbnN0IGRvdGVxZG90ID0gXCJcXHUyMjUxXCI7XG5jb25zdCBEb3RFcXVhbCA9IFwiXFx1MjI1MFwiO1xuY29uc3QgZG90bWludXMgPSBcIlxcdTIyMzhcIjtcbmNvbnN0IGRvdHBsdXMgPSBcIlxcdTIyMTRcIjtcbmNvbnN0IGRvdHNxdWFyZSA9IFwiXFx1MjJBMVwiO1xuY29uc3QgZG91YmxlYmFyd2VkZ2UgPSBcIlxcdTIzMDZcIjtcbmNvbnN0IERvdWJsZUNvbnRvdXJJbnRlZ3JhbCA9IFwiXFx1MjIyRlwiO1xuY29uc3QgRG91YmxlRG90ID0gXCJcXHhBOFwiO1xuY29uc3QgRG91YmxlRG93bkFycm93ID0gXCJcXHUyMUQzXCI7XG5jb25zdCBEb3VibGVMZWZ0QXJyb3cgPSBcIlxcdTIxRDBcIjtcbmNvbnN0IERvdWJsZUxlZnRSaWdodEFycm93ID0gXCJcXHUyMUQ0XCI7XG5jb25zdCBEb3VibGVMZWZ0VGVlID0gXCJcXHUyQUU0XCI7XG5jb25zdCBEb3VibGVMb25nTGVmdEFycm93ID0gXCJcXHUyN0Y4XCI7XG5jb25zdCBEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3cgPSBcIlxcdTI3RkFcIjtcbmNvbnN0IERvdWJsZUxvbmdSaWdodEFycm93ID0gXCJcXHUyN0Y5XCI7XG5jb25zdCBEb3VibGVSaWdodEFycm93ID0gXCJcXHUyMUQyXCI7XG5jb25zdCBEb3VibGVSaWdodFRlZSA9IFwiXFx1MjJBOFwiO1xuY29uc3QgRG91YmxlVXBBcnJvdyA9IFwiXFx1MjFEMVwiO1xuY29uc3QgRG91YmxlVXBEb3duQXJyb3cgPSBcIlxcdTIxRDVcIjtcbmNvbnN0IERvdWJsZVZlcnRpY2FsQmFyID0gXCJcXHUyMjI1XCI7XG5jb25zdCBEb3duQXJyb3dCYXIgPSBcIlxcdTI5MTNcIjtcbmNvbnN0IGRvd25hcnJvdyA9IFwiXFx1MjE5M1wiO1xuY29uc3QgRG93bkFycm93ID0gXCJcXHUyMTkzXCI7XG5jb25zdCBEb3duYXJyb3cgPSBcIlxcdTIxRDNcIjtcbmNvbnN0IERvd25BcnJvd1VwQXJyb3cgPSBcIlxcdTIxRjVcIjtcbmNvbnN0IERvd25CcmV2ZSA9IFwiXFx1MDMxMVwiO1xuY29uc3QgZG93bmRvd25hcnJvd3MgPSBcIlxcdTIxQ0FcIjtcbmNvbnN0IGRvd25oYXJwb29ubGVmdCA9IFwiXFx1MjFDM1wiO1xuY29uc3QgZG93bmhhcnBvb25yaWdodCA9IFwiXFx1MjFDMlwiO1xuY29uc3QgRG93bkxlZnRSaWdodFZlY3RvciA9IFwiXFx1Mjk1MFwiO1xuY29uc3QgRG93bkxlZnRUZWVWZWN0b3IgPSBcIlxcdTI5NUVcIjtcbmNvbnN0IERvd25MZWZ0VmVjdG9yQmFyID0gXCJcXHUyOTU2XCI7XG5jb25zdCBEb3duTGVmdFZlY3RvciA9IFwiXFx1MjFCRFwiO1xuY29uc3QgRG93blJpZ2h0VGVlVmVjdG9yID0gXCJcXHUyOTVGXCI7XG5jb25zdCBEb3duUmlnaHRWZWN0b3JCYXIgPSBcIlxcdTI5NTdcIjtcbmNvbnN0IERvd25SaWdodFZlY3RvciA9IFwiXFx1MjFDMVwiO1xuY29uc3QgRG93blRlZUFycm93ID0gXCJcXHUyMUE3XCI7XG5jb25zdCBEb3duVGVlID0gXCJcXHUyMkE0XCI7XG5jb25zdCBkcmJrYXJvdyA9IFwiXFx1MjkxMFwiO1xuY29uc3QgZHJjb3JuID0gXCJcXHUyMzFGXCI7XG5jb25zdCBkcmNyb3AgPSBcIlxcdTIzMENcIjtcbmNvbnN0IERzY3IgPSBcIlxcdXsxRDQ5Rn1cIjtcbmNvbnN0IGRzY3IgPSBcIlxcdXsxRDRCOX1cIjtcbmNvbnN0IERTY3kgPSBcIlxcdTA0MDVcIjtcbmNvbnN0IGRzY3kgPSBcIlxcdTA0NTVcIjtcbmNvbnN0IGRzb2wgPSBcIlxcdTI5RjZcIjtcbmNvbnN0IERzdHJvayA9IFwiXFx1MDExMFwiO1xuY29uc3QgZHN0cm9rID0gXCJcXHUwMTExXCI7XG5jb25zdCBkdGRvdCA9IFwiXFx1MjJGMVwiO1xuY29uc3QgZHRyaSA9IFwiXFx1MjVCRlwiO1xuY29uc3QgZHRyaWYgPSBcIlxcdTI1QkVcIjtcbmNvbnN0IGR1YXJyID0gXCJcXHUyMUY1XCI7XG5jb25zdCBkdWhhciA9IFwiXFx1Mjk2RlwiO1xuY29uc3QgZHdhbmdsZSA9IFwiXFx1MjlBNlwiO1xuY29uc3QgRFpjeSA9IFwiXFx1MDQwRlwiO1xuY29uc3QgZHpjeSA9IFwiXFx1MDQ1RlwiO1xuY29uc3QgZHppZ3JhcnIgPSBcIlxcdTI3RkZcIjtcbmNvbnN0IEVhY3V0ZSA9IFwiXFx4QzlcIjtcbmNvbnN0IGVhY3V0ZSA9IFwiXFx4RTlcIjtcbmNvbnN0IGVhc3RlciA9IFwiXFx1MkE2RVwiO1xuY29uc3QgRWNhcm9uID0gXCJcXHUwMTFBXCI7XG5jb25zdCBlY2Fyb24gPSBcIlxcdTAxMUJcIjtcbmNvbnN0IEVjaXJjID0gXCJcXHhDQVwiO1xuY29uc3QgZWNpcmMgPSBcIlxceEVBXCI7XG5jb25zdCBlY2lyID0gXCJcXHUyMjU2XCI7XG5jb25zdCBlY29sb24gPSBcIlxcdTIyNTVcIjtcbmNvbnN0IEVjeSA9IFwiXFx1MDQyRFwiO1xuY29uc3QgZWN5ID0gXCJcXHUwNDREXCI7XG5jb25zdCBlRERvdCA9IFwiXFx1MkE3N1wiO1xuY29uc3QgRWRvdCA9IFwiXFx1MDExNlwiO1xuY29uc3QgZWRvdCA9IFwiXFx1MDExN1wiO1xuY29uc3QgZURvdCA9IFwiXFx1MjI1MVwiO1xuY29uc3QgZWUgPSBcIlxcdTIxNDdcIjtcbmNvbnN0IGVmRG90ID0gXCJcXHUyMjUyXCI7XG5jb25zdCBFZnIgPSBcIlxcdXsxRDUwOH1cIjtcbmNvbnN0IGVmciA9IFwiXFx1ezFENTIyfVwiO1xuY29uc3QgZWcgPSBcIlxcdTJBOUFcIjtcbmNvbnN0IEVncmF2ZSA9IFwiXFx4QzhcIjtcbmNvbnN0IGVncmF2ZSA9IFwiXFx4RThcIjtcbmNvbnN0IGVncyA9IFwiXFx1MkE5NlwiO1xuY29uc3QgZWdzZG90ID0gXCJcXHUyQTk4XCI7XG5jb25zdCBlbCA9IFwiXFx1MkE5OVwiO1xuY29uc3QgRWxlbWVudCA9IFwiXFx1MjIwOFwiO1xuY29uc3QgZWxpbnRlcnMgPSBcIlxcdTIzRTdcIjtcbmNvbnN0IGVsbCA9IFwiXFx1MjExM1wiO1xuY29uc3QgZWxzID0gXCJcXHUyQTk1XCI7XG5jb25zdCBlbHNkb3QgPSBcIlxcdTJBOTdcIjtcbmNvbnN0IEVtYWNyID0gXCJcXHUwMTEyXCI7XG5jb25zdCBlbWFjciA9IFwiXFx1MDExM1wiO1xuY29uc3QgZW1wdHkgPSBcIlxcdTIyMDVcIjtcbmNvbnN0IGVtcHR5c2V0ID0gXCJcXHUyMjA1XCI7XG5jb25zdCBFbXB0eVNtYWxsU3F1YXJlID0gXCJcXHUyNUZCXCI7XG5jb25zdCBlbXB0eXYgPSBcIlxcdTIyMDVcIjtcbmNvbnN0IEVtcHR5VmVyeVNtYWxsU3F1YXJlID0gXCJcXHUyNUFCXCI7XG5jb25zdCBlbXNwMTMgPSBcIlxcdTIwMDRcIjtcbmNvbnN0IGVtc3AxNCA9IFwiXFx1MjAwNVwiO1xuY29uc3QgZW1zcCA9IFwiXFx1MjAwM1wiO1xuY29uc3QgRU5HID0gXCJcXHUwMTRBXCI7XG5jb25zdCBlbmcgPSBcIlxcdTAxNEJcIjtcbmNvbnN0IGVuc3AgPSBcIlxcdTIwMDJcIjtcbmNvbnN0IEVvZ29uID0gXCJcXHUwMTE4XCI7XG5jb25zdCBlb2dvbiA9IFwiXFx1MDExOVwiO1xuY29uc3QgRW9wZiA9IFwiXFx1ezFENTNDfVwiO1xuY29uc3QgZW9wZiA9IFwiXFx1ezFENTU2fVwiO1xuY29uc3QgZXBhciA9IFwiXFx1MjJENVwiO1xuY29uc3QgZXBhcnNsID0gXCJcXHUyOUUzXCI7XG5jb25zdCBlcGx1cyA9IFwiXFx1MkE3MVwiO1xuY29uc3QgZXBzaSA9IFwiXFx1MDNCNVwiO1xuY29uc3QgRXBzaWxvbiA9IFwiXFx1MDM5NVwiO1xuY29uc3QgZXBzaWxvbiA9IFwiXFx1MDNCNVwiO1xuY29uc3QgZXBzaXYgPSBcIlxcdTAzRjVcIjtcbmNvbnN0IGVxY2lyYyA9IFwiXFx1MjI1NlwiO1xuY29uc3QgZXFjb2xvbiA9IFwiXFx1MjI1NVwiO1xuY29uc3QgZXFzaW0gPSBcIlxcdTIyNDJcIjtcbmNvbnN0IGVxc2xhbnRndHIgPSBcIlxcdTJBOTZcIjtcbmNvbnN0IGVxc2xhbnRsZXNzID0gXCJcXHUyQTk1XCI7XG5jb25zdCBFcXVhbCA9IFwiXFx1MkE3NVwiO1xuY29uc3QgZXF1YWxzID0gXCI9XCI7XG5jb25zdCBFcXVhbFRpbGRlID0gXCJcXHUyMjQyXCI7XG5jb25zdCBlcXVlc3QgPSBcIlxcdTIyNUZcIjtcbmNvbnN0IEVxdWlsaWJyaXVtID0gXCJcXHUyMUNDXCI7XG5jb25zdCBlcXVpdiA9IFwiXFx1MjI2MVwiO1xuY29uc3QgZXF1aXZERCA9IFwiXFx1MkE3OFwiO1xuY29uc3QgZXF2cGFyc2wgPSBcIlxcdTI5RTVcIjtcbmNvbnN0IGVyYXJyID0gXCJcXHUyOTcxXCI7XG5jb25zdCBlckRvdCA9IFwiXFx1MjI1M1wiO1xuY29uc3QgZXNjciA9IFwiXFx1MjEyRlwiO1xuY29uc3QgRXNjciA9IFwiXFx1MjEzMFwiO1xuY29uc3QgZXNkb3QgPSBcIlxcdTIyNTBcIjtcbmNvbnN0IEVzaW0gPSBcIlxcdTJBNzNcIjtcbmNvbnN0IGVzaW0gPSBcIlxcdTIyNDJcIjtcbmNvbnN0IEV0YSA9IFwiXFx1MDM5N1wiO1xuY29uc3QgZXRhID0gXCJcXHUwM0I3XCI7XG5jb25zdCBFVEggPSBcIlxceEQwXCI7XG5jb25zdCBldGggPSBcIlxceEYwXCI7XG5jb25zdCBFdW1sID0gXCJcXHhDQlwiO1xuY29uc3QgZXVtbCA9IFwiXFx4RUJcIjtcbmNvbnN0IGV1cm8gPSBcIlxcdTIwQUNcIjtcbmNvbnN0IGV4Y2wgPSBcIiFcIjtcbmNvbnN0IGV4aXN0ID0gXCJcXHUyMjAzXCI7XG5jb25zdCBFeGlzdHMgPSBcIlxcdTIyMDNcIjtcbmNvbnN0IGV4cGVjdGF0aW9uID0gXCJcXHUyMTMwXCI7XG5jb25zdCBleHBvbmVudGlhbGUgPSBcIlxcdTIxNDdcIjtcbmNvbnN0IEV4cG9uZW50aWFsRSA9IFwiXFx1MjE0N1wiO1xuY29uc3QgZmFsbGluZ2RvdHNlcSA9IFwiXFx1MjI1MlwiO1xuY29uc3QgRmN5ID0gXCJcXHUwNDI0XCI7XG5jb25zdCBmY3kgPSBcIlxcdTA0NDRcIjtcbmNvbnN0IGZlbWFsZSA9IFwiXFx1MjY0MFwiO1xuY29uc3QgZmZpbGlnID0gXCJcXHVGQjAzXCI7XG5jb25zdCBmZmxpZyA9IFwiXFx1RkIwMFwiO1xuY29uc3QgZmZsbGlnID0gXCJcXHVGQjA0XCI7XG5jb25zdCBGZnIgPSBcIlxcdXsxRDUwOX1cIjtcbmNvbnN0IGZmciA9IFwiXFx1ezFENTIzfVwiO1xuY29uc3QgZmlsaWcgPSBcIlxcdUZCMDFcIjtcbmNvbnN0IEZpbGxlZFNtYWxsU3F1YXJlID0gXCJcXHUyNUZDXCI7XG5jb25zdCBGaWxsZWRWZXJ5U21hbGxTcXVhcmUgPSBcIlxcdTI1QUFcIjtcbmNvbnN0IGZqbGlnID0gXCJmalwiO1xuY29uc3QgZmxhdCA9IFwiXFx1MjY2RFwiO1xuY29uc3QgZmxsaWcgPSBcIlxcdUZCMDJcIjtcbmNvbnN0IGZsdG5zID0gXCJcXHUyNUIxXCI7XG5jb25zdCBmbm9mID0gXCJcXHUwMTkyXCI7XG5jb25zdCBGb3BmID0gXCJcXHV7MUQ1M0R9XCI7XG5jb25zdCBmb3BmID0gXCJcXHV7MUQ1NTd9XCI7XG5jb25zdCBmb3JhbGwgPSBcIlxcdTIyMDBcIjtcbmNvbnN0IEZvckFsbCA9IFwiXFx1MjIwMFwiO1xuY29uc3QgZm9yayA9IFwiXFx1MjJENFwiO1xuY29uc3QgZm9ya3YgPSBcIlxcdTJBRDlcIjtcbmNvbnN0IEZvdXJpZXJ0cmYgPSBcIlxcdTIxMzFcIjtcbmNvbnN0IGZwYXJ0aW50ID0gXCJcXHUyQTBEXCI7XG5jb25zdCBmcmFjMTIgPSBcIlxceEJEXCI7XG5jb25zdCBmcmFjMTMgPSBcIlxcdTIxNTNcIjtcbmNvbnN0IGZyYWMxNCA9IFwiXFx4QkNcIjtcbmNvbnN0IGZyYWMxNSA9IFwiXFx1MjE1NVwiO1xuY29uc3QgZnJhYzE2ID0gXCJcXHUyMTU5XCI7XG5jb25zdCBmcmFjMTggPSBcIlxcdTIxNUJcIjtcbmNvbnN0IGZyYWMyMyA9IFwiXFx1MjE1NFwiO1xuY29uc3QgZnJhYzI1ID0gXCJcXHUyMTU2XCI7XG5jb25zdCBmcmFjMzQgPSBcIlxceEJFXCI7XG5jb25zdCBmcmFjMzUgPSBcIlxcdTIxNTdcIjtcbmNvbnN0IGZyYWMzOCA9IFwiXFx1MjE1Q1wiO1xuY29uc3QgZnJhYzQ1ID0gXCJcXHUyMTU4XCI7XG5jb25zdCBmcmFjNTYgPSBcIlxcdTIxNUFcIjtcbmNvbnN0IGZyYWM1OCA9IFwiXFx1MjE1RFwiO1xuY29uc3QgZnJhYzc4ID0gXCJcXHUyMTVFXCI7XG5jb25zdCBmcmFzbCA9IFwiXFx1MjA0NFwiO1xuY29uc3QgZnJvd24gPSBcIlxcdTIzMjJcIjtcbmNvbnN0IGZzY3IgPSBcIlxcdXsxRDRCQn1cIjtcbmNvbnN0IEZzY3IgPSBcIlxcdTIxMzFcIjtcbmNvbnN0IGdhY3V0ZSA9IFwiXFx1MDFGNVwiO1xuY29uc3QgR2FtbWEgPSBcIlxcdTAzOTNcIjtcbmNvbnN0IGdhbW1hID0gXCJcXHUwM0IzXCI7XG5jb25zdCBHYW1tYWQgPSBcIlxcdTAzRENcIjtcbmNvbnN0IGdhbW1hZCA9IFwiXFx1MDNERFwiO1xuY29uc3QgZ2FwID0gXCJcXHUyQTg2XCI7XG5jb25zdCBHYnJldmUgPSBcIlxcdTAxMUVcIjtcbmNvbnN0IGdicmV2ZSA9IFwiXFx1MDExRlwiO1xuY29uc3QgR2NlZGlsID0gXCJcXHUwMTIyXCI7XG5jb25zdCBHY2lyYyA9IFwiXFx1MDExQ1wiO1xuY29uc3QgZ2NpcmMgPSBcIlxcdTAxMURcIjtcbmNvbnN0IEdjeSA9IFwiXFx1MDQxM1wiO1xuY29uc3QgZ2N5ID0gXCJcXHUwNDMzXCI7XG5jb25zdCBHZG90ID0gXCJcXHUwMTIwXCI7XG5jb25zdCBnZG90ID0gXCJcXHUwMTIxXCI7XG5jb25zdCBnZSA9IFwiXFx1MjI2NVwiO1xuY29uc3QgZ0UgPSBcIlxcdTIyNjdcIjtcbmNvbnN0IGdFbCA9IFwiXFx1MkE4Q1wiO1xuY29uc3QgZ2VsID0gXCJcXHUyMkRCXCI7XG5jb25zdCBnZXEgPSBcIlxcdTIyNjVcIjtcbmNvbnN0IGdlcXEgPSBcIlxcdTIyNjdcIjtcbmNvbnN0IGdlcXNsYW50ID0gXCJcXHUyQTdFXCI7XG5jb25zdCBnZXNjYyA9IFwiXFx1MkFBOVwiO1xuY29uc3QgZ2VzID0gXCJcXHUyQTdFXCI7XG5jb25zdCBnZXNkb3QgPSBcIlxcdTJBODBcIjtcbmNvbnN0IGdlc2RvdG8gPSBcIlxcdTJBODJcIjtcbmNvbnN0IGdlc2RvdG9sID0gXCJcXHUyQTg0XCI7XG5jb25zdCBnZXNsID0gXCJcXHUyMkRCXFx1RkUwMFwiO1xuY29uc3QgZ2VzbGVzID0gXCJcXHUyQTk0XCI7XG5jb25zdCBHZnIgPSBcIlxcdXsxRDUwQX1cIjtcbmNvbnN0IGdmciA9IFwiXFx1ezFENTI0fVwiO1xuY29uc3QgZ2cgPSBcIlxcdTIyNkJcIjtcbmNvbnN0IEdnID0gXCJcXHUyMkQ5XCI7XG5jb25zdCBnZ2cgPSBcIlxcdTIyRDlcIjtcbmNvbnN0IGdpbWVsID0gXCJcXHUyMTM3XCI7XG5jb25zdCBHSmN5ID0gXCJcXHUwNDAzXCI7XG5jb25zdCBnamN5ID0gXCJcXHUwNDUzXCI7XG5jb25zdCBnbGEgPSBcIlxcdTJBQTVcIjtcbmNvbnN0IGdsID0gXCJcXHUyMjc3XCI7XG5jb25zdCBnbEUgPSBcIlxcdTJBOTJcIjtcbmNvbnN0IGdsaiA9IFwiXFx1MkFBNFwiO1xuY29uc3QgZ25hcCA9IFwiXFx1MkE4QVwiO1xuY29uc3QgZ25hcHByb3ggPSBcIlxcdTJBOEFcIjtcbmNvbnN0IGduZSA9IFwiXFx1MkE4OFwiO1xuY29uc3QgZ25FID0gXCJcXHUyMjY5XCI7XG5jb25zdCBnbmVxID0gXCJcXHUyQTg4XCI7XG5jb25zdCBnbmVxcSA9IFwiXFx1MjI2OVwiO1xuY29uc3QgZ25zaW0gPSBcIlxcdTIyRTdcIjtcbmNvbnN0IEdvcGYgPSBcIlxcdXsxRDUzRX1cIjtcbmNvbnN0IGdvcGYgPSBcIlxcdXsxRDU1OH1cIjtcbmNvbnN0IGdyYXZlID0gXCJgXCI7XG5jb25zdCBHcmVhdGVyRXF1YWwgPSBcIlxcdTIyNjVcIjtcbmNvbnN0IEdyZWF0ZXJFcXVhbExlc3MgPSBcIlxcdTIyREJcIjtcbmNvbnN0IEdyZWF0ZXJGdWxsRXF1YWwgPSBcIlxcdTIyNjdcIjtcbmNvbnN0IEdyZWF0ZXJHcmVhdGVyID0gXCJcXHUyQUEyXCI7XG5jb25zdCBHcmVhdGVyTGVzcyA9IFwiXFx1MjI3N1wiO1xuY29uc3QgR3JlYXRlclNsYW50RXF1YWwgPSBcIlxcdTJBN0VcIjtcbmNvbnN0IEdyZWF0ZXJUaWxkZSA9IFwiXFx1MjI3M1wiO1xuY29uc3QgR3NjciA9IFwiXFx1ezFENEEyfVwiO1xuY29uc3QgZ3NjciA9IFwiXFx1MjEwQVwiO1xuY29uc3QgZ3NpbSA9IFwiXFx1MjI3M1wiO1xuY29uc3QgZ3NpbWUgPSBcIlxcdTJBOEVcIjtcbmNvbnN0IGdzaW1sID0gXCJcXHUyQTkwXCI7XG5jb25zdCBndGNjID0gXCJcXHUyQUE3XCI7XG5jb25zdCBndGNpciA9IFwiXFx1MkE3QVwiO1xuY29uc3QgZ3QgPSBcIj5cIjtcbmNvbnN0IEdUID0gXCI+XCI7XG5jb25zdCBHdCA9IFwiXFx1MjI2QlwiO1xuY29uc3QgZ3Rkb3QgPSBcIlxcdTIyRDdcIjtcbmNvbnN0IGd0bFBhciA9IFwiXFx1Mjk5NVwiO1xuY29uc3QgZ3RxdWVzdCA9IFwiXFx1MkE3Q1wiO1xuY29uc3QgZ3RyYXBwcm94ID0gXCJcXHUyQTg2XCI7XG5jb25zdCBndHJhcnIgPSBcIlxcdTI5NzhcIjtcbmNvbnN0IGd0cmRvdCA9IFwiXFx1MjJEN1wiO1xuY29uc3QgZ3RyZXFsZXNzID0gXCJcXHUyMkRCXCI7XG5jb25zdCBndHJlcXFsZXNzID0gXCJcXHUyQThDXCI7XG5jb25zdCBndHJsZXNzID0gXCJcXHUyMjc3XCI7XG5jb25zdCBndHJzaW0gPSBcIlxcdTIyNzNcIjtcbmNvbnN0IGd2ZXJ0bmVxcSA9IFwiXFx1MjI2OVxcdUZFMDBcIjtcbmNvbnN0IGd2bkUgPSBcIlxcdTIyNjlcXHVGRTAwXCI7XG5jb25zdCBIYWNlayA9IFwiXFx1MDJDN1wiO1xuY29uc3QgaGFpcnNwID0gXCJcXHUyMDBBXCI7XG5jb25zdCBoYWxmID0gXCJcXHhCRFwiO1xuY29uc3QgaGFtaWx0ID0gXCJcXHUyMTBCXCI7XG5jb25zdCBIQVJEY3kgPSBcIlxcdTA0MkFcIjtcbmNvbnN0IGhhcmRjeSA9IFwiXFx1MDQ0QVwiO1xuY29uc3QgaGFycmNpciA9IFwiXFx1Mjk0OFwiO1xuY29uc3QgaGFyciA9IFwiXFx1MjE5NFwiO1xuY29uc3QgaEFyciA9IFwiXFx1MjFENFwiO1xuY29uc3QgaGFycncgPSBcIlxcdTIxQURcIjtcbmNvbnN0IEhhdCA9IFwiXlwiO1xuY29uc3QgaGJhciA9IFwiXFx1MjEwRlwiO1xuY29uc3QgSGNpcmMgPSBcIlxcdTAxMjRcIjtcbmNvbnN0IGhjaXJjID0gXCJcXHUwMTI1XCI7XG5jb25zdCBoZWFydHMgPSBcIlxcdTI2NjVcIjtcbmNvbnN0IGhlYXJ0c3VpdCA9IFwiXFx1MjY2NVwiO1xuY29uc3QgaGVsbGlwID0gXCJcXHUyMDI2XCI7XG5jb25zdCBoZXJjb24gPSBcIlxcdTIyQjlcIjtcbmNvbnN0IGhmciA9IFwiXFx1ezFENTI1fVwiO1xuY29uc3QgSGZyID0gXCJcXHUyMTBDXCI7XG5jb25zdCBIaWxiZXJ0U3BhY2UgPSBcIlxcdTIxMEJcIjtcbmNvbnN0IGhrc2Vhcm93ID0gXCJcXHUyOTI1XCI7XG5jb25zdCBoa3N3YXJvdyA9IFwiXFx1MjkyNlwiO1xuY29uc3QgaG9hcnIgPSBcIlxcdTIxRkZcIjtcbmNvbnN0IGhvbXRodCA9IFwiXFx1MjIzQlwiO1xuY29uc3QgaG9va2xlZnRhcnJvdyA9IFwiXFx1MjFBOVwiO1xuY29uc3QgaG9va3JpZ2h0YXJyb3cgPSBcIlxcdTIxQUFcIjtcbmNvbnN0IGhvcGYgPSBcIlxcdXsxRDU1OX1cIjtcbmNvbnN0IEhvcGYgPSBcIlxcdTIxMERcIjtcbmNvbnN0IGhvcmJhciA9IFwiXFx1MjAxNVwiO1xuY29uc3QgSG9yaXpvbnRhbExpbmUgPSBcIlxcdTI1MDBcIjtcbmNvbnN0IGhzY3IgPSBcIlxcdXsxRDRCRH1cIjtcbmNvbnN0IEhzY3IgPSBcIlxcdTIxMEJcIjtcbmNvbnN0IGhzbGFzaCA9IFwiXFx1MjEwRlwiO1xuY29uc3QgSHN0cm9rID0gXCJcXHUwMTI2XCI7XG5jb25zdCBoc3Ryb2sgPSBcIlxcdTAxMjdcIjtcbmNvbnN0IEh1bXBEb3duSHVtcCA9IFwiXFx1MjI0RVwiO1xuY29uc3QgSHVtcEVxdWFsID0gXCJcXHUyMjRGXCI7XG5jb25zdCBoeWJ1bGwgPSBcIlxcdTIwNDNcIjtcbmNvbnN0IGh5cGhlbiA9IFwiXFx1MjAxMFwiO1xuY29uc3QgSWFjdXRlID0gXCJcXHhDRFwiO1xuY29uc3QgaWFjdXRlID0gXCJcXHhFRFwiO1xuY29uc3QgaWMgPSBcIlxcdTIwNjNcIjtcbmNvbnN0IEljaXJjID0gXCJcXHhDRVwiO1xuY29uc3QgaWNpcmMgPSBcIlxceEVFXCI7XG5jb25zdCBJY3kgPSBcIlxcdTA0MThcIjtcbmNvbnN0IGljeSA9IFwiXFx1MDQzOFwiO1xuY29uc3QgSWRvdCA9IFwiXFx1MDEzMFwiO1xuY29uc3QgSUVjeSA9IFwiXFx1MDQxNVwiO1xuY29uc3QgaWVjeSA9IFwiXFx1MDQzNVwiO1xuY29uc3QgaWV4Y2wgPSBcIlxceEExXCI7XG5jb25zdCBpZmYgPSBcIlxcdTIxRDRcIjtcbmNvbnN0IGlmciA9IFwiXFx1ezFENTI2fVwiO1xuY29uc3QgSWZyID0gXCJcXHUyMTExXCI7XG5jb25zdCBJZ3JhdmUgPSBcIlxceENDXCI7XG5jb25zdCBpZ3JhdmUgPSBcIlxceEVDXCI7XG5jb25zdCBpaSA9IFwiXFx1MjE0OFwiO1xuY29uc3QgaWlpaW50ID0gXCJcXHUyQTBDXCI7XG5jb25zdCBpaWludCA9IFwiXFx1MjIyRFwiO1xuY29uc3QgaWluZmluID0gXCJcXHUyOURDXCI7XG5jb25zdCBpaW90YSA9IFwiXFx1MjEyOVwiO1xuY29uc3QgSUpsaWcgPSBcIlxcdTAxMzJcIjtcbmNvbnN0IGlqbGlnID0gXCJcXHUwMTMzXCI7XG5jb25zdCBJbWFjciA9IFwiXFx1MDEyQVwiO1xuY29uc3QgaW1hY3IgPSBcIlxcdTAxMkJcIjtcbmNvbnN0IGltYWdlJDEgPSBcIlxcdTIxMTFcIjtcbmNvbnN0IEltYWdpbmFyeUkgPSBcIlxcdTIxNDhcIjtcbmNvbnN0IGltYWdsaW5lID0gXCJcXHUyMTEwXCI7XG5jb25zdCBpbWFncGFydCA9IFwiXFx1MjExMVwiO1xuY29uc3QgaW1hdGggPSBcIlxcdTAxMzFcIjtcbmNvbnN0IEltID0gXCJcXHUyMTExXCI7XG5jb25zdCBpbW9mID0gXCJcXHUyMkI3XCI7XG5jb25zdCBpbXBlZCA9IFwiXFx1MDFCNVwiO1xuY29uc3QgSW1wbGllcyA9IFwiXFx1MjFEMlwiO1xuY29uc3QgaW5jYXJlID0gXCJcXHUyMTA1XCI7XG5jb25zdCBpbmZpbiA9IFwiXFx1MjIxRVwiO1xuY29uc3QgaW5maW50aWUgPSBcIlxcdTI5RERcIjtcbmNvbnN0IGlub2RvdCA9IFwiXFx1MDEzMVwiO1xuY29uc3QgaW50Y2FsID0gXCJcXHUyMkJBXCI7XG5jb25zdCBpbnQgPSBcIlxcdTIyMkJcIjtcbmNvbnN0IEludCA9IFwiXFx1MjIyQ1wiO1xuY29uc3QgaW50ZWdlcnMgPSBcIlxcdTIxMjRcIjtcbmNvbnN0IEludGVncmFsID0gXCJcXHUyMjJCXCI7XG5jb25zdCBpbnRlcmNhbCA9IFwiXFx1MjJCQVwiO1xuY29uc3QgSW50ZXJzZWN0aW9uID0gXCJcXHUyMkMyXCI7XG5jb25zdCBpbnRsYXJoayA9IFwiXFx1MkExN1wiO1xuY29uc3QgaW50cHJvZCA9IFwiXFx1MkEzQ1wiO1xuY29uc3QgSW52aXNpYmxlQ29tbWEgPSBcIlxcdTIwNjNcIjtcbmNvbnN0IEludmlzaWJsZVRpbWVzID0gXCJcXHUyMDYyXCI7XG5jb25zdCBJT2N5ID0gXCJcXHUwNDAxXCI7XG5jb25zdCBpb2N5ID0gXCJcXHUwNDUxXCI7XG5jb25zdCBJb2dvbiA9IFwiXFx1MDEyRVwiO1xuY29uc3QgaW9nb24gPSBcIlxcdTAxMkZcIjtcbmNvbnN0IElvcGYgPSBcIlxcdXsxRDU0MH1cIjtcbmNvbnN0IGlvcGYgPSBcIlxcdXsxRDU1QX1cIjtcbmNvbnN0IElvdGEgPSBcIlxcdTAzOTlcIjtcbmNvbnN0IGlvdGEgPSBcIlxcdTAzQjlcIjtcbmNvbnN0IGlwcm9kID0gXCJcXHUyQTNDXCI7XG5jb25zdCBpcXVlc3QgPSBcIlxceEJGXCI7XG5jb25zdCBpc2NyID0gXCJcXHV7MUQ0QkV9XCI7XG5jb25zdCBJc2NyID0gXCJcXHUyMTEwXCI7XG5jb25zdCBpc2luID0gXCJcXHUyMjA4XCI7XG5jb25zdCBpc2luZG90ID0gXCJcXHUyMkY1XCI7XG5jb25zdCBpc2luRSA9IFwiXFx1MjJGOVwiO1xuY29uc3QgaXNpbnMgPSBcIlxcdTIyRjRcIjtcbmNvbnN0IGlzaW5zdiA9IFwiXFx1MjJGM1wiO1xuY29uc3QgaXNpbnYgPSBcIlxcdTIyMDhcIjtcbmNvbnN0IGl0ID0gXCJcXHUyMDYyXCI7XG5jb25zdCBJdGlsZGUgPSBcIlxcdTAxMjhcIjtcbmNvbnN0IGl0aWxkZSA9IFwiXFx1MDEyOVwiO1xuY29uc3QgSXVrY3kgPSBcIlxcdTA0MDZcIjtcbmNvbnN0IGl1a2N5ID0gXCJcXHUwNDU2XCI7XG5jb25zdCBJdW1sID0gXCJcXHhDRlwiO1xuY29uc3QgaXVtbCA9IFwiXFx4RUZcIjtcbmNvbnN0IEpjaXJjID0gXCJcXHUwMTM0XCI7XG5jb25zdCBqY2lyYyA9IFwiXFx1MDEzNVwiO1xuY29uc3QgSmN5ID0gXCJcXHUwNDE5XCI7XG5jb25zdCBqY3kgPSBcIlxcdTA0MzlcIjtcbmNvbnN0IEpmciA9IFwiXFx1ezFENTBEfVwiO1xuY29uc3QgamZyID0gXCJcXHV7MUQ1Mjd9XCI7XG5jb25zdCBqbWF0aCA9IFwiXFx1MDIzN1wiO1xuY29uc3QgSm9wZiA9IFwiXFx1ezFENTQxfVwiO1xuY29uc3Qgam9wZiA9IFwiXFx1ezFENTVCfVwiO1xuY29uc3QgSnNjciA9IFwiXFx1ezFENEE1fVwiO1xuY29uc3QganNjciA9IFwiXFx1ezFENEJGfVwiO1xuY29uc3QgSnNlcmN5ID0gXCJcXHUwNDA4XCI7XG5jb25zdCBqc2VyY3kgPSBcIlxcdTA0NThcIjtcbmNvbnN0IEp1a2N5ID0gXCJcXHUwNDA0XCI7XG5jb25zdCBqdWtjeSA9IFwiXFx1MDQ1NFwiO1xuY29uc3QgS2FwcGEgPSBcIlxcdTAzOUFcIjtcbmNvbnN0IGthcHBhID0gXCJcXHUwM0JBXCI7XG5jb25zdCBrYXBwYXYgPSBcIlxcdTAzRjBcIjtcbmNvbnN0IEtjZWRpbCA9IFwiXFx1MDEzNlwiO1xuY29uc3Qga2NlZGlsID0gXCJcXHUwMTM3XCI7XG5jb25zdCBLY3kgPSBcIlxcdTA0MUFcIjtcbmNvbnN0IGtjeSA9IFwiXFx1MDQzQVwiO1xuY29uc3QgS2ZyID0gXCJcXHV7MUQ1MEV9XCI7XG5jb25zdCBrZnIgPSBcIlxcdXsxRDUyOH1cIjtcbmNvbnN0IGtncmVlbiA9IFwiXFx1MDEzOFwiO1xuY29uc3QgS0hjeSA9IFwiXFx1MDQyNVwiO1xuY29uc3Qga2hjeSA9IFwiXFx1MDQ0NVwiO1xuY29uc3QgS0pjeSA9IFwiXFx1MDQwQ1wiO1xuY29uc3Qga2pjeSA9IFwiXFx1MDQ1Q1wiO1xuY29uc3QgS29wZiA9IFwiXFx1ezFENTQyfVwiO1xuY29uc3Qga29wZiA9IFwiXFx1ezFENTVDfVwiO1xuY29uc3QgS3NjciA9IFwiXFx1ezFENEE2fVwiO1xuY29uc3Qga3NjciA9IFwiXFx1ezFENEMwfVwiO1xuY29uc3QgbEFhcnIgPSBcIlxcdTIxREFcIjtcbmNvbnN0IExhY3V0ZSA9IFwiXFx1MDEzOVwiO1xuY29uc3QgbGFjdXRlID0gXCJcXHUwMTNBXCI7XG5jb25zdCBsYWVtcHR5diA9IFwiXFx1MjlCNFwiO1xuY29uc3QgbGFncmFuID0gXCJcXHUyMTEyXCI7XG5jb25zdCBMYW1iZGEgPSBcIlxcdTAzOUJcIjtcbmNvbnN0IGxhbWJkYSA9IFwiXFx1MDNCQlwiO1xuY29uc3QgbGFuZyA9IFwiXFx1MjdFOFwiO1xuY29uc3QgTGFuZyA9IFwiXFx1MjdFQVwiO1xuY29uc3QgbGFuZ2QgPSBcIlxcdTI5OTFcIjtcbmNvbnN0IGxhbmdsZSA9IFwiXFx1MjdFOFwiO1xuY29uc3QgbGFwID0gXCJcXHUyQTg1XCI7XG5jb25zdCBMYXBsYWNldHJmID0gXCJcXHUyMTEyXCI7XG5jb25zdCBsYXF1byA9IFwiXFx4QUJcIjtcbmNvbnN0IGxhcnJiID0gXCJcXHUyMUU0XCI7XG5jb25zdCBsYXJyYmZzID0gXCJcXHUyOTFGXCI7XG5jb25zdCBsYXJyID0gXCJcXHUyMTkwXCI7XG5jb25zdCBMYXJyID0gXCJcXHUyMTlFXCI7XG5jb25zdCBsQXJyID0gXCJcXHUyMUQwXCI7XG5jb25zdCBsYXJyZnMgPSBcIlxcdTI5MURcIjtcbmNvbnN0IGxhcnJoayA9IFwiXFx1MjFBOVwiO1xuY29uc3QgbGFycmxwID0gXCJcXHUyMUFCXCI7XG5jb25zdCBsYXJycGwgPSBcIlxcdTI5MzlcIjtcbmNvbnN0IGxhcnJzaW0gPSBcIlxcdTI5NzNcIjtcbmNvbnN0IGxhcnJ0bCA9IFwiXFx1MjFBMlwiO1xuY29uc3QgbGF0YWlsID0gXCJcXHUyOTE5XCI7XG5jb25zdCBsQXRhaWwgPSBcIlxcdTI5MUJcIjtcbmNvbnN0IGxhdCA9IFwiXFx1MkFBQlwiO1xuY29uc3QgbGF0ZSA9IFwiXFx1MkFBRFwiO1xuY29uc3QgbGF0ZXMgPSBcIlxcdTJBQURcXHVGRTAwXCI7XG5jb25zdCBsYmFyciA9IFwiXFx1MjkwQ1wiO1xuY29uc3QgbEJhcnIgPSBcIlxcdTI5MEVcIjtcbmNvbnN0IGxiYnJrID0gXCJcXHUyNzcyXCI7XG5jb25zdCBsYnJhY2UgPSBcIntcIjtcbmNvbnN0IGxicmFjayA9IFwiW1wiO1xuY29uc3QgbGJya2UgPSBcIlxcdTI5OEJcIjtcbmNvbnN0IGxicmtzbGQgPSBcIlxcdTI5OEZcIjtcbmNvbnN0IGxicmtzbHUgPSBcIlxcdTI5OERcIjtcbmNvbnN0IExjYXJvbiA9IFwiXFx1MDEzRFwiO1xuY29uc3QgbGNhcm9uID0gXCJcXHUwMTNFXCI7XG5jb25zdCBMY2VkaWwgPSBcIlxcdTAxM0JcIjtcbmNvbnN0IGxjZWRpbCA9IFwiXFx1MDEzQ1wiO1xuY29uc3QgbGNlaWwgPSBcIlxcdTIzMDhcIjtcbmNvbnN0IGxjdWIgPSBcIntcIjtcbmNvbnN0IExjeSA9IFwiXFx1MDQxQlwiO1xuY29uc3QgbGN5ID0gXCJcXHUwNDNCXCI7XG5jb25zdCBsZGNhID0gXCJcXHUyOTM2XCI7XG5jb25zdCBsZHF1byA9IFwiXFx1MjAxQ1wiO1xuY29uc3QgbGRxdW9yID0gXCJcXHUyMDFFXCI7XG5jb25zdCBsZHJkaGFyID0gXCJcXHUyOTY3XCI7XG5jb25zdCBsZHJ1c2hhciA9IFwiXFx1Mjk0QlwiO1xuY29uc3QgbGRzaCA9IFwiXFx1MjFCMlwiO1xuY29uc3QgbGUgPSBcIlxcdTIyNjRcIjtcbmNvbnN0IGxFID0gXCJcXHUyMjY2XCI7XG5jb25zdCBMZWZ0QW5nbGVCcmFja2V0ID0gXCJcXHUyN0U4XCI7XG5jb25zdCBMZWZ0QXJyb3dCYXIgPSBcIlxcdTIxRTRcIjtcbmNvbnN0IGxlZnRhcnJvdyA9IFwiXFx1MjE5MFwiO1xuY29uc3QgTGVmdEFycm93ID0gXCJcXHUyMTkwXCI7XG5jb25zdCBMZWZ0YXJyb3cgPSBcIlxcdTIxRDBcIjtcbmNvbnN0IExlZnRBcnJvd1JpZ2h0QXJyb3cgPSBcIlxcdTIxQzZcIjtcbmNvbnN0IGxlZnRhcnJvd3RhaWwgPSBcIlxcdTIxQTJcIjtcbmNvbnN0IExlZnRDZWlsaW5nID0gXCJcXHUyMzA4XCI7XG5jb25zdCBMZWZ0RG91YmxlQnJhY2tldCA9IFwiXFx1MjdFNlwiO1xuY29uc3QgTGVmdERvd25UZWVWZWN0b3IgPSBcIlxcdTI5NjFcIjtcbmNvbnN0IExlZnREb3duVmVjdG9yQmFyID0gXCJcXHUyOTU5XCI7XG5jb25zdCBMZWZ0RG93blZlY3RvciA9IFwiXFx1MjFDM1wiO1xuY29uc3QgTGVmdEZsb29yID0gXCJcXHUyMzBBXCI7XG5jb25zdCBsZWZ0aGFycG9vbmRvd24gPSBcIlxcdTIxQkRcIjtcbmNvbnN0IGxlZnRoYXJwb29udXAgPSBcIlxcdTIxQkNcIjtcbmNvbnN0IGxlZnRsZWZ0YXJyb3dzID0gXCJcXHUyMUM3XCI7XG5jb25zdCBsZWZ0cmlnaHRhcnJvdyA9IFwiXFx1MjE5NFwiO1xuY29uc3QgTGVmdFJpZ2h0QXJyb3cgPSBcIlxcdTIxOTRcIjtcbmNvbnN0IExlZnRyaWdodGFycm93ID0gXCJcXHUyMUQ0XCI7XG5jb25zdCBsZWZ0cmlnaHRhcnJvd3MgPSBcIlxcdTIxQzZcIjtcbmNvbnN0IGxlZnRyaWdodGhhcnBvb25zID0gXCJcXHUyMUNCXCI7XG5jb25zdCBsZWZ0cmlnaHRzcXVpZ2Fycm93ID0gXCJcXHUyMUFEXCI7XG5jb25zdCBMZWZ0UmlnaHRWZWN0b3IgPSBcIlxcdTI5NEVcIjtcbmNvbnN0IExlZnRUZWVBcnJvdyA9IFwiXFx1MjFBNFwiO1xuY29uc3QgTGVmdFRlZSA9IFwiXFx1MjJBM1wiO1xuY29uc3QgTGVmdFRlZVZlY3RvciA9IFwiXFx1Mjk1QVwiO1xuY29uc3QgbGVmdHRocmVldGltZXMgPSBcIlxcdTIyQ0JcIjtcbmNvbnN0IExlZnRUcmlhbmdsZUJhciA9IFwiXFx1MjlDRlwiO1xuY29uc3QgTGVmdFRyaWFuZ2xlID0gXCJcXHUyMkIyXCI7XG5jb25zdCBMZWZ0VHJpYW5nbGVFcXVhbCA9IFwiXFx1MjJCNFwiO1xuY29uc3QgTGVmdFVwRG93blZlY3RvciA9IFwiXFx1Mjk1MVwiO1xuY29uc3QgTGVmdFVwVGVlVmVjdG9yID0gXCJcXHUyOTYwXCI7XG5jb25zdCBMZWZ0VXBWZWN0b3JCYXIgPSBcIlxcdTI5NThcIjtcbmNvbnN0IExlZnRVcFZlY3RvciA9IFwiXFx1MjFCRlwiO1xuY29uc3QgTGVmdFZlY3RvckJhciA9IFwiXFx1Mjk1MlwiO1xuY29uc3QgTGVmdFZlY3RvciA9IFwiXFx1MjFCQ1wiO1xuY29uc3QgbEVnID0gXCJcXHUyQThCXCI7XG5jb25zdCBsZWcgPSBcIlxcdTIyREFcIjtcbmNvbnN0IGxlcSA9IFwiXFx1MjI2NFwiO1xuY29uc3QgbGVxcSA9IFwiXFx1MjI2NlwiO1xuY29uc3QgbGVxc2xhbnQgPSBcIlxcdTJBN0RcIjtcbmNvbnN0IGxlc2NjID0gXCJcXHUyQUE4XCI7XG5jb25zdCBsZXMgPSBcIlxcdTJBN0RcIjtcbmNvbnN0IGxlc2RvdCA9IFwiXFx1MkE3RlwiO1xuY29uc3QgbGVzZG90byA9IFwiXFx1MkE4MVwiO1xuY29uc3QgbGVzZG90b3IgPSBcIlxcdTJBODNcIjtcbmNvbnN0IGxlc2cgPSBcIlxcdTIyREFcXHVGRTAwXCI7XG5jb25zdCBsZXNnZXMgPSBcIlxcdTJBOTNcIjtcbmNvbnN0IGxlc3NhcHByb3ggPSBcIlxcdTJBODVcIjtcbmNvbnN0IGxlc3Nkb3QgPSBcIlxcdTIyRDZcIjtcbmNvbnN0IGxlc3NlcWd0ciA9IFwiXFx1MjJEQVwiO1xuY29uc3QgbGVzc2VxcWd0ciA9IFwiXFx1MkE4QlwiO1xuY29uc3QgTGVzc0VxdWFsR3JlYXRlciA9IFwiXFx1MjJEQVwiO1xuY29uc3QgTGVzc0Z1bGxFcXVhbCA9IFwiXFx1MjI2NlwiO1xuY29uc3QgTGVzc0dyZWF0ZXIgPSBcIlxcdTIyNzZcIjtcbmNvbnN0IGxlc3NndHIgPSBcIlxcdTIyNzZcIjtcbmNvbnN0IExlc3NMZXNzID0gXCJcXHUyQUExXCI7XG5jb25zdCBsZXNzc2ltID0gXCJcXHUyMjcyXCI7XG5jb25zdCBMZXNzU2xhbnRFcXVhbCA9IFwiXFx1MkE3RFwiO1xuY29uc3QgTGVzc1RpbGRlID0gXCJcXHUyMjcyXCI7XG5jb25zdCBsZmlzaHQgPSBcIlxcdTI5N0NcIjtcbmNvbnN0IGxmbG9vciA9IFwiXFx1MjMwQVwiO1xuY29uc3QgTGZyID0gXCJcXHV7MUQ1MEZ9XCI7XG5jb25zdCBsZnIgPSBcIlxcdXsxRDUyOX1cIjtcbmNvbnN0IGxnID0gXCJcXHUyMjc2XCI7XG5jb25zdCBsZ0UgPSBcIlxcdTJBOTFcIjtcbmNvbnN0IGxIYXIgPSBcIlxcdTI5NjJcIjtcbmNvbnN0IGxoYXJkID0gXCJcXHUyMUJEXCI7XG5jb25zdCBsaGFydSA9IFwiXFx1MjFCQ1wiO1xuY29uc3QgbGhhcnVsID0gXCJcXHUyOTZBXCI7XG5jb25zdCBsaGJsayA9IFwiXFx1MjU4NFwiO1xuY29uc3QgTEpjeSA9IFwiXFx1MDQwOVwiO1xuY29uc3QgbGpjeSA9IFwiXFx1MDQ1OVwiO1xuY29uc3QgbGxhcnIgPSBcIlxcdTIxQzdcIjtcbmNvbnN0IGxsID0gXCJcXHUyMjZBXCI7XG5jb25zdCBMbCA9IFwiXFx1MjJEOFwiO1xuY29uc3QgbGxjb3JuZXIgPSBcIlxcdTIzMUVcIjtcbmNvbnN0IExsZWZ0YXJyb3cgPSBcIlxcdTIxREFcIjtcbmNvbnN0IGxsaGFyZCA9IFwiXFx1Mjk2QlwiO1xuY29uc3QgbGx0cmkgPSBcIlxcdTI1RkFcIjtcbmNvbnN0IExtaWRvdCA9IFwiXFx1MDEzRlwiO1xuY29uc3QgbG1pZG90ID0gXCJcXHUwMTQwXCI7XG5jb25zdCBsbW91c3RhY2hlID0gXCJcXHUyM0IwXCI7XG5jb25zdCBsbW91c3QgPSBcIlxcdTIzQjBcIjtcbmNvbnN0IGxuYXAgPSBcIlxcdTJBODlcIjtcbmNvbnN0IGxuYXBwcm94ID0gXCJcXHUyQTg5XCI7XG5jb25zdCBsbmUgPSBcIlxcdTJBODdcIjtcbmNvbnN0IGxuRSA9IFwiXFx1MjI2OFwiO1xuY29uc3QgbG5lcSA9IFwiXFx1MkE4N1wiO1xuY29uc3QgbG5lcXEgPSBcIlxcdTIyNjhcIjtcbmNvbnN0IGxuc2ltID0gXCJcXHUyMkU2XCI7XG5jb25zdCBsb2FuZyA9IFwiXFx1MjdFQ1wiO1xuY29uc3QgbG9hcnIgPSBcIlxcdTIxRkRcIjtcbmNvbnN0IGxvYnJrID0gXCJcXHUyN0U2XCI7XG5jb25zdCBsb25nbGVmdGFycm93ID0gXCJcXHUyN0Y1XCI7XG5jb25zdCBMb25nTGVmdEFycm93ID0gXCJcXHUyN0Y1XCI7XG5jb25zdCBMb25nbGVmdGFycm93ID0gXCJcXHUyN0Y4XCI7XG5jb25zdCBsb25nbGVmdHJpZ2h0YXJyb3cgPSBcIlxcdTI3RjdcIjtcbmNvbnN0IExvbmdMZWZ0UmlnaHRBcnJvdyA9IFwiXFx1MjdGN1wiO1xuY29uc3QgTG9uZ2xlZnRyaWdodGFycm93ID0gXCJcXHUyN0ZBXCI7XG5jb25zdCBsb25nbWFwc3RvID0gXCJcXHUyN0ZDXCI7XG5jb25zdCBsb25ncmlnaHRhcnJvdyA9IFwiXFx1MjdGNlwiO1xuY29uc3QgTG9uZ1JpZ2h0QXJyb3cgPSBcIlxcdTI3RjZcIjtcbmNvbnN0IExvbmdyaWdodGFycm93ID0gXCJcXHUyN0Y5XCI7XG5jb25zdCBsb29wYXJyb3dsZWZ0ID0gXCJcXHUyMUFCXCI7XG5jb25zdCBsb29wYXJyb3dyaWdodCA9IFwiXFx1MjFBQ1wiO1xuY29uc3QgbG9wYXIgPSBcIlxcdTI5ODVcIjtcbmNvbnN0IExvcGYgPSBcIlxcdXsxRDU0M31cIjtcbmNvbnN0IGxvcGYgPSBcIlxcdXsxRDU1RH1cIjtcbmNvbnN0IGxvcGx1cyA9IFwiXFx1MkEyRFwiO1xuY29uc3QgbG90aW1lcyA9IFwiXFx1MkEzNFwiO1xuY29uc3QgbG93YXN0ID0gXCJcXHUyMjE3XCI7XG5jb25zdCBsb3diYXIgPSBcIl9cIjtcbmNvbnN0IExvd2VyTGVmdEFycm93ID0gXCJcXHUyMTk5XCI7XG5jb25zdCBMb3dlclJpZ2h0QXJyb3cgPSBcIlxcdTIxOThcIjtcbmNvbnN0IGxveiA9IFwiXFx1MjVDQVwiO1xuY29uc3QgbG96ZW5nZSA9IFwiXFx1MjVDQVwiO1xuY29uc3QgbG96ZiA9IFwiXFx1MjlFQlwiO1xuY29uc3QgbHBhciA9IFwiKFwiO1xuY29uc3QgbHBhcmx0ID0gXCJcXHUyOTkzXCI7XG5jb25zdCBscmFyciA9IFwiXFx1MjFDNlwiO1xuY29uc3QgbHJjb3JuZXIgPSBcIlxcdTIzMUZcIjtcbmNvbnN0IGxyaGFyID0gXCJcXHUyMUNCXCI7XG5jb25zdCBscmhhcmQgPSBcIlxcdTI5NkRcIjtcbmNvbnN0IGxybSA9IFwiXFx1MjAwRVwiO1xuY29uc3QgbHJ0cmkgPSBcIlxcdTIyQkZcIjtcbmNvbnN0IGxzYXF1byA9IFwiXFx1MjAzOVwiO1xuY29uc3QgbHNjciA9IFwiXFx1ezFENEMxfVwiO1xuY29uc3QgTHNjciA9IFwiXFx1MjExMlwiO1xuY29uc3QgbHNoID0gXCJcXHUyMUIwXCI7XG5jb25zdCBMc2ggPSBcIlxcdTIxQjBcIjtcbmNvbnN0IGxzaW0gPSBcIlxcdTIyNzJcIjtcbmNvbnN0IGxzaW1lID0gXCJcXHUyQThEXCI7XG5jb25zdCBsc2ltZyA9IFwiXFx1MkE4RlwiO1xuY29uc3QgbHNxYiA9IFwiW1wiO1xuY29uc3QgbHNxdW8gPSBcIlxcdTIwMThcIjtcbmNvbnN0IGxzcXVvciA9IFwiXFx1MjAxQVwiO1xuY29uc3QgTHN0cm9rID0gXCJcXHUwMTQxXCI7XG5jb25zdCBsc3Ryb2sgPSBcIlxcdTAxNDJcIjtcbmNvbnN0IGx0Y2MgPSBcIlxcdTJBQTZcIjtcbmNvbnN0IGx0Y2lyID0gXCJcXHUyQTc5XCI7XG5jb25zdCBsdCA9IFwiPFwiO1xuY29uc3QgTFQgPSBcIjxcIjtcbmNvbnN0IEx0ID0gXCJcXHUyMjZBXCI7XG5jb25zdCBsdGRvdCA9IFwiXFx1MjJENlwiO1xuY29uc3QgbHRocmVlID0gXCJcXHUyMkNCXCI7XG5jb25zdCBsdGltZXMgPSBcIlxcdTIyQzlcIjtcbmNvbnN0IGx0bGFyciA9IFwiXFx1Mjk3NlwiO1xuY29uc3QgbHRxdWVzdCA9IFwiXFx1MkE3QlwiO1xuY29uc3QgbHRyaSA9IFwiXFx1MjVDM1wiO1xuY29uc3QgbHRyaWUgPSBcIlxcdTIyQjRcIjtcbmNvbnN0IGx0cmlmID0gXCJcXHUyNUMyXCI7XG5jb25zdCBsdHJQYXIgPSBcIlxcdTI5OTZcIjtcbmNvbnN0IGx1cmRzaGFyID0gXCJcXHUyOTRBXCI7XG5jb25zdCBsdXJ1aGFyID0gXCJcXHUyOTY2XCI7XG5jb25zdCBsdmVydG5lcXEgPSBcIlxcdTIyNjhcXHVGRTAwXCI7XG5jb25zdCBsdm5FID0gXCJcXHUyMjY4XFx1RkUwMFwiO1xuY29uc3QgbWFjciA9IFwiXFx4QUZcIjtcbmNvbnN0IG1hbGUgPSBcIlxcdTI2NDJcIjtcbmNvbnN0IG1hbHQgPSBcIlxcdTI3MjBcIjtcbmNvbnN0IG1hbHRlc2UgPSBcIlxcdTI3MjBcIjtcbmNvbnN0IG1hcCQxID0gXCJcXHUyMUE2XCI7XG5jb25zdCBtYXBzdG8gPSBcIlxcdTIxQTZcIjtcbmNvbnN0IG1hcHN0b2Rvd24gPSBcIlxcdTIxQTdcIjtcbmNvbnN0IG1hcHN0b2xlZnQgPSBcIlxcdTIxQTRcIjtcbmNvbnN0IG1hcHN0b3VwID0gXCJcXHUyMUE1XCI7XG5jb25zdCBtYXJrZXIgPSBcIlxcdTI1QUVcIjtcbmNvbnN0IG1jb21tYSA9IFwiXFx1MkEyOVwiO1xuY29uc3QgTWN5ID0gXCJcXHUwNDFDXCI7XG5jb25zdCBtY3kgPSBcIlxcdTA0M0NcIjtcbmNvbnN0IG1kYXNoID0gXCJcXHUyMDE0XCI7XG5jb25zdCBtRERvdCA9IFwiXFx1MjIzQVwiO1xuY29uc3QgbWVhc3VyZWRhbmdsZSA9IFwiXFx1MjIyMVwiO1xuY29uc3QgTWVkaXVtU3BhY2UgPSBcIlxcdTIwNUZcIjtcbmNvbnN0IE1lbGxpbnRyZiA9IFwiXFx1MjEzM1wiO1xuY29uc3QgTWZyID0gXCJcXHV7MUQ1MTB9XCI7XG5jb25zdCBtZnIgPSBcIlxcdXsxRDUyQX1cIjtcbmNvbnN0IG1obyA9IFwiXFx1MjEyN1wiO1xuY29uc3QgbWljcm8gPSBcIlxceEI1XCI7XG5jb25zdCBtaWRhc3QgPSBcIipcIjtcbmNvbnN0IG1pZGNpciA9IFwiXFx1MkFGMFwiO1xuY29uc3QgbWlkID0gXCJcXHUyMjIzXCI7XG5jb25zdCBtaWRkb3QgPSBcIlxceEI3XCI7XG5jb25zdCBtaW51c2IgPSBcIlxcdTIyOUZcIjtcbmNvbnN0IG1pbnVzID0gXCJcXHUyMjEyXCI7XG5jb25zdCBtaW51c2QgPSBcIlxcdTIyMzhcIjtcbmNvbnN0IG1pbnVzZHUgPSBcIlxcdTJBMkFcIjtcbmNvbnN0IE1pbnVzUGx1cyA9IFwiXFx1MjIxM1wiO1xuY29uc3QgbWxjcCA9IFwiXFx1MkFEQlwiO1xuY29uc3QgbWxkciA9IFwiXFx1MjAyNlwiO1xuY29uc3QgbW5wbHVzID0gXCJcXHUyMjEzXCI7XG5jb25zdCBtb2RlbHMgPSBcIlxcdTIyQTdcIjtcbmNvbnN0IE1vcGYgPSBcIlxcdXsxRDU0NH1cIjtcbmNvbnN0IG1vcGYgPSBcIlxcdXsxRDU1RX1cIjtcbmNvbnN0IG1wID0gXCJcXHUyMjEzXCI7XG5jb25zdCBtc2NyID0gXCJcXHV7MUQ0QzJ9XCI7XG5jb25zdCBNc2NyID0gXCJcXHUyMTMzXCI7XG5jb25zdCBtc3Rwb3MgPSBcIlxcdTIyM0VcIjtcbmNvbnN0IE11ID0gXCJcXHUwMzlDXCI7XG5jb25zdCBtdSA9IFwiXFx1MDNCQ1wiO1xuY29uc3QgbXVsdGltYXAgPSBcIlxcdTIyQjhcIjtcbmNvbnN0IG11bWFwID0gXCJcXHUyMkI4XCI7XG5jb25zdCBuYWJsYSA9IFwiXFx1MjIwN1wiO1xuY29uc3QgTmFjdXRlID0gXCJcXHUwMTQzXCI7XG5jb25zdCBuYWN1dGUgPSBcIlxcdTAxNDRcIjtcbmNvbnN0IG5hbmcgPSBcIlxcdTIyMjBcXHUyMEQyXCI7XG5jb25zdCBuYXAgPSBcIlxcdTIyNDlcIjtcbmNvbnN0IG5hcEUgPSBcIlxcdTJBNzBcXHUwMzM4XCI7XG5jb25zdCBuYXBpZCA9IFwiXFx1MjI0QlxcdTAzMzhcIjtcbmNvbnN0IG5hcG9zID0gXCJcXHUwMTQ5XCI7XG5jb25zdCBuYXBwcm94ID0gXCJcXHUyMjQ5XCI7XG5jb25zdCBuYXR1cmFsID0gXCJcXHUyNjZFXCI7XG5jb25zdCBuYXR1cmFscyA9IFwiXFx1MjExNVwiO1xuY29uc3QgbmF0dXIgPSBcIlxcdTI2NkVcIjtcbmNvbnN0IG5ic3AgPSBcIlxceEEwXCI7XG5jb25zdCBuYnVtcCA9IFwiXFx1MjI0RVxcdTAzMzhcIjtcbmNvbnN0IG5idW1wZSA9IFwiXFx1MjI0RlxcdTAzMzhcIjtcbmNvbnN0IG5jYXAgPSBcIlxcdTJBNDNcIjtcbmNvbnN0IE5jYXJvbiA9IFwiXFx1MDE0N1wiO1xuY29uc3QgbmNhcm9uID0gXCJcXHUwMTQ4XCI7XG5jb25zdCBOY2VkaWwgPSBcIlxcdTAxNDVcIjtcbmNvbnN0IG5jZWRpbCA9IFwiXFx1MDE0NlwiO1xuY29uc3QgbmNvbmcgPSBcIlxcdTIyNDdcIjtcbmNvbnN0IG5jb25nZG90ID0gXCJcXHUyQTZEXFx1MDMzOFwiO1xuY29uc3QgbmN1cCA9IFwiXFx1MkE0MlwiO1xuY29uc3QgTmN5ID0gXCJcXHUwNDFEXCI7XG5jb25zdCBuY3kgPSBcIlxcdTA0M0RcIjtcbmNvbnN0IG5kYXNoID0gXCJcXHUyMDEzXCI7XG5jb25zdCBuZWFyaGsgPSBcIlxcdTI5MjRcIjtcbmNvbnN0IG5lYXJyID0gXCJcXHUyMTk3XCI7XG5jb25zdCBuZUFyciA9IFwiXFx1MjFEN1wiO1xuY29uc3QgbmVhcnJvdyA9IFwiXFx1MjE5N1wiO1xuY29uc3QgbmUgPSBcIlxcdTIyNjBcIjtcbmNvbnN0IG5lZG90ID0gXCJcXHUyMjUwXFx1MDMzOFwiO1xuY29uc3QgTmVnYXRpdmVNZWRpdW1TcGFjZSA9IFwiXFx1MjAwQlwiO1xuY29uc3QgTmVnYXRpdmVUaGlja1NwYWNlID0gXCJcXHUyMDBCXCI7XG5jb25zdCBOZWdhdGl2ZVRoaW5TcGFjZSA9IFwiXFx1MjAwQlwiO1xuY29uc3QgTmVnYXRpdmVWZXJ5VGhpblNwYWNlID0gXCJcXHUyMDBCXCI7XG5jb25zdCBuZXF1aXYgPSBcIlxcdTIyNjJcIjtcbmNvbnN0IG5lc2VhciA9IFwiXFx1MjkyOFwiO1xuY29uc3QgbmVzaW0gPSBcIlxcdTIyNDJcXHUwMzM4XCI7XG5jb25zdCBOZXN0ZWRHcmVhdGVyR3JlYXRlciA9IFwiXFx1MjI2QlwiO1xuY29uc3QgTmVzdGVkTGVzc0xlc3MgPSBcIlxcdTIyNkFcIjtcbmNvbnN0IE5ld0xpbmUgPSBcIlxcblwiO1xuY29uc3QgbmV4aXN0ID0gXCJcXHUyMjA0XCI7XG5jb25zdCBuZXhpc3RzID0gXCJcXHUyMjA0XCI7XG5jb25zdCBOZnIgPSBcIlxcdXsxRDUxMX1cIjtcbmNvbnN0IG5mciA9IFwiXFx1ezFENTJCfVwiO1xuY29uc3QgbmdFID0gXCJcXHUyMjY3XFx1MDMzOFwiO1xuY29uc3QgbmdlID0gXCJcXHUyMjcxXCI7XG5jb25zdCBuZ2VxID0gXCJcXHUyMjcxXCI7XG5jb25zdCBuZ2VxcSA9IFwiXFx1MjI2N1xcdTAzMzhcIjtcbmNvbnN0IG5nZXFzbGFudCA9IFwiXFx1MkE3RVxcdTAzMzhcIjtcbmNvbnN0IG5nZXMgPSBcIlxcdTJBN0VcXHUwMzM4XCI7XG5jb25zdCBuR2cgPSBcIlxcdTIyRDlcXHUwMzM4XCI7XG5jb25zdCBuZ3NpbSA9IFwiXFx1MjI3NVwiO1xuY29uc3Qgbkd0ID0gXCJcXHUyMjZCXFx1MjBEMlwiO1xuY29uc3Qgbmd0ID0gXCJcXHUyMjZGXCI7XG5jb25zdCBuZ3RyID0gXCJcXHUyMjZGXCI7XG5jb25zdCBuR3R2ID0gXCJcXHUyMjZCXFx1MDMzOFwiO1xuY29uc3QgbmhhcnIgPSBcIlxcdTIxQUVcIjtcbmNvbnN0IG5oQXJyID0gXCJcXHUyMUNFXCI7XG5jb25zdCBuaHBhciA9IFwiXFx1MkFGMlwiO1xuY29uc3QgbmkgPSBcIlxcdTIyMEJcIjtcbmNvbnN0IG5pcyA9IFwiXFx1MjJGQ1wiO1xuY29uc3QgbmlzZCA9IFwiXFx1MjJGQVwiO1xuY29uc3Qgbml2ID0gXCJcXHUyMjBCXCI7XG5jb25zdCBOSmN5ID0gXCJcXHUwNDBBXCI7XG5jb25zdCBuamN5ID0gXCJcXHUwNDVBXCI7XG5jb25zdCBubGFyciA9IFwiXFx1MjE5QVwiO1xuY29uc3QgbmxBcnIgPSBcIlxcdTIxQ0RcIjtcbmNvbnN0IG5sZHIgPSBcIlxcdTIwMjVcIjtcbmNvbnN0IG5sRSA9IFwiXFx1MjI2NlxcdTAzMzhcIjtcbmNvbnN0IG5sZSA9IFwiXFx1MjI3MFwiO1xuY29uc3QgbmxlZnRhcnJvdyA9IFwiXFx1MjE5QVwiO1xuY29uc3QgbkxlZnRhcnJvdyA9IFwiXFx1MjFDRFwiO1xuY29uc3QgbmxlZnRyaWdodGFycm93ID0gXCJcXHUyMUFFXCI7XG5jb25zdCBuTGVmdHJpZ2h0YXJyb3cgPSBcIlxcdTIxQ0VcIjtcbmNvbnN0IG5sZXEgPSBcIlxcdTIyNzBcIjtcbmNvbnN0IG5sZXFxID0gXCJcXHUyMjY2XFx1MDMzOFwiO1xuY29uc3QgbmxlcXNsYW50ID0gXCJcXHUyQTdEXFx1MDMzOFwiO1xuY29uc3QgbmxlcyA9IFwiXFx1MkE3RFxcdTAzMzhcIjtcbmNvbnN0IG5sZXNzID0gXCJcXHUyMjZFXCI7XG5jb25zdCBuTGwgPSBcIlxcdTIyRDhcXHUwMzM4XCI7XG5jb25zdCBubHNpbSA9IFwiXFx1MjI3NFwiO1xuY29uc3Qgbkx0ID0gXCJcXHUyMjZBXFx1MjBEMlwiO1xuY29uc3Qgbmx0ID0gXCJcXHUyMjZFXCI7XG5jb25zdCBubHRyaSA9IFwiXFx1MjJFQVwiO1xuY29uc3Qgbmx0cmllID0gXCJcXHUyMkVDXCI7XG5jb25zdCBuTHR2ID0gXCJcXHUyMjZBXFx1MDMzOFwiO1xuY29uc3Qgbm1pZCA9IFwiXFx1MjIyNFwiO1xuY29uc3QgTm9CcmVhayA9IFwiXFx1MjA2MFwiO1xuY29uc3QgTm9uQnJlYWtpbmdTcGFjZSA9IFwiXFx4QTBcIjtcbmNvbnN0IG5vcGYgPSBcIlxcdXsxRDU1Rn1cIjtcbmNvbnN0IE5vcGYgPSBcIlxcdTIxMTVcIjtcbmNvbnN0IE5vdCA9IFwiXFx1MkFFQ1wiO1xuY29uc3Qgbm90ID0gXCJcXHhBQ1wiO1xuY29uc3QgTm90Q29uZ3J1ZW50ID0gXCJcXHUyMjYyXCI7XG5jb25zdCBOb3RDdXBDYXAgPSBcIlxcdTIyNkRcIjtcbmNvbnN0IE5vdERvdWJsZVZlcnRpY2FsQmFyID0gXCJcXHUyMjI2XCI7XG5jb25zdCBOb3RFbGVtZW50ID0gXCJcXHUyMjA5XCI7XG5jb25zdCBOb3RFcXVhbCA9IFwiXFx1MjI2MFwiO1xuY29uc3QgTm90RXF1YWxUaWxkZSA9IFwiXFx1MjI0MlxcdTAzMzhcIjtcbmNvbnN0IE5vdEV4aXN0cyA9IFwiXFx1MjIwNFwiO1xuY29uc3QgTm90R3JlYXRlciA9IFwiXFx1MjI2RlwiO1xuY29uc3QgTm90R3JlYXRlckVxdWFsID0gXCJcXHUyMjcxXCI7XG5jb25zdCBOb3RHcmVhdGVyRnVsbEVxdWFsID0gXCJcXHUyMjY3XFx1MDMzOFwiO1xuY29uc3QgTm90R3JlYXRlckdyZWF0ZXIgPSBcIlxcdTIyNkJcXHUwMzM4XCI7XG5jb25zdCBOb3RHcmVhdGVyTGVzcyA9IFwiXFx1MjI3OVwiO1xuY29uc3QgTm90R3JlYXRlclNsYW50RXF1YWwgPSBcIlxcdTJBN0VcXHUwMzM4XCI7XG5jb25zdCBOb3RHcmVhdGVyVGlsZGUgPSBcIlxcdTIyNzVcIjtcbmNvbnN0IE5vdEh1bXBEb3duSHVtcCA9IFwiXFx1MjI0RVxcdTAzMzhcIjtcbmNvbnN0IE5vdEh1bXBFcXVhbCA9IFwiXFx1MjI0RlxcdTAzMzhcIjtcbmNvbnN0IG5vdGluID0gXCJcXHUyMjA5XCI7XG5jb25zdCBub3RpbmRvdCA9IFwiXFx1MjJGNVxcdTAzMzhcIjtcbmNvbnN0IG5vdGluRSA9IFwiXFx1MjJGOVxcdTAzMzhcIjtcbmNvbnN0IG5vdGludmEgPSBcIlxcdTIyMDlcIjtcbmNvbnN0IG5vdGludmIgPSBcIlxcdTIyRjdcIjtcbmNvbnN0IG5vdGludmMgPSBcIlxcdTIyRjZcIjtcbmNvbnN0IE5vdExlZnRUcmlhbmdsZUJhciA9IFwiXFx1MjlDRlxcdTAzMzhcIjtcbmNvbnN0IE5vdExlZnRUcmlhbmdsZSA9IFwiXFx1MjJFQVwiO1xuY29uc3QgTm90TGVmdFRyaWFuZ2xlRXF1YWwgPSBcIlxcdTIyRUNcIjtcbmNvbnN0IE5vdExlc3MgPSBcIlxcdTIyNkVcIjtcbmNvbnN0IE5vdExlc3NFcXVhbCA9IFwiXFx1MjI3MFwiO1xuY29uc3QgTm90TGVzc0dyZWF0ZXIgPSBcIlxcdTIyNzhcIjtcbmNvbnN0IE5vdExlc3NMZXNzID0gXCJcXHUyMjZBXFx1MDMzOFwiO1xuY29uc3QgTm90TGVzc1NsYW50RXF1YWwgPSBcIlxcdTJBN0RcXHUwMzM4XCI7XG5jb25zdCBOb3RMZXNzVGlsZGUgPSBcIlxcdTIyNzRcIjtcbmNvbnN0IE5vdE5lc3RlZEdyZWF0ZXJHcmVhdGVyID0gXCJcXHUyQUEyXFx1MDMzOFwiO1xuY29uc3QgTm90TmVzdGVkTGVzc0xlc3MgPSBcIlxcdTJBQTFcXHUwMzM4XCI7XG5jb25zdCBub3RuaSA9IFwiXFx1MjIwQ1wiO1xuY29uc3Qgbm90bml2YSA9IFwiXFx1MjIwQ1wiO1xuY29uc3Qgbm90bml2YiA9IFwiXFx1MjJGRVwiO1xuY29uc3Qgbm90bml2YyA9IFwiXFx1MjJGRFwiO1xuY29uc3QgTm90UHJlY2VkZXMgPSBcIlxcdTIyODBcIjtcbmNvbnN0IE5vdFByZWNlZGVzRXF1YWwgPSBcIlxcdTJBQUZcXHUwMzM4XCI7XG5jb25zdCBOb3RQcmVjZWRlc1NsYW50RXF1YWwgPSBcIlxcdTIyRTBcIjtcbmNvbnN0IE5vdFJldmVyc2VFbGVtZW50ID0gXCJcXHUyMjBDXCI7XG5jb25zdCBOb3RSaWdodFRyaWFuZ2xlQmFyID0gXCJcXHUyOUQwXFx1MDMzOFwiO1xuY29uc3QgTm90UmlnaHRUcmlhbmdsZSA9IFwiXFx1MjJFQlwiO1xuY29uc3QgTm90UmlnaHRUcmlhbmdsZUVxdWFsID0gXCJcXHUyMkVEXCI7XG5jb25zdCBOb3RTcXVhcmVTdWJzZXQgPSBcIlxcdTIyOEZcXHUwMzM4XCI7XG5jb25zdCBOb3RTcXVhcmVTdWJzZXRFcXVhbCA9IFwiXFx1MjJFMlwiO1xuY29uc3QgTm90U3F1YXJlU3VwZXJzZXQgPSBcIlxcdTIyOTBcXHUwMzM4XCI7XG5jb25zdCBOb3RTcXVhcmVTdXBlcnNldEVxdWFsID0gXCJcXHUyMkUzXCI7XG5jb25zdCBOb3RTdWJzZXQgPSBcIlxcdTIyODJcXHUyMEQyXCI7XG5jb25zdCBOb3RTdWJzZXRFcXVhbCA9IFwiXFx1MjI4OFwiO1xuY29uc3QgTm90U3VjY2VlZHMgPSBcIlxcdTIyODFcIjtcbmNvbnN0IE5vdFN1Y2NlZWRzRXF1YWwgPSBcIlxcdTJBQjBcXHUwMzM4XCI7XG5jb25zdCBOb3RTdWNjZWVkc1NsYW50RXF1YWwgPSBcIlxcdTIyRTFcIjtcbmNvbnN0IE5vdFN1Y2NlZWRzVGlsZGUgPSBcIlxcdTIyN0ZcXHUwMzM4XCI7XG5jb25zdCBOb3RTdXBlcnNldCA9IFwiXFx1MjI4M1xcdTIwRDJcIjtcbmNvbnN0IE5vdFN1cGVyc2V0RXF1YWwgPSBcIlxcdTIyODlcIjtcbmNvbnN0IE5vdFRpbGRlID0gXCJcXHUyMjQxXCI7XG5jb25zdCBOb3RUaWxkZUVxdWFsID0gXCJcXHUyMjQ0XCI7XG5jb25zdCBOb3RUaWxkZUZ1bGxFcXVhbCA9IFwiXFx1MjI0N1wiO1xuY29uc3QgTm90VGlsZGVUaWxkZSA9IFwiXFx1MjI0OVwiO1xuY29uc3QgTm90VmVydGljYWxCYXIgPSBcIlxcdTIyMjRcIjtcbmNvbnN0IG5wYXJhbGxlbCA9IFwiXFx1MjIyNlwiO1xuY29uc3QgbnBhciA9IFwiXFx1MjIyNlwiO1xuY29uc3QgbnBhcnNsID0gXCJcXHUyQUZEXFx1MjBFNVwiO1xuY29uc3QgbnBhcnQgPSBcIlxcdTIyMDJcXHUwMzM4XCI7XG5jb25zdCBucG9saW50ID0gXCJcXHUyQTE0XCI7XG5jb25zdCBucHIgPSBcIlxcdTIyODBcIjtcbmNvbnN0IG5wcmN1ZSA9IFwiXFx1MjJFMFwiO1xuY29uc3QgbnByZWMgPSBcIlxcdTIyODBcIjtcbmNvbnN0IG5wcmVjZXEgPSBcIlxcdTJBQUZcXHUwMzM4XCI7XG5jb25zdCBucHJlID0gXCJcXHUyQUFGXFx1MDMzOFwiO1xuY29uc3QgbnJhcnJjID0gXCJcXHUyOTMzXFx1MDMzOFwiO1xuY29uc3QgbnJhcnIgPSBcIlxcdTIxOUJcIjtcbmNvbnN0IG5yQXJyID0gXCJcXHUyMUNGXCI7XG5jb25zdCBucmFycncgPSBcIlxcdTIxOURcXHUwMzM4XCI7XG5jb25zdCBucmlnaHRhcnJvdyA9IFwiXFx1MjE5QlwiO1xuY29uc3QgblJpZ2h0YXJyb3cgPSBcIlxcdTIxQ0ZcIjtcbmNvbnN0IG5ydHJpID0gXCJcXHUyMkVCXCI7XG5jb25zdCBucnRyaWUgPSBcIlxcdTIyRURcIjtcbmNvbnN0IG5zYyA9IFwiXFx1MjI4MVwiO1xuY29uc3QgbnNjY3VlID0gXCJcXHUyMkUxXCI7XG5jb25zdCBuc2NlID0gXCJcXHUyQUIwXFx1MDMzOFwiO1xuY29uc3QgTnNjciA9IFwiXFx1ezFENEE5fVwiO1xuY29uc3QgbnNjciA9IFwiXFx1ezFENEMzfVwiO1xuY29uc3QgbnNob3J0bWlkID0gXCJcXHUyMjI0XCI7XG5jb25zdCBuc2hvcnRwYXJhbGxlbCA9IFwiXFx1MjIyNlwiO1xuY29uc3QgbnNpbSA9IFwiXFx1MjI0MVwiO1xuY29uc3QgbnNpbWUgPSBcIlxcdTIyNDRcIjtcbmNvbnN0IG5zaW1lcSA9IFwiXFx1MjI0NFwiO1xuY29uc3QgbnNtaWQgPSBcIlxcdTIyMjRcIjtcbmNvbnN0IG5zcGFyID0gXCJcXHUyMjI2XCI7XG5jb25zdCBuc3FzdWJlID0gXCJcXHUyMkUyXCI7XG5jb25zdCBuc3FzdXBlID0gXCJcXHUyMkUzXCI7XG5jb25zdCBuc3ViID0gXCJcXHUyMjg0XCI7XG5jb25zdCBuc3ViRSA9IFwiXFx1MkFDNVxcdTAzMzhcIjtcbmNvbnN0IG5zdWJlID0gXCJcXHUyMjg4XCI7XG5jb25zdCBuc3Vic2V0ID0gXCJcXHUyMjgyXFx1MjBEMlwiO1xuY29uc3QgbnN1YnNldGVxID0gXCJcXHUyMjg4XCI7XG5jb25zdCBuc3Vic2V0ZXFxID0gXCJcXHUyQUM1XFx1MDMzOFwiO1xuY29uc3QgbnN1Y2MgPSBcIlxcdTIyODFcIjtcbmNvbnN0IG5zdWNjZXEgPSBcIlxcdTJBQjBcXHUwMzM4XCI7XG5jb25zdCBuc3VwID0gXCJcXHUyMjg1XCI7XG5jb25zdCBuc3VwRSA9IFwiXFx1MkFDNlxcdTAzMzhcIjtcbmNvbnN0IG5zdXBlID0gXCJcXHUyMjg5XCI7XG5jb25zdCBuc3Vwc2V0ID0gXCJcXHUyMjgzXFx1MjBEMlwiO1xuY29uc3QgbnN1cHNldGVxID0gXCJcXHUyMjg5XCI7XG5jb25zdCBuc3Vwc2V0ZXFxID0gXCJcXHUyQUM2XFx1MDMzOFwiO1xuY29uc3QgbnRnbCA9IFwiXFx1MjI3OVwiO1xuY29uc3QgTnRpbGRlID0gXCJcXHhEMVwiO1xuY29uc3QgbnRpbGRlID0gXCJcXHhGMVwiO1xuY29uc3QgbnRsZyA9IFwiXFx1MjI3OFwiO1xuY29uc3QgbnRyaWFuZ2xlbGVmdCA9IFwiXFx1MjJFQVwiO1xuY29uc3QgbnRyaWFuZ2xlbGVmdGVxID0gXCJcXHUyMkVDXCI7XG5jb25zdCBudHJpYW5nbGVyaWdodCA9IFwiXFx1MjJFQlwiO1xuY29uc3QgbnRyaWFuZ2xlcmlnaHRlcSA9IFwiXFx1MjJFRFwiO1xuY29uc3QgTnUgPSBcIlxcdTAzOURcIjtcbmNvbnN0IG51ID0gXCJcXHUwM0JEXCI7XG5jb25zdCBudW0gPSBcIiNcIjtcbmNvbnN0IG51bWVybyA9IFwiXFx1MjExNlwiO1xuY29uc3QgbnVtc3AgPSBcIlxcdTIwMDdcIjtcbmNvbnN0IG52YXAgPSBcIlxcdTIyNERcXHUyMEQyXCI7XG5jb25zdCBudmRhc2ggPSBcIlxcdTIyQUNcIjtcbmNvbnN0IG52RGFzaCA9IFwiXFx1MjJBRFwiO1xuY29uc3QgblZkYXNoID0gXCJcXHUyMkFFXCI7XG5jb25zdCBuVkRhc2ggPSBcIlxcdTIyQUZcIjtcbmNvbnN0IG52Z2UgPSBcIlxcdTIyNjVcXHUyMEQyXCI7XG5jb25zdCBudmd0ID0gXCI+XFx1MjBEMlwiO1xuY29uc3QgbnZIYXJyID0gXCJcXHUyOTA0XCI7XG5jb25zdCBudmluZmluID0gXCJcXHUyOURFXCI7XG5jb25zdCBudmxBcnIgPSBcIlxcdTI5MDJcIjtcbmNvbnN0IG52bGUgPSBcIlxcdTIyNjRcXHUyMEQyXCI7XG5jb25zdCBudmx0ID0gXCI8XFx1MjBEMlwiO1xuY29uc3QgbnZsdHJpZSA9IFwiXFx1MjJCNFxcdTIwRDJcIjtcbmNvbnN0IG52ckFyciA9IFwiXFx1MjkwM1wiO1xuY29uc3QgbnZydHJpZSA9IFwiXFx1MjJCNVxcdTIwRDJcIjtcbmNvbnN0IG52c2ltID0gXCJcXHUyMjNDXFx1MjBEMlwiO1xuY29uc3QgbndhcmhrID0gXCJcXHUyOTIzXCI7XG5jb25zdCBud2FyciA9IFwiXFx1MjE5NlwiO1xuY29uc3QgbndBcnIgPSBcIlxcdTIxRDZcIjtcbmNvbnN0IG53YXJyb3cgPSBcIlxcdTIxOTZcIjtcbmNvbnN0IG53bmVhciA9IFwiXFx1MjkyN1wiO1xuY29uc3QgT2FjdXRlID0gXCJcXHhEM1wiO1xuY29uc3Qgb2FjdXRlID0gXCJcXHhGM1wiO1xuY29uc3Qgb2FzdCA9IFwiXFx1MjI5QlwiO1xuY29uc3QgT2NpcmMgPSBcIlxceEQ0XCI7XG5jb25zdCBvY2lyYyA9IFwiXFx4RjRcIjtcbmNvbnN0IG9jaXIgPSBcIlxcdTIyOUFcIjtcbmNvbnN0IE9jeSA9IFwiXFx1MDQxRVwiO1xuY29uc3Qgb2N5ID0gXCJcXHUwNDNFXCI7XG5jb25zdCBvZGFzaCA9IFwiXFx1MjI5RFwiO1xuY29uc3QgT2RibGFjID0gXCJcXHUwMTUwXCI7XG5jb25zdCBvZGJsYWMgPSBcIlxcdTAxNTFcIjtcbmNvbnN0IG9kaXYgPSBcIlxcdTJBMzhcIjtcbmNvbnN0IG9kb3QgPSBcIlxcdTIyOTlcIjtcbmNvbnN0IG9kc29sZCA9IFwiXFx1MjlCQ1wiO1xuY29uc3QgT0VsaWcgPSBcIlxcdTAxNTJcIjtcbmNvbnN0IG9lbGlnID0gXCJcXHUwMTUzXCI7XG5jb25zdCBvZmNpciA9IFwiXFx1MjlCRlwiO1xuY29uc3QgT2ZyID0gXCJcXHV7MUQ1MTJ9XCI7XG5jb25zdCBvZnIgPSBcIlxcdXsxRDUyQ31cIjtcbmNvbnN0IG9nb24gPSBcIlxcdTAyREJcIjtcbmNvbnN0IE9ncmF2ZSA9IFwiXFx4RDJcIjtcbmNvbnN0IG9ncmF2ZSA9IFwiXFx4RjJcIjtcbmNvbnN0IG9ndCA9IFwiXFx1MjlDMVwiO1xuY29uc3Qgb2hiYXIgPSBcIlxcdTI5QjVcIjtcbmNvbnN0IG9obSA9IFwiXFx1MDNBOVwiO1xuY29uc3Qgb2ludCA9IFwiXFx1MjIyRVwiO1xuY29uc3Qgb2xhcnIgPSBcIlxcdTIxQkFcIjtcbmNvbnN0IG9sY2lyID0gXCJcXHUyOUJFXCI7XG5jb25zdCBvbGNyb3NzID0gXCJcXHUyOUJCXCI7XG5jb25zdCBvbGluZSA9IFwiXFx1MjAzRVwiO1xuY29uc3Qgb2x0ID0gXCJcXHUyOUMwXCI7XG5jb25zdCBPbWFjciA9IFwiXFx1MDE0Q1wiO1xuY29uc3Qgb21hY3IgPSBcIlxcdTAxNERcIjtcbmNvbnN0IE9tZWdhID0gXCJcXHUwM0E5XCI7XG5jb25zdCBvbWVnYSA9IFwiXFx1MDNDOVwiO1xuY29uc3QgT21pY3JvbiA9IFwiXFx1MDM5RlwiO1xuY29uc3Qgb21pY3JvbiA9IFwiXFx1MDNCRlwiO1xuY29uc3Qgb21pZCA9IFwiXFx1MjlCNlwiO1xuY29uc3Qgb21pbnVzID0gXCJcXHUyMjk2XCI7XG5jb25zdCBPb3BmID0gXCJcXHV7MUQ1NDZ9XCI7XG5jb25zdCBvb3BmID0gXCJcXHV7MUQ1NjB9XCI7XG5jb25zdCBvcGFyID0gXCJcXHUyOUI3XCI7XG5jb25zdCBPcGVuQ3VybHlEb3VibGVRdW90ZSA9IFwiXFx1MjAxQ1wiO1xuY29uc3QgT3BlbkN1cmx5UXVvdGUgPSBcIlxcdTIwMThcIjtcbmNvbnN0IG9wZXJwID0gXCJcXHUyOUI5XCI7XG5jb25zdCBvcGx1cyA9IFwiXFx1MjI5NVwiO1xuY29uc3Qgb3JhcnIgPSBcIlxcdTIxQkJcIjtcbmNvbnN0IE9yID0gXCJcXHUyQTU0XCI7XG5jb25zdCBvciA9IFwiXFx1MjIyOFwiO1xuY29uc3Qgb3JkID0gXCJcXHUyQTVEXCI7XG5jb25zdCBvcmRlciA9IFwiXFx1MjEzNFwiO1xuY29uc3Qgb3JkZXJvZiA9IFwiXFx1MjEzNFwiO1xuY29uc3Qgb3JkZiA9IFwiXFx4QUFcIjtcbmNvbnN0IG9yZG0gPSBcIlxceEJBXCI7XG5jb25zdCBvcmlnb2YgPSBcIlxcdTIyQjZcIjtcbmNvbnN0IG9yb3IgPSBcIlxcdTJBNTZcIjtcbmNvbnN0IG9yc2xvcGUgPSBcIlxcdTJBNTdcIjtcbmNvbnN0IG9ydiA9IFwiXFx1MkE1QlwiO1xuY29uc3Qgb1MgPSBcIlxcdTI0QzhcIjtcbmNvbnN0IE9zY3IgPSBcIlxcdXsxRDRBQX1cIjtcbmNvbnN0IG9zY3IgPSBcIlxcdTIxMzRcIjtcbmNvbnN0IE9zbGFzaCA9IFwiXFx4RDhcIjtcbmNvbnN0IG9zbGFzaCA9IFwiXFx4RjhcIjtcbmNvbnN0IG9zb2wgPSBcIlxcdTIyOThcIjtcbmNvbnN0IE90aWxkZSA9IFwiXFx4RDVcIjtcbmNvbnN0IG90aWxkZSA9IFwiXFx4RjVcIjtcbmNvbnN0IG90aW1lc2FzID0gXCJcXHUyQTM2XCI7XG5jb25zdCBPdGltZXMgPSBcIlxcdTJBMzdcIjtcbmNvbnN0IG90aW1lcyA9IFwiXFx1MjI5N1wiO1xuY29uc3QgT3VtbCA9IFwiXFx4RDZcIjtcbmNvbnN0IG91bWwgPSBcIlxceEY2XCI7XG5jb25zdCBvdmJhciA9IFwiXFx1MjMzRFwiO1xuY29uc3QgT3ZlckJhciA9IFwiXFx1MjAzRVwiO1xuY29uc3QgT3ZlckJyYWNlID0gXCJcXHUyM0RFXCI7XG5jb25zdCBPdmVyQnJhY2tldCA9IFwiXFx1MjNCNFwiO1xuY29uc3QgT3ZlclBhcmVudGhlc2lzID0gXCJcXHUyM0RDXCI7XG5jb25zdCBwYXJhID0gXCJcXHhCNlwiO1xuY29uc3QgcGFyYWxsZWwgPSBcIlxcdTIyMjVcIjtcbmNvbnN0IHBhciA9IFwiXFx1MjIyNVwiO1xuY29uc3QgcGFyc2ltID0gXCJcXHUyQUYzXCI7XG5jb25zdCBwYXJzbCA9IFwiXFx1MkFGRFwiO1xuY29uc3QgcGFydCA9IFwiXFx1MjIwMlwiO1xuY29uc3QgUGFydGlhbEQgPSBcIlxcdTIyMDJcIjtcbmNvbnN0IFBjeSA9IFwiXFx1MDQxRlwiO1xuY29uc3QgcGN5ID0gXCJcXHUwNDNGXCI7XG5jb25zdCBwZXJjbnQgPSBcIiVcIjtcbmNvbnN0IHBlcmlvZCA9IFwiLlwiO1xuY29uc3QgcGVybWlsID0gXCJcXHUyMDMwXCI7XG5jb25zdCBwZXJwID0gXCJcXHUyMkE1XCI7XG5jb25zdCBwZXJ0ZW5rID0gXCJcXHUyMDMxXCI7XG5jb25zdCBQZnIgPSBcIlxcdXsxRDUxM31cIjtcbmNvbnN0IHBmciA9IFwiXFx1ezFENTJEfVwiO1xuY29uc3QgUGhpID0gXCJcXHUwM0E2XCI7XG5jb25zdCBwaGkgPSBcIlxcdTAzQzZcIjtcbmNvbnN0IHBoaXYgPSBcIlxcdTAzRDVcIjtcbmNvbnN0IHBobW1hdCA9IFwiXFx1MjEzM1wiO1xuY29uc3QgcGhvbmUgPSBcIlxcdTI2MEVcIjtcbmNvbnN0IFBpID0gXCJcXHUwM0EwXCI7XG5jb25zdCBwaSA9IFwiXFx1MDNDMFwiO1xuY29uc3QgcGl0Y2hmb3JrID0gXCJcXHUyMkQ0XCI7XG5jb25zdCBwaXYgPSBcIlxcdTAzRDZcIjtcbmNvbnN0IHBsYW5jayA9IFwiXFx1MjEwRlwiO1xuY29uc3QgcGxhbmNraCA9IFwiXFx1MjEwRVwiO1xuY29uc3QgcGxhbmt2ID0gXCJcXHUyMTBGXCI7XG5jb25zdCBwbHVzYWNpciA9IFwiXFx1MkEyM1wiO1xuY29uc3QgcGx1c2IgPSBcIlxcdTIyOUVcIjtcbmNvbnN0IHBsdXNjaXIgPSBcIlxcdTJBMjJcIjtcbmNvbnN0IHBsdXMgPSBcIitcIjtcbmNvbnN0IHBsdXNkbyA9IFwiXFx1MjIxNFwiO1xuY29uc3QgcGx1c2R1ID0gXCJcXHUyQTI1XCI7XG5jb25zdCBwbHVzZSA9IFwiXFx1MkE3MlwiO1xuY29uc3QgUGx1c01pbnVzID0gXCJcXHhCMVwiO1xuY29uc3QgcGx1c21uID0gXCJcXHhCMVwiO1xuY29uc3QgcGx1c3NpbSA9IFwiXFx1MkEyNlwiO1xuY29uc3QgcGx1c3R3byA9IFwiXFx1MkEyN1wiO1xuY29uc3QgcG0gPSBcIlxceEIxXCI7XG5jb25zdCBQb2luY2FyZXBsYW5lID0gXCJcXHUyMTBDXCI7XG5jb25zdCBwb2ludGludCA9IFwiXFx1MkExNVwiO1xuY29uc3QgcG9wZiA9IFwiXFx1ezFENTYxfVwiO1xuY29uc3QgUG9wZiA9IFwiXFx1MjExOVwiO1xuY29uc3QgcG91bmQgPSBcIlxceEEzXCI7XG5jb25zdCBwcmFwID0gXCJcXHUyQUI3XCI7XG5jb25zdCBQciA9IFwiXFx1MkFCQlwiO1xuY29uc3QgcHIgPSBcIlxcdTIyN0FcIjtcbmNvbnN0IHByY3VlID0gXCJcXHUyMjdDXCI7XG5jb25zdCBwcmVjYXBwcm94ID0gXCJcXHUyQUI3XCI7XG5jb25zdCBwcmVjID0gXCJcXHUyMjdBXCI7XG5jb25zdCBwcmVjY3VybHllcSA9IFwiXFx1MjI3Q1wiO1xuY29uc3QgUHJlY2VkZXMgPSBcIlxcdTIyN0FcIjtcbmNvbnN0IFByZWNlZGVzRXF1YWwgPSBcIlxcdTJBQUZcIjtcbmNvbnN0IFByZWNlZGVzU2xhbnRFcXVhbCA9IFwiXFx1MjI3Q1wiO1xuY29uc3QgUHJlY2VkZXNUaWxkZSA9IFwiXFx1MjI3RVwiO1xuY29uc3QgcHJlY2VxID0gXCJcXHUyQUFGXCI7XG5jb25zdCBwcmVjbmFwcHJveCA9IFwiXFx1MkFCOVwiO1xuY29uc3QgcHJlY25lcXEgPSBcIlxcdTJBQjVcIjtcbmNvbnN0IHByZWNuc2ltID0gXCJcXHUyMkU4XCI7XG5jb25zdCBwcmUgPSBcIlxcdTJBQUZcIjtcbmNvbnN0IHByRSA9IFwiXFx1MkFCM1wiO1xuY29uc3QgcHJlY3NpbSA9IFwiXFx1MjI3RVwiO1xuY29uc3QgcHJpbWUgPSBcIlxcdTIwMzJcIjtcbmNvbnN0IFByaW1lID0gXCJcXHUyMDMzXCI7XG5jb25zdCBwcmltZXMgPSBcIlxcdTIxMTlcIjtcbmNvbnN0IHBybmFwID0gXCJcXHUyQUI5XCI7XG5jb25zdCBwcm5FID0gXCJcXHUyQUI1XCI7XG5jb25zdCBwcm5zaW0gPSBcIlxcdTIyRThcIjtcbmNvbnN0IHByb2QgPSBcIlxcdTIyMEZcIjtcbmNvbnN0IFByb2R1Y3QgPSBcIlxcdTIyMEZcIjtcbmNvbnN0IHByb2ZhbGFyID0gXCJcXHUyMzJFXCI7XG5jb25zdCBwcm9mbGluZSA9IFwiXFx1MjMxMlwiO1xuY29uc3QgcHJvZnN1cmYgPSBcIlxcdTIzMTNcIjtcbmNvbnN0IHByb3AgPSBcIlxcdTIyMURcIjtcbmNvbnN0IFByb3BvcnRpb25hbCA9IFwiXFx1MjIxRFwiO1xuY29uc3QgUHJvcG9ydGlvbiA9IFwiXFx1MjIzN1wiO1xuY29uc3QgcHJvcHRvID0gXCJcXHUyMjFEXCI7XG5jb25zdCBwcnNpbSA9IFwiXFx1MjI3RVwiO1xuY29uc3QgcHJ1cmVsID0gXCJcXHUyMkIwXCI7XG5jb25zdCBQc2NyID0gXCJcXHV7MUQ0QUJ9XCI7XG5jb25zdCBwc2NyID0gXCJcXHV7MUQ0QzV9XCI7XG5jb25zdCBQc2kgPSBcIlxcdTAzQThcIjtcbmNvbnN0IHBzaSA9IFwiXFx1MDNDOFwiO1xuY29uc3QgcHVuY3NwID0gXCJcXHUyMDA4XCI7XG5jb25zdCBRZnIgPSBcIlxcdXsxRDUxNH1cIjtcbmNvbnN0IHFmciA9IFwiXFx1ezFENTJFfVwiO1xuY29uc3QgcWludCA9IFwiXFx1MkEwQ1wiO1xuY29uc3QgcW9wZiA9IFwiXFx1ezFENTYyfVwiO1xuY29uc3QgUW9wZiA9IFwiXFx1MjExQVwiO1xuY29uc3QgcXByaW1lID0gXCJcXHUyMDU3XCI7XG5jb25zdCBRc2NyID0gXCJcXHV7MUQ0QUN9XCI7XG5jb25zdCBxc2NyID0gXCJcXHV7MUQ0QzZ9XCI7XG5jb25zdCBxdWF0ZXJuaW9ucyA9IFwiXFx1MjEwRFwiO1xuY29uc3QgcXVhdGludCA9IFwiXFx1MkExNlwiO1xuY29uc3QgcXVlc3QgPSBcIj9cIjtcbmNvbnN0IHF1ZXN0ZXEgPSBcIlxcdTIyNUZcIjtcbmNvbnN0IHF1b3QgPSAnXCInO1xuY29uc3QgUVVPVCA9ICdcIic7XG5jb25zdCByQWFyciA9IFwiXFx1MjFEQlwiO1xuY29uc3QgcmFjZSA9IFwiXFx1MjIzRFxcdTAzMzFcIjtcbmNvbnN0IFJhY3V0ZSA9IFwiXFx1MDE1NFwiO1xuY29uc3QgcmFjdXRlID0gXCJcXHUwMTU1XCI7XG5jb25zdCByYWRpYyA9IFwiXFx1MjIxQVwiO1xuY29uc3QgcmFlbXB0eXYgPSBcIlxcdTI5QjNcIjtcbmNvbnN0IHJhbmcgPSBcIlxcdTI3RTlcIjtcbmNvbnN0IFJhbmcgPSBcIlxcdTI3RUJcIjtcbmNvbnN0IHJhbmdkID0gXCJcXHUyOTkyXCI7XG5jb25zdCByYW5nZSA9IFwiXFx1MjlBNVwiO1xuY29uc3QgcmFuZ2xlID0gXCJcXHUyN0U5XCI7XG5jb25zdCByYXF1byA9IFwiXFx4QkJcIjtcbmNvbnN0IHJhcnJhcCA9IFwiXFx1Mjk3NVwiO1xuY29uc3QgcmFycmIgPSBcIlxcdTIxRTVcIjtcbmNvbnN0IHJhcnJiZnMgPSBcIlxcdTI5MjBcIjtcbmNvbnN0IHJhcnJjID0gXCJcXHUyOTMzXCI7XG5jb25zdCByYXJyID0gXCJcXHUyMTkyXCI7XG5jb25zdCBSYXJyID0gXCJcXHUyMUEwXCI7XG5jb25zdCByQXJyID0gXCJcXHUyMUQyXCI7XG5jb25zdCByYXJyZnMgPSBcIlxcdTI5MUVcIjtcbmNvbnN0IHJhcnJoayA9IFwiXFx1MjFBQVwiO1xuY29uc3QgcmFycmxwID0gXCJcXHUyMUFDXCI7XG5jb25zdCByYXJycGwgPSBcIlxcdTI5NDVcIjtcbmNvbnN0IHJhcnJzaW0gPSBcIlxcdTI5NzRcIjtcbmNvbnN0IFJhcnJ0bCA9IFwiXFx1MjkxNlwiO1xuY29uc3QgcmFycnRsID0gXCJcXHUyMUEzXCI7XG5jb25zdCByYXJydyA9IFwiXFx1MjE5RFwiO1xuY29uc3QgcmF0YWlsID0gXCJcXHUyOTFBXCI7XG5jb25zdCByQXRhaWwgPSBcIlxcdTI5MUNcIjtcbmNvbnN0IHJhdGlvID0gXCJcXHUyMjM2XCI7XG5jb25zdCByYXRpb25hbHMgPSBcIlxcdTIxMUFcIjtcbmNvbnN0IHJiYXJyID0gXCJcXHUyOTBEXCI7XG5jb25zdCByQmFyciA9IFwiXFx1MjkwRlwiO1xuY29uc3QgUkJhcnIgPSBcIlxcdTI5MTBcIjtcbmNvbnN0IHJiYnJrID0gXCJcXHUyNzczXCI7XG5jb25zdCByYnJhY2UgPSBcIn1cIjtcbmNvbnN0IHJicmFjayA9IFwiXVwiO1xuY29uc3QgcmJya2UgPSBcIlxcdTI5OENcIjtcbmNvbnN0IHJicmtzbGQgPSBcIlxcdTI5OEVcIjtcbmNvbnN0IHJicmtzbHUgPSBcIlxcdTI5OTBcIjtcbmNvbnN0IFJjYXJvbiA9IFwiXFx1MDE1OFwiO1xuY29uc3QgcmNhcm9uID0gXCJcXHUwMTU5XCI7XG5jb25zdCBSY2VkaWwgPSBcIlxcdTAxNTZcIjtcbmNvbnN0IHJjZWRpbCA9IFwiXFx1MDE1N1wiO1xuY29uc3QgcmNlaWwgPSBcIlxcdTIzMDlcIjtcbmNvbnN0IHJjdWIgPSBcIn1cIjtcbmNvbnN0IFJjeSA9IFwiXFx1MDQyMFwiO1xuY29uc3QgcmN5ID0gXCJcXHUwNDQwXCI7XG5jb25zdCByZGNhID0gXCJcXHUyOTM3XCI7XG5jb25zdCByZGxkaGFyID0gXCJcXHUyOTY5XCI7XG5jb25zdCByZHF1byA9IFwiXFx1MjAxRFwiO1xuY29uc3QgcmRxdW9yID0gXCJcXHUyMDFEXCI7XG5jb25zdCByZHNoID0gXCJcXHUyMUIzXCI7XG5jb25zdCByZWFsID0gXCJcXHUyMTFDXCI7XG5jb25zdCByZWFsaW5lID0gXCJcXHUyMTFCXCI7XG5jb25zdCByZWFscGFydCA9IFwiXFx1MjExQ1wiO1xuY29uc3QgcmVhbHMgPSBcIlxcdTIxMURcIjtcbmNvbnN0IFJlID0gXCJcXHUyMTFDXCI7XG5jb25zdCByZWN0ID0gXCJcXHUyNUFEXCI7XG5jb25zdCByZWcgPSBcIlxceEFFXCI7XG5jb25zdCBSRUcgPSBcIlxceEFFXCI7XG5jb25zdCBSZXZlcnNlRWxlbWVudCA9IFwiXFx1MjIwQlwiO1xuY29uc3QgUmV2ZXJzZUVxdWlsaWJyaXVtID0gXCJcXHUyMUNCXCI7XG5jb25zdCBSZXZlcnNlVXBFcXVpbGlicml1bSA9IFwiXFx1Mjk2RlwiO1xuY29uc3QgcmZpc2h0ID0gXCJcXHUyOTdEXCI7XG5jb25zdCByZmxvb3IgPSBcIlxcdTIzMEJcIjtcbmNvbnN0IHJmciA9IFwiXFx1ezFENTJGfVwiO1xuY29uc3QgUmZyID0gXCJcXHUyMTFDXCI7XG5jb25zdCBySGFyID0gXCJcXHUyOTY0XCI7XG5jb25zdCByaGFyZCA9IFwiXFx1MjFDMVwiO1xuY29uc3QgcmhhcnUgPSBcIlxcdTIxQzBcIjtcbmNvbnN0IHJoYXJ1bCA9IFwiXFx1Mjk2Q1wiO1xuY29uc3QgUmhvID0gXCJcXHUwM0ExXCI7XG5jb25zdCByaG8gPSBcIlxcdTAzQzFcIjtcbmNvbnN0IHJob3YgPSBcIlxcdTAzRjFcIjtcbmNvbnN0IFJpZ2h0QW5nbGVCcmFja2V0ID0gXCJcXHUyN0U5XCI7XG5jb25zdCBSaWdodEFycm93QmFyID0gXCJcXHUyMUU1XCI7XG5jb25zdCByaWdodGFycm93ID0gXCJcXHUyMTkyXCI7XG5jb25zdCBSaWdodEFycm93ID0gXCJcXHUyMTkyXCI7XG5jb25zdCBSaWdodGFycm93ID0gXCJcXHUyMUQyXCI7XG5jb25zdCBSaWdodEFycm93TGVmdEFycm93ID0gXCJcXHUyMUM0XCI7XG5jb25zdCByaWdodGFycm93dGFpbCA9IFwiXFx1MjFBM1wiO1xuY29uc3QgUmlnaHRDZWlsaW5nID0gXCJcXHUyMzA5XCI7XG5jb25zdCBSaWdodERvdWJsZUJyYWNrZXQgPSBcIlxcdTI3RTdcIjtcbmNvbnN0IFJpZ2h0RG93blRlZVZlY3RvciA9IFwiXFx1Mjk1RFwiO1xuY29uc3QgUmlnaHREb3duVmVjdG9yQmFyID0gXCJcXHUyOTU1XCI7XG5jb25zdCBSaWdodERvd25WZWN0b3IgPSBcIlxcdTIxQzJcIjtcbmNvbnN0IFJpZ2h0Rmxvb3IgPSBcIlxcdTIzMEJcIjtcbmNvbnN0IHJpZ2h0aGFycG9vbmRvd24gPSBcIlxcdTIxQzFcIjtcbmNvbnN0IHJpZ2h0aGFycG9vbnVwID0gXCJcXHUyMUMwXCI7XG5jb25zdCByaWdodGxlZnRhcnJvd3MgPSBcIlxcdTIxQzRcIjtcbmNvbnN0IHJpZ2h0bGVmdGhhcnBvb25zID0gXCJcXHUyMUNDXCI7XG5jb25zdCByaWdodHJpZ2h0YXJyb3dzID0gXCJcXHUyMUM5XCI7XG5jb25zdCByaWdodHNxdWlnYXJyb3cgPSBcIlxcdTIxOURcIjtcbmNvbnN0IFJpZ2h0VGVlQXJyb3cgPSBcIlxcdTIxQTZcIjtcbmNvbnN0IFJpZ2h0VGVlID0gXCJcXHUyMkEyXCI7XG5jb25zdCBSaWdodFRlZVZlY3RvciA9IFwiXFx1Mjk1QlwiO1xuY29uc3QgcmlnaHR0aHJlZXRpbWVzID0gXCJcXHUyMkNDXCI7XG5jb25zdCBSaWdodFRyaWFuZ2xlQmFyID0gXCJcXHUyOUQwXCI7XG5jb25zdCBSaWdodFRyaWFuZ2xlID0gXCJcXHUyMkIzXCI7XG5jb25zdCBSaWdodFRyaWFuZ2xlRXF1YWwgPSBcIlxcdTIyQjVcIjtcbmNvbnN0IFJpZ2h0VXBEb3duVmVjdG9yID0gXCJcXHUyOTRGXCI7XG5jb25zdCBSaWdodFVwVGVlVmVjdG9yID0gXCJcXHUyOTVDXCI7XG5jb25zdCBSaWdodFVwVmVjdG9yQmFyID0gXCJcXHUyOTU0XCI7XG5jb25zdCBSaWdodFVwVmVjdG9yID0gXCJcXHUyMUJFXCI7XG5jb25zdCBSaWdodFZlY3RvckJhciA9IFwiXFx1Mjk1M1wiO1xuY29uc3QgUmlnaHRWZWN0b3IgPSBcIlxcdTIxQzBcIjtcbmNvbnN0IHJpbmcgPSBcIlxcdTAyREFcIjtcbmNvbnN0IHJpc2luZ2RvdHNlcSA9IFwiXFx1MjI1M1wiO1xuY29uc3QgcmxhcnIgPSBcIlxcdTIxQzRcIjtcbmNvbnN0IHJsaGFyID0gXCJcXHUyMUNDXCI7XG5jb25zdCBybG0gPSBcIlxcdTIwMEZcIjtcbmNvbnN0IHJtb3VzdGFjaGUgPSBcIlxcdTIzQjFcIjtcbmNvbnN0IHJtb3VzdCA9IFwiXFx1MjNCMVwiO1xuY29uc3Qgcm5taWQgPSBcIlxcdTJBRUVcIjtcbmNvbnN0IHJvYW5nID0gXCJcXHUyN0VEXCI7XG5jb25zdCByb2FyciA9IFwiXFx1MjFGRVwiO1xuY29uc3Qgcm9icmsgPSBcIlxcdTI3RTdcIjtcbmNvbnN0IHJvcGFyID0gXCJcXHUyOTg2XCI7XG5jb25zdCByb3BmID0gXCJcXHV7MUQ1NjN9XCI7XG5jb25zdCBSb3BmID0gXCJcXHUyMTFEXCI7XG5jb25zdCByb3BsdXMgPSBcIlxcdTJBMkVcIjtcbmNvbnN0IHJvdGltZXMgPSBcIlxcdTJBMzVcIjtcbmNvbnN0IFJvdW5kSW1wbGllcyA9IFwiXFx1Mjk3MFwiO1xuY29uc3QgcnBhciA9IFwiKVwiO1xuY29uc3QgcnBhcmd0ID0gXCJcXHUyOTk0XCI7XG5jb25zdCBycHBvbGludCA9IFwiXFx1MkExMlwiO1xuY29uc3QgcnJhcnIgPSBcIlxcdTIxQzlcIjtcbmNvbnN0IFJyaWdodGFycm93ID0gXCJcXHUyMURCXCI7XG5jb25zdCByc2FxdW8gPSBcIlxcdTIwM0FcIjtcbmNvbnN0IHJzY3IgPSBcIlxcdXsxRDRDN31cIjtcbmNvbnN0IFJzY3IgPSBcIlxcdTIxMUJcIjtcbmNvbnN0IHJzaCA9IFwiXFx1MjFCMVwiO1xuY29uc3QgUnNoID0gXCJcXHUyMUIxXCI7XG5jb25zdCByc3FiID0gXCJdXCI7XG5jb25zdCByc3F1byA9IFwiXFx1MjAxOVwiO1xuY29uc3QgcnNxdW9yID0gXCJcXHUyMDE5XCI7XG5jb25zdCBydGhyZWUgPSBcIlxcdTIyQ0NcIjtcbmNvbnN0IHJ0aW1lcyA9IFwiXFx1MjJDQVwiO1xuY29uc3QgcnRyaSA9IFwiXFx1MjVCOVwiO1xuY29uc3QgcnRyaWUgPSBcIlxcdTIyQjVcIjtcbmNvbnN0IHJ0cmlmID0gXCJcXHUyNUI4XCI7XG5jb25zdCBydHJpbHRyaSA9IFwiXFx1MjlDRVwiO1xuY29uc3QgUnVsZURlbGF5ZWQgPSBcIlxcdTI5RjRcIjtcbmNvbnN0IHJ1bHVoYXIgPSBcIlxcdTI5NjhcIjtcbmNvbnN0IHJ4ID0gXCJcXHUyMTFFXCI7XG5jb25zdCBTYWN1dGUgPSBcIlxcdTAxNUFcIjtcbmNvbnN0IHNhY3V0ZSA9IFwiXFx1MDE1QlwiO1xuY29uc3Qgc2JxdW8gPSBcIlxcdTIwMUFcIjtcbmNvbnN0IHNjYXAgPSBcIlxcdTJBQjhcIjtcbmNvbnN0IFNjYXJvbiA9IFwiXFx1MDE2MFwiO1xuY29uc3Qgc2Nhcm9uID0gXCJcXHUwMTYxXCI7XG5jb25zdCBTYyA9IFwiXFx1MkFCQ1wiO1xuY29uc3Qgc2MgPSBcIlxcdTIyN0JcIjtcbmNvbnN0IHNjY3VlID0gXCJcXHUyMjdEXCI7XG5jb25zdCBzY2UgPSBcIlxcdTJBQjBcIjtcbmNvbnN0IHNjRSA9IFwiXFx1MkFCNFwiO1xuY29uc3QgU2NlZGlsID0gXCJcXHUwMTVFXCI7XG5jb25zdCBzY2VkaWwgPSBcIlxcdTAxNUZcIjtcbmNvbnN0IFNjaXJjID0gXCJcXHUwMTVDXCI7XG5jb25zdCBzY2lyYyA9IFwiXFx1MDE1RFwiO1xuY29uc3Qgc2NuYXAgPSBcIlxcdTJBQkFcIjtcbmNvbnN0IHNjbkUgPSBcIlxcdTJBQjZcIjtcbmNvbnN0IHNjbnNpbSA9IFwiXFx1MjJFOVwiO1xuY29uc3Qgc2Nwb2xpbnQgPSBcIlxcdTJBMTNcIjtcbmNvbnN0IHNjc2ltID0gXCJcXHUyMjdGXCI7XG5jb25zdCBTY3kgPSBcIlxcdTA0MjFcIjtcbmNvbnN0IHNjeSA9IFwiXFx1MDQ0MVwiO1xuY29uc3Qgc2RvdGIgPSBcIlxcdTIyQTFcIjtcbmNvbnN0IHNkb3QgPSBcIlxcdTIyQzVcIjtcbmNvbnN0IHNkb3RlID0gXCJcXHUyQTY2XCI7XG5jb25zdCBzZWFyaGsgPSBcIlxcdTI5MjVcIjtcbmNvbnN0IHNlYXJyID0gXCJcXHUyMTk4XCI7XG5jb25zdCBzZUFyciA9IFwiXFx1MjFEOFwiO1xuY29uc3Qgc2VhcnJvdyA9IFwiXFx1MjE5OFwiO1xuY29uc3Qgc2VjdCA9IFwiXFx4QTdcIjtcbmNvbnN0IHNlbWkgPSBcIjtcIjtcbmNvbnN0IHNlc3dhciA9IFwiXFx1MjkyOVwiO1xuY29uc3Qgc2V0bWludXMgPSBcIlxcdTIyMTZcIjtcbmNvbnN0IHNldG1uID0gXCJcXHUyMjE2XCI7XG5jb25zdCBzZXh0ID0gXCJcXHUyNzM2XCI7XG5jb25zdCBTZnIgPSBcIlxcdXsxRDUxNn1cIjtcbmNvbnN0IHNmciA9IFwiXFx1ezFENTMwfVwiO1xuY29uc3Qgc2Zyb3duID0gXCJcXHUyMzIyXCI7XG5jb25zdCBzaGFycCA9IFwiXFx1MjY2RlwiO1xuY29uc3QgU0hDSGN5ID0gXCJcXHUwNDI5XCI7XG5jb25zdCBzaGNoY3kgPSBcIlxcdTA0NDlcIjtcbmNvbnN0IFNIY3kgPSBcIlxcdTA0MjhcIjtcbmNvbnN0IHNoY3kgPSBcIlxcdTA0NDhcIjtcbmNvbnN0IFNob3J0RG93bkFycm93ID0gXCJcXHUyMTkzXCI7XG5jb25zdCBTaG9ydExlZnRBcnJvdyA9IFwiXFx1MjE5MFwiO1xuY29uc3Qgc2hvcnRtaWQgPSBcIlxcdTIyMjNcIjtcbmNvbnN0IHNob3J0cGFyYWxsZWwgPSBcIlxcdTIyMjVcIjtcbmNvbnN0IFNob3J0UmlnaHRBcnJvdyA9IFwiXFx1MjE5MlwiO1xuY29uc3QgU2hvcnRVcEFycm93ID0gXCJcXHUyMTkxXCI7XG5jb25zdCBzaHkgPSBcIlxceEFEXCI7XG5jb25zdCBTaWdtYSA9IFwiXFx1MDNBM1wiO1xuY29uc3Qgc2lnbWEgPSBcIlxcdTAzQzNcIjtcbmNvbnN0IHNpZ21hZiA9IFwiXFx1MDNDMlwiO1xuY29uc3Qgc2lnbWF2ID0gXCJcXHUwM0MyXCI7XG5jb25zdCBzaW0gPSBcIlxcdTIyM0NcIjtcbmNvbnN0IHNpbWRvdCA9IFwiXFx1MkE2QVwiO1xuY29uc3Qgc2ltZSA9IFwiXFx1MjI0M1wiO1xuY29uc3Qgc2ltZXEgPSBcIlxcdTIyNDNcIjtcbmNvbnN0IHNpbWcgPSBcIlxcdTJBOUVcIjtcbmNvbnN0IHNpbWdFID0gXCJcXHUyQUEwXCI7XG5jb25zdCBzaW1sID0gXCJcXHUyQTlEXCI7XG5jb25zdCBzaW1sRSA9IFwiXFx1MkE5RlwiO1xuY29uc3Qgc2ltbmUgPSBcIlxcdTIyNDZcIjtcbmNvbnN0IHNpbXBsdXMgPSBcIlxcdTJBMjRcIjtcbmNvbnN0IHNpbXJhcnIgPSBcIlxcdTI5NzJcIjtcbmNvbnN0IHNsYXJyID0gXCJcXHUyMTkwXCI7XG5jb25zdCBTbWFsbENpcmNsZSA9IFwiXFx1MjIxOFwiO1xuY29uc3Qgc21hbGxzZXRtaW51cyA9IFwiXFx1MjIxNlwiO1xuY29uc3Qgc21hc2hwID0gXCJcXHUyQTMzXCI7XG5jb25zdCBzbWVwYXJzbCA9IFwiXFx1MjlFNFwiO1xuY29uc3Qgc21pZCA9IFwiXFx1MjIyM1wiO1xuY29uc3Qgc21pbGUgPSBcIlxcdTIzMjNcIjtcbmNvbnN0IHNtdCA9IFwiXFx1MkFBQVwiO1xuY29uc3Qgc210ZSA9IFwiXFx1MkFBQ1wiO1xuY29uc3Qgc210ZXMgPSBcIlxcdTJBQUNcXHVGRTAwXCI7XG5jb25zdCBTT0ZUY3kgPSBcIlxcdTA0MkNcIjtcbmNvbnN0IHNvZnRjeSA9IFwiXFx1MDQ0Q1wiO1xuY29uc3Qgc29sYmFyID0gXCJcXHUyMzNGXCI7XG5jb25zdCBzb2xiID0gXCJcXHUyOUM0XCI7XG5jb25zdCBzb2wgPSBcIi9cIjtcbmNvbnN0IFNvcGYgPSBcIlxcdXsxRDU0QX1cIjtcbmNvbnN0IHNvcGYgPSBcIlxcdXsxRDU2NH1cIjtcbmNvbnN0IHNwYWRlcyA9IFwiXFx1MjY2MFwiO1xuY29uc3Qgc3BhZGVzdWl0ID0gXCJcXHUyNjYwXCI7XG5jb25zdCBzcGFyID0gXCJcXHUyMjI1XCI7XG5jb25zdCBzcWNhcCA9IFwiXFx1MjI5M1wiO1xuY29uc3Qgc3FjYXBzID0gXCJcXHUyMjkzXFx1RkUwMFwiO1xuY29uc3Qgc3FjdXAgPSBcIlxcdTIyOTRcIjtcbmNvbnN0IHNxY3VwcyA9IFwiXFx1MjI5NFxcdUZFMDBcIjtcbmNvbnN0IFNxcnQgPSBcIlxcdTIyMUFcIjtcbmNvbnN0IHNxc3ViID0gXCJcXHUyMjhGXCI7XG5jb25zdCBzcXN1YmUgPSBcIlxcdTIyOTFcIjtcbmNvbnN0IHNxc3Vic2V0ID0gXCJcXHUyMjhGXCI7XG5jb25zdCBzcXN1YnNldGVxID0gXCJcXHUyMjkxXCI7XG5jb25zdCBzcXN1cCA9IFwiXFx1MjI5MFwiO1xuY29uc3Qgc3FzdXBlID0gXCJcXHUyMjkyXCI7XG5jb25zdCBzcXN1cHNldCA9IFwiXFx1MjI5MFwiO1xuY29uc3Qgc3FzdXBzZXRlcSA9IFwiXFx1MjI5MlwiO1xuY29uc3Qgc3F1YXJlID0gXCJcXHUyNUExXCI7XG5jb25zdCBTcXVhcmUgPSBcIlxcdTI1QTFcIjtcbmNvbnN0IFNxdWFyZUludGVyc2VjdGlvbiA9IFwiXFx1MjI5M1wiO1xuY29uc3QgU3F1YXJlU3Vic2V0ID0gXCJcXHUyMjhGXCI7XG5jb25zdCBTcXVhcmVTdWJzZXRFcXVhbCA9IFwiXFx1MjI5MVwiO1xuY29uc3QgU3F1YXJlU3VwZXJzZXQgPSBcIlxcdTIyOTBcIjtcbmNvbnN0IFNxdWFyZVN1cGVyc2V0RXF1YWwgPSBcIlxcdTIyOTJcIjtcbmNvbnN0IFNxdWFyZVVuaW9uID0gXCJcXHUyMjk0XCI7XG5jb25zdCBzcXVhcmYgPSBcIlxcdTI1QUFcIjtcbmNvbnN0IHNxdSA9IFwiXFx1MjVBMVwiO1xuY29uc3Qgc3F1ZiA9IFwiXFx1MjVBQVwiO1xuY29uc3Qgc3JhcnIgPSBcIlxcdTIxOTJcIjtcbmNvbnN0IFNzY3IgPSBcIlxcdXsxRDRBRX1cIjtcbmNvbnN0IHNzY3IgPSBcIlxcdXsxRDRDOH1cIjtcbmNvbnN0IHNzZXRtbiA9IFwiXFx1MjIxNlwiO1xuY29uc3Qgc3NtaWxlID0gXCJcXHUyMzIzXCI7XG5jb25zdCBzc3RhcmYgPSBcIlxcdTIyQzZcIjtcbmNvbnN0IFN0YXIgPSBcIlxcdTIyQzZcIjtcbmNvbnN0IHN0YXIgPSBcIlxcdTI2MDZcIjtcbmNvbnN0IHN0YXJmID0gXCJcXHUyNjA1XCI7XG5jb25zdCBzdHJhaWdodGVwc2lsb24gPSBcIlxcdTAzRjVcIjtcbmNvbnN0IHN0cmFpZ2h0cGhpID0gXCJcXHUwM0Q1XCI7XG5jb25zdCBzdHJucyA9IFwiXFx4QUZcIjtcbmNvbnN0IHN1YiA9IFwiXFx1MjI4MlwiO1xuY29uc3QgU3ViID0gXCJcXHUyMkQwXCI7XG5jb25zdCBzdWJkb3QgPSBcIlxcdTJBQkRcIjtcbmNvbnN0IHN1YkUgPSBcIlxcdTJBQzVcIjtcbmNvbnN0IHN1YmUgPSBcIlxcdTIyODZcIjtcbmNvbnN0IHN1YmVkb3QgPSBcIlxcdTJBQzNcIjtcbmNvbnN0IHN1Ym11bHQgPSBcIlxcdTJBQzFcIjtcbmNvbnN0IHN1Ym5FID0gXCJcXHUyQUNCXCI7XG5jb25zdCBzdWJuZSA9IFwiXFx1MjI4QVwiO1xuY29uc3Qgc3VicGx1cyA9IFwiXFx1MkFCRlwiO1xuY29uc3Qgc3VicmFyciA9IFwiXFx1Mjk3OVwiO1xuY29uc3Qgc3Vic2V0ID0gXCJcXHUyMjgyXCI7XG5jb25zdCBTdWJzZXQgPSBcIlxcdTIyRDBcIjtcbmNvbnN0IHN1YnNldGVxID0gXCJcXHUyMjg2XCI7XG5jb25zdCBzdWJzZXRlcXEgPSBcIlxcdTJBQzVcIjtcbmNvbnN0IFN1YnNldEVxdWFsID0gXCJcXHUyMjg2XCI7XG5jb25zdCBzdWJzZXRuZXEgPSBcIlxcdTIyOEFcIjtcbmNvbnN0IHN1YnNldG5lcXEgPSBcIlxcdTJBQ0JcIjtcbmNvbnN0IHN1YnNpbSA9IFwiXFx1MkFDN1wiO1xuY29uc3Qgc3Vic3ViID0gXCJcXHUyQUQ1XCI7XG5jb25zdCBzdWJzdXAgPSBcIlxcdTJBRDNcIjtcbmNvbnN0IHN1Y2NhcHByb3ggPSBcIlxcdTJBQjhcIjtcbmNvbnN0IHN1Y2MgPSBcIlxcdTIyN0JcIjtcbmNvbnN0IHN1Y2NjdXJseWVxID0gXCJcXHUyMjdEXCI7XG5jb25zdCBTdWNjZWVkcyA9IFwiXFx1MjI3QlwiO1xuY29uc3QgU3VjY2VlZHNFcXVhbCA9IFwiXFx1MkFCMFwiO1xuY29uc3QgU3VjY2VlZHNTbGFudEVxdWFsID0gXCJcXHUyMjdEXCI7XG5jb25zdCBTdWNjZWVkc1RpbGRlID0gXCJcXHUyMjdGXCI7XG5jb25zdCBzdWNjZXEgPSBcIlxcdTJBQjBcIjtcbmNvbnN0IHN1Y2NuYXBwcm94ID0gXCJcXHUyQUJBXCI7XG5jb25zdCBzdWNjbmVxcSA9IFwiXFx1MkFCNlwiO1xuY29uc3Qgc3VjY25zaW0gPSBcIlxcdTIyRTlcIjtcbmNvbnN0IHN1Y2NzaW0gPSBcIlxcdTIyN0ZcIjtcbmNvbnN0IFN1Y2hUaGF0ID0gXCJcXHUyMjBCXCI7XG5jb25zdCBzdW0gPSBcIlxcdTIyMTFcIjtcbmNvbnN0IFN1bSA9IFwiXFx1MjIxMVwiO1xuY29uc3Qgc3VuZyA9IFwiXFx1MjY2QVwiO1xuY29uc3Qgc3VwMSA9IFwiXFx4QjlcIjtcbmNvbnN0IHN1cDIgPSBcIlxceEIyXCI7XG5jb25zdCBzdXAzID0gXCJcXHhCM1wiO1xuY29uc3Qgc3VwID0gXCJcXHUyMjgzXCI7XG5jb25zdCBTdXAgPSBcIlxcdTIyRDFcIjtcbmNvbnN0IHN1cGRvdCA9IFwiXFx1MkFCRVwiO1xuY29uc3Qgc3VwZHN1YiA9IFwiXFx1MkFEOFwiO1xuY29uc3Qgc3VwRSA9IFwiXFx1MkFDNlwiO1xuY29uc3Qgc3VwZSA9IFwiXFx1MjI4N1wiO1xuY29uc3Qgc3VwZWRvdCA9IFwiXFx1MkFDNFwiO1xuY29uc3QgU3VwZXJzZXQgPSBcIlxcdTIyODNcIjtcbmNvbnN0IFN1cGVyc2V0RXF1YWwgPSBcIlxcdTIyODdcIjtcbmNvbnN0IHN1cGhzb2wgPSBcIlxcdTI3QzlcIjtcbmNvbnN0IHN1cGhzdWIgPSBcIlxcdTJBRDdcIjtcbmNvbnN0IHN1cGxhcnIgPSBcIlxcdTI5N0JcIjtcbmNvbnN0IHN1cG11bHQgPSBcIlxcdTJBQzJcIjtcbmNvbnN0IHN1cG5FID0gXCJcXHUyQUNDXCI7XG5jb25zdCBzdXBuZSA9IFwiXFx1MjI4QlwiO1xuY29uc3Qgc3VwcGx1cyA9IFwiXFx1MkFDMFwiO1xuY29uc3Qgc3Vwc2V0ID0gXCJcXHUyMjgzXCI7XG5jb25zdCBTdXBzZXQgPSBcIlxcdTIyRDFcIjtcbmNvbnN0IHN1cHNldGVxID0gXCJcXHUyMjg3XCI7XG5jb25zdCBzdXBzZXRlcXEgPSBcIlxcdTJBQzZcIjtcbmNvbnN0IHN1cHNldG5lcSA9IFwiXFx1MjI4QlwiO1xuY29uc3Qgc3Vwc2V0bmVxcSA9IFwiXFx1MkFDQ1wiO1xuY29uc3Qgc3Vwc2ltID0gXCJcXHUyQUM4XCI7XG5jb25zdCBzdXBzdWIgPSBcIlxcdTJBRDRcIjtcbmNvbnN0IHN1cHN1cCA9IFwiXFx1MkFENlwiO1xuY29uc3Qgc3dhcmhrID0gXCJcXHUyOTI2XCI7XG5jb25zdCBzd2FyciA9IFwiXFx1MjE5OVwiO1xuY29uc3Qgc3dBcnIgPSBcIlxcdTIxRDlcIjtcbmNvbnN0IHN3YXJyb3cgPSBcIlxcdTIxOTlcIjtcbmNvbnN0IHN3bndhciA9IFwiXFx1MjkyQVwiO1xuY29uc3Qgc3psaWcgPSBcIlxceERGXCI7XG5jb25zdCBUYWIgPSBcIlx0XCI7XG5jb25zdCB0YXJnZXQgPSBcIlxcdTIzMTZcIjtcbmNvbnN0IFRhdSA9IFwiXFx1MDNBNFwiO1xuY29uc3QgdGF1ID0gXCJcXHUwM0M0XCI7XG5jb25zdCB0YnJrID0gXCJcXHUyM0I0XCI7XG5jb25zdCBUY2Fyb24gPSBcIlxcdTAxNjRcIjtcbmNvbnN0IHRjYXJvbiA9IFwiXFx1MDE2NVwiO1xuY29uc3QgVGNlZGlsID0gXCJcXHUwMTYyXCI7XG5jb25zdCB0Y2VkaWwgPSBcIlxcdTAxNjNcIjtcbmNvbnN0IFRjeSA9IFwiXFx1MDQyMlwiO1xuY29uc3QgdGN5ID0gXCJcXHUwNDQyXCI7XG5jb25zdCB0ZG90ID0gXCJcXHUyMERCXCI7XG5jb25zdCB0ZWxyZWMgPSBcIlxcdTIzMTVcIjtcbmNvbnN0IFRmciA9IFwiXFx1ezFENTE3fVwiO1xuY29uc3QgdGZyID0gXCJcXHV7MUQ1MzF9XCI7XG5jb25zdCB0aGVyZTQgPSBcIlxcdTIyMzRcIjtcbmNvbnN0IHRoZXJlZm9yZSA9IFwiXFx1MjIzNFwiO1xuY29uc3QgVGhlcmVmb3JlID0gXCJcXHUyMjM0XCI7XG5jb25zdCBUaGV0YSA9IFwiXFx1MDM5OFwiO1xuY29uc3QgdGhldGEgPSBcIlxcdTAzQjhcIjtcbmNvbnN0IHRoZXRhc3ltID0gXCJcXHUwM0QxXCI7XG5jb25zdCB0aGV0YXYgPSBcIlxcdTAzRDFcIjtcbmNvbnN0IHRoaWNrYXBwcm94ID0gXCJcXHUyMjQ4XCI7XG5jb25zdCB0aGlja3NpbSA9IFwiXFx1MjIzQ1wiO1xuY29uc3QgVGhpY2tTcGFjZSA9IFwiXFx1MjA1RlxcdTIwMEFcIjtcbmNvbnN0IFRoaW5TcGFjZSA9IFwiXFx1MjAwOVwiO1xuY29uc3QgdGhpbnNwID0gXCJcXHUyMDA5XCI7XG5jb25zdCB0aGthcCA9IFwiXFx1MjI0OFwiO1xuY29uc3QgdGhrc2ltID0gXCJcXHUyMjNDXCI7XG5jb25zdCBUSE9STiA9IFwiXFx4REVcIjtcbmNvbnN0IHRob3JuID0gXCJcXHhGRVwiO1xuY29uc3QgdGlsZGUgPSBcIlxcdTAyRENcIjtcbmNvbnN0IFRpbGRlID0gXCJcXHUyMjNDXCI7XG5jb25zdCBUaWxkZUVxdWFsID0gXCJcXHUyMjQzXCI7XG5jb25zdCBUaWxkZUZ1bGxFcXVhbCA9IFwiXFx1MjI0NVwiO1xuY29uc3QgVGlsZGVUaWxkZSA9IFwiXFx1MjI0OFwiO1xuY29uc3QgdGltZXNiYXIgPSBcIlxcdTJBMzFcIjtcbmNvbnN0IHRpbWVzYiA9IFwiXFx1MjJBMFwiO1xuY29uc3QgdGltZXMgPSBcIlxceEQ3XCI7XG5jb25zdCB0aW1lc2QgPSBcIlxcdTJBMzBcIjtcbmNvbnN0IHRpbnQgPSBcIlxcdTIyMkRcIjtcbmNvbnN0IHRvZWEgPSBcIlxcdTI5MjhcIjtcbmNvbnN0IHRvcGJvdCA9IFwiXFx1MjMzNlwiO1xuY29uc3QgdG9wY2lyID0gXCJcXHUyQUYxXCI7XG5jb25zdCB0b3AgPSBcIlxcdTIyQTRcIjtcbmNvbnN0IFRvcGYgPSBcIlxcdXsxRDU0Qn1cIjtcbmNvbnN0IHRvcGYgPSBcIlxcdXsxRDU2NX1cIjtcbmNvbnN0IHRvcGZvcmsgPSBcIlxcdTJBREFcIjtcbmNvbnN0IHRvc2EgPSBcIlxcdTI5MjlcIjtcbmNvbnN0IHRwcmltZSA9IFwiXFx1MjAzNFwiO1xuY29uc3QgdHJhZGUgPSBcIlxcdTIxMjJcIjtcbmNvbnN0IFRSQURFID0gXCJcXHUyMTIyXCI7XG5jb25zdCB0cmlhbmdsZSA9IFwiXFx1MjVCNVwiO1xuY29uc3QgdHJpYW5nbGVkb3duID0gXCJcXHUyNUJGXCI7XG5jb25zdCB0cmlhbmdsZWxlZnQgPSBcIlxcdTI1QzNcIjtcbmNvbnN0IHRyaWFuZ2xlbGVmdGVxID0gXCJcXHUyMkI0XCI7XG5jb25zdCB0cmlhbmdsZXEgPSBcIlxcdTIyNUNcIjtcbmNvbnN0IHRyaWFuZ2xlcmlnaHQgPSBcIlxcdTI1QjlcIjtcbmNvbnN0IHRyaWFuZ2xlcmlnaHRlcSA9IFwiXFx1MjJCNVwiO1xuY29uc3QgdHJpZG90ID0gXCJcXHUyNUVDXCI7XG5jb25zdCB0cmllID0gXCJcXHUyMjVDXCI7XG5jb25zdCB0cmltaW51cyA9IFwiXFx1MkEzQVwiO1xuY29uc3QgVHJpcGxlRG90ID0gXCJcXHUyMERCXCI7XG5jb25zdCB0cmlwbHVzID0gXCJcXHUyQTM5XCI7XG5jb25zdCB0cmlzYiA9IFwiXFx1MjlDRFwiO1xuY29uc3QgdHJpdGltZSA9IFwiXFx1MkEzQlwiO1xuY29uc3QgdHJwZXppdW0gPSBcIlxcdTIzRTJcIjtcbmNvbnN0IFRzY3IgPSBcIlxcdXsxRDRBRn1cIjtcbmNvbnN0IHRzY3IgPSBcIlxcdXsxRDRDOX1cIjtcbmNvbnN0IFRTY3kgPSBcIlxcdTA0MjZcIjtcbmNvbnN0IHRzY3kgPSBcIlxcdTA0NDZcIjtcbmNvbnN0IFRTSGN5ID0gXCJcXHUwNDBCXCI7XG5jb25zdCB0c2hjeSA9IFwiXFx1MDQ1QlwiO1xuY29uc3QgVHN0cm9rID0gXCJcXHUwMTY2XCI7XG5jb25zdCB0c3Ryb2sgPSBcIlxcdTAxNjdcIjtcbmNvbnN0IHR3aXh0ID0gXCJcXHUyMjZDXCI7XG5jb25zdCB0d29oZWFkbGVmdGFycm93ID0gXCJcXHUyMTlFXCI7XG5jb25zdCB0d29oZWFkcmlnaHRhcnJvdyA9IFwiXFx1MjFBMFwiO1xuY29uc3QgVWFjdXRlID0gXCJcXHhEQVwiO1xuY29uc3QgdWFjdXRlID0gXCJcXHhGQVwiO1xuY29uc3QgdWFyciA9IFwiXFx1MjE5MVwiO1xuY29uc3QgVWFyciA9IFwiXFx1MjE5RlwiO1xuY29uc3QgdUFyciA9IFwiXFx1MjFEMVwiO1xuY29uc3QgVWFycm9jaXIgPSBcIlxcdTI5NDlcIjtcbmNvbnN0IFVicmN5ID0gXCJcXHUwNDBFXCI7XG5jb25zdCB1YnJjeSA9IFwiXFx1MDQ1RVwiO1xuY29uc3QgVWJyZXZlID0gXCJcXHUwMTZDXCI7XG5jb25zdCB1YnJldmUgPSBcIlxcdTAxNkRcIjtcbmNvbnN0IFVjaXJjID0gXCJcXHhEQlwiO1xuY29uc3QgdWNpcmMgPSBcIlxceEZCXCI7XG5jb25zdCBVY3kgPSBcIlxcdTA0MjNcIjtcbmNvbnN0IHVjeSA9IFwiXFx1MDQ0M1wiO1xuY29uc3QgdWRhcnIgPSBcIlxcdTIxQzVcIjtcbmNvbnN0IFVkYmxhYyA9IFwiXFx1MDE3MFwiO1xuY29uc3QgdWRibGFjID0gXCJcXHUwMTcxXCI7XG5jb25zdCB1ZGhhciA9IFwiXFx1Mjk2RVwiO1xuY29uc3QgdWZpc2h0ID0gXCJcXHUyOTdFXCI7XG5jb25zdCBVZnIgPSBcIlxcdXsxRDUxOH1cIjtcbmNvbnN0IHVmciA9IFwiXFx1ezFENTMyfVwiO1xuY29uc3QgVWdyYXZlID0gXCJcXHhEOVwiO1xuY29uc3QgdWdyYXZlID0gXCJcXHhGOVwiO1xuY29uc3QgdUhhciA9IFwiXFx1Mjk2M1wiO1xuY29uc3QgdWhhcmwgPSBcIlxcdTIxQkZcIjtcbmNvbnN0IHVoYXJyID0gXCJcXHUyMUJFXCI7XG5jb25zdCB1aGJsayA9IFwiXFx1MjU4MFwiO1xuY29uc3QgdWxjb3JuID0gXCJcXHUyMzFDXCI7XG5jb25zdCB1bGNvcm5lciA9IFwiXFx1MjMxQ1wiO1xuY29uc3QgdWxjcm9wID0gXCJcXHUyMzBGXCI7XG5jb25zdCB1bHRyaSA9IFwiXFx1MjVGOFwiO1xuY29uc3QgVW1hY3IgPSBcIlxcdTAxNkFcIjtcbmNvbnN0IHVtYWNyID0gXCJcXHUwMTZCXCI7XG5jb25zdCB1bWwgPSBcIlxceEE4XCI7XG5jb25zdCBVbmRlckJhciA9IFwiX1wiO1xuY29uc3QgVW5kZXJCcmFjZSA9IFwiXFx1MjNERlwiO1xuY29uc3QgVW5kZXJCcmFja2V0ID0gXCJcXHUyM0I1XCI7XG5jb25zdCBVbmRlclBhcmVudGhlc2lzID0gXCJcXHUyM0REXCI7XG5jb25zdCBVbmlvbiA9IFwiXFx1MjJDM1wiO1xuY29uc3QgVW5pb25QbHVzID0gXCJcXHUyMjhFXCI7XG5jb25zdCBVb2dvbiA9IFwiXFx1MDE3MlwiO1xuY29uc3QgdW9nb24gPSBcIlxcdTAxNzNcIjtcbmNvbnN0IFVvcGYgPSBcIlxcdXsxRDU0Q31cIjtcbmNvbnN0IHVvcGYgPSBcIlxcdXsxRDU2Nn1cIjtcbmNvbnN0IFVwQXJyb3dCYXIgPSBcIlxcdTI5MTJcIjtcbmNvbnN0IHVwYXJyb3cgPSBcIlxcdTIxOTFcIjtcbmNvbnN0IFVwQXJyb3cgPSBcIlxcdTIxOTFcIjtcbmNvbnN0IFVwYXJyb3cgPSBcIlxcdTIxRDFcIjtcbmNvbnN0IFVwQXJyb3dEb3duQXJyb3cgPSBcIlxcdTIxQzVcIjtcbmNvbnN0IHVwZG93bmFycm93ID0gXCJcXHUyMTk1XCI7XG5jb25zdCBVcERvd25BcnJvdyA9IFwiXFx1MjE5NVwiO1xuY29uc3QgVXBkb3duYXJyb3cgPSBcIlxcdTIxRDVcIjtcbmNvbnN0IFVwRXF1aWxpYnJpdW0gPSBcIlxcdTI5NkVcIjtcbmNvbnN0IHVwaGFycG9vbmxlZnQgPSBcIlxcdTIxQkZcIjtcbmNvbnN0IHVwaGFycG9vbnJpZ2h0ID0gXCJcXHUyMUJFXCI7XG5jb25zdCB1cGx1cyA9IFwiXFx1MjI4RVwiO1xuY29uc3QgVXBwZXJMZWZ0QXJyb3cgPSBcIlxcdTIxOTZcIjtcbmNvbnN0IFVwcGVyUmlnaHRBcnJvdyA9IFwiXFx1MjE5N1wiO1xuY29uc3QgdXBzaSA9IFwiXFx1MDNDNVwiO1xuY29uc3QgVXBzaSA9IFwiXFx1MDNEMlwiO1xuY29uc3QgdXBzaWggPSBcIlxcdTAzRDJcIjtcbmNvbnN0IFVwc2lsb24gPSBcIlxcdTAzQTVcIjtcbmNvbnN0IHVwc2lsb24gPSBcIlxcdTAzQzVcIjtcbmNvbnN0IFVwVGVlQXJyb3cgPSBcIlxcdTIxQTVcIjtcbmNvbnN0IFVwVGVlID0gXCJcXHUyMkE1XCI7XG5jb25zdCB1cHVwYXJyb3dzID0gXCJcXHUyMUM4XCI7XG5jb25zdCB1cmNvcm4gPSBcIlxcdTIzMURcIjtcbmNvbnN0IHVyY29ybmVyID0gXCJcXHUyMzFEXCI7XG5jb25zdCB1cmNyb3AgPSBcIlxcdTIzMEVcIjtcbmNvbnN0IFVyaW5nID0gXCJcXHUwMTZFXCI7XG5jb25zdCB1cmluZyA9IFwiXFx1MDE2RlwiO1xuY29uc3QgdXJ0cmkgPSBcIlxcdTI1RjlcIjtcbmNvbnN0IFVzY3IgPSBcIlxcdXsxRDRCMH1cIjtcbmNvbnN0IHVzY3IgPSBcIlxcdXsxRDRDQX1cIjtcbmNvbnN0IHV0ZG90ID0gXCJcXHUyMkYwXCI7XG5jb25zdCBVdGlsZGUgPSBcIlxcdTAxNjhcIjtcbmNvbnN0IHV0aWxkZSA9IFwiXFx1MDE2OVwiO1xuY29uc3QgdXRyaSA9IFwiXFx1MjVCNVwiO1xuY29uc3QgdXRyaWYgPSBcIlxcdTI1QjRcIjtcbmNvbnN0IHV1YXJyID0gXCJcXHUyMUM4XCI7XG5jb25zdCBVdW1sID0gXCJcXHhEQ1wiO1xuY29uc3QgdXVtbCA9IFwiXFx4RkNcIjtcbmNvbnN0IHV3YW5nbGUgPSBcIlxcdTI5QTdcIjtcbmNvbnN0IHZhbmdydCA9IFwiXFx1Mjk5Q1wiO1xuY29uc3QgdmFyZXBzaWxvbiA9IFwiXFx1MDNGNVwiO1xuY29uc3QgdmFya2FwcGEgPSBcIlxcdTAzRjBcIjtcbmNvbnN0IHZhcm5vdGhpbmcgPSBcIlxcdTIyMDVcIjtcbmNvbnN0IHZhcnBoaSA9IFwiXFx1MDNENVwiO1xuY29uc3QgdmFycGkgPSBcIlxcdTAzRDZcIjtcbmNvbnN0IHZhcnByb3B0byA9IFwiXFx1MjIxRFwiO1xuY29uc3QgdmFyciA9IFwiXFx1MjE5NVwiO1xuY29uc3QgdkFyciA9IFwiXFx1MjFENVwiO1xuY29uc3QgdmFycmhvID0gXCJcXHUwM0YxXCI7XG5jb25zdCB2YXJzaWdtYSA9IFwiXFx1MDNDMlwiO1xuY29uc3QgdmFyc3Vic2V0bmVxID0gXCJcXHUyMjhBXFx1RkUwMFwiO1xuY29uc3QgdmFyc3Vic2V0bmVxcSA9IFwiXFx1MkFDQlxcdUZFMDBcIjtcbmNvbnN0IHZhcnN1cHNldG5lcSA9IFwiXFx1MjI4QlxcdUZFMDBcIjtcbmNvbnN0IHZhcnN1cHNldG5lcXEgPSBcIlxcdTJBQ0NcXHVGRTAwXCI7XG5jb25zdCB2YXJ0aGV0YSA9IFwiXFx1MDNEMVwiO1xuY29uc3QgdmFydHJpYW5nbGVsZWZ0ID0gXCJcXHUyMkIyXCI7XG5jb25zdCB2YXJ0cmlhbmdsZXJpZ2h0ID0gXCJcXHUyMkIzXCI7XG5jb25zdCB2QmFyID0gXCJcXHUyQUU4XCI7XG5jb25zdCBWYmFyID0gXCJcXHUyQUVCXCI7XG5jb25zdCB2QmFydiA9IFwiXFx1MkFFOVwiO1xuY29uc3QgVmN5ID0gXCJcXHUwNDEyXCI7XG5jb25zdCB2Y3kgPSBcIlxcdTA0MzJcIjtcbmNvbnN0IHZkYXNoID0gXCJcXHUyMkEyXCI7XG5jb25zdCB2RGFzaCA9IFwiXFx1MjJBOFwiO1xuY29uc3QgVmRhc2ggPSBcIlxcdTIyQTlcIjtcbmNvbnN0IFZEYXNoID0gXCJcXHUyMkFCXCI7XG5jb25zdCBWZGFzaGwgPSBcIlxcdTJBRTZcIjtcbmNvbnN0IHZlZWJhciA9IFwiXFx1MjJCQlwiO1xuY29uc3QgdmVlID0gXCJcXHUyMjI4XCI7XG5jb25zdCBWZWUgPSBcIlxcdTIyQzFcIjtcbmNvbnN0IHZlZWVxID0gXCJcXHUyMjVBXCI7XG5jb25zdCB2ZWxsaXAgPSBcIlxcdTIyRUVcIjtcbmNvbnN0IHZlcmJhciA9IFwifFwiO1xuY29uc3QgVmVyYmFyID0gXCJcXHUyMDE2XCI7XG5jb25zdCB2ZXJ0ID0gXCJ8XCI7XG5jb25zdCBWZXJ0ID0gXCJcXHUyMDE2XCI7XG5jb25zdCBWZXJ0aWNhbEJhciA9IFwiXFx1MjIyM1wiO1xuY29uc3QgVmVydGljYWxMaW5lID0gXCJ8XCI7XG5jb25zdCBWZXJ0aWNhbFNlcGFyYXRvciA9IFwiXFx1Mjc1OFwiO1xuY29uc3QgVmVydGljYWxUaWxkZSA9IFwiXFx1MjI0MFwiO1xuY29uc3QgVmVyeVRoaW5TcGFjZSA9IFwiXFx1MjAwQVwiO1xuY29uc3QgVmZyID0gXCJcXHV7MUQ1MTl9XCI7XG5jb25zdCB2ZnIgPSBcIlxcdXsxRDUzM31cIjtcbmNvbnN0IHZsdHJpID0gXCJcXHUyMkIyXCI7XG5jb25zdCB2bnN1YiA9IFwiXFx1MjI4MlxcdTIwRDJcIjtcbmNvbnN0IHZuc3VwID0gXCJcXHUyMjgzXFx1MjBEMlwiO1xuY29uc3QgVm9wZiA9IFwiXFx1ezFENTREfVwiO1xuY29uc3Qgdm9wZiA9IFwiXFx1ezFENTY3fVwiO1xuY29uc3QgdnByb3AgPSBcIlxcdTIyMURcIjtcbmNvbnN0IHZydHJpID0gXCJcXHUyMkIzXCI7XG5jb25zdCBWc2NyID0gXCJcXHV7MUQ0QjF9XCI7XG5jb25zdCB2c2NyID0gXCJcXHV7MUQ0Q0J9XCI7XG5jb25zdCB2c3VibkUgPSBcIlxcdTJBQ0JcXHVGRTAwXCI7XG5jb25zdCB2c3VibmUgPSBcIlxcdTIyOEFcXHVGRTAwXCI7XG5jb25zdCB2c3VwbkUgPSBcIlxcdTJBQ0NcXHVGRTAwXCI7XG5jb25zdCB2c3VwbmUgPSBcIlxcdTIyOEJcXHVGRTAwXCI7XG5jb25zdCBWdmRhc2ggPSBcIlxcdTIyQUFcIjtcbmNvbnN0IHZ6aWd6YWcgPSBcIlxcdTI5OUFcIjtcbmNvbnN0IFdjaXJjID0gXCJcXHUwMTc0XCI7XG5jb25zdCB3Y2lyYyA9IFwiXFx1MDE3NVwiO1xuY29uc3Qgd2VkYmFyID0gXCJcXHUyQTVGXCI7XG5jb25zdCB3ZWRnZSA9IFwiXFx1MjIyN1wiO1xuY29uc3QgV2VkZ2UgPSBcIlxcdTIyQzBcIjtcbmNvbnN0IHdlZGdlcSA9IFwiXFx1MjI1OVwiO1xuY29uc3Qgd2VpZXJwID0gXCJcXHUyMTE4XCI7XG5jb25zdCBXZnIgPSBcIlxcdXsxRDUxQX1cIjtcbmNvbnN0IHdmciA9IFwiXFx1ezFENTM0fVwiO1xuY29uc3QgV29wZiA9IFwiXFx1ezFENTRFfVwiO1xuY29uc3Qgd29wZiA9IFwiXFx1ezFENTY4fVwiO1xuY29uc3Qgd3AgPSBcIlxcdTIxMThcIjtcbmNvbnN0IHdyID0gXCJcXHUyMjQwXCI7XG5jb25zdCB3cmVhdGggPSBcIlxcdTIyNDBcIjtcbmNvbnN0IFdzY3IgPSBcIlxcdXsxRDRCMn1cIjtcbmNvbnN0IHdzY3IgPSBcIlxcdXsxRDRDQ31cIjtcbmNvbnN0IHhjYXAgPSBcIlxcdTIyQzJcIjtcbmNvbnN0IHhjaXJjID0gXCJcXHUyNUVGXCI7XG5jb25zdCB4Y3VwID0gXCJcXHUyMkMzXCI7XG5jb25zdCB4ZHRyaSA9IFwiXFx1MjVCRFwiO1xuY29uc3QgWGZyID0gXCJcXHV7MUQ1MUJ9XCI7XG5jb25zdCB4ZnIgPSBcIlxcdXsxRDUzNX1cIjtcbmNvbnN0IHhoYXJyID0gXCJcXHUyN0Y3XCI7XG5jb25zdCB4aEFyciA9IFwiXFx1MjdGQVwiO1xuY29uc3QgWGkgPSBcIlxcdTAzOUVcIjtcbmNvbnN0IHhpID0gXCJcXHUwM0JFXCI7XG5jb25zdCB4bGFyciA9IFwiXFx1MjdGNVwiO1xuY29uc3QgeGxBcnIgPSBcIlxcdTI3RjhcIjtcbmNvbnN0IHhtYXAgPSBcIlxcdTI3RkNcIjtcbmNvbnN0IHhuaXMgPSBcIlxcdTIyRkJcIjtcbmNvbnN0IHhvZG90ID0gXCJcXHUyQTAwXCI7XG5jb25zdCBYb3BmID0gXCJcXHV7MUQ1NEZ9XCI7XG5jb25zdCB4b3BmID0gXCJcXHV7MUQ1Njl9XCI7XG5jb25zdCB4b3BsdXMgPSBcIlxcdTJBMDFcIjtcbmNvbnN0IHhvdGltZSA9IFwiXFx1MkEwMlwiO1xuY29uc3QgeHJhcnIgPSBcIlxcdTI3RjZcIjtcbmNvbnN0IHhyQXJyID0gXCJcXHUyN0Y5XCI7XG5jb25zdCBYc2NyID0gXCJcXHV7MUQ0QjN9XCI7XG5jb25zdCB4c2NyID0gXCJcXHV7MUQ0Q0R9XCI7XG5jb25zdCB4c3FjdXAgPSBcIlxcdTJBMDZcIjtcbmNvbnN0IHh1cGx1cyA9IFwiXFx1MkEwNFwiO1xuY29uc3QgeHV0cmkgPSBcIlxcdTI1QjNcIjtcbmNvbnN0IHh2ZWUgPSBcIlxcdTIyQzFcIjtcbmNvbnN0IHh3ZWRnZSA9IFwiXFx1MjJDMFwiO1xuY29uc3QgWWFjdXRlID0gXCJcXHhERFwiO1xuY29uc3QgeWFjdXRlID0gXCJcXHhGRFwiO1xuY29uc3QgWUFjeSA9IFwiXFx1MDQyRlwiO1xuY29uc3QgeWFjeSA9IFwiXFx1MDQ0RlwiO1xuY29uc3QgWWNpcmMgPSBcIlxcdTAxNzZcIjtcbmNvbnN0IHljaXJjID0gXCJcXHUwMTc3XCI7XG5jb25zdCBZY3kgPSBcIlxcdTA0MkJcIjtcbmNvbnN0IHljeSA9IFwiXFx1MDQ0QlwiO1xuY29uc3QgeWVuID0gXCJcXHhBNVwiO1xuY29uc3QgWWZyID0gXCJcXHV7MUQ1MUN9XCI7XG5jb25zdCB5ZnIgPSBcIlxcdXsxRDUzNn1cIjtcbmNvbnN0IFlJY3kgPSBcIlxcdTA0MDdcIjtcbmNvbnN0IHlpY3kgPSBcIlxcdTA0NTdcIjtcbmNvbnN0IFlvcGYgPSBcIlxcdXsxRDU1MH1cIjtcbmNvbnN0IHlvcGYgPSBcIlxcdXsxRDU2QX1cIjtcbmNvbnN0IFlzY3IgPSBcIlxcdXsxRDRCNH1cIjtcbmNvbnN0IHlzY3IgPSBcIlxcdXsxRDRDRX1cIjtcbmNvbnN0IFlVY3kgPSBcIlxcdTA0MkVcIjtcbmNvbnN0IHl1Y3kgPSBcIlxcdTA0NEVcIjtcbmNvbnN0IHl1bWwgPSBcIlxceEZGXCI7XG5jb25zdCBZdW1sID0gXCJcXHUwMTc4XCI7XG5jb25zdCBaYWN1dGUgPSBcIlxcdTAxNzlcIjtcbmNvbnN0IHphY3V0ZSA9IFwiXFx1MDE3QVwiO1xuY29uc3QgWmNhcm9uID0gXCJcXHUwMTdEXCI7XG5jb25zdCB6Y2Fyb24gPSBcIlxcdTAxN0VcIjtcbmNvbnN0IFpjeSA9IFwiXFx1MDQxN1wiO1xuY29uc3QgemN5ID0gXCJcXHUwNDM3XCI7XG5jb25zdCBaZG90ID0gXCJcXHUwMTdCXCI7XG5jb25zdCB6ZG90ID0gXCJcXHUwMTdDXCI7XG5jb25zdCB6ZWV0cmYgPSBcIlxcdTIxMjhcIjtcbmNvbnN0IFplcm9XaWR0aFNwYWNlID0gXCJcXHUyMDBCXCI7XG5jb25zdCBaZXRhID0gXCJcXHUwMzk2XCI7XG5jb25zdCB6ZXRhID0gXCJcXHUwM0I2XCI7XG5jb25zdCB6ZnIgPSBcIlxcdXsxRDUzN31cIjtcbmNvbnN0IFpmciA9IFwiXFx1MjEyOFwiO1xuY29uc3QgWkhjeSA9IFwiXFx1MDQxNlwiO1xuY29uc3QgemhjeSA9IFwiXFx1MDQzNlwiO1xuY29uc3QgemlncmFyciA9IFwiXFx1MjFERFwiO1xuY29uc3Qgem9wZiA9IFwiXFx1ezFENTZCfVwiO1xuY29uc3QgWm9wZiA9IFwiXFx1MjEyNFwiO1xuY29uc3QgWnNjciA9IFwiXFx1ezFENEI1fVwiO1xuY29uc3QgenNjciA9IFwiXFx1ezFENENGfVwiO1xuY29uc3QgendqID0gXCJcXHUyMDBEXCI7XG5jb25zdCB6d25qID0gXCJcXHUyMDBDXCI7XG52YXIgcmVxdWlyZSQkMCA9IHtcbiAgQWFjdXRlLFxuICBhYWN1dGUsXG4gIEFicmV2ZSxcbiAgYWJyZXZlLFxuICBhYyxcbiAgYWNkLFxuICBhY0UsXG4gIEFjaXJjLFxuICBhY2lyYyxcbiAgYWN1dGUsXG4gIEFjeSxcbiAgYWN5LFxuICBBRWxpZyxcbiAgYWVsaWcsXG4gIGFmLFxuICBBZnIsXG4gIGFmcixcbiAgQWdyYXZlLFxuICBhZ3JhdmUsXG4gIGFsZWZzeW0sXG4gIGFsZXBoLFxuICBBbHBoYSxcbiAgYWxwaGEsXG4gIEFtYWNyLFxuICBhbWFjcixcbiAgYW1hbGcsXG4gIGFtcCxcbiAgQU1QLFxuICBhbmRhbmQsXG4gIEFuZCxcbiAgYW5kLFxuICBhbmRkLFxuICBhbmRzbG9wZSxcbiAgYW5kdixcbiAgYW5nLFxuICBhbmdlLFxuICBhbmdsZSxcbiAgYW5nbXNkYWEsXG4gIGFuZ21zZGFiLFxuICBhbmdtc2RhYyxcbiAgYW5nbXNkYWQsXG4gIGFuZ21zZGFlLFxuICBhbmdtc2RhZixcbiAgYW5nbXNkYWcsXG4gIGFuZ21zZGFoLFxuICBhbmdtc2QsXG4gIGFuZ3J0LFxuICBhbmdydHZiLFxuICBhbmdydHZiZCxcbiAgYW5nc3BoLFxuICBhbmdzdCxcbiAgYW5nemFycixcbiAgQW9nb24sXG4gIGFvZ29uLFxuICBBb3BmLFxuICBhb3BmLFxuICBhcGFjaXIsXG4gIGFwLFxuICBhcEUsXG4gIGFwZSxcbiAgYXBpZCxcbiAgYXBvcyxcbiAgQXBwbHlGdW5jdGlvbixcbiAgYXBwcm94LFxuICBhcHByb3hlcSxcbiAgQXJpbmcsXG4gIGFyaW5nLFxuICBBc2NyLFxuICBhc2NyLFxuICBBc3NpZ24sXG4gIGFzdCxcbiAgYXN5bXAsXG4gIGFzeW1wZXEsXG4gIEF0aWxkZSxcbiAgYXRpbGRlLFxuICBBdW1sLFxuICBhdW1sLFxuICBhd2NvbmludCxcbiAgYXdpbnQsXG4gIGJhY2tjb25nLFxuICBiYWNrZXBzaWxvbixcbiAgYmFja3ByaW1lLFxuICBiYWNrc2ltLFxuICBiYWNrc2ltZXEsXG4gIEJhY2tzbGFzaCxcbiAgQmFydixcbiAgYmFydmVlLFxuICBiYXJ3ZWQsXG4gIEJhcndlZCxcbiAgYmFyd2VkZ2UsXG4gIGJicmssXG4gIGJicmt0YnJrLFxuICBiY29uZyxcbiAgQmN5LFxuICBiY3ksXG4gIGJkcXVvLFxuICBiZWNhdXMsXG4gIGJlY2F1c2UsXG4gIEJlY2F1c2UsXG4gIGJlbXB0eXYsXG4gIGJlcHNpLFxuICBiZXJub3UsXG4gIEJlcm5vdWxsaXMsXG4gIEJldGEsXG4gIGJldGEsXG4gIGJldGgsXG4gIGJldHdlZW4sXG4gIEJmcixcbiAgYmZyLFxuICBiaWdjYXAsXG4gIGJpZ2NpcmMsXG4gIGJpZ2N1cCxcbiAgYmlnb2RvdCxcbiAgYmlnb3BsdXMsXG4gIGJpZ290aW1lcyxcbiAgYmlnc3FjdXAsXG4gIGJpZ3N0YXIsXG4gIGJpZ3RyaWFuZ2xlZG93bixcbiAgYmlndHJpYW5nbGV1cCxcbiAgYmlndXBsdXMsXG4gIGJpZ3ZlZSxcbiAgYmlnd2VkZ2UsXG4gIGJrYXJvdyxcbiAgYmxhY2tsb3plbmdlLFxuICBibGFja3NxdWFyZSxcbiAgYmxhY2t0cmlhbmdsZSxcbiAgYmxhY2t0cmlhbmdsZWRvd24sXG4gIGJsYWNrdHJpYW5nbGVsZWZ0LFxuICBibGFja3RyaWFuZ2xlcmlnaHQsXG4gIGJsYW5rLFxuICBibGsxMixcbiAgYmxrMTQsXG4gIGJsazM0LFxuICBibG9jazogYmxvY2skMSxcbiAgYm5lLFxuICBibmVxdWl2LFxuICBiTm90LFxuICBibm90LFxuICBCb3BmLFxuICBib3BmLFxuICBib3QsXG4gIGJvdHRvbSxcbiAgYm93dGllLFxuICBib3hib3gsXG4gIGJveGRsLFxuICBib3hkTCxcbiAgYm94RGwsXG4gIGJveERMLFxuICBib3hkcixcbiAgYm94ZFIsXG4gIGJveERyLFxuICBib3hEUixcbiAgYm94aCxcbiAgYm94SCxcbiAgYm94aGQsXG4gIGJveEhkLFxuICBib3hoRCxcbiAgYm94SEQsXG4gIGJveGh1LFxuICBib3hIdSxcbiAgYm94aFUsXG4gIGJveEhVLFxuICBib3htaW51cyxcbiAgYm94cGx1cyxcbiAgYm94dGltZXMsXG4gIGJveHVsLFxuICBib3h1TCxcbiAgYm94VWwsXG4gIGJveFVMLFxuICBib3h1cixcbiAgYm94dVIsXG4gIGJveFVyLFxuICBib3hVUixcbiAgYm94dixcbiAgYm94VixcbiAgYm94dmgsXG4gIGJveHZILFxuICBib3hWaCxcbiAgYm94VkgsXG4gIGJveHZsLFxuICBib3h2TCxcbiAgYm94VmwsXG4gIGJveFZMLFxuICBib3h2cixcbiAgYm94dlIsXG4gIGJveFZyLFxuICBib3hWUixcbiAgYnByaW1lLFxuICBicmV2ZSxcbiAgQnJldmUsXG4gIGJydmJhcixcbiAgYnNjcixcbiAgQnNjcixcbiAgYnNlbWksXG4gIGJzaW0sXG4gIGJzaW1lLFxuICBic29sYixcbiAgYnNvbCxcbiAgYnNvbGhzdWIsXG4gIGJ1bGwsXG4gIGJ1bGxldCxcbiAgYnVtcCxcbiAgYnVtcEUsXG4gIGJ1bXBlLFxuICBCdW1wZXEsXG4gIGJ1bXBlcSxcbiAgQ2FjdXRlLFxuICBjYWN1dGUsXG4gIGNhcGFuZCxcbiAgY2FwYnJjdXAsXG4gIGNhcGNhcCxcbiAgY2FwLFxuICBDYXAsXG4gIGNhcGN1cCxcbiAgY2FwZG90LFxuICBDYXBpdGFsRGlmZmVyZW50aWFsRCxcbiAgY2FwcyxcbiAgY2FyZXQsXG4gIGNhcm9uLFxuICBDYXlsZXlzLFxuICBjY2FwcyxcbiAgQ2Nhcm9uLFxuICBjY2Fyb24sXG4gIENjZWRpbCxcbiAgY2NlZGlsLFxuICBDY2lyYyxcbiAgY2NpcmMsXG4gIENjb25pbnQsXG4gIGNjdXBzLFxuICBjY3Vwc3NtLFxuICBDZG90LFxuICBjZG90LFxuICBjZWRpbCxcbiAgQ2VkaWxsYSxcbiAgY2VtcHR5dixcbiAgY2VudCxcbiAgY2VudGVyZG90LFxuICBDZW50ZXJEb3QsXG4gIGNmcixcbiAgQ2ZyLFxuICBDSGN5LFxuICBjaGN5LFxuICBjaGVjayxcbiAgY2hlY2ttYXJrLFxuICBDaGksXG4gIGNoaSxcbiAgY2lyYyxcbiAgY2lyY2VxLFxuICBjaXJjbGVhcnJvd2xlZnQsXG4gIGNpcmNsZWFycm93cmlnaHQsXG4gIGNpcmNsZWRhc3QsXG4gIGNpcmNsZWRjaXJjLFxuICBjaXJjbGVkZGFzaCxcbiAgQ2lyY2xlRG90LFxuICBjaXJjbGVkUixcbiAgY2lyY2xlZFMsXG4gIENpcmNsZU1pbnVzLFxuICBDaXJjbGVQbHVzLFxuICBDaXJjbGVUaW1lcyxcbiAgY2lyLFxuICBjaXJFLFxuICBjaXJlLFxuICBjaXJmbmludCxcbiAgY2lybWlkLFxuICBjaXJzY2lyLFxuICBDbG9ja3dpc2VDb250b3VySW50ZWdyYWwsXG4gIENsb3NlQ3VybHlEb3VibGVRdW90ZSxcbiAgQ2xvc2VDdXJseVF1b3RlLFxuICBjbHVicyxcbiAgY2x1YnN1aXQsXG4gIGNvbG9uLFxuICBDb2xvbixcbiAgQ29sb25lLFxuICBjb2xvbmUsXG4gIGNvbG9uZXEsXG4gIGNvbW1hLFxuICBjb21tYXQsXG4gIGNvbXAsXG4gIGNvbXBmbixcbiAgY29tcGxlbWVudCxcbiAgY29tcGxleGVzLFxuICBjb25nLFxuICBjb25nZG90LFxuICBDb25ncnVlbnQsXG4gIGNvbmludCxcbiAgQ29uaW50LFxuICBDb250b3VySW50ZWdyYWwsXG4gIGNvcGYsXG4gIENvcGYsXG4gIGNvcHJvZCxcbiAgQ29wcm9kdWN0LFxuICBjb3B5OiBjb3B5JDEsXG4gIENPUFksXG4gIGNvcHlzcixcbiAgQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbCxcbiAgY3JhcnIsXG4gIGNyb3NzLFxuICBDcm9zcyxcbiAgQ3NjcixcbiAgY3NjcixcbiAgY3N1YixcbiAgY3N1YmUsXG4gIGNzdXAsXG4gIGNzdXBlLFxuICBjdGRvdCxcbiAgY3VkYXJybCxcbiAgY3VkYXJycixcbiAgY3VlcHIsXG4gIGN1ZXNjLFxuICBjdWxhcnIsXG4gIGN1bGFycnAsXG4gIGN1cGJyY2FwLFxuICBjdXBjYXAsXG4gIEN1cENhcCxcbiAgY3VwLFxuICBDdXAsXG4gIGN1cGN1cCxcbiAgY3VwZG90LFxuICBjdXBvcixcbiAgY3VwcyxcbiAgY3VyYXJyLFxuICBjdXJhcnJtLFxuICBjdXJseWVxcHJlYyxcbiAgY3VybHllcXN1Y2MsXG4gIGN1cmx5dmVlLFxuICBjdXJseXdlZGdlLFxuICBjdXJyZW4sXG4gIGN1cnZlYXJyb3dsZWZ0LFxuICBjdXJ2ZWFycm93cmlnaHQsXG4gIGN1dmVlLFxuICBjdXdlZCxcbiAgY3djb25pbnQsXG4gIGN3aW50LFxuICBjeWxjdHksXG4gIGRhZ2dlcixcbiAgRGFnZ2VyLFxuICBkYWxldGgsXG4gIGRhcnIsXG4gIERhcnIsXG4gIGRBcnIsXG4gIGRhc2gsXG4gIERhc2h2LFxuICBkYXNodixcbiAgZGJrYXJvdyxcbiAgZGJsYWMsXG4gIERjYXJvbixcbiAgZGNhcm9uLFxuICBEY3ksXG4gIGRjeSxcbiAgZGRhZ2dlcixcbiAgZGRhcnIsXG4gIERELFxuICBkZCxcbiAgRERvdHJhaGQsXG4gIGRkb3RzZXEsXG4gIGRlZyxcbiAgRGVsLFxuICBEZWx0YSxcbiAgZGVsdGEsXG4gIGRlbXB0eXYsXG4gIGRmaXNodCxcbiAgRGZyLFxuICBkZnIsXG4gIGRIYXIsXG4gIGRoYXJsLFxuICBkaGFycixcbiAgRGlhY3JpdGljYWxBY3V0ZSxcbiAgRGlhY3JpdGljYWxEb3QsXG4gIERpYWNyaXRpY2FsRG91YmxlQWN1dGUsXG4gIERpYWNyaXRpY2FsR3JhdmUsXG4gIERpYWNyaXRpY2FsVGlsZGUsXG4gIGRpYW0sXG4gIGRpYW1vbmQsXG4gIERpYW1vbmQsXG4gIGRpYW1vbmRzdWl0LFxuICBkaWFtcyxcbiAgZGllLFxuICBEaWZmZXJlbnRpYWxELFxuICBkaWdhbW1hLFxuICBkaXNpbixcbiAgZGl2LFxuICBkaXZpZGUsXG4gIGRpdmlkZW9udGltZXMsXG4gIGRpdm9ueCxcbiAgREpjeSxcbiAgZGpjeSxcbiAgZGxjb3JuLFxuICBkbGNyb3AsXG4gIGRvbGxhcixcbiAgRG9wZixcbiAgZG9wZixcbiAgRG90LFxuICBkb3QsXG4gIERvdERvdCxcbiAgZG90ZXEsXG4gIGRvdGVxZG90LFxuICBEb3RFcXVhbCxcbiAgZG90bWludXMsXG4gIGRvdHBsdXMsXG4gIGRvdHNxdWFyZSxcbiAgZG91YmxlYmFyd2VkZ2UsXG4gIERvdWJsZUNvbnRvdXJJbnRlZ3JhbCxcbiAgRG91YmxlRG90LFxuICBEb3VibGVEb3duQXJyb3csXG4gIERvdWJsZUxlZnRBcnJvdyxcbiAgRG91YmxlTGVmdFJpZ2h0QXJyb3csXG4gIERvdWJsZUxlZnRUZWUsXG4gIERvdWJsZUxvbmdMZWZ0QXJyb3csXG4gIERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdyxcbiAgRG91YmxlTG9uZ1JpZ2h0QXJyb3csXG4gIERvdWJsZVJpZ2h0QXJyb3csXG4gIERvdWJsZVJpZ2h0VGVlLFxuICBEb3VibGVVcEFycm93LFxuICBEb3VibGVVcERvd25BcnJvdyxcbiAgRG91YmxlVmVydGljYWxCYXIsXG4gIERvd25BcnJvd0JhcixcbiAgZG93bmFycm93LFxuICBEb3duQXJyb3csXG4gIERvd25hcnJvdyxcbiAgRG93bkFycm93VXBBcnJvdyxcbiAgRG93bkJyZXZlLFxuICBkb3duZG93bmFycm93cyxcbiAgZG93bmhhcnBvb25sZWZ0LFxuICBkb3duaGFycG9vbnJpZ2h0LFxuICBEb3duTGVmdFJpZ2h0VmVjdG9yLFxuICBEb3duTGVmdFRlZVZlY3RvcixcbiAgRG93bkxlZnRWZWN0b3JCYXIsXG4gIERvd25MZWZ0VmVjdG9yLFxuICBEb3duUmlnaHRUZWVWZWN0b3IsXG4gIERvd25SaWdodFZlY3RvckJhcixcbiAgRG93blJpZ2h0VmVjdG9yLFxuICBEb3duVGVlQXJyb3csXG4gIERvd25UZWUsXG4gIGRyYmthcm93LFxuICBkcmNvcm4sXG4gIGRyY3JvcCxcbiAgRHNjcixcbiAgZHNjcixcbiAgRFNjeSxcbiAgZHNjeSxcbiAgZHNvbCxcbiAgRHN0cm9rLFxuICBkc3Ryb2ssXG4gIGR0ZG90LFxuICBkdHJpLFxuICBkdHJpZixcbiAgZHVhcnIsXG4gIGR1aGFyLFxuICBkd2FuZ2xlLFxuICBEWmN5LFxuICBkemN5LFxuICBkemlncmFycixcbiAgRWFjdXRlLFxuICBlYWN1dGUsXG4gIGVhc3RlcixcbiAgRWNhcm9uLFxuICBlY2Fyb24sXG4gIEVjaXJjLFxuICBlY2lyYyxcbiAgZWNpcixcbiAgZWNvbG9uLFxuICBFY3ksXG4gIGVjeSxcbiAgZUREb3QsXG4gIEVkb3QsXG4gIGVkb3QsXG4gIGVEb3QsXG4gIGVlLFxuICBlZkRvdCxcbiAgRWZyLFxuICBlZnIsXG4gIGVnLFxuICBFZ3JhdmUsXG4gIGVncmF2ZSxcbiAgZWdzLFxuICBlZ3Nkb3QsXG4gIGVsLFxuICBFbGVtZW50LFxuICBlbGludGVycyxcbiAgZWxsLFxuICBlbHMsXG4gIGVsc2RvdCxcbiAgRW1hY3IsXG4gIGVtYWNyLFxuICBlbXB0eSxcbiAgZW1wdHlzZXQsXG4gIEVtcHR5U21hbGxTcXVhcmUsXG4gIGVtcHR5dixcbiAgRW1wdHlWZXJ5U21hbGxTcXVhcmUsXG4gIGVtc3AxMyxcbiAgZW1zcDE0LFxuICBlbXNwLFxuICBFTkcsXG4gIGVuZyxcbiAgZW5zcCxcbiAgRW9nb24sXG4gIGVvZ29uLFxuICBFb3BmLFxuICBlb3BmLFxuICBlcGFyLFxuICBlcGFyc2wsXG4gIGVwbHVzLFxuICBlcHNpLFxuICBFcHNpbG9uLFxuICBlcHNpbG9uLFxuICBlcHNpdixcbiAgZXFjaXJjLFxuICBlcWNvbG9uLFxuICBlcXNpbSxcbiAgZXFzbGFudGd0cixcbiAgZXFzbGFudGxlc3MsXG4gIEVxdWFsLFxuICBlcXVhbHMsXG4gIEVxdWFsVGlsZGUsXG4gIGVxdWVzdCxcbiAgRXF1aWxpYnJpdW0sXG4gIGVxdWl2LFxuICBlcXVpdkRELFxuICBlcXZwYXJzbCxcbiAgZXJhcnIsXG4gIGVyRG90LFxuICBlc2NyLFxuICBFc2NyLFxuICBlc2RvdCxcbiAgRXNpbSxcbiAgZXNpbSxcbiAgRXRhLFxuICBldGEsXG4gIEVUSCxcbiAgZXRoLFxuICBFdW1sLFxuICBldW1sLFxuICBldXJvLFxuICBleGNsLFxuICBleGlzdCxcbiAgRXhpc3RzLFxuICBleHBlY3RhdGlvbixcbiAgZXhwb25lbnRpYWxlLFxuICBFeHBvbmVudGlhbEUsXG4gIGZhbGxpbmdkb3RzZXEsXG4gIEZjeSxcbiAgZmN5LFxuICBmZW1hbGUsXG4gIGZmaWxpZyxcbiAgZmZsaWcsXG4gIGZmbGxpZyxcbiAgRmZyLFxuICBmZnIsXG4gIGZpbGlnLFxuICBGaWxsZWRTbWFsbFNxdWFyZSxcbiAgRmlsbGVkVmVyeVNtYWxsU3F1YXJlLFxuICBmamxpZyxcbiAgZmxhdCxcbiAgZmxsaWcsXG4gIGZsdG5zLFxuICBmbm9mLFxuICBGb3BmLFxuICBmb3BmLFxuICBmb3JhbGwsXG4gIEZvckFsbCxcbiAgZm9yayxcbiAgZm9ya3YsXG4gIEZvdXJpZXJ0cmYsXG4gIGZwYXJ0aW50LFxuICBmcmFjMTIsXG4gIGZyYWMxMyxcbiAgZnJhYzE0LFxuICBmcmFjMTUsXG4gIGZyYWMxNixcbiAgZnJhYzE4LFxuICBmcmFjMjMsXG4gIGZyYWMyNSxcbiAgZnJhYzM0LFxuICBmcmFjMzUsXG4gIGZyYWMzOCxcbiAgZnJhYzQ1LFxuICBmcmFjNTYsXG4gIGZyYWM1OCxcbiAgZnJhYzc4LFxuICBmcmFzbCxcbiAgZnJvd24sXG4gIGZzY3IsXG4gIEZzY3IsXG4gIGdhY3V0ZSxcbiAgR2FtbWEsXG4gIGdhbW1hLFxuICBHYW1tYWQsXG4gIGdhbW1hZCxcbiAgZ2FwLFxuICBHYnJldmUsXG4gIGdicmV2ZSxcbiAgR2NlZGlsLFxuICBHY2lyYyxcbiAgZ2NpcmMsXG4gIEdjeSxcbiAgZ2N5LFxuICBHZG90LFxuICBnZG90LFxuICBnZSxcbiAgZ0UsXG4gIGdFbCxcbiAgZ2VsLFxuICBnZXEsXG4gIGdlcXEsXG4gIGdlcXNsYW50LFxuICBnZXNjYyxcbiAgZ2VzLFxuICBnZXNkb3QsXG4gIGdlc2RvdG8sXG4gIGdlc2RvdG9sLFxuICBnZXNsLFxuICBnZXNsZXMsXG4gIEdmcixcbiAgZ2ZyLFxuICBnZyxcbiAgR2csXG4gIGdnZyxcbiAgZ2ltZWwsXG4gIEdKY3ksXG4gIGdqY3ksXG4gIGdsYSxcbiAgZ2wsXG4gIGdsRSxcbiAgZ2xqLFxuICBnbmFwLFxuICBnbmFwcHJveCxcbiAgZ25lLFxuICBnbkUsXG4gIGduZXEsXG4gIGduZXFxLFxuICBnbnNpbSxcbiAgR29wZixcbiAgZ29wZixcbiAgZ3JhdmUsXG4gIEdyZWF0ZXJFcXVhbCxcbiAgR3JlYXRlckVxdWFsTGVzcyxcbiAgR3JlYXRlckZ1bGxFcXVhbCxcbiAgR3JlYXRlckdyZWF0ZXIsXG4gIEdyZWF0ZXJMZXNzLFxuICBHcmVhdGVyU2xhbnRFcXVhbCxcbiAgR3JlYXRlclRpbGRlLFxuICBHc2NyLFxuICBnc2NyLFxuICBnc2ltLFxuICBnc2ltZSxcbiAgZ3NpbWwsXG4gIGd0Y2MsXG4gIGd0Y2lyLFxuICBndCxcbiAgR1QsXG4gIEd0LFxuICBndGRvdCxcbiAgZ3RsUGFyLFxuICBndHF1ZXN0LFxuICBndHJhcHByb3gsXG4gIGd0cmFycixcbiAgZ3RyZG90LFxuICBndHJlcWxlc3MsXG4gIGd0cmVxcWxlc3MsXG4gIGd0cmxlc3MsXG4gIGd0cnNpbSxcbiAgZ3ZlcnRuZXFxLFxuICBndm5FLFxuICBIYWNlayxcbiAgaGFpcnNwLFxuICBoYWxmLFxuICBoYW1pbHQsXG4gIEhBUkRjeSxcbiAgaGFyZGN5LFxuICBoYXJyY2lyLFxuICBoYXJyLFxuICBoQXJyLFxuICBoYXJydyxcbiAgSGF0LFxuICBoYmFyLFxuICBIY2lyYyxcbiAgaGNpcmMsXG4gIGhlYXJ0cyxcbiAgaGVhcnRzdWl0LFxuICBoZWxsaXAsXG4gIGhlcmNvbixcbiAgaGZyLFxuICBIZnIsXG4gIEhpbGJlcnRTcGFjZSxcbiAgaGtzZWFyb3csXG4gIGhrc3dhcm93LFxuICBob2FycixcbiAgaG9tdGh0LFxuICBob29rbGVmdGFycm93LFxuICBob29rcmlnaHRhcnJvdyxcbiAgaG9wZixcbiAgSG9wZixcbiAgaG9yYmFyLFxuICBIb3Jpem9udGFsTGluZSxcbiAgaHNjcixcbiAgSHNjcixcbiAgaHNsYXNoLFxuICBIc3Ryb2ssXG4gIGhzdHJvayxcbiAgSHVtcERvd25IdW1wLFxuICBIdW1wRXF1YWwsXG4gIGh5YnVsbCxcbiAgaHlwaGVuLFxuICBJYWN1dGUsXG4gIGlhY3V0ZSxcbiAgaWMsXG4gIEljaXJjLFxuICBpY2lyYyxcbiAgSWN5LFxuICBpY3ksXG4gIElkb3QsXG4gIElFY3ksXG4gIGllY3ksXG4gIGlleGNsLFxuICBpZmYsXG4gIGlmcixcbiAgSWZyLFxuICBJZ3JhdmUsXG4gIGlncmF2ZSxcbiAgaWksXG4gIGlpaWludCxcbiAgaWlpbnQsXG4gIGlpbmZpbixcbiAgaWlvdGEsXG4gIElKbGlnLFxuICBpamxpZyxcbiAgSW1hY3IsXG4gIGltYWNyLFxuICBpbWFnZTogaW1hZ2UkMSxcbiAgSW1hZ2luYXJ5SSxcbiAgaW1hZ2xpbmUsXG4gIGltYWdwYXJ0LFxuICBpbWF0aCxcbiAgSW0sXG4gIGltb2YsXG4gIGltcGVkLFxuICBJbXBsaWVzLFxuICBpbmNhcmUsXG4gIFwiaW5cIjogXCJcXHUyMjA4XCIsXG4gIGluZmluLFxuICBpbmZpbnRpZSxcbiAgaW5vZG90LFxuICBpbnRjYWwsXG4gIGludCxcbiAgSW50LFxuICBpbnRlZ2VycyxcbiAgSW50ZWdyYWwsXG4gIGludGVyY2FsLFxuICBJbnRlcnNlY3Rpb24sXG4gIGludGxhcmhrLFxuICBpbnRwcm9kLFxuICBJbnZpc2libGVDb21tYSxcbiAgSW52aXNpYmxlVGltZXMsXG4gIElPY3ksXG4gIGlvY3ksXG4gIElvZ29uLFxuICBpb2dvbixcbiAgSW9wZixcbiAgaW9wZixcbiAgSW90YSxcbiAgaW90YSxcbiAgaXByb2QsXG4gIGlxdWVzdCxcbiAgaXNjcixcbiAgSXNjcixcbiAgaXNpbixcbiAgaXNpbmRvdCxcbiAgaXNpbkUsXG4gIGlzaW5zLFxuICBpc2luc3YsXG4gIGlzaW52LFxuICBpdCxcbiAgSXRpbGRlLFxuICBpdGlsZGUsXG4gIEl1a2N5LFxuICBpdWtjeSxcbiAgSXVtbCxcbiAgaXVtbCxcbiAgSmNpcmMsXG4gIGpjaXJjLFxuICBKY3ksXG4gIGpjeSxcbiAgSmZyLFxuICBqZnIsXG4gIGptYXRoLFxuICBKb3BmLFxuICBqb3BmLFxuICBKc2NyLFxuICBqc2NyLFxuICBKc2VyY3ksXG4gIGpzZXJjeSxcbiAgSnVrY3ksXG4gIGp1a2N5LFxuICBLYXBwYSxcbiAga2FwcGEsXG4gIGthcHBhdixcbiAgS2NlZGlsLFxuICBrY2VkaWwsXG4gIEtjeSxcbiAga2N5LFxuICBLZnIsXG4gIGtmcixcbiAga2dyZWVuLFxuICBLSGN5LFxuICBraGN5LFxuICBLSmN5LFxuICBramN5LFxuICBLb3BmLFxuICBrb3BmLFxuICBLc2NyLFxuICBrc2NyLFxuICBsQWFycixcbiAgTGFjdXRlLFxuICBsYWN1dGUsXG4gIGxhZW1wdHl2LFxuICBsYWdyYW4sXG4gIExhbWJkYSxcbiAgbGFtYmRhLFxuICBsYW5nLFxuICBMYW5nLFxuICBsYW5nZCxcbiAgbGFuZ2xlLFxuICBsYXAsXG4gIExhcGxhY2V0cmYsXG4gIGxhcXVvLFxuICBsYXJyYixcbiAgbGFycmJmcyxcbiAgbGFycixcbiAgTGFycixcbiAgbEFycixcbiAgbGFycmZzLFxuICBsYXJyaGssXG4gIGxhcnJscCxcbiAgbGFycnBsLFxuICBsYXJyc2ltLFxuICBsYXJydGwsXG4gIGxhdGFpbCxcbiAgbEF0YWlsLFxuICBsYXQsXG4gIGxhdGUsXG4gIGxhdGVzLFxuICBsYmFycixcbiAgbEJhcnIsXG4gIGxiYnJrLFxuICBsYnJhY2UsXG4gIGxicmFjayxcbiAgbGJya2UsXG4gIGxicmtzbGQsXG4gIGxicmtzbHUsXG4gIExjYXJvbixcbiAgbGNhcm9uLFxuICBMY2VkaWwsXG4gIGxjZWRpbCxcbiAgbGNlaWwsXG4gIGxjdWIsXG4gIExjeSxcbiAgbGN5LFxuICBsZGNhLFxuICBsZHF1byxcbiAgbGRxdW9yLFxuICBsZHJkaGFyLFxuICBsZHJ1c2hhcixcbiAgbGRzaCxcbiAgbGUsXG4gIGxFLFxuICBMZWZ0QW5nbGVCcmFja2V0LFxuICBMZWZ0QXJyb3dCYXIsXG4gIGxlZnRhcnJvdyxcbiAgTGVmdEFycm93LFxuICBMZWZ0YXJyb3csXG4gIExlZnRBcnJvd1JpZ2h0QXJyb3csXG4gIGxlZnRhcnJvd3RhaWwsXG4gIExlZnRDZWlsaW5nLFxuICBMZWZ0RG91YmxlQnJhY2tldCxcbiAgTGVmdERvd25UZWVWZWN0b3IsXG4gIExlZnREb3duVmVjdG9yQmFyLFxuICBMZWZ0RG93blZlY3RvcixcbiAgTGVmdEZsb29yLFxuICBsZWZ0aGFycG9vbmRvd24sXG4gIGxlZnRoYXJwb29udXAsXG4gIGxlZnRsZWZ0YXJyb3dzLFxuICBsZWZ0cmlnaHRhcnJvdyxcbiAgTGVmdFJpZ2h0QXJyb3csXG4gIExlZnRyaWdodGFycm93LFxuICBsZWZ0cmlnaHRhcnJvd3MsXG4gIGxlZnRyaWdodGhhcnBvb25zLFxuICBsZWZ0cmlnaHRzcXVpZ2Fycm93LFxuICBMZWZ0UmlnaHRWZWN0b3IsXG4gIExlZnRUZWVBcnJvdyxcbiAgTGVmdFRlZSxcbiAgTGVmdFRlZVZlY3RvcixcbiAgbGVmdHRocmVldGltZXMsXG4gIExlZnRUcmlhbmdsZUJhcixcbiAgTGVmdFRyaWFuZ2xlLFxuICBMZWZ0VHJpYW5nbGVFcXVhbCxcbiAgTGVmdFVwRG93blZlY3RvcixcbiAgTGVmdFVwVGVlVmVjdG9yLFxuICBMZWZ0VXBWZWN0b3JCYXIsXG4gIExlZnRVcFZlY3RvcixcbiAgTGVmdFZlY3RvckJhcixcbiAgTGVmdFZlY3RvcixcbiAgbEVnLFxuICBsZWcsXG4gIGxlcSxcbiAgbGVxcSxcbiAgbGVxc2xhbnQsXG4gIGxlc2NjLFxuICBsZXMsXG4gIGxlc2RvdCxcbiAgbGVzZG90byxcbiAgbGVzZG90b3IsXG4gIGxlc2csXG4gIGxlc2dlcyxcbiAgbGVzc2FwcHJveCxcbiAgbGVzc2RvdCxcbiAgbGVzc2VxZ3RyLFxuICBsZXNzZXFxZ3RyLFxuICBMZXNzRXF1YWxHcmVhdGVyLFxuICBMZXNzRnVsbEVxdWFsLFxuICBMZXNzR3JlYXRlcixcbiAgbGVzc2d0cixcbiAgTGVzc0xlc3MsXG4gIGxlc3NzaW0sXG4gIExlc3NTbGFudEVxdWFsLFxuICBMZXNzVGlsZGUsXG4gIGxmaXNodCxcbiAgbGZsb29yLFxuICBMZnIsXG4gIGxmcixcbiAgbGcsXG4gIGxnRSxcbiAgbEhhcixcbiAgbGhhcmQsXG4gIGxoYXJ1LFxuICBsaGFydWwsXG4gIGxoYmxrLFxuICBMSmN5LFxuICBsamN5LFxuICBsbGFycixcbiAgbGwsXG4gIExsLFxuICBsbGNvcm5lcixcbiAgTGxlZnRhcnJvdyxcbiAgbGxoYXJkLFxuICBsbHRyaSxcbiAgTG1pZG90LFxuICBsbWlkb3QsXG4gIGxtb3VzdGFjaGUsXG4gIGxtb3VzdCxcbiAgbG5hcCxcbiAgbG5hcHByb3gsXG4gIGxuZSxcbiAgbG5FLFxuICBsbmVxLFxuICBsbmVxcSxcbiAgbG5zaW0sXG4gIGxvYW5nLFxuICBsb2FycixcbiAgbG9icmssXG4gIGxvbmdsZWZ0YXJyb3csXG4gIExvbmdMZWZ0QXJyb3csXG4gIExvbmdsZWZ0YXJyb3csXG4gIGxvbmdsZWZ0cmlnaHRhcnJvdyxcbiAgTG9uZ0xlZnRSaWdodEFycm93LFxuICBMb25nbGVmdHJpZ2h0YXJyb3csXG4gIGxvbmdtYXBzdG8sXG4gIGxvbmdyaWdodGFycm93LFxuICBMb25nUmlnaHRBcnJvdyxcbiAgTG9uZ3JpZ2h0YXJyb3csXG4gIGxvb3BhcnJvd2xlZnQsXG4gIGxvb3BhcnJvd3JpZ2h0LFxuICBsb3BhcixcbiAgTG9wZixcbiAgbG9wZixcbiAgbG9wbHVzLFxuICBsb3RpbWVzLFxuICBsb3dhc3QsXG4gIGxvd2JhcixcbiAgTG93ZXJMZWZ0QXJyb3csXG4gIExvd2VyUmlnaHRBcnJvdyxcbiAgbG96LFxuICBsb3plbmdlLFxuICBsb3pmLFxuICBscGFyLFxuICBscGFybHQsXG4gIGxyYXJyLFxuICBscmNvcm5lcixcbiAgbHJoYXIsXG4gIGxyaGFyZCxcbiAgbHJtLFxuICBscnRyaSxcbiAgbHNhcXVvLFxuICBsc2NyLFxuICBMc2NyLFxuICBsc2gsXG4gIExzaCxcbiAgbHNpbSxcbiAgbHNpbWUsXG4gIGxzaW1nLFxuICBsc3FiLFxuICBsc3F1byxcbiAgbHNxdW9yLFxuICBMc3Ryb2ssXG4gIGxzdHJvayxcbiAgbHRjYyxcbiAgbHRjaXIsXG4gIGx0LFxuICBMVCxcbiAgTHQsXG4gIGx0ZG90LFxuICBsdGhyZWUsXG4gIGx0aW1lcyxcbiAgbHRsYXJyLFxuICBsdHF1ZXN0LFxuICBsdHJpLFxuICBsdHJpZSxcbiAgbHRyaWYsXG4gIGx0clBhcixcbiAgbHVyZHNoYXIsXG4gIGx1cnVoYXIsXG4gIGx2ZXJ0bmVxcSxcbiAgbHZuRSxcbiAgbWFjcixcbiAgbWFsZSxcbiAgbWFsdCxcbiAgbWFsdGVzZSxcbiAgXCJNYXBcIjogXCJcXHUyOTA1XCIsXG4gIG1hcDogbWFwJDEsXG4gIG1hcHN0byxcbiAgbWFwc3RvZG93bixcbiAgbWFwc3RvbGVmdCxcbiAgbWFwc3RvdXAsXG4gIG1hcmtlcixcbiAgbWNvbW1hLFxuICBNY3ksXG4gIG1jeSxcbiAgbWRhc2gsXG4gIG1ERG90LFxuICBtZWFzdXJlZGFuZ2xlLFxuICBNZWRpdW1TcGFjZSxcbiAgTWVsbGludHJmLFxuICBNZnIsXG4gIG1mcixcbiAgbWhvLFxuICBtaWNybyxcbiAgbWlkYXN0LFxuICBtaWRjaXIsXG4gIG1pZCxcbiAgbWlkZG90LFxuICBtaW51c2IsXG4gIG1pbnVzLFxuICBtaW51c2QsXG4gIG1pbnVzZHUsXG4gIE1pbnVzUGx1cyxcbiAgbWxjcCxcbiAgbWxkcixcbiAgbW5wbHVzLFxuICBtb2RlbHMsXG4gIE1vcGYsXG4gIG1vcGYsXG4gIG1wLFxuICBtc2NyLFxuICBNc2NyLFxuICBtc3Rwb3MsXG4gIE11LFxuICBtdSxcbiAgbXVsdGltYXAsXG4gIG11bWFwLFxuICBuYWJsYSxcbiAgTmFjdXRlLFxuICBuYWN1dGUsXG4gIG5hbmcsXG4gIG5hcCxcbiAgbmFwRSxcbiAgbmFwaWQsXG4gIG5hcG9zLFxuICBuYXBwcm94LFxuICBuYXR1cmFsLFxuICBuYXR1cmFscyxcbiAgbmF0dXIsXG4gIG5ic3AsXG4gIG5idW1wLFxuICBuYnVtcGUsXG4gIG5jYXAsXG4gIE5jYXJvbixcbiAgbmNhcm9uLFxuICBOY2VkaWwsXG4gIG5jZWRpbCxcbiAgbmNvbmcsXG4gIG5jb25nZG90LFxuICBuY3VwLFxuICBOY3ksXG4gIG5jeSxcbiAgbmRhc2gsXG4gIG5lYXJoayxcbiAgbmVhcnIsXG4gIG5lQXJyLFxuICBuZWFycm93LFxuICBuZSxcbiAgbmVkb3QsXG4gIE5lZ2F0aXZlTWVkaXVtU3BhY2UsXG4gIE5lZ2F0aXZlVGhpY2tTcGFjZSxcbiAgTmVnYXRpdmVUaGluU3BhY2UsXG4gIE5lZ2F0aXZlVmVyeVRoaW5TcGFjZSxcbiAgbmVxdWl2LFxuICBuZXNlYXIsXG4gIG5lc2ltLFxuICBOZXN0ZWRHcmVhdGVyR3JlYXRlcixcbiAgTmVzdGVkTGVzc0xlc3MsXG4gIE5ld0xpbmUsXG4gIG5leGlzdCxcbiAgbmV4aXN0cyxcbiAgTmZyLFxuICBuZnIsXG4gIG5nRSxcbiAgbmdlLFxuICBuZ2VxLFxuICBuZ2VxcSxcbiAgbmdlcXNsYW50LFxuICBuZ2VzLFxuICBuR2csXG4gIG5nc2ltLFxuICBuR3QsXG4gIG5ndCxcbiAgbmd0cixcbiAgbkd0dixcbiAgbmhhcnIsXG4gIG5oQXJyLFxuICBuaHBhcixcbiAgbmksXG4gIG5pcyxcbiAgbmlzZCxcbiAgbml2LFxuICBOSmN5LFxuICBuamN5LFxuICBubGFycixcbiAgbmxBcnIsXG4gIG5sZHIsXG4gIG5sRSxcbiAgbmxlLFxuICBubGVmdGFycm93LFxuICBuTGVmdGFycm93LFxuICBubGVmdHJpZ2h0YXJyb3csXG4gIG5MZWZ0cmlnaHRhcnJvdyxcbiAgbmxlcSxcbiAgbmxlcXEsXG4gIG5sZXFzbGFudCxcbiAgbmxlcyxcbiAgbmxlc3MsXG4gIG5MbCxcbiAgbmxzaW0sXG4gIG5MdCxcbiAgbmx0LFxuICBubHRyaSxcbiAgbmx0cmllLFxuICBuTHR2LFxuICBubWlkLFxuICBOb0JyZWFrLFxuICBOb25CcmVha2luZ1NwYWNlLFxuICBub3BmLFxuICBOb3BmLFxuICBOb3QsXG4gIG5vdCxcbiAgTm90Q29uZ3J1ZW50LFxuICBOb3RDdXBDYXAsXG4gIE5vdERvdWJsZVZlcnRpY2FsQmFyLFxuICBOb3RFbGVtZW50LFxuICBOb3RFcXVhbCxcbiAgTm90RXF1YWxUaWxkZSxcbiAgTm90RXhpc3RzLFxuICBOb3RHcmVhdGVyLFxuICBOb3RHcmVhdGVyRXF1YWwsXG4gIE5vdEdyZWF0ZXJGdWxsRXF1YWwsXG4gIE5vdEdyZWF0ZXJHcmVhdGVyLFxuICBOb3RHcmVhdGVyTGVzcyxcbiAgTm90R3JlYXRlclNsYW50RXF1YWwsXG4gIE5vdEdyZWF0ZXJUaWxkZSxcbiAgTm90SHVtcERvd25IdW1wLFxuICBOb3RIdW1wRXF1YWwsXG4gIG5vdGluLFxuICBub3RpbmRvdCxcbiAgbm90aW5FLFxuICBub3RpbnZhLFxuICBub3RpbnZiLFxuICBub3RpbnZjLFxuICBOb3RMZWZ0VHJpYW5nbGVCYXIsXG4gIE5vdExlZnRUcmlhbmdsZSxcbiAgTm90TGVmdFRyaWFuZ2xlRXF1YWwsXG4gIE5vdExlc3MsXG4gIE5vdExlc3NFcXVhbCxcbiAgTm90TGVzc0dyZWF0ZXIsXG4gIE5vdExlc3NMZXNzLFxuICBOb3RMZXNzU2xhbnRFcXVhbCxcbiAgTm90TGVzc1RpbGRlLFxuICBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcixcbiAgTm90TmVzdGVkTGVzc0xlc3MsXG4gIG5vdG5pLFxuICBub3RuaXZhLFxuICBub3RuaXZiLFxuICBub3RuaXZjLFxuICBOb3RQcmVjZWRlcyxcbiAgTm90UHJlY2VkZXNFcXVhbCxcbiAgTm90UHJlY2VkZXNTbGFudEVxdWFsLFxuICBOb3RSZXZlcnNlRWxlbWVudCxcbiAgTm90UmlnaHRUcmlhbmdsZUJhcixcbiAgTm90UmlnaHRUcmlhbmdsZSxcbiAgTm90UmlnaHRUcmlhbmdsZUVxdWFsLFxuICBOb3RTcXVhcmVTdWJzZXQsXG4gIE5vdFNxdWFyZVN1YnNldEVxdWFsLFxuICBOb3RTcXVhcmVTdXBlcnNldCxcbiAgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCxcbiAgTm90U3Vic2V0LFxuICBOb3RTdWJzZXRFcXVhbCxcbiAgTm90U3VjY2VlZHMsXG4gIE5vdFN1Y2NlZWRzRXF1YWwsXG4gIE5vdFN1Y2NlZWRzU2xhbnRFcXVhbCxcbiAgTm90U3VjY2VlZHNUaWxkZSxcbiAgTm90U3VwZXJzZXQsXG4gIE5vdFN1cGVyc2V0RXF1YWwsXG4gIE5vdFRpbGRlLFxuICBOb3RUaWxkZUVxdWFsLFxuICBOb3RUaWxkZUZ1bGxFcXVhbCxcbiAgTm90VGlsZGVUaWxkZSxcbiAgTm90VmVydGljYWxCYXIsXG4gIG5wYXJhbGxlbCxcbiAgbnBhcixcbiAgbnBhcnNsLFxuICBucGFydCxcbiAgbnBvbGludCxcbiAgbnByLFxuICBucHJjdWUsXG4gIG5wcmVjLFxuICBucHJlY2VxLFxuICBucHJlLFxuICBucmFycmMsXG4gIG5yYXJyLFxuICBuckFycixcbiAgbnJhcnJ3LFxuICBucmlnaHRhcnJvdyxcbiAgblJpZ2h0YXJyb3csXG4gIG5ydHJpLFxuICBucnRyaWUsXG4gIG5zYyxcbiAgbnNjY3VlLFxuICBuc2NlLFxuICBOc2NyLFxuICBuc2NyLFxuICBuc2hvcnRtaWQsXG4gIG5zaG9ydHBhcmFsbGVsLFxuICBuc2ltLFxuICBuc2ltZSxcbiAgbnNpbWVxLFxuICBuc21pZCxcbiAgbnNwYXIsXG4gIG5zcXN1YmUsXG4gIG5zcXN1cGUsXG4gIG5zdWIsXG4gIG5zdWJFLFxuICBuc3ViZSxcbiAgbnN1YnNldCxcbiAgbnN1YnNldGVxLFxuICBuc3Vic2V0ZXFxLFxuICBuc3VjYyxcbiAgbnN1Y2NlcSxcbiAgbnN1cCxcbiAgbnN1cEUsXG4gIG5zdXBlLFxuICBuc3Vwc2V0LFxuICBuc3Vwc2V0ZXEsXG4gIG5zdXBzZXRlcXEsXG4gIG50Z2wsXG4gIE50aWxkZSxcbiAgbnRpbGRlLFxuICBudGxnLFxuICBudHJpYW5nbGVsZWZ0LFxuICBudHJpYW5nbGVsZWZ0ZXEsXG4gIG50cmlhbmdsZXJpZ2h0LFxuICBudHJpYW5nbGVyaWdodGVxLFxuICBOdSxcbiAgbnUsXG4gIG51bSxcbiAgbnVtZXJvLFxuICBudW1zcCxcbiAgbnZhcCxcbiAgbnZkYXNoLFxuICBudkRhc2gsXG4gIG5WZGFzaCxcbiAgblZEYXNoLFxuICBudmdlLFxuICBudmd0LFxuICBudkhhcnIsXG4gIG52aW5maW4sXG4gIG52bEFycixcbiAgbnZsZSxcbiAgbnZsdCxcbiAgbnZsdHJpZSxcbiAgbnZyQXJyLFxuICBudnJ0cmllLFxuICBudnNpbSxcbiAgbndhcmhrLFxuICBud2FycixcbiAgbndBcnIsXG4gIG53YXJyb3csXG4gIG53bmVhcixcbiAgT2FjdXRlLFxuICBvYWN1dGUsXG4gIG9hc3QsXG4gIE9jaXJjLFxuICBvY2lyYyxcbiAgb2NpcixcbiAgT2N5LFxuICBvY3ksXG4gIG9kYXNoLFxuICBPZGJsYWMsXG4gIG9kYmxhYyxcbiAgb2RpdixcbiAgb2RvdCxcbiAgb2Rzb2xkLFxuICBPRWxpZyxcbiAgb2VsaWcsXG4gIG9mY2lyLFxuICBPZnIsXG4gIG9mcixcbiAgb2dvbixcbiAgT2dyYXZlLFxuICBvZ3JhdmUsXG4gIG9ndCxcbiAgb2hiYXIsXG4gIG9obSxcbiAgb2ludCxcbiAgb2xhcnIsXG4gIG9sY2lyLFxuICBvbGNyb3NzLFxuICBvbGluZSxcbiAgb2x0LFxuICBPbWFjcixcbiAgb21hY3IsXG4gIE9tZWdhLFxuICBvbWVnYSxcbiAgT21pY3JvbixcbiAgb21pY3JvbixcbiAgb21pZCxcbiAgb21pbnVzLFxuICBPb3BmLFxuICBvb3BmLFxuICBvcGFyLFxuICBPcGVuQ3VybHlEb3VibGVRdW90ZSxcbiAgT3BlbkN1cmx5UXVvdGUsXG4gIG9wZXJwLFxuICBvcGx1cyxcbiAgb3JhcnIsXG4gIE9yLFxuICBvcixcbiAgb3JkLFxuICBvcmRlcixcbiAgb3JkZXJvZixcbiAgb3JkZixcbiAgb3JkbSxcbiAgb3JpZ29mLFxuICBvcm9yLFxuICBvcnNsb3BlLFxuICBvcnYsXG4gIG9TLFxuICBPc2NyLFxuICBvc2NyLFxuICBPc2xhc2gsXG4gIG9zbGFzaCxcbiAgb3NvbCxcbiAgT3RpbGRlLFxuICBvdGlsZGUsXG4gIG90aW1lc2FzLFxuICBPdGltZXMsXG4gIG90aW1lcyxcbiAgT3VtbCxcbiAgb3VtbCxcbiAgb3ZiYXIsXG4gIE92ZXJCYXIsXG4gIE92ZXJCcmFjZSxcbiAgT3ZlckJyYWNrZXQsXG4gIE92ZXJQYXJlbnRoZXNpcyxcbiAgcGFyYSxcbiAgcGFyYWxsZWwsXG4gIHBhcixcbiAgcGFyc2ltLFxuICBwYXJzbCxcbiAgcGFydCxcbiAgUGFydGlhbEQsXG4gIFBjeSxcbiAgcGN5LFxuICBwZXJjbnQsXG4gIHBlcmlvZCxcbiAgcGVybWlsLFxuICBwZXJwLFxuICBwZXJ0ZW5rLFxuICBQZnIsXG4gIHBmcixcbiAgUGhpLFxuICBwaGksXG4gIHBoaXYsXG4gIHBobW1hdCxcbiAgcGhvbmUsXG4gIFBpLFxuICBwaSxcbiAgcGl0Y2hmb3JrLFxuICBwaXYsXG4gIHBsYW5jayxcbiAgcGxhbmNraCxcbiAgcGxhbmt2LFxuICBwbHVzYWNpcixcbiAgcGx1c2IsXG4gIHBsdXNjaXIsXG4gIHBsdXMsXG4gIHBsdXNkbyxcbiAgcGx1c2R1LFxuICBwbHVzZSxcbiAgUGx1c01pbnVzLFxuICBwbHVzbW4sXG4gIHBsdXNzaW0sXG4gIHBsdXN0d28sXG4gIHBtLFxuICBQb2luY2FyZXBsYW5lLFxuICBwb2ludGludCxcbiAgcG9wZixcbiAgUG9wZixcbiAgcG91bmQsXG4gIHByYXAsXG4gIFByLFxuICBwcixcbiAgcHJjdWUsXG4gIHByZWNhcHByb3gsXG4gIHByZWMsXG4gIHByZWNjdXJseWVxLFxuICBQcmVjZWRlcyxcbiAgUHJlY2VkZXNFcXVhbCxcbiAgUHJlY2VkZXNTbGFudEVxdWFsLFxuICBQcmVjZWRlc1RpbGRlLFxuICBwcmVjZXEsXG4gIHByZWNuYXBwcm94LFxuICBwcmVjbmVxcSxcbiAgcHJlY25zaW0sXG4gIHByZSxcbiAgcHJFLFxuICBwcmVjc2ltLFxuICBwcmltZSxcbiAgUHJpbWUsXG4gIHByaW1lcyxcbiAgcHJuYXAsXG4gIHBybkUsXG4gIHBybnNpbSxcbiAgcHJvZCxcbiAgUHJvZHVjdCxcbiAgcHJvZmFsYXIsXG4gIHByb2ZsaW5lLFxuICBwcm9mc3VyZixcbiAgcHJvcCxcbiAgUHJvcG9ydGlvbmFsLFxuICBQcm9wb3J0aW9uLFxuICBwcm9wdG8sXG4gIHByc2ltLFxuICBwcnVyZWwsXG4gIFBzY3IsXG4gIHBzY3IsXG4gIFBzaSxcbiAgcHNpLFxuICBwdW5jc3AsXG4gIFFmcixcbiAgcWZyLFxuICBxaW50LFxuICBxb3BmLFxuICBRb3BmLFxuICBxcHJpbWUsXG4gIFFzY3IsXG4gIHFzY3IsXG4gIHF1YXRlcm5pb25zLFxuICBxdWF0aW50LFxuICBxdWVzdCxcbiAgcXVlc3RlcSxcbiAgcXVvdCxcbiAgUVVPVCxcbiAgckFhcnIsXG4gIHJhY2UsXG4gIFJhY3V0ZSxcbiAgcmFjdXRlLFxuICByYWRpYyxcbiAgcmFlbXB0eXYsXG4gIHJhbmcsXG4gIFJhbmcsXG4gIHJhbmdkLFxuICByYW5nZSxcbiAgcmFuZ2xlLFxuICByYXF1byxcbiAgcmFycmFwLFxuICByYXJyYixcbiAgcmFycmJmcyxcbiAgcmFycmMsXG4gIHJhcnIsXG4gIFJhcnIsXG4gIHJBcnIsXG4gIHJhcnJmcyxcbiAgcmFycmhrLFxuICByYXJybHAsXG4gIHJhcnJwbCxcbiAgcmFycnNpbSxcbiAgUmFycnRsLFxuICByYXJydGwsXG4gIHJhcnJ3LFxuICByYXRhaWwsXG4gIHJBdGFpbCxcbiAgcmF0aW8sXG4gIHJhdGlvbmFscyxcbiAgcmJhcnIsXG4gIHJCYXJyLFxuICBSQmFycixcbiAgcmJicmssXG4gIHJicmFjZSxcbiAgcmJyYWNrLFxuICByYnJrZSxcbiAgcmJya3NsZCxcbiAgcmJya3NsdSxcbiAgUmNhcm9uLFxuICByY2Fyb24sXG4gIFJjZWRpbCxcbiAgcmNlZGlsLFxuICByY2VpbCxcbiAgcmN1YixcbiAgUmN5LFxuICByY3ksXG4gIHJkY2EsXG4gIHJkbGRoYXIsXG4gIHJkcXVvLFxuICByZHF1b3IsXG4gIHJkc2gsXG4gIHJlYWwsXG4gIHJlYWxpbmUsXG4gIHJlYWxwYXJ0LFxuICByZWFscyxcbiAgUmUsXG4gIHJlY3QsXG4gIHJlZyxcbiAgUkVHLFxuICBSZXZlcnNlRWxlbWVudCxcbiAgUmV2ZXJzZUVxdWlsaWJyaXVtLFxuICBSZXZlcnNlVXBFcXVpbGlicml1bSxcbiAgcmZpc2h0LFxuICByZmxvb3IsXG4gIHJmcixcbiAgUmZyLFxuICBySGFyLFxuICByaGFyZCxcbiAgcmhhcnUsXG4gIHJoYXJ1bCxcbiAgUmhvLFxuICByaG8sXG4gIHJob3YsXG4gIFJpZ2h0QW5nbGVCcmFja2V0LFxuICBSaWdodEFycm93QmFyLFxuICByaWdodGFycm93LFxuICBSaWdodEFycm93LFxuICBSaWdodGFycm93LFxuICBSaWdodEFycm93TGVmdEFycm93LFxuICByaWdodGFycm93dGFpbCxcbiAgUmlnaHRDZWlsaW5nLFxuICBSaWdodERvdWJsZUJyYWNrZXQsXG4gIFJpZ2h0RG93blRlZVZlY3RvcixcbiAgUmlnaHREb3duVmVjdG9yQmFyLFxuICBSaWdodERvd25WZWN0b3IsXG4gIFJpZ2h0Rmxvb3IsXG4gIHJpZ2h0aGFycG9vbmRvd24sXG4gIHJpZ2h0aGFycG9vbnVwLFxuICByaWdodGxlZnRhcnJvd3MsXG4gIHJpZ2h0bGVmdGhhcnBvb25zLFxuICByaWdodHJpZ2h0YXJyb3dzLFxuICByaWdodHNxdWlnYXJyb3csXG4gIFJpZ2h0VGVlQXJyb3csXG4gIFJpZ2h0VGVlLFxuICBSaWdodFRlZVZlY3RvcixcbiAgcmlnaHR0aHJlZXRpbWVzLFxuICBSaWdodFRyaWFuZ2xlQmFyLFxuICBSaWdodFRyaWFuZ2xlLFxuICBSaWdodFRyaWFuZ2xlRXF1YWwsXG4gIFJpZ2h0VXBEb3duVmVjdG9yLFxuICBSaWdodFVwVGVlVmVjdG9yLFxuICBSaWdodFVwVmVjdG9yQmFyLFxuICBSaWdodFVwVmVjdG9yLFxuICBSaWdodFZlY3RvckJhcixcbiAgUmlnaHRWZWN0b3IsXG4gIHJpbmcsXG4gIHJpc2luZ2RvdHNlcSxcbiAgcmxhcnIsXG4gIHJsaGFyLFxuICBybG0sXG4gIHJtb3VzdGFjaGUsXG4gIHJtb3VzdCxcbiAgcm5taWQsXG4gIHJvYW5nLFxuICByb2FycixcbiAgcm9icmssXG4gIHJvcGFyLFxuICByb3BmLFxuICBSb3BmLFxuICByb3BsdXMsXG4gIHJvdGltZXMsXG4gIFJvdW5kSW1wbGllcyxcbiAgcnBhcixcbiAgcnBhcmd0LFxuICBycHBvbGludCxcbiAgcnJhcnIsXG4gIFJyaWdodGFycm93LFxuICByc2FxdW8sXG4gIHJzY3IsXG4gIFJzY3IsXG4gIHJzaCxcbiAgUnNoLFxuICByc3FiLFxuICByc3F1byxcbiAgcnNxdW9yLFxuICBydGhyZWUsXG4gIHJ0aW1lcyxcbiAgcnRyaSxcbiAgcnRyaWUsXG4gIHJ0cmlmLFxuICBydHJpbHRyaSxcbiAgUnVsZURlbGF5ZWQsXG4gIHJ1bHVoYXIsXG4gIHJ4LFxuICBTYWN1dGUsXG4gIHNhY3V0ZSxcbiAgc2JxdW8sXG4gIHNjYXAsXG4gIFNjYXJvbixcbiAgc2Nhcm9uLFxuICBTYyxcbiAgc2MsXG4gIHNjY3VlLFxuICBzY2UsXG4gIHNjRSxcbiAgU2NlZGlsLFxuICBzY2VkaWwsXG4gIFNjaXJjLFxuICBzY2lyYyxcbiAgc2NuYXAsXG4gIHNjbkUsXG4gIHNjbnNpbSxcbiAgc2Nwb2xpbnQsXG4gIHNjc2ltLFxuICBTY3ksXG4gIHNjeSxcbiAgc2RvdGIsXG4gIHNkb3QsXG4gIHNkb3RlLFxuICBzZWFyaGssXG4gIHNlYXJyLFxuICBzZUFycixcbiAgc2VhcnJvdyxcbiAgc2VjdCxcbiAgc2VtaSxcbiAgc2Vzd2FyLFxuICBzZXRtaW51cyxcbiAgc2V0bW4sXG4gIHNleHQsXG4gIFNmcixcbiAgc2ZyLFxuICBzZnJvd24sXG4gIHNoYXJwLFxuICBTSENIY3ksXG4gIHNoY2hjeSxcbiAgU0hjeSxcbiAgc2hjeSxcbiAgU2hvcnREb3duQXJyb3csXG4gIFNob3J0TGVmdEFycm93LFxuICBzaG9ydG1pZCxcbiAgc2hvcnRwYXJhbGxlbCxcbiAgU2hvcnRSaWdodEFycm93LFxuICBTaG9ydFVwQXJyb3csXG4gIHNoeSxcbiAgU2lnbWEsXG4gIHNpZ21hLFxuICBzaWdtYWYsXG4gIHNpZ21hdixcbiAgc2ltLFxuICBzaW1kb3QsXG4gIHNpbWUsXG4gIHNpbWVxLFxuICBzaW1nLFxuICBzaW1nRSxcbiAgc2ltbCxcbiAgc2ltbEUsXG4gIHNpbW5lLFxuICBzaW1wbHVzLFxuICBzaW1yYXJyLFxuICBzbGFycixcbiAgU21hbGxDaXJjbGUsXG4gIHNtYWxsc2V0bWludXMsXG4gIHNtYXNocCxcbiAgc21lcGFyc2wsXG4gIHNtaWQsXG4gIHNtaWxlLFxuICBzbXQsXG4gIHNtdGUsXG4gIHNtdGVzLFxuICBTT0ZUY3ksXG4gIHNvZnRjeSxcbiAgc29sYmFyLFxuICBzb2xiLFxuICBzb2wsXG4gIFNvcGYsXG4gIHNvcGYsXG4gIHNwYWRlcyxcbiAgc3BhZGVzdWl0LFxuICBzcGFyLFxuICBzcWNhcCxcbiAgc3FjYXBzLFxuICBzcWN1cCxcbiAgc3FjdXBzLFxuICBTcXJ0LFxuICBzcXN1YixcbiAgc3FzdWJlLFxuICBzcXN1YnNldCxcbiAgc3FzdWJzZXRlcSxcbiAgc3FzdXAsXG4gIHNxc3VwZSxcbiAgc3FzdXBzZXQsXG4gIHNxc3Vwc2V0ZXEsXG4gIHNxdWFyZSxcbiAgU3F1YXJlLFxuICBTcXVhcmVJbnRlcnNlY3Rpb24sXG4gIFNxdWFyZVN1YnNldCxcbiAgU3F1YXJlU3Vic2V0RXF1YWwsXG4gIFNxdWFyZVN1cGVyc2V0LFxuICBTcXVhcmVTdXBlcnNldEVxdWFsLFxuICBTcXVhcmVVbmlvbixcbiAgc3F1YXJmLFxuICBzcXUsXG4gIHNxdWYsXG4gIHNyYXJyLFxuICBTc2NyLFxuICBzc2NyLFxuICBzc2V0bW4sXG4gIHNzbWlsZSxcbiAgc3N0YXJmLFxuICBTdGFyLFxuICBzdGFyLFxuICBzdGFyZixcbiAgc3RyYWlnaHRlcHNpbG9uLFxuICBzdHJhaWdodHBoaSxcbiAgc3RybnMsXG4gIHN1YixcbiAgU3ViLFxuICBzdWJkb3QsXG4gIHN1YkUsXG4gIHN1YmUsXG4gIHN1YmVkb3QsXG4gIHN1Ym11bHQsXG4gIHN1Ym5FLFxuICBzdWJuZSxcbiAgc3VicGx1cyxcbiAgc3VicmFycixcbiAgc3Vic2V0LFxuICBTdWJzZXQsXG4gIHN1YnNldGVxLFxuICBzdWJzZXRlcXEsXG4gIFN1YnNldEVxdWFsLFxuICBzdWJzZXRuZXEsXG4gIHN1YnNldG5lcXEsXG4gIHN1YnNpbSxcbiAgc3Vic3ViLFxuICBzdWJzdXAsXG4gIHN1Y2NhcHByb3gsXG4gIHN1Y2MsXG4gIHN1Y2NjdXJseWVxLFxuICBTdWNjZWVkcyxcbiAgU3VjY2VlZHNFcXVhbCxcbiAgU3VjY2VlZHNTbGFudEVxdWFsLFxuICBTdWNjZWVkc1RpbGRlLFxuICBzdWNjZXEsXG4gIHN1Y2NuYXBwcm94LFxuICBzdWNjbmVxcSxcbiAgc3VjY25zaW0sXG4gIHN1Y2NzaW0sXG4gIFN1Y2hUaGF0LFxuICBzdW0sXG4gIFN1bSxcbiAgc3VuZyxcbiAgc3VwMSxcbiAgc3VwMixcbiAgc3VwMyxcbiAgc3VwLFxuICBTdXAsXG4gIHN1cGRvdCxcbiAgc3VwZHN1YixcbiAgc3VwRSxcbiAgc3VwZSxcbiAgc3VwZWRvdCxcbiAgU3VwZXJzZXQsXG4gIFN1cGVyc2V0RXF1YWwsXG4gIHN1cGhzb2wsXG4gIHN1cGhzdWIsXG4gIHN1cGxhcnIsXG4gIHN1cG11bHQsXG4gIHN1cG5FLFxuICBzdXBuZSxcbiAgc3VwcGx1cyxcbiAgc3Vwc2V0LFxuICBTdXBzZXQsXG4gIHN1cHNldGVxLFxuICBzdXBzZXRlcXEsXG4gIHN1cHNldG5lcSxcbiAgc3Vwc2V0bmVxcSxcbiAgc3Vwc2ltLFxuICBzdXBzdWIsXG4gIHN1cHN1cCxcbiAgc3dhcmhrLFxuICBzd2FycixcbiAgc3dBcnIsXG4gIHN3YXJyb3csXG4gIHN3bndhcixcbiAgc3psaWcsXG4gIFRhYixcbiAgdGFyZ2V0LFxuICBUYXUsXG4gIHRhdSxcbiAgdGJyayxcbiAgVGNhcm9uLFxuICB0Y2Fyb24sXG4gIFRjZWRpbCxcbiAgdGNlZGlsLFxuICBUY3ksXG4gIHRjeSxcbiAgdGRvdCxcbiAgdGVscmVjLFxuICBUZnIsXG4gIHRmcixcbiAgdGhlcmU0LFxuICB0aGVyZWZvcmUsXG4gIFRoZXJlZm9yZSxcbiAgVGhldGEsXG4gIHRoZXRhLFxuICB0aGV0YXN5bSxcbiAgdGhldGF2LFxuICB0aGlja2FwcHJveCxcbiAgdGhpY2tzaW0sXG4gIFRoaWNrU3BhY2UsXG4gIFRoaW5TcGFjZSxcbiAgdGhpbnNwLFxuICB0aGthcCxcbiAgdGhrc2ltLFxuICBUSE9STixcbiAgdGhvcm4sXG4gIHRpbGRlLFxuICBUaWxkZSxcbiAgVGlsZGVFcXVhbCxcbiAgVGlsZGVGdWxsRXF1YWwsXG4gIFRpbGRlVGlsZGUsXG4gIHRpbWVzYmFyLFxuICB0aW1lc2IsXG4gIHRpbWVzLFxuICB0aW1lc2QsXG4gIHRpbnQsXG4gIHRvZWEsXG4gIHRvcGJvdCxcbiAgdG9wY2lyLFxuICB0b3AsXG4gIFRvcGYsXG4gIHRvcGYsXG4gIHRvcGZvcmssXG4gIHRvc2EsXG4gIHRwcmltZSxcbiAgdHJhZGUsXG4gIFRSQURFLFxuICB0cmlhbmdsZSxcbiAgdHJpYW5nbGVkb3duLFxuICB0cmlhbmdsZWxlZnQsXG4gIHRyaWFuZ2xlbGVmdGVxLFxuICB0cmlhbmdsZXEsXG4gIHRyaWFuZ2xlcmlnaHQsXG4gIHRyaWFuZ2xlcmlnaHRlcSxcbiAgdHJpZG90LFxuICB0cmllLFxuICB0cmltaW51cyxcbiAgVHJpcGxlRG90LFxuICB0cmlwbHVzLFxuICB0cmlzYixcbiAgdHJpdGltZSxcbiAgdHJwZXppdW0sXG4gIFRzY3IsXG4gIHRzY3IsXG4gIFRTY3ksXG4gIHRzY3ksXG4gIFRTSGN5LFxuICB0c2hjeSxcbiAgVHN0cm9rLFxuICB0c3Ryb2ssXG4gIHR3aXh0LFxuICB0d29oZWFkbGVmdGFycm93LFxuICB0d29oZWFkcmlnaHRhcnJvdyxcbiAgVWFjdXRlLFxuICB1YWN1dGUsXG4gIHVhcnIsXG4gIFVhcnIsXG4gIHVBcnIsXG4gIFVhcnJvY2lyLFxuICBVYnJjeSxcbiAgdWJyY3ksXG4gIFVicmV2ZSxcbiAgdWJyZXZlLFxuICBVY2lyYyxcbiAgdWNpcmMsXG4gIFVjeSxcbiAgdWN5LFxuICB1ZGFycixcbiAgVWRibGFjLFxuICB1ZGJsYWMsXG4gIHVkaGFyLFxuICB1ZmlzaHQsXG4gIFVmcixcbiAgdWZyLFxuICBVZ3JhdmUsXG4gIHVncmF2ZSxcbiAgdUhhcixcbiAgdWhhcmwsXG4gIHVoYXJyLFxuICB1aGJsayxcbiAgdWxjb3JuLFxuICB1bGNvcm5lcixcbiAgdWxjcm9wLFxuICB1bHRyaSxcbiAgVW1hY3IsXG4gIHVtYWNyLFxuICB1bWwsXG4gIFVuZGVyQmFyLFxuICBVbmRlckJyYWNlLFxuICBVbmRlckJyYWNrZXQsXG4gIFVuZGVyUGFyZW50aGVzaXMsXG4gIFVuaW9uLFxuICBVbmlvblBsdXMsXG4gIFVvZ29uLFxuICB1b2dvbixcbiAgVW9wZixcbiAgdW9wZixcbiAgVXBBcnJvd0JhcixcbiAgdXBhcnJvdyxcbiAgVXBBcnJvdyxcbiAgVXBhcnJvdyxcbiAgVXBBcnJvd0Rvd25BcnJvdyxcbiAgdXBkb3duYXJyb3csXG4gIFVwRG93bkFycm93LFxuICBVcGRvd25hcnJvdyxcbiAgVXBFcXVpbGlicml1bSxcbiAgdXBoYXJwb29ubGVmdCxcbiAgdXBoYXJwb29ucmlnaHQsXG4gIHVwbHVzLFxuICBVcHBlckxlZnRBcnJvdyxcbiAgVXBwZXJSaWdodEFycm93LFxuICB1cHNpLFxuICBVcHNpLFxuICB1cHNpaCxcbiAgVXBzaWxvbixcbiAgdXBzaWxvbixcbiAgVXBUZWVBcnJvdyxcbiAgVXBUZWUsXG4gIHVwdXBhcnJvd3MsXG4gIHVyY29ybixcbiAgdXJjb3JuZXIsXG4gIHVyY3JvcCxcbiAgVXJpbmcsXG4gIHVyaW5nLFxuICB1cnRyaSxcbiAgVXNjcixcbiAgdXNjcixcbiAgdXRkb3QsXG4gIFV0aWxkZSxcbiAgdXRpbGRlLFxuICB1dHJpLFxuICB1dHJpZixcbiAgdXVhcnIsXG4gIFV1bWwsXG4gIHV1bWwsXG4gIHV3YW5nbGUsXG4gIHZhbmdydCxcbiAgdmFyZXBzaWxvbixcbiAgdmFya2FwcGEsXG4gIHZhcm5vdGhpbmcsXG4gIHZhcnBoaSxcbiAgdmFycGksXG4gIHZhcnByb3B0byxcbiAgdmFycixcbiAgdkFycixcbiAgdmFycmhvLFxuICB2YXJzaWdtYSxcbiAgdmFyc3Vic2V0bmVxLFxuICB2YXJzdWJzZXRuZXFxLFxuICB2YXJzdXBzZXRuZXEsXG4gIHZhcnN1cHNldG5lcXEsXG4gIHZhcnRoZXRhLFxuICB2YXJ0cmlhbmdsZWxlZnQsXG4gIHZhcnRyaWFuZ2xlcmlnaHQsXG4gIHZCYXIsXG4gIFZiYXIsXG4gIHZCYXJ2LFxuICBWY3ksXG4gIHZjeSxcbiAgdmRhc2gsXG4gIHZEYXNoLFxuICBWZGFzaCxcbiAgVkRhc2gsXG4gIFZkYXNobCxcbiAgdmVlYmFyLFxuICB2ZWUsXG4gIFZlZSxcbiAgdmVlZXEsXG4gIHZlbGxpcCxcbiAgdmVyYmFyLFxuICBWZXJiYXIsXG4gIHZlcnQsXG4gIFZlcnQsXG4gIFZlcnRpY2FsQmFyLFxuICBWZXJ0aWNhbExpbmUsXG4gIFZlcnRpY2FsU2VwYXJhdG9yLFxuICBWZXJ0aWNhbFRpbGRlLFxuICBWZXJ5VGhpblNwYWNlLFxuICBWZnIsXG4gIHZmcixcbiAgdmx0cmksXG4gIHZuc3ViLFxuICB2bnN1cCxcbiAgVm9wZixcbiAgdm9wZixcbiAgdnByb3AsXG4gIHZydHJpLFxuICBWc2NyLFxuICB2c2NyLFxuICB2c3VibkUsXG4gIHZzdWJuZSxcbiAgdnN1cG5FLFxuICB2c3VwbmUsXG4gIFZ2ZGFzaCxcbiAgdnppZ3phZyxcbiAgV2NpcmMsXG4gIHdjaXJjLFxuICB3ZWRiYXIsXG4gIHdlZGdlLFxuICBXZWRnZSxcbiAgd2VkZ2VxLFxuICB3ZWllcnAsXG4gIFdmcixcbiAgd2ZyLFxuICBXb3BmLFxuICB3b3BmLFxuICB3cCxcbiAgd3IsXG4gIHdyZWF0aCxcbiAgV3NjcixcbiAgd3NjcixcbiAgeGNhcCxcbiAgeGNpcmMsXG4gIHhjdXAsXG4gIHhkdHJpLFxuICBYZnIsXG4gIHhmcixcbiAgeGhhcnIsXG4gIHhoQXJyLFxuICBYaSxcbiAgeGksXG4gIHhsYXJyLFxuICB4bEFycixcbiAgeG1hcCxcbiAgeG5pcyxcbiAgeG9kb3QsXG4gIFhvcGYsXG4gIHhvcGYsXG4gIHhvcGx1cyxcbiAgeG90aW1lLFxuICB4cmFycixcbiAgeHJBcnIsXG4gIFhzY3IsXG4gIHhzY3IsXG4gIHhzcWN1cCxcbiAgeHVwbHVzLFxuICB4dXRyaSxcbiAgeHZlZSxcbiAgeHdlZGdlLFxuICBZYWN1dGUsXG4gIHlhY3V0ZSxcbiAgWUFjeSxcbiAgeWFjeSxcbiAgWWNpcmMsXG4gIHljaXJjLFxuICBZY3ksXG4gIHljeSxcbiAgeWVuLFxuICBZZnIsXG4gIHlmcixcbiAgWUljeSxcbiAgeWljeSxcbiAgWW9wZixcbiAgeW9wZixcbiAgWXNjcixcbiAgeXNjcixcbiAgWVVjeSxcbiAgeXVjeSxcbiAgeXVtbCxcbiAgWXVtbCxcbiAgWmFjdXRlLFxuICB6YWN1dGUsXG4gIFpjYXJvbixcbiAgemNhcm9uLFxuICBaY3ksXG4gIHpjeSxcbiAgWmRvdCxcbiAgemRvdCxcbiAgemVldHJmLFxuICBaZXJvV2lkdGhTcGFjZSxcbiAgWmV0YSxcbiAgemV0YSxcbiAgemZyLFxuICBaZnIsXG4gIFpIY3ksXG4gIHpoY3ksXG4gIHppZ3JhcnIsXG4gIHpvcGYsXG4gIFpvcGYsXG4gIFpzY3IsXG4gIHpzY3IsXG4gIHp3aixcbiAgendualxufTtcbnZhciBlbnRpdGllcyQxID0gcmVxdWlyZSQkMDtcbnZhciByZWdleCQ0ID0gL1shLSMlLVxcKiwtXFwvOjtcXD9AXFxbLVxcXV9cXHtcXH1cXHhBMVxceEE3XFx4QUJcXHhCNlxceEI3XFx4QkJcXHhCRlxcdTAzN0VcXHUwMzg3XFx1MDU1QS1cXHUwNTVGXFx1MDU4OVxcdTA1OEFcXHUwNUJFXFx1MDVDMFxcdTA1QzNcXHUwNUM2XFx1MDVGM1xcdTA1RjRcXHUwNjA5XFx1MDYwQVxcdTA2MENcXHUwNjBEXFx1MDYxQlxcdTA2MUVcXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwOUZEXFx1MEE3NlxcdTBBRjBcXHUwQzg0XFx1MERGNFxcdTBFNEZcXHUwRTVBXFx1MEU1QlxcdTBGMDQtXFx1MEYxMlxcdTBGMTRcXHUwRjNBLVxcdTBGM0RcXHUwRjg1XFx1MEZEMC1cXHUwRkQ0XFx1MEZEOVxcdTBGREFcXHUxMDRBLVxcdTEwNEZcXHUxMEZCXFx1MTM2MC1cXHUxMzY4XFx1MTQwMFxcdTE2NkRcXHUxNjZFXFx1MTY5QlxcdTE2OUNcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQkZDLVxcdTFCRkZcXHUxQzNCLVxcdTFDM0ZcXHUxQzdFXFx1MUM3RlxcdTFDQzAtXFx1MUNDN1xcdTFDRDNcXHUyMDEwLVxcdTIwMjdcXHUyMDMwLVxcdTIwNDNcXHUyMDQ1LVxcdTIwNTFcXHUyMDUzLVxcdTIwNUVcXHUyMDdEXFx1MjA3RVxcdTIwOERcXHUyMDhFXFx1MjMwOC1cXHUyMzBCXFx1MjMyOVxcdTIzMkFcXHUyNzY4LVxcdTI3NzVcXHUyN0M1XFx1MjdDNlxcdTI3RTYtXFx1MjdFRlxcdTI5ODMtXFx1Mjk5OFxcdTI5RDgtXFx1MjlEQlxcdTI5RkNcXHUyOUZEXFx1MkNGOS1cXHUyQ0ZDXFx1MkNGRVxcdTJDRkZcXHUyRDcwXFx1MkUwMC1cXHUyRTJFXFx1MkUzMC1cXHUyRTRFXFx1MzAwMS1cXHUzMDAzXFx1MzAwOC1cXHUzMDExXFx1MzAxNC1cXHUzMDFGXFx1MzAzMFxcdTMwM0RcXHUzMEEwXFx1MzBGQlxcdUE0RkVcXHVBNEZGXFx1QTYwRC1cXHVBNjBGXFx1QTY3M1xcdUE2N0VcXHVBNkYyLVxcdUE2RjdcXHVBODc0LVxcdUE4NzdcXHVBOENFXFx1QThDRlxcdUE4RjgtXFx1QThGQVxcdUE4RkNcXHVBOTJFXFx1QTkyRlxcdUE5NUZcXHVBOUMxLVxcdUE5Q0RcXHVBOURFXFx1QTlERlxcdUFBNUMtXFx1QUE1RlxcdUFBREVcXHVBQURGXFx1QUFGMFxcdUFBRjFcXHVBQkVCXFx1RkQzRVxcdUZEM0ZcXHVGRTEwLVxcdUZFMTlcXHVGRTMwLVxcdUZFNTJcXHVGRTU0LVxcdUZFNjFcXHVGRTYzXFx1RkU2OFxcdUZFNkFcXHVGRTZCXFx1RkYwMS1cXHVGRjAzXFx1RkYwNS1cXHVGRjBBXFx1RkYwQy1cXHVGRjBGXFx1RkYxQVxcdUZGMUJcXHVGRjFGXFx1RkYyMFxcdUZGM0ItXFx1RkYzRFxcdUZGM0ZcXHVGRjVCXFx1RkY1RFxcdUZGNUYtXFx1RkY2NV18XFx1RDgwMFtcXHVERDAwLVxcdUREMDJcXHVERjlGXFx1REZEMF18XFx1RDgwMVxcdURENkZ8XFx1RDgwMltcXHVEQzU3XFx1REQxRlxcdUREM0ZcXHVERTUwLVxcdURFNThcXHVERTdGXFx1REVGMC1cXHVERUY2XFx1REYzOS1cXHVERjNGXFx1REY5OS1cXHVERjlDXXxcXHVEODAzW1xcdURGNTUtXFx1REY1OV18XFx1RDgwNFtcXHVEQzQ3LVxcdURDNERcXHVEQ0JCXFx1RENCQ1xcdURDQkUtXFx1RENDMVxcdURENDAtXFx1REQ0M1xcdURENzRcXHVERDc1XFx1RERDNS1cXHVEREM4XFx1RERDRFxcdUREREJcXHVERERELVxcdUREREZcXHVERTM4LVxcdURFM0RcXHVERUE5XXxcXHVEODA1W1xcdURDNEItXFx1REM0RlxcdURDNUJcXHVEQzVEXFx1RENDNlxcdUREQzEtXFx1REREN1xcdURFNDEtXFx1REU0M1xcdURFNjAtXFx1REU2Q1xcdURGM0MtXFx1REYzRV18XFx1RDgwNltcXHVEQzNCXFx1REUzRi1cXHVERTQ2XFx1REU5QS1cXHVERTlDXFx1REU5RS1cXHVERUEyXXxcXHVEODA3W1xcdURDNDEtXFx1REM0NVxcdURDNzBcXHVEQzcxXFx1REVGN1xcdURFRjhdfFxcdUQ4MDlbXFx1REM3MC1cXHVEQzc0XXxcXHVEODFBW1xcdURFNkVcXHVERTZGXFx1REVGNVxcdURGMzctXFx1REYzQlxcdURGNDRdfFxcdUQ4MUJbXFx1REU5Ny1cXHVERTlBXXxcXHVEODJGXFx1REM5RnxcXHVEODM2W1xcdURFODctXFx1REU4Ql18XFx1RDgzQVtcXHVERDVFXFx1REQ1Rl0vO1xudmFyIG1kdXJsJDEgPSB7fTtcbnZhciBlbmNvZGVDYWNoZSA9IHt9O1xuZnVuY3Rpb24gZ2V0RW5jb2RlQ2FjaGUoZXhjbHVkZSkge1xuICB2YXIgaSwgY2gsIGNhY2hlID0gZW5jb2RlQ2FjaGVbZXhjbHVkZV07XG4gIGlmIChjYWNoZSkge1xuICAgIHJldHVybiBjYWNoZTtcbiAgfVxuICBjYWNoZSA9IGVuY29kZUNhY2hlW2V4Y2x1ZGVdID0gW107XG4gIGZvciAoaSA9IDA7IGkgPCAxMjg7IGkrKykge1xuICAgIGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShpKTtcbiAgICBpZiAoL15bMC05YS16XSQvaS50ZXN0KGNoKSkge1xuICAgICAgY2FjaGUucHVzaChjaCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlLnB1c2goXCIlXCIgKyAoXCIwXCIgKyBpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKS5zbGljZSgtMikpO1xuICAgIH1cbiAgfVxuICBmb3IgKGkgPSAwOyBpIDwgZXhjbHVkZS5sZW5ndGg7IGkrKykge1xuICAgIGNhY2hlW2V4Y2x1ZGUuY2hhckNvZGVBdChpKV0gPSBleGNsdWRlW2ldO1xuICB9XG4gIHJldHVybiBjYWNoZTtcbn1cbl9fbmFtZShnZXRFbmNvZGVDYWNoZSwgXCJnZXRFbmNvZGVDYWNoZVwiKTtcbmZ1bmN0aW9uIGVuY29kZSQxKHN0cmluZywgZXhjbHVkZSwga2VlcEVzY2FwZWQpIHtcbiAgdmFyIGksIGwsIGNvZGUzLCBuZXh0Q29kZSwgY2FjaGUsIHJlc3VsdCA9IFwiXCI7XG4gIGlmICh0eXBlb2YgZXhjbHVkZSAhPT0gXCJzdHJpbmdcIikge1xuICAgIGtlZXBFc2NhcGVkID0gZXhjbHVkZTtcbiAgICBleGNsdWRlID0gZW5jb2RlJDEuZGVmYXVsdENoYXJzO1xuICB9XG4gIGlmICh0eXBlb2Yga2VlcEVzY2FwZWQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBrZWVwRXNjYXBlZCA9IHRydWU7XG4gIH1cbiAgY2FjaGUgPSBnZXRFbmNvZGVDYWNoZShleGNsdWRlKTtcbiAgZm9yIChpID0gMCwgbCA9IHN0cmluZy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb2RlMyA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChrZWVwRXNjYXBlZCAmJiBjb2RlMyA9PT0gMzcgJiYgaSArIDIgPCBsKSB7XG4gICAgICBpZiAoL15bMC05YS1mXXsyfSQvaS50ZXN0KHN0cmluZy5zbGljZShpICsgMSwgaSArIDMpKSkge1xuICAgICAgICByZXN1bHQgKz0gc3RyaW5nLnNsaWNlKGksIGkgKyAzKTtcbiAgICAgICAgaSArPSAyO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvZGUzIDwgMTI4KSB7XG4gICAgICByZXN1bHQgKz0gY2FjaGVbY29kZTNdO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChjb2RlMyA+PSA1NTI5NiAmJiBjb2RlMyA8PSA1NzM0Mykge1xuICAgICAgaWYgKGNvZGUzID49IDU1Mjk2ICYmIGNvZGUzIDw9IDU2MzE5ICYmIGkgKyAxIDwgbCkge1xuICAgICAgICBuZXh0Q29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgICAgICAgaWYgKG5leHRDb2RlID49IDU2MzIwICYmIG5leHRDb2RlIDw9IDU3MzQzKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdbaV0gKyBzdHJpbmdbaSArIDFdKTtcbiAgICAgICAgICBpKys7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc3VsdCArPSBcIiVFRiVCRiVCRFwiO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHJlc3VsdCArPSBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nW2ldKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuX19uYW1lKGVuY29kZSQxLCBcImVuY29kZSQxXCIpO1xuZW5jb2RlJDEuZGVmYXVsdENoYXJzID0gXCI7Lz86QCY9KyQsLV8uIX4qJygpI1wiO1xuZW5jb2RlJDEuY29tcG9uZW50Q2hhcnMgPSBcIi1fLiF+KicoKVwiO1xudmFyIGVuY29kZV8xID0gZW5jb2RlJDE7XG52YXIgZGVjb2RlQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGdldERlY29kZUNhY2hlKGV4Y2x1ZGUpIHtcbiAgdmFyIGksIGNoLCBjYWNoZSA9IGRlY29kZUNhY2hlW2V4Y2x1ZGVdO1xuICBpZiAoY2FjaGUpIHtcbiAgICByZXR1cm4gY2FjaGU7XG4gIH1cbiAgY2FjaGUgPSBkZWNvZGVDYWNoZVtleGNsdWRlXSA9IFtdO1xuICBmb3IgKGkgPSAwOyBpIDwgMTI4OyBpKyspIHtcbiAgICBjaCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7XG4gICAgY2FjaGUucHVzaChjaCk7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IGV4Y2x1ZGUubGVuZ3RoOyBpKyspIHtcbiAgICBjaCA9IGV4Y2x1ZGUuY2hhckNvZGVBdChpKTtcbiAgICBjYWNoZVtjaF0gPSBcIiVcIiArIChcIjBcIiArIGNoLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKS5zbGljZSgtMik7XG4gIH1cbiAgcmV0dXJuIGNhY2hlO1xufVxuX19uYW1lKGdldERlY29kZUNhY2hlLCBcImdldERlY29kZUNhY2hlXCIpO1xuZnVuY3Rpb24gZGVjb2RlJDEoc3RyaW5nLCBleGNsdWRlKSB7XG4gIHZhciBjYWNoZTtcbiAgaWYgKHR5cGVvZiBleGNsdWRlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgZXhjbHVkZSA9IGRlY29kZSQxLmRlZmF1bHRDaGFycztcbiAgfVxuICBjYWNoZSA9IGdldERlY29kZUNhY2hlKGV4Y2x1ZGUpO1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLyglW2EtZjAtOV17Mn0pKy9naSwgZnVuY3Rpb24oc2VxKSB7XG4gICAgdmFyIGksIGwsIGIxLCBiMiwgYjMsIGI0LCBjaHIsIHJlc3VsdCA9IFwiXCI7XG4gICAgZm9yIChpID0gMCwgbCA9IHNlcS5sZW5ndGg7IGkgPCBsOyBpICs9IDMpIHtcbiAgICAgIGIxID0gcGFyc2VJbnQoc2VxLnNsaWNlKGkgKyAxLCBpICsgMyksIDE2KTtcbiAgICAgIGlmIChiMSA8IDEyOCkge1xuICAgICAgICByZXN1bHQgKz0gY2FjaGVbYjFdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgoYjEgJiAyMjQpID09PSAxOTIgJiYgaSArIDMgPCBsKSB7XG4gICAgICAgIGIyID0gcGFyc2VJbnQoc2VxLnNsaWNlKGkgKyA0LCBpICsgNiksIDE2KTtcbiAgICAgICAgaWYgKChiMiAmIDE5MikgPT09IDEyOCkge1xuICAgICAgICAgIGNociA9IGIxIDw8IDYgJiAxOTg0IHwgYjIgJiA2MztcbiAgICAgICAgICBpZiAoY2hyIDwgMTI4KSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gXCJcXHVGRkZEXFx1RkZGRFwiO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpICs9IDM7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICgoYjEgJiAyNDApID09PSAyMjQgJiYgaSArIDYgPCBsKSB7XG4gICAgICAgIGIyID0gcGFyc2VJbnQoc2VxLnNsaWNlKGkgKyA0LCBpICsgNiksIDE2KTtcbiAgICAgICAgYjMgPSBwYXJzZUludChzZXEuc2xpY2UoaSArIDcsIGkgKyA5KSwgMTYpO1xuICAgICAgICBpZiAoKGIyICYgMTkyKSA9PT0gMTI4ICYmIChiMyAmIDE5MikgPT09IDEyOCkge1xuICAgICAgICAgIGNociA9IGIxIDw8IDEyICYgNjE0NDAgfCBiMiA8PCA2ICYgNDAzMiB8IGIzICYgNjM7XG4gICAgICAgICAgaWYgKGNociA8IDIwNDggfHwgY2hyID49IDU1Mjk2ICYmIGNociA8PSA1NzM0Mykge1xuICAgICAgICAgICAgcmVzdWx0ICs9IFwiXFx1RkZGRFxcdUZGRkRcXHVGRkZEXCI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGkgKz0gNjtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKChiMSAmIDI0OCkgPT09IDI0MCAmJiBpICsgOSA8IGwpIHtcbiAgICAgICAgYjIgPSBwYXJzZUludChzZXEuc2xpY2UoaSArIDQsIGkgKyA2KSwgMTYpO1xuICAgICAgICBiMyA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgNywgaSArIDkpLCAxNik7XG4gICAgICAgIGI0ID0gcGFyc2VJbnQoc2VxLnNsaWNlKGkgKyAxMCwgaSArIDEyKSwgMTYpO1xuICAgICAgICBpZiAoKGIyICYgMTkyKSA9PT0gMTI4ICYmIChiMyAmIDE5MikgPT09IDEyOCAmJiAoYjQgJiAxOTIpID09PSAxMjgpIHtcbiAgICAgICAgICBjaHIgPSBiMSA8PCAxOCAmIDE4MzUwMDggfCBiMiA8PCAxMiAmIDI1ODA0OCB8IGIzIDw8IDYgJiA0MDMyIHwgYjQgJiA2MztcbiAgICAgICAgICBpZiAoY2hyIDwgNjU1MzYgfHwgY2hyID4gMTExNDExMSkge1xuICAgICAgICAgICAgcmVzdWx0ICs9IFwiXFx1RkZGRFxcdUZGRkRcXHVGRkZEXFx1RkZGRFwiO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaHIgLT0gNjU1MzY7XG4gICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NiArIChjaHIgPj4gMTApLCA1NjMyMCArIChjaHIgJiAxMDIzKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGkgKz0gOTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzdWx0ICs9IFwiXFx1RkZGRFwiO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cbl9fbmFtZShkZWNvZGUkMSwgXCJkZWNvZGUkMVwiKTtcbmRlY29kZSQxLmRlZmF1bHRDaGFycyA9IFwiOy8/OkAmPSskLCNcIjtcbmRlY29kZSQxLmNvbXBvbmVudENoYXJzID0gXCJcIjtcbnZhciBkZWNvZGVfMSA9IGRlY29kZSQxO1xudmFyIGZvcm1hdCQxID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBmb3JtYXQodXJsKSB7XG4gIHZhciByZXN1bHQgPSBcIlwiO1xuICByZXN1bHQgKz0gdXJsLnByb3RvY29sIHx8IFwiXCI7XG4gIHJlc3VsdCArPSB1cmwuc2xhc2hlcyA/IFwiLy9cIiA6IFwiXCI7XG4gIHJlc3VsdCArPSB1cmwuYXV0aCA/IHVybC5hdXRoICsgXCJAXCIgOiBcIlwiO1xuICBpZiAodXJsLmhvc3RuYW1lICYmIHVybC5ob3N0bmFtZS5pbmRleE9mKFwiOlwiKSAhPT0gLTEpIHtcbiAgICByZXN1bHQgKz0gXCJbXCIgKyB1cmwuaG9zdG5hbWUgKyBcIl1cIjtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgKz0gdXJsLmhvc3RuYW1lIHx8IFwiXCI7XG4gIH1cbiAgcmVzdWx0ICs9IHVybC5wb3J0ID8gXCI6XCIgKyB1cmwucG9ydCA6IFwiXCI7XG4gIHJlc3VsdCArPSB1cmwucGF0aG5hbWUgfHwgXCJcIjtcbiAgcmVzdWx0ICs9IHVybC5zZWFyY2ggfHwgXCJcIjtcbiAgcmVzdWx0ICs9IHVybC5oYXNoIHx8IFwiXCI7XG4gIHJldHVybiByZXN1bHQ7XG59LCBcImZvcm1hdFwiKTtcbmZ1bmN0aW9uIFVybCgpIHtcbiAgdGhpcy5wcm90b2NvbCA9IG51bGw7XG4gIHRoaXMuc2xhc2hlcyA9IG51bGw7XG4gIHRoaXMuYXV0aCA9IG51bGw7XG4gIHRoaXMucG9ydCA9IG51bGw7XG4gIHRoaXMuaG9zdG5hbWUgPSBudWxsO1xuICB0aGlzLmhhc2ggPSBudWxsO1xuICB0aGlzLnNlYXJjaCA9IG51bGw7XG4gIHRoaXMucGF0aG5hbWUgPSBudWxsO1xufVxuX19uYW1lKFVybCwgXCJVcmxcIik7XG52YXIgcHJvdG9jb2xQYXR0ZXJuID0gL14oW2EtejAtOS4rLV0rOikvaSwgcG9ydFBhdHRlcm4gPSAvOlswLTldKiQvLCBzaW1wbGVQYXRoUGF0dGVybiA9IC9eKFxcL1xcLz8oPyFcXC8pW15cXD9cXHNdKikoXFw/W15cXHNdKik/JC8sIGRlbGltcyA9IFtcIjxcIiwgXCI+XCIsICdcIicsIFwiYFwiLCBcIiBcIiwgXCJcXHJcIiwgXCJcXG5cIiwgXCJcdFwiXSwgdW53aXNlID0gW1wie1wiLCBcIn1cIiwgXCJ8XCIsIFwiXFxcXFwiLCBcIl5cIiwgXCJgXCJdLmNvbmNhdChkZWxpbXMpLCBhdXRvRXNjYXBlID0gW1wiJ1wiXS5jb25jYXQodW53aXNlKSwgbm9uSG9zdENoYXJzID0gW1wiJVwiLCBcIi9cIiwgXCI/XCIsIFwiO1wiLCBcIiNcIl0uY29uY2F0KGF1dG9Fc2NhcGUpLCBob3N0RW5kaW5nQ2hhcnMgPSBbXCIvXCIsIFwiP1wiLCBcIiNcIl0sIGhvc3RuYW1lTWF4TGVuID0gMjU1LCBob3N0bmFtZVBhcnRQYXR0ZXJuID0gL15bK2EtejAtOUEtWl8tXXswLDYzfSQvLCBob3N0bmFtZVBhcnRTdGFydCA9IC9eKFsrYS16MC05QS1aXy1dezAsNjN9KSguKikkLywgaG9zdGxlc3NQcm90b2NvbCA9IHtcbiAgXCJqYXZhc2NyaXB0XCI6IHRydWUsXG4gIFwiamF2YXNjcmlwdDpcIjogdHJ1ZVxufSwgc2xhc2hlZFByb3RvY29sID0ge1xuICBcImh0dHBcIjogdHJ1ZSxcbiAgXCJodHRwc1wiOiB0cnVlLFxuICBcImZ0cFwiOiB0cnVlLFxuICBcImdvcGhlclwiOiB0cnVlLFxuICBcImZpbGVcIjogdHJ1ZSxcbiAgXCJodHRwOlwiOiB0cnVlLFxuICBcImh0dHBzOlwiOiB0cnVlLFxuICBcImZ0cDpcIjogdHJ1ZSxcbiAgXCJnb3BoZXI6XCI6IHRydWUsXG4gIFwiZmlsZTpcIjogdHJ1ZVxufTtcbmZ1bmN0aW9uIHVybFBhcnNlKHVybCwgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgaWYgKHVybCAmJiB1cmwgaW5zdGFuY2VvZiBVcmwpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG4gIHZhciB1ID0gbmV3IFVybCgpO1xuICB1LnBhcnNlKHVybCwgc2xhc2hlc0Rlbm90ZUhvc3QpO1xuICByZXR1cm4gdTtcbn1cbl9fbmFtZSh1cmxQYXJzZSwgXCJ1cmxQYXJzZVwiKTtcblVybC5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbih1cmwsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIHZhciBpLCBsLCBsb3dlclByb3RvLCBoZWMsIHNsYXNoZXMsIHJlc3QgPSB1cmw7XG4gIHJlc3QgPSByZXN0LnRyaW0oKTtcbiAgaWYgKCFzbGFzaGVzRGVub3RlSG9zdCAmJiB1cmwuc3BsaXQoXCIjXCIpLmxlbmd0aCA9PT0gMSkge1xuICAgIHZhciBzaW1wbGVQYXRoID0gc2ltcGxlUGF0aFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgICBpZiAoc2ltcGxlUGF0aCkge1xuICAgICAgdGhpcy5wYXRobmFtZSA9IHNpbXBsZVBhdGhbMV07XG4gICAgICBpZiAoc2ltcGxlUGF0aFsyXSkge1xuICAgICAgICB0aGlzLnNlYXJjaCA9IHNpbXBsZVBhdGhbMl07XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cbiAgdmFyIHByb3RvID0gcHJvdG9jb2xQYXR0ZXJuLmV4ZWMocmVzdCk7XG4gIGlmIChwcm90bykge1xuICAgIHByb3RvID0gcHJvdG9bMF07XG4gICAgbG93ZXJQcm90byA9IHByb3RvLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5wcm90b2NvbCA9IHByb3RvO1xuICAgIHJlc3QgPSByZXN0LnN1YnN0cihwcm90by5sZW5ndGgpO1xuICB9XG4gIGlmIChzbGFzaGVzRGVub3RlSG9zdCB8fCBwcm90byB8fCByZXN0Lm1hdGNoKC9eXFwvXFwvW15AXFwvXStAW15AXFwvXSsvKSkge1xuICAgIHNsYXNoZXMgPSByZXN0LnN1YnN0cigwLCAyKSA9PT0gXCIvL1wiO1xuICAgIGlmIChzbGFzaGVzICYmICEocHJvdG8gJiYgaG9zdGxlc3NQcm90b2NvbFtwcm90b10pKSB7XG4gICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMik7XG4gICAgICB0aGlzLnNsYXNoZXMgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBpZiAoIWhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dICYmIChzbGFzaGVzIHx8IHByb3RvICYmICFzbGFzaGVkUHJvdG9jb2xbcHJvdG9dKSkge1xuICAgIHZhciBob3N0RW5kID0gLTE7XG4gICAgZm9yIChpID0gMDsgaSA8IGhvc3RFbmRpbmdDaGFycy5sZW5ndGg7IGkrKykge1xuICAgICAgaGVjID0gcmVzdC5pbmRleE9mKGhvc3RFbmRpbmdDaGFyc1tpXSk7XG4gICAgICBpZiAoaGVjICE9PSAtMSAmJiAoaG9zdEVuZCA9PT0gLTEgfHwgaGVjIDwgaG9zdEVuZCkpIHtcbiAgICAgICAgaG9zdEVuZCA9IGhlYztcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGF1dGgsIGF0U2lnbjtcbiAgICBpZiAoaG9zdEVuZCA9PT0gLTEpIHtcbiAgICAgIGF0U2lnbiA9IHJlc3QubGFzdEluZGV4T2YoXCJAXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhdFNpZ24gPSByZXN0Lmxhc3RJbmRleE9mKFwiQFwiLCBob3N0RW5kKTtcbiAgICB9XG4gICAgaWYgKGF0U2lnbiAhPT0gLTEpIHtcbiAgICAgIGF1dGggPSByZXN0LnNsaWNlKDAsIGF0U2lnbik7XG4gICAgICByZXN0ID0gcmVzdC5zbGljZShhdFNpZ24gKyAxKTtcbiAgICAgIHRoaXMuYXV0aCA9IGF1dGg7XG4gICAgfVxuICAgIGhvc3RFbmQgPSAtMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbm9uSG9zdENoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoZWMgPSByZXN0LmluZGV4T2Yobm9uSG9zdENoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSkge1xuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaG9zdEVuZCA9PT0gLTEpIHtcbiAgICAgIGhvc3RFbmQgPSByZXN0Lmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKHJlc3RbaG9zdEVuZCAtIDFdID09PSBcIjpcIikge1xuICAgICAgaG9zdEVuZC0tO1xuICAgIH1cbiAgICB2YXIgaG9zdCA9IHJlc3Quc2xpY2UoMCwgaG9zdEVuZCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoaG9zdEVuZCk7XG4gICAgdGhpcy5wYXJzZUhvc3QoaG9zdCk7XG4gICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUgfHwgXCJcIjtcbiAgICB2YXIgaXB2Nkhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZVswXSA9PT0gXCJbXCIgJiYgdGhpcy5ob3N0bmFtZVt0aGlzLmhvc3RuYW1lLmxlbmd0aCAtIDFdID09PSBcIl1cIjtcbiAgICBpZiAoIWlwdjZIb3N0bmFtZSkge1xuICAgICAgdmFyIGhvc3RwYXJ0cyA9IHRoaXMuaG9zdG5hbWUuc3BsaXQoL1xcLi8pO1xuICAgICAgZm9yIChpID0gMCwgbCA9IGhvc3RwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdmFyIHBhcnQyID0gaG9zdHBhcnRzW2ldO1xuICAgICAgICBpZiAoIXBhcnQyKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXJ0Mi5tYXRjaChob3N0bmFtZVBhcnRQYXR0ZXJuKSkge1xuICAgICAgICAgIHZhciBuZXdwYXJ0ID0gXCJcIjtcbiAgICAgICAgICBmb3IgKHZhciBqID0gMCwgayA9IHBhcnQyLmxlbmd0aDsgaiA8IGs7IGorKykge1xuICAgICAgICAgICAgaWYgKHBhcnQyLmNoYXJDb2RlQXQoaikgPiAxMjcpIHtcbiAgICAgICAgICAgICAgbmV3cGFydCArPSBcInhcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5ld3BhcnQgKz0gcGFydDJbal07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghbmV3cGFydC5tYXRjaChob3N0bmFtZVBhcnRQYXR0ZXJuKSkge1xuICAgICAgICAgICAgdmFyIHZhbGlkUGFydHMgPSBob3N0cGFydHMuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICB2YXIgbm90SG9zdCA9IGhvc3RwYXJ0cy5zbGljZShpICsgMSk7XG4gICAgICAgICAgICB2YXIgYml0ID0gcGFydDIubWF0Y2goaG9zdG5hbWVQYXJ0U3RhcnQpO1xuICAgICAgICAgICAgaWYgKGJpdCkge1xuICAgICAgICAgICAgICB2YWxpZFBhcnRzLnB1c2goYml0WzFdKTtcbiAgICAgICAgICAgICAgbm90SG9zdC51bnNoaWZ0KGJpdFsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm90SG9zdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmVzdCA9IG5vdEhvc3Quam9pbihcIi5cIikgKyByZXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ob3N0bmFtZSA9IHZhbGlkUGFydHMuam9pbihcIi5cIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuaG9zdG5hbWUubGVuZ3RoID4gaG9zdG5hbWVNYXhMZW4pIHtcbiAgICAgIHRoaXMuaG9zdG5hbWUgPSBcIlwiO1xuICAgIH1cbiAgICBpZiAoaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB0aGlzLmhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZS5zdWJzdHIoMSwgdGhpcy5ob3N0bmFtZS5sZW5ndGggLSAyKTtcbiAgICB9XG4gIH1cbiAgdmFyIGhhc2ggPSByZXN0LmluZGV4T2YoXCIjXCIpO1xuICBpZiAoaGFzaCAhPT0gLTEpIHtcbiAgICB0aGlzLmhhc2ggPSByZXN0LnN1YnN0cihoYXNoKTtcbiAgICByZXN0ID0gcmVzdC5zbGljZSgwLCBoYXNoKTtcbiAgfVxuICB2YXIgcW0gPSByZXN0LmluZGV4T2YoXCI/XCIpO1xuICBpZiAocW0gIT09IC0xKSB7XG4gICAgdGhpcy5zZWFyY2ggPSByZXN0LnN1YnN0cihxbSk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgcW0pO1xuICB9XG4gIGlmIChyZXN0KSB7XG4gICAgdGhpcy5wYXRobmFtZSA9IHJlc3Q7XG4gIH1cbiAgaWYgKHNsYXNoZWRQcm90b2NvbFtsb3dlclByb3RvXSAmJiB0aGlzLmhvc3RuYW1lICYmICF0aGlzLnBhdGhuYW1lKSB7XG4gICAgdGhpcy5wYXRobmFtZSA9IFwiXCI7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuVXJsLnByb3RvdHlwZS5wYXJzZUhvc3QgPSBmdW5jdGlvbihob3N0KSB7XG4gIHZhciBwb3J0ID0gcG9ydFBhdHRlcm4uZXhlYyhob3N0KTtcbiAgaWYgKHBvcnQpIHtcbiAgICBwb3J0ID0gcG9ydFswXTtcbiAgICBpZiAocG9ydCAhPT0gXCI6XCIpIHtcbiAgICAgIHRoaXMucG9ydCA9IHBvcnQuc3Vic3RyKDEpO1xuICAgIH1cbiAgICBob3N0ID0gaG9zdC5zdWJzdHIoMCwgaG9zdC5sZW5ndGggLSBwb3J0Lmxlbmd0aCk7XG4gIH1cbiAgaWYgKGhvc3QpIHtcbiAgICB0aGlzLmhvc3RuYW1lID0gaG9zdDtcbiAgfVxufTtcbnZhciBwYXJzZSA9IHVybFBhcnNlO1xubWR1cmwkMS5lbmNvZGUgPSBlbmNvZGVfMTtcbm1kdXJsJDEuZGVjb2RlID0gZGVjb2RlXzE7XG5tZHVybCQxLmZvcm1hdCA9IGZvcm1hdCQxO1xubWR1cmwkMS5wYXJzZSA9IHBhcnNlO1xudmFyIHVjX21pY3JvID0ge307XG52YXIgcmVnZXgkMyA9IC9bXFwwLVxcdUQ3RkZcXHVFMDAwLVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0vO1xudmFyIHJlZ2V4JDIgPSAvW1xcMC1cXHgxRlxceDdGLVxceDlGXS87XG52YXIgcmVnZXgkMSA9IC9bXFx4QURcXHUwNjAwLVxcdTA2MDVcXHUwNjFDXFx1MDZERFxcdTA3MEZcXHUwOEUyXFx1MTgwRVxcdTIwMEItXFx1MjAwRlxcdTIwMkEtXFx1MjAyRVxcdTIwNjAtXFx1MjA2NFxcdTIwNjYtXFx1MjA2RlxcdUZFRkZcXHVGRkY5LVxcdUZGRkJdfFxcdUQ4MDRbXFx1RENCRFxcdURDQ0RdfFxcdUQ4MkZbXFx1RENBMC1cXHVEQ0EzXXxcXHVEODM0W1xcdURENzMtXFx1REQ3QV18XFx1REI0MFtcXHVEQzAxXFx1REMyMC1cXHVEQzdGXS87XG52YXIgcmVnZXggPSAvWyBcXHhBMFxcdTE2ODBcXHUyMDAwLVxcdTIwMEFcXHUyMDI4XFx1MjAyOVxcdTIwMkZcXHUyMDVGXFx1MzAwMF0vO1xudWNfbWljcm8uQW55ID0gcmVnZXgkMztcbnVjX21pY3JvLkNjID0gcmVnZXgkMjtcbnVjX21pY3JvLkNmID0gcmVnZXgkMTtcbnVjX21pY3JvLlAgPSByZWdleCQ0O1xudWNfbWljcm8uWiA9IHJlZ2V4O1xuKGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiAgZnVuY3Rpb24gX2NsYXNzMihvYmopIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaik7XG4gIH1cbiAgX19uYW1lKF9jbGFzczIsIFwiX2NsYXNzXCIpO1xuICBmdW5jdGlvbiBpc1N0cmluZzIob2JqKSB7XG4gICAgcmV0dXJuIF9jbGFzczIob2JqKSA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIjtcbiAgfVxuICBfX25hbWUoaXNTdHJpbmcyLCBcImlzU3RyaW5nXCIpO1xuICB2YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbiAgZnVuY3Rpb24gaGFzMihvYmplY3QsIGtleSkge1xuICAgIHJldHVybiBfaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG4gIH1cbiAgX19uYW1lKGhhczIsIFwiaGFzXCIpO1xuICBmdW5jdGlvbiBhc3NpZ24yKG9iaikge1xuICAgIHZhciBzb3VyY2VzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICBzb3VyY2VzLmZvckVhY2goZnVuY3Rpb24oc291cmNlKSB7XG4gICAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHNvdXJjZSArIFwibXVzdCBiZSBvYmplY3RcIik7XG4gICAgICB9XG4gICAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIG9ialtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG4gIF9fbmFtZShhc3NpZ24yLCBcImFzc2lnblwiKTtcbiAgZnVuY3Rpb24gYXJyYXlSZXBsYWNlQXQyKHNyYywgcG9zLCBuZXdFbGVtZW50cykge1xuICAgIHJldHVybiBbXS5jb25jYXQoc3JjLnNsaWNlKDAsIHBvcyksIG5ld0VsZW1lbnRzLCBzcmMuc2xpY2UocG9zICsgMSkpO1xuICB9XG4gIF9fbmFtZShhcnJheVJlcGxhY2VBdDIsIFwiYXJyYXlSZXBsYWNlQXRcIik7XG4gIGZ1bmN0aW9uIGlzVmFsaWRFbnRpdHlDb2RlMihjKSB7XG4gICAgaWYgKGMgPj0gNTUyOTYgJiYgYyA8PSA1NzM0Mykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYyA+PSA2NDk3NiAmJiBjIDw9IDY1MDA3KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICgoYyAmIDY1NTM1KSA9PT0gNjU1MzUgfHwgKGMgJiA2NTUzNSkgPT09IDY1NTM0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChjID49IDAgJiYgYyA8PSA4KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChjID09PSAxMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYyA+PSAxNCAmJiBjIDw9IDMxKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChjID49IDEyNyAmJiBjIDw9IDE1OSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYyA+IDExMTQxMTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgX19uYW1lKGlzVmFsaWRFbnRpdHlDb2RlMiwgXCJpc1ZhbGlkRW50aXR5Q29kZVwiKTtcbiAgZnVuY3Rpb24gZnJvbUNvZGVQb2ludDIoYykge1xuICAgIGlmIChjID4gNjU1MzUpIHtcbiAgICAgIGMgLT0gNjU1MzY7XG4gICAgICB2YXIgc3Vycm9nYXRlMSA9IDU1Mjk2ICsgKGMgPj4gMTApLCBzdXJyb2dhdGUyID0gNTYzMjAgKyAoYyAmIDEwMjMpO1xuICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoc3Vycm9nYXRlMSwgc3Vycm9nYXRlMik7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICB9XG4gIF9fbmFtZShmcm9tQ29kZVBvaW50MiwgXCJmcm9tQ29kZVBvaW50XCIpO1xuICB2YXIgVU5FU0NBUEVfTURfUkUgPSAvXFxcXChbIVwiIyQlJicoKSorLFxcLS5cXC86Ozw9Pj9AW1xcXFxcXF1eX2B7fH1+XSkvZztcbiAgdmFyIEVOVElUWV9SRSA9IC8mKFthLXojXVthLXowLTldezEsMzF9KTsvZ2k7XG4gIHZhciBVTkVTQ0FQRV9BTExfUkUgPSBuZXcgUmVnRXhwKFVORVNDQVBFX01EX1JFLnNvdXJjZSArIFwifFwiICsgRU5USVRZX1JFLnNvdXJjZSwgXCJnaVwiKTtcbiAgdmFyIERJR0lUQUxfRU5USVRZX1RFU1RfUkUgPSAvXiMoKD86eFthLWYwLTldezEsOH18WzAtOV17MSw4fSkpL2k7XG4gIHZhciBlbnRpdGllczIgPSBlbnRpdGllcyQxO1xuICBmdW5jdGlvbiByZXBsYWNlRW50aXR5UGF0dGVybihtYXRjaDIsIG5hbWUyKSB7XG4gICAgdmFyIGNvZGUzID0gMDtcbiAgICBpZiAoaGFzMihlbnRpdGllczIsIG5hbWUyKSkge1xuICAgICAgcmV0dXJuIGVudGl0aWVzMltuYW1lMl07XG4gICAgfVxuICAgIGlmIChuYW1lMi5jaGFyQ29kZUF0KDApID09PSAzNSAmJiBESUdJVEFMX0VOVElUWV9URVNUX1JFLnRlc3QobmFtZTIpKSB7XG4gICAgICBjb2RlMyA9IG5hbWUyWzFdLnRvTG93ZXJDYXNlKCkgPT09IFwieFwiID8gcGFyc2VJbnQobmFtZTIuc2xpY2UoMiksIDE2KSA6IHBhcnNlSW50KG5hbWUyLnNsaWNlKDEpLCAxMCk7XG4gICAgICBpZiAoaXNWYWxpZEVudGl0eUNvZGUyKGNvZGUzKSkge1xuICAgICAgICByZXR1cm4gZnJvbUNvZGVQb2ludDIoY29kZTMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0Y2gyO1xuICB9XG4gIF9fbmFtZShyZXBsYWNlRW50aXR5UGF0dGVybiwgXCJyZXBsYWNlRW50aXR5UGF0dGVyblwiKTtcbiAgZnVuY3Rpb24gdW5lc2NhcGVNZChzdHIpIHtcbiAgICBpZiAoc3RyLmluZGV4T2YoXCJcXFxcXCIpIDwgMCkge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKFVORVNDQVBFX01EX1JFLCBcIiQxXCIpO1xuICB9XG4gIF9fbmFtZSh1bmVzY2FwZU1kLCBcInVuZXNjYXBlTWRcIik7XG4gIGZ1bmN0aW9uIHVuZXNjYXBlQWxsMihzdHIpIHtcbiAgICBpZiAoc3RyLmluZGV4T2YoXCJcXFxcXCIpIDwgMCAmJiBzdHIuaW5kZXhPZihcIiZcIikgPCAwKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoVU5FU0NBUEVfQUxMX1JFLCBmdW5jdGlvbihtYXRjaDIsIGVzY2FwZWQsIGVudGl0eTMpIHtcbiAgICAgIGlmIChlc2NhcGVkKSB7XG4gICAgICAgIHJldHVybiBlc2NhcGVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcGxhY2VFbnRpdHlQYXR0ZXJuKG1hdGNoMiwgZW50aXR5Myk7XG4gICAgfSk7XG4gIH1cbiAgX19uYW1lKHVuZXNjYXBlQWxsMiwgXCJ1bmVzY2FwZUFsbFwiKTtcbiAgdmFyIEhUTUxfRVNDQVBFX1RFU1RfUkUgPSAvWyY8PlwiXS87XG4gIHZhciBIVE1MX0VTQ0FQRV9SRVBMQUNFX1JFID0gL1smPD5cIl0vZztcbiAgdmFyIEhUTUxfUkVQTEFDRU1FTlRTID0ge1xuICAgIFwiJlwiOiBcIiZhbXA7XCIsXG4gICAgXCI8XCI6IFwiJmx0O1wiLFxuICAgIFwiPlwiOiBcIiZndDtcIixcbiAgICAnXCInOiBcIiZxdW90O1wiXG4gIH07XG4gIGZ1bmN0aW9uIHJlcGxhY2VVbnNhZmVDaGFyKGNoKSB7XG4gICAgcmV0dXJuIEhUTUxfUkVQTEFDRU1FTlRTW2NoXTtcbiAgfVxuICBfX25hbWUocmVwbGFjZVVuc2FmZUNoYXIsIFwicmVwbGFjZVVuc2FmZUNoYXJcIik7XG4gIGZ1bmN0aW9uIGVzY2FwZUh0bWwyKHN0cikge1xuICAgIGlmIChIVE1MX0VTQ0FQRV9URVNUX1JFLnRlc3Qoc3RyKSkge1xuICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKEhUTUxfRVNDQVBFX1JFUExBQ0VfUkUsIHJlcGxhY2VVbnNhZmVDaGFyKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBfX25hbWUoZXNjYXBlSHRtbDIsIFwiZXNjYXBlSHRtbFwiKTtcbiAgdmFyIFJFR0VYUF9FU0NBUEVfUkUgPSAvWy4/KiteJFtcXF1cXFxcKCl7fXwtXS9nO1xuICBmdW5jdGlvbiBlc2NhcGVSRTIoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKFJFR0VYUF9FU0NBUEVfUkUsIFwiXFxcXCQmXCIpO1xuICB9XG4gIF9fbmFtZShlc2NhcGVSRTIsIFwiZXNjYXBlUkVcIik7XG4gIGZ1bmN0aW9uIGlzU3BhY2UyKGNvZGUzKSB7XG4gICAgc3dpdGNoIChjb2RlMykge1xuICAgICAgY2FzZSA5OlxuICAgICAgY2FzZSAzMjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBfX25hbWUoaXNTcGFjZTIsIFwiaXNTcGFjZVwiKTtcbiAgZnVuY3Rpb24gaXNXaGl0ZVNwYWNlMihjb2RlMykge1xuICAgIGlmIChjb2RlMyA+PSA4MTkyICYmIGNvZGUzIDw9IDgyMDIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBzd2l0Y2ggKGNvZGUzKSB7XG4gICAgICBjYXNlIDk6XG4gICAgICBjYXNlIDEwOlxuICAgICAgY2FzZSAxMTpcbiAgICAgIGNhc2UgMTI6XG4gICAgICBjYXNlIDEzOlxuICAgICAgY2FzZSAzMjpcbiAgICAgIGNhc2UgMTYwOlxuICAgICAgY2FzZSA1NzYwOlxuICAgICAgY2FzZSA4MjM5OlxuICAgICAgY2FzZSA4Mjg3OlxuICAgICAgY2FzZSAxMjI4ODpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBfX25hbWUoaXNXaGl0ZVNwYWNlMiwgXCJpc1doaXRlU3BhY2VcIik7XG4gIHZhciBVTklDT0RFX1BVTkNUX1JFID0gcmVnZXgkNDtcbiAgZnVuY3Rpb24gaXNQdW5jdENoYXIyKGNoKSB7XG4gICAgcmV0dXJuIFVOSUNPREVfUFVOQ1RfUkUudGVzdChjaCk7XG4gIH1cbiAgX19uYW1lKGlzUHVuY3RDaGFyMiwgXCJpc1B1bmN0Q2hhclwiKTtcbiAgZnVuY3Rpb24gaXNNZEFzY2lpUHVuY3QyKGNoKSB7XG4gICAgc3dpdGNoIChjaCkge1xuICAgICAgY2FzZSAzMzpcbiAgICAgIGNhc2UgMzQ6XG4gICAgICBjYXNlIDM1OlxuICAgICAgY2FzZSAzNjpcbiAgICAgIGNhc2UgMzc6XG4gICAgICBjYXNlIDM4OlxuICAgICAgY2FzZSAzOTpcbiAgICAgIGNhc2UgNDA6XG4gICAgICBjYXNlIDQxOlxuICAgICAgY2FzZSA0MjpcbiAgICAgIGNhc2UgNDM6XG4gICAgICBjYXNlIDQ0OlxuICAgICAgY2FzZSA0NTpcbiAgICAgIGNhc2UgNDY6XG4gICAgICBjYXNlIDQ3OlxuICAgICAgY2FzZSA1ODpcbiAgICAgIGNhc2UgNTk6XG4gICAgICBjYXNlIDYwOlxuICAgICAgY2FzZSA2MTpcbiAgICAgIGNhc2UgNjI6XG4gICAgICBjYXNlIDYzOlxuICAgICAgY2FzZSA2NDpcbiAgICAgIGNhc2UgOTE6XG4gICAgICBjYXNlIDkyOlxuICAgICAgY2FzZSA5MzpcbiAgICAgIGNhc2UgOTQ6XG4gICAgICBjYXNlIDk1OlxuICAgICAgY2FzZSA5NjpcbiAgICAgIGNhc2UgMTIzOlxuICAgICAgY2FzZSAxMjQ6XG4gICAgICBjYXNlIDEyNTpcbiAgICAgIGNhc2UgMTI2OlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgX19uYW1lKGlzTWRBc2NpaVB1bmN0MiwgXCJpc01kQXNjaWlQdW5jdFwiKTtcbiAgZnVuY3Rpb24gbm9ybWFsaXplUmVmZXJlbmNlMihzdHIpIHtcbiAgICBzdHIgPSBzdHIudHJpbSgpLnJlcGxhY2UoL1xccysvZywgXCIgXCIpO1xuICAgIGlmIChcIlxcdTFFOUVcIi50b0xvd2VyQ2FzZSgpID09PSBcIlxcdTFFN0VcIikge1xuICAgICAgc3RyID0gc3RyLnJlcGxhY2UoL+G6ni9nLCBcIlxceERGXCIpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyLnRvTG93ZXJDYXNlKCkudG9VcHBlckNhc2UoKTtcbiAgfVxuICBfX25hbWUobm9ybWFsaXplUmVmZXJlbmNlMiwgXCJub3JtYWxpemVSZWZlcmVuY2VcIik7XG4gIGV4cG9ydHMubGliID0ge307XG4gIGV4cG9ydHMubGliLm1kdXJsID0gbWR1cmwkMTtcbiAgZXhwb3J0cy5saWIudWNtaWNybyA9IHVjX21pY3JvO1xuICBleHBvcnRzLmFzc2lnbiA9IGFzc2lnbjI7XG4gIGV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZzI7XG4gIGV4cG9ydHMuaGFzID0gaGFzMjtcbiAgZXhwb3J0cy51bmVzY2FwZU1kID0gdW5lc2NhcGVNZDtcbiAgZXhwb3J0cy51bmVzY2FwZUFsbCA9IHVuZXNjYXBlQWxsMjtcbiAgZXhwb3J0cy5pc1ZhbGlkRW50aXR5Q29kZSA9IGlzVmFsaWRFbnRpdHlDb2RlMjtcbiAgZXhwb3J0cy5mcm9tQ29kZVBvaW50ID0gZnJvbUNvZGVQb2ludDI7XG4gIGV4cG9ydHMuZXNjYXBlSHRtbCA9IGVzY2FwZUh0bWwyO1xuICBleHBvcnRzLmFycmF5UmVwbGFjZUF0ID0gYXJyYXlSZXBsYWNlQXQyO1xuICBleHBvcnRzLmlzU3BhY2UgPSBpc1NwYWNlMjtcbiAgZXhwb3J0cy5pc1doaXRlU3BhY2UgPSBpc1doaXRlU3BhY2UyO1xuICBleHBvcnRzLmlzTWRBc2NpaVB1bmN0ID0gaXNNZEFzY2lpUHVuY3QyO1xuICBleHBvcnRzLmlzUHVuY3RDaGFyID0gaXNQdW5jdENoYXIyO1xuICBleHBvcnRzLmVzY2FwZVJFID0gZXNjYXBlUkUyO1xuICBleHBvcnRzLm5vcm1hbGl6ZVJlZmVyZW5jZSA9IG5vcm1hbGl6ZVJlZmVyZW5jZTI7XG59KSh1dGlscyQxKTtcbnZhciBoZWxwZXJzJDEgPSB7fTtcbnZhciBwYXJzZV9saW5rX2xhYmVsID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBwYXJzZUxpbmtMYWJlbChzdGF0ZSwgc3RhcnQsIGRpc2FibGVOZXN0ZWQpIHtcbiAgdmFyIGxldmVsLCBmb3VuZCwgbWFya2VyMiwgcHJldlBvcywgbGFiZWxFbmQgPSAtMSwgbWF4ID0gc3RhdGUucG9zTWF4LCBvbGRQb3MgPSBzdGF0ZS5wb3M7XG4gIHN0YXRlLnBvcyA9IHN0YXJ0ICsgMTtcbiAgbGV2ZWwgPSAxO1xuICB3aGlsZSAoc3RhdGUucG9zIDwgbWF4KSB7XG4gICAgbWFya2VyMiA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHN0YXRlLnBvcyk7XG4gICAgaWYgKG1hcmtlcjIgPT09IDkzKSB7XG4gICAgICBsZXZlbC0tO1xuICAgICAgaWYgKGxldmVsID09PSAwKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHByZXZQb3MgPSBzdGF0ZS5wb3M7XG4gICAgc3RhdGUubWQuaW5saW5lLnNraXBUb2tlbihzdGF0ZSk7XG4gICAgaWYgKG1hcmtlcjIgPT09IDkxKSB7XG4gICAgICBpZiAocHJldlBvcyA9PT0gc3RhdGUucG9zIC0gMSkge1xuICAgICAgICBsZXZlbCsrO1xuICAgICAgfSBlbHNlIGlmIChkaXNhYmxlTmVzdGVkKSB7XG4gICAgICAgIHN0YXRlLnBvcyA9IG9sZFBvcztcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoZm91bmQpIHtcbiAgICBsYWJlbEVuZCA9IHN0YXRlLnBvcztcbiAgfVxuICBzdGF0ZS5wb3MgPSBvbGRQb3M7XG4gIHJldHVybiBsYWJlbEVuZDtcbn0sIFwicGFyc2VMaW5rTGFiZWxcIik7XG52YXIgdW5lc2NhcGVBbGwkMiA9IHV0aWxzJDEudW5lc2NhcGVBbGw7XG52YXIgcGFyc2VfbGlua19kZXN0aW5hdGlvbiA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gcGFyc2VMaW5rRGVzdGluYXRpb24oc3RyLCBwb3MsIG1heCkge1xuICB2YXIgY29kZTMsIGxldmVsLCBsaW5lcyA9IDAsIHN0YXJ0ID0gcG9zLCByZXN1bHQgPSB7XG4gICAgb2s6IGZhbHNlLFxuICAgIHBvczogMCxcbiAgICBsaW5lczogMCxcbiAgICBzdHI6IFwiXCJcbiAgfTtcbiAgaWYgKHN0ci5jaGFyQ29kZUF0KHBvcykgPT09IDYwKSB7XG4gICAgcG9zKys7XG4gICAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgICAgY29kZTMgPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGNvZGUzID09PSAxMCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKGNvZGUzID09PSA2MCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKGNvZGUzID09PSA2Mikge1xuICAgICAgICByZXN1bHQucG9zID0gcG9zICsgMTtcbiAgICAgICAgcmVzdWx0LnN0ciA9IHVuZXNjYXBlQWxsJDIoc3RyLnNsaWNlKHN0YXJ0ICsgMSwgcG9zKSk7XG4gICAgICAgIHJlc3VsdC5vayA9IHRydWU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoY29kZTMgPT09IDkyICYmIHBvcyArIDEgPCBtYXgpIHtcbiAgICAgICAgcG9zICs9IDI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcG9zKys7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgbGV2ZWwgPSAwO1xuICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgY29kZTMgPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuICAgIGlmIChjb2RlMyA9PT0gMzIpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoY29kZTMgPCAzMiB8fCBjb2RlMyA9PT0gMTI3KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKGNvZGUzID09PSA5MiAmJiBwb3MgKyAxIDwgbWF4KSB7XG4gICAgICBpZiAoc3RyLmNoYXJDb2RlQXQocG9zICsgMSkgPT09IDMyKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcG9zICs9IDI7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGNvZGUzID09PSA0MCkge1xuICAgICAgbGV2ZWwrKztcbiAgICAgIGlmIChsZXZlbCA+IDMyKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjb2RlMyA9PT0gNDEpIHtcbiAgICAgIGlmIChsZXZlbCA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGxldmVsLS07XG4gICAgfVxuICAgIHBvcysrO1xuICB9XG4gIGlmIChzdGFydCA9PT0gcG9zKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAobGV2ZWwgIT09IDApIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHJlc3VsdC5zdHIgPSB1bmVzY2FwZUFsbCQyKHN0ci5zbGljZShzdGFydCwgcG9zKSk7XG4gIHJlc3VsdC5saW5lcyA9IGxpbmVzO1xuICByZXN1bHQucG9zID0gcG9zO1xuICByZXN1bHQub2sgPSB0cnVlO1xuICByZXR1cm4gcmVzdWx0O1xufSwgXCJwYXJzZUxpbmtEZXN0aW5hdGlvblwiKTtcbnZhciB1bmVzY2FwZUFsbCQxID0gdXRpbHMkMS51bmVzY2FwZUFsbDtcbnZhciBwYXJzZV9saW5rX3RpdGxlID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBwYXJzZUxpbmtUaXRsZShzdHIsIHBvcywgbWF4KSB7XG4gIHZhciBjb2RlMywgbWFya2VyMiwgbGluZXMgPSAwLCBzdGFydCA9IHBvcywgcmVzdWx0ID0ge1xuICAgIG9rOiBmYWxzZSxcbiAgICBwb3M6IDAsXG4gICAgbGluZXM6IDAsXG4gICAgc3RyOiBcIlwiXG4gIH07XG4gIGlmIChwb3MgPj0gbWF4KSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBtYXJrZXIyID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgaWYgKG1hcmtlcjIgIT09IDM0ICYmIG1hcmtlcjIgIT09IDM5ICYmIG1hcmtlcjIgIT09IDQwKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBwb3MrKztcbiAgaWYgKG1hcmtlcjIgPT09IDQwKSB7XG4gICAgbWFya2VyMiA9IDQxO1xuICB9XG4gIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICBjb2RlMyA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gICAgaWYgKGNvZGUzID09PSBtYXJrZXIyKSB7XG4gICAgICByZXN1bHQucG9zID0gcG9zICsgMTtcbiAgICAgIHJlc3VsdC5saW5lcyA9IGxpbmVzO1xuICAgICAgcmVzdWx0LnN0ciA9IHVuZXNjYXBlQWxsJDEoc3RyLnNsaWNlKHN0YXJ0ICsgMSwgcG9zKSk7XG4gICAgICByZXN1bHQub2sgPSB0cnVlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2UgaWYgKGNvZGUzID09PSA0MCAmJiBtYXJrZXIyID09PSA0MSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2UgaWYgKGNvZGUzID09PSAxMCkge1xuICAgICAgbGluZXMrKztcbiAgICB9IGVsc2UgaWYgKGNvZGUzID09PSA5MiAmJiBwb3MgKyAxIDwgbWF4KSB7XG4gICAgICBwb3MrKztcbiAgICAgIGlmIChzdHIuY2hhckNvZGVBdChwb3MpID09PSAxMCkge1xuICAgICAgICBsaW5lcysrO1xuICAgICAgfVxuICAgIH1cbiAgICBwb3MrKztcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufSwgXCJwYXJzZUxpbmtUaXRsZVwiKTtcbmhlbHBlcnMkMS5wYXJzZUxpbmtMYWJlbCA9IHBhcnNlX2xpbmtfbGFiZWw7XG5oZWxwZXJzJDEucGFyc2VMaW5rRGVzdGluYXRpb24gPSBwYXJzZV9saW5rX2Rlc3RpbmF0aW9uO1xuaGVscGVycyQxLnBhcnNlTGlua1RpdGxlID0gcGFyc2VfbGlua190aXRsZTtcbnZhciBhc3NpZ24kMSA9IHV0aWxzJDEuYXNzaWduO1xudmFyIHVuZXNjYXBlQWxsID0gdXRpbHMkMS51bmVzY2FwZUFsbDtcbnZhciBlc2NhcGVIdG1sID0gdXRpbHMkMS5lc2NhcGVIdG1sO1xudmFyIGRlZmF1bHRfcnVsZXMgPSB7fTtcbmRlZmF1bHRfcnVsZXMuY29kZV9pbmxpbmUgPSBmdW5jdGlvbih0b2tlbnMsIGlkeCwgb3B0aW9ucywgZW52LCBzbGYpIHtcbiAgdmFyIHRva2VuMiA9IHRva2Vuc1tpZHhdO1xuICByZXR1cm4gXCI8Y29kZVwiICsgc2xmLnJlbmRlckF0dHJzKHRva2VuMikgKyBcIj5cIiArIGVzY2FwZUh0bWwodG9rZW5zW2lkeF0uY29udGVudCkgKyBcIjwvY29kZT5cIjtcbn07XG5kZWZhdWx0X3J1bGVzLmNvZGVfYmxvY2sgPSBmdW5jdGlvbih0b2tlbnMsIGlkeCwgb3B0aW9ucywgZW52LCBzbGYpIHtcbiAgdmFyIHRva2VuMiA9IHRva2Vuc1tpZHhdO1xuICByZXR1cm4gXCI8cHJlXCIgKyBzbGYucmVuZGVyQXR0cnModG9rZW4yKSArIFwiPjxjb2RlPlwiICsgZXNjYXBlSHRtbCh0b2tlbnNbaWR4XS5jb250ZW50KSArIFwiPC9jb2RlPjwvcHJlPlxcblwiO1xufTtcbmRlZmF1bHRfcnVsZXMuZmVuY2UgPSBmdW5jdGlvbih0b2tlbnMsIGlkeCwgb3B0aW9ucywgZW52LCBzbGYpIHtcbiAgdmFyIHRva2VuMiA9IHRva2Vuc1tpZHhdLCBpbmZvID0gdG9rZW4yLmluZm8gPyB1bmVzY2FwZUFsbCh0b2tlbjIuaW5mbykudHJpbSgpIDogXCJcIiwgbGFuZ05hbWUgPSBcIlwiLCBsYW5nQXR0cnMgPSBcIlwiLCBoaWdobGlnaHRlZCwgaSwgYXJyLCB0bXBBdHRycywgdG1wVG9rZW47XG4gIGlmIChpbmZvKSB7XG4gICAgYXJyID0gaW5mby5zcGxpdCgvKFxccyspL2cpO1xuICAgIGxhbmdOYW1lID0gYXJyWzBdO1xuICAgIGxhbmdBdHRycyA9IGFyci5zbGljZSgyKS5qb2luKFwiXCIpO1xuICB9XG4gIGlmIChvcHRpb25zLmhpZ2hsaWdodCkge1xuICAgIGhpZ2hsaWdodGVkID0gb3B0aW9ucy5oaWdobGlnaHQodG9rZW4yLmNvbnRlbnQsIGxhbmdOYW1lLCBsYW5nQXR0cnMpIHx8IGVzY2FwZUh0bWwodG9rZW4yLmNvbnRlbnQpO1xuICB9IGVsc2Uge1xuICAgIGhpZ2hsaWdodGVkID0gZXNjYXBlSHRtbCh0b2tlbjIuY29udGVudCk7XG4gIH1cbiAgaWYgKGhpZ2hsaWdodGVkLmluZGV4T2YoXCI8cHJlXCIpID09PSAwKSB7XG4gICAgcmV0dXJuIGhpZ2hsaWdodGVkICsgXCJcXG5cIjtcbiAgfVxuICBpZiAoaW5mbykge1xuICAgIGkgPSB0b2tlbjIuYXR0ckluZGV4KFwiY2xhc3NcIik7XG4gICAgdG1wQXR0cnMgPSB0b2tlbjIuYXR0cnMgPyB0b2tlbjIuYXR0cnMuc2xpY2UoKSA6IFtdO1xuICAgIGlmIChpIDwgMCkge1xuICAgICAgdG1wQXR0cnMucHVzaChbXCJjbGFzc1wiLCBvcHRpb25zLmxhbmdQcmVmaXggKyBsYW5nTmFtZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0bXBBdHRyc1tpXSA9IHRtcEF0dHJzW2ldLnNsaWNlKCk7XG4gICAgICB0bXBBdHRyc1tpXVsxXSArPSBcIiBcIiArIG9wdGlvbnMubGFuZ1ByZWZpeCArIGxhbmdOYW1lO1xuICAgIH1cbiAgICB0bXBUb2tlbiA9IHtcbiAgICAgIGF0dHJzOiB0bXBBdHRyc1xuICAgIH07XG4gICAgcmV0dXJuIFwiPHByZT48Y29kZVwiICsgc2xmLnJlbmRlckF0dHJzKHRtcFRva2VuKSArIFwiPlwiICsgaGlnaGxpZ2h0ZWQgKyBcIjwvY29kZT48L3ByZT5cXG5cIjtcbiAgfVxuICByZXR1cm4gXCI8cHJlPjxjb2RlXCIgKyBzbGYucmVuZGVyQXR0cnModG9rZW4yKSArIFwiPlwiICsgaGlnaGxpZ2h0ZWQgKyBcIjwvY29kZT48L3ByZT5cXG5cIjtcbn07XG5kZWZhdWx0X3J1bGVzLmltYWdlID0gZnVuY3Rpb24odG9rZW5zLCBpZHgsIG9wdGlvbnMsIGVudiwgc2xmKSB7XG4gIHZhciB0b2tlbjIgPSB0b2tlbnNbaWR4XTtcbiAgdG9rZW4yLmF0dHJzW3Rva2VuMi5hdHRySW5kZXgoXCJhbHRcIildWzFdID0gc2xmLnJlbmRlcklubGluZUFzVGV4dCh0b2tlbjIuY2hpbGRyZW4sIG9wdGlvbnMsIGVudik7XG4gIHJldHVybiBzbGYucmVuZGVyVG9rZW4odG9rZW5zLCBpZHgsIG9wdGlvbnMpO1xufTtcbmRlZmF1bHRfcnVsZXMuaGFyZGJyZWFrID0gZnVuY3Rpb24odG9rZW5zLCBpZHgsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIG9wdGlvbnMueGh0bWxPdXQgPyBcIjxiciAvPlxcblwiIDogXCI8YnI+XFxuXCI7XG59O1xuZGVmYXVsdF9ydWxlcy5zb2Z0YnJlYWsgPSBmdW5jdGlvbih0b2tlbnMsIGlkeCwgb3B0aW9ucykge1xuICByZXR1cm4gb3B0aW9ucy5icmVha3MgPyBvcHRpb25zLnhodG1sT3V0ID8gXCI8YnIgLz5cXG5cIiA6IFwiPGJyPlxcblwiIDogXCJcXG5cIjtcbn07XG5kZWZhdWx0X3J1bGVzLnRleHQgPSBmdW5jdGlvbih0b2tlbnMsIGlkeCkge1xuICByZXR1cm4gZXNjYXBlSHRtbCh0b2tlbnNbaWR4XS5jb250ZW50KTtcbn07XG5kZWZhdWx0X3J1bGVzLmh0bWxfYmxvY2sgPSBmdW5jdGlvbih0b2tlbnMsIGlkeCkge1xuICByZXR1cm4gdG9rZW5zW2lkeF0uY29udGVudDtcbn07XG5kZWZhdWx0X3J1bGVzLmh0bWxfaW5saW5lID0gZnVuY3Rpb24odG9rZW5zLCBpZHgpIHtcbiAgcmV0dXJuIHRva2Vuc1tpZHhdLmNvbnRlbnQ7XG59O1xuZnVuY3Rpb24gUmVuZGVyZXIkMSgpIHtcbiAgdGhpcy5ydWxlcyA9IGFzc2lnbiQxKHt9LCBkZWZhdWx0X3J1bGVzKTtcbn1cbl9fbmFtZShSZW5kZXJlciQxLCBcIlJlbmRlcmVyJDFcIik7XG5SZW5kZXJlciQxLnByb3RvdHlwZS5yZW5kZXJBdHRycyA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gcmVuZGVyQXR0cnModG9rZW4yKSB7XG4gIHZhciBpLCBsLCByZXN1bHQ7XG4gIGlmICghdG9rZW4yLmF0dHJzKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcmVzdWx0ID0gXCJcIjtcbiAgZm9yIChpID0gMCwgbCA9IHRva2VuMi5hdHRycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICByZXN1bHQgKz0gXCIgXCIgKyBlc2NhcGVIdG1sKHRva2VuMi5hdHRyc1tpXVswXSkgKyAnPVwiJyArIGVzY2FwZUh0bWwodG9rZW4yLmF0dHJzW2ldWzFdKSArICdcIic7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn0sIFwicmVuZGVyQXR0cnNcIik7XG5SZW5kZXJlciQxLnByb3RvdHlwZS5yZW5kZXJUb2tlbiA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gcmVuZGVyVG9rZW4odG9rZW5zLCBpZHgsIG9wdGlvbnMpIHtcbiAgdmFyIG5leHRUb2tlbiwgcmVzdWx0ID0gXCJcIiwgbmVlZExmID0gZmFsc2UsIHRva2VuMiA9IHRva2Vuc1tpZHhdO1xuICBpZiAodG9rZW4yLmhpZGRlbikge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG4gIGlmICh0b2tlbjIuYmxvY2sgJiYgdG9rZW4yLm5lc3RpbmcgIT09IC0xICYmIGlkeCAmJiB0b2tlbnNbaWR4IC0gMV0uaGlkZGVuKSB7XG4gICAgcmVzdWx0ICs9IFwiXFxuXCI7XG4gIH1cbiAgcmVzdWx0ICs9ICh0b2tlbjIubmVzdGluZyA9PT0gLTEgPyBcIjwvXCIgOiBcIjxcIikgKyB0b2tlbjIudGFnO1xuICByZXN1bHQgKz0gdGhpcy5yZW5kZXJBdHRycyh0b2tlbjIpO1xuICBpZiAodG9rZW4yLm5lc3RpbmcgPT09IDAgJiYgb3B0aW9ucy54aHRtbE91dCkge1xuICAgIHJlc3VsdCArPSBcIiAvXCI7XG4gIH1cbiAgaWYgKHRva2VuMi5ibG9jaykge1xuICAgIG5lZWRMZiA9IHRydWU7XG4gICAgaWYgKHRva2VuMi5uZXN0aW5nID09PSAxKSB7XG4gICAgICBpZiAoaWR4ICsgMSA8IHRva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgbmV4dFRva2VuID0gdG9rZW5zW2lkeCArIDFdO1xuICAgICAgICBpZiAobmV4dFRva2VuLnR5cGUgPT09IFwiaW5saW5lXCIgfHwgbmV4dFRva2VuLmhpZGRlbikge1xuICAgICAgICAgIG5lZWRMZiA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKG5leHRUb2tlbi5uZXN0aW5nID09PSAtMSAmJiBuZXh0VG9rZW4udGFnID09PSB0b2tlbjIudGFnKSB7XG4gICAgICAgICAgbmVlZExmID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmVzdWx0ICs9IG5lZWRMZiA/IFwiPlxcblwiIDogXCI+XCI7XG4gIHJldHVybiByZXN1bHQ7XG59LCBcInJlbmRlclRva2VuXCIpO1xuUmVuZGVyZXIkMS5wcm90b3R5cGUucmVuZGVySW5saW5lID0gZnVuY3Rpb24odG9rZW5zLCBvcHRpb25zLCBlbnYpIHtcbiAgdmFyIHR5cGUyLCByZXN1bHQgPSBcIlwiLCBydWxlcyA9IHRoaXMucnVsZXM7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0b2tlbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICB0eXBlMiA9IHRva2Vuc1tpXS50eXBlO1xuICAgIGlmICh0eXBlb2YgcnVsZXNbdHlwZTJdICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICByZXN1bHQgKz0gcnVsZXNbdHlwZTJdKHRva2VucywgaSwgb3B0aW9ucywgZW52LCB0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ICs9IHRoaXMucmVuZGVyVG9rZW4odG9rZW5zLCBpLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5SZW5kZXJlciQxLnByb3RvdHlwZS5yZW5kZXJJbmxpbmVBc1RleHQgPSBmdW5jdGlvbih0b2tlbnMsIG9wdGlvbnMsIGVudikge1xuICB2YXIgcmVzdWx0ID0gXCJcIjtcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRva2Vucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmICh0b2tlbnNbaV0udHlwZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICAgIHJlc3VsdCArPSB0b2tlbnNbaV0uY29udGVudDtcbiAgICB9IGVsc2UgaWYgKHRva2Vuc1tpXS50eXBlID09PSBcImltYWdlXCIpIHtcbiAgICAgIHJlc3VsdCArPSB0aGlzLnJlbmRlcklubGluZUFzVGV4dCh0b2tlbnNbaV0uY2hpbGRyZW4sIG9wdGlvbnMsIGVudik7XG4gICAgfSBlbHNlIGlmICh0b2tlbnNbaV0udHlwZSA9PT0gXCJzb2Z0YnJlYWtcIikge1xuICAgICAgcmVzdWx0ICs9IFwiXFxuXCI7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuUmVuZGVyZXIkMS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24odG9rZW5zLCBvcHRpb25zLCBlbnYpIHtcbiAgdmFyIGksIGxlbiwgdHlwZTIsIHJlc3VsdCA9IFwiXCIsIHJ1bGVzID0gdGhpcy5ydWxlcztcbiAgZm9yIChpID0gMCwgbGVuID0gdG9rZW5zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdHlwZTIgPSB0b2tlbnNbaV0udHlwZTtcbiAgICBpZiAodHlwZTIgPT09IFwiaW5saW5lXCIpIHtcbiAgICAgIHJlc3VsdCArPSB0aGlzLnJlbmRlcklubGluZSh0b2tlbnNbaV0uY2hpbGRyZW4sIG9wdGlvbnMsIGVudik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcnVsZXNbdHlwZTJdICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICByZXN1bHQgKz0gcnVsZXNbdG9rZW5zW2ldLnR5cGVdKHRva2VucywgaSwgb3B0aW9ucywgZW52LCB0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ICs9IHRoaXMucmVuZGVyVG9rZW4odG9rZW5zLCBpLCBvcHRpb25zLCBlbnYpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbnZhciByZW5kZXJlciA9IFJlbmRlcmVyJDE7XG5mdW5jdGlvbiBSdWxlciQzKCkge1xuICB0aGlzLl9fcnVsZXNfXyA9IFtdO1xuICB0aGlzLl9fY2FjaGVfXyA9IG51bGw7XG59XG5fX25hbWUoUnVsZXIkMywgXCJSdWxlciQzXCIpO1xuUnVsZXIkMy5wcm90b3R5cGUuX19maW5kX18gPSBmdW5jdGlvbihuYW1lMikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX19ydWxlc19fLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRoaXMuX19ydWxlc19fW2ldLm5hbWUgPT09IG5hbWUyKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufTtcblJ1bGVyJDMucHJvdG90eXBlLl9fY29tcGlsZV9fID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZWxmMiA9IHRoaXM7XG4gIHZhciBjaGFpbnMgPSBbXCJcIl07XG4gIHNlbGYyLl9fcnVsZXNfXy5mb3JFYWNoKGZ1bmN0aW9uKHJ1bGUpIHtcbiAgICBpZiAoIXJ1bGUuZW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBydWxlLmFsdC5mb3JFYWNoKGZ1bmN0aW9uKGFsdE5hbWUpIHtcbiAgICAgIGlmIChjaGFpbnMuaW5kZXhPZihhbHROYW1lKSA8IDApIHtcbiAgICAgICAgY2hhaW5zLnB1c2goYWx0TmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICBzZWxmMi5fX2NhY2hlX18gPSB7fTtcbiAgY2hhaW5zLmZvckVhY2goZnVuY3Rpb24oY2hhaW4pIHtcbiAgICBzZWxmMi5fX2NhY2hlX19bY2hhaW5dID0gW107XG4gICAgc2VsZjIuX19ydWxlc19fLmZvckVhY2goZnVuY3Rpb24ocnVsZSkge1xuICAgICAgaWYgKCFydWxlLmVuYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGNoYWluICYmIHJ1bGUuYWx0LmluZGV4T2YoY2hhaW4pIDwgMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzZWxmMi5fX2NhY2hlX19bY2hhaW5dLnB1c2gocnVsZS5mbik7XG4gICAgfSk7XG4gIH0pO1xufTtcblJ1bGVyJDMucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24obmFtZTIsIGZuLCBvcHRpb25zKSB7XG4gIHZhciBpbmRleCA9IHRoaXMuX19maW5kX18obmFtZTIpO1xuICB2YXIgb3B0MiA9IG9wdGlvbnMgfHwge307XG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJzZXIgcnVsZSBub3QgZm91bmQ6IFwiICsgbmFtZTIpO1xuICB9XG4gIHRoaXMuX19ydWxlc19fW2luZGV4XS5mbiA9IGZuO1xuICB0aGlzLl9fcnVsZXNfX1tpbmRleF0uYWx0ID0gb3B0Mi5hbHQgfHwgW107XG4gIHRoaXMuX19jYWNoZV9fID0gbnVsbDtcbn07XG5SdWxlciQzLnByb3RvdHlwZS5iZWZvcmUgPSBmdW5jdGlvbihiZWZvcmVOYW1lLCBydWxlTmFtZSwgZm4sIG9wdGlvbnMpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fX2ZpbmRfXyhiZWZvcmVOYW1lKTtcbiAgdmFyIG9wdDIgPSBvcHRpb25zIHx8IHt9O1xuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyc2VyIHJ1bGUgbm90IGZvdW5kOiBcIiArIGJlZm9yZU5hbWUpO1xuICB9XG4gIHRoaXMuX19ydWxlc19fLnNwbGljZShpbmRleCwgMCwge1xuICAgIG5hbWU6IHJ1bGVOYW1lLFxuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgZm4sXG4gICAgYWx0OiBvcHQyLmFsdCB8fCBbXVxuICB9KTtcbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblJ1bGVyJDMucHJvdG90eXBlLmFmdGVyID0gZnVuY3Rpb24oYWZ0ZXJOYW1lLCBydWxlTmFtZSwgZm4sIG9wdGlvbnMpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fX2ZpbmRfXyhhZnRlck5hbWUpO1xuICB2YXIgb3B0MiA9IG9wdGlvbnMgfHwge307XG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJzZXIgcnVsZSBub3QgZm91bmQ6IFwiICsgYWZ0ZXJOYW1lKTtcbiAgfVxuICB0aGlzLl9fcnVsZXNfXy5zcGxpY2UoaW5kZXggKyAxLCAwLCB7XG4gICAgbmFtZTogcnVsZU5hbWUsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBmbixcbiAgICBhbHQ6IG9wdDIuYWx0IHx8IFtdXG4gIH0pO1xuICB0aGlzLl9fY2FjaGVfXyA9IG51bGw7XG59O1xuUnVsZXIkMy5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKHJ1bGVOYW1lLCBmbiwgb3B0aW9ucykge1xuICB2YXIgb3B0MiA9IG9wdGlvbnMgfHwge307XG4gIHRoaXMuX19ydWxlc19fLnB1c2goe1xuICAgIG5hbWU6IHJ1bGVOYW1lLFxuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgZm4sXG4gICAgYWx0OiBvcHQyLmFsdCB8fCBbXVxuICB9KTtcbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblJ1bGVyJDMucHJvdG90eXBlLmVuYWJsZSA9IGZ1bmN0aW9uKGxpc3QzLCBpZ25vcmVJbnZhbGlkKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0MykpIHtcbiAgICBsaXN0MyA9IFtsaXN0M107XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBsaXN0My5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUyKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX19maW5kX18obmFtZTIpO1xuICAgIGlmIChpZHggPCAwKSB7XG4gICAgICBpZiAoaWdub3JlSW52YWxpZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSdWxlcyBtYW5hZ2VyOiBpbnZhbGlkIHJ1bGUgbmFtZSBcIiArIG5hbWUyKTtcbiAgICB9XG4gICAgdGhpcy5fX3J1bGVzX19baWR4XS5lbmFibGVkID0gdHJ1ZTtcbiAgICByZXN1bHQucHVzaChuYW1lMik7XG4gIH0sIHRoaXMpO1xuICB0aGlzLl9fY2FjaGVfXyA9IG51bGw7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuUnVsZXIkMy5wcm90b3R5cGUuZW5hYmxlT25seSA9IGZ1bmN0aW9uKGxpc3QzLCBpZ25vcmVJbnZhbGlkKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0MykpIHtcbiAgICBsaXN0MyA9IFtsaXN0M107XG4gIH1cbiAgdGhpcy5fX3J1bGVzX18uZm9yRWFjaChmdW5jdGlvbihydWxlKSB7XG4gICAgcnVsZS5lbmFibGVkID0gZmFsc2U7XG4gIH0pO1xuICB0aGlzLmVuYWJsZShsaXN0MywgaWdub3JlSW52YWxpZCk7XG59O1xuUnVsZXIkMy5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uKGxpc3QzLCBpZ25vcmVJbnZhbGlkKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0MykpIHtcbiAgICBsaXN0MyA9IFtsaXN0M107XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBsaXN0My5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUyKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX19maW5kX18obmFtZTIpO1xuICAgIGlmIChpZHggPCAwKSB7XG4gICAgICBpZiAoaWdub3JlSW52YWxpZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSdWxlcyBtYW5hZ2VyOiBpbnZhbGlkIHJ1bGUgbmFtZSBcIiArIG5hbWUyKTtcbiAgICB9XG4gICAgdGhpcy5fX3J1bGVzX19baWR4XS5lbmFibGVkID0gZmFsc2U7XG4gICAgcmVzdWx0LnB1c2gobmFtZTIpO1xuICB9LCB0aGlzKTtcbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblJ1bGVyJDMucHJvdG90eXBlLmdldFJ1bGVzID0gZnVuY3Rpb24oY2hhaW5OYW1lKSB7XG4gIGlmICh0aGlzLl9fY2FjaGVfXyA9PT0gbnVsbCkge1xuICAgIHRoaXMuX19jb21waWxlX18oKTtcbiAgfVxuICByZXR1cm4gdGhpcy5fX2NhY2hlX19bY2hhaW5OYW1lXSB8fCBbXTtcbn07XG52YXIgcnVsZXIgPSBSdWxlciQzO1xudmFyIE5FV0xJTkVTX1JFID0gL1xcclxcbj98XFxuL2c7XG52YXIgTlVMTF9SRSA9IC9cXDAvZztcbnZhciBub3JtYWxpemUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIG5vcm1hbGl6ZTIoc3RhdGUpIHtcbiAgdmFyIHN0cjtcbiAgc3RyID0gc3RhdGUuc3JjLnJlcGxhY2UoTkVXTElORVNfUkUsIFwiXFxuXCIpO1xuICBzdHIgPSBzdHIucmVwbGFjZShOVUxMX1JFLCBcIlxcdUZGRkRcIik7XG4gIHN0YXRlLnNyYyA9IHN0cjtcbn0sIFwibm9ybWFsaXplXCIpO1xudmFyIGJsb2NrID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBibG9jazIoc3RhdGUpIHtcbiAgdmFyIHRva2VuMjtcbiAgaWYgKHN0YXRlLmlubGluZU1vZGUpIHtcbiAgICB0b2tlbjIgPSBuZXcgc3RhdGUuVG9rZW4oXCJpbmxpbmVcIiwgXCJcIiwgMCk7XG4gICAgdG9rZW4yLmNvbnRlbnQgPSBzdGF0ZS5zcmM7XG4gICAgdG9rZW4yLm1hcCA9IFswLCAxXTtcbiAgICB0b2tlbjIuY2hpbGRyZW4gPSBbXTtcbiAgICBzdGF0ZS50b2tlbnMucHVzaCh0b2tlbjIpO1xuICB9IGVsc2Uge1xuICAgIHN0YXRlLm1kLmJsb2NrLnBhcnNlKHN0YXRlLnNyYywgc3RhdGUubWQsIHN0YXRlLmVudiwgc3RhdGUudG9rZW5zKTtcbiAgfVxufSwgXCJibG9ja1wiKTtcbnZhciBpbmxpbmUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIGlubGluZTIoc3RhdGUpIHtcbiAgdmFyIHRva2VucyA9IHN0YXRlLnRva2VucywgdG9rLCBpLCBsO1xuICBmb3IgKGkgPSAwLCBsID0gdG9rZW5zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHRvayA9IHRva2Vuc1tpXTtcbiAgICBpZiAodG9rLnR5cGUgPT09IFwiaW5saW5lXCIpIHtcbiAgICAgIHN0YXRlLm1kLmlubGluZS5wYXJzZSh0b2suY29udGVudCwgc3RhdGUubWQsIHN0YXRlLmVudiwgdG9rLmNoaWxkcmVuKTtcbiAgICB9XG4gIH1cbn0sIFwiaW5saW5lXCIpO1xudmFyIGFycmF5UmVwbGFjZUF0ID0gdXRpbHMkMS5hcnJheVJlcGxhY2VBdDtcbmZ1bmN0aW9uIGlzTGlua09wZW4oc3RyKSB7XG4gIHJldHVybiAvXjxhWz5cXHNdL2kudGVzdChzdHIpO1xufVxuX19uYW1lKGlzTGlua09wZW4sIFwiaXNMaW5rT3BlblwiKTtcbmZ1bmN0aW9uIGlzTGlua0Nsb3NlKHN0cikge1xuICByZXR1cm4gL148XFwvYVxccyo+L2kudGVzdChzdHIpO1xufVxuX19uYW1lKGlzTGlua0Nsb3NlLCBcImlzTGlua0Nsb3NlXCIpO1xudmFyIGxpbmtpZnkgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIGxpbmtpZnkyKHN0YXRlKSB7XG4gIHZhciBpLCBqLCBsLCB0b2tlbnMsIHRva2VuMiwgY3VycmVudFRva2VuLCBub2RlcywgbG4sIHRleHQzLCBwb3MsIGxhc3RQb3MsIGxldmVsLCBodG1sTGlua0xldmVsLCB1cmwsIGZ1bGxVcmwsIHVybFRleHQsIGJsb2NrVG9rZW5zID0gc3RhdGUudG9rZW5zLCBsaW5rcztcbiAgaWYgKCFzdGF0ZS5tZC5vcHRpb25zLmxpbmtpZnkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yIChqID0gMCwgbCA9IGJsb2NrVG9rZW5zLmxlbmd0aDsgaiA8IGw7IGorKykge1xuICAgIGlmIChibG9ja1Rva2Vuc1tqXS50eXBlICE9PSBcImlubGluZVwiIHx8ICFzdGF0ZS5tZC5saW5raWZ5LnByZXRlc3QoYmxvY2tUb2tlbnNbal0uY29udGVudCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB0b2tlbnMgPSBibG9ja1Rva2Vuc1tqXS5jaGlsZHJlbjtcbiAgICBodG1sTGlua0xldmVsID0gMDtcbiAgICBmb3IgKGkgPSB0b2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGN1cnJlbnRUb2tlbiA9IHRva2Vuc1tpXTtcbiAgICAgIGlmIChjdXJyZW50VG9rZW4udHlwZSA9PT0gXCJsaW5rX2Nsb3NlXCIpIHtcbiAgICAgICAgaS0tO1xuICAgICAgICB3aGlsZSAodG9rZW5zW2ldLmxldmVsICE9PSBjdXJyZW50VG9rZW4ubGV2ZWwgJiYgdG9rZW5zW2ldLnR5cGUgIT09IFwibGlua19vcGVuXCIpIHtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudFRva2VuLnR5cGUgPT09IFwiaHRtbF9pbmxpbmVcIikge1xuICAgICAgICBpZiAoaXNMaW5rT3BlbihjdXJyZW50VG9rZW4uY29udGVudCkgJiYgaHRtbExpbmtMZXZlbCA+IDApIHtcbiAgICAgICAgICBodG1sTGlua0xldmVsLS07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTGlua0Nsb3NlKGN1cnJlbnRUb2tlbi5jb250ZW50KSkge1xuICAgICAgICAgIGh0bWxMaW5rTGV2ZWwrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGh0bWxMaW5rTGV2ZWwgPiAwKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRUb2tlbi50eXBlID09PSBcInRleHRcIiAmJiBzdGF0ZS5tZC5saW5raWZ5LnRlc3QoY3VycmVudFRva2VuLmNvbnRlbnQpKSB7XG4gICAgICAgIHRleHQzID0gY3VycmVudFRva2VuLmNvbnRlbnQ7XG4gICAgICAgIGxpbmtzID0gc3RhdGUubWQubGlua2lmeS5tYXRjaCh0ZXh0Myk7XG4gICAgICAgIG5vZGVzID0gW107XG4gICAgICAgIGxldmVsID0gY3VycmVudFRva2VuLmxldmVsO1xuICAgICAgICBsYXN0UG9zID0gMDtcbiAgICAgICAgZm9yIChsbiA9IDA7IGxuIDwgbGlua3MubGVuZ3RoOyBsbisrKSB7XG4gICAgICAgICAgdXJsID0gbGlua3NbbG5dLnVybDtcbiAgICAgICAgICBmdWxsVXJsID0gc3RhdGUubWQubm9ybWFsaXplTGluayh1cmwpO1xuICAgICAgICAgIGlmICghc3RhdGUubWQudmFsaWRhdGVMaW5rKGZ1bGxVcmwpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdXJsVGV4dCA9IGxpbmtzW2xuXS50ZXh0O1xuICAgICAgICAgIGlmICghbGlua3NbbG5dLnNjaGVtYSkge1xuICAgICAgICAgICAgdXJsVGV4dCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmtUZXh0KFwiaHR0cDovL1wiICsgdXJsVGV4dCkucmVwbGFjZSgvXmh0dHA6XFwvXFwvLywgXCJcIik7XG4gICAgICAgICAgfSBlbHNlIGlmIChsaW5rc1tsbl0uc2NoZW1hID09PSBcIm1haWx0bzpcIiAmJiAhL15tYWlsdG86L2kudGVzdCh1cmxUZXh0KSkge1xuICAgICAgICAgICAgdXJsVGV4dCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmtUZXh0KFwibWFpbHRvOlwiICsgdXJsVGV4dCkucmVwbGFjZSgvXm1haWx0bzovLCBcIlwiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsVGV4dCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmtUZXh0KHVybFRleHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwb3MgPSBsaW5rc1tsbl0uaW5kZXg7XG4gICAgICAgICAgaWYgKHBvcyA+IGxhc3RQb3MpIHtcbiAgICAgICAgICAgIHRva2VuMiA9IG5ldyBzdGF0ZS5Ub2tlbihcInRleHRcIiwgXCJcIiwgMCk7XG4gICAgICAgICAgICB0b2tlbjIuY29udGVudCA9IHRleHQzLnNsaWNlKGxhc3RQb3MsIHBvcyk7XG4gICAgICAgICAgICB0b2tlbjIubGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgICAgIG5vZGVzLnB1c2godG9rZW4yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdG9rZW4yID0gbmV3IHN0YXRlLlRva2VuKFwibGlua19vcGVuXCIsIFwiYVwiLCAxKTtcbiAgICAgICAgICB0b2tlbjIuYXR0cnMgPSBbW1wiaHJlZlwiLCBmdWxsVXJsXV07XG4gICAgICAgICAgdG9rZW4yLmxldmVsID0gbGV2ZWwrKztcbiAgICAgICAgICB0b2tlbjIubWFya3VwID0gXCJsaW5raWZ5XCI7XG4gICAgICAgICAgdG9rZW4yLmluZm8gPSBcImF1dG9cIjtcbiAgICAgICAgICBub2Rlcy5wdXNoKHRva2VuMik7XG4gICAgICAgICAgdG9rZW4yID0gbmV3IHN0YXRlLlRva2VuKFwidGV4dFwiLCBcIlwiLCAwKTtcbiAgICAgICAgICB0b2tlbjIuY29udGVudCA9IHVybFRleHQ7XG4gICAgICAgICAgdG9rZW4yLmxldmVsID0gbGV2ZWw7XG4gICAgICAgICAgbm9kZXMucHVzaCh0b2tlbjIpO1xuICAgICAgICAgIHRva2VuMiA9IG5ldyBzdGF0ZS5Ub2tlbihcImxpbmtfY2xvc2VcIiwgXCJhXCIsIC0xKTtcbiAgICAgICAgICB0b2tlbjIubGV2ZWwgPSAtLWxldmVsO1xuICAgICAgICAgIHRva2VuMi5tYXJrdXAgPSBcImxpbmtpZnlcIjtcbiAgICAgICAgICB0b2tlbjIuaW5mbyA9IFwiYXV0b1wiO1xuICAgICAgICAgIG5vZGVzLnB1c2godG9rZW4yKTtcbiAgICAgICAgICBsYXN0UG9zID0gbGlua3NbbG5dLmxhc3RJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFzdFBvcyA8IHRleHQzLmxlbmd0aCkge1xuICAgICAgICAgIHRva2VuMiA9IG5ldyBzdGF0ZS5Ub2tlbihcInRleHRcIiwgXCJcIiwgMCk7XG4gICAgICAgICAgdG9rZW4yLmNvbnRlbnQgPSB0ZXh0My5zbGljZShsYXN0UG9zKTtcbiAgICAgICAgICB0b2tlbjIubGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgICBub2Rlcy5wdXNoKHRva2VuMik7XG4gICAgICAgIH1cbiAgICAgICAgYmxvY2tUb2tlbnNbal0uY2hpbGRyZW4gPSB0b2tlbnMgPSBhcnJheVJlcGxhY2VBdCh0b2tlbnMsIGksIG5vZGVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0sIFwibGlua2lmeVwiKTtcbnZhciBSQVJFX1JFID0gL1xcKy18XFwuXFwufFxcP1xcP1xcP1xcP3whISEhfCwsfC0tLztcbnZhciBTQ09QRURfQUJCUl9URVNUX1JFID0gL1xcKChjfHRtfHJ8cClcXCkvaTtcbnZhciBTQ09QRURfQUJCUl9SRSA9IC9cXCgoY3x0bXxyfHApXFwpL2lnO1xudmFyIFNDT1BFRF9BQkJSID0ge1xuICBjOiBcIlxceEE5XCIsXG4gIHI6IFwiXFx4QUVcIixcbiAgcDogXCJcXHhBN1wiLFxuICB0bTogXCJcXHUyMTIyXCJcbn07XG5mdW5jdGlvbiByZXBsYWNlRm4obWF0Y2gyLCBuYW1lMikge1xuICByZXR1cm4gU0NPUEVEX0FCQlJbbmFtZTIudG9Mb3dlckNhc2UoKV07XG59XG5fX25hbWUocmVwbGFjZUZuLCBcInJlcGxhY2VGblwiKTtcbmZ1bmN0aW9uIHJlcGxhY2Vfc2NvcGVkKGlubGluZVRva2Vucykge1xuICB2YXIgaSwgdG9rZW4yLCBpbnNpZGVfYXV0b2xpbmsgPSAwO1xuICBmb3IgKGkgPSBpbmxpbmVUb2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB0b2tlbjIgPSBpbmxpbmVUb2tlbnNbaV07XG4gICAgaWYgKHRva2VuMi50eXBlID09PSBcInRleHRcIiAmJiAhaW5zaWRlX2F1dG9saW5rKSB7XG4gICAgICB0b2tlbjIuY29udGVudCA9IHRva2VuMi5jb250ZW50LnJlcGxhY2UoU0NPUEVEX0FCQlJfUkUsIHJlcGxhY2VGbik7XG4gICAgfVxuICAgIGlmICh0b2tlbjIudHlwZSA9PT0gXCJsaW5rX29wZW5cIiAmJiB0b2tlbjIuaW5mbyA9PT0gXCJhdXRvXCIpIHtcbiAgICAgIGluc2lkZV9hdXRvbGluay0tO1xuICAgIH1cbiAgICBpZiAodG9rZW4yLnR5cGUgPT09IFwibGlua19jbG9zZVwiICYmIHRva2VuMi5pbmZvID09PSBcImF1dG9cIikge1xuICAgICAgaW5zaWRlX2F1dG9saW5rKys7XG4gICAgfVxuICB9XG59XG5fX25hbWUocmVwbGFjZV9zY29wZWQsIFwicmVwbGFjZV9zY29wZWRcIik7XG5mdW5jdGlvbiByZXBsYWNlX3JhcmUoaW5saW5lVG9rZW5zKSB7XG4gIHZhciBpLCB0b2tlbjIsIGluc2lkZV9hdXRvbGluayA9IDA7XG4gIGZvciAoaSA9IGlubGluZVRva2Vucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHRva2VuMiA9IGlubGluZVRva2Vuc1tpXTtcbiAgICBpZiAodG9rZW4yLnR5cGUgPT09IFwidGV4dFwiICYmICFpbnNpZGVfYXV0b2xpbmspIHtcbiAgICAgIGlmIChSQVJFX1JFLnRlc3QodG9rZW4yLmNvbnRlbnQpKSB7XG4gICAgICAgIHRva2VuMi5jb250ZW50ID0gdG9rZW4yLmNvbnRlbnQucmVwbGFjZSgvXFwrLS9nLCBcIlxceEIxXCIpLnJlcGxhY2UoL1xcLnsyLH0vZywgXCJcXHUyMDI2XCIpLnJlcGxhY2UoLyhbPyFdKeKApi9nLCBcIiQxLi5cIikucmVwbGFjZSgvKFs/IV0pezQsfS9nLCBcIiQxJDEkMVwiKS5yZXBsYWNlKC8sezIsfS9nLCBcIixcIikucmVwbGFjZSgvKF58W14tXSktLS0oPz1bXi1dfCQpL21nLCBcIiQxXFx1MjAxNFwiKS5yZXBsYWNlKC8oXnxcXHMpLS0oPz1cXHN8JCkvbWcsIFwiJDFcXHUyMDEzXCIpLnJlcGxhY2UoLyhefFteLVxcc10pLS0oPz1bXi1cXHNdfCQpL21nLCBcIiQxXFx1MjAxM1wiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRva2VuMi50eXBlID09PSBcImxpbmtfb3BlblwiICYmIHRva2VuMi5pbmZvID09PSBcImF1dG9cIikge1xuICAgICAgaW5zaWRlX2F1dG9saW5rLS07XG4gICAgfVxuICAgIGlmICh0b2tlbjIudHlwZSA9PT0gXCJsaW5rX2Nsb3NlXCIgJiYgdG9rZW4yLmluZm8gPT09IFwiYXV0b1wiKSB7XG4gICAgICBpbnNpZGVfYXV0b2xpbmsrKztcbiAgICB9XG4gIH1cbn1cbl9fbmFtZShyZXBsYWNlX3JhcmUsIFwicmVwbGFjZV9yYXJlXCIpO1xudmFyIHJlcGxhY2VtZW50cyA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gcmVwbGFjZShzdGF0ZSkge1xuICB2YXIgYmxrSWR4O1xuICBpZiAoIXN0YXRlLm1kLm9wdGlvbnMudHlwb2dyYXBoZXIpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yIChibGtJZHggPSBzdGF0ZS50b2tlbnMubGVuZ3RoIC0gMTsgYmxrSWR4ID49IDA7IGJsa0lkeC0tKSB7XG4gICAgaWYgKHN0YXRlLnRva2Vuc1tibGtJZHhdLnR5cGUgIT09IFwiaW5saW5lXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoU0NPUEVEX0FCQlJfVEVTVF9SRS50ZXN0KHN0YXRlLnRva2Vuc1tibGtJZHhdLmNvbnRlbnQpKSB7XG4gICAgICByZXBsYWNlX3Njb3BlZChzdGF0ZS50b2tlbnNbYmxrSWR4XS5jaGlsZHJlbik7XG4gICAgfVxuICAgIGlmIChSQVJFX1JFLnRlc3Qoc3RhdGUudG9rZW5zW2Jsa0lkeF0uY29udGVudCkpIHtcbiAgICAgIHJlcGxhY2VfcmFyZShzdGF0ZS50b2tlbnNbYmxrSWR4XS5jaGlsZHJlbik7XG4gICAgfVxuICB9XG59LCBcInJlcGxhY2VcIik7XG52YXIgaXNXaGl0ZVNwYWNlJDEgPSB1dGlscyQxLmlzV2hpdGVTcGFjZTtcbnZhciBpc1B1bmN0Q2hhciQxID0gdXRpbHMkMS5pc1B1bmN0Q2hhcjtcbnZhciBpc01kQXNjaWlQdW5jdCQxID0gdXRpbHMkMS5pc01kQXNjaWlQdW5jdDtcbnZhciBRVU9URV9URVNUX1JFID0gL1snXCJdLztcbnZhciBRVU9URV9SRSA9IC9bJ1wiXS9nO1xudmFyIEFQT1NUUk9QSEUgPSBcIlxcdTIwMTlcIjtcbmZ1bmN0aW9uIHJlcGxhY2VBdChzdHIsIGluZGV4LCBjaCkge1xuICByZXR1cm4gc3RyLnN1YnN0cigwLCBpbmRleCkgKyBjaCArIHN0ci5zdWJzdHIoaW5kZXggKyAxKTtcbn1cbl9fbmFtZShyZXBsYWNlQXQsIFwicmVwbGFjZUF0XCIpO1xuZnVuY3Rpb24gcHJvY2Vzc19pbmxpbmVzKHRva2Vucywgc3RhdGUpIHtcbiAgdmFyIGksIHRva2VuMiwgdGV4dDMsIHQyLCBwb3MsIG1heCwgdGhpc0xldmVsLCBpdGVtLCBsYXN0Q2hhciwgbmV4dENoYXIsIGlzTGFzdFB1bmN0Q2hhciwgaXNOZXh0UHVuY3RDaGFyLCBpc0xhc3RXaGl0ZVNwYWNlLCBpc05leHRXaGl0ZVNwYWNlLCBjYW5PcGVuLCBjYW5DbG9zZSwgaiwgaXNTaW5nbGUsIHN0YWNrLCBvcGVuUXVvdGUsIGNsb3NlUXVvdGU7XG4gIHN0YWNrID0gW107XG4gIGZvciAoaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICB0b2tlbjIgPSB0b2tlbnNbaV07XG4gICAgdGhpc0xldmVsID0gdG9rZW5zW2ldLmxldmVsO1xuICAgIGZvciAoaiA9IHN0YWNrLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICBpZiAoc3RhY2tbal0ubGV2ZWwgPD0gdGhpc0xldmVsKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBzdGFjay5sZW5ndGggPSBqICsgMTtcbiAgICBpZiAodG9rZW4yLnR5cGUgIT09IFwidGV4dFwiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdGV4dDMgPSB0b2tlbjIuY29udGVudDtcbiAgICBwb3MgPSAwO1xuICAgIG1heCA9IHRleHQzLmxlbmd0aDtcbiAgICBPVVRFUjpcbiAgICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgICAgUVVPVEVfUkUubGFzdEluZGV4ID0gcG9zO1xuICAgICAgICB0MiA9IFFVT1RFX1JFLmV4ZWModGV4dDMpO1xuICAgICAgICBpZiAoIXQyKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FuT3BlbiA9IGNhbkNsb3NlID0gdHJ1ZTtcbiAgICAgICAgcG9zID0gdDIuaW5kZXggKyAxO1xuICAgICAgICBpc1NpbmdsZSA9IHQyWzBdID09PSBcIidcIjtcbiAgICAgICAgbGFzdENoYXIgPSAzMjtcbiAgICAgICAgaWYgKHQyLmluZGV4IC0gMSA+PSAwKSB7XG4gICAgICAgICAgbGFzdENoYXIgPSB0ZXh0My5jaGFyQ29kZUF0KHQyLmluZGV4IC0gMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yIChqID0gaSAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgICBpZiAodG9rZW5zW2pdLnR5cGUgPT09IFwic29mdGJyZWFrXCIgfHwgdG9rZW5zW2pdLnR5cGUgPT09IFwiaGFyZGJyZWFrXCIpXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgaWYgKCF0b2tlbnNbal0uY29udGVudClcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBsYXN0Q2hhciA9IHRva2Vuc1tqXS5jb250ZW50LmNoYXJDb2RlQXQodG9rZW5zW2pdLmNvbnRlbnQubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV4dENoYXIgPSAzMjtcbiAgICAgICAgaWYgKHBvcyA8IG1heCkge1xuICAgICAgICAgIG5leHRDaGFyID0gdGV4dDMuY2hhckNvZGVBdChwb3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgdG9rZW5zLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBpZiAodG9rZW5zW2pdLnR5cGUgPT09IFwic29mdGJyZWFrXCIgfHwgdG9rZW5zW2pdLnR5cGUgPT09IFwiaGFyZGJyZWFrXCIpXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgaWYgKCF0b2tlbnNbal0uY29udGVudClcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBuZXh0Q2hhciA9IHRva2Vuc1tqXS5jb250ZW50LmNoYXJDb2RlQXQoMCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaXNMYXN0UHVuY3RDaGFyID0gaXNNZEFzY2lpUHVuY3QkMShsYXN0Q2hhcikgfHwgaXNQdW5jdENoYXIkMShTdHJpbmcuZnJvbUNoYXJDb2RlKGxhc3RDaGFyKSk7XG4gICAgICAgIGlzTmV4dFB1bmN0Q2hhciA9IGlzTWRBc2NpaVB1bmN0JDEobmV4dENoYXIpIHx8IGlzUHVuY3RDaGFyJDEoU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0Q2hhcikpO1xuICAgICAgICBpc0xhc3RXaGl0ZVNwYWNlID0gaXNXaGl0ZVNwYWNlJDEobGFzdENoYXIpO1xuICAgICAgICBpc05leHRXaGl0ZVNwYWNlID0gaXNXaGl0ZVNwYWNlJDEobmV4dENoYXIpO1xuICAgICAgICBpZiAoaXNOZXh0V2hpdGVTcGFjZSkge1xuICAgICAgICAgIGNhbk9wZW4gPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChpc05leHRQdW5jdENoYXIpIHtcbiAgICAgICAgICBpZiAoIShpc0xhc3RXaGl0ZVNwYWNlIHx8IGlzTGFzdFB1bmN0Q2hhcikpIHtcbiAgICAgICAgICAgIGNhbk9wZW4gPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTGFzdFdoaXRlU3BhY2UpIHtcbiAgICAgICAgICBjYW5DbG9zZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTGFzdFB1bmN0Q2hhcikge1xuICAgICAgICAgIGlmICghKGlzTmV4dFdoaXRlU3BhY2UgfHwgaXNOZXh0UHVuY3RDaGFyKSkge1xuICAgICAgICAgICAgY2FuQ2xvc2UgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5leHRDaGFyID09PSAzNCAmJiB0MlswXSA9PT0gJ1wiJykge1xuICAgICAgICAgIGlmIChsYXN0Q2hhciA+PSA0OCAmJiBsYXN0Q2hhciA8PSA1Nykge1xuICAgICAgICAgICAgY2FuQ2xvc2UgPSBjYW5PcGVuID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjYW5PcGVuICYmIGNhbkNsb3NlKSB7XG4gICAgICAgICAgY2FuT3BlbiA9IGlzTGFzdFB1bmN0Q2hhcjtcbiAgICAgICAgICBjYW5DbG9zZSA9IGlzTmV4dFB1bmN0Q2hhcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNhbk9wZW4gJiYgIWNhbkNsb3NlKSB7XG4gICAgICAgICAgaWYgKGlzU2luZ2xlKSB7XG4gICAgICAgICAgICB0b2tlbjIuY29udGVudCA9IHJlcGxhY2VBdCh0b2tlbjIuY29udGVudCwgdDIuaW5kZXgsIEFQT1NUUk9QSEUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuQ2xvc2UpIHtcbiAgICAgICAgICBmb3IgKGogPSBzdGFjay5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICAgICAgaXRlbSA9IHN0YWNrW2pdO1xuICAgICAgICAgICAgaWYgKHN0YWNrW2pdLmxldmVsIDwgdGhpc0xldmVsKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uc2luZ2xlID09PSBpc1NpbmdsZSAmJiBzdGFja1tqXS5sZXZlbCA9PT0gdGhpc0xldmVsKSB7XG4gICAgICAgICAgICAgIGl0ZW0gPSBzdGFja1tqXTtcbiAgICAgICAgICAgICAgaWYgKGlzU2luZ2xlKSB7XG4gICAgICAgICAgICAgICAgb3BlblF1b3RlID0gc3RhdGUubWQub3B0aW9ucy5xdW90ZXNbMl07XG4gICAgICAgICAgICAgICAgY2xvc2VRdW90ZSA9IHN0YXRlLm1kLm9wdGlvbnMucXVvdGVzWzNdO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG9wZW5RdW90ZSA9IHN0YXRlLm1kLm9wdGlvbnMucXVvdGVzWzBdO1xuICAgICAgICAgICAgICAgIGNsb3NlUXVvdGUgPSBzdGF0ZS5tZC5vcHRpb25zLnF1b3Rlc1sxXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0b2tlbjIuY29udGVudCA9IHJlcGxhY2VBdCh0b2tlbjIuY29udGVudCwgdDIuaW5kZXgsIGNsb3NlUXVvdGUpO1xuICAgICAgICAgICAgICB0b2tlbnNbaXRlbS50b2tlbl0uY29udGVudCA9IHJlcGxhY2VBdCh0b2tlbnNbaXRlbS50b2tlbl0uY29udGVudCwgaXRlbS5wb3MsIG9wZW5RdW90ZSk7XG4gICAgICAgICAgICAgIHBvcyArPSBjbG9zZVF1b3RlLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgIGlmIChpdGVtLnRva2VuID09PSBpKSB7XG4gICAgICAgICAgICAgICAgcG9zICs9IG9wZW5RdW90ZS5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRleHQzID0gdG9rZW4yLmNvbnRlbnQ7XG4gICAgICAgICAgICAgIG1heCA9IHRleHQzLmxlbmd0aDtcbiAgICAgICAgICAgICAgc3RhY2subGVuZ3RoID0gajtcbiAgICAgICAgICAgICAgY29udGludWUgT1VURVI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjYW5PcGVuKSB7XG4gICAgICAgICAgc3RhY2sucHVzaCh7XG4gICAgICAgICAgICB0b2tlbjogaSxcbiAgICAgICAgICAgIHBvczogdDIuaW5kZXgsXG4gICAgICAgICAgICBzaW5nbGU6IGlzU2luZ2xlLFxuICAgICAgICAgICAgbGV2ZWw6IHRoaXNMZXZlbFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGNhbkNsb3NlICYmIGlzU2luZ2xlKSB7XG4gICAgICAgICAgdG9rZW4yLmNvbnRlbnQgPSByZXBsYWNlQXQodG9rZW4yLmNvbnRlbnQsIHQyLmluZGV4LCBBUE9TVFJPUEhFKTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG59XG5fX25hbWUocHJvY2Vzc19pbmxpbmVzLCBcInByb2Nlc3NfaW5saW5lc1wiKTtcbnZhciBzbWFydHF1b3RlcyA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gc21hcnRxdW90ZXMyKHN0YXRlKSB7XG4gIHZhciBibGtJZHg7XG4gIGlmICghc3RhdGUubWQub3B0aW9ucy50eXBvZ3JhcGhlcikge1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKGJsa0lkeCA9IHN0YXRlLnRva2Vucy5sZW5ndGggLSAxOyBibGtJZHggPj0gMDsgYmxrSWR4LS0pIHtcbiAgICBpZiAoc3RhdGUudG9rZW5zW2Jsa0lkeF0udHlwZSAhPT0gXCJpbmxpbmVcIiB8fCAhUVVPVEVfVEVTVF9SRS50ZXN0KHN0YXRlLnRva2Vuc1tibGtJZHhdLmNvbnRlbnQpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcHJvY2Vzc19pbmxpbmVzKHN0YXRlLnRva2Vuc1tibGtJZHhdLmNoaWxkcmVuLCBzdGF0ZSk7XG4gIH1cbn0sIFwic21hcnRxdW90ZXNcIik7XG5mdW5jdGlvbiBUb2tlbiQzKHR5cGUyLCB0YWcsIG5lc3RpbmcpIHtcbiAgdGhpcy50eXBlID0gdHlwZTI7XG4gIHRoaXMudGFnID0gdGFnO1xuICB0aGlzLmF0dHJzID0gbnVsbDtcbiAgdGhpcy5tYXAgPSBudWxsO1xuICB0aGlzLm5lc3RpbmcgPSBuZXN0aW5nO1xuICB0aGlzLmxldmVsID0gMDtcbiAgdGhpcy5jaGlsZHJlbiA9IG51bGw7XG4gIHRoaXMuY29udGVudCA9IFwiXCI7XG4gIHRoaXMubWFya3VwID0gXCJcIjtcbiAgdGhpcy5pbmZvID0gXCJcIjtcbiAgdGhpcy5tZXRhID0gbnVsbDtcbiAgdGhpcy5ibG9jayA9IGZhbHNlO1xuICB0aGlzLmhpZGRlbiA9IGZhbHNlO1xufVxuX19uYW1lKFRva2VuJDMsIFwiVG9rZW4kM1wiKTtcblRva2VuJDMucHJvdG90eXBlLmF0dHJJbmRleCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gYXR0ckluZGV4KG5hbWUyKSB7XG4gIHZhciBhdHRycywgaSwgbGVuO1xuICBpZiAoIXRoaXMuYXR0cnMpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgYXR0cnMgPSB0aGlzLmF0dHJzO1xuICBmb3IgKGkgPSAwLCBsZW4gPSBhdHRycy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChhdHRyc1tpXVswXSA9PT0gbmFtZTIpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59LCBcImF0dHJJbmRleFwiKTtcblRva2VuJDMucHJvdG90eXBlLmF0dHJQdXNoID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBhdHRyUHVzaChhdHRyRGF0YSkge1xuICBpZiAodGhpcy5hdHRycykge1xuICAgIHRoaXMuYXR0cnMucHVzaChhdHRyRGF0YSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5hdHRycyA9IFthdHRyRGF0YV07XG4gIH1cbn0sIFwiYXR0clB1c2hcIik7XG5Ub2tlbiQzLnByb3RvdHlwZS5hdHRyU2V0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBhdHRyU2V0KG5hbWUyLCB2YWx1ZSkge1xuICB2YXIgaWR4ID0gdGhpcy5hdHRySW5kZXgobmFtZTIpLCBhdHRyRGF0YSA9IFtuYW1lMiwgdmFsdWVdO1xuICBpZiAoaWR4IDwgMCkge1xuICAgIHRoaXMuYXR0clB1c2goYXR0ckRhdGEpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuYXR0cnNbaWR4XSA9IGF0dHJEYXRhO1xuICB9XG59LCBcImF0dHJTZXRcIik7XG5Ub2tlbiQzLnByb3RvdHlwZS5hdHRyR2V0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBhdHRyR2V0KG5hbWUyKSB7XG4gIHZhciBpZHggPSB0aGlzLmF0dHJJbmRleChuYW1lMiksIHZhbHVlID0gbnVsbDtcbiAgaWYgKGlkeCA+PSAwKSB7XG4gICAgdmFsdWUgPSB0aGlzLmF0dHJzW2lkeF1bMV07XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufSwgXCJhdHRyR2V0XCIpO1xuVG9rZW4kMy5wcm90b3R5cGUuYXR0ckpvaW4gPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIGF0dHJKb2luKG5hbWUyLCB2YWx1ZSkge1xuICB2YXIgaWR4ID0gdGhpcy5hdHRySW5kZXgobmFtZTIpO1xuICBpZiAoaWR4IDwgMCkge1xuICAgIHRoaXMuYXR0clB1c2goW25hbWUyLCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuYXR0cnNbaWR4XVsxXSA9IHRoaXMuYXR0cnNbaWR4XVsxXSArIFwiIFwiICsgdmFsdWU7XG4gIH1cbn0sIFwiYXR0ckpvaW5cIik7XG52YXIgdG9rZW4gPSBUb2tlbiQzO1xudmFyIFRva2VuJDIgPSB0b2tlbjtcbmZ1bmN0aW9uIFN0YXRlQ29yZShzcmMsIG1kLCBlbnYpIHtcbiAgdGhpcy5zcmMgPSBzcmM7XG4gIHRoaXMuZW52ID0gZW52O1xuICB0aGlzLnRva2VucyA9IFtdO1xuICB0aGlzLmlubGluZU1vZGUgPSBmYWxzZTtcbiAgdGhpcy5tZCA9IG1kO1xufVxuX19uYW1lKFN0YXRlQ29yZSwgXCJTdGF0ZUNvcmVcIik7XG5TdGF0ZUNvcmUucHJvdG90eXBlLlRva2VuID0gVG9rZW4kMjtcbnZhciBzdGF0ZV9jb3JlID0gU3RhdGVDb3JlO1xudmFyIFJ1bGVyJDIgPSBydWxlcjtcbnZhciBfcnVsZXMkMiA9IFtcbiAgW1wibm9ybWFsaXplXCIsIG5vcm1hbGl6ZV0sXG4gIFtcImJsb2NrXCIsIGJsb2NrXSxcbiAgW1wiaW5saW5lXCIsIGlubGluZV0sXG4gIFtcImxpbmtpZnlcIiwgbGlua2lmeV0sXG4gIFtcInJlcGxhY2VtZW50c1wiLCByZXBsYWNlbWVudHNdLFxuICBbXCJzbWFydHF1b3Rlc1wiLCBzbWFydHF1b3Rlc11cbl07XG5mdW5jdGlvbiBDb3JlKCkge1xuICB0aGlzLnJ1bGVyID0gbmV3IFJ1bGVyJDIoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBfcnVsZXMkMi5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMucnVsZXIucHVzaChfcnVsZXMkMltpXVswXSwgX3J1bGVzJDJbaV1bMV0pO1xuICB9XG59XG5fX25hbWUoQ29yZSwgXCJDb3JlXCIpO1xuQ29yZS5wcm90b3R5cGUucHJvY2VzcyA9IGZ1bmN0aW9uKHN0YXRlKSB7XG4gIHZhciBpLCBsLCBydWxlcztcbiAgcnVsZXMgPSB0aGlzLnJ1bGVyLmdldFJ1bGVzKFwiXCIpO1xuICBmb3IgKGkgPSAwLCBsID0gcnVsZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgcnVsZXNbaV0oc3RhdGUpO1xuICB9XG59O1xuQ29yZS5wcm90b3R5cGUuU3RhdGUgPSBzdGF0ZV9jb3JlO1xudmFyIHBhcnNlcl9jb3JlID0gQ29yZTtcbnZhciBpc1NwYWNlJGEgPSB1dGlscyQxLmlzU3BhY2U7XG5mdW5jdGlvbiBnZXRMaW5lKHN0YXRlLCBsaW5lKSB7XG4gIHZhciBwb3MgPSBzdGF0ZS5iTWFya3NbbGluZV0gKyBzdGF0ZS50U2hpZnRbbGluZV0sIG1heCA9IHN0YXRlLmVNYXJrc1tsaW5lXTtcbiAgcmV0dXJuIHN0YXRlLnNyYy5zdWJzdHIocG9zLCBtYXggLSBwb3MpO1xufVxuX19uYW1lKGdldExpbmUsIFwiZ2V0TGluZVwiKTtcbmZ1bmN0aW9uIGVzY2FwZWRTcGxpdChzdHIpIHtcbiAgdmFyIHJlc3VsdCA9IFtdLCBwb3MgPSAwLCBtYXggPSBzdHIubGVuZ3RoLCBjaCwgaXNFc2NhcGVkID0gZmFsc2UsIGxhc3RQb3MgPSAwLCBjdXJyZW50ID0gXCJcIjtcbiAgY2ggPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgaWYgKGNoID09PSAxMjQpIHtcbiAgICAgIGlmICghaXNFc2NhcGVkKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGN1cnJlbnQgKyBzdHIuc3Vic3RyaW5nKGxhc3RQb3MsIHBvcykpO1xuICAgICAgICBjdXJyZW50ID0gXCJcIjtcbiAgICAgICAgbGFzdFBvcyA9IHBvcyArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50ICs9IHN0ci5zdWJzdHJpbmcobGFzdFBvcywgcG9zIC0gMSk7XG4gICAgICAgIGxhc3RQb3MgPSBwb3M7XG4gICAgICB9XG4gICAgfVxuICAgIGlzRXNjYXBlZCA9IGNoID09PSA5MjtcbiAgICBwb3MrKztcbiAgICBjaCA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gIH1cbiAgcmVzdWx0LnB1c2goY3VycmVudCArIHN0ci5zdWJzdHJpbmcobGFzdFBvcykpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuX19uYW1lKGVzY2FwZWRTcGxpdCwgXCJlc2NhcGVkU3BsaXRcIik7XG52YXIgdGFibGUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIHRhYmxlMihzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpIHtcbiAgdmFyIGNoLCBsaW5lVGV4dCwgcG9zLCBpLCBsLCBuZXh0TGluZSwgY29sdW1ucywgY29sdW1uQ291bnQsIHRva2VuMiwgYWxpZ25zLCB0MiwgdGFibGVMaW5lcywgdGJvZHlMaW5lcywgb2xkUGFyZW50VHlwZSwgdGVybWluYXRlLCB0ZXJtaW5hdG9yUnVsZXMsIGZpcnN0Q2gsIHNlY29uZENoO1xuICBpZiAoc3RhcnRMaW5lICsgMiA+IGVuZExpbmUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxO1xuICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IHN0YXRlLmJsa0luZGVudCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHBvcyA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdO1xuICBpZiAocG9zID49IHN0YXRlLmVNYXJrc1tuZXh0TGluZV0pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZmlyc3RDaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKTtcbiAgaWYgKGZpcnN0Q2ggIT09IDEyNCAmJiBmaXJzdENoICE9PSA0NSAmJiBmaXJzdENoICE9PSA1OCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAocG9zID49IHN0YXRlLmVNYXJrc1tuZXh0TGluZV0pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc2Vjb25kQ2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MrKyk7XG4gIGlmIChzZWNvbmRDaCAhPT0gMTI0ICYmIHNlY29uZENoICE9PSA0NSAmJiBzZWNvbmRDaCAhPT0gNTggJiYgIWlzU3BhY2UkYShzZWNvbmRDaCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGZpcnN0Q2ggPT09IDQ1ICYmIGlzU3BhY2UkYShzZWNvbmRDaCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgd2hpbGUgKHBvcyA8IHN0YXRlLmVNYXJrc1tuZXh0TGluZV0pIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgaWYgKGNoICE9PSAxMjQgJiYgY2ggIT09IDQ1ICYmIGNoICE9PSA1OCAmJiAhaXNTcGFjZSRhKGNoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBwb3MrKztcbiAgfVxuICBsaW5lVGV4dCA9IGdldExpbmUoc3RhdGUsIHN0YXJ0TGluZSArIDEpO1xuICBjb2x1bW5zID0gbGluZVRleHQuc3BsaXQoXCJ8XCIpO1xuICBhbGlnbnMgPSBbXTtcbiAgZm9yIChpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICB0MiA9IGNvbHVtbnNbaV0udHJpbSgpO1xuICAgIGlmICghdDIpIHtcbiAgICAgIGlmIChpID09PSAwIHx8IGkgPT09IGNvbHVtbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCEvXjo/LSs6PyQvLnRlc3QodDIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0Mi5jaGFyQ29kZUF0KHQyLmxlbmd0aCAtIDEpID09PSA1OCkge1xuICAgICAgYWxpZ25zLnB1c2godDIuY2hhckNvZGVBdCgwKSA9PT0gNTggPyBcImNlbnRlclwiIDogXCJyaWdodFwiKTtcbiAgICB9IGVsc2UgaWYgKHQyLmNoYXJDb2RlQXQoMCkgPT09IDU4KSB7XG4gICAgICBhbGlnbnMucHVzaChcImxlZnRcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFsaWducy5wdXNoKFwiXCIpO1xuICAgIH1cbiAgfVxuICBsaW5lVGV4dCA9IGdldExpbmUoc3RhdGUsIHN0YXJ0TGluZSkudHJpbSgpO1xuICBpZiAobGluZVRleHQuaW5kZXhPZihcInxcIikgPT09IC0xKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbHVtbnMgPSBlc2NhcGVkU3BsaXQobGluZVRleHQpO1xuICBpZiAoY29sdW1ucy5sZW5ndGggJiYgY29sdW1uc1swXSA9PT0gXCJcIilcbiAgICBjb2x1bW5zLnNoaWZ0KCk7XG4gIGlmIChjb2x1bW5zLmxlbmd0aCAmJiBjb2x1bW5zW2NvbHVtbnMubGVuZ3RoIC0gMV0gPT09IFwiXCIpXG4gICAgY29sdW1ucy5wb3AoKTtcbiAgY29sdW1uQ291bnQgPSBjb2x1bW5zLmxlbmd0aDtcbiAgaWYgKGNvbHVtbkNvdW50ID09PSAwIHx8IGNvbHVtbkNvdW50ICE9PSBhbGlnbnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBvbGRQYXJlbnRUeXBlID0gc3RhdGUucGFyZW50VHlwZTtcbiAgc3RhdGUucGFyZW50VHlwZSA9IFwidGFibGVcIjtcbiAgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoXCJibG9ja3F1b3RlXCIpO1xuICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwidGFibGVfb3BlblwiLCBcInRhYmxlXCIsIDEpO1xuICB0b2tlbjIubWFwID0gdGFibGVMaW5lcyA9IFtzdGFydExpbmUsIDBdO1xuICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwidGhlYWRfb3BlblwiLCBcInRoZWFkXCIsIDEpO1xuICB0b2tlbjIubWFwID0gW3N0YXJ0TGluZSwgc3RhcnRMaW5lICsgMV07XG4gIHRva2VuMiA9IHN0YXRlLnB1c2goXCJ0cl9vcGVuXCIsIFwidHJcIiwgMSk7XG4gIHRva2VuMi5tYXAgPSBbc3RhcnRMaW5lLCBzdGFydExpbmUgKyAxXTtcbiAgZm9yIChpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwidGhfb3BlblwiLCBcInRoXCIsIDEpO1xuICAgIGlmIChhbGlnbnNbaV0pIHtcbiAgICAgIHRva2VuMi5hdHRycyA9IFtbXCJzdHlsZVwiLCBcInRleHQtYWxpZ246XCIgKyBhbGlnbnNbaV1dXTtcbiAgICB9XG4gICAgdG9rZW4yID0gc3RhdGUucHVzaChcImlubGluZVwiLCBcIlwiLCAwKTtcbiAgICB0b2tlbjIuY29udGVudCA9IGNvbHVtbnNbaV0udHJpbSgpO1xuICAgIHRva2VuMi5jaGlsZHJlbiA9IFtdO1xuICAgIHRva2VuMiA9IHN0YXRlLnB1c2goXCJ0aF9jbG9zZVwiLCBcInRoXCIsIC0xKTtcbiAgfVxuICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwidHJfY2xvc2VcIiwgXCJ0clwiLCAtMSk7XG4gIHRva2VuMiA9IHN0YXRlLnB1c2goXCJ0aGVhZF9jbG9zZVwiLCBcInRoZWFkXCIsIC0xKTtcbiAgZm9yIChuZXh0TGluZSA9IHN0YXJ0TGluZSArIDI7IG5leHRMaW5lIDwgZW5kTGluZTsgbmV4dExpbmUrKykge1xuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdGVybWluYXRlID0gZmFsc2U7XG4gICAgZm9yIChpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0ZXJtaW5hdG9yUnVsZXNbaV0oc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKSkge1xuICAgICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRlcm1pbmF0ZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGxpbmVUZXh0ID0gZ2V0TGluZShzdGF0ZSwgbmV4dExpbmUpLnRyaW0oKTtcbiAgICBpZiAoIWxpbmVUZXh0KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbHVtbnMgPSBlc2NhcGVkU3BsaXQobGluZVRleHQpO1xuICAgIGlmIChjb2x1bW5zLmxlbmd0aCAmJiBjb2x1bW5zWzBdID09PSBcIlwiKVxuICAgICAgY29sdW1ucy5zaGlmdCgpO1xuICAgIGlmIChjb2x1bW5zLmxlbmd0aCAmJiBjb2x1bW5zW2NvbHVtbnMubGVuZ3RoIC0gMV0gPT09IFwiXCIpXG4gICAgICBjb2x1bW5zLnBvcCgpO1xuICAgIGlmIChuZXh0TGluZSA9PT0gc3RhcnRMaW5lICsgMikge1xuICAgICAgdG9rZW4yID0gc3RhdGUucHVzaChcInRib2R5X29wZW5cIiwgXCJ0Ym9keVwiLCAxKTtcbiAgICAgIHRva2VuMi5tYXAgPSB0Ym9keUxpbmVzID0gW3N0YXJ0TGluZSArIDIsIDBdO1xuICAgIH1cbiAgICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwidHJfb3BlblwiLCBcInRyXCIsIDEpO1xuICAgIHRva2VuMi5tYXAgPSBbbmV4dExpbmUsIG5leHRMaW5lICsgMV07XG4gICAgZm9yIChpID0gMDsgaSA8IGNvbHVtbkNvdW50OyBpKyspIHtcbiAgICAgIHRva2VuMiA9IHN0YXRlLnB1c2goXCJ0ZF9vcGVuXCIsIFwidGRcIiwgMSk7XG4gICAgICBpZiAoYWxpZ25zW2ldKSB7XG4gICAgICAgIHRva2VuMi5hdHRycyA9IFtbXCJzdHlsZVwiLCBcInRleHQtYWxpZ246XCIgKyBhbGlnbnNbaV1dXTtcbiAgICAgIH1cbiAgICAgIHRva2VuMiA9IHN0YXRlLnB1c2goXCJpbmxpbmVcIiwgXCJcIiwgMCk7XG4gICAgICB0b2tlbjIuY29udGVudCA9IGNvbHVtbnNbaV0gPyBjb2x1bW5zW2ldLnRyaW0oKSA6IFwiXCI7XG4gICAgICB0b2tlbjIuY2hpbGRyZW4gPSBbXTtcbiAgICAgIHRva2VuMiA9IHN0YXRlLnB1c2goXCJ0ZF9jbG9zZVwiLCBcInRkXCIsIC0xKTtcbiAgICB9XG4gICAgdG9rZW4yID0gc3RhdGUucHVzaChcInRyX2Nsb3NlXCIsIFwidHJcIiwgLTEpO1xuICB9XG4gIGlmICh0Ym9keUxpbmVzKSB7XG4gICAgdG9rZW4yID0gc3RhdGUucHVzaChcInRib2R5X2Nsb3NlXCIsIFwidGJvZHlcIiwgLTEpO1xuICAgIHRib2R5TGluZXNbMV0gPSBuZXh0TGluZTtcbiAgfVxuICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwidGFibGVfY2xvc2VcIiwgXCJ0YWJsZVwiLCAtMSk7XG4gIHRhYmxlTGluZXNbMV0gPSBuZXh0TGluZTtcbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGU7XG4gIHN0YXRlLmxpbmUgPSBuZXh0TGluZTtcbiAgcmV0dXJuIHRydWU7XG59LCBcInRhYmxlXCIpO1xudmFyIGNvZGUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIGNvZGUyKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUpIHtcbiAgdmFyIG5leHRMaW5lLCBsYXN0LCB0b2tlbjI7XG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA8IDQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgbGFzdCA9IG5leHRMaW5lID0gc3RhcnRMaW5lICsgMTtcbiAgd2hpbGUgKG5leHRMaW5lIDwgZW5kTGluZSkge1xuICAgIGlmIChzdGF0ZS5pc0VtcHR5KG5leHRMaW5lKSkge1xuICAgICAgbmV4dExpbmUrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7XG4gICAgICBuZXh0TGluZSsrO1xuICAgICAgbGFzdCA9IG5leHRMaW5lO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHN0YXRlLmxpbmUgPSBsYXN0O1xuICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwiY29kZV9ibG9ja1wiLCBcImNvZGVcIiwgMCk7XG4gIHRva2VuMi5jb250ZW50ID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lLCBsYXN0LCA0ICsgc3RhdGUuYmxrSW5kZW50LCBmYWxzZSkgKyBcIlxcblwiO1xuICB0b2tlbjIubWFwID0gW3N0YXJ0TGluZSwgc3RhdGUubGluZV07XG4gIHJldHVybiB0cnVlO1xufSwgXCJjb2RlXCIpO1xudmFyIGZlbmNlID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBmZW5jZTIoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgc2lsZW50KSB7XG4gIHZhciBtYXJrZXIyLCBsZW4sIHBhcmFtcywgbmV4dExpbmUsIG1lbSwgdG9rZW4yLCBtYXJrdXAsIGhhdmVFbmRNYXJrZXIgPSBmYWxzZSwgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSwgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV07XG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChwb3MgKyAzID4gbWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIG1hcmtlcjIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuICBpZiAobWFya2VyMiAhPT0gMTI2ICYmIG1hcmtlcjIgIT09IDk2KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIG1lbSA9IHBvcztcbiAgcG9zID0gc3RhdGUuc2tpcENoYXJzKHBvcywgbWFya2VyMik7XG4gIGxlbiA9IHBvcyAtIG1lbTtcbiAgaWYgKGxlbiA8IDMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgbWFya3VwID0gc3RhdGUuc3JjLnNsaWNlKG1lbSwgcG9zKTtcbiAgcGFyYW1zID0gc3RhdGUuc3JjLnNsaWNlKHBvcywgbWF4KTtcbiAgaWYgKG1hcmtlcjIgPT09IDk2KSB7XG4gICAgaWYgKHBhcmFtcy5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyMikpID49IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIG5leHRMaW5lID0gc3RhcnRMaW5lO1xuICBmb3IgKDsgOyApIHtcbiAgICBuZXh0TGluZSsrO1xuICAgIGlmIChuZXh0TGluZSA+PSBlbmRMaW5lKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcG9zID0gbWVtID0gc3RhdGUuYk1hcmtzW25leHRMaW5lXSArIHN0YXRlLnRTaGlmdFtuZXh0TGluZV07XG4gICAgbWF4ID0gc3RhdGUuZU1hcmtzW25leHRMaW5lXTtcbiAgICBpZiAocG9zIDwgbWF4ICYmIHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCBzdGF0ZS5ibGtJbmRlbnQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gbWFya2VyMikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBwb3MgPSBzdGF0ZS5za2lwQ2hhcnMocG9zLCBtYXJrZXIyKTtcbiAgICBpZiAocG9zIC0gbWVtIDwgbGVuKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcG9zID0gc3RhdGUuc2tpcFNwYWNlcyhwb3MpO1xuICAgIGlmIChwb3MgPCBtYXgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBoYXZlRW5kTWFya2VyID0gdHJ1ZTtcbiAgICBicmVhaztcbiAgfVxuICBsZW4gPSBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXTtcbiAgc3RhdGUubGluZSA9IG5leHRMaW5lICsgKGhhdmVFbmRNYXJrZXIgPyAxIDogMCk7XG4gIHRva2VuMiA9IHN0YXRlLnB1c2goXCJmZW5jZVwiLCBcImNvZGVcIiwgMCk7XG4gIHRva2VuMi5pbmZvID0gcGFyYW1zO1xuICB0b2tlbjIuY29udGVudCA9IHN0YXRlLmdldExpbmVzKHN0YXJ0TGluZSArIDEsIG5leHRMaW5lLCBsZW4sIHRydWUpO1xuICB0b2tlbjIubWFya3VwID0gbWFya3VwO1xuICB0b2tlbjIubWFwID0gW3N0YXJ0TGluZSwgc3RhdGUubGluZV07XG4gIHJldHVybiB0cnVlO1xufSwgXCJmZW5jZVwiKTtcbnZhciBpc1NwYWNlJDkgPSB1dGlscyQxLmlzU3BhY2U7XG52YXIgYmxvY2txdW90ZSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gYmxvY2txdW90ZTIoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgc2lsZW50KSB7XG4gIHZhciBhZGp1c3RUYWIsIGNoLCBpLCBpbml0aWFsLCBsLCBsYXN0TGluZUVtcHR5LCBsaW5lcywgbmV4dExpbmUsIG9mZnNldCwgb2xkQk1hcmtzLCBvbGRCU0NvdW50LCBvbGRJbmRlbnQsIG9sZFBhcmVudFR5cGUsIG9sZFNDb3VudCwgb2xkVFNoaWZ0LCBzcGFjZUFmdGVyTWFya2VyLCB0ZXJtaW5hdGUsIHRlcm1pbmF0b3JSdWxlcywgdG9rZW4yLCBpc091dGRlbnRlZCwgb2xkTGluZU1heCA9IHN0YXRlLmxpbmVNYXgsIHBvcyA9IHN0YXRlLmJNYXJrc1tzdGFydExpbmVdICsgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0sIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdO1xuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspICE9PSA2Mikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaW5pdGlhbCA9IG9mZnNldCA9IHN0YXRlLnNDb3VudFtzdGFydExpbmVdICsgMTtcbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDMyKSB7XG4gICAgcG9zKys7XG4gICAgaW5pdGlhbCsrO1xuICAgIG9mZnNldCsrO1xuICAgIGFkanVzdFRhYiA9IGZhbHNlO1xuICAgIHNwYWNlQWZ0ZXJNYXJrZXIgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDkpIHtcbiAgICBzcGFjZUFmdGVyTWFya2VyID0gdHJ1ZTtcbiAgICBpZiAoKHN0YXRlLmJzQ291bnRbc3RhcnRMaW5lXSArIG9mZnNldCkgJSA0ID09PSAzKSB7XG4gICAgICBwb3MrKztcbiAgICAgIGluaXRpYWwrKztcbiAgICAgIG9mZnNldCsrO1xuICAgICAgYWRqdXN0VGFiID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFkanVzdFRhYiA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNwYWNlQWZ0ZXJNYXJrZXIgPSBmYWxzZTtcbiAgfVxuICBvbGRCTWFya3MgPSBbc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV1dO1xuICBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSA9IHBvcztcbiAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoaXNTcGFjZSQ5KGNoKSkge1xuICAgICAgaWYgKGNoID09PSA5KSB7XG4gICAgICAgIG9mZnNldCArPSA0IC0gKG9mZnNldCArIHN0YXRlLmJzQ291bnRbc3RhcnRMaW5lXSArIChhZGp1c3RUYWIgPyAxIDogMCkpICUgNDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9mZnNldCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcG9zKys7XG4gIH1cbiAgb2xkQlNDb3VudCA9IFtzdGF0ZS5ic0NvdW50W3N0YXJ0TGluZV1dO1xuICBzdGF0ZS5ic0NvdW50W3N0YXJ0TGluZV0gPSBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSArIDEgKyAoc3BhY2VBZnRlck1hcmtlciA/IDEgOiAwKTtcbiAgbGFzdExpbmVFbXB0eSA9IHBvcyA+PSBtYXg7XG4gIG9sZFNDb3VudCA9IFtzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXV07XG4gIHN0YXRlLnNDb3VudFtzdGFydExpbmVdID0gb2Zmc2V0IC0gaW5pdGlhbDtcbiAgb2xkVFNoaWZ0ID0gW3N0YXRlLnRTaGlmdFtzdGFydExpbmVdXTtcbiAgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0gPSBwb3MgLSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXTtcbiAgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoXCJibG9ja3F1b3RlXCIpO1xuICBvbGRQYXJlbnRUeXBlID0gc3RhdGUucGFyZW50VHlwZTtcbiAgc3RhdGUucGFyZW50VHlwZSA9IFwiYmxvY2txdW90ZVwiO1xuICBmb3IgKG5leHRMaW5lID0gc3RhcnRMaW5lICsgMTsgbmV4dExpbmUgPCBlbmRMaW5lOyBuZXh0TGluZSsrKSB7XG4gICAgaXNPdXRkZW50ZWQgPSBzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50O1xuICAgIHBvcyA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdO1xuICAgIG1heCA9IHN0YXRlLmVNYXJrc1tuZXh0TGluZV07XG4gICAgaWYgKHBvcyA+PSBtYXgpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspID09PSA2MiAmJiAhaXNPdXRkZW50ZWQpIHtcbiAgICAgIGluaXRpYWwgPSBvZmZzZXQgPSBzdGF0ZS5zQ291bnRbbmV4dExpbmVdICsgMTtcbiAgICAgIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpID09PSAzMikge1xuICAgICAgICBwb3MrKztcbiAgICAgICAgaW5pdGlhbCsrO1xuICAgICAgICBvZmZzZXQrKztcbiAgICAgICAgYWRqdXN0VGFiID0gZmFsc2U7XG4gICAgICAgIHNwYWNlQWZ0ZXJNYXJrZXIgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpID09PSA5KSB7XG4gICAgICAgIHNwYWNlQWZ0ZXJNYXJrZXIgPSB0cnVlO1xuICAgICAgICBpZiAoKHN0YXRlLmJzQ291bnRbbmV4dExpbmVdICsgb2Zmc2V0KSAlIDQgPT09IDMpIHtcbiAgICAgICAgICBwb3MrKztcbiAgICAgICAgICBpbml0aWFsKys7XG4gICAgICAgICAgb2Zmc2V0Kys7XG4gICAgICAgICAgYWRqdXN0VGFiID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRqdXN0VGFiID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3BhY2VBZnRlck1hcmtlciA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgb2xkQk1hcmtzLnB1c2goc3RhdGUuYk1hcmtzW25leHRMaW5lXSk7XG4gICAgICBzdGF0ZS5iTWFya3NbbmV4dExpbmVdID0gcG9zO1xuICAgICAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgICAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICAgIGlmIChpc1NwYWNlJDkoY2gpKSB7XG4gICAgICAgICAgaWYgKGNoID09PSA5KSB7XG4gICAgICAgICAgICBvZmZzZXQgKz0gNCAtIChvZmZzZXQgKyBzdGF0ZS5ic0NvdW50W25leHRMaW5lXSArIChhZGp1c3RUYWIgPyAxIDogMCkpICUgNDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2Zmc2V0Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHBvcysrO1xuICAgICAgfVxuICAgICAgbGFzdExpbmVFbXB0eSA9IHBvcyA+PSBtYXg7XG4gICAgICBvbGRCU0NvdW50LnB1c2goc3RhdGUuYnNDb3VudFtuZXh0TGluZV0pO1xuICAgICAgc3RhdGUuYnNDb3VudFtuZXh0TGluZV0gPSBzdGF0ZS5zQ291bnRbbmV4dExpbmVdICsgMSArIChzcGFjZUFmdGVyTWFya2VyID8gMSA6IDApO1xuICAgICAgb2xkU0NvdW50LnB1c2goc3RhdGUuc0NvdW50W25leHRMaW5lXSk7XG4gICAgICBzdGF0ZS5zQ291bnRbbmV4dExpbmVdID0gb2Zmc2V0IC0gaW5pdGlhbDtcbiAgICAgIG9sZFRTaGlmdC5wdXNoKHN0YXRlLnRTaGlmdFtuZXh0TGluZV0pO1xuICAgICAgc3RhdGUudFNoaWZ0W25leHRMaW5lXSA9IHBvcyAtIHN0YXRlLmJNYXJrc1tuZXh0TGluZV07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGxhc3RMaW5lRW1wdHkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdGVybWluYXRvclJ1bGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKHRlcm1pbmF0b3JSdWxlc1tpXShzdGF0ZSwgbmV4dExpbmUsIGVuZExpbmUsIHRydWUpKSB7XG4gICAgICAgIHRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICBzdGF0ZS5saW5lTWF4ID0gbmV4dExpbmU7XG4gICAgICBpZiAoc3RhdGUuYmxrSW5kZW50ICE9PSAwKSB7XG4gICAgICAgIG9sZEJNYXJrcy5wdXNoKHN0YXRlLmJNYXJrc1tuZXh0TGluZV0pO1xuICAgICAgICBvbGRCU0NvdW50LnB1c2goc3RhdGUuYnNDb3VudFtuZXh0TGluZV0pO1xuICAgICAgICBvbGRUU2hpZnQucHVzaChzdGF0ZS50U2hpZnRbbmV4dExpbmVdKTtcbiAgICAgICAgb2xkU0NvdW50LnB1c2goc3RhdGUuc0NvdW50W25leHRMaW5lXSk7XG4gICAgICAgIHN0YXRlLnNDb3VudFtuZXh0TGluZV0gLT0gc3RhdGUuYmxrSW5kZW50O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIG9sZEJNYXJrcy5wdXNoKHN0YXRlLmJNYXJrc1tuZXh0TGluZV0pO1xuICAgIG9sZEJTQ291bnQucHVzaChzdGF0ZS5ic0NvdW50W25leHRMaW5lXSk7XG4gICAgb2xkVFNoaWZ0LnB1c2goc3RhdGUudFNoaWZ0W25leHRMaW5lXSk7XG4gICAgb2xkU0NvdW50LnB1c2goc3RhdGUuc0NvdW50W25leHRMaW5lXSk7XG4gICAgc3RhdGUuc0NvdW50W25leHRMaW5lXSA9IC0xO1xuICB9XG4gIG9sZEluZGVudCA9IHN0YXRlLmJsa0luZGVudDtcbiAgc3RhdGUuYmxrSW5kZW50ID0gMDtcbiAgdG9rZW4yID0gc3RhdGUucHVzaChcImJsb2NrcXVvdGVfb3BlblwiLCBcImJsb2NrcXVvdGVcIiwgMSk7XG4gIHRva2VuMi5tYXJrdXAgPSBcIj5cIjtcbiAgdG9rZW4yLm1hcCA9IGxpbmVzID0gW3N0YXJ0TGluZSwgMF07XG4gIHN0YXRlLm1kLmJsb2NrLnRva2VuaXplKHN0YXRlLCBzdGFydExpbmUsIG5leHRMaW5lKTtcbiAgdG9rZW4yID0gc3RhdGUucHVzaChcImJsb2NrcXVvdGVfY2xvc2VcIiwgXCJibG9ja3F1b3RlXCIsIC0xKTtcbiAgdG9rZW4yLm1hcmt1cCA9IFwiPlwiO1xuICBzdGF0ZS5saW5lTWF4ID0gb2xkTGluZU1heDtcbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGU7XG4gIGxpbmVzWzFdID0gc3RhdGUubGluZTtcbiAgZm9yIChpID0gMDsgaSA8IG9sZFRTaGlmdC5sZW5ndGg7IGkrKykge1xuICAgIHN0YXRlLmJNYXJrc1tpICsgc3RhcnRMaW5lXSA9IG9sZEJNYXJrc1tpXTtcbiAgICBzdGF0ZS50U2hpZnRbaSArIHN0YXJ0TGluZV0gPSBvbGRUU2hpZnRbaV07XG4gICAgc3RhdGUuc0NvdW50W2kgKyBzdGFydExpbmVdID0gb2xkU0NvdW50W2ldO1xuICAgIHN0YXRlLmJzQ291bnRbaSArIHN0YXJ0TGluZV0gPSBvbGRCU0NvdW50W2ldO1xuICB9XG4gIHN0YXRlLmJsa0luZGVudCA9IG9sZEluZGVudDtcbiAgcmV0dXJuIHRydWU7XG59LCBcImJsb2NrcXVvdGVcIik7XG52YXIgaXNTcGFjZSQ4ID0gdXRpbHMkMS5pc1NwYWNlO1xudmFyIGhyID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBocjIoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgc2lsZW50KSB7XG4gIHZhciBtYXJrZXIyLCBjbnQsIGNoLCB0b2tlbjIsIHBvcyA9IHN0YXRlLmJNYXJrc1tzdGFydExpbmVdICsgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0sIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdO1xuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBtYXJrZXIyID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspO1xuICBpZiAobWFya2VyMiAhPT0gNDIgJiYgbWFya2VyMiAhPT0gNDUgJiYgbWFya2VyMiAhPT0gOTUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY250ID0gMTtcbiAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspO1xuICAgIGlmIChjaCAhPT0gbWFya2VyMiAmJiAhaXNTcGFjZSQ4KGNoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoY2ggPT09IG1hcmtlcjIpIHtcbiAgICAgIGNudCsrO1xuICAgIH1cbiAgfVxuICBpZiAoY250IDwgMykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgc3RhdGUubGluZSA9IHN0YXJ0TGluZSArIDE7XG4gIHRva2VuMiA9IHN0YXRlLnB1c2goXCJoclwiLCBcImhyXCIsIDApO1xuICB0b2tlbjIubWFwID0gW3N0YXJ0TGluZSwgc3RhdGUubGluZV07XG4gIHRva2VuMi5tYXJrdXAgPSBBcnJheShjbnQgKyAxKS5qb2luKFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyMikpO1xuICByZXR1cm4gdHJ1ZTtcbn0sIFwiaHJcIik7XG52YXIgaXNTcGFjZSQ3ID0gdXRpbHMkMS5pc1NwYWNlO1xuZnVuY3Rpb24gc2tpcEJ1bGxldExpc3RNYXJrZXIoc3RhdGUsIHN0YXJ0TGluZSkge1xuICB2YXIgbWFya2VyMiwgcG9zLCBtYXgsIGNoO1xuICBwb3MgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdO1xuICBtYXggPSBzdGF0ZS5lTWFya3Nbc3RhcnRMaW5lXTtcbiAgbWFya2VyMiA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKTtcbiAgaWYgKG1hcmtlcjIgIT09IDQyICYmIG1hcmtlcjIgIT09IDQ1ICYmIG1hcmtlcjIgIT09IDQzKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmIChwb3MgPCBtYXgpIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgaWYgKCFpc1NwYWNlJDcoY2gpKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiBwb3M7XG59XG5fX25hbWUoc2tpcEJ1bGxldExpc3RNYXJrZXIsIFwic2tpcEJ1bGxldExpc3RNYXJrZXJcIik7XG5mdW5jdGlvbiBza2lwT3JkZXJlZExpc3RNYXJrZXIoc3RhdGUsIHN0YXJ0TGluZSkge1xuICB2YXIgY2gsIHN0YXJ0ID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSwgcG9zID0gc3RhcnQsIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdO1xuICBpZiAocG9zICsgMSA+PSBtYXgpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MrKyk7XG4gIGlmIChjaCA8IDQ4IHx8IGNoID4gNTcpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgZm9yICg7IDsgKSB7XG4gICAgaWYgKHBvcyA+PSBtYXgpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MrKyk7XG4gICAgaWYgKGNoID49IDQ4ICYmIGNoIDw9IDU3KSB7XG4gICAgICBpZiAocG9zIC0gc3RhcnQgPj0gMTApIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChjaCA9PT0gNDEgfHwgY2ggPT09IDQ2KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmIChwb3MgPCBtYXgpIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgaWYgKCFpc1NwYWNlJDcoY2gpKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiBwb3M7XG59XG5fX25hbWUoc2tpcE9yZGVyZWRMaXN0TWFya2VyLCBcInNraXBPcmRlcmVkTGlzdE1hcmtlclwiKTtcbmZ1bmN0aW9uIG1hcmtUaWdodFBhcmFncmFwaHMoc3RhdGUsIGlkeCkge1xuICB2YXIgaSwgbCwgbGV2ZWwgPSBzdGF0ZS5sZXZlbCArIDI7XG4gIGZvciAoaSA9IGlkeCArIDIsIGwgPSBzdGF0ZS50b2tlbnMubGVuZ3RoIC0gMjsgaSA8IGw7IGkrKykge1xuICAgIGlmIChzdGF0ZS50b2tlbnNbaV0ubGV2ZWwgPT09IGxldmVsICYmIHN0YXRlLnRva2Vuc1tpXS50eXBlID09PSBcInBhcmFncmFwaF9vcGVuXCIpIHtcbiAgICAgIHN0YXRlLnRva2Vuc1tpICsgMl0uaGlkZGVuID0gdHJ1ZTtcbiAgICAgIHN0YXRlLnRva2Vuc1tpXS5oaWRkZW4gPSB0cnVlO1xuICAgICAgaSArPSAyO1xuICAgIH1cbiAgfVxufVxuX19uYW1lKG1hcmtUaWdodFBhcmFncmFwaHMsIFwibWFya1RpZ2h0UGFyYWdyYXBoc1wiKTtcbnZhciBsaXN0JDEgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIGxpc3Qoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgc2lsZW50KSB7XG4gIHZhciBjaCwgY29udGVudFN0YXJ0LCBpLCBpbmRlbnQsIGluZGVudEFmdGVyTWFya2VyLCBpbml0aWFsLCBpc09yZGVyZWQsIGl0ZW1MaW5lcywgbCwgbGlzdExpbmVzLCBsaXN0VG9rSWR4LCBtYXJrZXJDaGFyQ29kZSwgbWFya2VyVmFsdWUsIG1heCwgbmV4dExpbmUsIG9mZnNldCwgb2xkTGlzdEluZGVudCwgb2xkUGFyZW50VHlwZSwgb2xkU0NvdW50LCBvbGRUU2hpZnQsIG9sZFRpZ2h0LCBwb3MsIHBvc0FmdGVyTWFya2VyLCBwcmV2RW1wdHlFbmQsIHN0YXJ0LCB0ZXJtaW5hdGUsIHRlcm1pbmF0b3JSdWxlcywgdG9rZW4yLCBpc1Rlcm1pbmF0aW5nUGFyYWdyYXBoID0gZmFsc2UsIHRpZ2h0ID0gdHJ1ZTtcbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHN0YXRlLmxpc3RJbmRlbnQgPj0gMCAmJiBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmxpc3RJbmRlbnQgPj0gNCAmJiBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSA8IHN0YXRlLmJsa0luZGVudCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc2lsZW50ICYmIHN0YXRlLnBhcmVudFR5cGUgPT09IFwicGFyYWdyYXBoXCIpIHtcbiAgICBpZiAoc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0gPj0gc3RhdGUuYmxrSW5kZW50KSB7XG4gICAgICBpc1Rlcm1pbmF0aW5nUGFyYWdyYXBoID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKChwb3NBZnRlck1hcmtlciA9IHNraXBPcmRlcmVkTGlzdE1hcmtlcihzdGF0ZSwgc3RhcnRMaW5lKSkgPj0gMCkge1xuICAgIGlzT3JkZXJlZCA9IHRydWU7XG4gICAgc3RhcnQgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdO1xuICAgIG1hcmtlclZhbHVlID0gTnVtYmVyKHN0YXRlLnNyYy5zbGljZShzdGFydCwgcG9zQWZ0ZXJNYXJrZXIgLSAxKSk7XG4gICAgaWYgKGlzVGVybWluYXRpbmdQYXJhZ3JhcGggJiYgbWFya2VyVmFsdWUgIT09IDEpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSBpZiAoKHBvc0FmdGVyTWFya2VyID0gc2tpcEJ1bGxldExpc3RNYXJrZXIoc3RhdGUsIHN0YXJ0TGluZSkpID49IDApIHtcbiAgICBpc09yZGVyZWQgPSBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGlzVGVybWluYXRpbmdQYXJhZ3JhcGgpIHtcbiAgICBpZiAoc3RhdGUuc2tpcFNwYWNlcyhwb3NBZnRlck1hcmtlcikgPj0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV0pXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgbWFya2VyQ2hhckNvZGUgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3NBZnRlck1hcmtlciAtIDEpO1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgbGlzdFRva0lkeCA9IHN0YXRlLnRva2Vucy5sZW5ndGg7XG4gIGlmIChpc09yZGVyZWQpIHtcbiAgICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwib3JkZXJlZF9saXN0X29wZW5cIiwgXCJvbFwiLCAxKTtcbiAgICBpZiAobWFya2VyVmFsdWUgIT09IDEpIHtcbiAgICAgIHRva2VuMi5hdHRycyA9IFtbXCJzdGFydFwiLCBtYXJrZXJWYWx1ZV1dO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwiYnVsbGV0X2xpc3Rfb3BlblwiLCBcInVsXCIsIDEpO1xuICB9XG4gIHRva2VuMi5tYXAgPSBsaXN0TGluZXMgPSBbc3RhcnRMaW5lLCAwXTtcbiAgdG9rZW4yLm1hcmt1cCA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyQ2hhckNvZGUpO1xuICBuZXh0TGluZSA9IHN0YXJ0TGluZTtcbiAgcHJldkVtcHR5RW5kID0gZmFsc2U7XG4gIHRlcm1pbmF0b3JSdWxlcyA9IHN0YXRlLm1kLmJsb2NrLnJ1bGVyLmdldFJ1bGVzKFwibGlzdFwiKTtcbiAgb2xkUGFyZW50VHlwZSA9IHN0YXRlLnBhcmVudFR5cGU7XG4gIHN0YXRlLnBhcmVudFR5cGUgPSBcImxpc3RcIjtcbiAgd2hpbGUgKG5leHRMaW5lIDwgZW5kTGluZSkge1xuICAgIHBvcyA9IHBvc0FmdGVyTWFya2VyO1xuICAgIG1heCA9IHN0YXRlLmVNYXJrc1tuZXh0TGluZV07XG4gICAgaW5pdGlhbCA9IG9mZnNldCA9IHN0YXRlLnNDb3VudFtuZXh0TGluZV0gKyBwb3NBZnRlck1hcmtlciAtIChzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdKTtcbiAgICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICBpZiAoY2ggPT09IDkpIHtcbiAgICAgICAgb2Zmc2V0ICs9IDQgLSAob2Zmc2V0ICsgc3RhdGUuYnNDb3VudFtuZXh0TGluZV0pICUgNDtcbiAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDMyKSB7XG4gICAgICAgIG9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBwb3MrKztcbiAgICB9XG4gICAgY29udGVudFN0YXJ0ID0gcG9zO1xuICAgIGlmIChjb250ZW50U3RhcnQgPj0gbWF4KSB7XG4gICAgICBpbmRlbnRBZnRlck1hcmtlciA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGVudEFmdGVyTWFya2VyID0gb2Zmc2V0IC0gaW5pdGlhbDtcbiAgICB9XG4gICAgaWYgKGluZGVudEFmdGVyTWFya2VyID4gNCkge1xuICAgICAgaW5kZW50QWZ0ZXJNYXJrZXIgPSAxO1xuICAgIH1cbiAgICBpbmRlbnQgPSBpbml0aWFsICsgaW5kZW50QWZ0ZXJNYXJrZXI7XG4gICAgdG9rZW4yID0gc3RhdGUucHVzaChcImxpc3RfaXRlbV9vcGVuXCIsIFwibGlcIiwgMSk7XG4gICAgdG9rZW4yLm1hcmt1cCA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyQ2hhckNvZGUpO1xuICAgIHRva2VuMi5tYXAgPSBpdGVtTGluZXMgPSBbc3RhcnRMaW5lLCAwXTtcbiAgICBpZiAoaXNPcmRlcmVkKSB7XG4gICAgICB0b2tlbjIuaW5mbyA9IHN0YXRlLnNyYy5zbGljZShzdGFydCwgcG9zQWZ0ZXJNYXJrZXIgLSAxKTtcbiAgICB9XG4gICAgb2xkVGlnaHQgPSBzdGF0ZS50aWdodDtcbiAgICBvbGRUU2hpZnQgPSBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXTtcbiAgICBvbGRTQ291bnQgPSBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXTtcbiAgICBvbGRMaXN0SW5kZW50ID0gc3RhdGUubGlzdEluZGVudDtcbiAgICBzdGF0ZS5saXN0SW5kZW50ID0gc3RhdGUuYmxrSW5kZW50O1xuICAgIHN0YXRlLmJsa0luZGVudCA9IGluZGVudDtcbiAgICBzdGF0ZS50aWdodCA9IHRydWU7XG4gICAgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0gPSBjb250ZW50U3RhcnQgLSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXTtcbiAgICBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSA9IG9mZnNldDtcbiAgICBpZiAoY29udGVudFN0YXJ0ID49IG1heCAmJiBzdGF0ZS5pc0VtcHR5KHN0YXJ0TGluZSArIDEpKSB7XG4gICAgICBzdGF0ZS5saW5lID0gTWF0aC5taW4oc3RhdGUubGluZSArIDIsIGVuZExpbmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5tZC5ibG9jay50b2tlbml6ZShzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKCFzdGF0ZS50aWdodCB8fCBwcmV2RW1wdHlFbmQpIHtcbiAgICAgIHRpZ2h0ID0gZmFsc2U7XG4gICAgfVxuICAgIHByZXZFbXB0eUVuZCA9IHN0YXRlLmxpbmUgLSBzdGFydExpbmUgPiAxICYmIHN0YXRlLmlzRW1wdHkoc3RhdGUubGluZSAtIDEpO1xuICAgIHN0YXRlLmJsa0luZGVudCA9IHN0YXRlLmxpc3RJbmRlbnQ7XG4gICAgc3RhdGUubGlzdEluZGVudCA9IG9sZExpc3RJbmRlbnQ7XG4gICAgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0gPSBvbGRUU2hpZnQ7XG4gICAgc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gPSBvbGRTQ291bnQ7XG4gICAgc3RhdGUudGlnaHQgPSBvbGRUaWdodDtcbiAgICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwibGlzdF9pdGVtX2Nsb3NlXCIsIFwibGlcIiwgLTEpO1xuICAgIHRva2VuMi5tYXJrdXAgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlckNoYXJDb2RlKTtcbiAgICBuZXh0TGluZSA9IHN0YXJ0TGluZSA9IHN0YXRlLmxpbmU7XG4gICAgaXRlbUxpbmVzWzFdID0gbmV4dExpbmU7XG4gICAgY29udGVudFN0YXJ0ID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV07XG4gICAgaWYgKG5leHRMaW5lID49IGVuZExpbmUpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IHN0YXRlLmJsa0luZGVudCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdGVybWluYXRlID0gZmFsc2U7XG4gICAgZm9yIChpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0ZXJtaW5hdG9yUnVsZXNbaV0oc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKSkge1xuICAgICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRlcm1pbmF0ZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChpc09yZGVyZWQpIHtcbiAgICAgIHBvc0FmdGVyTWFya2VyID0gc2tpcE9yZGVyZWRMaXN0TWFya2VyKHN0YXRlLCBuZXh0TGluZSk7XG4gICAgICBpZiAocG9zQWZ0ZXJNYXJrZXIgPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSBzdGF0ZS5iTWFya3NbbmV4dExpbmVdICsgc3RhdGUudFNoaWZ0W25leHRMaW5lXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcG9zQWZ0ZXJNYXJrZXIgPSBza2lwQnVsbGV0TGlzdE1hcmtlcihzdGF0ZSwgbmV4dExpbmUpO1xuICAgICAgaWYgKHBvc0FmdGVyTWFya2VyIDwgMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG1hcmtlckNoYXJDb2RlICE9PSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3NBZnRlck1hcmtlciAtIDEpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGlzT3JkZXJlZCkge1xuICAgIHRva2VuMiA9IHN0YXRlLnB1c2goXCJvcmRlcmVkX2xpc3RfY2xvc2VcIiwgXCJvbFwiLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgdG9rZW4yID0gc3RhdGUucHVzaChcImJ1bGxldF9saXN0X2Nsb3NlXCIsIFwidWxcIiwgLTEpO1xuICB9XG4gIHRva2VuMi5tYXJrdXAgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlckNoYXJDb2RlKTtcbiAgbGlzdExpbmVzWzFdID0gbmV4dExpbmU7XG4gIHN0YXRlLmxpbmUgPSBuZXh0TGluZTtcbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGU7XG4gIGlmICh0aWdodCkge1xuICAgIG1hcmtUaWdodFBhcmFncmFwaHMoc3RhdGUsIGxpc3RUb2tJZHgpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufSwgXCJsaXN0XCIpO1xudmFyIG5vcm1hbGl6ZVJlZmVyZW5jZSQyID0gdXRpbHMkMS5ub3JtYWxpemVSZWZlcmVuY2U7XG52YXIgaXNTcGFjZSQ2ID0gdXRpbHMkMS5pc1NwYWNlO1xudmFyIHJlZmVyZW5jZSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gcmVmZXJlbmNlMihzdGF0ZSwgc3RhcnRMaW5lLCBfZW5kTGluZSwgc2lsZW50KSB7XG4gIHZhciBjaCwgZGVzdEVuZFBvcywgZGVzdEVuZExpbmVObywgZW5kTGluZSwgaHJlZiwgaSwgbCwgbGFiZWwsIGxhYmVsRW5kLCBvbGRQYXJlbnRUeXBlLCByZXMsIHN0YXJ0LCBzdHIsIHRlcm1pbmF0ZSwgdGVybWluYXRvclJ1bGVzLCB0aXRsZSwgbGluZXMgPSAwLCBwb3MgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdLCBtYXggPSBzdGF0ZS5lTWFya3Nbc3RhcnRMaW5lXSwgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxO1xuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gOTEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgd2hpbGUgKCsrcG9zIDwgbWF4KSB7XG4gICAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDkzICYmIHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyAtIDEpICE9PSA5Mikge1xuICAgICAgaWYgKHBvcyArIDEgPT09IG1heCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zICsgMSkgIT09IDU4KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBlbmRMaW5lID0gc3RhdGUubGluZU1heDtcbiAgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoXCJyZWZlcmVuY2VcIik7XG4gIG9sZFBhcmVudFR5cGUgPSBzdGF0ZS5wYXJlbnRUeXBlO1xuICBzdGF0ZS5wYXJlbnRUeXBlID0gXCJyZWZlcmVuY2VcIjtcbiAgZm9yICg7IG5leHRMaW5lIDwgZW5kTGluZSAmJiAhc3RhdGUuaXNFbXB0eShuZXh0TGluZSk7IG5leHRMaW5lKyspIHtcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+IDMpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdGVybWluYXRvclJ1bGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKHRlcm1pbmF0b3JSdWxlc1tpXShzdGF0ZSwgbmV4dExpbmUsIGVuZExpbmUsIHRydWUpKSB7XG4gICAgICAgIHRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgc3RyID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lLCBuZXh0TGluZSwgc3RhdGUuYmxrSW5kZW50LCBmYWxzZSkudHJpbSgpO1xuICBtYXggPSBzdHIubGVuZ3RoO1xuICBmb3IgKHBvcyA9IDE7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICBjaCA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gICAgaWYgKGNoID09PSA5MSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoY2ggPT09IDkzKSB7XG4gICAgICBsYWJlbEVuZCA9IHBvcztcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSBpZiAoY2ggPT09IDEwKSB7XG4gICAgICBsaW5lcysrO1xuICAgIH0gZWxzZSBpZiAoY2ggPT09IDkyKSB7XG4gICAgICBwb3MrKztcbiAgICAgIGlmIChwb3MgPCBtYXggJiYgc3RyLmNoYXJDb2RlQXQocG9zKSA9PT0gMTApIHtcbiAgICAgICAgbGluZXMrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGxhYmVsRW5kIDwgMCB8fCBzdHIuY2hhckNvZGVBdChsYWJlbEVuZCArIDEpICE9PSA1OCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmb3IgKHBvcyA9IGxhYmVsRW5kICsgMjsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgIGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoY2ggPT09IDEwKSB7XG4gICAgICBsaW5lcysrO1xuICAgIH0gZWxzZSBpZiAoaXNTcGFjZSQ2KGNoKSlcbiAgICAgIDtcbiAgICBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXMgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua0Rlc3RpbmF0aW9uKHN0ciwgcG9zLCBtYXgpO1xuICBpZiAoIXJlcy5vaykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBocmVmID0gc3RhdGUubWQubm9ybWFsaXplTGluayhyZXMuc3RyKTtcbiAgaWYgKCFzdGF0ZS5tZC52YWxpZGF0ZUxpbmsoaHJlZikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcG9zID0gcmVzLnBvcztcbiAgbGluZXMgKz0gcmVzLmxpbmVzO1xuICBkZXN0RW5kUG9zID0gcG9zO1xuICBkZXN0RW5kTGluZU5vID0gbGluZXM7XG4gIHN0YXJ0ID0gcG9zO1xuICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgIGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoY2ggPT09IDEwKSB7XG4gICAgICBsaW5lcysrO1xuICAgIH0gZWxzZSBpZiAoaXNTcGFjZSQ2KGNoKSlcbiAgICAgIDtcbiAgICBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXMgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua1RpdGxlKHN0ciwgcG9zLCBtYXgpO1xuICBpZiAocG9zIDwgbWF4ICYmIHN0YXJ0ICE9PSBwb3MgJiYgcmVzLm9rKSB7XG4gICAgdGl0bGUgPSByZXMuc3RyO1xuICAgIHBvcyA9IHJlcy5wb3M7XG4gICAgbGluZXMgKz0gcmVzLmxpbmVzO1xuICB9IGVsc2Uge1xuICAgIHRpdGxlID0gXCJcIjtcbiAgICBwb3MgPSBkZXN0RW5kUG9zO1xuICAgIGxpbmVzID0gZGVzdEVuZExpbmVObztcbiAgfVxuICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgY2ggPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuICAgIGlmICghaXNTcGFjZSQ2KGNoKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHBvcysrO1xuICB9XG4gIGlmIChwb3MgPCBtYXggJiYgc3RyLmNoYXJDb2RlQXQocG9zKSAhPT0gMTApIHtcbiAgICBpZiAodGl0bGUpIHtcbiAgICAgIHRpdGxlID0gXCJcIjtcbiAgICAgIHBvcyA9IGRlc3RFbmRQb3M7XG4gICAgICBsaW5lcyA9IGRlc3RFbmRMaW5lTm87XG4gICAgICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgICAgIGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgICAgaWYgKCFpc1NwYWNlJDYoY2gpKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcG9zKys7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChwb3MgPCBtYXggJiYgc3RyLmNoYXJDb2RlQXQocG9zKSAhPT0gMTApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgbGFiZWwgPSBub3JtYWxpemVSZWZlcmVuY2UkMihzdHIuc2xpY2UoMSwgbGFiZWxFbmQpKTtcbiAgaWYgKCFsYWJlbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBzdGF0ZS5lbnYucmVmZXJlbmNlcyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHN0YXRlLmVudi5yZWZlcmVuY2VzID0ge307XG4gIH1cbiAgaWYgKHR5cGVvZiBzdGF0ZS5lbnYucmVmZXJlbmNlc1tsYWJlbF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBzdGF0ZS5lbnYucmVmZXJlbmNlc1tsYWJlbF0gPSB7IHRpdGxlLCBocmVmIH07XG4gIH1cbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGU7XG4gIHN0YXRlLmxpbmUgPSBzdGFydExpbmUgKyBsaW5lcyArIDE7XG4gIHJldHVybiB0cnVlO1xufSwgXCJyZWZlcmVuY2VcIik7XG52YXIgaHRtbF9ibG9ja3MgPSBbXG4gIFwiYWRkcmVzc1wiLFxuICBcImFydGljbGVcIixcbiAgXCJhc2lkZVwiLFxuICBcImJhc2VcIixcbiAgXCJiYXNlZm9udFwiLFxuICBcImJsb2NrcXVvdGVcIixcbiAgXCJib2R5XCIsXG4gIFwiY2FwdGlvblwiLFxuICBcImNlbnRlclwiLFxuICBcImNvbFwiLFxuICBcImNvbGdyb3VwXCIsXG4gIFwiZGRcIixcbiAgXCJkZXRhaWxzXCIsXG4gIFwiZGlhbG9nXCIsXG4gIFwiZGlyXCIsXG4gIFwiZGl2XCIsXG4gIFwiZGxcIixcbiAgXCJkdFwiLFxuICBcImZpZWxkc2V0XCIsXG4gIFwiZmlnY2FwdGlvblwiLFxuICBcImZpZ3VyZVwiLFxuICBcImZvb3RlclwiLFxuICBcImZvcm1cIixcbiAgXCJmcmFtZVwiLFxuICBcImZyYW1lc2V0XCIsXG4gIFwiaDFcIixcbiAgXCJoMlwiLFxuICBcImgzXCIsXG4gIFwiaDRcIixcbiAgXCJoNVwiLFxuICBcImg2XCIsXG4gIFwiaGVhZFwiLFxuICBcImhlYWRlclwiLFxuICBcImhyXCIsXG4gIFwiaHRtbFwiLFxuICBcImlmcmFtZVwiLFxuICBcImxlZ2VuZFwiLFxuICBcImxpXCIsXG4gIFwibGlua1wiLFxuICBcIm1haW5cIixcbiAgXCJtZW51XCIsXG4gIFwibWVudWl0ZW1cIixcbiAgXCJuYXZcIixcbiAgXCJub2ZyYW1lc1wiLFxuICBcIm9sXCIsXG4gIFwib3B0Z3JvdXBcIixcbiAgXCJvcHRpb25cIixcbiAgXCJwXCIsXG4gIFwicGFyYW1cIixcbiAgXCJzZWN0aW9uXCIsXG4gIFwic291cmNlXCIsXG4gIFwic3VtbWFyeVwiLFxuICBcInRhYmxlXCIsXG4gIFwidGJvZHlcIixcbiAgXCJ0ZFwiLFxuICBcInRmb290XCIsXG4gIFwidGhcIixcbiAgXCJ0aGVhZFwiLFxuICBcInRpdGxlXCIsXG4gIFwidHJcIixcbiAgXCJ0cmFja1wiLFxuICBcInVsXCJcbl07XG52YXIgaHRtbF9yZSA9IHt9O1xudmFyIGF0dHJfbmFtZSA9IFwiW2EtekEtWl86XVthLXpBLVowLTk6Ll8tXSpcIjtcbnZhciB1bnF1b3RlZCA9IFwiW15cXFwiJz08PmBcXFxceDAwLVxcXFx4MjBdK1wiO1xudmFyIHNpbmdsZV9xdW90ZWQgPSBcIidbXiddKidcIjtcbnZhciBkb3VibGVfcXVvdGVkID0gJ1wiW15cIl0qXCInO1xudmFyIGF0dHJfdmFsdWUgPSBcIig/OlwiICsgdW5xdW90ZWQgKyBcInxcIiArIHNpbmdsZV9xdW90ZWQgKyBcInxcIiArIGRvdWJsZV9xdW90ZWQgKyBcIilcIjtcbnZhciBhdHRyaWJ1dGUgPSBcIig/OlxcXFxzK1wiICsgYXR0cl9uYW1lICsgXCIoPzpcXFxccyo9XFxcXHMqXCIgKyBhdHRyX3ZhbHVlICsgXCIpPylcIjtcbnZhciBvcGVuX3RhZyA9IFwiPFtBLVphLXpdW0EtWmEtejAtOVxcXFwtXSpcIiArIGF0dHJpYnV0ZSArIFwiKlxcXFxzKlxcXFwvPz5cIjtcbnZhciBjbG9zZV90YWcgPSBcIjxcXFxcL1tBLVphLXpdW0EtWmEtejAtOVxcXFwtXSpcXFxccyo+XCI7XG52YXIgY29tbWVudCA9IFwiPCEtLS0tPnw8IS0tKD86LT9bXj4tXSkoPzotP1teLV0pKi0tPlwiO1xudmFyIHByb2Nlc3NpbmcgPSBcIjxbP11bXFxcXHNcXFxcU10qP1s/XT5cIjtcbnZhciBkZWNsYXJhdGlvbiA9IFwiPCFbQS1aXStcXFxccytbXj5dKj5cIjtcbnZhciBjZGF0YSA9IFwiPCFcXFxcW0NEQVRBXFxcXFtbXFxcXHNcXFxcU10qP1xcXFxdXFxcXF0+XCI7XG52YXIgSFRNTF9UQUdfUkUkMSA9IG5ldyBSZWdFeHAoXCJeKD86XCIgKyBvcGVuX3RhZyArIFwifFwiICsgY2xvc2VfdGFnICsgXCJ8XCIgKyBjb21tZW50ICsgXCJ8XCIgKyBwcm9jZXNzaW5nICsgXCJ8XCIgKyBkZWNsYXJhdGlvbiArIFwifFwiICsgY2RhdGEgKyBcIilcIik7XG52YXIgSFRNTF9PUEVOX0NMT1NFX1RBR19SRSQxID0gbmV3IFJlZ0V4cChcIl4oPzpcIiArIG9wZW5fdGFnICsgXCJ8XCIgKyBjbG9zZV90YWcgKyBcIilcIik7XG5odG1sX3JlLkhUTUxfVEFHX1JFID0gSFRNTF9UQUdfUkUkMTtcbmh0bWxfcmUuSFRNTF9PUEVOX0NMT1NFX1RBR19SRSA9IEhUTUxfT1BFTl9DTE9TRV9UQUdfUkUkMTtcbnZhciBibG9ja19uYW1lcyA9IGh0bWxfYmxvY2tzO1xudmFyIEhUTUxfT1BFTl9DTE9TRV9UQUdfUkUgPSBodG1sX3JlLkhUTUxfT1BFTl9DTE9TRV9UQUdfUkU7XG52YXIgSFRNTF9TRVFVRU5DRVMgPSBbXG4gIFsvXjwoc2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSkoPz0oXFxzfD58JCkpL2ksIC88XFwvKHNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpPi9pLCB0cnVlXSxcbiAgWy9ePCEtLS8sIC8tLT4vLCB0cnVlXSxcbiAgWy9ePFxcPy8sIC9cXD8+LywgdHJ1ZV0sXG4gIFsvXjwhW0EtWl0vLCAvPi8sIHRydWVdLFxuICBbL148IVxcW0NEQVRBXFxbLywgL1xcXVxcXT4vLCB0cnVlXSxcbiAgW25ldyBSZWdFeHAoXCJePC8/KFwiICsgYmxvY2tfbmFtZXMuam9pbihcInxcIikgKyBcIikoPz0oXFxcXHN8Lz8+fCQpKVwiLCBcImlcIiksIC9eJC8sIHRydWVdLFxuICBbbmV3IFJlZ0V4cChIVE1MX09QRU5fQ0xPU0VfVEFHX1JFLnNvdXJjZSArIFwiXFxcXHMqJFwiKSwgL14kLywgZmFsc2VdXG5dO1xudmFyIGh0bWxfYmxvY2sgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIGh0bWxfYmxvY2syKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHNpbGVudCkge1xuICB2YXIgaSwgbmV4dExpbmUsIHRva2VuMiwgbGluZVRleHQsIHBvcyA9IHN0YXRlLmJNYXJrc1tzdGFydExpbmVdICsgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0sIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdO1xuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIXN0YXRlLm1kLm9wdGlvbnMuaHRtbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gNjApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgbGluZVRleHQgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXgpO1xuICBmb3IgKGkgPSAwOyBpIDwgSFRNTF9TRVFVRU5DRVMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoSFRNTF9TRVFVRU5DRVNbaV1bMF0udGVzdChsaW5lVGV4dCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSA9PT0gSFRNTF9TRVFVRU5DRVMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gSFRNTF9TRVFVRU5DRVNbaV1bMl07XG4gIH1cbiAgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxO1xuICBpZiAoIUhUTUxfU0VRVUVOQ0VTW2ldWzFdLnRlc3QobGluZVRleHQpKSB7XG4gICAgZm9yICg7IG5leHRMaW5lIDwgZW5kTGluZTsgbmV4dExpbmUrKykge1xuICAgICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCBzdGF0ZS5ibGtJbmRlbnQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBwb3MgPSBzdGF0ZS5iTWFya3NbbmV4dExpbmVdICsgc3RhdGUudFNoaWZ0W25leHRMaW5lXTtcbiAgICAgIG1heCA9IHN0YXRlLmVNYXJrc1tuZXh0TGluZV07XG4gICAgICBsaW5lVGV4dCA9IHN0YXRlLnNyYy5zbGljZShwb3MsIG1heCk7XG4gICAgICBpZiAoSFRNTF9TRVFVRU5DRVNbaV1bMV0udGVzdChsaW5lVGV4dCkpIHtcbiAgICAgICAgaWYgKGxpbmVUZXh0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIG5leHRMaW5lKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHN0YXRlLmxpbmUgPSBuZXh0TGluZTtcbiAgdG9rZW4yID0gc3RhdGUucHVzaChcImh0bWxfYmxvY2tcIiwgXCJcIiwgMCk7XG4gIHRva2VuMi5tYXAgPSBbc3RhcnRMaW5lLCBuZXh0TGluZV07XG4gIHRva2VuMi5jb250ZW50ID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lLCBuZXh0TGluZSwgc3RhdGUuYmxrSW5kZW50LCB0cnVlKTtcbiAgcmV0dXJuIHRydWU7XG59LCBcImh0bWxfYmxvY2tcIik7XG52YXIgaXNTcGFjZSQ1ID0gdXRpbHMkMS5pc1NwYWNlO1xudmFyIGhlYWRpbmcgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIGhlYWRpbmcyKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHNpbGVudCkge1xuICB2YXIgY2gsIGxldmVsLCB0bXAsIHRva2VuMiwgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSwgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV07XG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgaWYgKGNoICE9PSAzNSB8fCBwb3MgPj0gbWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGxldmVsID0gMTtcbiAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdCgrK3Bvcyk7XG4gIHdoaWxlIChjaCA9PT0gMzUgJiYgcG9zIDwgbWF4ICYmIGxldmVsIDw9IDYpIHtcbiAgICBsZXZlbCsrO1xuICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQoKytwb3MpO1xuICB9XG4gIGlmIChsZXZlbCA+IDYgfHwgcG9zIDwgbWF4ICYmICFpc1NwYWNlJDUoY2gpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChzaWxlbnQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBtYXggPSBzdGF0ZS5za2lwU3BhY2VzQmFjayhtYXgsIHBvcyk7XG4gIHRtcCA9IHN0YXRlLnNraXBDaGFyc0JhY2sobWF4LCAzNSwgcG9zKTtcbiAgaWYgKHRtcCA+IHBvcyAmJiBpc1NwYWNlJDUoc3RhdGUuc3JjLmNoYXJDb2RlQXQodG1wIC0gMSkpKSB7XG4gICAgbWF4ID0gdG1wO1xuICB9XG4gIHN0YXRlLmxpbmUgPSBzdGFydExpbmUgKyAxO1xuICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwiaGVhZGluZ19vcGVuXCIsIFwiaFwiICsgU3RyaW5nKGxldmVsKSwgMSk7XG4gIHRva2VuMi5tYXJrdXAgPSBcIiMjIyMjIyMjXCIuc2xpY2UoMCwgbGV2ZWwpO1xuICB0b2tlbjIubWFwID0gW3N0YXJ0TGluZSwgc3RhdGUubGluZV07XG4gIHRva2VuMiA9IHN0YXRlLnB1c2goXCJpbmxpbmVcIiwgXCJcIiwgMCk7XG4gIHRva2VuMi5jb250ZW50ID0gc3RhdGUuc3JjLnNsaWNlKHBvcywgbWF4KS50cmltKCk7XG4gIHRva2VuMi5tYXAgPSBbc3RhcnRMaW5lLCBzdGF0ZS5saW5lXTtcbiAgdG9rZW4yLmNoaWxkcmVuID0gW107XG4gIHRva2VuMiA9IHN0YXRlLnB1c2goXCJoZWFkaW5nX2Nsb3NlXCIsIFwiaFwiICsgU3RyaW5nKGxldmVsKSwgLTEpO1xuICB0b2tlbjIubWFya3VwID0gXCIjIyMjIyMjI1wiLnNsaWNlKDAsIGxldmVsKTtcbiAgcmV0dXJuIHRydWU7XG59LCBcImhlYWRpbmdcIik7XG52YXIgbGhlYWRpbmcgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIGxoZWFkaW5nMihzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lKSB7XG4gIHZhciBjb250ZW50LCB0ZXJtaW5hdGUsIGksIGwsIHRva2VuMiwgcG9zLCBtYXgsIGxldmVsLCBtYXJrZXIyLCBuZXh0TGluZSA9IHN0YXJ0TGluZSArIDEsIG9sZFBhcmVudFR5cGUsIHRlcm1pbmF0b3JSdWxlcyA9IHN0YXRlLm1kLmJsb2NrLnJ1bGVyLmdldFJ1bGVzKFwicGFyYWdyYXBoXCIpO1xuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBvbGRQYXJlbnRUeXBlID0gc3RhdGUucGFyZW50VHlwZTtcbiAgc3RhdGUucGFyZW50VHlwZSA9IFwicGFyYWdyYXBoXCI7XG4gIGZvciAoOyBuZXh0TGluZSA8IGVuZExpbmUgJiYgIXN0YXRlLmlzRW1wdHkobmV4dExpbmUpOyBuZXh0TGluZSsrKSB7XG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPiAzKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPj0gc3RhdGUuYmxrSW5kZW50KSB7XG4gICAgICBwb3MgPSBzdGF0ZS5iTWFya3NbbmV4dExpbmVdICsgc3RhdGUudFNoaWZ0W25leHRMaW5lXTtcbiAgICAgIG1heCA9IHN0YXRlLmVNYXJrc1tuZXh0TGluZV07XG4gICAgICBpZiAocG9zIDwgbWF4KSB7XG4gICAgICAgIG1hcmtlcjIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuICAgICAgICBpZiAobWFya2VyMiA9PT0gNDUgfHwgbWFya2VyMiA9PT0gNjEpIHtcbiAgICAgICAgICBwb3MgPSBzdGF0ZS5za2lwQ2hhcnMocG9zLCBtYXJrZXIyKTtcbiAgICAgICAgICBwb3MgPSBzdGF0ZS5za2lwU3BhY2VzKHBvcyk7XG4gICAgICAgICAgaWYgKHBvcyA+PSBtYXgpIHtcbiAgICAgICAgICAgIGxldmVsID0gbWFya2VyMiA9PT0gNjEgPyAxIDogMjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdGVybWluYXRvclJ1bGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKHRlcm1pbmF0b3JSdWxlc1tpXShzdGF0ZSwgbmV4dExpbmUsIGVuZExpbmUsIHRydWUpKSB7XG4gICAgICAgIHRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKCFsZXZlbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb250ZW50ID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lLCBuZXh0TGluZSwgc3RhdGUuYmxrSW5kZW50LCBmYWxzZSkudHJpbSgpO1xuICBzdGF0ZS5saW5lID0gbmV4dExpbmUgKyAxO1xuICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwiaGVhZGluZ19vcGVuXCIsIFwiaFwiICsgU3RyaW5nKGxldmVsKSwgMSk7XG4gIHRva2VuMi5tYXJrdXAgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlcjIpO1xuICB0b2tlbjIubWFwID0gW3N0YXJ0TGluZSwgc3RhdGUubGluZV07XG4gIHRva2VuMiA9IHN0YXRlLnB1c2goXCJpbmxpbmVcIiwgXCJcIiwgMCk7XG4gIHRva2VuMi5jb250ZW50ID0gY29udGVudDtcbiAgdG9rZW4yLm1hcCA9IFtzdGFydExpbmUsIHN0YXRlLmxpbmUgLSAxXTtcbiAgdG9rZW4yLmNoaWxkcmVuID0gW107XG4gIHRva2VuMiA9IHN0YXRlLnB1c2goXCJoZWFkaW5nX2Nsb3NlXCIsIFwiaFwiICsgU3RyaW5nKGxldmVsKSwgLTEpO1xuICB0b2tlbjIubWFya3VwID0gU3RyaW5nLmZyb21DaGFyQ29kZShtYXJrZXIyKTtcbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGU7XG4gIHJldHVybiB0cnVlO1xufSwgXCJsaGVhZGluZ1wiKTtcbnZhciBwYXJhZ3JhcGggPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIHBhcmFncmFwaDIoc3RhdGUsIHN0YXJ0TGluZSkge1xuICB2YXIgY29udGVudCwgdGVybWluYXRlLCBpLCBsLCB0b2tlbjIsIG9sZFBhcmVudFR5cGUsIG5leHRMaW5lID0gc3RhcnRMaW5lICsgMSwgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoXCJwYXJhZ3JhcGhcIiksIGVuZExpbmUgPSBzdGF0ZS5saW5lTWF4O1xuICBvbGRQYXJlbnRUeXBlID0gc3RhdGUucGFyZW50VHlwZTtcbiAgc3RhdGUucGFyZW50VHlwZSA9IFwicGFyYWdyYXBoXCI7XG4gIGZvciAoOyBuZXh0TGluZSA8IGVuZExpbmUgJiYgIXN0YXRlLmlzRW1wdHkobmV4dExpbmUpOyBuZXh0TGluZSsrKSB7XG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPiAzKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdGVybWluYXRlID0gZmFsc2U7XG4gICAgZm9yIChpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0ZXJtaW5hdG9yUnVsZXNbaV0oc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKSkge1xuICAgICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRlcm1pbmF0ZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGNvbnRlbnQgPSBzdGF0ZS5nZXRMaW5lcyhzdGFydExpbmUsIG5leHRMaW5lLCBzdGF0ZS5ibGtJbmRlbnQsIGZhbHNlKS50cmltKCk7XG4gIHN0YXRlLmxpbmUgPSBuZXh0TGluZTtcbiAgdG9rZW4yID0gc3RhdGUucHVzaChcInBhcmFncmFwaF9vcGVuXCIsIFwicFwiLCAxKTtcbiAgdG9rZW4yLm1hcCA9IFtzdGFydExpbmUsIHN0YXRlLmxpbmVdO1xuICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwiaW5saW5lXCIsIFwiXCIsIDApO1xuICB0b2tlbjIuY29udGVudCA9IGNvbnRlbnQ7XG4gIHRva2VuMi5tYXAgPSBbc3RhcnRMaW5lLCBzdGF0ZS5saW5lXTtcbiAgdG9rZW4yLmNoaWxkcmVuID0gW107XG4gIHRva2VuMiA9IHN0YXRlLnB1c2goXCJwYXJhZ3JhcGhfY2xvc2VcIiwgXCJwXCIsIC0xKTtcbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGU7XG4gIHJldHVybiB0cnVlO1xufSwgXCJwYXJhZ3JhcGhcIik7XG52YXIgVG9rZW4kMSA9IHRva2VuO1xudmFyIGlzU3BhY2UkNCA9IHV0aWxzJDEuaXNTcGFjZTtcbmZ1bmN0aW9uIFN0YXRlQmxvY2soc3JjLCBtZCwgZW52LCB0b2tlbnMpIHtcbiAgdmFyIGNoLCBzLCBzdGFydCwgcG9zLCBsZW4sIGluZGVudCwgb2Zmc2V0LCBpbmRlbnRfZm91bmQ7XG4gIHRoaXMuc3JjID0gc3JjO1xuICB0aGlzLm1kID0gbWQ7XG4gIHRoaXMuZW52ID0gZW52O1xuICB0aGlzLnRva2VucyA9IHRva2VucztcbiAgdGhpcy5iTWFya3MgPSBbXTtcbiAgdGhpcy5lTWFya3MgPSBbXTtcbiAgdGhpcy50U2hpZnQgPSBbXTtcbiAgdGhpcy5zQ291bnQgPSBbXTtcbiAgdGhpcy5ic0NvdW50ID0gW107XG4gIHRoaXMuYmxrSW5kZW50ID0gMDtcbiAgdGhpcy5saW5lID0gMDtcbiAgdGhpcy5saW5lTWF4ID0gMDtcbiAgdGhpcy50aWdodCA9IGZhbHNlO1xuICB0aGlzLmRkSW5kZW50ID0gLTE7XG4gIHRoaXMubGlzdEluZGVudCA9IC0xO1xuICB0aGlzLnBhcmVudFR5cGUgPSBcInJvb3RcIjtcbiAgdGhpcy5sZXZlbCA9IDA7XG4gIHRoaXMucmVzdWx0ID0gXCJcIjtcbiAgcyA9IHRoaXMuc3JjO1xuICBpbmRlbnRfZm91bmQgPSBmYWxzZTtcbiAgZm9yIChzdGFydCA9IHBvcyA9IGluZGVudCA9IG9mZnNldCA9IDAsIGxlbiA9IHMubGVuZ3RoOyBwb3MgPCBsZW47IHBvcysrKSB7XG4gICAgY2ggPSBzLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoIWluZGVudF9mb3VuZCkge1xuICAgICAgaWYgKGlzU3BhY2UkNChjaCkpIHtcbiAgICAgICAgaW5kZW50Kys7XG4gICAgICAgIGlmIChjaCA9PT0gOSkge1xuICAgICAgICAgIG9mZnNldCArPSA0IC0gb2Zmc2V0ICUgNDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmZzZXQrKztcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGVudF9mb3VuZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaCA9PT0gMTAgfHwgcG9zID09PSBsZW4gLSAxKSB7XG4gICAgICBpZiAoY2ggIT09IDEwKSB7XG4gICAgICAgIHBvcysrO1xuICAgICAgfVxuICAgICAgdGhpcy5iTWFya3MucHVzaChzdGFydCk7XG4gICAgICB0aGlzLmVNYXJrcy5wdXNoKHBvcyk7XG4gICAgICB0aGlzLnRTaGlmdC5wdXNoKGluZGVudCk7XG4gICAgICB0aGlzLnNDb3VudC5wdXNoKG9mZnNldCk7XG4gICAgICB0aGlzLmJzQ291bnQucHVzaCgwKTtcbiAgICAgIGluZGVudF9mb3VuZCA9IGZhbHNlO1xuICAgICAgaW5kZW50ID0gMDtcbiAgICAgIG9mZnNldCA9IDA7XG4gICAgICBzdGFydCA9IHBvcyArIDE7XG4gICAgfVxuICB9XG4gIHRoaXMuYk1hcmtzLnB1c2gocy5sZW5ndGgpO1xuICB0aGlzLmVNYXJrcy5wdXNoKHMubGVuZ3RoKTtcbiAgdGhpcy50U2hpZnQucHVzaCgwKTtcbiAgdGhpcy5zQ291bnQucHVzaCgwKTtcbiAgdGhpcy5ic0NvdW50LnB1c2goMCk7XG4gIHRoaXMubGluZU1heCA9IHRoaXMuYk1hcmtzLmxlbmd0aCAtIDE7XG59XG5fX25hbWUoU3RhdGVCbG9jaywgXCJTdGF0ZUJsb2NrXCIpO1xuU3RhdGVCbG9jay5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKHR5cGUyLCB0YWcsIG5lc3RpbmcpIHtcbiAgdmFyIHRva2VuMiA9IG5ldyBUb2tlbiQxKHR5cGUyLCB0YWcsIG5lc3RpbmcpO1xuICB0b2tlbjIuYmxvY2sgPSB0cnVlO1xuICBpZiAobmVzdGluZyA8IDApXG4gICAgdGhpcy5sZXZlbC0tO1xuICB0b2tlbjIubGV2ZWwgPSB0aGlzLmxldmVsO1xuICBpZiAobmVzdGluZyA+IDApXG4gICAgdGhpcy5sZXZlbCsrO1xuICB0aGlzLnRva2Vucy5wdXNoKHRva2VuMik7XG4gIHJldHVybiB0b2tlbjI7XG59O1xuU3RhdGVCbG9jay5wcm90b3R5cGUuaXNFbXB0eSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gaXNFbXB0eShsaW5lKSB7XG4gIHJldHVybiB0aGlzLmJNYXJrc1tsaW5lXSArIHRoaXMudFNoaWZ0W2xpbmVdID49IHRoaXMuZU1hcmtzW2xpbmVdO1xufSwgXCJpc0VtcHR5XCIpO1xuU3RhdGVCbG9jay5wcm90b3R5cGUuc2tpcEVtcHR5TGluZXMgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIHNraXBFbXB0eUxpbmVzKGZyb20pIHtcbiAgZm9yICh2YXIgbWF4ID0gdGhpcy5saW5lTWF4OyBmcm9tIDwgbWF4OyBmcm9tKyspIHtcbiAgICBpZiAodGhpcy5iTWFya3NbZnJvbV0gKyB0aGlzLnRTaGlmdFtmcm9tXSA8IHRoaXMuZU1hcmtzW2Zyb21dKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZyb207XG59LCBcInNraXBFbXB0eUxpbmVzXCIpO1xuU3RhdGVCbG9jay5wcm90b3R5cGUuc2tpcFNwYWNlcyA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gc2tpcFNwYWNlcyhwb3MpIHtcbiAgdmFyIGNoO1xuICBmb3IgKHZhciBtYXggPSB0aGlzLnNyYy5sZW5ndGg7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICBjaCA9IHRoaXMuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoIWlzU3BhY2UkNChjaCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcG9zO1xufSwgXCJza2lwU3BhY2VzXCIpO1xuU3RhdGVCbG9jay5wcm90b3R5cGUuc2tpcFNwYWNlc0JhY2sgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIHNraXBTcGFjZXNCYWNrKHBvcywgbWluKSB7XG4gIGlmIChwb3MgPD0gbWluKSB7XG4gICAgcmV0dXJuIHBvcztcbiAgfVxuICB3aGlsZSAocG9zID4gbWluKSB7XG4gICAgaWYgKCFpc1NwYWNlJDQodGhpcy5zcmMuY2hhckNvZGVBdCgtLXBvcykpKSB7XG4gICAgICByZXR1cm4gcG9zICsgMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBvcztcbn0sIFwic2tpcFNwYWNlc0JhY2tcIik7XG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5za2lwQ2hhcnMgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIHNraXBDaGFycyhwb3MsIGNvZGUzKSB7XG4gIGZvciAodmFyIG1heCA9IHRoaXMuc3JjLmxlbmd0aDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgIGlmICh0aGlzLnNyYy5jaGFyQ29kZUF0KHBvcykgIT09IGNvZGUzKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBvcztcbn0sIFwic2tpcENoYXJzXCIpO1xuU3RhdGVCbG9jay5wcm90b3R5cGUuc2tpcENoYXJzQmFjayA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gc2tpcENoYXJzQmFjayhwb3MsIGNvZGUzLCBtaW4pIHtcbiAgaWYgKHBvcyA8PSBtaW4pIHtcbiAgICByZXR1cm4gcG9zO1xuICB9XG4gIHdoaWxlIChwb3MgPiBtaW4pIHtcbiAgICBpZiAoY29kZTMgIT09IHRoaXMuc3JjLmNoYXJDb2RlQXQoLS1wb3MpKSB7XG4gICAgICByZXR1cm4gcG9zICsgMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBvcztcbn0sIFwic2tpcENoYXJzQmFja1wiKTtcblN0YXRlQmxvY2sucHJvdG90eXBlLmdldExpbmVzID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBnZXRMaW5lcyhiZWdpbiwgZW5kLCBpbmRlbnQsIGtlZXBMYXN0TEYpIHtcbiAgdmFyIGksIGxpbmVJbmRlbnQsIGNoLCBmaXJzdCwgbGFzdCwgcXVldWUsIGxpbmVTdGFydCwgbGluZSA9IGJlZ2luO1xuICBpZiAoYmVnaW4gPj0gZW5kKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcXVldWUgPSBuZXcgQXJyYXkoZW5kIC0gYmVnaW4pO1xuICBmb3IgKGkgPSAwOyBsaW5lIDwgZW5kOyBsaW5lKyssIGkrKykge1xuICAgIGxpbmVJbmRlbnQgPSAwO1xuICAgIGxpbmVTdGFydCA9IGZpcnN0ID0gdGhpcy5iTWFya3NbbGluZV07XG4gICAgaWYgKGxpbmUgKyAxIDwgZW5kIHx8IGtlZXBMYXN0TEYpIHtcbiAgICAgIGxhc3QgPSB0aGlzLmVNYXJrc1tsaW5lXSArIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhc3QgPSB0aGlzLmVNYXJrc1tsaW5lXTtcbiAgICB9XG4gICAgd2hpbGUgKGZpcnN0IDwgbGFzdCAmJiBsaW5lSW5kZW50IDwgaW5kZW50KSB7XG4gICAgICBjaCA9IHRoaXMuc3JjLmNoYXJDb2RlQXQoZmlyc3QpO1xuICAgICAgaWYgKGlzU3BhY2UkNChjaCkpIHtcbiAgICAgICAgaWYgKGNoID09PSA5KSB7XG4gICAgICAgICAgbGluZUluZGVudCArPSA0IC0gKGxpbmVJbmRlbnQgKyB0aGlzLmJzQ291bnRbbGluZV0pICUgNDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsaW5lSW5kZW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmlyc3QgLSBsaW5lU3RhcnQgPCB0aGlzLnRTaGlmdFtsaW5lXSkge1xuICAgICAgICBsaW5lSW5kZW50Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGZpcnN0Kys7XG4gICAgfVxuICAgIGlmIChsaW5lSW5kZW50ID4gaW5kZW50KSB7XG4gICAgICBxdWV1ZVtpXSA9IG5ldyBBcnJheShsaW5lSW5kZW50IC0gaW5kZW50ICsgMSkuam9pbihcIiBcIikgKyB0aGlzLnNyYy5zbGljZShmaXJzdCwgbGFzdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHF1ZXVlW2ldID0gdGhpcy5zcmMuc2xpY2UoZmlyc3QsIGxhc3QpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcXVldWUuam9pbihcIlwiKTtcbn0sIFwiZ2V0TGluZXNcIik7XG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5Ub2tlbiA9IFRva2VuJDE7XG52YXIgc3RhdGVfYmxvY2sgPSBTdGF0ZUJsb2NrO1xudmFyIFJ1bGVyJDEgPSBydWxlcjtcbnZhciBfcnVsZXMkMSA9IFtcbiAgW1widGFibGVcIiwgdGFibGUsIFtcInBhcmFncmFwaFwiLCBcInJlZmVyZW5jZVwiXV0sXG4gIFtcImNvZGVcIiwgY29kZV0sXG4gIFtcImZlbmNlXCIsIGZlbmNlLCBbXCJwYXJhZ3JhcGhcIiwgXCJyZWZlcmVuY2VcIiwgXCJibG9ja3F1b3RlXCIsIFwibGlzdFwiXV0sXG4gIFtcImJsb2NrcXVvdGVcIiwgYmxvY2txdW90ZSwgW1wicGFyYWdyYXBoXCIsIFwicmVmZXJlbmNlXCIsIFwiYmxvY2txdW90ZVwiLCBcImxpc3RcIl1dLFxuICBbXCJoclwiLCBociwgW1wicGFyYWdyYXBoXCIsIFwicmVmZXJlbmNlXCIsIFwiYmxvY2txdW90ZVwiLCBcImxpc3RcIl1dLFxuICBbXCJsaXN0XCIsIGxpc3QkMSwgW1wicGFyYWdyYXBoXCIsIFwicmVmZXJlbmNlXCIsIFwiYmxvY2txdW90ZVwiXV0sXG4gIFtcInJlZmVyZW5jZVwiLCByZWZlcmVuY2VdLFxuICBbXCJodG1sX2Jsb2NrXCIsIGh0bWxfYmxvY2ssIFtcInBhcmFncmFwaFwiLCBcInJlZmVyZW5jZVwiLCBcImJsb2NrcXVvdGVcIl1dLFxuICBbXCJoZWFkaW5nXCIsIGhlYWRpbmcsIFtcInBhcmFncmFwaFwiLCBcInJlZmVyZW5jZVwiLCBcImJsb2NrcXVvdGVcIl1dLFxuICBbXCJsaGVhZGluZ1wiLCBsaGVhZGluZ10sXG4gIFtcInBhcmFncmFwaFwiLCBwYXJhZ3JhcGhdXG5dO1xuZnVuY3Rpb24gUGFyc2VyQmxvY2skMSgpIHtcbiAgdGhpcy5ydWxlciA9IG5ldyBSdWxlciQxKCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgX3J1bGVzJDEubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLnJ1bGVyLnB1c2goX3J1bGVzJDFbaV1bMF0sIF9ydWxlcyQxW2ldWzFdLCB7IGFsdDogKF9ydWxlcyQxW2ldWzJdIHx8IFtdKS5zbGljZSgpIH0pO1xuICB9XG59XG5fX25hbWUoUGFyc2VyQmxvY2skMSwgXCJQYXJzZXJCbG9jayQxXCIpO1xuUGFyc2VyQmxvY2skMS5wcm90b3R5cGUudG9rZW5pemUgPSBmdW5jdGlvbihzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lKSB7XG4gIHZhciBvaywgaSwgcnVsZXMgPSB0aGlzLnJ1bGVyLmdldFJ1bGVzKFwiXCIpLCBsZW4gPSBydWxlcy5sZW5ndGgsIGxpbmUgPSBzdGFydExpbmUsIGhhc0VtcHR5TGluZXMgPSBmYWxzZSwgbWF4TmVzdGluZyA9IHN0YXRlLm1kLm9wdGlvbnMubWF4TmVzdGluZztcbiAgd2hpbGUgKGxpbmUgPCBlbmRMaW5lKSB7XG4gICAgc3RhdGUubGluZSA9IGxpbmUgPSBzdGF0ZS5za2lwRW1wdHlMaW5lcyhsaW5lKTtcbiAgICBpZiAobGluZSA+PSBlbmRMaW5lKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHN0YXRlLnNDb3VudFtsaW5lXSA8IHN0YXRlLmJsa0luZGVudCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5sZXZlbCA+PSBtYXhOZXN0aW5nKSB7XG4gICAgICBzdGF0ZS5saW5lID0gZW5kTGluZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIG9rID0gcnVsZXNbaV0oc3RhdGUsIGxpbmUsIGVuZExpbmUsIGZhbHNlKTtcbiAgICAgIGlmIChvaykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgc3RhdGUudGlnaHQgPSAhaGFzRW1wdHlMaW5lcztcbiAgICBpZiAoc3RhdGUuaXNFbXB0eShzdGF0ZS5saW5lIC0gMSkpIHtcbiAgICAgIGhhc0VtcHR5TGluZXMgPSB0cnVlO1xuICAgIH1cbiAgICBsaW5lID0gc3RhdGUubGluZTtcbiAgICBpZiAobGluZSA8IGVuZExpbmUgJiYgc3RhdGUuaXNFbXB0eShsaW5lKSkge1xuICAgICAgaGFzRW1wdHlMaW5lcyA9IHRydWU7XG4gICAgICBsaW5lKys7XG4gICAgICBzdGF0ZS5saW5lID0gbGluZTtcbiAgICB9XG4gIH1cbn07XG5QYXJzZXJCbG9jayQxLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKHNyYywgbWQsIGVudiwgb3V0VG9rZW5zKSB7XG4gIHZhciBzdGF0ZTtcbiAgaWYgKCFzcmMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc3RhdGUgPSBuZXcgdGhpcy5TdGF0ZShzcmMsIG1kLCBlbnYsIG91dFRva2Vucyk7XG4gIHRoaXMudG9rZW5pemUoc3RhdGUsIHN0YXRlLmxpbmUsIHN0YXRlLmxpbmVNYXgpO1xufTtcblBhcnNlckJsb2NrJDEucHJvdG90eXBlLlN0YXRlID0gc3RhdGVfYmxvY2s7XG52YXIgcGFyc2VyX2Jsb2NrID0gUGFyc2VyQmxvY2skMTtcbmZ1bmN0aW9uIGlzVGVybWluYXRvckNoYXIoY2gpIHtcbiAgc3dpdGNoIChjaCkge1xuICAgIGNhc2UgMTA6XG4gICAgY2FzZSAzMzpcbiAgICBjYXNlIDM1OlxuICAgIGNhc2UgMzY6XG4gICAgY2FzZSAzNzpcbiAgICBjYXNlIDM4OlxuICAgIGNhc2UgNDI6XG4gICAgY2FzZSA0MzpcbiAgICBjYXNlIDQ1OlxuICAgIGNhc2UgNTg6XG4gICAgY2FzZSA2MDpcbiAgICBjYXNlIDYxOlxuICAgIGNhc2UgNjI6XG4gICAgY2FzZSA2NDpcbiAgICBjYXNlIDkxOlxuICAgIGNhc2UgOTI6XG4gICAgY2FzZSA5MzpcbiAgICBjYXNlIDk0OlxuICAgIGNhc2UgOTU6XG4gICAgY2FzZSA5NjpcbiAgICBjYXNlIDEyMzpcbiAgICBjYXNlIDEyNTpcbiAgICBjYXNlIDEyNjpcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbl9fbmFtZShpc1Rlcm1pbmF0b3JDaGFyLCBcImlzVGVybWluYXRvckNoYXJcIik7XG52YXIgdGV4dCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gdGV4dDIoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgcG9zID0gc3RhdGUucG9zO1xuICB3aGlsZSAocG9zIDwgc3RhdGUucG9zTWF4ICYmICFpc1Rlcm1pbmF0b3JDaGFyKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykpKSB7XG4gICAgcG9zKys7XG4gIH1cbiAgaWYgKHBvcyA9PT0gc3RhdGUucG9zKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghc2lsZW50KSB7XG4gICAgc3RhdGUucGVuZGluZyArPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhdGUucG9zLCBwb3MpO1xuICB9XG4gIHN0YXRlLnBvcyA9IHBvcztcbiAgcmV0dXJuIHRydWU7XG59LCBcInRleHRcIik7XG52YXIgaXNTcGFjZSQzID0gdXRpbHMkMS5pc1NwYWNlO1xudmFyIG5ld2xpbmUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIG5ld2xpbmUyKHN0YXRlLCBzaWxlbnQpIHtcbiAgdmFyIHBtYXgsIG1heCwgcG9zID0gc3RhdGUucG9zO1xuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMTApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcG1heCA9IHN0YXRlLnBlbmRpbmcubGVuZ3RoIC0gMTtcbiAgbWF4ID0gc3RhdGUucG9zTWF4O1xuICBpZiAoIXNpbGVudCkge1xuICAgIGlmIChwbWF4ID49IDAgJiYgc3RhdGUucGVuZGluZy5jaGFyQ29kZUF0KHBtYXgpID09PSAzMikge1xuICAgICAgaWYgKHBtYXggPj0gMSAmJiBzdGF0ZS5wZW5kaW5nLmNoYXJDb2RlQXQocG1heCAtIDEpID09PSAzMikge1xuICAgICAgICBzdGF0ZS5wZW5kaW5nID0gc3RhdGUucGVuZGluZy5yZXBsYWNlKC8gKyQvLCBcIlwiKTtcbiAgICAgICAgc3RhdGUucHVzaChcImhhcmRicmVha1wiLCBcImJyXCIsIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucGVuZGluZyA9IHN0YXRlLnBlbmRpbmcuc2xpY2UoMCwgLTEpO1xuICAgICAgICBzdGF0ZS5wdXNoKFwic29mdGJyZWFrXCIsIFwiYnJcIiwgMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnB1c2goXCJzb2Z0YnJlYWtcIiwgXCJiclwiLCAwKTtcbiAgICB9XG4gIH1cbiAgcG9zKys7XG4gIHdoaWxlIChwb3MgPCBtYXggJiYgaXNTcGFjZSQzKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykpKSB7XG4gICAgcG9zKys7XG4gIH1cbiAgc3RhdGUucG9zID0gcG9zO1xuICByZXR1cm4gdHJ1ZTtcbn0sIFwibmV3bGluZVwiKTtcbnZhciBpc1NwYWNlJDIgPSB1dGlscyQxLmlzU3BhY2U7XG52YXIgRVNDQVBFRCA9IFtdO1xuZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykge1xuICBFU0NBUEVELnB1c2goMCk7XG59XG5cIlxcXFwhXFxcIiMkJSYnKCkqKywuLzo7PD0+P0BbXV5fYHt8fX4tXCIuc3BsaXQoXCJcIikuZm9yRWFjaChmdW5jdGlvbihjaCkge1xuICBFU0NBUEVEW2NoLmNoYXJDb2RlQXQoMCldID0gMTtcbn0pO1xudmFyIF9lc2NhcGUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIGVzY2FwZShzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBjaCwgcG9zID0gc3RhdGUucG9zLCBtYXggPSBzdGF0ZS5wb3NNYXg7XG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSA5Mikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBwb3MrKztcbiAgaWYgKHBvcyA8IG1heCkge1xuICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoY2ggPCAyNTYgJiYgRVNDQVBFRFtjaF0gIT09IDApIHtcbiAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgIHN0YXRlLnBlbmRpbmcgKz0gc3RhdGUuc3JjW3Bvc107XG4gICAgICB9XG4gICAgICBzdGF0ZS5wb3MgKz0gMjtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoY2ggPT09IDEwKSB7XG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBzdGF0ZS5wdXNoKFwiaGFyZGJyZWFrXCIsIFwiYnJcIiwgMCk7XG4gICAgICB9XG4gICAgICBwb3MrKztcbiAgICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuICAgICAgICBpZiAoIWlzU3BhY2UkMihjaCkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBwb3MrKztcbiAgICAgIH1cbiAgICAgIHN0YXRlLnBvcyA9IHBvcztcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBpZiAoIXNpbGVudCkge1xuICAgIHN0YXRlLnBlbmRpbmcgKz0gXCJcXFxcXCI7XG4gIH1cbiAgc3RhdGUucG9zKys7XG4gIHJldHVybiB0cnVlO1xufSwgXCJlc2NhcGVcIik7XG52YXIgYmFja3RpY2tzID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBiYWNrdGljayhzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBzdGFydCwgbWF4LCBtYXJrZXIyLCB0b2tlbjIsIG1hdGNoU3RhcnQsIG1hdGNoRW5kLCBvcGVuZXJMZW5ndGgsIGNsb3Nlckxlbmd0aCwgcG9zID0gc3RhdGUucG9zLCBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gIGlmIChjaCAhPT0gOTYpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3RhcnQgPSBwb3M7XG4gIHBvcysrO1xuICBtYXggPSBzdGF0ZS5wb3NNYXg7XG4gIHdoaWxlIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gOTYpIHtcbiAgICBwb3MrKztcbiAgfVxuICBtYXJrZXIyID0gc3RhdGUuc3JjLnNsaWNlKHN0YXJ0LCBwb3MpO1xuICBvcGVuZXJMZW5ndGggPSBtYXJrZXIyLmxlbmd0aDtcbiAgaWYgKHN0YXRlLmJhY2t0aWNrc1NjYW5uZWQgJiYgKHN0YXRlLmJhY2t0aWNrc1tvcGVuZXJMZW5ndGhdIHx8IDApIDw9IHN0YXJ0KSB7XG4gICAgaWYgKCFzaWxlbnQpXG4gICAgICBzdGF0ZS5wZW5kaW5nICs9IG1hcmtlcjI7XG4gICAgc3RhdGUucG9zICs9IG9wZW5lckxlbmd0aDtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBtYXRjaFN0YXJ0ID0gbWF0Y2hFbmQgPSBwb3M7XG4gIHdoaWxlICgobWF0Y2hTdGFydCA9IHN0YXRlLnNyYy5pbmRleE9mKFwiYFwiLCBtYXRjaEVuZCkpICE9PSAtMSkge1xuICAgIG1hdGNoRW5kID0gbWF0Y2hTdGFydCArIDE7XG4gICAgd2hpbGUgKG1hdGNoRW5kIDwgbWF4ICYmIHN0YXRlLnNyYy5jaGFyQ29kZUF0KG1hdGNoRW5kKSA9PT0gOTYpIHtcbiAgICAgIG1hdGNoRW5kKys7XG4gICAgfVxuICAgIGNsb3Nlckxlbmd0aCA9IG1hdGNoRW5kIC0gbWF0Y2hTdGFydDtcbiAgICBpZiAoY2xvc2VyTGVuZ3RoID09PSBvcGVuZXJMZW5ndGgpIHtcbiAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgIHRva2VuMiA9IHN0YXRlLnB1c2goXCJjb2RlX2lubGluZVwiLCBcImNvZGVcIiwgMCk7XG4gICAgICAgIHRva2VuMi5tYXJrdXAgPSBtYXJrZXIyO1xuICAgICAgICB0b2tlbjIuY29udGVudCA9IHN0YXRlLnNyYy5zbGljZShwb3MsIG1hdGNoU3RhcnQpLnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvXiAoLispICQvLCBcIiQxXCIpO1xuICAgICAgfVxuICAgICAgc3RhdGUucG9zID0gbWF0Y2hFbmQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgc3RhdGUuYmFja3RpY2tzW2Nsb3Nlckxlbmd0aF0gPSBtYXRjaFN0YXJ0O1xuICB9XG4gIHN0YXRlLmJhY2t0aWNrc1NjYW5uZWQgPSB0cnVlO1xuICBpZiAoIXNpbGVudClcbiAgICBzdGF0ZS5wZW5kaW5nICs9IG1hcmtlcjI7XG4gIHN0YXRlLnBvcyArPSBvcGVuZXJMZW5ndGg7XG4gIHJldHVybiB0cnVlO1xufSwgXCJiYWNrdGlja1wiKTtcbnZhciBzdHJpa2V0aHJvdWdoID0ge307XG5zdHJpa2V0aHJvdWdoLnRva2VuaXplID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBzdHJpa2V0aHJvdWdoMihzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBpLCBzY2FubmVkLCB0b2tlbjIsIGxlbiwgY2gsIHN0YXJ0ID0gc3RhdGUucG9zLCBtYXJrZXIyID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQoc3RhcnQpO1xuICBpZiAoc2lsZW50KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChtYXJrZXIyICE9PSAxMjYpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc2Nhbm5lZCA9IHN0YXRlLnNjYW5EZWxpbXMoc3RhdGUucG9zLCB0cnVlKTtcbiAgbGVuID0gc2Nhbm5lZC5sZW5ndGg7XG4gIGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShtYXJrZXIyKTtcbiAgaWYgKGxlbiA8IDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGxlbiAlIDIpIHtcbiAgICB0b2tlbjIgPSBzdGF0ZS5wdXNoKFwidGV4dFwiLCBcIlwiLCAwKTtcbiAgICB0b2tlbjIuY29udGVudCA9IGNoO1xuICAgIGxlbi0tO1xuICB9XG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHRva2VuMiA9IHN0YXRlLnB1c2goXCJ0ZXh0XCIsIFwiXCIsIDApO1xuICAgIHRva2VuMi5jb250ZW50ID0gY2ggKyBjaDtcbiAgICBzdGF0ZS5kZWxpbWl0ZXJzLnB1c2goe1xuICAgICAgbWFya2VyOiBtYXJrZXIyLFxuICAgICAgbGVuZ3RoOiAwLFxuICAgICAganVtcDogaSAvIDIsXG4gICAgICB0b2tlbjogc3RhdGUudG9rZW5zLmxlbmd0aCAtIDEsXG4gICAgICBlbmQ6IC0xLFxuICAgICAgb3Blbjogc2Nhbm5lZC5jYW5fb3BlbixcbiAgICAgIGNsb3NlOiBzY2FubmVkLmNhbl9jbG9zZVxuICAgIH0pO1xuICB9XG4gIHN0YXRlLnBvcyArPSBzY2FubmVkLmxlbmd0aDtcbiAgcmV0dXJuIHRydWU7XG59LCBcInN0cmlrZXRocm91Z2hcIik7XG5mdW5jdGlvbiBwb3N0UHJvY2VzcyQxKHN0YXRlLCBkZWxpbWl0ZXJzKSB7XG4gIHZhciBpLCBqLCBzdGFydERlbGltLCBlbmREZWxpbSwgdG9rZW4yLCBsb25lTWFya2VycyA9IFtdLCBtYXggPSBkZWxpbWl0ZXJzLmxlbmd0aDtcbiAgZm9yIChpID0gMDsgaSA8IG1heDsgaSsrKSB7XG4gICAgc3RhcnREZWxpbSA9IGRlbGltaXRlcnNbaV07XG4gICAgaWYgKHN0YXJ0RGVsaW0ubWFya2VyICE9PSAxMjYpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoc3RhcnREZWxpbS5lbmQgPT09IC0xKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgZW5kRGVsaW0gPSBkZWxpbWl0ZXJzW3N0YXJ0RGVsaW0uZW5kXTtcbiAgICB0b2tlbjIgPSBzdGF0ZS50b2tlbnNbc3RhcnREZWxpbS50b2tlbl07XG4gICAgdG9rZW4yLnR5cGUgPSBcInNfb3BlblwiO1xuICAgIHRva2VuMi50YWcgPSBcInNcIjtcbiAgICB0b2tlbjIubmVzdGluZyA9IDE7XG4gICAgdG9rZW4yLm1hcmt1cCA9IFwifn5cIjtcbiAgICB0b2tlbjIuY29udGVudCA9IFwiXCI7XG4gICAgdG9rZW4yID0gc3RhdGUudG9rZW5zW2VuZERlbGltLnRva2VuXTtcbiAgICB0b2tlbjIudHlwZSA9IFwic19jbG9zZVwiO1xuICAgIHRva2VuMi50YWcgPSBcInNcIjtcbiAgICB0b2tlbjIubmVzdGluZyA9IC0xO1xuICAgIHRva2VuMi5tYXJrdXAgPSBcIn5+XCI7XG4gICAgdG9rZW4yLmNvbnRlbnQgPSBcIlwiO1xuICAgIGlmIChzdGF0ZS50b2tlbnNbZW5kRGVsaW0udG9rZW4gLSAxXS50eXBlID09PSBcInRleHRcIiAmJiBzdGF0ZS50b2tlbnNbZW5kRGVsaW0udG9rZW4gLSAxXS5jb250ZW50ID09PSBcIn5cIikge1xuICAgICAgbG9uZU1hcmtlcnMucHVzaChlbmREZWxpbS50b2tlbiAtIDEpO1xuICAgIH1cbiAgfVxuICB3aGlsZSAobG9uZU1hcmtlcnMubGVuZ3RoKSB7XG4gICAgaSA9IGxvbmVNYXJrZXJzLnBvcCgpO1xuICAgIGogPSBpICsgMTtcbiAgICB3aGlsZSAoaiA8IHN0YXRlLnRva2Vucy5sZW5ndGggJiYgc3RhdGUudG9rZW5zW2pdLnR5cGUgPT09IFwic19jbG9zZVwiKSB7XG4gICAgICBqKys7XG4gICAgfVxuICAgIGotLTtcbiAgICBpZiAoaSAhPT0gaikge1xuICAgICAgdG9rZW4yID0gc3RhdGUudG9rZW5zW2pdO1xuICAgICAgc3RhdGUudG9rZW5zW2pdID0gc3RhdGUudG9rZW5zW2ldO1xuICAgICAgc3RhdGUudG9rZW5zW2ldID0gdG9rZW4yO1xuICAgIH1cbiAgfVxufVxuX19uYW1lKHBvc3RQcm9jZXNzJDEsIFwicG9zdFByb2Nlc3MkMVwiKTtcbnN0cmlrZXRocm91Z2gucG9zdFByb2Nlc3MgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIHN0cmlrZXRocm91Z2gzKHN0YXRlKSB7XG4gIHZhciBjdXJyLCB0b2tlbnNfbWV0YSA9IHN0YXRlLnRva2Vuc19tZXRhLCBtYXggPSBzdGF0ZS50b2tlbnNfbWV0YS5sZW5ndGg7XG4gIHBvc3RQcm9jZXNzJDEoc3RhdGUsIHN0YXRlLmRlbGltaXRlcnMpO1xuICBmb3IgKGN1cnIgPSAwOyBjdXJyIDwgbWF4OyBjdXJyKyspIHtcbiAgICBpZiAodG9rZW5zX21ldGFbY3Vycl0gJiYgdG9rZW5zX21ldGFbY3Vycl0uZGVsaW1pdGVycykge1xuICAgICAgcG9zdFByb2Nlc3MkMShzdGF0ZSwgdG9rZW5zX21ldGFbY3Vycl0uZGVsaW1pdGVycyk7XG4gICAgfVxuICB9XG59LCBcInN0cmlrZXRocm91Z2hcIik7XG52YXIgZW1waGFzaXMgPSB7fTtcbmVtcGhhc2lzLnRva2VuaXplID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBlbXBoYXNpczIoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgaSwgc2Nhbm5lZCwgdG9rZW4yLCBzdGFydCA9IHN0YXRlLnBvcywgbWFya2VyMiA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHN0YXJ0KTtcbiAgaWYgKHNpbGVudCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAobWFya2VyMiAhPT0gOTUgJiYgbWFya2VyMiAhPT0gNDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc2Nhbm5lZCA9IHN0YXRlLnNjYW5EZWxpbXMoc3RhdGUucG9zLCBtYXJrZXIyID09PSA0Mik7XG4gIGZvciAoaSA9IDA7IGkgPCBzY2FubmVkLmxlbmd0aDsgaSsrKSB7XG4gICAgdG9rZW4yID0gc3RhdGUucHVzaChcInRleHRcIiwgXCJcIiwgMCk7XG4gICAgdG9rZW4yLmNvbnRlbnQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlcjIpO1xuICAgIHN0YXRlLmRlbGltaXRlcnMucHVzaCh7XG4gICAgICBtYXJrZXI6IG1hcmtlcjIsXG4gICAgICBsZW5ndGg6IHNjYW5uZWQubGVuZ3RoLFxuICAgICAganVtcDogaSxcbiAgICAgIHRva2VuOiBzdGF0ZS50b2tlbnMubGVuZ3RoIC0gMSxcbiAgICAgIGVuZDogLTEsXG4gICAgICBvcGVuOiBzY2FubmVkLmNhbl9vcGVuLFxuICAgICAgY2xvc2U6IHNjYW5uZWQuY2FuX2Nsb3NlXG4gICAgfSk7XG4gIH1cbiAgc3RhdGUucG9zICs9IHNjYW5uZWQubGVuZ3RoO1xuICByZXR1cm4gdHJ1ZTtcbn0sIFwiZW1waGFzaXNcIik7XG5mdW5jdGlvbiBwb3N0UHJvY2VzcyhzdGF0ZSwgZGVsaW1pdGVycykge1xuICB2YXIgaSwgc3RhcnREZWxpbSwgZW5kRGVsaW0sIHRva2VuMiwgY2gsIGlzU3Ryb25nLCBtYXggPSBkZWxpbWl0ZXJzLmxlbmd0aDtcbiAgZm9yIChpID0gbWF4IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBzdGFydERlbGltID0gZGVsaW1pdGVyc1tpXTtcbiAgICBpZiAoc3RhcnREZWxpbS5tYXJrZXIgIT09IDk1ICYmIHN0YXJ0RGVsaW0ubWFya2VyICE9PSA0Mikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChzdGFydERlbGltLmVuZCA9PT0gLTEpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBlbmREZWxpbSA9IGRlbGltaXRlcnNbc3RhcnREZWxpbS5lbmRdO1xuICAgIGlzU3Ryb25nID0gaSA+IDAgJiYgZGVsaW1pdGVyc1tpIC0gMV0uZW5kID09PSBzdGFydERlbGltLmVuZCArIDEgJiYgZGVsaW1pdGVyc1tpIC0gMV0udG9rZW4gPT09IHN0YXJ0RGVsaW0udG9rZW4gLSAxICYmIGRlbGltaXRlcnNbc3RhcnREZWxpbS5lbmQgKyAxXS50b2tlbiA9PT0gZW5kRGVsaW0udG9rZW4gKyAxICYmIGRlbGltaXRlcnNbaSAtIDFdLm1hcmtlciA9PT0gc3RhcnREZWxpbS5tYXJrZXI7XG4gICAgY2ggPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHN0YXJ0RGVsaW0ubWFya2VyKTtcbiAgICB0b2tlbjIgPSBzdGF0ZS50b2tlbnNbc3RhcnREZWxpbS50b2tlbl07XG4gICAgdG9rZW4yLnR5cGUgPSBpc1N0cm9uZyA/IFwic3Ryb25nX29wZW5cIiA6IFwiZW1fb3BlblwiO1xuICAgIHRva2VuMi50YWcgPSBpc1N0cm9uZyA/IFwic3Ryb25nXCIgOiBcImVtXCI7XG4gICAgdG9rZW4yLm5lc3RpbmcgPSAxO1xuICAgIHRva2VuMi5tYXJrdXAgPSBpc1N0cm9uZyA/IGNoICsgY2ggOiBjaDtcbiAgICB0b2tlbjIuY29udGVudCA9IFwiXCI7XG4gICAgdG9rZW4yID0gc3RhdGUudG9rZW5zW2VuZERlbGltLnRva2VuXTtcbiAgICB0b2tlbjIudHlwZSA9IGlzU3Ryb25nID8gXCJzdHJvbmdfY2xvc2VcIiA6IFwiZW1fY2xvc2VcIjtcbiAgICB0b2tlbjIudGFnID0gaXNTdHJvbmcgPyBcInN0cm9uZ1wiIDogXCJlbVwiO1xuICAgIHRva2VuMi5uZXN0aW5nID0gLTE7XG4gICAgdG9rZW4yLm1hcmt1cCA9IGlzU3Ryb25nID8gY2ggKyBjaCA6IGNoO1xuICAgIHRva2VuMi5jb250ZW50ID0gXCJcIjtcbiAgICBpZiAoaXNTdHJvbmcpIHtcbiAgICAgIHN0YXRlLnRva2Vuc1tkZWxpbWl0ZXJzW2kgLSAxXS50b2tlbl0uY29udGVudCA9IFwiXCI7XG4gICAgICBzdGF0ZS50b2tlbnNbZGVsaW1pdGVyc1tzdGFydERlbGltLmVuZCArIDFdLnRva2VuXS5jb250ZW50ID0gXCJcIjtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cbn1cbl9fbmFtZShwb3N0UHJvY2VzcywgXCJwb3N0UHJvY2Vzc1wiKTtcbmVtcGhhc2lzLnBvc3RQcm9jZXNzID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBlbXBoYXNpczMoc3RhdGUpIHtcbiAgdmFyIGN1cnIsIHRva2Vuc19tZXRhID0gc3RhdGUudG9rZW5zX21ldGEsIG1heCA9IHN0YXRlLnRva2Vuc19tZXRhLmxlbmd0aDtcbiAgcG9zdFByb2Nlc3Moc3RhdGUsIHN0YXRlLmRlbGltaXRlcnMpO1xuICBmb3IgKGN1cnIgPSAwOyBjdXJyIDwgbWF4OyBjdXJyKyspIHtcbiAgICBpZiAodG9rZW5zX21ldGFbY3Vycl0gJiYgdG9rZW5zX21ldGFbY3Vycl0uZGVsaW1pdGVycykge1xuICAgICAgcG9zdFByb2Nlc3Moc3RhdGUsIHRva2Vuc19tZXRhW2N1cnJdLmRlbGltaXRlcnMpO1xuICAgIH1cbiAgfVxufSwgXCJlbXBoYXNpc1wiKTtcbnZhciBub3JtYWxpemVSZWZlcmVuY2UkMSA9IHV0aWxzJDEubm9ybWFsaXplUmVmZXJlbmNlO1xudmFyIGlzU3BhY2UkMSA9IHV0aWxzJDEuaXNTcGFjZTtcbnZhciBsaW5rID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBsaW5rMihzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBhdHRycywgY29kZTMsIGxhYmVsLCBsYWJlbEVuZCwgbGFiZWxTdGFydCwgcG9zLCByZXMsIHJlZiwgdG9rZW4yLCBocmVmID0gXCJcIiwgdGl0bGUgPSBcIlwiLCBvbGRQb3MgPSBzdGF0ZS5wb3MsIG1heCA9IHN0YXRlLnBvc01heCwgc3RhcnQgPSBzdGF0ZS5wb3MsIHBhcnNlUmVmZXJlbmNlID0gdHJ1ZTtcbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHN0YXRlLnBvcykgIT09IDkxKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGxhYmVsU3RhcnQgPSBzdGF0ZS5wb3MgKyAxO1xuICBsYWJlbEVuZCA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rTGFiZWwoc3RhdGUsIHN0YXRlLnBvcywgdHJ1ZSk7XG4gIGlmIChsYWJlbEVuZCA8IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcG9zID0gbGFiZWxFbmQgKyAxO1xuICBpZiAocG9zIDwgbWF4ICYmIHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDQwKSB7XG4gICAgcGFyc2VSZWZlcmVuY2UgPSBmYWxzZTtcbiAgICBwb3MrKztcbiAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgY29kZTMgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKCFpc1NwYWNlJDEoY29kZTMpICYmIGNvZGUzICE9PSAxMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBvcyA+PSBtYXgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc3RhcnQgPSBwb3M7XG4gICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtEZXN0aW5hdGlvbihzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KTtcbiAgICBpZiAocmVzLm9rKSB7XG4gICAgICBocmVmID0gc3RhdGUubWQubm9ybWFsaXplTGluayhyZXMuc3RyKTtcbiAgICAgIGlmIChzdGF0ZS5tZC52YWxpZGF0ZUxpbmsoaHJlZikpIHtcbiAgICAgICAgcG9zID0gcmVzLnBvcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhyZWYgPSBcIlwiO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSBwb3M7XG4gICAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgICBjb2RlMyA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICAgIGlmICghaXNTcGFjZSQxKGNvZGUzKSAmJiBjb2RlMyAhPT0gMTApIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtUaXRsZShzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KTtcbiAgICAgIGlmIChwb3MgPCBtYXggJiYgc3RhcnQgIT09IHBvcyAmJiByZXMub2spIHtcbiAgICAgICAgdGl0bGUgPSByZXMuc3RyO1xuICAgICAgICBwb3MgPSByZXMucG9zO1xuICAgICAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgICAgIGNvZGUzID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgICAgICBpZiAoIWlzU3BhY2UkMShjb2RlMykgJiYgY29kZTMgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBvcyA+PSBtYXggfHwgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gNDEpIHtcbiAgICAgIHBhcnNlUmVmZXJlbmNlID0gdHJ1ZTtcbiAgICB9XG4gICAgcG9zKys7XG4gIH1cbiAgaWYgKHBhcnNlUmVmZXJlbmNlKSB7XG4gICAgaWYgKHR5cGVvZiBzdGF0ZS5lbnYucmVmZXJlbmNlcyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAocG9zIDwgbWF4ICYmIHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDkxKSB7XG4gICAgICBzdGFydCA9IHBvcyArIDE7XG4gICAgICBwb3MgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua0xhYmVsKHN0YXRlLCBwb3MpO1xuICAgICAgaWYgKHBvcyA+PSAwKSB7XG4gICAgICAgIGxhYmVsID0gc3RhdGUuc3JjLnNsaWNlKHN0YXJ0LCBwb3MrKyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3MgPSBsYWJlbEVuZCArIDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvcyA9IGxhYmVsRW5kICsgMTtcbiAgICB9XG4gICAgaWYgKCFsYWJlbCkge1xuICAgICAgbGFiZWwgPSBzdGF0ZS5zcmMuc2xpY2UobGFiZWxTdGFydCwgbGFiZWxFbmQpO1xuICAgIH1cbiAgICByZWYgPSBzdGF0ZS5lbnYucmVmZXJlbmNlc1tub3JtYWxpemVSZWZlcmVuY2UkMShsYWJlbCldO1xuICAgIGlmICghcmVmKSB7XG4gICAgICBzdGF0ZS5wb3MgPSBvbGRQb3M7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGhyZWYgPSByZWYuaHJlZjtcbiAgICB0aXRsZSA9IHJlZi50aXRsZTtcbiAgfVxuICBpZiAoIXNpbGVudCkge1xuICAgIHN0YXRlLnBvcyA9IGxhYmVsU3RhcnQ7XG4gICAgc3RhdGUucG9zTWF4ID0gbGFiZWxFbmQ7XG4gICAgdG9rZW4yID0gc3RhdGUucHVzaChcImxpbmtfb3BlblwiLCBcImFcIiwgMSk7XG4gICAgdG9rZW4yLmF0dHJzID0gYXR0cnMgPSBbW1wiaHJlZlwiLCBocmVmXV07XG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICBhdHRycy5wdXNoKFtcInRpdGxlXCIsIHRpdGxlXSk7XG4gICAgfVxuICAgIHN0YXRlLm1kLmlubGluZS50b2tlbml6ZShzdGF0ZSk7XG4gICAgdG9rZW4yID0gc3RhdGUucHVzaChcImxpbmtfY2xvc2VcIiwgXCJhXCIsIC0xKTtcbiAgfVxuICBzdGF0ZS5wb3MgPSBwb3M7XG4gIHN0YXRlLnBvc01heCA9IG1heDtcbiAgcmV0dXJuIHRydWU7XG59LCBcImxpbmtcIik7XG52YXIgbm9ybWFsaXplUmVmZXJlbmNlID0gdXRpbHMkMS5ub3JtYWxpemVSZWZlcmVuY2U7XG52YXIgaXNTcGFjZSA9IHV0aWxzJDEuaXNTcGFjZTtcbnZhciBpbWFnZSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gaW1hZ2UyKHN0YXRlLCBzaWxlbnQpIHtcbiAgdmFyIGF0dHJzLCBjb2RlMywgY29udGVudCwgbGFiZWwsIGxhYmVsRW5kLCBsYWJlbFN0YXJ0LCBwb3MsIHJlZiwgcmVzLCB0aXRsZSwgdG9rZW4yLCB0b2tlbnMsIHN0YXJ0LCBocmVmID0gXCJcIiwgb2xkUG9zID0gc3RhdGUucG9zLCBtYXggPSBzdGF0ZS5wb3NNYXg7XG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChzdGF0ZS5wb3MpICE9PSAzMykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQoc3RhdGUucG9zICsgMSkgIT09IDkxKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGxhYmVsU3RhcnQgPSBzdGF0ZS5wb3MgKyAyO1xuICBsYWJlbEVuZCA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rTGFiZWwoc3RhdGUsIHN0YXRlLnBvcyArIDEsIGZhbHNlKTtcbiAgaWYgKGxhYmVsRW5kIDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBwb3MgPSBsYWJlbEVuZCArIDE7XG4gIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gNDApIHtcbiAgICBwb3MrKztcbiAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgY29kZTMgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKCFpc1NwYWNlKGNvZGUzKSAmJiBjb2RlMyAhPT0gMTApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwb3MgPj0gbWF4KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHN0YXJ0ID0gcG9zO1xuICAgIHJlcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rRGVzdGluYXRpb24oc3RhdGUuc3JjLCBwb3MsIHN0YXRlLnBvc01heCk7XG4gICAgaWYgKHJlcy5vaykge1xuICAgICAgaHJlZiA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmsocmVzLnN0cik7XG4gICAgICBpZiAoc3RhdGUubWQudmFsaWRhdGVMaW5rKGhyZWYpKSB7XG4gICAgICAgIHBvcyA9IHJlcy5wb3M7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBocmVmID0gXCJcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgc3RhcnQgPSBwb3M7XG4gICAgZm9yICg7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICAgIGNvZGUzID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmICghaXNTcGFjZShjb2RlMykgJiYgY29kZTMgIT09IDEwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXMgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua1RpdGxlKHN0YXRlLnNyYywgcG9zLCBzdGF0ZS5wb3NNYXgpO1xuICAgIGlmIChwb3MgPCBtYXggJiYgc3RhcnQgIT09IHBvcyAmJiByZXMub2spIHtcbiAgICAgIHRpdGxlID0gcmVzLnN0cjtcbiAgICAgIHBvcyA9IHJlcy5wb3M7XG4gICAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgICBjb2RlMyA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICAgIGlmICghaXNTcGFjZShjb2RlMykgJiYgY29kZTMgIT09IDEwKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGl0bGUgPSBcIlwiO1xuICAgIH1cbiAgICBpZiAocG9zID49IG1heCB8fCBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSA0MSkge1xuICAgICAgc3RhdGUucG9zID0gb2xkUG9zO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBwb3MrKztcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIHN0YXRlLmVudi5yZWZlcmVuY2VzID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gOTEpIHtcbiAgICAgIHN0YXJ0ID0gcG9zICsgMTtcbiAgICAgIHBvcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rTGFiZWwoc3RhdGUsIHBvcyk7XG4gICAgICBpZiAocG9zID49IDApIHtcbiAgICAgICAgbGFiZWwgPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQsIHBvcysrKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvcyA9IGxhYmVsRW5kICsgMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcG9zID0gbGFiZWxFbmQgKyAxO1xuICAgIH1cbiAgICBpZiAoIWxhYmVsKSB7XG4gICAgICBsYWJlbCA9IHN0YXRlLnNyYy5zbGljZShsYWJlbFN0YXJ0LCBsYWJlbEVuZCk7XG4gICAgfVxuICAgIHJlZiA9IHN0YXRlLmVudi5yZWZlcmVuY2VzW25vcm1hbGl6ZVJlZmVyZW5jZShsYWJlbCldO1xuICAgIGlmICghcmVmKSB7XG4gICAgICBzdGF0ZS5wb3MgPSBvbGRQb3M7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGhyZWYgPSByZWYuaHJlZjtcbiAgICB0aXRsZSA9IHJlZi50aXRsZTtcbiAgfVxuICBpZiAoIXNpbGVudCkge1xuICAgIGNvbnRlbnQgPSBzdGF0ZS5zcmMuc2xpY2UobGFiZWxTdGFydCwgbGFiZWxFbmQpO1xuICAgIHN0YXRlLm1kLmlubGluZS5wYXJzZShjb250ZW50LCBzdGF0ZS5tZCwgc3RhdGUuZW52LCB0b2tlbnMgPSBbXSk7XG4gICAgdG9rZW4yID0gc3RhdGUucHVzaChcImltYWdlXCIsIFwiaW1nXCIsIDApO1xuICAgIHRva2VuMi5hdHRycyA9IGF0dHJzID0gW1tcInNyY1wiLCBocmVmXSwgW1wiYWx0XCIsIFwiXCJdXTtcbiAgICB0b2tlbjIuY2hpbGRyZW4gPSB0b2tlbnM7XG4gICAgdG9rZW4yLmNvbnRlbnQgPSBjb250ZW50O1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgYXR0cnMucHVzaChbXCJ0aXRsZVwiLCB0aXRsZV0pO1xuICAgIH1cbiAgfVxuICBzdGF0ZS5wb3MgPSBwb3M7XG4gIHN0YXRlLnBvc01heCA9IG1heDtcbiAgcmV0dXJuIHRydWU7XG59LCBcImltYWdlXCIpO1xudmFyIEVNQUlMX1JFID0gL14oW2EtekEtWjAtOS4hIyQlJicqK1xcLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKikkLztcbnZhciBBVVRPTElOS19SRSA9IC9eKFthLXpBLVpdW2EtekEtWjAtOSsuXFwtXXsxLDMxfSk6KFtePD5cXHgwMC1cXHgyMF0qKSQvO1xudmFyIGF1dG9saW5rID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBhdXRvbGluazIoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgdXJsLCBmdWxsVXJsLCB0b2tlbjIsIGNoLCBzdGFydCwgbWF4LCBwb3MgPSBzdGF0ZS5wb3M7XG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSA2MCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdGFydCA9IHN0YXRlLnBvcztcbiAgbWF4ID0gc3RhdGUucG9zTWF4O1xuICBmb3IgKDsgOyApIHtcbiAgICBpZiAoKytwb3MgPj0gbWF4KVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoY2ggPT09IDYwKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjaCA9PT0gNjIpXG4gICAgICBicmVhaztcbiAgfVxuICB1cmwgPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQgKyAxLCBwb3MpO1xuICBpZiAoQVVUT0xJTktfUkUudGVzdCh1cmwpKSB7XG4gICAgZnVsbFVybCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmsodXJsKTtcbiAgICBpZiAoIXN0YXRlLm1kLnZhbGlkYXRlTGluayhmdWxsVXJsKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdG9rZW4yID0gc3RhdGUucHVzaChcImxpbmtfb3BlblwiLCBcImFcIiwgMSk7XG4gICAgICB0b2tlbjIuYXR0cnMgPSBbW1wiaHJlZlwiLCBmdWxsVXJsXV07XG4gICAgICB0b2tlbjIubWFya3VwID0gXCJhdXRvbGlua1wiO1xuICAgICAgdG9rZW4yLmluZm8gPSBcImF1dG9cIjtcbiAgICAgIHRva2VuMiA9IHN0YXRlLnB1c2goXCJ0ZXh0XCIsIFwiXCIsIDApO1xuICAgICAgdG9rZW4yLmNvbnRlbnQgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rVGV4dCh1cmwpO1xuICAgICAgdG9rZW4yID0gc3RhdGUucHVzaChcImxpbmtfY2xvc2VcIiwgXCJhXCIsIC0xKTtcbiAgICAgIHRva2VuMi5tYXJrdXAgPSBcImF1dG9saW5rXCI7XG4gICAgICB0b2tlbjIuaW5mbyA9IFwiYXV0b1wiO1xuICAgIH1cbiAgICBzdGF0ZS5wb3MgKz0gdXJsLmxlbmd0aCArIDI7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKEVNQUlMX1JFLnRlc3QodXJsKSkge1xuICAgIGZ1bGxVcmwgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rKFwibWFpbHRvOlwiICsgdXJsKTtcbiAgICBpZiAoIXN0YXRlLm1kLnZhbGlkYXRlTGluayhmdWxsVXJsKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdG9rZW4yID0gc3RhdGUucHVzaChcImxpbmtfb3BlblwiLCBcImFcIiwgMSk7XG4gICAgICB0b2tlbjIuYXR0cnMgPSBbW1wiaHJlZlwiLCBmdWxsVXJsXV07XG4gICAgICB0b2tlbjIubWFya3VwID0gXCJhdXRvbGlua1wiO1xuICAgICAgdG9rZW4yLmluZm8gPSBcImF1dG9cIjtcbiAgICAgIHRva2VuMiA9IHN0YXRlLnB1c2goXCJ0ZXh0XCIsIFwiXCIsIDApO1xuICAgICAgdG9rZW4yLmNvbnRlbnQgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rVGV4dCh1cmwpO1xuICAgICAgdG9rZW4yID0gc3RhdGUucHVzaChcImxpbmtfY2xvc2VcIiwgXCJhXCIsIC0xKTtcbiAgICAgIHRva2VuMi5tYXJrdXAgPSBcImF1dG9saW5rXCI7XG4gICAgICB0b2tlbjIuaW5mbyA9IFwiYXV0b1wiO1xuICAgIH1cbiAgICBzdGF0ZS5wb3MgKz0gdXJsLmxlbmd0aCArIDI7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSwgXCJhdXRvbGlua1wiKTtcbnZhciBIVE1MX1RBR19SRSA9IGh0bWxfcmUuSFRNTF9UQUdfUkU7XG5mdW5jdGlvbiBpc0xldHRlcihjaCkge1xuICB2YXIgbGMgPSBjaCB8IDMyO1xuICByZXR1cm4gbGMgPj0gOTcgJiYgbGMgPD0gMTIyO1xufVxuX19uYW1lKGlzTGV0dGVyLCBcImlzTGV0dGVyXCIpO1xudmFyIGh0bWxfaW5saW5lID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBodG1sX2lubGluZTIoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgY2gsIG1hdGNoMiwgbWF4LCB0b2tlbjIsIHBvcyA9IHN0YXRlLnBvcztcbiAgaWYgKCFzdGF0ZS5tZC5vcHRpb25zLmh0bWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgbWF4ID0gc3RhdGUucG9zTWF4O1xuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gNjAgfHwgcG9zICsgMiA+PSBtYXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MgKyAxKTtcbiAgaWYgKGNoICE9PSAzMyAmJiBjaCAhPT0gNjMgJiYgY2ggIT09IDQ3ICYmICFpc0xldHRlcihjaCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgbWF0Y2gyID0gc3RhdGUuc3JjLnNsaWNlKHBvcykubWF0Y2goSFRNTF9UQUdfUkUpO1xuICBpZiAoIW1hdGNoMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIXNpbGVudCkge1xuICAgIHRva2VuMiA9IHN0YXRlLnB1c2goXCJodG1sX2lubGluZVwiLCBcIlwiLCAwKTtcbiAgICB0b2tlbjIuY29udGVudCA9IHN0YXRlLnNyYy5zbGljZShwb3MsIHBvcyArIG1hdGNoMlswXS5sZW5ndGgpO1xuICB9XG4gIHN0YXRlLnBvcyArPSBtYXRjaDJbMF0ubGVuZ3RoO1xuICByZXR1cm4gdHJ1ZTtcbn0sIFwiaHRtbF9pbmxpbmVcIik7XG52YXIgZW50aXRpZXMgPSBlbnRpdGllcyQxO1xudmFyIGhhcyA9IHV0aWxzJDEuaGFzO1xudmFyIGlzVmFsaWRFbnRpdHlDb2RlID0gdXRpbHMkMS5pc1ZhbGlkRW50aXR5Q29kZTtcbnZhciBmcm9tQ29kZVBvaW50ID0gdXRpbHMkMS5mcm9tQ29kZVBvaW50O1xudmFyIERJR0lUQUxfUkUgPSAvXiYjKCg/OnhbYS1mMC05XXsxLDZ9fFswLTldezEsN30pKTsvaTtcbnZhciBOQU1FRF9SRSA9IC9eJihbYS16XVthLXowLTldezEsMzF9KTsvaTtcbnZhciBlbnRpdHkgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIGVudGl0eTIoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgY2gsIGNvZGUzLCBtYXRjaDIsIHBvcyA9IHN0YXRlLnBvcywgbWF4ID0gc3RhdGUucG9zTWF4O1xuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMzgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHBvcyArIDEgPCBtYXgpIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyArIDEpO1xuICAgIGlmIChjaCA9PT0gMzUpIHtcbiAgICAgIG1hdGNoMiA9IHN0YXRlLnNyYy5zbGljZShwb3MpLm1hdGNoKERJR0lUQUxfUkUpO1xuICAgICAgaWYgKG1hdGNoMikge1xuICAgICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICAgIGNvZGUzID0gbWF0Y2gyWzFdWzBdLnRvTG93ZXJDYXNlKCkgPT09IFwieFwiID8gcGFyc2VJbnQobWF0Y2gyWzFdLnNsaWNlKDEpLCAxNikgOiBwYXJzZUludChtYXRjaDJbMV0sIDEwKTtcbiAgICAgICAgICBzdGF0ZS5wZW5kaW5nICs9IGlzVmFsaWRFbnRpdHlDb2RlKGNvZGUzKSA/IGZyb21Db2RlUG9pbnQoY29kZTMpIDogZnJvbUNvZGVQb2ludCg2NTUzMyk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUucG9zICs9IG1hdGNoMlswXS5sZW5ndGg7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtYXRjaDIgPSBzdGF0ZS5zcmMuc2xpY2UocG9zKS5tYXRjaChOQU1FRF9SRSk7XG4gICAgICBpZiAobWF0Y2gyKSB7XG4gICAgICAgIGlmIChoYXMoZW50aXRpZXMsIG1hdGNoMlsxXSkpIHtcbiAgICAgICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICAgICAgc3RhdGUucGVuZGluZyArPSBlbnRpdGllc1ttYXRjaDJbMV1dO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdGF0ZS5wb3MgKz0gbWF0Y2gyWzBdLmxlbmd0aDtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoIXNpbGVudCkge1xuICAgIHN0YXRlLnBlbmRpbmcgKz0gXCImXCI7XG4gIH1cbiAgc3RhdGUucG9zKys7XG4gIHJldHVybiB0cnVlO1xufSwgXCJlbnRpdHlcIik7XG5mdW5jdGlvbiBwcm9jZXNzRGVsaW1pdGVycyhzdGF0ZSwgZGVsaW1pdGVycykge1xuICB2YXIgY2xvc2VySWR4LCBvcGVuZXJJZHgsIGNsb3Nlciwgb3BlbmVyLCBtaW5PcGVuZXJJZHgsIG5ld01pbk9wZW5lcklkeCwgaXNPZGRNYXRjaCwgbGFzdEp1bXAsIG9wZW5lcnNCb3R0b20gPSB7fSwgbWF4ID0gZGVsaW1pdGVycy5sZW5ndGg7XG4gIGZvciAoY2xvc2VySWR4ID0gMDsgY2xvc2VySWR4IDwgbWF4OyBjbG9zZXJJZHgrKykge1xuICAgIGNsb3NlciA9IGRlbGltaXRlcnNbY2xvc2VySWR4XTtcbiAgICBjbG9zZXIubGVuZ3RoID0gY2xvc2VyLmxlbmd0aCB8fCAwO1xuICAgIGlmICghY2xvc2VyLmNsb3NlKVxuICAgICAgY29udGludWU7XG4gICAgaWYgKCFvcGVuZXJzQm90dG9tLmhhc093blByb3BlcnR5KGNsb3Nlci5tYXJrZXIpKSB7XG4gICAgICBvcGVuZXJzQm90dG9tW2Nsb3Nlci5tYXJrZXJdID0gWy0xLCAtMSwgLTEsIC0xLCAtMSwgLTFdO1xuICAgIH1cbiAgICBtaW5PcGVuZXJJZHggPSBvcGVuZXJzQm90dG9tW2Nsb3Nlci5tYXJrZXJdWyhjbG9zZXIub3BlbiA/IDMgOiAwKSArIGNsb3Nlci5sZW5ndGggJSAzXTtcbiAgICBvcGVuZXJJZHggPSBjbG9zZXJJZHggLSBjbG9zZXIuanVtcCAtIDE7XG4gICAgaWYgKG9wZW5lcklkeCA8IC0xKVxuICAgICAgb3BlbmVySWR4ID0gLTE7XG4gICAgbmV3TWluT3BlbmVySWR4ID0gb3BlbmVySWR4O1xuICAgIGZvciAoOyBvcGVuZXJJZHggPiBtaW5PcGVuZXJJZHg7IG9wZW5lcklkeCAtPSBvcGVuZXIuanVtcCArIDEpIHtcbiAgICAgIG9wZW5lciA9IGRlbGltaXRlcnNbb3BlbmVySWR4XTtcbiAgICAgIGlmIChvcGVuZXIubWFya2VyICE9PSBjbG9zZXIubWFya2VyKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIGlmIChvcGVuZXIub3BlbiAmJiBvcGVuZXIuZW5kIDwgMCkge1xuICAgICAgICBpc09kZE1hdGNoID0gZmFsc2U7XG4gICAgICAgIGlmIChvcGVuZXIuY2xvc2UgfHwgY2xvc2VyLm9wZW4pIHtcbiAgICAgICAgICBpZiAoKG9wZW5lci5sZW5ndGggKyBjbG9zZXIubGVuZ3RoKSAlIDMgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChvcGVuZXIubGVuZ3RoICUgMyAhPT0gMCB8fCBjbG9zZXIubGVuZ3RoICUgMyAhPT0gMCkge1xuICAgICAgICAgICAgICBpc09kZE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc09kZE1hdGNoKSB7XG4gICAgICAgICAgbGFzdEp1bXAgPSBvcGVuZXJJZHggPiAwICYmICFkZWxpbWl0ZXJzW29wZW5lcklkeCAtIDFdLm9wZW4gPyBkZWxpbWl0ZXJzW29wZW5lcklkeCAtIDFdLmp1bXAgKyAxIDogMDtcbiAgICAgICAgICBjbG9zZXIuanVtcCA9IGNsb3NlcklkeCAtIG9wZW5lcklkeCArIGxhc3RKdW1wO1xuICAgICAgICAgIGNsb3Nlci5vcGVuID0gZmFsc2U7XG4gICAgICAgICAgb3BlbmVyLmVuZCA9IGNsb3NlcklkeDtcbiAgICAgICAgICBvcGVuZXIuanVtcCA9IGxhc3RKdW1wO1xuICAgICAgICAgIG9wZW5lci5jbG9zZSA9IGZhbHNlO1xuICAgICAgICAgIG5ld01pbk9wZW5lcklkeCA9IC0xO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChuZXdNaW5PcGVuZXJJZHggIT09IC0xKSB7XG4gICAgICBvcGVuZXJzQm90dG9tW2Nsb3Nlci5tYXJrZXJdWyhjbG9zZXIub3BlbiA/IDMgOiAwKSArIChjbG9zZXIubGVuZ3RoIHx8IDApICUgM10gPSBuZXdNaW5PcGVuZXJJZHg7XG4gICAgfVxuICB9XG59XG5fX25hbWUocHJvY2Vzc0RlbGltaXRlcnMsIFwicHJvY2Vzc0RlbGltaXRlcnNcIik7XG52YXIgYmFsYW5jZV9wYWlycyA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gbGlua19wYWlycyhzdGF0ZSkge1xuICB2YXIgY3VyciwgdG9rZW5zX21ldGEgPSBzdGF0ZS50b2tlbnNfbWV0YSwgbWF4ID0gc3RhdGUudG9rZW5zX21ldGEubGVuZ3RoO1xuICBwcm9jZXNzRGVsaW1pdGVycyhzdGF0ZSwgc3RhdGUuZGVsaW1pdGVycyk7XG4gIGZvciAoY3VyciA9IDA7IGN1cnIgPCBtYXg7IGN1cnIrKykge1xuICAgIGlmICh0b2tlbnNfbWV0YVtjdXJyXSAmJiB0b2tlbnNfbWV0YVtjdXJyXS5kZWxpbWl0ZXJzKSB7XG4gICAgICBwcm9jZXNzRGVsaW1pdGVycyhzdGF0ZSwgdG9rZW5zX21ldGFbY3Vycl0uZGVsaW1pdGVycyk7XG4gICAgfVxuICB9XG59LCBcImxpbmtfcGFpcnNcIik7XG52YXIgdGV4dF9jb2xsYXBzZSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gdGV4dF9jb2xsYXBzZTIoc3RhdGUpIHtcbiAgdmFyIGN1cnIsIGxhc3QsIGxldmVsID0gMCwgdG9rZW5zID0gc3RhdGUudG9rZW5zLCBtYXggPSBzdGF0ZS50b2tlbnMubGVuZ3RoO1xuICBmb3IgKGN1cnIgPSBsYXN0ID0gMDsgY3VyciA8IG1heDsgY3VycisrKSB7XG4gICAgaWYgKHRva2Vuc1tjdXJyXS5uZXN0aW5nIDwgMClcbiAgICAgIGxldmVsLS07XG4gICAgdG9rZW5zW2N1cnJdLmxldmVsID0gbGV2ZWw7XG4gICAgaWYgKHRva2Vuc1tjdXJyXS5uZXN0aW5nID4gMClcbiAgICAgIGxldmVsKys7XG4gICAgaWYgKHRva2Vuc1tjdXJyXS50eXBlID09PSBcInRleHRcIiAmJiBjdXJyICsgMSA8IG1heCAmJiB0b2tlbnNbY3VyciArIDFdLnR5cGUgPT09IFwidGV4dFwiKSB7XG4gICAgICB0b2tlbnNbY3VyciArIDFdLmNvbnRlbnQgPSB0b2tlbnNbY3Vycl0uY29udGVudCArIHRva2Vuc1tjdXJyICsgMV0uY29udGVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGN1cnIgIT09IGxhc3QpIHtcbiAgICAgICAgdG9rZW5zW2xhc3RdID0gdG9rZW5zW2N1cnJdO1xuICAgICAgfVxuICAgICAgbGFzdCsrO1xuICAgIH1cbiAgfVxuICBpZiAoY3VyciAhPT0gbGFzdCkge1xuICAgIHRva2Vucy5sZW5ndGggPSBsYXN0O1xuICB9XG59LCBcInRleHRfY29sbGFwc2VcIik7XG52YXIgVG9rZW4gPSB0b2tlbjtcbnZhciBpc1doaXRlU3BhY2UgPSB1dGlscyQxLmlzV2hpdGVTcGFjZTtcbnZhciBpc1B1bmN0Q2hhciA9IHV0aWxzJDEuaXNQdW5jdENoYXI7XG52YXIgaXNNZEFzY2lpUHVuY3QgPSB1dGlscyQxLmlzTWRBc2NpaVB1bmN0O1xuZnVuY3Rpb24gU3RhdGVJbmxpbmUoc3JjLCBtZCwgZW52LCBvdXRUb2tlbnMpIHtcbiAgdGhpcy5zcmMgPSBzcmM7XG4gIHRoaXMuZW52ID0gZW52O1xuICB0aGlzLm1kID0gbWQ7XG4gIHRoaXMudG9rZW5zID0gb3V0VG9rZW5zO1xuICB0aGlzLnRva2Vuc19tZXRhID0gQXJyYXkob3V0VG9rZW5zLmxlbmd0aCk7XG4gIHRoaXMucG9zID0gMDtcbiAgdGhpcy5wb3NNYXggPSB0aGlzLnNyYy5sZW5ndGg7XG4gIHRoaXMubGV2ZWwgPSAwO1xuICB0aGlzLnBlbmRpbmcgPSBcIlwiO1xuICB0aGlzLnBlbmRpbmdMZXZlbCA9IDA7XG4gIHRoaXMuY2FjaGUgPSB7fTtcbiAgdGhpcy5kZWxpbWl0ZXJzID0gW107XG4gIHRoaXMuX3ByZXZfZGVsaW1pdGVycyA9IFtdO1xuICB0aGlzLmJhY2t0aWNrcyA9IHt9O1xuICB0aGlzLmJhY2t0aWNrc1NjYW5uZWQgPSBmYWxzZTtcbn1cbl9fbmFtZShTdGF0ZUlubGluZSwgXCJTdGF0ZUlubGluZVwiKTtcblN0YXRlSW5saW5lLnByb3RvdHlwZS5wdXNoUGVuZGluZyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdG9rZW4yID0gbmV3IFRva2VuKFwidGV4dFwiLCBcIlwiLCAwKTtcbiAgdG9rZW4yLmNvbnRlbnQgPSB0aGlzLnBlbmRpbmc7XG4gIHRva2VuMi5sZXZlbCA9IHRoaXMucGVuZGluZ0xldmVsO1xuICB0aGlzLnRva2Vucy5wdXNoKHRva2VuMik7XG4gIHRoaXMucGVuZGluZyA9IFwiXCI7XG4gIHJldHVybiB0b2tlbjI7XG59O1xuU3RhdGVJbmxpbmUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbih0eXBlMiwgdGFnLCBuZXN0aW5nKSB7XG4gIGlmICh0aGlzLnBlbmRpbmcpIHtcbiAgICB0aGlzLnB1c2hQZW5kaW5nKCk7XG4gIH1cbiAgdmFyIHRva2VuMiA9IG5ldyBUb2tlbih0eXBlMiwgdGFnLCBuZXN0aW5nKTtcbiAgdmFyIHRva2VuX21ldGEgPSBudWxsO1xuICBpZiAobmVzdGluZyA8IDApIHtcbiAgICB0aGlzLmxldmVsLS07XG4gICAgdGhpcy5kZWxpbWl0ZXJzID0gdGhpcy5fcHJldl9kZWxpbWl0ZXJzLnBvcCgpO1xuICB9XG4gIHRva2VuMi5sZXZlbCA9IHRoaXMubGV2ZWw7XG4gIGlmIChuZXN0aW5nID4gMCkge1xuICAgIHRoaXMubGV2ZWwrKztcbiAgICB0aGlzLl9wcmV2X2RlbGltaXRlcnMucHVzaCh0aGlzLmRlbGltaXRlcnMpO1xuICAgIHRoaXMuZGVsaW1pdGVycyA9IFtdO1xuICAgIHRva2VuX21ldGEgPSB7IGRlbGltaXRlcnM6IHRoaXMuZGVsaW1pdGVycyB9O1xuICB9XG4gIHRoaXMucGVuZGluZ0xldmVsID0gdGhpcy5sZXZlbDtcbiAgdGhpcy50b2tlbnMucHVzaCh0b2tlbjIpO1xuICB0aGlzLnRva2Vuc19tZXRhLnB1c2godG9rZW5fbWV0YSk7XG4gIHJldHVybiB0b2tlbjI7XG59O1xuU3RhdGVJbmxpbmUucHJvdG90eXBlLnNjYW5EZWxpbXMgPSBmdW5jdGlvbihzdGFydCwgY2FuU3BsaXRXb3JkKSB7XG4gIHZhciBwb3MgPSBzdGFydCwgbGFzdENoYXIsIG5leHRDaGFyLCBjb3VudCwgY2FuX29wZW4sIGNhbl9jbG9zZSwgaXNMYXN0V2hpdGVTcGFjZSwgaXNMYXN0UHVuY3RDaGFyLCBpc05leHRXaGl0ZVNwYWNlLCBpc05leHRQdW5jdENoYXIsIGxlZnRfZmxhbmtpbmcgPSB0cnVlLCByaWdodF9mbGFua2luZyA9IHRydWUsIG1heCA9IHRoaXMucG9zTWF4LCBtYXJrZXIyID0gdGhpcy5zcmMuY2hhckNvZGVBdChzdGFydCk7XG4gIGxhc3RDaGFyID0gc3RhcnQgPiAwID8gdGhpcy5zcmMuY2hhckNvZGVBdChzdGFydCAtIDEpIDogMzI7XG4gIHdoaWxlIChwb3MgPCBtYXggJiYgdGhpcy5zcmMuY2hhckNvZGVBdChwb3MpID09PSBtYXJrZXIyKSB7XG4gICAgcG9zKys7XG4gIH1cbiAgY291bnQgPSBwb3MgLSBzdGFydDtcbiAgbmV4dENoYXIgPSBwb3MgPCBtYXggPyB0aGlzLnNyYy5jaGFyQ29kZUF0KHBvcykgOiAzMjtcbiAgaXNMYXN0UHVuY3RDaGFyID0gaXNNZEFzY2lpUHVuY3QobGFzdENoYXIpIHx8IGlzUHVuY3RDaGFyKFN0cmluZy5mcm9tQ2hhckNvZGUobGFzdENoYXIpKTtcbiAgaXNOZXh0UHVuY3RDaGFyID0gaXNNZEFzY2lpUHVuY3QobmV4dENoYXIpIHx8IGlzUHVuY3RDaGFyKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dENoYXIpKTtcbiAgaXNMYXN0V2hpdGVTcGFjZSA9IGlzV2hpdGVTcGFjZShsYXN0Q2hhcik7XG4gIGlzTmV4dFdoaXRlU3BhY2UgPSBpc1doaXRlU3BhY2UobmV4dENoYXIpO1xuICBpZiAoaXNOZXh0V2hpdGVTcGFjZSkge1xuICAgIGxlZnRfZmxhbmtpbmcgPSBmYWxzZTtcbiAgfSBlbHNlIGlmIChpc05leHRQdW5jdENoYXIpIHtcbiAgICBpZiAoIShpc0xhc3RXaGl0ZVNwYWNlIHx8IGlzTGFzdFB1bmN0Q2hhcikpIHtcbiAgICAgIGxlZnRfZmxhbmtpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzTGFzdFdoaXRlU3BhY2UpIHtcbiAgICByaWdodF9mbGFua2luZyA9IGZhbHNlO1xuICB9IGVsc2UgaWYgKGlzTGFzdFB1bmN0Q2hhcikge1xuICAgIGlmICghKGlzTmV4dFdoaXRlU3BhY2UgfHwgaXNOZXh0UHVuY3RDaGFyKSkge1xuICAgICAgcmlnaHRfZmxhbmtpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKCFjYW5TcGxpdFdvcmQpIHtcbiAgICBjYW5fb3BlbiA9IGxlZnRfZmxhbmtpbmcgJiYgKCFyaWdodF9mbGFua2luZyB8fCBpc0xhc3RQdW5jdENoYXIpO1xuICAgIGNhbl9jbG9zZSA9IHJpZ2h0X2ZsYW5raW5nICYmICghbGVmdF9mbGFua2luZyB8fCBpc05leHRQdW5jdENoYXIpO1xuICB9IGVsc2Uge1xuICAgIGNhbl9vcGVuID0gbGVmdF9mbGFua2luZztcbiAgICBjYW5fY2xvc2UgPSByaWdodF9mbGFua2luZztcbiAgfVxuICByZXR1cm4ge1xuICAgIGNhbl9vcGVuLFxuICAgIGNhbl9jbG9zZSxcbiAgICBsZW5ndGg6IGNvdW50XG4gIH07XG59O1xuU3RhdGVJbmxpbmUucHJvdG90eXBlLlRva2VuID0gVG9rZW47XG52YXIgc3RhdGVfaW5saW5lID0gU3RhdGVJbmxpbmU7XG52YXIgUnVsZXIgPSBydWxlcjtcbnZhciBfcnVsZXMgPSBbXG4gIFtcInRleHRcIiwgdGV4dF0sXG4gIFtcIm5ld2xpbmVcIiwgbmV3bGluZV0sXG4gIFtcImVzY2FwZVwiLCBfZXNjYXBlXSxcbiAgW1wiYmFja3RpY2tzXCIsIGJhY2t0aWNrc10sXG4gIFtcInN0cmlrZXRocm91Z2hcIiwgc3RyaWtldGhyb3VnaC50b2tlbml6ZV0sXG4gIFtcImVtcGhhc2lzXCIsIGVtcGhhc2lzLnRva2VuaXplXSxcbiAgW1wibGlua1wiLCBsaW5rXSxcbiAgW1wiaW1hZ2VcIiwgaW1hZ2VdLFxuICBbXCJhdXRvbGlua1wiLCBhdXRvbGlua10sXG4gIFtcImh0bWxfaW5saW5lXCIsIGh0bWxfaW5saW5lXSxcbiAgW1wiZW50aXR5XCIsIGVudGl0eV1cbl07XG52YXIgX3J1bGVzMiA9IFtcbiAgW1wiYmFsYW5jZV9wYWlyc1wiLCBiYWxhbmNlX3BhaXJzXSxcbiAgW1wic3RyaWtldGhyb3VnaFwiLCBzdHJpa2V0aHJvdWdoLnBvc3RQcm9jZXNzXSxcbiAgW1wiZW1waGFzaXNcIiwgZW1waGFzaXMucG9zdFByb2Nlc3NdLFxuICBbXCJ0ZXh0X2NvbGxhcHNlXCIsIHRleHRfY29sbGFwc2VdXG5dO1xuZnVuY3Rpb24gUGFyc2VySW5saW5lJDEoKSB7XG4gIHZhciBpO1xuICB0aGlzLnJ1bGVyID0gbmV3IFJ1bGVyKCk7XG4gIGZvciAoaSA9IDA7IGkgPCBfcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLnJ1bGVyLnB1c2goX3J1bGVzW2ldWzBdLCBfcnVsZXNbaV1bMV0pO1xuICB9XG4gIHRoaXMucnVsZXIyID0gbmV3IFJ1bGVyKCk7XG4gIGZvciAoaSA9IDA7IGkgPCBfcnVsZXMyLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5ydWxlcjIucHVzaChfcnVsZXMyW2ldWzBdLCBfcnVsZXMyW2ldWzFdKTtcbiAgfVxufVxuX19uYW1lKFBhcnNlcklubGluZSQxLCBcIlBhcnNlcklubGluZSQxXCIpO1xuUGFyc2VySW5saW5lJDEucHJvdG90eXBlLnNraXBUb2tlbiA9IGZ1bmN0aW9uKHN0YXRlKSB7XG4gIHZhciBvaywgaSwgcG9zID0gc3RhdGUucG9zLCBydWxlcyA9IHRoaXMucnVsZXIuZ2V0UnVsZXMoXCJcIiksIGxlbiA9IHJ1bGVzLmxlbmd0aCwgbWF4TmVzdGluZyA9IHN0YXRlLm1kLm9wdGlvbnMubWF4TmVzdGluZywgY2FjaGUgPSBzdGF0ZS5jYWNoZTtcbiAgaWYgKHR5cGVvZiBjYWNoZVtwb3NdICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgc3RhdGUucG9zID0gY2FjaGVbcG9zXTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHN0YXRlLmxldmVsIDwgbWF4TmVzdGluZykge1xuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgc3RhdGUubGV2ZWwrKztcbiAgICAgIG9rID0gcnVsZXNbaV0oc3RhdGUsIHRydWUpO1xuICAgICAgc3RhdGUubGV2ZWwtLTtcbiAgICAgIGlmIChvaykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc3RhdGUucG9zID0gc3RhdGUucG9zTWF4O1xuICB9XG4gIGlmICghb2spIHtcbiAgICBzdGF0ZS5wb3MrKztcbiAgfVxuICBjYWNoZVtwb3NdID0gc3RhdGUucG9zO1xufTtcblBhcnNlcklubGluZSQxLnByb3RvdHlwZS50b2tlbml6ZSA9IGZ1bmN0aW9uKHN0YXRlKSB7XG4gIHZhciBvaywgaSwgcnVsZXMgPSB0aGlzLnJ1bGVyLmdldFJ1bGVzKFwiXCIpLCBsZW4gPSBydWxlcy5sZW5ndGgsIGVuZCA9IHN0YXRlLnBvc01heCwgbWF4TmVzdGluZyA9IHN0YXRlLm1kLm9wdGlvbnMubWF4TmVzdGluZztcbiAgd2hpbGUgKHN0YXRlLnBvcyA8IGVuZCkge1xuICAgIGlmIChzdGF0ZS5sZXZlbCA8IG1heE5lc3RpbmcpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBvayA9IHJ1bGVzW2ldKHN0YXRlLCBmYWxzZSk7XG4gICAgICAgIGlmIChvaykge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvaykge1xuICAgICAgaWYgKHN0YXRlLnBvcyA+PSBlbmQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgc3RhdGUucGVuZGluZyArPSBzdGF0ZS5zcmNbc3RhdGUucG9zKytdO1xuICB9XG4gIGlmIChzdGF0ZS5wZW5kaW5nKSB7XG4gICAgc3RhdGUucHVzaFBlbmRpbmcoKTtcbiAgfVxufTtcblBhcnNlcklubGluZSQxLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKHN0ciwgbWQsIGVudiwgb3V0VG9rZW5zKSB7XG4gIHZhciBpLCBydWxlcywgbGVuO1xuICB2YXIgc3RhdGUgPSBuZXcgdGhpcy5TdGF0ZShzdHIsIG1kLCBlbnYsIG91dFRva2Vucyk7XG4gIHRoaXMudG9rZW5pemUoc3RhdGUpO1xuICBydWxlcyA9IHRoaXMucnVsZXIyLmdldFJ1bGVzKFwiXCIpO1xuICBsZW4gPSBydWxlcy5sZW5ndGg7XG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHJ1bGVzW2ldKHN0YXRlKTtcbiAgfVxufTtcblBhcnNlcklubGluZSQxLnByb3RvdHlwZS5TdGF0ZSA9IHN0YXRlX2lubGluZTtcbnZhciBwYXJzZXJfaW5saW5lID0gUGFyc2VySW5saW5lJDE7XG52YXIgcmUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKG9wdHMpIHtcbiAgdmFyIHJlMiA9IHt9O1xuICByZTIuc3JjX0FueSA9IHJlZ2V4JDMuc291cmNlO1xuICByZTIuc3JjX0NjID0gcmVnZXgkMi5zb3VyY2U7XG4gIHJlMi5zcmNfWiA9IHJlZ2V4LnNvdXJjZTtcbiAgcmUyLnNyY19QID0gcmVnZXgkNC5zb3VyY2U7XG4gIHJlMi5zcmNfWlBDYyA9IFtyZTIuc3JjX1osIHJlMi5zcmNfUCwgcmUyLnNyY19DY10uam9pbihcInxcIik7XG4gIHJlMi5zcmNfWkNjID0gW3JlMi5zcmNfWiwgcmUyLnNyY19DY10uam9pbihcInxcIik7XG4gIHZhciB0ZXh0X3NlcGFyYXRvcnMgPSBcIls+PFxcdUZGNUNdXCI7XG4gIHJlMi5zcmNfcHNldWRvX2xldHRlciA9IFwiKD86KD8hXCIgKyB0ZXh0X3NlcGFyYXRvcnMgKyBcInxcIiArIHJlMi5zcmNfWlBDYyArIFwiKVwiICsgcmUyLnNyY19BbnkgKyBcIilcIjtcbiAgcmUyLnNyY19pcDQgPSBcIig/OigyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pXFxcXC4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcIjtcbiAgcmUyLnNyY19hdXRoID0gXCIoPzooPzooPyFcIiArIHJlMi5zcmNfWkNjICsgXCJ8W0AvXFxcXFtcXFxcXSgpXSkuKStAKT9cIjtcbiAgcmUyLnNyY19wb3J0ID0gXCIoPzo6KD86Nig/OlswLTRdXFxcXGR7M318NSg/OlswLTRdXFxcXGR7Mn18NSg/OlswLTJdXFxcXGR8M1swLTVdKSkpfFsxLTVdP1xcXFxkezEsNH0pKT9cIjtcbiAgcmUyLnNyY19ob3N0X3Rlcm1pbmF0b3IgPSBcIig/PSR8XCIgKyB0ZXh0X3NlcGFyYXRvcnMgKyBcInxcIiArIHJlMi5zcmNfWlBDYyArIFwiKSg/IS18X3w6XFxcXGR8XFxcXC4tfFxcXFwuKD8hJHxcIiArIHJlMi5zcmNfWlBDYyArIFwiKSlcIjtcbiAgcmUyLnNyY19wYXRoID0gXCIoPzpbLz8jXSg/Oig/IVwiICsgcmUyLnNyY19aQ2MgKyBcInxcIiArIHRleHRfc2VwYXJhdG9ycyArIGB8WygpW1xcXFxde30uLFwiJz8hXFxcXC07XSkufFxcXFxbKD86KD8hYCArIHJlMi5zcmNfWkNjICsgXCJ8XFxcXF0pLikqXFxcXF18XFxcXCgoPzooPyFcIiArIHJlMi5zcmNfWkNjICsgXCJ8WyldKS4pKlxcXFwpfFxcXFx7KD86KD8hXCIgKyByZTIuc3JjX1pDYyArICd8W31dKS4pKlxcXFx9fFxcXFxcIig/Oig/IScgKyByZTIuc3JjX1pDYyArIGB8W1wiXSkuKStcXFxcXCJ8XFxcXCcoPzooPyFgICsgcmUyLnNyY19aQ2MgKyBcInxbJ10pLikrXFxcXCd8XFxcXCcoPz1cIiArIHJlMi5zcmNfcHNldWRvX2xldHRlciArIFwifFstXSkufFxcXFwuezIsfVthLXpBLVowLTklLyZdfFxcXFwuKD8hXCIgKyByZTIuc3JjX1pDYyArIFwifFsuXSkufFwiICsgKG9wdHMgJiYgb3B0c1tcIi0tLVwiXSA/IFwiXFxcXC0oPyEtLSg/OlteLV18JCkpKD86LSopfFwiIDogXCJcXFxcLSt8XCIpICsgXCIsKD8hXCIgKyByZTIuc3JjX1pDYyArIFwiKS58Oyg/IVwiICsgcmUyLnNyY19aQ2MgKyBcIikufFxcXFwhKyg/IVwiICsgcmUyLnNyY19aQ2MgKyBcInxbIV0pLnxcXFxcPyg/IVwiICsgcmUyLnNyY19aQ2MgKyBcInxbP10pLikrfFxcXFwvKT9cIjtcbiAgcmUyLnNyY19lbWFpbF9uYW1lID0gJ1tcXFxcLTs6Jj1cXFxcK1xcXFwkLFxcXFwuYS16QS1aMC05X11bXFxcXC07OiY9XFxcXCtcXFxcJCxcXFxcXCJcXFxcLmEtekEtWjAtOV9dKic7XG4gIHJlMi5zcmNfeG4gPSBcInhuLS1bYS16MC05XFxcXC1dezEsNTl9XCI7XG4gIHJlMi5zcmNfZG9tYWluX3Jvb3QgPSBcIig/OlwiICsgcmUyLnNyY194biArIFwifFwiICsgcmUyLnNyY19wc2V1ZG9fbGV0dGVyICsgXCJ7MSw2M30pXCI7XG4gIHJlMi5zcmNfZG9tYWluID0gXCIoPzpcIiArIHJlMi5zcmNfeG4gKyBcInwoPzpcIiArIHJlMi5zcmNfcHNldWRvX2xldHRlciArIFwiKXwoPzpcIiArIHJlMi5zcmNfcHNldWRvX2xldHRlciArIFwiKD86LXxcIiArIHJlMi5zcmNfcHNldWRvX2xldHRlciArIFwiKXswLDYxfVwiICsgcmUyLnNyY19wc2V1ZG9fbGV0dGVyICsgXCIpKVwiO1xuICByZTIuc3JjX2hvc3QgPSBcIig/Oig/Oig/Oig/OlwiICsgcmUyLnNyY19kb21haW4gKyBcIilcXFxcLikqXCIgKyByZTIuc3JjX2RvbWFpbiArIFwiKSlcIjtcbiAgcmUyLnRwbF9ob3N0X2Z1enp5ID0gXCIoPzpcIiArIHJlMi5zcmNfaXA0ICsgXCJ8KD86KD86KD86XCIgKyByZTIuc3JjX2RvbWFpbiArIFwiKVxcXFwuKSsoPzolVExEUyUpKSlcIjtcbiAgcmUyLnRwbF9ob3N0X25vX2lwX2Z1enp5ID0gXCIoPzooPzooPzpcIiArIHJlMi5zcmNfZG9tYWluICsgXCIpXFxcXC4pKyg/OiVUTERTJSkpXCI7XG4gIHJlMi5zcmNfaG9zdF9zdHJpY3QgPSByZTIuc3JjX2hvc3QgKyByZTIuc3JjX2hvc3RfdGVybWluYXRvcjtcbiAgcmUyLnRwbF9ob3N0X2Z1enp5X3N0cmljdCA9IHJlMi50cGxfaG9zdF9mdXp6eSArIHJlMi5zcmNfaG9zdF90ZXJtaW5hdG9yO1xuICByZTIuc3JjX2hvc3RfcG9ydF9zdHJpY3QgPSByZTIuc3JjX2hvc3QgKyByZTIuc3JjX3BvcnQgKyByZTIuc3JjX2hvc3RfdGVybWluYXRvcjtcbiAgcmUyLnRwbF9ob3N0X3BvcnRfZnV6enlfc3RyaWN0ID0gcmUyLnRwbF9ob3N0X2Z1enp5ICsgcmUyLnNyY19wb3J0ICsgcmUyLnNyY19ob3N0X3Rlcm1pbmF0b3I7XG4gIHJlMi50cGxfaG9zdF9wb3J0X25vX2lwX2Z1enp5X3N0cmljdCA9IHJlMi50cGxfaG9zdF9ub19pcF9mdXp6eSArIHJlMi5zcmNfcG9ydCArIHJlMi5zcmNfaG9zdF90ZXJtaW5hdG9yO1xuICByZTIudHBsX2hvc3RfZnV6enlfdGVzdCA9IFwibG9jYWxob3N0fHd3d1xcXFwufFxcXFwuXFxcXGR7MSwzfVxcXFwufCg/OlxcXFwuKD86JVRMRFMlKSg/OlwiICsgcmUyLnNyY19aUENjICsgXCJ8PnwkKSlcIjtcbiAgcmUyLnRwbF9lbWFpbF9mdXp6eSA9IFwiKF58XCIgKyB0ZXh0X3NlcGFyYXRvcnMgKyAnfFwifFxcXFwofCcgKyByZTIuc3JjX1pDYyArIFwiKShcIiArIHJlMi5zcmNfZW1haWxfbmFtZSArIFwiQFwiICsgcmUyLnRwbF9ob3N0X2Z1enp5X3N0cmljdCArIFwiKVwiO1xuICByZTIudHBsX2xpbmtfZnV6enkgPSBcIihefCg/IVsuOi9cXFxcLV9AXSkoPzpbJCs8PT5eYHxcXHVGRjVDXXxcIiArIHJlMi5zcmNfWlBDYyArIFwiKSkoKD8hWyQrPD0+XmB8XFx1RkY1Q10pXCIgKyByZTIudHBsX2hvc3RfcG9ydF9mdXp6eV9zdHJpY3QgKyByZTIuc3JjX3BhdGggKyBcIilcIjtcbiAgcmUyLnRwbF9saW5rX25vX2lwX2Z1enp5ID0gXCIoXnwoPyFbLjovXFxcXC1fQF0pKD86WyQrPD0+XmB8XFx1RkY1Q118XCIgKyByZTIuc3JjX1pQQ2MgKyBcIikpKCg/IVskKzw9Pl5gfFxcdUZGNUNdKVwiICsgcmUyLnRwbF9ob3N0X3BvcnRfbm9faXBfZnV6enlfc3RyaWN0ICsgcmUyLnNyY19wYXRoICsgXCIpXCI7XG4gIHJldHVybiByZTI7XG59LCBcInJlXCIpO1xuZnVuY3Rpb24gYXNzaWduKG9iaikge1xuICB2YXIgc291cmNlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gIHNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbihzb3VyY2UpIHtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICBvYmpba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG9iajtcbn1cbl9fbmFtZShhc3NpZ24sIFwiYXNzaWduXCIpO1xuZnVuY3Rpb24gX2NsYXNzKG9iaikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaik7XG59XG5fX25hbWUoX2NsYXNzLCBcIl9jbGFzc1wiKTtcbmZ1bmN0aW9uIGlzU3RyaW5nKG9iaikge1xuICByZXR1cm4gX2NsYXNzKG9iaikgPT09IFwiW29iamVjdCBTdHJpbmddXCI7XG59XG5fX25hbWUoaXNTdHJpbmcsIFwiaXNTdHJpbmdcIik7XG5mdW5jdGlvbiBpc09iamVjdCQyKG9iaikge1xuICByZXR1cm4gX2NsYXNzKG9iaikgPT09IFwiW29iamVjdCBPYmplY3RdXCI7XG59XG5fX25hbWUoaXNPYmplY3QkMiwgXCJpc09iamVjdCQyXCIpO1xuZnVuY3Rpb24gaXNSZWdFeHAob2JqKSB7XG4gIHJldHVybiBfY2xhc3Mob2JqKSA9PT0gXCJbb2JqZWN0IFJlZ0V4cF1cIjtcbn1cbl9fbmFtZShpc1JlZ0V4cCwgXCJpc1JlZ0V4cFwiKTtcbmZ1bmN0aW9uIGlzRnVuY3Rpb24ob2JqKSB7XG4gIHJldHVybiBfY2xhc3Mob2JqKSA9PT0gXCJbb2JqZWN0IEZ1bmN0aW9uXVwiO1xufVxuX19uYW1lKGlzRnVuY3Rpb24sIFwiaXNGdW5jdGlvblwiKTtcbmZ1bmN0aW9uIGVzY2FwZVJFKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1suPyorXiRbXFxdXFxcXCgpe318LV0vZywgXCJcXFxcJCZcIik7XG59XG5fX25hbWUoZXNjYXBlUkUsIFwiZXNjYXBlUkVcIik7XG52YXIgZGVmYXVsdE9wdGlvbnMgPSB7XG4gIGZ1enp5TGluazogdHJ1ZSxcbiAgZnV6enlFbWFpbDogdHJ1ZSxcbiAgZnV6enlJUDogZmFsc2Vcbn07XG5mdW5jdGlvbiBpc09wdGlvbnNPYmoob2JqKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmogfHwge30pLnJlZHVjZShmdW5jdGlvbihhY2MsIGspIHtcbiAgICByZXR1cm4gYWNjIHx8IGRlZmF1bHRPcHRpb25zLmhhc093blByb3BlcnR5KGspO1xuICB9LCBmYWxzZSk7XG59XG5fX25hbWUoaXNPcHRpb25zT2JqLCBcImlzT3B0aW9uc09ialwiKTtcbnZhciBkZWZhdWx0U2NoZW1hcyA9IHtcbiAgXCJodHRwOlwiOiB7XG4gICAgdmFsaWRhdGU6IGZ1bmN0aW9uKHRleHQzLCBwb3MsIHNlbGYyKSB7XG4gICAgICB2YXIgdGFpbCA9IHRleHQzLnNsaWNlKHBvcyk7XG4gICAgICBpZiAoIXNlbGYyLnJlLmh0dHApIHtcbiAgICAgICAgc2VsZjIucmUuaHR0cCA9IG5ldyBSZWdFeHAoXCJeXFxcXC9cXFxcL1wiICsgc2VsZjIucmUuc3JjX2F1dGggKyBzZWxmMi5yZS5zcmNfaG9zdF9wb3J0X3N0cmljdCArIHNlbGYyLnJlLnNyY19wYXRoLCBcImlcIik7XG4gICAgICB9XG4gICAgICBpZiAoc2VsZjIucmUuaHR0cC50ZXN0KHRhaWwpKSB7XG4gICAgICAgIHJldHVybiB0YWlsLm1hdGNoKHNlbGYyLnJlLmh0dHApWzBdLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSxcbiAgXCJodHRwczpcIjogXCJodHRwOlwiLFxuICBcImZ0cDpcIjogXCJodHRwOlwiLFxuICBcIi8vXCI6IHtcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24odGV4dDMsIHBvcywgc2VsZjIpIHtcbiAgICAgIHZhciB0YWlsID0gdGV4dDMuc2xpY2UocG9zKTtcbiAgICAgIGlmICghc2VsZjIucmUubm9faHR0cCkge1xuICAgICAgICBzZWxmMi5yZS5ub19odHRwID0gbmV3IFJlZ0V4cChcIl5cIiArIHNlbGYyLnJlLnNyY19hdXRoICsgXCIoPzpsb2NhbGhvc3R8KD86KD86XCIgKyBzZWxmMi5yZS5zcmNfZG9tYWluICsgXCIpXFxcXC4pK1wiICsgc2VsZjIucmUuc3JjX2RvbWFpbl9yb290ICsgXCIpXCIgKyBzZWxmMi5yZS5zcmNfcG9ydCArIHNlbGYyLnJlLnNyY19ob3N0X3Rlcm1pbmF0b3IgKyBzZWxmMi5yZS5zcmNfcGF0aCwgXCJpXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHNlbGYyLnJlLm5vX2h0dHAudGVzdCh0YWlsKSkge1xuICAgICAgICBpZiAocG9zID49IDMgJiYgdGV4dDNbcG9zIC0gM10gPT09IFwiOlwiKSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvcyA+PSAzICYmIHRleHQzW3BvcyAtIDNdID09PSBcIi9cIikge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWlsLm1hdGNoKHNlbGYyLnJlLm5vX2h0dHApWzBdLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSxcbiAgXCJtYWlsdG86XCI6IHtcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24odGV4dDMsIHBvcywgc2VsZjIpIHtcbiAgICAgIHZhciB0YWlsID0gdGV4dDMuc2xpY2UocG9zKTtcbiAgICAgIGlmICghc2VsZjIucmUubWFpbHRvKSB7XG4gICAgICAgIHNlbGYyLnJlLm1haWx0byA9IG5ldyBSZWdFeHAoXCJeXCIgKyBzZWxmMi5yZS5zcmNfZW1haWxfbmFtZSArIFwiQFwiICsgc2VsZjIucmUuc3JjX2hvc3Rfc3RyaWN0LCBcImlcIik7XG4gICAgICB9XG4gICAgICBpZiAoc2VsZjIucmUubWFpbHRvLnRlc3QodGFpbCkpIHtcbiAgICAgICAgcmV0dXJuIHRhaWwubWF0Y2goc2VsZjIucmUubWFpbHRvKVswXS5sZW5ndGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cbn07XG52YXIgdGxkc18yY2hfc3JjX3JlID0gXCJhW2NkZWZnaWxtbm9xcnN0dXd4el18YlthYmRlZmdoaWptbm9yc3R2d3l6XXxjW2FjZGZnaGlrbG1ub3J1dnd4eXpdfGRbZWprbW96XXxlW2NlZ3JzdHVdfGZbaWprbW9yXXxnW2FiZGVmZ2hpbG1ucHFyc3R1d3ldfGhba21ucnR1XXxpW2RlbG1ub3Fyc3RdfGpbZW1vcF18a1tlZ2hpbW5wcnd5el18bFthYmNpa3JzdHV2eV18bVthY2RlZ2hrbG1ub3BxcnN0dXZ3eHl6XXxuW2FjZWZnaWxvcHJ1el18b218cFthZWZnaGtsbW5yc3R3eV18cWF8cltlb3N1d118c1thYmNkZWdoaWprbG1ub3J0dXZ4eXpdfHRbY2RmZ2hqa2xtbm9ydHZ3el18dVthZ2tzeXpdfHZbYWNlZ2ludV18d1tmc118eVtldF18elthbXddXCI7XG52YXIgdGxkc19kZWZhdWx0ID0gXCJiaXp8Y29tfGVkdXxnb3Z8bmV0fG9yZ3xwcm98d2VifHh4eHxhZXJvfGFzaWF8Y29vcHxpbmZvfG11c2V1bXxuYW1lfHNob3B8XFx1MDQ0MFxcdTA0NDRcIi5zcGxpdChcInxcIik7XG5mdW5jdGlvbiByZXNldFNjYW5DYWNoZShzZWxmMikge1xuICBzZWxmMi5fX2luZGV4X18gPSAtMTtcbiAgc2VsZjIuX190ZXh0X2NhY2hlX18gPSBcIlwiO1xufVxuX19uYW1lKHJlc2V0U2NhbkNhY2hlLCBcInJlc2V0U2NhbkNhY2hlXCIpO1xuZnVuY3Rpb24gY3JlYXRlVmFsaWRhdG9yKHJlMikge1xuICByZXR1cm4gZnVuY3Rpb24odGV4dDMsIHBvcykge1xuICAgIHZhciB0YWlsID0gdGV4dDMuc2xpY2UocG9zKTtcbiAgICBpZiAocmUyLnRlc3QodGFpbCkpIHtcbiAgICAgIHJldHVybiB0YWlsLm1hdGNoKHJlMilbMF0ubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfTtcbn1cbl9fbmFtZShjcmVhdGVWYWxpZGF0b3IsIFwiY3JlYXRlVmFsaWRhdG9yXCIpO1xuZnVuY3Rpb24gY3JlYXRlTm9ybWFsaXplcigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG1hdGNoMiwgc2VsZjIpIHtcbiAgICBzZWxmMi5ub3JtYWxpemUobWF0Y2gyKTtcbiAgfTtcbn1cbl9fbmFtZShjcmVhdGVOb3JtYWxpemVyLCBcImNyZWF0ZU5vcm1hbGl6ZXJcIik7XG5mdW5jdGlvbiBjb21waWxlKHNlbGYyKSB7XG4gIHZhciByZSQxID0gc2VsZjIucmUgPSByZShzZWxmMi5fX29wdHNfXyk7XG4gIHZhciB0bGRzMiA9IHNlbGYyLl9fdGxkc19fLnNsaWNlKCk7XG4gIHNlbGYyLm9uQ29tcGlsZSgpO1xuICBpZiAoIXNlbGYyLl9fdGxkc19yZXBsYWNlZF9fKSB7XG4gICAgdGxkczIucHVzaCh0bGRzXzJjaF9zcmNfcmUpO1xuICB9XG4gIHRsZHMyLnB1c2gocmUkMS5zcmNfeG4pO1xuICByZSQxLnNyY190bGRzID0gdGxkczIuam9pbihcInxcIik7XG4gIGZ1bmN0aW9uIHVudHBsKHRwbCkge1xuICAgIHJldHVybiB0cGwucmVwbGFjZShcIiVUTERTJVwiLCByZSQxLnNyY190bGRzKTtcbiAgfVxuICBfX25hbWUodW50cGwsIFwidW50cGxcIik7XG4gIHJlJDEuZW1haWxfZnV6enkgPSBSZWdFeHAodW50cGwocmUkMS50cGxfZW1haWxfZnV6enkpLCBcImlcIik7XG4gIHJlJDEubGlua19mdXp6eSA9IFJlZ0V4cCh1bnRwbChyZSQxLnRwbF9saW5rX2Z1enp5KSwgXCJpXCIpO1xuICByZSQxLmxpbmtfbm9faXBfZnV6enkgPSBSZWdFeHAodW50cGwocmUkMS50cGxfbGlua19ub19pcF9mdXp6eSksIFwiaVwiKTtcbiAgcmUkMS5ob3N0X2Z1enp5X3Rlc3QgPSBSZWdFeHAodW50cGwocmUkMS50cGxfaG9zdF9mdXp6eV90ZXN0KSwgXCJpXCIpO1xuICB2YXIgYWxpYXNlcyA9IFtdO1xuICBzZWxmMi5fX2NvbXBpbGVkX18gPSB7fTtcbiAgZnVuY3Rpb24gc2NoZW1hRXJyb3IobmFtZTIsIHZhbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignKExpbmtpZnlJdCkgSW52YWxpZCBzY2hlbWEgXCInICsgbmFtZTIgKyAnXCI6ICcgKyB2YWwpO1xuICB9XG4gIF9fbmFtZShzY2hlbWFFcnJvciwgXCJzY2hlbWFFcnJvclwiKTtcbiAgT2JqZWN0LmtleXMoc2VsZjIuX19zY2hlbWFzX18pLmZvckVhY2goZnVuY3Rpb24obmFtZTIpIHtcbiAgICB2YXIgdmFsID0gc2VsZjIuX19zY2hlbWFzX19bbmFtZTJdO1xuICAgIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGNvbXBpbGVkID0geyB2YWxpZGF0ZTogbnVsbCwgbGluazogbnVsbCB9O1xuICAgIHNlbGYyLl9fY29tcGlsZWRfX1tuYW1lMl0gPSBjb21waWxlZDtcbiAgICBpZiAoaXNPYmplY3QkMih2YWwpKSB7XG4gICAgICBpZiAoaXNSZWdFeHAodmFsLnZhbGlkYXRlKSkge1xuICAgICAgICBjb21waWxlZC52YWxpZGF0ZSA9IGNyZWF0ZVZhbGlkYXRvcih2YWwudmFsaWRhdGUpO1xuICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbC52YWxpZGF0ZSkpIHtcbiAgICAgICAgY29tcGlsZWQudmFsaWRhdGUgPSB2YWwudmFsaWRhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY2hlbWFFcnJvcihuYW1lMiwgdmFsKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbC5ub3JtYWxpemUpKSB7XG4gICAgICAgIGNvbXBpbGVkLm5vcm1hbGl6ZSA9IHZhbC5ub3JtYWxpemU7XG4gICAgICB9IGVsc2UgaWYgKCF2YWwubm9ybWFsaXplKSB7XG4gICAgICAgIGNvbXBpbGVkLm5vcm1hbGl6ZSA9IGNyZWF0ZU5vcm1hbGl6ZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjaGVtYUVycm9yKG5hbWUyLCB2YWwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcodmFsKSkge1xuICAgICAgYWxpYXNlcy5wdXNoKG5hbWUyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2NoZW1hRXJyb3IobmFtZTIsIHZhbCk7XG4gIH0pO1xuICBhbGlhc2VzLmZvckVhY2goZnVuY3Rpb24oYWxpYXMpIHtcbiAgICBpZiAoIXNlbGYyLl9fY29tcGlsZWRfX1tzZWxmMi5fX3NjaGVtYXNfX1thbGlhc11dKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNlbGYyLl9fY29tcGlsZWRfX1thbGlhc10udmFsaWRhdGUgPSBzZWxmMi5fX2NvbXBpbGVkX19bc2VsZjIuX19zY2hlbWFzX19bYWxpYXNdXS52YWxpZGF0ZTtcbiAgICBzZWxmMi5fX2NvbXBpbGVkX19bYWxpYXNdLm5vcm1hbGl6ZSA9IHNlbGYyLl9fY29tcGlsZWRfX1tzZWxmMi5fX3NjaGVtYXNfX1thbGlhc11dLm5vcm1hbGl6ZTtcbiAgfSk7XG4gIHNlbGYyLl9fY29tcGlsZWRfX1tcIlwiXSA9IHsgdmFsaWRhdGU6IG51bGwsIG5vcm1hbGl6ZTogY3JlYXRlTm9ybWFsaXplcigpIH07XG4gIHZhciBzbGlzdCA9IE9iamVjdC5rZXlzKHNlbGYyLl9fY29tcGlsZWRfXykuZmlsdGVyKGZ1bmN0aW9uKG5hbWUyKSB7XG4gICAgcmV0dXJuIG5hbWUyLmxlbmd0aCA+IDAgJiYgc2VsZjIuX19jb21waWxlZF9fW25hbWUyXTtcbiAgfSkubWFwKGVzY2FwZVJFKS5qb2luKFwifFwiKTtcbiAgc2VsZjIucmUuc2NoZW1hX3Rlc3QgPSBSZWdFeHAoXCIoXnwoPyFfKSg/Ols+PFxcdUZGNUNdfFwiICsgcmUkMS5zcmNfWlBDYyArIFwiKSkoXCIgKyBzbGlzdCArIFwiKVwiLCBcImlcIik7XG4gIHNlbGYyLnJlLnNjaGVtYV9zZWFyY2ggPSBSZWdFeHAoXCIoXnwoPyFfKSg/Ols+PFxcdUZGNUNdfFwiICsgcmUkMS5zcmNfWlBDYyArIFwiKSkoXCIgKyBzbGlzdCArIFwiKVwiLCBcImlnXCIpO1xuICBzZWxmMi5yZS5wcmV0ZXN0ID0gUmVnRXhwKFwiKFwiICsgc2VsZjIucmUuc2NoZW1hX3Rlc3Quc291cmNlICsgXCIpfChcIiArIHNlbGYyLnJlLmhvc3RfZnV6enlfdGVzdC5zb3VyY2UgKyBcIil8QFwiLCBcImlcIik7XG4gIHJlc2V0U2NhbkNhY2hlKHNlbGYyKTtcbn1cbl9fbmFtZShjb21waWxlLCBcImNvbXBpbGVcIik7XG5mdW5jdGlvbiBNYXRjaChzZWxmMiwgc2hpZnQpIHtcbiAgdmFyIHN0YXJ0ID0gc2VsZjIuX19pbmRleF9fLCBlbmQgPSBzZWxmMi5fX2xhc3RfaW5kZXhfXywgdGV4dDMgPSBzZWxmMi5fX3RleHRfY2FjaGVfXy5zbGljZShzdGFydCwgZW5kKTtcbiAgdGhpcy5zY2hlbWEgPSBzZWxmMi5fX3NjaGVtYV9fLnRvTG93ZXJDYXNlKCk7XG4gIHRoaXMuaW5kZXggPSBzdGFydCArIHNoaWZ0O1xuICB0aGlzLmxhc3RJbmRleCA9IGVuZCArIHNoaWZ0O1xuICB0aGlzLnJhdyA9IHRleHQzO1xuICB0aGlzLnRleHQgPSB0ZXh0MztcbiAgdGhpcy51cmwgPSB0ZXh0Mztcbn1cbl9fbmFtZShNYXRjaCwgXCJNYXRjaFwiKTtcbmZ1bmN0aW9uIGNyZWF0ZU1hdGNoKHNlbGYyLCBzaGlmdCkge1xuICB2YXIgbWF0Y2gyID0gbmV3IE1hdGNoKHNlbGYyLCBzaGlmdCk7XG4gIHNlbGYyLl9fY29tcGlsZWRfX1ttYXRjaDIuc2NoZW1hXS5ub3JtYWxpemUobWF0Y2gyLCBzZWxmMik7XG4gIHJldHVybiBtYXRjaDI7XG59XG5fX25hbWUoY3JlYXRlTWF0Y2gsIFwiY3JlYXRlTWF0Y2hcIik7XG5mdW5jdGlvbiBMaW5raWZ5SXQkMShzY2hlbWFzLCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBMaW5raWZ5SXQkMSkpIHtcbiAgICByZXR1cm4gbmV3IExpbmtpZnlJdCQxKHNjaGVtYXMsIG9wdGlvbnMpO1xuICB9XG4gIGlmICghb3B0aW9ucykge1xuICAgIGlmIChpc09wdGlvbnNPYmooc2NoZW1hcykpIHtcbiAgICAgIG9wdGlvbnMgPSBzY2hlbWFzO1xuICAgICAgc2NoZW1hcyA9IHt9O1xuICAgIH1cbiAgfVxuICB0aGlzLl9fb3B0c19fID0gYXNzaWduKHt9LCBkZWZhdWx0T3B0aW9ucywgb3B0aW9ucyk7XG4gIHRoaXMuX19pbmRleF9fID0gLTE7XG4gIHRoaXMuX19sYXN0X2luZGV4X18gPSAtMTtcbiAgdGhpcy5fX3NjaGVtYV9fID0gXCJcIjtcbiAgdGhpcy5fX3RleHRfY2FjaGVfXyA9IFwiXCI7XG4gIHRoaXMuX19zY2hlbWFzX18gPSBhc3NpZ24oe30sIGRlZmF1bHRTY2hlbWFzLCBzY2hlbWFzKTtcbiAgdGhpcy5fX2NvbXBpbGVkX18gPSB7fTtcbiAgdGhpcy5fX3RsZHNfXyA9IHRsZHNfZGVmYXVsdDtcbiAgdGhpcy5fX3RsZHNfcmVwbGFjZWRfXyA9IGZhbHNlO1xuICB0aGlzLnJlID0ge307XG4gIGNvbXBpbGUodGhpcyk7XG59XG5fX25hbWUoTGlua2lmeUl0JDEsIFwiTGlua2lmeUl0JDFcIik7XG5MaW5raWZ5SXQkMS5wcm90b3R5cGUuYWRkID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBhZGQoc2NoZW1hLCBkZWZpbml0aW9uKSB7XG4gIHRoaXMuX19zY2hlbWFzX19bc2NoZW1hXSA9IGRlZmluaXRpb247XG4gIGNvbXBpbGUodGhpcyk7XG4gIHJldHVybiB0aGlzO1xufSwgXCJhZGRcIik7XG5MaW5raWZ5SXQkMS5wcm90b3R5cGUuc2V0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBzZXQob3B0aW9ucykge1xuICB0aGlzLl9fb3B0c19fID0gYXNzaWduKHRoaXMuX19vcHRzX18sIG9wdGlvbnMpO1xuICByZXR1cm4gdGhpcztcbn0sIFwic2V0XCIpO1xuTGlua2lmeUl0JDEucHJvdG90eXBlLnRlc3QgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIHRlc3QodGV4dDMpIHtcbiAgdGhpcy5fX3RleHRfY2FjaGVfXyA9IHRleHQzO1xuICB0aGlzLl9faW5kZXhfXyA9IC0xO1xuICBpZiAoIXRleHQzLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbTIsIG1sLCBtZSwgbGVuLCBzaGlmdCwgbmV4dCwgcmUyLCB0bGRfcG9zLCBhdF9wb3M7XG4gIGlmICh0aGlzLnJlLnNjaGVtYV90ZXN0LnRlc3QodGV4dDMpKSB7XG4gICAgcmUyID0gdGhpcy5yZS5zY2hlbWFfc2VhcmNoO1xuICAgIHJlMi5sYXN0SW5kZXggPSAwO1xuICAgIHdoaWxlICgobTIgPSByZTIuZXhlYyh0ZXh0MykpICE9PSBudWxsKSB7XG4gICAgICBsZW4gPSB0aGlzLnRlc3RTY2hlbWFBdCh0ZXh0MywgbTJbMl0sIHJlMi5sYXN0SW5kZXgpO1xuICAgICAgaWYgKGxlbikge1xuICAgICAgICB0aGlzLl9fc2NoZW1hX18gPSBtMlsyXTtcbiAgICAgICAgdGhpcy5fX2luZGV4X18gPSBtMi5pbmRleCArIG0yWzFdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5fX2xhc3RfaW5kZXhfXyA9IG0yLmluZGV4ICsgbTJbMF0ubGVuZ3RoICsgbGVuO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHRoaXMuX19vcHRzX18uZnV6enlMaW5rICYmIHRoaXMuX19jb21waWxlZF9fW1wiaHR0cDpcIl0pIHtcbiAgICB0bGRfcG9zID0gdGV4dDMuc2VhcmNoKHRoaXMucmUuaG9zdF9mdXp6eV90ZXN0KTtcbiAgICBpZiAodGxkX3BvcyA+PSAwKSB7XG4gICAgICBpZiAodGhpcy5fX2luZGV4X18gPCAwIHx8IHRsZF9wb3MgPCB0aGlzLl9faW5kZXhfXykge1xuICAgICAgICBpZiAoKG1sID0gdGV4dDMubWF0Y2godGhpcy5fX29wdHNfXy5mdXp6eUlQID8gdGhpcy5yZS5saW5rX2Z1enp5IDogdGhpcy5yZS5saW5rX25vX2lwX2Z1enp5KSkgIT09IG51bGwpIHtcbiAgICAgICAgICBzaGlmdCA9IG1sLmluZGV4ICsgbWxbMV0ubGVuZ3RoO1xuICAgICAgICAgIGlmICh0aGlzLl9faW5kZXhfXyA8IDAgfHwgc2hpZnQgPCB0aGlzLl9faW5kZXhfXykge1xuICAgICAgICAgICAgdGhpcy5fX3NjaGVtYV9fID0gXCJcIjtcbiAgICAgICAgICAgIHRoaXMuX19pbmRleF9fID0gc2hpZnQ7XG4gICAgICAgICAgICB0aGlzLl9fbGFzdF9pbmRleF9fID0gbWwuaW5kZXggKyBtbFswXS5sZW5ndGg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICh0aGlzLl9fb3B0c19fLmZ1enp5RW1haWwgJiYgdGhpcy5fX2NvbXBpbGVkX19bXCJtYWlsdG86XCJdKSB7XG4gICAgYXRfcG9zID0gdGV4dDMuaW5kZXhPZihcIkBcIik7XG4gICAgaWYgKGF0X3BvcyA+PSAwKSB7XG4gICAgICBpZiAoKG1lID0gdGV4dDMubWF0Y2godGhpcy5yZS5lbWFpbF9mdXp6eSkpICE9PSBudWxsKSB7XG4gICAgICAgIHNoaWZ0ID0gbWUuaW5kZXggKyBtZVsxXS5sZW5ndGg7XG4gICAgICAgIG5leHQgPSBtZS5pbmRleCArIG1lWzBdLmxlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMuX19pbmRleF9fIDwgMCB8fCBzaGlmdCA8IHRoaXMuX19pbmRleF9fIHx8IHNoaWZ0ID09PSB0aGlzLl9faW5kZXhfXyAmJiBuZXh0ID4gdGhpcy5fX2xhc3RfaW5kZXhfXykge1xuICAgICAgICAgIHRoaXMuX19zY2hlbWFfXyA9IFwibWFpbHRvOlwiO1xuICAgICAgICAgIHRoaXMuX19pbmRleF9fID0gc2hpZnQ7XG4gICAgICAgICAgdGhpcy5fX2xhc3RfaW5kZXhfXyA9IG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXMuX19pbmRleF9fID49IDA7XG59LCBcInRlc3RcIik7XG5MaW5raWZ5SXQkMS5wcm90b3R5cGUucHJldGVzdCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gcHJldGVzdCh0ZXh0Mykge1xuICByZXR1cm4gdGhpcy5yZS5wcmV0ZXN0LnRlc3QodGV4dDMpO1xufSwgXCJwcmV0ZXN0XCIpO1xuTGlua2lmeUl0JDEucHJvdG90eXBlLnRlc3RTY2hlbWFBdCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gdGVzdFNjaGVtYUF0KHRleHQzLCBzY2hlbWEsIHBvcykge1xuICBpZiAoIXRoaXMuX19jb21waWxlZF9fW3NjaGVtYS50b0xvd2VyQ2FzZSgpXSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiB0aGlzLl9fY29tcGlsZWRfX1tzY2hlbWEudG9Mb3dlckNhc2UoKV0udmFsaWRhdGUodGV4dDMsIHBvcywgdGhpcyk7XG59LCBcInRlc3RTY2hlbWFBdFwiKTtcbkxpbmtpZnlJdCQxLnByb3RvdHlwZS5tYXRjaCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gbWF0Y2godGV4dDMpIHtcbiAgdmFyIHNoaWZ0ID0gMCwgcmVzdWx0ID0gW107XG4gIGlmICh0aGlzLl9faW5kZXhfXyA+PSAwICYmIHRoaXMuX190ZXh0X2NhY2hlX18gPT09IHRleHQzKSB7XG4gICAgcmVzdWx0LnB1c2goY3JlYXRlTWF0Y2godGhpcywgc2hpZnQpKTtcbiAgICBzaGlmdCA9IHRoaXMuX19sYXN0X2luZGV4X187XG4gIH1cbiAgdmFyIHRhaWwgPSBzaGlmdCA/IHRleHQzLnNsaWNlKHNoaWZ0KSA6IHRleHQzO1xuICB3aGlsZSAodGhpcy50ZXN0KHRhaWwpKSB7XG4gICAgcmVzdWx0LnB1c2goY3JlYXRlTWF0Y2godGhpcywgc2hpZnQpKTtcbiAgICB0YWlsID0gdGFpbC5zbGljZSh0aGlzLl9fbGFzdF9pbmRleF9fKTtcbiAgICBzaGlmdCArPSB0aGlzLl9fbGFzdF9pbmRleF9fO1xuICB9XG4gIGlmIChyZXN1bHQubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn0sIFwibWF0Y2hcIik7XG5MaW5raWZ5SXQkMS5wcm90b3R5cGUudGxkcyA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gdGxkcyhsaXN0Mywga2VlcE9sZCkge1xuICBsaXN0MyA9IEFycmF5LmlzQXJyYXkobGlzdDMpID8gbGlzdDMgOiBbbGlzdDNdO1xuICBpZiAoIWtlZXBPbGQpIHtcbiAgICB0aGlzLl9fdGxkc19fID0gbGlzdDMuc2xpY2UoKTtcbiAgICB0aGlzLl9fdGxkc19yZXBsYWNlZF9fID0gdHJ1ZTtcbiAgICBjb21waWxlKHRoaXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHRoaXMuX190bGRzX18gPSB0aGlzLl9fdGxkc19fLmNvbmNhdChsaXN0Mykuc29ydCgpLmZpbHRlcihmdW5jdGlvbihlbDIsIGlkeCwgYXJyKSB7XG4gICAgcmV0dXJuIGVsMiAhPT0gYXJyW2lkeCAtIDFdO1xuICB9KS5yZXZlcnNlKCk7XG4gIGNvbXBpbGUodGhpcyk7XG4gIHJldHVybiB0aGlzO1xufSwgXCJ0bGRzXCIpO1xuTGlua2lmeUl0JDEucHJvdG90eXBlLm5vcm1hbGl6ZSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gbm9ybWFsaXplMyhtYXRjaDIpIHtcbiAgaWYgKCFtYXRjaDIuc2NoZW1hKSB7XG4gICAgbWF0Y2gyLnVybCA9IFwiaHR0cDovL1wiICsgbWF0Y2gyLnVybDtcbiAgfVxuICBpZiAobWF0Y2gyLnNjaGVtYSA9PT0gXCJtYWlsdG86XCIgJiYgIS9ebWFpbHRvOi9pLnRlc3QobWF0Y2gyLnVybCkpIHtcbiAgICBtYXRjaDIudXJsID0gXCJtYWlsdG86XCIgKyBtYXRjaDIudXJsO1xuICB9XG59LCBcIm5vcm1hbGl6ZVwiKTtcbkxpbmtpZnlJdCQxLnByb3RvdHlwZS5vbkNvbXBpbGUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uIG9uQ29tcGlsZSgpIHtcbn0sIFwib25Db21waWxlXCIpO1xudmFyIGxpbmtpZnlJdCA9IExpbmtpZnlJdCQxO1xuY29uc3QgbWF4SW50ID0gMjE0NzQ4MzY0NztcbmNvbnN0IGJhc2UgPSAzNjtcbmNvbnN0IHRNaW4gPSAxO1xuY29uc3QgdE1heCA9IDI2O1xuY29uc3Qgc2tldyA9IDM4O1xuY29uc3QgZGFtcCA9IDcwMDtcbmNvbnN0IGluaXRpYWxCaWFzID0gNzI7XG5jb25zdCBpbml0aWFsTiA9IDEyODtcbmNvbnN0IGRlbGltaXRlciA9IFwiLVwiO1xuY29uc3QgcmVnZXhQdW55Y29kZSA9IC9eeG4tLS87XG5jb25zdCByZWdleE5vbkFTQ0lJID0gL1teXFwwLVxceDdFXS87XG5jb25zdCByZWdleFNlcGFyYXRvcnMgPSAvW1xceDJFXFx1MzAwMlxcdUZGMEVcXHVGRjYxXS9nO1xuY29uc3QgZXJyb3JzID0ge1xuICBcIm92ZXJmbG93XCI6IFwiT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3NcIixcbiAgXCJub3QtYmFzaWNcIjogXCJJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpXCIsXG4gIFwiaW52YWxpZC1pbnB1dFwiOiBcIkludmFsaWQgaW5wdXRcIlxufTtcbmNvbnN0IGJhc2VNaW51c1RNaW4gPSBiYXNlIC0gdE1pbjtcbmNvbnN0IGZsb29yID0gTWF0aC5mbG9vcjtcbmNvbnN0IHN0cmluZ0Zyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG5mdW5jdGlvbiBlcnJvcih0eXBlMikge1xuICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihlcnJvcnNbdHlwZTJdKTtcbn1cbl9fbmFtZShlcnJvciwgXCJlcnJvclwiKTtcbmZ1bmN0aW9uIG1hcChhcnJheSwgZm4pIHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGxldCBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIHJlc3VsdFtsZW5ndGhdID0gZm4oYXJyYXlbbGVuZ3RoXSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbl9fbmFtZShtYXAsIFwibWFwXCIpO1xuZnVuY3Rpb24gbWFwRG9tYWluKHN0cmluZywgZm4pIHtcbiAgY29uc3QgcGFydHMgPSBzdHJpbmcuc3BsaXQoXCJAXCIpO1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICByZXN1bHQgPSBwYXJ0c1swXSArIFwiQFwiO1xuICAgIHN0cmluZyA9IHBhcnRzWzFdO1xuICB9XG4gIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJlZ2V4U2VwYXJhdG9ycywgXCIuXCIpO1xuICBjb25zdCBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoXCIuXCIpO1xuICBjb25zdCBlbmNvZGVkID0gbWFwKGxhYmVscywgZm4pLmpvaW4oXCIuXCIpO1xuICByZXR1cm4gcmVzdWx0ICsgZW5jb2RlZDtcbn1cbl9fbmFtZShtYXBEb21haW4sIFwibWFwRG9tYWluXCIpO1xuZnVuY3Rpb24gdWNzMmRlY29kZShzdHJpbmcpIHtcbiAgY29uc3Qgb3V0cHV0ID0gW107XG4gIGxldCBjb3VudGVyID0gMDtcbiAgY29uc3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgd2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG4gICAgaWYgKHZhbHVlID49IDU1Mjk2ICYmIHZhbHVlIDw9IDU2MzE5ICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICAgIGNvbnN0IGV4dHJhID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcbiAgICAgIGlmICgoZXh0cmEgJiA2NDUxMikgPT0gNTYzMjApIHtcbiAgICAgICAgb3V0cHV0LnB1c2goKCh2YWx1ZSAmIDEwMjMpIDw8IDEwKSArIChleHRyYSAmIDEwMjMpICsgNjU1MzYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgICAgICBjb3VudGVyLS07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn1cbl9fbmFtZSh1Y3MyZGVjb2RlLCBcInVjczJkZWNvZGVcIik7XG5jb25zdCB1Y3MyZW5jb2RlID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgoYXJyYXkpID0+IFN0cmluZy5mcm9tQ29kZVBvaW50KC4uLmFycmF5KSwgXCJ1Y3MyZW5jb2RlXCIpO1xuY29uc3QgYmFzaWNUb0RpZ2l0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihjb2RlUG9pbnQpIHtcbiAgaWYgKGNvZGVQb2ludCAtIDQ4IDwgMTApIHtcbiAgICByZXR1cm4gY29kZVBvaW50IC0gMjI7XG4gIH1cbiAgaWYgKGNvZGVQb2ludCAtIDY1IDwgMjYpIHtcbiAgICByZXR1cm4gY29kZVBvaW50IC0gNjU7XG4gIH1cbiAgaWYgKGNvZGVQb2ludCAtIDk3IDwgMjYpIHtcbiAgICByZXR1cm4gY29kZVBvaW50IC0gOTc7XG4gIH1cbiAgcmV0dXJuIGJhc2U7XG59LCBcImJhc2ljVG9EaWdpdFwiKTtcbmNvbnN0IGRpZ2l0VG9CYXNpYyA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oZGlnaXQsIGZsYWcpIHtcbiAgcmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KSAtICgoZmxhZyAhPSAwKSA8PCA1KTtcbn0sIFwiZGlnaXRUb0Jhc2ljXCIpO1xuY29uc3QgYWRhcHQgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKGRlbHRhMiwgbnVtUG9pbnRzLCBmaXJzdFRpbWUpIHtcbiAgbGV0IGsgPSAwO1xuICBkZWx0YTIgPSBmaXJzdFRpbWUgPyBmbG9vcihkZWx0YTIgLyBkYW1wKSA6IGRlbHRhMiA+PiAxO1xuICBkZWx0YTIgKz0gZmxvb3IoZGVsdGEyIC8gbnVtUG9pbnRzKTtcbiAgZm9yICg7IGRlbHRhMiA+IGJhc2VNaW51c1RNaW4gKiB0TWF4ID4+IDE7IGsgKz0gYmFzZSkge1xuICAgIGRlbHRhMiA9IGZsb29yKGRlbHRhMiAvIGJhc2VNaW51c1RNaW4pO1xuICB9XG4gIHJldHVybiBmbG9vcihrICsgKGJhc2VNaW51c1RNaW4gKyAxKSAqIGRlbHRhMiAvIChkZWx0YTIgKyBza2V3KSk7XG59LCBcImFkYXB0XCIpO1xuY29uc3QgZGVjb2RlID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihpbnB1dCkge1xuICBjb25zdCBvdXRwdXQgPSBbXTtcbiAgY29uc3QgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGg7XG4gIGxldCBpID0gMDtcbiAgbGV0IG4yID0gaW5pdGlhbE47XG4gIGxldCBiaWFzID0gaW5pdGlhbEJpYXM7XG4gIGxldCBiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG4gIGlmIChiYXNpYyA8IDApIHtcbiAgICBiYXNpYyA9IDA7XG4gIH1cbiAgZm9yIChsZXQgaiA9IDA7IGogPCBiYXNpYzsgKytqKSB7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQoaikgPj0gMTI4KSB7XG4gICAgICBlcnJvcihcIm5vdC1iYXNpY1wiKTtcbiAgICB9XG4gICAgb3V0cHV0LnB1c2goaW5wdXQuY2hhckNvZGVBdChqKSk7XG4gIH1cbiAgZm9yIChsZXQgaW5kZXggPSBiYXNpYyA+IDAgPyBiYXNpYyArIDEgOiAwOyBpbmRleCA8IGlucHV0TGVuZ3RoOyApIHtcbiAgICBsZXQgb2xkaSA9IGk7XG4gICAgZm9yIChsZXQgdyA9IDEsIGsgPSBiYXNlOyA7IGsgKz0gYmFzZSkge1xuICAgICAgaWYgKGluZGV4ID49IGlucHV0TGVuZ3RoKSB7XG4gICAgICAgIGVycm9yKFwiaW52YWxpZC1pbnB1dFwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRpZ2l0ID0gYmFzaWNUb0RpZ2l0KGlucHV0LmNoYXJDb2RlQXQoaW5kZXgrKykpO1xuICAgICAgaWYgKGRpZ2l0ID49IGJhc2UgfHwgZGlnaXQgPiBmbG9vcigobWF4SW50IC0gaSkgLyB3KSkge1xuICAgICAgICBlcnJvcihcIm92ZXJmbG93XCIpO1xuICAgICAgfVxuICAgICAgaSArPSBkaWdpdCAqIHc7XG4gICAgICBjb25zdCB0MiA9IGsgPD0gYmlhcyA/IHRNaW4gOiBrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzO1xuICAgICAgaWYgKGRpZ2l0IDwgdDIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb25zdCBiYXNlTWludXNUID0gYmFzZSAtIHQyO1xuICAgICAgaWYgKHcgPiBmbG9vcihtYXhJbnQgLyBiYXNlTWludXNUKSkge1xuICAgICAgICBlcnJvcihcIm92ZXJmbG93XCIpO1xuICAgICAgfVxuICAgICAgdyAqPSBiYXNlTWludXNUO1xuICAgIH1cbiAgICBjb25zdCBvdXQgPSBvdXRwdXQubGVuZ3RoICsgMTtcbiAgICBiaWFzID0gYWRhcHQoaSAtIG9sZGksIG91dCwgb2xkaSA9PSAwKTtcbiAgICBpZiAoZmxvb3IoaSAvIG91dCkgPiBtYXhJbnQgLSBuMikge1xuICAgICAgZXJyb3IoXCJvdmVyZmxvd1wiKTtcbiAgICB9XG4gICAgbjIgKz0gZmxvb3IoaSAvIG91dCk7XG4gICAgaSAlPSBvdXQ7XG4gICAgb3V0cHV0LnNwbGljZShpKyssIDAsIG4yKTtcbiAgfVxuICByZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4ub3V0cHV0KTtcbn0sIFwiZGVjb2RlXCIpO1xuY29uc3QgZW5jb2RlID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihpbnB1dCkge1xuICBjb25zdCBvdXRwdXQgPSBbXTtcbiAgaW5wdXQgPSB1Y3MyZGVjb2RlKGlucHV0KTtcbiAgbGV0IGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuICBsZXQgbjIgPSBpbml0aWFsTjtcbiAgbGV0IGRlbHRhMiA9IDA7XG4gIGxldCBiaWFzID0gaW5pdGlhbEJpYXM7XG4gIGZvciAoY29uc3QgY3VycmVudFZhbHVlIG9mIGlucHV0KSB7XG4gICAgaWYgKGN1cnJlbnRWYWx1ZSA8IDEyOCkge1xuICAgICAgb3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGN1cnJlbnRWYWx1ZSkpO1xuICAgIH1cbiAgfVxuICBsZXQgYmFzaWNMZW5ndGggPSBvdXRwdXQubGVuZ3RoO1xuICBsZXQgaGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aDtcbiAgaWYgKGJhc2ljTGVuZ3RoKSB7XG4gICAgb3V0cHV0LnB1c2goZGVsaW1pdGVyKTtcbiAgfVxuICB3aGlsZSAoaGFuZGxlZENQQ291bnQgPCBpbnB1dExlbmd0aCkge1xuICAgIGxldCBtMiA9IG1heEludDtcbiAgICBmb3IgKGNvbnN0IGN1cnJlbnRWYWx1ZSBvZiBpbnB1dCkge1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA+PSBuMiAmJiBjdXJyZW50VmFsdWUgPCBtMikge1xuICAgICAgICBtMiA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuICAgIGlmIChtMiAtIG4yID4gZmxvb3IoKG1heEludCAtIGRlbHRhMikgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG4gICAgICBlcnJvcihcIm92ZXJmbG93XCIpO1xuICAgIH1cbiAgICBkZWx0YTIgKz0gKG0yIC0gbjIpICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuICAgIG4yID0gbTI7XG4gICAgZm9yIChjb25zdCBjdXJyZW50VmFsdWUgb2YgaW5wdXQpIHtcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPCBuMiAmJiArK2RlbHRhMiA+IG1heEludCkge1xuICAgICAgICBlcnJvcihcIm92ZXJmbG93XCIpO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBuMikge1xuICAgICAgICBsZXQgcTIgPSBkZWx0YTI7XG4gICAgICAgIGZvciAobGV0IGsgPSBiYXNlOyA7IGsgKz0gYmFzZSkge1xuICAgICAgICAgIGNvbnN0IHQyID0gayA8PSBiaWFzID8gdE1pbiA6IGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXM7XG4gICAgICAgICAgaWYgKHEyIDwgdDIpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBxTWludXNUID0gcTIgLSB0MjtcbiAgICAgICAgICBjb25zdCBiYXNlTWludXNUID0gYmFzZSAtIHQyO1xuICAgICAgICAgIG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWModDIgKyBxTWludXNUICUgYmFzZU1pbnVzVCwgMCkpKTtcbiAgICAgICAgICBxMiA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcbiAgICAgICAgfVxuICAgICAgICBvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHEyLCAwKSkpO1xuICAgICAgICBiaWFzID0gYWRhcHQoZGVsdGEyLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcbiAgICAgICAgZGVsdGEyID0gMDtcbiAgICAgICAgKytoYW5kbGVkQ1BDb3VudDtcbiAgICAgIH1cbiAgICB9XG4gICAgKytkZWx0YTI7XG4gICAgKytuMjtcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oXCJcIik7XG59LCBcImVuY29kZVwiKTtcbmNvbnN0IHRvVW5pY29kZSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oaW5wdXQpIHtcbiAgcmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlZ2V4UHVueWNvZGUudGVzdChzdHJpbmcpID8gZGVjb2RlKHN0cmluZy5zbGljZSg0KS50b0xvd2VyQ2FzZSgpKSA6IHN0cmluZztcbiAgfSk7XG59LCBcInRvVW5pY29kZVwiKTtcbmNvbnN0IHRvQVNDSUkgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKGlucHV0KSB7XG4gIHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHJldHVybiByZWdleE5vbkFTQ0lJLnRlc3Qoc3RyaW5nKSA/IFwieG4tLVwiICsgZW5jb2RlKHN0cmluZykgOiBzdHJpbmc7XG4gIH0pO1xufSwgXCJ0b0FTQ0lJXCIpO1xuY29uc3QgcHVueWNvZGUkMSA9IHtcbiAgXCJ2ZXJzaW9uXCI6IFwiMi4xLjBcIixcbiAgXCJ1Y3MyXCI6IHtcbiAgICBcImRlY29kZVwiOiB1Y3MyZGVjb2RlLFxuICAgIFwiZW5jb2RlXCI6IHVjczJlbmNvZGVcbiAgfSxcbiAgXCJkZWNvZGVcIjogZGVjb2RlLFxuICBcImVuY29kZVwiOiBlbmNvZGUsXG4gIFwidG9BU0NJSVwiOiB0b0FTQ0lJLFxuICBcInRvVW5pY29kZVwiOiB0b1VuaWNvZGVcbn07XG52YXIgcHVueWNvZGVfZXM2ID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5mcmVlemUoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiBcIk1vZHVsZVwiLFxuICB1Y3MyZGVjb2RlLFxuICB1Y3MyZW5jb2RlLFxuICBkZWNvZGUsXG4gIGVuY29kZSxcbiAgdG9BU0NJSSxcbiAgdG9Vbmljb2RlLFxuICBcImRlZmF1bHRcIjogcHVueWNvZGUkMVxufSk7XG52YXIgcmVxdWlyZSQkOCA9IC8qIEBfX1BVUkVfXyAqLyBnZXRBdWdtZW50ZWROYW1lc3BhY2UocHVueWNvZGVfZXM2KTtcbnZhciBfZGVmYXVsdCA9IHtcbiAgb3B0aW9uczoge1xuICAgIGh0bWw6IGZhbHNlLFxuICAgIHhodG1sT3V0OiBmYWxzZSxcbiAgICBicmVha3M6IGZhbHNlLFxuICAgIGxhbmdQcmVmaXg6IFwibGFuZ3VhZ2UtXCIsXG4gICAgbGlua2lmeTogZmFsc2UsXG4gICAgdHlwb2dyYXBoZXI6IGZhbHNlLFxuICAgIHF1b3RlczogXCJcXHUyMDFDXFx1MjAxRFxcdTIwMThcXHUyMDE5XCIsXG4gICAgaGlnaGxpZ2h0OiBudWxsLFxuICAgIG1heE5lc3Rpbmc6IDEwMFxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgY29yZToge30sXG4gICAgYmxvY2s6IHt9LFxuICAgIGlubGluZToge31cbiAgfVxufTtcbnZhciB6ZXJvID0ge1xuICBvcHRpb25zOiB7XG4gICAgaHRtbDogZmFsc2UsXG4gICAgeGh0bWxPdXQ6IGZhbHNlLFxuICAgIGJyZWFrczogZmFsc2UsXG4gICAgbGFuZ1ByZWZpeDogXCJsYW5ndWFnZS1cIixcbiAgICBsaW5raWZ5OiBmYWxzZSxcbiAgICB0eXBvZ3JhcGhlcjogZmFsc2UsXG4gICAgcXVvdGVzOiBcIlxcdTIwMUNcXHUyMDFEXFx1MjAxOFxcdTIwMTlcIixcbiAgICBoaWdobGlnaHQ6IG51bGwsXG4gICAgbWF4TmVzdGluZzogMjBcbiAgfSxcbiAgY29tcG9uZW50czoge1xuICAgIGNvcmU6IHtcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIFwibm9ybWFsaXplXCIsXG4gICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgXCJpbmxpbmVcIlxuICAgICAgXVxuICAgIH0sXG4gICAgYmxvY2s6IHtcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIFwicGFyYWdyYXBoXCJcbiAgICAgIF1cbiAgICB9LFxuICAgIGlubGluZToge1xuICAgICAgcnVsZXM6IFtcbiAgICAgICAgXCJ0ZXh0XCJcbiAgICAgIF0sXG4gICAgICBydWxlczI6IFtcbiAgICAgICAgXCJiYWxhbmNlX3BhaXJzXCIsXG4gICAgICAgIFwidGV4dF9jb2xsYXBzZVwiXG4gICAgICBdXG4gICAgfVxuICB9XG59O1xudmFyIGNvbW1vbm1hcmsgPSB7XG4gIG9wdGlvbnM6IHtcbiAgICBodG1sOiB0cnVlLFxuICAgIHhodG1sT3V0OiB0cnVlLFxuICAgIGJyZWFrczogZmFsc2UsXG4gICAgbGFuZ1ByZWZpeDogXCJsYW5ndWFnZS1cIixcbiAgICBsaW5raWZ5OiBmYWxzZSxcbiAgICB0eXBvZ3JhcGhlcjogZmFsc2UsXG4gICAgcXVvdGVzOiBcIlxcdTIwMUNcXHUyMDFEXFx1MjAxOFxcdTIwMTlcIixcbiAgICBoaWdobGlnaHQ6IG51bGwsXG4gICAgbWF4TmVzdGluZzogMjBcbiAgfSxcbiAgY29tcG9uZW50czoge1xuICAgIGNvcmU6IHtcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIFwibm9ybWFsaXplXCIsXG4gICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgXCJpbmxpbmVcIlxuICAgICAgXVxuICAgIH0sXG4gICAgYmxvY2s6IHtcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIFwiYmxvY2txdW90ZVwiLFxuICAgICAgICBcImNvZGVcIixcbiAgICAgICAgXCJmZW5jZVwiLFxuICAgICAgICBcImhlYWRpbmdcIixcbiAgICAgICAgXCJoclwiLFxuICAgICAgICBcImh0bWxfYmxvY2tcIixcbiAgICAgICAgXCJsaGVhZGluZ1wiLFxuICAgICAgICBcImxpc3RcIixcbiAgICAgICAgXCJyZWZlcmVuY2VcIixcbiAgICAgICAgXCJwYXJhZ3JhcGhcIlxuICAgICAgXVxuICAgIH0sXG4gICAgaW5saW5lOiB7XG4gICAgICBydWxlczogW1xuICAgICAgICBcImF1dG9saW5rXCIsXG4gICAgICAgIFwiYmFja3RpY2tzXCIsXG4gICAgICAgIFwiZW1waGFzaXNcIixcbiAgICAgICAgXCJlbnRpdHlcIixcbiAgICAgICAgXCJlc2NhcGVcIixcbiAgICAgICAgXCJodG1sX2lubGluZVwiLFxuICAgICAgICBcImltYWdlXCIsXG4gICAgICAgIFwibGlua1wiLFxuICAgICAgICBcIm5ld2xpbmVcIixcbiAgICAgICAgXCJ0ZXh0XCJcbiAgICAgIF0sXG4gICAgICBydWxlczI6IFtcbiAgICAgICAgXCJiYWxhbmNlX3BhaXJzXCIsXG4gICAgICAgIFwiZW1waGFzaXNcIixcbiAgICAgICAgXCJ0ZXh0X2NvbGxhcHNlXCJcbiAgICAgIF1cbiAgICB9XG4gIH1cbn07XG52YXIgdXRpbHMgPSB1dGlscyQxO1xudmFyIGhlbHBlcnMgPSBoZWxwZXJzJDE7XG52YXIgUmVuZGVyZXIgPSByZW5kZXJlcjtcbnZhciBQYXJzZXJDb3JlID0gcGFyc2VyX2NvcmU7XG52YXIgUGFyc2VyQmxvY2sgPSBwYXJzZXJfYmxvY2s7XG52YXIgUGFyc2VySW5saW5lID0gcGFyc2VyX2lubGluZTtcbnZhciBMaW5raWZ5SXQgPSBsaW5raWZ5SXQ7XG52YXIgbWR1cmwgPSBtZHVybCQxO1xudmFyIHB1bnljb2RlID0gcmVxdWlyZSQkODtcbnZhciBjb25maWcgPSB7XG4gIGRlZmF1bHQ6IF9kZWZhdWx0LFxuICB6ZXJvLFxuICBjb21tb25tYXJrXG59O1xudmFyIEJBRF9QUk9UT19SRSA9IC9eKHZic2NyaXB0fGphdmFzY3JpcHR8ZmlsZXxkYXRhKTovO1xudmFyIEdPT0RfREFUQV9SRSA9IC9eZGF0YTppbWFnZVxcLyhnaWZ8cG5nfGpwZWd8d2VicCk7LztcbmZ1bmN0aW9uIHZhbGlkYXRlTGluayh1cmwpIHtcbiAgdmFyIHN0ciA9IHVybC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIEJBRF9QUk9UT19SRS50ZXN0KHN0cikgPyBHT09EX0RBVEFfUkUudGVzdChzdHIpID8gdHJ1ZSA6IGZhbHNlIDogdHJ1ZTtcbn1cbl9fbmFtZSh2YWxpZGF0ZUxpbmssIFwidmFsaWRhdGVMaW5rXCIpO1xudmFyIFJFQ09ERV9IT1NUTkFNRV9GT1IgPSBbXCJodHRwOlwiLCBcImh0dHBzOlwiLCBcIm1haWx0bzpcIl07XG5mdW5jdGlvbiBub3JtYWxpemVMaW5rKHVybCkge1xuICB2YXIgcGFyc2VkID0gbWR1cmwucGFyc2UodXJsLCB0cnVlKTtcbiAgaWYgKHBhcnNlZC5ob3N0bmFtZSkge1xuICAgIGlmICghcGFyc2VkLnByb3RvY29sIHx8IFJFQ09ERV9IT1NUTkFNRV9GT1IuaW5kZXhPZihwYXJzZWQucHJvdG9jb2wpID49IDApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZC5ob3N0bmFtZSA9IHB1bnljb2RlLnRvQVNDSUkocGFyc2VkLmhvc3RuYW1lKTtcbiAgICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBtZHVybC5lbmNvZGUobWR1cmwuZm9ybWF0KHBhcnNlZCkpO1xufVxuX19uYW1lKG5vcm1hbGl6ZUxpbmssIFwibm9ybWFsaXplTGlua1wiKTtcbmZ1bmN0aW9uIG5vcm1hbGl6ZUxpbmtUZXh0KHVybCkge1xuICB2YXIgcGFyc2VkID0gbWR1cmwucGFyc2UodXJsLCB0cnVlKTtcbiAgaWYgKHBhcnNlZC5ob3N0bmFtZSkge1xuICAgIGlmICghcGFyc2VkLnByb3RvY29sIHx8IFJFQ09ERV9IT1NUTkFNRV9GT1IuaW5kZXhPZihwYXJzZWQucHJvdG9jb2wpID49IDApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZC5ob3N0bmFtZSA9IHB1bnljb2RlLnRvVW5pY29kZShwYXJzZWQuaG9zdG5hbWUpO1xuICAgICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1kdXJsLmRlY29kZShtZHVybC5mb3JtYXQocGFyc2VkKSwgbWR1cmwuZGVjb2RlLmRlZmF1bHRDaGFycyArIFwiJVwiKTtcbn1cbl9fbmFtZShub3JtYWxpemVMaW5rVGV4dCwgXCJub3JtYWxpemVMaW5rVGV4dFwiKTtcbmZ1bmN0aW9uIE1hcmtkb3duSXQocHJlc2V0TmFtZSwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTWFya2Rvd25JdCkpIHtcbiAgICByZXR1cm4gbmV3IE1hcmtkb3duSXQocHJlc2V0TmFtZSwgb3B0aW9ucyk7XG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgaWYgKCF1dGlscy5pc1N0cmluZyhwcmVzZXROYW1lKSkge1xuICAgICAgb3B0aW9ucyA9IHByZXNldE5hbWUgfHwge307XG4gICAgICBwcmVzZXROYW1lID0gXCJkZWZhdWx0XCI7XG4gICAgfVxuICB9XG4gIHRoaXMuaW5saW5lID0gbmV3IFBhcnNlcklubGluZSgpO1xuICB0aGlzLmJsb2NrID0gbmV3IFBhcnNlckJsb2NrKCk7XG4gIHRoaXMuY29yZSA9IG5ldyBQYXJzZXJDb3JlKCk7XG4gIHRoaXMucmVuZGVyZXIgPSBuZXcgUmVuZGVyZXIoKTtcbiAgdGhpcy5saW5raWZ5ID0gbmV3IExpbmtpZnlJdCgpO1xuICB0aGlzLnZhbGlkYXRlTGluayA9IHZhbGlkYXRlTGluaztcbiAgdGhpcy5ub3JtYWxpemVMaW5rID0gbm9ybWFsaXplTGluaztcbiAgdGhpcy5ub3JtYWxpemVMaW5rVGV4dCA9IG5vcm1hbGl6ZUxpbmtUZXh0O1xuICB0aGlzLnV0aWxzID0gdXRpbHM7XG4gIHRoaXMuaGVscGVycyA9IHV0aWxzLmFzc2lnbih7fSwgaGVscGVycyk7XG4gIHRoaXMub3B0aW9ucyA9IHt9O1xuICB0aGlzLmNvbmZpZ3VyZShwcmVzZXROYW1lKTtcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICB0aGlzLnNldChvcHRpb25zKTtcbiAgfVxufVxuX19uYW1lKE1hcmtkb3duSXQsIFwiTWFya2Rvd25JdFwiKTtcbk1hcmtkb3duSXQucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgdXRpbHMuYXNzaWduKHRoaXMub3B0aW9ucywgb3B0aW9ucyk7XG4gIHJldHVybiB0aGlzO1xufTtcbk1hcmtkb3duSXQucHJvdG90eXBlLmNvbmZpZ3VyZSA9IGZ1bmN0aW9uKHByZXNldHMpIHtcbiAgdmFyIHNlbGYyID0gdGhpcywgcHJlc2V0TmFtZTtcbiAgaWYgKHV0aWxzLmlzU3RyaW5nKHByZXNldHMpKSB7XG4gICAgcHJlc2V0TmFtZSA9IHByZXNldHM7XG4gICAgcHJlc2V0cyA9IGNvbmZpZ1twcmVzZXROYW1lXTtcbiAgICBpZiAoIXByZXNldHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignV3JvbmcgYG1hcmtkb3duLWl0YCBwcmVzZXQgXCInICsgcHJlc2V0TmFtZSArICdcIiwgY2hlY2sgbmFtZScpO1xuICAgIH1cbiAgfVxuICBpZiAoIXByZXNldHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJXcm9uZyBgbWFya2Rvd24taXRgIHByZXNldCwgY2FuJ3QgYmUgZW1wdHlcIik7XG4gIH1cbiAgaWYgKHByZXNldHMub3B0aW9ucykge1xuICAgIHNlbGYyLnNldChwcmVzZXRzLm9wdGlvbnMpO1xuICB9XG4gIGlmIChwcmVzZXRzLmNvbXBvbmVudHMpIHtcbiAgICBPYmplY3Qua2V5cyhwcmVzZXRzLmNvbXBvbmVudHMpLmZvckVhY2goZnVuY3Rpb24obmFtZTIpIHtcbiAgICAgIGlmIChwcmVzZXRzLmNvbXBvbmVudHNbbmFtZTJdLnJ1bGVzKSB7XG4gICAgICAgIHNlbGYyW25hbWUyXS5ydWxlci5lbmFibGVPbmx5KHByZXNldHMuY29tcG9uZW50c1tuYW1lMl0ucnVsZXMpO1xuICAgICAgfVxuICAgICAgaWYgKHByZXNldHMuY29tcG9uZW50c1tuYW1lMl0ucnVsZXMyKSB7XG4gICAgICAgIHNlbGYyW25hbWUyXS5ydWxlcjIuZW5hYmxlT25seShwcmVzZXRzLmNvbXBvbmVudHNbbmFtZTJdLnJ1bGVzMik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuTWFya2Rvd25JdC5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24obGlzdDMsIGlnbm9yZUludmFsaWQpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdDMpKSB7XG4gICAgbGlzdDMgPSBbbGlzdDNdO1xuICB9XG4gIFtcImNvcmVcIiwgXCJibG9ja1wiLCBcImlubGluZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGNoYWluKSB7XG4gICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh0aGlzW2NoYWluXS5ydWxlci5lbmFibGUobGlzdDMsIHRydWUpKTtcbiAgfSwgdGhpcyk7XG4gIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGhpcy5pbmxpbmUucnVsZXIyLmVuYWJsZShsaXN0MywgdHJ1ZSkpO1xuICB2YXIgbWlzc2VkID0gbGlzdDMuZmlsdGVyKGZ1bmN0aW9uKG5hbWUyKSB7XG4gICAgcmV0dXJuIHJlc3VsdC5pbmRleE9mKG5hbWUyKSA8IDA7XG4gIH0pO1xuICBpZiAobWlzc2VkLmxlbmd0aCAmJiAhaWdub3JlSW52YWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk1hcmtkb3duSXQuIEZhaWxlZCB0byBlbmFibGUgdW5rbm93biBydWxlKHMpOiBcIiArIG1pc3NlZCk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuTWFya2Rvd25JdC5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uKGxpc3QzLCBpZ25vcmVJbnZhbGlkKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3QzKSkge1xuICAgIGxpc3QzID0gW2xpc3QzXTtcbiAgfVxuICBbXCJjb3JlXCIsIFwiYmxvY2tcIiwgXCJpbmxpbmVcIl0uZm9yRWFjaChmdW5jdGlvbihjaGFpbikge1xuICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGhpc1tjaGFpbl0ucnVsZXIuZGlzYWJsZShsaXN0MywgdHJ1ZSkpO1xuICB9LCB0aGlzKTtcbiAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh0aGlzLmlubGluZS5ydWxlcjIuZGlzYWJsZShsaXN0MywgdHJ1ZSkpO1xuICB2YXIgbWlzc2VkID0gbGlzdDMuZmlsdGVyKGZ1bmN0aW9uKG5hbWUyKSB7XG4gICAgcmV0dXJuIHJlc3VsdC5pbmRleE9mKG5hbWUyKSA8IDA7XG4gIH0pO1xuICBpZiAobWlzc2VkLmxlbmd0aCAmJiAhaWdub3JlSW52YWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk1hcmtkb3duSXQuIEZhaWxlZCB0byBkaXNhYmxlIHVua25vd24gcnVsZShzKTogXCIgKyBtaXNzZWQpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcbk1hcmtkb3duSXQucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uKHBsdWdpbikge1xuICB2YXIgYXJncyA9IFt0aGlzXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7XG4gIHBsdWdpbi5hcHBseShwbHVnaW4sIGFyZ3MpO1xuICByZXR1cm4gdGhpcztcbn07XG5NYXJrZG93bkl0LnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKHNyYywgZW52KSB7XG4gIGlmICh0eXBlb2Ygc3JjICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgZGF0YSBzaG91bGQgYmUgYSBTdHJpbmdcIik7XG4gIH1cbiAgdmFyIHN0YXRlID0gbmV3IHRoaXMuY29yZS5TdGF0ZShzcmMsIHRoaXMsIGVudik7XG4gIHRoaXMuY29yZS5wcm9jZXNzKHN0YXRlKTtcbiAgcmV0dXJuIHN0YXRlLnRva2Vucztcbn07XG5NYXJrZG93bkl0LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbihzcmMsIGVudikge1xuICBlbnYgPSBlbnYgfHwge307XG4gIHJldHVybiB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnBhcnNlKHNyYywgZW52KSwgdGhpcy5vcHRpb25zLCBlbnYpO1xufTtcbk1hcmtkb3duSXQucHJvdG90eXBlLnBhcnNlSW5saW5lID0gZnVuY3Rpb24oc3JjLCBlbnYpIHtcbiAgdmFyIHN0YXRlID0gbmV3IHRoaXMuY29yZS5TdGF0ZShzcmMsIHRoaXMsIGVudik7XG4gIHN0YXRlLmlubGluZU1vZGUgPSB0cnVlO1xuICB0aGlzLmNvcmUucHJvY2VzcyhzdGF0ZSk7XG4gIHJldHVybiBzdGF0ZS50b2tlbnM7XG59O1xuTWFya2Rvd25JdC5wcm90b3R5cGUucmVuZGVySW5saW5lID0gZnVuY3Rpb24oc3JjLCBlbnYpIHtcbiAgZW52ID0gZW52IHx8IHt9O1xuICByZXR1cm4gdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5wYXJzZUlubGluZShzcmMsIGVudiksIHRoaXMub3B0aW9ucywgZW52KTtcbn07XG52YXIgbGliID0gTWFya2Rvd25JdDtcbnZhciBtYXJrZG93bkl0ID0gbGliO1xuY29uc3QgbWFya2Rvd24gPSBuZXcgbWFya2Rvd25JdCgpO1xudmFyIF9fZGVmUHJvcCRqID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSRqID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgodGFyZ2V0MiwgdmFsdWUpID0+IF9fZGVmUHJvcCRqKHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSksIFwiX19uYW1lJGpcIik7XG5jb25zdCBERUZBVUxUX0VESVRPUl9USEVNRSA9IFwiZ3JhcGhpcWxcIjtcbmNvbnN0IERFRkFVTFRfS0VZX01BUCA9IFwic3VibGltZVwiO1xubGV0IGlzTWFjT3MgPSBmYWxzZTtcbmlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSB7XG4gIGlzTWFjT3MgPSB3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcIm1hY1wiKSA9PT0gMDtcbn1cbmNvbnN0IGNvbW1vbktleXMgPSB7XG4gIFtpc01hY09zID8gXCJDbWQtRlwiIDogXCJDdHJsLUZcIl06IFwiZmluZFBlcnNpc3RlbnRcIixcbiAgXCJDbWQtR1wiOiBcImZpbmRQZXJzaXN0ZW50XCIsXG4gIFwiQ3RybC1HXCI6IFwiZmluZFBlcnNpc3RlbnRcIixcbiAgXCJDdHJsLUxlZnRcIjogXCJnb1N1YndvcmRMZWZ0XCIsXG4gIFwiQ3RybC1SaWdodFwiOiBcImdvU3Vid29yZFJpZ2h0XCIsXG4gIFwiQWx0LUxlZnRcIjogXCJnb0dyb3VwTGVmdFwiLFxuICBcIkFsdC1SaWdodFwiOiBcImdvR3JvdXBSaWdodFwiXG59O1xuYXN5bmMgZnVuY3Rpb24gaW1wb3J0Q29kZU1pcnJvcihhZGRvbnMsIG9wdGlvbnMpIHtcbiAgY29uc3QgQ29kZU1pcnJvciA9IGF3YWl0IGltcG9ydChcIi4vY29kZW1pcnJvci5lcy5qc1wiKS50aGVuKGZ1bmN0aW9uKG4yKSB7XG4gICAgcmV0dXJuIG4yLmM7XG4gIH0pLnRoZW4oKGMpID0+IHR5cGVvZiBjID09PSBcImZ1bmN0aW9uXCIgPyBjIDogYy5kZWZhdWx0KTtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMudXNlQ29tbW9uQWRkb25zKSA9PT0gZmFsc2UgPyBhZGRvbnMgOiBbXG4gICAgaW1wb3J0KFwiLi9zaG93LWhpbnQuZXMuanNcIikudGhlbihmdW5jdGlvbihuMikge1xuICAgICAgcmV0dXJuIG4yLnM7XG4gICAgfSksXG4gICAgaW1wb3J0KFwiLi9tYXRjaGJyYWNrZXRzLmVzLmpzXCIpLnRoZW4oZnVuY3Rpb24objIpIHtcbiAgICAgIHJldHVybiBuMi5tO1xuICAgIH0pLFxuICAgIGltcG9ydChcIi4vY2xvc2VicmFja2V0cy5lcy5qc1wiKS50aGVuKGZ1bmN0aW9uKG4yKSB7XG4gICAgICByZXR1cm4gbjIuYztcbiAgICB9KSxcbiAgICBpbXBvcnQoXCIuL2JyYWNlLWZvbGQuZXMuanNcIikudGhlbihmdW5jdGlvbihuMikge1xuICAgICAgcmV0dXJuIG4yLmI7XG4gICAgfSksXG4gICAgaW1wb3J0KFwiLi9mb2xkZ3V0dGVyLmVzLmpzXCIpLnRoZW4oZnVuY3Rpb24objIpIHtcbiAgICAgIHJldHVybiBuMi5mO1xuICAgIH0pLFxuICAgIGltcG9ydChcIi4vbGludC5lczMuanNcIikudGhlbihmdW5jdGlvbihuMikge1xuICAgICAgcmV0dXJuIG4yLmw7XG4gICAgfSksXG4gICAgaW1wb3J0KFwiLi9zZWFyY2hjdXJzb3IuZXMuanNcIikudGhlbihmdW5jdGlvbihuMikge1xuICAgICAgcmV0dXJuIG4yLnM7XG4gICAgfSksXG4gICAgaW1wb3J0KFwiLi9qdW1wLXRvLWxpbmUuZXMuanNcIikudGhlbihmdW5jdGlvbihuMikge1xuICAgICAgcmV0dXJuIG4yLmo7XG4gICAgfSksXG4gICAgaW1wb3J0KFwiLi9kaWFsb2cuZXMuanNcIikudGhlbihmdW5jdGlvbihuMikge1xuICAgICAgcmV0dXJuIG4yLmQ7XG4gICAgfSksXG4gICAgaW1wb3J0KFwiLi9zdWJsaW1lLmVzLmpzXCIpLnRoZW4oZnVuY3Rpb24objIpIHtcbiAgICAgIHJldHVybiBuMi5zO1xuICAgIH0pLFxuICAgIC4uLmFkZG9uc1xuICBdKTtcbiAgcmV0dXJuIENvZGVNaXJyb3I7XG59XG5fX25hbWUoaW1wb3J0Q29kZU1pcnJvciwgXCJpbXBvcnRDb2RlTWlycm9yXCIpO1xuX19uYW1lJGooaW1wb3J0Q29kZU1pcnJvciwgXCJpbXBvcnRDb2RlTWlycm9yXCIpO1xudmFyIF9fZGVmUHJvcCRpID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSRpID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgodGFyZ2V0MiwgdmFsdWUpID0+IF9fZGVmUHJvcCRpKHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSksIFwiX19uYW1lJGlcIik7XG5mdW5jdGlvbiBvbkhhc0NvbXBsZXRpb24oX2NtLCBkYXRhLCBzY2hlbWEsIGV4cGxvcmVyKSB7XG4gIGltcG9ydENvZGVNaXJyb3IoW10sIHsgdXNlQ29tbW9uQWRkb25zOiBmYWxzZSB9KS50aGVuKChDb2RlTWlycm9yKSA9PiB7XG4gICAgbGV0IGluZm9ybWF0aW9uO1xuICAgIGxldCBkZXByZWNhdGlvbjtcbiAgICBDb2RlTWlycm9yLm9uKGRhdGEsIFwic2VsZWN0XCIsIChjdHgsIGVsMikgPT4ge1xuICAgICAgaWYgKCFpbmZvcm1hdGlvbikge1xuICAgICAgICBjb25zdCBoaW50c1VsID0gZWwyLnBhcmVudE5vZGU7XG4gICAgICAgIGluZm9ybWF0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgaW5mb3JtYXRpb24uY2xhc3NOYW1lID0gXCJDb2RlTWlycm9yLWhpbnQtaW5mb3JtYXRpb25cIjtcbiAgICAgICAgaW5mb3JtYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIG9uQ2xpY2tIaW50SW5mb3JtYXRpb24pO1xuICAgICAgICBoaW50c1VsLmFwcGVuZENoaWxkKGluZm9ybWF0aW9uKTtcbiAgICAgICAgZGVwcmVjYXRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBkZXByZWNhdGlvbi5jbGFzc05hbWUgPSBcIkNvZGVNaXJyb3ItaGludC1kZXByZWNhdGlvblwiO1xuICAgICAgICBoaW50c1VsLmFwcGVuZENoaWxkKGRlcHJlY2F0aW9uKTtcbiAgICAgICAgbGV0IG9uUmVtb3ZlRm47XG4gICAgICAgIGhpbnRzVWwuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTU5vZGVSZW1vdmVkXCIsIG9uUmVtb3ZlRm4gPSAvKiBAX19QVVJFX18gKi8gX19uYW1lJGkoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gaGludHNVbCkge1xuICAgICAgICAgICAgaGludHNVbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiRE9NTm9kZVJlbW92ZWRcIiwgb25SZW1vdmVGbik7XG4gICAgICAgICAgICBpZiAoaW5mb3JtYXRpb24pIHtcbiAgICAgICAgICAgICAgaW5mb3JtYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIG9uQ2xpY2tIaW50SW5mb3JtYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5mb3JtYXRpb24gPSBudWxsO1xuICAgICAgICAgICAgZGVwcmVjYXRpb24gPSBudWxsO1xuICAgICAgICAgICAgb25SZW1vdmVGbiA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBcIm9uUmVtb3ZlRm5cIikpO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBjdHguZGVzY3JpcHRpb24gPyBtYXJrZG93bi5yZW5kZXIoY3R4LmRlc2NyaXB0aW9uKSA6IFwiU2VsZiBkZXNjcmlwdGl2ZS5cIjtcbiAgICAgIGNvbnN0IHR5cGUyID0gY3R4LnR5cGUgPyAnPHNwYW4gY2xhc3M9XCJpbmZvVHlwZVwiPicgKyByZW5kZXJUeXBlKGN0eC50eXBlKSArIFwiPC9zcGFuPlwiIDogXCJcIjtcbiAgICAgIGluZm9ybWF0aW9uLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwiY29udGVudFwiPicgKyAoZGVzY3JpcHRpb24uc2xpY2UoMCwgMykgPT09IFwiPHA+XCIgPyBcIjxwPlwiICsgdHlwZTIgKyBkZXNjcmlwdGlvbi5zbGljZSgzKSA6IHR5cGUyICsgZGVzY3JpcHRpb24pICsgXCI8L2Rpdj5cIjtcbiAgICAgIGlmIChjdHggJiYgZGVwcmVjYXRpb24gJiYgY3R4LmRlcHJlY2F0aW9uUmVhc29uKSB7XG4gICAgICAgIGNvbnN0IHJlYXNvbiA9IGN0eC5kZXByZWNhdGlvblJlYXNvbiA/IG1hcmtkb3duLnJlbmRlcihjdHguZGVwcmVjYXRpb25SZWFzb24pIDogXCJcIjtcbiAgICAgICAgZGVwcmVjYXRpb24uaW5uZXJIVE1MID0gJzxzcGFuIGNsYXNzPVwiZGVwcmVjYXRpb24tbGFiZWxcIj5EZXByZWNhdGVkPC9zcGFuPicgKyByZWFzb247XG4gICAgICAgIGRlcHJlY2F0aW9uLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICB9IGVsc2UgaWYgKGRlcHJlY2F0aW9uKSB7XG4gICAgICAgIGRlcHJlY2F0aW9uLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIGZ1bmN0aW9uIG9uQ2xpY2tIaW50SW5mb3JtYXRpb24oZXZlbnQpIHtcbiAgICBpZiAoIXNjaGVtYSB8fCAhZXhwbG9yZXIgfHwgIShldmVudC5jdXJyZW50VGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHx8IGV2ZW50LmN1cnJlbnRUYXJnZXQuY2xhc3NOYW1lICE9PSBcInR5cGVOYW1lXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdHlwZU5hbWUgPSBldmVudC5jdXJyZW50VGFyZ2V0LmlubmVySFRNTDtcbiAgICBjb25zdCB0eXBlMiA9IHNjaGVtYS5nZXRUeXBlKHR5cGVOYW1lKTtcbiAgICBpZiAodHlwZTIpIHtcbiAgICAgIGV4cGxvcmVyLnNob3coKTtcbiAgICAgIGV4cGxvcmVyLnB1c2goeyBuYW1lOiB0eXBlMi5uYW1lLCBkZWY6IHR5cGUyIH0pO1xuICAgIH1cbiAgfVxuICBfX25hbWUob25DbGlja0hpbnRJbmZvcm1hdGlvbiwgXCJvbkNsaWNrSGludEluZm9ybWF0aW9uXCIpO1xuICBfX25hbWUkaShvbkNsaWNrSGludEluZm9ybWF0aW9uLCBcIm9uQ2xpY2tIaW50SW5mb3JtYXRpb25cIik7XG59XG5fX25hbWUob25IYXNDb21wbGV0aW9uLCBcIm9uSGFzQ29tcGxldGlvblwiKTtcbl9fbmFtZSRpKG9uSGFzQ29tcGxldGlvbiwgXCJvbkhhc0NvbXBsZXRpb25cIik7XG5mdW5jdGlvbiByZW5kZXJUeXBlKHR5cGUyKSB7XG4gIGlmIChpc05vbk51bGxUeXBlKHR5cGUyKSkge1xuICAgIHJldHVybiBgJHtyZW5kZXJUeXBlKHR5cGUyLm9mVHlwZSl9IWA7XG4gIH1cbiAgaWYgKGlzTGlzdFR5cGUodHlwZTIpKSB7XG4gICAgcmV0dXJuIGBbJHtyZW5kZXJUeXBlKHR5cGUyLm9mVHlwZSl9XWA7XG4gIH1cbiAgcmV0dXJuIGA8YSBjbGFzcz1cInR5cGVOYW1lXCI+JHtlc2NhcGVIdG1sXzEodHlwZTIubmFtZSl9PC9hPmA7XG59XG5fX25hbWUocmVuZGVyVHlwZSwgXCJyZW5kZXJUeXBlXCIpO1xuX19uYW1lJGkocmVuZGVyVHlwZSwgXCJyZW5kZXJUeXBlXCIpO1xudmFyIGpzeFJ1bnRpbWUgPSB7IGV4cG9ydHM6IHt9IH07XG52YXIgcmVhY3RKc3hSdW50aW1lX3Byb2R1Y3Rpb25fbWluID0ge307XG4vKlxub2JqZWN0LWFzc2lnblxuKGMpIFNpbmRyZSBTb3JodXNcbkBsaWNlbnNlIE1JVFxuKi9cbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkXCIpO1xuICB9XG4gIHJldHVybiBPYmplY3QodmFsKTtcbn1cbl9fbmFtZSh0b09iamVjdCwgXCJ0b09iamVjdFwiKTtcbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcbiAgdHJ5IHtcbiAgICBpZiAoIU9iamVjdC5hc3NpZ24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIHRlc3QxID0gbmV3IFN0cmluZyhcImFiY1wiKTtcbiAgICB0ZXN0MVs1XSA9IFwiZGVcIjtcbiAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSBcIjVcIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgdGVzdDIgPSB7fTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcbiAgICAgIHRlc3QyW1wiX1wiICsgU3RyaW5nLmZyb21DaGFyQ29kZShpKV0gPSBpO1xuICAgIH1cbiAgICB2YXIgb3JkZXIyID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDIpLm1hcChmdW5jdGlvbihuMikge1xuICAgICAgcmV0dXJuIHRlc3QyW24yXTtcbiAgICB9KTtcbiAgICBpZiAob3JkZXIyLmpvaW4oXCJcIikgIT09IFwiMDEyMzQ1Njc4OVwiKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciB0ZXN0MyA9IHt9O1xuICAgIFwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIi5zcGxpdChcIlwiKS5mb3JFYWNoKGZ1bmN0aW9uKGxldHRlcikge1xuICAgICAgdGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcbiAgICB9KTtcbiAgICBpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKFwiXCIpICE9PSBcImFiY2RlZmdoaWprbG1ub3BxcnN0XCIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuX19uYW1lKHNob3VsZFVzZU5hdGl2ZSwgXCJzaG91bGRVc2VOYXRpdmVcIik7XG5zaG91bGRVc2VOYXRpdmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbih0YXJnZXQyLCBzb3VyY2UpIHtcbiAgdmFyIGZyb207XG4gIHZhciB0byA9IHRvT2JqZWN0KHRhcmdldDIpO1xuICB2YXIgc3ltYm9scztcbiAgZm9yICh2YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcbiAgICBmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG4gICAgZm9yICh2YXIga2V5IGluIGZyb20pIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkpIHtcbiAgICAgICAgdG9ba2V5XSA9IGZyb21ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgICAgc3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9scyhmcm9tKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG4gICAgICAgICAgdG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0bztcbn07XG4vKiogQGxpY2Vuc2UgUmVhY3QgdjE3LjAuMlxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xudmFyIGYgPSByZXF1aXJlJCQwJDEsIGcgPSA2MDEwMztcbnJlYWN0SnN4UnVudGltZV9wcm9kdWN0aW9uX21pbi5GcmFnbWVudCA9IDYwMTA3O1xuaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuZm9yKSB7XG4gIHZhciBoID0gU3ltYm9sLmZvcjtcbiAgZyA9IGgoXCJyZWFjdC5lbGVtZW50XCIpO1xuICByZWFjdEpzeFJ1bnRpbWVfcHJvZHVjdGlvbl9taW4uRnJhZ21lbnQgPSBoKFwicmVhY3QuZnJhZ21lbnRcIik7XG59XG52YXIgbSA9IGYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIsIG4gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LCBwJDEgPSB7IGtleTogdHJ1ZSwgcmVmOiB0cnVlLCBfX3NlbGY6IHRydWUsIF9fc291cmNlOiB0cnVlIH07XG5mdW5jdGlvbiBxKGMsIGEsIGspIHtcbiAgdmFyIGIsIGQgPSB7fSwgZSA9IG51bGwsIGwgPSBudWxsO1xuICBrICE9PSB2b2lkIDAgJiYgKGUgPSBcIlwiICsgayk7XG4gIGEua2V5ICE9PSB2b2lkIDAgJiYgKGUgPSBcIlwiICsgYS5rZXkpO1xuICBhLnJlZiAhPT0gdm9pZCAwICYmIChsID0gYS5yZWYpO1xuICBmb3IgKGIgaW4gYSlcbiAgICBuLmNhbGwoYSwgYikgJiYgIXAkMS5oYXNPd25Qcm9wZXJ0eShiKSAmJiAoZFtiXSA9IGFbYl0pO1xuICBpZiAoYyAmJiBjLmRlZmF1bHRQcm9wcylcbiAgICBmb3IgKGIgaW4gYSA9IGMuZGVmYXVsdFByb3BzLCBhKVxuICAgICAgZFtiXSA9PT0gdm9pZCAwICYmIChkW2JdID0gYVtiXSk7XG4gIHJldHVybiB7ICQkdHlwZW9mOiBnLCB0eXBlOiBjLCBrZXk6IGUsIHJlZjogbCwgcHJvcHM6IGQsIF9vd25lcjogbS5jdXJyZW50IH07XG59XG5fX25hbWUocSwgXCJxXCIpO1xucmVhY3RKc3hSdW50aW1lX3Byb2R1Y3Rpb25fbWluLmpzeCA9IHE7XG5yZWFjdEpzeFJ1bnRpbWVfcHJvZHVjdGlvbl9taW4uanN4cyA9IHE7XG57XG4gIGpzeFJ1bnRpbWUuZXhwb3J0cyA9IHJlYWN0SnN4UnVudGltZV9wcm9kdWN0aW9uX21pbjtcbn1cbmNvbnN0IGpzeCA9IGpzeFJ1bnRpbWUuZXhwb3J0cy5qc3g7XG5jb25zdCBqc3hzID0ganN4UnVudGltZS5leHBvcnRzLmpzeHM7XG52YXIgX19kZWZQcm9wJGggPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lJGggPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKCh0YXJnZXQyLCB2YWx1ZSkgPT4gX19kZWZQcm9wJGgodGFyZ2V0MiwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KSwgXCJfX25hbWUkaFwiKTtcbmZ1bmN0aW9uIEltYWdlUHJldmlldyhwcm9wcykge1xuICB2YXIgX2E7XG4gIGNvbnN0IFtkaW1lbnNpb25zLCBzZXREaW1lbnNpb25zXSA9IHVzZVN0YXRlKHtcbiAgICB3aWR0aDogbnVsbCxcbiAgICBoZWlnaHQ6IG51bGxcbiAgfSk7XG4gIGNvbnN0IFttaW1lLCBzZXRNaW1lXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHNyYyA9IChfYSA9IHRva2VuVG9VUkwocHJvcHMudG9rZW4pKSA9PSBudWxsID8gdm9pZCAwIDogX2EuaHJlZjtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghc3JjKSB7XG4gICAgICBzZXREaW1lbnNpb25zKHtcbiAgICAgICAgd2lkdGg6IG51bGwsXG4gICAgICAgIGhlaWdodDogbnVsbFxuICAgICAgfSk7XG4gICAgICBzZXRNaW1lKG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmZXRjaChzcmMsIHtcbiAgICAgIG1ldGhvZDogXCJIRUFEXCJcbiAgICB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgc2V0TWltZShyZXNwb25zZS5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKSk7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgc2V0TWltZShudWxsKTtcbiAgICB9KTtcbiAgfSwgW3NyY10pO1xuICBjb25zdCBkaW1zID0gZGltZW5zaW9ucy53aWR0aCAhPT0gbnVsbCAmJiBkaW1lbnNpb25zLmhlaWdodCAhPT0gbnVsbCA/IC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHtcbiAgICBjaGlsZHJlbjogW2RpbWVuc2lvbnMud2lkdGgsIFwieFwiLCBkaW1lbnNpb25zLmhlaWdodCwgbWltZSAhPT0gbnVsbCA/IFwiIFwiICsgbWltZSA6IG51bGxdXG4gIH0pIDogbnVsbDtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3hzKFwiZGl2XCIsIHtcbiAgICBjaGlsZHJlbjogWy8qIEBfX1BVUkVfXyAqLyBqc3goXCJpbWdcIiwge1xuICAgICAgb25Mb2FkOiAoKSA9PiB7XG4gICAgICAgIHZhciBfYTIsIF9iLCBfYywgX2Q7XG4gICAgICAgIHNldERpbWVuc2lvbnMoe1xuICAgICAgICAgIHdpZHRoOiAoX2IgPSAoX2EyID0gcmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfYTIubmF0dXJhbFdpZHRoKSAhPSBudWxsID8gX2IgOiBudWxsLFxuICAgICAgICAgIGhlaWdodDogKF9kID0gKF9jID0gcmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfYy5uYXR1cmFsSGVpZ2h0KSAhPSBudWxsID8gX2QgOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHJlZixcbiAgICAgIHNyY1xuICAgIH0pLCBkaW1zXVxuICB9KTtcbn1cbl9fbmFtZShJbWFnZVByZXZpZXcsIFwiSW1hZ2VQcmV2aWV3XCIpO1xuX19uYW1lJGgoSW1hZ2VQcmV2aWV3LCBcIkltYWdlUHJldmlld1wiKTtcbkltYWdlUHJldmlldy5zaG91bGRSZW5kZXIgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lJGgoLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBzaG91bGRSZW5kZXIodG9rZW4yKSB7XG4gIGNvbnN0IHVybCA9IHRva2VuVG9VUkwodG9rZW4yKTtcbiAgcmV0dXJuIHVybCA/IGlzSW1hZ2VVUkwodXJsKSA6IGZhbHNlO1xufSwgXCJzaG91bGRSZW5kZXJcIiksIFwic2hvdWxkUmVuZGVyXCIpO1xuZnVuY3Rpb24gdG9rZW5Ub1VSTCh0b2tlbjIpIHtcbiAgaWYgKHRva2VuMi50eXBlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHZhbHVlID0gdG9rZW4yLnN0cmluZy5zbGljZSgxKS5zbGljZSgwLCAtMSkudHJpbSgpO1xuICB0cnkge1xuICAgIGNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uO1xuICAgIHJldHVybiBuZXcgVVJMKHZhbHVlLCBsb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiArIGxvY2F0aW9uLmhvc3QpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm47XG4gIH1cbn1cbl9fbmFtZSh0b2tlblRvVVJMLCBcInRva2VuVG9VUkxcIik7XG5fX25hbWUkaCh0b2tlblRvVVJMLCBcInRva2VuVG9VUkxcIik7XG5mdW5jdGlvbiBpc0ltYWdlVVJMKHVybCkge1xuICByZXR1cm4gLyhibXB8Z2lmfGpwZWd8anBnfHBuZ3xzdmcpJC8udGVzdCh1cmwucGF0aG5hbWUpO1xufVxuX19uYW1lKGlzSW1hZ2VVUkwsIFwiaXNJbWFnZVVSTFwiKTtcbl9fbmFtZSRoKGlzSW1hZ2VVUkwsIFwiaXNJbWFnZVVSTFwiKTtcbmZ1bmN0aW9uIGlzUHJvbWlzZSh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSBcImZ1bmN0aW9uXCI7XG59XG5fX25hbWUoaXNQcm9taXNlLCBcImlzUHJvbWlzZVwiKTtcbmZ1bmN0aW9uIG9ic2VydmFibGVUb1Byb21pc2Uob2JzZXJ2YWJsZSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG9ic2VydmFibGUuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh2KSA9PiB7XG4gICAgICAgIHJlc29sdmUodik7XG4gICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiByZWplY3QsXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKFwibm8gdmFsdWUgcmVzb2x2ZWRcIikpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cbl9fbmFtZShvYnNlcnZhYmxlVG9Qcm9taXNlLCBcIm9ic2VydmFibGVUb1Byb21pc2VcIik7XG5mdW5jdGlvbiBpc09ic2VydmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiBcInN1YnNjcmliZVwiIGluIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS5zdWJzY3JpYmUgPT09IFwiZnVuY3Rpb25cIjtcbn1cbl9fbmFtZShpc09ic2VydmFibGUsIFwiaXNPYnNlcnZhYmxlXCIpO1xuZnVuY3Rpb24gaXNBc3luY0l0ZXJhYmxlKGlucHV0KSB7XG4gIHJldHVybiB0eXBlb2YgaW5wdXQgPT09IFwib2JqZWN0XCIgJiYgaW5wdXQgIT09IG51bGwgJiYgKGlucHV0W1N5bWJvbC50b1N0cmluZ1RhZ10gPT09IFwiQXN5bmNHZW5lcmF0b3JcIiB8fCBTeW1ib2wuYXN5bmNJdGVyYXRvciBpbiBpbnB1dCk7XG59XG5fX25hbWUoaXNBc3luY0l0ZXJhYmxlLCBcImlzQXN5bmNJdGVyYWJsZVwiKTtcbmZ1bmN0aW9uIGFzeW5jSXRlcmFibGVUb1Byb21pc2UoaW5wdXQpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgaXRlcmF0b3JSZXR1cm4gPSAoX2EgPSAoXCJyZXR1cm5cIiBpbiBpbnB1dCA/IGlucHV0IDogaW5wdXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkpLnJldHVybikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmJpbmQoaW5wdXQpO1xuICAgIGNvbnN0IGl0ZXJhdG9yTmV4dCA9IChcIm5leHRcIiBpbiBpbnB1dCA/IGlucHV0IDogaW5wdXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkpLm5leHQuYmluZChpbnB1dCk7XG4gICAgaXRlcmF0b3JOZXh0KCkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICByZXNvbHZlKHJlc3VsdC52YWx1ZSk7XG4gICAgICBpdGVyYXRvclJldHVybiA9PT0gbnVsbCB8fCBpdGVyYXRvclJldHVybiA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlcmF0b3JSZXR1cm4oKTtcbiAgICB9KS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICByZWplY3QoZXJyKTtcbiAgICB9KTtcbiAgfSk7XG59XG5fX25hbWUoYXN5bmNJdGVyYWJsZVRvUHJvbWlzZSwgXCJhc3luY0l0ZXJhYmxlVG9Qcm9taXNlXCIpO1xuZnVuY3Rpb24gZmV0Y2hlclJldHVyblRvUHJvbWlzZShmZXRjaGVyUmVzdWx0KSB7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmV0Y2hlclJlc3VsdCkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgaWYgKGlzQXN5bmNJdGVyYWJsZShyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gYXN5bmNJdGVyYWJsZVRvUHJvbWlzZShyZXN1bHQpO1xuICAgIH0gZWxzZSBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlVG9Qcm9taXNlKHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuX19uYW1lKGZldGNoZXJSZXR1cm5Ub1Byb21pc2UsIFwiZmV0Y2hlclJldHVyblRvUHJvbWlzZVwiKTtcbmdsb2JhbFRoaXMgJiYgZ2xvYmFsVGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24odGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cbiAgX19uYW1lKGFkb3B0LCBcImFkb3B0XCIpO1xuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShmdWxmaWxsZWQsIFwiZnVsZmlsbGVkXCIpO1xuICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHJlamVjdGVkLCBcInJlamVjdGVkXCIpO1xuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG4gICAgX19uYW1lKHN0ZXAsIFwic3RlcFwiKTtcbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcbnZhciBfX2F3YWl0ID0gZ2xvYmFsVGhpcyAmJiBnbG9iYWxUaGlzLl9fYXdhaXQgfHwgZnVuY3Rpb24odikge1xuICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcbn07XG5nbG9iYWxUaGlzICYmIGdsb2JhbFRoaXMuX19hc3luY1ZhbHVlcyB8fCBmdW5jdGlvbihvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIG0yID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gIHJldHVybiBtMiA/IG0yLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LCBpKTtcbiAgZnVuY3Rpb24gdmVyYihuMikge1xuICAgIGlbbjJdID0gb1tuMl0gJiYgZnVuY3Rpb24odikge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2ID0gb1tuMl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG4gIF9fbmFtZSh2ZXJiLCBcInZlcmJcIik7XG4gIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHtcbiAgICBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2Mikge1xuICAgICAgcmVzb2x2ZSh7IHZhbHVlOiB2MiwgZG9uZTogZCB9KTtcbiAgICB9LCByZWplY3QpO1xuICB9XG4gIF9fbmFtZShzZXR0bGUsIFwic2V0dGxlXCIpO1xufTtcbmdsb2JhbFRoaXMgJiYgZ2xvYmFsVGhpcy5fX2FzeW5jR2VuZXJhdG9yIHx8IGZ1bmN0aW9uKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBnMiA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcTIgPSBbXTtcbiAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSwgaTtcbiAgZnVuY3Rpb24gdmVyYihuMikge1xuICAgIGlmIChnMltuMl0pXG4gICAgICBpW24yXSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICBxMi5wdXNoKFtuMiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobjIsIHYpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gIH1cbiAgX19uYW1lKHZlcmIsIFwidmVyYlwiKTtcbiAgZnVuY3Rpb24gcmVzdW1lKG4yLCB2KSB7XG4gICAgdHJ5IHtcbiAgICAgIHN0ZXAoZzJbbjJdKHYpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBzZXR0bGUocTJbMF1bM10sIGUpO1xuICAgIH1cbiAgfVxuICBfX25hbWUocmVzdW1lLCBcInJlc3VtZVwiKTtcbiAgZnVuY3Rpb24gc3RlcChyKSB7XG4gICAgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocTJbMF1bMl0sIHIpO1xuICB9XG4gIF9fbmFtZShzdGVwLCBcInN0ZXBcIik7XG4gIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHtcbiAgICByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTtcbiAgfVxuICBfX25hbWUoZnVsZmlsbCwgXCJmdWxmaWxsXCIpO1xuICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHtcbiAgICByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7XG4gIH1cbiAgX19uYW1lKHJlamVjdCwgXCJyZWplY3RcIik7XG4gIGZ1bmN0aW9uIHNldHRsZShmMiwgdikge1xuICAgIGlmIChmMih2KSwgcTIuc2hpZnQoKSwgcTIubGVuZ3RoKVxuICAgICAgcmVzdW1lKHEyWzBdWzBdLCBxMlswXVsxXSk7XG4gIH1cbiAgX19uYW1lKHNldHRsZSwgXCJzZXR0bGVcIik7XG59O1xuZnVuY3Rpb24gc3RyaW5naWZ5KG9iaikge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAyKTtcbn1cbl9fbmFtZShzdHJpbmdpZnksIFwic3RyaW5naWZ5XCIpO1xuZnVuY3Rpb24gZm9ybWF0U2luZ2xlRXJyb3IoZXJyb3IyKSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGVycm9yMiksIHsgbWVzc2FnZTogZXJyb3IyLm1lc3NhZ2UsIHN0YWNrOiBlcnJvcjIuc3RhY2sgfSk7XG59XG5fX25hbWUoZm9ybWF0U2luZ2xlRXJyb3IsIFwiZm9ybWF0U2luZ2xlRXJyb3JcIik7XG5mdW5jdGlvbiBoYW5kbGVTaW5nbGVFcnJvcihlcnJvcjIpIHtcbiAgaWYgKGVycm9yMiBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgcmV0dXJuIGZvcm1hdFNpbmdsZUVycm9yKGVycm9yMik7XG4gIH1cbiAgcmV0dXJuIGVycm9yMjtcbn1cbl9fbmFtZShoYW5kbGVTaW5nbGVFcnJvciwgXCJoYW5kbGVTaW5nbGVFcnJvclwiKTtcbmZ1bmN0aW9uIGZvcm1hdEVycm9yKGVycm9yMikge1xuICBpZiAoQXJyYXkuaXNBcnJheShlcnJvcjIpKSB7XG4gICAgcmV0dXJuIHN0cmluZ2lmeSh7XG4gICAgICBlcnJvcnM6IGVycm9yMi5tYXAoKGUpID0+IGhhbmRsZVNpbmdsZUVycm9yKGUpKVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBzdHJpbmdpZnkoeyBlcnJvcnM6IFtoYW5kbGVTaW5nbGVFcnJvcihlcnJvcjIpXSB9KTtcbn1cbl9fbmFtZShmb3JtYXRFcnJvciwgXCJmb3JtYXRFcnJvclwiKTtcbmZ1bmN0aW9uIGZvcm1hdFJlc3VsdChyZXN1bHQpIHtcbiAgcmV0dXJuIHN0cmluZ2lmeShyZXN1bHQpO1xufVxuX19uYW1lKGZvcm1hdFJlc3VsdCwgXCJmb3JtYXRSZXN1bHRcIik7XG5mdW5jdGlvbiBmaWxsTGVhZnMoc2NoZW1hLCBkb2NTdHJpbmcsIGdldERlZmF1bHRGaWVsZE5hbWVzKSB7XG4gIGNvbnN0IGluc2VydGlvbnMgPSBbXTtcbiAgaWYgKCFzY2hlbWEgfHwgIWRvY1N0cmluZykge1xuICAgIHJldHVybiB7IGluc2VydGlvbnMsIHJlc3VsdDogZG9jU3RyaW5nIH07XG4gIH1cbiAgbGV0IGFzdDI7XG4gIHRyeSB7XG4gICAgYXN0MiA9IHBhcnNlJDEoZG9jU3RyaW5nKTtcbiAgfSBjYXRjaCAoZXJyb3IyKSB7XG4gICAgcmV0dXJuIHsgaW5zZXJ0aW9ucywgcmVzdWx0OiBkb2NTdHJpbmcgfTtcbiAgfVxuICBjb25zdCBmaWVsZE5hbWVGbiA9IGdldERlZmF1bHRGaWVsZE5hbWVzIHx8IGRlZmF1bHRHZXREZWZhdWx0RmllbGROYW1lcztcbiAgY29uc3QgdHlwZUluZm8gPSBuZXcgVHlwZUluZm8oc2NoZW1hKTtcbiAgdmlzaXQoYXN0Miwge1xuICAgIGxlYXZlKG5vZGUpIHtcbiAgICAgIHR5cGVJbmZvLmxlYXZlKG5vZGUpO1xuICAgIH0sXG4gICAgZW50ZXIobm9kZSkge1xuICAgICAgdHlwZUluZm8uZW50ZXIobm9kZSk7XG4gICAgICBpZiAobm9kZS5raW5kID09PSBcIkZpZWxkXCIgJiYgIW5vZGUuc2VsZWN0aW9uU2V0KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVHlwZSA9IHR5cGVJbmZvLmdldFR5cGUoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uU2V0ID0gYnVpbGRTZWxlY3Rpb25TZXQoaXNGaWVsZFR5cGUoZmllbGRUeXBlKSwgZmllbGROYW1lRm4pO1xuICAgICAgICBpZiAoc2VsZWN0aW9uU2V0ICYmIG5vZGUubG9jKSB7XG4gICAgICAgICAgY29uc3QgaW5kZW50ID0gZ2V0SW5kZW50YXRpb24oZG9jU3RyaW5nLCBub2RlLmxvYy5zdGFydCk7XG4gICAgICAgICAgaW5zZXJ0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgIGluZGV4OiBub2RlLmxvYy5lbmQsXG4gICAgICAgICAgICBzdHJpbmc6IFwiIFwiICsgcHJpbnQoc2VsZWN0aW9uU2V0KS5yZXBsYWNlKC9cXG4vZywgXCJcXG5cIiArIGluZGVudClcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaW5zZXJ0aW9ucyxcbiAgICByZXN1bHQ6IHdpdGhJbnNlcnRpb25zKGRvY1N0cmluZywgaW5zZXJ0aW9ucylcbiAgfTtcbn1cbl9fbmFtZShmaWxsTGVhZnMsIFwiZmlsbExlYWZzXCIpO1xuZnVuY3Rpb24gZGVmYXVsdEdldERlZmF1bHRGaWVsZE5hbWVzKHR5cGUyKSB7XG4gIGlmICghKFwiZ2V0RmllbGRzXCIgaW4gdHlwZTIpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IGZpZWxkcyA9IHR5cGUyLmdldEZpZWxkcygpO1xuICBpZiAoZmllbGRzLmlkKSB7XG4gICAgcmV0dXJuIFtcImlkXCJdO1xuICB9XG4gIGlmIChmaWVsZHMuZWRnZXMpIHtcbiAgICByZXR1cm4gW1wiZWRnZXNcIl07XG4gIH1cbiAgaWYgKGZpZWxkcy5ub2RlKSB7XG4gICAgcmV0dXJuIFtcIm5vZGVcIl07XG4gIH1cbiAgY29uc3QgbGVhZkZpZWxkTmFtZXMgPSBbXTtcbiAgT2JqZWN0LmtleXMoZmllbGRzKS5mb3JFYWNoKChmaWVsZE5hbWUpID0+IHtcbiAgICBpZiAoaXNMZWFmVHlwZShmaWVsZHNbZmllbGROYW1lXS50eXBlKSkge1xuICAgICAgbGVhZkZpZWxkTmFtZXMucHVzaChmaWVsZE5hbWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBsZWFmRmllbGROYW1lcztcbn1cbl9fbmFtZShkZWZhdWx0R2V0RGVmYXVsdEZpZWxkTmFtZXMsIFwiZGVmYXVsdEdldERlZmF1bHRGaWVsZE5hbWVzXCIpO1xuZnVuY3Rpb24gYnVpbGRTZWxlY3Rpb25TZXQodHlwZTIsIGdldERlZmF1bHRGaWVsZE5hbWVzKSB7XG4gIGNvbnN0IG5hbWVkVHlwZSA9IGdldE5hbWVkVHlwZSh0eXBlMik7XG4gIGlmICghdHlwZTIgfHwgaXNMZWFmVHlwZSh0eXBlMikpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZmllbGROYW1lcyA9IGdldERlZmF1bHRGaWVsZE5hbWVzKG5hbWVkVHlwZSk7XG4gIGlmICghQXJyYXkuaXNBcnJheShmaWVsZE5hbWVzKSB8fCBmaWVsZE5hbWVzLmxlbmd0aCA9PT0gMCB8fCAhKFwiZ2V0RmllbGRzXCIgaW4gbmFtZWRUeXBlKSkge1xuICAgIHJldHVybjtcbiAgfVxuICByZXR1cm4ge1xuICAgIGtpbmQ6IEtpbmQuU0VMRUNUSU9OX1NFVCxcbiAgICBzZWxlY3Rpb25zOiBmaWVsZE5hbWVzLm1hcCgoZmllbGROYW1lKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZERlZiA9IG5hbWVkVHlwZS5nZXRGaWVsZHMoKVtmaWVsZE5hbWVdO1xuICAgICAgY29uc3QgZmllbGRUeXBlID0gZmllbGREZWYgPyBmaWVsZERlZi50eXBlIDogbnVsbDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6IEtpbmQuRklFTEQsXG4gICAgICAgIG5hbWU6IHtcbiAgICAgICAgICBraW5kOiBLaW5kLk5BTUUsXG4gICAgICAgICAgdmFsdWU6IGZpZWxkTmFtZVxuICAgICAgICB9LFxuICAgICAgICBzZWxlY3Rpb25TZXQ6IGJ1aWxkU2VsZWN0aW9uU2V0KGZpZWxkVHlwZSwgZ2V0RGVmYXVsdEZpZWxkTmFtZXMpXG4gICAgICB9O1xuICAgIH0pXG4gIH07XG59XG5fX25hbWUoYnVpbGRTZWxlY3Rpb25TZXQsIFwiYnVpbGRTZWxlY3Rpb25TZXRcIik7XG5mdW5jdGlvbiB3aXRoSW5zZXJ0aW9ucyhpbml0aWFsLCBpbnNlcnRpb25zKSB7XG4gIGlmIChpbnNlcnRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBpbml0aWFsO1xuICB9XG4gIGxldCBlZGl0ZWQgPSBcIlwiO1xuICBsZXQgcHJldkluZGV4ID0gMDtcbiAgaW5zZXJ0aW9ucy5mb3JFYWNoKCh7IGluZGV4LCBzdHJpbmcgfSkgPT4ge1xuICAgIGVkaXRlZCArPSBpbml0aWFsLnNsaWNlKHByZXZJbmRleCwgaW5kZXgpICsgc3RyaW5nO1xuICAgIHByZXZJbmRleCA9IGluZGV4O1xuICB9KTtcbiAgZWRpdGVkICs9IGluaXRpYWwuc2xpY2UocHJldkluZGV4KTtcbiAgcmV0dXJuIGVkaXRlZDtcbn1cbl9fbmFtZSh3aXRoSW5zZXJ0aW9ucywgXCJ3aXRoSW5zZXJ0aW9uc1wiKTtcbmZ1bmN0aW9uIGdldEluZGVudGF0aW9uKHN0ciwgaW5kZXgpIHtcbiAgbGV0IGluZGVudFN0YXJ0ID0gaW5kZXg7XG4gIGxldCBpbmRlbnRFbmQgPSBpbmRleDtcbiAgd2hpbGUgKGluZGVudFN0YXJ0KSB7XG4gICAgY29uc3QgYyA9IHN0ci5jaGFyQ29kZUF0KGluZGVudFN0YXJ0IC0gMSk7XG4gICAgaWYgKGMgPT09IDEwIHx8IGMgPT09IDEzIHx8IGMgPT09IDgyMzIgfHwgYyA9PT0gODIzMykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGluZGVudFN0YXJ0LS07XG4gICAgaWYgKGMgIT09IDkgJiYgYyAhPT0gMTEgJiYgYyAhPT0gMTIgJiYgYyAhPT0gMzIgJiYgYyAhPT0gMTYwKSB7XG4gICAgICBpbmRlbnRFbmQgPSBpbmRlbnRTdGFydDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoaW5kZW50U3RhcnQsIGluZGVudEVuZCk7XG59XG5fX25hbWUoZ2V0SW5kZW50YXRpb24sIFwiZ2V0SW5kZW50YXRpb25cIik7XG5mdW5jdGlvbiBpc0ZpZWxkVHlwZShmaWVsZFR5cGUpIHtcbiAgaWYgKGZpZWxkVHlwZSkge1xuICAgIHJldHVybiBmaWVsZFR5cGU7XG4gIH1cbn1cbl9fbmFtZShpc0ZpZWxkVHlwZSwgXCJpc0ZpZWxkVHlwZVwiKTtcbmZ1bmN0aW9uIHVuaXF1ZUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgX2E7XG4gIGNvbnN0IEZpbHRlcmVkTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGZvciAoY29uc3QgaXRlbSBvZiBhcnJheSkge1xuICAgIGlmIChpdGVtLmtpbmQgPT09IFwiRmllbGRcIikge1xuICAgICAgY29uc3QgdW5pcXVlVmFsdWUgPSBpdGVyYXRlZShpdGVtKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gRmlsdGVyZWRNYXAuZ2V0KHVuaXF1ZVZhbHVlKTtcbiAgICAgIGlmICgoX2EgPSBpdGVtLmRpcmVjdGl2ZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgaXRlbUNsb25lID0gT2JqZWN0LmFzc2lnbih7fSwgaXRlbSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKGl0ZW1DbG9uZSk7XG4gICAgICB9IGVsc2UgaWYgKChleGlzdGluZyA9PT0gbnVsbCB8fCBleGlzdGluZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhpc3Rpbmcuc2VsZWN0aW9uU2V0KSAmJiBpdGVtLnNlbGVjdGlvblNldCkge1xuICAgICAgICBleGlzdGluZy5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyA9IFtcbiAgICAgICAgICAuLi5leGlzdGluZy5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyxcbiAgICAgICAgICAuLi5pdGVtLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zXG4gICAgICAgIF07XG4gICAgICB9IGVsc2UgaWYgKCFleGlzdGluZykge1xuICAgICAgICBjb25zdCBpdGVtQ2xvbmUgPSBPYmplY3QuYXNzaWduKHt9LCBpdGVtKTtcbiAgICAgICAgRmlsdGVyZWRNYXAuc2V0KHVuaXF1ZVZhbHVlLCBpdGVtQ2xvbmUpO1xuICAgICAgICByZXN1bHQucHVzaChpdGVtQ2xvbmUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbl9fbmFtZSh1bmlxdWVCeSwgXCJ1bmlxdWVCeVwiKTtcbmZ1bmN0aW9uIGlubGluZVJlbGV2YW50RnJhZ21lbnRTcHJlYWRzKGZyYWdtZW50RGVmaW5pdGlvbnMsIHNlbGVjdGlvbnMsIHNlbGVjdGlvblNldFR5cGUpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBzZWxlY3Rpb25TZXRUeXBlTmFtZSA9IHNlbGVjdGlvblNldFR5cGUgPyBnZXROYW1lZFR5cGUoc2VsZWN0aW9uU2V0VHlwZSkubmFtZSA6IG51bGw7XG4gIGNvbnN0IG91dHB1dFNlbGVjdGlvbnMgPSBbXTtcbiAgY29uc3Qgc2VlblNwcmVhZHMgPSBbXTtcbiAgZm9yIChsZXQgc2VsZWN0aW9uIG9mIHNlbGVjdGlvbnMpIHtcbiAgICBpZiAoc2VsZWN0aW9uLmtpbmQgPT09IFwiRnJhZ21lbnRTcHJlYWRcIikge1xuICAgICAgY29uc3QgZnJhZ21lbnROYW1lID0gc2VsZWN0aW9uLm5hbWUudmFsdWU7XG4gICAgICBpZiAoIXNlbGVjdGlvbi5kaXJlY3RpdmVzIHx8IHNlbGVjdGlvbi5kaXJlY3RpdmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAoc2VlblNwcmVhZHMuaW5kZXhPZihmcmFnbWVudE5hbWUpID49IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWVuU3ByZWFkcy5wdXNoKGZyYWdtZW50TmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGZyYWdtZW50RGVmaW5pdGlvbiA9IGZyYWdtZW50RGVmaW5pdGlvbnNbc2VsZWN0aW9uLm5hbWUudmFsdWVdO1xuICAgICAgaWYgKGZyYWdtZW50RGVmaW5pdGlvbikge1xuICAgICAgICBjb25zdCB7IHR5cGVDb25kaXRpb24sIGRpcmVjdGl2ZXMsIHNlbGVjdGlvblNldCB9ID0gZnJhZ21lbnREZWZpbml0aW9uO1xuICAgICAgICBzZWxlY3Rpb24gPSB7XG4gICAgICAgICAga2luZDogS2luZC5JTkxJTkVfRlJBR01FTlQsXG4gICAgICAgICAgdHlwZUNvbmRpdGlvbixcbiAgICAgICAgICBkaXJlY3RpdmVzLFxuICAgICAgICAgIHNlbGVjdGlvblNldFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2VsZWN0aW9uLmtpbmQgPT09IEtpbmQuSU5MSU5FX0ZSQUdNRU5UICYmICghc2VsZWN0aW9uLmRpcmVjdGl2ZXMgfHwgKChfYSA9IHNlbGVjdGlvbi5kaXJlY3RpdmVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA9PT0gMCkpIHtcbiAgICAgIGNvbnN0IGZyYWdtZW50VHlwZU5hbWUgPSBzZWxlY3Rpb24udHlwZUNvbmRpdGlvbiA/IHNlbGVjdGlvbi50eXBlQ29uZGl0aW9uLm5hbWUudmFsdWUgOiBudWxsO1xuICAgICAgaWYgKCFmcmFnbWVudFR5cGVOYW1lIHx8IGZyYWdtZW50VHlwZU5hbWUgPT09IHNlbGVjdGlvblNldFR5cGVOYW1lKSB7XG4gICAgICAgIG91dHB1dFNlbGVjdGlvbnMucHVzaCguLi5pbmxpbmVSZWxldmFudEZyYWdtZW50U3ByZWFkcyhmcmFnbWVudERlZmluaXRpb25zLCBzZWxlY3Rpb24uc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMsIHNlbGVjdGlvblNldFR5cGUpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIG91dHB1dFNlbGVjdGlvbnMucHVzaChzZWxlY3Rpb24pO1xuICB9XG4gIHJldHVybiBvdXRwdXRTZWxlY3Rpb25zO1xufVxuX19uYW1lKGlubGluZVJlbGV2YW50RnJhZ21lbnRTcHJlYWRzLCBcImlubGluZVJlbGV2YW50RnJhZ21lbnRTcHJlYWRzXCIpO1xuZnVuY3Rpb24gbWVyZ2VBc3QoZG9jdW1lbnRBU1QsIHNjaGVtYSkge1xuICBjb25zdCB0eXBlSW5mbyA9IHNjaGVtYSA/IG5ldyBUeXBlSW5mbyhzY2hlbWEpIDogbnVsbDtcbiAgY29uc3QgZnJhZ21lbnREZWZpbml0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBmb3IgKGNvbnN0IGRlZmluaXRpb24gb2YgZG9jdW1lbnRBU1QuZGVmaW5pdGlvbnMpIHtcbiAgICBpZiAoZGVmaW5pdGlvbi5raW5kID09PSBLaW5kLkZSQUdNRU5UX0RFRklOSVRJT04pIHtcbiAgICAgIGZyYWdtZW50RGVmaW5pdGlvbnNbZGVmaW5pdGlvbi5uYW1lLnZhbHVlXSA9IGRlZmluaXRpb247XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc2l0b3JzID0ge1xuICAgIFNlbGVjdGlvblNldChub2RlKSB7XG4gICAgICBjb25zdCBzZWxlY3Rpb25TZXRUeXBlID0gdHlwZUluZm8gPyB0eXBlSW5mby5nZXRQYXJlbnRUeXBlKCkgOiBudWxsO1xuICAgICAgbGV0IHsgc2VsZWN0aW9ucyB9ID0gbm9kZTtcbiAgICAgIHNlbGVjdGlvbnMgPSBpbmxpbmVSZWxldmFudEZyYWdtZW50U3ByZWFkcyhmcmFnbWVudERlZmluaXRpb25zLCBzZWxlY3Rpb25zLCBzZWxlY3Rpb25TZXRUeXBlKTtcbiAgICAgIHNlbGVjdGlvbnMgPSB1bmlxdWVCeShzZWxlY3Rpb25zLCAoc2VsZWN0aW9uKSA9PiBzZWxlY3Rpb24uYWxpYXMgPyBzZWxlY3Rpb24uYWxpYXMudmFsdWUgOiBzZWxlY3Rpb24ubmFtZS52YWx1ZSk7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBub2RlKSwgeyBzZWxlY3Rpb25zIH0pO1xuICAgIH0sXG4gICAgRnJhZ21lbnREZWZpbml0aW9uKCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuICByZXR1cm4gdmlzaXQoZG9jdW1lbnRBU1QsIHR5cGVJbmZvID8gdmlzaXRXaXRoVHlwZUluZm8odHlwZUluZm8sIHZpc2l0b3JzKSA6IHZpc2l0b3JzKTtcbn1cbl9fbmFtZShtZXJnZUFzdCwgXCJtZXJnZUFzdFwiKTtcbmZ1bmN0aW9uIGdldFNlbGVjdGVkT3BlcmF0aW9uTmFtZShwcmV2T3BlcmF0aW9ucywgcHJldlNlbGVjdGVkT3BlcmF0aW9uTmFtZSwgb3BlcmF0aW9ucykge1xuICBpZiAoIW9wZXJhdGlvbnMgfHwgb3BlcmF0aW9ucy5sZW5ndGggPCAxKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG5hbWVzID0gb3BlcmF0aW9ucy5tYXAoKG9wKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoX2EgPSBvcC5uYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudmFsdWU7XG4gIH0pO1xuICBpZiAocHJldlNlbGVjdGVkT3BlcmF0aW9uTmFtZSAmJiBuYW1lcy5pbmRleE9mKHByZXZTZWxlY3RlZE9wZXJhdGlvbk5hbWUpICE9PSAtMSkge1xuICAgIHJldHVybiBwcmV2U2VsZWN0ZWRPcGVyYXRpb25OYW1lO1xuICB9XG4gIGlmIChwcmV2U2VsZWN0ZWRPcGVyYXRpb25OYW1lICYmIHByZXZPcGVyYXRpb25zKSB7XG4gICAgY29uc3QgcHJldk5hbWVzID0gcHJldk9wZXJhdGlvbnMubWFwKChvcCkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgcmV0dXJuIChfYSA9IG9wLm5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS52YWx1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBwcmV2SW5kZXggPSBwcmV2TmFtZXMuaW5kZXhPZihwcmV2U2VsZWN0ZWRPcGVyYXRpb25OYW1lKTtcbiAgICBpZiAocHJldkluZGV4ICE9PSAtMSAmJiBwcmV2SW5kZXggPCBuYW1lcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBuYW1lc1twcmV2SW5kZXhdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmFtZXNbMF07XG59XG5fX25hbWUoZ2V0U2VsZWN0ZWRPcGVyYXRpb25OYW1lLCBcImdldFNlbGVjdGVkT3BlcmF0aW9uTmFtZVwiKTtcbmZ1bmN0aW9uIGlzUXVvdGFFcnJvcihzdG9yYWdlLCBlKSB7XG4gIHJldHVybiBlIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uICYmIChlLmNvZGUgPT09IDIyIHx8IGUuY29kZSA9PT0gMTAxNCB8fCBlLm5hbWUgPT09IFwiUXVvdGFFeGNlZWRlZEVycm9yXCIgfHwgZS5uYW1lID09PSBcIk5TX0VSUk9SX0RPTV9RVU9UQV9SRUFDSEVEXCIpICYmIHN0b3JhZ2UubGVuZ3RoICE9PSAwO1xufVxuX19uYW1lKGlzUXVvdGFFcnJvciwgXCJpc1F1b3RhRXJyb3JcIik7XG5jbGFzcyBTdG9yYWdlQVBJIHtcbiAgY29uc3RydWN0b3Ioc3RvcmFnZSkge1xuICAgIGlmIChzdG9yYWdlKSB7XG4gICAgICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlO1xuICAgIH0gZWxzZSBpZiAoc3RvcmFnZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5zdG9yYWdlID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yYWdlID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdy5sb2NhbFN0b3JhZ2UgOiBudWxsO1xuICAgIH1cbiAgfVxuICBnZXQobmFtZTIpIHtcbiAgICBpZiAoIXRoaXMuc3RvcmFnZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGtleSA9IGAke1NUT1JBR0VfTkFNRVNQQUNFfToke25hbWUyfWA7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgIGlmICh2YWx1ZSA9PT0gXCJudWxsXCIgfHwgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlIHx8IG51bGw7XG4gIH1cbiAgc2V0KG5hbWUyLCB2YWx1ZSkge1xuICAgIGxldCBxdW90YUVycm9yID0gZmFsc2U7XG4gICAgbGV0IGVycm9yMiA9IG51bGw7XG4gICAgaWYgKHRoaXMuc3RvcmFnZSkge1xuICAgICAgY29uc3Qga2V5ID0gYCR7U1RPUkFHRV9OQU1FU1BBQ0V9OiR7bmFtZTJ9YDtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgZXJyb3IyID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZSA6IG5ldyBFcnJvcihgJHtlfWApO1xuICAgICAgICAgIHF1b3RhRXJyb3IgPSBpc1F1b3RhRXJyb3IodGhpcy5zdG9yYWdlLCBlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgaXNRdW90YUVycm9yOiBxdW90YUVycm9yLCBlcnJvcjogZXJyb3IyIH07XG4gIH1cbn1cbl9fbmFtZShTdG9yYWdlQVBJLCBcIlN0b3JhZ2VBUElcIik7XG5jb25zdCBTVE9SQUdFX05BTUVTUEFDRSA9IFwiZ3JhcGhpcWxcIjtcbmNsYXNzIFF1ZXJ5U3RvcmUge1xuICBjb25zdHJ1Y3RvcihrZXksIHN0b3JhZ2UsIG1heFNpemUgPSBudWxsKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZTtcbiAgICB0aGlzLm1heFNpemUgPSBtYXhTaXplO1xuICAgIHRoaXMuaXRlbXMgPSB0aGlzLmZldGNoQWxsKCk7XG4gIH1cbiAgZ2V0IGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGg7XG4gIH1cbiAgY29udGFpbnMoaXRlbSkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLnNvbWUoKHgpID0+IHgucXVlcnkgPT09IGl0ZW0ucXVlcnkgJiYgeC52YXJpYWJsZXMgPT09IGl0ZW0udmFyaWFibGVzICYmIHguaGVhZGVycyA9PT0gaXRlbS5oZWFkZXJzICYmIHgub3BlcmF0aW9uTmFtZSA9PT0gaXRlbS5vcGVyYXRpb25OYW1lKTtcbiAgfVxuICBlZGl0KGl0ZW0pIHtcbiAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLml0ZW1zLmZpbmRJbmRleCgoeCkgPT4geC5xdWVyeSA9PT0gaXRlbS5xdWVyeSAmJiB4LnZhcmlhYmxlcyA9PT0gaXRlbS52YXJpYWJsZXMgJiYgeC5oZWFkZXJzID09PSBpdGVtLmhlYWRlcnMgJiYgeC5vcGVyYXRpb25OYW1lID09PSBpdGVtLm9wZXJhdGlvbk5hbWUpO1xuICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpdGVtSW5kZXgsIDEsIGl0ZW0pO1xuICAgICAgdGhpcy5zYXZlKCk7XG4gICAgfVxuICB9XG4gIGRlbGV0ZShpdGVtKSB7XG4gICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoKHgpID0+IHgucXVlcnkgPT09IGl0ZW0ucXVlcnkgJiYgeC52YXJpYWJsZXMgPT09IGl0ZW0udmFyaWFibGVzICYmIHguaGVhZGVycyA9PT0gaXRlbS5oZWFkZXJzICYmIHgub3BlcmF0aW9uTmFtZSA9PT0gaXRlbS5vcGVyYXRpb25OYW1lKTtcbiAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgIHRoaXMuc2F2ZSgpO1xuICAgIH1cbiAgfVxuICBmZXRjaFJlY2VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc1t0aGlzLml0ZW1zLmxlbmd0aCAtIDFdO1xuICB9XG4gIGZldGNoQWxsKCkge1xuICAgIGNvbnN0IHJhdyA9IHRoaXMuc3RvcmFnZS5nZXQodGhpcy5rZXkpO1xuICAgIGlmIChyYXcpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJhdylbdGhpcy5rZXldO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cbiAgcHVzaChpdGVtKSB7XG4gICAgY29uc3QgaXRlbXMgPSBbLi4udGhpcy5pdGVtcywgaXRlbV07XG4gICAgaWYgKHRoaXMubWF4U2l6ZSAmJiBpdGVtcy5sZW5ndGggPiB0aGlzLm1heFNpemUpIHtcbiAgICAgIGl0ZW1zLnNoaWZ0KCk7XG4gICAgfVxuICAgIGZvciAobGV0IGF0dGVtcHRzID0gMDsgYXR0ZW1wdHMgPCA1OyBhdHRlbXB0cysrKSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMuc3RvcmFnZS5zZXQodGhpcy5rZXksIEpTT04uc3RyaW5naWZ5KHsgW3RoaXMua2V5XTogaXRlbXMgfSkpO1xuICAgICAgaWYgKCFyZXNwb25zZSB8fCAhcmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgdGhpcy5pdGVtcyA9IGl0ZW1zO1xuICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5pc1F1b3RhRXJyb3IgJiYgdGhpcy5tYXhTaXplKSB7XG4gICAgICAgIGl0ZW1zLnNoaWZ0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNhdmUoKSB7XG4gICAgdGhpcy5zdG9yYWdlLnNldCh0aGlzLmtleSwgSlNPTi5zdHJpbmdpZnkoeyBbdGhpcy5rZXldOiB0aGlzLml0ZW1zIH0pKTtcbiAgfVxufVxuX19uYW1lKFF1ZXJ5U3RvcmUsIFwiUXVlcnlTdG9yZVwiKTtcbmNvbnN0IE1BWF9RVUVSWV9TSVpFID0gMWU1O1xuY2xhc3MgSGlzdG9yeVN0b3JlIHtcbiAgY29uc3RydWN0b3Ioc3RvcmFnZSwgbWF4SGlzdG9yeUxlbmd0aCkge1xuICAgIHRoaXMuc3RvcmFnZSA9IHN0b3JhZ2U7XG4gICAgdGhpcy5tYXhIaXN0b3J5TGVuZ3RoID0gbWF4SGlzdG9yeUxlbmd0aDtcbiAgICB0aGlzLnVwZGF0ZUhpc3RvcnkgPSAocXVlcnksIHZhcmlhYmxlcywgaGVhZGVycywgb3BlcmF0aW9uTmFtZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2hvdWxkU2F2ZVF1ZXJ5KHF1ZXJ5LCB2YXJpYWJsZXMsIGhlYWRlcnMsIHRoaXMuaGlzdG9yeS5mZXRjaFJlY2VudCgpKSkge1xuICAgICAgICB0aGlzLmhpc3RvcnkucHVzaCh7XG4gICAgICAgICAgcXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzLFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgb3BlcmF0aW9uTmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaGlzdG9yeVF1ZXJpZXMgPSB0aGlzLmhpc3RvcnkuaXRlbXM7XG4gICAgICAgIGNvbnN0IGZhdm9yaXRlUXVlcmllcyA9IHRoaXMuZmF2b3JpdGUuaXRlbXM7XG4gICAgICAgIHRoaXMucXVlcmllcyA9IGhpc3RvcnlRdWVyaWVzLmNvbmNhdChmYXZvcml0ZVF1ZXJpZXMpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5oaXN0b3J5ID0gbmV3IFF1ZXJ5U3RvcmUoXCJxdWVyaWVzXCIsIHRoaXMuc3RvcmFnZSwgdGhpcy5tYXhIaXN0b3J5TGVuZ3RoKTtcbiAgICB0aGlzLmZhdm9yaXRlID0gbmV3IFF1ZXJ5U3RvcmUoXCJmYXZvcml0ZXNcIiwgdGhpcy5zdG9yYWdlLCBudWxsKTtcbiAgICB0aGlzLnF1ZXJpZXMgPSBbLi4udGhpcy5oaXN0b3J5LmZldGNoQWxsKCksIC4uLnRoaXMuZmF2b3JpdGUuZmV0Y2hBbGwoKV07XG4gIH1cbiAgc2hvdWxkU2F2ZVF1ZXJ5KHF1ZXJ5LCB2YXJpYWJsZXMsIGhlYWRlcnMsIGxhc3RRdWVyeVNhdmVkKSB7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcGFyc2UkMShxdWVyeSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAocXVlcnkubGVuZ3RoID4gTUFYX1FVRVJZX1NJWkUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFsYXN0UXVlcnlTYXZlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChKU09OLnN0cmluZ2lmeShxdWVyeSkgPT09IEpTT04uc3RyaW5naWZ5KGxhc3RRdWVyeVNhdmVkLnF1ZXJ5KSkge1xuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHZhcmlhYmxlcykgPT09IEpTT04uc3RyaW5naWZ5KGxhc3RRdWVyeVNhdmVkLnZhcmlhYmxlcykpIHtcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGhlYWRlcnMpID09PSBKU09OLnN0cmluZ2lmeShsYXN0UXVlcnlTYXZlZC5oZWFkZXJzKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGVhZGVycyAmJiAhbGFzdFF1ZXJ5U2F2ZWQuaGVhZGVycykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHZhcmlhYmxlcyAmJiAhbGFzdFF1ZXJ5U2F2ZWQudmFyaWFibGVzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdG9nZ2xlRmF2b3JpdGUocXVlcnksIHZhcmlhYmxlcywgaGVhZGVycywgb3BlcmF0aW9uTmFtZSwgbGFiZWwsIGZhdm9yaXRlKSB7XG4gICAgY29uc3QgaXRlbSA9IHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgaGVhZGVycyxcbiAgICAgIG9wZXJhdGlvbk5hbWUsXG4gICAgICBsYWJlbFxuICAgIH07XG4gICAgaWYgKCF0aGlzLmZhdm9yaXRlLmNvbnRhaW5zKGl0ZW0pKSB7XG4gICAgICBpdGVtLmZhdm9yaXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZmF2b3JpdGUucHVzaChpdGVtKTtcbiAgICB9IGVsc2UgaWYgKGZhdm9yaXRlKSB7XG4gICAgICBpdGVtLmZhdm9yaXRlID0gZmFsc2U7XG4gICAgICB0aGlzLmZhdm9yaXRlLmRlbGV0ZShpdGVtKTtcbiAgICB9XG4gICAgdGhpcy5xdWVyaWVzID0gWy4uLnRoaXMuaGlzdG9yeS5pdGVtcywgLi4udGhpcy5mYXZvcml0ZS5pdGVtc107XG4gIH1cbiAgZWRpdExhYmVsKHF1ZXJ5LCB2YXJpYWJsZXMsIGhlYWRlcnMsIG9wZXJhdGlvbk5hbWUsIGxhYmVsLCBmYXZvcml0ZSkge1xuICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICBxdWVyeSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBvcGVyYXRpb25OYW1lLFxuICAgICAgbGFiZWxcbiAgICB9O1xuICAgIGlmIChmYXZvcml0ZSkge1xuICAgICAgdGhpcy5mYXZvcml0ZS5lZGl0KE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaXRlbSksIHsgZmF2b3JpdGUgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpc3RvcnkuZWRpdChpdGVtKTtcbiAgICB9XG4gICAgdGhpcy5xdWVyaWVzID0gWy4uLnRoaXMuaGlzdG9yeS5pdGVtcywgLi4udGhpcy5mYXZvcml0ZS5pdGVtc107XG4gIH1cbn1cbl9fbmFtZShIaXN0b3J5U3RvcmUsIFwiSGlzdG9yeVN0b3JlXCIpO1xudmFyIF9fZGVmUHJvcCRnID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSRnID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgodGFyZ2V0MiwgdmFsdWUpID0+IF9fZGVmUHJvcCRnKHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSksIFwiX19uYW1lJGdcIik7XG5mdW5jdGlvbiBjcmVhdGVOdWxsYWJsZUNvbnRleHQobmFtZTIpIHtcbiAgY29uc3QgY29udGV4dCA9IGNyZWF0ZUNvbnRleHQobnVsbCk7XG4gIGNvbnRleHQuZGlzcGxheU5hbWUgPSBuYW1lMjtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5fX25hbWUoY3JlYXRlTnVsbGFibGVDb250ZXh0LCBcImNyZWF0ZU51bGxhYmxlQ29udGV4dFwiKTtcbl9fbmFtZSRnKGNyZWF0ZU51bGxhYmxlQ29udGV4dCwgXCJjcmVhdGVOdWxsYWJsZUNvbnRleHRcIik7XG5mdW5jdGlvbiBjcmVhdGVDb250ZXh0SG9vayhjb250ZXh0KSB7XG4gIGZ1bmN0aW9uIHVzZUdpdmVuQ29udGV4dChvcHRpb25zKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHZhbHVlID0gdXNlQ29udGV4dChjb250ZXh0KTtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMubm9uTnVsbCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVHJpZWQgdG8gdXNlIFxcYCR7KChfYSA9IG9wdGlvbnMuY2FsbGVyKSA9PSBudWxsID8gdm9pZCAwIDogX2EubmFtZSkgfHwgdXNlR2l2ZW5Db250ZXh0LmNhbGxlci5uYW1lfVxcYCB3aXRob3V0IHRoZSBuZWNlc3NhcnkgY29udGV4dC4gTWFrZSBzdXJlIHRvIHJlbmRlciB0aGUgXFxgJHtjb250ZXh0LmRpc3BsYXlOYW1lfVByb3ZpZGVyXFxgIGNvbXBvbmVudCBoaWdoZXIgdXAgdGhlIHRyZWUuYCk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBfX25hbWUodXNlR2l2ZW5Db250ZXh0LCBcInVzZUdpdmVuQ29udGV4dFwiKTtcbiAgX19uYW1lJGcodXNlR2l2ZW5Db250ZXh0LCBcInVzZUdpdmVuQ29udGV4dFwiKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHVzZUdpdmVuQ29udGV4dCwgXCJuYW1lXCIsIHtcbiAgICB2YWx1ZTogYHVzZSR7Y29udGV4dC5kaXNwbGF5TmFtZX1gXG4gIH0pO1xuICByZXR1cm4gdXNlR2l2ZW5Db250ZXh0O1xufVxuX19uYW1lKGNyZWF0ZUNvbnRleHRIb29rLCBcImNyZWF0ZUNvbnRleHRIb29rXCIpO1xuX19uYW1lJGcoY3JlYXRlQ29udGV4dEhvb2ssIFwiY3JlYXRlQ29udGV4dEhvb2tcIik7XG52YXIgX19kZWZQcm9wJGYgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lJGYgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKCh0YXJnZXQyLCB2YWx1ZSkgPT4gX19kZWZQcm9wJGYodGFyZ2V0MiwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KSwgXCJfX25hbWUkZlwiKTtcbmNvbnN0IFN0b3JhZ2VDb250ZXh0ID0gY3JlYXRlTnVsbGFibGVDb250ZXh0KFwiU3RvcmFnZUNvbnRleHRcIik7XG5mdW5jdGlvbiBTdG9yYWdlQ29udGV4dFByb3ZpZGVyKHByb3BzKSB7XG4gIGNvbnN0IGlzSW5pdGlhbFJlbmRlciA9IHVzZVJlZih0cnVlKTtcbiAgY29uc3QgW3N0b3JhZ2UsIHNldFN0b3JhZ2VdID0gdXNlU3RhdGUobmV3IFN0b3JhZ2VBUEkocHJvcHMuc3RvcmFnZSkpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc0luaXRpYWxSZW5kZXIuY3VycmVudCkge1xuICAgICAgaXNJbml0aWFsUmVuZGVyLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U3RvcmFnZShuZXcgU3RvcmFnZUFQSShwcm9wcy5zdG9yYWdlKSk7XG4gICAgfVxuICB9LCBbcHJvcHMuc3RvcmFnZV0pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChTdG9yYWdlQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBzdG9yYWdlLFxuICAgIGNoaWxkcmVuOiBwcm9wcy5jaGlsZHJlblxuICB9KTtcbn1cbl9fbmFtZShTdG9yYWdlQ29udGV4dFByb3ZpZGVyLCBcIlN0b3JhZ2VDb250ZXh0UHJvdmlkZXJcIik7XG5fX25hbWUkZihTdG9yYWdlQ29udGV4dFByb3ZpZGVyLCBcIlN0b3JhZ2VDb250ZXh0UHJvdmlkZXJcIik7XG5jb25zdCB1c2VTdG9yYWdlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHRIb29rKFN0b3JhZ2VDb250ZXh0KTtcbnZhciBEb2N1bWVudFVyaTtcbihmdW5jdGlvbihEb2N1bWVudFVyaTIpIHtcbiAgZnVuY3Rpb24gaXModmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgRG9jdW1lbnRVcmkyLmlzID0gaXM7XG59KShEb2N1bWVudFVyaSB8fCAoRG9jdW1lbnRVcmkgPSB7fSkpO1xudmFyIFVSSTtcbihmdW5jdGlvbihVUkkyKSB7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIjtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIFVSSTIuaXMgPSBpcztcbn0pKFVSSSB8fCAoVVJJID0ge30pKTtcbnZhciBpbnRlZ2VyO1xuKGZ1bmN0aW9uKGludGVnZXIyKSB7XG4gIGludGVnZXIyLk1JTl9WQUxVRSA9IC0yMTQ3NDgzNjQ4O1xuICBpbnRlZ2VyMi5NQVhfVkFMVUUgPSAyMTQ3NDgzNjQ3O1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgaW50ZWdlcjIuTUlOX1ZBTFVFIDw9IHZhbHVlICYmIHZhbHVlIDw9IGludGVnZXIyLk1BWF9WQUxVRTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIGludGVnZXIyLmlzID0gaXM7XG59KShpbnRlZ2VyIHx8IChpbnRlZ2VyID0ge30pKTtcbnZhciB1aW50ZWdlcjtcbihmdW5jdGlvbih1aW50ZWdlcjIpIHtcbiAgdWludGVnZXIyLk1JTl9WQUxVRSA9IDA7XG4gIHVpbnRlZ2VyMi5NQVhfVkFMVUUgPSAyMTQ3NDgzNjQ3O1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgdWludGVnZXIyLk1JTl9WQUxVRSA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSB1aW50ZWdlcjIuTUFYX1ZBTFVFO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgdWludGVnZXIyLmlzID0gaXM7XG59KSh1aW50ZWdlciB8fCAodWludGVnZXIgPSB7fSkpO1xudmFyIFBvc2l0aW9uO1xuKGZ1bmN0aW9uKFBvc2l0aW9uMikge1xuICBmdW5jdGlvbiBjcmVhdGUobGluZSwgY2hhcmFjdGVyKSB7XG4gICAgaWYgKGxpbmUgPT09IE51bWJlci5NQVhfVkFMVUUpIHtcbiAgICAgIGxpbmUgPSB1aW50ZWdlci5NQVhfVkFMVUU7XG4gICAgfVxuICAgIGlmIChjaGFyYWN0ZXIgPT09IE51bWJlci5NQVhfVkFMVUUpIHtcbiAgICAgIGNoYXJhY3RlciA9IHVpbnRlZ2VyLk1BWF9WQUxVRTtcbiAgICB9XG4gICAgcmV0dXJuIHsgbGluZSwgY2hhcmFjdGVyIH07XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIFBvc2l0aW9uMi5jcmVhdGUgPSBjcmVhdGU7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBJcy5vYmplY3RMaXRlcmFsKGNhbmRpZGF0ZSkgJiYgSXMudWludGVnZXIoY2FuZGlkYXRlLmxpbmUpICYmIElzLnVpbnRlZ2VyKGNhbmRpZGF0ZS5jaGFyYWN0ZXIpO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgUG9zaXRpb24yLmlzID0gaXM7XG59KShQb3NpdGlvbiB8fCAoUG9zaXRpb24gPSB7fSkpO1xudmFyIFJhbmdlO1xuKGZ1bmN0aW9uKFJhbmdlMikge1xuICBmdW5jdGlvbiBjcmVhdGUob25lLCB0d28sIHRocmVlLCBmb3VyKSB7XG4gICAgaWYgKElzLnVpbnRlZ2VyKG9uZSkgJiYgSXMudWludGVnZXIodHdvKSAmJiBJcy51aW50ZWdlcih0aHJlZSkgJiYgSXMudWludGVnZXIoZm91cikpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0OiBQb3NpdGlvbi5jcmVhdGUob25lLCB0d28pLCBlbmQ6IFBvc2l0aW9uLmNyZWF0ZSh0aHJlZSwgZm91cikgfTtcbiAgICB9IGVsc2UgaWYgKFBvc2l0aW9uLmlzKG9uZSkgJiYgUG9zaXRpb24uaXModHdvKSkge1xuICAgICAgcmV0dXJuIHsgc3RhcnQ6IG9uZSwgZW5kOiB0d28gfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmFuZ2UjY3JlYXRlIGNhbGxlZCB3aXRoIGludmFsaWQgYXJndW1lbnRzW1wiLmNvbmNhdChvbmUsIFwiLCBcIikuY29uY2F0KHR3bywgXCIsIFwiKS5jb25jYXQodGhyZWUsIFwiLCBcIikuY29uY2F0KGZvdXIsIFwiXVwiKSk7XG4gICAgfVxuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBSYW5nZTIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMub2JqZWN0TGl0ZXJhbChjYW5kaWRhdGUpICYmIFBvc2l0aW9uLmlzKGNhbmRpZGF0ZS5zdGFydCkgJiYgUG9zaXRpb24uaXMoY2FuZGlkYXRlLmVuZCk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBSYW5nZTIuaXMgPSBpcztcbn0pKFJhbmdlIHx8IChSYW5nZSA9IHt9KSk7XG52YXIgTG9jYXRpb247XG4oZnVuY3Rpb24oTG9jYXRpb24yKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZSh1cmksIHJhbmdlMikge1xuICAgIHJldHVybiB7IHVyaSwgcmFuZ2U6IHJhbmdlMiB9O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBMb2NhdGlvbjIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMuZGVmaW5lZChjYW5kaWRhdGUpICYmIFJhbmdlLmlzKGNhbmRpZGF0ZS5yYW5nZSkgJiYgKElzLnN0cmluZyhjYW5kaWRhdGUudXJpKSB8fCBJcy51bmRlZmluZWQoY2FuZGlkYXRlLnVyaSkpO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgTG9jYXRpb24yLmlzID0gaXM7XG59KShMb2NhdGlvbiB8fCAoTG9jYXRpb24gPSB7fSkpO1xudmFyIExvY2F0aW9uTGluaztcbihmdW5jdGlvbihMb2NhdGlvbkxpbmsyKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZSh0YXJnZXRVcmksIHRhcmdldFJhbmdlLCB0YXJnZXRTZWxlY3Rpb25SYW5nZSwgb3JpZ2luU2VsZWN0aW9uUmFuZ2UpIHtcbiAgICByZXR1cm4geyB0YXJnZXRVcmksIHRhcmdldFJhbmdlLCB0YXJnZXRTZWxlY3Rpb25SYW5nZSwgb3JpZ2luU2VsZWN0aW9uUmFuZ2UgfTtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgTG9jYXRpb25MaW5rMi5jcmVhdGUgPSBjcmVhdGU7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBJcy5kZWZpbmVkKGNhbmRpZGF0ZSkgJiYgUmFuZ2UuaXMoY2FuZGlkYXRlLnRhcmdldFJhbmdlKSAmJiBJcy5zdHJpbmcoY2FuZGlkYXRlLnRhcmdldFVyaSkgJiYgUmFuZ2UuaXMoY2FuZGlkYXRlLnRhcmdldFNlbGVjdGlvblJhbmdlKSAmJiAoUmFuZ2UuaXMoY2FuZGlkYXRlLm9yaWdpblNlbGVjdGlvblJhbmdlKSB8fCBJcy51bmRlZmluZWQoY2FuZGlkYXRlLm9yaWdpblNlbGVjdGlvblJhbmdlKSk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBMb2NhdGlvbkxpbmsyLmlzID0gaXM7XG59KShMb2NhdGlvbkxpbmsgfHwgKExvY2F0aW9uTGluayA9IHt9KSk7XG52YXIgQ29sb3I7XG4oZnVuY3Rpb24oQ29sb3IyKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZShyZWQsIGdyZWVuLCBibHVlLCBhbHBoYTIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVkLFxuICAgICAgZ3JlZW4sXG4gICAgICBibHVlLFxuICAgICAgYWxwaGE6IGFscGhhMlxuICAgIH07XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIENvbG9yMi5jcmVhdGUgPSBjcmVhdGU7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBJcy5vYmplY3RMaXRlcmFsKGNhbmRpZGF0ZSkgJiYgSXMubnVtYmVyUmFuZ2UoY2FuZGlkYXRlLnJlZCwgMCwgMSkgJiYgSXMubnVtYmVyUmFuZ2UoY2FuZGlkYXRlLmdyZWVuLCAwLCAxKSAmJiBJcy5udW1iZXJSYW5nZShjYW5kaWRhdGUuYmx1ZSwgMCwgMSkgJiYgSXMubnVtYmVyUmFuZ2UoY2FuZGlkYXRlLmFscGhhLCAwLCAxKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIENvbG9yMi5pcyA9IGlzO1xufSkoQ29sb3IgfHwgKENvbG9yID0ge30pKTtcbnZhciBDb2xvckluZm9ybWF0aW9uO1xuKGZ1bmN0aW9uKENvbG9ySW5mb3JtYXRpb24yKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZShyYW5nZTIsIGNvbG9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJhbmdlOiByYW5nZTIsXG4gICAgICBjb2xvclxuICAgIH07XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIENvbG9ySW5mb3JtYXRpb24yLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgZnVuY3Rpb24gaXModmFsdWUpIHtcbiAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIElzLm9iamVjdExpdGVyYWwoY2FuZGlkYXRlKSAmJiBSYW5nZS5pcyhjYW5kaWRhdGUucmFuZ2UpICYmIENvbG9yLmlzKGNhbmRpZGF0ZS5jb2xvcik7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBDb2xvckluZm9ybWF0aW9uMi5pcyA9IGlzO1xufSkoQ29sb3JJbmZvcm1hdGlvbiB8fCAoQ29sb3JJbmZvcm1hdGlvbiA9IHt9KSk7XG52YXIgQ29sb3JQcmVzZW50YXRpb247XG4oZnVuY3Rpb24oQ29sb3JQcmVzZW50YXRpb24yKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZShsYWJlbCwgdGV4dEVkaXQsIGFkZGl0aW9uYWxUZXh0RWRpdHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWwsXG4gICAgICB0ZXh0RWRpdCxcbiAgICAgIGFkZGl0aW9uYWxUZXh0RWRpdHNcbiAgICB9O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBDb2xvclByZXNlbnRhdGlvbjIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMub2JqZWN0TGl0ZXJhbChjYW5kaWRhdGUpICYmIElzLnN0cmluZyhjYW5kaWRhdGUubGFiZWwpICYmIChJcy51bmRlZmluZWQoY2FuZGlkYXRlLnRleHRFZGl0KSB8fCBUZXh0RWRpdC5pcyhjYW5kaWRhdGUpKSAmJiAoSXMudW5kZWZpbmVkKGNhbmRpZGF0ZS5hZGRpdGlvbmFsVGV4dEVkaXRzKSB8fCBJcy50eXBlZEFycmF5KGNhbmRpZGF0ZS5hZGRpdGlvbmFsVGV4dEVkaXRzLCBUZXh0RWRpdC5pcykpO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgQ29sb3JQcmVzZW50YXRpb24yLmlzID0gaXM7XG59KShDb2xvclByZXNlbnRhdGlvbiB8fCAoQ29sb3JQcmVzZW50YXRpb24gPSB7fSkpO1xudmFyIEZvbGRpbmdSYW5nZUtpbmQ7XG4oZnVuY3Rpb24oRm9sZGluZ1JhbmdlS2luZDIpIHtcbiAgRm9sZGluZ1JhbmdlS2luZDIuQ29tbWVudCA9IFwiY29tbWVudFwiO1xuICBGb2xkaW5nUmFuZ2VLaW5kMi5JbXBvcnRzID0gXCJpbXBvcnRzXCI7XG4gIEZvbGRpbmdSYW5nZUtpbmQyLlJlZ2lvbiA9IFwicmVnaW9uXCI7XG59KShGb2xkaW5nUmFuZ2VLaW5kIHx8IChGb2xkaW5nUmFuZ2VLaW5kID0ge30pKTtcbnZhciBGb2xkaW5nUmFuZ2U7XG4oZnVuY3Rpb24oRm9sZGluZ1JhbmdlMikge1xuICBmdW5jdGlvbiBjcmVhdGUoc3RhcnRMaW5lLCBlbmRMaW5lLCBzdGFydENoYXJhY3RlciwgZW5kQ2hhcmFjdGVyLCBraW5kLCBjb2xsYXBzZWRUZXh0KSB7XG4gICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgIHN0YXJ0TGluZSxcbiAgICAgIGVuZExpbmVcbiAgICB9O1xuICAgIGlmIChJcy5kZWZpbmVkKHN0YXJ0Q2hhcmFjdGVyKSkge1xuICAgICAgcmVzdWx0LnN0YXJ0Q2hhcmFjdGVyID0gc3RhcnRDaGFyYWN0ZXI7XG4gICAgfVxuICAgIGlmIChJcy5kZWZpbmVkKGVuZENoYXJhY3RlcikpIHtcbiAgICAgIHJlc3VsdC5lbmRDaGFyYWN0ZXIgPSBlbmRDaGFyYWN0ZXI7XG4gICAgfVxuICAgIGlmIChJcy5kZWZpbmVkKGtpbmQpKSB7XG4gICAgICByZXN1bHQua2luZCA9IGtpbmQ7XG4gICAgfVxuICAgIGlmIChJcy5kZWZpbmVkKGNvbGxhcHNlZFRleHQpKSB7XG4gICAgICByZXN1bHQuY29sbGFwc2VkVGV4dCA9IGNvbGxhcHNlZFRleHQ7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIEZvbGRpbmdSYW5nZTIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMub2JqZWN0TGl0ZXJhbChjYW5kaWRhdGUpICYmIElzLnVpbnRlZ2VyKGNhbmRpZGF0ZS5zdGFydExpbmUpICYmIElzLnVpbnRlZ2VyKGNhbmRpZGF0ZS5zdGFydExpbmUpICYmIChJcy51bmRlZmluZWQoY2FuZGlkYXRlLnN0YXJ0Q2hhcmFjdGVyKSB8fCBJcy51aW50ZWdlcihjYW5kaWRhdGUuc3RhcnRDaGFyYWN0ZXIpKSAmJiAoSXMudW5kZWZpbmVkKGNhbmRpZGF0ZS5lbmRDaGFyYWN0ZXIpIHx8IElzLnVpbnRlZ2VyKGNhbmRpZGF0ZS5lbmRDaGFyYWN0ZXIpKSAmJiAoSXMudW5kZWZpbmVkKGNhbmRpZGF0ZS5raW5kKSB8fCBJcy5zdHJpbmcoY2FuZGlkYXRlLmtpbmQpKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIEZvbGRpbmdSYW5nZTIuaXMgPSBpcztcbn0pKEZvbGRpbmdSYW5nZSB8fCAoRm9sZGluZ1JhbmdlID0ge30pKTtcbnZhciBEaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uO1xuKGZ1bmN0aW9uKERpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb24yKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZShsb2NhdGlvbiwgbWVzc2FnZSkge1xuICAgIHJldHVybiB7XG4gICAgICBsb2NhdGlvbixcbiAgICAgIG1lc3NhZ2VcbiAgICB9O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBEaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uMi5jcmVhdGUgPSBjcmVhdGU7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBJcy5kZWZpbmVkKGNhbmRpZGF0ZSkgJiYgTG9jYXRpb24uaXMoY2FuZGlkYXRlLmxvY2F0aW9uKSAmJiBJcy5zdHJpbmcoY2FuZGlkYXRlLm1lc3NhZ2UpO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbjIuaXMgPSBpcztcbn0pKERpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb24gfHwgKERpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb24gPSB7fSkpO1xudmFyIERpYWdub3N0aWNTZXZlcml0eTtcbihmdW5jdGlvbihEaWFnbm9zdGljU2V2ZXJpdHkyKSB7XG4gIERpYWdub3N0aWNTZXZlcml0eTIuRXJyb3IgPSAxO1xuICBEaWFnbm9zdGljU2V2ZXJpdHkyLldhcm5pbmcgPSAyO1xuICBEaWFnbm9zdGljU2V2ZXJpdHkyLkluZm9ybWF0aW9uID0gMztcbiAgRGlhZ25vc3RpY1NldmVyaXR5Mi5IaW50ID0gNDtcbn0pKERpYWdub3N0aWNTZXZlcml0eSB8fCAoRGlhZ25vc3RpY1NldmVyaXR5ID0ge30pKTtcbnZhciBEaWFnbm9zdGljVGFnO1xuKGZ1bmN0aW9uKERpYWdub3N0aWNUYWcyKSB7XG4gIERpYWdub3N0aWNUYWcyLlVubmVjZXNzYXJ5ID0gMTtcbiAgRGlhZ25vc3RpY1RhZzIuRGVwcmVjYXRlZCA9IDI7XG59KShEaWFnbm9zdGljVGFnIHx8IChEaWFnbm9zdGljVGFnID0ge30pKTtcbnZhciBDb2RlRGVzY3JpcHRpb247XG4oZnVuY3Rpb24oQ29kZURlc2NyaXB0aW9uMikge1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMub2JqZWN0TGl0ZXJhbChjYW5kaWRhdGUpICYmIElzLnN0cmluZyhjYW5kaWRhdGUuaHJlZik7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBDb2RlRGVzY3JpcHRpb24yLmlzID0gaXM7XG59KShDb2RlRGVzY3JpcHRpb24gfHwgKENvZGVEZXNjcmlwdGlvbiA9IHt9KSk7XG52YXIgRGlhZ25vc3RpYztcbihmdW5jdGlvbihEaWFnbm9zdGljMikge1xuICBmdW5jdGlvbiBjcmVhdGUocmFuZ2UyLCBtZXNzYWdlLCBzZXZlcml0eSwgY29kZTMsIHNvdXJjZSwgcmVsYXRlZEluZm9ybWF0aW9uKSB7XG4gICAgdmFyIHJlc3VsdCA9IHsgcmFuZ2U6IHJhbmdlMiwgbWVzc2FnZSB9O1xuICAgIGlmIChJcy5kZWZpbmVkKHNldmVyaXR5KSkge1xuICAgICAgcmVzdWx0LnNldmVyaXR5ID0gc2V2ZXJpdHk7XG4gICAgfVxuICAgIGlmIChJcy5kZWZpbmVkKGNvZGUzKSkge1xuICAgICAgcmVzdWx0LmNvZGUgPSBjb2RlMztcbiAgICB9XG4gICAgaWYgKElzLmRlZmluZWQoc291cmNlKSkge1xuICAgICAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcbiAgICB9XG4gICAgaWYgKElzLmRlZmluZWQocmVsYXRlZEluZm9ybWF0aW9uKSkge1xuICAgICAgcmVzdWx0LnJlbGF0ZWRJbmZvcm1hdGlvbiA9IHJlbGF0ZWRJbmZvcm1hdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgRGlhZ25vc3RpYzIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIElzLmRlZmluZWQoY2FuZGlkYXRlKSAmJiBSYW5nZS5pcyhjYW5kaWRhdGUucmFuZ2UpICYmIElzLnN0cmluZyhjYW5kaWRhdGUubWVzc2FnZSkgJiYgKElzLm51bWJlcihjYW5kaWRhdGUuc2V2ZXJpdHkpIHx8IElzLnVuZGVmaW5lZChjYW5kaWRhdGUuc2V2ZXJpdHkpKSAmJiAoSXMuaW50ZWdlcihjYW5kaWRhdGUuY29kZSkgfHwgSXMuc3RyaW5nKGNhbmRpZGF0ZS5jb2RlKSB8fCBJcy51bmRlZmluZWQoY2FuZGlkYXRlLmNvZGUpKSAmJiAoSXMudW5kZWZpbmVkKGNhbmRpZGF0ZS5jb2RlRGVzY3JpcHRpb24pIHx8IElzLnN0cmluZygoX2EgPSBjYW5kaWRhdGUuY29kZURlc2NyaXB0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaHJlZikpICYmIChJcy5zdHJpbmcoY2FuZGlkYXRlLnNvdXJjZSkgfHwgSXMudW5kZWZpbmVkKGNhbmRpZGF0ZS5zb3VyY2UpKSAmJiAoSXMudW5kZWZpbmVkKGNhbmRpZGF0ZS5yZWxhdGVkSW5mb3JtYXRpb24pIHx8IElzLnR5cGVkQXJyYXkoY2FuZGlkYXRlLnJlbGF0ZWRJbmZvcm1hdGlvbiwgRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbi5pcykpO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgRGlhZ25vc3RpYzIuaXMgPSBpcztcbn0pKERpYWdub3N0aWMgfHwgKERpYWdub3N0aWMgPSB7fSkpO1xudmFyIENvbW1hbmQ7XG4oZnVuY3Rpb24oQ29tbWFuZDIpIHtcbiAgZnVuY3Rpb24gY3JlYXRlKHRpdGxlLCBjb21tYW5kKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgYXJnc1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IHsgdGl0bGUsIGNvbW1hbmQgfTtcbiAgICBpZiAoSXMuZGVmaW5lZChhcmdzKSAmJiBhcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc3VsdC5hcmd1bWVudHMgPSBhcmdzO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBDb21tYW5kMi5jcmVhdGUgPSBjcmVhdGU7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBJcy5kZWZpbmVkKGNhbmRpZGF0ZSkgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS50aXRsZSkgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS5jb21tYW5kKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIENvbW1hbmQyLmlzID0gaXM7XG59KShDb21tYW5kIHx8IChDb21tYW5kID0ge30pKTtcbnZhciBUZXh0RWRpdDtcbihmdW5jdGlvbihUZXh0RWRpdDIpIHtcbiAgZnVuY3Rpb24gcmVwbGFjZTIocmFuZ2UyLCBuZXdUZXh0KSB7XG4gICAgcmV0dXJuIHsgcmFuZ2U6IHJhbmdlMiwgbmV3VGV4dCB9O1xuICB9XG4gIF9fbmFtZShyZXBsYWNlMiwgXCJyZXBsYWNlXCIpO1xuICBUZXh0RWRpdDIucmVwbGFjZSA9IHJlcGxhY2UyO1xuICBmdW5jdGlvbiBpbnNlcnQocG9zaXRpb24sIG5ld1RleHQpIHtcbiAgICByZXR1cm4geyByYW5nZTogeyBzdGFydDogcG9zaXRpb24sIGVuZDogcG9zaXRpb24gfSwgbmV3VGV4dCB9O1xuICB9XG4gIF9fbmFtZShpbnNlcnQsIFwiaW5zZXJ0XCIpO1xuICBUZXh0RWRpdDIuaW5zZXJ0ID0gaW5zZXJ0O1xuICBmdW5jdGlvbiBkZWwocmFuZ2UyKSB7XG4gICAgcmV0dXJuIHsgcmFuZ2U6IHJhbmdlMiwgbmV3VGV4dDogXCJcIiB9O1xuICB9XG4gIF9fbmFtZShkZWwsIFwiZGVsXCIpO1xuICBUZXh0RWRpdDIuZGVsID0gZGVsO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMub2JqZWN0TGl0ZXJhbChjYW5kaWRhdGUpICYmIElzLnN0cmluZyhjYW5kaWRhdGUubmV3VGV4dCkgJiYgUmFuZ2UuaXMoY2FuZGlkYXRlLnJhbmdlKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIFRleHRFZGl0Mi5pcyA9IGlzO1xufSkoVGV4dEVkaXQgfHwgKFRleHRFZGl0ID0ge30pKTtcbnZhciBDaGFuZ2VBbm5vdGF0aW9uO1xuKGZ1bmN0aW9uKENoYW5nZUFubm90YXRpb24yKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZShsYWJlbCwgbmVlZHNDb25maXJtYXRpb24sIGRlc2NyaXB0aW9uKSB7XG4gICAgdmFyIHJlc3VsdCA9IHsgbGFiZWwgfTtcbiAgICBpZiAobmVlZHNDb25maXJtYXRpb24gIT09IHZvaWQgMCkge1xuICAgICAgcmVzdWx0Lm5lZWRzQ29uZmlybWF0aW9uID0gbmVlZHNDb25maXJtYXRpb247XG4gICAgfVxuICAgIGlmIChkZXNjcmlwdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgICByZXN1bHQuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgQ2hhbmdlQW5ub3RhdGlvbjIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMub2JqZWN0TGl0ZXJhbChjYW5kaWRhdGUpICYmIElzLnN0cmluZyhjYW5kaWRhdGUubGFiZWwpICYmIChJcy5ib29sZWFuKGNhbmRpZGF0ZS5uZWVkc0NvbmZpcm1hdGlvbikgfHwgY2FuZGlkYXRlLm5lZWRzQ29uZmlybWF0aW9uID09PSB2b2lkIDApICYmIChJcy5zdHJpbmcoY2FuZGlkYXRlLmRlc2NyaXB0aW9uKSB8fCBjYW5kaWRhdGUuZGVzY3JpcHRpb24gPT09IHZvaWQgMCk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBDaGFuZ2VBbm5vdGF0aW9uMi5pcyA9IGlzO1xufSkoQ2hhbmdlQW5ub3RhdGlvbiB8fCAoQ2hhbmdlQW5ub3RhdGlvbiA9IHt9KSk7XG52YXIgQ2hhbmdlQW5ub3RhdGlvbklkZW50aWZpZXI7XG4oZnVuY3Rpb24oQ2hhbmdlQW5ub3RhdGlvbklkZW50aWZpZXIyKSB7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBJcy5zdHJpbmcoY2FuZGlkYXRlKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIENoYW5nZUFubm90YXRpb25JZGVudGlmaWVyMi5pcyA9IGlzO1xufSkoQ2hhbmdlQW5ub3RhdGlvbklkZW50aWZpZXIgfHwgKENoYW5nZUFubm90YXRpb25JZGVudGlmaWVyID0ge30pKTtcbnZhciBBbm5vdGF0ZWRUZXh0RWRpdDtcbihmdW5jdGlvbihBbm5vdGF0ZWRUZXh0RWRpdDIpIHtcbiAgZnVuY3Rpb24gcmVwbGFjZTIocmFuZ2UyLCBuZXdUZXh0LCBhbm5vdGF0aW9uKSB7XG4gICAgcmV0dXJuIHsgcmFuZ2U6IHJhbmdlMiwgbmV3VGV4dCwgYW5ub3RhdGlvbklkOiBhbm5vdGF0aW9uIH07XG4gIH1cbiAgX19uYW1lKHJlcGxhY2UyLCBcInJlcGxhY2VcIik7XG4gIEFubm90YXRlZFRleHRFZGl0Mi5yZXBsYWNlID0gcmVwbGFjZTI7XG4gIGZ1bmN0aW9uIGluc2VydChwb3NpdGlvbiwgbmV3VGV4dCwgYW5ub3RhdGlvbikge1xuICAgIHJldHVybiB7IHJhbmdlOiB7IHN0YXJ0OiBwb3NpdGlvbiwgZW5kOiBwb3NpdGlvbiB9LCBuZXdUZXh0LCBhbm5vdGF0aW9uSWQ6IGFubm90YXRpb24gfTtcbiAgfVxuICBfX25hbWUoaW5zZXJ0LCBcImluc2VydFwiKTtcbiAgQW5ub3RhdGVkVGV4dEVkaXQyLmluc2VydCA9IGluc2VydDtcbiAgZnVuY3Rpb24gZGVsKHJhbmdlMiwgYW5ub3RhdGlvbikge1xuICAgIHJldHVybiB7IHJhbmdlOiByYW5nZTIsIG5ld1RleHQ6IFwiXCIsIGFubm90YXRpb25JZDogYW5ub3RhdGlvbiB9O1xuICB9XG4gIF9fbmFtZShkZWwsIFwiZGVsXCIpO1xuICBBbm5vdGF0ZWRUZXh0RWRpdDIuZGVsID0gZGVsO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gVGV4dEVkaXQuaXMoY2FuZGlkYXRlKSAmJiAoQ2hhbmdlQW5ub3RhdGlvbi5pcyhjYW5kaWRhdGUuYW5ub3RhdGlvbklkKSB8fCBDaGFuZ2VBbm5vdGF0aW9uSWRlbnRpZmllci5pcyhjYW5kaWRhdGUuYW5ub3RhdGlvbklkKSk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBBbm5vdGF0ZWRUZXh0RWRpdDIuaXMgPSBpcztcbn0pKEFubm90YXRlZFRleHRFZGl0IHx8IChBbm5vdGF0ZWRUZXh0RWRpdCA9IHt9KSk7XG52YXIgVGV4dERvY3VtZW50RWRpdDtcbihmdW5jdGlvbihUZXh0RG9jdW1lbnRFZGl0Mikge1xuICBmdW5jdGlvbiBjcmVhdGUodGV4dERvY3VtZW50LCBlZGl0cykge1xuICAgIHJldHVybiB7IHRleHREb2N1bWVudCwgZWRpdHMgfTtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgVGV4dERvY3VtZW50RWRpdDIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMuZGVmaW5lZChjYW5kaWRhdGUpICYmIE9wdGlvbmFsVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRpZmllci5pcyhjYW5kaWRhdGUudGV4dERvY3VtZW50KSAmJiBBcnJheS5pc0FycmF5KGNhbmRpZGF0ZS5lZGl0cyk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBUZXh0RG9jdW1lbnRFZGl0Mi5pcyA9IGlzO1xufSkoVGV4dERvY3VtZW50RWRpdCB8fCAoVGV4dERvY3VtZW50RWRpdCA9IHt9KSk7XG52YXIgQ3JlYXRlRmlsZTtcbihmdW5jdGlvbihDcmVhdGVGaWxlMikge1xuICBmdW5jdGlvbiBjcmVhdGUodXJpLCBvcHRpb25zLCBhbm5vdGF0aW9uKSB7XG4gICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgIGtpbmQ6IFwiY3JlYXRlXCIsXG4gICAgICB1cmlcbiAgICB9O1xuICAgIGlmIChvcHRpb25zICE9PSB2b2lkIDAgJiYgKG9wdGlvbnMub3ZlcndyaXRlICE9PSB2b2lkIDAgfHwgb3B0aW9ucy5pZ25vcmVJZkV4aXN0cyAhPT0gdm9pZCAwKSkge1xuICAgICAgcmVzdWx0Lm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICBpZiAoYW5ub3RhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgICByZXN1bHQuYW5ub3RhdGlvbklkID0gYW5ub3RhdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgQ3JlYXRlRmlsZTIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gY2FuZGlkYXRlICYmIGNhbmRpZGF0ZS5raW5kID09PSBcImNyZWF0ZVwiICYmIElzLnN0cmluZyhjYW5kaWRhdGUudXJpKSAmJiAoY2FuZGlkYXRlLm9wdGlvbnMgPT09IHZvaWQgMCB8fCAoY2FuZGlkYXRlLm9wdGlvbnMub3ZlcndyaXRlID09PSB2b2lkIDAgfHwgSXMuYm9vbGVhbihjYW5kaWRhdGUub3B0aW9ucy5vdmVyd3JpdGUpKSAmJiAoY2FuZGlkYXRlLm9wdGlvbnMuaWdub3JlSWZFeGlzdHMgPT09IHZvaWQgMCB8fCBJcy5ib29sZWFuKGNhbmRpZGF0ZS5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpICYmIChjYW5kaWRhdGUuYW5ub3RhdGlvbklkID09PSB2b2lkIDAgfHwgQ2hhbmdlQW5ub3RhdGlvbklkZW50aWZpZXIuaXMoY2FuZGlkYXRlLmFubm90YXRpb25JZCkpO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgQ3JlYXRlRmlsZTIuaXMgPSBpcztcbn0pKENyZWF0ZUZpbGUgfHwgKENyZWF0ZUZpbGUgPSB7fSkpO1xudmFyIFJlbmFtZUZpbGU7XG4oZnVuY3Rpb24oUmVuYW1lRmlsZTIpIHtcbiAgZnVuY3Rpb24gY3JlYXRlKG9sZFVyaSwgbmV3VXJpLCBvcHRpb25zLCBhbm5vdGF0aW9uKSB7XG4gICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgIGtpbmQ6IFwicmVuYW1lXCIsXG4gICAgICBvbGRVcmksXG4gICAgICBuZXdVcmlcbiAgICB9O1xuICAgIGlmIChvcHRpb25zICE9PSB2b2lkIDAgJiYgKG9wdGlvbnMub3ZlcndyaXRlICE9PSB2b2lkIDAgfHwgb3B0aW9ucy5pZ25vcmVJZkV4aXN0cyAhPT0gdm9pZCAwKSkge1xuICAgICAgcmVzdWx0Lm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICBpZiAoYW5ub3RhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgICByZXN1bHQuYW5ub3RhdGlvbklkID0gYW5ub3RhdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgUmVuYW1lRmlsZTIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gY2FuZGlkYXRlICYmIGNhbmRpZGF0ZS5raW5kID09PSBcInJlbmFtZVwiICYmIElzLnN0cmluZyhjYW5kaWRhdGUub2xkVXJpKSAmJiBJcy5zdHJpbmcoY2FuZGlkYXRlLm5ld1VyaSkgJiYgKGNhbmRpZGF0ZS5vcHRpb25zID09PSB2b2lkIDAgfHwgKGNhbmRpZGF0ZS5vcHRpb25zLm92ZXJ3cml0ZSA9PT0gdm9pZCAwIHx8IElzLmJvb2xlYW4oY2FuZGlkYXRlLm9wdGlvbnMub3ZlcndyaXRlKSkgJiYgKGNhbmRpZGF0ZS5vcHRpb25zLmlnbm9yZUlmRXhpc3RzID09PSB2b2lkIDAgfHwgSXMuYm9vbGVhbihjYW5kaWRhdGUub3B0aW9ucy5pZ25vcmVJZkV4aXN0cykpKSAmJiAoY2FuZGlkYXRlLmFubm90YXRpb25JZCA9PT0gdm9pZCAwIHx8IENoYW5nZUFubm90YXRpb25JZGVudGlmaWVyLmlzKGNhbmRpZGF0ZS5hbm5vdGF0aW9uSWQpKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIFJlbmFtZUZpbGUyLmlzID0gaXM7XG59KShSZW5hbWVGaWxlIHx8IChSZW5hbWVGaWxlID0ge30pKTtcbnZhciBEZWxldGVGaWxlO1xuKGZ1bmN0aW9uKERlbGV0ZUZpbGUyKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZSh1cmksIG9wdGlvbnMsIGFubm90YXRpb24pIHtcbiAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAga2luZDogXCJkZWxldGVcIixcbiAgICAgIHVyaVxuICAgIH07XG4gICAgaWYgKG9wdGlvbnMgIT09IHZvaWQgMCAmJiAob3B0aW9ucy5yZWN1cnNpdmUgIT09IHZvaWQgMCB8fCBvcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzICE9PSB2b2lkIDApKSB7XG4gICAgICByZXN1bHQub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIGlmIChhbm5vdGF0aW9uICE9PSB2b2lkIDApIHtcbiAgICAgIHJlc3VsdC5hbm5vdGF0aW9uSWQgPSBhbm5vdGF0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBEZWxldGVGaWxlMi5jcmVhdGUgPSBjcmVhdGU7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBjYW5kaWRhdGUgJiYgY2FuZGlkYXRlLmtpbmQgPT09IFwiZGVsZXRlXCIgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS51cmkpICYmIChjYW5kaWRhdGUub3B0aW9ucyA9PT0gdm9pZCAwIHx8IChjYW5kaWRhdGUub3B0aW9ucy5yZWN1cnNpdmUgPT09IHZvaWQgMCB8fCBJcy5ib29sZWFuKGNhbmRpZGF0ZS5vcHRpb25zLnJlY3Vyc2l2ZSkpICYmIChjYW5kaWRhdGUub3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0cyA9PT0gdm9pZCAwIHx8IElzLmJvb2xlYW4oY2FuZGlkYXRlLm9wdGlvbnMuaWdub3JlSWZOb3RFeGlzdHMpKSkgJiYgKGNhbmRpZGF0ZS5hbm5vdGF0aW9uSWQgPT09IHZvaWQgMCB8fCBDaGFuZ2VBbm5vdGF0aW9uSWRlbnRpZmllci5pcyhjYW5kaWRhdGUuYW5ub3RhdGlvbklkKSk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBEZWxldGVGaWxlMi5pcyA9IGlzO1xufSkoRGVsZXRlRmlsZSB8fCAoRGVsZXRlRmlsZSA9IHt9KSk7XG52YXIgV29ya3NwYWNlRWRpdDtcbihmdW5jdGlvbihXb3Jrc3BhY2VFZGl0Mikge1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gY2FuZGlkYXRlICYmIChjYW5kaWRhdGUuY2hhbmdlcyAhPT0gdm9pZCAwIHx8IGNhbmRpZGF0ZS5kb2N1bWVudENoYW5nZXMgIT09IHZvaWQgMCkgJiYgKGNhbmRpZGF0ZS5kb2N1bWVudENoYW5nZXMgPT09IHZvaWQgMCB8fCBjYW5kaWRhdGUuZG9jdW1lbnRDaGFuZ2VzLmV2ZXJ5KGZ1bmN0aW9uKGNoYW5nZSkge1xuICAgICAgaWYgKElzLnN0cmluZyhjaGFuZ2Uua2luZCkpIHtcbiAgICAgICAgcmV0dXJuIENyZWF0ZUZpbGUuaXMoY2hhbmdlKSB8fCBSZW5hbWVGaWxlLmlzKGNoYW5nZSkgfHwgRGVsZXRlRmlsZS5pcyhjaGFuZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFRleHREb2N1bWVudEVkaXQuaXMoY2hhbmdlKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBXb3Jrc3BhY2VFZGl0Mi5pcyA9IGlzO1xufSkoV29ya3NwYWNlRWRpdCB8fCAoV29ya3NwYWNlRWRpdCA9IHt9KSk7XG52YXIgVGV4dEVkaXRDaGFuZ2VJbXBsID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIFRleHRFZGl0Q2hhbmdlSW1wbDIoZWRpdHMsIGNoYW5nZUFubm90YXRpb25zKSB7XG4gICAgdGhpcy5lZGl0cyA9IGVkaXRzO1xuICAgIHRoaXMuY2hhbmdlQW5ub3RhdGlvbnMgPSBjaGFuZ2VBbm5vdGF0aW9ucztcbiAgfVxuICBfX25hbWUoVGV4dEVkaXRDaGFuZ2VJbXBsMiwgXCJUZXh0RWRpdENoYW5nZUltcGxcIik7XG4gIFRleHRFZGl0Q2hhbmdlSW1wbDIucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uKHBvc2l0aW9uLCBuZXdUZXh0LCBhbm5vdGF0aW9uKSB7XG4gICAgdmFyIGVkaXQ7XG4gICAgdmFyIGlkO1xuICAgIGlmIChhbm5vdGF0aW9uID09PSB2b2lkIDApIHtcbiAgICAgIGVkaXQgPSBUZXh0RWRpdC5pbnNlcnQocG9zaXRpb24sIG5ld1RleHQpO1xuICAgIH0gZWxzZSBpZiAoQ2hhbmdlQW5ub3RhdGlvbklkZW50aWZpZXIuaXMoYW5ub3RhdGlvbikpIHtcbiAgICAgIGlkID0gYW5ub3RhdGlvbjtcbiAgICAgIGVkaXQgPSBBbm5vdGF0ZWRUZXh0RWRpdC5pbnNlcnQocG9zaXRpb24sIG5ld1RleHQsIGFubm90YXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFzc2VydENoYW5nZUFubm90YXRpb25zKHRoaXMuY2hhbmdlQW5ub3RhdGlvbnMpO1xuICAgICAgaWQgPSB0aGlzLmNoYW5nZUFubm90YXRpb25zLm1hbmFnZShhbm5vdGF0aW9uKTtcbiAgICAgIGVkaXQgPSBBbm5vdGF0ZWRUZXh0RWRpdC5pbnNlcnQocG9zaXRpb24sIG5ld1RleHQsIGlkKTtcbiAgICB9XG4gICAgdGhpcy5lZGl0cy5wdXNoKGVkaXQpO1xuICAgIGlmIChpZCAhPT0gdm9pZCAwKSB7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfVxuICB9O1xuICBUZXh0RWRpdENoYW5nZUltcGwyLnByb3RvdHlwZS5yZXBsYWNlID0gZnVuY3Rpb24ocmFuZ2UyLCBuZXdUZXh0LCBhbm5vdGF0aW9uKSB7XG4gICAgdmFyIGVkaXQ7XG4gICAgdmFyIGlkO1xuICAgIGlmIChhbm5vdGF0aW9uID09PSB2b2lkIDApIHtcbiAgICAgIGVkaXQgPSBUZXh0RWRpdC5yZXBsYWNlKHJhbmdlMiwgbmV3VGV4dCk7XG4gICAgfSBlbHNlIGlmIChDaGFuZ2VBbm5vdGF0aW9uSWRlbnRpZmllci5pcyhhbm5vdGF0aW9uKSkge1xuICAgICAgaWQgPSBhbm5vdGF0aW9uO1xuICAgICAgZWRpdCA9IEFubm90YXRlZFRleHRFZGl0LnJlcGxhY2UocmFuZ2UyLCBuZXdUZXh0LCBhbm5vdGF0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKTtcbiAgICAgIGlkID0gdGhpcy5jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UoYW5ub3RhdGlvbik7XG4gICAgICBlZGl0ID0gQW5ub3RhdGVkVGV4dEVkaXQucmVwbGFjZShyYW5nZTIsIG5ld1RleHQsIGlkKTtcbiAgICB9XG4gICAgdGhpcy5lZGl0cy5wdXNoKGVkaXQpO1xuICAgIGlmIChpZCAhPT0gdm9pZCAwKSB7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfVxuICB9O1xuICBUZXh0RWRpdENoYW5nZUltcGwyLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbihyYW5nZTIsIGFubm90YXRpb24pIHtcbiAgICB2YXIgZWRpdDtcbiAgICB2YXIgaWQ7XG4gICAgaWYgKGFubm90YXRpb24gPT09IHZvaWQgMCkge1xuICAgICAgZWRpdCA9IFRleHRFZGl0LmRlbChyYW5nZTIpO1xuICAgIH0gZWxzZSBpZiAoQ2hhbmdlQW5ub3RhdGlvbklkZW50aWZpZXIuaXMoYW5ub3RhdGlvbikpIHtcbiAgICAgIGlkID0gYW5ub3RhdGlvbjtcbiAgICAgIGVkaXQgPSBBbm5vdGF0ZWRUZXh0RWRpdC5kZWwocmFuZ2UyLCBhbm5vdGF0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKTtcbiAgICAgIGlkID0gdGhpcy5jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UoYW5ub3RhdGlvbik7XG4gICAgICBlZGl0ID0gQW5ub3RhdGVkVGV4dEVkaXQuZGVsKHJhbmdlMiwgaWQpO1xuICAgIH1cbiAgICB0aGlzLmVkaXRzLnB1c2goZWRpdCk7XG4gICAgaWYgKGlkICE9PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiBpZDtcbiAgICB9XG4gIH07XG4gIFRleHRFZGl0Q2hhbmdlSW1wbDIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGVkaXQpIHtcbiAgICB0aGlzLmVkaXRzLnB1c2goZWRpdCk7XG4gIH07XG4gIFRleHRFZGl0Q2hhbmdlSW1wbDIucHJvdG90eXBlLmFsbCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmVkaXRzO1xuICB9O1xuICBUZXh0RWRpdENoYW5nZUltcGwyLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuZWRpdHMuc3BsaWNlKDAsIHRoaXMuZWRpdHMubGVuZ3RoKTtcbiAgfTtcbiAgVGV4dEVkaXRDaGFuZ2VJbXBsMi5wcm90b3R5cGUuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnMgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUZXh0IGVkaXQgY2hhbmdlIGlzIG5vdCBjb25maWd1cmVkIHRvIG1hbmFnZSBjaGFuZ2UgYW5ub3RhdGlvbnMuXCIpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIFRleHRFZGl0Q2hhbmdlSW1wbDI7XG59KCk7XG52YXIgQ2hhbmdlQW5ub3RhdGlvbnMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gQ2hhbmdlQW5ub3RhdGlvbnMyKGFubm90YXRpb25zKSB7XG4gICAgdGhpcy5fYW5ub3RhdGlvbnMgPSBhbm5vdGF0aW9ucyA9PT0gdm9pZCAwID8gLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCkgOiBhbm5vdGF0aW9ucztcbiAgICB0aGlzLl9jb3VudGVyID0gMDtcbiAgICB0aGlzLl9zaXplID0gMDtcbiAgfVxuICBfX25hbWUoQ2hhbmdlQW5ub3RhdGlvbnMyLCBcIkNoYW5nZUFubm90YXRpb25zXCIpO1xuICBDaGFuZ2VBbm5vdGF0aW9uczIucHJvdG90eXBlLmFsbCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9hbm5vdGF0aW9ucztcbiAgfTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENoYW5nZUFubm90YXRpb25zMi5wcm90b3R5cGUsIFwic2l6ZVwiLCB7XG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zaXplO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xuICBDaGFuZ2VBbm5vdGF0aW9uczIucHJvdG90eXBlLm1hbmFnZSA9IGZ1bmN0aW9uKGlkT3JBbm5vdGF0aW9uLCBhbm5vdGF0aW9uKSB7XG4gICAgdmFyIGlkO1xuICAgIGlmIChDaGFuZ2VBbm5vdGF0aW9uSWRlbnRpZmllci5pcyhpZE9yQW5ub3RhdGlvbikpIHtcbiAgICAgIGlkID0gaWRPckFubm90YXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkID0gdGhpcy5uZXh0SWQoKTtcbiAgICAgIGFubm90YXRpb24gPSBpZE9yQW5ub3RhdGlvbjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2Fubm90YXRpb25zW2lkXSAhPT0gdm9pZCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJZCBcIi5jb25jYXQoaWQsIFwiIGlzIGFscmVhZHkgaW4gdXNlLlwiKSk7XG4gICAgfVxuICAgIGlmIChhbm5vdGF0aW9uID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGFubm90YXRpb24gcHJvdmlkZWQgZm9yIGlkIFwiLmNvbmNhdChpZCkpO1xuICAgIH1cbiAgICB0aGlzLl9hbm5vdGF0aW9uc1tpZF0gPSBhbm5vdGF0aW9uO1xuICAgIHRoaXMuX3NpemUrKztcbiAgICByZXR1cm4gaWQ7XG4gIH07XG4gIENoYW5nZUFubm90YXRpb25zMi5wcm90b3R5cGUubmV4dElkID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fY291bnRlcisrO1xuICAgIHJldHVybiB0aGlzLl9jb3VudGVyLnRvU3RyaW5nKCk7XG4gIH07XG4gIHJldHVybiBDaGFuZ2VBbm5vdGF0aW9uczI7XG59KCk7XG4oZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIFdvcmtzcGFjZUNoYW5nZSh3b3Jrc3BhY2VFZGl0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICB0aGlzLl90ZXh0RWRpdENoYW5nZXMgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBpZiAod29ya3NwYWNlRWRpdCAhPT0gdm9pZCAwKSB7XG4gICAgICB0aGlzLl93b3Jrc3BhY2VFZGl0ID0gd29ya3NwYWNlRWRpdDtcbiAgICAgIGlmICh3b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcykge1xuICAgICAgICB0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucyA9IG5ldyBDaGFuZ2VBbm5vdGF0aW9ucyh3b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zKTtcbiAgICAgICAgd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucyA9IHRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpO1xuICAgICAgICB3b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uKGNoYW5nZSkge1xuICAgICAgICAgIGlmIChUZXh0RG9jdW1lbnRFZGl0LmlzKGNoYW5nZSkpIHtcbiAgICAgICAgICAgIHZhciB0ZXh0RWRpdENoYW5nZSA9IG5ldyBUZXh0RWRpdENoYW5nZUltcGwoY2hhbmdlLmVkaXRzLCBfdGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMpO1xuICAgICAgICAgICAgX3RoaXMuX3RleHRFZGl0Q2hhbmdlc1tjaGFuZ2UudGV4dERvY3VtZW50LnVyaV0gPSB0ZXh0RWRpdENoYW5nZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh3b3Jrc3BhY2VFZGl0LmNoYW5nZXMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMod29ya3NwYWNlRWRpdC5jaGFuZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICAgIHZhciB0ZXh0RWRpdENoYW5nZSA9IG5ldyBUZXh0RWRpdENoYW5nZUltcGwod29ya3NwYWNlRWRpdC5jaGFuZ2VzW2tleV0pO1xuICAgICAgICAgIF90aGlzLl90ZXh0RWRpdENoYW5nZXNba2V5XSA9IHRleHRFZGl0Q2hhbmdlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fd29ya3NwYWNlRWRpdCA9IHt9O1xuICAgIH1cbiAgfVxuICBfX25hbWUoV29ya3NwYWNlQ2hhbmdlLCBcIldvcmtzcGFjZUNoYW5nZVwiKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdvcmtzcGFjZUNoYW5nZS5wcm90b3R5cGUsIFwiZWRpdFwiLCB7XG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpO1xuICAgICAgaWYgKHRoaXMuX2NoYW5nZUFubm90YXRpb25zICE9PSB2b2lkIDApIHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5nZUFubm90YXRpb25zLnNpemUgPT09IDApIHtcbiAgICAgICAgICB0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zID0gdm9pZCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlQW5ub3RhdGlvbnMgPSB0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZUVkaXQ7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG4gIFdvcmtzcGFjZUNoYW5nZS5wcm90b3R5cGUuZ2V0VGV4dEVkaXRDaGFuZ2UgPSBmdW5jdGlvbihrZXkpIHtcbiAgICBpZiAoT3B0aW9uYWxWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyLmlzKGtleSkpIHtcbiAgICAgIHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpO1xuICAgICAgaWYgKHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzID09PSB2b2lkIDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuXCIpO1xuICAgICAgfVxuICAgICAgdmFyIHRleHREb2N1bWVudCA9IHsgdXJpOiBrZXkudXJpLCB2ZXJzaW9uOiBrZXkudmVyc2lvbiB9O1xuICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX3RleHRFZGl0Q2hhbmdlc1t0ZXh0RG9jdW1lbnQudXJpXTtcbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIHZhciBlZGl0cyA9IFtdO1xuICAgICAgICB2YXIgdGV4dERvY3VtZW50RWRpdCA9IHtcbiAgICAgICAgICB0ZXh0RG9jdW1lbnQsXG4gICAgICAgICAgZWRpdHNcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaCh0ZXh0RG9jdW1lbnRFZGl0KTtcbiAgICAgICAgcmVzdWx0ID0gbmV3IFRleHRFZGl0Q2hhbmdlSW1wbChlZGl0cywgdGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMpO1xuICAgICAgICB0aGlzLl90ZXh0RWRpdENoYW5nZXNbdGV4dERvY3VtZW50LnVyaV0gPSByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluaXRDaGFuZ2VzKCk7XG4gICAgICBpZiAodGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VzID09PSB2b2lkIDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIG5vcm1hbCB0ZXh0IGVkaXQgY2hhbmdlcy5cIik7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fdGV4dEVkaXRDaGFuZ2VzW2tleV07XG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICB2YXIgZWRpdHMgPSBbXTtcbiAgICAgICAgdGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VzW2tleV0gPSBlZGl0cztcbiAgICAgICAgcmVzdWx0ID0gbmV3IFRleHRFZGl0Q2hhbmdlSW1wbChlZGl0cyk7XG4gICAgICAgIHRoaXMuX3RleHRFZGl0Q2hhbmdlc1trZXldID0gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH07XG4gIFdvcmtzcGFjZUNoYW5nZS5wcm90b3R5cGUuaW5pdERvY3VtZW50Q2hhbmdlcyA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyA9PT0gdm9pZCAwICYmIHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcyA9PT0gdm9pZCAwKSB7XG4gICAgICB0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucyA9IG5ldyBDaGFuZ2VBbm5vdGF0aW9ucygpO1xuICAgICAgdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMgPSBbXTtcbiAgICAgIHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlQW5ub3RhdGlvbnMgPSB0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKTtcbiAgICB9XG4gIH07XG4gIFdvcmtzcGFjZUNoYW5nZS5wcm90b3R5cGUuaW5pdENoYW5nZXMgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMgPT09IHZvaWQgMCAmJiB0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMgPT09IHZvaWQgMCkge1xuICAgICAgdGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VzID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfVxuICB9O1xuICBXb3Jrc3BhY2VDaGFuZ2UucHJvdG90eXBlLmNyZWF0ZUZpbGUgPSBmdW5jdGlvbih1cmksIG9wdGlvbnNPckFubm90YXRpb24sIG9wdGlvbnMpIHtcbiAgICB0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKTtcbiAgICBpZiAodGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMgPT09IHZvaWQgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuXCIpO1xuICAgIH1cbiAgICB2YXIgYW5ub3RhdGlvbjtcbiAgICBpZiAoQ2hhbmdlQW5ub3RhdGlvbi5pcyhvcHRpb25zT3JBbm5vdGF0aW9uKSB8fCBDaGFuZ2VBbm5vdGF0aW9uSWRlbnRpZmllci5pcyhvcHRpb25zT3JBbm5vdGF0aW9uKSkge1xuICAgICAgYW5ub3RhdGlvbiA9IG9wdGlvbnNPckFubm90YXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zT3JBbm5vdGF0aW9uO1xuICAgIH1cbiAgICB2YXIgb3BlcmF0aW9uO1xuICAgIHZhciBpZDtcbiAgICBpZiAoYW5ub3RhdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgICBvcGVyYXRpb24gPSBDcmVhdGVGaWxlLmNyZWF0ZSh1cmksIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZCA9IENoYW5nZUFubm90YXRpb25JZGVudGlmaWVyLmlzKGFubm90YXRpb24pID8gYW5ub3RhdGlvbiA6IHRoaXMuX2NoYW5nZUFubm90YXRpb25zLm1hbmFnZShhbm5vdGF0aW9uKTtcbiAgICAgIG9wZXJhdGlvbiA9IENyZWF0ZUZpbGUuY3JlYXRlKHVyaSwgb3B0aW9ucywgaWQpO1xuICAgIH1cbiAgICB0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKG9wZXJhdGlvbik7XG4gICAgaWYgKGlkICE9PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiBpZDtcbiAgICB9XG4gIH07XG4gIFdvcmtzcGFjZUNoYW5nZS5wcm90b3R5cGUucmVuYW1lRmlsZSA9IGZ1bmN0aW9uKG9sZFVyaSwgbmV3VXJpLCBvcHRpb25zT3JBbm5vdGF0aW9uLCBvcHRpb25zKSB7XG4gICAgdGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCk7XG4gICAgaWYgKHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLlwiKTtcbiAgICB9XG4gICAgdmFyIGFubm90YXRpb247XG4gICAgaWYgKENoYW5nZUFubm90YXRpb24uaXMob3B0aW9uc09yQW5ub3RhdGlvbikgfHwgQ2hhbmdlQW5ub3RhdGlvbklkZW50aWZpZXIuaXMob3B0aW9uc09yQW5ub3RhdGlvbikpIHtcbiAgICAgIGFubm90YXRpb24gPSBvcHRpb25zT3JBbm5vdGF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9uc09yQW5ub3RhdGlvbjtcbiAgICB9XG4gICAgdmFyIG9wZXJhdGlvbjtcbiAgICB2YXIgaWQ7XG4gICAgaWYgKGFubm90YXRpb24gPT09IHZvaWQgMCkge1xuICAgICAgb3BlcmF0aW9uID0gUmVuYW1lRmlsZS5jcmVhdGUob2xkVXJpLCBuZXdVcmksIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZCA9IENoYW5nZUFubm90YXRpb25JZGVudGlmaWVyLmlzKGFubm90YXRpb24pID8gYW5ub3RhdGlvbiA6IHRoaXMuX2NoYW5nZUFubm90YXRpb25zLm1hbmFnZShhbm5vdGF0aW9uKTtcbiAgICAgIG9wZXJhdGlvbiA9IFJlbmFtZUZpbGUuY3JlYXRlKG9sZFVyaSwgbmV3VXJpLCBvcHRpb25zLCBpZCk7XG4gICAgfVxuICAgIHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2gob3BlcmF0aW9uKTtcbiAgICBpZiAoaWQgIT09IHZvaWQgMCkge1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH1cbiAgfTtcbiAgV29ya3NwYWNlQ2hhbmdlLnByb3RvdHlwZS5kZWxldGVGaWxlID0gZnVuY3Rpb24odXJpLCBvcHRpb25zT3JBbm5vdGF0aW9uLCBvcHRpb25zKSB7XG4gICAgdGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCk7XG4gICAgaWYgKHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLlwiKTtcbiAgICB9XG4gICAgdmFyIGFubm90YXRpb247XG4gICAgaWYgKENoYW5nZUFubm90YXRpb24uaXMob3B0aW9uc09yQW5ub3RhdGlvbikgfHwgQ2hhbmdlQW5ub3RhdGlvbklkZW50aWZpZXIuaXMob3B0aW9uc09yQW5ub3RhdGlvbikpIHtcbiAgICAgIGFubm90YXRpb24gPSBvcHRpb25zT3JBbm5vdGF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9uc09yQW5ub3RhdGlvbjtcbiAgICB9XG4gICAgdmFyIG9wZXJhdGlvbjtcbiAgICB2YXIgaWQ7XG4gICAgaWYgKGFubm90YXRpb24gPT09IHZvaWQgMCkge1xuICAgICAgb3BlcmF0aW9uID0gRGVsZXRlRmlsZS5jcmVhdGUodXJpLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgPSBDaGFuZ2VBbm5vdGF0aW9uSWRlbnRpZmllci5pcyhhbm5vdGF0aW9uKSA/IGFubm90YXRpb24gOiB0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UoYW5ub3RhdGlvbik7XG4gICAgICBvcGVyYXRpb24gPSBEZWxldGVGaWxlLmNyZWF0ZSh1cmksIG9wdGlvbnMsIGlkKTtcbiAgICB9XG4gICAgdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChvcGVyYXRpb24pO1xuICAgIGlmIChpZCAhPT0gdm9pZCAwKSB7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfVxuICB9O1xuICByZXR1cm4gV29ya3NwYWNlQ2hhbmdlO1xufSkoKTtcbnZhciBUZXh0RG9jdW1lbnRJZGVudGlmaWVyO1xuKGZ1bmN0aW9uKFRleHREb2N1bWVudElkZW50aWZpZXIyKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZSh1cmkpIHtcbiAgICByZXR1cm4geyB1cmkgfTtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgVGV4dERvY3VtZW50SWRlbnRpZmllcjIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMuZGVmaW5lZChjYW5kaWRhdGUpICYmIElzLnN0cmluZyhjYW5kaWRhdGUudXJpKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIFRleHREb2N1bWVudElkZW50aWZpZXIyLmlzID0gaXM7XG59KShUZXh0RG9jdW1lbnRJZGVudGlmaWVyIHx8IChUZXh0RG9jdW1lbnRJZGVudGlmaWVyID0ge30pKTtcbnZhciBWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyO1xuKGZ1bmN0aW9uKFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIyKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZSh1cmksIHZlcnNpb24pIHtcbiAgICByZXR1cm4geyB1cmksIHZlcnNpb24gfTtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRpZmllcjIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMuZGVmaW5lZChjYW5kaWRhdGUpICYmIElzLnN0cmluZyhjYW5kaWRhdGUudXJpKSAmJiBJcy5pbnRlZ2VyKGNhbmRpZGF0ZS52ZXJzaW9uKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIyLmlzID0gaXM7XG59KShWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyIHx8IChWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyID0ge30pKTtcbnZhciBPcHRpb25hbFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXI7XG4oZnVuY3Rpb24oT3B0aW9uYWxWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyMikge1xuICBmdW5jdGlvbiBjcmVhdGUodXJpLCB2ZXJzaW9uKSB7XG4gICAgcmV0dXJuIHsgdXJpLCB2ZXJzaW9uIH07XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIE9wdGlvbmFsVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRpZmllcjIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMuZGVmaW5lZChjYW5kaWRhdGUpICYmIElzLnN0cmluZyhjYW5kaWRhdGUudXJpKSAmJiAoY2FuZGlkYXRlLnZlcnNpb24gPT09IG51bGwgfHwgSXMuaW50ZWdlcihjYW5kaWRhdGUudmVyc2lvbikpO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgT3B0aW9uYWxWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyMi5pcyA9IGlzO1xufSkoT3B0aW9uYWxWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyIHx8IChPcHRpb25hbFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIgPSB7fSkpO1xudmFyIFRleHREb2N1bWVudEl0ZW07XG4oZnVuY3Rpb24oVGV4dERvY3VtZW50SXRlbTIpIHtcbiAgZnVuY3Rpb24gY3JlYXRlKHVyaSwgbGFuZ3VhZ2VJZCwgdmVyc2lvbiwgdGV4dDMpIHtcbiAgICByZXR1cm4geyB1cmksIGxhbmd1YWdlSWQsIHZlcnNpb24sIHRleHQ6IHRleHQzIH07XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIFRleHREb2N1bWVudEl0ZW0yLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgZnVuY3Rpb24gaXModmFsdWUpIHtcbiAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIElzLmRlZmluZWQoY2FuZGlkYXRlKSAmJiBJcy5zdHJpbmcoY2FuZGlkYXRlLnVyaSkgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS5sYW5ndWFnZUlkKSAmJiBJcy5pbnRlZ2VyKGNhbmRpZGF0ZS52ZXJzaW9uKSAmJiBJcy5zdHJpbmcoY2FuZGlkYXRlLnRleHQpO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgVGV4dERvY3VtZW50SXRlbTIuaXMgPSBpcztcbn0pKFRleHREb2N1bWVudEl0ZW0gfHwgKFRleHREb2N1bWVudEl0ZW0gPSB7fSkpO1xudmFyIE1hcmt1cEtpbmQ7XG4oZnVuY3Rpb24oTWFya3VwS2luZDIpIHtcbiAgTWFya3VwS2luZDIuUGxhaW5UZXh0ID0gXCJwbGFpbnRleHRcIjtcbiAgTWFya3VwS2luZDIuTWFya2Rvd24gPSBcIm1hcmtkb3duXCI7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBjYW5kaWRhdGUgPT09IE1hcmt1cEtpbmQyLlBsYWluVGV4dCB8fCBjYW5kaWRhdGUgPT09IE1hcmt1cEtpbmQyLk1hcmtkb3duO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgTWFya3VwS2luZDIuaXMgPSBpcztcbn0pKE1hcmt1cEtpbmQgfHwgKE1hcmt1cEtpbmQgPSB7fSkpO1xudmFyIE1hcmt1cENvbnRlbnQ7XG4oZnVuY3Rpb24oTWFya3VwQ29udGVudDIpIHtcbiAgZnVuY3Rpb24gaXModmFsdWUpIHtcbiAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIElzLm9iamVjdExpdGVyYWwodmFsdWUpICYmIE1hcmt1cEtpbmQuaXMoY2FuZGlkYXRlLmtpbmQpICYmIElzLnN0cmluZyhjYW5kaWRhdGUudmFsdWUpO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgTWFya3VwQ29udGVudDIuaXMgPSBpcztcbn0pKE1hcmt1cENvbnRlbnQgfHwgKE1hcmt1cENvbnRlbnQgPSB7fSkpO1xudmFyIENvbXBsZXRpb25JdGVtS2luZCQxO1xuKGZ1bmN0aW9uKENvbXBsZXRpb25JdGVtS2luZDIpIHtcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5UZXh0ID0gMTtcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5NZXRob2QgPSAyO1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLkZ1bmN0aW9uID0gMztcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5Db25zdHJ1Y3RvciA9IDQ7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuRmllbGQgPSA1O1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLlZhcmlhYmxlID0gNjtcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5DbGFzcyA9IDc7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuSW50ZXJmYWNlID0gODtcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5Nb2R1bGUgPSA5O1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLlByb3BlcnR5ID0gMTA7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuVW5pdCA9IDExO1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLlZhbHVlID0gMTI7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuRW51bSA9IDEzO1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLktleXdvcmQgPSAxNDtcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5TbmlwcGV0ID0gMTU7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuQ29sb3IgPSAxNjtcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5GaWxlID0gMTc7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuUmVmZXJlbmNlID0gMTg7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuRm9sZGVyID0gMTk7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuRW51bU1lbWJlciA9IDIwO1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLkNvbnN0YW50ID0gMjE7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuU3RydWN0ID0gMjI7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuRXZlbnQgPSAyMztcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5PcGVyYXRvciA9IDI0O1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLlR5cGVQYXJhbWV0ZXIgPSAyNTtcbn0pKENvbXBsZXRpb25JdGVtS2luZCQxIHx8IChDb21wbGV0aW9uSXRlbUtpbmQkMSA9IHt9KSk7XG52YXIgSW5zZXJ0VGV4dEZvcm1hdDtcbihmdW5jdGlvbihJbnNlcnRUZXh0Rm9ybWF0Mikge1xuICBJbnNlcnRUZXh0Rm9ybWF0Mi5QbGFpblRleHQgPSAxO1xuICBJbnNlcnRUZXh0Rm9ybWF0Mi5TbmlwcGV0ID0gMjtcbn0pKEluc2VydFRleHRGb3JtYXQgfHwgKEluc2VydFRleHRGb3JtYXQgPSB7fSkpO1xudmFyIENvbXBsZXRpb25JdGVtVGFnO1xuKGZ1bmN0aW9uKENvbXBsZXRpb25JdGVtVGFnMikge1xuICBDb21wbGV0aW9uSXRlbVRhZzIuRGVwcmVjYXRlZCA9IDE7XG59KShDb21wbGV0aW9uSXRlbVRhZyB8fCAoQ29tcGxldGlvbkl0ZW1UYWcgPSB7fSkpO1xudmFyIEluc2VydFJlcGxhY2VFZGl0O1xuKGZ1bmN0aW9uKEluc2VydFJlcGxhY2VFZGl0Mikge1xuICBmdW5jdGlvbiBjcmVhdGUobmV3VGV4dCwgaW5zZXJ0LCByZXBsYWNlMikge1xuICAgIHJldHVybiB7IG5ld1RleHQsIGluc2VydCwgcmVwbGFjZTogcmVwbGFjZTIgfTtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgSW5zZXJ0UmVwbGFjZUVkaXQyLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgZnVuY3Rpb24gaXModmFsdWUpIHtcbiAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIGNhbmRpZGF0ZSAmJiBJcy5zdHJpbmcoY2FuZGlkYXRlLm5ld1RleHQpICYmIFJhbmdlLmlzKGNhbmRpZGF0ZS5pbnNlcnQpICYmIFJhbmdlLmlzKGNhbmRpZGF0ZS5yZXBsYWNlKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIEluc2VydFJlcGxhY2VFZGl0Mi5pcyA9IGlzO1xufSkoSW5zZXJ0UmVwbGFjZUVkaXQgfHwgKEluc2VydFJlcGxhY2VFZGl0ID0ge30pKTtcbnZhciBJbnNlcnRUZXh0TW9kZTtcbihmdW5jdGlvbihJbnNlcnRUZXh0TW9kZTIpIHtcbiAgSW5zZXJ0VGV4dE1vZGUyLmFzSXMgPSAxO1xuICBJbnNlcnRUZXh0TW9kZTIuYWRqdXN0SW5kZW50YXRpb24gPSAyO1xufSkoSW5zZXJ0VGV4dE1vZGUgfHwgKEluc2VydFRleHRNb2RlID0ge30pKTtcbnZhciBDb21wbGV0aW9uSXRlbUxhYmVsRGV0YWlscztcbihmdW5jdGlvbihDb21wbGV0aW9uSXRlbUxhYmVsRGV0YWlsczIpIHtcbiAgZnVuY3Rpb24gaXModmFsdWUpIHtcbiAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIGNhbmRpZGF0ZSAmJiAoSXMuc3RyaW5nKGNhbmRpZGF0ZS5kZXRhaWwpIHx8IGNhbmRpZGF0ZS5kZXRhaWwgPT09IHZvaWQgMCkgJiYgKElzLnN0cmluZyhjYW5kaWRhdGUuZGVzY3JpcHRpb24pIHx8IGNhbmRpZGF0ZS5kZXNjcmlwdGlvbiA9PT0gdm9pZCAwKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIENvbXBsZXRpb25JdGVtTGFiZWxEZXRhaWxzMi5pcyA9IGlzO1xufSkoQ29tcGxldGlvbkl0ZW1MYWJlbERldGFpbHMgfHwgKENvbXBsZXRpb25JdGVtTGFiZWxEZXRhaWxzID0ge30pKTtcbnZhciBDb21wbGV0aW9uSXRlbTtcbihmdW5jdGlvbihDb21wbGV0aW9uSXRlbTIpIHtcbiAgZnVuY3Rpb24gY3JlYXRlKGxhYmVsKSB7XG4gICAgcmV0dXJuIHsgbGFiZWwgfTtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgQ29tcGxldGlvbkl0ZW0yLmNyZWF0ZSA9IGNyZWF0ZTtcbn0pKENvbXBsZXRpb25JdGVtIHx8IChDb21wbGV0aW9uSXRlbSA9IHt9KSk7XG52YXIgQ29tcGxldGlvbkxpc3Q7XG4oZnVuY3Rpb24oQ29tcGxldGlvbkxpc3QyKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZShpdGVtcywgaXNJbmNvbXBsZXRlKSB7XG4gICAgcmV0dXJuIHsgaXRlbXM6IGl0ZW1zID8gaXRlbXMgOiBbXSwgaXNJbmNvbXBsZXRlOiAhIWlzSW5jb21wbGV0ZSB9O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBDb21wbGV0aW9uTGlzdDIuY3JlYXRlID0gY3JlYXRlO1xufSkoQ29tcGxldGlvbkxpc3QgfHwgKENvbXBsZXRpb25MaXN0ID0ge30pKTtcbnZhciBNYXJrZWRTdHJpbmc7XG4oZnVuY3Rpb24oTWFya2VkU3RyaW5nMikge1xuICBmdW5jdGlvbiBmcm9tUGxhaW5UZXh0KHBsYWluVGV4dCkge1xuICAgIHJldHVybiBwbGFpblRleHQucmVwbGFjZSgvW1xcXFxgKl97fVtcXF0oKSMrXFwtLiFdL2csIFwiXFxcXCQmXCIpO1xuICB9XG4gIF9fbmFtZShmcm9tUGxhaW5UZXh0LCBcImZyb21QbGFpblRleHRcIik7XG4gIE1hcmtlZFN0cmluZzIuZnJvbVBsYWluVGV4dCA9IGZyb21QbGFpblRleHQ7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBJcy5zdHJpbmcoY2FuZGlkYXRlKSB8fCBJcy5vYmplY3RMaXRlcmFsKGNhbmRpZGF0ZSkgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS5sYW5ndWFnZSkgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS52YWx1ZSk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBNYXJrZWRTdHJpbmcyLmlzID0gaXM7XG59KShNYXJrZWRTdHJpbmcgfHwgKE1hcmtlZFN0cmluZyA9IHt9KSk7XG52YXIgSG92ZXI7XG4oZnVuY3Rpb24oSG92ZXIyKSB7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiAhIWNhbmRpZGF0ZSAmJiBJcy5vYmplY3RMaXRlcmFsKGNhbmRpZGF0ZSkgJiYgKE1hcmt1cENvbnRlbnQuaXMoY2FuZGlkYXRlLmNvbnRlbnRzKSB8fCBNYXJrZWRTdHJpbmcuaXMoY2FuZGlkYXRlLmNvbnRlbnRzKSB8fCBJcy50eXBlZEFycmF5KGNhbmRpZGF0ZS5jb250ZW50cywgTWFya2VkU3RyaW5nLmlzKSkgJiYgKHZhbHVlLnJhbmdlID09PSB2b2lkIDAgfHwgUmFuZ2UuaXModmFsdWUucmFuZ2UpKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIEhvdmVyMi5pcyA9IGlzO1xufSkoSG92ZXIgfHwgKEhvdmVyID0ge30pKTtcbnZhciBQYXJhbWV0ZXJJbmZvcm1hdGlvbjtcbihmdW5jdGlvbihQYXJhbWV0ZXJJbmZvcm1hdGlvbjIpIHtcbiAgZnVuY3Rpb24gY3JlYXRlKGxhYmVsLCBkb2N1bWVudGF0aW9uKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50YXRpb24gPyB7IGxhYmVsLCBkb2N1bWVudGF0aW9uIH0gOiB7IGxhYmVsIH07XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIFBhcmFtZXRlckluZm9ybWF0aW9uMi5jcmVhdGUgPSBjcmVhdGU7XG59KShQYXJhbWV0ZXJJbmZvcm1hdGlvbiB8fCAoUGFyYW1ldGVySW5mb3JtYXRpb24gPSB7fSkpO1xudmFyIFNpZ25hdHVyZUluZm9ybWF0aW9uO1xuKGZ1bmN0aW9uKFNpZ25hdHVyZUluZm9ybWF0aW9uMikge1xuICBmdW5jdGlvbiBjcmVhdGUobGFiZWwsIGRvY3VtZW50YXRpb24pIHtcbiAgICB2YXIgcGFyYW1ldGVycyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMjsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICBwYXJhbWV0ZXJzW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0geyBsYWJlbCB9O1xuICAgIGlmIChJcy5kZWZpbmVkKGRvY3VtZW50YXRpb24pKSB7XG4gICAgICByZXN1bHQuZG9jdW1lbnRhdGlvbiA9IGRvY3VtZW50YXRpb247XG4gICAgfVxuICAgIGlmIChJcy5kZWZpbmVkKHBhcmFtZXRlcnMpKSB7XG4gICAgICByZXN1bHQucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wYXJhbWV0ZXJzID0gW107XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIFNpZ25hdHVyZUluZm9ybWF0aW9uMi5jcmVhdGUgPSBjcmVhdGU7XG59KShTaWduYXR1cmVJbmZvcm1hdGlvbiB8fCAoU2lnbmF0dXJlSW5mb3JtYXRpb24gPSB7fSkpO1xudmFyIERvY3VtZW50SGlnaGxpZ2h0S2luZDtcbihmdW5jdGlvbihEb2N1bWVudEhpZ2hsaWdodEtpbmQyKSB7XG4gIERvY3VtZW50SGlnaGxpZ2h0S2luZDIuVGV4dCA9IDE7XG4gIERvY3VtZW50SGlnaGxpZ2h0S2luZDIuUmVhZCA9IDI7XG4gIERvY3VtZW50SGlnaGxpZ2h0S2luZDIuV3JpdGUgPSAzO1xufSkoRG9jdW1lbnRIaWdobGlnaHRLaW5kIHx8IChEb2N1bWVudEhpZ2hsaWdodEtpbmQgPSB7fSkpO1xudmFyIERvY3VtZW50SGlnaGxpZ2h0O1xuKGZ1bmN0aW9uKERvY3VtZW50SGlnaGxpZ2h0Mikge1xuICBmdW5jdGlvbiBjcmVhdGUocmFuZ2UyLCBraW5kKSB7XG4gICAgdmFyIHJlc3VsdCA9IHsgcmFuZ2U6IHJhbmdlMiB9O1xuICAgIGlmIChJcy5udW1iZXIoa2luZCkpIHtcbiAgICAgIHJlc3VsdC5raW5kID0ga2luZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgRG9jdW1lbnRIaWdobGlnaHQyLmNyZWF0ZSA9IGNyZWF0ZTtcbn0pKERvY3VtZW50SGlnaGxpZ2h0IHx8IChEb2N1bWVudEhpZ2hsaWdodCA9IHt9KSk7XG52YXIgU3ltYm9sS2luZDtcbihmdW5jdGlvbihTeW1ib2xLaW5kMikge1xuICBTeW1ib2xLaW5kMi5GaWxlID0gMTtcbiAgU3ltYm9sS2luZDIuTW9kdWxlID0gMjtcbiAgU3ltYm9sS2luZDIuTmFtZXNwYWNlID0gMztcbiAgU3ltYm9sS2luZDIuUGFja2FnZSA9IDQ7XG4gIFN5bWJvbEtpbmQyLkNsYXNzID0gNTtcbiAgU3ltYm9sS2luZDIuTWV0aG9kID0gNjtcbiAgU3ltYm9sS2luZDIuUHJvcGVydHkgPSA3O1xuICBTeW1ib2xLaW5kMi5GaWVsZCA9IDg7XG4gIFN5bWJvbEtpbmQyLkNvbnN0cnVjdG9yID0gOTtcbiAgU3ltYm9sS2luZDIuRW51bSA9IDEwO1xuICBTeW1ib2xLaW5kMi5JbnRlcmZhY2UgPSAxMTtcbiAgU3ltYm9sS2luZDIuRnVuY3Rpb24gPSAxMjtcbiAgU3ltYm9sS2luZDIuVmFyaWFibGUgPSAxMztcbiAgU3ltYm9sS2luZDIuQ29uc3RhbnQgPSAxNDtcbiAgU3ltYm9sS2luZDIuU3RyaW5nID0gMTU7XG4gIFN5bWJvbEtpbmQyLk51bWJlciA9IDE2O1xuICBTeW1ib2xLaW5kMi5Cb29sZWFuID0gMTc7XG4gIFN5bWJvbEtpbmQyLkFycmF5ID0gMTg7XG4gIFN5bWJvbEtpbmQyLk9iamVjdCA9IDE5O1xuICBTeW1ib2xLaW5kMi5LZXkgPSAyMDtcbiAgU3ltYm9sS2luZDIuTnVsbCA9IDIxO1xuICBTeW1ib2xLaW5kMi5FbnVtTWVtYmVyID0gMjI7XG4gIFN5bWJvbEtpbmQyLlN0cnVjdCA9IDIzO1xuICBTeW1ib2xLaW5kMi5FdmVudCA9IDI0O1xuICBTeW1ib2xLaW5kMi5PcGVyYXRvciA9IDI1O1xuICBTeW1ib2xLaW5kMi5UeXBlUGFyYW1ldGVyID0gMjY7XG59KShTeW1ib2xLaW5kIHx8IChTeW1ib2xLaW5kID0ge30pKTtcbnZhciBTeW1ib2xUYWc7XG4oZnVuY3Rpb24oU3ltYm9sVGFnMikge1xuICBTeW1ib2xUYWcyLkRlcHJlY2F0ZWQgPSAxO1xufSkoU3ltYm9sVGFnIHx8IChTeW1ib2xUYWcgPSB7fSkpO1xudmFyIFN5bWJvbEluZm9ybWF0aW9uO1xuKGZ1bmN0aW9uKFN5bWJvbEluZm9ybWF0aW9uMikge1xuICBmdW5jdGlvbiBjcmVhdGUobmFtZTIsIGtpbmQsIHJhbmdlMiwgdXJpLCBjb250YWluZXJOYW1lKSB7XG4gICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgIG5hbWU6IG5hbWUyLFxuICAgICAga2luZCxcbiAgICAgIGxvY2F0aW9uOiB7IHVyaSwgcmFuZ2U6IHJhbmdlMiB9XG4gICAgfTtcbiAgICBpZiAoY29udGFpbmVyTmFtZSkge1xuICAgICAgcmVzdWx0LmNvbnRhaW5lck5hbWUgPSBjb250YWluZXJOYW1lO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBTeW1ib2xJbmZvcm1hdGlvbjIuY3JlYXRlID0gY3JlYXRlO1xufSkoU3ltYm9sSW5mb3JtYXRpb24gfHwgKFN5bWJvbEluZm9ybWF0aW9uID0ge30pKTtcbnZhciBXb3Jrc3BhY2VTeW1ib2w7XG4oZnVuY3Rpb24oV29ya3NwYWNlU3ltYm9sMikge1xuICBmdW5jdGlvbiBjcmVhdGUobmFtZTIsIGtpbmQsIHVyaSwgcmFuZ2UyKSB7XG4gICAgcmV0dXJuIHJhbmdlMiAhPT0gdm9pZCAwID8geyBuYW1lOiBuYW1lMiwga2luZCwgbG9jYXRpb246IHsgdXJpLCByYW5nZTogcmFuZ2UyIH0gfSA6IHsgbmFtZTogbmFtZTIsIGtpbmQsIGxvY2F0aW9uOiB7IHVyaSB9IH07XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIFdvcmtzcGFjZVN5bWJvbDIuY3JlYXRlID0gY3JlYXRlO1xufSkoV29ya3NwYWNlU3ltYm9sIHx8IChXb3Jrc3BhY2VTeW1ib2wgPSB7fSkpO1xudmFyIERvY3VtZW50U3ltYm9sO1xuKGZ1bmN0aW9uKERvY3VtZW50U3ltYm9sMikge1xuICBmdW5jdGlvbiBjcmVhdGUobmFtZTIsIGRldGFpbCwga2luZCwgcmFuZ2UyLCBzZWxlY3Rpb25SYW5nZSwgY2hpbGRyZW4pIHtcbiAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgbmFtZTogbmFtZTIsXG4gICAgICBkZXRhaWwsXG4gICAgICBraW5kLFxuICAgICAgcmFuZ2U6IHJhbmdlMixcbiAgICAgIHNlbGVjdGlvblJhbmdlXG4gICAgfTtcbiAgICBpZiAoY2hpbGRyZW4gIT09IHZvaWQgMCkge1xuICAgICAgcmVzdWx0LmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIERvY3VtZW50U3ltYm9sMi5jcmVhdGUgPSBjcmVhdGU7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBjYW5kaWRhdGUgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS5uYW1lKSAmJiBJcy5udW1iZXIoY2FuZGlkYXRlLmtpbmQpICYmIFJhbmdlLmlzKGNhbmRpZGF0ZS5yYW5nZSkgJiYgUmFuZ2UuaXMoY2FuZGlkYXRlLnNlbGVjdGlvblJhbmdlKSAmJiAoY2FuZGlkYXRlLmRldGFpbCA9PT0gdm9pZCAwIHx8IElzLnN0cmluZyhjYW5kaWRhdGUuZGV0YWlsKSkgJiYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkID09PSB2b2lkIDAgfHwgSXMuYm9vbGVhbihjYW5kaWRhdGUuZGVwcmVjYXRlZCkpICYmIChjYW5kaWRhdGUuY2hpbGRyZW4gPT09IHZvaWQgMCB8fCBBcnJheS5pc0FycmF5KGNhbmRpZGF0ZS5jaGlsZHJlbikpICYmIChjYW5kaWRhdGUudGFncyA9PT0gdm9pZCAwIHx8IEFycmF5LmlzQXJyYXkoY2FuZGlkYXRlLnRhZ3MpKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIERvY3VtZW50U3ltYm9sMi5pcyA9IGlzO1xufSkoRG9jdW1lbnRTeW1ib2wgfHwgKERvY3VtZW50U3ltYm9sID0ge30pKTtcbnZhciBDb2RlQWN0aW9uS2luZDtcbihmdW5jdGlvbihDb2RlQWN0aW9uS2luZDIpIHtcbiAgQ29kZUFjdGlvbktpbmQyLkVtcHR5ID0gXCJcIjtcbiAgQ29kZUFjdGlvbktpbmQyLlF1aWNrRml4ID0gXCJxdWlja2ZpeFwiO1xuICBDb2RlQWN0aW9uS2luZDIuUmVmYWN0b3IgPSBcInJlZmFjdG9yXCI7XG4gIENvZGVBY3Rpb25LaW5kMi5SZWZhY3RvckV4dHJhY3QgPSBcInJlZmFjdG9yLmV4dHJhY3RcIjtcbiAgQ29kZUFjdGlvbktpbmQyLlJlZmFjdG9ySW5saW5lID0gXCJyZWZhY3Rvci5pbmxpbmVcIjtcbiAgQ29kZUFjdGlvbktpbmQyLlJlZmFjdG9yUmV3cml0ZSA9IFwicmVmYWN0b3IucmV3cml0ZVwiO1xuICBDb2RlQWN0aW9uS2luZDIuU291cmNlID0gXCJzb3VyY2VcIjtcbiAgQ29kZUFjdGlvbktpbmQyLlNvdXJjZU9yZ2FuaXplSW1wb3J0cyA9IFwic291cmNlLm9yZ2FuaXplSW1wb3J0c1wiO1xuICBDb2RlQWN0aW9uS2luZDIuU291cmNlRml4QWxsID0gXCJzb3VyY2UuZml4QWxsXCI7XG59KShDb2RlQWN0aW9uS2luZCB8fCAoQ29kZUFjdGlvbktpbmQgPSB7fSkpO1xudmFyIENvZGVBY3Rpb25UcmlnZ2VyS2luZDtcbihmdW5jdGlvbihDb2RlQWN0aW9uVHJpZ2dlcktpbmQyKSB7XG4gIENvZGVBY3Rpb25UcmlnZ2VyS2luZDIuSW52b2tlZCA9IDE7XG4gIENvZGVBY3Rpb25UcmlnZ2VyS2luZDIuQXV0b21hdGljID0gMjtcbn0pKENvZGVBY3Rpb25UcmlnZ2VyS2luZCB8fCAoQ29kZUFjdGlvblRyaWdnZXJLaW5kID0ge30pKTtcbnZhciBDb2RlQWN0aW9uQ29udGV4dDtcbihmdW5jdGlvbihDb2RlQWN0aW9uQ29udGV4dDIpIHtcbiAgZnVuY3Rpb24gY3JlYXRlKGRpYWdub3N0aWNzLCBvbmx5LCB0cmlnZ2VyS2luZCkge1xuICAgIHZhciByZXN1bHQgPSB7IGRpYWdub3N0aWNzIH07XG4gICAgaWYgKG9ubHkgIT09IHZvaWQgMCAmJiBvbmx5ICE9PSBudWxsKSB7XG4gICAgICByZXN1bHQub25seSA9IG9ubHk7XG4gICAgfVxuICAgIGlmICh0cmlnZ2VyS2luZCAhPT0gdm9pZCAwICYmIHRyaWdnZXJLaW5kICE9PSBudWxsKSB7XG4gICAgICByZXN1bHQudHJpZ2dlcktpbmQgPSB0cmlnZ2VyS2luZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgQ29kZUFjdGlvbkNvbnRleHQyLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgZnVuY3Rpb24gaXModmFsdWUpIHtcbiAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIElzLmRlZmluZWQoY2FuZGlkYXRlKSAmJiBJcy50eXBlZEFycmF5KGNhbmRpZGF0ZS5kaWFnbm9zdGljcywgRGlhZ25vc3RpYy5pcykgJiYgKGNhbmRpZGF0ZS5vbmx5ID09PSB2b2lkIDAgfHwgSXMudHlwZWRBcnJheShjYW5kaWRhdGUub25seSwgSXMuc3RyaW5nKSkgJiYgKGNhbmRpZGF0ZS50cmlnZ2VyS2luZCA9PT0gdm9pZCAwIHx8IGNhbmRpZGF0ZS50cmlnZ2VyS2luZCA9PT0gQ29kZUFjdGlvblRyaWdnZXJLaW5kLkludm9rZWQgfHwgY2FuZGlkYXRlLnRyaWdnZXJLaW5kID09PSBDb2RlQWN0aW9uVHJpZ2dlcktpbmQuQXV0b21hdGljKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIENvZGVBY3Rpb25Db250ZXh0Mi5pcyA9IGlzO1xufSkoQ29kZUFjdGlvbkNvbnRleHQgfHwgKENvZGVBY3Rpb25Db250ZXh0ID0ge30pKTtcbnZhciBDb2RlQWN0aW9uO1xuKGZ1bmN0aW9uKENvZGVBY3Rpb24yKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZSh0aXRsZSwga2luZE9yQ29tbWFuZE9yRWRpdCwga2luZCkge1xuICAgIHZhciByZXN1bHQgPSB7IHRpdGxlIH07XG4gICAgdmFyIGNoZWNrS2luZCA9IHRydWU7XG4gICAgaWYgKHR5cGVvZiBraW5kT3JDb21tYW5kT3JFZGl0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjaGVja0tpbmQgPSBmYWxzZTtcbiAgICAgIHJlc3VsdC5raW5kID0ga2luZE9yQ29tbWFuZE9yRWRpdDtcbiAgICB9IGVsc2UgaWYgKENvbW1hbmQuaXMoa2luZE9yQ29tbWFuZE9yRWRpdCkpIHtcbiAgICAgIHJlc3VsdC5jb21tYW5kID0ga2luZE9yQ29tbWFuZE9yRWRpdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LmVkaXQgPSBraW5kT3JDb21tYW5kT3JFZGl0O1xuICAgIH1cbiAgICBpZiAoY2hlY2tLaW5kICYmIGtpbmQgIT09IHZvaWQgMCkge1xuICAgICAgcmVzdWx0LmtpbmQgPSBraW5kO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBDb2RlQWN0aW9uMi5jcmVhdGUgPSBjcmVhdGU7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBjYW5kaWRhdGUgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS50aXRsZSkgJiYgKGNhbmRpZGF0ZS5kaWFnbm9zdGljcyA9PT0gdm9pZCAwIHx8IElzLnR5cGVkQXJyYXkoY2FuZGlkYXRlLmRpYWdub3N0aWNzLCBEaWFnbm9zdGljLmlzKSkgJiYgKGNhbmRpZGF0ZS5raW5kID09PSB2b2lkIDAgfHwgSXMuc3RyaW5nKGNhbmRpZGF0ZS5raW5kKSkgJiYgKGNhbmRpZGF0ZS5lZGl0ICE9PSB2b2lkIDAgfHwgY2FuZGlkYXRlLmNvbW1hbmQgIT09IHZvaWQgMCkgJiYgKGNhbmRpZGF0ZS5jb21tYW5kID09PSB2b2lkIDAgfHwgQ29tbWFuZC5pcyhjYW5kaWRhdGUuY29tbWFuZCkpICYmIChjYW5kaWRhdGUuaXNQcmVmZXJyZWQgPT09IHZvaWQgMCB8fCBJcy5ib29sZWFuKGNhbmRpZGF0ZS5pc1ByZWZlcnJlZCkpICYmIChjYW5kaWRhdGUuZWRpdCA9PT0gdm9pZCAwIHx8IFdvcmtzcGFjZUVkaXQuaXMoY2FuZGlkYXRlLmVkaXQpKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIENvZGVBY3Rpb24yLmlzID0gaXM7XG59KShDb2RlQWN0aW9uIHx8IChDb2RlQWN0aW9uID0ge30pKTtcbnZhciBDb2RlTGVucztcbihmdW5jdGlvbihDb2RlTGVuczIpIHtcbiAgZnVuY3Rpb24gY3JlYXRlKHJhbmdlMiwgZGF0YSkge1xuICAgIHZhciByZXN1bHQgPSB7IHJhbmdlOiByYW5nZTIgfTtcbiAgICBpZiAoSXMuZGVmaW5lZChkYXRhKSkge1xuICAgICAgcmVzdWx0LmRhdGEgPSBkYXRhO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBDb2RlTGVuczIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMuZGVmaW5lZChjYW5kaWRhdGUpICYmIFJhbmdlLmlzKGNhbmRpZGF0ZS5yYW5nZSkgJiYgKElzLnVuZGVmaW5lZChjYW5kaWRhdGUuY29tbWFuZCkgfHwgQ29tbWFuZC5pcyhjYW5kaWRhdGUuY29tbWFuZCkpO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgQ29kZUxlbnMyLmlzID0gaXM7XG59KShDb2RlTGVucyB8fCAoQ29kZUxlbnMgPSB7fSkpO1xudmFyIEZvcm1hdHRpbmdPcHRpb25zO1xuKGZ1bmN0aW9uKEZvcm1hdHRpbmdPcHRpb25zMikge1xuICBmdW5jdGlvbiBjcmVhdGUodGFiU2l6ZSwgaW5zZXJ0U3BhY2VzKSB7XG4gICAgcmV0dXJuIHsgdGFiU2l6ZSwgaW5zZXJ0U3BhY2VzIH07XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIEZvcm1hdHRpbmdPcHRpb25zMi5jcmVhdGUgPSBjcmVhdGU7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBJcy5kZWZpbmVkKGNhbmRpZGF0ZSkgJiYgSXMudWludGVnZXIoY2FuZGlkYXRlLnRhYlNpemUpICYmIElzLmJvb2xlYW4oY2FuZGlkYXRlLmluc2VydFNwYWNlcyk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBGb3JtYXR0aW5nT3B0aW9uczIuaXMgPSBpcztcbn0pKEZvcm1hdHRpbmdPcHRpb25zIHx8IChGb3JtYXR0aW5nT3B0aW9ucyA9IHt9KSk7XG52YXIgRG9jdW1lbnRMaW5rO1xuKGZ1bmN0aW9uKERvY3VtZW50TGluazIpIHtcbiAgZnVuY3Rpb24gY3JlYXRlKHJhbmdlMiwgdGFyZ2V0MiwgZGF0YSkge1xuICAgIHJldHVybiB7IHJhbmdlOiByYW5nZTIsIHRhcmdldDogdGFyZ2V0MiwgZGF0YSB9O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBEb2N1bWVudExpbmsyLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgZnVuY3Rpb24gaXModmFsdWUpIHtcbiAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIElzLmRlZmluZWQoY2FuZGlkYXRlKSAmJiBSYW5nZS5pcyhjYW5kaWRhdGUucmFuZ2UpICYmIChJcy51bmRlZmluZWQoY2FuZGlkYXRlLnRhcmdldCkgfHwgSXMuc3RyaW5nKGNhbmRpZGF0ZS50YXJnZXQpKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIERvY3VtZW50TGluazIuaXMgPSBpcztcbn0pKERvY3VtZW50TGluayB8fCAoRG9jdW1lbnRMaW5rID0ge30pKTtcbnZhciBTZWxlY3Rpb25SYW5nZTtcbihmdW5jdGlvbihTZWxlY3Rpb25SYW5nZTIpIHtcbiAgZnVuY3Rpb24gY3JlYXRlKHJhbmdlMiwgcGFyZW50KSB7XG4gICAgcmV0dXJuIHsgcmFuZ2U6IHJhbmdlMiwgcGFyZW50IH07XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIFNlbGVjdGlvblJhbmdlMi5jcmVhdGUgPSBjcmVhdGU7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBJcy5vYmplY3RMaXRlcmFsKGNhbmRpZGF0ZSkgJiYgUmFuZ2UuaXMoY2FuZGlkYXRlLnJhbmdlKSAmJiAoY2FuZGlkYXRlLnBhcmVudCA9PT0gdm9pZCAwIHx8IFNlbGVjdGlvblJhbmdlMi5pcyhjYW5kaWRhdGUucGFyZW50KSk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBTZWxlY3Rpb25SYW5nZTIuaXMgPSBpcztcbn0pKFNlbGVjdGlvblJhbmdlIHx8IChTZWxlY3Rpb25SYW5nZSA9IHt9KSk7XG52YXIgU2VtYW50aWNUb2tlblR5cGVzO1xuKGZ1bmN0aW9uKFNlbWFudGljVG9rZW5UeXBlczIpIHtcbiAgU2VtYW50aWNUb2tlblR5cGVzMltcIm5hbWVzcGFjZVwiXSA9IFwibmFtZXNwYWNlXCI7XG4gIFNlbWFudGljVG9rZW5UeXBlczJbXCJ0eXBlXCJdID0gXCJ0eXBlXCI7XG4gIFNlbWFudGljVG9rZW5UeXBlczJbXCJjbGFzc1wiXSA9IFwiY2xhc3NcIjtcbiAgU2VtYW50aWNUb2tlblR5cGVzMltcImVudW1cIl0gPSBcImVudW1cIjtcbiAgU2VtYW50aWNUb2tlblR5cGVzMltcImludGVyZmFjZVwiXSA9IFwiaW50ZXJmYWNlXCI7XG4gIFNlbWFudGljVG9rZW5UeXBlczJbXCJzdHJ1Y3RcIl0gPSBcInN0cnVjdFwiO1xuICBTZW1hbnRpY1Rva2VuVHlwZXMyW1widHlwZVBhcmFtZXRlclwiXSA9IFwidHlwZVBhcmFtZXRlclwiO1xuICBTZW1hbnRpY1Rva2VuVHlwZXMyW1wicGFyYW1ldGVyXCJdID0gXCJwYXJhbWV0ZXJcIjtcbiAgU2VtYW50aWNUb2tlblR5cGVzMltcInZhcmlhYmxlXCJdID0gXCJ2YXJpYWJsZVwiO1xuICBTZW1hbnRpY1Rva2VuVHlwZXMyW1wicHJvcGVydHlcIl0gPSBcInByb3BlcnR5XCI7XG4gIFNlbWFudGljVG9rZW5UeXBlczJbXCJlbnVtTWVtYmVyXCJdID0gXCJlbnVtTWVtYmVyXCI7XG4gIFNlbWFudGljVG9rZW5UeXBlczJbXCJldmVudFwiXSA9IFwiZXZlbnRcIjtcbiAgU2VtYW50aWNUb2tlblR5cGVzMltcImZ1bmN0aW9uXCJdID0gXCJmdW5jdGlvblwiO1xuICBTZW1hbnRpY1Rva2VuVHlwZXMyW1wibWV0aG9kXCJdID0gXCJtZXRob2RcIjtcbiAgU2VtYW50aWNUb2tlblR5cGVzMltcIm1hY3JvXCJdID0gXCJtYWNyb1wiO1xuICBTZW1hbnRpY1Rva2VuVHlwZXMyW1wia2V5d29yZFwiXSA9IFwia2V5d29yZFwiO1xuICBTZW1hbnRpY1Rva2VuVHlwZXMyW1wibW9kaWZpZXJcIl0gPSBcIm1vZGlmaWVyXCI7XG4gIFNlbWFudGljVG9rZW5UeXBlczJbXCJjb21tZW50XCJdID0gXCJjb21tZW50XCI7XG4gIFNlbWFudGljVG9rZW5UeXBlczJbXCJzdHJpbmdcIl0gPSBcInN0cmluZ1wiO1xuICBTZW1hbnRpY1Rva2VuVHlwZXMyW1wibnVtYmVyXCJdID0gXCJudW1iZXJcIjtcbiAgU2VtYW50aWNUb2tlblR5cGVzMltcInJlZ2V4cFwiXSA9IFwicmVnZXhwXCI7XG4gIFNlbWFudGljVG9rZW5UeXBlczJbXCJvcGVyYXRvclwiXSA9IFwib3BlcmF0b3JcIjtcbiAgU2VtYW50aWNUb2tlblR5cGVzMltcImRlY29yYXRvclwiXSA9IFwiZGVjb3JhdG9yXCI7XG59KShTZW1hbnRpY1Rva2VuVHlwZXMgfHwgKFNlbWFudGljVG9rZW5UeXBlcyA9IHt9KSk7XG52YXIgU2VtYW50aWNUb2tlbk1vZGlmaWVycztcbihmdW5jdGlvbihTZW1hbnRpY1Rva2VuTW9kaWZpZXJzMikge1xuICBTZW1hbnRpY1Rva2VuTW9kaWZpZXJzMltcImRlY2xhcmF0aW9uXCJdID0gXCJkZWNsYXJhdGlvblwiO1xuICBTZW1hbnRpY1Rva2VuTW9kaWZpZXJzMltcImRlZmluaXRpb25cIl0gPSBcImRlZmluaXRpb25cIjtcbiAgU2VtYW50aWNUb2tlbk1vZGlmaWVyczJbXCJyZWFkb25seVwiXSA9IFwicmVhZG9ubHlcIjtcbiAgU2VtYW50aWNUb2tlbk1vZGlmaWVyczJbXCJzdGF0aWNcIl0gPSBcInN0YXRpY1wiO1xuICBTZW1hbnRpY1Rva2VuTW9kaWZpZXJzMltcImRlcHJlY2F0ZWRcIl0gPSBcImRlcHJlY2F0ZWRcIjtcbiAgU2VtYW50aWNUb2tlbk1vZGlmaWVyczJbXCJhYnN0cmFjdFwiXSA9IFwiYWJzdHJhY3RcIjtcbiAgU2VtYW50aWNUb2tlbk1vZGlmaWVyczJbXCJhc3luY1wiXSA9IFwiYXN5bmNcIjtcbiAgU2VtYW50aWNUb2tlbk1vZGlmaWVyczJbXCJtb2RpZmljYXRpb25cIl0gPSBcIm1vZGlmaWNhdGlvblwiO1xuICBTZW1hbnRpY1Rva2VuTW9kaWZpZXJzMltcImRvY3VtZW50YXRpb25cIl0gPSBcImRvY3VtZW50YXRpb25cIjtcbiAgU2VtYW50aWNUb2tlbk1vZGlmaWVyczJbXCJkZWZhdWx0TGlicmFyeVwiXSA9IFwiZGVmYXVsdExpYnJhcnlcIjtcbn0pKFNlbWFudGljVG9rZW5Nb2RpZmllcnMgfHwgKFNlbWFudGljVG9rZW5Nb2RpZmllcnMgPSB7fSkpO1xudmFyIFNlbWFudGljVG9rZW5zO1xuKGZ1bmN0aW9uKFNlbWFudGljVG9rZW5zMikge1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMub2JqZWN0TGl0ZXJhbChjYW5kaWRhdGUpICYmIChjYW5kaWRhdGUucmVzdWx0SWQgPT09IHZvaWQgMCB8fCB0eXBlb2YgY2FuZGlkYXRlLnJlc3VsdElkID09PSBcInN0cmluZ1wiKSAmJiBBcnJheS5pc0FycmF5KGNhbmRpZGF0ZS5kYXRhKSAmJiAoY2FuZGlkYXRlLmRhdGEubGVuZ3RoID09PSAwIHx8IHR5cGVvZiBjYW5kaWRhdGUuZGF0YVswXSA9PT0gXCJudW1iZXJcIik7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBTZW1hbnRpY1Rva2VuczIuaXMgPSBpcztcbn0pKFNlbWFudGljVG9rZW5zIHx8IChTZW1hbnRpY1Rva2VucyA9IHt9KSk7XG52YXIgSW5saW5lVmFsdWVUZXh0O1xuKGZ1bmN0aW9uKElubGluZVZhbHVlVGV4dDIpIHtcbiAgZnVuY3Rpb24gY3JlYXRlKHJhbmdlMiwgdGV4dDMpIHtcbiAgICByZXR1cm4geyByYW5nZTogcmFuZ2UyLCB0ZXh0OiB0ZXh0MyB9O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBJbmxpbmVWYWx1ZVRleHQyLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgZnVuY3Rpb24gaXModmFsdWUpIHtcbiAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIGNhbmRpZGF0ZSAhPT0gdm9pZCAwICYmIGNhbmRpZGF0ZSAhPT0gbnVsbCAmJiBSYW5nZS5pcyhjYW5kaWRhdGUucmFuZ2UpICYmIElzLnN0cmluZyhjYW5kaWRhdGUudGV4dCk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBJbmxpbmVWYWx1ZVRleHQyLmlzID0gaXM7XG59KShJbmxpbmVWYWx1ZVRleHQgfHwgKElubGluZVZhbHVlVGV4dCA9IHt9KSk7XG52YXIgSW5saW5lVmFsdWVWYXJpYWJsZUxvb2t1cDtcbihmdW5jdGlvbihJbmxpbmVWYWx1ZVZhcmlhYmxlTG9va3VwMikge1xuICBmdW5jdGlvbiBjcmVhdGUocmFuZ2UyLCB2YXJpYWJsZU5hbWUsIGNhc2VTZW5zaXRpdmVMb29rdXApIHtcbiAgICByZXR1cm4geyByYW5nZTogcmFuZ2UyLCB2YXJpYWJsZU5hbWUsIGNhc2VTZW5zaXRpdmVMb29rdXAgfTtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgSW5saW5lVmFsdWVWYXJpYWJsZUxvb2t1cDIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gY2FuZGlkYXRlICE9PSB2b2lkIDAgJiYgY2FuZGlkYXRlICE9PSBudWxsICYmIFJhbmdlLmlzKGNhbmRpZGF0ZS5yYW5nZSkgJiYgSXMuYm9vbGVhbihjYW5kaWRhdGUuY2FzZVNlbnNpdGl2ZUxvb2t1cCkgJiYgKElzLnN0cmluZyhjYW5kaWRhdGUudmFyaWFibGVOYW1lKSB8fCBjYW5kaWRhdGUudmFyaWFibGVOYW1lID09PSB2b2lkIDApO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgSW5saW5lVmFsdWVWYXJpYWJsZUxvb2t1cDIuaXMgPSBpcztcbn0pKElubGluZVZhbHVlVmFyaWFibGVMb29rdXAgfHwgKElubGluZVZhbHVlVmFyaWFibGVMb29rdXAgPSB7fSkpO1xudmFyIElubGluZVZhbHVlRXZhbHVhdGFibGVFeHByZXNzaW9uO1xuKGZ1bmN0aW9uKElubGluZVZhbHVlRXZhbHVhdGFibGVFeHByZXNzaW9uMikge1xuICBmdW5jdGlvbiBjcmVhdGUocmFuZ2UyLCBleHByZXNzaW9uKSB7XG4gICAgcmV0dXJuIHsgcmFuZ2U6IHJhbmdlMiwgZXhwcmVzc2lvbiB9O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBJbmxpbmVWYWx1ZUV2YWx1YXRhYmxlRXhwcmVzc2lvbjIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gY2FuZGlkYXRlICE9PSB2b2lkIDAgJiYgY2FuZGlkYXRlICE9PSBudWxsICYmIFJhbmdlLmlzKGNhbmRpZGF0ZS5yYW5nZSkgJiYgKElzLnN0cmluZyhjYW5kaWRhdGUuZXhwcmVzc2lvbikgfHwgY2FuZGlkYXRlLmV4cHJlc3Npb24gPT09IHZvaWQgMCk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBJbmxpbmVWYWx1ZUV2YWx1YXRhYmxlRXhwcmVzc2lvbjIuaXMgPSBpcztcbn0pKElubGluZVZhbHVlRXZhbHVhdGFibGVFeHByZXNzaW9uIHx8IChJbmxpbmVWYWx1ZUV2YWx1YXRhYmxlRXhwcmVzc2lvbiA9IHt9KSk7XG52YXIgSW5saW5lVmFsdWVDb250ZXh0O1xuKGZ1bmN0aW9uKElubGluZVZhbHVlQ29udGV4dDIpIHtcbiAgZnVuY3Rpb24gY3JlYXRlKGZyYW1lSWQsIHN0b3BwZWRMb2NhdGlvbikge1xuICAgIHJldHVybiB7IGZyYW1lSWQsIHN0b3BwZWRMb2NhdGlvbiB9O1xuICB9XG4gIF9fbmFtZShjcmVhdGUsIFwiY3JlYXRlXCIpO1xuICBJbmxpbmVWYWx1ZUNvbnRleHQyLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgZnVuY3Rpb24gaXModmFsdWUpIHtcbiAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIElzLmRlZmluZWQoY2FuZGlkYXRlKSAmJiBSYW5nZS5pcyh2YWx1ZS5zdG9wcGVkTG9jYXRpb24pO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgSW5saW5lVmFsdWVDb250ZXh0Mi5pcyA9IGlzO1xufSkoSW5saW5lVmFsdWVDb250ZXh0IHx8IChJbmxpbmVWYWx1ZUNvbnRleHQgPSB7fSkpO1xudmFyIElubGF5SGludEtpbmQ7XG4oZnVuY3Rpb24oSW5sYXlIaW50S2luZDIpIHtcbiAgSW5sYXlIaW50S2luZDIuVHlwZSA9IDE7XG4gIElubGF5SGludEtpbmQyLlBhcmFtZXRlciA9IDI7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAxIHx8IHZhbHVlID09PSAyO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgSW5sYXlIaW50S2luZDIuaXMgPSBpcztcbn0pKElubGF5SGludEtpbmQgfHwgKElubGF5SGludEtpbmQgPSB7fSkpO1xudmFyIElubGF5SGludExhYmVsUGFydDtcbihmdW5jdGlvbihJbmxheUhpbnRMYWJlbFBhcnQyKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZSh2YWx1ZSkge1xuICAgIHJldHVybiB7IHZhbHVlIH07XG4gIH1cbiAgX19uYW1lKGNyZWF0ZSwgXCJjcmVhdGVcIik7XG4gIElubGF5SGludExhYmVsUGFydDIuY3JlYXRlID0gY3JlYXRlO1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMub2JqZWN0TGl0ZXJhbChjYW5kaWRhdGUpICYmIChjYW5kaWRhdGUudG9vbHRpcCA9PT0gdm9pZCAwIHx8IElzLnN0cmluZyhjYW5kaWRhdGUudG9vbHRpcCkgfHwgTWFya3VwQ29udGVudC5pcyhjYW5kaWRhdGUudG9vbHRpcCkpICYmIChjYW5kaWRhdGUubG9jYXRpb24gPT09IHZvaWQgMCB8fCBMb2NhdGlvbi5pcyhjYW5kaWRhdGUubG9jYXRpb24pKSAmJiAoY2FuZGlkYXRlLmNvbW1hbmQgPT09IHZvaWQgMCB8fCBDb21tYW5kLmlzKGNhbmRpZGF0ZS5jb21tYW5kKSk7XG4gIH1cbiAgX19uYW1lKGlzLCBcImlzXCIpO1xuICBJbmxheUhpbnRMYWJlbFBhcnQyLmlzID0gaXM7XG59KShJbmxheUhpbnRMYWJlbFBhcnQgfHwgKElubGF5SGludExhYmVsUGFydCA9IHt9KSk7XG52YXIgSW5sYXlIaW50O1xuKGZ1bmN0aW9uKElubGF5SGludDIpIHtcbiAgZnVuY3Rpb24gY3JlYXRlKHBvc2l0aW9uLCBsYWJlbCwga2luZCkge1xuICAgIHZhciByZXN1bHQgPSB7IHBvc2l0aW9uLCBsYWJlbCB9O1xuICAgIGlmIChraW5kICE9PSB2b2lkIDApIHtcbiAgICAgIHJlc3VsdC5raW5kID0ga2luZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgSW5sYXlIaW50Mi5jcmVhdGUgPSBjcmVhdGU7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBJcy5vYmplY3RMaXRlcmFsKGNhbmRpZGF0ZSkgJiYgUG9zaXRpb24uaXMoY2FuZGlkYXRlLnBvc2l0aW9uKSAmJiAoSXMuc3RyaW5nKGNhbmRpZGF0ZS5sYWJlbCkgfHwgSXMudHlwZWRBcnJheShjYW5kaWRhdGUubGFiZWwsIElubGF5SGludExhYmVsUGFydC5pcykpICYmIChjYW5kaWRhdGUua2luZCA9PT0gdm9pZCAwIHx8IElubGF5SGludEtpbmQuaXMoY2FuZGlkYXRlLmtpbmQpKSAmJiBjYW5kaWRhdGUudGV4dEVkaXRzID09PSB2b2lkIDAgfHwgSXMudHlwZWRBcnJheShjYW5kaWRhdGUudGV4dEVkaXRzLCBUZXh0RWRpdC5pcykgJiYgKGNhbmRpZGF0ZS50b29sdGlwID09PSB2b2lkIDAgfHwgSXMuc3RyaW5nKGNhbmRpZGF0ZS50b29sdGlwKSB8fCBNYXJrdXBDb250ZW50LmlzKGNhbmRpZGF0ZS50b29sdGlwKSkgJiYgKGNhbmRpZGF0ZS5wYWRkaW5nTGVmdCA9PT0gdm9pZCAwIHx8IElzLmJvb2xlYW4oY2FuZGlkYXRlLnBhZGRpbmdMZWZ0KSkgJiYgKGNhbmRpZGF0ZS5wYWRkaW5nUmlnaHQgPT09IHZvaWQgMCB8fCBJcy5ib29sZWFuKGNhbmRpZGF0ZS5wYWRkaW5nUmlnaHQpKTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIElubGF5SGludDIuaXMgPSBpcztcbn0pKElubGF5SGludCB8fCAoSW5sYXlIaW50ID0ge30pKTtcbnZhciBXb3Jrc3BhY2VGb2xkZXI7XG4oZnVuY3Rpb24oV29ya3NwYWNlRm9sZGVyMikge1xuICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xuICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gSXMub2JqZWN0TGl0ZXJhbChjYW5kaWRhdGUpICYmIFVSSS5pcyhjYW5kaWRhdGUudXJpKSAmJiBJcy5zdHJpbmcoY2FuZGlkYXRlLm5hbWUpO1xuICB9XG4gIF9fbmFtZShpcywgXCJpc1wiKTtcbiAgV29ya3NwYWNlRm9sZGVyMi5pcyA9IGlzO1xufSkoV29ya3NwYWNlRm9sZGVyIHx8IChXb3Jrc3BhY2VGb2xkZXIgPSB7fSkpO1xudmFyIFRleHREb2N1bWVudDtcbihmdW5jdGlvbihUZXh0RG9jdW1lbnQyKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZSh1cmksIGxhbmd1YWdlSWQsIHZlcnNpb24sIGNvbnRlbnQpIHtcbiAgICByZXR1cm4gbmV3IEZ1bGxUZXh0RG9jdW1lbnQodXJpLCBsYW5ndWFnZUlkLCB2ZXJzaW9uLCBjb250ZW50KTtcbiAgfVxuICBfX25hbWUoY3JlYXRlLCBcImNyZWF0ZVwiKTtcbiAgVGV4dERvY3VtZW50Mi5jcmVhdGUgPSBjcmVhdGU7XG4gIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XG4gICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiBJcy5kZWZpbmVkKGNhbmRpZGF0ZSkgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS51cmkpICYmIChJcy51bmRlZmluZWQoY2FuZGlkYXRlLmxhbmd1YWdlSWQpIHx8IElzLnN0cmluZyhjYW5kaWRhdGUubGFuZ3VhZ2VJZCkpICYmIElzLnVpbnRlZ2VyKGNhbmRpZGF0ZS5saW5lQ291bnQpICYmIElzLmZ1bmMoY2FuZGlkYXRlLmdldFRleHQpICYmIElzLmZ1bmMoY2FuZGlkYXRlLnBvc2l0aW9uQXQpICYmIElzLmZ1bmMoY2FuZGlkYXRlLm9mZnNldEF0KSA/IHRydWUgOiBmYWxzZTtcbiAgfVxuICBfX25hbWUoaXMsIFwiaXNcIik7XG4gIFRleHREb2N1bWVudDIuaXMgPSBpcztcbiAgZnVuY3Rpb24gYXBwbHlFZGl0cyhkb2N1bWVudDIsIGVkaXRzKSB7XG4gICAgdmFyIHRleHQzID0gZG9jdW1lbnQyLmdldFRleHQoKTtcbiAgICB2YXIgc29ydGVkRWRpdHMgPSBtZXJnZVNvcnQoZWRpdHMsIGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgIHZhciBkaWZmID0gYS5yYW5nZS5zdGFydC5saW5lIC0gYi5yYW5nZS5zdGFydC5saW5lO1xuICAgICAgaWYgKGRpZmYgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGEucmFuZ2Uuc3RhcnQuY2hhcmFjdGVyIC0gYi5yYW5nZS5zdGFydC5jaGFyYWN0ZXI7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGlmZjtcbiAgICB9KTtcbiAgICB2YXIgbGFzdE1vZGlmaWVkT2Zmc2V0ID0gdGV4dDMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSBzb3J0ZWRFZGl0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGUgPSBzb3J0ZWRFZGl0c1tpXTtcbiAgICAgIHZhciBzdGFydE9mZnNldCA9IGRvY3VtZW50Mi5vZmZzZXRBdChlLnJhbmdlLnN0YXJ0KTtcbiAgICAgIHZhciBlbmRPZmZzZXQgPSBkb2N1bWVudDIub2Zmc2V0QXQoZS5yYW5nZS5lbmQpO1xuICAgICAgaWYgKGVuZE9mZnNldCA8PSBsYXN0TW9kaWZpZWRPZmZzZXQpIHtcbiAgICAgICAgdGV4dDMgPSB0ZXh0My5zdWJzdHJpbmcoMCwgc3RhcnRPZmZzZXQpICsgZS5uZXdUZXh0ICsgdGV4dDMuc3Vic3RyaW5nKGVuZE9mZnNldCwgdGV4dDMubGVuZ3RoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk92ZXJsYXBwaW5nIGVkaXRcIik7XG4gICAgICB9XG4gICAgICBsYXN0TW9kaWZpZWRPZmZzZXQgPSBzdGFydE9mZnNldDtcbiAgICB9XG4gICAgcmV0dXJuIHRleHQzO1xuICB9XG4gIF9fbmFtZShhcHBseUVkaXRzLCBcImFwcGx5RWRpdHNcIik7XG4gIFRleHREb2N1bWVudDIuYXBwbHlFZGl0cyA9IGFwcGx5RWRpdHM7XG4gIGZ1bmN0aW9uIG1lcmdlU29ydChkYXRhLCBjb21wYXJlKSB7XG4gICAgaWYgKGRhdGEubGVuZ3RoIDw9IDEpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICB2YXIgcDIgPSBkYXRhLmxlbmd0aCAvIDIgfCAwO1xuICAgIHZhciBsZWZ0ID0gZGF0YS5zbGljZSgwLCBwMik7XG4gICAgdmFyIHJpZ2h0ID0gZGF0YS5zbGljZShwMik7XG4gICAgbWVyZ2VTb3J0KGxlZnQsIGNvbXBhcmUpO1xuICAgIG1lcmdlU29ydChyaWdodCwgY29tcGFyZSk7XG4gICAgdmFyIGxlZnRJZHggPSAwO1xuICAgIHZhciByaWdodElkeCA9IDA7XG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChsZWZ0SWR4IDwgbGVmdC5sZW5ndGggJiYgcmlnaHRJZHggPCByaWdodC5sZW5ndGgpIHtcbiAgICAgIHZhciByZXQgPSBjb21wYXJlKGxlZnRbbGVmdElkeF0sIHJpZ2h0W3JpZ2h0SWR4XSk7XG4gICAgICBpZiAocmV0IDw9IDApIHtcbiAgICAgICAgZGF0YVtpKytdID0gbGVmdFtsZWZ0SWR4KytdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YVtpKytdID0gcmlnaHRbcmlnaHRJZHgrK107XG4gICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChsZWZ0SWR4IDwgbGVmdC5sZW5ndGgpIHtcbiAgICAgIGRhdGFbaSsrXSA9IGxlZnRbbGVmdElkeCsrXTtcbiAgICB9XG4gICAgd2hpbGUgKHJpZ2h0SWR4IDwgcmlnaHQubGVuZ3RoKSB7XG4gICAgICBkYXRhW2krK10gPSByaWdodFtyaWdodElkeCsrXTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgX19uYW1lKG1lcmdlU29ydCwgXCJtZXJnZVNvcnRcIik7XG59KShUZXh0RG9jdW1lbnQgfHwgKFRleHREb2N1bWVudCA9IHt9KSk7XG52YXIgRnVsbFRleHREb2N1bWVudCA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBGdWxsVGV4dERvY3VtZW50Mih1cmksIGxhbmd1YWdlSWQsIHZlcnNpb24sIGNvbnRlbnQpIHtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gICAgdGhpcy5fbGFuZ3VhZ2VJZCA9IGxhbmd1YWdlSWQ7XG4gICAgdGhpcy5fdmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7XG4gICAgdGhpcy5fbGluZU9mZnNldHMgPSB2b2lkIDA7XG4gIH1cbiAgX19uYW1lKEZ1bGxUZXh0RG9jdW1lbnQyLCBcIkZ1bGxUZXh0RG9jdW1lbnRcIik7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGdWxsVGV4dERvY3VtZW50Mi5wcm90b3R5cGUsIFwidXJpXCIsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3VyaTtcbiAgICB9LFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ1bGxUZXh0RG9jdW1lbnQyLnByb3RvdHlwZSwgXCJsYW5ndWFnZUlkXCIsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlSWQ7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGdWxsVGV4dERvY3VtZW50Mi5wcm90b3R5cGUsIFwidmVyc2lvblwiLCB7XG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl92ZXJzaW9uO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xuICBGdWxsVGV4dERvY3VtZW50Mi5wcm90b3R5cGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKHJhbmdlMikge1xuICAgIGlmIChyYW5nZTIpIHtcbiAgICAgIHZhciBzdGFydCA9IHRoaXMub2Zmc2V0QXQocmFuZ2UyLnN0YXJ0KTtcbiAgICAgIHZhciBlbmQgPSB0aGlzLm9mZnNldEF0KHJhbmdlMi5lbmQpO1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29udGVudDtcbiAgfTtcbiAgRnVsbFRleHREb2N1bWVudDIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKGV2ZW50LCB2ZXJzaW9uKSB7XG4gICAgdGhpcy5fY29udGVudCA9IGV2ZW50LnRleHQ7XG4gICAgdGhpcy5fdmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy5fbGluZU9mZnNldHMgPSB2b2lkIDA7XG4gIH07XG4gIEZ1bGxUZXh0RG9jdW1lbnQyLnByb3RvdHlwZS5nZXRMaW5lT2Zmc2V0cyA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9saW5lT2Zmc2V0cyA9PT0gdm9pZCAwKSB7XG4gICAgICB2YXIgbGluZU9mZnNldHMgPSBbXTtcbiAgICAgIHZhciB0ZXh0MyA9IHRoaXMuX2NvbnRlbnQ7XG4gICAgICB2YXIgaXNMaW5lU3RhcnQgPSB0cnVlO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0My5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaXNMaW5lU3RhcnQpIHtcbiAgICAgICAgICBsaW5lT2Zmc2V0cy5wdXNoKGkpO1xuICAgICAgICAgIGlzTGluZVN0YXJ0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoID0gdGV4dDMuY2hhckF0KGkpO1xuICAgICAgICBpc0xpbmVTdGFydCA9IGNoID09PSBcIlxcclwiIHx8IGNoID09PSBcIlxcblwiO1xuICAgICAgICBpZiAoY2ggPT09IFwiXFxyXCIgJiYgaSArIDEgPCB0ZXh0My5sZW5ndGggJiYgdGV4dDMuY2hhckF0KGkgKyAxKSA9PT0gXCJcXG5cIikge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzTGluZVN0YXJ0ICYmIHRleHQzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGluZU9mZnNldHMucHVzaCh0ZXh0My5sZW5ndGgpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbGluZU9mZnNldHMgPSBsaW5lT2Zmc2V0cztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2xpbmVPZmZzZXRzO1xuICB9O1xuICBGdWxsVGV4dERvY3VtZW50Mi5wcm90b3R5cGUucG9zaXRpb25BdCA9IGZ1bmN0aW9uKG9mZnNldCkge1xuICAgIG9mZnNldCA9IE1hdGgubWF4KE1hdGgubWluKG9mZnNldCwgdGhpcy5fY29udGVudC5sZW5ndGgpLCAwKTtcbiAgICB2YXIgbGluZU9mZnNldHMgPSB0aGlzLmdldExpbmVPZmZzZXRzKCk7XG4gICAgdmFyIGxvdyA9IDAsIGhpZ2ggPSBsaW5lT2Zmc2V0cy5sZW5ndGg7XG4gICAgaWYgKGhpZ2ggPT09IDApIHtcbiAgICAgIHJldHVybiBQb3NpdGlvbi5jcmVhdGUoMCwgb2Zmc2V0KTtcbiAgICB9XG4gICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgIHZhciBtaWQyID0gTWF0aC5mbG9vcigobG93ICsgaGlnaCkgLyAyKTtcbiAgICAgIGlmIChsaW5lT2Zmc2V0c1ttaWQyXSA+IG9mZnNldCkge1xuICAgICAgICBoaWdoID0gbWlkMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvdyA9IG1pZDIgKyAxO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgbGluZSA9IGxvdyAtIDE7XG4gICAgcmV0dXJuIFBvc2l0aW9uLmNyZWF0ZShsaW5lLCBvZmZzZXQgLSBsaW5lT2Zmc2V0c1tsaW5lXSk7XG4gIH07XG4gIEZ1bGxUZXh0RG9jdW1lbnQyLnByb3RvdHlwZS5vZmZzZXRBdCA9IGZ1bmN0aW9uKHBvc2l0aW9uKSB7XG4gICAgdmFyIGxpbmVPZmZzZXRzID0gdGhpcy5nZXRMaW5lT2Zmc2V0cygpO1xuICAgIGlmIChwb3NpdGlvbi5saW5lID49IGxpbmVPZmZzZXRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb24ubGluZSA8IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB2YXIgbGluZU9mZnNldCA9IGxpbmVPZmZzZXRzW3Bvc2l0aW9uLmxpbmVdO1xuICAgIHZhciBuZXh0TGluZU9mZnNldCA9IHBvc2l0aW9uLmxpbmUgKyAxIDwgbGluZU9mZnNldHMubGVuZ3RoID8gbGluZU9mZnNldHNbcG9zaXRpb24ubGluZSArIDFdIDogdGhpcy5fY29udGVudC5sZW5ndGg7XG4gICAgcmV0dXJuIE1hdGgubWF4KE1hdGgubWluKGxpbmVPZmZzZXQgKyBwb3NpdGlvbi5jaGFyYWN0ZXIsIG5leHRMaW5lT2Zmc2V0KSwgbGluZU9mZnNldCk7XG4gIH07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGdWxsVGV4dERvY3VtZW50Mi5wcm90b3R5cGUsIFwibGluZUNvdW50XCIsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TGluZU9mZnNldHMoKS5sZW5ndGg7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG4gIHJldHVybiBGdWxsVGV4dERvY3VtZW50Mjtcbn0oKTtcbnZhciBJcztcbihmdW5jdGlvbihJczIpIHtcbiAgdmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbiAgZnVuY3Rpb24gZGVmaW5lZCh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgIT09IFwidW5kZWZpbmVkXCI7XG4gIH1cbiAgX19uYW1lKGRlZmluZWQsIFwiZGVmaW5lZFwiKTtcbiAgSXMyLmRlZmluZWQgPSBkZWZpbmVkO1xuICBmdW5jdGlvbiB1bmRlZmluZWQkMSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCI7XG4gIH1cbiAgX19uYW1lKHVuZGVmaW5lZCQxLCBcInVuZGVmaW5lZCQxXCIpO1xuICBJczIudW5kZWZpbmVkID0gdW5kZWZpbmVkJDE7XG4gIGZ1bmN0aW9uIGJvb2xlYW4odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlO1xuICB9XG4gIF9fbmFtZShib29sZWFuLCBcImJvb2xlYW5cIik7XG4gIElzMi5ib29sZWFuID0gYm9vbGVhbjtcbiAgZnVuY3Rpb24gc3RyaW5nKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSBcIltvYmplY3QgU3RyaW5nXVwiO1xuICB9XG4gIF9fbmFtZShzdHJpbmcsIFwic3RyaW5nXCIpO1xuICBJczIuc3RyaW5nID0gc3RyaW5nO1xuICBmdW5jdGlvbiBudW1iZXIodmFsdWUpIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09IFwiW29iamVjdCBOdW1iZXJdXCI7XG4gIH1cbiAgX19uYW1lKG51bWJlciwgXCJudW1iZXJcIik7XG4gIElzMi5udW1iZXIgPSBudW1iZXI7XG4gIGZ1bmN0aW9uIG51bWJlclJhbmdlKHZhbHVlLCBtaW4sIG1heCkge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiAmJiBtaW4gPD0gdmFsdWUgJiYgdmFsdWUgPD0gbWF4O1xuICB9XG4gIF9fbmFtZShudW1iZXJSYW5nZSwgXCJudW1iZXJSYW5nZVwiKTtcbiAgSXMyLm51bWJlclJhbmdlID0gbnVtYmVyUmFuZ2U7XG4gIGZ1bmN0aW9uIGludGVnZXIyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSBcIltvYmplY3QgTnVtYmVyXVwiICYmIC0yMTQ3NDgzNjQ4IDw9IHZhbHVlICYmIHZhbHVlIDw9IDIxNDc0ODM2NDc7XG4gIH1cbiAgX19uYW1lKGludGVnZXIyLCBcImludGVnZXJcIik7XG4gIElzMi5pbnRlZ2VyID0gaW50ZWdlcjI7XG4gIGZ1bmN0aW9uIHVpbnRlZ2VyMih2YWx1ZSkge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiAmJiAwIDw9IHZhbHVlICYmIHZhbHVlIDw9IDIxNDc0ODM2NDc7XG4gIH1cbiAgX19uYW1lKHVpbnRlZ2VyMiwgXCJ1aW50ZWdlclwiKTtcbiAgSXMyLnVpbnRlZ2VyID0gdWludGVnZXIyO1xuICBmdW5jdGlvbiBmdW5jKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSBcIltvYmplY3QgRnVuY3Rpb25dXCI7XG4gIH1cbiAgX19uYW1lKGZ1bmMsIFwiZnVuY1wiKTtcbiAgSXMyLmZ1bmMgPSBmdW5jO1xuICBmdW5jdGlvbiBvYmplY3RMaXRlcmFsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIjtcbiAgfVxuICBfX25hbWUob2JqZWN0TGl0ZXJhbCwgXCJvYmplY3RMaXRlcmFsXCIpO1xuICBJczIub2JqZWN0TGl0ZXJhbCA9IG9iamVjdExpdGVyYWw7XG4gIGZ1bmN0aW9uIHR5cGVkQXJyYXkodmFsdWUsIGNoZWNrMikge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5ldmVyeShjaGVjazIpO1xuICB9XG4gIF9fbmFtZSh0eXBlZEFycmF5LCBcInR5cGVkQXJyYXlcIik7XG4gIElzMi50eXBlZEFycmF5ID0gdHlwZWRBcnJheTtcbn0pKElzIHx8IChJcyA9IHt9KSk7XG52YXIgQ29tcGxldGlvbkl0ZW1LaW5kO1xuKGZ1bmN0aW9uKENvbXBsZXRpb25JdGVtS2luZDIpIHtcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5UZXh0ID0gMTtcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5NZXRob2QgPSAyO1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLkZ1bmN0aW9uID0gMztcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5Db25zdHJ1Y3RvciA9IDQ7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuRmllbGQgPSA1O1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLlZhcmlhYmxlID0gNjtcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5DbGFzcyA9IDc7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuSW50ZXJmYWNlID0gODtcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5Nb2R1bGUgPSA5O1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLlByb3BlcnR5ID0gMTA7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuVW5pdCA9IDExO1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLlZhbHVlID0gMTI7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuRW51bSA9IDEzO1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLktleXdvcmQgPSAxNDtcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5TbmlwcGV0ID0gMTU7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuQ29sb3IgPSAxNjtcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5GaWxlID0gMTc7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuUmVmZXJlbmNlID0gMTg7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuRm9sZGVyID0gMTk7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuRW51bU1lbWJlciA9IDIwO1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLkNvbnN0YW50ID0gMjE7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuU3RydWN0ID0gMjI7XG4gIENvbXBsZXRpb25JdGVtS2luZDIuRXZlbnQgPSAyMztcbiAgQ29tcGxldGlvbkl0ZW1LaW5kMi5PcGVyYXRvciA9IDI0O1xuICBDb21wbGV0aW9uSXRlbUtpbmQyLlR5cGVQYXJhbWV0ZXIgPSAyNTtcbn0pKENvbXBsZXRpb25JdGVtS2luZCB8fCAoQ29tcGxldGlvbkl0ZW1LaW5kID0ge30pKTtcbmZ1bmN0aW9uIG9wdChvZlJ1bGUpIHtcbiAgcmV0dXJuIHsgb2ZSdWxlIH07XG59XG5fX25hbWUob3B0LCBcIm9wdFwiKTtcbmZ1bmN0aW9uIGxpc3QyKG9mUnVsZSwgc2VwYXJhdG9yKSB7XG4gIHJldHVybiB7IG9mUnVsZSwgaXNMaXN0OiB0cnVlLCBzZXBhcmF0b3IgfTtcbn1cbl9fbmFtZShsaXN0MiwgXCJsaXN0XCIpO1xuZnVuY3Rpb24gYnV0Tm90KHJ1bGUsIGV4Y2x1c2lvbnMpIHtcbiAgY29uc3QgcnVsZU1hdGNoID0gcnVsZS5tYXRjaDtcbiAgcnVsZS5tYXRjaCA9ICh0b2tlbjIpID0+IHtcbiAgICBsZXQgY2hlY2syID0gZmFsc2U7XG4gICAgaWYgKHJ1bGVNYXRjaCkge1xuICAgICAgY2hlY2syID0gcnVsZU1hdGNoKHRva2VuMik7XG4gICAgfVxuICAgIHJldHVybiBjaGVjazIgJiYgZXhjbHVzaW9ucy5ldmVyeSgoZXhjbHVzaW9uKSA9PiBleGNsdXNpb24ubWF0Y2ggJiYgIWV4Y2x1c2lvbi5tYXRjaCh0b2tlbjIpKTtcbiAgfTtcbiAgcmV0dXJuIHJ1bGU7XG59XG5fX25hbWUoYnV0Tm90LCBcImJ1dE5vdFwiKTtcbmZ1bmN0aW9uIHQoa2luZCwgc3R5bGUpIHtcbiAgcmV0dXJuIHsgc3R5bGUsIG1hdGNoOiAodG9rZW4yKSA9PiB0b2tlbjIua2luZCA9PT0ga2luZCB9O1xufVxuX19uYW1lKHQsIFwidFwiKTtcbmZ1bmN0aW9uIHAodmFsdWUsIHN0eWxlKSB7XG4gIHJldHVybiB7XG4gICAgc3R5bGU6IHN0eWxlIHx8IFwicHVuY3R1YXRpb25cIixcbiAgICBtYXRjaDogKHRva2VuMikgPT4gdG9rZW4yLmtpbmQgPT09IFwiUHVuY3R1YXRpb25cIiAmJiB0b2tlbjIudmFsdWUgPT09IHZhbHVlXG4gIH07XG59XG5fX25hbWUocCwgXCJwXCIpO1xuY29uc3QgaXNJZ25vcmVkID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgoY2gpID0+IGNoID09PSBcIiBcIiB8fCBjaCA9PT0gXCJcdFwiIHx8IGNoID09PSBcIixcIiB8fCBjaCA9PT0gXCJcXG5cIiB8fCBjaCA9PT0gXCJcXHJcIiB8fCBjaCA9PT0gXCJcXHVGRUZGXCIgfHwgY2ggPT09IFwiXFx4QTBcIiwgXCJpc0lnbm9yZWRcIik7XG5jb25zdCBMZXhSdWxlcyA9IHtcbiAgTmFtZTogL15bX0EtWmEtel1bXzAtOUEtWmEtel0qLyxcbiAgUHVuY3R1YXRpb246IC9eKD86IXxcXCR8XFwofFxcKXxcXC5cXC5cXC58Onw9fCZ8QHxcXFt8XXxcXHt8XFx8fFxcfSkvLFxuICBOdW1iZXI6IC9eLT8oPzowfCg/OlsxLTldWzAtOV0qKSkoPzpcXC5bMC05XSopPyg/OltlRV1bKy1dP1swLTldKyk/LyxcbiAgU3RyaW5nOiAvXig/OlwiXCJcIig/OlxcXFxcIlwiXCJ8W15cIl18XCJbXlwiXXxcIlwiW15cIl0pKig/OlwiXCJcIik/fFwiKD86W15cIlxcXFxdfFxcXFwoPzpcInxcXC98XFxcXHxifGZ8bnxyfHR8dVswLTlhLWZBLUZdezR9KSkqXCI/KS8sXG4gIENvbW1lbnQ6IC9eIy4qL1xufTtcbmNvbnN0IFBhcnNlUnVsZXMgPSB7XG4gIERvY3VtZW50OiBbbGlzdDIoXCJEZWZpbml0aW9uXCIpXSxcbiAgRGVmaW5pdGlvbih0b2tlbjIpIHtcbiAgICBzd2l0Y2ggKHRva2VuMi52YWx1ZSkge1xuICAgICAgY2FzZSBcIntcIjpcbiAgICAgICAgcmV0dXJuIFwiU2hvcnRRdWVyeVwiO1xuICAgICAgY2FzZSBcInF1ZXJ5XCI6XG4gICAgICAgIHJldHVybiBcIlF1ZXJ5XCI7XG4gICAgICBjYXNlIFwibXV0YXRpb25cIjpcbiAgICAgICAgcmV0dXJuIFwiTXV0YXRpb25cIjtcbiAgICAgIGNhc2UgXCJzdWJzY3JpcHRpb25cIjpcbiAgICAgICAgcmV0dXJuIFwiU3Vic2NyaXB0aW9uXCI7XG4gICAgICBjYXNlIFwiZnJhZ21lbnRcIjpcbiAgICAgICAgcmV0dXJuIEtpbmQuRlJBR01FTlRfREVGSU5JVElPTjtcbiAgICAgIGNhc2UgXCJzY2hlbWFcIjpcbiAgICAgICAgcmV0dXJuIFwiU2NoZW1hRGVmXCI7XG4gICAgICBjYXNlIFwic2NhbGFyXCI6XG4gICAgICAgIHJldHVybiBcIlNjYWxhckRlZlwiO1xuICAgICAgY2FzZSBcInR5cGVcIjpcbiAgICAgICAgcmV0dXJuIFwiT2JqZWN0VHlwZURlZlwiO1xuICAgICAgY2FzZSBcImludGVyZmFjZVwiOlxuICAgICAgICByZXR1cm4gXCJJbnRlcmZhY2VEZWZcIjtcbiAgICAgIGNhc2UgXCJ1bmlvblwiOlxuICAgICAgICByZXR1cm4gXCJVbmlvbkRlZlwiO1xuICAgICAgY2FzZSBcImVudW1cIjpcbiAgICAgICAgcmV0dXJuIFwiRW51bURlZlwiO1xuICAgICAgY2FzZSBcImlucHV0XCI6XG4gICAgICAgIHJldHVybiBcIklucHV0RGVmXCI7XG4gICAgICBjYXNlIFwiZXh0ZW5kXCI6XG4gICAgICAgIHJldHVybiBcIkV4dGVuZERlZlwiO1xuICAgICAgY2FzZSBcImRpcmVjdGl2ZVwiOlxuICAgICAgICByZXR1cm4gXCJEaXJlY3RpdmVEZWZcIjtcbiAgICB9XG4gIH0sXG4gIFNob3J0UXVlcnk6IFtcIlNlbGVjdGlvblNldFwiXSxcbiAgUXVlcnk6IFtcbiAgICB3b3JkKFwicXVlcnlcIiksXG4gICAgb3B0KG5hbWUoXCJkZWZcIikpLFxuICAgIG9wdChcIlZhcmlhYmxlRGVmaW5pdGlvbnNcIiksXG4gICAgbGlzdDIoXCJEaXJlY3RpdmVcIiksXG4gICAgXCJTZWxlY3Rpb25TZXRcIlxuICBdLFxuICBNdXRhdGlvbjogW1xuICAgIHdvcmQoXCJtdXRhdGlvblwiKSxcbiAgICBvcHQobmFtZShcImRlZlwiKSksXG4gICAgb3B0KFwiVmFyaWFibGVEZWZpbml0aW9uc1wiKSxcbiAgICBsaXN0MihcIkRpcmVjdGl2ZVwiKSxcbiAgICBcIlNlbGVjdGlvblNldFwiXG4gIF0sXG4gIFN1YnNjcmlwdGlvbjogW1xuICAgIHdvcmQoXCJzdWJzY3JpcHRpb25cIiksXG4gICAgb3B0KG5hbWUoXCJkZWZcIikpLFxuICAgIG9wdChcIlZhcmlhYmxlRGVmaW5pdGlvbnNcIiksXG4gICAgbGlzdDIoXCJEaXJlY3RpdmVcIiksXG4gICAgXCJTZWxlY3Rpb25TZXRcIlxuICBdLFxuICBWYXJpYWJsZURlZmluaXRpb25zOiBbcChcIihcIiksIGxpc3QyKFwiVmFyaWFibGVEZWZpbml0aW9uXCIpLCBwKFwiKVwiKV0sXG4gIFZhcmlhYmxlRGVmaW5pdGlvbjogW1wiVmFyaWFibGVcIiwgcChcIjpcIiksIFwiVHlwZVwiLCBvcHQoXCJEZWZhdWx0VmFsdWVcIildLFxuICBWYXJpYWJsZTogW3AoXCIkXCIsIFwidmFyaWFibGVcIiksIG5hbWUoXCJ2YXJpYWJsZVwiKV0sXG4gIERlZmF1bHRWYWx1ZTogW3AoXCI9XCIpLCBcIlZhbHVlXCJdLFxuICBTZWxlY3Rpb25TZXQ6IFtwKFwie1wiKSwgbGlzdDIoXCJTZWxlY3Rpb25cIiksIHAoXCJ9XCIpXSxcbiAgU2VsZWN0aW9uKHRva2VuMiwgc3RyZWFtKSB7XG4gICAgcmV0dXJuIHRva2VuMi52YWx1ZSA9PT0gXCIuLi5cIiA/IHN0cmVhbS5tYXRjaCgvW1xcc1xcdTAwYTAsXSoob25cXGJ8QHx7KS8sIGZhbHNlKSA/IFwiSW5saW5lRnJhZ21lbnRcIiA6IFwiRnJhZ21lbnRTcHJlYWRcIiA6IHN0cmVhbS5tYXRjaCgvW1xcc1xcdTAwYTAsXSo6LywgZmFsc2UpID8gXCJBbGlhc2VkRmllbGRcIiA6IFwiRmllbGRcIjtcbiAgfSxcbiAgQWxpYXNlZEZpZWxkOiBbXG4gICAgbmFtZShcInByb3BlcnR5XCIpLFxuICAgIHAoXCI6XCIpLFxuICAgIG5hbWUoXCJxdWFsaWZpZXJcIiksXG4gICAgb3B0KFwiQXJndW1lbnRzXCIpLFxuICAgIGxpc3QyKFwiRGlyZWN0aXZlXCIpLFxuICAgIG9wdChcIlNlbGVjdGlvblNldFwiKVxuICBdLFxuICBGaWVsZDogW1xuICAgIG5hbWUoXCJwcm9wZXJ0eVwiKSxcbiAgICBvcHQoXCJBcmd1bWVudHNcIiksXG4gICAgbGlzdDIoXCJEaXJlY3RpdmVcIiksXG4gICAgb3B0KFwiU2VsZWN0aW9uU2V0XCIpXG4gIF0sXG4gIEFyZ3VtZW50czogW3AoXCIoXCIpLCBsaXN0MihcIkFyZ3VtZW50XCIpLCBwKFwiKVwiKV0sXG4gIEFyZ3VtZW50OiBbbmFtZShcImF0dHJpYnV0ZVwiKSwgcChcIjpcIiksIFwiVmFsdWVcIl0sXG4gIEZyYWdtZW50U3ByZWFkOiBbcChcIi4uLlwiKSwgbmFtZShcImRlZlwiKSwgbGlzdDIoXCJEaXJlY3RpdmVcIildLFxuICBJbmxpbmVGcmFnbWVudDogW1xuICAgIHAoXCIuLi5cIiksXG4gICAgb3B0KFwiVHlwZUNvbmRpdGlvblwiKSxcbiAgICBsaXN0MihcIkRpcmVjdGl2ZVwiKSxcbiAgICBcIlNlbGVjdGlvblNldFwiXG4gIF0sXG4gIEZyYWdtZW50RGVmaW5pdGlvbjogW1xuICAgIHdvcmQoXCJmcmFnbWVudFwiKSxcbiAgICBvcHQoYnV0Tm90KG5hbWUoXCJkZWZcIiksIFt3b3JkKFwib25cIildKSksXG4gICAgXCJUeXBlQ29uZGl0aW9uXCIsXG4gICAgbGlzdDIoXCJEaXJlY3RpdmVcIiksXG4gICAgXCJTZWxlY3Rpb25TZXRcIlxuICBdLFxuICBUeXBlQ29uZGl0aW9uOiBbd29yZChcIm9uXCIpLCBcIk5hbWVkVHlwZVwiXSxcbiAgVmFsdWUodG9rZW4yKSB7XG4gICAgc3dpdGNoICh0b2tlbjIua2luZCkge1xuICAgICAgY2FzZSBcIk51bWJlclwiOlxuICAgICAgICByZXR1cm4gXCJOdW1iZXJWYWx1ZVwiO1xuICAgICAgY2FzZSBcIlN0cmluZ1wiOlxuICAgICAgICByZXR1cm4gXCJTdHJpbmdWYWx1ZVwiO1xuICAgICAgY2FzZSBcIlB1bmN0dWF0aW9uXCI6XG4gICAgICAgIHN3aXRjaCAodG9rZW4yLnZhbHVlKSB7XG4gICAgICAgICAgY2FzZSBcIltcIjpcbiAgICAgICAgICAgIHJldHVybiBcIkxpc3RWYWx1ZVwiO1xuICAgICAgICAgIGNhc2UgXCJ7XCI6XG4gICAgICAgICAgICByZXR1cm4gXCJPYmplY3RWYWx1ZVwiO1xuICAgICAgICAgIGNhc2UgXCIkXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJWYXJpYWJsZVwiO1xuICAgICAgICAgIGNhc2UgXCImXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJOYW1lZFR5cGVcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNhc2UgXCJOYW1lXCI6XG4gICAgICAgIHN3aXRjaCAodG9rZW4yLnZhbHVlKSB7XG4gICAgICAgICAgY2FzZSBcInRydWVcIjpcbiAgICAgICAgICBjYXNlIFwiZmFsc2VcIjpcbiAgICAgICAgICAgIHJldHVybiBcIkJvb2xlYW5WYWx1ZVwiO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbjIudmFsdWUgPT09IFwibnVsbFwiKSB7XG4gICAgICAgICAgcmV0dXJuIFwiTnVsbFZhbHVlXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiRW51bVZhbHVlXCI7XG4gICAgfVxuICB9LFxuICBOdW1iZXJWYWx1ZTogW3QoXCJOdW1iZXJcIiwgXCJudW1iZXJcIildLFxuICBTdHJpbmdWYWx1ZTogW1xuICAgIHtcbiAgICAgIHN0eWxlOiBcInN0cmluZ1wiLFxuICAgICAgbWF0Y2g6ICh0b2tlbjIpID0+IHRva2VuMi5raW5kID09PSBcIlN0cmluZ1wiLFxuICAgICAgdXBkYXRlKHN0YXRlLCB0b2tlbjIpIHtcbiAgICAgICAgaWYgKHRva2VuMi52YWx1ZS5zdGFydHNXaXRoKCdcIlwiXCInKSkge1xuICAgICAgICAgIHN0YXRlLmluQmxvY2tzdHJpbmcgPSAhdG9rZW4yLnZhbHVlLnNsaWNlKDMpLmVuZHNXaXRoKCdcIlwiXCInKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgXSxcbiAgQm9vbGVhblZhbHVlOiBbdChcIk5hbWVcIiwgXCJidWlsdGluXCIpXSxcbiAgTnVsbFZhbHVlOiBbdChcIk5hbWVcIiwgXCJrZXl3b3JkXCIpXSxcbiAgRW51bVZhbHVlOiBbbmFtZShcInN0cmluZy0yXCIpXSxcbiAgTGlzdFZhbHVlOiBbcChcIltcIiksIGxpc3QyKFwiVmFsdWVcIiksIHAoXCJdXCIpXSxcbiAgT2JqZWN0VmFsdWU6IFtwKFwie1wiKSwgbGlzdDIoXCJPYmplY3RGaWVsZFwiKSwgcChcIn1cIildLFxuICBPYmplY3RGaWVsZDogW25hbWUoXCJhdHRyaWJ1dGVcIiksIHAoXCI6XCIpLCBcIlZhbHVlXCJdLFxuICBUeXBlKHRva2VuMikge1xuICAgIHJldHVybiB0b2tlbjIudmFsdWUgPT09IFwiW1wiID8gXCJMaXN0VHlwZVwiIDogXCJOb25OdWxsVHlwZVwiO1xuICB9LFxuICBMaXN0VHlwZTogW3AoXCJbXCIpLCBcIlR5cGVcIiwgcChcIl1cIiksIG9wdChwKFwiIVwiKSldLFxuICBOb25OdWxsVHlwZTogW1wiTmFtZWRUeXBlXCIsIG9wdChwKFwiIVwiKSldLFxuICBOYW1lZFR5cGU6IFt0eXBlKFwiYXRvbVwiKV0sXG4gIERpcmVjdGl2ZTogW3AoXCJAXCIsIFwibWV0YVwiKSwgbmFtZShcIm1ldGFcIiksIG9wdChcIkFyZ3VtZW50c1wiKV0sXG4gIERpcmVjdGl2ZURlZjogW1xuICAgIHdvcmQoXCJkaXJlY3RpdmVcIiksXG4gICAgcChcIkBcIiwgXCJtZXRhXCIpLFxuICAgIG5hbWUoXCJtZXRhXCIpLFxuICAgIG9wdChcIkFyZ3VtZW50c0RlZlwiKSxcbiAgICB3b3JkKFwib25cIiksXG4gICAgbGlzdDIoXCJEaXJlY3RpdmVMb2NhdGlvblwiLCBwKFwifFwiKSlcbiAgXSxcbiAgSW50ZXJmYWNlRGVmOiBbXG4gICAgd29yZChcImludGVyZmFjZVwiKSxcbiAgICBuYW1lKFwiYXRvbVwiKSxcbiAgICBvcHQoXCJJbXBsZW1lbnRzXCIpLFxuICAgIGxpc3QyKFwiRGlyZWN0aXZlXCIpLFxuICAgIHAoXCJ7XCIpLFxuICAgIGxpc3QyKFwiRmllbGREZWZcIiksXG4gICAgcChcIn1cIilcbiAgXSxcbiAgSW1wbGVtZW50czogW3dvcmQoXCJpbXBsZW1lbnRzXCIpLCBsaXN0MihcIk5hbWVkVHlwZVwiLCBwKFwiJlwiKSldLFxuICBEaXJlY3RpdmVMb2NhdGlvbjogW25hbWUoXCJzdHJpbmctMlwiKV0sXG4gIFNjaGVtYURlZjogW1xuICAgIHdvcmQoXCJzY2hlbWFcIiksXG4gICAgbGlzdDIoXCJEaXJlY3RpdmVcIiksXG4gICAgcChcIntcIiksXG4gICAgbGlzdDIoXCJPcGVyYXRpb25UeXBlRGVmXCIpLFxuICAgIHAoXCJ9XCIpXG4gIF0sXG4gIE9wZXJhdGlvblR5cGVEZWY6IFtuYW1lKFwia2V5d29yZFwiKSwgcChcIjpcIiksIG5hbWUoXCJhdG9tXCIpXSxcbiAgU2NhbGFyRGVmOiBbd29yZChcInNjYWxhclwiKSwgbmFtZShcImF0b21cIiksIGxpc3QyKFwiRGlyZWN0aXZlXCIpXSxcbiAgT2JqZWN0VHlwZURlZjogW1xuICAgIHdvcmQoXCJ0eXBlXCIpLFxuICAgIG5hbWUoXCJhdG9tXCIpLFxuICAgIG9wdChcIkltcGxlbWVudHNcIiksXG4gICAgbGlzdDIoXCJEaXJlY3RpdmVcIiksXG4gICAgcChcIntcIiksXG4gICAgbGlzdDIoXCJGaWVsZERlZlwiKSxcbiAgICBwKFwifVwiKVxuICBdLFxuICBGaWVsZERlZjogW1xuICAgIG5hbWUoXCJwcm9wZXJ0eVwiKSxcbiAgICBvcHQoXCJBcmd1bWVudHNEZWZcIiksXG4gICAgcChcIjpcIiksXG4gICAgXCJUeXBlXCIsXG4gICAgbGlzdDIoXCJEaXJlY3RpdmVcIilcbiAgXSxcbiAgQXJndW1lbnRzRGVmOiBbcChcIihcIiksIGxpc3QyKFwiSW5wdXRWYWx1ZURlZlwiKSwgcChcIilcIildLFxuICBJbnB1dFZhbHVlRGVmOiBbXG4gICAgbmFtZShcImF0dHJpYnV0ZVwiKSxcbiAgICBwKFwiOlwiKSxcbiAgICBcIlR5cGVcIixcbiAgICBvcHQoXCJEZWZhdWx0VmFsdWVcIiksXG4gICAgbGlzdDIoXCJEaXJlY3RpdmVcIilcbiAgXSxcbiAgVW5pb25EZWY6IFtcbiAgICB3b3JkKFwidW5pb25cIiksXG4gICAgbmFtZShcImF0b21cIiksXG4gICAgbGlzdDIoXCJEaXJlY3RpdmVcIiksXG4gICAgcChcIj1cIiksXG4gICAgbGlzdDIoXCJVbmlvbk1lbWJlclwiLCBwKFwifFwiKSlcbiAgXSxcbiAgVW5pb25NZW1iZXI6IFtcIk5hbWVkVHlwZVwiXSxcbiAgRW51bURlZjogW1xuICAgIHdvcmQoXCJlbnVtXCIpLFxuICAgIG5hbWUoXCJhdG9tXCIpLFxuICAgIGxpc3QyKFwiRGlyZWN0aXZlXCIpLFxuICAgIHAoXCJ7XCIpLFxuICAgIGxpc3QyKFwiRW51bVZhbHVlRGVmXCIpLFxuICAgIHAoXCJ9XCIpXG4gIF0sXG4gIEVudW1WYWx1ZURlZjogW25hbWUoXCJzdHJpbmctMlwiKSwgbGlzdDIoXCJEaXJlY3RpdmVcIildLFxuICBJbnB1dERlZjogW1xuICAgIHdvcmQoXCJpbnB1dFwiKSxcbiAgICBuYW1lKFwiYXRvbVwiKSxcbiAgICBsaXN0MihcIkRpcmVjdGl2ZVwiKSxcbiAgICBwKFwie1wiKSxcbiAgICBsaXN0MihcIklucHV0VmFsdWVEZWZcIiksXG4gICAgcChcIn1cIilcbiAgXSxcbiAgRXh0ZW5kRGVmOiBbd29yZChcImV4dGVuZFwiKSwgXCJPYmplY3RUeXBlRGVmXCJdXG59O1xuZnVuY3Rpb24gd29yZCh2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIHN0eWxlOiBcImtleXdvcmRcIixcbiAgICBtYXRjaDogKHRva2VuMikgPT4gdG9rZW4yLmtpbmQgPT09IFwiTmFtZVwiICYmIHRva2VuMi52YWx1ZSA9PT0gdmFsdWVcbiAgfTtcbn1cbl9fbmFtZSh3b3JkLCBcIndvcmRcIik7XG5mdW5jdGlvbiBuYW1lKHN0eWxlKSB7XG4gIHJldHVybiB7XG4gICAgc3R5bGUsXG4gICAgbWF0Y2g6ICh0b2tlbjIpID0+IHRva2VuMi5raW5kID09PSBcIk5hbWVcIixcbiAgICB1cGRhdGUoc3RhdGUsIHRva2VuMikge1xuICAgICAgc3RhdGUubmFtZSA9IHRva2VuMi52YWx1ZTtcbiAgICB9XG4gIH07XG59XG5fX25hbWUobmFtZSwgXCJuYW1lXCIpO1xuZnVuY3Rpb24gdHlwZShzdHlsZSkge1xuICByZXR1cm4ge1xuICAgIHN0eWxlLFxuICAgIG1hdGNoOiAodG9rZW4yKSA9PiB0b2tlbjIua2luZCA9PT0gXCJOYW1lXCIsXG4gICAgdXBkYXRlKHN0YXRlLCB0b2tlbjIpIHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGlmICgoX2EgPSBzdGF0ZS5wcmV2U3RhdGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wcmV2U3RhdGUpIHtcbiAgICAgICAgc3RhdGUubmFtZSA9IHRva2VuMi52YWx1ZTtcbiAgICAgICAgc3RhdGUucHJldlN0YXRlLnByZXZTdGF0ZS50eXBlID0gdG9rZW4yLnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbl9fbmFtZSh0eXBlLCBcInR5cGVcIik7XG5jb25zdCBBZGRpdGlvbmFsUnVsZUtpbmRzID0ge1xuICBBTElBU0VEX0ZJRUxEOiBcIkFsaWFzZWRGaWVsZFwiLFxuICBBUkdVTUVOVFM6IFwiQXJndW1lbnRzXCIsXG4gIFNIT1JUX1FVRVJZOiBcIlNob3J0UXVlcnlcIixcbiAgUVVFUlk6IFwiUXVlcnlcIixcbiAgTVVUQVRJT046IFwiTXV0YXRpb25cIixcbiAgU1VCU0NSSVBUSU9OOiBcIlN1YnNjcmlwdGlvblwiLFxuICBUWVBFX0NPTkRJVElPTjogXCJUeXBlQ29uZGl0aW9uXCIsXG4gIElOVkFMSUQ6IFwiSW52YWxpZFwiLFxuICBDT01NRU5UOiBcIkNvbW1lbnRcIixcbiAgU0NIRU1BX0RFRjogXCJTY2hlbWFEZWZcIixcbiAgU0NBTEFSX0RFRjogXCJTY2FsYXJEZWZcIixcbiAgT0JKRUNUX1RZUEVfREVGOiBcIk9iamVjdFR5cGVEZWZcIixcbiAgT0JKRUNUX1ZBTFVFOiBcIk9iamVjdFZhbHVlXCIsXG4gIExJU1RfVkFMVUU6IFwiTGlzdFZhbHVlXCIsXG4gIElOVEVSRkFDRV9ERUY6IFwiSW50ZXJmYWNlRGVmXCIsXG4gIFVOSU9OX0RFRjogXCJVbmlvbkRlZlwiLFxuICBFTlVNX0RFRjogXCJFbnVtRGVmXCIsXG4gIEVOVU1fVkFMVUU6IFwiRW51bVZhbHVlXCIsXG4gIEZJRUxEX0RFRjogXCJGaWVsZERlZlwiLFxuICBJTlBVVF9ERUY6IFwiSW5wdXREZWZcIixcbiAgSU5QVVRfVkFMVUVfREVGOiBcIklucHV0VmFsdWVEZWZcIixcbiAgQVJHVU1FTlRTX0RFRjogXCJBcmd1bWVudHNEZWZcIixcbiAgRVhURU5EX0RFRjogXCJFeHRlbmREZWZcIixcbiAgRElSRUNUSVZFX0RFRjogXCJEaXJlY3RpdmVEZWZcIixcbiAgSU1QTEVNRU5UUzogXCJJbXBsZW1lbnRzXCIsXG4gIFZBUklBQkxFX0RFRklOSVRJT05TOiBcIlZhcmlhYmxlRGVmaW5pdGlvbnNcIixcbiAgVFlQRTogXCJUeXBlXCJcbn07XG5jb25zdCBSdWxlS2luZHMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIEtpbmQpLCBBZGRpdGlvbmFsUnVsZUtpbmRzKTtcbnZhciBudWxsdGhyb3dzJDIgPSB7IGV4cG9ydHM6IHt9IH07XG5mdW5jdGlvbiBudWxsdGhyb3dzKHgsIG1lc3NhZ2UpIHtcbiAgaWYgKHggIT0gbnVsbCkge1xuICAgIHJldHVybiB4O1xuICB9XG4gIHZhciBlcnJvcjIgPSBuZXcgRXJyb3IobWVzc2FnZSAhPT0gdm9pZCAwID8gbWVzc2FnZSA6IFwiR290IHVuZXhwZWN0ZWQgXCIgKyB4KTtcbiAgZXJyb3IyLmZyYW1lc1RvUG9wID0gMTtcbiAgdGhyb3cgZXJyb3IyO1xufVxuX19uYW1lKG51bGx0aHJvd3MsIFwibnVsbHRocm93c1wiKTtcbm51bGx0aHJvd3MkMi5leHBvcnRzID0gbnVsbHRocm93cztcbm51bGx0aHJvd3MkMi5leHBvcnRzLmRlZmF1bHQgPSBudWxsdGhyb3dzO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KG51bGx0aHJvd3MkMi5leHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBudWxsdGhyb3dzJDEgPSAvKiBAX19QVVJFX18gKi8gZ2V0RGVmYXVsdEV4cG9ydEZyb21DanMobnVsbHRocm93cyQyLmV4cG9ydHMpO1xuY29uc3QgZ2V0RnJhZ21lbnREZXBlbmRlbmNpZXNGb3JBU1QgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKChwYXJzZWRPcGVyYXRpb24sIGZyYWdtZW50RGVmaW5pdGlvbnMpID0+IHtcbiAgaWYgKCFmcmFnbWVudERlZmluaXRpb25zKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IGV4aXN0aW5nRnJhZ3MgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBjb25zdCByZWZlcmVuY2VkRnJhZ05hbWVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgdmlzaXQocGFyc2VkT3BlcmF0aW9uLCB7XG4gICAgRnJhZ21lbnREZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIGV4aXN0aW5nRnJhZ3Muc2V0KG5vZGUubmFtZS52YWx1ZSwgdHJ1ZSk7XG4gICAgfSxcbiAgICBGcmFnbWVudFNwcmVhZChub2RlKSB7XG4gICAgICBpZiAoIXJlZmVyZW5jZWRGcmFnTmFtZXMuaGFzKG5vZGUubmFtZS52YWx1ZSkpIHtcbiAgICAgICAgcmVmZXJlbmNlZEZyYWdOYW1lcy5hZGQobm9kZS5uYW1lLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBhc3RzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgcmVmZXJlbmNlZEZyYWdOYW1lcy5mb3JFYWNoKChuYW1lMikgPT4ge1xuICAgIGlmICghZXhpc3RpbmdGcmFncy5oYXMobmFtZTIpICYmIGZyYWdtZW50RGVmaW5pdGlvbnMuaGFzKG5hbWUyKSkge1xuICAgICAgYXN0cy5hZGQobnVsbHRocm93cyQxKGZyYWdtZW50RGVmaW5pdGlvbnMuZ2V0KG5hbWUyKSkpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHJlZmVyZW5jZWRGcmFnbWVudHMgPSBbXTtcbiAgYXN0cy5mb3JFYWNoKChhc3QyKSA9PiB7XG4gICAgdmlzaXQoYXN0Miwge1xuICAgICAgRnJhZ21lbnRTcHJlYWQobm9kZSkge1xuICAgICAgICBpZiAoIXJlZmVyZW5jZWRGcmFnTmFtZXMuaGFzKG5vZGUubmFtZS52YWx1ZSkgJiYgZnJhZ21lbnREZWZpbml0aW9ucy5nZXQobm9kZS5uYW1lLnZhbHVlKSkge1xuICAgICAgICAgIGFzdHMuYWRkKG51bGx0aHJvd3MkMShmcmFnbWVudERlZmluaXRpb25zLmdldChub2RlLm5hbWUudmFsdWUpKSk7XG4gICAgICAgICAgcmVmZXJlbmNlZEZyYWdOYW1lcy5hZGQobm9kZS5uYW1lLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghZXhpc3RpbmdGcmFncy5oYXMoYXN0Mi5uYW1lLnZhbHVlKSkge1xuICAgICAgcmVmZXJlbmNlZEZyYWdtZW50cy5wdXNoKGFzdDIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZWZlcmVuY2VkRnJhZ21lbnRzO1xufSwgXCJnZXRGcmFnbWVudERlcGVuZGVuY2llc0ZvckFTVFwiKTtcbmZ1bmN0aW9uIGNvbGxlY3RWYXJpYWJsZXMoc2NoZW1hLCBkb2N1bWVudEFTVCkge1xuICBjb25zdCB2YXJpYWJsZVRvVHlwZSA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBkb2N1bWVudEFTVC5kZWZpbml0aW9ucy5mb3JFYWNoKChkZWZpbml0aW9uKSA9PiB7XG4gICAgaWYgKGRlZmluaXRpb24ua2luZCA9PT0gXCJPcGVyYXRpb25EZWZpbml0aW9uXCIpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlRGVmaW5pdGlvbnMgPSBkZWZpbml0aW9uLnZhcmlhYmxlRGVmaW5pdGlvbnM7XG4gICAgICBpZiAodmFyaWFibGVEZWZpbml0aW9ucykge1xuICAgICAgICB2YXJpYWJsZURlZmluaXRpb25zLmZvckVhY2goKHsgdmFyaWFibGUsIHR5cGU6IHR5cGUyIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBpbnB1dFR5cGUgPSB0eXBlRnJvbUFTVChzY2hlbWEsIHR5cGUyKTtcbiAgICAgICAgICBpZiAoaW5wdXRUeXBlKSB7XG4gICAgICAgICAgICB2YXJpYWJsZVRvVHlwZVt2YXJpYWJsZS5uYW1lLnZhbHVlXSA9IGlucHV0VHlwZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUyLmtpbmQgPT09IEtpbmQuTkFNRURfVFlQRSkge1xuICAgICAgICAgICAgaWYgKHR5cGUyLm5hbWUudmFsdWUgPT09IFwiRmxvYXRcIikge1xuICAgICAgICAgICAgICB2YXJpYWJsZVRvVHlwZVt2YXJpYWJsZS5uYW1lLnZhbHVlXSA9IEdyYXBoUUxGbG9hdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiB2YXJpYWJsZVRvVHlwZTtcbn1cbl9fbmFtZShjb2xsZWN0VmFyaWFibGVzLCBcImNvbGxlY3RWYXJpYWJsZXNcIik7XG5mdW5jdGlvbiBnZXRPcGVyYXRpb25BU1RGYWN0cyhkb2N1bWVudEFTVCwgc2NoZW1hKSB7XG4gIGNvbnN0IHZhcmlhYmxlVG9UeXBlID0gc2NoZW1hID8gY29sbGVjdFZhcmlhYmxlcyhzY2hlbWEsIGRvY3VtZW50QVNUKSA6IHZvaWQgMDtcbiAgY29uc3Qgb3BlcmF0aW9ucyA9IFtdO1xuICB2aXNpdChkb2N1bWVudEFTVCwge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb24obm9kZSkge1xuICAgICAgb3BlcmF0aW9ucy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7IHZhcmlhYmxlVG9UeXBlLCBvcGVyYXRpb25zIH07XG59XG5fX25hbWUoZ2V0T3BlcmF0aW9uQVNURmFjdHMsIFwiZ2V0T3BlcmF0aW9uQVNURmFjdHNcIik7XG5mdW5jdGlvbiBnZXRPcGVyYXRpb25GYWN0cyhzY2hlbWEsIGRvY3VtZW50U3RyaW5nKSB7XG4gIGlmICghZG9jdW1lbnRTdHJpbmcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCBkb2N1bWVudEFTVCA9IHBhcnNlJDEoZG9jdW1lbnRTdHJpbmcpO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdldE9wZXJhdGlvbkFTVEZhY3RzKGRvY3VtZW50QVNULCBzY2hlbWEpKSwgeyBkb2N1bWVudEFTVCB9KTtcbiAgfSBjYXRjaCAoX2EpIHtcbiAgICByZXR1cm47XG4gIH1cbn1cbl9fbmFtZShnZXRPcGVyYXRpb25GYWN0cywgXCJnZXRPcGVyYXRpb25GYWN0c1wiKTtcbmdsb2JhbFRoaXMgJiYgZ2xvYmFsVGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24odGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cbiAgX19uYW1lKGFkb3B0LCBcImFkb3B0XCIpO1xuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShmdWxmaWxsZWQsIFwiZnVsZmlsbGVkXCIpO1xuICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHJlamVjdGVkLCBcInJlamVjdGVkXCIpO1xuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG4gICAgX19uYW1lKHN0ZXAsIFwic3RlcFwiKTtcbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcbi8qIVxuICogaXMtcHJpbWl0aXZlIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pcy1wcmltaXRpdmU+XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEpvbiBTY2hsaW5rZXJ0LlxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG52YXIgaXNQcmltaXRpdmUkMSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gaXNQcmltaXRpdmUodmFsKSB7XG4gIGlmICh0eXBlb2YgdmFsID09PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHZhbCA9PT0gbnVsbDtcbiAgfVxuICByZXR1cm4gdHlwZW9mIHZhbCAhPT0gXCJmdW5jdGlvblwiO1xufSwgXCJpc1ByaW1pdGl2ZVwiKTtcbi8qIVxuICogaXNvYmplY3QgPGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hsaW5rZXJ0L2lzb2JqZWN0PlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBKb24gU2NobGlua2VydC5cbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xudmFyIGlzb2JqZWN0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBpc09iamVjdCh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPSBudWxsICYmIHR5cGVvZiB2YWwgPT09IFwib2JqZWN0XCIgJiYgQXJyYXkuaXNBcnJheSh2YWwpID09PSBmYWxzZTtcbn0sIFwiaXNPYmplY3RcIik7XG4vKiFcbiAqIGlzLXBsYWluLW9iamVjdCA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvaXMtcGxhaW4tb2JqZWN0PlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBKb24gU2NobGlua2VydC5cbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xudmFyIGlzT2JqZWN0JDEgPSBpc29iamVjdDtcbmZ1bmN0aW9uIGlzT2JqZWN0T2JqZWN0KG8pIHtcbiAgcmV0dXJuIGlzT2JqZWN0JDEobykgPT09IHRydWUgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSBcIltvYmplY3QgT2JqZWN0XVwiO1xufVxuX19uYW1lKGlzT2JqZWN0T2JqZWN0LCBcImlzT2JqZWN0T2JqZWN0XCIpO1xudmFyIGlzUGxhaW5PYmplY3QkMSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvKSB7XG4gIHZhciBjdG9yLCBwcm90O1xuICBpZiAoaXNPYmplY3RPYmplY3QobykgPT09IGZhbHNlKVxuICAgIHJldHVybiBmYWxzZTtcbiAgY3RvciA9IG8uY29uc3RydWN0b3I7XG4gIGlmICh0eXBlb2YgY3RvciAhPT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiBmYWxzZTtcbiAgcHJvdCA9IGN0b3IucHJvdG90eXBlO1xuICBpZiAoaXNPYmplY3RPYmplY3QocHJvdCkgPT09IGZhbHNlKVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKHByb3QuaGFzT3duUHJvcGVydHkoXCJpc1Byb3RvdHlwZU9mXCIpID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn0sIFwiaXNQbGFpbk9iamVjdFwiKTtcbi8qIVxuICogc2V0LXZhbHVlIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9zZXQtdmFsdWU+XG4gKlxuICogQ29weXJpZ2h0IChjKSBKb24gU2NobGlua2VydCAoaHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQpLlxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5jb25zdCB7IGRlbGV0ZVByb3BlcnR5IH0gPSBSZWZsZWN0O1xuY29uc3QgaXNQcmltaXRpdmUyID0gaXNQcmltaXRpdmUkMTtcbmNvbnN0IGlzUGxhaW5PYmplY3QyID0gaXNQbGFpbk9iamVjdCQxO1xuY29uc3QgaXNPYmplY3QyID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgodmFsdWUpID0+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIjtcbn0sIFwiaXNPYmplY3RcIik7XG5jb25zdCBpc1Vuc2FmZUtleSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKGtleSkgPT4ge1xuICByZXR1cm4ga2V5ID09PSBcIl9fcHJvdG9fX1wiIHx8IGtleSA9PT0gXCJjb25zdHJ1Y3RvclwiIHx8IGtleSA9PT0gXCJwcm90b3R5cGVcIjtcbn0sIFwiaXNVbnNhZmVLZXlcIik7XG5jb25zdCB2YWxpZGF0ZUtleSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKGtleSkgPT4ge1xuICBpZiAoIWlzUHJpbWl0aXZlMihrZXkpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBrZXlzIG11c3QgYmUgc3RyaW5ncyBvciBzeW1ib2xzXCIpO1xuICB9XG4gIGlmIChpc1Vuc2FmZUtleShrZXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0IHVuc2FmZSBrZXk6IFwiJHtrZXl9XCJgKTtcbiAgfVxufSwgXCJ2YWxpZGF0ZUtleVwiKTtcbmNvbnN0IHRvU3RyaW5nS2V5ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgoaW5wdXQpID0+IHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoaW5wdXQpID8gaW5wdXQuZmxhdCgpLm1hcChTdHJpbmcpLmpvaW4oXCIsXCIpIDogaW5wdXQ7XG59LCBcInRvU3RyaW5nS2V5XCIpO1xuY29uc3QgY3JlYXRlTWVtb0tleSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKGlucHV0LCBvcHRpb25zKSA9PiB7XG4gIGlmICh0eXBlb2YgaW5wdXQgIT09IFwic3RyaW5nXCIgfHwgIW9wdGlvbnMpXG4gICAgcmV0dXJuIGlucHV0O1xuICBsZXQga2V5ID0gaW5wdXQgKyBcIjtcIjtcbiAgaWYgKG9wdGlvbnMuYXJyYXlzICE9PSB2b2lkIDApXG4gICAga2V5ICs9IGBhcnJheXM9JHtvcHRpb25zLmFycmF5c307YDtcbiAgaWYgKG9wdGlvbnMuc2VwYXJhdG9yICE9PSB2b2lkIDApXG4gICAga2V5ICs9IGBzZXBhcmF0b3I9JHtvcHRpb25zLnNlcGFyYXRvcn07YDtcbiAgaWYgKG9wdGlvbnMuc3BsaXQgIT09IHZvaWQgMClcbiAgICBrZXkgKz0gYHNwbGl0PSR7b3B0aW9ucy5zcGxpdH07YDtcbiAgaWYgKG9wdGlvbnMubWVyZ2UgIT09IHZvaWQgMClcbiAgICBrZXkgKz0gYG1lcmdlPSR7b3B0aW9ucy5tZXJnZX07YDtcbiAgaWYgKG9wdGlvbnMucHJlc2VydmVQYXRocyAhPT0gdm9pZCAwKVxuICAgIGtleSArPSBgcHJlc2VydmVQYXRocz0ke29wdGlvbnMucHJlc2VydmVQYXRoc307YDtcbiAgcmV0dXJuIGtleTtcbn0sIFwiY3JlYXRlTWVtb0tleVwiKTtcbmNvbnN0IG1lbW9pemUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKChpbnB1dCwgb3B0aW9ucywgZm4pID0+IHtcbiAgY29uc3Qga2V5ID0gdG9TdHJpbmdLZXkob3B0aW9ucyA/IGNyZWF0ZU1lbW9LZXkoaW5wdXQsIG9wdGlvbnMpIDogaW5wdXQpO1xuICB2YWxpZGF0ZUtleShrZXkpO1xuICBjb25zdCB2YWx1ZSA9IHNldFZhbHVlLmNhY2hlLmdldChrZXkpIHx8IGZuKCk7XG4gIHNldFZhbHVlLmNhY2hlLnNldChrZXksIHZhbHVlKTtcbiAgcmV0dXJuIHZhbHVlO1xufSwgXCJtZW1vaXplXCIpO1xuY29uc3Qgc3BsaXRTdHJpbmcgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKChpbnB1dCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHNlcCA9IG9wdGlvbnMuc2VwYXJhdG9yIHx8IFwiLlwiO1xuICBjb25zdCBwcmVzZXJ2ZSA9IHNlcCA9PT0gXCIvXCIgPyBmYWxzZSA6IG9wdGlvbnMucHJlc2VydmVQYXRocztcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIiAmJiBwcmVzZXJ2ZSAhPT0gZmFsc2UgJiYgL1xcLy8udGVzdChpbnB1dCkpIHtcbiAgICByZXR1cm4gW2lucHV0XTtcbiAgfVxuICBjb25zdCBwYXJ0cyA9IFtdO1xuICBsZXQgcGFydDIgPSBcIlwiO1xuICBjb25zdCBwdXNoID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgocGFydDMpID0+IHtcbiAgICBsZXQgbnVtYmVyO1xuICAgIGlmIChwYXJ0My50cmltKCkgIT09IFwiXCIgJiYgTnVtYmVyLmlzSW50ZWdlcihudW1iZXIgPSBOdW1iZXIocGFydDMpKSkge1xuICAgICAgcGFydHMucHVzaChudW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cy5wdXNoKHBhcnQzKTtcbiAgICB9XG4gIH0sIFwicHVzaFwiKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHZhbHVlID0gaW5wdXRbaV07XG4gICAgaWYgKHZhbHVlID09PSBcIlxcXFxcIikge1xuICAgICAgcGFydDIgKz0gaW5wdXRbKytpXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IHNlcCkge1xuICAgICAgcHVzaChwYXJ0Mik7XG4gICAgICBwYXJ0MiA9IFwiXCI7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcGFydDIgKz0gdmFsdWU7XG4gIH1cbiAgaWYgKHBhcnQyKSB7XG4gICAgcHVzaChwYXJ0Mik7XG4gIH1cbiAgcmV0dXJuIHBhcnRzO1xufSwgXCJzcGxpdFN0cmluZ1wiKTtcbmNvbnN0IHNwbGl0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgoaW5wdXQsIG9wdGlvbnMpID0+IHtcbiAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMuc3BsaXQgPT09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gb3B0aW9ucy5zcGxpdChpbnB1dCk7XG4gIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3ltYm9sXCIpXG4gICAgcmV0dXJuIFtpbnB1dF07XG4gIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSlcbiAgICByZXR1cm4gaW5wdXQ7XG4gIHJldHVybiBtZW1vaXplKGlucHV0LCBvcHRpb25zLCAoKSA9PiBzcGxpdFN0cmluZyhpbnB1dCwgb3B0aW9ucykpO1xufSwgXCJzcGxpdFwiKTtcbmNvbnN0IGFzc2lnblByb3AgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKChvYmosIHByb3AyLCB2YWx1ZSwgb3B0aW9ucykgPT4ge1xuICB2YWxpZGF0ZUtleShwcm9wMik7XG4gIGlmICh2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgZGVsZXRlUHJvcGVydHkob2JqLCBwcm9wMik7XG4gIH0gZWxzZSBpZiAob3B0aW9ucyAmJiBvcHRpb25zLm1lcmdlKSB7XG4gICAgY29uc3QgbWVyZ2UgPSBvcHRpb25zLm1lcmdlID09PSBcImZ1bmN0aW9uXCIgPyBvcHRpb25zLm1lcmdlIDogT2JqZWN0LmFzc2lnbjtcbiAgICBpZiAobWVyZ2UgJiYgaXNQbGFpbk9iamVjdDIob2JqW3Byb3AyXSkgJiYgaXNQbGFpbk9iamVjdDIodmFsdWUpKSB7XG4gICAgICBvYmpbcHJvcDJdID0gbWVyZ2Uob2JqW3Byb3AyXSwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmpbcHJvcDJdID0gdmFsdWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG9ialtwcm9wMl0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufSwgXCJhc3NpZ25Qcm9wXCIpO1xuY29uc3Qgc2V0VmFsdWUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKCh0YXJnZXQyLCBwYXRoLCB2YWx1ZSwgb3B0aW9ucykgPT4ge1xuICBpZiAoIXBhdGggfHwgIWlzT2JqZWN0Mih0YXJnZXQyKSlcbiAgICByZXR1cm4gdGFyZ2V0MjtcbiAgY29uc3Qga2V5cyA9IHNwbGl0KHBhdGgsIG9wdGlvbnMpO1xuICBsZXQgb2JqID0gdGFyZ2V0MjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICBjb25zdCBuZXh0ID0ga2V5c1tpICsgMV07XG4gICAgdmFsaWRhdGVLZXkoa2V5KTtcbiAgICBpZiAobmV4dCA9PT0gdm9pZCAwKSB7XG4gICAgICBhc3NpZ25Qcm9wKG9iaiwga2V5LCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBuZXh0ID09PSBcIm51bWJlclwiICYmICFBcnJheS5pc0FycmF5KG9ialtrZXldKSkge1xuICAgICAgb2JqID0gb2JqW2tleV0gPSBbXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoIWlzT2JqZWN0MihvYmpba2V5XSkpIHtcbiAgICAgIG9ialtrZXldID0ge307XG4gICAgfVxuICAgIG9iaiA9IG9ialtrZXldO1xuICB9XG4gIHJldHVybiB0YXJnZXQyO1xufSwgXCJzZXRWYWx1ZVwiKTtcbnNldFZhbHVlLnNwbGl0ID0gc3BsaXQ7XG5zZXRWYWx1ZS5jYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG5zZXRWYWx1ZS5jbGVhciA9ICgpID0+IHtcbiAgc2V0VmFsdWUuY2FjaGUgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xufTtcbnZhciBzZXRWYWx1ZV8xID0gc2V0VmFsdWU7XG52YXIgX19kZWZQcm9wJGUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lJGUgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKCh0YXJnZXQyLCB2YWx1ZSkgPT4gX19kZWZQcm9wJGUodGFyZ2V0MiwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KSwgXCJfX25hbWUkZVwiKTtcbmNvbnN0IEhpc3RvcnlDb250ZXh0ID0gY3JlYXRlTnVsbGFibGVDb250ZXh0KFwiSGlzdG9yeUNvbnRleHRcIik7XG5mdW5jdGlvbiBIaXN0b3J5Q29udGV4dFByb3ZpZGVyKHByb3BzKSB7XG4gIHZhciBfYTtcbiAgY29uc3Qgc3RvcmFnZSA9IHVzZVN0b3JhZ2VDb250ZXh0KCk7XG4gIGNvbnN0IGhpc3RvcnlTdG9yZSA9IHVzZVJlZihuZXcgSGlzdG9yeVN0b3JlKHN0b3JhZ2UgfHwgbmV3IFN0b3JhZ2VBUEkobnVsbCksIHByb3BzLm1heEhpc3RvcnlMZW5ndGggfHwgREVGQVVMVF9ISVNUT1JZX0xFTkdUSCkpO1xuICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlKCgoX2EgPSBoaXN0b3J5U3RvcmUuY3VycmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnF1ZXJpZXMpIHx8IFtdKTtcbiAgY29uc3QgW2lzVmlzaWJsZSwgc2V0SXNWaXNpYmxlXSA9IHVzZVN0YXRlKChzdG9yYWdlID09IG51bGwgPyB2b2lkIDAgOiBzdG9yYWdlLmdldChTVE9SQUdFX0tFWSQ0KSkgPT09IFwidHJ1ZVwiIHx8IGZhbHNlKTtcbiAgY29uc3QgYWRkVG9IaXN0b3J5ID0gdXNlQ2FsbGJhY2soKHtcbiAgICBxdWVyeSxcbiAgICB2YXJpYWJsZXMsXG4gICAgaGVhZGVycyxcbiAgICBvcGVyYXRpb25OYW1lXG4gIH0pID0+IHtcbiAgICB2YXIgX2EyO1xuICAgIChfYTIgPSBoaXN0b3J5U3RvcmUuY3VycmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi51cGRhdGVIaXN0b3J5KHF1ZXJ5LCB2YXJpYWJsZXMsIGhlYWRlcnMsIG9wZXJhdGlvbk5hbWUpO1xuICAgIHNldEl0ZW1zKGhpc3RvcnlTdG9yZS5jdXJyZW50LnF1ZXJpZXMpO1xuICB9LCBbXSk7XG4gIGNvbnN0IGVkaXRMYWJlbCA9IHVzZUNhbGxiYWNrKCh7XG4gICAgcXVlcnksXG4gICAgdmFyaWFibGVzLFxuICAgIGhlYWRlcnMsXG4gICAgb3BlcmF0aW9uTmFtZSxcbiAgICBsYWJlbCxcbiAgICBmYXZvcml0ZVxuICB9KSA9PiB7XG4gICAgaGlzdG9yeVN0b3JlLmN1cnJlbnQuZWRpdExhYmVsKHF1ZXJ5LCB2YXJpYWJsZXMsIGhlYWRlcnMsIG9wZXJhdGlvbk5hbWUsIGxhYmVsLCBmYXZvcml0ZSk7XG4gICAgc2V0SXRlbXMoaGlzdG9yeVN0b3JlLmN1cnJlbnQucXVlcmllcyk7XG4gIH0sIFtdKTtcbiAgY29uc3Qge1xuICAgIG9uVG9nZ2xlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgaGlkZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBvblRvZ2dsZSA9PSBudWxsID8gdm9pZCAwIDogb25Ub2dnbGUoZmFsc2UpO1xuICAgIHN0b3JhZ2UgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3JhZ2Uuc2V0KFNUT1JBR0VfS0VZJDQsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSk7XG4gICAgc2V0SXNWaXNpYmxlKGZhbHNlKTtcbiAgfSwgW29uVG9nZ2xlLCBzdG9yYWdlXSk7XG4gIGNvbnN0IHNob3cgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgb25Ub2dnbGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uVG9nZ2xlKHRydWUpO1xuICAgIHN0b3JhZ2UgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3JhZ2Uuc2V0KFNUT1JBR0VfS0VZJDQsIEpTT04uc3RyaW5naWZ5KHRydWUpKTtcbiAgICBzZXRJc1Zpc2libGUodHJ1ZSk7XG4gIH0sIFtvblRvZ2dsZSwgc3RvcmFnZV0pO1xuICBjb25zdCB0b2dnbGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNWaXNpYmxlKChjdXJyZW50KSA9PiB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9ICFjdXJyZW50O1xuICAgICAgb25Ub2dnbGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uVG9nZ2xlKG5ld1ZhbHVlKTtcbiAgICAgIHN0b3JhZ2UgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3JhZ2Uuc2V0KFNUT1JBR0VfS0VZJDQsIEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKSk7XG4gICAgICByZXR1cm4gbmV3VmFsdWU7XG4gICAgfSk7XG4gIH0sIFtvblRvZ2dsZSwgc3RvcmFnZV0pO1xuICBjb25zdCB0b2dnbGVGYXZvcml0ZSA9IHVzZUNhbGxiYWNrKCh7XG4gICAgcXVlcnksXG4gICAgdmFyaWFibGVzLFxuICAgIGhlYWRlcnMsXG4gICAgb3BlcmF0aW9uTmFtZSxcbiAgICBsYWJlbCxcbiAgICBmYXZvcml0ZVxuICB9KSA9PiB7XG4gICAgaGlzdG9yeVN0b3JlLmN1cnJlbnQudG9nZ2xlRmF2b3JpdGUocXVlcnksIHZhcmlhYmxlcywgaGVhZGVycywgb3BlcmF0aW9uTmFtZSwgbGFiZWwsIGZhdm9yaXRlKTtcbiAgICBzZXRJdGVtcyhoaXN0b3J5U3RvcmUuY3VycmVudC5xdWVyaWVzKTtcbiAgfSwgW10pO1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBhZGRUb0hpc3RvcnksXG4gICAgZWRpdExhYmVsLFxuICAgIGhpZGUsXG4gICAgaXNWaXNpYmxlLFxuICAgIGl0ZW1zLFxuICAgIHNob3csXG4gICAgdG9nZ2xlLFxuICAgIHRvZ2dsZUZhdm9yaXRlXG4gIH0pLCBbYWRkVG9IaXN0b3J5LCBlZGl0TGFiZWwsIGhpZGUsIGlzVmlzaWJsZSwgaXRlbXMsIHNob3csIHRvZ2dsZSwgdG9nZ2xlRmF2b3JpdGVdKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goSGlzdG9yeUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZSxcbiAgICBjaGlsZHJlbjogcHJvcHMuY2hpbGRyZW5cbiAgfSk7XG59XG5fX25hbWUoSGlzdG9yeUNvbnRleHRQcm92aWRlciwgXCJIaXN0b3J5Q29udGV4dFByb3ZpZGVyXCIpO1xuX19uYW1lJGUoSGlzdG9yeUNvbnRleHRQcm92aWRlciwgXCJIaXN0b3J5Q29udGV4dFByb3ZpZGVyXCIpO1xuY29uc3QgdXNlSGlzdG9yeUNvbnRleHQgPSBjcmVhdGVDb250ZXh0SG9vayhIaXN0b3J5Q29udGV4dCk7XG5jb25zdCBERUZBVUxUX0hJU1RPUllfTEVOR1RIID0gMjA7XG5jb25zdCBTVE9SQUdFX0tFWSQ0ID0gXCJoaXN0b3J5UGFuZU9wZW5cIjtcbnZhciBfX2RlZlByb3AkZCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUkZCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKHRhcmdldDIsIHZhbHVlKSA9PiBfX2RlZlByb3AkZCh0YXJnZXQyLCBcIm5hbWVcIiwgeyB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pLCBcIl9fbmFtZSRkXCIpO1xuZnVuY3Rpb24gdXNlU2VsZWN0SGlzdG9yeUl0ZW0oKSB7XG4gIGNvbnN0IHsgaGVhZGVyRWRpdG9yLCBxdWVyeUVkaXRvciwgdmFyaWFibGVFZGl0b3IgfSA9IHVzZUVkaXRvckNvbnRleHQoe1xuICAgIG5vbk51bGw6IHRydWUsXG4gICAgY2FsbGVyOiB1c2VTZWxlY3RIaXN0b3J5SXRlbVxuICB9KTtcbiAgcmV0dXJuIChpdGVtKSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgcXVlcnlFZGl0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IHF1ZXJ5RWRpdG9yLnNldFZhbHVlKChfYSA9IGl0ZW0ucXVlcnkpICE9IG51bGwgPyBfYSA6IFwiXCIpO1xuICAgIHZhcmlhYmxlRWRpdG9yID09IG51bGwgPyB2b2lkIDAgOiB2YXJpYWJsZUVkaXRvci5zZXRWYWx1ZSgoX2IgPSBpdGVtLnZhcmlhYmxlcykgIT0gbnVsbCA/IF9iIDogXCJcIik7XG4gICAgaGVhZGVyRWRpdG9yID09IG51bGwgPyB2b2lkIDAgOiBoZWFkZXJFZGl0b3Iuc2V0VmFsdWUoKF9jID0gaXRlbS5oZWFkZXJzKSAhPSBudWxsID8gX2MgOiBcIlwiKTtcbiAgfTtcbn1cbl9fbmFtZSh1c2VTZWxlY3RIaXN0b3J5SXRlbSwgXCJ1c2VTZWxlY3RIaXN0b3J5SXRlbVwiKTtcbl9fbmFtZSRkKHVzZVNlbGVjdEhpc3RvcnlJdGVtLCBcInVzZVNlbGVjdEhpc3RvcnlJdGVtXCIpO1xudmFyIF9fZGVmUHJvcCRjID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSRjID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgodGFyZ2V0MiwgdmFsdWUpID0+IF9fZGVmUHJvcCRjKHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSksIFwiX19uYW1lJGNcIik7XG5jb25zdCBFeGVjdXRpb25Db250ZXh0ID0gY3JlYXRlTnVsbGFibGVDb250ZXh0KFwiRXhlY3V0aW9uQ29udGV4dFwiKTtcbmZ1bmN0aW9uIEV4ZWN1dGlvbkNvbnRleHRQcm92aWRlcihwcm9wcykge1xuICBjb25zdCB7XG4gICAgZXh0ZXJuYWxGcmFnbWVudHMsXG4gICAgaGVhZGVyRWRpdG9yLFxuICAgIHF1ZXJ5RWRpdG9yLFxuICAgIHJlc3BvbnNlRWRpdG9yLFxuICAgIHNob3VsZFBlcnNpc3RIZWFkZXJzLFxuICAgIHZhcmlhYmxlRWRpdG9yLFxuICAgIHVwZGF0ZUFjdGl2ZVRhYlZhbHVlc1xuICB9ID0gdXNlRWRpdG9yQ29udGV4dCh7XG4gICAgbm9uTnVsbDogdHJ1ZSxcbiAgICBjYWxsZXI6IEV4ZWN1dGlvbkNvbnRleHRQcm92aWRlclxuICB9KTtcbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnlDb250ZXh0KCk7XG4gIGNvbnN0IGF1dG9Db21wbGV0ZUxlYWZzID0gdXNlQXV0b0NvbXBsZXRlTGVhZnMoe1xuICAgIGNhbGxlcjogRXhlY3V0aW9uQ29udGV4dFByb3ZpZGVyXG4gIH0pO1xuICBjb25zdCBbaXNGZXRjaGluZywgc2V0SXNGZXRjaGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzdWJzY3JpcHRpb24sIHNldFN1YnNjcmlwdGlvbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcXVlcnlJZFJlZiA9IHVzZVJlZigwKTtcbiAgY29uc3Qgc3RvcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdWJzY3JpcHRpb24gPT0gbnVsbCA/IHZvaWQgMCA6IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHNldElzRmV0Y2hpbmcoZmFsc2UpO1xuICAgIHNldFN1YnNjcmlwdGlvbihudWxsKTtcbiAgfSwgW3N1YnNjcmlwdGlvbl0pO1xuICBjb25zdCB7XG4gICAgZmV0Y2hlclxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHJ1biA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICB2YXIgX2EsIF9iLCBfYztcbiAgICBpZiAoIXF1ZXJ5RWRpdG9yIHx8ICFyZXNwb25zZUVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3Vic2NyaXB0aW9uKSB7XG4gICAgICBzdG9wKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNldFJlc3BvbnNlID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSRjKCh2YWx1ZTIpID0+IHtcbiAgICAgIHJlc3BvbnNlRWRpdG9yLnNldFZhbHVlKHZhbHVlMik7XG4gICAgICB1cGRhdGVBY3RpdmVUYWJWYWx1ZXMoe1xuICAgICAgICByZXNwb25zZTogdmFsdWUyXG4gICAgICB9KTtcbiAgICB9LCBcInNldFJlc3BvbnNlXCIpO1xuICAgIHF1ZXJ5SWRSZWYuY3VycmVudCArPSAxO1xuICAgIGNvbnN0IHF1ZXJ5SWQgPSBxdWVyeUlkUmVmLmN1cnJlbnQ7XG4gICAgbGV0IHF1ZXJ5ID0gYXV0b0NvbXBsZXRlTGVhZnMoKSB8fCBxdWVyeUVkaXRvci5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHZhcmlhYmxlc1N0cmluZyA9IHZhcmlhYmxlRWRpdG9yID09IG51bGwgPyB2b2lkIDAgOiB2YXJpYWJsZUVkaXRvci5nZXRWYWx1ZSgpO1xuICAgIGxldCB2YXJpYWJsZXM7XG4gICAgdHJ5IHtcbiAgICAgIHZhcmlhYmxlcyA9IHRyeVBhcnNlSnNvbk9iamVjdCh7XG4gICAgICAgIGpzb246IHZhcmlhYmxlc1N0cmluZyxcbiAgICAgICAgZXJyb3JNZXNzYWdlUGFyc2U6IFwiVmFyaWFibGVzIGFyZSBpbnZhbGlkIEpTT05cIixcbiAgICAgICAgZXJyb3JNZXNzYWdlVHlwZTogXCJWYXJpYWJsZXMgYXJlIG5vdCBhIEpTT04gb2JqZWN0LlwiXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjIpIHtcbiAgICAgIHNldFJlc3BvbnNlKGVycm9yMiBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IyLm1lc3NhZ2UgOiBgJHtlcnJvcjJ9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGhlYWRlcnNTdHJpbmcgPSBoZWFkZXJFZGl0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IGhlYWRlckVkaXRvci5nZXRWYWx1ZSgpO1xuICAgIGxldCBoZWFkZXJzO1xuICAgIHRyeSB7XG4gICAgICBoZWFkZXJzID0gdHJ5UGFyc2VKc29uT2JqZWN0KHtcbiAgICAgICAganNvbjogaGVhZGVyc1N0cmluZyxcbiAgICAgICAgZXJyb3JNZXNzYWdlUGFyc2U6IFwiSGVhZGVycyBhcmUgaW52YWxpZCBKU09OXCIsXG4gICAgICAgIGVycm9yTWVzc2FnZVR5cGU6IFwiSGVhZGVycyBhcmUgbm90IGEgSlNPTiBvYmplY3QuXCJcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yMikge1xuICAgICAgc2V0UmVzcG9uc2UoZXJyb3IyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvcjIubWVzc2FnZSA6IGAke2Vycm9yMn1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV4dGVybmFsRnJhZ21lbnRzKSB7XG4gICAgICBjb25zdCBmcmFnbWVudERlcGVuZGVuY2llcyA9IHF1ZXJ5RWRpdG9yLmRvY3VtZW50QVNUID8gZ2V0RnJhZ21lbnREZXBlbmRlbmNpZXNGb3JBU1QocXVlcnlFZGl0b3IuZG9jdW1lbnRBU1QsIGV4dGVybmFsRnJhZ21lbnRzKSA6IFtdO1xuICAgICAgaWYgKGZyYWdtZW50RGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcXVlcnkgKz0gXCJcXG5cIiArIGZyYWdtZW50RGVwZW5kZW5jaWVzLm1hcCgobm9kZSkgPT4gcHJpbnQobm9kZSkpLmpvaW4oXCJcXG5cIik7XG4gICAgICB9XG4gICAgfVxuICAgIHNldFJlc3BvbnNlKFwiXCIpO1xuICAgIHNldElzRmV0Y2hpbmcodHJ1ZSk7XG4gICAgY29uc3Qgb3BlcmF0aW9uTmFtZSA9IChfYiA9IChfYSA9IHByb3BzLm9wZXJhdGlvbk5hbWUpICE9IG51bGwgPyBfYSA6IHF1ZXJ5RWRpdG9yLm9wZXJhdGlvbk5hbWUpICE9IG51bGwgPyBfYiA6IHZvaWQgMDtcbiAgICBoaXN0b3J5ID09IG51bGwgPyB2b2lkIDAgOiBoaXN0b3J5LmFkZFRvSGlzdG9yeSh7XG4gICAgICBxdWVyeSxcbiAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzU3RyaW5nLFxuICAgICAgaGVhZGVyczogaGVhZGVyc1N0cmluZyxcbiAgICAgIG9wZXJhdGlvbk5hbWVcbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgbGV0IGZ1bGxSZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YToge31cbiAgICAgIH07XG4gICAgICBjb25zdCBoYW5kbGVSZXNwb25zZSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUkYygocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChxdWVyeUlkICE9PSBxdWVyeUlkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG1heWJlTXVsdGlwYXJ0ID0gQXJyYXkuaXNBcnJheShyZXN1bHQpID8gcmVzdWx0IDogZmFsc2U7XG4gICAgICAgIGlmICghbWF5YmVNdWx0aXBhcnQgJiYgdHlwZW9mIHJlc3VsdCA9PT0gXCJvYmplY3RcIiAmJiByZXN1bHQgIT09IG51bGwgJiYgXCJoYXNOZXh0XCIgaW4gcmVzdWx0KSB7XG4gICAgICAgICAgbWF5YmVNdWx0aXBhcnQgPSBbcmVzdWx0XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF5YmVNdWx0aXBhcnQpIHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICAgICAgZGF0YTogZnVsbFJlc3BvbnNlLmRhdGFcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IG1heWJlRXJyb3JzID0gWy4uLihmdWxsUmVzcG9uc2UgPT0gbnVsbCA/IHZvaWQgMCA6IGZ1bGxSZXNwb25zZS5lcnJvcnMpIHx8IFtdLCAuLi5tYXliZU11bHRpcGFydC5tYXAoKGkpID0+IGkuZXJyb3JzKS5mbGF0KCkuZmlsdGVyKEJvb2xlYW4pXTtcbiAgICAgICAgICBpZiAobWF5YmVFcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmVycm9ycyA9IG1heWJlRXJyb3JzO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGNvbnN0IHBhcnQyIG9mIG1heWJlTXVsdGlwYXJ0KSB7XG4gICAgICAgICAgICBjb25zdCBfYTIgPSBwYXJ0Miwge1xuICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBlcnJvcnM6IGVycm9yczJcbiAgICAgICAgICAgIH0gPSBfYTIsIHJlc3QgPSBfX29ialJlc3QoX2EyLCBbXG4gICAgICAgICAgICAgIFwicGF0aFwiLFxuICAgICAgICAgICAgICBcImRhdGFcIixcbiAgICAgICAgICAgICAgXCJlcnJvcnNcIlxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBpZiAocGF0aCkge1xuICAgICAgICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHBhcnQgdG8gY29udGFpbiBhIGRhdGEgcHJvcGVydHksIGJ1dCBnb3QgJHtwYXJ0Mn1gKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRWYWx1ZV8xKHBheWxvYWQuZGF0YSwgcGF0aCwgZGF0YSwge1xuICAgICAgICAgICAgICAgIG1lcmdlOiB0cnVlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgIHBheWxvYWQuZGF0YSA9IHBhcnQyLmRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdWxsUmVzcG9uc2UgPSBfX3NwcmVhZFZhbHVlcyhfX3NwcmVhZFZhbHVlcyh7fSwgcGF5bG9hZCksIHJlc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRJc0ZldGNoaW5nKGZhbHNlKTtcbiAgICAgICAgICBzZXRSZXNwb25zZShmb3JtYXRSZXN1bHQoZnVsbFJlc3BvbnNlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBmb3JtYXRSZXN1bHQocmVzdWx0KTtcbiAgICAgICAgICBzZXRJc0ZldGNoaW5nKGZhbHNlKTtcbiAgICAgICAgICBzZXRSZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIFwiaGFuZGxlUmVzcG9uc2VcIik7XG4gICAgICBjb25zdCBmZXRjaDIgPSBmZXRjaGVyKHtcbiAgICAgICAgcXVlcnksXG4gICAgICAgIHZhcmlhYmxlcyxcbiAgICAgICAgb3BlcmF0aW9uTmFtZVxuICAgICAgfSwge1xuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzICE9IG51bGwgPyBoZWFkZXJzIDogdm9pZCAwLFxuICAgICAgICBzaG91bGRQZXJzaXN0SGVhZGVycyxcbiAgICAgICAgZG9jdW1lbnRBU1Q6IChfYyA9IHF1ZXJ5RWRpdG9yLmRvY3VtZW50QVNUKSAhPSBudWxsID8gX2MgOiB2b2lkIDBcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdmFsdWUyID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGZldGNoMik7XG4gICAgICBpZiAoaXNPYnNlcnZhYmxlKHZhbHVlMikpIHtcbiAgICAgICAgc2V0U3Vic2NyaXB0aW9uKHZhbHVlMi5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQocmVzdWx0KSB7XG4gICAgICAgICAgICBoYW5kbGVSZXNwb25zZShyZXN1bHQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3IoZXJyb3IyKSB7XG4gICAgICAgICAgICBzZXRJc0ZldGNoaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChlcnJvcjIpIHtcbiAgICAgICAgICAgICAgc2V0UmVzcG9uc2UoZm9ybWF0RXJyb3IoZXJyb3IyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRTdWJzY3JpcHRpb24obnVsbCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wbGV0ZSgpIHtcbiAgICAgICAgICAgIHNldElzRmV0Y2hpbmcoZmFsc2UpO1xuICAgICAgICAgICAgc2V0U3Vic2NyaXB0aW9uKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIGlmIChpc0FzeW5jSXRlcmFibGUodmFsdWUyKSkge1xuICAgICAgICBzZXRTdWJzY3JpcHRpb24oe1xuICAgICAgICAgIHVuc3Vic2NyaWJlOiAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EyLCBfYjI7XG4gICAgICAgICAgICByZXR1cm4gKF9iMiA9IChfYTIgPSB2YWx1ZTJbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkpLnJldHVybikgPT0gbnVsbCA/IHZvaWQgMCA6IF9iMi5jYWxsKF9hMik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IHJlc3VsdCBvZiB2YWx1ZTIpIHtcbiAgICAgICAgICAgIGhhbmRsZVJlc3BvbnNlKHJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNldElzRmV0Y2hpbmcoZmFsc2UpO1xuICAgICAgICAgIHNldFN1YnNjcmlwdGlvbihudWxsKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IyKSB7XG4gICAgICAgICAgc2V0SXNGZXRjaGluZyhmYWxzZSk7XG4gICAgICAgICAgc2V0UmVzcG9uc2UoZm9ybWF0RXJyb3IoZXJyb3IyKSk7XG4gICAgICAgICAgc2V0U3Vic2NyaXB0aW9uKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVSZXNwb25zZSh2YWx1ZTIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yMikge1xuICAgICAgc2V0SXNGZXRjaGluZyhmYWxzZSk7XG4gICAgICBzZXRSZXNwb25zZShmb3JtYXRFcnJvcihlcnJvcjIpKTtcbiAgICAgIHNldFN1YnNjcmlwdGlvbihudWxsKTtcbiAgICB9XG4gIH0sIFthdXRvQ29tcGxldGVMZWFmcywgZXh0ZXJuYWxGcmFnbWVudHMsIGZldGNoZXIsIGhlYWRlckVkaXRvciwgaGlzdG9yeSwgcHJvcHMub3BlcmF0aW9uTmFtZSwgcXVlcnlFZGl0b3IsIHJlc3BvbnNlRWRpdG9yLCBzaG91bGRQZXJzaXN0SGVhZGVycywgc3RvcCwgc3Vic2NyaXB0aW9uLCB1cGRhdGVBY3RpdmVUYWJWYWx1ZXMsIHZhcmlhYmxlRWRpdG9yXSk7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiB7XG4gICAgICBpc0ZldGNoaW5nLFxuICAgICAgb3BlcmF0aW9uTmFtZTogKF9hID0gcHJvcHMub3BlcmF0aW9uTmFtZSkgIT0gbnVsbCA/IF9hIDogbnVsbCxcbiAgICAgIHJ1bixcbiAgICAgIHN0b3BcbiAgICB9O1xuICB9LCBbaXNGZXRjaGluZywgcHJvcHMub3BlcmF0aW9uTmFtZSwgcnVuLCBzdG9wXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEV4ZWN1dGlvbkNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZSxcbiAgICBjaGlsZHJlbjogcHJvcHMuY2hpbGRyZW5cbiAgfSk7XG59XG5fX25hbWUoRXhlY3V0aW9uQ29udGV4dFByb3ZpZGVyLCBcIkV4ZWN1dGlvbkNvbnRleHRQcm92aWRlclwiKTtcbl9fbmFtZSRjKEV4ZWN1dGlvbkNvbnRleHRQcm92aWRlciwgXCJFeGVjdXRpb25Db250ZXh0UHJvdmlkZXJcIik7XG5jb25zdCB1c2VFeGVjdXRpb25Db250ZXh0ID0gY3JlYXRlQ29udGV4dEhvb2soRXhlY3V0aW9uQ29udGV4dCk7XG5mdW5jdGlvbiB0cnlQYXJzZUpzb25PYmplY3Qoe1xuICBqc29uLFxuICBlcnJvck1lc3NhZ2VQYXJzZSxcbiAgZXJyb3JNZXNzYWdlVHlwZVxufSkge1xuICBsZXQgcGFyc2VkID0gdm9pZCAwO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IGpzb24gJiYganNvbi50cmltKCkgIT09IFwiXCIgPyBKU09OLnBhcnNlKGpzb24pIDogdm9pZCAwO1xuICB9IGNhdGNoIChlcnJvcjIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZXJyb3JNZXNzYWdlUGFyc2V9OiAke2Vycm9yMiBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IyLm1lc3NhZ2UgOiBlcnJvcjJ9LmApO1xuICB9XG4gIGNvbnN0IGlzT2JqZWN0MyA9IHR5cGVvZiBwYXJzZWQgPT09IFwib2JqZWN0XCIgJiYgcGFyc2VkICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHBhcnNlZCk7XG4gIGlmIChwYXJzZWQgIT09IHZvaWQgMCAmJiAhaXNPYmplY3QzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZVR5cGUpO1xuICB9XG4gIHJldHVybiBwYXJzZWQ7XG59XG5fX25hbWUodHJ5UGFyc2VKc29uT2JqZWN0LCBcInRyeVBhcnNlSnNvbk9iamVjdFwiKTtcbl9fbmFtZSRjKHRyeVBhcnNlSnNvbk9iamVjdCwgXCJ0cnlQYXJzZUpzb25PYmplY3RcIik7XG52YXIgdG9nZ2xlU2VsZWN0aW9uID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbigpIHtcbiAgdmFyIHNlbGVjdGlvbiA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpO1xuICBpZiAoIXNlbGVjdGlvbi5yYW5nZUNvdW50KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIH07XG4gIH1cbiAgdmFyIGFjdGl2ZSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gIHZhciByYW5nZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3Rpb24ucmFuZ2VDb3VudDsgaSsrKSB7XG4gICAgcmFuZ2VzLnB1c2goc2VsZWN0aW9uLmdldFJhbmdlQXQoaSkpO1xuICB9XG4gIHN3aXRjaCAoYWN0aXZlLnRhZ05hbWUudG9VcHBlckNhc2UoKSkge1xuICAgIGNhc2UgXCJJTlBVVFwiOlxuICAgIGNhc2UgXCJURVhUQVJFQVwiOlxuICAgICAgYWN0aXZlLmJsdXIoKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBhY3RpdmUgPSBudWxsO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgc2VsZWN0aW9uLnR5cGUgPT09IFwiQ2FyZXRcIiAmJiBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgaWYgKCFzZWxlY3Rpb24ucmFuZ2VDb3VudCkge1xuICAgICAgcmFuZ2VzLmZvckVhY2goZnVuY3Rpb24ocmFuZ2UyKSB7XG4gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZTIpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGFjdGl2ZSAmJiBhY3RpdmUuZm9jdXMoKTtcbiAgfTtcbn0sIFwidG9nZ2xlU2VsZWN0aW9uXCIpO1xudmFyIGRlc2VsZWN0Q3VycmVudCA9IHRvZ2dsZVNlbGVjdGlvbjtcbnZhciBjbGlwYm9hcmRUb0lFMTFGb3JtYXR0aW5nID0ge1xuICBcInRleHQvcGxhaW5cIjogXCJUZXh0XCIsXG4gIFwidGV4dC9odG1sXCI6IFwiVXJsXCIsXG4gIFwiZGVmYXVsdFwiOiBcIlRleHRcIlxufTtcbnZhciBkZWZhdWx0TWVzc2FnZSA9IFwiQ29weSB0byBjbGlwYm9hcmQ6ICN7a2V5fSwgRW50ZXJcIjtcbmZ1bmN0aW9uIGZvcm1hdDIobWVzc2FnZSkge1xuICB2YXIgY29weUtleSA9ICgvbWFjIG9zIHgvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpID8gXCJcXHUyMzE4XCIgOiBcIkN0cmxcIikgKyBcIitDXCI7XG4gIHJldHVybiBtZXNzYWdlLnJlcGxhY2UoLyN7XFxzKmtleVxccyp9L2csIGNvcHlLZXkpO1xufVxuX19uYW1lKGZvcm1hdDIsIFwiZm9ybWF0XCIpO1xuZnVuY3Rpb24gY29weSh0ZXh0Mywgb3B0aW9ucykge1xuICB2YXIgZGVidWcsIG1lc3NhZ2UsIHJlc2VsZWN0UHJldmlvdXMsIHJhbmdlMiwgc2VsZWN0aW9uLCBtYXJrLCBzdWNjZXNzID0gZmFsc2U7XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBkZWJ1ZyA9IG9wdGlvbnMuZGVidWcgfHwgZmFsc2U7XG4gIHRyeSB7XG4gICAgcmVzZWxlY3RQcmV2aW91cyA9IGRlc2VsZWN0Q3VycmVudCgpO1xuICAgIHJhbmdlMiA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgc2VsZWN0aW9uID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7XG4gICAgbWFyayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIG1hcmsudGV4dENvbnRlbnQgPSB0ZXh0MztcbiAgICBtYXJrLnN0eWxlLmFsbCA9IFwidW5zZXRcIjtcbiAgICBtYXJrLnN0eWxlLnBvc2l0aW9uID0gXCJmaXhlZFwiO1xuICAgIG1hcmsuc3R5bGUudG9wID0gMDtcbiAgICBtYXJrLnN0eWxlLmNsaXAgPSBcInJlY3QoMCwgMCwgMCwgMClcIjtcbiAgICBtYXJrLnN0eWxlLndoaXRlU3BhY2UgPSBcInByZVwiO1xuICAgIG1hcmsuc3R5bGUud2Via2l0VXNlclNlbGVjdCA9IFwidGV4dFwiO1xuICAgIG1hcmsuc3R5bGUuTW96VXNlclNlbGVjdCA9IFwidGV4dFwiO1xuICAgIG1hcmsuc3R5bGUubXNVc2VyU2VsZWN0ID0gXCJ0ZXh0XCI7XG4gICAgbWFyay5zdHlsZS51c2VyU2VsZWN0ID0gXCJ0ZXh0XCI7XG4gICAgbWFyay5hZGRFdmVudExpc3RlbmVyKFwiY29weVwiLCBmdW5jdGlvbihlKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgaWYgKG9wdGlvbnMuZm9ybWF0KSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBlLmNsaXBib2FyZERhdGEgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBkZWJ1ZyAmJiBjb25zb2xlLndhcm4oXCJ1bmFibGUgdG8gdXNlIGUuY2xpcGJvYXJkRGF0YVwiKTtcbiAgICAgICAgICBkZWJ1ZyAmJiBjb25zb2xlLndhcm4oXCJ0cnlpbmcgSUUgc3BlY2lmaWMgc3R1ZmZcIik7XG4gICAgICAgICAgd2luZG93LmNsaXBib2FyZERhdGEuY2xlYXJEYXRhKCk7XG4gICAgICAgICAgdmFyIGZvcm1hdDMgPSBjbGlwYm9hcmRUb0lFMTFGb3JtYXR0aW5nW29wdGlvbnMuZm9ybWF0XSB8fCBjbGlwYm9hcmRUb0lFMTFGb3JtYXR0aW5nW1wiZGVmYXVsdFwiXTtcbiAgICAgICAgICB3aW5kb3cuY2xpcGJvYXJkRGF0YS5zZXREYXRhKGZvcm1hdDMsIHRleHQzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlLmNsaXBib2FyZERhdGEuY2xlYXJEYXRhKCk7XG4gICAgICAgICAgZS5jbGlwYm9hcmREYXRhLnNldERhdGEob3B0aW9ucy5mb3JtYXQsIHRleHQzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMub25Db3B5KSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb3B0aW9ucy5vbkNvcHkoZS5jbGlwYm9hcmREYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1hcmspO1xuICAgIHJhbmdlMi5zZWxlY3ROb2RlQ29udGVudHMobWFyayk7XG4gICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlMik7XG4gICAgdmFyIHN1Y2Nlc3NmdWwgPSBkb2N1bWVudC5leGVjQ29tbWFuZChcImNvcHlcIik7XG4gICAgaWYgKCFzdWNjZXNzZnVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjb3B5IGNvbW1hbmQgd2FzIHVuc3VjY2Vzc2Z1bFwiKTtcbiAgICB9XG4gICAgc3VjY2VzcyA9IHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGRlYnVnICYmIGNvbnNvbGUuZXJyb3IoXCJ1bmFibGUgdG8gY29weSB1c2luZyBleGVjQ29tbWFuZDogXCIsIGVycik7XG4gICAgZGVidWcgJiYgY29uc29sZS53YXJuKFwidHJ5aW5nIElFIHNwZWNpZmljIHN0dWZmXCIpO1xuICAgIHRyeSB7XG4gICAgICB3aW5kb3cuY2xpcGJvYXJkRGF0YS5zZXREYXRhKG9wdGlvbnMuZm9ybWF0IHx8IFwidGV4dFwiLCB0ZXh0Myk7XG4gICAgICBvcHRpb25zLm9uQ29weSAmJiBvcHRpb25zLm9uQ29weSh3aW5kb3cuY2xpcGJvYXJkRGF0YSk7XG4gICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIyKSB7XG4gICAgICBkZWJ1ZyAmJiBjb25zb2xlLmVycm9yKFwidW5hYmxlIHRvIGNvcHkgdXNpbmcgY2xpcGJvYXJkRGF0YTogXCIsIGVycjIpO1xuICAgICAgZGVidWcgJiYgY29uc29sZS5lcnJvcihcImZhbGxpbmcgYmFjayB0byBwcm9tcHRcIik7XG4gICAgICBtZXNzYWdlID0gZm9ybWF0MihcIm1lc3NhZ2VcIiBpbiBvcHRpb25zID8gb3B0aW9ucy5tZXNzYWdlIDogZGVmYXVsdE1lc3NhZ2UpO1xuICAgICAgd2luZG93LnByb21wdChtZXNzYWdlLCB0ZXh0Myk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgIGlmICh0eXBlb2Ygc2VsZWN0aW9uLnJlbW92ZVJhbmdlID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlUmFuZ2UocmFuZ2UyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG1hcmspIHtcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobWFyayk7XG4gICAgfVxuICAgIHJlc2VsZWN0UHJldmlvdXMoKTtcbiAgfVxuICByZXR1cm4gc3VjY2Vzcztcbn1cbl9fbmFtZShjb3B5LCBcImNvcHlcIik7XG52YXIgY29weVRvQ2xpcGJvYXJkID0gY29weTtcbnZhciBfX2RlZlByb3AkYiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUkYiA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKHRhcmdldDIsIHZhbHVlKSA9PiBfX2RlZlByb3AkYih0YXJnZXQyLCBcIm5hbWVcIiwgeyB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pLCBcIl9fbmFtZSRiXCIpO1xuY29uc3QgU2NoZW1hQ29udGV4dCA9IGNyZWF0ZU51bGxhYmxlQ29udGV4dChcIlNjaGVtYUNvbnRleHRcIik7XG5mdW5jdGlvbiBTY2hlbWFDb250ZXh0UHJvdmlkZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGluaXRpYWxIZWFkZXJzLFxuICAgIGhlYWRlckVkaXRvclxuICB9ID0gdXNlRWRpdG9yQ29udGV4dCh7XG4gICAgbm9uTnVsbDogdHJ1ZSxcbiAgICBjYWxsZXI6IFNjaGVtYUNvbnRleHRQcm92aWRlclxuICB9KTtcbiAgY29uc3QgW3NjaGVtYSwgc2V0U2NoZW1hXSA9IHVzZVN0YXRlKCk7XG4gIGNvbnN0IFtpc0ZldGNoaW5nLCBzZXRJc0ZldGNoaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZldGNoRXJyb3IsIHNldEZldGNoRXJyb3JdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IGNvdW50ZXJSZWYgPSB1c2VSZWYoMCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2NoZW1hKGlzU2NoZW1hKHByb3BzLnNjaGVtYSkgfHwgcHJvcHMuc2NoZW1hID09PSBudWxsIHx8IHByb3BzLnNjaGVtYSA9PT0gdm9pZCAwID8gcHJvcHMuc2NoZW1hIDogdm9pZCAwKTtcbiAgICBjb3VudGVyUmVmLmN1cnJlbnQrKztcbiAgfSwgW3Byb3BzLnNjaGVtYV0pO1xuICBjb25zdCBoZWFkZXJzUmVmID0gdXNlUmVmKGluaXRpYWxIZWFkZXJzKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaGVhZGVyRWRpdG9yKSB7XG4gICAgICBoZWFkZXJzUmVmLmN1cnJlbnQgPSBoZWFkZXJFZGl0b3IuZ2V0VmFsdWUoKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCB7XG4gICAgaW50cm9zcGVjdGlvblF1ZXJ5LFxuICAgIGludHJvc3BlY3Rpb25RdWVyeU5hbWUsXG4gICAgaW50cm9zcGVjdGlvblF1ZXJ5U2Fuc1N1YnNjcmlwdGlvbnNcbiAgfSA9IHVzZUludHJvc3BlY3Rpb25RdWVyeSh7XG4gICAgaW5wdXRWYWx1ZURlcHJlY2F0aW9uOiBwcm9wcy5pbnB1dFZhbHVlRGVwcmVjYXRpb24sXG4gICAgaW50cm9zcGVjdGlvblF1ZXJ5TmFtZTogcHJvcHMuaW50cm9zcGVjdGlvblF1ZXJ5TmFtZSxcbiAgICBzY2hlbWFEZXNjcmlwdGlvbjogcHJvcHMuc2NoZW1hRGVzY3JpcHRpb25cbiAgfSk7XG4gIGNvbnN0IHtcbiAgICBmZXRjaGVyLFxuICAgIG9uU2NoZW1hQ2hhbmdlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgaW50cm9zcGVjdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaXNTY2hlbWEocHJvcHMuc2NoZW1hKSB8fCBwcm9wcy5zY2hlbWEgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY291bnRlciA9ICsrY291bnRlclJlZi5jdXJyZW50O1xuICAgIHNldFNjaGVtYSh2b2lkIDApO1xuICAgIGNvbnN0IG1heWJlSW50cm9zcGVjdGlvbkRhdGEgPSBwcm9wcy5zY2hlbWE7XG4gICAgYXN5bmMgZnVuY3Rpb24gZmV0Y2hJbnRyb3NwZWN0aW9uRGF0YSgpIHtcbiAgICAgIGlmIChtYXliZUludHJvc3BlY3Rpb25EYXRhKSB7XG4gICAgICAgIHJldHVybiBtYXliZUludHJvc3BlY3Rpb25EYXRhO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFyc2VkSGVhZGVycyA9IHBhcnNlSGVhZGVyU3RyaW5nKGhlYWRlcnNSZWYuY3VycmVudCk7XG4gICAgICBpZiAoIXBhcnNlZEhlYWRlcnMuaXNWYWxpZEpTT04pIHtcbiAgICAgICAgc2V0RmV0Y2hFcnJvcihcIkludHJvc3BlY3Rpb24gZmFpbGVkIGFzIGhlYWRlcnMgYXJlIGludmFsaWQuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBmZXRjaGVyT3B0cyA9IHBhcnNlZEhlYWRlcnMuaGVhZGVycyA/IHtcbiAgICAgICAgaGVhZGVyczogcGFyc2VkSGVhZGVycy5oZWFkZXJzXG4gICAgICB9IDoge307XG4gICAgICBjb25zdCBmZXRjaDIgPSBmZXRjaGVyUmV0dXJuVG9Qcm9taXNlKGZldGNoZXIoe1xuICAgICAgICBxdWVyeTogaW50cm9zcGVjdGlvblF1ZXJ5LFxuICAgICAgICBvcGVyYXRpb25OYW1lOiBpbnRyb3NwZWN0aW9uUXVlcnlOYW1lXG4gICAgICB9LCBmZXRjaGVyT3B0cykpO1xuICAgICAgaWYgKCFpc1Byb21pc2UoZmV0Y2gyKSkge1xuICAgICAgICBzZXRGZXRjaEVycm9yKFwiRmV0Y2hlciBkaWQgbm90IHJldHVybiBhIFByb21pc2UgZm9yIGludHJvc3BlY3Rpb24uXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzZXRJc0ZldGNoaW5nKHRydWUpO1xuICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGZldGNoMjtcbiAgICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiIHx8IHJlc3VsdCA9PT0gbnVsbCB8fCAhKFwiZGF0YVwiIGluIHJlc3VsdCkpIHtcbiAgICAgICAgY29uc3QgZmV0Y2gyMiA9IGZldGNoZXJSZXR1cm5Ub1Byb21pc2UoZmV0Y2hlcih7XG4gICAgICAgICAgcXVlcnk6IGludHJvc3BlY3Rpb25RdWVyeVNhbnNTdWJzY3JpcHRpb25zLFxuICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IGludHJvc3BlY3Rpb25RdWVyeU5hbWVcbiAgICAgICAgfSwgZmV0Y2hlck9wdHMpKTtcbiAgICAgICAgaWYgKCFpc1Byb21pc2UoZmV0Y2gyMikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGZXRjaGVyIGRpZCBub3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgaW50cm9zcGVjdGlvbi5cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgZmV0Y2gyMjtcbiAgICAgIH1cbiAgICAgIHNldElzRmV0Y2hpbmcoZmFsc2UpO1xuICAgICAgaWYgKChyZXN1bHQgPT0gbnVsbCA/IHZvaWQgMCA6IHJlc3VsdC5kYXRhKSAmJiBcIl9fc2NoZW1hXCIgaW4gcmVzdWx0LmRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzcG9uc2VTdHJpbmcgPSB0eXBlb2YgcmVzdWx0ID09PSBcInN0cmluZ1wiID8gcmVzdWx0IDogZm9ybWF0UmVzdWx0KHJlc3VsdCk7XG4gICAgICBzZXRGZXRjaEVycm9yKHJlc3BvbnNlU3RyaW5nKTtcbiAgICB9XG4gICAgX19uYW1lKGZldGNoSW50cm9zcGVjdGlvbkRhdGEsIFwiZmV0Y2hJbnRyb3NwZWN0aW9uRGF0YVwiKTtcbiAgICBfX25hbWUkYihmZXRjaEludHJvc3BlY3Rpb25EYXRhLCBcImZldGNoSW50cm9zcGVjdGlvbkRhdGFcIik7XG4gICAgZmV0Y2hJbnRyb3NwZWN0aW9uRGF0YSgpLnRoZW4oKGludHJvc3BlY3Rpb25EYXRhKSA9PiB7XG4gICAgICBpZiAoY291bnRlciAhPT0gY291bnRlclJlZi5jdXJyZW50IHx8ICFpbnRyb3NwZWN0aW9uRGF0YSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBuZXdTY2hlbWEgPSBidWlsZENsaWVudFNjaGVtYShpbnRyb3NwZWN0aW9uRGF0YSk7XG4gICAgICAgIHNldFNjaGVtYShuZXdTY2hlbWEpO1xuICAgICAgICBvblNjaGVtYUNoYW5nZSA9PSBudWxsID8gdm9pZCAwIDogb25TY2hlbWFDaGFuZ2UobmV3U2NoZW1hKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yMikge1xuICAgICAgICBzZXRGZXRjaEVycm9yKGZvcm1hdEVycm9yKGVycm9yMikpO1xuICAgICAgfVxuICAgIH0pLmNhdGNoKChlcnJvcjIpID0+IHtcbiAgICAgIGlmIChjb3VudGVyICE9PSBjb3VudGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0RmV0Y2hFcnJvcihmb3JtYXRFcnJvcihlcnJvcjIpKTtcbiAgICAgIHNldElzRmV0Y2hpbmcoZmFsc2UpO1xuICAgIH0pO1xuICB9LCBbZmV0Y2hlciwgaW50cm9zcGVjdGlvblF1ZXJ5TmFtZSwgaW50cm9zcGVjdGlvblF1ZXJ5LCBpbnRyb3NwZWN0aW9uUXVlcnlTYW5zU3Vic2NyaXB0aW9ucywgb25TY2hlbWFDaGFuZ2UsIHByb3BzLnNjaGVtYV0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGludHJvc3BlY3QoKTtcbiAgfSwgW2ludHJvc3BlY3RdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiB0cmlnZ2VySW50cm9zcGVjdGlvbihldmVudCkge1xuICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDgyICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgaW50cm9zcGVjdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUodHJpZ2dlckludHJvc3BlY3Rpb24sIFwidHJpZ2dlckludHJvc3BlY3Rpb25cIik7XG4gICAgX19uYW1lJGIodHJpZ2dlckludHJvc3BlY3Rpb24sIFwidHJpZ2dlckludHJvc3BlY3Rpb25cIik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRyaWdnZXJJbnRyb3NwZWN0aW9uKTtcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRyaWdnZXJJbnRyb3NwZWN0aW9uKTtcbiAgfSk7XG4gIGNvbnN0IHZhbGlkYXRpb25FcnJvcnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIXNjaGVtYSB8fCBwcm9wcy5kYW5nZXJvdXNseUFzc3VtZVNjaGVtYUlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRlU2NoZW1hKHNjaGVtYSk7XG4gIH0sIFtzY2hlbWEsIHByb3BzLmRhbmdlcm91c2x5QXNzdW1lU2NoZW1hSXNWYWxpZF0pO1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBmZXRjaEVycm9yLFxuICAgIGludHJvc3BlY3QsXG4gICAgaXNGZXRjaGluZyxcbiAgICBzY2hlbWEsXG4gICAgdmFsaWRhdGlvbkVycm9yc1xuICB9KSwgW2ZldGNoRXJyb3IsIGludHJvc3BlY3QsIGlzRmV0Y2hpbmcsIHNjaGVtYSwgdmFsaWRhdGlvbkVycm9yc10pO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChTY2hlbWFDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWUsXG4gICAgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuXG4gIH0pO1xufVxuX19uYW1lKFNjaGVtYUNvbnRleHRQcm92aWRlciwgXCJTY2hlbWFDb250ZXh0UHJvdmlkZXJcIik7XG5fX25hbWUkYihTY2hlbWFDb250ZXh0UHJvdmlkZXIsIFwiU2NoZW1hQ29udGV4dFByb3ZpZGVyXCIpO1xuY29uc3QgdXNlU2NoZW1hQ29udGV4dCA9IGNyZWF0ZUNvbnRleHRIb29rKFNjaGVtYUNvbnRleHQpO1xuZnVuY3Rpb24gdXNlSW50cm9zcGVjdGlvblF1ZXJ5KHtcbiAgaW5wdXRWYWx1ZURlcHJlY2F0aW9uLFxuICBpbnRyb3NwZWN0aW9uUXVlcnlOYW1lLFxuICBzY2hlbWFEZXNjcmlwdGlvblxufSkge1xuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcXVlcnlOYW1lID0gaW50cm9zcGVjdGlvblF1ZXJ5TmFtZSB8fCBcIkludHJvc3BlY3Rpb25RdWVyeVwiO1xuICAgIGxldCBxdWVyeSA9IGdldEludHJvc3BlY3Rpb25RdWVyeSh7XG4gICAgICBpbnB1dFZhbHVlRGVwcmVjYXRpb24sXG4gICAgICBzY2hlbWFEZXNjcmlwdGlvblxuICAgIH0pO1xuICAgIGlmIChpbnRyb3NwZWN0aW9uUXVlcnlOYW1lKSB7XG4gICAgICBxdWVyeSA9IHF1ZXJ5LnJlcGxhY2UoXCJxdWVyeSBJbnRyb3NwZWN0aW9uUXVlcnlcIiwgYHF1ZXJ5ICR7cXVlcnlOYW1lfWApO1xuICAgIH1cbiAgICBjb25zdCBxdWVyeVNhbnNTdWJzY3JpcHRpb25zID0gcXVlcnkucmVwbGFjZShcInN1YnNjcmlwdGlvblR5cGUgeyBuYW1lIH1cIiwgXCJcIik7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludHJvc3BlY3Rpb25RdWVyeU5hbWU6IHF1ZXJ5TmFtZSxcbiAgICAgIGludHJvc3BlY3Rpb25RdWVyeTogcXVlcnksXG4gICAgICBpbnRyb3NwZWN0aW9uUXVlcnlTYW5zU3Vic2NyaXB0aW9uczogcXVlcnlTYW5zU3Vic2NyaXB0aW9uc1xuICAgIH07XG4gIH0sIFtpbnB1dFZhbHVlRGVwcmVjYXRpb24sIGludHJvc3BlY3Rpb25RdWVyeU5hbWUsIHNjaGVtYURlc2NyaXB0aW9uXSk7XG59XG5fX25hbWUodXNlSW50cm9zcGVjdGlvblF1ZXJ5LCBcInVzZUludHJvc3BlY3Rpb25RdWVyeVwiKTtcbl9fbmFtZSRiKHVzZUludHJvc3BlY3Rpb25RdWVyeSwgXCJ1c2VJbnRyb3NwZWN0aW9uUXVlcnlcIik7XG5mdW5jdGlvbiBwYXJzZUhlYWRlclN0cmluZyhoZWFkZXJzU3RyaW5nKSB7XG4gIGxldCBoZWFkZXJzID0gbnVsbDtcbiAgbGV0IGlzVmFsaWRKU09OID0gdHJ1ZTtcbiAgdHJ5IHtcbiAgICBpZiAoaGVhZGVyc1N0cmluZykge1xuICAgICAgaGVhZGVycyA9IEpTT04ucGFyc2UoaGVhZGVyc1N0cmluZyk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpc1ZhbGlkSlNPTiA9IGZhbHNlO1xuICB9XG4gIHJldHVybiB7XG4gICAgaGVhZGVycyxcbiAgICBpc1ZhbGlkSlNPTlxuICB9O1xufVxuX19uYW1lKHBhcnNlSGVhZGVyU3RyaW5nLCBcInBhcnNlSGVhZGVyU3RyaW5nXCIpO1xuX19uYW1lJGIocGFyc2VIZWFkZXJTdHJpbmcsIFwicGFyc2VIZWFkZXJTdHJpbmdcIik7XG52YXIgX19kZWZQcm9wJGEgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lJGEgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKCh0YXJnZXQyLCB2YWx1ZSkgPT4gX19kZWZQcm9wJGEodGFyZ2V0MiwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KSwgXCJfX25hbWUkYVwiKTtcbmNvbnN0IGluaXRpYWxOYXZTdGFja0l0ZW0gPSB7XG4gIG5hbWU6IFwiU2NoZW1hXCIsXG4gIHRpdGxlOiBcIkRvY3VtZW50YXRpb24gRXhwbG9yZXJcIlxufTtcbmNvbnN0IEV4cGxvcmVyQ29udGV4dCA9IGNyZWF0ZU51bGxhYmxlQ29udGV4dChcIkV4cGxvcmVyQ29udGV4dFwiKTtcbmZ1bmN0aW9uIEV4cGxvcmVyQ29udGV4dFByb3ZpZGVyKHByb3BzKSB7XG4gIHZhciBfYSwgX2I7XG4gIGNvbnN0IHtcbiAgICBpc0ZldGNoaW5nXG4gIH0gPSB1c2VTY2hlbWFDb250ZXh0KHtcbiAgICBub25OdWxsOiB0cnVlLFxuICAgIGNhbGxlcjogRXhwbG9yZXJDb250ZXh0UHJvdmlkZXJcbiAgfSk7XG4gIGNvbnN0IHN0b3JhZ2UgPSB1c2VTdG9yYWdlQ29udGV4dCgpO1xuICBjb25zdCBbaXNWaXNpYmxlLCBzZXRJc1Zpc2libGVdID0gdXNlU3RhdGUoKF9iID0gKF9hID0gcHJvcHMuaXNWaXNpYmxlKSAhPSBudWxsID8gX2EgOiAoc3RvcmFnZSA9PSBudWxsID8gdm9pZCAwIDogc3RvcmFnZS5nZXQoU1RPUkFHRV9LRVkkMykpID09PSBcInRydWVcIikgIT0gbnVsbCA/IF9iIDogZmFsc2UpO1xuICBjb25zdCBbbmF2U3RhY2ssIHNldE5hdlN0YWNrXSA9IHVzZVN0YXRlKFtpbml0aWFsTmF2U3RhY2tJdGVtXSk7XG4gIGNvbnN0IHtcbiAgICBvblRvZ2dsZVZpc2liaWxpdHlcbiAgfSA9IHByb3BzO1xuICBjb25zdCBpc0luaXRpYWxSZW5kZXIgPSB1c2VSZWYodHJ1ZSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzSW5pdGlhbFJlbmRlci5jdXJyZW50KSB7XG4gICAgICBpc0luaXRpYWxSZW5kZXIuY3VycmVudCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuaXNWaXNpYmxlICE9PSB2b2lkIDApIHtcbiAgICAgIHNldElzVmlzaWJsZShwcm9wcy5pc1Zpc2libGUpO1xuICAgIH1cbiAgfSwgW3Byb3BzLmlzVmlzaWJsZV0pO1xuICBjb25zdCBoaWRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIG9uVG9nZ2xlVmlzaWJpbGl0eSA9PSBudWxsID8gdm9pZCAwIDogb25Ub2dnbGVWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICBzdG9yYWdlID09IG51bGwgPyB2b2lkIDAgOiBzdG9yYWdlLnNldChTVE9SQUdFX0tFWSQzLCBcImZhbHNlXCIpO1xuICAgIHNldElzVmlzaWJsZShmYWxzZSk7XG4gIH0sIFtvblRvZ2dsZVZpc2liaWxpdHksIHN0b3JhZ2VdKTtcbiAgY29uc3QgcHVzaCA9IHVzZUNhbGxiYWNrKChpdGVtKSA9PiB7XG4gICAgc2V0TmF2U3RhY2soKGN1cnJlbnRTdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgbGFzdEl0ZW0gPSBjdXJyZW50U3RhdGVbY3VycmVudFN0YXRlLmxlbmd0aCAtIDFdO1xuICAgICAgcmV0dXJuIGxhc3RJdGVtLmRlZiA9PT0gaXRlbS5kZWYgPyBjdXJyZW50U3RhdGUgOiBbLi4uY3VycmVudFN0YXRlLCBpdGVtXTtcbiAgICB9KTtcbiAgfSwgW10pO1xuICBjb25zdCBwb3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0TmF2U3RhY2soKGN1cnJlbnRTdGF0ZSkgPT4gY3VycmVudFN0YXRlLmxlbmd0aCA+IDEgPyBjdXJyZW50U3RhdGUuc2xpY2UoMCwgLTEpIDogY3VycmVudFN0YXRlKTtcbiAgfSwgW10pO1xuICBjb25zdCByZXNldCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXROYXZTdGFjaygoY3VycmVudFN0YXRlKSA9PiBjdXJyZW50U3RhdGUubGVuZ3RoID09PSAxID8gY3VycmVudFN0YXRlIDogW2luaXRpYWxOYXZTdGFja0l0ZW1dKTtcbiAgfSwgW10pO1xuICBjb25zdCBzaG93ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIG9uVG9nZ2xlVmlzaWJpbGl0eSA9PSBudWxsID8gdm9pZCAwIDogb25Ub2dnbGVWaXNpYmlsaXR5KHRydWUpO1xuICAgIHN0b3JhZ2UgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3JhZ2Uuc2V0KFNUT1JBR0VfS0VZJDMsIFwidHJ1ZVwiKTtcbiAgICBzZXRJc1Zpc2libGUodHJ1ZSk7XG4gIH0sIFtvblRvZ2dsZVZpc2liaWxpdHksIHN0b3JhZ2VdKTtcbiAgY29uc3Qgc2hvd1NlYXJjaCA9IHVzZUNhbGxiYWNrKChzZWFyY2gpID0+IHtcbiAgICBzZXROYXZTdGFjaygoY3VycmVudFN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBsYXN0SXRlbSA9IGN1cnJlbnRTdGF0ZVtjdXJyZW50U3RhdGUubGVuZ3RoIC0gMV07XG4gICAgICBjb25zdCBhbGxCdXRMYXN0SXRlbSA9IGN1cnJlbnRTdGF0ZS5zbGljZSgwLCAtMSk7XG4gICAgICByZXR1cm4gWy4uLmFsbEJ1dExhc3RJdGVtLCBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBsYXN0SXRlbSksIHtcbiAgICAgICAgc2VhcmNoXG4gICAgICB9KV07XG4gICAgfSk7XG4gIH0sIFtdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNGZXRjaGluZykge1xuICAgICAgcmVzZXQoKTtcbiAgICB9XG4gIH0sIFtpc0ZldGNoaW5nLCByZXNldF0pO1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBleHBsb3Jlck5hdlN0YWNrOiBuYXZTdGFjayxcbiAgICBoaWRlLFxuICAgIGlzVmlzaWJsZSxcbiAgICBwdXNoLFxuICAgIHBvcCxcbiAgICByZXNldCxcbiAgICBzaG93LFxuICAgIHNob3dTZWFyY2hcbiAgfSksIFtoaWRlLCBpc1Zpc2libGUsIG5hdlN0YWNrLCBwdXNoLCBwb3AsIHJlc2V0LCBzaG93LCBzaG93U2VhcmNoXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEV4cGxvcmVyQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlLFxuICAgIGNoaWxkcmVuOiBwcm9wcy5jaGlsZHJlblxuICB9KTtcbn1cbl9fbmFtZShFeHBsb3JlckNvbnRleHRQcm92aWRlciwgXCJFeHBsb3JlckNvbnRleHRQcm92aWRlclwiKTtcbl9fbmFtZSRhKEV4cGxvcmVyQ29udGV4dFByb3ZpZGVyLCBcIkV4cGxvcmVyQ29udGV4dFByb3ZpZGVyXCIpO1xuY29uc3QgdXNlRXhwbG9yZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dEhvb2soRXhwbG9yZXJDb250ZXh0KTtcbmNvbnN0IFNUT1JBR0VfS0VZJDMgPSBcImRvY0V4cGxvcmVyT3BlblwiO1xudmFyIF9fZGVmUHJvcCQ5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSQ5ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgodGFyZ2V0MiwgdmFsdWUpID0+IF9fZGVmUHJvcCQ5KHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSksIFwiX19uYW1lJDlcIik7XG5mdW5jdGlvbiBkZWJvdW5jZShkdXJhdGlvbiwgZm4pIHtcbiAgbGV0IHRpbWVvdXQ7XG4gIHJldHVybiBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgfVxuICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgIH0sIGR1cmF0aW9uKTtcbiAgfTtcbn1cbl9fbmFtZShkZWJvdW5jZSwgXCJkZWJvdW5jZVwiKTtcbl9fbmFtZSQ5KGRlYm91bmNlLCBcImRlYm91bmNlXCIpO1xudmFyIF9fZGVmUHJvcCQ4ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSQ4ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgodGFyZ2V0MiwgdmFsdWUpID0+IF9fZGVmUHJvcCQ4KHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSksIFwiX19uYW1lJDhcIik7XG5mdW5jdGlvbiB1c2VTeW5jaHJvbml6ZVZhbHVlKGVkaXRvciwgdmFsdWUpIHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZWRpdG9yICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZSAhPT0gZWRpdG9yLmdldFZhbHVlKCkpIHtcbiAgICAgIGVkaXRvci5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9LCBbZWRpdG9yLCB2YWx1ZV0pO1xufVxuX19uYW1lKHVzZVN5bmNocm9uaXplVmFsdWUsIFwidXNlU3luY2hyb25pemVWYWx1ZVwiKTtcbl9fbmFtZSQ4KHVzZVN5bmNocm9uaXplVmFsdWUsIFwidXNlU3luY2hyb25pemVWYWx1ZVwiKTtcbmZ1bmN0aW9uIHVzZVN5bmNocm9uaXplT3B0aW9uKGVkaXRvciwgb3B0aW9uLCB2YWx1ZSkge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIGVkaXRvci5zZXRPcHRpb24ob3B0aW9uLCB2YWx1ZSk7XG4gICAgfVxuICB9LCBbZWRpdG9yLCBvcHRpb24sIHZhbHVlXSk7XG59XG5fX25hbWUodXNlU3luY2hyb25pemVPcHRpb24sIFwidXNlU3luY2hyb25pemVPcHRpb25cIik7XG5fX25hbWUkOCh1c2VTeW5jaHJvbml6ZU9wdGlvbiwgXCJ1c2VTeW5jaHJvbml6ZU9wdGlvblwiKTtcbmZ1bmN0aW9uIHVzZUNoYW5nZUhhbmRsZXIoZWRpdG9yLCBjYWxsYmFjaywgc3RvcmFnZUtleSwgdGFiUHJvcGVydHksIGNhbGxlcikge1xuICBjb25zdCB7IHVwZGF0ZUFjdGl2ZVRhYlZhbHVlcyB9ID0gdXNlRWRpdG9yQ29udGV4dCh7IG5vbk51bGw6IHRydWUsIGNhbGxlciB9KTtcbiAgY29uc3Qgc3RvcmFnZSA9IHVzZVN0b3JhZ2VDb250ZXh0KCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc3RvcmUgPSBkZWJvdW5jZSg1MDAsICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCFzdG9yYWdlIHx8IHN0b3JhZ2VLZXkgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3RvcmFnZS5zZXQoc3RvcmFnZUtleSwgdmFsdWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IHVwZGF0ZVRhYiA9IGRlYm91bmNlKDEwMCwgKHZhbHVlKSA9PiB7XG4gICAgICB1cGRhdGVBY3RpdmVUYWJWYWx1ZXMoeyBbdGFiUHJvcGVydHldOiB2YWx1ZSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lJDgoKGVkaXRvckluc3RhbmNlLCBjaGFuZ2VPYmopID0+IHtcbiAgICAgIGlmICghY2hhbmdlT2JqKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZWRpdG9ySW5zdGFuY2UuZ2V0VmFsdWUoKTtcbiAgICAgIHN0b3JlKG5ld1ZhbHVlKTtcbiAgICAgIHVwZGF0ZVRhYihuZXdWYWx1ZSk7XG4gICAgICBjYWxsYmFjayA9PSBudWxsID8gdm9pZCAwIDogY2FsbGJhY2sobmV3VmFsdWUpO1xuICAgIH0sIFwiaGFuZGxlQ2hhbmdlXCIpO1xuICAgIGVkaXRvci5vbihcImNoYW5nZVwiLCBoYW5kbGVDaGFuZ2UpO1xuICAgIHJldHVybiAoKSA9PiBlZGl0b3Iub2ZmKFwiY2hhbmdlXCIsIGhhbmRsZUNoYW5nZSk7XG4gIH0sIFtcbiAgICBjYWxsYmFjayxcbiAgICBlZGl0b3IsXG4gICAgc3RvcmFnZSxcbiAgICBzdG9yYWdlS2V5LFxuICAgIHRhYlByb3BlcnR5LFxuICAgIHVwZGF0ZUFjdGl2ZVRhYlZhbHVlc1xuICBdKTtcbn1cbl9fbmFtZSh1c2VDaGFuZ2VIYW5kbGVyLCBcInVzZUNoYW5nZUhhbmRsZXJcIik7XG5fX25hbWUkOCh1c2VDaGFuZ2VIYW5kbGVyLCBcInVzZUNoYW5nZUhhbmRsZXJcIik7XG5mdW5jdGlvbiB1c2VDb21wbGV0aW9uKGVkaXRvciwgY2FsbGVyKSB7XG4gIGNvbnN0IHsgc2NoZW1hIH0gPSB1c2VTY2hlbWFDb250ZXh0KHsgbm9uTnVsbDogdHJ1ZSwgY2FsbGVyIH0pO1xuICBjb25zdCBleHBsb3JlciA9IHVzZUV4cGxvcmVyQ29udGV4dCgpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZUNvbXBsZXRpb24gPSAvKiBAX19QVVJFX18gKi8gX19uYW1lJDgoKGluc3RhbmNlLCBjaGFuZ2VPYmopID0+IHtcbiAgICAgIG9uSGFzQ29tcGxldGlvbihpbnN0YW5jZSwgY2hhbmdlT2JqLCBzY2hlbWEsIGV4cGxvcmVyKTtcbiAgICB9LCBcImhhbmRsZUNvbXBsZXRpb25cIik7XG4gICAgZWRpdG9yLm9uKFwiaGFzQ29tcGxldGlvblwiLCBoYW5kbGVDb21wbGV0aW9uKTtcbiAgICByZXR1cm4gKCkgPT4gZWRpdG9yLm9mZihcImhhc0NvbXBsZXRpb25cIiwgaGFuZGxlQ29tcGxldGlvbik7XG4gIH0sIFtlZGl0b3IsIGV4cGxvcmVyLCBzY2hlbWFdKTtcbn1cbl9fbmFtZSh1c2VDb21wbGV0aW9uLCBcInVzZUNvbXBsZXRpb25cIik7XG5fX25hbWUkOCh1c2VDb21wbGV0aW9uLCBcInVzZUNvbXBsZXRpb25cIik7XG5mdW5jdGlvbiB1c2VLZXlNYXAoZWRpdG9yLCBrZXlzLCBjYWxsYmFjaykge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGVkaXRvci5yZW1vdmVLZXlNYXAoa2V5KTtcbiAgICB9XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjb25zdCBrZXlNYXAgPSB7fTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAga2V5TWFwW2tleV0gPSAoKSA9PiBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgICAgZWRpdG9yLmFkZEtleU1hcChrZXlNYXApO1xuICAgIH1cbiAgfSwgW2VkaXRvciwga2V5cywgY2FsbGJhY2tdKTtcbn1cbl9fbmFtZSh1c2VLZXlNYXAsIFwidXNlS2V5TWFwXCIpO1xuX19uYW1lJDgodXNlS2V5TWFwLCBcInVzZUtleU1hcFwiKTtcbmZ1bmN0aW9uIHVzZUNvcHlRdWVyeSh7XG4gIGNhbGxlcixcbiAgb25Db3B5UXVlcnlcbn0gPSB7fSkge1xuICBjb25zdCB7IHF1ZXJ5RWRpdG9yIH0gPSB1c2VFZGl0b3JDb250ZXh0KHtcbiAgICBub25OdWxsOiB0cnVlLFxuICAgIGNhbGxlcjogY2FsbGVyIHx8IHVzZUNvcHlRdWVyeVxuICB9KTtcbiAgcmV0dXJuIHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXF1ZXJ5RWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJ5ID0gcXVlcnlFZGl0b3IuZ2V0VmFsdWUoKTtcbiAgICBjb3B5VG9DbGlwYm9hcmQocXVlcnkpO1xuICAgIG9uQ29weVF1ZXJ5ID09IG51bGwgPyB2b2lkIDAgOiBvbkNvcHlRdWVyeShxdWVyeSk7XG4gIH0sIFtxdWVyeUVkaXRvciwgb25Db3B5UXVlcnldKTtcbn1cbl9fbmFtZSh1c2VDb3B5UXVlcnksIFwidXNlQ29weVF1ZXJ5XCIpO1xuX19uYW1lJDgodXNlQ29weVF1ZXJ5LCBcInVzZUNvcHlRdWVyeVwiKTtcbmZ1bmN0aW9uIHVzZU1lcmdlUXVlcnkoeyBjYWxsZXIgfSA9IHt9KSB7XG4gIGNvbnN0IHsgcXVlcnlFZGl0b3IgfSA9IHVzZUVkaXRvckNvbnRleHQoe1xuICAgIG5vbk51bGw6IHRydWUsXG4gICAgY2FsbGVyOiBjYWxsZXIgfHwgdXNlTWVyZ2VRdWVyeVxuICB9KTtcbiAgY29uc3QgeyBzY2hlbWEgfSA9IHVzZVNjaGVtYUNvbnRleHQoeyBub25OdWxsOiB0cnVlLCBjYWxsZXI6IHVzZU1lcmdlUXVlcnkgfSk7XG4gIHJldHVybiB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZG9jdW1lbnRBU1QgPSBxdWVyeUVkaXRvciA9PSBudWxsID8gdm9pZCAwIDogcXVlcnlFZGl0b3IuZG9jdW1lbnRBU1Q7XG4gICAgY29uc3QgcXVlcnkgPSBxdWVyeUVkaXRvciA9PSBudWxsID8gdm9pZCAwIDogcXVlcnlFZGl0b3IuZ2V0VmFsdWUoKTtcbiAgICBpZiAoIWRvY3VtZW50QVNUIHx8ICFxdWVyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBxdWVyeUVkaXRvci5zZXRWYWx1ZShwcmludChtZXJnZUFzdChkb2N1bWVudEFTVCwgc2NoZW1hKSkpO1xuICB9LCBbcXVlcnlFZGl0b3IsIHNjaGVtYV0pO1xufVxuX19uYW1lKHVzZU1lcmdlUXVlcnksIFwidXNlTWVyZ2VRdWVyeVwiKTtcbl9fbmFtZSQ4KHVzZU1lcmdlUXVlcnksIFwidXNlTWVyZ2VRdWVyeVwiKTtcbmZ1bmN0aW9uIHVzZVByZXR0aWZ5RWRpdG9ycyh7XG4gIGNhbGxlclxufSA9IHt9KSB7XG4gIGNvbnN0IHsgcXVlcnlFZGl0b3IsIGhlYWRlckVkaXRvciwgdmFyaWFibGVFZGl0b3IgfSA9IHVzZUVkaXRvckNvbnRleHQoe1xuICAgIG5vbk51bGw6IHRydWUsXG4gICAgY2FsbGVyOiBjYWxsZXIgfHwgdXNlUHJldHRpZnlFZGl0b3JzXG4gIH0pO1xuICByZXR1cm4gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICh2YXJpYWJsZUVkaXRvcikge1xuICAgICAgY29uc3QgdmFyaWFibGVFZGl0b3JDb250ZW50ID0gdmFyaWFibGVFZGl0b3IuZ2V0VmFsdWUoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHByZXR0aWZpZWRWYXJpYWJsZUVkaXRvckNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShKU09OLnBhcnNlKHZhcmlhYmxlRWRpdG9yQ29udGVudCksIG51bGwsIDIpO1xuICAgICAgICBpZiAocHJldHRpZmllZFZhcmlhYmxlRWRpdG9yQ29udGVudCAhPT0gdmFyaWFibGVFZGl0b3JDb250ZW50KSB7XG4gICAgICAgICAgdmFyaWFibGVFZGl0b3Iuc2V0VmFsdWUocHJldHRpZmllZFZhcmlhYmxlRWRpdG9yQ29udGVudCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2gge1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaGVhZGVyRWRpdG9yKSB7XG4gICAgICBjb25zdCBoZWFkZXJFZGl0b3JDb250ZW50ID0gaGVhZGVyRWRpdG9yLmdldFZhbHVlKCk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwcmV0dGlmaWVkSGVhZGVyRWRpdG9yQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KEpTT04ucGFyc2UoaGVhZGVyRWRpdG9yQ29udGVudCksIG51bGwsIDIpO1xuICAgICAgICBpZiAocHJldHRpZmllZEhlYWRlckVkaXRvckNvbnRlbnQgIT09IGhlYWRlckVkaXRvckNvbnRlbnQpIHtcbiAgICAgICAgICBoZWFkZXJFZGl0b3Iuc2V0VmFsdWUocHJldHRpZmllZEhlYWRlckVkaXRvckNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHF1ZXJ5RWRpdG9yKSB7XG4gICAgICBjb25zdCBlZGl0b3JDb250ZW50ID0gcXVlcnlFZGl0b3IuZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHByZXR0aWZpZWRFZGl0b3JDb250ZW50ID0gcHJpbnQocGFyc2UkMShlZGl0b3JDb250ZW50KSk7XG4gICAgICBpZiAocHJldHRpZmllZEVkaXRvckNvbnRlbnQgIT09IGVkaXRvckNvbnRlbnQpIHtcbiAgICAgICAgcXVlcnlFZGl0b3Iuc2V0VmFsdWUocHJldHRpZmllZEVkaXRvckNvbnRlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3F1ZXJ5RWRpdG9yLCB2YXJpYWJsZUVkaXRvciwgaGVhZGVyRWRpdG9yXSk7XG59XG5fX25hbWUodXNlUHJldHRpZnlFZGl0b3JzLCBcInVzZVByZXR0aWZ5RWRpdG9yc1wiKTtcbl9fbmFtZSQ4KHVzZVByZXR0aWZ5RWRpdG9ycywgXCJ1c2VQcmV0dGlmeUVkaXRvcnNcIik7XG5mdW5jdGlvbiB1c2VBdXRvQ29tcGxldGVMZWFmcyh7XG4gIGdldERlZmF1bHRGaWVsZE5hbWVzLFxuICBjYWxsZXJcbn0gPSB7fSkge1xuICBjb25zdCB7IHNjaGVtYSB9ID0gdXNlU2NoZW1hQ29udGV4dCh7XG4gICAgbm9uTnVsbDogdHJ1ZSxcbiAgICBjYWxsZXI6IGNhbGxlciB8fCB1c2VBdXRvQ29tcGxldGVMZWFmc1xuICB9KTtcbiAgY29uc3QgeyBxdWVyeUVkaXRvciB9ID0gdXNlRWRpdG9yQ29udGV4dCh7XG4gICAgbm9uTnVsbDogdHJ1ZSxcbiAgICBjYWxsZXI6IGNhbGxlciB8fCB1c2VBdXRvQ29tcGxldGVMZWFmc1xuICB9KTtcbiAgcmV0dXJuIHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXF1ZXJ5RWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJ5ID0gcXVlcnlFZGl0b3IuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCB7IGluc2VydGlvbnMsIHJlc3VsdCB9ID0gZmlsbExlYWZzKHNjaGVtYSwgcXVlcnksIGdldERlZmF1bHRGaWVsZE5hbWVzKTtcbiAgICBpZiAoaW5zZXJ0aW9ucyAmJiBpbnNlcnRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHF1ZXJ5RWRpdG9yLm9wZXJhdGlvbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnNvciA9IHF1ZXJ5RWRpdG9yLmdldEN1cnNvcigpO1xuICAgICAgICBjb25zdCBjdXJzb3JJbmRleCA9IHF1ZXJ5RWRpdG9yLmluZGV4RnJvbVBvcyhjdXJzb3IpO1xuICAgICAgICBxdWVyeUVkaXRvci5zZXRWYWx1ZShyZXN1bHQgfHwgXCJcIik7XG4gICAgICAgIGxldCBhZGRlZCA9IDA7XG4gICAgICAgIGNvbnN0IG1hcmtlcnMgPSBpbnNlcnRpb25zLm1hcCgoeyBpbmRleCwgc3RyaW5nIH0pID0+IHF1ZXJ5RWRpdG9yLm1hcmtUZXh0KHF1ZXJ5RWRpdG9yLnBvc0Zyb21JbmRleChpbmRleCArIGFkZGVkKSwgcXVlcnlFZGl0b3IucG9zRnJvbUluZGV4KGluZGV4ICsgKGFkZGVkICs9IHN0cmluZy5sZW5ndGgpKSwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJhdXRvSW5zZXJ0ZWRMZWFmXCIsXG4gICAgICAgICAgY2xlYXJPbkVudGVyOiB0cnVlLFxuICAgICAgICAgIHRpdGxlOiBcIkF1dG9tYXRpY2FsbHkgYWRkZWQgbGVhZiBmaWVsZHNcIlxuICAgICAgICB9KSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gbWFya2Vycy5mb3JFYWNoKChtYXJrZXIyKSA9PiBtYXJrZXIyLmNsZWFyKCkpLCA3ZTMpO1xuICAgICAgICBsZXQgbmV3Q3Vyc29ySW5kZXggPSBjdXJzb3JJbmRleDtcbiAgICAgICAgaW5zZXJ0aW9ucy5mb3JFYWNoKCh7IGluZGV4LCBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgIGlmIChpbmRleCA8IGN1cnNvckluZGV4KSB7XG4gICAgICAgICAgICBuZXdDdXJzb3JJbmRleCArPSBzdHJpbmcubGVuZ3RoO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHF1ZXJ5RWRpdG9yLnNldEN1cnNvcihxdWVyeUVkaXRvci5wb3NGcm9tSW5kZXgobmV3Q3Vyc29ySW5kZXgpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCBbZ2V0RGVmYXVsdEZpZWxkTmFtZXMsIHF1ZXJ5RWRpdG9yLCBzY2hlbWFdKTtcbn1cbl9fbmFtZSh1c2VBdXRvQ29tcGxldGVMZWFmcywgXCJ1c2VBdXRvQ29tcGxldGVMZWFmc1wiKTtcbl9fbmFtZSQ4KHVzZUF1dG9Db21wbGV0ZUxlYWZzLCBcInVzZUF1dG9Db21wbGV0ZUxlYWZzXCIpO1xudmFyIF9fZGVmUHJvcCQ3ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSQ3ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgodGFyZ2V0MiwgdmFsdWUpID0+IF9fZGVmUHJvcCQ3KHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSksIFwiX19uYW1lJDdcIik7XG5mdW5jdGlvbiB1c2VIZWFkZXJFZGl0b3Ioe1xuICBlZGl0b3JUaGVtZSA9IERFRkFVTFRfRURJVE9SX1RIRU1FLFxuICBrZXlNYXAgPSBERUZBVUxUX0tFWV9NQVAsXG4gIG9uRWRpdCxcbiAgcmVhZE9ubHkgPSBmYWxzZVxufSA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbml0aWFsSGVhZGVycyxcbiAgICBoZWFkZXJFZGl0b3IsXG4gICAgc2V0SGVhZGVyRWRpdG9yLFxuICAgIHNob3VsZFBlcnNpc3RIZWFkZXJzXG4gIH0gPSB1c2VFZGl0b3JDb250ZXh0KHtcbiAgICBub25OdWxsOiB0cnVlLFxuICAgIGNhbGxlcjogdXNlSGVhZGVyRWRpdG9yXG4gIH0pO1xuICBjb25zdCBleGVjdXRpb25Db250ZXh0ID0gdXNlRXhlY3V0aW9uQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZSA9IHVzZU1lcmdlUXVlcnkoe1xuICAgIGNhbGxlcjogdXNlSGVhZGVyRWRpdG9yXG4gIH0pO1xuICBjb25zdCBwcmV0dGlmeSA9IHVzZVByZXR0aWZ5RWRpdG9ycyh7XG4gICAgY2FsbGVyOiB1c2VIZWFkZXJFZGl0b3JcbiAgfSk7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgaXNBY3RpdmUgPSB0cnVlO1xuICAgIGltcG9ydENvZGVNaXJyb3IoW1xuICAgICAgaW1wb3J0KFwiLi9qYXZhc2NyaXB0LmVzLmpzXCIpLnRoZW4oZnVuY3Rpb24objIpIHtcbiAgICAgICAgcmV0dXJuIG4yLmo7XG4gICAgICB9KVxuICAgIF0pLnRoZW4oKENvZGVNaXJyb3IpID0+IHtcbiAgICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY29udGFpbmVyID0gcmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBuZXdFZGl0b3IgPSBDb2RlTWlycm9yKGNvbnRhaW5lciwge1xuICAgICAgICB2YWx1ZTogaW5pdGlhbEhlYWRlcnMsXG4gICAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLFxuICAgICAgICB0YWJTaXplOiAyLFxuICAgICAgICBtb2RlOiB7XG4gICAgICAgICAgbmFtZTogXCJqYXZhc2NyaXB0XCIsXG4gICAgICAgICAganNvbjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB0aGVtZTogZWRpdG9yVGhlbWUsXG4gICAgICAgIGF1dG9DbG9zZUJyYWNrZXRzOiB0cnVlLFxuICAgICAgICBtYXRjaEJyYWNrZXRzOiB0cnVlLFxuICAgICAgICBzaG93Q3Vyc29yV2hlblNlbGVjdGluZzogdHJ1ZSxcbiAgICAgICAgcmVhZE9ubHk6IHJlYWRPbmx5ID8gXCJub2N1cnNvclwiIDogZmFsc2UsXG4gICAgICAgIGZvbGRHdXR0ZXI6IHRydWUsXG4gICAgICAgIGd1dHRlcnM6IFtcIkNvZGVNaXJyb3ItbGluZW51bWJlcnNcIiwgXCJDb2RlTWlycm9yLWZvbGRndXR0ZXJcIl0sXG4gICAgICAgIGV4dHJhS2V5czogY29tbW9uS2V5c1xuICAgICAgfSk7XG4gICAgICBuZXdFZGl0b3IuYWRkS2V5TWFwKHtcbiAgICAgICAgXCJDbWQtU3BhY2VcIigpIHtcbiAgICAgICAgICBuZXdFZGl0b3Iuc2hvd0hpbnQoe1xuICAgICAgICAgICAgY29tcGxldGVTaW5nbGU6IGZhbHNlLFxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFwiQ3RybC1TcGFjZVwiKCkge1xuICAgICAgICAgIG5ld0VkaXRvci5zaG93SGludCh7XG4gICAgICAgICAgICBjb21wbGV0ZVNpbmdsZTogZmFsc2UsXG4gICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJBbHQtU3BhY2VcIigpIHtcbiAgICAgICAgICBuZXdFZGl0b3Iuc2hvd0hpbnQoe1xuICAgICAgICAgICAgY29tcGxldGVTaW5nbGU6IGZhbHNlLFxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFwiU2hpZnQtU3BhY2VcIigpIHtcbiAgICAgICAgICBuZXdFZGl0b3Iuc2hvd0hpbnQoe1xuICAgICAgICAgICAgY29tcGxldGVTaW5nbGU6IGZhbHNlLFxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbmV3RWRpdG9yLm9uKFwia2V5dXBcIiwgKGVkaXRvckluc3RhbmNlLCBldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBjb2RlMyA9IGV2ZW50LmtleUNvZGU7XG4gICAgICAgIGlmIChjb2RlMyA+PSA2NSAmJiBjb2RlMyA8PSA5MCB8fCAhZXZlbnQuc2hpZnRLZXkgJiYgY29kZTMgPj0gNDggJiYgY29kZTMgPD0gNTcgfHwgZXZlbnQuc2hpZnRLZXkgJiYgY29kZTMgPT09IDE4OSB8fCBldmVudC5zaGlmdEtleSAmJiBjb2RlMyA9PT0gMjIyKSB7XG4gICAgICAgICAgZWRpdG9ySW5zdGFuY2UuZXhlY0NvbW1hbmQoXCJhdXRvY29tcGxldGVcIik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc2V0SGVhZGVyRWRpdG9yKG5ld0VkaXRvcik7XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlzQWN0aXZlID0gZmFsc2U7XG4gICAgfTtcbiAgfSwgW2VkaXRvclRoZW1lLCBpbml0aWFsSGVhZGVycywgcmVhZE9ubHksIHNldEhlYWRlckVkaXRvcl0pO1xuICB1c2VTeW5jaHJvbml6ZU9wdGlvbihoZWFkZXJFZGl0b3IsIFwia2V5TWFwXCIsIGtleU1hcCk7XG4gIHVzZUNoYW5nZUhhbmRsZXIoaGVhZGVyRWRpdG9yLCBvbkVkaXQsIHNob3VsZFBlcnNpc3RIZWFkZXJzID8gU1RPUkFHRV9LRVkkMiA6IG51bGwsIFwiaGVhZGVyc1wiLCB1c2VIZWFkZXJFZGl0b3IpO1xuICB1c2VDb21wbGV0aW9uKGhlYWRlckVkaXRvciwgdXNlSGVhZGVyRWRpdG9yKTtcbiAgdXNlS2V5TWFwKGhlYWRlckVkaXRvciwgW1wiQ21kLUVudGVyXCIsIFwiQ3RybC1FbnRlclwiXSwgZXhlY3V0aW9uQ29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogZXhlY3V0aW9uQ29udGV4dC5ydW4pO1xuICB1c2VLZXlNYXAoaGVhZGVyRWRpdG9yLCBbXCJTaGlmdC1DdHJsLVBcIl0sIHByZXR0aWZ5KTtcbiAgdXNlS2V5TWFwKGhlYWRlckVkaXRvciwgW1wiU2hpZnQtQ3RybC1NXCJdLCBtZXJnZSk7XG4gIHJldHVybiByZWY7XG59XG5fX25hbWUodXNlSGVhZGVyRWRpdG9yLCBcInVzZUhlYWRlckVkaXRvclwiKTtcbl9fbmFtZSQ3KHVzZUhlYWRlckVkaXRvciwgXCJ1c2VIZWFkZXJFZGl0b3JcIik7XG5jb25zdCBTVE9SQUdFX0tFWSQyID0gXCJoZWFkZXJzXCI7XG52YXIgX19kZWZQcm9wJDYgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lJDYgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKCh0YXJnZXQyLCB2YWx1ZSkgPT4gX19kZWZQcm9wJDYodGFyZ2V0MiwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KSwgXCJfX25hbWUkNlwiKTtcbmNvbnN0IGludmFsaWRDaGFyYWN0ZXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTEgfSwgKF8sIGkpID0+IHtcbiAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoODE5MiArIGkpO1xufSkuY29uY2F0KFtcIlxcdTIwMjhcIiwgXCJcXHUyMDI5XCIsIFwiXFx1MjAyRlwiLCBcIlxceEEwXCJdKTtcbmNvbnN0IHNhbml0aXplUmVnZXggPSBuZXcgUmVnRXhwKFwiW1wiICsgaW52YWxpZENoYXJhY3RlcnMuam9pbihcIlwiKSArIFwiXVwiLCBcImdcIik7XG5mdW5jdGlvbiBub3JtYWxpemVXaGl0ZXNwYWNlKGxpbmUpIHtcbiAgcmV0dXJuIGxpbmUucmVwbGFjZShzYW5pdGl6ZVJlZ2V4LCBcIiBcIik7XG59XG5fX25hbWUobm9ybWFsaXplV2hpdGVzcGFjZSwgXCJub3JtYWxpemVXaGl0ZXNwYWNlXCIpO1xuX19uYW1lJDYobm9ybWFsaXplV2hpdGVzcGFjZSwgXCJub3JtYWxpemVXaGl0ZXNwYWNlXCIpO1xudmFyIF9fZGVmUHJvcCQ1ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSQ1ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgodGFyZ2V0MiwgdmFsdWUpID0+IF9fZGVmUHJvcCQ1KHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSksIFwiX19uYW1lJDVcIik7XG5mdW5jdGlvbiB1c2VRdWVyeUVkaXRvcih7XG4gIGVkaXRvclRoZW1lID0gREVGQVVMVF9FRElUT1JfVEhFTUUsXG4gIGtleU1hcCA9IERFRkFVTFRfS0VZX01BUCxcbiAgb25DbGlja1JlZmVyZW5jZSxcbiAgb25Db3B5UXVlcnksXG4gIG9uRWRpdCxcbiAgcmVhZE9ubHkgPSBmYWxzZVxufSA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBzY2hlbWFcbiAgfSA9IHVzZVNjaGVtYUNvbnRleHQoe1xuICAgIG5vbk51bGw6IHRydWUsXG4gICAgY2FsbGVyOiB1c2VRdWVyeUVkaXRvclxuICB9KTtcbiAgY29uc3Qge1xuICAgIGV4dGVybmFsRnJhZ21lbnRzLFxuICAgIGluaXRpYWxRdWVyeSxcbiAgICBxdWVyeUVkaXRvcixcbiAgICBzZXRPcGVyYXRpb25OYW1lLFxuICAgIHNldFF1ZXJ5RWRpdG9yLFxuICAgIHZhbGlkYXRpb25SdWxlcyxcbiAgICB2YXJpYWJsZUVkaXRvcixcbiAgICB1cGRhdGVBY3RpdmVUYWJWYWx1ZXNcbiAgfSA9IHVzZUVkaXRvckNvbnRleHQoe1xuICAgIG5vbk51bGw6IHRydWUsXG4gICAgY2FsbGVyOiB1c2VRdWVyeUVkaXRvclxuICB9KTtcbiAgY29uc3QgZXhlY3V0aW9uQ29udGV4dCA9IHVzZUV4ZWN1dGlvbkNvbnRleHQoKTtcbiAgY29uc3Qgc3RvcmFnZSA9IHVzZVN0b3JhZ2VDb250ZXh0KCk7XG4gIGNvbnN0IGV4cGxvcmVyID0gdXNlRXhwbG9yZXJDb250ZXh0KCk7XG4gIGNvbnN0IGNvcHkyID0gdXNlQ29weVF1ZXJ5KHtcbiAgICBjYWxsZXI6IHVzZVF1ZXJ5RWRpdG9yLFxuICAgIG9uQ29weVF1ZXJ5XG4gIH0pO1xuICBjb25zdCBtZXJnZSA9IHVzZU1lcmdlUXVlcnkoe1xuICAgIGNhbGxlcjogdXNlUXVlcnlFZGl0b3JcbiAgfSk7XG4gIGNvbnN0IHByZXR0aWZ5ID0gdXNlUHJldHRpZnlFZGl0b3JzKHtcbiAgICBjYWxsZXI6IHVzZVF1ZXJ5RWRpdG9yXG4gIH0pO1xuICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGNvZGVNaXJyb3JSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3Qgb25DbGlja1JlZmVyZW5jZVJlZiA9IHVzZVJlZigoKSA9PiB7XG4gIH0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIG9uQ2xpY2tSZWZlcmVuY2VSZWYuY3VycmVudCA9IChyZWZlcmVuY2UzKSA9PiB7XG4gICAgICBpZiAoIWV4cGxvcmVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV4cGxvcmVyLnNob3coKTtcbiAgICAgIGlmIChyZWZlcmVuY2UzICYmIHJlZmVyZW5jZTMua2luZCA9PT0gXCJUeXBlXCIpIHtcbiAgICAgICAgZXhwbG9yZXIucHVzaCh7XG4gICAgICAgICAgbmFtZTogcmVmZXJlbmNlMy50eXBlLm5hbWUsXG4gICAgICAgICAgZGVmOiByZWZlcmVuY2UzLnR5cGVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZTMua2luZCA9PT0gXCJGaWVsZFwiKSB7XG4gICAgICAgIGV4cGxvcmVyLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHJlZmVyZW5jZTMuZmllbGQubmFtZSxcbiAgICAgICAgICBkZWY6IHJlZmVyZW5jZTMuZmllbGRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZTMua2luZCA9PT0gXCJBcmd1bWVudFwiICYmIHJlZmVyZW5jZTMuZmllbGQpIHtcbiAgICAgICAgZXhwbG9yZXIucHVzaCh7XG4gICAgICAgICAgbmFtZTogcmVmZXJlbmNlMy5maWVsZC5uYW1lLFxuICAgICAgICAgIGRlZjogcmVmZXJlbmNlMy5maWVsZFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAocmVmZXJlbmNlMy5raW5kID09PSBcIkVudW1WYWx1ZVwiICYmIHJlZmVyZW5jZTMudHlwZSkge1xuICAgICAgICBleHBsb3Jlci5wdXNoKHtcbiAgICAgICAgICBuYW1lOiByZWZlcmVuY2UzLnR5cGUubmFtZSxcbiAgICAgICAgICBkZWY6IHJlZmVyZW5jZTMudHlwZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG9uQ2xpY2tSZWZlcmVuY2UgPT0gbnVsbCA/IHZvaWQgMCA6IG9uQ2xpY2tSZWZlcmVuY2UocmVmZXJlbmNlMyk7XG4gICAgfTtcbiAgfSwgW2V4cGxvcmVyLCBvbkNsaWNrUmVmZXJlbmNlXSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGlzQWN0aXZlID0gdHJ1ZTtcbiAgICBpbXBvcnRDb2RlTWlycm9yKFtpbXBvcnQoXCIuL2NvbW1lbnQuZXMuanNcIikudGhlbihmdW5jdGlvbihuMikge1xuICAgICAgcmV0dXJuIG4yLmM7XG4gICAgfSksIGltcG9ydChcIi4vc2VhcmNoLmVzLmpzXCIpLnRoZW4oZnVuY3Rpb24objIpIHtcbiAgICAgIHJldHVybiBuMi5zO1xuICAgIH0pLCBpbXBvcnQoXCIuL2hpbnQuZXMuanNcIiksIGltcG9ydChcIi4vbGludC5lcy5qc1wiKSwgaW1wb3J0KFwiLi9pbmZvLmVzLmpzXCIpLCBpbXBvcnQoXCIuL2p1bXAuZXMuanNcIiksIGltcG9ydChcIi4vbW9kZS5lcy5qc1wiKV0pLnRoZW4oKENvZGVNaXJyb3IpID0+IHtcbiAgICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29kZU1pcnJvclJlZi5jdXJyZW50ID0gQ29kZU1pcnJvcjtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHJlZi5jdXJyZW50O1xuICAgICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3RWRpdG9yID0gQ29kZU1pcnJvcihjb250YWluZXIsIHtcbiAgICAgICAgdmFsdWU6IGluaXRpYWxRdWVyeSxcbiAgICAgICAgbGluZU51bWJlcnM6IHRydWUsXG4gICAgICAgIHRhYlNpemU6IDIsXG4gICAgICAgIGZvbGRHdXR0ZXI6IHRydWUsXG4gICAgICAgIG1vZGU6IFwiZ3JhcGhxbFwiLFxuICAgICAgICB0aGVtZTogZWRpdG9yVGhlbWUsXG4gICAgICAgIGF1dG9DbG9zZUJyYWNrZXRzOiB0cnVlLFxuICAgICAgICBtYXRjaEJyYWNrZXRzOiB0cnVlLFxuICAgICAgICBzaG93Q3Vyc29yV2hlblNlbGVjdGluZzogdHJ1ZSxcbiAgICAgICAgcmVhZE9ubHk6IHJlYWRPbmx5ID8gXCJub2N1cnNvclwiIDogZmFsc2UsXG4gICAgICAgIGxpbnQ6IHtcbiAgICAgICAgICBzY2hlbWE6IHZvaWQgMCxcbiAgICAgICAgICB2YWxpZGF0aW9uUnVsZXM6IG51bGwsXG4gICAgICAgICAgZXh0ZXJuYWxGcmFnbWVudHM6IHZvaWQgMFxuICAgICAgICB9LFxuICAgICAgICBoaW50T3B0aW9uczoge1xuICAgICAgICAgIHNjaGVtYTogdm9pZCAwLFxuICAgICAgICAgIGNsb3NlT25VbmZvY3VzOiBmYWxzZSxcbiAgICAgICAgICBjb21wbGV0ZVNpbmdsZTogZmFsc2UsXG4gICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgIGV4dGVybmFsRnJhZ21lbnRzOiB2b2lkIDBcbiAgICAgICAgfSxcbiAgICAgICAgaW5mbzoge1xuICAgICAgICAgIHNjaGVtYTogdm9pZCAwLFxuICAgICAgICAgIHJlbmRlckRlc2NyaXB0aW9uOiAodGV4dDMpID0+IG1hcmtkb3duLnJlbmRlcih0ZXh0MyksXG4gICAgICAgICAgb25DbGljazogKHJlZmVyZW5jZTMpID0+IHtcbiAgICAgICAgICAgIG9uQ2xpY2tSZWZlcmVuY2VSZWYuY3VycmVudChyZWZlcmVuY2UzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGp1bXA6IHtcbiAgICAgICAgICBzY2hlbWE6IHZvaWQgMCxcbiAgICAgICAgICBvbkNsaWNrOiAocmVmZXJlbmNlMykgPT4ge1xuICAgICAgICAgICAgb25DbGlja1JlZmVyZW5jZVJlZi5jdXJyZW50KHJlZmVyZW5jZTMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ3V0dGVyczogW1wiQ29kZU1pcnJvci1saW5lbnVtYmVyc1wiLCBcIkNvZGVNaXJyb3ItZm9sZGd1dHRlclwiXSxcbiAgICAgICAgZXh0cmFLZXlzOiBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBjb21tb25LZXlzKSwge1xuICAgICAgICAgIFwiQ21kLVNcIigpIHtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiQ3RybC1TXCIoKSB7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgICBuZXdFZGl0b3IuYWRkS2V5TWFwKHtcbiAgICAgICAgXCJDbWQtU3BhY2VcIigpIHtcbiAgICAgICAgICBuZXdFZGl0b3Iuc2hvd0hpbnQoe1xuICAgICAgICAgICAgY29tcGxldGVTaW5nbGU6IHRydWUsXG4gICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJDdHJsLVNwYWNlXCIoKSB7XG4gICAgICAgICAgbmV3RWRpdG9yLnNob3dIaW50KHtcbiAgICAgICAgICAgIGNvbXBsZXRlU2luZ2xlOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFwiQWx0LVNwYWNlXCIoKSB7XG4gICAgICAgICAgbmV3RWRpdG9yLnNob3dIaW50KHtcbiAgICAgICAgICAgIGNvbXBsZXRlU2luZ2xlOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFwiU2hpZnQtU3BhY2VcIigpIHtcbiAgICAgICAgICBuZXdFZGl0b3Iuc2hvd0hpbnQoe1xuICAgICAgICAgICAgY29tcGxldGVTaW5nbGU6IHRydWUsXG4gICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJTaGlmdC1BbHQtU3BhY2VcIigpIHtcbiAgICAgICAgICBuZXdFZGl0b3Iuc2hvd0hpbnQoe1xuICAgICAgICAgICAgY29tcGxldGVTaW5nbGU6IHRydWUsXG4gICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBuZXdFZGl0b3Iub24oXCJrZXl1cFwiLCAoZWRpdG9ySW5zdGFuY2UsIGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChBVVRPX0NPTVBMRVRFX0FGVEVSX0tFWS50ZXN0KGV2ZW50LmtleSkpIHtcbiAgICAgICAgICBlZGl0b3JJbnN0YW5jZS5leGVjQ29tbWFuZChcImF1dG9jb21wbGV0ZVwiKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBuZXdFZGl0b3Iub24oXCJiZWZvcmVDaGFuZ2VcIiwgKGVkaXRvckluc3RhbmNlLCBjaGFuZ2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoY2hhbmdlLm9yaWdpbiA9PT0gXCJwYXN0ZVwiKSB7XG4gICAgICAgICAgY29uc3QgdGV4dDMgPSBjaGFuZ2UudGV4dC5tYXAobm9ybWFsaXplV2hpdGVzcGFjZSk7XG4gICAgICAgICAgKF9hID0gY2hhbmdlLnVwZGF0ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwoY2hhbmdlLCBjaGFuZ2UuZnJvbSwgY2hhbmdlLnRvLCB0ZXh0Myk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbmV3RWRpdG9yLmRvY3VtZW50QVNUID0gbnVsbDtcbiAgICAgIG5ld0VkaXRvci5vcGVyYXRpb25OYW1lID0gbnVsbDtcbiAgICAgIG5ld0VkaXRvci5vcGVyYXRpb25zID0gbnVsbDtcbiAgICAgIG5ld0VkaXRvci52YXJpYWJsZVRvVHlwZSA9IG51bGw7XG4gICAgICBzZXRRdWVyeUVkaXRvcihuZXdFZGl0b3IpO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpc0FjdGl2ZSA9IGZhbHNlO1xuICAgIH07XG4gIH0sIFtlZGl0b3JUaGVtZSwgaW5pdGlhbFF1ZXJ5LCByZWFkT25seSwgc2V0UXVlcnlFZGl0b3JdKTtcbiAgdXNlU3luY2hyb25pemVPcHRpb24ocXVlcnlFZGl0b3IsIFwia2V5TWFwXCIsIGtleU1hcCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFxdWVyeUVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRBbmRVcGRhdGVPcGVyYXRpb25GYWN0cyhlZGl0b3JJbnN0YW5jZSkge1xuICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbkZhY3RzID0gZ2V0T3BlcmF0aW9uRmFjdHMoc2NoZW1hLCBlZGl0b3JJbnN0YW5jZS5nZXRWYWx1ZSgpKTtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbk5hbWUgPSBnZXRTZWxlY3RlZE9wZXJhdGlvbk5hbWUoKF9hID0gZWRpdG9ySW5zdGFuY2Uub3BlcmF0aW9ucykgIT0gbnVsbCA/IF9hIDogdm9pZCAwLCAoX2IgPSBlZGl0b3JJbnN0YW5jZS5vcGVyYXRpb25OYW1lKSAhPSBudWxsID8gX2IgOiB2b2lkIDAsIG9wZXJhdGlvbkZhY3RzID09IG51bGwgPyB2b2lkIDAgOiBvcGVyYXRpb25GYWN0cy5vcGVyYXRpb25zKTtcbiAgICAgIGVkaXRvckluc3RhbmNlLmRvY3VtZW50QVNUID0gKF9jID0gb3BlcmF0aW9uRmFjdHMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wZXJhdGlvbkZhY3RzLmRvY3VtZW50QVNUKSAhPSBudWxsID8gX2MgOiBudWxsO1xuICAgICAgZWRpdG9ySW5zdGFuY2Uub3BlcmF0aW9uTmFtZSA9IG9wZXJhdGlvbk5hbWUgIT0gbnVsbCA/IG9wZXJhdGlvbk5hbWUgOiBudWxsO1xuICAgICAgZWRpdG9ySW5zdGFuY2Uub3BlcmF0aW9ucyA9IChfZCA9IG9wZXJhdGlvbkZhY3RzID09IG51bGwgPyB2b2lkIDAgOiBvcGVyYXRpb25GYWN0cy5vcGVyYXRpb25zKSAhPSBudWxsID8gX2QgOiBudWxsO1xuICAgICAgaWYgKHZhcmlhYmxlRWRpdG9yKSB7XG4gICAgICAgIHZhcmlhYmxlRWRpdG9yLnN0YXRlLmxpbnQubGludGVyT3B0aW9ucy52YXJpYWJsZVRvVHlwZSA9IG9wZXJhdGlvbkZhY3RzID09IG51bGwgPyB2b2lkIDAgOiBvcGVyYXRpb25GYWN0cy52YXJpYWJsZVRvVHlwZTtcbiAgICAgICAgdmFyaWFibGVFZGl0b3Iub3B0aW9ucy5saW50LnZhcmlhYmxlVG9UeXBlID0gb3BlcmF0aW9uRmFjdHMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wZXJhdGlvbkZhY3RzLnZhcmlhYmxlVG9UeXBlO1xuICAgICAgICB2YXJpYWJsZUVkaXRvci5vcHRpb25zLmhpbnRPcHRpb25zLnZhcmlhYmxlVG9UeXBlID0gb3BlcmF0aW9uRmFjdHMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wZXJhdGlvbkZhY3RzLnZhcmlhYmxlVG9UeXBlO1xuICAgICAgICAoX2UgPSBjb2RlTWlycm9yUmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZS5zaWduYWwodmFyaWFibGVFZGl0b3IsIFwiY2hhbmdlXCIsIHZhcmlhYmxlRWRpdG9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcGVyYXRpb25GYWN0cyA/IF9fc3ByZWFkUHJvcHMoX19zcHJlYWRWYWx1ZXMoe30sIG9wZXJhdGlvbkZhY3RzKSwge1xuICAgICAgICBvcGVyYXRpb25OYW1lXG4gICAgICB9KSA6IG51bGw7XG4gICAgfVxuICAgIF9fbmFtZShnZXRBbmRVcGRhdGVPcGVyYXRpb25GYWN0cywgXCJnZXRBbmRVcGRhdGVPcGVyYXRpb25GYWN0c1wiKTtcbiAgICBfX25hbWUkNShnZXRBbmRVcGRhdGVPcGVyYXRpb25GYWN0cywgXCJnZXRBbmRVcGRhdGVPcGVyYXRpb25GYWN0c1wiKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSBkZWJvdW5jZSgxMDAsIChlZGl0b3JJbnN0YW5jZSkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgY29uc3QgcXVlcnkgPSBlZGl0b3JJbnN0YW5jZS5nZXRWYWx1ZSgpO1xuICAgICAgc3RvcmFnZSA9PSBudWxsID8gdm9pZCAwIDogc3RvcmFnZS5zZXQoU1RPUkFHRV9LRVlfUVVFUlksIHF1ZXJ5KTtcbiAgICAgIGNvbnN0IGN1cnJlbnRPcGVyYXRpb25OYW1lID0gZWRpdG9ySW5zdGFuY2Uub3BlcmF0aW9uTmFtZTtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbkZhY3RzID0gZ2V0QW5kVXBkYXRlT3BlcmF0aW9uRmFjdHMoZWRpdG9ySW5zdGFuY2UpO1xuICAgICAgaWYgKChvcGVyYXRpb25GYWN0cyA9PSBudWxsID8gdm9pZCAwIDogb3BlcmF0aW9uRmFjdHMub3BlcmF0aW9uTmFtZSkgIT09IHZvaWQgMCkge1xuICAgICAgICBzdG9yYWdlID09IG51bGwgPyB2b2lkIDAgOiBzdG9yYWdlLnNldChTVE9SQUdFX0tFWV9PUEVSQVRJT05fTkFNRSwgb3BlcmF0aW9uRmFjdHMub3BlcmF0aW9uTmFtZSk7XG4gICAgICB9XG4gICAgICBvbkVkaXQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRWRpdChxdWVyeSwgb3BlcmF0aW9uRmFjdHMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wZXJhdGlvbkZhY3RzLmRvY3VtZW50QVNUKTtcbiAgICAgIGlmICgob3BlcmF0aW9uRmFjdHMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wZXJhdGlvbkZhY3RzLm9wZXJhdGlvbk5hbWUpICYmIGN1cnJlbnRPcGVyYXRpb25OYW1lICE9PSBvcGVyYXRpb25GYWN0cy5vcGVyYXRpb25OYW1lKSB7XG4gICAgICAgIHNldE9wZXJhdGlvbk5hbWUob3BlcmF0aW9uRmFjdHMub3BlcmF0aW9uTmFtZSk7XG4gICAgICB9XG4gICAgICB1cGRhdGVBY3RpdmVUYWJWYWx1ZXMoe1xuICAgICAgICBxdWVyeSxcbiAgICAgICAgb3BlcmF0aW9uTmFtZTogKF9hID0gb3BlcmF0aW9uRmFjdHMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wZXJhdGlvbkZhY3RzLm9wZXJhdGlvbk5hbWUpICE9IG51bGwgPyBfYSA6IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGdldEFuZFVwZGF0ZU9wZXJhdGlvbkZhY3RzKHF1ZXJ5RWRpdG9yKTtcbiAgICBxdWVyeUVkaXRvci5vbihcImNoYW5nZVwiLCBoYW5kbGVDaGFuZ2UpO1xuICAgIHJldHVybiAoKSA9PiBxdWVyeUVkaXRvci5vZmYoXCJjaGFuZ2VcIiwgaGFuZGxlQ2hhbmdlKTtcbiAgfSwgW29uRWRpdCwgcXVlcnlFZGl0b3IsIHNjaGVtYSwgc2V0T3BlcmF0aW9uTmFtZSwgc3RvcmFnZSwgdmFyaWFibGVFZGl0b3IsIHVwZGF0ZUFjdGl2ZVRhYlZhbHVlc10pO1xuICB1c2VTeW5jaHJvbml6ZVNjaGVtYShxdWVyeUVkaXRvciwgc2NoZW1hICE9IG51bGwgPyBzY2hlbWEgOiBudWxsLCBjb2RlTWlycm9yUmVmKTtcbiAgdXNlU3luY2hyb25pemVWYWxpZGF0aW9uUnVsZXMocXVlcnlFZGl0b3IsIHZhbGlkYXRpb25SdWxlcyAhPSBudWxsID8gdmFsaWRhdGlvblJ1bGVzIDogbnVsbCwgY29kZU1pcnJvclJlZik7XG4gIHVzZVN5bmNocm9uaXplRXh0ZXJuYWxGcmFnbWVudHMocXVlcnlFZGl0b3IsIGV4dGVybmFsRnJhZ21lbnRzLCBjb2RlTWlycm9yUmVmKTtcbiAgdXNlQ29tcGxldGlvbihxdWVyeUVkaXRvciwgdXNlUXVlcnlFZGl0b3IpO1xuICBjb25zdCBydW4gPSBleGVjdXRpb25Db250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBleGVjdXRpb25Db250ZXh0LnJ1bjtcbiAgY29uc3QgcnVuQXRDdXJzb3IgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGlmICghcnVuIHx8ICFxdWVyeUVkaXRvciB8fCAhcXVlcnlFZGl0b3Iub3BlcmF0aW9ucyB8fCAhcXVlcnlFZGl0b3IuaGFzRm9jdXMoKSkge1xuICAgICAgcnVuID09IG51bGwgPyB2b2lkIDAgOiBydW4oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3Vyc29ySW5kZXggPSBxdWVyeUVkaXRvci5pbmRleEZyb21Qb3MocXVlcnlFZGl0b3IuZ2V0Q3Vyc29yKCkpO1xuICAgIGxldCBvcGVyYXRpb25OYW1lO1xuICAgIGZvciAoY29uc3Qgb3BlcmF0aW9uIG9mIHF1ZXJ5RWRpdG9yLm9wZXJhdGlvbnMpIHtcbiAgICAgIGlmIChvcGVyYXRpb24ubG9jICYmIG9wZXJhdGlvbi5sb2Muc3RhcnQgPD0gY3Vyc29ySW5kZXggJiYgb3BlcmF0aW9uLmxvYy5lbmQgPj0gY3Vyc29ySW5kZXgpIHtcbiAgICAgICAgb3BlcmF0aW9uTmFtZSA9IChfYSA9IG9wZXJhdGlvbi5uYW1lKSA9PSBudWxsID8gdm9pZCAwIDogX2EudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvcGVyYXRpb25OYW1lICYmIG9wZXJhdGlvbk5hbWUgIT09IHF1ZXJ5RWRpdG9yLm9wZXJhdGlvbk5hbWUpIHtcbiAgICAgIHNldE9wZXJhdGlvbk5hbWUob3BlcmF0aW9uTmFtZSk7XG4gICAgfVxuICAgIHJ1bigpO1xuICB9LCBbcXVlcnlFZGl0b3IsIHJ1biwgc2V0T3BlcmF0aW9uTmFtZV0pO1xuICB1c2VLZXlNYXAocXVlcnlFZGl0b3IsIFtcIkNtZC1FbnRlclwiLCBcIkN0cmwtRW50ZXJcIl0sIHJ1bkF0Q3Vyc29yKTtcbiAgdXNlS2V5TWFwKHF1ZXJ5RWRpdG9yLCBbXCJTaGlmdC1DdHJsLUNcIl0sIGNvcHkyKTtcbiAgdXNlS2V5TWFwKHF1ZXJ5RWRpdG9yLCBbXG4gICAgXCJTaGlmdC1DdHJsLVBcIixcbiAgICBcIlNoaWZ0LUN0cmwtRlwiXG4gIF0sIHByZXR0aWZ5KTtcbiAgdXNlS2V5TWFwKHF1ZXJ5RWRpdG9yLCBbXCJTaGlmdC1DdHJsLU1cIl0sIG1lcmdlKTtcbiAgcmV0dXJuIHJlZjtcbn1cbl9fbmFtZSh1c2VRdWVyeUVkaXRvciwgXCJ1c2VRdWVyeUVkaXRvclwiKTtcbl9fbmFtZSQ1KHVzZVF1ZXJ5RWRpdG9yLCBcInVzZVF1ZXJ5RWRpdG9yXCIpO1xuZnVuY3Rpb24gdXNlU3luY2hyb25pemVTY2hlbWEoZWRpdG9yLCBzY2hlbWEsIGNvZGVNaXJyb3JSZWYpIHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkaWRDaGFuZ2UgPSBlZGl0b3Iub3B0aW9ucy5saW50LnNjaGVtYSAhPT0gc2NoZW1hO1xuICAgIGVkaXRvci5zdGF0ZS5saW50LmxpbnRlck9wdGlvbnMuc2NoZW1hID0gc2NoZW1hO1xuICAgIGVkaXRvci5vcHRpb25zLmxpbnQuc2NoZW1hID0gc2NoZW1hO1xuICAgIGVkaXRvci5vcHRpb25zLmhpbnRPcHRpb25zLnNjaGVtYSA9IHNjaGVtYTtcbiAgICBlZGl0b3Iub3B0aW9ucy5pbmZvLnNjaGVtYSA9IHNjaGVtYTtcbiAgICBlZGl0b3Iub3B0aW9ucy5qdW1wLnNjaGVtYSA9IHNjaGVtYTtcbiAgICBpZiAoZGlkQ2hhbmdlICYmIGNvZGVNaXJyb3JSZWYuY3VycmVudCkge1xuICAgICAgY29kZU1pcnJvclJlZi5jdXJyZW50LnNpZ25hbChlZGl0b3IsIFwiY2hhbmdlXCIsIGVkaXRvcik7XG4gICAgfVxuICB9LCBbZWRpdG9yLCBzY2hlbWEsIGNvZGVNaXJyb3JSZWZdKTtcbn1cbl9fbmFtZSh1c2VTeW5jaHJvbml6ZVNjaGVtYSwgXCJ1c2VTeW5jaHJvbml6ZVNjaGVtYVwiKTtcbl9fbmFtZSQ1KHVzZVN5bmNocm9uaXplU2NoZW1hLCBcInVzZVN5bmNocm9uaXplU2NoZW1hXCIpO1xuZnVuY3Rpb24gdXNlU3luY2hyb25pemVWYWxpZGF0aW9uUnVsZXMoZWRpdG9yLCB2YWxpZGF0aW9uUnVsZXMsIGNvZGVNaXJyb3JSZWYpIHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkaWRDaGFuZ2UgPSBlZGl0b3Iub3B0aW9ucy5saW50LnZhbGlkYXRpb25SdWxlcyAhPT0gdmFsaWRhdGlvblJ1bGVzO1xuICAgIGVkaXRvci5zdGF0ZS5saW50LmxpbnRlck9wdGlvbnMudmFsaWRhdGlvblJ1bGVzID0gdmFsaWRhdGlvblJ1bGVzO1xuICAgIGVkaXRvci5vcHRpb25zLmxpbnQudmFsaWRhdGlvblJ1bGVzID0gdmFsaWRhdGlvblJ1bGVzO1xuICAgIGlmIChkaWRDaGFuZ2UgJiYgY29kZU1pcnJvclJlZi5jdXJyZW50KSB7XG4gICAgICBjb2RlTWlycm9yUmVmLmN1cnJlbnQuc2lnbmFsKGVkaXRvciwgXCJjaGFuZ2VcIiwgZWRpdG9yKTtcbiAgICB9XG4gIH0sIFtlZGl0b3IsIHZhbGlkYXRpb25SdWxlcywgY29kZU1pcnJvclJlZl0pO1xufVxuX19uYW1lKHVzZVN5bmNocm9uaXplVmFsaWRhdGlvblJ1bGVzLCBcInVzZVN5bmNocm9uaXplVmFsaWRhdGlvblJ1bGVzXCIpO1xuX19uYW1lJDUodXNlU3luY2hyb25pemVWYWxpZGF0aW9uUnVsZXMsIFwidXNlU3luY2hyb25pemVWYWxpZGF0aW9uUnVsZXNcIik7XG5mdW5jdGlvbiB1c2VTeW5jaHJvbml6ZUV4dGVybmFsRnJhZ21lbnRzKGVkaXRvciwgZXh0ZXJuYWxGcmFnbWVudHMsIGNvZGVNaXJyb3JSZWYpIHtcbiAgY29uc3QgZXh0ZXJuYWxGcmFnbWVudExpc3QgPSB1c2VNZW1vKCgpID0+IFsuLi5leHRlcm5hbEZyYWdtZW50cy52YWx1ZXMoKV0sIFtleHRlcm5hbEZyYWdtZW50c10pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRpZENoYW5nZSA9IGVkaXRvci5vcHRpb25zLmxpbnQuZXh0ZXJuYWxGcmFnbWVudHMgIT09IGV4dGVybmFsRnJhZ21lbnRMaXN0O1xuICAgIGVkaXRvci5zdGF0ZS5saW50LmxpbnRlck9wdGlvbnMuZXh0ZXJuYWxGcmFnbWVudHMgPSBleHRlcm5hbEZyYWdtZW50TGlzdDtcbiAgICBlZGl0b3Iub3B0aW9ucy5saW50LmV4dGVybmFsRnJhZ21lbnRzID0gZXh0ZXJuYWxGcmFnbWVudExpc3Q7XG4gICAgZWRpdG9yLm9wdGlvbnMuaGludE9wdGlvbnMuZXh0ZXJuYWxGcmFnbWVudHMgPSBleHRlcm5hbEZyYWdtZW50TGlzdDtcbiAgICBpZiAoZGlkQ2hhbmdlICYmIGNvZGVNaXJyb3JSZWYuY3VycmVudCkge1xuICAgICAgY29kZU1pcnJvclJlZi5jdXJyZW50LnNpZ25hbChlZGl0b3IsIFwiY2hhbmdlXCIsIGVkaXRvcik7XG4gICAgfVxuICB9LCBbZWRpdG9yLCBleHRlcm5hbEZyYWdtZW50TGlzdCwgY29kZU1pcnJvclJlZl0pO1xufVxuX19uYW1lKHVzZVN5bmNocm9uaXplRXh0ZXJuYWxGcmFnbWVudHMsIFwidXNlU3luY2hyb25pemVFeHRlcm5hbEZyYWdtZW50c1wiKTtcbl9fbmFtZSQ1KHVzZVN5bmNocm9uaXplRXh0ZXJuYWxGcmFnbWVudHMsIFwidXNlU3luY2hyb25pemVFeHRlcm5hbEZyYWdtZW50c1wiKTtcbmNvbnN0IEFVVE9fQ09NUExFVEVfQUZURVJfS0VZID0gL15bYS16QS1aMC05X0AoXSQvO1xuY29uc3QgU1RPUkFHRV9LRVlfUVVFUlkgPSBcInF1ZXJ5XCI7XG5jb25zdCBTVE9SQUdFX0tFWV9PUEVSQVRJT05fTkFNRSA9IFwib3BlcmF0aW9uTmFtZVwiO1xudmFyIF9fZGVmUHJvcCQ0ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSQ0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgodGFyZ2V0MiwgdmFsdWUpID0+IF9fZGVmUHJvcCQ0KHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSksIFwiX19uYW1lJDRcIik7XG5mdW5jdGlvbiBnZXREZWZhdWx0VGFiU3RhdGUoe1xuICBoZWFkZXJzLFxuICBxdWVyeSxcbiAgdmFyaWFibGVzLFxuICBzdG9yYWdlXG59KSB7XG4gIGNvbnN0IHN0b3JlZFN0YXRlID0gc3RvcmFnZSA9PSBudWxsID8gdm9pZCAwIDogc3RvcmFnZS5nZXQoU1RPUkFHRV9LRVkkMSk7XG4gIHRyeSB7XG4gICAgaWYgKCFzdG9yZWRTdGF0ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3RvcmFnZSBmb3IgdGFicyBpcyBlbXB0eVwiKTtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShzdG9yZWRTdGF0ZSk7XG4gICAgaWYgKGlzVGFic1N0YXRlKHBhcnNlZCkpIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkSGFzaCA9IGhhc2hGcm9tVGFiQ29udGVudHMoeyBxdWVyeSwgdmFyaWFibGVzLCBoZWFkZXJzIH0pO1xuICAgICAgbGV0IG1hdGNoaW5nVGFiSW5kZXggPSAtMTtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwYXJzZWQudGFicy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgdGFiID0gcGFyc2VkLnRhYnNbaW5kZXhdO1xuICAgICAgICB0YWIuaGFzaCA9IGhhc2hGcm9tVGFiQ29udGVudHMoe1xuICAgICAgICAgIHF1ZXJ5OiB0YWIucXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzOiB0YWIudmFyaWFibGVzLFxuICAgICAgICAgIGhlYWRlcnM6IHRhYi5oZWFkZXJzXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGFiLmhhc2ggPT09IGV4cGVjdGVkSGFzaCkge1xuICAgICAgICAgIG1hdGNoaW5nVGFiSW5kZXggPSBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG1hdGNoaW5nVGFiSW5kZXggPj0gMCkge1xuICAgICAgICBwYXJzZWQuYWN0aXZlVGFiSW5kZXggPSBtYXRjaGluZ1RhYkluZGV4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uTmFtZSA9IHF1ZXJ5ID8gZnV6enlFeHRyYWN0T3BlcmF0aW9uTmFtZShxdWVyeSkgOiBudWxsO1xuICAgICAgICBwYXJzZWQudGFicy5wdXNoKHtcbiAgICAgICAgICBpZDogZ3VpZCgpLFxuICAgICAgICAgIGhhc2g6IGV4cGVjdGVkSGFzaCxcbiAgICAgICAgICB0aXRsZTogb3BlcmF0aW9uTmFtZSB8fCBERUZBVUxUX1RJVExFLFxuICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgIHZhcmlhYmxlcyxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgIG9wZXJhdGlvbk5hbWUsXG4gICAgICAgICAgcmVzcG9uc2U6IG51bGxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyc2VkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTdG9yYWdlIGZvciB0YWJzIGlzIGludmFsaWRcIik7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBzdG9yYWdlID09IG51bGwgPyB2b2lkIDAgOiBzdG9yYWdlLnNldChTVE9SQUdFX0tFWSQxLCBcIlwiKTtcbiAgICByZXR1cm4geyBhY3RpdmVUYWJJbmRleDogMCwgdGFiczogW2VtcHR5VGFiKCldIH07XG4gIH1cbn1cbl9fbmFtZShnZXREZWZhdWx0VGFiU3RhdGUsIFwiZ2V0RGVmYXVsdFRhYlN0YXRlXCIpO1xuX19uYW1lJDQoZ2V0RGVmYXVsdFRhYlN0YXRlLCBcImdldERlZmF1bHRUYWJTdGF0ZVwiKTtcbmZ1bmN0aW9uIGlzVGFic1N0YXRlKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkob2JqKSAmJiBoYXNOdW1iZXJLZXkob2JqLCBcImFjdGl2ZVRhYkluZGV4XCIpICYmIFwidGFic1wiIGluIG9iaiAmJiBBcnJheS5pc0FycmF5KG9iai50YWJzKSAmJiBvYmoudGFicy5ldmVyeShpc1RhYlN0YXRlKTtcbn1cbl9fbmFtZShpc1RhYnNTdGF0ZSwgXCJpc1RhYnNTdGF0ZVwiKTtcbl9fbmFtZSQ0KGlzVGFic1N0YXRlLCBcImlzVGFic1N0YXRlXCIpO1xuZnVuY3Rpb24gaXNUYWJTdGF0ZShvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KG9iaikgJiYgaGFzU3RyaW5nS2V5KG9iaiwgXCJpZFwiKSAmJiBoYXNTdHJpbmdLZXkob2JqLCBcInRpdGxlXCIpICYmIGhhc1N0cmluZ09yTnVsbEtleShvYmosIFwicXVlcnlcIikgJiYgaGFzU3RyaW5nT3JOdWxsS2V5KG9iaiwgXCJ2YXJpYWJsZXNcIikgJiYgaGFzU3RyaW5nT3JOdWxsS2V5KG9iaiwgXCJoZWFkZXJzXCIpICYmIGhhc1N0cmluZ09yTnVsbEtleShvYmosIFwib3BlcmF0aW9uTmFtZVwiKSAmJiBoYXNTdHJpbmdPck51bGxLZXkob2JqLCBcInJlc3BvbnNlXCIpO1xufVxuX19uYW1lKGlzVGFiU3RhdGUsIFwiaXNUYWJTdGF0ZVwiKTtcbl9fbmFtZSQ0KGlzVGFiU3RhdGUsIFwiaXNUYWJTdGF0ZVwiKTtcbmZ1bmN0aW9uIGhhc051bWJlcktleShvYmosIGtleSkge1xuICByZXR1cm4ga2V5IGluIG9iaiAmJiB0eXBlb2Ygb2JqW2tleV0gPT09IFwibnVtYmVyXCI7XG59XG5fX25hbWUoaGFzTnVtYmVyS2V5LCBcImhhc051bWJlcktleVwiKTtcbl9fbmFtZSQ0KGhhc051bWJlcktleSwgXCJoYXNOdW1iZXJLZXlcIik7XG5mdW5jdGlvbiBoYXNTdHJpbmdLZXkob2JqLCBrZXkpIHtcbiAgcmV0dXJuIGtleSBpbiBvYmogJiYgdHlwZW9mIG9ialtrZXldID09PSBcInN0cmluZ1wiO1xufVxuX19uYW1lKGhhc1N0cmluZ0tleSwgXCJoYXNTdHJpbmdLZXlcIik7XG5fX25hbWUkNChoYXNTdHJpbmdLZXksIFwiaGFzU3RyaW5nS2V5XCIpO1xuZnVuY3Rpb24gaGFzU3RyaW5nT3JOdWxsS2V5KG9iaiwga2V5KSB7XG4gIHJldHVybiBrZXkgaW4gb2JqICYmICh0eXBlb2Ygb2JqW2tleV0gPT09IFwic3RyaW5nXCIgfHwgb2JqW2tleV0gPT09IG51bGwpO1xufVxuX19uYW1lKGhhc1N0cmluZ09yTnVsbEtleSwgXCJoYXNTdHJpbmdPck51bGxLZXlcIik7XG5fX25hbWUkNChoYXNTdHJpbmdPck51bGxLZXksIFwiaGFzU3RyaW5nT3JOdWxsS2V5XCIpO1xuZnVuY3Rpb24gdXNlU3luY2hyb25pemVBY3RpdmVUYWJWYWx1ZXMoe1xuICBxdWVyeUVkaXRvcixcbiAgdmFyaWFibGVFZGl0b3IsXG4gIGhlYWRlckVkaXRvcixcbiAgcmVzcG9uc2VFZGl0b3Jcbn0pIHtcbiAgcmV0dXJuIHVzZUNhbGxiYWNrKChzdGF0ZSkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgY29uc3QgcXVlcnkgPSAoX2EgPSBxdWVyeUVkaXRvciA9PSBudWxsID8gdm9pZCAwIDogcXVlcnlFZGl0b3IuZ2V0VmFsdWUoKSkgIT0gbnVsbCA/IF9hIDogbnVsbDtcbiAgICBjb25zdCB2YXJpYWJsZXMgPSAoX2IgPSB2YXJpYWJsZUVkaXRvciA9PSBudWxsID8gdm9pZCAwIDogdmFyaWFibGVFZGl0b3IuZ2V0VmFsdWUoKSkgIT0gbnVsbCA/IF9iIDogbnVsbDtcbiAgICBjb25zdCBoZWFkZXJzID0gKF9jID0gaGVhZGVyRWRpdG9yID09IG51bGwgPyB2b2lkIDAgOiBoZWFkZXJFZGl0b3IuZ2V0VmFsdWUoKSkgIT0gbnVsbCA/IF9jIDogbnVsbDtcbiAgICBjb25zdCBvcGVyYXRpb25OYW1lID0gKF9kID0gcXVlcnlFZGl0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IHF1ZXJ5RWRpdG9yLm9wZXJhdGlvbk5hbWUpICE9IG51bGwgPyBfZCA6IG51bGw7XG4gICAgY29uc3QgcmVzcG9uc2UgPSAoX2UgPSByZXNwb25zZUVkaXRvciA9PSBudWxsID8gdm9pZCAwIDogcmVzcG9uc2VFZGl0b3IuZ2V0VmFsdWUoKSkgIT0gbnVsbCA/IF9lIDogbnVsbDtcbiAgICByZXR1cm4gc2V0UHJvcGVydGllc0luQWN0aXZlVGFiKHN0YXRlLCB7XG4gICAgICBxdWVyeSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgICByZXNwb25zZSxcbiAgICAgIG9wZXJhdGlvbk5hbWVcbiAgICB9KTtcbiAgfSwgW3F1ZXJ5RWRpdG9yLCB2YXJpYWJsZUVkaXRvciwgaGVhZGVyRWRpdG9yLCByZXNwb25zZUVkaXRvcl0pO1xufVxuX19uYW1lKHVzZVN5bmNocm9uaXplQWN0aXZlVGFiVmFsdWVzLCBcInVzZVN5bmNocm9uaXplQWN0aXZlVGFiVmFsdWVzXCIpO1xuX19uYW1lJDQodXNlU3luY2hyb25pemVBY3RpdmVUYWJWYWx1ZXMsIFwidXNlU3luY2hyb25pemVBY3RpdmVUYWJWYWx1ZXNcIik7XG5mdW5jdGlvbiB1c2VTdG9yZVRhYnMoe1xuICBzdG9yYWdlLFxuICBzaG91bGRQZXJzaXN0SGVhZGVyc1xufSkge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZGVib3VuY2UoNTAwLCAodmFsdWUpID0+IHtcbiAgICBzdG9yYWdlID09IG51bGwgPyB2b2lkIDAgOiBzdG9yYWdlLnNldChTVE9SQUdFX0tFWSQxLCB2YWx1ZSk7XG4gIH0pLCBbc3RvcmFnZV0pO1xuICByZXR1cm4gdXNlQ2FsbGJhY2soKGN1cnJlbnRTdGF0ZSkgPT4ge1xuICAgIHN0b3JlKEpTT04uc3RyaW5naWZ5KGN1cnJlbnRTdGF0ZSwgKGtleSwgdmFsdWUpID0+IGtleSA9PT0gXCJoYXNoXCIgfHwga2V5ID09PSBcInJlc3BvbnNlXCIgfHwgIXNob3VsZFBlcnNpc3RIZWFkZXJzICYmIGtleSA9PT0gXCJoZWFkZXJzXCIgPyBudWxsIDogdmFsdWUpKTtcbiAgfSwgW3Nob3VsZFBlcnNpc3RIZWFkZXJzLCBzdG9yZV0pO1xufVxuX19uYW1lKHVzZVN0b3JlVGFicywgXCJ1c2VTdG9yZVRhYnNcIik7XG5fX25hbWUkNCh1c2VTdG9yZVRhYnMsIFwidXNlU3RvcmVUYWJzXCIpO1xuZnVuY3Rpb24gdXNlU2V0RWRpdG9yVmFsdWVzKHtcbiAgcXVlcnlFZGl0b3IsXG4gIHZhcmlhYmxlRWRpdG9yLFxuICBoZWFkZXJFZGl0b3IsXG4gIHJlc3BvbnNlRWRpdG9yXG59KSB7XG4gIHJldHVybiB1c2VDYWxsYmFjaygoe1xuICAgIHF1ZXJ5LFxuICAgIHZhcmlhYmxlcyxcbiAgICBoZWFkZXJzLFxuICAgIHJlc3BvbnNlXG4gIH0pID0+IHtcbiAgICBxdWVyeUVkaXRvciA9PSBudWxsID8gdm9pZCAwIDogcXVlcnlFZGl0b3Iuc2V0VmFsdWUocXVlcnkgIT0gbnVsbCA/IHF1ZXJ5IDogXCJcIik7XG4gICAgdmFyaWFibGVFZGl0b3IgPT0gbnVsbCA/IHZvaWQgMCA6IHZhcmlhYmxlRWRpdG9yLnNldFZhbHVlKHZhcmlhYmxlcyAhPSBudWxsID8gdmFyaWFibGVzIDogXCJcIik7XG4gICAgaGVhZGVyRWRpdG9yID09IG51bGwgPyB2b2lkIDAgOiBoZWFkZXJFZGl0b3Iuc2V0VmFsdWUoaGVhZGVycyAhPSBudWxsID8gaGVhZGVycyA6IFwiXCIpO1xuICAgIHJlc3BvbnNlRWRpdG9yID09IG51bGwgPyB2b2lkIDAgOiByZXNwb25zZUVkaXRvci5zZXRWYWx1ZShyZXNwb25zZSAhPSBudWxsID8gcmVzcG9uc2UgOiBcIlwiKTtcbiAgfSwgW2hlYWRlckVkaXRvciwgcXVlcnlFZGl0b3IsIHJlc3BvbnNlRWRpdG9yLCB2YXJpYWJsZUVkaXRvcl0pO1xufVxuX19uYW1lKHVzZVNldEVkaXRvclZhbHVlcywgXCJ1c2VTZXRFZGl0b3JWYWx1ZXNcIik7XG5fX25hbWUkNCh1c2VTZXRFZGl0b3JWYWx1ZXMsIFwidXNlU2V0RWRpdG9yVmFsdWVzXCIpO1xuZnVuY3Rpb24gZW1wdHlUYWIoKSB7XG4gIHJldHVybiB7XG4gICAgaWQ6IGd1aWQoKSxcbiAgICBoYXNoOiBoYXNoRnJvbVRhYkNvbnRlbnRzKHsgcXVlcnk6IG51bGwsIHZhcmlhYmxlczogbnVsbCwgaGVhZGVyczogbnVsbCB9KSxcbiAgICB0aXRsZTogREVGQVVMVF9USVRMRSxcbiAgICBxdWVyeTogbnVsbCxcbiAgICB2YXJpYWJsZXM6IG51bGwsXG4gICAgaGVhZGVyczogbnVsbCxcbiAgICBvcGVyYXRpb25OYW1lOiBudWxsLFxuICAgIHJlc3BvbnNlOiBudWxsXG4gIH07XG59XG5fX25hbWUoZW1wdHlUYWIsIFwiZW1wdHlUYWJcIik7XG5fX25hbWUkNChlbXB0eVRhYiwgXCJlbXB0eVRhYlwiKTtcbmZ1bmN0aW9uIHNldFByb3BlcnRpZXNJbkFjdGl2ZVRhYihzdGF0ZSwgcGFydGlhbFRhYikge1xuICByZXR1cm4gX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7fSwgc3RhdGUpLCB7XG4gICAgdGFiczogc3RhdGUudGFicy5tYXAoKHRhYiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCAhPT0gc3RhdGUuYWN0aXZlVGFiSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRhYjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld1RhYiA9IF9fc3ByZWFkVmFsdWVzKF9fc3ByZWFkVmFsdWVzKHt9LCB0YWIpLCBwYXJ0aWFsVGFiKTtcbiAgICAgIHJldHVybiBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBuZXdUYWIpLCB7XG4gICAgICAgIGhhc2g6IGhhc2hGcm9tVGFiQ29udGVudHMobmV3VGFiKSxcbiAgICAgICAgdGl0bGU6IG5ld1RhYi5vcGVyYXRpb25OYW1lIHx8IChuZXdUYWIucXVlcnkgPyBmdXp6eUV4dHJhY3RPcGVyYXRpb25OYW1lKG5ld1RhYi5xdWVyeSkgOiB2b2lkIDApIHx8IERFRkFVTFRfVElUTEVcbiAgICAgIH0pO1xuICAgIH0pXG4gIH0pO1xufVxuX19uYW1lKHNldFByb3BlcnRpZXNJbkFjdGl2ZVRhYiwgXCJzZXRQcm9wZXJ0aWVzSW5BY3RpdmVUYWJcIik7XG5fX25hbWUkNChzZXRQcm9wZXJ0aWVzSW5BY3RpdmVUYWIsIFwic2V0UHJvcGVydGllc0luQWN0aXZlVGFiXCIpO1xuZnVuY3Rpb24gZ3VpZCgpIHtcbiAgY29uc3QgczQgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lJDQoKCkgPT4ge1xuICAgIHJldHVybiBNYXRoLmZsb29yKCgxICsgTWF0aC5yYW5kb20oKSkgKiA2NTUzNikudG9TdHJpbmcoMTYpLnN1YnN0cmluZygxKTtcbiAgfSwgXCJzNFwiKTtcbiAgcmV0dXJuIGAke3M0KCl9JHtzNCgpfS0ke3M0KCl9LSR7czQoKX0tJHtzNCgpfS0ke3M0KCl9JHtzNCgpfSR7czQoKX1gO1xufVxuX19uYW1lKGd1aWQsIFwiZ3VpZFwiKTtcbl9fbmFtZSQ0KGd1aWQsIFwiZ3VpZFwiKTtcbmZ1bmN0aW9uIGhhc2hGcm9tVGFiQ29udGVudHMoYXJncykge1xuICB2YXIgX2EsIF9iLCBfYztcbiAgcmV0dXJuIFsoX2EgPSBhcmdzLnF1ZXJ5KSAhPSBudWxsID8gX2EgOiBcIlwiLCAoX2IgPSBhcmdzLnZhcmlhYmxlcykgIT0gbnVsbCA/IF9iIDogXCJcIiwgKF9jID0gYXJncy5oZWFkZXJzKSAhPSBudWxsID8gX2MgOiBcIlwiXS5qb2luKFwifFwiKTtcbn1cbl9fbmFtZShoYXNoRnJvbVRhYkNvbnRlbnRzLCBcImhhc2hGcm9tVGFiQ29udGVudHNcIik7XG5fX25hbWUkNChoYXNoRnJvbVRhYkNvbnRlbnRzLCBcImhhc2hGcm9tVGFiQ29udGVudHNcIik7XG5mdW5jdGlvbiBmdXp6eUV4dHJhY3RPcGVyYXRpb25OYW1lKHN0cikge1xuICB2YXIgX2E7XG4gIGNvbnN0IHJlZ2V4MiA9IC9eKD8hLiojKS4qKHF1ZXJ5fHN1YnNjcmlwdGlvbnxtdXRhdGlvbilcXHMrKFthLXpBLVowLTlfXSspLztcbiAgY29uc3QgbWF0Y2gyID0gcmVnZXgyLmV4ZWMoc3RyKTtcbiAgcmV0dXJuIChfYSA9IG1hdGNoMiA9PSBudWxsID8gdm9pZCAwIDogbWF0Y2gyWzJdKSAhPSBudWxsID8gX2EgOiBudWxsO1xufVxuX19uYW1lKGZ1enp5RXh0cmFjdE9wZXJhdGlvbk5hbWUsIFwiZnV6enlFeHRyYWN0T3BlcmF0aW9uTmFtZVwiKTtcbl9fbmFtZSQ0KGZ1enp5RXh0cmFjdE9wZXJhdGlvbk5hbWUsIFwiZnV6enlFeHRyYWN0T3BlcmF0aW9uTmFtZVwiKTtcbmNvbnN0IERFRkFVTFRfVElUTEUgPSBcIjx1bnRpdGxlZD5cIjtcbmNvbnN0IFNUT1JBR0VfS0VZJDEgPSBcInRhYlN0YXRlXCI7XG52YXIgX19kZWZQcm9wJDMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lJDMgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKCh0YXJnZXQyLCB2YWx1ZSkgPT4gX19kZWZQcm9wJDModGFyZ2V0MiwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KSwgXCJfX25hbWUkM1wiKTtcbmZ1bmN0aW9uIHVzZVZhcmlhYmxlRWRpdG9yKHtcbiAgZWRpdG9yVGhlbWUgPSBERUZBVUxUX0VESVRPUl9USEVNRSxcbiAga2V5TWFwID0gREVGQVVMVF9LRVlfTUFQLFxuICBvbkVkaXQsXG4gIHJlYWRPbmx5ID0gZmFsc2Vcbn0gPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW5pdGlhbFZhcmlhYmxlcyxcbiAgICB2YXJpYWJsZUVkaXRvcixcbiAgICBzZXRWYXJpYWJsZUVkaXRvclxuICB9ID0gdXNlRWRpdG9yQ29udGV4dCh7XG4gICAgbm9uTnVsbDogdHJ1ZSxcbiAgICBjYWxsZXI6IHVzZVZhcmlhYmxlRWRpdG9yXG4gIH0pO1xuICBjb25zdCBleGVjdXRpb25Db250ZXh0ID0gdXNlRXhlY3V0aW9uQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZSA9IHVzZU1lcmdlUXVlcnkoe1xuICAgIGNhbGxlcjogdXNlVmFyaWFibGVFZGl0b3JcbiAgfSk7XG4gIGNvbnN0IHByZXR0aWZ5ID0gdXNlUHJldHRpZnlFZGl0b3JzKHtcbiAgICBjYWxsZXI6IHVzZVZhcmlhYmxlRWRpdG9yXG4gIH0pO1xuICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGNvZGVNaXJyb3JSZWYgPSB1c2VSZWYoKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgaXNBY3RpdmUgPSB0cnVlO1xuICAgIGltcG9ydENvZGVNaXJyb3IoW2ltcG9ydChcIi4vaGludC5lczIuanNcIiksIGltcG9ydChcIi4vbGludC5lczIuanNcIiksIGltcG9ydChcIi4vbW9kZS5lczMuanNcIildKS50aGVuKChDb2RlTWlycm9yKSA9PiB7XG4gICAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvZGVNaXJyb3JSZWYuY3VycmVudCA9IENvZGVNaXJyb3I7XG4gICAgICBjb25zdCBjb250YWluZXIgPSByZWYuY3VycmVudDtcbiAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld0VkaXRvciA9IENvZGVNaXJyb3IoY29udGFpbmVyLCB7XG4gICAgICAgIHZhbHVlOiBpbml0aWFsVmFyaWFibGVzLFxuICAgICAgICBsaW5lTnVtYmVyczogdHJ1ZSxcbiAgICAgICAgdGFiU2l6ZTogMixcbiAgICAgICAgbW9kZTogXCJncmFwaHFsLXZhcmlhYmxlc1wiLFxuICAgICAgICB0aGVtZTogZWRpdG9yVGhlbWUsXG4gICAgICAgIGF1dG9DbG9zZUJyYWNrZXRzOiB0cnVlLFxuICAgICAgICBtYXRjaEJyYWNrZXRzOiB0cnVlLFxuICAgICAgICBzaG93Q3Vyc29yV2hlblNlbGVjdGluZzogdHJ1ZSxcbiAgICAgICAgcmVhZE9ubHk6IHJlYWRPbmx5ID8gXCJub2N1cnNvclwiIDogZmFsc2UsXG4gICAgICAgIGZvbGRHdXR0ZXI6IHRydWUsXG4gICAgICAgIGxpbnQ6IHtcbiAgICAgICAgICB2YXJpYWJsZVRvVHlwZTogdm9pZCAwXG4gICAgICAgIH0sXG4gICAgICAgIGhpbnRPcHRpb25zOiB7XG4gICAgICAgICAgY2xvc2VPblVuZm9jdXM6IGZhbHNlLFxuICAgICAgICAgIGNvbXBsZXRlU2luZ2xlOiBmYWxzZSxcbiAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgdmFyaWFibGVUb1R5cGU6IHZvaWQgMFxuICAgICAgICB9LFxuICAgICAgICBndXR0ZXJzOiBbXCJDb2RlTWlycm9yLWxpbmVudW1iZXJzXCIsIFwiQ29kZU1pcnJvci1mb2xkZ3V0dGVyXCJdLFxuICAgICAgICBleHRyYUtleXM6IGNvbW1vbktleXNcbiAgICAgIH0pO1xuICAgICAgbmV3RWRpdG9yLmFkZEtleU1hcCh7XG4gICAgICAgIFwiQ21kLVNwYWNlXCIoKSB7XG4gICAgICAgICAgbmV3RWRpdG9yLnNob3dIaW50KHtcbiAgICAgICAgICAgIGNvbXBsZXRlU2luZ2xlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBcIkN0cmwtU3BhY2VcIigpIHtcbiAgICAgICAgICBuZXdFZGl0b3Iuc2hvd0hpbnQoe1xuICAgICAgICAgICAgY29tcGxldGVTaW5nbGU6IGZhbHNlLFxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFwiQWx0LVNwYWNlXCIoKSB7XG4gICAgICAgICAgbmV3RWRpdG9yLnNob3dIaW50KHtcbiAgICAgICAgICAgIGNvbXBsZXRlU2luZ2xlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBcIlNoaWZ0LVNwYWNlXCIoKSB7XG4gICAgICAgICAgbmV3RWRpdG9yLnNob3dIaW50KHtcbiAgICAgICAgICAgIGNvbXBsZXRlU2luZ2xlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG5ld0VkaXRvci5vbihcImtleXVwXCIsIChlZGl0b3JJbnN0YW5jZSwgZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgY29kZTMgPSBldmVudC5rZXlDb2RlO1xuICAgICAgICBpZiAoY29kZTMgPj0gNjUgJiYgY29kZTMgPD0gOTAgfHwgIWV2ZW50LnNoaWZ0S2V5ICYmIGNvZGUzID49IDQ4ICYmIGNvZGUzIDw9IDU3IHx8IGV2ZW50LnNoaWZ0S2V5ICYmIGNvZGUzID09PSAxODkgfHwgZXZlbnQuc2hpZnRLZXkgJiYgY29kZTMgPT09IDIyMikge1xuICAgICAgICAgIGVkaXRvckluc3RhbmNlLmV4ZWNDb21tYW5kKFwiYXV0b2NvbXBsZXRlXCIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHNldFZhcmlhYmxlRWRpdG9yKG5ld0VkaXRvcik7XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlzQWN0aXZlID0gZmFsc2U7XG4gICAgfTtcbiAgfSwgW2VkaXRvclRoZW1lLCBpbml0aWFsVmFyaWFibGVzLCByZWFkT25seSwgc2V0VmFyaWFibGVFZGl0b3JdKTtcbiAgdXNlU3luY2hyb25pemVPcHRpb24odmFyaWFibGVFZGl0b3IsIFwia2V5TWFwXCIsIGtleU1hcCk7XG4gIHVzZUNoYW5nZUhhbmRsZXIodmFyaWFibGVFZGl0b3IsIG9uRWRpdCwgU1RPUkFHRV9LRVksIFwidmFyaWFibGVzXCIsIHVzZVZhcmlhYmxlRWRpdG9yKTtcbiAgdXNlQ29tcGxldGlvbih2YXJpYWJsZUVkaXRvciwgdXNlVmFyaWFibGVFZGl0b3IpO1xuICB1c2VLZXlNYXAodmFyaWFibGVFZGl0b3IsIFtcIkNtZC1FbnRlclwiLCBcIkN0cmwtRW50ZXJcIl0sIGV4ZWN1dGlvbkNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGV4ZWN1dGlvbkNvbnRleHQucnVuKTtcbiAgdXNlS2V5TWFwKHZhcmlhYmxlRWRpdG9yLCBbXCJTaGlmdC1DdHJsLVBcIl0sIHByZXR0aWZ5KTtcbiAgdXNlS2V5TWFwKHZhcmlhYmxlRWRpdG9yLCBbXCJTaGlmdC1DdHJsLU1cIl0sIG1lcmdlKTtcbiAgcmV0dXJuIHJlZjtcbn1cbl9fbmFtZSh1c2VWYXJpYWJsZUVkaXRvciwgXCJ1c2VWYXJpYWJsZUVkaXRvclwiKTtcbl9fbmFtZSQzKHVzZVZhcmlhYmxlRWRpdG9yLCBcInVzZVZhcmlhYmxlRWRpdG9yXCIpO1xuY29uc3QgU1RPUkFHRV9LRVkgPSBcInZhcmlhYmxlc1wiO1xudmFyIF9fZGVmUHJvcCQyID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSQyID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgodGFyZ2V0MiwgdmFsdWUpID0+IF9fZGVmUHJvcCQyKHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSksIFwiX19uYW1lJDJcIik7XG5jb25zdCBFZGl0b3JDb250ZXh0ID0gY3JlYXRlTnVsbGFibGVDb250ZXh0KFwiRWRpdG9yQ29udGV4dFwiKTtcbmZ1bmN0aW9uIEVkaXRvckNvbnRleHRQcm92aWRlcihwcm9wcykge1xuICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICBjb25zdCBzdG9yYWdlID0gdXNlU3RvcmFnZUNvbnRleHQoKTtcbiAgY29uc3QgW2hlYWRlckVkaXRvciwgc2V0SGVhZGVyRWRpdG9yXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbcXVlcnlFZGl0b3IsIHNldFF1ZXJ5RWRpdG9yXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbcmVzcG9uc2VFZGl0b3IsIHNldFJlc3BvbnNlRWRpdG9yXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbdmFyaWFibGVFZGl0b3IsIHNldFZhcmlhYmxlRWRpdG9yXSA9IHVzZVN0YXRlKG51bGwpO1xuICB1c2VTeW5jaHJvbml6ZVZhbHVlKGhlYWRlckVkaXRvciwgcHJvcHMuaGVhZGVycyk7XG4gIHVzZVN5bmNocm9uaXplVmFsdWUocXVlcnlFZGl0b3IsIHByb3BzLnF1ZXJ5KTtcbiAgdXNlU3luY2hyb25pemVWYWx1ZShyZXNwb25zZUVkaXRvciwgcHJvcHMucmVzcG9uc2UpO1xuICB1c2VTeW5jaHJvbml6ZVZhbHVlKHZhcmlhYmxlRWRpdG9yLCBwcm9wcy52YXJpYWJsZXMpO1xuICBjb25zdCBbc3RvcmVkRWRpdG9yVmFsdWVzXSA9IHVzZVN0YXRlKCgpID0+IHtcbiAgICB2YXIgX2EyLCBfYjIsIF9jMiwgX2QyLCBfZTIsIF9mO1xuICAgIHJldHVybiB7XG4gICAgICBoZWFkZXJzOiAoX2IyID0gKF9hMiA9IHByb3BzLmhlYWRlcnMpICE9IG51bGwgPyBfYTIgOiBzdG9yYWdlID09IG51bGwgPyB2b2lkIDAgOiBzdG9yYWdlLmdldChTVE9SQUdFX0tFWSQyKSkgIT0gbnVsbCA/IF9iMiA6IG51bGwsXG4gICAgICBxdWVyeTogKF9kMiA9IChfYzIgPSBwcm9wcy5xdWVyeSkgIT0gbnVsbCA/IF9jMiA6IHN0b3JhZ2UgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3JhZ2UuZ2V0KFNUT1JBR0VfS0VZX1FVRVJZKSkgIT0gbnVsbCA/IF9kMiA6IG51bGwsXG4gICAgICB2YXJpYWJsZXM6IChfZiA9IChfZTIgPSBwcm9wcy52YXJpYWJsZXMpICE9IG51bGwgPyBfZTIgOiBzdG9yYWdlID09IG51bGwgPyB2b2lkIDAgOiBzdG9yYWdlLmdldChTVE9SQUdFX0tFWSkpICE9IG51bGwgPyBfZiA6IG51bGxcbiAgICB9O1xuICB9KTtcbiAgY29uc3QgW3RhYlN0YXRlLCBzZXRUYWJTdGF0ZV0gPSB1c2VTdGF0ZSgoKSA9PiBnZXREZWZhdWx0VGFiU3RhdGUoX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7fSwgc3RvcmVkRWRpdG9yVmFsdWVzKSwge1xuICAgIHN0b3JhZ2VcbiAgfSkpKTtcbiAgY29uc3Qgc3RvcmVUYWJzID0gdXNlU3RvcmVUYWJzKHtcbiAgICBzdG9yYWdlLFxuICAgIHNob3VsZFBlcnNpc3RIZWFkZXJzOiBwcm9wcy5zaG91bGRQZXJzaXN0SGVhZGVyc1xuICB9KTtcbiAgY29uc3Qgc3luY2hyb25pemVBY3RpdmVUYWJWYWx1ZXMgPSB1c2VTeW5jaHJvbml6ZUFjdGl2ZVRhYlZhbHVlcyh7XG4gICAgcXVlcnlFZGl0b3IsXG4gICAgdmFyaWFibGVFZGl0b3IsXG4gICAgaGVhZGVyRWRpdG9yLFxuICAgIHJlc3BvbnNlRWRpdG9yXG4gIH0pO1xuICBjb25zdCBzZXRFZGl0b3JWYWx1ZXMgPSB1c2VTZXRFZGl0b3JWYWx1ZXMoe1xuICAgIHF1ZXJ5RWRpdG9yLFxuICAgIHZhcmlhYmxlRWRpdG9yLFxuICAgIGhlYWRlckVkaXRvcixcbiAgICByZXNwb25zZUVkaXRvclxuICB9KTtcbiAgY29uc3Qge1xuICAgIG9uVGFiQ2hhbmdlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgYWRkVGFiID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFRhYlN0YXRlKChjdXJyZW50KSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkVmFsdWVzID0gc3luY2hyb25pemVBY3RpdmVUYWJWYWx1ZXMoY3VycmVudCk7XG4gICAgICBjb25zdCB1cGRhdGVkID0ge1xuICAgICAgICB0YWJzOiBbLi4udXBkYXRlZFZhbHVlcy50YWJzLCBlbXB0eVRhYigpXSxcbiAgICAgICAgYWN0aXZlVGFiSW5kZXg6IHVwZGF0ZWRWYWx1ZXMudGFicy5sZW5ndGhcbiAgICAgIH07XG4gICAgICBzdG9yZVRhYnModXBkYXRlZCk7XG4gICAgICBzZXRFZGl0b3JWYWx1ZXModXBkYXRlZC50YWJzW3VwZGF0ZWQuYWN0aXZlVGFiSW5kZXhdKTtcbiAgICAgIG9uVGFiQ2hhbmdlID09IG51bGwgPyB2b2lkIDAgOiBvblRhYkNoYW5nZSh1cGRhdGVkKTtcbiAgICAgIHJldHVybiB1cGRhdGVkO1xuICAgIH0pO1xuICB9LCBbb25UYWJDaGFuZ2UsIHNldEVkaXRvclZhbHVlcywgc3RvcmVUYWJzLCBzeW5jaHJvbml6ZUFjdGl2ZVRhYlZhbHVlc10pO1xuICBjb25zdCBjaGFuZ2VUYWIgPSB1c2VDYWxsYmFjaygoaW5kZXgpID0+IHtcbiAgICBzZXRUYWJTdGF0ZSgoY3VycmVudCkgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IF9fc3ByZWFkUHJvcHMoX19zcHJlYWRWYWx1ZXMoe30sIHN5bmNocm9uaXplQWN0aXZlVGFiVmFsdWVzKGN1cnJlbnQpKSwge1xuICAgICAgICBhY3RpdmVUYWJJbmRleDogaW5kZXhcbiAgICAgIH0pO1xuICAgICAgc3RvcmVUYWJzKHVwZGF0ZWQpO1xuICAgICAgc2V0RWRpdG9yVmFsdWVzKHVwZGF0ZWQudGFic1t1cGRhdGVkLmFjdGl2ZVRhYkluZGV4XSk7XG4gICAgICBvblRhYkNoYW5nZSA9PSBudWxsID8gdm9pZCAwIDogb25UYWJDaGFuZ2UodXBkYXRlZCk7XG4gICAgICByZXR1cm4gdXBkYXRlZDtcbiAgICB9KTtcbiAgfSwgW29uVGFiQ2hhbmdlLCBzZXRFZGl0b3JWYWx1ZXMsIHN0b3JlVGFicywgc3luY2hyb25pemVBY3RpdmVUYWJWYWx1ZXNdKTtcbiAgY29uc3QgY2xvc2VUYWIgPSB1c2VDYWxsYmFjaygoaW5kZXgpID0+IHtcbiAgICBzZXRUYWJTdGF0ZSgoY3VycmVudCkgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHtcbiAgICAgICAgdGFiczogY3VycmVudC50YWJzLmZpbHRlcigoX3RhYiwgaSkgPT4gaW5kZXggIT09IGkpLFxuICAgICAgICBhY3RpdmVUYWJJbmRleDogTWF0aC5tYXgoY3VycmVudC5hY3RpdmVUYWJJbmRleCAtIDEsIDApXG4gICAgICB9O1xuICAgICAgc3RvcmVUYWJzKHVwZGF0ZWQpO1xuICAgICAgc2V0RWRpdG9yVmFsdWVzKHVwZGF0ZWQudGFic1t1cGRhdGVkLmFjdGl2ZVRhYkluZGV4XSk7XG4gICAgICBvblRhYkNoYW5nZSA9PSBudWxsID8gdm9pZCAwIDogb25UYWJDaGFuZ2UodXBkYXRlZCk7XG4gICAgICByZXR1cm4gdXBkYXRlZDtcbiAgICB9KTtcbiAgfSwgW29uVGFiQ2hhbmdlLCBzZXRFZGl0b3JWYWx1ZXMsIHN0b3JlVGFic10pO1xuICBjb25zdCB1cGRhdGVBY3RpdmVUYWJWYWx1ZXMgPSB1c2VDYWxsYmFjaygocGFydGlhbFRhYikgPT4ge1xuICAgIHNldFRhYlN0YXRlKChjdXJyZW50KSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gc2V0UHJvcGVydGllc0luQWN0aXZlVGFiKGN1cnJlbnQsIHBhcnRpYWxUYWIpO1xuICAgICAgc3RvcmVUYWJzKHVwZGF0ZWQpO1xuICAgICAgb25UYWJDaGFuZ2UgPT0gbnVsbCA/IHZvaWQgMCA6IG9uVGFiQ2hhbmdlKHVwZGF0ZWQpO1xuICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfSk7XG4gIH0sIFtvblRhYkNoYW5nZSwgc3RvcmVUYWJzXSk7XG4gIGNvbnN0IHtcbiAgICBvbkVkaXRPcGVyYXRpb25OYW1lXG4gIH0gPSBwcm9wcztcbiAgY29uc3Qgc2V0T3BlcmF0aW9uTmFtZSA9IHVzZUNhbGxiYWNrKChvcGVyYXRpb25OYW1lKSA9PiB7XG4gICAgaWYgKCFxdWVyeUVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBxdWVyeUVkaXRvci5vcGVyYXRpb25OYW1lID0gb3BlcmF0aW9uTmFtZTtcbiAgICB1cGRhdGVBY3RpdmVUYWJWYWx1ZXMoe1xuICAgICAgb3BlcmF0aW9uTmFtZVxuICAgIH0pO1xuICAgIG9uRWRpdE9wZXJhdGlvbk5hbWUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRWRpdE9wZXJhdGlvbk5hbWUob3BlcmF0aW9uTmFtZSk7XG4gIH0sIFtvbkVkaXRPcGVyYXRpb25OYW1lLCBxdWVyeUVkaXRvciwgdXBkYXRlQWN0aXZlVGFiVmFsdWVzXSk7XG4gIGNvbnN0IGRlZmF1bHRRdWVyeSA9IHRhYlN0YXRlLmFjdGl2ZVRhYkluZGV4ID4gMCA/IFwiXCIgOiAoX2EgPSBwcm9wcy5kZWZhdWx0UXVlcnkpICE9IG51bGwgPyBfYSA6IERFRkFVTFRfUVVFUlk7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB1c2VSZWYoe1xuICAgIGluaXRpYWxIZWFkZXJzOiAoX2IgPSBzdG9yZWRFZGl0b3JWYWx1ZXMuaGVhZGVycykgIT0gbnVsbCA/IF9iIDogXCJcIixcbiAgICBpbml0aWFsUXVlcnk6IChfYyA9IHN0b3JlZEVkaXRvclZhbHVlcy5xdWVyeSkgIT0gbnVsbCA/IF9jIDogZGVmYXVsdFF1ZXJ5LFxuICAgIGluaXRpYWxSZXNwb25zZTogKF9kID0gcHJvcHMucmVzcG9uc2UpICE9IG51bGwgPyBfZCA6IFwiXCIsXG4gICAgaW5pdGlhbFZhcmlhYmxlczogKF9lID0gc3RvcmVkRWRpdG9yVmFsdWVzLnZhcmlhYmxlcykgIT0gbnVsbCA/IF9lIDogXCJcIlxuICB9KTtcbiAgY29uc3QgZXh0ZXJuYWxGcmFnbWVudHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtYXAyID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wcy5leHRlcm5hbEZyYWdtZW50cykpIHtcbiAgICAgIGZvciAoY29uc3QgZnJhZ21lbnQgb2YgcHJvcHMuZXh0ZXJuYWxGcmFnbWVudHMpIHtcbiAgICAgICAgbWFwMi5zZXQoZnJhZ21lbnQubmFtZS52YWx1ZSwgZnJhZ21lbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzLmV4dGVybmFsRnJhZ21lbnRzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICB2aXNpdChwYXJzZSQxKHByb3BzLmV4dGVybmFsRnJhZ21lbnRzLCB7fSksIHtcbiAgICAgICAgRnJhZ21lbnREZWZpbml0aW9uKGZyYWdtZW50KSB7XG4gICAgICAgICAgbWFwMi5zZXQoZnJhZ21lbnQubmFtZS52YWx1ZSwgZnJhZ21lbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLmV4dGVybmFsRnJhZ21lbnRzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgYGV4dGVybmFsRnJhZ21lbnRzYCBwcm9wIG11c3QgZWl0aGVyIGJlIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIGZyYWdtZW50IGRlZmluaXRpb25zIGluIFNETCBvciBhIGxpc3Qgb2YgRnJhZ21lbnREZWZpbml0aW9uTm9kZSBvYmplY3RzLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcDI7XG4gIH0sIFtwcm9wcy5leHRlcm5hbEZyYWdtZW50c10pO1xuICBjb25zdCB2YWxpZGF0aW9uUnVsZXMgPSB1c2VNZW1vKCgpID0+IHByb3BzLnZhbGlkYXRpb25SdWxlcyB8fCBbXSwgW3Byb3BzLnZhbGlkYXRpb25SdWxlc10pO1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyhfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCB0YWJTdGF0ZSksIHtcbiAgICBhZGRUYWIsXG4gICAgY2hhbmdlVGFiLFxuICAgIGNsb3NlVGFiLFxuICAgIHVwZGF0ZUFjdGl2ZVRhYlZhbHVlcyxcbiAgICBoZWFkZXJFZGl0b3IsXG4gICAgcXVlcnlFZGl0b3IsXG4gICAgcmVzcG9uc2VFZGl0b3IsXG4gICAgdmFyaWFibGVFZGl0b3IsXG4gICAgc2V0SGVhZGVyRWRpdG9yLFxuICAgIHNldFF1ZXJ5RWRpdG9yLFxuICAgIHNldFJlc3BvbnNlRWRpdG9yLFxuICAgIHNldFZhcmlhYmxlRWRpdG9yLFxuICAgIHNldE9wZXJhdGlvbk5hbWVcbiAgfSksIGluaXRpYWxWYWx1ZXMuY3VycmVudCksIHtcbiAgICBleHRlcm5hbEZyYWdtZW50cyxcbiAgICB2YWxpZGF0aW9uUnVsZXMsXG4gICAgc2hvdWxkUGVyc2lzdEhlYWRlcnM6IHByb3BzLnNob3VsZFBlcnNpc3RIZWFkZXJzIHx8IGZhbHNlXG4gIH0pLCBbdGFiU3RhdGUsIGFkZFRhYiwgY2hhbmdlVGFiLCBjbG9zZVRhYiwgdXBkYXRlQWN0aXZlVGFiVmFsdWVzLCBoZWFkZXJFZGl0b3IsIHF1ZXJ5RWRpdG9yLCByZXNwb25zZUVkaXRvciwgdmFyaWFibGVFZGl0b3IsIHNldE9wZXJhdGlvbk5hbWUsIGV4dGVybmFsRnJhZ21lbnRzLCB2YWxpZGF0aW9uUnVsZXMsIHByb3BzLnNob3VsZFBlcnNpc3RIZWFkZXJzXSk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEVkaXRvckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZSxcbiAgICBjaGlsZHJlbjogcHJvcHMuY2hpbGRyZW5cbiAgfSk7XG59XG5fX25hbWUoRWRpdG9yQ29udGV4dFByb3ZpZGVyLCBcIkVkaXRvckNvbnRleHRQcm92aWRlclwiKTtcbl9fbmFtZSQyKEVkaXRvckNvbnRleHRQcm92aWRlciwgXCJFZGl0b3JDb250ZXh0UHJvdmlkZXJcIik7XG5jb25zdCB1c2VFZGl0b3JDb250ZXh0ID0gY3JlYXRlQ29udGV4dEhvb2soRWRpdG9yQ29udGV4dCk7XG5jb25zdCBERUZBVUxUX1FVRVJZID0gYCMgV2VsY29tZSB0byBHcmFwaGlRTFxuI1xuIyBHcmFwaGlRTCBpcyBhbiBpbi1icm93c2VyIHRvb2wgZm9yIHdyaXRpbmcsIHZhbGlkYXRpbmcsIGFuZFxuIyB0ZXN0aW5nIEdyYXBoUUwgcXVlcmllcy5cbiNcbiMgVHlwZSBxdWVyaWVzIGludG8gdGhpcyBzaWRlIG9mIHRoZSBzY3JlZW4sIGFuZCB5b3Ugd2lsbCBzZWUgaW50ZWxsaWdlbnRcbiMgdHlwZWFoZWFkcyBhd2FyZSBvZiB0aGUgY3VycmVudCBHcmFwaFFMIHR5cGUgc2NoZW1hIGFuZCBsaXZlIHN5bnRheCBhbmRcbiMgdmFsaWRhdGlvbiBlcnJvcnMgaGlnaGxpZ2h0ZWQgd2l0aGluIHRoZSB0ZXh0LlxuI1xuIyBHcmFwaFFMIHF1ZXJpZXMgdHlwaWNhbGx5IHN0YXJ0IHdpdGggYSBcIntcIiBjaGFyYWN0ZXIuIExpbmVzIHRoYXQgc3RhcnRcbiMgd2l0aCBhICMgYXJlIGlnbm9yZWQuXG4jXG4jIEFuIGV4YW1wbGUgR3JhcGhRTCBxdWVyeSBtaWdodCBsb29rIGxpa2U6XG4jXG4jICAgICB7XG4jICAgICAgIGZpZWxkKGFyZzogXCJ2YWx1ZVwiKSB7XG4jICAgICAgICAgc3ViRmllbGRcbiMgICAgICAgfVxuIyAgICAgfVxuI1xuIyBLZXlib2FyZCBzaG9ydGN1dHM6XG4jXG4jICBQcmV0dGlmeSBRdWVyeTogIFNoaWZ0LUN0cmwtUCAob3IgcHJlc3MgdGhlIHByZXR0aWZ5IGJ1dHRvbiBhYm92ZSlcbiNcbiMgICAgIE1lcmdlIFF1ZXJ5OiAgU2hpZnQtQ3RybC1NIChvciBwcmVzcyB0aGUgbWVyZ2UgYnV0dG9uIGFib3ZlKVxuI1xuIyAgICAgICBSdW4gUXVlcnk6ICBDdHJsLUVudGVyIChvciBwcmVzcyB0aGUgcGxheSBidXR0b24gYWJvdmUpXG4jXG4jICAgQXV0byBDb21wbGV0ZTogIEN0cmwtU3BhY2UgKG9yIGp1c3Qgc3RhcnQgdHlwaW5nKVxuI1xuXG5gO1xudmFyIF9fZGVmUHJvcCQxID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSQxID0gLyogQF9fUFVSRV9fICovIF9fbmFtZSgodGFyZ2V0MiwgdmFsdWUpID0+IF9fZGVmUHJvcCQxKHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSksIFwiX19uYW1lJDFcIik7XG5mdW5jdGlvbiB1c2VSZXNwb25zZUVkaXRvcih7XG4gIFJlc3BvbnNlVG9vbHRpcCxcbiAgZWRpdG9yVGhlbWUgPSBERUZBVUxUX0VESVRPUl9USEVNRSxcbiAga2V5TWFwID0gREVGQVVMVF9LRVlfTUFQXG59ID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGZldGNoRXJyb3IsXG4gICAgdmFsaWRhdGlvbkVycm9yc1xuICB9ID0gdXNlU2NoZW1hQ29udGV4dCh7XG4gICAgbm9uTnVsbDogdHJ1ZSxcbiAgICBjYWxsZXI6IHVzZVJlc3BvbnNlRWRpdG9yXG4gIH0pO1xuICBjb25zdCB7XG4gICAgaW5pdGlhbFJlc3BvbnNlLFxuICAgIHJlc3BvbnNlRWRpdG9yLFxuICAgIHNldFJlc3BvbnNlRWRpdG9yXG4gIH0gPSB1c2VFZGl0b3JDb250ZXh0KHtcbiAgICBub25OdWxsOiB0cnVlLFxuICAgIGNhbGxlcjogdXNlUmVzcG9uc2VFZGl0b3JcbiAgfSk7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgcmVzcG9uc2VUb29sdGlwUmVmID0gdXNlUmVmKFJlc3BvbnNlVG9vbHRpcCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzcG9uc2VUb29sdGlwUmVmLmN1cnJlbnQgPSBSZXNwb25zZVRvb2x0aXA7XG4gIH0sIFtSZXNwb25zZVRvb2x0aXBdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgaXNBY3RpdmUgPSB0cnVlO1xuICAgIGltcG9ydENvZGVNaXJyb3IoW1xuICAgICAgaW1wb3J0KFwiLi9mb2xkZ3V0dGVyLmVzLmpzXCIpLnRoZW4oZnVuY3Rpb24objIpIHtcbiAgICAgICAgcmV0dXJuIG4yLmY7XG4gICAgICB9KSxcbiAgICAgIGltcG9ydChcIi4vYnJhY2UtZm9sZC5lcy5qc1wiKS50aGVuKGZ1bmN0aW9uKG4yKSB7XG4gICAgICAgIHJldHVybiBuMi5iO1xuICAgICAgfSksXG4gICAgICBpbXBvcnQoXCIuL2RpYWxvZy5lcy5qc1wiKS50aGVuKGZ1bmN0aW9uKG4yKSB7XG4gICAgICAgIHJldHVybiBuMi5kO1xuICAgICAgfSksXG4gICAgICBpbXBvcnQoXCIuL3NlYXJjaC5lcy5qc1wiKS50aGVuKGZ1bmN0aW9uKG4yKSB7XG4gICAgICAgIHJldHVybiBuMi5zO1xuICAgICAgfSksXG4gICAgICBpbXBvcnQoXCIuL3NlYXJjaGN1cnNvci5lcy5qc1wiKS50aGVuKGZ1bmN0aW9uKG4yKSB7XG4gICAgICAgIHJldHVybiBuMi5zO1xuICAgICAgfSksXG4gICAgICBpbXBvcnQoXCIuL2p1bXAtdG8tbGluZS5lcy5qc1wiKS50aGVuKGZ1bmN0aW9uKG4yKSB7XG4gICAgICAgIHJldHVybiBuMi5qO1xuICAgICAgfSksXG4gICAgICBpbXBvcnQoXCIuL3N1YmxpbWUuZXMuanNcIikudGhlbihmdW5jdGlvbihuMikge1xuICAgICAgICByZXR1cm4gbjIucztcbiAgICAgIH0pLFxuICAgICAgaW1wb3J0KFwiLi9tb2RlLmVzMi5qc1wiKSxcbiAgICAgIGltcG9ydChcIi4vaW5mby1hZGRvbi5lcy5qc1wiKVxuICAgIF0sIHtcbiAgICAgIHVzZUNvbW1vbkFkZG9uczogZmFsc2VcbiAgICB9KS50aGVuKChDb2RlTWlycm9yKSA9PiB7XG4gICAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvb2x0aXBEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgQ29kZU1pcnJvci5yZWdpc3RlckhlbHBlcihcImluZm9cIiwgXCJncmFwaHFsLXJlc3VsdHNcIiwgKHRva2VuMiwgX29wdGlvbnMsIF9jbSwgcG9zKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZm9FbGVtZW50cyA9IFtdO1xuICAgICAgICBjb25zdCBSZXNwb25zZVRvb2x0aXBDb21wb25lbnQgPSByZXNwb25zZVRvb2x0aXBSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKFJlc3BvbnNlVG9vbHRpcENvbXBvbmVudCkge1xuICAgICAgICAgIGluZm9FbGVtZW50cy5wdXNoKC8qIEBfX1BVUkVfXyAqLyBqc3goUmVzcG9uc2VUb29sdGlwQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBwb3NcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEltYWdlUHJldmlldy5zaG91bGRSZW5kZXIodG9rZW4yKSkge1xuICAgICAgICAgIGluZm9FbGVtZW50cy5wdXNoKC8qIEBfX1BVUkVfXyAqLyBqc3goSW1hZ2VQcmV2aWV3LCB7XG4gICAgICAgICAgICB0b2tlbjogdG9rZW4yXG4gICAgICAgICAgfSwgXCJpbWFnZS1wcmV2aWV3XCIpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWluZm9FbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICBSZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlKHRvb2x0aXBEaXYpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIFJlYWN0RE9NLnJlbmRlcihpbmZvRWxlbWVudHMsIHRvb2x0aXBEaXYpO1xuICAgICAgICByZXR1cm4gdG9vbHRpcERpdjtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gcmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBuZXdFZGl0b3IgPSBDb2RlTWlycm9yKGNvbnRhaW5lciwge1xuICAgICAgICB2YWx1ZTogaW5pdGlhbFJlc3BvbnNlLFxuICAgICAgICBsaW5lV3JhcHBpbmc6IHRydWUsXG4gICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICB0aGVtZTogZWRpdG9yVGhlbWUsXG4gICAgICAgIG1vZGU6IFwiZ3JhcGhxbC1yZXN1bHRzXCIsXG4gICAgICAgIGZvbGRHdXR0ZXI6IHRydWUsXG4gICAgICAgIGd1dHRlcnM6IFtcIkNvZGVNaXJyb3ItZm9sZGd1dHRlclwiXSxcbiAgICAgICAgaW5mbzogdHJ1ZSxcbiAgICAgICAgZXh0cmFLZXlzOiBjb21tb25LZXlzXG4gICAgICB9KTtcbiAgICAgIHNldFJlc3BvbnNlRWRpdG9yKG5ld0VkaXRvcik7XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlzQWN0aXZlID0gZmFsc2U7XG4gICAgfTtcbiAgfSwgW2VkaXRvclRoZW1lLCBpbml0aWFsUmVzcG9uc2UsIHNldFJlc3BvbnNlRWRpdG9yXSk7XG4gIHVzZVN5bmNocm9uaXplT3B0aW9uKHJlc3BvbnNlRWRpdG9yLCBcImtleU1hcFwiLCBrZXlNYXApO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChmZXRjaEVycm9yKSB7XG4gICAgICByZXNwb25zZUVkaXRvciA9PSBudWxsID8gdm9pZCAwIDogcmVzcG9uc2VFZGl0b3Iuc2V0VmFsdWUoZmV0Y2hFcnJvcik7XG4gICAgfVxuICAgIGlmICh2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc3BvbnNlRWRpdG9yID09IG51bGwgPyB2b2lkIDAgOiByZXNwb25zZUVkaXRvci5zZXRWYWx1ZShmb3JtYXRFcnJvcih2YWxpZGF0aW9uRXJyb3JzKSk7XG4gICAgfVxuICB9LCBbcmVzcG9uc2VFZGl0b3IsIGZldGNoRXJyb3IsIHZhbGlkYXRpb25FcnJvcnNdKTtcbiAgcmV0dXJuIHJlZjtcbn1cbl9fbmFtZSh1c2VSZXNwb25zZUVkaXRvciwgXCJ1c2VSZXNwb25zZUVkaXRvclwiKTtcbl9fbmFtZSQxKHVzZVJlc3BvbnNlRWRpdG9yLCBcInVzZVJlc3BvbnNlRWRpdG9yXCIpO1xudmFyIF9fZGVmUHJvcDIgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lMiA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKHRhcmdldDIsIHZhbHVlKSA9PiBfX2RlZlByb3AyKHRhcmdldDIsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSksIFwiX19uYW1lXCIpO1xuZnVuY3Rpb24gdXNlRHJhZ1Jlc2l6ZSh7XG4gIGRlZmF1bHRTaXplUmVsYXRpb24gPSBERUZBVUxUX0ZMRVgsXG4gIGRpcmVjdGlvbixcbiAgaW5pdGlhbGx5SGlkZGVuLFxuICBvbkhpZGRlbkVsZW1lbnRDaGFuZ2UsXG4gIHNpemVUaHJlc2hvbGRGaXJzdCA9IDEwMCxcbiAgc2l6ZVRocmVzaG9sZFNlY29uZCA9IDEwMCxcbiAgc3RvcmFnZUtleVxufSkge1xuICBjb25zdCBzdG9yYWdlID0gdXNlU3RvcmFnZUNvbnRleHQoKTtcbiAgY29uc3Qgc3RvcmUgPSB1c2VDYWxsYmFjayhkZWJvdW5jZSg1MDAsICh2YWx1ZSkgPT4ge1xuICAgIGlmIChzdG9yYWdlICYmIHN0b3JhZ2VLZXkpIHtcbiAgICAgIHN0b3JhZ2Uuc2V0KHN0b3JhZ2VLZXksIHZhbHVlKTtcbiAgICB9XG4gIH0pLCBbc3RvcmFnZSwgc3RvcmFnZUtleV0pO1xuICBjb25zdCBbaGlkZGVuRWxlbWVudCwgX3NldEhpZGRlbkVsZW1lbnRdID0gdXNlU3RhdGUoKCkgPT4ge1xuICAgIGNvbnN0IHN0b3JlZFZhbHVlID0gc3RvcmFnZSAmJiBzdG9yYWdlS2V5ID8gc3RvcmFnZS5nZXQoc3RvcmFnZUtleSkgOiBudWxsO1xuICAgIGlmIChzdG9yZWRWYWx1ZSA9PT0gSElERV9GSVJTVCB8fCBpbml0aWFsbHlIaWRkZW4gPT09IFwiZmlyc3RcIikge1xuICAgICAgcmV0dXJuIFwiZmlyc3RcIjtcbiAgICB9XG4gICAgaWYgKHN0b3JlZFZhbHVlID09PSBISURFX1NFQ09ORCB8fCBpbml0aWFsbHlIaWRkZW4gPT09IFwic2Vjb25kXCIpIHtcbiAgICAgIHJldHVybiBcInNlY29uZFwiO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSk7XG4gIGNvbnN0IHNldEhpZGRlbkVsZW1lbnQgPSB1c2VDYWxsYmFjaygoZWxlbWVudCkgPT4ge1xuICAgIF9zZXRIaWRkZW5FbGVtZW50KGVsZW1lbnQpO1xuICAgIG9uSGlkZGVuRWxlbWVudENoYW5nZSA9PSBudWxsID8gdm9pZCAwIDogb25IaWRkZW5FbGVtZW50Q2hhbmdlKGVsZW1lbnQpO1xuICB9LCBbb25IaWRkZW5FbGVtZW50Q2hhbmdlXSk7XG4gIGNvbnN0IGZpcnN0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBkcmFnQmFyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBzZWNvbmRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGRlZmF1bHRGbGV4UmVmID0gdXNlUmVmKGAke2RlZmF1bHRTaXplUmVsYXRpb259YCk7XG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc3RvcmVkVmFsdWUgPSBzdG9yYWdlICYmIHN0b3JhZ2VLZXkgPyBzdG9yYWdlLmdldChzdG9yYWdlS2V5KSB8fCBkZWZhdWx0RmxleFJlZi5jdXJyZW50IDogZGVmYXVsdEZsZXhSZWYuY3VycmVudDtcbiAgICBjb25zdCBmbGV4RGlyZWN0aW9uID0gZGlyZWN0aW9uID09PSBcImhvcml6b250YWxcIiA/IFwicm93XCIgOiBcImNvbHVtblwiO1xuICAgIGlmIChmaXJzdFJlZi5jdXJyZW50KSB7XG4gICAgICBmaXJzdFJlZi5jdXJyZW50LnN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcbiAgICAgIGZpcnN0UmVmLmN1cnJlbnQuc3R5bGUuZmxleERpcmVjdGlvbiA9IGZsZXhEaXJlY3Rpb247XG4gICAgICBmaXJzdFJlZi5jdXJyZW50LnN0eWxlLmZsZXggPSBzdG9yZWRWYWx1ZSA9PT0gSElERV9GSVJTVCB8fCBzdG9yZWRWYWx1ZSA9PT0gSElERV9TRUNPTkQgPyBkZWZhdWx0RmxleFJlZi5jdXJyZW50IDogc3RvcmVkVmFsdWU7XG4gICAgfVxuICAgIGlmIChzZWNvbmRSZWYuY3VycmVudCkge1xuICAgICAgc2Vjb25kUmVmLmN1cnJlbnQuc3R5bGUuZGlzcGxheSA9IFwiZmxleFwiO1xuICAgICAgc2Vjb25kUmVmLmN1cnJlbnQuc3R5bGUuZmxleERpcmVjdGlvbiA9IGZsZXhEaXJlY3Rpb247XG4gICAgICBzZWNvbmRSZWYuY3VycmVudC5zdHlsZS5mbGV4ID0gXCIxXCI7XG4gICAgfVxuICAgIGlmIChkcmFnQmFyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGRyYWdCYXJSZWYuY3VycmVudC5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gICAgICBkcmFnQmFyUmVmLmN1cnJlbnQuc3R5bGUuZmxleERpcmVjdGlvbiA9IGZsZXhEaXJlY3Rpb247XG4gICAgfVxuICB9LCBbZGlyZWN0aW9uLCBzdG9yYWdlLCBzdG9yYWdlS2V5XSk7XG4gIGNvbnN0IGhpZGUgPSB1c2VDYWxsYmFjaygocmVzaXphYmxlRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSByZXNpemFibGVFbGVtZW50ID09PSBcImZpcnN0XCIgPyBmaXJzdFJlZi5jdXJyZW50IDogc2Vjb25kUmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IFwiLTEwMDBweFwiO1xuICAgIGVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gICAgZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gXCIwXCI7XG4gICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBcIjUwMHB4XCI7XG4gICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IFwiNTAwcHhcIjtcbiAgICBpZiAoZmlyc3RSZWYuY3VycmVudCkge1xuICAgICAgY29uc3QgZmxleCA9IHBhcnNlRmxvYXQoZmlyc3RSZWYuY3VycmVudC5zdHlsZS5mbGV4KTtcbiAgICAgIGlmICghTnVtYmVyLmlzRmluaXRlKGZsZXgpIHx8IGZsZXggPCAxKSB7XG4gICAgICAgIGZpcnN0UmVmLmN1cnJlbnQuc3R5bGUuZmxleCA9IFwiMVwiO1xuICAgICAgfVxuICAgICAgZmlyc3RSZWYuY3VycmVudC5zdHlsZS5mbGV4O1xuICAgIH1cbiAgfSwgW10pO1xuICBjb25zdCBzaG93ID0gdXNlQ2FsbGJhY2soKHJlc2l6YWJsZUVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gcmVzaXphYmxlRWxlbWVudCA9PT0gXCJmaXJzdFwiID8gZmlyc3RSZWYuY3VycmVudCA6IHNlY29uZFJlZi5jdXJyZW50O1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbGVtZW50LnN0eWxlLndpZHRoID0gXCJcIjtcbiAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9IFwiXCI7XG4gICAgZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gXCJcIjtcbiAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gXCJcIjtcbiAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBcIlwiO1xuICAgIGlmIChmaXJzdFJlZi5jdXJyZW50ICYmIHN0b3JhZ2UgJiYgc3RvcmFnZUtleSkge1xuICAgICAgY29uc3Qgc3RvcmVkVmFsdWUgPSBzdG9yYWdlID09IG51bGwgPyB2b2lkIDAgOiBzdG9yYWdlLmdldChzdG9yYWdlS2V5KTtcbiAgICAgIGlmIChzdG9yZWRWYWx1ZSAmJiBzdG9yZWRWYWx1ZSAhPT0gSElERV9GSVJTVCAmJiBzdG9yZWRWYWx1ZSAhPT0gSElERV9TRUNPTkQpIHtcbiAgICAgICAgZmlyc3RSZWYuY3VycmVudC5zdHlsZS5mbGV4ID0gc3RvcmVkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9LCBbc3RvcmFnZSwgc3RvcmFnZUtleV0pO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChoaWRkZW5FbGVtZW50ID09PSBcImZpcnN0XCIpIHtcbiAgICAgIGhpZGUoXCJmaXJzdFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2hvdyhcImZpcnN0XCIpO1xuICAgIH1cbiAgICBpZiAoaGlkZGVuRWxlbWVudCA9PT0gXCJzZWNvbmRcIikge1xuICAgICAgaGlkZShcInNlY29uZFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2hvdyhcInNlY29uZFwiKTtcbiAgICB9XG4gIH0sIFtoaWRkZW5FbGVtZW50LCBoaWRlLCBzaG93XSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkcmFnQmFyUmVmLmN1cnJlbnQgfHwgIWZpcnN0UmVmLmN1cnJlbnQgfHwgIXNlY29uZFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRyYWdCYXJDb250YWluZXIgPSBkcmFnQmFyUmVmLmN1cnJlbnQ7XG4gICAgY29uc3QgZmlyc3RDb250YWluZXIgPSBmaXJzdFJlZi5jdXJyZW50O1xuICAgIGNvbnN0IHdyYXBwZXIgPSBmaXJzdENvbnRhaW5lci5wYXJlbnRFbGVtZW50O1xuICAgIGNvbnN0IGV2ZW50UHJvcGVydHkgPSBkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbFwiID8gXCJjbGllbnRYXCIgOiBcImNsaWVudFlcIjtcbiAgICBjb25zdCByZWN0UHJvcGVydHkgPSBkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbFwiID8gXCJsZWZ0XCIgOiBcInRvcFwiO1xuICAgIGNvbnN0IGFkamFjZW50UmVjdFByb3BlcnR5ID0gZGlyZWN0aW9uID09PSBcImhvcml6b250YWxcIiA/IFwicmlnaHRcIiA6IFwiYm90dG9tXCI7XG4gICAgY29uc3Qgc2l6ZVByb3BlcnR5ID0gZGlyZWN0aW9uID09PSBcImhvcml6b250YWxcIiA/IFwiY2xpZW50V2lkdGhcIiA6IFwiY2xpZW50SGVpZ2h0XCI7XG4gICAgZnVuY3Rpb24gaGFuZGxlTW91c2VEb3duKGRvd25FdmVudCkge1xuICAgICAgZG93bkV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCBvZmZzZXQgPSBkb3duRXZlbnRbZXZlbnRQcm9wZXJ0eV0gLSBkcmFnQmFyQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW3JlY3RQcm9wZXJ0eV07XG4gICAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZU1vdmUobW92ZUV2ZW50KSB7XG4gICAgICAgIGlmIChtb3ZlRXZlbnQuYnV0dG9ucyA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVNb3VzZVVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlyc3RTaXplID0gbW92ZUV2ZW50W2V2ZW50UHJvcGVydHldIC0gd3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtyZWN0UHJvcGVydHldIC0gb2Zmc2V0O1xuICAgICAgICBjb25zdCBzZWNvbmRTaXplID0gd3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVthZGphY2VudFJlY3RQcm9wZXJ0eV0gLSBtb3ZlRXZlbnRbZXZlbnRQcm9wZXJ0eV0gKyBvZmZzZXQgLSBkcmFnQmFyQ29udGFpbmVyW3NpemVQcm9wZXJ0eV07XG4gICAgICAgIGlmIChmaXJzdFNpemUgPCBzaXplVGhyZXNob2xkRmlyc3QpIHtcbiAgICAgICAgICBzZXRIaWRkZW5FbGVtZW50KFwiZmlyc3RcIik7XG4gICAgICAgICAgc3RvcmUoSElERV9GSVJTVCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2Vjb25kU2l6ZSA8IHNpemVUaHJlc2hvbGRTZWNvbmQpIHtcbiAgICAgICAgICBzZXRIaWRkZW5FbGVtZW50KFwic2Vjb25kXCIpO1xuICAgICAgICAgIHN0b3JlKEhJREVfU0VDT05EKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRIaWRkZW5FbGVtZW50KG51bGwpO1xuICAgICAgICAgIGNvbnN0IG5ld0ZsZXggPSBgJHtmaXJzdFNpemUgLyBzZWNvbmRTaXplfWA7XG4gICAgICAgICAgZmlyc3RDb250YWluZXIuc3R5bGUuZmxleCA9IG5ld0ZsZXg7XG4gICAgICAgICAgc3RvcmUobmV3RmxleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9fbmFtZShoYW5kbGVNb3VzZU1vdmUsIFwiaGFuZGxlTW91c2VNb3ZlXCIpO1xuICAgICAgX19uYW1lMihoYW5kbGVNb3VzZU1vdmUsIFwiaGFuZGxlTW91c2VNb3ZlXCIpO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlTW91c2VVcCgpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBoYW5kbGVNb3VzZU1vdmUpO1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBoYW5kbGVNb3VzZVVwKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShoYW5kbGVNb3VzZVVwLCBcImhhbmRsZU1vdXNlVXBcIik7XG4gICAgICBfX25hbWUyKGhhbmRsZU1vdXNlVXAsIFwiaGFuZGxlTW91c2VVcFwiKTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgaGFuZGxlTW91c2VNb3ZlKTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIGhhbmRsZU1vdXNlVXApO1xuICAgIH1cbiAgICBfX25hbWUoaGFuZGxlTW91c2VEb3duLCBcImhhbmRsZU1vdXNlRG93blwiKTtcbiAgICBfX25hbWUyKGhhbmRsZU1vdXNlRG93biwgXCJoYW5kbGVNb3VzZURvd25cIik7XG4gICAgZHJhZ0JhckNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIGhhbmRsZU1vdXNlRG93bik7XG4gICAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgICBpZiAoZmlyc3RSZWYuY3VycmVudCkge1xuICAgICAgICBmaXJzdFJlZi5jdXJyZW50LnN0eWxlLmZsZXggPSBkZWZhdWx0RmxleFJlZi5jdXJyZW50O1xuICAgICAgfVxuICAgICAgc3RvcmUoZGVmYXVsdEZsZXhSZWYuY3VycmVudCk7XG4gICAgICBzZXRIaWRkZW5FbGVtZW50KG51bGwpO1xuICAgIH1cbiAgICBfX25hbWUocmVzZXQsIFwicmVzZXRcIik7XG4gICAgX19uYW1lMihyZXNldCwgXCJyZXNldFwiKTtcbiAgICBkcmFnQmFyQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJkYmxjbGlja1wiLCByZXNldCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRyYWdCYXJDb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCBoYW5kbGVNb3VzZURvd24pO1xuICAgICAgZHJhZ0JhckNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKFwiZGJsY2xpY2tcIiwgcmVzZXQpO1xuICAgIH07XG4gIH0sIFtkaXJlY3Rpb24sIHNldEhpZGRlbkVsZW1lbnQsIHNpemVUaHJlc2hvbGRGaXJzdCwgc2l6ZVRocmVzaG9sZFNlY29uZCwgc3RvcmVdKTtcbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gKHtcbiAgICBkcmFnQmFyUmVmLFxuICAgIGhpZGRlbkVsZW1lbnQsXG4gICAgZmlyc3RSZWYsXG4gICAgc2V0SGlkZGVuRWxlbWVudCxcbiAgICBzZWNvbmRSZWZcbiAgfSksIFtoaWRkZW5FbGVtZW50LCBzZXRIaWRkZW5FbGVtZW50XSk7XG59XG5fX25hbWUodXNlRHJhZ1Jlc2l6ZSwgXCJ1c2VEcmFnUmVzaXplXCIpO1xuX19uYW1lMih1c2VEcmFnUmVzaXplLCBcInVzZURyYWdSZXNpemVcIik7XG5jb25zdCBERUZBVUxUX0ZMRVggPSAxO1xuY29uc3QgSElERV9GSVJTVCA9IFwiaGlkZS1maXJzdFwiO1xuY29uc3QgSElERV9TRUNPTkQgPSBcImhpZGUtc2Vjb25kXCI7XG5leHBvcnQgeyB1c2VTZWxlY3RIaXN0b3J5SXRlbSBhcyBBLCBTY2hlbWFDb250ZXh0UHJvdmlkZXIgYXMgQiwgQ29tcGxldGlvbkl0ZW1LaW5kIGFzIEMsIHVzZVNjaGVtYUNvbnRleHQgYXMgRCwgRWRpdG9yQ29udGV4dCBhcyBFLCBTdG9yYWdlQ29udGV4dCBhcyBGLCBTdG9yYWdlQ29udGV4dFByb3ZpZGVyIGFzIEcsIEhpc3RvcnlDb250ZXh0IGFzIEgsIEluc2VydFRleHRGb3JtYXQgYXMgSSwgdXNlU3RvcmFnZUNvbnRleHQgYXMgSiwgdXNlRHJhZ1Jlc2l6ZSBhcyBLLCBMZXhSdWxlcyBhcyBMLCBQYXJzZVJ1bGVzIGFzIFAsIFJ1bGVLaW5kcyBhcyBSLCBTY2hlbWFDb250ZXh0IGFzIFMsIEVkaXRvckNvbnRleHRQcm92aWRlciBhcyBhLCBJbWFnZVByZXZpZXcgYXMgYiwgY29tbW9uanNHbG9iYWwgYXMgYywgb25IYXNDb21wbGV0aW9uIGFzIGQsIHVzZUNvcHlRdWVyeSBhcyBlLCB1c2VFZGl0b3JDb250ZXh0IGFzIGYsIHVzZUhlYWRlckVkaXRvciBhcyBnLCB1c2VNZXJnZVF1ZXJ5IGFzIGgsIGlzSWdub3JlZCBhcyBpLCB1c2VQcmV0dGlmeUVkaXRvcnMgYXMgaiwgdXNlUXVlcnlFZGl0b3IgYXMgaywgbGlzdDIgYXMgbCwgdXNlUmVzcG9uc2VFZGl0b3IgYXMgbSwgdXNlVmFyaWFibGVFZGl0b3IgYXMgbiwgb3B0IGFzIG8sIHAsIEV4ZWN1dGlvbkNvbnRleHQgYXMgcSwgRXhlY3V0aW9uQ29udGV4dFByb3ZpZGVyIGFzIHIsIHVzZUV4ZWN1dGlvbkNvbnRleHQgYXMgcywgdCwgdXNlQXV0b0NvbXBsZXRlTGVhZnMgYXMgdSwgRXhwbG9yZXJDb250ZXh0IGFzIHYsIEV4cGxvcmVyQ29udGV4dFByb3ZpZGVyIGFzIHcsIHVzZUV4cGxvcmVyQ29udGV4dCBhcyB4LCBIaXN0b3J5Q29udGV4dFByb3ZpZGVyIGFzIHksIHVzZUhpc3RvcnlDb250ZXh0IGFzIHogfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFqQkE7QUFDQTtBQWtCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE3a0VBO0FBK2tFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFWQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBQ0E7QUFhQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFuQ0E7QUFxQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFnRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUExQkE7QUE0QkE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFTQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBYUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBVkE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFoQkE7QUFrQkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQVZBO0FBakNBO0FBOENBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQVpBO0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBO0FBQ0E7QUFDQTtBQURBO0FBT0E7QUFDQTtBQURBO0FBS0E7QUFDQTtBQUdBO0FBSkE7QUFiQTtBQVpBO0FBb0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBO0FBQ0E7QUFDQTtBQURBO0FBT0E7QUFDQTtBQURBO0FBY0E7QUFDQTtBQVlBO0FBYkE7QUF0QkE7QUFaQTtBQXVEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQVRBO0FBREE7QUFhQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQWxCQTtBQW1CQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFOQTtBQVFBO0FBYkE7QUFlQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFZQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUF4Q0E7QUFDQTtBQXdDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUF4REE7QUFDQTtBQXdEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUNBO0FBTUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQW5GQTtBQUNBO0FBbUZBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBOztBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFiQTtBQUNBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUhBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTs7QUFPQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTVCQTtBQThCQTtBQUNBO0FBQUE7QUFDQTtBQU9BO0FBT0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBUUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQVJBO0FBQ0E7QUFTQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBMUJBO0FBNEJBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVFBO0FBU0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBU0E7QUFPQTtBQUNBO0FBT0E7QUFPQTtBQUNBO0FBUUE7QUFDQTtBQVFBO0FBbk9BOzs7QUFxT0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFPQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFWQTtBQVdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzQkE7QUE2QkE7O0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7OztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUpBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQVNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWZBO0FBZ0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTs7O0FBQ0E7QUFJQTtBQUhBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQVBBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBOzs7QUFDQTtBQUlBO0FBSEE7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTs7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBRkE7QUFDQTtBQUZBO0FBSUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFEQTtBQURBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUZBO0FBQ0E7QUFGQTtBQUlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUtBO0FBSkE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWZBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUF6QkE7QUEwQkE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBT0E7QUFOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQXJDQTtBQTRDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUEvQkE7QUFnQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFLQTtBQUpBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBS0E7QUFKQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBRkE7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFLQTtBQUpBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUtBO0FBSkE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFVQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBVkE7QUFZQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBS0E7QUFKQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQXJCQTtBQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBekJBO0FBMEJBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7OztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWJBO0FBZUE7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBSUE7QUFIQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBSUE7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBUUE7QUFQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/index.es.js\n");
|
2571 |
|
2572 | }),
|
2573 |
|
2574 | "../../graphiql-react/dist/info-addon.es.js":
|
2575 |
|
2576 |
|
2577 |
|
2578 |
|
2579 | (function(module, exports, __webpack_require__) {
|
2580 |
|
2581 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_codemirrorEs, _indexEs, _graphql, _react, _reactDom) {\n \"use strict\";\n\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n _codemirrorEs.C.defineOption(\"info\", false, (cm, options, old) => {\n if (old && old !== _codemirrorEs.C.Init) {\n const oldOnMouseOver = cm.state.info.onMouseOver;\n\n _codemirrorEs.C.off(cm.getWrapperElement(), \"mouseover\", oldOnMouseOver);\n\n clearTimeout(cm.state.info.hoverTimeout);\n delete cm.state.info;\n }\n\n if (options) {\n const state = cm.state.info = createState(options);\n state.onMouseOver = onMouseOver.bind(null, cm);\n\n _codemirrorEs.C.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n }\n });\n\n function createState(options) {\n return {\n options: options instanceof Function ? {\n render: options\n } : options === true ? {} : options\n };\n }\n\n __name(createState, \"createState\");\n\n function getHoverTime(cm) {\n const options = cm.state.info.options;\n return (options === null || options === void 0 ? void 0 : options.hoverTime) || 500;\n }\n\n __name(getHoverTime, \"getHoverTime\");\n\n function onMouseOver(cm, e) {\n const state = cm.state.info;\n const target = e.target || e.srcElement;\n\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n if (target.nodeName !== \"SPAN\" || state.hoverTimeout !== void 0) {\n return;\n }\n\n const box = target.getBoundingClientRect();\n\n const onMouseMove = /* @__PURE__ */__name(function () {\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n }, \"onMouseMove\");\n\n const onMouseOut = /* @__PURE__ */__name(function () {\n _codemirrorEs.C.off(document, \"mousemove\", onMouseMove);\n\n _codemirrorEs.C.off(cm.getWrapperElement(), \"mouseout\", onMouseOut);\n\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = void 0;\n }, \"onMouseOut\");\n\n const onHover = /* @__PURE__ */__name(function () {\n _codemirrorEs.C.off(document, \"mousemove\", onMouseMove);\n\n _codemirrorEs.C.off(cm.getWrapperElement(), \"mouseout\", onMouseOut);\n\n state.hoverTimeout = void 0;\n onMouseHover(cm, box);\n }, \"onHover\");\n\n const hoverTime = getHoverTime(cm);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n\n _codemirrorEs.C.on(document, \"mousemove\", onMouseMove);\n\n _codemirrorEs.C.on(cm.getWrapperElement(), \"mouseout\", onMouseOut);\n }\n\n __name(onMouseOver, \"onMouseOver\");\n\n function onMouseHover(cm, box) {\n const pos = cm.coordsChar({\n left: (box.left + box.right) / 2,\n top: (box.top + box.bottom) / 2\n });\n const state = cm.state.info;\n const options = state.options;\n const render = options.render || cm.getHelper(pos, \"info\");\n\n if (render) {\n const token = cm.getTokenAt(pos, true);\n\n if (token) {\n const info = render(token, options, cm, pos);\n\n if (info) {\n showPopup(cm, box, info);\n }\n }\n }\n }\n\n __name(onMouseHover, \"onMouseHover\");\n\n function showPopup(cm, box, info) {\n const popup = document.createElement(\"div\");\n popup.className = \"CodeMirror-info\";\n popup.appendChild(info);\n document.body.appendChild(popup);\n const popupBox = popup.getBoundingClientRect();\n const popupStyle = window.getComputedStyle(popup);\n const popupWidth = popupBox.right - popupBox.left + parseFloat(popupStyle.marginLeft) + parseFloat(popupStyle.marginRight);\n const popupHeight = popupBox.bottom - popupBox.top + parseFloat(popupStyle.marginTop) + parseFloat(popupStyle.marginBottom);\n let topPos = box.bottom;\n\n if (popupHeight > window.innerHeight - box.bottom - 15 && box.top > window.innerHeight - box.bottom) {\n topPos = box.top - popupHeight;\n }\n\n if (topPos < 0) {\n topPos = box.bottom;\n }\n\n let leftPos = Math.max(0, window.innerWidth - popupWidth - 15);\n\n if (leftPos > box.left) {\n leftPos = box.left;\n }\n\n popup.style.opacity = \"1\";\n popup.style.top = topPos + \"px\";\n popup.style.left = leftPos + \"px\";\n let popupTimeout;\n\n const onMouseOverPopup = /* @__PURE__ */__name(function () {\n clearTimeout(popupTimeout);\n }, \"onMouseOverPopup\");\n\n const onMouseOut = /* @__PURE__ */__name(function () {\n clearTimeout(popupTimeout);\n popupTimeout = setTimeout(hidePopup, 200);\n }, \"onMouseOut\");\n\n const hidePopup = /* @__PURE__ */__name(function () {\n _codemirrorEs.C.off(popup, \"mouseover\", onMouseOverPopup);\n\n _codemirrorEs.C.off(popup, \"mouseout\", onMouseOut);\n\n _codemirrorEs.C.off(cm.getWrapperElement(), \"mouseout\", onMouseOut);\n\n if (popup.style.opacity) {\n popup.style.opacity = \"0\";\n setTimeout(() => {\n if (popup.parentNode) {\n popup.parentNode.removeChild(popup);\n }\n }, 600);\n } else if (popup.parentNode) {\n popup.parentNode.removeChild(popup);\n }\n }, \"hidePopup\");\n\n _codemirrorEs.C.on(popup, \"mouseover\", onMouseOverPopup);\n\n _codemirrorEs.C.on(popup, \"mouseout\", onMouseOut);\n\n _codemirrorEs.C.on(cm.getWrapperElement(), \"mouseout\", onMouseOut);\n }\n\n __name(showPopup, \"showPopup\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9pbmZvLWFkZG9uLmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9pbmZvLWFkZG9uLmVzLmpzPzlkMWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IEMgYXMgQ29kZU1pcnJvciB9IGZyb20gXCIuL2NvZGVtaXJyb3IuZXMuanNcIjtcbmltcG9ydCBcIi4vaW5kZXguZXMuanNcIjtcbmltcG9ydCBcImdyYXBocWxcIjtcbmltcG9ydCBcInJlYWN0XCI7XG5pbXBvcnQgXCJyZWFjdC1kb21cIjtcbkNvZGVNaXJyb3IuZGVmaW5lT3B0aW9uKFwiaW5mb1wiLCBmYWxzZSwgKGNtLCBvcHRpb25zLCBvbGQpID0+IHtcbiAgaWYgKG9sZCAmJiBvbGQgIT09IENvZGVNaXJyb3IuSW5pdCkge1xuICAgIGNvbnN0IG9sZE9uTW91c2VPdmVyID0gY20uc3RhdGUuaW5mby5vbk1vdXNlT3ZlcjtcbiAgICBDb2RlTWlycm9yLm9mZihjbS5nZXRXcmFwcGVyRWxlbWVudCgpLCBcIm1vdXNlb3ZlclwiLCBvbGRPbk1vdXNlT3Zlcik7XG4gICAgY2xlYXJUaW1lb3V0KGNtLnN0YXRlLmluZm8uaG92ZXJUaW1lb3V0KTtcbiAgICBkZWxldGUgY20uc3RhdGUuaW5mbztcbiAgfVxuICBpZiAob3B0aW9ucykge1xuICAgIGNvbnN0IHN0YXRlID0gY20uc3RhdGUuaW5mbyA9IGNyZWF0ZVN0YXRlKG9wdGlvbnMpO1xuICAgIHN0YXRlLm9uTW91c2VPdmVyID0gb25Nb3VzZU92ZXIuYmluZChudWxsLCBjbSk7XG4gICAgQ29kZU1pcnJvci5vbihjbS5nZXRXcmFwcGVyRWxlbWVudCgpLCBcIm1vdXNlb3ZlclwiLCBzdGF0ZS5vbk1vdXNlT3Zlcik7XG4gIH1cbn0pO1xuZnVuY3Rpb24gY3JlYXRlU3RhdGUob3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIG9wdGlvbnM6IG9wdGlvbnMgaW5zdGFuY2VvZiBGdW5jdGlvbiA/IHsgcmVuZGVyOiBvcHRpb25zIH0gOiBvcHRpb25zID09PSB0cnVlID8ge30gOiBvcHRpb25zXG4gIH07XG59XG5fX25hbWUoY3JlYXRlU3RhdGUsIFwiY3JlYXRlU3RhdGVcIik7XG5mdW5jdGlvbiBnZXRIb3ZlclRpbWUoY20pIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGNtLnN0YXRlLmluZm8ub3B0aW9ucztcbiAgcmV0dXJuIChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuaG92ZXJUaW1lKSB8fCA1MDA7XG59XG5fX25hbWUoZ2V0SG92ZXJUaW1lLCBcImdldEhvdmVyVGltZVwiKTtcbmZ1bmN0aW9uIG9uTW91c2VPdmVyKGNtLCBlKSB7XG4gIGNvbnN0IHN0YXRlID0gY20uc3RhdGUuaW5mbztcbiAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50O1xuICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHRhcmdldC5ub2RlTmFtZSAhPT0gXCJTUEFOXCIgfHwgc3RhdGUuaG92ZXJUaW1lb3V0ICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgYm94ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBvbk1vdXNlTW92ZSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oKSB7XG4gICAgY2xlYXJUaW1lb3V0KHN0YXRlLmhvdmVyVGltZW91dCk7XG4gICAgc3RhdGUuaG92ZXJUaW1lb3V0ID0gc2V0VGltZW91dChvbkhvdmVyLCBob3ZlclRpbWUpO1xuICB9LCBcIm9uTW91c2VNb3ZlXCIpO1xuICBjb25zdCBvbk1vdXNlT3V0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbigpIHtcbiAgICBDb2RlTWlycm9yLm9mZihkb2N1bWVudCwgXCJtb3VzZW1vdmVcIiwgb25Nb3VzZU1vdmUpO1xuICAgIENvZGVNaXJyb3Iub2ZmKGNtLmdldFdyYXBwZXJFbGVtZW50KCksIFwibW91c2VvdXRcIiwgb25Nb3VzZU91dCk7XG4gICAgY2xlYXJUaW1lb3V0KHN0YXRlLmhvdmVyVGltZW91dCk7XG4gICAgc3RhdGUuaG92ZXJUaW1lb3V0ID0gdm9pZCAwO1xuICB9LCBcIm9uTW91c2VPdXRcIik7XG4gIGNvbnN0IG9uSG92ZXIgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKCkge1xuICAgIENvZGVNaXJyb3Iub2ZmKGRvY3VtZW50LCBcIm1vdXNlbW92ZVwiLCBvbk1vdXNlTW92ZSk7XG4gICAgQ29kZU1pcnJvci5vZmYoY20uZ2V0V3JhcHBlckVsZW1lbnQoKSwgXCJtb3VzZW91dFwiLCBvbk1vdXNlT3V0KTtcbiAgICBzdGF0ZS5ob3ZlclRpbWVvdXQgPSB2b2lkIDA7XG4gICAgb25Nb3VzZUhvdmVyKGNtLCBib3gpO1xuICB9LCBcIm9uSG92ZXJcIik7XG4gIGNvbnN0IGhvdmVyVGltZSA9IGdldEhvdmVyVGltZShjbSk7XG4gIHN0YXRlLmhvdmVyVGltZW91dCA9IHNldFRpbWVvdXQob25Ib3ZlciwgaG92ZXJUaW1lKTtcbiAgQ29kZU1pcnJvci5vbihkb2N1bWVudCwgXCJtb3VzZW1vdmVcIiwgb25Nb3VzZU1vdmUpO1xuICBDb2RlTWlycm9yLm9uKGNtLmdldFdyYXBwZXJFbGVtZW50KCksIFwibW91c2VvdXRcIiwgb25Nb3VzZU91dCk7XG59XG5fX25hbWUob25Nb3VzZU92ZXIsIFwib25Nb3VzZU92ZXJcIik7XG5mdW5jdGlvbiBvbk1vdXNlSG92ZXIoY20sIGJveCkge1xuICBjb25zdCBwb3MgPSBjbS5jb29yZHNDaGFyKHtcbiAgICBsZWZ0OiAoYm94LmxlZnQgKyBib3gucmlnaHQpIC8gMixcbiAgICB0b3A6IChib3gudG9wICsgYm94LmJvdHRvbSkgLyAyXG4gIH0pO1xuICBjb25zdCBzdGF0ZSA9IGNtLnN0YXRlLmluZm87XG4gIGNvbnN0IG9wdGlvbnMgPSBzdGF0ZS5vcHRpb25zO1xuICBjb25zdCByZW5kZXIgPSBvcHRpb25zLnJlbmRlciB8fCBjbS5nZXRIZWxwZXIocG9zLCBcImluZm9cIik7XG4gIGlmIChyZW5kZXIpIHtcbiAgICBjb25zdCB0b2tlbiA9IGNtLmdldFRva2VuQXQocG9zLCB0cnVlKTtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIGNvbnN0IGluZm8gPSByZW5kZXIodG9rZW4sIG9wdGlvbnMsIGNtLCBwb3MpO1xuICAgICAgaWYgKGluZm8pIHtcbiAgICAgICAgc2hvd1BvcHVwKGNtLCBib3gsIGluZm8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuX19uYW1lKG9uTW91c2VIb3ZlciwgXCJvbk1vdXNlSG92ZXJcIik7XG5mdW5jdGlvbiBzaG93UG9wdXAoY20sIGJveCwgaW5mbykge1xuICBjb25zdCBwb3B1cCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIHBvcHVwLmNsYXNzTmFtZSA9IFwiQ29kZU1pcnJvci1pbmZvXCI7XG4gIHBvcHVwLmFwcGVuZENoaWxkKGluZm8pO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBvcHVwKTtcbiAgY29uc3QgcG9wdXBCb3ggPSBwb3B1cC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgcG9wdXBTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHBvcHVwKTtcbiAgY29uc3QgcG9wdXBXaWR0aCA9IHBvcHVwQm94LnJpZ2h0IC0gcG9wdXBCb3gubGVmdCArIHBhcnNlRmxvYXQocG9wdXBTdHlsZS5tYXJnaW5MZWZ0KSArIHBhcnNlRmxvYXQocG9wdXBTdHlsZS5tYXJnaW5SaWdodCk7XG4gIGNvbnN0IHBvcHVwSGVpZ2h0ID0gcG9wdXBCb3guYm90dG9tIC0gcG9wdXBCb3gudG9wICsgcGFyc2VGbG9hdChwb3B1cFN0eWxlLm1hcmdpblRvcCkgKyBwYXJzZUZsb2F0KHBvcHVwU3R5bGUubWFyZ2luQm90dG9tKTtcbiAgbGV0IHRvcFBvcyA9IGJveC5ib3R0b207XG4gIGlmIChwb3B1cEhlaWdodCA+IHdpbmRvdy5pbm5lckhlaWdodCAtIGJveC5ib3R0b20gLSAxNSAmJiBib3gudG9wID4gd2luZG93LmlubmVySGVpZ2h0IC0gYm94LmJvdHRvbSkge1xuICAgIHRvcFBvcyA9IGJveC50b3AgLSBwb3B1cEhlaWdodDtcbiAgfVxuICBpZiAodG9wUG9zIDwgMCkge1xuICAgIHRvcFBvcyA9IGJveC5ib3R0b207XG4gIH1cbiAgbGV0IGxlZnRQb3MgPSBNYXRoLm1heCgwLCB3aW5kb3cuaW5uZXJXaWR0aCAtIHBvcHVwV2lkdGggLSAxNSk7XG4gIGlmIChsZWZ0UG9zID4gYm94LmxlZnQpIHtcbiAgICBsZWZ0UG9zID0gYm94LmxlZnQ7XG4gIH1cbiAgcG9wdXAuc3R5bGUub3BhY2l0eSA9IFwiMVwiO1xuICBwb3B1cC5zdHlsZS50b3AgPSB0b3BQb3MgKyBcInB4XCI7XG4gIHBvcHVwLnN0eWxlLmxlZnQgPSBsZWZ0UG9zICsgXCJweFwiO1xuICBsZXQgcG9wdXBUaW1lb3V0O1xuICBjb25zdCBvbk1vdXNlT3ZlclBvcHVwID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbigpIHtcbiAgICBjbGVhclRpbWVvdXQocG9wdXBUaW1lb3V0KTtcbiAgfSwgXCJvbk1vdXNlT3ZlclBvcHVwXCIpO1xuICBjb25zdCBvbk1vdXNlT3V0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbigpIHtcbiAgICBjbGVhclRpbWVvdXQocG9wdXBUaW1lb3V0KTtcbiAgICBwb3B1cFRpbWVvdXQgPSBzZXRUaW1lb3V0KGhpZGVQb3B1cCwgMjAwKTtcbiAgfSwgXCJvbk1vdXNlT3V0XCIpO1xuICBjb25zdCBoaWRlUG9wdXAgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKCkge1xuICAgIENvZGVNaXJyb3Iub2ZmKHBvcHVwLCBcIm1vdXNlb3ZlclwiLCBvbk1vdXNlT3ZlclBvcHVwKTtcbiAgICBDb2RlTWlycm9yLm9mZihwb3B1cCwgXCJtb3VzZW91dFwiLCBvbk1vdXNlT3V0KTtcbiAgICBDb2RlTWlycm9yLm9mZihjbS5nZXRXcmFwcGVyRWxlbWVudCgpLCBcIm1vdXNlb3V0XCIsIG9uTW91c2VPdXQpO1xuICAgIGlmIChwb3B1cC5zdHlsZS5vcGFjaXR5KSB7XG4gICAgICBwb3B1cC5zdHlsZS5vcGFjaXR5ID0gXCIwXCI7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHBvcHVwLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICBwb3B1cC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHBvcHVwKTtcbiAgICAgICAgfVxuICAgICAgfSwgNjAwKTtcbiAgICB9IGVsc2UgaWYgKHBvcHVwLnBhcmVudE5vZGUpIHtcbiAgICAgIHBvcHVwLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocG9wdXApO1xuICAgIH1cbiAgfSwgXCJoaWRlUG9wdXBcIik7XG4gIENvZGVNaXJyb3Iub24ocG9wdXAsIFwibW91c2VvdmVyXCIsIG9uTW91c2VPdmVyUG9wdXApO1xuICBDb2RlTWlycm9yLm9uKHBvcHVwLCBcIm1vdXNlb3V0XCIsIG9uTW91c2VPdXQpO1xuICBDb2RlTWlycm9yLm9uKGNtLmdldFdyYXBwZXJFbGVtZW50KCksIFwibW91c2VvdXRcIiwgb25Nb3VzZU91dCk7XG59XG5fX25hbWUoc2hvd1BvcHVwLCBcInNob3dQb3B1cFwiKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/info-addon.es.js\n");
|
2582 |
|
2583 | }),
|
2584 |
|
2585 | "../../graphiql-react/dist/info.es.js":
|
2586 |
|
2587 |
|
2588 |
|
2589 |
|
2590 | (function(module, exports, __webpack_require__) {
|
2591 |
|
2592 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! ./SchemaReference.es.js */ \"../../graphiql-react/dist/SchemaReference.es.js\"), __webpack_require__(/*! ./info-addon.es.js */ \"../../graphiql-react/dist/info-addon.es.js\"), __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\"), __webpack_require__(/*! ./introspection.es.js */ \"../../graphiql-react/dist/introspection.es.js\"), __webpack_require__(/*! ./forEachState.es.js */ \"../../graphiql-react/dist/forEachState.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_graphql, _codemirrorEs, _SchemaReferenceEs, _infoAddonEs, _indexEs, _react, _reactDom, _introspectionEs, _forEachStateEs) {\n \"use strict\";\n\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n _codemirrorEs.C.registerHelper(\"info\", \"graphql\", (token, options) => {\n if (!options.schema || !token.state) {\n return;\n }\n\n const state = token.state;\n const kind = state.kind;\n const step = state.step;\n const typeInfo = (0, _SchemaReferenceEs.g)(options.schema, token.state);\n\n if (kind === \"Field\" && step === 0 && typeInfo.fieldDef || kind === \"AliasedField\" && step === 2 && typeInfo.fieldDef) {\n const into = document.createElement(\"div\");\n renderField(into, typeInfo, options);\n renderDescription(into, options, typeInfo.fieldDef);\n return into;\n } else if (kind === \"Directive\" && step === 1 && typeInfo.directiveDef) {\n const into = document.createElement(\"div\");\n renderDirective(into, typeInfo, options);\n renderDescription(into, options, typeInfo.directiveDef);\n return into;\n } else if (kind === \"Argument\" && step === 0 && typeInfo.argDef) {\n const into = document.createElement(\"div\");\n renderArg(into, typeInfo, options);\n renderDescription(into, options, typeInfo.argDef);\n return into;\n } else if (kind === \"EnumValue\" && typeInfo.enumValue && typeInfo.enumValue.description) {\n const into = document.createElement(\"div\");\n renderEnumValue(into, typeInfo, options);\n renderDescription(into, options, typeInfo.enumValue);\n return into;\n } else if (kind === \"NamedType\" && typeInfo.type && typeInfo.type.description) {\n const into = document.createElement(\"div\");\n renderType(into, typeInfo, options, typeInfo.type);\n renderDescription(into, options, typeInfo.type);\n return into;\n }\n });\n\n function renderField(into, typeInfo, options) {\n renderQualifiedField(into, typeInfo, options);\n renderTypeAnnotation(into, typeInfo, options, typeInfo.type);\n }\n\n __name(renderField, \"renderField\");\n\n function renderQualifiedField(into, typeInfo, options) {\n var _a;\n\n const fieldName = ((_a = typeInfo.fieldDef) === null || _a === void 0 ? void 0 : _a.name) || \"\";\n\n if (fieldName.slice(0, 2) !== \"__\") {\n renderType(into, typeInfo, options, typeInfo.parentType);\n text(into, \".\");\n }\n\n text(into, fieldName, \"field-name\", options, (0, _SchemaReferenceEs.a)(typeInfo));\n }\n\n __name(renderQualifiedField, \"renderQualifiedField\");\n\n function renderDirective(into, typeInfo, options) {\n var _a;\n\n const name = \"@\" + (((_a = typeInfo.directiveDef) === null || _a === void 0 ? void 0 : _a.name) || \"\");\n text(into, name, \"directive-name\", options, (0, _SchemaReferenceEs.b)(typeInfo));\n }\n\n __name(renderDirective, \"renderDirective\");\n\n function renderArg(into, typeInfo, options) {\n var _a;\n\n if (typeInfo.directiveDef) {\n renderDirective(into, typeInfo, options);\n } else if (typeInfo.fieldDef) {\n renderQualifiedField(into, typeInfo, options);\n }\n\n const name = ((_a = typeInfo.argDef) === null || _a === void 0 ? void 0 : _a.name) || \"\";\n text(into, \"(\");\n text(into, name, \"arg-name\", options, (0, _SchemaReferenceEs.c)(typeInfo));\n renderTypeAnnotation(into, typeInfo, options, typeInfo.inputType);\n text(into, \")\");\n }\n\n __name(renderArg, \"renderArg\");\n\n function renderTypeAnnotation(into, typeInfo, options, t) {\n text(into, \": \");\n renderType(into, typeInfo, options, t);\n }\n\n __name(renderTypeAnnotation, \"renderTypeAnnotation\");\n\n function renderEnumValue(into, typeInfo, options) {\n var _a;\n\n const name = ((_a = typeInfo.enumValue) === null || _a === void 0 ? void 0 : _a.name) || \"\";\n renderType(into, typeInfo, options, typeInfo.inputType);\n text(into, \".\");\n text(into, name, \"enum-value\", options, (0, _SchemaReferenceEs.d)(typeInfo));\n }\n\n __name(renderEnumValue, \"renderEnumValue\");\n\n function renderType(into, typeInfo, options, t) {\n if (t instanceof _graphql.GraphQLNonNull) {\n renderType(into, typeInfo, options, t.ofType);\n text(into, \"!\");\n } else if (t instanceof _graphql.GraphQLList) {\n text(into, \"[\");\n renderType(into, typeInfo, options, t.ofType);\n text(into, \"]\");\n } else {\n text(into, (t === null || t === void 0 ? void 0 : t.name) || \"\", \"type-name\", options, (0, _SchemaReferenceEs.e)(typeInfo, t));\n }\n }\n\n __name(renderType, \"renderType\");\n\n function renderDescription(into, options, def) {\n const description = def.description;\n\n if (description) {\n const descriptionDiv = document.createElement(\"div\");\n descriptionDiv.className = \"info-description\";\n\n if (options.renderDescription) {\n descriptionDiv.innerHTML = options.renderDescription(description);\n } else {\n descriptionDiv.appendChild(document.createTextNode(description));\n }\n\n into.appendChild(descriptionDiv);\n }\n\n renderDeprecation(into, options, def);\n }\n\n __name(renderDescription, \"renderDescription\");\n\n function renderDeprecation(into, options, def) {\n const reason = def.deprecationReason;\n\n if (reason) {\n const deprecationDiv = document.createElement(\"div\");\n deprecationDiv.className = \"info-deprecation\";\n\n if (options.renderDescription) {\n deprecationDiv.innerHTML = options.renderDescription(reason);\n } else {\n deprecationDiv.appendChild(document.createTextNode(reason));\n }\n\n const label = document.createElement(\"span\");\n label.className = \"info-deprecation-label\";\n label.appendChild(document.createTextNode(\"Deprecated: \"));\n deprecationDiv.insertBefore(label, deprecationDiv.firstChild);\n into.appendChild(deprecationDiv);\n }\n }\n\n __name(renderDeprecation, \"renderDeprecation\");\n\n function text(into, content) {\n let className = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\";\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n onClick: null\n };\n let ref = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n\n if (className) {\n const onClick = options.onClick;\n let node;\n\n if (onClick) {\n node = document.createElement(\"a\");\n node.href = \"javascript:void 0\";\n node.addEventListener(\"click\", e => {\n onClick(ref, e);\n });\n } else {\n node = document.createElement(\"span\");\n }\n\n node.className = className;\n node.appendChild(document.createTextNode(content));\n into.appendChild(node);\n } else {\n into.appendChild(document.createTextNode(content));\n }\n }\n\n __name(text, \"text\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9pbmZvLmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9pbmZvLmVzLmpzPzE4YjciXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IEdyYXBoUUxOb25OdWxsLCBHcmFwaFFMTGlzdCB9IGZyb20gXCJncmFwaHFsXCI7XG5pbXBvcnQgeyBDIGFzIENvZGVNaXJyb3IgfSBmcm9tIFwiLi9jb2RlbWlycm9yLmVzLmpzXCI7XG5pbXBvcnQgeyBnIGFzIGdldFR5cGVJbmZvLCBhIGFzIGdldEZpZWxkUmVmZXJlbmNlLCBiIGFzIGdldERpcmVjdGl2ZVJlZmVyZW5jZSwgYyBhcyBnZXRBcmd1bWVudFJlZmVyZW5jZSwgZCBhcyBnZXRFbnVtVmFsdWVSZWZlcmVuY2UsIGUgYXMgZ2V0VHlwZVJlZmVyZW5jZSB9IGZyb20gXCIuL1NjaGVtYVJlZmVyZW5jZS5lcy5qc1wiO1xuaW1wb3J0IFwiLi9pbmZvLWFkZG9uLmVzLmpzXCI7XG5pbXBvcnQgXCIuL2luZGV4LmVzLmpzXCI7XG5pbXBvcnQgXCJyZWFjdFwiO1xuaW1wb3J0IFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgXCIuL2ludHJvc3BlY3Rpb24uZXMuanNcIjtcbmltcG9ydCBcIi4vZm9yRWFjaFN0YXRlLmVzLmpzXCI7XG5Db2RlTWlycm9yLnJlZ2lzdGVySGVscGVyKFwiaW5mb1wiLCBcImdyYXBocWxcIiwgKHRva2VuLCBvcHRpb25zKSA9PiB7XG4gIGlmICghb3B0aW9ucy5zY2hlbWEgfHwgIXRva2VuLnN0YXRlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHN0YXRlID0gdG9rZW4uc3RhdGU7XG4gIGNvbnN0IGtpbmQgPSBzdGF0ZS5raW5kO1xuICBjb25zdCBzdGVwID0gc3RhdGUuc3RlcDtcbiAgY29uc3QgdHlwZUluZm8gPSBnZXRUeXBlSW5mbyhvcHRpb25zLnNjaGVtYSwgdG9rZW4uc3RhdGUpO1xuICBpZiAoa2luZCA9PT0gXCJGaWVsZFwiICYmIHN0ZXAgPT09IDAgJiYgdHlwZUluZm8uZmllbGREZWYgfHwga2luZCA9PT0gXCJBbGlhc2VkRmllbGRcIiAmJiBzdGVwID09PSAyICYmIHR5cGVJbmZvLmZpZWxkRGVmKSB7XG4gICAgY29uc3QgaW50byA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgcmVuZGVyRmllbGQoaW50bywgdHlwZUluZm8sIG9wdGlvbnMpO1xuICAgIHJlbmRlckRlc2NyaXB0aW9uKGludG8sIG9wdGlvbnMsIHR5cGVJbmZvLmZpZWxkRGVmKTtcbiAgICByZXR1cm4gaW50bztcbiAgfSBlbHNlIGlmIChraW5kID09PSBcIkRpcmVjdGl2ZVwiICYmIHN0ZXAgPT09IDEgJiYgdHlwZUluZm8uZGlyZWN0aXZlRGVmKSB7XG4gICAgY29uc3QgaW50byA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgcmVuZGVyRGlyZWN0aXZlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKTtcbiAgICByZW5kZXJEZXNjcmlwdGlvbihpbnRvLCBvcHRpb25zLCB0eXBlSW5mby5kaXJlY3RpdmVEZWYpO1xuICAgIHJldHVybiBpbnRvO1xuICB9IGVsc2UgaWYgKGtpbmQgPT09IFwiQXJndW1lbnRcIiAmJiBzdGVwID09PSAwICYmIHR5cGVJbmZvLmFyZ0RlZikge1xuICAgIGNvbnN0IGludG8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHJlbmRlckFyZyhpbnRvLCB0eXBlSW5mbywgb3B0aW9ucyk7XG4gICAgcmVuZGVyRGVzY3JpcHRpb24oaW50bywgb3B0aW9ucywgdHlwZUluZm8uYXJnRGVmKTtcbiAgICByZXR1cm4gaW50bztcbiAgfSBlbHNlIGlmIChraW5kID09PSBcIkVudW1WYWx1ZVwiICYmIHR5cGVJbmZvLmVudW1WYWx1ZSAmJiB0eXBlSW5mby5lbnVtVmFsdWUuZGVzY3JpcHRpb24pIHtcbiAgICBjb25zdCBpbnRvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICByZW5kZXJFbnVtVmFsdWUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMpO1xuICAgIHJlbmRlckRlc2NyaXB0aW9uKGludG8sIG9wdGlvbnMsIHR5cGVJbmZvLmVudW1WYWx1ZSk7XG4gICAgcmV0dXJuIGludG87XG4gIH0gZWxzZSBpZiAoa2luZCA9PT0gXCJOYW1lZFR5cGVcIiAmJiB0eXBlSW5mby50eXBlICYmIHR5cGVJbmZvLnR5cGUuZGVzY3JpcHRpb24pIHtcbiAgICBjb25zdCBpbnRvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICByZW5kZXJUeXBlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zLCB0eXBlSW5mby50eXBlKTtcbiAgICByZW5kZXJEZXNjcmlwdGlvbihpbnRvLCBvcHRpb25zLCB0eXBlSW5mby50eXBlKTtcbiAgICByZXR1cm4gaW50bztcbiAgfVxufSk7XG5mdW5jdGlvbiByZW5kZXJGaWVsZChpbnRvLCB0eXBlSW5mbywgb3B0aW9ucykge1xuICByZW5kZXJRdWFsaWZpZWRGaWVsZChpbnRvLCB0eXBlSW5mbywgb3B0aW9ucyk7XG4gIHJlbmRlclR5cGVBbm5vdGF0aW9uKGludG8sIHR5cGVJbmZvLCBvcHRpb25zLCB0eXBlSW5mby50eXBlKTtcbn1cbl9fbmFtZShyZW5kZXJGaWVsZCwgXCJyZW5kZXJGaWVsZFwiKTtcbmZ1bmN0aW9uIHJlbmRlclF1YWxpZmllZEZpZWxkKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgZmllbGROYW1lID0gKChfYSA9IHR5cGVJbmZvLmZpZWxkRGVmKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmFtZSkgfHwgXCJcIjtcbiAgaWYgKGZpZWxkTmFtZS5zbGljZSgwLCAyKSAhPT0gXCJfX1wiKSB7XG4gICAgcmVuZGVyVHlwZShpbnRvLCB0eXBlSW5mbywgb3B0aW9ucywgdHlwZUluZm8ucGFyZW50VHlwZSk7XG4gICAgdGV4dChpbnRvLCBcIi5cIik7XG4gIH1cbiAgdGV4dChpbnRvLCBmaWVsZE5hbWUsIFwiZmllbGQtbmFtZVwiLCBvcHRpb25zLCBnZXRGaWVsZFJlZmVyZW5jZSh0eXBlSW5mbykpO1xufVxuX19uYW1lKHJlbmRlclF1YWxpZmllZEZpZWxkLCBcInJlbmRlclF1YWxpZmllZEZpZWxkXCIpO1xuZnVuY3Rpb24gcmVuZGVyRGlyZWN0aXZlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgbmFtZSA9IFwiQFwiICsgKCgoX2EgPSB0eXBlSW5mby5kaXJlY3RpdmVEZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5uYW1lKSB8fCBcIlwiKTtcbiAgdGV4dChpbnRvLCBuYW1lLCBcImRpcmVjdGl2ZS1uYW1lXCIsIG9wdGlvbnMsIGdldERpcmVjdGl2ZVJlZmVyZW5jZSh0eXBlSW5mbykpO1xufVxuX19uYW1lKHJlbmRlckRpcmVjdGl2ZSwgXCJyZW5kZXJEaXJlY3RpdmVcIik7XG5mdW5jdGlvbiByZW5kZXJBcmcoaW50bywgdHlwZUluZm8sIG9wdGlvbnMpIHtcbiAgdmFyIF9hO1xuICBpZiAodHlwZUluZm8uZGlyZWN0aXZlRGVmKSB7XG4gICAgcmVuZGVyRGlyZWN0aXZlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmICh0eXBlSW5mby5maWVsZERlZikge1xuICAgIHJlbmRlclF1YWxpZmllZEZpZWxkKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKTtcbiAgfVxuICBjb25zdCBuYW1lID0gKChfYSA9IHR5cGVJbmZvLmFyZ0RlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hbWUpIHx8IFwiXCI7XG4gIHRleHQoaW50bywgXCIoXCIpO1xuICB0ZXh0KGludG8sIG5hbWUsIFwiYXJnLW5hbWVcIiwgb3B0aW9ucywgZ2V0QXJndW1lbnRSZWZlcmVuY2UodHlwZUluZm8pKTtcbiAgcmVuZGVyVHlwZUFubm90YXRpb24oaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHR5cGVJbmZvLmlucHV0VHlwZSk7XG4gIHRleHQoaW50bywgXCIpXCIpO1xufVxuX19uYW1lKHJlbmRlckFyZywgXCJyZW5kZXJBcmdcIik7XG5mdW5jdGlvbiByZW5kZXJUeXBlQW5ub3RhdGlvbihpbnRvLCB0eXBlSW5mbywgb3B0aW9ucywgdCkge1xuICB0ZXh0KGludG8sIFwiOiBcIik7XG4gIHJlbmRlclR5cGUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHQpO1xufVxuX19uYW1lKHJlbmRlclR5cGVBbm5vdGF0aW9uLCBcInJlbmRlclR5cGVBbm5vdGF0aW9uXCIpO1xuZnVuY3Rpb24gcmVuZGVyRW51bVZhbHVlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgbmFtZSA9ICgoX2EgPSB0eXBlSW5mby5lbnVtVmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5uYW1lKSB8fCBcIlwiO1xuICByZW5kZXJUeXBlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zLCB0eXBlSW5mby5pbnB1dFR5cGUpO1xuICB0ZXh0KGludG8sIFwiLlwiKTtcbiAgdGV4dChpbnRvLCBuYW1lLCBcImVudW0tdmFsdWVcIiwgb3B0aW9ucywgZ2V0RW51bVZhbHVlUmVmZXJlbmNlKHR5cGVJbmZvKSk7XG59XG5fX25hbWUocmVuZGVyRW51bVZhbHVlLCBcInJlbmRlckVudW1WYWx1ZVwiKTtcbmZ1bmN0aW9uIHJlbmRlclR5cGUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHQpIHtcbiAgaWYgKHQgaW5zdGFuY2VvZiBHcmFwaFFMTm9uTnVsbCkge1xuICAgIHJlbmRlclR5cGUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHQub2ZUeXBlKTtcbiAgICB0ZXh0KGludG8sIFwiIVwiKTtcbiAgfSBlbHNlIGlmICh0IGluc3RhbmNlb2YgR3JhcGhRTExpc3QpIHtcbiAgICB0ZXh0KGludG8sIFwiW1wiKTtcbiAgICByZW5kZXJUeXBlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zLCB0Lm9mVHlwZSk7XG4gICAgdGV4dChpbnRvLCBcIl1cIik7XG4gIH0gZWxzZSB7XG4gICAgdGV4dChpbnRvLCAodCA9PT0gbnVsbCB8fCB0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0Lm5hbWUpIHx8IFwiXCIsIFwidHlwZS1uYW1lXCIsIG9wdGlvbnMsIGdldFR5cGVSZWZlcmVuY2UodHlwZUluZm8sIHQpKTtcbiAgfVxufVxuX19uYW1lKHJlbmRlclR5cGUsIFwicmVuZGVyVHlwZVwiKTtcbmZ1bmN0aW9uIHJlbmRlckRlc2NyaXB0aW9uKGludG8sIG9wdGlvbnMsIGRlZikge1xuICBjb25zdCBkZXNjcmlwdGlvbiA9IGRlZi5kZXNjcmlwdGlvbjtcbiAgaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgY29uc3QgZGVzY3JpcHRpb25EaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIGRlc2NyaXB0aW9uRGl2LmNsYXNzTmFtZSA9IFwiaW5mby1kZXNjcmlwdGlvblwiO1xuICAgIGlmIChvcHRpb25zLnJlbmRlckRlc2NyaXB0aW9uKSB7XG4gICAgICBkZXNjcmlwdGlvbkRpdi5pbm5lckhUTUwgPSBvcHRpb25zLnJlbmRlckRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVzY3JpcHRpb25EaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGVzY3JpcHRpb24pKTtcbiAgICB9XG4gICAgaW50by5hcHBlbmRDaGlsZChkZXNjcmlwdGlvbkRpdik7XG4gIH1cbiAgcmVuZGVyRGVwcmVjYXRpb24oaW50bywgb3B0aW9ucywgZGVmKTtcbn1cbl9fbmFtZShyZW5kZXJEZXNjcmlwdGlvbiwgXCJyZW5kZXJEZXNjcmlwdGlvblwiKTtcbmZ1bmN0aW9uIHJlbmRlckRlcHJlY2F0aW9uKGludG8sIG9wdGlvbnMsIGRlZikge1xuICBjb25zdCByZWFzb24gPSBkZWYuZGVwcmVjYXRpb25SZWFzb247XG4gIGlmIChyZWFzb24pIHtcbiAgICBjb25zdCBkZXByZWNhdGlvbkRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgZGVwcmVjYXRpb25EaXYuY2xhc3NOYW1lID0gXCJpbmZvLWRlcHJlY2F0aW9uXCI7XG4gICAgaWYgKG9wdGlvbnMucmVuZGVyRGVzY3JpcHRpb24pIHtcbiAgICAgIGRlcHJlY2F0aW9uRGl2LmlubmVySFRNTCA9IG9wdGlvbnMucmVuZGVyRGVzY3JpcHRpb24ocmVhc29uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVwcmVjYXRpb25EaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocmVhc29uKSk7XG4gICAgfVxuICAgIGNvbnN0IGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgbGFiZWwuY2xhc3NOYW1lID0gXCJpbmZvLWRlcHJlY2F0aW9uLWxhYmVsXCI7XG4gICAgbGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJEZXByZWNhdGVkOiBcIikpO1xuICAgIGRlcHJlY2F0aW9uRGl2Lmluc2VydEJlZm9yZShsYWJlbCwgZGVwcmVjYXRpb25EaXYuZmlyc3RDaGlsZCk7XG4gICAgaW50by5hcHBlbmRDaGlsZChkZXByZWNhdGlvbkRpdik7XG4gIH1cbn1cbl9fbmFtZShyZW5kZXJEZXByZWNhdGlvbiwgXCJyZW5kZXJEZXByZWNhdGlvblwiKTtcbmZ1bmN0aW9uIHRleHQoaW50bywgY29udGVudCwgY2xhc3NOYW1lID0gXCJcIiwgb3B0aW9ucyA9IHsgb25DbGljazogbnVsbCB9LCByZWYgPSBudWxsKSB7XG4gIGlmIChjbGFzc05hbWUpIHtcbiAgICBjb25zdCBvbkNsaWNrID0gb3B0aW9ucy5vbkNsaWNrO1xuICAgIGxldCBub2RlO1xuICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICBub2RlLmhyZWYgPSBcImphdmFzY3JpcHQ6dm9pZCAwXCI7XG4gICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZSkgPT4ge1xuICAgICAgICBvbkNsaWNrKHJlZiwgZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIH1cbiAgICBub2RlLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNvbnRlbnQpKTtcbiAgICBpbnRvLmFwcGVuZENoaWxkKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIGludG8uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29udGVudCkpO1xuICB9XG59XG5fX25hbWUodGV4dCwgXCJ0ZXh0XCIpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/info.es.js\n");
|
2593 |
|
2594 | }),
|
2595 |
|
2596 | "../../graphiql-react/dist/introspection.es.js":
|
2597 |
|
2598 |
|
2599 |
|
2600 |
|
2601 | (function(module, exports, __webpack_require__) {
|
2602 |
|
2603 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.a = _exports.T = _exports.S = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n const MAX_ARRAY_LENGTH = 10;\n const MAX_RECURSIVE_DEPTH = 2;\n\n function inspect(value) {\n return formatValue(value, []);\n }\n\n __name(inspect, \"inspect\");\n\n function formatValue(value, seenValues) {\n switch (typeof value) {\n case \"string\":\n return JSON.stringify(value);\n\n case \"function\":\n return value.name ? `[function ${value.name}]` : \"[function]\";\n\n case \"object\":\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n }\n\n __name(formatValue, \"formatValue\");\n\n function formatObjectValue(value, previouslySeenValues) {\n if (value === null) {\n return \"null\";\n }\n\n if (previouslySeenValues.includes(value)) {\n return \"[Circular]\";\n }\n\n const seenValues = [...previouslySeenValues, value];\n\n if (isJSONable(value)) {\n const jsonValue = value.toJSON();\n\n if (jsonValue !== value) {\n return typeof jsonValue === \"string\" ? jsonValue : formatValue(jsonValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n }\n\n __name(formatObjectValue, \"formatObjectValue\");\n\n function isJSONable(value) {\n return typeof value.toJSON === \"function\";\n }\n\n __name(isJSONable, \"isJSONable\");\n\n function formatObject(object, seenValues) {\n const entries = Object.entries(object);\n\n if (entries.length === 0) {\n return \"{}\";\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return \"[\" + getObjectTag(object) + \"]\";\n }\n\n const properties = entries.map(_ref2 => {\n let [key, value] = _ref2;\n return key + \": \" + formatValue(value, seenValues);\n });\n return \"{ \" + properties.join(\", \") + \" }\";\n }\n\n __name(formatObject, \"formatObject\");\n\n function formatArray(array, seenValues) {\n if (array.length === 0) {\n return \"[]\";\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return \"[Array]\";\n }\n\n const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n const remaining = array.length - len;\n const items = [];\n\n for (let i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push(\"... 1 more item\");\n } else if (remaining > 1) {\n items.push(`... ${remaining} more items`);\n }\n\n return \"[\" + items.join(\", \") + \"]\";\n }\n\n __name(formatArray, \"formatArray\");\n\n function getObjectTag(object) {\n const tag = Object.prototype.toString.call(object).replace(/^\\[object /, \"\").replace(/]$/, \"\");\n\n if (tag === \"Object\" && typeof object.constructor === \"function\") {\n const name = object.constructor.name;\n\n if (typeof name === \"string\" && name !== \"\") {\n return name;\n }\n }\n\n return tag;\n }\n\n __name(getObjectTag, \"getObjectTag\");\n\n function invariant(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message != null ? message : \"Unexpected invariant triggered.\");\n }\n }\n\n __name(invariant, \"invariant\");\n\n let DirectiveLocation;\n\n (function (DirectiveLocation2) {\n DirectiveLocation2[\"QUERY\"] = \"QUERY\";\n DirectiveLocation2[\"MUTATION\"] = \"MUTATION\";\n DirectiveLocation2[\"SUBSCRIPTION\"] = \"SUBSCRIPTION\";\n DirectiveLocation2[\"FIELD\"] = \"FIELD\";\n DirectiveLocation2[\"FRAGMENT_DEFINITION\"] = \"FRAGMENT_DEFINITION\";\n DirectiveLocation2[\"FRAGMENT_SPREAD\"] = \"FRAGMENT_SPREAD\";\n DirectiveLocation2[\"INLINE_FRAGMENT\"] = \"INLINE_FRAGMENT\";\n DirectiveLocation2[\"VARIABLE_DEFINITION\"] = \"VARIABLE_DEFINITION\";\n DirectiveLocation2[\"SCHEMA\"] = \"SCHEMA\";\n DirectiveLocation2[\"SCALAR\"] = \"SCALAR\";\n DirectiveLocation2[\"OBJECT\"] = \"OBJECT\";\n DirectiveLocation2[\"FIELD_DEFINITION\"] = \"FIELD_DEFINITION\";\n DirectiveLocation2[\"ARGUMENT_DEFINITION\"] = \"ARGUMENT_DEFINITION\";\n DirectiveLocation2[\"INTERFACE\"] = \"INTERFACE\";\n DirectiveLocation2[\"UNION\"] = \"UNION\";\n DirectiveLocation2[\"ENUM\"] = \"ENUM\";\n DirectiveLocation2[\"ENUM_VALUE\"] = \"ENUM_VALUE\";\n DirectiveLocation2[\"INPUT_OBJECT\"] = \"INPUT_OBJECT\";\n DirectiveLocation2[\"INPUT_FIELD_DEFINITION\"] = \"INPUT_FIELD_DEFINITION\";\n })(DirectiveLocation || (DirectiveLocation = {}));\n\n function isWhiteSpace(code) {\n return code === 9 || code === 32;\n }\n\n __name(isWhiteSpace, \"isWhiteSpace\");\n\n function isDigit$1(code) {\n return code >= 48 && code <= 57;\n }\n\n __name(isDigit$1, \"isDigit$1\");\n\n function isLetter(code) {\n return code >= 97 && code <= 122 || code >= 65 && code <= 90;\n }\n\n __name(isLetter, \"isLetter\");\n\n function isNameStart(code) {\n return isLetter(code) || code === 95;\n }\n\n __name(isNameStart, \"isNameStart\");\n\n function isNameContinue(code) {\n return isLetter(code) || isDigit$1(code) || code === 95;\n }\n\n __name(isNameContinue, \"isNameContinue\");\n\n function printBlockString(value, options) {\n const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"');\n const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n const isSingleLine = lines.length === 1;\n const forceLeadingNewLine = lines.length > 1 && lines.slice(1).every(line => line.length === 0 || isWhiteSpace(line.charCodeAt(0)));\n const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"');\n const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n const hasTrailingSlash = value.endsWith(\"\\\\\");\n const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n const printAsMultipleLines = !(options !== null && options !== void 0 && options.minimize) && (!isSingleLine || value.length > 70 || forceTrailingNewline || forceLeadingNewLine || hasTrailingTripleQuotes);\n let result = \"\";\n const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0));\n\n if (printAsMultipleLines && !skipLeadingNewLine || forceLeadingNewLine) {\n result += \"\\n\";\n }\n\n result += escapedValue;\n\n if (printAsMultipleLines || forceTrailingNewline) {\n result += \"\\n\";\n }\n\n return '\"\"\"' + result + '\"\"\"';\n }\n\n __name(printBlockString, \"printBlockString\");\n\n function printString(str) {\n return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n }\n\n __name(printString, \"printString\");\n\n const escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\n function escapedReplacer(str) {\n return escapeSequences[str.charCodeAt(0)];\n }\n\n __name(escapedReplacer, \"escapedReplacer\");\n\n const escapeSequences = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", \"\\\\b\", \"\\\\t\", \"\\\\n\", \"\\\\u000B\", \"\\\\f\", \"\\\\r\", \"\\\\u000E\", \"\\\\u000F\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001A\", \"\\\\u001B\", \"\\\\u001C\", \"\\\\u001D\", \"\\\\u001E\", \"\\\\u001F\", \"\", \"\", '\\\\\"', \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\\\\\\\\\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\\\\u007F\", \"\\\\u0080\", \"\\\\u0081\", \"\\\\u0082\", \"\\\\u0083\", \"\\\\u0084\", \"\\\\u0085\", \"\\\\u0086\", \"\\\\u0087\", \"\\\\u0088\", \"\\\\u0089\", \"\\\\u008A\", \"\\\\u008B\", \"\\\\u008C\", \"\\\\u008D\", \"\\\\u008E\", \"\\\\u008F\", \"\\\\u0090\", \"\\\\u0091\", \"\\\\u0092\", \"\\\\u0093\", \"\\\\u0094\", \"\\\\u0095\", \"\\\\u0096\", \"\\\\u0097\", \"\\\\u0098\", \"\\\\u0099\", \"\\\\u009A\", \"\\\\u009B\", \"\\\\u009C\", \"\\\\u009D\", \"\\\\u009E\", \"\\\\u009F\"];\n\n function devAssert(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n }\n\n __name(devAssert, \"devAssert\");\n\n const QueryDocumentKeys = {\n Name: [],\n Document: [\"definitions\"],\n OperationDefinition: [\"name\", \"variableDefinitions\", \"directives\", \"selectionSet\"],\n VariableDefinition: [\"variable\", \"type\", \"defaultValue\", \"directives\"],\n Variable: [\"name\"],\n SelectionSet: [\"selections\"],\n Field: [\"alias\", \"name\", \"arguments\", \"directives\", \"selectionSet\"],\n Argument: [\"name\", \"value\"],\n FragmentSpread: [\"name\", \"directives\"],\n InlineFragment: [\"typeCondition\", \"directives\", \"selectionSet\"],\n FragmentDefinition: [\"name\", \"variableDefinitions\", \"typeCondition\", \"directives\", \"selectionSet\"],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: [\"values\"],\n ObjectValue: [\"fields\"],\n ObjectField: [\"name\", \"value\"],\n Directive: [\"name\", \"arguments\"],\n NamedType: [\"name\"],\n ListType: [\"type\"],\n NonNullType: [\"type\"],\n SchemaDefinition: [\"description\", \"directives\", \"operationTypes\"],\n OperationTypeDefinition: [\"type\"],\n ScalarTypeDefinition: [\"description\", \"name\", \"directives\"],\n ObjectTypeDefinition: [\"description\", \"name\", \"interfaces\", \"directives\", \"fields\"],\n FieldDefinition: [\"description\", \"name\", \"arguments\", \"type\", \"directives\"],\n InputValueDefinition: [\"description\", \"name\", \"type\", \"defaultValue\", \"directives\"],\n InterfaceTypeDefinition: [\"description\", \"name\", \"interfaces\", \"directives\", \"fields\"],\n UnionTypeDefinition: [\"description\", \"name\", \"directives\", \"types\"],\n EnumTypeDefinition: [\"description\", \"name\", \"directives\", \"values\"],\n EnumValueDefinition: [\"description\", \"name\", \"directives\"],\n InputObjectTypeDefinition: [\"description\", \"name\", \"directives\", \"fields\"],\n DirectiveDefinition: [\"description\", \"name\", \"arguments\", \"locations\"],\n SchemaExtension: [\"directives\", \"operationTypes\"],\n ScalarTypeExtension: [\"name\", \"directives\"],\n ObjectTypeExtension: [\"name\", \"interfaces\", \"directives\", \"fields\"],\n InterfaceTypeExtension: [\"name\", \"interfaces\", \"directives\", \"fields\"],\n UnionTypeExtension: [\"name\", \"directives\", \"types\"],\n EnumTypeExtension: [\"name\", \"directives\", \"values\"],\n InputObjectTypeExtension: [\"name\", \"directives\", \"fields\"]\n };\n const kindValues = new Set(Object.keys(QueryDocumentKeys));\n\n function isNode(maybeNode) {\n const maybeKind = maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n return typeof maybeKind === \"string\" && kindValues.has(maybeKind);\n }\n\n __name(isNode, \"isNode\");\n\n let OperationTypeNode;\n\n (function (OperationTypeNode2) {\n OperationTypeNode2[\"QUERY\"] = \"query\";\n OperationTypeNode2[\"MUTATION\"] = \"mutation\";\n OperationTypeNode2[\"SUBSCRIPTION\"] = \"subscription\";\n })(OperationTypeNode || (OperationTypeNode = {}));\n\n let Kind;\n\n (function (Kind2) {\n Kind2[\"NAME\"] = \"Name\";\n Kind2[\"DOCUMENT\"] = \"Document\";\n Kind2[\"OPERATION_DEFINITION\"] = \"OperationDefinition\";\n Kind2[\"VARIABLE_DEFINITION\"] = \"VariableDefinition\";\n Kind2[\"SELECTION_SET\"] = \"SelectionSet\";\n Kind2[\"FIELD\"] = \"Field\";\n Kind2[\"ARGUMENT\"] = \"Argument\";\n Kind2[\"FRAGMENT_SPREAD\"] = \"FragmentSpread\";\n Kind2[\"INLINE_FRAGMENT\"] = \"InlineFragment\";\n Kind2[\"FRAGMENT_DEFINITION\"] = \"FragmentDefinition\";\n Kind2[\"VARIABLE\"] = \"Variable\";\n Kind2[\"INT\"] = \"IntValue\";\n Kind2[\"FLOAT\"] = \"FloatValue\";\n Kind2[\"STRING\"] = \"StringValue\";\n Kind2[\"BOOLEAN\"] = \"BooleanValue\";\n Kind2[\"NULL\"] = \"NullValue\";\n Kind2[\"ENUM\"] = \"EnumValue\";\n Kind2[\"LIST\"] = \"ListValue\";\n Kind2[\"OBJECT\"] = \"ObjectValue\";\n Kind2[\"OBJECT_FIELD\"] = \"ObjectField\";\n Kind2[\"DIRECTIVE\"] = \"Directive\";\n Kind2[\"NAMED_TYPE\"] = \"NamedType\";\n Kind2[\"LIST_TYPE\"] = \"ListType\";\n Kind2[\"NON_NULL_TYPE\"] = \"NonNullType\";\n Kind2[\"SCHEMA_DEFINITION\"] = \"SchemaDefinition\";\n Kind2[\"OPERATION_TYPE_DEFINITION\"] = \"OperationTypeDefinition\";\n Kind2[\"SCALAR_TYPE_DEFINITION\"] = \"ScalarTypeDefinition\";\n Kind2[\"OBJECT_TYPE_DEFINITION\"] = \"ObjectTypeDefinition\";\n Kind2[\"FIELD_DEFINITION\"] = \"FieldDefinition\";\n Kind2[\"INPUT_VALUE_DEFINITION\"] = \"InputValueDefinition\";\n Kind2[\"INTERFACE_TYPE_DEFINITION\"] = \"InterfaceTypeDefinition\";\n Kind2[\"UNION_TYPE_DEFINITION\"] = \"UnionTypeDefinition\";\n Kind2[\"ENUM_TYPE_DEFINITION\"] = \"EnumTypeDefinition\";\n Kind2[\"ENUM_VALUE_DEFINITION\"] = \"EnumValueDefinition\";\n Kind2[\"INPUT_OBJECT_TYPE_DEFINITION\"] = \"InputObjectTypeDefinition\";\n Kind2[\"DIRECTIVE_DEFINITION\"] = \"DirectiveDefinition\";\n Kind2[\"SCHEMA_EXTENSION\"] = \"SchemaExtension\";\n Kind2[\"SCALAR_TYPE_EXTENSION\"] = \"ScalarTypeExtension\";\n Kind2[\"OBJECT_TYPE_EXTENSION\"] = \"ObjectTypeExtension\";\n Kind2[\"INTERFACE_TYPE_EXTENSION\"] = \"InterfaceTypeExtension\";\n Kind2[\"UNION_TYPE_EXTENSION\"] = \"UnionTypeExtension\";\n Kind2[\"ENUM_TYPE_EXTENSION\"] = \"EnumTypeExtension\";\n Kind2[\"INPUT_OBJECT_TYPE_EXTENSION\"] = \"InputObjectTypeExtension\";\n })(Kind || (Kind = {}));\n\n const BREAK = Object.freeze({});\n\n function visit(root, visitor) {\n let visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n const enterLeaveMap = /* @__PURE__ */new Map();\n\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n\n let stack = void 0;\n let inArray = Array.isArray(root);\n let keys = [root];\n let index = -1;\n let edits = [];\n let node = root;\n let key = void 0;\n let parent = void 0;\n const path = [];\n const ancestors = [];\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? void 0 : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n let editOffset = 0;\n\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = Object.defineProperties({}, Object.getOwnPropertyDescriptors(node));\n\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent) {\n key = inArray ? index : keys[index];\n node = parent[key];\n\n if (node === null || node === void 0) {\n continue;\n }\n\n path.push(key);\n }\n\n let result;\n\n if (!Array.isArray(node)) {\n var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n isNode(node) || devAssert(false, `Invalid AST Node: ${inspect(node)}.`);\n const visitFn = isLeaving ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null || _enterLeaveMap$get === void 0 ? void 0 : _enterLeaveMap$get.leave : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null || _enterLeaveMap$get2 === void 0 ? void 0 : _enterLeaveMap$get2.enter;\n result = visitFn === null || visitFn === void 0 ? void 0 : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== void 0) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === void 0 && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _node$kind;\n\n stack = {\n inArray,\n index,\n keys,\n edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : (_node$kind = visitorKeys[node.kind]) !== null && _node$kind !== void 0 ? _node$kind : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== void 0);\n\n if (edits.length !== 0) {\n return edits[edits.length - 1][1];\n }\n\n return root;\n }\n\n __name(visit, \"visit\");\n\n function getEnterLeaveForKind(visitor, kind) {\n const kindVisitor = visitor[kind];\n\n if (typeof kindVisitor === \"object\") {\n return kindVisitor;\n } else if (typeof kindVisitor === \"function\") {\n return {\n enter: kindVisitor,\n leave: void 0\n };\n }\n\n return {\n enter: visitor.enter,\n leave: visitor.leave\n };\n }\n\n __name(getEnterLeaveForKind, \"getEnterLeaveForKind\");\n\n function print(ast) {\n return visit(ast, printDocASTReducer);\n }\n\n __name(print, \"print\");\n\n const MAX_LINE_LENGTH = 80;\n const printDocASTReducer = {\n Name: {\n leave: node => node.value\n },\n Variable: {\n leave: node => \"$\" + node.name\n },\n Document: {\n leave: node => join(node.definitions, \"\\n\\n\")\n },\n OperationDefinition: {\n leave(node) {\n const varDefs = wrap(\"(\", join(node.variableDefinitions, \", \"), \")\");\n const prefix = join([node.operation, join([node.name, varDefs]), join(node.directives, \" \")], \" \");\n return (prefix === \"query\" ? \"\" : prefix + \" \") + node.selectionSet;\n }\n\n },\n VariableDefinition: {\n leave: _ref3 => {\n let {\n variable,\n type,\n defaultValue,\n directives\n } = _ref3;\n return variable + \": \" + type + wrap(\" = \", defaultValue) + wrap(\" \", join(directives, \" \"));\n }\n },\n SelectionSet: {\n leave: _ref4 => {\n let {\n selections\n } = _ref4;\n return block(selections);\n }\n },\n Field: {\n leave(_ref5) {\n let {\n alias,\n name,\n arguments: args,\n directives,\n selectionSet\n } = _ref5;\n const prefix = wrap(\"\", alias, \": \") + name;\n let argsLine = prefix + wrap(\"(\", join(args, \", \"), \")\");\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap(\"(\\n\", indent(join(args, \"\\n\")), \"\\n)\");\n }\n\n return join([argsLine, join(directives, \" \"), selectionSet], \" \");\n }\n\n },\n Argument: {\n leave: _ref6 => {\n let {\n name,\n value\n } = _ref6;\n return name + \": \" + value;\n }\n },\n FragmentSpread: {\n leave: _ref7 => {\n let {\n name,\n directives\n } = _ref7;\n return \"...\" + name + wrap(\" \", join(directives, \" \"));\n }\n },\n InlineFragment: {\n leave: _ref8 => {\n let {\n typeCondition,\n directives,\n selectionSet\n } = _ref8;\n return join([\"...\", wrap(\"on \", typeCondition), join(directives, \" \"), selectionSet], \" \");\n }\n },\n FragmentDefinition: {\n leave: _ref9 => {\n let {\n name,\n typeCondition,\n variableDefinitions,\n directives,\n selectionSet\n } = _ref9;\n return `fragment ${name}${wrap(\"(\", join(variableDefinitions, \", \"), \")\")} on ${typeCondition} ${wrap(\"\", join(directives, \" \"), \" \")}` + selectionSet;\n }\n },\n IntValue: {\n leave: _ref10 => {\n let {\n value\n } = _ref10;\n return value;\n }\n },\n FloatValue: {\n leave: _ref11 => {\n let {\n value\n } = _ref11;\n return value;\n }\n },\n StringValue: {\n leave: _ref12 => {\n let {\n value,\n block: isBlockString\n } = _ref12;\n return isBlockString ? printBlockString(value) : printString(value);\n }\n },\n BooleanValue: {\n leave: _ref13 => {\n let {\n value\n } = _ref13;\n return value ? \"true\" : \"false\";\n }\n },\n NullValue: {\n leave: () => \"null\"\n },\n EnumValue: {\n leave: _ref14 => {\n let {\n value\n } = _ref14;\n return value;\n }\n },\n ListValue: {\n leave: _ref15 => {\n let {\n values\n } = _ref15;\n return \"[\" + join(values, \", \") + \"]\";\n }\n },\n ObjectValue: {\n leave: _ref16 => {\n let {\n fields\n } = _ref16;\n return \"{\" + join(fields, \", \") + \"}\";\n }\n },\n ObjectField: {\n leave: _ref17 => {\n let {\n name,\n value\n } = _ref17;\n return name + \": \" + value;\n }\n },\n Directive: {\n leave: _ref18 => {\n let {\n name,\n arguments: args\n } = _ref18;\n return \"@\" + name + wrap(\"(\", join(args, \", \"), \")\");\n }\n },\n NamedType: {\n leave: _ref19 => {\n let {\n name\n } = _ref19;\n return name;\n }\n },\n ListType: {\n leave: _ref20 => {\n let {\n type\n } = _ref20;\n return \"[\" + type + \"]\";\n }\n },\n NonNullType: {\n leave: _ref21 => {\n let {\n type\n } = _ref21;\n return type + \"!\";\n }\n },\n SchemaDefinition: {\n leave: _ref22 => {\n let {\n description,\n directives,\n operationTypes\n } = _ref22;\n return wrap(\"\", description, \"\\n\") + join([\"schema\", join(directives, \" \"), block(operationTypes)], \" \");\n }\n },\n OperationTypeDefinition: {\n leave: _ref23 => {\n let {\n operation,\n type\n } = _ref23;\n return operation + \": \" + type;\n }\n },\n ScalarTypeDefinition: {\n leave: _ref24 => {\n let {\n description,\n name,\n directives\n } = _ref24;\n return wrap(\"\", description, \"\\n\") + join([\"scalar\", name, join(directives, \" \")], \" \");\n }\n },\n ObjectTypeDefinition: {\n leave: _ref25 => {\n let {\n description,\n name,\n interfaces,\n directives,\n fields\n } = _ref25;\n return wrap(\"\", description, \"\\n\") + join([\"type\", name, wrap(\"implements \", join(interfaces, \" & \")), join(directives, \" \"), block(fields)], \" \");\n }\n },\n FieldDefinition: {\n leave: _ref26 => {\n let {\n description,\n name,\n arguments: args,\n type,\n directives\n } = _ref26;\n return wrap(\"\", description, \"\\n\") + name + (hasMultilineItems(args) ? wrap(\"(\\n\", indent(join(args, \"\\n\")), \"\\n)\") : wrap(\"(\", join(args, \", \"), \")\")) + \": \" + type + wrap(\" \", join(directives, \" \"));\n }\n },\n InputValueDefinition: {\n leave: _ref27 => {\n let {\n description,\n name,\n type,\n defaultValue,\n directives\n } = _ref27;\n return wrap(\"\", description, \"\\n\") + join([name + \": \" + type, wrap(\"= \", defaultValue), join(directives, \" \")], \" \");\n }\n },\n InterfaceTypeDefinition: {\n leave: _ref28 => {\n let {\n description,\n name,\n interfaces,\n directives,\n fields\n } = _ref28;\n return wrap(\"\", description, \"\\n\") + join([\"interface\", name, wrap(\"implements \", join(interfaces, \" & \")), join(directives, \" \"), block(fields)], \" \");\n }\n },\n UnionTypeDefinition: {\n leave: _ref29 => {\n let {\n description,\n name,\n directives,\n types\n } = _ref29;\n return wrap(\"\", description, \"\\n\") + join([\"union\", name, join(directives, \" \"), wrap(\"= \", join(types, \" | \"))], \" \");\n }\n },\n EnumTypeDefinition: {\n leave: _ref30 => {\n let {\n description,\n name,\n directives,\n values\n } = _ref30;\n return wrap(\"\", description, \"\\n\") + join([\"enum\", name, join(directives, \" \"), block(values)], \" \");\n }\n },\n EnumValueDefinition: {\n leave: _ref31 => {\n let {\n description,\n name,\n directives\n } = _ref31;\n return wrap(\"\", description, \"\\n\") + join([name, join(directives, \" \")], \" \");\n }\n },\n InputObjectTypeDefinition: {\n leave: _ref32 => {\n let {\n description,\n name,\n directives,\n fields\n } = _ref32;\n return wrap(\"\", description, \"\\n\") + join([\"input\", name, join(directives, \" \"), block(fields)], \" \");\n }\n },\n DirectiveDefinition: {\n leave: _ref33 => {\n let {\n description,\n name,\n arguments: args,\n repeatable,\n locations\n } = _ref33;\n return wrap(\"\", description, \"\\n\") + \"directive @\" + name + (hasMultilineItems(args) ? wrap(\"(\\n\", indent(join(args, \"\\n\")), \"\\n)\") : wrap(\"(\", join(args, \", \"), \")\")) + (repeatable ? \" repeatable\" : \"\") + \" on \" + join(locations, \" | \");\n }\n },\n SchemaExtension: {\n leave: _ref34 => {\n let {\n directives,\n operationTypes\n } = _ref34;\n return join([\"extend schema\", join(directives, \" \"), block(operationTypes)], \" \");\n }\n },\n ScalarTypeExtension: {\n leave: _ref35 => {\n let {\n name,\n directives\n } = _ref35;\n return join([\"extend scalar\", name, join(directives, \" \")], \" \");\n }\n },\n ObjectTypeExtension: {\n leave: _ref36 => {\n let {\n name,\n interfaces,\n directives,\n fields\n } = _ref36;\n return join([\"extend type\", name, wrap(\"implements \", join(interfaces, \" & \")), join(directives, \" \"), block(fields)], \" \");\n }\n },\n InterfaceTypeExtension: {\n leave: _ref37 => {\n let {\n name,\n interfaces,\n directives,\n fields\n } = _ref37;\n return join([\"extend interface\", name, wrap(\"implements \", join(interfaces, \" & \")), join(directives, \" \"), block(fields)], \" \");\n }\n },\n UnionTypeExtension: {\n leave: _ref38 => {\n let {\n name,\n directives,\n types\n } = _ref38;\n return join([\"extend union\", name, join(directives, \" \"), wrap(\"= \", join(types, \" | \"))], \" \");\n }\n },\n EnumTypeExtension: {\n leave: _ref39 => {\n let {\n name,\n directives,\n values\n } = _ref39;\n return join([\"extend enum\", name, join(directives, \" \"), block(values)], \" \");\n }\n },\n InputObjectTypeExtension: {\n leave: _ref40 => {\n let {\n name,\n directives,\n fields\n } = _ref40;\n return join([\"extend input\", name, join(directives, \" \"), block(fields)], \" \");\n }\n }\n };\n\n function join(maybeArray) {\n let separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n\n var _maybeArray$filter$jo;\n\n return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(x => x).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : \"\";\n }\n\n __name(join, \"join\");\n\n function block(array) {\n return wrap(\"{\\n\", indent(join(array, \"\\n\")), \"\\n}\");\n }\n\n __name(block, \"block\");\n\n function wrap(start, maybeString) {\n let end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\";\n return maybeString != null && maybeString !== \"\" ? start + maybeString + end : \"\";\n }\n\n __name(wrap, \"wrap\");\n\n function indent(str) {\n return wrap(\" \", str.replace(/\\n/g, \"\\n \"));\n }\n\n __name(indent, \"indent\");\n\n function hasMultilineItems(maybeArray) {\n var _maybeArray$some;\n\n return (_maybeArray$some = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.some(str => str.includes(\"\\n\"))) !== null && _maybeArray$some !== void 0 ? _maybeArray$some : false;\n }\n\n __name(hasMultilineItems, \"hasMultilineItems\");\n\n function isIterableObject(maybeIterable) {\n return typeof maybeIterable === \"object\" && typeof (maybeIterable === null || maybeIterable === void 0 ? void 0 : maybeIterable[Symbol.iterator]) === \"function\";\n }\n\n __name(isIterableObject, \"isIterableObject\");\n\n function isObjectLike(value) {\n return typeof value == \"object\" && value !== null;\n }\n\n __name(isObjectLike, \"isObjectLike\");\n\n const MAX_SUGGESTIONS = 5;\n\n function didYouMean(firstArg, secondArg) {\n const [subMessage, suggestionsArg] = secondArg ? [firstArg, secondArg] : [void 0, firstArg];\n let message = \" Did you mean \";\n\n if (subMessage) {\n message += subMessage + \" \";\n }\n\n const suggestions = suggestionsArg.map(x => `\"${x}\"`);\n\n switch (suggestions.length) {\n case 0:\n return \"\";\n\n case 1:\n return message + suggestions[0] + \"?\";\n\n case 2:\n return message + suggestions[0] + \" or \" + suggestions[1] + \"?\";\n }\n\n const selected = suggestions.slice(0, MAX_SUGGESTIONS);\n const lastItem = selected.pop();\n return message + selected.join(\", \") + \", or \" + lastItem + \"?\";\n }\n\n __name(didYouMean, \"didYouMean\");\n\n function identityFunc(x) {\n return x;\n }\n\n __name(identityFunc, \"identityFunc\");\n\n const instanceOf = /* @__PURE__ */__name(function instanceOf2(value, constructor) {\n return value instanceof constructor;\n }, \"instanceOf\");\n\n function keyMap(list, keyFn) {\n const result = /* @__PURE__ */Object.create(null);\n\n for (const item of list) {\n result[keyFn(item)] = item;\n }\n\n return result;\n }\n\n __name(keyMap, \"keyMap\");\n\n function keyValMap(list, keyFn, valFn) {\n const result = /* @__PURE__ */Object.create(null);\n\n for (const item of list) {\n result[keyFn(item)] = valFn(item);\n }\n\n return result;\n }\n\n __name(keyValMap, \"keyValMap\");\n\n function mapValue(map, fn) {\n const result = /* @__PURE__ */Object.create(null);\n\n for (const key of Object.keys(map)) {\n result[key] = fn(map[key], key);\n }\n\n return result;\n }\n\n __name(mapValue, \"mapValue\");\n\n function naturalCompare(aStr, bStr) {\n let aIndex = 0;\n let bIndex = 0;\n\n while (aIndex < aStr.length && bIndex < bStr.length) {\n let aChar = aStr.charCodeAt(aIndex);\n let bChar = bStr.charCodeAt(bIndex);\n\n if (isDigit(aChar) && isDigit(bChar)) {\n let aNum = 0;\n\n do {\n ++aIndex;\n aNum = aNum * 10 + aChar - DIGIT_0;\n aChar = aStr.charCodeAt(aIndex);\n } while (isDigit(aChar) && aNum > 0);\n\n let bNum = 0;\n\n do {\n ++bIndex;\n bNum = bNum * 10 + bChar - DIGIT_0;\n bChar = bStr.charCodeAt(bIndex);\n } while (isDigit(bChar) && bNum > 0);\n\n if (aNum < bNum) {\n return -1;\n }\n\n if (aNum > bNum) {\n return 1;\n }\n } else {\n if (aChar < bChar) {\n return -1;\n }\n\n if (aChar > bChar) {\n return 1;\n }\n\n ++aIndex;\n ++bIndex;\n }\n }\n\n return aStr.length - bStr.length;\n }\n\n __name(naturalCompare, \"naturalCompare\");\n\n const DIGIT_0 = 48;\n const DIGIT_9 = 57;\n\n function isDigit(code) {\n return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9;\n }\n\n __name(isDigit, \"isDigit\");\n\n function suggestionList(input, options) {\n const optionsByDistance = /* @__PURE__ */Object.create(null);\n const lexicalDistance = new LexicalDistance(input);\n const threshold = Math.floor(input.length * 0.4) + 1;\n\n for (const option of options) {\n const distance = lexicalDistance.measure(option, threshold);\n\n if (distance !== void 0) {\n optionsByDistance[option] = distance;\n }\n }\n\n return Object.keys(optionsByDistance).sort((a, b) => {\n const distanceDiff = optionsByDistance[a] - optionsByDistance[b];\n return distanceDiff !== 0 ? distanceDiff : naturalCompare(a, b);\n });\n }\n\n __name(suggestionList, \"suggestionList\");\n\n class LexicalDistance {\n constructor(input) {\n this._input = input;\n this._inputLowerCase = input.toLowerCase();\n this._inputArray = stringToArray(this._inputLowerCase);\n this._rows = [new Array(input.length + 1).fill(0), new Array(input.length + 1).fill(0), new Array(input.length + 1).fill(0)];\n }\n\n measure(option, threshold) {\n if (this._input === option) {\n return 0;\n }\n\n const optionLowerCase = option.toLowerCase();\n\n if (this._inputLowerCase === optionLowerCase) {\n return 1;\n }\n\n let a = stringToArray(optionLowerCase);\n let b = this._inputArray;\n\n if (a.length < b.length) {\n const tmp = a;\n a = b;\n b = tmp;\n }\n\n const aLength = a.length;\n const bLength = b.length;\n\n if (aLength - bLength > threshold) {\n return void 0;\n }\n\n const rows = this._rows;\n\n for (let j = 0; j <= bLength; j++) {\n rows[0][j] = j;\n }\n\n for (let i = 1; i <= aLength; i++) {\n const upRow = rows[(i - 1) % 3];\n const currentRow = rows[i % 3];\n let smallestCell = currentRow[0] = i;\n\n for (let j = 1; j <= bLength; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n let currentCell = Math.min(upRow[j] + 1, currentRow[j - 1] + 1, upRow[j - 1] + cost);\n\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n const doubleDiagonalCell = rows[(i - 2) % 3][j - 2];\n currentCell = Math.min(currentCell, doubleDiagonalCell + 1);\n }\n\n if (currentCell < smallestCell) {\n smallestCell = currentCell;\n }\n\n currentRow[j] = currentCell;\n }\n\n if (smallestCell > threshold) {\n return void 0;\n }\n }\n\n const distance = rows[aLength % 3][bLength];\n return distance <= threshold ? distance : void 0;\n }\n\n }\n\n __name(LexicalDistance, \"LexicalDistance\");\n\n function stringToArray(str) {\n const strLength = str.length;\n const array = new Array(strLength);\n\n for (let i = 0; i < strLength; ++i) {\n array[i] = str.charCodeAt(i);\n }\n\n return array;\n }\n\n __name(stringToArray, \"stringToArray\");\n\n function toObjMap(obj) {\n if (obj == null) {\n return /* @__PURE__ */Object.create(null);\n }\n\n if (Object.getPrototypeOf(obj) === null) {\n return obj;\n }\n\n const map = /* @__PURE__ */Object.create(null);\n\n for (const [key, value] of Object.entries(obj)) {\n map[key] = value;\n }\n\n return map;\n }\n\n __name(toObjMap, \"toObjMap\");\n\n const LineRegExp = /\\r\\n|[\\n\\r]/g;\n\n function getLocation(source, position) {\n let lastLineStart = 0;\n let line = 1;\n\n for (const match of source.body.matchAll(LineRegExp)) {\n typeof match.index === \"number\" || invariant(false);\n\n if (match.index >= position) {\n break;\n }\n\n lastLineStart = match.index + match[0].length;\n line += 1;\n }\n\n return {\n line,\n column: position + 1 - lastLineStart\n };\n }\n\n __name(getLocation, \"getLocation\");\n\n function printLocation(location) {\n return printSourceLocation(location.source, getLocation(location.source, location.start));\n }\n\n __name(printLocation, \"printLocation\");\n\n function printSourceLocation(source, sourceLocation) {\n const firstLineColumnOffset = source.locationOffset.column - 1;\n const body = \"\".padStart(firstLineColumnOffset) + source.body;\n const lineIndex = sourceLocation.line - 1;\n const lineOffset = source.locationOffset.line - 1;\n const lineNum = sourceLocation.line + lineOffset;\n const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n const columnNum = sourceLocation.column + columnOffset;\n const locationStr = `${source.name}:${lineNum}:${columnNum}\n`;\n const lines = body.split(/\\r\\n|[\\n\\r]/g);\n const locationLine = lines[lineIndex];\n\n if (locationLine.length > 120) {\n const subLineIndex = Math.floor(columnNum / 80);\n const subLineColumnNum = columnNum % 80;\n const subLines = [];\n\n for (let i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return locationStr + printPrefixedLines([[`${lineNum} |`, subLines[0]], ...subLines.slice(1, subLineIndex + 1).map(subLine => [\"|\", subLine]), [\"|\", \"^\".padStart(subLineColumnNum)], [\"|\", subLines[subLineIndex + 1]]]);\n }\n\n return locationStr + printPrefixedLines([[`${lineNum - 1} |`, lines[lineIndex - 1]], [`${lineNum} |`, locationLine], [\"|\", \"^\".padStart(columnNum)], [`${lineNum + 1} |`, lines[lineIndex + 1]]]);\n }\n\n __name(printSourceLocation, \"printSourceLocation\");\n\n function printPrefixedLines(lines) {\n const existingLines = lines.filter(_ref41 => {\n let [_, line] = _ref41;\n return line !== void 0;\n });\n const padLen = Math.max(...existingLines.map(_ref42 => {\n let [prefix] = _ref42;\n return prefix.length;\n }));\n return existingLines.map(_ref43 => {\n let [prefix, line] = _ref43;\n return prefix.padStart(padLen) + (line ? \" \" + line : \"\");\n }).join(\"\\n\");\n }\n\n __name(printPrefixedLines, \"printPrefixedLines\");\n\n function toNormalizedOptions(args) {\n const firstArg = args[0];\n\n if (firstArg == null || \"kind\" in firstArg || \"length\" in firstArg) {\n return {\n nodes: firstArg,\n source: args[1],\n positions: args[2],\n path: args[3],\n originalError: args[4],\n extensions: args[5]\n };\n }\n\n return firstArg;\n }\n\n __name(toNormalizedOptions, \"toNormalizedOptions\");\n\n class GraphQLError extends Error {\n constructor(message) {\n var _this$nodes, _nodeLocations$, _ref;\n\n for (var _len = arguments.length, rawArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rawArgs[_key - 1] = arguments[_key];\n }\n\n const {\n nodes,\n source,\n positions,\n path,\n originalError,\n extensions\n } = toNormalizedOptions(rawArgs);\n super(message);\n this.name = \"GraphQLError\";\n this.path = path !== null && path !== void 0 ? path : void 0;\n this.originalError = originalError !== null && originalError !== void 0 ? originalError : void 0;\n this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : void 0);\n const nodeLocations = undefinedIfEmpty((_this$nodes = this.nodes) === null || _this$nodes === void 0 ? void 0 : _this$nodes.map(node => node.loc).filter(loc => loc != null));\n this.source = source !== null && source !== void 0 ? source : nodeLocations === null || nodeLocations === void 0 ? void 0 : (_nodeLocations$ = nodeLocations[0]) === null || _nodeLocations$ === void 0 ? void 0 : _nodeLocations$.source;\n this.positions = positions !== null && positions !== void 0 ? positions : nodeLocations === null || nodeLocations === void 0 ? void 0 : nodeLocations.map(loc => loc.start);\n this.locations = positions && source ? positions.map(pos => getLocation(source, pos)) : nodeLocations === null || nodeLocations === void 0 ? void 0 : nodeLocations.map(loc => getLocation(loc.source, loc.start));\n const originalExtensions = isObjectLike(originalError === null || originalError === void 0 ? void 0 : originalError.extensions) ? originalError === null || originalError === void 0 ? void 0 : originalError.extensions : void 0;\n this.extensions = (_ref = extensions !== null && extensions !== void 0 ? extensions : originalExtensions) !== null && _ref !== void 0 ? _ref : /* @__PURE__ */Object.create(null);\n Object.defineProperties(this, {\n message: {\n writable: true,\n enumerable: true\n },\n name: {\n enumerable: false\n },\n nodes: {\n enumerable: false\n },\n source: {\n enumerable: false\n },\n positions: {\n enumerable: false\n },\n originalError: {\n enumerable: false\n }\n });\n\n if (originalError !== null && originalError !== void 0 && originalError.stack) {\n Object.defineProperty(this, \"stack\", {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, \"stack\", {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n }\n\n get [Symbol.toStringTag]() {\n return \"GraphQLError\";\n }\n\n toString() {\n let output = this.message;\n\n if (this.nodes) {\n for (const node of this.nodes) {\n if (node.loc) {\n output += \"\\n\\n\" + printLocation(node.loc);\n }\n }\n } else if (this.source && this.locations) {\n for (const location of this.locations) {\n output += \"\\n\\n\" + printSourceLocation(this.source, location);\n }\n }\n\n return output;\n }\n\n toJSON() {\n const formattedError = {\n message: this.message\n };\n\n if (this.locations != null) {\n formattedError.locations = this.locations;\n }\n\n if (this.path != null) {\n formattedError.path = this.path;\n }\n\n if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n formattedError.extensions = this.extensions;\n }\n\n return formattedError;\n }\n\n }\n\n __name(GraphQLError, \"GraphQLError\");\n\n function undefinedIfEmpty(array) {\n return array === void 0 || array.length === 0 ? void 0 : array;\n }\n\n __name(undefinedIfEmpty, \"undefinedIfEmpty\");\n\n function valueFromASTUntyped(valueNode, variables) {\n switch (valueNode.kind) {\n case Kind.NULL:\n return null;\n\n case Kind.INT:\n return parseInt(valueNode.value, 10);\n\n case Kind.FLOAT:\n return parseFloat(valueNode.value);\n\n case Kind.STRING:\n case Kind.ENUM:\n case Kind.BOOLEAN:\n return valueNode.value;\n\n case Kind.LIST:\n return valueNode.values.map(node => valueFromASTUntyped(node, variables));\n\n case Kind.OBJECT:\n return keyValMap(valueNode.fields, field => field.name.value, field => valueFromASTUntyped(field.value, variables));\n\n case Kind.VARIABLE:\n return variables === null || variables === void 0 ? void 0 : variables[valueNode.name.value];\n }\n }\n\n __name(valueFromASTUntyped, \"valueFromASTUntyped\");\n\n function assertName(name) {\n name != null || devAssert(false, \"Must provide name.\");\n typeof name === \"string\" || devAssert(false, \"Expected name to be a string.\");\n\n if (name.length === 0) {\n throw new GraphQLError(\"Expected name to be a non-empty string.\");\n }\n\n for (let i = 1; i < name.length; ++i) {\n if (!isNameContinue(name.charCodeAt(i))) {\n throw new GraphQLError(`Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`);\n }\n }\n\n if (!isNameStart(name.charCodeAt(0))) {\n throw new GraphQLError(`Names must start with [_a-zA-Z] but \"${name}\" does not.`);\n }\n\n return name;\n }\n\n __name(assertName, \"assertName\");\n\n function assertEnumValueName(name) {\n if (name === \"true\" || name === \"false\" || name === \"null\") {\n throw new GraphQLError(`Enum values cannot be named: ${name}`);\n }\n\n return assertName(name);\n }\n\n __name(assertEnumValueName, \"assertEnumValueName\");\n\n function isType(type) {\n return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isInputObjectType(type) || isListType(type) || isNonNullType(type);\n }\n\n __name(isType, \"isType\");\n\n function isScalarType(type) {\n return instanceOf(type, GraphQLScalarType);\n }\n\n __name(isScalarType, \"isScalarType\");\n\n function isObjectType(type) {\n return instanceOf(type, GraphQLObjectType);\n }\n\n __name(isObjectType, \"isObjectType\");\n\n function isInterfaceType(type) {\n return instanceOf(type, GraphQLInterfaceType);\n }\n\n __name(isInterfaceType, \"isInterfaceType\");\n\n function isUnionType(type) {\n return instanceOf(type, GraphQLUnionType);\n }\n\n __name(isUnionType, \"isUnionType\");\n\n function isEnumType(type) {\n return instanceOf(type, GraphQLEnumType);\n }\n\n __name(isEnumType, \"isEnumType\");\n\n function isInputObjectType(type) {\n return instanceOf(type, GraphQLInputObjectType);\n }\n\n __name(isInputObjectType, \"isInputObjectType\");\n\n function isListType(type) {\n return instanceOf(type, GraphQLList);\n }\n\n __name(isListType, \"isListType\");\n\n function isNonNullType(type) {\n return instanceOf(type, GraphQLNonNull);\n }\n\n __name(isNonNullType, \"isNonNullType\");\n\n function isLeafType(type) {\n return isScalarType(type) || isEnumType(type);\n }\n\n __name(isLeafType, \"isLeafType\");\n\n function isAbstractType(type) {\n return isInterfaceType(type) || isUnionType(type);\n }\n\n __name(isAbstractType, \"isAbstractType\");\n\n class GraphQLList {\n constructor(ofType) {\n isType(ofType) || devAssert(false, `Expected ${inspect(ofType)} to be a GraphQL type.`);\n this.ofType = ofType;\n }\n\n get [Symbol.toStringTag]() {\n return \"GraphQLList\";\n }\n\n toString() {\n return \"[\" + String(this.ofType) + \"]\";\n }\n\n toJSON() {\n return this.toString();\n }\n\n }\n\n __name(GraphQLList, \"GraphQLList\");\n\n class GraphQLNonNull {\n constructor(ofType) {\n isNullableType(ofType) || devAssert(false, `Expected ${inspect(ofType)} to be a GraphQL nullable type.`);\n this.ofType = ofType;\n }\n\n get [Symbol.toStringTag]() {\n return \"GraphQLNonNull\";\n }\n\n toString() {\n return String(this.ofType) + \"!\";\n }\n\n toJSON() {\n return this.toString();\n }\n\n }\n\n __name(GraphQLNonNull, \"GraphQLNonNull\");\n\n function isNullableType(type) {\n return isType(type) && !isNonNullType(type);\n }\n\n __name(isNullableType, \"isNullableType\");\n\n function resolveReadonlyArrayThunk(thunk) {\n return typeof thunk === \"function\" ? thunk() : thunk;\n }\n\n __name(resolveReadonlyArrayThunk, \"resolveReadonlyArrayThunk\");\n\n function resolveObjMapThunk(thunk) {\n return typeof thunk === \"function\" ? thunk() : thunk;\n }\n\n __name(resolveObjMapThunk, \"resolveObjMapThunk\");\n\n class GraphQLScalarType {\n constructor(config) {\n var _config$parseValue, _config$serialize, _config$parseLiteral, _config$extensionASTN;\n\n const parseValue = (_config$parseValue = config.parseValue) !== null && _config$parseValue !== void 0 ? _config$parseValue : identityFunc;\n this.name = assertName(config.name);\n this.description = config.description;\n this.specifiedByURL = config.specifiedByURL;\n this.serialize = (_config$serialize = config.serialize) !== null && _config$serialize !== void 0 ? _config$serialize : identityFunc;\n this.parseValue = parseValue;\n this.parseLiteral = (_config$parseLiteral = config.parseLiteral) !== null && _config$parseLiteral !== void 0 ? _config$parseLiteral : (node, variables) => parseValue(valueFromASTUntyped(node, variables));\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = (_config$extensionASTN = config.extensionASTNodes) !== null && _config$extensionASTN !== void 0 ? _config$extensionASTN : [];\n config.specifiedByURL == null || typeof config.specifiedByURL === \"string\" || devAssert(false, `${this.name} must provide \"specifiedByURL\" as a string, but got: ${inspect(config.specifiedByURL)}.`);\n config.serialize == null || typeof config.serialize === \"function\" || devAssert(false, `${this.name} must provide \"serialize\" function. If this custom Scalar is also used as an input type, ensure \"parseValue\" and \"parseLiteral\" functions are also provided.`);\n\n if (config.parseLiteral) {\n typeof config.parseValue === \"function\" && typeof config.parseLiteral === \"function\" || devAssert(false, `${this.name} must provide both \"parseValue\" and \"parseLiteral\" functions.`);\n }\n }\n\n get [Symbol.toStringTag]() {\n return \"GraphQLScalarType\";\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n specifiedByURL: this.specifiedByURL,\n serialize: this.serialize,\n parseValue: this.parseValue,\n parseLiteral: this.parseLiteral,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n\n }\n\n __name(GraphQLScalarType, \"GraphQLScalarType\");\n\n class GraphQLObjectType {\n constructor(config) {\n var _config$extensionASTN2;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.isTypeOf = config.isTypeOf;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = (_config$extensionASTN2 = config.extensionASTNodes) !== null && _config$extensionASTN2 !== void 0 ? _config$extensionASTN2 : [];\n\n this._fields = () => defineFieldMap(config);\n\n this._interfaces = () => defineInterfaces(config);\n\n config.isTypeOf == null || typeof config.isTypeOf === \"function\" || devAssert(false, `${this.name} must provide \"isTypeOf\" as a function, but got: ${inspect(config.isTypeOf)}.`);\n }\n\n get [Symbol.toStringTag]() {\n return \"GraphQLObjectType\";\n }\n\n getFields() {\n if (typeof this._fields === \"function\") {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n getInterfaces() {\n if (typeof this._interfaces === \"function\") {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n isTypeOf: this.isTypeOf,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n\n }\n\n __name(GraphQLObjectType, \"GraphQLObjectType\");\n\n function defineInterfaces(config) {\n var _config$interfaces;\n\n const interfaces = resolveReadonlyArrayThunk((_config$interfaces = config.interfaces) !== null && _config$interfaces !== void 0 ? _config$interfaces : []);\n Array.isArray(interfaces) || devAssert(false, `${config.name} interfaces must be an Array or a function which returns an Array.`);\n return interfaces;\n }\n\n __name(defineInterfaces, \"defineInterfaces\");\n\n function defineFieldMap(config) {\n const fieldMap = resolveObjMapThunk(config.fields);\n isPlainObj(fieldMap) || devAssert(false, `${config.name} fields must be an object with field names as keys or a function which returns such an object.`);\n return mapValue(fieldMap, (fieldConfig, fieldName) => {\n var _fieldConfig$args;\n\n isPlainObj(fieldConfig) || devAssert(false, `${config.name}.${fieldName} field config must be an object.`);\n fieldConfig.resolve == null || typeof fieldConfig.resolve === \"function\" || devAssert(false, `${config.name}.${fieldName} field resolver must be a function if provided, but got: ${inspect(fieldConfig.resolve)}.`);\n const argsConfig = (_fieldConfig$args = fieldConfig.args) !== null && _fieldConfig$args !== void 0 ? _fieldConfig$args : {};\n isPlainObj(argsConfig) || devAssert(false, `${config.name}.${fieldName} args must be an object with argument names as keys.`);\n return {\n name: assertName(fieldName),\n description: fieldConfig.description,\n type: fieldConfig.type,\n args: defineArguments(argsConfig),\n resolve: fieldConfig.resolve,\n subscribe: fieldConfig.subscribe,\n deprecationReason: fieldConfig.deprecationReason,\n extensions: toObjMap(fieldConfig.extensions),\n astNode: fieldConfig.astNode\n };\n });\n }\n\n __name(defineFieldMap, \"defineFieldMap\");\n\n function defineArguments(config) {\n return Object.entries(config).map(_ref44 => {\n let [argName, argConfig] = _ref44;\n return {\n name: assertName(argName),\n description: argConfig.description,\n type: argConfig.type,\n defaultValue: argConfig.defaultValue,\n deprecationReason: argConfig.deprecationReason,\n extensions: toObjMap(argConfig.extensions),\n astNode: argConfig.astNode\n };\n });\n }\n\n __name(defineArguments, \"defineArguments\");\n\n function isPlainObj(obj) {\n return isObjectLike(obj) && !Array.isArray(obj);\n }\n\n __name(isPlainObj, \"isPlainObj\");\n\n function fieldsToFieldsConfig(fields) {\n return mapValue(fields, field => ({\n description: field.description,\n type: field.type,\n args: argsToArgsConfig(field.args),\n resolve: field.resolve,\n subscribe: field.subscribe,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode\n }));\n }\n\n __name(fieldsToFieldsConfig, \"fieldsToFieldsConfig\");\n\n function argsToArgsConfig(args) {\n return keyValMap(args, arg => arg.name, arg => ({\n description: arg.description,\n type: arg.type,\n defaultValue: arg.defaultValue,\n deprecationReason: arg.deprecationReason,\n extensions: arg.extensions,\n astNode: arg.astNode\n }));\n }\n\n __name(argsToArgsConfig, \"argsToArgsConfig\");\n\n class GraphQLInterfaceType {\n constructor(config) {\n var _config$extensionASTN3;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = (_config$extensionASTN3 = config.extensionASTNodes) !== null && _config$extensionASTN3 !== void 0 ? _config$extensionASTN3 : [];\n this._fields = defineFieldMap.bind(void 0, config);\n this._interfaces = defineInterfaces.bind(void 0, config);\n config.resolveType == null || typeof config.resolveType === \"function\" || devAssert(false, `${this.name} must provide \"resolveType\" as a function, but got: ${inspect(config.resolveType)}.`);\n }\n\n get [Symbol.toStringTag]() {\n return \"GraphQLInterfaceType\";\n }\n\n getFields() {\n if (typeof this._fields === \"function\") {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n getInterfaces() {\n if (typeof this._interfaces === \"function\") {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n\n }\n\n __name(GraphQLInterfaceType, \"GraphQLInterfaceType\");\n\n class GraphQLUnionType {\n constructor(config) {\n var _config$extensionASTN4;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = (_config$extensionASTN4 = config.extensionASTNodes) !== null && _config$extensionASTN4 !== void 0 ? _config$extensionASTN4 : [];\n this._types = defineTypes.bind(void 0, config);\n config.resolveType == null || typeof config.resolveType === \"function\" || devAssert(false, `${this.name} must provide \"resolveType\" as a function, but got: ${inspect(config.resolveType)}.`);\n }\n\n get [Symbol.toStringTag]() {\n return \"GraphQLUnionType\";\n }\n\n getTypes() {\n if (typeof this._types === \"function\") {\n this._types = this._types();\n }\n\n return this._types;\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n types: this.getTypes(),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n\n }\n\n __name(GraphQLUnionType, \"GraphQLUnionType\");\n\n function defineTypes(config) {\n const types = resolveReadonlyArrayThunk(config.types);\n Array.isArray(types) || devAssert(false, `Must provide Array of types or a function which returns such an array for Union ${config.name}.`);\n return types;\n }\n\n __name(defineTypes, \"defineTypes\");\n\n class GraphQLEnumType {\n constructor(config) {\n var _config$extensionASTN5;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = (_config$extensionASTN5 = config.extensionASTNodes) !== null && _config$extensionASTN5 !== void 0 ? _config$extensionASTN5 : [];\n this._values = defineEnumValues(this.name, config.values);\n this._valueLookup = new Map(this._values.map(enumValue => [enumValue.value, enumValue]));\n this._nameLookup = keyMap(this._values, value => value.name);\n }\n\n get [Symbol.toStringTag]() {\n return \"GraphQLEnumType\";\n }\n\n getValues() {\n return this._values;\n }\n\n getValue(name) {\n return this._nameLookup[name];\n }\n\n serialize(outputValue) {\n const enumValue = this._valueLookup.get(outputValue);\n\n if (enumValue === void 0) {\n throw new GraphQLError(`Enum \"${this.name}\" cannot represent value: ${inspect(outputValue)}`);\n }\n\n return enumValue.name;\n }\n\n parseValue(inputValue) {\n if (typeof inputValue !== \"string\") {\n const valueStr = inspect(inputValue);\n throw new GraphQLError(`Enum \"${this.name}\" cannot represent non-string value: ${valueStr}.` + didYouMeanEnumValue(this, valueStr));\n }\n\n const enumValue = this.getValue(inputValue);\n\n if (enumValue == null) {\n throw new GraphQLError(`Value \"${inputValue}\" does not exist in \"${this.name}\" enum.` + didYouMeanEnumValue(this, inputValue));\n }\n\n return enumValue.value;\n }\n\n parseLiteral(valueNode, _variables) {\n if (valueNode.kind !== Kind.ENUM) {\n const valueStr = print(valueNode);\n throw new GraphQLError(`Enum \"${this.name}\" cannot represent non-enum value: ${valueStr}.` + didYouMeanEnumValue(this, valueStr), {\n nodes: valueNode\n });\n }\n\n const enumValue = this.getValue(valueNode.value);\n\n if (enumValue == null) {\n const valueStr = print(valueNode);\n throw new GraphQLError(`Value \"${valueStr}\" does not exist in \"${this.name}\" enum.` + didYouMeanEnumValue(this, valueStr), {\n nodes: valueNode\n });\n }\n\n return enumValue.value;\n }\n\n toConfig() {\n const values = keyValMap(this.getValues(), value => value.name, value => ({\n description: value.description,\n value: value.value,\n deprecationReason: value.deprecationReason,\n extensions: value.extensions,\n astNode: value.astNode\n }));\n return {\n name: this.name,\n description: this.description,\n values,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n\n }\n\n __name(GraphQLEnumType, \"GraphQLEnumType\");\n\n function didYouMeanEnumValue(enumType, unknownValueStr) {\n const allNames = enumType.getValues().map(value => value.name);\n const suggestedValues = suggestionList(unknownValueStr, allNames);\n return didYouMean(\"the enum value\", suggestedValues);\n }\n\n __name(didYouMeanEnumValue, \"didYouMeanEnumValue\");\n\n function defineEnumValues(typeName, valueMap) {\n isPlainObj(valueMap) || devAssert(false, `${typeName} values must be an object with value names as keys.`);\n return Object.entries(valueMap).map(_ref45 => {\n let [valueName, valueConfig] = _ref45;\n isPlainObj(valueConfig) || devAssert(false, `${typeName}.${valueName} must refer to an object with a \"value\" key representing an internal value but got: ${inspect(valueConfig)}.`);\n return {\n name: assertEnumValueName(valueName),\n description: valueConfig.description,\n value: valueConfig.value !== void 0 ? valueConfig.value : valueName,\n deprecationReason: valueConfig.deprecationReason,\n extensions: toObjMap(valueConfig.extensions),\n astNode: valueConfig.astNode\n };\n });\n }\n\n __name(defineEnumValues, \"defineEnumValues\");\n\n class GraphQLInputObjectType {\n constructor(config) {\n var _config$extensionASTN6;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = (_config$extensionASTN6 = config.extensionASTNodes) !== null && _config$extensionASTN6 !== void 0 ? _config$extensionASTN6 : [];\n this._fields = defineInputFieldMap.bind(void 0, config);\n }\n\n get [Symbol.toStringTag]() {\n return \"GraphQLInputObjectType\";\n }\n\n getFields() {\n if (typeof this._fields === \"function\") {\n this._fields = this._fields();\n }\n\n return this._fields;\n }\n\n toConfig() {\n const fields = mapValue(this.getFields(), field => ({\n description: field.description,\n type: field.type,\n defaultValue: field.defaultValue,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode\n }));\n return {\n name: this.name,\n description: this.description,\n fields,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes\n };\n }\n\n toString() {\n return this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n\n }\n\n __name(GraphQLInputObjectType, \"GraphQLInputObjectType\");\n\n function defineInputFieldMap(config) {\n const fieldMap = resolveObjMapThunk(config.fields);\n isPlainObj(fieldMap) || devAssert(false, `${config.name} fields must be an object with field names as keys or a function which returns such an object.`);\n return mapValue(fieldMap, (fieldConfig, fieldName) => {\n !(\"resolve\" in fieldConfig) || devAssert(false, `${config.name}.${fieldName} field has a resolve property, but Input Types cannot define resolvers.`);\n return {\n name: assertName(fieldName),\n description: fieldConfig.description,\n type: fieldConfig.type,\n defaultValue: fieldConfig.defaultValue,\n deprecationReason: fieldConfig.deprecationReason,\n extensions: toObjMap(fieldConfig.extensions),\n astNode: fieldConfig.astNode\n };\n });\n }\n\n __name(defineInputFieldMap, \"defineInputFieldMap\");\n\n const GRAPHQL_MAX_INT = 2147483647;\n const GRAPHQL_MIN_INT = -2147483648;\n const GraphQLInt = new GraphQLScalarType({\n name: \"Int\",\n description: \"The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.\",\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === \"boolean\") {\n return coercedValue ? 1 : 0;\n }\n\n let num = coercedValue;\n\n if (typeof coercedValue === \"string\" && coercedValue !== \"\") {\n num = Number(coercedValue);\n }\n\n if (typeof num !== \"number\" || !Number.isInteger(num)) {\n throw new GraphQLError(`Int cannot represent non-integer value: ${inspect(coercedValue)}`);\n }\n\n if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n throw new GraphQLError(\"Int cannot represent non 32-bit signed integer value: \" + inspect(coercedValue));\n }\n\n return num;\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== \"number\" || !Number.isInteger(inputValue)) {\n throw new GraphQLError(`Int cannot represent non-integer value: ${inspect(inputValue)}`);\n }\n\n if (inputValue > GRAPHQL_MAX_INT || inputValue < GRAPHQL_MIN_INT) {\n throw new GraphQLError(`Int cannot represent non 32-bit signed integer value: ${inputValue}`);\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.INT) {\n throw new GraphQLError(`Int cannot represent non-integer value: ${print(valueNode)}`, {\n nodes: valueNode\n });\n }\n\n const num = parseInt(valueNode.value, 10);\n\n if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n throw new GraphQLError(`Int cannot represent non 32-bit signed integer value: ${valueNode.value}`, {\n nodes: valueNode\n });\n }\n\n return num;\n }\n\n });\n const GraphQLFloat = new GraphQLScalarType({\n name: \"Float\",\n description: \"The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).\",\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === \"boolean\") {\n return coercedValue ? 1 : 0;\n }\n\n let num = coercedValue;\n\n if (typeof coercedValue === \"string\" && coercedValue !== \"\") {\n num = Number(coercedValue);\n }\n\n if (typeof num !== \"number\" || !Number.isFinite(num)) {\n throw new GraphQLError(`Float cannot represent non numeric value: ${inspect(coercedValue)}`);\n }\n\n return num;\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== \"number\" || !Number.isFinite(inputValue)) {\n throw new GraphQLError(`Float cannot represent non numeric value: ${inspect(inputValue)}`);\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.FLOAT && valueNode.kind !== Kind.INT) {\n throw new GraphQLError(`Float cannot represent non numeric value: ${print(valueNode)}`, valueNode);\n }\n\n return parseFloat(valueNode.value);\n }\n\n });\n const GraphQLString = new GraphQLScalarType({\n name: \"String\",\n description: \"The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.\",\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === \"string\") {\n return coercedValue;\n }\n\n if (typeof coercedValue === \"boolean\") {\n return coercedValue ? \"true\" : \"false\";\n }\n\n if (typeof coercedValue === \"number\" && Number.isFinite(coercedValue)) {\n return coercedValue.toString();\n }\n\n throw new GraphQLError(`String cannot represent value: ${inspect(outputValue)}`);\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== \"string\") {\n throw new GraphQLError(`String cannot represent a non string value: ${inspect(inputValue)}`);\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.STRING) {\n throw new GraphQLError(`String cannot represent a non string value: ${print(valueNode)}`, {\n nodes: valueNode\n });\n }\n\n return valueNode.value;\n }\n\n });\n const GraphQLBoolean = new GraphQLScalarType({\n name: \"Boolean\",\n description: \"The `Boolean` scalar type represents `true` or `false`.\",\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === \"boolean\") {\n return coercedValue;\n }\n\n if (Number.isFinite(coercedValue)) {\n return coercedValue !== 0;\n }\n\n throw new GraphQLError(`Boolean cannot represent a non boolean value: ${inspect(coercedValue)}`);\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== \"boolean\") {\n throw new GraphQLError(`Boolean cannot represent a non boolean value: ${inspect(inputValue)}`);\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.BOOLEAN) {\n throw new GraphQLError(`Boolean cannot represent a non boolean value: ${print(valueNode)}`, {\n nodes: valueNode\n });\n }\n\n return valueNode.value;\n }\n\n });\n const GraphQLID = new GraphQLScalarType({\n name: \"ID\",\n description: 'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === \"string\") {\n return coercedValue;\n }\n\n if (Number.isInteger(coercedValue)) {\n return String(coercedValue);\n }\n\n throw new GraphQLError(`ID cannot represent value: ${inspect(outputValue)}`);\n },\n\n parseValue(inputValue) {\n if (typeof inputValue === \"string\") {\n return inputValue;\n }\n\n if (typeof inputValue === \"number\" && Number.isInteger(inputValue)) {\n return inputValue.toString();\n }\n\n throw new GraphQLError(`ID cannot represent value: ${inspect(inputValue)}`);\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.STRING && valueNode.kind !== Kind.INT) {\n throw new GraphQLError(\"ID cannot represent a non-string and non-integer value: \" + print(valueNode), {\n nodes: valueNode\n });\n }\n\n return valueNode.value;\n }\n\n });\n Object.freeze([GraphQLString, GraphQLInt, GraphQLFloat, GraphQLBoolean, GraphQLID]);\n\n function serializeObject(outputValue) {\n if (isObjectLike(outputValue)) {\n if (typeof outputValue.valueOf === \"function\") {\n const valueOfResult = outputValue.valueOf();\n\n if (!isObjectLike(valueOfResult)) {\n return valueOfResult;\n }\n }\n\n if (typeof outputValue.toJSON === \"function\") {\n return outputValue.toJSON();\n }\n }\n\n return outputValue;\n }\n\n __name(serializeObject, \"serializeObject\");\n\n function astFromValue(value, type) {\n if (isNonNullType(type)) {\n const astValue = astFromValue(value, type.ofType);\n\n if ((astValue === null || astValue === void 0 ? void 0 : astValue.kind) === Kind.NULL) {\n return null;\n }\n\n return astValue;\n }\n\n if (value === null) {\n return {\n kind: Kind.NULL\n };\n }\n\n if (value === void 0) {\n return null;\n }\n\n if (isListType(type)) {\n const itemType = type.ofType;\n\n if (isIterableObject(value)) {\n const valuesNodes = [];\n\n for (const item of value) {\n const itemNode = astFromValue(item, itemType);\n\n if (itemNode != null) {\n valuesNodes.push(itemNode);\n }\n }\n\n return {\n kind: Kind.LIST,\n values: valuesNodes\n };\n }\n\n return astFromValue(value, itemType);\n }\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(value)) {\n return null;\n }\n\n const fieldNodes = [];\n\n for (const field of Object.values(type.getFields())) {\n const fieldValue = astFromValue(value[field.name], field.type);\n\n if (fieldValue) {\n fieldNodes.push({\n kind: Kind.OBJECT_FIELD,\n name: {\n kind: Kind.NAME,\n value: field.name\n },\n value: fieldValue\n });\n }\n }\n\n return {\n kind: Kind.OBJECT,\n fields: fieldNodes\n };\n }\n\n if (isLeafType(type)) {\n const serialized = type.serialize(value);\n\n if (serialized == null) {\n return null;\n }\n\n if (typeof serialized === \"boolean\") {\n return {\n kind: Kind.BOOLEAN,\n value: serialized\n };\n }\n\n if (typeof serialized === \"number\" && Number.isFinite(serialized)) {\n const stringNum = String(serialized);\n return integerStringRegExp.test(stringNum) ? {\n kind: Kind.INT,\n value: stringNum\n } : {\n kind: Kind.FLOAT,\n value: stringNum\n };\n }\n\n if (typeof serialized === \"string\") {\n if (isEnumType(type)) {\n return {\n kind: Kind.ENUM,\n value: serialized\n };\n }\n\n if (type === GraphQLID && integerStringRegExp.test(serialized)) {\n return {\n kind: Kind.INT,\n value: serialized\n };\n }\n\n return {\n kind: Kind.STRING,\n value: serialized\n };\n }\n\n throw new TypeError(`Cannot convert value to AST: ${inspect(serialized)}.`);\n }\n\n invariant(false, \"Unexpected input type: \" + inspect(type));\n }\n\n __name(astFromValue, \"astFromValue\");\n\n const integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n\n const __Schema = new GraphQLObjectType({\n name: \"__Schema\",\n description: \"A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.\",\n fields: () => ({\n description: {\n type: GraphQLString,\n resolve: schema => schema.description\n },\n types: {\n description: \"A list of all types supported by this server.\",\n type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(__Type))),\n\n resolve(schema) {\n return Object.values(schema.getTypeMap());\n }\n\n },\n queryType: {\n description: \"The type that query operations will be rooted at.\",\n type: new GraphQLNonNull(__Type),\n resolve: schema => schema.getQueryType()\n },\n mutationType: {\n description: \"If this server supports mutation, the type that mutation operations will be rooted at.\",\n type: __Type,\n resolve: schema => schema.getMutationType()\n },\n subscriptionType: {\n description: \"If this server support subscription, the type that subscription operations will be rooted at.\",\n type: __Type,\n resolve: schema => schema.getSubscriptionType()\n },\n directives: {\n description: \"A list of all directives supported by this server.\",\n type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(__Directive))),\n resolve: schema => schema.getDirectives()\n }\n })\n });\n\n const __Directive = new GraphQLObjectType({\n name: \"__Directive\",\n description: \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: directive => directive.name\n },\n description: {\n type: GraphQLString,\n resolve: directive => directive.description\n },\n isRepeatable: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: directive => directive.isRepeatable\n },\n locations: {\n type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(__DirectiveLocation))),\n resolve: directive => directive.locations\n },\n args: {\n type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(__InputValue))),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false\n }\n },\n\n resolve(field, _ref46) {\n let {\n includeDeprecated\n } = _ref46;\n return includeDeprecated ? field.args : field.args.filter(arg => arg.deprecationReason == null);\n }\n\n }\n })\n });\n\n const __DirectiveLocation = new GraphQLEnumType({\n name: \"__DirectiveLocation\",\n description: \"A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.\",\n values: {\n QUERY: {\n value: DirectiveLocation.QUERY,\n description: \"Location adjacent to a query operation.\"\n },\n MUTATION: {\n value: DirectiveLocation.MUTATION,\n description: \"Location adjacent to a mutation operation.\"\n },\n SUBSCRIPTION: {\n value: DirectiveLocation.SUBSCRIPTION,\n description: \"Location adjacent to a subscription operation.\"\n },\n FIELD: {\n value: DirectiveLocation.FIELD,\n description: \"Location adjacent to a field.\"\n },\n FRAGMENT_DEFINITION: {\n value: DirectiveLocation.FRAGMENT_DEFINITION,\n description: \"Location adjacent to a fragment definition.\"\n },\n FRAGMENT_SPREAD: {\n value: DirectiveLocation.FRAGMENT_SPREAD,\n description: \"Location adjacent to a fragment spread.\"\n },\n INLINE_FRAGMENT: {\n value: DirectiveLocation.INLINE_FRAGMENT,\n description: \"Location adjacent to an inline fragment.\"\n },\n VARIABLE_DEFINITION: {\n value: DirectiveLocation.VARIABLE_DEFINITION,\n description: \"Location adjacent to a variable definition.\"\n },\n SCHEMA: {\n value: DirectiveLocation.SCHEMA,\n description: \"Location adjacent to a schema definition.\"\n },\n SCALAR: {\n value: DirectiveLocation.SCALAR,\n description: \"Location adjacent to a scalar definition.\"\n },\n OBJECT: {\n value: DirectiveLocation.OBJECT,\n description: \"Location adjacent to an object type definition.\"\n },\n FIELD_DEFINITION: {\n value: DirectiveLocation.FIELD_DEFINITION,\n description: \"Location adjacent to a field definition.\"\n },\n ARGUMENT_DEFINITION: {\n value: DirectiveLocation.ARGUMENT_DEFINITION,\n description: \"Location adjacent to an argument definition.\"\n },\n INTERFACE: {\n value: DirectiveLocation.INTERFACE,\n description: \"Location adjacent to an interface definition.\"\n },\n UNION: {\n value: DirectiveLocation.UNION,\n description: \"Location adjacent to a union definition.\"\n },\n ENUM: {\n value: DirectiveLocation.ENUM,\n description: \"Location adjacent to an enum definition.\"\n },\n ENUM_VALUE: {\n value: DirectiveLocation.ENUM_VALUE,\n description: \"Location adjacent to an enum value definition.\"\n },\n INPUT_OBJECT: {\n value: DirectiveLocation.INPUT_OBJECT,\n description: \"Location adjacent to an input object type definition.\"\n },\n INPUT_FIELD_DEFINITION: {\n value: DirectiveLocation.INPUT_FIELD_DEFINITION,\n description: \"Location adjacent to an input object field definition.\"\n }\n }\n });\n\n const __Type = new GraphQLObjectType({\n name: \"__Type\",\n description: \"The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.\",\n fields: () => ({\n kind: {\n type: new GraphQLNonNull(__TypeKind),\n\n resolve(type) {\n if (isScalarType(type)) {\n return TypeKind.SCALAR;\n }\n\n if (isObjectType(type)) {\n return TypeKind.OBJECT;\n }\n\n if (isInterfaceType(type)) {\n return TypeKind.INTERFACE;\n }\n\n if (isUnionType(type)) {\n return TypeKind.UNION;\n }\n\n if (isEnumType(type)) {\n return TypeKind.ENUM;\n }\n\n if (isInputObjectType(type)) {\n return TypeKind.INPUT_OBJECT;\n }\n\n if (isListType(type)) {\n return TypeKind.LIST;\n }\n\n if (isNonNullType(type)) {\n return TypeKind.NON_NULL;\n }\n\n invariant(false, `Unexpected type: \"${inspect(type)}\".`);\n }\n\n },\n name: {\n type: GraphQLString,\n resolve: type => \"name\" in type ? type.name : void 0\n },\n description: {\n type: GraphQLString,\n resolve: type => \"description\" in type ? type.description : void 0\n },\n specifiedByURL: {\n type: GraphQLString,\n resolve: obj => \"specifiedByURL\" in obj ? obj.specifiedByURL : void 0\n },\n fields: {\n type: new GraphQLList(new GraphQLNonNull(__Field)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false\n }\n },\n\n resolve(type, _ref47) {\n let {\n includeDeprecated\n } = _ref47;\n\n if (isObjectType(type) || isInterfaceType(type)) {\n const fields = Object.values(type.getFields());\n return includeDeprecated ? fields : fields.filter(field => field.deprecationReason == null);\n }\n }\n\n },\n interfaces: {\n type: new GraphQLList(new GraphQLNonNull(__Type)),\n\n resolve(type) {\n if (isObjectType(type) || isInterfaceType(type)) {\n return type.getInterfaces();\n }\n }\n\n },\n possibleTypes: {\n type: new GraphQLList(new GraphQLNonNull(__Type)),\n\n resolve(type, _args, _context, _ref48) {\n let {\n schema\n } = _ref48;\n\n if (isAbstractType(type)) {\n return schema.getPossibleTypes(type);\n }\n }\n\n },\n enumValues: {\n type: new GraphQLList(new GraphQLNonNull(__EnumValue)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false\n }\n },\n\n resolve(type, _ref49) {\n let {\n includeDeprecated\n } = _ref49;\n\n if (isEnumType(type)) {\n const values = type.getValues();\n return includeDeprecated ? values : values.filter(field => field.deprecationReason == null);\n }\n }\n\n },\n inputFields: {\n type: new GraphQLList(new GraphQLNonNull(__InputValue)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false\n }\n },\n\n resolve(type, _ref50) {\n let {\n includeDeprecated\n } = _ref50;\n\n if (isInputObjectType(type)) {\n const values = Object.values(type.getFields());\n return includeDeprecated ? values : values.filter(field => field.deprecationReason == null);\n }\n }\n\n },\n ofType: {\n type: __Type,\n resolve: type => \"ofType\" in type ? type.ofType : void 0\n }\n })\n });\n\n const __Field = new GraphQLObjectType({\n name: \"__Field\",\n description: \"Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.\",\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: field => field.name\n },\n description: {\n type: GraphQLString,\n resolve: field => field.description\n },\n args: {\n type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(__InputValue))),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false\n }\n },\n\n resolve(field, _ref51) {\n let {\n includeDeprecated\n } = _ref51;\n return includeDeprecated ? field.args : field.args.filter(arg => arg.deprecationReason == null);\n }\n\n },\n type: {\n type: new GraphQLNonNull(__Type),\n resolve: field => field.type\n },\n isDeprecated: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: field => field.deprecationReason != null\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: field => field.deprecationReason\n }\n })\n });\n\n const __InputValue = new GraphQLObjectType({\n name: \"__InputValue\",\n description: \"Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.\",\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: inputValue => inputValue.name\n },\n description: {\n type: GraphQLString,\n resolve: inputValue => inputValue.description\n },\n type: {\n type: new GraphQLNonNull(__Type),\n resolve: inputValue => inputValue.type\n },\n defaultValue: {\n type: GraphQLString,\n description: \"A GraphQL-formatted string representing the default value for this input value.\",\n\n resolve(inputValue) {\n const {\n type,\n defaultValue\n } = inputValue;\n const valueAST = astFromValue(defaultValue, type);\n return valueAST ? print(valueAST) : null;\n }\n\n },\n isDeprecated: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: field => field.deprecationReason != null\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: obj => obj.deprecationReason\n }\n })\n });\n\n const __EnumValue = new GraphQLObjectType({\n name: \"__EnumValue\",\n description: \"One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.\",\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: enumValue => enumValue.name\n },\n description: {\n type: GraphQLString,\n resolve: enumValue => enumValue.description\n },\n isDeprecated: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: enumValue => enumValue.deprecationReason != null\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: enumValue => enumValue.deprecationReason\n }\n })\n });\n\n let TypeKind;\n\n (function (TypeKind2) {\n TypeKind2[\"SCALAR\"] = \"SCALAR\";\n TypeKind2[\"OBJECT\"] = \"OBJECT\";\n TypeKind2[\"INTERFACE\"] = \"INTERFACE\";\n TypeKind2[\"UNION\"] = \"UNION\";\n TypeKind2[\"ENUM\"] = \"ENUM\";\n TypeKind2[\"INPUT_OBJECT\"] = \"INPUT_OBJECT\";\n TypeKind2[\"LIST\"] = \"LIST\";\n TypeKind2[\"NON_NULL\"] = \"NON_NULL\";\n })(TypeKind || (TypeKind = {}));\n\n const __TypeKind = new GraphQLEnumType({\n name: \"__TypeKind\",\n description: \"An enum describing what kind of type a given `__Type` is.\",\n values: {\n SCALAR: {\n value: TypeKind.SCALAR,\n description: \"Indicates this type is a scalar.\"\n },\n OBJECT: {\n value: TypeKind.OBJECT,\n description: \"Indicates this type is an object. `fields` and `interfaces` are valid fields.\"\n },\n INTERFACE: {\n value: TypeKind.INTERFACE,\n description: \"Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.\"\n },\n UNION: {\n value: TypeKind.UNION,\n description: \"Indicates this type is a union. `possibleTypes` is a valid field.\"\n },\n ENUM: {\n value: TypeKind.ENUM,\n description: \"Indicates this type is an enum. `enumValues` is a valid field.\"\n },\n INPUT_OBJECT: {\n value: TypeKind.INPUT_OBJECT,\n description: \"Indicates this type is an input object. `inputFields` is a valid field.\"\n },\n LIST: {\n value: TypeKind.LIST,\n description: \"Indicates this type is a list. `ofType` is a valid field.\"\n },\n NON_NULL: {\n value: TypeKind.NON_NULL,\n description: \"Indicates this type is a non-null. `ofType` is a valid field.\"\n }\n }\n });\n\n const SchemaMetaFieldDef = {\n name: \"__schema\",\n type: new GraphQLNonNull(__Schema),\n description: \"Access the current type schema of this server.\",\n args: [],\n resolve: (_source, _args, _context, _ref52) => {\n let {\n schema\n } = _ref52;\n return schema;\n },\n deprecationReason: void 0,\n extensions: /* @__PURE__ */Object.create(null),\n astNode: void 0\n };\n _exports.S = SchemaMetaFieldDef;\n const TypeMetaFieldDef = {\n name: \"__type\",\n type: __Type,\n description: \"Request the type information of a single type.\",\n args: [{\n name: \"name\",\n description: void 0,\n type: new GraphQLNonNull(GraphQLString),\n defaultValue: void 0,\n deprecationReason: void 0,\n extensions: /* @__PURE__ */Object.create(null),\n astNode: void 0\n }],\n resolve: (_source, _ref53, _context, _ref54) => {\n let {\n name\n } = _ref53;\n let {\n schema\n } = _ref54;\n return schema.getType(name);\n },\n deprecationReason: void 0,\n extensions: /* @__PURE__ */Object.create(null),\n astNode: void 0\n };\n _exports.T = TypeMetaFieldDef;\n const TypeNameMetaFieldDef = {\n name: \"__typename\",\n type: new GraphQLNonNull(GraphQLString),\n description: \"The name of the current Object type at runtime.\",\n args: [],\n resolve: (_source, _args, _context, _ref55) => {\n let {\n parentType\n } = _ref55;\n return parentType.name;\n },\n deprecationReason: void 0,\n extensions: /* @__PURE__ */Object.create(null),\n astNode: void 0\n };\n _exports.a = TypeNameMetaFieldDef;\n Object.freeze([__Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind]);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9pbnRyb3NwZWN0aW9uLmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9pbnRyb3NwZWN0aW9uLmVzLmpzPzZjNjgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmNvbnN0IE1BWF9BUlJBWV9MRU5HVEggPSAxMDtcbmNvbnN0IE1BWF9SRUNVUlNJVkVfREVQVEggPSAyO1xuZnVuY3Rpb24gaW5zcGVjdCh2YWx1ZSkge1xuICByZXR1cm4gZm9ybWF0VmFsdWUodmFsdWUsIFtdKTtcbn1cbl9fbmFtZShpbnNwZWN0LCBcImluc3BlY3RcIik7XG5mdW5jdGlvbiBmb3JtYXRWYWx1ZSh2YWx1ZSwgc2VlblZhbHVlcykge1xuICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICByZXR1cm4gdmFsdWUubmFtZSA/IGBbZnVuY3Rpb24gJHt2YWx1ZS5uYW1lfV1gIDogXCJbZnVuY3Rpb25dXCI7XG4gICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgcmV0dXJuIGZvcm1hdE9iamVjdFZhbHVlKHZhbHVlLCBzZWVuVmFsdWVzKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cbn1cbl9fbmFtZShmb3JtYXRWYWx1ZSwgXCJmb3JtYXRWYWx1ZVwiKTtcbmZ1bmN0aW9uIGZvcm1hdE9iamVjdFZhbHVlKHZhbHVlLCBwcmV2aW91c2x5U2VlblZhbHVlcykge1xuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gXCJudWxsXCI7XG4gIH1cbiAgaWYgKHByZXZpb3VzbHlTZWVuVmFsdWVzLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgIHJldHVybiBcIltDaXJjdWxhcl1cIjtcbiAgfVxuICBjb25zdCBzZWVuVmFsdWVzID0gWy4uLnByZXZpb3VzbHlTZWVuVmFsdWVzLCB2YWx1ZV07XG4gIGlmIChpc0pTT05hYmxlKHZhbHVlKSkge1xuICAgIGNvbnN0IGpzb25WYWx1ZSA9IHZhbHVlLnRvSlNPTigpO1xuICAgIGlmIChqc29uVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGpzb25WYWx1ZSA9PT0gXCJzdHJpbmdcIiA/IGpzb25WYWx1ZSA6IGZvcm1hdFZhbHVlKGpzb25WYWx1ZSwgc2VlblZhbHVlcyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZvcm1hdEFycmF5KHZhbHVlLCBzZWVuVmFsdWVzKTtcbiAgfVxuICByZXR1cm4gZm9ybWF0T2JqZWN0KHZhbHVlLCBzZWVuVmFsdWVzKTtcbn1cbl9fbmFtZShmb3JtYXRPYmplY3RWYWx1ZSwgXCJmb3JtYXRPYmplY3RWYWx1ZVwiKTtcbmZ1bmN0aW9uIGlzSlNPTmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZS50b0pTT04gPT09IFwiZnVuY3Rpb25cIjtcbn1cbl9fbmFtZShpc0pTT05hYmxlLCBcImlzSlNPTmFibGVcIik7XG5mdW5jdGlvbiBmb3JtYXRPYmplY3Qob2JqZWN0LCBzZWVuVmFsdWVzKSB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhvYmplY3QpO1xuICBpZiAoZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gXCJ7fVwiO1xuICB9XG4gIGlmIChzZWVuVmFsdWVzLmxlbmd0aCA+IE1BWF9SRUNVUlNJVkVfREVQVEgpIHtcbiAgICByZXR1cm4gXCJbXCIgKyBnZXRPYmplY3RUYWcob2JqZWN0KSArIFwiXVwiO1xuICB9XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBlbnRyaWVzLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBrZXkgKyBcIjogXCIgKyBmb3JtYXRWYWx1ZSh2YWx1ZSwgc2VlblZhbHVlcykpO1xuICByZXR1cm4gXCJ7IFwiICsgcHJvcGVydGllcy5qb2luKFwiLCBcIikgKyBcIiB9XCI7XG59XG5fX25hbWUoZm9ybWF0T2JqZWN0LCBcImZvcm1hdE9iamVjdFwiKTtcbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGFycmF5LCBzZWVuVmFsdWVzKSB7XG4gIGlmIChhcnJheS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gXCJbXVwiO1xuICB9XG4gIGlmIChzZWVuVmFsdWVzLmxlbmd0aCA+IE1BWF9SRUNVUlNJVkVfREVQVEgpIHtcbiAgICByZXR1cm4gXCJbQXJyYXldXCI7XG4gIH1cbiAgY29uc3QgbGVuID0gTWF0aC5taW4oTUFYX0FSUkFZX0xFTkdUSCwgYXJyYXkubGVuZ3RoKTtcbiAgY29uc3QgcmVtYWluaW5nID0gYXJyYXkubGVuZ3RoIC0gbGVuO1xuICBjb25zdCBpdGVtcyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaXRlbXMucHVzaChmb3JtYXRWYWx1ZShhcnJheVtpXSwgc2VlblZhbHVlcykpO1xuICB9XG4gIGlmIChyZW1haW5pbmcgPT09IDEpIHtcbiAgICBpdGVtcy5wdXNoKFwiLi4uIDEgbW9yZSBpdGVtXCIpO1xuICB9IGVsc2UgaWYgKHJlbWFpbmluZyA+IDEpIHtcbiAgICBpdGVtcy5wdXNoKGAuLi4gJHtyZW1haW5pbmd9IG1vcmUgaXRlbXNgKTtcbiAgfVxuICByZXR1cm4gXCJbXCIgKyBpdGVtcy5qb2luKFwiLCBcIikgKyBcIl1cIjtcbn1cbl9fbmFtZShmb3JtYXRBcnJheSwgXCJmb3JtYXRBcnJheVwiKTtcbmZ1bmN0aW9uIGdldE9iamVjdFRhZyhvYmplY3QpIHtcbiAgY29uc3QgdGFnID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkucmVwbGFjZSgvXlxcW29iamVjdCAvLCBcIlwiKS5yZXBsYWNlKC9dJC8sIFwiXCIpO1xuICBpZiAodGFnID09PSBcIk9iamVjdFwiICYmIHR5cGVvZiBvYmplY3QuY29uc3RydWN0b3IgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGNvbnN0IG5hbWUgPSBvYmplY3QuY29uc3RydWN0b3IubmFtZTtcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3RyaW5nXCIgJiYgbmFtZSAhPT0gXCJcIikge1xuICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuICB9XG4gIHJldHVybiB0YWc7XG59XG5fX25hbWUoZ2V0T2JqZWN0VGFnLCBcImdldE9iamVjdFRhZ1wiKTtcbmZ1bmN0aW9uIGludmFyaWFudChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgY29uc3QgYm9vbGVhbkNvbmRpdGlvbiA9IEJvb2xlYW4oY29uZGl0aW9uKTtcbiAgaWYgKCFib29sZWFuQ29uZGl0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgIT0gbnVsbCA/IG1lc3NhZ2UgOiBcIlVuZXhwZWN0ZWQgaW52YXJpYW50IHRyaWdnZXJlZC5cIik7XG4gIH1cbn1cbl9fbmFtZShpbnZhcmlhbnQsIFwiaW52YXJpYW50XCIpO1xubGV0IERpcmVjdGl2ZUxvY2F0aW9uO1xuKGZ1bmN0aW9uKERpcmVjdGl2ZUxvY2F0aW9uMikge1xuICBEaXJlY3RpdmVMb2NhdGlvbjJbXCJRVUVSWVwiXSA9IFwiUVVFUllcIjtcbiAgRGlyZWN0aXZlTG9jYXRpb24yW1wiTVVUQVRJT05cIl0gPSBcIk1VVEFUSU9OXCI7XG4gIERpcmVjdGl2ZUxvY2F0aW9uMltcIlNVQlNDUklQVElPTlwiXSA9IFwiU1VCU0NSSVBUSU9OXCI7XG4gIERpcmVjdGl2ZUxvY2F0aW9uMltcIkZJRUxEXCJdID0gXCJGSUVMRFwiO1xuICBEaXJlY3RpdmVMb2NhdGlvbjJbXCJGUkFHTUVOVF9ERUZJTklUSU9OXCJdID0gXCJGUkFHTUVOVF9ERUZJTklUSU9OXCI7XG4gIERpcmVjdGl2ZUxvY2F0aW9uMltcIkZSQUdNRU5UX1NQUkVBRFwiXSA9IFwiRlJBR01FTlRfU1BSRUFEXCI7XG4gIERpcmVjdGl2ZUxvY2F0aW9uMltcIklOTElORV9GUkFHTUVOVFwiXSA9IFwiSU5MSU5FX0ZSQUdNRU5UXCI7XG4gIERpcmVjdGl2ZUxvY2F0aW9uMltcIlZBUklBQkxFX0RFRklOSVRJT05cIl0gPSBcIlZBUklBQkxFX0RFRklOSVRJT05cIjtcbiAgRGlyZWN0aXZlTG9jYXRpb24yW1wiU0NIRU1BXCJdID0gXCJTQ0hFTUFcIjtcbiAgRGlyZWN0aXZlTG9jYXRpb24yW1wiU0NBTEFSXCJdID0gXCJTQ0FMQVJcIjtcbiAgRGlyZWN0aXZlTG9jYXRpb24yW1wiT0JKRUNUXCJdID0gXCJPQkpFQ1RcIjtcbiAgRGlyZWN0aXZlTG9jYXRpb24yW1wiRklFTERfREVGSU5JVElPTlwiXSA9IFwiRklFTERfREVGSU5JVElPTlwiO1xuICBEaXJlY3RpdmVMb2NhdGlvbjJbXCJBUkdVTUVOVF9ERUZJTklUSU9OXCJdID0gXCJBUkdVTUVOVF9ERUZJTklUSU9OXCI7XG4gIERpcmVjdGl2ZUxvY2F0aW9uMltcIklOVEVSRkFDRVwiXSA9IFwiSU5URVJGQUNFXCI7XG4gIERpcmVjdGl2ZUxvY2F0aW9uMltcIlVOSU9OXCJdID0gXCJVTklPTlwiO1xuICBEaXJlY3RpdmVMb2NhdGlvbjJbXCJFTlVNXCJdID0gXCJFTlVNXCI7XG4gIERpcmVjdGl2ZUxvY2F0aW9uMltcIkVOVU1fVkFMVUVcIl0gPSBcIkVOVU1fVkFMVUVcIjtcbiAgRGlyZWN0aXZlTG9jYXRpb24yW1wiSU5QVVRfT0JKRUNUXCJdID0gXCJJTlBVVF9PQkpFQ1RcIjtcbiAgRGlyZWN0aXZlTG9jYXRpb24yW1wiSU5QVVRfRklFTERfREVGSU5JVElPTlwiXSA9IFwiSU5QVVRfRklFTERfREVGSU5JVElPTlwiO1xufSkoRGlyZWN0aXZlTG9jYXRpb24gfHwgKERpcmVjdGl2ZUxvY2F0aW9uID0ge30pKTtcbmZ1bmN0aW9uIGlzV2hpdGVTcGFjZShjb2RlKSB7XG4gIHJldHVybiBjb2RlID09PSA5IHx8IGNvZGUgPT09IDMyO1xufVxuX19uYW1lKGlzV2hpdGVTcGFjZSwgXCJpc1doaXRlU3BhY2VcIik7XG5mdW5jdGlvbiBpc0RpZ2l0JDEoY29kZSkge1xuICByZXR1cm4gY29kZSA+PSA0OCAmJiBjb2RlIDw9IDU3O1xufVxuX19uYW1lKGlzRGlnaXQkMSwgXCJpc0RpZ2l0JDFcIik7XG5mdW5jdGlvbiBpc0xldHRlcihjb2RlKSB7XG4gIHJldHVybiBjb2RlID49IDk3ICYmIGNvZGUgPD0gMTIyIHx8IGNvZGUgPj0gNjUgJiYgY29kZSA8PSA5MDtcbn1cbl9fbmFtZShpc0xldHRlciwgXCJpc0xldHRlclwiKTtcbmZ1bmN0aW9uIGlzTmFtZVN0YXJ0KGNvZGUpIHtcbiAgcmV0dXJuIGlzTGV0dGVyKGNvZGUpIHx8IGNvZGUgPT09IDk1O1xufVxuX19uYW1lKGlzTmFtZVN0YXJ0LCBcImlzTmFtZVN0YXJ0XCIpO1xuZnVuY3Rpb24gaXNOYW1lQ29udGludWUoY29kZSkge1xuICByZXR1cm4gaXNMZXR0ZXIoY29kZSkgfHwgaXNEaWdpdCQxKGNvZGUpIHx8IGNvZGUgPT09IDk1O1xufVxuX19uYW1lKGlzTmFtZUNvbnRpbnVlLCBcImlzTmFtZUNvbnRpbnVlXCIpO1xuZnVuY3Rpb24gcHJpbnRCbG9ja1N0cmluZyh2YWx1ZSwgb3B0aW9ucykge1xuICBjb25zdCBlc2NhcGVkVmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9cIlwiXCIvZywgJ1xcXFxcIlwiXCInKTtcbiAgY29uc3QgbGluZXMgPSBlc2NhcGVkVmFsdWUuc3BsaXQoL1xcclxcbnxbXFxuXFxyXS9nKTtcbiAgY29uc3QgaXNTaW5nbGVMaW5lID0gbGluZXMubGVuZ3RoID09PSAxO1xuICBjb25zdCBmb3JjZUxlYWRpbmdOZXdMaW5lID0gbGluZXMubGVuZ3RoID4gMSAmJiBsaW5lcy5zbGljZSgxKS5ldmVyeSgobGluZSkgPT4gbGluZS5sZW5ndGggPT09IDAgfHwgaXNXaGl0ZVNwYWNlKGxpbmUuY2hhckNvZGVBdCgwKSkpO1xuICBjb25zdCBoYXNUcmFpbGluZ1RyaXBsZVF1b3RlcyA9IGVzY2FwZWRWYWx1ZS5lbmRzV2l0aCgnXFxcXFwiXCJcIicpO1xuICBjb25zdCBoYXNUcmFpbGluZ1F1b3RlID0gdmFsdWUuZW5kc1dpdGgoJ1wiJykgJiYgIWhhc1RyYWlsaW5nVHJpcGxlUXVvdGVzO1xuICBjb25zdCBoYXNUcmFpbGluZ1NsYXNoID0gdmFsdWUuZW5kc1dpdGgoXCJcXFxcXCIpO1xuICBjb25zdCBmb3JjZVRyYWlsaW5nTmV3bGluZSA9IGhhc1RyYWlsaW5nUXVvdGUgfHwgaGFzVHJhaWxpbmdTbGFzaDtcbiAgY29uc3QgcHJpbnRBc011bHRpcGxlTGluZXMgPSAhKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMubWluaW1pemUpICYmICghaXNTaW5nbGVMaW5lIHx8IHZhbHVlLmxlbmd0aCA+IDcwIHx8IGZvcmNlVHJhaWxpbmdOZXdsaW5lIHx8IGZvcmNlTGVhZGluZ05ld0xpbmUgfHwgaGFzVHJhaWxpbmdUcmlwbGVRdW90ZXMpO1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgY29uc3Qgc2tpcExlYWRpbmdOZXdMaW5lID0gaXNTaW5nbGVMaW5lICYmIGlzV2hpdGVTcGFjZSh2YWx1ZS5jaGFyQ29kZUF0KDApKTtcbiAgaWYgKHByaW50QXNNdWx0aXBsZUxpbmVzICYmICFza2lwTGVhZGluZ05ld0xpbmUgfHwgZm9yY2VMZWFkaW5nTmV3TGluZSkge1xuICAgIHJlc3VsdCArPSBcIlxcblwiO1xuICB9XG4gIHJlc3VsdCArPSBlc2NhcGVkVmFsdWU7XG4gIGlmIChwcmludEFzTXVsdGlwbGVMaW5lcyB8fCBmb3JjZVRyYWlsaW5nTmV3bGluZSkge1xuICAgIHJlc3VsdCArPSBcIlxcblwiO1xuICB9XG4gIHJldHVybiAnXCJcIlwiJyArIHJlc3VsdCArICdcIlwiXCInO1xufVxuX19uYW1lKHByaW50QmxvY2tTdHJpbmcsIFwicHJpbnRCbG9ja1N0cmluZ1wiKTtcbmZ1bmN0aW9uIHByaW50U3RyaW5nKHN0cikge1xuICByZXR1cm4gYFwiJHtzdHIucmVwbGFjZShlc2NhcGVkUmVnRXhwLCBlc2NhcGVkUmVwbGFjZXIpfVwiYDtcbn1cbl9fbmFtZShwcmludFN0cmluZywgXCJwcmludFN0cmluZ1wiKTtcbmNvbnN0IGVzY2FwZWRSZWdFeHAgPSAvW1xceDAwLVxceDFmXFx4MjJcXHg1Y1xceDdmLVxceDlmXS9nO1xuZnVuY3Rpb24gZXNjYXBlZFJlcGxhY2VyKHN0cikge1xuICByZXR1cm4gZXNjYXBlU2VxdWVuY2VzW3N0ci5jaGFyQ29kZUF0KDApXTtcbn1cbl9fbmFtZShlc2NhcGVkUmVwbGFjZXIsIFwiZXNjYXBlZFJlcGxhY2VyXCIpO1xuY29uc3QgZXNjYXBlU2VxdWVuY2VzID0gW1xuICBcIlxcXFx1MDAwMFwiLFxuICBcIlxcXFx1MDAwMVwiLFxuICBcIlxcXFx1MDAwMlwiLFxuICBcIlxcXFx1MDAwM1wiLFxuICBcIlxcXFx1MDAwNFwiLFxuICBcIlxcXFx1MDAwNVwiLFxuICBcIlxcXFx1MDAwNlwiLFxuICBcIlxcXFx1MDAwN1wiLFxuICBcIlxcXFxiXCIsXG4gIFwiXFxcXHRcIixcbiAgXCJcXFxcblwiLFxuICBcIlxcXFx1MDAwQlwiLFxuICBcIlxcXFxmXCIsXG4gIFwiXFxcXHJcIixcbiAgXCJcXFxcdTAwMEVcIixcbiAgXCJcXFxcdTAwMEZcIixcbiAgXCJcXFxcdTAwMTBcIixcbiAgXCJcXFxcdTAwMTFcIixcbiAgXCJcXFxcdTAwMTJcIixcbiAgXCJcXFxcdTAwMTNcIixcbiAgXCJcXFxcdTAwMTRcIixcbiAgXCJcXFxcdTAwMTVcIixcbiAgXCJcXFxcdTAwMTZcIixcbiAgXCJcXFxcdTAwMTdcIixcbiAgXCJcXFxcdTAwMThcIixcbiAgXCJcXFxcdTAwMTlcIixcbiAgXCJcXFxcdTAwMUFcIixcbiAgXCJcXFxcdTAwMUJcIixcbiAgXCJcXFxcdTAwMUNcIixcbiAgXCJcXFxcdTAwMURcIixcbiAgXCJcXFxcdTAwMUVcIixcbiAgXCJcXFxcdTAwMUZcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgJ1xcXFxcIicsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXCIsXG4gIFwiXFxcXFxcXFxcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcIixcbiAgXCJcXFxcdTAwN0ZcIixcbiAgXCJcXFxcdTAwODBcIixcbiAgXCJcXFxcdTAwODFcIixcbiAgXCJcXFxcdTAwODJcIixcbiAgXCJcXFxcdTAwODNcIixcbiAgXCJcXFxcdTAwODRcIixcbiAgXCJcXFxcdTAwODVcIixcbiAgXCJcXFxcdTAwODZcIixcbiAgXCJcXFxcdTAwODdcIixcbiAgXCJcXFxcdTAwODhcIixcbiAgXCJcXFxcdTAwODlcIixcbiAgXCJcXFxcdTAwOEFcIixcbiAgXCJcXFxcdTAwOEJcIixcbiAgXCJcXFxcdTAwOENcIixcbiAgXCJcXFxcdTAwOERcIixcbiAgXCJcXFxcdTAwOEVcIixcbiAgXCJcXFxcdTAwOEZcIixcbiAgXCJcXFxcdTAwOTBcIixcbiAgXCJcXFxcdTAwOTFcIixcbiAgXCJcXFxcdTAwOTJcIixcbiAgXCJcXFxcdTAwOTNcIixcbiAgXCJcXFxcdTAwOTRcIixcbiAgXCJcXFxcdTAwOTVcIixcbiAgXCJcXFxcdTAwOTZcIixcbiAgXCJcXFxcdTAwOTdcIixcbiAgXCJcXFxcdTAwOThcIixcbiAgXCJcXFxcdTAwOTlcIixcbiAgXCJcXFxcdTAwOUFcIixcbiAgXCJcXFxcdTAwOUJcIixcbiAgXCJcXFxcdTAwOUNcIixcbiAgXCJcXFxcdTAwOURcIixcbiAgXCJcXFxcdTAwOUVcIixcbiAgXCJcXFxcdTAwOUZcIlxuXTtcbmZ1bmN0aW9uIGRldkFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgY29uc3QgYm9vbGVhbkNvbmRpdGlvbiA9IEJvb2xlYW4oY29uZGl0aW9uKTtcbiAgaWYgKCFib29sZWFuQ29uZGl0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICB9XG59XG5fX25hbWUoZGV2QXNzZXJ0LCBcImRldkFzc2VydFwiKTtcbmNvbnN0IFF1ZXJ5RG9jdW1lbnRLZXlzID0ge1xuICBOYW1lOiBbXSxcbiAgRG9jdW1lbnQ6IFtcImRlZmluaXRpb25zXCJdLFxuICBPcGVyYXRpb25EZWZpbml0aW9uOiBbXG4gICAgXCJuYW1lXCIsXG4gICAgXCJ2YXJpYWJsZURlZmluaXRpb25zXCIsXG4gICAgXCJkaXJlY3RpdmVzXCIsXG4gICAgXCJzZWxlY3Rpb25TZXRcIlxuICBdLFxuICBWYXJpYWJsZURlZmluaXRpb246IFtcInZhcmlhYmxlXCIsIFwidHlwZVwiLCBcImRlZmF1bHRWYWx1ZVwiLCBcImRpcmVjdGl2ZXNcIl0sXG4gIFZhcmlhYmxlOiBbXCJuYW1lXCJdLFxuICBTZWxlY3Rpb25TZXQ6IFtcInNlbGVjdGlvbnNcIl0sXG4gIEZpZWxkOiBbXCJhbGlhc1wiLCBcIm5hbWVcIiwgXCJhcmd1bWVudHNcIiwgXCJkaXJlY3RpdmVzXCIsIFwic2VsZWN0aW9uU2V0XCJdLFxuICBBcmd1bWVudDogW1wibmFtZVwiLCBcInZhbHVlXCJdLFxuICBGcmFnbWVudFNwcmVhZDogW1wibmFtZVwiLCBcImRpcmVjdGl2ZXNcIl0sXG4gIElubGluZUZyYWdtZW50OiBbXCJ0eXBlQ29uZGl0aW9uXCIsIFwiZGlyZWN0aXZlc1wiLCBcInNlbGVjdGlvblNldFwiXSxcbiAgRnJhZ21lbnREZWZpbml0aW9uOiBbXG4gICAgXCJuYW1lXCIsXG4gICAgXCJ2YXJpYWJsZURlZmluaXRpb25zXCIsXG4gICAgXCJ0eXBlQ29uZGl0aW9uXCIsXG4gICAgXCJkaXJlY3RpdmVzXCIsXG4gICAgXCJzZWxlY3Rpb25TZXRcIlxuICBdLFxuICBJbnRWYWx1ZTogW10sXG4gIEZsb2F0VmFsdWU6IFtdLFxuICBTdHJpbmdWYWx1ZTogW10sXG4gIEJvb2xlYW5WYWx1ZTogW10sXG4gIE51bGxWYWx1ZTogW10sXG4gIEVudW1WYWx1ZTogW10sXG4gIExpc3RWYWx1ZTogW1widmFsdWVzXCJdLFxuICBPYmplY3RWYWx1ZTogW1wiZmllbGRzXCJdLFxuICBPYmplY3RGaWVsZDogW1wibmFtZVwiLCBcInZhbHVlXCJdLFxuICBEaXJlY3RpdmU6IFtcIm5hbWVcIiwgXCJhcmd1bWVudHNcIl0sXG4gIE5hbWVkVHlwZTogW1wibmFtZVwiXSxcbiAgTGlzdFR5cGU6IFtcInR5cGVcIl0sXG4gIE5vbk51bGxUeXBlOiBbXCJ0eXBlXCJdLFxuICBTY2hlbWFEZWZpbml0aW9uOiBbXCJkZXNjcmlwdGlvblwiLCBcImRpcmVjdGl2ZXNcIiwgXCJvcGVyYXRpb25UeXBlc1wiXSxcbiAgT3BlcmF0aW9uVHlwZURlZmluaXRpb246IFtcInR5cGVcIl0sXG4gIFNjYWxhclR5cGVEZWZpbml0aW9uOiBbXCJkZXNjcmlwdGlvblwiLCBcIm5hbWVcIiwgXCJkaXJlY3RpdmVzXCJdLFxuICBPYmplY3RUeXBlRGVmaW5pdGlvbjogW1xuICAgIFwiZGVzY3JpcHRpb25cIixcbiAgICBcIm5hbWVcIixcbiAgICBcImludGVyZmFjZXNcIixcbiAgICBcImRpcmVjdGl2ZXNcIixcbiAgICBcImZpZWxkc1wiXG4gIF0sXG4gIEZpZWxkRGVmaW5pdGlvbjogW1wiZGVzY3JpcHRpb25cIiwgXCJuYW1lXCIsIFwiYXJndW1lbnRzXCIsIFwidHlwZVwiLCBcImRpcmVjdGl2ZXNcIl0sXG4gIElucHV0VmFsdWVEZWZpbml0aW9uOiBbXG4gICAgXCJkZXNjcmlwdGlvblwiLFxuICAgIFwibmFtZVwiLFxuICAgIFwidHlwZVwiLFxuICAgIFwiZGVmYXVsdFZhbHVlXCIsXG4gICAgXCJkaXJlY3RpdmVzXCJcbiAgXSxcbiAgSW50ZXJmYWNlVHlwZURlZmluaXRpb246IFtcbiAgICBcImRlc2NyaXB0aW9uXCIsXG4gICAgXCJuYW1lXCIsXG4gICAgXCJpbnRlcmZhY2VzXCIsXG4gICAgXCJkaXJlY3RpdmVzXCIsXG4gICAgXCJmaWVsZHNcIlxuICBdLFxuICBVbmlvblR5cGVEZWZpbml0aW9uOiBbXCJkZXNjcmlwdGlvblwiLCBcIm5hbWVcIiwgXCJkaXJlY3RpdmVzXCIsIFwidHlwZXNcIl0sXG4gIEVudW1UeXBlRGVmaW5pdGlvbjogW1wiZGVzY3JpcHRpb25cIiwgXCJuYW1lXCIsIFwiZGlyZWN0aXZlc1wiLCBcInZhbHVlc1wiXSxcbiAgRW51bVZhbHVlRGVmaW5pdGlvbjogW1wiZGVzY3JpcHRpb25cIiwgXCJuYW1lXCIsIFwiZGlyZWN0aXZlc1wiXSxcbiAgSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvbjogW1wiZGVzY3JpcHRpb25cIiwgXCJuYW1lXCIsIFwiZGlyZWN0aXZlc1wiLCBcImZpZWxkc1wiXSxcbiAgRGlyZWN0aXZlRGVmaW5pdGlvbjogW1wiZGVzY3JpcHRpb25cIiwgXCJuYW1lXCIsIFwiYXJndW1lbnRzXCIsIFwibG9jYXRpb25zXCJdLFxuICBTY2hlbWFFeHRlbnNpb246IFtcImRpcmVjdGl2ZXNcIiwgXCJvcGVyYXRpb25UeXBlc1wiXSxcbiAgU2NhbGFyVHlwZUV4dGVuc2lvbjogW1wibmFtZVwiLCBcImRpcmVjdGl2ZXNcIl0sXG4gIE9iamVjdFR5cGVFeHRlbnNpb246IFtcIm5hbWVcIiwgXCJpbnRlcmZhY2VzXCIsIFwiZGlyZWN0aXZlc1wiLCBcImZpZWxkc1wiXSxcbiAgSW50ZXJmYWNlVHlwZUV4dGVuc2lvbjogW1wibmFtZVwiLCBcImludGVyZmFjZXNcIiwgXCJkaXJlY3RpdmVzXCIsIFwiZmllbGRzXCJdLFxuICBVbmlvblR5cGVFeHRlbnNpb246IFtcIm5hbWVcIiwgXCJkaXJlY3RpdmVzXCIsIFwidHlwZXNcIl0sXG4gIEVudW1UeXBlRXh0ZW5zaW9uOiBbXCJuYW1lXCIsIFwiZGlyZWN0aXZlc1wiLCBcInZhbHVlc1wiXSxcbiAgSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uOiBbXCJuYW1lXCIsIFwiZGlyZWN0aXZlc1wiLCBcImZpZWxkc1wiXVxufTtcbmNvbnN0IGtpbmRWYWx1ZXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKFF1ZXJ5RG9jdW1lbnRLZXlzKSk7XG5mdW5jdGlvbiBpc05vZGUobWF5YmVOb2RlKSB7XG4gIGNvbnN0IG1heWJlS2luZCA9IG1heWJlTm9kZSA9PT0gbnVsbCB8fCBtYXliZU5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1heWJlTm9kZS5raW5kO1xuICByZXR1cm4gdHlwZW9mIG1heWJlS2luZCA9PT0gXCJzdHJpbmdcIiAmJiBraW5kVmFsdWVzLmhhcyhtYXliZUtpbmQpO1xufVxuX19uYW1lKGlzTm9kZSwgXCJpc05vZGVcIik7XG5sZXQgT3BlcmF0aW9uVHlwZU5vZGU7XG4oZnVuY3Rpb24oT3BlcmF0aW9uVHlwZU5vZGUyKSB7XG4gIE9wZXJhdGlvblR5cGVOb2RlMltcIlFVRVJZXCJdID0gXCJxdWVyeVwiO1xuICBPcGVyYXRpb25UeXBlTm9kZTJbXCJNVVRBVElPTlwiXSA9IFwibXV0YXRpb25cIjtcbiAgT3BlcmF0aW9uVHlwZU5vZGUyW1wiU1VCU0NSSVBUSU9OXCJdID0gXCJzdWJzY3JpcHRpb25cIjtcbn0pKE9wZXJhdGlvblR5cGVOb2RlIHx8IChPcGVyYXRpb25UeXBlTm9kZSA9IHt9KSk7XG5sZXQgS2luZDtcbihmdW5jdGlvbihLaW5kMikge1xuICBLaW5kMltcIk5BTUVcIl0gPSBcIk5hbWVcIjtcbiAgS2luZDJbXCJET0NVTUVOVFwiXSA9IFwiRG9jdW1lbnRcIjtcbiAgS2luZDJbXCJPUEVSQVRJT05fREVGSU5JVElPTlwiXSA9IFwiT3BlcmF0aW9uRGVmaW5pdGlvblwiO1xuICBLaW5kMltcIlZBUklBQkxFX0RFRklOSVRJT05cIl0gPSBcIlZhcmlhYmxlRGVmaW5pdGlvblwiO1xuICBLaW5kMltcIlNFTEVDVElPTl9TRVRcIl0gPSBcIlNlbGVjdGlvblNldFwiO1xuICBLaW5kMltcIkZJRUxEXCJdID0gXCJGaWVsZFwiO1xuICBLaW5kMltcIkFSR1VNRU5UXCJdID0gXCJBcmd1bWVudFwiO1xuICBLaW5kMltcIkZSQUdNRU5UX1NQUkVBRFwiXSA9IFwiRnJhZ21lbnRTcHJlYWRcIjtcbiAgS2luZDJbXCJJTkxJTkVfRlJBR01FTlRcIl0gPSBcIklubGluZUZyYWdtZW50XCI7XG4gIEtpbmQyW1wiRlJBR01FTlRfREVGSU5JVElPTlwiXSA9IFwiRnJhZ21lbnREZWZpbml0aW9uXCI7XG4gIEtpbmQyW1wiVkFSSUFCTEVcIl0gPSBcIlZhcmlhYmxlXCI7XG4gIEtpbmQyW1wiSU5UXCJdID0gXCJJbnRWYWx1ZVwiO1xuICBLaW5kMltcIkZMT0FUXCJdID0gXCJGbG9hdFZhbHVlXCI7XG4gIEtpbmQyW1wiU1RSSU5HXCJdID0gXCJTdHJpbmdWYWx1ZVwiO1xuICBLaW5kMltcIkJPT0xFQU5cIl0gPSBcIkJvb2xlYW5WYWx1ZVwiO1xuICBLaW5kMltcIk5VTExcIl0gPSBcIk51bGxWYWx1ZVwiO1xuICBLaW5kMltcIkVOVU1cIl0gPSBcIkVudW1WYWx1ZVwiO1xuICBLaW5kMltcIkxJU1RcIl0gPSBcIkxpc3RWYWx1ZVwiO1xuICBLaW5kMltcIk9CSkVDVFwiXSA9IFwiT2JqZWN0VmFsdWVcIjtcbiAgS2luZDJbXCJPQkpFQ1RfRklFTERcIl0gPSBcIk9iamVjdEZpZWxkXCI7XG4gIEtpbmQyW1wiRElSRUNUSVZFXCJdID0gXCJEaXJlY3RpdmVcIjtcbiAgS2luZDJbXCJOQU1FRF9UWVBFXCJdID0gXCJOYW1lZFR5cGVcIjtcbiAgS2luZDJbXCJMSVNUX1RZUEVcIl0gPSBcIkxpc3RUeXBlXCI7XG4gIEtpbmQyW1wiTk9OX05VTExfVFlQRVwiXSA9IFwiTm9uTnVsbFR5cGVcIjtcbiAgS2luZDJbXCJTQ0hFTUFfREVGSU5JVElPTlwiXSA9IFwiU2NoZW1hRGVmaW5pdGlvblwiO1xuICBLaW5kMltcIk9QRVJBVElPTl9UWVBFX0RFRklOSVRJT05cIl0gPSBcIk9wZXJhdGlvblR5cGVEZWZpbml0aW9uXCI7XG4gIEtpbmQyW1wiU0NBTEFSX1RZUEVfREVGSU5JVElPTlwiXSA9IFwiU2NhbGFyVHlwZURlZmluaXRpb25cIjtcbiAgS2luZDJbXCJPQkpFQ1RfVFlQRV9ERUZJTklUSU9OXCJdID0gXCJPYmplY3RUeXBlRGVmaW5pdGlvblwiO1xuICBLaW5kMltcIkZJRUxEX0RFRklOSVRJT05cIl0gPSBcIkZpZWxkRGVmaW5pdGlvblwiO1xuICBLaW5kMltcIklOUFVUX1ZBTFVFX0RFRklOSVRJT05cIl0gPSBcIklucHV0VmFsdWVEZWZpbml0aW9uXCI7XG4gIEtpbmQyW1wiSU5URVJGQUNFX1RZUEVfREVGSU5JVElPTlwiXSA9IFwiSW50ZXJmYWNlVHlwZURlZmluaXRpb25cIjtcbiAgS2luZDJbXCJVTklPTl9UWVBFX0RFRklOSVRJT05cIl0gPSBcIlVuaW9uVHlwZURlZmluaXRpb25cIjtcbiAgS2luZDJbXCJFTlVNX1RZUEVfREVGSU5JVElPTlwiXSA9IFwiRW51bVR5cGVEZWZpbml0aW9uXCI7XG4gIEtpbmQyW1wiRU5VTV9WQUxVRV9ERUZJTklUSU9OXCJdID0gXCJFbnVtVmFsdWVEZWZpbml0aW9uXCI7XG4gIEtpbmQyW1wiSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTlwiXSA9IFwiSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvblwiO1xuICBLaW5kMltcIkRJUkVDVElWRV9ERUZJTklUSU9OXCJdID0gXCJEaXJlY3RpdmVEZWZpbml0aW9uXCI7XG4gIEtpbmQyW1wiU0NIRU1BX0VYVEVOU0lPTlwiXSA9IFwiU2NoZW1hRXh0ZW5zaW9uXCI7XG4gIEtpbmQyW1wiU0NBTEFSX1RZUEVfRVhURU5TSU9OXCJdID0gXCJTY2FsYXJUeXBlRXh0ZW5zaW9uXCI7XG4gIEtpbmQyW1wiT0JKRUNUX1RZUEVfRVhURU5TSU9OXCJdID0gXCJPYmplY3RUeXBlRXh0ZW5zaW9uXCI7XG4gIEtpbmQyW1wiSU5URVJGQUNFX1RZUEVfRVhURU5TSU9OXCJdID0gXCJJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uXCI7XG4gIEtpbmQyW1wiVU5JT05fVFlQRV9FWFRFTlNJT05cIl0gPSBcIlVuaW9uVHlwZUV4dGVuc2lvblwiO1xuICBLaW5kMltcIkVOVU1fVFlQRV9FWFRFTlNJT05cIl0gPSBcIkVudW1UeXBlRXh0ZW5zaW9uXCI7XG4gIEtpbmQyW1wiSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OXCJdID0gXCJJbnB1dE9iamVjdFR5cGVFeHRlbnNpb25cIjtcbn0pKEtpbmQgfHwgKEtpbmQgPSB7fSkpO1xuY29uc3QgQlJFQUsgPSBPYmplY3QuZnJlZXplKHt9KTtcbmZ1bmN0aW9uIHZpc2l0KHJvb3QsIHZpc2l0b3IsIHZpc2l0b3JLZXlzID0gUXVlcnlEb2N1bWVudEtleXMpIHtcbiAgY29uc3QgZW50ZXJMZWF2ZU1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGZvciAoY29uc3Qga2luZCBvZiBPYmplY3QudmFsdWVzKEtpbmQpKSB7XG4gICAgZW50ZXJMZWF2ZU1hcC5zZXQoa2luZCwgZ2V0RW50ZXJMZWF2ZUZvcktpbmQodmlzaXRvciwga2luZCkpO1xuICB9XG4gIGxldCBzdGFjayA9IHZvaWQgMDtcbiAgbGV0IGluQXJyYXkgPSBBcnJheS5pc0FycmF5KHJvb3QpO1xuICBsZXQga2V5cyA9IFtyb290XTtcbiAgbGV0IGluZGV4ID0gLTE7XG4gIGxldCBlZGl0cyA9IFtdO1xuICBsZXQgbm9kZSA9IHJvb3Q7XG4gIGxldCBrZXkgPSB2b2lkIDA7XG4gIGxldCBwYXJlbnQgPSB2b2lkIDA7XG4gIGNvbnN0IHBhdGggPSBbXTtcbiAgY29uc3QgYW5jZXN0b3JzID0gW107XG4gIGRvIHtcbiAgICBpbmRleCsrO1xuICAgIGNvbnN0IGlzTGVhdmluZyA9IGluZGV4ID09PSBrZXlzLmxlbmd0aDtcbiAgICBjb25zdCBpc0VkaXRlZCA9IGlzTGVhdmluZyAmJiBlZGl0cy5sZW5ndGggIT09IDA7XG4gICAgaWYgKGlzTGVhdmluZykge1xuICAgICAga2V5ID0gYW5jZXN0b3JzLmxlbmd0aCA9PT0gMCA/IHZvaWQgMCA6IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcbiAgICAgIG5vZGUgPSBwYXJlbnQ7XG4gICAgICBwYXJlbnQgPSBhbmNlc3RvcnMucG9wKCk7XG4gICAgICBpZiAoaXNFZGl0ZWQpIHtcbiAgICAgICAgaWYgKGluQXJyYXkpIHtcbiAgICAgICAgICBub2RlID0gbm9kZS5zbGljZSgpO1xuICAgICAgICAgIGxldCBlZGl0T2Zmc2V0ID0gMDtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtlZGl0S2V5LCBlZGl0VmFsdWVdIG9mIGVkaXRzKSB7XG4gICAgICAgICAgICBjb25zdCBhcnJheUtleSA9IGVkaXRLZXkgLSBlZGl0T2Zmc2V0O1xuICAgICAgICAgICAgaWYgKGVkaXRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICBub2RlLnNwbGljZShhcnJheUtleSwgMSk7XG4gICAgICAgICAgICAgIGVkaXRPZmZzZXQrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5vZGVbYXJyYXlLZXldID0gZWRpdFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG5vZGUpKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtlZGl0S2V5LCBlZGl0VmFsdWVdIG9mIGVkaXRzKSB7XG4gICAgICAgICAgICBub2RlW2VkaXRLZXldID0gZWRpdFZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW5kZXggPSBzdGFjay5pbmRleDtcbiAgICAgIGtleXMgPSBzdGFjay5rZXlzO1xuICAgICAgZWRpdHMgPSBzdGFjay5lZGl0cztcbiAgICAgIGluQXJyYXkgPSBzdGFjay5pbkFycmF5O1xuICAgICAgc3RhY2sgPSBzdGFjay5wcmV2O1xuICAgIH0gZWxzZSBpZiAocGFyZW50KSB7XG4gICAgICBrZXkgPSBpbkFycmF5ID8gaW5kZXggOiBrZXlzW2luZGV4XTtcbiAgICAgIG5vZGUgPSBwYXJlbnRba2V5XTtcbiAgICAgIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHZvaWQgMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHBhdGgucHVzaChrZXkpO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0O1xuICAgIGlmICghQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgICAgdmFyIF9lbnRlckxlYXZlTWFwJGdldCwgX2VudGVyTGVhdmVNYXAkZ2V0MjtcbiAgICAgIGlzTm9kZShub2RlKSB8fCBkZXZBc3NlcnQoZmFsc2UsIGBJbnZhbGlkIEFTVCBOb2RlOiAke2luc3BlY3Qobm9kZSl9LmApO1xuICAgICAgY29uc3QgdmlzaXRGbiA9IGlzTGVhdmluZyA/IChfZW50ZXJMZWF2ZU1hcCRnZXQgPSBlbnRlckxlYXZlTWFwLmdldChub2RlLmtpbmQpKSA9PT0gbnVsbCB8fCBfZW50ZXJMZWF2ZU1hcCRnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lbnRlckxlYXZlTWFwJGdldC5sZWF2ZSA6IChfZW50ZXJMZWF2ZU1hcCRnZXQyID0gZW50ZXJMZWF2ZU1hcC5nZXQobm9kZS5raW5kKSkgPT09IG51bGwgfHwgX2VudGVyTGVhdmVNYXAkZ2V0MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2VudGVyTGVhdmVNYXAkZ2V0Mi5lbnRlcjtcbiAgICAgIHJlc3VsdCA9IHZpc2l0Rm4gPT09IG51bGwgfHwgdmlzaXRGbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmlzaXRGbi5jYWxsKHZpc2l0b3IsIG5vZGUsIGtleSwgcGFyZW50LCBwYXRoLCBhbmNlc3RvcnMpO1xuICAgICAgaWYgKHJlc3VsdCA9PT0gQlJFQUspIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoIWlzTGVhdmluZykge1xuICAgICAgICAgIHBhdGgucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0ICE9PSB2b2lkIDApIHtcbiAgICAgICAgZWRpdHMucHVzaChba2V5LCByZXN1bHRdKTtcbiAgICAgICAgaWYgKCFpc0xlYXZpbmcpIHtcbiAgICAgICAgICBpZiAoaXNOb2RlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIG5vZGUgPSByZXN1bHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhdGgucG9wKCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJlc3VsdCA9PT0gdm9pZCAwICYmIGlzRWRpdGVkKSB7XG4gICAgICBlZGl0cy5wdXNoKFtrZXksIG5vZGVdKTtcbiAgICB9XG4gICAgaWYgKGlzTGVhdmluZykge1xuICAgICAgcGF0aC5wb3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9ub2RlJGtpbmQ7XG4gICAgICBzdGFjayA9IHtcbiAgICAgICAgaW5BcnJheSxcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIGtleXMsXG4gICAgICAgIGVkaXRzLFxuICAgICAgICBwcmV2OiBzdGFja1xuICAgICAgfTtcbiAgICAgIGluQXJyYXkgPSBBcnJheS5pc0FycmF5KG5vZGUpO1xuICAgICAga2V5cyA9IGluQXJyYXkgPyBub2RlIDogKF9ub2RlJGtpbmQgPSB2aXNpdG9yS2V5c1tub2RlLmtpbmRdKSAhPT0gbnVsbCAmJiBfbm9kZSRraW5kICE9PSB2b2lkIDAgPyBfbm9kZSRraW5kIDogW107XG4gICAgICBpbmRleCA9IC0xO1xuICAgICAgZWRpdHMgPSBbXTtcbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgYW5jZXN0b3JzLnB1c2gocGFyZW50KTtcbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IG5vZGU7XG4gICAgfVxuICB9IHdoaWxlIChzdGFjayAhPT0gdm9pZCAwKTtcbiAgaWYgKGVkaXRzLmxlbmd0aCAhPT0gMCkge1xuICAgIHJldHVybiBlZGl0c1tlZGl0cy5sZW5ndGggLSAxXVsxXTtcbiAgfVxuICByZXR1cm4gcm9vdDtcbn1cbl9fbmFtZSh2aXNpdCwgXCJ2aXNpdFwiKTtcbmZ1bmN0aW9uIGdldEVudGVyTGVhdmVGb3JLaW5kKHZpc2l0b3IsIGtpbmQpIHtcbiAgY29uc3Qga2luZFZpc2l0b3IgPSB2aXNpdG9yW2tpbmRdO1xuICBpZiAodHlwZW9mIGtpbmRWaXNpdG9yID09PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGtpbmRWaXNpdG9yO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBraW5kVmlzaXRvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudGVyOiBraW5kVmlzaXRvcixcbiAgICAgIGxlYXZlOiB2b2lkIDBcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgZW50ZXI6IHZpc2l0b3IuZW50ZXIsXG4gICAgbGVhdmU6IHZpc2l0b3IubGVhdmVcbiAgfTtcbn1cbl9fbmFtZShnZXRFbnRlckxlYXZlRm9yS2luZCwgXCJnZXRFbnRlckxlYXZlRm9yS2luZFwiKTtcbmZ1bmN0aW9uIHByaW50KGFzdCkge1xuICByZXR1cm4gdmlzaXQoYXN0LCBwcmludERvY0FTVFJlZHVjZXIpO1xufVxuX19uYW1lKHByaW50LCBcInByaW50XCIpO1xuY29uc3QgTUFYX0xJTkVfTEVOR1RIID0gODA7XG5jb25zdCBwcmludERvY0FTVFJlZHVjZXIgPSB7XG4gIE5hbWU6IHtcbiAgICBsZWF2ZTogKG5vZGUpID0+IG5vZGUudmFsdWVcbiAgfSxcbiAgVmFyaWFibGU6IHtcbiAgICBsZWF2ZTogKG5vZGUpID0+IFwiJFwiICsgbm9kZS5uYW1lXG4gIH0sXG4gIERvY3VtZW50OiB7XG4gICAgbGVhdmU6IChub2RlKSA9PiBqb2luKG5vZGUuZGVmaW5pdGlvbnMsIFwiXFxuXFxuXCIpXG4gIH0sXG4gIE9wZXJhdGlvbkRlZmluaXRpb246IHtcbiAgICBsZWF2ZShub2RlKSB7XG4gICAgICBjb25zdCB2YXJEZWZzID0gd3JhcChcIihcIiwgam9pbihub2RlLnZhcmlhYmxlRGVmaW5pdGlvbnMsIFwiLCBcIiksIFwiKVwiKTtcbiAgICAgIGNvbnN0IHByZWZpeCA9IGpvaW4oW1xuICAgICAgICBub2RlLm9wZXJhdGlvbixcbiAgICAgICAgam9pbihbbm9kZS5uYW1lLCB2YXJEZWZzXSksXG4gICAgICAgIGpvaW4obm9kZS5kaXJlY3RpdmVzLCBcIiBcIilcbiAgICAgIF0sIFwiIFwiKTtcbiAgICAgIHJldHVybiAocHJlZml4ID09PSBcInF1ZXJ5XCIgPyBcIlwiIDogcHJlZml4ICsgXCIgXCIpICsgbm9kZS5zZWxlY3Rpb25TZXQ7XG4gICAgfVxuICB9LFxuICBWYXJpYWJsZURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgdmFyaWFibGUsIHR5cGUsIGRlZmF1bHRWYWx1ZSwgZGlyZWN0aXZlcyB9KSA9PiB2YXJpYWJsZSArIFwiOiBcIiArIHR5cGUgKyB3cmFwKFwiID0gXCIsIGRlZmF1bHRWYWx1ZSkgKyB3cmFwKFwiIFwiLCBqb2luKGRpcmVjdGl2ZXMsIFwiIFwiKSlcbiAgfSxcbiAgU2VsZWN0aW9uU2V0OiB7XG4gICAgbGVhdmU6ICh7IHNlbGVjdGlvbnMgfSkgPT4gYmxvY2soc2VsZWN0aW9ucylcbiAgfSxcbiAgRmllbGQ6IHtcbiAgICBsZWF2ZSh7IGFsaWFzLCBuYW1lLCBhcmd1bWVudHM6IGFyZ3MsIGRpcmVjdGl2ZXMsIHNlbGVjdGlvblNldCB9KSB7XG4gICAgICBjb25zdCBwcmVmaXggPSB3cmFwKFwiXCIsIGFsaWFzLCBcIjogXCIpICsgbmFtZTtcbiAgICAgIGxldCBhcmdzTGluZSA9IHByZWZpeCArIHdyYXAoXCIoXCIsIGpvaW4oYXJncywgXCIsIFwiKSwgXCIpXCIpO1xuICAgICAgaWYgKGFyZ3NMaW5lLmxlbmd0aCA+IE1BWF9MSU5FX0xFTkdUSCkge1xuICAgICAgICBhcmdzTGluZSA9IHByZWZpeCArIHdyYXAoXCIoXFxuXCIsIGluZGVudChqb2luKGFyZ3MsIFwiXFxuXCIpKSwgXCJcXG4pXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGpvaW4oW2FyZ3NMaW5lLCBqb2luKGRpcmVjdGl2ZXMsIFwiIFwiKSwgc2VsZWN0aW9uU2V0XSwgXCIgXCIpO1xuICAgIH1cbiAgfSxcbiAgQXJndW1lbnQ6IHtcbiAgICBsZWF2ZTogKHsgbmFtZSwgdmFsdWUgfSkgPT4gbmFtZSArIFwiOiBcIiArIHZhbHVlXG4gIH0sXG4gIEZyYWdtZW50U3ByZWFkOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUsIGRpcmVjdGl2ZXMgfSkgPT4gXCIuLi5cIiArIG5hbWUgKyB3cmFwKFwiIFwiLCBqb2luKGRpcmVjdGl2ZXMsIFwiIFwiKSlcbiAgfSxcbiAgSW5saW5lRnJhZ21lbnQ6IHtcbiAgICBsZWF2ZTogKHsgdHlwZUNvbmRpdGlvbiwgZGlyZWN0aXZlcywgc2VsZWN0aW9uU2V0IH0pID0+IGpvaW4oW1xuICAgICAgXCIuLi5cIixcbiAgICAgIHdyYXAoXCJvbiBcIiwgdHlwZUNvbmRpdGlvbiksXG4gICAgICBqb2luKGRpcmVjdGl2ZXMsIFwiIFwiKSxcbiAgICAgIHNlbGVjdGlvblNldFxuICAgIF0sIFwiIFwiKVxuICB9LFxuICBGcmFnbWVudERlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgbmFtZSwgdHlwZUNvbmRpdGlvbiwgdmFyaWFibGVEZWZpbml0aW9ucywgZGlyZWN0aXZlcywgc2VsZWN0aW9uU2V0IH0pID0+IGBmcmFnbWVudCAke25hbWV9JHt3cmFwKFwiKFwiLCBqb2luKHZhcmlhYmxlRGVmaW5pdGlvbnMsIFwiLCBcIiksIFwiKVwiKX0gb24gJHt0eXBlQ29uZGl0aW9ufSAke3dyYXAoXCJcIiwgam9pbihkaXJlY3RpdmVzLCBcIiBcIiksIFwiIFwiKX1gICsgc2VsZWN0aW9uU2V0XG4gIH0sXG4gIEludFZhbHVlOiB7XG4gICAgbGVhdmU6ICh7IHZhbHVlIH0pID0+IHZhbHVlXG4gIH0sXG4gIEZsb2F0VmFsdWU6IHtcbiAgICBsZWF2ZTogKHsgdmFsdWUgfSkgPT4gdmFsdWVcbiAgfSxcbiAgU3RyaW5nVmFsdWU6IHtcbiAgICBsZWF2ZTogKHsgdmFsdWUsIGJsb2NrOiBpc0Jsb2NrU3RyaW5nIH0pID0+IGlzQmxvY2tTdHJpbmcgPyBwcmludEJsb2NrU3RyaW5nKHZhbHVlKSA6IHByaW50U3RyaW5nKHZhbHVlKVxuICB9LFxuICBCb29sZWFuVmFsdWU6IHtcbiAgICBsZWF2ZTogKHsgdmFsdWUgfSkgPT4gdmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIlxuICB9LFxuICBOdWxsVmFsdWU6IHtcbiAgICBsZWF2ZTogKCkgPT4gXCJudWxsXCJcbiAgfSxcbiAgRW51bVZhbHVlOiB7XG4gICAgbGVhdmU6ICh7IHZhbHVlIH0pID0+IHZhbHVlXG4gIH0sXG4gIExpc3RWYWx1ZToge1xuICAgIGxlYXZlOiAoeyB2YWx1ZXMgfSkgPT4gXCJbXCIgKyBqb2luKHZhbHVlcywgXCIsIFwiKSArIFwiXVwiXG4gIH0sXG4gIE9iamVjdFZhbHVlOiB7XG4gICAgbGVhdmU6ICh7IGZpZWxkcyB9KSA9PiBcIntcIiArIGpvaW4oZmllbGRzLCBcIiwgXCIpICsgXCJ9XCJcbiAgfSxcbiAgT2JqZWN0RmllbGQ6IHtcbiAgICBsZWF2ZTogKHsgbmFtZSwgdmFsdWUgfSkgPT4gbmFtZSArIFwiOiBcIiArIHZhbHVlXG4gIH0sXG4gIERpcmVjdGl2ZToge1xuICAgIGxlYXZlOiAoeyBuYW1lLCBhcmd1bWVudHM6IGFyZ3MgfSkgPT4gXCJAXCIgKyBuYW1lICsgd3JhcChcIihcIiwgam9pbihhcmdzLCBcIiwgXCIpLCBcIilcIilcbiAgfSxcbiAgTmFtZWRUeXBlOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUgfSkgPT4gbmFtZVxuICB9LFxuICBMaXN0VHlwZToge1xuICAgIGxlYXZlOiAoeyB0eXBlIH0pID0+IFwiW1wiICsgdHlwZSArIFwiXVwiXG4gIH0sXG4gIE5vbk51bGxUeXBlOiB7XG4gICAgbGVhdmU6ICh7IHR5cGUgfSkgPT4gdHlwZSArIFwiIVwiXG4gIH0sXG4gIFNjaGVtYURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIGRpcmVjdGl2ZXMsIG9wZXJhdGlvblR5cGVzIH0pID0+IHdyYXAoXCJcIiwgZGVzY3JpcHRpb24sIFwiXFxuXCIpICsgam9pbihbXCJzY2hlbWFcIiwgam9pbihkaXJlY3RpdmVzLCBcIiBcIiksIGJsb2NrKG9wZXJhdGlvblR5cGVzKV0sIFwiIFwiKVxuICB9LFxuICBPcGVyYXRpb25UeXBlRGVmaW5pdGlvbjoge1xuICAgIGxlYXZlOiAoeyBvcGVyYXRpb24sIHR5cGUgfSkgPT4gb3BlcmF0aW9uICsgXCI6IFwiICsgdHlwZVxuICB9LFxuICBTY2FsYXJUeXBlRGVmaW5pdGlvbjoge1xuICAgIGxlYXZlOiAoeyBkZXNjcmlwdGlvbiwgbmFtZSwgZGlyZWN0aXZlcyB9KSA9PiB3cmFwKFwiXCIsIGRlc2NyaXB0aW9uLCBcIlxcblwiKSArIGpvaW4oW1wic2NhbGFyXCIsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgXCIgXCIpXSwgXCIgXCIpXG4gIH0sXG4gIE9iamVjdFR5cGVEZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IGRlc2NyaXB0aW9uLCBuYW1lLCBpbnRlcmZhY2VzLCBkaXJlY3RpdmVzLCBmaWVsZHMgfSkgPT4gd3JhcChcIlwiLCBkZXNjcmlwdGlvbiwgXCJcXG5cIikgKyBqb2luKFtcbiAgICAgIFwidHlwZVwiLFxuICAgICAgbmFtZSxcbiAgICAgIHdyYXAoXCJpbXBsZW1lbnRzIFwiLCBqb2luKGludGVyZmFjZXMsIFwiICYgXCIpKSxcbiAgICAgIGpvaW4oZGlyZWN0aXZlcywgXCIgXCIpLFxuICAgICAgYmxvY2soZmllbGRzKVxuICAgIF0sIFwiIFwiKVxuICB9LFxuICBGaWVsZERlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIG5hbWUsIGFyZ3VtZW50czogYXJncywgdHlwZSwgZGlyZWN0aXZlcyB9KSA9PiB3cmFwKFwiXCIsIGRlc2NyaXB0aW9uLCBcIlxcblwiKSArIG5hbWUgKyAoaGFzTXVsdGlsaW5lSXRlbXMoYXJncykgPyB3cmFwKFwiKFxcblwiLCBpbmRlbnQoam9pbihhcmdzLCBcIlxcblwiKSksIFwiXFxuKVwiKSA6IHdyYXAoXCIoXCIsIGpvaW4oYXJncywgXCIsIFwiKSwgXCIpXCIpKSArIFwiOiBcIiArIHR5cGUgKyB3cmFwKFwiIFwiLCBqb2luKGRpcmVjdGl2ZXMsIFwiIFwiKSlcbiAgfSxcbiAgSW5wdXRWYWx1ZURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIG5hbWUsIHR5cGUsIGRlZmF1bHRWYWx1ZSwgZGlyZWN0aXZlcyB9KSA9PiB3cmFwKFwiXCIsIGRlc2NyaXB0aW9uLCBcIlxcblwiKSArIGpvaW4oW25hbWUgKyBcIjogXCIgKyB0eXBlLCB3cmFwKFwiPSBcIiwgZGVmYXVsdFZhbHVlKSwgam9pbihkaXJlY3RpdmVzLCBcIiBcIildLCBcIiBcIilcbiAgfSxcbiAgSW50ZXJmYWNlVHlwZURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIG5hbWUsIGludGVyZmFjZXMsIGRpcmVjdGl2ZXMsIGZpZWxkcyB9KSA9PiB3cmFwKFwiXCIsIGRlc2NyaXB0aW9uLCBcIlxcblwiKSArIGpvaW4oW1xuICAgICAgXCJpbnRlcmZhY2VcIixcbiAgICAgIG5hbWUsXG4gICAgICB3cmFwKFwiaW1wbGVtZW50cyBcIiwgam9pbihpbnRlcmZhY2VzLCBcIiAmIFwiKSksXG4gICAgICBqb2luKGRpcmVjdGl2ZXMsIFwiIFwiKSxcbiAgICAgIGJsb2NrKGZpZWxkcylcbiAgICBdLCBcIiBcIilcbiAgfSxcbiAgVW5pb25UeXBlRGVmaW5pdGlvbjoge1xuICAgIGxlYXZlOiAoeyBkZXNjcmlwdGlvbiwgbmFtZSwgZGlyZWN0aXZlcywgdHlwZXMgfSkgPT4gd3JhcChcIlwiLCBkZXNjcmlwdGlvbiwgXCJcXG5cIikgKyBqb2luKFtcInVuaW9uXCIsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgXCIgXCIpLCB3cmFwKFwiPSBcIiwgam9pbih0eXBlcywgXCIgfCBcIikpXSwgXCIgXCIpXG4gIH0sXG4gIEVudW1UeXBlRGVmaW5pdGlvbjoge1xuICAgIGxlYXZlOiAoeyBkZXNjcmlwdGlvbiwgbmFtZSwgZGlyZWN0aXZlcywgdmFsdWVzIH0pID0+IHdyYXAoXCJcIiwgZGVzY3JpcHRpb24sIFwiXFxuXCIpICsgam9pbihbXCJlbnVtXCIsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgXCIgXCIpLCBibG9jayh2YWx1ZXMpXSwgXCIgXCIpXG4gIH0sXG4gIEVudW1WYWx1ZURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIG5hbWUsIGRpcmVjdGl2ZXMgfSkgPT4gd3JhcChcIlwiLCBkZXNjcmlwdGlvbiwgXCJcXG5cIikgKyBqb2luKFtuYW1lLCBqb2luKGRpcmVjdGl2ZXMsIFwiIFwiKV0sIFwiIFwiKVxuICB9LFxuICBJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IGRlc2NyaXB0aW9uLCBuYW1lLCBkaXJlY3RpdmVzLCBmaWVsZHMgfSkgPT4gd3JhcChcIlwiLCBkZXNjcmlwdGlvbiwgXCJcXG5cIikgKyBqb2luKFtcImlucHV0XCIsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgXCIgXCIpLCBibG9jayhmaWVsZHMpXSwgXCIgXCIpXG4gIH0sXG4gIERpcmVjdGl2ZURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIG5hbWUsIGFyZ3VtZW50czogYXJncywgcmVwZWF0YWJsZSwgbG9jYXRpb25zIH0pID0+IHdyYXAoXCJcIiwgZGVzY3JpcHRpb24sIFwiXFxuXCIpICsgXCJkaXJlY3RpdmUgQFwiICsgbmFtZSArIChoYXNNdWx0aWxpbmVJdGVtcyhhcmdzKSA/IHdyYXAoXCIoXFxuXCIsIGluZGVudChqb2luKGFyZ3MsIFwiXFxuXCIpKSwgXCJcXG4pXCIpIDogd3JhcChcIihcIiwgam9pbihhcmdzLCBcIiwgXCIpLCBcIilcIikpICsgKHJlcGVhdGFibGUgPyBcIiByZXBlYXRhYmxlXCIgOiBcIlwiKSArIFwiIG9uIFwiICsgam9pbihsb2NhdGlvbnMsIFwiIHwgXCIpXG4gIH0sXG4gIFNjaGVtYUV4dGVuc2lvbjoge1xuICAgIGxlYXZlOiAoeyBkaXJlY3RpdmVzLCBvcGVyYXRpb25UeXBlcyB9KSA9PiBqb2luKFtcImV4dGVuZCBzY2hlbWFcIiwgam9pbihkaXJlY3RpdmVzLCBcIiBcIiksIGJsb2NrKG9wZXJhdGlvblR5cGVzKV0sIFwiIFwiKVxuICB9LFxuICBTY2FsYXJUeXBlRXh0ZW5zaW9uOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUsIGRpcmVjdGl2ZXMgfSkgPT4gam9pbihbXCJleHRlbmQgc2NhbGFyXCIsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgXCIgXCIpXSwgXCIgXCIpXG4gIH0sXG4gIE9iamVjdFR5cGVFeHRlbnNpb246IHtcbiAgICBsZWF2ZTogKHsgbmFtZSwgaW50ZXJmYWNlcywgZGlyZWN0aXZlcywgZmllbGRzIH0pID0+IGpvaW4oW1xuICAgICAgXCJleHRlbmQgdHlwZVwiLFxuICAgICAgbmFtZSxcbiAgICAgIHdyYXAoXCJpbXBsZW1lbnRzIFwiLCBqb2luKGludGVyZmFjZXMsIFwiICYgXCIpKSxcbiAgICAgIGpvaW4oZGlyZWN0aXZlcywgXCIgXCIpLFxuICAgICAgYmxvY2soZmllbGRzKVxuICAgIF0sIFwiIFwiKVxuICB9LFxuICBJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUsIGludGVyZmFjZXMsIGRpcmVjdGl2ZXMsIGZpZWxkcyB9KSA9PiBqb2luKFtcbiAgICAgIFwiZXh0ZW5kIGludGVyZmFjZVwiLFxuICAgICAgbmFtZSxcbiAgICAgIHdyYXAoXCJpbXBsZW1lbnRzIFwiLCBqb2luKGludGVyZmFjZXMsIFwiICYgXCIpKSxcbiAgICAgIGpvaW4oZGlyZWN0aXZlcywgXCIgXCIpLFxuICAgICAgYmxvY2soZmllbGRzKVxuICAgIF0sIFwiIFwiKVxuICB9LFxuICBVbmlvblR5cGVFeHRlbnNpb246IHtcbiAgICBsZWF2ZTogKHsgbmFtZSwgZGlyZWN0aXZlcywgdHlwZXMgfSkgPT4gam9pbihbXG4gICAgICBcImV4dGVuZCB1bmlvblwiLFxuICAgICAgbmFtZSxcbiAgICAgIGpvaW4oZGlyZWN0aXZlcywgXCIgXCIpLFxuICAgICAgd3JhcChcIj0gXCIsIGpvaW4odHlwZXMsIFwiIHwgXCIpKVxuICAgIF0sIFwiIFwiKVxuICB9LFxuICBFbnVtVHlwZUV4dGVuc2lvbjoge1xuICAgIGxlYXZlOiAoeyBuYW1lLCBkaXJlY3RpdmVzLCB2YWx1ZXMgfSkgPT4gam9pbihbXCJleHRlbmQgZW51bVwiLCBuYW1lLCBqb2luKGRpcmVjdGl2ZXMsIFwiIFwiKSwgYmxvY2sodmFsdWVzKV0sIFwiIFwiKVxuICB9LFxuICBJbnB1dE9iamVjdFR5cGVFeHRlbnNpb246IHtcbiAgICBsZWF2ZTogKHsgbmFtZSwgZGlyZWN0aXZlcywgZmllbGRzIH0pID0+IGpvaW4oW1wiZXh0ZW5kIGlucHV0XCIsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgXCIgXCIpLCBibG9jayhmaWVsZHMpXSwgXCIgXCIpXG4gIH1cbn07XG5mdW5jdGlvbiBqb2luKG1heWJlQXJyYXksIHNlcGFyYXRvciA9IFwiXCIpIHtcbiAgdmFyIF9tYXliZUFycmF5JGZpbHRlciRqbztcbiAgcmV0dXJuIChfbWF5YmVBcnJheSRmaWx0ZXIkam8gPSBtYXliZUFycmF5ID09PSBudWxsIHx8IG1heWJlQXJyYXkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1heWJlQXJyYXkuZmlsdGVyKCh4KSA9PiB4KS5qb2luKHNlcGFyYXRvcikpICE9PSBudWxsICYmIF9tYXliZUFycmF5JGZpbHRlciRqbyAhPT0gdm9pZCAwID8gX21heWJlQXJyYXkkZmlsdGVyJGpvIDogXCJcIjtcbn1cbl9fbmFtZShqb2luLCBcImpvaW5cIik7XG5mdW5jdGlvbiBibG9jayhhcnJheSkge1xuICByZXR1cm4gd3JhcChcIntcXG5cIiwgaW5kZW50KGpvaW4oYXJyYXksIFwiXFxuXCIpKSwgXCJcXG59XCIpO1xufVxuX19uYW1lKGJsb2NrLCBcImJsb2NrXCIpO1xuZnVuY3Rpb24gd3JhcChzdGFydCwgbWF5YmVTdHJpbmcsIGVuZCA9IFwiXCIpIHtcbiAgcmV0dXJuIG1heWJlU3RyaW5nICE9IG51bGwgJiYgbWF5YmVTdHJpbmcgIT09IFwiXCIgPyBzdGFydCArIG1heWJlU3RyaW5nICsgZW5kIDogXCJcIjtcbn1cbl9fbmFtZSh3cmFwLCBcIndyYXBcIik7XG5mdW5jdGlvbiBpbmRlbnQoc3RyKSB7XG4gIHJldHVybiB3cmFwKFwiICBcIiwgc3RyLnJlcGxhY2UoL1xcbi9nLCBcIlxcbiAgXCIpKTtcbn1cbl9fbmFtZShpbmRlbnQsIFwiaW5kZW50XCIpO1xuZnVuY3Rpb24gaGFzTXVsdGlsaW5lSXRlbXMobWF5YmVBcnJheSkge1xuICB2YXIgX21heWJlQXJyYXkkc29tZTtcbiAgcmV0dXJuIChfbWF5YmVBcnJheSRzb21lID0gbWF5YmVBcnJheSA9PT0gbnVsbCB8fCBtYXliZUFycmF5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtYXliZUFycmF5LnNvbWUoKHN0cikgPT4gc3RyLmluY2x1ZGVzKFwiXFxuXCIpKSkgIT09IG51bGwgJiYgX21heWJlQXJyYXkkc29tZSAhPT0gdm9pZCAwID8gX21heWJlQXJyYXkkc29tZSA6IGZhbHNlO1xufVxuX19uYW1lKGhhc011bHRpbGluZUl0ZW1zLCBcImhhc011bHRpbGluZUl0ZW1zXCIpO1xuZnVuY3Rpb24gaXNJdGVyYWJsZU9iamVjdChtYXliZUl0ZXJhYmxlKSB7XG4gIHJldHVybiB0eXBlb2YgbWF5YmVJdGVyYWJsZSA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgKG1heWJlSXRlcmFibGUgPT09IG51bGwgfHwgbWF5YmVJdGVyYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbWF5YmVJdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdKSA9PT0gXCJmdW5jdGlvblwiO1xufVxuX19uYW1lKGlzSXRlcmFibGVPYmplY3QsIFwiaXNJdGVyYWJsZU9iamVjdFwiKTtcbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGw7XG59XG5fX25hbWUoaXNPYmplY3RMaWtlLCBcImlzT2JqZWN0TGlrZVwiKTtcbmNvbnN0IE1BWF9TVUdHRVNUSU9OUyA9IDU7XG5mdW5jdGlvbiBkaWRZb3VNZWFuKGZpcnN0QXJnLCBzZWNvbmRBcmcpIHtcbiAgY29uc3QgW3N1Yk1lc3NhZ2UsIHN1Z2dlc3Rpb25zQXJnXSA9IHNlY29uZEFyZyA/IFtmaXJzdEFyZywgc2Vjb25kQXJnXSA6IFt2b2lkIDAsIGZpcnN0QXJnXTtcbiAgbGV0IG1lc3NhZ2UgPSBcIiBEaWQgeW91IG1lYW4gXCI7XG4gIGlmIChzdWJNZXNzYWdlKSB7XG4gICAgbWVzc2FnZSArPSBzdWJNZXNzYWdlICsgXCIgXCI7XG4gIH1cbiAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9uc0FyZy5tYXAoKHgpID0+IGBcIiR7eH1cImApO1xuICBzd2l0Y2ggKHN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBtZXNzYWdlICsgc3VnZ2VzdGlvbnNbMF0gKyBcIj9cIjtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gbWVzc2FnZSArIHN1Z2dlc3Rpb25zWzBdICsgXCIgb3IgXCIgKyBzdWdnZXN0aW9uc1sxXSArIFwiP1wiO1xuICB9XG4gIGNvbnN0IHNlbGVjdGVkID0gc3VnZ2VzdGlvbnMuc2xpY2UoMCwgTUFYX1NVR0dFU1RJT05TKTtcbiAgY29uc3QgbGFzdEl0ZW0gPSBzZWxlY3RlZC5wb3AoKTtcbiAgcmV0dXJuIG1lc3NhZ2UgKyBzZWxlY3RlZC5qb2luKFwiLCBcIikgKyBcIiwgb3IgXCIgKyBsYXN0SXRlbSArIFwiP1wiO1xufVxuX19uYW1lKGRpZFlvdU1lYW4sIFwiZGlkWW91TWVhblwiKTtcbmZ1bmN0aW9uIGlkZW50aXR5RnVuYyh4KSB7XG4gIHJldHVybiB4O1xufVxuX19uYW1lKGlkZW50aXR5RnVuYywgXCJpZGVudGl0eUZ1bmNcIik7XG5jb25zdCBpbnN0YW5jZU9mID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbiBpbnN0YW5jZU9mMih2YWx1ZSwgY29uc3RydWN0b3IpIHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgY29uc3RydWN0b3I7XG59LCBcImluc3RhbmNlT2ZcIik7XG5mdW5jdGlvbiBrZXlNYXAobGlzdCwga2V5Rm4pIHtcbiAgY29uc3QgcmVzdWx0ID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgcmVzdWx0W2tleUZuKGl0ZW0pXSA9IGl0ZW07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbl9fbmFtZShrZXlNYXAsIFwia2V5TWFwXCIpO1xuZnVuY3Rpb24ga2V5VmFsTWFwKGxpc3QsIGtleUZuLCB2YWxGbikge1xuICBjb25zdCByZXN1bHQgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcbiAgICByZXN1bHRba2V5Rm4oaXRlbSldID0gdmFsRm4oaXRlbSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbl9fbmFtZShrZXlWYWxNYXAsIFwia2V5VmFsTWFwXCIpO1xuZnVuY3Rpb24gbWFwVmFsdWUobWFwLCBmbikge1xuICBjb25zdCByZXN1bHQgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWFwKSkge1xuICAgIHJlc3VsdFtrZXldID0gZm4obWFwW2tleV0sIGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbl9fbmFtZShtYXBWYWx1ZSwgXCJtYXBWYWx1ZVwiKTtcbmZ1bmN0aW9uIG5hdHVyYWxDb21wYXJlKGFTdHIsIGJTdHIpIHtcbiAgbGV0IGFJbmRleCA9IDA7XG4gIGxldCBiSW5kZXggPSAwO1xuICB3aGlsZSAoYUluZGV4IDwgYVN0ci5sZW5ndGggJiYgYkluZGV4IDwgYlN0ci5sZW5ndGgpIHtcbiAgICBsZXQgYUNoYXIgPSBhU3RyLmNoYXJDb2RlQXQoYUluZGV4KTtcbiAgICBsZXQgYkNoYXIgPSBiU3RyLmNoYXJDb2RlQXQoYkluZGV4KTtcbiAgICBpZiAoaXNEaWdpdChhQ2hhcikgJiYgaXNEaWdpdChiQ2hhcikpIHtcbiAgICAgIGxldCBhTnVtID0gMDtcbiAgICAgIGRvIHtcbiAgICAgICAgKythSW5kZXg7XG4gICAgICAgIGFOdW0gPSBhTnVtICogMTAgKyBhQ2hhciAtIERJR0lUXzA7XG4gICAgICAgIGFDaGFyID0gYVN0ci5jaGFyQ29kZUF0KGFJbmRleCk7XG4gICAgICB9IHdoaWxlIChpc0RpZ2l0KGFDaGFyKSAmJiBhTnVtID4gMCk7XG4gICAgICBsZXQgYk51bSA9IDA7XG4gICAgICBkbyB7XG4gICAgICAgICsrYkluZGV4O1xuICAgICAgICBiTnVtID0gYk51bSAqIDEwICsgYkNoYXIgLSBESUdJVF8wO1xuICAgICAgICBiQ2hhciA9IGJTdHIuY2hhckNvZGVBdChiSW5kZXgpO1xuICAgICAgfSB3aGlsZSAoaXNEaWdpdChiQ2hhcikgJiYgYk51bSA+IDApO1xuICAgICAgaWYgKGFOdW0gPCBiTnVtKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIGlmIChhTnVtID4gYk51bSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGFDaGFyIDwgYkNoYXIpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgaWYgKGFDaGFyID4gYkNoYXIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICArK2FJbmRleDtcbiAgICAgICsrYkluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gYVN0ci5sZW5ndGggLSBiU3RyLmxlbmd0aDtcbn1cbl9fbmFtZShuYXR1cmFsQ29tcGFyZSwgXCJuYXR1cmFsQ29tcGFyZVwiKTtcbmNvbnN0IERJR0lUXzAgPSA0ODtcbmNvbnN0IERJR0lUXzkgPSA1NztcbmZ1bmN0aW9uIGlzRGlnaXQoY29kZSkge1xuICByZXR1cm4gIWlzTmFOKGNvZGUpICYmIERJR0lUXzAgPD0gY29kZSAmJiBjb2RlIDw9IERJR0lUXzk7XG59XG5fX25hbWUoaXNEaWdpdCwgXCJpc0RpZ2l0XCIpO1xuZnVuY3Rpb24gc3VnZ2VzdGlvbkxpc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0aW9uc0J5RGlzdGFuY2UgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgY29uc3QgbGV4aWNhbERpc3RhbmNlID0gbmV3IExleGljYWxEaXN0YW5jZShpbnB1dCk7XG4gIGNvbnN0IHRocmVzaG9sZCA9IE1hdGguZmxvb3IoaW5wdXQubGVuZ3RoICogMC40KSArIDE7XG4gIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICBjb25zdCBkaXN0YW5jZSA9IGxleGljYWxEaXN0YW5jZS5tZWFzdXJlKG9wdGlvbiwgdGhyZXNob2xkKTtcbiAgICBpZiAoZGlzdGFuY2UgIT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9uc0J5RGlzdGFuY2Vbb3B0aW9uXSA9IGRpc3RhbmNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gT2JqZWN0LmtleXMob3B0aW9uc0J5RGlzdGFuY2UpLnNvcnQoKGEsIGIpID0+IHtcbiAgICBjb25zdCBkaXN0YW5jZURpZmYgPSBvcHRpb25zQnlEaXN0YW5jZVthXSAtIG9wdGlvbnNCeURpc3RhbmNlW2JdO1xuICAgIHJldHVybiBkaXN0YW5jZURpZmYgIT09IDAgPyBkaXN0YW5jZURpZmYgOiBuYXR1cmFsQ29tcGFyZShhLCBiKTtcbiAgfSk7XG59XG5fX25hbWUoc3VnZ2VzdGlvbkxpc3QsIFwic3VnZ2VzdGlvbkxpc3RcIik7XG5jbGFzcyBMZXhpY2FsRGlzdGFuY2Uge1xuICBjb25zdHJ1Y3RvcihpbnB1dCkge1xuICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgdGhpcy5faW5wdXRMb3dlckNhc2UgPSBpbnB1dC50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuX2lucHV0QXJyYXkgPSBzdHJpbmdUb0FycmF5KHRoaXMuX2lucHV0TG93ZXJDYXNlKTtcbiAgICB0aGlzLl9yb3dzID0gW1xuICAgICAgbmV3IEFycmF5KGlucHV0Lmxlbmd0aCArIDEpLmZpbGwoMCksXG4gICAgICBuZXcgQXJyYXkoaW5wdXQubGVuZ3RoICsgMSkuZmlsbCgwKSxcbiAgICAgIG5ldyBBcnJheShpbnB1dC5sZW5ndGggKyAxKS5maWxsKDApXG4gICAgXTtcbiAgfVxuICBtZWFzdXJlKG9wdGlvbiwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHRoaXMuX2lucHV0ID09PSBvcHRpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjb25zdCBvcHRpb25Mb3dlckNhc2UgPSBvcHRpb24udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAodGhpcy5faW5wdXRMb3dlckNhc2UgPT09IG9wdGlvbkxvd2VyQ2FzZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGxldCBhID0gc3RyaW5nVG9BcnJheShvcHRpb25Mb3dlckNhc2UpO1xuICAgIGxldCBiID0gdGhpcy5faW5wdXRBcnJheTtcbiAgICBpZiAoYS5sZW5ndGggPCBiLmxlbmd0aCkge1xuICAgICAgY29uc3QgdG1wID0gYTtcbiAgICAgIGEgPSBiO1xuICAgICAgYiA9IHRtcDtcbiAgICB9XG4gICAgY29uc3QgYUxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGNvbnN0IGJMZW5ndGggPSBiLmxlbmd0aDtcbiAgICBpZiAoYUxlbmd0aCAtIGJMZW5ndGggPiB0aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLl9yb3dzO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDw9IGJMZW5ndGg7IGorKykge1xuICAgICAgcm93c1swXVtqXSA9IGo7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGFMZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdXBSb3cgPSByb3dzWyhpIC0gMSkgJSAzXTtcbiAgICAgIGNvbnN0IGN1cnJlbnRSb3cgPSByb3dzW2kgJSAzXTtcbiAgICAgIGxldCBzbWFsbGVzdENlbGwgPSBjdXJyZW50Um93WzBdID0gaTtcbiAgICAgIGZvciAobGV0IGogPSAxOyBqIDw9IGJMZW5ndGg7IGorKykge1xuICAgICAgICBjb25zdCBjb3N0ID0gYVtpIC0gMV0gPT09IGJbaiAtIDFdID8gMCA6IDE7XG4gICAgICAgIGxldCBjdXJyZW50Q2VsbCA9IE1hdGgubWluKHVwUm93W2pdICsgMSwgY3VycmVudFJvd1tqIC0gMV0gKyAxLCB1cFJvd1tqIC0gMV0gKyBjb3N0KTtcbiAgICAgICAgaWYgKGkgPiAxICYmIGogPiAxICYmIGFbaSAtIDFdID09PSBiW2ogLSAyXSAmJiBhW2kgLSAyXSA9PT0gYltqIC0gMV0pIHtcbiAgICAgICAgICBjb25zdCBkb3VibGVEaWFnb25hbENlbGwgPSByb3dzWyhpIC0gMikgJSAzXVtqIC0gMl07XG4gICAgICAgICAgY3VycmVudENlbGwgPSBNYXRoLm1pbihjdXJyZW50Q2VsbCwgZG91YmxlRGlhZ29uYWxDZWxsICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRDZWxsIDwgc21hbGxlc3RDZWxsKSB7XG4gICAgICAgICAgc21hbGxlc3RDZWxsID0gY3VycmVudENlbGw7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudFJvd1tqXSA9IGN1cnJlbnRDZWxsO1xuICAgICAgfVxuICAgICAgaWYgKHNtYWxsZXN0Q2VsbCA+IHRocmVzaG9sZCkge1xuICAgICAgICByZXR1cm4gdm9pZCAwO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkaXN0YW5jZSA9IHJvd3NbYUxlbmd0aCAlIDNdW2JMZW5ndGhdO1xuICAgIHJldHVybiBkaXN0YW5jZSA8PSB0aHJlc2hvbGQgPyBkaXN0YW5jZSA6IHZvaWQgMDtcbiAgfVxufVxuX19uYW1lKExleGljYWxEaXN0YW5jZSwgXCJMZXhpY2FsRGlzdGFuY2VcIik7XG5mdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cikge1xuICBjb25zdCBzdHJMZW5ndGggPSBzdHIubGVuZ3RoO1xuICBjb25zdCBhcnJheSA9IG5ldyBBcnJheShzdHJMZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ckxlbmd0aDsgKytpKSB7XG4gICAgYXJyYXlbaV0gPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5fX25hbWUoc3RyaW5nVG9BcnJheSwgXCJzdHJpbmdUb0FycmF5XCIpO1xuZnVuY3Rpb24gdG9PYmpNYXAob2JqKSB7XG4gIGlmIChvYmogPT0gbnVsbCkge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgfVxuICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikgPT09IG51bGwpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG4gIGNvbnN0IG1hcCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgbWFwW2tleV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gbWFwO1xufVxuX19uYW1lKHRvT2JqTWFwLCBcInRvT2JqTWFwXCIpO1xuY29uc3QgTGluZVJlZ0V4cCA9IC9cXHJcXG58W1xcblxccl0vZztcbmZ1bmN0aW9uIGdldExvY2F0aW9uKHNvdXJjZSwgcG9zaXRpb24pIHtcbiAgbGV0IGxhc3RMaW5lU3RhcnQgPSAwO1xuICBsZXQgbGluZSA9IDE7XG4gIGZvciAoY29uc3QgbWF0Y2ggb2Ygc291cmNlLmJvZHkubWF0Y2hBbGwoTGluZVJlZ0V4cCkpIHtcbiAgICB0eXBlb2YgbWF0Y2guaW5kZXggPT09IFwibnVtYmVyXCIgfHwgaW52YXJpYW50KGZhbHNlKTtcbiAgICBpZiAobWF0Y2guaW5kZXggPj0gcG9zaXRpb24pIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsYXN0TGluZVN0YXJ0ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gICAgbGluZSArPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgbGluZSxcbiAgICBjb2x1bW46IHBvc2l0aW9uICsgMSAtIGxhc3RMaW5lU3RhcnRcbiAgfTtcbn1cbl9fbmFtZShnZXRMb2NhdGlvbiwgXCJnZXRMb2NhdGlvblwiKTtcbmZ1bmN0aW9uIHByaW50TG9jYXRpb24obG9jYXRpb24pIHtcbiAgcmV0dXJuIHByaW50U291cmNlTG9jYXRpb24obG9jYXRpb24uc291cmNlLCBnZXRMb2NhdGlvbihsb2NhdGlvbi5zb3VyY2UsIGxvY2F0aW9uLnN0YXJ0KSk7XG59XG5fX25hbWUocHJpbnRMb2NhdGlvbiwgXCJwcmludExvY2F0aW9uXCIpO1xuZnVuY3Rpb24gcHJpbnRTb3VyY2VMb2NhdGlvbihzb3VyY2UsIHNvdXJjZUxvY2F0aW9uKSB7XG4gIGNvbnN0IGZpcnN0TGluZUNvbHVtbk9mZnNldCA9IHNvdXJjZS5sb2NhdGlvbk9mZnNldC5jb2x1bW4gLSAxO1xuICBjb25zdCBib2R5ID0gXCJcIi5wYWRTdGFydChmaXJzdExpbmVDb2x1bW5PZmZzZXQpICsgc291cmNlLmJvZHk7XG4gIGNvbnN0IGxpbmVJbmRleCA9IHNvdXJjZUxvY2F0aW9uLmxpbmUgLSAxO1xuICBjb25zdCBsaW5lT2Zmc2V0ID0gc291cmNlLmxvY2F0aW9uT2Zmc2V0LmxpbmUgLSAxO1xuICBjb25zdCBsaW5lTnVtID0gc291cmNlTG9jYXRpb24ubGluZSArIGxpbmVPZmZzZXQ7XG4gIGNvbnN0IGNvbHVtbk9mZnNldCA9IHNvdXJjZUxvY2F0aW9uLmxpbmUgPT09IDEgPyBmaXJzdExpbmVDb2x1bW5PZmZzZXQgOiAwO1xuICBjb25zdCBjb2x1bW5OdW0gPSBzb3VyY2VMb2NhdGlvbi5jb2x1bW4gKyBjb2x1bW5PZmZzZXQ7XG4gIGNvbnN0IGxvY2F0aW9uU3RyID0gYCR7c291cmNlLm5hbWV9OiR7bGluZU51bX06JHtjb2x1bW5OdW19XG5gO1xuICBjb25zdCBsaW5lcyA9IGJvZHkuc3BsaXQoL1xcclxcbnxbXFxuXFxyXS9nKTtcbiAgY29uc3QgbG9jYXRpb25MaW5lID0gbGluZXNbbGluZUluZGV4XTtcbiAgaWYgKGxvY2F0aW9uTGluZS5sZW5ndGggPiAxMjApIHtcbiAgICBjb25zdCBzdWJMaW5lSW5kZXggPSBNYXRoLmZsb29yKGNvbHVtbk51bSAvIDgwKTtcbiAgICBjb25zdCBzdWJMaW5lQ29sdW1uTnVtID0gY29sdW1uTnVtICUgODA7XG4gICAgY29uc3Qgc3ViTGluZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvY2F0aW9uTGluZS5sZW5ndGg7IGkgKz0gODApIHtcbiAgICAgIHN1YkxpbmVzLnB1c2gobG9jYXRpb25MaW5lLnNsaWNlKGksIGkgKyA4MCkpO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYXRpb25TdHIgKyBwcmludFByZWZpeGVkTGluZXMoW1xuICAgICAgW2Ake2xpbmVOdW19IHxgLCBzdWJMaW5lc1swXV0sXG4gICAgICAuLi5zdWJMaW5lcy5zbGljZSgxLCBzdWJMaW5lSW5kZXggKyAxKS5tYXAoKHN1YkxpbmUpID0+IFtcInxcIiwgc3ViTGluZV0pLFxuICAgICAgW1wifFwiLCBcIl5cIi5wYWRTdGFydChzdWJMaW5lQ29sdW1uTnVtKV0sXG4gICAgICBbXCJ8XCIsIHN1YkxpbmVzW3N1YkxpbmVJbmRleCArIDFdXVxuICAgIF0pO1xuICB9XG4gIHJldHVybiBsb2NhdGlvblN0ciArIHByaW50UHJlZml4ZWRMaW5lcyhbXG4gICAgW2Ake2xpbmVOdW0gLSAxfSB8YCwgbGluZXNbbGluZUluZGV4IC0gMV1dLFxuICAgIFtgJHtsaW5lTnVtfSB8YCwgbG9jYXRpb25MaW5lXSxcbiAgICBbXCJ8XCIsIFwiXlwiLnBhZFN0YXJ0KGNvbHVtbk51bSldLFxuICAgIFtgJHtsaW5lTnVtICsgMX0gfGAsIGxpbmVzW2xpbmVJbmRleCArIDFdXVxuICBdKTtcbn1cbl9fbmFtZShwcmludFNvdXJjZUxvY2F0aW9uLCBcInByaW50U291cmNlTG9jYXRpb25cIik7XG5mdW5jdGlvbiBwcmludFByZWZpeGVkTGluZXMobGluZXMpIHtcbiAgY29uc3QgZXhpc3RpbmdMaW5lcyA9IGxpbmVzLmZpbHRlcigoW18sIGxpbmVdKSA9PiBsaW5lICE9PSB2b2lkIDApO1xuICBjb25zdCBwYWRMZW4gPSBNYXRoLm1heCguLi5leGlzdGluZ0xpbmVzLm1hcCgoW3ByZWZpeF0pID0+IHByZWZpeC5sZW5ndGgpKTtcbiAgcmV0dXJuIGV4aXN0aW5nTGluZXMubWFwKChbcHJlZml4LCBsaW5lXSkgPT4gcHJlZml4LnBhZFN0YXJ0KHBhZExlbikgKyAobGluZSA/IFwiIFwiICsgbGluZSA6IFwiXCIpKS5qb2luKFwiXFxuXCIpO1xufVxuX19uYW1lKHByaW50UHJlZml4ZWRMaW5lcywgXCJwcmludFByZWZpeGVkTGluZXNcIik7XG5mdW5jdGlvbiB0b05vcm1hbGl6ZWRPcHRpb25zKGFyZ3MpIHtcbiAgY29uc3QgZmlyc3RBcmcgPSBhcmdzWzBdO1xuICBpZiAoZmlyc3RBcmcgPT0gbnVsbCB8fCBcImtpbmRcIiBpbiBmaXJzdEFyZyB8fCBcImxlbmd0aFwiIGluIGZpcnN0QXJnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGVzOiBmaXJzdEFyZyxcbiAgICAgIHNvdXJjZTogYXJnc1sxXSxcbiAgICAgIHBvc2l0aW9uczogYXJnc1syXSxcbiAgICAgIHBhdGg6IGFyZ3NbM10sXG4gICAgICBvcmlnaW5hbEVycm9yOiBhcmdzWzRdLFxuICAgICAgZXh0ZW5zaW9uczogYXJnc1s1XVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZpcnN0QXJnO1xufVxuX19uYW1lKHRvTm9ybWFsaXplZE9wdGlvbnMsIFwidG9Ob3JtYWxpemVkT3B0aW9uc1wiKTtcbmNsYXNzIEdyYXBoUUxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSwgLi4ucmF3QXJncykge1xuICAgIHZhciBfdGhpcyRub2RlcywgX25vZGVMb2NhdGlvbnMkLCBfcmVmO1xuICAgIGNvbnN0IHsgbm9kZXMsIHNvdXJjZSwgcG9zaXRpb25zLCBwYXRoLCBvcmlnaW5hbEVycm9yLCBleHRlbnNpb25zIH0gPSB0b05vcm1hbGl6ZWRPcHRpb25zKHJhd0FyZ3MpO1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiR3JhcGhRTEVycm9yXCI7XG4gICAgdGhpcy5wYXRoID0gcGF0aCAhPT0gbnVsbCAmJiBwYXRoICE9PSB2b2lkIDAgPyBwYXRoIDogdm9pZCAwO1xuICAgIHRoaXMub3JpZ2luYWxFcnJvciA9IG9yaWdpbmFsRXJyb3IgIT09IG51bGwgJiYgb3JpZ2luYWxFcnJvciAhPT0gdm9pZCAwID8gb3JpZ2luYWxFcnJvciA6IHZvaWQgMDtcbiAgICB0aGlzLm5vZGVzID0gdW5kZWZpbmVkSWZFbXB0eShBcnJheS5pc0FycmF5KG5vZGVzKSA/IG5vZGVzIDogbm9kZXMgPyBbbm9kZXNdIDogdm9pZCAwKTtcbiAgICBjb25zdCBub2RlTG9jYXRpb25zID0gdW5kZWZpbmVkSWZFbXB0eSgoX3RoaXMkbm9kZXMgPSB0aGlzLm5vZGVzKSA9PT0gbnVsbCB8fCBfdGhpcyRub2RlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkbm9kZXMubWFwKChub2RlKSA9PiBub2RlLmxvYykuZmlsdGVyKChsb2MpID0+IGxvYyAhPSBudWxsKSk7XG4gICAgdGhpcy5zb3VyY2UgPSBzb3VyY2UgIT09IG51bGwgJiYgc291cmNlICE9PSB2b2lkIDAgPyBzb3VyY2UgOiBub2RlTG9jYXRpb25zID09PSBudWxsIHx8IG5vZGVMb2NhdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfbm9kZUxvY2F0aW9ucyQgPSBub2RlTG9jYXRpb25zWzBdKSA9PT0gbnVsbCB8fCBfbm9kZUxvY2F0aW9ucyQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlTG9jYXRpb25zJC5zb3VyY2U7XG4gICAgdGhpcy5wb3NpdGlvbnMgPSBwb3NpdGlvbnMgIT09IG51bGwgJiYgcG9zaXRpb25zICE9PSB2b2lkIDAgPyBwb3NpdGlvbnMgOiBub2RlTG9jYXRpb25zID09PSBudWxsIHx8IG5vZGVMb2NhdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVMb2NhdGlvbnMubWFwKChsb2MpID0+IGxvYy5zdGFydCk7XG4gICAgdGhpcy5sb2NhdGlvbnMgPSBwb3NpdGlvbnMgJiYgc291cmNlID8gcG9zaXRpb25zLm1hcCgocG9zKSA9PiBnZXRMb2NhdGlvbihzb3VyY2UsIHBvcykpIDogbm9kZUxvY2F0aW9ucyA9PT0gbnVsbCB8fCBub2RlTG9jYXRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlTG9jYXRpb25zLm1hcCgobG9jKSA9PiBnZXRMb2NhdGlvbihsb2Muc291cmNlLCBsb2Muc3RhcnQpKTtcbiAgICBjb25zdCBvcmlnaW5hbEV4dGVuc2lvbnMgPSBpc09iamVjdExpa2Uob3JpZ2luYWxFcnJvciA9PT0gbnVsbCB8fCBvcmlnaW5hbEVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcmlnaW5hbEVycm9yLmV4dGVuc2lvbnMpID8gb3JpZ2luYWxFcnJvciA9PT0gbnVsbCB8fCBvcmlnaW5hbEVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcmlnaW5hbEVycm9yLmV4dGVuc2lvbnMgOiB2b2lkIDA7XG4gICAgdGhpcy5leHRlbnNpb25zID0gKF9yZWYgPSBleHRlbnNpb25zICE9PSBudWxsICYmIGV4dGVuc2lvbnMgIT09IHZvaWQgMCA/IGV4dGVuc2lvbnMgOiBvcmlnaW5hbEV4dGVuc2lvbnMpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgICBtZXNzYWdlOiB7XG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICB9LFxuICAgICAgbmFtZToge1xuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIG5vZGVzOiB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICB9LFxuICAgICAgc291cmNlOiB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICB9LFxuICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICB9LFxuICAgICAgb3JpZ2luYWxFcnJvcjoge1xuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChvcmlnaW5hbEVycm9yICE9PSBudWxsICYmIG9yaWdpbmFsRXJyb3IgIT09IHZvaWQgMCAmJiBvcmlnaW5hbEVycm9yLnN0YWNrKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJzdGFja1wiLCB7XG4gICAgICAgIHZhbHVlOiBvcmlnaW5hbEVycm9yLnN0YWNrLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBHcmFwaFFMRXJyb3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJzdGFja1wiLCB7XG4gICAgICAgIHZhbHVlOiBFcnJvcigpLnN0YWNrLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiBcIkdyYXBoUUxFcnJvclwiO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBvdXRwdXQgPSB0aGlzLm1lc3NhZ2U7XG4gICAgaWYgKHRoaXMubm9kZXMpIHtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzLm5vZGVzKSB7XG4gICAgICAgIGlmIChub2RlLmxvYykge1xuICAgICAgICAgIG91dHB1dCArPSBcIlxcblxcblwiICsgcHJpbnRMb2NhdGlvbihub2RlLmxvYyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuc291cmNlICYmIHRoaXMubG9jYXRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IGxvY2F0aW9uIG9mIHRoaXMubG9jYXRpb25zKSB7XG4gICAgICAgIG91dHB1dCArPSBcIlxcblxcblwiICsgcHJpbnRTb3VyY2VMb2NhdGlvbih0aGlzLnNvdXJjZSwgbG9jYXRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBmb3JtYXR0ZWRFcnJvciA9IHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZVxuICAgIH07XG4gICAgaWYgKHRoaXMubG9jYXRpb25zICE9IG51bGwpIHtcbiAgICAgIGZvcm1hdHRlZEVycm9yLmxvY2F0aW9ucyA9IHRoaXMubG9jYXRpb25zO1xuICAgIH1cbiAgICBpZiAodGhpcy5wYXRoICE9IG51bGwpIHtcbiAgICAgIGZvcm1hdHRlZEVycm9yLnBhdGggPSB0aGlzLnBhdGg7XG4gICAgfVxuICAgIGlmICh0aGlzLmV4dGVuc2lvbnMgIT0gbnVsbCAmJiBPYmplY3Qua2V5cyh0aGlzLmV4dGVuc2lvbnMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvcm1hdHRlZEVycm9yLmV4dGVuc2lvbnMgPSB0aGlzLmV4dGVuc2lvbnM7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvcjtcbiAgfVxufVxuX19uYW1lKEdyYXBoUUxFcnJvciwgXCJHcmFwaFFMRXJyb3JcIik7XG5mdW5jdGlvbiB1bmRlZmluZWRJZkVtcHR5KGFycmF5KSB7XG4gIHJldHVybiBhcnJheSA9PT0gdm9pZCAwIHx8IGFycmF5Lmxlbmd0aCA9PT0gMCA/IHZvaWQgMCA6IGFycmF5O1xufVxuX19uYW1lKHVuZGVmaW5lZElmRW1wdHksIFwidW5kZWZpbmVkSWZFbXB0eVwiKTtcbmZ1bmN0aW9uIHZhbHVlRnJvbUFTVFVudHlwZWQodmFsdWVOb2RlLCB2YXJpYWJsZXMpIHtcbiAgc3dpdGNoICh2YWx1ZU5vZGUua2luZCkge1xuICAgIGNhc2UgS2luZC5OVUxMOlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBLaW5kLklOVDpcbiAgICAgIHJldHVybiBwYXJzZUludCh2YWx1ZU5vZGUudmFsdWUsIDEwKTtcbiAgICBjYXNlIEtpbmQuRkxPQVQ6XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZU5vZGUudmFsdWUpO1xuICAgIGNhc2UgS2luZC5TVFJJTkc6XG4gICAgY2FzZSBLaW5kLkVOVU06XG4gICAgY2FzZSBLaW5kLkJPT0xFQU46XG4gICAgICByZXR1cm4gdmFsdWVOb2RlLnZhbHVlO1xuICAgIGNhc2UgS2luZC5MSVNUOlxuICAgICAgcmV0dXJuIHZhbHVlTm9kZS52YWx1ZXMubWFwKChub2RlKSA9PiB2YWx1ZUZyb21BU1RVbnR5cGVkKG5vZGUsIHZhcmlhYmxlcykpO1xuICAgIGNhc2UgS2luZC5PQkpFQ1Q6XG4gICAgICByZXR1cm4ga2V5VmFsTWFwKHZhbHVlTm9kZS5maWVsZHMsIChmaWVsZCkgPT4gZmllbGQubmFtZS52YWx1ZSwgKGZpZWxkKSA9PiB2YWx1ZUZyb21BU1RVbnR5cGVkKGZpZWxkLnZhbHVlLCB2YXJpYWJsZXMpKTtcbiAgICBjYXNlIEtpbmQuVkFSSUFCTEU6XG4gICAgICByZXR1cm4gdmFyaWFibGVzID09PSBudWxsIHx8IHZhcmlhYmxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmFyaWFibGVzW3ZhbHVlTm9kZS5uYW1lLnZhbHVlXTtcbiAgfVxufVxuX19uYW1lKHZhbHVlRnJvbUFTVFVudHlwZWQsIFwidmFsdWVGcm9tQVNUVW50eXBlZFwiKTtcbmZ1bmN0aW9uIGFzc2VydE5hbWUobmFtZSkge1xuICBuYW1lICE9IG51bGwgfHwgZGV2QXNzZXJ0KGZhbHNlLCBcIk11c3QgcHJvdmlkZSBuYW1lLlwiKTtcbiAgdHlwZW9mIG5hbWUgPT09IFwic3RyaW5nXCIgfHwgZGV2QXNzZXJ0KGZhbHNlLCBcIkV4cGVjdGVkIG5hbWUgdG8gYmUgYSBzdHJpbmcuXCIpO1xuICBpZiAobmFtZS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiRXhwZWN0ZWQgbmFtZSB0byBiZSBhIG5vbi1lbXB0eSBzdHJpbmcuXCIpO1xuICB9XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgbmFtZS5sZW5ndGg7ICsraSkge1xuICAgIGlmICghaXNOYW1lQ29udGludWUobmFtZS5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgTmFtZXMgbXVzdCBvbmx5IGNvbnRhaW4gW19hLXpBLVowLTldIGJ1dCBcIiR7bmFtZX1cIiBkb2VzIG5vdC5gKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFpc05hbWVTdGFydChuYW1lLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgTmFtZXMgbXVzdCBzdGFydCB3aXRoIFtfYS16QS1aXSBidXQgXCIke25hbWV9XCIgZG9lcyBub3QuYCk7XG4gIH1cbiAgcmV0dXJuIG5hbWU7XG59XG5fX25hbWUoYXNzZXJ0TmFtZSwgXCJhc3NlcnROYW1lXCIpO1xuZnVuY3Rpb24gYXNzZXJ0RW51bVZhbHVlTmFtZShuYW1lKSB7XG4gIGlmIChuYW1lID09PSBcInRydWVcIiB8fCBuYW1lID09PSBcImZhbHNlXCIgfHwgbmFtZSA9PT0gXCJudWxsXCIpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKGBFbnVtIHZhbHVlcyBjYW5ub3QgYmUgbmFtZWQ6ICR7bmFtZX1gKTtcbiAgfVxuICByZXR1cm4gYXNzZXJ0TmFtZShuYW1lKTtcbn1cbl9fbmFtZShhc3NlcnRFbnVtVmFsdWVOYW1lLCBcImFzc2VydEVudW1WYWx1ZU5hbWVcIik7XG5mdW5jdGlvbiBpc1R5cGUodHlwZSkge1xuICByZXR1cm4gaXNTY2FsYXJUeXBlKHR5cGUpIHx8IGlzT2JqZWN0VHlwZSh0eXBlKSB8fCBpc0ludGVyZmFjZVR5cGUodHlwZSkgfHwgaXNVbmlvblR5cGUodHlwZSkgfHwgaXNFbnVtVHlwZSh0eXBlKSB8fCBpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSB8fCBpc0xpc3RUeXBlKHR5cGUpIHx8IGlzTm9uTnVsbFR5cGUodHlwZSk7XG59XG5fX25hbWUoaXNUeXBlLCBcImlzVHlwZVwiKTtcbmZ1bmN0aW9uIGlzU2NhbGFyVHlwZSh0eXBlKSB7XG4gIHJldHVybiBpbnN0YW5jZU9mKHR5cGUsIEdyYXBoUUxTY2FsYXJUeXBlKTtcbn1cbl9fbmFtZShpc1NjYWxhclR5cGUsIFwiaXNTY2FsYXJUeXBlXCIpO1xuZnVuY3Rpb24gaXNPYmplY3RUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTE9iamVjdFR5cGUpO1xufVxuX19uYW1lKGlzT2JqZWN0VHlwZSwgXCJpc09iamVjdFR5cGVcIik7XG5mdW5jdGlvbiBpc0ludGVyZmFjZVR5cGUodHlwZSkge1xuICByZXR1cm4gaW5zdGFuY2VPZih0eXBlLCBHcmFwaFFMSW50ZXJmYWNlVHlwZSk7XG59XG5fX25hbWUoaXNJbnRlcmZhY2VUeXBlLCBcImlzSW50ZXJmYWNlVHlwZVwiKTtcbmZ1bmN0aW9uIGlzVW5pb25UeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTFVuaW9uVHlwZSk7XG59XG5fX25hbWUoaXNVbmlvblR5cGUsIFwiaXNVbmlvblR5cGVcIik7XG5mdW5jdGlvbiBpc0VudW1UeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTEVudW1UeXBlKTtcbn1cbl9fbmFtZShpc0VudW1UeXBlLCBcImlzRW51bVR5cGVcIik7XG5mdW5jdGlvbiBpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSB7XG4gIHJldHVybiBpbnN0YW5jZU9mKHR5cGUsIEdyYXBoUUxJbnB1dE9iamVjdFR5cGUpO1xufVxuX19uYW1lKGlzSW5wdXRPYmplY3RUeXBlLCBcImlzSW5wdXRPYmplY3RUeXBlXCIpO1xuZnVuY3Rpb24gaXNMaXN0VHlwZSh0eXBlKSB7XG4gIHJldHVybiBpbnN0YW5jZU9mKHR5cGUsIEdyYXBoUUxMaXN0KTtcbn1cbl9fbmFtZShpc0xpc3RUeXBlLCBcImlzTGlzdFR5cGVcIik7XG5mdW5jdGlvbiBpc05vbk51bGxUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTE5vbk51bGwpO1xufVxuX19uYW1lKGlzTm9uTnVsbFR5cGUsIFwiaXNOb25OdWxsVHlwZVwiKTtcbmZ1bmN0aW9uIGlzTGVhZlR5cGUodHlwZSkge1xuICByZXR1cm4gaXNTY2FsYXJUeXBlKHR5cGUpIHx8IGlzRW51bVR5cGUodHlwZSk7XG59XG5fX25hbWUoaXNMZWFmVHlwZSwgXCJpc0xlYWZUeXBlXCIpO1xuZnVuY3Rpb24gaXNBYnN0cmFjdFR5cGUodHlwZSkge1xuICByZXR1cm4gaXNJbnRlcmZhY2VUeXBlKHR5cGUpIHx8IGlzVW5pb25UeXBlKHR5cGUpO1xufVxuX19uYW1lKGlzQWJzdHJhY3RUeXBlLCBcImlzQWJzdHJhY3RUeXBlXCIpO1xuY2xhc3MgR3JhcGhRTExpc3Qge1xuICBjb25zdHJ1Y3RvcihvZlR5cGUpIHtcbiAgICBpc1R5cGUob2ZUeXBlKSB8fCBkZXZBc3NlcnQoZmFsc2UsIGBFeHBlY3RlZCAke2luc3BlY3Qob2ZUeXBlKX0gdG8gYmUgYSBHcmFwaFFMIHR5cGUuYCk7XG4gICAgdGhpcy5vZlR5cGUgPSBvZlR5cGU7XG4gIH1cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiBcIkdyYXBoUUxMaXN0XCI7XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFwiW1wiICsgU3RyaW5nKHRoaXMub2ZUeXBlKSArIFwiXVwiO1xuICB9XG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygpO1xuICB9XG59XG5fX25hbWUoR3JhcGhRTExpc3QsIFwiR3JhcGhRTExpc3RcIik7XG5jbGFzcyBHcmFwaFFMTm9uTnVsbCB7XG4gIGNvbnN0cnVjdG9yKG9mVHlwZSkge1xuICAgIGlzTnVsbGFibGVUeXBlKG9mVHlwZSkgfHwgZGV2QXNzZXJ0KGZhbHNlLCBgRXhwZWN0ZWQgJHtpbnNwZWN0KG9mVHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBudWxsYWJsZSB0eXBlLmApO1xuICAgIHRoaXMub2ZUeXBlID0gb2ZUeXBlO1xuICB9XG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gXCJHcmFwaFFMTm9uTnVsbFwiO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5vZlR5cGUpICsgXCIhXCI7XG4gIH1cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gIH1cbn1cbl9fbmFtZShHcmFwaFFMTm9uTnVsbCwgXCJHcmFwaFFMTm9uTnVsbFwiKTtcbmZ1bmN0aW9uIGlzTnVsbGFibGVUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGlzVHlwZSh0eXBlKSAmJiAhaXNOb25OdWxsVHlwZSh0eXBlKTtcbn1cbl9fbmFtZShpc051bGxhYmxlVHlwZSwgXCJpc051bGxhYmxlVHlwZVwiKTtcbmZ1bmN0aW9uIHJlc29sdmVSZWFkb25seUFycmF5VGh1bmsodGh1bmspIHtcbiAgcmV0dXJuIHR5cGVvZiB0aHVuayA9PT0gXCJmdW5jdGlvblwiID8gdGh1bmsoKSA6IHRodW5rO1xufVxuX19uYW1lKHJlc29sdmVSZWFkb25seUFycmF5VGh1bmssIFwicmVzb2x2ZVJlYWRvbmx5QXJyYXlUaHVua1wiKTtcbmZ1bmN0aW9uIHJlc29sdmVPYmpNYXBUaHVuayh0aHVuaykge1xuICByZXR1cm4gdHlwZW9mIHRodW5rID09PSBcImZ1bmN0aW9uXCIgPyB0aHVuaygpIDogdGh1bms7XG59XG5fX25hbWUocmVzb2x2ZU9iak1hcFRodW5rLCBcInJlc29sdmVPYmpNYXBUaHVua1wiKTtcbmNsYXNzIEdyYXBoUUxTY2FsYXJUeXBlIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgdmFyIF9jb25maWckcGFyc2VWYWx1ZSwgX2NvbmZpZyRzZXJpYWxpemUsIF9jb25maWckcGFyc2VMaXRlcmFsLCBfY29uZmlnJGV4dGVuc2lvbkFTVE47XG4gICAgY29uc3QgcGFyc2VWYWx1ZSA9IChfY29uZmlnJHBhcnNlVmFsdWUgPSBjb25maWcucGFyc2VWYWx1ZSkgIT09IG51bGwgJiYgX2NvbmZpZyRwYXJzZVZhbHVlICE9PSB2b2lkIDAgPyBfY29uZmlnJHBhcnNlVmFsdWUgOiBpZGVudGl0eUZ1bmM7XG4gICAgdGhpcy5uYW1lID0gYXNzZXJ0TmFtZShjb25maWcubmFtZSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLnNwZWNpZmllZEJ5VVJMID0gY29uZmlnLnNwZWNpZmllZEJ5VVJMO1xuICAgIHRoaXMuc2VyaWFsaXplID0gKF9jb25maWckc2VyaWFsaXplID0gY29uZmlnLnNlcmlhbGl6ZSkgIT09IG51bGwgJiYgX2NvbmZpZyRzZXJpYWxpemUgIT09IHZvaWQgMCA/IF9jb25maWckc2VyaWFsaXplIDogaWRlbnRpdHlGdW5jO1xuICAgIHRoaXMucGFyc2VWYWx1ZSA9IHBhcnNlVmFsdWU7XG4gICAgdGhpcy5wYXJzZUxpdGVyYWwgPSAoX2NvbmZpZyRwYXJzZUxpdGVyYWwgPSBjb25maWcucGFyc2VMaXRlcmFsKSAhPT0gbnVsbCAmJiBfY29uZmlnJHBhcnNlTGl0ZXJhbCAhPT0gdm9pZCAwID8gX2NvbmZpZyRwYXJzZUxpdGVyYWwgOiAobm9kZSwgdmFyaWFibGVzKSA9PiBwYXJzZVZhbHVlKHZhbHVlRnJvbUFTVFVudHlwZWQobm9kZSwgdmFyaWFibGVzKSk7XG4gICAgdGhpcy5leHRlbnNpb25zID0gdG9PYmpNYXAoY29uZmlnLmV4dGVuc2lvbnMpO1xuICAgIHRoaXMuYXN0Tm9kZSA9IGNvbmZpZy5hc3ROb2RlO1xuICAgIHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMgPSAoX2NvbmZpZyRleHRlbnNpb25BU1ROID0gY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJiBfY29uZmlnJGV4dGVuc2lvbkFTVE4gIT09IHZvaWQgMCA/IF9jb25maWckZXh0ZW5zaW9uQVNUTiA6IFtdO1xuICAgIGNvbmZpZy5zcGVjaWZpZWRCeVVSTCA9PSBudWxsIHx8IHR5cGVvZiBjb25maWcuc3BlY2lmaWVkQnlVUkwgPT09IFwic3RyaW5nXCIgfHwgZGV2QXNzZXJ0KGZhbHNlLCBgJHt0aGlzLm5hbWV9IG11c3QgcHJvdmlkZSBcInNwZWNpZmllZEJ5VVJMXCIgYXMgYSBzdHJpbmcsIGJ1dCBnb3Q6ICR7aW5zcGVjdChjb25maWcuc3BlY2lmaWVkQnlVUkwpfS5gKTtcbiAgICBjb25maWcuc2VyaWFsaXplID09IG51bGwgfHwgdHlwZW9mIGNvbmZpZy5zZXJpYWxpemUgPT09IFwiZnVuY3Rpb25cIiB8fCBkZXZBc3NlcnQoZmFsc2UsIGAke3RoaXMubmFtZX0gbXVzdCBwcm92aWRlIFwic2VyaWFsaXplXCIgZnVuY3Rpb24uIElmIHRoaXMgY3VzdG9tIFNjYWxhciBpcyBhbHNvIHVzZWQgYXMgYW4gaW5wdXQgdHlwZSwgZW5zdXJlIFwicGFyc2VWYWx1ZVwiIGFuZCBcInBhcnNlTGl0ZXJhbFwiIGZ1bmN0aW9ucyBhcmUgYWxzbyBwcm92aWRlZC5gKTtcbiAgICBpZiAoY29uZmlnLnBhcnNlTGl0ZXJhbCkge1xuICAgICAgdHlwZW9mIGNvbmZpZy5wYXJzZVZhbHVlID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIGNvbmZpZy5wYXJzZUxpdGVyYWwgPT09IFwiZnVuY3Rpb25cIiB8fCBkZXZBc3NlcnQoZmFsc2UsIGAke3RoaXMubmFtZX0gbXVzdCBwcm92aWRlIGJvdGggXCJwYXJzZVZhbHVlXCIgYW5kIFwicGFyc2VMaXRlcmFsXCIgZnVuY3Rpb25zLmApO1xuICAgIH1cbiAgfVxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuIFwiR3JhcGhRTFNjYWxhclR5cGVcIjtcbiAgfVxuICB0b0NvbmZpZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBzcGVjaWZpZWRCeVVSTDogdGhpcy5zcGVjaWZpZWRCeVVSTCxcbiAgICAgIHNlcmlhbGl6ZTogdGhpcy5zZXJpYWxpemUsXG4gICAgICBwYXJzZVZhbHVlOiB0aGlzLnBhcnNlVmFsdWUsXG4gICAgICBwYXJzZUxpdGVyYWw6IHRoaXMucGFyc2VMaXRlcmFsLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXNcbiAgICB9O1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gIH1cbn1cbl9fbmFtZShHcmFwaFFMU2NhbGFyVHlwZSwgXCJHcmFwaFFMU2NhbGFyVHlwZVwiKTtcbmNsYXNzIEdyYXBoUUxPYmplY3RUeXBlIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgdmFyIF9jb25maWckZXh0ZW5zaW9uQVNUTjI7XG4gICAgdGhpcy5uYW1lID0gYXNzZXJ0TmFtZShjb25maWcubmFtZSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmlzVHlwZU9mID0gY29uZmlnLmlzVHlwZU9mO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHRvT2JqTWFwKGNvbmZpZy5leHRlbnNpb25zKTtcbiAgICB0aGlzLmFzdE5vZGUgPSBjb25maWcuYXN0Tm9kZTtcbiAgICB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzID0gKF9jb25maWckZXh0ZW5zaW9uQVNUTjIgPSBjb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMpICE9PSBudWxsICYmIF9jb25maWckZXh0ZW5zaW9uQVNUTjIgIT09IHZvaWQgMCA/IF9jb25maWckZXh0ZW5zaW9uQVNUTjIgOiBbXTtcbiAgICB0aGlzLl9maWVsZHMgPSAoKSA9PiBkZWZpbmVGaWVsZE1hcChjb25maWcpO1xuICAgIHRoaXMuX2ludGVyZmFjZXMgPSAoKSA9PiBkZWZpbmVJbnRlcmZhY2VzKGNvbmZpZyk7XG4gICAgY29uZmlnLmlzVHlwZU9mID09IG51bGwgfHwgdHlwZW9mIGNvbmZpZy5pc1R5cGVPZiA9PT0gXCJmdW5jdGlvblwiIHx8IGRldkFzc2VydChmYWxzZSwgYCR7dGhpcy5uYW1lfSBtdXN0IHByb3ZpZGUgXCJpc1R5cGVPZlwiIGFzIGEgZnVuY3Rpb24sIGJ1dCBnb3Q6ICR7aW5zcGVjdChjb25maWcuaXNUeXBlT2YpfS5gKTtcbiAgfVxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuIFwiR3JhcGhRTE9iamVjdFR5cGVcIjtcbiAgfVxuICBnZXRGaWVsZHMoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9maWVsZHMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5fZmllbGRzID0gdGhpcy5fZmllbGRzKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gIH1cbiAgZ2V0SW50ZXJmYWNlcygpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX2ludGVyZmFjZXMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5faW50ZXJmYWNlcyA9IHRoaXMuX2ludGVyZmFjZXMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2ludGVyZmFjZXM7XG4gIH1cbiAgdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgaW50ZXJmYWNlczogdGhpcy5nZXRJbnRlcmZhY2VzKCksXG4gICAgICBmaWVsZHM6IGZpZWxkc1RvRmllbGRzQ29uZmlnKHRoaXMuZ2V0RmllbGRzKCkpLFxuICAgICAgaXNUeXBlT2Y6IHRoaXMuaXNUeXBlT2YsXG4gICAgICBleHRlbnNpb25zOiB0aGlzLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiB0aGlzLmFzdE5vZGUsXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogdGhpcy5leHRlbnNpb25BU1ROb2Rlc1xuICAgIH07XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuX19uYW1lKEdyYXBoUUxPYmplY3RUeXBlLCBcIkdyYXBoUUxPYmplY3RUeXBlXCIpO1xuZnVuY3Rpb24gZGVmaW5lSW50ZXJmYWNlcyhjb25maWcpIHtcbiAgdmFyIF9jb25maWckaW50ZXJmYWNlcztcbiAgY29uc3QgaW50ZXJmYWNlcyA9IHJlc29sdmVSZWFkb25seUFycmF5VGh1bmsoKF9jb25maWckaW50ZXJmYWNlcyA9IGNvbmZpZy5pbnRlcmZhY2VzKSAhPT0gbnVsbCAmJiBfY29uZmlnJGludGVyZmFjZXMgIT09IHZvaWQgMCA/IF9jb25maWckaW50ZXJmYWNlcyA6IFtdKTtcbiAgQXJyYXkuaXNBcnJheShpbnRlcmZhY2VzKSB8fCBkZXZBc3NlcnQoZmFsc2UsIGAke2NvbmZpZy5uYW1lfSBpbnRlcmZhY2VzIG11c3QgYmUgYW4gQXJyYXkgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIEFycmF5LmApO1xuICByZXR1cm4gaW50ZXJmYWNlcztcbn1cbl9fbmFtZShkZWZpbmVJbnRlcmZhY2VzLCBcImRlZmluZUludGVyZmFjZXNcIik7XG5mdW5jdGlvbiBkZWZpbmVGaWVsZE1hcChjb25maWcpIHtcbiAgY29uc3QgZmllbGRNYXAgPSByZXNvbHZlT2JqTWFwVGh1bmsoY29uZmlnLmZpZWxkcyk7XG4gIGlzUGxhaW5PYmooZmllbGRNYXApIHx8IGRldkFzc2VydChmYWxzZSwgYCR7Y29uZmlnLm5hbWV9IGZpZWxkcyBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIGZpZWxkIG5hbWVzIGFzIGtleXMgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIHN1Y2ggYW4gb2JqZWN0LmApO1xuICByZXR1cm4gbWFwVmFsdWUoZmllbGRNYXAsIChmaWVsZENvbmZpZywgZmllbGROYW1lKSA9PiB7XG4gICAgdmFyIF9maWVsZENvbmZpZyRhcmdzO1xuICAgIGlzUGxhaW5PYmooZmllbGRDb25maWcpIHx8IGRldkFzc2VydChmYWxzZSwgYCR7Y29uZmlnLm5hbWV9LiR7ZmllbGROYW1lfSBmaWVsZCBjb25maWcgbXVzdCBiZSBhbiBvYmplY3QuYCk7XG4gICAgZmllbGRDb25maWcucmVzb2x2ZSA9PSBudWxsIHx8IHR5cGVvZiBmaWVsZENvbmZpZy5yZXNvbHZlID09PSBcImZ1bmN0aW9uXCIgfHwgZGV2QXNzZXJ0KGZhbHNlLCBgJHtjb25maWcubmFtZX0uJHtmaWVsZE5hbWV9IGZpZWxkIHJlc29sdmVyIG11c3QgYmUgYSBmdW5jdGlvbiBpZiBwcm92aWRlZCwgYnV0IGdvdDogJHtpbnNwZWN0KGZpZWxkQ29uZmlnLnJlc29sdmUpfS5gKTtcbiAgICBjb25zdCBhcmdzQ29uZmlnID0gKF9maWVsZENvbmZpZyRhcmdzID0gZmllbGRDb25maWcuYXJncykgIT09IG51bGwgJiYgX2ZpZWxkQ29uZmlnJGFyZ3MgIT09IHZvaWQgMCA/IF9maWVsZENvbmZpZyRhcmdzIDoge307XG4gICAgaXNQbGFpbk9iaihhcmdzQ29uZmlnKSB8fCBkZXZBc3NlcnQoZmFsc2UsIGAke2NvbmZpZy5uYW1lfS4ke2ZpZWxkTmFtZX0gYXJncyBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIGFyZ3VtZW50IG5hbWVzIGFzIGtleXMuYCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGFzc2VydE5hbWUoZmllbGROYW1lKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBmaWVsZENvbmZpZy5kZXNjcmlwdGlvbixcbiAgICAgIHR5cGU6IGZpZWxkQ29uZmlnLnR5cGUsXG4gICAgICBhcmdzOiBkZWZpbmVBcmd1bWVudHMoYXJnc0NvbmZpZyksXG4gICAgICByZXNvbHZlOiBmaWVsZENvbmZpZy5yZXNvbHZlLFxuICAgICAgc3Vic2NyaWJlOiBmaWVsZENvbmZpZy5zdWJzY3JpYmUsXG4gICAgICBkZXByZWNhdGlvblJlYXNvbjogZmllbGRDb25maWcuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgICBleHRlbnNpb25zOiB0b09iak1hcChmaWVsZENvbmZpZy5leHRlbnNpb25zKSxcbiAgICAgIGFzdE5vZGU6IGZpZWxkQ29uZmlnLmFzdE5vZGVcbiAgICB9O1xuICB9KTtcbn1cbl9fbmFtZShkZWZpbmVGaWVsZE1hcCwgXCJkZWZpbmVGaWVsZE1hcFwiKTtcbmZ1bmN0aW9uIGRlZmluZUFyZ3VtZW50cyhjb25maWcpIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNvbmZpZykubWFwKChbYXJnTmFtZSwgYXJnQ29uZmlnXSkgPT4gKHtcbiAgICBuYW1lOiBhc3NlcnROYW1lKGFyZ05hbWUpLFxuICAgIGRlc2NyaXB0aW9uOiBhcmdDb25maWcuZGVzY3JpcHRpb24sXG4gICAgdHlwZTogYXJnQ29uZmlnLnR5cGUsXG4gICAgZGVmYXVsdFZhbHVlOiBhcmdDb25maWcuZGVmYXVsdFZhbHVlLFxuICAgIGRlcHJlY2F0aW9uUmVhc29uOiBhcmdDb25maWcuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgZXh0ZW5zaW9uczogdG9PYmpNYXAoYXJnQ29uZmlnLmV4dGVuc2lvbnMpLFxuICAgIGFzdE5vZGU6IGFyZ0NvbmZpZy5hc3ROb2RlXG4gIH0pKTtcbn1cbl9fbmFtZShkZWZpbmVBcmd1bWVudHMsIFwiZGVmaW5lQXJndW1lbnRzXCIpO1xuZnVuY3Rpb24gaXNQbGFpbk9iaihvYmopIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZShvYmopICYmICFBcnJheS5pc0FycmF5KG9iaik7XG59XG5fX25hbWUoaXNQbGFpbk9iaiwgXCJpc1BsYWluT2JqXCIpO1xuZnVuY3Rpb24gZmllbGRzVG9GaWVsZHNDb25maWcoZmllbGRzKSB7XG4gIHJldHVybiBtYXBWYWx1ZShmaWVsZHMsIChmaWVsZCkgPT4gKHtcbiAgICBkZXNjcmlwdGlvbjogZmllbGQuZGVzY3JpcHRpb24sXG4gICAgdHlwZTogZmllbGQudHlwZSxcbiAgICBhcmdzOiBhcmdzVG9BcmdzQ29uZmlnKGZpZWxkLmFyZ3MpLFxuICAgIHJlc29sdmU6IGZpZWxkLnJlc29sdmUsXG4gICAgc3Vic2NyaWJlOiBmaWVsZC5zdWJzY3JpYmUsXG4gICAgZGVwcmVjYXRpb25SZWFzb246IGZpZWxkLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgIGV4dGVuc2lvbnM6IGZpZWxkLmV4dGVuc2lvbnMsXG4gICAgYXN0Tm9kZTogZmllbGQuYXN0Tm9kZVxuICB9KSk7XG59XG5fX25hbWUoZmllbGRzVG9GaWVsZHNDb25maWcsIFwiZmllbGRzVG9GaWVsZHNDb25maWdcIik7XG5mdW5jdGlvbiBhcmdzVG9BcmdzQ29uZmlnKGFyZ3MpIHtcbiAgcmV0dXJuIGtleVZhbE1hcChhcmdzLCAoYXJnKSA9PiBhcmcubmFtZSwgKGFyZykgPT4gKHtcbiAgICBkZXNjcmlwdGlvbjogYXJnLmRlc2NyaXB0aW9uLFxuICAgIHR5cGU6IGFyZy50eXBlLFxuICAgIGRlZmF1bHRWYWx1ZTogYXJnLmRlZmF1bHRWYWx1ZSxcbiAgICBkZXByZWNhdGlvblJlYXNvbjogYXJnLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgIGV4dGVuc2lvbnM6IGFyZy5leHRlbnNpb25zLFxuICAgIGFzdE5vZGU6IGFyZy5hc3ROb2RlXG4gIH0pKTtcbn1cbl9fbmFtZShhcmdzVG9BcmdzQ29uZmlnLCBcImFyZ3NUb0FyZ3NDb25maWdcIik7XG5jbGFzcyBHcmFwaFFMSW50ZXJmYWNlVHlwZSB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHZhciBfY29uZmlnJGV4dGVuc2lvbkFTVE4zO1xuICAgIHRoaXMubmFtZSA9IGFzc2VydE5hbWUoY29uZmlnLm5hbWUpO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy5yZXNvbHZlVHlwZSA9IGNvbmZpZy5yZXNvbHZlVHlwZTtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9IChfY29uZmlnJGV4dGVuc2lvbkFTVE4zID0gY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJiBfY29uZmlnJGV4dGVuc2lvbkFTVE4zICE9PSB2b2lkIDAgPyBfY29uZmlnJGV4dGVuc2lvbkFTVE4zIDogW107XG4gICAgdGhpcy5fZmllbGRzID0gZGVmaW5lRmllbGRNYXAuYmluZCh2b2lkIDAsIGNvbmZpZyk7XG4gICAgdGhpcy5faW50ZXJmYWNlcyA9IGRlZmluZUludGVyZmFjZXMuYmluZCh2b2lkIDAsIGNvbmZpZyk7XG4gICAgY29uZmlnLnJlc29sdmVUeXBlID09IG51bGwgfHwgdHlwZW9mIGNvbmZpZy5yZXNvbHZlVHlwZSA9PT0gXCJmdW5jdGlvblwiIHx8IGRldkFzc2VydChmYWxzZSwgYCR7dGhpcy5uYW1lfSBtdXN0IHByb3ZpZGUgXCJyZXNvbHZlVHlwZVwiIGFzIGEgZnVuY3Rpb24sIGJ1dCBnb3Q6ICR7aW5zcGVjdChjb25maWcucmVzb2x2ZVR5cGUpfS5gKTtcbiAgfVxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuIFwiR3JhcGhRTEludGVyZmFjZVR5cGVcIjtcbiAgfVxuICBnZXRGaWVsZHMoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9maWVsZHMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5fZmllbGRzID0gdGhpcy5fZmllbGRzKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gIH1cbiAgZ2V0SW50ZXJmYWNlcygpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX2ludGVyZmFjZXMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5faW50ZXJmYWNlcyA9IHRoaXMuX2ludGVyZmFjZXMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2ludGVyZmFjZXM7XG4gIH1cbiAgdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgaW50ZXJmYWNlczogdGhpcy5nZXRJbnRlcmZhY2VzKCksXG4gICAgICBmaWVsZHM6IGZpZWxkc1RvRmllbGRzQ29uZmlnKHRoaXMuZ2V0RmllbGRzKCkpLFxuICAgICAgcmVzb2x2ZVR5cGU6IHRoaXMucmVzb2x2ZVR5cGUsXG4gICAgICBleHRlbnNpb25zOiB0aGlzLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiB0aGlzLmFzdE5vZGUsXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogdGhpcy5leHRlbnNpb25BU1ROb2Rlc1xuICAgIH07XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuX19uYW1lKEdyYXBoUUxJbnRlcmZhY2VUeXBlLCBcIkdyYXBoUUxJbnRlcmZhY2VUeXBlXCIpO1xuY2xhc3MgR3JhcGhRTFVuaW9uVHlwZSB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHZhciBfY29uZmlnJGV4dGVuc2lvbkFTVE40O1xuICAgIHRoaXMubmFtZSA9IGFzc2VydE5hbWUoY29uZmlnLm5hbWUpO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy5yZXNvbHZlVHlwZSA9IGNvbmZpZy5yZXNvbHZlVHlwZTtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9IChfY29uZmlnJGV4dGVuc2lvbkFTVE40ID0gY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJiBfY29uZmlnJGV4dGVuc2lvbkFTVE40ICE9PSB2b2lkIDAgPyBfY29uZmlnJGV4dGVuc2lvbkFTVE40IDogW107XG4gICAgdGhpcy5fdHlwZXMgPSBkZWZpbmVUeXBlcy5iaW5kKHZvaWQgMCwgY29uZmlnKTtcbiAgICBjb25maWcucmVzb2x2ZVR5cGUgPT0gbnVsbCB8fCB0eXBlb2YgY29uZmlnLnJlc29sdmVUeXBlID09PSBcImZ1bmN0aW9uXCIgfHwgZGV2QXNzZXJ0KGZhbHNlLCBgJHt0aGlzLm5hbWV9IG11c3QgcHJvdmlkZSBcInJlc29sdmVUeXBlXCIgYXMgYSBmdW5jdGlvbiwgYnV0IGdvdDogJHtpbnNwZWN0KGNvbmZpZy5yZXNvbHZlVHlwZSl9LmApO1xuICB9XG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gXCJHcmFwaFFMVW5pb25UeXBlXCI7XG4gIH1cbiAgZ2V0VHlwZXMoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl90eXBlcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aGlzLl90eXBlcyA9IHRoaXMuX3R5cGVzKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl90eXBlcztcbiAgfVxuICB0b0NvbmZpZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICB0eXBlczogdGhpcy5nZXRUeXBlcygpLFxuICAgICAgcmVzb2x2ZVR5cGU6IHRoaXMucmVzb2x2ZVR5cGUsXG4gICAgICBleHRlbnNpb25zOiB0aGlzLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiB0aGlzLmFzdE5vZGUsXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogdGhpcy5leHRlbnNpb25BU1ROb2Rlc1xuICAgIH07XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuX19uYW1lKEdyYXBoUUxVbmlvblR5cGUsIFwiR3JhcGhRTFVuaW9uVHlwZVwiKTtcbmZ1bmN0aW9uIGRlZmluZVR5cGVzKGNvbmZpZykge1xuICBjb25zdCB0eXBlcyA9IHJlc29sdmVSZWFkb25seUFycmF5VGh1bmsoY29uZmlnLnR5cGVzKTtcbiAgQXJyYXkuaXNBcnJheSh0eXBlcykgfHwgZGV2QXNzZXJ0KGZhbHNlLCBgTXVzdCBwcm92aWRlIEFycmF5IG9mIHR5cGVzIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBzdWNoIGFuIGFycmF5IGZvciBVbmlvbiAke2NvbmZpZy5uYW1lfS5gKTtcbiAgcmV0dXJuIHR5cGVzO1xufVxuX19uYW1lKGRlZmluZVR5cGVzLCBcImRlZmluZVR5cGVzXCIpO1xuY2xhc3MgR3JhcGhRTEVudW1UeXBlIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgdmFyIF9jb25maWckZXh0ZW5zaW9uQVNUTjU7XG4gICAgdGhpcy5uYW1lID0gYXNzZXJ0TmFtZShjb25maWcubmFtZSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9IChfY29uZmlnJGV4dGVuc2lvbkFTVE41ID0gY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJiBfY29uZmlnJGV4dGVuc2lvbkFTVE41ICE9PSB2b2lkIDAgPyBfY29uZmlnJGV4dGVuc2lvbkFTVE41IDogW107XG4gICAgdGhpcy5fdmFsdWVzID0gZGVmaW5lRW51bVZhbHVlcyh0aGlzLm5hbWUsIGNvbmZpZy52YWx1ZXMpO1xuICAgIHRoaXMuX3ZhbHVlTG9va3VwID0gbmV3IE1hcCh0aGlzLl92YWx1ZXMubWFwKChlbnVtVmFsdWUpID0+IFtlbnVtVmFsdWUudmFsdWUsIGVudW1WYWx1ZV0pKTtcbiAgICB0aGlzLl9uYW1lTG9va3VwID0ga2V5TWFwKHRoaXMuX3ZhbHVlcywgKHZhbHVlKSA9PiB2YWx1ZS5uYW1lKTtcbiAgfVxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuIFwiR3JhcGhRTEVudW1UeXBlXCI7XG4gIH1cbiAgZ2V0VmFsdWVzKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZXM7XG4gIH1cbiAgZ2V0VmFsdWUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9uYW1lTG9va3VwW25hbWVdO1xuICB9XG4gIHNlcmlhbGl6ZShvdXRwdXRWYWx1ZSkge1xuICAgIGNvbnN0IGVudW1WYWx1ZSA9IHRoaXMuX3ZhbHVlTG9va3VwLmdldChvdXRwdXRWYWx1ZSk7XG4gICAgaWYgKGVudW1WYWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKGBFbnVtIFwiJHt0aGlzLm5hbWV9XCIgY2Fubm90IHJlcHJlc2VudCB2YWx1ZTogJHtpbnNwZWN0KG91dHB1dFZhbHVlKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGVudW1WYWx1ZS5uYW1lO1xuICB9XG4gIHBhcnNlVmFsdWUoaW5wdXRWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgaW5wdXRWYWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgdmFsdWVTdHIgPSBpbnNwZWN0KGlucHV0VmFsdWUpO1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgRW51bSBcIiR7dGhpcy5uYW1lfVwiIGNhbm5vdCByZXByZXNlbnQgbm9uLXN0cmluZyB2YWx1ZTogJHt2YWx1ZVN0cn0uYCArIGRpZFlvdU1lYW5FbnVtVmFsdWUodGhpcywgdmFsdWVTdHIpKTtcbiAgICB9XG4gICAgY29uc3QgZW51bVZhbHVlID0gdGhpcy5nZXRWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICBpZiAoZW51bVZhbHVlID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoYFZhbHVlIFwiJHtpbnB1dFZhbHVlfVwiIGRvZXMgbm90IGV4aXN0IGluIFwiJHt0aGlzLm5hbWV9XCIgZW51bS5gICsgZGlkWW91TWVhbkVudW1WYWx1ZSh0aGlzLCBpbnB1dFZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBlbnVtVmFsdWUudmFsdWU7XG4gIH1cbiAgcGFyc2VMaXRlcmFsKHZhbHVlTm9kZSwgX3ZhcmlhYmxlcykge1xuICAgIGlmICh2YWx1ZU5vZGUua2luZCAhPT0gS2luZC5FTlVNKSB7XG4gICAgICBjb25zdCB2YWx1ZVN0ciA9IHByaW50KHZhbHVlTm9kZSk7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKGBFbnVtIFwiJHt0aGlzLm5hbWV9XCIgY2Fubm90IHJlcHJlc2VudCBub24tZW51bSB2YWx1ZTogJHt2YWx1ZVN0cn0uYCArIGRpZFlvdU1lYW5FbnVtVmFsdWUodGhpcywgdmFsdWVTdHIpLCB7XG4gICAgICAgIG5vZGVzOiB2YWx1ZU5vZGVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBlbnVtVmFsdWUgPSB0aGlzLmdldFZhbHVlKHZhbHVlTm9kZS52YWx1ZSk7XG4gICAgaWYgKGVudW1WYWx1ZSA9PSBudWxsKSB7XG4gICAgICBjb25zdCB2YWx1ZVN0ciA9IHByaW50KHZhbHVlTm9kZSk7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKGBWYWx1ZSBcIiR7dmFsdWVTdHJ9XCIgZG9lcyBub3QgZXhpc3QgaW4gXCIke3RoaXMubmFtZX1cIiBlbnVtLmAgKyBkaWRZb3VNZWFuRW51bVZhbHVlKHRoaXMsIHZhbHVlU3RyKSwge1xuICAgICAgICBub2RlczogdmFsdWVOb2RlXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGVudW1WYWx1ZS52YWx1ZTtcbiAgfVxuICB0b0NvbmZpZygpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBrZXlWYWxNYXAodGhpcy5nZXRWYWx1ZXMoKSwgKHZhbHVlKSA9PiB2YWx1ZS5uYW1lLCAodmFsdWUpID0+ICh7XG4gICAgICBkZXNjcmlwdGlvbjogdmFsdWUuZGVzY3JpcHRpb24sXG4gICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICBkZXByZWNhdGlvblJlYXNvbjogdmFsdWUuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgICBleHRlbnNpb25zOiB2YWx1ZS5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdmFsdWUuYXN0Tm9kZVxuICAgIH0pKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICB2YWx1ZXMsXG4gICAgICBleHRlbnNpb25zOiB0aGlzLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiB0aGlzLmFzdE5vZGUsXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogdGhpcy5leHRlbnNpb25BU1ROb2Rlc1xuICAgIH07XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuX19uYW1lKEdyYXBoUUxFbnVtVHlwZSwgXCJHcmFwaFFMRW51bVR5cGVcIik7XG5mdW5jdGlvbiBkaWRZb3VNZWFuRW51bVZhbHVlKGVudW1UeXBlLCB1bmtub3duVmFsdWVTdHIpIHtcbiAgY29uc3QgYWxsTmFtZXMgPSBlbnVtVHlwZS5nZXRWYWx1ZXMoKS5tYXAoKHZhbHVlKSA9PiB2YWx1ZS5uYW1lKTtcbiAgY29uc3Qgc3VnZ2VzdGVkVmFsdWVzID0gc3VnZ2VzdGlvbkxpc3QodW5rbm93blZhbHVlU3RyLCBhbGxOYW1lcyk7XG4gIHJldHVybiBkaWRZb3VNZWFuKFwidGhlIGVudW0gdmFsdWVcIiwgc3VnZ2VzdGVkVmFsdWVzKTtcbn1cbl9fbmFtZShkaWRZb3VNZWFuRW51bVZhbHVlLCBcImRpZFlvdU1lYW5FbnVtVmFsdWVcIik7XG5mdW5jdGlvbiBkZWZpbmVFbnVtVmFsdWVzKHR5cGVOYW1lLCB2YWx1ZU1hcCkge1xuICBpc1BsYWluT2JqKHZhbHVlTWFwKSB8fCBkZXZBc3NlcnQoZmFsc2UsIGAke3R5cGVOYW1lfSB2YWx1ZXMgbXVzdCBiZSBhbiBvYmplY3Qgd2l0aCB2YWx1ZSBuYW1lcyBhcyBrZXlzLmApO1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWVNYXApLm1hcCgoW3ZhbHVlTmFtZSwgdmFsdWVDb25maWddKSA9PiB7XG4gICAgaXNQbGFpbk9iaih2YWx1ZUNvbmZpZykgfHwgZGV2QXNzZXJ0KGZhbHNlLCBgJHt0eXBlTmFtZX0uJHt2YWx1ZU5hbWV9IG11c3QgcmVmZXIgdG8gYW4gb2JqZWN0IHdpdGggYSBcInZhbHVlXCIga2V5IHJlcHJlc2VudGluZyBhbiBpbnRlcm5hbCB2YWx1ZSBidXQgZ290OiAke2luc3BlY3QodmFsdWVDb25maWcpfS5gKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogYXNzZXJ0RW51bVZhbHVlTmFtZSh2YWx1ZU5hbWUpLFxuICAgICAgZGVzY3JpcHRpb246IHZhbHVlQ29uZmlnLmRlc2NyaXB0aW9uLFxuICAgICAgdmFsdWU6IHZhbHVlQ29uZmlnLnZhbHVlICE9PSB2b2lkIDAgPyB2YWx1ZUNvbmZpZy52YWx1ZSA6IHZhbHVlTmFtZSxcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiB2YWx1ZUNvbmZpZy5kZXByZWNhdGlvblJlYXNvbixcbiAgICAgIGV4dGVuc2lvbnM6IHRvT2JqTWFwKHZhbHVlQ29uZmlnLmV4dGVuc2lvbnMpLFxuICAgICAgYXN0Tm9kZTogdmFsdWVDb25maWcuYXN0Tm9kZVxuICAgIH07XG4gIH0pO1xufVxuX19uYW1lKGRlZmluZUVudW1WYWx1ZXMsIFwiZGVmaW5lRW51bVZhbHVlc1wiKTtcbmNsYXNzIEdyYXBoUUxJbnB1dE9iamVjdFR5cGUge1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICB2YXIgX2NvbmZpZyRleHRlbnNpb25BU1RONjtcbiAgICB0aGlzLm5hbWUgPSBhc3NlcnROYW1lKGNvbmZpZy5uYW1lKTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gY29uZmlnLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHRvT2JqTWFwKGNvbmZpZy5leHRlbnNpb25zKTtcbiAgICB0aGlzLmFzdE5vZGUgPSBjb25maWcuYXN0Tm9kZTtcbiAgICB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzID0gKF9jb25maWckZXh0ZW5zaW9uQVNUTjYgPSBjb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMpICE9PSBudWxsICYmIF9jb25maWckZXh0ZW5zaW9uQVNUTjYgIT09IHZvaWQgMCA/IF9jb25maWckZXh0ZW5zaW9uQVNUTjYgOiBbXTtcbiAgICB0aGlzLl9maWVsZHMgPSBkZWZpbmVJbnB1dEZpZWxkTWFwLmJpbmQodm9pZCAwLCBjb25maWcpO1xuICB9XG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gXCJHcmFwaFFMSW5wdXRPYmplY3RUeXBlXCI7XG4gIH1cbiAgZ2V0RmllbGRzKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5fZmllbGRzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2ZpZWxkcygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICB9XG4gIHRvQ29uZmlnKCkge1xuICAgIGNvbnN0IGZpZWxkcyA9IG1hcFZhbHVlKHRoaXMuZ2V0RmllbGRzKCksIChmaWVsZCkgPT4gKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBmaWVsZC5kZXNjcmlwdGlvbixcbiAgICAgIHR5cGU6IGZpZWxkLnR5cGUsXG4gICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbixcbiAgICAgIGV4dGVuc2lvbnM6IGZpZWxkLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiBmaWVsZC5hc3ROb2RlXG4gICAgfSkpO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIGZpZWxkcyxcbiAgICAgIGV4dGVuc2lvbnM6IHRoaXMuZXh0ZW5zaW9ucyxcbiAgICAgIGFzdE5vZGU6IHRoaXMuYXN0Tm9kZSxcbiAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzXG4gICAgfTtcbiAgfVxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygpO1xuICB9XG59XG5fX25hbWUoR3JhcGhRTElucHV0T2JqZWN0VHlwZSwgXCJHcmFwaFFMSW5wdXRPYmplY3RUeXBlXCIpO1xuZnVuY3Rpb24gZGVmaW5lSW5wdXRGaWVsZE1hcChjb25maWcpIHtcbiAgY29uc3QgZmllbGRNYXAgPSByZXNvbHZlT2JqTWFwVGh1bmsoY29uZmlnLmZpZWxkcyk7XG4gIGlzUGxhaW5PYmooZmllbGRNYXApIHx8IGRldkFzc2VydChmYWxzZSwgYCR7Y29uZmlnLm5hbWV9IGZpZWxkcyBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIGZpZWxkIG5hbWVzIGFzIGtleXMgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIHN1Y2ggYW4gb2JqZWN0LmApO1xuICByZXR1cm4gbWFwVmFsdWUoZmllbGRNYXAsIChmaWVsZENvbmZpZywgZmllbGROYW1lKSA9PiB7XG4gICAgIShcInJlc29sdmVcIiBpbiBmaWVsZENvbmZpZykgfHwgZGV2QXNzZXJ0KGZhbHNlLCBgJHtjb25maWcubmFtZX0uJHtmaWVsZE5hbWV9IGZpZWxkIGhhcyBhIHJlc29sdmUgcHJvcGVydHksIGJ1dCBJbnB1dCBUeXBlcyBjYW5ub3QgZGVmaW5lIHJlc29sdmVycy5gKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogYXNzZXJ0TmFtZShmaWVsZE5hbWUpLFxuICAgICAgZGVzY3JpcHRpb246IGZpZWxkQ29uZmlnLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZTogZmllbGRDb25maWcudHlwZSxcbiAgICAgIGRlZmF1bHRWYWx1ZTogZmllbGRDb25maWcuZGVmYXVsdFZhbHVlLFxuICAgICAgZGVwcmVjYXRpb25SZWFzb246IGZpZWxkQ29uZmlnLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgZXh0ZW5zaW9uczogdG9PYmpNYXAoZmllbGRDb25maWcuZXh0ZW5zaW9ucyksXG4gICAgICBhc3ROb2RlOiBmaWVsZENvbmZpZy5hc3ROb2RlXG4gICAgfTtcbiAgfSk7XG59XG5fX25hbWUoZGVmaW5lSW5wdXRGaWVsZE1hcCwgXCJkZWZpbmVJbnB1dEZpZWxkTWFwXCIpO1xuY29uc3QgR1JBUEhRTF9NQVhfSU5UID0gMjE0NzQ4MzY0NztcbmNvbnN0IEdSQVBIUUxfTUlOX0lOVCA9IC0yMTQ3NDgzNjQ4O1xuY29uc3QgR3JhcGhRTEludCA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6IFwiSW50XCIsXG4gIGRlc2NyaXB0aW9uOiBcIlRoZSBgSW50YCBzY2FsYXIgdHlwZSByZXByZXNlbnRzIG5vbi1mcmFjdGlvbmFsIHNpZ25lZCB3aG9sZSBudW1lcmljIHZhbHVlcy4gSW50IGNhbiByZXByZXNlbnQgdmFsdWVzIGJldHdlZW4gLSgyXjMxKSBhbmQgMl4zMSAtIDEuXCIsXG4gIHNlcmlhbGl6ZShvdXRwdXRWYWx1ZSkge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSk7XG4gICAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gY29lcmNlZFZhbHVlID8gMSA6IDA7XG4gICAgfVxuICAgIGxldCBudW0gPSBjb2VyY2VkVmFsdWU7XG4gICAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09IFwic3RyaW5nXCIgJiYgY29lcmNlZFZhbHVlICE9PSBcIlwiKSB7XG4gICAgICBudW0gPSBOdW1iZXIoY29lcmNlZFZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBudW0gIT09IFwibnVtYmVyXCIgfHwgIU51bWJlci5pc0ludGVnZXIobnVtKSkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgSW50IGNhbm5vdCByZXByZXNlbnQgbm9uLWludGVnZXIgdmFsdWU6ICR7aW5zcGVjdChjb2VyY2VkVmFsdWUpfWApO1xuICAgIH1cbiAgICBpZiAobnVtID4gR1JBUEhRTF9NQVhfSU5UIHx8IG51bSA8IEdSQVBIUUxfTUlOX0lOVCkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcIkludCBjYW5ub3QgcmVwcmVzZW50IG5vbiAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWU6IFwiICsgaW5zcGVjdChjb2VyY2VkVmFsdWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfSxcbiAgcGFyc2VWYWx1ZShpbnB1dFZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dFZhbHVlICE9PSBcIm51bWJlclwiIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGlucHV0VmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKGBJbnQgY2Fubm90IHJlcHJlc2VudCBub24taW50ZWdlciB2YWx1ZTogJHtpbnNwZWN0KGlucHV0VmFsdWUpfWApO1xuICAgIH1cbiAgICBpZiAoaW5wdXRWYWx1ZSA+IEdSQVBIUUxfTUFYX0lOVCB8fCBpbnB1dFZhbHVlIDwgR1JBUEhRTF9NSU5fSU5UKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKGBJbnQgY2Fubm90IHJlcHJlc2VudCBub24gMzItYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlOiAke2lucHV0VmFsdWV9YCk7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICB9LFxuICBwYXJzZUxpdGVyYWwodmFsdWVOb2RlKSB7XG4gICAgaWYgKHZhbHVlTm9kZS5raW5kICE9PSBLaW5kLklOVCkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgSW50IGNhbm5vdCByZXByZXNlbnQgbm9uLWludGVnZXIgdmFsdWU6ICR7cHJpbnQodmFsdWVOb2RlKX1gLCB7XG4gICAgICAgIG5vZGVzOiB2YWx1ZU5vZGVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBudW0gPSBwYXJzZUludCh2YWx1ZU5vZGUudmFsdWUsIDEwKTtcbiAgICBpZiAobnVtID4gR1JBUEhRTF9NQVhfSU5UIHx8IG51bSA8IEdSQVBIUUxfTUlOX0lOVCkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgSW50IGNhbm5vdCByZXByZXNlbnQgbm9uIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZTogJHt2YWx1ZU5vZGUudmFsdWV9YCwge1xuICAgICAgICBub2RlczogdmFsdWVOb2RlXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfVxufSk7XG5jb25zdCBHcmFwaFFMRmxvYXQgPSBuZXcgR3JhcGhRTFNjYWxhclR5cGUoe1xuICBuYW1lOiBcIkZsb2F0XCIsXG4gIGRlc2NyaXB0aW9uOiBcIlRoZSBgRmxvYXRgIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgc2lnbmVkIGRvdWJsZS1wcmVjaXNpb24gZnJhY3Rpb25hbCB2YWx1ZXMgYXMgc3BlY2lmaWVkIGJ5IFtJRUVFIDc1NF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUVFRV9mbG9hdGluZ19wb2ludCkuXCIsXG4gIHNlcmlhbGl6ZShvdXRwdXRWYWx1ZSkge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSk7XG4gICAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gY29lcmNlZFZhbHVlID8gMSA6IDA7XG4gICAgfVxuICAgIGxldCBudW0gPSBjb2VyY2VkVmFsdWU7XG4gICAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09IFwic3RyaW5nXCIgJiYgY29lcmNlZFZhbHVlICE9PSBcIlwiKSB7XG4gICAgICBudW0gPSBOdW1iZXIoY29lcmNlZFZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBudW0gIT09IFwibnVtYmVyXCIgfHwgIU51bWJlci5pc0Zpbml0ZShudW0pKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKGBGbG9hdCBjYW5ub3QgcmVwcmVzZW50IG5vbiBudW1lcmljIHZhbHVlOiAke2luc3BlY3QoY29lcmNlZFZhbHVlKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfSxcbiAgcGFyc2VWYWx1ZShpbnB1dFZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dFZhbHVlICE9PSBcIm51bWJlclwiIHx8ICFOdW1iZXIuaXNGaW5pdGUoaW5wdXRWYWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoYEZsb2F0IGNhbm5vdCByZXByZXNlbnQgbm9uIG51bWVyaWMgdmFsdWU6ICR7aW5zcGVjdChpbnB1dFZhbHVlKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gIH0sXG4gIHBhcnNlTGl0ZXJhbCh2YWx1ZU5vZGUpIHtcbiAgICBpZiAodmFsdWVOb2RlLmtpbmQgIT09IEtpbmQuRkxPQVQgJiYgdmFsdWVOb2RlLmtpbmQgIT09IEtpbmQuSU5UKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKGBGbG9hdCBjYW5ub3QgcmVwcmVzZW50IG5vbiBudW1lcmljIHZhbHVlOiAke3ByaW50KHZhbHVlTm9kZSl9YCwgdmFsdWVOb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWVOb2RlLnZhbHVlKTtcbiAgfVxufSk7XG5jb25zdCBHcmFwaFFMU3RyaW5nID0gbmV3IEdyYXBoUUxTY2FsYXJUeXBlKHtcbiAgbmFtZTogXCJTdHJpbmdcIixcbiAgZGVzY3JpcHRpb246IFwiVGhlIGBTdHJpbmdgIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgdGV4dHVhbCBkYXRhLCByZXByZXNlbnRlZCBhcyBVVEYtOCBjaGFyYWN0ZXIgc2VxdWVuY2VzLiBUaGUgU3RyaW5nIHR5cGUgaXMgbW9zdCBvZnRlbiB1c2VkIGJ5IEdyYXBoUUwgdG8gcmVwcmVzZW50IGZyZWUtZm9ybSBodW1hbi1yZWFkYWJsZSB0ZXh0LlwiLFxuICBzZXJpYWxpemUob3V0cHV0VmFsdWUpIHtcbiAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBzZXJpYWxpemVPYmplY3Qob3V0cHV0VmFsdWUpO1xuICAgIGlmICh0eXBlb2YgY29lcmNlZFZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gY29lcmNlZFZhbHVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBjb2VyY2VkVmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09IFwibnVtYmVyXCIgJiYgTnVtYmVyLmlzRmluaXRlKGNvZXJjZWRWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBjb2VyY2VkVmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgU3RyaW5nIGNhbm5vdCByZXByZXNlbnQgdmFsdWU6ICR7aW5zcGVjdChvdXRwdXRWYWx1ZSl9YCk7XG4gIH0sXG4gIHBhcnNlVmFsdWUoaW5wdXRWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgaW5wdXRWYWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgU3RyaW5nIGNhbm5vdCByZXByZXNlbnQgYSBub24gc3RyaW5nIHZhbHVlOiAke2luc3BlY3QoaW5wdXRWYWx1ZSl9YCk7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICB9LFxuICBwYXJzZUxpdGVyYWwodmFsdWVOb2RlKSB7XG4gICAgaWYgKHZhbHVlTm9kZS5raW5kICE9PSBLaW5kLlNUUklORykge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgU3RyaW5nIGNhbm5vdCByZXByZXNlbnQgYSBub24gc3RyaW5nIHZhbHVlOiAke3ByaW50KHZhbHVlTm9kZSl9YCwge1xuICAgICAgICBub2RlczogdmFsdWVOb2RlXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlTm9kZS52YWx1ZTtcbiAgfVxufSk7XG5jb25zdCBHcmFwaFFMQm9vbGVhbiA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6IFwiQm9vbGVhblwiLFxuICBkZXNjcmlwdGlvbjogXCJUaGUgYEJvb2xlYW5gIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgYHRydWVgIG9yIGBmYWxzZWAuXCIsXG4gIHNlcmlhbGl6ZShvdXRwdXRWYWx1ZSkge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSk7XG4gICAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gY29lcmNlZFZhbHVlO1xuICAgIH1cbiAgICBpZiAoTnVtYmVyLmlzRmluaXRlKGNvZXJjZWRWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBjb2VyY2VkVmFsdWUgIT09IDA7XG4gICAgfVxuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoYEJvb2xlYW4gY2Fubm90IHJlcHJlc2VudCBhIG5vbiBib29sZWFuIHZhbHVlOiAke2luc3BlY3QoY29lcmNlZFZhbHVlKX1gKTtcbiAgfSxcbiAgcGFyc2VWYWx1ZShpbnB1dFZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dFZhbHVlICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgQm9vbGVhbiBjYW5ub3QgcmVwcmVzZW50IGEgbm9uIGJvb2xlYW4gdmFsdWU6ICR7aW5zcGVjdChpbnB1dFZhbHVlKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gIH0sXG4gIHBhcnNlTGl0ZXJhbCh2YWx1ZU5vZGUpIHtcbiAgICBpZiAodmFsdWVOb2RlLmtpbmQgIT09IEtpbmQuQk9PTEVBTikge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgQm9vbGVhbiBjYW5ub3QgcmVwcmVzZW50IGEgbm9uIGJvb2xlYW4gdmFsdWU6ICR7cHJpbnQodmFsdWVOb2RlKX1gLCB7XG4gICAgICAgIG5vZGVzOiB2YWx1ZU5vZGVcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVOb2RlLnZhbHVlO1xuICB9XG59KTtcbmNvbnN0IEdyYXBoUUxJRCA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6IFwiSURcIixcbiAgZGVzY3JpcHRpb246ICdUaGUgYElEYCBzY2FsYXIgdHlwZSByZXByZXNlbnRzIGEgdW5pcXVlIGlkZW50aWZpZXIsIG9mdGVuIHVzZWQgdG8gcmVmZXRjaCBhbiBvYmplY3Qgb3IgYXMga2V5IGZvciBhIGNhY2hlLiBUaGUgSUQgdHlwZSBhcHBlYXJzIGluIGEgSlNPTiByZXNwb25zZSBhcyBhIFN0cmluZzsgaG93ZXZlciwgaXQgaXMgbm90IGludGVuZGVkIHRvIGJlIGh1bWFuLXJlYWRhYmxlLiBXaGVuIGV4cGVjdGVkIGFzIGFuIGlucHV0IHR5cGUsIGFueSBzdHJpbmcgKHN1Y2ggYXMgYFwiNFwiYCkgb3IgaW50ZWdlciAoc3VjaCBhcyBgNGApIGlucHV0IHZhbHVlIHdpbGwgYmUgYWNjZXB0ZWQgYXMgYW4gSUQuJyxcbiAgc2VyaWFsaXplKG91dHB1dFZhbHVlKSB7XG4gICAgY29uc3QgY29lcmNlZFZhbHVlID0gc2VyaWFsaXplT2JqZWN0KG91dHB1dFZhbHVlKTtcbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIGNvZXJjZWRWYWx1ZTtcbiAgICB9XG4gICAgaWYgKE51bWJlci5pc0ludGVnZXIoY29lcmNlZFZhbHVlKSkge1xuICAgICAgcmV0dXJuIFN0cmluZyhjb2VyY2VkVmFsdWUpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKGBJRCBjYW5ub3QgcmVwcmVzZW50IHZhbHVlOiAke2luc3BlY3Qob3V0cHV0VmFsdWUpfWApO1xuICB9LFxuICBwYXJzZVZhbHVlKGlucHV0VmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIGlucHV0VmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGlucHV0VmFsdWUgPT09IFwibnVtYmVyXCIgJiYgTnVtYmVyLmlzSW50ZWdlcihpbnB1dFZhbHVlKSkge1xuICAgICAgcmV0dXJuIGlucHV0VmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihgSUQgY2Fubm90IHJlcHJlc2VudCB2YWx1ZTogJHtpbnNwZWN0KGlucHV0VmFsdWUpfWApO1xuICB9LFxuICBwYXJzZUxpdGVyYWwodmFsdWVOb2RlKSB7XG4gICAgaWYgKHZhbHVlTm9kZS5raW5kICE9PSBLaW5kLlNUUklORyAmJiB2YWx1ZU5vZGUua2luZCAhPT0gS2luZC5JTlQpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXCJJRCBjYW5ub3QgcmVwcmVzZW50IGEgbm9uLXN0cmluZyBhbmQgbm9uLWludGVnZXIgdmFsdWU6IFwiICsgcHJpbnQodmFsdWVOb2RlKSwge1xuICAgICAgICBub2RlczogdmFsdWVOb2RlXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlTm9kZS52YWx1ZTtcbiAgfVxufSk7XG5PYmplY3QuZnJlZXplKFtcbiAgR3JhcGhRTFN0cmluZyxcbiAgR3JhcGhRTEludCxcbiAgR3JhcGhRTEZsb2F0LFxuICBHcmFwaFFMQm9vbGVhbixcbiAgR3JhcGhRTElEXG5dKTtcbmZ1bmN0aW9uIHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSkge1xuICBpZiAoaXNPYmplY3RMaWtlKG91dHB1dFZhbHVlKSkge1xuICAgIGlmICh0eXBlb2Ygb3V0cHV0VmFsdWUudmFsdWVPZiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBjb25zdCB2YWx1ZU9mUmVzdWx0ID0gb3V0cHV0VmFsdWUudmFsdWVPZigpO1xuICAgICAgaWYgKCFpc09iamVjdExpa2UodmFsdWVPZlJlc3VsdCkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlT2ZSZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3V0cHV0VmFsdWUudG9KU09OID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBvdXRwdXRWYWx1ZS50b0pTT04oKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dHB1dFZhbHVlO1xufVxuX19uYW1lKHNlcmlhbGl6ZU9iamVjdCwgXCJzZXJpYWxpemVPYmplY3RcIik7XG5mdW5jdGlvbiBhc3RGcm9tVmFsdWUodmFsdWUsIHR5cGUpIHtcbiAgaWYgKGlzTm9uTnVsbFR5cGUodHlwZSkpIHtcbiAgICBjb25zdCBhc3RWYWx1ZSA9IGFzdEZyb21WYWx1ZSh2YWx1ZSwgdHlwZS5vZlR5cGUpO1xuICAgIGlmICgoYXN0VmFsdWUgPT09IG51bGwgfHwgYXN0VmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFzdFZhbHVlLmtpbmQpID09PSBLaW5kLk5VTEwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gYXN0VmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuTlVMTFxuICAgIH07XG4gIH1cbiAgaWYgKHZhbHVlID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoaXNMaXN0VHlwZSh0eXBlKSkge1xuICAgIGNvbnN0IGl0ZW1UeXBlID0gdHlwZS5vZlR5cGU7XG4gICAgaWYgKGlzSXRlcmFibGVPYmplY3QodmFsdWUpKSB7XG4gICAgICBjb25zdCB2YWx1ZXNOb2RlcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1Ob2RlID0gYXN0RnJvbVZhbHVlKGl0ZW0sIGl0ZW1UeXBlKTtcbiAgICAgICAgaWYgKGl0ZW1Ob2RlICE9IG51bGwpIHtcbiAgICAgICAgICB2YWx1ZXNOb2Rlcy5wdXNoKGl0ZW1Ob2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogS2luZC5MSVNULFxuICAgICAgICB2YWx1ZXM6IHZhbHVlc05vZGVzXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gYXN0RnJvbVZhbHVlKHZhbHVlLCBpdGVtVHlwZSk7XG4gIH1cbiAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZmllbGROb2RlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgZmllbGQgb2YgT2JqZWN0LnZhbHVlcyh0eXBlLmdldEZpZWxkcygpKSkge1xuICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IGFzdEZyb21WYWx1ZSh2YWx1ZVtmaWVsZC5uYW1lXSwgZmllbGQudHlwZSk7XG4gICAgICBpZiAoZmllbGRWYWx1ZSkge1xuICAgICAgICBmaWVsZE5vZGVzLnB1c2goe1xuICAgICAgICAgIGtpbmQ6IEtpbmQuT0JKRUNUX0ZJRUxELFxuICAgICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgIGtpbmQ6IEtpbmQuTkFNRSxcbiAgICAgICAgICAgIHZhbHVlOiBmaWVsZC5uYW1lXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2YWx1ZTogZmllbGRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuT0JKRUNULFxuICAgICAgZmllbGRzOiBmaWVsZE5vZGVzXG4gICAgfTtcbiAgfVxuICBpZiAoaXNMZWFmVHlwZSh0eXBlKSkge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSB0eXBlLnNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgaWYgKHNlcmlhbGl6ZWQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6IEtpbmQuQk9PTEVBTixcbiAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZWRcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gXCJudW1iZXJcIiAmJiBOdW1iZXIuaXNGaW5pdGUoc2VyaWFsaXplZCkpIHtcbiAgICAgIGNvbnN0IHN0cmluZ051bSA9IFN0cmluZyhzZXJpYWxpemVkKTtcbiAgICAgIHJldHVybiBpbnRlZ2VyU3RyaW5nUmVnRXhwLnRlc3Qoc3RyaW5nTnVtKSA/IHtcbiAgICAgICAga2luZDogS2luZC5JTlQsXG4gICAgICAgIHZhbHVlOiBzdHJpbmdOdW1cbiAgICAgIH0gOiB7XG4gICAgICAgIGtpbmQ6IEtpbmQuRkxPQVQsXG4gICAgICAgIHZhbHVlOiBzdHJpbmdOdW1cbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaWYgKGlzRW51bVR5cGUodHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBraW5kOiBLaW5kLkVOVU0sXG4gICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZWRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSBHcmFwaFFMSUQgJiYgaW50ZWdlclN0cmluZ1JlZ0V4cC50ZXN0KHNlcmlhbGl6ZWQpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2luZDogS2luZC5JTlQsXG4gICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZWRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6IEtpbmQuU1RSSU5HLFxuICAgICAgICB2YWx1ZTogc2VyaWFsaXplZFxuICAgICAgfTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IGNvbnZlcnQgdmFsdWUgdG8gQVNUOiAke2luc3BlY3Qoc2VyaWFsaXplZCl9LmApO1xuICB9XG4gIGludmFyaWFudChmYWxzZSwgXCJVbmV4cGVjdGVkIGlucHV0IHR5cGU6IFwiICsgaW5zcGVjdCh0eXBlKSk7XG59XG5fX25hbWUoYXN0RnJvbVZhbHVlLCBcImFzdEZyb21WYWx1ZVwiKTtcbmNvbnN0IGludGVnZXJTdHJpbmdSZWdFeHAgPSAvXi0/KD86MHxbMS05XVswLTldKikkLztcbmNvbnN0IF9fU2NoZW1hID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgbmFtZTogXCJfX1NjaGVtYVwiLFxuICBkZXNjcmlwdGlvbjogXCJBIEdyYXBoUUwgU2NoZW1hIGRlZmluZXMgdGhlIGNhcGFiaWxpdGllcyBvZiBhIEdyYXBoUUwgc2VydmVyLiBJdCBleHBvc2VzIGFsbCBhdmFpbGFibGUgdHlwZXMgYW5kIGRpcmVjdGl2ZXMgb24gdGhlIHNlcnZlciwgYXMgd2VsbCBhcyB0aGUgZW50cnkgcG9pbnRzIGZvciBxdWVyeSwgbXV0YXRpb24sIGFuZCBzdWJzY3JpcHRpb24gb3BlcmF0aW9ucy5cIixcbiAgZmllbGRzOiAoKSA9PiAoe1xuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKHNjaGVtYSkgPT4gc2NoZW1hLmRlc2NyaXB0aW9uXG4gICAgfSxcbiAgICB0eXBlczoge1xuICAgICAgZGVzY3JpcHRpb246IFwiQSBsaXN0IG9mIGFsbCB0eXBlcyBzdXBwb3J0ZWQgYnkgdGhpcyBzZXJ2ZXIuXCIsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwobmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX1R5cGUpKSksXG4gICAgICByZXNvbHZlKHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhzY2hlbWEuZ2V0VHlwZU1hcCgpKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHF1ZXJ5VHlwZToge1xuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHR5cGUgdGhhdCBxdWVyeSBvcGVyYXRpb25zIHdpbGwgYmUgcm9vdGVkIGF0LlwiLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKF9fVHlwZSksXG4gICAgICByZXNvbHZlOiAoc2NoZW1hKSA9PiBzY2hlbWEuZ2V0UXVlcnlUeXBlKClcbiAgICB9LFxuICAgIG11dGF0aW9uVHlwZToge1xuICAgICAgZGVzY3JpcHRpb246IFwiSWYgdGhpcyBzZXJ2ZXIgc3VwcG9ydHMgbXV0YXRpb24sIHRoZSB0eXBlIHRoYXQgbXV0YXRpb24gb3BlcmF0aW9ucyB3aWxsIGJlIHJvb3RlZCBhdC5cIixcbiAgICAgIHR5cGU6IF9fVHlwZSxcbiAgICAgIHJlc29sdmU6IChzY2hlbWEpID0+IHNjaGVtYS5nZXRNdXRhdGlvblR5cGUoKVxuICAgIH0sXG4gICAgc3Vic2NyaXB0aW9uVHlwZToge1xuICAgICAgZGVzY3JpcHRpb246IFwiSWYgdGhpcyBzZXJ2ZXIgc3VwcG9ydCBzdWJzY3JpcHRpb24sIHRoZSB0eXBlIHRoYXQgc3Vic2NyaXB0aW9uIG9wZXJhdGlvbnMgd2lsbCBiZSByb290ZWQgYXQuXCIsXG4gICAgICB0eXBlOiBfX1R5cGUsXG4gICAgICByZXNvbHZlOiAoc2NoZW1hKSA9PiBzY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpXG4gICAgfSxcbiAgICBkaXJlY3RpdmVzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJBIGxpc3Qgb2YgYWxsIGRpcmVjdGl2ZXMgc3VwcG9ydGVkIGJ5IHRoaXMgc2VydmVyLlwiLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19EaXJlY3RpdmUpKSksXG4gICAgICByZXNvbHZlOiAoc2NoZW1hKSA9PiBzY2hlbWEuZ2V0RGlyZWN0aXZlcygpXG4gICAgfVxuICB9KVxufSk7XG5jb25zdCBfX0RpcmVjdGl2ZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6IFwiX19EaXJlY3RpdmVcIixcbiAgZGVzY3JpcHRpb246IFwiQSBEaXJlY3RpdmUgcHJvdmlkZXMgYSB3YXkgdG8gZGVzY3JpYmUgYWx0ZXJuYXRlIHJ1bnRpbWUgZXhlY3V0aW9uIGFuZCB0eXBlIHZhbGlkYXRpb24gYmVoYXZpb3IgaW4gYSBHcmFwaFFMIGRvY3VtZW50LlxcblxcbkluIHNvbWUgY2FzZXMsIHlvdSBuZWVkIHRvIHByb3ZpZGUgb3B0aW9ucyB0byBhbHRlciBHcmFwaFFMJ3MgZXhlY3V0aW9uIGJlaGF2aW9yIGluIHdheXMgZmllbGQgYXJndW1lbnRzIHdpbGwgbm90IHN1ZmZpY2UsIHN1Y2ggYXMgY29uZGl0aW9uYWxseSBpbmNsdWRpbmcgb3Igc2tpcHBpbmcgYSBmaWVsZC4gRGlyZWN0aXZlcyBwcm92aWRlIHRoaXMgYnkgZGVzY3JpYmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIHRoZSBleGVjdXRvci5cIixcbiAgZmllbGRzOiAoKSA9PiAoe1xuICAgIG5hbWU6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgIHJlc29sdmU6IChkaXJlY3RpdmUpID0+IGRpcmVjdGl2ZS5uYW1lXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgIHJlc29sdmU6IChkaXJlY3RpdmUpID0+IGRpcmVjdGl2ZS5kZXNjcmlwdGlvblxuICAgIH0sXG4gICAgaXNSZXBlYXRhYmxlOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgcmVzb2x2ZTogKGRpcmVjdGl2ZSkgPT4gZGlyZWN0aXZlLmlzUmVwZWF0YWJsZVxuICAgIH0sXG4gICAgbG9jYXRpb25zOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwobmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX0RpcmVjdGl2ZUxvY2F0aW9uKSkpLFxuICAgICAgcmVzb2x2ZTogKGRpcmVjdGl2ZSkgPT4gZGlyZWN0aXZlLmxvY2F0aW9uc1xuICAgIH0sXG4gICAgYXJnczoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19JbnB1dFZhbHVlKSkpLFxuICAgICAgYXJnczoge1xuICAgICAgICBpbmNsdWRlRGVwcmVjYXRlZDoge1xuICAgICAgICAgIHR5cGU6IEdyYXBoUUxCb29sZWFuLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlc29sdmUoZmllbGQsIHsgaW5jbHVkZURlcHJlY2F0ZWQgfSkge1xuICAgICAgICByZXR1cm4gaW5jbHVkZURlcHJlY2F0ZWQgPyBmaWVsZC5hcmdzIDogZmllbGQuYXJncy5maWx0ZXIoKGFyZykgPT4gYXJnLmRlcHJlY2F0aW9uUmVhc29uID09IG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfSlcbn0pO1xuY29uc3QgX19EaXJlY3RpdmVMb2NhdGlvbiA9IG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICBuYW1lOiBcIl9fRGlyZWN0aXZlTG9jYXRpb25cIixcbiAgZGVzY3JpcHRpb246IFwiQSBEaXJlY3RpdmUgY2FuIGJlIGFkamFjZW50IHRvIG1hbnkgcGFydHMgb2YgdGhlIEdyYXBoUUwgbGFuZ3VhZ2UsIGEgX19EaXJlY3RpdmVMb2NhdGlvbiBkZXNjcmliZXMgb25lIHN1Y2ggcG9zc2libGUgYWRqYWNlbmNpZXMuXCIsXG4gIHZhbHVlczoge1xuICAgIFFVRVJZOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uUVVFUlksXG4gICAgICBkZXNjcmlwdGlvbjogXCJMb2NhdGlvbiBhZGphY2VudCB0byBhIHF1ZXJ5IG9wZXJhdGlvbi5cIlxuICAgIH0sXG4gICAgTVVUQVRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5NVVRBVElPTixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIGFkamFjZW50IHRvIGEgbXV0YXRpb24gb3BlcmF0aW9uLlwiXG4gICAgfSxcbiAgICBTVUJTQ1JJUFRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5TVUJTQ1JJUFRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogXCJMb2NhdGlvbiBhZGphY2VudCB0byBhIHN1YnNjcmlwdGlvbiBvcGVyYXRpb24uXCJcbiAgICB9LFxuICAgIEZJRUxEOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uRklFTEQsXG4gICAgICBkZXNjcmlwdGlvbjogXCJMb2NhdGlvbiBhZGphY2VudCB0byBhIGZpZWxkLlwiXG4gICAgfSxcbiAgICBGUkFHTUVOVF9ERUZJTklUSU9OOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uRlJBR01FTlRfREVGSU5JVElPTixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIGFkamFjZW50IHRvIGEgZnJhZ21lbnQgZGVmaW5pdGlvbi5cIlxuICAgIH0sXG4gICAgRlJBR01FTlRfU1BSRUFEOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uRlJBR01FTlRfU1BSRUFELFxuICAgICAgZGVzY3JpcHRpb246IFwiTG9jYXRpb24gYWRqYWNlbnQgdG8gYSBmcmFnbWVudCBzcHJlYWQuXCJcbiAgICB9LFxuICAgIElOTElORV9GUkFHTUVOVDoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLklOTElORV9GUkFHTUVOVCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIGFkamFjZW50IHRvIGFuIGlubGluZSBmcmFnbWVudC5cIlxuICAgIH0sXG4gICAgVkFSSUFCTEVfREVGSU5JVElPTjoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLlZBUklBQkxFX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogXCJMb2NhdGlvbiBhZGphY2VudCB0byBhIHZhcmlhYmxlIGRlZmluaXRpb24uXCJcbiAgICB9LFxuICAgIFNDSEVNQToge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLlNDSEVNQSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIGFkamFjZW50IHRvIGEgc2NoZW1hIGRlZmluaXRpb24uXCJcbiAgICB9LFxuICAgIFNDQUxBUjoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLlNDQUxBUixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIGFkamFjZW50IHRvIGEgc2NhbGFyIGRlZmluaXRpb24uXCJcbiAgICB9LFxuICAgIE9CSkVDVDoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLk9CSkVDVCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIGFkamFjZW50IHRvIGFuIG9iamVjdCB0eXBlIGRlZmluaXRpb24uXCJcbiAgICB9LFxuICAgIEZJRUxEX0RFRklOSVRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5GSUVMRF9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246IFwiTG9jYXRpb24gYWRqYWNlbnQgdG8gYSBmaWVsZCBkZWZpbml0aW9uLlwiXG4gICAgfSxcbiAgICBBUkdVTUVOVF9ERUZJTklUSU9OOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uQVJHVU1FTlRfREVGSU5JVElPTixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIGFkamFjZW50IHRvIGFuIGFyZ3VtZW50IGRlZmluaXRpb24uXCJcbiAgICB9LFxuICAgIElOVEVSRkFDRToge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLklOVEVSRkFDRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIGFkamFjZW50IHRvIGFuIGludGVyZmFjZSBkZWZpbml0aW9uLlwiXG4gICAgfSxcbiAgICBVTklPTjoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLlVOSU9OLFxuICAgICAgZGVzY3JpcHRpb246IFwiTG9jYXRpb24gYWRqYWNlbnQgdG8gYSB1bmlvbiBkZWZpbml0aW9uLlwiXG4gICAgfSxcbiAgICBFTlVNOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uRU5VTSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIGFkamFjZW50IHRvIGFuIGVudW0gZGVmaW5pdGlvbi5cIlxuICAgIH0sXG4gICAgRU5VTV9WQUxVRToge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLkVOVU1fVkFMVUUsXG4gICAgICBkZXNjcmlwdGlvbjogXCJMb2NhdGlvbiBhZGphY2VudCB0byBhbiBlbnVtIHZhbHVlIGRlZmluaXRpb24uXCJcbiAgICB9LFxuICAgIElOUFVUX09CSkVDVDoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLklOUFVUX09CSkVDVCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIGFkamFjZW50IHRvIGFuIGlucHV0IG9iamVjdCB0eXBlIGRlZmluaXRpb24uXCJcbiAgICB9LFxuICAgIElOUFVUX0ZJRUxEX0RFRklOSVRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5JTlBVVF9GSUVMRF9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246IFwiTG9jYXRpb24gYWRqYWNlbnQgdG8gYW4gaW5wdXQgb2JqZWN0IGZpZWxkIGRlZmluaXRpb24uXCJcbiAgICB9XG4gIH1cbn0pO1xuY29uc3QgX19UeXBlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgbmFtZTogXCJfX1R5cGVcIixcbiAgZGVzY3JpcHRpb246IFwiVGhlIGZ1bmRhbWVudGFsIHVuaXQgb2YgYW55IEdyYXBoUUwgU2NoZW1hIGlzIHRoZSB0eXBlLiBUaGVyZSBhcmUgbWFueSBraW5kcyBvZiB0eXBlcyBpbiBHcmFwaFFMIGFzIHJlcHJlc2VudGVkIGJ5IHRoZSBgX19UeXBlS2luZGAgZW51bS5cXG5cXG5EZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YgYSB0eXBlLCBjZXJ0YWluIGZpZWxkcyBkZXNjcmliZSBpbmZvcm1hdGlvbiBhYm91dCB0aGF0IHR5cGUuIFNjYWxhciB0eXBlcyBwcm92aWRlIG5vIGluZm9ybWF0aW9uIGJleW9uZCBhIG5hbWUsIGRlc2NyaXB0aW9uIGFuZCBvcHRpb25hbCBgc3BlY2lmaWVkQnlVUkxgLCB3aGlsZSBFbnVtIHR5cGVzIHByb3ZpZGUgdGhlaXIgdmFsdWVzLiBPYmplY3QgYW5kIEludGVyZmFjZSB0eXBlcyBwcm92aWRlIHRoZSBmaWVsZHMgdGhleSBkZXNjcmliZS4gQWJzdHJhY3QgdHlwZXMsIFVuaW9uIGFuZCBJbnRlcmZhY2UsIHByb3ZpZGUgdGhlIE9iamVjdCB0eXBlcyBwb3NzaWJsZSBhdCBydW50aW1lLiBMaXN0IGFuZCBOb25OdWxsIHR5cGVzIGNvbXBvc2Ugb3RoZXIgdHlwZXMuXCIsXG4gIGZpZWxkczogKCkgPT4gKHtcbiAgICBraW5kOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlS2luZCksXG4gICAgICByZXNvbHZlKHR5cGUpIHtcbiAgICAgICAgaWYgKGlzU2NhbGFyVHlwZSh0eXBlKSkge1xuICAgICAgICAgIHJldHVybiBUeXBlS2luZC5TQ0FMQVI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzT2JqZWN0VHlwZSh0eXBlKSkge1xuICAgICAgICAgIHJldHVybiBUeXBlS2luZC5PQkpFQ1Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzSW50ZXJmYWNlVHlwZSh0eXBlKSkge1xuICAgICAgICAgIHJldHVybiBUeXBlS2luZC5JTlRFUkZBQ0U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVW5pb25UeXBlKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLlVOSU9OO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VudW1UeXBlKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLkVOVU07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLklOUFVUX09CSkVDVDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNMaXN0VHlwZSh0eXBlKSkge1xuICAgICAgICAgIHJldHVybiBUeXBlS2luZC5MSVNUO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc05vbk51bGxUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLk5PTl9OVUxMO1xuICAgICAgICB9XG4gICAgICAgIGludmFyaWFudChmYWxzZSwgYFVuZXhwZWN0ZWQgdHlwZTogXCIke2luc3BlY3QodHlwZSl9XCIuYCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBuYW1lOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKHR5cGUpID0+IFwibmFtZVwiIGluIHR5cGUgPyB0eXBlLm5hbWUgOiB2b2lkIDBcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKHR5cGUpID0+IFwiZGVzY3JpcHRpb25cIiBpbiB0eXBlID8gdHlwZS5kZXNjcmlwdGlvbiA6IHZvaWQgMFxuICAgIH0sXG4gICAgc3BlY2lmaWVkQnlVUkw6IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICByZXNvbHZlOiAob2JqKSA9PiBcInNwZWNpZmllZEJ5VVJMXCIgaW4gb2JqID8gb2JqLnNwZWNpZmllZEJ5VVJMIDogdm9pZCAwXG4gICAgfSxcbiAgICBmaWVsZHM6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19GaWVsZCkpLFxuICAgICAgYXJnczoge1xuICAgICAgICBpbmNsdWRlRGVwcmVjYXRlZDoge1xuICAgICAgICAgIHR5cGU6IEdyYXBoUUxCb29sZWFuLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlc29sdmUodHlwZSwgeyBpbmNsdWRlRGVwcmVjYXRlZCB9KSB7XG4gICAgICAgIGlmIChpc09iamVjdFR5cGUodHlwZSkgfHwgaXNJbnRlcmZhY2VUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgY29uc3QgZmllbGRzID0gT2JqZWN0LnZhbHVlcyh0eXBlLmdldEZpZWxkcygpKTtcbiAgICAgICAgICByZXR1cm4gaW5jbHVkZURlcHJlY2F0ZWQgPyBmaWVsZHMgOiBmaWVsZHMuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQuZGVwcmVjYXRpb25SZWFzb24gPT0gbnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGludGVyZmFjZXM6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlKSksXG4gICAgICByZXNvbHZlKHR5cGUpIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0VHlwZSh0eXBlKSB8fCBpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHlwZS5nZXRJbnRlcmZhY2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHBvc3NpYmxlVHlwZXM6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlKSksXG4gICAgICByZXNvbHZlKHR5cGUsIF9hcmdzLCBfY29udGV4dCwgeyBzY2hlbWEgfSkge1xuICAgICAgICBpZiAoaXNBYnN0cmFjdFR5cGUodHlwZSkpIHtcbiAgICAgICAgICByZXR1cm4gc2NoZW1hLmdldFBvc3NpYmxlVHlwZXModHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGVudW1WYWx1ZXM6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19FbnVtVmFsdWUpKSxcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgaW5jbHVkZURlcHJlY2F0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZXNvbHZlKHR5cGUsIHsgaW5jbHVkZURlcHJlY2F0ZWQgfSkge1xuICAgICAgICBpZiAoaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHR5cGUuZ2V0VmFsdWVzKCk7XG4gICAgICAgICAgcmV0dXJuIGluY2x1ZGVEZXByZWNhdGVkID8gdmFsdWVzIDogdmFsdWVzLmZpbHRlcigoZmllbGQpID0+IGZpZWxkLmRlcHJlY2F0aW9uUmVhc29uID09IG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBpbnB1dEZpZWxkczoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX0lucHV0VmFsdWUpKSxcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgaW5jbHVkZURlcHJlY2F0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZXNvbHZlKHR5cGUsIHsgaW5jbHVkZURlcHJlY2F0ZWQgfSkge1xuICAgICAgICBpZiAoaXNJbnB1dE9iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKHR5cGUuZ2V0RmllbGRzKCkpO1xuICAgICAgICAgIHJldHVybiBpbmNsdWRlRGVwcmVjYXRlZCA/IHZhbHVlcyA6IHZhbHVlcy5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbiA9PSBudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgb2ZUeXBlOiB7XG4gICAgICB0eXBlOiBfX1R5cGUsXG4gICAgICByZXNvbHZlOiAodHlwZSkgPT4gXCJvZlR5cGVcIiBpbiB0eXBlID8gdHlwZS5vZlR5cGUgOiB2b2lkIDBcbiAgICB9XG4gIH0pXG59KTtcbmNvbnN0IF9fRmllbGQgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICBuYW1lOiBcIl9fRmllbGRcIixcbiAgZGVzY3JpcHRpb246IFwiT2JqZWN0IGFuZCBJbnRlcmZhY2UgdHlwZXMgYXJlIGRlc2NyaWJlZCBieSBhIGxpc3Qgb2YgRmllbGRzLCBlYWNoIG9mIHdoaWNoIGhhcyBhIG5hbWUsIHBvdGVudGlhbGx5IGEgbGlzdCBvZiBhcmd1bWVudHMsIGFuZCBhIHJldHVybiB0eXBlLlwiLFxuICBmaWVsZHM6ICgpID0+ICh7XG4gICAgbmFtZToge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgICAgcmVzb2x2ZTogKGZpZWxkKSA9PiBmaWVsZC5uYW1lXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgIHJlc29sdmU6IChmaWVsZCkgPT4gZmllbGQuZGVzY3JpcHRpb25cbiAgICB9LFxuICAgIGFyZ3M6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKF9fSW5wdXRWYWx1ZSkpKSxcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgaW5jbHVkZURlcHJlY2F0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZXNvbHZlKGZpZWxkLCB7IGluY2x1ZGVEZXByZWNhdGVkIH0pIHtcbiAgICAgICAgcmV0dXJuIGluY2x1ZGVEZXByZWNhdGVkID8gZmllbGQuYXJncyA6IGZpZWxkLmFyZ3MuZmlsdGVyKChhcmcpID0+IGFyZy5kZXByZWNhdGlvblJlYXNvbiA9PSBudWxsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHR5cGU6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChfX1R5cGUpLFxuICAgICAgcmVzb2x2ZTogKGZpZWxkKSA9PiBmaWVsZC50eXBlXG4gICAgfSxcbiAgICBpc0RlcHJlY2F0ZWQ6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgICByZXNvbHZlOiAoZmllbGQpID0+IGZpZWxkLmRlcHJlY2F0aW9uUmVhc29uICE9IG51bGxcbiAgICB9LFxuICAgIGRlcHJlY2F0aW9uUmVhc29uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKGZpZWxkKSA9PiBmaWVsZC5kZXByZWNhdGlvblJlYXNvblxuICAgIH1cbiAgfSlcbn0pO1xuY29uc3QgX19JbnB1dFZhbHVlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgbmFtZTogXCJfX0lucHV0VmFsdWVcIixcbiAgZGVzY3JpcHRpb246IFwiQXJndW1lbnRzIHByb3ZpZGVkIHRvIEZpZWxkcyBvciBEaXJlY3RpdmVzIGFuZCB0aGUgaW5wdXQgZmllbGRzIG9mIGFuIElucHV0T2JqZWN0IGFyZSByZXByZXNlbnRlZCBhcyBJbnB1dCBWYWx1ZXMgd2hpY2ggZGVzY3JpYmUgdGhlaXIgdHlwZSBhbmQgb3B0aW9uYWxseSBhIGRlZmF1bHQgdmFsdWUuXCIsXG4gIGZpZWxkczogKCkgPT4gKHtcbiAgICBuYW1lOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICByZXNvbHZlOiAoaW5wdXRWYWx1ZSkgPT4gaW5wdXRWYWx1ZS5uYW1lXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgIHJlc29sdmU6IChpbnB1dFZhbHVlKSA9PiBpbnB1dFZhbHVlLmRlc2NyaXB0aW9uXG4gICAgfSxcbiAgICB0eXBlOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlKSxcbiAgICAgIHJlc29sdmU6IChpbnB1dFZhbHVlKSA9PiBpbnB1dFZhbHVlLnR5cGVcbiAgICB9LFxuICAgIGRlZmF1bHRWYWx1ZToge1xuICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkEgR3JhcGhRTC1mb3JtYXR0ZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBpbnB1dCB2YWx1ZS5cIixcbiAgICAgIHJlc29sdmUoaW5wdXRWYWx1ZSkge1xuICAgICAgICBjb25zdCB7IHR5cGUsIGRlZmF1bHRWYWx1ZSB9ID0gaW5wdXRWYWx1ZTtcbiAgICAgICAgY29uc3QgdmFsdWVBU1QgPSBhc3RGcm9tVmFsdWUoZGVmYXVsdFZhbHVlLCB0eXBlKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlQVNUID8gcHJpbnQodmFsdWVBU1QpIDogbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIGlzRGVwcmVjYXRlZDoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgIHJlc29sdmU6IChmaWVsZCkgPT4gZmllbGQuZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbFxuICAgIH0sXG4gICAgZGVwcmVjYXRpb25SZWFzb246IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICByZXNvbHZlOiAob2JqKSA9PiBvYmouZGVwcmVjYXRpb25SZWFzb25cbiAgICB9XG4gIH0pXG59KTtcbmNvbnN0IF9fRW51bVZhbHVlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgbmFtZTogXCJfX0VudW1WYWx1ZVwiLFxuICBkZXNjcmlwdGlvbjogXCJPbmUgcG9zc2libGUgdmFsdWUgZm9yIGEgZ2l2ZW4gRW51bS4gRW51bSB2YWx1ZXMgYXJlIHVuaXF1ZSB2YWx1ZXMsIG5vdCBhIHBsYWNlaG9sZGVyIGZvciBhIHN0cmluZyBvciBudW1lcmljIHZhbHVlLiBIb3dldmVyIGFuIEVudW0gdmFsdWUgaXMgcmV0dXJuZWQgaW4gYSBKU09OIHJlc3BvbnNlIGFzIGEgc3RyaW5nLlwiLFxuICBmaWVsZHM6ICgpID0+ICh7XG4gICAgbmFtZToge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgICAgcmVzb2x2ZTogKGVudW1WYWx1ZSkgPT4gZW51bVZhbHVlLm5hbWVcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKGVudW1WYWx1ZSkgPT4gZW51bVZhbHVlLmRlc2NyaXB0aW9uXG4gICAgfSxcbiAgICBpc0RlcHJlY2F0ZWQ6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgICByZXNvbHZlOiAoZW51bVZhbHVlKSA9PiBlbnVtVmFsdWUuZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbFxuICAgIH0sXG4gICAgZGVwcmVjYXRpb25SZWFzb246IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICByZXNvbHZlOiAoZW51bVZhbHVlKSA9PiBlbnVtVmFsdWUuZGVwcmVjYXRpb25SZWFzb25cbiAgICB9XG4gIH0pXG59KTtcbmxldCBUeXBlS2luZDtcbihmdW5jdGlvbihUeXBlS2luZDIpIHtcbiAgVHlwZUtpbmQyW1wiU0NBTEFSXCJdID0gXCJTQ0FMQVJcIjtcbiAgVHlwZUtpbmQyW1wiT0JKRUNUXCJdID0gXCJPQkpFQ1RcIjtcbiAgVHlwZUtpbmQyW1wiSU5URVJGQUNFXCJdID0gXCJJTlRFUkZBQ0VcIjtcbiAgVHlwZUtpbmQyW1wiVU5JT05cIl0gPSBcIlVOSU9OXCI7XG4gIFR5cGVLaW5kMltcIkVOVU1cIl0gPSBcIkVOVU1cIjtcbiAgVHlwZUtpbmQyW1wiSU5QVVRfT0JKRUNUXCJdID0gXCJJTlBVVF9PQkpFQ1RcIjtcbiAgVHlwZUtpbmQyW1wiTElTVFwiXSA9IFwiTElTVFwiO1xuICBUeXBlS2luZDJbXCJOT05fTlVMTFwiXSA9IFwiTk9OX05VTExcIjtcbn0pKFR5cGVLaW5kIHx8IChUeXBlS2luZCA9IHt9KSk7XG5jb25zdCBfX1R5cGVLaW5kID0gbmV3IEdyYXBoUUxFbnVtVHlwZSh7XG4gIG5hbWU6IFwiX19UeXBlS2luZFwiLFxuICBkZXNjcmlwdGlvbjogXCJBbiBlbnVtIGRlc2NyaWJpbmcgd2hhdCBraW5kIG9mIHR5cGUgYSBnaXZlbiBgX19UeXBlYCBpcy5cIixcbiAgdmFsdWVzOiB7XG4gICAgU0NBTEFSOiB7XG4gICAgICB2YWx1ZTogVHlwZUtpbmQuU0NBTEFSLFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhIHNjYWxhci5cIlxuICAgIH0sXG4gICAgT0JKRUNUOiB7XG4gICAgICB2YWx1ZTogVHlwZUtpbmQuT0JKRUNULFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhbiBvYmplY3QuIGBmaWVsZHNgIGFuZCBgaW50ZXJmYWNlc2AgYXJlIHZhbGlkIGZpZWxkcy5cIlxuICAgIH0sXG4gICAgSU5URVJGQUNFOiB7XG4gICAgICB2YWx1ZTogVHlwZUtpbmQuSU5URVJGQUNFLFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhbiBpbnRlcmZhY2UuIGBmaWVsZHNgLCBgaW50ZXJmYWNlc2AsIGFuZCBgcG9zc2libGVUeXBlc2AgYXJlIHZhbGlkIGZpZWxkcy5cIlxuICAgIH0sXG4gICAgVU5JT046IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5VTklPTixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkluZGljYXRlcyB0aGlzIHR5cGUgaXMgYSB1bmlvbi4gYHBvc3NpYmxlVHlwZXNgIGlzIGEgdmFsaWQgZmllbGQuXCJcbiAgICB9LFxuICAgIEVOVU06IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5FTlVNLFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhbiBlbnVtLiBgZW51bVZhbHVlc2AgaXMgYSB2YWxpZCBmaWVsZC5cIlxuICAgIH0sXG4gICAgSU5QVVRfT0JKRUNUOiB7XG4gICAgICB2YWx1ZTogVHlwZUtpbmQuSU5QVVRfT0JKRUNULFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhbiBpbnB1dCBvYmplY3QuIGBpbnB1dEZpZWxkc2AgaXMgYSB2YWxpZCBmaWVsZC5cIlxuICAgIH0sXG4gICAgTElTVDoge1xuICAgICAgdmFsdWU6IFR5cGVLaW5kLkxJU1QsXG4gICAgICBkZXNjcmlwdGlvbjogXCJJbmRpY2F0ZXMgdGhpcyB0eXBlIGlzIGEgbGlzdC4gYG9mVHlwZWAgaXMgYSB2YWxpZCBmaWVsZC5cIlxuICAgIH0sXG4gICAgTk9OX05VTEw6IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5OT05fTlVMTCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkluZGljYXRlcyB0aGlzIHR5cGUgaXMgYSBub24tbnVsbC4gYG9mVHlwZWAgaXMgYSB2YWxpZCBmaWVsZC5cIlxuICAgIH1cbiAgfVxufSk7XG5jb25zdCBTY2hlbWFNZXRhRmllbGREZWYgPSB7XG4gIG5hbWU6IFwiX19zY2hlbWFcIixcbiAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKF9fU2NoZW1hKSxcbiAgZGVzY3JpcHRpb246IFwiQWNjZXNzIHRoZSBjdXJyZW50IHR5cGUgc2NoZW1hIG9mIHRoaXMgc2VydmVyLlwiLFxuICBhcmdzOiBbXSxcbiAgcmVzb2x2ZTogKF9zb3VyY2UsIF9hcmdzLCBfY29udGV4dCwgeyBzY2hlbWEgfSkgPT4gc2NoZW1hLFxuICBkZXByZWNhdGlvblJlYXNvbjogdm9pZCAwLFxuICBleHRlbnNpb25zOiAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgYXN0Tm9kZTogdm9pZCAwXG59O1xuY29uc3QgVHlwZU1ldGFGaWVsZERlZiA9IHtcbiAgbmFtZTogXCJfX3R5cGVcIixcbiAgdHlwZTogX19UeXBlLFxuICBkZXNjcmlwdGlvbjogXCJSZXF1ZXN0IHRoZSB0eXBlIGluZm9ybWF0aW9uIG9mIGEgc2luZ2xlIHR5cGUuXCIsXG4gIGFyZ3M6IFtcbiAgICB7XG4gICAgICBuYW1lOiBcIm5hbWVcIixcbiAgICAgIGRlc2NyaXB0aW9uOiB2b2lkIDAsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICBkZWZhdWx0VmFsdWU6IHZvaWQgMCxcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiB2b2lkIDAsXG4gICAgICBleHRlbnNpb25zOiAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgICAgIGFzdE5vZGU6IHZvaWQgMFxuICAgIH1cbiAgXSxcbiAgcmVzb2x2ZTogKF9zb3VyY2UsIHsgbmFtZSB9LCBfY29udGV4dCwgeyBzY2hlbWEgfSkgPT4gc2NoZW1hLmdldFR5cGUobmFtZSksXG4gIGRlcHJlY2F0aW9uUmVhc29uOiB2b2lkIDAsXG4gIGV4dGVuc2lvbnM6IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpLFxuICBhc3ROb2RlOiB2b2lkIDBcbn07XG5jb25zdCBUeXBlTmFtZU1ldGFGaWVsZERlZiA9IHtcbiAgbmFtZTogXCJfX3R5cGVuYW1lXCIsXG4gIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgZGVzY3JpcHRpb246IFwiVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgT2JqZWN0IHR5cGUgYXQgcnVudGltZS5cIixcbiAgYXJnczogW10sXG4gIHJlc29sdmU6IChfc291cmNlLCBfYXJncywgX2NvbnRleHQsIHsgcGFyZW50VHlwZSB9KSA9PiBwYXJlbnRUeXBlLm5hbWUsXG4gIGRlcHJlY2F0aW9uUmVhc29uOiB2b2lkIDAsXG4gIGV4dGVuc2lvbnM6IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpLFxuICBhc3ROb2RlOiB2b2lkIDBcbn07XG5PYmplY3QuZnJlZXplKFtcbiAgX19TY2hlbWEsXG4gIF9fRGlyZWN0aXZlLFxuICBfX0RpcmVjdGl2ZUxvY2F0aW9uLFxuICBfX1R5cGUsXG4gIF9fRmllbGQsXG4gIF9fSW5wdXRWYWx1ZSxcbiAgX19FbnVtVmFsdWUsXG4gIF9fVHlwZUtpbmRcbl0pO1xuZXhwb3J0IHsgU2NoZW1hTWV0YUZpZWxkRGVmIGFzIFMsIFR5cGVNZXRhRmllbGREZWYgYXMgVCwgVHlwZU5hbWVNZXRhRmllbGREZWYgYXMgYSB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBaUtBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFPQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXhFQTtBQTBFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQVZBO0FBV0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQVRBO0FBVUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFRQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBU0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBU0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBU0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQVNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBUUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQWhMQTtBQUNBO0FBbUxBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBTkE7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBMURBO0FBQ0E7QUEwREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQU1BO0FBQ0E7QUFBQTtBQU1BO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFEQTtBQWpCQTtBQUNBO0FBb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFyRkE7QUFDQTtBQXFGQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBaEJBO0FBa0JBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBZEE7QUFDQTtBQWNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFkQTtBQUNBO0FBY0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVEE7QUFXQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXpDQTtBQUNBO0FBeUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBOUNBO0FBQ0E7QUE4Q0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBV0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQUFBO0FBU0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUE5Q0E7QUFDQTtBQThDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF0Q0E7QUFDQTtBQXNDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBOUVBO0FBQ0E7QUE4RUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUEzQ0E7QUFDQTtBQTJDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQVNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUEzQ0E7QUE0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUE3QkE7QUE4QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUE5QkE7QUErQkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBM0JBO0FBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBOUJBO0FBK0JBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQU5BO0FBUUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBM0JBO0FBSEE7QUFDQTtBQW9DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQUNBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQWpCQTtBQUhBO0FBQ0E7QUFpQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQXpFQTtBQUhBO0FBQ0E7QUFpRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUE3QkE7QUE4QkE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQUNBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWRBO0FBZUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFRQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQUNBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWRBO0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQUNBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWRBO0FBZUE7QUFDQTtBQUNBO0FBRkE7QUF4R0E7QUFIQTtBQUNBO0FBZ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBREE7QUFDQTtBQUtBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFZQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUE3QkE7QUFIQTtBQUNBO0FBcUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUExQkE7QUFIQTtBQUNBO0FBa0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFiQTtBQUhBO0FBQ0E7QUFxQkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUE3QkE7QUFIQTtBQUNBO0FBcUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFSQTs7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQVVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQWxCQTs7QUFvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVJBOztBQVVBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/introspection.es.js\n");
|
2604 |
|
2605 | }),
|
2606 |
|
2607 | "../../graphiql-react/dist/javascript.es.js":
|
2608 |
|
2609 |
|
2610 |
|
2611 |
|
2612 | (function(module, exports, __webpack_require__) {
|
2613 |
|
2614 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.j = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var javascript$2 = {\n exports: {}\n };\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports);\n })(function (CodeMirror) {\n CodeMirror.defineMode(\"javascript\", function (config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false;\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n var keywords = function () {\n function kw(type2) {\n return {\n type: type2,\n style: \"keyword\"\n };\n }\n\n __name(kw, \"kw\");\n\n var A = kw(\"keyword a\"),\n B = kw(\"keyword b\"),\n C = kw(\"keyword c\"),\n D = kw(\"keyword d\");\n var operator = kw(\"operator\"),\n atom = {\n type: \"atom\",\n style: \"atom\"\n };\n return {\n \"if\": kw(\"if\"),\n \"while\": A,\n \"with\": A,\n \"else\": B,\n \"do\": B,\n \"try\": B,\n \"finally\": B,\n \"return\": D,\n \"break\": D,\n \"continue\": D,\n \"new\": kw(\"new\"),\n \"delete\": C,\n \"void\": C,\n \"throw\": C,\n \"debugger\": kw(\"debugger\"),\n \"var\": kw(\"var\"),\n \"const\": kw(\"var\"),\n \"let\": kw(\"var\"),\n \"function\": kw(\"function\"),\n \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"),\n \"switch\": kw(\"switch\"),\n \"case\": kw(\"case\"),\n \"default\": kw(\"default\"),\n \"in\": operator,\n \"typeof\": operator,\n \"instanceof\": operator,\n \"true\": atom,\n \"false\": atom,\n \"null\": atom,\n \"undefined\": atom,\n \"NaN\": atom,\n \"Infinity\": atom,\n \"this\": kw(\"this\"),\n \"class\": kw(\"class\"),\n \"super\": kw(\"atom\"),\n \"yield\": C,\n \"export\": kw(\"export\"),\n \"import\": kw(\"import\"),\n \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false,\n next,\n inSet = false;\n\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;else if (inSet && next == \"]\") inSet = false;\n }\n\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n __name(readRegexp, \"readRegexp\");\n\n var type, content;\n\n function ret(tp, style, cont2) {\n type = tp;\n content = cont2;\n return style;\n }\n\n __name(ret, \"ret\");\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\");\n } else if (ch == \"<\" && stream.match(\"!--\") || ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start))) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\");\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch);\n if (ch == \">\") stream.eat(ch);\n }\n }\n\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\");\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current();\n\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word];\n return ret(kw.type, kw.style, word);\n }\n\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false)) return ret(\"async\", \"keyword\", word);\n }\n\n return ret(\"variable\", \"variable\", word);\n }\n }\n\n __name(tokenBase, \"tokenBase\");\n\n function tokenString(quote) {\n return function (stream, state) {\n var escaped = false,\n next;\n\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)) {\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n __name(tokenString, \"tokenString\");\n\n function tokenComment(stream, state) {\n var maybeEnd = false,\n ch;\n\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n\n maybeEnd = ch == \"*\";\n }\n\n return ret(\"comment\", \"comment\");\n }\n\n __name(tokenComment, \"tokenComment\");\n\n function tokenQuasi(stream, state) {\n var escaped = false,\n next;\n\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n\n escaped = !escaped && next == \"\\\\\";\n }\n\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n __name(tokenQuasi, \"tokenQuasi\");\n\n var brackets = \"([{}])\";\n\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) {\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow));\n if (m) arrow = m.index;\n }\n\n var depth = 0,\n sawSomething = false;\n\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n\n if (bracket >= 0 && bracket < 3) {\n if (!depth) {\n ++pos;\n break;\n }\n\n if (--depth == 0) {\n if (ch == \"(\") sawSomething = true;\n break;\n }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return;\n var next = stream.string.charAt(pos - 1);\n\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") {\n pos--;\n break;\n }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n __name(findFatArrow, \"findFatArrow\");\n\n var atomicTypes = {\n \"atom\": true,\n \"number\": true,\n \"variable\": true,\n \"string\": true,\n \"regexp\": true,\n \"this\": true,\n \"import\": true,\n \"jsonld-keyword\": true\n };\n\n function JSLexical(indented, column, type2, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type2;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n __name(JSLexical, \"JSLexical\");\n\n function inScope(state, varname) {\n if (!trackScope) return false;\n\n for (var v = state.localVars; v; v = v.next) if (v.name == varname) return true;\n\n for (var cx2 = state.context; cx2; cx2 = cx2.prev) {\n for (var v = cx2.vars; v; v = v.next) if (v.name == varname) return true;\n }\n }\n\n __name(inScope, \"inScope\");\n\n function parseJS(state, style, type2, content2, stream) {\n var cc = state.cc;\n cx.state = state;\n cx.stream = stream;\n cx.marked = null, cx.cc = cc;\n cx.style = style;\n if (!state.lexical.hasOwnProperty(\"align\")) state.lexical.align = true;\n\n while (true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n\n if (combinator(type2, content2)) {\n while (cc.length && cc[cc.length - 1].lex) cc.pop()();\n\n if (cx.marked) return cx.marked;\n if (type2 == \"variable\" && inScope(state, content2)) return \"variable-2\";\n return style;\n }\n }\n }\n\n __name(parseJS, \"parseJS\");\n\n var cx = {\n state: null,\n column: null,\n marked: null,\n cc: null\n };\n\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n\n __name(pass, \"pass\");\n\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n\n __name(cont, \"cont\");\n\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true;\n\n return false;\n }\n\n __name(inList, \"inList\");\n\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return;\n\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n var newContext = registerVarScoped(varname, state.context);\n\n if (newContext != null) {\n state.context = newContext;\n return;\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars);\n return;\n }\n }\n\n if (parserConfig.globalVars && !inList(varname, state.globalVars)) state.globalVars = new Var(varname, state.globalVars);\n }\n\n __name(register, \"register\");\n\n function registerVarScoped(varname, context) {\n if (!context) {\n return null;\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev);\n if (!inner) return null;\n if (inner == context.prev) return context;\n return new Context(inner, context.vars, true);\n } else if (inList(varname, context.vars)) {\n return context;\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false);\n }\n }\n\n __name(registerVarScoped, \"registerVarScoped\");\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\";\n }\n\n __name(isModifier, \"isModifier\");\n\n function Context(prev, vars, block2) {\n this.prev = prev;\n this.vars = vars;\n this.block = block2;\n }\n\n __name(Context, \"Context\");\n\n function Var(name, next) {\n this.name = name;\n this.next = next;\n }\n\n __name(Var, \"Var\");\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null));\n\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false);\n cx.state.localVars = defaultVars;\n }\n\n __name(pushcontext, \"pushcontext\");\n\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true);\n cx.state.localVars = null;\n }\n\n __name(pushblockcontext, \"pushblockcontext\");\n\n pushcontext.lex = pushblockcontext.lex = true;\n\n function popcontext() {\n cx.state.localVars = cx.state.context.vars;\n cx.state.context = cx.state.context.prev;\n }\n\n __name(popcontext, \"popcontext\");\n\n popcontext.lex = true;\n\n function pushlex(type2, info) {\n var result = /* @__PURE__ */__name(function () {\n var state = cx.state,\n indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev) indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type2, null, state.lexical, info);\n }, \"result\");\n\n result.lex = true;\n return result;\n }\n\n __name(pushlex, \"pushlex\");\n\n function poplex() {\n var state = cx.state;\n\n if (state.lexical.prev) {\n if (state.lexical.type == \")\") state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n\n __name(poplex, \"poplex\");\n\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type2) {\n if (type2 == wanted) return cont();else if (wanted == \";\" || type2 == \"}\" || type2 == \")\" || type2 == \"]\") return pass();else return cont(exp);\n }\n\n __name(exp, \"exp\");\n\n return exp;\n }\n\n __name(expect, \"expect\");\n\n function statement(type2, value) {\n if (type2 == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type2 == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type2 == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type2 == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type2 == \"debugger\") return cont(expect(\";\"));\n if (type2 == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type2 == \";\") return cont();\n\n if (type2 == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex) cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n\n if (type2 == \"function\") return cont(functiondef);\n if (type2 == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n\n if (type2 == \"class\" || isTS && value == \"interface\") {\n cx.marked = \"keyword\";\n return cont(pushlex(\"form\", type2 == \"class\" ? type2 : value), className, poplex);\n }\n\n if (type2 == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\";\n return cont(statement);\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\";\n if (value == \"enum\") return cont(enumdef);else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex);\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\";\n return cont(pushlex(\"form\"), expression, statement, poplex);\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\";\n return cont(statement);\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n\n if (type2 == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext, block, poplex, poplex, popcontext);\n if (type2 == \"case\") return cont(expression, expect(\":\"));\n if (type2 == \"default\") return cont(expect(\":\"));\n if (type2 == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type2 == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type2 == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type2 == \"async\") return cont(statement);\n if (value == \"@\") return cont(expression, statement);\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n\n __name(statement, \"statement\");\n\n function maybeCatchBinding(type2) {\n if (type2 == \"(\") return cont(funarg, expect(\")\"));\n }\n\n __name(maybeCatchBinding, \"maybeCatchBinding\");\n\n function expression(type2, value) {\n return expressionInner(type2, value, false);\n }\n\n __name(expression, \"expression\");\n\n function expressionNoComma(type2, value) {\n return expressionInner(type2, value, true);\n }\n\n __name(expressionNoComma, \"expressionNoComma\");\n\n function parenExpr(type2) {\n if (type2 != \"(\") return pass();\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex);\n }\n\n __name(parenExpr, \"parenExpr\");\n\n function expressionInner(type2, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type2 == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);else if (type2 == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type2)) return cont(maybeop);\n if (type2 == \"function\") return cont(functiondef, maybeop);\n\n if (type2 == \"class\" || isTS && value == \"interface\") {\n cx.marked = \"keyword\";\n return cont(pushlex(\"form\"), classExpression, poplex);\n }\n\n if (type2 == \"keyword c\" || type2 == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type2 == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type2 == \"operator\" || type2 == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type2 == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type2 == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type2 == \"quasi\") return pass(quasi, maybeop);\n if (type2 == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n\n __name(expressionInner, \"expressionInner\");\n\n function maybeexpression(type2) {\n if (type2.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n __name(maybeexpression, \"maybeexpression\");\n\n function maybeoperatorComma(type2, value) {\n if (type2 == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type2, value, false);\n }\n\n __name(maybeoperatorComma, \"maybeoperatorComma\");\n\n function maybeoperatorNoComma(type2, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type2 == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n\n if (type2 == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false)) return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n\n if (type2 == \"quasi\") {\n return pass(quasi, me);\n }\n\n if (type2 == \";\") return;\n if (type2 == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type2 == \".\") return cont(property, me);\n if (type2 == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n\n if (isTS && value == \"as\") {\n cx.marked = \"keyword\";\n return cont(typeexpr, me);\n }\n\n if (type2 == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\";\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1);\n return cont(expr);\n }\n }\n\n __name(maybeoperatorNoComma, \"maybeoperatorNoComma\");\n\n function quasi(type2, value) {\n if (type2 != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n\n __name(quasi, \"quasi\");\n\n function continueQuasi(type2) {\n if (type2 == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n\n __name(continueQuasi, \"continueQuasi\");\n\n function arrowBody(type2) {\n findFatArrow(cx.stream, cx.state);\n return pass(type2 == \"{\" ? statement : expression);\n }\n\n __name(arrowBody, \"arrowBody\");\n\n function arrowBodyNoComma(type2) {\n findFatArrow(cx.stream, cx.state);\n return pass(type2 == \"{\" ? statement : expressionNoComma);\n }\n\n __name(arrowBodyNoComma, \"arrowBodyNoComma\");\n\n function maybeTarget(noComma) {\n return function (type2) {\n if (type2 == \".\") return cont(noComma ? targetNoComma : target);else if (type2 == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma);else return pass(noComma ? expressionNoComma : expression);\n };\n }\n\n __name(maybeTarget, \"maybeTarget\");\n\n function target(_, value) {\n if (value == \"target\") {\n cx.marked = \"keyword\";\n return cont(maybeoperatorComma);\n }\n }\n\n __name(target, \"target\");\n\n function targetNoComma(_, value) {\n if (value == \"target\") {\n cx.marked = \"keyword\";\n return cont(maybeoperatorNoComma);\n }\n }\n\n __name(targetNoComma, \"targetNoComma\");\n\n function maybelabel(type2) {\n if (type2 == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n\n __name(maybelabel, \"maybelabel\");\n\n function property(type2) {\n if (type2 == \"variable\") {\n cx.marked = \"property\";\n return cont();\n }\n }\n\n __name(property, \"property\");\n\n function objprop(type2, value) {\n if (type2 == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type2 == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m;\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false))) cx.state.fatArrowAt = cx.stream.pos + m[0].length;\n return cont(afterprop);\n } else if (type2 == \"number\" || type2 == \"string\") {\n cx.marked = jsonldMode ? \"property\" : cx.style + \" property\";\n return cont(afterprop);\n } else if (type2 == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type2 == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type2 == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type2 == \":\") {\n return pass(afterprop);\n }\n }\n\n __name(objprop, \"objprop\");\n\n function getterSetter(type2) {\n if (type2 != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n\n __name(getterSetter, \"getterSetter\");\n\n function afterprop(type2) {\n if (type2 == \":\") return cont(expressionNoComma);\n if (type2 == \"(\") return pass(functiondef);\n }\n\n __name(afterprop, \"afterprop\");\n\n function commasep(what, end, sep) {\n function proceed(type2, value) {\n if (sep ? sep.indexOf(type2) > -1 : type2 == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function (type3, value2) {\n if (type3 == end || value2 == end) return pass();\n return pass(what);\n }, proceed);\n }\n\n if (type2 == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what);\n return cont(expect(end));\n }\n\n __name(proceed, \"proceed\");\n\n return function (type2, value) {\n if (type2 == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n\n __name(commasep, \"commasep\");\n\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++) cx.cc.push(arguments[i]);\n\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n\n __name(contCommasep, \"contCommasep\");\n\n function block(type2) {\n if (type2 == \"}\") return cont();\n return pass(statement, block);\n }\n\n __name(block, \"block\");\n\n function maybetype(type2, value) {\n if (isTS) {\n if (type2 == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n\n __name(maybetype, \"maybetype\");\n\n function maybetypeOrIn(type2, value) {\n if (isTS && (type2 == \":\" || value == \"in\")) return cont(typeexpr);\n }\n\n __name(maybetypeOrIn, \"maybetypeOrIn\");\n\n function mayberettype(type2) {\n if (isTS && type2 == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr);else return cont(typeexpr);\n }\n }\n\n __name(mayberettype, \"mayberettype\");\n\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\";\n return cont();\n }\n }\n\n __name(isKW, \"isKW\");\n\n function typeexpr(type2, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\";\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr);\n }\n\n if (type2 == \"variable\" || value == \"void\") {\n cx.marked = \"type\";\n return cont(afterType);\n }\n\n if (value == \"|\" || value == \"&\") return cont(typeexpr);\n if (type2 == \"string\" || type2 == \"number\" || type2 == \"atom\") return cont(afterType);\n if (type2 == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType);\n if (type2 == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType);\n if (type2 == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType);\n if (type2 == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr);\n\n if (type2 == \"quasi\") {\n return pass(quasiType, afterType);\n }\n }\n\n __name(typeexpr, \"typeexpr\");\n\n function maybeReturnType(type2) {\n if (type2 == \"=>\") return cont(typeexpr);\n }\n\n __name(maybeReturnType, \"maybeReturnType\");\n\n function typeprops(type2) {\n if (type2.match(/[\\}\\)\\]]/)) return cont();\n if (type2 == \",\" || type2 == \";\") return cont(typeprops);\n return pass(typeprop, typeprops);\n }\n\n __name(typeprops, \"typeprops\");\n\n function typeprop(type2, value) {\n if (type2 == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(typeprop);\n } else if (value == \"?\" || type2 == \"number\" || type2 == \"string\") {\n return cont(typeprop);\n } else if (type2 == \":\") {\n return cont(typeexpr);\n } else if (type2 == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop);\n } else if (type2 == \"(\") {\n return pass(functiondecl, typeprop);\n } else if (!type2.match(/[;\\}\\)\\],]/)) {\n return cont();\n }\n }\n\n __name(typeprop, \"typeprop\");\n\n function quasiType(type2, value) {\n if (type2 != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n\n __name(quasiType, \"quasiType\");\n\n function continueQuasiType(type2) {\n if (type2 == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n\n __name(continueQuasiType, \"continueQuasiType\");\n\n function typearg(type2, value) {\n if (type2 == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg);\n if (type2 == \":\") return cont(typeexpr);\n if (type2 == \"spread\") return cont(typearg);\n return pass(typeexpr);\n }\n\n __name(typearg, \"typearg\");\n\n function afterType(type2, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType);\n if (value == \"|\" || type2 == \".\" || value == \"&\") return cont(typeexpr);\n if (type2 == \"[\") return cont(typeexpr, expect(\"]\"), afterType);\n\n if (value == \"extends\" || value == \"implements\") {\n cx.marked = \"keyword\";\n return cont(typeexpr);\n }\n\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr);\n }\n\n __name(afterType, \"afterType\");\n\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType);\n }\n\n __name(maybeTypeArgs, \"maybeTypeArgs\");\n\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault);\n }\n\n __name(typeparam, \"typeparam\");\n\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr);\n }\n\n __name(maybeTypeDefault, \"maybeTypeDefault\");\n\n function vardef(_, value) {\n if (value == \"enum\") {\n cx.marked = \"keyword\";\n return cont(enumdef);\n }\n\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n\n __name(vardef, \"vardef\");\n\n function pattern(type2, value) {\n if (isTS && isModifier(value)) {\n cx.marked = \"keyword\";\n return cont(pattern);\n }\n\n if (type2 == \"variable\") {\n register(value);\n return cont();\n }\n\n if (type2 == \"spread\") return cont(pattern);\n if (type2 == \"[\") return contCommasep(eltpattern, \"]\");\n if (type2 == \"{\") return contCommasep(proppattern, \"}\");\n }\n\n __name(pattern, \"pattern\");\n\n function proppattern(type2, value) {\n if (type2 == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n\n if (type2 == \"variable\") cx.marked = \"property\";\n if (type2 == \"spread\") return cont(pattern);\n if (type2 == \"}\") return pass();\n if (type2 == \"[\") return cont(expression, expect(\"]\"), expect(\":\"), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n\n __name(proppattern, \"proppattern\");\n\n function eltpattern() {\n return pass(pattern, maybeAssign);\n }\n\n __name(eltpattern, \"eltpattern\");\n\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n\n __name(maybeAssign, \"maybeAssign\");\n\n function vardefCont(type2) {\n if (type2 == \",\") return cont(vardef);\n }\n\n __name(vardefCont, \"vardefCont\");\n\n function maybeelse(type2, value) {\n if (type2 == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n\n __name(maybeelse, \"maybeelse\");\n\n function forspec(type2, value) {\n if (value == \"await\") return cont(forspec);\n if (type2 == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n\n __name(forspec, \"forspec\");\n\n function forspec1(type2) {\n if (type2 == \"var\") return cont(vardef, forspec2);\n if (type2 == \"variable\") return cont(forspec2);\n return pass(forspec2);\n }\n\n __name(forspec1, \"forspec1\");\n\n function forspec2(type2, value) {\n if (type2 == \")\") return cont();\n if (type2 == \";\") return cont(forspec2);\n\n if (value == \"in\" || value == \"of\") {\n cx.marked = \"keyword\";\n return cont(expression, forspec2);\n }\n\n return pass(expression, forspec2);\n }\n\n __name(forspec2, \"forspec2\");\n\n function functiondef(type2, value) {\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(functiondef);\n }\n\n if (type2 == \"variable\") {\n register(value);\n return cont(functiondef);\n }\n\n if (type2 == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef);\n }\n\n __name(functiondef, \"functiondef\");\n\n function functiondecl(type2, value) {\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(functiondecl);\n }\n\n if (type2 == \"variable\") {\n register(value);\n return cont(functiondecl);\n }\n\n if (type2 == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl);\n }\n\n __name(functiondecl, \"functiondecl\");\n\n function typename(type2, value) {\n if (type2 == \"keyword\" || type2 == \"variable\") {\n cx.marked = \"type\";\n return cont(typename);\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex);\n }\n }\n\n __name(typename, \"typename\");\n\n function funarg(type2, value) {\n if (value == \"@\") cont(expression, funarg);\n if (type2 == \"spread\") return cont(funarg);\n\n if (isTS && isModifier(value)) {\n cx.marked = \"keyword\";\n return cont(funarg);\n }\n\n if (isTS && type2 == \"this\") return cont(maybetype, maybeAssign);\n return pass(pattern, maybetype, maybeAssign);\n }\n\n __name(funarg, \"funarg\");\n\n function classExpression(type2, value) {\n if (type2 == \"variable\") return className(type2, value);\n return classNameAfter(type2, value);\n }\n\n __name(classExpression, \"classExpression\");\n\n function className(type2, value) {\n if (type2 == \"variable\") {\n register(value);\n return cont(classNameAfter);\n }\n }\n\n __name(className, \"className\");\n\n function classNameAfter(type2, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter);\n\n if (value == \"extends\" || value == \"implements\" || isTS && type2 == \",\") {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n\n if (type2 == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n\n __name(classNameAfter, \"classNameAfter\");\n\n function classBody(type2, value) {\n if (type2 == \"async\" || type2 == \"variable\" && (value == \"static\" || value == \"get\" || value == \"set\" || isTS && isModifier(value)) && cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false)) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n\n if (type2 == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n\n if (type2 == \"number\" || type2 == \"string\") return cont(classfield, classBody);\n if (type2 == \"[\") return cont(expression, maybetype, expect(\"]\"), classfield, classBody);\n\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n\n if (isTS && type2 == \"(\") return pass(functiondecl, classBody);\n if (type2 == \";\" || type2 == \",\") return cont(classBody);\n if (type2 == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody);\n }\n\n __name(classBody, \"classBody\");\n\n function classfield(type2, value) {\n if (value == \"!\") return cont(classfield);\n if (value == \"?\") return cont(classfield);\n if (type2 == \":\") return cont(typeexpr, maybeAssign);\n if (value == \"=\") return cont(expressionNoComma);\n var context = cx.state.lexical.prev,\n isInterface = context && context.info == \"interface\";\n return pass(isInterface ? functiondecl : functiondef);\n }\n\n __name(classfield, \"classfield\");\n\n function afterExport(type2, value) {\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(maybeFrom, expect(\";\"));\n }\n\n if (value == \"default\") {\n cx.marked = \"keyword\";\n return cont(expression, expect(\";\"));\n }\n\n if (type2 == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n\n __name(afterExport, \"afterExport\");\n\n function exportField(type2, value) {\n if (value == \"as\") {\n cx.marked = \"keyword\";\n return cont(expect(\"variable\"));\n }\n\n if (type2 == \"variable\") return pass(expressionNoComma, exportField);\n }\n\n __name(exportField, \"exportField\");\n\n function afterImport(type2) {\n if (type2 == \"string\") return cont();\n if (type2 == \"(\") return pass(expression);\n if (type2 == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n\n __name(afterImport, \"afterImport\");\n\n function importSpec(type2, value) {\n if (type2 == \"{\") return contCommasep(importSpec, \"}\");\n if (type2 == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n\n __name(importSpec, \"importSpec\");\n\n function maybeMoreImports(type2) {\n if (type2 == \",\") return cont(importSpec, maybeMoreImports);\n }\n\n __name(maybeMoreImports, \"maybeMoreImports\");\n\n function maybeAs(_type, value) {\n if (value == \"as\") {\n cx.marked = \"keyword\";\n return cont(importSpec);\n }\n }\n\n __name(maybeAs, \"maybeAs\");\n\n function maybeFrom(_type, value) {\n if (value == \"from\") {\n cx.marked = \"keyword\";\n return cont(expression);\n }\n }\n\n __name(maybeFrom, \"maybeFrom\");\n\n function arrayLiteral(type2) {\n if (type2 == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n\n __name(arrayLiteral, \"arrayLiteral\");\n\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex);\n }\n\n __name(enumdef, \"enumdef\");\n\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n __name(enummember, \"enummember\");\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" || isOperatorChar.test(textAfter.charAt(0)) || /[,.]/.test(textAfter.charAt(0));\n }\n\n __name(isContinuedStatement, \"isContinuedStatement\");\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase && /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) || state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)));\n }\n\n __name(expressionAllowed, \"expressionAllowed\");\n\n return {\n startState: function (basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\") state.globalVars = parserConfig.globalVars;\n return state;\n },\n token: function (stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\")) state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n indent: function (state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0),\n lexical = state.lexical,\n top;\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;else if (c != maybeelse && c != popcontext) break;\n }\n\n while ((lexical.type == \"stat\" || lexical.type == \"form\") && (firstChar == \"}\" || (top = state.cc[state.cc.length - 1]) && (top == maybeoperatorComma || top == maybeoperatorNoComma) && !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))) lexical = lexical.prev;\n\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\") lexical = lexical.prev;\n var type2 = lexical.type,\n closing = firstChar == type2;\n if (type2 == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);else if (type2 == \"form\" && firstChar == \"{\") return lexical.indented;else if (type2 == \"form\") return lexical.indented + indentUnit;else if (type2 == \"stat\") return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false) return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);else if (lexical.align) return lexical.column + (closing ? 0 : 1);else return lexical.indented + (closing ? 0 : indentUnit);\n },\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode,\n jsonMode,\n expressionAllowed,\n skipExpression: function (state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null));\n }\n };\n });\n CodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n CodeMirror.defineMIME(\"text/javascript\", \"javascript\");\n CodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\n CodeMirror.defineMIME(\"application/javascript\", \"javascript\");\n CodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\n CodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\n CodeMirror.defineMIME(\"application/json\", {\n name: \"javascript\",\n json: true\n });\n CodeMirror.defineMIME(\"application/x-json\", {\n name: \"javascript\",\n json: true\n });\n CodeMirror.defineMIME(\"application/manifest+json\", {\n name: \"javascript\",\n json: true\n });\n CodeMirror.defineMIME(\"application/ld+json\", {\n name: \"javascript\",\n jsonld: true\n });\n CodeMirror.defineMIME(\"text/typescript\", {\n name: \"javascript\",\n typescript: true\n });\n CodeMirror.defineMIME(\"application/typescript\", {\n name: \"javascript\",\n typescript: true\n });\n });\n })();\n\n var javascript = javascript$2.exports;\n var javascript$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": javascript\n }, [javascript$2.exports]));\n _exports.j = javascript$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9qYXZhc2NyaXB0LmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9qYXZhc2NyaXB0LmVzLmpzP2ZlZDMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IGEgYXMgY29kZW1pcnJvciB9IGZyb20gXCIuL2NvZGVtaXJyb3IuZXMuanNcIjtcbmZ1bmN0aW9uIF9tZXJnZU5hbWVzcGFjZXMobiwgbSkge1xuICBtLmZvckVhY2goZnVuY3Rpb24oZSkge1xuICAgIGUgJiYgdHlwZW9mIGUgIT09IFwic3RyaW5nXCIgJiYgIUFycmF5LmlzQXJyYXkoZSkgJiYgT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgIShrIGluIG4pKSB7XG4gICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGssIGQuZ2V0ID8gZCA6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gZVtrXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUobik7XG59XG5fX25hbWUoX21lcmdlTmFtZXNwYWNlcywgXCJfbWVyZ2VOYW1lc3BhY2VzXCIpO1xudmFyIGphdmFzY3JpcHQkMiA9IHsgZXhwb3J0czoge30gfTtcbihmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcbiAgKGZ1bmN0aW9uKG1vZCkge1xuICAgIG1vZChjb2RlbWlycm9yLmV4cG9ydHMpO1xuICB9KShmdW5jdGlvbihDb2RlTWlycm9yKSB7XG4gICAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKFwiamF2YXNjcmlwdFwiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykge1xuICAgICAgdmFyIGluZGVudFVuaXQgPSBjb25maWcuaW5kZW50VW5pdDtcbiAgICAgIHZhciBzdGF0ZW1lbnRJbmRlbnQgPSBwYXJzZXJDb25maWcuc3RhdGVtZW50SW5kZW50O1xuICAgICAgdmFyIGpzb25sZE1vZGUgPSBwYXJzZXJDb25maWcuanNvbmxkO1xuICAgICAgdmFyIGpzb25Nb2RlID0gcGFyc2VyQ29uZmlnLmpzb24gfHwganNvbmxkTW9kZTtcbiAgICAgIHZhciB0cmFja1Njb3BlID0gcGFyc2VyQ29uZmlnLnRyYWNrU2NvcGUgIT09IGZhbHNlO1xuICAgICAgdmFyIGlzVFMgPSBwYXJzZXJDb25maWcudHlwZXNjcmlwdDtcbiAgICAgIHZhciB3b3JkUkUgPSBwYXJzZXJDb25maWcud29yZENoYXJhY3RlcnMgfHwgL1tcXHckXFx4YTEtXFx1ZmZmZl0vO1xuICAgICAgdmFyIGtleXdvcmRzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGZ1bmN0aW9uIGt3KHR5cGUyKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdHlwZTogdHlwZTIsIHN0eWxlOiBcImtleXdvcmRcIiB9O1xuICAgICAgICB9XG4gICAgICAgIF9fbmFtZShrdywgXCJrd1wiKTtcbiAgICAgICAgdmFyIEEgPSBrdyhcImtleXdvcmQgYVwiKSwgQiA9IGt3KFwia2V5d29yZCBiXCIpLCBDID0ga3coXCJrZXl3b3JkIGNcIiksIEQgPSBrdyhcImtleXdvcmQgZFwiKTtcbiAgICAgICAgdmFyIG9wZXJhdG9yID0ga3coXCJvcGVyYXRvclwiKSwgYXRvbSA9IHsgdHlwZTogXCJhdG9tXCIsIHN0eWxlOiBcImF0b21cIiB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFwiaWZcIjoga3coXCJpZlwiKSxcbiAgICAgICAgICBcIndoaWxlXCI6IEEsXG4gICAgICAgICAgXCJ3aXRoXCI6IEEsXG4gICAgICAgICAgXCJlbHNlXCI6IEIsXG4gICAgICAgICAgXCJkb1wiOiBCLFxuICAgICAgICAgIFwidHJ5XCI6IEIsXG4gICAgICAgICAgXCJmaW5hbGx5XCI6IEIsXG4gICAgICAgICAgXCJyZXR1cm5cIjogRCxcbiAgICAgICAgICBcImJyZWFrXCI6IEQsXG4gICAgICAgICAgXCJjb250aW51ZVwiOiBELFxuICAgICAgICAgIFwibmV3XCI6IGt3KFwibmV3XCIpLFxuICAgICAgICAgIFwiZGVsZXRlXCI6IEMsXG4gICAgICAgICAgXCJ2b2lkXCI6IEMsXG4gICAgICAgICAgXCJ0aHJvd1wiOiBDLFxuICAgICAgICAgIFwiZGVidWdnZXJcIjoga3coXCJkZWJ1Z2dlclwiKSxcbiAgICAgICAgICBcInZhclwiOiBrdyhcInZhclwiKSxcbiAgICAgICAgICBcImNvbnN0XCI6IGt3KFwidmFyXCIpLFxuICAgICAgICAgIFwibGV0XCI6IGt3KFwidmFyXCIpLFxuICAgICAgICAgIFwiZnVuY3Rpb25cIjoga3coXCJmdW5jdGlvblwiKSxcbiAgICAgICAgICBcImNhdGNoXCI6IGt3KFwiY2F0Y2hcIiksXG4gICAgICAgICAgXCJmb3JcIjoga3coXCJmb3JcIiksXG4gICAgICAgICAgXCJzd2l0Y2hcIjoga3coXCJzd2l0Y2hcIiksXG4gICAgICAgICAgXCJjYXNlXCI6IGt3KFwiY2FzZVwiKSxcbiAgICAgICAgICBcImRlZmF1bHRcIjoga3coXCJkZWZhdWx0XCIpLFxuICAgICAgICAgIFwiaW5cIjogb3BlcmF0b3IsXG4gICAgICAgICAgXCJ0eXBlb2ZcIjogb3BlcmF0b3IsXG4gICAgICAgICAgXCJpbnN0YW5jZW9mXCI6IG9wZXJhdG9yLFxuICAgICAgICAgIFwidHJ1ZVwiOiBhdG9tLFxuICAgICAgICAgIFwiZmFsc2VcIjogYXRvbSxcbiAgICAgICAgICBcIm51bGxcIjogYXRvbSxcbiAgICAgICAgICBcInVuZGVmaW5lZFwiOiBhdG9tLFxuICAgICAgICAgIFwiTmFOXCI6IGF0b20sXG4gICAgICAgICAgXCJJbmZpbml0eVwiOiBhdG9tLFxuICAgICAgICAgIFwidGhpc1wiOiBrdyhcInRoaXNcIiksXG4gICAgICAgICAgXCJjbGFzc1wiOiBrdyhcImNsYXNzXCIpLFxuICAgICAgICAgIFwic3VwZXJcIjoga3coXCJhdG9tXCIpLFxuICAgICAgICAgIFwieWllbGRcIjogQyxcbiAgICAgICAgICBcImV4cG9ydFwiOiBrdyhcImV4cG9ydFwiKSxcbiAgICAgICAgICBcImltcG9ydFwiOiBrdyhcImltcG9ydFwiKSxcbiAgICAgICAgICBcImV4dGVuZHNcIjogQyxcbiAgICAgICAgICBcImF3YWl0XCI6IENcbiAgICAgICAgfTtcbiAgICAgIH0oKTtcbiAgICAgIHZhciBpc09wZXJhdG9yQ2hhciA9IC9bK1xcLSomJT08PiE/fH5eQF0vO1xuICAgICAgdmFyIGlzSnNvbmxkS2V5d29yZCA9IC9eQChjb250ZXh0fGlkfHZhbHVlfGxhbmd1YWdlfHR5cGV8Y29udGFpbmVyfGxpc3R8c2V0fHJldmVyc2V8aW5kZXh8YmFzZXx2b2NhYnxncmFwaClcIi87XG4gICAgICBmdW5jdGlvbiByZWFkUmVnZXhwKHN0cmVhbSkge1xuICAgICAgICB2YXIgZXNjYXBlZCA9IGZhbHNlLCBuZXh0LCBpblNldCA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAoKG5leHQgPSBzdHJlYW0ubmV4dCgpKSAhPSBudWxsKSB7XG4gICAgICAgICAgaWYgKCFlc2NhcGVkKSB7XG4gICAgICAgICAgICBpZiAobmV4dCA9PSBcIi9cIiAmJiAhaW5TZXQpXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmIChuZXh0ID09IFwiW1wiKVxuICAgICAgICAgICAgICBpblNldCA9IHRydWU7XG4gICAgICAgICAgICBlbHNlIGlmIChpblNldCAmJiBuZXh0ID09IFwiXVwiKVxuICAgICAgICAgICAgICBpblNldCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWQgJiYgbmV4dCA9PSBcIlxcXFxcIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKHJlYWRSZWdleHAsIFwicmVhZFJlZ2V4cFwiKTtcbiAgICAgIHZhciB0eXBlLCBjb250ZW50O1xuICAgICAgZnVuY3Rpb24gcmV0KHRwLCBzdHlsZSwgY29udDIpIHtcbiAgICAgICAgdHlwZSA9IHRwO1xuICAgICAgICBjb250ZW50ID0gY29udDI7XG4gICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShyZXQsIFwicmV0XCIpO1xuICAgICAgZnVuY3Rpb24gdG9rZW5CYXNlKHN0cmVhbSwgc3RhdGUpIHtcbiAgICAgICAgdmFyIGNoID0gc3RyZWFtLm5leHQoKTtcbiAgICAgICAgaWYgKGNoID09ICdcIicgfHwgY2ggPT0gXCInXCIpIHtcbiAgICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuU3RyaW5nKGNoKTtcbiAgICAgICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gXCIuXCIgJiYgc3RyZWFtLm1hdGNoKC9eXFxkW1xcZF9dKig/OltlRV1bK1xcLV0/W1xcZF9dKyk/LykpIHtcbiAgICAgICAgICByZXR1cm4gcmV0KFwibnVtYmVyXCIsIFwibnVtYmVyXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNoID09IFwiLlwiICYmIHN0cmVhbS5tYXRjaChcIi4uXCIpKSB7XG4gICAgICAgICAgcmV0dXJuIHJldChcInNwcmVhZFwiLCBcIm1ldGFcIik7XG4gICAgICAgIH0gZWxzZSBpZiAoL1tcXFtcXF17fVxcKFxcKSw7XFw6XFwuXS8udGVzdChjaCkpIHtcbiAgICAgICAgICByZXR1cm4gcmV0KGNoKTtcbiAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBcIj1cIiAmJiBzdHJlYW0uZWF0KFwiPlwiKSkge1xuICAgICAgICAgIHJldHVybiByZXQoXCI9PlwiLCBcIm9wZXJhdG9yXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNoID09IFwiMFwiICYmIHN0cmVhbS5tYXRjaCgvXig/OnhbXFxkQS1GYS1mX10rfG9bMC03X10rfGJbMDFfXSspbj8vKSkge1xuICAgICAgICAgIHJldHVybiByZXQoXCJudW1iZXJcIiwgXCJudW1iZXJcIik7XG4gICAgICAgIH0gZWxzZSBpZiAoL1xcZC8udGVzdChjaCkpIHtcbiAgICAgICAgICBzdHJlYW0ubWF0Y2goL15bXFxkX10qKD86bnwoPzpcXC5bXFxkX10qKT8oPzpbZUVdWytcXC1dP1tcXGRfXSspPyk/Lyk7XG4gICAgICAgICAgcmV0dXJuIHJldChcIm51bWJlclwiLCBcIm51bWJlclwiKTtcbiAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBcIi9cIikge1xuICAgICAgICAgIGlmIChzdHJlYW0uZWF0KFwiKlwiKSkge1xuICAgICAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkNvbW1lbnQ7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW5Db21tZW50KHN0cmVhbSwgc3RhdGUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RyZWFtLmVhdChcIi9cIikpIHtcbiAgICAgICAgICAgIHN0cmVhbS5za2lwVG9FbmQoKTtcbiAgICAgICAgICAgIHJldHVybiByZXQoXCJjb21tZW50XCIsIFwiY29tbWVudFwiKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb25BbGxvd2VkKHN0cmVhbSwgc3RhdGUsIDEpKSB7XG4gICAgICAgICAgICByZWFkUmVnZXhwKHN0cmVhbSk7XG4gICAgICAgICAgICBzdHJlYW0ubWF0Y2goL15cXGIoKFtnaW15dXNdKSg/IVtnaW15dXNdKlxcMikpK1xcYi8pO1xuICAgICAgICAgICAgcmV0dXJuIHJldChcInJlZ2V4cFwiLCBcInN0cmluZy0yXCIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHJlYW0uZWF0KFwiPVwiKTtcbiAgICAgICAgICAgIHJldHVybiByZXQoXCJvcGVyYXRvclwiLCBcIm9wZXJhdG9yXCIsIHN0cmVhbS5jdXJyZW50KCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBcImBcIikge1xuICAgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5RdWFzaTtcbiAgICAgICAgICByZXR1cm4gdG9rZW5RdWFzaShzdHJlYW0sIHN0YXRlKTtcbiAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBcIiNcIiAmJiBzdHJlYW0ucGVlaygpID09IFwiIVwiKSB7XG4gICAgICAgICAgc3RyZWFtLnNraXBUb0VuZCgpO1xuICAgICAgICAgIHJldHVybiByZXQoXCJtZXRhXCIsIFwibWV0YVwiKTtcbiAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBcIiNcIiAmJiBzdHJlYW0uZWF0V2hpbGUod29yZFJFKSkge1xuICAgICAgICAgIHJldHVybiByZXQoXCJ2YXJpYWJsZVwiLCBcInByb3BlcnR5XCIpO1xuICAgICAgICB9IGVsc2UgaWYgKGNoID09IFwiPFwiICYmIHN0cmVhbS5tYXRjaChcIiEtLVwiKSB8fCBjaCA9PSBcIi1cIiAmJiBzdHJlYW0ubWF0Y2goXCItPlwiKSAmJiAhL1xcUy8udGVzdChzdHJlYW0uc3RyaW5nLnNsaWNlKDAsIHN0cmVhbS5zdGFydCkpKSB7XG4gICAgICAgICAgc3RyZWFtLnNraXBUb0VuZCgpO1xuICAgICAgICAgIHJldHVybiByZXQoXCJjb21tZW50XCIsIFwiY29tbWVudFwiKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc09wZXJhdG9yQ2hhci50ZXN0KGNoKSkge1xuICAgICAgICAgIGlmIChjaCAhPSBcIj5cIiB8fCAhc3RhdGUubGV4aWNhbCB8fCBzdGF0ZS5sZXhpY2FsLnR5cGUgIT0gXCI+XCIpIHtcbiAgICAgICAgICAgIGlmIChzdHJlYW0uZWF0KFwiPVwiKSkge1xuICAgICAgICAgICAgICBpZiAoY2ggPT0gXCIhXCIgfHwgY2ggPT0gXCI9XCIpXG4gICAgICAgICAgICAgICAgc3RyZWFtLmVhdChcIj1cIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC9bPD4qK1xcLXwmP10vLnRlc3QoY2gpKSB7XG4gICAgICAgICAgICAgIHN0cmVhbS5lYXQoY2gpO1xuICAgICAgICAgICAgICBpZiAoY2ggPT0gXCI+XCIpXG4gICAgICAgICAgICAgICAgc3RyZWFtLmVhdChjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjaCA9PSBcIj9cIiAmJiBzdHJlYW0uZWF0KFwiLlwiKSlcbiAgICAgICAgICAgIHJldHVybiByZXQoXCIuXCIpO1xuICAgICAgICAgIHJldHVybiByZXQoXCJvcGVyYXRvclwiLCBcIm9wZXJhdG9yXCIsIHN0cmVhbS5jdXJyZW50KCkpO1xuICAgICAgICB9IGVsc2UgaWYgKHdvcmRSRS50ZXN0KGNoKSkge1xuICAgICAgICAgIHN0cmVhbS5lYXRXaGlsZSh3b3JkUkUpO1xuICAgICAgICAgIHZhciB3b3JkID0gc3RyZWFtLmN1cnJlbnQoKTtcbiAgICAgICAgICBpZiAoc3RhdGUubGFzdFR5cGUgIT0gXCIuXCIpIHtcbiAgICAgICAgICAgIGlmIChrZXl3b3Jkcy5wcm9wZXJ0eUlzRW51bWVyYWJsZSh3b3JkKSkge1xuICAgICAgICAgICAgICB2YXIga3cgPSBrZXl3b3Jkc1t3b3JkXTtcbiAgICAgICAgICAgICAgcmV0dXJuIHJldChrdy50eXBlLCBrdy5zdHlsZSwgd29yZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod29yZCA9PSBcImFzeW5jXCIgJiYgc3RyZWFtLm1hdGNoKC9eKFxcc3xcXC9cXCooW14qXXxcXCooPyFcXC8pKSo/XFwqXFwvKSpbXFxbXFwoXFx3XS8sIGZhbHNlKSlcbiAgICAgICAgICAgICAgcmV0dXJuIHJldChcImFzeW5jXCIsIFwia2V5d29yZFwiLCB3b3JkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJldChcInZhcmlhYmxlXCIsIFwidmFyaWFibGVcIiwgd29yZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9fbmFtZSh0b2tlbkJhc2UsIFwidG9rZW5CYXNlXCIpO1xuICAgICAgZnVuY3Rpb24gdG9rZW5TdHJpbmcocXVvdGUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmVhbSwgc3RhdGUpIHtcbiAgICAgICAgICB2YXIgZXNjYXBlZCA9IGZhbHNlLCBuZXh0O1xuICAgICAgICAgIGlmIChqc29ubGRNb2RlICYmIHN0cmVhbS5wZWVrKCkgPT0gXCJAXCIgJiYgc3RyZWFtLm1hdGNoKGlzSnNvbmxkS2V5d29yZCkpIHtcbiAgICAgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlO1xuICAgICAgICAgICAgcmV0dXJuIHJldChcImpzb25sZC1rZXl3b3JkXCIsIFwibWV0YVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKChuZXh0ID0gc3RyZWFtLm5leHQoKSkgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKG5leHQgPT0gcXVvdGUgJiYgIWVzY2FwZWQpXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIG5leHQgPT0gXCJcXFxcXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZXNjYXBlZClcbiAgICAgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlO1xuICAgICAgICAgIHJldHVybiByZXQoXCJzdHJpbmdcIiwgXCJzdHJpbmdcIik7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBfX25hbWUodG9rZW5TdHJpbmcsIFwidG9rZW5TdHJpbmdcIik7XG4gICAgICBmdW5jdGlvbiB0b2tlbkNvbW1lbnQoc3RyZWFtLCBzdGF0ZSkge1xuICAgICAgICB2YXIgbWF5YmVFbmQgPSBmYWxzZSwgY2g7XG4gICAgICAgIHdoaWxlIChjaCA9IHN0cmVhbS5uZXh0KCkpIHtcbiAgICAgICAgICBpZiAoY2ggPT0gXCIvXCIgJiYgbWF5YmVFbmQpIHtcbiAgICAgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIG1heWJlRW5kID0gY2ggPT0gXCIqXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldChcImNvbW1lbnRcIiwgXCJjb21tZW50XCIpO1xuICAgICAgfVxuICAgICAgX19uYW1lKHRva2VuQ29tbWVudCwgXCJ0b2tlbkNvbW1lbnRcIik7XG4gICAgICBmdW5jdGlvbiB0b2tlblF1YXNpKHN0cmVhbSwgc3RhdGUpIHtcbiAgICAgICAgdmFyIGVzY2FwZWQgPSBmYWxzZSwgbmV4dDtcbiAgICAgICAgd2hpbGUgKChuZXh0ID0gc3RyZWFtLm5leHQoKSkgIT0gbnVsbCkge1xuICAgICAgICAgIGlmICghZXNjYXBlZCAmJiAobmV4dCA9PSBcImBcIiB8fCBuZXh0ID09IFwiJFwiICYmIHN0cmVhbS5lYXQoXCJ7XCIpKSkge1xuICAgICAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIG5leHQgPT0gXCJcXFxcXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldChcInF1YXNpXCIsIFwic3RyaW5nLTJcIiwgc3RyZWFtLmN1cnJlbnQoKSk7XG4gICAgICB9XG4gICAgICBfX25hbWUodG9rZW5RdWFzaSwgXCJ0b2tlblF1YXNpXCIpO1xuICAgICAgdmFyIGJyYWNrZXRzID0gXCIoW3t9XSlcIjtcbiAgICAgIGZ1bmN0aW9uIGZpbmRGYXRBcnJvdyhzdHJlYW0sIHN0YXRlKSB7XG4gICAgICAgIGlmIChzdGF0ZS5mYXRBcnJvd0F0KVxuICAgICAgICAgIHN0YXRlLmZhdEFycm93QXQgPSBudWxsO1xuICAgICAgICB2YXIgYXJyb3cgPSBzdHJlYW0uc3RyaW5nLmluZGV4T2YoXCI9PlwiLCBzdHJlYW0uc3RhcnQpO1xuICAgICAgICBpZiAoYXJyb3cgPCAwKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGlzVFMpIHtcbiAgICAgICAgICB2YXIgbSA9IC86XFxzKig/OlxcdysoPzo8W14+XSo+fFxcW1xcXSk/fFxce1tefV0qXFx9KVxccyokLy5leGVjKHN0cmVhbS5zdHJpbmcuc2xpY2Uoc3RyZWFtLnN0YXJ0LCBhcnJvdykpO1xuICAgICAgICAgIGlmIChtKVxuICAgICAgICAgICAgYXJyb3cgPSBtLmluZGV4O1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZXB0aCA9IDAsIHNhd1NvbWV0aGluZyA9IGZhbHNlO1xuICAgICAgICBmb3IgKHZhciBwb3MgPSBhcnJvdyAtIDE7IHBvcyA+PSAwOyAtLXBvcykge1xuICAgICAgICAgIHZhciBjaCA9IHN0cmVhbS5zdHJpbmcuY2hhckF0KHBvcyk7XG4gICAgICAgICAgdmFyIGJyYWNrZXQgPSBicmFja2V0cy5pbmRleE9mKGNoKTtcbiAgICAgICAgICBpZiAoYnJhY2tldCA+PSAwICYmIGJyYWNrZXQgPCAzKSB7XG4gICAgICAgICAgICBpZiAoIWRlcHRoKSB7XG4gICAgICAgICAgICAgICsrcG9zO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgtLWRlcHRoID09IDApIHtcbiAgICAgICAgICAgICAgaWYgKGNoID09IFwiKFwiKVxuICAgICAgICAgICAgICAgIHNhd1NvbWV0aGluZyA9IHRydWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoYnJhY2tldCA+PSAzICYmIGJyYWNrZXQgPCA2KSB7XG4gICAgICAgICAgICArK2RlcHRoO1xuICAgICAgICAgIH0gZWxzZSBpZiAod29yZFJFLnRlc3QoY2gpKSB7XG4gICAgICAgICAgICBzYXdTb21ldGhpbmcgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoL1tcIidcXC9gXS8udGVzdChjaCkpIHtcbiAgICAgICAgICAgIGZvciAoOyA7IC0tcG9zKSB7XG4gICAgICAgICAgICAgIGlmIChwb3MgPT0gMClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIHZhciBuZXh0ID0gc3RyZWFtLnN0cmluZy5jaGFyQXQocG9zIC0gMSk7XG4gICAgICAgICAgICAgIGlmIChuZXh0ID09IGNoICYmIHN0cmVhbS5zdHJpbmcuY2hhckF0KHBvcyAtIDIpICE9IFwiXFxcXFwiKSB7XG4gICAgICAgICAgICAgICAgcG9zLS07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHNhd1NvbWV0aGluZyAmJiAhZGVwdGgpIHtcbiAgICAgICAgICAgICsrcG9zO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzYXdTb21ldGhpbmcgJiYgIWRlcHRoKVxuICAgICAgICAgIHN0YXRlLmZhdEFycm93QXQgPSBwb3M7XG4gICAgICB9XG4gICAgICBfX25hbWUoZmluZEZhdEFycm93LCBcImZpbmRGYXRBcnJvd1wiKTtcbiAgICAgIHZhciBhdG9taWNUeXBlcyA9IHtcbiAgICAgICAgXCJhdG9tXCI6IHRydWUsXG4gICAgICAgIFwibnVtYmVyXCI6IHRydWUsXG4gICAgICAgIFwidmFyaWFibGVcIjogdHJ1ZSxcbiAgICAgICAgXCJzdHJpbmdcIjogdHJ1ZSxcbiAgICAgICAgXCJyZWdleHBcIjogdHJ1ZSxcbiAgICAgICAgXCJ0aGlzXCI6IHRydWUsXG4gICAgICAgIFwiaW1wb3J0XCI6IHRydWUsXG4gICAgICAgIFwianNvbmxkLWtleXdvcmRcIjogdHJ1ZVxuICAgICAgfTtcbiAgICAgIGZ1bmN0aW9uIEpTTGV4aWNhbChpbmRlbnRlZCwgY29sdW1uLCB0eXBlMiwgYWxpZ24sIHByZXYsIGluZm8pIHtcbiAgICAgICAgdGhpcy5pbmRlbnRlZCA9IGluZGVudGVkO1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTI7XG4gICAgICAgIHRoaXMucHJldiA9IHByZXY7XG4gICAgICAgIHRoaXMuaW5mbyA9IGluZm87XG4gICAgICAgIGlmIChhbGlnbiAhPSBudWxsKVxuICAgICAgICAgIHRoaXMuYWxpZ24gPSBhbGlnbjtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShKU0xleGljYWwsIFwiSlNMZXhpY2FsXCIpO1xuICAgICAgZnVuY3Rpb24gaW5TY29wZShzdGF0ZSwgdmFybmFtZSkge1xuICAgICAgICBpZiAoIXRyYWNrU2NvcGUpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKHZhciB2ID0gc3RhdGUubG9jYWxWYXJzOyB2OyB2ID0gdi5uZXh0KVxuICAgICAgICAgIGlmICh2Lm5hbWUgPT0gdmFybmFtZSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBmb3IgKHZhciBjeDIgPSBzdGF0ZS5jb250ZXh0OyBjeDI7IGN4MiA9IGN4Mi5wcmV2KSB7XG4gICAgICAgICAgZm9yICh2YXIgdiA9IGN4Mi52YXJzOyB2OyB2ID0gdi5uZXh0KVxuICAgICAgICAgICAgaWYgKHYubmFtZSA9PSB2YXJuYW1lKVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKGluU2NvcGUsIFwiaW5TY29wZVwiKTtcbiAgICAgIGZ1bmN0aW9uIHBhcnNlSlMoc3RhdGUsIHN0eWxlLCB0eXBlMiwgY29udGVudDIsIHN0cmVhbSkge1xuICAgICAgICB2YXIgY2MgPSBzdGF0ZS5jYztcbiAgICAgICAgY3guc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgY3guc3RyZWFtID0gc3RyZWFtO1xuICAgICAgICBjeC5tYXJrZWQgPSBudWxsLCBjeC5jYyA9IGNjO1xuICAgICAgICBjeC5zdHlsZSA9IHN0eWxlO1xuICAgICAgICBpZiAoIXN0YXRlLmxleGljYWwuaGFzT3duUHJvcGVydHkoXCJhbGlnblwiKSlcbiAgICAgICAgICBzdGF0ZS5sZXhpY2FsLmFsaWduID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICB2YXIgY29tYmluYXRvciA9IGNjLmxlbmd0aCA/IGNjLnBvcCgpIDoganNvbk1vZGUgPyBleHByZXNzaW9uIDogc3RhdGVtZW50O1xuICAgICAgICAgIGlmIChjb21iaW5hdG9yKHR5cGUyLCBjb250ZW50MikpIHtcbiAgICAgICAgICAgIHdoaWxlIChjYy5sZW5ndGggJiYgY2NbY2MubGVuZ3RoIC0gMV0ubGV4KVxuICAgICAgICAgICAgICBjYy5wb3AoKSgpO1xuICAgICAgICAgICAgaWYgKGN4Lm1hcmtlZClcbiAgICAgICAgICAgICAgcmV0dXJuIGN4Lm1hcmtlZDtcbiAgICAgICAgICAgIGlmICh0eXBlMiA9PSBcInZhcmlhYmxlXCIgJiYgaW5TY29wZShzdGF0ZSwgY29udGVudDIpKVxuICAgICAgICAgICAgICByZXR1cm4gXCJ2YXJpYWJsZS0yXCI7XG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUocGFyc2VKUywgXCJwYXJzZUpTXCIpO1xuICAgICAgdmFyIGN4ID0geyBzdGF0ZTogbnVsbCwgY29sdW1uOiBudWxsLCBtYXJrZWQ6IG51bGwsIGNjOiBudWxsIH07XG4gICAgICBmdW5jdGlvbiBwYXNzKCkge1xuICAgICAgICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKVxuICAgICAgICAgIGN4LmNjLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShwYXNzLCBcInBhc3NcIik7XG4gICAgICBmdW5jdGlvbiBjb250KCkge1xuICAgICAgICBwYXNzLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgX19uYW1lKGNvbnQsIFwiY29udFwiKTtcbiAgICAgIGZ1bmN0aW9uIGluTGlzdChuYW1lLCBsaXN0KSB7XG4gICAgICAgIGZvciAodmFyIHYgPSBsaXN0OyB2OyB2ID0gdi5uZXh0KVxuICAgICAgICAgIGlmICh2Lm5hbWUgPT0gbmFtZSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBfX25hbWUoaW5MaXN0LCBcImluTGlzdFwiKTtcbiAgICAgIGZ1bmN0aW9uIHJlZ2lzdGVyKHZhcm5hbWUpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gY3guc3RhdGU7XG4gICAgICAgIGN4Lm1hcmtlZCA9IFwiZGVmXCI7XG4gICAgICAgIGlmICghdHJhY2tTY29wZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChzdGF0ZS5jb250ZXh0KSB7XG4gICAgICAgICAgaWYgKHN0YXRlLmxleGljYWwuaW5mbyA9PSBcInZhclwiICYmIHN0YXRlLmNvbnRleHQgJiYgc3RhdGUuY29udGV4dC5ibG9jaykge1xuICAgICAgICAgICAgdmFyIG5ld0NvbnRleHQgPSByZWdpc3RlclZhclNjb3BlZCh2YXJuYW1lLCBzdGF0ZS5jb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChuZXdDb250ZXh0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgc3RhdGUuY29udGV4dCA9IG5ld0NvbnRleHQ7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFpbkxpc3QodmFybmFtZSwgc3RhdGUubG9jYWxWYXJzKSkge1xuICAgICAgICAgICAgc3RhdGUubG9jYWxWYXJzID0gbmV3IFZhcih2YXJuYW1lLCBzdGF0ZS5sb2NhbFZhcnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VyQ29uZmlnLmdsb2JhbFZhcnMgJiYgIWluTGlzdCh2YXJuYW1lLCBzdGF0ZS5nbG9iYWxWYXJzKSlcbiAgICAgICAgICBzdGF0ZS5nbG9iYWxWYXJzID0gbmV3IFZhcih2YXJuYW1lLCBzdGF0ZS5nbG9iYWxWYXJzKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShyZWdpc3RlciwgXCJyZWdpc3RlclwiKTtcbiAgICAgIGZ1bmN0aW9uIHJlZ2lzdGVyVmFyU2NvcGVkKHZhcm5hbWUsIGNvbnRleHQpIHtcbiAgICAgICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5ibG9jaykge1xuICAgICAgICAgIHZhciBpbm5lciA9IHJlZ2lzdGVyVmFyU2NvcGVkKHZhcm5hbWUsIGNvbnRleHQucHJldik7XG4gICAgICAgICAgaWYgKCFpbm5lcilcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIGlmIChpbm5lciA9PSBjb250ZXh0LnByZXYpXG4gICAgICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgICAgICByZXR1cm4gbmV3IENvbnRleHQoaW5uZXIsIGNvbnRleHQudmFycywgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5MaXN0KHZhcm5hbWUsIGNvbnRleHQudmFycykpIHtcbiAgICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbmV3IENvbnRleHQoY29udGV4dC5wcmV2LCBuZXcgVmFyKHZhcm5hbWUsIGNvbnRleHQudmFycyksIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKHJlZ2lzdGVyVmFyU2NvcGVkLCBcInJlZ2lzdGVyVmFyU2NvcGVkXCIpO1xuICAgICAgZnVuY3Rpb24gaXNNb2RpZmllcihuYW1lKSB7XG4gICAgICAgIHJldHVybiBuYW1lID09IFwicHVibGljXCIgfHwgbmFtZSA9PSBcInByaXZhdGVcIiB8fCBuYW1lID09IFwicHJvdGVjdGVkXCIgfHwgbmFtZSA9PSBcImFic3RyYWN0XCIgfHwgbmFtZSA9PSBcInJlYWRvbmx5XCI7XG4gICAgICB9XG4gICAgICBfX25hbWUoaXNNb2RpZmllciwgXCJpc01vZGlmaWVyXCIpO1xuICAgICAgZnVuY3Rpb24gQ29udGV4dChwcmV2LCB2YXJzLCBibG9jazIpIHtcbiAgICAgICAgdGhpcy5wcmV2ID0gcHJldjtcbiAgICAgICAgdGhpcy52YXJzID0gdmFycztcbiAgICAgICAgdGhpcy5ibG9jayA9IGJsb2NrMjtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShDb250ZXh0LCBcIkNvbnRleHRcIik7XG4gICAgICBmdW5jdGlvbiBWYXIobmFtZSwgbmV4dCkge1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgICAgX19uYW1lKFZhciwgXCJWYXJcIik7XG4gICAgICB2YXIgZGVmYXVsdFZhcnMgPSBuZXcgVmFyKFwidGhpc1wiLCBuZXcgVmFyKFwiYXJndW1lbnRzXCIsIG51bGwpKTtcbiAgICAgIGZ1bmN0aW9uIHB1c2hjb250ZXh0KCkge1xuICAgICAgICBjeC5zdGF0ZS5jb250ZXh0ID0gbmV3IENvbnRleHQoY3guc3RhdGUuY29udGV4dCwgY3guc3RhdGUubG9jYWxWYXJzLCBmYWxzZSk7XG4gICAgICAgIGN4LnN0YXRlLmxvY2FsVmFycyA9IGRlZmF1bHRWYXJzO1xuICAgICAgfVxuICAgICAgX19uYW1lKHB1c2hjb250ZXh0LCBcInB1c2hjb250ZXh0XCIpO1xuICAgICAgZnVuY3Rpb24gcHVzaGJsb2NrY29udGV4dCgpIHtcbiAgICAgICAgY3guc3RhdGUuY29udGV4dCA9IG5ldyBDb250ZXh0KGN4LnN0YXRlLmNvbnRleHQsIGN4LnN0YXRlLmxvY2FsVmFycywgdHJ1ZSk7XG4gICAgICAgIGN4LnN0YXRlLmxvY2FsVmFycyA9IG51bGw7XG4gICAgICB9XG4gICAgICBfX25hbWUocHVzaGJsb2NrY29udGV4dCwgXCJwdXNoYmxvY2tjb250ZXh0XCIpO1xuICAgICAgcHVzaGNvbnRleHQubGV4ID0gcHVzaGJsb2NrY29udGV4dC5sZXggPSB0cnVlO1xuICAgICAgZnVuY3Rpb24gcG9wY29udGV4dCgpIHtcbiAgICAgICAgY3guc3RhdGUubG9jYWxWYXJzID0gY3guc3RhdGUuY29udGV4dC52YXJzO1xuICAgICAgICBjeC5zdGF0ZS5jb250ZXh0ID0gY3guc3RhdGUuY29udGV4dC5wcmV2O1xuICAgICAgfVxuICAgICAgX19uYW1lKHBvcGNvbnRleHQsIFwicG9wY29udGV4dFwiKTtcbiAgICAgIHBvcGNvbnRleHQubGV4ID0gdHJ1ZTtcbiAgICAgIGZ1bmN0aW9uIHB1c2hsZXgodHlwZTIsIGluZm8pIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIHN0YXRlID0gY3guc3RhdGUsIGluZGVudCA9IHN0YXRlLmluZGVudGVkO1xuICAgICAgICAgIGlmIChzdGF0ZS5sZXhpY2FsLnR5cGUgPT0gXCJzdGF0XCIpXG4gICAgICAgICAgICBpbmRlbnQgPSBzdGF0ZS5sZXhpY2FsLmluZGVudGVkO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZvciAodmFyIG91dGVyID0gc3RhdGUubGV4aWNhbDsgb3V0ZXIgJiYgb3V0ZXIudHlwZSA9PSBcIilcIiAmJiBvdXRlci5hbGlnbjsgb3V0ZXIgPSBvdXRlci5wcmV2KVxuICAgICAgICAgICAgICBpbmRlbnQgPSBvdXRlci5pbmRlbnRlZDtcbiAgICAgICAgICBzdGF0ZS5sZXhpY2FsID0gbmV3IEpTTGV4aWNhbChpbmRlbnQsIGN4LnN0cmVhbS5jb2x1bW4oKSwgdHlwZTIsIG51bGwsIHN0YXRlLmxleGljYWwsIGluZm8pO1xuICAgICAgICB9LCBcInJlc3VsdFwiKTtcbiAgICAgICAgcmVzdWx0LmxleCA9IHRydWU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBfX25hbWUocHVzaGxleCwgXCJwdXNobGV4XCIpO1xuICAgICAgZnVuY3Rpb24gcG9wbGV4KCkge1xuICAgICAgICB2YXIgc3RhdGUgPSBjeC5zdGF0ZTtcbiAgICAgICAgaWYgKHN0YXRlLmxleGljYWwucHJldikge1xuICAgICAgICAgIGlmIChzdGF0ZS5sZXhpY2FsLnR5cGUgPT0gXCIpXCIpXG4gICAgICAgICAgICBzdGF0ZS5pbmRlbnRlZCA9IHN0YXRlLmxleGljYWwuaW5kZW50ZWQ7XG4gICAgICAgICAgc3RhdGUubGV4aWNhbCA9IHN0YXRlLmxleGljYWwucHJldjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKHBvcGxleCwgXCJwb3BsZXhcIik7XG4gICAgICBwb3BsZXgubGV4ID0gdHJ1ZTtcbiAgICAgIGZ1bmN0aW9uIGV4cGVjdCh3YW50ZWQpIHtcbiAgICAgICAgZnVuY3Rpb24gZXhwKHR5cGUyKSB7XG4gICAgICAgICAgaWYgKHR5cGUyID09IHdhbnRlZClcbiAgICAgICAgICAgIHJldHVybiBjb250KCk7XG4gICAgICAgICAgZWxzZSBpZiAod2FudGVkID09IFwiO1wiIHx8IHR5cGUyID09IFwifVwiIHx8IHR5cGUyID09IFwiKVwiIHx8IHR5cGUyID09IFwiXVwiKVxuICAgICAgICAgICAgcmV0dXJuIHBhc3MoKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gY29udChleHApO1xuICAgICAgICB9XG4gICAgICAgIF9fbmFtZShleHAsIFwiZXhwXCIpO1xuICAgICAgICByZXR1cm4gZXhwO1xuICAgICAgfVxuICAgICAgX19uYW1lKGV4cGVjdCwgXCJleHBlY3RcIik7XG4gICAgICBmdW5jdGlvbiBzdGF0ZW1lbnQodHlwZTIsIHZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcInZhclwiKVxuICAgICAgICAgIHJldHVybiBjb250KHB1c2hsZXgoXCJ2YXJkZWZcIiwgdmFsdWUpLCB2YXJkZWYsIGV4cGVjdChcIjtcIiksIHBvcGxleCk7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcImtleXdvcmQgYVwiKVxuICAgICAgICAgIHJldHVybiBjb250KHB1c2hsZXgoXCJmb3JtXCIpLCBwYXJlbkV4cHIsIHN0YXRlbWVudCwgcG9wbGV4KTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwia2V5d29yZCBiXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcImZvcm1cIiksIHN0YXRlbWVudCwgcG9wbGV4KTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwia2V5d29yZCBkXCIpXG4gICAgICAgICAgcmV0dXJuIGN4LnN0cmVhbS5tYXRjaCgvXlxccyokLywgZmFsc2UpID8gY29udCgpIDogY29udChwdXNobGV4KFwic3RhdFwiKSwgbWF5YmVleHByZXNzaW9uLCBleHBlY3QoXCI7XCIpLCBwb3BsZXgpO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJkZWJ1Z2dlclwiKVxuICAgICAgICAgIHJldHVybiBjb250KGV4cGVjdChcIjtcIikpO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJ7XCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcIn1cIiksIHB1c2hibG9ja2NvbnRleHQsIGJsb2NrLCBwb3BsZXgsIHBvcGNvbnRleHQpO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCI7XCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQoKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiaWZcIikge1xuICAgICAgICAgIGlmIChjeC5zdGF0ZS5sZXhpY2FsLmluZm8gPT0gXCJlbHNlXCIgJiYgY3guc3RhdGUuY2NbY3guc3RhdGUuY2MubGVuZ3RoIC0gMV0gPT0gcG9wbGV4KVxuICAgICAgICAgICAgY3guc3RhdGUuY2MucG9wKCkoKTtcbiAgICAgICAgICByZXR1cm4gY29udChwdXNobGV4KFwiZm9ybVwiKSwgcGFyZW5FeHByLCBzdGF0ZW1lbnQsIHBvcGxleCwgbWF5YmVlbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZTIgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiZm9yXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcImZvcm1cIiksIHB1c2hibG9ja2NvbnRleHQsIGZvcnNwZWMsIHN0YXRlbWVudCwgcG9wY29udGV4dCwgcG9wbGV4KTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiY2xhc3NcIiB8fCBpc1RTICYmIHZhbHVlID09IFwiaW50ZXJmYWNlXCIpIHtcbiAgICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICAgICAgICByZXR1cm4gY29udChwdXNobGV4KFwiZm9ybVwiLCB0eXBlMiA9PSBcImNsYXNzXCIgPyB0eXBlMiA6IHZhbHVlKSwgY2xhc3NOYW1lLCBwb3BsZXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlMiA9PSBcInZhcmlhYmxlXCIpIHtcbiAgICAgICAgICBpZiAoaXNUUyAmJiB2YWx1ZSA9PSBcImRlY2xhcmVcIikge1xuICAgICAgICAgICAgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7XG4gICAgICAgICAgICByZXR1cm4gY29udChzdGF0ZW1lbnQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNUUyAmJiAodmFsdWUgPT0gXCJtb2R1bGVcIiB8fCB2YWx1ZSA9PSBcImVudW1cIiB8fCB2YWx1ZSA9PSBcInR5cGVcIikgJiYgY3guc3RyZWFtLm1hdGNoKC9eXFxzKlxcdy8sIGZhbHNlKSkge1xuICAgICAgICAgICAgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT0gXCJlbnVtXCIpXG4gICAgICAgICAgICAgIHJldHVybiBjb250KGVudW1kZWYpO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJ0eXBlXCIpXG4gICAgICAgICAgICAgIHJldHVybiBjb250KHR5cGVuYW1lLCBleHBlY3QoXCJvcGVyYXRvclwiKSwgdHlwZWV4cHIsIGV4cGVjdChcIjtcIikpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICByZXR1cm4gY29udChwdXNobGV4KFwiZm9ybVwiKSwgcGF0dGVybiwgZXhwZWN0KFwie1wiKSwgcHVzaGxleChcIn1cIiksIGJsb2NrLCBwb3BsZXgsIHBvcGxleCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc1RTICYmIHZhbHVlID09IFwibmFtZXNwYWNlXCIpIHtcbiAgICAgICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcImZvcm1cIiksIGV4cHJlc3Npb24sIHN0YXRlbWVudCwgcG9wbGV4KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzVFMgJiYgdmFsdWUgPT0gXCJhYnN0cmFjdFwiKSB7XG4gICAgICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICAgICAgICAgIHJldHVybiBjb250KHN0YXRlbWVudCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjb250KHB1c2hsZXgoXCJzdGF0XCIpLCBtYXliZWxhYmVsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUyID09IFwic3dpdGNoXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcImZvcm1cIiksIHBhcmVuRXhwciwgZXhwZWN0KFwie1wiKSwgcHVzaGxleChcIn1cIiwgXCJzd2l0Y2hcIiksIHB1c2hibG9ja2NvbnRleHQsIGJsb2NrLCBwb3BsZXgsIHBvcGxleCwgcG9wY29udGV4dCk7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcImNhc2VcIilcbiAgICAgICAgICByZXR1cm4gY29udChleHByZXNzaW9uLCBleHBlY3QoXCI6XCIpKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiZGVmYXVsdFwiKVxuICAgICAgICAgIHJldHVybiBjb250KGV4cGVjdChcIjpcIikpO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJjYXRjaFwiKVxuICAgICAgICAgIHJldHVybiBjb250KHB1c2hsZXgoXCJmb3JtXCIpLCBwdXNoY29udGV4dCwgbWF5YmVDYXRjaEJpbmRpbmcsIHN0YXRlbWVudCwgcG9wbGV4LCBwb3Bjb250ZXh0KTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiZXhwb3J0XCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcInN0YXRcIiksIGFmdGVyRXhwb3J0LCBwb3BsZXgpO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJpbXBvcnRcIilcbiAgICAgICAgICByZXR1cm4gY29udChwdXNobGV4KFwic3RhdFwiKSwgYWZ0ZXJJbXBvcnQsIHBvcGxleCk7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcImFzeW5jXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQoc3RhdGVtZW50KTtcbiAgICAgICAgaWYgKHZhbHVlID09IFwiQFwiKVxuICAgICAgICAgIHJldHVybiBjb250KGV4cHJlc3Npb24sIHN0YXRlbWVudCk7XG4gICAgICAgIHJldHVybiBwYXNzKHB1c2hsZXgoXCJzdGF0XCIpLCBleHByZXNzaW9uLCBleHBlY3QoXCI7XCIpLCBwb3BsZXgpO1xuICAgICAgfVxuICAgICAgX19uYW1lKHN0YXRlbWVudCwgXCJzdGF0ZW1lbnRcIik7XG4gICAgICBmdW5jdGlvbiBtYXliZUNhdGNoQmluZGluZyh0eXBlMikge1xuICAgICAgICBpZiAodHlwZTIgPT0gXCIoXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQoZnVuYXJnLCBleHBlY3QoXCIpXCIpKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShtYXliZUNhdGNoQmluZGluZywgXCJtYXliZUNhdGNoQmluZGluZ1wiKTtcbiAgICAgIGZ1bmN0aW9uIGV4cHJlc3Npb24odHlwZTIsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBleHByZXNzaW9uSW5uZXIodHlwZTIsIHZhbHVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgICBfX25hbWUoZXhwcmVzc2lvbiwgXCJleHByZXNzaW9uXCIpO1xuICAgICAgZnVuY3Rpb24gZXhwcmVzc2lvbk5vQ29tbWEodHlwZTIsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBleHByZXNzaW9uSW5uZXIodHlwZTIsIHZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShleHByZXNzaW9uTm9Db21tYSwgXCJleHByZXNzaW9uTm9Db21tYVwiKTtcbiAgICAgIGZ1bmN0aW9uIHBhcmVuRXhwcih0eXBlMikge1xuICAgICAgICBpZiAodHlwZTIgIT0gXCIoXCIpXG4gICAgICAgICAgcmV0dXJuIHBhc3MoKTtcbiAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcIilcIiksIG1heWJlZXhwcmVzc2lvbiwgZXhwZWN0KFwiKVwiKSwgcG9wbGV4KTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShwYXJlbkV4cHIsIFwicGFyZW5FeHByXCIpO1xuICAgICAgZnVuY3Rpb24gZXhwcmVzc2lvbklubmVyKHR5cGUyLCB2YWx1ZSwgbm9Db21tYSkge1xuICAgICAgICBpZiAoY3guc3RhdGUuZmF0QXJyb3dBdCA9PSBjeC5zdHJlYW0uc3RhcnQpIHtcbiAgICAgICAgICB2YXIgYm9keSA9IG5vQ29tbWEgPyBhcnJvd0JvZHlOb0NvbW1hIDogYXJyb3dCb2R5O1xuICAgICAgICAgIGlmICh0eXBlMiA9PSBcIihcIilcbiAgICAgICAgICAgIHJldHVybiBjb250KHB1c2hjb250ZXh0LCBwdXNobGV4KFwiKVwiKSwgY29tbWFzZXAoZnVuYXJnLCBcIilcIiksIHBvcGxleCwgZXhwZWN0KFwiPT5cIiksIGJvZHksIHBvcGNvbnRleHQpO1xuICAgICAgICAgIGVsc2UgaWYgKHR5cGUyID09IFwidmFyaWFibGVcIilcbiAgICAgICAgICAgIHJldHVybiBwYXNzKHB1c2hjb250ZXh0LCBwYXR0ZXJuLCBleHBlY3QoXCI9PlwiKSwgYm9keSwgcG9wY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1heWJlb3AgPSBub0NvbW1hID8gbWF5YmVvcGVyYXRvck5vQ29tbWEgOiBtYXliZW9wZXJhdG9yQ29tbWE7XG4gICAgICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlMikpXG4gICAgICAgICAgcmV0dXJuIGNvbnQobWF5YmVvcCk7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYsIG1heWJlb3ApO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJjbGFzc1wiIHx8IGlzVFMgJiYgdmFsdWUgPT0gXCJpbnRlcmZhY2VcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgICAgIHJldHVybiBjb250KHB1c2hsZXgoXCJmb3JtXCIpLCBjbGFzc0V4cHJlc3Npb24sIHBvcGxleCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUyID09IFwia2V5d29yZCBjXCIgfHwgdHlwZTIgPT0gXCJhc3luY1wiKVxuICAgICAgICAgIHJldHVybiBjb250KG5vQ29tbWEgPyBleHByZXNzaW9uTm9Db21tYSA6IGV4cHJlc3Npb24pO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCIoXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcIilcIiksIG1heWJlZXhwcmVzc2lvbiwgZXhwZWN0KFwiKVwiKSwgcG9wbGV4LCBtYXliZW9wKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwib3BlcmF0b3JcIiB8fCB0eXBlMiA9PSBcInNwcmVhZFwiKVxuICAgICAgICAgIHJldHVybiBjb250KG5vQ29tbWEgPyBleHByZXNzaW9uTm9Db21tYSA6IGV4cHJlc3Npb24pO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJbXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcIl1cIiksIGFycmF5TGl0ZXJhbCwgcG9wbGV4LCBtYXliZW9wKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwie1wiKVxuICAgICAgICAgIHJldHVybiBjb250Q29tbWFzZXAob2JqcHJvcCwgXCJ9XCIsIG51bGwsIG1heWJlb3ApO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJxdWFzaVwiKVxuICAgICAgICAgIHJldHVybiBwYXNzKHF1YXNpLCBtYXliZW9wKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwibmV3XCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQobWF5YmVUYXJnZXQobm9Db21tYSkpO1xuICAgICAgICByZXR1cm4gY29udCgpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGV4cHJlc3Npb25Jbm5lciwgXCJleHByZXNzaW9uSW5uZXJcIik7XG4gICAgICBmdW5jdGlvbiBtYXliZWV4cHJlc3Npb24odHlwZTIpIHtcbiAgICAgICAgaWYgKHR5cGUyLm1hdGNoKC9bO1xcfVxcKVxcXSxdLykpXG4gICAgICAgICAgcmV0dXJuIHBhc3MoKTtcbiAgICAgICAgcmV0dXJuIHBhc3MoZXhwcmVzc2lvbik7XG4gICAgICB9XG4gICAgICBfX25hbWUobWF5YmVleHByZXNzaW9uLCBcIm1heWJlZXhwcmVzc2lvblwiKTtcbiAgICAgIGZ1bmN0aW9uIG1heWJlb3BlcmF0b3JDb21tYSh0eXBlMiwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiLFwiKVxuICAgICAgICAgIHJldHVybiBjb250KG1heWJlZXhwcmVzc2lvbik7XG4gICAgICAgIHJldHVybiBtYXliZW9wZXJhdG9yTm9Db21tYSh0eXBlMiwgdmFsdWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShtYXliZW9wZXJhdG9yQ29tbWEsIFwibWF5YmVvcGVyYXRvckNvbW1hXCIpO1xuICAgICAgZnVuY3Rpb24gbWF5YmVvcGVyYXRvck5vQ29tbWEodHlwZTIsIHZhbHVlLCBub0NvbW1hKSB7XG4gICAgICAgIHZhciBtZSA9IG5vQ29tbWEgPT0gZmFsc2UgPyBtYXliZW9wZXJhdG9yQ29tbWEgOiBtYXliZW9wZXJhdG9yTm9Db21tYTtcbiAgICAgICAgdmFyIGV4cHIgPSBub0NvbW1hID09IGZhbHNlID8gZXhwcmVzc2lvbiA6IGV4cHJlc3Npb25Ob0NvbW1hO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCI9PlwiKVxuICAgICAgICAgIHJldHVybiBjb250KHB1c2hjb250ZXh0LCBub0NvbW1hID8gYXJyb3dCb2R5Tm9Db21tYSA6IGFycm93Qm9keSwgcG9wY29udGV4dCk7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIm9wZXJhdG9yXCIpIHtcbiAgICAgICAgICBpZiAoL1xcK1xcK3wtLS8udGVzdCh2YWx1ZSkgfHwgaXNUUyAmJiB2YWx1ZSA9PSBcIiFcIilcbiAgICAgICAgICAgIHJldHVybiBjb250KG1lKTtcbiAgICAgICAgICBpZiAoaXNUUyAmJiB2YWx1ZSA9PSBcIjxcIiAmJiBjeC5zdHJlYW0ubWF0Y2goL14oW148Pl18PFtePD5dKj4pKj5cXHMqXFwoLywgZmFsc2UpKVxuICAgICAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcIj5cIiksIGNvbW1hc2VwKHR5cGVleHByLCBcIj5cIiksIHBvcGxleCwgbWUpO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PSBcIj9cIilcbiAgICAgICAgICAgIHJldHVybiBjb250KGV4cHJlc3Npb24sIGV4cGVjdChcIjpcIiksIGV4cHIpO1xuICAgICAgICAgIHJldHVybiBjb250KGV4cHIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlMiA9PSBcInF1YXNpXCIpIHtcbiAgICAgICAgICByZXR1cm4gcGFzcyhxdWFzaSwgbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIjtcIilcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIihcIilcbiAgICAgICAgICByZXR1cm4gY29udENvbW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1hLCBcIilcIiwgXCJjYWxsXCIsIG1lKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiLlwiKVxuICAgICAgICAgIHJldHVybiBjb250KHByb3BlcnR5LCBtZSk7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIltcIilcbiAgICAgICAgICByZXR1cm4gY29udChwdXNobGV4KFwiXVwiKSwgbWF5YmVleHByZXNzaW9uLCBleHBlY3QoXCJdXCIpLCBwb3BsZXgsIG1lKTtcbiAgICAgICAgaWYgKGlzVFMgJiYgdmFsdWUgPT0gXCJhc1wiKSB7XG4gICAgICAgICAgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7XG4gICAgICAgICAgcmV0dXJuIGNvbnQodHlwZWV4cHIsIG1lKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZTIgPT0gXCJyZWdleHBcIikge1xuICAgICAgICAgIGN4LnN0YXRlLmxhc3RUeXBlID0gY3gubWFya2VkID0gXCJvcGVyYXRvclwiO1xuICAgICAgICAgIGN4LnN0cmVhbS5iYWNrVXAoY3guc3RyZWFtLnBvcyAtIGN4LnN0cmVhbS5zdGFydCAtIDEpO1xuICAgICAgICAgIHJldHVybiBjb250KGV4cHIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUobWF5YmVvcGVyYXRvck5vQ29tbWEsIFwibWF5YmVvcGVyYXRvck5vQ29tbWFcIik7XG4gICAgICBmdW5jdGlvbiBxdWFzaSh0eXBlMiwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGUyICE9IFwicXVhc2lcIilcbiAgICAgICAgICByZXR1cm4gcGFzcygpO1xuICAgICAgICBpZiAodmFsdWUuc2xpY2UodmFsdWUubGVuZ3RoIC0gMikgIT0gXCIke1wiKVxuICAgICAgICAgIHJldHVybiBjb250KHF1YXNpKTtcbiAgICAgICAgcmV0dXJuIGNvbnQobWF5YmVleHByZXNzaW9uLCBjb250aW51ZVF1YXNpKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShxdWFzaSwgXCJxdWFzaVwiKTtcbiAgICAgIGZ1bmN0aW9uIGNvbnRpbnVlUXVhc2kodHlwZTIpIHtcbiAgICAgICAgaWYgKHR5cGUyID09IFwifVwiKSB7XG4gICAgICAgICAgY3gubWFya2VkID0gXCJzdHJpbmctMlwiO1xuICAgICAgICAgIGN4LnN0YXRlLnRva2VuaXplID0gdG9rZW5RdWFzaTtcbiAgICAgICAgICByZXR1cm4gY29udChxdWFzaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9fbmFtZShjb250aW51ZVF1YXNpLCBcImNvbnRpbnVlUXVhc2lcIik7XG4gICAgICBmdW5jdGlvbiBhcnJvd0JvZHkodHlwZTIpIHtcbiAgICAgICAgZmluZEZhdEFycm93KGN4LnN0cmVhbSwgY3guc3RhdGUpO1xuICAgICAgICByZXR1cm4gcGFzcyh0eXBlMiA9PSBcIntcIiA/IHN0YXRlbWVudCA6IGV4cHJlc3Npb24pO1xuICAgICAgfVxuICAgICAgX19uYW1lKGFycm93Qm9keSwgXCJhcnJvd0JvZHlcIik7XG4gICAgICBmdW5jdGlvbiBhcnJvd0JvZHlOb0NvbW1hKHR5cGUyKSB7XG4gICAgICAgIGZpbmRGYXRBcnJvdyhjeC5zdHJlYW0sIGN4LnN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHBhc3ModHlwZTIgPT0gXCJ7XCIgPyBzdGF0ZW1lbnQgOiBleHByZXNzaW9uTm9Db21tYSk7XG4gICAgICB9XG4gICAgICBfX25hbWUoYXJyb3dCb2R5Tm9Db21tYSwgXCJhcnJvd0JvZHlOb0NvbW1hXCIpO1xuICAgICAgZnVuY3Rpb24gbWF5YmVUYXJnZXQobm9Db21tYSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24odHlwZTIpIHtcbiAgICAgICAgICBpZiAodHlwZTIgPT0gXCIuXCIpXG4gICAgICAgICAgICByZXR1cm4gY29udChub0NvbW1hID8gdGFyZ2V0Tm9Db21tYSA6IHRhcmdldCk7XG4gICAgICAgICAgZWxzZSBpZiAodHlwZTIgPT0gXCJ2YXJpYWJsZVwiICYmIGlzVFMpXG4gICAgICAgICAgICByZXR1cm4gY29udChtYXliZVR5cGVBcmdzLCBub0NvbW1hID8gbWF5YmVvcGVyYXRvck5vQ29tbWEgOiBtYXliZW9wZXJhdG9yQ29tbWEpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBwYXNzKG5vQ29tbWEgPyBleHByZXNzaW9uTm9Db21tYSA6IGV4cHJlc3Npb24pO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgX19uYW1lKG1heWJlVGFyZ2V0LCBcIm1heWJlVGFyZ2V0XCIpO1xuICAgICAgZnVuY3Rpb24gdGFyZ2V0KF8sIHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcInRhcmdldFwiKSB7XG4gICAgICAgICAgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7XG4gICAgICAgICAgcmV0dXJuIGNvbnQobWF5YmVvcGVyYXRvckNvbW1hKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKHRhcmdldCwgXCJ0YXJnZXRcIik7XG4gICAgICBmdW5jdGlvbiB0YXJnZXROb0NvbW1hKF8sIHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcInRhcmdldFwiKSB7XG4gICAgICAgICAgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7XG4gICAgICAgICAgcmV0dXJuIGNvbnQobWF5YmVvcGVyYXRvck5vQ29tbWEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUodGFyZ2V0Tm9Db21tYSwgXCJ0YXJnZXROb0NvbW1hXCIpO1xuICAgICAgZnVuY3Rpb24gbWF5YmVsYWJlbCh0eXBlMikge1xuICAgICAgICBpZiAodHlwZTIgPT0gXCI6XCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQocG9wbGV4LCBzdGF0ZW1lbnQpO1xuICAgICAgICByZXR1cm4gcGFzcyhtYXliZW9wZXJhdG9yQ29tbWEsIGV4cGVjdChcIjtcIiksIHBvcGxleCk7XG4gICAgICB9XG4gICAgICBfX25hbWUobWF5YmVsYWJlbCwgXCJtYXliZWxhYmVsXCIpO1xuICAgICAgZnVuY3Rpb24gcHJvcGVydHkodHlwZTIpIHtcbiAgICAgICAgaWYgKHR5cGUyID09IFwidmFyaWFibGVcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwicHJvcGVydHlcIjtcbiAgICAgICAgICByZXR1cm4gY29udCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUocHJvcGVydHksIFwicHJvcGVydHlcIik7XG4gICAgICBmdW5jdGlvbiBvYmpwcm9wKHR5cGUyLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJhc3luY1wiKSB7XG4gICAgICAgICAgY3gubWFya2VkID0gXCJwcm9wZXJ0eVwiO1xuICAgICAgICAgIHJldHVybiBjb250KG9ianByb3ApO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUyID09IFwidmFyaWFibGVcIiB8fCBjeC5zdHlsZSA9PSBcImtleXdvcmRcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwicHJvcGVydHlcIjtcbiAgICAgICAgICBpZiAodmFsdWUgPT0gXCJnZXRcIiB8fCB2YWx1ZSA9PSBcInNldFwiKVxuICAgICAgICAgICAgcmV0dXJuIGNvbnQoZ2V0dGVyU2V0dGVyKTtcbiAgICAgICAgICB2YXIgbTtcbiAgICAgICAgICBpZiAoaXNUUyAmJiBjeC5zdGF0ZS5mYXRBcnJvd0F0ID09IGN4LnN0cmVhbS5zdGFydCAmJiAobSA9IGN4LnN0cmVhbS5tYXRjaCgvXlxccyo6XFxzKi8sIGZhbHNlKSkpXG4gICAgICAgICAgICBjeC5zdGF0ZS5mYXRBcnJvd0F0ID0gY3guc3RyZWFtLnBvcyArIG1bMF0ubGVuZ3RoO1xuICAgICAgICAgIHJldHVybiBjb250KGFmdGVycHJvcCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZTIgPT0gXCJudW1iZXJcIiB8fCB0eXBlMiA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgY3gubWFya2VkID0ganNvbmxkTW9kZSA/IFwicHJvcGVydHlcIiA6IGN4LnN0eWxlICsgXCIgcHJvcGVydHlcIjtcbiAgICAgICAgICByZXR1cm4gY29udChhZnRlcnByb3ApO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUyID09IFwianNvbmxkLWtleXdvcmRcIikge1xuICAgICAgICAgIHJldHVybiBjb250KGFmdGVycHJvcCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNUUyAmJiBpc01vZGlmaWVyKHZhbHVlKSkge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgICAgIHJldHVybiBjb250KG9ianByb3ApO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUyID09IFwiW1wiKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwgbWF5YmV0eXBlLCBleHBlY3QoXCJdXCIpLCBhZnRlcnByb3ApO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUyID09IFwic3ByZWFkXCIpIHtcbiAgICAgICAgICByZXR1cm4gY29udChleHByZXNzaW9uTm9Db21tYSwgYWZ0ZXJwcm9wKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBcIipcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgICAgIHJldHVybiBjb250KG9ianByb3ApO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUyID09IFwiOlwiKSB7XG4gICAgICAgICAgcmV0dXJuIHBhc3MoYWZ0ZXJwcm9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKG9ianByb3AsIFwib2JqcHJvcFwiKTtcbiAgICAgIGZ1bmN0aW9uIGdldHRlclNldHRlcih0eXBlMikge1xuICAgICAgICBpZiAodHlwZTIgIT0gXCJ2YXJpYWJsZVwiKVxuICAgICAgICAgIHJldHVybiBwYXNzKGFmdGVycHJvcCk7XG4gICAgICAgIGN4Lm1hcmtlZCA9IFwicHJvcGVydHlcIjtcbiAgICAgICAgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGdldHRlclNldHRlciwgXCJnZXR0ZXJTZXR0ZXJcIik7XG4gICAgICBmdW5jdGlvbiBhZnRlcnByb3AodHlwZTIpIHtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiOlwiKVxuICAgICAgICAgIHJldHVybiBjb250KGV4cHJlc3Npb25Ob0NvbW1hKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiKFwiKVxuICAgICAgICAgIHJldHVybiBwYXNzKGZ1bmN0aW9uZGVmKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShhZnRlcnByb3AsIFwiYWZ0ZXJwcm9wXCIpO1xuICAgICAgZnVuY3Rpb24gY29tbWFzZXAod2hhdCwgZW5kLCBzZXApIHtcbiAgICAgICAgZnVuY3Rpb24gcHJvY2VlZCh0eXBlMiwgdmFsdWUpIHtcbiAgICAgICAgICBpZiAoc2VwID8gc2VwLmluZGV4T2YodHlwZTIpID4gLTEgOiB0eXBlMiA9PSBcIixcIikge1xuICAgICAgICAgICAgdmFyIGxleCA9IGN4LnN0YXRlLmxleGljYWw7XG4gICAgICAgICAgICBpZiAobGV4LmluZm8gPT0gXCJjYWxsXCIpXG4gICAgICAgICAgICAgIGxleC5wb3MgPSAobGV4LnBvcyB8fCAwKSArIDE7XG4gICAgICAgICAgICByZXR1cm4gY29udChmdW5jdGlvbih0eXBlMywgdmFsdWUyKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlMyA9PSBlbmQgfHwgdmFsdWUyID09IGVuZClcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFzcygpO1xuICAgICAgICAgICAgICByZXR1cm4gcGFzcyh3aGF0KTtcbiAgICAgICAgICAgIH0sIHByb2NlZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZTIgPT0gZW5kIHx8IHZhbHVlID09IGVuZClcbiAgICAgICAgICAgIHJldHVybiBjb250KCk7XG4gICAgICAgICAgaWYgKHNlcCAmJiBzZXAuaW5kZXhPZihcIjtcIikgPiAtMSlcbiAgICAgICAgICAgIHJldHVybiBwYXNzKHdoYXQpO1xuICAgICAgICAgIHJldHVybiBjb250KGV4cGVjdChlbmQpKTtcbiAgICAgICAgfVxuICAgICAgICBfX25hbWUocHJvY2VlZCwgXCJwcm9jZWVkXCIpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24odHlwZTIsIHZhbHVlKSB7XG4gICAgICAgICAgaWYgKHR5cGUyID09IGVuZCB8fCB2YWx1ZSA9PSBlbmQpXG4gICAgICAgICAgICByZXR1cm4gY29udCgpO1xuICAgICAgICAgIHJldHVybiBwYXNzKHdoYXQsIHByb2NlZWQpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgX19uYW1lKGNvbW1hc2VwLCBcImNvbW1hc2VwXCIpO1xuICAgICAgZnVuY3Rpb24gY29udENvbW1hc2VwKHdoYXQsIGVuZCwgaW5mbykge1xuICAgICAgICBmb3IgKHZhciBpID0gMzsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICAgICAgICBjeC5jYy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gICAgICAgIHJldHVybiBjb250KHB1c2hsZXgoZW5kLCBpbmZvKSwgY29tbWFzZXAod2hhdCwgZW5kKSwgcG9wbGV4KTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShjb250Q29tbWFzZXAsIFwiY29udENvbW1hc2VwXCIpO1xuICAgICAgZnVuY3Rpb24gYmxvY2sodHlwZTIpIHtcbiAgICAgICAgaWYgKHR5cGUyID09IFwifVwiKVxuICAgICAgICAgIHJldHVybiBjb250KCk7XG4gICAgICAgIHJldHVybiBwYXNzKHN0YXRlbWVudCwgYmxvY2spO1xuICAgICAgfVxuICAgICAgX19uYW1lKGJsb2NrLCBcImJsb2NrXCIpO1xuICAgICAgZnVuY3Rpb24gbWF5YmV0eXBlKHR5cGUyLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNUUykge1xuICAgICAgICAgIGlmICh0eXBlMiA9PSBcIjpcIilcbiAgICAgICAgICAgIHJldHVybiBjb250KHR5cGVleHByKTtcbiAgICAgICAgICBpZiAodmFsdWUgPT0gXCI/XCIpXG4gICAgICAgICAgICByZXR1cm4gY29udChtYXliZXR5cGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUobWF5YmV0eXBlLCBcIm1heWJldHlwZVwiKTtcbiAgICAgIGZ1bmN0aW9uIG1heWJldHlwZU9ySW4odHlwZTIsIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1RTICYmICh0eXBlMiA9PSBcIjpcIiB8fCB2YWx1ZSA9PSBcImluXCIpKVxuICAgICAgICAgIHJldHVybiBjb250KHR5cGVleHByKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShtYXliZXR5cGVPckluLCBcIm1heWJldHlwZU9ySW5cIik7XG4gICAgICBmdW5jdGlvbiBtYXliZXJldHR5cGUodHlwZTIpIHtcbiAgICAgICAgaWYgKGlzVFMgJiYgdHlwZTIgPT0gXCI6XCIpIHtcbiAgICAgICAgICBpZiAoY3guc3RyZWFtLm1hdGNoKC9eXFxzKlxcdytcXHMraXNcXGIvLCBmYWxzZSkpXG4gICAgICAgICAgICByZXR1cm4gY29udChleHByZXNzaW9uLCBpc0tXLCB0eXBlZXhwcik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGNvbnQodHlwZWV4cHIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUobWF5YmVyZXR0eXBlLCBcIm1heWJlcmV0dHlwZVwiKTtcbiAgICAgIGZ1bmN0aW9uIGlzS1coXywgdmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09IFwiaXNcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgICAgIHJldHVybiBjb250KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9fbmFtZShpc0tXLCBcImlzS1dcIik7XG4gICAgICBmdW5jdGlvbiB0eXBlZXhwcih0eXBlMiwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09IFwia2V5b2ZcIiB8fCB2YWx1ZSA9PSBcInR5cGVvZlwiIHx8IHZhbHVlID09IFwiaW5mZXJcIiB8fCB2YWx1ZSA9PSBcInJlYWRvbmx5XCIpIHtcbiAgICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICAgICAgICByZXR1cm4gY29udCh2YWx1ZSA9PSBcInR5cGVvZlwiID8gZXhwcmVzc2lvbk5vQ29tbWEgOiB0eXBlZXhwcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUyID09IFwidmFyaWFibGVcIiB8fCB2YWx1ZSA9PSBcInZvaWRcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwidHlwZVwiO1xuICAgICAgICAgIHJldHVybiBjb250KGFmdGVyVHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09IFwifFwiIHx8IHZhbHVlID09IFwiJlwiKVxuICAgICAgICAgIHJldHVybiBjb250KHR5cGVleHByKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwic3RyaW5nXCIgfHwgdHlwZTIgPT0gXCJudW1iZXJcIiB8fCB0eXBlMiA9PSBcImF0b21cIilcbiAgICAgICAgICByZXR1cm4gY29udChhZnRlclR5cGUpO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJbXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcIl1cIiksIGNvbW1hc2VwKHR5cGVleHByLCBcIl1cIiwgXCIsXCIpLCBwb3BsZXgsIGFmdGVyVHlwZSk7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIntcIilcbiAgICAgICAgICByZXR1cm4gY29udChwdXNobGV4KFwifVwiKSwgdHlwZXByb3BzLCBwb3BsZXgsIGFmdGVyVHlwZSk7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIihcIilcbiAgICAgICAgICByZXR1cm4gY29udChjb21tYXNlcCh0eXBlYXJnLCBcIilcIiksIG1heWJlUmV0dXJuVHlwZSwgYWZ0ZXJUeXBlKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiPFwiKVxuICAgICAgICAgIHJldHVybiBjb250KGNvbW1hc2VwKHR5cGVleHByLCBcIj5cIiksIHR5cGVleHByKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwicXVhc2lcIikge1xuICAgICAgICAgIHJldHVybiBwYXNzKHF1YXNpVHlwZSwgYWZ0ZXJUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKHR5cGVleHByLCBcInR5cGVleHByXCIpO1xuICAgICAgZnVuY3Rpb24gbWF5YmVSZXR1cm5UeXBlKHR5cGUyKSB7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIj0+XCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQodHlwZWV4cHIpO1xuICAgICAgfVxuICAgICAgX19uYW1lKG1heWJlUmV0dXJuVHlwZSwgXCJtYXliZVJldHVyblR5cGVcIik7XG4gICAgICBmdW5jdGlvbiB0eXBlcHJvcHModHlwZTIpIHtcbiAgICAgICAgaWYgKHR5cGUyLm1hdGNoKC9bXFx9XFwpXFxdXS8pKVxuICAgICAgICAgIHJldHVybiBjb250KCk7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIixcIiB8fCB0eXBlMiA9PSBcIjtcIilcbiAgICAgICAgICByZXR1cm4gY29udCh0eXBlcHJvcHMpO1xuICAgICAgICByZXR1cm4gcGFzcyh0eXBlcHJvcCwgdHlwZXByb3BzKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZSh0eXBlcHJvcHMsIFwidHlwZXByb3BzXCIpO1xuICAgICAgZnVuY3Rpb24gdHlwZXByb3AodHlwZTIsIHZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcInZhcmlhYmxlXCIgfHwgY3guc3R5bGUgPT0gXCJrZXl3b3JkXCIpIHtcbiAgICAgICAgICBjeC5tYXJrZWQgPSBcInByb3BlcnR5XCI7XG4gICAgICAgICAgcmV0dXJuIGNvbnQodHlwZXByb3ApO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09IFwiP1wiIHx8IHR5cGUyID09IFwibnVtYmVyXCIgfHwgdHlwZTIgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBjb250KHR5cGVwcm9wKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlMiA9PSBcIjpcIikge1xuICAgICAgICAgIHJldHVybiBjb250KHR5cGVleHByKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlMiA9PSBcIltcIikge1xuICAgICAgICAgIHJldHVybiBjb250KGV4cGVjdChcInZhcmlhYmxlXCIpLCBtYXliZXR5cGVPckluLCBleHBlY3QoXCJdXCIpLCB0eXBlcHJvcCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZTIgPT0gXCIoXCIpIHtcbiAgICAgICAgICByZXR1cm4gcGFzcyhmdW5jdGlvbmRlY2wsIHR5cGVwcm9wKTtcbiAgICAgICAgfSBlbHNlIGlmICghdHlwZTIubWF0Y2goL1s7XFx9XFwpXFxdLF0vKSkge1xuICAgICAgICAgIHJldHVybiBjb250KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9fbmFtZSh0eXBlcHJvcCwgXCJ0eXBlcHJvcFwiKTtcbiAgICAgIGZ1bmN0aW9uIHF1YXNpVHlwZSh0eXBlMiwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGUyICE9IFwicXVhc2lcIilcbiAgICAgICAgICByZXR1cm4gcGFzcygpO1xuICAgICAgICBpZiAodmFsdWUuc2xpY2UodmFsdWUubGVuZ3RoIC0gMikgIT0gXCIke1wiKVxuICAgICAgICAgIHJldHVybiBjb250KHF1YXNpVHlwZSk7XG4gICAgICAgIHJldHVybiBjb250KHR5cGVleHByLCBjb250aW51ZVF1YXNpVHlwZSk7XG4gICAgICB9XG4gICAgICBfX25hbWUocXVhc2lUeXBlLCBcInF1YXNpVHlwZVwiKTtcbiAgICAgIGZ1bmN0aW9uIGNvbnRpbnVlUXVhc2lUeXBlKHR5cGUyKSB7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIn1cIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwic3RyaW5nLTJcIjtcbiAgICAgICAgICBjeC5zdGF0ZS50b2tlbml6ZSA9IHRva2VuUXVhc2k7XG4gICAgICAgICAgcmV0dXJuIGNvbnQocXVhc2lUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKGNvbnRpbnVlUXVhc2lUeXBlLCBcImNvbnRpbnVlUXVhc2lUeXBlXCIpO1xuICAgICAgZnVuY3Rpb24gdHlwZWFyZyh0eXBlMiwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGUyID09IFwidmFyaWFibGVcIiAmJiBjeC5zdHJlYW0ubWF0Y2goL15cXHMqWz86XS8sIGZhbHNlKSB8fCB2YWx1ZSA9PSBcIj9cIilcbiAgICAgICAgICByZXR1cm4gY29udCh0eXBlYXJnKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiOlwiKVxuICAgICAgICAgIHJldHVybiBjb250KHR5cGVleHByKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwic3ByZWFkXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQodHlwZWFyZyk7XG4gICAgICAgIHJldHVybiBwYXNzKHR5cGVleHByKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZSh0eXBlYXJnLCBcInR5cGVhcmdcIik7XG4gICAgICBmdW5jdGlvbiBhZnRlclR5cGUodHlwZTIsIHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcIjxcIilcbiAgICAgICAgICByZXR1cm4gY29udChwdXNobGV4KFwiPlwiKSwgY29tbWFzZXAodHlwZWV4cHIsIFwiPlwiKSwgcG9wbGV4LCBhZnRlclR5cGUpO1xuICAgICAgICBpZiAodmFsdWUgPT0gXCJ8XCIgfHwgdHlwZTIgPT0gXCIuXCIgfHwgdmFsdWUgPT0gXCImXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQodHlwZWV4cHIpO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJbXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQodHlwZWV4cHIsIGV4cGVjdChcIl1cIiksIGFmdGVyVHlwZSk7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcImV4dGVuZHNcIiB8fCB2YWx1ZSA9PSBcImltcGxlbWVudHNcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgICAgIHJldHVybiBjb250KHR5cGVleHByKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT0gXCI/XCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQodHlwZWV4cHIsIGV4cGVjdChcIjpcIiksIHR5cGVleHByKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShhZnRlclR5cGUsIFwiYWZ0ZXJUeXBlXCIpO1xuICAgICAgZnVuY3Rpb24gbWF5YmVUeXBlQXJncyhfLCB2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT0gXCI8XCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcIj5cIiksIGNvbW1hc2VwKHR5cGVleHByLCBcIj5cIiksIHBvcGxleCwgYWZ0ZXJUeXBlKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShtYXliZVR5cGVBcmdzLCBcIm1heWJlVHlwZUFyZ3NcIik7XG4gICAgICBmdW5jdGlvbiB0eXBlcGFyYW0oKSB7XG4gICAgICAgIHJldHVybiBwYXNzKHR5cGVleHByLCBtYXliZVR5cGVEZWZhdWx0KTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZSh0eXBlcGFyYW0sIFwidHlwZXBhcmFtXCIpO1xuICAgICAgZnVuY3Rpb24gbWF5YmVUeXBlRGVmYXVsdChfLCB2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT0gXCI9XCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQodHlwZWV4cHIpO1xuICAgICAgfVxuICAgICAgX19uYW1lKG1heWJlVHlwZURlZmF1bHQsIFwibWF5YmVUeXBlRGVmYXVsdFwiKTtcbiAgICAgIGZ1bmN0aW9uIHZhcmRlZihfLCB2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT0gXCJlbnVtXCIpIHtcbiAgICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICAgICAgICByZXR1cm4gY29udChlbnVtZGVmKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFzcyhwYXR0ZXJuLCBtYXliZXR5cGUsIG1heWJlQXNzaWduLCB2YXJkZWZDb250KTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZSh2YXJkZWYsIFwidmFyZGVmXCIpO1xuICAgICAgZnVuY3Rpb24gcGF0dGVybih0eXBlMiwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzVFMgJiYgaXNNb2RpZmllcih2YWx1ZSkpIHtcbiAgICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICAgICAgICByZXR1cm4gY29udChwYXR0ZXJuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZTIgPT0gXCJ2YXJpYWJsZVwiKSB7XG4gICAgICAgICAgcmVnaXN0ZXIodmFsdWUpO1xuICAgICAgICAgIHJldHVybiBjb250KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUyID09IFwic3ByZWFkXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQocGF0dGVybik7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIltcIilcbiAgICAgICAgICByZXR1cm4gY29udENvbW1hc2VwKGVsdHBhdHRlcm4sIFwiXVwiKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwie1wiKVxuICAgICAgICAgIHJldHVybiBjb250Q29tbWFzZXAocHJvcHBhdHRlcm4sIFwifVwiKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShwYXR0ZXJuLCBcInBhdHRlcm5cIik7XG4gICAgICBmdW5jdGlvbiBwcm9wcGF0dGVybih0eXBlMiwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGUyID09IFwidmFyaWFibGVcIiAmJiAhY3guc3RyZWFtLm1hdGNoKC9eXFxzKjovLCBmYWxzZSkpIHtcbiAgICAgICAgICByZWdpc3Rlcih2YWx1ZSk7XG4gICAgICAgICAgcmV0dXJuIGNvbnQobWF5YmVBc3NpZ24pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlMiA9PSBcInZhcmlhYmxlXCIpXG4gICAgICAgICAgY3gubWFya2VkID0gXCJwcm9wZXJ0eVwiO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJzcHJlYWRcIilcbiAgICAgICAgICByZXR1cm4gY29udChwYXR0ZXJuKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwifVwiKVxuICAgICAgICAgIHJldHVybiBwYXNzKCk7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIltcIilcbiAgICAgICAgICByZXR1cm4gY29udChleHByZXNzaW9uLCBleHBlY3QoXCJdXCIpLCBleHBlY3QoXCI6XCIpLCBwcm9wcGF0dGVybik7XG4gICAgICAgIHJldHVybiBjb250KGV4cGVjdChcIjpcIiksIHBhdHRlcm4sIG1heWJlQXNzaWduKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShwcm9wcGF0dGVybiwgXCJwcm9wcGF0dGVyblwiKTtcbiAgICAgIGZ1bmN0aW9uIGVsdHBhdHRlcm4oKSB7XG4gICAgICAgIHJldHVybiBwYXNzKHBhdHRlcm4sIG1heWJlQXNzaWduKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShlbHRwYXR0ZXJuLCBcImVsdHBhdHRlcm5cIik7XG4gICAgICBmdW5jdGlvbiBtYXliZUFzc2lnbihfdHlwZSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09IFwiPVwiKVxuICAgICAgICAgIHJldHVybiBjb250KGV4cHJlc3Npb25Ob0NvbW1hKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShtYXliZUFzc2lnbiwgXCJtYXliZUFzc2lnblwiKTtcbiAgICAgIGZ1bmN0aW9uIHZhcmRlZkNvbnQodHlwZTIpIHtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiLFwiKVxuICAgICAgICAgIHJldHVybiBjb250KHZhcmRlZik7XG4gICAgICB9XG4gICAgICBfX25hbWUodmFyZGVmQ29udCwgXCJ2YXJkZWZDb250XCIpO1xuICAgICAgZnVuY3Rpb24gbWF5YmVlbHNlKHR5cGUyLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJrZXl3b3JkIGJcIiAmJiB2YWx1ZSA9PSBcImVsc2VcIilcbiAgICAgICAgICByZXR1cm4gY29udChwdXNobGV4KFwiZm9ybVwiLCBcImVsc2VcIiksIHN0YXRlbWVudCwgcG9wbGV4KTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShtYXliZWVsc2UsIFwibWF5YmVlbHNlXCIpO1xuICAgICAgZnVuY3Rpb24gZm9yc3BlYyh0eXBlMiwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09IFwiYXdhaXRcIilcbiAgICAgICAgICByZXR1cm4gY29udChmb3JzcGVjKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiKFwiKVxuICAgICAgICAgIHJldHVybiBjb250KHB1c2hsZXgoXCIpXCIpLCBmb3JzcGVjMSwgcG9wbGV4KTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShmb3JzcGVjLCBcImZvcnNwZWNcIik7XG4gICAgICBmdW5jdGlvbiBmb3JzcGVjMSh0eXBlMikge1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJ2YXJcIilcbiAgICAgICAgICByZXR1cm4gY29udCh2YXJkZWYsIGZvcnNwZWMyKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwidmFyaWFibGVcIilcbiAgICAgICAgICByZXR1cm4gY29udChmb3JzcGVjMik7XG4gICAgICAgIHJldHVybiBwYXNzKGZvcnNwZWMyKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShmb3JzcGVjMSwgXCJmb3JzcGVjMVwiKTtcbiAgICAgIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUyLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZTIgPT0gXCIpXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQoKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiO1wiKVxuICAgICAgICAgIHJldHVybiBjb250KGZvcnNwZWMyKTtcbiAgICAgICAgaWYgKHZhbHVlID09IFwiaW5cIiB8fCB2YWx1ZSA9PSBcIm9mXCIpIHtcbiAgICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICAgICAgICByZXR1cm4gY29udChleHByZXNzaW9uLCBmb3JzcGVjMik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhc3MoZXhwcmVzc2lvbiwgZm9yc3BlYzIpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGZvcnNwZWMyLCBcImZvcnNwZWMyXCIpO1xuICAgICAgZnVuY3Rpb24gZnVuY3Rpb25kZWYodHlwZTIsIHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcIipcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgICAgIHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZTIgPT0gXCJ2YXJpYWJsZVwiKSB7XG4gICAgICAgICAgcmVnaXN0ZXIodmFsdWUpO1xuICAgICAgICAgIHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZTIgPT0gXCIoXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQocHVzaGNvbnRleHQsIHB1c2hsZXgoXCIpXCIpLCBjb21tYXNlcChmdW5hcmcsIFwiKVwiKSwgcG9wbGV4LCBtYXliZXJldHR5cGUsIHN0YXRlbWVudCwgcG9wY29udGV4dCk7XG4gICAgICAgIGlmIChpc1RTICYmIHZhbHVlID09IFwiPFwiKVxuICAgICAgICAgIHJldHVybiBjb250KHB1c2hsZXgoXCI+XCIpLCBjb21tYXNlcCh0eXBlcGFyYW0sIFwiPlwiKSwgcG9wbGV4LCBmdW5jdGlvbmRlZik7XG4gICAgICB9XG4gICAgICBfX25hbWUoZnVuY3Rpb25kZWYsIFwiZnVuY3Rpb25kZWZcIik7XG4gICAgICBmdW5jdGlvbiBmdW5jdGlvbmRlY2wodHlwZTIsIHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcIipcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgICAgIHJldHVybiBjb250KGZ1bmN0aW9uZGVjbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUyID09IFwidmFyaWFibGVcIikge1xuICAgICAgICAgIHJlZ2lzdGVyKHZhbHVlKTtcbiAgICAgICAgICByZXR1cm4gY29udChmdW5jdGlvbmRlY2wpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIihcIilcbiAgICAgICAgICByZXR1cm4gY29udChwdXNoY29udGV4dCwgcHVzaGxleChcIilcIiksIGNvbW1hc2VwKGZ1bmFyZywgXCIpXCIpLCBwb3BsZXgsIG1heWJlcmV0dHlwZSwgcG9wY29udGV4dCk7XG4gICAgICAgIGlmIChpc1RTICYmIHZhbHVlID09IFwiPFwiKVxuICAgICAgICAgIHJldHVybiBjb250KHB1c2hsZXgoXCI+XCIpLCBjb21tYXNlcCh0eXBlcGFyYW0sIFwiPlwiKSwgcG9wbGV4LCBmdW5jdGlvbmRlY2wpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGZ1bmN0aW9uZGVjbCwgXCJmdW5jdGlvbmRlY2xcIik7XG4gICAgICBmdW5jdGlvbiB0eXBlbmFtZSh0eXBlMiwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGUyID09IFwia2V5d29yZFwiIHx8IHR5cGUyID09IFwidmFyaWFibGVcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwidHlwZVwiO1xuICAgICAgICAgIHJldHVybiBjb250KHR5cGVuYW1lKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBcIjxcIikge1xuICAgICAgICAgIHJldHVybiBjb250KHB1c2hsZXgoXCI+XCIpLCBjb21tYXNlcCh0eXBlcGFyYW0sIFwiPlwiKSwgcG9wbGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKHR5cGVuYW1lLCBcInR5cGVuYW1lXCIpO1xuICAgICAgZnVuY3Rpb24gZnVuYXJnKHR5cGUyLCB2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT0gXCJAXCIpXG4gICAgICAgICAgY29udChleHByZXNzaW9uLCBmdW5hcmcpO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJzcHJlYWRcIilcbiAgICAgICAgICByZXR1cm4gY29udChmdW5hcmcpO1xuICAgICAgICBpZiAoaXNUUyAmJiBpc01vZGlmaWVyKHZhbHVlKSkge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgICAgIHJldHVybiBjb250KGZ1bmFyZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVFMgJiYgdHlwZTIgPT0gXCJ0aGlzXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQobWF5YmV0eXBlLCBtYXliZUFzc2lnbik7XG4gICAgICAgIHJldHVybiBwYXNzKHBhdHRlcm4sIG1heWJldHlwZSwgbWF5YmVBc3NpZ24pO1xuICAgICAgfVxuICAgICAgX19uYW1lKGZ1bmFyZywgXCJmdW5hcmdcIik7XG4gICAgICBmdW5jdGlvbiBjbGFzc0V4cHJlc3Npb24odHlwZTIsIHZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcInZhcmlhYmxlXCIpXG4gICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZSh0eXBlMiwgdmFsdWUpO1xuICAgICAgICByZXR1cm4gY2xhc3NOYW1lQWZ0ZXIodHlwZTIsIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShjbGFzc0V4cHJlc3Npb24sIFwiY2xhc3NFeHByZXNzaW9uXCIpO1xuICAgICAgZnVuY3Rpb24gY2xhc3NOYW1lKHR5cGUyLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJ2YXJpYWJsZVwiKSB7XG4gICAgICAgICAgcmVnaXN0ZXIodmFsdWUpO1xuICAgICAgICAgIHJldHVybiBjb250KGNsYXNzTmFtZUFmdGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKGNsYXNzTmFtZSwgXCJjbGFzc05hbWVcIik7XG4gICAgICBmdW5jdGlvbiBjbGFzc05hbWVBZnRlcih0eXBlMiwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09IFwiPFwiKVxuICAgICAgICAgIHJldHVybiBjb250KHB1c2hsZXgoXCI+XCIpLCBjb21tYXNlcCh0eXBlcGFyYW0sIFwiPlwiKSwgcG9wbGV4LCBjbGFzc05hbWVBZnRlcik7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcImV4dGVuZHNcIiB8fCB2YWx1ZSA9PSBcImltcGxlbWVudHNcIiB8fCBpc1RTICYmIHR5cGUyID09IFwiLFwiKSB7XG4gICAgICAgICAgaWYgKHZhbHVlID09IFwiaW1wbGVtZW50c1wiKVxuICAgICAgICAgICAgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7XG4gICAgICAgICAgcmV0dXJuIGNvbnQoaXNUUyA/IHR5cGVleHByIDogZXhwcmVzc2lvbiwgY2xhc3NOYW1lQWZ0ZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIntcIilcbiAgICAgICAgICByZXR1cm4gY29udChwdXNobGV4KFwifVwiKSwgY2xhc3NCb2R5LCBwb3BsZXgpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGNsYXNzTmFtZUFmdGVyLCBcImNsYXNzTmFtZUFmdGVyXCIpO1xuICAgICAgZnVuY3Rpb24gY2xhc3NCb2R5KHR5cGUyLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZTIgPT0gXCJhc3luY1wiIHx8IHR5cGUyID09IFwidmFyaWFibGVcIiAmJiAodmFsdWUgPT0gXCJzdGF0aWNcIiB8fCB2YWx1ZSA9PSBcImdldFwiIHx8IHZhbHVlID09IFwic2V0XCIgfHwgaXNUUyAmJiBpc01vZGlmaWVyKHZhbHVlKSkgJiYgY3guc3RyZWFtLm1hdGNoKC9eXFxzK1tcXHckXFx4YTEtXFx1ZmZmZl0vLCBmYWxzZSkpIHtcbiAgICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICAgICAgICByZXR1cm4gY29udChjbGFzc0JvZHkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlMiA9PSBcInZhcmlhYmxlXCIgfHwgY3guc3R5bGUgPT0gXCJrZXl3b3JkXCIpIHtcbiAgICAgICAgICBjeC5tYXJrZWQgPSBcInByb3BlcnR5XCI7XG4gICAgICAgICAgcmV0dXJuIGNvbnQoY2xhc3NmaWVsZCwgY2xhc3NCb2R5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZTIgPT0gXCJudW1iZXJcIiB8fCB0eXBlMiA9PSBcInN0cmluZ1wiKVxuICAgICAgICAgIHJldHVybiBjb250KGNsYXNzZmllbGQsIGNsYXNzQm9keSk7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIltcIilcbiAgICAgICAgICByZXR1cm4gY29udChleHByZXNzaW9uLCBtYXliZXR5cGUsIGV4cGVjdChcIl1cIiksIGNsYXNzZmllbGQsIGNsYXNzQm9keSk7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcIipcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgICAgIHJldHVybiBjb250KGNsYXNzQm9keSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVFMgJiYgdHlwZTIgPT0gXCIoXCIpXG4gICAgICAgICAgcmV0dXJuIHBhc3MoZnVuY3Rpb25kZWNsLCBjbGFzc0JvZHkpO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCI7XCIgfHwgdHlwZTIgPT0gXCIsXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQoY2xhc3NCb2R5KTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwifVwiKVxuICAgICAgICAgIHJldHVybiBjb250KCk7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcIkBcIilcbiAgICAgICAgICByZXR1cm4gY29udChleHByZXNzaW9uLCBjbGFzc0JvZHkpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGNsYXNzQm9keSwgXCJjbGFzc0JvZHlcIik7XG4gICAgICBmdW5jdGlvbiBjbGFzc2ZpZWxkKHR5cGUyLCB2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT0gXCIhXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQoY2xhc3NmaWVsZCk7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcIj9cIilcbiAgICAgICAgICByZXR1cm4gY29udChjbGFzc2ZpZWxkKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiOlwiKVxuICAgICAgICAgIHJldHVybiBjb250KHR5cGVleHByLCBtYXliZUFzc2lnbik7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcIj1cIilcbiAgICAgICAgICByZXR1cm4gY29udChleHByZXNzaW9uTm9Db21tYSk7XG4gICAgICAgIHZhciBjb250ZXh0ID0gY3guc3RhdGUubGV4aWNhbC5wcmV2LCBpc0ludGVyZmFjZSA9IGNvbnRleHQgJiYgY29udGV4dC5pbmZvID09IFwiaW50ZXJmYWNlXCI7XG4gICAgICAgIHJldHVybiBwYXNzKGlzSW50ZXJmYWNlID8gZnVuY3Rpb25kZWNsIDogZnVuY3Rpb25kZWYpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGNsYXNzZmllbGQsIFwiY2xhc3NmaWVsZFwiKTtcbiAgICAgIGZ1bmN0aW9uIGFmdGVyRXhwb3J0KHR5cGUyLCB2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT0gXCIqXCIpIHtcbiAgICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICAgICAgICByZXR1cm4gY29udChtYXliZUZyb20sIGV4cGVjdChcIjtcIikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcImRlZmF1bHRcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgICAgIHJldHVybiBjb250KGV4cHJlc3Npb24sIGV4cGVjdChcIjtcIikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIntcIilcbiAgICAgICAgICByZXR1cm4gY29udChjb21tYXNlcChleHBvcnRGaWVsZCwgXCJ9XCIpLCBtYXliZUZyb20sIGV4cGVjdChcIjtcIikpO1xuICAgICAgICByZXR1cm4gcGFzcyhzdGF0ZW1lbnQpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGFmdGVyRXhwb3J0LCBcImFmdGVyRXhwb3J0XCIpO1xuICAgICAgZnVuY3Rpb24gZXhwb3J0RmllbGQodHlwZTIsIHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcImFzXCIpIHtcbiAgICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICAgICAgICByZXR1cm4gY29udChleHBlY3QoXCJ2YXJpYWJsZVwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUyID09IFwidmFyaWFibGVcIilcbiAgICAgICAgICByZXR1cm4gcGFzcyhleHByZXNzaW9uTm9Db21tYSwgZXhwb3J0RmllbGQpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGV4cG9ydEZpZWxkLCBcImV4cG9ydEZpZWxkXCIpO1xuICAgICAgZnVuY3Rpb24gYWZ0ZXJJbXBvcnQodHlwZTIpIHtcbiAgICAgICAgaWYgKHR5cGUyID09IFwic3RyaW5nXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQoKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiKFwiKVxuICAgICAgICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb24pO1xuICAgICAgICBpZiAodHlwZTIgPT0gXCIuXCIpXG4gICAgICAgICAgcmV0dXJuIHBhc3MobWF5YmVvcGVyYXRvckNvbW1hKTtcbiAgICAgICAgcmV0dXJuIHBhc3MoaW1wb3J0U3BlYywgbWF5YmVNb3JlSW1wb3J0cywgbWF5YmVGcm9tKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShhZnRlckltcG9ydCwgXCJhZnRlckltcG9ydFwiKTtcbiAgICAgIGZ1bmN0aW9uIGltcG9ydFNwZWModHlwZTIsIHZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlMiA9PSBcIntcIilcbiAgICAgICAgICByZXR1cm4gY29udENvbW1hc2VwKGltcG9ydFNwZWMsIFwifVwiKTtcbiAgICAgICAgaWYgKHR5cGUyID09IFwidmFyaWFibGVcIilcbiAgICAgICAgICByZWdpc3Rlcih2YWx1ZSk7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBcIipcIilcbiAgICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICAgICAgcmV0dXJuIGNvbnQobWF5YmVBcyk7XG4gICAgICB9XG4gICAgICBfX25hbWUoaW1wb3J0U3BlYywgXCJpbXBvcnRTcGVjXCIpO1xuICAgICAgZnVuY3Rpb24gbWF5YmVNb3JlSW1wb3J0cyh0eXBlMikge1xuICAgICAgICBpZiAodHlwZTIgPT0gXCIsXCIpXG4gICAgICAgICAgcmV0dXJuIGNvbnQoaW1wb3J0U3BlYywgbWF5YmVNb3JlSW1wb3J0cyk7XG4gICAgICB9XG4gICAgICBfX25hbWUobWF5YmVNb3JlSW1wb3J0cywgXCJtYXliZU1vcmVJbXBvcnRzXCIpO1xuICAgICAgZnVuY3Rpb24gbWF5YmVBcyhfdHlwZSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09IFwiYXNcIikge1xuICAgICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgICAgIHJldHVybiBjb250KGltcG9ydFNwZWMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUobWF5YmVBcywgXCJtYXliZUFzXCIpO1xuICAgICAgZnVuY3Rpb24gbWF5YmVGcm9tKF90eXBlLCB2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT0gXCJmcm9tXCIpIHtcbiAgICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICAgICAgICByZXR1cm4gY29udChleHByZXNzaW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX19uYW1lKG1heWJlRnJvbSwgXCJtYXliZUZyb21cIik7XG4gICAgICBmdW5jdGlvbiBhcnJheUxpdGVyYWwodHlwZTIpIHtcbiAgICAgICAgaWYgKHR5cGUyID09IFwiXVwiKVxuICAgICAgICAgIHJldHVybiBjb250KCk7XG4gICAgICAgIHJldHVybiBwYXNzKGNvbW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1hLCBcIl1cIikpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGFycmF5TGl0ZXJhbCwgXCJhcnJheUxpdGVyYWxcIik7XG4gICAgICBmdW5jdGlvbiBlbnVtZGVmKCkge1xuICAgICAgICByZXR1cm4gcGFzcyhwdXNobGV4KFwiZm9ybVwiKSwgcGF0dGVybiwgZXhwZWN0KFwie1wiKSwgcHVzaGxleChcIn1cIiksIGNvbW1hc2VwKGVudW1tZW1iZXIsIFwifVwiKSwgcG9wbGV4LCBwb3BsZXgpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGVudW1kZWYsIFwiZW51bWRlZlwiKTtcbiAgICAgIGZ1bmN0aW9uIGVudW1tZW1iZXIoKSB7XG4gICAgICAgIHJldHVybiBwYXNzKHBhdHRlcm4sIG1heWJlQXNzaWduKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShlbnVtbWVtYmVyLCBcImVudW1tZW1iZXJcIik7XG4gICAgICBmdW5jdGlvbiBpc0NvbnRpbnVlZFN0YXRlbWVudChzdGF0ZSwgdGV4dEFmdGVyKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5sYXN0VHlwZSA9PSBcIm9wZXJhdG9yXCIgfHwgc3RhdGUubGFzdFR5cGUgPT0gXCIsXCIgfHwgaXNPcGVyYXRvckNoYXIudGVzdCh0ZXh0QWZ0ZXIuY2hhckF0KDApKSB8fCAvWywuXS8udGVzdCh0ZXh0QWZ0ZXIuY2hhckF0KDApKTtcbiAgICAgIH1cbiAgICAgIF9fbmFtZShpc0NvbnRpbnVlZFN0YXRlbWVudCwgXCJpc0NvbnRpbnVlZFN0YXRlbWVudFwiKTtcbiAgICAgIGZ1bmN0aW9uIGV4cHJlc3Npb25BbGxvd2VkKHN0cmVhbSwgc3RhdGUsIGJhY2tVcCkge1xuICAgICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUgPT0gdG9rZW5CYXNlICYmIC9eKD86b3BlcmF0b3J8c29mfGtleXdvcmQgW2JjZF18Y2FzZXxuZXd8ZXhwb3J0fGRlZmF1bHR8c3ByZWFkfFtcXFt7fVxcKCw7Ol18PT4pJC8udGVzdChzdGF0ZS5sYXN0VHlwZSkgfHwgc3RhdGUubGFzdFR5cGUgPT0gXCJxdWFzaVwiICYmIC9cXHtcXHMqJC8udGVzdChzdHJlYW0uc3RyaW5nLnNsaWNlKDAsIHN0cmVhbS5wb3MgLSAoYmFja1VwIHx8IDApKSk7XG4gICAgICB9XG4gICAgICBfX25hbWUoZXhwcmVzc2lvbkFsbG93ZWQsIFwiZXhwcmVzc2lvbkFsbG93ZWRcIik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydFN0YXRlOiBmdW5jdGlvbihiYXNlY29sdW1uKSB7XG4gICAgICAgICAgdmFyIHN0YXRlID0ge1xuICAgICAgICAgICAgdG9rZW5pemU6IHRva2VuQmFzZSxcbiAgICAgICAgICAgIGxhc3RUeXBlOiBcInNvZlwiLFxuICAgICAgICAgICAgY2M6IFtdLFxuICAgICAgICAgICAgbGV4aWNhbDogbmV3IEpTTGV4aWNhbCgoYmFzZWNvbHVtbiB8fCAwKSAtIGluZGVudFVuaXQsIDAsIFwiYmxvY2tcIiwgZmFsc2UpLFxuICAgICAgICAgICAgbG9jYWxWYXJzOiBwYXJzZXJDb25maWcubG9jYWxWYXJzLFxuICAgICAgICAgICAgY29udGV4dDogcGFyc2VyQ29uZmlnLmxvY2FsVmFycyAmJiBuZXcgQ29udGV4dChudWxsLCBudWxsLCBmYWxzZSksXG4gICAgICAgICAgICBpbmRlbnRlZDogYmFzZWNvbHVtbiB8fCAwXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAocGFyc2VyQ29uZmlnLmdsb2JhbFZhcnMgJiYgdHlwZW9mIHBhcnNlckNvbmZpZy5nbG9iYWxWYXJzID09IFwib2JqZWN0XCIpXG4gICAgICAgICAgICBzdGF0ZS5nbG9iYWxWYXJzID0gcGFyc2VyQ29uZmlnLmdsb2JhbFZhcnM7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuICAgICAgICB0b2tlbjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkge1xuICAgICAgICAgIGlmIChzdHJlYW0uc29sKCkpIHtcbiAgICAgICAgICAgIGlmICghc3RhdGUubGV4aWNhbC5oYXNPd25Qcm9wZXJ0eShcImFsaWduXCIpKVxuICAgICAgICAgICAgICBzdGF0ZS5sZXhpY2FsLmFsaWduID0gZmFsc2U7XG4gICAgICAgICAgICBzdGF0ZS5pbmRlbnRlZCA9IHN0cmVhbS5pbmRlbnRhdGlvbigpO1xuICAgICAgICAgICAgZmluZEZhdEFycm93KHN0cmVhbSwgc3RhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3RhdGUudG9rZW5pemUgIT0gdG9rZW5Db21tZW50ICYmIHN0cmVhbS5lYXRTcGFjZSgpKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgdmFyIHN0eWxlID0gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgICAgICAgaWYgKHR5cGUgPT0gXCJjb21tZW50XCIpXG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICAgICAgc3RhdGUubGFzdFR5cGUgPSB0eXBlID09IFwib3BlcmF0b3JcIiAmJiAoY29udGVudCA9PSBcIisrXCIgfHwgY29udGVudCA9PSBcIi0tXCIpID8gXCJpbmNkZWNcIiA6IHR5cGU7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlSlMoc3RhdGUsIHN0eWxlLCB0eXBlLCBjb250ZW50LCBzdHJlYW0pO1xuICAgICAgICB9LFxuICAgICAgICBpbmRlbnQ6IGZ1bmN0aW9uKHN0YXRlLCB0ZXh0QWZ0ZXIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUudG9rZW5pemUgPT0gdG9rZW5Db21tZW50IHx8IHN0YXRlLnRva2VuaXplID09IHRva2VuUXVhc2kpXG4gICAgICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuICAgICAgICAgIGlmIChzdGF0ZS50b2tlbml6ZSAhPSB0b2tlbkJhc2UpXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB2YXIgZmlyc3RDaGFyID0gdGV4dEFmdGVyICYmIHRleHRBZnRlci5jaGFyQXQoMCksIGxleGljYWwgPSBzdGF0ZS5sZXhpY2FsLCB0b3A7XG4gICAgICAgICAgaWYgKCEvXlxccyplbHNlXFxiLy50ZXN0KHRleHRBZnRlcikpXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gc3RhdGUuY2MubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgdmFyIGMgPSBzdGF0ZS5jY1tpXTtcbiAgICAgICAgICAgICAgaWYgKGMgPT0gcG9wbGV4KVxuICAgICAgICAgICAgICAgIGxleGljYWwgPSBsZXhpY2FsLnByZXY7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGMgIT0gbWF5YmVlbHNlICYmIGMgIT0gcG9wY29udGV4dClcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAoKGxleGljYWwudHlwZSA9PSBcInN0YXRcIiB8fCBsZXhpY2FsLnR5cGUgPT0gXCJmb3JtXCIpICYmIChmaXJzdENoYXIgPT0gXCJ9XCIgfHwgKHRvcCA9IHN0YXRlLmNjW3N0YXRlLmNjLmxlbmd0aCAtIDFdKSAmJiAodG9wID09IG1heWJlb3BlcmF0b3JDb21tYSB8fCB0b3AgPT0gbWF5YmVvcGVyYXRvck5vQ29tbWEpICYmICEvXlssXFwuPStcXC0qOj9bXFwoXS8udGVzdCh0ZXh0QWZ0ZXIpKSlcbiAgICAgICAgICAgIGxleGljYWwgPSBsZXhpY2FsLnByZXY7XG4gICAgICAgICAgaWYgKHN0YXRlbWVudEluZGVudCAmJiBsZXhpY2FsLnR5cGUgPT0gXCIpXCIgJiYgbGV4aWNhbC5wcmV2LnR5cGUgPT0gXCJzdGF0XCIpXG4gICAgICAgICAgICBsZXhpY2FsID0gbGV4aWNhbC5wcmV2O1xuICAgICAgICAgIHZhciB0eXBlMiA9IGxleGljYWwudHlwZSwgY2xvc2luZyA9IGZpcnN0Q2hhciA9PSB0eXBlMjtcbiAgICAgICAgICBpZiAodHlwZTIgPT0gXCJ2YXJkZWZcIilcbiAgICAgICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKHN0YXRlLmxhc3RUeXBlID09IFwib3BlcmF0b3JcIiB8fCBzdGF0ZS5sYXN0VHlwZSA9PSBcIixcIiA/IGxleGljYWwuaW5mby5sZW5ndGggKyAxIDogMCk7XG4gICAgICAgICAgZWxzZSBpZiAodHlwZTIgPT0gXCJmb3JtXCIgJiYgZmlyc3RDaGFyID09IFwie1wiKVxuICAgICAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQ7XG4gICAgICAgICAgZWxzZSBpZiAodHlwZTIgPT0gXCJmb3JtXCIpXG4gICAgICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIGluZGVudFVuaXQ7XG4gICAgICAgICAgZWxzZSBpZiAodHlwZTIgPT0gXCJzdGF0XCIpXG4gICAgICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIChpc0NvbnRpbnVlZFN0YXRlbWVudChzdGF0ZSwgdGV4dEFmdGVyKSA/IHN0YXRlbWVudEluZGVudCB8fCBpbmRlbnRVbml0IDogMCk7XG4gICAgICAgICAgZWxzZSBpZiAobGV4aWNhbC5pbmZvID09IFwic3dpdGNoXCIgJiYgIWNsb3NpbmcgJiYgcGFyc2VyQ29uZmlnLmRvdWJsZUluZGVudFN3aXRjaCAhPSBmYWxzZSlcbiAgICAgICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKC9eKD86Y2FzZXxkZWZhdWx0KVxcYi8udGVzdCh0ZXh0QWZ0ZXIpID8gaW5kZW50VW5pdCA6IDIgKiBpbmRlbnRVbml0KTtcbiAgICAgICAgICBlbHNlIGlmIChsZXhpY2FsLmFsaWduKVxuICAgICAgICAgICAgcmV0dXJuIGxleGljYWwuY29sdW1uICsgKGNsb3NpbmcgPyAwIDogMSk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQgKyAoY2xvc2luZyA/IDAgOiBpbmRlbnRVbml0KTtcbiAgICAgICAgfSxcbiAgICAgICAgZWxlY3RyaWNJbnB1dDogL15cXHMqKD86Y2FzZSAuKj86fGRlZmF1bHQ6fFxce3xcXH0pJC8sXG4gICAgICAgIGJsb2NrQ29tbWVudFN0YXJ0OiBqc29uTW9kZSA/IG51bGwgOiBcIi8qXCIsXG4gICAgICAgIGJsb2NrQ29tbWVudEVuZDoganNvbk1vZGUgPyBudWxsIDogXCIqL1wiLFxuICAgICAgICBibG9ja0NvbW1lbnRDb250aW51ZToganNvbk1vZGUgPyBudWxsIDogXCIgKiBcIixcbiAgICAgICAgbGluZUNvbW1lbnQ6IGpzb25Nb2RlID8gbnVsbCA6IFwiLy9cIixcbiAgICAgICAgZm9sZDogXCJicmFjZVwiLFxuICAgICAgICBjbG9zZUJyYWNrZXRzOiBcIigpW117fScnXFxcIlxcXCJgYFwiLFxuICAgICAgICBoZWxwZXJUeXBlOiBqc29uTW9kZSA/IFwianNvblwiIDogXCJqYXZhc2NyaXB0XCIsXG4gICAgICAgIGpzb25sZE1vZGUsXG4gICAgICAgIGpzb25Nb2RlLFxuICAgICAgICBleHByZXNzaW9uQWxsb3dlZCxcbiAgICAgICAgc2tpcEV4cHJlc3Npb246IGZ1bmN0aW9uKHN0YXRlKSB7XG4gICAgICAgICAgcGFyc2VKUyhzdGF0ZSwgXCJhdG9tXCIsIFwiYXRvbVwiLCBcInRydWVcIiwgbmV3IENvZGVNaXJyb3IuU3RyaW5nU3RyZWFtKFwiXCIsIDIsIG51bGwpKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgICBDb2RlTWlycm9yLnJlZ2lzdGVySGVscGVyKFwid29yZENoYXJzXCIsIFwiamF2YXNjcmlwdFwiLCAvW1xcdyRdLyk7XG4gICAgQ29kZU1pcnJvci5kZWZpbmVNSU1FKFwidGV4dC9qYXZhc2NyaXB0XCIsIFwiamF2YXNjcmlwdFwiKTtcbiAgICBDb2RlTWlycm9yLmRlZmluZU1JTUUoXCJ0ZXh0L2VjbWFzY3JpcHRcIiwgXCJqYXZhc2NyaXB0XCIpO1xuICAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiwgXCJqYXZhc2NyaXB0XCIpO1xuICAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRShcImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdFwiLCBcImphdmFzY3JpcHRcIik7XG4gICAgQ29kZU1pcnJvci5kZWZpbmVNSU1FKFwiYXBwbGljYXRpb24vZWNtYXNjcmlwdFwiLCBcImphdmFzY3JpcHRcIik7XG4gICAgQ29kZU1pcnJvci5kZWZpbmVNSU1FKFwiYXBwbGljYXRpb24vanNvblwiLCB7IG5hbWU6IFwiamF2YXNjcmlwdFwiLCBqc29uOiB0cnVlIH0pO1xuICAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRShcImFwcGxpY2F0aW9uL3gtanNvblwiLCB7IG5hbWU6IFwiamF2YXNjcmlwdFwiLCBqc29uOiB0cnVlIH0pO1xuICAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRShcImFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb25cIiwgeyBuYW1lOiBcImphdmFzY3JpcHRcIiwganNvbjogdHJ1ZSB9KTtcbiAgICBDb2RlTWlycm9yLmRlZmluZU1JTUUoXCJhcHBsaWNhdGlvbi9sZCtqc29uXCIsIHsgbmFtZTogXCJqYXZhc2NyaXB0XCIsIGpzb25sZDogdHJ1ZSB9KTtcbiAgICBDb2RlTWlycm9yLmRlZmluZU1JTUUoXCJ0ZXh0L3R5cGVzY3JpcHRcIiwgeyBuYW1lOiBcImphdmFzY3JpcHRcIiwgdHlwZXNjcmlwdDogdHJ1ZSB9KTtcbiAgICBDb2RlTWlycm9yLmRlZmluZU1JTUUoXCJhcHBsaWNhdGlvbi90eXBlc2NyaXB0XCIsIHsgbmFtZTogXCJqYXZhc2NyaXB0XCIsIHR5cGVzY3JpcHQ6IHRydWUgfSk7XG4gIH0pO1xufSkoKTtcbnZhciBqYXZhc2NyaXB0ID0gamF2YXNjcmlwdCQyLmV4cG9ydHM7XG52YXIgamF2YXNjcmlwdCQxID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5mcmVlemUoLyogQF9fUFVSRV9fICovIF9tZXJnZU5hbWVzcGFjZXMoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiBcIk1vZHVsZVwiLFxuICBcImRlZmF1bHRcIjogamF2YXNjcmlwdFxufSwgW2phdmFzY3JpcHQkMi5leHBvcnRzXSkpO1xuZXhwb3J0IHsgamF2YXNjcmlwdCQxIGFzIGogfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBekNBO0FBMkNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQVNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQWNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdFQTtBQStFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/javascript.es.js\n");
|
2615 |
|
2616 | }),
|
2617 |
|
2618 | "../../graphiql-react/dist/jump-to-line.es.js":
|
2619 |
|
2620 |
|
2621 |
|
2622 |
|
2623 | (function(module, exports, __webpack_require__) {
|
2624 |
|
2625 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! ./dialog.es.js */ \"../../graphiql-react/dist/dialog.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs, _dialogEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.j = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var jumpToLine$2 = {\n exports: {}\n };\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports, _dialogEs.a.exports);\n })(function (CodeMirror) {\n CodeMirror.defineOption(\"search\", {\n bottom: false\n });\n\n function dialog2(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {\n value: deflt,\n selectValueOnOpen: true,\n bottom: cm.options.search.bottom\n });else f(prompt(shortText, deflt));\n }\n\n __name(dialog2, \"dialog\");\n\n function getJumpDialog(cm) {\n return cm.phrase(\"Jump to line:\") + ' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">' + cm.phrase(\"(Use line:column or scroll% syntax)\") + \"</span>\";\n }\n\n __name(getJumpDialog, \"getJumpDialog\");\n\n function interpretLine(cm, string) {\n var num = Number(string);\n if (/^[-+]/.test(string)) return cm.getCursor().line + num;else return num - 1;\n }\n\n __name(interpretLine, \"interpretLine\");\n\n CodeMirror.commands.jumpToLine = function (cm) {\n var cur = cm.getCursor();\n dialog2(cm, getJumpDialog(cm), cm.phrase(\"Jump to line:\"), cur.line + 1 + \":\" + cur.ch, function (posStr) {\n if (!posStr) return;\n var match;\n\n if (match = /^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(posStr)) {\n cm.setCursor(interpretLine(cm, match[1]), Number(match[2]));\n } else if (match = /^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(posStr)) {\n var line = Math.round(cm.lineCount() * Number(match[1]) / 100);\n if (/^[-+]/.test(match[1])) line = cur.line + line + 1;\n cm.setCursor(line - 1, cur.ch);\n } else if (match = /^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(posStr)) {\n cm.setCursor(interpretLine(cm, match[1]), cur.ch);\n }\n });\n };\n\n CodeMirror.keyMap[\"default\"][\"Alt-G\"] = \"jumpToLine\";\n });\n })();\n\n var jumpToLine = jumpToLine$2.exports;\n var jumpToLine$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": jumpToLine\n }, [jumpToLine$2.exports]));\n _exports.j = jumpToLine$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9qdW1wLXRvLWxpbmUuZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9wYWNrYWdlcy9ncmFwaGlxbC1yZWFjdC9kaXN0L2p1bXAtdG8tbGluZS5lcy5qcz9lM2NkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lID0gKHRhcmdldCwgdmFsdWUpID0+IF9fZGVmUHJvcCh0YXJnZXQsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG5pbXBvcnQgeyBhIGFzIGNvZGVtaXJyb3IgfSBmcm9tIFwiLi9jb2RlbWlycm9yLmVzLmpzXCI7XG5pbXBvcnQgeyBhIGFzIGRpYWxvZyB9IGZyb20gXCIuL2RpYWxvZy5lcy5qc1wiO1xuZnVuY3Rpb24gX21lcmdlTmFtZXNwYWNlcyhuLCBtKSB7XG4gIG0uZm9yRWFjaChmdW5jdGlvbihlKSB7XG4gICAgZSAmJiB0eXBlb2YgZSAhPT0gXCJzdHJpbmdcIiAmJiAhQXJyYXkuaXNBcnJheShlKSAmJiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgICAgIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiAhKGsgaW4gbikpIHtcbiAgICAgICAgdmFyIGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIGspO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwgaywgZC5nZXQgPyBkIDoge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBlW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmZyZWV6ZShuKTtcbn1cbl9fbmFtZShfbWVyZ2VOYW1lc3BhY2VzLCBcIl9tZXJnZU5hbWVzcGFjZXNcIik7XG52YXIganVtcFRvTGluZSQyID0geyBleHBvcnRzOiB7fSB9O1xuKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuICAoZnVuY3Rpb24obW9kKSB7XG4gICAgbW9kKGNvZGVtaXJyb3IuZXhwb3J0cywgZGlhbG9nLmV4cG9ydHMpO1xuICB9KShmdW5jdGlvbihDb2RlTWlycm9yKSB7XG4gICAgQ29kZU1pcnJvci5kZWZpbmVPcHRpb24oXCJzZWFyY2hcIiwgeyBib3R0b206IGZhbHNlIH0pO1xuICAgIGZ1bmN0aW9uIGRpYWxvZzIoY20sIHRleHQsIHNob3J0VGV4dCwgZGVmbHQsIGYpIHtcbiAgICAgIGlmIChjbS5vcGVuRGlhbG9nKVxuICAgICAgICBjbS5vcGVuRGlhbG9nKHRleHQsIGYsIHsgdmFsdWU6IGRlZmx0LCBzZWxlY3RWYWx1ZU9uT3BlbjogdHJ1ZSwgYm90dG9tOiBjbS5vcHRpb25zLnNlYXJjaC5ib3R0b20gfSk7XG4gICAgICBlbHNlXG4gICAgICAgIGYocHJvbXB0KHNob3J0VGV4dCwgZGVmbHQpKTtcbiAgICB9XG4gICAgX19uYW1lKGRpYWxvZzIsIFwiZGlhbG9nXCIpO1xuICAgIGZ1bmN0aW9uIGdldEp1bXBEaWFsb2coY20pIHtcbiAgICAgIHJldHVybiBjbS5waHJhc2UoXCJKdW1wIHRvIGxpbmU6XCIpICsgJyA8aW5wdXQgdHlwZT1cInRleHRcIiBzdHlsZT1cIndpZHRoOiAxMGVtXCIgY2xhc3M9XCJDb2RlTWlycm9yLXNlYXJjaC1maWVsZFwiLz4gPHNwYW4gc3R5bGU9XCJjb2xvcjogIzg4OFwiIGNsYXNzPVwiQ29kZU1pcnJvci1zZWFyY2gtaGludFwiPicgKyBjbS5waHJhc2UoXCIoVXNlIGxpbmU6Y29sdW1uIG9yIHNjcm9sbCUgc3ludGF4KVwiKSArIFwiPC9zcGFuPlwiO1xuICAgIH1cbiAgICBfX25hbWUoZ2V0SnVtcERpYWxvZywgXCJnZXRKdW1wRGlhbG9nXCIpO1xuICAgIGZ1bmN0aW9uIGludGVycHJldExpbmUoY20sIHN0cmluZykge1xuICAgICAgdmFyIG51bSA9IE51bWJlcihzdHJpbmcpO1xuICAgICAgaWYgKC9eWy0rXS8udGVzdChzdHJpbmcpKVxuICAgICAgICByZXR1cm4gY20uZ2V0Q3Vyc29yKCkubGluZSArIG51bTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIG51bSAtIDE7XG4gICAgfVxuICAgIF9fbmFtZShpbnRlcnByZXRMaW5lLCBcImludGVycHJldExpbmVcIik7XG4gICAgQ29kZU1pcnJvci5jb21tYW5kcy5qdW1wVG9MaW5lID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIHZhciBjdXIgPSBjbS5nZXRDdXJzb3IoKTtcbiAgICAgIGRpYWxvZzIoY20sIGdldEp1bXBEaWFsb2coY20pLCBjbS5waHJhc2UoXCJKdW1wIHRvIGxpbmU6XCIpLCBjdXIubGluZSArIDEgKyBcIjpcIiArIGN1ci5jaCwgZnVuY3Rpb24ocG9zU3RyKSB7XG4gICAgICAgIGlmICghcG9zU3RyKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdmFyIG1hdGNoO1xuICAgICAgICBpZiAobWF0Y2ggPSAvXlxccyooW1xcK1xcLV0/XFxkKylcXHMqXFw6XFxzKihcXGQrKVxccyokLy5leGVjKHBvc1N0cikpIHtcbiAgICAgICAgICBjbS5zZXRDdXJzb3IoaW50ZXJwcmV0TGluZShjbSwgbWF0Y2hbMV0pLCBOdW1iZXIobWF0Y2hbMl0pKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCA9IC9eXFxzKihbXFwrXFwtXT9cXGQrKFxcLlxcZCspPylcXCVcXHMqLy5leGVjKHBvc1N0cikpIHtcbiAgICAgICAgICB2YXIgbGluZSA9IE1hdGgucm91bmQoY20ubGluZUNvdW50KCkgKiBOdW1iZXIobWF0Y2hbMV0pIC8gMTAwKTtcbiAgICAgICAgICBpZiAoL15bLStdLy50ZXN0KG1hdGNoWzFdKSlcbiAgICAgICAgICAgIGxpbmUgPSBjdXIubGluZSArIGxpbmUgKyAxO1xuICAgICAgICAgIGNtLnNldEN1cnNvcihsaW5lIC0gMSwgY3VyLmNoKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCA9IC9eXFxzKlxcOj9cXHMqKFtcXCtcXC1dP1xcZCspXFxzKi8uZXhlYyhwb3NTdHIpKSB7XG4gICAgICAgICAgY20uc2V0Q3Vyc29yKGludGVycHJldExpbmUoY20sIG1hdGNoWzFdKSwgY3VyLmNoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBDb2RlTWlycm9yLmtleU1hcFtcImRlZmF1bHRcIl1bXCJBbHQtR1wiXSA9IFwianVtcFRvTGluZVwiO1xuICB9KTtcbn0pKCk7XG52YXIganVtcFRvTGluZSA9IGp1bXBUb0xpbmUkMi5leHBvcnRzO1xudmFyIGp1bXBUb0xpbmUkMSA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBfbWVyZ2VOYW1lc3BhY2VzKHtcbiAgX19wcm90b19fOiBudWxsLFxuICBbU3ltYm9sLnRvU3RyaW5nVGFnXTogXCJNb2R1bGVcIixcbiAgXCJkZWZhdWx0XCI6IGp1bXBUb0xpbmVcbn0sIFtqdW1wVG9MaW5lJDIuZXhwb3J0c10pKTtcbmV4cG9ydCB7IGp1bXBUb0xpbmUkMSBhcyBqIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/jump-to-line.es.js\n");
|
2626 |
|
2627 | }),
|
2628 |
|
2629 | "../../graphiql-react/dist/jump.es.js":
|
2630 |
|
2631 |
|
2632 |
|
2633 |
|
2634 | (function(module, exports, __webpack_require__) {
|
2635 |
|
2636 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! ./SchemaReference.es.js */ \"../../graphiql-react/dist/SchemaReference.es.js\"), __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\"), __webpack_require__(/*! ./introspection.es.js */ \"../../graphiql-react/dist/introspection.es.js\"), __webpack_require__(/*! ./forEachState.es.js */ \"../../graphiql-react/dist/forEachState.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_codemirrorEs, _SchemaReferenceEs, _indexEs, _graphql, _react, _reactDom, _introspectionEs, _forEachStateEs) {\n \"use strict\";\n\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n _codemirrorEs.C.defineOption(\"jump\", false, (cm, options, old) => {\n if (old && old !== _codemirrorEs.C.Init) {\n const oldOnMouseOver = cm.state.jump.onMouseOver;\n\n _codemirrorEs.C.off(cm.getWrapperElement(), \"mouseover\", oldOnMouseOver);\n\n const oldOnMouseOut = cm.state.jump.onMouseOut;\n\n _codemirrorEs.C.off(cm.getWrapperElement(), \"mouseout\", oldOnMouseOut);\n\n _codemirrorEs.C.off(document, \"keydown\", cm.state.jump.onKeyDown);\n\n delete cm.state.jump;\n }\n\n if (options) {\n const state = cm.state.jump = {\n options,\n onMouseOver: onMouseOver.bind(null, cm),\n onMouseOut: onMouseOut.bind(null, cm),\n onKeyDown: onKeyDown.bind(null, cm)\n };\n\n _codemirrorEs.C.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n\n _codemirrorEs.C.on(cm.getWrapperElement(), \"mouseout\", state.onMouseOut);\n\n _codemirrorEs.C.on(document, \"keydown\", state.onKeyDown);\n }\n });\n\n function onMouseOver(cm, event) {\n const target = event.target || event.srcElement;\n\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n if ((target === null || target === void 0 ? void 0 : target.nodeName) !== \"SPAN\") {\n return;\n }\n\n const box = target.getBoundingClientRect();\n const cursor = {\n left: (box.left + box.right) / 2,\n top: (box.top + box.bottom) / 2\n };\n cm.state.jump.cursor = cursor;\n\n if (cm.state.jump.isHoldingModifier) {\n enableJumpMode(cm);\n }\n }\n\n __name(onMouseOver, \"onMouseOver\");\n\n function onMouseOut(cm) {\n if (!cm.state.jump.isHoldingModifier && cm.state.jump.cursor) {\n cm.state.jump.cursor = null;\n return;\n }\n\n if (cm.state.jump.isHoldingModifier && cm.state.jump.marker) {\n disableJumpMode(cm);\n }\n }\n\n __name(onMouseOut, \"onMouseOut\");\n\n function onKeyDown(cm, event) {\n if (cm.state.jump.isHoldingModifier || !isJumpModifier(event.key)) {\n return;\n }\n\n cm.state.jump.isHoldingModifier = true;\n\n if (cm.state.jump.cursor) {\n enableJumpMode(cm);\n }\n\n const onKeyUp = /* @__PURE__ */__name(upEvent => {\n if (upEvent.code !== event.code) {\n return;\n }\n\n cm.state.jump.isHoldingModifier = false;\n\n if (cm.state.jump.marker) {\n disableJumpMode(cm);\n }\n\n _codemirrorEs.C.off(document, \"keyup\", onKeyUp);\n\n _codemirrorEs.C.off(document, \"click\", onClick);\n\n cm.off(\"mousedown\", onMouseDown);\n }, \"onKeyUp\");\n\n const onClick = /* @__PURE__ */__name(clickEvent => {\n const destination = cm.state.jump.destination;\n\n if (destination) {\n cm.state.jump.options.onClick(destination, clickEvent);\n }\n }, \"onClick\");\n\n const onMouseDown = /* @__PURE__ */__name((_, downEvent) => {\n if (cm.state.jump.destination) {\n downEvent.codemirrorIgnore = true;\n }\n }, \"onMouseDown\");\n\n _codemirrorEs.C.on(document, \"keyup\", onKeyUp);\n\n _codemirrorEs.C.on(document, \"click\", onClick);\n\n cm.on(\"mousedown\", onMouseDown);\n }\n\n __name(onKeyDown, \"onKeyDown\");\n\n const isMac = typeof navigator !== \"undefined\" && navigator && navigator.appVersion.indexOf(\"Mac\") !== -1;\n\n function isJumpModifier(key) {\n return key === (isMac ? \"Meta\" : \"Control\");\n }\n\n __name(isJumpModifier, \"isJumpModifier\");\n\n function enableJumpMode(cm) {\n if (cm.state.jump.marker) {\n return;\n }\n\n const cursor = cm.state.jump.cursor;\n const pos = cm.coordsChar(cursor);\n const token = cm.getTokenAt(pos, true);\n const options = cm.state.jump.options;\n const getDestination = options.getDestination || cm.getHelper(pos, \"jump\");\n\n if (getDestination) {\n const destination = getDestination(token, options, cm);\n\n if (destination) {\n const marker = cm.markText({\n line: pos.line,\n ch: token.start\n }, {\n line: pos.line,\n ch: token.end\n }, {\n className: \"CodeMirror-jump-token\"\n });\n cm.state.jump.marker = marker;\n cm.state.jump.destination = destination;\n }\n }\n }\n\n __name(enableJumpMode, \"enableJumpMode\");\n\n function disableJumpMode(cm) {\n const marker = cm.state.jump.marker;\n cm.state.jump.marker = null;\n cm.state.jump.destination = null;\n marker.clear();\n }\n\n __name(disableJumpMode, \"disableJumpMode\");\n\n _codemirrorEs.C.registerHelper(\"jump\", \"graphql\", (token, options) => {\n if (!options.schema || !options.onClick || !token.state) {\n return;\n }\n\n const state = token.state;\n const kind = state.kind;\n const step = state.step;\n const typeInfo = (0, _SchemaReferenceEs.g)(options.schema, state);\n\n if (kind === \"Field\" && step === 0 && typeInfo.fieldDef || kind === \"AliasedField\" && step === 2 && typeInfo.fieldDef) {\n return (0, _SchemaReferenceEs.a)(typeInfo);\n } else if (kind === \"Directive\" && step === 1 && typeInfo.directiveDef) {\n return (0, _SchemaReferenceEs.b)(typeInfo);\n } else if (kind === \"Argument\" && step === 0 && typeInfo.argDef) {\n return (0, _SchemaReferenceEs.c)(typeInfo);\n } else if (kind === \"EnumValue\" && typeInfo.enumValue) {\n return (0, _SchemaReferenceEs.d)(typeInfo);\n } else if (kind === \"NamedType\" && typeInfo.type) {\n return (0, _SchemaReferenceEs.e)(typeInfo);\n }\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9qdW1wLmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9qdW1wLmVzLmpzPzdkMTIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IEMgYXMgQ29kZU1pcnJvciB9IGZyb20gXCIuL2NvZGVtaXJyb3IuZXMuanNcIjtcbmltcG9ydCB7IGcgYXMgZ2V0VHlwZUluZm8sIGEgYXMgZ2V0RmllbGRSZWZlcmVuY2UsIGIgYXMgZ2V0RGlyZWN0aXZlUmVmZXJlbmNlLCBjIGFzIGdldEFyZ3VtZW50UmVmZXJlbmNlLCBkIGFzIGdldEVudW1WYWx1ZVJlZmVyZW5jZSwgZSBhcyBnZXRUeXBlUmVmZXJlbmNlIH0gZnJvbSBcIi4vU2NoZW1hUmVmZXJlbmNlLmVzLmpzXCI7XG5pbXBvcnQgXCIuL2luZGV4LmVzLmpzXCI7XG5pbXBvcnQgXCJncmFwaHFsXCI7XG5pbXBvcnQgXCJyZWFjdFwiO1xuaW1wb3J0IFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgXCIuL2ludHJvc3BlY3Rpb24uZXMuanNcIjtcbmltcG9ydCBcIi4vZm9yRWFjaFN0YXRlLmVzLmpzXCI7XG5Db2RlTWlycm9yLmRlZmluZU9wdGlvbihcImp1bXBcIiwgZmFsc2UsIChjbSwgb3B0aW9ucywgb2xkKSA9PiB7XG4gIGlmIChvbGQgJiYgb2xkICE9PSBDb2RlTWlycm9yLkluaXQpIHtcbiAgICBjb25zdCBvbGRPbk1vdXNlT3ZlciA9IGNtLnN0YXRlLmp1bXAub25Nb3VzZU92ZXI7XG4gICAgQ29kZU1pcnJvci5vZmYoY20uZ2V0V3JhcHBlckVsZW1lbnQoKSwgXCJtb3VzZW92ZXJcIiwgb2xkT25Nb3VzZU92ZXIpO1xuICAgIGNvbnN0IG9sZE9uTW91c2VPdXQgPSBjbS5zdGF0ZS5qdW1wLm9uTW91c2VPdXQ7XG4gICAgQ29kZU1pcnJvci5vZmYoY20uZ2V0V3JhcHBlckVsZW1lbnQoKSwgXCJtb3VzZW91dFwiLCBvbGRPbk1vdXNlT3V0KTtcbiAgICBDb2RlTWlycm9yLm9mZihkb2N1bWVudCwgXCJrZXlkb3duXCIsIGNtLnN0YXRlLmp1bXAub25LZXlEb3duKTtcbiAgICBkZWxldGUgY20uc3RhdGUuanVtcDtcbiAgfVxuICBpZiAob3B0aW9ucykge1xuICAgIGNvbnN0IHN0YXRlID0gY20uc3RhdGUuanVtcCA9IHtcbiAgICAgIG9wdGlvbnMsXG4gICAgICBvbk1vdXNlT3Zlcjogb25Nb3VzZU92ZXIuYmluZChudWxsLCBjbSksXG4gICAgICBvbk1vdXNlT3V0OiBvbk1vdXNlT3V0LmJpbmQobnVsbCwgY20pLFxuICAgICAgb25LZXlEb3duOiBvbktleURvd24uYmluZChudWxsLCBjbSlcbiAgICB9O1xuICAgIENvZGVNaXJyb3Iub24oY20uZ2V0V3JhcHBlckVsZW1lbnQoKSwgXCJtb3VzZW92ZXJcIiwgc3RhdGUub25Nb3VzZU92ZXIpO1xuICAgIENvZGVNaXJyb3Iub24oY20uZ2V0V3JhcHBlckVsZW1lbnQoKSwgXCJtb3VzZW91dFwiLCBzdGF0ZS5vbk1vdXNlT3V0KTtcbiAgICBDb2RlTWlycm9yLm9uKGRvY3VtZW50LCBcImtleWRvd25cIiwgc3RhdGUub25LZXlEb3duKTtcbiAgfVxufSk7XG5mdW5jdGlvbiBvbk1vdXNlT3ZlcihjbSwgZXZlbnQpIHtcbiAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LnNyY0VsZW1lbnQ7XG4gIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoKHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5ub2RlTmFtZSkgIT09IFwiU1BBTlwiKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGJveCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgY3Vyc29yID0ge1xuICAgIGxlZnQ6IChib3gubGVmdCArIGJveC5yaWdodCkgLyAyLFxuICAgIHRvcDogKGJveC50b3AgKyBib3guYm90dG9tKSAvIDJcbiAgfTtcbiAgY20uc3RhdGUuanVtcC5jdXJzb3IgPSBjdXJzb3I7XG4gIGlmIChjbS5zdGF0ZS5qdW1wLmlzSG9sZGluZ01vZGlmaWVyKSB7XG4gICAgZW5hYmxlSnVtcE1vZGUoY20pO1xuICB9XG59XG5fX25hbWUob25Nb3VzZU92ZXIsIFwib25Nb3VzZU92ZXJcIik7XG5mdW5jdGlvbiBvbk1vdXNlT3V0KGNtKSB7XG4gIGlmICghY20uc3RhdGUuanVtcC5pc0hvbGRpbmdNb2RpZmllciAmJiBjbS5zdGF0ZS5qdW1wLmN1cnNvcikge1xuICAgIGNtLnN0YXRlLmp1bXAuY3Vyc29yID0gbnVsbDtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGNtLnN0YXRlLmp1bXAuaXNIb2xkaW5nTW9kaWZpZXIgJiYgY20uc3RhdGUuanVtcC5tYXJrZXIpIHtcbiAgICBkaXNhYmxlSnVtcE1vZGUoY20pO1xuICB9XG59XG5fX25hbWUob25Nb3VzZU91dCwgXCJvbk1vdXNlT3V0XCIpO1xuZnVuY3Rpb24gb25LZXlEb3duKGNtLCBldmVudCkge1xuICBpZiAoY20uc3RhdGUuanVtcC5pc0hvbGRpbmdNb2RpZmllciB8fCAhaXNKdW1wTW9kaWZpZXIoZXZlbnQua2V5KSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjbS5zdGF0ZS5qdW1wLmlzSG9sZGluZ01vZGlmaWVyID0gdHJ1ZTtcbiAgaWYgKGNtLnN0YXRlLmp1bXAuY3Vyc29yKSB7XG4gICAgZW5hYmxlSnVtcE1vZGUoY20pO1xuICB9XG4gIGNvbnN0IG9uS2V5VXAgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKCh1cEV2ZW50KSA9PiB7XG4gICAgaWYgKHVwRXZlbnQuY29kZSAhPT0gZXZlbnQuY29kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjbS5zdGF0ZS5qdW1wLmlzSG9sZGluZ01vZGlmaWVyID0gZmFsc2U7XG4gICAgaWYgKGNtLnN0YXRlLmp1bXAubWFya2VyKSB7XG4gICAgICBkaXNhYmxlSnVtcE1vZGUoY20pO1xuICAgIH1cbiAgICBDb2RlTWlycm9yLm9mZihkb2N1bWVudCwgXCJrZXl1cFwiLCBvbktleVVwKTtcbiAgICBDb2RlTWlycm9yLm9mZihkb2N1bWVudCwgXCJjbGlja1wiLCBvbkNsaWNrKTtcbiAgICBjbS5vZmYoXCJtb3VzZWRvd25cIiwgb25Nb3VzZURvd24pO1xuICB9LCBcIm9uS2V5VXBcIik7XG4gIGNvbnN0IG9uQ2xpY2sgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKChjbGlja0V2ZW50KSA9PiB7XG4gICAgY29uc3QgZGVzdGluYXRpb24gPSBjbS5zdGF0ZS5qdW1wLmRlc3RpbmF0aW9uO1xuICAgIGlmIChkZXN0aW5hdGlvbikge1xuICAgICAgY20uc3RhdGUuanVtcC5vcHRpb25zLm9uQ2xpY2soZGVzdGluYXRpb24sIGNsaWNrRXZlbnQpO1xuICAgIH1cbiAgfSwgXCJvbkNsaWNrXCIpO1xuICBjb25zdCBvbk1vdXNlRG93biA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKF8sIGRvd25FdmVudCkgPT4ge1xuICAgIGlmIChjbS5zdGF0ZS5qdW1wLmRlc3RpbmF0aW9uKSB7XG4gICAgICBkb3duRXZlbnQuY29kZW1pcnJvcklnbm9yZSA9IHRydWU7XG4gICAgfVxuICB9LCBcIm9uTW91c2VEb3duXCIpO1xuICBDb2RlTWlycm9yLm9uKGRvY3VtZW50LCBcImtleXVwXCIsIG9uS2V5VXApO1xuICBDb2RlTWlycm9yLm9uKGRvY3VtZW50LCBcImNsaWNrXCIsIG9uQ2xpY2spO1xuICBjbS5vbihcIm1vdXNlZG93blwiLCBvbk1vdXNlRG93bik7XG59XG5fX25hbWUob25LZXlEb3duLCBcIm9uS2V5RG93blwiKTtcbmNvbnN0IGlzTWFjID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gXCJ1bmRlZmluZWRcIiAmJiBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZihcIk1hY1wiKSAhPT0gLTE7XG5mdW5jdGlvbiBpc0p1bXBNb2RpZmllcihrZXkpIHtcbiAgcmV0dXJuIGtleSA9PT0gKGlzTWFjID8gXCJNZXRhXCIgOiBcIkNvbnRyb2xcIik7XG59XG5fX25hbWUoaXNKdW1wTW9kaWZpZXIsIFwiaXNKdW1wTW9kaWZpZXJcIik7XG5mdW5jdGlvbiBlbmFibGVKdW1wTW9kZShjbSkge1xuICBpZiAoY20uc3RhdGUuanVtcC5tYXJrZXIpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY3Vyc29yID0gY20uc3RhdGUuanVtcC5jdXJzb3I7XG4gIGNvbnN0IHBvcyA9IGNtLmNvb3Jkc0NoYXIoY3Vyc29yKTtcbiAgY29uc3QgdG9rZW4gPSBjbS5nZXRUb2tlbkF0KHBvcywgdHJ1ZSk7XG4gIGNvbnN0IG9wdGlvbnMgPSBjbS5zdGF0ZS5qdW1wLm9wdGlvbnM7XG4gIGNvbnN0IGdldERlc3RpbmF0aW9uID0gb3B0aW9ucy5nZXREZXN0aW5hdGlvbiB8fCBjbS5nZXRIZWxwZXIocG9zLCBcImp1bXBcIik7XG4gIGlmIChnZXREZXN0aW5hdGlvbikge1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gZ2V0RGVzdGluYXRpb24odG9rZW4sIG9wdGlvbnMsIGNtKTtcbiAgICBpZiAoZGVzdGluYXRpb24pIHtcbiAgICAgIGNvbnN0IG1hcmtlciA9IGNtLm1hcmtUZXh0KHsgbGluZTogcG9zLmxpbmUsIGNoOiB0b2tlbi5zdGFydCB9LCB7IGxpbmU6IHBvcy5saW5lLCBjaDogdG9rZW4uZW5kIH0sIHsgY2xhc3NOYW1lOiBcIkNvZGVNaXJyb3ItanVtcC10b2tlblwiIH0pO1xuICAgICAgY20uc3RhdGUuanVtcC5tYXJrZXIgPSBtYXJrZXI7XG4gICAgICBjbS5zdGF0ZS5qdW1wLmRlc3RpbmF0aW9uID0gZGVzdGluYXRpb247XG4gICAgfVxuICB9XG59XG5fX25hbWUoZW5hYmxlSnVtcE1vZGUsIFwiZW5hYmxlSnVtcE1vZGVcIik7XG5mdW5jdGlvbiBkaXNhYmxlSnVtcE1vZGUoY20pIHtcbiAgY29uc3QgbWFya2VyID0gY20uc3RhdGUuanVtcC5tYXJrZXI7XG4gIGNtLnN0YXRlLmp1bXAubWFya2VyID0gbnVsbDtcbiAgY20uc3RhdGUuanVtcC5kZXN0aW5hdGlvbiA9IG51bGw7XG4gIG1hcmtlci5jbGVhcigpO1xufVxuX19uYW1lKGRpc2FibGVKdW1wTW9kZSwgXCJkaXNhYmxlSnVtcE1vZGVcIik7XG5Db2RlTWlycm9yLnJlZ2lzdGVySGVscGVyKFwianVtcFwiLCBcImdyYXBocWxcIiwgKHRva2VuLCBvcHRpb25zKSA9PiB7XG4gIGlmICghb3B0aW9ucy5zY2hlbWEgfHwgIW9wdGlvbnMub25DbGljayB8fCAhdG9rZW4uc3RhdGUpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgc3RhdGUgPSB0b2tlbi5zdGF0ZTtcbiAgY29uc3Qga2luZCA9IHN0YXRlLmtpbmQ7XG4gIGNvbnN0IHN0ZXAgPSBzdGF0ZS5zdGVwO1xuICBjb25zdCB0eXBlSW5mbyA9IGdldFR5cGVJbmZvKG9wdGlvbnMuc2NoZW1hLCBzdGF0ZSk7XG4gIGlmIChraW5kID09PSBcIkZpZWxkXCIgJiYgc3RlcCA9PT0gMCAmJiB0eXBlSW5mby5maWVsZERlZiB8fCBraW5kID09PSBcIkFsaWFzZWRGaWVsZFwiICYmIHN0ZXAgPT09IDIgJiYgdHlwZUluZm8uZmllbGREZWYpIHtcbiAgICByZXR1cm4gZ2V0RmllbGRSZWZlcmVuY2UodHlwZUluZm8pO1xuICB9IGVsc2UgaWYgKGtpbmQgPT09IFwiRGlyZWN0aXZlXCIgJiYgc3RlcCA9PT0gMSAmJiB0eXBlSW5mby5kaXJlY3RpdmVEZWYpIHtcbiAgICByZXR1cm4gZ2V0RGlyZWN0aXZlUmVmZXJlbmNlKHR5cGVJbmZvKTtcbiAgfSBlbHNlIGlmIChraW5kID09PSBcIkFyZ3VtZW50XCIgJiYgc3RlcCA9PT0gMCAmJiB0eXBlSW5mby5hcmdEZWYpIHtcbiAgICByZXR1cm4gZ2V0QXJndW1lbnRSZWZlcmVuY2UodHlwZUluZm8pO1xuICB9IGVsc2UgaWYgKGtpbmQgPT09IFwiRW51bVZhbHVlXCIgJiYgdHlwZUluZm8uZW51bVZhbHVlKSB7XG4gICAgcmV0dXJuIGdldEVudW1WYWx1ZVJlZmVyZW5jZSh0eXBlSW5mbyk7XG4gIH0gZWxzZSBpZiAoa2luZCA9PT0gXCJOYW1lZFR5cGVcIiAmJiB0eXBlSW5mby50eXBlKSB7XG4gICAgcmV0dXJuIGdldFR5cGVSZWZlcmVuY2UodHlwZUluZm8pO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/jump.es.js\n");
|
2637 |
|
2638 | }),
|
2639 |
|
2640 | "../../graphiql-react/dist/lint.es.js":
|
2641 |
|
2642 |
|
2643 |
|
2644 |
|
2645 | (function(module, exports, __webpack_require__) {
|
2646 |
|
2647 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\"), __webpack_require__(/*! ./Range.es.js */ \"../../graphiql-react/dist/Range.es.js\"), __webpack_require__(/*! ./onlineParser.es.js */ \"../../graphiql-react/dist/onlineParser.es.js\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_codemirrorEs, _graphql, _indexEs, _RangeEs, _onlineParserEs, _react, _reactDom) {\n \"use strict\";\n\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n const specifiedSDLRules = [_graphql.LoneSchemaDefinitionRule, _graphql.UniqueOperationTypesRule, _graphql.UniqueTypeNamesRule, _graphql.UniqueEnumValueNamesRule, _graphql.UniqueFieldDefinitionNamesRule, _graphql.UniqueDirectiveNamesRule, _graphql.KnownTypeNamesRule, _graphql.KnownDirectivesRule, _graphql.UniqueDirectivesPerLocationRule, _graphql.PossibleTypeExtensionsRule, _graphql.UniqueArgumentNamesRule, _graphql.UniqueInputFieldNamesRule];\n\n function validateWithCustomRules(schema, ast, customRules, isRelayCompatMode, isSchemaDocument) {\n const rules = _graphql.specifiedRules.filter(rule => {\n if (rule === _graphql.NoUnusedFragmentsRule || rule === _graphql.ExecutableDefinitionsRule) {\n return false;\n }\n\n if (isRelayCompatMode && rule === _graphql.KnownFragmentNamesRule) {\n return false;\n }\n\n return true;\n });\n\n if (customRules) {\n Array.prototype.push.apply(rules, customRules);\n }\n\n if (isSchemaDocument) {\n Array.prototype.push.apply(rules, specifiedSDLRules);\n }\n\n const errors = (0, _graphql.validate)(schema, ast, rules);\n return errors.filter(error => {\n if (error.message.indexOf(\"Unknown directive\") !== -1 && error.nodes) {\n const node = error.nodes[0];\n\n if (node && node.kind === _graphql.Kind.DIRECTIVE) {\n const name = node.name.value;\n\n if (name === \"arguments\" || name === \"argumentDefinitions\") {\n return false;\n }\n }\n }\n\n return true;\n });\n }\n\n __name(validateWithCustomRules, \"validateWithCustomRules\");\n\n const SEVERITY$1 = {\n Error: \"Error\",\n Warning: \"Warning\",\n Information: \"Information\",\n Hint: \"Hint\"\n };\n const DIAGNOSTIC_SEVERITY = {\n [SEVERITY$1.Error]: 1,\n [SEVERITY$1.Warning]: 2,\n [SEVERITY$1.Information]: 3,\n [SEVERITY$1.Hint]: 4\n };\n\n const invariant = /* @__PURE__ */__name((condition, message) => {\n if (!condition) {\n throw new Error(message);\n }\n }, \"invariant\");\n\n function getDiagnostics(query) {\n let schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n let customRules = arguments.length > 2 ? arguments[2] : undefined;\n let isRelayCompatMode = arguments.length > 3 ? arguments[3] : undefined;\n let externalFragments = arguments.length > 4 ? arguments[4] : undefined;\n\n var _a, _b;\n\n let ast = null;\n\n if (externalFragments) {\n if (typeof externalFragments === \"string\") {\n query += \"\\n\\n\" + externalFragments;\n } else {\n query += \"\\n\\n\" + externalFragments.reduce((agg, node) => {\n agg += (0, _graphql.print)(node) + \"\\n\\n\";\n return agg;\n }, \"\");\n }\n }\n\n try {\n ast = (0, _graphql.parse)(query);\n } catch (error) {\n if (error instanceof _graphql.GraphQLError) {\n const range = getRange((_b = (_a = error.locations) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : {\n line: 0,\n column: 0\n }, query);\n return [{\n severity: DIAGNOSTIC_SEVERITY.Error,\n message: error.message,\n source: \"GraphQL: Syntax\",\n range\n }];\n }\n\n throw error;\n }\n\n return validateQuery(ast, schema, customRules, isRelayCompatMode);\n }\n\n __name(getDiagnostics, \"getDiagnostics\");\n\n function validateQuery(ast) {\n let schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n let customRules = arguments.length > 2 ? arguments[2] : undefined;\n let isRelayCompatMode = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!schema) {\n return [];\n }\n\n const validationErrorAnnotations = mapCat(validateWithCustomRules(schema, ast, customRules, isRelayCompatMode), error => annotations(error, DIAGNOSTIC_SEVERITY.Error, \"Validation\"));\n const deprecationWarningAnnotations = mapCat((0, _graphql.validate)(schema, ast, [_graphql.NoDeprecatedCustomRule]), error => annotations(error, DIAGNOSTIC_SEVERITY.Warning, \"Deprecation\"));\n return validationErrorAnnotations.concat(deprecationWarningAnnotations);\n }\n\n __name(validateQuery, \"validateQuery\");\n\n function mapCat(array, mapper) {\n return Array.prototype.concat.apply([], array.map(mapper));\n }\n\n __name(mapCat, \"mapCat\");\n\n function annotations(error, severity, type) {\n if (!error.nodes) {\n return [];\n }\n\n const highlightedNodes = [];\n error.nodes.forEach(node => {\n const highlightNode = node.kind !== \"Variable\" && \"name\" in node && node.name !== void 0 ? node.name : \"variable\" in node && node.variable !== void 0 ? node.variable : node;\n\n if (highlightNode) {\n invariant(error.locations, \"GraphQL validation error requires locations.\");\n const loc = error.locations[0];\n const highlightLoc = getLocation(highlightNode);\n const end = loc.column + (highlightLoc.end - highlightLoc.start);\n highlightedNodes.push({\n source: `GraphQL: ${type}`,\n message: error.message,\n severity,\n range: new _RangeEs.R(new _RangeEs.P(loc.line - 1, loc.column - 1), new _RangeEs.P(loc.line - 1, end))\n });\n }\n });\n return highlightedNodes;\n }\n\n __name(annotations, \"annotations\");\n\n function getRange(location, queryText) {\n const parser = (0, _onlineParserEs.o)();\n const state = parser.startState();\n const lines = queryText.split(\"\\n\");\n invariant(lines.length >= location.line, \"Query text must have more lines than where the error happened\");\n let stream = null;\n\n for (let i = 0; i < location.line; i++) {\n stream = new _RangeEs.C(lines[i]);\n\n while (!stream.eol()) {\n const style = parser.token(stream, state);\n\n if (style === \"invalidchar\") {\n break;\n }\n }\n }\n\n invariant(stream, \"Expected Parser stream to be available.\");\n const line = location.line - 1;\n const start = stream.getStartOfToken();\n const end = stream.getCurrentPosition();\n return new _RangeEs.R(new _RangeEs.P(line, start), new _RangeEs.P(line, end));\n }\n\n __name(getRange, \"getRange\");\n\n function getLocation(node) {\n const typeCastedNode = node;\n const location = typeCastedNode.loc;\n invariant(location, \"Expected ASTNode to have a location.\");\n return location;\n }\n\n __name(getLocation, \"getLocation\");\n\n const SEVERITY = [\"error\", \"warning\", \"information\", \"hint\"];\n const TYPE = {\n \"GraphQL: Validation\": \"validation\",\n \"GraphQL: Deprecation\": \"deprecation\",\n \"GraphQL: Syntax\": \"syntax\"\n };\n\n _codemirrorEs.C.registerHelper(\"lint\", \"graphql\", (text, options) => {\n const schema = options.schema;\n const rawResults = getDiagnostics(text, schema, options.validationRules, void 0, options.externalFragments);\n const results = rawResults.map(error => ({\n message: error.message,\n severity: error.severity ? SEVERITY[error.severity - 1] : SEVERITY[0],\n type: error.source ? TYPE[error.source] : void 0,\n from: _codemirrorEs.C.Pos(error.range.start.line, error.range.start.character),\n to: _codemirrorEs.C.Pos(error.range.end.line, error.range.end.character)\n }));\n return results;\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9saW50LmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9saW50LmVzLmpzP2Q0YzYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IEMgYXMgQ29kZU1pcnJvciB9IGZyb20gXCIuL2NvZGVtaXJyb3IuZXMuanNcIjtcbmltcG9ydCB7IEtpbmQsIHNwZWNpZmllZFJ1bGVzLCBOb1VudXNlZEZyYWdtZW50c1J1bGUsIEV4ZWN1dGFibGVEZWZpbml0aW9uc1J1bGUsIEtub3duRnJhZ21lbnROYW1lc1J1bGUsIHZhbGlkYXRlLCBMb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUsIFVuaXF1ZU9wZXJhdGlvblR5cGVzUnVsZSwgVW5pcXVlVHlwZU5hbWVzUnVsZSwgVW5pcXVlRW51bVZhbHVlTmFtZXNSdWxlLCBVbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUsIFVuaXF1ZURpcmVjdGl2ZU5hbWVzUnVsZSwgS25vd25UeXBlTmFtZXNSdWxlLCBLbm93bkRpcmVjdGl2ZXNSdWxlLCBVbmlxdWVEaXJlY3RpdmVzUGVyTG9jYXRpb25SdWxlLCBQb3NzaWJsZVR5cGVFeHRlbnNpb25zUnVsZSwgVW5pcXVlQXJndW1lbnROYW1lc1J1bGUsIFVuaXF1ZUlucHV0RmllbGROYW1lc1J1bGUsIHByaW50LCBwYXJzZSwgR3JhcGhRTEVycm9yLCBOb0RlcHJlY2F0ZWRDdXN0b21SdWxlIH0gZnJvbSBcImdyYXBocWxcIjtcbmltcG9ydCBcIi4vaW5kZXguZXMuanNcIjtcbmltcG9ydCB7IFIgYXMgUmFuZ2UsIFAgYXMgUG9zaXRpb24sIEMgYXMgQ2hhcmFjdGVyU3RyZWFtIH0gZnJvbSBcIi4vUmFuZ2UuZXMuanNcIjtcbmltcG9ydCB7IG8gYXMgb25saW5lUGFyc2VyIH0gZnJvbSBcIi4vb25saW5lUGFyc2VyLmVzLmpzXCI7XG5pbXBvcnQgXCJyZWFjdFwiO1xuaW1wb3J0IFwicmVhY3QtZG9tXCI7XG5jb25zdCBzcGVjaWZpZWRTRExSdWxlcyA9IFtcbiAgTG9uZVNjaGVtYURlZmluaXRpb25SdWxlLFxuICBVbmlxdWVPcGVyYXRpb25UeXBlc1J1bGUsXG4gIFVuaXF1ZVR5cGVOYW1lc1J1bGUsXG4gIFVuaXF1ZUVudW1WYWx1ZU5hbWVzUnVsZSxcbiAgVW5pcXVlRmllbGREZWZpbml0aW9uTmFtZXNSdWxlLFxuICBVbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUsXG4gIEtub3duVHlwZU5hbWVzUnVsZSxcbiAgS25vd25EaXJlY3RpdmVzUnVsZSxcbiAgVW5pcXVlRGlyZWN0aXZlc1BlckxvY2F0aW9uUnVsZSxcbiAgUG9zc2libGVUeXBlRXh0ZW5zaW9uc1J1bGUsXG4gIFVuaXF1ZUFyZ3VtZW50TmFtZXNSdWxlLFxuICBVbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlXG5dO1xuZnVuY3Rpb24gdmFsaWRhdGVXaXRoQ3VzdG9tUnVsZXMoc2NoZW1hLCBhc3QsIGN1c3RvbVJ1bGVzLCBpc1JlbGF5Q29tcGF0TW9kZSwgaXNTY2hlbWFEb2N1bWVudCkge1xuICBjb25zdCBydWxlcyA9IHNwZWNpZmllZFJ1bGVzLmZpbHRlcigocnVsZSkgPT4ge1xuICAgIGlmIChydWxlID09PSBOb1VudXNlZEZyYWdtZW50c1J1bGUgfHwgcnVsZSA9PT0gRXhlY3V0YWJsZURlZmluaXRpb25zUnVsZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXNSZWxheUNvbXBhdE1vZGUgJiYgcnVsZSA9PT0gS25vd25GcmFnbWVudE5hbWVzUnVsZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG4gIGlmIChjdXN0b21SdWxlcykge1xuICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHJ1bGVzLCBjdXN0b21SdWxlcyk7XG4gIH1cbiAgaWYgKGlzU2NoZW1hRG9jdW1lbnQpIHtcbiAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShydWxlcywgc3BlY2lmaWVkU0RMUnVsZXMpO1xuICB9XG4gIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlKHNjaGVtYSwgYXN0LCBydWxlcyk7XG4gIHJldHVybiBlcnJvcnMuZmlsdGVyKChlcnJvcikgPT4ge1xuICAgIGlmIChlcnJvci5tZXNzYWdlLmluZGV4T2YoXCJVbmtub3duIGRpcmVjdGl2ZVwiKSAhPT0gLTEgJiYgZXJyb3Iubm9kZXMpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBlcnJvci5ub2Rlc1swXTtcbiAgICAgIGlmIChub2RlICYmIG5vZGUua2luZCA9PT0gS2luZC5ESVJFQ1RJVkUpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgICAgaWYgKG5hbWUgPT09IFwiYXJndW1lbnRzXCIgfHwgbmFtZSA9PT0gXCJhcmd1bWVudERlZmluaXRpb25zXCIpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuX19uYW1lKHZhbGlkYXRlV2l0aEN1c3RvbVJ1bGVzLCBcInZhbGlkYXRlV2l0aEN1c3RvbVJ1bGVzXCIpO1xuY29uc3QgU0VWRVJJVFkkMSA9IHtcbiAgRXJyb3I6IFwiRXJyb3JcIixcbiAgV2FybmluZzogXCJXYXJuaW5nXCIsXG4gIEluZm9ybWF0aW9uOiBcIkluZm9ybWF0aW9uXCIsXG4gIEhpbnQ6IFwiSGludFwiXG59O1xuY29uc3QgRElBR05PU1RJQ19TRVZFUklUWSA9IHtcbiAgW1NFVkVSSVRZJDEuRXJyb3JdOiAxLFxuICBbU0VWRVJJVFkkMS5XYXJuaW5nXTogMixcbiAgW1NFVkVSSVRZJDEuSW5mb3JtYXRpb25dOiAzLFxuICBbU0VWRVJJVFkkMS5IaW50XTogNFxufTtcbmNvbnN0IGludmFyaWFudCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKGNvbmRpdGlvbiwgbWVzc2FnZSkgPT4ge1xuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxufSwgXCJpbnZhcmlhbnRcIik7XG5mdW5jdGlvbiBnZXREaWFnbm9zdGljcyhxdWVyeSwgc2NoZW1hID0gbnVsbCwgY3VzdG9tUnVsZXMsIGlzUmVsYXlDb21wYXRNb2RlLCBleHRlcm5hbEZyYWdtZW50cykge1xuICB2YXIgX2EsIF9iO1xuICBsZXQgYXN0ID0gbnVsbDtcbiAgaWYgKGV4dGVybmFsRnJhZ21lbnRzKSB7XG4gICAgaWYgKHR5cGVvZiBleHRlcm5hbEZyYWdtZW50cyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcXVlcnkgKz0gXCJcXG5cXG5cIiArIGV4dGVybmFsRnJhZ21lbnRzO1xuICAgIH0gZWxzZSB7XG4gICAgICBxdWVyeSArPSBcIlxcblxcblwiICsgZXh0ZXJuYWxGcmFnbWVudHMucmVkdWNlKChhZ2csIG5vZGUpID0+IHtcbiAgICAgICAgYWdnICs9IHByaW50KG5vZGUpICsgXCJcXG5cXG5cIjtcbiAgICAgICAgcmV0dXJuIGFnZztcbiAgICAgIH0sIFwiXCIpO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIGFzdCA9IHBhcnNlKHF1ZXJ5KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBHcmFwaFFMRXJyb3IpIHtcbiAgICAgIGNvbnN0IHJhbmdlID0gZ2V0UmFuZ2UoKF9iID0gKF9hID0gZXJyb3IubG9jYXRpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHsgbGluZTogMCwgY29sdW1uOiAwIH0sIHF1ZXJ5KTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZXZlcml0eTogRElBR05PU1RJQ19TRVZFUklUWS5FcnJvcixcbiAgICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICAgIHNvdXJjZTogXCJHcmFwaFFMOiBTeW50YXhcIixcbiAgICAgICAgICByYW5nZVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuICByZXR1cm4gdmFsaWRhdGVRdWVyeShhc3QsIHNjaGVtYSwgY3VzdG9tUnVsZXMsIGlzUmVsYXlDb21wYXRNb2RlKTtcbn1cbl9fbmFtZShnZXREaWFnbm9zdGljcywgXCJnZXREaWFnbm9zdGljc1wiKTtcbmZ1bmN0aW9uIHZhbGlkYXRlUXVlcnkoYXN0LCBzY2hlbWEgPSBudWxsLCBjdXN0b21SdWxlcywgaXNSZWxheUNvbXBhdE1vZGUpIHtcbiAgaWYgKCFzY2hlbWEpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgdmFsaWRhdGlvbkVycm9yQW5ub3RhdGlvbnMgPSBtYXBDYXQodmFsaWRhdGVXaXRoQ3VzdG9tUnVsZXMoc2NoZW1hLCBhc3QsIGN1c3RvbVJ1bGVzLCBpc1JlbGF5Q29tcGF0TW9kZSksIChlcnJvcikgPT4gYW5ub3RhdGlvbnMoZXJyb3IsIERJQUdOT1NUSUNfU0VWRVJJVFkuRXJyb3IsIFwiVmFsaWRhdGlvblwiKSk7XG4gIGNvbnN0IGRlcHJlY2F0aW9uV2FybmluZ0Fubm90YXRpb25zID0gbWFwQ2F0KHZhbGlkYXRlKHNjaGVtYSwgYXN0LCBbTm9EZXByZWNhdGVkQ3VzdG9tUnVsZV0pLCAoZXJyb3IpID0+IGFubm90YXRpb25zKGVycm9yLCBESUFHTk9TVElDX1NFVkVSSVRZLldhcm5pbmcsIFwiRGVwcmVjYXRpb25cIikpO1xuICByZXR1cm4gdmFsaWRhdGlvbkVycm9yQW5ub3RhdGlvbnMuY29uY2F0KGRlcHJlY2F0aW9uV2FybmluZ0Fubm90YXRpb25zKTtcbn1cbl9fbmFtZSh2YWxpZGF0ZVF1ZXJ5LCBcInZhbGlkYXRlUXVlcnlcIik7XG5mdW5jdGlvbiBtYXBDYXQoYXJyYXksIG1hcHBlcikge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgYXJyYXkubWFwKG1hcHBlcikpO1xufVxuX19uYW1lKG1hcENhdCwgXCJtYXBDYXRcIik7XG5mdW5jdGlvbiBhbm5vdGF0aW9ucyhlcnJvciwgc2V2ZXJpdHksIHR5cGUpIHtcbiAgaWYgKCFlcnJvci5ub2Rlcykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBoaWdobGlnaHRlZE5vZGVzID0gW107XG4gIGVycm9yLm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICBjb25zdCBoaWdobGlnaHROb2RlID0gbm9kZS5raW5kICE9PSBcIlZhcmlhYmxlXCIgJiYgXCJuYW1lXCIgaW4gbm9kZSAmJiBub2RlLm5hbWUgIT09IHZvaWQgMCA/IG5vZGUubmFtZSA6IFwidmFyaWFibGVcIiBpbiBub2RlICYmIG5vZGUudmFyaWFibGUgIT09IHZvaWQgMCA/IG5vZGUudmFyaWFibGUgOiBub2RlO1xuICAgIGlmIChoaWdobGlnaHROb2RlKSB7XG4gICAgICBpbnZhcmlhbnQoZXJyb3IubG9jYXRpb25zLCBcIkdyYXBoUUwgdmFsaWRhdGlvbiBlcnJvciByZXF1aXJlcyBsb2NhdGlvbnMuXCIpO1xuICAgICAgY29uc3QgbG9jID0gZXJyb3IubG9jYXRpb25zWzBdO1xuICAgICAgY29uc3QgaGlnaGxpZ2h0TG9jID0gZ2V0TG9jYXRpb24oaGlnaGxpZ2h0Tm9kZSk7XG4gICAgICBjb25zdCBlbmQgPSBsb2MuY29sdW1uICsgKGhpZ2hsaWdodExvYy5lbmQgLSBoaWdobGlnaHRMb2Muc3RhcnQpO1xuICAgICAgaGlnaGxpZ2h0ZWROb2Rlcy5wdXNoKHtcbiAgICAgICAgc291cmNlOiBgR3JhcGhRTDogJHt0eXBlfWAsXG4gICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgIHNldmVyaXR5LFxuICAgICAgICByYW5nZTogbmV3IFJhbmdlKG5ldyBQb3NpdGlvbihsb2MubGluZSAtIDEsIGxvYy5jb2x1bW4gLSAxKSwgbmV3IFBvc2l0aW9uKGxvYy5saW5lIC0gMSwgZW5kKSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBoaWdobGlnaHRlZE5vZGVzO1xufVxuX19uYW1lKGFubm90YXRpb25zLCBcImFubm90YXRpb25zXCIpO1xuZnVuY3Rpb24gZ2V0UmFuZ2UobG9jYXRpb24sIHF1ZXJ5VGV4dCkge1xuICBjb25zdCBwYXJzZXIgPSBvbmxpbmVQYXJzZXIoKTtcbiAgY29uc3Qgc3RhdGUgPSBwYXJzZXIuc3RhcnRTdGF0ZSgpO1xuICBjb25zdCBsaW5lcyA9IHF1ZXJ5VGV4dC5zcGxpdChcIlxcblwiKTtcbiAgaW52YXJpYW50KGxpbmVzLmxlbmd0aCA+PSBsb2NhdGlvbi5saW5lLCBcIlF1ZXJ5IHRleHQgbXVzdCBoYXZlIG1vcmUgbGluZXMgdGhhbiB3aGVyZSB0aGUgZXJyb3IgaGFwcGVuZWRcIik7XG4gIGxldCBzdHJlYW0gPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxvY2F0aW9uLmxpbmU7IGkrKykge1xuICAgIHN0cmVhbSA9IG5ldyBDaGFyYWN0ZXJTdHJlYW0obGluZXNbaV0pO1xuICAgIHdoaWxlICghc3RyZWFtLmVvbCgpKSB7XG4gICAgICBjb25zdCBzdHlsZSA9IHBhcnNlci50b2tlbihzdHJlYW0sIHN0YXRlKTtcbiAgICAgIGlmIChzdHlsZSA9PT0gXCJpbnZhbGlkY2hhclwiKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpbnZhcmlhbnQoc3RyZWFtLCBcIkV4cGVjdGVkIFBhcnNlciBzdHJlYW0gdG8gYmUgYXZhaWxhYmxlLlwiKTtcbiAgY29uc3QgbGluZSA9IGxvY2F0aW9uLmxpbmUgLSAxO1xuICBjb25zdCBzdGFydCA9IHN0cmVhbS5nZXRTdGFydE9mVG9rZW4oKTtcbiAgY29uc3QgZW5kID0gc3RyZWFtLmdldEN1cnJlbnRQb3NpdGlvbigpO1xuICByZXR1cm4gbmV3IFJhbmdlKG5ldyBQb3NpdGlvbihsaW5lLCBzdGFydCksIG5ldyBQb3NpdGlvbihsaW5lLCBlbmQpKTtcbn1cbl9fbmFtZShnZXRSYW5nZSwgXCJnZXRSYW5nZVwiKTtcbmZ1bmN0aW9uIGdldExvY2F0aW9uKG5vZGUpIHtcbiAgY29uc3QgdHlwZUNhc3RlZE5vZGUgPSBub2RlO1xuICBjb25zdCBsb2NhdGlvbiA9IHR5cGVDYXN0ZWROb2RlLmxvYztcbiAgaW52YXJpYW50KGxvY2F0aW9uLCBcIkV4cGVjdGVkIEFTVE5vZGUgdG8gaGF2ZSBhIGxvY2F0aW9uLlwiKTtcbiAgcmV0dXJuIGxvY2F0aW9uO1xufVxuX19uYW1lKGdldExvY2F0aW9uLCBcImdldExvY2F0aW9uXCIpO1xuY29uc3QgU0VWRVJJVFkgPSBbXCJlcnJvclwiLCBcIndhcm5pbmdcIiwgXCJpbmZvcm1hdGlvblwiLCBcImhpbnRcIl07XG5jb25zdCBUWVBFID0ge1xuICBcIkdyYXBoUUw6IFZhbGlkYXRpb25cIjogXCJ2YWxpZGF0aW9uXCIsXG4gIFwiR3JhcGhRTDogRGVwcmVjYXRpb25cIjogXCJkZXByZWNhdGlvblwiLFxuICBcIkdyYXBoUUw6IFN5bnRheFwiOiBcInN5bnRheFwiXG59O1xuQ29kZU1pcnJvci5yZWdpc3RlckhlbHBlcihcImxpbnRcIiwgXCJncmFwaHFsXCIsICh0ZXh0LCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IG9wdGlvbnMuc2NoZW1hO1xuICBjb25zdCByYXdSZXN1bHRzID0gZ2V0RGlhZ25vc3RpY3ModGV4dCwgc2NoZW1hLCBvcHRpb25zLnZhbGlkYXRpb25SdWxlcywgdm9pZCAwLCBvcHRpb25zLmV4dGVybmFsRnJhZ21lbnRzKTtcbiAgY29uc3QgcmVzdWx0cyA9IHJhd1Jlc3VsdHMubWFwKChlcnJvcikgPT4gKHtcbiAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLFxuICAgIHNldmVyaXR5OiBlcnJvci5zZXZlcml0eSA/IFNFVkVSSVRZW2Vycm9yLnNldmVyaXR5IC0gMV0gOiBTRVZFUklUWVswXSxcbiAgICB0eXBlOiBlcnJvci5zb3VyY2UgPyBUWVBFW2Vycm9yLnNvdXJjZV0gOiB2b2lkIDAsXG4gICAgZnJvbTogQ29kZU1pcnJvci5Qb3MoZXJyb3IucmFuZ2Uuc3RhcnQubGluZSwgZXJyb3IucmFuZ2Uuc3RhcnQuY2hhcmFjdGVyKSxcbiAgICB0bzogQ29kZU1pcnJvci5Qb3MoZXJyb3IucmFuZ2UuZW5kLmxpbmUsIGVycm9yLnJhbmdlLmVuZC5jaGFyYWN0ZXIpXG4gIH0pKTtcbiAgcmV0dXJuIHJlc3VsdHM7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBT0E7QUFDQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFPQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/lint.es.js\n");
|
2648 |
|
2649 | }),
|
2650 |
|
2651 | "../../graphiql-react/dist/lint.es2.js":
|
2652 |
|
2653 |
|
2654 |
|
2655 |
|
2656 | (function(module, exports, __webpack_require__) {
|
2657 |
|
2658 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_codemirrorEs, _graphql, _indexEs, _react, _reactDom) {\n \"use strict\";\n\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function jsonParse(str) {\n string = str;\n strLen = str.length;\n start = end = lastEnd = -1;\n ch();\n lex();\n const ast = parseObj();\n expect(\"EOF\");\n return ast;\n }\n\n __name(jsonParse, \"jsonParse\");\n\n let string;\n let strLen;\n let start;\n let end;\n let lastEnd;\n let code;\n let kind;\n\n function parseObj() {\n const nodeStart = start;\n const members = [];\n expect(\"{\");\n\n if (!skip(\"}\")) {\n do {\n members.push(parseMember());\n } while (skip(\",\"));\n\n expect(\"}\");\n }\n\n return {\n kind: \"Object\",\n start: nodeStart,\n end: lastEnd,\n members\n };\n }\n\n __name(parseObj, \"parseObj\");\n\n function parseMember() {\n const nodeStart = start;\n const key = kind === \"String\" ? curToken() : null;\n expect(\"String\");\n expect(\":\");\n const value = parseVal();\n return {\n kind: \"Member\",\n start: nodeStart,\n end: lastEnd,\n key,\n value\n };\n }\n\n __name(parseMember, \"parseMember\");\n\n function parseArr() {\n const nodeStart = start;\n const values = [];\n expect(\"[\");\n\n if (!skip(\"]\")) {\n do {\n values.push(parseVal());\n } while (skip(\",\"));\n\n expect(\"]\");\n }\n\n return {\n kind: \"Array\",\n start: nodeStart,\n end: lastEnd,\n values\n };\n }\n\n __name(parseArr, \"parseArr\");\n\n function parseVal() {\n switch (kind) {\n case \"[\":\n return parseArr();\n\n case \"{\":\n return parseObj();\n\n case \"String\":\n case \"Number\":\n case \"Boolean\":\n case \"Null\":\n const token = curToken();\n lex();\n return token;\n }\n\n expect(\"Value\");\n }\n\n __name(parseVal, \"parseVal\");\n\n function curToken() {\n return {\n kind,\n start,\n end,\n value: JSON.parse(string.slice(start, end))\n };\n }\n\n __name(curToken, \"curToken\");\n\n function expect(str) {\n if (kind === str) {\n lex();\n return;\n }\n\n let found;\n\n if (kind === \"EOF\") {\n found = \"[end of file]\";\n } else if (end - start > 1) {\n found = \"`\" + string.slice(start, end) + \"`\";\n } else {\n const match = string.slice(start).match(/^.+?\\b/);\n found = \"`\" + (match ? match[0] : string[start]) + \"`\";\n }\n\n throw syntaxError(`Expected ${str} but found ${found}.`);\n }\n\n __name(expect, \"expect\");\n\n class JSONSyntaxError extends Error {\n constructor(message, position) {\n super(message);\n this.position = position;\n }\n\n }\n\n __name(JSONSyntaxError, \"JSONSyntaxError\");\n\n function syntaxError(message) {\n return new JSONSyntaxError(message, {\n start,\n end\n });\n }\n\n __name(syntaxError, \"syntaxError\");\n\n function skip(k) {\n if (kind === k) {\n lex();\n return true;\n }\n }\n\n __name(skip, \"skip\");\n\n function ch() {\n if (end < strLen) {\n end++;\n code = end === strLen ? 0 : string.charCodeAt(end);\n }\n\n return code;\n }\n\n __name(ch, \"ch\");\n\n function lex() {\n lastEnd = end;\n\n while (code === 9 || code === 10 || code === 13 || code === 32) {\n ch();\n }\n\n if (code === 0) {\n kind = \"EOF\";\n return;\n }\n\n start = end;\n\n switch (code) {\n case 34:\n kind = \"String\";\n return readString();\n\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n kind = \"Number\";\n return readNumber();\n\n case 102:\n if (string.slice(start, start + 5) !== \"false\") {\n break;\n }\n\n end += 4;\n ch();\n kind = \"Boolean\";\n return;\n\n case 110:\n if (string.slice(start, start + 4) !== \"null\") {\n break;\n }\n\n end += 3;\n ch();\n kind = \"Null\";\n return;\n\n case 116:\n if (string.slice(start, start + 4) !== \"true\") {\n break;\n }\n\n end += 3;\n ch();\n kind = \"Boolean\";\n return;\n }\n\n kind = string[start];\n ch();\n }\n\n __name(lex, \"lex\");\n\n function readString() {\n ch();\n\n while (code !== 34 && code > 31) {\n if (code === 92) {\n code = ch();\n\n switch (code) {\n case 34:\n case 47:\n case 92:\n case 98:\n case 102:\n case 110:\n case 114:\n case 116:\n ch();\n break;\n\n case 117:\n ch();\n readHex();\n readHex();\n readHex();\n readHex();\n break;\n\n default:\n throw syntaxError(\"Bad character escape sequence.\");\n }\n } else if (end === strLen) {\n throw syntaxError(\"Unterminated string.\");\n } else {\n ch();\n }\n }\n\n if (code === 34) {\n ch();\n return;\n }\n\n throw syntaxError(\"Unterminated string.\");\n }\n\n __name(readString, \"readString\");\n\n function readHex() {\n if (code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102) {\n return ch();\n }\n\n throw syntaxError(\"Expected hexadecimal digit.\");\n }\n\n __name(readHex, \"readHex\");\n\n function readNumber() {\n if (code === 45) {\n ch();\n }\n\n if (code === 48) {\n ch();\n } else {\n readDigits();\n }\n\n if (code === 46) {\n ch();\n readDigits();\n }\n\n if (code === 69 || code === 101) {\n code = ch();\n\n if (code === 43 || code === 45) {\n ch();\n }\n\n readDigits();\n }\n }\n\n __name(readNumber, \"readNumber\");\n\n function readDigits() {\n if (code < 48 || code > 57) {\n throw syntaxError(\"Expected decimal digit.\");\n }\n\n do {\n ch();\n } while (code >= 48 && code <= 57);\n }\n\n __name(readDigits, \"readDigits\");\n\n _codemirrorEs.C.registerHelper(\"lint\", \"graphql-variables\", (text, options, editor) => {\n if (!text) {\n return [];\n }\n\n let ast;\n\n try {\n ast = jsonParse(text);\n } catch (error) {\n if (error instanceof JSONSyntaxError) {\n return [lintError(editor, error.position, error.message)];\n }\n\n throw error;\n }\n\n const variableToType = options.variableToType;\n\n if (!variableToType) {\n return [];\n }\n\n return validateVariables(editor, variableToType, ast);\n });\n\n function validateVariables(editor, variableToType, variablesAST) {\n const errors = [];\n variablesAST.members.forEach(member => {\n var _a;\n\n if (member) {\n const variableName = (_a = member.key) === null || _a === void 0 ? void 0 : _a.value;\n const type = variableToType[variableName];\n\n if (!type) {\n errors.push(lintError(editor, member.key, `Variable \"$${variableName}\" does not appear in any GraphQL query.`));\n } else {\n validateValue(type, member.value).forEach(_ref => {\n let [node, message] = _ref;\n errors.push(lintError(editor, node, message));\n });\n }\n }\n });\n return errors;\n }\n\n __name(validateVariables, \"validateVariables\");\n\n function validateValue(type, valueAST) {\n if (!type || !valueAST) {\n return [];\n }\n\n if (type instanceof _graphql.GraphQLNonNull) {\n if (valueAST.kind === \"Null\") {\n return [[valueAST, `Type \"${type}\" is non-nullable and cannot be null.`]];\n }\n\n return validateValue(type.ofType, valueAST);\n }\n\n if (valueAST.kind === \"Null\") {\n return [];\n }\n\n if (type instanceof _graphql.GraphQLList) {\n const itemType = type.ofType;\n\n if (valueAST.kind === \"Array\") {\n const values = valueAST.values || [];\n return mapCat(values, item => validateValue(itemType, item));\n }\n\n return validateValue(itemType, valueAST);\n }\n\n if (type instanceof _graphql.GraphQLInputObjectType) {\n if (valueAST.kind !== \"Object\") {\n return [[valueAST, `Type \"${type}\" must be an Object.`]];\n }\n\n const providedFields = /* @__PURE__ */Object.create(null);\n const fieldErrors = mapCat(valueAST.members, member => {\n var _a;\n\n const fieldName = (_a = member === null || member === void 0 ? void 0 : member.key) === null || _a === void 0 ? void 0 : _a.value;\n providedFields[fieldName] = true;\n const inputField = type.getFields()[fieldName];\n\n if (!inputField) {\n return [[member.key, `Type \"${type}\" does not have a field \"${fieldName}\".`]];\n }\n\n const fieldType = inputField ? inputField.type : void 0;\n return validateValue(fieldType, member.value);\n });\n Object.keys(type.getFields()).forEach(fieldName => {\n if (!providedFields[fieldName]) {\n const fieldType = type.getFields()[fieldName].type;\n\n if (fieldType instanceof _graphql.GraphQLNonNull) {\n fieldErrors.push([valueAST, `Object of type \"${type}\" is missing required field \"${fieldName}\".`]);\n }\n }\n });\n return fieldErrors;\n }\n\n if (type.name === \"Boolean\" && valueAST.kind !== \"Boolean\" || type.name === \"String\" && valueAST.kind !== \"String\" || type.name === \"ID\" && valueAST.kind !== \"Number\" && valueAST.kind !== \"String\" || type.name === \"Float\" && valueAST.kind !== \"Number\" || type.name === \"Int\" && (valueAST.kind !== \"Number\" || (valueAST.value | 0) !== valueAST.value)) {\n return [[valueAST, `Expected value of type \"${type}\".`]];\n }\n\n if (type instanceof _graphql.GraphQLEnumType || type instanceof _graphql.GraphQLScalarType) {\n if (valueAST.kind !== \"String\" && valueAST.kind !== \"Number\" && valueAST.kind !== \"Boolean\" && valueAST.kind !== \"Null\" || isNullish(type.parseValue(valueAST.value))) {\n return [[valueAST, `Expected value of type \"${type}\".`]];\n }\n }\n\n return [];\n }\n\n __name(validateValue, \"validateValue\");\n\n function lintError(editor, node, message) {\n return {\n message,\n severity: \"error\",\n type: \"validation\",\n from: editor.posFromIndex(node.start),\n to: editor.posFromIndex(node.end)\n };\n }\n\n __name(lintError, \"lintError\");\n\n function isNullish(value) {\n return value === null || value === void 0 || value !== value;\n }\n\n __name(isNullish, \"isNullish\");\n\n function mapCat(array, mapper) {\n return Array.prototype.concat.apply([], array.map(mapper));\n }\n\n __name(mapCat, \"mapCat\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9saW50LmVzMi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL3BhY2thZ2VzL2dyYXBoaXFsLXJlYWN0L2Rpc3QvbGludC5lczIuanM/YmI3NCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSA9ICh0YXJnZXQsIHZhbHVlKSA9PiBfX2RlZlByb3AodGFyZ2V0LCBcIm5hbWVcIiwgeyB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuaW1wb3J0IHsgQyBhcyBDb2RlTWlycm9yIH0gZnJvbSBcIi4vY29kZW1pcnJvci5lcy5qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTE5vbk51bGwsIEdyYXBoUUxMaXN0LCBHcmFwaFFMSW5wdXRPYmplY3RUeXBlLCBHcmFwaFFMRW51bVR5cGUsIEdyYXBoUUxTY2FsYXJUeXBlIH0gZnJvbSBcImdyYXBocWxcIjtcbmltcG9ydCBcIi4vaW5kZXguZXMuanNcIjtcbmltcG9ydCBcInJlYWN0XCI7XG5pbXBvcnQgXCJyZWFjdC1kb21cIjtcbmZ1bmN0aW9uIGpzb25QYXJzZShzdHIpIHtcbiAgc3RyaW5nID0gc3RyO1xuICBzdHJMZW4gPSBzdHIubGVuZ3RoO1xuICBzdGFydCA9IGVuZCA9IGxhc3RFbmQgPSAtMTtcbiAgY2goKTtcbiAgbGV4KCk7XG4gIGNvbnN0IGFzdCA9IHBhcnNlT2JqKCk7XG4gIGV4cGVjdChcIkVPRlwiKTtcbiAgcmV0dXJuIGFzdDtcbn1cbl9fbmFtZShqc29uUGFyc2UsIFwianNvblBhcnNlXCIpO1xubGV0IHN0cmluZztcbmxldCBzdHJMZW47XG5sZXQgc3RhcnQ7XG5sZXQgZW5kO1xubGV0IGxhc3RFbmQ7XG5sZXQgY29kZTtcbmxldCBraW5kO1xuZnVuY3Rpb24gcGFyc2VPYmooKSB7XG4gIGNvbnN0IG5vZGVTdGFydCA9IHN0YXJ0O1xuICBjb25zdCBtZW1iZXJzID0gW107XG4gIGV4cGVjdChcIntcIik7XG4gIGlmICghc2tpcChcIn1cIikpIHtcbiAgICBkbyB7XG4gICAgICBtZW1iZXJzLnB1c2gocGFyc2VNZW1iZXIoKSk7XG4gICAgfSB3aGlsZSAoc2tpcChcIixcIikpO1xuICAgIGV4cGVjdChcIn1cIik7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBraW5kOiBcIk9iamVjdFwiLFxuICAgIHN0YXJ0OiBub2RlU3RhcnQsXG4gICAgZW5kOiBsYXN0RW5kLFxuICAgIG1lbWJlcnNcbiAgfTtcbn1cbl9fbmFtZShwYXJzZU9iaiwgXCJwYXJzZU9ialwiKTtcbmZ1bmN0aW9uIHBhcnNlTWVtYmVyKCkge1xuICBjb25zdCBub2RlU3RhcnQgPSBzdGFydDtcbiAgY29uc3Qga2V5ID0ga2luZCA9PT0gXCJTdHJpbmdcIiA/IGN1clRva2VuKCkgOiBudWxsO1xuICBleHBlY3QoXCJTdHJpbmdcIik7XG4gIGV4cGVjdChcIjpcIik7XG4gIGNvbnN0IHZhbHVlID0gcGFyc2VWYWwoKTtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBcIk1lbWJlclwiLFxuICAgIHN0YXJ0OiBub2RlU3RhcnQsXG4gICAgZW5kOiBsYXN0RW5kLFxuICAgIGtleSxcbiAgICB2YWx1ZVxuICB9O1xufVxuX19uYW1lKHBhcnNlTWVtYmVyLCBcInBhcnNlTWVtYmVyXCIpO1xuZnVuY3Rpb24gcGFyc2VBcnIoKSB7XG4gIGNvbnN0IG5vZGVTdGFydCA9IHN0YXJ0O1xuICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgZXhwZWN0KFwiW1wiKTtcbiAgaWYgKCFza2lwKFwiXVwiKSkge1xuICAgIGRvIHtcbiAgICAgIHZhbHVlcy5wdXNoKHBhcnNlVmFsKCkpO1xuICAgIH0gd2hpbGUgKHNraXAoXCIsXCIpKTtcbiAgICBleHBlY3QoXCJdXCIpO1xuICB9XG4gIHJldHVybiB7XG4gICAga2luZDogXCJBcnJheVwiLFxuICAgIHN0YXJ0OiBub2RlU3RhcnQsXG4gICAgZW5kOiBsYXN0RW5kLFxuICAgIHZhbHVlc1xuICB9O1xufVxuX19uYW1lKHBhcnNlQXJyLCBcInBhcnNlQXJyXCIpO1xuZnVuY3Rpb24gcGFyc2VWYWwoKSB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgXCJbXCI6XG4gICAgICByZXR1cm4gcGFyc2VBcnIoKTtcbiAgICBjYXNlIFwie1wiOlxuICAgICAgcmV0dXJuIHBhcnNlT2JqKCk7XG4gICAgY2FzZSBcIlN0cmluZ1wiOlxuICAgIGNhc2UgXCJOdW1iZXJcIjpcbiAgICBjYXNlIFwiQm9vbGVhblwiOlxuICAgIGNhc2UgXCJOdWxsXCI6XG4gICAgICBjb25zdCB0b2tlbiA9IGN1clRva2VuKCk7XG4gICAgICBsZXgoKTtcbiAgICAgIHJldHVybiB0b2tlbjtcbiAgfVxuICBleHBlY3QoXCJWYWx1ZVwiKTtcbn1cbl9fbmFtZShwYXJzZVZhbCwgXCJwYXJzZVZhbFwiKTtcbmZ1bmN0aW9uIGN1clRva2VuKCkge1xuICByZXR1cm4geyBraW5kLCBzdGFydCwgZW5kLCB2YWx1ZTogSlNPTi5wYXJzZShzdHJpbmcuc2xpY2Uoc3RhcnQsIGVuZCkpIH07XG59XG5fX25hbWUoY3VyVG9rZW4sIFwiY3VyVG9rZW5cIik7XG5mdW5jdGlvbiBleHBlY3Qoc3RyKSB7XG4gIGlmIChraW5kID09PSBzdHIpIHtcbiAgICBsZXgoKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IGZvdW5kO1xuICBpZiAoa2luZCA9PT0gXCJFT0ZcIikge1xuICAgIGZvdW5kID0gXCJbZW5kIG9mIGZpbGVdXCI7XG4gIH0gZWxzZSBpZiAoZW5kIC0gc3RhcnQgPiAxKSB7XG4gICAgZm91bmQgPSBcImBcIiArIHN0cmluZy5zbGljZShzdGFydCwgZW5kKSArIFwiYFwiO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IG1hdGNoID0gc3RyaW5nLnNsaWNlKHN0YXJ0KS5tYXRjaCgvXi4rP1xcYi8pO1xuICAgIGZvdW5kID0gXCJgXCIgKyAobWF0Y2ggPyBtYXRjaFswXSA6IHN0cmluZ1tzdGFydF0pICsgXCJgXCI7XG4gIH1cbiAgdGhyb3cgc3ludGF4RXJyb3IoYEV4cGVjdGVkICR7c3RyfSBidXQgZm91bmQgJHtmb3VuZH0uYCk7XG59XG5fX25hbWUoZXhwZWN0LCBcImV4cGVjdFwiKTtcbmNsYXNzIEpTT05TeW50YXhFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSwgcG9zaXRpb24pIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLnBvc2l0aW9uID0gcG9zaXRpb247XG4gIH1cbn1cbl9fbmFtZShKU09OU3ludGF4RXJyb3IsIFwiSlNPTlN5bnRheEVycm9yXCIpO1xuZnVuY3Rpb24gc3ludGF4RXJyb3IobWVzc2FnZSkge1xuICByZXR1cm4gbmV3IEpTT05TeW50YXhFcnJvcihtZXNzYWdlLCB7IHN0YXJ0LCBlbmQgfSk7XG59XG5fX25hbWUoc3ludGF4RXJyb3IsIFwic3ludGF4RXJyb3JcIik7XG5mdW5jdGlvbiBza2lwKGspIHtcbiAgaWYgKGtpbmQgPT09IGspIHtcbiAgICBsZXgoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuX19uYW1lKHNraXAsIFwic2tpcFwiKTtcbmZ1bmN0aW9uIGNoKCkge1xuICBpZiAoZW5kIDwgc3RyTGVuKSB7XG4gICAgZW5kKys7XG4gICAgY29kZSA9IGVuZCA9PT0gc3RyTGVuID8gMCA6IHN0cmluZy5jaGFyQ29kZUF0KGVuZCk7XG4gIH1cbiAgcmV0dXJuIGNvZGU7XG59XG5fX25hbWUoY2gsIFwiY2hcIik7XG5mdW5jdGlvbiBsZXgoKSB7XG4gIGxhc3RFbmQgPSBlbmQ7XG4gIHdoaWxlIChjb2RlID09PSA5IHx8IGNvZGUgPT09IDEwIHx8IGNvZGUgPT09IDEzIHx8IGNvZGUgPT09IDMyKSB7XG4gICAgY2goKTtcbiAgfVxuICBpZiAoY29kZSA9PT0gMCkge1xuICAgIGtpbmQgPSBcIkVPRlwiO1xuICAgIHJldHVybjtcbiAgfVxuICBzdGFydCA9IGVuZDtcbiAgc3dpdGNoIChjb2RlKSB7XG4gICAgY2FzZSAzNDpcbiAgICAgIGtpbmQgPSBcIlN0cmluZ1wiO1xuICAgICAgcmV0dXJuIHJlYWRTdHJpbmcoKTtcbiAgICBjYXNlIDQ1OlxuICAgIGNhc2UgNDg6XG4gICAgY2FzZSA0OTpcbiAgICBjYXNlIDUwOlxuICAgIGNhc2UgNTE6XG4gICAgY2FzZSA1MjpcbiAgICBjYXNlIDUzOlxuICAgIGNhc2UgNTQ6XG4gICAgY2FzZSA1NTpcbiAgICBjYXNlIDU2OlxuICAgIGNhc2UgNTc6XG4gICAgICBraW5kID0gXCJOdW1iZXJcIjtcbiAgICAgIHJldHVybiByZWFkTnVtYmVyKCk7XG4gICAgY2FzZSAxMDI6XG4gICAgICBpZiAoc3RyaW5nLnNsaWNlKHN0YXJ0LCBzdGFydCArIDUpICE9PSBcImZhbHNlXCIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBlbmQgKz0gNDtcbiAgICAgIGNoKCk7XG4gICAgICBraW5kID0gXCJCb29sZWFuXCI7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSAxMTA6XG4gICAgICBpZiAoc3RyaW5nLnNsaWNlKHN0YXJ0LCBzdGFydCArIDQpICE9PSBcIm51bGxcIikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGVuZCArPSAzO1xuICAgICAgY2goKTtcbiAgICAgIGtpbmQgPSBcIk51bGxcIjtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIDExNjpcbiAgICAgIGlmIChzdHJpbmcuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgNCkgIT09IFwidHJ1ZVwiKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZW5kICs9IDM7XG4gICAgICBjaCgpO1xuICAgICAga2luZCA9IFwiQm9vbGVhblwiO1xuICAgICAgcmV0dXJuO1xuICB9XG4gIGtpbmQgPSBzdHJpbmdbc3RhcnRdO1xuICBjaCgpO1xufVxuX19uYW1lKGxleCwgXCJsZXhcIik7XG5mdW5jdGlvbiByZWFkU3RyaW5nKCkge1xuICBjaCgpO1xuICB3aGlsZSAoY29kZSAhPT0gMzQgJiYgY29kZSA+IDMxKSB7XG4gICAgaWYgKGNvZGUgPT09IDkyKSB7XG4gICAgICBjb2RlID0gY2goKTtcbiAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICBjYXNlIDM0OlxuICAgICAgICBjYXNlIDQ3OlxuICAgICAgICBjYXNlIDkyOlxuICAgICAgICBjYXNlIDk4OlxuICAgICAgICBjYXNlIDEwMjpcbiAgICAgICAgY2FzZSAxMTA6XG4gICAgICAgIGNhc2UgMTE0OlxuICAgICAgICBjYXNlIDExNjpcbiAgICAgICAgICBjaCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDExNzpcbiAgICAgICAgICBjaCgpO1xuICAgICAgICAgIHJlYWRIZXgoKTtcbiAgICAgICAgICByZWFkSGV4KCk7XG4gICAgICAgICAgcmVhZEhleCgpO1xuICAgICAgICAgIHJlYWRIZXgoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBzeW50YXhFcnJvcihcIkJhZCBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlLlwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZCA9PT0gc3RyTGVuKSB7XG4gICAgICB0aHJvdyBzeW50YXhFcnJvcihcIlVudGVybWluYXRlZCBzdHJpbmcuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaCgpO1xuICAgIH1cbiAgfVxuICBpZiAoY29kZSA9PT0gMzQpIHtcbiAgICBjaCgpO1xuICAgIHJldHVybjtcbiAgfVxuICB0aHJvdyBzeW50YXhFcnJvcihcIlVudGVybWluYXRlZCBzdHJpbmcuXCIpO1xufVxuX19uYW1lKHJlYWRTdHJpbmcsIFwicmVhZFN0cmluZ1wiKTtcbmZ1bmN0aW9uIHJlYWRIZXgoKSB7XG4gIGlmIChjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcgfHwgY29kZSA+PSA2NSAmJiBjb2RlIDw9IDcwIHx8IGNvZGUgPj0gOTcgJiYgY29kZSA8PSAxMDIpIHtcbiAgICByZXR1cm4gY2goKTtcbiAgfVxuICB0aHJvdyBzeW50YXhFcnJvcihcIkV4cGVjdGVkIGhleGFkZWNpbWFsIGRpZ2l0LlwiKTtcbn1cbl9fbmFtZShyZWFkSGV4LCBcInJlYWRIZXhcIik7XG5mdW5jdGlvbiByZWFkTnVtYmVyKCkge1xuICBpZiAoY29kZSA9PT0gNDUpIHtcbiAgICBjaCgpO1xuICB9XG4gIGlmIChjb2RlID09PSA0OCkge1xuICAgIGNoKCk7XG4gIH0gZWxzZSB7XG4gICAgcmVhZERpZ2l0cygpO1xuICB9XG4gIGlmIChjb2RlID09PSA0Nikge1xuICAgIGNoKCk7XG4gICAgcmVhZERpZ2l0cygpO1xuICB9XG4gIGlmIChjb2RlID09PSA2OSB8fCBjb2RlID09PSAxMDEpIHtcbiAgICBjb2RlID0gY2goKTtcbiAgICBpZiAoY29kZSA9PT0gNDMgfHwgY29kZSA9PT0gNDUpIHtcbiAgICAgIGNoKCk7XG4gICAgfVxuICAgIHJlYWREaWdpdHMoKTtcbiAgfVxufVxuX19uYW1lKHJlYWROdW1iZXIsIFwicmVhZE51bWJlclwiKTtcbmZ1bmN0aW9uIHJlYWREaWdpdHMoKSB7XG4gIGlmIChjb2RlIDwgNDggfHwgY29kZSA+IDU3KSB7XG4gICAgdGhyb3cgc3ludGF4RXJyb3IoXCJFeHBlY3RlZCBkZWNpbWFsIGRpZ2l0LlwiKTtcbiAgfVxuICBkbyB7XG4gICAgY2goKTtcbiAgfSB3aGlsZSAoY29kZSA+PSA0OCAmJiBjb2RlIDw9IDU3KTtcbn1cbl9fbmFtZShyZWFkRGlnaXRzLCBcInJlYWREaWdpdHNcIik7XG5Db2RlTWlycm9yLnJlZ2lzdGVySGVscGVyKFwibGludFwiLCBcImdyYXBocWwtdmFyaWFibGVzXCIsICh0ZXh0LCBvcHRpb25zLCBlZGl0b3IpID0+IHtcbiAgaWYgKCF0ZXh0KSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGxldCBhc3Q7XG4gIHRyeSB7XG4gICAgYXN0ID0ganNvblBhcnNlKHRleHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEpTT05TeW50YXhFcnJvcikge1xuICAgICAgcmV0dXJuIFtsaW50RXJyb3IoZWRpdG9yLCBlcnJvci5wb3NpdGlvbiwgZXJyb3IubWVzc2FnZSldO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuICBjb25zdCB2YXJpYWJsZVRvVHlwZSA9IG9wdGlvbnMudmFyaWFibGVUb1R5cGU7XG4gIGlmICghdmFyaWFibGVUb1R5cGUpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIHZhbGlkYXRlVmFyaWFibGVzKGVkaXRvciwgdmFyaWFibGVUb1R5cGUsIGFzdCk7XG59KTtcbmZ1bmN0aW9uIHZhbGlkYXRlVmFyaWFibGVzKGVkaXRvciwgdmFyaWFibGVUb1R5cGUsIHZhcmlhYmxlc0FTVCkge1xuICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgdmFyaWFibGVzQVNULm1lbWJlcnMuZm9yRWFjaCgobWVtYmVyKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChtZW1iZXIpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IChfYSA9IG1lbWJlci5rZXkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS52YWx1ZTtcbiAgICAgIGNvbnN0IHR5cGUgPSB2YXJpYWJsZVRvVHlwZVt2YXJpYWJsZU5hbWVdO1xuICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKGxpbnRFcnJvcihlZGl0b3IsIG1lbWJlci5rZXksIGBWYXJpYWJsZSBcIiQke3ZhcmlhYmxlTmFtZX1cIiBkb2VzIG5vdCBhcHBlYXIgaW4gYW55IEdyYXBoUUwgcXVlcnkuYCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsaWRhdGVWYWx1ZSh0eXBlLCBtZW1iZXIudmFsdWUpLmZvckVhY2goKFtub2RlLCBtZXNzYWdlXSkgPT4ge1xuICAgICAgICAgIGVycm9ycy5wdXNoKGxpbnRFcnJvcihlZGl0b3IsIG5vZGUsIG1lc3NhZ2UpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGVycm9ycztcbn1cbl9fbmFtZSh2YWxpZGF0ZVZhcmlhYmxlcywgXCJ2YWxpZGF0ZVZhcmlhYmxlc1wiKTtcbmZ1bmN0aW9uIHZhbGlkYXRlVmFsdWUodHlwZSwgdmFsdWVBU1QpIHtcbiAgaWYgKCF0eXBlIHx8ICF2YWx1ZUFTVCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAodHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxOb25OdWxsKSB7XG4gICAgaWYgKHZhbHVlQVNULmtpbmQgPT09IFwiTnVsbFwiKSB7XG4gICAgICByZXR1cm4gW1t2YWx1ZUFTVCwgYFR5cGUgXCIke3R5cGV9XCIgaXMgbm9uLW51bGxhYmxlIGFuZCBjYW5ub3QgYmUgbnVsbC5gXV07XG4gICAgfVxuICAgIHJldHVybiB2YWxpZGF0ZVZhbHVlKHR5cGUub2ZUeXBlLCB2YWx1ZUFTVCk7XG4gIH1cbiAgaWYgKHZhbHVlQVNULmtpbmQgPT09IFwiTnVsbFwiKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICh0eXBlIGluc3RhbmNlb2YgR3JhcGhRTExpc3QpIHtcbiAgICBjb25zdCBpdGVtVHlwZSA9IHR5cGUub2ZUeXBlO1xuICAgIGlmICh2YWx1ZUFTVC5raW5kID09PSBcIkFycmF5XCIpIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHZhbHVlQVNULnZhbHVlcyB8fCBbXTtcbiAgICAgIHJldHVybiBtYXBDYXQodmFsdWVzLCAoaXRlbSkgPT4gdmFsaWRhdGVWYWx1ZShpdGVtVHlwZSwgaXRlbSkpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdGVWYWx1ZShpdGVtVHlwZSwgdmFsdWVBU1QpO1xuICB9XG4gIGlmICh0eXBlIGluc3RhbmNlb2YgR3JhcGhRTElucHV0T2JqZWN0VHlwZSkge1xuICAgIGlmICh2YWx1ZUFTVC5raW5kICE9PSBcIk9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gW1t2YWx1ZUFTVCwgYFR5cGUgXCIke3R5cGV9XCIgbXVzdCBiZSBhbiBPYmplY3QuYF1dO1xuICAgIH1cbiAgICBjb25zdCBwcm92aWRlZEZpZWxkcyA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGNvbnN0IGZpZWxkRXJyb3JzID0gbWFwQ2F0KHZhbHVlQVNULm1lbWJlcnMsIChtZW1iZXIpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IChfYSA9IG1lbWJlciA9PT0gbnVsbCB8fCBtZW1iZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1lbWJlci5rZXkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS52YWx1ZTtcbiAgICAgIHByb3ZpZGVkRmllbGRzW2ZpZWxkTmFtZV0gPSB0cnVlO1xuICAgICAgY29uc3QgaW5wdXRGaWVsZCA9IHR5cGUuZ2V0RmllbGRzKClbZmllbGROYW1lXTtcbiAgICAgIGlmICghaW5wdXRGaWVsZCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIG1lbWJlci5rZXksXG4gICAgICAgICAgICBgVHlwZSBcIiR7dHlwZX1cIiBkb2VzIG5vdCBoYXZlIGEgZmllbGQgXCIke2ZpZWxkTmFtZX1cIi5gXG4gICAgICAgICAgXVxuICAgICAgICBdO1xuICAgICAgfVxuICAgICAgY29uc3QgZmllbGRUeXBlID0gaW5wdXRGaWVsZCA/IGlucHV0RmllbGQudHlwZSA6IHZvaWQgMDtcbiAgICAgIHJldHVybiB2YWxpZGF0ZVZhbHVlKGZpZWxkVHlwZSwgbWVtYmVyLnZhbHVlKTtcbiAgICB9KTtcbiAgICBPYmplY3Qua2V5cyh0eXBlLmdldEZpZWxkcygpKS5mb3JFYWNoKChmaWVsZE5hbWUpID0+IHtcbiAgICAgIGlmICghcHJvdmlkZWRGaWVsZHNbZmllbGROYW1lXSkge1xuICAgICAgICBjb25zdCBmaWVsZFR5cGUgPSB0eXBlLmdldEZpZWxkcygpW2ZpZWxkTmFtZV0udHlwZTtcbiAgICAgICAgaWYgKGZpZWxkVHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxOb25OdWxsKSB7XG4gICAgICAgICAgZmllbGRFcnJvcnMucHVzaChbXG4gICAgICAgICAgICB2YWx1ZUFTVCxcbiAgICAgICAgICAgIGBPYmplY3Qgb2YgdHlwZSBcIiR7dHlwZX1cIiBpcyBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkIFwiJHtmaWVsZE5hbWV9XCIuYFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZpZWxkRXJyb3JzO1xuICB9XG4gIGlmICh0eXBlLm5hbWUgPT09IFwiQm9vbGVhblwiICYmIHZhbHVlQVNULmtpbmQgIT09IFwiQm9vbGVhblwiIHx8IHR5cGUubmFtZSA9PT0gXCJTdHJpbmdcIiAmJiB2YWx1ZUFTVC5raW5kICE9PSBcIlN0cmluZ1wiIHx8IHR5cGUubmFtZSA9PT0gXCJJRFwiICYmIHZhbHVlQVNULmtpbmQgIT09IFwiTnVtYmVyXCIgJiYgdmFsdWVBU1Qua2luZCAhPT0gXCJTdHJpbmdcIiB8fCB0eXBlLm5hbWUgPT09IFwiRmxvYXRcIiAmJiB2YWx1ZUFTVC5raW5kICE9PSBcIk51bWJlclwiIHx8IHR5cGUubmFtZSA9PT0gXCJJbnRcIiAmJiAodmFsdWVBU1Qua2luZCAhPT0gXCJOdW1iZXJcIiB8fCAodmFsdWVBU1QudmFsdWUgfCAwKSAhPT0gdmFsdWVBU1QudmFsdWUpKSB7XG4gICAgcmV0dXJuIFtbdmFsdWVBU1QsIGBFeHBlY3RlZCB2YWx1ZSBvZiB0eXBlIFwiJHt0eXBlfVwiLmBdXTtcbiAgfVxuICBpZiAodHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxFbnVtVHlwZSB8fCB0eXBlIGluc3RhbmNlb2YgR3JhcGhRTFNjYWxhclR5cGUpIHtcbiAgICBpZiAodmFsdWVBU1Qua2luZCAhPT0gXCJTdHJpbmdcIiAmJiB2YWx1ZUFTVC5raW5kICE9PSBcIk51bWJlclwiICYmIHZhbHVlQVNULmtpbmQgIT09IFwiQm9vbGVhblwiICYmIHZhbHVlQVNULmtpbmQgIT09IFwiTnVsbFwiIHx8IGlzTnVsbGlzaCh0eXBlLnBhcnNlVmFsdWUodmFsdWVBU1QudmFsdWUpKSkge1xuICAgICAgcmV0dXJuIFtbdmFsdWVBU1QsIGBFeHBlY3RlZCB2YWx1ZSBvZiB0eXBlIFwiJHt0eXBlfVwiLmBdXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuX19uYW1lKHZhbGlkYXRlVmFsdWUsIFwidmFsaWRhdGVWYWx1ZVwiKTtcbmZ1bmN0aW9uIGxpbnRFcnJvcihlZGl0b3IsIG5vZGUsIG1lc3NhZ2UpIHtcbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlLFxuICAgIHNldmVyaXR5OiBcImVycm9yXCIsXG4gICAgdHlwZTogXCJ2YWxpZGF0aW9uXCIsXG4gICAgZnJvbTogZWRpdG9yLnBvc0Zyb21JbmRleChub2RlLnN0YXJ0KSxcbiAgICB0bzogZWRpdG9yLnBvc0Zyb21JbmRleChub2RlLmVuZClcbiAgfTtcbn1cbl9fbmFtZShsaW50RXJyb3IsIFwibGludEVycm9yXCIpO1xuZnVuY3Rpb24gaXNOdWxsaXNoKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwIHx8IHZhbHVlICE9PSB2YWx1ZTtcbn1cbl9fbmFtZShpc051bGxpc2gsIFwiaXNOdWxsaXNoXCIpO1xuZnVuY3Rpb24gbWFwQ2F0KGFycmF5LCBtYXBwZXIpIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGFycmF5Lm1hcChtYXBwZXIpKTtcbn1cbl9fbmFtZShtYXBDYXQsIFwibWFwQ2F0XCIpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQUNBO0FBWUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF4Q0E7QUFDQTtBQXlDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBbkJBO0FBcUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/lint.es2.js\n");
|
2659 |
|
2660 | }),
|
2661 |
|
2662 | "../../graphiql-react/dist/lint.es3.js":
|
2663 |
|
2664 |
|
2665 |
|
2666 |
|
2667 | (function(module, exports, __webpack_require__) {
|
2668 |
|
2669 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.l = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var lint$2 = {\n exports: {}\n };\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports);\n })(function (CodeMirror) {\n var GUTTER_ID = \"CodeMirror-lint-markers\";\n var LINT_LINE_ID = \"CodeMirror-lint-line-\";\n\n function showTooltip(cm, e, content) {\n var tt = document.createElement(\"div\");\n tt.className = \"CodeMirror-lint-tooltip cm-s-\" + cm.options.theme;\n tt.appendChild(content.cloneNode(true));\n if (cm.state.lint.options.selfContain) cm.getWrapperElement().appendChild(tt);else document.body.appendChild(tt);\n\n function position(e2) {\n if (!tt.parentNode) return CodeMirror.off(document, \"mousemove\", position);\n tt.style.top = Math.max(0, e2.clientY - tt.offsetHeight - 5) + \"px\";\n tt.style.left = e2.clientX + 5 + \"px\";\n }\n\n __name(position, \"position\");\n\n CodeMirror.on(document, \"mousemove\", position);\n position(e);\n if (tt.style.opacity != null) tt.style.opacity = 1;\n return tt;\n }\n\n __name(showTooltip, \"showTooltip\");\n\n function rm(elt) {\n if (elt.parentNode) elt.parentNode.removeChild(elt);\n }\n\n __name(rm, \"rm\");\n\n function hideTooltip(tt) {\n if (!tt.parentNode) return;\n if (tt.style.opacity == null) rm(tt);\n tt.style.opacity = 0;\n setTimeout(function () {\n rm(tt);\n }, 600);\n }\n\n __name(hideTooltip, \"hideTooltip\");\n\n function showTooltipFor(cm, e, content, node) {\n var tooltip = showTooltip(cm, e, content);\n\n function hide() {\n CodeMirror.off(node, \"mouseout\", hide);\n\n if (tooltip) {\n hideTooltip(tooltip);\n tooltip = null;\n }\n }\n\n __name(hide, \"hide\");\n\n var poll = setInterval(function () {\n if (tooltip) for (var n = node;; n = n.parentNode) {\n if (n && n.nodeType == 11) n = n.host;\n if (n == document.body) return;\n\n if (!n) {\n hide();\n break;\n }\n }\n if (!tooltip) return clearInterval(poll);\n }, 400);\n CodeMirror.on(node, \"mouseout\", hide);\n }\n\n __name(showTooltipFor, \"showTooltipFor\");\n\n function LintState(cm, conf, hasGutter) {\n this.marked = [];\n if (conf instanceof Function) conf = {\n getAnnotations: conf\n };\n if (!conf || conf === true) conf = {};\n this.options = {};\n this.linterOptions = conf.options || {};\n\n for (var prop in defaults) this.options[prop] = defaults[prop];\n\n for (var prop in conf) {\n if (defaults.hasOwnProperty(prop)) {\n if (conf[prop] != null) this.options[prop] = conf[prop];\n } else if (!conf.options) {\n this.linterOptions[prop] = conf[prop];\n }\n }\n\n this.timeout = null;\n this.hasGutter = hasGutter;\n\n this.onMouseOver = function (e) {\n onMouseOver(cm, e);\n };\n\n this.waitingFor = 0;\n }\n\n __name(LintState, \"LintState\");\n\n var defaults = {\n highlightLines: false,\n tooltips: true,\n delay: 500,\n lintOnChange: true,\n getAnnotations: null,\n async: false,\n selfContain: null,\n formatAnnotation: null,\n onUpdateLinting: null\n };\n\n function clearMarks(cm) {\n var state = cm.state.lint;\n if (state.hasGutter) cm.clearGutter(GUTTER_ID);\n if (state.options.highlightLines) clearErrorLines(cm);\n\n for (var i = 0; i < state.marked.length; ++i) state.marked[i].clear();\n\n state.marked.length = 0;\n }\n\n __name(clearMarks, \"clearMarks\");\n\n function clearErrorLines(cm) {\n cm.eachLine(function (line) {\n var has = line.wrapClass && /\\bCodeMirror-lint-line-\\w+\\b/.exec(line.wrapClass);\n if (has) cm.removeLineClass(line, \"wrap\", has[0]);\n });\n }\n\n __name(clearErrorLines, \"clearErrorLines\");\n\n function makeMarker(cm, labels, severity, multiple, tooltips) {\n var marker = document.createElement(\"div\"),\n inner = marker;\n marker.className = \"CodeMirror-lint-marker CodeMirror-lint-marker-\" + severity;\n\n if (multiple) {\n inner = marker.appendChild(document.createElement(\"div\"));\n inner.className = \"CodeMirror-lint-marker CodeMirror-lint-marker-multiple\";\n }\n\n if (tooltips != false) CodeMirror.on(inner, \"mouseover\", function (e) {\n showTooltipFor(cm, e, labels, inner);\n });\n return marker;\n }\n\n __name(makeMarker, \"makeMarker\");\n\n function getMaxSeverity(a, b) {\n if (a == \"error\") return a;else return b;\n }\n\n __name(getMaxSeverity, \"getMaxSeverity\");\n\n function groupByLine(annotations) {\n var lines = [];\n\n for (var i = 0; i < annotations.length; ++i) {\n var ann = annotations[i],\n line = ann.from.line;\n (lines[line] || (lines[line] = [])).push(ann);\n }\n\n return lines;\n }\n\n __name(groupByLine, \"groupByLine\");\n\n function annotationTooltip(ann) {\n var severity = ann.severity;\n if (!severity) severity = \"error\";\n var tip = document.createElement(\"div\");\n tip.className = \"CodeMirror-lint-message CodeMirror-lint-message-\" + severity;\n\n if (typeof ann.messageHTML != \"undefined\") {\n tip.innerHTML = ann.messageHTML;\n } else {\n tip.appendChild(document.createTextNode(ann.message));\n }\n\n return tip;\n }\n\n __name(annotationTooltip, \"annotationTooltip\");\n\n function lintAsync(cm, getAnnotations) {\n var state = cm.state.lint;\n var id = ++state.waitingFor;\n\n function abort() {\n id = -1;\n cm.off(\"change\", abort);\n }\n\n __name(abort, \"abort\");\n\n cm.on(\"change\", abort);\n getAnnotations(cm.getValue(), function (annotations, arg2) {\n cm.off(\"change\", abort);\n if (state.waitingFor != id) return;\n if (arg2 && annotations instanceof CodeMirror) annotations = arg2;\n cm.operation(function () {\n updateLinting(cm, annotations);\n });\n }, state.linterOptions, cm);\n }\n\n __name(lintAsync, \"lintAsync\");\n\n function startLinting(cm) {\n var state = cm.state.lint;\n if (!state) return;\n var options = state.options;\n var getAnnotations = options.getAnnotations || cm.getHelper(CodeMirror.Pos(0, 0), \"lint\");\n if (!getAnnotations) return;\n\n if (options.async || getAnnotations.async) {\n lintAsync(cm, getAnnotations);\n } else {\n var annotations = getAnnotations(cm.getValue(), state.linterOptions, cm);\n if (!annotations) return;\n if (annotations.then) annotations.then(function (issues) {\n cm.operation(function () {\n updateLinting(cm, issues);\n });\n });else cm.operation(function () {\n updateLinting(cm, annotations);\n });\n }\n }\n\n __name(startLinting, \"startLinting\");\n\n function updateLinting(cm, annotationsNotSorted) {\n var state = cm.state.lint;\n if (!state) return;\n var options = state.options;\n clearMarks(cm);\n var annotations = groupByLine(annotationsNotSorted);\n\n for (var line = 0; line < annotations.length; ++line) {\n var anns = annotations[line];\n if (!anns) continue;\n var message = [];\n anns = anns.filter(function (item) {\n return message.indexOf(item.message) > -1 ? false : message.push(item.message);\n });\n var maxSeverity = null;\n var tipLabel = state.hasGutter && document.createDocumentFragment();\n\n for (var i = 0; i < anns.length; ++i) {\n var ann = anns[i];\n var severity = ann.severity;\n if (!severity) severity = \"error\";\n maxSeverity = getMaxSeverity(maxSeverity, severity);\n if (options.formatAnnotation) ann = options.formatAnnotation(ann);\n if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann));\n if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, {\n className: \"CodeMirror-lint-mark CodeMirror-lint-mark-\" + severity,\n __annotation: ann\n }));\n }\n\n if (state.hasGutter) cm.setGutterMarker(line, GUTTER_ID, makeMarker(cm, tipLabel, maxSeverity, annotations[line].length > 1, options.tooltips));\n if (options.highlightLines) cm.addLineClass(line, \"wrap\", LINT_LINE_ID + maxSeverity);\n }\n\n if (options.onUpdateLinting) options.onUpdateLinting(annotationsNotSorted, annotations, cm);\n }\n\n __name(updateLinting, \"updateLinting\");\n\n function onChange(cm) {\n var state = cm.state.lint;\n if (!state) return;\n clearTimeout(state.timeout);\n state.timeout = setTimeout(function () {\n startLinting(cm);\n }, state.options.delay);\n }\n\n __name(onChange, \"onChange\");\n\n function popupTooltips(cm, annotations, e) {\n var target = e.target || e.srcElement;\n var tooltip = document.createDocumentFragment();\n\n for (var i = 0; i < annotations.length; i++) {\n var ann = annotations[i];\n tooltip.appendChild(annotationTooltip(ann));\n }\n\n showTooltipFor(cm, e, tooltip, target);\n }\n\n __name(popupTooltips, \"popupTooltips\");\n\n function onMouseOver(cm, e) {\n var target = e.target || e.srcElement;\n if (!/\\bCodeMirror-lint-mark-/.test(target.className)) return;\n var box = target.getBoundingClientRect(),\n x = (box.left + box.right) / 2,\n y = (box.top + box.bottom) / 2;\n var spans = cm.findMarksAt(cm.coordsChar({\n left: x,\n top: y\n }, \"client\"));\n var annotations = [];\n\n for (var i = 0; i < spans.length; ++i) {\n var ann = spans[i].__annotation;\n if (ann) annotations.push(ann);\n }\n\n if (annotations.length) popupTooltips(cm, annotations, e);\n }\n\n __name(onMouseOver, \"onMouseOver\");\n\n CodeMirror.defineOption(\"lint\", false, function (cm, val, old) {\n if (old && old != CodeMirror.Init) {\n clearMarks(cm);\n if (cm.state.lint.options.lintOnChange !== false) cm.off(\"change\", onChange);\n CodeMirror.off(cm.getWrapperElement(), \"mouseover\", cm.state.lint.onMouseOver);\n clearTimeout(cm.state.lint.timeout);\n delete cm.state.lint;\n }\n\n if (val) {\n var gutters = cm.getOption(\"gutters\"),\n hasLintGutter = false;\n\n for (var i = 0; i < gutters.length; ++i) if (gutters[i] == GUTTER_ID) hasLintGutter = true;\n\n var state = cm.state.lint = new LintState(cm, val, hasLintGutter);\n if (state.options.lintOnChange) cm.on(\"change\", onChange);\n if (state.options.tooltips != false && state.options.tooltips != \"gutter\") CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n startLinting(cm);\n }\n });\n CodeMirror.defineExtension(\"performLint\", function () {\n startLinting(this);\n });\n });\n })();\n\n var lint = lint$2.exports;\n var lint$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": lint\n }, [lint$2.exports]));\n _exports.l = lint$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9saW50LmVzMy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL3BhY2thZ2VzL2dyYXBoaXFsLXJlYWN0L2Rpc3QvbGludC5lczMuanM/MDFhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSA9ICh0YXJnZXQsIHZhbHVlKSA9PiBfX2RlZlByb3AodGFyZ2V0LCBcIm5hbWVcIiwgeyB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuaW1wb3J0IHsgYSBhcyBjb2RlbWlycm9yIH0gZnJvbSBcIi4vY29kZW1pcnJvci5lcy5qc1wiO1xuZnVuY3Rpb24gX21lcmdlTmFtZXNwYWNlcyhuLCBtKSB7XG4gIG0uZm9yRWFjaChmdW5jdGlvbihlKSB7XG4gICAgZSAmJiB0eXBlb2YgZSAhPT0gXCJzdHJpbmdcIiAmJiAhQXJyYXkuaXNBcnJheShlKSAmJiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgICAgIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiAhKGsgaW4gbikpIHtcbiAgICAgICAgdmFyIGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIGspO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwgaywgZC5nZXQgPyBkIDoge1xuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBlW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmZyZWV6ZShuKTtcbn1cbl9fbmFtZShfbWVyZ2VOYW1lc3BhY2VzLCBcIl9tZXJnZU5hbWVzcGFjZXNcIik7XG52YXIgbGludCQyID0geyBleHBvcnRzOiB7fSB9O1xuKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuICAoZnVuY3Rpb24obW9kKSB7XG4gICAgbW9kKGNvZGVtaXJyb3IuZXhwb3J0cyk7XG4gIH0pKGZ1bmN0aW9uKENvZGVNaXJyb3IpIHtcbiAgICB2YXIgR1VUVEVSX0lEID0gXCJDb2RlTWlycm9yLWxpbnQtbWFya2Vyc1wiO1xuICAgIHZhciBMSU5UX0xJTkVfSUQgPSBcIkNvZGVNaXJyb3ItbGludC1saW5lLVwiO1xuICAgIGZ1bmN0aW9uIHNob3dUb29sdGlwKGNtLCBlLCBjb250ZW50KSB7XG4gICAgICB2YXIgdHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgdHQuY2xhc3NOYW1lID0gXCJDb2RlTWlycm9yLWxpbnQtdG9vbHRpcCBjbS1zLVwiICsgY20ub3B0aW9ucy50aGVtZTtcbiAgICAgIHR0LmFwcGVuZENoaWxkKGNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTtcbiAgICAgIGlmIChjbS5zdGF0ZS5saW50Lm9wdGlvbnMuc2VsZkNvbnRhaW4pXG4gICAgICAgIGNtLmdldFdyYXBwZXJFbGVtZW50KCkuYXBwZW5kQ2hpbGQodHQpO1xuICAgICAgZWxzZVxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHR0KTtcbiAgICAgIGZ1bmN0aW9uIHBvc2l0aW9uKGUyKSB7XG4gICAgICAgIGlmICghdHQucGFyZW50Tm9kZSlcbiAgICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5vZmYoZG9jdW1lbnQsIFwibW91c2Vtb3ZlXCIsIHBvc2l0aW9uKTtcbiAgICAgICAgdHQuc3R5bGUudG9wID0gTWF0aC5tYXgoMCwgZTIuY2xpZW50WSAtIHR0Lm9mZnNldEhlaWdodCAtIDUpICsgXCJweFwiO1xuICAgICAgICB0dC5zdHlsZS5sZWZ0ID0gZTIuY2xpZW50WCArIDUgKyBcInB4XCI7XG4gICAgICB9XG4gICAgICBfX25hbWUocG9zaXRpb24sIFwicG9zaXRpb25cIik7XG4gICAgICBDb2RlTWlycm9yLm9uKGRvY3VtZW50LCBcIm1vdXNlbW92ZVwiLCBwb3NpdGlvbik7XG4gICAgICBwb3NpdGlvbihlKTtcbiAgICAgIGlmICh0dC5zdHlsZS5vcGFjaXR5ICE9IG51bGwpXG4gICAgICAgIHR0LnN0eWxlLm9wYWNpdHkgPSAxO1xuICAgICAgcmV0dXJuIHR0O1xuICAgIH1cbiAgICBfX25hbWUoc2hvd1Rvb2x0aXAsIFwic2hvd1Rvb2x0aXBcIik7XG4gICAgZnVuY3Rpb24gcm0oZWx0KSB7XG4gICAgICBpZiAoZWx0LnBhcmVudE5vZGUpXG4gICAgICAgIGVsdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsdCk7XG4gICAgfVxuICAgIF9fbmFtZShybSwgXCJybVwiKTtcbiAgICBmdW5jdGlvbiBoaWRlVG9vbHRpcCh0dCkge1xuICAgICAgaWYgKCF0dC5wYXJlbnROb2RlKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAodHQuc3R5bGUub3BhY2l0eSA9PSBudWxsKVxuICAgICAgICBybSh0dCk7XG4gICAgICB0dC5zdHlsZS5vcGFjaXR5ID0gMDtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJtKHR0KTtcbiAgICAgIH0sIDYwMCk7XG4gICAgfVxuICAgIF9fbmFtZShoaWRlVG9vbHRpcCwgXCJoaWRlVG9vbHRpcFwiKTtcbiAgICBmdW5jdGlvbiBzaG93VG9vbHRpcEZvcihjbSwgZSwgY29udGVudCwgbm9kZSkge1xuICAgICAgdmFyIHRvb2x0aXAgPSBzaG93VG9vbHRpcChjbSwgZSwgY29udGVudCk7XG4gICAgICBmdW5jdGlvbiBoaWRlKCkge1xuICAgICAgICBDb2RlTWlycm9yLm9mZihub2RlLCBcIm1vdXNlb3V0XCIsIGhpZGUpO1xuICAgICAgICBpZiAodG9vbHRpcCkge1xuICAgICAgICAgIGhpZGVUb29sdGlwKHRvb2x0aXApO1xuICAgICAgICAgIHRvb2x0aXAgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfX25hbWUoaGlkZSwgXCJoaWRlXCIpO1xuICAgICAgdmFyIHBvbGwgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRvb2x0aXApXG4gICAgICAgICAgZm9yICh2YXIgbiA9IG5vZGU7IDsgbiA9IG4ucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgaWYgKG4gJiYgbi5ub2RlVHlwZSA9PSAxMSlcbiAgICAgICAgICAgICAgbiA9IG4uaG9zdDtcbiAgICAgICAgICAgIGlmIChuID09IGRvY3VtZW50LmJvZHkpXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmICghbikge1xuICAgICAgICAgICAgICBoaWRlKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgaWYgKCF0b29sdGlwKVxuICAgICAgICAgIHJldHVybiBjbGVhckludGVydmFsKHBvbGwpO1xuICAgICAgfSwgNDAwKTtcbiAgICAgIENvZGVNaXJyb3Iub24obm9kZSwgXCJtb3VzZW91dFwiLCBoaWRlKTtcbiAgICB9XG4gICAgX19uYW1lKHNob3dUb29sdGlwRm9yLCBcInNob3dUb29sdGlwRm9yXCIpO1xuICAgIGZ1bmN0aW9uIExpbnRTdGF0ZShjbSwgY29uZiwgaGFzR3V0dGVyKSB7XG4gICAgICB0aGlzLm1hcmtlZCA9IFtdO1xuICAgICAgaWYgKGNvbmYgaW5zdGFuY2VvZiBGdW5jdGlvbilcbiAgICAgICAgY29uZiA9IHsgZ2V0QW5ub3RhdGlvbnM6IGNvbmYgfTtcbiAgICAgIGlmICghY29uZiB8fCBjb25mID09PSB0cnVlKVxuICAgICAgICBjb25mID0ge307XG4gICAgICB0aGlzLm9wdGlvbnMgPSB7fTtcbiAgICAgIHRoaXMubGludGVyT3B0aW9ucyA9IGNvbmYub3B0aW9ucyB8fCB7fTtcbiAgICAgIGZvciAodmFyIHByb3AgaW4gZGVmYXVsdHMpXG4gICAgICAgIHRoaXMub3B0aW9uc1twcm9wXSA9IGRlZmF1bHRzW3Byb3BdO1xuICAgICAgZm9yICh2YXIgcHJvcCBpbiBjb25mKSB7XG4gICAgICAgIGlmIChkZWZhdWx0cy5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgIGlmIChjb25mW3Byb3BdICE9IG51bGwpXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNbcHJvcF0gPSBjb25mW3Byb3BdO1xuICAgICAgICB9IGVsc2UgaWYgKCFjb25mLm9wdGlvbnMpIHtcbiAgICAgICAgICB0aGlzLmxpbnRlck9wdGlvbnNbcHJvcF0gPSBjb25mW3Byb3BdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnRpbWVvdXQgPSBudWxsO1xuICAgICAgdGhpcy5oYXNHdXR0ZXIgPSBoYXNHdXR0ZXI7XG4gICAgICB0aGlzLm9uTW91c2VPdmVyID0gZnVuY3Rpb24oZSkge1xuICAgICAgICBvbk1vdXNlT3ZlcihjbSwgZSk7XG4gICAgICB9O1xuICAgICAgdGhpcy53YWl0aW5nRm9yID0gMDtcbiAgICB9XG4gICAgX19uYW1lKExpbnRTdGF0ZSwgXCJMaW50U3RhdGVcIik7XG4gICAgdmFyIGRlZmF1bHRzID0ge1xuICAgICAgaGlnaGxpZ2h0TGluZXM6IGZhbHNlLFxuICAgICAgdG9vbHRpcHM6IHRydWUsXG4gICAgICBkZWxheTogNTAwLFxuICAgICAgbGludE9uQ2hhbmdlOiB0cnVlLFxuICAgICAgZ2V0QW5ub3RhdGlvbnM6IG51bGwsXG4gICAgICBhc3luYzogZmFsc2UsXG4gICAgICBzZWxmQ29udGFpbjogbnVsbCxcbiAgICAgIGZvcm1hdEFubm90YXRpb246IG51bGwsXG4gICAgICBvblVwZGF0ZUxpbnRpbmc6IG51bGxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGNsZWFyTWFya3MoY20pIHtcbiAgICAgIHZhciBzdGF0ZSA9IGNtLnN0YXRlLmxpbnQ7XG4gICAgICBpZiAoc3RhdGUuaGFzR3V0dGVyKVxuICAgICAgICBjbS5jbGVhckd1dHRlcihHVVRURVJfSUQpO1xuICAgICAgaWYgKHN0YXRlLm9wdGlvbnMuaGlnaGxpZ2h0TGluZXMpXG4gICAgICAgIGNsZWFyRXJyb3JMaW5lcyhjbSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLm1hcmtlZC5sZW5ndGg7ICsraSlcbiAgICAgICAgc3RhdGUubWFya2VkW2ldLmNsZWFyKCk7XG4gICAgICBzdGF0ZS5tYXJrZWQubGVuZ3RoID0gMDtcbiAgICB9XG4gICAgX19uYW1lKGNsZWFyTWFya3MsIFwiY2xlYXJNYXJrc1wiKTtcbiAgICBmdW5jdGlvbiBjbGVhckVycm9yTGluZXMoY20pIHtcbiAgICAgIGNtLmVhY2hMaW5lKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgdmFyIGhhcyA9IGxpbmUud3JhcENsYXNzICYmIC9cXGJDb2RlTWlycm9yLWxpbnQtbGluZS1cXHcrXFxiLy5leGVjKGxpbmUud3JhcENsYXNzKTtcbiAgICAgICAgaWYgKGhhcylcbiAgICAgICAgICBjbS5yZW1vdmVMaW5lQ2xhc3MobGluZSwgXCJ3cmFwXCIsIGhhc1swXSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgX19uYW1lKGNsZWFyRXJyb3JMaW5lcywgXCJjbGVhckVycm9yTGluZXNcIik7XG4gICAgZnVuY3Rpb24gbWFrZU1hcmtlcihjbSwgbGFiZWxzLCBzZXZlcml0eSwgbXVsdGlwbGUsIHRvb2x0aXBzKSB7XG4gICAgICB2YXIgbWFya2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSwgaW5uZXIgPSBtYXJrZXI7XG4gICAgICBtYXJrZXIuY2xhc3NOYW1lID0gXCJDb2RlTWlycm9yLWxpbnQtbWFya2VyIENvZGVNaXJyb3ItbGludC1tYXJrZXItXCIgKyBzZXZlcml0eTtcbiAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICBpbm5lciA9IG1hcmtlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKTtcbiAgICAgICAgaW5uZXIuY2xhc3NOYW1lID0gXCJDb2RlTWlycm9yLWxpbnQtbWFya2VyIENvZGVNaXJyb3ItbGludC1tYXJrZXItbXVsdGlwbGVcIjtcbiAgICAgIH1cbiAgICAgIGlmICh0b29sdGlwcyAhPSBmYWxzZSlcbiAgICAgICAgQ29kZU1pcnJvci5vbihpbm5lciwgXCJtb3VzZW92ZXJcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgIHNob3dUb29sdGlwRm9yKGNtLCBlLCBsYWJlbHMsIGlubmVyKTtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gbWFya2VyO1xuICAgIH1cbiAgICBfX25hbWUobWFrZU1hcmtlciwgXCJtYWtlTWFya2VyXCIpO1xuICAgIGZ1bmN0aW9uIGdldE1heFNldmVyaXR5KGEsIGIpIHtcbiAgICAgIGlmIChhID09IFwiZXJyb3JcIilcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBiO1xuICAgIH1cbiAgICBfX25hbWUoZ2V0TWF4U2V2ZXJpdHksIFwiZ2V0TWF4U2V2ZXJpdHlcIik7XG4gICAgZnVuY3Rpb24gZ3JvdXBCeUxpbmUoYW5ub3RhdGlvbnMpIHtcbiAgICAgIHZhciBsaW5lcyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbm5vdGF0aW9ucy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgYW5uID0gYW5ub3RhdGlvbnNbaV0sIGxpbmUgPSBhbm4uZnJvbS5saW5lO1xuICAgICAgICAobGluZXNbbGluZV0gfHwgKGxpbmVzW2xpbmVdID0gW10pKS5wdXNoKGFubik7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluZXM7XG4gICAgfVxuICAgIF9fbmFtZShncm91cEJ5TGluZSwgXCJncm91cEJ5TGluZVwiKTtcbiAgICBmdW5jdGlvbiBhbm5vdGF0aW9uVG9vbHRpcChhbm4pIHtcbiAgICAgIHZhciBzZXZlcml0eSA9IGFubi5zZXZlcml0eTtcbiAgICAgIGlmICghc2V2ZXJpdHkpXG4gICAgICAgIHNldmVyaXR5ID0gXCJlcnJvclwiO1xuICAgICAgdmFyIHRpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICB0aXAuY2xhc3NOYW1lID0gXCJDb2RlTWlycm9yLWxpbnQtbWVzc2FnZSBDb2RlTWlycm9yLWxpbnQtbWVzc2FnZS1cIiArIHNldmVyaXR5O1xuICAgICAgaWYgKHR5cGVvZiBhbm4ubWVzc2FnZUhUTUwgIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICB0aXAuaW5uZXJIVE1MID0gYW5uLm1lc3NhZ2VIVE1MO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGlwLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGFubi5tZXNzYWdlKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGlwO1xuICAgIH1cbiAgICBfX25hbWUoYW5ub3RhdGlvblRvb2x0aXAsIFwiYW5ub3RhdGlvblRvb2x0aXBcIik7XG4gICAgZnVuY3Rpb24gbGludEFzeW5jKGNtLCBnZXRBbm5vdGF0aW9ucykge1xuICAgICAgdmFyIHN0YXRlID0gY20uc3RhdGUubGludDtcbiAgICAgIHZhciBpZCA9ICsrc3RhdGUud2FpdGluZ0ZvcjtcbiAgICAgIGZ1bmN0aW9uIGFib3J0KCkge1xuICAgICAgICBpZCA9IC0xO1xuICAgICAgICBjbS5vZmYoXCJjaGFuZ2VcIiwgYWJvcnQpO1xuICAgICAgfVxuICAgICAgX19uYW1lKGFib3J0LCBcImFib3J0XCIpO1xuICAgICAgY20ub24oXCJjaGFuZ2VcIiwgYWJvcnQpO1xuICAgICAgZ2V0QW5ub3RhdGlvbnMoY20uZ2V0VmFsdWUoKSwgZnVuY3Rpb24oYW5ub3RhdGlvbnMsIGFyZzIpIHtcbiAgICAgICAgY20ub2ZmKFwiY2hhbmdlXCIsIGFib3J0KTtcbiAgICAgICAgaWYgKHN0YXRlLndhaXRpbmdGb3IgIT0gaWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoYXJnMiAmJiBhbm5vdGF0aW9ucyBpbnN0YW5jZW9mIENvZGVNaXJyb3IpXG4gICAgICAgICAgYW5ub3RhdGlvbnMgPSBhcmcyO1xuICAgICAgICBjbS5vcGVyYXRpb24oZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdXBkYXRlTGludGluZyhjbSwgYW5ub3RhdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHN0YXRlLmxpbnRlck9wdGlvbnMsIGNtKTtcbiAgICB9XG4gICAgX19uYW1lKGxpbnRBc3luYywgXCJsaW50QXN5bmNcIik7XG4gICAgZnVuY3Rpb24gc3RhcnRMaW50aW5nKGNtKSB7XG4gICAgICB2YXIgc3RhdGUgPSBjbS5zdGF0ZS5saW50O1xuICAgICAgaWYgKCFzdGF0ZSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgdmFyIG9wdGlvbnMgPSBzdGF0ZS5vcHRpb25zO1xuICAgICAgdmFyIGdldEFubm90YXRpb25zID0gb3B0aW9ucy5nZXRBbm5vdGF0aW9ucyB8fCBjbS5nZXRIZWxwZXIoQ29kZU1pcnJvci5Qb3MoMCwgMCksIFwibGludFwiKTtcbiAgICAgIGlmICghZ2V0QW5ub3RhdGlvbnMpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChvcHRpb25zLmFzeW5jIHx8IGdldEFubm90YXRpb25zLmFzeW5jKSB7XG4gICAgICAgIGxpbnRBc3luYyhjbSwgZ2V0QW5ub3RhdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGFubm90YXRpb25zID0gZ2V0QW5ub3RhdGlvbnMoY20uZ2V0VmFsdWUoKSwgc3RhdGUubGludGVyT3B0aW9ucywgY20pO1xuICAgICAgICBpZiAoIWFubm90YXRpb25zKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGFubm90YXRpb25zLnRoZW4pXG4gICAgICAgICAgYW5ub3RhdGlvbnMudGhlbihmdW5jdGlvbihpc3N1ZXMpIHtcbiAgICAgICAgICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgdXBkYXRlTGludGluZyhjbSwgaXNzdWVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdXBkYXRlTGludGluZyhjbSwgYW5ub3RhdGlvbnMpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoc3RhcnRMaW50aW5nLCBcInN0YXJ0TGludGluZ1wiKTtcbiAgICBmdW5jdGlvbiB1cGRhdGVMaW50aW5nKGNtLCBhbm5vdGF0aW9uc05vdFNvcnRlZCkge1xuICAgICAgdmFyIHN0YXRlID0gY20uc3RhdGUubGludDtcbiAgICAgIGlmICghc3RhdGUpXG4gICAgICAgIHJldHVybjtcbiAgICAgIHZhciBvcHRpb25zID0gc3RhdGUub3B0aW9ucztcbiAgICAgIGNsZWFyTWFya3MoY20pO1xuICAgICAgdmFyIGFubm90YXRpb25zID0gZ3JvdXBCeUxpbmUoYW5ub3RhdGlvbnNOb3RTb3J0ZWQpO1xuICAgICAgZm9yICh2YXIgbGluZSA9IDA7IGxpbmUgPCBhbm5vdGF0aW9ucy5sZW5ndGg7ICsrbGluZSkge1xuICAgICAgICB2YXIgYW5ucyA9IGFubm90YXRpb25zW2xpbmVdO1xuICAgICAgICBpZiAoIWFubnMpXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIHZhciBtZXNzYWdlID0gW107XG4gICAgICAgIGFubnMgPSBhbm5zLmZpbHRlcihmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIG1lc3NhZ2UuaW5kZXhPZihpdGVtLm1lc3NhZ2UpID4gLTEgPyBmYWxzZSA6IG1lc3NhZ2UucHVzaChpdGVtLm1lc3NhZ2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIG1heFNldmVyaXR5ID0gbnVsbDtcbiAgICAgICAgdmFyIHRpcExhYmVsID0gc3RhdGUuaGFzR3V0dGVyICYmIGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbm5zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgdmFyIGFubiA9IGFubnNbaV07XG4gICAgICAgICAgdmFyIHNldmVyaXR5ID0gYW5uLnNldmVyaXR5O1xuICAgICAgICAgIGlmICghc2V2ZXJpdHkpXG4gICAgICAgICAgICBzZXZlcml0eSA9IFwiZXJyb3JcIjtcbiAgICAgICAgICBtYXhTZXZlcml0eSA9IGdldE1heFNldmVyaXR5KG1heFNldmVyaXR5LCBzZXZlcml0eSk7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuZm9ybWF0QW5ub3RhdGlvbilcbiAgICAgICAgICAgIGFubiA9IG9wdGlvbnMuZm9ybWF0QW5ub3RhdGlvbihhbm4pO1xuICAgICAgICAgIGlmIChzdGF0ZS5oYXNHdXR0ZXIpXG4gICAgICAgICAgICB0aXBMYWJlbC5hcHBlbmRDaGlsZChhbm5vdGF0aW9uVG9vbHRpcChhbm4pKTtcbiAgICAgICAgICBpZiAoYW5uLnRvKVxuICAgICAgICAgICAgc3RhdGUubWFya2VkLnB1c2goY20ubWFya1RleHQoYW5uLmZyb20sIGFubi50bywge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiQ29kZU1pcnJvci1saW50LW1hcmsgQ29kZU1pcnJvci1saW50LW1hcmstXCIgKyBzZXZlcml0eSxcbiAgICAgICAgICAgICAgX19hbm5vdGF0aW9uOiBhbm5cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuaGFzR3V0dGVyKVxuICAgICAgICAgIGNtLnNldEd1dHRlck1hcmtlcihsaW5lLCBHVVRURVJfSUQsIG1ha2VNYXJrZXIoY20sIHRpcExhYmVsLCBtYXhTZXZlcml0eSwgYW5ub3RhdGlvbnNbbGluZV0ubGVuZ3RoID4gMSwgb3B0aW9ucy50b29sdGlwcykpO1xuICAgICAgICBpZiAob3B0aW9ucy5oaWdobGlnaHRMaW5lcylcbiAgICAgICAgICBjbS5hZGRMaW5lQ2xhc3MobGluZSwgXCJ3cmFwXCIsIExJTlRfTElORV9JRCArIG1heFNldmVyaXR5KTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLm9uVXBkYXRlTGludGluZylcbiAgICAgICAgb3B0aW9ucy5vblVwZGF0ZUxpbnRpbmcoYW5ub3RhdGlvbnNOb3RTb3J0ZWQsIGFubm90YXRpb25zLCBjbSk7XG4gICAgfVxuICAgIF9fbmFtZSh1cGRhdGVMaW50aW5nLCBcInVwZGF0ZUxpbnRpbmdcIik7XG4gICAgZnVuY3Rpb24gb25DaGFuZ2UoY20pIHtcbiAgICAgIHZhciBzdGF0ZSA9IGNtLnN0YXRlLmxpbnQ7XG4gICAgICBpZiAoIXN0YXRlKVxuICAgICAgICByZXR1cm47XG4gICAgICBjbGVhclRpbWVvdXQoc3RhdGUudGltZW91dCk7XG4gICAgICBzdGF0ZS50aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgc3RhcnRMaW50aW5nKGNtKTtcbiAgICAgIH0sIHN0YXRlLm9wdGlvbnMuZGVsYXkpO1xuICAgIH1cbiAgICBfX25hbWUob25DaGFuZ2UsIFwib25DaGFuZ2VcIik7XG4gICAgZnVuY3Rpb24gcG9wdXBUb29sdGlwcyhjbSwgYW5ub3RhdGlvbnMsIGUpIHtcbiAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7XG4gICAgICB2YXIgdG9vbHRpcCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5ub3RhdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGFubiA9IGFubm90YXRpb25zW2ldO1xuICAgICAgICB0b29sdGlwLmFwcGVuZENoaWxkKGFubm90YXRpb25Ub29sdGlwKGFubikpO1xuICAgICAgfVxuICAgICAgc2hvd1Rvb2x0aXBGb3IoY20sIGUsIHRvb2x0aXAsIHRhcmdldCk7XG4gICAgfVxuICAgIF9fbmFtZShwb3B1cFRvb2x0aXBzLCBcInBvcHVwVG9vbHRpcHNcIik7XG4gICAgZnVuY3Rpb24gb25Nb3VzZU92ZXIoY20sIGUpIHtcbiAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7XG4gICAgICBpZiAoIS9cXGJDb2RlTWlycm9yLWxpbnQtbWFyay0vLnRlc3QodGFyZ2V0LmNsYXNzTmFtZSkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIHZhciBib3ggPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHggPSAoYm94LmxlZnQgKyBib3gucmlnaHQpIC8gMiwgeSA9IChib3gudG9wICsgYm94LmJvdHRvbSkgLyAyO1xuICAgICAgdmFyIHNwYW5zID0gY20uZmluZE1hcmtzQXQoY20uY29vcmRzQ2hhcih7IGxlZnQ6IHgsIHRvcDogeSB9LCBcImNsaWVudFwiKSk7XG4gICAgICB2YXIgYW5ub3RhdGlvbnMgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3BhbnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGFubiA9IHNwYW5zW2ldLl9fYW5ub3RhdGlvbjtcbiAgICAgICAgaWYgKGFubilcbiAgICAgICAgICBhbm5vdGF0aW9ucy5wdXNoKGFubik7XG4gICAgICB9XG4gICAgICBpZiAoYW5ub3RhdGlvbnMubGVuZ3RoKVxuICAgICAgICBwb3B1cFRvb2x0aXBzKGNtLCBhbm5vdGF0aW9ucywgZSk7XG4gICAgfVxuICAgIF9fbmFtZShvbk1vdXNlT3ZlciwgXCJvbk1vdXNlT3ZlclwiKTtcbiAgICBDb2RlTWlycm9yLmRlZmluZU9wdGlvbihcImxpbnRcIiwgZmFsc2UsIGZ1bmN0aW9uKGNtLCB2YWwsIG9sZCkge1xuICAgICAgaWYgKG9sZCAmJiBvbGQgIT0gQ29kZU1pcnJvci5Jbml0KSB7XG4gICAgICAgIGNsZWFyTWFya3MoY20pO1xuICAgICAgICBpZiAoY20uc3RhdGUubGludC5vcHRpb25zLmxpbnRPbkNoYW5nZSAhPT0gZmFsc2UpXG4gICAgICAgICAgY20ub2ZmKFwiY2hhbmdlXCIsIG9uQ2hhbmdlKTtcbiAgICAgICAgQ29kZU1pcnJvci5vZmYoY20uZ2V0V3JhcHBlckVsZW1lbnQoKSwgXCJtb3VzZW92ZXJcIiwgY20uc3RhdGUubGludC5vbk1vdXNlT3Zlcik7XG4gICAgICAgIGNsZWFyVGltZW91dChjbS5zdGF0ZS5saW50LnRpbWVvdXQpO1xuICAgICAgICBkZWxldGUgY20uc3RhdGUubGludDtcbiAgICAgIH1cbiAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgdmFyIGd1dHRlcnMgPSBjbS5nZXRPcHRpb24oXCJndXR0ZXJzXCIpLCBoYXNMaW50R3V0dGVyID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3V0dGVycy5sZW5ndGg7ICsraSlcbiAgICAgICAgICBpZiAoZ3V0dGVyc1tpXSA9PSBHVVRURVJfSUQpXG4gICAgICAgICAgICBoYXNMaW50R3V0dGVyID0gdHJ1ZTtcbiAgICAgICAgdmFyIHN0YXRlID0gY20uc3RhdGUubGludCA9IG5ldyBMaW50U3RhdGUoY20sIHZhbCwgaGFzTGludEd1dHRlcik7XG4gICAgICAgIGlmIChzdGF0ZS5vcHRpb25zLmxpbnRPbkNoYW5nZSlcbiAgICAgICAgICBjbS5vbihcImNoYW5nZVwiLCBvbkNoYW5nZSk7XG4gICAgICAgIGlmIChzdGF0ZS5vcHRpb25zLnRvb2x0aXBzICE9IGZhbHNlICYmIHN0YXRlLm9wdGlvbnMudG9vbHRpcHMgIT0gXCJndXR0ZXJcIilcbiAgICAgICAgICBDb2RlTWlycm9yLm9uKGNtLmdldFdyYXBwZXJFbGVtZW50KCksIFwibW91c2VvdmVyXCIsIHN0YXRlLm9uTW91c2VPdmVyKTtcbiAgICAgICAgc3RhcnRMaW50aW5nKGNtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbihcInBlcmZvcm1MaW50XCIsIGZ1bmN0aW9uKCkge1xuICAgICAgc3RhcnRMaW50aW5nKHRoaXMpO1xuICAgIH0pO1xuICB9KTtcbn0pKCk7XG52YXIgbGludCA9IGxpbnQkMi5leHBvcnRzO1xudmFyIGxpbnQkMSA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBfbWVyZ2VOYW1lc3BhY2VzKHtcbiAgX19wcm90b19fOiBudWxsLFxuICBbU3ltYm9sLnRvU3RyaW5nVGFnXTogXCJNb2R1bGVcIixcbiAgXCJkZWZhdWx0XCI6IGxpbnRcbn0sIFtsaW50JDIuZXhwb3J0c10pKTtcbmV4cG9ydCB7IGxpbnQkMSBhcyBsIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQUNBO0FBVUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/lint.es3.js\n");
|
2670 |
|
2671 | }),
|
2672 |
|
2673 | "../../graphiql-react/dist/matchbrackets.es.js":
|
2674 |
|
2675 |
|
2676 |
|
2677 |
|
2678 | (function(module, exports, __webpack_require__) {
|
2679 |
|
2680 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.m = _exports.a = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var matchbrackets$2 = {\n exports: {}\n };\n _exports.a = matchbrackets$2;\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports);\n })(function (CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) && (document.documentMode == null || document.documentMode < 8);\n var Pos = CodeMirror.Pos;\n var matching = {\n \"(\": \")>\",\n \")\": \"(<\",\n \"[\": \"]>\",\n \"]\": \"[<\",\n \"{\": \"}>\",\n \"}\": \"{<\",\n \"<\": \">>\",\n \">\": \"<<\"\n };\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/;\n }\n\n __name(bracketRegex, \"bracketRegex\");\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line),\n pos = where.ch - 1;\n var afterCursor = config && config.afterCursor;\n if (afterCursor == null) afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className);\n var re = bracketRegex(config);\n var match = !afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)] || re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && dir > 0 != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {\n from: Pos(where.line, pos),\n to: found && found.pos,\n match: found && found.ch == match.charAt(0),\n forward: dir > 0\n };\n }\n\n __name(findMatchingBracket, \"findMatchingBracket\");\n\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = config && config.maxScanLineLength || 1e4;\n var maxScanLines = config && config.maxScanLines || 1e3;\n var stack = [];\n var re = bracketRegex(config);\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1) : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1,\n end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n\n if (re.test(ch) && (style === void 0 || (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && match.charAt(1) == \">\" == dir > 0) stack.push(ch);else if (!stack.length) return {\n pos: Pos(lineNo, pos),\n ch\n };else stack.pop();\n }\n }\n }\n\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n __name(scanForBracket, \"scanForBracket\");\n\n function matchBrackets(cm, autoclear, config) {\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1e3,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [],\n ranges = cm.listSelections();\n\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {\n className: style\n }));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen) marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {\n className: style\n }));\n }\n }\n\n if (marks.length) {\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = /* @__PURE__ */__name(function () {\n cm.operation(function () {\n for (var i2 = 0; i2 < marks.length; i2++) marks[i2].clear();\n });\n }, \"clear\");\n\n if (autoclear) setTimeout(clear, 800);else return clear;\n }\n }\n\n __name(matchBrackets, \"matchBrackets\");\n\n function doMatchBrackets(cm) {\n cm.operation(function () {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n __name(doMatchBrackets, \"doMatchBrackets\");\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n __name(clearHighlighted, \"clearHighlighted\");\n\n CodeMirror.defineOption(\"matchBrackets\", false, function (cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets);\n cm.off(\"blur\", clearHighlighted);\n clearHighlighted(cm);\n }\n\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets);\n cm.on(\"blur\", clearHighlighted);\n }\n });\n CodeMirror.defineExtension(\"matchBrackets\", function () {\n matchBrackets(this, true);\n });\n CodeMirror.defineExtension(\"findMatchingBracket\", function (pos, config, oldConfig) {\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {\n strict: true\n } : null;\n } else {\n oldConfig.strict = config;\n config = oldConfig;\n }\n }\n\n return findMatchingBracket(this, pos, config);\n });\n CodeMirror.defineExtension(\"scanForBracket\", function (pos, dir, style, config) {\n return scanForBracket(this, pos, dir, style, config);\n });\n });\n })();\n\n var matchbrackets = matchbrackets$2.exports;\n var matchbrackets$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": matchbrackets\n }, [matchbrackets$2.exports]));\n _exports.m = matchbrackets$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9tYXRjaGJyYWNrZXRzLmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9tYXRjaGJyYWNrZXRzLmVzLmpzPzljODEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IGEgYXMgY29kZW1pcnJvciB9IGZyb20gXCIuL2NvZGVtaXJyb3IuZXMuanNcIjtcbmZ1bmN0aW9uIF9tZXJnZU5hbWVzcGFjZXMobiwgbSkge1xuICBtLmZvckVhY2goZnVuY3Rpb24oZSkge1xuICAgIGUgJiYgdHlwZW9mIGUgIT09IFwic3RyaW5nXCIgJiYgIUFycmF5LmlzQXJyYXkoZSkgJiYgT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgIShrIGluIG4pKSB7XG4gICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGssIGQuZ2V0ID8gZCA6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gZVtrXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUobik7XG59XG5fX25hbWUoX21lcmdlTmFtZXNwYWNlcywgXCJfbWVyZ2VOYW1lc3BhY2VzXCIpO1xudmFyIG1hdGNoYnJhY2tldHMkMiA9IHsgZXhwb3J0czoge30gfTtcbihmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcbiAgKGZ1bmN0aW9uKG1vZCkge1xuICAgIG1vZChjb2RlbWlycm9yLmV4cG9ydHMpO1xuICB9KShmdW5jdGlvbihDb2RlTWlycm9yKSB7XG4gICAgdmFyIGllX2x0OCA9IC9NU0lFIFxcZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAoZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09IG51bGwgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDwgOCk7XG4gICAgdmFyIFBvcyA9IENvZGVNaXJyb3IuUG9zO1xuICAgIHZhciBtYXRjaGluZyA9IHsgXCIoXCI6IFwiKT5cIiwgXCIpXCI6IFwiKDxcIiwgXCJbXCI6IFwiXT5cIiwgXCJdXCI6IFwiWzxcIiwgXCJ7XCI6IFwifT5cIiwgXCJ9XCI6IFwiezxcIiwgXCI8XCI6IFwiPj5cIiwgXCI+XCI6IFwiPDxcIiB9O1xuICAgIGZ1bmN0aW9uIGJyYWNrZXRSZWdleChjb25maWcpIHtcbiAgICAgIHJldHVybiBjb25maWcgJiYgY29uZmlnLmJyYWNrZXRSZWdleCB8fCAvWygpe31bXFxdXS87XG4gICAgfVxuICAgIF9fbmFtZShicmFja2V0UmVnZXgsIFwiYnJhY2tldFJlZ2V4XCIpO1xuICAgIGZ1bmN0aW9uIGZpbmRNYXRjaGluZ0JyYWNrZXQoY20sIHdoZXJlLCBjb25maWcpIHtcbiAgICAgIHZhciBsaW5lID0gY20uZ2V0TGluZUhhbmRsZSh3aGVyZS5saW5lKSwgcG9zID0gd2hlcmUuY2ggLSAxO1xuICAgICAgdmFyIGFmdGVyQ3Vyc29yID0gY29uZmlnICYmIGNvbmZpZy5hZnRlckN1cnNvcjtcbiAgICAgIGlmIChhZnRlckN1cnNvciA9PSBudWxsKVxuICAgICAgICBhZnRlckN1cnNvciA9IC8oXnwgKWNtLWZhdC1jdXJzb3IoJHwgKS8udGVzdChjbS5nZXRXcmFwcGVyRWxlbWVudCgpLmNsYXNzTmFtZSk7XG4gICAgICB2YXIgcmUgPSBicmFja2V0UmVnZXgoY29uZmlnKTtcbiAgICAgIHZhciBtYXRjaCA9ICFhZnRlckN1cnNvciAmJiBwb3MgPj0gMCAmJiByZS50ZXN0KGxpbmUudGV4dC5jaGFyQXQocG9zKSkgJiYgbWF0Y2hpbmdbbGluZS50ZXh0LmNoYXJBdChwb3MpXSB8fCByZS50ZXN0KGxpbmUudGV4dC5jaGFyQXQocG9zICsgMSkpICYmIG1hdGNoaW5nW2xpbmUudGV4dC5jaGFyQXQoKytwb3MpXTtcbiAgICAgIGlmICghbWF0Y2gpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgdmFyIGRpciA9IG1hdGNoLmNoYXJBdCgxKSA9PSBcIj5cIiA/IDEgOiAtMTtcbiAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLnN0cmljdCAmJiBkaXIgPiAwICE9IChwb3MgPT0gd2hlcmUuY2gpKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIHZhciBzdHlsZSA9IGNtLmdldFRva2VuVHlwZUF0KFBvcyh3aGVyZS5saW5lLCBwb3MgKyAxKSk7XG4gICAgICB2YXIgZm91bmQgPSBzY2FuRm9yQnJhY2tldChjbSwgUG9zKHdoZXJlLmxpbmUsIHBvcyArIChkaXIgPiAwID8gMSA6IDApKSwgZGlyLCBzdHlsZSwgY29uZmlnKTtcbiAgICAgIGlmIChmb3VuZCA9PSBudWxsKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IFBvcyh3aGVyZS5saW5lLCBwb3MpLFxuICAgICAgICB0bzogZm91bmQgJiYgZm91bmQucG9zLFxuICAgICAgICBtYXRjaDogZm91bmQgJiYgZm91bmQuY2ggPT0gbWF0Y2guY2hhckF0KDApLFxuICAgICAgICBmb3J3YXJkOiBkaXIgPiAwXG4gICAgICB9O1xuICAgIH1cbiAgICBfX25hbWUoZmluZE1hdGNoaW5nQnJhY2tldCwgXCJmaW5kTWF0Y2hpbmdCcmFja2V0XCIpO1xuICAgIGZ1bmN0aW9uIHNjYW5Gb3JCcmFja2V0KGNtLCB3aGVyZSwgZGlyLCBzdHlsZSwgY29uZmlnKSB7XG4gICAgICB2YXIgbWF4U2NhbkxlbiA9IGNvbmZpZyAmJiBjb25maWcubWF4U2NhbkxpbmVMZW5ndGggfHwgMWU0O1xuICAgICAgdmFyIG1heFNjYW5MaW5lcyA9IGNvbmZpZyAmJiBjb25maWcubWF4U2NhbkxpbmVzIHx8IDFlMztcbiAgICAgIHZhciBzdGFjayA9IFtdO1xuICAgICAgdmFyIHJlID0gYnJhY2tldFJlZ2V4KGNvbmZpZyk7XG4gICAgICB2YXIgbGluZUVuZCA9IGRpciA+IDAgPyBNYXRoLm1pbih3aGVyZS5saW5lICsgbWF4U2NhbkxpbmVzLCBjbS5sYXN0TGluZSgpICsgMSkgOiBNYXRoLm1heChjbS5maXJzdExpbmUoKSAtIDEsIHdoZXJlLmxpbmUgLSBtYXhTY2FuTGluZXMpO1xuICAgICAgZm9yICh2YXIgbGluZU5vID0gd2hlcmUubGluZTsgbGluZU5vICE9IGxpbmVFbmQ7IGxpbmVObyArPSBkaXIpIHtcbiAgICAgICAgdmFyIGxpbmUgPSBjbS5nZXRMaW5lKGxpbmVObyk7XG4gICAgICAgIGlmICghbGluZSlcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgdmFyIHBvcyA9IGRpciA+IDAgPyAwIDogbGluZS5sZW5ndGggLSAxLCBlbmQgPSBkaXIgPiAwID8gbGluZS5sZW5ndGggOiAtMTtcbiAgICAgICAgaWYgKGxpbmUubGVuZ3RoID4gbWF4U2NhbkxlbilcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKGxpbmVObyA9PSB3aGVyZS5saW5lKVxuICAgICAgICAgIHBvcyA9IHdoZXJlLmNoIC0gKGRpciA8IDAgPyAxIDogMCk7XG4gICAgICAgIGZvciAoOyBwb3MgIT0gZW5kOyBwb3MgKz0gZGlyKSB7XG4gICAgICAgICAgdmFyIGNoID0gbGluZS5jaGFyQXQocG9zKTtcbiAgICAgICAgICBpZiAocmUudGVzdChjaCkgJiYgKHN0eWxlID09PSB2b2lkIDAgfHwgKGNtLmdldFRva2VuVHlwZUF0KFBvcyhsaW5lTm8sIHBvcyArIDEpKSB8fCBcIlwiKSA9PSAoc3R5bGUgfHwgXCJcIikpKSB7XG4gICAgICAgICAgICB2YXIgbWF0Y2ggPSBtYXRjaGluZ1tjaF07XG4gICAgICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2guY2hhckF0KDEpID09IFwiPlwiID09IGRpciA+IDApXG4gICAgICAgICAgICAgIHN0YWNrLnB1c2goY2gpO1xuICAgICAgICAgICAgZWxzZSBpZiAoIXN0YWNrLmxlbmd0aClcbiAgICAgICAgICAgICAgcmV0dXJuIHsgcG9zOiBQb3MobGluZU5vLCBwb3MpLCBjaCB9O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBzdGFjay5wb3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5lTm8gLSBkaXIgPT0gKGRpciA+IDAgPyBjbS5sYXN0TGluZSgpIDogY20uZmlyc3RMaW5lKCkpID8gZmFsc2UgOiBudWxsO1xuICAgIH1cbiAgICBfX25hbWUoc2NhbkZvckJyYWNrZXQsIFwic2NhbkZvckJyYWNrZXRcIik7XG4gICAgZnVuY3Rpb24gbWF0Y2hCcmFja2V0cyhjbSwgYXV0b2NsZWFyLCBjb25maWcpIHtcbiAgICAgIHZhciBtYXhIaWdobGlnaHRMZW4gPSBjbS5zdGF0ZS5tYXRjaEJyYWNrZXRzLm1heEhpZ2hsaWdodExpbmVMZW5ndGggfHwgMWUzLCBoaWdobGlnaHROb25NYXRjaGluZyA9IGNvbmZpZyAmJiBjb25maWcuaGlnaGxpZ2h0Tm9uTWF0Y2hpbmc7XG4gICAgICB2YXIgbWFya3MgPSBbXSwgcmFuZ2VzID0gY20ubGlzdFNlbGVjdGlvbnMoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBtYXRjaCA9IHJhbmdlc1tpXS5lbXB0eSgpICYmIGZpbmRNYXRjaGluZ0JyYWNrZXQoY20sIHJhbmdlc1tpXS5oZWFkLCBjb25maWcpO1xuICAgICAgICBpZiAobWF0Y2ggJiYgKG1hdGNoLm1hdGNoIHx8IGhpZ2hsaWdodE5vbk1hdGNoaW5nICE9PSBmYWxzZSkgJiYgY20uZ2V0TGluZShtYXRjaC5mcm9tLmxpbmUpLmxlbmd0aCA8PSBtYXhIaWdobGlnaHRMZW4pIHtcbiAgICAgICAgICB2YXIgc3R5bGUgPSBtYXRjaC5tYXRjaCA/IFwiQ29kZU1pcnJvci1tYXRjaGluZ2JyYWNrZXRcIiA6IFwiQ29kZU1pcnJvci1ub25tYXRjaGluZ2JyYWNrZXRcIjtcbiAgICAgICAgICBtYXJrcy5wdXNoKGNtLm1hcmtUZXh0KG1hdGNoLmZyb20sIFBvcyhtYXRjaC5mcm9tLmxpbmUsIG1hdGNoLmZyb20uY2ggKyAxKSwgeyBjbGFzc05hbWU6IHN0eWxlIH0pKTtcbiAgICAgICAgICBpZiAobWF0Y2gudG8gJiYgY20uZ2V0TGluZShtYXRjaC50by5saW5lKS5sZW5ndGggPD0gbWF4SGlnaGxpZ2h0TGVuKVxuICAgICAgICAgICAgbWFya3MucHVzaChjbS5tYXJrVGV4dChtYXRjaC50bywgUG9zKG1hdGNoLnRvLmxpbmUsIG1hdGNoLnRvLmNoICsgMSksIHsgY2xhc3NOYW1lOiBzdHlsZSB9KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtYXJrcy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGllX2x0OCAmJiBjbS5zdGF0ZS5mb2N1c2VkKVxuICAgICAgICAgIGNtLmZvY3VzKCk7XG4gICAgICAgIHZhciBjbGVhciA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IG1hcmtzLmxlbmd0aDsgaTIrKylcbiAgICAgICAgICAgICAgbWFya3NbaTJdLmNsZWFyKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIFwiY2xlYXJcIik7XG4gICAgICAgIGlmIChhdXRvY2xlYXIpXG4gICAgICAgICAgc2V0VGltZW91dChjbGVhciwgODAwKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJldHVybiBjbGVhcjtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKG1hdGNoQnJhY2tldHMsIFwibWF0Y2hCcmFja2V0c1wiKTtcbiAgICBmdW5jdGlvbiBkb01hdGNoQnJhY2tldHMoY20pIHtcbiAgICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKGNtLnN0YXRlLm1hdGNoQnJhY2tldHMuY3VycmVudGx5SGlnaGxpZ2h0ZWQpIHtcbiAgICAgICAgICBjbS5zdGF0ZS5tYXRjaEJyYWNrZXRzLmN1cnJlbnRseUhpZ2hsaWdodGVkKCk7XG4gICAgICAgICAgY20uc3RhdGUubWF0Y2hCcmFja2V0cy5jdXJyZW50bHlIaWdobGlnaHRlZCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY20uc3RhdGUubWF0Y2hCcmFja2V0cy5jdXJyZW50bHlIaWdobGlnaHRlZCA9IG1hdGNoQnJhY2tldHMoY20sIGZhbHNlLCBjbS5zdGF0ZS5tYXRjaEJyYWNrZXRzKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBfX25hbWUoZG9NYXRjaEJyYWNrZXRzLCBcImRvTWF0Y2hCcmFja2V0c1wiKTtcbiAgICBmdW5jdGlvbiBjbGVhckhpZ2hsaWdodGVkKGNtKSB7XG4gICAgICBpZiAoY20uc3RhdGUubWF0Y2hCcmFja2V0cyAmJiBjbS5zdGF0ZS5tYXRjaEJyYWNrZXRzLmN1cnJlbnRseUhpZ2hsaWdodGVkKSB7XG4gICAgICAgIGNtLnN0YXRlLm1hdGNoQnJhY2tldHMuY3VycmVudGx5SGlnaGxpZ2h0ZWQoKTtcbiAgICAgICAgY20uc3RhdGUubWF0Y2hCcmFja2V0cy5jdXJyZW50bHlIaWdobGlnaHRlZCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShjbGVhckhpZ2hsaWdodGVkLCBcImNsZWFySGlnaGxpZ2h0ZWRcIik7XG4gICAgQ29kZU1pcnJvci5kZWZpbmVPcHRpb24oXCJtYXRjaEJyYWNrZXRzXCIsIGZhbHNlLCBmdW5jdGlvbihjbSwgdmFsLCBvbGQpIHtcbiAgICAgIGlmIChvbGQgJiYgb2xkICE9IENvZGVNaXJyb3IuSW5pdCkge1xuICAgICAgICBjbS5vZmYoXCJjdXJzb3JBY3Rpdml0eVwiLCBkb01hdGNoQnJhY2tldHMpO1xuICAgICAgICBjbS5vZmYoXCJmb2N1c1wiLCBkb01hdGNoQnJhY2tldHMpO1xuICAgICAgICBjbS5vZmYoXCJibHVyXCIsIGNsZWFySGlnaGxpZ2h0ZWQpO1xuICAgICAgICBjbGVhckhpZ2hsaWdodGVkKGNtKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgY20uc3RhdGUubWF0Y2hCcmFja2V0cyA9IHR5cGVvZiB2YWwgPT0gXCJvYmplY3RcIiA/IHZhbCA6IHt9O1xuICAgICAgICBjbS5vbihcImN1cnNvckFjdGl2aXR5XCIsIGRvTWF0Y2hCcmFja2V0cyk7XG4gICAgICAgIGNtLm9uKFwiZm9jdXNcIiwgZG9NYXRjaEJyYWNrZXRzKTtcbiAgICAgICAgY20ub24oXCJibHVyXCIsIGNsZWFySGlnaGxpZ2h0ZWQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5zaW9uKFwibWF0Y2hCcmFja2V0c1wiLCBmdW5jdGlvbigpIHtcbiAgICAgIG1hdGNoQnJhY2tldHModGhpcywgdHJ1ZSk7XG4gICAgfSk7XG4gICAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJmaW5kTWF0Y2hpbmdCcmFja2V0XCIsIGZ1bmN0aW9uKHBvcywgY29uZmlnLCBvbGRDb25maWcpIHtcbiAgICAgIGlmIChvbGRDb25maWcgfHwgdHlwZW9mIGNvbmZpZyA9PSBcImJvb2xlYW5cIikge1xuICAgICAgICBpZiAoIW9sZENvbmZpZykge1xuICAgICAgICAgIGNvbmZpZyA9IGNvbmZpZyA/IHsgc3RyaWN0OiB0cnVlIH0gOiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9sZENvbmZpZy5zdHJpY3QgPSBjb25maWc7XG4gICAgICAgICAgY29uZmlnID0gb2xkQ29uZmlnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmluZE1hdGNoaW5nQnJhY2tldCh0aGlzLCBwb3MsIGNvbmZpZyk7XG4gICAgfSk7XG4gICAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJzY2FuRm9yQnJhY2tldFwiLCBmdW5jdGlvbihwb3MsIGRpciwgc3R5bGUsIGNvbmZpZykge1xuICAgICAgcmV0dXJuIHNjYW5Gb3JCcmFja2V0KHRoaXMsIHBvcywgZGlyLCBzdHlsZSwgY29uZmlnKTtcbiAgICB9KTtcbiAgfSk7XG59KSgpO1xudmFyIG1hdGNoYnJhY2tldHMgPSBtYXRjaGJyYWNrZXRzJDIuZXhwb3J0cztcbnZhciBtYXRjaGJyYWNrZXRzJDEgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmZyZWV6ZSgvKiBAX19QVVJFX18gKi8gX21lcmdlTmFtZXNwYWNlcyh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IFwiTW9kdWxlXCIsXG4gIFwiZGVmYXVsdFwiOiBtYXRjaGJyYWNrZXRzXG59LCBbbWF0Y2hicmFja2V0cyQyLmV4cG9ydHNdKSk7XG5leHBvcnQgeyBtYXRjaGJyYWNrZXRzJDIgYXMgYSwgbWF0Y2hicmFja2V0cyQxIGFzIG0gfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/matchbrackets.es.js\n");
|
2681 |
|
2682 | }),
|
2683 |
|
2684 | "../../graphiql-react/dist/mode.es.js":
|
2685 |
|
2686 |
|
2687 |
|
2688 |
|
2689 | (function(module, exports, __webpack_require__) {
|
2690 |
|
2691 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\"), __webpack_require__(/*! ./onlineParser.es.js */ \"../../graphiql-react/dist/onlineParser.es.js\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_codemirrorEs, _graphql, _indexEs, _onlineParserEs, _react, _reactDom) {\n \"use strict\";\n\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function indent(state, textAfter) {\n var _a, _b;\n\n const levels = state.levels;\n const level = !levels || levels.length === 0 ? state.indentLevel : levels[levels.length - 1] - (((_a = this.electricInput) === null || _a === void 0 ? void 0 : _a.test(textAfter)) ? 1 : 0);\n return (level || 0) * (((_b = this.config) === null || _b === void 0 ? void 0 : _b.indentUnit) || 0);\n }\n\n __name(indent, \"indent\");\n\n const graphqlModeFactory = /* @__PURE__ */__name(config => {\n const parser = (0, _onlineParserEs.o)({\n eatWhitespace: stream => stream.eatWhile(_indexEs.i),\n lexRules: _indexEs.L,\n parseRules: _indexEs.P,\n editorConfig: {\n tabSize: config.tabSize\n }\n });\n return {\n config,\n startState: parser.startState,\n token: parser.token,\n indent,\n electricInput: /^\\s*[})\\]]/,\n fold: \"brace\",\n lineComment: \"#\",\n closeBrackets: {\n pairs: '()[]{}\"\"',\n explode: \"()[]{}\"\n }\n };\n }, \"graphqlModeFactory\");\n\n _codemirrorEs.C.defineMode(\"graphql\", graphqlModeFactory);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9tb2RlLmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9tb2RlLmVzLmpzPzQ0NzEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IEMgYXMgQ29kZU1pcnJvciB9IGZyb20gXCIuL2NvZGVtaXJyb3IuZXMuanNcIjtcbmltcG9ydCBcImdyYXBocWxcIjtcbmltcG9ydCB7IGkgYXMgaXNJZ25vcmVkLCBMIGFzIExleFJ1bGVzLCBQIGFzIFBhcnNlUnVsZXMgfSBmcm9tIFwiLi9pbmRleC5lcy5qc1wiO1xuaW1wb3J0IHsgbyBhcyBvbmxpbmVQYXJzZXIgfSBmcm9tIFwiLi9vbmxpbmVQYXJzZXIuZXMuanNcIjtcbmltcG9ydCBcInJlYWN0XCI7XG5pbXBvcnQgXCJyZWFjdC1kb21cIjtcbmZ1bmN0aW9uIGluZGVudChzdGF0ZSwgdGV4dEFmdGVyKSB7XG4gIHZhciBfYSwgX2I7XG4gIGNvbnN0IGxldmVscyA9IHN0YXRlLmxldmVscztcbiAgY29uc3QgbGV2ZWwgPSAhbGV2ZWxzIHx8IGxldmVscy5sZW5ndGggPT09IDAgPyBzdGF0ZS5pbmRlbnRMZXZlbCA6IGxldmVsc1tsZXZlbHMubGVuZ3RoIC0gMV0gLSAoKChfYSA9IHRoaXMuZWxlY3RyaWNJbnB1dCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRlc3QodGV4dEFmdGVyKSkgPyAxIDogMCk7XG4gIHJldHVybiAobGV2ZWwgfHwgMCkgKiAoKChfYiA9IHRoaXMuY29uZmlnKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuaW5kZW50VW5pdCkgfHwgMCk7XG59XG5fX25hbWUoaW5kZW50LCBcImluZGVudFwiKTtcbmNvbnN0IGdyYXBocWxNb2RlRmFjdG9yeSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoKGNvbmZpZykgPT4ge1xuICBjb25zdCBwYXJzZXIgPSBvbmxpbmVQYXJzZXIoe1xuICAgIGVhdFdoaXRlc3BhY2U6IChzdHJlYW0pID0+IHN0cmVhbS5lYXRXaGlsZShpc0lnbm9yZWQpLFxuICAgIGxleFJ1bGVzOiBMZXhSdWxlcyxcbiAgICBwYXJzZVJ1bGVzOiBQYXJzZVJ1bGVzLFxuICAgIGVkaXRvckNvbmZpZzogeyB0YWJTaXplOiBjb25maWcudGFiU2l6ZSB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGNvbmZpZyxcbiAgICBzdGFydFN0YXRlOiBwYXJzZXIuc3RhcnRTdGF0ZSxcbiAgICB0b2tlbjogcGFyc2VyLnRva2VuLFxuICAgIGluZGVudCxcbiAgICBlbGVjdHJpY0lucHV0OiAvXlxccypbfSlcXF1dLyxcbiAgICBmb2xkOiBcImJyYWNlXCIsXG4gICAgbGluZUNvbW1lbnQ6IFwiI1wiLFxuICAgIGNsb3NlQnJhY2tldHM6IHtcbiAgICAgIHBhaXJzOiAnKClbXXt9XCJcIicsXG4gICAgICBleHBsb2RlOiBcIigpW117fVwiXG4gICAgfVxuICB9O1xufSwgXCJncmFwaHFsTW9kZUZhY3RvcnlcIik7XG5Db2RlTWlycm9yLmRlZmluZU1vZGUoXCJncmFwaHFsXCIsIGdyYXBocWxNb2RlRmFjdG9yeSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBUkE7QUFhQTtBQUNBO0FBQUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/mode.es.js\n");
|
2692 |
|
2693 | }),
|
2694 |
|
2695 | "../../graphiql-react/dist/mode.es2.js":
|
2696 |
|
2697 |
|
2698 |
|
2699 |
|
2700 | (function(module, exports, __webpack_require__) {
|
2701 |
|
2702 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\"), __webpack_require__(/*! ./onlineParser.es.js */ \"../../graphiql-react/dist/onlineParser.es.js\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_codemirrorEs, _graphql, _indexEs, _onlineParserEs, _react, _reactDom) {\n \"use strict\";\n\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n _codemirrorEs.C.defineMode(\"graphql-results\", config => {\n const parser = (0, _onlineParserEs.o)({\n eatWhitespace: stream => stream.eatSpace(),\n lexRules: LexRules,\n parseRules: ParseRules,\n editorConfig: {\n tabSize: config.tabSize\n }\n });\n return {\n config,\n startState: parser.startState,\n token: parser.token,\n indent,\n electricInput: /^\\s*[}\\]]/,\n fold: \"brace\",\n closeBrackets: {\n pairs: '[]{}\"\"',\n explode: \"[]{}\"\n }\n };\n });\n\n function indent(state, textAfter) {\n var _a, _b;\n\n const levels = state.levels;\n const level = !levels || levels.length === 0 ? state.indentLevel : levels[levels.length - 1] - (((_a = this.electricInput) === null || _a === void 0 ? void 0 : _a.test(textAfter)) ? 1 : 0);\n return (level || 0) * (((_b = this.config) === null || _b === void 0 ? void 0 : _b.indentUnit) || 0);\n }\n\n __name(indent, \"indent\");\n\n const LexRules = {\n Punctuation: /^\\[|]|\\{|\\}|:|,/,\n Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n Keyword: /^true|false|null/\n };\n const ParseRules = {\n Document: [(0, _indexEs.p)(\"{\"), (0, _indexEs.l)(\"Entry\", (0, _indexEs.p)(\",\")), (0, _indexEs.p)(\"}\")],\n Entry: [(0, _indexEs.t)(\"String\", \"def\"), (0, _indexEs.p)(\":\"), \"Value\"],\n\n Value(token) {\n switch (token.kind) {\n case \"Number\":\n return \"NumberValue\";\n\n case \"String\":\n return \"StringValue\";\n\n case \"Punctuation\":\n switch (token.value) {\n case \"[\":\n return \"ListValue\";\n\n case \"{\":\n return \"ObjectValue\";\n }\n\n return null;\n\n case \"Keyword\":\n switch (token.value) {\n case \"true\":\n case \"false\":\n return \"BooleanValue\";\n\n case \"null\":\n return \"NullValue\";\n }\n\n return null;\n }\n },\n\n NumberValue: [(0, _indexEs.t)(\"Number\", \"number\")],\n StringValue: [(0, _indexEs.t)(\"String\", \"string\")],\n BooleanValue: [(0, _indexEs.t)(\"Keyword\", \"builtin\")],\n NullValue: [(0, _indexEs.t)(\"Keyword\", \"keyword\")],\n ListValue: [(0, _indexEs.p)(\"[\"), (0, _indexEs.l)(\"Value\", (0, _indexEs.p)(\",\")), (0, _indexEs.p)(\"]\")],\n ObjectValue: [(0, _indexEs.p)(\"{\"), (0, _indexEs.l)(\"ObjectField\", (0, _indexEs.p)(\",\")), (0, _indexEs.p)(\"}\")],\n ObjectField: [(0, _indexEs.t)(\"String\", \"property\"), (0, _indexEs.p)(\":\"), \"Value\"]\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9tb2RlLmVzMi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL3BhY2thZ2VzL2dyYXBoaXFsLXJlYWN0L2Rpc3QvbW9kZS5lczIuanM/NWJlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSA9ICh0YXJnZXQsIHZhbHVlKSA9PiBfX2RlZlByb3AodGFyZ2V0LCBcIm5hbWVcIiwgeyB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuaW1wb3J0IHsgQyBhcyBDb2RlTWlycm9yIH0gZnJvbSBcIi4vY29kZW1pcnJvci5lcy5qc1wiO1xuaW1wb3J0IFwiZ3JhcGhxbFwiO1xuaW1wb3J0IHsgcCwgbCBhcyBsaXN0LCB0IH0gZnJvbSBcIi4vaW5kZXguZXMuanNcIjtcbmltcG9ydCB7IG8gYXMgb25saW5lUGFyc2VyIH0gZnJvbSBcIi4vb25saW5lUGFyc2VyLmVzLmpzXCI7XG5pbXBvcnQgXCJyZWFjdFwiO1xuaW1wb3J0IFwicmVhY3QtZG9tXCI7XG5Db2RlTWlycm9yLmRlZmluZU1vZGUoXCJncmFwaHFsLXJlc3VsdHNcIiwgKGNvbmZpZykgPT4ge1xuICBjb25zdCBwYXJzZXIgPSBvbmxpbmVQYXJzZXIoe1xuICAgIGVhdFdoaXRlc3BhY2U6IChzdHJlYW0pID0+IHN0cmVhbS5lYXRTcGFjZSgpLFxuICAgIGxleFJ1bGVzOiBMZXhSdWxlcyxcbiAgICBwYXJzZVJ1bGVzOiBQYXJzZVJ1bGVzLFxuICAgIGVkaXRvckNvbmZpZzogeyB0YWJTaXplOiBjb25maWcudGFiU2l6ZSB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGNvbmZpZyxcbiAgICBzdGFydFN0YXRlOiBwYXJzZXIuc3RhcnRTdGF0ZSxcbiAgICB0b2tlbjogcGFyc2VyLnRva2VuLFxuICAgIGluZGVudCxcbiAgICBlbGVjdHJpY0lucHV0OiAvXlxccypbfVxcXV0vLFxuICAgIGZvbGQ6IFwiYnJhY2VcIixcbiAgICBjbG9zZUJyYWNrZXRzOiB7XG4gICAgICBwYWlyczogJ1tde31cIlwiJyxcbiAgICAgIGV4cGxvZGU6IFwiW117fVwiXG4gICAgfVxuICB9O1xufSk7XG5mdW5jdGlvbiBpbmRlbnQoc3RhdGUsIHRleHRBZnRlcikge1xuICB2YXIgX2EsIF9iO1xuICBjb25zdCBsZXZlbHMgPSBzdGF0ZS5sZXZlbHM7XG4gIGNvbnN0IGxldmVsID0gIWxldmVscyB8fCBsZXZlbHMubGVuZ3RoID09PSAwID8gc3RhdGUuaW5kZW50TGV2ZWwgOiBsZXZlbHNbbGV2ZWxzLmxlbmd0aCAtIDFdIC0gKCgoX2EgPSB0aGlzLmVsZWN0cmljSW5wdXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXN0KHRleHRBZnRlcikpID8gMSA6IDApO1xuICByZXR1cm4gKGxldmVsIHx8IDApICogKCgoX2IgPSB0aGlzLmNvbmZpZykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmluZGVudFVuaXQpIHx8IDApO1xufVxuX19uYW1lKGluZGVudCwgXCJpbmRlbnRcIik7XG5jb25zdCBMZXhSdWxlcyA9IHtcbiAgUHVuY3R1YXRpb246IC9eXFxbfF18XFx7fFxcfXw6fCwvLFxuICBOdW1iZXI6IC9eLT8oPzowfCg/OlsxLTldWzAtOV0qKSkoPzpcXC5bMC05XSopPyg/OltlRV1bKy1dP1swLTldKyk/LyxcbiAgU3RyaW5nOiAvXlwiKD86W15cIlxcXFxdfFxcXFwoPzpcInxcXC98XFxcXHxifGZ8bnxyfHR8dVswLTlhLWZBLUZdezR9KSkqXCI/LyxcbiAgS2V5d29yZDogL150cnVlfGZhbHNlfG51bGwvXG59O1xuY29uc3QgUGFyc2VSdWxlcyA9IHtcbiAgRG9jdW1lbnQ6IFtwKFwie1wiKSwgbGlzdChcIkVudHJ5XCIsIHAoXCIsXCIpKSwgcChcIn1cIildLFxuICBFbnRyeTogW3QoXCJTdHJpbmdcIiwgXCJkZWZcIiksIHAoXCI6XCIpLCBcIlZhbHVlXCJdLFxuICBWYWx1ZSh0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4ua2luZCkge1xuICAgICAgY2FzZSBcIk51bWJlclwiOlxuICAgICAgICByZXR1cm4gXCJOdW1iZXJWYWx1ZVwiO1xuICAgICAgY2FzZSBcIlN0cmluZ1wiOlxuICAgICAgICByZXR1cm4gXCJTdHJpbmdWYWx1ZVwiO1xuICAgICAgY2FzZSBcIlB1bmN0dWF0aW9uXCI6XG4gICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgICBjYXNlIFwiW1wiOlxuICAgICAgICAgICAgcmV0dXJuIFwiTGlzdFZhbHVlXCI7XG4gICAgICAgICAgY2FzZSBcIntcIjpcbiAgICAgICAgICAgIHJldHVybiBcIk9iamVjdFZhbHVlXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjYXNlIFwiS2V5d29yZFwiOlxuICAgICAgICBzd2l0Y2ggKHRva2VuLnZhbHVlKSB7XG4gICAgICAgICAgY2FzZSBcInRydWVcIjpcbiAgICAgICAgICBjYXNlIFwiZmFsc2VcIjpcbiAgICAgICAgICAgIHJldHVybiBcIkJvb2xlYW5WYWx1ZVwiO1xuICAgICAgICAgIGNhc2UgXCJudWxsXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJOdWxsVmFsdWVcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0sXG4gIE51bWJlclZhbHVlOiBbdChcIk51bWJlclwiLCBcIm51bWJlclwiKV0sXG4gIFN0cmluZ1ZhbHVlOiBbdChcIlN0cmluZ1wiLCBcInN0cmluZ1wiKV0sXG4gIEJvb2xlYW5WYWx1ZTogW3QoXCJLZXl3b3JkXCIsIFwiYnVpbHRpblwiKV0sXG4gIE51bGxWYWx1ZTogW3QoXCJLZXl3b3JkXCIsIFwia2V5d29yZFwiKV0sXG4gIExpc3RWYWx1ZTogW3AoXCJbXCIpLCBsaXN0KFwiVmFsdWVcIiwgcChcIixcIikpLCBwKFwiXVwiKV0sXG4gIE9iamVjdFZhbHVlOiBbcChcIntcIiksIGxpc3QoXCJPYmplY3RGaWVsZFwiLCBwKFwiLFwiKSksIHAoXCJ9XCIpXSxcbiAgT2JqZWN0RmllbGQ6IFt0KFwiU3RyaW5nXCIsIFwicHJvcGVydHlcIiksIHAoXCI6XCIpLCBcIlZhbHVlXCJdXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBUEE7QUFZQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUpBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUxBO0FBQ0E7QUFNQTtBQXJCQTtBQXVCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFsQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/mode.es2.js\n");
|
2703 |
|
2704 | }),
|
2705 |
|
2706 | "../../graphiql-react/dist/mode.es3.js":
|
2707 |
|
2708 |
|
2709 |
|
2710 |
|
2711 | (function(module, exports, __webpack_require__) {
|
2712 |
|
2713 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\"), __webpack_require__(/*! ./onlineParser.es.js */ \"../../graphiql-react/dist/onlineParser.es.js\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_codemirrorEs, _graphql, _indexEs, _onlineParserEs, _react, _reactDom) {\n \"use strict\";\n\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n _codemirrorEs.C.defineMode(\"graphql-variables\", config => {\n const parser = (0, _onlineParserEs.o)({\n eatWhitespace: stream => stream.eatSpace(),\n lexRules: LexRules,\n parseRules: ParseRules,\n editorConfig: {\n tabSize: config.tabSize\n }\n });\n return {\n config,\n startState: parser.startState,\n token: parser.token,\n indent,\n electricInput: /^\\s*[}\\]]/,\n fold: \"brace\",\n closeBrackets: {\n pairs: '[]{}\"\"',\n explode: \"[]{}\"\n }\n };\n });\n\n function indent(state, textAfter) {\n var _a, _b;\n\n const levels = state.levels;\n const level = !levels || levels.length === 0 ? state.indentLevel : levels[levels.length - 1] - (((_a = this.electricInput) === null || _a === void 0 ? void 0 : _a.test(textAfter)) ? 1 : 0);\n return (level || 0) * (((_b = this.config) === null || _b === void 0 ? void 0 : _b.indentUnit) || 0);\n }\n\n __name(indent, \"indent\");\n\n const LexRules = {\n Punctuation: /^\\[|]|\\{|\\}|:|,/,\n Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n Keyword: /^true|false|null/\n };\n const ParseRules = {\n Document: [(0, _indexEs.p)(\"{\"), (0, _indexEs.l)(\"Variable\", (0, _indexEs.o)((0, _indexEs.p)(\",\"))), (0, _indexEs.p)(\"}\")],\n Variable: [namedKey(\"variable\"), (0, _indexEs.p)(\":\"), \"Value\"],\n\n Value(token) {\n switch (token.kind) {\n case \"Number\":\n return \"NumberValue\";\n\n case \"String\":\n return \"StringValue\";\n\n case \"Punctuation\":\n switch (token.value) {\n case \"[\":\n return \"ListValue\";\n\n case \"{\":\n return \"ObjectValue\";\n }\n\n return null;\n\n case \"Keyword\":\n switch (token.value) {\n case \"true\":\n case \"false\":\n return \"BooleanValue\";\n\n case \"null\":\n return \"NullValue\";\n }\n\n return null;\n }\n },\n\n NumberValue: [(0, _indexEs.t)(\"Number\", \"number\")],\n StringValue: [(0, _indexEs.t)(\"String\", \"string\")],\n BooleanValue: [(0, _indexEs.t)(\"Keyword\", \"builtin\")],\n NullValue: [(0, _indexEs.t)(\"Keyword\", \"keyword\")],\n ListValue: [(0, _indexEs.p)(\"[\"), (0, _indexEs.l)(\"Value\", (0, _indexEs.o)((0, _indexEs.p)(\",\"))), (0, _indexEs.p)(\"]\")],\n ObjectValue: [(0, _indexEs.p)(\"{\"), (0, _indexEs.l)(\"ObjectField\", (0, _indexEs.o)((0, _indexEs.p)(\",\"))), (0, _indexEs.p)(\"}\")],\n ObjectField: [namedKey(\"attribute\"), (0, _indexEs.p)(\":\"), \"Value\"]\n };\n\n function namedKey(style) {\n return {\n style,\n match: token => token.kind === \"String\",\n\n update(state, token) {\n state.name = token.value.slice(1, -1);\n }\n\n };\n }\n\n __name(namedKey, \"namedKey\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9tb2RlLmVzMy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL3BhY2thZ2VzL2dyYXBoaXFsLXJlYWN0L2Rpc3QvbW9kZS5lczMuanM/ZDhhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSA9ICh0YXJnZXQsIHZhbHVlKSA9PiBfX2RlZlByb3AodGFyZ2V0LCBcIm5hbWVcIiwgeyB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuaW1wb3J0IHsgQyBhcyBDb2RlTWlycm9yIH0gZnJvbSBcIi4vY29kZW1pcnJvci5lcy5qc1wiO1xuaW1wb3J0IFwiZ3JhcGhxbFwiO1xuaW1wb3J0IHsgcCwgbCBhcyBsaXN0LCBvIGFzIG9wdCwgdCB9IGZyb20gXCIuL2luZGV4LmVzLmpzXCI7XG5pbXBvcnQgeyBvIGFzIG9ubGluZVBhcnNlciB9IGZyb20gXCIuL29ubGluZVBhcnNlci5lcy5qc1wiO1xuaW1wb3J0IFwicmVhY3RcIjtcbmltcG9ydCBcInJlYWN0LWRvbVwiO1xuQ29kZU1pcnJvci5kZWZpbmVNb2RlKFwiZ3JhcGhxbC12YXJpYWJsZXNcIiwgKGNvbmZpZykgPT4ge1xuICBjb25zdCBwYXJzZXIgPSBvbmxpbmVQYXJzZXIoe1xuICAgIGVhdFdoaXRlc3BhY2U6IChzdHJlYW0pID0+IHN0cmVhbS5lYXRTcGFjZSgpLFxuICAgIGxleFJ1bGVzOiBMZXhSdWxlcyxcbiAgICBwYXJzZVJ1bGVzOiBQYXJzZVJ1bGVzLFxuICAgIGVkaXRvckNvbmZpZzogeyB0YWJTaXplOiBjb25maWcudGFiU2l6ZSB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGNvbmZpZyxcbiAgICBzdGFydFN0YXRlOiBwYXJzZXIuc3RhcnRTdGF0ZSxcbiAgICB0b2tlbjogcGFyc2VyLnRva2VuLFxuICAgIGluZGVudCxcbiAgICBlbGVjdHJpY0lucHV0OiAvXlxccypbfVxcXV0vLFxuICAgIGZvbGQ6IFwiYnJhY2VcIixcbiAgICBjbG9zZUJyYWNrZXRzOiB7XG4gICAgICBwYWlyczogJ1tde31cIlwiJyxcbiAgICAgIGV4cGxvZGU6IFwiW117fVwiXG4gICAgfVxuICB9O1xufSk7XG5mdW5jdGlvbiBpbmRlbnQoc3RhdGUsIHRleHRBZnRlcikge1xuICB2YXIgX2EsIF9iO1xuICBjb25zdCBsZXZlbHMgPSBzdGF0ZS5sZXZlbHM7XG4gIGNvbnN0IGxldmVsID0gIWxldmVscyB8fCBsZXZlbHMubGVuZ3RoID09PSAwID8gc3RhdGUuaW5kZW50TGV2ZWwgOiBsZXZlbHNbbGV2ZWxzLmxlbmd0aCAtIDFdIC0gKCgoX2EgPSB0aGlzLmVsZWN0cmljSW5wdXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXN0KHRleHRBZnRlcikpID8gMSA6IDApO1xuICByZXR1cm4gKGxldmVsIHx8IDApICogKCgoX2IgPSB0aGlzLmNvbmZpZykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmluZGVudFVuaXQpIHx8IDApO1xufVxuX19uYW1lKGluZGVudCwgXCJpbmRlbnRcIik7XG5jb25zdCBMZXhSdWxlcyA9IHtcbiAgUHVuY3R1YXRpb246IC9eXFxbfF18XFx7fFxcfXw6fCwvLFxuICBOdW1iZXI6IC9eLT8oPzowfCg/OlsxLTldWzAtOV0qKSkoPzpcXC5bMC05XSopPyg/OltlRV1bKy1dP1swLTldKyk/LyxcbiAgU3RyaW5nOiAvXlwiKD86W15cIlxcXFxdfFxcXFwoPzpcInxcXC98XFxcXHxifGZ8bnxyfHR8dVswLTlhLWZBLUZdezR9KSkqXCI/LyxcbiAgS2V5d29yZDogL150cnVlfGZhbHNlfG51bGwvXG59O1xuY29uc3QgUGFyc2VSdWxlcyA9IHtcbiAgRG9jdW1lbnQ6IFtwKFwie1wiKSwgbGlzdChcIlZhcmlhYmxlXCIsIG9wdChwKFwiLFwiKSkpLCBwKFwifVwiKV0sXG4gIFZhcmlhYmxlOiBbbmFtZWRLZXkoXCJ2YXJpYWJsZVwiKSwgcChcIjpcIiksIFwiVmFsdWVcIl0sXG4gIFZhbHVlKHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi5raW5kKSB7XG4gICAgICBjYXNlIFwiTnVtYmVyXCI6XG4gICAgICAgIHJldHVybiBcIk51bWJlclZhbHVlXCI7XG4gICAgICBjYXNlIFwiU3RyaW5nXCI6XG4gICAgICAgIHJldHVybiBcIlN0cmluZ1ZhbHVlXCI7XG4gICAgICBjYXNlIFwiUHVuY3R1YXRpb25cIjpcbiAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICAgIGNhc2UgXCJbXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJMaXN0VmFsdWVcIjtcbiAgICAgICAgICBjYXNlIFwie1wiOlxuICAgICAgICAgICAgcmV0dXJuIFwiT2JqZWN0VmFsdWVcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNhc2UgXCJLZXl3b3JkXCI6XG4gICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgICBjYXNlIFwidHJ1ZVwiOlxuICAgICAgICAgIGNhc2UgXCJmYWxzZVwiOlxuICAgICAgICAgICAgcmV0dXJuIFwiQm9vbGVhblZhbHVlXCI7XG4gICAgICAgICAgY2FzZSBcIm51bGxcIjpcbiAgICAgICAgICAgIHJldHVybiBcIk51bGxWYWx1ZVwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSxcbiAgTnVtYmVyVmFsdWU6IFt0KFwiTnVtYmVyXCIsIFwibnVtYmVyXCIpXSxcbiAgU3RyaW5nVmFsdWU6IFt0KFwiU3RyaW5nXCIsIFwic3RyaW5nXCIpXSxcbiAgQm9vbGVhblZhbHVlOiBbdChcIktleXdvcmRcIiwgXCJidWlsdGluXCIpXSxcbiAgTnVsbFZhbHVlOiBbdChcIktleXdvcmRcIiwgXCJrZXl3b3JkXCIpXSxcbiAgTGlzdFZhbHVlOiBbcChcIltcIiksIGxpc3QoXCJWYWx1ZVwiLCBvcHQocChcIixcIikpKSwgcChcIl1cIildLFxuICBPYmplY3RWYWx1ZTogW3AoXCJ7XCIpLCBsaXN0KFwiT2JqZWN0RmllbGRcIiwgb3B0KHAoXCIsXCIpKSksIHAoXCJ9XCIpXSxcbiAgT2JqZWN0RmllbGQ6IFtuYW1lZEtleShcImF0dHJpYnV0ZVwiKSwgcChcIjpcIiksIFwiVmFsdWVcIl1cbn07XG5mdW5jdGlvbiBuYW1lZEtleShzdHlsZSkge1xuICByZXR1cm4ge1xuICAgIHN0eWxlLFxuICAgIG1hdGNoOiAodG9rZW4pID0+IHRva2VuLmtpbmQgPT09IFwiU3RyaW5nXCIsXG4gICAgdXBkYXRlKHN0YXRlLCB0b2tlbikge1xuICAgICAgc3RhdGUubmFtZSA9IHRva2VuLnZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICB9XG4gIH07XG59XG5fX25hbWUobmFtZWRLZXksIFwibmFtZWRLZXlcIik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFQQTtBQVlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBTEE7QUFDQTtBQU1BO0FBckJBO0FBdUJBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWxDQTtBQUNBO0FBbUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBT0E7QUFDQTtBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/mode.es3.js\n");
|
2714 |
|
2715 | }),
|
2716 |
|
2717 | "../../graphiql-react/dist/onlineParser.es.js":
|
2718 |
|
2719 |
|
2720 |
|
2721 |
|
2722 | (function(module, exports, __webpack_require__) {
|
2723 |
|
2724 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./index.es.js */ \"../../graphiql-react/dist/index.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _indexEs, _graphql) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.o = onlineParser;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function onlineParser() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n eatWhitespace: stream => stream.eatWhile(_indexEs.i),\n lexRules: _indexEs.L,\n parseRules: _indexEs.P,\n editorConfig: {}\n };\n return {\n startState() {\n const initialState = {\n level: 0,\n step: 0,\n name: null,\n kind: null,\n type: null,\n rule: null,\n needsSeparator: false,\n prevState: null\n };\n pushRule(options.parseRules, initialState, _graphql.Kind.DOCUMENT);\n return initialState;\n },\n\n token(stream, state) {\n return getToken(stream, state, options);\n }\n\n };\n }\n\n __name(onlineParser, \"onlineParser\");\n\n function getToken(stream, state, options) {\n var _a;\n\n if (state.inBlockstring) {\n if (stream.match(/.*\"\"\"/)) {\n state.inBlockstring = false;\n return \"string\";\n } else {\n stream.skipToEnd();\n return \"string\";\n }\n }\n\n const {\n lexRules,\n parseRules,\n eatWhitespace,\n editorConfig\n } = options;\n\n if (state.rule && state.rule.length === 0) {\n popRule(state);\n } else if (state.needsAdvance) {\n state.needsAdvance = false;\n advanceRule(state, true);\n }\n\n if (stream.sol()) {\n const tabSize = (editorConfig === null || editorConfig === void 0 ? void 0 : editorConfig.tabSize) || 2;\n state.indentLevel = Math.floor(stream.indentation() / tabSize);\n }\n\n if (eatWhitespace(stream)) {\n return \"ws\";\n }\n\n const token = lex(lexRules, stream);\n\n if (!token) {\n const matchedSomething = stream.match(/\\S+/);\n\n if (!matchedSomething) {\n stream.match(/\\s/);\n }\n\n pushRule(SpecialParseRules, state, \"Invalid\");\n return \"invalidchar\";\n }\n\n if (token.kind === \"Comment\") {\n pushRule(SpecialParseRules, state, \"Comment\");\n return \"comment\";\n }\n\n const backupState = assign({}, state);\n\n if (token.kind === \"Punctuation\") {\n if (/^[{([]/.test(token.value)) {\n if (state.indentLevel !== void 0) {\n state.levels = (state.levels || []).concat(state.indentLevel + 1);\n }\n } else if (/^[})\\]]/.test(token.value)) {\n const levels = state.levels = (state.levels || []).slice(0, -1);\n\n if (state.indentLevel) {\n if (levels.length > 0 && levels[levels.length - 1] < state.indentLevel) {\n state.indentLevel = levels[levels.length - 1];\n }\n }\n }\n }\n\n while (state.rule) {\n let expected = typeof state.rule === \"function\" ? state.step === 0 ? state.rule(token, stream) : null : state.rule[state.step];\n\n if (state.needsSeparator) {\n expected = expected === null || expected === void 0 ? void 0 : expected.separator;\n }\n\n if (expected) {\n if (expected.ofRule) {\n expected = expected.ofRule;\n }\n\n if (typeof expected === \"string\") {\n pushRule(parseRules, state, expected);\n continue;\n }\n\n if ((_a = expected.match) === null || _a === void 0 ? void 0 : _a.call(expected, token)) {\n if (expected.update) {\n expected.update(state, token);\n }\n\n if (token.kind === \"Punctuation\") {\n advanceRule(state, true);\n } else {\n state.needsAdvance = true;\n }\n\n return expected.style;\n }\n }\n\n unsuccessful(state);\n }\n\n assign(state, backupState);\n pushRule(SpecialParseRules, state, \"Invalid\");\n return \"invalidchar\";\n }\n\n __name(getToken, \"getToken\");\n\n function assign(to, from) {\n const keys = Object.keys(from);\n\n for (let i = 0; i < keys.length; i++) {\n to[keys[i]] = from[keys[i]];\n }\n\n return to;\n }\n\n __name(assign, \"assign\");\n\n const SpecialParseRules = {\n Invalid: [],\n Comment: []\n };\n\n function pushRule(rules, state, ruleKind) {\n if (!rules[ruleKind]) {\n throw new TypeError(\"Unknown rule: \" + ruleKind);\n }\n\n state.prevState = Object.assign({}, state);\n state.kind = ruleKind;\n state.name = null;\n state.type = null;\n state.rule = rules[ruleKind];\n state.step = 0;\n state.needsSeparator = false;\n }\n\n __name(pushRule, \"pushRule\");\n\n function popRule(state) {\n if (!state.prevState) {\n return;\n }\n\n state.kind = state.prevState.kind;\n state.name = state.prevState.name;\n state.type = state.prevState.type;\n state.rule = state.prevState.rule;\n state.step = state.prevState.step;\n state.needsSeparator = state.prevState.needsSeparator;\n state.prevState = state.prevState.prevState;\n }\n\n __name(popRule, \"popRule\");\n\n function advanceRule(state, successful) {\n var _a;\n\n if (isList(state) && state.rule) {\n const step = state.rule[state.step];\n\n if (step.separator) {\n const separator = step.separator;\n state.needsSeparator = !state.needsSeparator;\n\n if (!state.needsSeparator && separator.ofRule) {\n return;\n }\n }\n\n if (successful) {\n return;\n }\n }\n\n state.needsSeparator = false;\n state.step++;\n\n while (state.rule && !(Array.isArray(state.rule) && state.step < state.rule.length)) {\n popRule(state);\n\n if (state.rule) {\n if (isList(state)) {\n if ((_a = state.rule) === null || _a === void 0 ? void 0 : _a[state.step].separator) {\n state.needsSeparator = !state.needsSeparator;\n }\n } else {\n state.needsSeparator = false;\n state.step++;\n }\n }\n }\n }\n\n __name(advanceRule, \"advanceRule\");\n\n function isList(state) {\n const step = Array.isArray(state.rule) && typeof state.rule[state.step] !== \"string\" && state.rule[state.step];\n return step && step.isList;\n }\n\n __name(isList, \"isList\");\n\n function unsuccessful(state) {\n while (state.rule && !(Array.isArray(state.rule) && state.rule[state.step].ofRule)) {\n popRule(state);\n }\n\n if (state.rule) {\n advanceRule(state, false);\n }\n }\n\n __name(unsuccessful, \"unsuccessful\");\n\n function lex(lexRules, stream) {\n const kinds = Object.keys(lexRules);\n\n for (let i = 0; i < kinds.length; i++) {\n const match = stream.match(lexRules[kinds[i]]);\n\n if (match && match instanceof Array) {\n return {\n kind: kinds[i],\n value: match[0]\n };\n }\n }\n }\n\n __name(lex, \"lex\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9vbmxpbmVQYXJzZXIuZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9wYWNrYWdlcy9ncmFwaGlxbC1yZWFjdC9kaXN0L29ubGluZVBhcnNlci5lcy5qcz9kNGM0Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lID0gKHRhcmdldCwgdmFsdWUpID0+IF9fZGVmUHJvcCh0YXJnZXQsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG5pbXBvcnQgeyBpIGFzIGlzSWdub3JlZCwgTCBhcyBMZXhSdWxlcywgUCBhcyBQYXJzZVJ1bGVzIH0gZnJvbSBcIi4vaW5kZXguZXMuanNcIjtcbmltcG9ydCB7IEtpbmQgfSBmcm9tIFwiZ3JhcGhxbFwiO1xuZnVuY3Rpb24gb25saW5lUGFyc2VyKG9wdGlvbnMgPSB7XG4gIGVhdFdoaXRlc3BhY2U6IChzdHJlYW0pID0+IHN0cmVhbS5lYXRXaGlsZShpc0lnbm9yZWQpLFxuICBsZXhSdWxlczogTGV4UnVsZXMsXG4gIHBhcnNlUnVsZXM6IFBhcnNlUnVsZXMsXG4gIGVkaXRvckNvbmZpZzoge31cbn0pIHtcbiAgcmV0dXJuIHtcbiAgICBzdGFydFN0YXRlKCkge1xuICAgICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgICBsZXZlbDogMCxcbiAgICAgICAgc3RlcDogMCxcbiAgICAgICAgbmFtZTogbnVsbCxcbiAgICAgICAga2luZDogbnVsbCxcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgICAgcnVsZTogbnVsbCxcbiAgICAgICAgbmVlZHNTZXBhcmF0b3I6IGZhbHNlLFxuICAgICAgICBwcmV2U3RhdGU6IG51bGxcbiAgICAgIH07XG4gICAgICBwdXNoUnVsZShvcHRpb25zLnBhcnNlUnVsZXMsIGluaXRpYWxTdGF0ZSwgS2luZC5ET0NVTUVOVCk7XG4gICAgICByZXR1cm4gaW5pdGlhbFN0YXRlO1xuICAgIH0sXG4gICAgdG9rZW4oc3RyZWFtLCBzdGF0ZSkge1xuICAgICAgcmV0dXJuIGdldFRva2VuKHN0cmVhbSwgc3RhdGUsIG9wdGlvbnMpO1xuICAgIH1cbiAgfTtcbn1cbl9fbmFtZShvbmxpbmVQYXJzZXIsIFwib25saW5lUGFyc2VyXCIpO1xuZnVuY3Rpb24gZ2V0VG9rZW4oc3RyZWFtLCBzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2E7XG4gIGlmIChzdGF0ZS5pbkJsb2Nrc3RyaW5nKSB7XG4gICAgaWYgKHN0cmVhbS5tYXRjaCgvLipcIlwiXCIvKSkge1xuICAgICAgc3RhdGUuaW5CbG9ja3N0cmluZyA9IGZhbHNlO1xuICAgICAgcmV0dXJuIFwic3RyaW5nXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmVhbS5za2lwVG9FbmQoKTtcbiAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIH1cbiAgfVxuICBjb25zdCB7IGxleFJ1bGVzLCBwYXJzZVJ1bGVzLCBlYXRXaGl0ZXNwYWNlLCBlZGl0b3JDb25maWcgfSA9IG9wdGlvbnM7XG4gIGlmIChzdGF0ZS5ydWxlICYmIHN0YXRlLnJ1bGUubGVuZ3RoID09PSAwKSB7XG4gICAgcG9wUnVsZShzdGF0ZSk7XG4gIH0gZWxzZSBpZiAoc3RhdGUubmVlZHNBZHZhbmNlKSB7XG4gICAgc3RhdGUubmVlZHNBZHZhbmNlID0gZmFsc2U7XG4gICAgYWR2YW5jZVJ1bGUoc3RhdGUsIHRydWUpO1xuICB9XG4gIGlmIChzdHJlYW0uc29sKCkpIHtcbiAgICBjb25zdCB0YWJTaXplID0gKGVkaXRvckNvbmZpZyA9PT0gbnVsbCB8fCBlZGl0b3JDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVkaXRvckNvbmZpZy50YWJTaXplKSB8fCAyO1xuICAgIHN0YXRlLmluZGVudExldmVsID0gTWF0aC5mbG9vcihzdHJlYW0uaW5kZW50YXRpb24oKSAvIHRhYlNpemUpO1xuICB9XG4gIGlmIChlYXRXaGl0ZXNwYWNlKHN0cmVhbSkpIHtcbiAgICByZXR1cm4gXCJ3c1wiO1xuICB9XG4gIGNvbnN0IHRva2VuID0gbGV4KGxleFJ1bGVzLCBzdHJlYW0pO1xuICBpZiAoIXRva2VuKSB7XG4gICAgY29uc3QgbWF0Y2hlZFNvbWV0aGluZyA9IHN0cmVhbS5tYXRjaCgvXFxTKy8pO1xuICAgIGlmICghbWF0Y2hlZFNvbWV0aGluZykge1xuICAgICAgc3RyZWFtLm1hdGNoKC9cXHMvKTtcbiAgICB9XG4gICAgcHVzaFJ1bGUoU3BlY2lhbFBhcnNlUnVsZXMsIHN0YXRlLCBcIkludmFsaWRcIik7XG4gICAgcmV0dXJuIFwiaW52YWxpZGNoYXJcIjtcbiAgfVxuICBpZiAodG9rZW4ua2luZCA9PT0gXCJDb21tZW50XCIpIHtcbiAgICBwdXNoUnVsZShTcGVjaWFsUGFyc2VSdWxlcywgc3RhdGUsIFwiQ29tbWVudFwiKTtcbiAgICByZXR1cm4gXCJjb21tZW50XCI7XG4gIH1cbiAgY29uc3QgYmFja3VwU3RhdGUgPSBhc3NpZ24oe30sIHN0YXRlKTtcbiAgaWYgKHRva2VuLmtpbmQgPT09IFwiUHVuY3R1YXRpb25cIikge1xuICAgIGlmICgvXlt7KFtdLy50ZXN0KHRva2VuLnZhbHVlKSkge1xuICAgICAgaWYgKHN0YXRlLmluZGVudExldmVsICE9PSB2b2lkIDApIHtcbiAgICAgICAgc3RhdGUubGV2ZWxzID0gKHN0YXRlLmxldmVscyB8fCBbXSkuY29uY2F0KHN0YXRlLmluZGVudExldmVsICsgMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgvXlt9KVxcXV0vLnRlc3QodG9rZW4udmFsdWUpKSB7XG4gICAgICBjb25zdCBsZXZlbHMgPSBzdGF0ZS5sZXZlbHMgPSAoc3RhdGUubGV2ZWxzIHx8IFtdKS5zbGljZSgwLCAtMSk7XG4gICAgICBpZiAoc3RhdGUuaW5kZW50TGV2ZWwpIHtcbiAgICAgICAgaWYgKGxldmVscy5sZW5ndGggPiAwICYmIGxldmVsc1tsZXZlbHMubGVuZ3RoIC0gMV0gPCBzdGF0ZS5pbmRlbnRMZXZlbCkge1xuICAgICAgICAgIHN0YXRlLmluZGVudExldmVsID0gbGV2ZWxzW2xldmVscy5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB3aGlsZSAoc3RhdGUucnVsZSkge1xuICAgIGxldCBleHBlY3RlZCA9IHR5cGVvZiBzdGF0ZS5ydWxlID09PSBcImZ1bmN0aW9uXCIgPyBzdGF0ZS5zdGVwID09PSAwID8gc3RhdGUucnVsZSh0b2tlbiwgc3RyZWFtKSA6IG51bGwgOiBzdGF0ZS5ydWxlW3N0YXRlLnN0ZXBdO1xuICAgIGlmIChzdGF0ZS5uZWVkc1NlcGFyYXRvcikge1xuICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZCA9PT0gbnVsbCB8fCBleHBlY3RlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwZWN0ZWQuc2VwYXJhdG9yO1xuICAgIH1cbiAgICBpZiAoZXhwZWN0ZWQpIHtcbiAgICAgIGlmIChleHBlY3RlZC5vZlJ1bGUpIHtcbiAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5vZlJ1bGU7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGV4cGVjdGVkID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHB1c2hSdWxlKHBhcnNlUnVsZXMsIHN0YXRlLCBleHBlY3RlZCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKChfYSA9IGV4cGVjdGVkLm1hdGNoKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChleHBlY3RlZCwgdG9rZW4pKSB7XG4gICAgICAgIGlmIChleHBlY3RlZC51cGRhdGUpIHtcbiAgICAgICAgICBleHBlY3RlZC51cGRhdGUoc3RhdGUsIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4ua2luZCA9PT0gXCJQdW5jdHVhdGlvblwiKSB7XG4gICAgICAgICAgYWR2YW5jZVJ1bGUoc3RhdGUsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLm5lZWRzQWR2YW5jZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV4cGVjdGVkLnN0eWxlO1xuICAgICAgfVxuICAgIH1cbiAgICB1bnN1Y2Nlc3NmdWwoc3RhdGUpO1xuICB9XG4gIGFzc2lnbihzdGF0ZSwgYmFja3VwU3RhdGUpO1xuICBwdXNoUnVsZShTcGVjaWFsUGFyc2VSdWxlcywgc3RhdGUsIFwiSW52YWxpZFwiKTtcbiAgcmV0dXJuIFwiaW52YWxpZGNoYXJcIjtcbn1cbl9fbmFtZShnZXRUb2tlbiwgXCJnZXRUb2tlblwiKTtcbmZ1bmN0aW9uIGFzc2lnbih0bywgZnJvbSkge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZnJvbSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHRvW2tleXNbaV1dID0gZnJvbVtrZXlzW2ldXTtcbiAgfVxuICByZXR1cm4gdG87XG59XG5fX25hbWUoYXNzaWduLCBcImFzc2lnblwiKTtcbmNvbnN0IFNwZWNpYWxQYXJzZVJ1bGVzID0ge1xuICBJbnZhbGlkOiBbXSxcbiAgQ29tbWVudDogW11cbn07XG5mdW5jdGlvbiBwdXNoUnVsZShydWxlcywgc3RhdGUsIHJ1bGVLaW5kKSB7XG4gIGlmICghcnVsZXNbcnVsZUtpbmRdKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gcnVsZTogXCIgKyBydWxlS2luZCk7XG4gIH1cbiAgc3RhdGUucHJldlN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpO1xuICBzdGF0ZS5raW5kID0gcnVsZUtpbmQ7XG4gIHN0YXRlLm5hbWUgPSBudWxsO1xuICBzdGF0ZS50eXBlID0gbnVsbDtcbiAgc3RhdGUucnVsZSA9IHJ1bGVzW3J1bGVLaW5kXTtcbiAgc3RhdGUuc3RlcCA9IDA7XG4gIHN0YXRlLm5lZWRzU2VwYXJhdG9yID0gZmFsc2U7XG59XG5fX25hbWUocHVzaFJ1bGUsIFwicHVzaFJ1bGVcIik7XG5mdW5jdGlvbiBwb3BSdWxlKHN0YXRlKSB7XG4gIGlmICghc3RhdGUucHJldlN0YXRlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHN0YXRlLmtpbmQgPSBzdGF0ZS5wcmV2U3RhdGUua2luZDtcbiAgc3RhdGUubmFtZSA9IHN0YXRlLnByZXZTdGF0ZS5uYW1lO1xuICBzdGF0ZS50eXBlID0gc3RhdGUucHJldlN0YXRlLnR5cGU7XG4gIHN0YXRlLnJ1bGUgPSBzdGF0ZS5wcmV2U3RhdGUucnVsZTtcbiAgc3RhdGUuc3RlcCA9IHN0YXRlLnByZXZTdGF0ZS5zdGVwO1xuICBzdGF0ZS5uZWVkc1NlcGFyYXRvciA9IHN0YXRlLnByZXZTdGF0ZS5uZWVkc1NlcGFyYXRvcjtcbiAgc3RhdGUucHJldlN0YXRlID0gc3RhdGUucHJldlN0YXRlLnByZXZTdGF0ZTtcbn1cbl9fbmFtZShwb3BSdWxlLCBcInBvcFJ1bGVcIik7XG5mdW5jdGlvbiBhZHZhbmNlUnVsZShzdGF0ZSwgc3VjY2Vzc2Z1bCkge1xuICB2YXIgX2E7XG4gIGlmIChpc0xpc3Qoc3RhdGUpICYmIHN0YXRlLnJ1bGUpIHtcbiAgICBjb25zdCBzdGVwID0gc3RhdGUucnVsZVtzdGF0ZS5zdGVwXTtcbiAgICBpZiAoc3RlcC5zZXBhcmF0b3IpIHtcbiAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHN0ZXAuc2VwYXJhdG9yO1xuICAgICAgc3RhdGUubmVlZHNTZXBhcmF0b3IgPSAhc3RhdGUubmVlZHNTZXBhcmF0b3I7XG4gICAgICBpZiAoIXN0YXRlLm5lZWRzU2VwYXJhdG9yICYmIHNlcGFyYXRvci5vZlJ1bGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3VjY2Vzc2Z1bCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBzdGF0ZS5uZWVkc1NlcGFyYXRvciA9IGZhbHNlO1xuICBzdGF0ZS5zdGVwKys7XG4gIHdoaWxlIChzdGF0ZS5ydWxlICYmICEoQXJyYXkuaXNBcnJheShzdGF0ZS5ydWxlKSAmJiBzdGF0ZS5zdGVwIDwgc3RhdGUucnVsZS5sZW5ndGgpKSB7XG4gICAgcG9wUnVsZShzdGF0ZSk7XG4gICAgaWYgKHN0YXRlLnJ1bGUpIHtcbiAgICAgIGlmIChpc0xpc3Qoc3RhdGUpKSB7XG4gICAgICAgIGlmICgoX2EgPSBzdGF0ZS5ydWxlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Fbc3RhdGUuc3RlcF0uc2VwYXJhdG9yKSB7XG4gICAgICAgICAgc3RhdGUubmVlZHNTZXBhcmF0b3IgPSAhc3RhdGUubmVlZHNTZXBhcmF0b3I7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLm5lZWRzU2VwYXJhdG9yID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnN0ZXArKztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbl9fbmFtZShhZHZhbmNlUnVsZSwgXCJhZHZhbmNlUnVsZVwiKTtcbmZ1bmN0aW9uIGlzTGlzdChzdGF0ZSkge1xuICBjb25zdCBzdGVwID0gQXJyYXkuaXNBcnJheShzdGF0ZS5ydWxlKSAmJiB0eXBlb2Ygc3RhdGUucnVsZVtzdGF0ZS5zdGVwXSAhPT0gXCJzdHJpbmdcIiAmJiBzdGF0ZS5ydWxlW3N0YXRlLnN0ZXBdO1xuICByZXR1cm4gc3RlcCAmJiBzdGVwLmlzTGlzdDtcbn1cbl9fbmFtZShpc0xpc3QsIFwiaXNMaXN0XCIpO1xuZnVuY3Rpb24gdW5zdWNjZXNzZnVsKHN0YXRlKSB7XG4gIHdoaWxlIChzdGF0ZS5ydWxlICYmICEoQXJyYXkuaXNBcnJheShzdGF0ZS5ydWxlKSAmJiBzdGF0ZS5ydWxlW3N0YXRlLnN0ZXBdLm9mUnVsZSkpIHtcbiAgICBwb3BSdWxlKHN0YXRlKTtcbiAgfVxuICBpZiAoc3RhdGUucnVsZSkge1xuICAgIGFkdmFuY2VSdWxlKHN0YXRlLCBmYWxzZSk7XG4gIH1cbn1cbl9fbmFtZSh1bnN1Y2Nlc3NmdWwsIFwidW5zdWNjZXNzZnVsXCIpO1xuZnVuY3Rpb24gbGV4KGxleFJ1bGVzLCBzdHJlYW0pIHtcbiAgY29uc3Qga2luZHMgPSBPYmplY3Qua2V5cyhsZXhSdWxlcyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwga2luZHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBtYXRjaCA9IHN0cmVhbS5tYXRjaChsZXhSdWxlc1traW5kc1tpXV0pO1xuICAgIGlmIChtYXRjaCAmJiBtYXRjaCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICByZXR1cm4geyBraW5kOiBraW5kc1tpXSwgdmFsdWU6IG1hdGNoWzBdIH07XG4gICAgfVxuICB9XG59XG5fX25hbWUobGV4LCBcImxleFwiKTtcbmV4cG9ydCB7IG9ubGluZVBhcnNlciBhcyBvIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUtBO0FBSkE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFsQkE7QUFtQkE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/onlineParser.es.js\n");
|
2725 |
|
2726 | }),
|
2727 |
|
2728 | "../../graphiql-react/dist/search.es.js":
|
2729 |
|
2730 |
|
2731 |
|
2732 |
|
2733 | (function(module, exports, __webpack_require__) {
|
2734 |
|
2735 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! ./searchcursor.es.js */ \"../../graphiql-react/dist/searchcursor.es.js\"), __webpack_require__(/*! ./dialog.es.js */ \"../../graphiql-react/dist/dialog.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs, _searchcursorEs, _dialogEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.s = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var search$2 = {\n exports: {}\n };\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports, _searchcursorEs.a.exports, _dialogEs.a.exports);\n })(function (CodeMirror) {\n CodeMirror.defineOption(\"search\", {\n bottom: false\n });\n\n function searchOverlay(query, caseInsensitive) {\n if (typeof query == \"string\") query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");else if (!query.global) query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n return {\n token: function (stream) {\n query.lastIndex = stream.pos;\n var match = query.exec(stream.string);\n\n if (match && match.index == stream.pos) {\n stream.pos += match[0].length || 1;\n return \"searching\";\n } else if (match) {\n stream.pos = match.index;\n } else {\n stream.skipToEnd();\n }\n }\n };\n }\n\n __name(searchOverlay, \"searchOverlay\");\n\n function SearchState() {\n this.posFrom = this.posTo = this.lastQuery = this.query = null;\n this.overlay = null;\n }\n\n __name(SearchState, \"SearchState\");\n\n function getSearchState(cm) {\n return cm.state.search || (cm.state.search = new SearchState());\n }\n\n __name(getSearchState, \"getSearchState\");\n\n function queryCaseInsensitive(query) {\n return typeof query == \"string\" && query == query.toLowerCase();\n }\n\n __name(queryCaseInsensitive, \"queryCaseInsensitive\");\n\n function getSearchCursor(cm, query, pos) {\n return cm.getSearchCursor(query, pos, {\n caseFold: queryCaseInsensitive(query),\n multiline: true\n });\n }\n\n __name(getSearchCursor, \"getSearchCursor\");\n\n function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n cm.openDialog(text, onEnter, {\n value: deflt,\n selectValueOnOpen: true,\n closeOnEnter: false,\n onClose: function () {\n clearSearch(cm);\n },\n onKeyDown,\n bottom: cm.options.search.bottom\n });\n }\n\n __name(persistentDialog, \"persistentDialog\");\n\n function dialog2(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {\n value: deflt,\n selectValueOnOpen: true,\n bottom: cm.options.search.bottom\n });else f(prompt(shortText, deflt));\n }\n\n __name(dialog2, \"dialog\");\n\n function confirmDialog(cm, text, shortText, fs) {\n if (cm.openConfirm) cm.openConfirm(text, fs);else if (confirm(shortText)) fs[0]();\n }\n\n __name(confirmDialog, \"confirmDialog\");\n\n function parseString(string) {\n return string.replace(/\\\\([nrt\\\\])/g, function (match, ch) {\n if (ch == \"n\") return \"\\n\";\n if (ch == \"r\") return \"\\r\";\n if (ch == \"t\") return \"\t\";\n if (ch == \"\\\\\") return \"\\\\\";\n return match;\n });\n }\n\n __name(parseString, \"parseString\");\n\n function parseQuery(query) {\n var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n\n if (isRE) {\n try {\n query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\");\n } catch (e) {}\n } else {\n query = parseString(query);\n }\n\n if (typeof query == \"string\" ? query == \"\" : query.test(\"\")) query = /x^/;\n return query;\n }\n\n __name(parseQuery, \"parseQuery\");\n\n function startSearch(cm, state, query) {\n state.queryText = query;\n state.query = parseQuery(query);\n cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n cm.addOverlay(state.overlay);\n\n if (cm.showMatchesOnScrollbar) {\n if (state.annotate) {\n state.annotate.clear();\n state.annotate = null;\n }\n\n state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n }\n }\n\n __name(startSearch, \"startSearch\");\n\n function doSearch(cm, rev, persistent, immediate) {\n var state = getSearchState(cm);\n if (state.query) return findNext(cm, rev);\n var q = cm.getSelection() || state.lastQuery;\n if (q instanceof RegExp && q.source == \"x^\") q = null;\n\n if (persistent && cm.openDialog) {\n var hiding = null;\n\n var searchNext = /* @__PURE__ */__name(function (query, event) {\n CodeMirror.e_stop(event);\n if (!query) return;\n\n if (query != state.queryText) {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n }\n\n if (hiding) hiding.style.opacity = 1;\n findNext(cm, event.shiftKey, function (_, to) {\n var dialog3;\n if (to.line < 3 && document.querySelector && (dialog3 = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) && dialog3.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top) (hiding = dialog3).style.opacity = 0.4;\n });\n }, \"searchNext\");\n\n persistentDialog(cm, getQueryDialog(cm), q, searchNext, function (event, query) {\n var keyName = CodeMirror.keyName(event);\n var extra = cm.getOption(\"extraKeys\"),\n cmd = extra && extra[keyName] || CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName];\n\n if (cmd == \"findNext\" || cmd == \"findPrev\" || cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n CodeMirror.e_stop(event);\n startSearch(cm, getSearchState(cm), query);\n cm.execCommand(cmd);\n } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n CodeMirror.e_stop(event);\n searchNext(query, event);\n }\n });\n\n if (immediate && q) {\n startSearch(cm, state, q);\n findNext(cm, rev);\n }\n } else {\n dialog2(cm, getQueryDialog(cm), \"Search for:\", q, function (query) {\n if (query && !state.query) cm.operation(function () {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n findNext(cm, rev);\n });\n });\n }\n }\n\n __name(doSearch, \"doSearch\");\n\n function findNext(cm, rev, callback) {\n cm.operation(function () {\n var state = getSearchState(cm);\n var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n\n if (!cursor.find(rev)) {\n cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n if (!cursor.find(rev)) return;\n }\n\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({\n from: cursor.from(),\n to: cursor.to()\n }, 20);\n state.posFrom = cursor.from();\n state.posTo = cursor.to();\n if (callback) callback(cursor.from(), cursor.to());\n });\n }\n\n __name(findNext, \"findNext\");\n\n function clearSearch(cm) {\n cm.operation(function () {\n var state = getSearchState(cm);\n state.lastQuery = state.query;\n if (!state.query) return;\n state.query = state.queryText = null;\n cm.removeOverlay(state.overlay);\n\n if (state.annotate) {\n state.annotate.clear();\n state.annotate = null;\n }\n });\n }\n\n __name(clearSearch, \"clearSearch\");\n\n function el(tag, attrs) {\n var element = tag ? document.createElement(tag) : document.createDocumentFragment();\n\n for (var key in attrs) {\n element[key] = attrs[key];\n }\n\n for (var i = 2; i < arguments.length; i++) {\n var child = arguments[i];\n element.appendChild(typeof child == \"string\" ? document.createTextNode(child) : child);\n }\n\n return element;\n }\n\n __name(el, \"el\");\n\n function getQueryDialog(cm) {\n return el(\"\", null, el(\"span\", {\n className: \"CodeMirror-search-label\"\n }, cm.phrase(\"Search:\")), \" \", el(\"input\", {\n type: \"text\",\n \"style\": \"width: 10em\",\n className: \"CodeMirror-search-field\"\n }), \" \", el(\"span\", {\n style: \"color: #888\",\n className: \"CodeMirror-search-hint\"\n }, cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n }\n\n __name(getQueryDialog, \"getQueryDialog\");\n\n function getReplaceQueryDialog(cm) {\n return el(\"\", null, \" \", el(\"input\", {\n type: \"text\",\n \"style\": \"width: 10em\",\n className: \"CodeMirror-search-field\"\n }), \" \", el(\"span\", {\n style: \"color: #888\",\n className: \"CodeMirror-search-hint\"\n }, cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n }\n\n __name(getReplaceQueryDialog, \"getReplaceQueryDialog\");\n\n function getReplacementQueryDialog(cm) {\n return el(\"\", null, el(\"span\", {\n className: \"CodeMirror-search-label\"\n }, cm.phrase(\"With:\")), \" \", el(\"input\", {\n type: \"text\",\n \"style\": \"width: 10em\",\n className: \"CodeMirror-search-field\"\n }));\n }\n\n __name(getReplacementQueryDialog, \"getReplacementQueryDialog\");\n\n function getDoReplaceConfirm(cm) {\n return el(\"\", null, el(\"span\", {\n className: \"CodeMirror-search-label\"\n }, cm.phrase(\"Replace?\")), \" \", el(\"button\", {}, cm.phrase(\"Yes\")), \" \", el(\"button\", {}, cm.phrase(\"No\")), \" \", el(\"button\", {}, cm.phrase(\"All\")), \" \", el(\"button\", {}, cm.phrase(\"Stop\")));\n }\n\n __name(getDoReplaceConfirm, \"getDoReplaceConfirm\");\n\n function replaceAll(cm, query, text) {\n cm.operation(function () {\n for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n if (typeof query != \"string\") {\n var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n cursor.replace(text.replace(/\\$(\\d)/g, function (_, i) {\n return match[i];\n }));\n } else cursor.replace(text);\n }\n });\n }\n\n __name(replaceAll, \"replaceAll\");\n\n function replace(cm, all) {\n if (cm.getOption(\"readOnly\")) return;\n var query = cm.getSelection() || getSearchState(cm).lastQuery;\n var dialogText = all ? cm.phrase(\"Replace all:\") : cm.phrase(\"Replace:\");\n var fragment = el(\"\", null, el(\"span\", {\n className: \"CodeMirror-search-label\"\n }, dialogText), getReplaceQueryDialog(cm));\n dialog2(cm, fragment, dialogText, query, function (query2) {\n if (!query2) return;\n query2 = parseQuery(query2);\n dialog2(cm, getReplacementQueryDialog(cm), cm.phrase(\"Replace with:\"), \"\", function (text) {\n text = parseString(text);\n\n if (all) {\n replaceAll(cm, query2, text);\n } else {\n clearSearch(cm);\n var cursor = getSearchCursor(cm, query2, cm.getCursor(\"from\"));\n\n var advance = /* @__PURE__ */__name(function () {\n var start = cursor.from(),\n match;\n\n if (!(match = cursor.findNext())) {\n cursor = getSearchCursor(cm, query2);\n if (!(match = cursor.findNext()) || start && cursor.from().line == start.line && cursor.from().ch == start.ch) return;\n }\n\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({\n from: cursor.from(),\n to: cursor.to()\n });\n confirmDialog(cm, getDoReplaceConfirm(cm), cm.phrase(\"Replace?\"), [function () {\n doReplace(match);\n }, advance, function () {\n replaceAll(cm, query2, text);\n }]);\n }, \"advance\");\n\n var doReplace = /* @__PURE__ */__name(function (match) {\n cursor.replace(typeof query2 == \"string\" ? text : text.replace(/\\$(\\d)/g, function (_, i) {\n return match[i];\n }));\n advance();\n }, \"doReplace\");\n\n advance();\n }\n });\n });\n }\n\n __name(replace, \"replace\");\n\n CodeMirror.commands.find = function (cm) {\n clearSearch(cm);\n doSearch(cm);\n };\n\n CodeMirror.commands.findPersistent = function (cm) {\n clearSearch(cm);\n doSearch(cm, false, true);\n };\n\n CodeMirror.commands.findPersistentNext = function (cm) {\n doSearch(cm, false, true, true);\n };\n\n CodeMirror.commands.findPersistentPrev = function (cm) {\n doSearch(cm, true, true, true);\n };\n\n CodeMirror.commands.findNext = doSearch;\n\n CodeMirror.commands.findPrev = function (cm) {\n doSearch(cm, true);\n };\n\n CodeMirror.commands.clearSearch = clearSearch;\n CodeMirror.commands.replace = replace;\n\n CodeMirror.commands.replaceAll = function (cm) {\n replace(cm, true);\n };\n });\n })();\n\n var search = search$2.exports;\n var search$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": search\n }, [search$2.exports]));\n _exports.s = search$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9zZWFyY2guZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9wYWNrYWdlcy9ncmFwaGlxbC1yZWFjdC9kaXN0L3NlYXJjaC5lcy5qcz9lZDMwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lID0gKHRhcmdldCwgdmFsdWUpID0+IF9fZGVmUHJvcCh0YXJnZXQsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG5pbXBvcnQgeyBhIGFzIGNvZGVtaXJyb3IgfSBmcm9tIFwiLi9jb2RlbWlycm9yLmVzLmpzXCI7XG5pbXBvcnQgeyBhIGFzIHNlYXJjaGN1cnNvciB9IGZyb20gXCIuL3NlYXJjaGN1cnNvci5lcy5qc1wiO1xuaW1wb3J0IHsgYSBhcyBkaWFsb2cgfSBmcm9tIFwiLi9kaWFsb2cuZXMuanNcIjtcbmZ1bmN0aW9uIF9tZXJnZU5hbWVzcGFjZXMobiwgbSkge1xuICBtLmZvckVhY2goZnVuY3Rpb24oZSkge1xuICAgIGUgJiYgdHlwZW9mIGUgIT09IFwic3RyaW5nXCIgJiYgIUFycmF5LmlzQXJyYXkoZSkgJiYgT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgIShrIGluIG4pKSB7XG4gICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIGssIGQuZ2V0ID8gZCA6IHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gZVtrXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUobik7XG59XG5fX25hbWUoX21lcmdlTmFtZXNwYWNlcywgXCJfbWVyZ2VOYW1lc3BhY2VzXCIpO1xudmFyIHNlYXJjaCQyID0geyBleHBvcnRzOiB7fSB9O1xuKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuICAoZnVuY3Rpb24obW9kKSB7XG4gICAgbW9kKGNvZGVtaXJyb3IuZXhwb3J0cywgc2VhcmNoY3Vyc29yLmV4cG9ydHMsIGRpYWxvZy5leHBvcnRzKTtcbiAgfSkoZnVuY3Rpb24oQ29kZU1pcnJvcikge1xuICAgIENvZGVNaXJyb3IuZGVmaW5lT3B0aW9uKFwic2VhcmNoXCIsIHsgYm90dG9tOiBmYWxzZSB9KTtcbiAgICBmdW5jdGlvbiBzZWFyY2hPdmVybGF5KHF1ZXJ5LCBjYXNlSW5zZW5zaXRpdmUpIHtcbiAgICAgIGlmICh0eXBlb2YgcXVlcnkgPT0gXCJzdHJpbmdcIilcbiAgICAgICAgcXVlcnkgPSBuZXcgUmVnRXhwKHF1ZXJ5LnJlcGxhY2UoL1tcXC1cXFtcXF1cXC9cXHtcXH1cXChcXClcXCpcXCtcXD9cXC5cXFxcXFxeXFwkXFx8XS9nLCBcIlxcXFwkJlwiKSwgY2FzZUluc2Vuc2l0aXZlID8gXCJnaVwiIDogXCJnXCIpO1xuICAgICAgZWxzZSBpZiAoIXF1ZXJ5Lmdsb2JhbClcbiAgICAgICAgcXVlcnkgPSBuZXcgUmVnRXhwKHF1ZXJ5LnNvdXJjZSwgcXVlcnkuaWdub3JlQ2FzZSA/IFwiZ2lcIiA6IFwiZ1wiKTtcbiAgICAgIHJldHVybiB7IHRva2VuOiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICAgICAgcXVlcnkubGFzdEluZGV4ID0gc3RyZWFtLnBvcztcbiAgICAgICAgdmFyIG1hdGNoID0gcXVlcnkuZXhlYyhzdHJlYW0uc3RyaW5nKTtcbiAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoLmluZGV4ID09IHN0cmVhbS5wb3MpIHtcbiAgICAgICAgICBzdHJlYW0ucG9zICs9IG1hdGNoWzBdLmxlbmd0aCB8fCAxO1xuICAgICAgICAgIHJldHVybiBcInNlYXJjaGluZ1wiO1xuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgc3RyZWFtLnBvcyA9IG1hdGNoLmluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0cmVhbS5za2lwVG9FbmQoKTtcbiAgICAgICAgfVxuICAgICAgfSB9O1xuICAgIH1cbiAgICBfX25hbWUoc2VhcmNoT3ZlcmxheSwgXCJzZWFyY2hPdmVybGF5XCIpO1xuICAgIGZ1bmN0aW9uIFNlYXJjaFN0YXRlKCkge1xuICAgICAgdGhpcy5wb3NGcm9tID0gdGhpcy5wb3NUbyA9IHRoaXMubGFzdFF1ZXJ5ID0gdGhpcy5xdWVyeSA9IG51bGw7XG4gICAgICB0aGlzLm92ZXJsYXkgPSBudWxsO1xuICAgIH1cbiAgICBfX25hbWUoU2VhcmNoU3RhdGUsIFwiU2VhcmNoU3RhdGVcIik7XG4gICAgZnVuY3Rpb24gZ2V0U2VhcmNoU3RhdGUoY20pIHtcbiAgICAgIHJldHVybiBjbS5zdGF0ZS5zZWFyY2ggfHwgKGNtLnN0YXRlLnNlYXJjaCA9IG5ldyBTZWFyY2hTdGF0ZSgpKTtcbiAgICB9XG4gICAgX19uYW1lKGdldFNlYXJjaFN0YXRlLCBcImdldFNlYXJjaFN0YXRlXCIpO1xuICAgIGZ1bmN0aW9uIHF1ZXJ5Q2FzZUluc2Vuc2l0aXZlKHF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHF1ZXJ5ID09IFwic3RyaW5nXCIgJiYgcXVlcnkgPT0gcXVlcnkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgX19uYW1lKHF1ZXJ5Q2FzZUluc2Vuc2l0aXZlLCBcInF1ZXJ5Q2FzZUluc2Vuc2l0aXZlXCIpO1xuICAgIGZ1bmN0aW9uIGdldFNlYXJjaEN1cnNvcihjbSwgcXVlcnksIHBvcykge1xuICAgICAgcmV0dXJuIGNtLmdldFNlYXJjaEN1cnNvcihxdWVyeSwgcG9zLCB7IGNhc2VGb2xkOiBxdWVyeUNhc2VJbnNlbnNpdGl2ZShxdWVyeSksIG11bHRpbGluZTogdHJ1ZSB9KTtcbiAgICB9XG4gICAgX19uYW1lKGdldFNlYXJjaEN1cnNvciwgXCJnZXRTZWFyY2hDdXJzb3JcIik7XG4gICAgZnVuY3Rpb24gcGVyc2lzdGVudERpYWxvZyhjbSwgdGV4dCwgZGVmbHQsIG9uRW50ZXIsIG9uS2V5RG93bikge1xuICAgICAgY20ub3BlbkRpYWxvZyh0ZXh0LCBvbkVudGVyLCB7XG4gICAgICAgIHZhbHVlOiBkZWZsdCxcbiAgICAgICAgc2VsZWN0VmFsdWVPbk9wZW46IHRydWUsXG4gICAgICAgIGNsb3NlT25FbnRlcjogZmFsc2UsXG4gICAgICAgIG9uQ2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGNsZWFyU2VhcmNoKGNtKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25LZXlEb3duLFxuICAgICAgICBib3R0b206IGNtLm9wdGlvbnMuc2VhcmNoLmJvdHRvbVxuICAgICAgfSk7XG4gICAgfVxuICAgIF9fbmFtZShwZXJzaXN0ZW50RGlhbG9nLCBcInBlcnNpc3RlbnREaWFsb2dcIik7XG4gICAgZnVuY3Rpb24gZGlhbG9nMihjbSwgdGV4dCwgc2hvcnRUZXh0LCBkZWZsdCwgZikge1xuICAgICAgaWYgKGNtLm9wZW5EaWFsb2cpXG4gICAgICAgIGNtLm9wZW5EaWFsb2codGV4dCwgZiwgeyB2YWx1ZTogZGVmbHQsIHNlbGVjdFZhbHVlT25PcGVuOiB0cnVlLCBib3R0b206IGNtLm9wdGlvbnMuc2VhcmNoLmJvdHRvbSB9KTtcbiAgICAgIGVsc2VcbiAgICAgICAgZihwcm9tcHQoc2hvcnRUZXh0LCBkZWZsdCkpO1xuICAgIH1cbiAgICBfX25hbWUoZGlhbG9nMiwgXCJkaWFsb2dcIik7XG4gICAgZnVuY3Rpb24gY29uZmlybURpYWxvZyhjbSwgdGV4dCwgc2hvcnRUZXh0LCBmcykge1xuICAgICAgaWYgKGNtLm9wZW5Db25maXJtKVxuICAgICAgICBjbS5vcGVuQ29uZmlybSh0ZXh0LCBmcyk7XG4gICAgICBlbHNlIGlmIChjb25maXJtKHNob3J0VGV4dCkpXG4gICAgICAgIGZzWzBdKCk7XG4gICAgfVxuICAgIF9fbmFtZShjb25maXJtRGlhbG9nLCBcImNvbmZpcm1EaWFsb2dcIik7XG4gICAgZnVuY3Rpb24gcGFyc2VTdHJpbmcoc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcXFwoW25ydFxcXFxdKS9nLCBmdW5jdGlvbihtYXRjaCwgY2gpIHtcbiAgICAgICAgaWYgKGNoID09IFwiblwiKVxuICAgICAgICAgIHJldHVybiBcIlxcblwiO1xuICAgICAgICBpZiAoY2ggPT0gXCJyXCIpXG4gICAgICAgICAgcmV0dXJuIFwiXFxyXCI7XG4gICAgICAgIGlmIChjaCA9PSBcInRcIilcbiAgICAgICAgICByZXR1cm4gXCJcdFwiO1xuICAgICAgICBpZiAoY2ggPT0gXCJcXFxcXCIpXG4gICAgICAgICAgcmV0dXJuIFwiXFxcXFwiO1xuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcbiAgICB9XG4gICAgX19uYW1lKHBhcnNlU3RyaW5nLCBcInBhcnNlU3RyaW5nXCIpO1xuICAgIGZ1bmN0aW9uIHBhcnNlUXVlcnkocXVlcnkpIHtcbiAgICAgIHZhciBpc1JFID0gcXVlcnkubWF0Y2goL15cXC8oLiopXFwvKFthLXpdKikkLyk7XG4gICAgICBpZiAoaXNSRSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHF1ZXJ5ID0gbmV3IFJlZ0V4cChpc1JFWzFdLCBpc1JFWzJdLmluZGV4T2YoXCJpXCIpID09IC0xID8gXCJcIiA6IFwiaVwiKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWVyeSA9IHBhcnNlU3RyaW5nKHF1ZXJ5KTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgcXVlcnkgPT0gXCJzdHJpbmdcIiA/IHF1ZXJ5ID09IFwiXCIgOiBxdWVyeS50ZXN0KFwiXCIpKVxuICAgICAgICBxdWVyeSA9IC94Xi87XG4gICAgICByZXR1cm4gcXVlcnk7XG4gICAgfVxuICAgIF9fbmFtZShwYXJzZVF1ZXJ5LCBcInBhcnNlUXVlcnlcIik7XG4gICAgZnVuY3Rpb24gc3RhcnRTZWFyY2goY20sIHN0YXRlLCBxdWVyeSkge1xuICAgICAgc3RhdGUucXVlcnlUZXh0ID0gcXVlcnk7XG4gICAgICBzdGF0ZS5xdWVyeSA9IHBhcnNlUXVlcnkocXVlcnkpO1xuICAgICAgY20ucmVtb3ZlT3ZlcmxheShzdGF0ZS5vdmVybGF5LCBxdWVyeUNhc2VJbnNlbnNpdGl2ZShzdGF0ZS5xdWVyeSkpO1xuICAgICAgc3RhdGUub3ZlcmxheSA9IHNlYXJjaE92ZXJsYXkoc3RhdGUucXVlcnksIHF1ZXJ5Q2FzZUluc2Vuc2l0aXZlKHN0YXRlLnF1ZXJ5KSk7XG4gICAgICBjbS5hZGRPdmVybGF5KHN0YXRlLm92ZXJsYXkpO1xuICAgICAgaWYgKGNtLnNob3dNYXRjaGVzT25TY3JvbGxiYXIpIHtcbiAgICAgICAgaWYgKHN0YXRlLmFubm90YXRlKSB7XG4gICAgICAgICAgc3RhdGUuYW5ub3RhdGUuY2xlYXIoKTtcbiAgICAgICAgICBzdGF0ZS5hbm5vdGF0ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUuYW5ub3RhdGUgPSBjbS5zaG93TWF0Y2hlc09uU2Nyb2xsYmFyKHN0YXRlLnF1ZXJ5LCBxdWVyeUNhc2VJbnNlbnNpdGl2ZShzdGF0ZS5xdWVyeSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoc3RhcnRTZWFyY2gsIFwic3RhcnRTZWFyY2hcIik7XG4gICAgZnVuY3Rpb24gZG9TZWFyY2goY20sIHJldiwgcGVyc2lzdGVudCwgaW1tZWRpYXRlKSB7XG4gICAgICB2YXIgc3RhdGUgPSBnZXRTZWFyY2hTdGF0ZShjbSk7XG4gICAgICBpZiAoc3RhdGUucXVlcnkpXG4gICAgICAgIHJldHVybiBmaW5kTmV4dChjbSwgcmV2KTtcbiAgICAgIHZhciBxID0gY20uZ2V0U2VsZWN0aW9uKCkgfHwgc3RhdGUubGFzdFF1ZXJ5O1xuICAgICAgaWYgKHEgaW5zdGFuY2VvZiBSZWdFeHAgJiYgcS5zb3VyY2UgPT0gXCJ4XlwiKVxuICAgICAgICBxID0gbnVsbDtcbiAgICAgIGlmIChwZXJzaXN0ZW50ICYmIGNtLm9wZW5EaWFsb2cpIHtcbiAgICAgICAgdmFyIGhpZGluZyA9IG51bGw7XG4gICAgICAgIHZhciBzZWFyY2hOZXh0ID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihxdWVyeSwgZXZlbnQpIHtcbiAgICAgICAgICBDb2RlTWlycm9yLmVfc3RvcChldmVudCk7XG4gICAgICAgICAgaWYgKCFxdWVyeSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBpZiAocXVlcnkgIT0gc3RhdGUucXVlcnlUZXh0KSB7XG4gICAgICAgICAgICBzdGFydFNlYXJjaChjbSwgc3RhdGUsIHF1ZXJ5KTtcbiAgICAgICAgICAgIHN0YXRlLnBvc0Zyb20gPSBzdGF0ZS5wb3NUbyA9IGNtLmdldEN1cnNvcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGlkaW5nKVxuICAgICAgICAgICAgaGlkaW5nLnN0eWxlLm9wYWNpdHkgPSAxO1xuICAgICAgICAgIGZpbmROZXh0KGNtLCBldmVudC5zaGlmdEtleSwgZnVuY3Rpb24oXywgdG8pIHtcbiAgICAgICAgICAgIHZhciBkaWFsb2czO1xuICAgICAgICAgICAgaWYgKHRvLmxpbmUgPCAzICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IgJiYgKGRpYWxvZzMgPSBjbS5kaXNwbGF5LndyYXBwZXIucXVlcnlTZWxlY3RvcihcIi5Db2RlTWlycm9yLWRpYWxvZ1wiKSkgJiYgZGlhbG9nMy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gLSA0ID4gY20uY3Vyc29yQ29vcmRzKHRvLCBcIndpbmRvd1wiKS50b3ApXG4gICAgICAgICAgICAgIChoaWRpbmcgPSBkaWFsb2czKS5zdHlsZS5vcGFjaXR5ID0gMC40O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCBcInNlYXJjaE5leHRcIik7XG4gICAgICAgIHBlcnNpc3RlbnREaWFsb2coY20sIGdldFF1ZXJ5RGlhbG9nKGNtKSwgcSwgc2VhcmNoTmV4dCwgZnVuY3Rpb24oZXZlbnQsIHF1ZXJ5KSB7XG4gICAgICAgICAgdmFyIGtleU5hbWUgPSBDb2RlTWlycm9yLmtleU5hbWUoZXZlbnQpO1xuICAgICAgICAgIHZhciBleHRyYSA9IGNtLmdldE9wdGlvbihcImV4dHJhS2V5c1wiKSwgY21kID0gZXh0cmEgJiYgZXh0cmFba2V5TmFtZV0gfHwgQ29kZU1pcnJvci5rZXlNYXBbY20uZ2V0T3B0aW9uKFwia2V5TWFwXCIpXVtrZXlOYW1lXTtcbiAgICAgICAgICBpZiAoY21kID09IFwiZmluZE5leHRcIiB8fCBjbWQgPT0gXCJmaW5kUHJldlwiIHx8IGNtZCA9PSBcImZpbmRQZXJzaXN0ZW50TmV4dFwiIHx8IGNtZCA9PSBcImZpbmRQZXJzaXN0ZW50UHJldlwiKSB7XG4gICAgICAgICAgICBDb2RlTWlycm9yLmVfc3RvcChldmVudCk7XG4gICAgICAgICAgICBzdGFydFNlYXJjaChjbSwgZ2V0U2VhcmNoU3RhdGUoY20pLCBxdWVyeSk7XG4gICAgICAgICAgICBjbS5leGVjQ29tbWFuZChjbWQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY21kID09IFwiZmluZFwiIHx8IGNtZCA9PSBcImZpbmRQZXJzaXN0ZW50XCIpIHtcbiAgICAgICAgICAgIENvZGVNaXJyb3IuZV9zdG9wKGV2ZW50KTtcbiAgICAgICAgICAgIHNlYXJjaE5leHQocXVlcnksIGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaW1tZWRpYXRlICYmIHEpIHtcbiAgICAgICAgICBzdGFydFNlYXJjaChjbSwgc3RhdGUsIHEpO1xuICAgICAgICAgIGZpbmROZXh0KGNtLCByZXYpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaWFsb2cyKGNtLCBnZXRRdWVyeURpYWxvZyhjbSksIFwiU2VhcmNoIGZvcjpcIiwgcSwgZnVuY3Rpb24ocXVlcnkpIHtcbiAgICAgICAgICBpZiAocXVlcnkgJiYgIXN0YXRlLnF1ZXJ5KVxuICAgICAgICAgICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICBzdGFydFNlYXJjaChjbSwgc3RhdGUsIHF1ZXJ5KTtcbiAgICAgICAgICAgICAgc3RhdGUucG9zRnJvbSA9IHN0YXRlLnBvc1RvID0gY20uZ2V0Q3Vyc29yKCk7XG4gICAgICAgICAgICAgIGZpbmROZXh0KGNtLCByZXYpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoZG9TZWFyY2gsIFwiZG9TZWFyY2hcIik7XG4gICAgZnVuY3Rpb24gZmluZE5leHQoY20sIHJldiwgY2FsbGJhY2spIHtcbiAgICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0U2VhcmNoU3RhdGUoY20pO1xuICAgICAgICB2YXIgY3Vyc29yID0gZ2V0U2VhcmNoQ3Vyc29yKGNtLCBzdGF0ZS5xdWVyeSwgcmV2ID8gc3RhdGUucG9zRnJvbSA6IHN0YXRlLnBvc1RvKTtcbiAgICAgICAgaWYgKCFjdXJzb3IuZmluZChyZXYpKSB7XG4gICAgICAgICAgY3Vyc29yID0gZ2V0U2VhcmNoQ3Vyc29yKGNtLCBzdGF0ZS5xdWVyeSwgcmV2ID8gQ29kZU1pcnJvci5Qb3MoY20ubGFzdExpbmUoKSkgOiBDb2RlTWlycm9yLlBvcyhjbS5maXJzdExpbmUoKSwgMCkpO1xuICAgICAgICAgIGlmICghY3Vyc29yLmZpbmQocmV2KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjbS5zZXRTZWxlY3Rpb24oY3Vyc29yLmZyb20oKSwgY3Vyc29yLnRvKCkpO1xuICAgICAgICBjbS5zY3JvbGxJbnRvVmlldyh7IGZyb206IGN1cnNvci5mcm9tKCksIHRvOiBjdXJzb3IudG8oKSB9LCAyMCk7XG4gICAgICAgIHN0YXRlLnBvc0Zyb20gPSBjdXJzb3IuZnJvbSgpO1xuICAgICAgICBzdGF0ZS5wb3NUbyA9IGN1cnNvci50bygpO1xuICAgICAgICBpZiAoY2FsbGJhY2spXG4gICAgICAgICAgY2FsbGJhY2soY3Vyc29yLmZyb20oKSwgY3Vyc29yLnRvKCkpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIF9fbmFtZShmaW5kTmV4dCwgXCJmaW5kTmV4dFwiKTtcbiAgICBmdW5jdGlvbiBjbGVhclNlYXJjaChjbSkge1xuICAgICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc3RhdGUgPSBnZXRTZWFyY2hTdGF0ZShjbSk7XG4gICAgICAgIHN0YXRlLmxhc3RRdWVyeSA9IHN0YXRlLnF1ZXJ5O1xuICAgICAgICBpZiAoIXN0YXRlLnF1ZXJ5KVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3RhdGUucXVlcnkgPSBzdGF0ZS5xdWVyeVRleHQgPSBudWxsO1xuICAgICAgICBjbS5yZW1vdmVPdmVybGF5KHN0YXRlLm92ZXJsYXkpO1xuICAgICAgICBpZiAoc3RhdGUuYW5ub3RhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5hbm5vdGF0ZS5jbGVhcigpO1xuICAgICAgICAgIHN0YXRlLmFubm90YXRlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIF9fbmFtZShjbGVhclNlYXJjaCwgXCJjbGVhclNlYXJjaFwiKTtcbiAgICBmdW5jdGlvbiBlbCh0YWcsIGF0dHJzKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IHRhZyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKSA6IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBhdHRycykge1xuICAgICAgICBlbGVtZW50W2tleV0gPSBhdHRyc1trZXldO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gYXJndW1lbnRzW2ldO1xuICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHR5cGVvZiBjaGlsZCA9PSBcInN0cmluZ1wiID8gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY2hpbGQpIDogY2hpbGQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuICAgIF9fbmFtZShlbCwgXCJlbFwiKTtcbiAgICBmdW5jdGlvbiBnZXRRdWVyeURpYWxvZyhjbSkge1xuICAgICAgcmV0dXJuIGVsKFwiXCIsIG51bGwsIGVsKFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJDb2RlTWlycm9yLXNlYXJjaC1sYWJlbFwiIH0sIGNtLnBocmFzZShcIlNlYXJjaDpcIikpLCBcIiBcIiwgZWwoXCJpbnB1dFwiLCB7IHR5cGU6IFwidGV4dFwiLCBcInN0eWxlXCI6IFwid2lkdGg6IDEwZW1cIiwgY2xhc3NOYW1lOiBcIkNvZGVNaXJyb3Itc2VhcmNoLWZpZWxkXCIgfSksIFwiIFwiLCBlbChcInNwYW5cIiwgeyBzdHlsZTogXCJjb2xvcjogIzg4OFwiLCBjbGFzc05hbWU6IFwiQ29kZU1pcnJvci1zZWFyY2gtaGludFwiIH0sIGNtLnBocmFzZShcIihVc2UgL3JlLyBzeW50YXggZm9yIHJlZ2V4cCBzZWFyY2gpXCIpKSk7XG4gICAgfVxuICAgIF9fbmFtZShnZXRRdWVyeURpYWxvZywgXCJnZXRRdWVyeURpYWxvZ1wiKTtcbiAgICBmdW5jdGlvbiBnZXRSZXBsYWNlUXVlcnlEaWFsb2coY20pIHtcbiAgICAgIHJldHVybiBlbChcIlwiLCBudWxsLCBcIiBcIiwgZWwoXCJpbnB1dFwiLCB7IHR5cGU6IFwidGV4dFwiLCBcInN0eWxlXCI6IFwid2lkdGg6IDEwZW1cIiwgY2xhc3NOYW1lOiBcIkNvZGVNaXJyb3Itc2VhcmNoLWZpZWxkXCIgfSksIFwiIFwiLCBlbChcInNwYW5cIiwgeyBzdHlsZTogXCJjb2xvcjogIzg4OFwiLCBjbGFzc05hbWU6IFwiQ29kZU1pcnJvci1zZWFyY2gtaGludFwiIH0sIGNtLnBocmFzZShcIihVc2UgL3JlLyBzeW50YXggZm9yIHJlZ2V4cCBzZWFyY2gpXCIpKSk7XG4gICAgfVxuICAgIF9fbmFtZShnZXRSZXBsYWNlUXVlcnlEaWFsb2csIFwiZ2V0UmVwbGFjZVF1ZXJ5RGlhbG9nXCIpO1xuICAgIGZ1bmN0aW9uIGdldFJlcGxhY2VtZW50UXVlcnlEaWFsb2coY20pIHtcbiAgICAgIHJldHVybiBlbChcIlwiLCBudWxsLCBlbChcInNwYW5cIiwgeyBjbGFzc05hbWU6IFwiQ29kZU1pcnJvci1zZWFyY2gtbGFiZWxcIiB9LCBjbS5waHJhc2UoXCJXaXRoOlwiKSksIFwiIFwiLCBlbChcImlucHV0XCIsIHsgdHlwZTogXCJ0ZXh0XCIsIFwic3R5bGVcIjogXCJ3aWR0aDogMTBlbVwiLCBjbGFzc05hbWU6IFwiQ29kZU1pcnJvci1zZWFyY2gtZmllbGRcIiB9KSk7XG4gICAgfVxuICAgIF9fbmFtZShnZXRSZXBsYWNlbWVudFF1ZXJ5RGlhbG9nLCBcImdldFJlcGxhY2VtZW50UXVlcnlEaWFsb2dcIik7XG4gICAgZnVuY3Rpb24gZ2V0RG9SZXBsYWNlQ29uZmlybShjbSkge1xuICAgICAgcmV0dXJuIGVsKFwiXCIsIG51bGwsIGVsKFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJDb2RlTWlycm9yLXNlYXJjaC1sYWJlbFwiIH0sIGNtLnBocmFzZShcIlJlcGxhY2U/XCIpKSwgXCIgXCIsIGVsKFwiYnV0dG9uXCIsIHt9LCBjbS5waHJhc2UoXCJZZXNcIikpLCBcIiBcIiwgZWwoXCJidXR0b25cIiwge30sIGNtLnBocmFzZShcIk5vXCIpKSwgXCIgXCIsIGVsKFwiYnV0dG9uXCIsIHt9LCBjbS5waHJhc2UoXCJBbGxcIikpLCBcIiBcIiwgZWwoXCJidXR0b25cIiwge30sIGNtLnBocmFzZShcIlN0b3BcIikpKTtcbiAgICB9XG4gICAgX19uYW1lKGdldERvUmVwbGFjZUNvbmZpcm0sIFwiZ2V0RG9SZXBsYWNlQ29uZmlybVwiKTtcbiAgICBmdW5jdGlvbiByZXBsYWNlQWxsKGNtLCBxdWVyeSwgdGV4dCkge1xuICAgICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICBmb3IgKHZhciBjdXJzb3IgPSBnZXRTZWFyY2hDdXJzb3IoY20sIHF1ZXJ5KTsgY3Vyc29yLmZpbmROZXh0KCk7ICkge1xuICAgICAgICAgIGlmICh0eXBlb2YgcXVlcnkgIT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgdmFyIG1hdGNoID0gY20uZ2V0UmFuZ2UoY3Vyc29yLmZyb20oKSwgY3Vyc29yLnRvKCkpLm1hdGNoKHF1ZXJ5KTtcbiAgICAgICAgICAgIGN1cnNvci5yZXBsYWNlKHRleHQucmVwbGFjZSgvXFwkKFxcZCkvZywgZnVuY3Rpb24oXywgaSkge1xuICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hbaV07XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICBjdXJzb3IucmVwbGFjZSh0ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIF9fbmFtZShyZXBsYWNlQWxsLCBcInJlcGxhY2VBbGxcIik7XG4gICAgZnVuY3Rpb24gcmVwbGFjZShjbSwgYWxsKSB7XG4gICAgICBpZiAoY20uZ2V0T3B0aW9uKFwicmVhZE9ubHlcIikpXG4gICAgICAgIHJldHVybjtcbiAgICAgIHZhciBxdWVyeSA9IGNtLmdldFNlbGVjdGlvbigpIHx8IGdldFNlYXJjaFN0YXRlKGNtKS5sYXN0UXVlcnk7XG4gICAgICB2YXIgZGlhbG9nVGV4dCA9IGFsbCA/IGNtLnBocmFzZShcIlJlcGxhY2UgYWxsOlwiKSA6IGNtLnBocmFzZShcIlJlcGxhY2U6XCIpO1xuICAgICAgdmFyIGZyYWdtZW50ID0gZWwoXCJcIiwgbnVsbCwgZWwoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBcIkNvZGVNaXJyb3Itc2VhcmNoLWxhYmVsXCIgfSwgZGlhbG9nVGV4dCksIGdldFJlcGxhY2VRdWVyeURpYWxvZyhjbSkpO1xuICAgICAgZGlhbG9nMihjbSwgZnJhZ21lbnQsIGRpYWxvZ1RleHQsIHF1ZXJ5LCBmdW5jdGlvbihxdWVyeTIpIHtcbiAgICAgICAgaWYgKCFxdWVyeTIpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBxdWVyeTIgPSBwYXJzZVF1ZXJ5KHF1ZXJ5Mik7XG4gICAgICAgIGRpYWxvZzIoY20sIGdldFJlcGxhY2VtZW50UXVlcnlEaWFsb2coY20pLCBjbS5waHJhc2UoXCJSZXBsYWNlIHdpdGg6XCIpLCBcIlwiLCBmdW5jdGlvbih0ZXh0KSB7XG4gICAgICAgICAgdGV4dCA9IHBhcnNlU3RyaW5nKHRleHQpO1xuICAgICAgICAgIGlmIChhbGwpIHtcbiAgICAgICAgICAgIHJlcGxhY2VBbGwoY20sIHF1ZXJ5MiwgdGV4dCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsZWFyU2VhcmNoKGNtKTtcbiAgICAgICAgICAgIHZhciBjdXJzb3IgPSBnZXRTZWFyY2hDdXJzb3IoY20sIHF1ZXJ5MiwgY20uZ2V0Q3Vyc29yKFwiZnJvbVwiKSk7XG4gICAgICAgICAgICB2YXIgYWR2YW5jZSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHZhciBzdGFydCA9IGN1cnNvci5mcm9tKCksIG1hdGNoO1xuICAgICAgICAgICAgICBpZiAoIShtYXRjaCA9IGN1cnNvci5maW5kTmV4dCgpKSkge1xuICAgICAgICAgICAgICAgIGN1cnNvciA9IGdldFNlYXJjaEN1cnNvcihjbSwgcXVlcnkyKTtcbiAgICAgICAgICAgICAgICBpZiAoIShtYXRjaCA9IGN1cnNvci5maW5kTmV4dCgpKSB8fCBzdGFydCAmJiBjdXJzb3IuZnJvbSgpLmxpbmUgPT0gc3RhcnQubGluZSAmJiBjdXJzb3IuZnJvbSgpLmNoID09IHN0YXJ0LmNoKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNtLnNldFNlbGVjdGlvbihjdXJzb3IuZnJvbSgpLCBjdXJzb3IudG8oKSk7XG4gICAgICAgICAgICAgIGNtLnNjcm9sbEludG9WaWV3KHsgZnJvbTogY3Vyc29yLmZyb20oKSwgdG86IGN1cnNvci50bygpIH0pO1xuICAgICAgICAgICAgICBjb25maXJtRGlhbG9nKGNtLCBnZXREb1JlcGxhY2VDb25maXJtKGNtKSwgY20ucGhyYXNlKFwiUmVwbGFjZT9cIiksIFtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgIGRvUmVwbGFjZShtYXRjaCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhZHZhbmNlLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgcmVwbGFjZUFsbChjbSwgcXVlcnkyLCB0ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgfSwgXCJhZHZhbmNlXCIpO1xuICAgICAgICAgICAgdmFyIGRvUmVwbGFjZSA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24obWF0Y2gpIHtcbiAgICAgICAgICAgICAgY3Vyc29yLnJlcGxhY2UodHlwZW9mIHF1ZXJ5MiA9PSBcInN0cmluZ1wiID8gdGV4dCA6IHRleHQucmVwbGFjZSgvXFwkKFxcZCkvZywgZnVuY3Rpb24oXywgaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaFtpXTtcbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICBhZHZhbmNlKCk7XG4gICAgICAgICAgICB9LCBcImRvUmVwbGFjZVwiKTtcbiAgICAgICAgICAgIGFkdmFuY2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIF9fbmFtZShyZXBsYWNlLCBcInJlcGxhY2VcIik7XG4gICAgQ29kZU1pcnJvci5jb21tYW5kcy5maW5kID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIGNsZWFyU2VhcmNoKGNtKTtcbiAgICAgIGRvU2VhcmNoKGNtKTtcbiAgICB9O1xuICAgIENvZGVNaXJyb3IuY29tbWFuZHMuZmluZFBlcnNpc3RlbnQgPSBmdW5jdGlvbihjbSkge1xuICAgICAgY2xlYXJTZWFyY2goY20pO1xuICAgICAgZG9TZWFyY2goY20sIGZhbHNlLCB0cnVlKTtcbiAgICB9O1xuICAgIENvZGVNaXJyb3IuY29tbWFuZHMuZmluZFBlcnNpc3RlbnROZXh0ID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIGRvU2VhcmNoKGNtLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfTtcbiAgICBDb2RlTWlycm9yLmNvbW1hbmRzLmZpbmRQZXJzaXN0ZW50UHJldiA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICBkb1NlYXJjaChjbSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfTtcbiAgICBDb2RlTWlycm9yLmNvbW1hbmRzLmZpbmROZXh0ID0gZG9TZWFyY2g7XG4gICAgQ29kZU1pcnJvci5jb21tYW5kcy5maW5kUHJldiA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICBkb1NlYXJjaChjbSwgdHJ1ZSk7XG4gICAgfTtcbiAgICBDb2RlTWlycm9yLmNvbW1hbmRzLmNsZWFyU2VhcmNoID0gY2xlYXJTZWFyY2g7XG4gICAgQ29kZU1pcnJvci5jb21tYW5kcy5yZXBsYWNlID0gcmVwbGFjZTtcbiAgICBDb2RlTWlycm9yLmNvbW1hbmRzLnJlcGxhY2VBbGwgPSBmdW5jdGlvbihjbSkge1xuICAgICAgcmVwbGFjZShjbSwgdHJ1ZSk7XG4gICAgfTtcbiAgfSk7XG59KSgpO1xudmFyIHNlYXJjaCA9IHNlYXJjaCQyLmV4cG9ydHM7XG52YXIgc2VhcmNoJDEgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmZyZWV6ZSgvKiBAX19QVVJFX18gKi8gX21lcmdlTmFtZXNwYWNlcyh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IFwiTW9kdWxlXCIsXG4gIFwiZGVmYXVsdFwiOiBzZWFyY2hcbn0sIFtzZWFyY2gkMi5leHBvcnRzXSkpO1xuZXhwb3J0IHsgc2VhcmNoJDEgYXMgcyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVhBO0FBWUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFVQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/search.es.js\n");
|
2736 |
|
2737 | }),
|
2738 |
|
2739 | "../../graphiql-react/dist/searchcursor.es.js":
|
2740 |
|
2741 |
|
2742 |
|
2743 |
|
2744 | (function(module, exports, __webpack_require__) {
|
2745 |
|
2746 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.s = _exports.a = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var searchcursor$2 = {\n exports: {}\n };\n _exports.a = searchcursor$2;\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports);\n })(function (CodeMirror) {\n var Pos = CodeMirror.Pos;\n\n function regexpFlags(regexp) {\n var flags = regexp.flags;\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\") + (regexp.global ? \"g\" : \"\") + (regexp.multiline ? \"m\" : \"\");\n }\n\n __name(regexpFlags, \"regexpFlags\");\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp),\n target = current;\n\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1) target += flags.charAt(i);\n\n return current == target ? regexp : new RegExp(regexp.source, target);\n }\n\n __name(ensureFlags, \"ensureFlags\");\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source);\n }\n\n __name(maybeMultiline, \"maybeMultiline\");\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\");\n\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch;\n var string = doc.getLine(line),\n match = regexp.exec(string);\n if (match) return {\n from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match\n };\n }\n }\n\n __name(searchRegexpForward, \"searchRegexpForward\");\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start);\n regexp = ensureFlags(regexp, \"gm\");\n var string,\n chunk = 1;\n\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n for (var i = 0; i < chunk; i++) {\n if (line > last) break;\n var curLine = doc.getLine(line++);\n string = string == null ? curLine : string + \"\\n\" + curLine;\n }\n\n chunk = chunk * 2;\n regexp.lastIndex = start.ch;\n var match = regexp.exec(string);\n\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"),\n inside = match[0].split(\"\\n\");\n var startLine = start.line + before.length - 1,\n startCh = before[before.length - 1].length;\n return {\n from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1, inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match\n };\n }\n }\n }\n\n __name(searchRegexpForwardMultiline, \"searchRegexpForwardMultiline\");\n\n function lastMatchIn(string, regexp, endMargin) {\n var match,\n from = 0;\n\n while (from <= string.length) {\n regexp.lastIndex = from;\n var newMatch = regexp.exec(string);\n if (!newMatch) break;\n var end = newMatch.index + newMatch[0].length;\n if (end > string.length - endMargin) break;\n if (!match || end > match.index + match[0].length) match = newMatch;\n from = newMatch.index + 1;\n }\n\n return match;\n }\n\n __name(lastMatchIn, \"lastMatchIn\");\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\");\n\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line);\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch);\n if (match) return {\n from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match\n };\n }\n }\n\n __name(searchRegexpBackward, \"searchRegexpBackward\");\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start);\n regexp = ensureFlags(regexp, \"gm\");\n var string,\n chunkSize = 1,\n endMargin = doc.getLine(start.line).length - start.ch;\n\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--);\n string = string == null ? curLine : curLine + \"\\n\" + string;\n }\n\n chunkSize *= 2;\n var match = lastMatchIn(string, regexp, endMargin);\n\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"),\n inside = match[0].split(\"\\n\");\n var startLine = line + before.length,\n startCh = before[before.length - 1].length;\n return {\n from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1, inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match\n };\n }\n }\n }\n\n __name(searchRegexpBackwardMultiline, \"searchRegexpBackwardMultiline\");\n\n var doFold, noFold;\n\n if (String.prototype.normalize) {\n doFold = /* @__PURE__ */__name(function (str) {\n return str.normalize(\"NFD\").toLowerCase();\n }, \"doFold\");\n noFold = /* @__PURE__ */__name(function (str) {\n return str.normalize(\"NFD\");\n }, \"noFold\");\n } else {\n doFold = /* @__PURE__ */__name(function (str) {\n return str.toLowerCase();\n }, \"doFold\");\n noFold = /* @__PURE__ */__name(function (str) {\n return str;\n }, \"noFold\");\n }\n\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos;\n\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min;\n var mid = min + max >> 1;\n var len = foldFunc(orig.slice(0, mid)).length;\n if (len == pos) return mid;else if (len > pos) max = mid;else min = mid + 1;\n }\n }\n\n __name(adjustPos, \"adjustPos\");\n\n function searchStringForward(doc, query, start, caseFold) {\n if (!query.length) return null;\n var fold = caseFold ? doFold : noFold;\n var lines = fold(query).split(/\\r|\\n\\r?/);\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch),\n string = fold(orig);\n\n if (lines.length == 1) {\n var found = string.indexOf(lines[0]);\n if (found == -1) continue search;\n var start = adjustPos(orig, string, found, fold) + ch;\n return {\n from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)\n };\n } else {\n var cutFrom = string.length - lines[0].length;\n if (string.slice(cutFrom) != lines[0]) continue search;\n\n for (var i = 1; i < lines.length - 1; i++) if (fold(doc.getLine(line + i)) != lines[i]) continue search;\n\n var end = doc.getLine(line + lines.length - 1),\n endString = fold(end),\n lastLine = lines[lines.length - 1];\n if (endString.slice(0, lastLine.length) != lastLine) continue search;\n return {\n from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))\n };\n }\n }\n }\n\n __name(searchStringForward, \"searchStringForward\");\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null;\n var fold = caseFold ? doFold : noFold;\n var lines = fold(query).split(/\\r|\\n\\r?/);\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line);\n if (ch > -1) orig = orig.slice(0, ch);\n var string = fold(orig);\n\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0]);\n if (found == -1) continue search;\n return {\n from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))\n };\n } else {\n var lastLine = lines[lines.length - 1];\n if (string.slice(0, lastLine.length) != lastLine) continue search;\n\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++) if (fold(doc.getLine(start + i)) != lines[i]) continue search;\n\n var top = doc.getLine(line + 1 - lines.length),\n topString = fold(top);\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search;\n return {\n from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))\n };\n }\n }\n }\n\n __name(searchStringBackward, \"searchStringBackward\");\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false;\n this.afterEmptyMatch = false;\n this.doc = doc;\n pos = pos ? doc.clipPos(pos) : Pos(0, 0);\n this.pos = {\n from: pos,\n to: pos\n };\n var caseFold;\n\n if (typeof options == \"object\") {\n caseFold = options.caseFold;\n } else {\n caseFold = options;\n options = null;\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false;\n\n this.matches = function (reverse, pos2) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos2, caseFold);\n };\n } else {\n query = ensureFlags(query, \"gm\");\n if (!options || options.multiline !== false) this.matches = function (reverse, pos2) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos2);\n };else this.matches = function (reverse, pos2) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos2);\n };\n }\n }\n\n __name(SearchCursor, \"SearchCursor\");\n\n SearchCursor.prototype = {\n findNext: function () {\n return this.find(false);\n },\n findPrevious: function () {\n return this.find(true);\n },\n find: function (reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n\n if (this.afterEmptyMatch && this.atOccurrence) {\n head = Pos(head.line, head.ch);\n\n if (reverse) {\n head.ch--;\n\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false;\n }\n }\n\n var result = this.matches(reverse, head);\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0;\n\n if (result) {\n this.pos = result;\n this.atOccurrence = true;\n return this.pos.match || true;\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0);\n this.pos = {\n from: end,\n to: end\n };\n return this.atOccurrence = false;\n }\n },\n from: function () {\n if (this.atOccurrence) return this.pos.from;\n },\n to: function () {\n if (this.atOccurrence) return this.pos.to;\n },\n replace: function (newText, origin) {\n if (!this.atOccurrence) return;\n var lines = CodeMirror.splitLines(newText);\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin);\n this.pos.to = Pos(this.pos.from.line + lines.length - 1, lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0));\n }\n };\n CodeMirror.defineExtension(\"getSearchCursor\", function (query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold);\n });\n CodeMirror.defineDocExtension(\"getSearchCursor\", function (query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold);\n });\n CodeMirror.defineExtension(\"selectMatches\", function (query, caseFold) {\n var ranges = [];\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold);\n\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break;\n ranges.push({\n anchor: cur.from(),\n head: cur.to()\n });\n }\n\n if (ranges.length) this.setSelections(ranges, 0);\n });\n });\n })();\n\n var searchcursor = searchcursor$2.exports;\n var searchcursor$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": searchcursor\n }, [searchcursor$2.exports]));\n _exports.s = searchcursor$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9zZWFyY2hjdXJzb3IuZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9wYWNrYWdlcy9ncmFwaGlxbC1yZWFjdC9kaXN0L3NlYXJjaGN1cnNvci5lcy5qcz8xYWIwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lID0gKHRhcmdldCwgdmFsdWUpID0+IF9fZGVmUHJvcCh0YXJnZXQsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG5pbXBvcnQgeyBhIGFzIGNvZGVtaXJyb3IgfSBmcm9tIFwiLi9jb2RlbWlycm9yLmVzLmpzXCI7XG5mdW5jdGlvbiBfbWVyZ2VOYW1lc3BhY2VzKG4sIG0pIHtcbiAgbS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHtcbiAgICBlICYmIHR5cGVvZiBlICE9PSBcInN0cmluZ1wiICYmICFBcnJheS5pc0FycmF5KGUpICYmIE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgICAgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmICEoayBpbiBuKSkge1xuICAgICAgICB2YXIgZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgayk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCBrLCBkLmdldCA/IGQgOiB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIGVba107XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKG4pO1xufVxuX19uYW1lKF9tZXJnZU5hbWVzcGFjZXMsIFwiX21lcmdlTmFtZXNwYWNlc1wiKTtcbnZhciBzZWFyY2hjdXJzb3IkMiA9IHsgZXhwb3J0czoge30gfTtcbihmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcbiAgKGZ1bmN0aW9uKG1vZCkge1xuICAgIG1vZChjb2RlbWlycm9yLmV4cG9ydHMpO1xuICB9KShmdW5jdGlvbihDb2RlTWlycm9yKSB7XG4gICAgdmFyIFBvcyA9IENvZGVNaXJyb3IuUG9zO1xuICAgIGZ1bmN0aW9uIHJlZ2V4cEZsYWdzKHJlZ2V4cCkge1xuICAgICAgdmFyIGZsYWdzID0gcmVnZXhwLmZsYWdzO1xuICAgICAgcmV0dXJuIGZsYWdzICE9IG51bGwgPyBmbGFncyA6IChyZWdleHAuaWdub3JlQ2FzZSA/IFwiaVwiIDogXCJcIikgKyAocmVnZXhwLmdsb2JhbCA/IFwiZ1wiIDogXCJcIikgKyAocmVnZXhwLm11bHRpbGluZSA/IFwibVwiIDogXCJcIik7XG4gICAgfVxuICAgIF9fbmFtZShyZWdleHBGbGFncywgXCJyZWdleHBGbGFnc1wiKTtcbiAgICBmdW5jdGlvbiBlbnN1cmVGbGFncyhyZWdleHAsIGZsYWdzKSB7XG4gICAgICB2YXIgY3VycmVudCA9IHJlZ2V4cEZsYWdzKHJlZ2V4cCksIHRhcmdldCA9IGN1cnJlbnQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZsYWdzLmxlbmd0aDsgaSsrKVxuICAgICAgICBpZiAodGFyZ2V0LmluZGV4T2YoZmxhZ3MuY2hhckF0KGkpKSA9PSAtMSlcbiAgICAgICAgICB0YXJnZXQgKz0gZmxhZ3MuY2hhckF0KGkpO1xuICAgICAgcmV0dXJuIGN1cnJlbnQgPT0gdGFyZ2V0ID8gcmVnZXhwIDogbmV3IFJlZ0V4cChyZWdleHAuc291cmNlLCB0YXJnZXQpO1xuICAgIH1cbiAgICBfX25hbWUoZW5zdXJlRmxhZ3MsIFwiZW5zdXJlRmxhZ3NcIik7XG4gICAgZnVuY3Rpb24gbWF5YmVNdWx0aWxpbmUocmVnZXhwKSB7XG4gICAgICByZXR1cm4gL1xcXFxzfFxcXFxufFxcbnxcXFxcV3xcXFxcRHxcXFtcXF4vLnRlc3QocmVnZXhwLnNvdXJjZSk7XG4gICAgfVxuICAgIF9fbmFtZShtYXliZU11bHRpbGluZSwgXCJtYXliZU11bHRpbGluZVwiKTtcbiAgICBmdW5jdGlvbiBzZWFyY2hSZWdleHBGb3J3YXJkKGRvYywgcmVnZXhwLCBzdGFydCkge1xuICAgICAgcmVnZXhwID0gZW5zdXJlRmxhZ3MocmVnZXhwLCBcImdcIik7XG4gICAgICBmb3IgKHZhciBsaW5lID0gc3RhcnQubGluZSwgY2ggPSBzdGFydC5jaCwgbGFzdCA9IGRvYy5sYXN0TGluZSgpOyBsaW5lIDw9IGxhc3Q7IGxpbmUrKywgY2ggPSAwKSB7XG4gICAgICAgIHJlZ2V4cC5sYXN0SW5kZXggPSBjaDtcbiAgICAgICAgdmFyIHN0cmluZyA9IGRvYy5nZXRMaW5lKGxpbmUpLCBtYXRjaCA9IHJlZ2V4cC5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChtYXRjaClcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZnJvbTogUG9zKGxpbmUsIG1hdGNoLmluZGV4KSxcbiAgICAgICAgICAgIHRvOiBQb3MobGluZSwgbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpLFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoc2VhcmNoUmVnZXhwRm9yd2FyZCwgXCJzZWFyY2hSZWdleHBGb3J3YXJkXCIpO1xuICAgIGZ1bmN0aW9uIHNlYXJjaFJlZ2V4cEZvcndhcmRNdWx0aWxpbmUoZG9jLCByZWdleHAsIHN0YXJ0KSB7XG4gICAgICBpZiAoIW1heWJlTXVsdGlsaW5lKHJlZ2V4cCkpXG4gICAgICAgIHJldHVybiBzZWFyY2hSZWdleHBGb3J3YXJkKGRvYywgcmVnZXhwLCBzdGFydCk7XG4gICAgICByZWdleHAgPSBlbnN1cmVGbGFncyhyZWdleHAsIFwiZ21cIik7XG4gICAgICB2YXIgc3RyaW5nLCBjaHVuayA9IDE7XG4gICAgICBmb3IgKHZhciBsaW5lID0gc3RhcnQubGluZSwgbGFzdCA9IGRvYy5sYXN0TGluZSgpOyBsaW5lIDw9IGxhc3Q7ICkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNodW5rOyBpKyspIHtcbiAgICAgICAgICBpZiAobGluZSA+IGxhc3QpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB2YXIgY3VyTGluZSA9IGRvYy5nZXRMaW5lKGxpbmUrKyk7XG4gICAgICAgICAgc3RyaW5nID0gc3RyaW5nID09IG51bGwgPyBjdXJMaW5lIDogc3RyaW5nICsgXCJcXG5cIiArIGN1ckxpbmU7XG4gICAgICAgIH1cbiAgICAgICAgY2h1bmsgPSBjaHVuayAqIDI7XG4gICAgICAgIHJlZ2V4cC5sYXN0SW5kZXggPSBzdGFydC5jaDtcbiAgICAgICAgdmFyIG1hdGNoID0gcmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgdmFyIGJlZm9yZSA9IHN0cmluZy5zbGljZSgwLCBtYXRjaC5pbmRleCkuc3BsaXQoXCJcXG5cIiksIGluc2lkZSA9IG1hdGNoWzBdLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgICAgIHZhciBzdGFydExpbmUgPSBzdGFydC5saW5lICsgYmVmb3JlLmxlbmd0aCAtIDEsIHN0YXJ0Q2ggPSBiZWZvcmVbYmVmb3JlLmxlbmd0aCAtIDFdLmxlbmd0aDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZnJvbTogUG9zKHN0YXJ0TGluZSwgc3RhcnRDaCksXG4gICAgICAgICAgICB0bzogUG9zKHN0YXJ0TGluZSArIGluc2lkZS5sZW5ndGggLSAxLCBpbnNpZGUubGVuZ3RoID09IDEgPyBzdGFydENoICsgaW5zaWRlWzBdLmxlbmd0aCA6IGluc2lkZVtpbnNpZGUubGVuZ3RoIC0gMV0ubGVuZ3RoKSxcbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoc2VhcmNoUmVnZXhwRm9yd2FyZE11bHRpbGluZSwgXCJzZWFyY2hSZWdleHBGb3J3YXJkTXVsdGlsaW5lXCIpO1xuICAgIGZ1bmN0aW9uIGxhc3RNYXRjaEluKHN0cmluZywgcmVnZXhwLCBlbmRNYXJnaW4pIHtcbiAgICAgIHZhciBtYXRjaCwgZnJvbSA9IDA7XG4gICAgICB3aGlsZSAoZnJvbSA8PSBzdHJpbmcubGVuZ3RoKSB7XG4gICAgICAgIHJlZ2V4cC5sYXN0SW5kZXggPSBmcm9tO1xuICAgICAgICB2YXIgbmV3TWF0Y2ggPSByZWdleHAuZXhlYyhzdHJpbmcpO1xuICAgICAgICBpZiAoIW5ld01hdGNoKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB2YXIgZW5kID0gbmV3TWF0Y2guaW5kZXggKyBuZXdNYXRjaFswXS5sZW5ndGg7XG4gICAgICAgIGlmIChlbmQgPiBzdHJpbmcubGVuZ3RoIC0gZW5kTWFyZ2luKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBpZiAoIW1hdGNoIHx8IGVuZCA+IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoKVxuICAgICAgICAgIG1hdGNoID0gbmV3TWF0Y2g7XG4gICAgICAgIGZyb20gPSBuZXdNYXRjaC5pbmRleCArIDE7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfVxuICAgIF9fbmFtZShsYXN0TWF0Y2hJbiwgXCJsYXN0TWF0Y2hJblwiKTtcbiAgICBmdW5jdGlvbiBzZWFyY2hSZWdleHBCYWNrd2FyZChkb2MsIHJlZ2V4cCwgc3RhcnQpIHtcbiAgICAgIHJlZ2V4cCA9IGVuc3VyZUZsYWdzKHJlZ2V4cCwgXCJnXCIpO1xuICAgICAgZm9yICh2YXIgbGluZSA9IHN0YXJ0LmxpbmUsIGNoID0gc3RhcnQuY2gsIGZpcnN0ID0gZG9jLmZpcnN0TGluZSgpOyBsaW5lID49IGZpcnN0OyBsaW5lLS0sIGNoID0gLTEpIHtcbiAgICAgICAgdmFyIHN0cmluZyA9IGRvYy5nZXRMaW5lKGxpbmUpO1xuICAgICAgICB2YXIgbWF0Y2ggPSBsYXN0TWF0Y2hJbihzdHJpbmcsIHJlZ2V4cCwgY2ggPCAwID8gMCA6IHN0cmluZy5sZW5ndGggLSBjaCk7XG4gICAgICAgIGlmIChtYXRjaClcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZnJvbTogUG9zKGxpbmUsIG1hdGNoLmluZGV4KSxcbiAgICAgICAgICAgIHRvOiBQb3MobGluZSwgbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpLFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoc2VhcmNoUmVnZXhwQmFja3dhcmQsIFwic2VhcmNoUmVnZXhwQmFja3dhcmRcIik7XG4gICAgZnVuY3Rpb24gc2VhcmNoUmVnZXhwQmFja3dhcmRNdWx0aWxpbmUoZG9jLCByZWdleHAsIHN0YXJ0KSB7XG4gICAgICBpZiAoIW1heWJlTXVsdGlsaW5lKHJlZ2V4cCkpXG4gICAgICAgIHJldHVybiBzZWFyY2hSZWdleHBCYWNrd2FyZChkb2MsIHJlZ2V4cCwgc3RhcnQpO1xuICAgICAgcmVnZXhwID0gZW5zdXJlRmxhZ3MocmVnZXhwLCBcImdtXCIpO1xuICAgICAgdmFyIHN0cmluZywgY2h1bmtTaXplID0gMSwgZW5kTWFyZ2luID0gZG9jLmdldExpbmUoc3RhcnQubGluZSkubGVuZ3RoIC0gc3RhcnQuY2g7XG4gICAgICBmb3IgKHZhciBsaW5lID0gc3RhcnQubGluZSwgZmlyc3QgPSBkb2MuZmlyc3RMaW5lKCk7IGxpbmUgPj0gZmlyc3Q7ICkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNodW5rU2l6ZSAmJiBsaW5lID49IGZpcnN0OyBpKyspIHtcbiAgICAgICAgICB2YXIgY3VyTGluZSA9IGRvYy5nZXRMaW5lKGxpbmUtLSk7XG4gICAgICAgICAgc3RyaW5nID0gc3RyaW5nID09IG51bGwgPyBjdXJMaW5lIDogY3VyTGluZSArIFwiXFxuXCIgKyBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgY2h1bmtTaXplICo9IDI7XG4gICAgICAgIHZhciBtYXRjaCA9IGxhc3RNYXRjaEluKHN0cmluZywgcmVnZXhwLCBlbmRNYXJnaW4pO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB2YXIgYmVmb3JlID0gc3RyaW5nLnNsaWNlKDAsIG1hdGNoLmluZGV4KS5zcGxpdChcIlxcblwiKSwgaW5zaWRlID0gbWF0Y2hbMF0uc3BsaXQoXCJcXG5cIik7XG4gICAgICAgICAgdmFyIHN0YXJ0TGluZSA9IGxpbmUgKyBiZWZvcmUubGVuZ3RoLCBzdGFydENoID0gYmVmb3JlW2JlZm9yZS5sZW5ndGggLSAxXS5sZW5ndGg7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZyb206IFBvcyhzdGFydExpbmUsIHN0YXJ0Q2gpLFxuICAgICAgICAgICAgdG86IFBvcyhzdGFydExpbmUgKyBpbnNpZGUubGVuZ3RoIC0gMSwgaW5zaWRlLmxlbmd0aCA9PSAxID8gc3RhcnRDaCArIGluc2lkZVswXS5sZW5ndGggOiBpbnNpZGVbaW5zaWRlLmxlbmd0aCAtIDFdLmxlbmd0aCksXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHNlYXJjaFJlZ2V4cEJhY2t3YXJkTXVsdGlsaW5lLCBcInNlYXJjaFJlZ2V4cEJhY2t3YXJkTXVsdGlsaW5lXCIpO1xuICAgIHZhciBkb0ZvbGQsIG5vRm9sZDtcbiAgICBpZiAoU3RyaW5nLnByb3RvdHlwZS5ub3JtYWxpemUpIHtcbiAgICAgIGRvRm9sZCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHIubm9ybWFsaXplKFwiTkZEXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9LCBcImRvRm9sZFwiKTtcbiAgICAgIG5vRm9sZCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHIubm9ybWFsaXplKFwiTkZEXCIpO1xuICAgICAgfSwgXCJub0ZvbGRcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvRm9sZCA9IC8qIEBfX1BVUkVfXyAqLyBfX25hbWUoZnVuY3Rpb24oc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHIudG9Mb3dlckNhc2UoKTtcbiAgICAgIH0sIFwiZG9Gb2xkXCIpO1xuICAgICAgbm9Gb2xkID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICAgIH0sIFwibm9Gb2xkXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhZGp1c3RQb3Mob3JpZywgZm9sZGVkLCBwb3MsIGZvbGRGdW5jKSB7XG4gICAgICBpZiAob3JpZy5sZW5ndGggPT0gZm9sZGVkLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIHBvcztcbiAgICAgIGZvciAodmFyIG1pbiA9IDAsIG1heCA9IHBvcyArIE1hdGgubWF4KDAsIG9yaWcubGVuZ3RoIC0gZm9sZGVkLmxlbmd0aCk7IDsgKSB7XG4gICAgICAgIGlmIChtaW4gPT0gbWF4KVxuICAgICAgICAgIHJldHVybiBtaW47XG4gICAgICAgIHZhciBtaWQgPSBtaW4gKyBtYXggPj4gMTtcbiAgICAgICAgdmFyIGxlbiA9IGZvbGRGdW5jKG9yaWcuc2xpY2UoMCwgbWlkKSkubGVuZ3RoO1xuICAgICAgICBpZiAobGVuID09IHBvcylcbiAgICAgICAgICByZXR1cm4gbWlkO1xuICAgICAgICBlbHNlIGlmIChsZW4gPiBwb3MpXG4gICAgICAgICAgbWF4ID0gbWlkO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbWluID0gbWlkICsgMTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKGFkanVzdFBvcywgXCJhZGp1c3RQb3NcIik7XG4gICAgZnVuY3Rpb24gc2VhcmNoU3RyaW5nRm9yd2FyZChkb2MsIHF1ZXJ5LCBzdGFydCwgY2FzZUZvbGQpIHtcbiAgICAgIGlmICghcXVlcnkubGVuZ3RoKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIHZhciBmb2xkID0gY2FzZUZvbGQgPyBkb0ZvbGQgOiBub0ZvbGQ7XG4gICAgICB2YXIgbGluZXMgPSBmb2xkKHF1ZXJ5KS5zcGxpdCgvXFxyfFxcblxccj8vKTtcbiAgICAgIHNlYXJjaDpcbiAgICAgICAgZm9yICh2YXIgbGluZSA9IHN0YXJ0LmxpbmUsIGNoID0gc3RhcnQuY2gsIGxhc3QgPSBkb2MubGFzdExpbmUoKSArIDEgLSBsaW5lcy5sZW5ndGg7IGxpbmUgPD0gbGFzdDsgbGluZSsrLCBjaCA9IDApIHtcbiAgICAgICAgICB2YXIgb3JpZyA9IGRvYy5nZXRMaW5lKGxpbmUpLnNsaWNlKGNoKSwgc3RyaW5nID0gZm9sZChvcmlnKTtcbiAgICAgICAgICBpZiAobGluZXMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgIHZhciBmb3VuZCA9IHN0cmluZy5pbmRleE9mKGxpbmVzWzBdKTtcbiAgICAgICAgICAgIGlmIChmb3VuZCA9PSAtMSlcbiAgICAgICAgICAgICAgY29udGludWUgc2VhcmNoO1xuICAgICAgICAgICAgdmFyIHN0YXJ0ID0gYWRqdXN0UG9zKG9yaWcsIHN0cmluZywgZm91bmQsIGZvbGQpICsgY2g7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBmcm9tOiBQb3MobGluZSwgYWRqdXN0UG9zKG9yaWcsIHN0cmluZywgZm91bmQsIGZvbGQpICsgY2gpLFxuICAgICAgICAgICAgICB0bzogUG9zKGxpbmUsIGFkanVzdFBvcyhvcmlnLCBzdHJpbmcsIGZvdW5kICsgbGluZXNbMF0ubGVuZ3RoLCBmb2xkKSArIGNoKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGN1dEZyb20gPSBzdHJpbmcubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKHN0cmluZy5zbGljZShjdXRGcm9tKSAhPSBsaW5lc1swXSlcbiAgICAgICAgICAgICAgY29udGludWUgc2VhcmNoO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBsaW5lcy5sZW5ndGggLSAxOyBpKyspXG4gICAgICAgICAgICAgIGlmIChmb2xkKGRvYy5nZXRMaW5lKGxpbmUgKyBpKSkgIT0gbGluZXNbaV0pXG4gICAgICAgICAgICAgICAgY29udGludWUgc2VhcmNoO1xuICAgICAgICAgICAgdmFyIGVuZCA9IGRvYy5nZXRMaW5lKGxpbmUgKyBsaW5lcy5sZW5ndGggLSAxKSwgZW5kU3RyaW5nID0gZm9sZChlbmQpLCBsYXN0TGluZSA9IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgaWYgKGVuZFN0cmluZy5zbGljZSgwLCBsYXN0TGluZS5sZW5ndGgpICE9IGxhc3RMaW5lKVxuICAgICAgICAgICAgICBjb250aW51ZSBzZWFyY2g7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBmcm9tOiBQb3MobGluZSwgYWRqdXN0UG9zKG9yaWcsIHN0cmluZywgY3V0RnJvbSwgZm9sZCkgKyBjaCksXG4gICAgICAgICAgICAgIHRvOiBQb3MobGluZSArIGxpbmVzLmxlbmd0aCAtIDEsIGFkanVzdFBvcyhlbmQsIGVuZFN0cmluZywgbGFzdExpbmUubGVuZ3RoLCBmb2xkKSlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShzZWFyY2hTdHJpbmdGb3J3YXJkLCBcInNlYXJjaFN0cmluZ0ZvcndhcmRcIik7XG4gICAgZnVuY3Rpb24gc2VhcmNoU3RyaW5nQmFja3dhcmQoZG9jLCBxdWVyeSwgc3RhcnQsIGNhc2VGb2xkKSB7XG4gICAgICBpZiAoIXF1ZXJ5Lmxlbmd0aClcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgZm9sZCA9IGNhc2VGb2xkID8gZG9Gb2xkIDogbm9Gb2xkO1xuICAgICAgdmFyIGxpbmVzID0gZm9sZChxdWVyeSkuc3BsaXQoL1xccnxcXG5cXHI/Lyk7XG4gICAgICBzZWFyY2g6XG4gICAgICAgIGZvciAodmFyIGxpbmUgPSBzdGFydC5saW5lLCBjaCA9IHN0YXJ0LmNoLCBmaXJzdCA9IGRvYy5maXJzdExpbmUoKSAtIDEgKyBsaW5lcy5sZW5ndGg7IGxpbmUgPj0gZmlyc3Q7IGxpbmUtLSwgY2ggPSAtMSkge1xuICAgICAgICAgIHZhciBvcmlnID0gZG9jLmdldExpbmUobGluZSk7XG4gICAgICAgICAgaWYgKGNoID4gLTEpXG4gICAgICAgICAgICBvcmlnID0gb3JpZy5zbGljZSgwLCBjaCk7XG4gICAgICAgICAgdmFyIHN0cmluZyA9IGZvbGQob3JpZyk7XG4gICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICB2YXIgZm91bmQgPSBzdHJpbmcubGFzdEluZGV4T2YobGluZXNbMF0pO1xuICAgICAgICAgICAgaWYgKGZvdW5kID09IC0xKVxuICAgICAgICAgICAgICBjb250aW51ZSBzZWFyY2g7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBmcm9tOiBQb3MobGluZSwgYWRqdXN0UG9zKG9yaWcsIHN0cmluZywgZm91bmQsIGZvbGQpKSxcbiAgICAgICAgICAgICAgdG86IFBvcyhsaW5lLCBhZGp1c3RQb3Mob3JpZywgc3RyaW5nLCBmb3VuZCArIGxpbmVzWzBdLmxlbmd0aCwgZm9sZCkpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgbGFzdExpbmUgPSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGlmIChzdHJpbmcuc2xpY2UoMCwgbGFzdExpbmUubGVuZ3RoKSAhPSBsYXN0TGluZSlcbiAgICAgICAgICAgICAgY29udGludWUgc2VhcmNoO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDEsIHN0YXJ0ID0gbGluZSAtIGxpbmVzLmxlbmd0aCArIDE7IGkgPCBsaW5lcy5sZW5ndGggLSAxOyBpKyspXG4gICAgICAgICAgICAgIGlmIChmb2xkKGRvYy5nZXRMaW5lKHN0YXJ0ICsgaSkpICE9IGxpbmVzW2ldKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlIHNlYXJjaDtcbiAgICAgICAgICAgIHZhciB0b3AgPSBkb2MuZ2V0TGluZShsaW5lICsgMSAtIGxpbmVzLmxlbmd0aCksIHRvcFN0cmluZyA9IGZvbGQodG9wKTtcbiAgICAgICAgICAgIGlmICh0b3BTdHJpbmcuc2xpY2UodG9wU3RyaW5nLmxlbmd0aCAtIGxpbmVzWzBdLmxlbmd0aCkgIT0gbGluZXNbMF0pXG4gICAgICAgICAgICAgIGNvbnRpbnVlIHNlYXJjaDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGZyb206IFBvcyhsaW5lICsgMSAtIGxpbmVzLmxlbmd0aCwgYWRqdXN0UG9zKHRvcCwgdG9wU3RyaW5nLCB0b3AubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoLCBmb2xkKSksXG4gICAgICAgICAgICAgIHRvOiBQb3MobGluZSwgYWRqdXN0UG9zKG9yaWcsIHN0cmluZywgbGFzdExpbmUubGVuZ3RoLCBmb2xkKSlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShzZWFyY2hTdHJpbmdCYWNrd2FyZCwgXCJzZWFyY2hTdHJpbmdCYWNrd2FyZFwiKTtcbiAgICBmdW5jdGlvbiBTZWFyY2hDdXJzb3IoZG9jLCBxdWVyeSwgcG9zLCBvcHRpb25zKSB7XG4gICAgICB0aGlzLmF0T2NjdXJyZW5jZSA9IGZhbHNlO1xuICAgICAgdGhpcy5hZnRlckVtcHR5TWF0Y2ggPSBmYWxzZTtcbiAgICAgIHRoaXMuZG9jID0gZG9jO1xuICAgICAgcG9zID0gcG9zID8gZG9jLmNsaXBQb3MocG9zKSA6IFBvcygwLCAwKTtcbiAgICAgIHRoaXMucG9zID0geyBmcm9tOiBwb3MsIHRvOiBwb3MgfTtcbiAgICAgIHZhciBjYXNlRm9sZDtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNhc2VGb2xkID0gb3B0aW9ucy5jYXNlRm9sZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhc2VGb2xkID0gb3B0aW9ucztcbiAgICAgICAgb3B0aW9ucyA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHF1ZXJ5ID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKGNhc2VGb2xkID09IG51bGwpXG4gICAgICAgICAgY2FzZUZvbGQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tYXRjaGVzID0gZnVuY3Rpb24ocmV2ZXJzZSwgcG9zMikge1xuICAgICAgICAgIHJldHVybiAocmV2ZXJzZSA/IHNlYXJjaFN0cmluZ0JhY2t3YXJkIDogc2VhcmNoU3RyaW5nRm9yd2FyZCkoZG9jLCBxdWVyeSwgcG9zMiwgY2FzZUZvbGQpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnkgPSBlbnN1cmVGbGFncyhxdWVyeSwgXCJnbVwiKTtcbiAgICAgICAgaWYgKCFvcHRpb25zIHx8IG9wdGlvbnMubXVsdGlsaW5lICE9PSBmYWxzZSlcbiAgICAgICAgICB0aGlzLm1hdGNoZXMgPSBmdW5jdGlvbihyZXZlcnNlLCBwb3MyKSB7XG4gICAgICAgICAgICByZXR1cm4gKHJldmVyc2UgPyBzZWFyY2hSZWdleHBCYWNrd2FyZE11bHRpbGluZSA6IHNlYXJjaFJlZ2V4cEZvcndhcmRNdWx0aWxpbmUpKGRvYywgcXVlcnksIHBvczIpO1xuICAgICAgICAgIH07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aGlzLm1hdGNoZXMgPSBmdW5jdGlvbihyZXZlcnNlLCBwb3MyKSB7XG4gICAgICAgICAgICByZXR1cm4gKHJldmVyc2UgPyBzZWFyY2hSZWdleHBCYWNrd2FyZCA6IHNlYXJjaFJlZ2V4cEZvcndhcmQpKGRvYywgcXVlcnksIHBvczIpO1xuICAgICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShTZWFyY2hDdXJzb3IsIFwiU2VhcmNoQ3Vyc29yXCIpO1xuICAgIFNlYXJjaEN1cnNvci5wcm90b3R5cGUgPSB7XG4gICAgICBmaW5kTmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmQoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIGZpbmRQcmV2aW91czogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmQodHJ1ZSk7XG4gICAgICB9LFxuICAgICAgZmluZDogZnVuY3Rpb24ocmV2ZXJzZSkge1xuICAgICAgICB2YXIgaGVhZCA9IHRoaXMuZG9jLmNsaXBQb3MocmV2ZXJzZSA/IHRoaXMucG9zLmZyb20gOiB0aGlzLnBvcy50byk7XG4gICAgICAgIGlmICh0aGlzLmFmdGVyRW1wdHlNYXRjaCAmJiB0aGlzLmF0T2NjdXJyZW5jZSkge1xuICAgICAgICAgIGhlYWQgPSBQb3MoaGVhZC5saW5lLCBoZWFkLmNoKTtcbiAgICAgICAgICBpZiAocmV2ZXJzZSkge1xuICAgICAgICAgICAgaGVhZC5jaC0tO1xuICAgICAgICAgICAgaWYgKGhlYWQuY2ggPCAwKSB7XG4gICAgICAgICAgICAgIGhlYWQubGluZS0tO1xuICAgICAgICAgICAgICBoZWFkLmNoID0gKHRoaXMuZG9jLmdldExpbmUoaGVhZC5saW5lKSB8fCBcIlwiKS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhlYWQuY2grKztcbiAgICAgICAgICAgIGlmIChoZWFkLmNoID4gKHRoaXMuZG9jLmdldExpbmUoaGVhZC5saW5lKSB8fCBcIlwiKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgaGVhZC5jaCA9IDA7XG4gICAgICAgICAgICAgIGhlYWQubGluZSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoQ29kZU1pcnJvci5jbXBQb3MoaGVhZCwgdGhpcy5kb2MuY2xpcFBvcyhoZWFkKSkgIT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXRPY2N1cnJlbmNlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzLm1hdGNoZXMocmV2ZXJzZSwgaGVhZCk7XG4gICAgICAgIHRoaXMuYWZ0ZXJFbXB0eU1hdGNoID0gcmVzdWx0ICYmIENvZGVNaXJyb3IuY21wUG9zKHJlc3VsdC5mcm9tLCByZXN1bHQudG8pID09IDA7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLnBvcyA9IHJlc3VsdDtcbiAgICAgICAgICB0aGlzLmF0T2NjdXJyZW5jZSA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucG9zLm1hdGNoIHx8IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGVuZCA9IFBvcyhyZXZlcnNlID8gdGhpcy5kb2MuZmlyc3RMaW5lKCkgOiB0aGlzLmRvYy5sYXN0TGluZSgpICsgMSwgMCk7XG4gICAgICAgICAgdGhpcy5wb3MgPSB7IGZyb206IGVuZCwgdG86IGVuZCB9O1xuICAgICAgICAgIHJldHVybiB0aGlzLmF0T2NjdXJyZW5jZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZnJvbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmF0T2NjdXJyZW5jZSlcbiAgICAgICAgICByZXR1cm4gdGhpcy5wb3MuZnJvbTtcbiAgICAgIH0sXG4gICAgICB0bzogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmF0T2NjdXJyZW5jZSlcbiAgICAgICAgICByZXR1cm4gdGhpcy5wb3MudG87XG4gICAgICB9LFxuICAgICAgcmVwbGFjZTogZnVuY3Rpb24obmV3VGV4dCwgb3JpZ2luKSB7XG4gICAgICAgIGlmICghdGhpcy5hdE9jY3VycmVuY2UpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB2YXIgbGluZXMgPSBDb2RlTWlycm9yLnNwbGl0TGluZXMobmV3VGV4dCk7XG4gICAgICAgIHRoaXMuZG9jLnJlcGxhY2VSYW5nZShsaW5lcywgdGhpcy5wb3MuZnJvbSwgdGhpcy5wb3MudG8sIG9yaWdpbik7XG4gICAgICAgIHRoaXMucG9zLnRvID0gUG9zKHRoaXMucG9zLmZyb20ubGluZSArIGxpbmVzLmxlbmd0aCAtIDEsIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCArIChsaW5lcy5sZW5ndGggPT0gMSA/IHRoaXMucG9zLmZyb20uY2ggOiAwKSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbihcImdldFNlYXJjaEN1cnNvclwiLCBmdW5jdGlvbihxdWVyeSwgcG9zLCBjYXNlRm9sZCkge1xuICAgICAgcmV0dXJuIG5ldyBTZWFyY2hDdXJzb3IodGhpcy5kb2MsIHF1ZXJ5LCBwb3MsIGNhc2VGb2xkKTtcbiAgICB9KTtcbiAgICBDb2RlTWlycm9yLmRlZmluZURvY0V4dGVuc2lvbihcImdldFNlYXJjaEN1cnNvclwiLCBmdW5jdGlvbihxdWVyeSwgcG9zLCBjYXNlRm9sZCkge1xuICAgICAgcmV0dXJuIG5ldyBTZWFyY2hDdXJzb3IodGhpcywgcXVlcnksIHBvcywgY2FzZUZvbGQpO1xuICAgIH0pO1xuICAgIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5zaW9uKFwic2VsZWN0TWF0Y2hlc1wiLCBmdW5jdGlvbihxdWVyeSwgY2FzZUZvbGQpIHtcbiAgICAgIHZhciByYW5nZXMgPSBbXTtcbiAgICAgIHZhciBjdXIgPSB0aGlzLmdldFNlYXJjaEN1cnNvcihxdWVyeSwgdGhpcy5nZXRDdXJzb3IoXCJmcm9tXCIpLCBjYXNlRm9sZCk7XG4gICAgICB3aGlsZSAoY3VyLmZpbmROZXh0KCkpIHtcbiAgICAgICAgaWYgKENvZGVNaXJyb3IuY21wUG9zKGN1ci50bygpLCB0aGlzLmdldEN1cnNvcihcInRvXCIpKSA+IDApXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIHJhbmdlcy5wdXNoKHsgYW5jaG9yOiBjdXIuZnJvbSgpLCBoZWFkOiBjdXIudG8oKSB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChyYW5nZXMubGVuZ3RoKVxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbnMocmFuZ2VzLCAwKTtcbiAgICB9KTtcbiAgfSk7XG59KSgpO1xudmFyIHNlYXJjaGN1cnNvciA9IHNlYXJjaGN1cnNvciQyLmV4cG9ydHM7XG52YXIgc2VhcmNoY3Vyc29yJDEgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmZyZWV6ZSgvKiBAX19QVVJFX18gKi8gX21lcmdlTmFtZXNwYWNlcyh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgW1N5bWJvbC50b1N0cmluZ1RhZ106IFwiTW9kdWxlXCIsXG4gIFwiZGVmYXVsdFwiOiBzZWFyY2hjdXJzb3Jcbn0sIFtzZWFyY2hjdXJzb3IkMi5leHBvcnRzXSkpO1xuZXhwb3J0IHsgc2VhcmNoY3Vyc29yJDIgYXMgYSwgc2VhcmNoY3Vyc29yJDEgYXMgcyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBdERBO0FBd0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/searchcursor.es.js\n");
|
2747 |
|
2748 | }),
|
2749 |
|
2750 | "../../graphiql-react/dist/show-hint.es.js":
|
2751 |
|
2752 |
|
2753 |
|
2754 |
|
2755 | (function(module, exports, __webpack_require__) {
|
2756 |
|
2757 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.s = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var showHint$2 = {\n exports: {}\n };\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports);\n })(function (CodeMirror) {\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n CodeMirror.showHint = function (cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {\n hint: getHints\n };\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function (options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections();\n if (selections.length > 1) return;\n\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n\n for (var i = 0; i < selections.length; i++) if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n CodeMirror.defineExtension(\"closeHint\", function () {\n if (this.state.completionActive) this.state.completionActive.close();\n });\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n if (this.options.updateOnCursorActivity) {\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function () {\n self.cursorActivity();\n });\n }\n }\n\n __name(Completion, \"Completion\");\n\n var requestAnimationFrame = window.requestAnimationFrame || function (fn) {\n return setTimeout(fn, 1e3 / 60);\n };\n\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n Completion.prototype = {\n close: function () {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n\n if (this.options.updateOnCursorActivity) {\n this.cm.off(\"cursorActivity\", this.activityFunc);\n }\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n active: function () {\n return this.cm.state.completionActive == this;\n },\n pick: function (data, i) {\n var completion = data.list[i],\n self = this;\n this.cm.operation(function () {\n if (completion.hint) completion.hint(self.cm, data, completion);else self.cm.replaceRange(getText(completion), completion.from || data.from, completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n self.cm.scrollIntoView();\n });\n\n if (this.options.closeOnPick) {\n this.close();\n }\n },\n cursorActivity: function () {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var identStart = this.startPos;\n\n if (this.data) {\n identStart = this.data.from;\n }\n\n var pos = this.cm.getCursor(),\n line = this.cm.getLine(pos.line);\n\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch || pos.ch < identStart.ch || this.cm.somethingSelected() || !pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function () {\n self.update();\n });\n if (this.widget) this.widget.disable();\n }\n },\n update: function (first) {\n if (this.tick == null) return;\n var self = this,\n myTick = ++this.tick;\n fetchHints(this.options.hint, this.cm, this.options, function (data) {\n if (self.tick == myTick) self.finishUpdate(data, first);\n });\n },\n finishUpdate: function (data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n var picked = this.widget && this.widget.picked || first && this.options.completeSingle;\n if (this.widget) this.widget.close();\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n\n if (editor) {\n for (var prop in editor) if (editor[prop] !== void 0) out[prop] = editor[prop];\n }\n\n if (options) {\n for (var prop in options) if (options[prop] !== void 0) out[prop] = options[prop];\n }\n\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos);\n return out;\n }\n\n __name(parseOptions, \"parseOptions\");\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;else return completion.text;\n }\n\n __name(getText, \"getText\");\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function () {\n handle.moveFocus(-1);\n },\n Down: function () {\n handle.moveFocus(1);\n },\n PageUp: function () {\n handle.moveFocus(-handle.menuSize() + 1, true);\n },\n PageDown: function () {\n handle.moveFocus(handle.menuSize() - 1, true);\n },\n Home: function () {\n handle.setFocus(0);\n },\n End: function () {\n handle.setFocus(handle.length - 1);\n },\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function () {\n handle.moveFocus(-1);\n };\n\n baseMap[\"Ctrl-N\"] = function () {\n handle.moveFocus(1);\n };\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n\n function addBinding(key2, val) {\n var bound;\n if (typeof val != \"string\") bound = /* @__PURE__ */__name(function (cm) {\n return val(cm, handle);\n }, \"bound\");else if (baseMap.hasOwnProperty(val)) bound = baseMap[val];else bound = val;\n ourMap[key2] = bound;\n }\n\n __name(addBinding, \"addBinding\");\n\n if (custom) {\n for (var key in custom) if (custom.hasOwnProperty(key)) addBinding(key, custom[key]);\n }\n\n var extra = completion.options.extraKeys;\n\n if (extra) {\n for (var key in extra) if (extra.hasOwnProperty(key)) addBinding(key, extra[key]);\n }\n\n return ourMap;\n }\n\n __name(buildKeyMap, \"buildKeyMap\");\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n __name(getHintElement, \"getHintElement\");\n\n function Widget(completion, data) {\n this.id = \"cm-complete-\" + Math.floor(Math.random(1e6));\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this,\n cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n hints.setAttribute(\"role\", \"listbox\");\n hints.setAttribute(\"aria-expanded\", \"true\");\n hints.id = this.id;\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n var completions = data.list;\n\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")),\n cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (i == this.selectedHint) elt.setAttribute(\"aria-selected\", \"true\");\n elt.id = this.id + \"-\" + i;\n elt.setAttribute(\"role\", \"option\");\n if (cur.render) cur.render(elt, data, cur);else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var container = completion.options.container || ownerDocument.body;\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left,\n top = pos.bottom,\n below = true;\n var offsetLeft = 0,\n offsetTop = 0;\n\n if (container !== ownerDocument.body) {\n var isContainerPositioned = [\"absolute\", \"relative\", \"fixed\"].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n var offsetParent = isContainerPositioned ? container : container.offsetParent;\n var offsetParentPosition = offsetParent.getBoundingClientRect();\n var bodyPosition = ownerDocument.body.getBoundingClientRect();\n offsetLeft = offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft;\n offsetTop = offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop;\n }\n\n hints.style.left = left - offsetLeft + \"px\";\n hints.style.top = top - offsetTop + \"px\";\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n container.appendChild(hints);\n cm.getInputField().setAttribute(\"aria-autocomplete\", \"list\");\n cm.getInputField().setAttribute(\"aria-owns\", this.id);\n cm.getInputField().setAttribute(\"aria-activedescendant\", this.id + \"-\" + this.selectedHint);\n var box = completion.options.moveOnOverlap ? hints.getBoundingClientRect() : new DOMRect();\n var scrolls = completion.options.paddingForScrollbar ? hints.scrollHeight > hints.clientHeight + 1 : false;\n var startScroll;\n setTimeout(function () {\n startScroll = cm.getScrollInfo();\n });\n var overlapY = box.bottom - winH;\n\n if (overlapY > 0) {\n var height = box.bottom - box.top,\n curTop = pos.top - (pos.bottom - box.top);\n\n if (curTop - height > 0) {\n hints.style.top = (top = pos.top - height - offsetTop) + \"px\";\n below = false;\n } else if (height > winH) {\n hints.style.height = winH - 5 + \"px\";\n hints.style.top = (top = pos.bottom - box.top - offsetTop) + \"px\";\n var cursor = cm.getCursor();\n\n if (data.from.ch != cursor.ch) {\n pos = cm.cursorCoords(cursor);\n hints.style.left = (left = pos.left - offsetLeft) + \"px\";\n box = hints.getBoundingClientRect();\n }\n }\n }\n\n var overlapX = box.right - winW;\n if (scrolls) overlapX += cm.display.nativeBarWidth;\n\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = winW - 5 + \"px\";\n overlapX -= box.right - box.left - winW;\n }\n\n hints.style.left = (left = pos.left - overlapX - offsetLeft) + \"px\";\n }\n\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling) node.style.paddingRight = cm.display.nativeBarWidth + \"px\";\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function (n, avoidWrap) {\n widget.changeActive(widget.selectedHint + n, avoidWrap);\n },\n setFocus: function (n) {\n widget.changeActive(n);\n },\n menuSize: function () {\n return widget.screenAmount();\n },\n length: completions.length,\n close: function () {\n completion.close();\n },\n pick: function () {\n widget.pick();\n },\n data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function () {\n closingOnBlur = setTimeout(function () {\n completion.close();\n }, 100);\n });\n cm.on(\"focus\", this.onFocus = function () {\n clearTimeout(closingOnBlur);\n });\n }\n\n cm.on(\"scroll\", this.onScroll = function () {\n var curScroll = cm.getScrollInfo(),\n editor = cm.getWrapperElement().getBoundingClientRect();\n if (!startScroll) startScroll = cm.getScrollInfo();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = left + startScroll.left - curScroll.left + \"px\";\n });\n CodeMirror.on(hints, \"dblclick\", function (e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n widget.pick();\n }\n });\n CodeMirror.on(hints, \"click\", function (e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n CodeMirror.on(hints, \"mousedown\", function () {\n setTimeout(function () {\n cm.focus();\n }, 20);\n });\n var selectedHintRange = this.getSelectedHintRange();\n\n if (selectedHintRange.from !== 0 || selectedHintRange.to !== 0) {\n this.scrollToActive();\n }\n\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n __name(Widget, \"Widget\");\n\n Widget.prototype = {\n close: function () {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n if (this.hints.parentNode) this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n var input = this.completion.cm.getInputField();\n input.removeAttribute(\"aria-activedescendant\");\n input.removeAttribute(\"aria-owns\");\n var cm = this.completion.cm;\n\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n\n cm.off(\"scroll\", this.onScroll);\n },\n disable: function () {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {\n Enter: function () {\n widget.picked = true;\n }\n };\n this.completion.cm.addKeyMap(this.keyMap);\n },\n pick: function () {\n this.completion.pick(this.data, this.selectedHint);\n },\n changeActive: function (i, avoidWrap) {\n if (i >= this.data.list.length) i = avoidWrap ? this.data.list.length - 1 : 0;else if (i < 0) i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n\n if (node) {\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node.removeAttribute(\"aria-selected\");\n }\n\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n node.setAttribute(\"aria-selected\", \"true\");\n this.completion.cm.getInputField().setAttribute(\"aria-activedescendant\", node.id);\n this.scrollToActive();\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n scrollToActive: function () {\n var selectedHintRange = this.getSelectedHintRange();\n var node1 = this.hints.childNodes[selectedHintRange.from];\n var node2 = this.hints.childNodes[selectedHintRange.to];\n var firstNode = this.hints.firstChild;\n if (node1.offsetTop < this.hints.scrollTop) this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight) this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n },\n screenAmount: function () {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n },\n getSelectedHintRange: function () {\n var margin = this.completion.options.scrollMargin || 0;\n return {\n from: Math.max(0, this.selectedHint - margin),\n to: Math.min(this.data.list.length - 1, this.selectedHint + margin)\n };\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers;\n var result = [];\n\n for (var i = 0; i < helpers.length; i++) if (helpers[i].supportsSelection) result.push(helpers[i]);\n\n return result;\n }\n\n __name(applicableHelpers, \"applicableHelpers\");\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options);\n } else {\n var result = hint(cm, options);\n if (result && result.then) result.then(callback);else callback(result);\n }\n }\n\n __name(fetchHints, \"fetchHints\");\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"),\n words;\n\n if (helpers.length) {\n var resolved = /* @__PURE__ */__name(function (cm2, callback, options) {\n var app = applicableHelpers(cm2, helpers);\n\n function run(i) {\n if (i == app.length) return callback(null);\n fetchHints(app[i], cm2, options, function (result) {\n if (result && result.list.length > 0) callback(result);else run(i + 1);\n });\n }\n\n __name(run, \"run\");\n\n run(0);\n }, \"resolved\");\n\n resolved.async = true;\n resolved.supportsSelection = true;\n return resolved;\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function (cm2) {\n return CodeMirror.hint.fromList(cm2, {\n words\n });\n };\n } else if (CodeMirror.hint.anyword) {\n return function (cm2, options) {\n return CodeMirror.hint.anyword(cm2, options);\n };\n } else {\n return function () {};\n }\n }\n\n __name(resolveAutoHints, \"resolveAutoHints\");\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n CodeMirror.registerHelper(\"hint\", \"fromList\", function (cm, options) {\n var cur = cm.getCursor(),\n token = cm.getTokenAt(cur);\n var term,\n from = CodeMirror.Pos(cur.line, token.start),\n to = cur;\n\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start);\n } else {\n term = \"\";\n from = cur;\n }\n\n var found = [];\n\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term) found.push(word);\n }\n\n if (found.length) return {\n list: found,\n from,\n to\n };\n });\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnPick: true,\n closeOnUnfocus: true,\n updateOnCursorActivity: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null,\n paddingForScrollbar: true,\n moveOnOverlap: true\n };\n CodeMirror.defineOption(\"hintOptions\", null);\n });\n })();\n\n var showHint = showHint$2.exports;\n var showHint$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": showHint\n }, [showHint$2.exports]));\n _exports.s = showHint$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9zaG93LWhpbnQuZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9wYWNrYWdlcy9ncmFwaGlxbC1yZWFjdC9kaXN0L3Nob3ctaGludC5lcy5qcz9mOGNhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19uYW1lID0gKHRhcmdldCwgdmFsdWUpID0+IF9fZGVmUHJvcCh0YXJnZXQsIFwibmFtZVwiLCB7IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG5pbXBvcnQgeyBhIGFzIGNvZGVtaXJyb3IgfSBmcm9tIFwiLi9jb2RlbWlycm9yLmVzLmpzXCI7XG5mdW5jdGlvbiBfbWVyZ2VOYW1lc3BhY2VzKG4sIG0pIHtcbiAgbS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHtcbiAgICBlICYmIHR5cGVvZiBlICE9PSBcInN0cmluZ1wiICYmICFBcnJheS5pc0FycmF5KGUpICYmIE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgICAgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmICEoayBpbiBuKSkge1xuICAgICAgICB2YXIgZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgayk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCBrLCBkLmdldCA/IGQgOiB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIGVba107XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKG4pO1xufVxuX19uYW1lKF9tZXJnZU5hbWVzcGFjZXMsIFwiX21lcmdlTmFtZXNwYWNlc1wiKTtcbnZhciBzaG93SGludCQyID0geyBleHBvcnRzOiB7fSB9O1xuKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuICAoZnVuY3Rpb24obW9kKSB7XG4gICAgbW9kKGNvZGVtaXJyb3IuZXhwb3J0cyk7XG4gIH0pKGZ1bmN0aW9uKENvZGVNaXJyb3IpIHtcbiAgICB2YXIgSElOVF9FTEVNRU5UX0NMQVNTID0gXCJDb2RlTWlycm9yLWhpbnRcIjtcbiAgICB2YXIgQUNUSVZFX0hJTlRfRUxFTUVOVF9DTEFTUyA9IFwiQ29kZU1pcnJvci1oaW50LWFjdGl2ZVwiO1xuICAgIENvZGVNaXJyb3Iuc2hvd0hpbnQgPSBmdW5jdGlvbihjbSwgZ2V0SGludHMsIG9wdGlvbnMpIHtcbiAgICAgIGlmICghZ2V0SGludHMpXG4gICAgICAgIHJldHVybiBjbS5zaG93SGludChvcHRpb25zKTtcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYXN5bmMpXG4gICAgICAgIGdldEhpbnRzLmFzeW5jID0gdHJ1ZTtcbiAgICAgIHZhciBuZXdPcHRzID0geyBoaW50OiBnZXRIaW50cyB9O1xuICAgICAgaWYgKG9wdGlvbnMpXG4gICAgICAgIGZvciAodmFyIHByb3AgaW4gb3B0aW9ucylcbiAgICAgICAgICBuZXdPcHRzW3Byb3BdID0gb3B0aW9uc1twcm9wXTtcbiAgICAgIHJldHVybiBjbS5zaG93SGludChuZXdPcHRzKTtcbiAgICB9O1xuICAgIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5zaW9uKFwic2hvd0hpbnRcIiwgZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IHBhcnNlT3B0aW9ucyh0aGlzLCB0aGlzLmdldEN1cnNvcihcInN0YXJ0XCIpLCBvcHRpb25zKTtcbiAgICAgIHZhciBzZWxlY3Rpb25zID0gdGhpcy5saXN0U2VsZWN0aW9ucygpO1xuICAgICAgaWYgKHNlbGVjdGlvbnMubGVuZ3RoID4gMSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKHRoaXMuc29tZXRoaW5nU2VsZWN0ZWQoKSkge1xuICAgICAgICBpZiAoIW9wdGlvbnMuaGludC5zdXBwb3J0c1NlbGVjdGlvbilcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0aW9ucy5sZW5ndGg7IGkrKylcbiAgICAgICAgICBpZiAoc2VsZWN0aW9uc1tpXS5oZWFkLmxpbmUgIT0gc2VsZWN0aW9uc1tpXS5hbmNob3IubGluZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnN0YXRlLmNvbXBsZXRpb25BY3RpdmUpXG4gICAgICAgIHRoaXMuc3RhdGUuY29tcGxldGlvbkFjdGl2ZS5jbG9zZSgpO1xuICAgICAgdmFyIGNvbXBsZXRpb24gPSB0aGlzLnN0YXRlLmNvbXBsZXRpb25BY3RpdmUgPSBuZXcgQ29tcGxldGlvbih0aGlzLCBvcHRpb25zKTtcbiAgICAgIGlmICghY29tcGxldGlvbi5vcHRpb25zLmhpbnQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIENvZGVNaXJyb3Iuc2lnbmFsKHRoaXMsIFwic3RhcnRDb21wbGV0aW9uXCIsIHRoaXMpO1xuICAgICAgY29tcGxldGlvbi51cGRhdGUodHJ1ZSk7XG4gICAgfSk7XG4gICAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJjbG9zZUhpbnRcIiwgZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5jb21wbGV0aW9uQWN0aXZlKVxuICAgICAgICB0aGlzLnN0YXRlLmNvbXBsZXRpb25BY3RpdmUuY2xvc2UoKTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBDb21wbGV0aW9uKGNtLCBvcHRpb25zKSB7XG4gICAgICB0aGlzLmNtID0gY207XG4gICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgdGhpcy53aWRnZXQgPSBudWxsO1xuICAgICAgdGhpcy5kZWJvdW5jZSA9IDA7XG4gICAgICB0aGlzLnRpY2sgPSAwO1xuICAgICAgdGhpcy5zdGFydFBvcyA9IHRoaXMuY20uZ2V0Q3Vyc29yKFwic3RhcnRcIik7XG4gICAgICB0aGlzLnN0YXJ0TGVuID0gdGhpcy5jbS5nZXRMaW5lKHRoaXMuc3RhcnRQb3MubGluZSkubGVuZ3RoIC0gdGhpcy5jbS5nZXRTZWxlY3Rpb24oKS5sZW5ndGg7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnVwZGF0ZU9uQ3Vyc29yQWN0aXZpdHkpIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICBjbS5vbihcImN1cnNvckFjdGl2aXR5XCIsIHRoaXMuYWN0aXZpdHlGdW5jID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgc2VsZi5jdXJzb3JBY3Rpdml0eSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKENvbXBsZXRpb24sIFwiQ29tcGxldGlvblwiKTtcbiAgICB2YXIgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCBmdW5jdGlvbihmbikge1xuICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZm4sIDFlMyAvIDYwKTtcbiAgICB9O1xuICAgIHZhciBjYW5jZWxBbmltYXRpb25GcmFtZSA9IHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSB8fCBjbGVhclRpbWVvdXQ7XG4gICAgQ29tcGxldGlvbi5wcm90b3R5cGUgPSB7XG4gICAgICBjbG9zZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmUoKSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuY20uc3RhdGUuY29tcGxldGlvbkFjdGl2ZSA9IG51bGw7XG4gICAgICAgIHRoaXMudGljayA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudXBkYXRlT25DdXJzb3JBY3Rpdml0eSkge1xuICAgICAgICAgIHRoaXMuY20ub2ZmKFwiY3Vyc29yQWN0aXZpdHlcIiwgdGhpcy5hY3Rpdml0eUZ1bmMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLndpZGdldCAmJiB0aGlzLmRhdGEpXG4gICAgICAgICAgQ29kZU1pcnJvci5zaWduYWwodGhpcy5kYXRhLCBcImNsb3NlXCIpO1xuICAgICAgICBpZiAodGhpcy53aWRnZXQpXG4gICAgICAgICAgdGhpcy53aWRnZXQuY2xvc2UoKTtcbiAgICAgICAgQ29kZU1pcnJvci5zaWduYWwodGhpcy5jbSwgXCJlbmRDb21wbGV0aW9uXCIsIHRoaXMuY20pO1xuICAgICAgfSxcbiAgICAgIGFjdGl2ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNtLnN0YXRlLmNvbXBsZXRpb25BY3RpdmUgPT0gdGhpcztcbiAgICAgIH0sXG4gICAgICBwaWNrOiBmdW5jdGlvbihkYXRhLCBpKSB7XG4gICAgICAgIHZhciBjb21wbGV0aW9uID0gZGF0YS5saXN0W2ldLCBzZWxmID0gdGhpcztcbiAgICAgICAgdGhpcy5jbS5vcGVyYXRpb24oZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKGNvbXBsZXRpb24uaGludClcbiAgICAgICAgICAgIGNvbXBsZXRpb24uaGludChzZWxmLmNtLCBkYXRhLCBjb21wbGV0aW9uKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzZWxmLmNtLnJlcGxhY2VSYW5nZShnZXRUZXh0KGNvbXBsZXRpb24pLCBjb21wbGV0aW9uLmZyb20gfHwgZGF0YS5mcm9tLCBjb21wbGV0aW9uLnRvIHx8IGRhdGEudG8sIFwiY29tcGxldGVcIik7XG4gICAgICAgICAgQ29kZU1pcnJvci5zaWduYWwoZGF0YSwgXCJwaWNrXCIsIGNvbXBsZXRpb24pO1xuICAgICAgICAgIHNlbGYuY20uc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2xvc2VPblBpY2spIHtcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjdXJzb3JBY3Rpdml0eTogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmRlYm91bmNlKSB7XG4gICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5kZWJvdW5jZSk7XG4gICAgICAgICAgdGhpcy5kZWJvdW5jZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGlkZW50U3RhcnQgPSB0aGlzLnN0YXJ0UG9zO1xuICAgICAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICAgICAgaWRlbnRTdGFydCA9IHRoaXMuZGF0YS5mcm9tO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwb3MgPSB0aGlzLmNtLmdldEN1cnNvcigpLCBsaW5lID0gdGhpcy5jbS5nZXRMaW5lKHBvcy5saW5lKTtcbiAgICAgICAgaWYgKHBvcy5saW5lICE9IHRoaXMuc3RhcnRQb3MubGluZSB8fCBsaW5lLmxlbmd0aCAtIHBvcy5jaCAhPSB0aGlzLnN0YXJ0TGVuIC0gdGhpcy5zdGFydFBvcy5jaCB8fCBwb3MuY2ggPCBpZGVudFN0YXJ0LmNoIHx8IHRoaXMuY20uc29tZXRoaW5nU2VsZWN0ZWQoKSB8fCAoIXBvcy5jaCB8fCB0aGlzLm9wdGlvbnMuY2xvc2VDaGFyYWN0ZXJzLnRlc3QobGluZS5jaGFyQXQocG9zLmNoIC0gMSkpKSkge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgdGhpcy5kZWJvdW5jZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHNlbGYudXBkYXRlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHRoaXMud2lkZ2V0KVxuICAgICAgICAgICAgdGhpcy53aWRnZXQuZGlzYWJsZSgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXBkYXRlOiBmdW5jdGlvbihmaXJzdCkge1xuICAgICAgICBpZiAodGhpcy50aWNrID09IG51bGwpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIG15VGljayA9ICsrdGhpcy50aWNrO1xuICAgICAgICBmZXRjaEhpbnRzKHRoaXMub3B0aW9ucy5oaW50LCB0aGlzLmNtLCB0aGlzLm9wdGlvbnMsIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICBpZiAoc2VsZi50aWNrID09IG15VGljaylcbiAgICAgICAgICAgIHNlbGYuZmluaXNoVXBkYXRlKGRhdGEsIGZpcnN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZmluaXNoVXBkYXRlOiBmdW5jdGlvbihkYXRhLCBmaXJzdCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhKVxuICAgICAgICAgIENvZGVNaXJyb3Iuc2lnbmFsKHRoaXMuZGF0YSwgXCJ1cGRhdGVcIik7XG4gICAgICAgIHZhciBwaWNrZWQgPSB0aGlzLndpZGdldCAmJiB0aGlzLndpZGdldC5waWNrZWQgfHwgZmlyc3QgJiYgdGhpcy5vcHRpb25zLmNvbXBsZXRlU2luZ2xlO1xuICAgICAgICBpZiAodGhpcy53aWRnZXQpXG4gICAgICAgICAgdGhpcy53aWRnZXQuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5saXN0Lmxlbmd0aCkge1xuICAgICAgICAgIGlmIChwaWNrZWQgJiYgZGF0YS5saXN0Lmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICB0aGlzLnBpY2soZGF0YSwgMCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0ID0gbmV3IFdpZGdldCh0aGlzLCBkYXRhKTtcbiAgICAgICAgICAgIENvZGVNaXJyb3Iuc2lnbmFsKGRhdGEsIFwic2hvd25cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBmdW5jdGlvbiBwYXJzZU9wdGlvbnMoY20sIHBvcywgb3B0aW9ucykge1xuICAgICAgdmFyIGVkaXRvciA9IGNtLm9wdGlvbnMuaGludE9wdGlvbnM7XG4gICAgICB2YXIgb3V0ID0ge307XG4gICAgICBmb3IgKHZhciBwcm9wIGluIGRlZmF1bHRPcHRpb25zKVxuICAgICAgICBvdXRbcHJvcF0gPSBkZWZhdWx0T3B0aW9uc1twcm9wXTtcbiAgICAgIGlmIChlZGl0b3IpIHtcbiAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBlZGl0b3IpXG4gICAgICAgICAgaWYgKGVkaXRvcltwcm9wXSAhPT0gdm9pZCAwKVxuICAgICAgICAgICAgb3V0W3Byb3BdID0gZWRpdG9yW3Byb3BdO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBvcHRpb25zKVxuICAgICAgICAgIGlmIChvcHRpb25zW3Byb3BdICE9PSB2b2lkIDApXG4gICAgICAgICAgICBvdXRbcHJvcF0gPSBvcHRpb25zW3Byb3BdO1xuICAgICAgfVxuICAgICAgaWYgKG91dC5oaW50LnJlc29sdmUpXG4gICAgICAgIG91dC5oaW50ID0gb3V0LmhpbnQucmVzb2x2ZShjbSwgcG9zKTtcbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuICAgIF9fbmFtZShwYXJzZU9wdGlvbnMsIFwicGFyc2VPcHRpb25zXCIpO1xuICAgIGZ1bmN0aW9uIGdldFRleHQoY29tcGxldGlvbikge1xuICAgICAgaWYgKHR5cGVvZiBjb21wbGV0aW9uID09IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiBjb21wbGV0aW9uO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gY29tcGxldGlvbi50ZXh0O1xuICAgIH1cbiAgICBfX25hbWUoZ2V0VGV4dCwgXCJnZXRUZXh0XCIpO1xuICAgIGZ1bmN0aW9uIGJ1aWxkS2V5TWFwKGNvbXBsZXRpb24sIGhhbmRsZSkge1xuICAgICAgdmFyIGJhc2VNYXAgPSB7XG4gICAgICAgIFVwOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBoYW5kbGUubW92ZUZvY3VzKC0xKTtcbiAgICAgICAgfSxcbiAgICAgICAgRG93bjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaGFuZGxlLm1vdmVGb2N1cygxKTtcbiAgICAgICAgfSxcbiAgICAgICAgUGFnZVVwOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBoYW5kbGUubW92ZUZvY3VzKC1oYW5kbGUubWVudVNpemUoKSArIDEsIHRydWUpO1xuICAgICAgICB9LFxuICAgICAgICBQYWdlRG93bjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaGFuZGxlLm1vdmVGb2N1cyhoYW5kbGUubWVudVNpemUoKSAtIDEsIHRydWUpO1xuICAgICAgICB9LFxuICAgICAgICBIb21lOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBoYW5kbGUuc2V0Rm9jdXMoMCk7XG4gICAgICAgIH0sXG4gICAgICAgIEVuZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaGFuZGxlLnNldEZvY3VzKGhhbmRsZS5sZW5ndGggLSAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgRW50ZXI6IGhhbmRsZS5waWNrLFxuICAgICAgICBUYWI6IGhhbmRsZS5waWNrLFxuICAgICAgICBFc2M6IGhhbmRsZS5jbG9zZVxuICAgICAgfTtcbiAgICAgIHZhciBtYWMgPSAvTWFjLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk7XG4gICAgICBpZiAobWFjKSB7XG4gICAgICAgIGJhc2VNYXBbXCJDdHJsLVBcIl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICBoYW5kbGUubW92ZUZvY3VzKC0xKTtcbiAgICAgICAgfTtcbiAgICAgICAgYmFzZU1hcFtcIkN0cmwtTlwiXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGhhbmRsZS5tb3ZlRm9jdXMoMSk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB2YXIgY3VzdG9tID0gY29tcGxldGlvbi5vcHRpb25zLmN1c3RvbUtleXM7XG4gICAgICB2YXIgb3VyTWFwID0gY3VzdG9tID8ge30gOiBiYXNlTWFwO1xuICAgICAgZnVuY3Rpb24gYWRkQmluZGluZyhrZXkyLCB2YWwpIHtcbiAgICAgICAgdmFyIGJvdW5kO1xuICAgICAgICBpZiAodHlwZW9mIHZhbCAhPSBcInN0cmluZ1wiKVxuICAgICAgICAgIGJvdW5kID0gLyogQF9fUFVSRV9fICovIF9fbmFtZShmdW5jdGlvbihjbSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbChjbSwgaGFuZGxlKTtcbiAgICAgICAgICB9LCBcImJvdW5kXCIpO1xuICAgICAgICBlbHNlIGlmIChiYXNlTWFwLmhhc093blByb3BlcnR5KHZhbCkpXG4gICAgICAgICAgYm91bmQgPSBiYXNlTWFwW3ZhbF07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBib3VuZCA9IHZhbDtcbiAgICAgICAgb3VyTWFwW2tleTJdID0gYm91bmQ7XG4gICAgICB9XG4gICAgICBfX25hbWUoYWRkQmluZGluZywgXCJhZGRCaW5kaW5nXCIpO1xuICAgICAgaWYgKGN1c3RvbSkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gY3VzdG9tKVxuICAgICAgICAgIGlmIChjdXN0b20uaGFzT3duUHJvcGVydHkoa2V5KSlcbiAgICAgICAgICAgIGFkZEJpbmRpbmcoa2V5LCBjdXN0b21ba2V5XSk7XG4gICAgICB9XG4gICAgICB2YXIgZXh0cmEgPSBjb21wbGV0aW9uLm9wdGlvbnMuZXh0cmFLZXlzO1xuICAgICAgaWYgKGV4dHJhKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBleHRyYSlcbiAgICAgICAgICBpZiAoZXh0cmEuaGFzT3duUHJvcGVydHkoa2V5KSlcbiAgICAgICAgICAgIGFkZEJpbmRpbmcoa2V5LCBleHRyYVtrZXldKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXJNYXA7XG4gICAgfVxuICAgIF9fbmFtZShidWlsZEtleU1hcCwgXCJidWlsZEtleU1hcFwiKTtcbiAgICBmdW5jdGlvbiBnZXRIaW50RWxlbWVudChoaW50c0VsZW1lbnQsIGVsKSB7XG4gICAgICB3aGlsZSAoZWwgJiYgZWwgIT0gaGludHNFbGVtZW50KSB7XG4gICAgICAgIGlmIChlbC5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSBcIkxJXCIgJiYgZWwucGFyZW50Tm9kZSA9PSBoaW50c0VsZW1lbnQpXG4gICAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgICBlbCA9IGVsLnBhcmVudE5vZGU7XG4gICAgICB9XG4gICAgfVxuICAgIF9fbmFtZShnZXRIaW50RWxlbWVudCwgXCJnZXRIaW50RWxlbWVudFwiKTtcbiAgICBmdW5jdGlvbiBXaWRnZXQoY29tcGxldGlvbiwgZGF0YSkge1xuICAgICAgdGhpcy5pZCA9IFwiY20tY29tcGxldGUtXCIgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKDFlNikpO1xuICAgICAgdGhpcy5jb21wbGV0aW9uID0gY29tcGxldGlvbjtcbiAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgICB0aGlzLnBpY2tlZCA9IGZhbHNlO1xuICAgICAgdmFyIHdpZGdldCA9IHRoaXMsIGNtID0gY29tcGxldGlvbi5jbTtcbiAgICAgIHZhciBvd25lckRvY3VtZW50ID0gY20uZ2V0SW5wdXRGaWVsZCgpLm93bmVyRG9jdW1lbnQ7XG4gICAgICB2YXIgcGFyZW50V2luZG93ID0gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCBvd25lckRvY3VtZW50LnBhcmVudFdpbmRvdztcbiAgICAgIHZhciBoaW50cyA9IHRoaXMuaGludHMgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiKTtcbiAgICAgIGhpbnRzLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJsaXN0Ym94XCIpO1xuICAgICAgaGludHMuc2V0QXR0cmlidXRlKFwiYXJpYS1leHBhbmRlZFwiLCBcInRydWVcIik7XG4gICAgICBoaW50cy5pZCA9IHRoaXMuaWQ7XG4gICAgICB2YXIgdGhlbWUgPSBjb21wbGV0aW9uLmNtLm9wdGlvbnMudGhlbWU7XG4gICAgICBoaW50cy5jbGFzc05hbWUgPSBcIkNvZGVNaXJyb3ItaGludHMgXCIgKyB0aGVtZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRIaW50ID0gZGF0YS5zZWxlY3RlZEhpbnQgfHwgMDtcbiAgICAgIHZhciBjb21wbGV0aW9ucyA9IGRhdGEubGlzdDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcGxldGlvbnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGVsdCA9IGhpbnRzLmFwcGVuZENoaWxkKG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIpKSwgY3VyID0gY29tcGxldGlvbnNbaV07XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSBISU5UX0VMRU1FTlRfQ0xBU1MgKyAoaSAhPSB0aGlzLnNlbGVjdGVkSGludCA/IFwiXCIgOiBcIiBcIiArIEFDVElWRV9ISU5UX0VMRU1FTlRfQ0xBU1MpO1xuICAgICAgICBpZiAoY3VyLmNsYXNzTmFtZSAhPSBudWxsKVxuICAgICAgICAgIGNsYXNzTmFtZSA9IGN1ci5jbGFzc05hbWUgKyBcIiBcIiArIGNsYXNzTmFtZTtcbiAgICAgICAgZWx0LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgICAgaWYgKGkgPT0gdGhpcy5zZWxlY3RlZEhpbnQpXG4gICAgICAgICAgZWx0LnNldEF0dHJpYnV0ZShcImFyaWEtc2VsZWN0ZWRcIiwgXCJ0cnVlXCIpO1xuICAgICAgICBlbHQuaWQgPSB0aGlzLmlkICsgXCItXCIgKyBpO1xuICAgICAgICBlbHQuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcIm9wdGlvblwiKTtcbiAgICAgICAgaWYgKGN1ci5yZW5kZXIpXG4gICAgICAgICAgY3VyLnJlbmRlcihlbHQsIGRhdGEsIGN1cik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBlbHQuYXBwZW5kQ2hpbGQob3duZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjdXIuZGlzcGxheVRleHQgfHwgZ2V0VGV4dChjdXIpKSk7XG4gICAgICAgIGVsdC5oaW50SWQgPSBpO1xuICAgICAgfVxuICAgICAgdmFyIGNvbnRhaW5lciA9IGNvbXBsZXRpb24ub3B0aW9ucy5jb250YWluZXIgfHwgb3duZXJEb2N1bWVudC5ib2R5O1xuICAgICAgdmFyIHBvcyA9IGNtLmN1cnNvckNvb3Jkcyhjb21wbGV0aW9uLm9wdGlvbnMuYWxpZ25XaXRoV29yZCA/IGRhdGEuZnJvbSA6IG51bGwpO1xuICAgICAgdmFyIGxlZnQgPSBwb3MubGVmdCwgdG9wID0gcG9zLmJvdHRvbSwgYmVsb3cgPSB0cnVlO1xuICAgICAgdmFyIG9mZnNldExlZnQgPSAwLCBvZmZzZXRUb3AgPSAwO1xuICAgICAgaWYgKGNvbnRhaW5lciAhPT0gb3duZXJEb2N1bWVudC5ib2R5KSB7XG4gICAgICAgIHZhciBpc0NvbnRhaW5lclBvc2l0aW9uZWQgPSBbXCJhYnNvbHV0ZVwiLCBcInJlbGF0aXZlXCIsIFwiZml4ZWRcIl0uaW5kZXhPZihwYXJlbnRXaW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjb250YWluZXIpLnBvc2l0aW9uKSAhPT0gLTE7XG4gICAgICAgIHZhciBvZmZzZXRQYXJlbnQgPSBpc0NvbnRhaW5lclBvc2l0aW9uZWQgPyBjb250YWluZXIgOiBjb250YWluZXIub2Zmc2V0UGFyZW50O1xuICAgICAgICB2YXIgb2Zmc2V0UGFyZW50UG9zaXRpb24gPSBvZmZzZXRQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHZhciBib2R5UG9zaXRpb24gPSBvd25lckRvY3VtZW50LmJvZHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIG9mZnNldExlZnQgPSBvZmZzZXRQYXJlbnRQb3NpdGlvbi5sZWZ0IC0gYm9keVBvc2l0aW9uLmxlZnQgLSBvZmZzZXRQYXJlbnQuc2Nyb2xsTGVmdDtcbiAgICAgICAgb2Zmc2V0VG9wID0gb2Zmc2V0UGFyZW50UG9zaXRpb24udG9wIC0gYm9keVBvc2l0aW9uLnRvcCAtIG9mZnNldFBhcmVudC5zY3JvbGxUb3A7XG4gICAgICB9XG4gICAgICBoaW50cy5zdHlsZS5sZWZ0ID0gbGVmdCAtIG9mZnNldExlZnQgKyBcInB4XCI7XG4gICAgICBoaW50cy5zdHlsZS50b3AgPSB0b3AgLSBvZmZzZXRUb3AgKyBcInB4XCI7XG4gICAgICB2YXIgd2luVyA9IHBhcmVudFdpbmRvdy5pbm5lcldpZHRoIHx8IE1hdGgubWF4KG93bmVyRG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCwgb3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgpO1xuICAgICAgdmFyIHdpbkggPSBwYXJlbnRXaW5kb3cuaW5uZXJIZWlnaHQgfHwgTWF0aC5tYXgob3duZXJEb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCwgb3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcbiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChoaW50cyk7XG4gICAgICBjbS5nZXRJbnB1dEZpZWxkKCkuc2V0QXR0cmlidXRlKFwiYXJpYS1hdXRvY29tcGxldGVcIiwgXCJsaXN0XCIpO1xuICAgICAgY20uZ2V0SW5wdXRGaWVsZCgpLnNldEF0dHJpYnV0ZShcImFyaWEtb3duc1wiLCB0aGlzLmlkKTtcbiAgICAgIGNtLmdldElucHV0RmllbGQoKS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgdGhpcy5pZCArIFwiLVwiICsgdGhpcy5zZWxlY3RlZEhpbnQpO1xuICAgICAgdmFyIGJveCA9IGNvbXBsZXRpb24ub3B0aW9ucy5tb3ZlT25PdmVybGFwID8gaGludHMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgOiBuZXcgRE9NUmVjdCgpO1xuICAgICAgdmFyIHNjcm9sbHMgPSBjb21wbGV0aW9uLm9wdGlvbnMucGFkZGluZ0ZvclNjcm9sbGJhciA/IGhpbnRzLnNjcm9sbEhlaWdodCA+IGhpbnRzLmNsaWVudEhlaWdodCArIDEgOiBmYWxzZTtcbiAgICAgIHZhciBzdGFydFNjcm9sbDtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHN0YXJ0U2Nyb2xsID0gY20uZ2V0U2Nyb2xsSW5mbygpO1xuICAgICAgfSk7XG4gICAgICB2YXIgb3ZlcmxhcFkgPSBib3guYm90dG9tIC0gd2luSDtcbiAgICAgIGlmIChvdmVybGFwWSA+IDApIHtcbiAgICAgICAgdmFyIGhlaWdodCA9IGJveC5ib3R0b20gLSBib3gudG9wLCBjdXJUb3AgPSBwb3MudG9wIC0gKHBvcy5ib3R0b20gLSBib3gudG9wKTtcbiAgICAgICAgaWYgKGN1clRvcCAtIGhlaWdodCA+IDApIHtcbiAgICAgICAgICBoaW50cy5zdHlsZS50b3AgPSAodG9wID0gcG9zLnRvcCAtIGhlaWdodCAtIG9mZnNldFRvcCkgKyBcInB4XCI7XG4gICAgICAgICAgYmVsb3cgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChoZWlnaHQgPiB3aW5IKSB7XG4gICAgICAgICAgaGludHMuc3R5bGUuaGVpZ2h0ID0gd2luSCAtIDUgKyBcInB4XCI7XG4gICAgICAgICAgaGludHMuc3R5bGUudG9wID0gKHRvcCA9IHBvcy5ib3R0b20gLSBib3gudG9wIC0gb2Zmc2V0VG9wKSArIFwicHhcIjtcbiAgICAgICAgICB2YXIgY3Vyc29yID0gY20uZ2V0Q3Vyc29yKCk7XG4gICAgICAgICAgaWYgKGRhdGEuZnJvbS5jaCAhPSBjdXJzb3IuY2gpIHtcbiAgICAgICAgICAgIHBvcyA9IGNtLmN1cnNvckNvb3JkcyhjdXJzb3IpO1xuICAgICAgICAgICAgaGludHMuc3R5bGUubGVmdCA9IChsZWZ0ID0gcG9zLmxlZnQgLSBvZmZzZXRMZWZ0KSArIFwicHhcIjtcbiAgICAgICAgICAgIGJveCA9IGhpbnRzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIG92ZXJsYXBYID0gYm94LnJpZ2h0IC0gd2luVztcbiAgICAgIGlmIChzY3JvbGxzKVxuICAgICAgICBvdmVybGFwWCArPSBjbS5kaXNwbGF5Lm5hdGl2ZUJhcldpZHRoO1xuICAgICAgaWYgKG92ZXJsYXBYID4gMCkge1xuICAgICAgICBpZiAoYm94LnJpZ2h0IC0gYm94LmxlZnQgPiB3aW5XKSB7XG4gICAgICAgICAgaGludHMuc3R5bGUud2lkdGggPSB3aW5XIC0gNSArIFwicHhcIjtcbiAgICAgICAgICBvdmVybGFwWCAtPSBib3gucmlnaHQgLSBib3gubGVmdCAtIHdpblc7XG4gICAgICAgIH1cbiAgICAgICAgaGludHMuc3R5bGUubGVmdCA9IChsZWZ0ID0gcG9zLmxlZnQgLSBvdmVybGFwWCAtIG9mZnNldExlZnQpICsgXCJweFwiO1xuICAgICAgfVxuICAgICAgaWYgKHNjcm9sbHMpXG4gICAgICAgIGZvciAodmFyIG5vZGUgPSBoaW50cy5maXJzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS5uZXh0U2libGluZylcbiAgICAgICAgICBub2RlLnN0eWxlLnBhZGRpbmdSaWdodCA9IGNtLmRpc3BsYXkubmF0aXZlQmFyV2lkdGggKyBcInB4XCI7XG4gICAgICBjbS5hZGRLZXlNYXAodGhpcy5rZXlNYXAgPSBidWlsZEtleU1hcChjb21wbGV0aW9uLCB7XG4gICAgICAgIG1vdmVGb2N1czogZnVuY3Rpb24obiwgYXZvaWRXcmFwKSB7XG4gICAgICAgICAgd2lkZ2V0LmNoYW5nZUFjdGl2ZSh3aWRnZXQuc2VsZWN0ZWRIaW50ICsgbiwgYXZvaWRXcmFwKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0Rm9jdXM6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICB3aWRnZXQuY2hhbmdlQWN0aXZlKG4pO1xuICAgICAgICB9LFxuICAgICAgICBtZW51U2l6ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHdpZGdldC5zY3JlZW5BbW91bnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgbGVuZ3RoOiBjb21wbGV0aW9ucy5sZW5ndGgsXG4gICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBjb21wbGV0aW9uLmNsb3NlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHBpY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHdpZGdldC5waWNrKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGRhdGFcbiAgICAgIH0pKTtcbiAgICAgIGlmIChjb21wbGV0aW9uLm9wdGlvbnMuY2xvc2VPblVuZm9jdXMpIHtcbiAgICAgICAgdmFyIGNsb3NpbmdPbkJsdXI7XG4gICAgICAgIGNtLm9uKFwiYmx1clwiLCB0aGlzLm9uQmx1ciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGNsb3NpbmdPbkJsdXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29tcGxldGlvbi5jbG9zZSgpO1xuICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjbS5vbihcImZvY3VzXCIsIHRoaXMub25Gb2N1cyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dChjbG9zaW5nT25CbHVyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjbS5vbihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBjdXJTY3JvbGwgPSBjbS5nZXRTY3JvbGxJbmZvKCksIGVkaXRvciA9IGNtLmdldFdyYXBwZXJFbGVtZW50KCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmICghc3RhcnRTY3JvbGwpXG4gICAgICAgICAgc3RhcnRTY3JvbGwgPSBjbS5nZXRTY3JvbGxJbmZvKCk7XG4gICAgICAgIHZhciBuZXdUb3AgPSB0b3AgKyBzdGFydFNjcm9sbC50b3AgLSBjdXJTY3JvbGwudG9wO1xuICAgICAgICB2YXIgcG9pbnQgPSBuZXdUb3AgLSAocGFyZW50V2luZG93LnBhZ2VZT2Zmc2V0IHx8IChvd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCB8fCBvd25lckRvY3VtZW50LmJvZHkpLnNjcm9sbFRvcCk7XG4gICAgICAgIGlmICghYmVsb3cpXG4gICAgICAgICAgcG9pbnQgKz0gaGludHMub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBpZiAocG9pbnQgPD0gZWRpdG9yLnRvcCB8fCBwb2ludCA+PSBlZGl0b3IuYm90dG9tKVxuICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uLmNsb3NlKCk7XG4gICAgICAgIGhpbnRzLnN0eWxlLnRvcCA9IG5ld1RvcCArIFwicHhcIjtcbiAgICAgICAgaGludHMuc3R5bGUubGVmdCA9IGxlZnQgKyBzdGFydFNjcm9sbC5sZWZ0IC0gY3VyU2Nyb2xsLmxlZnQgKyBcInB4XCI7XG4gICAgICB9KTtcbiAgICAgIENvZGVNaXJyb3Iub24oaGludHMsIFwiZGJsY2xpY2tcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICB2YXIgdCA9IGdldEhpbnRFbGVtZW50KGhpbnRzLCBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQpO1xuICAgICAgICBpZiAodCAmJiB0LmhpbnRJZCAhPSBudWxsKSB7XG4gICAgICAgICAgd2lkZ2V0LmNoYW5nZUFjdGl2ZSh0LmhpbnRJZCk7XG4gICAgICAgICAgd2lkZ2V0LnBpY2soKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBDb2RlTWlycm9yLm9uKGhpbnRzLCBcImNsaWNrXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgdmFyIHQgPSBnZXRIaW50RWxlbWVudChoaW50cywgZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50KTtcbiAgICAgICAgaWYgKHQgJiYgdC5oaW50SWQgIT0gbnVsbCkge1xuICAgICAgICAgIHdpZGdldC5jaGFuZ2VBY3RpdmUodC5oaW50SWQpO1xuICAgICAgICAgIGlmIChjb21wbGV0aW9uLm9wdGlvbnMuY29tcGxldGVPblNpbmdsZUNsaWNrKVxuICAgICAgICAgICAgd2lkZ2V0LnBpY2soKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBDb2RlTWlycm9yLm9uKGhpbnRzLCBcIm1vdXNlZG93blwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICBjbS5mb2N1cygpO1xuICAgICAgICB9LCAyMCk7XG4gICAgICB9KTtcbiAgICAgIHZhciBzZWxlY3RlZEhpbnRSYW5nZSA9IHRoaXMuZ2V0U2VsZWN0ZWRIaW50UmFuZ2UoKTtcbiAgICAgIGlmIChzZWxlY3RlZEhpbnRSYW5nZS5mcm9tICE9PSAwIHx8IHNlbGVjdGVkSGludFJhbmdlLnRvICE9PSAwKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmUoKTtcbiAgICAgIH1cbiAgICAgIENvZGVNaXJyb3Iuc2lnbmFsKGRhdGEsIFwic2VsZWN0XCIsIGNvbXBsZXRpb25zW3RoaXMuc2VsZWN0ZWRIaW50XSwgaGludHMuY2hpbGROb2Rlc1t0aGlzLnNlbGVjdGVkSGludF0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIF9fbmFtZShXaWRnZXQsIFwiV2lkZ2V0XCIpO1xuICAgIFdpZGdldC5wcm90b3R5cGUgPSB7XG4gICAgICBjbG9zZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBsZXRpb24ud2lkZ2V0ICE9IHRoaXMpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmNvbXBsZXRpb24ud2lkZ2V0ID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuaGludHMucGFyZW50Tm9kZSlcbiAgICAgICAgICB0aGlzLmhpbnRzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5oaW50cyk7XG4gICAgICAgIHRoaXMuY29tcGxldGlvbi5jbS5yZW1vdmVLZXlNYXAodGhpcy5rZXlNYXApO1xuICAgICAgICB2YXIgaW5wdXQgPSB0aGlzLmNvbXBsZXRpb24uY20uZ2V0SW5wdXRGaWVsZCgpO1xuICAgICAgICBpbnB1dC5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIik7XG4gICAgICAgIGlucHV0LnJlbW92ZUF0dHJpYnV0ZShcImFyaWEtb3duc1wiKTtcbiAgICAgICAgdmFyIGNtID0gdGhpcy5jb21wbGV0aW9uLmNtO1xuICAgICAgICBpZiAodGhpcy5jb21wbGV0aW9uLm9wdGlvbnMuY2xvc2VPblVuZm9jdXMpIHtcbiAgICAgICAgICBjbS5vZmYoXCJibHVyXCIsIHRoaXMub25CbHVyKTtcbiAgICAgICAgICBjbS5vZmYoXCJmb2N1c1wiLCB0aGlzLm9uRm9jdXMpO1xuICAgICAgICB9XG4gICAgICAgIGNtLm9mZihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICAgIH0sXG4gICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5jb21wbGV0aW9uLmNtLnJlbW92ZUtleU1hcCh0aGlzLmtleU1hcCk7XG4gICAgICAgIHZhciB3aWRnZXQgPSB0aGlzO1xuICAgICAgICB0aGlzLmtleU1hcCA9IHsgRW50ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHdpZGdldC5waWNrZWQgPSB0cnVlO1xuICAgICAgICB9IH07XG4gICAgICAgIHRoaXMuY29tcGxldGlvbi5jbS5hZGRLZXlNYXAodGhpcy5rZXlNYXApO1xuICAgICAgfSxcbiAgICAgIHBpY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLmNvbXBsZXRpb24ucGljayh0aGlzLmRhdGEsIHRoaXMuc2VsZWN0ZWRIaW50KTtcbiAgICAgIH0sXG4gICAgICBjaGFuZ2VBY3RpdmU6IGZ1bmN0aW9uKGksIGF2b2lkV3JhcCkge1xuICAgICAgICBpZiAoaSA+PSB0aGlzLmRhdGEubGlzdC5sZW5ndGgpXG4gICAgICAgICAgaSA9IGF2b2lkV3JhcCA/IHRoaXMuZGF0YS5saXN0Lmxlbmd0aCAtIDEgOiAwO1xuICAgICAgICBlbHNlIGlmIChpIDwgMClcbiAgICAgICAgICBpID0gYXZvaWRXcmFwID8gMCA6IHRoaXMuZGF0YS5saXN0Lmxlbmd0aCAtIDE7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSGludCA9PSBpKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmhpbnRzLmNoaWxkTm9kZXNbdGhpcy5zZWxlY3RlZEhpbnRdO1xuICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgIG5vZGUuY2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWUucmVwbGFjZShcIiBcIiArIEFDVElWRV9ISU5UX0VMRU1FTlRfQ0xBU1MsIFwiXCIpO1xuICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1zZWxlY3RlZFwiKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlID0gdGhpcy5oaW50cy5jaGlsZE5vZGVzW3RoaXMuc2VsZWN0ZWRIaW50ID0gaV07XG4gICAgICAgIG5vZGUuY2xhc3NOYW1lICs9IFwiIFwiICsgQUNUSVZFX0hJTlRfRUxFTUVOVF9DTEFTUztcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJhcmlhLXNlbGVjdGVkXCIsIFwidHJ1ZVwiKTtcbiAgICAgICAgdGhpcy5jb21wbGV0aW9uLmNtLmdldElucHV0RmllbGQoKS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgbm9kZS5pZCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmUoKTtcbiAgICAgICAgQ29kZU1pcnJvci5zaWduYWwodGhpcy5kYXRhLCBcInNlbGVjdFwiLCB0aGlzLmRhdGEubGlzdFt0aGlzLnNlbGVjdGVkSGludF0sIG5vZGUpO1xuICAgICAgfSxcbiAgICAgIHNjcm9sbFRvQWN0aXZlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkSGludFJhbmdlID0gdGhpcy5nZXRTZWxlY3RlZEhpbnRSYW5nZSgpO1xuICAgICAgICB2YXIgbm9kZTEgPSB0aGlzLmhpbnRzLmNoaWxkTm9kZXNbc2VsZWN0ZWRIaW50UmFuZ2UuZnJvbV07XG4gICAgICAgIHZhciBub2RlMiA9IHRoaXMuaGludHMuY2hpbGROb2Rlc1tzZWxlY3RlZEhpbnRSYW5nZS50b107XG4gICAgICAgIHZhciBmaXJzdE5vZGUgPSB0aGlzLmhpbnRzLmZpcnN0Q2hpbGQ7XG4gICAgICAgIGlmIChub2RlMS5vZmZzZXRUb3AgPCB0aGlzLmhpbnRzLnNjcm9sbFRvcClcbiAgICAgICAgICB0aGlzLmhpbnRzLnNjcm9sbFRvcCA9IG5vZGUxLm9mZnNldFRvcCAtIGZpcnN0Tm9kZS5vZmZzZXRUb3A7XG4gICAgICAgIGVsc2UgaWYgKG5vZGUyLm9mZnNldFRvcCArIG5vZGUyLm9mZnNldEhlaWdodCA+IHRoaXMuaGludHMuc2Nyb2xsVG9wICsgdGhpcy5oaW50cy5jbGllbnRIZWlnaHQpXG4gICAgICAgICAgdGhpcy5oaW50cy5zY3JvbGxUb3AgPSBub2RlMi5vZmZzZXRUb3AgKyBub2RlMi5vZmZzZXRIZWlnaHQgLSB0aGlzLmhpbnRzLmNsaWVudEhlaWdodCArIGZpcnN0Tm9kZS5vZmZzZXRUb3A7XG4gICAgICB9LFxuICAgICAgc2NyZWVuQW1vdW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5oaW50cy5jbGllbnRIZWlnaHQgLyB0aGlzLmhpbnRzLmZpcnN0Q2hpbGQub2Zmc2V0SGVpZ2h0KSB8fCAxO1xuICAgICAgfSxcbiAgICAgIGdldFNlbGVjdGVkSGludFJhbmdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG1hcmdpbiA9IHRoaXMuY29tcGxldGlvbi5vcHRpb25zLnNjcm9sbE1hcmdpbiB8fCAwO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGZyb206IE1hdGgubWF4KDAsIHRoaXMuc2VsZWN0ZWRIaW50IC0gbWFyZ2luKSxcbiAgICAgICAgICB0bzogTWF0aC5taW4odGhpcy5kYXRhLmxpc3QubGVuZ3RoIC0gMSwgdGhpcy5zZWxlY3RlZEhpbnQgKyBtYXJnaW4pXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfTtcbiAgICBmdW5jdGlvbiBhcHBsaWNhYmxlSGVscGVycyhjbSwgaGVscGVycykge1xuICAgICAgaWYgKCFjbS5zb21ldGhpbmdTZWxlY3RlZCgpKVxuICAgICAgICByZXR1cm4gaGVscGVycztcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVscGVycy5sZW5ndGg7IGkrKylcbiAgICAgICAgaWYgKGhlbHBlcnNbaV0uc3VwcG9ydHNTZWxlY3Rpb24pXG4gICAgICAgICAgcmVzdWx0LnB1c2goaGVscGVyc1tpXSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBfX25hbWUoYXBwbGljYWJsZUhlbHBlcnMsIFwiYXBwbGljYWJsZUhlbHBlcnNcIik7XG4gICAgZnVuY3Rpb24gZmV0Y2hIaW50cyhoaW50LCBjbSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgICAgIGlmIChoaW50LmFzeW5jKSB7XG4gICAgICAgIGhpbnQoY20sIGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBoaW50KGNtLCBvcHRpb25zKTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQudGhlbilcbiAgICAgICAgICByZXN1bHQudGhlbihjYWxsYmFjayk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoZmV0Y2hIaW50cywgXCJmZXRjaEhpbnRzXCIpO1xuICAgIGZ1bmN0aW9uIHJlc29sdmVBdXRvSGludHMoY20sIHBvcykge1xuICAgICAgdmFyIGhlbHBlcnMgPSBjbS5nZXRIZWxwZXJzKHBvcywgXCJoaW50XCIpLCB3b3JkcztcbiAgICAgIGlmIChoZWxwZXJzLmxlbmd0aCkge1xuICAgICAgICB2YXIgcmVzb2x2ZWQgPSAvKiBAX19QVVJFX18gKi8gX19uYW1lKGZ1bmN0aW9uKGNtMiwgY2FsbGJhY2ssIG9wdGlvbnMpIHtcbiAgICAgICAgICB2YXIgYXBwID0gYXBwbGljYWJsZUhlbHBlcnMoY20yLCBoZWxwZXJzKTtcbiAgICAgICAgICBmdW5jdGlvbiBydW4oaSkge1xuICAgICAgICAgICAgaWYgKGkgPT0gYXBwLmxlbmd0aClcbiAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICAgICAgZmV0Y2hIaW50cyhhcHBbaV0sIGNtMiwgb3B0aW9ucywgZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lmxpc3QubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpO1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcnVuKGkgKyAxKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfX25hbWUocnVuLCBcInJ1blwiKTtcbiAgICAgICAgICBydW4oMCk7XG4gICAgICAgIH0sIFwicmVzb2x2ZWRcIik7XG4gICAgICAgIHJlc29sdmVkLmFzeW5jID0gdHJ1ZTtcbiAgICAgICAgcmVzb2x2ZWQuc3VwcG9ydHNTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gICAgICB9IGVsc2UgaWYgKHdvcmRzID0gY20uZ2V0SGVscGVyKGNtLmdldEN1cnNvcigpLCBcImhpbnRXb3Jkc1wiKSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oY20yKSB7XG4gICAgICAgICAgcmV0dXJuIENvZGVNaXJyb3IuaGludC5mcm9tTGlzdChjbTIsIHsgd29yZHMgfSk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKENvZGVNaXJyb3IuaGludC5hbnl3b3JkKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihjbTIsIG9wdGlvbnMpIHtcbiAgICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5oaW50LmFueXdvcmQoY20yLCBvcHRpb25zKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgX19uYW1lKHJlc29sdmVBdXRvSGludHMsIFwicmVzb2x2ZUF1dG9IaW50c1wiKTtcbiAgICBDb2RlTWlycm9yLnJlZ2lzdGVySGVscGVyKFwiaGludFwiLCBcImF1dG9cIiwge1xuICAgICAgcmVzb2x2ZTogcmVzb2x2ZUF1dG9IaW50c1xuICAgIH0pO1xuICAgIENvZGVNaXJyb3IucmVnaXN0ZXJIZWxwZXIoXCJoaW50XCIsIFwiZnJvbUxpc3RcIiwgZnVuY3Rpb24oY20sIG9wdGlvbnMpIHtcbiAgICAgIHZhciBjdXIgPSBjbS5nZXRDdXJzb3IoKSwgdG9rZW4gPSBjbS5nZXRUb2tlbkF0KGN1cik7XG4gICAgICB2YXIgdGVybSwgZnJvbSA9IENvZGVNaXJyb3IuUG9zKGN1ci5saW5lLCB0b2tlbi5zdGFydCksIHRvID0gY3VyO1xuICAgICAgaWYgKHRva2VuLnN0YXJ0IDwgY3VyLmNoICYmIC9cXHcvLnRlc3QodG9rZW4uc3RyaW5nLmNoYXJBdChjdXIuY2ggLSB0b2tlbi5zdGFydCAtIDEpKSkge1xuICAgICAgICB0ZXJtID0gdG9rZW4uc3RyaW5nLnN1YnN0cigwLCBjdXIuY2ggLSB0b2tlbi5zdGFydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXJtID0gXCJcIjtcbiAgICAgICAgZnJvbSA9IGN1cjtcbiAgICAgIH1cbiAgICAgIHZhciBmb3VuZCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLndvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3b3JkID0gb3B0aW9ucy53b3Jkc1tpXTtcbiAgICAgICAgaWYgKHdvcmQuc2xpY2UoMCwgdGVybS5sZW5ndGgpID09IHRlcm0pXG4gICAgICAgICAgZm91bmQucHVzaCh3b3JkKTtcbiAgICAgIH1cbiAgICAgIGlmIChmb3VuZC5sZW5ndGgpXG4gICAgICAgIHJldHVybiB7IGxpc3Q6IGZvdW5kLCBmcm9tLCB0byB9O1xuICAgIH0pO1xuICAgIENvZGVNaXJyb3IuY29tbWFuZHMuYXV0b2NvbXBsZXRlID0gQ29kZU1pcnJvci5zaG93SGludDtcbiAgICB2YXIgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgICBoaW50OiBDb2RlTWlycm9yLmhpbnQuYXV0byxcbiAgICAgIGNvbXBsZXRlU2luZ2xlOiB0cnVlLFxuICAgICAgYWxpZ25XaXRoV29yZDogdHJ1ZSxcbiAgICAgIGNsb3NlQ2hhcmFjdGVyczogL1tcXHMoKVxcW1xcXXt9Ozo+LF0vLFxuICAgICAgY2xvc2VPblBpY2s6IHRydWUsXG4gICAgICBjbG9zZU9uVW5mb2N1czogdHJ1ZSxcbiAgICAgIHVwZGF0ZU9uQ3Vyc29yQWN0aXZpdHk6IHRydWUsXG4gICAgICBjb21wbGV0ZU9uU2luZ2xlQ2xpY2s6IHRydWUsXG4gICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICBjdXN0b21LZXlzOiBudWxsLFxuICAgICAgZXh0cmFLZXlzOiBudWxsLFxuICAgICAgcGFkZGluZ0ZvclNjcm9sbGJhcjogdHJ1ZSxcbiAgICAgIG1vdmVPbk92ZXJsYXA6IHRydWVcbiAgICB9O1xuICAgIENvZGVNaXJyb3IuZGVmaW5lT3B0aW9uKFwiaGludE9wdGlvbnNcIiwgbnVsbCk7XG4gIH0pO1xufSkoKTtcbnZhciBzaG93SGludCA9IHNob3dIaW50JDIuZXhwb3J0cztcbnZhciBzaG93SGludCQxID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5mcmVlemUoLyogQF9fUFVSRV9fICovIF9tZXJnZU5hbWVzcGFjZXMoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiBcIk1vZHVsZVwiLFxuICBcImRlZmF1bHRcIjogc2hvd0hpbnRcbn0sIFtzaG93SGludCQyLmV4cG9ydHNdKSk7XG5leHBvcnQgeyBzaG93SGludCQxIGFzIHMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBN0VBO0FBQ0E7QUE4RUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyQkE7QUF1QkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpCQTtBQUNBO0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBbkVBO0FBQ0E7QUFvRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWJBO0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/show-hint.es.js\n");
|
2758 |
|
2759 | }),
|
2760 |
|
2761 | "../../graphiql-react/dist/sublime.es.js":
|
2762 |
|
2763 |
|
2764 |
|
2765 |
|
2766 | (function(module, exports, __webpack_require__) {
|
2767 |
|
2768 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./codemirror.es.js */ \"../../graphiql-react/dist/codemirror.es.js\"), __webpack_require__(/*! ./searchcursor.es.js */ \"../../graphiql-react/dist/searchcursor.es.js\"), __webpack_require__(/*! ./matchbrackets.es.js */ \"../../graphiql-react/dist/matchbrackets.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _codemirrorEs, _searchcursorEs, _matchbracketsEs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.s = void 0;\n var __defProp = Object.defineProperty;\n\n var __name = (target, value) => __defProp(target, \"name\", {\n value,\n configurable: true\n });\n\n function _mergeNamespaces(n, m) {\n m.forEach(function (e) {\n e && typeof e !== \"string\" && !Array.isArray(e) && Object.keys(e).forEach(function (k) {\n if (k !== \"default\" && !(k in n)) {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n });\n return Object.freeze(n);\n }\n\n __name(_mergeNamespaces, \"_mergeNamespaces\");\n\n var sublime$2 = {\n exports: {}\n };\n\n (function (module, exports) {\n (function (mod) {\n mod(_codemirrorEs.a.exports, _searchcursorEs.a.exports, _matchbracketsEs.a.exports);\n })(function (CodeMirror) {\n var cmds = CodeMirror.commands;\n var Pos = CodeMirror.Pos;\n\n function findPosSubword(doc, start, dir) {\n if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1));\n var line = doc.getLine(start.line);\n if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0));\n var state = \"start\",\n type,\n startPos = start.ch;\n\n for (var pos = startPos, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) {\n var next = line.charAt(dir < 0 ? pos - 1 : pos);\n var cat = next != \"_\" && CodeMirror.isWordChar(next) ? \"w\" : \"o\";\n if (cat == \"w\" && next.toUpperCase() == next) cat = \"W\";\n\n if (state == \"start\") {\n if (cat != \"o\") {\n state = \"in\";\n type = cat;\n } else startPos = pos + dir;\n } else if (state == \"in\") {\n if (type != cat) {\n if (type == \"w\" && cat == \"W\" && dir < 0) pos--;\n\n if (type == \"W\" && cat == \"w\" && dir > 0) {\n if (pos == startPos + 1) {\n type = \"w\";\n continue;\n } else pos--;\n }\n\n break;\n }\n }\n }\n\n return Pos(start.line, pos);\n }\n\n __name(findPosSubword, \"findPosSubword\");\n\n function moveSubword(cm, dir) {\n cm.extendSelectionsBy(function (range) {\n if (cm.display.shift || cm.doc.extend || range.empty()) return findPosSubword(cm.doc, range.head, dir);else return dir < 0 ? range.from() : range.to();\n });\n }\n\n __name(moveSubword, \"moveSubword\");\n\n cmds.goSubwordLeft = function (cm) {\n moveSubword(cm, -1);\n };\n\n cmds.goSubwordRight = function (cm) {\n moveSubword(cm, 1);\n };\n\n cmds.scrollLineUp = function (cm) {\n var info = cm.getScrollInfo();\n\n if (!cm.somethingSelected()) {\n var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, \"local\");\n if (cm.getCursor().line >= visibleBottomLine) cm.execCommand(\"goLineUp\");\n }\n\n cm.scrollTo(null, info.top - cm.defaultTextHeight());\n };\n\n cmds.scrollLineDown = function (cm) {\n var info = cm.getScrollInfo();\n\n if (!cm.somethingSelected()) {\n var visibleTopLine = cm.lineAtHeight(info.top, \"local\") + 1;\n if (cm.getCursor().line <= visibleTopLine) cm.execCommand(\"goLineDown\");\n }\n\n cm.scrollTo(null, info.top + cm.defaultTextHeight());\n };\n\n cmds.splitSelectionByLine = function (cm) {\n var ranges = cm.listSelections(),\n lineRanges = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(),\n to = ranges[i].to();\n\n for (var line = from.line; line <= to.line; ++line) if (!(to.line > from.line && line == to.line && to.ch == 0)) lineRanges.push({\n anchor: line == from.line ? from : Pos(line, 0),\n head: line == to.line ? to : Pos(line)\n });\n }\n\n cm.setSelections(lineRanges, 0);\n };\n\n cmds.singleSelectionTop = function (cm) {\n var range = cm.listSelections()[0];\n cm.setSelection(range.anchor, range.head, {\n scroll: false\n });\n };\n\n cmds.selectLine = function (cm) {\n var ranges = cm.listSelections(),\n extended = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n extended.push({\n anchor: Pos(range.from().line, 0),\n head: Pos(range.to().line + 1, 0)\n });\n }\n\n cm.setSelections(extended);\n };\n\n function insertLine(cm, above) {\n if (cm.isReadOnly()) return CodeMirror.Pass;\n cm.operation(function () {\n var len = cm.listSelections().length,\n newSelection = [],\n last = -1;\n\n for (var i = 0; i < len; i++) {\n var head = cm.listSelections()[i].head;\n if (head.line <= last) continue;\n var at = Pos(head.line + (above ? 0 : 1), 0);\n cm.replaceRange(\"\\n\", at, null, \"+insertLine\");\n cm.indentLine(at.line, null, true);\n newSelection.push({\n head: at,\n anchor: at\n });\n last = head.line + 1;\n }\n\n cm.setSelections(newSelection);\n });\n cm.execCommand(\"indentAuto\");\n }\n\n __name(insertLine, \"insertLine\");\n\n cmds.insertLineAfter = function (cm) {\n return insertLine(cm, false);\n };\n\n cmds.insertLineBefore = function (cm) {\n return insertLine(cm, true);\n };\n\n function wordAt(cm, pos) {\n var start = pos.ch,\n end = start,\n line = cm.getLine(pos.line);\n\n while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start;\n\n while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end;\n\n return {\n from: Pos(pos.line, start),\n to: Pos(pos.line, end),\n word: line.slice(start, end)\n };\n }\n\n __name(wordAt, \"wordAt\");\n\n cmds.selectNextOccurrence = function (cm) {\n var from = cm.getCursor(\"from\"),\n to = cm.getCursor(\"to\");\n var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel;\n\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n cm.setSelection(word.from, word.to);\n fullWord = true;\n } else {\n var text = cm.getRange(from, to);\n var query = fullWord ? new RegExp(\"\\\\b\" + text + \"\\\\b\") : text;\n var cur = cm.getSearchCursor(query, to);\n var found = cur.findNext();\n\n if (!found) {\n cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0));\n found = cur.findNext();\n }\n\n if (!found || isSelectedRange(cm.listSelections(), cur.from(), cur.to())) return;\n cm.addSelection(cur.from(), cur.to());\n }\n\n if (fullWord) cm.state.sublimeFindFullWord = cm.doc.sel;\n };\n\n cmds.skipAndSelectNextOccurrence = function (cm) {\n var prevAnchor = cm.getCursor(\"anchor\"),\n prevHead = cm.getCursor(\"head\");\n cmds.selectNextOccurrence(cm);\n\n if (CodeMirror.cmpPos(prevAnchor, prevHead) != 0) {\n cm.doc.setSelections(cm.doc.listSelections().filter(function (sel) {\n return sel.anchor != prevAnchor || sel.head != prevHead;\n }));\n }\n };\n\n function addCursorToSelection(cm, dir) {\n var ranges = cm.listSelections(),\n newRanges = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var newAnchor = cm.findPosV(range.anchor, dir, \"line\", range.anchor.goalColumn);\n var newHead = cm.findPosV(range.head, dir, \"line\", range.head.goalColumn);\n newAnchor.goalColumn = range.anchor.goalColumn != null ? range.anchor.goalColumn : cm.cursorCoords(range.anchor, \"div\").left;\n newHead.goalColumn = range.head.goalColumn != null ? range.head.goalColumn : cm.cursorCoords(range.head, \"div\").left;\n var newRange = {\n anchor: newAnchor,\n head: newHead\n };\n newRanges.push(range);\n newRanges.push(newRange);\n }\n\n cm.setSelections(newRanges);\n }\n\n __name(addCursorToSelection, \"addCursorToSelection\");\n\n cmds.addCursorToPrevLine = function (cm) {\n addCursorToSelection(cm, -1);\n };\n\n cmds.addCursorToNextLine = function (cm) {\n addCursorToSelection(cm, 1);\n };\n\n function isSelectedRange(ranges, from, to) {\n for (var i = 0; i < ranges.length; i++) if (CodeMirror.cmpPos(ranges[i].from(), from) == 0 && CodeMirror.cmpPos(ranges[i].to(), to) == 0) return true;\n\n return false;\n }\n\n __name(isSelectedRange, \"isSelectedRange\");\n\n var mirror = \"(){}[]\";\n\n function selectBetweenBrackets(cm) {\n var ranges = cm.listSelections(),\n newRanges = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i],\n pos = range.head,\n opening = cm.scanForBracket(pos, -1);\n if (!opening) return false;\n\n for (;;) {\n var closing = cm.scanForBracket(pos, 1);\n if (!closing) return false;\n\n if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) {\n var startPos = Pos(opening.pos.line, opening.pos.ch + 1);\n\n if (CodeMirror.cmpPos(startPos, range.from()) == 0 && CodeMirror.cmpPos(closing.pos, range.to()) == 0) {\n opening = cm.scanForBracket(opening.pos, -1);\n if (!opening) return false;\n } else {\n newRanges.push({\n anchor: startPos,\n head: closing.pos\n });\n break;\n }\n }\n\n pos = Pos(closing.pos.line, closing.pos.ch + 1);\n }\n }\n\n cm.setSelections(newRanges);\n return true;\n }\n\n __name(selectBetweenBrackets, \"selectBetweenBrackets\");\n\n cmds.selectScope = function (cm) {\n selectBetweenBrackets(cm) || cm.execCommand(\"selectAll\");\n };\n\n cmds.selectBetweenBrackets = function (cm) {\n if (!selectBetweenBrackets(cm)) return CodeMirror.Pass;\n };\n\n function puncType(type) {\n return !type ? null : /\\bpunctuation\\b/.test(type) ? type : void 0;\n }\n\n __name(puncType, \"puncType\");\n\n cmds.goToBracket = function (cm) {\n cm.extendSelectionsBy(function (range) {\n var next = cm.scanForBracket(range.head, 1, puncType(cm.getTokenTypeAt(range.head)));\n if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos;\n var prev = cm.scanForBracket(range.head, -1, puncType(cm.getTokenTypeAt(Pos(range.head.line, range.head.ch + 1))));\n return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head;\n });\n };\n\n cmds.swapLineUp = function (cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass;\n var ranges = cm.listSelections(),\n linesToMove = [],\n at = cm.firstLine() - 1,\n newSels = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i],\n from = range.from().line - 1,\n to = range.to().line;\n newSels.push({\n anchor: Pos(range.anchor.line - 1, range.anchor.ch),\n head: Pos(range.head.line - 1, range.head.ch)\n });\n if (range.to().ch == 0 && !range.empty()) --to;\n if (from > at) linesToMove.push(from, to);else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n\n cm.operation(function () {\n for (var i2 = 0; i2 < linesToMove.length; i2 += 2) {\n var from2 = linesToMove[i2],\n to2 = linesToMove[i2 + 1];\n var line = cm.getLine(from2);\n cm.replaceRange(\"\", Pos(from2, 0), Pos(from2 + 1, 0), \"+swapLine\");\n if (to2 > cm.lastLine()) cm.replaceRange(\"\\n\" + line, Pos(cm.lastLine()), null, \"+swapLine\");else cm.replaceRange(line + \"\\n\", Pos(to2, 0), null, \"+swapLine\");\n }\n\n cm.setSelections(newSels);\n cm.scrollIntoView();\n });\n };\n\n cmds.swapLineDown = function (cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass;\n var ranges = cm.listSelections(),\n linesToMove = [],\n at = cm.lastLine() + 1;\n\n for (var i = ranges.length - 1; i >= 0; i--) {\n var range = ranges[i],\n from = range.to().line + 1,\n to = range.from().line;\n if (range.to().ch == 0 && !range.empty()) from--;\n if (from < at) linesToMove.push(from, to);else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n\n cm.operation(function () {\n for (var i2 = linesToMove.length - 2; i2 >= 0; i2 -= 2) {\n var from2 = linesToMove[i2],\n to2 = linesToMove[i2 + 1];\n var line = cm.getLine(from2);\n if (from2 == cm.lastLine()) cm.replaceRange(\"\", Pos(from2 - 1), Pos(from2), \"+swapLine\");else cm.replaceRange(\"\", Pos(from2, 0), Pos(from2 + 1, 0), \"+swapLine\");\n cm.replaceRange(line + \"\\n\", Pos(to2, 0), null, \"+swapLine\");\n }\n\n cm.scrollIntoView();\n });\n };\n\n cmds.toggleCommentIndented = function (cm) {\n cm.toggleComment({\n indent: true\n });\n };\n\n cmds.joinLines = function (cm) {\n var ranges = cm.listSelections(),\n joined = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i],\n from = range.from();\n var start = from.line,\n end = range.to().line;\n\n while (i < ranges.length - 1 && ranges[i + 1].from().line == end) end = ranges[++i].to().line;\n\n joined.push({\n start,\n end,\n anchor: !range.empty() && from\n });\n }\n\n cm.operation(function () {\n var offset = 0,\n ranges2 = [];\n\n for (var i2 = 0; i2 < joined.length; i2++) {\n var obj = joined[i2];\n var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch),\n head;\n\n for (var line = obj.start; line <= obj.end; line++) {\n var actual = line - offset;\n if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1);\n\n if (actual < cm.lastLine()) {\n cm.replaceRange(\" \", Pos(actual), Pos(actual + 1, /^\\s*/.exec(cm.getLine(actual + 1))[0].length));\n ++offset;\n }\n }\n\n ranges2.push({\n anchor: anchor || head,\n head\n });\n }\n\n cm.setSelections(ranges2, 0);\n });\n };\n\n cmds.duplicateLine = function (cm) {\n cm.operation(function () {\n var rangeCount = cm.listSelections().length;\n\n for (var i = 0; i < rangeCount; i++) {\n var range = cm.listSelections()[i];\n if (range.empty()) cm.replaceRange(cm.getLine(range.head.line) + \"\\n\", Pos(range.head.line, 0));else cm.replaceRange(cm.getRange(range.from(), range.to()), range.from());\n }\n\n cm.scrollIntoView();\n });\n };\n\n function sortLines(cm, caseSensitive, direction) {\n if (cm.isReadOnly()) return CodeMirror.Pass;\n var ranges = cm.listSelections(),\n toSort = [],\n selected;\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) continue;\n var from = range.from().line,\n to = range.to().line;\n\n while (i < ranges.length - 1 && ranges[i + 1].from().line == to) to = ranges[++i].to().line;\n\n if (!ranges[i].to().ch) to--;\n toSort.push(from, to);\n }\n\n if (toSort.length) selected = true;else toSort.push(cm.firstLine(), cm.lastLine());\n cm.operation(function () {\n var ranges2 = [];\n\n for (var i2 = 0; i2 < toSort.length; i2 += 2) {\n var from2 = toSort[i2],\n to2 = toSort[i2 + 1];\n var start = Pos(from2, 0),\n end = Pos(to2);\n var lines = cm.getRange(start, end, false);\n if (caseSensitive) lines.sort(function (a, b) {\n return a < b ? -direction : a == b ? 0 : direction;\n });else lines.sort(function (a, b) {\n var au = a.toUpperCase(),\n bu = b.toUpperCase();\n\n if (au != bu) {\n a = au;\n b = bu;\n }\n\n return a < b ? -direction : a == b ? 0 : direction;\n });\n cm.replaceRange(lines, start, end);\n if (selected) ranges2.push({\n anchor: start,\n head: Pos(to2 + 1, 0)\n });\n }\n\n if (selected) cm.setSelections(ranges2, 0);\n });\n }\n\n __name(sortLines, \"sortLines\");\n\n cmds.sortLines = function (cm) {\n sortLines(cm, true, 1);\n };\n\n cmds.reverseSortLines = function (cm) {\n sortLines(cm, true, -1);\n };\n\n cmds.sortLinesInsensitive = function (cm) {\n sortLines(cm, false, 1);\n };\n\n cmds.reverseSortLinesInsensitive = function (cm) {\n sortLines(cm, false, -1);\n };\n\n cmds.nextBookmark = function (cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n var current = marks.shift();\n var found = current.find();\n\n if (found) {\n marks.push(current);\n return cm.setSelection(found.from, found.to);\n }\n }\n };\n\n cmds.prevBookmark = function (cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n marks.unshift(marks.pop());\n var found = marks[marks.length - 1].find();\n if (!found) marks.pop();else return cm.setSelection(found.from, found.to);\n }\n };\n\n cmds.toggleBookmark = function (cm) {\n var ranges = cm.listSelections();\n var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []);\n\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(),\n to = ranges[i].to();\n var found = ranges[i].empty() ? cm.findMarksAt(from) : cm.findMarks(from, to);\n\n for (var j = 0; j < found.length; j++) {\n if (found[j].sublimeBookmark) {\n found[j].clear();\n\n for (var k = 0; k < marks.length; k++) if (marks[k] == found[j]) marks.splice(k--, 1);\n\n break;\n }\n }\n\n if (j == found.length) marks.push(cm.markText(from, to, {\n sublimeBookmark: true,\n clearWhenEmpty: false\n }));\n }\n };\n\n cmds.clearBookmarks = function (cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) for (var i = 0; i < marks.length; i++) marks[i].clear();\n marks.length = 0;\n };\n\n cmds.selectBookmarks = function (cm) {\n var marks = cm.state.sublimeBookmarks,\n ranges = [];\n if (marks) for (var i = 0; i < marks.length; i++) {\n var found = marks[i].find();\n if (!found) marks.splice(i--, 0);else ranges.push({\n anchor: found.from,\n head: found.to\n });\n }\n if (ranges.length) cm.setSelections(ranges, 0);\n };\n\n function modifyWordOrSelection(cm, mod) {\n cm.operation(function () {\n var ranges = cm.listSelections(),\n indices = [],\n replacements = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n\n if (range.empty()) {\n indices.push(i);\n replacements.push(\"\");\n } else replacements.push(mod(cm.getRange(range.from(), range.to())));\n }\n\n cm.replaceSelections(replacements, \"around\", \"case\");\n\n for (var i = indices.length - 1, at; i >= 0; i--) {\n var range = ranges[indices[i]];\n if (at && CodeMirror.cmpPos(range.head, at) > 0) continue;\n var word = wordAt(cm, range.head);\n at = word.from;\n cm.replaceRange(mod(word.word), word.from, word.to);\n }\n });\n }\n\n __name(modifyWordOrSelection, \"modifyWordOrSelection\");\n\n cmds.smartBackspace = function (cm) {\n if (cm.somethingSelected()) return CodeMirror.Pass;\n cm.operation(function () {\n var cursors = cm.listSelections();\n var indentUnit = cm.getOption(\"indentUnit\");\n\n for (var i = cursors.length - 1; i >= 0; i--) {\n var cursor = cursors[i].head;\n var toStartOfLine = cm.getRange({\n line: cursor.line,\n ch: 0\n }, cursor);\n var column = CodeMirror.countColumn(toStartOfLine, null, cm.getOption(\"tabSize\"));\n var deletePos = cm.findPosH(cursor, -1, \"char\", false);\n\n if (toStartOfLine && !/\\S/.test(toStartOfLine) && column % indentUnit == 0) {\n var prevIndent = new Pos(cursor.line, CodeMirror.findColumn(toStartOfLine, column - indentUnit, indentUnit));\n if (prevIndent.ch != cursor.ch) deletePos = prevIndent;\n }\n\n cm.replaceRange(\"\", deletePos, cursor, \"+delete\");\n }\n });\n };\n\n cmds.delLineRight = function (cm) {\n cm.operation(function () {\n var ranges = cm.listSelections();\n\n for (var i = ranges.length - 1; i >= 0; i--) cm.replaceRange(\"\", ranges[i].anchor, Pos(ranges[i].to().line), \"+delete\");\n\n cm.scrollIntoView();\n });\n };\n\n cmds.upcaseAtCursor = function (cm) {\n modifyWordOrSelection(cm, function (str) {\n return str.toUpperCase();\n });\n };\n\n cmds.downcaseAtCursor = function (cm) {\n modifyWordOrSelection(cm, function (str) {\n return str.toLowerCase();\n });\n };\n\n cmds.setSublimeMark = function (cm) {\n if (cm.state.sublimeMark) cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n };\n\n cmds.selectToSublimeMark = function (cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) cm.setSelection(cm.getCursor(), found);\n };\n\n cmds.deleteToSublimeMark = function (cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n\n if (found) {\n var from = cm.getCursor(),\n to = found;\n\n if (CodeMirror.cmpPos(from, to) > 0) {\n var tmp = to;\n to = from;\n from = tmp;\n }\n\n cm.state.sublimeKilled = cm.getRange(from, to);\n cm.replaceRange(\"\", from, to);\n }\n };\n\n cmds.swapWithSublimeMark = function (cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n\n if (found) {\n cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n cm.setCursor(found);\n }\n };\n\n cmds.sublimeYank = function (cm) {\n if (cm.state.sublimeKilled != null) cm.replaceSelection(cm.state.sublimeKilled, null, \"paste\");\n };\n\n cmds.showInCenter = function (cm) {\n var pos = cm.cursorCoords(null, \"local\");\n cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2);\n };\n\n function getTarget(cm) {\n var from = cm.getCursor(\"from\"),\n to = cm.getCursor(\"to\");\n\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n from = word.from;\n to = word.to;\n }\n\n return {\n from,\n to,\n query: cm.getRange(from, to),\n word\n };\n }\n\n __name(getTarget, \"getTarget\");\n\n function findAndGoTo(cm, forward) {\n var target = getTarget(cm);\n if (!target) return;\n var query = target.query;\n var cur = cm.getSearchCursor(query, forward ? target.to : target.from);\n\n if (forward ? cur.findNext() : cur.findPrevious()) {\n cm.setSelection(cur.from(), cur.to());\n } else {\n cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0) : cm.clipPos(Pos(cm.lastLine())));\n if (forward ? cur.findNext() : cur.findPrevious()) cm.setSelection(cur.from(), cur.to());else if (target.word) cm.setSelection(target.from, target.to);\n }\n }\n\n __name(findAndGoTo, \"findAndGoTo\");\n\n cmds.findUnder = function (cm) {\n findAndGoTo(cm, true);\n };\n\n cmds.findUnderPrevious = function (cm) {\n findAndGoTo(cm, false);\n };\n\n cmds.findAllUnder = function (cm) {\n var target = getTarget(cm);\n if (!target) return;\n var cur = cm.getSearchCursor(target.query);\n var matches = [];\n var primaryIndex = -1;\n\n while (cur.findNext()) {\n matches.push({\n anchor: cur.from(),\n head: cur.to()\n });\n if (cur.from().line <= target.from.line && cur.from().ch <= target.from.ch) primaryIndex++;\n }\n\n cm.setSelections(matches, primaryIndex);\n };\n\n var keyMap = CodeMirror.keyMap;\n keyMap.macSublime = {\n \"Cmd-Left\": \"goLineStartSmart\",\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-Left\": \"goSubwordLeft\",\n \"Ctrl-Right\": \"goSubwordRight\",\n \"Ctrl-Alt-Up\": \"scrollLineUp\",\n \"Ctrl-Alt-Down\": \"scrollLineDown\",\n \"Cmd-L\": \"selectLine\",\n \"Shift-Cmd-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Cmd-Enter\": \"insertLineAfter\",\n \"Shift-Cmd-Enter\": \"insertLineBefore\",\n \"Cmd-D\": \"selectNextOccurrence\",\n \"Shift-Cmd-Space\": \"selectScope\",\n \"Shift-Cmd-M\": \"selectBetweenBrackets\",\n \"Cmd-M\": \"goToBracket\",\n \"Cmd-Ctrl-Up\": \"swapLineUp\",\n \"Cmd-Ctrl-Down\": \"swapLineDown\",\n \"Cmd-/\": \"toggleCommentIndented\",\n \"Cmd-J\": \"joinLines\",\n \"Shift-Cmd-D\": \"duplicateLine\",\n \"F5\": \"sortLines\",\n \"Shift-F5\": \"reverseSortLines\",\n \"Cmd-F5\": \"sortLinesInsensitive\",\n \"Shift-Cmd-F5\": \"reverseSortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Cmd-F2\": \"toggleBookmark\",\n \"Shift-Cmd-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Cmd-K Cmd-D\": \"skipAndSelectNextOccurrence\",\n \"Cmd-K Cmd-K\": \"delLineRight\",\n \"Cmd-K Cmd-U\": \"upcaseAtCursor\",\n \"Cmd-K Cmd-L\": \"downcaseAtCursor\",\n \"Cmd-K Cmd-Space\": \"setSublimeMark\",\n \"Cmd-K Cmd-A\": \"selectToSublimeMark\",\n \"Cmd-K Cmd-W\": \"deleteToSublimeMark\",\n \"Cmd-K Cmd-X\": \"swapWithSublimeMark\",\n \"Cmd-K Cmd-Y\": \"sublimeYank\",\n \"Cmd-K Cmd-C\": \"showInCenter\",\n \"Cmd-K Cmd-G\": \"clearBookmarks\",\n \"Cmd-K Cmd-Backspace\": \"delLineLeft\",\n \"Cmd-K Cmd-1\": \"foldAll\",\n \"Cmd-K Cmd-0\": \"unfoldAll\",\n \"Cmd-K Cmd-J\": \"unfoldAll\",\n \"Ctrl-Shift-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Shift-Down\": \"addCursorToNextLine\",\n \"Cmd-F3\": \"findUnder\",\n \"Shift-Cmd-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Cmd-[\": \"fold\",\n \"Shift-Cmd-]\": \"unfold\",\n \"Cmd-I\": \"findIncremental\",\n \"Shift-Cmd-I\": \"findIncrementalReverse\",\n \"Cmd-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"macDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.macSublime);\n keyMap.pcSublime = {\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-T\": \"transposeChars\",\n \"Alt-Left\": \"goSubwordLeft\",\n \"Alt-Right\": \"goSubwordRight\",\n \"Ctrl-Up\": \"scrollLineUp\",\n \"Ctrl-Down\": \"scrollLineDown\",\n \"Ctrl-L\": \"selectLine\",\n \"Shift-Ctrl-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Ctrl-Enter\": \"insertLineAfter\",\n \"Shift-Ctrl-Enter\": \"insertLineBefore\",\n \"Ctrl-D\": \"selectNextOccurrence\",\n \"Shift-Ctrl-Space\": \"selectScope\",\n \"Shift-Ctrl-M\": \"selectBetweenBrackets\",\n \"Ctrl-M\": \"goToBracket\",\n \"Shift-Ctrl-Up\": \"swapLineUp\",\n \"Shift-Ctrl-Down\": \"swapLineDown\",\n \"Ctrl-/\": \"toggleCommentIndented\",\n \"Ctrl-J\": \"joinLines\",\n \"Shift-Ctrl-D\": \"duplicateLine\",\n \"F9\": \"sortLines\",\n \"Shift-F9\": \"reverseSortLines\",\n \"Ctrl-F9\": \"sortLinesInsensitive\",\n \"Shift-Ctrl-F9\": \"reverseSortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Ctrl-F2\": \"toggleBookmark\",\n \"Shift-Ctrl-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Ctrl-K Ctrl-D\": \"skipAndSelectNextOccurrence\",\n \"Ctrl-K Ctrl-K\": \"delLineRight\",\n \"Ctrl-K Ctrl-U\": \"upcaseAtCursor\",\n \"Ctrl-K Ctrl-L\": \"downcaseAtCursor\",\n \"Ctrl-K Ctrl-Space\": \"setSublimeMark\",\n \"Ctrl-K Ctrl-A\": \"selectToSublimeMark\",\n \"Ctrl-K Ctrl-W\": \"deleteToSublimeMark\",\n \"Ctrl-K Ctrl-X\": \"swapWithSublimeMark\",\n \"Ctrl-K Ctrl-Y\": \"sublimeYank\",\n \"Ctrl-K Ctrl-C\": \"showInCenter\",\n \"Ctrl-K Ctrl-G\": \"clearBookmarks\",\n \"Ctrl-K Ctrl-Backspace\": \"delLineLeft\",\n \"Ctrl-K Ctrl-1\": \"foldAll\",\n \"Ctrl-K Ctrl-0\": \"unfoldAll\",\n \"Ctrl-K Ctrl-J\": \"unfoldAll\",\n \"Ctrl-Alt-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Alt-Down\": \"addCursorToNextLine\",\n \"Ctrl-F3\": \"findUnder\",\n \"Shift-Ctrl-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Ctrl-[\": \"fold\",\n \"Shift-Ctrl-]\": \"unfold\",\n \"Ctrl-I\": \"findIncremental\",\n \"Shift-Ctrl-I\": \"findIncrementalReverse\",\n \"Ctrl-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"pcDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.pcSublime);\n var mac = keyMap.default == keyMap.macDefault;\n keyMap.sublime = mac ? keyMap.macSublime : keyMap.pcSublime;\n });\n })();\n\n var sublime = sublime$2.exports;\n var sublime$1 = /* @__PURE__ */Object.freeze( /* @__PURE__ */_mergeNamespaces({\n __proto__: null,\n [Symbol.toStringTag]: \"Module\",\n \"default\": sublime\n }, [sublime$2.exports]));\n _exports.s = sublime$1;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtcmVhY3QvZGlzdC9zdWJsaW1lLmVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvcGFja2FnZXMvZ3JhcGhpcWwtcmVhY3QvZGlzdC9zdWJsaW1lLmVzLmpzPzAyMzEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSkgPT4gX19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHsgdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbmltcG9ydCB7IGEgYXMgY29kZW1pcnJvciB9IGZyb20gXCIuL2NvZGVtaXJyb3IuZXMuanNcIjtcbmltcG9ydCB7IGEgYXMgc2VhcmNoY3Vyc29yIH0gZnJvbSBcIi4vc2VhcmNoY3Vyc29yLmVzLmpzXCI7XG5pbXBvcnQgeyBhIGFzIG1hdGNoYnJhY2tldHMgfSBmcm9tIFwiLi9tYXRjaGJyYWNrZXRzLmVzLmpzXCI7XG5mdW5jdGlvbiBfbWVyZ2VOYW1lc3BhY2VzKG4sIG0pIHtcbiAgbS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHtcbiAgICBlICYmIHR5cGVvZiBlICE9PSBcInN0cmluZ1wiICYmICFBcnJheS5pc0FycmF5KGUpICYmIE9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgICAgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmICEoayBpbiBuKSkge1xuICAgICAgICB2YXIgZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgayk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCBrLCBkLmdldCA/IGQgOiB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIGVba107XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKG4pO1xufVxuX19uYW1lKF9tZXJnZU5hbWVzcGFjZXMsIFwiX21lcmdlTmFtZXNwYWNlc1wiKTtcbnZhciBzdWJsaW1lJDIgPSB7IGV4cG9ydHM6IHt9IH07XG4oZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG4gIChmdW5jdGlvbihtb2QpIHtcbiAgICBtb2QoY29kZW1pcnJvci5leHBvcnRzLCBzZWFyY2hjdXJzb3IuZXhwb3J0cywgbWF0Y2hicmFja2V0cy5leHBvcnRzKTtcbiAgfSkoZnVuY3Rpb24oQ29kZU1pcnJvcikge1xuICAgIHZhciBjbWRzID0gQ29kZU1pcnJvci5jb21tYW5kcztcbiAgICB2YXIgUG9zID0gQ29kZU1pcnJvci5Qb3M7XG4gICAgZnVuY3Rpb24gZmluZFBvc1N1YndvcmQoZG9jLCBzdGFydCwgZGlyKSB7XG4gICAgICBpZiAoZGlyIDwgMCAmJiBzdGFydC5jaCA9PSAwKVxuICAgICAgICByZXR1cm4gZG9jLmNsaXBQb3MoUG9zKHN0YXJ0LmxpbmUgLSAxKSk7XG4gICAgICB2YXIgbGluZSA9IGRvYy5nZXRMaW5lKHN0YXJ0LmxpbmUpO1xuICAgICAgaWYgKGRpciA+IDAgJiYgc3RhcnQuY2ggPj0gbGluZS5sZW5ndGgpXG4gICAgICAgIHJldHVybiBkb2MuY2xpcFBvcyhQb3Moc3RhcnQubGluZSArIDEsIDApKTtcbiAgICAgIHZhciBzdGF0ZSA9IFwic3RhcnRcIiwgdHlwZSwgc3RhcnRQb3MgPSBzdGFydC5jaDtcbiAgICAgIGZvciAodmFyIHBvcyA9IHN0YXJ0UG9zLCBlID0gZGlyIDwgMCA/IDAgOiBsaW5lLmxlbmd0aCwgaSA9IDA7IHBvcyAhPSBlOyBwb3MgKz0gZGlyLCBpKyspIHtcbiAgICAgICAgdmFyIG5leHQgPSBsaW5lLmNoYXJBdChkaXIgPCAwID8gcG9zIC0gMSA6IHBvcyk7XG4gICAgICAgIHZhciBjYXQgPSBuZXh0ICE9IFwiX1wiICYmIENvZGVNaXJyb3IuaXNXb3JkQ2hhcihuZXh0KSA/IFwid1wiIDogXCJvXCI7XG4gICAgICAgIGlmIChjYXQgPT0gXCJ3XCIgJiYgbmV4dC50b1VwcGVyQ2FzZSgpID09IG5leHQpXG4gICAgICAgICAgY2F0ID0gXCJXXCI7XG4gICAgICAgIGlmIChzdGF0ZSA9PSBcInN0YXJ0XCIpIHtcbiAgICAgICAgICBpZiAoY2F0ICE9IFwib1wiKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFwiaW5cIjtcbiAgICAgICAgICAgIHR5cGUgPSBjYXQ7XG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICBzdGFydFBvcyA9IHBvcyArIGRpcjtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBcImluXCIpIHtcbiAgICAgICAgICBpZiAodHlwZSAhPSBjYXQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlID09IFwid1wiICYmIGNhdCA9PSBcIldcIiAmJiBkaXIgPCAwKVxuICAgICAgICAgICAgICBwb3MtLTtcbiAgICAgICAgICAgIGlmICh0eXBlID09IFwiV1wiICYmIGNhdCA9PSBcIndcIiAmJiBkaXIgPiAwKSB7XG4gICAgICAgICAgICAgIGlmIChwb3MgPT0gc3RhcnRQb3MgKyAxKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IFwid1wiO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICBwb3MtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIFBvcyhzdGFydC5saW5lLCBwb3MpO1xuICAgIH1cbiAgICBfX25hbWUoZmluZFBvc1N1YndvcmQsIFwiZmluZFBvc1N1YndvcmRcIik7XG4gICAgZnVuY3Rpb24gbW92ZVN1YndvcmQoY20sIGRpcikge1xuICAgICAgY20uZXh0ZW5kU2VsZWN0aW9uc0J5KGZ1bmN0aW9uKHJhbmdlKSB7XG4gICAgICAgIGlmIChjbS5kaXNwbGF5LnNoaWZ0IHx8IGNtLmRvYy5leHRlbmQgfHwgcmFuZ2UuZW1wdHkoKSlcbiAgICAgICAgICByZXR1cm4gZmluZFBvc1N1YndvcmQoY20uZG9jLCByYW5nZS5oZWFkLCBkaXIpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmV0dXJuIGRpciA8IDAgPyByYW5nZS5mcm9tKCkgOiByYW5nZS50bygpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIF9fbmFtZShtb3ZlU3Vid29yZCwgXCJtb3ZlU3Vid29yZFwiKTtcbiAgICBjbWRzLmdvU3Vid29yZExlZnQgPSBmdW5jdGlvbihjbSkge1xuICAgICAgbW92ZVN1YndvcmQoY20sIC0xKTtcbiAgICB9O1xuICAgIGNtZHMuZ29TdWJ3b3JkUmlnaHQgPSBmdW5jdGlvbihjbSkge1xuICAgICAgbW92ZVN1YndvcmQoY20sIDEpO1xuICAgIH07XG4gICAgY21kcy5zY3JvbGxMaW5lVXAgPSBmdW5jdGlvbihjbSkge1xuICAgICAgdmFyIGluZm8gPSBjbS5nZXRTY3JvbGxJbmZvKCk7XG4gICAgICBpZiAoIWNtLnNvbWV0aGluZ1NlbGVjdGVkKCkpIHtcbiAgICAgICAgdmFyIHZpc2libGVCb3R0b21MaW5lID0gY20ubGluZUF0SGVpZ2h0KGluZm8udG9wICsgaW5mby5jbGllbnRIZWlnaHQsIFwibG9jYWxcIik7XG4gICAgICAgIGlmIChjbS5nZXRDdXJzb3IoKS5saW5lID49IHZpc2libGVCb3R0b21MaW5lKVxuICAgICAgICAgIGNtLmV4ZWNDb21tYW5kKFwiZ29MaW5lVXBcIik7XG4gICAgICB9XG4gICAgICBjbS5zY3JvbGxUbyhudWxsLCBpbmZvLnRvcCAtIGNtLmRlZmF1bHRUZXh0SGVpZ2h0KCkpO1xuICAgIH07XG4gICAgY21kcy5zY3JvbGxMaW5lRG93biA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICB2YXIgaW5mbyA9IGNtLmdldFNjcm9sbEluZm8oKTtcbiAgICAgIGlmICghY20uc29tZXRoaW5nU2VsZWN0ZWQoKSkge1xuICAgICAgICB2YXIgdmlzaWJsZVRvcExpbmUgPSBjbS5saW5lQXRIZWlnaHQoaW5mby50b3AsIFwibG9jYWxcIikgKyAxO1xuICAgICAgICBpZiAoY20uZ2V0Q3Vyc29yKCkubGluZSA8PSB2aXNpYmxlVG9wTGluZSlcbiAgICAgICAgICBjbS5leGVjQ29tbWFuZChcImdvTGluZURvd25cIik7XG4gICAgICB9XG4gICAgICBjbS5zY3JvbGxUbyhudWxsLCBpbmZvLnRvcCArIGNtLmRlZmF1bHRUZXh0SGVpZ2h0KCkpO1xuICAgIH07XG4gICAgY21kcy5zcGxpdFNlbGVjdGlvbkJ5TGluZSA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICB2YXIgcmFuZ2VzID0gY20ubGlzdFNlbGVjdGlvbnMoKSwgbGluZVJhbmdlcyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGZyb20gPSByYW5nZXNbaV0uZnJvbSgpLCB0byA9IHJhbmdlc1tpXS50bygpO1xuICAgICAgICBmb3IgKHZhciBsaW5lID0gZnJvbS5saW5lOyBsaW5lIDw9IHRvLmxpbmU7ICsrbGluZSlcbiAgICAgICAgICBpZiAoISh0by5saW5lID4gZnJvbS5saW5lICYmIGxpbmUgPT0gdG8ubGluZSAmJiB0by5jaCA9PSAwKSlcbiAgICAgICAgICAgIGxpbmVSYW5nZXMucHVzaCh7XG4gICAgICAgICAgICAgIGFuY2hvcjogbGluZSA9PSBmcm9tLmxpbmUgPyBmcm9tIDogUG9zKGxpbmUsIDApLFxuICAgICAgICAgICAgICBoZWFkOiBsaW5lID09IHRvLmxpbmUgPyB0byA6IFBvcyhsaW5lKVxuICAgICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjbS5zZXRTZWxlY3Rpb25zKGxpbmVSYW5nZXMsIDApO1xuICAgIH07XG4gICAgY21kcy5zaW5nbGVTZWxlY3Rpb25Ub3AgPSBmdW5jdGlvbihjbSkge1xuICAgICAgdmFyIHJhbmdlID0gY20ubGlzdFNlbGVjdGlvbnMoKVswXTtcbiAgICAgIGNtLnNldFNlbGVjdGlvbihyYW5nZS5hbmNob3IsIHJhbmdlLmhlYWQsIHsgc2Nyb2xsOiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIGNtZHMuc2VsZWN0TGluZSA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICB2YXIgcmFuZ2VzID0gY20ubGlzdFNlbGVjdGlvbnMoKSwgZXh0ZW5kZWQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByYW5nZSA9IHJhbmdlc1tpXTtcbiAgICAgICAgZXh0ZW5kZWQucHVzaCh7XG4gICAgICAgICAgYW5jaG9yOiBQb3MocmFuZ2UuZnJvbSgpLmxpbmUsIDApLFxuICAgICAgICAgIGhlYWQ6IFBvcyhyYW5nZS50bygpLmxpbmUgKyAxLCAwKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNtLnNldFNlbGVjdGlvbnMoZXh0ZW5kZWQpO1xuICAgIH07XG4gICAgZnVuY3Rpb24gaW5zZXJ0TGluZShjbSwgYWJvdmUpIHtcbiAgICAgIGlmIChjbS5pc1JlYWRPbmx5KCkpXG4gICAgICAgIHJldHVybiBDb2RlTWlycm9yLlBhc3M7XG4gICAgICBjbS5vcGVyYXRpb24oZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBsZW4gPSBjbS5saXN0U2VsZWN0aW9ucygpLmxlbmd0aCwgbmV3U2VsZWN0aW9uID0gW10sIGxhc3QgPSAtMTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIHZhciBoZWFkID0gY20ubGlzdFNlbGVjdGlvbnMoKVtpXS5oZWFkO1xuICAgICAgICAgIGlmIChoZWFkLmxpbmUgPD0gbGFzdClcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIHZhciBhdCA9IFBvcyhoZWFkLmxpbmUgKyAoYWJvdmUgPyAwIDogMSksIDApO1xuICAgICAgICAgIGNtLnJlcGxhY2VSYW5nZShcIlxcblwiLCBhdCwgbnVsbCwgXCIraW5zZXJ0TGluZVwiKTtcbiAgICAgICAgICBjbS5pbmRlbnRMaW5lKGF0LmxpbmUsIG51bGwsIHRydWUpO1xuICAgICAgICAgIG5ld1NlbGVjdGlvbi5wdXNoKHsgaGVhZDogYXQsIGFuY2hvcjogYXQgfSk7XG4gICAgICAgICAgbGFzdCA9IGhlYWQubGluZSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgY20uc2V0U2VsZWN0aW9ucyhuZXdTZWxlY3Rpb24pO1xuICAgICAgfSk7XG4gICAgICBjbS5leGVjQ29tbWFuZChcImluZGVudEF1dG9cIik7XG4gICAgfVxuICAgIF9fbmFtZShpbnNlcnRMaW5lLCBcImluc2VydExpbmVcIik7XG4gICAgY21kcy5pbnNlcnRMaW5lQWZ0ZXIgPSBmdW5jdGlvbihjbSkge1xuICAgICAgcmV0dXJuIGluc2VydExpbmUoY20sIGZhbHNlKTtcbiAgICB9O1xuICAgIGNtZHMuaW5zZXJ0TGluZUJlZm9yZSA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICByZXR1cm4gaW5zZXJ0TGluZShjbSwgdHJ1ZSk7XG4gICAgfTtcbiAgICBmdW5jdGlvbiB3b3JkQXQoY20sIHBvcykge1xuICAgICAgdmFyIHN0YXJ0ID0gcG9zLmNoLCBlbmQgPSBzdGFydCwgbGluZSA9IGNtLmdldExpbmUocG9zLmxpbmUpO1xuICAgICAgd2hpbGUgKHN0YXJ0ICYmIENvZGVNaXJyb3IuaXNXb3JkQ2hhcihsaW5lLmNoYXJBdChzdGFydCAtIDEpKSlcbiAgICAgICAgLS1zdGFydDtcbiAgICAgIHdoaWxlIChlbmQgPCBsaW5lLmxlbmd0aCAmJiBDb2RlTWlycm9yLmlzV29yZENoYXIobGluZS5jaGFyQXQoZW5kKSkpXG4gICAgICAgICsrZW5kO1xuICAgICAgcmV0dXJuIHsgZnJvbTogUG9zKHBvcy5saW5lLCBzdGFydCksIHRvOiBQb3MocG9zLmxpbmUsIGVuZCksIHdvcmQ6IGxpbmUuc2xpY2Uoc3RhcnQsIGVuZCkgfTtcbiAgICB9XG4gICAgX19uYW1lKHdvcmRBdCwgXCJ3b3JkQXRcIik7XG4gICAgY21kcy5zZWxlY3ROZXh0T2NjdXJyZW5jZSA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICB2YXIgZnJvbSA9IGNtLmdldEN1cnNvcihcImZyb21cIiksIHRvID0gY20uZ2V0Q3Vyc29yKFwidG9cIik7XG4gICAgICB2YXIgZnVsbFdvcmQgPSBjbS5zdGF0ZS5zdWJsaW1lRmluZEZ1bGxXb3JkID09IGNtLmRvYy5zZWw7XG4gICAgICBpZiAoQ29kZU1pcnJvci5jbXBQb3MoZnJvbSwgdG8pID09IDApIHtcbiAgICAgICAgdmFyIHdvcmQgPSB3b3JkQXQoY20sIGZyb20pO1xuICAgICAgICBpZiAoIXdvcmQud29yZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNtLnNldFNlbGVjdGlvbih3b3JkLmZyb20sIHdvcmQudG8pO1xuICAgICAgICBmdWxsV29yZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdGV4dCA9IGNtLmdldFJhbmdlKGZyb20sIHRvKTtcbiAgICAgICAgdmFyIHF1ZXJ5ID0gZnVsbFdvcmQgPyBuZXcgUmVnRXhwKFwiXFxcXGJcIiArIHRleHQgKyBcIlxcXFxiXCIpIDogdGV4dDtcbiAgICAgICAgdmFyIGN1ciA9IGNtLmdldFNlYXJjaEN1cnNvcihxdWVyeSwgdG8pO1xuICAgICAgICB2YXIgZm91bmQgPSBjdXIuZmluZE5leHQoKTtcbiAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgIGN1ciA9IGNtLmdldFNlYXJjaEN1cnNvcihxdWVyeSwgUG9zKGNtLmZpcnN0TGluZSgpLCAwKSk7XG4gICAgICAgICAgZm91bmQgPSBjdXIuZmluZE5leHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWZvdW5kIHx8IGlzU2VsZWN0ZWRSYW5nZShjbS5saXN0U2VsZWN0aW9ucygpLCBjdXIuZnJvbSgpLCBjdXIudG8oKSkpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjbS5hZGRTZWxlY3Rpb24oY3VyLmZyb20oKSwgY3VyLnRvKCkpO1xuICAgICAgfVxuICAgICAgaWYgKGZ1bGxXb3JkKVxuICAgICAgICBjbS5zdGF0ZS5zdWJsaW1lRmluZEZ1bGxXb3JkID0gY20uZG9jLnNlbDtcbiAgICB9O1xuICAgIGNtZHMuc2tpcEFuZFNlbGVjdE5leHRPY2N1cnJlbmNlID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIHZhciBwcmV2QW5jaG9yID0gY20uZ2V0Q3Vyc29yKFwiYW5jaG9yXCIpLCBwcmV2SGVhZCA9IGNtLmdldEN1cnNvcihcImhlYWRcIik7XG4gICAgICBjbWRzLnNlbGVjdE5leHRPY2N1cnJlbmNlKGNtKTtcbiAgICAgIGlmIChDb2RlTWlycm9yLmNtcFBvcyhwcmV2QW5jaG9yLCBwcmV2SGVhZCkgIT0gMCkge1xuICAgICAgICBjbS5kb2Muc2V0U2VsZWN0aW9ucyhjbS5kb2MubGlzdFNlbGVjdGlvbnMoKS5maWx0ZXIoZnVuY3Rpb24oc2VsKSB7XG4gICAgICAgICAgcmV0dXJuIHNlbC5hbmNob3IgIT0gcHJldkFuY2hvciB8fCBzZWwuaGVhZCAhPSBwcmV2SGVhZDtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH07XG4gICAgZnVuY3Rpb24gYWRkQ3Vyc29yVG9TZWxlY3Rpb24oY20sIGRpcikge1xuICAgICAgdmFyIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCksIG5ld1JhbmdlcyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHJhbmdlID0gcmFuZ2VzW2ldO1xuICAgICAgICB2YXIgbmV3QW5jaG9yID0gY20uZmluZFBvc1YocmFuZ2UuYW5jaG9yLCBkaXIsIFwibGluZVwiLCByYW5nZS5hbmNob3IuZ29hbENvbHVtbik7XG4gICAgICAgIHZhciBuZXdIZWFkID0gY20uZmluZFBvc1YocmFuZ2UuaGVhZCwgZGlyLCBcImxpbmVcIiwgcmFuZ2UuaGVhZC5nb2FsQ29sdW1uKTtcbiAgICAgICAgbmV3QW5jaG9yLmdvYWxDb2x1bW4gPSByYW5nZS5hbmNob3IuZ29hbENvbHVtbiAhPSBudWxsID8gcmFuZ2UuYW5jaG9yLmdvYWxDb2x1bW4gOiBjbS5jdXJzb3JDb29yZHMocmFuZ2UuYW5jaG9yLCBcImRpdlwiKS5sZWZ0O1xuICAgICAgICBuZXdIZWFkLmdvYWxDb2x1bW4gPSByYW5nZS5oZWFkLmdvYWxDb2x1bW4gIT0gbnVsbCA/IHJhbmdlLmhlYWQuZ29hbENvbHVtbiA6IGNtLmN1cnNvckNvb3JkcyhyYW5nZS5oZWFkLCBcImRpdlwiKS5sZWZ0O1xuICAgICAgICB2YXIgbmV3UmFuZ2UgPSB7IGFuY2hvcjogbmV3QW5jaG9yLCBoZWFkOiBuZXdIZWFkIH07XG4gICAgICAgIG5ld1Jhbmdlcy5wdXNoKHJhbmdlKTtcbiAgICAgICAgbmV3UmFuZ2VzLnB1c2gobmV3UmFuZ2UpO1xuICAgICAgfVxuICAgICAgY20uc2V0U2VsZWN0aW9ucyhuZXdSYW5nZXMpO1xuICAgIH1cbiAgICBfX25hbWUoYWRkQ3Vyc29yVG9TZWxlY3Rpb24sIFwiYWRkQ3Vyc29yVG9TZWxlY3Rpb25cIik7XG4gICAgY21kcy5hZGRDdXJzb3JUb1ByZXZMaW5lID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIGFkZEN1cnNvclRvU2VsZWN0aW9uKGNtLCAtMSk7XG4gICAgfTtcbiAgICBjbWRzLmFkZEN1cnNvclRvTmV4dExpbmUgPSBmdW5jdGlvbihjbSkge1xuICAgICAgYWRkQ3Vyc29yVG9TZWxlY3Rpb24oY20sIDEpO1xuICAgIH07XG4gICAgZnVuY3Rpb24gaXNTZWxlY3RlZFJhbmdlKHJhbmdlcywgZnJvbSwgdG8pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKVxuICAgICAgICBpZiAoQ29kZU1pcnJvci5jbXBQb3MocmFuZ2VzW2ldLmZyb20oKSwgZnJvbSkgPT0gMCAmJiBDb2RlTWlycm9yLmNtcFBvcyhyYW5nZXNbaV0udG8oKSwgdG8pID09IDApXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIF9fbmFtZShpc1NlbGVjdGVkUmFuZ2UsIFwiaXNTZWxlY3RlZFJhbmdlXCIpO1xuICAgIHZhciBtaXJyb3IgPSBcIigpe31bXVwiO1xuICAgIGZ1bmN0aW9uIHNlbGVjdEJldHdlZW5CcmFja2V0cyhjbSkge1xuICAgICAgdmFyIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCksIG5ld1JhbmdlcyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHJhbmdlID0gcmFuZ2VzW2ldLCBwb3MgPSByYW5nZS5oZWFkLCBvcGVuaW5nID0gY20uc2NhbkZvckJyYWNrZXQocG9zLCAtMSk7XG4gICAgICAgIGlmICghb3BlbmluZylcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGZvciAoOyA7ICkge1xuICAgICAgICAgIHZhciBjbG9zaW5nID0gY20uc2NhbkZvckJyYWNrZXQocG9zLCAxKTtcbiAgICAgICAgICBpZiAoIWNsb3NpbmcpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgaWYgKGNsb3NpbmcuY2ggPT0gbWlycm9yLmNoYXJBdChtaXJyb3IuaW5kZXhPZihvcGVuaW5nLmNoKSArIDEpKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnRQb3MgPSBQb3Mob3BlbmluZy5wb3MubGluZSwgb3BlbmluZy5wb3MuY2ggKyAxKTtcbiAgICAgICAgICAgIGlmIChDb2RlTWlycm9yLmNtcFBvcyhzdGFydFBvcywgcmFuZ2UuZnJvbSgpKSA9PSAwICYmIENvZGVNaXJyb3IuY21wUG9zKGNsb3NpbmcucG9zLCByYW5nZS50bygpKSA9PSAwKSB7XG4gICAgICAgICAgICAgIG9wZW5pbmcgPSBjbS5zY2FuRm9yQnJhY2tldChvcGVuaW5nLnBvcywgLTEpO1xuICAgICAgICAgICAgICBpZiAoIW9wZW5pbmcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3UmFuZ2VzLnB1c2goeyBhbmNob3I6IHN0YXJ0UG9zLCBoZWFkOiBjbG9zaW5nLnBvcyB9KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHBvcyA9IFBvcyhjbG9zaW5nLnBvcy5saW5lLCBjbG9zaW5nLnBvcy5jaCArIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjbS5zZXRTZWxlY3Rpb25zKG5ld1Jhbmdlcyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgX19uYW1lKHNlbGVjdEJldHdlZW5CcmFja2V0cywgXCJzZWxlY3RCZXR3ZWVuQnJhY2tldHNcIik7XG4gICAgY21kcy5zZWxlY3RTY29wZSA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICBzZWxlY3RCZXR3ZWVuQnJhY2tldHMoY20pIHx8IGNtLmV4ZWNDb21tYW5kKFwic2VsZWN0QWxsXCIpO1xuICAgIH07XG4gICAgY21kcy5zZWxlY3RCZXR3ZWVuQnJhY2tldHMgPSBmdW5jdGlvbihjbSkge1xuICAgICAgaWYgKCFzZWxlY3RCZXR3ZWVuQnJhY2tldHMoY20pKVxuICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuICAgIH07XG4gICAgZnVuY3Rpb24gcHVuY1R5cGUodHlwZSkge1xuICAgICAgcmV0dXJuICF0eXBlID8gbnVsbCA6IC9cXGJwdW5jdHVhdGlvblxcYi8udGVzdCh0eXBlKSA/IHR5cGUgOiB2b2lkIDA7XG4gICAgfVxuICAgIF9fbmFtZShwdW5jVHlwZSwgXCJwdW5jVHlwZVwiKTtcbiAgICBjbWRzLmdvVG9CcmFja2V0ID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIGNtLmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbihyYW5nZSkge1xuICAgICAgICB2YXIgbmV4dCA9IGNtLnNjYW5Gb3JCcmFja2V0KHJhbmdlLmhlYWQsIDEsIHB1bmNUeXBlKGNtLmdldFRva2VuVHlwZUF0KHJhbmdlLmhlYWQpKSk7XG4gICAgICAgIGlmIChuZXh0ICYmIENvZGVNaXJyb3IuY21wUG9zKG5leHQucG9zLCByYW5nZS5oZWFkKSAhPSAwKVxuICAgICAgICAgIHJldHVybiBuZXh0LnBvcztcbiAgICAgICAgdmFyIHByZXYgPSBjbS5zY2FuRm9yQnJhY2tldChyYW5nZS5oZWFkLCAtMSwgcHVuY1R5cGUoY20uZ2V0VG9rZW5UeXBlQXQoUG9zKHJhbmdlLmhlYWQubGluZSwgcmFuZ2UuaGVhZC5jaCArIDEpKSkpO1xuICAgICAgICByZXR1cm4gcHJldiAmJiBQb3MocHJldi5wb3MubGluZSwgcHJldi5wb3MuY2ggKyAxKSB8fCByYW5nZS5oZWFkO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICBjbWRzLnN3YXBMaW5lVXAgPSBmdW5jdGlvbihjbSkge1xuICAgICAgaWYgKGNtLmlzUmVhZE9ubHkoKSlcbiAgICAgICAgcmV0dXJuIENvZGVNaXJyb3IuUGFzcztcbiAgICAgIHZhciByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpLCBsaW5lc1RvTW92ZSA9IFtdLCBhdCA9IGNtLmZpcnN0TGluZSgpIC0gMSwgbmV3U2VscyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHJhbmdlID0gcmFuZ2VzW2ldLCBmcm9tID0gcmFuZ2UuZnJvbSgpLmxpbmUgLSAxLCB0byA9IHJhbmdlLnRvKCkubGluZTtcbiAgICAgICAgbmV3U2Vscy5wdXNoKHtcbiAgICAgICAgICBhbmNob3I6IFBvcyhyYW5nZS5hbmNob3IubGluZSAtIDEsIHJhbmdlLmFuY2hvci5jaCksXG4gICAgICAgICAgaGVhZDogUG9zKHJhbmdlLmhlYWQubGluZSAtIDEsIHJhbmdlLmhlYWQuY2gpXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocmFuZ2UudG8oKS5jaCA9PSAwICYmICFyYW5nZS5lbXB0eSgpKVxuICAgICAgICAgIC0tdG87XG4gICAgICAgIGlmIChmcm9tID4gYXQpXG4gICAgICAgICAgbGluZXNUb01vdmUucHVzaChmcm9tLCB0byk7XG4gICAgICAgIGVsc2UgaWYgKGxpbmVzVG9Nb3ZlLmxlbmd0aClcbiAgICAgICAgICBsaW5lc1RvTW92ZVtsaW5lc1RvTW92ZS5sZW5ndGggLSAxXSA9IHRvO1xuICAgICAgICBhdCA9IHRvO1xuICAgICAgfVxuICAgICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICBmb3IgKHZhciBpMiA9IDA7IGkyIDwgbGluZXNUb01vdmUubGVuZ3RoOyBpMiArPSAyKSB7XG4gICAgICAgICAgdmFyIGZyb20yID0gbGluZXNUb01vdmVbaTJdLCB0bzIgPSBsaW5lc1RvTW92ZVtpMiArIDFdO1xuICAgICAgICAgIHZhciBsaW5lID0gY20uZ2V0TGluZShmcm9tMik7XG4gICAgICAgICAgY20ucmVwbGFjZVJhbmdlKFwiXCIsIFBvcyhmcm9tMiwgMCksIFBvcyhmcm9tMiArIDEsIDApLCBcIitzd2FwTGluZVwiKTtcbiAgICAgICAgICBpZiAodG8yID4gY20ubGFzdExpbmUoKSlcbiAgICAgICAgICAgIGNtLnJlcGxhY2VSYW5nZShcIlxcblwiICsgbGluZSwgUG9zKGNtLmxhc3RMaW5lKCkpLCBudWxsLCBcIitzd2FwTGluZVwiKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBjbS5yZXBsYWNlUmFuZ2UobGluZSArIFwiXFxuXCIsIFBvcyh0bzIsIDApLCBudWxsLCBcIitzd2FwTGluZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBjbS5zZXRTZWxlY3Rpb25zKG5ld1NlbHMpO1xuICAgICAgICBjbS5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICBjbWRzLnN3YXBMaW5lRG93biA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICBpZiAoY20uaXNSZWFkT25seSgpKVxuICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuICAgICAgdmFyIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCksIGxpbmVzVG9Nb3ZlID0gW10sIGF0ID0gY20ubGFzdExpbmUoKSArIDE7XG4gICAgICBmb3IgKHZhciBpID0gcmFuZ2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciByYW5nZSA9IHJhbmdlc1tpXSwgZnJvbSA9IHJhbmdlLnRvKCkubGluZSArIDEsIHRvID0gcmFuZ2UuZnJvbSgpLmxpbmU7XG4gICAgICAgIGlmIChyYW5nZS50bygpLmNoID09IDAgJiYgIXJhbmdlLmVtcHR5KCkpXG4gICAgICAgICAgZnJvbS0tO1xuICAgICAgICBpZiAoZnJvbSA8IGF0KVxuICAgICAgICAgIGxpbmVzVG9Nb3ZlLnB1c2goZnJvbSwgdG8pO1xuICAgICAgICBlbHNlIGlmIChsaW5lc1RvTW92ZS5sZW5ndGgpXG4gICAgICAgICAgbGluZXNUb01vdmVbbGluZXNUb01vdmUubGVuZ3RoIC0gMV0gPSB0bztcbiAgICAgICAgYXQgPSB0bztcbiAgICAgIH1cbiAgICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgZm9yICh2YXIgaTIgPSBsaW5lc1RvTW92ZS5sZW5ndGggLSAyOyBpMiA+PSAwOyBpMiAtPSAyKSB7XG4gICAgICAgICAgdmFyIGZyb20yID0gbGluZXNUb01vdmVbaTJdLCB0bzIgPSBsaW5lc1RvTW92ZVtpMiArIDFdO1xuICAgICAgICAgIHZhciBsaW5lID0gY20uZ2V0TGluZShmcm9tMik7XG4gICAgICAgICAgaWYgKGZyb20yID09IGNtLmxhc3RMaW5lKCkpXG4gICAgICAgICAgICBjbS5yZXBsYWNlUmFuZ2UoXCJcIiwgUG9zKGZyb20yIC0gMSksIFBvcyhmcm9tMiksIFwiK3N3YXBMaW5lXCIpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGNtLnJlcGxhY2VSYW5nZShcIlwiLCBQb3MoZnJvbTIsIDApLCBQb3MoZnJvbTIgKyAxLCAwKSwgXCIrc3dhcExpbmVcIik7XG4gICAgICAgICAgY20ucmVwbGFjZVJhbmdlKGxpbmUgKyBcIlxcblwiLCBQb3ModG8yLCAwKSwgbnVsbCwgXCIrc3dhcExpbmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY20uc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgY21kcy50b2dnbGVDb21tZW50SW5kZW50ZWQgPSBmdW5jdGlvbihjbSkge1xuICAgICAgY20udG9nZ2xlQ29tbWVudCh7IGluZGVudDogdHJ1ZSB9KTtcbiAgICB9O1xuICAgIGNtZHMuam9pbkxpbmVzID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIHZhciByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpLCBqb2luZWQgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByYW5nZSA9IHJhbmdlc1tpXSwgZnJvbSA9IHJhbmdlLmZyb20oKTtcbiAgICAgICAgdmFyIHN0YXJ0ID0gZnJvbS5saW5lLCBlbmQgPSByYW5nZS50bygpLmxpbmU7XG4gICAgICAgIHdoaWxlIChpIDwgcmFuZ2VzLmxlbmd0aCAtIDEgJiYgcmFuZ2VzW2kgKyAxXS5mcm9tKCkubGluZSA9PSBlbmQpXG4gICAgICAgICAgZW5kID0gcmFuZ2VzWysraV0udG8oKS5saW5lO1xuICAgICAgICBqb2luZWQucHVzaCh7IHN0YXJ0LCBlbmQsIGFuY2hvcjogIXJhbmdlLmVtcHR5KCkgJiYgZnJvbSB9KTtcbiAgICAgIH1cbiAgICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG9mZnNldCA9IDAsIHJhbmdlczIgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IGpvaW5lZC5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICB2YXIgb2JqID0gam9pbmVkW2kyXTtcbiAgICAgICAgICB2YXIgYW5jaG9yID0gb2JqLmFuY2hvciAmJiBQb3Mob2JqLmFuY2hvci5saW5lIC0gb2Zmc2V0LCBvYmouYW5jaG9yLmNoKSwgaGVhZDtcbiAgICAgICAgICBmb3IgKHZhciBsaW5lID0gb2JqLnN0YXJ0OyBsaW5lIDw9IG9iai5lbmQ7IGxpbmUrKykge1xuICAgICAgICAgICAgdmFyIGFjdHVhbCA9IGxpbmUgLSBvZmZzZXQ7XG4gICAgICAgICAgICBpZiAobGluZSA9PSBvYmouZW5kKVxuICAgICAgICAgICAgICBoZWFkID0gUG9zKGFjdHVhbCwgY20uZ2V0TGluZShhY3R1YWwpLmxlbmd0aCArIDEpO1xuICAgICAgICAgICAgaWYgKGFjdHVhbCA8IGNtLmxhc3RMaW5lKCkpIHtcbiAgICAgICAgICAgICAgY20ucmVwbGFjZVJhbmdlKFwiIFwiLCBQb3MoYWN0dWFsKSwgUG9zKGFjdHVhbCArIDEsIC9eXFxzKi8uZXhlYyhjbS5nZXRMaW5lKGFjdHVhbCArIDEpKVswXS5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgKytvZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJhbmdlczIucHVzaCh7IGFuY2hvcjogYW5jaG9yIHx8IGhlYWQsIGhlYWQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY20uc2V0U2VsZWN0aW9ucyhyYW5nZXMyLCAwKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgY21kcy5kdXBsaWNhdGVMaW5lID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHJhbmdlQ291bnQgPSBjbS5saXN0U2VsZWN0aW9ucygpLmxlbmd0aDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZUNvdW50OyBpKyspIHtcbiAgICAgICAgICB2YXIgcmFuZ2UgPSBjbS5saXN0U2VsZWN0aW9ucygpW2ldO1xuICAgICAgICAgIGlmIChyYW5nZS5lbXB0eSgpKVxuICAgICAgICAgICAgY20ucmVwbGFjZVJhbmdlKGNtLmdldExpbmUocmFuZ2UuaGVhZC5saW5lKSArIFwiXFxuXCIsIFBvcyhyYW5nZS5oZWFkLmxpbmUsIDApKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBjbS5yZXBsYWNlUmFuZ2UoY20uZ2V0UmFuZ2UocmFuZ2UuZnJvbSgpLCByYW5nZS50bygpKSwgcmFuZ2UuZnJvbSgpKTtcbiAgICAgICAgfVxuICAgICAgICBjbS5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBzb3J0TGluZXMoY20sIGNhc2VTZW5zaXRpdmUsIGRpcmVjdGlvbikge1xuICAgICAgaWYgKGNtLmlzUmVhZE9ubHkoKSlcbiAgICAgICAgcmV0dXJuIENvZGVNaXJyb3IuUGFzcztcbiAgICAgIHZhciByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpLCB0b1NvcnQgPSBbXSwgc2VsZWN0ZWQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcmFuZ2UgPSByYW5nZXNbaV07XG4gICAgICAgIGlmIChyYW5nZS5lbXB0eSgpKVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB2YXIgZnJvbSA9IHJhbmdlLmZyb20oKS5saW5lLCB0byA9IHJhbmdlLnRvKCkubGluZTtcbiAgICAgICAgd2hpbGUgKGkgPCByYW5nZXMubGVuZ3RoIC0gMSAmJiByYW5nZXNbaSArIDFdLmZyb20oKS5saW5lID09IHRvKVxuICAgICAgICAgIHRvID0gcmFuZ2VzWysraV0udG8oKS5saW5lO1xuICAgICAgICBpZiAoIXJhbmdlc1tpXS50bygpLmNoKVxuICAgICAgICAgIHRvLS07XG4gICAgICAgIHRvU29ydC5wdXNoKGZyb20sIHRvKTtcbiAgICAgIH1cbiAgICAgIGlmICh0b1NvcnQubGVuZ3RoKVxuICAgICAgICBzZWxlY3RlZCA9IHRydWU7XG4gICAgICBlbHNlXG4gICAgICAgIHRvU29ydC5wdXNoKGNtLmZpcnN0TGluZSgpLCBjbS5sYXN0TGluZSgpKTtcbiAgICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHJhbmdlczIgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaTIgPSAwOyBpMiA8IHRvU29ydC5sZW5ndGg7IGkyICs9IDIpIHtcbiAgICAgICAgICB2YXIgZnJvbTIgPSB0b1NvcnRbaTJdLCB0bzIgPSB0b1NvcnRbaTIgKyAxXTtcbiAgICAgICAgICB2YXIgc3RhcnQgPSBQb3MoZnJvbTIsIDApLCBlbmQgPSBQb3ModG8yKTtcbiAgICAgICAgICB2YXIgbGluZXMgPSBjbS5nZXRSYW5nZShzdGFydCwgZW5kLCBmYWxzZSk7XG4gICAgICAgICAgaWYgKGNhc2VTZW5zaXRpdmUpXG4gICAgICAgICAgICBsaW5lcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGEgPCBiID8gLWRpcmVjdGlvbiA6IGEgPT0gYiA/IDAgOiBkaXJlY3Rpb247XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsaW5lcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICAgICAgdmFyIGF1ID0gYS50b1VwcGVyQ2FzZSgpLCBidSA9IGIudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgaWYgKGF1ICE9IGJ1KSB7XG4gICAgICAgICAgICAgICAgYSA9IGF1O1xuICAgICAgICAgICAgICAgIGIgPSBidTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gYSA8IGIgPyAtZGlyZWN0aW9uIDogYSA9PSBiID8gMCA6IGRpcmVjdGlvbjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGNtLnJlcGxhY2VSYW5nZShsaW5lcywgc3RhcnQsIGVuZCk7XG4gICAgICAgICAgaWYgKHNlbGVjdGVkKVxuICAgICAgICAgICAgcmFuZ2VzMi5wdXNoKHsgYW5jaG9yOiBzdGFydCwgaGVhZDogUG9zKHRvMiArIDEsIDApIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWxlY3RlZClcbiAgICAgICAgICBjbS5zZXRTZWxlY3Rpb25zKHJhbmdlczIsIDApO1xuICAgICAgfSk7XG4gICAgfVxuICAgIF9fbmFtZShzb3J0TGluZXMsIFwic29ydExpbmVzXCIpO1xuICAgIGNtZHMuc29ydExpbmVzID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIHNvcnRMaW5lcyhjbSwgdHJ1ZSwgMSk7XG4gICAgfTtcbiAgICBjbWRzLnJldmVyc2VTb3J0TGluZXMgPSBmdW5jdGlvbihjbSkge1xuICAgICAgc29ydExpbmVzKGNtLCB0cnVlLCAtMSk7XG4gICAgfTtcbiAgICBjbWRzLnNvcnRMaW5lc0luc2Vuc2l0aXZlID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIHNvcnRMaW5lcyhjbSwgZmFsc2UsIDEpO1xuICAgIH07XG4gICAgY21kcy5yZXZlcnNlU29ydExpbmVzSW5zZW5zaXRpdmUgPSBmdW5jdGlvbihjbSkge1xuICAgICAgc29ydExpbmVzKGNtLCBmYWxzZSwgLTEpO1xuICAgIH07XG4gICAgY21kcy5uZXh0Qm9va21hcmsgPSBmdW5jdGlvbihjbSkge1xuICAgICAgdmFyIG1hcmtzID0gY20uc3RhdGUuc3VibGltZUJvb2ttYXJrcztcbiAgICAgIGlmIChtYXJrcylcbiAgICAgICAgd2hpbGUgKG1hcmtzLmxlbmd0aCkge1xuICAgICAgICAgIHZhciBjdXJyZW50ID0gbWFya3Muc2hpZnQoKTtcbiAgICAgICAgICB2YXIgZm91bmQgPSBjdXJyZW50LmZpbmQoKTtcbiAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgIG1hcmtzLnB1c2goY3VycmVudCk7XG4gICAgICAgICAgICByZXR1cm4gY20uc2V0U2VsZWN0aW9uKGZvdW5kLmZyb20sIGZvdW5kLnRvKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNtZHMucHJldkJvb2ttYXJrID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIHZhciBtYXJrcyA9IGNtLnN0YXRlLnN1YmxpbWVCb29rbWFya3M7XG4gICAgICBpZiAobWFya3MpXG4gICAgICAgIHdoaWxlIChtYXJrcy5sZW5ndGgpIHtcbiAgICAgICAgICBtYXJrcy51bnNoaWZ0KG1hcmtzLnBvcCgpKTtcbiAgICAgICAgICB2YXIgZm91bmQgPSBtYXJrc1ttYXJrcy5sZW5ndGggLSAxXS5maW5kKCk7XG4gICAgICAgICAgaWYgKCFmb3VuZClcbiAgICAgICAgICAgIG1hcmtzLnBvcCgpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBjbS5zZXRTZWxlY3Rpb24oZm91bmQuZnJvbSwgZm91bmQudG8pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjbWRzLnRvZ2dsZUJvb2ttYXJrID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIHZhciByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpO1xuICAgICAgdmFyIG1hcmtzID0gY20uc3RhdGUuc3VibGltZUJvb2ttYXJrcyB8fCAoY20uc3RhdGUuc3VibGltZUJvb2ttYXJrcyA9IFtdKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBmcm9tID0gcmFuZ2VzW2ldLmZyb20oKSwgdG8gPSByYW5nZXNbaV0udG8oKTtcbiAgICAgICAgdmFyIGZvdW5kID0gcmFuZ2VzW2ldLmVtcHR5KCkgPyBjbS5maW5kTWFya3NBdChmcm9tKSA6IGNtLmZpbmRNYXJrcyhmcm9tLCB0byk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZm91bmQubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBpZiAoZm91bmRbal0uc3VibGltZUJvb2ttYXJrKSB7XG4gICAgICAgICAgICBmb3VuZFtqXS5jbGVhcigpO1xuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBtYXJrcy5sZW5ndGg7IGsrKylcbiAgICAgICAgICAgICAgaWYgKG1hcmtzW2tdID09IGZvdW5kW2pdKVxuICAgICAgICAgICAgICAgIG1hcmtzLnNwbGljZShrLS0sIDEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChqID09IGZvdW5kLmxlbmd0aClcbiAgICAgICAgICBtYXJrcy5wdXNoKGNtLm1hcmtUZXh0KGZyb20sIHRvLCB7IHN1YmxpbWVCb29rbWFyazogdHJ1ZSwgY2xlYXJXaGVuRW1wdHk6IGZhbHNlIH0pKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNtZHMuY2xlYXJCb29rbWFya3MgPSBmdW5jdGlvbihjbSkge1xuICAgICAgdmFyIG1hcmtzID0gY20uc3RhdGUuc3VibGltZUJvb2ttYXJrcztcbiAgICAgIGlmIChtYXJrcylcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXJrcy5sZW5ndGg7IGkrKylcbiAgICAgICAgICBtYXJrc1tpXS5jbGVhcigpO1xuICAgICAgbWFya3MubGVuZ3RoID0gMDtcbiAgICB9O1xuICAgIGNtZHMuc2VsZWN0Qm9va21hcmtzID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIHZhciBtYXJrcyA9IGNtLnN0YXRlLnN1YmxpbWVCb29rbWFya3MsIHJhbmdlcyA9IFtdO1xuICAgICAgaWYgKG1hcmtzKVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGZvdW5kID0gbWFya3NbaV0uZmluZCgpO1xuICAgICAgICAgIGlmICghZm91bmQpXG4gICAgICAgICAgICBtYXJrcy5zcGxpY2UoaS0tLCAwKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByYW5nZXMucHVzaCh7IGFuY2hvcjogZm91bmQuZnJvbSwgaGVhZDogZm91bmQudG8gfSk7XG4gICAgICAgIH1cbiAgICAgIGlmIChyYW5nZXMubGVuZ3RoKVxuICAgICAgICBjbS5zZXRTZWxlY3Rpb25zKHJhbmdlcywgMCk7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBtb2RpZnlXb3JkT3JTZWxlY3Rpb24oY20sIG1vZCkge1xuICAgICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmFuZ2VzID0gY20ubGlzdFNlbGVjdGlvbnMoKSwgaW5kaWNlcyA9IFtdLCByZXBsYWNlbWVudHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgcmFuZ2UgPSByYW5nZXNbaV07XG4gICAgICAgICAgaWYgKHJhbmdlLmVtcHR5KCkpIHtcbiAgICAgICAgICAgIGluZGljZXMucHVzaChpKTtcbiAgICAgICAgICAgIHJlcGxhY2VtZW50cy5wdXNoKFwiXCIpO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2gobW9kKGNtLmdldFJhbmdlKHJhbmdlLmZyb20oKSwgcmFuZ2UudG8oKSkpKTtcbiAgICAgICAgfVxuICAgICAgICBjbS5yZXBsYWNlU2VsZWN0aW9ucyhyZXBsYWNlbWVudHMsIFwiYXJvdW5kXCIsIFwiY2FzZVwiKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IGluZGljZXMubGVuZ3RoIC0gMSwgYXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgdmFyIHJhbmdlID0gcmFuZ2VzW2luZGljZXNbaV1dO1xuICAgICAgICAgIGlmIChhdCAmJiBDb2RlTWlycm9yLmNtcFBvcyhyYW5nZS5oZWFkLCBhdCkgPiAwKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgdmFyIHdvcmQgPSB3b3JkQXQoY20sIHJhbmdlLmhlYWQpO1xuICAgICAgICAgIGF0ID0gd29yZC5mcm9tO1xuICAgICAgICAgIGNtLnJlcGxhY2VSYW5nZShtb2Qod29yZC53b3JkKSwgd29yZC5mcm9tLCB3b3JkLnRvKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIF9fbmFtZShtb2RpZnlXb3JkT3JTZWxlY3Rpb24sIFwibW9kaWZ5V29yZE9yU2VsZWN0aW9uXCIpO1xuICAgIGNtZHMuc21hcnRCYWNrc3BhY2UgPSBmdW5jdGlvbihjbSkge1xuICAgICAgaWYgKGNtLnNvbWV0aGluZ1NlbGVjdGVkKCkpXG4gICAgICAgIHJldHVybiBDb2RlTWlycm9yLlBhc3M7XG4gICAgICBjbS5vcGVyYXRpb24oZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBjdXJzb3JzID0gY20ubGlzdFNlbGVjdGlvbnMoKTtcbiAgICAgICAgdmFyIGluZGVudFVuaXQgPSBjbS5nZXRPcHRpb24oXCJpbmRlbnRVbml0XCIpO1xuICAgICAgICBmb3IgKHZhciBpID0gY3Vyc29ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIHZhciBjdXJzb3IgPSBjdXJzb3JzW2ldLmhlYWQ7XG4gICAgICAgICAgdmFyIHRvU3RhcnRPZkxpbmUgPSBjbS5nZXRSYW5nZSh7IGxpbmU6IGN1cnNvci5saW5lLCBjaDogMCB9LCBjdXJzb3IpO1xuICAgICAgICAgIHZhciBjb2x1bW4gPSBDb2RlTWlycm9yLmNvdW50Q29sdW1uKHRvU3RhcnRPZkxpbmUsIG51bGwsIGNtLmdldE9wdGlvbihcInRhYlNpemVcIikpO1xuICAgICAgICAgIHZhciBkZWxldGVQb3MgPSBjbS5maW5kUG9zSChjdXJzb3IsIC0xLCBcImNoYXJcIiwgZmFsc2UpO1xuICAgICAgICAgIGlmICh0b1N0YXJ0T2ZMaW5lICYmICEvXFxTLy50ZXN0KHRvU3RhcnRPZkxpbmUpICYmIGNvbHVtbiAlIGluZGVudFVuaXQgPT0gMCkge1xuICAgICAgICAgICAgdmFyIHByZXZJbmRlbnQgPSBuZXcgUG9zKGN1cnNvci5saW5lLCBDb2RlTWlycm9yLmZpbmRDb2x1bW4odG9TdGFydE9mTGluZSwgY29sdW1uIC0gaW5kZW50VW5pdCwgaW5kZW50VW5pdCkpO1xuICAgICAgICAgICAgaWYgKHByZXZJbmRlbnQuY2ggIT0gY3Vyc29yLmNoKVxuICAgICAgICAgICAgICBkZWxldGVQb3MgPSBwcmV2SW5kZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjbS5yZXBsYWNlUmFuZ2UoXCJcIiwgZGVsZXRlUG9zLCBjdXJzb3IsIFwiK2RlbGV0ZVwiKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBjbWRzLmRlbExpbmVSaWdodCA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICBjbS5vcGVyYXRpb24oZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpO1xuICAgICAgICBmb3IgKHZhciBpID0gcmFuZ2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKVxuICAgICAgICAgIGNtLnJlcGxhY2VSYW5nZShcIlwiLCByYW5nZXNbaV0uYW5jaG9yLCBQb3MocmFuZ2VzW2ldLnRvKCkubGluZSksIFwiK2RlbGV0ZVwiKTtcbiAgICAgICAgY20uc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgY21kcy51cGNhc2VBdEN1cnNvciA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICBtb2RpZnlXb3JkT3JTZWxlY3Rpb24oY20sIGZ1bmN0aW9uKHN0cikge1xuICAgICAgICByZXR1cm4gc3RyLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIGNtZHMuZG93bmNhc2VBdEN1cnNvciA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICBtb2RpZnlXb3JkT3JTZWxlY3Rpb24oY20sIGZ1bmN0aW9uKHN0cikge1xuICAgICAgICByZXR1cm4gc3RyLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIGNtZHMuc2V0U3VibGltZU1hcmsgPSBmdW5jdGlvbihjbSkge1xuICAgICAgaWYgKGNtLnN0YXRlLnN1YmxpbWVNYXJrKVxuICAgICAgICBjbS5zdGF0ZS5zdWJsaW1lTWFyay5jbGVhcigpO1xuICAgICAgY20uc3RhdGUuc3VibGltZU1hcmsgPSBjbS5zZXRCb29rbWFyayhjbS5nZXRDdXJzb3IoKSk7XG4gICAgfTtcbiAgICBjbWRzLnNlbGVjdFRvU3VibGltZU1hcmsgPSBmdW5jdGlvbihjbSkge1xuICAgICAgdmFyIGZvdW5kID0gY20uc3RhdGUuc3VibGltZU1hcmsgJiYgY20uc3RhdGUuc3VibGltZU1hcmsuZmluZCgpO1xuICAgICAgaWYgKGZvdW5kKVxuICAgICAgICBjbS5zZXRTZWxlY3Rpb24oY20uZ2V0Q3Vyc29yKCksIGZvdW5kKTtcbiAgICB9O1xuICAgIGNtZHMuZGVsZXRlVG9TdWJsaW1lTWFyayA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICB2YXIgZm91bmQgPSBjbS5zdGF0ZS5zdWJsaW1lTWFyayAmJiBjbS5zdGF0ZS5zdWJsaW1lTWFyay5maW5kKCk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgdmFyIGZyb20gPSBjbS5nZXRDdXJzb3IoKSwgdG8gPSBmb3VuZDtcbiAgICAgICAgaWYgKENvZGVNaXJyb3IuY21wUG9zKGZyb20sIHRvKSA+IDApIHtcbiAgICAgICAgICB2YXIgdG1wID0gdG87XG4gICAgICAgICAgdG8gPSBmcm9tO1xuICAgICAgICAgIGZyb20gPSB0bXA7XG4gICAgICAgIH1cbiAgICAgICAgY20uc3RhdGUuc3VibGltZUtpbGxlZCA9IGNtLmdldFJhbmdlKGZyb20sIHRvKTtcbiAgICAgICAgY20ucmVwbGFjZVJhbmdlKFwiXCIsIGZyb20sIHRvKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNtZHMuc3dhcFdpdGhTdWJsaW1lTWFyayA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICB2YXIgZm91bmQgPSBjbS5zdGF0ZS5zdWJsaW1lTWFyayAmJiBjbS5zdGF0ZS5zdWJsaW1lTWFyay5maW5kKCk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgY20uc3RhdGUuc3VibGltZU1hcmsuY2xlYXIoKTtcbiAgICAgICAgY20uc3RhdGUuc3VibGltZU1hcmsgPSBjbS5zZXRCb29rbWFyayhjbS5nZXRDdXJzb3IoKSk7XG4gICAgICAgIGNtLnNldEN1cnNvcihmb3VuZCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjbWRzLnN1YmxpbWVZYW5rID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIGlmIChjbS5zdGF0ZS5zdWJsaW1lS2lsbGVkICE9IG51bGwpXG4gICAgICAgIGNtLnJlcGxhY2VTZWxlY3Rpb24oY20uc3RhdGUuc3VibGltZUtpbGxlZCwgbnVsbCwgXCJwYXN0ZVwiKTtcbiAgICB9O1xuICAgIGNtZHMuc2hvd0luQ2VudGVyID0gZnVuY3Rpb24oY20pIHtcbiAgICAgIHZhciBwb3MgPSBjbS5jdXJzb3JDb29yZHMobnVsbCwgXCJsb2NhbFwiKTtcbiAgICAgIGNtLnNjcm9sbFRvKG51bGwsIChwb3MudG9wICsgcG9zLmJvdHRvbSkgLyAyIC0gY20uZ2V0U2Nyb2xsSW5mbygpLmNsaWVudEhlaWdodCAvIDIpO1xuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0VGFyZ2V0KGNtKSB7XG4gICAgICB2YXIgZnJvbSA9IGNtLmdldEN1cnNvcihcImZyb21cIiksIHRvID0gY20uZ2V0Q3Vyc29yKFwidG9cIik7XG4gICAgICBpZiAoQ29kZU1pcnJvci5jbXBQb3MoZnJvbSwgdG8pID09IDApIHtcbiAgICAgICAgdmFyIHdvcmQgPSB3b3JkQXQoY20sIGZyb20pO1xuICAgICAgICBpZiAoIXdvcmQud29yZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGZyb20gPSB3b3JkLmZyb207XG4gICAgICAgIHRvID0gd29yZC50bztcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGZyb20sIHRvLCBxdWVyeTogY20uZ2V0UmFuZ2UoZnJvbSwgdG8pLCB3b3JkIH07XG4gICAgfVxuICAgIF9fbmFtZShnZXRUYXJnZXQsIFwiZ2V0VGFyZ2V0XCIpO1xuICAgIGZ1bmN0aW9uIGZpbmRBbmRHb1RvKGNtLCBmb3J3YXJkKSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGNtKTtcbiAgICAgIGlmICghdGFyZ2V0KVxuICAgICAgICByZXR1cm47XG4gICAgICB2YXIgcXVlcnkgPSB0YXJnZXQucXVlcnk7XG4gICAgICB2YXIgY3VyID0gY20uZ2V0U2VhcmNoQ3Vyc29yKHF1ZXJ5LCBmb3J3YXJkID8gdGFyZ2V0LnRvIDogdGFyZ2V0LmZyb20pO1xuICAgICAgaWYgKGZvcndhcmQgPyBjdXIuZmluZE5leHQoKSA6IGN1ci5maW5kUHJldmlvdXMoKSkge1xuICAgICAgICBjbS5zZXRTZWxlY3Rpb24oY3VyLmZyb20oKSwgY3VyLnRvKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VyID0gY20uZ2V0U2VhcmNoQ3Vyc29yKHF1ZXJ5LCBmb3J3YXJkID8gUG9zKGNtLmZpcnN0TGluZSgpLCAwKSA6IGNtLmNsaXBQb3MoUG9zKGNtLmxhc3RMaW5lKCkpKSk7XG4gICAgICAgIGlmIChmb3J3YXJkID8gY3VyLmZpbmROZXh0KCkgOiBjdXIuZmluZFByZXZpb3VzKCkpXG4gICAgICAgICAgY20uc2V0U2VsZWN0aW9uKGN1ci5mcm9tKCksIGN1ci50bygpKTtcbiAgICAgICAgZWxzZSBpZiAodGFyZ2V0LndvcmQpXG4gICAgICAgICAgY20uc2V0U2VsZWN0aW9uKHRhcmdldC5mcm9tLCB0YXJnZXQudG8pO1xuICAgICAgfVxuICAgIH1cbiAgICBfX25hbWUoZmluZEFuZEdvVG8sIFwiZmluZEFuZEdvVG9cIik7XG4gICAgY21kcy5maW5kVW5kZXIgPSBmdW5jdGlvbihjbSkge1xuICAgICAgZmluZEFuZEdvVG8oY20sIHRydWUpO1xuICAgIH07XG4gICAgY21kcy5maW5kVW5kZXJQcmV2aW91cyA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgICBmaW5kQW5kR29UbyhjbSwgZmFsc2UpO1xuICAgIH07XG4gICAgY21kcy5maW5kQWxsVW5kZXIgPSBmdW5jdGlvbihjbSkge1xuICAgICAgdmFyIHRhcmdldCA9IGdldFRhcmdldChjbSk7XG4gICAgICBpZiAoIXRhcmdldClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgdmFyIGN1ciA9IGNtLmdldFNlYXJjaEN1cnNvcih0YXJnZXQucXVlcnkpO1xuICAgICAgdmFyIG1hdGNoZXMgPSBbXTtcbiAgICAgIHZhciBwcmltYXJ5SW5kZXggPSAtMTtcbiAgICAgIHdoaWxlIChjdXIuZmluZE5leHQoKSkge1xuICAgICAgICBtYXRjaGVzLnB1c2goeyBhbmNob3I6IGN1ci5mcm9tKCksIGhlYWQ6IGN1ci50bygpIH0pO1xuICAgICAgICBpZiAoY3VyLmZyb20oKS5saW5lIDw9IHRhcmdldC5mcm9tLmxpbmUgJiYgY3VyLmZyb20oKS5jaCA8PSB0YXJnZXQuZnJvbS5jaClcbiAgICAgICAgICBwcmltYXJ5SW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGNtLnNldFNlbGVjdGlvbnMobWF0Y2hlcywgcHJpbWFyeUluZGV4KTtcbiAgICB9O1xuICAgIHZhciBrZXlNYXAgPSBDb2RlTWlycm9yLmtleU1hcDtcbiAgICBrZXlNYXAubWFjU3VibGltZSA9IHtcbiAgICAgIFwiQ21kLUxlZnRcIjogXCJnb0xpbmVTdGFydFNtYXJ0XCIsXG4gICAgICBcIlNoaWZ0LVRhYlwiOiBcImluZGVudExlc3NcIixcbiAgICAgIFwiU2hpZnQtQ3RybC1LXCI6IFwiZGVsZXRlTGluZVwiLFxuICAgICAgXCJBbHQtUVwiOiBcIndyYXBMaW5lc1wiLFxuICAgICAgXCJDdHJsLUxlZnRcIjogXCJnb1N1YndvcmRMZWZ0XCIsXG4gICAgICBcIkN0cmwtUmlnaHRcIjogXCJnb1N1YndvcmRSaWdodFwiLFxuICAgICAgXCJDdHJsLUFsdC1VcFwiOiBcInNjcm9sbExpbmVVcFwiLFxuICAgICAgXCJDdHJsLUFsdC1Eb3duXCI6IFwic2Nyb2xsTGluZURvd25cIixcbiAgICAgIFwiQ21kLUxcIjogXCJzZWxlY3RMaW5lXCIsXG4gICAgICBcIlNoaWZ0LUNtZC1MXCI6IFwic3BsaXRTZWxlY3Rpb25CeUxpbmVcIixcbiAgICAgIFwiRXNjXCI6IFwic2luZ2xlU2VsZWN0aW9uVG9wXCIsXG4gICAgICBcIkNtZC1FbnRlclwiOiBcImluc2VydExpbmVBZnRlclwiLFxuICAgICAgXCJTaGlmdC1DbWQtRW50ZXJcIjogXCJpbnNlcnRMaW5lQmVmb3JlXCIsXG4gICAgICBcIkNtZC1EXCI6IFwic2VsZWN0TmV4dE9jY3VycmVuY2VcIixcbiAgICAgIFwiU2hpZnQtQ21kLVNwYWNlXCI6IFwic2VsZWN0U2NvcGVcIixcbiAgICAgIFwiU2hpZnQtQ21kLU1cIjogXCJzZWxlY3RCZXR3ZWVuQnJhY2tldHNcIixcbiAgICAgIFwiQ21kLU1cIjogXCJnb1RvQnJhY2tldFwiLFxuICAgICAgXCJDbWQtQ3RybC1VcFwiOiBcInN3YXBMaW5lVXBcIixcbiAgICAgIFwiQ21kLUN0cmwtRG93blwiOiBcInN3YXBMaW5lRG93blwiLFxuICAgICAgXCJDbWQtL1wiOiBcInRvZ2dsZUNvbW1lbnRJbmRlbnRlZFwiLFxuICAgICAgXCJDbWQtSlwiOiBcImpvaW5MaW5lc1wiLFxuICAgICAgXCJTaGlmdC1DbWQtRFwiOiBcImR1cGxpY2F0ZUxpbmVcIixcbiAgICAgIFwiRjVcIjogXCJzb3J0TGluZXNcIixcbiAgICAgIFwiU2hpZnQtRjVcIjogXCJyZXZlcnNlU29ydExpbmVzXCIsXG4gICAgICBcIkNtZC1GNVwiOiBcInNvcnRMaW5lc0luc2Vuc2l0aXZlXCIsXG4gICAgICBcIlNoaWZ0LUNtZC1GNVwiOiBcInJldmVyc2VTb3J0TGluZXNJbnNlbnNpdGl2ZVwiLFxuICAgICAgXCJGMlwiOiBcIm5leHRCb29rbWFya1wiLFxuICAgICAgXCJTaGlmdC1GMlwiOiBcInByZXZCb29rbWFya1wiLFxuICAgICAgXCJDbWQtRjJcIjogXCJ0b2dnbGVCb29rbWFya1wiLFxuICAgICAgXCJTaGlmdC1DbWQtRjJcIjogXCJjbGVhckJvb2ttYXJrc1wiLFxuICAgICAgXCJBbHQtRjJcIjogXCJzZWxlY3RCb29rbWFya3NcIixcbiAgICAgIFwiQmFja3NwYWNlXCI6IFwic21hcnRCYWNrc3BhY2VcIixcbiAgICAgIFwiQ21kLUsgQ21kLURcIjogXCJza2lwQW5kU2VsZWN0TmV4dE9jY3VycmVuY2VcIixcbiAgICAgIFwiQ21kLUsgQ21kLUtcIjogXCJkZWxMaW5lUmlnaHRcIixcbiAgICAgIFwiQ21kLUsgQ21kLVVcIjogXCJ1cGNhc2VBdEN1cnNvclwiLFxuICAgICAgXCJDbWQtSyBDbWQtTFwiOiBcImRvd25jYXNlQXRDdXJzb3JcIixcbiAgICAgIFwiQ21kLUsgQ21kLVNwYWNlXCI6IFwic2V0U3VibGltZU1hcmtcIixcbiAgICAgIFwiQ21kLUsgQ21kLUFcIjogXCJzZWxlY3RUb1N1YmxpbWVNYXJrXCIsXG4gICAgICBcIkNtZC1LIENtZC1XXCI6IFwiZGVsZXRlVG9TdWJsaW1lTWFya1wiLFxuICAgICAgXCJDbWQtSyBDbWQtWFwiOiBcInN3YXBXaXRoU3VibGltZU1hcmtcIixcbiAgICAgIFwiQ21kLUsgQ21kLVlcIjogXCJzdWJsaW1lWWFua1wiLFxuICAgICAgXCJDbWQtSyBDbWQtQ1wiOiBcInNob3dJbkNlbnRlclwiLFxuICAgICAgXCJDbWQtSyBDbWQtR1wiOiBcImNsZWFyQm9va21hcmtzXCIsXG4gICAgICBcIkNtZC1LIENtZC1CYWNrc3BhY2VcIjogXCJkZWxMaW5lTGVmdFwiLFxuICAgICAgXCJDbWQtSyBDbWQtMVwiOiBcImZvbGRBbGxcIixcbiAgICAgIFwiQ21kLUsgQ21kLTBcIjogXCJ1bmZvbGRBbGxcIixcbiAgICAgIFwiQ21kLUsgQ21kLUpcIjogXCJ1bmZvbGRBbGxcIixcbiAgICAgIFwiQ3RybC1TaGlmdC1VcFwiOiBcImFkZEN1cnNvclRvUHJldkxpbmVcIixcbiAgICAgIFwiQ3RybC1TaGlmdC1Eb3duXCI6IFwiYWRkQ3Vyc29yVG9OZXh0TGluZVwiLFxuICAgICAgXCJDbWQtRjNcIjogXCJmaW5kVW5kZXJcIixcbiAgICAgIFwiU2hpZnQtQ21kLUYzXCI6IFwiZmluZFVuZGVyUHJldmlvdXNcIixcbiAgICAgIFwiQWx0LUYzXCI6IFwiZmluZEFsbFVuZGVyXCIsXG4gICAgICBcIlNoaWZ0LUNtZC1bXCI6IFwiZm9sZFwiLFxuICAgICAgXCJTaGlmdC1DbWQtXVwiOiBcInVuZm9sZFwiLFxuICAgICAgXCJDbWQtSVwiOiBcImZpbmRJbmNyZW1lbnRhbFwiLFxuICAgICAgXCJTaGlmdC1DbWQtSVwiOiBcImZpbmRJbmNyZW1lbnRhbFJldmVyc2VcIixcbiAgICAgIFwiQ21kLUhcIjogXCJyZXBsYWNlXCIsXG4gICAgICBcIkYzXCI6IFwiZmluZE5leHRcIixcbiAgICAgIFwiU2hpZnQtRjNcIjogXCJmaW5kUHJldlwiLFxuICAgICAgXCJmYWxsdGhyb3VnaFwiOiBcIm1hY0RlZmF1bHRcIlxuICAgIH07XG4gICAgQ29kZU1pcnJvci5ub3JtYWxpemVLZXlNYXAoa2V5TWFwLm1hY1N1YmxpbWUpO1xuICAgIGtleU1hcC5wY1N1YmxpbWUgPSB7XG4gICAgICBcIlNoaWZ0LVRhYlwiOiBcImluZGVudExlc3NcIixcbiAgICAgIFwiU2hpZnQtQ3RybC1LXCI6IFwiZGVsZXRlTGluZVwiLFxuICAgICAgXCJBbHQtUVwiOiBcIndyYXBMaW5lc1wiLFxuICAgICAgXCJDdHJsLVRcIjogXCJ0cmFuc3Bvc2VDaGFyc1wiLFxuICAgICAgXCJBbHQtTGVmdFwiOiBcImdvU3Vid29yZExlZnRcIixcbiAgICAgIFwiQWx0LVJpZ2h0XCI6IFwiZ29TdWJ3b3JkUmlnaHRcIixcbiAgICAgIFwiQ3RybC1VcFwiOiBcInNjcm9sbExpbmVVcFwiLFxuICAgICAgXCJDdHJsLURvd25cIjogXCJzY3JvbGxMaW5lRG93blwiLFxuICAgICAgXCJDdHJsLUxcIjogXCJzZWxlY3RMaW5lXCIsXG4gICAgICBcIlNoaWZ0LUN0cmwtTFwiOiBcInNwbGl0U2VsZWN0aW9uQnlMaW5lXCIsXG4gICAgICBcIkVzY1wiOiBcInNpbmdsZVNlbGVjdGlvblRvcFwiLFxuICAgICAgXCJDdHJsLUVudGVyXCI6IFwiaW5zZXJ0TGluZUFmdGVyXCIsXG4gICAgICBcIlNoaWZ0LUN0cmwtRW50ZXJcIjogXCJpbnNlcnRMaW5lQmVmb3JlXCIsXG4gICAgICBcIkN0cmwtRFwiOiBcInNlbGVjdE5leHRPY2N1cnJlbmNlXCIsXG4gICAgICBcIlNoaWZ0LUN0cmwtU3BhY2VcIjogXCJzZWxlY3RTY29wZVwiLFxuICAgICAgXCJTaGlmdC1DdHJsLU1cIjogXCJzZWxlY3RCZXR3ZWVuQnJhY2tldHNcIixcbiAgICAgIFwiQ3RybC1NXCI6IFwiZ29Ub0JyYWNrZXRcIixcbiAgICAgIFwiU2hpZnQtQ3RybC1VcFwiOiBcInN3YXBMaW5lVXBcIixcbiAgICAgIFwiU2hpZnQtQ3RybC1Eb3duXCI6IFwic3dhcExpbmVEb3duXCIsXG4gICAgICBcIkN0cmwtL1wiOiBcInRvZ2dsZUNvbW1lbnRJbmRlbnRlZFwiLFxuICAgICAgXCJDdHJsLUpcIjogXCJqb2luTGluZXNcIixcbiAgICAgIFwiU2hpZnQtQ3RybC1EXCI6IFwiZHVwbGljYXRlTGluZVwiLFxuICAgICAgXCJGOVwiOiBcInNvcnRMaW5lc1wiLFxuICAgICAgXCJTaGlmdC1GOVwiOiBcInJldmVyc2VTb3J0TGluZXNcIixcbiAgICAgIFwiQ3RybC1GOVwiOiBcInNvcnRMaW5lc0luc2Vuc2l0aXZlXCIsXG4gICAgICBcIlNoaWZ0LUN0cmwtRjlcIjogXCJyZXZlcnNlU29ydExpbmVzSW5zZW5zaXRpdmVcIixcbiAgICAgIFwiRjJcIjogXCJuZXh0Qm9va21hcmtcIixcbiAgICAgIFwiU2hpZnQtRjJcIjogXCJwcmV2Qm9va21hcmtcIixcbiAgICAgIFwiQ3RybC1GMlwiOiBcInRvZ2dsZUJvb2ttYXJrXCIsXG4gICAgICBcIlNoaWZ0LUN0cmwtRjJcIjogXCJjbGVhckJvb2ttYXJrc1wiLFxuICAgICAgXCJBbHQtRjJcIjogXCJzZWxlY3RCb29rbWFya3NcIixcbiAgICAgIFwiQmFja3NwYWNlXCI6IFwic21hcnRCYWNrc3BhY2VcIixcbiAgICAgIFwiQ3RybC1LIEN0cmwtRFwiOiBcInNraXBBbmRTZWxlY3ROZXh0T2NjdXJyZW5jZVwiLFxuICAgICAgXCJDdHJsLUsgQ3RybC1LXCI6IFwiZGVsTGluZVJpZ2h0XCIsXG4gICAgICBcIkN0cmwtSyBDdHJsLVVcIjogXCJ1cGNhc2VBdEN1cnNvclwiLFxuICAgICAgXCJDdHJsLUsgQ3RybC1MXCI6IFwiZG93bmNhc2VBdEN1cnNvclwiLFxuICAgICAgXCJDdHJsLUsgQ3RybC1TcGFjZVwiOiBcInNldFN1YmxpbWVNYXJrXCIsXG4gICAgICBcIkN0cmwtSyBDdHJsLUFcIjogXCJzZWxlY3RUb1N1YmxpbWVNYXJrXCIsXG4gICAgICBcIkN0cmwtSyBDdHJsLVdcIjogXCJkZWxldGVUb1N1YmxpbWVNYXJrXCIsXG4gICAgICBcIkN0cmwtSyBDdHJsLVhcIjogXCJzd2FwV2l0aFN1YmxpbWVNYXJrXCIsXG4gICAgICBcIkN0cmwtSyBDdHJsLVlcIjogXCJzdWJsaW1lWWFua1wiLFxuICAgICAgXCJDdHJsLUsgQ3RybC1DXCI6IFwic2hvd0luQ2VudGVyXCIsXG4gICAgICBcIkN0cmwtSyBDdHJsLUdcIjogXCJjbGVhckJvb2ttYXJrc1wiLFxuICAgICAgXCJDdHJsLUsgQ3RybC1CYWNrc3BhY2VcIjogXCJkZWxMaW5lTGVmdFwiLFxuICAgICAgXCJDdHJsLUsgQ3RybC0xXCI6IFwiZm9sZEFsbFwiLFxuICAgICAgXCJDdHJsLUsgQ3RybC0wXCI6IFwidW5mb2xkQWxsXCIsXG4gICAgICBcIkN0cmwtSyBDdHJsLUpcIjogXCJ1bmZvbGRBbGxcIixcbiAgICAgIFwiQ3RybC1BbHQtVXBcIjogXCJhZGRDdXJzb3JUb1ByZXZMaW5lXCIsXG4gICAgICBcIkN0cmwtQWx0LURvd25cIjogXCJhZGRDdXJzb3JUb05leHRMaW5lXCIsXG4gICAgICBcIkN0cmwtRjNcIjogXCJmaW5kVW5kZXJcIixcbiAgICAgIFwiU2hpZnQtQ3RybC1GM1wiOiBcImZpbmRVbmRlclByZXZpb3VzXCIsXG4gICAgICBcIkFsdC1GM1wiOiBcImZpbmRBbGxVbmRlclwiLFxuICAgICAgXCJTaGlmdC1DdHJsLVtcIjogXCJmb2xkXCIsXG4gICAgICBcIlNoaWZ0LUN0cmwtXVwiOiBcInVuZm9sZFwiLFxuICAgICAgXCJDdHJsLUlcIjogXCJmaW5kSW5jcmVtZW50YWxcIixcbiAgICAgIFwiU2hpZnQtQ3RybC1JXCI6IFwiZmluZEluY3JlbWVudGFsUmV2ZXJzZVwiLFxuICAgICAgXCJDdHJsLUhcIjogXCJyZXBsYWNlXCIsXG4gICAgICBcIkYzXCI6IFwiZmluZE5leHRcIixcbiAgICAgIFwiU2hpZnQtRjNcIjogXCJmaW5kUHJldlwiLFxuICAgICAgXCJmYWxsdGhyb3VnaFwiOiBcInBjRGVmYXVsdFwiXG4gICAgfTtcbiAgICBDb2RlTWlycm9yLm5vcm1hbGl6ZUtleU1hcChrZXlNYXAucGNTdWJsaW1lKTtcbiAgICB2YXIgbWFjID0ga2V5TWFwLmRlZmF1bHQgPT0ga2V5TWFwLm1hY0RlZmF1bHQ7XG4gICAga2V5TWFwLnN1YmxpbWUgPSBtYWMgPyBrZXlNYXAubWFjU3VibGltZSA6IGtleU1hcC5wY1N1YmxpbWU7XG4gIH0pO1xufSkoKTtcbnZhciBzdWJsaW1lID0gc3VibGltZSQyLmV4cG9ydHM7XG52YXIgc3VibGltZSQxID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5mcmVlemUoLyogQF9fUFVSRV9fICovIF9tZXJnZU5hbWVzcGFjZXMoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIFtTeW1ib2wudG9TdHJpbmdUYWddOiBcIk1vZHVsZVwiLFxuICBcImRlZmF1bHRcIjogc3VibGltZVxufSwgW3N1YmxpbWUkMi5leHBvcnRzXSkpO1xuZXhwb3J0IHsgc3VibGltZSQxIGFzIHMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNURBO0FBOERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1REE7QUE4REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphiql-react/dist/sublime.es.js\n");
|
2769 |
|
2770 | }),
|
2771 |
|
2772 | "../../graphiql-toolkit/esm/async-helpers/index.js":
|
2773 |
|
2774 |
|
2775 |
|
2776 |
|
2777 | (function(module, exports, __webpack_require__) {
|
2778 |
|
2779 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.fetcherReturnToPromise = fetcherReturnToPromise;\n _exports.isAsyncIterable = isAsyncIterable;\n _exports.isObservable = isObservable;\n _exports.isPromise = isPromise;\n\n function isPromise(value) {\n return typeof value === 'object' && typeof value.then === 'function';\n }\n\n function observableToPromise(observable) {\n return new Promise((resolve, reject) => {\n const subscription = observable.subscribe({\n next: v => {\n resolve(v);\n subscription.unsubscribe();\n },\n error: reject,\n complete: () => {\n reject(new Error('no value resolved'));\n }\n });\n });\n }\n\n function isObservable(value) {\n return typeof value === 'object' && 'subscribe' in value && typeof value.subscribe === 'function';\n }\n\n function isAsyncIterable(input) {\n return typeof input === 'object' && input !== null && (input[Symbol.toStringTag] === 'AsyncGenerator' || Symbol.asyncIterator in input);\n }\n\n function asyncIterableToPromise(input) {\n return new Promise((resolve, reject) => {\n var _a;\n\n const iteratorReturn = (_a = ('return' in input ? input : input[Symbol.asyncIterator]()).return) === null || _a === void 0 ? void 0 : _a.bind(input);\n const iteratorNext = ('next' in input ? input : input[Symbol.asyncIterator]()).next.bind(input);\n iteratorNext().then(result => {\n resolve(result.value);\n iteratorReturn === null || iteratorReturn === void 0 ? void 0 : iteratorReturn();\n }).catch(err => {\n reject(err);\n });\n });\n }\n\n function fetcherReturnToPromise(fetcherResult) {\n return Promise.resolve(fetcherResult).then(result => {\n if (isAsyncIterable(result)) {\n return asyncIterableToPromise(result);\n } else if (isObservable(result)) {\n return observableToPromise(result);\n }\n\n return result;\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vYXN5bmMtaGVscGVycy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uLy4uL3NyYy9hc3luYy1oZWxwZXJzL2luZGV4LnRzP2ZlYmYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUdBO0FBUUE7QUFDQTtBQUNBO0FBR0E7OztBQUlBO0FBR0E7QUFJQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/async-helpers/index.js\n");
|
2780 |
|
2781 | }),
|
2782 |
|
2783 | "../../graphiql-toolkit/esm/create-fetcher/createFetcher.js":
|
2784 |
|
2785 |
|
2786 |
|
2787 |
|
2788 | (function(module, exports, __webpack_require__) {
|
2789 |
|
2790 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./lib */ \"../../graphiql-toolkit/esm/create-fetcher/lib.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _lib) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.createGraphiQLFetcher = createGraphiQLFetcher;\n\n function createGraphiQLFetcher(options) {\n let httpFetch;\n\n if (typeof window !== 'undefined' && window.fetch) {\n httpFetch = window.fetch;\n }\n\n if ((options === null || options === void 0 ? void 0 : options.enableIncrementalDelivery) === null || options.enableIncrementalDelivery !== false) {\n options.enableIncrementalDelivery = true;\n }\n\n if (options.fetch) {\n httpFetch = options.fetch;\n }\n\n if (!httpFetch) {\n throw Error('No valid fetcher implementation available');\n }\n\n const simpleFetcher = (0, _lib.createSimpleFetcher)(options, httpFetch);\n const wsFetcher = (0, _lib.getWsFetcher)(options);\n const httpFetcher = options.enableIncrementalDelivery ? (0, _lib.createMultipartFetcher)(options, httpFetch) : simpleFetcher;\n return (graphQLParams, fetcherOpts) => {\n if (graphQLParams.operationName === 'IntrospectionQuery') {\n return (options.schemaFetcher || simpleFetcher)(graphQLParams, fetcherOpts);\n }\n\n const isSubscription = (0, _lib.isSubscriptionWithName)(fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.documentAST, graphQLParams.operationName || undefined);\n\n if (isSubscription) {\n if (!wsFetcher) {\n throw Error(`Your GraphiQL createFetcher is not properly configured for websocket subscriptions yet. ${options.subscriptionUrl ? `Provided URL ${options.subscriptionUrl} failed` : `Please provide subscriptionUrl, wsClient or legacyClient option first.`}`);\n }\n\n return wsFetcher(graphQLParams);\n }\n\n return httpFetcher(graphQLParams, fetcherOpts);\n };\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vY3JlYXRlLWZldGNoZXIvY3JlYXRlRmV0Y2hlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uLy4uL3NyYy9jcmVhdGUtZmV0Y2hlci9jcmVhdGVGZXRjaGVyLnRzPzI3MzYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQWlCQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/create-fetcher/createFetcher.js\n");
|
2791 |
|
2792 | }),
|
2793 |
|
2794 | "../../graphiql-toolkit/esm/create-fetcher/index.js":
|
2795 |
|
2796 |
|
2797 |
|
2798 |
|
2799 | (function(module, exports, __webpack_require__) {
|
2800 |
|
2801 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./types */ \"../../graphiql-toolkit/esm/create-fetcher/types.js\"), __webpack_require__(/*! ./createFetcher */ \"../../graphiql-toolkit/esm/create-fetcher/createFetcher.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _types, _createFetcher) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n var _exportNames = {\n createGraphiQLFetcher: true\n };\n Object.defineProperty(_exports, \"createGraphiQLFetcher\", {\n enumerable: true,\n get: function () {\n return _createFetcher.createGraphiQLFetcher;\n }\n });\n Object.keys(_types).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in _exports && _exports[key] === _types[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _types[key];\n }\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vY3JlYXRlLWZldGNoZXIvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi8uLi9zcmMvY3JlYXRlLWZldGNoZXIvaW5kZXgudHM/ODM5MSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/create-fetcher/index.js\n");
|
2802 |
|
2803 | }),
|
2804 |
|
2805 | "../../graphiql-toolkit/esm/create-fetcher/lib.js":
|
2806 |
|
2807 |
|
2808 |
|
2809 |
|
2810 | (function(module, exports, __webpack_require__) {
|
2811 |
|
2812 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! meros */ \"../../../node_modules/meros/browser/index.mjs\"), __webpack_require__(/*! @n1ru4l/push-pull-async-iterable-iterator */ \"../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _meros, _pushPullAsyncIterableIterator) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.isSubscriptionWithName = _exports.getWsFetcher = _exports.createWebsocketsFetcherFromUrl = _exports.createWebsocketsFetcherFromClient = _exports.createSimpleFetcher = _exports.createMultipartFetcher = _exports.createLegacyWebsocketsFetcher = void 0;\n\n var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\n\n var __await = void 0 && (void 0).__await || function (v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n };\n\n var __asyncValues = void 0 && (void 0).__asyncValues || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n };\n\n var __asyncGenerator = void 0 && (void 0).__asyncGenerator || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n };\n\n const errorHasCode = err => {\n return typeof err === 'object' && err !== null && 'code' in err;\n };\n\n const isSubscriptionWithName = (document, name) => {\n let isSubscription = false;\n (0, _graphql.visit)(document, {\n OperationDefinition(node) {\n var _a;\n\n if (name === ((_a = node.name) === null || _a === void 0 ? void 0 : _a.value)) {\n if (node.operation === 'subscription') {\n isSubscription = true;\n }\n }\n }\n\n });\n return isSubscription;\n };\n\n _exports.isSubscriptionWithName = isSubscriptionWithName;\n\n const createSimpleFetcher = (options, httpFetch) => (graphQLParams, fetcherOpts) => __awaiter(void 0, void 0, void 0, function* () {\n const data = yield httpFetch(options.url, {\n method: 'POST',\n body: JSON.stringify(graphQLParams),\n headers: Object.assign(Object.assign({\n 'content-type': 'application/json'\n }, options.headers), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers)\n });\n return data.json();\n });\n\n _exports.createSimpleFetcher = createSimpleFetcher;\n\n const createWebsocketsFetcherFromUrl = (url, connectionParams) => {\n let wsClient;\n\n try {\n const {\n createClient\n } = __webpack_require__(/*! graphql-ws */ \"../../../node_modules/graphql-ws/umd/graphql-ws.js\");\n\n wsClient = createClient({\n url,\n connectionParams\n });\n return createWebsocketsFetcherFromClient(wsClient);\n } catch (err) {\n if (errorHasCode(err)) {\n if (err.code === 'MODULE_NOT_FOUND') {\n throw Error(\"You need to install the 'graphql-ws' package to use websockets when passing a 'subscriptionUrl'\");\n }\n }\n\n console.error(`Error creating websocket client for:\\n${url}\\n\\n${err}`);\n }\n };\n\n _exports.createWebsocketsFetcherFromUrl = createWebsocketsFetcherFromUrl;\n\n const createWebsocketsFetcherFromClient = wsClient => graphQLParams => (0, _pushPullAsyncIterableIterator.makeAsyncIterableIteratorFromSink)(sink => wsClient.subscribe(graphQLParams, Object.assign(Object.assign({}, sink), {\n error: err => {\n if (err instanceof CloseEvent) {\n sink.error(new Error(`Socket closed with event ${err.code} ${err.reason || ''}`.trim()));\n } else {\n sink.error(err);\n }\n }\n })));\n\n _exports.createWebsocketsFetcherFromClient = createWebsocketsFetcherFromClient;\n\n const createLegacyWebsocketsFetcher = legacyWsClient => graphQLParams => {\n const observable = legacyWsClient.request(graphQLParams);\n return (0, _pushPullAsyncIterableIterator.makeAsyncIterableIteratorFromSink)(sink => observable.subscribe(sink).unsubscribe);\n };\n\n _exports.createLegacyWebsocketsFetcher = createLegacyWebsocketsFetcher;\n\n const createMultipartFetcher = (options, httpFetch) => function (graphQLParams, fetcherOpts) {\n return __asyncGenerator(this, arguments, function* () {\n var e_1, _a;\n\n const response = yield __await(httpFetch(options.url, {\n method: 'POST',\n body: JSON.stringify(graphQLParams),\n headers: Object.assign(Object.assign({\n 'content-type': 'application/json',\n accept: 'application/json, multipart/mixed'\n }, options.headers), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers)\n }).then(response => (0, _meros.meros)(response, {\n multiple: true\n })));\n\n if (!(0, _pushPullAsyncIterableIterator.isAsyncIterable)(response)) {\n return yield __await(yield yield __await(response.json()));\n }\n\n try {\n for (var response_1 = __asyncValues(response), response_1_1; response_1_1 = yield __await(response_1.next()), !response_1_1.done;) {\n const chunk = response_1_1.value;\n\n if (chunk.some(part => !part.json)) {\n const message = chunk.map(part => `Headers::\\n${part.headers}\\n\\nBody::\\n${part.body}`);\n throw new Error(`Expected multipart chunks to be of json type. got:\\n${message}`);\n }\n\n yield yield __await(chunk.map(part => part.body));\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (response_1_1 && !response_1_1.done && (_a = response_1.return)) yield __await(_a.call(response_1));\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n });\n };\n\n _exports.createMultipartFetcher = createMultipartFetcher;\n\n const getWsFetcher = options => {\n if (options.wsClient) {\n return createWebsocketsFetcherFromClient(options.wsClient);\n }\n\n if (options.subscriptionUrl) {\n return createWebsocketsFetcherFromUrl(options.subscriptionUrl, options.wsConnectionParams);\n }\n\n const legacyWebsocketsClient = options.legacyClient || options.legacyWsClient;\n\n if (legacyWebsocketsClient) {\n return createLegacyWebsocketsFetcher(legacyWebsocketsClient);\n }\n };\n\n _exports.getWsFetcher = getWsFetcher;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vY3JlYXRlLWZldGNoZXIvbGliLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vLi4vc3JjL2NyZWF0ZS1mZXRjaGVyL2xpYi50cz8yNWUxIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTtBQUNBO0FBQ0E7QUFDQTtBQVFBO0FBSUE7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBU0E7QUFDQTtBQUNBOzs7QUFTQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUhBO0FBU0E7QUFDQTtBQUNBOzs7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQU9BO0FBS0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFiQTtBQUNBOzs7QUF1QkE7QUFHQTtBQUNBO0FBSUE7QUFDQTs7O0FBT0E7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUhBO0FBYUE7QUFEQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7OztBQUNBO0FBQUE7QUFDQTs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/create-fetcher/lib.js\n");
|
2813 |
|
2814 | }),
|
2815 |
|
2816 | "../../graphiql-toolkit/esm/create-fetcher/types.js":
|
2817 |
|
2818 |
|
2819 |
|
2820 |
|
2821 | (function(module, exports, __webpack_require__) {
|
2822 |
|
2823 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vY3JlYXRlLWZldGNoZXIvdHlwZXMuanMuanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/create-fetcher/types.js\n");
|
2824 |
|
2825 | }),
|
2826 |
|
2827 | "../../graphiql-toolkit/esm/format/index.js":
|
2828 |
|
2829 |
|
2830 |
|
2831 |
|
2832 | (function(module, exports, __webpack_require__) {
|
2833 |
|
2834 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.formatError = formatError;\n _exports.formatResult = formatResult;\n\n function stringify(obj) {\n return JSON.stringify(obj, null, 2);\n }\n\n function formatSingleError(error) {\n return Object.assign(Object.assign({}, error), {\n message: error.message,\n stack: error.stack\n });\n }\n\n function handleSingleError(error) {\n if (error instanceof Error) {\n return formatSingleError(error);\n }\n\n return error;\n }\n\n function formatError(error) {\n if (Array.isArray(error)) {\n return stringify({\n errors: error.map(e => handleSingleError(e))\n });\n }\n\n return stringify({\n errors: [handleSingleError(error)]\n });\n }\n\n function formatResult(result) {\n return stringify(result);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vZm9ybWF0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vLi4vc3JjL2Zvcm1hdC9pbmRleC50cz84NjFhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/format/index.js\n");
|
2835 |
|
2836 | }),
|
2837 |
|
2838 | "../../graphiql-toolkit/esm/graphql-helpers/auto-complete.js":
|
2839 |
|
2840 |
|
2841 |
|
2842 |
|
2843 | (function(module, exports, __webpack_require__) {
|
2844 |
|
2845 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.fillLeafs = fillLeafs;\n\n function fillLeafs(schema, docString, getDefaultFieldNames) {\n const insertions = [];\n\n if (!schema || !docString) {\n return {\n insertions,\n result: docString\n };\n }\n\n let ast;\n\n try {\n ast = (0, _graphql.parse)(docString);\n } catch (error) {\n return {\n insertions,\n result: docString\n };\n }\n\n const fieldNameFn = getDefaultFieldNames || defaultGetDefaultFieldNames;\n const typeInfo = new _graphql.TypeInfo(schema);\n (0, _graphql.visit)(ast, {\n leave(node) {\n typeInfo.leave(node);\n },\n\n enter(node) {\n typeInfo.enter(node);\n\n if (node.kind === 'Field' && !node.selectionSet) {\n const fieldType = typeInfo.getType();\n const selectionSet = buildSelectionSet(isFieldType(fieldType), fieldNameFn);\n\n if (selectionSet && node.loc) {\n const indent = getIndentation(docString, node.loc.start);\n insertions.push({\n index: node.loc.end,\n string: ' ' + (0, _graphql.print)(selectionSet).replace(/\\n/g, '\\n' + indent)\n });\n }\n }\n }\n\n });\n return {\n insertions,\n result: withInsertions(docString, insertions)\n };\n }\n\n function defaultGetDefaultFieldNames(type) {\n if (!('getFields' in type)) {\n return [];\n }\n\n const fields = type.getFields();\n\n if (fields.id) {\n return ['id'];\n }\n\n if (fields.edges) {\n return ['edges'];\n }\n\n if (fields.node) {\n return ['node'];\n }\n\n const leafFieldNames = [];\n Object.keys(fields).forEach(fieldName => {\n if ((0, _graphql.isLeafType)(fields[fieldName].type)) {\n leafFieldNames.push(fieldName);\n }\n });\n return leafFieldNames;\n }\n\n function buildSelectionSet(type, getDefaultFieldNames) {\n const namedType = (0, _graphql.getNamedType)(type);\n\n if (!type || (0, _graphql.isLeafType)(type)) {\n return;\n }\n\n const fieldNames = getDefaultFieldNames(namedType);\n\n if (!Array.isArray(fieldNames) || fieldNames.length === 0 || !('getFields' in namedType)) {\n return;\n }\n\n return {\n kind: _graphql.Kind.SELECTION_SET,\n selections: fieldNames.map(fieldName => {\n const fieldDef = namedType.getFields()[fieldName];\n const fieldType = fieldDef ? fieldDef.type : null;\n return {\n kind: _graphql.Kind.FIELD,\n name: {\n kind: _graphql.Kind.NAME,\n value: fieldName\n },\n selectionSet: buildSelectionSet(fieldType, getDefaultFieldNames)\n };\n })\n };\n }\n\n function withInsertions(initial, insertions) {\n if (insertions.length === 0) {\n return initial;\n }\n\n let edited = '';\n let prevIndex = 0;\n insertions.forEach(_ref => {\n let {\n index,\n string\n } = _ref;\n edited += initial.slice(prevIndex, index) + string;\n prevIndex = index;\n });\n edited += initial.slice(prevIndex);\n return edited;\n }\n\n function getIndentation(str, index) {\n let indentStart = index;\n let indentEnd = index;\n\n while (indentStart) {\n const c = str.charCodeAt(indentStart - 1);\n\n if (c === 10 || c === 13 || c === 0x2028 || c === 0x2029) {\n break;\n }\n\n indentStart--;\n\n if (c !== 9 && c !== 11 && c !== 12 && c !== 32 && c !== 160) {\n indentEnd = indentStart;\n }\n }\n\n return str.substring(indentStart, indentEnd);\n }\n\n function isFieldType(fieldType) {\n if (fieldType) {\n return fieldType;\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vZ3JhcGhxbC1oZWxwZXJzL2F1dG8tY29tcGxldGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi8uLi9zcmMvZ3JhcGhxbC1oZWxwZXJzL2F1dG8tY29tcGxldGUudHM/OTQwMCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBZ0NBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQXJCQTtBQXdCQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFJQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQU1BO0FBUkE7QUFhQTtBQWxCQTtBQW9CQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/graphql-helpers/auto-complete.js\n");
|
2846 |
|
2847 | }),
|
2848 |
|
2849 | "../../graphiql-toolkit/esm/graphql-helpers/index.js":
|
2850 |
|
2851 |
|
2852 |
|
2853 |
|
2854 | (function(module, exports, __webpack_require__) {
|
2855 |
|
2856 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./auto-complete */ \"../../graphiql-toolkit/esm/graphql-helpers/auto-complete.js\"), __webpack_require__(/*! ./merge-ast */ \"../../graphiql-toolkit/esm/graphql-helpers/merge-ast.js\"), __webpack_require__(/*! ./operation-name */ \"../../graphiql-toolkit/esm/graphql-helpers/operation-name.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _autoComplete, _mergeAst, _operationName) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.keys(_autoComplete).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in _exports && _exports[key] === _autoComplete[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _autoComplete[key];\n }\n });\n });\n Object.keys(_mergeAst).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in _exports && _exports[key] === _mergeAst[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _mergeAst[key];\n }\n });\n });\n Object.keys(_operationName).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in _exports && _exports[key] === _operationName[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _operationName[key];\n }\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vZ3JhcGhxbC1oZWxwZXJzL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vLi4vc3JjL2dyYXBocWwtaGVscGVycy9pbmRleC50cz9iNzg4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/graphql-helpers/index.js\n");
|
2857 |
|
2858 | }),
|
2859 |
|
2860 | "../../graphiql-toolkit/esm/graphql-helpers/merge-ast.js":
|
2861 |
|
2862 |
|
2863 |
|
2864 |
|
2865 | (function(module, exports, __webpack_require__) {
|
2866 |
|
2867 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.mergeAst = mergeAst;\n\n function uniqueBy(array, iteratee) {\n var _a;\n\n const FilteredMap = new Map();\n const result = [];\n\n for (const item of array) {\n if (item.kind === 'Field') {\n const uniqueValue = iteratee(item);\n const existing = FilteredMap.get(uniqueValue);\n\n if ((_a = item.directives) === null || _a === void 0 ? void 0 : _a.length) {\n const itemClone = Object.assign({}, item);\n result.push(itemClone);\n } else if ((existing === null || existing === void 0 ? void 0 : existing.selectionSet) && item.selectionSet) {\n existing.selectionSet.selections = [...existing.selectionSet.selections, ...item.selectionSet.selections];\n } else if (!existing) {\n const itemClone = Object.assign({}, item);\n FilteredMap.set(uniqueValue, itemClone);\n result.push(itemClone);\n }\n } else {\n result.push(item);\n }\n }\n\n return result;\n }\n\n function inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType) {\n var _a;\n\n const selectionSetTypeName = selectionSetType ? (0, _graphql.getNamedType)(selectionSetType).name : null;\n const outputSelections = [];\n const seenSpreads = [];\n\n for (let selection of selections) {\n if (selection.kind === 'FragmentSpread') {\n const fragmentName = selection.name.value;\n\n if (!selection.directives || selection.directives.length === 0) {\n if (seenSpreads.indexOf(fragmentName) >= 0) {\n continue;\n } else {\n seenSpreads.push(fragmentName);\n }\n }\n\n const fragmentDefinition = fragmentDefinitions[selection.name.value];\n\n if (fragmentDefinition) {\n const {\n typeCondition,\n directives,\n selectionSet\n } = fragmentDefinition;\n selection = {\n kind: _graphql.Kind.INLINE_FRAGMENT,\n typeCondition,\n directives,\n selectionSet\n };\n }\n }\n\n if (selection.kind === _graphql.Kind.INLINE_FRAGMENT && (!selection.directives || ((_a = selection.directives) === null || _a === void 0 ? void 0 : _a.length) === 0)) {\n const fragmentTypeName = selection.typeCondition ? selection.typeCondition.name.value : null;\n\n if (!fragmentTypeName || fragmentTypeName === selectionSetTypeName) {\n outputSelections.push(...inlineRelevantFragmentSpreads(fragmentDefinitions, selection.selectionSet.selections, selectionSetType));\n continue;\n }\n }\n\n outputSelections.push(selection);\n }\n\n return outputSelections;\n }\n\n function mergeAst(documentAST, schema) {\n const typeInfo = schema ? new _graphql.TypeInfo(schema) : null;\n const fragmentDefinitions = Object.create(null);\n\n for (const definition of documentAST.definitions) {\n if (definition.kind === _graphql.Kind.FRAGMENT_DEFINITION) {\n fragmentDefinitions[definition.name.value] = definition;\n }\n }\n\n const visitors = {\n SelectionSet(node) {\n const selectionSetType = typeInfo ? typeInfo.getParentType() : null;\n let {\n selections\n } = node;\n selections = inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType);\n selections = uniqueBy(selections, selection => selection.alias ? selection.alias.value : selection.name.value);\n return Object.assign(Object.assign({}, node), {\n selections\n });\n },\n\n FragmentDefinition() {\n return null;\n }\n\n };\n return (0, _graphql.visit)(documentAST, typeInfo ? (0, _graphql.visitWithTypeInfo)(typeInfo, visitors) : visitors);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vZ3JhcGhxbC1oZWxwZXJzL21lcmdlLWFzdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uLy4uL3NyYy9ncmFwaHFsLWhlbHBlcnMvbWVyZ2UtYXN0LnRzPzMxNDkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQWVBOzs7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQU9BO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBTUE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFNQTtBQUlBO0FBRUE7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXZCQTtBQXlCQTtBQUlBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/graphql-helpers/merge-ast.js\n");
|
2868 |
|
2869 | }),
|
2870 |
|
2871 | "../../graphiql-toolkit/esm/graphql-helpers/operation-name.js":
|
2872 |
|
2873 |
|
2874 |
|
2875 |
|
2876 | (function(module, exports, __webpack_require__) {
|
2877 |
|
2878 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getSelectedOperationName = getSelectedOperationName;\n\n function getSelectedOperationName(prevOperations, prevSelectedOperationName, operations) {\n if (!operations || operations.length < 1) {\n return;\n }\n\n const names = operations.map(op => {\n var _a;\n\n return (_a = op.name) === null || _a === void 0 ? void 0 : _a.value;\n });\n\n if (prevSelectedOperationName && names.indexOf(prevSelectedOperationName) !== -1) {\n return prevSelectedOperationName;\n }\n\n if (prevSelectedOperationName && prevOperations) {\n const prevNames = prevOperations.map(op => {\n var _a;\n\n return (_a = op.name) === null || _a === void 0 ? void 0 : _a.value;\n });\n const prevIndex = prevNames.indexOf(prevSelectedOperationName);\n\n if (prevIndex !== -1 && prevIndex < names.length) {\n return names[prevIndex];\n }\n }\n\n return names[0];\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vZ3JhcGhxbC1oZWxwZXJzL29wZXJhdGlvbi1uYW1lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vLi4vc3JjL2dyYXBocWwtaGVscGVycy9vcGVyYXRpb24tbmFtZS50cz84NzQxIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFNQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/graphql-helpers/operation-name.js\n");
|
2879 |
|
2880 | }),
|
2881 |
|
2882 | "../../graphiql-toolkit/esm/index.js":
|
2883 |
|
2884 |
|
2885 |
|
2886 |
|
2887 | (function(module, exports, __webpack_require__) {
|
2888 |
|
2889 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./async-helpers */ \"../../graphiql-toolkit/esm/async-helpers/index.js\"), __webpack_require__(/*! ./create-fetcher */ \"../../graphiql-toolkit/esm/create-fetcher/index.js\"), __webpack_require__(/*! ./format */ \"../../graphiql-toolkit/esm/format/index.js\"), __webpack_require__(/*! ./graphql-helpers */ \"../../graphiql-toolkit/esm/graphql-helpers/index.js\"), __webpack_require__(/*! ./storage */ \"../../graphiql-toolkit/esm/storage/index.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _asyncHelpers, _createFetcher, _format, _graphqlHelpers, _storage) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.keys(_asyncHelpers).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in _exports && _exports[key] === _asyncHelpers[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _asyncHelpers[key];\n }\n });\n });\n Object.keys(_createFetcher).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in _exports && _exports[key] === _createFetcher[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _createFetcher[key];\n }\n });\n });\n Object.keys(_format).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in _exports && _exports[key] === _format[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _format[key];\n }\n });\n });\n Object.keys(_graphqlHelpers).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in _exports && _exports[key] === _graphqlHelpers[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _graphqlHelpers[key];\n }\n });\n });\n Object.keys(_storage).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in _exports && _exports[key] === _storage[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _storage[key];\n }\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi9zcmMvaW5kZXgudHM/NmYzNyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/index.js\n");
|
2890 |
|
2891 | }),
|
2892 |
|
2893 | "../../graphiql-toolkit/esm/storage/base.js":
|
2894 |
|
2895 |
|
2896 |
|
2897 |
|
2898 | (function(module, exports, __webpack_require__) {
|
2899 |
|
2900 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.StorageAPI = void 0;\n\n function isQuotaError(storage, e) {\n return e instanceof DOMException && (e.code === 22 || e.code === 1014 || e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') && storage.length !== 0;\n }\n\n class StorageAPI {\n constructor(storage) {\n if (storage) {\n this.storage = storage;\n } else if (storage === null) {\n this.storage = null;\n } else {\n this.storage = typeof window !== 'undefined' ? window.localStorage : null;\n }\n }\n\n get(name) {\n if (!this.storage) {\n return null;\n }\n\n const key = `${STORAGE_NAMESPACE}:${name}`;\n const value = this.storage.getItem(key);\n\n if (value === 'null' || value === 'undefined') {\n this.storage.removeItem(key);\n return null;\n }\n\n return value || null;\n }\n\n set(name, value) {\n let quotaError = false;\n let error = null;\n\n if (this.storage) {\n const key = `${STORAGE_NAMESPACE}:${name}`;\n\n if (value) {\n try {\n this.storage.setItem(key, value);\n } catch (e) {\n error = e instanceof Error ? e : new Error(`${e}`);\n quotaError = isQuotaError(this.storage, e);\n }\n } else {\n this.storage.removeItem(key);\n }\n }\n\n return {\n isQuotaError: quotaError,\n error\n };\n }\n\n }\n\n _exports.StorageAPI = StorageAPI;\n const STORAGE_NAMESPACE = 'graphiql';\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vc3RvcmFnZS9iYXNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vLi4vc3JjL3N0b3JhZ2UvYmFzZS50cz9lNzBhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBY0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBdkRBO0FBQ0E7O0FBd0RBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/storage/base.js\n");
|
2901 |
|
2902 | }),
|
2903 |
|
2904 | "../../graphiql-toolkit/esm/storage/history.js":
|
2905 |
|
2906 |
|
2907 |
|
2908 |
|
2909 | (function(module, exports, __webpack_require__) {
|
2910 |
|
2911 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./query */ \"../../graphiql-toolkit/esm/storage/query.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _query) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.HistoryStore = void 0;\n const MAX_QUERY_SIZE = 100000;\n\n class HistoryStore {\n constructor(storage, maxHistoryLength) {\n this.storage = storage;\n this.maxHistoryLength = maxHistoryLength;\n\n this.updateHistory = (query, variables, headers, operationName) => {\n if (this.shouldSaveQuery(query, variables, headers, this.history.fetchRecent())) {\n this.history.push({\n query,\n variables,\n headers,\n operationName\n });\n const historyQueries = this.history.items;\n const favoriteQueries = this.favorite.items;\n this.queries = historyQueries.concat(favoriteQueries);\n }\n };\n\n this.history = new _query.QueryStore('queries', this.storage, this.maxHistoryLength);\n this.favorite = new _query.QueryStore('favorites', this.storage, null);\n this.queries = [...this.history.fetchAll(), ...this.favorite.fetchAll()];\n }\n\n shouldSaveQuery(query, variables, headers, lastQuerySaved) {\n if (!query) {\n return false;\n }\n\n try {\n (0, _graphql.parse)(query);\n } catch (e) {\n return false;\n }\n\n if (query.length > MAX_QUERY_SIZE) {\n return false;\n }\n\n if (!lastQuerySaved) {\n return true;\n }\n\n if (JSON.stringify(query) === JSON.stringify(lastQuerySaved.query)) {\n if (JSON.stringify(variables) === JSON.stringify(lastQuerySaved.variables)) {\n if (JSON.stringify(headers) === JSON.stringify(lastQuerySaved.headers)) {\n return false;\n }\n\n if (headers && !lastQuerySaved.headers) {\n return false;\n }\n }\n\n if (variables && !lastQuerySaved.variables) {\n return false;\n }\n }\n\n return true;\n }\n\n toggleFavorite(query, variables, headers, operationName, label, favorite) {\n const item = {\n query,\n variables,\n headers,\n operationName,\n label\n };\n\n if (!this.favorite.contains(item)) {\n item.favorite = true;\n this.favorite.push(item);\n } else if (favorite) {\n item.favorite = false;\n this.favorite.delete(item);\n }\n\n this.queries = [...this.history.items, ...this.favorite.items];\n }\n\n editLabel(query, variables, headers, operationName, label, favorite) {\n const item = {\n query,\n variables,\n headers,\n operationName,\n label\n };\n\n if (favorite) {\n this.favorite.edit(Object.assign(Object.assign({}, item), {\n favorite\n }));\n } else {\n this.history.edit(item);\n }\n\n this.queries = [...this.history.items, ...this.favorite.items];\n }\n\n }\n\n _exports.HistoryStore = HistoryStore;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vc3RvcmFnZS9oaXN0b3J5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vLi4vc3JjL3N0b3JhZ2UvaGlzdG9yeS50cz83NTVhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUtBO0FBQUE7QUFBQTtBQUNBO0FBc0RBO0FBTUE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEvRUE7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUEyQkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFDQTtBQU1BO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFySUE7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/storage/history.js\n");
|
2912 |
|
2913 | }),
|
2914 |
|
2915 | "../../graphiql-toolkit/esm/storage/index.js":
|
2916 |
|
2917 |
|
2918 |
|
2919 |
|
2920 | (function(module, exports, __webpack_require__) {
|
2921 |
|
2922 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./base */ \"../../graphiql-toolkit/esm/storage/base.js\"), __webpack_require__(/*! ./history */ \"../../graphiql-toolkit/esm/storage/history.js\"), __webpack_require__(/*! ./query */ \"../../graphiql-toolkit/esm/storage/query.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _base, _history, _query) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.keys(_base).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in _exports && _exports[key] === _base[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _base[key];\n }\n });\n });\n Object.keys(_history).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in _exports && _exports[key] === _history[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _history[key];\n }\n });\n });\n Object.keys(_query).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in _exports && _exports[key] === _query[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _query[key];\n }\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vc3RvcmFnZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uLy4uL3NyYy9zdG9yYWdlL2luZGV4LnRzPzI4NjkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/storage/index.js\n");
|
2923 |
|
2924 | }),
|
2925 |
|
2926 | "../../graphiql-toolkit/esm/storage/query.js":
|
2927 |
|
2928 |
|
2929 |
|
2930 |
|
2931 | (function(module, exports, __webpack_require__) {
|
2932 |
|
2933 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.QueryStore = void 0;\n\n class QueryStore {\n constructor(key, storage) {\n let maxSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n this.key = key;\n this.storage = storage;\n this.maxSize = maxSize;\n this.items = this.fetchAll();\n }\n\n get length() {\n return this.items.length;\n }\n\n contains(item) {\n return this.items.some(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName);\n }\n\n edit(item) {\n const itemIndex = this.items.findIndex(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName);\n\n if (itemIndex !== -1) {\n this.items.splice(itemIndex, 1, item);\n this.save();\n }\n }\n\n delete(item) {\n const itemIndex = this.items.findIndex(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName);\n\n if (itemIndex !== -1) {\n this.items.splice(itemIndex, 1);\n this.save();\n }\n }\n\n fetchRecent() {\n return this.items[this.items.length - 1];\n }\n\n fetchAll() {\n const raw = this.storage.get(this.key);\n\n if (raw) {\n return JSON.parse(raw)[this.key];\n }\n\n return [];\n }\n\n push(item) {\n const items = [...this.items, item];\n\n if (this.maxSize && items.length > this.maxSize) {\n items.shift();\n }\n\n for (let attempts = 0; attempts < 5; attempts++) {\n const response = this.storage.set(this.key, JSON.stringify({\n [this.key]: items\n }));\n\n if (!response || !response.error) {\n this.items = items;\n } else if (response.isQuotaError && this.maxSize) {\n items.shift();\n } else {\n return;\n }\n }\n }\n\n save() {\n this.storage.set(this.key, JSON.stringify({\n [this.key]: this.items\n }));\n }\n\n }\n\n _exports.QueryStore = QueryStore;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vc3RvcmFnZS9xdWVyeS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uLy4uL3NyYy9zdG9yYWdlL3F1ZXJ5LnRzPzVjMTAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQVdBO0FBR0E7QUFHQTtBQUZBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUEzRkE7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/storage/query.js\n");
|
2934 |
|
2935 | }),
|
2936 |
|
2937 | "./cdn.ts":
|
2938 |
|
2939 |
|
2940 |
|
2941 |
|
2942 | (function(module, exports, __webpack_require__) {
|
2943 |
|
2944 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! regenerator-runtime/runtime */ \"../../../node_modules/regenerator-runtime/runtime.js\"), __webpack_require__(/*! @graphiql/toolkit */ \"../../graphiql-toolkit/esm/index.js\"), __webpack_require__(/*! ./css/app.css */ \"./css/app.css\"), __webpack_require__(/*! ./css/codemirror.css */ \"./css/codemirror.css\"), __webpack_require__(/*! ./css/foldgutter.css */ \"./css/foldgutter.css\"), __webpack_require__(/*! ./css/info.css */ \"./css/info.css\"), __webpack_require__(/*! ./css/jump.css */ \"./css/jump.css\"), __webpack_require__(/*! ./css/lint.css */ \"./css/lint.css\"), __webpack_require__(/*! ./css/loading.css */ \"./css/loading.css\"), __webpack_require__(/*! ./css/show-hint.css */ \"./css/show-hint.css\"), __webpack_require__(/*! ./css/doc-explorer.css */ \"./css/doc-explorer.css\"), __webpack_require__(/*! ./css/history.css */ \"./css/history.css\"), __webpack_require__(/*! ./components/GraphiQL */ \"./components/GraphiQL.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _runtime, _toolkit, _app, _codemirror, _foldgutter, _info, _jump, _lint, _loading, _showHint, _docExplorer, _history, _GraphiQL) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n // add the static function here for CDN only. otherwise, doing this in the component could\n // add unwanted dependencies to the bundle.\n // @ts-expect-error\n _GraphiQL.GraphiQL.createFetcher = _toolkit.createGraphiQLFetcher;\n var _default = _GraphiQL.GraphiQL;\n _exports.default = _default;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jZG4udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nkbi50cz9kM2U2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgJ3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZSc7XG5cbmltcG9ydCB7IGNyZWF0ZUdyYXBoaVFMRmV0Y2hlciB9IGZyb20gJ0BncmFwaGlxbC90b29sa2l0JztcblxuaW1wb3J0ICcuL2Nzcy9hcHAuY3NzJztcbmltcG9ydCAnLi9jc3MvY29kZW1pcnJvci5jc3MnO1xuaW1wb3J0ICcuL2Nzcy9mb2xkZ3V0dGVyLmNzcyc7XG5pbXBvcnQgJy4vY3NzL2luZm8uY3NzJztcbmltcG9ydCAnLi9jc3MvanVtcC5jc3MnO1xuaW1wb3J0ICcuL2Nzcy9saW50LmNzcyc7XG5pbXBvcnQgJy4vY3NzL2xvYWRpbmcuY3NzJztcbmltcG9ydCAnLi9jc3Mvc2hvdy1oaW50LmNzcyc7XG5cbmltcG9ydCAnLi9jc3MvZG9jLWV4cGxvcmVyLmNzcyc7XG5pbXBvcnQgJy4vY3NzL2hpc3RvcnkuY3NzJztcblxuaW1wb3J0IHsgR3JhcGhpUUwgfSBmcm9tICcuL2NvbXBvbmVudHMvR3JhcGhpUUwnO1xuLy8gYWRkIHRoZSBzdGF0aWMgZnVuY3Rpb24gaGVyZSBmb3IgQ0ROIG9ubHkuIG90aGVyd2lzZSwgZG9pbmcgdGhpcyBpbiB0aGUgY29tcG9uZW50IGNvdWxkXG4vLyBhZGQgdW53YW50ZWQgZGVwZW5kZW5jaWVzIHRvIHRoZSBidW5kbGUuXG4vLyBAdHMtZXhwZWN0LWVycm9yXG5HcmFwaGlRTC5jcmVhdGVGZXRjaGVyID0gY3JlYXRlR3JhcGhpUUxGZXRjaGVyO1xuXG5leHBvcnQgZGVmYXVsdCBHcmFwaGlRTDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./cdn.ts\n");
|
2945 |
|
2946 | }),
|
2947 |
|
2948 | "./components/DocExplorer.tsx":
|
2949 |
|
2950 |
|
2951 |
|
2952 |
|
2953 | (function(module, exports, __webpack_require__) {
|
2954 |
|
2955 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\"), __webpack_require__(/*! ./DocExplorer/FieldDoc */ \"./components/DocExplorer/FieldDoc.tsx\"), __webpack_require__(/*! ./DocExplorer/SchemaDoc */ \"./components/DocExplorer/SchemaDoc.tsx\"), __webpack_require__(/*! ./DocExplorer/SearchBox */ \"./components/DocExplorer/SearchBox.tsx\"), __webpack_require__(/*! ./DocExplorer/SearchResults */ \"./components/DocExplorer/SearchResults.tsx\"), __webpack_require__(/*! ./DocExplorer/TypeDoc */ \"./components/DocExplorer/TypeDoc.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _graphql, _react2, _FieldDoc, _SchemaDoc, _SearchBox, _SearchResults, _TypeDoc) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.DocExplorer = DocExplorer;\n _react = _interopRequireDefault(_react);\n _FieldDoc = _interopRequireDefault(_FieldDoc);\n _SchemaDoc = _interopRequireDefault(_SchemaDoc);\n _SearchBox = _interopRequireDefault(_SearchBox);\n _SearchResults = _interopRequireDefault(_SearchResults);\n _TypeDoc = _interopRequireDefault(_TypeDoc);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * DocExplorer\n *\n * Shows documentations for GraphQL definitions from the schema.\n *\n */\n function DocExplorer(props) {\n const {\n fetchError,\n isFetching,\n schema: schemaFromContext,\n validationErrors\n } = (0, _react2.useSchemaContext)({\n nonNull: true\n });\n const {\n explorerNavStack,\n hide,\n pop,\n showSearch\n } = (0, _react2.useExplorerContext)({\n nonNull: true\n });\n const navItem = explorerNavStack[explorerNavStack.length - 1]; // The schema passed via props takes precedence until we remove the prop\n\n const schema = props.schema === undefined ? schemaFromContext : props.schema;\n let content = null;\n\n if (fetchError) {\n content = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"error-container\"\n }, \"Error fetching schema\");\n } else if (validationErrors.length > 0) {\n content = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"error-container\"\n }, \"Schema is invalid: \", validationErrors[0].message);\n } else if (isFetching) {\n // Schema is undefined when it is being loaded via introspection.\n content = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"spinner-container\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"spinner\"\n }));\n } else if (!schema) {\n // Schema is null when it explicitly does not exist, typically due to\n // an error during introspection.\n content = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"error-container\"\n }, \"No Schema Available\");\n } else if (navItem.search) {\n content = /*#__PURE__*/_react.default.createElement(_SearchResults.default, null);\n } else if (explorerNavStack.length === 1) {\n content = /*#__PURE__*/_react.default.createElement(_SchemaDoc.default, null);\n } else if ((0, _graphql.isType)(navItem.def)) {\n content = /*#__PURE__*/_react.default.createElement(_TypeDoc.default, null);\n } else if (navItem.def) {\n content = /*#__PURE__*/_react.default.createElement(_FieldDoc.default, null);\n }\n\n const shouldSearchBoxAppear = explorerNavStack.length === 1 || (0, _graphql.isType)(navItem.def) && 'getFields' in navItem.def;\n let prevName;\n\n if (explorerNavStack.length > 1) {\n prevName = explorerNavStack[explorerNavStack.length - 2].name;\n }\n\n return /*#__PURE__*/_react.default.createElement(\"section\", {\n className: \"doc-explorer\",\n key: navItem.name,\n \"aria-label\": \"Documentation Explorer\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-explorer-title-bar\"\n }, prevName && /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"doc-explorer-back\",\n onClick: pop,\n \"aria-label\": `Go back to ${prevName}`\n }, prevName), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-explorer-title\"\n }, navItem.title || navItem.name), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-explorer-rhs\"\n }, /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"docExplorerHide\",\n onClick: () => {\n var _props$onClose;\n\n hide();\n (_props$onClose = props.onClose) === null || _props$onClose === void 0 ? void 0 : _props$onClose.call(props);\n },\n \"aria-label\": \"Close Documentation Explorer\"\n }, '\\u2715'))), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-explorer-contents\"\n }, shouldSearchBoxAppear && /*#__PURE__*/_react.default.createElement(_SearchBox.default, {\n value: navItem.search,\n placeholder: `Search ${navItem.name}...`,\n onSearch: showSearch\n }), content));\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyLnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9Eb2NFeHBsb3Jlci50c3g/NmViZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgR3JhcGhRTFNjaGVtYSwgaXNUeXBlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyB1c2VFeHBsb3JlckNvbnRleHQsIHVzZVNjaGVtYUNvbnRleHQgfSBmcm9tICdAZ3JhcGhpcWwvcmVhY3QnO1xuXG5pbXBvcnQgRmllbGREb2MgZnJvbSAnLi9Eb2NFeHBsb3Jlci9GaWVsZERvYyc7XG5pbXBvcnQgU2NoZW1hRG9jIGZyb20gJy4vRG9jRXhwbG9yZXIvU2NoZW1hRG9jJztcbmltcG9ydCBTZWFyY2hCb3ggZnJvbSAnLi9Eb2NFeHBsb3Jlci9TZWFyY2hCb3gnO1xuaW1wb3J0IFNlYXJjaFJlc3VsdHMgZnJvbSAnLi9Eb2NFeHBsb3Jlci9TZWFyY2hSZXN1bHRzJztcbmltcG9ydCBUeXBlRG9jIGZyb20gJy4vRG9jRXhwbG9yZXIvVHlwZURvYyc7XG5cbnR5cGUgRG9jRXhwbG9yZXJQcm9wcyA9IHtcbiAgb25DbG9zZT8oKTogdm9pZDtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBhc3NpbmcgYSBzY2hlbWEgcHJvcCBkaXJlY3RseSB0byB0aGlzIGNvbXBvbmVudCB3aWxsIGJlXG4gICAqIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbi4gSW5zdGVhZCB5b3UgbmVlZCB0byB3cmFwIHRoaXMgY29tcG9uZW50XG4gICAqIHdpdGggdGhlIGBTY2hlbWFDb250ZXh0UHJvdmlkZXJgIGZyb20gYEBncmFwaGlxbC9yZWFjdGAuIFRoaXMgY29udGV4dFxuICAgKiBwcm92aWRlciBhY2NlcHRzIGEgYHNjaGVtYWAgcHJvcCB0aGF0IHlvdSBjYW4gdXNlIHRvIHNraXAgZmV0Y2hpbmcgdGhlXG4gICAqIHNjaGVtYSB3aXRoIGFuIGludHJvc3BlY3Rpb24gcmVxdWVzdC5cbiAgICovXG4gIHNjaGVtYT86IEdyYXBoUUxTY2hlbWEgfCBudWxsO1xufTtcblxuLyoqXG4gKiBEb2NFeHBsb3JlclxuICpcbiAqIFNob3dzIGRvY3VtZW50YXRpb25zIGZvciBHcmFwaFFMIGRlZmluaXRpb25zIGZyb20gdGhlIHNjaGVtYS5cbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEb2NFeHBsb3Jlcihwcm9wczogRG9jRXhwbG9yZXJQcm9wcykge1xuICBjb25zdCB7XG4gICAgZmV0Y2hFcnJvcixcbiAgICBpc0ZldGNoaW5nLFxuICAgIHNjaGVtYTogc2NoZW1hRnJvbUNvbnRleHQsXG4gICAgdmFsaWRhdGlvbkVycm9ycyxcbiAgfSA9IHVzZVNjaGVtYUNvbnRleHQoeyBub25OdWxsOiB0cnVlIH0pO1xuICBjb25zdCB7IGV4cGxvcmVyTmF2U3RhY2ssIGhpZGUsIHBvcCwgc2hvd1NlYXJjaCB9ID0gdXNlRXhwbG9yZXJDb250ZXh0KHtcbiAgICBub25OdWxsOiB0cnVlLFxuICB9KTtcblxuICBjb25zdCBuYXZJdGVtID0gZXhwbG9yZXJOYXZTdGFja1tleHBsb3Jlck5hdlN0YWNrLmxlbmd0aCAtIDFdO1xuXG4gIC8vIFRoZSBzY2hlbWEgcGFzc2VkIHZpYSBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIHVudGlsIHdlIHJlbW92ZSB0aGUgcHJvcFxuICBjb25zdCBzY2hlbWEgPSBwcm9wcy5zY2hlbWEgPT09IHVuZGVmaW5lZCA/IHNjaGVtYUZyb21Db250ZXh0IDogcHJvcHMuc2NoZW1hO1xuXG4gIGxldCBjb250ZW50OiBSZWFjdE5vZGUgPSBudWxsO1xuICBpZiAoZmV0Y2hFcnJvcikge1xuICAgIGNvbnRlbnQgPSA8ZGl2IGNsYXNzTmFtZT1cImVycm9yLWNvbnRhaW5lclwiPkVycm9yIGZldGNoaW5nIHNjaGVtYTwvZGl2PjtcbiAgfSBlbHNlIGlmICh2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICBjb250ZW50ID0gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJlcnJvci1jb250YWluZXJcIj5cbiAgICAgICAgU2NoZW1hIGlzIGludmFsaWQ6IHt2YWxpZGF0aW9uRXJyb3JzWzBdLm1lc3NhZ2V9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9IGVsc2UgaWYgKGlzRmV0Y2hpbmcpIHtcbiAgICAvLyBTY2hlbWEgaXMgdW5kZWZpbmVkIHdoZW4gaXQgaXMgYmVpbmcgbG9hZGVkIHZpYSBpbnRyb3NwZWN0aW9uLlxuICAgIGNvbnRlbnQgPSAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3Bpbm5lclwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9IGVsc2UgaWYgKCFzY2hlbWEpIHtcbiAgICAvLyBTY2hlbWEgaXMgbnVsbCB3aGVuIGl0IGV4cGxpY2l0bHkgZG9lcyBub3QgZXhpc3QsIHR5cGljYWxseSBkdWUgdG9cbiAgICAvLyBhbiBlcnJvciBkdXJpbmcgaW50cm9zcGVjdGlvbi5cbiAgICBjb250ZW50ID0gPGRpdiBjbGFzc05hbWU9XCJlcnJvci1jb250YWluZXJcIj5ObyBTY2hlbWEgQXZhaWxhYmxlPC9kaXY+O1xuICB9IGVsc2UgaWYgKG5hdkl0ZW0uc2VhcmNoKSB7XG4gICAgY29udGVudCA9IDxTZWFyY2hSZXN1bHRzIC8+O1xuICB9IGVsc2UgaWYgKGV4cGxvcmVyTmF2U3RhY2subGVuZ3RoID09PSAxKSB7XG4gICAgY29udGVudCA9IDxTY2hlbWFEb2MgLz47XG4gIH0gZWxzZSBpZiAoaXNUeXBlKG5hdkl0ZW0uZGVmKSkge1xuICAgIGNvbnRlbnQgPSA8VHlwZURvYyAvPjtcbiAgfSBlbHNlIGlmIChuYXZJdGVtLmRlZikge1xuICAgIGNvbnRlbnQgPSA8RmllbGREb2MgLz47XG4gIH1cblxuICBjb25zdCBzaG91bGRTZWFyY2hCb3hBcHBlYXIgPVxuICAgIGV4cGxvcmVyTmF2U3RhY2subGVuZ3RoID09PSAxIHx8XG4gICAgKGlzVHlwZShuYXZJdGVtLmRlZikgJiYgJ2dldEZpZWxkcycgaW4gbmF2SXRlbS5kZWYpO1xuXG4gIGxldCBwcmV2TmFtZTtcbiAgaWYgKGV4cGxvcmVyTmF2U3RhY2subGVuZ3RoID4gMSkge1xuICAgIHByZXZOYW1lID0gZXhwbG9yZXJOYXZTdGFja1tleHBsb3Jlck5hdlN0YWNrLmxlbmd0aCAtIDJdLm5hbWU7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uXG4gICAgICBjbGFzc05hbWU9XCJkb2MtZXhwbG9yZXJcIlxuICAgICAga2V5PXtuYXZJdGVtLm5hbWV9XG4gICAgICBhcmlhLWxhYmVsPVwiRG9jdW1lbnRhdGlvbiBFeHBsb3JlclwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtZXhwbG9yZXItdGl0bGUtYmFyXCI+XG4gICAgICAgIHtwcmV2TmFtZSAmJiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZG9jLWV4cGxvcmVyLWJhY2tcIlxuICAgICAgICAgICAgb25DbGljaz17cG9wfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD17YEdvIGJhY2sgdG8gJHtwcmV2TmFtZX1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtwcmV2TmFtZX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtZXhwbG9yZXItdGl0bGVcIj5cbiAgICAgICAgICB7bmF2SXRlbS50aXRsZSB8fCBuYXZJdGVtLm5hbWV9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1leHBsb3Jlci1yaHNcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJkb2NFeHBsb3JlckhpZGVcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBoaWRlKCk7XG4gICAgICAgICAgICAgIHByb3BzLm9uQ2xvc2U/LigpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBEb2N1bWVudGF0aW9uIEV4cGxvcmVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7J1xcdTI3MTUnfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtZXhwbG9yZXItY29udGVudHNcIj5cbiAgICAgICAge3Nob3VsZFNlYXJjaEJveEFwcGVhciAmJiAoXG4gICAgICAgICAgPFNlYXJjaEJveFxuICAgICAgICAgICAgdmFsdWU9e25hdkl0ZW0uc2VhcmNofVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2BTZWFyY2ggJHtuYXZJdGVtLm5hbWV9Li4uYH1cbiAgICAgICAgICAgIG9uU2VhcmNoPXtzaG93U2VhcmNofVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtjb250ZW50fVxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFJQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBSEE7QUFRQTtBQUFBO0FBR0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVlBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFIQTtBQVVBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/DocExplorer.tsx\n");
|
2956 |
|
2957 | }),
|
2958 |
|
2959 | "./components/DocExplorer/Argument.tsx":
|
2960 |
|
2961 |
|
2962 |
|
2963 |
|
2964 | (function(module, exports, __webpack_require__) {
|
2965 |
|
2966 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ./TypeLink */ \"./components/DocExplorer/TypeLink.tsx\"), __webpack_require__(/*! ./DefaultValue */ \"./components/DocExplorer/DefaultValue.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _TypeLink, _DefaultValue) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = Argument;\n _react = _interopRequireDefault(_react);\n _TypeLink = _interopRequireDefault(_TypeLink);\n _DefaultValue = _interopRequireDefault(_DefaultValue);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function Argument(_ref) {\n let {\n arg,\n showDefaultValue\n } = _ref;\n return /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"arg\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"arg-name\"\n }, arg.name), ': ', /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: arg.type\n }), showDefaultValue !== false && /*#__PURE__*/_react.default.createElement(_DefaultValue.default, {\n field: arg\n }));\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL0FyZ3VtZW50LnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9Eb2NFeHBsb3Jlci9Bcmd1bWVudC50c3g/ZTNiMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgR3JhcGhRTEFyZ3VtZW50IH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgVHlwZUxpbmsgZnJvbSAnLi9UeXBlTGluayc7XG5pbXBvcnQgRGVmYXVsdFZhbHVlIGZyb20gJy4vRGVmYXVsdFZhbHVlJztcblxudHlwZSBBcmd1bWVudFByb3BzID0ge1xuICBhcmc6IEdyYXBoUUxBcmd1bWVudDtcbiAgc2hvd0RlZmF1bHRWYWx1ZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBcmd1bWVudCh7IGFyZywgc2hvd0RlZmF1bHRWYWx1ZSB9OiBBcmd1bWVudFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPVwiYXJnXCI+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJhcmctbmFtZVwiPnthcmcubmFtZX08L3NwYW4+XG4gICAgICB7JzogJ31cbiAgICAgIDxUeXBlTGluayB0eXBlPXthcmcudHlwZX0gLz5cbiAgICAgIHtzaG93RGVmYXVsdFZhbHVlICE9PSBmYWxzZSAmJiA8RGVmYXVsdFZhbHVlIGZpZWxkPXthcmd9IC8+fVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFZQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/DocExplorer/Argument.tsx\n");
|
2967 |
|
2968 | }),
|
2969 |
|
2970 | "./components/DocExplorer/DefaultValue.tsx":
|
2971 |
|
2972 |
|
2973 |
|
2974 |
|
2975 | (function(module, exports, __webpack_require__) {
|
2976 |
|
2977 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _graphql) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = DefaultValue;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n const printDefault = ast => {\n if (!ast) {\n return '';\n }\n\n return (0, _graphql.print)(ast);\n };\n\n function DefaultValue(_ref) {\n let {\n field\n } = _ref;\n\n // field.defaultValue could be null or false, so be careful here!\n if ('defaultValue' in field && field.defaultValue !== undefined) {\n return /*#__PURE__*/_react.default.createElement(\"span\", null, ' = ', /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"arg-default-value\"\n }, printDefault((0, _graphql.astFromValue)(field.defaultValue, field.type))));\n }\n\n return null;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL0RlZmF1bHRWYWx1ZS50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvRG9jRXhwbG9yZXIvRGVmYXVsdFZhbHVlLnRzeD9mYTdlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhc3RGcm9tVmFsdWUsIHByaW50LCBWYWx1ZU5vZGUgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IEV4cGxvcmVyRmllbGREZWYgfSBmcm9tICdAZ3JhcGhpcWwvcmVhY3QnO1xuXG5jb25zdCBwcmludERlZmF1bHQgPSAoYXN0PzogVmFsdWVOb2RlIHwgbnVsbCk6IHN0cmluZyA9PiB7XG4gIGlmICghYXN0KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBwcmludChhc3QpO1xufTtcblxudHlwZSBEZWZhdWx0VmFsdWVQcm9wcyA9IHtcbiAgZmllbGQ6IEV4cGxvcmVyRmllbGREZWY7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEZWZhdWx0VmFsdWUoeyBmaWVsZCB9OiBEZWZhdWx0VmFsdWVQcm9wcykge1xuICAvLyBmaWVsZC5kZWZhdWx0VmFsdWUgY291bGQgYmUgbnVsbCBvciBmYWxzZSwgc28gYmUgY2FyZWZ1bCBoZXJlIVxuICBpZiAoJ2RlZmF1bHRWYWx1ZScgaW4gZmllbGQgJiYgZmllbGQuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW4+XG4gICAgICAgIHsnID0gJ31cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYXJnLWRlZmF1bHQtdmFsdWVcIj5cbiAgICAgICAgICB7cHJpbnREZWZhdWx0KGFzdEZyb21WYWx1ZShmaWVsZC5kZWZhdWx0VmFsdWUsIGZpZWxkLnR5cGUpKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUtBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/DocExplorer/DefaultValue.tsx\n");
|
2978 |
|
2979 | }),
|
2980 |
|
2981 | "./components/DocExplorer/Directive.tsx":
|
2982 |
|
2983 |
|
2984 |
|
2985 |
|
2986 | (function(module, exports, __webpack_require__) {
|
2987 |
|
2988 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = Directive;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function Directive(_ref) {\n let {\n directive\n } = _ref;\n return /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"doc-category-item\",\n id: directive.name.value\n }, \"@\", directive.name.value);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL0RpcmVjdGl2ZS50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvRG9jRXhwbG9yZXIvRGlyZWN0aXZlLnRzeD83OGM4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBEaXJlY3RpdmVOb2RlIH0gZnJvbSAnZ3JhcGhxbCc7XG5cbnR5cGUgRGlyZWN0aXZlUHJvcHMgPSB7XG4gIGRpcmVjdGl2ZTogRGlyZWN0aXZlTm9kZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERpcmVjdGl2ZSh7IGRpcmVjdGl2ZSB9OiBEaXJlY3RpdmVQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS1pdGVtXCIgaWQ9e2RpcmVjdGl2ZS5uYW1lLnZhbHVlfT5cbiAgICAgIEB7ZGlyZWN0aXZlLm5hbWUudmFsdWV9XG4gICAgPC9zcGFuPlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFTQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/DocExplorer/Directive.tsx\n");
|
2989 |
|
2990 | }),
|
2991 |
|
2992 | "./components/DocExplorer/FieldDoc.tsx":
|
2993 |
|
2994 |
|
2995 |
|
2996 |
|
2997 | (function(module, exports, __webpack_require__) {
|
2998 |
|
2999 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\"), __webpack_require__(/*! ./Argument */ \"./components/DocExplorer/Argument.tsx\"), __webpack_require__(/*! ./Directive */ \"./components/DocExplorer/Directive.tsx\"), __webpack_require__(/*! ./MarkdownContent */ \"./components/DocExplorer/MarkdownContent.tsx\"), __webpack_require__(/*! ./TypeLink */ \"./components/DocExplorer/TypeLink.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _graphql, _react2, _Argument, _Directive, _MarkdownContent, _TypeLink) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = FieldDoc;\n _react = _interopRequireDefault(_react);\n _Argument = _interopRequireDefault(_Argument);\n _Directive = _interopRequireDefault(_Directive);\n _MarkdownContent = _interopRequireDefault(_MarkdownContent);\n _TypeLink = _interopRequireDefault(_TypeLink);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function FieldDoc() {\n var _field$astNode;\n\n const {\n explorerNavStack\n } = (0, _react2.useExplorerContext)({\n nonNull: true\n });\n\n const [showDeprecated, handleShowDeprecated] = _react.default.useState(false);\n\n const navItem = explorerNavStack[explorerNavStack.length - 1];\n const field = navItem.def;\n\n if (!field || (0, _graphql.isType)(field)) {\n return null;\n }\n\n let argsDef;\n let deprecatedArgsDef;\n\n if (field && 'args' in field && field.args.length > 0) {\n argsDef = /*#__PURE__*/_react.default.createElement(\"div\", {\n id: \"doc-args\",\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, \"arguments\"), field.args.filter(arg => !arg.deprecationReason).map(arg => /*#__PURE__*/_react.default.createElement(\"div\", {\n key: arg.name,\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(_Argument.default, {\n arg: arg\n })), /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-value-description\",\n markdown: arg.description\n }), arg && 'deprecationReason' in arg && /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-deprecation\",\n markdown: arg === null || arg === void 0 ? void 0 : arg.deprecationReason\n }))));\n const deprecatedArgs = field.args.filter(arg => Boolean(arg.deprecationReason));\n\n if (deprecatedArgs.length > 0) {\n deprecatedArgsDef = /*#__PURE__*/_react.default.createElement(\"div\", {\n id: \"doc-deprecated-args\",\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, \"deprecated arguments\"), !showDeprecated ? /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"show-btn\",\n onClick: () => handleShowDeprecated(!showDeprecated)\n }, \"Show deprecated arguments...\") : deprecatedArgs.map((arg, i) => /*#__PURE__*/_react.default.createElement(\"div\", {\n key: i\n }, /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(_Argument.default, {\n arg: arg\n })), /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-value-description\",\n markdown: arg.description\n }), arg && 'deprecationReason' in arg && /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-deprecation\",\n markdown: arg === null || arg === void 0 ? void 0 : arg.deprecationReason\n }))));\n }\n }\n\n let directivesDef;\n\n if (field !== null && field !== void 0 && (_field$astNode = field.astNode) !== null && _field$astNode !== void 0 && _field$astNode.directives && field.astNode.directives.length > 0) {\n directivesDef = /*#__PURE__*/_react.default.createElement(\"div\", {\n id: \"doc-directives\",\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, \"directives\"), field.astNode.directives.map(directive => /*#__PURE__*/_react.default.createElement(\"div\", {\n key: directive.name.value,\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(_Directive.default, {\n directive: directive\n })))));\n }\n\n return /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-type-description\",\n markdown: field.description || 'No Description'\n }), field && 'deprecationReason' in field && /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-deprecation\",\n markdown: field.deprecationReason\n }), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, \"type\"), /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: field.type\n })), argsDef, directivesDef, deprecatedArgsDef);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL0ZpZWxkRG9jLnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9Eb2NFeHBsb3Jlci9GaWVsZERvYy50c3g/Yzc4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgR3JhcGhRTEFyZ3VtZW50LCBEaXJlY3RpdmVOb2RlLCBpc1R5cGUgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IHVzZUV4cGxvcmVyQ29udGV4dCB9IGZyb20gJ0BncmFwaGlxbC9yZWFjdCc7XG5cbmltcG9ydCBBcmd1bWVudCBmcm9tICcuL0FyZ3VtZW50JztcbmltcG9ydCBEaXJlY3RpdmUgZnJvbSAnLi9EaXJlY3RpdmUnO1xuaW1wb3J0IE1hcmtkb3duQ29udGVudCBmcm9tICcuL01hcmtkb3duQ29udGVudCc7XG5pbXBvcnQgVHlwZUxpbmsgZnJvbSAnLi9UeXBlTGluayc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZpZWxkRG9jKCkge1xuICBjb25zdCB7IGV4cGxvcmVyTmF2U3RhY2sgfSA9IHVzZUV4cGxvcmVyQ29udGV4dCh7IG5vbk51bGw6IHRydWUgfSk7XG4gIGNvbnN0IFtzaG93RGVwcmVjYXRlZCwgaGFuZGxlU2hvd0RlcHJlY2F0ZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG5hdkl0ZW0gPSBleHBsb3Jlck5hdlN0YWNrW2V4cGxvcmVyTmF2U3RhY2subGVuZ3RoIC0gMV07XG4gIGNvbnN0IGZpZWxkID0gbmF2SXRlbS5kZWY7XG4gIGlmICghZmllbGQgfHwgaXNUeXBlKGZpZWxkKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbGV0IGFyZ3NEZWY7XG4gIGxldCBkZXByZWNhdGVkQXJnc0RlZjtcbiAgaWYgKGZpZWxkICYmICdhcmdzJyBpbiBmaWVsZCAmJiBmaWVsZC5hcmdzLmxlbmd0aCA+IDApIHtcbiAgICBhcmdzRGVmID0gKFxuICAgICAgPGRpdiBpZD1cImRvYy1hcmdzXCIgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5LXRpdGxlXCI+YXJndW1lbnRzPC9kaXY+XG4gICAgICAgIHtmaWVsZC5hcmdzXG4gICAgICAgICAgLmZpbHRlcihhcmcgPT4gIWFyZy5kZXByZWNhdGlvblJlYXNvbilcbiAgICAgICAgICAubWFwKChhcmc6IEdyYXBoUUxBcmd1bWVudCkgPT4gKFxuICAgICAgICAgICAgPGRpdiBrZXk9e2FyZy5uYW1lfSBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktaXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxBcmd1bWVudCBhcmc9e2FyZ30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxNYXJrZG93bkNvbnRlbnRcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJkb2MtdmFsdWUtZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIG1hcmtkb3duPXthcmcuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIHthcmcgJiYgJ2RlcHJlY2F0aW9uUmVhc29uJyBpbiBhcmcgJiYgKFxuICAgICAgICAgICAgICAgIDxNYXJrZG93bkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRvYy1kZXByZWNhdGlvblwiXG4gICAgICAgICAgICAgICAgICBtYXJrZG93bj17YXJnPy5kZXByZWNhdGlvblJlYXNvbn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICAgIGNvbnN0IGRlcHJlY2F0ZWRBcmdzID0gZmllbGQuYXJncy5maWx0ZXIoYXJnID0+XG4gICAgICBCb29sZWFuKGFyZy5kZXByZWNhdGlvblJlYXNvbiksXG4gICAgKTtcbiAgICBpZiAoZGVwcmVjYXRlZEFyZ3MubGVuZ3RoID4gMCkge1xuICAgICAgZGVwcmVjYXRlZEFyZ3NEZWYgPSAoXG4gICAgICAgIDxkaXYgaWQ9XCJkb2MtZGVwcmVjYXRlZC1hcmdzXCIgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktdGl0bGVcIj5kZXByZWNhdGVkIGFyZ3VtZW50czwvZGl2PlxuICAgICAgICAgIHshc2hvd0RlcHJlY2F0ZWQgPyAoXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNob3ctYnRuXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2hvd0RlcHJlY2F0ZWQoIXNob3dEZXByZWNhdGVkKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgU2hvdyBkZXByZWNhdGVkIGFyZ3VtZW50cy4uLlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIGRlcHJlY2F0ZWRBcmdzLm1hcCgoYXJnLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxkaXYga2V5PXtpfT5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPEFyZ3VtZW50IGFyZz17YXJnfSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxNYXJrZG93bkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRvYy12YWx1ZS1kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICBtYXJrZG93bj17YXJnLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAge2FyZyAmJiAnZGVwcmVjYXRpb25SZWFzb24nIGluIGFyZyAmJiAoXG4gICAgICAgICAgICAgICAgICA8TWFya2Rvd25Db250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRvYy1kZXByZWNhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG1hcmtkb3duPXthcmc/LmRlcHJlY2F0aW9uUmVhc29ufVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGxldCBkaXJlY3RpdmVzRGVmO1xuICBpZiAoZmllbGQ/LmFzdE5vZGU/LmRpcmVjdGl2ZXMgJiYgZmllbGQuYXN0Tm9kZS5kaXJlY3RpdmVzLmxlbmd0aCA+IDApIHtcbiAgICBkaXJlY3RpdmVzRGVmID0gKFxuICAgICAgPGRpdiBpZD1cImRvYy1kaXJlY3RpdmVzXCIgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5LXRpdGxlXCI+ZGlyZWN0aXZlczwvZGl2PlxuICAgICAgICB7ZmllbGQuYXN0Tm9kZS5kaXJlY3RpdmVzLm1hcCgoZGlyZWN0aXZlOiBEaXJlY3RpdmVOb2RlKSA9PiAoXG4gICAgICAgICAgPGRpdiBrZXk9e2RpcmVjdGl2ZS5uYW1lLnZhbHVlfSBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktaXRlbVwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPERpcmVjdGl2ZSBkaXJlY3RpdmU9e2RpcmVjdGl2ZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8TWFya2Rvd25Db250ZW50XG4gICAgICAgIGNsYXNzTmFtZT1cImRvYy10eXBlLWRlc2NyaXB0aW9uXCJcbiAgICAgICAgbWFya2Rvd249e2ZpZWxkLmRlc2NyaXB0aW9uIHx8ICdObyBEZXNjcmlwdGlvbid9XG4gICAgICAvPlxuICAgICAge2ZpZWxkICYmICdkZXByZWNhdGlvblJlYXNvbicgaW4gZmllbGQgJiYgKFxuICAgICAgICA8TWFya2Rvd25Db250ZW50XG4gICAgICAgICAgY2xhc3NOYW1lPVwiZG9jLWRlcHJlY2F0aW9uXCJcbiAgICAgICAgICBtYXJrZG93bj17ZmllbGQuZGVwcmVjYXRpb25SZWFzb259XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnlcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktdGl0bGVcIj50eXBlPC9kaXY+XG4gICAgICAgIDxUeXBlTGluayB0eXBlPXtmaWVsZC50eXBlfSAvPlxuICAgICAgPC9kaXY+XG4gICAgICB7YXJnc0RlZn1cbiAgICAgIHtkaXJlY3RpdmVzRGVmfVxuICAgICAge2RlcHJlY2F0ZWRBcmdzRGVmfVxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBV0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBR0E7QUFDQTtBQUZBO0FBTUE7QUFDQTtBQUZBO0FBU0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUZBO0FBUUE7QUFBQTtBQUVBO0FBQUE7QUFHQTtBQUNBO0FBRkE7QUFNQTtBQUNBO0FBRkE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBTUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUZBO0FBTUE7QUFDQTtBQUZBO0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBT0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/DocExplorer/FieldDoc.tsx\n");
|
3000 |
|
3001 | }),
|
3002 |
|
3003 | "./components/DocExplorer/FieldLink.tsx":
|
3004 |
|
3005 |
|
3006 |
|
3007 |
|
3008 | (function(module, exports, __webpack_require__) {
|
3009 |
|
3010 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _react2) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = FieldLink;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2022 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function FieldLink(props) {\n const {\n push\n } = (0, _react2.useExplorerContext)({\n nonNull: true\n });\n return /*#__PURE__*/_react.default.createElement(\"a\", {\n className: \"field-name\",\n onClick: event => {\n event.preventDefault();\n push({\n name: props.field.name,\n def: props.field\n });\n },\n href: \"#\"\n }, props.field.name);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL0ZpZWxkTGluay50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvRG9jRXhwbG9yZXIvRmllbGRMaW5rLnRzeD9mNmMyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMiBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IEV4cGxvcmVyRmllbGREZWYsIHVzZUV4cGxvcmVyQ29udGV4dCB9IGZyb20gJ0BncmFwaGlxbC9yZWFjdCc7XG5cbnR5cGUgRmllbGRMaW5rUHJvcHMgPSB7XG4gIGZpZWxkOiBFeHBsb3JlckZpZWxkRGVmO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmllbGRMaW5rKHByb3BzOiBGaWVsZExpbmtQcm9wcykge1xuICBjb25zdCB7IHB1c2ggfSA9IHVzZUV4cGxvcmVyQ29udGV4dCh7IG5vbk51bGw6IHRydWUgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8YVxuICAgICAgY2xhc3NOYW1lPVwiZmllbGQtbmFtZVwiXG4gICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHB1c2goeyBuYW1lOiBwcm9wcy5maWVsZC5uYW1lLCBkZWY6IHByb3BzLmZpZWxkIH0pO1xuICAgICAgfX1cbiAgICAgIGhyZWY9XCIjXCJcbiAgICA+XG4gICAgICB7cHJvcHMuZmllbGQubmFtZX1cbiAgICA8L2E+XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBTkE7QUFXQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/DocExplorer/FieldLink.tsx\n");
|
3011 |
|
3012 | }),
|
3013 |
|
3014 | "./components/DocExplorer/MarkdownContent.tsx":
|
3015 |
|
3016 |
|
3017 |
|
3018 |
|
3019 | (function(module, exports, __webpack_require__) {
|
3020 |
|
3021 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! markdown-it */ \"../../../node_modules/markdown-it/index.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _markdownIt) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = MarkdownContent;\n _react = _interopRequireDefault(_react);\n _markdownIt = _interopRequireDefault(_markdownIt);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n const md = new _markdownIt.default({\n // render urls as links, à la github-flavored markdown\n breaks: true,\n linkify: true\n });\n\n function MarkdownContent(_ref) {\n let {\n markdown,\n className\n } = _ref;\n\n if (!markdown) {\n return /*#__PURE__*/_react.default.createElement(\"div\", null);\n }\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: className,\n dangerouslySetInnerHTML: {\n __html: md.render(markdown)\n }\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL01hcmtkb3duQ29udGVudC50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvRG9jRXhwbG9yZXIvTWFya2Rvd25Db250ZW50LnRzeD85YzIxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTUQgZnJvbSAnbWFya2Rvd24taXQnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmNvbnN0IG1kID0gbmV3IE1EKHtcbiAgLy8gcmVuZGVyIHVybHMgYXMgbGlua3MsIMOgIGxhIGdpdGh1Yi1mbGF2b3JlZCBtYXJrZG93blxuICBicmVha3M6IHRydWUsXG4gIGxpbmtpZnk6IHRydWUsXG59KTtcblxudHlwZSBNYXJrZG93bkNvbnRlbnRQcm9wcyA9IHtcbiAgbWFya2Rvd24/OiBNYXliZTxzdHJpbmc+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNYXJrZG93bkNvbnRlbnQoe1xuICBtYXJrZG93bixcbiAgY2xhc3NOYW1lLFxufTogTWFya2Rvd25Db250ZW50UHJvcHMpIHtcbiAgaWYgKCFtYXJrZG93bikge1xuICAgIHJldHVybiA8ZGl2IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogbWQucmVuZGVyKG1hcmtkb3duKSB9fVxuICAgIC8+XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFVQTtBQUdBO0FBRkE7QUFDQTtBQUZBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUtBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/DocExplorer/MarkdownContent.tsx\n");
|
3022 |
|
3023 | }),
|
3024 |
|
3025 | "./components/DocExplorer/SchemaDoc.tsx":
|
3026 |
|
3027 |
|
3028 |
|
3029 |
|
3030 | (function(module, exports, __webpack_require__) {
|
3031 |
|
3032 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ./TypeLink */ \"./components/DocExplorer/TypeLink.tsx\"), __webpack_require__(/*! ./MarkdownContent */ \"./components/DocExplorer/MarkdownContent.tsx\"), __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _TypeLink, _MarkdownContent, _react2) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = SchemaDoc;\n _react = _interopRequireDefault(_react);\n _TypeLink = _interopRequireDefault(_TypeLink);\n _MarkdownContent = _interopRequireDefault(_MarkdownContent);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n // Render the top level Schema\n function SchemaDoc() {\n var _schema$getMutationTy, _schema$getSubscripti;\n\n const {\n schema\n } = (0, _react2.useSchemaContext)({\n nonNull: true\n });\n\n if (!schema) {\n return null;\n }\n\n const queryType = schema.getQueryType();\n const mutationType = (_schema$getMutationTy = schema.getMutationType) === null || _schema$getMutationTy === void 0 ? void 0 : _schema$getMutationTy.call(schema);\n const subscriptionType = (_schema$getSubscripti = schema.getSubscriptionType) === null || _schema$getSubscripti === void 0 ? void 0 : _schema$getSubscripti.call(schema);\n return /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-type-description\",\n markdown: schema.description || 'A GraphQL schema provides a root type for each kind of operation.'\n }), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, \"root types\"), queryType ? /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"keyword\"\n }, \"query\"), ': ', /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: queryType\n })) : null, mutationType && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"keyword\"\n }, \"mutation\"), ': ', /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: mutationType\n })), subscriptionType && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"keyword\"\n }, \"subscription\"), ': ', /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: subscriptionType\n }))));\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1NjaGVtYURvYy50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvRG9jRXhwbG9yZXIvU2NoZW1hRG9jLnRzeD9jODFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVHlwZUxpbmsgZnJvbSAnLi9UeXBlTGluayc7XG5pbXBvcnQgTWFya2Rvd25Db250ZW50IGZyb20gJy4vTWFya2Rvd25Db250ZW50JztcbmltcG9ydCB7IHVzZVNjaGVtYUNvbnRleHQgfSBmcm9tICdAZ3JhcGhpcWwvcmVhY3QnO1xuXG4vLyBSZW5kZXIgdGhlIHRvcCBsZXZlbCBTY2hlbWFcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjaGVtYURvYygpIHtcbiAgY29uc3QgeyBzY2hlbWEgfSA9IHVzZVNjaGVtYUNvbnRleHQoeyBub25OdWxsOiB0cnVlIH0pO1xuXG4gIGlmICghc2NoZW1hKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBxdWVyeVR5cGUgPSBzY2hlbWEuZ2V0UXVlcnlUeXBlKCk7XG4gIGNvbnN0IG11dGF0aW9uVHlwZSA9IHNjaGVtYS5nZXRNdXRhdGlvblR5cGU/LigpO1xuICBjb25zdCBzdWJzY3JpcHRpb25UeXBlID0gc2NoZW1hLmdldFN1YnNjcmlwdGlvblR5cGU/LigpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIDxNYXJrZG93bkNvbnRlbnRcbiAgICAgICAgY2xhc3NOYW1lPVwiZG9jLXR5cGUtZGVzY3JpcHRpb25cIlxuICAgICAgICBtYXJrZG93bj17XG4gICAgICAgICAgc2NoZW1hLmRlc2NyaXB0aW9uIHx8XG4gICAgICAgICAgJ0EgR3JhcGhRTCBzY2hlbWEgcHJvdmlkZXMgYSByb290IHR5cGUgZm9yIGVhY2gga2luZCBvZiBvcGVyYXRpb24uJ1xuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnlcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktdGl0bGVcIj5yb290IHR5cGVzPC9kaXY+XG4gICAgICAgIHtxdWVyeVR5cGUgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktaXRlbVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwia2V5d29yZFwiPnF1ZXJ5PC9zcGFuPlxuICAgICAgICAgICAgeyc6ICd9XG4gICAgICAgICAgICA8VHlwZUxpbmsgdHlwZT17cXVlcnlUeXBlfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAge211dGF0aW9uVHlwZSAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktaXRlbVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwia2V5d29yZFwiPm11dGF0aW9uPC9zcGFuPlxuICAgICAgICAgICAgeyc6ICd9XG4gICAgICAgICAgICA8VHlwZUxpbmsgdHlwZT17bXV0YXRpb25UeXBlfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICB7c3Vic2NyaXB0aW9uVHlwZSAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktaXRlbVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwia2V5d29yZFwiPnN1YnNjcmlwdGlvbjwvc3Bhbj5cbiAgICAgICAgICAgIHsnOiAnfVxuICAgICAgICAgICAgPFR5cGVMaW5rIHR5cGU9e3N1YnNjcmlwdGlvblR5cGV9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBRkE7QUFPQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUlBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUlBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQU1BO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/DocExplorer/SchemaDoc.tsx\n");
|
3033 |
|
3034 | }),
|
3035 |
|
3036 | "./components/DocExplorer/SearchBox.tsx":
|
3037 |
|
3038 |
|
3039 |
|
3040 |
|
3041 | (function(module, exports, __webpack_require__) {
|
3042 |
|
3043 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ../../utility/debounce */ \"./utility/debounce.ts\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _debounce) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n _react = _interopRequireDefault(_react);\n _debounce = _interopRequireDefault(_debounce);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n class SearchBox extends _react.default.Component {\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"handleChange\", event => {\n const value = event.currentTarget.value;\n this.setState({\n value\n });\n this.debouncedOnSearch(value);\n });\n\n _defineProperty(this, \"handleClear\", () => {\n this.setState({\n value: ''\n });\n this.props.onSearch('');\n });\n\n this.state = {\n value: props.value || ''\n };\n this.debouncedOnSearch = (0, _debounce.default)(200, this.props.onSearch);\n }\n\n render() {\n return /*#__PURE__*/_react.default.createElement(\"label\", {\n className: \"search-box\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-box-icon\",\n \"aria-hidden\": \"true\"\n }, '\\u26b2'), /*#__PURE__*/_react.default.createElement(\"input\", {\n value: this.state.value,\n onChange: this.handleChange,\n type: \"text\",\n placeholder: this.props.placeholder,\n \"aria-label\": this.props.placeholder\n }), this.state.value && /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"search-box-clear\",\n onClick: this.handleClear,\n \"aria-label\": \"Clear search input\"\n }, '\\u2715'));\n }\n\n }\n\n _exports.default = SearchBox;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1NlYXJjaEJveC50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvRG9jRXhwbG9yZXIvU2VhcmNoQm94LnRzeD9lOThlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyBDaGFuZ2VFdmVudEhhbmRsZXIgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBkZWJvdW5jZSBmcm9tICcuLi8uLi91dGlsaXR5L2RlYm91bmNlJztcblxudHlwZSBPblNlYXJjaEZuID0gKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG5cbnR5cGUgU2VhcmNoQm94UHJvcHMgPSB7XG4gIHZhbHVlPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBvblNlYXJjaDogT25TZWFyY2hGbjtcbn07XG5cbnR5cGUgU2VhcmNoQm94U3RhdGUgPSB7XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWFyY2hCb3ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIFNlYXJjaEJveFByb3BzLFxuICBTZWFyY2hCb3hTdGF0ZVxuPiB7XG4gIGRlYm91bmNlZE9uU2VhcmNoOiBPblNlYXJjaEZuO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBTZWFyY2hCb3hQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0geyB2YWx1ZTogcHJvcHMudmFsdWUgfHwgJycgfTtcbiAgICB0aGlzLmRlYm91bmNlZE9uU2VhcmNoID0gZGVib3VuY2UoMjAwLCB0aGlzLnByb3BzLm9uU2VhcmNoKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cInNlYXJjaC1ib3hcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzZWFyY2gtYm94LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICB7J1xcdTI2YjInfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUudmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgICBhcmlhLWxhYmVsPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAvPlxuICAgICAgICB7dGhpcy5zdGF0ZS52YWx1ZSAmJiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPVwic2VhcmNoLWJveC1jbGVhclwiXG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsZWFyfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaCBpbnB1dFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgeydcXHUyNzE1J31cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvbGFiZWw+XG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZTogQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZTtcbiAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWUgfSk7XG4gICAgdGhpcy5kZWJvdW5jZWRPblNlYXJjaCh2YWx1ZSk7XG4gIH07XG5cbiAgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiAnJyB9KTtcbiAgICB0aGlzLnByb3BzLm9uU2VhcmNoKCcnKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBTUE7QUFDQTtBQUNBO0FBRkE7QUFpQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFyQ0E7QUF1Q0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBeENBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBU0E7QUFDQTtBQUNBO0FBSEE7QUFVQTtBQUNBO0FBbENBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/DocExplorer/SearchBox.tsx\n");
|
3044 |
|
3045 | }),
|
3046 |
|
3047 | "./components/DocExplorer/SearchResults.tsx":
|
3048 |
|
3049 |
|
3050 |
|
3051 |
|
3052 | (function(module, exports, __webpack_require__) {
|
3053 |
|
3054 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ./Argument */ \"./components/DocExplorer/Argument.tsx\"), __webpack_require__(/*! ./TypeLink */ \"./components/DocExplorer/TypeLink.tsx\"), __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\"), __webpack_require__(/*! ./FieldLink */ \"./components/DocExplorer/FieldLink.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _Argument, _TypeLink, _react2, _FieldLink) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = SearchResults;\n _react = _interopRequireDefault(_react);\n _Argument = _interopRequireDefault(_Argument);\n _TypeLink = _interopRequireDefault(_TypeLink);\n _FieldLink = _interopRequireDefault(_FieldLink);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function SearchResults() {\n const {\n explorerNavStack\n } = (0, _react2.useExplorerContext)({\n nonNull: true\n });\n const {\n schema\n } = (0, _react2.useSchemaContext)({\n nonNull: true\n });\n const navItem = explorerNavStack[explorerNavStack.length - 1];\n\n if (!schema || !navItem.search) {\n return null;\n }\n\n const searchValue = navItem.search;\n const withinType = navItem.def;\n const matchedWithin = [];\n const matchedTypes = [];\n const matchedFields = [];\n const typeMap = schema.getTypeMap();\n let typeNames = Object.keys(typeMap); // Move the within type name to be the first searched.\n\n if (withinType) {\n typeNames = typeNames.filter(n => n !== withinType.name);\n typeNames.unshift(withinType.name);\n }\n\n for (const typeName of typeNames) {\n if (matchedWithin.length + matchedTypes.length + matchedFields.length >= 100) {\n break;\n }\n\n const type = typeMap[typeName];\n\n if (withinType !== type && isMatch(typeName, searchValue)) {\n matchedTypes.push( /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-item\",\n key: typeName\n }, /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: type\n })));\n }\n\n if (type && 'getFields' in type) {\n const fields = type.getFields();\n Object.keys(fields).forEach(fieldName => {\n const field = fields[fieldName];\n let matchingArgs;\n\n if (!isMatch(fieldName, searchValue)) {\n if ('args' in field && field.args.length) {\n matchingArgs = field.args.filter(arg => isMatch(arg.name, searchValue));\n\n if (matchingArgs.length === 0) {\n return;\n }\n } else {\n return;\n }\n }\n\n const match = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-item\",\n key: typeName + '.' + fieldName\n }, withinType !== type && [/*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n key: \"type\",\n type: type\n }), '.'], /*#__PURE__*/_react.default.createElement(_FieldLink.default, {\n field: field\n }), matchingArgs && ['(', /*#__PURE__*/_react.default.createElement(\"span\", {\n key: \"args\"\n }, matchingArgs.map(arg => /*#__PURE__*/_react.default.createElement(_Argument.default, {\n key: arg.name,\n arg: arg,\n showDefaultValue: false\n }))), ')']);\n\n if (withinType === type) {\n matchedWithin.push(match);\n } else {\n matchedFields.push(match);\n }\n });\n }\n }\n\n if (matchedWithin.length + matchedTypes.length + matchedFields.length === 0) {\n return /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"doc-alert-text\"\n }, \"No results found.\");\n }\n\n if (withinType && matchedTypes.length + matchedFields.length > 0) {\n return /*#__PURE__*/_react.default.createElement(\"div\", null, matchedWithin, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, \"other results\"), matchedTypes, matchedFields));\n }\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-search-items\"\n }, matchedWithin, matchedTypes, matchedFields);\n }\n\n function isMatch(sourceText, searchValue) {\n try {\n const escaped = searchValue.replace(/[^_0-9A-Za-z]/g, ch => '\\\\' + ch);\n return sourceText.search(new RegExp(escaped, 'i')) !== -1;\n } catch (e) {\n return sourceText.toLowerCase().indexOf(searchValue.toLowerCase()) !== -1;\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1NlYXJjaFJlc3VsdHMudHN4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1NlYXJjaFJlc3VsdHMudHN4PzU5MzYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IEFyZ3VtZW50IGZyb20gJy4vQXJndW1lbnQnO1xuaW1wb3J0IFR5cGVMaW5rIGZyb20gJy4vVHlwZUxpbmsnO1xuaW1wb3J0IHsgdXNlRXhwbG9yZXJDb250ZXh0LCB1c2VTY2hlbWFDb250ZXh0IH0gZnJvbSAnQGdyYXBoaXFsL3JlYWN0JztcbmltcG9ydCBGaWVsZExpbmsgZnJvbSAnLi9GaWVsZExpbmsnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZWFyY2hSZXN1bHRzKCkge1xuICBjb25zdCB7IGV4cGxvcmVyTmF2U3RhY2sgfSA9IHVzZUV4cGxvcmVyQ29udGV4dCh7IG5vbk51bGw6IHRydWUgfSk7XG4gIGNvbnN0IHsgc2NoZW1hIH0gPSB1c2VTY2hlbWFDb250ZXh0KHsgbm9uTnVsbDogdHJ1ZSB9KTtcblxuICBjb25zdCBuYXZJdGVtID0gZXhwbG9yZXJOYXZTdGFja1tleHBsb3Jlck5hdlN0YWNrLmxlbmd0aCAtIDFdO1xuXG4gIGlmICghc2NoZW1hIHx8ICFuYXZJdGVtLnNlYXJjaCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3Qgc2VhcmNoVmFsdWUgPSBuYXZJdGVtLnNlYXJjaDtcbiAgY29uc3Qgd2l0aGluVHlwZSA9IG5hdkl0ZW0uZGVmO1xuXG4gIGNvbnN0IG1hdGNoZWRXaXRoaW46IFJlYWN0Tm9kZVtdID0gW107XG4gIGNvbnN0IG1hdGNoZWRUeXBlczogUmVhY3ROb2RlW10gPSBbXTtcbiAgY29uc3QgbWF0Y2hlZEZpZWxkczogUmVhY3ROb2RlW10gPSBbXTtcblxuICBjb25zdCB0eXBlTWFwID0gc2NoZW1hLmdldFR5cGVNYXAoKTtcbiAgbGV0IHR5cGVOYW1lcyA9IE9iamVjdC5rZXlzKHR5cGVNYXApO1xuXG4gIC8vIE1vdmUgdGhlIHdpdGhpbiB0eXBlIG5hbWUgdG8gYmUgdGhlIGZpcnN0IHNlYXJjaGVkLlxuICBpZiAod2l0aGluVHlwZSkge1xuICAgIHR5cGVOYW1lcyA9IHR5cGVOYW1lcy5maWx0ZXIobiA9PiBuICE9PSB3aXRoaW5UeXBlLm5hbWUpO1xuICAgIHR5cGVOYW1lcy51bnNoaWZ0KHdpdGhpblR5cGUubmFtZSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHR5cGVOYW1lIG9mIHR5cGVOYW1lcykge1xuICAgIGlmIChcbiAgICAgIG1hdGNoZWRXaXRoaW4ubGVuZ3RoICsgbWF0Y2hlZFR5cGVzLmxlbmd0aCArIG1hdGNoZWRGaWVsZHMubGVuZ3RoID49XG4gICAgICAxMDBcbiAgICApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGUgPSB0eXBlTWFwW3R5cGVOYW1lXTtcbiAgICBpZiAod2l0aGluVHlwZSAhPT0gdHlwZSAmJiBpc01hdGNoKHR5cGVOYW1lLCBzZWFyY2hWYWx1ZSkpIHtcbiAgICAgIG1hdGNoZWRUeXBlcy5wdXNoKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS1pdGVtXCIga2V5PXt0eXBlTmFtZX0+XG4gICAgICAgICAgPFR5cGVMaW5rIHR5cGU9e3R5cGV9IC8+XG4gICAgICAgIDwvZGl2PixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgJiYgJ2dldEZpZWxkcycgaW4gdHlwZSkge1xuICAgICAgY29uc3QgZmllbGRzID0gdHlwZS5nZXRGaWVsZHMoKTtcbiAgICAgIE9iamVjdC5rZXlzKGZpZWxkcykuZm9yRWFjaChmaWVsZE5hbWUgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkc1tmaWVsZE5hbWVdO1xuICAgICAgICBsZXQgbWF0Y2hpbmdBcmdzO1xuXG4gICAgICAgIGlmICghaXNNYXRjaChmaWVsZE5hbWUsIHNlYXJjaFZhbHVlKSkge1xuICAgICAgICAgIGlmICgnYXJncycgaW4gZmllbGQgJiYgZmllbGQuYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG1hdGNoaW5nQXJncyA9IGZpZWxkLmFyZ3MuZmlsdGVyKGFyZyA9PlxuICAgICAgICAgICAgICBpc01hdGNoKGFyZy5uYW1lLCBzZWFyY2hWYWx1ZSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG1hdGNoaW5nQXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF0Y2ggPSAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktaXRlbVwiIGtleT17dHlwZU5hbWUgKyAnLicgKyBmaWVsZE5hbWV9PlxuICAgICAgICAgICAge3dpdGhpblR5cGUgIT09IHR5cGUgJiYgWzxUeXBlTGluayBrZXk9XCJ0eXBlXCIgdHlwZT17dHlwZX0gLz4sICcuJ119XG4gICAgICAgICAgICA8RmllbGRMaW5rIGZpZWxkPXtmaWVsZH0gLz5cbiAgICAgICAgICAgIHttYXRjaGluZ0FyZ3MgJiYgW1xuICAgICAgICAgICAgICAnKCcsXG4gICAgICAgICAgICAgIDxzcGFuIGtleT1cImFyZ3NcIj5cbiAgICAgICAgICAgICAgICB7bWF0Y2hpbmdBcmdzLm1hcChhcmcgPT4gKFxuICAgICAgICAgICAgICAgICAgPEFyZ3VtZW50IGtleT17YXJnLm5hbWV9IGFyZz17YXJnfSBzaG93RGVmYXVsdFZhbHVlPXtmYWxzZX0gLz5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9zcGFuPixcbiAgICAgICAgICAgICAgJyknLFxuICAgICAgICAgICAgXX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAod2l0aGluVHlwZSA9PT0gdHlwZSkge1xuICAgICAgICAgIG1hdGNoZWRXaXRoaW4ucHVzaChtYXRjaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWF0Y2hlZEZpZWxkcy5wdXNoKG1hdGNoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG1hdGNoZWRXaXRoaW4ubGVuZ3RoICsgbWF0Y2hlZFR5cGVzLmxlbmd0aCArIG1hdGNoZWRGaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT1cImRvYy1hbGVydC10ZXh0XCI+Tm8gcmVzdWx0cyBmb3VuZC48L3NwYW4+O1xuICB9XG5cbiAgaWYgKHdpdGhpblR5cGUgJiYgbWF0Y2hlZFR5cGVzLmxlbmd0aCArIG1hdGNoZWRGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICB7bWF0Y2hlZFdpdGhpbn1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS10aXRsZVwiPm90aGVyIHJlc3VsdHM8L2Rpdj5cbiAgICAgICAgICB7bWF0Y2hlZFR5cGVzfVxuICAgICAgICAgIHttYXRjaGVkRmllbGRzfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLXNlYXJjaC1pdGVtc1wiPlxuICAgICAge21hdGNoZWRXaXRoaW59XG4gICAgICB7bWF0Y2hlZFR5cGVzfVxuICAgICAge21hdGNoZWRGaWVsZHN9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzTWF0Y2goc291cmNlVGV4dDogc3RyaW5nLCBzZWFyY2hWYWx1ZTogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgZXNjYXBlZCA9IHNlYXJjaFZhbHVlLnJlcGxhY2UoL1teXzAtOUEtWmEtel0vZywgY2ggPT4gJ1xcXFwnICsgY2gpO1xuICAgIHJldHVybiBzb3VyY2VUZXh0LnNlYXJjaChuZXcgUmVnRXhwKGVzY2FwZWQsICdpJykpICE9PSAtMTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBzb3VyY2VUZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gLTE7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/DocExplorer/SearchResults.tsx\n");
|
3055 |
|
3056 | }),
|
3057 |
|
3058 | "./components/DocExplorer/TypeDoc.tsx":
|
3059 |
|
3060 |
|
3061 |
|
3062 |
|
3063 | (function(module, exports, __webpack_require__) {
|
3064 |
|
3065 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ./Argument */ \"./components/DocExplorer/Argument.tsx\"), __webpack_require__(/*! ./DefaultValue */ \"./components/DocExplorer/DefaultValue.tsx\"), __webpack_require__(/*! ./FieldLink */ \"./components/DocExplorer/FieldLink.tsx\"), __webpack_require__(/*! ./MarkdownContent */ \"./components/DocExplorer/MarkdownContent.tsx\"), __webpack_require__(/*! ./TypeLink */ \"./components/DocExplorer/TypeLink.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _graphql, _react2, _Argument, _DefaultValue, _FieldLink, _MarkdownContent, _TypeLink) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = TypeDoc;\n _react2 = _interopRequireWildcard(_react2);\n _Argument = _interopRequireDefault(_Argument);\n _DefaultValue = _interopRequireDefault(_DefaultValue);\n _FieldLink = _interopRequireDefault(_FieldLink);\n _MarkdownContent = _interopRequireDefault(_MarkdownContent);\n _TypeLink = _interopRequireDefault(_TypeLink);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\n function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function TypeDoc() {\n const {\n schema\n } = (0, _react.useSchemaContext)({\n nonNull: true\n });\n const {\n explorerNavStack\n } = (0, _react.useExplorerContext)({\n nonNull: true\n });\n const [showDeprecated, setShowDeprecated] = (0, _react2.useState)(false);\n const navItem = explorerNavStack[explorerNavStack.length - 1];\n const type = navItem.def;\n\n if (!schema || !(0, _graphql.isNamedType)(type)) {\n return null;\n }\n\n let typesTitle = null;\n let types = [];\n\n if ((0, _graphql.isUnionType)(type)) {\n typesTitle = 'possible types';\n types = schema.getPossibleTypes(type);\n } else if ((0, _graphql.isInterfaceType)(type)) {\n typesTitle = 'implementations';\n types = schema.getPossibleTypes(type);\n } else if ((0, _graphql.isObjectType)(type)) {\n typesTitle = 'implements';\n types = type.getInterfaces();\n }\n\n let typesDef;\n\n if (types && types.length > 0) {\n typesDef = /*#__PURE__*/_react2.default.createElement(\"div\", {\n id: \"doc-types\",\n className: \"doc-category\"\n }, /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, typesTitle), types.map(subtype => /*#__PURE__*/_react2.default.createElement(\"div\", {\n key: subtype.name,\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react2.default.createElement(_TypeLink.default, {\n type: subtype\n }))));\n } // InputObject and Object\n\n\n let fieldsDef;\n let deprecatedFieldsDef;\n\n if (type && 'getFields' in type) {\n const fieldMap = type.getFields();\n const fields = Object.keys(fieldMap).map(name => fieldMap[name]);\n fieldsDef = /*#__PURE__*/_react2.default.createElement(\"div\", {\n id: \"doc-fields\",\n className: \"doc-category\"\n }, /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, \"fields\"), fields.filter(field => !field.deprecationReason).map(field => /*#__PURE__*/_react2.default.createElement(Field, {\n key: field.name,\n type: type,\n field: field\n })));\n const deprecatedFields = fields.filter(field => Boolean(field.deprecationReason));\n\n if (deprecatedFields.length > 0) {\n deprecatedFieldsDef = /*#__PURE__*/_react2.default.createElement(\"div\", {\n id: \"doc-deprecated-fields\",\n className: \"doc-category\"\n }, /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, \"deprecated fields\"), !showDeprecated ? /*#__PURE__*/_react2.default.createElement(\"button\", {\n className: \"show-btn\",\n onClick: () => {\n setShowDeprecated(true);\n }\n }, \"Show deprecated fields...\") : deprecatedFields.map(field => /*#__PURE__*/_react2.default.createElement(Field, {\n key: field.name,\n type: type,\n field: field\n })));\n }\n }\n\n let valuesDef;\n let deprecatedValuesDef;\n\n if ((0, _graphql.isEnumType)(type)) {\n const values = type.getValues();\n valuesDef = /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, \"values\"), values.filter(value => Boolean(!value.deprecationReason)).map(value => /*#__PURE__*/_react2.default.createElement(EnumValue, {\n key: value.name,\n value: value\n })));\n const deprecatedValues = values.filter(value => Boolean(value.deprecationReason));\n\n if (deprecatedValues.length > 0) {\n deprecatedValuesDef = /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, \"deprecated values\"), !showDeprecated ? /*#__PURE__*/_react2.default.createElement(\"button\", {\n className: \"show-btn\",\n onClick: () => {\n setShowDeprecated(true);\n }\n }, \"Show deprecated values...\") : deprecatedValues.map(value => /*#__PURE__*/_react2.default.createElement(EnumValue, {\n key: value.name,\n value: value\n })));\n }\n }\n\n return /*#__PURE__*/_react2.default.createElement(\"div\", null, /*#__PURE__*/_react2.default.createElement(_MarkdownContent.default, {\n className: \"doc-type-description\",\n markdown: 'description' in type && type.description || 'No Description'\n }), (0, _graphql.isObjectType)(type) && typesDef, fieldsDef, deprecatedFieldsDef, valuesDef, deprecatedValuesDef, !(0, _graphql.isObjectType)(type) && typesDef);\n }\n\n function Field(_ref) {\n let {\n field\n } = _ref;\n return /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react2.default.createElement(_FieldLink.default, {\n field: field\n }), 'args' in field && field.args && field.args.length > 0 && ['(', /*#__PURE__*/_react2.default.createElement(\"span\", {\n key: \"args\"\n }, field.args.filter(arg => !arg.deprecationReason).map(arg => /*#__PURE__*/_react2.default.createElement(_Argument.default, {\n key: arg.name,\n arg: arg\n }))), ')'], ': ', /*#__PURE__*/_react2.default.createElement(_TypeLink.default, {\n type: field.type\n }), /*#__PURE__*/_react2.default.createElement(_DefaultValue.default, {\n field: field\n }), field.description && /*#__PURE__*/_react2.default.createElement(_MarkdownContent.default, {\n className: \"field-short-description\",\n markdown: field.description\n }), 'deprecationReason' in field && field.deprecationReason && /*#__PURE__*/_react2.default.createElement(_MarkdownContent.default, {\n className: \"doc-deprecation\",\n markdown: field.deprecationReason\n }));\n }\n\n function EnumValue(_ref2) {\n let {\n value\n } = _ref2;\n return /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"enum-value\"\n }, value.name), /*#__PURE__*/_react2.default.createElement(_MarkdownContent.default, {\n className: \"doc-value-description\",\n markdown: value.description\n }), value.deprecationReason && /*#__PURE__*/_react2.default.createElement(_MarkdownContent.default, {\n className: \"doc-deprecation\",\n markdown: value.deprecationReason\n }));\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1R5cGVEb2MudHN4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1R5cGVEb2MudHN4PzZkYjIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IHtcbiAgRXhwbG9yZXJGaWVsZERlZixcbiAgdXNlRXhwbG9yZXJDb250ZXh0LFxuICB1c2VTY2hlbWFDb250ZXh0LFxufSBmcm9tICdAZ3JhcGhpcWwvcmVhY3QnO1xuaW1wb3J0IHtcbiAgR3JhcGhRTEVudW1WYWx1ZSxcbiAgR3JhcGhRTEludGVyZmFjZVR5cGUsXG4gIEdyYXBoUUxOYW1lZFR5cGUsXG4gIEdyYXBoUUxPYmplY3RUeXBlLFxuICBpc0VudW1UeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzTmFtZWRUeXBlLFxuICBpc09iamVjdFR5cGUsXG4gIGlzVW5pb25UeXBlLFxufSBmcm9tICdncmFwaHFsJztcbmltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQXJndW1lbnQgZnJvbSAnLi9Bcmd1bWVudCc7XG5pbXBvcnQgRGVmYXVsdFZhbHVlIGZyb20gJy4vRGVmYXVsdFZhbHVlJztcbmltcG9ydCBGaWVsZExpbmsgZnJvbSAnLi9GaWVsZExpbmsnO1xuaW1wb3J0IE1hcmtkb3duQ29udGVudCBmcm9tICcuL01hcmtkb3duQ29udGVudCc7XG5pbXBvcnQgVHlwZUxpbmsgZnJvbSAnLi9UeXBlTGluayc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFR5cGVEb2MoKSB7XG4gIGNvbnN0IHsgc2NoZW1hIH0gPSB1c2VTY2hlbWFDb250ZXh0KHsgbm9uTnVsbDogdHJ1ZSB9KTtcbiAgY29uc3QgeyBleHBsb3Jlck5hdlN0YWNrIH0gPSB1c2VFeHBsb3JlckNvbnRleHQoeyBub25OdWxsOiB0cnVlIH0pO1xuICBjb25zdCBbc2hvd0RlcHJlY2F0ZWQsIHNldFNob3dEZXByZWNhdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBuYXZJdGVtID0gZXhwbG9yZXJOYXZTdGFja1tleHBsb3Jlck5hdlN0YWNrLmxlbmd0aCAtIDFdO1xuICBjb25zdCB0eXBlID0gbmF2SXRlbS5kZWY7XG5cbiAgaWYgKCFzY2hlbWEgfHwgIWlzTmFtZWRUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBsZXQgdHlwZXNUaXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGxldCB0eXBlczogcmVhZG9ubHkgKEdyYXBoUUxPYmplY3RUeXBlIHwgR3JhcGhRTEludGVyZmFjZVR5cGUpW10gPSBbXTtcbiAgaWYgKGlzVW5pb25UeXBlKHR5cGUpKSB7XG4gICAgdHlwZXNUaXRsZSA9ICdwb3NzaWJsZSB0eXBlcyc7XG4gICAgdHlwZXMgPSBzY2hlbWEuZ2V0UG9zc2libGVUeXBlcyh0eXBlKTtcbiAgfSBlbHNlIGlmIChpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICB0eXBlc1RpdGxlID0gJ2ltcGxlbWVudGF0aW9ucyc7XG4gICAgdHlwZXMgPSBzY2hlbWEuZ2V0UG9zc2libGVUeXBlcyh0eXBlKTtcbiAgfSBlbHNlIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICB0eXBlc1RpdGxlID0gJ2ltcGxlbWVudHMnO1xuICAgIHR5cGVzID0gdHlwZS5nZXRJbnRlcmZhY2VzKCk7XG4gIH1cblxuICBsZXQgdHlwZXNEZWY7XG4gIGlmICh0eXBlcyAmJiB0eXBlcy5sZW5ndGggPiAwKSB7XG4gICAgdHlwZXNEZWYgPSAoXG4gICAgICA8ZGl2IGlkPVwiZG9jLXR5cGVzXCIgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5LXRpdGxlXCI+e3R5cGVzVGl0bGV9PC9kaXY+XG4gICAgICAgIHt0eXBlcy5tYXAoc3VidHlwZSA9PiAoXG4gICAgICAgICAgPGRpdiBrZXk9e3N1YnR5cGUubmFtZX0gY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5LWl0ZW1cIj5cbiAgICAgICAgICAgIDxUeXBlTGluayB0eXBlPXtzdWJ0eXBlfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICAvLyBJbnB1dE9iamVjdCBhbmQgT2JqZWN0XG4gIGxldCBmaWVsZHNEZWY7XG4gIGxldCBkZXByZWNhdGVkRmllbGRzRGVmO1xuICBpZiAodHlwZSAmJiAnZ2V0RmllbGRzJyBpbiB0eXBlKSB7XG4gICAgY29uc3QgZmllbGRNYXAgPSB0eXBlLmdldEZpZWxkcygpO1xuICAgIGNvbnN0IGZpZWxkcyA9IE9iamVjdC5rZXlzKGZpZWxkTWFwKS5tYXAobmFtZSA9PiBmaWVsZE1hcFtuYW1lXSk7XG4gICAgZmllbGRzRGVmID0gKFxuICAgICAgPGRpdiBpZD1cImRvYy1maWVsZHNcIiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnlcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktdGl0bGVcIj5maWVsZHM8L2Rpdj5cbiAgICAgICAge2ZpZWxkc1xuICAgICAgICAgIC5maWx0ZXIoZmllbGQgPT4gIWZpZWxkLmRlcHJlY2F0aW9uUmVhc29uKVxuICAgICAgICAgIC5tYXAoZmllbGQgPT4gKFxuICAgICAgICAgICAgPEZpZWxkIGtleT17ZmllbGQubmFtZX0gdHlwZT17dHlwZX0gZmllbGQ9e2ZpZWxkfSAvPlxuICAgICAgICAgICkpfVxuICAgICAgPC9kaXY+XG4gICAgKTtcblxuICAgIGNvbnN0IGRlcHJlY2F0ZWRGaWVsZHMgPSBmaWVsZHMuZmlsdGVyKGZpZWxkID0+XG4gICAgICBCb29sZWFuKGZpZWxkLmRlcHJlY2F0aW9uUmVhc29uKSxcbiAgICApO1xuICAgIGlmIChkZXByZWNhdGVkRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGRlcHJlY2F0ZWRGaWVsZHNEZWYgPSAoXG4gICAgICAgIDxkaXYgaWQ9XCJkb2MtZGVwcmVjYXRlZC1maWVsZHNcIiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS10aXRsZVwiPmRlcHJlY2F0ZWQgZmllbGRzPC9kaXY+XG4gICAgICAgICAgeyFzaG93RGVwcmVjYXRlZCA/IChcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2hvdy1idG5cIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0U2hvd0RlcHJlY2F0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFNob3cgZGVwcmVjYXRlZCBmaWVsZHMuLi5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICBkZXByZWNhdGVkRmllbGRzLm1hcChmaWVsZCA9PiAoXG4gICAgICAgICAgICAgIDxGaWVsZCBrZXk9e2ZpZWxkLm5hbWV9IHR5cGU9e3R5cGV9IGZpZWxkPXtmaWVsZH0gLz5cbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGxldCB2YWx1ZXNEZWY6IFJlYWN0Tm9kZTtcbiAgbGV0IGRlcHJlY2F0ZWRWYWx1ZXNEZWY6IFJlYWN0Tm9kZTtcbiAgaWYgKGlzRW51bVR5cGUodHlwZSkpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0eXBlLmdldFZhbHVlcygpO1xuICAgIHZhbHVlc0RlZiA9IChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5LXRpdGxlXCI+dmFsdWVzPC9kaXY+XG4gICAgICAgIHt2YWx1ZXNcbiAgICAgICAgICAuZmlsdGVyKHZhbHVlID0+IEJvb2xlYW4oIXZhbHVlLmRlcHJlY2F0aW9uUmVhc29uKSlcbiAgICAgICAgICAubWFwKHZhbHVlID0+IChcbiAgICAgICAgICAgIDxFbnVtVmFsdWUga2V5PXt2YWx1ZS5uYW1lfSB2YWx1ZT17dmFsdWV9IC8+XG4gICAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuXG4gICAgY29uc3QgZGVwcmVjYXRlZFZhbHVlcyA9IHZhbHVlcy5maWx0ZXIodmFsdWUgPT5cbiAgICAgIEJvb2xlYW4odmFsdWUuZGVwcmVjYXRpb25SZWFzb24pLFxuICAgICk7XG4gICAgaWYgKGRlcHJlY2F0ZWRWYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgZGVwcmVjYXRlZFZhbHVlc0RlZiA9IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS10aXRsZVwiPmRlcHJlY2F0ZWQgdmFsdWVzPC9kaXY+XG4gICAgICAgICAgeyFzaG93RGVwcmVjYXRlZCA/IChcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2hvdy1idG5cIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0U2hvd0RlcHJlY2F0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFNob3cgZGVwcmVjYXRlZCB2YWx1ZXMuLi5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICBkZXByZWNhdGVkVmFsdWVzLm1hcCh2YWx1ZSA9PiAoXG4gICAgICAgICAgICAgIDxFbnVtVmFsdWUga2V5PXt2YWx1ZS5uYW1lfSB2YWx1ZT17dmFsdWV9IC8+XG4gICAgICAgICAgICApKVxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8TWFya2Rvd25Db250ZW50XG4gICAgICAgIGNsYXNzTmFtZT1cImRvYy10eXBlLWRlc2NyaXB0aW9uXCJcbiAgICAgICAgbWFya2Rvd249e1xuICAgICAgICAgICgnZGVzY3JpcHRpb24nIGluIHR5cGUgJiYgdHlwZS5kZXNjcmlwdGlvbikgfHwgJ05vIERlc2NyaXB0aW9uJ1xuICAgICAgICB9XG4gICAgICAvPlxuICAgICAge2lzT2JqZWN0VHlwZSh0eXBlKSAmJiB0eXBlc0RlZn1cbiAgICAgIHtmaWVsZHNEZWZ9XG4gICAgICB7ZGVwcmVjYXRlZEZpZWxkc0RlZn1cbiAgICAgIHt2YWx1ZXNEZWZ9XG4gICAgICB7ZGVwcmVjYXRlZFZhbHVlc0RlZn1cbiAgICAgIHshaXNPYmplY3RUeXBlKHR5cGUpICYmIHR5cGVzRGVmfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG50eXBlIEZpZWxkUHJvcHMgPSB7XG4gIHR5cGU6IEdyYXBoUUxOYW1lZFR5cGU7XG4gIGZpZWxkOiBFeHBsb3JlckZpZWxkRGVmO1xufTtcblxuZnVuY3Rpb24gRmllbGQoeyBmaWVsZCB9OiBGaWVsZFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktaXRlbVwiPlxuICAgICAgPEZpZWxkTGluayBmaWVsZD17ZmllbGR9IC8+XG4gICAgICB7J2FyZ3MnIGluIGZpZWxkICYmXG4gICAgICAgIGZpZWxkLmFyZ3MgJiZcbiAgICAgICAgZmllbGQuYXJncy5sZW5ndGggPiAwICYmIFtcbiAgICAgICAgICAnKCcsXG4gICAgICAgICAgPHNwYW4ga2V5PVwiYXJnc1wiPlxuICAgICAgICAgICAge2ZpZWxkLmFyZ3NcbiAgICAgICAgICAgICAgLmZpbHRlcihhcmcgPT4gIWFyZy5kZXByZWNhdGlvblJlYXNvbilcbiAgICAgICAgICAgICAgLm1hcChhcmcgPT4gKFxuICAgICAgICAgICAgICAgIDxBcmd1bWVudCBrZXk9e2FyZy5uYW1lfSBhcmc9e2FyZ30gLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9zcGFuPixcbiAgICAgICAgICAnKScsXG4gICAgICAgIF19XG4gICAgICB7JzogJ31cbiAgICAgIDxUeXBlTGluayB0eXBlPXtmaWVsZC50eXBlfSAvPlxuICAgICAgPERlZmF1bHRWYWx1ZSBmaWVsZD17ZmllbGR9IC8+XG4gICAgICB7ZmllbGQuZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICA8TWFya2Rvd25Db250ZW50XG4gICAgICAgICAgY2xhc3NOYW1lPVwiZmllbGQtc2hvcnQtZGVzY3JpcHRpb25cIlxuICAgICAgICAgIG1hcmtkb3duPXtmaWVsZC5kZXNjcmlwdGlvbn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7J2RlcHJlY2F0aW9uUmVhc29uJyBpbiBmaWVsZCAmJiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbiAmJiAoXG4gICAgICAgIDxNYXJrZG93bkNvbnRlbnRcbiAgICAgICAgICBjbGFzc05hbWU9XCJkb2MtZGVwcmVjYXRpb25cIlxuICAgICAgICAgIG1hcmtkb3duPXtmaWVsZC5kZXByZWNhdGlvblJlYXNvbn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbnR5cGUgRW51bVZhbHVlUHJvcHMgPSB7XG4gIHZhbHVlOiBHcmFwaFFMRW51bVZhbHVlO1xufTtcblxuZnVuY3Rpb24gRW51bVZhbHVlKHsgdmFsdWUgfTogRW51bVZhbHVlUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS1pdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImVudW0tdmFsdWVcIj57dmFsdWUubmFtZX08L2Rpdj5cbiAgICAgIDxNYXJrZG93bkNvbnRlbnRcbiAgICAgICAgY2xhc3NOYW1lPVwiZG9jLXZhbHVlLWRlc2NyaXB0aW9uXCJcbiAgICAgICAgbWFya2Rvd249e3ZhbHVlLmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICAgIHt2YWx1ZS5kZXByZWNhdGlvblJlYXNvbiAmJiAoXG4gICAgICAgIDxNYXJrZG93bkNvbnRlbnRcbiAgICAgICAgICBjbGFzc05hbWU9XCJkb2MtZGVwcmVjYXRpb25cIlxuICAgICAgICAgIG1hcmtkb3duPXt2YWx1ZS5kZXByZWNhdGlvblJlYXNvbn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTBCQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBVUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBVUE7QUFBQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRkE7QUFjQTtBQUNBO0FBTUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBS0E7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQU1BO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUZBO0FBT0E7QUFDQTtBQUZBO0FBT0E7QUFDQTtBQUtBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFGQTtBQU1BO0FBQ0E7QUFGQTtBQU9BO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/DocExplorer/TypeDoc.tsx\n");
|
3066 |
|
3067 | }),
|
3068 |
|
3069 | "./components/DocExplorer/TypeLink.tsx":
|
3070 |
|
3071 |
|
3072 |
|
3073 |
|
3074 | (function(module, exports, __webpack_require__) {
|
3075 |
|
3076 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _graphql, _react2) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = TypeLink;\n _react2 = _interopRequireDefault(_react2);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function TypeLink(props) {\n const {\n push\n } = (0, _react.useExplorerContext)({\n nonNull: true,\n caller: TypeLink\n });\n\n if (!props.type) {\n return null;\n }\n\n const type = props.type;\n\n if ((0, _graphql.isNonNullType)(type)) {\n return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, /*#__PURE__*/_react2.default.createElement(TypeLink, {\n type: type.ofType\n }), \"!\");\n }\n\n if ((0, _graphql.isListType)(type)) {\n return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, \"[\", /*#__PURE__*/_react2.default.createElement(TypeLink, {\n type: type.ofType\n }), \"]\");\n }\n\n return /*#__PURE__*/_react2.default.createElement(\"a\", {\n className: \"type-name\",\n onClick: event => {\n event.preventDefault();\n push({\n name: type.name,\n def: type\n });\n },\n href: \"#\"\n }, type.name);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1R5cGVMaW5rLnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9Eb2NFeHBsb3Jlci9UeXBlTGluay50c3g/ODg2ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgeyB1c2VFeHBsb3JlckNvbnRleHQgfSBmcm9tICdAZ3JhcGhpcWwvcmVhY3QnO1xuaW1wb3J0IHsgR3JhcGhRTFR5cGUsIGlzTGlzdFR5cGUsIGlzTm9uTnVsbFR5cGUgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbnR5cGUgVHlwZUxpbmtQcm9wcyA9IHtcbiAgdHlwZTogR3JhcGhRTFR5cGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUeXBlTGluayhwcm9wczogVHlwZUxpbmtQcm9wcykge1xuICBjb25zdCB7IHB1c2ggfSA9IHVzZUV4cGxvcmVyQ29udGV4dCh7IG5vbk51bGw6IHRydWUsIGNhbGxlcjogVHlwZUxpbmsgfSk7XG5cbiAgaWYgKCFwcm9wcy50eXBlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB0eXBlID0gcHJvcHMudHlwZTtcbiAgaWYgKGlzTm9uTnVsbFR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPFR5cGVMaW5rIHR5cGU9e3R5cGUub2ZUeXBlfSAvPiFcbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbiAgaWYgKGlzTGlzdFR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgWzxUeXBlTGluayB0eXBlPXt0eXBlLm9mVHlwZX0gLz5dXG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIGNsYXNzTmFtZT1cInR5cGUtbmFtZVwiXG4gICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHB1c2goeyBuYW1lOiB0eXBlLm5hbWUsIGRlZjogdHlwZSB9KTtcbiAgICAgIH19XG4gICAgICBocmVmPVwiI1wiXG4gICAgPlxuICAgICAge3R5cGUubmFtZX1cbiAgICA8L2E+XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQU5BO0FBV0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/DocExplorer/TypeLink.tsx\n");
|
3077 |
|
3078 | }),
|
3079 |
|
3080 | "./components/ExecuteButton.tsx":
|
3081 |
|
3082 |
|
3083 |
|
3084 |
|
3085 | (function(module, exports, __webpack_require__) {
|
3086 |
|
3087 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\"), __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _react2) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.ExecuteButton = ExecuteButton;\n _react2 = _interopRequireWildcard(_react2);\n\n function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\n function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function ExecuteButton() {\n const {\n queryEditor,\n setOperationName\n } = (0, _react.useEditorContext)({\n nonNull: true\n });\n const {\n isFetching,\n operationName,\n run,\n stop\n } = (0, _react.useExecutionContext)({\n nonNull: true\n });\n const [optionsOpen, setOptionsOpen] = (0, _react2.useState)(false);\n const [highlight, setHighlight] = (0, _react2.useState)(null);\n const operations = (queryEditor === null || queryEditor === void 0 ? void 0 : queryEditor.operations) || [];\n const hasOptions = operations.length > 1 && typeof operationName !== 'string';\n return /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"execute-button-wrap\"\n }, /*#__PURE__*/_react2.default.createElement(\"button\", {\n type: \"button\",\n className: \"execute-button\",\n onMouseDown: // Allow mouse down if there is no running query, there are options\n // for which operation to run, and the dropdown is currently closed.\n !isFetching && hasOptions && !optionsOpen ? downEvent => {\n let initialPress = true;\n const downTarget = downEvent.currentTarget;\n setHighlight(null);\n setOptionsOpen(true);\n\n let onMouseUp = upEvent => {\n if (initialPress && upEvent.target === downTarget) {\n initialPress = false;\n } else {\n var _downTarget$parentNod;\n\n document.removeEventListener('mouseup', onMouseUp);\n onMouseUp = null;\n const isOptionsMenuClicked = upEvent.currentTarget && ((_downTarget$parentNod = downTarget.parentNode) === null || _downTarget$parentNod === void 0 ? void 0 : _downTarget$parentNod.compareDocumentPosition(upEvent.currentTarget)) && Node.DOCUMENT_POSITION_CONTAINED_BY;\n\n if (!isOptionsMenuClicked) {\n // menu calls setState if it was clicked\n setOptionsOpen(false);\n }\n }\n };\n\n document.addEventListener('mouseup', onMouseUp);\n } : undefined,\n onClick: // Allow click event if there is a running query or if there are not\n // options for which operation to run.\n isFetching || !hasOptions ? () => {\n if (isFetching) {\n stop();\n } else {\n run();\n }\n } : undefined,\n title: \"Execute Query (Ctrl-Enter)\"\n }, /*#__PURE__*/_react2.default.createElement(\"svg\", {\n width: \"34\",\n height: \"34\"\n }, isFetching ? /*#__PURE__*/_react2.default.createElement(\"path\", {\n d: \"M 10 10 L 23 10 L 23 23 L 10 23 z\"\n }) : /*#__PURE__*/_react2.default.createElement(\"path\", {\n d: \"M 11 9 L 24 16 L 11 23 z\"\n }))), hasOptions && optionsOpen ? /*#__PURE__*/_react2.default.createElement(\"ul\", {\n className: \"execute-options\"\n }, operations.map((operation, i) => {\n const opName = operation.name ? operation.name.value : `<Unnamed ${operation.operation}>`;\n return /*#__PURE__*/_react2.default.createElement(\"li\", {\n key: `${opName}-${i}`,\n className: operation === highlight ? 'selected' : undefined,\n onMouseOver: () => setHighlight(operation),\n onMouseOut: () => setHighlight(null),\n onMouseUp: () => {\n var _operation$name;\n\n setOptionsOpen(false);\n const selectedOperationName = (_operation$name = operation.name) === null || _operation$name === void 0 ? void 0 : _operation$name.value;\n\n if (queryEditor && selectedOperationName && selectedOperationName !== queryEditor.operationName) {\n setOperationName(selectedOperationName);\n }\n\n run();\n }\n }, opName);\n })) : null);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0V4ZWN1dGVCdXR0b24udHN4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi9jb21wb25lbnRzL0V4ZWN1dGVCdXR0b24udHN4PzA0YjciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IHVzZUVkaXRvckNvbnRleHQsIHVzZUV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICdAZ3JhcGhpcWwvcmVhY3QnO1xuaW1wb3J0IHsgT3BlcmF0aW9uRGVmaW5pdGlvbk5vZGUgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIEV4ZWN1dGVCdXR0b24oKSB7XG4gIGNvbnN0IHsgcXVlcnlFZGl0b3IsIHNldE9wZXJhdGlvbk5hbWUgfSA9IHVzZUVkaXRvckNvbnRleHQoeyBub25OdWxsOiB0cnVlIH0pO1xuICBjb25zdCB7IGlzRmV0Y2hpbmcsIG9wZXJhdGlvbk5hbWUsIHJ1biwgc3RvcCB9ID0gdXNlRXhlY3V0aW9uQ29udGV4dCh7XG4gICAgbm9uTnVsbDogdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IFtvcHRpb25zT3Blbiwgc2V0T3B0aW9uc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaGlnaGxpZ2h0LCBzZXRIaWdobGlnaHRdID0gdXNlU3RhdGU8T3BlcmF0aW9uRGVmaW5pdGlvbk5vZGUgfCBudWxsPihcbiAgICBudWxsLFxuICApO1xuXG4gIGNvbnN0IG9wZXJhdGlvbnMgPSBxdWVyeUVkaXRvcj8ub3BlcmF0aW9ucyB8fCBbXTtcbiAgY29uc3QgaGFzT3B0aW9ucyA9IG9wZXJhdGlvbnMubGVuZ3RoID4gMSAmJiB0eXBlb2Ygb3BlcmF0aW9uTmFtZSAhPT0gJ3N0cmluZyc7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImV4ZWN1dGUtYnV0dG9uLXdyYXBcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT1cImV4ZWN1dGUtYnV0dG9uXCJcbiAgICAgICAgb25Nb3VzZURvd249e1xuICAgICAgICAgIC8vIEFsbG93IG1vdXNlIGRvd24gaWYgdGhlcmUgaXMgbm8gcnVubmluZyBxdWVyeSwgdGhlcmUgYXJlIG9wdGlvbnNcbiAgICAgICAgICAvLyBmb3Igd2hpY2ggb3BlcmF0aW9uIHRvIHJ1biwgYW5kIHRoZSBkcm9wZG93biBpcyBjdXJyZW50bHkgY2xvc2VkLlxuICAgICAgICAgICFpc0ZldGNoaW5nICYmIGhhc09wdGlvbnMgJiYgIW9wdGlvbnNPcGVuXG4gICAgICAgICAgICA/IGRvd25FdmVudCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGluaXRpYWxQcmVzcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgZG93blRhcmdldCA9IGRvd25FdmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgICAgIHNldEhpZ2hsaWdodChudWxsKTtcbiAgICAgICAgICAgICAgICBzZXRPcHRpb25zT3Blbih0cnVlKTtcblxuICAgICAgICAgICAgICAgIHR5cGUgTW91c2VVcEV2ZW50SGFuZGxlciA9ICh1cEV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgICAgICAgICAgICAgIGxldCBvbk1vdXNlVXA6IE1vdXNlVXBFdmVudEhhbmRsZXIgfCBudWxsID0gdXBFdmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoaW5pdGlhbFByZXNzICYmIHVwRXZlbnQudGFyZ2V0ID09PSBkb3duVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxQcmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCEpO1xuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlVXAgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc09wdGlvbnNNZW51Q2xpY2tlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgdXBFdmVudC5jdXJyZW50VGFyZ2V0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgZG93blRhcmdldC5wYXJlbnROb2RlPy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwRXZlbnQuY3VycmVudFRhcmdldCBhcyBOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgICAgICAgICAgICBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc09wdGlvbnNNZW51Q2xpY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIG1lbnUgY2FsbHMgc2V0U3RhdGUgaWYgaXQgd2FzIGNsaWNrZWRcbiAgICAgICAgICAgICAgICAgICAgICBzZXRPcHRpb25zT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgb25DbGljaz17XG4gICAgICAgICAgLy8gQWxsb3cgY2xpY2sgZXZlbnQgaWYgdGhlcmUgaXMgYSBydW5uaW5nIHF1ZXJ5IG9yIGlmIHRoZXJlIGFyZSBub3RcbiAgICAgICAgICAvLyBvcHRpb25zIGZvciB3aGljaCBvcGVyYXRpb24gdG8gcnVuLlxuICAgICAgICAgIGlzRmV0Y2hpbmcgfHwgIWhhc09wdGlvbnNcbiAgICAgICAgICAgID8gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc0ZldGNoaW5nKSB7XG4gICAgICAgICAgICAgICAgICBzdG9wKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJ1bigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICB0aXRsZT1cIkV4ZWN1dGUgUXVlcnkgKEN0cmwtRW50ZXIpXCJcbiAgICAgID5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjM0XCIgaGVpZ2h0PVwiMzRcIj5cbiAgICAgICAgICB7aXNGZXRjaGluZyA/IChcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNIDEwIDEwIEwgMjMgMTAgTCAyMyAyMyBMIDEwIDIzIHpcIiAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8cGF0aCBkPVwiTSAxMSA5IEwgMjQgMTYgTCAxMSAyMyB6XCIgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAge2hhc09wdGlvbnMgJiYgb3B0aW9uc09wZW4gPyAoXG4gICAgICAgIDx1bCBjbGFzc05hbWU9XCJleGVjdXRlLW9wdGlvbnNcIj5cbiAgICAgICAgICB7b3BlcmF0aW9ucy5tYXAoKG9wZXJhdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3BOYW1lID0gb3BlcmF0aW9uLm5hbWVcbiAgICAgICAgICAgICAgPyBvcGVyYXRpb24ubmFtZS52YWx1ZVxuICAgICAgICAgICAgICA6IGA8VW5uYW1lZCAke29wZXJhdGlvbi5vcGVyYXRpb259PmA7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICBrZXk9e2Ake29wTmFtZX0tJHtpfWB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtvcGVyYXRpb24gPT09IGhpZ2hsaWdodCA/ICdzZWxlY3RlZCcgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgb25Nb3VzZU92ZXI9eygpID0+IHNldEhpZ2hsaWdodChvcGVyYXRpb24pfVxuICAgICAgICAgICAgICAgIG9uTW91c2VPdXQ9eygpID0+IHNldEhpZ2hsaWdodChudWxsKX1cbiAgICAgICAgICAgICAgICBvbk1vdXNlVXA9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNldE9wdGlvbnNPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3BlcmF0aW9uTmFtZSA9IG9wZXJhdGlvbi5uYW1lPy52YWx1ZTtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlFZGl0b3IgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRPcGVyYXRpb25OYW1lICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3BlcmF0aW9uTmFtZSAhPT0gcXVlcnlFZGl0b3Iub3BlcmF0aW9uTmFtZVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldE9wZXJhdGlvbk5hbWUoc2VsZWN0ZWRPcGVyYXRpb25OYW1lKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJ1bigpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7b3BOYW1lfVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC91bD5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBbERBO0FBb0RBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFFQTtBQUFBO0FBS0E7QUFBQTtBQUVBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQWhCQTtBQXFCQTtBQUtBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/ExecuteButton.tsx\n");
|
3088 |
|
3089 | }),
|
3090 |
|
3091 | "./components/GraphiQL.tsx":
|
3092 |
|
3093 |
|
3094 |
|
3095 |
|
3096 | (function(module, exports, __webpack_require__) {
|
3097 |
|
3098 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\"), __webpack_require__(/*! ./ExecuteButton */ \"./components/ExecuteButton.tsx\"), __webpack_require__(/*! ./ToolbarButton */ \"./components/ToolbarButton.tsx\"), __webpack_require__(/*! ./ToolbarGroup */ \"./components/ToolbarGroup.tsx\"), __webpack_require__(/*! ./ToolbarMenu */ \"./components/ToolbarMenu.tsx\"), __webpack_require__(/*! ./QueryEditor */ \"./components/QueryEditor.tsx\"), __webpack_require__(/*! ./VariableEditor */ \"./components/VariableEditor.tsx\"), __webpack_require__(/*! ./HeaderEditor */ \"./components/HeaderEditor.tsx\"), __webpack_require__(/*! ./ResultViewer */ \"./components/ResultViewer.tsx\"), __webpack_require__(/*! ./DocExplorer */ \"./components/DocExplorer.tsx\"), __webpack_require__(/*! ./QueryHistory */ \"./components/QueryHistory.tsx\"), __webpack_require__(/*! ../utility/find */ \"./utility/find.ts\"), __webpack_require__(/*! @graphiql/toolkit */ \"../../graphiql-toolkit/esm/index.js\"), __webpack_require__(/*! ./Tabs */ \"./components/Tabs.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _react2, _ExecuteButton, _ToolbarButton, _ToolbarGroup, _ToolbarMenu, _QueryEditor, _VariableEditor, _HeaderEditor, _ResultViewer, _DocExplorer, _QueryHistory, _find, _toolkit, _Tabs) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.GraphiQL = void 0;\n _react = _interopRequireWildcard(_react);\n _find = _interopRequireDefault(_find);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\n function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n const majorVersion = parseInt(_react.default.version.slice(0, 2), 10);\n\n if (majorVersion < 16) {\n throw Error(['GraphiQL 0.18.0 and after is not compatible with React 15 or below.', 'If you are using a CDN source (jsdelivr, unpkg, etc), follow this example:', 'https://github.com/graphql/graphiql/blob/master/examples/graphiql-cdn/index.html#L49'].join('\\n'));\n }\n\n /**\n * The top-level React component for GraphiQL, intended to encompass the entire\n * browser viewport.\n *\n * @see https://github.com/graphql/graphiql#usage\n */\n class GraphiQL extends _react.default.Component {\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"ref\", null);\n }\n\n componentDidMount() {\n if (typeof window !== 'undefined') {\n window.g = this;\n }\n }\n\n render() {\n return /*#__PURE__*/_react.default.createElement(GraphiQLProviders, _extends({}, this.props, {\n ref: node => {\n this.ref = node;\n }\n }));\n }\n /**\n * Get the query editor CodeMirror instance.\n *\n * @public\n */\n\n\n getQueryEditor() {\n var _this$ref;\n\n console.warn('The method `GraphiQL.getQueryEditor` is deprecated and will be removed in the next major version. To set the value of the editor you can use the `query` prop. To react on changes of the editor value you can pass a callback to the `onEditQuery` prop.');\n return ((_this$ref = this.ref) === null || _this$ref === void 0 ? void 0 : _this$ref.getQueryEditor()) || null;\n }\n /**\n * Get the variable editor CodeMirror instance.\n *\n * @public\n */\n\n\n getVariableEditor() {\n var _this$ref2;\n\n console.warn('The method `GraphiQL.getVariableEditor` is deprecated and will be removed in the next major version. To set the value of the editor you can use the `variables` prop. To react on changes of the editor value you can pass a callback to the `onEditVariables` prop.');\n return ((_this$ref2 = this.ref) === null || _this$ref2 === void 0 ? void 0 : _this$ref2.getVariableEditor()) || null;\n }\n /**\n * Get the header editor CodeMirror instance.\n *\n * @public\n */\n\n\n getHeaderEditor() {\n var _this$ref3;\n\n console.warn('The method `GraphiQL.getHeaderEditor` is deprecated and will be removed in the next major version. To set the value of the editor you can use the `headers` prop. To react on changes of the editor value you can pass a callback to the `onEditHeaders` prop.');\n return ((_this$ref3 = this.ref) === null || _this$ref3 === void 0 ? void 0 : _this$ref3.getHeaderEditor()) || null;\n }\n /**\n * Refresh all CodeMirror instances.\n *\n * @public\n */\n\n\n refresh() {\n var _this$ref4;\n\n console.warn('The method `GraphiQL.refresh` is deprecated and will be removed in the next major version. Already now, all editors should automatically refresh when their size changes.');\n (_this$ref4 = this.ref) === null || _this$ref4 === void 0 ? void 0 : _this$ref4.refresh();\n }\n /**\n * Inspect the query, automatically filling in selection sets for non-leaf\n * fields which do not yet have them.\n *\n * @public\n */\n\n\n autoCompleteLeafs() {\n var _this$ref5;\n\n console.warn('The method `GraphiQL.autoCompleteLeafs` is deprecated and will be removed in the next major version. Please switch to using the `autoCompleteLeafs` function provided by the `EditorContext` from the `@graphiql/react` package.');\n return (_this$ref5 = this.ref) === null || _this$ref5 === void 0 ? void 0 : _this$ref5.autoCompleteLeafs();\n } // Static methods\n\n\n }\n\n _exports.GraphiQL = GraphiQL;\n\n _defineProperty(GraphiQL, \"formatResult\", result => {\n console.warn('The function `GraphiQL.formatResult` is deprecated and will be removed in the next major version. Please switch to using the `formatResult` function provided by the `@graphiql/toolkit` package.');\n return (0, _toolkit.formatResult)(result);\n });\n\n _defineProperty(GraphiQL, \"formatError\", error => {\n console.warn('The function `GraphiQL.formatError` is deprecated and will be removed in the next major version. Please switch to using the `formatError` function provided by the `@graphiql/toolkit` package.');\n return (0, _toolkit.formatError)(error);\n });\n\n _defineProperty(GraphiQL, \"Logo\", GraphiQLLogo);\n\n _defineProperty(GraphiQL, \"Toolbar\", GraphiQLToolbar);\n\n _defineProperty(GraphiQL, \"Footer\", GraphiQLFooter);\n\n _defineProperty(GraphiQL, \"QueryEditor\", _QueryEditor.QueryEditor);\n\n _defineProperty(GraphiQL, \"VariableEditor\", _VariableEditor.VariableEditor);\n\n _defineProperty(GraphiQL, \"HeaderEditor\", _HeaderEditor.HeaderEditor);\n\n _defineProperty(GraphiQL, \"ResultViewer\", _ResultViewer.ResultViewer);\n\n _defineProperty(GraphiQL, \"Button\", _ToolbarButton.ToolbarButton);\n\n _defineProperty(GraphiQL, \"ToolbarButton\", _ToolbarButton.ToolbarButton);\n\n _defineProperty(GraphiQL, \"Group\", _ToolbarGroup.ToolbarGroup);\n\n _defineProperty(GraphiQL, \"Menu\", _ToolbarMenu.ToolbarMenu);\n\n _defineProperty(GraphiQL, \"MenuItem\", _ToolbarMenu.ToolbarMenuItem);\n\n const GraphiQLProviders = /*#__PURE__*/(0, _react.forwardRef)(function GraphiQLProviders(_ref, ref) {\n let {\n dangerouslyAssumeSchemaIsValid,\n docExplorerOpen,\n externalFragments,\n fetcher,\n headers,\n inputValueDeprecation,\n introspectionQueryName,\n maxHistoryLength,\n onEditOperationName,\n onSchemaChange,\n onToggleHistory,\n onToggleDocs,\n operationName,\n query,\n response,\n storage,\n schema,\n schemaDescription,\n shouldPersistHeaders,\n validationRules,\n variables,\n ...props\n } = _ref;\n\n // Ensure props are correct\n if (typeof fetcher !== 'function') {\n throw new TypeError('GraphiQL requires a fetcher function.');\n }\n\n return /*#__PURE__*/_react.default.createElement(_react2.StorageContextProvider, {\n storage: storage\n }, /*#__PURE__*/_react.default.createElement(_react2.HistoryContextProvider, {\n maxHistoryLength: maxHistoryLength,\n onToggle: onToggleHistory\n }, /*#__PURE__*/_react.default.createElement(_react2.EditorContextProvider, {\n defaultQuery: props.defaultQuery,\n externalFragments: externalFragments,\n headers: headers,\n onEditOperationName: onEditOperationName,\n onTabChange: typeof props.tabs === 'object' ? props.tabs.onTabChange : undefined,\n query: query,\n response: response,\n shouldPersistHeaders: shouldPersistHeaders,\n validationRules: validationRules,\n variables: variables\n }, /*#__PURE__*/_react.default.createElement(_react2.SchemaContextProvider, {\n dangerouslyAssumeSchemaIsValid: dangerouslyAssumeSchemaIsValid,\n fetcher: fetcher,\n inputValueDeprecation: inputValueDeprecation,\n introspectionQueryName: introspectionQueryName,\n onSchemaChange: onSchemaChange,\n schema: schema,\n schemaDescription: schemaDescription\n }, /*#__PURE__*/_react.default.createElement(_react2.ExecutionContextProvider, {\n fetcher: fetcher,\n operationName: operationName\n }, /*#__PURE__*/_react.default.createElement(_react2.ExplorerContextProvider, {\n isVisible: docExplorerOpen,\n onToggleVisibility: onToggleDocs\n }, /*#__PURE__*/_react.default.createElement(GraphiQLConsumeContexts, _extends({}, props, {\n ref: ref\n }))))))));\n }); // Add a select-option input to the Toolbar.\n // GraphiQL.Select = ToolbarSelect;\n // GraphiQL.SelectOption = ToolbarSelectOption;\n\n const GraphiQLConsumeContexts = /*#__PURE__*/(0, _react.forwardRef)(function GraphiQLConsumeContexts(_ref2, ref) {\n let {\n getDefaultFieldNames,\n ...props\n } = _ref2;\n const editorContext = (0, _react2.useEditorContext)({\n nonNull: true\n });\n const executionContext = (0, _react2.useExecutionContext)({\n nonNull: true\n });\n const explorerContext = (0, _react2.useExplorerContext)();\n const historyContext = (0, _react2.useHistoryContext)();\n const schemaContext = (0, _react2.useSchemaContext)({\n nonNull: true\n });\n const storageContext = (0, _react2.useStorageContext)();\n const autoCompleteLeafs = (0, _react2.useAutoCompleteLeafs)({\n getDefaultFieldNames\n });\n const copy = (0, _react2.useCopyQuery)({\n onCopyQuery: props.onCopyQuery\n });\n const merge = (0, _react2.useMergeQuery)();\n const prettify = (0, _react2.usePrettifyEditors)();\n const docResize = (0, _react2.useDragResize)({\n defaultSizeRelation: 3,\n direction: 'horizontal',\n initiallyHidden: explorerContext !== null && explorerContext !== void 0 && explorerContext.isVisible ? undefined : 'second',\n onHiddenElementChange: resizableElement => {\n if (resizableElement === 'second') {\n explorerContext === null || explorerContext === void 0 ? void 0 : explorerContext.hide();\n } else {\n explorerContext === null || explorerContext === void 0 ? void 0 : explorerContext.show();\n }\n },\n sizeThresholdSecond: 200,\n storageKey: 'docExplorerFlex'\n });\n const editorResize = (0, _react2.useDragResize)({\n direction: 'horizontal',\n storageKey: 'editorFlex'\n });\n const secondaryEditorResize = (0, _react2.useDragResize)({\n defaultSizeRelation: 3,\n direction: 'vertical',\n initiallyHidden: (() => {\n // initial secondary editor pane open\n if (props.defaultVariableEditorOpen !== undefined) {\n return props.defaultVariableEditorOpen ? undefined : 'second';\n }\n\n if (props.defaultSecondaryEditorOpen !== undefined) {\n return props.defaultSecondaryEditorOpen ? undefined : 'second';\n }\n\n return editorContext.initialVariables || editorContext.initialHeaders ? undefined : 'second';\n })(),\n sizeThresholdSecond: 60,\n storageKey: 'secondaryEditorFlex'\n });\n return /*#__PURE__*/_react.default.createElement(GraphiQLWithContext, _extends({}, props, {\n editorContext: editorContext,\n executionContext: executionContext,\n explorerContext: explorerContext,\n historyContext: historyContext,\n schemaContext: schemaContext,\n storageContext: storageContext,\n autoCompleteLeafs: autoCompleteLeafs,\n copy: copy,\n merge: merge,\n prettify: prettify,\n docResize: docResize,\n editorResize: editorResize,\n secondaryEditorResize: secondaryEditorResize,\n ref: ref\n }));\n });\n\n class GraphiQLWithContext extends _react.default.Component {\n constructor(props) {\n super(props); // Initialize state\n\n this.state = {\n activeSecondaryEditor: 'variable'\n };\n }\n\n render() {\n var _this$props$historyCo2, _this$props$toolbar, _this$props$headerEdi, _this$props$historyCo3;\n\n const children = _react.default.Children.toArray(this.props.children);\n\n const logo = (0, _find.default)(children, child => isChildComponentType(child, GraphiQL.Logo)) || /*#__PURE__*/_react.default.createElement(GraphiQL.Logo, null);\n\n const toolbar = (0, _find.default)(children, child => isChildComponentType(child, GraphiQL.Toolbar)) || /*#__PURE__*/_react.default.createElement(GraphiQL.Toolbar, null, /*#__PURE__*/_react.default.createElement(_ToolbarButton.ToolbarButton, {\n onClick: () => {\n this.props.prettify();\n },\n title: \"Prettify Query (Shift-Ctrl-P)\",\n label: \"Prettify\"\n }), /*#__PURE__*/_react.default.createElement(_ToolbarButton.ToolbarButton, {\n onClick: () => {\n this.props.merge();\n },\n title: \"Merge Query (Shift-Ctrl-M)\",\n label: \"Merge\"\n }), /*#__PURE__*/_react.default.createElement(_ToolbarButton.ToolbarButton, {\n onClick: () => {\n this.props.copy();\n },\n title: \"Copy Query (Shift-Ctrl-C)\",\n label: \"Copy\"\n }), /*#__PURE__*/_react.default.createElement(_ToolbarButton.ToolbarButton, {\n onClick: () => {\n var _this$props$historyCo;\n\n return (_this$props$historyCo = this.props.historyContext) === null || _this$props$historyCo === void 0 ? void 0 : _this$props$historyCo.toggle();\n },\n title: (_this$props$historyCo2 = this.props.historyContext) !== null && _this$props$historyCo2 !== void 0 && _this$props$historyCo2.isVisible ? 'Hide History' : 'Show History',\n label: \"History\"\n }), /*#__PURE__*/_react.default.createElement(_ToolbarButton.ToolbarButton, {\n onClick: () => this.props.schemaContext.introspect(),\n title: \"Fetch GraphQL schema using introspection (Shift-Ctrl-R)\",\n label: \"Introspect\"\n }), (_this$props$toolbar = this.props.toolbar) !== null && _this$props$toolbar !== void 0 && _this$props$toolbar.additionalContent ? this.props.toolbar.additionalContent : null);\n\n const footer = (0, _find.default)(children, child => isChildComponentType(child, GraphiQL.Footer));\n const headerEditorEnabled = (_this$props$headerEdi = this.props.headerEditorEnabled) !== null && _this$props$headerEdi !== void 0 ? _this$props$headerEdi : true;\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n \"data-testid\": \"graphiql-container\",\n className: \"graphiql-container\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: this.props.docResize.firstRef\n }, ((_this$props$historyCo3 = this.props.historyContext) === null || _this$props$historyCo3 === void 0 ? void 0 : _this$props$historyCo3.isVisible) && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"historyPaneWrap\",\n style: {\n width: '230px',\n zIndex: 7\n }\n }, /*#__PURE__*/_react.default.createElement(_QueryHistory.QueryHistory, null)), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"editorWrap\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"topBarWrap\"\n }, this.props.beforeTopBarContent, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"topBar\"\n }, logo, /*#__PURE__*/_react.default.createElement(_ExecuteButton.ExecuteButton, null), toolbar), this.props.explorerContext && !this.props.explorerContext.isVisible && /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"docExplorerShow\",\n onClick: () => {\n var _this$props$explorerC;\n\n (_this$props$explorerC = this.props.explorerContext) === null || _this$props$explorerC === void 0 ? void 0 : _this$props$explorerC.show();\n this.props.docResize.setHiddenElement(null);\n },\n \"aria-label\": \"Open Documentation Explorer\"\n }, \"Docs\")), this.props.tabs ? /*#__PURE__*/_react.default.createElement(_Tabs.Tabs, {\n tabsProps: {\n 'aria-label': 'Select active operation'\n }\n }, this.props.editorContext.tabs.map((tab, index) => /*#__PURE__*/_react.default.createElement(_Tabs.Tab, {\n key: tab.id,\n isActive: index === this.props.editorContext.activeTabIndex,\n title: tab.title,\n isCloseable: this.props.editorContext.tabs.length > 1,\n onSelect: () => {\n this.props.executionContext.stop();\n this.props.editorContext.changeTab(index);\n },\n onClose: () => {\n if (this.props.editorContext.activeTabIndex === index) {\n this.props.executionContext.stop();\n }\n\n this.props.editorContext.closeTab(index);\n },\n tabProps: {\n 'aria-controls': 'sessionWrap',\n id: `session-tab-${index}`\n }\n })), /*#__PURE__*/_react.default.createElement(_Tabs.TabAddButton, {\n onClick: () => {\n this.props.editorContext.addTab();\n }\n })) : null, /*#__PURE__*/_react.default.createElement(\"div\", {\n role: \"tabpanel\",\n id: \"sessionWrap\",\n className: \"editorBar\",\n \"aria-labelledby\": `session-tab-${this.props.editorContext.activeTabIndex}`\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: this.props.editorResize.firstRef\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"queryWrap\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: this.props.secondaryEditorResize.firstRef\n }, /*#__PURE__*/_react.default.createElement(_QueryEditor.QueryEditor, {\n editorTheme: this.props.editorTheme,\n onClickReference: () => {\n if (this.props.docResize.hiddenElement === 'second') {\n this.props.docResize.setHiddenElement(null);\n }\n },\n keyMap: this.props.keyMap,\n onCopyQuery: this.props.onCopyQuery,\n onEdit: this.props.onEditQuery,\n readOnly: this.props.readOnly\n })), /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: this.props.secondaryEditorResize.dragBarRef\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"secondary-editor-title variable-editor-title\",\n id: \"secondary-editor-title\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: `variable-editor-title-text${this.state.activeSecondaryEditor === 'variable' ? ' active' : ''}`,\n onClick: () => {\n if (this.props.secondaryEditorResize.hiddenElement === 'second') {\n this.props.secondaryEditorResize.setHiddenElement(null);\n }\n\n this.setState({\n activeSecondaryEditor: 'variable'\n }, () => {\n var _this$props$editorCon;\n\n (_this$props$editorCon = this.props.editorContext.variableEditor) === null || _this$props$editorCon === void 0 ? void 0 : _this$props$editorCon.refresh();\n });\n }\n }, \"Query Variables\"), headerEditorEnabled && /*#__PURE__*/_react.default.createElement(\"div\", {\n style: {\n marginLeft: '20px'\n },\n className: `variable-editor-title-text${this.state.activeSecondaryEditor === 'header' ? ' active' : ''}`,\n onClick: () => {\n if (this.props.secondaryEditorResize.hiddenElement === 'second') {\n this.props.secondaryEditorResize.setHiddenElement(null);\n }\n\n this.setState({\n activeSecondaryEditor: 'header'\n }, () => {\n var _this$props$editorCon2;\n\n (_this$props$editorCon2 = this.props.editorContext.headerEditor) === null || _this$props$editorCon2 === void 0 ? void 0 : _this$props$editorCon2.refresh();\n });\n }\n }, \"Request Headers\"))), /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: this.props.secondaryEditorResize.secondRef\n }, /*#__PURE__*/_react.default.createElement(\"section\", {\n className: \"variable-editor secondary-editor\",\n \"aria-label\": this.state.activeSecondaryEditor === 'variable' ? 'Query Variables' : 'Request Headers'\n }, /*#__PURE__*/_react.default.createElement(_VariableEditor.VariableEditor, {\n onEdit: this.props.onEditVariables,\n editorTheme: this.props.editorTheme,\n readOnly: this.props.readOnly,\n active: this.state.activeSecondaryEditor === 'variable',\n keyMap: this.props.keyMap\n }), headerEditorEnabled && /*#__PURE__*/_react.default.createElement(_HeaderEditor.HeaderEditor, {\n active: this.state.activeSecondaryEditor === 'header',\n editorTheme: this.props.editorTheme,\n onEdit: this.props.onEditHeaders,\n readOnly: this.props.readOnly,\n keyMap: this.props.keyMap\n }))))), /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: this.props.editorResize.dragBarRef\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"editor-drag-bar\"\n })), /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: this.props.editorResize.secondRef\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"resultWrap\"\n }, this.props.executionContext.isFetching && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"spinner-container\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"spinner\"\n })), /*#__PURE__*/_react.default.createElement(_ResultViewer.ResultViewer, {\n editorTheme: this.props.editorTheme,\n ResponseTooltip: this.props.ResultsTooltip,\n keyMap: this.props.keyMap\n }), footer))))), /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: this.props.docResize.dragBarRef\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"docExplorerResizer\"\n })), /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: this.props.docResize.secondRef\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"docExplorerWrap\"\n }, /*#__PURE__*/_react.default.createElement(_DocExplorer.DocExplorer, {\n onClose: () => this.props.docResize.setHiddenElement('second')\n }))));\n } // Public methods\n\n\n getQueryEditor() {\n return this.props.editorContext.queryEditor || null;\n }\n\n getVariableEditor() {\n return this.props.editorContext.variableEditor || null;\n }\n\n getHeaderEditor() {\n return this.props.editorContext.headerEditor || null;\n }\n\n refresh() {\n var _this$props$editorCon3, _this$props$editorCon4, _this$props$editorCon5, _this$props$editorCon6;\n\n (_this$props$editorCon3 = this.props.editorContext.queryEditor) === null || _this$props$editorCon3 === void 0 ? void 0 : _this$props$editorCon3.refresh();\n (_this$props$editorCon4 = this.props.editorContext.variableEditor) === null || _this$props$editorCon4 === void 0 ? void 0 : _this$props$editorCon4.refresh();\n (_this$props$editorCon5 = this.props.editorContext.headerEditor) === null || _this$props$editorCon5 === void 0 ? void 0 : _this$props$editorCon5.refresh();\n (_this$props$editorCon6 = this.props.editorContext.responseEditor) === null || _this$props$editorCon6 === void 0 ? void 0 : _this$props$editorCon6.refresh();\n }\n\n autoCompleteLeafs() {\n return this.props.autoCompleteLeafs();\n }\n\n } // // Configure the UI by providing this Component as a child of GraphiQL.\n\n\n function GraphiQLLogo(props) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"title\"\n }, props.children || /*#__PURE__*/_react.default.createElement(\"span\", null, \"Graph\", /*#__PURE__*/_react.default.createElement(\"em\", null, \"i\"), \"QL\"));\n }\n\n GraphiQLLogo.displayName = 'GraphiQLLogo'; // Configure the UI by providing this Component as a child of GraphiQL.\n\n function GraphiQLToolbar(props) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"toolbar\",\n role: \"toolbar\",\n \"aria-label\": \"Editor Commands\"\n }, props.children);\n }\n\n GraphiQLToolbar.displayName = 'GraphiQLToolbar'; // Configure the UI by providing this Component as a child of GraphiQL.\n\n function GraphiQLFooter(props) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"footer\"\n }, props.children);\n }\n\n GraphiQLFooter.displayName = 'GraphiQLFooter'; // Determines if the React child is of the same type of the provided React component\n\n function isChildComponentType(child, component) {\n var _child$type;\n\n if (child !== null && child !== void 0 && (_child$type = child.type) !== null && _child$type !== void 0 && _child$type.displayName && child.type.displayName === component.displayName) {\n return true;\n }\n\n return child.type === component;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0dyYXBoaVFMLnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9HcmFwaGlRTC50c3g/OTdkNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjAgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QsIHtcbiAgQ29tcG9uZW50VHlwZSxcbiAgUHJvcHNXaXRoQ2hpbGRyZW4sXG4gIFJlYWN0Tm9kZSxcbiAgZm9yd2FyZFJlZixcbiAgRm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudCxcbiAgUmVmQXR0cmlidXRlcyxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgR3JhcGhRTFNjaGVtYSxcbiAgVmFsaWRhdGlvblJ1bGUsXG4gIEZyYWdtZW50RGVmaW5pdGlvbk5vZGUsXG4gIERvY3VtZW50Tm9kZSxcbiAgSW50cm9zcGVjdGlvblF1ZXJ5LFxufSBmcm9tICdncmFwaHFsJztcblxuaW1wb3J0IHtcbiAgRWRpdG9yQ29udGV4dFByb3ZpZGVyLFxuICBFeGVjdXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIEV4ZWN1dGlvbkNvbnRleHRUeXBlLFxuICBFeHBsb3JlckNvbnRleHRQcm92aWRlcixcbiAgSGlzdG9yeUNvbnRleHRQcm92aWRlcixcbiAgU2NoZW1hQ29udGV4dFByb3ZpZGVyLFxuICBTdG9yYWdlQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBdXRvQ29tcGxldGVMZWFmcyxcbiAgdXNlQ29weVF1ZXJ5LFxuICB1c2VEcmFnUmVzaXplLFxuICB1c2VFZGl0b3JDb250ZXh0LFxuICB1c2VFeGVjdXRpb25Db250ZXh0LFxuICB1c2VFeHBsb3JlckNvbnRleHQsXG4gIHVzZUhpc3RvcnlDb250ZXh0LFxuICB1c2VNZXJnZVF1ZXJ5LFxuICB1c2VQcmV0dGlmeUVkaXRvcnMsXG4gIHVzZVNjaGVtYUNvbnRleHQsXG4gIHVzZVN0b3JhZ2VDb250ZXh0LFxufSBmcm9tICdAZ3JhcGhpcWwvcmVhY3QnO1xuaW1wb3J0IHR5cGUge1xuICBFZGl0b3JDb250ZXh0VHlwZSxcbiAgRXhwbG9yZXJDb250ZXh0VHlwZSxcbiAgSGlzdG9yeUNvbnRleHRUeXBlLFxuICBSZXNwb25zZVRvb2x0aXBUeXBlLFxuICBTY2hlbWFDb250ZXh0VHlwZSxcbiAgU3RvcmFnZUNvbnRleHRUeXBlLFxuICBUYWJzU3RhdGUsXG4gIEtleU1hcCxcbn0gZnJvbSAnQGdyYXBoaXFsL3JlYWN0JztcblxuaW1wb3J0IHsgRXhlY3V0ZUJ1dHRvbiB9IGZyb20gJy4vRXhlY3V0ZUJ1dHRvbic7XG5pbXBvcnQgeyBUb29sYmFyQnV0dG9uIH0gZnJvbSAnLi9Ub29sYmFyQnV0dG9uJztcbmltcG9ydCB7IFRvb2xiYXJHcm91cCB9IGZyb20gJy4vVG9vbGJhckdyb3VwJztcbmltcG9ydCB7IFRvb2xiYXJNZW51LCBUb29sYmFyTWVudUl0ZW0gfSBmcm9tICcuL1Rvb2xiYXJNZW51JztcbmltcG9ydCB7IFF1ZXJ5RWRpdG9yIH0gZnJvbSAnLi9RdWVyeUVkaXRvcic7XG5pbXBvcnQgeyBWYXJpYWJsZUVkaXRvciB9IGZyb20gJy4vVmFyaWFibGVFZGl0b3InO1xuaW1wb3J0IHsgSGVhZGVyRWRpdG9yIH0gZnJvbSAnLi9IZWFkZXJFZGl0b3InO1xuaW1wb3J0IHsgUmVzdWx0Vmlld2VyIH0gZnJvbSAnLi9SZXN1bHRWaWV3ZXInO1xuaW1wb3J0IHsgRG9jRXhwbG9yZXIgfSBmcm9tICcuL0RvY0V4cGxvcmVyJztcbmltcG9ydCB7IFF1ZXJ5SGlzdG9yeSB9IGZyb20gJy4vUXVlcnlIaXN0b3J5JztcbmltcG9ydCBmaW5kIGZyb20gJy4uL3V0aWxpdHkvZmluZCc7XG5cbmltcG9ydCB7IGZvcm1hdEVycm9yLCBmb3JtYXRSZXN1bHQgfSBmcm9tICdAZ3JhcGhpcWwvdG9vbGtpdCc7XG5pbXBvcnQgdHlwZSB7IEZldGNoZXIsIEdldERlZmF1bHRGaWVsZE5hbWVzRm4gfSBmcm9tICdAZ3JhcGhpcWwvdG9vbGtpdCc7XG5cbmltcG9ydCB7IFRhYiwgVGFiQWRkQnV0dG9uLCBUYWJzIH0gZnJvbSAnLi9UYWJzJztcblxuY29uc3QgbWFqb3JWZXJzaW9uID0gcGFyc2VJbnQoUmVhY3QudmVyc2lvbi5zbGljZSgwLCAyKSwgMTApO1xuXG5pZiAobWFqb3JWZXJzaW9uIDwgMTYpIHtcbiAgdGhyb3cgRXJyb3IoXG4gICAgW1xuICAgICAgJ0dyYXBoaVFMIDAuMTguMCBhbmQgYWZ0ZXIgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBSZWFjdCAxNSBvciBiZWxvdy4nLFxuICAgICAgJ0lmIHlvdSBhcmUgdXNpbmcgYSBDRE4gc291cmNlIChqc2RlbGl2ciwgdW5wa2csIGV0YyksIGZvbGxvdyB0aGlzIGV4YW1wbGU6JyxcbiAgICAgICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaGlxbC9ibG9iL21hc3Rlci9leGFtcGxlcy9ncmFwaGlxbC1jZG4vaW5kZXguaHRtbCNMNDknLFxuICAgIF0uam9pbignXFxuJyksXG4gICk7XG59XG5cbmRlY2xhcmUgbmFtZXNwYWNlIHdpbmRvdyB7XG4gIGV4cG9ydCBsZXQgZzogR3JhcGhpUUw7XG59XG5cbmV4cG9ydCB0eXBlIEdyYXBoaVFMVG9vbGJhckNvbmZpZyA9IHtcbiAgYWRkaXRpb25hbENvbnRlbnQ/OiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIEFQSSBkb2NzIGZvciB0aGlzIGxpdmUgaGVyZTpcbiAqXG4gKiBodHRwczovL2dyYXBoaXFsLXRlc3QubmV0bGlmeS5hcHAvdHlwZWRvYy9tb2R1bGVzL2dyYXBoaXFsLmh0bWwjZ3JhcGhpcWxwcm9wc1xuICovXG5leHBvcnQgdHlwZSBHcmFwaGlRTFByb3BzID0ge1xuICAvKipcbiAgICogUmVxdWlyZWQuIEEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0cyBHcmFwaFFMLUhUVFAgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBhIFByb21pc2UsIE9ic2VydmFibGUgb3IgQXN5bmNJdGVyYWJsZVxuICAgKiB3aGljaCByZXNvbHZlcyB0byB0aGUgR3JhcGhRTCBwYXJzZWQgSlNPTiByZXNwb25zZS5cbiAgICpcbiAgICogV2Ugc3VnZ2VzdCB1c2luZyBgQGdyYXBoaXFsL3Rvb2xraXRgIGBjcmVhdGVHcmFwaGlRTEZldGNoZXIoKWAgdG8gY292ZXIgbW9zdCBpbXBsZW1lbnRhdGlvbnMsXG4gICAqIGluY2x1ZGluZyBjdXN0b20gaGVhZGVycywgd2Vic29ja2V0cyBhbmQgZXZlbiBpbmNyZW1lbnRhbCBkZWxpdmVyeSBmb3IgQGRlZmVyIGFuZCBAc3RyZWFtLlxuICAgKlxuICAgKiBbYEdyYXBoaVFMIENyZWF0ZSBGZXRjaGVyIGRvY3VtZW50YXRpb25gXShodHRwczovL2dyYXBoaXFsLXRlc3QubmV0bGlmeS5hcHAvdHlwZWRvYy9tb2R1bGVzL2dyYXBoaXFsLXRvb2xraXQuaHRtbCNmZXRjaGVyKVxuICAgKiAgKipSZXF1aXJlZC4qKlxuICAgKi9cbiAgZmV0Y2hlcjogRmV0Y2hlcjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgcHJvdmlkZSB0aGUgYEdyYXBoUUxTY2hlbWFgLiBJZiBwcmVzZW50LCBHcmFwaGlRTCBza2lwcyBzY2hlbWFcbiAgICogaW50cm9zcGVjdGlvbi4gVGhpcyBwcm9wIGFsc28gYWNjZXB0cyB0aGUgcmVzdWx0IG9mIGFuIGludHJvc3BlY3Rpb24gcXVlcnlcbiAgICogd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSBhIGBHcmFwaFFMU2NoZW1hYFxuICAgKi9cbiAgc2NoZW1hPzogR3JhcGhRTFNjaGVtYSB8IEludHJvc3BlY3Rpb25RdWVyeSB8IG51bGw7XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBncmFwaHFsIFZhbGlkYXRpb25SdWxlc1xuICAgKi9cbiAgdmFsaWRhdGlvblJ1bGVzPzogVmFsaWRhdGlvblJ1bGVbXTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgcHJvdmlkZSB0aGUgcXVlcnkgaW4gYSBjb250cm9sbGVkLWNvbXBvbmVudCBtYW5uZXIuIFRoaXMgd2lsbCBvdmVycmlkZSB0aGUgdXNlciBzdGF0ZS5cbiAgICpcbiAgICogSWYgeW91IGp1c3Qgd2FudCB0byBwcm92aWRlIGEgZGlmZmVyZW50IGluaXRpYWwgcXVlcnksIHVzZSBgZGVmYXVsdFF1ZXJ5YFxuICAgKi9cbiAgcXVlcnk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTYW1lIGFzIGFib3ZlLiBwcm92aWRlIGEganNvbiBzdHJpbmcgdGhhdCBjb250cm9scyB0aGUgcHJlc2VudCB2YXJpYWJsZXMgZWRpdG9yIHN0YXRlLlxuICAgKi9cbiAgdmFyaWFibGVzPzogc3RyaW5nO1xuICAvKipcbiAgICogcHJvdmlkZSBhIGpzb24gc3RyaW5nIHRoYXQgY29udHJvbHMgdGhlIGhlYWRlcnMgZWRpdG9yIHN0YXRlXG4gICAqL1xuICBoZWFkZXJzPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG9wZXJhdGlvbk5hbWUgdG8gdXNlIHdoZW4gZXhlY3V0aW5nIHRoZSBjdXJyZW50IG9wZXJhdGlvbi5cbiAgICogT3ZlcnJpZGVzIHRoZSBkcm9wZG93biB3aGVuIG11bHRpcGxlIG9wZXJhdGlvbnMgYXJlIHByZXNlbnQuXG4gICAqL1xuICBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogcHJvdmlkZSBhIGpzb24gc3RyaW5nIHRoYXQgY29udHJvbHMgdGhlIHJlc3VsdHMgZWRpdG9yIHN0YXRlXG4gICAqL1xuICByZXNwb25zZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBjdXN0b20gc3RvcmFnZSBBUEksIGFzIGFuIGFsdGVybmF0aXZlIHRvIGxvY2FsU3RvcmFnZS5cbiAgICogW2BTdG9yYWdlYF0oaHR0cHM6Ly9ncmFwaGlxbC10ZXN0Lm5ldGxpZnkuYXBwL3R5cGVkb2MvaW50ZXJmYWNlcy9ncmFwaGlxbC5zdG9yYWdlLmh0bWxcbiAgICogZGVmYXVsdDogU3RvcmFnZUFQSVxuICAgKi9cbiAgc3RvcmFnZT86IFN0b3JhZ2U7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdFF1ZXJ5IHByZXNlbnQgd2hlbiB0aGUgZWRpdG9yIGlzIGZpcnN0IGxvYWRlZFxuICAgKiBhbmQgdGhlIHVzZXIgaGFzIG5vIGxvY2FsIHF1ZXJ5IGVkaXRpbmcgc3RhdGVcbiAgICogQGRlZmF1bHQgXCJBIHJlYWxseSBsb25nIGdyYXBocWwgIyBjb21tZW50IHRoYXQgd2VsY29tZXMgeW91IHRvIEdyYXBoaVFMXCJcbiAgICovXG4gIGRlZmF1bHRRdWVyeT86IHN0cmluZztcbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgdmFyaWFibGVzIGVkaXRvciBiZSBvcGVuIGJ5IGRlZmF1bHQ/XG4gICAqIGRlZmF1bHQ6IHRydWVcbiAgICovXG4gIGRlZmF1bHRWYXJpYWJsZUVkaXRvck9wZW4/OiBib29sZWFuO1xuICAvKipcbiAgICogU2hvdWxkIHRoZSBcInNlY29uZGFyeSBlZGl0b3JcIiB0aGF0IGNvbnRhaW5zIGJvdGggaGVhZGVycyBvciB2YXJpYWJsZXMgYmUgb3BlbiBieSBkZWZhdWx0P1xuICAgKiBkZWZhdWx0OiB0cnVlXG4gICAqL1xuICBkZWZhdWx0U2Vjb25kYXJ5RWRpdG9yT3Blbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGhlYWRlcnMgZWRpdG9yIGV2ZW4gYmUgZW5hYmxlZD9cbiAgICogTm90ZSB0aGF0IHlvdSBjYW4gc3RpbGwgcGFzcyBjdXN0b20gaGVhZGVycyBpbiB0aGUgZmV0Y2hlclxuICAgKiBkZWZhdWx0OiB0cnVlXG4gICAqL1xuICBoZWFkZXJFZGl0b3JFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNob3VsZCB1c2VyIGhlYWRlciBjaGFuZ2VzIGJlIHBlcnNpc3RlZCB0byBsb2NhbFN0b3JhZ2U/XG4gICAqIGRlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICBzaG91bGRQZXJzaXN0SGVhZGVycz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQcm92aWRlIGFuIGFycmF5IG9mIGZyYWdtZW50IG5vZGVzIG9yIGEgc3RyaW5nIHRvIGFwcGVuZCB0byBxdWVyaWVzLFxuICAgKiBhbmQgZm9yIHZhbGlkYXRpb24gYW5kIGNvbXBsZXRpb25cbiAgICovXG4gIGV4dGVybmFsRnJhZ21lbnRzPzogc3RyaW5nIHwgRnJhZ21lbnREZWZpbml0aW9uTm9kZVtdO1xuICAvKipcbiAgICogSGFuZGxlciBmb3Igd2hlbiBhIHVzZXIgY29waWVzIGEgcXVlcnlcbiAgICovXG4gIG9uQ29weVF1ZXJ5PzogKHF1ZXJ5Pzogc3RyaW5nKSA9PiB2b2lkO1xuICAvKipcbiAgICogSGFuZGxlciBmb3Igd2hlbiBhIHVzZXIgZWRpdHMgYSBxdWVyeS5cbiAgICovXG4gIG9uRWRpdFF1ZXJ5PzogKHF1ZXJ5Pzogc3RyaW5nLCBkb2N1bWVudEFTVD86IERvY3VtZW50Tm9kZSkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEhhbmRsZXIgZm9yIHdoZW4gYSB1c2VyIGVkaXRzIHZhcmlhYmxlcy5cbiAgICovXG4gIG9uRWRpdFZhcmlhYmxlcz86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICAvKipcbiAgICogSGFuZGxlciBmb3Igd2hlbiBhIHVzZXIgZWRpdHMgaGVhZGVycy5cbiAgICovXG4gIG9uRWRpdEhlYWRlcnM/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEhhbmRsZXIgZm9yIHdoZW4gYSB1c2VyIGVkaXRzIG9wZXJhdGlvbiBuYW1lc1xuICAgKi9cbiAgb25FZGl0T3BlcmF0aW9uTmFtZT86IChvcGVyYXRpb25OYW1lOiBzdHJpbmcpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBIYW5kbGVyIGZvciB3aGVuIHRoZSB1c2VyIHRvZ2dsZXMgdGhlIGRvYyBwYW5lXG4gICAqL1xuICBvblRvZ2dsZURvY3M/OiAoZG9jRXhwbG9yZXJPcGVuOiBib29sZWFuKSA9PiB2b2lkO1xuICAvKipcbiAgICogQSBjdXN0b20gZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoaWNoIGZpZWxkIGxlYWZzIGFyZSBhdXRvbWF0aWNhbGx5XG4gICAqIGFkZGVkIHdoZW4gZmlsbCBsZWFmcyBjb21tYW5kIGlzIHVzZWRcbiAgICovXG4gIGdldERlZmF1bHRGaWVsZE5hbWVzPzogR2V0RGVmYXVsdEZpZWxkTmFtZXNGbjtcbiAgLyoqXG4gICAqIFRoZSBDb2RlTWlycm9yIDUgZWRpdG9yIHRoZW1lIHlvdSdkIGxpa2UgdG8gdXNlXG4gICAqXG4gICAqL1xuICBlZGl0b3JUaGVtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBDb2RlTWlycm9yIDUgZWRpdG9yIGtleWJpbmRpbmdzIHlvdSdkIGxpa2UgdG8gdXNlXG4gICAqXG4gICAqIE5vdGU6IG1heSBiZSBkZXByZWNhdGVkIGZvciBtb25hY29cbiAgICpcbiAgICogU2VlOiBodHRwczovL2NvZGVtaXJyb3IubmV0LzUvZG9jL21hbnVhbC5odG1sI29wdGlvbl9rZXlNYXBcbiAgICpcbiAgICogQGRlZmF1bHQgJ3N1YmxpbWUnXG4gICAqL1xuICBrZXlNYXA/OiBLZXlNYXA7XG4gIC8qKlxuICAgKiBPbiBoaXN0b3J5IHBhbmUgdG9nZ2xlIGV2ZW50XG4gICAqL1xuICBvblRvZ2dsZUhpc3Rvcnk/OiAoaGlzdG9yeVBhbmVPcGVuOiBib29sZWFuKSA9PiB2b2lkO1xuICAvKipcbiAgICogQ3VzdG9tIHJlc3VsdHMgdG9vbHRpcCBjb21wb25lbnRcbiAgICovXG4gIFJlc3VsdHNUb29sdGlwPzogUmVzcG9uc2VUb29sdGlwVHlwZTtcbiAgLyoqXG4gICAqIGRlY2lkZSB3aGV0aGVyIHNjaGVtYSByZXNwb25zZXMgc2hvdWxkIGJlIHZhbGlkYXRlZC5cbiAgICpcbiAgICogZGVmYXVsdDogZmFsc2VcbiAgICovXG4gIGRhbmdlcm91c2x5QXNzdW1lU2NoZW1hSXNWYWxpZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmFibGUgbmV3IGludHJvc3BlY3Rpb25RdWVyeSBvcHRpb24gYGlucHV0VmFsdWVEZXByZWNhdGlvbmBcbiAgICogREFOR0VSOiB5b3VyIHNlcnZlciBtdXN0IGJlIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCB0aGlzIG5ldyBmZWF0dXJlLFxuICAgKiBvciBlbHNlIGludHJvc3BlY3Rpb24gd2lsbCBmYWlsIHdpdGggYW4gaW52YWxpZCBxdWVyeVxuICAgKlxuICAgKiBkZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgaW5wdXRWYWx1ZURlcHJlY2F0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVuYWJsZSBuZXcgaW50cm9zcGVjdGlvblF1ZXJ5IG9wdGlvbiBgc2NoZW1hRGVzY3JpcHRpb25gLCB3aGljaCBleHBlY3RzIHRoZSBgX19TY2hlbWEuZGVzY3JpcHRpb25gIGZpZWxkXG4gICAqIERBTkdFUjogeW91ciBzZXJ2ZXIgbXVzdCBiZSBjb25maWd1cmVkIHRvIHN1cHBvcnQgYSBgX19TY2hlbWEuZGVzY3JpcHRpb25gIGZpZWxkIG9uXG4gICAqIGludHJvc3BlY3Rpb24gb3IgaXQgd2lsbCBmYWlsIHdpdGggYW4gaW52YWxpZCBxdWVyeS5cbiAgICpcbiAgICogZGVmYXVsdDogZmFsc2VcbiAgICovXG4gIHNjaGVtYURlc2NyaXB0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wZXJhdGlvbk5hbWUgdG8gdXNlIGZvciBpbnRyb3NwZWN0aW9uIHF1ZXJpZXNcbiAgICpcbiAgICogZGVmYXVsdDogZmFsc2VcbiAgICpcbiAgICovXG4gIGludHJvc3BlY3Rpb25RdWVyeU5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTZXQgY29kZW1pcnJvciBlZGl0b3JzIHRvIHJlYWRPbmx5IHN0YXRlXG4gICAqL1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIGRvYyBleHBsb3JlciBzdGF0ZSBieSBkZWZhdWx0L3Byb2dyYW1tYXRpY2FsbHlcbiAgICpcbiAgICogZGVmYXVsdDogZmFsc2VcbiAgICovXG4gIGRvY0V4cGxvcmVyT3Blbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gdG9vbGJhciBjb25maWd1cmF0aW9uXG4gICAqL1xuICB0b29sYmFyPzogR3JhcGhpUUxUb29sYmFyQ29uZmlnO1xuICAvKipcbiAgICogTWF4IHF1ZXJ5IGhpc3RvcnkgdG8gcmV0YWluXG4gICAqIGRlZmF1bHQ6IDIwXG4gICAqL1xuICBtYXhIaXN0b3J5TGVuZ3RoPzogbnVtYmVyO1xuICAvKipcbiAgICogQ2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIG9uY2UgYSByZW1vdGUgc2NoZW1hIGhhcyBiZWVuIGZldGNoZWQuXG4gICAqL1xuICBvblNjaGVtYUNoYW5nZT86IChzY2hlbWE6IEdyYXBoUUxTY2hlbWEpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDb250ZW50IHRvIHBsYWNlIGJlZm9yZSB0aGUgdG9wIGJhciAobG9nbykuXG4gICAqL1xuICBiZWZvcmVUb3BCYXJDb250ZW50PzogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbDtcblxuICAvKipcbiAgICogV2hldGhlciB0YWJzIHNob3VsZCBiZSBlbmFibGVkLlxuICAgKiBkZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgdGFicz86XG4gICAgfCBib29sZWFuXG4gICAgfCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDYWxsYmFjayB0aGF0IGlzIGludm9rZWQgb25UYWJDaGFuZ2UuXG4gICAgICAgICAqL1xuICAgICAgICBvblRhYkNoYW5nZT86ICh0YWI6IFRhYnNTdGF0ZSkgPT4gdm9pZDtcbiAgICAgIH07XG5cbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoZSB0b3AtbGV2ZWwgUmVhY3QgY29tcG9uZW50IGZvciBHcmFwaGlRTCwgaW50ZW5kZWQgdG8gZW5jb21wYXNzIHRoZSBlbnRpcmVcbiAqIGJyb3dzZXIgdmlld3BvcnQuXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaGlxbCN1c2FnZVxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhpUUwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8R3JhcGhpUUxQcm9wcz4ge1xuICByZWY6IEdyYXBoaVFMV2l0aENvbnRleHQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogR3JhcGhpUUxQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgd2luZG93LmcgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEdyYXBoaVFMUHJvdmlkZXJzXG4gICAgICAgIHsuLi50aGlzLnByb3BzfVxuICAgICAgICByZWY9e25vZGUgPT4ge1xuICAgICAgICAgIHRoaXMucmVmID0gbm9kZTtcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHF1ZXJ5IGVkaXRvciBDb2RlTWlycm9yIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcHVibGljXG4gICAqL1xuICBwdWJsaWMgZ2V0UXVlcnlFZGl0b3IoKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgJ1RoZSBtZXRob2QgYEdyYXBoaVFMLmdldFF1ZXJ5RWRpdG9yYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbi4gVG8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgZWRpdG9yIHlvdSBjYW4gdXNlIHRoZSBgcXVlcnlgIHByb3AuIFRvIHJlYWN0IG9uIGNoYW5nZXMgb2YgdGhlIGVkaXRvciB2YWx1ZSB5b3UgY2FuIHBhc3MgYSBjYWxsYmFjayB0byB0aGUgYG9uRWRpdFF1ZXJ5YCBwcm9wLicsXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5yZWY/LmdldFF1ZXJ5RWRpdG9yKCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZhcmlhYmxlIGVkaXRvciBDb2RlTWlycm9yIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcHVibGljXG4gICAqL1xuICBwdWJsaWMgZ2V0VmFyaWFibGVFZGl0b3IoKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgJ1RoZSBtZXRob2QgYEdyYXBoaVFMLmdldFZhcmlhYmxlRWRpdG9yYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbi4gVG8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgZWRpdG9yIHlvdSBjYW4gdXNlIHRoZSBgdmFyaWFibGVzYCBwcm9wLiBUbyByZWFjdCBvbiBjaGFuZ2VzIG9mIHRoZSBlZGl0b3IgdmFsdWUgeW91IGNhbiBwYXNzIGEgY2FsbGJhY2sgdG8gdGhlIGBvbkVkaXRWYXJpYWJsZXNgIHByb3AuJyxcbiAgICApO1xuICAgIHJldHVybiB0aGlzLnJlZj8uZ2V0VmFyaWFibGVFZGl0b3IoKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaGVhZGVyIGVkaXRvciBDb2RlTWlycm9yIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcHVibGljXG4gICAqL1xuICBwdWJsaWMgZ2V0SGVhZGVyRWRpdG9yKCkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdUaGUgbWV0aG9kIGBHcmFwaGlRTC5nZXRIZWFkZXJFZGl0b3JgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uLiBUbyBzZXQgdGhlIHZhbHVlIG9mIHRoZSBlZGl0b3IgeW91IGNhbiB1c2UgdGhlIGBoZWFkZXJzYCBwcm9wLiBUbyByZWFjdCBvbiBjaGFuZ2VzIG9mIHRoZSBlZGl0b3IgdmFsdWUgeW91IGNhbiBwYXNzIGEgY2FsbGJhY2sgdG8gdGhlIGBvbkVkaXRIZWFkZXJzYCBwcm9wLicsXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5yZWY/LmdldEhlYWRlckVkaXRvcigpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaCBhbGwgQ29kZU1pcnJvciBpbnN0YW5jZXMuXG4gICAqXG4gICAqIEBwdWJsaWNcbiAgICovXG4gIHB1YmxpYyByZWZyZXNoKCkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdUaGUgbWV0aG9kIGBHcmFwaGlRTC5yZWZyZXNoYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbi4gQWxyZWFkeSBub3csIGFsbCBlZGl0b3JzIHNob3VsZCBhdXRvbWF0aWNhbGx5IHJlZnJlc2ggd2hlbiB0aGVpciBzaXplIGNoYW5nZXMuJyxcbiAgICApO1xuICAgIHRoaXMucmVmPy5yZWZyZXNoKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5zcGVjdCB0aGUgcXVlcnksIGF1dG9tYXRpY2FsbHkgZmlsbGluZyBpbiBzZWxlY3Rpb24gc2V0cyBmb3Igbm9uLWxlYWZcbiAgICogZmllbGRzIHdoaWNoIGRvIG5vdCB5ZXQgaGF2ZSB0aGVtLlxuICAgKlxuICAgKiBAcHVibGljXG4gICAqL1xuICBwdWJsaWMgYXV0b0NvbXBsZXRlTGVhZnMoKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgJ1RoZSBtZXRob2QgYEdyYXBoaVFMLmF1dG9Db21wbGV0ZUxlYWZzYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbi4gUGxlYXNlIHN3aXRjaCB0byB1c2luZyB0aGUgYGF1dG9Db21wbGV0ZUxlYWZzYCBmdW5jdGlvbiBwcm92aWRlZCBieSB0aGUgYEVkaXRvckNvbnRleHRgIGZyb20gdGhlIGBAZ3JhcGhpcWwvcmVhY3RgIHBhY2thZ2UuJyxcbiAgICApO1xuICAgIHJldHVybiB0aGlzLnJlZj8uYXV0b0NvbXBsZXRlTGVhZnMoKTtcbiAgfVxuXG4gIC8vIFN0YXRpYyBtZXRob2RzXG5cbiAgc3RhdGljIGZvcm1hdFJlc3VsdCA9IChyZXN1bHQ6IGFueSk6IHN0cmluZyA9PiB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgJ1RoZSBmdW5jdGlvbiBgR3JhcGhpUUwuZm9ybWF0UmVzdWx0YCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbi4gUGxlYXNlIHN3aXRjaCB0byB1c2luZyB0aGUgYGZvcm1hdFJlc3VsdGAgZnVuY3Rpb24gcHJvdmlkZWQgYnkgdGhlIGBAZ3JhcGhpcWwvdG9vbGtpdGAgcGFja2FnZS4nLFxuICAgICk7XG4gICAgcmV0dXJuIGZvcm1hdFJlc3VsdChyZXN1bHQpO1xuICB9O1xuXG4gIHN0YXRpYyBmb3JtYXRFcnJvciA9IChlcnJvcjogYW55KTogc3RyaW5nID0+IHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICAnVGhlIGZ1bmN0aW9uIGBHcmFwaGlRTC5mb3JtYXRFcnJvcmAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24uIFBsZWFzZSBzd2l0Y2ggdG8gdXNpbmcgdGhlIGBmb3JtYXRFcnJvcmAgZnVuY3Rpb24gcHJvdmlkZWQgYnkgdGhlIGBAZ3JhcGhpcWwvdG9vbGtpdGAgcGFja2FnZS4nLFxuICAgICk7XG4gICAgcmV0dXJuIGZvcm1hdEVycm9yKGVycm9yKTtcbiAgfTtcblxuICAvLyBFeHBvcnQgbWFpbiB3aW5kb3dzL3BhbmVzIHRvIGJlIHVzZWQgc2VwYXJhdGVseSBpZiBkZXNpcmVkLlxuICBzdGF0aWMgTG9nbyA9IEdyYXBoaVFMTG9nbztcbiAgc3RhdGljIFRvb2xiYXIgPSBHcmFwaGlRTFRvb2xiYXI7XG4gIHN0YXRpYyBGb290ZXIgPSBHcmFwaGlRTEZvb3RlcjtcbiAgc3RhdGljIFF1ZXJ5RWRpdG9yID0gUXVlcnlFZGl0b3I7XG4gIHN0YXRpYyBWYXJpYWJsZUVkaXRvciA9IFZhcmlhYmxlRWRpdG9yO1xuICBzdGF0aWMgSGVhZGVyRWRpdG9yID0gSGVhZGVyRWRpdG9yO1xuICBzdGF0aWMgUmVzdWx0Vmlld2VyID0gUmVzdWx0Vmlld2VyO1xuXG4gIC8vIEFkZCBhIGJ1dHRvbiB0byB0aGUgVG9vbGJhci5cbiAgc3RhdGljIEJ1dHRvbiA9IFRvb2xiYXJCdXR0b247XG4gIHN0YXRpYyBUb29sYmFyQnV0dG9uID0gVG9vbGJhckJ1dHRvbjsgLy8gRG9uJ3QgYnJlYWsgZXhpc3RpbmcgQVBJLlxuXG4gIC8vIEFkZCBhIGdyb3VwIG9mIGJ1dHRvbnMgdG8gdGhlIFRvb2xiYXJcbiAgc3RhdGljIEdyb3VwID0gVG9vbGJhckdyb3VwO1xuXG4gIC8vIEFkZCBhIG1lbnUgb2YgaXRlbXMgdG8gdGhlIFRvb2xiYXIuXG4gIHN0YXRpYyBNZW51ID0gVG9vbGJhck1lbnU7XG4gIHN0YXRpYyBNZW51SXRlbSA9IFRvb2xiYXJNZW51SXRlbTtcbn1cblxuY29uc3QgR3JhcGhpUUxQcm92aWRlcnM6IEZvcndhcmRSZWZFeG90aWNDb21wb25lbnQ8XG4gIEdyYXBoaVFMUHJvcHMgJiBSZWZBdHRyaWJ1dGVzPEdyYXBoaVFMV2l0aENvbnRleHQ+XG4+ID0gZm9yd2FyZFJlZjxHcmFwaGlRTFdpdGhDb250ZXh0LCBHcmFwaGlRTFByb3BzPihmdW5jdGlvbiBHcmFwaGlRTFByb3ZpZGVycyhcbiAge1xuICAgIGRhbmdlcm91c2x5QXNzdW1lU2NoZW1hSXNWYWxpZCxcbiAgICBkb2NFeHBsb3Jlck9wZW4sXG4gICAgZXh0ZXJuYWxGcmFnbWVudHMsXG4gICAgZmV0Y2hlcixcbiAgICBoZWFkZXJzLFxuICAgIGlucHV0VmFsdWVEZXByZWNhdGlvbixcbiAgICBpbnRyb3NwZWN0aW9uUXVlcnlOYW1lLFxuICAgIG1heEhpc3RvcnlMZW5ndGgsXG4gICAgb25FZGl0T3BlcmF0aW9uTmFtZSxcbiAgICBvblNjaGVtYUNoYW5nZSxcbiAgICBvblRvZ2dsZUhpc3RvcnksXG4gICAgb25Ub2dnbGVEb2NzLFxuICAgIG9wZXJhdGlvbk5hbWUsXG4gICAgcXVlcnksXG4gICAgcmVzcG9uc2UsXG4gICAgc3RvcmFnZSxcbiAgICBzY2hlbWEsXG4gICAgc2NoZW1hRGVzY3JpcHRpb24sXG4gICAgc2hvdWxkUGVyc2lzdEhlYWRlcnMsXG4gICAgdmFsaWRhdGlvblJ1bGVzLFxuICAgIHZhcmlhYmxlcyxcbiAgICAuLi5wcm9wc1xuICB9LFxuICByZWYsXG4pIHtcbiAgLy8gRW5zdXJlIHByb3BzIGFyZSBjb3JyZWN0XG4gIGlmICh0eXBlb2YgZmV0Y2hlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0dyYXBoaVFMIHJlcXVpcmVzIGEgZmV0Y2hlciBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0b3JhZ2VDb250ZXh0UHJvdmlkZXIgc3RvcmFnZT17c3RvcmFnZX0+XG4gICAgICA8SGlzdG9yeUNvbnRleHRQcm92aWRlclxuICAgICAgICBtYXhIaXN0b3J5TGVuZ3RoPXttYXhIaXN0b3J5TGVuZ3RofVxuICAgICAgICBvblRvZ2dsZT17b25Ub2dnbGVIaXN0b3J5fVxuICAgICAgPlxuICAgICAgICA8RWRpdG9yQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgZGVmYXVsdFF1ZXJ5PXtwcm9wcy5kZWZhdWx0UXVlcnl9XG4gICAgICAgICAgZXh0ZXJuYWxGcmFnbWVudHM9e2V4dGVybmFsRnJhZ21lbnRzfVxuICAgICAgICAgIGhlYWRlcnM9e2hlYWRlcnN9XG4gICAgICAgICAgb25FZGl0T3BlcmF0aW9uTmFtZT17b25FZGl0T3BlcmF0aW9uTmFtZX1cbiAgICAgICAgICBvblRhYkNoYW5nZT17XG4gICAgICAgICAgICB0eXBlb2YgcHJvcHMudGFicyA9PT0gJ29iamVjdCcgPyBwcm9wcy50YWJzLm9uVGFiQ2hhbmdlIDogdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIHF1ZXJ5PXtxdWVyeX1cbiAgICAgICAgICByZXNwb25zZT17cmVzcG9uc2V9XG4gICAgICAgICAgc2hvdWxkUGVyc2lzdEhlYWRlcnM9e3Nob3VsZFBlcnNpc3RIZWFkZXJzfVxuICAgICAgICAgIHZhbGlkYXRpb25SdWxlcz17dmFsaWRhdGlvblJ1bGVzfVxuICAgICAgICAgIHZhcmlhYmxlcz17dmFyaWFibGVzfVxuICAgICAgICA+XG4gICAgICAgICAgPFNjaGVtYUNvbnRleHRQcm92aWRlclxuICAgICAgICAgICAgZGFuZ2Vyb3VzbHlBc3N1bWVTY2hlbWFJc1ZhbGlkPXtkYW5nZXJvdXNseUFzc3VtZVNjaGVtYUlzVmFsaWR9XG4gICAgICAgICAgICBmZXRjaGVyPXtmZXRjaGVyfVxuICAgICAgICAgICAgaW5wdXRWYWx1ZURlcHJlY2F0aW9uPXtpbnB1dFZhbHVlRGVwcmVjYXRpb259XG4gICAgICAgICAgICBpbnRyb3NwZWN0aW9uUXVlcnlOYW1lPXtpbnRyb3NwZWN0aW9uUXVlcnlOYW1lfVxuICAgICAgICAgICAgb25TY2hlbWFDaGFuZ2U9e29uU2NoZW1hQ2hhbmdlfVxuICAgICAgICAgICAgc2NoZW1hPXtzY2hlbWF9XG4gICAgICAgICAgICBzY2hlbWFEZXNjcmlwdGlvbj17c2NoZW1hRGVzY3JpcHRpb259XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEV4ZWN1dGlvbkNvbnRleHRQcm92aWRlclxuICAgICAgICAgICAgICBmZXRjaGVyPXtmZXRjaGVyfVxuICAgICAgICAgICAgICBvcGVyYXRpb25OYW1lPXtvcGVyYXRpb25OYW1lfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJDb250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICBpc1Zpc2libGU9e2RvY0V4cGxvcmVyT3Blbn1cbiAgICAgICAgICAgICAgICBvblRvZ2dsZVZpc2liaWxpdHk9e29uVG9nZ2xlRG9jc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmFwaGlRTENvbnN1bWVDb250ZXh0cyB7Li4ucHJvcHN9IHJlZj17cmVmfSAvPlxuICAgICAgICAgICAgICA8L0V4cGxvcmVyQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgPC9FeGVjdXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgPC9TY2hlbWFDb250ZXh0UHJvdmlkZXI+XG4gICAgICAgIDwvRWRpdG9yQ29udGV4dFByb3ZpZGVyPlxuICAgICAgPC9IaXN0b3J5Q29udGV4dFByb3ZpZGVyPlxuICAgIDwvU3RvcmFnZUNvbnRleHRQcm92aWRlcj5cbiAgKTtcbn0pIGFzIGFueTtcblxuLy8gQWRkIGEgc2VsZWN0LW9wdGlvbiBpbnB1dCB0byB0aGUgVG9vbGJhci5cbi8vIEdyYXBoaVFMLlNlbGVjdCA9IFRvb2xiYXJTZWxlY3Q7XG4vLyBHcmFwaGlRTC5TZWxlY3RPcHRpb24gPSBUb29sYmFyU2VsZWN0T3B0aW9uO1xuXG50eXBlIEdyYXBoaVFMV2l0aENvbnRleHRQcm92aWRlclByb3BzID0gT21pdDxcbiAgR3JhcGhpUUxQcm9wcyxcbiAgfCAnZGFuZ2Vyb3VzbHlBc3N1bWVTY2hlbWFJc1ZhbGlkJ1xuICB8ICdkZWZhdWx0UXVlcnknXG4gIHwgJ2RvY0V4cGxvcmVyT3BlbidcbiAgfCAnZXh0ZXJuYWxGcmFnbWVudHMnXG4gIHwgJ2ZldGNoZXInXG4gIHwgJ2hlYWRlcnMnXG4gIHwgJ2lucHV0VmFsdWVEZXByZWNhdGlvbidcbiAgfCAnaW50cm9zcGVjdGlvblF1ZXJ5TmFtZSdcbiAgfCAnbWF4SGlzdG9yeUxlbmd0aCdcbiAgfCAnb25FZGl0T3BlcmF0aW9uTmFtZSdcbiAgfCAnb25TY2hlbWFDaGFuZ2UnXG4gIHwgJ29uVG9nZ2xlRG9jcydcbiAgfCAnb25Ub2dnbGVIaXN0b3J5J1xuICB8ICdvcGVyYXRpb25OYW1lJ1xuICB8ICdxdWVyeSdcbiAgfCAncmVzcG9uc2UnXG4gIHwgJ3NjaGVtYSdcbiAgfCAnc2NoZW1hRGVzY3JpcHRpb24nXG4gIHwgJ3Nob3VsZFBlcnNpc3RIZWFkZXJzJ1xuICB8ICdzdG9yYWdlJ1xuICB8ICd2YWxpZGF0aW9uUnVsZXMnXG4gIHwgJ3ZhcmlhYmxlcydcbj47XG5cbmNvbnN0IEdyYXBoaVFMQ29uc3VtZUNvbnRleHRzID0gZm9yd2FyZFJlZjxcbiAgR3JhcGhpUUxXaXRoQ29udGV4dCxcbiAgR3JhcGhpUUxXaXRoQ29udGV4dFByb3ZpZGVyUHJvcHNcbj4oZnVuY3Rpb24gR3JhcGhpUUxDb25zdW1lQ29udGV4dHMoeyBnZXREZWZhdWx0RmllbGROYW1lcywgLi4ucHJvcHMgfSwgcmVmKSB7XG4gIGNvbnN0IGVkaXRvckNvbnRleHQgPSB1c2VFZGl0b3JDb250ZXh0KHsgbm9uTnVsbDogdHJ1ZSB9KTtcbiAgY29uc3QgZXhlY3V0aW9uQ29udGV4dCA9IHVzZUV4ZWN1dGlvbkNvbnRleHQoeyBub25OdWxsOiB0cnVlIH0pO1xuICBjb25zdCBleHBsb3JlckNvbnRleHQgPSB1c2VFeHBsb3JlckNvbnRleHQoKTtcbiAgY29uc3QgaGlzdG9yeUNvbnRleHQgPSB1c2VIaXN0b3J5Q29udGV4dCgpO1xuICBjb25zdCBzY2hlbWFDb250ZXh0ID0gdXNlU2NoZW1hQ29udGV4dCh7IG5vbk51bGw6IHRydWUgfSk7XG4gIGNvbnN0IHN0b3JhZ2VDb250ZXh0ID0gdXNlU3RvcmFnZUNvbnRleHQoKTtcblxuICBjb25zdCBhdXRvQ29tcGxldGVMZWFmcyA9IHVzZUF1dG9Db21wbGV0ZUxlYWZzKHsgZ2V0RGVmYXVsdEZpZWxkTmFtZXMgfSk7XG4gIGNvbnN0IGNvcHkgPSB1c2VDb3B5UXVlcnkoeyBvbkNvcHlRdWVyeTogcHJvcHMub25Db3B5UXVlcnkgfSk7XG4gIGNvbnN0IG1lcmdlID0gdXNlTWVyZ2VRdWVyeSgpO1xuICBjb25zdCBwcmV0dGlmeSA9IHVzZVByZXR0aWZ5RWRpdG9ycygpO1xuXG4gIGNvbnN0IGRvY1Jlc2l6ZSA9IHVzZURyYWdSZXNpemUoe1xuICAgIGRlZmF1bHRTaXplUmVsYXRpb246IDMsXG4gICAgZGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcsXG4gICAgaW5pdGlhbGx5SGlkZGVuOiBleHBsb3JlckNvbnRleHQ/LmlzVmlzaWJsZSA/IHVuZGVmaW5lZCA6ICdzZWNvbmQnLFxuICAgIG9uSGlkZGVuRWxlbWVudENoYW5nZTogcmVzaXphYmxlRWxlbWVudCA9PiB7XG4gICAgICBpZiAocmVzaXphYmxlRWxlbWVudCA9PT0gJ3NlY29uZCcpIHtcbiAgICAgICAgZXhwbG9yZXJDb250ZXh0Py5oaWRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHBsb3JlckNvbnRleHQ/LnNob3coKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNpemVUaHJlc2hvbGRTZWNvbmQ6IDIwMCxcbiAgICBzdG9yYWdlS2V5OiAnZG9jRXhwbG9yZXJGbGV4JyxcbiAgfSk7XG4gIGNvbnN0IGVkaXRvclJlc2l6ZSA9IHVzZURyYWdSZXNpemUoe1xuICAgIGRpcmVjdGlvbjogJ2hvcml6b250YWwnLFxuICAgIHN0b3JhZ2VLZXk6ICdlZGl0b3JGbGV4JyxcbiAgfSk7XG4gIGNvbnN0IHNlY29uZGFyeUVkaXRvclJlc2l6ZSA9IHVzZURyYWdSZXNpemUoe1xuICAgIGRlZmF1bHRTaXplUmVsYXRpb246IDMsXG4gICAgZGlyZWN0aW9uOiAndmVydGljYWwnLFxuICAgIGluaXRpYWxseUhpZGRlbjogKCgpID0+IHtcbiAgICAgIC8vIGluaXRpYWwgc2Vjb25kYXJ5IGVkaXRvciBwYW5lIG9wZW5cbiAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFyaWFibGVFZGl0b3JPcGVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHByb3BzLmRlZmF1bHRWYXJpYWJsZUVkaXRvck9wZW4gPyB1bmRlZmluZWQgOiAnc2Vjb25kJztcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLmRlZmF1bHRTZWNvbmRhcnlFZGl0b3JPcGVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHByb3BzLmRlZmF1bHRTZWNvbmRhcnlFZGl0b3JPcGVuID8gdW5kZWZpbmVkIDogJ3NlY29uZCc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlZGl0b3JDb250ZXh0LmluaXRpYWxWYXJpYWJsZXMgfHwgZWRpdG9yQ29udGV4dC5pbml0aWFsSGVhZGVyc1xuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6ICdzZWNvbmQnO1xuICAgIH0pKCksXG4gICAgc2l6ZVRocmVzaG9sZFNlY29uZDogNjAsXG4gICAgc3RvcmFnZUtleTogJ3NlY29uZGFyeUVkaXRvckZsZXgnLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxHcmFwaGlRTFdpdGhDb250ZXh0XG4gICAgICB7Li4ucHJvcHN9XG4gICAgICBlZGl0b3JDb250ZXh0PXtlZGl0b3JDb250ZXh0fVxuICAgICAgZXhlY3V0aW9uQ29udGV4dD17ZXhlY3V0aW9uQ29udGV4dH1cbiAgICAgIGV4cGxvcmVyQ29udGV4dD17ZXhwbG9yZXJDb250ZXh0fVxuICAgICAgaGlzdG9yeUNvbnRleHQ9e2hpc3RvcnlDb250ZXh0fVxuICAgICAgc2NoZW1hQ29udGV4dD17c2NoZW1hQ29udGV4dH1cbiAgICAgIHN0b3JhZ2VDb250ZXh0PXtzdG9yYWdlQ29udGV4dH1cbiAgICAgIGF1dG9Db21wbGV0ZUxlYWZzPXthdXRvQ29tcGxldGVMZWFmc31cbiAgICAgIGNvcHk9e2NvcHl9XG4gICAgICBtZXJnZT17bWVyZ2V9XG4gICAgICBwcmV0dGlmeT17cHJldHRpZnl9XG4gICAgICBkb2NSZXNpemU9e2RvY1Jlc2l6ZX1cbiAgICAgIGVkaXRvclJlc2l6ZT17ZWRpdG9yUmVzaXplfVxuICAgICAgc2Vjb25kYXJ5RWRpdG9yUmVzaXplPXtzZWNvbmRhcnlFZGl0b3JSZXNpemV9XG4gICAgICByZWY9e3JlZn1cbiAgICAvPlxuICApO1xufSk7XG5cbnR5cGUgR3JhcGhpUUxXaXRoQ29udGV4dENvbnN1bWVyUHJvcHMgPSBPbWl0PFxuICBHcmFwaGlRTFdpdGhDb250ZXh0UHJvdmlkZXJQcm9wcyxcbiAgJ2ZldGNoZXInIHwgJ2dldERlZmF1bHRGaWVsZE5hbWVzJ1xuPiAmIHtcbiAgZWRpdG9yQ29udGV4dDogRWRpdG9yQ29udGV4dFR5cGU7XG4gIGV4ZWN1dGlvbkNvbnRleHQ6IEV4ZWN1dGlvbkNvbnRleHRUeXBlO1xuICBleHBsb3JlckNvbnRleHQ6IEV4cGxvcmVyQ29udGV4dFR5cGUgfCBudWxsO1xuICBoaXN0b3J5Q29udGV4dDogSGlzdG9yeUNvbnRleHRUeXBlIHwgbnVsbDtcbiAgc2NoZW1hQ29udGV4dDogU2NoZW1hQ29udGV4dFR5cGU7XG4gIHN0b3JhZ2VDb250ZXh0OiBTdG9yYWdlQ29udGV4dFR5cGUgfCBudWxsO1xuXG4gIGF1dG9Db21wbGV0ZUxlYWZzKCk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29weSgpOiB2b2lkO1xuICBtZXJnZSgpOiB2b2lkO1xuICBwcmV0dGlmeSgpOiB2b2lkO1xuXG4gIGRvY1Jlc2l6ZTogUmV0dXJuVHlwZTx0eXBlb2YgdXNlRHJhZ1Jlc2l6ZT47XG4gIGVkaXRvclJlc2l6ZTogUmV0dXJuVHlwZTx0eXBlb2YgdXNlRHJhZ1Jlc2l6ZT47XG4gIHNlY29uZGFyeUVkaXRvclJlc2l6ZTogUmV0dXJuVHlwZTx0eXBlb2YgdXNlRHJhZ1Jlc2l6ZT47XG59O1xuXG5leHBvcnQgdHlwZSBHcmFwaGlRTFN0YXRlID0ge1xuICBhY3RpdmVTZWNvbmRhcnlFZGl0b3I6ICd2YXJpYWJsZScgfCAnaGVhZGVyJztcbn07XG5cbmNsYXNzIEdyYXBoaVFMV2l0aENvbnRleHQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIEdyYXBoaVFMV2l0aENvbnRleHRDb25zdW1lclByb3BzLFxuICBHcmFwaGlRTFN0YXRlXG4+IHtcbiAgY29uc3RydWN0b3IocHJvcHM6IEdyYXBoaVFMV2l0aENvbnRleHRDb25zdW1lclByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBzdGF0ZVxuICAgIHRoaXMuc3RhdGUgPSB7IGFjdGl2ZVNlY29uZGFyeUVkaXRvcjogJ3ZhcmlhYmxlJyB9O1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheSh0aGlzLnByb3BzLmNoaWxkcmVuKTtcblxuICAgIGNvbnN0IGxvZ28gPSBmaW5kKGNoaWxkcmVuLCBjaGlsZCA9PlxuICAgICAgaXNDaGlsZENvbXBvbmVudFR5cGUoY2hpbGQsIEdyYXBoaVFMLkxvZ28pLFxuICAgICkgfHwgPEdyYXBoaVFMLkxvZ28gLz47XG5cbiAgICBjb25zdCB0b29sYmFyID0gZmluZChjaGlsZHJlbiwgY2hpbGQgPT5cbiAgICAgIGlzQ2hpbGRDb21wb25lbnRUeXBlKGNoaWxkLCBHcmFwaGlRTC5Ub29sYmFyKSxcbiAgICApIHx8IChcbiAgICAgIDxHcmFwaGlRTC5Ub29sYmFyPlxuICAgICAgICA8VG9vbGJhckJ1dHRvblxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMucHJldHRpZnkoKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIHRpdGxlPVwiUHJldHRpZnkgUXVlcnkgKFNoaWZ0LUN0cmwtUClcIlxuICAgICAgICAgIGxhYmVsPVwiUHJldHRpZnlcIlxuICAgICAgICAvPlxuICAgICAgICA8VG9vbGJhckJ1dHRvblxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMubWVyZ2UoKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIHRpdGxlPVwiTWVyZ2UgUXVlcnkgKFNoaWZ0LUN0cmwtTSlcIlxuICAgICAgICAgIGxhYmVsPVwiTWVyZ2VcIlxuICAgICAgICAvPlxuICAgICAgICA8VG9vbGJhckJ1dHRvblxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMuY29weSgpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgdGl0bGU9XCJDb3B5IFF1ZXJ5IChTaGlmdC1DdHJsLUMpXCJcbiAgICAgICAgICBsYWJlbD1cIkNvcHlcIlxuICAgICAgICAvPlxuICAgICAgICA8VG9vbGJhckJ1dHRvblxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMucHJvcHMuaGlzdG9yeUNvbnRleHQ/LnRvZ2dsZSgpfVxuICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgIHRoaXMucHJvcHMuaGlzdG9yeUNvbnRleHQ/LmlzVmlzaWJsZVxuICAgICAgICAgICAgICA/ICdIaWRlIEhpc3RvcnknXG4gICAgICAgICAgICAgIDogJ1Nob3cgSGlzdG9yeSdcbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9XCJIaXN0b3J5XCJcbiAgICAgICAgLz5cbiAgICAgICAgPFRvb2xiYXJCdXR0b25cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLnByb3BzLnNjaGVtYUNvbnRleHQuaW50cm9zcGVjdCgpfVxuICAgICAgICAgIHRpdGxlPVwiRmV0Y2ggR3JhcGhRTCBzY2hlbWEgdXNpbmcgaW50cm9zcGVjdGlvbiAoU2hpZnQtQ3RybC1SKVwiXG4gICAgICAgICAgbGFiZWw9XCJJbnRyb3NwZWN0XCJcbiAgICAgICAgLz5cbiAgICAgICAge3RoaXMucHJvcHMudG9vbGJhcj8uYWRkaXRpb25hbENvbnRlbnRcbiAgICAgICAgICA/IHRoaXMucHJvcHMudG9vbGJhci5hZGRpdGlvbmFsQ29udGVudFxuICAgICAgICAgIDogbnVsbH1cbiAgICAgIDwvR3JhcGhpUUwuVG9vbGJhcj5cbiAgICApO1xuXG4gICAgY29uc3QgZm9vdGVyID0gZmluZChjaGlsZHJlbiwgY2hpbGQgPT5cbiAgICAgIGlzQ2hpbGRDb21wb25lbnRUeXBlKGNoaWxkLCBHcmFwaGlRTC5Gb290ZXIpLFxuICAgICk7XG5cbiAgICBjb25zdCBoZWFkZXJFZGl0b3JFbmFibGVkID0gdGhpcy5wcm9wcy5oZWFkZXJFZGl0b3JFbmFibGVkID8/IHRydWU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBkYXRhLXRlc3RpZD1cImdyYXBoaXFsLWNvbnRhaW5lclwiIGNsYXNzTmFtZT1cImdyYXBoaXFsLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IHJlZj17dGhpcy5wcm9wcy5kb2NSZXNpemUuZmlyc3RSZWZ9PlxuICAgICAgICAgIHt0aGlzLnByb3BzLmhpc3RvcnlDb250ZXh0Py5pc1Zpc2libGUgJiYgKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoaXN0b3J5UGFuZVdyYXBcIlxuICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogJzIzMHB4JywgekluZGV4OiA3IH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxRdWVyeUhpc3RvcnkgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJlZGl0b3JXcmFwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRvcEJhcldyYXBcIj5cbiAgICAgICAgICAgICAge3RoaXMucHJvcHMuYmVmb3JlVG9wQmFyQ29udGVudH1cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0b3BCYXJcIj5cbiAgICAgICAgICAgICAgICB7bG9nb31cbiAgICAgICAgICAgICAgICA8RXhlY3V0ZUJ1dHRvbiAvPlxuICAgICAgICAgICAgICAgIHt0b29sYmFyfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAge3RoaXMucHJvcHMuZXhwbG9yZXJDb250ZXh0ICYmXG4gICAgICAgICAgICAgICAgIXRoaXMucHJvcHMuZXhwbG9yZXJDb250ZXh0LmlzVmlzaWJsZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRvY0V4cGxvcmVyU2hvd1wiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmV4cGxvcmVyQ29udGV4dD8uc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZG9jUmVzaXplLnNldEhpZGRlbkVsZW1lbnQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJPcGVuIERvY3VtZW50YXRpb24gRXhwbG9yZXJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBEb2NzXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7dGhpcy5wcm9wcy50YWJzID8gKFxuICAgICAgICAgICAgICA8VGFic1xuICAgICAgICAgICAgICAgIHRhYnNQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiAnU2VsZWN0IGFjdGl2ZSBvcGVyYXRpb24nLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5lZGl0b3JDb250ZXh0LnRhYnMubWFwKCh0YWIsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8VGFiXG4gICAgICAgICAgICAgICAgICAgIGtleT17dGFiLmlkfVxuICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17aW5kZXggPT09IHRoaXMucHJvcHMuZWRpdG9yQ29udGV4dC5hY3RpdmVUYWJJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3RhYi50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgaXNDbG9zZWFibGU9e3RoaXMucHJvcHMuZWRpdG9yQ29udGV4dC50YWJzLmxlbmd0aCA+IDF9XG4gICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5leGVjdXRpb25Db250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmVkaXRvckNvbnRleHQuY2hhbmdlVGFiKGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLmVkaXRvckNvbnRleHQuYWN0aXZlVGFiSW5kZXggPT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmV4ZWN1dGlvbkNvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmVkaXRvckNvbnRleHQuY2xvc2VUYWIoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB0YWJQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICAgICdhcmlhLWNvbnRyb2xzJzogJ3Nlc3Npb25XcmFwJyxcbiAgICAgICAgICAgICAgICAgICAgICBpZDogYHNlc3Npb24tdGFiLSR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPFRhYkFkZEJ1dHRvblxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmVkaXRvckNvbnRleHQuYWRkVGFiKCk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvVGFicz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgICAgICAgICBpZD1cInNlc3Npb25XcmFwXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZWRpdG9yQmFyXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgc2Vzc2lvbi10YWItJHt0aGlzLnByb3BzLmVkaXRvckNvbnRleHQuYWN0aXZlVGFiSW5kZXh9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiByZWY9e3RoaXMucHJvcHMuZWRpdG9yUmVzaXplLmZpcnN0UmVmfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInF1ZXJ5V3JhcFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e3RoaXMucHJvcHMuc2Vjb25kYXJ5RWRpdG9yUmVzaXplLmZpcnN0UmVmfT5cbiAgICAgICAgICAgICAgICAgICAgPFF1ZXJ5RWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgZWRpdG9yVGhlbWU9e3RoaXMucHJvcHMuZWRpdG9yVGhlbWV9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGlja1JlZmVyZW5jZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuZG9jUmVzaXplLmhpZGRlbkVsZW1lbnQgPT09ICdzZWNvbmQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZG9jUmVzaXplLnNldEhpZGRlbkVsZW1lbnQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBrZXlNYXA9e3RoaXMucHJvcHMua2V5TWFwfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ29weVF1ZXJ5PXt0aGlzLnByb3BzLm9uQ29weVF1ZXJ5fVxuICAgICAgICAgICAgICAgICAgICAgIG9uRWRpdD17dGhpcy5wcm9wcy5vbkVkaXRRdWVyeX1cbiAgICAgICAgICAgICAgICAgICAgICByZWFkT25seT17dGhpcy5wcm9wcy5yZWFkT25seX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e3RoaXMucHJvcHMuc2Vjb25kYXJ5RWRpdG9yUmVzaXplLmRyYWdCYXJSZWZ9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2Vjb25kYXJ5LWVkaXRvci10aXRsZSB2YXJpYWJsZS1lZGl0b3ItdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwic2Vjb25kYXJ5LWVkaXRvci10aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B2YXJpYWJsZS1lZGl0b3ItdGl0bGUtdGV4dCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuYWN0aXZlU2Vjb25kYXJ5RWRpdG9yID09PSAndmFyaWFibGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnIGFjdGl2ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2Vjb25kYXJ5RWRpdG9yUmVzaXplLmhpZGRlbkVsZW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlY29uZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5zZWNvbmRhcnlFZGl0b3JSZXNpemUuc2V0SGlkZGVuRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVNlY29uZGFyeUVkaXRvcjogJ3ZhcmlhYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZWRpdG9yQ29udGV4dC52YXJpYWJsZUVkaXRvcj8ucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5IFZhcmlhYmxlc1xuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXJFZGl0b3JFbmFibGVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiAnMjBweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHZhcmlhYmxlLWVkaXRvci10aXRsZS10ZXh0JHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmFjdGl2ZVNlY29uZGFyeUVkaXRvciA9PT0gJ2hlYWRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJyBhY3RpdmUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5zZWNvbmRhcnlFZGl0b3JSZXNpemUuaGlkZGVuRWxlbWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWNvbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNlY29uZGFyeUVkaXRvclJlc2l6ZS5zZXRIaWRkZW5FbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlU2Vjb25kYXJ5RWRpdG9yOiAnaGVhZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZWRpdG9yQ29udGV4dC5oZWFkZXJFZGl0b3I/LnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWVzdCBIZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e3RoaXMucHJvcHMuc2Vjb25kYXJ5RWRpdG9yUmVzaXplLnNlY29uZFJlZn0+XG4gICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidmFyaWFibGUtZWRpdG9yIHNlY29uZGFyeS1lZGl0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5hY3RpdmVTZWNvbmRhcnlFZGl0b3IgPT09ICd2YXJpYWJsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnUXVlcnkgVmFyaWFibGVzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdSZXF1ZXN0IEhlYWRlcnMnXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFZhcmlhYmxlRWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkVkaXQ9e3RoaXMucHJvcHMub25FZGl0VmFyaWFibGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yVGhlbWU9e3RoaXMucHJvcHMuZWRpdG9yVGhlbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkT25seT17dGhpcy5wcm9wcy5yZWFkT25seX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZT17dGhpcy5zdGF0ZS5hY3RpdmVTZWNvbmRhcnlFZGl0b3IgPT09ICd2YXJpYWJsZSd9XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlNYXA9e3RoaXMucHJvcHMua2V5TWFwfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAge2hlYWRlckVkaXRvckVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEhlYWRlckVkaXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU9e3RoaXMuc3RhdGUuYWN0aXZlU2Vjb25kYXJ5RWRpdG9yID09PSAnaGVhZGVyJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yVGhlbWU9e3RoaXMucHJvcHMuZWRpdG9yVGhlbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRWRpdD17dGhpcy5wcm9wcy5vbkVkaXRIZWFkZXJzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkT25seT17dGhpcy5wcm9wcy5yZWFkT25seX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5TWFwPXt0aGlzLnByb3BzLmtleU1hcH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IHJlZj17dGhpcy5wcm9wcy5lZGl0b3JSZXNpemUuZHJhZ0JhclJlZn0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJlZGl0b3ItZHJhZy1iYXJcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiByZWY9e3RoaXMucHJvcHMuZWRpdG9yUmVzaXplLnNlY29uZFJlZn0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZXN1bHRXcmFwXCI+XG4gICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5leGVjdXRpb25Db250ZXh0LmlzRmV0Y2hpbmcgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGlubmVyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPFJlc3VsdFZpZXdlclxuICAgICAgICAgICAgICAgICAgICBlZGl0b3JUaGVtZT17dGhpcy5wcm9wcy5lZGl0b3JUaGVtZX1cbiAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2VUb29sdGlwPXt0aGlzLnByb3BzLlJlc3VsdHNUb29sdGlwfVxuICAgICAgICAgICAgICAgICAgICBrZXlNYXA9e3RoaXMucHJvcHMua2V5TWFwfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIHtmb290ZXJ9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IHJlZj17dGhpcy5wcm9wcy5kb2NSZXNpemUuZHJhZ0JhclJlZn0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2NFeHBsb3JlclJlc2l6ZXJcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiByZWY9e3RoaXMucHJvcHMuZG9jUmVzaXplLnNlY29uZFJlZn0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2NFeHBsb3JlcldyYXBcIj5cbiAgICAgICAgICAgIDxEb2NFeHBsb3JlclxuICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiB0aGlzLnByb3BzLmRvY1Jlc2l6ZS5zZXRIaWRkZW5FbGVtZW50KCdzZWNvbmQnKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIC8vIFB1YmxpYyBtZXRob2RzXG5cbiAgcHVibGljIGdldFF1ZXJ5RWRpdG9yKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmVkaXRvckNvbnRleHQucXVlcnlFZGl0b3IgfHwgbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYXJpYWJsZUVkaXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5lZGl0b3JDb250ZXh0LnZhcmlhYmxlRWRpdG9yIHx8IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0SGVhZGVyRWRpdG9yKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmVkaXRvckNvbnRleHQuaGVhZGVyRWRpdG9yIHx8IG51bGw7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICB0aGlzLnByb3BzLmVkaXRvckNvbnRleHQucXVlcnlFZGl0b3I/LnJlZnJlc2goKTtcbiAgICB0aGlzLnByb3BzLmVkaXRvckNvbnRleHQudmFyaWFibGVFZGl0b3I/LnJlZnJlc2goKTtcbiAgICB0aGlzLnByb3BzLmVkaXRvckNvbnRleHQuaGVhZGVyRWRpdG9yPy5yZWZyZXNoKCk7XG4gICAgdGhpcy5wcm9wcy5lZGl0b3JDb250ZXh0LnJlc3BvbnNlRWRpdG9yPy5yZWZyZXNoKCk7XG4gIH1cblxuICBwdWJsaWMgYXV0b0NvbXBsZXRlTGVhZnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYXV0b0NvbXBsZXRlTGVhZnMoKTtcbiAgfVxufVxuXG4vLyAvLyBDb25maWd1cmUgdGhlIFVJIGJ5IHByb3ZpZGluZyB0aGlzIENvbXBvbmVudCBhcyBhIGNoaWxkIG9mIEdyYXBoaVFMLlxuZnVuY3Rpb24gR3JhcGhpUUxMb2dvPFRQcm9wcz4ocHJvcHM6IFByb3BzV2l0aENoaWxkcmVuPFRQcm9wcz4pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+XG4gICAgICB7cHJvcHMuY2hpbGRyZW4gfHwgKFxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICBHcmFwaFxuICAgICAgICAgIDxlbT5pPC9lbT5cbiAgICAgICAgICBRTFxuICAgICAgICA8L3NwYW4+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5HcmFwaGlRTExvZ28uZGlzcGxheU5hbWUgPSAnR3JhcGhpUUxMb2dvJztcblxuLy8gQ29uZmlndXJlIHRoZSBVSSBieSBwcm92aWRpbmcgdGhpcyBDb21wb25lbnQgYXMgYSBjaGlsZCBvZiBHcmFwaGlRTC5cbmZ1bmN0aW9uIEdyYXBoaVFMVG9vbGJhcjxUUHJvcHM+KHByb3BzOiBQcm9wc1dpdGhDaGlsZHJlbjxUUHJvcHM+KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ0b29sYmFyXCIgcm9sZT1cInRvb2xiYXJcIiBhcmlhLWxhYmVsPVwiRWRpdG9yIENvbW1hbmRzXCI+XG4gICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbkdyYXBoaVFMVG9vbGJhci5kaXNwbGF5TmFtZSA9ICdHcmFwaGlRTFRvb2xiYXInO1xuXG4vLyBDb25maWd1cmUgdGhlIFVJIGJ5IHByb3ZpZGluZyB0aGlzIENvbXBvbmVudCBhcyBhIGNoaWxkIG9mIEdyYXBoaVFMLlxuZnVuY3Rpb24gR3JhcGhpUUxGb290ZXI8VFByb3BzPihwcm9wczogUHJvcHNXaXRoQ2hpbGRyZW48VFByb3BzPikge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJmb290ZXJcIj57cHJvcHMuY2hpbGRyZW59PC9kaXY+O1xufVxuXG5HcmFwaGlRTEZvb3Rlci5kaXNwbGF5TmFtZSA9ICdHcmFwaGlRTEZvb3Rlcic7XG5cbi8vIERldGVybWluZXMgaWYgdGhlIFJlYWN0IGNoaWxkIGlzIG9mIHRoZSBzYW1lIHR5cGUgb2YgdGhlIHByb3ZpZGVkIFJlYWN0IGNvbXBvbmVudFxuZnVuY3Rpb24gaXNDaGlsZENvbXBvbmVudFR5cGU8VCBleHRlbmRzIENvbXBvbmVudFR5cGU+KFxuICBjaGlsZDogYW55LFxuICBjb21wb25lbnQ6IFQsXG4pOiBjaGlsZCBpcyBUIHtcbiAgaWYgKFxuICAgIGNoaWxkPy50eXBlPy5kaXNwbGF5TmFtZSAmJlxuICAgIGNoaWxkLnR5cGUuZGlzcGxheU5hbWUgPT09IGNvbXBvbmVudC5kaXNwbGF5TmFtZVxuICApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBjaGlsZC50eXBlID09PSBjb21wb25lbnQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVFQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUE4TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFGQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBSkE7QUFPQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFyRkE7QUFDQTs7O0FBREE7QUF3RkE7QUFHQTtBQUNBO0FBQ0E7QUE3RkE7QUErRkE7QUFHQTtBQUNBO0FBQ0E7QUFwR0E7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBeUhBO0FBNEJBO0FBeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdEJBO0FBQ0E7QUF5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWkE7QUFlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBVUE7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBSUE7QUFBQTtBQVFBO0FBR0E7QUFDQTtBQUNBO0FBMkJBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQWNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQWxCQTtBQXFCQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFmQTtBQWtCQTtBQUNBO0FBMEJBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFLQTtBQVBBO0FBVUE7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQVVBO0FBSUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRkE7QUFPQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFRQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFjQTtBQUNBO0FBREE7QUFEQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBZkE7QUFzQkE7QUFDQTtBQUNBO0FBSEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFWQTtBQWFBO0FBQUE7QUFFQTtBQUNBO0FBRkE7QUFLQTtBQUtBO0FBQ0E7QUFJQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBREE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBdkJBO0FBNkJBO0FBQ0E7QUFEQTtBQUdBO0FBS0E7QUFDQTtBQUlBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUExQkE7QUFpQ0E7QUFBQTtBQUVBO0FBQ0E7QUFGQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVlBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUhBO0FBV0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBREE7QUFPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXRUQTtBQUNBO0FBQ0E7QUF1VEE7QUFDQTtBQUNBO0FBQUE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/GraphiQL.tsx\n");
|
3099 |
|
3100 | }),
|
3101 |
|
3102 | "./components/HeaderEditor.tsx":
|
3103 |
|
3104 |
|
3105 |
|
3106 |
|
3107 | (function(module, exports, __webpack_require__) {
|
3108 |
|
3109 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\"), __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _react2) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.HeaderEditor = HeaderEditor;\n _react2 = _interopRequireDefault(_react2);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * HeaderEditor\n *\n * An instance of CodeMirror for editing headers to be passed with the GraphQL request.\n *\n */\n function HeaderEditor(_ref) {\n let {\n active,\n ...hookArgs\n } = _ref;\n const ref = (0, _react.useHeaderEditor)(hookArgs);\n return /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"codemirrorWrap\" // This horrible hack is necessary because a simple display none toggle\n // causes one of the editors' gutters to break otherwise.\n ,\n style: {\n position: active ? 'relative' : 'absolute',\n visibility: active ? 'visible' : 'hidden'\n },\n ref: ref\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0hlYWRlckVkaXRvci50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvSGVhZGVyRWRpdG9yLnRzeD9iYmU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyB1c2VIZWFkZXJFZGl0b3IsIFVzZUhlYWRlckVkaXRvckFyZ3MgfSBmcm9tICdAZ3JhcGhpcWwvcmVhY3QnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxudHlwZSBIZWFkZXJFZGl0b3JQcm9wcyA9IFVzZUhlYWRlckVkaXRvckFyZ3MgJiB7IGFjdGl2ZT86IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBIZWFkZXJFZGl0b3JcbiAqXG4gKiBBbiBpbnN0YW5jZSBvZiBDb2RlTWlycm9yIGZvciBlZGl0aW5nIGhlYWRlcnMgdG8gYmUgcGFzc2VkIHdpdGggdGhlIEdyYXBoUUwgcmVxdWVzdC5cbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBIZWFkZXJFZGl0b3IoeyBhY3RpdmUsIC4uLmhvb2tBcmdzIH06IEhlYWRlckVkaXRvclByb3BzKSB7XG4gIGNvbnN0IHJlZiA9IHVzZUhlYWRlckVkaXRvcihob29rQXJncyk7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPVwiY29kZW1pcnJvcldyYXBcIlxuICAgICAgLy8gVGhpcyBob3JyaWJsZSBoYWNrIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGEgc2ltcGxlIGRpc3BsYXkgbm9uZSB0b2dnbGVcbiAgICAgIC8vIGNhdXNlcyBvbmUgb2YgdGhlIGVkaXRvcnMnIGd1dHRlcnMgdG8gYnJlYWsgb3RoZXJ3aXNlLlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgcG9zaXRpb246IGFjdGl2ZSA/ICdyZWxhdGl2ZScgOiAnYWJzb2x1dGUnLFxuICAgICAgICB2aXNpYmlsaXR5OiBhY3RpdmUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyxcbiAgICAgIH19XG4gICAgICByZWY9e3JlZn1cbiAgICAvPlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUhBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQVJBO0FBV0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/HeaderEditor.tsx\n");
|
3110 |
|
3111 | }),
|
3112 |
|
3113 | "./components/QueryEditor.tsx":
|
3114 |
|
3115 |
|
3116 |
|
3117 |
|
3118 | (function(module, exports, __webpack_require__) {
|
3119 |
|
3120 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\"), __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _react2) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.QueryEditor = QueryEditor;\n _react2 = _interopRequireDefault(_react2);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * QueryEditor\n *\n * Maintains an instance of CodeMirror responsible for editing a GraphQL query.\n *\n */\n function QueryEditor(props) {\n const ref = (0, _react.useQueryEditor)(props);\n return /*#__PURE__*/_react2.default.createElement(\"section\", {\n className: \"query-editor\",\n \"aria-label\": \"Query Editor\",\n ref: ref\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1F1ZXJ5RWRpdG9yLnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9RdWVyeUVkaXRvci50c3g/MGEwMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgeyB1c2VRdWVyeUVkaXRvciwgVXNlUXVlcnlFZGl0b3JBcmdzIH0gZnJvbSAnQGdyYXBoaXFsL3JlYWN0JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbi8qKlxuICogUXVlcnlFZGl0b3JcbiAqXG4gKiBNYWludGFpbnMgYW4gaW5zdGFuY2Ugb2YgQ29kZU1pcnJvciByZXNwb25zaWJsZSBmb3IgZWRpdGluZyBhIEdyYXBoUUwgcXVlcnkuXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gUXVlcnlFZGl0b3IocHJvcHM6IFVzZVF1ZXJ5RWRpdG9yQXJncykge1xuICBjb25zdCByZWYgPSB1c2VRdWVyeUVkaXRvcihwcm9wcyk7XG4gIHJldHVybiAoXG4gICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicXVlcnktZWRpdG9yXCIgYXJpYS1sYWJlbD1cIlF1ZXJ5IEVkaXRvclwiIHJlZj17cmVmfSAvPlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/QueryEditor.tsx\n");
|
3121 |
|
3122 | }),
|
3123 |
|
3124 | "./components/QueryHistory.tsx":
|
3125 |
|
3126 |
|
3127 |
|
3128 |
|
3129 | (function(module, exports, __webpack_require__) {
|
3130 |
|
3131 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\"), __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _react2) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.QueryHistory = QueryHistory;\n _exports.QueryHistoryItem = QueryHistoryItem;\n _react2 = _interopRequireWildcard(_react2);\n\n function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\n function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function QueryHistory() {\n const {\n hide,\n items\n } = (0, _react.useHistoryContext)({\n nonNull: true\n });\n return /*#__PURE__*/_react2.default.createElement(\"section\", {\n \"aria-label\": \"History\"\n }, /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"history-title-bar\"\n }, /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"history-title\"\n }, \"History\"), /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"doc-explorer-rhs\"\n }, /*#__PURE__*/_react2.default.createElement(\"button\", {\n className: \"docExplorerHide\",\n onClick: () => hide(),\n \"aria-label\": \"Close History\"\n }, '\\u2715'))), /*#__PURE__*/_react2.default.createElement(\"ul\", {\n className: \"history-contents\"\n }, items.slice().reverse().map((item, i) => {\n return /*#__PURE__*/_react2.default.createElement(QueryHistoryItem, {\n key: `${i}:${item.label || item.query}`,\n item: item\n });\n })));\n }\n\n function QueryHistoryItem(props) {\n var _props$item$query;\n\n const {\n editLabel,\n toggleFavorite\n } = (0, _react.useHistoryContext)({\n nonNull: true\n });\n const selectHistoryItem = (0, _react.useSelectHistoryItem)();\n const editField = (0, _react2.useRef)(null);\n const [isEditable, setIsEditable] = (0, _react2.useState)(false);\n (0, _react2.useEffect)(() => {\n if (isEditable && editField.current) {\n editField.current.focus();\n }\n }, [isEditable]);\n const displayName = props.item.label || props.item.operationName || ((_props$item$query = props.item.query) === null || _props$item$query === void 0 ? void 0 : _props$item$query.split('\\n').filter(line => line.indexOf('#') !== 0).join(''));\n const starIcon = props.item.favorite ? '\\u2605' : '\\u2606';\n return /*#__PURE__*/_react2.default.createElement(\"li\", {\n className: isEditable ? 'editable' : undefined\n }, isEditable ? /*#__PURE__*/_react2.default.createElement(\"input\", {\n type: \"text\",\n defaultValue: props.item.label,\n ref: editField,\n onBlur: e => {\n e.stopPropagation();\n setIsEditable(false);\n editLabel({ ...props.item,\n label: e.target.value\n });\n },\n onKeyDown: e => {\n if (e.keyCode === 13) {\n e.stopPropagation();\n setIsEditable(false);\n editLabel({ ...props.item,\n label: e.currentTarget.value\n });\n }\n },\n placeholder: \"Type a label\"\n }) : /*#__PURE__*/_react2.default.createElement(\"button\", {\n className: \"history-label\",\n onClick: () => {\n selectHistoryItem(props.item);\n }\n }, displayName), /*#__PURE__*/_react2.default.createElement(\"button\", {\n onClick: e => {\n e.stopPropagation();\n setIsEditable(true);\n },\n \"aria-label\": \"Edit label\"\n }, '\\u270e'), /*#__PURE__*/_react2.default.createElement(\"button\", {\n onClick: e => {\n e.stopPropagation();\n toggleFavorite(props.item);\n },\n \"aria-label\": props.item.favorite ? 'Remove favorite' : 'Add favorite'\n }, starIcon));\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1F1ZXJ5SGlzdG9yeS50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvUXVlcnlIaXN0b3J5LnRzeD8yOGY4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCB7XG4gIEhpc3RvcnlDb250ZXh0VHlwZSxcbiAgdXNlSGlzdG9yeUNvbnRleHQsXG4gIHVzZVNlbGVjdEhpc3RvcnlJdGVtLFxufSBmcm9tICdAZ3JhcGhpcWwvcmVhY3QnO1xuaW1wb3J0IHsgUXVlcnlTdG9yZUl0ZW0gfSBmcm9tICdAZ3JhcGhpcWwvdG9vbGtpdCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24gUXVlcnlIaXN0b3J5KCkge1xuICBjb25zdCB7IGhpZGUsIGl0ZW1zIH0gPSB1c2VIaXN0b3J5Q29udGV4dCh7XG4gICAgbm9uTnVsbDogdHJ1ZSxcbiAgfSkgYXMgSGlzdG9yeUNvbnRleHRUeXBlO1xuXG4gIHJldHVybiAoXG4gICAgPHNlY3Rpb24gYXJpYS1sYWJlbD1cIkhpc3RvcnlcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlzdG9yeS10aXRsZS1iYXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaXN0b3J5LXRpdGxlXCI+SGlzdG9yeTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1leHBsb3Jlci1yaHNcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJkb2NFeHBsb3JlckhpZGVcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGlkZSgpfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIEhpc3RvcnlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsnXFx1MjcxNSd9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8dWwgY2xhc3NOYW1lPVwiaGlzdG9yeS1jb250ZW50c1wiPlxuICAgICAgICB7aXRlbXNcbiAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8UXVlcnlIaXN0b3J5SXRlbVxuICAgICAgICAgICAgICAgIGtleT17YCR7aX06JHtpdGVtLmxhYmVsIHx8IGl0ZW0ucXVlcnl9YH1cbiAgICAgICAgICAgICAgICBpdGVtPXtpdGVtfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgIDwvdWw+XG4gICAgPC9zZWN0aW9uPlxuICApO1xufVxuXG50eXBlIFF1ZXJ5SGlzdG9yeUl0ZW1Qcm9wcyA9IHtcbiAgaXRlbTogUXVlcnlTdG9yZUl0ZW07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gUXVlcnlIaXN0b3J5SXRlbShwcm9wczogUXVlcnlIaXN0b3J5SXRlbVByb3BzKSB7XG4gIGNvbnN0IHsgZWRpdExhYmVsLCB0b2dnbGVGYXZvcml0ZSB9ID0gdXNlSGlzdG9yeUNvbnRleHQoeyBub25OdWxsOiB0cnVlIH0pO1xuICBjb25zdCBzZWxlY3RIaXN0b3J5SXRlbSA9IHVzZVNlbGVjdEhpc3RvcnlJdGVtKCk7XG4gIGNvbnN0IGVkaXRGaWVsZCA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2lzRWRpdGFibGUsIHNldElzRWRpdGFibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzRWRpdGFibGUgJiYgZWRpdEZpZWxkLmN1cnJlbnQpIHtcbiAgICAgIGVkaXRGaWVsZC5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbaXNFZGl0YWJsZV0pO1xuXG4gIGNvbnN0IGRpc3BsYXlOYW1lID1cbiAgICBwcm9wcy5pdGVtLmxhYmVsIHx8XG4gICAgcHJvcHMuaXRlbS5vcGVyYXRpb25OYW1lIHx8XG4gICAgcHJvcHMuaXRlbS5xdWVyeVxuICAgICAgPy5zcGxpdCgnXFxuJylcbiAgICAgIC5maWx0ZXIobGluZSA9PiBsaW5lLmluZGV4T2YoJyMnKSAhPT0gMClcbiAgICAgIC5qb2luKCcnKTtcbiAgY29uc3Qgc3Rhckljb24gPSBwcm9wcy5pdGVtLmZhdm9yaXRlID8gJ1xcdTI2MDUnIDogJ1xcdTI2MDYnO1xuICByZXR1cm4gKFxuICAgIDxsaSBjbGFzc05hbWU9e2lzRWRpdGFibGUgPyAnZWRpdGFibGUnIDogdW5kZWZpbmVkfT5cbiAgICAgIHtpc0VkaXRhYmxlID8gKFxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgZGVmYXVsdFZhbHVlPXtwcm9wcy5pdGVtLmxhYmVsfVxuICAgICAgICAgIHJlZj17ZWRpdEZpZWxkfVxuICAgICAgICAgIG9uQmx1cj17ZSA9PiB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgc2V0SXNFZGl0YWJsZShmYWxzZSk7XG4gICAgICAgICAgICBlZGl0TGFiZWwoeyAuLi5wcm9wcy5pdGVtLCBsYWJlbDogZS50YXJnZXQudmFsdWUgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbktleURvd249e2UgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgc2V0SXNFZGl0YWJsZShmYWxzZSk7XG4gICAgICAgICAgICAgIGVkaXRMYWJlbCh7IC4uLnByb3BzLml0ZW0sIGxhYmVsOiBlLmN1cnJlbnRUYXJnZXQudmFsdWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgYSBsYWJlbFwiXG4gICAgICAgIC8+XG4gICAgICApIDogKFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiaGlzdG9yeS1sYWJlbFwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2VsZWN0SGlzdG9yeUl0ZW0ocHJvcHMuaXRlbSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtkaXNwbGF5TmFtZX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICApfVxuICAgICAgPGJ1dHRvblxuICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHNldElzRWRpdGFibGUodHJ1ZSk7XG4gICAgICAgIH19XG4gICAgICAgIGFyaWEtbGFiZWw9XCJFZGl0IGxhYmVsXCJcbiAgICAgID5cbiAgICAgICAgeydcXHUyNzBlJ31cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRvZ2dsZUZhdm9yaXRlKHByb3BzLml0ZW0pO1xuICAgICAgICB9fVxuICAgICAgICBhcmlhLWxhYmVsPXtwcm9wcy5pdGVtLmZhdm9yaXRlID8gJ1JlbW92ZSBmYXZvcml0ZScgOiAnQWRkIGZhdm9yaXRlJ31cbiAgICAgID5cbiAgICAgICAge3N0YXJJY29ufVxuICAgICAgPC9idXR0b24+XG4gICAgPC9saT5cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFIQTtBQVNBO0FBQUE7QUFLQTtBQUVBO0FBQ0E7QUFGQTtBQUtBO0FBSUE7QUFDQTtBQUtBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQU9BO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQWhCQTtBQW9CQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBV0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/QueryHistory.tsx\n");
|
3132 |
|
3133 | }),
|
3134 |
|
3135 | "./components/ResultViewer.tsx":
|
3136 |
|
3137 |
|
3138 |
|
3139 |
|
3140 | (function(module, exports, __webpack_require__) {
|
3141 |
|
3142 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\"), __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _react2) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.ResultViewer = ResultViewer;\n _react2 = _interopRequireDefault(_react2);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * ResultViewer\n *\n * Maintains an instance of CodeMirror for viewing a GraphQL response.\n *\n */\n function ResultViewer(props) {\n const ref = (0, _react.useResponseEditor)(props);\n return /*#__PURE__*/_react2.default.createElement(\"section\", {\n className: \"result-window\",\n \"aria-label\": \"Result Window\",\n \"aria-live\": \"polite\",\n \"aria-atomic\": \"true\",\n ref: ref\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1Jlc3VsdFZpZXdlci50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvUmVzdWx0Vmlld2VyLnRzeD83ZGVhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCB7IHVzZVJlc3BvbnNlRWRpdG9yLCBVc2VSZXNwb25zZUVkaXRvckFyZ3MgfSBmcm9tICdAZ3JhcGhpcWwvcmVhY3QnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBSZXN1bHRWaWV3ZXJcbiAqXG4gKiBNYWludGFpbnMgYW4gaW5zdGFuY2Ugb2YgQ29kZU1pcnJvciBmb3Igdmlld2luZyBhIEdyYXBoUUwgcmVzcG9uc2UuXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVzdWx0Vmlld2VyKHByb3BzOiBVc2VSZXNwb25zZUVkaXRvckFyZ3MpIHtcbiAgY29uc3QgcmVmID0gdXNlUmVzcG9uc2VFZGl0b3IocHJvcHMpO1xuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uXG4gICAgICBjbGFzc05hbWU9XCJyZXN1bHQtd2luZG93XCJcbiAgICAgIGFyaWEtbGFiZWw9XCJSZXN1bHQgV2luZG93XCJcbiAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgICAgcmVmPXtyZWZ9XG4gICAgLz5cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/ResultViewer.tsx\n");
|
3143 |
|
3144 | }),
|
3145 |
|
3146 | "./components/Tabs.tsx":
|
3147 |
|
3148 |
|
3149 |
|
3150 |
|
3151 | (function(module, exports, __webpack_require__) {
|
3152 |
|
3153 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.Tab = Tab;\n _exports.TabAddButton = TabAddButton;\n _exports.Tabs = Tabs;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n /**\n * TODO: extract with other components to @graphiql/react\n */\n function TabCloseButton(props) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n role: \"button\",\n \"aria-pressed\": false,\n className: \"close\",\n \"aria-label\": \"Close Tab\",\n title: \"Close Tab\",\n onClick: ev => {\n ev.stopPropagation();\n props.onClick();\n }\n });\n }\n\n /**\n * Generic tab component that implements wai-aria tab spec\n */\n function Tab(props) {\n return /*#__PURE__*/_react.default.createElement(\"button\", _extends({}, props.tabProps, {\n role: \"tab\",\n type: \"button\",\n \"aria-selected\": props.isActive,\n title: props.title,\n className: `tab${props.isActive ? ' active' : ''}`,\n onClick: props.onSelect\n }), props.title, props.isCloseable ? /*#__PURE__*/_react.default.createElement(TabCloseButton, {\n onClick: () => props.onClose()\n }) : null);\n }\n\n function TabAddButton(props) {\n return /*#__PURE__*/_react.default.createElement(\"button\", {\n onClick: props.onClick,\n className: \"tab-add\",\n title: \"Create new tab\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", null, \"+\"));\n }\n\n /**\n * Generic tablist component that implements wai-aria tab spec\n */\n function Tabs(props) {\n return /*#__PURE__*/_react.default.createElement(\"div\", _extends({\n role: \"tablist\",\n className: \"tabs\"\n }, props.tabsProps), props.children);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1RhYnMudHN4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi9jb21wb25lbnRzL1RhYnMudHN4Pzk2NmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBUT0RPOiBleHRyYWN0IHdpdGggb3RoZXIgY29tcG9uZW50cyB0byBAZ3JhcGhpcWwvcmVhY3RcbiAqL1xuXG5mdW5jdGlvbiBUYWJDbG9zZUJ1dHRvbihwcm9wczogeyBvbkNsaWNrOiAoKSA9PiB2b2lkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIGFyaWEtcHJlc3NlZD17ZmFsc2V9XG4gICAgICBjbGFzc05hbWU9XCJjbG9zZVwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgVGFiXCJcbiAgICAgIHRpdGxlPVwiQ2xvc2UgVGFiXCJcbiAgICAgIG9uQ2xpY2s9e2V2ID0+IHtcbiAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHByb3BzLm9uQ2xpY2soKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn1cblxuZXhwb3J0IHR5cGUgVGFiUHJvcHMgPSB7XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICB0aXRsZTogc3RyaW5nO1xuICBpc0Nsb3NlYWJsZTogYm9vbGVhbjtcbiAgb25TZWxlY3Q6ICgpID0+IHZvaWQ7XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG4gIHRhYlByb3BzPzogUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8e30+O1xufTtcblxuLyoqXG4gKiBHZW5lcmljIHRhYiBjb21wb25lbnQgdGhhdCBpbXBsZW1lbnRzIHdhaS1hcmlhIHRhYiBzcGVjXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUYWIocHJvcHM6IFRhYlByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB7Li4ucHJvcHMudGFiUHJvcHN9XG4gICAgICByb2xlPVwidGFiXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgYXJpYS1zZWxlY3RlZD17cHJvcHMuaXNBY3RpdmV9XG4gICAgICB0aXRsZT17cHJvcHMudGl0bGV9XG4gICAgICBjbGFzc05hbWU9e2B0YWIke3Byb3BzLmlzQWN0aXZlID8gJyBhY3RpdmUnIDogJyd9YH1cbiAgICAgIG9uQ2xpY2s9e3Byb3BzLm9uU2VsZWN0fVxuICAgID5cbiAgICAgIHtwcm9wcy50aXRsZX1cbiAgICAgIHtwcm9wcy5pc0Nsb3NlYWJsZSA/IChcbiAgICAgICAgPFRhYkNsb3NlQnV0dG9uIG9uQ2xpY2s9eygpID0+IHByb3BzLm9uQ2xvc2UoKX0gLz5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvYnV0dG9uPlxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVGFiQWRkQnV0dG9uKHByb3BzOiB7IG9uQ2xpY2s6ICgpID0+IHZvaWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxidXR0b24gb25DbGljaz17cHJvcHMub25DbGlja30gY2xhc3NOYW1lPVwidGFiLWFkZFwiIHRpdGxlPVwiQ3JlYXRlIG5ldyB0YWJcIj5cbiAgICAgIDxzcGFuPis8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICk7XG59XG5cbmV4cG9ydCB0eXBlIFRhYnNQcm9wcyA9IHtcbiAgY2hpbGRyZW46IEFycmF5PFJlYWN0LlJlYWN0Tm9kZT47XG4gIHRhYnNQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPHt9Pjtcbn07XG4vKipcbiAqIEdlbmVyaWMgdGFibGlzdCBjb21wb25lbnQgdGhhdCBpbXBsZW1lbnRzIHdhaS1hcmlhIHRhYiBzcGVjXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUYWJzKHByb3BzOiBUYWJzUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJvbGU9XCJ0YWJsaXN0XCIgY2xhc3NOYW1lPVwidGFic1wiIHsuLi5wcm9wcy50YWJzUHJvcHN9PlxuICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBWUE7QUFDQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQVdBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/Tabs.tsx\n");
|
3154 |
|
3155 | }),
|
3156 |
|
3157 | "./components/ToolbarButton.tsx":
|
3158 |
|
3159 |
|
3160 |
|
3161 |
|
3162 | (function(module, exports, __webpack_require__) {
|
3163 |
|
3164 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.ToolbarButton = void 0;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n /**\n * ToolbarButton\n *\n * A button to use within the Toolbar.\n */\n class ToolbarButton extends _react.default.Component {\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"handleClick\", () => {\n try {\n this.props.onClick();\n this.setState({\n error: null\n });\n } catch (error) {\n if (error instanceof Error) {\n this.setState({\n error\n });\n return;\n }\n\n throw error;\n }\n });\n\n this.state = {\n error: null\n };\n }\n\n render() {\n const {\n error\n } = this.state;\n return /*#__PURE__*/_react.default.createElement(\"button\", {\n className: 'toolbar-button' + (error ? ' error' : ''),\n onClick: this.handleClick,\n title: error ? error.message : this.props.title,\n \"aria-invalid\": error ? 'true' : 'false'\n }, this.props.label);\n }\n\n }\n\n _exports.ToolbarButton = ToolbarButton;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1Rvb2xiYXJCdXR0b24udHN4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi9jb21wb25lbnRzL1Rvb2xiYXJCdXR0b24udHN4PzFlZmEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxudHlwZSBUb29sYmFyQnV0dG9uUHJvcHMgPSB7XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59O1xuXG50eXBlIFRvb2xiYXJCdXR0b25TdGF0ZSA9IHtcbiAgZXJyb3I6IEVycm9yIHwgbnVsbDtcbn07XG5cbi8qKlxuICogVG9vbGJhckJ1dHRvblxuICpcbiAqIEEgYnV0dG9uIHRvIHVzZSB3aXRoaW4gdGhlIFRvb2xiYXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBUb29sYmFyQnV0dG9uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFxuICBUb29sYmFyQnV0dG9uUHJvcHMsXG4gIFRvb2xiYXJCdXR0b25TdGF0ZVxuPiB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBUb29sYmFyQnV0dG9uUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHsgZXJyb3I6IG51bGwgfTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGVycm9yIH0gPSB0aGlzLnN0YXRlO1xuICAgIHJldHVybiAoXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17J3Rvb2xiYXItYnV0dG9uJyArIChlcnJvciA/ICcgZXJyb3InIDogJycpfVxuICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsaWNrfVxuICAgICAgICB0aXRsZT17ZXJyb3IgPyBlcnJvci5tZXNzYWdlIDogdGhpcy5wcm9wcy50aXRsZX1cbiAgICAgICAgYXJpYS1pbnZhbGlkPXtlcnJvciA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgICA+XG4gICAgICAgIHt0aGlzLnByb3BzLmxhYmVsfVxuICAgICAgPC9idXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnByb3BzLm9uQ2xpY2soKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcjogbnVsbCB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBb0JBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUE3QkE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBU0E7QUFDQTtBQW5CQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/ToolbarButton.tsx\n");
|
3165 |
|
3166 | }),
|
3167 |
|
3168 | "./components/ToolbarGroup.tsx":
|
3169 |
|
3170 |
|
3171 |
|
3172 |
|
3173 | (function(module, exports, __webpack_require__) {
|
3174 |
|
3175 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.ToolbarGroup = ToolbarGroup;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * ToolbarGroup\n *\n * A group of associated controls.\n */\n function ToolbarGroup(_ref) {\n let {\n children\n } = _ref;\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"toolbar-button-group\"\n }, children);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1Rvb2xiYXJHcm91cC50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvVG9vbGJhckdyb3VwLnRzeD8xYjkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5cbnR5cGUgVG9vbGJhckdyb3VwUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRvb2xiYXJHcm91cFxuICpcbiAqIEEgZ3JvdXAgb2YgYXNzb2NpYXRlZCBjb250cm9scy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRvb2xiYXJHcm91cCh7IGNoaWxkcmVuIH06IFRvb2xiYXJHcm91cFByb3BzKSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInRvb2xiYXItYnV0dG9uLWdyb3VwXCI+e2NoaWxkcmVufTwvZGl2Pjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/ToolbarGroup.tsx\n");
|
3176 |
|
3177 | }),
|
3178 |
|
3179 | "./components/ToolbarMenu.tsx":
|
3180 |
|
3181 |
|
3182 |
|
3183 |
|
3184 | (function(module, exports, __webpack_require__) {
|
3185 |
|
3186 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.ToolbarMenuItem = _exports.ToolbarMenu = void 0;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n /**\n * ToolbarMenu\n *\n * A menu style button to use within the Toolbar.\n */\n class ToolbarMenu extends _react.default.Component {\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"_node\", null);\n\n _defineProperty(this, \"_listener\", null);\n\n _defineProperty(this, \"handleOpen\", e => {\n preventDefault(e);\n this.setState({\n visible: true\n });\n\n this._subscribe();\n });\n\n this.state = {\n visible: false\n };\n }\n\n componentWillUnmount() {\n this._release();\n }\n\n render() {\n const visible = this.state.visible;\n return /*#__PURE__*/_react.default.createElement(\"a\", {\n className: \"toolbar-menu toolbar-button\",\n onClick: this.handleOpen.bind(this),\n onMouseDown: preventDefault,\n ref: node => {\n if (node) {\n this._node = node;\n }\n },\n title: this.props.title\n }, this.props.label, /*#__PURE__*/_react.default.createElement(\"svg\", {\n width: \"14\",\n height: \"8\"\n }, /*#__PURE__*/_react.default.createElement(\"path\", {\n fill: \"#666\",\n d: \"M 5 1.5 L 14 1.5 L 9.5 7 z\"\n })), /*#__PURE__*/_react.default.createElement(\"ul\", {\n className: 'toolbar-menu-items' + (visible ? ' open' : '')\n }, this.props.children));\n }\n\n _subscribe() {\n if (!this._listener) {\n this._listener = this.handleClick.bind(this);\n document.addEventListener('click', this._listener);\n }\n }\n\n _release() {\n if (this._listener) {\n document.removeEventListener('click', this._listener);\n this._listener = null;\n }\n }\n\n handleClick(e) {\n if (this._node !== e.target) {\n e.preventDefault();\n this.setState({\n visible: false\n });\n\n this._release();\n }\n }\n\n }\n\n _exports.ToolbarMenu = ToolbarMenu;\n\n const ToolbarMenuItem = _ref => {\n let {\n onSelect,\n title,\n label\n } = _ref;\n return /*#__PURE__*/_react.default.createElement(\"li\", {\n onMouseOver: e => {\n e.currentTarget.className = 'hover';\n },\n onMouseOut: e => {\n e.currentTarget.className = '';\n },\n onMouseDown: preventDefault,\n onMouseUp: onSelect,\n title: title\n }, label);\n };\n\n _exports.ToolbarMenuItem = ToolbarMenuItem;\n\n function preventDefault(e) {\n e.preventDefault();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1Rvb2xiYXJNZW51LnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9Ub29sYmFyTWVudS50c3g/MzE1NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgRkMsIE1vdXNlRXZlbnRIYW5kbGVyLCBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5cbnR5cGUgVG9vbGJhck1lbnVQcm9wcyA9IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG50eXBlIFRvb2xiYXJNZW51U3RhdGUgPSB7XG4gIHZpc2libGU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIFRvb2xiYXJNZW51XG4gKlxuICogQSBtZW51IHN0eWxlIGJ1dHRvbiB0byB1c2Ugd2l0aGluIHRoZSBUb29sYmFyLlxuICovXG5leHBvcnQgY2xhc3MgVG9vbGJhck1lbnUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIFRvb2xiYXJNZW51UHJvcHMsXG4gIFRvb2xiYXJNZW51U3RhdGVcbj4ge1xuICBwcml2YXRlIF9ub2RlOiBIVE1MQW5jaG9yRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9saXN0ZW5lcjogdGhpc1snaGFuZGxlQ2xpY2snXSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBUb29sYmFyTWVudVByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7IHZpc2libGU6IGZhbHNlIH07XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl9yZWxlYXNlKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgdmlzaWJsZSA9IHRoaXMuc3RhdGUudmlzaWJsZTtcbiAgICByZXR1cm4gKFxuICAgICAgPGFcbiAgICAgICAgY2xhc3NOYW1lPVwidG9vbGJhci1tZW51IHRvb2xiYXItYnV0dG9uXCJcbiAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVPcGVuLmJpbmQodGhpcyl9XG4gICAgICAgIG9uTW91c2VEb3duPXtwcmV2ZW50RGVmYXVsdH1cbiAgICAgICAgcmVmPXtub2RlID0+IHtcbiAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgdGhpcy5fbm9kZSA9IG5vZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICB0aXRsZT17dGhpcy5wcm9wcy50aXRsZX1cbiAgICAgID5cbiAgICAgICAge3RoaXMucHJvcHMubGFiZWx9XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjhcIj5cbiAgICAgICAgICA8cGF0aCBmaWxsPVwiIzY2NlwiIGQ9XCJNIDUgMS41IEwgMTQgMS41IEwgOS41IDcgelwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8dWwgY2xhc3NOYW1lPXsndG9vbGJhci1tZW51LWl0ZW1zJyArICh2aXNpYmxlID8gJyBvcGVuJyA6ICcnKX0+XG4gICAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2E+XG4gICAgKTtcbiAgfVxuXG4gIF9zdWJzY3JpYmUoKSB7XG4gICAgaWYgKCF0aGlzLl9saXN0ZW5lcikge1xuICAgICAgdGhpcy5fbGlzdGVuZXIgPSB0aGlzLmhhbmRsZUNsaWNrLmJpbmQodGhpcyk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX2xpc3RlbmVyKTtcbiAgICB9XG4gIH1cblxuICBfcmVsZWFzZSgpIHtcbiAgICBpZiAodGhpcy5fbGlzdGVuZXIpIHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fbGlzdGVuZXIpO1xuICAgICAgdGhpcy5fbGlzdGVuZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGU6IE1vdXNlRXZlbnQgfCBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50Pikge1xuICAgIGlmICh0aGlzLl9ub2RlICE9PSBlLnRhcmdldCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZpc2libGU6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5fcmVsZWFzZSgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU9wZW46IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PiA9IGUgPT4ge1xuICAgIHByZXZlbnREZWZhdWx0KGUpO1xuICAgIHRoaXMuc2V0U3RhdGUoeyB2aXNpYmxlOiB0cnVlIH0pO1xuICAgIHRoaXMuX3N1YnNjcmliZSgpO1xuICB9O1xufVxuXG50eXBlIFRvb2xiYXJNZW51SXRlbVByb3BzID0ge1xuICBvblNlbGVjdDogKCkgPT4gdm9pZDtcbiAgdGl0bGU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBUb29sYmFyTWVudUl0ZW06IEZDPFRvb2xiYXJNZW51SXRlbVByb3BzPiA9ICh7XG4gIG9uU2VsZWN0LFxuICB0aXRsZSxcbiAgbGFiZWwsXG59KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGxpXG4gICAgICBvbk1vdXNlT3Zlcj17ZSA9PiB7XG4gICAgICAgIGUuY3VycmVudFRhcmdldC5jbGFzc05hbWUgPSAnaG92ZXInO1xuICAgICAgfX1cbiAgICAgIG9uTW91c2VPdXQ9e2UgPT4ge1xuICAgICAgICBlLmN1cnJlbnRUYXJnZXQuY2xhc3NOYW1lID0gJyc7XG4gICAgICB9fVxuICAgICAgb25Nb3VzZURvd249e3ByZXZlbnREZWZhdWx0fVxuICAgICAgb25Nb3VzZVVwPXtvblNlbGVjdH1cbiAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICA+XG4gICAgICB7bGFiZWx9XG4gICAgPC9saT5cbiAgKTtcbn07XG5cbmZ1bmN0aW9uIHByZXZlbnREZWZhdWx0KGU6IE1vdXNlRXZlbnQgfCBSZWFjdC5Nb3VzZUV2ZW50KSB7XG4gIGUucHJldmVudERlZmF1bHQoKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQXlEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBM0RBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBWUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQTNEQTtBQUNBOzs7QUF3RUE7QUFJQTtBQUhBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQWNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/ToolbarMenu.tsx\n");
|
3187 |
|
3188 | }),
|
3189 |
|
3190 | "./components/VariableEditor.tsx":
|
3191 |
|
3192 |
|
3193 |
|
3194 |
|
3195 | (function(module, exports, __webpack_require__) {
|
3196 |
|
3197 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! @graphiql/react */ \"../../graphiql-react/dist/graphiql-react.es.js\"), __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _react2) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.VariableEditor = VariableEditor;\n _react2 = _interopRequireDefault(_react2);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * VariableEditor\n *\n * An instance of CodeMirror for editing variables defined in QueryEditor.\n *\n */\n function VariableEditor(_ref) {\n let {\n active,\n ...hookArgs\n } = _ref;\n const ref = (0, _react.useVariableEditor)(hookArgs);\n return /*#__PURE__*/_react2.default.createElement(\"div\", {\n className: \"codemirrorWrap\" // This horrible hack is necessary because a simple display none toggle\n // causes one of the editors' gutters to break otherwise.\n ,\n style: {\n position: active ? 'relative' : 'absolute',\n visibility: active ? 'visible' : 'hidden'\n },\n ref: ref\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1ZhcmlhYmxlRWRpdG9yLnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9WYXJpYWJsZUVkaXRvci50c3g/ZGRmYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgdXNlVmFyaWFibGVFZGl0b3IsIFVzZVZhcmlhYmxlRWRpdG9yQXJncyB9IGZyb20gJ0BncmFwaGlxbC9yZWFjdCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG50eXBlIFZhcmlhYmxlRWRpdG9yUHJvcHMgPSBVc2VWYXJpYWJsZUVkaXRvckFyZ3MgJiB7XG4gIGFjdGl2ZT86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIFZhcmlhYmxlRWRpdG9yXG4gKlxuICogQW4gaW5zdGFuY2Ugb2YgQ29kZU1pcnJvciBmb3IgZWRpdGluZyB2YXJpYWJsZXMgZGVmaW5lZCBpbiBRdWVyeUVkaXRvci5cbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBWYXJpYWJsZUVkaXRvcih7IGFjdGl2ZSwgLi4uaG9va0FyZ3MgfTogVmFyaWFibGVFZGl0b3JQcm9wcykge1xuICBjb25zdCByZWYgPSB1c2VWYXJpYWJsZUVkaXRvcihob29rQXJncyk7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPVwiY29kZW1pcnJvcldyYXBcIlxuICAgICAgLy8gVGhpcyBob3JyaWJsZSBoYWNrIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGEgc2ltcGxlIGRpc3BsYXkgbm9uZSB0b2dnbGVcbiAgICAgIC8vIGNhdXNlcyBvbmUgb2YgdGhlIGVkaXRvcnMnIGd1dHRlcnMgdG8gYnJlYWsgb3RoZXJ3aXNlLlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgcG9zaXRpb246IGFjdGl2ZSA/ICdyZWxhdGl2ZScgOiAnYWJzb2x1dGUnLFxuICAgICAgICB2aXNpYmlsaXR5OiBhY3RpdmUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyxcbiAgICAgIH19XG4gICAgICByZWY9e3JlZn1cbiAgICAvPlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUhBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQVJBO0FBV0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/VariableEditor.tsx\n");
|
3198 |
|
3199 | }),
|
3200 |
|
3201 | "./css/app.css":
|
3202 |
|
3203 |
|
3204 |
|
3205 |
|
3206 | (function(module, exports, __webpack_require__) {
|
3207 |
|
3208 | eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvYXBwLmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY3NzL2FwcC5jc3M/ZjQ2NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./css/app.css\n");
|
3209 |
|
3210 | }),
|
3211 |
|
3212 | "./css/codemirror.css":
|
3213 |
|
3214 |
|
3215 |
|
3216 |
|
3217 | (function(module, exports, __webpack_require__) {
|
3218 |
|
3219 | eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvY29kZW1pcnJvci5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9jb2RlbWlycm9yLmNzcz84ODg3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/codemirror.css\n");
|
3220 |
|
3221 | }),
|
3222 |
|
3223 | "./css/doc-explorer.css":
|
3224 |
|
3225 |
|
3226 |
|
3227 |
|
3228 | (function(module, exports, __webpack_require__) {
|
3229 |
|
3230 | eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvZG9jLWV4cGxvcmVyLmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY3NzL2RvYy1leHBsb3Jlci5jc3M/MmMyNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./css/doc-explorer.css\n");
|
3231 |
|
3232 | }),
|
3233 |
|
3234 | "./css/foldgutter.css":
|
3235 |
|
3236 |
|
3237 |
|
3238 |
|
3239 | (function(module, exports, __webpack_require__) {
|
3240 |
|
3241 | eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvZm9sZGd1dHRlci5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9mb2xkZ3V0dGVyLmNzcz9mZDA4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/foldgutter.css\n");
|
3242 |
|
3243 | }),
|
3244 |
|
3245 | "./css/history.css":
|
3246 |
|
3247 |
|
3248 |
|
3249 |
|
3250 | (function(module, exports, __webpack_require__) {
|
3251 |
|
3252 | eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvaGlzdG9yeS5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9oaXN0b3J5LmNzcz9kN2Q5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/history.css\n");
|
3253 |
|
3254 | }),
|
3255 |
|
3256 | "./css/info.css":
|
3257 |
|
3258 |
|
3259 |
|
3260 |
|
3261 | (function(module, exports, __webpack_require__) {
|
3262 |
|
3263 | eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvaW5mby5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9pbmZvLmNzcz9kNDU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/info.css\n");
|
3264 |
|
3265 | }),
|
3266 |
|
3267 | "./css/jump.css":
|
3268 |
|
3269 |
|
3270 |
|
3271 |
|
3272 | (function(module, exports, __webpack_require__) {
|
3273 |
|
3274 | eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvanVtcC5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9qdW1wLmNzcz85MTI1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/jump.css\n");
|
3275 |
|
3276 | }),
|
3277 |
|
3278 | "./css/lint.css":
|
3279 |
|
3280 |
|
3281 |
|
3282 |
|
3283 | (function(module, exports, __webpack_require__) {
|
3284 |
|
3285 | eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvbGludC5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9saW50LmNzcz9jY2NmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/lint.css\n");
|
3286 |
|
3287 | }),
|
3288 |
|
3289 | "./css/loading.css":
|
3290 |
|
3291 |
|
3292 |
|
3293 |
|
3294 | (function(module, exports, __webpack_require__) {
|
3295 |
|
3296 | eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvbG9hZGluZy5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9sb2FkaW5nLmNzcz8zYjUxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/loading.css\n");
|
3297 |
|
3298 | }),
|
3299 |
|
3300 | "./css/show-hint.css":
|
3301 |
|
3302 |
|
3303 |
|
3304 |
|
3305 | (function(module, exports, __webpack_require__) {
|
3306 |
|
3307 | eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3Mvc2hvdy1oaW50LmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY3NzL3Nob3ctaGludC5jc3M/ZmM2MCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./css/show-hint.css\n");
|
3308 |
|
3309 | }),
|
3310 |
|
3311 | "./utility/debounce.ts":
|
3312 |
|
3313 |
|
3314 |
|
3315 |
|
3316 | (function(module, exports, __webpack_require__) {
|
3317 |
|
3318 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = debounce;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * Provided a duration and a function, returns a new function which is called\n * `duration` milliseconds after the last call.\n */\n function debounce(duration, fn) {\n let timeout;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (timeout) {\n window.clearTimeout(timeout);\n }\n\n timeout = window.setTimeout(() => {\n timeout = null;\n fn.apply(this, args);\n }, duration);\n };\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L2RlYm91bmNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi91dGlsaXR5L2RlYm91bmNlLnRzP2IyY2MiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuLyoqXG4gKiBQcm92aWRlZCBhIGR1cmF0aW9uIGFuZCBhIGZ1bmN0aW9uLCByZXR1cm5zIGEgbmV3IGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZFxuICogYGR1cmF0aW9uYCBtaWxsaXNlY29uZHMgYWZ0ZXIgdGhlIGxhc3QgY2FsbC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2U8RiBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PihcbiAgZHVyYXRpb246IG51bWJlcixcbiAgZm46IEYsXG4pIHtcbiAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGw7XG4gIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5hcmdzOiBQYXJhbWV0ZXJzPEY+KSB7XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgfVxuICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0sIGR1cmF0aW9uKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./utility/debounce.ts\n");
|
3319 |
|
3320 | }),
|
3321 |
|
3322 | "./utility/find.ts":
|
3323 |
|
3324 |
|
3325 |
|
3326 |
|
3327 | (function(module, exports, __webpack_require__) {
|
3328 |
|
3329 | eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = find;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function find(list, predicate) {\n for (let i = 0; i < list.length; i++) {\n if (predicate(list[i])) {\n return list[i];\n }\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L2ZpbmQudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL3V0aWxpdHkvZmluZC50cz82Njg5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZpbmQ8VD4oXG4gIGxpc3Q6IEFycmF5PFQ+LFxuICBwcmVkaWNhdGU6IChpdGVtOiBUKSA9PiBib29sZWFuLFxuKTogVCB8IHZvaWQge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocHJlZGljYXRlKGxpc3RbaV0pKSB7XG4gICAgICByZXR1cm4gbGlzdFtpXTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./utility/find.ts\n");
|
3330 |
|
3331 | }),
|
3332 |
|
3333 | "react":
|
3334 |
|
3335 |
|
3336 |
|
3337 |
|
3338 | (function(module, exports) {
|
3339 |
|
3340 | eval("(function() { module.exports = window[\"React\"]; }());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC9leHRlcm5hbCBcIlJlYWN0XCI/YzQ4MSJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKSB7IG1vZHVsZS5leHBvcnRzID0gd2luZG93W1wiUmVhY3RcIl07IH0oKSk7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///react\n");
|
3341 |
|
3342 | }),
|
3343 |
|
3344 | "react-dom":
|
3345 |
|
3346 |
|
3347 |
|
3348 |
|
3349 | (function(module, exports) {
|
3350 |
|
3351 | eval("(function() { module.exports = window[\"ReactDOM\"]; }());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtZG9tLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvZXh0ZXJuYWwgXCJSZWFjdERPTVwiPzRiMmQiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCkgeyBtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd1tcIlJlYWN0RE9NXCJdOyB9KCkpOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///react-dom\n");
|
3352 |
|
3353 | })
|
3354 |
|
3355 | })["default"]; |
\ | No newline at end of file |