Current section

Files

Jump to
kino_k8s lib assets get_cell main.js
Raw

lib/assets/get_cell/main.js

var R=Object.create;var f=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var _=(t,o)=>()=>(o||t((o={exports:{}}).exports,o),o.exports);var L=(t,o,e,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of P(o))!K.call(t,a)&&a!==e&&f(t,a,{get:()=>o[a],enumerable:!(s=I(o,a))||s.enumerable});return t};var b=(t,o,e)=>(e=t!=null?R(j(t)):{},L(o||!t||!t.__esModule?f(e,"default",{value:t,enumerable:!0}):e,t));var m=_((X,c)=>{(function(){"use strict";var t={}.hasOwnProperty,o="[native code]";function e(){for(var s=[],a=0;a<arguments.length;a++){var r=arguments[a];if(r){var n=typeof r;if(n==="string"||n==="number")s.push(r);else if(Array.isArray(r)){if(r.length){var l=e.apply(null,r);l&&s.push(l)}}else if(n==="object"){if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]")){s.push(r.toString());continue}for(var i in r)t.call(r,i)&&r[i]&&s.push(i)}}}return s.join(" ")}typeof c<"u"&&c.exports?(e.default=e,c.exports=e):typeof define=="function"&&typeof define.amd=="object"&&define.amd?define("classnames",[],function(){return e}):window.classNames=e})()});var z=({message:t})=>React.createElement(React.Fragment,null,React.createElement("div",{className:"flex rounded-md border border-dashed border-red-700 bg-red-100 p-2"},React.createElement("svg",{className:"h-6 w-6 flex-none text-red-700",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},React.createElement("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"})),React.createElement("div",{className:"font-inter px-2 text-sm font-medium text-red-700"},t))),v=z;var g=(t,o)=>{let e;return(...s)=>{clearTimeout(e),e=setTimeout(()=>{t(...s)},o)}},h=async t=>{await t.importJS("https://cdnjs.cloudflare.com/ajax/libs/react/18.2.0/umd/react.development.js"),await t.importJS("https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.2.0/umd/react-dom.development.js")};var O=(t,o)=>{let[e,s]=React.useState(o),a=r=>n=>{s(l=>({...l,[r]:n})),console.log("Pushing ${attrName} to server",n),t.pushEvent(`update_${r}`,n)};return React.useEffect(()=>{t.handleEvent("update",r=>{console.log("Attribute update from server",r),s(n=>({...Object.assign(n,r)}))})},[]),[e,a]},y=O;var E=()=>React.createElement("div",{className:"mb-5 rounded-md bg-gray-100 p-4 font-inter text-sm font-medium text-gray-500"},React.createElement("p",null,"To make requests to the Kubernetes cluster, you need at least one connection to a cluster."),React.createElement("p",{className:"pt-1"},"To create a cluster connection, you can add the"," ",React.createElement("span",{className:"text-gray-600"},"Cluster Connection")," smart cell.")),x=E;var d=b(m()),F=({name:t,label:o,defaultValue:e,onChange:s,orientation:a="vert"})=>React.createElement("div",{className:(0,d.default)({"flex flex-row items-baseline":a=="horiz"})},React.createElement("label",{htmlFor:t,className:(0,d.default)({block:a=="vert","pr-1 uppercase":a=="horiz"},"mb-1 text-sm font-medium")},o),React.createElement("input",{type:"text",value:e,name:t,onChange:r=>s(r.target.value),className:(0,d.default)({"block w-full":a=="vert"},"rounded-lg border border-gray-300 bg-gray-50 p-1.5 text-sm focus:border-blue-500 focus:ring-blue-500")})),S=F;var C=b(m());var G=({name:t,selectedValue:o,searchTerm:e,onSearch:s,placeholder:a})=>{let r=g(i=>{s(i.toLowerCase())},300),[n,l]=React.useState(e??"");return React.useEffect(()=>{o&&l(o)},[o]),React.createElement(React.Fragment,null,React.createElement("div",{className:"relative"},React.createElement("div",{className:"pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3"},React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","aria-hidden":"true",strokeWidth:1.5,stroke:"currentColor",className:(0,C.default)("h-5 w-5",{"bg-green-200":o,"text-green-800":o,"border-green-800":o,"rounded-lg":o})},o?React.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12.75L11.25 15 15 9.75M21 12c0 1.268-.63 2.39-1.593 3.068a3.745 3.745 0 01-1.043 3.296 3.745 3.745 0 01-3.296 1.043A3.745 3.745 0 0112 21c-1.268 0-2.39-.63-3.068-1.593a3.746 3.746 0 01-3.296-1.043 3.745 3.745 0 01-1.043-3.296A3.745 3.745 0 013 12c0-1.268.63-2.39 1.593-3.068a3.745 3.745 0 011.043-3.296 3.746 3.746 0 013.296-1.043A3.746 3.746 0 0112 3c1.268 0 2.39.63 3.068 1.593a3.746 3.746 0 013.296 1.043 3.746 3.746 0 011.043 3.296A3.745 3.745 0 0121 12z"}):React.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"}))),React.createElement("input",{type:"text",value:n,name:t,autoComplete:"off",placeholder:a,onInput:i=>{l(i.target.value),r(i.target.value)},className:"block w-full rounded-lg border border-gray-300 bg-gray-50 p-2 pl-9 text-sm focus:border-blue-500 focus:ring-blue-500"})))},M=({resultItems:t,itemRenderer:o,onSelect:e,resultItemsKeyField:s})=>React.createElement("div",{className:"max-h-36 overflow-auto rounded-b-lg border-b border-l border-r border-gray-300"},React.createElement("div",{className:"w-max min-w-full"},t.map(a=>React.createElement("div",{key:a[s],onClick:()=>e(a),className:"border-b-solid last:border-b-none cursor-pointer border-b border-b-gray-300 bg-gray-50 px-2 py-0.5 hover:bg-blue-600 hover:text-white"},o(a))))),q=({name:t,label:o,searchTerm:e,onSearch:s,resultItems:a,resultItemsKeyField:r,itemRenderer:n,className:l,onSelect:i,selectedValue:w,placeholder:k})=>React.createElement("div",{className:l},React.createElement("label",{htmlFor:t,className:"mb-1 block text-sm font-medium"},o),React.createElement(G,{name:t,onSearch:s,searchTerm:e,selectedValue:w,placeholder:k}),(a&&a.length)>0&&React.createElement(M,{resultItems:a,itemRenderer:n,onSelect:i,resultItemsKeyField:r})),T=q;var u=b(m()),U=({name:t,label:o,options:e,selectedOption:s,onChange:a,className:r="",orientation:n="vert"})=>React.createElement("div",{className:(0,u.default)({"flex flex-row items-baseline":n=="horiz"},r)},React.createElement("label",{htmlFor:t,className:(0,u.default)({block:n=="vert","pr-1 uppercase":n=="horiz"},"mb-1 text-sm font-medium")},o),React.createElement("select",{id:t,value:s||void 0,onChange:l=>a(l.target.value),className:(0,u.default)({"block w-full":n=="vert"}," bg-caret-down appearance-none rounded-lg border border-gray-300 bg-gray-50 bg-[length:10px] bg-[center_right_10px] bg-no-repeat p-2 pr-5 text-sm focus:border-blue-500 focus:ring-blue-500")},e.map(l=>React.createElement("option",{key:l.value,value:l.value},l.label)))),p=U;var J=({gvk:t})=>React.createElement(React.Fragment,null,React.createElement("div",{className:"text-xs text-gray-400"},t.api_version),React.createElement("div",{className:"text-sm"},t.kind)),N=J;var V=({initialAttrs:t,ctx:o})=>{let[e,s]=y(o,t),a=e.result_types[e.request_type];return React.createElement(React.Fragment,null,!e.connection&&React.createElement(x,null),React.createElement("div",{className:"rounded-md border border-solid border-gray-300 font-inter font-medium text-gray-600"},React.createElement("div",{className:"border-b-solid flex gap-x-5 gap-y-3 border-b border-b-gray-300 bg-blue-100 p-3"},React.createElement(p,{name:"connection",label:"Connection",options:e.connections.map(r=>({label:r.variable,value:r.variable})),selectedOption:e.connection?.variable?.toString(),onChange:s("connection"),orientation:"horiz"}),React.createElement(p,{name:"request_type",label:"Request Type",options:e.request_types.map(r=>({label:r.toUpperCase(),value:r})),selectedOption:e.request_type,onChange:s("request_type"),orientation:"horiz"}),a&&React.createElement(p,{name:"result_type",label:"Result Type",options:a.map(r=>({label:r.toUpperCase(),value:r})),selectedOption:e.result_type,onChange:s("result_type"),orientation:"horiz"}),React.createElement(S,{label:"Assign To",name:"assign_to",defaultValue:e.result_variable,onChange:s("result_variable"),orientation:"horiz"})),React.createElement("div",{className:"flex gap-x-5 p-3"},e.connection&&React.createElement(T,{className:"max-w-full",name:"gvk",label:"Resource Kind",onSearch:s("search_term"),searchTerm:e.search_term,resultItemsKeyField:"index",resultItems:e.search_result_items,onSelect:s("gvk"),itemRenderer:r=>React.createElement(N,{gvk:r}),selectedValue:e.gvk?.kind,placeholder:"apps/v1 Deployment"}),e.namespaces&&React.createElement(p,{name:"namespace",label:"Namespace",options:e.namespaces.map(r=>({label:r,value:r})),selectedOption:e.namespace,onChange:s("namespace")}),e.resources&&React.createElement(p,{name:"resource",label:"Resource Name",options:e.resources.map(r=>({label:r,value:r})),selectedOption:e.resource,onChange:s("resource")}))))},A=V;var de=async(t,o)=>{await h(t,o),t.root.innerHTML="loading...",t.importCSS("main.css"),t.importCSS("https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap");let e=ReactDOM.createRoot(t.root);if(o.error)return e.render(React.createElement(v,{message:o.error}));e.render(React.createElement(A,{initialAttrs:o,ctx:t}))};export{de as init};
/*! Bundled license information:
classnames/index.js:
(*!
Copyright (c) 2018 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*)
*/
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCAiLi4vLi4vLi4vYXNzZXRzL3NoYXJlZC9lcnJvci50c3giLCAiLi4vLi4vLi4vYXNzZXRzL3NoYXJlZC91dGlscy50cyIsICIuLi8uLi8uLi9hc3NldHMvc2hhcmVkL2F0dHJfc3RhdGUudHN4IiwgIi4uLy4uLy4uL2Fzc2V0cy9zaGFyZWQvY29ubl9ub3RpY2UudHN4IiwgIi4uLy4uLy4uL2Fzc2V0cy9zaGFyZWQvZm9ybS9pbnB1dC50c3giLCAiLi4vLi4vLi4vYXNzZXRzL3NoYXJlZC9mb3JtL3NlYXJjaF9zZWxlY3QudHN4IiwgIi4uLy4uLy4uL2Fzc2V0cy9zaGFyZWQvZm9ybS9zZWxlY3QudHN4IiwgIi4uLy4uLy4uL2Fzc2V0cy9zaGFyZWQvZ3ZrX29wdGlvbi50c3giLCAiLi4vLi4vLi4vYXNzZXRzL2dldF9jZWxsL2FwcC50c3giLCAiLi4vLi4vLi4vYXNzZXRzL2dldF9jZWxsL21haW4udHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cdHZhciBuYXRpdmVDb2RlU3RyaW5nID0gJ1tuYXRpdmUgY29kZV0nO1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAmJiAhYXJnLnRvU3RyaW5nLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIiwgImludGVyZmFjZSBFcnJvclByb3BzIHtcbiAgbWVzc2FnZTogc3RyaW5nXG59XG5jb25zdCBFcnJvciA9ICh7IG1lc3NhZ2UgfTogRXJyb3JQcm9wcykgPT4gKFxuICA8PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZGFzaGVkIGJvcmRlci1yZWQtNzAwIGJnLXJlZC0xMDAgcC0yXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzTmFtZT1cImgtNiB3LTYgZmxleC1ub25lIHRleHQtcmVkLTcwMFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIGQ9XCJNMTIgOXYzLjc1bS05LjMwMyAzLjM3NmMtLjg2NiAxLjUuMjE3IDMuMzc0IDEuOTQ4IDMuMzc0aDE0LjcxYzEuNzMgMCAyLjgxMy0xLjg3NCAxLjk0OC0zLjM3NEwxMy45NDkgMy4zNzhjLS44NjYtMS41LTMuMDMyLTEuNS0zLjg5OCAwTDIuNjk3IDE2LjEyNnpNMTIgMTUuNzVoLjAwN3YuMDA4SDEydi0uMDA4elwiXG4gICAgICAgID48L3BhdGg+XG4gICAgICA8L3N2Zz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1pbnRlciBweC0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1yZWQtNzAwXCI+XG4gICAgICAgIHttZXNzYWdlfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvPlxuKVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvclxuIiwgImltcG9ydCB7IEtpbm9Db250ZXh0IH0gZnJvbSAnLi4va2lubydcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuZXhwb3J0IGNvbnN0IGRlYm91bmNlID0gPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IFJldHVyblR5cGU8VD4+KFxuICBjYWxsYmFjazogVCxcbiAgdGltZW91dDogbnVtYmVyLFxuKTogKCguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiB2b2lkKSA9PiB7XG4gIGxldCB0aW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD5cblxuICByZXR1cm4gKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGltZXIpXG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNhbGxiYWNrKC4uLmFyZ3MpXG4gICAgfSwgdGltZW91dClcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbG9hZFJlYWN0ID0gYXN5bmMgKGN0eDogS2lub0NvbnRleHQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgaWYgKERFQlVHKSB7XG4gICAgYXdhaXQgY3R4LmltcG9ydEpTKFxuICAgICAgJ2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3JlYWN0LzE4LjIuMC91bWQvcmVhY3QuZGV2ZWxvcG1lbnQuanMnLFxuICAgIClcbiAgICBhd2FpdCBjdHguaW1wb3J0SlMoXG4gICAgICAnaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcmVhY3QtZG9tLzE4LjIuMC91bWQvcmVhY3QtZG9tLmRldmVsb3BtZW50LmpzJyxcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgY3R4LmltcG9ydEpTKFxuICAgICAgJ2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3JlYWN0LzE4LjIuMC91bWQvcmVhY3QucHJvZHVjdGlvbi5taW4uanMnLFxuICAgIClcbiAgICBhd2FpdCBjdHguaW1wb3J0SlMoXG4gICAgICAnaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcmVhY3QtZG9tLzE4LjIuMC91bWQvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzJyxcbiAgICApXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBLaW5vQ29udGV4dCB9IGZyb20gJy4uL2tpbm8nXG5cbnR5cGUgVXBkYXRlQXR0ckZ1bjxBdHRyc1R5cGU+ID0gKFxuICBhdHRyTmFtZTogc3RyaW5nLFxuKSA9PiAoQXR0clZhbHVlOiBBdHRyc1R5cGVba2V5b2YgQXR0cnNUeXBlXSkgPT4gdm9pZFxuXG5jb25zdCB1c2VBdHRyc1N0YXRlID0gPEF0dHJzVHlwZSBleHRlbmRzIG9iamVjdD4oXG4gIGN0eDogS2lub0NvbnRleHQsXG4gIGluaXRpYWxBdHRyczogQXR0cnNUeXBlLFxuKTogW0F0dHJzVHlwZSwgVXBkYXRlQXR0ckZ1bjxBdHRyc1R5cGU+XSA9PiB7XG4gIGNvbnN0IFthdHRycywgc2V0QXR0cnNdID0gUmVhY3QudXNlU3RhdGU8QXR0cnNUeXBlPihpbml0aWFsQXR0cnMpXG4gIGNvbnN0IHVwZGF0ZUF0dHI6IFVwZGF0ZUF0dHJGdW48QXR0cnNUeXBlPiA9IChhdHRyTmFtZSkgPT4gKGF0dHJWYWx1ZSkgPT4ge1xuICAgIHNldEF0dHJzKChhdHRycykgPT4gKHsgLi4uYXR0cnMsIFthdHRyTmFtZV06IGF0dHJWYWx1ZSB9KSlcbiAgICBjb25zb2xlLmxvZygnUHVzaGluZyAke2F0dHJOYW1lfSB0byBzZXJ2ZXInLCBhdHRyVmFsdWUpXG4gICAgY3R4LnB1c2hFdmVudChgdXBkYXRlXyR7YXR0ck5hbWV9YCwgYXR0clZhbHVlKVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjdHguaGFuZGxlRXZlbnQ8QXR0cnNUeXBlPigndXBkYXRlJywgKHVwZGF0ZXMpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdBdHRyaWJ1dGUgdXBkYXRlIGZyb20gc2VydmVyJywgdXBkYXRlcylcbiAgICAgIHNldEF0dHJzKChhdHRycykgPT4gKHtcbiAgICAgICAgLi4uT2JqZWN0LmFzc2lnbihhdHRycywgdXBkYXRlcyksXG4gICAgICB9KSlcbiAgICB9KVxuICB9LCBbXSlcbiAgcmV0dXJuIFthdHRycywgdXBkYXRlQXR0cl1cbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlQXR0cnNTdGF0ZVxuIiwgImNvbnN0IENvbm5Ob3RpY2UgPSAoKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwibWItNSByb3VuZGVkLW1kIGJnLWdyYXktMTAwIHAtNCBmb250LWludGVyIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMFwiPlxuICAgIDxwPlxuICAgICAgVG8gbWFrZSByZXF1ZXN0cyB0byB0aGUgS3ViZXJuZXRlcyBjbHVzdGVyLCB5b3UgbmVlZCBhdCBsZWFzdCBvbmVcbiAgICAgIGNvbm5lY3Rpb24gdG8gYSBjbHVzdGVyLlxuICAgIDwvcD5cbiAgICA8cCBjbGFzc05hbWU9XCJwdC0xXCI+XG4gICAgICBUbyBjcmVhdGUgYSBjbHVzdGVyIGNvbm5lY3Rpb24sIHlvdSBjYW4gYWRkIHRoZXsnICd9XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwXCI+Q2x1c3RlciBDb25uZWN0aW9uPC9zcGFuPiBzbWFydCBjZWxsLlxuICAgIDwvcD5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBkZWZhdWx0IENvbm5Ob3RpY2VcbiIsICJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuXG50eXBlIElucHV0UHJvcHMgPSB7XG4gIG5hbWU6IHN0cmluZ1xuICBsYWJlbDogc3RyaW5nXG4gIGRlZmF1bHRWYWx1ZTogc3RyaW5nXG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZFxuICBvcmllbnRhdGlvbj86ICdob3JpeicgfCAndmVydCdcbn1cbmNvbnN0IElucHV0OiBSZWFjdC5GQzxJbnB1dFByb3BzPiA9ICh7XG4gIG5hbWUsXG4gIGxhYmVsLFxuICBkZWZhdWx0VmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBvcmllbnRhdGlvbiA9ICd2ZXJ0Jyxcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoe1xuICAgICAgICAnZmxleCBmbGV4LXJvdyBpdGVtcy1iYXNlbGluZSc6IG9yaWVudGF0aW9uID09ICdob3JpeicsXG4gICAgICB9KX1cbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgaHRtbEZvcj17bmFtZX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsb2NrOiBvcmllbnRhdGlvbiA9PSAndmVydCcsXG4gICAgICAgICAgICAncHItMSB1cHBlcmNhc2UnOiBvcmllbnRhdGlvbiA9PSAnaG9yaXonLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ21iLTEgdGV4dC1zbSBmb250LW1lZGl1bScsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICB2YWx1ZT17ZGVmYXVsdFZhbHVlfVxuICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICBvbkNoYW5nZT17KGUpID0+IG9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICAgIHsgJ2Jsb2NrIHctZnVsbCc6IG9yaWVudGF0aW9uID09ICd2ZXJ0JyB9LFxuICAgICAgICAgICdyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctZ3JheS01MCBwLTEuNSB0ZXh0LXNtIGZvY3VzOmJvcmRlci1ibHVlLTUwMCBmb2N1czpyaW5nLWJsdWUtNTAwJyxcbiAgICAgICAgKX1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgSW5wdXRcbiIsICJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tICcuLi91dGlscydcblxudHlwZSBTZWFyY2hJbnB1dFByb3BzID0ge1xuICBuYW1lOiBzdHJpbmdcbiAgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nXG4gIHNlYXJjaFRlcm06IHN0cmluZ1xuICBvblNlYXJjaDogKHNlYXJjaFRlcm06IHN0cmluZykgPT4gdm9pZFxuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xufVxuXG5jb25zdCBTZWFyY2hJbnB1dDogUmVhY3QuRkM8U2VhcmNoSW5wdXRQcm9wcz4gPSAoe1xuICBuYW1lLFxuICBzZWxlY3RlZFZhbHVlLFxuICBzZWFyY2hUZXJtLFxuICBvblNlYXJjaCxcbiAgcGxhY2Vob2xkZXIsXG59OiBTZWFyY2hJbnB1dFByb3BzKSA9PiB7XG4gIGNvbnN0IHBlcmZvcm1TZWFyY2ggPSBkZWJvdW5jZSgoc2VhcmNoVGVybSkgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSlcbiAgfSwgMzAwKVxuICBjb25zdCBbbG9jYWxTZWFyY2hUZXJtLCBzZXRMb2NhbFNlYXJjaFRlcm1dID0gUmVhY3QudXNlU3RhdGUoc2VhcmNoVGVybSA/PyAnJylcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZWxlY3RlZFZhbHVlICYmIHNldExvY2FsU2VhcmNoVGVybShzZWxlY3RlZFZhbHVlKVxuICB9LCBbc2VsZWN0ZWRWYWx1ZV0pXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGluc2V0LXktMCBsZWZ0LTAgZmxleCBpdGVtcy1jZW50ZXIgcGwtM1wiPlxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezEuNX1cbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoJ2gtNSB3LTUnLCB7XG4gICAgICAgICAgICAgICdiZy1ncmVlbi0yMDAnOiBzZWxlY3RlZFZhbHVlLFxuICAgICAgICAgICAgICAndGV4dC1ncmVlbi04MDAnOiBzZWxlY3RlZFZhbHVlLFxuICAgICAgICAgICAgICAnYm9yZGVyLWdyZWVuLTgwMCc6IHNlbGVjdGVkVmFsdWUsXG4gICAgICAgICAgICAgICdyb3VuZGVkLWxnJzogc2VsZWN0ZWRWYWx1ZSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzZWxlY3RlZFZhbHVlID8gKFxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgZD1cIk05IDEyLjc1TDExLjI1IDE1IDE1IDkuNzVNMjEgMTJjMCAxLjI2OC0uNjMgMi4zOS0xLjU5MyAzLjA2OGEzLjc0NSAzLjc0NSAwIDAxLTEuMDQzIDMuMjk2IDMuNzQ1IDMuNzQ1IDAgMDEtMy4yOTYgMS4wNDNBMy43NDUgMy43NDUgMCAwMTEyIDIxYy0xLjI2OCAwLTIuMzktLjYzLTMuMDY4LTEuNTkzYTMuNzQ2IDMuNzQ2IDAgMDEtMy4yOTYtMS4wNDMgMy43NDUgMy43NDUgMCAwMS0xLjA0My0zLjI5NkEzLjc0NSAzLjc0NSAwIDAxMyAxMmMwLTEuMjY4LjYzLTIuMzkgMS41OTMtMy4wNjhhMy43NDUgMy43NDUgMCAwMTEuMDQzLTMuMjk2IDMuNzQ2IDMuNzQ2IDAgMDEzLjI5Ni0xLjA0M0EzLjc0NiAzLjc0NiAwIDAxMTIgM2MxLjI2OCAwIDIuMzkuNjMgMy4wNjggMS41OTNhMy43NDYgMy43NDYgMCAwMTMuMjk2IDEuMDQzIDMuNzQ2IDMuNzQ2IDAgMDExLjA0MyAzLjI5NkEzLjc0NSAzLjc0NSAwIDAxMjEgMTJ6XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBkPVwiTTIxIDIxbC01LjE5Ny01LjE5N20wIDBBNy41IDcuNSAwIDEwNS4xOTYgNS4xOTZhNy41IDcuNSAwIDAwMTAuNjA3IDEwLjYwN3pcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17bG9jYWxTZWFyY2hUZXJtfVxuICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgb25JbnB1dD17KGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgICAgICBzZXRMb2NhbFNlYXJjaFRlcm0oZS50YXJnZXQudmFsdWUpXG4gICAgICAgICAgICBwZXJmb3JtU2VhcmNoKGUudGFyZ2V0LnZhbHVlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgdy1mdWxsIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIHAtMiBwbC05IHRleHQtc20gZm9jdXM6Ym9yZGVyLWJsdWUtNTAwIGZvY3VzOnJpbmctYmx1ZS01MDBcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gIClcbn1cblxudHlwZSBTZWFyY2hSZXN1bHRQcm9wczxJdGVtVHlwZT4gPSB7XG4gIHJlc3VsdEl0ZW1zOiBbSXRlbVR5cGVdXG4gIGl0ZW1SZW5kZXJlcjogKGl0ZW06IEl0ZW1UeXBlKSA9PiBSZWFjdC5KU1guRWxlbWVudFxuICBvblNlbGVjdDogKGl0ZW06IEl0ZW1UeXBlKSA9PiB2b2lkXG4gIHJlc3VsdEl0ZW1zS2V5RmllbGQ6IGtleW9mIEl0ZW1UeXBlXG59XG5cbmNvbnN0IFNlYXJjaFJlc3VsdCA9IDxJdGVtVHlwZSw+KHtcbiAgcmVzdWx0SXRlbXMsXG4gIGl0ZW1SZW5kZXJlcixcbiAgb25TZWxlY3QsXG4gIHJlc3VsdEl0ZW1zS2V5RmllbGQsXG59OiBTZWFyY2hSZXN1bHRQcm9wczxJdGVtVHlwZT4pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC1oLTM2IG92ZXJmbG93LWF1dG8gcm91bmRlZC1iLWxnIGJvcmRlci1iIGJvcmRlci1sIGJvcmRlci1yIGJvcmRlci1ncmF5LTMwMFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LW1heCBtaW4tdy1mdWxsXCI+XG4gICAgICAgIHtyZXN1bHRJdGVtcy5tYXAoKGl0ZW0pID0+IChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBrZXk9e2l0ZW1bcmVzdWx0SXRlbXNLZXlGaWVsZF0gYXMgc3RyaW5nfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25TZWxlY3QoaXRlbSl9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXItYi1zb2xpZCBsYXN0OmJvcmRlci1iLW5vbmUgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWIgYm9yZGVyLWItZ3JheS0zMDAgYmctZ3JheS01MCBweC0yIHB5LTAuNSBob3ZlcjpiZy1ibHVlLTYwMCBob3Zlcjp0ZXh0LXdoaXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXRlbVJlbmRlcmVyKGl0ZW0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG5cbnR5cGUgU2VhcmNoU2VsZWN0UHJvcHMgPSB7IGxhYmVsOiBzdHJpbmc7IGNsYXNzTmFtZTogc3RyaW5nIH1cblxuY29uc3QgU2VhcmNoU2VsZWN0ID0gPEl0ZW1UeXBlLD4oe1xuICBuYW1lLFxuICBsYWJlbCxcbiAgc2VhcmNoVGVybSxcbiAgb25TZWFyY2gsXG4gIHJlc3VsdEl0ZW1zLFxuICByZXN1bHRJdGVtc0tleUZpZWxkLFxuICBpdGVtUmVuZGVyZXIsXG4gIGNsYXNzTmFtZSxcbiAgb25TZWxlY3QsXG4gIHNlbGVjdGVkVmFsdWUsXG4gIHBsYWNlaG9sZGVyLFxufTogU2VhcmNoSW5wdXRQcm9wcyAmIFNlYXJjaFJlc3VsdFByb3BzPEl0ZW1UeXBlPiAmIFNlYXJjaFNlbGVjdFByb3BzKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+XG4gICAgICA8bGFiZWwgaHRtbEZvcj17bmFtZX0gY2xhc3NOYW1lPVwibWItMSBibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8U2VhcmNoSW5wdXRcbiAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgb25TZWFyY2g9e29uU2VhcmNofVxuICAgICAgICBzZWFyY2hUZXJtPXtzZWFyY2hUZXJtfVxuICAgICAgICBzZWxlY3RlZFZhbHVlPXtzZWxlY3RlZFZhbHVlfVxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAvPlxuICAgICAgeyhyZXN1bHRJdGVtcyAmJiByZXN1bHRJdGVtcy5sZW5ndGgpID4gMCAmJiAoXG4gICAgICAgIDxTZWFyY2hSZXN1bHRcbiAgICAgICAgICByZXN1bHRJdGVtcz17cmVzdWx0SXRlbXN9XG4gICAgICAgICAgaXRlbVJlbmRlcmVyPXtpdGVtUmVuZGVyZXJ9XG4gICAgICAgICAgb25TZWxlY3Q9e29uU2VsZWN0fVxuICAgICAgICAgIHJlc3VsdEl0ZW1zS2V5RmllbGQ9e3Jlc3VsdEl0ZW1zS2V5RmllbGR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaFNlbGVjdFxuIiwgImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5cbnR5cGUgU2VsZWN0UHJvcHMgPSB7XG4gIG5hbWU6IHN0cmluZ1xuICBsYWJlbDogc3RyaW5nXG4gIG9wdGlvbnM6IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W11cbiAgc2VsZWN0ZWRPcHRpb24/OiBzdHJpbmdcbiAgb25DaGFuZ2U6IChvcHRpb246IHN0cmluZykgPT4gdm9pZFxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgb3JpZW50YXRpb24/OiAnaG9yaXonIHwgJ3ZlcnQnXG59XG5cbmNvbnN0IFNlbGVjdCA9ICh7XG4gIG5hbWUsXG4gIGxhYmVsLFxuICBvcHRpb25zLFxuICBzZWxlY3RlZE9wdGlvbixcbiAgb25DaGFuZ2UsXG4gIGNsYXNzTmFtZSA9ICcnLFxuICBvcmllbnRhdGlvbiA9ICd2ZXJ0Jyxcbn06IFNlbGVjdFByb3BzKSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICB7XG4gICAgICAgICdmbGV4IGZsZXgtcm93IGl0ZW1zLWJhc2VsaW5lJzogb3JpZW50YXRpb24gPT0gJ2hvcml6JyxcbiAgICAgIH0sXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgPlxuICAgIDxsYWJlbFxuICAgICAgaHRtbEZvcj17bmFtZX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcbiAgICAgICAge1xuICAgICAgICAgIGJsb2NrOiBvcmllbnRhdGlvbiA9PSAndmVydCcsXG4gICAgICAgICAgJ3ByLTEgdXBwZXJjYXNlJzogb3JpZW50YXRpb24gPT0gJ2hvcml6JyxcbiAgICAgICAgfSxcbiAgICAgICAgJ21iLTEgdGV4dC1zbSBmb250LW1lZGl1bScsXG4gICAgICApfVxuICAgID5cbiAgICAgIHtsYWJlbH1cbiAgICA8L2xhYmVsPlxuICAgIDxzZWxlY3RcbiAgICAgIGlkPXtuYW1lfVxuICAgICAgdmFsdWU9e3NlbGVjdGVkT3B0aW9uIHx8IHVuZGVmaW5lZH1cbiAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gb25DaGFuZ2UoZSEudGFyZ2V0IS52YWx1ZSl9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgIHsgJ2Jsb2NrIHctZnVsbCc6IG9yaWVudGF0aW9uID09ICd2ZXJ0JyB9LFxuICAgICAgICAnIGJnLWNhcmV0LWRvd24gYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy1ncmF5LTUwIGJnLVtsZW5ndGg6MTBweF0gYmctW2NlbnRlcl9yaWdodF8xMHB4XSBiZy1uby1yZXBlYXQgcC0yIHByLTUgdGV4dC1zbSBmb2N1czpib3JkZXItYmx1ZS01MDAgZm9jdXM6cmluZy1ibHVlLTUwMCcsXG4gICAgICApfVxuICAgID5cbiAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgIDxvcHRpb24ga2V5PXtvcHRpb24udmFsdWV9IHZhbHVlPXtvcHRpb24udmFsdWV9PlxuICAgICAgICAgIHtvcHRpb24ubGFiZWx9XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgKSl9XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3RcbiIsICJpbXBvcnQgeyBHVksgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgR1ZLT3B0aW9uID0gKHsgZ3ZrIH06IHsgZ3ZrOiBHVksgfSkgPT4gKFxuICA8PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNDAwXCI+e2d2ay5hcGlfdmVyc2lvbn08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc21cIj57Z3ZrLmtpbmR9PC9kaXY+XG4gIDwvPlxuKVxuXG5leHBvcnQgZGVmYXVsdCBHVktPcHRpb25cbiIsICJpbXBvcnQgeyBLaW5vQ29udGV4dCB9IGZyb20gJy4uL2tpbm8nXG5pbXBvcnQgdXNlQXR0cnNTdGF0ZSBmcm9tICcuLi9zaGFyZWQvYXR0cl9zdGF0ZSdcbmltcG9ydCBDb25uTm90aWNlIGZyb20gJy4uL3NoYXJlZC9jb25uX25vdGljZSdcbmltcG9ydCBJbnB1dCBmcm9tICcuLi9zaGFyZWQvZm9ybS9pbnB1dCdcbmltcG9ydCBTZWFyY2hTZWxlY3QgZnJvbSAnLi4vc2hhcmVkL2Zvcm0vc2VhcmNoX3NlbGVjdCdcbmltcG9ydCBTZWxlY3QgZnJvbSAnLi4vc2hhcmVkL2Zvcm0vc2VsZWN0J1xuaW1wb3J0IEdWS09wdGlvbiBmcm9tICcuLi9zaGFyZWQvZ3ZrX29wdGlvbidcbmltcG9ydCB7IEdWSyB9IGZyb20gJy4uL3NoYXJlZC90eXBlcydcbmltcG9ydCB7IExpc3RDZWxsQXR0cnMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbnRlcmZhY2UgQXBwUHJvcHMge1xuICBpbml0aWFsQXR0cnM6IExpc3RDZWxsQXR0cnNcbiAgY3R4OiBLaW5vQ29udGV4dFxufVxuXG5jb25zdCBBcHA6IFJlYWN0LkZDPEFwcFByb3BzPiA9ICh7IGluaXRpYWxBdHRycywgY3R4IH0pID0+IHtcbiAgY29uc3QgW2F0dHJzLCB1cGRhdGVBdHRyXSA9IHVzZUF0dHJzU3RhdGUoY3R4LCBpbml0aWFsQXR0cnMpXG4gIGNvbnN0IHJlc3VsdF90eXBlcyA9IGF0dHJzLnJlc3VsdF90eXBlc1thdHRycy5yZXF1ZXN0X3R5cGVdXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgeyFhdHRycy5jb25uZWN0aW9uICYmIDxDb25uTm90aWNlIC8+fVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItc29saWQgYm9yZGVyLWdyYXktMzAwIGZvbnQtaW50ZXIgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTYwMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlci1iLXNvbGlkIGZsZXggZ2FwLXgtNSBnYXAteS0zIGJvcmRlci1iIGJvcmRlci1iLWdyYXktMzAwIGJnLWJsdWUtMTAwIHAtM1wiPlxuICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgIG5hbWU9XCJjb25uZWN0aW9uXCJcbiAgICAgICAgICAgIGxhYmVsPVwiQ29ubmVjdGlvblwiXG4gICAgICAgICAgICBvcHRpb25zPXthdHRycy5jb25uZWN0aW9ucy5tYXAoKGNvbm5lY3Rpb24pID0+ICh7XG4gICAgICAgICAgICAgIGxhYmVsOiBjb25uZWN0aW9uLnZhcmlhYmxlLFxuICAgICAgICAgICAgICB2YWx1ZTogY29ubmVjdGlvbi52YXJpYWJsZSxcbiAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uPXthdHRycy5jb25uZWN0aW9uPy52YXJpYWJsZT8udG9TdHJpbmcoKX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt1cGRhdGVBdHRyKCdjb25uZWN0aW9uJyl9XG4gICAgICAgICAgICBvcmllbnRhdGlvbj1cImhvcml6XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgIG5hbWU9XCJyZXF1ZXN0X3R5cGVcIlxuICAgICAgICAgICAgbGFiZWw9XCJSZXF1ZXN0IFR5cGVcIlxuICAgICAgICAgICAgb3B0aW9ucz17YXR0cnMucmVxdWVzdF90eXBlcy5tYXAoKHJlcXVlc3RfdHlwZSkgPT4gKHtcbiAgICAgICAgICAgICAgbGFiZWw6IHJlcXVlc3RfdHlwZS50b1VwcGVyQ2FzZSgpLFxuICAgICAgICAgICAgICB2YWx1ZTogcmVxdWVzdF90eXBlLFxuICAgICAgICAgICAgfSkpfVxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb249e2F0dHJzLnJlcXVlc3RfdHlwZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt1cGRhdGVBdHRyKCdyZXF1ZXN0X3R5cGUnKX1cbiAgICAgICAgICAgIG9yaWVudGF0aW9uPVwiaG9yaXpcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAge3Jlc3VsdF90eXBlcyAmJiAoXG4gICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgIG5hbWU9XCJyZXN1bHRfdHlwZVwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiUmVzdWx0IFR5cGVcIlxuICAgICAgICAgICAgICBvcHRpb25zPXtyZXN1bHRfdHlwZXMubWFwKChyZXN1bHRfdHlwZSkgPT4gKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogcmVzdWx0X3R5cGUudG9VcHBlckNhc2UoKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcmVzdWx0X3R5cGUsXG4gICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb249e2F0dHJzLnJlc3VsdF90eXBlfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dXBkYXRlQXR0cigncmVzdWx0X3R5cGUnKX1cbiAgICAgICAgICAgICAgb3JpZW50YXRpb249XCJob3JpelwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICBsYWJlbD1cIkFzc2lnbiBUb1wiXG4gICAgICAgICAgICBuYW1lPVwiYXNzaWduX3RvXCJcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17YXR0cnMucmVzdWx0X3ZhcmlhYmxlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VwZGF0ZUF0dHIoJ3Jlc3VsdF92YXJpYWJsZScpfVxuICAgICAgICAgICAgb3JpZW50YXRpb249XCJob3JpelwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAteC01IHAtM1wiPlxuICAgICAgICAgIHthdHRycy5jb25uZWN0aW9uICYmIChcbiAgICAgICAgICAgIDxTZWFyY2hTZWxlY3Q8R1ZLPlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtYXgtdy1mdWxsXCJcbiAgICAgICAgICAgICAgbmFtZT1cImd2a1wiXG4gICAgICAgICAgICAgIGxhYmVsPVwiUmVzb3VyY2UgS2luZFwiXG4gICAgICAgICAgICAgIG9uU2VhcmNoPXt1cGRhdGVBdHRyKCdzZWFyY2hfdGVybScpfVxuICAgICAgICAgICAgICBzZWFyY2hUZXJtPXthdHRycy5zZWFyY2hfdGVybX1cbiAgICAgICAgICAgICAgcmVzdWx0SXRlbXNLZXlGaWVsZD17J2luZGV4J31cbiAgICAgICAgICAgICAgcmVzdWx0SXRlbXM9e2F0dHJzLnNlYXJjaF9yZXN1bHRfaXRlbXN9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXt1cGRhdGVBdHRyKCdndmsnKX1cbiAgICAgICAgICAgICAgaXRlbVJlbmRlcmVyPXsoaXRlbTogR1ZLKSA9PiA8R1ZLT3B0aW9uIGd2az17aXRlbX0gLz59XG4gICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWU9e2F0dHJzLmd2az8ua2luZH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJhcHBzL3YxIERlcGxveW1lbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHthdHRycy5uYW1lc3BhY2VzICYmIChcbiAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgbmFtZT1cIm5hbWVzcGFjZVwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiTmFtZXNwYWNlXCJcbiAgICAgICAgICAgICAgb3B0aW9ucz17YXR0cnMubmFtZXNwYWNlcy5tYXAoKG5zKSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBucyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnMsXG4gICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb249e2F0dHJzLm5hbWVzcGFjZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3VwZGF0ZUF0dHIoJ25hbWVzcGFjZScpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHthdHRycy5yZXNvdXJjZXMgJiYgKFxuICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICBuYW1lPVwicmVzb3VyY2VcIlxuICAgICAgICAgICAgICBsYWJlbD1cIlJlc291cmNlIE5hbWVcIlxuICAgICAgICAgICAgICBvcHRpb25zPXthdHRycy5yZXNvdXJjZXMubWFwKChucykgPT4gKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbnMsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG5zLFxuICAgICAgICAgICAgICB9KSl9XG4gICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uPXthdHRycy5yZXNvdXJjZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3VwZGF0ZUF0dHIoJ3Jlc291cmNlJyl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQXBwXG4iLCAiaW1wb3J0IHsgS2lub0NvbnRleHQgfSBmcm9tICcuLi9raW5vJ1xuaW1wb3J0IEVycm9yIGZyb20gJy4uL3NoYXJlZC9lcnJvcidcbmltcG9ydCB7IGxvYWRSZWFjdCB9IGZyb20gJy4uL3NoYXJlZC91dGlscydcbmltcG9ydCBBcHAgZnJvbSAnLi9hcHAnXG5pbXBvcnQgeyBMaXN0Q2VsbEF0dHJzIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IGluaXQgPSBhc3luYyAoXG4gIGN0eDogS2lub0NvbnRleHQsXG4gIGF0dHJzOiBMaXN0Q2VsbEF0dHJzLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGF3YWl0IGxvYWRSZWFjdChjdHgsIGF0dHJzKVxuXG4gIGN0eC5yb290LmlubmVySFRNTCA9ICdsb2FkaW5nLi4uJ1xuXG4gIGN0eC5pbXBvcnRDU1MoJ21haW4uY3NzJylcbiAgY3R4LmltcG9ydENTUyhcbiAgICAnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDQwMDs1MDAmZGlzcGxheT1zd2FwJyxcbiAgKVxuXG4gIGNvbnN0IHJvb3QgPSBSZWFjdERPTS5jcmVhdGVSb290KGN0eC5yb290KVxuICBpZiAoYXR0cnMuZXJyb3IpIHtcbiAgICByZXR1cm4gcm9vdC5yZW5kZXIoPEVycm9yIG1lc3NhZ2U9e2F0dHJzLmVycm9yfSAvPilcbiAgfVxuXG4gIHJvb3QucmVuZGVyKDxBcHAgaW5pdGlhbEF0dHJzPXthdHRyc30gY3R4PXtjdHh9IC8+KVxufVxuIl0sCiAgIm1hcHBpbmdzIjogInlnQkFBQSxJQUFBQSxFQUFBQyxFQUFBLENBQUFDLEVBQUFDLElBQUEsRUFPQyxVQUFZLENBQ1osYUFFQSxJQUFJQyxFQUFTLENBQUMsRUFBRSxlQUNaQyxFQUFtQixnQkFFdkIsU0FBU0MsR0FBYSxDQUdyQixRQUZJQyxFQUFVLENBQUMsRUFFTkMsRUFBSSxFQUFHQSxFQUFJLFVBQVUsT0FBUUEsSUFBSyxDQUMxQyxJQUFJQyxFQUFNLFVBQVVELENBQUMsRUFDckIsR0FBS0MsRUFFTCxLQUFJQyxFQUFVLE9BQU9ELEVBRXJCLEdBQUlD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TCxvQkFBQ0ssRUFBQSxDQUNDLEtBQUssWUFDTCxNQUFNLFlBQ04sUUFBU0wsRUFBTSxXQUFXLElBQUthLElBQVEsQ0FDckMsTUFBT0EsRUFDUCxNQUFPQSxDQUNULEVBQUUsRUFDRixlQUFnQmIsRUFBTSxVQUN0QixTQUFVQyxFQUFXLFdBQVcsRUFDbEMsRUFFREQsRUFBTSxXQUNMLG9CQUFDSyxFQUFBLENBQ0MsS0FBSyxXQUNMLE1BQU0sZ0JBQ04sUUFBU0wsRUFBTSxVQUFVLElBQUthLElBQVEsQ0FDcEMsTUFBT0EsRUFDUCxNQUFPQSxDQUNULEVBQUUsRUFDRixlQUFnQmIsRUFBTSxTQUN0QixTQUFVQyxFQUFXLFVBQVUsRUFDakMsQ0FFSixDQUNGLENBQ0YsQ0FFSixFQUVPYSxFQUFRakIsRUMzR1IsSUFBTWtCLEdBQU8sTUFDbEJDLEVBQ0FDLElBQ2tCLENBQ2xCLE1BQU1DLEVBQVVGLEVBQUtDLENBQUssRUFFMUJELEVBQUksS0FBSyxVQUFZLGFBRXJCQSxFQUFJLFVBQVUsVUFBVSxFQUN4QkEsRUFBSSxVQUNGLDBFQUNGLEVBRUEsSUFBTUcsRUFBTyxTQUFTLFdBQVdILEVBQUksSUFBSSxFQUN6QyxHQUFJQyxFQUFNLE1BQ1IsT0FBT0UsRUFBSyxPQUFPLG9CQUFDQyxFQUFBLENBQU0sUUFBU0gsRUFBTSxNQUFPLENBQUUsRUFHcERFLEVBQUssT0FBTyxvQkFBQ0UsRUFBQSxDQUFJLGFBQWNKLEVBQU8sSUFBS0QsRUFBSyxDQUFFLENBQ3BEIiwKICAibmFtZXMiOiBbInJlcXVpcmVfY2xhc3NuYW1lcyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImhhc093biIsICJuYXRpdmVDb2RlU3RyaW5nIiwgImNsYXNzTmFtZXMiLCAiY2xhc3NlcyIsICJpIiwgImFyZyIsICJhcmdUeXBlIiwgImlubmVyIiwgImtleSIsICJFcnJvciIsICJtZXNzYWdlIiwgImVycm9yX2RlZmF1bHQiLCAiZGVib3VuY2UiLCAiY2FsbGJhY2siLCAidGltZW91dCIsICJ0aW1lciIsICJhcmdzIiwgImxvYWRSZWFjdCIsICJjdHgiLCAidXNlQXR0cnNTdGF0ZSIsICJjdHgiLCAiaW5pdGlhbEF0dHJzIiwgImF0dHJzIiwgInNldEF0dHJzIiwgInVwZGF0ZUF0dHIiLCAiYXR0ck5hbWUiLCAiYXR0clZhbHVlIiwgInVwZGF0ZXMiLCAiYXR0cl9zdGF0ZV9kZWZhdWx0IiwgIkNvbm5Ob3RpY2UiLCAiY29ubl9ub3RpY2VfZGVmYXVsdCIsICJpbXBvcnRfY2xhc3NuYW1lcyIsICJJbnB1dCIsICJuYW1lIiwgImxhYmVsIiwgImRlZmF1bHRWYWx1ZSIsICJvbkNoYW5nZSIsICJvcmllbnRhdGlvbiIsICJjbGFzc05hbWVzIiwgImUiLCAiaW5wdXRfZGVmYXVsdCIsICJpbXBvcnRfY2xhc3NuYW1lcyIsICJTZWFyY2hJbnB1dCIsICJuYW1lIiwgInNlbGVjdGVkVmFsdWUiLCAic2VhcmNoVGVybSIsICJvblNlYXJjaCIsICJwbGFjZWhvbGRlciIsICJwZXJmb3JtU2VhcmNoIiwgImRlYm91bmNlIiwgImxvY2FsU2VhcmNoVGVybSIsICJzZXRMb2NhbFNlYXJjaFRlcm0iLCAiY2xhc3NOYW1lcyIsICJlIiwgIlNlYXJjaFJlc3VsdCIsICJyZXN1bHRJdGVtcyIsICJpdGVtUmVuZGVyZXIiLCAib25TZWxlY3QiLCAicmVzdWx0SXRlbXNLZXlGaWVsZCIsICJpdGVtIiwgIlNlYXJjaFNlbGVjdCIsICJsYWJlbCIsICJjbGFzc05hbWUiLCAic2VhcmNoX3NlbGVjdF9kZWZhdWx0IiwgImltcG9ydF9jbGFzc25hbWVzIiwgIlNlbGVjdCIsICJuYW1lIiwgImxhYmVsIiwgIm9wdGlvbnMiLCAic2VsZWN0ZWRPcHRpb24iLCAib25DaGFuZ2UiLCAiY2xhc3NOYW1lIiwgIm9yaWVudGF0aW9uIiwgImNsYXNzTmFtZXMiLCAiZSIsICJvcHRpb24iLCAic2VsZWN0X2RlZmF1bHQiLCAiR1ZLT3B0aW9uIiwgImd2ayIsICJndmtfb3B0aW9uX2RlZmF1bHQiLCAiQXBwIiwgImluaXRpYWxBdHRycyIsICJjdHgiLCAiYXR0cnMiLCAidXBkYXRlQXR0ciIsICJhdHRyX3N0YXRlX2RlZmF1bHQiLCAicmVzdWx0X3R5cGVzIiwgImNvbm5fbm90aWNlX2RlZmF1bHQiLCAic2VsZWN0X2RlZmF1bHQiLCAiY29ubmVjdGlvbiIsICJyZXF1ZXN0X3R5cGUiLCAicmVzdWx0X3R5cGUiLCAiaW5wdXRfZGVmYXVsdCIsICJzZWFyY2hfc2VsZWN0X2RlZmF1bHQiLCAiaXRlbSIsICJndmtfb3B0aW9uX2RlZmF1bHQiLCAibnMiLCAiYXBwX2RlZmF1bHQiLCAiaW5pdCIsICJjdHgiLCAiYXR0cnMiLCAibG9hZFJlYWN0IiwgInJvb3QiLCAiZXJyb3JfZGVmYXVsdCIsICJhcHBfZGVmYXVsdCJdCn0K