@mnaoumov/obsidian-lib 7.0.0 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/incremental-file-index-component/package.json +6 -0
- package/dist/lib/cjs/__merged.cjs +15 -1
- package/dist/lib/cjs/__merged.d.cts +2 -0
- package/dist/lib/cjs/components/incremental-file-index-component.cjs +340 -0
- package/dist/lib/cjs/components/incremental-file-index-component.d.cts +152 -0
- package/dist/lib/cjs/components/index.cjs +4 -1
- package/dist/lib/cjs/components/index.d.cts +1 -0
- package/dist/lib/cjs/generated-during-build.cjs +1 -1
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian-word-characters.cjs +231 -0
- package/dist/lib/cjs/obsidian-word-characters.d.cts +59 -0
- package/dist/lib/esm/__merged.d.mts +2 -0
- package/dist/lib/esm/__merged.mjs +15 -1
- package/dist/lib/esm/components/incremental-file-index-component.d.mts +152 -0
- package/dist/lib/esm/components/incremental-file-index-component.mjs +260 -0
- package/dist/lib/esm/components/index.d.mts +1 -0
- package/dist/lib/esm/components/index.mjs +3 -1
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/obsidian-word-characters.d.mts +59 -0
- package/dist/lib/esm/obsidian-word-characters.mjs +139 -0
- package/package.json +1 -1
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
32
|
+
|
|
33
|
+
import { escapeRegExp } from "@mnaoumov/typescript-lib/reg-exp";
|
|
34
|
+
const WORD_LETTERS_SOURCE = /A-Za-z\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source;
|
|
35
|
+
const WORD_DIGITS_SOURCE = /0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19/.source;
|
|
36
|
+
const WORD_CHARACTERS_SOURCE = WORD_LETTERS_SOURCE + WORD_DIGITS_SOURCE;
|
|
37
|
+
const CODE_UNIT_COUNT = 65536;
|
|
38
|
+
const ASCII_LIMIT = 128;
|
|
39
|
+
const characterTablesHolder = { value: null };
|
|
40
|
+
function canonicalizeObsidianText(text) {
|
|
41
|
+
return canonicalizeRun(text, 0, text.length, getCharacterTables());
|
|
42
|
+
}
|
|
43
|
+
function createObsidianMentionRegExp(name) {
|
|
44
|
+
const isFirstWord = isObsidianWordCharacter(name.charCodeAt(0));
|
|
45
|
+
const isLastWord = isObsidianWordCharacter(name.charCodeAt(name.length - 1));
|
|
46
|
+
const prefix = isFirstWord ? `(?:^|[^${WORD_CHARACTERS_SOURCE}])` : "";
|
|
47
|
+
const suffix = isLastWord ? `(?![${WORD_CHARACTERS_SOURCE}])` : "()";
|
|
48
|
+
return new RegExp(`${prefix}(${escapeRegExp(name)})${suffix}`, "gi");
|
|
49
|
+
}
|
|
50
|
+
function getObsidianNameTokens(name) {
|
|
51
|
+
const tables = getCharacterTables();
|
|
52
|
+
for (let index = 0; index < name.length; index++) {
|
|
53
|
+
if (tables.ambiguityFlags[name.charCodeAt(index)] === 1) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const tokens = tokenizeObsidianWords(name);
|
|
58
|
+
return tokens.length === 0 ? null : tokens;
|
|
59
|
+
}
|
|
60
|
+
function isObsidianWordCharacter(charCode) {
|
|
61
|
+
return getCharacterTables().wordFlags[charCode] === 1;
|
|
62
|
+
}
|
|
63
|
+
function tokenizeObsidianWords(text) {
|
|
64
|
+
const tables = getCharacterTables();
|
|
65
|
+
const tokens = [];
|
|
66
|
+
let tokenStart = -1;
|
|
67
|
+
let hasIrregularCase = false;
|
|
68
|
+
for (let index = 0; index <= text.length; index++) {
|
|
69
|
+
const charCode = text.charCodeAt(index);
|
|
70
|
+
if (tables.wordFlags[charCode] === 1) {
|
|
71
|
+
if (tokenStart === -1) {
|
|
72
|
+
tokenStart = index;
|
|
73
|
+
hasIrregularCase = false;
|
|
74
|
+
}
|
|
75
|
+
if (tables.irregularCaseFlags[charCode] === 1) {
|
|
76
|
+
hasIrregularCase = true;
|
|
77
|
+
}
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (tokenStart === -1) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
tokens.push(hasIrregularCase ? canonicalizeRun(text, tokenStart, index, tables) : text.slice(tokenStart, index).toUpperCase());
|
|
84
|
+
tokenStart = -1;
|
|
85
|
+
}
|
|
86
|
+
return tokens;
|
|
87
|
+
}
|
|
88
|
+
function buildCharacterTables() {
|
|
89
|
+
const wordRegExp = new RegExp(`[${WORD_CHARACTERS_SOURCE}]`);
|
|
90
|
+
const canonicalCharacters = [];
|
|
91
|
+
const irregularCaseFlags = new Uint8Array(CODE_UNIT_COUNT);
|
|
92
|
+
const wordFlags = new Uint8Array(CODE_UNIT_COUNT);
|
|
93
|
+
const foldedFromWordFlags = new Uint8Array(CODE_UNIT_COUNT);
|
|
94
|
+
const foldedFromNonWordFlags = new Uint8Array(CODE_UNIT_COUNT);
|
|
95
|
+
for (let charCode = 0; charCode < CODE_UNIT_COUNT; charCode++) {
|
|
96
|
+
const character = String.fromCharCode(charCode);
|
|
97
|
+
const canonicalCharCode = canonicalize(charCode, character);
|
|
98
|
+
const canonicalCharacter = String.fromCharCode(canonicalCharCode);
|
|
99
|
+
canonicalCharacters.push(canonicalCharacter);
|
|
100
|
+
irregularCaseFlags[charCode] = character.toUpperCase() === canonicalCharacter ? 0 : 1;
|
|
101
|
+
const isObsidianWordCharacterValue = wordRegExp.test(character);
|
|
102
|
+
wordFlags[charCode] = isObsidianWordCharacterValue ? 1 : 0;
|
|
103
|
+
(isObsidianWordCharacterValue ? foldedFromWordFlags : foldedFromNonWordFlags)[canonicalCharCode] = 1;
|
|
104
|
+
}
|
|
105
|
+
const canonical = canonicalCharacters.join("");
|
|
106
|
+
const ambiguityFlags = new Uint8Array(CODE_UNIT_COUNT);
|
|
107
|
+
for (let charCode = 0; charCode < CODE_UNIT_COUNT; charCode++) {
|
|
108
|
+
const canonicalCharCode = canonical.charCodeAt(charCode);
|
|
109
|
+
ambiguityFlags[charCode] = foldedFromWordFlags[canonicalCharCode] === 1 && foldedFromNonWordFlags[canonicalCharCode] === 1 ? 1 : 0;
|
|
110
|
+
}
|
|
111
|
+
return { ambiguityFlags, canonical, irregularCaseFlags, wordFlags };
|
|
112
|
+
}
|
|
113
|
+
function canonicalize(charCode, character) {
|
|
114
|
+
const upperCase = character.toUpperCase();
|
|
115
|
+
if (upperCase.length !== 1) {
|
|
116
|
+
return charCode;
|
|
117
|
+
}
|
|
118
|
+
const upperCharCode = upperCase.charCodeAt(0);
|
|
119
|
+
return charCode >= ASCII_LIMIT && upperCharCode < ASCII_LIMIT ? charCode : upperCharCode;
|
|
120
|
+
}
|
|
121
|
+
function canonicalizeRun(text, start, end, tables) {
|
|
122
|
+
const characters = [];
|
|
123
|
+
for (let index = start; index < end; index++) {
|
|
124
|
+
characters.push(tables.canonical.charAt(text.charCodeAt(index)));
|
|
125
|
+
}
|
|
126
|
+
return characters.join("");
|
|
127
|
+
}
|
|
128
|
+
function getCharacterTables() {
|
|
129
|
+
characterTablesHolder.value ??= buildCharacterTables();
|
|
130
|
+
return characterTablesHolder.value;
|
|
131
|
+
}
|
|
132
|
+
export {
|
|
133
|
+
canonicalizeObsidianText,
|
|
134
|
+
createObsidianMentionRegExp,
|
|
135
|
+
getObsidianNameTokens,
|
|
136
|
+
isObsidianWordCharacter,
|
|
137
|
+
tokenizeObsidianWords
|
|
138
|
+
};
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vYnNpZGlhbi13b3JkLWNoYXJhY3RlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEhvdyBPYnNpZGlhbiBkZWNpZGVzIHdoZXJlIGEgbmFtZSBtYXkgbWF0Y2ggYXMgYW4gdW5saW5rZWQgbWVudGlvbiwgcmVzdGF0ZWQgc28gdGhlIGluZGV4IGNhbiBmaW5kIHRoZSBzYW1lXG4gKiBtYXRjaGVzIHdpdGhvdXQgcnVubmluZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBwZXIgbmFtZSBvdmVyIGV2ZXJ5IG5vdGUuXG4gKlxuICogT2JzaWRpYW4gMS4xNC40IGJ1aWxkcyBvbmUgYFJlZ0V4cChzb3VyY2UsICdnaScpYCBwZXIgbmFtZSBvZiB0aGUgdGFyZ2V0IG5vdGUuIEEgbmFtZSB3aG9zZSBmaXJzdCBjaGFyYWN0ZXIgaXNcbiAqIGEgV09SRCBjaGFyYWN0ZXIgbXVzdCBiZSBwcmVjZWRlZCBieSBhIG5vbi13b3JkIGNoYXJhY3RlciBvciB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIGFuZCBvbmUgd2hvc2UgbGFzdFxuICogY2hhcmFjdGVyIGlzIGEgd29yZCBjaGFyYWN0ZXIgbXVzdCBub3QgYmUgZm9sbG93ZWQgYnkgb25lLiBUaGUgd29yZCBjaGFyYWN0ZXJzIGFyZSBhIGZpeGVkIHRhYmxlIG9mIFVuaWNvZGVcbiAqIGxldHRlcnMgYW5kIGRpZ2l0cywgY29waWVkIGJlbG93LiBUaGlzIGlzIG5vdCBhIFVuaWNvZGUgbGV0dGVyIGNsYXNzaWZpY2F0aW9uOiBmb3IgZXhhbXBsZSwgYSBuYW1lIHN1Y2ggYXNcbiAqIOadseS6rCBoYXMgbm8gd29yZCBjaGFyYWN0ZXIgYXQgYWxsIGFuZCBtYXRjaGVzIGluc2lkZSBhbnkgcnVuIG9mIHRleHQuIFRoZXJlIGlzIG5vIGB1YCBmbGFnLCBzbyBjYXNlIGlzIGZvbGRlZFxuICogdGhlIHdheSBhIG5vbi1Vbmljb2RlIGBpYCByZWdleCBmb2xkcyBpdCwgb25lIFVURi0xNlxuICogY29kZSB1bml0IGF0IGEgdGltZSwgYW5kIGRpYWNyaXRpY3MgYXJlIG5vdCBmb2xkZWQgYXQgYWxsLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIHVuaWNvcm4vcHJlZmVyLWNvZGUtcG9pbnQgLS0gT2JzaWRpYW4ncyByZWdleCBoYXMgbm8gYHVgIGZsYWcsIHNvIGl0IHJlYWRzIFVURi0xNiBjb2RlIHVuaXRzLCBhbmQgc28gbXVzdCBldmVyeSB0YWJsZSBoZXJlLiAqL1xuXG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcmVnLWV4cCc7XG5cbi8vIENvcGllZCBmcm9tIE9ic2lkaWFuIDEuMTQuNCdzIGBhcHAuanNgOiB0aGUgbGV0dGVycywgdGhlbiB0aGUgZGlnaXRzLCBvZiBpdHMgd29yZC1jaGFyYWN0ZXIgY2xhc3MuXG4vKiBlc2xpbnQtZGlzYWJsZSB1bmljb3JuL3ByZWZlci11bmljb2RlLWNvZGUtcG9pbnQtZXNjYXBlcyAtLSBDb3BpZWQgdmVyYmF0aW0sIGFuZCByZWFkIHdpdGhvdXQgdGhlIGB1YCBmbGFnLCB3aGVyZSBgXFx1ey4uLn1gIG1lYW5zIHNvbWV0aGluZyBlbHNlLiAqL1xuY29uc3QgV09SRF9MRVRURVJTX1NPVVJDRSA9XG4gIC9BLVphLXpcXHUwMEFBXFx1MDBCNVxcdTAwQkFcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzAtXFx1MDM3NFxcdTAzNzZcXHUwMzc3XFx1MDM3QS1cXHUwMzdEXFx1MDM3RlxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4QS1cXHUwNTJGXFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjEtXFx1MDU4N1xcdTA1RDAtXFx1MDVFQVxcdTA1RjAtXFx1MDVGMlxcdTA2MjAtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RTVcXHUwNkU2XFx1MDZFRVxcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFcXHUwN0Y0XFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MTVcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwODQwLVxcdTA4NThcXHUwOEEwLVxcdTA4QjRcXHUwOTA0LVxcdTA5MzlcXHUwOTNEXFx1MDk1MFxcdTA5NTgtXFx1MDk2MVxcdTA5NzEtXFx1MDk4MFxcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkRcXHUwOUNFXFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTFcXHUwOUYwXFx1MDlGMVxcdTBBMDUtXFx1MEEwQVxcdTBBMEZcXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNzItXFx1MEE3NFxcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCRFxcdTBBRDBcXHUwQUUwXFx1MEFFMVxcdTBBRjlcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYxXFx1MEI3MVxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJEMFxcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzOVxcdTBDM0RcXHUwQzU4LVxcdTBDNUFcXHUwQzYwXFx1MEM2MVxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ1Ri1cXHUwRDYxXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBFMDEtXFx1MEUzMFxcdTBFMzJcXHUwRTMzXFx1MEU0MC1cXHUwRTQ2XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4N1xcdTBFODhcXHUwRThBXFx1MEU4RFxcdTBFOTQtXFx1MEU5N1xcdTBFOTktXFx1MEU5RlxcdTBFQTEtXFx1MEVBM1xcdTBFQTVcXHUwRUE3XFx1MEVBQVxcdTBFQUJcXHUwRUFELVxcdTBFQjBcXHUwRUIyXFx1MEVCM1xcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVEQy1cXHUwRURGXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y1XFx1MTNGOC1cXHUxM0ZEXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZGMS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YxXFx1MUNGNVxcdTFDRjZcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE4M1xcdTIxODRcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJFMkZcXHUzMDA1XFx1MzAwNlxcdTMwMzEtXFx1MzAzNVxcdTMwM0JcXHUzMDNDXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OURcXHVBNkEwLVxcdUE2RTVcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3QURcXHVBN0IwLVxcdUE3QjdcXHVBN0Y3LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QThGRFxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5ODQtXFx1QTlCMlxcdUE5Q0ZcXHVBOUUwLVxcdUE5RTRcXHVBOUU2LVxcdUE5RUZcXHVBOUZBLVxcdUE5RkVcXHVBQTAwLVxcdUFBMjhcXHVBQTQwLVxcdUFBNDJcXHVBQTQ0LVxcdUFBNEJcXHVBQTYwLVxcdUFBNzZcXHVBQTdBXFx1QUE3RS1cXHVBQUFGXFx1QUFCMVxcdUFBQjVcXHVBQUI2XFx1QUFCOS1cXHVBQUJEXFx1QUFDMFxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUFcXHVBQUYyLVxcdUFBRjRcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQjMwLVxcdUFCNUFcXHVBQjVDLVxcdUFCNjVcXHVBQjcwLVxcdUFCRTJcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFEXFx1RkIxRi1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjIxLVxcdUZGM0FcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGREMvXG4gICAgLnNvdXJjZTtcbmNvbnN0IFdPUkRfRElHSVRTX1NPVVJDRSA9IC8wLTlcXHUwNjYwLVxcdTA2NjlcXHUwNkYwLVxcdTA2RjlcXHUwN0MwLVxcdTA3QzlcXHUwOTY2LVxcdTA5NkZcXHUwOUU2LVxcdTA5RUZcXHUwQTY2LVxcdTBBNkZcXHUwQUU2LVxcdTBBRUZcXHUwQjY2LVxcdTBCNkZcXHUwQkU2LVxcdTBCRUZcXHUwQzY2LVxcdTBDNkZcXHUwQ0U2LVxcdTBDRUZcXHUwRDY2LVxcdTBENkZcXHUwREU2LVxcdTBERUZcXHUwRTUwLVxcdTBFNTlcXHUwRUQwLVxcdTBFRDlcXHUwRjIwLVxcdTBGMjlcXHUxMDQwLVxcdTEwNDlcXHUxMDkwLVxcdTEwOTlcXHUxN0UwLVxcdTE3RTlcXHUxODEwLVxcdTE4MTlcXHUxOTQ2LVxcdTE5NEZcXHUxOUQwLVxcdTE5RDlcXHUxQTgwLVxcdTFBODlcXHUxQTkwLVxcdTFBOTlcXHUxQjUwLVxcdTFCNTlcXHUxQkIwLVxcdTFCQjlcXHUxQzQwLVxcdTFDNDlcXHUxQzUwLVxcdTFDNTlcXHVBNjIwLVxcdUE2MjlcXHVBOEQwLVxcdUE4RDlcXHVBOTAwLVxcdUE5MDlcXHVBOUQwLVxcdUE5RDlcXHVBOUYwLVxcdUE5RjlcXHVBQTUwLVxcdUFBNTlcXHVBQkYwLVxcdUFCRjlcXHVGRjEwLVxcdUZGMTkvLnNvdXJjZTtcbi8qIGVzbGludC1lbmFibGUgdW5pY29ybi9wcmVmZXItdW5pY29kZS1jb2RlLXBvaW50LWVzY2FwZXMgLS0gRW5kIG9mIHRoZSBjb3BpZWQgY2xhc3MuICovXG5jb25zdCBXT1JEX0NIQVJBQ1RFUlNfU09VUkNFID0gV09SRF9MRVRURVJTX1NPVVJDRSArIFdPUkRfRElHSVRTX1NPVVJDRTtcblxuY29uc3QgQ09ERV9VTklUX0NPVU5UID0gMHgxXzAwXzAwO1xuY29uc3QgQVNDSUlfTElNSVQgPSAweDgwO1xuXG5pbnRlcmZhY2UgQ2hhcmFjdGVyVGFibGVzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBjb2RlIHVuaXQgc2hhcmVzIGl0cyBjYW5vbmljYWwgZm9ybSB3aXRoIGFub3RoZXIgY29kZSB1bml0IG9mIHRoZSBPVEhFUiB3b3JkLW5lc3MuIEEgbmFtZSBob2xkaW5nXG4gICAqIG9uZSBjYW5ub3QgYmUgc3BsaXQgaW50byB0b2tlbnMgdGhlIHdheSB0aGUgdGV4dCBpdCBtYXRjaGVzIGlzIHNwbGl0LCBzbyBpdCBpcyBuZXZlciBpbmRleGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYW1iaWd1aXR5RmxhZ3M6IFVpbnQ4QXJyYXk7XG5cbiAgLyoqXG4gICAqIEVhY2ggY29kZSB1bml0J3MgY2Fub25pY2FsIGZvcm0gdW5kZXIgYSBub24tVW5pY29kZSBgaWAgcmVnZXg6IHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGNvZGUgdW5pdCdzIGluZGV4LlxuICAgKi9cbiAgcmVhZG9ubHkgY2Fub25pY2FsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBjb2RlIHVuaXQncyBjYW5vbmljYWwgZm9ybSBpcyBOT1Qgd2hhdCBgU3RyaW5nLnByb3RvdHlwZS50b1VwcGVyQ2FzZWAgbWFrZXMgb2YgaXQ6IGDDn2AsIHdob3NlIHVwcGVyXG4gICAqIGNhc2UgaXMgdHdvIGNvZGUgdW5pdHMsIG9yIGDEsWAsIHdoaWNoIHRoZSByZWdleCByZWZ1c2VzIHRvIGZvbGQgdG8gYW4gQVNDSUkgYElgLiBBIHJ1biBmcmVlIG9mIHRoZW0gaXMgZm9sZGVkIGJ5XG4gICAqIG9uZSBgdG9VcHBlckNhc2VgIGNhbGwuXG4gICAqL1xuICByZWFkb25seSBpcnJlZ3VsYXJDYXNlRmxhZ3M6IFVpbnQ4QXJyYXk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBjb2RlIHVuaXQgaXMgb25lIG9mIE9ic2lkaWFuJ3Mgd29yZCBjaGFyYWN0ZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgd29yZEZsYWdzOiBVaW50OEFycmF5O1xufVxuXG5pbnRlcmZhY2UgQ2hhcmFjdGVyVGFibGVzSG9sZGVyIHtcbiAgdmFsdWU6IENoYXJhY3RlclRhYmxlcyB8IG51bGw7XG59XG5cbi8vIEEgaG9sZGVyIHJhdGhlciB0aGFuIGEgdmFyaWFibGUsIHNvIGJ1aWxkaW5nIHRoZSB0YWJsZXMgb24gZmlyc3QgdXNlIG11dGF0ZXMgaXQgaW5zdGVhZCBvZiByZWFzc2lnbmluZyBpdC5cbmNvbnN0IGNoYXJhY3RlclRhYmxlc0hvbGRlcjogQ2hhcmFjdGVyVGFibGVzSG9sZGVyID0geyB2YWx1ZTogbnVsbCB9O1xuXG4vKipcbiAqIENhbm9uaWNhbGl6ZXMgdGV4dCBmb3IgT2JzaWRpYW4gU2VhcmNoIGFuZCB1bmxpbmtlZCBtZW50aW9ucycgbm9uLVVuaWNvZGUgaWdub3JlLWNhc2UgcmVnZXggbWF0Y2hpbmcuXG4gKlxuICogUHJlc2VydmVzIFVURi0xNiBsZW5ndGgsIGxvbmUgc3Vycm9nYXRlcyBhbmQgYWNjZW50cy4gVGhpcyBpcyBub3QgVW5pY29kZSBvciBsb2NhbGUgY2FzZSBmb2xkaW5nOlxuICogR3JlZWsgZmluYWwgc2lnbWEgZm9sZHMgdG8gc2lnbWEncyB1cHBlcmNhc2UsIGJ1dCBLZWx2aW4gc2lnbiwgbG9uZyBzIGFuZCBkb3RsZXNzIGkgZG8gbm90IGZvbGQgdG8gQVNDSUkuXG4gKiBWZXJpZmllZCBhZ2FpbnN0IGNvcmUgU2VhcmNoJ3MgYGdtaWAgZXhwcmVzc2lvbnMgaW4gT2JzaWRpYW4gMS4xNC41IGFuZCAxLjE1LjAuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgbGl0ZXJhbCB0ZXh0LCBub3QgYSByZWd1bGFyIGV4cHJlc3Npb24gc291cmNlLlxuICogQHJldHVybnMgSXRzIEVDTUFTY3JpcHQgbm9uLVVuaWNvZGUgaWdub3JlLWNhc2UgY2Fub25pY2FsIGZvcm0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5vbmljYWxpemVPYnNpZGlhblRleHQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZVJ1bih0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCwgZ2V0Q2hhcmFjdGVyVGFibGVzKCkpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgcmVndWxhciBleHByZXNzaW9uIE9ic2lkaWFuIG1hdGNoZXMgYSBuYW1lIHdpdGgsIG9uZSBwZXIgbmFtZSwgZXhhY3RseSBhcyBpdHMgb3duIGByZWNvbXB1dGVVbmxpbmtlZGBcbiAqIGJ1aWxkcyBpdC4gR3JvdXAgMSBpcyB0aGUgbmFtZSBpdHNlbGYuXG4gKlxuICogQHBhcmFtIG5hbWUgLSBBIGJhc2VuYW1lIG9yIGFuIGFsaWFzLlxuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24sIGdsb2JhbCBhbmQgY2FzZS1pbnNlbnNpdGl2ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU9ic2lkaWFuTWVudGlvblJlZ0V4cChuYW1lOiBzdHJpbmcpOiBSZWdFeHAge1xuICBjb25zdCBpc0ZpcnN0V29yZCA9IGlzT2JzaWRpYW5Xb3JkQ2hhcmFjdGVyKG5hbWUuY2hhckNvZGVBdCgwKSk7XG4gIGNvbnN0IGlzTGFzdFdvcmQgPSBpc09ic2lkaWFuV29yZENoYXJhY3RlcihuYW1lLmNoYXJDb2RlQXQobmFtZS5sZW5ndGggLSAxKSk7XG4gIGNvbnN0IHByZWZpeCA9IGlzRmlyc3RXb3JkID8gYCg/Ol58W14ke1dPUkRfQ0hBUkFDVEVSU19TT1VSQ0V9XSlgIDogJyc7XG4gIGNvbnN0IHN1ZmZpeCA9IGlzTGFzdFdvcmQgPyBgKD8hWyR7V09SRF9DSEFSQUNURVJTX1NPVVJDRX1dKWAgOiAnKCknO1xuICByZXR1cm4gbmV3IFJlZ0V4cChgJHtwcmVmaXh9KCR7ZXNjYXBlUmVnRXhwKG5hbWUpfSkke3N1ZmZpeH1gLCAnZ2knKTtcbn1cblxuLyoqXG4gKiBTcGxpdHMgYSBuYW1lIGludG8gdGhlIGNhbm9uaWNhbCB3b3JkIHRva2VucyB0aGUgaW5kZXgga2V5cyBpdCBieS5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIEEgYmFzZW5hbWUgb3IgYW4gYWxpYXMuXG4gKiBAcmV0dXJucyBUaGUgdG9rZW5zLCBvciBgbnVsbGAgd2hlbiB0aGUgbmFtZSBjYW5ub3QgYmUgaW5kZXhlZDogaXQgaGFzIG5vIHdvcmQgY2hhcmFjdGVyLCBvciBpdCBob2xkcyBhXG4gKiAgIGNoYXJhY3RlciB3aG9zZSBjYXNlIGZvbGRpbmcgY3Jvc3NlcyBiZXR3ZWVuIHdvcmQgYW5kIG5vbi13b3JkIGNoYXJhY3RlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYnNpZGlhbk5hbWVUb2tlbnMobmFtZTogc3RyaW5nKTogbnVsbCB8IHN0cmluZ1tdIHtcbiAgY29uc3QgdGFibGVzID0gZ2V0Q2hhcmFjdGVyVGFibGVzKCk7XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBuYW1lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGlmICh0YWJsZXMuYW1iaWd1aXR5RmxhZ3NbbmFtZS5jaGFyQ29kZUF0KGluZGV4KV0gPT09IDEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRva2VucyA9IHRva2VuaXplT2JzaWRpYW5Xb3JkcyhuYW1lKTtcbiAgcmV0dXJuIHRva2Vucy5sZW5ndGggPT09IDAgPyBudWxsIDogdG9rZW5zO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYSBVVEYtMTYgY29kZSB1bml0IGlzIG9uZSBvZiBPYnNpZGlhbidzIHdvcmQgY2hhcmFjdGVycy5cbiAqXG4gKiBAcGFyYW0gY2hhckNvZGUgLSBUaGUgY29kZSB1bml0OyBgTmFOYCwgYXMgYGNoYXJDb2RlQXRgIHJldHVybnMgcGFzdCB0aGUgZW5kLCBpcyBub3Qgb25lLlxuICogQHJldHVybnMgV2hldGhlciBpdCBpcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JzaWRpYW5Xb3JkQ2hhcmFjdGVyKGNoYXJDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldENoYXJhY3RlclRhYmxlcygpLndvcmRGbGFnc1tjaGFyQ29kZV0gPT09IDE7XG59XG5cbi8qKlxuICogU3BsaXRzIHRleHQgaW50byBpdHMgbWF4aW1hbCBydW5zIG9mIHdvcmQgY2hhcmFjdGVycywgZWFjaCBmb2xkZWQgdG8gaXRzIGNhbm9uaWNhbCBjYXNlLlxuICpcbiAqIEV2ZXJ5IG1hdGNoIE9ic2lkaWFuIGZpbmRzIGZvciBhbiBpbmRleGFibGUgbmFtZSBjb3ZlcnMgd2hvbGUgcnVucyBvZiB0aGlzIHNwbGl0LCBpbiBvcmRlciBhbmQgd2l0aCBub3RoaW5nXG4gKiBiZXR3ZWVuIHRoZW0sIHdoaWNoIGlzIHdoYXQgbGV0cyB0aGUgaW5kZXggZmluZCBjYW5kaWRhdGVzIHdpdGhvdXQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSB0ZXh0LlxuICogQHJldHVybnMgVGhlIGNhbm9uaWNhbCB0b2tlbnMsIGluIG9yZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemVPYnNpZGlhbldvcmRzKHRleHQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgdGFibGVzID0gZ2V0Q2hhcmFjdGVyVGFibGVzKCk7XG4gIGNvbnN0IHRva2Vuczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IHRva2VuU3RhcnQgPSAtMTtcbiAgbGV0IGhhc0lycmVndWxhckNhc2UgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDw9IHRleHQubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgY2hhckNvZGUgPSB0ZXh0LmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgIGlmICh0YWJsZXMud29yZEZsYWdzW2NoYXJDb2RlXSA9PT0gMSkge1xuICAgICAgaWYgKHRva2VuU3RhcnQgPT09IC0xKSB7XG4gICAgICAgIHRva2VuU3RhcnQgPSBpbmRleDtcbiAgICAgICAgaGFzSXJyZWd1bGFyQ2FzZSA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGFibGVzLmlycmVndWxhckNhc2VGbGFnc1tjaGFyQ29kZV0gPT09IDEpIHtcbiAgICAgICAgaGFzSXJyZWd1bGFyQ2FzZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh0b2tlblN0YXJ0ID09PSAtMSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdG9rZW5zLnB1c2goaGFzSXJyZWd1bGFyQ2FzZSA/IGNhbm9uaWNhbGl6ZVJ1bih0ZXh0LCB0b2tlblN0YXJ0LCBpbmRleCwgdGFibGVzKSA6IHRleHQuc2xpY2UodG9rZW5TdGFydCwgaW5kZXgpLnRvVXBwZXJDYXNlKCkpO1xuICAgIHRva2VuU3RhcnQgPSAtMTtcbiAgfVxuXG4gIHJldHVybiB0b2tlbnM7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQ2hhcmFjdGVyVGFibGVzKCk6IENoYXJhY3RlclRhYmxlcyB7XG4gIGNvbnN0IHdvcmRSZWdFeHAgPSBuZXcgUmVnRXhwKGBbJHtXT1JEX0NIQVJBQ1RFUlNfU09VUkNFfV1gKTtcbiAgY29uc3QgY2Fub25pY2FsQ2hhcmFjdGVyczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgaXJyZWd1bGFyQ2FzZUZsYWdzID0gbmV3IFVpbnQ4QXJyYXkoQ09ERV9VTklUX0NPVU5UKTtcbiAgY29uc3Qgd29yZEZsYWdzID0gbmV3IFVpbnQ4QXJyYXkoQ09ERV9VTklUX0NPVU5UKTtcbiAgLy8gUGVyIGNhbm9uaWNhbCBmb3JtOiB3aGV0aGVyIGEgd29yZCBjaGFyYWN0ZXIgZm9sZHMgdG8gaXQsIGFuZCB3aGV0aGVyIGEgbm9uLXdvcmQgY2hhcmFjdGVyIGRvZXMuXG4gIGNvbnN0IGZvbGRlZEZyb21Xb3JkRmxhZ3MgPSBuZXcgVWludDhBcnJheShDT0RFX1VOSVRfQ09VTlQpO1xuICBjb25zdCBmb2xkZWRGcm9tTm9uV29yZEZsYWdzID0gbmV3IFVpbnQ4QXJyYXkoQ09ERV9VTklUX0NPVU5UKTtcblxuICBmb3IgKGxldCBjaGFyQ29kZSA9IDA7IGNoYXJDb2RlIDwgQ09ERV9VTklUX0NPVU5UOyBjaGFyQ29kZSsrKSB7XG4gICAgY29uc3QgY2hhcmFjdGVyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSk7XG4gICAgY29uc3QgY2Fub25pY2FsQ2hhckNvZGUgPSBjYW5vbmljYWxpemUoY2hhckNvZGUsIGNoYXJhY3Rlcik7XG4gICAgY29uc3QgY2Fub25pY2FsQ2hhcmFjdGVyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjYW5vbmljYWxDaGFyQ29kZSk7XG4gICAgY2Fub25pY2FsQ2hhcmFjdGVycy5wdXNoKGNhbm9uaWNhbENoYXJhY3Rlcik7XG4gICAgaXJyZWd1bGFyQ2FzZUZsYWdzW2NoYXJDb2RlXSA9IGNoYXJhY3Rlci50b1VwcGVyQ2FzZSgpID09PSBjYW5vbmljYWxDaGFyYWN0ZXIgPyAwIDogMTtcbiAgICBjb25zdCBpc09ic2lkaWFuV29yZENoYXJhY3RlclZhbHVlID0gd29yZFJlZ0V4cC50ZXN0KGNoYXJhY3Rlcik7XG4gICAgd29yZEZsYWdzW2NoYXJDb2RlXSA9IGlzT2JzaWRpYW5Xb3JkQ2hhcmFjdGVyVmFsdWUgPyAxIDogMDtcbiAgICAoaXNPYnNpZGlhbldvcmRDaGFyYWN0ZXJWYWx1ZSA/IGZvbGRlZEZyb21Xb3JkRmxhZ3MgOiBmb2xkZWRGcm9tTm9uV29yZEZsYWdzKVtjYW5vbmljYWxDaGFyQ29kZV0gPSAxO1xuICB9XG5cbiAgY29uc3QgY2Fub25pY2FsID0gY2Fub25pY2FsQ2hhcmFjdGVycy5qb2luKCcnKTtcbiAgY29uc3QgYW1iaWd1aXR5RmxhZ3MgPSBuZXcgVWludDhBcnJheShDT0RFX1VOSVRfQ09VTlQpO1xuICBmb3IgKGxldCBjaGFyQ29kZSA9IDA7IGNoYXJDb2RlIDwgQ09ERV9VTklUX0NPVU5UOyBjaGFyQ29kZSsrKSB7XG4gICAgY29uc3QgY2Fub25pY2FsQ2hhckNvZGUgPSBjYW5vbmljYWwuY2hhckNvZGVBdChjaGFyQ29kZSk7XG4gICAgYW1iaWd1aXR5RmxhZ3NbY2hhckNvZGVdID0gZm9sZGVkRnJvbVdvcmRGbGFnc1tjYW5vbmljYWxDaGFyQ29kZV0gPT09IDEgJiYgZm9sZGVkRnJvbU5vbldvcmRGbGFnc1tjYW5vbmljYWxDaGFyQ29kZV0gPT09IDEgPyAxIDogMDtcbiAgfVxuXG4gIHJldHVybiB7IGFtYmlndWl0eUZsYWdzLCBjYW5vbmljYWwsIGlycmVndWxhckNhc2VGbGFncywgd29yZEZsYWdzIH07XG59XG5cbi8qXG4gKiBFQ01BU2NyaXB0J3MgYENhbm9uaWNhbGl6ZWAgZm9yIGEgcmVndWxhciBleHByZXNzaW9uIHdpdGggYGlgIGFuZCB3aXRob3V0IGB1YDogdGhlIGNvZGUgdW5pdCdzIHVwcGVyIGNhc2UsIHVubGVzc1xuICogdGhhdCBpcyBsb25nZXIgdGhhbiBvbmUgY29kZSB1bml0LCBvciB3b3VsZCB0dXJuIGEgbm9uLUFTQ0lJIGNvZGUgdW5pdCBpbnRvIGFuIEFTQ0lJIG9uZS5cbiAqL1xuZnVuY3Rpb24gY2Fub25pY2FsaXplKGNoYXJDb2RlOiBudW1iZXIsIGNoYXJhY3Rlcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgdXBwZXJDYXNlID0gY2hhcmFjdGVyLnRvVXBwZXJDYXNlKCk7XG4gIGlmICh1cHBlckNhc2UubGVuZ3RoICE9PSAxKSB7XG4gICAgcmV0dXJuIGNoYXJDb2RlO1xuICB9XG5cbiAgY29uc3QgdXBwZXJDaGFyQ29kZSA9IHVwcGVyQ2FzZS5jaGFyQ29kZUF0KDApO1xuICByZXR1cm4gY2hhckNvZGUgPj0gQVNDSUlfTElNSVQgJiYgdXBwZXJDaGFyQ29kZSA8IEFTQ0lJX0xJTUlUID8gY2hhckNvZGUgOiB1cHBlckNoYXJDb2RlO1xufVxuXG5mdW5jdGlvbiBjYW5vbmljYWxpemVSdW4odGV4dDogc3RyaW5nLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdGFibGVzOiBDaGFyYWN0ZXJUYWJsZXMpOiBzdHJpbmcge1xuICBjb25zdCBjaGFyYWN0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGxldCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IGVuZDsgaW5kZXgrKykge1xuICAgIGNoYXJhY3RlcnMucHVzaCh0YWJsZXMuY2Fub25pY2FsLmNoYXJBdCh0ZXh0LmNoYXJDb2RlQXQoaW5kZXgpKSk7XG4gIH1cblxuICByZXR1cm4gY2hhcmFjdGVycy5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhcmFjdGVyVGFibGVzKCk6IENoYXJhY3RlclRhYmxlcyB7XG4gIGNoYXJhY3RlclRhYmxlc0hvbGRlci52YWx1ZSA/Pz0gYnVpbGRDaGFyYWN0ZXJUYWJsZXMoKTtcbiAgcmV0dXJuIGNoYXJhY3RlclRhYmxlc0hvbGRlci52YWx1ZTtcbn1cblxuLyogZXNsaW50LWVuYWJsZSB1bmljb3JuL3ByZWZlci1jb2RlLXBvaW50IC0tIEVuZCBvZiB0aGUgZmlsZS4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsU0FBUyxvQkFBb0I7QUFJN0IsTUFBTSxzQkFDSiw2Z0lBQ0c7QUFDTCxNQUFNLHFCQUFxQiwwZEFBMGQ7QUFFcmYsTUFBTSx5QkFBeUIsc0JBQXNCO0FBRXJELE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0sY0FBYztBQWdDcEIsTUFBTSx3QkFBK0MsRUFBRSxPQUFPLEtBQUs7QUFZNUQsU0FBUyx5QkFBeUIsTUFBc0I7QUFDN0QsU0FBTyxnQkFBZ0IsTUFBTSxHQUFHLEtBQUssUUFBUSxtQkFBbUIsQ0FBQztBQUNuRTtBQVNPLFNBQVMsNEJBQTRCLE1BQXNCO0FBQ2hFLFFBQU0sY0FBYyx3QkFBd0IsS0FBSyxXQUFXLENBQUMsQ0FBQztBQUM5RCxRQUFNLGFBQWEsd0JBQXdCLEtBQUssV0FBVyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0FBQzNFLFFBQU0sU0FBUyxjQUFjLFVBQVUsc0JBQXNCLE9BQU87QUFDcEUsUUFBTSxTQUFTLGFBQWEsT0FBTyxzQkFBc0IsT0FBTztBQUNoRSxTQUFPLElBQUksT0FBTyxHQUFHLE1BQU0sSUFBSSxhQUFhLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxJQUFJO0FBQ3JFO0FBU08sU0FBUyxzQkFBc0IsTUFBK0I7QUFDbkUsUUFBTSxTQUFTLG1CQUFtQjtBQUNsQyxXQUFTLFFBQVEsR0FBRyxRQUFRLEtBQUssUUFBUSxTQUFTO0FBQ2hELFFBQUksT0FBTyxlQUFlLEtBQUssV0FBVyxLQUFLLENBQUMsTUFBTSxHQUFHO0FBQ3ZELGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtB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
|
package/package.json
CHANGED