@rooted/elements 1.0.0-alpha.5 → 1.0.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements.d.mts +1 -0
- package/dist/elements.mjs +14 -11
- package/package.json +1 -1
package/dist/elements.d.mts
CHANGED
|
@@ -89,6 +89,7 @@ type InlineStyle = {
|
|
|
89
89
|
|
|
90
90
|
type SanitizedHtmlProperties<TElement extends HTMLElement> = Omit<TElement, NonWritableKeys<TElement> | FunctionKeys<TElement> | Exclude<keyof ARIAMixin, 'role'> | OnHandlerKeys<TElement> | 'children' | 'className' | 'classList' | 'style'>;
|
|
91
91
|
type HtmlElementPropertiesMapped<TElement extends HTMLElement> = Partial<SanitizedHtmlProperties<TElement>> & {
|
|
92
|
+
[key: string]: unknown;
|
|
92
93
|
children?: Array<Node | string> | Node | string;
|
|
93
94
|
classes?: CssClasses;
|
|
94
95
|
style?: InlineStyle;
|
package/dist/elements.mjs
CHANGED
|
@@ -89,8 +89,8 @@ function createElementFactory(constructElement, signal) {
|
|
|
89
89
|
newElement2.setAttribute(key, String(value));
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
const { className } = buildClassList(classes2);
|
|
93
|
-
if (
|
|
92
|
+
const { className: className2 } = buildClassList(classes2);
|
|
93
|
+
if (className2) newElement2.setAttribute("class", className2);
|
|
94
94
|
if (style2) Object.assign(newElement2.style, style2);
|
|
95
95
|
buildAriaProperties(aria2, newElement2);
|
|
96
96
|
buildOnHandlers(on2, newElement2, signal);
|
|
@@ -98,14 +98,17 @@ function createElementFactory(constructElement, signal) {
|
|
|
98
98
|
return newElement2;
|
|
99
99
|
}
|
|
100
100
|
const { aria, children, classes, on, style, ...assignableProperties } = properties ?? {};
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
);
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
101
|
+
const newElement = constructElement(tag);
|
|
102
|
+
const { className } = buildClassList(classes);
|
|
103
|
+
if (className) newElement.className = className;
|
|
104
|
+
for (const [key, value] of Object.entries(assignableProperties)) {
|
|
105
|
+
if (value === void 0 || value === null) continue;
|
|
106
|
+
if (isWritableDomProperty(newElement, key)) {
|
|
107
|
+
newElement[key] = value;
|
|
108
|
+
} else if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
109
|
+
newElement.setAttribute(key, String(value));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
109
112
|
if (style) Object.assign(newElement.style, style);
|
|
110
113
|
buildAriaProperties(aria, newElement);
|
|
111
114
|
buildOnHandlers(on, newElement, signal);
|
|
@@ -126,4 +129,4 @@ function appendChildren(element, children) {
|
|
|
126
129
|
|
|
127
130
|
export { createElementFactory, cssClass };
|
|
128
131
|
//# sourceMappingURL=elements.mjs.map
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGFzc2VzLm10cyIsIi4uL3NyYy9hcmlhLm10cyIsIi4uL3NyYy9lbGVtZW50LWZhY3RvcnkubXRzIl0sIm5hbWVzIjpbImNsYXNzZXMiLCJjaGlsZHJlbiIsImFyaWEiLCJvbiIsInN0eWxlIiwibmV3RWxlbWVudCJdLCJtYXBwaW5ncyI6IjtBQTZDTyxTQUFTLFFBQUEsQ0FBUyxTQUFBLEVBQXFCLE9BQUEsR0FBc0MsSUFBQSxFQUFnQjtBQUNuRyxFQUFBLElBQUksWUFBWSxJQUFBLEVBQU07QUFDdEIsRUFBQSxPQUFPLFNBQUE7QUFDUjs7O0FDcEJBLElBQU0seUJBQUEsR0FBNkU7QUFBQSxFQUNsRixnQkFBQSxFQUFrQix1QkFBQTtBQUFBLEVBQ2xCLFFBQUEsRUFBVSxlQUFBO0FBQUEsRUFDVixXQUFBLEVBQWEsa0JBQUE7QUFBQSxFQUNiLE9BQUEsRUFBUyxjQUFBO0FBQUEsRUFDVCxZQUFBLEVBQWMsbUJBQUE7QUFBQSxFQUNkLE1BQUEsRUFBUSxhQUFBO0FBQUEsRUFDUixVQUFBLEVBQVksaUJBQUE7QUFBQSxFQUNaLElBQUEsRUFBTTtBQUNQLENBQUE7QUFHQSxJQUFNLGdDQUFBLEdBQW9GO0FBQUEsRUFDekYsZ0JBQUEsRUFBa0IsNkJBQUE7QUFBQSxFQUNsQixRQUFBLEVBQVUsc0JBQUE7QUFBQSxFQUNWLFdBQUEsRUFBYSx5QkFBQTtBQUFBLEVBQ2IsT0FBQSxFQUFTLHFCQUFBO0FBQUEsRUFDVCxZQUFBLEVBQWMsMEJBQUE7QUFBQSxFQUNkLE1BQUEsRUFBUSxvQkFBQTtBQUFBLEVBQ1IsVUFBQSxFQUFZLHdCQUFBO0FBQUEsRUFDWixJQUFBLEVBQU07QUFDUCxDQUFBO0FBRUEsU0FBUyxXQUFBLENBQVksT0FBQSxFQUFrQixHQUFBLEVBQWEsS0FBQSxFQUFzQjtBQUN6RSxFQUFDLE9BQUEsQ0FBK0MsR0FBRyxDQUFBLEdBQUksS0FBQTtBQUN4RDtBQUVPLFNBQVMsbUJBQUEsQ0FBb0IsTUFBd0IsT0FBQSxFQUF3QjtBQUNu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QWtFO0FBQzNHLEVBQUEsSUFBSSxLQUFBLENBQU0sT0FBQSxDQUFRLFFBQVEsQ0FBQSxFQUFHO0FBQzVCLElBQUEsS0FBQSxNQUFXLFNBQVMsUUFBQSxFQUFVO0FBQzdCLE1BQUEsT0FBQSxDQUFRLE9BQU8sS0FBSyxDQUFBO0FBQUEsSUFDckI7QUFBQSxFQUNELFdBQ1MsUUFBQSxFQUFVO0FBQ2xCLElBQUEsT0FBQSxDQUFRLE9BQU8sUUFBUSxDQUFBO0FBQUEsRUFDeEI7QUFDRCIsImZpbGUiOiJlbGVtZW50cy5tanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc2luZ2xlIENTUyBjbGFzcyB2YWx1ZS4gRmFsc3kgdmFyaWFudHMgKGB1bmRlZmluZWRgIGFuZCBgbnVsbGApIGFyZVxuICogYXV0b21hdGljYWxseSBmaWx0ZXJlZCBvdXQgd2hlbiBidWlsZGluZyBhIGNsYXNzIGxpc3QsIHNvIGNvbmRpdGlvbmFsXG4gKiBjbGFzc2VzIGNhbiBiZSBleHByZXNzZWQgd2l0aG91dCBleHBsaWNpdCBndWFyZHMuXG4gKi9cbmV4cG9ydCB0eXBlIENzc0NsYXNzID0gc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4vKipcbiAqIE9uZSBvciBtb3JlIENTUyBjbGFzcyB2YWx1ZXMgYWNjZXB0ZWQgYnkgdGhlIGBjbGFzc2VzYCBwcm9wIG9mIGV2ZXJ5IEhUTUxcbiAqIGVsZW1lbnQgY3JlYXRlZCB2aWEgYGNyZWF0ZSgpYCBvciBgYXBwZW5kKClgLlxuICpcbiAqIC0gQSBzaW5nbGUgc3RyaW5nIGlzIHVzZWQgYXMtaXMuXG4gKiAtIEFuIGFycmF5IG9mIHtAbGluayBDc3NDbGFzc30gdmFsdWVzIGlzIGpvaW5lZCB3aXRoIHNwYWNlcyBhZnRlciBmYWxzeVxuICogICBlbnRyaWVzIGFyZSByZW1vdmVkLlxuICpcbiAqIEBzZWUge0BsaW5rIGNzc0NsYXNzfSBmb3IgY29tcG9zaW5nIGNvbmRpdGlvbmFsIGNsYXNzIG5hbWVzLlxuICovXG5leHBvcnQgdHlwZSBDc3NDbGFzc2VzID0gQXJyYXk8Q3NzQ2xhc3M+IHwgQ3NzQ2xhc3NcblxuLyoqXG4gKiBSZXR1cm5zIGBjbGFzc05hbWVgIHdoZW4gYHZpc2libGVgIGlzIHRydXRoeSwgb3RoZXJ3aXNlIGB1bmRlZmluZWRgLlxuICpcbiAqIERlc2lnbmVkIHRvIGNvbXBvc2UgY2xlYW5seSB3aXRoIHtAbGluayBDc3NDbGFzc2VzfTogZmFsc3kgdmFsdWVzIGFyZVxuICogZmlsdGVyZWQgb3V0IGF1dG9tYXRpY2FsbHksIHNvIHN0YXRpYyBhbmQgY29uZGl0aW9uYWwgY2xhc3NlcyBjYW4gYmUgbWl4ZWRcbiAqIGluIGEgc2luZ2xlIGFycmF5IHdpdGhvdXQgYnJhbmNoaW5nLlxuICpcbiAqIEBwYXJhbSBjbGFzc05hbWUgLSBUaGUgQ1NTIGNsYXNzIHRvIGFwcGx5LlxuICogQHBhcmFtIHZpc2libGUgLSBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpIHRoZSBjbGFzcyBpcyByZXR1cm5lZDsgYW55IG90aGVyXG4gKiAgIHZhbHVlIHByb2R1Y2VzIGB1bmRlZmluZWRgLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogYXBwZW5kKCdidXR0b24nLCB7XG4gKiAgIGNsYXNzZXM6IFtcbiAqICAgICAnYnRuJyxcbiAqICAgICBjc3NDbGFzcygnYnRuLS1hY3RpdmUnLCBpc0FjdGl2ZSksXG4gKiAgICAgY3NzQ2xhc3MoJ2J0bi0tZGlzYWJsZWQnLCBpc0Rpc2FibGVkKSxcbiAqICAgXSxcbiAqIH0pXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNzc0NsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogQ3NzQ2xhc3NcbmV4cG9ydCBmdW5jdGlvbiBjc3NDbGFzcyhjbGFzc05hbWU6IHN0cmluZywgdmlzaWJsZTogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpOiBDc3NDbGFzc1xuZXhwb3J0IGZ1bmN0aW9uIGNzc0NsYXNzKGNsYXNzTmFtZTogQ3NzQ2xhc3MpOiBDc3NDbGFzc1xuZXhwb3J0IGZ1bmN0aW9uIGNzc0NsYXNzKGNsYXNzTmFtZTogQ3NzQ2xhc3MsIHZpc2libGU6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKTogQ3NzQ2xhc3NcbmV4cG9ydCBmdW5jdGlvbiBjc3NDbGFzcyhjbGFzc05hbWU6IENzc0NsYXNzLCB2aXNpYmxlOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHRydWUpOiBDc3NDbGFzcyB7XG5cdGlmICh2aXNpYmxlICE9PSB0cnVlKSByZXR1cm5cblx0cmV0dXJuIGNsYXNzTmFtZVxufVxuIiwidHlwZSBTdHJpcEFyaWE8UyBleHRlbmRzIHN0cmluZz4gPSBTIGV4dGVuZHMgYGFyaWEke2luZmVyIFJlc3R9YCA/IFVuY2FwaXRhbGl6ZTxSZXN0PiA6IFNcblxudHlwZSBBcmlhU3RyaW5nUHJvcGVydGllcyA9IHtcblx0W1AgaW4ga2V5b2YgQVJJQU1peGluIGFzIEFSSUFNaXhpbltQXSBleHRlbmRzIHN0cmluZyB8IG51bGwgPyBTdHJpcEFyaWE8c3RyaW5nICYgUD4gOiBuZXZlcl0/OiBzdHJpbmcgfCBudWxsXG59XG5cbi8vIFByb3BlcnRpZXMgdGhhdCBvbmx5IGV4aXN0IGFzIEVsZW1lbnRbXSBpbiBBUklBTWl4aW4g4oCUIGFjY2VwdHMgYSBzdHJpbmcgSUQgb3IgYW4gRWxlbWVudCBkaXJlY3RseVxudHlwZSBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzID0ge1xuXHQvKioge0Bpbmhlcml0ZG9jIEFSSUFNaXhpblsnYXJpYUFjdGl2ZURlc2NlbmRhbnRFbGVtZW50J119ICovXG5cdGFjdGl2ZURlc2NlbmRhbnQ/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxuXHQvKioge0Bpbmhlcml0ZG9jIEFSSUFNaXhpblsnYXJpYUNvbnRyb2xzRWxlbWVudHMnXX0gKi9cblx0Y29udHJvbHM/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxuXHQvKioge0Bpbmhlcml0ZG9jIEFSSUFNaXhpblsnYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMnXX0gKi9cblx0ZGVzY3JpYmVkQnk/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxuXHQvKioge0Bpbmhlcml0ZG9jIEFSSUFNaXhpblsnYXJpYURldGFpbHNFbGVtZW50cyddfSAqL1xuXHRkZXRhaWxzPzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyddfSAqL1xuXHRlcnJvck1lc3NhZ2U/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxuXHQvKioge0Bpbmhlcml0ZG9jIEFSSUFNaXhpblsnYXJpYUZsb3dUb0VsZW1lbnRzJ119ICovXG5cdGZsb3dUbz86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhTGFiZWxsZWRCeUVsZW1lbnRzJ119ICovXG5cdGxhYmVsbGVkQnk/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxuXHQvKioge0Bpbmhlcml0ZG9jIEFSSUFNaXhpblsnYXJpYU93bnNFbGVtZW50cyddfSAqL1xuXHRvd25zPzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgQXJpYSA9IEFyaWFTdHJpbmdQcm9wZXJ0aWVzICYgQXJpYUlkUmVmZXJlbmNlUHJvcGVydGllc1xuXG5jb25zdCBhcmlhSWRSZWZlcmVuY2VBdHRyaWJ1dGVzOiBSZWNvcmQ8a2V5b2YgQXJpYUlkUmVmZXJlbmNlUHJvcGVydGllcywgc3RyaW5nPiA9IHtcblx0YWN0aXZlRGVzY2VuZGFudDogJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsXG5cdGNvbnRyb2xzOiAnYXJpYS1jb250cm9scycsXG5cdGRlc2NyaWJlZEJ5OiAnYXJpYS1kZXNjcmliZWRieScsXG5cdGRldGFpbHM6ICdhcmlhLWRldGFpbHMnLFxuXHRlcnJvck1lc3NhZ2U6ICdhcmlhLWVycm9ybWVzc2FnZScsXG5cdGZsb3dUbzogJ2FyaWEtZmxvd3RvJyxcblx0bGFiZWxsZWRCeTogJ2FyaWEtbGFiZWxsZWRieScsXG5cdG93bnM6ICdhcmlhLW93bnMnLFxufVxuXG4vLyBhcmlhQWN0aXZlRGVzY2VuZGFudEVsZW1lbnQgaXMgc2luZ3VsYXI7IHRoZSByZXN0IHRha2UgRWxlbWVudFtdXG5jb25zdCBhcmlhSWRSZWZlcmVuY2VFbGVtZW50UHJvcGVydGllczogUmVjb3JkPGtleW9mIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXMsIHN0cmluZz4gPSB7XG5cdGFjdGl2ZURlc2NlbmRhbnQ6ICdhcmlhQWN0aXZlRGVzY2VuZGFudEVsZW1lbnQnLFxuXHRjb250cm9sczogJ2FyaWFDb250cm9sc0VsZW1lbnRzJyxcblx0ZGVzY3JpYmVkQnk6ICdhcmlhRGVzY3JpYmVkQnlFbGVtZW50cycsXG5cdGRldGFpbHM6ICdhcmlhRGV0YWlsc0VsZW1lbnRzJyxcblx0ZXJyb3JNZXNzYWdlOiAnYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzJyxcblx0Zmxvd1RvOiAnYXJpYUZsb3dUb0VsZW1lbnRzJyxcblx0bGFiZWxsZWRCeTogJ2FyaWFMYWJlbGxlZEJ5RWxlbWVudHMnLFxuXHRvd25zOiAnYXJpYU93bnNFbGVtZW50cycsXG59XG5cbmZ1bmN0aW9uIHNldFByb3BlcnR5KGVsZW1lbnQ6IEVsZW1lbnQsIGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuXHQoZWxlbWVudCBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldID0gdmFsdWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQXJpYVByb3BlcnRpZXMoYXJpYTogQXJpYSB8IHVuZGVmaW5lZCwgZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xuXHRpZiAoIWFyaWEpIHJldHVyblxuXHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhcmlhKSkge1xuXHRcdGlmICghKGtleSBpbiBhcmlhSWRSZWZlcmVuY2VBdHRyaWJ1dGVzKSkge1xuXHRcdFx0Y29uc3QgZG9tS2V5ID0gYGFyaWEke2tleVswXS50b1VwcGVyQ2FzZSgpfSR7a2V5LnNsaWNlKDEpfWBcblx0XHRcdHNldFByb3BlcnR5KGVsZW1lbnQsIGRvbUtleSwgdmFsdWUpXG5cdFx0XHRjb250aW51ZVxuXHRcdH1cblx0XHRpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0ZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXJpYUlkUmVmZXJlbmNlQXR0cmlidXRlc1trZXkgYXMga2V5b2YgQXJpYUlkUmVmZXJlbmNlUHJvcGVydGllc10pXG5cdFx0XHRjb250aW51ZVxuXHRcdH1cblx0XHRpZiAodmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG5cdFx0XHRjb25zdCBpZGxLZXkgPSBhcmlhSWRSZWZlcmVuY2VFbGVtZW50UHJvcGVydGllc1trZXkgYXMga2V5b2YgQXJpYUlkUmVmZXJlbmNlUHJvcGVydGllc11cblx0XHRcdHNldFByb3BlcnR5KGVsZW1lbnQsIGlkbEtleSwgaWRsS2V5LmVuZHNXaXRoKCdFbGVtZW50cycpID8gW3ZhbHVlXSA6IHZhbHVlKVxuXHRcdFx0Y29udGludWVcblx0XHR9XG5cdFx0ZWxlbWVudC5zZXRBdHRyaWJ1dGUoYXJpYUlkUmVmZXJlbmNlQXR0cmlidXRlc1trZXkgYXMga2V5b2YgQXJpYUlkUmVmZXJlbmNlUHJvcGVydGllc10sIHZhbHVlKVxuXHR9XG59XG4iLCJpbXBvcnQgeyBFbGVtZW50T25IYW5kbGVycyB9IGZyb20gJ0Byb290ZWQvZXZlbnRzJ1xuXG5pbXBvcnQgeyB0eXBlIEFyaWEsIGJ1aWxkQXJpYVByb3BlcnRpZXMgfSBmcm9tICcuL2FyaWEubXRzJ1xuaW1wb3J0IHsgQ3NzQ2xhc3NlcyB9IGZyb20gJy4vY2xhc3Nlcy5tdHMnXG5pbXBvcnQgeyBIdG1sRWxlbWVudFByb3BlcnRpZXMgfSBmcm9tICcuL2h0bWwtZWxlbWVudC1wcm9wZXJ0aWVzLm10cydcbmltcG9ydCB7IFN2Z0VsZW1lbnRQcm9wZXJ0aWVzLCBTdmdUYWdFbGVtZW50LCBTdmdUYWdOYW1lIH0gZnJvbSAnLi9zdmctZWxlbWVudC1wcm9wZXJ0aWVzLm10cydcblxuZnVuY3Rpb24gYnVpbGRPbkhhbmRsZXJzPFRFbGVtZW50IGV4dGVuZHMgRWxlbWVudD4oXG5cdG9uOiBFbGVtZW50T25IYW5kbGVyczxURWxlbWVudD4gfCB1bmRlZmluZWQsXG5cdGVsZW1lbnQ6IFRFbGVtZW50LFxuXHRzaWduYWw6IEFib3J0U2lnbmFsLFxuKTogdm9pZCB7XG5cdGlmICghb24pIHJldHVyblxuXHRmb3IgKGNvbnN0IFtrZXksIGhhbmRsZXJdIG9mIE9iamVjdC5lbnRyaWVzKG9uKSkge1xuXHRcdGlmICghaGFuZGxlcikgY29udGludWVcblx0XHRlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHRrZXksXG5cdFx0XHRldmVudCA9PiB2b2lkIChoYW5kbGVyIGFzIChldmVudD86IEV2ZW50KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikoZXZlbnQpLFxuXHRcdFx0c2lnbmFsID8geyBzaWduYWwgfSA6IHVuZGVmaW5lZCxcblx0XHQpXG5cdH1cbn1cblxuZnVuY3Rpb24gYnVpbGRDbGFzc0xpc3QoY2xhc3NlczogQ3NzQ2xhc3NlcyB8IHVuZGVmaW5lZCkge1xuXHRpZiAoY2xhc3NlcyA9PT0gbnVsbCB8fCBjbGFzc2VzID09PSB1bmRlZmluZWQpIHJldHVybiB7fVxuXHRpZiAoQXJyYXkuaXNBcnJheShjbGFzc2VzKSkgcmV0dXJuIHsgY2xhc3NOYW1lOiBjbGFzc2VzLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykgfVxuXG5cdHJldHVybiB7IGNsYXNzTmFtZTogU3RyaW5nKGNsYXNzZXMpIH1cbn1cblxuZnVuY3Rpb24gaXNXcml0YWJsZURvbVByb3BlcnR5KGVsZW1lbnQ6IEVsZW1lbnQsIGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdGxldCBwcm90bzogb2JqZWN0IHwgbnVsbCA9IGVsZW1lbnRcblx0d2hpbGUgKHByb3RvKSB7XG5cdFx0Y29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIGtleSlcblx0XHRpZiAoZGVzYykgcmV0dXJuICEhKGRlc2Mud3JpdGFibGUgfHwgZGVzYy5zZXQpXG5cdFx0cHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pIGFzIG9iamVjdCB8IG51bGxcblx0fVxuXHRyZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IHR5cGUgRWxlbWVudENyZWF0b3IgPSAoa2V5OiBzdHJpbmcsIG5zPzogc3RyaW5nKSA9PiBFbGVtZW50XG5cbi8qKlxuICogVGhlIG92ZXJsb2FkZWQgZnVuY3Rpb24gdHlwZSByZXR1cm5lZCBieSB7QGxpbmsgY3JlYXRlRWxlbWVudEZhY3Rvcnl9LlxuICogQWNjZXB0cyBIVE1MIG9yIFNWRyB0YWcgbmFtZXMgYW5kIHJldHVybnMgdGhlIG1hdGNoaW5nIGVsZW1lbnQgdHlwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50Q3JlYXRvckZ1bmN0aW9uIHtcblx0KHRhZzogJ3N2ZycsIHByb3BlcnRpZXM/OiBTdmdFbGVtZW50UHJvcGVydGllczwnc3ZnJz4pOiBTVkdTVkdFbGVtZW50XG5cdDxLIGV4dGVuZHMgRXhjbHVkZTxTdmdUYWdOYW1lLCAnc3ZnJz4+KHRhZzogSywgcHJvcGVydGllcz86IFN2Z0VsZW1lbnRQcm9wZXJ0aWVzPEs+KTogU3ZnVGFnRWxlbWVudDxLPlxuXHQ8SyBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4odGFnOiBLLCBwcm9wZXJ0aWVzPzogTm9JbmZlcjxIdG1sRWxlbWVudFByb3BlcnRpZXM8Sz4+KTogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tdXG59XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnRGYWN0b3J5ID0gRWxlbWVudENyZWF0b3JGdW5jdGlvblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRGYWN0b3J5KGNvbnN0cnVjdEVsZW1lbnQ6IEVsZW1lbnRDcmVhdG9yLCBzaWduYWw6IEFib3J0U2lnbmFsKTogRWxlbWVudENyZWF0b3JGdW5jdGlvbiB7XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IEhUTUwgb3IgU1ZHIGVsZW1lbnQuIFRoZSBlbGVtZW50IGlzICoqbm90KiogYXBwZW5kZWQgdG8gdGhlXG5cdCAqIGRvY3VtZW50IGF1dG9tYXRpY2FsbHkuXG5cdCAqXG5cdCAqICoqSFRNTCBlbGVtZW50cyoqIOKAlCBwYXNzIGFueSB0YWcgZnJvbSBgSFRNTEVsZW1lbnRUYWdOYW1lTWFwYDpcblx0ICogYGBgdHNcblx0ICogZWxlbWVudCgnZGl2JywgeyBjbGFzc2VzOiAnY2FyZCcsIGNoaWxkcmVuOiBbLi4uXSB9KVxuXHQgKiBgYGBcblx0ICpcblx0ICogKipTVkcgZWxlbWVudHMqKiDigJQgdXNlIGAnc3ZnJ2AgZm9yIHRoZSByb290IGVsZW1lbnQsIG9yIHByZWZpeCBvdGhlciBTVkdcblx0ICogdGFncyB3aXRoIGAnc3ZnOidgIHRvIGF2b2lkIGNvbGxpc2lvbnMgd2l0aCBzYW1lLW5hbWVkIEhUTUwgdGFnczpcblx0ICogYGBgdHNcblx0ICogZWxlbWVudCgnc3ZnJywgeyB2aWV3Qm94OiAnMCAwIDI0IDI0JywgY2hpbGRyZW46IGVsZW1lbnQoJ3N2Zzp1c2UnLCB7IGhyZWY6IHVybCB9KSB9KVxuXHQgKiBgYGBcblx0ICpcblx0ICogKipgY2xhc3Nlc2AqKiDigJQgYWNjZXB0cyBhIHNpbmdsZSBjbGFzcyBzdHJpbmcgb3IgYSB7QGxpbmsgQ3NzQ2xhc3Nlc30gYXJyYXk7XG5cdCAqIGZhbHN5IGVudHJpZXMgYXJlIGZpbHRlcmVkIG91dCBhdXRvbWF0aWNhbGx5LlxuXHQgKlxuXHQgKiAqKkRPTSBwcm9wZXJ0eSBuYW1lcyoqIOKAlCBmb3IgSFRNTCBlbGVtZW50cywgb3RoZXIgcHJvcGVydGllcyBhcmUgc2V0IHZpYVxuXHQgKiBgT2JqZWN0LmFzc2lnbmAgYW5kIG11c3QgdXNlIERPTSBwcm9wZXJ0eSBuYW1lcywgbm90IEhUTUwgYXR0cmlidXRlIG5hbWVzOlxuXHQgKiB8IEhUTUwgYXR0cmlidXRlIHwgRE9NIHByb3BlcnR5IHxcblx0ICogfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18XG5cdCAqIHwgYGZvcmAgICAgICAgICAgfCBgaHRtbEZvcmAgICAgfFxuXHQgKiB8IGByZWFkb25seWAgICAgIHwgYHJlYWRPbmx5YCAgIHxcblx0ICpcblx0ICogRm9yIFNWRyBlbGVtZW50cywgd3JpdGFibGUgRE9NIHByb3BlcnRpZXMgYXJlIHNldCBkaXJlY3RseTsgYW55dGhpbmcgZWxzZVxuXHQgKiAoZS5nLiBgdmlld0JveGAsIGBocmVmYCkgZmFsbHMgYmFjayB0byBgc2V0QXR0cmlidXRlYCBhdXRvbWF0aWNhbGx5LlxuXHQgKlxuXHQgKiAqKkNoaWxkcmVuKiog4oCUIHBhc3MgYSBzaW5nbGUgYE5vZGVgIG9yIGFuIGFycmF5IG9mIGBOb2RlYHMgdmlhIHRoZVxuXHQgKiBgY2hpbGRyZW5gIHByb3BlcnR5OyB0aGV5IGFyZSBhcHBlbmRlZCBpbiBvcmRlci5cblx0ICpcblx0ICogKipFdmVudCBsaXN0ZW5lcnMqKiDigJQgdXNlIHRoZSBgb25gIHByb3Agd2l0aCBhbiBvYmplY3Qgb2YgZXZlbnQgaGFuZGxlcnMuXG5cdCAqIExpc3RlbmVycyBhcmUgYXV0b21hdGljYWxseSByZW1vdmVkIHdoZW4gdGhlIGNvbXBvbmVudCB1bm1vdW50cy5cblx0ICpcblx0ICogKipBUklBKiog4oCUIHVzZSB0aGUgYGFyaWFgIHByb3AgZm9yIEFSSUEgYXR0cmlidXRlcy4gQWNjZXB0cyBzdHJpbmcgSURzIG9yXG5cdCAqIGBFbGVtZW50YCByZWZlcmVuY2VzIGZvciBJREwgcmVmbGVjdGlvbiBwcm9wZXJ0aWVzLlxuXHQgKlxuXHQgKiBAZXhhbXBsZVxuXHQgKiBgYGB0c1xuXHQgKiBjb25zdCBkaXYgPSBlbGVtZW50KCdkaXYnLCB7XG5cdCAqICAgY2xhc3NlczogJ2NhcmQnLFxuXHQgKiAgIGFyaWE6IHsgbGFiZWw6ICdDYXJkJywgbGFiZWxsZWRCeTogaGVhZGluZ0VsIH0sXG5cdCAqICAgY2hpbGRyZW46IFtcblx0ICogICAgIGVsZW1lbnQoJ2gyJywgeyB0ZXh0Q29udGVudDogJ1RpdGxlJyB9KSxcblx0ICogICAgIGVsZW1lbnQoJ3AnLCAgeyB0ZXh0Q29udGVudDogJ0JvZHknICB9KSxcblx0ICogICBdLFxuXHQgKiB9KVxuXHQgKlxuXHQgKiBjb25zdCBpY29uID0gZWxlbWVudCgnc3ZnJywge1xuXHQgKiAgIHZpZXdCb3g6ICcwIDAgMjQgMjQnLFxuXHQgKiAgIGFyaWE6IHsgaGlkZGVuOiAndHJ1ZScgfSxcblx0ICogICBjaGlsZHJlbjogZWxlbWVudCgnc3ZnOnVzZScsIHsgaHJlZjogc3ByaXRlVXJsIH0pLFxuXHQgKiB9KVxuXHQgKiBgYGBcblx0ICovXG5cdGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodGFnOiAnc3ZnJywgcHJvcGVydGllcz86IFN2Z0VsZW1lbnRQcm9wZXJ0aWVzPCdzdmcnPik6IFNWR1NWR0VsZW1lbnRcblx0ZnVuY3Rpb24gY3JlYXRlRWxlbWVudDxLIGV4dGVuZHMgRXhjbHVkZTxTdmdUYWdOYW1lLCAnc3ZnJz4+KHRhZzogSywgcHJvcGVydGllcz86IFN2Z0VsZW1lbnRQcm9wZXJ0aWVzPEs+KTogU3ZnVGFnRWxlbWVudDxLPlxuXHRmdW5jdGlvbiBjcmVhdGVFbGVtZW50PEtFbGVtZW50IGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPih0YWc6IEtFbGVtZW50LCBwcm9wZXJ0aWVzPzogTm9JbmZlcjxIdG1sRWxlbWVudFByb3BlcnRpZXM8S0VsZW1lbnQ+Pik6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLRWxlbWVudF1cblx0ZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWc6IHN0cmluZywgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogRWxlbWVudCB7XG5cdFx0aWYgKHRhZyA9PT0gJ3N2ZycgfHwgdGFnLnN0YXJ0c1dpdGgoJ3N2ZzonKSkge1xuXHRcdFx0Y29uc3QgYWN0dWFsVGFnID0gdGFnID09PSAnc3ZnJyA/ICdzdmcnIDogdGFnLnNsaWNlKDQpXG5cdFx0XHRjb25zdCB7IGNsYXNzZXMsIGNoaWxkcmVuLCBhcmlhLCBvbiwgc3R5bGUsIC4uLmF0dHJpYnV0ZXMgfSA9IHByb3BlcnRpZXMgPz8ge31cblx0XHRcdGNvbnN0IG5ld0VsZW1lbnQgPSBjb25zdHJ1Y3RFbGVtZW50KGFjdHVhbFRhZywgJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJykgYXMgU1ZHRWxlbWVudFxuXG5cdFx0XHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKSkge1xuXHRcdFx0XHRpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgY29udGludWVcblx0XHRcdFx0aWYgKGlzV3JpdGFibGVEb21Qcm9wZXJ0eShuZXdFbGVtZW50LCBrZXkpKSB7XG5cdFx0XHRcdFx0OyhuZXdFbGVtZW50IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0gPSB2YWx1ZVxuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuXHRcdFx0XHRcdG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgU3RyaW5nKHZhbHVlKSlcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCB7IGNsYXNzTmFtZSB9ID0gYnVpbGRDbGFzc0xpc3QoY2xhc3NlcyBhcyBDc3NDbGFzc2VzIHwgdW5kZWZpbmVkKVxuXHRcdFx0aWYgKGNsYXNzTmFtZSkgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY2xhc3NOYW1lKVxuXG5cdFx0XHRpZiAoc3R5bGUpIE9iamVjdC5hc3NpZ24obmV3RWxlbWVudC5zdHlsZSwgc3R5bGUpXG5cdFx0XHRidWlsZEFyaWFQcm9wZXJ0aWVzKGFyaWEgYXMgQXJpYSB8IHVuZGVmaW5lZCwgbmV3RWxlbWVudClcblx0XHRcdGJ1aWxkT25IYW5kbGVycyhvbiBhcyBFbGVtZW50T25IYW5kbGVyczxFbGVtZW50PiB8IHVuZGVmaW5lZCwgbmV3RWxlbWVudCwgc2lnbmFsKVxuXG5cdFx0XHRhcHBlbmRDaGlsZHJlbihuZXdFbGVtZW50LCBjaGlsZHJlbiBhcyBBcnJheTxOb2RlIHwgc3RyaW5nPiB8IE5vZGUgfCBzdHJpbmcgfCB1bmRlZmluZWQpXG5cblx0XHRcdHJldHVybiBuZXdFbGVtZW50XG5cdFx0fVxuXG5cdFx0Y29uc3QgeyBhcmlhLCBjaGlsZHJlbiwgY2xhc3Nlcywgb24sIHN0eWxlLCAuLi5hc3NpZ25hYmxlUHJvcGVydGllcyB9ID0gcHJvcGVydGllcyA/PyB7fVxuXHRcdGNvbnN0IGRlZmluZWRQcm9wZXJ0aWVzID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdFxuXHRcdFx0LmVudHJpZXMoYXNzaWduYWJsZVByb3BlcnRpZXMpXG5cdFx0XHQuZmlsdGVyKChbLCB2XSkgPT4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwpLFxuXHRcdClcblx0XHRjb25zdCBuZXdFbGVtZW50ID0gT2JqZWN0LmFzc2lnbihcblx0XHRcdGNvbnN0cnVjdEVsZW1lbnQodGFnKSBhcyBIVE1MRWxlbWVudCxcblx0XHRcdGRlZmluZWRQcm9wZXJ0aWVzLFxuXHRcdFx0YnVpbGRDbGFzc0xpc3QoY2xhc3NlcyBhcyBDc3NDbGFzc2VzIHwgdW5kZWZpbmVkKSxcblx0XHQpXG5cblx0XHRpZiAoc3R5bGUpIE9iamVjdC5hc3NpZ24obmV3RWxlbWVudC5zdHlsZSwgc3R5bGUpXG5cdFx0YnVpbGRBcmlhUHJvcGVydGllcyhhcmlhIGFzIEFyaWEgfCB1bmRlZmluZWQsIG5ld0VsZW1lbnQpXG5cdFx0YnVpbGRPbkhhbmRsZXJzKG9uIGFzIEVsZW1lbnRPbkhhbmRsZXJzPEhUTUxFbGVtZW50PiB8IHVuZGVmaW5lZCwgbmV3RWxlbWVudCwgc2lnbmFsKVxuXHRcdGFwcGVuZENoaWxkcmVuKG5ld0VsZW1lbnQsIGNoaWxkcmVuIGFzIEFycmF5PE5vZGUgfCBzdHJpbmc+IHwgTm9kZSB8IHN0cmluZyB8IHVuZGVmaW5lZClcblxuXHRcdHJldHVybiBuZXdFbGVtZW50XG5cdH1cblxuXHRyZXR1cm4gY3JlYXRlRWxlbWVudCBhcyB1bmtub3duIGFzIEVsZW1lbnRDcmVhdG9yRnVuY3Rpb25cbn1cblxuZnVuY3Rpb24gYXBwZW5kQ2hpbGRyZW4oZWxlbWVudDogRWxlbWVudCwgY2hpbGRyZW46IEFycmF5PE5vZGUgfCBzdHJpbmc+IHwgTm9kZSB8IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcblx0XHRmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG5cdFx0XHRlbGVtZW50LmFwcGVuZChjaGlsZClcblx0XHR9XG5cdH1cblx0ZWxzZSBpZiAoY2hpbGRyZW4pIHtcblx0XHRlbGVtZW50LmFwcGVuZChjaGlsZHJlbilcblx0fVxufVxuIl19
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGFzc2VzLm10cyIsIi4uL3NyYy9hcmlhLm10cyIsIi4uL3NyYy9lbGVtZW50LWZhY3RvcnkubXRzIl0sIm5hbWVzIjpbImNsYXNzZXMiLCJjaGlsZHJlbiIsImFyaWEiLCJvbiIsInN0eWxlIiwibmV3RWxlbWVudCIsImNsYXNzTmFtZSJdLCJtYXBwaW5ncyI6IjtBQTZDTyxTQUFTLFFBQUEsQ0FBUyxTQUFBLEVBQXFCLE9BQUEsR0FBc0MsSUFBQSxFQUFnQjtBQUNuRyxFQUFBLElBQUksWUFBWSxJQUFBLEVBQU07QUFDdEIsRUFBQSxPQUFPLFNBQUE7QUFDUjs7O0FDcEJBLElBQU0seUJBQUEsR0FBNkU7QUFBQSxFQUNsRixnQkFBQSxFQUFrQix1QkFBQTtBQUFBLEVBQ2xCLFFBQUEsRUFBVSxlQUFBO0FBQUEsRUFDVixXQUFBLEVBQWEsa0JBQUE7QUFBQSxFQUNiLE9BQUEsRUFBUyxjQUFBO0FBQUEsRUFDVCxZQUFBLEVBQWMsbUJBQUE7QUFBQSxFQUNkLE1BQUEsRUFBUSxhQUFBO0FBQUEsRUFDUixVQUFBLEVBQVksaUJBQUE7QUFBQSxFQUNaLElBQUEsRUFBTTtBQUNQLENBQUE7QUFHQSxJQUFNLGdDQUFBLEdBQW9GO0FBQUEsRUFDekYsZ0JBQUEsRUFBa0IsNkJBQUE7QUFBQSxFQUNsQixRQUFBLEVBQVUsc0JBQUE7QUFBQSxFQUNWLFdBQUEsRUFBYSx5QkFBQTtBQUFBLEVBQ2IsT0FBQSxFQUFTLHFCQUFBO0FBQUEsRUFDVCxZQUFBLEVBQWMsMEJBQUE7QUFBQSxFQUNkLE1BQUEsRUFBUSxvQkFBQTtBQUFBLEVBQ1IsVUFBQSxFQUFZLHdCQUFBO0FBQUEsRUFDWixJQUFBLEVBQU07QUFDUCxDQUFBO0FBRUEsU0FBUyxXQUFBLENBQVksT0FBQSxFQUFrQixHQUFBLEVBQWEsS0FBQSxFQUFzQjtBQUN6RSxFQUFDLE9BQUEsQ0FBK0MsR0FBRyxDQUFBLEdBQUksS0FBQTtBQUN4RDtBQUVPLFNBQVMsbUJBQUEsQ0FBb0IsTUFBd0IsT0FB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QyxDQUFBO0FBQUEsTUFDM0M7QUFBQSxJQUNEO0FBRUEsSUFBQSxJQUFJLEtBQUEsRUFBTyxNQUFBLENBQU8sTUFBQSxDQUFPLFVBQUEsQ0FBVyxPQUFPLEtBQUssQ0FBQTtBQUNoRCxJQUFBLG1CQUFBLENBQW9CLE1BQTBCLFVBQVUsQ0FBQTtBQUN4RCxJQUFBLGVBQUEsQ0FBZ0IsRUFBQSxFQUFrRCxZQUFZLE1BQU0sQ0FBQTtBQUNwRixJQUFBLGNBQUEsQ0FBZSxZQUFZLFFBQTRELENBQUE7QUFFdkYsSUFBQSxPQUFPLFVBQUE7QUFBQSxFQUNSO0FBRUEsRUFBQSxPQUFPLGFBQUE7QUFDUjtBQUVBLFNBQVMsY0FBQSxDQUFlLFNBQWtCLFFBQUEsRUFBa0U7QUFDM0csRUFBQSxJQUFJLEtBQUEsQ0FBTSxPQUFBLENBQVEsUUFBUSxDQUFBLEVBQUc7QUFDNUIsSUFBQSxLQUFBLE1BQVcsU0FBUyxRQUFBLEVBQVU7QUFDN0IsTUFBQSxPQUFBLENBQVEsT0FBTyxLQUFLLENBQUE7QUFBQSxJQUNyQjtBQUFBLEVBQ0QsV0FDUyxRQUFBLEVBQVU7QUFDbEIsSUFBQSxPQUFBLENBQVEsT0FBTyxRQUFRLENBQUE7QUFBQSxFQUN4QjtBQUNEIiwiZmlsZSI6ImVsZW1lbnRzLm1qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzaW5nbGUgQ1NTIGNsYXNzIHZhbHVlLiBGYWxzeSB2YXJpYW50cyAoYHVuZGVmaW5lZGAgYW5kIGBudWxsYCkgYXJlXG4gKiBhdXRvbWF0aWNhbGx5IGZpbHRlcmVkIG91dCB3aGVuIGJ1aWxkaW5nIGEgY2xhc3MgbGlzdCwgc28gY29uZGl0aW9uYWxcbiAqIGNsYXNzZXMgY2FuIGJlIGV4cHJlc3NlZCB3aXRob3V0IGV4cGxpY2l0IGd1YXJkcy5cbiAqL1xuZXhwb3J0IHR5cGUgQ3NzQ2xhc3MgPSBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbi8qKlxuICogT25lIG9yIG1vcmUgQ1NTIGNsYXNzIHZhbHVlcyBhY2NlcHRlZCBieSB0aGUgYGNsYXNzZXNgIHByb3Agb2YgZXZlcnkgSFRNTFxuICogZWxlbWVudCBjcmVhdGVkIHZpYSBgY3JlYXRlKClgIG9yIGBhcHBlbmQoKWAuXG4gKlxuICogLSBBIHNpbmdsZSBzdHJpbmcgaXMgdXNlZCBhcy1pcy5cbiAqIC0gQW4gYXJyYXkgb2Yge0BsaW5rIENzc0NsYXNzfSB2YWx1ZXMgaXMgam9pbmVkIHdpdGggc3BhY2VzIGFmdGVyIGZhbHN5XG4gKiAgIGVudHJpZXMgYXJlIHJlbW92ZWQuXG4gKlxuICogQHNlZSB7QGxpbmsgY3NzQ2xhc3N9IGZvciBjb21wb3NpbmcgY29uZGl0aW9uYWwgY2xhc3MgbmFtZXMuXG4gKi9cbmV4cG9ydCB0eXBlIENzc0NsYXNzZXMgPSBBcnJheTxDc3NDbGFzcz4gfCBDc3NDbGFzc1xuXG4vKipcbiAqIFJldHVybnMgYGNsYXNzTmFtZWAgd2hlbiBgdmlzaWJsZWAgaXMgdHJ1dGh5LCBvdGhlcndpc2UgYHVuZGVmaW5lZGAuXG4gKlxuICogRGVzaWduZWQgdG8gY29tcG9zZSBjbGVhbmx5IHdpdGgge0BsaW5rIENzc0NsYXNzZXN9OiBmYWxzeSB2YWx1ZXMgYXJlXG4gKiBmaWx0ZXJlZCBvdXQgYXV0b21hdGljYWxseSwgc28gc3RhdGljIGFuZCBjb25kaXRpb25hbCBjbGFzc2VzIGNhbiBiZSBtaXhlZFxuICogaW4gYSBzaW5nbGUgYXJyYXkgd2l0aG91dCBicmFuY2hpbmcuXG4gKlxuICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBDU1MgY2xhc3MgdG8gYXBwbHkuXG4gKiBAcGFyYW0gdmlzaWJsZSAtIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCkgdGhlIGNsYXNzIGlzIHJldHVybmVkOyBhbnkgb3RoZXJcbiAqICAgdmFsdWUgcHJvZHVjZXMgYHVuZGVmaW5lZGAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBhcHBlbmQoJ2J1dHRvbicsIHtcbiAqICAgY2xhc3NlczogW1xuICogICAgICdidG4nLFxuICogICAgIGNzc0NsYXNzKCdidG4tLWFjdGl2ZScsIGlzQWN0aXZlKSxcbiAqICAgICBjc3NDbGFzcygnYnRuLS1kaXNhYmxlZCcsIGlzRGlzYWJsZWQpLFxuICogICBdLFxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBDc3NDbGFzc1xuZXhwb3J0IGZ1bmN0aW9uIGNzc0NsYXNzKGNsYXNzTmFtZTogc3RyaW5nLCB2aXNpYmxlOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCk6IENzc0NsYXNzXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBDc3NDbGFzcyk6IENzc0NsYXNzXG5leHBvcnQgZnVuY3Rpb24gY3NzQ2xhc3MoY2xhc3NOYW1lOiBDc3NDbGFzcywgdmlzaWJsZTogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpOiBDc3NDbGFzc1xuZXhwb3J0IGZ1bmN0aW9uIGNzc0NsYXNzKGNsYXNzTmFtZTogQ3NzQ2xhc3MsIHZpc2libGU6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkID0gdHJ1ZSk6IENzc0NsYXNzIHtcblx0aWYgKHZpc2libGUgIT09IHRydWUpIHJldHVyblxuXHRyZXR1cm4gY2xhc3NOYW1lXG59XG4iLCJ0eXBlIFN0cmlwQXJpYTxTIGV4dGVuZHMgc3RyaW5nPiA9IFMgZXh0ZW5kcyBgYXJpYSR7aW5mZXIgUmVzdH1gID8gVW5jYXBpdGFsaXplPFJlc3Q+IDogU1xuXG50eXBlIEFyaWFTdHJpbmdQcm9wZXJ0aWVzID0ge1xuXHRbUCBpbiBrZXlvZiBBUklBTWl4aW4gYXMgQVJJQU1peGluW1BdIGV4dGVuZHMgc3RyaW5nIHwgbnVsbCA/IFN0cmlwQXJpYTxzdHJpbmcgJiBQPiA6IG5ldmVyXT86IHN0cmluZyB8IG51bGxcbn1cblxuLy8gUHJvcGVydGllcyB0aGF0IG9ubHkgZXhpc3QgYXMgRWxlbWVudFtdIGluIEFSSUFNaXhpbiDigJQgYWNjZXB0cyBhIHN0cmluZyBJRCBvciBhbiBFbGVtZW50IGRpcmVjdGx5XG50eXBlIEFyaWFJZFJlZmVyZW5jZVByb3BlcnRpZXMgPSB7XG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhQWN0aXZlRGVzY2VuZGFudEVsZW1lbnQnXX0gKi9cblx0YWN0aXZlRGVzY2VuZGFudD86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhQ29udHJvbHNFbGVtZW50cyddfSAqL1xuXHRjb250cm9scz86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyddfSAqL1xuXHRkZXNjcmliZWRCeT86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhRGV0YWlsc0VsZW1lbnRzJ119ICovXG5cdGRldGFpbHM/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxuXHQvKioge0Bpbmhlcml0ZG9jIEFSSUFNaXhpblsnYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzJ119ICovXG5cdGVycm9yTWVzc2FnZT86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhRmxvd1RvRWxlbWVudHMnXX0gKi9cblx0Zmxvd1RvPzogc3RyaW5nIHwgRWxlbWVudCB8IG51bGxcblx0LyoqIHtAaW5oZXJpdGRvYyBBUklBTWl4aW5bJ2FyaWFMYWJlbGxlZEJ5RWxlbWVudHMnXX0gKi9cblx0bGFiZWxsZWRCeT86IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsXG5cdC8qKiB7QGluaGVyaXRkb2MgQVJJQU1peGluWydhcmlhT3duc0VsZW1lbnRzJ119ICovXG5cdG93bnM/OiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBBcmlhID0gQXJpYVN0cmluZ1Byb3BlcnRpZXMgJiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzXG5cbmNvbnN0IGFyaWFJZFJlZmVyZW5jZUF0dHJpYnV0ZXM6IFJlY29yZDxrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzLCBzdHJpbmc+ID0ge1xuXHRhY3RpdmVEZXNjZW5kYW50OiAnYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyxcblx0Y29udHJvbHM6ICdhcmlhLWNvbnRyb2xzJyxcblx0ZGVzY3JpYmVkQnk6ICdhcmlhLWRlc2NyaWJlZGJ5Jyxcblx0ZGV0YWlsczogJ2FyaWEtZGV0YWlscycsXG5cdGVycm9yTWVzc2FnZTogJ2FyaWEtZXJyb3JtZXNzYWdlJyxcblx0Zmxvd1RvOiAnYXJpYS1mbG93dG8nLFxuXHRsYWJlbGxlZEJ5OiAnYXJpYS1sYWJlbGxlZGJ5Jyxcblx0b3duczogJ2FyaWEtb3ducycsXG59XG5cbi8vIGFyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCBpcyBzaW5ndWxhcjsgdGhlIHJlc3QgdGFrZSBFbGVtZW50W11cbmNvbnN0IGFyaWFJZFJlZmVyZW5jZUVsZW1lbnRQcm9wZXJ0aWVzOiBSZWNvcmQ8a2V5b2YgQXJpYUlkUmVmZXJlbmNlUHJvcGVydGllcywgc3RyaW5nPiA9IHtcblx0YWN0aXZlRGVzY2VuZGFudDogJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcsXG5cdGNvbnRyb2xzOiAnYXJpYUNvbnRyb2xzRWxlbWVudHMnLFxuXHRkZXNjcmliZWRCeTogJ2FyaWFEZXNjcmliZWRCeUVsZW1lbnRzJyxcblx0ZGV0YWlsczogJ2FyaWFEZXRhaWxzRWxlbWVudHMnLFxuXHRlcnJvck1lc3NhZ2U6ICdhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMnLFxuXHRmbG93VG86ICdhcmlhRmxvd1RvRWxlbWVudHMnLFxuXHRsYWJlbGxlZEJ5OiAnYXJpYUxhYmVsbGVkQnlFbGVtZW50cycsXG5cdG93bnM6ICdhcmlhT3duc0VsZW1lbnRzJyxcbn1cblxuZnVuY3Rpb24gc2V0UHJvcGVydHkoZWxlbWVudDogRWxlbWVudCwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG5cdChlbGVtZW50IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0gPSB2YWx1ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRBcmlhUHJvcGVydGllcyhhcmlhOiBBcmlhIHwgdW5kZWZpbmVkLCBlbGVtZW50OiBFbGVtZW50KTogdm9pZCB7XG5cdGlmICghYXJpYSkgcmV0dXJuXG5cdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGFyaWEpKSB7XG5cdFx0aWYgKCEoa2V5IGluIGFyaWFJZFJlZmVyZW5jZUF0dHJpYnV0ZXMpKSB7XG5cdFx0XHRjb25zdCBkb21LZXkgPSBgYXJpYSR7a2V5WzBdLnRvVXBwZXJDYXNlKCl9JHtrZXkuc2xpY2UoMSl9YFxuXHRcdFx0c2V0UHJvcGVydHkoZWxlbWVudCwgZG9tS2V5LCB2YWx1ZSlcblx0XHRcdGNvbnRpbnVlXG5cdFx0fVxuXHRcdGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhcmlhSWRSZWZlcmVuY2VBdHRyaWJ1dGVzW2tleSBhcyBrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzXSlcblx0XHRcdGNvbnRpbnVlXG5cdFx0fVxuXHRcdGlmICh2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcblx0XHRcdGNvbnN0IGlkbEtleSA9IGFyaWFJZFJlZmVyZW5jZUVsZW1lbnRQcm9wZXJ0aWVzW2tleSBhcyBrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzXVxuXHRcdFx0c2V0UHJvcGVydHkoZWxlbWVudCwgaWRsS2V5LCBpZGxLZXkuZW5kc1dpdGgoJ0VsZW1lbnRzJykgPyBbdmFsdWVdIDogdmFsdWUpXG5cdFx0XHRjb250aW51ZVxuXHRcdH1cblx0XHRlbGVtZW50LnNldEF0dHJpYnV0ZShhcmlhSWRSZWZlcmVuY2VBdHRyaWJ1dGVzW2tleSBhcyBrZXlvZiBBcmlhSWRSZWZlcmVuY2VQcm9wZXJ0aWVzXSwgdmFsdWUpXG5cdH1cbn1cbiIsImltcG9ydCB7IEVsZW1lbnRPbkhhbmRsZXJzIH0gZnJvbSAnQHJvb3RlZC9ldmVudHMnXG5cbmltcG9ydCB7IHR5cGUgQXJpYSwgYnVpbGRBcmlhUHJvcGVydGllcyB9IGZyb20gJy4vYXJpYS5tdHMnXG5pbXBvcnQgeyBDc3NDbGFzc2VzIH0gZnJvbSAnLi9jbGFzc2VzLm10cydcbmltcG9ydCB7IEh0bWxFbGVtZW50UHJvcGVydGllcyB9IGZyb20gJy4vaHRtbC1lbGVtZW50LXByb3BlcnRpZXMubXRzJ1xuaW1wb3J0IHsgU3ZnRWxlbWVudFByb3BlcnRpZXMsIFN2Z1RhZ0VsZW1lbnQsIFN2Z1RhZ05hbWUgfSBmcm9tICcuL3N2Zy1lbGVtZW50LXByb3BlcnRpZXMubXRzJ1xuXG5mdW5jdGlvbiBidWlsZE9uSGFuZGxlcnM8VEVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50Pihcblx0b246IEVsZW1lbnRPbkhhbmRsZXJzPFRFbGVtZW50PiB8IHVuZGVmaW5lZCxcblx0ZWxlbWVudDogVEVsZW1lbnQsXG5cdHNpZ25hbDogQWJvcnRTaWduYWwsXG4pOiB2b2lkIHtcblx0aWYgKCFvbikgcmV0dXJuXG5cdGZvciAoY29uc3QgW2tleSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXMob24pKSB7XG5cdFx0aWYgKCFoYW5kbGVyKSBjb250aW51ZVxuXHRcdGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdGtleSxcblx0XHRcdGV2ZW50ID0+IHZvaWQgKGhhbmRsZXIgYXMgKGV2ZW50PzogRXZlbnQpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KShldmVudCksXG5cdFx0XHRzaWduYWwgPyB7IHNpZ25hbCB9IDogdW5kZWZpbmVkLFxuXHRcdClcblx0fVxufVxuXG5mdW5jdGlvbiBidWlsZENsYXNzTGlzdChjbGFzc2VzOiBDc3NDbGFzc2VzIHwgdW5kZWZpbmVkKSB7XG5cdGlmIChjbGFzc2VzID09PSBudWxsIHx8IGNsYXNzZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHt9XG5cdGlmIChBcnJheS5pc0FycmF5KGNsYXNzZXMpKSByZXR1cm4geyBjbGFzc05hbWU6IGNsYXNzZXMuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSB9XG5cblx0cmV0dXJuIHsgY2xhc3NOYW1lOiBTdHJpbmcoY2xhc3NlcykgfVxufVxuXG5mdW5jdGlvbiBpc1dyaXRhYmxlRG9tUHJvcGVydHkoZWxlbWVudDogRWxlbWVudCwga2V5OiBzdHJpbmcpOiBib29sZWFuIHtcblx0bGV0IHByb3RvOiBvYmplY3QgfCBudWxsID0gZWxlbWVudFxuXHR3aGlsZSAocHJvdG8pIHtcblx0XHRjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywga2V5KVxuXHRcdGlmIChkZXNjKSByZXR1cm4gISEoZGVzYy53cml0YWJsZSB8fCBkZXNjLnNldClcblx0XHRwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90bykgYXMgb2JqZWN0IHwgbnVsbFxuXHR9XG5cdHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgdHlwZSBFbGVtZW50Q3JlYXRvciA9IChrZXk6IHN0cmluZywgbnM/OiBzdHJpbmcpID0+IEVsZW1lbnRcblxuLyoqXG4gKiBUaGUgb3ZlcmxvYWRlZCBmdW5jdGlvbiB0eXBlIHJldHVybmVkIGJ5IHtAbGluayBjcmVhdGVFbGVtZW50RmFjdG9yeX0uXG4gKiBBY2NlcHRzIEhUTUwgb3IgU1ZHIHRhZyBuYW1lcyBhbmQgcmV0dXJucyB0aGUgbWF0Y2hpbmcgZWxlbWVudCB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRDcmVhdG9yRnVuY3Rpb24ge1xuXHQodGFnOiAnc3ZnJywgcHJvcGVydGllcz86IFN2Z0VsZW1lbnRQcm9wZXJ0aWVzPCdzdmcnPik6IFNWR1NWR0VsZW1lbnRcblx0PEsgZXh0ZW5kcyBFeGNsdWRlPFN2Z1RhZ05hbWUsICdzdmcnPj4odGFnOiBLLCBwcm9wZXJ0aWVzPzogU3ZnRWxlbWVudFByb3BlcnRpZXM8Sz4pOiBTdmdUYWdFbGVtZW50PEs+XG5cdDxLIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPih0YWc6IEssIHByb3BlcnRpZXM/OiBOb0luZmVyPEh0bWxFbGVtZW50UHJvcGVydGllczxLPj4pOiBIVE1MRWxlbWVudFRhZ05hbWVNYXBbS11cbn1cblxuZXhwb3J0IHR5cGUgRWxlbWVudEZhY3RvcnkgPSBFbGVtZW50Q3JlYXRvckZ1bmN0aW9uXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudEZhY3RvcnkoY29uc3RydWN0RWxlbWVudDogRWxlbWVudENyZWF0b3IsIHNpZ25hbDogQWJvcnRTaWduYWwpOiBFbGVtZW50Q3JlYXRvckZ1bmN0aW9uIHtcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgSFRNTCBvciBTVkcgZWxlbWVudC4gVGhlIGVsZW1lbnQgaXMgKipub3QqKiBhcHBlbmRlZCB0byB0aGVcblx0ICogZG9jdW1lbnQgYXV0b21hdGljYWxseS5cblx0ICpcblx0ICogKipIVE1MIGVsZW1lbnRzKiog4oCUIHBhc3MgYW55IHRhZyBmcm9tIGBIVE1MRWxlbWVudFRhZ05hbWVNYXBgOlxuXHQgKiBgYGB0c1xuXHQgKiBlbGVtZW50KCdkaXYnLCB7IGNsYXNzZXM6ICdjYXJkJywgY2hpbGRyZW46IFsuLi5dIH0pXG5cdCAqIGBgYFxuXHQgKlxuXHQgKiAqKlNWRyBlbGVtZW50cyoqIOKAlCB1c2UgYCdzdmcnYCBmb3IgdGhlIHJvb3QgZWxlbWVudCwgb3IgcHJlZml4IG90aGVyIFNWR1xuXHQgKiB0YWdzIHdpdGggYCdzdmc6J2AgdG8gYXZvaWQgY29sbGlzaW9ucyB3aXRoIHNhbWUtbmFtZWQgSFRNTCB0YWdzOlxuXHQgKiBgYGB0c1xuXHQgKiBlbGVtZW50KCdzdmcnLCB7IHZpZXdCb3g6ICcwIDAgMjQgMjQnLCBjaGlsZHJlbjogZWxlbWVudCgnc3ZnOnVzZScsIHsgaHJlZjogdXJsIH0pIH0pXG5cdCAqIGBgYFxuXHQgKlxuXHQgKiAqKmBjbGFzc2VzYCoqIOKAlCBhY2NlcHRzIGEgc2luZ2xlIGNsYXNzIHN0cmluZyBvciBhIHtAbGluayBDc3NDbGFzc2VzfSBhcnJheTtcblx0ICogZmFsc3kgZW50cmllcyBhcmUgZmlsdGVyZWQgb3V0IGF1dG9tYXRpY2FsbHkuXG5cdCAqXG5cdCAqICoqRE9NIHByb3BlcnR5IG5hbWVzKiog4oCUIGZvciBIVE1MIGVsZW1lbnRzLCBvdGhlciBwcm9wZXJ0aWVzIGFyZSBzZXQgdmlhXG5cdCAqIGBPYmplY3QuYXNzaWduYCBhbmQgbXVzdCB1c2UgRE9NIHByb3BlcnR5IG5hbWVzLCBub3QgSFRNTCBhdHRyaWJ1dGUgbmFtZXM6XG5cdCAqIHwgSFRNTCBhdHRyaWJ1dGUgfCBET00gcHJvcGVydHkgfFxuXHQgKiB8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXxcblx0ICogfCBgZm9yYCAgICAgICAgICB8IGBodG1sRm9yYCAgICB8XG5cdCAqIHwgYHJlYWRvbmx5YCAgICAgfCBgcmVhZE9ubHlgICAgfFxuXHQgKlxuXHQgKiBGb3IgU1ZHIGVsZW1lbnRzLCB3cml0YWJsZSBET00gcHJvcGVydGllcyBhcmUgc2V0IGRpcmVjdGx5OyBhbnl0aGluZyBlbHNlXG5cdCAqIChlLmcuIGB2aWV3Qm94YCwgYGhyZWZgKSBmYWxscyBiYWNrIHRvIGBzZXRBdHRyaWJ1dGVgIGF1dG9tYXRpY2FsbHkuXG5cdCAqXG5cdCAqICoqQ2hpbGRyZW4qKiDigJQgcGFzcyBhIHNpbmdsZSBgTm9kZWAgb3IgYW4gYXJyYXkgb2YgYE5vZGVgcyB2aWEgdGhlXG5cdCAqIGBjaGlsZHJlbmAgcHJvcGVydHk7IHRoZXkgYXJlIGFwcGVuZGVkIGluIG9yZGVyLlxuXHQgKlxuXHQgKiAqKkV2ZW50IGxpc3RlbmVycyoqIOKAlCB1c2UgdGhlIGBvbmAgcHJvcCB3aXRoIGFuIG9iamVjdCBvZiBldmVudCBoYW5kbGVycy5cblx0ICogTGlzdGVuZXJzIGFyZSBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgd2hlbiB0aGUgY29tcG9uZW50IHVubW91bnRzLlxuXHQgKlxuXHQgKiAqKkFSSUEqKiDigJQgdXNlIHRoZSBgYXJpYWAgcHJvcCBmb3IgQVJJQSBhdHRyaWJ1dGVzLiBBY2NlcHRzIHN0cmluZyBJRHMgb3Jcblx0ICogYEVsZW1lbnRgIHJlZmVyZW5jZXMgZm9yIElETCByZWZsZWN0aW9uIHByb3BlcnRpZXMuXG5cdCAqXG5cdCAqIEBleGFtcGxlXG5cdCAqIGBgYHRzXG5cdCAqIGNvbnN0IGRpdiA9IGVsZW1lbnQoJ2RpdicsIHtcblx0ICogICBjbGFzc2VzOiAnY2FyZCcsXG5cdCAqICAgYXJpYTogeyBsYWJlbDogJ0NhcmQnLCBsYWJlbGxlZEJ5OiBoZWFkaW5nRWwgfSxcblx0ICogICBjaGlsZHJlbjogW1xuXHQgKiAgICAgZWxlbWVudCgnaDInLCB7IHRleHRDb250ZW50OiAnVGl0bGUnIH0pLFxuXHQgKiAgICAgZWxlbWVudCgncCcsICB7IHRleHRDb250ZW50OiAnQm9keScgIH0pLFxuXHQgKiAgIF0sXG5cdCAqIH0pXG5cdCAqXG5cdCAqIGNvbnN0IGljb24gPSBlbGVtZW50KCdzdmcnLCB7XG5cdCAqICAgdmlld0JveDogJzAgMCAyNCAyNCcsXG5cdCAqICAgYXJpYTogeyBoaWRkZW46ICd0cnVlJyB9LFxuXHQgKiAgIGNoaWxkcmVuOiBlbGVtZW50KCdzdmc6dXNlJywgeyBocmVmOiBzcHJpdGVVcmwgfSksXG5cdCAqIH0pXG5cdCAqIGBgYFxuXHQgKi9cblx0ZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWc6ICdzdmcnLCBwcm9wZXJ0aWVzPzogU3ZnRWxlbWVudFByb3BlcnRpZXM8J3N2Zyc+KTogU1ZHU1ZHRWxlbWVudFxuXHRmdW5jdGlvbiBjcmVhdGVFbGVtZW50PEsgZXh0ZW5kcyBFeGNsdWRlPFN2Z1RhZ05hbWUsICdzdmcnPj4odGFnOiBLLCBwcm9wZXJ0aWVzPzogU3ZnRWxlbWVudFByb3BlcnRpZXM8Sz4pOiBTdmdUYWdFbGVtZW50PEs+XG5cdGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQ8S0VsZW1lbnQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KHRhZzogS0VsZW1lbnQsIHByb3BlcnRpZXM/OiBOb0luZmVyPEh0bWxFbGVtZW50UHJvcGVydGllczxLRWxlbWVudD4+KTogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tFbGVtZW50XVxuXHRmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZzogc3RyaW5nLCBwcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBFbGVtZW50IHtcblx0XHRpZiAodGFnID09PSAnc3ZnJyB8fCB0YWcuc3RhcnRzV2l0aCgnc3ZnOicpKSB7XG5cdFx0XHRjb25zdCBhY3R1YWxUYWcgPSB0YWcgPT09ICdzdmcnID8gJ3N2ZycgOiB0YWcuc2xpY2UoNClcblx0XHRcdGNvbnN0IHsgY2xhc3NlcywgY2hpbGRyZW4sIGFyaWEsIG9uLCBzdHlsZSwgLi4uYXR0cmlidXRlcyB9ID0gcHJvcGVydGllcyA/PyB7fVxuXHRcdFx0Y29uc3QgbmV3RWxlbWVudCA9IGNvbnN0cnVjdEVsZW1lbnQoYWN0dWFsVGFnLCAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnKSBhcyBTVkdFbGVtZW50XG5cblx0XHRcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpKSB7XG5cdFx0XHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSBjb250aW51ZVxuXHRcdFx0XHRpZiAoaXNXcml0YWJsZURvbVByb3BlcnR5KG5ld0VsZW1lbnQsIGtleSkpIHtcblx0XHRcdFx0XHQ7KG5ld0VsZW1lbnQgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSA9IHZhbHVlXG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG5cdFx0XHRcdFx0bmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBTdHJpbmcodmFsdWUpKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHsgY2xhc3NOYW1lIH0gPSBidWlsZENsYXNzTGlzdChjbGFzc2VzIGFzIENzc0NsYXNzZXMgfCB1bmRlZmluZWQpXG5cdFx0XHRpZiAoY2xhc3NOYW1lKSBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjbGFzc05hbWUpXG5cblx0XHRcdGlmIChzdHlsZSkgT2JqZWN0LmFzc2lnbihuZXdFbGVtZW50LnN0eWxlLCBzdHlsZSlcblx0XHRcdGJ1aWxkQXJpYVByb3BlcnRpZXMoYXJpYSBhcyBBcmlhIHwgdW5kZWZpbmVkLCBuZXdFbGVtZW50KVxuXHRcdFx0YnVpbGRPbkhhbmRsZXJzKG9uIGFzIEVsZW1lbnRPbkhhbmRsZXJzPEVsZW1lbnQ+IHwgdW5kZWZpbmVkLCBuZXdFbGVtZW50LCBzaWduYWwpXG5cblx0XHRcdGFwcGVuZENoaWxkcmVuKG5ld0VsZW1lbnQsIGNoaWxkcmVuIGFzIEFycmF5PE5vZGUgfCBzdHJpbmc+IHwgTm9kZSB8IHN0cmluZyB8IHVuZGVmaW5lZClcblxuXHRcdFx0cmV0dXJuIG5ld0VsZW1lbnRcblx0XHR9XG5cblx0XHRjb25zdCB7IGFyaWEsIGNoaWxkcmVuLCBjbGFzc2VzLCBvbiwgc3R5bGUsIC4uLmFzc2lnbmFibGVQcm9wZXJ0aWVzIH0gPSBwcm9wZXJ0aWVzID8/IHt9XG5cdFx0Y29uc3QgbmV3RWxlbWVudCA9IGNvbnN0cnVjdEVsZW1lbnQodGFnKSBhcyBIVE1MRWxlbWVudFxuXG5cdFx0Y29uc3QgeyBjbGFzc05hbWUgfSA9IGJ1aWxkQ2xhc3NMaXN0KGNsYXNzZXMgYXMgQ3NzQ2xhc3NlcyB8IHVuZGVmaW5lZClcblx0XHRpZiAoY2xhc3NOYW1lKSBuZXdFbGVtZW50LmNsYXNzTmFtZSA9IGNsYXNzTmFtZVxuXG5cdFx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXNzaWduYWJsZVByb3BlcnRpZXMpKSB7XG5cdFx0XHRpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgY29udGludWVcblx0XHRcdGlmIChpc1dyaXRhYmxlRG9tUHJvcGVydHkobmV3RWxlbWVudCwga2V5KSkge1xuXHRcdFx0XHQ7KG5ld0VsZW1lbnQgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSA9IHZhbHVlXG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcblx0XHRcdFx0bmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBTdHJpbmcodmFsdWUpKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChzdHlsZSkgT2JqZWN0LmFzc2lnbihuZXdFbGVtZW50LnN0eWxlLCBzdHlsZSlcblx0XHRidWlsZEFyaWFQcm9wZXJ0aWVzKGFyaWEgYXMgQXJpYSB8IHVuZGVmaW5lZCwgbmV3RWxlbWVudClcblx0XHRidWlsZE9uSGFuZGxlcnMob24gYXMgRWxlbWVudE9uSGFuZGxlcnM8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkLCBuZXdFbGVtZW50LCBzaWduYWwpXG5cdFx0YXBwZW5kQ2hpbGRyZW4obmV3RWxlbWVudCwgY2hpbGRyZW4gYXMgQXJyYXk8Tm9kZSB8IHN0cmluZz4gfCBOb2RlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKVxuXG5cdFx0cmV0dXJuIG5ld0VsZW1lbnRcblx0fVxuXG5cdHJldHVybiBjcmVhdGVFbGVtZW50IGFzIHVua25vd24gYXMgRWxlbWVudENyZWF0b3JGdW5jdGlvblxufVxuXG5mdW5jdGlvbiBhcHBlbmRDaGlsZHJlbihlbGVtZW50OiBFbGVtZW50LCBjaGlsZHJlbjogQXJyYXk8Tm9kZSB8IHN0cmluZz4gfCBOb2RlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuXHRcdGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcblx0XHRcdGVsZW1lbnQuYXBwZW5kKGNoaWxkKVxuXHRcdH1cblx0fVxuXHRlbHNlIGlmIChjaGlsZHJlbikge1xuXHRcdGVsZW1lbnQuYXBwZW5kKGNoaWxkcmVuKVxuXHR9XG59XG4iXX0=
|