valyrian.js 8.0.6 → 8.0.7
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/index.js +4 -4
- package/dist/index.js.map +2 -2
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +2 -2
- package/lib/index.ts +4 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -192,15 +192,15 @@ var directives = {
|
|
|
192
192
|
handler = () => model[property] = !model[property];
|
|
193
193
|
value = model[property];
|
|
194
194
|
}
|
|
195
|
-
|
|
195
|
+
setAttribute("checked", value, vnode);
|
|
196
196
|
break;
|
|
197
197
|
}
|
|
198
198
|
case "radio": {
|
|
199
|
-
|
|
199
|
+
setAttribute("checked", model[property] === vnode.dom.value, vnode);
|
|
200
200
|
break;
|
|
201
201
|
}
|
|
202
202
|
default: {
|
|
203
|
-
|
|
203
|
+
setAttribute("value", model[property], vnode);
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
206
|
} else if (vnode.tag === "select") {
|
|
@@ -238,7 +238,7 @@ var directives = {
|
|
|
238
238
|
vnode.children = [model[property]];
|
|
239
239
|
}
|
|
240
240
|
const prevHandler = vnode.props[event];
|
|
241
|
-
|
|
241
|
+
setAttribute(
|
|
242
242
|
event,
|
|
243
243
|
(e) => {
|
|
244
244
|
handler(e);
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../lib/index.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable */\ndeclare global {\n var document: Document;\n namespace JSX {\n interface IntrinsicElements extends DefaultRecord {}\n type Element = ReturnType<\n typeof v | ((...args: any) => string | number | null | undefined | boolean | Promise<any>)\n >;\n type ComponentReturnType = string | number | null | undefined | boolean | Element | Element[];\n }\n}\n\ninterface DefaultRecord extends Record<string | number | symbol, any> {}\n\nexport interface Properties extends DefaultRecord {\n key?: string | number;\n}\n\nexport interface DomElement extends Element, DefaultRecord {}\n\nexport interface Component extends DefaultRecord {\n (props: Properties, children: any[]): Vnode | any;\n}\n\nexport interface POJOComponent extends DefaultRecord {\n view: Component;\n}\n\nexport type ValyrianComponent = Component | POJOComponent;\n\nexport interface VnodeComponentInterface extends Vnode {\n tag: ValyrianComponent;\n}\n\nexport interface Children extends Array<Vnode | VnodeComponentInterface | ValyrianComponent | any> {}\n\nexport interface Directive {\n (value: any, vnode: VnodeWithDom, oldProps: Properties | null): false | void | any;\n}\n\nexport const isNodeJs = Boolean(typeof process !== \"undefined\" && process.versions && process.versions.node);\n\nexport class Vnode {\n constructor(\n public tag: string | Component | POJOComponent,\n public props: null | Properties,\n public children: Children,\n public dom?: DomElement,\n public isSVG?: boolean\n ) {}\n}\n\nexport interface VnodeWithDom extends Vnode {\n tag: string;\n dom: DomElement;\n props: Properties;\n}\n\nexport const isPOJOComponent = (component: unknown): component is POJOComponent =>\n Boolean(component && typeof component === \"object\" && \"view\" in component);\n\nexport const isComponent = (component: unknown): component is Component =>\n Boolean(typeof component === \"function\" || isPOJOComponent(component));\nexport const isVnode = (object?: unknown): object is Vnode => object instanceof Vnode;\n\nexport const isVnodeComponent = (object?: unknown): object is VnodeComponentInterface => {\n return isVnode(object) && isComponent(object.tag);\n};\n\nexport function v(tagOrComponent: string | ValyrianComponent, props: Properties | null, ...children: Children) {\n return new Vnode(tagOrComponent, props, children);\n}\n\nv.fragment = (_: Properties, ...children: Children) => children;\n\nexport function hidrateDomToVnode(dom: any): VnodeWithDom | void {\n if (dom.nodeType === 3) {\n return dom.nodeValue;\n }\n\n if (dom.nodeType === 1) {\n const tag = dom.nodeName.toLowerCase();\n const props = {} as Properties;\n const children = [] as Children;\n\n for (let i = 0, l = dom.childNodes.length; i < l; i++) {\n const childDom = dom.childNodes[i];\n if (childDom.nodeType === 3) {\n children.push(childDom.nodeValue);\n } else if (childDom.nodeType === 1) {\n const childVnode = hidrateDomToVnode(childDom);\n children.push(childVnode);\n }\n }\n\n const attributes = dom.attributes;\n for (let i = 0, l = attributes.length; i < l; i++) {\n const attr = attributes[i];\n props[attr.nodeName] = attr.nodeValue;\n }\n\n const vnode = new Vnode(tag, props, children);\n vnode.dom = dom;\n dom.vnode = vnode;\n vnode.isSVG = tag === \"svg\";\n return vnode as VnodeWithDom;\n }\n}\n\nexport function trust(htmlString: string) {\n const div = document.createElement(\"div\");\n div.innerHTML = htmlString.trim();\n return Array.from(div.childNodes).map(hidrateDomToVnode);\n}\n\nlet mainComponent: VnodeComponentInterface | null = null;\nlet mainVnode: VnodeWithDom | null = null;\nlet isMounted = false;\n\nexport const current = {\n vnode: null as Vnode | null,\n component: null as ValyrianComponent | null,\n event: null as Event | null\n};\n\nexport const reservedProps = new Set<string>([\n \"key\",\n \"state\",\n \"v-keep\",\n \"v-text\",\n \"v-if\",\n \"v-for\",\n \"v-show\",\n \"v-class\",\n \"v-html\",\n \"v-model\",\n \"v-create\",\n \"v-update\",\n \"v-cleanup\"\n]);\n\nconst onCleanupSet = new Set<Function>();\nconst onMountSet = new Set<Function>();\nconst onUpdateSet = new Set<Function>();\nconst onUnmountSet = new Set<Function>();\nexport const onMount = (callback: Function) => !isMounted && onMountSet.add(callback);\nexport const onUpdate = (callback: Function) => onUpdateSet.add(callback);\nexport const onCleanup = (callback: Function) => onCleanupSet.add(callback);\nexport const onUnmount = (callback: Function) => !isMounted && onUnmountSet.add(callback);\nconst callSet = (set: Set<Function>) => {\n for (const callback of set) {\n callback();\n }\n set.clear();\n};\n\nexport const directives: Record<string, Directive> = {\n \"v-if\": (value, vnode) => {\n if (!Boolean(value)) {\n const parentNode = vnode.dom?.parentNode;\n if (parentNode) {\n parentNode.replaceChild(document.createTextNode(\"\"), vnode.dom);\n }\n\n return false;\n }\n },\n\n \"v-show\": (value, vnode) => {\n const bool = Boolean(value);\n (\n vnode.dom as unknown as {\n style: { display: string };\n }\n ).style.display = bool ? \"\" : \"none\";\n },\n\n \"v-html\": (value, vnode) => {\n vnode.children = trust(value as string);\n },\n\n // The \"v-model\" directive binds the value of an input element to a model property\n \"v-model\": (model, vnode) => {\n // eslint-disable-next-line prefer-const\n if (\"name\" in vnode.props === false) {\n return;\n }\n\n let value;\n const property = vnode.props.name;\n let event = \"oninput\";\n\n // This function updates the model property when the input element's value changes\n let handler = (e: Event) => (model[property] = (e.target as DomElement & Record<string, any>).value);\n if (vnode.tag === \"input\") {\n // Depending on the type of input element, use a different handler function\n switch (vnode.props.type) {\n case \"checkbox\": {\n if (Array.isArray(model[property])) {\n // If the model property is an array, add or remove the value from the array when the checkbox is checked or unchecked\n handler = (e: Event) => {\n const val = (e.target as DomElement & Record<string, any>).value;\n const idx = model[property].indexOf(val);\n if (idx === -1) {\n model[property].push(val);\n } else {\n model[property].splice(idx, 1);\n }\n };\n // If the value is in the array, set the checkbox to be checked\n value = model[property].indexOf(vnode.dom.value) !== -1;\n } else if (\"value\" in vnode.props) {\n // If the input element has a \"value\" attribute, use it to determine the checked state\n handler = () => {\n if (model[property] === vnode.props.value) {\n model[property] = null;\n } else {\n model[property] = vnode.props.value;\n }\n };\n value = model[property] === vnode.props.value;\n } else {\n // If there is no \"value\" attribute, use a boolean value for the model property\n handler = () => (model[property] = !model[property]);\n value = model[property];\n }\n // Set the \"checked\" attribute on the input element\n // eslint-disable-next-line no-use-before-define\n sharedSetAttribute(\"checked\", value, vnode);\n break;\n }\n case \"radio\": {\n // If the element is a radio button, set the \"checked\" attribute based on the value of the model property\n // eslint-disable-next-line no-use-before-define\n sharedSetAttribute(\"checked\", model[property] === vnode.dom.value, vnode);\n break;\n }\n default: {\n // For all other input types, set the \"value\" attribute based on the value of the model property\n // eslint-disable-next-line no-use-before-define\n sharedSetAttribute(\"value\", model[property], vnode);\n }\n }\n } else if (vnode.tag === \"select\") {\n // If the element is a select element, use the \"click\" event by default\n event = \"onclick\";\n if (vnode.props.multiple) {\n // If the select element allows multiple selections, update the model property with an array of selected values\n handler = (e: Event & Record<string, any>) => {\n const val = (e.target as DomElement & Record<string, any>).value;\n if (e.ctrlKey) {\n // If the Ctrl key is pressed, add or remove the value from the array\n const idx = model[property].indexOf(val);\n if (idx === -1) {\n model[property].push(val);\n } else {\n model[property].splice(idx, 1);\n }\n } else {\n // If the Ctrl key is not pressed, set the model property to an array with the selected value\n model[property].splice(0, model[property].length);\n model[property].push(val);\n }\n };\n // Set the \"selected\" attribute on the options based on whether they are in the model property array\n vnode.children.forEach((child: VnodeWithDom) => {\n if (child.tag === \"option\") {\n const value = \"value\" in child.props ? child.props.value : child.children.join(\"\").trim();\n child.props.selected = model[property].indexOf(value) !== -1;\n }\n });\n } else {\n // If the select element does not allow multiple selections, set the \"selected\" attribute on the options based on the value of the model property\n vnode.children.forEach((child: VnodeWithDom) => {\n if (child.tag === \"option\") {\n const value = \"value\" in child.props ? child.props.value : child.children.join(\"\").trim();\n child.props.selected = value === model[property];\n }\n });\n }\n } else if (vnode.tag === \"textarea\") {\n // Set the textarea's content to the value of the model property\n vnode.children = [model[property]];\n }\n\n // We assume that the prev handler if any will not be changed by the user across patchs\n const prevHandler = vnode.props[event];\n\n // Set the event handler on the element\n // eslint-disable-next-line no-use-before-define\n sharedSetAttribute(\n event,\n (e: Event) => {\n handler(e);\n\n // If the previous handler is defined, call it after the model has been updated\n if (prevHandler) {\n prevHandler(e);\n }\n },\n vnode\n );\n },\n\n \"v-create\": (callback, vnode, oldProps) => {\n if (!oldProps) {\n const cleanup = callback(vnode);\n\n if (typeof cleanup === \"function\") {\n onCleanup(cleanup);\n }\n }\n },\n\n \"v-update\": (callback, vnode, oldProps) => {\n if (oldProps) {\n const cleanup = callback(vnode, oldProps);\n\n if (typeof cleanup === \"function\") {\n onCleanup(cleanup);\n }\n }\n },\n\n \"v-cleanup\": (callback, vnode) => {\n onCleanup(() => callback(vnode));\n },\n\n \"v-class\": (value, vnode) => {\n if (typeof value === \"string\") {\n vnode.dom.className = value;\n } else if (Array.isArray(value)) {\n vnode.dom.className = value.join(\" \");\n } else if (typeof value === \"object\") {\n const classList = vnode.dom.classList;\n for (const name in value) {\n const val = typeof value[name] === \"function\" ? (value[name] as Function)() : value[name];\n classList.toggle(name, val);\n }\n }\n },\n\n // Frequent used properties\n class(value, vnode) {\n if (vnode.dom.className !== value) {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"class\", value);\n return;\n }\n vnode.dom.className = value;\n }\n },\n\n className(value, vnode) {\n directives.class(value, vnode, null);\n },\n\n id: (value, vnode) => {\n if (vnode.dom.id !== value) {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"id\", value);\n return;\n }\n vnode.dom.id = value;\n }\n },\n\n style: (value, vnode) => {\n if (typeof value === \"string\") {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"style\", value);\n return;\n }\n vnode.dom.style = value;\n } else if (typeof value === \"object\") {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"style\", \"\");\n } else {\n vnode.dom.style = \"\";\n }\n const domStyle = vnode.dom.style;\n for (const name in value) {\n domStyle[name] = value[name];\n }\n }\n }\n};\n\nexport function directive(name: string, directive: Directive) {\n const directiveName = `v-${name}`;\n directives[directiveName] = directive;\n reservedProps.add(directiveName);\n}\n\nexport function setPropNameReserved(name: string) {\n reservedProps.add(name);\n}\n\nconst eventListenerNames = new Set<string>();\n\nfunction eventListener(e: Event) {\n current.event = e;\n let dom = e.target as DomElement;\n const name = `on${e.type}`;\n\n while (dom) {\n const oldVnode = dom.vnode as VnodeWithDom;\n if (oldVnode && oldVnode.props[name]) {\n oldVnode.props[name](e, oldVnode);\n\n if (!e.defaultPrevented) {\n // eslint-disable-next-line no-use-before-define\n update();\n }\n return;\n }\n dom = dom.parentNode as DomElement;\n }\n\n current.event = null;\n}\n\nfunction sharedSetAttribute(name: string, value: any, newVnode: VnodeWithDom): void | boolean {\n const newVnodeDom = newVnode.dom;\n if (typeof value === \"function\") {\n if (!eventListenerNames.has(name)) {\n // We attach the delegated event listener to the main vnode dom element, which is the root of the component\n (mainVnode as VnodeWithDom).dom.addEventListener(name.slice(2), eventListener);\n eventListenerNames.add(name);\n }\n return;\n }\n\n if (!newVnode.isSVG && name in newVnodeDom) {\n newVnodeDom[name] = value;\n return;\n }\n\n if (value === false) {\n newVnodeDom.removeAttribute(name);\n } else {\n newVnodeDom.setAttribute(name, value);\n }\n}\n\nexport function setAttribute(name: string, value: any, newVnode: VnodeWithDom): void {\n if (!reservedProps.has(name)) {\n newVnode.props[name] = value;\n sharedSetAttribute(name, value, newVnode);\n }\n}\n\nexport function updateAttributes(newVnode: VnodeWithDom, oldProps: Properties | null): void {\n const vnodeDom = newVnode.dom;\n const vnodeProps = newVnode.props;\n vnodeDom.vnode = newVnode;\n\n if (oldProps) {\n for (const name in oldProps) {\n if (name in vnodeProps === false && !eventListenerNames.has(name) && !reservedProps.has(name)) {\n if (!newVnode.isSVG && name in vnodeDom) {\n vnodeDom[name] = null;\n } else {\n vnodeDom.removeAttribute(name);\n }\n }\n }\n }\n\n for (const name in vnodeProps) {\n if (directives[name]) {\n if (directives[name](vnodeProps[name], newVnode, oldProps) === false) {\n break;\n }\n continue;\n }\n\n if (!reservedProps.has(name)) {\n sharedSetAttribute(name, vnodeProps[name], newVnode);\n }\n }\n}\n\nexport function createElement(tag: string, isSVG: boolean): DomElement {\n return isSVG\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", tag)\n : (document.createElement(tag) as DomElement);\n}\n\nfunction flatTree(newVnode: VnodeWithDom) {\n current.vnode = newVnode;\n\n let i = 0;\n const originalChildren = newVnode.children;\n let children = originalChildren;\n\n if (\"v-for\" in newVnode.props) {\n children = [];\n const set = newVnode.props[\"v-for\"];\n const l = set.length;\n const callback = newVnode.children[0];\n\n if (typeof callback !== \"function\") {\n console.warn(\"v-for directive must have a callback function as children\");\n return children;\n }\n\n for (let i = 0; i < l; i++) {\n children[i] = callback(set[i], i);\n }\n }\n\n while (i < children.length) {\n const newChild = children[i];\n\n if (newChild == null) {\n if (children === originalChildren) {\n children = [...originalChildren];\n }\n children.splice(i, 1);\n continue;\n }\n\n if (Array.isArray(newChild)) {\n if (children === originalChildren) {\n children = [...originalChildren];\n }\n children.splice(i, 1, ...newChild);\n continue;\n }\n\n if (newChild instanceof Vnode) {\n newChild.props = newChild.props || {};\n newChild.isSVG = newVnode.isSVG || newChild.tag === \"svg\";\n\n if (typeof newChild.tag !== \"string\") {\n if (children === originalChildren) {\n children = [...originalChildren];\n }\n\n const component = (current.component = newChild.tag);\n\n children[i] = (isPOJOComponent(component) ? component.view : component).bind(component)(\n newChild.props,\n newChild.children\n );\n\n continue;\n }\n }\n\n i++;\n }\n\n return children;\n}\n\nfunction createNewElement(newChild: VnodeWithDom, newVnode: VnodeWithDom, oldChild: DomElement | null) {\n const dom = createElement(newChild.tag, newChild.isSVG as boolean);\n if (oldChild) {\n newVnode.dom.replaceChild(dom, oldChild);\n } else {\n newVnode.dom.appendChild(dom);\n }\n newChild.dom = dom;\n updateAttributes(newChild, null);\n if (\"v-text\" in newChild.props) {\n newChild.dom.textContent = newChild.props[\"v-text\"];\n return;\n }\n\n const children = flatTree(newChild);\n if (children.length === 0) {\n newChild.dom.textContent = \"\";\n return;\n }\n\n for (let i = 0, l = children.length; i < l; i++) {\n if (children[i] instanceof Vnode === false) {\n newChild.dom.appendChild(document.createTextNode(children[i]));\n continue;\n }\n createNewElement(children[i], newChild, null);\n }\n}\n\nfunction patchKeyed(newVnode: VnodeWithDom, children: Children) {\n const oldTree = [...Array.from(newVnode.dom.childNodes)] as unknown as DomElement[];\n const childNodes = newVnode.dom.childNodes;\n const oldKeyedList: Record<string, number> = {};\n\n for (let i = 0, l = oldTree.length; i < l; i++) {\n const oldVnode = oldTree[i].vnode as VnodeWithDom;\n if (!oldVnode || \"key\" in oldVnode.props === false) {\n continue;\n }\n oldKeyedList[oldVnode.props.key as string] = i;\n }\n\n for (let i = 0, l = children.length; i < l; i++) {\n const newChild = children[i];\n const oldChild = oldTree[oldKeyedList[newChild.props.key as string]];\n\n if (!oldChild) {\n createNewElement(newChild, newVnode, childNodes[i] as DomElement | null);\n continue;\n }\n\n newChild.dom = oldChild;\n const currentChild = childNodes[i];\n if (!currentChild) {\n newVnode.dom.appendChild(oldChild);\n } else if (currentChild !== oldChild) {\n newVnode.dom.replaceChild(oldChild, currentChild);\n }\n\n if (\n \"v-keep\" in newChild.props === false ||\n !oldChild.vnode ||\n oldChild.props[\"v-keep\"] !== newChild.props[\"v-keep\"]\n ) {\n updateAttributes(newChild as VnodeWithDom, oldChild.vnode.props);\n\n if (\"v-text\" in newChild.props) {\n // eslint-disable-next-line eqeqeq\n if (oldChild.textContent != newChild.props[\"v-text\"]) {\n oldChild.textContent = newChild.props[\"v-text\"];\n }\n continue;\n }\n // eslint-disable-next-line no-use-before-define\n patch(newChild as VnodeWithDom);\n }\n }\n\n for (let i = children.length, l = childNodes.length; i < l; i++) {\n childNodes[childNodes.length - 1]?.remove();\n }\n}\n\n// eslint-disable-next-line complexity\nfunction patch(newVnode: VnodeWithDom): void {\n const children = flatTree(newVnode);\n\n const dom = newVnode.dom;\n\n if (children.length === 0) {\n if (dom.childNodes.length) {\n dom.textContent = \"\";\n }\n return;\n }\n\n const oldDomChildren = dom.childNodes as unknown as DomElement[];\n const oldChildrenLength = oldDomChildren.length;\n const childrenLength = children.length;\n if (oldChildrenLength === 0) {\n for (let i = 0; i < childrenLength; i++) {\n if (children[i] instanceof Vnode === false) {\n dom.appendChild(document.createTextNode(children[i]));\n continue;\n }\n createNewElement(children[i], newVnode, null);\n }\n return;\n }\n\n let shouldPatchKeyed = true;\n for (let i = 0; i < childrenLength; i++) {\n if (children[i] instanceof Vnode === false || !(\"key\" in children[i].props)) {\n shouldPatchKeyed = false;\n break;\n }\n }\n if (shouldPatchKeyed) {\n patchKeyed(newVnode, children);\n return;\n }\n\n for (let i = 0; i < childrenLength; i++) {\n const newChild = children[i] as VnodeWithDom;\n const isText = newChild instanceof Vnode === false;\n const oldChild = oldDomChildren[i];\n\n if (!oldChild) {\n if (isText) {\n newVnode.dom.appendChild(document.createTextNode(newChild as unknown as string));\n continue;\n }\n\n createNewElement(newChild as VnodeWithDom, newVnode, null);\n continue;\n }\n\n if (isText) {\n if (oldChild.nodeType !== 3) {\n newVnode.dom.replaceChild(document.createTextNode(newChild as unknown as string), oldChild);\n continue;\n }\n\n // eslint-disable-next-line eqeqeq\n if (oldChild.nodeValue != (newChild as unknown as string)) {\n oldChild.nodeValue = newChild as unknown as string;\n }\n continue;\n }\n\n if (\"v-keep\" in newChild.props) {\n if (oldChild.vnode && oldChild.vnode.props[\"v-keep\"] === newChild.props[\"v-keep\"]) {\n continue;\n }\n\n const nextOldChild = oldDomChildren[i + 1];\n if (nextOldChild && nextOldChild.vnode && nextOldChild.vnode.props[\"v-keep\"] === newChild.props[\"v-keep\"]) {\n oldChild.remove();\n continue;\n }\n }\n\n if (newChild.tag !== oldChild.nodeName.toLowerCase()) {\n createNewElement(newChild, newVnode, oldChild);\n continue;\n }\n\n newChild.dom = oldChild;\n updateAttributes(newChild, oldChild.vnode ? oldChild.vnode.props : null);\n if (\"v-text\" in newChild.props) {\n // eslint-disable-next-line eqeqeq\n if (newChild.dom.textContent != newChild.props[\"v-text\"]) {\n newChild.dom.textContent = newChild.props[\"v-text\"];\n }\n continue;\n }\n patch(newChild);\n }\n\n for (let i = childrenLength, l = oldDomChildren.length; i < l; i++) {\n oldDomChildren[i]?.remove();\n }\n}\n\nexport function updateVnode(vnode: VnodeWithDom): string | void {\n callSet(onCleanupSet);\n vnode.props = vnode.props || {};\n patch(vnode);\n callSet(isMounted ? onUpdateSet : onMountSet);\n isMounted = true;\n current.vnode = null;\n current.component = null;\n}\n\nexport function update(): string {\n if (mainVnode) {\n mainVnode.children = [mainComponent];\n updateVnode(mainVnode as VnodeWithDom);\n if (isNodeJs) {\n return mainVnode.dom.innerHTML;\n }\n }\n return \"\";\n}\n\nlet debouncedUpdateTimeout: any;\nconst debouncedUpdateMethod = isNodeJs ? update : () => requestAnimationFrame(update);\n\nexport function debouncedUpdate(timeout = 42) {\n if (current.event) {\n current.event.preventDefault();\n }\n clearTimeout(debouncedUpdateTimeout);\n debouncedUpdateTimeout = setTimeout(debouncedUpdateMethod, timeout);\n}\n\nexport function unmount() {\n if (mainVnode) {\n mainComponent = v(() => null, {}) as VnodeComponentInterface;\n const result = update();\n callSet(onUnmountSet);\n for (const name in eventListenerNames) {\n mainVnode.dom.removeEventListener(name.slice(2).toLowerCase(), eventListener);\n Reflect.deleteProperty(eventListenerNames, name);\n }\n\n mainComponent = null;\n mainVnode = null;\n isMounted = false;\n current.vnode = null;\n current.component = null;\n current.event = null;\n return result;\n }\n\n return \"\";\n}\n\nexport function mount(dom: string | DomElement, component: ValyrianComponent | VnodeComponentInterface | any) {\n const container =\n typeof dom === \"string\" ? (isNodeJs ? createElement(dom, dom === \"svg\") : document.querySelector(dom)) : dom;\n\n if (isComponent(component)) {\n mainComponent = v(component, {}, []) as VnodeComponentInterface;\n } else if (isVnodeComponent(component)) {\n mainComponent = component;\n } else {\n mainComponent = v(() => component, {}, []) as VnodeComponentInterface;\n }\n\n mainVnode = hidrateDomToVnode(container) as VnodeWithDom;\n return update();\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/* eslint-disable */\ndeclare global {\n var document: Document;\n namespace JSX {\n interface IntrinsicElements extends DefaultRecord {}\n type Element = ReturnType<\n typeof v | ((...args: any) => string | number | null | undefined | boolean | Promise<any>)\n >;\n type ComponentReturnType = string | number | null | undefined | boolean | Element | Element[];\n }\n}\n\ninterface DefaultRecord extends Record<string | number | symbol, any> {}\n\nexport interface Properties extends DefaultRecord {\n key?: string | number;\n}\n\nexport interface DomElement extends Element, DefaultRecord {}\n\nexport interface Component extends DefaultRecord {\n (props: Properties, children: any[]): Vnode | any;\n}\n\nexport interface POJOComponent extends DefaultRecord {\n view: Component;\n}\n\nexport type ValyrianComponent = Component | POJOComponent;\n\nexport interface VnodeComponentInterface extends Vnode {\n tag: ValyrianComponent;\n}\n\nexport interface Children extends Array<Vnode | VnodeComponentInterface | ValyrianComponent | any> {}\n\nexport interface Directive {\n (value: any, vnode: VnodeWithDom, oldProps: Properties | null): false | void | any;\n}\n\nexport const isNodeJs = Boolean(typeof process !== \"undefined\" && process.versions && process.versions.node);\n\nexport class Vnode {\n constructor(\n public tag: string | Component | POJOComponent,\n public props: null | Properties,\n public children: Children,\n public dom?: DomElement,\n public isSVG?: boolean\n ) {}\n}\n\nexport interface VnodeWithDom extends Vnode {\n tag: string;\n dom: DomElement;\n props: Properties;\n}\n\nexport const isPOJOComponent = (component: unknown): component is POJOComponent =>\n Boolean(component && typeof component === \"object\" && \"view\" in component);\n\nexport const isComponent = (component: unknown): component is Component =>\n Boolean(typeof component === \"function\" || isPOJOComponent(component));\nexport const isVnode = (object?: unknown): object is Vnode => object instanceof Vnode;\n\nexport const isVnodeComponent = (object?: unknown): object is VnodeComponentInterface => {\n return isVnode(object) && isComponent(object.tag);\n};\n\nexport function v(tagOrComponent: string | ValyrianComponent, props: Properties | null, ...children: Children) {\n return new Vnode(tagOrComponent, props, children);\n}\n\nv.fragment = (_: Properties, ...children: Children) => children;\n\nexport function hidrateDomToVnode(dom: any): VnodeWithDom | void {\n if (dom.nodeType === 3) {\n return dom.nodeValue;\n }\n\n if (dom.nodeType === 1) {\n const tag = dom.nodeName.toLowerCase();\n const props = {} as Properties;\n const children = [] as Children;\n\n for (let i = 0, l = dom.childNodes.length; i < l; i++) {\n const childDom = dom.childNodes[i];\n if (childDom.nodeType === 3) {\n children.push(childDom.nodeValue);\n } else if (childDom.nodeType === 1) {\n const childVnode = hidrateDomToVnode(childDom);\n children.push(childVnode);\n }\n }\n\n const attributes = dom.attributes;\n for (let i = 0, l = attributes.length; i < l; i++) {\n const attr = attributes[i];\n props[attr.nodeName] = attr.nodeValue;\n }\n\n const vnode = new Vnode(tag, props, children);\n vnode.dom = dom;\n dom.vnode = vnode;\n vnode.isSVG = tag === \"svg\";\n return vnode as VnodeWithDom;\n }\n}\n\nexport function trust(htmlString: string) {\n const div = document.createElement(\"div\");\n div.innerHTML = htmlString.trim();\n return Array.from(div.childNodes).map(hidrateDomToVnode);\n}\n\nlet mainComponent: VnodeComponentInterface | null = null;\nlet mainVnode: VnodeWithDom | null = null;\nlet isMounted = false;\n\nexport const current = {\n vnode: null as Vnode | null,\n component: null as ValyrianComponent | null,\n event: null as Event | null\n};\n\nexport const reservedProps = new Set<string>([\n \"key\",\n \"state\",\n \"v-keep\",\n \"v-text\",\n \"v-if\",\n \"v-for\",\n \"v-show\",\n \"v-class\",\n \"v-html\",\n \"v-model\",\n \"v-create\",\n \"v-update\",\n \"v-cleanup\"\n]);\n\nconst onCleanupSet = new Set<Function>();\nconst onMountSet = new Set<Function>();\nconst onUpdateSet = new Set<Function>();\nconst onUnmountSet = new Set<Function>();\nexport const onMount = (callback: Function) => !isMounted && onMountSet.add(callback);\nexport const onUpdate = (callback: Function) => onUpdateSet.add(callback);\nexport const onCleanup = (callback: Function) => onCleanupSet.add(callback);\nexport const onUnmount = (callback: Function) => !isMounted && onUnmountSet.add(callback);\nconst callSet = (set: Set<Function>) => {\n for (const callback of set) {\n callback();\n }\n set.clear();\n};\n\nexport const directives: Record<string, Directive> = {\n \"v-if\": (value, vnode) => {\n if (!Boolean(value)) {\n const parentNode = vnode.dom?.parentNode;\n if (parentNode) {\n parentNode.replaceChild(document.createTextNode(\"\"), vnode.dom);\n }\n\n return false;\n }\n },\n\n \"v-show\": (value, vnode) => {\n const bool = Boolean(value);\n (\n vnode.dom as unknown as {\n style: { display: string };\n }\n ).style.display = bool ? \"\" : \"none\";\n },\n\n \"v-html\": (value, vnode) => {\n vnode.children = trust(value as string);\n },\n\n // The \"v-model\" directive binds the value of an input element to a model property\n \"v-model\": (model, vnode) => {\n // eslint-disable-next-line prefer-const\n if (\"name\" in vnode.props === false) {\n return;\n }\n\n let value;\n const property = vnode.props.name;\n let event = \"oninput\";\n\n // This function updates the model property when the input element's value changes\n let handler = (e: Event) => (model[property] = (e.target as DomElement & Record<string, any>).value);\n if (vnode.tag === \"input\") {\n // Depending on the type of input element, use a different handler function\n switch (vnode.props.type) {\n case \"checkbox\": {\n if (Array.isArray(model[property])) {\n // If the model property is an array, add or remove the value from the array when the checkbox is checked or unchecked\n handler = (e: Event) => {\n const val = (e.target as DomElement & Record<string, any>).value;\n const idx = model[property].indexOf(val);\n if (idx === -1) {\n model[property].push(val);\n } else {\n model[property].splice(idx, 1);\n }\n };\n // If the value is in the array, set the checkbox to be checked\n value = model[property].indexOf(vnode.dom.value) !== -1;\n } else if (\"value\" in vnode.props) {\n // If the input element has a \"value\" attribute, use it to determine the checked state\n handler = () => {\n if (model[property] === vnode.props.value) {\n model[property] = null;\n } else {\n model[property] = vnode.props.value;\n }\n };\n value = model[property] === vnode.props.value;\n } else {\n // If there is no \"value\" attribute, use a boolean value for the model property\n handler = () => (model[property] = !model[property]);\n value = model[property];\n }\n // Set the \"checked\" attribute on the input element\n // eslint-disable-next-line no-use-before-define\n setAttribute(\"checked\", value, vnode);\n break;\n }\n case \"radio\": {\n // If the element is a radio button, set the \"checked\" attribute based on the value of the model property\n // eslint-disable-next-line no-use-before-define\n setAttribute(\"checked\", model[property] === vnode.dom.value, vnode);\n break;\n }\n default: {\n // For all other input types, set the \"value\" attribute based on the value of the model property\n // eslint-disable-next-line no-use-before-define\n setAttribute(\"value\", model[property], vnode);\n }\n }\n } else if (vnode.tag === \"select\") {\n // If the element is a select element, use the \"click\" event by default\n event = \"onclick\";\n if (vnode.props.multiple) {\n // If the select element allows multiple selections, update the model property with an array of selected values\n handler = (e: Event & Record<string, any>) => {\n const val = (e.target as DomElement & Record<string, any>).value;\n if (e.ctrlKey) {\n // If the Ctrl key is pressed, add or remove the value from the array\n const idx = model[property].indexOf(val);\n if (idx === -1) {\n model[property].push(val);\n } else {\n model[property].splice(idx, 1);\n }\n } else {\n // If the Ctrl key is not pressed, set the model property to an array with the selected value\n model[property].splice(0, model[property].length);\n model[property].push(val);\n }\n };\n // Set the \"selected\" attribute on the options based on whether they are in the model property array\n vnode.children.forEach((child: VnodeWithDom) => {\n if (child.tag === \"option\") {\n const value = \"value\" in child.props ? child.props.value : child.children.join(\"\").trim();\n child.props.selected = model[property].indexOf(value) !== -1;\n }\n });\n } else {\n // If the select element does not allow multiple selections, set the \"selected\" attribute on the options based on the value of the model property\n vnode.children.forEach((child: VnodeWithDom) => {\n if (child.tag === \"option\") {\n const value = \"value\" in child.props ? child.props.value : child.children.join(\"\").trim();\n child.props.selected = value === model[property];\n }\n });\n }\n } else if (vnode.tag === \"textarea\") {\n // Set the textarea's content to the value of the model property\n vnode.children = [model[property]];\n }\n\n // We assume that the prev handler if any will not be changed by the user across patchs\n const prevHandler = vnode.props[event];\n\n // Set the event handler on the element\n // eslint-disable-next-line no-use-before-define\n setAttribute(\n event,\n (e: Event) => {\n handler(e);\n\n // If the previous handler is defined, call it after the model has been updated\n if (prevHandler) {\n prevHandler(e);\n }\n },\n vnode\n );\n },\n\n \"v-create\": (callback, vnode, oldProps) => {\n if (!oldProps) {\n const cleanup = callback(vnode);\n\n if (typeof cleanup === \"function\") {\n onCleanup(cleanup);\n }\n }\n },\n\n \"v-update\": (callback, vnode, oldProps) => {\n if (oldProps) {\n const cleanup = callback(vnode, oldProps);\n\n if (typeof cleanup === \"function\") {\n onCleanup(cleanup);\n }\n }\n },\n\n \"v-cleanup\": (callback, vnode) => {\n onCleanup(() => callback(vnode));\n },\n\n \"v-class\": (value, vnode) => {\n if (typeof value === \"string\") {\n vnode.dom.className = value;\n } else if (Array.isArray(value)) {\n vnode.dom.className = value.join(\" \");\n } else if (typeof value === \"object\") {\n const classList = vnode.dom.classList;\n for (const name in value) {\n const val = typeof value[name] === \"function\" ? (value[name] as Function)() : value[name];\n classList.toggle(name, val);\n }\n }\n },\n\n // Frequent used properties\n class(value, vnode) {\n if (vnode.dom.className !== value) {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"class\", value);\n return;\n }\n vnode.dom.className = value;\n }\n },\n\n className(value, vnode) {\n directives.class(value, vnode, null);\n },\n\n id: (value, vnode) => {\n if (vnode.dom.id !== value) {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"id\", value);\n return;\n }\n vnode.dom.id = value;\n }\n },\n\n style: (value, vnode) => {\n if (typeof value === \"string\") {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"style\", value);\n return;\n }\n vnode.dom.style = value;\n } else if (typeof value === \"object\") {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"style\", \"\");\n } else {\n vnode.dom.style = \"\";\n }\n const domStyle = vnode.dom.style;\n for (const name in value) {\n domStyle[name] = value[name];\n }\n }\n }\n};\n\nexport function directive(name: string, directive: Directive) {\n const directiveName = `v-${name}`;\n directives[directiveName] = directive;\n reservedProps.add(directiveName);\n}\n\nexport function setPropNameReserved(name: string) {\n reservedProps.add(name);\n}\n\nconst eventListenerNames = new Set<string>();\n\nfunction eventListener(e: Event) {\n current.event = e;\n let dom = e.target as DomElement;\n const name = `on${e.type}`;\n\n while (dom) {\n const oldVnode = dom.vnode as VnodeWithDom;\n if (oldVnode && oldVnode.props[name]) {\n oldVnode.props[name](e, oldVnode);\n\n if (!e.defaultPrevented) {\n // eslint-disable-next-line no-use-before-define\n update();\n }\n return;\n }\n dom = dom.parentNode as DomElement;\n }\n\n current.event = null;\n}\n\nfunction sharedSetAttribute(name: string, value: any, newVnode: VnodeWithDom): void | boolean {\n const newVnodeDom = newVnode.dom;\n if (typeof value === \"function\") {\n if (!eventListenerNames.has(name)) {\n // We attach the delegated event listener to the main vnode dom element, which is the root of the component\n (mainVnode as VnodeWithDom).dom.addEventListener(name.slice(2), eventListener);\n eventListenerNames.add(name);\n }\n return;\n }\n\n if (!newVnode.isSVG && name in newVnodeDom) {\n newVnodeDom[name] = value;\n return;\n }\n\n if (value === false) {\n newVnodeDom.removeAttribute(name);\n } else {\n newVnodeDom.setAttribute(name, value);\n }\n}\n\nexport function setAttribute(name: string, value: any, newVnode: VnodeWithDom): void {\n if (!reservedProps.has(name)) {\n newVnode.props[name] = value;\n sharedSetAttribute(name, value, newVnode);\n }\n}\n\nexport function updateAttributes(newVnode: VnodeWithDom, oldProps: Properties | null): void {\n const vnodeDom = newVnode.dom;\n const vnodeProps = newVnode.props;\n vnodeDom.vnode = newVnode;\n\n if (oldProps) {\n for (const name in oldProps) {\n if (name in vnodeProps === false && !eventListenerNames.has(name) && !reservedProps.has(name)) {\n if (!newVnode.isSVG && name in vnodeDom) {\n vnodeDom[name] = null;\n } else {\n vnodeDom.removeAttribute(name);\n }\n }\n }\n }\n\n for (const name in vnodeProps) {\n if (directives[name]) {\n if (directives[name](vnodeProps[name], newVnode, oldProps) === false) {\n break;\n }\n continue;\n }\n\n if (!reservedProps.has(name)) {\n sharedSetAttribute(name, vnodeProps[name], newVnode);\n }\n }\n}\n\nexport function createElement(tag: string, isSVG: boolean): DomElement {\n return isSVG\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", tag)\n : (document.createElement(tag) as DomElement);\n}\n\nfunction flatTree(newVnode: VnodeWithDom) {\n current.vnode = newVnode;\n\n let i = 0;\n const originalChildren = newVnode.children;\n let children = originalChildren;\n\n if (\"v-for\" in newVnode.props) {\n children = [];\n const set = newVnode.props[\"v-for\"];\n const l = set.length;\n const callback = newVnode.children[0];\n\n if (typeof callback !== \"function\") {\n console.warn(\"v-for directive must have a callback function as children\");\n return children;\n }\n\n for (let i = 0; i < l; i++) {\n children[i] = callback(set[i], i);\n }\n }\n\n while (i < children.length) {\n const newChild = children[i];\n\n if (newChild == null) {\n if (children === originalChildren) {\n children = [...originalChildren];\n }\n children.splice(i, 1);\n continue;\n }\n\n if (Array.isArray(newChild)) {\n if (children === originalChildren) {\n children = [...originalChildren];\n }\n children.splice(i, 1, ...newChild);\n continue;\n }\n\n if (newChild instanceof Vnode) {\n newChild.props = newChild.props || {};\n newChild.isSVG = newVnode.isSVG || newChild.tag === \"svg\";\n\n if (typeof newChild.tag !== \"string\") {\n if (children === originalChildren) {\n children = [...originalChildren];\n }\n\n const component = (current.component = newChild.tag);\n\n children[i] = (isPOJOComponent(component) ? component.view : component).bind(component)(\n newChild.props,\n newChild.children\n );\n\n continue;\n }\n }\n\n i++;\n }\n\n return children;\n}\n\nfunction createNewElement(newChild: VnodeWithDom, newVnode: VnodeWithDom, oldChild: DomElement | null) {\n const dom = createElement(newChild.tag, newChild.isSVG as boolean);\n if (oldChild) {\n newVnode.dom.replaceChild(dom, oldChild);\n } else {\n newVnode.dom.appendChild(dom);\n }\n newChild.dom = dom;\n updateAttributes(newChild, null);\n if (\"v-text\" in newChild.props) {\n newChild.dom.textContent = newChild.props[\"v-text\"];\n return;\n }\n\n const children = flatTree(newChild);\n if (children.length === 0) {\n newChild.dom.textContent = \"\";\n return;\n }\n\n for (let i = 0, l = children.length; i < l; i++) {\n if (children[i] instanceof Vnode === false) {\n newChild.dom.appendChild(document.createTextNode(children[i]));\n continue;\n }\n createNewElement(children[i], newChild, null);\n }\n}\n\nfunction patchKeyed(newVnode: VnodeWithDom, children: Children) {\n const oldTree = [...Array.from(newVnode.dom.childNodes)] as unknown as DomElement[];\n const childNodes = newVnode.dom.childNodes;\n const oldKeyedList: Record<string, number> = {};\n\n for (let i = 0, l = oldTree.length; i < l; i++) {\n const oldVnode = oldTree[i].vnode as VnodeWithDom;\n if (!oldVnode || \"key\" in oldVnode.props === false) {\n continue;\n }\n oldKeyedList[oldVnode.props.key as string] = i;\n }\n\n for (let i = 0, l = children.length; i < l; i++) {\n const newChild = children[i];\n const oldChild = oldTree[oldKeyedList[newChild.props.key as string]];\n\n if (!oldChild) {\n createNewElement(newChild, newVnode, childNodes[i] as DomElement | null);\n continue;\n }\n\n newChild.dom = oldChild;\n const currentChild = childNodes[i];\n if (!currentChild) {\n newVnode.dom.appendChild(oldChild);\n } else if (currentChild !== oldChild) {\n newVnode.dom.replaceChild(oldChild, currentChild);\n }\n\n if (\n \"v-keep\" in newChild.props === false ||\n !oldChild.vnode ||\n oldChild.props[\"v-keep\"] !== newChild.props[\"v-keep\"]\n ) {\n updateAttributes(newChild as VnodeWithDom, oldChild.vnode.props);\n\n if (\"v-text\" in newChild.props) {\n // eslint-disable-next-line eqeqeq\n if (oldChild.textContent != newChild.props[\"v-text\"]) {\n oldChild.textContent = newChild.props[\"v-text\"];\n }\n continue;\n }\n // eslint-disable-next-line no-use-before-define\n patch(newChild as VnodeWithDom);\n }\n }\n\n for (let i = children.length, l = childNodes.length; i < l; i++) {\n childNodes[childNodes.length - 1]?.remove();\n }\n}\n\n// eslint-disable-next-line complexity\nfunction patch(newVnode: VnodeWithDom): void {\n const children = flatTree(newVnode);\n\n const dom = newVnode.dom;\n\n if (children.length === 0) {\n if (dom.childNodes.length) {\n dom.textContent = \"\";\n }\n return;\n }\n\n const oldDomChildren = dom.childNodes as unknown as DomElement[];\n const oldChildrenLength = oldDomChildren.length;\n const childrenLength = children.length;\n if (oldChildrenLength === 0) {\n for (let i = 0; i < childrenLength; i++) {\n if (children[i] instanceof Vnode === false) {\n dom.appendChild(document.createTextNode(children[i]));\n continue;\n }\n createNewElement(children[i], newVnode, null);\n }\n return;\n }\n\n let shouldPatchKeyed = true;\n for (let i = 0; i < childrenLength; i++) {\n if (children[i] instanceof Vnode === false || !(\"key\" in children[i].props)) {\n shouldPatchKeyed = false;\n break;\n }\n }\n if (shouldPatchKeyed) {\n patchKeyed(newVnode, children);\n return;\n }\n\n for (let i = 0; i < childrenLength; i++) {\n const newChild = children[i] as VnodeWithDom;\n const isText = newChild instanceof Vnode === false;\n const oldChild = oldDomChildren[i];\n\n if (!oldChild) {\n if (isText) {\n newVnode.dom.appendChild(document.createTextNode(newChild as unknown as string));\n continue;\n }\n\n createNewElement(newChild as VnodeWithDom, newVnode, null);\n continue;\n }\n\n if (isText) {\n if (oldChild.nodeType !== 3) {\n newVnode.dom.replaceChild(document.createTextNode(newChild as unknown as string), oldChild);\n continue;\n }\n\n // eslint-disable-next-line eqeqeq\n if (oldChild.nodeValue != (newChild as unknown as string)) {\n oldChild.nodeValue = newChild as unknown as string;\n }\n continue;\n }\n\n if (\"v-keep\" in newChild.props) {\n if (oldChild.vnode && oldChild.vnode.props[\"v-keep\"] === newChild.props[\"v-keep\"]) {\n continue;\n }\n\n const nextOldChild = oldDomChildren[i + 1];\n if (nextOldChild && nextOldChild.vnode && nextOldChild.vnode.props[\"v-keep\"] === newChild.props[\"v-keep\"]) {\n oldChild.remove();\n continue;\n }\n }\n\n if (newChild.tag !== oldChild.nodeName.toLowerCase()) {\n createNewElement(newChild, newVnode, oldChild);\n continue;\n }\n\n newChild.dom = oldChild;\n updateAttributes(newChild, oldChild.vnode ? oldChild.vnode.props : null);\n if (\"v-text\" in newChild.props) {\n // eslint-disable-next-line eqeqeq\n if (newChild.dom.textContent != newChild.props[\"v-text\"]) {\n newChild.dom.textContent = newChild.props[\"v-text\"];\n }\n continue;\n }\n patch(newChild);\n }\n\n for (let i = childrenLength, l = oldDomChildren.length; i < l; i++) {\n oldDomChildren[i]?.remove();\n }\n}\n\nexport function updateVnode(vnode: VnodeWithDom): string | void {\n callSet(onCleanupSet);\n vnode.props = vnode.props || {};\n patch(vnode);\n callSet(isMounted ? onUpdateSet : onMountSet);\n isMounted = true;\n current.vnode = null;\n current.component = null;\n}\n\nexport function update(): string {\n if (mainVnode) {\n mainVnode.children = [mainComponent];\n updateVnode(mainVnode as VnodeWithDom);\n if (isNodeJs) {\n return mainVnode.dom.innerHTML;\n }\n }\n return \"\";\n}\n\nlet debouncedUpdateTimeout: any;\nconst debouncedUpdateMethod = isNodeJs ? update : () => requestAnimationFrame(update);\n\nexport function debouncedUpdate(timeout = 42) {\n if (current.event) {\n current.event.preventDefault();\n }\n clearTimeout(debouncedUpdateTimeout);\n debouncedUpdateTimeout = setTimeout(debouncedUpdateMethod, timeout);\n}\n\nexport function unmount() {\n if (mainVnode) {\n mainComponent = v(() => null, {}) as VnodeComponentInterface;\n const result = update();\n callSet(onUnmountSet);\n for (const name in eventListenerNames) {\n mainVnode.dom.removeEventListener(name.slice(2).toLowerCase(), eventListener);\n Reflect.deleteProperty(eventListenerNames, name);\n }\n\n mainComponent = null;\n mainVnode = null;\n isMounted = false;\n current.vnode = null;\n current.component = null;\n current.event = null;\n return result;\n }\n\n return \"\";\n}\n\nexport function mount(dom: string | DomElement, component: ValyrianComponent | VnodeComponentInterface | any) {\n const container =\n typeof dom === \"string\" ? (isNodeJs ? createElement(dom, dom === \"svg\") : document.querySelector(dom)) : dom;\n\n if (isComponent(component)) {\n mainComponent = v(component, {}, []) as VnodeComponentInterface;\n } else if (isVnodeComponent(component)) {\n mainComponent = component;\n } else {\n mainComponent = v(() => component, {}, []) as VnodeComponentInterface;\n }\n\n mainVnode = hidrateDomToVnode(container) as VnodeWithDom;\n return update();\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["value", "directive", "i"]
|
|
7
7
|
}
|
package/dist/index.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var e=Boolean("undefined"!=typeof process&&process.versions&&process.versions.node),t=class{constructor(e,t,o,n,s){this.tag=e,this.props=t,this.children=o,this.dom=n,this.isSVG=s}},o=e=>Boolean(e&&"object"==typeof e&&"view"in e),n=e=>Boolean("function"==typeof e||o(e)),s=e=>e instanceof t,r=e=>s(e)&&n(e.tag);function i(e,o,...n){return new t(e,o,n)}function l(e){if(3===e.nodeType)return e.nodeValue;if(1===e.nodeType){const o=e.nodeName.toLowerCase(),n={},s=[];for(let t=0,o=e.childNodes.length;t<o;t++){const o=e.childNodes[t];if(3===o.nodeType)s.push(o.nodeValue);else if(1===o.nodeType){const e=l(o);s.push(e)}}const r=e.attributes;for(let e=0,t=r.length;e<t;e++){const t=r[e];n[t.nodeName]=t.nodeValue}const i=new t(o,n,s);return i.dom=e,e.vnode=i,i.isSVG="svg"===o,i}}function d(e){const t=document.createElement("div");return t.innerHTML=e.trim(),Array.from(t.childNodes).map(l)}i.fragment=(e,...t)=>t;var c=null,p=null,a=!1,u={vnode:null,component:null,event:null},f=new Set(["key","state","v-keep","v-text","v-if","v-for","v-show","v-class","v-html","v-model","v-create","v-update","v-cleanup"]),v=new Set,m=new Set,h=new Set,y=new Set,g=e=>v.add(e),x=e=>{for(const t of e)t();e.clear()},N={"v-if":(e,t)=>{if(!Boolean(e)){const e=t.dom?.parentNode;return e&&e.replaceChild(document.createTextNode(""),t.dom),!1}},"v-show":(e,t)=>{const o=Boolean(e);t.dom.style.display=o?"":"none"},"v-html":(e,t)=>{t.children=d(e)},"v-model":(e,t)=>{if("name"in t.props==!1)return;let o;const n=t.props.name;let s="oninput",r=t=>e[n]=t.target.value;if("input"===t.tag)switch(t.props.type){case"checkbox":Array.isArray(e[n])?(r=t=>{const o=t.target.value,s=e[n].indexOf(o);-1===s?e[n].push(o):e[n].splice(s,1)},o=-1!==e[n].indexOf(t.dom.value)):"value"in t.props?(r=()=>{e[n]===t.props.value?e[n]=null:e[n]=t.props.value},o=e[n]===t.props.value):(r=()=>e[n]=!e[n],o=e[n]),
|
|
1
|
+
(()=>{var e=Boolean("undefined"!=typeof process&&process.versions&&process.versions.node),t=class{constructor(e,t,o,n,s){this.tag=e,this.props=t,this.children=o,this.dom=n,this.isSVG=s}},o=e=>Boolean(e&&"object"==typeof e&&"view"in e),n=e=>Boolean("function"==typeof e||o(e)),s=e=>e instanceof t,r=e=>s(e)&&n(e.tag);function i(e,o,...n){return new t(e,o,n)}function l(e){if(3===e.nodeType)return e.nodeValue;if(1===e.nodeType){const o=e.nodeName.toLowerCase(),n={},s=[];for(let t=0,o=e.childNodes.length;t<o;t++){const o=e.childNodes[t];if(3===o.nodeType)s.push(o.nodeValue);else if(1===o.nodeType){const e=l(o);s.push(e)}}const r=e.attributes;for(let e=0,t=r.length;e<t;e++){const t=r[e];n[t.nodeName]=t.nodeValue}const i=new t(o,n,s);return i.dom=e,e.vnode=i,i.isSVG="svg"===o,i}}function d(e){const t=document.createElement("div");return t.innerHTML=e.trim(),Array.from(t.childNodes).map(l)}i.fragment=(e,...t)=>t;var c=null,p=null,a=!1,u={vnode:null,component:null,event:null},f=new Set(["key","state","v-keep","v-text","v-if","v-for","v-show","v-class","v-html","v-model","v-create","v-update","v-cleanup"]),v=new Set,m=new Set,h=new Set,y=new Set,g=e=>v.add(e),x=e=>{for(const t of e)t();e.clear()},N={"v-if":(e,t)=>{if(!Boolean(e)){const e=t.dom?.parentNode;return e&&e.replaceChild(document.createTextNode(""),t.dom),!1}},"v-show":(e,t)=>{const o=Boolean(e);t.dom.style.display=o?"":"none"},"v-html":(e,t)=>{t.children=d(e)},"v-model":(e,t)=>{if("name"in t.props==!1)return;let o;const n=t.props.name;let s="oninput",r=t=>e[n]=t.target.value;if("input"===t.tag)switch(t.props.type){case"checkbox":Array.isArray(e[n])?(r=t=>{const o=t.target.value,s=e[n].indexOf(o);-1===s?e[n].push(o):e[n].splice(s,1)},o=-1!==e[n].indexOf(t.dom.value)):"value"in t.props?(r=()=>{e[n]===t.props.value?e[n]=null:e[n]=t.props.value},o=e[n]===t.props.value):(r=()=>e[n]=!e[n],o=e[n]),w("checked",o,t);break;case"radio":w("checked",e[n]===t.dom.value,t);break;default:w("value",e[n],t)}else"select"===t.tag?(s="onclick",t.props.multiple?(r=t=>{const o=t.target.value;if(t.ctrlKey){const t=e[n].indexOf(o);-1===t?e[n].push(o):e[n].splice(t,1)}else e[n].splice(0,e[n].length),e[n].push(o)},t.children.forEach(t=>{if("option"===t.tag){const o="value"in t.props?t.props.value:t.children.join("").trim();t.props.selected=-1!==e[n].indexOf(o)}})):t.children.forEach(t=>{if("option"===t.tag){const o="value"in t.props?t.props.value:t.children.join("").trim();t.props.selected=o===e[n]}})):"textarea"===t.tag&&(t.children=[e[n]]);const i=t.props[s];w(s,e=>{r(e),i&&i(e)},t)},"v-create":(e,t,o)=>{if(!o){const o=e(t);"function"==typeof o&&g(o)}},"v-update":(e,t,o)=>{if(o){const n=e(t,o);"function"==typeof n&&g(n)}},"v-cleanup":(e,t)=>{g(()=>e(t))},"v-class":(e,t)=>{if("string"==typeof e)t.dom.className=e;else if(Array.isArray(e))t.dom.className=e.join(" ");else if("object"==typeof e){const o=t.dom.classList;for(const t in e){const n="function"==typeof e[t]?e[t]():e[t];o.toggle(t,n)}}},class(e,t){if(t.dom.className!==e){if(t.isSVG)return void t.dom.setAttribute("class",e);t.dom.className=e}},className(e,t){N.class(e,t,null)},id:(e,t)=>{if(t.dom.id!==e){if(t.isSVG)return void t.dom.setAttribute("id",e);t.dom.id=e}},style:(e,t)=>{if("string"==typeof e){if(t.isSVG)return void t.dom.setAttribute("style",e);t.dom.style=e}else if("object"==typeof e){t.isSVG?t.dom.setAttribute("style",""):t.dom.style="";const o=t.dom.style;for(const t in e)o[t]=e[t]}}};var k,C=new Set;function V(e){u.event=e;let t=e.target;const o=`on${e.type}`;for(;t;){const n=t.vnode;if(n&&n.props[o])return n.props[o](e,n),void(e.defaultPrevented||j());t=t.parentNode}u.event=null}function b(e,t,o){const n=o.dom;"function"!=typeof t?o.isSVG||!(e in n)?!1===t?n.removeAttribute(e):n.setAttribute(e,t):n[e]=t:C.has(e)||(p.dom.addEventListener(e.slice(2),V),C.add(e))}function w(e,t,o){f.has(e)||(o.props[e]=t,b(e,t,o))}function S(e,t){const o=e.dom,n=e.props;if(o.vnode=e,t)for(const s in t)s in n!=!1||C.has(s)||f.has(s)||(!e.isSVG&&s in o?o[s]=null:o.removeAttribute(s));for(const o in n)if(N[o]){if(!1===N[o](n[o],e,t))break}else f.has(o)||b(o,n[o],e)}function A(e,t){return t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e)}function T(e){u.vnode=e;let n=0;const s=e.children;let r=s;if("v-for"in e.props){r=[];const t=e.props["v-for"],o=t.length,n=e.children[0];if("function"!=typeof n)return console.warn("v-for directive must have a callback function as children"),r;for(let e=0;e<o;e++)r[e]=n(t[e],e)}for(;n<r.length;){const i=r[n];if(null!=i)if(Array.isArray(i))r===s&&(r=[...s]),r.splice(n,1,...i);else if(i instanceof t&&(i.props=i.props||{},i.isSVG=e.isSVG||"svg"===i.tag,"string"!=typeof i.tag)){r===s&&(r=[...s]);const e=u.component=i.tag;r[n]=(o(e)?e.view:e).bind(e)(i.props,i.children)}else n++;else r===s&&(r=[...s]),r.splice(n,1)}return r}function G(e,o,n){const s=A(e.tag,e.isSVG);if(n?o.dom.replaceChild(s,n):o.dom.appendChild(s),e.dom=s,S(e,null),"v-text"in e.props)return void(e.dom.textContent=e.props["v-text"]);const r=T(e);if(0!==r.length)for(let o=0,n=r.length;o<n;o++)r[o]instanceof t!=!1?G(r[o],e,null):e.dom.appendChild(document.createTextNode(r[o]));else e.dom.textContent=""}function E(e){const o=T(e),n=e.dom;if(0===o.length)return void(n.childNodes.length&&(n.textContent=""));const s=n.childNodes,r=s.length,i=o.length;if(0===r){for(let s=0;s<i;s++)o[s]instanceof t!=!1?G(o[s],e,null):n.appendChild(document.createTextNode(o[s]));return}let l=!0;for(let e=0;e<i;e++)if(o[e]instanceof t==!1||!("key"in o[e].props)){l=!1;break}if(l)!function(e,t){const o=[...Array.from(e.dom.childNodes)],n=e.dom.childNodes,s={};for(let e=0,t=o.length;e<t;e++){const t=o[e].vnode;t&&"key"in t.props!=0&&(s[t.props.key]=e)}for(let r=0,i=t.length;r<i;r++){const i=t[r],l=o[s[i.props.key]];if(!l){G(i,e,n[r]);continue}i.dom=l;const d=n[r];if(d?d!==l&&e.dom.replaceChild(l,d):e.dom.appendChild(l),"v-keep"in i.props==0||!l.vnode||l.props["v-keep"]!==i.props["v-keep"]){if(S(i,l.vnode.props),"v-text"in i.props){l.textContent!=i.props["v-text"]&&(l.textContent=i.props["v-text"]);continue}E(i)}}for(let e=t.length,o=n.length;e<o;e++)n[n.length-1]?.remove()}(e,o);else{for(let n=0;n<i;n++){const r=o[n],i=r instanceof t==!1,l=s[n];if(l)if(i){if(3!==l.nodeType){e.dom.replaceChild(document.createTextNode(r),l);continue}l.nodeValue!=r&&(l.nodeValue=r)}else{if("v-keep"in r.props){if(l.vnode&&l.vnode.props["v-keep"]===r.props["v-keep"])continue;const e=s[n+1];if(e&&e.vnode&&e.vnode.props["v-keep"]===r.props["v-keep"]){l.remove();continue}}r.tag===l.nodeName.toLowerCase()?(r.dom=l,S(r,l.vnode?l.vnode.props:null),"v-text"in r.props?r.dom.textContent!=r.props["v-text"]&&(r.dom.textContent=r.props["v-text"]):E(r)):G(r,e,l)}else{if(i){e.dom.appendChild(document.createTextNode(r));continue}G(r,e,null)}}for(let e=i,t=s.length;e<t;e++)s[e]?.remove()}}function L(e){x(v),e.props=e.props||{},E(e),x(a?h:m),a=!0,u.vnode=null,u.component=null}function j(){return p&&(p.children=[c],L(p),e)?p.dom.innerHTML:""}var O=e?j:()=>requestAnimationFrame(j);var B={Vnode:t,createElement:A,current:u,debouncedUpdate:function(e=42){u.event&&u.event.preventDefault(),clearTimeout(k),k=setTimeout(O,e)},directive:function(e,t){const o=`v-${e}`;N[o]=t,f.add(o)},directives:N,hidrateDomToVnode:l,isComponent:n,isNodeJs:e,isPOJOComponent:o,isVnode:s,isVnodeComponent:r,mount:function(t,o){const s="string"==typeof t?e?A(t,"svg"===t):document.querySelector(t):t;return c=n(o)?i(o,{},[]):r(o)?o:i(()=>o,{},[]),p=l(s),j()},onCleanup:g,onMount:e=>!a&&m.add(e),onUnmount:e=>!a&&y.add(e),onUpdate:e=>h.add(e),reservedProps:f,setAttribute:w,setPropNameReserved:function(e){f.add(e)},trust:d,unmount:function(){if(p){c=i(()=>null,{});const e=j();x(y);for(const e in C)p.dom.removeEventListener(e.slice(2).toLowerCase(),V),Reflect.deleteProperty(C,e);return c=null,p=null,a=!1,u.vnode=null,u.component=null,u.event=null,e}return""},update:j,updateAttributes:S,updateVnode:L,v:i};"undefined"!=typeof module?module.exports=B:self.Valyrian=B})();//# sourceMappingURL=index.min.js.map
|
package/dist/index.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc05vZGVKcyIsIkJvb2xlYW4iLCJwcm9jZXNzIiwidmVyc2lvbnMiLCJub2RlIiwiVm5vZGUiLCJjb25zdHJ1Y3RvciIsInRhZyIsInByb3BzIiwiY2hpbGRyZW4iLCJkb20iLCJpc1NWRyIsInRoaXMiLCJpc1BPSk9Db21wb25lbnQiLCJjb21wb25lbnQiLCJpc0NvbXBvbmVudCIsImlzVm5vZGUiLCJvYmplY3QiLCJpc1Zub2RlQ29tcG9uZW50IiwidiIsInRhZ09yQ29tcG9uZW50IiwiaGlkcmF0ZURvbVRvVm5vZGUiLCJub2RlVHlwZSIsIm5vZGVWYWx1ZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJpIiwibCIsImNoaWxkTm9kZXMiLCJsZW5ndGgiLCJjaGlsZERvbSIsInB1c2giLCJjaGlsZFZub2RlIiwiYXR0cmlidXRlcyIsImF0dHIiLCJ2bm9kZSIsInRydXN0IiwiaHRtbFN0cmluZyIsImRpdiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInRyaW0iLCJBcnJheSIsImZyb20iLCJtYXAiLCJmcmFnbWVudCIsIl8iLCJtYWluQ29tcG9uZW50IiwibWFpblZub2RlIiwiaXNNb3VudGVkIiwiY3VycmVudCIsImV2ZW50IiwicmVzZXJ2ZWRQcm9wcyIsIlNldCIsIm9uQ2xlYW51cFNldCIsIm9uTW91bnRTZXQiLCJvblVwZGF0ZVNldCIsIm9uVW5tb3VudFNldCIsIm9uQ2xlYW51cCIsImNhbGxiYWNrIiwiYWRkIiwiY2FsbFNldCIsInNldCIsImNsZWFyIiwiZGlyZWN0aXZlcyIsInZhbHVlIiwicGFyZW50Tm9kZSIsInJlcGxhY2VDaGlsZCIsImNyZWF0ZVRleHROb2RlIiwiYm9vbCIsInN0eWxlIiwiZGlzcGxheSIsIm1vZGVsIiwicHJvcGVydHkiLCJuYW1lIiwiaGFuZGxlciIsImUiLCJ0YXJnZXQiLCJ0eXBlIiwiaXNBcnJheSIsInZhbCIsImlkeCIsImluZGV4T2YiLCJzcGxpY2UiLCJzaGFyZWRTZXRBdHRyaWJ1dGUiLCJtdWx0aXBsZSIsImN0cmxLZXkiLCJmb3JFYWNoIiwiY2hpbGQiLCJqb2luIiwic2VsZWN0ZWQiLCJwcmV2SGFuZGxlciIsIm9sZFByb3BzIiwiY2xlYW51cCIsImNsYXNzTmFtZSIsImNsYXNzTGlzdCIsInRvZ2dsZSIsInNldEF0dHJpYnV0ZSIsImNsYXNzIiwiaWQiLCJkb21TdHlsZSIsImRlYm91bmNlZFVwZGF0ZVRpbWVvdXQiLCJldmVudExpc3RlbmVyTmFtZXMiLCJldmVudExpc3RlbmVyIiwib2xkVm5vZGUiLCJkZWZhdWx0UHJldmVudGVkIiwidXBkYXRlIiwibmV3Vm5vZGUiLCJuZXdWbm9kZURvbSIsInJlbW92ZUF0dHJpYnV0ZSIsImhhcyIsImFkZEV2ZW50TGlzdGVuZXIiLCJzbGljZSIsInVwZGF0ZUF0dHJpYnV0ZXMiLCJ2bm9kZURvbSIsInZub2RlUHJvcHMiLCJjcmVhdGVFbGVtZW50TlMiLCJmbGF0VHJlZSIsIm9yaWdpbmFsQ2hpbGRyZW4iLCJjb25zb2xlIiwid2FybiIsIm5ld0NoaWxkIiwidmlldyIsImJpbmQiLCJjcmVhdGVOZXdFbGVtZW50Iiwib2xkQ2hpbGQiLCJhcHBlbmRDaGlsZCIsInRleHRDb250ZW50IiwicGF0Y2giLCJvbGREb21DaGlsZHJlbiIsIm9sZENoaWxkcmVuTGVuZ3RoIiwiY2hpbGRyZW5MZW5ndGgiLCJzaG91bGRQYXRjaEtleWVkIiwib2xkVHJlZSIsIm9sZEtleWVkTGlzdCIsImtleSIsImN1cnJlbnRDaGlsZCIsInJlbW92ZSIsInBhdGNoS2V5ZWQiLCJpc1RleHQiLCJuZXh0T2xkQ2hpbGQiLCJ1cGRhdGVWbm9kZSIsImRlYm91bmNlZFVwZGF0ZU1ldGhvZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInRpbWVvdXQiLCJwcmV2ZW50RGVmYXVsdCIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJkaXJlY3RpdmUiLCJkaXJlY3RpdmVOYW1lIiwiY29udGFpbmVyIiwicXVlcnlTZWxlY3RvciIsInJlc3VsdCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJSZWZsZWN0IiwiZGVsZXRlUHJvcGVydHkiXSwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgdmFyIGRvY3VtZW50OiBEb2N1bWVudDtcbiAgbmFtZXNwYWNlIEpTWCB7XG4gICAgaW50ZXJmYWNlIEludHJpbnNpY0VsZW1lbnRzIGV4dGVuZHMgRGVmYXVsdFJlY29yZCB7fVxuICAgIHR5cGUgRWxlbWVudCA9IFJldHVyblR5cGU8XG4gICAgICB0eXBlb2YgdiB8ICgoLi4uYXJnczogYW55KSA9PiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkIHwgYm9vbGVhbiB8IFByb21pc2U8YW55PilcbiAgICA+O1xuICAgIHR5cGUgQ29tcG9uZW50UmV0dXJuVHlwZSA9IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgfCBib29sZWFuIHwgRWxlbWVudCB8IEVsZW1lbnRbXTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgRGVmYXVsdFJlY29yZCBleHRlbmRzIFJlY29yZDxzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIGFueT4ge31cblxuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0aWVzIGV4dGVuZHMgRGVmYXVsdFJlY29yZCB7XG4gIGtleT86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb21FbGVtZW50IGV4dGVuZHMgRWxlbWVudCwgRGVmYXVsdFJlY29yZCB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudCBleHRlbmRzIERlZmF1bHRSZWNvcmQge1xuICAocHJvcHM6IFByb3BlcnRpZXMsIGNoaWxkcmVuOiBhbnlbXSk6IFZub2RlIHwgYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBPSk9Db21wb25lbnQgZXh0ZW5kcyBEZWZhdWx0UmVjb3JkIHtcbiAgdmlldzogQ29tcG9uZW50O1xufVxuXG5leHBvcnQgdHlwZSBWYWx5cmlhbkNvbXBvbmVudCA9IENvbXBvbmVudCB8IFBPSk9Db21wb25lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVm5vZGVDb21wb25lbnRJbnRlcmZhY2UgZXh0ZW5kcyBWbm9kZSB7XG4gIHRhZzogVmFseXJpYW5Db21wb25lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hpbGRyZW4gZXh0ZW5kcyBBcnJheTxWbm9kZSB8IFZub2RlQ29tcG9uZW50SW50ZXJmYWNlIHwgVmFseXJpYW5Db21wb25lbnQgfCBhbnk+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0aXZlIHtcbiAgKHZhbHVlOiBhbnksIHZub2RlOiBWbm9kZVdpdGhEb20sIG9sZFByb3BzOiBQcm9wZXJ0aWVzIHwgbnVsbCk6IGZhbHNlIHwgdm9pZCB8IGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IGlzTm9kZUpzID0gQm9vbGVhbih0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZSk7XG5cbmV4cG9ydCBjbGFzcyBWbm9kZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IHN0cmluZyB8IENvbXBvbmVudCB8IFBPSk9Db21wb25lbnQsXG4gICAgcHVibGljIHByb3BzOiBudWxsIHwgUHJvcGVydGllcyxcbiAgICBwdWJsaWMgY2hpbGRyZW46IENoaWxkcmVuLFxuICAgIHB1YmxpYyBkb20/OiBEb21FbGVtZW50LFxuICAgIHB1YmxpYyBpc1NWRz86IGJvb2xlYW5cbiAgKSB7fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZub2RlV2l0aERvbSBleHRlbmRzIFZub2RlIHtcbiAgdGFnOiBzdHJpbmc7XG4gIGRvbTogRG9tRWxlbWVudDtcbiAgcHJvcHM6IFByb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBjb25zdCBpc1BPSk9Db21wb25lbnQgPSAoY29tcG9uZW50OiB1bmtub3duKTogY29tcG9uZW50IGlzIFBPSk9Db21wb25lbnQgPT5cbiAgQm9vbGVhbihjb21wb25lbnQgJiYgdHlwZW9mIGNvbXBvbmVudCA9PT0gXCJvYmplY3RcIiAmJiBcInZpZXdcIiBpbiBjb21wb25lbnQpO1xuXG5leHBvcnQgY29uc3QgaXNDb21wb25lbnQgPSAoY29tcG9uZW50OiB1bmtub3duKTogY29tcG9uZW50IGlzIENvbXBvbmVudCA9PlxuICBCb29sZWFuKHR5cGVvZiBjb21wb25lbnQgPT09IFwiZnVuY3Rpb25cIiB8fCBpc1BPSk9Db21wb25lbnQoY29tcG9uZW50KSk7XG5leHBvcnQgY29uc3QgaXNWbm9kZSA9IChvYmplY3Q/OiB1bmtub3duKTogb2JqZWN0IGlzIFZub2RlID0+IG9iamVjdCBpbnN0YW5jZW9mIFZub2RlO1xuXG5leHBvcnQgY29uc3QgaXNWbm9kZUNvbXBvbmVudCA9IChvYmplY3Q/OiB1bmtub3duKTogb2JqZWN0IGlzIFZub2RlQ29tcG9uZW50SW50ZXJmYWNlID0+IHtcbiAgcmV0dXJuIGlzVm5vZGUob2JqZWN0KSAmJiBpc0NvbXBvbmVudChvYmplY3QudGFnKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2KHRhZ09yQ29tcG9uZW50OiBzdHJpbmcgfCBWYWx5cmlhbkNvbXBvbmVudCwgcHJvcHM6IFByb3BlcnRpZXMgfCBudWxsLCAuLi5jaGlsZHJlbjogQ2hpbGRyZW4pIHtcbiAgcmV0dXJuIG5ldyBWbm9kZSh0YWdPckNvbXBvbmVudCwgcHJvcHMsIGNoaWxkcmVuKTtcbn1cblxudi5mcmFnbWVudCA9IChfOiBQcm9wZXJ0aWVzLCAuLi5jaGlsZHJlbjogQ2hpbGRyZW4pID0+IGNoaWxkcmVuO1xuXG5leHBvcnQgZnVuY3Rpb24gaGlkcmF0ZURvbVRvVm5vZGUoZG9tOiBhbnkpOiBWbm9kZVdpdGhEb20gfCB2b2lkIHtcbiAgaWYgKGRvbS5ub2RlVHlwZSA9PT0gMykge1xuICAgIHJldHVybiBkb20ubm9kZVZhbHVlO1xuICB9XG5cbiAgaWYgKGRvbS5ub2RlVHlwZSA9PT0gMSkge1xuICAgIGNvbnN0IHRhZyA9IGRvbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHByb3BzID0ge30gYXMgUHJvcGVydGllcztcbiAgICBjb25zdCBjaGlsZHJlbiA9IFtdIGFzIENoaWxkcmVuO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBkb20uY2hpbGROb2Rlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoaWxkRG9tID0gZG9tLmNoaWxkTm9kZXNbaV07XG4gICAgICBpZiAoY2hpbGREb20ubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZERvbS5ub2RlVmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChjaGlsZERvbS5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICBjb25zdCBjaGlsZFZub2RlID0gaGlkcmF0ZURvbVRvVm5vZGUoY2hpbGREb20pO1xuICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkVm5vZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBkb20uYXR0cmlidXRlcztcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGF0dHJpYnV0ZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCBhdHRyID0gYXR0cmlidXRlc1tpXTtcbiAgICAgIHByb3BzW2F0dHIubm9kZU5hbWVdID0gYXR0ci5ub2RlVmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3Qgdm5vZGUgPSBuZXcgVm5vZGUodGFnLCBwcm9wcywgY2hpbGRyZW4pO1xuICAgIHZub2RlLmRvbSA9IGRvbTtcbiAgICBkb20udm5vZGUgPSB2bm9kZTtcbiAgICB2bm9kZS5pc1NWRyA9IHRhZyA9PT0gXCJzdmdcIjtcbiAgICByZXR1cm4gdm5vZGUgYXMgVm5vZGVXaXRoRG9tO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cnVzdChodG1sU3RyaW5nOiBzdHJpbmcpIHtcbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgZGl2LmlubmVySFRNTCA9IGh0bWxTdHJpbmcudHJpbSgpO1xuICByZXR1cm4gQXJyYXkuZnJvbShkaXYuY2hpbGROb2RlcykubWFwKGhpZHJhdGVEb21Ub1Zub2RlKTtcbn1cblxubGV0IG1haW5Db21wb25lbnQ6IFZub2RlQ29tcG9uZW50SW50ZXJmYWNlIHwgbnVsbCA9IG51bGw7XG5sZXQgbWFpblZub2RlOiBWbm9kZVdpdGhEb20gfCBudWxsID0gbnVsbDtcbmxldCBpc01vdW50ZWQgPSBmYWxzZTtcblxuZXhwb3J0IGNvbnN0IGN1cnJlbnQgPSB7XG4gIHZub2RlOiBudWxsIGFzIFZub2RlIHwgbnVsbCxcbiAgY29tcG9uZW50OiBudWxsIGFzIFZhbHlyaWFuQ29tcG9uZW50IHwgbnVsbCxcbiAgZXZlbnQ6IG51bGwgYXMgRXZlbnQgfCBudWxsXG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXJ2ZWRQcm9wcyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gIFwia2V5XCIsXG4gIFwic3RhdGVcIixcbiAgXCJ2LWtlZXBcIixcbiAgXCJ2LXRleHRcIixcbiAgXCJ2LWlmXCIsXG4gIFwidi1mb3JcIixcbiAgXCJ2LXNob3dcIixcbiAgXCJ2LWNsYXNzXCIsXG4gIFwidi1odG1sXCIsXG4gIFwidi1tb2RlbFwiLFxuICBcInYtY3JlYXRlXCIsXG4gIFwidi11cGRhdGVcIixcbiAgXCJ2LWNsZWFudXBcIlxuXSk7XG5cbmNvbnN0IG9uQ2xlYW51cFNldCA9IG5ldyBTZXQ8RnVuY3Rpb24+KCk7XG5jb25zdCBvbk1vdW50U2V0ID0gbmV3IFNldDxGdW5jdGlvbj4oKTtcbmNvbnN0IG9uVXBkYXRlU2V0ID0gbmV3IFNldDxGdW5jdGlvbj4oKTtcbmNvbnN0IG9uVW5tb3VudFNldCA9IG5ldyBTZXQ8RnVuY3Rpb24+KCk7XG5leHBvcnQgY29uc3Qgb25Nb3VudCA9IChjYWxsYmFjazogRnVuY3Rpb24pID0+ICFpc01vdW50ZWQgJiYgb25Nb3VudFNldC5hZGQoY2FsbGJhY2spO1xuZXhwb3J0IGNvbnN0IG9uVXBkYXRlID0gKGNhbGxiYWNrOiBGdW5jdGlvbikgPT4gb25VcGRhdGVTZXQuYWRkKGNhbGxiYWNrKTtcbmV4cG9ydCBjb25zdCBvbkNsZWFudXAgPSAoY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiBvbkNsZWFudXBTZXQuYWRkKGNhbGxiYWNrKTtcbmV4cG9ydCBjb25zdCBvblVubW91bnQgPSAoY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiAhaXNNb3VudGVkICYmIG9uVW5tb3VudFNldC5hZGQoY2FsbGJhY2spO1xuY29uc3QgY2FsbFNldCA9IChzZXQ6IFNldDxGdW5jdGlvbj4pID0+IHtcbiAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBzZXQpIHtcbiAgICBjYWxsYmFjaygpO1xuICB9XG4gIHNldC5jbGVhcigpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRpcmVjdGl2ZXM6IFJlY29yZDxzdHJpbmcsIERpcmVjdGl2ZT4gPSB7XG4gIFwidi1pZlwiOiAodmFsdWUsIHZub2RlKSA9PiB7XG4gICAgaWYgKCFCb29sZWFuKHZhbHVlKSkge1xuICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHZub2RlLmRvbT8ucGFyZW50Tm9kZTtcbiAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpLCB2bm9kZS5kb20pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LFxuXG4gIFwidi1zaG93XCI6ICh2YWx1ZSwgdm5vZGUpID0+IHtcbiAgICBjb25zdCBib29sID0gQm9vbGVhbih2YWx1ZSk7XG4gICAgKFxuICAgICAgdm5vZGUuZG9tIGFzIHVua25vd24gYXMge1xuICAgICAgICBzdHlsZTogeyBkaXNwbGF5OiBzdHJpbmcgfTtcbiAgICAgIH1cbiAgICApLnN0eWxlLmRpc3BsYXkgPSBib29sID8gXCJcIiA6IFwibm9uZVwiO1xuICB9LFxuXG4gIFwidi1odG1sXCI6ICh2YWx1ZSwgdm5vZGUpID0+IHtcbiAgICB2bm9kZS5jaGlsZHJlbiA9IHRydXN0KHZhbHVlIGFzIHN0cmluZyk7XG4gIH0sXG5cbiAgLy8gVGhlIFwidi1tb2RlbFwiIGRpcmVjdGl2ZSBiaW5kcyB0aGUgdmFsdWUgb2YgYW4gaW5wdXQgZWxlbWVudCB0byBhIG1vZGVsIHByb3BlcnR5XG4gIFwidi1tb2RlbFwiOiAobW9kZWwsIHZub2RlKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGlmIChcIm5hbWVcIiBpbiB2bm9kZS5wcm9wcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWU7XG4gICAgY29uc3QgcHJvcGVydHkgPSB2bm9kZS5wcm9wcy5uYW1lO1xuICAgIGxldCBldmVudCA9IFwib25pbnB1dFwiO1xuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBtb2RlbCBwcm9wZXJ0eSB3aGVuIHRoZSBpbnB1dCBlbGVtZW50J3MgdmFsdWUgY2hhbmdlc1xuICAgIGxldCBoYW5kbGVyID0gKGU6IEV2ZW50KSA9PiAobW9kZWxbcHJvcGVydHldID0gKGUudGFyZ2V0IGFzIERvbUVsZW1lbnQgJiBSZWNvcmQ8c3RyaW5nLCBhbnk+KS52YWx1ZSk7XG4gICAgaWYgKHZub2RlLnRhZyA9PT0gXCJpbnB1dFwiKSB7XG4gICAgICAvLyBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgaW5wdXQgZWxlbWVudCwgdXNlIGEgZGlmZmVyZW50IGhhbmRsZXIgZnVuY3Rpb25cbiAgICAgIHN3aXRjaCAodm5vZGUucHJvcHMudHlwZSkge1xuICAgICAgICBjYXNlIFwiY2hlY2tib3hcIjoge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1vZGVsW3Byb3BlcnR5XSkpIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBtb2RlbCBwcm9wZXJ0eSBpcyBhbiBhcnJheSwgYWRkIG9yIHJlbW92ZSB0aGUgdmFsdWUgZnJvbSB0aGUgYXJyYXkgd2hlbiB0aGUgY2hlY2tib3ggaXMgY2hlY2tlZCBvciB1bmNoZWNrZWRcbiAgICAgICAgICAgIGhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsID0gKGUudGFyZ2V0IGFzIERvbUVsZW1lbnQgJiBSZWNvcmQ8c3RyaW5nLCBhbnk+KS52YWx1ZTtcbiAgICAgICAgICAgICAgY29uc3QgaWR4ID0gbW9kZWxbcHJvcGVydHldLmluZGV4T2YodmFsKTtcbiAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBtb2RlbFtwcm9wZXJ0eV0ucHVzaCh2YWwpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBpbiB0aGUgYXJyYXksIHNldCB0aGUgY2hlY2tib3ggdG8gYmUgY2hlY2tlZFxuICAgICAgICAgICAgdmFsdWUgPSBtb2RlbFtwcm9wZXJ0eV0uaW5kZXhPZih2bm9kZS5kb20udmFsdWUpICE9PSAtMTtcbiAgICAgICAgICB9IGVsc2UgaWYgKFwidmFsdWVcIiBpbiB2bm9kZS5wcm9wcykge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGlucHV0IGVsZW1lbnQgaGFzIGEgXCJ2YWx1ZVwiIGF0dHJpYnV0ZSwgdXNlIGl0IHRvIGRldGVybWluZSB0aGUgY2hlY2tlZCBzdGF0ZVxuICAgICAgICAgICAgaGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG1vZGVsW3Byb3BlcnR5XSA9PT0gdm5vZGUucHJvcHMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBtb2RlbFtwcm9wZXJ0eV0gPSBudWxsO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XSA9IHZub2RlLnByb3BzLnZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFsdWUgPSBtb2RlbFtwcm9wZXJ0eV0gPT09IHZub2RlLnByb3BzLnZhbHVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBcInZhbHVlXCIgYXR0cmlidXRlLCB1c2UgYSBib29sZWFuIHZhbHVlIGZvciB0aGUgbW9kZWwgcHJvcGVydHlcbiAgICAgICAgICAgIGhhbmRsZXIgPSAoKSA9PiAobW9kZWxbcHJvcGVydHldID0gIW1vZGVsW3Byb3BlcnR5XSk7XG4gICAgICAgICAgICB2YWx1ZSA9IG1vZGVsW3Byb3BlcnR5XTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2V0IHRoZSBcImNoZWNrZWRcIiBhdHRyaWJ1dGUgb24gdGhlIGlucHV0IGVsZW1lbnRcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICBzaGFyZWRTZXRBdHRyaWJ1dGUoXCJjaGVja2VkXCIsIHZhbHVlLCB2bm9kZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInJhZGlvXCI6IHtcbiAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBhIHJhZGlvIGJ1dHRvbiwgc2V0IHRoZSBcImNoZWNrZWRcIiBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHZhbHVlIG9mIHRoZSBtb2RlbCBwcm9wZXJ0eVxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICAgIHNoYXJlZFNldEF0dHJpYnV0ZShcImNoZWNrZWRcIiwgbW9kZWxbcHJvcGVydHldID09PSB2bm9kZS5kb20udmFsdWUsIHZub2RlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgLy8gRm9yIGFsbCBvdGhlciBpbnB1dCB0eXBlcywgc2V0IHRoZSBcInZhbHVlXCIgYXR0cmlidXRlIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUgbW9kZWwgcHJvcGVydHlcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICBzaGFyZWRTZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLCBtb2RlbFtwcm9wZXJ0eV0sIHZub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodm5vZGUudGFnID09PSBcInNlbGVjdFwiKSB7XG4gICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBhIHNlbGVjdCBlbGVtZW50LCB1c2UgdGhlIFwiY2xpY2tcIiBldmVudCBieSBkZWZhdWx0XG4gICAgICBldmVudCA9IFwib25jbGlja1wiO1xuICAgICAgaWYgKHZub2RlLnByb3BzLm11bHRpcGxlKSB7XG4gICAgICAgIC8vIElmIHRoZSBzZWxlY3QgZWxlbWVudCBhbGxvd3MgbXVsdGlwbGUgc2VsZWN0aW9ucywgdXBkYXRlIHRoZSBtb2RlbCBwcm9wZXJ0eSB3aXRoIGFuIGFycmF5IG9mIHNlbGVjdGVkIHZhbHVlc1xuICAgICAgICBoYW5kbGVyID0gKGU6IEV2ZW50ICYgUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbCA9IChlLnRhcmdldCBhcyBEb21FbGVtZW50ICYgUmVjb3JkPHN0cmluZywgYW55PikudmFsdWU7XG4gICAgICAgICAgaWYgKGUuY3RybEtleSkge1xuICAgICAgICAgICAgLy8gSWYgdGhlIEN0cmwga2V5IGlzIHByZXNzZWQsIGFkZCBvciByZW1vdmUgdGhlIHZhbHVlIGZyb20gdGhlIGFycmF5XG4gICAgICAgICAgICBjb25zdCBpZHggPSBtb2RlbFtwcm9wZXJ0eV0uaW5kZXhPZih2YWwpO1xuICAgICAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgbW9kZWxbcHJvcGVydHldLnB1c2godmFsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlIEN0cmwga2V5IGlzIG5vdCBwcmVzc2VkLCBzZXQgdGhlIG1vZGVsIHByb3BlcnR5IHRvIGFuIGFycmF5IHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlXG4gICAgICAgICAgICBtb2RlbFtwcm9wZXJ0eV0uc3BsaWNlKDAsIG1vZGVsW3Byb3BlcnR5XS5sZW5ndGgpO1xuICAgICAgICAgICAgbW9kZWxbcHJvcGVydHldLnB1c2godmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8vIFNldCB0aGUgXCJzZWxlY3RlZFwiIGF0dHJpYnV0ZSBvbiB0aGUgb3B0aW9ucyBiYXNlZCBvbiB3aGV0aGVyIHRoZXkgYXJlIGluIHRoZSBtb2RlbCBwcm9wZXJ0eSBhcnJheVxuICAgICAgICB2bm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogVm5vZGVXaXRoRG9tKSA9PiB7XG4gICAgICAgICAgaWYgKGNoaWxkLnRhZyA9PT0gXCJvcHRpb25cIikge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBcInZhbHVlXCIgaW4gY2hpbGQucHJvcHMgPyBjaGlsZC5wcm9wcy52YWx1ZSA6IGNoaWxkLmNoaWxkcmVuLmpvaW4oXCJcIikudHJpbSgpO1xuICAgICAgICAgICAgY2hpbGQucHJvcHMuc2VsZWN0ZWQgPSBtb2RlbFtwcm9wZXJ0eV0uaW5kZXhPZih2YWx1ZSkgIT09IC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGUgc2VsZWN0IGVsZW1lbnQgZG9lcyBub3QgYWxsb3cgbXVsdGlwbGUgc2VsZWN0aW9ucywgc2V0IHRoZSBcInNlbGVjdGVkXCIgYXR0cmlidXRlIG9uIHRoZSBvcHRpb25zIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUgbW9kZWwgcHJvcGVydHlcbiAgICAgICAgdm5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IFZub2RlV2l0aERvbSkgPT4ge1xuICAgICAgICAgIGlmIChjaGlsZC50YWcgPT09IFwib3B0aW9uXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gXCJ2YWx1ZVwiIGluIGNoaWxkLnByb3BzID8gY2hpbGQucHJvcHMudmFsdWUgOiBjaGlsZC5jaGlsZHJlbi5qb2luKFwiXCIpLnRyaW0oKTtcbiAgICAgICAgICAgIGNoaWxkLnByb3BzLnNlbGVjdGVkID0gdmFsdWUgPT09IG1vZGVsW3Byb3BlcnR5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodm5vZGUudGFnID09PSBcInRleHRhcmVhXCIpIHtcbiAgICAgIC8vIFNldCB0aGUgdGV4dGFyZWEncyBjb250ZW50IHRvIHRoZSB2YWx1ZSBvZiB0aGUgbW9kZWwgcHJvcGVydHlcbiAgICAgIHZub2RlLmNoaWxkcmVuID0gW21vZGVsW3Byb3BlcnR5XV07XG4gICAgfVxuXG4gICAgLy8gV2UgYXNzdW1lIHRoYXQgdGhlIHByZXYgaGFuZGxlciBpZiBhbnkgd2lsbCBub3QgYmUgY2hhbmdlZCBieSB0aGUgdXNlciBhY3Jvc3MgcGF0Y2hzXG4gICAgY29uc3QgcHJldkhhbmRsZXIgPSB2bm9kZS5wcm9wc1tldmVudF07XG5cbiAgICAvLyBTZXQgdGhlIGV2ZW50IGhhbmRsZXIgb24gdGhlIGVsZW1lbnRcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBzaGFyZWRTZXRBdHRyaWJ1dGUoXG4gICAgICBldmVudCxcbiAgICAgIChlOiBFdmVudCkgPT4ge1xuICAgICAgICBoYW5kbGVyKGUpO1xuXG4gICAgICAgIC8vIElmIHRoZSBwcmV2aW91cyBoYW5kbGVyIGlzIGRlZmluZWQsIGNhbGwgaXQgYWZ0ZXIgdGhlIG1vZGVsIGhhcyBiZWVuIHVwZGF0ZWRcbiAgICAgICAgaWYgKHByZXZIYW5kbGVyKSB7XG4gICAgICAgICAgcHJldkhhbmRsZXIoZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB2bm9kZVxuICAgICk7XG4gIH0sXG5cbiAgXCJ2LWNyZWF0ZVwiOiAoY2FsbGJhY2ssIHZub2RlLCBvbGRQcm9wcykgPT4ge1xuICAgIGlmICghb2xkUHJvcHMpIHtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSBjYWxsYmFjayh2bm9kZSk7XG5cbiAgICAgIGlmICh0eXBlb2YgY2xlYW51cCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9uQ2xlYW51cChjbGVhbnVwKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgXCJ2LXVwZGF0ZVwiOiAoY2FsbGJhY2ssIHZub2RlLCBvbGRQcm9wcykgPT4ge1xuICAgIGlmIChvbGRQcm9wcykge1xuICAgICAgY29uc3QgY2xlYW51cCA9IGNhbGxiYWNrKHZub2RlLCBvbGRQcm9wcyk7XG5cbiAgICAgIGlmICh0eXBlb2YgY2xlYW51cCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9uQ2xlYW51cChjbGVhbnVwKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgXCJ2LWNsZWFudXBcIjogKGNhbGxiYWNrLCB2bm9kZSkgPT4ge1xuICAgIG9uQ2xlYW51cCgoKSA9PiBjYWxsYmFjayh2bm9kZSkpO1xuICB9LFxuXG4gIFwidi1jbGFzc1wiOiAodmFsdWUsIHZub2RlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdm5vZGUuZG9tLmNsYXNzTmFtZSA9IHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZub2RlLmRvbS5jbGFzc05hbWUgPSB2YWx1ZS5qb2luKFwiIFwiKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgY29uc3QgY2xhc3NMaXN0ID0gdm5vZGUuZG9tLmNsYXNzTGlzdDtcbiAgICAgIGZvciAoY29uc3QgbmFtZSBpbiB2YWx1ZSkge1xuICAgICAgICBjb25zdCB2YWwgPSB0eXBlb2YgdmFsdWVbbmFtZV0gPT09IFwiZnVuY3Rpb25cIiA/ICh2YWx1ZVtuYW1lXSBhcyBGdW5jdGlvbikoKSA6IHZhbHVlW25hbWVdO1xuICAgICAgICBjbGFzc0xpc3QudG9nZ2xlKG5hbWUsIHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8vIEZyZXF1ZW50IHVzZWQgcHJvcGVydGllc1xuICBjbGFzcyh2YWx1ZSwgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUuZG9tLmNsYXNzTmFtZSAhPT0gdmFsdWUpIHtcbiAgICAgIGlmICh2bm9kZS5pc1NWRykge1xuICAgICAgICB2bm9kZS5kb20uc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgdmFsdWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2bm9kZS5kb20uY2xhc3NOYW1lID0gdmFsdWU7XG4gICAgfVxuICB9LFxuXG4gIGNsYXNzTmFtZSh2YWx1ZSwgdm5vZGUpIHtcbiAgICBkaXJlY3RpdmVzLmNsYXNzKHZhbHVlLCB2bm9kZSwgbnVsbCk7XG4gIH0sXG5cbiAgaWQ6ICh2YWx1ZSwgdm5vZGUpID0+IHtcbiAgICBpZiAodm5vZGUuZG9tLmlkICE9PSB2YWx1ZSkge1xuICAgICAgaWYgKHZub2RlLmlzU1ZHKSB7XG4gICAgICAgIHZub2RlLmRvbS5zZXRBdHRyaWJ1dGUoXCJpZFwiLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZub2RlLmRvbS5pZCA9IHZhbHVlO1xuICAgIH1cbiAgfSxcblxuICBzdHlsZTogKHZhbHVlLCB2bm9kZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGlmICh2bm9kZS5pc1NWRykge1xuICAgICAgICB2bm9kZS5kb20uc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgdmFsdWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2bm9kZS5kb20uc3R5bGUgPSB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgaWYgKHZub2RlLmlzU1ZHKSB7XG4gICAgICAgIHZub2RlLmRvbS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLCBcIlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZub2RlLmRvbS5zdHlsZSA9IFwiXCI7XG4gICAgICB9XG4gICAgICBjb25zdCBkb21TdHlsZSA9IHZub2RlLmRvbS5zdHlsZTtcbiAgICAgIGZvciAoY29uc3QgbmFtZSBpbiB2YWx1ZSkge1xuICAgICAgICBkb21TdHlsZVtuYW1lXSA9IHZhbHVlW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpcmVjdGl2ZShuYW1lOiBzdHJpbmcsIGRpcmVjdGl2ZTogRGlyZWN0aXZlKSB7XG4gIGNvbnN0IGRpcmVjdGl2ZU5hbWUgPSBgdi0ke25hbWV9YDtcbiAgZGlyZWN0aXZlc1tkaXJlY3RpdmVOYW1lXSA9IGRpcmVjdGl2ZTtcbiAgcmVzZXJ2ZWRQcm9wcy5hZGQoZGlyZWN0aXZlTmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQcm9wTmFtZVJlc2VydmVkKG5hbWU6IHN0cmluZykge1xuICByZXNlcnZlZFByb3BzLmFkZChuYW1lKTtcbn1cblxuY29uc3QgZXZlbnRMaXN0ZW5lck5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbmZ1bmN0aW9uIGV2ZW50TGlzdGVuZXIoZTogRXZlbnQpIHtcbiAgY3VycmVudC5ldmVudCA9IGU7XG4gIGxldCBkb20gPSBlLnRhcmdldCBhcyBEb21FbGVtZW50O1xuICBjb25zdCBuYW1lID0gYG9uJHtlLnR5cGV9YDtcblxuICB3aGlsZSAoZG9tKSB7XG4gICAgY29uc3Qgb2xkVm5vZGUgPSBkb20udm5vZGUgYXMgVm5vZGVXaXRoRG9tO1xuICAgIGlmIChvbGRWbm9kZSAmJiBvbGRWbm9kZS5wcm9wc1tuYW1lXSkge1xuICAgICAgb2xkVm5vZGUucHJvcHNbbmFtZV0oZSwgb2xkVm5vZGUpO1xuXG4gICAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgdXBkYXRlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRvbSA9IGRvbS5wYXJlbnROb2RlIGFzIERvbUVsZW1lbnQ7XG4gIH1cblxuICBjdXJyZW50LmV2ZW50ID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gc2hhcmVkU2V0QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgbmV3Vm5vZGU6IFZub2RlV2l0aERvbSk6IHZvaWQgfCBib29sZWFuIHtcbiAgY29uc3QgbmV3Vm5vZGVEb20gPSBuZXdWbm9kZS5kb207XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGlmICghZXZlbnRMaXN0ZW5lck5hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgLy8gV2UgYXR0YWNoIHRoZSBkZWxlZ2F0ZWQgZXZlbnQgbGlzdGVuZXIgdG8gdGhlIG1haW4gdm5vZGUgZG9tIGVsZW1lbnQsIHdoaWNoIGlzIHRoZSByb290IG9mIHRoZSBjb21wb25lbnRcbiAgICAgIChtYWluVm5vZGUgYXMgVm5vZGVXaXRoRG9tKS5kb20uYWRkRXZlbnRMaXN0ZW5lcihuYW1lLnNsaWNlKDIpLCBldmVudExpc3RlbmVyKTtcbiAgICAgIGV2ZW50TGlzdGVuZXJOYW1lcy5hZGQobmFtZSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghbmV3Vm5vZGUuaXNTVkcgJiYgbmFtZSBpbiBuZXdWbm9kZURvbSkge1xuICAgIG5ld1Zub2RlRG9tW25hbWVdID0gdmFsdWU7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgIG5ld1Zub2RlRG9tLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICBuZXdWbm9kZURvbS5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBuZXdWbm9kZTogVm5vZGVXaXRoRG9tKTogdm9pZCB7XG4gIGlmICghcmVzZXJ2ZWRQcm9wcy5oYXMobmFtZSkpIHtcbiAgICBuZXdWbm9kZS5wcm9wc1tuYW1lXSA9IHZhbHVlO1xuICAgIHNoYXJlZFNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgbmV3Vm5vZGUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVBdHRyaWJ1dGVzKG5ld1Zub2RlOiBWbm9kZVdpdGhEb20sIG9sZFByb3BzOiBQcm9wZXJ0aWVzIHwgbnVsbCk6IHZvaWQge1xuICBjb25zdCB2bm9kZURvbSA9IG5ld1Zub2RlLmRvbTtcbiAgY29uc3Qgdm5vZGVQcm9wcyA9IG5ld1Zub2RlLnByb3BzO1xuICB2bm9kZURvbS52bm9kZSA9IG5ld1Zub2RlO1xuXG4gIGlmIChvbGRQcm9wcykge1xuICAgIGZvciAoY29uc3QgbmFtZSBpbiBvbGRQcm9wcykge1xuICAgICAgaWYgKG5hbWUgaW4gdm5vZGVQcm9wcyA9PT0gZmFsc2UgJiYgIWV2ZW50TGlzdGVuZXJOYW1lcy5oYXMobmFtZSkgJiYgIXJlc2VydmVkUHJvcHMuaGFzKG5hbWUpKSB7XG4gICAgICAgIGlmICghbmV3Vm5vZGUuaXNTVkcgJiYgbmFtZSBpbiB2bm9kZURvbSkge1xuICAgICAgICAgIHZub2RlRG9tW25hbWVdID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2bm9kZURvbS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IG5hbWUgaW4gdm5vZGVQcm9wcykge1xuICAgIGlmIChkaXJlY3RpdmVzW25hbWVdKSB7XG4gICAgICBpZiAoZGlyZWN0aXZlc1tuYW1lXSh2bm9kZVByb3BzW25hbWVdLCBuZXdWbm9kZSwgb2xkUHJvcHMpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghcmVzZXJ2ZWRQcm9wcy5oYXMobmFtZSkpIHtcbiAgICAgIHNoYXJlZFNldEF0dHJpYnV0ZShuYW1lLCB2bm9kZVByb3BzW25hbWVdLCBuZXdWbm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZzogc3RyaW5nLCBpc1NWRzogYm9vbGVhbik6IERvbUVsZW1lbnQge1xuICByZXR1cm4gaXNTVkdcbiAgICA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIHRhZylcbiAgICA6IChkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZykgYXMgRG9tRWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIGZsYXRUcmVlKG5ld1Zub2RlOiBWbm9kZVdpdGhEb20pIHtcbiAgY3VycmVudC52bm9kZSA9IG5ld1Zub2RlO1xuXG4gIGxldCBpID0gMDtcbiAgY29uc3Qgb3JpZ2luYWxDaGlsZHJlbiA9IG5ld1Zub2RlLmNoaWxkcmVuO1xuICBsZXQgY2hpbGRyZW4gPSBvcmlnaW5hbENoaWxkcmVuO1xuXG4gIGlmIChcInYtZm9yXCIgaW4gbmV3Vm5vZGUucHJvcHMpIHtcbiAgICBjaGlsZHJlbiA9IFtdO1xuICAgIGNvbnN0IHNldCA9IG5ld1Zub2RlLnByb3BzW1widi1mb3JcIl07XG4gICAgY29uc3QgbCA9IHNldC5sZW5ndGg7XG4gICAgY29uc3QgY2FsbGJhY2sgPSBuZXdWbm9kZS5jaGlsZHJlblswXTtcblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY29uc29sZS53YXJuKFwidi1mb3IgZGlyZWN0aXZlIG11c3QgaGF2ZSBhIGNhbGxiYWNrIGZ1bmN0aW9uIGFzIGNoaWxkcmVuXCIpO1xuICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjaGlsZHJlbltpXSA9IGNhbGxiYWNrKHNldFtpXSwgaSk7XG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKGkgPCBjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICBjb25zdCBuZXdDaGlsZCA9IGNoaWxkcmVuW2ldO1xuXG4gICAgaWYgKG5ld0NoaWxkID09IG51bGwpIHtcbiAgICAgIGlmIChjaGlsZHJlbiA9PT0gb3JpZ2luYWxDaGlsZHJlbikge1xuICAgICAgICBjaGlsZHJlbiA9IFsuLi5vcmlnaW5hbENoaWxkcmVuXTtcbiAgICAgIH1cbiAgICAgIGNoaWxkcmVuLnNwbGljZShpLCAxKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KG5ld0NoaWxkKSkge1xuICAgICAgaWYgKGNoaWxkcmVuID09PSBvcmlnaW5hbENoaWxkcmVuKSB7XG4gICAgICAgIGNoaWxkcmVuID0gWy4uLm9yaWdpbmFsQ2hpbGRyZW5dO1xuICAgICAgfVxuICAgICAgY2hpbGRyZW4uc3BsaWNlKGksIDEsIC4uLm5ld0NoaWxkKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChuZXdDaGlsZCBpbnN0YW5jZW9mIFZub2RlKSB7XG4gICAgICBuZXdDaGlsZC5wcm9wcyA9IG5ld0NoaWxkLnByb3BzIHx8IHt9O1xuICAgICAgbmV3Q2hpbGQuaXNTVkcgPSBuZXdWbm9kZS5pc1NWRyB8fCBuZXdDaGlsZC50YWcgPT09IFwic3ZnXCI7XG5cbiAgICAgIGlmICh0eXBlb2YgbmV3Q2hpbGQudGFnICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmIChjaGlsZHJlbiA9PT0gb3JpZ2luYWxDaGlsZHJlbikge1xuICAgICAgICAgIGNoaWxkcmVuID0gWy4uLm9yaWdpbmFsQ2hpbGRyZW5dO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gKGN1cnJlbnQuY29tcG9uZW50ID0gbmV3Q2hpbGQudGFnKTtcblxuICAgICAgICBjaGlsZHJlbltpXSA9IChpc1BPSk9Db21wb25lbnQoY29tcG9uZW50KSA/IGNvbXBvbmVudC52aWV3IDogY29tcG9uZW50KS5iaW5kKGNvbXBvbmVudCkoXG4gICAgICAgICAgbmV3Q2hpbGQucHJvcHMsXG4gICAgICAgICAgbmV3Q2hpbGQuY2hpbGRyZW5cbiAgICAgICAgKTtcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpKys7XG4gIH1cblxuICByZXR1cm4gY2hpbGRyZW47XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU5ld0VsZW1lbnQobmV3Q2hpbGQ6IFZub2RlV2l0aERvbSwgbmV3Vm5vZGU6IFZub2RlV2l0aERvbSwgb2xkQ2hpbGQ6IERvbUVsZW1lbnQgfCBudWxsKSB7XG4gIGNvbnN0IGRvbSA9IGNyZWF0ZUVsZW1lbnQobmV3Q2hpbGQudGFnLCBuZXdDaGlsZC5pc1NWRyBhcyBib29sZWFuKTtcbiAgaWYgKG9sZENoaWxkKSB7XG4gICAgbmV3Vm5vZGUuZG9tLnJlcGxhY2VDaGlsZChkb20sIG9sZENoaWxkKTtcbiAgfSBlbHNlIHtcbiAgICBuZXdWbm9kZS5kb20uYXBwZW5kQ2hpbGQoZG9tKTtcbiAgfVxuICBuZXdDaGlsZC5kb20gPSBkb207XG4gIHVwZGF0ZUF0dHJpYnV0ZXMobmV3Q2hpbGQsIG51bGwpO1xuICBpZiAoXCJ2LXRleHRcIiBpbiBuZXdDaGlsZC5wcm9wcykge1xuICAgIG5ld0NoaWxkLmRvbS50ZXh0Q29udGVudCA9IG5ld0NoaWxkLnByb3BzW1widi10ZXh0XCJdO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGNoaWxkcmVuID0gZmxhdFRyZWUobmV3Q2hpbGQpO1xuICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgbmV3Q2hpbGQuZG9tLnRleHRDb250ZW50ID0gXCJcIjtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGxldCBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChjaGlsZHJlbltpXSBpbnN0YW5jZW9mIFZub2RlID09PSBmYWxzZSkge1xuICAgICAgbmV3Q2hpbGQuZG9tLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNoaWxkcmVuW2ldKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY3JlYXRlTmV3RWxlbWVudChjaGlsZHJlbltpXSwgbmV3Q2hpbGQsIG51bGwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoS2V5ZWQobmV3Vm5vZGU6IFZub2RlV2l0aERvbSwgY2hpbGRyZW46IENoaWxkcmVuKSB7XG4gIGNvbnN0IG9sZFRyZWUgPSBbLi4uQXJyYXkuZnJvbShuZXdWbm9kZS5kb20uY2hpbGROb2RlcyldIGFzIHVua25vd24gYXMgRG9tRWxlbWVudFtdO1xuICBjb25zdCBjaGlsZE5vZGVzID0gbmV3Vm5vZGUuZG9tLmNoaWxkTm9kZXM7XG4gIGNvbnN0IG9sZEtleWVkTGlzdDogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gb2xkVHJlZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb25zdCBvbGRWbm9kZSA9IG9sZFRyZWVbaV0udm5vZGUgYXMgVm5vZGVXaXRoRG9tO1xuICAgIGlmICghb2xkVm5vZGUgfHwgXCJrZXlcIiBpbiBvbGRWbm9kZS5wcm9wcyA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBvbGRLZXllZExpc3Rbb2xkVm5vZGUucHJvcHMua2V5IGFzIHN0cmluZ10gPSBpO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb25zdCBuZXdDaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgIGNvbnN0IG9sZENoaWxkID0gb2xkVHJlZVtvbGRLZXllZExpc3RbbmV3Q2hpbGQucHJvcHMua2V5IGFzIHN0cmluZ11dO1xuXG4gICAgaWYgKCFvbGRDaGlsZCkge1xuICAgICAgY3JlYXRlTmV3RWxlbWVudChuZXdDaGlsZCwgbmV3Vm5vZGUsIGNoaWxkTm9kZXNbaV0gYXMgRG9tRWxlbWVudCB8IG51bGwpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbmV3Q2hpbGQuZG9tID0gb2xkQ2hpbGQ7XG4gICAgY29uc3QgY3VycmVudENoaWxkID0gY2hpbGROb2Rlc1tpXTtcbiAgICBpZiAoIWN1cnJlbnRDaGlsZCkge1xuICAgICAgbmV3Vm5vZGUuZG9tLmFwcGVuZENoaWxkKG9sZENoaWxkKTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGlsZCAhPT0gb2xkQ2hpbGQpIHtcbiAgICAgIG5ld1Zub2RlLmRvbS5yZXBsYWNlQ2hpbGQob2xkQ2hpbGQsIGN1cnJlbnRDaGlsZCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgXCJ2LWtlZXBcIiBpbiBuZXdDaGlsZC5wcm9wcyA9PT0gZmFsc2UgfHxcbiAgICAgICFvbGRDaGlsZC52bm9kZSB8fFxuICAgICAgb2xkQ2hpbGQucHJvcHNbXCJ2LWtlZXBcIl0gIT09IG5ld0NoaWxkLnByb3BzW1widi1rZWVwXCJdXG4gICAgKSB7XG4gICAgICB1cGRhdGVBdHRyaWJ1dGVzKG5ld0NoaWxkIGFzIFZub2RlV2l0aERvbSwgb2xkQ2hpbGQudm5vZGUucHJvcHMpO1xuXG4gICAgICBpZiAoXCJ2LXRleHRcIiBpbiBuZXdDaGlsZC5wcm9wcykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgIGlmIChvbGRDaGlsZC50ZXh0Q29udGVudCAhPSBuZXdDaGlsZC5wcm9wc1tcInYtdGV4dFwiXSkge1xuICAgICAgICAgIG9sZENoaWxkLnRleHRDb250ZW50ID0gbmV3Q2hpbGQucHJvcHNbXCJ2LXRleHRcIl07XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHBhdGNoKG5ld0NoaWxkIGFzIFZub2RlV2l0aERvbSk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChsZXQgaSA9IGNoaWxkcmVuLmxlbmd0aCwgbCA9IGNoaWxkTm9kZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgY2hpbGROb2Rlc1tjaGlsZE5vZGVzLmxlbmd0aCAtIDFdPy5yZW1vdmUoKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZnVuY3Rpb24gcGF0Y2gobmV3Vm5vZGU6IFZub2RlV2l0aERvbSk6IHZvaWQge1xuICBjb25zdCBjaGlsZHJlbiA9IGZsYXRUcmVlKG5ld1Zub2RlKTtcblxuICBjb25zdCBkb20gPSBuZXdWbm9kZS5kb207XG5cbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChkb20uY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIGRvbS50ZXh0Q29udGVudCA9IFwiXCI7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG9sZERvbUNoaWxkcmVuID0gZG9tLmNoaWxkTm9kZXMgYXMgdW5rbm93biBhcyBEb21FbGVtZW50W107XG4gIGNvbnN0IG9sZENoaWxkcmVuTGVuZ3RoID0gb2xkRG9tQ2hpbGRyZW4ubGVuZ3RoO1xuICBjb25zdCBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgaWYgKG9sZENoaWxkcmVuTGVuZ3RoID09PSAwKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoY2hpbGRyZW5baV0gaW5zdGFuY2VvZiBWbm9kZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZG9tLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNoaWxkcmVuW2ldKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY3JlYXRlTmV3RWxlbWVudChjaGlsZHJlbltpXSwgbmV3Vm5vZGUsIG51bGwpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgc2hvdWxkUGF0Y2hLZXllZCA9IHRydWU7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgIGlmIChjaGlsZHJlbltpXSBpbnN0YW5jZW9mIFZub2RlID09PSBmYWxzZSB8fCAhKFwia2V5XCIgaW4gY2hpbGRyZW5baV0ucHJvcHMpKSB7XG4gICAgICBzaG91bGRQYXRjaEtleWVkID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHNob3VsZFBhdGNoS2V5ZWQpIHtcbiAgICBwYXRjaEtleWVkKG5ld1Zub2RlLCBjaGlsZHJlbik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbmV3Q2hpbGQgPSBjaGlsZHJlbltpXSBhcyBWbm9kZVdpdGhEb207XG4gICAgY29uc3QgaXNUZXh0ID0gbmV3Q2hpbGQgaW5zdGFuY2VvZiBWbm9kZSA9PT0gZmFsc2U7XG4gICAgY29uc3Qgb2xkQ2hpbGQgPSBvbGREb21DaGlsZHJlbltpXTtcblxuICAgIGlmICghb2xkQ2hpbGQpIHtcbiAgICAgIGlmIChpc1RleHQpIHtcbiAgICAgICAgbmV3Vm5vZGUuZG9tLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5ld0NoaWxkIGFzIHVua25vd24gYXMgc3RyaW5nKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjcmVhdGVOZXdFbGVtZW50KG5ld0NoaWxkIGFzIFZub2RlV2l0aERvbSwgbmV3Vm5vZGUsIG51bGwpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGlzVGV4dCkge1xuICAgICAgaWYgKG9sZENoaWxkLm5vZGVUeXBlICE9PSAzKSB7XG4gICAgICAgIG5ld1Zub2RlLmRvbS5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobmV3Q2hpbGQgYXMgdW5rbm93biBhcyBzdHJpbmcpLCBvbGRDaGlsZCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICBpZiAob2xkQ2hpbGQubm9kZVZhbHVlICE9IChuZXdDaGlsZCBhcyB1bmtub3duIGFzIHN0cmluZykpIHtcbiAgICAgICAgb2xkQ2hpbGQubm9kZVZhbHVlID0gbmV3Q2hpbGQgYXMgdW5rbm93biBhcyBzdHJpbmc7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoXCJ2LWtlZXBcIiBpbiBuZXdDaGlsZC5wcm9wcykge1xuICAgICAgaWYgKG9sZENoaWxkLnZub2RlICYmIG9sZENoaWxkLnZub2RlLnByb3BzW1widi1rZWVwXCJdID09PSBuZXdDaGlsZC5wcm9wc1tcInYta2VlcFwiXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV4dE9sZENoaWxkID0gb2xkRG9tQ2hpbGRyZW5baSArIDFdO1xuICAgICAgaWYgKG5leHRPbGRDaGlsZCAmJiBuZXh0T2xkQ2hpbGQudm5vZGUgJiYgbmV4dE9sZENoaWxkLnZub2RlLnByb3BzW1widi1rZWVwXCJdID09PSBuZXdDaGlsZC5wcm9wc1tcInYta2VlcFwiXSkge1xuICAgICAgICBvbGRDaGlsZC5yZW1vdmUoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0NoaWxkLnRhZyAhPT0gb2xkQ2hpbGQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY3JlYXRlTmV3RWxlbWVudChuZXdDaGlsZCwgbmV3Vm5vZGUsIG9sZENoaWxkKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIG5ld0NoaWxkLmRvbSA9IG9sZENoaWxkO1xuICAgIHVwZGF0ZUF0dHJpYnV0ZXMobmV3Q2hpbGQsIG9sZENoaWxkLnZub2RlID8gb2xkQ2hpbGQudm5vZGUucHJvcHMgOiBudWxsKTtcbiAgICBpZiAoXCJ2LXRleHRcIiBpbiBuZXdDaGlsZC5wcm9wcykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuICAgICAgaWYgKG5ld0NoaWxkLmRvbS50ZXh0Q29udGVudCAhPSBuZXdDaGlsZC5wcm9wc1tcInYtdGV4dFwiXSkge1xuICAgICAgICBuZXdDaGlsZC5kb20udGV4dENvbnRlbnQgPSBuZXdDaGlsZC5wcm9wc1tcInYtdGV4dFwiXTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBwYXRjaChuZXdDaGlsZCk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gY2hpbGRyZW5MZW5ndGgsIGwgPSBvbGREb21DaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvbGREb21DaGlsZHJlbltpXT8ucmVtb3ZlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZub2RlKHZub2RlOiBWbm9kZVdpdGhEb20pOiBzdHJpbmcgfCB2b2lkIHtcbiAgY2FsbFNldChvbkNsZWFudXBTZXQpO1xuICB2bm9kZS5wcm9wcyA9IHZub2RlLnByb3BzIHx8IHt9O1xuICBwYXRjaCh2bm9kZSk7XG4gIGNhbGxTZXQoaXNNb3VudGVkID8gb25VcGRhdGVTZXQgOiBvbk1vdW50U2V0KTtcbiAgaXNNb3VudGVkID0gdHJ1ZTtcbiAgY3VycmVudC52bm9kZSA9IG51bGw7XG4gIGN1cnJlbnQuY29tcG9uZW50ID0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZSgpOiBzdHJpbmcge1xuICBpZiAobWFpblZub2RlKSB7XG4gICAgbWFpblZub2RlLmNoaWxkcmVuID0gW21haW5Db21wb25lbnRdO1xuICAgIHVwZGF0ZVZub2RlKG1haW5Wbm9kZSBhcyBWbm9kZVdpdGhEb20pO1xuICAgIGlmIChpc05vZGVKcykge1xuICAgICAgcmV0dXJuIG1haW5Wbm9kZS5kb20uaW5uZXJIVE1MO1xuICAgIH1cbiAgfVxuICByZXR1cm4gXCJcIjtcbn1cblxubGV0IGRlYm91bmNlZFVwZGF0ZVRpbWVvdXQ6IGFueTtcbmNvbnN0IGRlYm91bmNlZFVwZGF0ZU1ldGhvZCA9IGlzTm9kZUpzID8gdXBkYXRlIDogKCkgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWJvdW5jZWRVcGRhdGUodGltZW91dCA9IDQyKSB7XG4gIGlmIChjdXJyZW50LmV2ZW50KSB7XG4gICAgY3VycmVudC5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG4gIGNsZWFyVGltZW91dChkZWJvdW5jZWRVcGRhdGVUaW1lb3V0KTtcbiAgZGVib3VuY2VkVXBkYXRlVGltZW91dCA9IHNldFRpbWVvdXQoZGVib3VuY2VkVXBkYXRlTWV0aG9kLCB0aW1lb3V0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnQoKSB7XG4gIGlmIChtYWluVm5vZGUpIHtcbiAgICBtYWluQ29tcG9uZW50ID0gdigoKSA9PiBudWxsLCB7fSkgYXMgVm5vZGVDb21wb25lbnRJbnRlcmZhY2U7XG4gICAgY29uc3QgcmVzdWx0ID0gdXBkYXRlKCk7XG4gICAgY2FsbFNldChvblVubW91bnRTZXQpO1xuICAgIGZvciAoY29uc3QgbmFtZSBpbiBldmVudExpc3RlbmVyTmFtZXMpIHtcbiAgICAgIG1haW5Wbm9kZS5kb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLnNsaWNlKDIpLnRvTG93ZXJDYXNlKCksIGV2ZW50TGlzdGVuZXIpO1xuICAgICAgUmVmbGVjdC5kZWxldGVQcm9wZXJ0eShldmVudExpc3RlbmVyTmFtZXMsIG5hbWUpO1xuICAgIH1cblxuICAgIG1haW5Db21wb25lbnQgPSBudWxsO1xuICAgIG1haW5Wbm9kZSA9IG51bGw7XG4gICAgaXNNb3VudGVkID0gZmFsc2U7XG4gICAgY3VycmVudC52bm9kZSA9IG51bGw7XG4gICAgY3VycmVudC5jb21wb25lbnQgPSBudWxsO1xuICAgIGN1cnJlbnQuZXZlbnQgPSBudWxsO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdW50KGRvbTogc3RyaW5nIHwgRG9tRWxlbWVudCwgY29tcG9uZW50OiBWYWx5cmlhbkNvbXBvbmVudCB8IFZub2RlQ29tcG9uZW50SW50ZXJmYWNlIHwgYW55KSB7XG4gIGNvbnN0IGNvbnRhaW5lciA9XG4gICAgdHlwZW9mIGRvbSA9PT0gXCJzdHJpbmdcIiA/IChpc05vZGVKcyA/IGNyZWF0ZUVsZW1lbnQoZG9tLCBkb20gPT09IFwic3ZnXCIpIDogZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihkb20pKSA6IGRvbTtcblxuICBpZiAoaXNDb21wb25lbnQoY29tcG9uZW50KSkge1xuICAgIG1haW5Db21wb25lbnQgPSB2KGNvbXBvbmVudCwge30sIFtdKSBhcyBWbm9kZUNvbXBvbmVudEludGVyZmFjZTtcbiAgfSBlbHNlIGlmIChpc1Zub2RlQ29tcG9uZW50KGNvbXBvbmVudCkpIHtcbiAgICBtYWluQ29tcG9uZW50ID0gY29tcG9uZW50O1xuICB9IGVsc2Uge1xuICAgIG1haW5Db21wb25lbnQgPSB2KCgpID0+IGNvbXBvbmVudCwge30sIFtdKSBhcyBWbm9kZUNvbXBvbmVudEludGVyZmFjZTtcbiAgfVxuXG4gIG1haW5Wbm9kZSA9IGhpZHJhdGVEb21Ub1Zub2Rl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
|
|
1
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc05vZGVKcyIsIkJvb2xlYW4iLCJwcm9jZXNzIiwidmVyc2lvbnMiLCJub2RlIiwiVm5vZGUiLCJjb25zdHJ1Y3RvciIsInRhZyIsInByb3BzIiwiY2hpbGRyZW4iLCJkb20iLCJpc1NWRyIsInRoaXMiLCJpc1BPSk9Db21wb25lbnQiLCJjb21wb25lbnQiLCJpc0NvbXBvbmVudCIsImlzVm5vZGUiLCJvYmplY3QiLCJpc1Zub2RlQ29tcG9uZW50IiwidiIsInRhZ09yQ29tcG9uZW50IiwiaGlkcmF0ZURvbVRvVm5vZGUiLCJub2RlVHlwZSIsIm5vZGVWYWx1ZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJpIiwibCIsImNoaWxkTm9kZXMiLCJsZW5ndGgiLCJjaGlsZERvbSIsInB1c2giLCJjaGlsZFZub2RlIiwiYXR0cmlidXRlcyIsImF0dHIiLCJ2bm9kZSIsInRydXN0IiwiaHRtbFN0cmluZyIsImRpdiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInRyaW0iLCJBcnJheSIsImZyb20iLCJtYXAiLCJmcmFnbWVudCIsIl8iLCJtYWluQ29tcG9uZW50IiwibWFpblZub2RlIiwiaXNNb3VudGVkIiwiY3VycmVudCIsImV2ZW50IiwicmVzZXJ2ZWRQcm9wcyIsIlNldCIsIm9uQ2xlYW51cFNldCIsIm9uTW91bnRTZXQiLCJvblVwZGF0ZVNldCIsIm9uVW5tb3VudFNldCIsIm9uQ2xlYW51cCIsImNhbGxiYWNrIiwiYWRkIiwiY2FsbFNldCIsInNldCIsImNsZWFyIiwiZGlyZWN0aXZlcyIsInZhbHVlIiwicGFyZW50Tm9kZSIsInJlcGxhY2VDaGlsZCIsImNyZWF0ZVRleHROb2RlIiwiYm9vbCIsInN0eWxlIiwiZGlzcGxheSIsIm1vZGVsIiwicHJvcGVydHkiLCJuYW1lIiwiaGFuZGxlciIsImUiLCJ0YXJnZXQiLCJ0eXBlIiwiaXNBcnJheSIsInZhbCIsImlkeCIsImluZGV4T2YiLCJzcGxpY2UiLCJzZXRBdHRyaWJ1dGUiLCJtdWx0aXBsZSIsImN0cmxLZXkiLCJmb3JFYWNoIiwiY2hpbGQiLCJqb2luIiwic2VsZWN0ZWQiLCJwcmV2SGFuZGxlciIsIm9sZFByb3BzIiwiY2xlYW51cCIsImNsYXNzTmFtZSIsImNsYXNzTGlzdCIsInRvZ2dsZSIsImNsYXNzIiwiaWQiLCJkb21TdHlsZSIsImRlYm91bmNlZFVwZGF0ZVRpbWVvdXQiLCJldmVudExpc3RlbmVyTmFtZXMiLCJldmVudExpc3RlbmVyIiwib2xkVm5vZGUiLCJkZWZhdWx0UHJldmVudGVkIiwidXBkYXRlIiwic2hhcmVkU2V0QXR0cmlidXRlIiwibmV3Vm5vZGUiLCJuZXdWbm9kZURvbSIsInJlbW92ZUF0dHJpYnV0ZSIsImhhcyIsImFkZEV2ZW50TGlzdGVuZXIiLCJzbGljZSIsInVwZGF0ZUF0dHJpYnV0ZXMiLCJ2bm9kZURvbSIsInZub2RlUHJvcHMiLCJjcmVhdGVFbGVtZW50TlMiLCJmbGF0VHJlZSIsIm9yaWdpbmFsQ2hpbGRyZW4iLCJjb25zb2xlIiwid2FybiIsIm5ld0NoaWxkIiwidmlldyIsImJpbmQiLCJjcmVhdGVOZXdFbGVtZW50Iiwib2xkQ2hpbGQiLCJhcHBlbmRDaGlsZCIsInRleHRDb250ZW50IiwicGF0Y2giLCJvbGREb21DaGlsZHJlbiIsIm9sZENoaWxkcmVuTGVuZ3RoIiwiY2hpbGRyZW5MZW5ndGgiLCJzaG91bGRQYXRjaEtleWVkIiwib2xkVHJlZSIsIm9sZEtleWVkTGlzdCIsImtleSIsImN1cnJlbnRDaGlsZCIsInJlbW92ZSIsInBhdGNoS2V5ZWQiLCJpc1RleHQiLCJuZXh0T2xkQ2hpbGQiLCJ1cGRhdGVWbm9kZSIsImRlYm91bmNlZFVwZGF0ZU1ldGhvZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInRpbWVvdXQiLCJwcmV2ZW50RGVmYXVsdCIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJkaXJlY3RpdmUiLCJkaXJlY3RpdmVOYW1lIiwiY29udGFpbmVyIiwicXVlcnlTZWxlY3RvciIsInJlc3VsdCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJSZWZsZWN0IiwiZGVsZXRlUHJvcGVydHkiXSwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgdmFyIGRvY3VtZW50OiBEb2N1bWVudDtcbiAgbmFtZXNwYWNlIEpTWCB7XG4gICAgaW50ZXJmYWNlIEludHJpbnNpY0VsZW1lbnRzIGV4dGVuZHMgRGVmYXVsdFJlY29yZCB7fVxuICAgIHR5cGUgRWxlbWVudCA9IFJldHVyblR5cGU8XG4gICAgICB0eXBlb2YgdiB8ICgoLi4uYXJnczogYW55KSA9PiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkIHwgYm9vbGVhbiB8IFByb21pc2U8YW55PilcbiAgICA+O1xuICAgIHR5cGUgQ29tcG9uZW50UmV0dXJuVHlwZSA9IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgfCBib29sZWFuIHwgRWxlbWVudCB8IEVsZW1lbnRbXTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgRGVmYXVsdFJlY29yZCBleHRlbmRzIFJlY29yZDxzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIGFueT4ge31cblxuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0aWVzIGV4dGVuZHMgRGVmYXVsdFJlY29yZCB7XG4gIGtleT86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb21FbGVtZW50IGV4dGVuZHMgRWxlbWVudCwgRGVmYXVsdFJlY29yZCB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudCBleHRlbmRzIERlZmF1bHRSZWNvcmQge1xuICAocHJvcHM6IFByb3BlcnRpZXMsIGNoaWxkcmVuOiBhbnlbXSk6IFZub2RlIHwgYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBPSk9Db21wb25lbnQgZXh0ZW5kcyBEZWZhdWx0UmVjb3JkIHtcbiAgdmlldzogQ29tcG9uZW50O1xufVxuXG5leHBvcnQgdHlwZSBWYWx5cmlhbkNvbXBvbmVudCA9IENvbXBvbmVudCB8IFBPSk9Db21wb25lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVm5vZGVDb21wb25lbnRJbnRlcmZhY2UgZXh0ZW5kcyBWbm9kZSB7XG4gIHRhZzogVmFseXJpYW5Db21wb25lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hpbGRyZW4gZXh0ZW5kcyBBcnJheTxWbm9kZSB8IFZub2RlQ29tcG9uZW50SW50ZXJmYWNlIHwgVmFseXJpYW5Db21wb25lbnQgfCBhbnk+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0aXZlIHtcbiAgKHZhbHVlOiBhbnksIHZub2RlOiBWbm9kZVdpdGhEb20sIG9sZFByb3BzOiBQcm9wZXJ0aWVzIHwgbnVsbCk6IGZhbHNlIHwgdm9pZCB8IGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IGlzTm9kZUpzID0gQm9vbGVhbih0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZSk7XG5cbmV4cG9ydCBjbGFzcyBWbm9kZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IHN0cmluZyB8IENvbXBvbmVudCB8IFBPSk9Db21wb25lbnQsXG4gICAgcHVibGljIHByb3BzOiBudWxsIHwgUHJvcGVydGllcyxcbiAgICBwdWJsaWMgY2hpbGRyZW46IENoaWxkcmVuLFxuICAgIHB1YmxpYyBkb20/OiBEb21FbGVtZW50LFxuICAgIHB1YmxpYyBpc1NWRz86IGJvb2xlYW5cbiAgKSB7fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZub2RlV2l0aERvbSBleHRlbmRzIFZub2RlIHtcbiAgdGFnOiBzdHJpbmc7XG4gIGRvbTogRG9tRWxlbWVudDtcbiAgcHJvcHM6IFByb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBjb25zdCBpc1BPSk9Db21wb25lbnQgPSAoY29tcG9uZW50OiB1bmtub3duKTogY29tcG9uZW50IGlzIFBPSk9Db21wb25lbnQgPT5cbiAgQm9vbGVhbihjb21wb25lbnQgJiYgdHlwZW9mIGNvbXBvbmVudCA9PT0gXCJvYmplY3RcIiAmJiBcInZpZXdcIiBpbiBjb21wb25lbnQpO1xuXG5leHBvcnQgY29uc3QgaXNDb21wb25lbnQgPSAoY29tcG9uZW50OiB1bmtub3duKTogY29tcG9uZW50IGlzIENvbXBvbmVudCA9PlxuICBCb29sZWFuKHR5cGVvZiBjb21wb25lbnQgPT09IFwiZnVuY3Rpb25cIiB8fCBpc1BPSk9Db21wb25lbnQoY29tcG9uZW50KSk7XG5leHBvcnQgY29uc3QgaXNWbm9kZSA9IChvYmplY3Q/OiB1bmtub3duKTogb2JqZWN0IGlzIFZub2RlID0+IG9iamVjdCBpbnN0YW5jZW9mIFZub2RlO1xuXG5leHBvcnQgY29uc3QgaXNWbm9kZUNvbXBvbmVudCA9IChvYmplY3Q/OiB1bmtub3duKTogb2JqZWN0IGlzIFZub2RlQ29tcG9uZW50SW50ZXJmYWNlID0+IHtcbiAgcmV0dXJuIGlzVm5vZGUob2JqZWN0KSAmJiBpc0NvbXBvbmVudChvYmplY3QudGFnKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2KHRhZ09yQ29tcG9uZW50OiBzdHJpbmcgfCBWYWx5cmlhbkNvbXBvbmVudCwgcHJvcHM6IFByb3BlcnRpZXMgfCBudWxsLCAuLi5jaGlsZHJlbjogQ2hpbGRyZW4pIHtcbiAgcmV0dXJuIG5ldyBWbm9kZSh0YWdPckNvbXBvbmVudCwgcHJvcHMsIGNoaWxkcmVuKTtcbn1cblxudi5mcmFnbWVudCA9IChfOiBQcm9wZXJ0aWVzLCAuLi5jaGlsZHJlbjogQ2hpbGRyZW4pID0+IGNoaWxkcmVuO1xuXG5leHBvcnQgZnVuY3Rpb24gaGlkcmF0ZURvbVRvVm5vZGUoZG9tOiBhbnkpOiBWbm9kZVdpdGhEb20gfCB2b2lkIHtcbiAgaWYgKGRvbS5ub2RlVHlwZSA9PT0gMykge1xuICAgIHJldHVybiBkb20ubm9kZVZhbHVlO1xuICB9XG5cbiAgaWYgKGRvbS5ub2RlVHlwZSA9PT0gMSkge1xuICAgIGNvbnN0IHRhZyA9IGRvbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHByb3BzID0ge30gYXMgUHJvcGVydGllcztcbiAgICBjb25zdCBjaGlsZHJlbiA9IFtdIGFzIENoaWxkcmVuO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBkb20uY2hpbGROb2Rlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoaWxkRG9tID0gZG9tLmNoaWxkTm9kZXNbaV07XG4gICAgICBpZiAoY2hpbGREb20ubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZERvbS5ub2RlVmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChjaGlsZERvbS5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICBjb25zdCBjaGlsZFZub2RlID0gaGlkcmF0ZURvbVRvVm5vZGUoY2hpbGREb20pO1xuICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkVm5vZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBkb20uYXR0cmlidXRlcztcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGF0dHJpYnV0ZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCBhdHRyID0gYXR0cmlidXRlc1tpXTtcbiAgICAgIHByb3BzW2F0dHIubm9kZU5hbWVdID0gYXR0ci5ub2RlVmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3Qgdm5vZGUgPSBuZXcgVm5vZGUodGFnLCBwcm9wcywgY2hpbGRyZW4pO1xuICAgIHZub2RlLmRvbSA9IGRvbTtcbiAgICBkb20udm5vZGUgPSB2bm9kZTtcbiAgICB2bm9kZS5pc1NWRyA9IHRhZyA9PT0gXCJzdmdcIjtcbiAgICByZXR1cm4gdm5vZGUgYXMgVm5vZGVXaXRoRG9tO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cnVzdChodG1sU3RyaW5nOiBzdHJpbmcpIHtcbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgZGl2LmlubmVySFRNTCA9IGh0bWxTdHJpbmcudHJpbSgpO1xuICByZXR1cm4gQXJyYXkuZnJvbShkaXYuY2hpbGROb2RlcykubWFwKGhpZHJhdGVEb21Ub1Zub2RlKTtcbn1cblxubGV0IG1haW5Db21wb25lbnQ6IFZub2RlQ29tcG9uZW50SW50ZXJmYWNlIHwgbnVsbCA9IG51bGw7XG5sZXQgbWFpblZub2RlOiBWbm9kZVdpdGhEb20gfCBudWxsID0gbnVsbDtcbmxldCBpc01vdW50ZWQgPSBmYWxzZTtcblxuZXhwb3J0IGNvbnN0IGN1cnJlbnQgPSB7XG4gIHZub2RlOiBudWxsIGFzIFZub2RlIHwgbnVsbCxcbiAgY29tcG9uZW50OiBudWxsIGFzIFZhbHlyaWFuQ29tcG9uZW50IHwgbnVsbCxcbiAgZXZlbnQ6IG51bGwgYXMgRXZlbnQgfCBudWxsXG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXJ2ZWRQcm9wcyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gIFwia2V5XCIsXG4gIFwic3RhdGVcIixcbiAgXCJ2LWtlZXBcIixcbiAgXCJ2LXRleHRcIixcbiAgXCJ2LWlmXCIsXG4gIFwidi1mb3JcIixcbiAgXCJ2LXNob3dcIixcbiAgXCJ2LWNsYXNzXCIsXG4gIFwidi1odG1sXCIsXG4gIFwidi1tb2RlbFwiLFxuICBcInYtY3JlYXRlXCIsXG4gIFwidi11cGRhdGVcIixcbiAgXCJ2LWNsZWFudXBcIlxuXSk7XG5cbmNvbnN0IG9uQ2xlYW51cFNldCA9IG5ldyBTZXQ8RnVuY3Rpb24+KCk7XG5jb25zdCBvbk1vdW50U2V0ID0gbmV3IFNldDxGdW5jdGlvbj4oKTtcbmNvbnN0IG9uVXBkYXRlU2V0ID0gbmV3IFNldDxGdW5jdGlvbj4oKTtcbmNvbnN0IG9uVW5tb3VudFNldCA9IG5ldyBTZXQ8RnVuY3Rpb24+KCk7XG5leHBvcnQgY29uc3Qgb25Nb3VudCA9IChjYWxsYmFjazogRnVuY3Rpb24pID0+ICFpc01vdW50ZWQgJiYgb25Nb3VudFNldC5hZGQoY2FsbGJhY2spO1xuZXhwb3J0IGNvbnN0IG9uVXBkYXRlID0gKGNhbGxiYWNrOiBGdW5jdGlvbikgPT4gb25VcGRhdGVTZXQuYWRkKGNhbGxiYWNrKTtcbmV4cG9ydCBjb25zdCBvbkNsZWFudXAgPSAoY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiBvbkNsZWFudXBTZXQuYWRkKGNhbGxiYWNrKTtcbmV4cG9ydCBjb25zdCBvblVubW91bnQgPSAoY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiAhaXNNb3VudGVkICYmIG9uVW5tb3VudFNldC5hZGQoY2FsbGJhY2spO1xuY29uc3QgY2FsbFNldCA9IChzZXQ6IFNldDxGdW5jdGlvbj4pID0+IHtcbiAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBzZXQpIHtcbiAgICBjYWxsYmFjaygpO1xuICB9XG4gIHNldC5jbGVhcigpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRpcmVjdGl2ZXM6IFJlY29yZDxzdHJpbmcsIERpcmVjdGl2ZT4gPSB7XG4gIFwidi1pZlwiOiAodmFsdWUsIHZub2RlKSA9PiB7XG4gICAgaWYgKCFCb29sZWFuKHZhbHVlKSkge1xuICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHZub2RlLmRvbT8ucGFyZW50Tm9kZTtcbiAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpLCB2bm9kZS5kb20pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LFxuXG4gIFwidi1zaG93XCI6ICh2YWx1ZSwgdm5vZGUpID0+IHtcbiAgICBjb25zdCBib29sID0gQm9vbGVhbih2YWx1ZSk7XG4gICAgKFxuICAgICAgdm5vZGUuZG9tIGFzIHVua25vd24gYXMge1xuICAgICAgICBzdHlsZTogeyBkaXNwbGF5OiBzdHJpbmcgfTtcbiAgICAgIH1cbiAgICApLnN0eWxlLmRpc3BsYXkgPSBib29sID8gXCJcIiA6IFwibm9uZVwiO1xuICB9LFxuXG4gIFwidi1odG1sXCI6ICh2YWx1ZSwgdm5vZGUpID0+IHtcbiAgICB2bm9kZS5jaGlsZHJlbiA9IHRydXN0KHZhbHVlIGFzIHN0cmluZyk7XG4gIH0sXG5cbiAgLy8gVGhlIFwidi1tb2RlbFwiIGRpcmVjdGl2ZSBiaW5kcyB0aGUgdmFsdWUgb2YgYW4gaW5wdXQgZWxlbWVudCB0byBhIG1vZGVsIHByb3BlcnR5XG4gIFwidi1tb2RlbFwiOiAobW9kZWwsIHZub2RlKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGlmIChcIm5hbWVcIiBpbiB2bm9kZS5wcm9wcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWU7XG4gICAgY29uc3QgcHJvcGVydHkgPSB2bm9kZS5wcm9wcy5uYW1lO1xuICAgIGxldCBldmVudCA9IFwib25pbnB1dFwiO1xuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBtb2RlbCBwcm9wZXJ0eSB3aGVuIHRoZSBpbnB1dCBlbGVtZW50J3MgdmFsdWUgY2hhbmdlc1xuICAgIGxldCBoYW5kbGVyID0gKGU6IEV2ZW50KSA9PiAobW9kZWxbcHJvcGVydHldID0gKGUudGFyZ2V0IGFzIERvbUVsZW1lbnQgJiBSZWNvcmQ8c3RyaW5nLCBhbnk+KS52YWx1ZSk7XG4gICAgaWYgKHZub2RlLnRhZyA9PT0gXCJpbnB1dFwiKSB7XG4gICAgICAvLyBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgaW5wdXQgZWxlbWVudCwgdXNlIGEgZGlmZmVyZW50IGhhbmRsZXIgZnVuY3Rpb25cbiAgICAgIHN3aXRjaCAodm5vZGUucHJvcHMudHlwZSkge1xuICAgICAgICBjYXNlIFwiY2hlY2tib3hcIjoge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1vZGVsW3Byb3BlcnR5XSkpIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBtb2RlbCBwcm9wZXJ0eSBpcyBhbiBhcnJheSwgYWRkIG9yIHJlbW92ZSB0aGUgdmFsdWUgZnJvbSB0aGUgYXJyYXkgd2hlbiB0aGUgY2hlY2tib3ggaXMgY2hlY2tlZCBvciB1bmNoZWNrZWRcbiAgICAgICAgICAgIGhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsID0gKGUudGFyZ2V0IGFzIERvbUVsZW1lbnQgJiBSZWNvcmQ8c3RyaW5nLCBhbnk+KS52YWx1ZTtcbiAgICAgICAgICAgICAgY29uc3QgaWR4ID0gbW9kZWxbcHJvcGVydHldLmluZGV4T2YodmFsKTtcbiAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBtb2RlbFtwcm9wZXJ0eV0ucHVzaCh2YWwpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBpbiB0aGUgYXJyYXksIHNldCB0aGUgY2hlY2tib3ggdG8gYmUgY2hlY2tlZFxuICAgICAgICAgICAgdmFsdWUgPSBtb2RlbFtwcm9wZXJ0eV0uaW5kZXhPZih2bm9kZS5kb20udmFsdWUpICE9PSAtMTtcbiAgICAgICAgICB9IGVsc2UgaWYgKFwidmFsdWVcIiBpbiB2bm9kZS5wcm9wcykge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGlucHV0IGVsZW1lbnQgaGFzIGEgXCJ2YWx1ZVwiIGF0dHJpYnV0ZSwgdXNlIGl0IHRvIGRldGVybWluZSB0aGUgY2hlY2tlZCBzdGF0ZVxuICAgICAgICAgICAgaGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG1vZGVsW3Byb3BlcnR5XSA9PT0gdm5vZGUucHJvcHMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBtb2RlbFtwcm9wZXJ0eV0gPSBudWxsO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XSA9IHZub2RlLnByb3BzLnZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFsdWUgPSBtb2RlbFtwcm9wZXJ0eV0gPT09IHZub2RlLnByb3BzLnZhbHVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBcInZhbHVlXCIgYXR0cmlidXRlLCB1c2UgYSBib29sZWFuIHZhbHVlIGZvciB0aGUgbW9kZWwgcHJvcGVydHlcbiAgICAgICAgICAgIGhhbmRsZXIgPSAoKSA9PiAobW9kZWxbcHJvcGVydHldID0gIW1vZGVsW3Byb3BlcnR5XSk7XG4gICAgICAgICAgICB2YWx1ZSA9IG1vZGVsW3Byb3BlcnR5XTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2V0IHRoZSBcImNoZWNrZWRcIiBhdHRyaWJ1dGUgb24gdGhlIGlucHV0IGVsZW1lbnRcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICBzZXRBdHRyaWJ1dGUoXCJjaGVja2VkXCIsIHZhbHVlLCB2bm9kZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInJhZGlvXCI6IHtcbiAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBhIHJhZGlvIGJ1dHRvbiwgc2V0IHRoZSBcImNoZWNrZWRcIiBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHZhbHVlIG9mIHRoZSBtb2RlbCBwcm9wZXJ0eVxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICAgIHNldEF0dHJpYnV0ZShcImNoZWNrZWRcIiwgbW9kZWxbcHJvcGVydHldID09PSB2bm9kZS5kb20udmFsdWUsIHZub2RlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgLy8gRm9yIGFsbCBvdGhlciBpbnB1dCB0eXBlcywgc2V0IHRoZSBcInZhbHVlXCIgYXR0cmlidXRlIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUgbW9kZWwgcHJvcGVydHlcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICBzZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLCBtb2RlbFtwcm9wZXJ0eV0sIHZub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodm5vZGUudGFnID09PSBcInNlbGVjdFwiKSB7XG4gICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBhIHNlbGVjdCBlbGVtZW50LCB1c2UgdGhlIFwiY2xpY2tcIiBldmVudCBieSBkZWZhdWx0XG4gICAgICBldmVudCA9IFwib25jbGlja1wiO1xuICAgICAgaWYgKHZub2RlLnByb3BzLm11bHRpcGxlKSB7XG4gICAgICAgIC8vIElmIHRoZSBzZWxlY3QgZWxlbWVudCBhbGxvd3MgbXVsdGlwbGUgc2VsZWN0aW9ucywgdXBkYXRlIHRoZSBtb2RlbCBwcm9wZXJ0eSB3aXRoIGFuIGFycmF5IG9mIHNlbGVjdGVkIHZhbHVlc1xuICAgICAgICBoYW5kbGVyID0gKGU6IEV2ZW50ICYgUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbCA9IChlLnRhcmdldCBhcyBEb21FbGVtZW50ICYgUmVjb3JkPHN0cmluZywgYW55PikudmFsdWU7XG4gICAgICAgICAgaWYgKGUuY3RybEtleSkge1xuICAgICAgICAgICAgLy8gSWYgdGhlIEN0cmwga2V5IGlzIHByZXNzZWQsIGFkZCBvciByZW1vdmUgdGhlIHZhbHVlIGZyb20gdGhlIGFycmF5XG4gICAgICAgICAgICBjb25zdCBpZHggPSBtb2RlbFtwcm9wZXJ0eV0uaW5kZXhPZih2YWwpO1xuICAgICAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgbW9kZWxbcHJvcGVydHldLnB1c2godmFsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlIEN0cmwga2V5IGlzIG5vdCBwcmVzc2VkLCBzZXQgdGhlIG1vZGVsIHByb3BlcnR5IHRvIGFuIGFycmF5IHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlXG4gICAgICAgICAgICBtb2RlbFtwcm9wZXJ0eV0uc3BsaWNlKDAsIG1vZGVsW3Byb3BlcnR5XS5sZW5ndGgpO1xuICAgICAgICAgICAgbW9kZWxbcHJvcGVydHldLnB1c2godmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8vIFNldCB0aGUgXCJzZWxlY3RlZFwiIGF0dHJpYnV0ZSBvbiB0aGUgb3B0aW9ucyBiYXNlZCBvbiB3aGV0aGVyIHRoZXkgYXJlIGluIHRoZSBtb2RlbCBwcm9wZXJ0eSBhcnJheVxuICAgICAgICB2bm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogVm5vZGVXaXRoRG9tKSA9PiB7XG4gICAgICAgICAgaWYgKGNoaWxkLnRhZyA9PT0gXCJvcHRpb25cIikge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBcInZhbHVlXCIgaW4gY2hpbGQucHJvcHMgPyBjaGlsZC5wcm9wcy52YWx1ZSA6IGNoaWxkLmNoaWxkcmVuLmpvaW4oXCJcIikudHJpbSgpO1xuICAgICAgICAgICAgY2hpbGQucHJvcHMuc2VsZWN0ZWQgPSBtb2RlbFtwcm9wZXJ0eV0uaW5kZXhPZih2YWx1ZSkgIT09IC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGUgc2VsZWN0IGVsZW1lbnQgZG9lcyBub3QgYWxsb3cgbXVsdGlwbGUgc2VsZWN0aW9ucywgc2V0IHRoZSBcInNlbGVjdGVkXCIgYXR0cmlidXRlIG9uIHRoZSBvcHRpb25zIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUgbW9kZWwgcHJvcGVydHlcbiAgICAgICAgdm5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IFZub2RlV2l0aERvbSkgPT4ge1xuICAgICAgICAgIGlmIChjaGlsZC50YWcgPT09IFwib3B0aW9uXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gXCJ2YWx1ZVwiIGluIGNoaWxkLnByb3BzID8gY2hpbGQucHJvcHMudmFsdWUgOiBjaGlsZC5jaGlsZHJlbi5qb2luKFwiXCIpLnRyaW0oKTtcbiAgICAgICAgICAgIGNoaWxkLnByb3BzLnNlbGVjdGVkID0gdmFsdWUgPT09IG1vZGVsW3Byb3BlcnR5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodm5vZGUudGFnID09PSBcInRleHRhcmVhXCIpIHtcbiAgICAgIC8vIFNldCB0aGUgdGV4dGFyZWEncyBjb250ZW50IHRvIHRoZSB2YWx1ZSBvZiB0aGUgbW9kZWwgcHJvcGVydHlcbiAgICAgIHZub2RlLmNoaWxkcmVuID0gW21vZGVsW3Byb3BlcnR5XV07XG4gICAgfVxuXG4gICAgLy8gV2UgYXNzdW1lIHRoYXQgdGhlIHByZXYgaGFuZGxlciBpZiBhbnkgd2lsbCBub3QgYmUgY2hhbmdlZCBieSB0aGUgdXNlciBhY3Jvc3MgcGF0Y2hzXG4gICAgY29uc3QgcHJldkhhbmRsZXIgPSB2bm9kZS5wcm9wc1tldmVudF07XG5cbiAgICAvLyBTZXQgdGhlIGV2ZW50IGhhbmRsZXIgb24gdGhlIGVsZW1lbnRcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBzZXRBdHRyaWJ1dGUoXG4gICAgICBldmVudCxcbiAgICAgIChlOiBFdmVudCkgPT4ge1xuICAgICAgICBoYW5kbGVyKGUpO1xuXG4gICAgICAgIC8vIElmIHRoZSBwcmV2aW91cyBoYW5kbGVyIGlzIGRlZmluZWQsIGNhbGwgaXQgYWZ0ZXIgdGhlIG1vZGVsIGhhcyBiZWVuIHVwZGF0ZWRcbiAgICAgICAgaWYgKHByZXZIYW5kbGVyKSB7XG4gICAgICAgICAgcHJldkhhbmRsZXIoZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB2bm9kZVxuICAgICk7XG4gIH0sXG5cbiAgXCJ2LWNyZWF0ZVwiOiAoY2FsbGJhY2ssIHZub2RlLCBvbGRQcm9wcykgPT4ge1xuICAgIGlmICghb2xkUHJvcHMpIHtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSBjYWxsYmFjayh2bm9kZSk7XG5cbiAgICAgIGlmICh0eXBlb2YgY2xlYW51cCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9uQ2xlYW51cChjbGVhbnVwKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgXCJ2LXVwZGF0ZVwiOiAoY2FsbGJhY2ssIHZub2RlLCBvbGRQcm9wcykgPT4ge1xuICAgIGlmIChvbGRQcm9wcykge1xuICAgICAgY29uc3QgY2xlYW51cCA9IGNhbGxiYWNrKHZub2RlLCBvbGRQcm9wcyk7XG5cbiAgICAgIGlmICh0eXBlb2YgY2xlYW51cCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9uQ2xlYW51cChjbGVhbnVwKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgXCJ2LWNsZWFudXBcIjogKGNhbGxiYWNrLCB2bm9kZSkgPT4ge1xuICAgIG9uQ2xlYW51cCgoKSA9PiBjYWxsYmFjayh2bm9kZSkpO1xuICB9LFxuXG4gIFwidi1jbGFzc1wiOiAodmFsdWUsIHZub2RlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdm5vZGUuZG9tLmNsYXNzTmFtZSA9IHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZub2RlLmRvbS5jbGFzc05hbWUgPSB2YWx1ZS5qb2luKFwiIFwiKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgY29uc3QgY2xhc3NMaXN0ID0gdm5vZGUuZG9tLmNsYXNzTGlzdDtcbiAgICAgIGZvciAoY29uc3QgbmFtZSBpbiB2YWx1ZSkge1xuICAgICAgICBjb25zdCB2YWwgPSB0eXBlb2YgdmFsdWVbbmFtZV0gPT09IFwiZnVuY3Rpb25cIiA/ICh2YWx1ZVtuYW1lXSBhcyBGdW5jdGlvbikoKSA6IHZhbHVlW25hbWVdO1xuICAgICAgICBjbGFzc0xpc3QudG9nZ2xlKG5hbWUsIHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8vIEZyZXF1ZW50IHVzZWQgcHJvcGVydGllc1xuICBjbGFzcyh2YWx1ZSwgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUuZG9tLmNsYXNzTmFtZSAhPT0gdmFsdWUpIHtcbiAgICAgIGlmICh2bm9kZS5pc1NWRykge1xuICAgICAgICB2bm9kZS5kb20uc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgdmFsdWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2bm9kZS5kb20uY2xhc3NOYW1lID0gdmFsdWU7XG4gICAgfVxuICB9LFxuXG4gIGNsYXNzTmFtZSh2YWx1ZSwgdm5vZGUpIHtcbiAgICBkaXJlY3RpdmVzLmNsYXNzKHZhbHVlLCB2bm9kZSwgbnVsbCk7XG4gIH0sXG5cbiAgaWQ6ICh2YWx1ZSwgdm5vZGUpID0+IHtcbiAgICBpZiAodm5vZGUuZG9tLmlkICE9PSB2YWx1ZSkge1xuICAgICAgaWYgKHZub2RlLmlzU1ZHKSB7XG4gICAgICAgIHZub2RlLmRvbS5zZXRBdHRyaWJ1dGUoXCJpZFwiLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZub2RlLmRvbS5pZCA9IHZhbHVlO1xuICAgIH1cbiAgfSxcblxuICBzdHlsZTogKHZhbHVlLCB2bm9kZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGlmICh2bm9kZS5pc1NWRykge1xuICAgICAgICB2bm9kZS5kb20uc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgdmFsdWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2bm9kZS5kb20uc3R5bGUgPSB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgaWYgKHZub2RlLmlzU1ZHKSB7XG4gICAgICAgIHZub2RlLmRvbS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLCBcIlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZub2RlLmRvbS5zdHlsZSA9IFwiXCI7XG4gICAgICB9XG4gICAgICBjb25zdCBkb21TdHlsZSA9IHZub2RlLmRvbS5zdHlsZTtcbiAgICAgIGZvciAoY29uc3QgbmFtZSBpbiB2YWx1ZSkge1xuICAgICAgICBkb21TdHlsZVtuYW1lXSA9IHZhbHVlW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpcmVjdGl2ZShuYW1lOiBzdHJpbmcsIGRpcmVjdGl2ZTogRGlyZWN0aXZlKSB7XG4gIGNvbnN0IGRpcmVjdGl2ZU5hbWUgPSBgdi0ke25hbWV9YDtcbiAgZGlyZWN0aXZlc1tkaXJlY3RpdmVOYW1lXSA9IGRpcmVjdGl2ZTtcbiAgcmVzZXJ2ZWRQcm9wcy5hZGQoZGlyZWN0aXZlTmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQcm9wTmFtZVJlc2VydmVkKG5hbWU6IHN0cmluZykge1xuICByZXNlcnZlZFByb3BzLmFkZChuYW1lKTtcbn1cblxuY29uc3QgZXZlbnRMaXN0ZW5lck5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbmZ1bmN0aW9uIGV2ZW50TGlzdGVuZXIoZTogRXZlbnQpIHtcbiAgY3VycmVudC5ldmVudCA9IGU7XG4gIGxldCBkb20gPSBlLnRhcmdldCBhcyBEb21FbGVtZW50O1xuICBjb25zdCBuYW1lID0gYG9uJHtlLnR5cGV9YDtcblxuICB3aGlsZSAoZG9tKSB7XG4gICAgY29uc3Qgb2xkVm5vZGUgPSBkb20udm5vZGUgYXMgVm5vZGVXaXRoRG9tO1xuICAgIGlmIChvbGRWbm9kZSAmJiBvbGRWbm9kZS5wcm9wc1tuYW1lXSkge1xuICAgICAgb2xkVm5vZGUucHJvcHNbbmFtZV0oZSwgb2xkVm5vZGUpO1xuXG4gICAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgdXBkYXRlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRvbSA9IGRvbS5wYXJlbnROb2RlIGFzIERvbUVsZW1lbnQ7XG4gIH1cblxuICBjdXJyZW50LmV2ZW50ID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gc2hhcmVkU2V0QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgbmV3Vm5vZGU6IFZub2RlV2l0aERvbSk6IHZvaWQgfCBib29sZWFuIHtcbiAgY29uc3QgbmV3Vm5vZGVEb20gPSBuZXdWbm9kZS5kb207XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGlmICghZXZlbnRMaXN0ZW5lck5hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgLy8gV2UgYXR0YWNoIHRoZSBkZWxlZ2F0ZWQgZXZlbnQgbGlzdGVuZXIgdG8gdGhlIG1haW4gdm5vZGUgZG9tIGVsZW1lbnQsIHdoaWNoIGlzIHRoZSByb290IG9mIHRoZSBjb21wb25lbnRcbiAgICAgIChtYWluVm5vZGUgYXMgVm5vZGVXaXRoRG9tKS5kb20uYWRkRXZlbnRMaXN0ZW5lcihuYW1lLnNsaWNlKDIpLCBldmVudExpc3RlbmVyKTtcbiAgICAgIGV2ZW50TGlzdGVuZXJOYW1lcy5hZGQobmFtZSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghbmV3Vm5vZGUuaXNTVkcgJiYgbmFtZSBpbiBuZXdWbm9kZURvbSkge1xuICAgIG5ld1Zub2RlRG9tW25hbWVdID0gdmFsdWU7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgIG5ld1Zub2RlRG9tLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICBuZXdWbm9kZURvbS5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBuZXdWbm9kZTogVm5vZGVXaXRoRG9tKTogdm9pZCB7XG4gIGlmICghcmVzZXJ2ZWRQcm9wcy5oYXMobmFtZSkpIHtcbiAgICBuZXdWbm9kZS5wcm9wc1tuYW1lXSA9IHZhbHVlO1xuICAgIHNoYXJlZFNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgbmV3Vm5vZGUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVBdHRyaWJ1dGVzKG5ld1Zub2RlOiBWbm9kZVdpdGhEb20sIG9sZFByb3BzOiBQcm9wZXJ0aWVzIHwgbnVsbCk6IHZvaWQge1xuICBjb25zdCB2bm9kZURvbSA9IG5ld1Zub2RlLmRvbTtcbiAgY29uc3Qgdm5vZGVQcm9wcyA9IG5ld1Zub2RlLnByb3BzO1xuICB2bm9kZURvbS52bm9kZSA9IG5ld1Zub2RlO1xuXG4gIGlmIChvbGRQcm9wcykge1xuICAgIGZvciAoY29uc3QgbmFtZSBpbiBvbGRQcm9wcykge1xuICAgICAgaWYgKG5hbWUgaW4gdm5vZGVQcm9wcyA9PT0gZmFsc2UgJiYgIWV2ZW50TGlzdGVuZXJOYW1lcy5oYXMobmFtZSkgJiYgIXJlc2VydmVkUHJvcHMuaGFzKG5hbWUpKSB7XG4gICAgICAgIGlmICghbmV3Vm5vZGUuaXNTVkcgJiYgbmFtZSBpbiB2bm9kZURvbSkge1xuICAgICAgICAgIHZub2RlRG9tW25hbWVdID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2bm9kZURvbS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IG5hbWUgaW4gdm5vZGVQcm9wcykge1xuICAgIGlmIChkaXJlY3RpdmVzW25hbWVdKSB7XG4gICAgICBpZiAoZGlyZWN0aXZlc1tuYW1lXSh2bm9kZVByb3BzW25hbWVdLCBuZXdWbm9kZSwgb2xkUHJvcHMpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghcmVzZXJ2ZWRQcm9wcy5oYXMobmFtZSkpIHtcbiAgICAgIHNoYXJlZFNldEF0dHJpYnV0ZShuYW1lLCB2bm9kZVByb3BzW25hbWVdLCBuZXdWbm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZzogc3RyaW5nLCBpc1NWRzogYm9vbGVhbik6IERvbUVsZW1lbnQge1xuICByZXR1cm4gaXNTVkdcbiAgICA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIHRhZylcbiAgICA6IChkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZykgYXMgRG9tRWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIGZsYXRUcmVlKG5ld1Zub2RlOiBWbm9kZVdpdGhEb20pIHtcbiAgY3VycmVudC52bm9kZSA9IG5ld1Zub2RlO1xuXG4gIGxldCBpID0gMDtcbiAgY29uc3Qgb3JpZ2luYWxDaGlsZHJlbiA9IG5ld1Zub2RlLmNoaWxkcmVuO1xuICBsZXQgY2hpbGRyZW4gPSBvcmlnaW5hbENoaWxkcmVuO1xuXG4gIGlmIChcInYtZm9yXCIgaW4gbmV3Vm5vZGUucHJvcHMpIHtcbiAgICBjaGlsZHJlbiA9IFtdO1xuICAgIGNvbnN0IHNldCA9IG5ld1Zub2RlLnByb3BzW1widi1mb3JcIl07XG4gICAgY29uc3QgbCA9IHNldC5sZW5ndGg7XG4gICAgY29uc3QgY2FsbGJhY2sgPSBuZXdWbm9kZS5jaGlsZHJlblswXTtcblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY29uc29sZS53YXJuKFwidi1mb3IgZGlyZWN0aXZlIG11c3QgaGF2ZSBhIGNhbGxiYWNrIGZ1bmN0aW9uIGFzIGNoaWxkcmVuXCIpO1xuICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjaGlsZHJlbltpXSA9IGNhbGxiYWNrKHNldFtpXSwgaSk7XG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKGkgPCBjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICBjb25zdCBuZXdDaGlsZCA9IGNoaWxkcmVuW2ldO1xuXG4gICAgaWYgKG5ld0NoaWxkID09IG51bGwpIHtcbiAgICAgIGlmIChjaGlsZHJlbiA9PT0gb3JpZ2luYWxDaGlsZHJlbikge1xuICAgICAgICBjaGlsZHJlbiA9IFsuLi5vcmlnaW5hbENoaWxkcmVuXTtcbiAgICAgIH1cbiAgICAgIGNoaWxkcmVuLnNwbGljZShpLCAxKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KG5ld0NoaWxkKSkge1xuICAgICAgaWYgKGNoaWxkcmVuID09PSBvcmlnaW5hbENoaWxkcmVuKSB7XG4gICAgICAgIGNoaWxkcmVuID0gWy4uLm9yaWdpbmFsQ2hpbGRyZW5dO1xuICAgICAgfVxuICAgICAgY2hpbGRyZW4uc3BsaWNlKGksIDEsIC4uLm5ld0NoaWxkKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChuZXdDaGlsZCBpbnN0YW5jZW9mIFZub2RlKSB7XG4gICAgICBuZXdDaGlsZC5wcm9wcyA9IG5ld0NoaWxkLnByb3BzIHx8IHt9O1xuICAgICAgbmV3Q2hpbGQuaXNTVkcgPSBuZXdWbm9kZS5pc1NWRyB8fCBuZXdDaGlsZC50YWcgPT09IFwic3ZnXCI7XG5cbiAgICAgIGlmICh0eXBlb2YgbmV3Q2hpbGQudGFnICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmIChjaGlsZHJlbiA9PT0gb3JpZ2luYWxDaGlsZHJlbikge1xuICAgICAgICAgIGNoaWxkcmVuID0gWy4uLm9yaWdpbmFsQ2hpbGRyZW5dO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gKGN1cnJlbnQuY29tcG9uZW50ID0gbmV3Q2hpbGQudGFnKTtcblxuICAgICAgICBjaGlsZHJlbltpXSA9IChpc1BPSk9Db21wb25lbnQoY29tcG9uZW50KSA/IGNvbXBvbmVudC52aWV3IDogY29tcG9uZW50KS5iaW5kKGNvbXBvbmVudCkoXG4gICAgICAgICAgbmV3Q2hpbGQucHJvcHMsXG4gICAgICAgICAgbmV3Q2hpbGQuY2hpbGRyZW5cbiAgICAgICAgKTtcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpKys7XG4gIH1cblxuICByZXR1cm4gY2hpbGRyZW47XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU5ld0VsZW1lbnQobmV3Q2hpbGQ6IFZub2RlV2l0aERvbSwgbmV3Vm5vZGU6IFZub2RlV2l0aERvbSwgb2xkQ2hpbGQ6IERvbUVsZW1lbnQgfCBudWxsKSB7XG4gIGNvbnN0IGRvbSA9IGNyZWF0ZUVsZW1lbnQobmV3Q2hpbGQudGFnLCBuZXdDaGlsZC5pc1NWRyBhcyBib29sZWFuKTtcbiAgaWYgKG9sZENoaWxkKSB7XG4gICAgbmV3Vm5vZGUuZG9tLnJlcGxhY2VDaGlsZChkb20sIG9sZENoaWxkKTtcbiAgfSBlbHNlIHtcbiAgICBuZXdWbm9kZS5kb20uYXBwZW5kQ2hpbGQoZG9tKTtcbiAgfVxuICBuZXdDaGlsZC5kb20gPSBkb207XG4gIHVwZGF0ZUF0dHJpYnV0ZXMobmV3Q2hpbGQsIG51bGwpO1xuICBpZiAoXCJ2LXRleHRcIiBpbiBuZXdDaGlsZC5wcm9wcykge1xuICAgIG5ld0NoaWxkLmRvbS50ZXh0Q29udGVudCA9IG5ld0NoaWxkLnByb3BzW1widi10ZXh0XCJdO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGNoaWxkcmVuID0gZmxhdFRyZWUobmV3Q2hpbGQpO1xuICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgbmV3Q2hpbGQuZG9tLnRleHRDb250ZW50ID0gXCJcIjtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGxldCBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChjaGlsZHJlbltpXSBpbnN0YW5jZW9mIFZub2RlID09PSBmYWxzZSkge1xuICAgICAgbmV3Q2hpbGQuZG9tLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNoaWxkcmVuW2ldKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY3JlYXRlTmV3RWxlbWVudChjaGlsZHJlbltpXSwgbmV3Q2hpbGQsIG51bGwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoS2V5ZWQobmV3Vm5vZGU6IFZub2RlV2l0aERvbSwgY2hpbGRyZW46IENoaWxkcmVuKSB7XG4gIGNvbnN0IG9sZFRyZWUgPSBbLi4uQXJyYXkuZnJvbShuZXdWbm9kZS5kb20uY2hpbGROb2RlcyldIGFzIHVua25vd24gYXMgRG9tRWxlbWVudFtdO1xuICBjb25zdCBjaGlsZE5vZGVzID0gbmV3Vm5vZGUuZG9tLmNoaWxkTm9kZXM7XG4gIGNvbnN0IG9sZEtleWVkTGlzdDogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gb2xkVHJlZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb25zdCBvbGRWbm9kZSA9IG9sZFRyZWVbaV0udm5vZGUgYXMgVm5vZGVXaXRoRG9tO1xuICAgIGlmICghb2xkVm5vZGUgfHwgXCJrZXlcIiBpbiBvbGRWbm9kZS5wcm9wcyA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBvbGRLZXllZExpc3Rbb2xkVm5vZGUucHJvcHMua2V5IGFzIHN0cmluZ10gPSBpO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb25zdCBuZXdDaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgIGNvbnN0IG9sZENoaWxkID0gb2xkVHJlZVtvbGRLZXllZExpc3RbbmV3Q2hpbGQucHJvcHMua2V5IGFzIHN0cmluZ11dO1xuXG4gICAgaWYgKCFvbGRDaGlsZCkge1xuICAgICAgY3JlYXRlTmV3RWxlbWVudChuZXdDaGlsZCwgbmV3Vm5vZGUsIGNoaWxkTm9kZXNbaV0gYXMgRG9tRWxlbWVudCB8IG51bGwpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbmV3Q2hpbGQuZG9tID0gb2xkQ2hpbGQ7XG4gICAgY29uc3QgY3VycmVudENoaWxkID0gY2hpbGROb2Rlc1tpXTtcbiAgICBpZiAoIWN1cnJlbnRDaGlsZCkge1xuICAgICAgbmV3Vm5vZGUuZG9tLmFwcGVuZENoaWxkKG9sZENoaWxkKTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGlsZCAhPT0gb2xkQ2hpbGQpIHtcbiAgICAgIG5ld1Zub2RlLmRvbS5yZXBsYWNlQ2hpbGQob2xkQ2hpbGQsIGN1cnJlbnRDaGlsZCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgXCJ2LWtlZXBcIiBpbiBuZXdDaGlsZC5wcm9wcyA9PT0gZmFsc2UgfHxcbiAgICAgICFvbGRDaGlsZC52bm9kZSB8fFxuICAgICAgb2xkQ2hpbGQucHJvcHNbXCJ2LWtlZXBcIl0gIT09IG5ld0NoaWxkLnByb3BzW1widi1rZWVwXCJdXG4gICAgKSB7XG4gICAgICB1cGRhdGVBdHRyaWJ1dGVzKG5ld0NoaWxkIGFzIFZub2RlV2l0aERvbSwgb2xkQ2hpbGQudm5vZGUucHJvcHMpO1xuXG4gICAgICBpZiAoXCJ2LXRleHRcIiBpbiBuZXdDaGlsZC5wcm9wcykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgIGlmIChvbGRDaGlsZC50ZXh0Q29udGVudCAhPSBuZXdDaGlsZC5wcm9wc1tcInYtdGV4dFwiXSkge1xuICAgICAgICAgIG9sZENoaWxkLnRleHRDb250ZW50ID0gbmV3Q2hpbGQucHJvcHNbXCJ2LXRleHRcIl07XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHBhdGNoKG5ld0NoaWxkIGFzIFZub2RlV2l0aERvbSk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChsZXQgaSA9IGNoaWxkcmVuLmxlbmd0aCwgbCA9IGNoaWxkTm9kZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgY2hpbGROb2Rlc1tjaGlsZE5vZGVzLmxlbmd0aCAtIDFdPy5yZW1vdmUoKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZnVuY3Rpb24gcGF0Y2gobmV3Vm5vZGU6IFZub2RlV2l0aERvbSk6IHZvaWQge1xuICBjb25zdCBjaGlsZHJlbiA9IGZsYXRUcmVlKG5ld1Zub2RlKTtcblxuICBjb25zdCBkb20gPSBuZXdWbm9kZS5kb207XG5cbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChkb20uY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIGRvbS50ZXh0Q29udGVudCA9IFwiXCI7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG9sZERvbUNoaWxkcmVuID0gZG9tLmNoaWxkTm9kZXMgYXMgdW5rbm93biBhcyBEb21FbGVtZW50W107XG4gIGNvbnN0IG9sZENoaWxkcmVuTGVuZ3RoID0gb2xkRG9tQ2hpbGRyZW4ubGVuZ3RoO1xuICBjb25zdCBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgaWYgKG9sZENoaWxkcmVuTGVuZ3RoID09PSAwKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoY2hpbGRyZW5baV0gaW5zdGFuY2VvZiBWbm9kZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZG9tLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNoaWxkcmVuW2ldKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY3JlYXRlTmV3RWxlbWVudChjaGlsZHJlbltpXSwgbmV3Vm5vZGUsIG51bGwpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgc2hvdWxkUGF0Y2hLZXllZCA9IHRydWU7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgIGlmIChjaGlsZHJlbltpXSBpbnN0YW5jZW9mIFZub2RlID09PSBmYWxzZSB8fCAhKFwia2V5XCIgaW4gY2hpbGRyZW5baV0ucHJvcHMpKSB7XG4gICAgICBzaG91bGRQYXRjaEtleWVkID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHNob3VsZFBhdGNoS2V5ZWQpIHtcbiAgICBwYXRjaEtleWVkKG5ld1Zub2RlLCBjaGlsZHJlbik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbmV3Q2hpbGQgPSBjaGlsZHJlbltpXSBhcyBWbm9kZVdpdGhEb207XG4gICAgY29uc3QgaXNUZXh0ID0gbmV3Q2hpbGQgaW5zdGFuY2VvZiBWbm9kZSA9PT0gZmFsc2U7XG4gICAgY29uc3Qgb2xkQ2hpbGQgPSBvbGREb21DaGlsZHJlbltpXTtcblxuICAgIGlmICghb2xkQ2hpbGQpIHtcbiAgICAgIGlmIChpc1RleHQpIHtcbiAgICAgICAgbmV3Vm5vZGUuZG9tLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5ld0NoaWxkIGFzIHVua25vd24gYXMgc3RyaW5nKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjcmVhdGVOZXdFbGVtZW50KG5ld0NoaWxkIGFzIFZub2RlV2l0aERvbSwgbmV3Vm5vZGUsIG51bGwpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGlzVGV4dCkge1xuICAgICAgaWYgKG9sZENoaWxkLm5vZGVUeXBlICE9PSAzKSB7XG4gICAgICAgIG5ld1Zub2RlLmRvbS5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobmV3Q2hpbGQgYXMgdW5rbm93biBhcyBzdHJpbmcpLCBvbGRDaGlsZCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICBpZiAob2xkQ2hpbGQubm9kZVZhbHVlICE9IChuZXdDaGlsZCBhcyB1bmtub3duIGFzIHN0cmluZykpIHtcbiAgICAgICAgb2xkQ2hpbGQubm9kZVZhbHVlID0gbmV3Q2hpbGQgYXMgdW5rbm93biBhcyBzdHJpbmc7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoXCJ2LWtlZXBcIiBpbiBuZXdDaGlsZC5wcm9wcykge1xuICAgICAgaWYgKG9sZENoaWxkLnZub2RlICYmIG9sZENoaWxkLnZub2RlLnByb3BzW1widi1rZWVwXCJdID09PSBuZXdDaGlsZC5wcm9wc1tcInYta2VlcFwiXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV4dE9sZENoaWxkID0gb2xkRG9tQ2hpbGRyZW5baSArIDFdO1xuICAgICAgaWYgKG5leHRPbGRDaGlsZCAmJiBuZXh0T2xkQ2hpbGQudm5vZGUgJiYgbmV4dE9sZENoaWxkLnZub2RlLnByb3BzW1widi1rZWVwXCJdID09PSBuZXdDaGlsZC5wcm9wc1tcInYta2VlcFwiXSkge1xuICAgICAgICBvbGRDaGlsZC5yZW1vdmUoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0NoaWxkLnRhZyAhPT0gb2xkQ2hpbGQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY3JlYXRlTmV3RWxlbWVudChuZXdDaGlsZCwgbmV3Vm5vZGUsIG9sZENoaWxkKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIG5ld0NoaWxkLmRvbSA9IG9sZENoaWxkO1xuICAgIHVwZGF0ZUF0dHJpYnV0ZXMobmV3Q2hpbGQsIG9sZENoaWxkLnZub2RlID8gb2xkQ2hpbGQudm5vZGUucHJvcHMgOiBudWxsKTtcbiAgICBpZiAoXCJ2LXRleHRcIiBpbiBuZXdDaGlsZC5wcm9wcykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuICAgICAgaWYgKG5ld0NoaWxkLmRvbS50ZXh0Q29udGVudCAhPSBuZXdDaGlsZC5wcm9wc1tcInYtdGV4dFwiXSkge1xuICAgICAgICBuZXdDaGlsZC5kb20udGV4dENvbnRlbnQgPSBuZXdDaGlsZC5wcm9wc1tcInYtdGV4dFwiXTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBwYXRjaChuZXdDaGlsZCk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gY2hpbGRyZW5MZW5ndGgsIGwgPSBvbGREb21DaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvbGREb21DaGlsZHJlbltpXT8ucmVtb3ZlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZub2RlKHZub2RlOiBWbm9kZVdpdGhEb20pOiBzdHJpbmcgfCB2b2lkIHtcbiAgY2FsbFNldChvbkNsZWFudXBTZXQpO1xuICB2bm9kZS5wcm9wcyA9IHZub2RlLnByb3BzIHx8IHt9O1xuICBwYXRjaCh2bm9kZSk7XG4gIGNhbGxTZXQoaXNNb3VudGVkID8gb25VcGRhdGVTZXQgOiBvbk1vdW50U2V0KTtcbiAgaXNNb3VudGVkID0gdHJ1ZTtcbiAgY3VycmVudC52bm9kZSA9IG51bGw7XG4gIGN1cnJlbnQuY29tcG9uZW50ID0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZSgpOiBzdHJpbmcge1xuICBpZiAobWFpblZub2RlKSB7XG4gICAgbWFpblZub2RlLmNoaWxkcmVuID0gW21haW5Db21wb25lbnRdO1xuICAgIHVwZGF0ZVZub2RlKG1haW5Wbm9kZSBhcyBWbm9kZVdpdGhEb20pO1xuICAgIGlmIChpc05vZGVKcykge1xuICAgICAgcmV0dXJuIG1haW5Wbm9kZS5kb20uaW5uZXJIVE1MO1xuICAgIH1cbiAgfVxuICByZXR1cm4gXCJcIjtcbn1cblxubGV0IGRlYm91bmNlZFVwZGF0ZVRpbWVvdXQ6IGFueTtcbmNvbnN0IGRlYm91bmNlZFVwZGF0ZU1ldGhvZCA9IGlzTm9kZUpzID8gdXBkYXRlIDogKCkgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWJvdW5jZWRVcGRhdGUodGltZW91dCA9IDQyKSB7XG4gIGlmIChjdXJyZW50LmV2ZW50KSB7XG4gICAgY3VycmVudC5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG4gIGNsZWFyVGltZW91dChkZWJvdW5jZWRVcGRhdGVUaW1lb3V0KTtcbiAgZGVib3VuY2VkVXBkYXRlVGltZW91dCA9IHNldFRpbWVvdXQoZGVib3VuY2VkVXBkYXRlTWV0aG9kLCB0aW1lb3V0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnQoKSB7XG4gIGlmIChtYWluVm5vZGUpIHtcbiAgICBtYWluQ29tcG9uZW50ID0gdigoKSA9PiBudWxsLCB7fSkgYXMgVm5vZGVDb21wb25lbnRJbnRlcmZhY2U7XG4gICAgY29uc3QgcmVzdWx0ID0gdXBkYXRlKCk7XG4gICAgY2FsbFNldChvblVubW91bnRTZXQpO1xuICAgIGZvciAoY29uc3QgbmFtZSBpbiBldmVudExpc3RlbmVyTmFtZXMpIHtcbiAgICAgIG1haW5Wbm9kZS5kb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLnNsaWNlKDIpLnRvTG93ZXJDYXNlKCksIGV2ZW50TGlzdGVuZXIpO1xuICAgICAgUmVmbGVjdC5kZWxldGVQcm9wZXJ0eShldmVudExpc3RlbmVyTmFtZXMsIG5hbWUpO1xuICAgIH1cblxuICAgIG1haW5Db21wb25lbnQgPSBudWxsO1xuICAgIG1haW5Wbm9kZSA9IG51bGw7XG4gICAgaXNNb3VudGVkID0gZmFsc2U7XG4gICAgY3VycmVudC52bm9kZSA9IG51bGw7XG4gICAgY3VycmVudC5jb21wb25lbnQgPSBudWxsO1xuICAgIGN1cnJlbnQuZXZlbnQgPSBudWxsO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdW50KGRvbTogc3RyaW5nIHwgRG9tRWxlbWVudCwgY29tcG9uZW50OiBWYWx5cmlhbkNvbXBvbmVudCB8IFZub2RlQ29tcG9uZW50SW50ZXJmYWNlIHwgYW55KSB7XG4gIGNvbnN0IGNvbnRhaW5lciA9XG4gICAgdHlwZW9mIGRvbSA9PT0gXCJzdHJpbmdcIiA/IChpc05vZGVKcyA/IGNyZWF0ZUVsZW1lbnQoZG9tLCBkb20gPT09IFwic3ZnXCIpIDogZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihkb20pKSA6IGRvbTtcblxuICBpZiAoaXNDb21wb25lbnQoY29tcG9uZW50KSkge1xuICAgIG1haW5Db21wb25lbnQgPSB2KGNvbXBvbmVudCwge30sIFtdKSBhcyBWbm9kZUNvbXBvbmVudEludGVyZmFjZTtcbiAgfSBlbHNlIGlmIChpc1Zub2RlQ29tcG9uZW50KGNvbXBvbmVudCkpIHtcbiAgICBtYWluQ29tcG9uZW50ID0gY29tcG9uZW50O1xuICB9IGVsc2Uge1xuICAgIG1haW5Db21wb25lbnQgPSB2KCgpID0+IGNvbXBvbmVudCwge30sIFtdKSBhcyBWbm9kZUNvbXBvbmVudEludGVyZmFjZTtcbiAgfVxuXG4gIG1haW5Wbm9kZSA9IGhpZHJhdGVEb21Ub1Zub2RlKGNvbnRhaW5lcikgYXMgVm5vZGVXaXRo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
|
package/dist/index.mjs
CHANGED
|
@@ -143,15 +143,15 @@ var directives = {
|
|
|
143
143
|
handler = () => model[property] = !model[property];
|
|
144
144
|
value = model[property];
|
|
145
145
|
}
|
|
146
|
-
|
|
146
|
+
setAttribute("checked", value, vnode);
|
|
147
147
|
break;
|
|
148
148
|
}
|
|
149
149
|
case "radio": {
|
|
150
|
-
|
|
150
|
+
setAttribute("checked", model[property] === vnode.dom.value, vnode);
|
|
151
151
|
break;
|
|
152
152
|
}
|
|
153
153
|
default: {
|
|
154
|
-
|
|
154
|
+
setAttribute("value", model[property], vnode);
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
} else if (vnode.tag === "select") {
|
|
@@ -189,7 +189,7 @@ var directives = {
|
|
|
189
189
|
vnode.children = [model[property]];
|
|
190
190
|
}
|
|
191
191
|
const prevHandler = vnode.props[event];
|
|
192
|
-
|
|
192
|
+
setAttribute(
|
|
193
193
|
event,
|
|
194
194
|
(e) => {
|
|
195
195
|
handler(e);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../lib/index.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable */\ndeclare global {\n var document: Document;\n namespace JSX {\n interface IntrinsicElements extends DefaultRecord {}\n type Element = ReturnType<\n typeof v | ((...args: any) => string | number | null | undefined | boolean | Promise<any>)\n >;\n type ComponentReturnType = string | number | null | undefined | boolean | Element | Element[];\n }\n}\n\ninterface DefaultRecord extends Record<string | number | symbol, any> {}\n\nexport interface Properties extends DefaultRecord {\n key?: string | number;\n}\n\nexport interface DomElement extends Element, DefaultRecord {}\n\nexport interface Component extends DefaultRecord {\n (props: Properties, children: any[]): Vnode | any;\n}\n\nexport interface POJOComponent extends DefaultRecord {\n view: Component;\n}\n\nexport type ValyrianComponent = Component | POJOComponent;\n\nexport interface VnodeComponentInterface extends Vnode {\n tag: ValyrianComponent;\n}\n\nexport interface Children extends Array<Vnode | VnodeComponentInterface | ValyrianComponent | any> {}\n\nexport interface Directive {\n (value: any, vnode: VnodeWithDom, oldProps: Properties | null): false | void | any;\n}\n\nexport const isNodeJs = Boolean(typeof process !== \"undefined\" && process.versions && process.versions.node);\n\nexport class Vnode {\n constructor(\n public tag: string | Component | POJOComponent,\n public props: null | Properties,\n public children: Children,\n public dom?: DomElement,\n public isSVG?: boolean\n ) {}\n}\n\nexport interface VnodeWithDom extends Vnode {\n tag: string;\n dom: DomElement;\n props: Properties;\n}\n\nexport const isPOJOComponent = (component: unknown): component is POJOComponent =>\n Boolean(component && typeof component === \"object\" && \"view\" in component);\n\nexport const isComponent = (component: unknown): component is Component =>\n Boolean(typeof component === \"function\" || isPOJOComponent(component));\nexport const isVnode = (object?: unknown): object is Vnode => object instanceof Vnode;\n\nexport const isVnodeComponent = (object?: unknown): object is VnodeComponentInterface => {\n return isVnode(object) && isComponent(object.tag);\n};\n\nexport function v(tagOrComponent: string | ValyrianComponent, props: Properties | null, ...children: Children) {\n return new Vnode(tagOrComponent, props, children);\n}\n\nv.fragment = (_: Properties, ...children: Children) => children;\n\nexport function hidrateDomToVnode(dom: any): VnodeWithDom | void {\n if (dom.nodeType === 3) {\n return dom.nodeValue;\n }\n\n if (dom.nodeType === 1) {\n const tag = dom.nodeName.toLowerCase();\n const props = {} as Properties;\n const children = [] as Children;\n\n for (let i = 0, l = dom.childNodes.length; i < l; i++) {\n const childDom = dom.childNodes[i];\n if (childDom.nodeType === 3) {\n children.push(childDom.nodeValue);\n } else if (childDom.nodeType === 1) {\n const childVnode = hidrateDomToVnode(childDom);\n children.push(childVnode);\n }\n }\n\n const attributes = dom.attributes;\n for (let i = 0, l = attributes.length; i < l; i++) {\n const attr = attributes[i];\n props[attr.nodeName] = attr.nodeValue;\n }\n\n const vnode = new Vnode(tag, props, children);\n vnode.dom = dom;\n dom.vnode = vnode;\n vnode.isSVG = tag === \"svg\";\n return vnode as VnodeWithDom;\n }\n}\n\nexport function trust(htmlString: string) {\n const div = document.createElement(\"div\");\n div.innerHTML = htmlString.trim();\n return Array.from(div.childNodes).map(hidrateDomToVnode);\n}\n\nlet mainComponent: VnodeComponentInterface | null = null;\nlet mainVnode: VnodeWithDom | null = null;\nlet isMounted = false;\n\nexport const current = {\n vnode: null as Vnode | null,\n component: null as ValyrianComponent | null,\n event: null as Event | null\n};\n\nexport const reservedProps = new Set<string>([\n \"key\",\n \"state\",\n \"v-keep\",\n \"v-text\",\n \"v-if\",\n \"v-for\",\n \"v-show\",\n \"v-class\",\n \"v-html\",\n \"v-model\",\n \"v-create\",\n \"v-update\",\n \"v-cleanup\"\n]);\n\nconst onCleanupSet = new Set<Function>();\nconst onMountSet = new Set<Function>();\nconst onUpdateSet = new Set<Function>();\nconst onUnmountSet = new Set<Function>();\nexport const onMount = (callback: Function) => !isMounted && onMountSet.add(callback);\nexport const onUpdate = (callback: Function) => onUpdateSet.add(callback);\nexport const onCleanup = (callback: Function) => onCleanupSet.add(callback);\nexport const onUnmount = (callback: Function) => !isMounted && onUnmountSet.add(callback);\nconst callSet = (set: Set<Function>) => {\n for (const callback of set) {\n callback();\n }\n set.clear();\n};\n\nexport const directives: Record<string, Directive> = {\n \"v-if\": (value, vnode) => {\n if (!Boolean(value)) {\n const parentNode = vnode.dom?.parentNode;\n if (parentNode) {\n parentNode.replaceChild(document.createTextNode(\"\"), vnode.dom);\n }\n\n return false;\n }\n },\n\n \"v-show\": (value, vnode) => {\n const bool = Boolean(value);\n (\n vnode.dom as unknown as {\n style: { display: string };\n }\n ).style.display = bool ? \"\" : \"none\";\n },\n\n \"v-html\": (value, vnode) => {\n vnode.children = trust(value as string);\n },\n\n // The \"v-model\" directive binds the value of an input element to a model property\n \"v-model\": (model, vnode) => {\n // eslint-disable-next-line prefer-const\n if (\"name\" in vnode.props === false) {\n return;\n }\n\n let value;\n const property = vnode.props.name;\n let event = \"oninput\";\n\n // This function updates the model property when the input element's value changes\n let handler = (e: Event) => (model[property] = (e.target as DomElement & Record<string, any>).value);\n if (vnode.tag === \"input\") {\n // Depending on the type of input element, use a different handler function\n switch (vnode.props.type) {\n case \"checkbox\": {\n if (Array.isArray(model[property])) {\n // If the model property is an array, add or remove the value from the array when the checkbox is checked or unchecked\n handler = (e: Event) => {\n const val = (e.target as DomElement & Record<string, any>).value;\n const idx = model[property].indexOf(val);\n if (idx === -1) {\n model[property].push(val);\n } else {\n model[property].splice(idx, 1);\n }\n };\n // If the value is in the array, set the checkbox to be checked\n value = model[property].indexOf(vnode.dom.value) !== -1;\n } else if (\"value\" in vnode.props) {\n // If the input element has a \"value\" attribute, use it to determine the checked state\n handler = () => {\n if (model[property] === vnode.props.value) {\n model[property] = null;\n } else {\n model[property] = vnode.props.value;\n }\n };\n value = model[property] === vnode.props.value;\n } else {\n // If there is no \"value\" attribute, use a boolean value for the model property\n handler = () => (model[property] = !model[property]);\n value = model[property];\n }\n // Set the \"checked\" attribute on the input element\n // eslint-disable-next-line no-use-before-define\n sharedSetAttribute(\"checked\", value, vnode);\n break;\n }\n case \"radio\": {\n // If the element is a radio button, set the \"checked\" attribute based on the value of the model property\n // eslint-disable-next-line no-use-before-define\n sharedSetAttribute(\"checked\", model[property] === vnode.dom.value, vnode);\n break;\n }\n default: {\n // For all other input types, set the \"value\" attribute based on the value of the model property\n // eslint-disable-next-line no-use-before-define\n sharedSetAttribute(\"value\", model[property], vnode);\n }\n }\n } else if (vnode.tag === \"select\") {\n // If the element is a select element, use the \"click\" event by default\n event = \"onclick\";\n if (vnode.props.multiple) {\n // If the select element allows multiple selections, update the model property with an array of selected values\n handler = (e: Event & Record<string, any>) => {\n const val = (e.target as DomElement & Record<string, any>).value;\n if (e.ctrlKey) {\n // If the Ctrl key is pressed, add or remove the value from the array\n const idx = model[property].indexOf(val);\n if (idx === -1) {\n model[property].push(val);\n } else {\n model[property].splice(idx, 1);\n }\n } else {\n // If the Ctrl key is not pressed, set the model property to an array with the selected value\n model[property].splice(0, model[property].length);\n model[property].push(val);\n }\n };\n // Set the \"selected\" attribute on the options based on whether they are in the model property array\n vnode.children.forEach((child: VnodeWithDom) => {\n if (child.tag === \"option\") {\n const value = \"value\" in child.props ? child.props.value : child.children.join(\"\").trim();\n child.props.selected = model[property].indexOf(value) !== -1;\n }\n });\n } else {\n // If the select element does not allow multiple selections, set the \"selected\" attribute on the options based on the value of the model property\n vnode.children.forEach((child: VnodeWithDom) => {\n if (child.tag === \"option\") {\n const value = \"value\" in child.props ? child.props.value : child.children.join(\"\").trim();\n child.props.selected = value === model[property];\n }\n });\n }\n } else if (vnode.tag === \"textarea\") {\n // Set the textarea's content to the value of the model property\n vnode.children = [model[property]];\n }\n\n // We assume that the prev handler if any will not be changed by the user across patchs\n const prevHandler = vnode.props[event];\n\n // Set the event handler on the element\n // eslint-disable-next-line no-use-before-define\n sharedSetAttribute(\n event,\n (e: Event) => {\n handler(e);\n\n // If the previous handler is defined, call it after the model has been updated\n if (prevHandler) {\n prevHandler(e);\n }\n },\n vnode\n );\n },\n\n \"v-create\": (callback, vnode, oldProps) => {\n if (!oldProps) {\n const cleanup = callback(vnode);\n\n if (typeof cleanup === \"function\") {\n onCleanup(cleanup);\n }\n }\n },\n\n \"v-update\": (callback, vnode, oldProps) => {\n if (oldProps) {\n const cleanup = callback(vnode, oldProps);\n\n if (typeof cleanup === \"function\") {\n onCleanup(cleanup);\n }\n }\n },\n\n \"v-cleanup\": (callback, vnode) => {\n onCleanup(() => callback(vnode));\n },\n\n \"v-class\": (value, vnode) => {\n if (typeof value === \"string\") {\n vnode.dom.className = value;\n } else if (Array.isArray(value)) {\n vnode.dom.className = value.join(\" \");\n } else if (typeof value === \"object\") {\n const classList = vnode.dom.classList;\n for (const name in value) {\n const val = typeof value[name] === \"function\" ? (value[name] as Function)() : value[name];\n classList.toggle(name, val);\n }\n }\n },\n\n // Frequent used properties\n class(value, vnode) {\n if (vnode.dom.className !== value) {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"class\", value);\n return;\n }\n vnode.dom.className = value;\n }\n },\n\n className(value, vnode) {\n directives.class(value, vnode, null);\n },\n\n id: (value, vnode) => {\n if (vnode.dom.id !== value) {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"id\", value);\n return;\n }\n vnode.dom.id = value;\n }\n },\n\n style: (value, vnode) => {\n if (typeof value === \"string\") {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"style\", value);\n return;\n }\n vnode.dom.style = value;\n } else if (typeof value === \"object\") {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"style\", \"\");\n } else {\n vnode.dom.style = \"\";\n }\n const domStyle = vnode.dom.style;\n for (const name in value) {\n domStyle[name] = value[name];\n }\n }\n }\n};\n\nexport function directive(name: string, directive: Directive) {\n const directiveName = `v-${name}`;\n directives[directiveName] = directive;\n reservedProps.add(directiveName);\n}\n\nexport function setPropNameReserved(name: string) {\n reservedProps.add(name);\n}\n\nconst eventListenerNames = new Set<string>();\n\nfunction eventListener(e: Event) {\n current.event = e;\n let dom = e.target as DomElement;\n const name = `on${e.type}`;\n\n while (dom) {\n const oldVnode = dom.vnode as VnodeWithDom;\n if (oldVnode && oldVnode.props[name]) {\n oldVnode.props[name](e, oldVnode);\n\n if (!e.defaultPrevented) {\n // eslint-disable-next-line no-use-before-define\n update();\n }\n return;\n }\n dom = dom.parentNode as DomElement;\n }\n\n current.event = null;\n}\n\nfunction sharedSetAttribute(name: string, value: any, newVnode: VnodeWithDom): void | boolean {\n const newVnodeDom = newVnode.dom;\n if (typeof value === \"function\") {\n if (!eventListenerNames.has(name)) {\n // We attach the delegated event listener to the main vnode dom element, which is the root of the component\n (mainVnode as VnodeWithDom).dom.addEventListener(name.slice(2), eventListener);\n eventListenerNames.add(name);\n }\n return;\n }\n\n if (!newVnode.isSVG && name in newVnodeDom) {\n newVnodeDom[name] = value;\n return;\n }\n\n if (value === false) {\n newVnodeDom.removeAttribute(name);\n } else {\n newVnodeDom.setAttribute(name, value);\n }\n}\n\nexport function setAttribute(name: string, value: any, newVnode: VnodeWithDom): void {\n if (!reservedProps.has(name)) {\n newVnode.props[name] = value;\n sharedSetAttribute(name, value, newVnode);\n }\n}\n\nexport function updateAttributes(newVnode: VnodeWithDom, oldProps: Properties | null): void {\n const vnodeDom = newVnode.dom;\n const vnodeProps = newVnode.props;\n vnodeDom.vnode = newVnode;\n\n if (oldProps) {\n for (const name in oldProps) {\n if (name in vnodeProps === false && !eventListenerNames.has(name) && !reservedProps.has(name)) {\n if (!newVnode.isSVG && name in vnodeDom) {\n vnodeDom[name] = null;\n } else {\n vnodeDom.removeAttribute(name);\n }\n }\n }\n }\n\n for (const name in vnodeProps) {\n if (directives[name]) {\n if (directives[name](vnodeProps[name], newVnode, oldProps) === false) {\n break;\n }\n continue;\n }\n\n if (!reservedProps.has(name)) {\n sharedSetAttribute(name, vnodeProps[name], newVnode);\n }\n }\n}\n\nexport function createElement(tag: string, isSVG: boolean): DomElement {\n return isSVG\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", tag)\n : (document.createElement(tag) as DomElement);\n}\n\nfunction flatTree(newVnode: VnodeWithDom) {\n current.vnode = newVnode;\n\n let i = 0;\n const originalChildren = newVnode.children;\n let children = originalChildren;\n\n if (\"v-for\" in newVnode.props) {\n children = [];\n const set = newVnode.props[\"v-for\"];\n const l = set.length;\n const callback = newVnode.children[0];\n\n if (typeof callback !== \"function\") {\n console.warn(\"v-for directive must have a callback function as children\");\n return children;\n }\n\n for (let i = 0; i < l; i++) {\n children[i] = callback(set[i], i);\n }\n }\n\n while (i < children.length) {\n const newChild = children[i];\n\n if (newChild == null) {\n if (children === originalChildren) {\n children = [...originalChildren];\n }\n children.splice(i, 1);\n continue;\n }\n\n if (Array.isArray(newChild)) {\n if (children === originalChildren) {\n children = [...originalChildren];\n }\n children.splice(i, 1, ...newChild);\n continue;\n }\n\n if (newChild instanceof Vnode) {\n newChild.props = newChild.props || {};\n newChild.isSVG = newVnode.isSVG || newChild.tag === \"svg\";\n\n if (typeof newChild.tag !== \"string\") {\n if (children === originalChildren) {\n children = [...originalChildren];\n }\n\n const component = (current.component = newChild.tag);\n\n children[i] = (isPOJOComponent(component) ? component.view : component).bind(component)(\n newChild.props,\n newChild.children\n );\n\n continue;\n }\n }\n\n i++;\n }\n\n return children;\n}\n\nfunction createNewElement(newChild: VnodeWithDom, newVnode: VnodeWithDom, oldChild: DomElement | null) {\n const dom = createElement(newChild.tag, newChild.isSVG as boolean);\n if (oldChild) {\n newVnode.dom.replaceChild(dom, oldChild);\n } else {\n newVnode.dom.appendChild(dom);\n }\n newChild.dom = dom;\n updateAttributes(newChild, null);\n if (\"v-text\" in newChild.props) {\n newChild.dom.textContent = newChild.props[\"v-text\"];\n return;\n }\n\n const children = flatTree(newChild);\n if (children.length === 0) {\n newChild.dom.textContent = \"\";\n return;\n }\n\n for (let i = 0, l = children.length; i < l; i++) {\n if (children[i] instanceof Vnode === false) {\n newChild.dom.appendChild(document.createTextNode(children[i]));\n continue;\n }\n createNewElement(children[i], newChild, null);\n }\n}\n\nfunction patchKeyed(newVnode: VnodeWithDom, children: Children) {\n const oldTree = [...Array.from(newVnode.dom.childNodes)] as unknown as DomElement[];\n const childNodes = newVnode.dom.childNodes;\n const oldKeyedList: Record<string, number> = {};\n\n for (let i = 0, l = oldTree.length; i < l; i++) {\n const oldVnode = oldTree[i].vnode as VnodeWithDom;\n if (!oldVnode || \"key\" in oldVnode.props === false) {\n continue;\n }\n oldKeyedList[oldVnode.props.key as string] = i;\n }\n\n for (let i = 0, l = children.length; i < l; i++) {\n const newChild = children[i];\n const oldChild = oldTree[oldKeyedList[newChild.props.key as string]];\n\n if (!oldChild) {\n createNewElement(newChild, newVnode, childNodes[i] as DomElement | null);\n continue;\n }\n\n newChild.dom = oldChild;\n const currentChild = childNodes[i];\n if (!currentChild) {\n newVnode.dom.appendChild(oldChild);\n } else if (currentChild !== oldChild) {\n newVnode.dom.replaceChild(oldChild, currentChild);\n }\n\n if (\n \"v-keep\" in newChild.props === false ||\n !oldChild.vnode ||\n oldChild.props[\"v-keep\"] !== newChild.props[\"v-keep\"]\n ) {\n updateAttributes(newChild as VnodeWithDom, oldChild.vnode.props);\n\n if (\"v-text\" in newChild.props) {\n // eslint-disable-next-line eqeqeq\n if (oldChild.textContent != newChild.props[\"v-text\"]) {\n oldChild.textContent = newChild.props[\"v-text\"];\n }\n continue;\n }\n // eslint-disable-next-line no-use-before-define\n patch(newChild as VnodeWithDom);\n }\n }\n\n for (let i = children.length, l = childNodes.length; i < l; i++) {\n childNodes[childNodes.length - 1]?.remove();\n }\n}\n\n// eslint-disable-next-line complexity\nfunction patch(newVnode: VnodeWithDom): void {\n const children = flatTree(newVnode);\n\n const dom = newVnode.dom;\n\n if (children.length === 0) {\n if (dom.childNodes.length) {\n dom.textContent = \"\";\n }\n return;\n }\n\n const oldDomChildren = dom.childNodes as unknown as DomElement[];\n const oldChildrenLength = oldDomChildren.length;\n const childrenLength = children.length;\n if (oldChildrenLength === 0) {\n for (let i = 0; i < childrenLength; i++) {\n if (children[i] instanceof Vnode === false) {\n dom.appendChild(document.createTextNode(children[i]));\n continue;\n }\n createNewElement(children[i], newVnode, null);\n }\n return;\n }\n\n let shouldPatchKeyed = true;\n for (let i = 0; i < childrenLength; i++) {\n if (children[i] instanceof Vnode === false || !(\"key\" in children[i].props)) {\n shouldPatchKeyed = false;\n break;\n }\n }\n if (shouldPatchKeyed) {\n patchKeyed(newVnode, children);\n return;\n }\n\n for (let i = 0; i < childrenLength; i++) {\n const newChild = children[i] as VnodeWithDom;\n const isText = newChild instanceof Vnode === false;\n const oldChild = oldDomChildren[i];\n\n if (!oldChild) {\n if (isText) {\n newVnode.dom.appendChild(document.createTextNode(newChild as unknown as string));\n continue;\n }\n\n createNewElement(newChild as VnodeWithDom, newVnode, null);\n continue;\n }\n\n if (isText) {\n if (oldChild.nodeType !== 3) {\n newVnode.dom.replaceChild(document.createTextNode(newChild as unknown as string), oldChild);\n continue;\n }\n\n // eslint-disable-next-line eqeqeq\n if (oldChild.nodeValue != (newChild as unknown as string)) {\n oldChild.nodeValue = newChild as unknown as string;\n }\n continue;\n }\n\n if (\"v-keep\" in newChild.props) {\n if (oldChild.vnode && oldChild.vnode.props[\"v-keep\"] === newChild.props[\"v-keep\"]) {\n continue;\n }\n\n const nextOldChild = oldDomChildren[i + 1];\n if (nextOldChild && nextOldChild.vnode && nextOldChild.vnode.props[\"v-keep\"] === newChild.props[\"v-keep\"]) {\n oldChild.remove();\n continue;\n }\n }\n\n if (newChild.tag !== oldChild.nodeName.toLowerCase()) {\n createNewElement(newChild, newVnode, oldChild);\n continue;\n }\n\n newChild.dom = oldChild;\n updateAttributes(newChild, oldChild.vnode ? oldChild.vnode.props : null);\n if (\"v-text\" in newChild.props) {\n // eslint-disable-next-line eqeqeq\n if (newChild.dom.textContent != newChild.props[\"v-text\"]) {\n newChild.dom.textContent = newChild.props[\"v-text\"];\n }\n continue;\n }\n patch(newChild);\n }\n\n for (let i = childrenLength, l = oldDomChildren.length; i < l; i++) {\n oldDomChildren[i]?.remove();\n }\n}\n\nexport function updateVnode(vnode: VnodeWithDom): string | void {\n callSet(onCleanupSet);\n vnode.props = vnode.props || {};\n patch(vnode);\n callSet(isMounted ? onUpdateSet : onMountSet);\n isMounted = true;\n current.vnode = null;\n current.component = null;\n}\n\nexport function update(): string {\n if (mainVnode) {\n mainVnode.children = [mainComponent];\n updateVnode(mainVnode as VnodeWithDom);\n if (isNodeJs) {\n return mainVnode.dom.innerHTML;\n }\n }\n return \"\";\n}\n\nlet debouncedUpdateTimeout: any;\nconst debouncedUpdateMethod = isNodeJs ? update : () => requestAnimationFrame(update);\n\nexport function debouncedUpdate(timeout = 42) {\n if (current.event) {\n current.event.preventDefault();\n }\n clearTimeout(debouncedUpdateTimeout);\n debouncedUpdateTimeout = setTimeout(debouncedUpdateMethod, timeout);\n}\n\nexport function unmount() {\n if (mainVnode) {\n mainComponent = v(() => null, {}) as VnodeComponentInterface;\n const result = update();\n callSet(onUnmountSet);\n for (const name in eventListenerNames) {\n mainVnode.dom.removeEventListener(name.slice(2).toLowerCase(), eventListener);\n Reflect.deleteProperty(eventListenerNames, name);\n }\n\n mainComponent = null;\n mainVnode = null;\n isMounted = false;\n current.vnode = null;\n current.component = null;\n current.event = null;\n return result;\n }\n\n return \"\";\n}\n\nexport function mount(dom: string | DomElement, component: ValyrianComponent | VnodeComponentInterface | any) {\n const container =\n typeof dom === \"string\" ? (isNodeJs ? createElement(dom, dom === \"svg\") : document.querySelector(dom)) : dom;\n\n if (isComponent(component)) {\n mainComponent = v(component, {}, []) as VnodeComponentInterface;\n } else if (isVnodeComponent(component)) {\n mainComponent = component;\n } else {\n mainComponent = v(() => component, {}, []) as VnodeComponentInterface;\n }\n\n mainVnode = hidrateDomToVnode(container) as VnodeWithDom;\n return update();\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/* eslint-disable */\ndeclare global {\n var document: Document;\n namespace JSX {\n interface IntrinsicElements extends DefaultRecord {}\n type Element = ReturnType<\n typeof v | ((...args: any) => string | number | null | undefined | boolean | Promise<any>)\n >;\n type ComponentReturnType = string | number | null | undefined | boolean | Element | Element[];\n }\n}\n\ninterface DefaultRecord extends Record<string | number | symbol, any> {}\n\nexport interface Properties extends DefaultRecord {\n key?: string | number;\n}\n\nexport interface DomElement extends Element, DefaultRecord {}\n\nexport interface Component extends DefaultRecord {\n (props: Properties, children: any[]): Vnode | any;\n}\n\nexport interface POJOComponent extends DefaultRecord {\n view: Component;\n}\n\nexport type ValyrianComponent = Component | POJOComponent;\n\nexport interface VnodeComponentInterface extends Vnode {\n tag: ValyrianComponent;\n}\n\nexport interface Children extends Array<Vnode | VnodeComponentInterface | ValyrianComponent | any> {}\n\nexport interface Directive {\n (value: any, vnode: VnodeWithDom, oldProps: Properties | null): false | void | any;\n}\n\nexport const isNodeJs = Boolean(typeof process !== \"undefined\" && process.versions && process.versions.node);\n\nexport class Vnode {\n constructor(\n public tag: string | Component | POJOComponent,\n public props: null | Properties,\n public children: Children,\n public dom?: DomElement,\n public isSVG?: boolean\n ) {}\n}\n\nexport interface VnodeWithDom extends Vnode {\n tag: string;\n dom: DomElement;\n props: Properties;\n}\n\nexport const isPOJOComponent = (component: unknown): component is POJOComponent =>\n Boolean(component && typeof component === \"object\" && \"view\" in component);\n\nexport const isComponent = (component: unknown): component is Component =>\n Boolean(typeof component === \"function\" || isPOJOComponent(component));\nexport const isVnode = (object?: unknown): object is Vnode => object instanceof Vnode;\n\nexport const isVnodeComponent = (object?: unknown): object is VnodeComponentInterface => {\n return isVnode(object) && isComponent(object.tag);\n};\n\nexport function v(tagOrComponent: string | ValyrianComponent, props: Properties | null, ...children: Children) {\n return new Vnode(tagOrComponent, props, children);\n}\n\nv.fragment = (_: Properties, ...children: Children) => children;\n\nexport function hidrateDomToVnode(dom: any): VnodeWithDom | void {\n if (dom.nodeType === 3) {\n return dom.nodeValue;\n }\n\n if (dom.nodeType === 1) {\n const tag = dom.nodeName.toLowerCase();\n const props = {} as Properties;\n const children = [] as Children;\n\n for (let i = 0, l = dom.childNodes.length; i < l; i++) {\n const childDom = dom.childNodes[i];\n if (childDom.nodeType === 3) {\n children.push(childDom.nodeValue);\n } else if (childDom.nodeType === 1) {\n const childVnode = hidrateDomToVnode(childDom);\n children.push(childVnode);\n }\n }\n\n const attributes = dom.attributes;\n for (let i = 0, l = attributes.length; i < l; i++) {\n const attr = attributes[i];\n props[attr.nodeName] = attr.nodeValue;\n }\n\n const vnode = new Vnode(tag, props, children);\n vnode.dom = dom;\n dom.vnode = vnode;\n vnode.isSVG = tag === \"svg\";\n return vnode as VnodeWithDom;\n }\n}\n\nexport function trust(htmlString: string) {\n const div = document.createElement(\"div\");\n div.innerHTML = htmlString.trim();\n return Array.from(div.childNodes).map(hidrateDomToVnode);\n}\n\nlet mainComponent: VnodeComponentInterface | null = null;\nlet mainVnode: VnodeWithDom | null = null;\nlet isMounted = false;\n\nexport const current = {\n vnode: null as Vnode | null,\n component: null as ValyrianComponent | null,\n event: null as Event | null\n};\n\nexport const reservedProps = new Set<string>([\n \"key\",\n \"state\",\n \"v-keep\",\n \"v-text\",\n \"v-if\",\n \"v-for\",\n \"v-show\",\n \"v-class\",\n \"v-html\",\n \"v-model\",\n \"v-create\",\n \"v-update\",\n \"v-cleanup\"\n]);\n\nconst onCleanupSet = new Set<Function>();\nconst onMountSet = new Set<Function>();\nconst onUpdateSet = new Set<Function>();\nconst onUnmountSet = new Set<Function>();\nexport const onMount = (callback: Function) => !isMounted && onMountSet.add(callback);\nexport const onUpdate = (callback: Function) => onUpdateSet.add(callback);\nexport const onCleanup = (callback: Function) => onCleanupSet.add(callback);\nexport const onUnmount = (callback: Function) => !isMounted && onUnmountSet.add(callback);\nconst callSet = (set: Set<Function>) => {\n for (const callback of set) {\n callback();\n }\n set.clear();\n};\n\nexport const directives: Record<string, Directive> = {\n \"v-if\": (value, vnode) => {\n if (!Boolean(value)) {\n const parentNode = vnode.dom?.parentNode;\n if (parentNode) {\n parentNode.replaceChild(document.createTextNode(\"\"), vnode.dom);\n }\n\n return false;\n }\n },\n\n \"v-show\": (value, vnode) => {\n const bool = Boolean(value);\n (\n vnode.dom as unknown as {\n style: { display: string };\n }\n ).style.display = bool ? \"\" : \"none\";\n },\n\n \"v-html\": (value, vnode) => {\n vnode.children = trust(value as string);\n },\n\n // The \"v-model\" directive binds the value of an input element to a model property\n \"v-model\": (model, vnode) => {\n // eslint-disable-next-line prefer-const\n if (\"name\" in vnode.props === false) {\n return;\n }\n\n let value;\n const property = vnode.props.name;\n let event = \"oninput\";\n\n // This function updates the model property when the input element's value changes\n let handler = (e: Event) => (model[property] = (e.target as DomElement & Record<string, any>).value);\n if (vnode.tag === \"input\") {\n // Depending on the type of input element, use a different handler function\n switch (vnode.props.type) {\n case \"checkbox\": {\n if (Array.isArray(model[property])) {\n // If the model property is an array, add or remove the value from the array when the checkbox is checked or unchecked\n handler = (e: Event) => {\n const val = (e.target as DomElement & Record<string, any>).value;\n const idx = model[property].indexOf(val);\n if (idx === -1) {\n model[property].push(val);\n } else {\n model[property].splice(idx, 1);\n }\n };\n // If the value is in the array, set the checkbox to be checked\n value = model[property].indexOf(vnode.dom.value) !== -1;\n } else if (\"value\" in vnode.props) {\n // If the input element has a \"value\" attribute, use it to determine the checked state\n handler = () => {\n if (model[property] === vnode.props.value) {\n model[property] = null;\n } else {\n model[property] = vnode.props.value;\n }\n };\n value = model[property] === vnode.props.value;\n } else {\n // If there is no \"value\" attribute, use a boolean value for the model property\n handler = () => (model[property] = !model[property]);\n value = model[property];\n }\n // Set the \"checked\" attribute on the input element\n // eslint-disable-next-line no-use-before-define\n setAttribute(\"checked\", value, vnode);\n break;\n }\n case \"radio\": {\n // If the element is a radio button, set the \"checked\" attribute based on the value of the model property\n // eslint-disable-next-line no-use-before-define\n setAttribute(\"checked\", model[property] === vnode.dom.value, vnode);\n break;\n }\n default: {\n // For all other input types, set the \"value\" attribute based on the value of the model property\n // eslint-disable-next-line no-use-before-define\n setAttribute(\"value\", model[property], vnode);\n }\n }\n } else if (vnode.tag === \"select\") {\n // If the element is a select element, use the \"click\" event by default\n event = \"onclick\";\n if (vnode.props.multiple) {\n // If the select element allows multiple selections, update the model property with an array of selected values\n handler = (e: Event & Record<string, any>) => {\n const val = (e.target as DomElement & Record<string, any>).value;\n if (e.ctrlKey) {\n // If the Ctrl key is pressed, add or remove the value from the array\n const idx = model[property].indexOf(val);\n if (idx === -1) {\n model[property].push(val);\n } else {\n model[property].splice(idx, 1);\n }\n } else {\n // If the Ctrl key is not pressed, set the model property to an array with the selected value\n model[property].splice(0, model[property].length);\n model[property].push(val);\n }\n };\n // Set the \"selected\" attribute on the options based on whether they are in the model property array\n vnode.children.forEach((child: VnodeWithDom) => {\n if (child.tag === \"option\") {\n const value = \"value\" in child.props ? child.props.value : child.children.join(\"\").trim();\n child.props.selected = model[property].indexOf(value) !== -1;\n }\n });\n } else {\n // If the select element does not allow multiple selections, set the \"selected\" attribute on the options based on the value of the model property\n vnode.children.forEach((child: VnodeWithDom) => {\n if (child.tag === \"option\") {\n const value = \"value\" in child.props ? child.props.value : child.children.join(\"\").trim();\n child.props.selected = value === model[property];\n }\n });\n }\n } else if (vnode.tag === \"textarea\") {\n // Set the textarea's content to the value of the model property\n vnode.children = [model[property]];\n }\n\n // We assume that the prev handler if any will not be changed by the user across patchs\n const prevHandler = vnode.props[event];\n\n // Set the event handler on the element\n // eslint-disable-next-line no-use-before-define\n setAttribute(\n event,\n (e: Event) => {\n handler(e);\n\n // If the previous handler is defined, call it after the model has been updated\n if (prevHandler) {\n prevHandler(e);\n }\n },\n vnode\n );\n },\n\n \"v-create\": (callback, vnode, oldProps) => {\n if (!oldProps) {\n const cleanup = callback(vnode);\n\n if (typeof cleanup === \"function\") {\n onCleanup(cleanup);\n }\n }\n },\n\n \"v-update\": (callback, vnode, oldProps) => {\n if (oldProps) {\n const cleanup = callback(vnode, oldProps);\n\n if (typeof cleanup === \"function\") {\n onCleanup(cleanup);\n }\n }\n },\n\n \"v-cleanup\": (callback, vnode) => {\n onCleanup(() => callback(vnode));\n },\n\n \"v-class\": (value, vnode) => {\n if (typeof value === \"string\") {\n vnode.dom.className = value;\n } else if (Array.isArray(value)) {\n vnode.dom.className = value.join(\" \");\n } else if (typeof value === \"object\") {\n const classList = vnode.dom.classList;\n for (const name in value) {\n const val = typeof value[name] === \"function\" ? (value[name] as Function)() : value[name];\n classList.toggle(name, val);\n }\n }\n },\n\n // Frequent used properties\n class(value, vnode) {\n if (vnode.dom.className !== value) {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"class\", value);\n return;\n }\n vnode.dom.className = value;\n }\n },\n\n className(value, vnode) {\n directives.class(value, vnode, null);\n },\n\n id: (value, vnode) => {\n if (vnode.dom.id !== value) {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"id\", value);\n return;\n }\n vnode.dom.id = value;\n }\n },\n\n style: (value, vnode) => {\n if (typeof value === \"string\") {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"style\", value);\n return;\n }\n vnode.dom.style = value;\n } else if (typeof value === \"object\") {\n if (vnode.isSVG) {\n vnode.dom.setAttribute(\"style\", \"\");\n } else {\n vnode.dom.style = \"\";\n }\n const domStyle = vnode.dom.style;\n for (const name in value) {\n domStyle[name] = value[name];\n }\n }\n }\n};\n\nexport function directive(name: string, directive: Directive) {\n const directiveName = `v-${name}`;\n directives[directiveName] = directive;\n reservedProps.add(directiveName);\n}\n\nexport function setPropNameReserved(name: string) {\n reservedProps.add(name);\n}\n\nconst eventListenerNames = new Set<string>();\n\nfunction eventListener(e: Event) {\n current.event = e;\n let dom = e.target as DomElement;\n const name = `on${e.type}`;\n\n while (dom) {\n const oldVnode = dom.vnode as VnodeWithDom;\n if (oldVnode && oldVnode.props[name]) {\n oldVnode.props[name](e, oldVnode);\n\n if (!e.defaultPrevented) {\n // eslint-disable-next-line no-use-before-define\n update();\n }\n return;\n }\n dom = dom.parentNode as DomElement;\n }\n\n current.event = null;\n}\n\nfunction sharedSetAttribute(name: string, value: any, newVnode: VnodeWithDom): void | boolean {\n const newVnodeDom = newVnode.dom;\n if (typeof value === \"function\") {\n if (!eventListenerNames.has(name)) {\n // We attach the delegated event listener to the main vnode dom element, which is the root of the component\n (mainVnode as VnodeWithDom).dom.addEventListener(name.slice(2), eventListener);\n eventListenerNames.add(name);\n }\n return;\n }\n\n if (!newVnode.isSVG && name in newVnodeDom) {\n newVnodeDom[name] = value;\n return;\n }\n\n if (value === false) {\n newVnodeDom.removeAttribute(name);\n } else {\n newVnodeDom.setAttribute(name, value);\n }\n}\n\nexport function setAttribute(name: string, value: any, newVnode: VnodeWithDom): void {\n if (!reservedProps.has(name)) {\n newVnode.props[name] = value;\n sharedSetAttribute(name, value, newVnode);\n }\n}\n\nexport function updateAttributes(newVnode: VnodeWithDom, oldProps: Properties | null): void {\n const vnodeDom = newVnode.dom;\n const vnodeProps = newVnode.props;\n vnodeDom.vnode = newVnode;\n\n if (oldProps) {\n for (const name in oldProps) {\n if (name in vnodeProps === false && !eventListenerNames.has(name) && !reservedProps.has(name)) {\n if (!newVnode.isSVG && name in vnodeDom) {\n vnodeDom[name] = null;\n } else {\n vnodeDom.removeAttribute(name);\n }\n }\n }\n }\n\n for (const name in vnodeProps) {\n if (directives[name]) {\n if (directives[name](vnodeProps[name], newVnode, oldProps) === false) {\n break;\n }\n continue;\n }\n\n if (!reservedProps.has(name)) {\n sharedSetAttribute(name, vnodeProps[name], newVnode);\n }\n }\n}\n\nexport function createElement(tag: string, isSVG: boolean): DomElement {\n return isSVG\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", tag)\n : (document.createElement(tag) as DomElement);\n}\n\nfunction flatTree(newVnode: VnodeWithDom) {\n current.vnode = newVnode;\n\n let i = 0;\n const originalChildren = newVnode.children;\n let children = originalChildren;\n\n if (\"v-for\" in newVnode.props) {\n children = [];\n const set = newVnode.props[\"v-for\"];\n const l = set.length;\n const callback = newVnode.children[0];\n\n if (typeof callback !== \"function\") {\n console.warn(\"v-for directive must have a callback function as children\");\n return children;\n }\n\n for (let i = 0; i < l; i++) {\n children[i] = callback(set[i], i);\n }\n }\n\n while (i < children.length) {\n const newChild = children[i];\n\n if (newChild == null) {\n if (children === originalChildren) {\n children = [...originalChildren];\n }\n children.splice(i, 1);\n continue;\n }\n\n if (Array.isArray(newChild)) {\n if (children === originalChildren) {\n children = [...originalChildren];\n }\n children.splice(i, 1, ...newChild);\n continue;\n }\n\n if (newChild instanceof Vnode) {\n newChild.props = newChild.props || {};\n newChild.isSVG = newVnode.isSVG || newChild.tag === \"svg\";\n\n if (typeof newChild.tag !== \"string\") {\n if (children === originalChildren) {\n children = [...originalChildren];\n }\n\n const component = (current.component = newChild.tag);\n\n children[i] = (isPOJOComponent(component) ? component.view : component).bind(component)(\n newChild.props,\n newChild.children\n );\n\n continue;\n }\n }\n\n i++;\n }\n\n return children;\n}\n\nfunction createNewElement(newChild: VnodeWithDom, newVnode: VnodeWithDom, oldChild: DomElement | null) {\n const dom = createElement(newChild.tag, newChild.isSVG as boolean);\n if (oldChild) {\n newVnode.dom.replaceChild(dom, oldChild);\n } else {\n newVnode.dom.appendChild(dom);\n }\n newChild.dom = dom;\n updateAttributes(newChild, null);\n if (\"v-text\" in newChild.props) {\n newChild.dom.textContent = newChild.props[\"v-text\"];\n return;\n }\n\n const children = flatTree(newChild);\n if (children.length === 0) {\n newChild.dom.textContent = \"\";\n return;\n }\n\n for (let i = 0, l = children.length; i < l; i++) {\n if (children[i] instanceof Vnode === false) {\n newChild.dom.appendChild(document.createTextNode(children[i]));\n continue;\n }\n createNewElement(children[i], newChild, null);\n }\n}\n\nfunction patchKeyed(newVnode: VnodeWithDom, children: Children) {\n const oldTree = [...Array.from(newVnode.dom.childNodes)] as unknown as DomElement[];\n const childNodes = newVnode.dom.childNodes;\n const oldKeyedList: Record<string, number> = {};\n\n for (let i = 0, l = oldTree.length; i < l; i++) {\n const oldVnode = oldTree[i].vnode as VnodeWithDom;\n if (!oldVnode || \"key\" in oldVnode.props === false) {\n continue;\n }\n oldKeyedList[oldVnode.props.key as string] = i;\n }\n\n for (let i = 0, l = children.length; i < l; i++) {\n const newChild = children[i];\n const oldChild = oldTree[oldKeyedList[newChild.props.key as string]];\n\n if (!oldChild) {\n createNewElement(newChild, newVnode, childNodes[i] as DomElement | null);\n continue;\n }\n\n newChild.dom = oldChild;\n const currentChild = childNodes[i];\n if (!currentChild) {\n newVnode.dom.appendChild(oldChild);\n } else if (currentChild !== oldChild) {\n newVnode.dom.replaceChild(oldChild, currentChild);\n }\n\n if (\n \"v-keep\" in newChild.props === false ||\n !oldChild.vnode ||\n oldChild.props[\"v-keep\"] !== newChild.props[\"v-keep\"]\n ) {\n updateAttributes(newChild as VnodeWithDom, oldChild.vnode.props);\n\n if (\"v-text\" in newChild.props) {\n // eslint-disable-next-line eqeqeq\n if (oldChild.textContent != newChild.props[\"v-text\"]) {\n oldChild.textContent = newChild.props[\"v-text\"];\n }\n continue;\n }\n // eslint-disable-next-line no-use-before-define\n patch(newChild as VnodeWithDom);\n }\n }\n\n for (let i = children.length, l = childNodes.length; i < l; i++) {\n childNodes[childNodes.length - 1]?.remove();\n }\n}\n\n// eslint-disable-next-line complexity\nfunction patch(newVnode: VnodeWithDom): void {\n const children = flatTree(newVnode);\n\n const dom = newVnode.dom;\n\n if (children.length === 0) {\n if (dom.childNodes.length) {\n dom.textContent = \"\";\n }\n return;\n }\n\n const oldDomChildren = dom.childNodes as unknown as DomElement[];\n const oldChildrenLength = oldDomChildren.length;\n const childrenLength = children.length;\n if (oldChildrenLength === 0) {\n for (let i = 0; i < childrenLength; i++) {\n if (children[i] instanceof Vnode === false) {\n dom.appendChild(document.createTextNode(children[i]));\n continue;\n }\n createNewElement(children[i], newVnode, null);\n }\n return;\n }\n\n let shouldPatchKeyed = true;\n for (let i = 0; i < childrenLength; i++) {\n if (children[i] instanceof Vnode === false || !(\"key\" in children[i].props)) {\n shouldPatchKeyed = false;\n break;\n }\n }\n if (shouldPatchKeyed) {\n patchKeyed(newVnode, children);\n return;\n }\n\n for (let i = 0; i < childrenLength; i++) {\n const newChild = children[i] as VnodeWithDom;\n const isText = newChild instanceof Vnode === false;\n const oldChild = oldDomChildren[i];\n\n if (!oldChild) {\n if (isText) {\n newVnode.dom.appendChild(document.createTextNode(newChild as unknown as string));\n continue;\n }\n\n createNewElement(newChild as VnodeWithDom, newVnode, null);\n continue;\n }\n\n if (isText) {\n if (oldChild.nodeType !== 3) {\n newVnode.dom.replaceChild(document.createTextNode(newChild as unknown as string), oldChild);\n continue;\n }\n\n // eslint-disable-next-line eqeqeq\n if (oldChild.nodeValue != (newChild as unknown as string)) {\n oldChild.nodeValue = newChild as unknown as string;\n }\n continue;\n }\n\n if (\"v-keep\" in newChild.props) {\n if (oldChild.vnode && oldChild.vnode.props[\"v-keep\"] === newChild.props[\"v-keep\"]) {\n continue;\n }\n\n const nextOldChild = oldDomChildren[i + 1];\n if (nextOldChild && nextOldChild.vnode && nextOldChild.vnode.props[\"v-keep\"] === newChild.props[\"v-keep\"]) {\n oldChild.remove();\n continue;\n }\n }\n\n if (newChild.tag !== oldChild.nodeName.toLowerCase()) {\n createNewElement(newChild, newVnode, oldChild);\n continue;\n }\n\n newChild.dom = oldChild;\n updateAttributes(newChild, oldChild.vnode ? oldChild.vnode.props : null);\n if (\"v-text\" in newChild.props) {\n // eslint-disable-next-line eqeqeq\n if (newChild.dom.textContent != newChild.props[\"v-text\"]) {\n newChild.dom.textContent = newChild.props[\"v-text\"];\n }\n continue;\n }\n patch(newChild);\n }\n\n for (let i = childrenLength, l = oldDomChildren.length; i < l; i++) {\n oldDomChildren[i]?.remove();\n }\n}\n\nexport function updateVnode(vnode: VnodeWithDom): string | void {\n callSet(onCleanupSet);\n vnode.props = vnode.props || {};\n patch(vnode);\n callSet(isMounted ? onUpdateSet : onMountSet);\n isMounted = true;\n current.vnode = null;\n current.component = null;\n}\n\nexport function update(): string {\n if (mainVnode) {\n mainVnode.children = [mainComponent];\n updateVnode(mainVnode as VnodeWithDom);\n if (isNodeJs) {\n return mainVnode.dom.innerHTML;\n }\n }\n return \"\";\n}\n\nlet debouncedUpdateTimeout: any;\nconst debouncedUpdateMethod = isNodeJs ? update : () => requestAnimationFrame(update);\n\nexport function debouncedUpdate(timeout = 42) {\n if (current.event) {\n current.event.preventDefault();\n }\n clearTimeout(debouncedUpdateTimeout);\n debouncedUpdateTimeout = setTimeout(debouncedUpdateMethod, timeout);\n}\n\nexport function unmount() {\n if (mainVnode) {\n mainComponent = v(() => null, {}) as VnodeComponentInterface;\n const result = update();\n callSet(onUnmountSet);\n for (const name in eventListenerNames) {\n mainVnode.dom.removeEventListener(name.slice(2).toLowerCase(), eventListener);\n Reflect.deleteProperty(eventListenerNames, name);\n }\n\n mainComponent = null;\n mainVnode = null;\n isMounted = false;\n current.vnode = null;\n current.component = null;\n current.event = null;\n return result;\n }\n\n return \"\";\n}\n\nexport function mount(dom: string | DomElement, component: ValyrianComponent | VnodeComponentInterface | any) {\n const container =\n typeof dom === \"string\" ? (isNodeJs ? createElement(dom, dom === \"svg\") : document.querySelector(dom)) : dom;\n\n if (isComponent(component)) {\n mainComponent = v(component, {}, []) as VnodeComponentInterface;\n } else if (isVnodeComponent(component)) {\n mainComponent = component;\n } else {\n mainComponent = v(() => component, {}, []) as VnodeComponentInterface;\n }\n\n mainVnode = hidrateDomToVnode(container) as VnodeWithDom;\n return update();\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["value", "directive", "i"]
|
|
7
7
|
}
|
package/lib/index.ts
CHANGED
|
@@ -226,19 +226,19 @@ export const directives: Record<string, Directive> = {
|
|
|
226
226
|
}
|
|
227
227
|
// Set the "checked" attribute on the input element
|
|
228
228
|
// eslint-disable-next-line no-use-before-define
|
|
229
|
-
|
|
229
|
+
setAttribute("checked", value, vnode);
|
|
230
230
|
break;
|
|
231
231
|
}
|
|
232
232
|
case "radio": {
|
|
233
233
|
// If the element is a radio button, set the "checked" attribute based on the value of the model property
|
|
234
234
|
// eslint-disable-next-line no-use-before-define
|
|
235
|
-
|
|
235
|
+
setAttribute("checked", model[property] === vnode.dom.value, vnode);
|
|
236
236
|
break;
|
|
237
237
|
}
|
|
238
238
|
default: {
|
|
239
239
|
// For all other input types, set the "value" attribute based on the value of the model property
|
|
240
240
|
// eslint-disable-next-line no-use-before-define
|
|
241
|
-
|
|
241
|
+
setAttribute("value", model[property], vnode);
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
244
|
} else if (vnode.tag === "select") {
|
|
@@ -288,7 +288,7 @@ export const directives: Record<string, Directive> = {
|
|
|
288
288
|
|
|
289
289
|
// Set the event handler on the element
|
|
290
290
|
// eslint-disable-next-line no-use-before-define
|
|
291
|
-
|
|
291
|
+
setAttribute(
|
|
292
292
|
event,
|
|
293
293
|
(e: Event) => {
|
|
294
294
|
handler(e);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "valyrian.js",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.7",
|
|
4
4
|
"description": "Lightweight steel to forge PWAs. (Minimal Frontend Framework with server side rendering and other capabilities)",
|
|
5
5
|
"repository": "git@github.com:Masquerade-Circus/valyrian.js.git",
|
|
6
6
|
"author": "Masquerade <christian@masquerade-circus.net>",
|