From d895d1ad82fbdf348d75650517d774039e95841a Mon Sep 17 00:00:00 2001 From: Goteii Date: Sun, 1 Sep 2024 16:30:51 +0200 Subject: [PATCH] rwd small fixes --- index.html | 2 +- main.c01d5e4e97b085990569.js | 2 -- main.e6229675bbf2bc98bb17.js | 2 ++ 3 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 main.c01d5e4e97b085990569.js create mode 100644 main.e6229675bbf2bc98bb17.js diff --git a/index.html b/index.html index fd0f614..3929d25 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Mindpal - Recruitment task
Information circle

No notes yet

Add a note to keep track of your learnings.

\ No newline at end of file +Mindpal - Recruitment task
Information circle

No notes yet

Add a note to keep track of your learnings.

\ No newline at end of file diff --git a/main.c01d5e4e97b085990569.js b/main.c01d5e4e97b085990569.js deleted file mode 100644 index 3381f46..0000000 --- a/main.c01d5e4e97b085990569.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{"use strict";var e={100:(e,t,n)=>{n.d(t,{A:()=>C});var A=n(354),o=n.n(A),r=n(314),a=n.n(r),i=n(417),d=n.n(i),c=new URL(n(246),n.b),l=a()(o());l.push([e.id,"@import url(https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap);"]);var s=d()(c);l.push([e.id,`*{font-family:"Inter",sans-serif}.btn{border-radius:.75rem;padding:.5rem 1rem;text-align:center;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1rem;font-weight:500;line-height:1.5rem}.btn.btn-primary{border:0;color:#fff;background:#6b3c9b}.btn.btn-primary:hover{background:#844dba}.btn.btn-primary:active{background:#5b2f87}.btn.btn-secondary{color:#1b1c1e;background:#fff;border:1px solid #bcbcbd}.btn.btn-secondary:hover{background:#e7e7e7}.btn.btn-secondary:active{background:#bdbdbd}.text-field{border-radius:.75rem;padding:.5rem 1rem;background:#eeeff0;border:0;font-size:1rem;line-height:1.5rem}.text-field:hover{background-color:#dcdee0}.text-field:focus{background-color:#fff}.text-field::placeholder{color:#5b5c5e;line-height:1.6rem}.btn.btn-cancel{color:#0f75b8;background:rgba(0,0,0,0);border:0;border-radius:0;font-size:.875rem;line-height:1.4875rem;font-weight:400;padding:.5rem .75rem}.btn.btn-cancel:hover{font-weight:500;text-decoration:underline;text-underline-offset:.375rem}*,*::after,*::before{box-sizing:border-box;padding:0;margin:0}.btn-scroll{display:flex;align-items:center;border:0;background:rgba(0,0,0,0);cursor:pointer;gap:.5rem;padding:1rem 1rem 0}.btn-scroll>h1{font-weight:500;font-size:1.25rem;line-height:1.875rem}.search{padding:0 1rem;margin-bottom:.5rem}.search-input{width:100%;margin-top:1.5rem;background-image:url(${s});background-repeat:no-repeat;background-position:.75rem 50%;padding:.5rem .75rem .5rem 3rem}.container{margin-top:1.5rem;display:flex;flex-direction:column;align-items:center;height:calc(100dvh - 150px);gap:1rem;overflow-y:auto}.details-wrapper{padding:0 1rem;display:flex;flex-direction:column;align-items:center}.details{margin-top:2.3125rem;padding:0 1.25rem;display:flex;flex-direction:column;align-items:center;gap:.75rem;text-align:center}.information{height:4rem}.details-wrapper>.details>.heading{font-weight:500;font-size:1.25rem;line-height:1.875rem}.details-wrapper>.details>.description{font-weight:400;font-size:1rem;line-height:1.6rem}.details-wrapper>.add-note{margin-top:1.5rem;gap:.5rem;font-weight:500}.add-note-primary{width:calc(100% - 2rem);margin:0 1rem}.note-tile{background:#fff;border-radius:.75rem;box-shadow:0px 4px 16px 0px rgba(0,0,0,.0705882353);width:calc(100% - 2rem);gap:.75rem;display:flex;flex-direction:column;padding:.75rem}.note-header{display:flex;align-items:center;justify-content:space-between}.note-tile:first-of-type{margin-top:.5rem}.note-header>.note-title{font-weight:500;font-size:.875rem;line-height:1.4875rem;color:#1b1c1e}.note-header>.actions{gap:.5rem;display:flex}.note-header>.actions>.action-btn{background:rgba(0,0,0,0);border:0;cursor:pointer}.note-body{font-size:.875rem;line-height:1.4875rem;color:#3b3c3e}.note-footer{font-size:.75rem;line-height:.975rem;color:#5b5c5e}.modal{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:calc(100% - 32px);border:0;background:#fff;padding:1.5rem;border-radius:1rem;gap:1.5rem}.modal>.modal-container{display:flex;flex-direction:column;gap:1.5rem}.modal-heading{font-weight:500;font-size:1.25rem;line-height:1.875rem}.modal-body{font-weight:400;line-height:1.6rem}.modal-footer{display:flex;justify-content:space-between;gap:1rem}.modal-action-btn{width:50%}dialog::backdrop{background-color:rgba(0,0,0,.3019607843)}.add-new-note-container,.edit-note-container{padding:1.25rem 1rem;width:100%;display:flex;flex-direction:column;gap:1rem;box-shadow:0px 0px 16px 0px rgba(0,0,0,.0784313725);border-width:1px 0px 1px 0px;border-style:solid;border-color:#eeeff0}.add-new-note-heading,.edit-note-heading{display:flex;align-items:center;justify-content:space-between}.add-new-note-heading>h2,.edit-note-heading>h2{font-weight:500;font-size:1rem;line-height:1.6rem}.add-new-note-body,.edit-note-body{display:flex;flex-direction:column;gap:1rem;position:relative}.add-new-note.btn.btn-primary,.edit-note.btn.btn-primary{position:absolute;bottom:1rem;right:1rem}.note-body-textarea{resize:vertical;min-height:210px}.note-tile.note-edit-mode{width:100%;padding:0}input[disabled]{cursor:not-allowed}.hide{display:none}`,"",{version:3,sources:["webpack://./src/styles/_typography.scss","webpack://./src/styles/_design.scss","webpack://./src/styles.scss"],names:[],mappings:"AAGA,EACE,8BAAA,CCFF,KACE,oBAAA,CACA,kBAAA,CACA,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,cAAA,CACA,eAAA,CACA,kBAAA,CAGF,iBACE,QAAA,CACA,UAAA,CACA,kBAAA,CAGF,uBACE,kBAAA,CAGF,wBACE,kBAAA,CAGF,mBACE,aAAA,CACA,eAAA,CACA,wBAAA,CAEF,yBACE,kBAAA,CAEF,0BACE,kBAAA,CAGF,YACE,oBAAA,CACA,kBAAA,CACA,kBAAA,CACA,QAAA,CACA,cAAA,CACA,kBAAA,CAEF,kBACE,wBAAA,CAEF,kBACE,qBAAA,CAGF,yBACE,aAAA,CACA,kBAAA,CAGF,gBACE,aAAA,CACA,wBAAA,CACA,QAAA,CACA,eAAA,CACA,iBAAA,CACA,qBAAA,CACA,eAAA,CACA,oBAAA,CAEF,sBACE,eAAA,CACA,yBAAA,CACA,6BAAA,CCtEF,qBAGE,qBAAA,CACA,SAAA,CACA,QAAA,CAGF,YACE,YAAA,CACA,kBAAA,CACA,QAAA,CACA,wBAAA,CACA,cAAA,CACA,SAAA,CACA,mBAAA,CAGF,eACE,eAAA,CACA,iBAAA,CACA,oBAAA,CAGF,QACE,cAAA,CACA,mBAAA,CAGF,cACE,UAAA,CACA,iBAAA,CACA,wDAAA,CACA,2BAAA,CACA,8BAAA,CACA,+BAAA,CAMF,WACE,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,2BAAA,CACA,QAAA,CACA,eAAA,CAEF,iBACE,cAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAEF,SACE,oBAAA,CACA,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,UAAA,CACA,iBAAA,CAEF,aACE,WAAA,CAEF,mCACE,eAAA,CACA,iBAAA,CACA,oBAAA,CAEF,uCACE,eAAA,CACA,cAAA,CACA,kBAAA,CAEF,2BACE,iBAAA,CACA,SAAA,CACA,eAAA,CAKF,kBACE,uBAAA,CACA,aAAA,CAIF,WACE,eAAA,CACA,oBAAA,CACA,mDAAA,CACA,uBAAA,CACA,UAAA,CACA,YAAA,CACA,qBAAA,CACA,cAAA,CAEF,aACE,YAAA,CACA,kBAAA,CACA,6BAAA,CAEF,yBACE,gBAAA,CAEF,yBACE,eAAA,CACA,iBAAA,CACA,qBAAA,CACA,aAAA,CAEF,sBACE,SAAA,CACA,YAAA,CAEF,kCACE,wBAAA,CACA,QAAA,CACA,cAAA,CAEF,WACE,iBAAA,CACA,qBAAA,CACA,aAAA,CAEF,aACE,gBAAA,CACA,mBAAA,CACA,aAAA,CAIF,OACE,iBAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,uBAAA,CACA,QAAA,CACA,eAAA,CACA,cAAA,CACA,kBAAA,CACA,UAAA,CAGF,wBACE,YAAA,CACA,qBAAA,CACA,UAAA,CAGF,eACE,eAAA,CACA,iBAAA,CACA,oBAAA,CAGF,YACE,eAAA,CACA,kBAAA,CAGF,cACE,YAAA,CACA,6BAAA,CACA,QAAA,CAGF,kBACE,SAAA,CAGF,iBACE,wCAAA,CAIF,6CAEE,oBAAA,CACA,UAAA,CACA,YAAA,CACA,qBAAA,CACA,QAAA,CACA,mDAAA,CACA,4BAAA,CACA,kBAAA,CACA,oBAAA,CAGF,yCAEE,YAAA,CACA,kBAAA,CACA,6BAAA,CAEF,+CAEE,eAAA,CACA,cAAA,CACA,kBAAA,CAGF,mCAEE,YAAA,CACA,qBAAA,CACA,QAAA,CACA,iBAAA,CAGF,yDAEE,iBAAA,CACA,WAAA,CACA,UAAA,CAGF,oBACE,eAAA,CACA,gBAAA,CAGF,0BACE,UAAA,CACA,SAAA,CAGF,gBACE,kBAAA,CAGF,MACE,YAAA",sourceRoot:""}]);const C=l},314:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",A=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),A&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),A&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,A,o,r){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(A)for(var i=0;i0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=r),n&&(l[2]?(l[1]="@media ".concat(l[2]," {").concat(l[1],"}"),l[2]=n):l[2]=n),o&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=o):l[4]="".concat(o)),t.push(l))}},t}},417:e=>{e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},354:e=>{e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var A=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(A),r="/*# ".concat(o," */");return[t].concat([r]).join("\n")}return[t].join("\n")}},72:e=>{var t=[];function n(e){for(var n=-1,A=0;A{var t={};e.exports=function(e,n){var A=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!A)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");A.appendChild(n)}},540:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},56:(e,t,n)=>{e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},825:e=>{e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var A="";n.supports&&(A+="@supports (".concat(n.supports,") {")),n.media&&(A+="@media ".concat(n.media," {"));var o=void 0!==n.layer;o&&(A+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),A+=n.css,o&&(A+="}"),n.media&&(A+="}"),n.supports&&(A+="}");var r=n.sourceMap;r&&"undefined"!=typeof btoa&&(A+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleTagTransform(A,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},113:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},322:(e,t,n)=>{e.exports=n.p+"a6885dadfe803bb665f3.svg"},988:(e,t,n)=>{e.exports=n.p+"d285bc69c2a2bd43a5b0.svg"},294:(e,t,n)=>{e.exports=n.p+"4364ca1ecf5bc4a26775.svg"},994:(e,t,n)=>{e.exports=n.p+"d46ebef9c242d5e49737.svg"},346:(e,t,n)=>{e.exports=n.p+"02d6fee105b7817f0579.svg"},246:(e,t,n)=>{e.exports=n.p+"9e3950427ed88a91c6ee.svg"}},t={};function n(A){var o=t[A];if(void 0!==o)return o.exports;var r=t[A]={id:A,exports:{}};return e[A](r,r.exports,n),r.exports}n.m=e,n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var A in t)n.o(t,A)&&!n.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var t=n.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var A=t.getElementsByTagName("script");if(A.length)for(var o=A.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=A[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),n.b=document.baseURI||self.location.href,n.nc=void 0;var A=n(72),o=n.n(A),r=n(825),a=n.n(r),i=n(659),d=n.n(i),c=n(56),l=n.n(c),s=n(540),C=n.n(s),p=n(113),m=n.n(p),u=n(100),g={};g.styleTagTransform=m(),g.setAttributes=l(),g.insert=d().bind(null,"head"),g.domAPI=a(),g.insertStyleElement=C(),o()(u.A,g),u.A&&u.A.locals&&u.A.locals;const h={0:"January",1:"February",2:"March",3:"April",4:"May",5:"June",6:"July",7:"August",8:"September",9:"October",10:"November",11:"December"},f=()=>Array.from(document.querySelectorAll(".note-tile")),b=e=>e.getAttribute("data-id")||e.parentElement.getAttribute("data-id"),y=e=>document.querySelector(`.note-tile[data-id="${e}"]`),E=e=>({title:document.getElementById("note-title-"+e).textContent||"",body:document.getElementById("note-body-"+e).textContent||""}),B=()=>document.getElementById("container"),v=()=>{const e=new Date;return`${h[e.getMonth()]} ${e.getDate()}`};let x=0;const w=()=>{const e=N("add-new-note-container"),t=S("add-new-note-heading"),n=U({textContent:"Add new note"}),A=Y({className:"btn btn-cancel",textContent:"Cancel",id:"add-note-cancel"});t.appendChild(n),t.appendChild(A);const o=S("add-new-note-body"),r=G({className:"text-field",id:"note-title",placeholder:"Untitled Note"}),a=L({className:"text-field note-body-textarea",id:"note-body",placeholder:"Your note..."}),i=Y({className:"btn btn-primary add-new-note",textContent:"Add",id:"add-new-note"});return o.appendChild(r),o.appendChild(a),o.appendChild(i),e.appendChild(t),e.appendChild(o),e},k=()=>{const e=S("details-wrapper"),t=S("details");[q({src:n(988),loading:"eager",alt:"Information circle",className:"information"}),U({textContent:"No notes yet",className:"heading"}),z({type:"p",textContent:"Add a note to keep track of your learnings.",className:"description"})].forEach((e=>t.appendChild(e)));const A=Y({className:"btn btn-secondary add-note",id:"add-note"}),o=q({src:n(994),alt:"",loading:"eager"}),r=z({type:"span",textContent:"Add Note"});return A.appendChild(o),A.appendChild(r),e.appendChild(t),e.appendChild(A),e},F=e=>{const{title:t,body:n,id:A}=e,o=y(A);return Array.from(o.children).forEach((e=>e.remove())),[M(t,A),T(n,A),j()].forEach((e=>o.appendChild(e))),o},I=()=>Y({className:"btn btn-primary add-note-primary",id:"add-new-note-primary",textContent:"Add New"}),N=e=>{const t=document.createElement("section");return t.className=e,t},S=e=>{const t=document.createElement("div");return t.className=e,t},G=e=>{const t=document.createElement("input");return t.className=e.className,t.id=e.id,t.placeholder=e.placeholder,t.value=e.value||"",t},L=e=>{const t=document.createElement("textarea");return t.className=e.className,t.id=e.id,t.placeholder=e.placeholder,t.value=e.value||"",t},Y=e=>{const t=document.createElement("button");return t.className=e.className,t.textContent=e.textContent||"",t.id=e.id,t.setAttribute("data-id",e["data-id"]||""),t},U=e=>{const t=document.createElement(e.heading||"h2");return t.textContent=e.textContent,t.className=e.className||"",t.id=e.id||"",t},q=e=>{const t=document.createElement("img");return t.src=e.src,t.loading=e.loading,t.alt=e.alt,t},z=e=>{const t=document.createElement(e.type);return t.textContent=e.textContent,t.className=e.className||"",t.id=e.id||"",t},M=(e,t)=>{const A=S("note-header"),o=U({className:"note-title",textContent:e,id:"note-title-"+t}),r=S("actions"),a=Y({className:"action-btn edit-action",id:"edit-note-"+t,"data-id":t}),i=q({alt:"Edit note",loading:"lazy",src:n(322)});a.appendChild(i);const d=Y({className:"action-btn remove-action",id:"remove-note-"+t,"data-id":t}),c=q({alt:"Remove note",loading:"lazy",src:n(346)});return d.appendChild(c),r.appendChild(a),r.appendChild(d),A.appendChild(o),A.appendChild(r),A},T=(e,t)=>{const n=S("note-body"),A=z({type:"p",textContent:e,id:"note-body-"+t});return n.appendChild(A),n},j=()=>{const e=S("note-footer"),t=z({type:"p",textContent:v()});return e.appendChild(t),e},Q=()=>{document.getElementById("add-note").addEventListener("click",H)},R=()=>{document.getElementById("add-note-cancel").addEventListener("click",K)},D=()=>{document.getElementById("add-new-note").addEventListener("click",X)},O=()=>{document.getElementById("add-new-note-primary").addEventListener("click",Z)},$=e=>{document.getElementById("edit-note-"+e).addEventListener("click",(e=>W(e)))},P=e=>{document.getElementById("remove-note-"+e).addEventListener("click",(e=>_(e)))},W=e=>{const t=e.target,n=b(t),A=y(n),{title:o,body:r}=E(n),a=(e=>{const{id:t,title:n,body:A}=e,o=N("edit-note-container"),r=S("edit-note-heading"),a=U({heading:"h2",textContent:"Edit note"}),i=Y({className:"btn btn-cancel",id:"edit-note-cancel-btn-"+t,"data-id":t,textContent:"Cancel"});r.appendChild(a),r.appendChild(i);const d=S("edit-note-body");return[G({className:"text-field",id:"edit-note-title-"+t,placeholder:"Untitlted Note",value:n}),L({className:"text-field note-body-textarea",id:"edit-note-body-"+t,placeholder:"Your note...",value:A}),Y({className:"btn btn-primary edit-note",id:"edit-note-btn-"+t,"data-id":t,textContent:"Edit"})].forEach((e=>d.appendChild(e))),o.appendChild(r),o.appendChild(d),o})({id:n,title:o,body:r});A.classList.add("note-edit-mode"),A.replaceChildren(a),(e=>{const{id:t}=e;document.getElementById("edit-note-cancel-btn-"+t).addEventListener("click",(()=>te(e)))})({id:n,title:o,body:r}),(e=>{document.getElementById("edit-note-btn-"+e).addEventListener("click",(()=>ee(e)))})(n)},_=e=>{const t=e.target,n=b(t);document.getElementById("modal").showModal(),(e=>{document.getElementById("modal-remove").addEventListener("click",(()=>ne(e)))})(n),J()},J=()=>{document.getElementById("modal-cancel").addEventListener("click",Ae)},H=()=>{const e=w();B().replaceChildren(e),R(),D()},K=()=>{if(f().length)return void V();const e=k(),t=document.getElementById("container");t?.replaceChildren(e),Q()},V=()=>{const e=I(),t=B();t.firstChild.remove(),t.prepend(e),O()},X=()=>{{const e=((e,t)=>{const n=N("note-tile");return n.setAttribute("data-id",x.toString()),[M(e,x.toString()),T(t,x.toString()),j()].forEach((e=>n.appendChild(e))),x++,n})(document.getElementById("note-title").value,document.getElementById("note-body").value),t=document.getElementById("container"),n=I(),A=f(),o=e.getAttribute("data-id");if(oe("enable"),A.length)return t.firstChild.remove(),t.prepend(n),t.appendChild(e),$(o),P(o),void O();t.replaceChildren(n,e),$(o),P(o),O()}},Z=()=>{const e=document.getElementById("add-new-note-primary"),t=w(),n=document.getElementById("container");e.remove(),n.prepend(t),R(),D()},ee=e=>{y(e).classList.remove("note-edit-mode"),(e=>{const t=document.getElementById("edit-note-title-"+e).value,n=document.getElementById("edit-note-body-"+e).value;F({id:e,title:t,body:n})})(e),$(e),P(e)},te=e=>{const{id:t}=e;y(t).classList.remove("note-edit-mode"),F(e),$(t),P(t)},ne=e=>{const t=document.getElementById("modal");if(y(e)?.remove(),t.close(),!f().length){const e=document.getElementById("container"),t=k();return e.replaceChildren(t),oe("disable"),void Q()}const n=document.getElementById("search-notes").value;re(n)},Ae=()=>{document.getElementById("modal").close()},oe=e=>{const t=document.getElementById("search-notes");"enable"===e?t.removeAttribute("disabled"):(t.value="",t.setAttribute("disabled","true"))},re=e=>{const t=f();e||t.forEach((e=>{e.classList.remove("hide")}));const A=t.filter((t=>{const n=t.getAttribute("data-id"),A=E(n);return A.body.includes(e)||A.title.includes(e)})).map((e=>e.getAttribute("data-id"))),o=document.getElementById("no-results");if(!A.length&&!o){const e=(()=>{const e=N("no-results");e.id="no-results";const t=S("details");return[q({src:n(294),loading:"lazy",alt:"Sad emoji",className:"information"}),U({textContent:"We could not find any matching results",className:"heading"}),z({type:"p",textContent:"Looks like you don't have a note with title or body matching your phrase. Try to rephrase or create a new note.",className:"description"})].forEach((e=>t.appendChild(e))),e.appendChild(t),e})();B().appendChild(e)}o&&A.length&&o.remove(),t.forEach((e=>{A.includes(e.getAttribute("data-id"))?e.classList.remove("hide"):e.classList.add("hide")}))};Q(),(()=>{const e=document.getElementById("search-notes");e.addEventListener("input",(()=>re(e.value)))})(),document.getElementById("scroll-up").addEventListener("click",(()=>{B().scrollTo({behavior:"smooth",top:0})}))})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SCxTQUFTLENBQ2pCQyxTQUFVLFNBQ1ZDLElBQUssR0FDTCxHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vc3JjL3N0eWxlcy5zY3NzIiwid2VicGFjazovL21pbmRwYWwtcmVjcnVpdG1lbnQtdGFzay8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qcyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL21pbmRwYWwtcmVjcnVpdG1lbnQtdGFzay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzIiwid2VicGFjazovL21pbmRwYWwtcmVjcnVpdG1lbnQtdGFzay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovL21pbmRwYWwtcmVjcnVpdG1lbnQtdGFzay93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrL3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL21pbmRwYWwtcmVjcnVpdG1lbnQtdGFzay93ZWJwYWNrL3J1bnRpbWUvbm9uY2UiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vc3JjL3N0eWxlcy5zY3NzP2E2MDkiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vc3JjL2NvbnN0YW50cy9tb250aC50cyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svLi9zcmMvdXRpbHMvZ2V0dGVycy50cyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svLi9zcmMvdXRpbHMvY3JlYXRvcnMudHMiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vc3JjL3V0aWxzL2xpc3RlbmVycy50cyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fID0gbmV3IFVSTChcIi4vYXNzZXRzL3NlYXJjaC5zdmdcIiwgaW1wb3J0Lm1ldGEudXJsKTtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMCZkaXNwbGF5PXN3YXApO1wiXSk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAqe2ZvbnQtZmFtaWx5OlwiSW50ZXJcIixzYW5zLXNlcmlmfS5idG57Ym9yZGVyLXJhZGl1czouNzVyZW07cGFkZGluZzouNXJlbSAxcmVtO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MS41cmVtfS5idG4uYnRuLXByaW1hcnl7Ym9yZGVyOjA7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiM2YjNjOWJ9LmJ0bi5idG4tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiM4NDRkYmF9LmJ0bi5idG4tcHJpbWFyeTphY3RpdmV7YmFja2dyb3VuZDojNWIyZjg3fS5idG4uYnRuLXNlY29uZGFyeXtjb2xvcjojMWIxYzFlO2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNiY2JjYmR9LmJ0bi5idG4tc2Vjb25kYXJ5OmhvdmVye2JhY2tncm91bmQ6I2U3ZTdlN30uYnRuLmJ0bi1zZWNvbmRhcnk6YWN0aXZle2JhY2tncm91bmQ6I2JkYmRiZH0udGV4dC1maWVsZHtib3JkZXItcmFkaXVzOi43NXJlbTtwYWRkaW5nOi41cmVtIDFyZW07YmFja2dyb3VuZDojZWVlZmYwO2JvcmRlcjowO2ZvbnQtc2l6ZToxcmVtO2xpbmUtaGVpZ2h0OjEuNXJlbX0udGV4dC1maWVsZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNkY2RlZTB9LnRleHQtZmllbGQ6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojZmZmfS50ZXh0LWZpZWxkOjpwbGFjZWhvbGRlcntjb2xvcjojNWI1YzVlO2xpbmUtaGVpZ2h0OjEuNnJlbX0uYnRuLmJ0bi1jYW5jZWx7Y29sb3I6IzBmNzViODtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuNDg3NXJlbTtmb250LXdlaWdodDo0MDA7cGFkZGluZzouNXJlbSAuNzVyZW19LmJ0bi5idG4tY2FuY2VsOmhvdmVye2ZvbnQtd2VpZ2h0OjUwMDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO3RleHQtdW5kZXJsaW5lLW9mZnNldDouMzc1cmVtfSosKjo6YWZ0ZXIsKjo6YmVmb3Jle2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjA7bWFyZ2luOjB9LmJ0bi1zY3JvbGx7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXI6MDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7Y3Vyc29yOnBvaW50ZXI7Z2FwOi41cmVtO3BhZGRpbmc6MXJlbSAxcmVtIDB9LmJ0bi1zY3JvbGw+aDF7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjEuODc1cmVtfS5zZWFyY2h7cGFkZGluZzowIDFyZW07bWFyZ2luLWJvdHRvbTouNXJlbX0uc2VhcmNoLWlucHV0e3dpZHRoOjEwMCU7bWFyZ2luLXRvcDoxLjVyZW07YmFja2dyb3VuZC1pbWFnZTp1cmwoJHtfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19ffSk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246Ljc1cmVtIDUwJTtwYWRkaW5nOi41cmVtIC43NXJlbSAuNXJlbSAzcmVtfS5jb250YWluZXJ7bWFyZ2luLXRvcDoxLjVyZW07ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OmNhbGMoMTAwZHZoIC0gMTUwcHgpO2dhcDoxcmVtO292ZXJmbG93LXk6YXV0b30uZGV0YWlscy13cmFwcGVye3BhZGRpbmc6MCAxcmVtO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyfS5kZXRhaWxze21hcmdpbi10b3A6Mi4zMTI1cmVtO3BhZGRpbmc6MCAxLjI1cmVtO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDouNzVyZW07dGV4dC1hbGlnbjpjZW50ZXJ9LmluZm9ybWF0aW9ue2hlaWdodDo0cmVtfS5kZXRhaWxzLXdyYXBwZXI+LmRldGFpbHM+LmhlYWRpbmd7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjEuODc1cmVtfS5kZXRhaWxzLXdyYXBwZXI+LmRldGFpbHM+LmRlc2NyaXB0aW9ue2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MXJlbTtsaW5lLWhlaWdodDoxLjZyZW19LmRldGFpbHMtd3JhcHBlcj4uYWRkLW5vdGV7bWFyZ2luLXRvcDoxLjVyZW07Z2FwOi41cmVtO2ZvbnQtd2VpZ2h0OjUwMH0uYWRkLW5vdGUtcHJpbWFyeXt3aWR0aDpjYWxjKDEwMCUgLSAycmVtKTttYXJnaW46MCAxcmVtfS5ub3RlLXRpbGV7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6Ljc1cmVtO2JveC1zaGFkb3c6MHB4IDRweCAxNnB4IDBweCByZ2JhKDAsMCwwLC4wNzA1ODgyMzUzKTt3aWR0aDpjYWxjKDEwMCUgLSAycmVtKTtnYXA6Ljc1cmVtO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZzouNzVyZW19Lm5vdGUtaGVhZGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lm5vdGUtdGlsZTpmaXJzdC1vZi10eXBle21hcmdpbi10b3A6LjVyZW19Lm5vdGUtaGVhZGVyPi5ub3RlLXRpdGxle2ZvbnQtd2VpZ2h0OjUwMDtmb250LXNpemU6Ljg3NXJlbTtsaW5lLWhlaWdodDoxLjQ4NzVyZW07Y29sb3I6IzFiMWMxZX0ubm90ZS1oZWFkZXI+LmFjdGlvbnN7Z2FwOi41cmVtO2Rpc3BsYXk6ZmxleH0ubm90ZS1oZWFkZXI+LmFjdGlvbnM+LmFjdGlvbi1idG57YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyfS5ub3RlLWJvZHl7Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS40ODc1cmVtO2NvbG9yOiMzYjNjM2V9Lm5vdGUtZm9vdGVye2ZvbnQtc2l6ZTouNzVyZW07bGluZS1oZWlnaHQ6Ljk3NXJlbTtjb2xvcjojNWI1YzVlfS5tb2RhbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwgLTUwJSk7d2lkdGg6Y2FsYygxMDAlIC0gMzJweCk7Ym9yZGVyOjA7YmFja2dyb3VuZDojZmZmO3BhZGRpbmc6MS41cmVtO2JvcmRlci1yYWRpdXM6MXJlbTtnYXA6MS41cmVtfS5tb2RhbD4ubW9kYWwtY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEuNXJlbX0ubW9kYWwtaGVhZGluZ3tmb250LXdlaWdodDo1MDA7Zm9udC1zaXplOjEuMjVyZW07bGluZS1oZWlnaHQ6MS44NzVyZW19Lm1vZGFsLWJvZHl7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNnJlbX0ubW9kYWwtZm9vdGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MXJlbX0ubW9kYWwtYWN0aW9uLWJ0bnt3aWR0aDo1MCV9ZGlhbG9nOjpiYWNrZHJvcHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjMwMTk2MDc4NDMpfS5hZGQtbmV3LW5vdGUtY29udGFpbmVyLC5lZGl0LW5vdGUtY29udGFpbmVye3BhZGRpbmc6MS4yNXJlbSAxcmVtO3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MXJlbTtib3gtc2hhZG93OjBweCAwcHggMTZweCAwcHggcmdiYSgwLDAsMCwuMDc4NDMxMzcyNSk7Ym9yZGVyLXdpZHRoOjFweCAwcHggMXB4IDBweDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNlZWVmZjB9LmFkZC1uZXctbm90ZS1oZWFkaW5nLC5lZGl0LW5vdGUtaGVhZGluZ3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5hZGQtbmV3LW5vdGUtaGVhZGluZz5oMiwuZWRpdC1ub3RlLWhlYWRpbmc+aDJ7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc2l6ZToxcmVtO2xpbmUtaGVpZ2h0OjEuNnJlbX0uYWRkLW5ldy1ub3RlLWJvZHksLmVkaXQtbm90ZS1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjFyZW07cG9zaXRpb246cmVsYXRpdmV9LmFkZC1uZXctbm90ZS5idG4uYnRuLXByaW1hcnksLmVkaXQtbm90ZS5idG4uYnRuLXByaW1hcnl7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjFyZW07cmlnaHQ6MXJlbX0ubm90ZS1ib2R5LXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbDttaW4taGVpZ2h0OjIxMHB4fS5ub3RlLXRpbGUubm90ZS1lZGl0LW1vZGV7d2lkdGg6MTAwJTtwYWRkaW5nOjB9aW5wdXRbZGlzYWJsZWRde2N1cnNvcjpub3QtYWxsb3dlZH0uaGlkZXtkaXNwbGF5Om5vbmV9YCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL190eXBvZ3JhcGh5LnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvX2Rlc2lnbi5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBR0EsRUFDRSw4QkFBQSxDQ0ZGLEtBQ0Usb0JBQUEsQ0FDQSxrQkFBQSxDQUNBLGlCQUFBLENBQ0EsWUFBQSxDQUNBLGtCQUFBLENBQ0Esc0JBQUEsQ0FDQSxjQUFBLENBQ0EsY0FBQSxDQUNBLGVBQUEsQ0FDQSxrQkFBQSxDQUdGLGlCQUNFLFFBQUEsQ0FDQSxVQUFBLENBQ0Esa0JBQUEsQ0FHRix1QkFD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eURBRUUsaUJBQUEsQ0FDQSxXQUFBLENBQ0EsVUFBQSxDQUdGLG9CQUNFLGVBQUEsQ0FDQSxnQkFBQSxDQUdGLDBCQUNFLFVBQUEsQ0FDQSxTQUFBLENBR0YsZ0JBQ0Usa0JBQUEsQ0FHRixNQUNFLFlBQUFcIixcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh1cmwsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICghdXJsKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuICB1cmwgPSBTdHJpbmcodXJsLl9fZXNNb2R1bGUgPyB1cmwuZGVmYXVsdCA6IHVybCk7XG5cbiAgLy8gSWYgdXJsIGlzIGFscmVhZHkgd3JhcHBlZCBpbiBxdW90ZXMsIHJlbW92ZSB0aGVtXG4gIGlmICgvXlsnXCJdLipbJ1wiXSQvLnRlc3QodXJsKSkge1xuICAgIHVybCA9IHVybC5zbGljZSgxLCAtMSk7XG4gIH1cbiAgaWYgKG9wdGlvbnMuaGFzaCkge1xuICAgIHVybCArPSBvcHRpb25zLmhhc2g7XG4gIH1cblxuICAvLyBTaG91bGQgdXJsIGJlIHdyYXBwZWQ/XG4gIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy0zLyN1cmxzXG4gIGlmICgvW1wiJygpIFxcdFxcbl18KCUyMCkvLnRlc3QodXJsKSB8fCBvcHRpb25zLm5lZWRRdW90ZXMpIHtcbiAgICByZXR1cm4gXCJcXFwiXCIuY29uY2F0KHVybC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIiksIFwiXFxcIlwiKTtcbiAgfVxuICByZXR1cm4gdXJsO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsInZhciBzY3JpcHRVcmw7XG5pZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5nLmltcG9ydFNjcmlwdHMpIHNjcmlwdFVybCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArIFwiXCI7XG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdCAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnRhZ05hbWUudG9VcHBlckNhc2UoKSA9PT0gJ1NDUklQVCcpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICghc2NyaXB0VXJsIHx8ICEvXmh0dHAocz8pOi8udGVzdChzY3JpcHRVcmwpKSkgc2NyaXB0VXJsID0gc2NyaXB0c1tpLS1dLnNyYztcblx0XHR9XG5cdH1cbn1cbi8vIFdoZW4gc3VwcG9ydGluZyBicm93c2VycyB3aGVyZSBhbiBhdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0LnB1YmxpY1BhdGggbWFudWFsbHkgdmlhIGNvbmZpZ3VyYXRpb25cbi8vIG9yIHBhc3MgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBhbmQgc2V0IHRoZSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyB2YXJpYWJsZSBmcm9tIHlvdXIgY29kZSB0byB1c2UgeW91ciBvd24gbG9naWMuXG5pZiAoIXNjcmlwdFVybCkgdGhyb3cgbmV3IEVycm9yKFwiQXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7XG5zY3JpcHRVcmwgPSBzY3JpcHRVcmwucmVwbGFjZSgvIy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcPy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcL1teXFwvXSskLywgXCIvXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2NyaXB0VXJsOyIsIl9fd2VicGFja19yZXF1aXJlX18uYiA9IGRvY3VtZW50LmJhc2VVUkkgfHwgc2VsZi5sb2NhdGlvbi5ocmVmO1xuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuLy8gdW5kZWZpbmVkID0gY2h1bmsgbm90IGxvYWRlZCwgbnVsbCA9IGNodW5rIHByZWxvYWRlZC9wcmVmZXRjaGVkXG4vLyBbcmVzb2x2ZSwgcmVqZWN0LCBQcm9taXNlXSA9IGNodW5rIGxvYWRpbmcsIDAgPSBjaHVuayBsb2FkZWRcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDc5MjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImV4cG9ydCBjb25zdCBNT05USDogUmVjb3JkPG51bWJlciwgc3RyaW5nPiA9IHtcclxuICAwOiBcIkphbnVhcnlcIixcclxuICAxOiBcIkZlYnJ1YXJ5XCIsXHJcbiAgMjogXCJNYXJjaFwiLFxyXG4gIDM6IFwiQXByaWxcIixcclxuICA0OiBcIk1heVwiLFxyXG4gIDU6IFwiSnVuZVwiLFxyXG4gIDY6IFwiSnVseVwiLFxyXG4gIDc6IFwiQXVndXN0XCIsXHJcbiAgODogXCJTZXB0ZW1iZXJcIixcclxuICA5OiBcIk9jdG9iZXJcIixcclxuICAxMDogXCJOb3ZlbWJlclwiLFxyXG4gIDExOiBcIkRlY2VtYmVyXCIsXHJcbn07XHJcbiIsImltcG9ydCB7IE1PTlRIIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9tb250aFwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE5vdGVzID0gKCk6IEhUTUxFbGVtZW50W10gPT4ge1xyXG4gIHJldHVybiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIubm90ZS10aWxlXCIpKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRCdG5JZCA9ICh0YXJnZXQ6IEhUTUxFbGVtZW50KTogc3RyaW5nID0+IHtcclxuICByZXR1cm4gKHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWlkXCIpIHx8XHJcbiAgICB0YXJnZXQucGFyZW50RWxlbWVudCEuZ2V0QXR0cmlidXRlKFwiZGF0YS1pZFwiKSkgYXMgc3RyaW5nO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE5vdGVCeUlkID0gKGlkOiBzdHJpbmcpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC5ub3RlLXRpbGVbZGF0YS1pZD1cIiR7aWR9XCJdYCkhO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE5vdGVEZXRhaWxzID0gKGlkOiBzdHJpbmcpOiB7IHRpdGxlOiBzdHJpbmc7IGJvZHk6IHN0cmluZyB9ID0+IHtcclxuICBjb25zdCB0aXRsZSA9XHJcbiAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJub3RlLXRpdGxlLVwiICsgaWQpIGFzIEhUTUxIZWFkaW5nRWxlbWVudClcclxuICAgICAgLnRleHRDb250ZW50IHx8IFwiXCI7XHJcbiAgY29uc3QgYm9keSA9XHJcbiAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJub3RlLWJvZHktXCIgKyBpZCkgYXMgSFRNTFBhcmFncmFwaEVsZW1lbnQpXHJcbiAgICAgIC50ZXh0Q29udGVudCB8fCBcIlwiO1xyXG4gIHJldHVybiB7IHRpdGxlLCBib2R5IH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TWFpbkNvbnRhaW5lciA9ICgpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29udGFpbmVyXCIpITtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50RGF0ZSA9ICgpID0+IHtcclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuICByZXR1cm4gYCR7TU9OVEhbZGF0ZS5nZXRNb250aCgpXX0gJHtkYXRlLmdldERhdGUoKX1gO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vbW9kZWxzL2J1dHRvbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBIZWFkaW5nIH0gZnJvbSBcIi4uL21vZGVscy9oZWFkaW5nLm1vZGVsXCI7XHJcbmltcG9ydCB7IEN1c3RvbUltYWdlIH0gZnJvbSBcIi4uL21vZGVscy9pbWFnZS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuLi9tb2RlbHMvaW5wdXQubW9kZWxcIjtcclxuaW1wb3J0IHsgTm90ZURldGFpbHMgfSBmcm9tIFwiLi4vbW9kZWxzL25vdGUtZGV0YWlscy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBDdXN0b21UZXh0IH0gZnJvbSBcIi4uL21vZGVscy90ZXh0Lm1vZGVsXCI7XHJcbmltcG9ydCB7IFRleHRhcmVhIH0gZnJvbSBcIi4uL21vZGVscy90ZXh0YXJlYS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBnZXRDdXJyZW50RGF0ZSwgZ2V0Tm90ZUJ5SWQgfSBmcm9tIFwiLi9nZXR0ZXJzXCI7XHJcblxyXG5sZXQgaWR4ID0gMDtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBZGROZXdOb3RlVmlld0VsZW1lbnQgPSAoKTogSFRNTEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IHNlY3Rpb24gPSBjcmVhdGVTZWN0aW9uRWxlbWVudChcImFkZC1uZXctbm90ZS1jb250YWluZXJcIik7XHJcblxyXG4gIGNvbnN0IGhlYWRpbmcgPSBjcmVhdGVEaXZFbGVtZW50KFwiYWRkLW5ldy1ub3RlLWhlYWRpbmdcIik7XHJcbiAgY29uc3QgaGVhZGluZ0hlYWRlciA9IGNyZWF0ZUhlYWRpbmdFbGVtZW50KHsgdGV4dENvbnRlbnQ6IFwiQWRkIG5ldyBub3RlXCIgfSk7XHJcbiAgY29uc3QgaGVhZGluZ0J1dHRvbiA9IGNyZWF0ZUJ1dHRvbkVsZW1lbnQoe1xyXG4gICAgY2xhc3NOYW1lOiBcImJ0biBidG4tY2FuY2VsXCIsXHJcbiAgICB0ZXh0Q29udGVudDogXCJDYW5jZWxcIixcclxuICAgIGlkOiBcImFkZC1ub3RlLWNhbmNlbFwiLFxyXG4gIH0pO1xyXG5cclxuICBoZWFkaW5nLmFwcGVuZENoaWxkKGhlYWRpbmdIZWFkZXIpO1xyXG4gIGhlYWRpbmcuYXBwZW5kQ2hpbGQoaGVhZGluZ0J1dHRvbik7XHJcblxyXG4gIGNvbnN0IGJvZHkgPSBjcmVhdGVEaXZFbGVtZW50KFwiYWRkLW5ldy1ub3RlLWJvZHlcIik7XHJcbiAgY29uc3QgYm9keUlucHV0ID0gY3JlYXRlSW5wdXRFbGVtZW50KHtcclxuICAgIGNsYXNzTmFtZTogXCJ0ZXh0LWZpZWxkXCIsXHJcbiAgICBpZDogXCJub3RlLXRpdGxlXCIsXHJcbiAgICBwbGFjZWhvbGRlcjogXCJVbnRpdGxlZCBOb3RlXCIsXHJcbiAgfSk7XHJcbiAgY29uc3QgYm9keVRleHRhcmVhID0gY3JlYXRlVGV4dEVsZW1lbnRhcmVhRWxlbWVudCh7XHJcbiAgICBjbGFzc05hbWU6IFwidGV4dC1maWVsZCBub3RlLWJvZHktdGV4dGFyZWFcIixcclxuICAgIGlkOiBcIm5vdGUtYm9keVwiLFxyXG4gICAgcGxhY2Vob2xkZXI6IFwiWW91ciBub3RlLi4uXCIsXHJcbiAgfSk7XHJcbiAgY29uc3QgYm9keUJ1dHRvbiA9IGNyZWF0ZUJ1dHRvbkVsZW1lbnQoe1xyXG4gICAgY2xhc3NOYW1lOiBcImJ0biBidG4tcHJpbWFyeSBhZGQtbmV3LW5vdGVcIixcclxuICAgIHRleHRDb250ZW50OiBcIkFkZFwiLFxyXG4gICAgaWQ6IFwiYWRkLW5ldy1ub3RlXCIsXHJcbiAgfSk7XHJcblxyXG4gIGJvZHkuYXBwZW5kQ2hpbGQoYm9keUlucHV0KTtcclxuICBib2R5LmFwcGVuZENoaWxkKGJvZHlUZXh0YXJlYSk7XHJcbiAgYm9keS5hcHBlbmRDaGlsZChib2R5QnV0dG9uKTtcclxuXHJcbiAgc2VjdGlvbi5hcHBlbmRDaGlsZChoZWFkaW5nKTtcclxuICBzZWN0aW9uLmFwcGVuZENoaWxkKGJvZHkpO1xyXG4gIHJldHVybiBzZWN0aW9uO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZU5vTm90ZXNWaWV3RWxlbWVudCA9ICgpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgY29uc3Qgd3JhcHBlciA9IGNyZWF0ZURpdkVsZW1lbnQoXCJkZXRhaWxzLXdyYXBwZXJcIik7XHJcblxyXG4gIGNvbnN0IGRldGFpbHMgPSBjcmVhdGVEaXZFbGVtZW50KFwiZGV0YWlsc1wiKTtcclxuICBjb25zdCBpbmZvcm1hdGlvbkltZyA9IGNyZWF0ZUltYWdlRWxlbWVudCh7XHJcbiAgICBzcmM6IHJlcXVpcmUoXCIuLi9hc3NldHMvaW5mb3JtYXRpb24uc3ZnXCIpLFxyXG4gICAgbG9hZGluZzogXCJlYWdlclwiLFxyXG4gICAgYWx0OiBcIkluZm9ybWF0aW9uIGNpcmNsZVwiLFxyXG4gICAgY2xhc3NOYW1lOiBcImluZm9ybWF0aW9uXCIsXHJcbiAgfSk7XHJcbiAgY29uc3QgaGVhZGluZyA9IGNyZWF0ZUhlYWRpbmdFbGVtZW50KHtcclxuICAgIHRleHRDb250ZW50OiBcIk5vIG5vdGVzIHlldFwiLFxyXG4gICAgY2xhc3NOYW1lOiBcImhlYWRpbmdcIixcclxuICB9KTtcclxuICBjb25zdCBkZXRhaWxzUGFyYWdyYXBoID0gY3JlYXRlVGV4dEVsZW1lbnQoe1xyXG4gICAgdHlwZTogXCJwXCIsXHJcbiAgICB0ZXh0Q29udGVudDogXCJBZGQgYSBub3RlIHRvIGtlZXAgdHJhY2sgb2YgeW91ciBsZWFybmluZ3MuXCIsXHJcbiAgICBjbGFzc05hbWU6IFwiZGVzY3JpcHRpb25cIixcclxuICB9KTtcclxuXHJcbiAgW2luZm9ybWF0aW9uSW1nLCBoZWFkaW5nLCBkZXRhaWxzUGFyYWdyYXBoXS5mb3JFYWNoKChub2RlKSA9PlxyXG4gICAgZGV0YWlscy5hcHBlbmRDaGlsZChub2RlKVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGJ1dHRvbiA9IGNyZWF0ZUJ1dHRvbkVsZW1lbnQoe1xyXG4gICAgY2xhc3NOYW1lOiBcImJ0biBidG4tc2Vjb25kYXJ5IGFkZC1ub3RlXCIsXHJcbiAgICBpZDogXCJhZGQtbm90ZVwiLFxyXG4gIH0pO1xyXG5cclxuICBjb25zdCBub3RlQWRkSW1nID0gY3JlYXRlSW1hZ2VFbGVtZW50KHtcclxuICAgIHNyYzogcmVxdWlyZShcIi4uL2Fzc2V0cy9ub3RlX2FkZC5zdmdcIiksXHJcbiAgICBhbHQ6IFwiXCIsXHJcbiAgICBsb2FkaW5nOiBcImVhZ2VyXCIsXHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGJ0blRleHQgPSBjcmVhdGVUZXh0RWxlbWVudCh7IHR5cGU6IFwic3BhblwiLCB0ZXh0Q29udGVudDogXCJBZGQgTm90ZVwiIH0pO1xyXG5cclxuICBidXR0b24uYXBwZW5kQ2hpbGQobm90ZUFkZEltZyk7XHJcbiAgYnV0dG9uLmFwcGVuZENoaWxkKGJ0blRleHQpO1xyXG5cclxuICB3cmFwcGVyLmFwcGVuZENoaWxkKGRldGFpbHMpO1xyXG4gIHdyYXBwZXIuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcclxuXHJcbiAgcmV0dXJuIHdyYXBwZXI7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlTm90ZUVsZW1lbnQgPSAoXHJcbiAgdGl0bGVWYWw6IHN0cmluZyxcclxuICBib2R5VmFsOiBzdHJpbmdcclxuKTogSFRNTEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IHNlY3Rpb24gPSBjcmVhdGVTZWN0aW9uRWxlbWVudChcIm5vdGUtdGlsZVwiKTtcclxuICBzZWN0aW9uLnNldEF0dHJpYnV0ZShcImRhdGEtaWRcIiwgaWR4LnRvU3RyaW5nKCkpO1xyXG5cclxuICBjb25zdCBub3RlSGVhZGVyID0gY3JlYXRlTm90ZVRpbGVIZWFkZXJFbGVtZW50KHRpdGxlVmFsLCBpZHgudG9TdHJpbmcoKSk7XHJcbiAgY29uc3Qgbm90ZUJvZHkgPSBjcmVhdGVOb3RlVGlsZUJvZHlFbGVtZW50KGJvZHlWYWwsIGlkeC50b1N0cmluZygpKTtcclxuICBjb25zdCBub3RlRm9vdGVyID0gY3JlYXRlTm90ZVRpbGVGb290ZXJFbGVtZW50KCk7XHJcblxyXG4gIFtub3RlSGVhZGVyLCBub3RlQm9keSwgbm90ZUZvb3Rlcl0uZm9yRWFjaCgobm9kZSkgPT5cclxuICAgIHNlY3Rpb24uYXBwZW5kQ2hpbGQobm9kZSlcclxuICApO1xyXG5cclxuICBpZHgrKztcclxuXHJcbiAgcmV0dXJuIHNlY3Rpb247XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgcmV0cmlldmVOb3RlRWxlbWVudCA9IChkZXRhaWxzOiBOb3RlRGV0YWlscyk6IEhUTUxFbGVtZW50ID0+IHtcclxuICBjb25zdCB7IHRpdGxlLCBib2R5LCBpZCB9ID0gZGV0YWlscztcclxuICBjb25zdCBub3RlID0gZ2V0Tm90ZUJ5SWQoaWQpO1xyXG5cclxuICBBcnJheS5mcm9tKG5vdGUuY2hpbGRyZW4pLmZvckVhY2goKGNoaWxkKSA9PiBjaGlsZC5yZW1vdmUoKSk7XHJcblxyXG4gIGNvbnN0IG5vdGVIZWFkZXIgPSBjcmVhdGVOb3RlVGlsZUhlYWRlckVsZW1lbnQodGl0bGUsIGlkKTtcclxuICBjb25zdCBub3RlQm9keSA9IGNyZWF0ZU5vdGVUaWxlQm9keUVsZW1lbnQoYm9keSwgaWQpO1xyXG4gIGNvbnN0IG5vdGVGb290ZXIgPSBjcmVhdGVOb3RlVGlsZUZvb3RlckVsZW1lbnQoKTtcclxuXHJcbiAgW25vdGVIZWFkZXIsIG5vdGVCb2R5LCBub3RlRm9vdGVyXS5mb3JFYWNoKChub2RlKSA9PiBub3RlLmFwcGVuZENoaWxkKG5vZGUpKTtcclxuICByZXR1cm4gbm90ZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzYXZlTm90ZUVsZW1lbnQgPSAoaWQ6IHN0cmluZyk6IEhUTUxFbGVtZW50ID0+IHtcclxuICBjb25zdCB0aXRsZSA9IChcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZWRpdC1ub3RlLXRpdGxlLVwiICsgaWQpIGFzIEhUTUxJbnB1dEVsZW1lbnRcclxuICApLnZhbHVlO1xyXG4gIGNvbnN0IGJvZHkgPSAoXHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVkaXQtbm90ZS1ib2R5LVwiICsgaWQpIGFzIEhUTUxUZXh0QXJlYUVsZW1lbnRcclxuICApLnZhbHVlO1xyXG5cclxuICByZXR1cm4gcmV0cmlldmVOb3RlRWxlbWVudCh7IGlkLCB0aXRsZSwgYm9keSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBZGROZXdOb3RlQnRuRWxlbWVudCA9ICgpOiBIVE1MQnV0dG9uRWxlbWVudCA9PiB7XHJcbiAgcmV0dXJuIGNyZWF0ZUJ1dHRvbkVsZW1lbnQoe1xyXG4gICAgY2xhc3NOYW1lOiBcImJ0biBidG4tcHJpbWFyeSBhZGQtbm90ZS1wcmltYXJ5XCIsXHJcbiAgICBpZDogXCJhZGQtbmV3LW5vdGUtcHJpbWFyeVwiLFxyXG4gICAgdGV4dENvbnRlbnQ6IFwiQWRkIE5ld1wiLFxyXG4gIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUVkaXROb3RlVmlld0VsZW1lbnQgPSAoXHJcbiAgcGF5bG9hZDogTm90ZURldGFpbHNcclxuKTogSFRNTEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IHsgaWQsIHRpdGxlLCBib2R5IH0gPSBwYXlsb2FkO1xyXG4gIGNvbnN0IHNlY3Rpb24gPSBjcmVhdGVTZWN0aW9uRWxlbWVudChcImVkaXQtbm90ZS1jb250YWluZXJcIik7XHJcblxyXG4gIGNvbnN0IGhlYWRpbmcgPSBjcmVhdGVEaXZFbGVtZW50KFwiZWRpdC1ub3RlLWhlYWRpbmdcIik7XHJcbiAgY29uc3QgaGVhZGVyID0gY3JlYXRlSGVhZGluZ0VsZW1lbnQoe1xyXG4gICAgaGVhZGluZzogXCJoMlwiLFxyXG4gICAgdGV4dENvbnRlbnQ6IFwiRWRpdCBub3RlXCIsXHJcbiAgfSk7XHJcbiAgY29uc3QgY2FuY2VsQnRuID0gY3JlYXRlQnV0dG9uRWxlbWVudCh7XHJcbiAgICBjbGFzc05hbWU6IFwiYnRuIGJ0bi1jYW5jZWxcIixcclxuICAgIGlkOiBcImVkaXQtbm90ZS1jYW5jZWwtYnRuLVwiICsgaWQsXHJcbiAgICBcImRhdGEtaWRcIjogaWQsXHJcbiAgICB0ZXh0Q29udGVudDogXCJDYW5jZWxcIixcclxuICB9KTtcclxuXHJcbiAgaGVhZGluZy5hcHBlbmRDaGlsZChoZWFkZXIpO1xyXG4gIGhlYWRpbmcuYXBwZW5kQ2hpbGQoY2FuY2VsQnRuKTtcclxuXHJcbiAgY29uc3Qgbm90ZUJvZHkgPSBjcmVhdGVEaXZFbGVtZW50KFwiZWRpdC1ub3RlLWJvZHlcIik7XHJcbiAgY29uc3Qgbm90ZVRpdGxlSW5wdXQgPSBjcmVhdGVJbnB1dEVsZW1lbnQoe1xyXG4gICAgY2xhc3NOYW1lOiBcInRleHQtZmllbGRcIixcclxuICAgIGlkOiBcImVkaXQtbm90ZS10aXRsZS1cIiArIGlkLFxyXG4gICAgcGxhY2Vob2xkZXI6IFwiVW50aXRsdGVkIE5vdGVcIixcclxuICAgIHZhbHVlOiB0aXRsZSxcclxuICB9KTtcclxuICBjb25zdCBub3RlQm9keVRleHRhcmVhID0gY3JlYXRlVGV4dEVsZW1lbnRhcmVhRWxlbWVudCh7XHJcbiAgICBjbGFzc05hbWU6IFwidGV4dC1maWVsZCBub3RlLWJvZHktdGV4dGFyZWFcIixcclxuICAgIGlkOiBcImVkaXQtbm90ZS1ib2R5LVwiICsgaWQsXHJcbiAgICBwbGFjZWhvbGRlcjogXCJZb3VyIG5vdGUuLi5cIixcclxuICAgIHZhbHVlOiBib2R5LFxyXG4gIH0pO1xyXG4gIGNvbnN0IGVkaXRCdG4gPSBjcmVhdGVCdXR0b25FbGVtZW50KHtcclxuICAgIGNsYXNzTmFtZTogXCJidG4gYnRuLXByaW1hcnkgZWRpdC1ub3RlXCIsXHJcbiAgICBpZDogXCJlZGl0LW5vdGUtYnRuLVwiICsgaWQsXHJcbiAgICBcImRhdGEtaWRcIjogaWQsXHJcbiAgICB0ZXh0Q29udGVudDogXCJFZGl0XCIsXHJcbiAgfSk7XHJcblxyXG4gIFtub3RlVGl0bGVJbnB1dCwgbm90ZUJvZHlUZXh0YXJlYSwgZWRpdEJ0bl0uZm9yRWFjaCgobm9kZSkgPT5cclxuICAgIG5vdGVCb2R5LmFwcGVuZENoaWxkKG5vZGUpXHJcbiAgKTtcclxuXHJcbiAgc2VjdGlvbi5hcHBlbmRDaGlsZChoZWFkaW5nKTtcclxuICBzZWN0aW9uLmFwcGVuZENoaWxkKG5vdGVCb2R5KTtcclxuXHJcbiAgcmV0dXJuIHNlY3Rpb247XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlTm9SZXN1bHRzVmlld0VsZW1lbnQgPSAoKTogSFRNTEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IHNlY3Rpb24gPSBjcmVhdGVTZWN0aW9uRWxlbWVudChcIm5vLXJlc3VsdHNcIik7XHJcbiAgc2VjdGlvbi5pZCA9IFwibm8tcmVzdWx0c1wiO1xyXG5cclxuICBjb25zdCBkZXRhaWxzID0gY3JlYXRlRGl2RWxlbWVudChcImRldGFpbHNcIik7XHJcbiAgY29uc3QgaW5mb3JtYXRpb25JbWcgPSBjcmVhdGVJbWFnZUVsZW1lbnQoe1xyXG4gICAgc3JjOiByZXF1aXJlKFwiLi4vYXNzZXRzL25vLXJlc3VsdHMuc3ZnXCIpLFxyXG4gICAgbG9hZGluZzogXCJsYXp5XCIsXHJcbiAgICBhbHQ6IFwiU2FkIGVtb2ppXCIsXHJcbiAgICBjbGFzc05hbWU6IFwiaW5mb3JtYXRpb25cIixcclxuICB9KTtcclxuICBjb25zdCBoZWFkaW5nID0gY3JlYXRlSGVhZGluZ0VsZW1lbnQoe1xyXG4gICAgdGV4dENvbnRlbnQ6IFwiV2UgY291bGQgbm90IGZpbmQgYW55IG1hdGNoaW5nIHJlc3VsdHNcIixcclxuICAgIGNsYXNzTmFtZTogXCJoZWFkaW5nXCIsXHJcbiAgfSk7XHJcbiAgY29uc3QgZGV0YWlsc1BhcmFncmFwaCA9IGNyZWF0ZVRleHRFbGVtZW50KHtcclxuICAgIHR5cGU6IFwicFwiLFxyXG4gICAgdGV4dENvbnRlbnQ6XHJcbiAgICAgIFwiTG9va3MgbGlrZSB5b3UgZG9uJ3QgaGF2ZSBhIG5vdGUgd2l0aCB0aXRsZSBvciBib2R5IG1hdGNoaW5nIHlvdXIgcGhyYXNlLiBUcnkgdG8gcmVwaHJhc2Ugb3IgY3JlYXRlIGEgbmV3IG5vdGUuXCIsXHJcbiAgICBjbGFzc05hbWU6IFwiZGVzY3JpcHRpb25cIixcclxuICB9KTtcclxuXHJcbiAgW2luZm9ybWF0aW9uSW1nLCBoZWFkaW5nLCBkZXRhaWxzUGFyYWdyYXBoXS5mb3JFYWNoKChub2RlKSA9PlxyXG4gICAgZGV0YWlscy5hcHBlbmRDaGlsZChub2RlKVxyXG4gICk7XHJcblxyXG4gIHNlY3Rpb24uYXBwZW5kQ2hpbGQoZGV0YWlscyk7XHJcblxyXG4gIHJldHVybiBzZWN0aW9uO1xyXG59O1xyXG5cclxuLy9wcml2YXRlIG5vZGUgY3JlYXRvcnNcclxuY29uc3QgY3JlYXRlU2VjdGlvbkVsZW1lbnQgPSAoY2xhc3NOYW1lOiBzdHJpbmcpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgY29uc3Qgc2VjdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzZWN0aW9uXCIpO1xyXG4gIHNlY3Rpb24uY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xyXG4gIHJldHVybiBzZWN0aW9uO1xyXG59O1xyXG5cclxuY29uc3QgY3JlYXRlRGl2RWxlbWVudCA9IChjbGFzc05hbWU6IHN0cmluZyk6IEhUTUxEaXZFbGVtZW50ID0+IHtcclxuICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gIGRpdi5jbGFzc05hbWUgPSBjbGFzc05hbWU7XHJcbiAgcmV0dXJuIGRpdjtcclxufTtcclxuXHJcbmNvbnN0IGNyZWF0ZUlucHV0RWxlbWVudCA9IChwYXlsb2FkOiBJbnB1dCk6IEhUTUxJbnB1dEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xyXG4gIGlucHV0LmNsYXNzTmFtZSA9IHBheWxvYWQuY2xhc3NOYW1lO1xyXG4gIGlucHV0LmlkID0gcGF5bG9hZC5pZDtcclxuICBpbnB1dC5wbGFjZWhvbGRlciA9IHBheWxvYWQucGxhY2Vob2xkZXI7XHJcbiAgaW5wdXQudmFsdWUgPSBwYXlsb2FkLnZhbHVlIHx8IFwiXCI7XHJcbiAgcmV0dXJuIGlucHV0O1xyXG59O1xyXG5cclxuY29uc3QgY3JlYXRlVGV4dEVsZW1lbnRhcmVhRWxlbWVudCA9IChcclxuICBwYXlsb2FkOiBUZXh0YXJlYVxyXG4pOiBIVE1MVGV4dEFyZWFFbGVtZW50ID0+IHtcclxuICBjb25zdCB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKTtcclxuICB0ZXh0YXJlYS5jbGFzc05hbWUgPSBwYXlsb2FkLmNsYXNzTmFtZTtcclxuICB0ZXh0YXJlYS5pZCA9IHBheWxvYWQuaWQ7XHJcbiAgdGV4dGFyZWEucGxhY2Vob2xkZXIgPSBwYXlsb2FkLnBsYWNlaG9sZGVyO1xyXG4gIHRleHRhcmVhLnZhbHVlID0gcGF5bG9hZC52YWx1ZSB8fCBcIlwiO1xyXG4gIHJldHVybiB0ZXh0YXJlYTtcclxufTtcclxuY29uc3QgY3JlYXRlQnV0dG9uRWxlbWVudCA9IChwYXlsb2FkOiBCdXR0b24pOiBIVE1MQnV0dG9uRWxlbWVudCA9PiB7XHJcbiAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKTtcclxuICBidXR0b24uY2xhc3NOYW1lID0gcGF5bG9hZC5jbGFzc05hbWU7XHJcbiAgYnV0dG9uLnRleHRDb250ZW50ID0gcGF5bG9hZC50ZXh0Q29udGVudCB8fCBcIlwiO1xyXG4gIGJ1dHRvbi5pZCA9IHBheWxvYWQuaWQ7XHJcbiAgYnV0dG9uLnNldEF0dHJpYnV0ZShcImRhdGEtaWRcIiwgcGF5bG9hZFtcImRhdGEtaWRcIl0gfHwgXCJcIik7XHJcbiAgcmV0dXJuIGJ1dHRvbjtcclxufTtcclxuXHJcbmNvbnN0IGNyZWF0ZUhlYWRpbmdFbGVtZW50ID0gKHBheWxvYWQ6IEhlYWRpbmcpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgY29uc3QgaGVhZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocGF5bG9hZC5oZWFkaW5nIHx8IFwiaDJcIik7XHJcbiAgaGVhZGluZy50ZXh0Q29udGVudCA9IHBheWxvYWQudGV4dENvbnRlbnQ7XHJcbiAgaGVhZGluZy5jbGFzc05hbWUgPSBwYXlsb2FkLmNsYXNzTmFtZSB8fCBcIlwiO1xyXG4gIGhlYWRpbmcuaWQgPSBwYXlsb2FkLmlkIHx8IFwiXCI7XHJcbiAgcmV0dXJuIGhlYWRpbmc7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZUltYWdlRWxlbWVudCA9IChwYXlsb2FkOiBDdXN0b21JbWFnZSk6IEhUTUxJbWFnZUVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IGltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcclxuICBpbWFnZS5zcmMgPSBwYXlsb2FkLnNyYztcclxuICBpbWFnZS5sb2FkaW5nID0gcGF5bG9hZC5sb2FkaW5nO1xyXG4gIGltYWdlLmFsdCA9IHBheWxvYWQuYWx0O1xyXG4gIHJldHVybiBpbWFnZTtcclxufTtcclxuY29uc3QgY3JlYXRlVGV4dEVsZW1lbnQgPSAoXHJcbiAgcGF5bG9hZDogQ3VzdG9tVGV4dFxyXG4pOiBIVE1MU3BhbkVsZW1lbnQgfCBIVE1MUGFyYWdyYXBoRWxlbWVudCA9PiB7XHJcbiAgY29uc3QgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocGF5bG9hZC50eXBlKTtcclxuICB0ZXh0LnRleHRDb250ZW50ID0gcGF5bG9hZC50ZXh0Q29udGVudDtcclxuICB0ZXh0LmNsYXNzTmFtZSA9IHBheWxvYWQuY2xhc3NOYW1lIHx8IFwiXCI7XHJcbiAgdGV4dC5pZCA9IHBheWxvYWQuaWQgfHwgXCJcIjtcclxuICByZXR1cm4gdGV4dDtcclxufTtcclxuLy9ncm91cCBjcmVhdG9yc1xyXG5jb25zdCBjcmVhdGVOb3RlVGlsZUhlYWRlckVsZW1lbnQgPSAoXHJcbiAgdGl0bGU6IHN0cmluZyxcclxuICBpZHg6IHN0cmluZ1xyXG4pOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgY29uc3Qgbm90ZUhlYWRlciA9IGNyZWF0ZURpdkVsZW1lbnQoXCJub3RlLWhlYWRlclwiKTtcclxuICBjb25zdCBub3RlVGl0bGUgPSBjcmVhdGVIZWFkaW5nRWxlbWVudCh7XHJcbiAgICBjbGFzc05hbWU6IFwibm90ZS10aXRsZVwiLFxyXG4gICAgdGV4dENvbnRlbnQ6IHRpdGxlLFxyXG4gICAgaWQ6IFwibm90ZS10aXRsZS1cIiArIGlkeCxcclxuICB9KTtcclxuXHJcbiAgY29uc3QgYWN0aW9ucyA9IGNyZWF0ZURpdkVsZW1lbnQoXCJhY3Rpb25zXCIpO1xyXG4gIGNvbnN0IGVkaXROb3RlQnRuID0gY3JlYXRlQnV0dG9uRWxlbWVudCh7XHJcbiAgICBjbGFzc05hbWU6IFwiYWN0aW9uLWJ0biBlZGl0LWFjdGlvblwiLFxyXG4gICAgaWQ6IFwiZWRpdC1ub3RlLVwiICsgaWR4LFxyXG4gICAgXCJkYXRhLWlkXCI6IGlkeCxcclxuICB9KTtcclxuICBjb25zdCBlZGl0Tm90ZUltZyA9IGNyZWF0ZUltYWdlRWxlbWVudCh7XHJcbiAgICBhbHQ6IFwiRWRpdCBub3RlXCIsXHJcbiAgICBsb2FkaW5nOiBcImxhenlcIixcclxuICAgIHNyYzogcmVxdWlyZShcIi4uL2Fzc2V0cy9lZGl0LnN2Z1wiKSxcclxuICB9KTtcclxuXHJcbiAgZWRpdE5vdGVCdG4uYXBwZW5kQ2hpbGQoZWRpdE5vdGVJbWcpO1xyXG5cclxuICBjb25zdCByZW1vdmVOb3RlQnRuID0gY3JlYXRlQnV0dG9uRWxlbWVudCh7XHJcbiAgICBjbGFzc05hbWU6IFwiYWN0aW9uLWJ0biByZW1vdmUtYWN0aW9uXCIsXHJcbiAgICBpZDogXCJyZW1vdmUtbm90ZS1cIiArIGlkeCxcclxuICAgIFwiZGF0YS1pZFwiOiBpZHgsXHJcbiAgfSk7XHJcbiAgY29uc3QgcmVtb3ZlTm90ZUltZyA9IGNyZWF0ZUltYWdlRWxlbWVudCh7XHJcbiAgICBhbHQ6IFwiUmVtb3ZlIG5vdGVcIixcclxuICAgIGxvYWRpbmc6IFwibGF6eVwiLFxyXG4gICAgc3JjOiByZXF1aXJlKFwiLi4vYXNzZXRzL3JlbW92ZS5zdmdcIiksXHJcbiAgfSk7XHJcblxyXG4gIHJlbW92ZU5vdGVCdG4uYXBwZW5kQ2hpbGQocmVtb3ZlTm90ZUltZyk7XHJcblxyXG4gIGFjdGlvbnMuYXBwZW5kQ2hpbGQoZWRpdE5vdGVCdG4pO1xyXG4gIGFjdGlvbnMuYXBwZW5kQ2hpbGQocmVtb3ZlTm90ZUJ0bik7XHJcblxyXG4gIG5vdGVIZWFkZXIuYXBwZW5kQ2hpbGQobm90ZVRpdGxlKTtcclxuICBub3RlSGVhZGVyLmFwcGVuZENoaWxkKGFjdGlvbnMpO1xyXG5cclxuICByZXR1cm4gbm90ZUhlYWRlcjtcclxufTtcclxuY29uc3QgY3JlYXRlTm90ZVRpbGVCb2R5RWxlbWVudCA9IChib2R5OiBzdHJpbmcsIGlkeDogc3RyaW5nKTogSFRNTEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IG5vdGVCb2R5ID0gY3JlYXRlRGl2RWxlbWVudChcIm5vdGUtYm9keVwiKTtcclxuICBjb25zdCBub3RlQm9keVRleHQgPSBjcmVhdGVUZXh0RWxlbWVudCh7XHJcbiAgICB0eXBlOiBcInBcIixcclxuICAgIHRleHRDb250ZW50OiBib2R5LFxyXG4gICAgaWQ6IFwibm90ZS1ib2R5LVwiICsgaWR4LFxyXG4gIH0pO1xyXG5cclxuICBub3RlQm9keS5hcHBlbmRDaGlsZChub3RlQm9keVRleHQpO1xyXG5cclxuICByZXR1cm4gbm90ZUJvZHk7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZU5vdGVUaWxlRm9vdGVyRWxlbWVudCA9ICgpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgY29uc3Qgbm90ZUZvb3RlciA9IGNyZWF0ZURpdkVsZW1lbnQoXCJub3RlLWZvb3RlclwiKTtcclxuICBjb25zdCBub3RlRm9vdGVyVGV4dCA9IGNyZWF0ZVRleHRFbGVtZW50KHtcclxuICAgIHR5cGU6IFwicFwiLFxyXG4gICAgdGV4dENvbnRlbnQ6IGdldEN1cnJlbnREYXRlKCksXHJcbiAgfSk7XHJcblxyXG4gIG5vdGVGb290ZXIuYXBwZW5kQ2hpbGQobm90ZUZvb3RlclRleHQpO1xyXG4gIHJldHVybiBub3RlRm9vdGVyO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBOb3RlRGV0YWlscyB9IGZyb20gXCIuLi9tb2RlbHMvbm90ZS1kZXRhaWxzLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcbiAgY3JlYXRlQWRkTmV3Tm90ZUJ0bkVsZW1lbnQsXHJcbiAgY3JlYXRlQWRkTmV3Tm90ZVZpZXdFbGVtZW50LFxyXG4gIGNyZWF0ZUVkaXROb3RlVmlld0VsZW1lbnQsXHJcbiAgY3JlYXRlTm9Ob3Rlc1ZpZXdFbGVtZW50LFxyXG4gIGNyZWF0ZU5vUmVzdWx0c1ZpZXdFbGVtZW50LFxyXG4gIGNyZWF0ZU5vdGVFbGVtZW50LFxyXG4gIHJldHJpZXZlTm90ZUVsZW1lbnQsXHJcbiAgc2F2ZU5vdGVFbGVtZW50LFxyXG59IGZyb20gXCIuL2NyZWF0b3JzXCI7XHJcbmltcG9ydCB7XHJcbiAgZ2V0QnRuSWQsXHJcbiAgZ2V0TWFpbkNvbnRhaW5lcixcclxuICBnZXROb3RlQnlJZCxcclxuICBnZXROb3RlRGV0YWlscyxcclxuICBnZXROb3RlcyxcclxufSBmcm9tIFwiLi9nZXR0ZXJzXCI7XHJcblxyXG4vL2xpc3RlbmVycyBhdHRhY2htZW50c1xyXG5leHBvcnQgY29uc3QgYWRkU2Nyb2xsVXBMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcclxuICBjb25zdCBzY3JvbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNjcm9sbC11cFwiKSE7XHJcbiAgc2Nyb2xsLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBzY3JvbGxVcCk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYWRkTm9Ob3Rlc0FkZE5vdGVMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcclxuICBjb25zdCBhZGROb3RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhZGQtbm90ZVwiKSE7XHJcbiAgYWRkTm90ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgY3JlYXRlQWRkTmV3Tm90ZVZpZXcpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZFNlYXJjaE5vdGVzTGlzdGVuZXIgPSAoKTogdm9pZCA9PiB7XHJcbiAgY29uc3Qgc2VhcmNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2gtbm90ZXNcIikgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICBzZWFyY2guYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsICgpID0+IGZpbHRlclJlc3VsdHMoc2VhcmNoLnZhbHVlKSk7XHJcbn07XHJcblxyXG5jb25zdCBhZGROZXdOb3RlQ2FuY2VsTGlzdGVuZXIgPSAoKTogdm9pZCA9PiB7XHJcbiAgY29uc3QgY2FuY2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhZGQtbm90ZS1jYW5jZWxcIikhO1xyXG4gIGNhbmNlbC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgY2FuY2VsTmV3Tm90ZSk7XHJcbn07XHJcblxyXG5jb25zdCBhZGROZXdOb3RlQWRkTm90ZUxpc3RlbmVyID0gKCk6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IGFkZE5vdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFkZC1uZXctbm90ZVwiKSE7XHJcbiAgYWRkTm90ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgYWRkTmV3Tm90ZSk7XHJcbn07XHJcblxyXG5jb25zdCBhZGROZXdOb3RlUHJpbWFyeUJ0bkxpc3RlbmVyID0gKCk6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IGFkZE5vdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFkZC1uZXctbm90ZS1wcmltYXJ5XCIpITtcclxuICBhZGROb3RlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBhZGROZXdOb3RlUHJpbWFyeUJ0bik7XHJcbn07XHJcblxyXG5jb25zdCBhZGRFZGl0Tm90ZUxpc3RlbmVyID0gKGlkOiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICBjb25zdCBlZGl0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICBcImVkaXQtbm90ZS1cIiArIGlkXHJcbiAgKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcclxuXHJcbiAgZWRpdEJ0bi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGUpID0+IGVkaXROb3RlTGlzdGVuZXIoZSkpO1xyXG59O1xyXG5cclxuY29uc3QgYWRkUmVtb3ZlTm90ZUxpc3RlbmVyID0gKGlkOiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICBjb25zdCByZW1vdmVCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgIFwicmVtb3ZlLW5vdGUtXCIgKyBpZFxyXG4gICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XHJcbiAgcmVtb3ZlQnRuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZSkgPT4gcmVtb3ZlTm90ZUxpc3RlbmVyKGUpKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZEVkaXROb3RlRWRpdExpc3RlbmVyID0gKGlkOiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICBjb25zdCBlZGl0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlZGl0LW5vdGUtYnRuLVwiICsgaWQpITtcclxuXHJcbiAgZWRpdEJ0bi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4gZWRpdE5vdGUoaWQpKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZEVkaXROb3RlQ2FuY2VsTGlzdGVuZXIgPSAoZGV0YWlsczogTm90ZURldGFpbHMpOiB2b2lkID0+IHtcclxuICBjb25zdCB7IGlkIH0gPSBkZXRhaWxzO1xyXG4gIGNvbnN0IGNhbmNlbEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZWRpdC1ub3RlLWNhbmNlbC1idG4tXCIgKyBpZCkhO1xyXG5cclxuICBjYW5jZWxCdG4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IGNhbmNlbEVkaXROb3RlKGRldGFpbHMpKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZE1vZGFsUmVtb3ZlTm90ZUNvbmZpcm1MaXN0ZW5lciA9IChpZDogc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgY29uc3QgcmVtb3ZlQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICBcIm1vZGFsLXJlbW92ZVwiXHJcbiAgKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcclxuXHJcbiAgcmVtb3ZlQnRuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiByZW1vdmVOb3RlQ29uZmlybShpZCkpO1xyXG59O1xyXG5cclxuY29uc3QgZWRpdE5vdGVMaXN0ZW5lciA9IChlOiBFdmVudCk6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gIGNvbnN0IGlkID0gZ2V0QnRuSWQodGFyZ2V0KTtcclxuXHJcbiAgY29uc3Qgbm90ZSA9IGdldE5vdGVCeUlkKGlkKTtcclxuXHJcbiAgY29uc3QgeyB0aXRsZSwgYm9keSB9ID0gZ2V0Tm90ZURldGFpbHMoaWQpO1xyXG5cclxuICBjb25zdCBlZGl0Tm90ZVZpZXcgPSBjcmVhdGVFZGl0Tm90ZVZpZXdFbGVtZW50KHsgaWQsIHRpdGxlLCBib2R5IH0pO1xyXG5cclxuICBub3RlLmNsYXNzTGlzdC5hZGQoXCJub3RlLWVkaXQtbW9kZVwiKTtcclxuXHJcbiAgbm90ZS5yZXBsYWNlQ2hpbGRyZW4oZWRpdE5vdGVWaWV3KTtcclxuXHJcbiAgYWRkRWRpdE5vdGVDYW5jZWxMaXN0ZW5lcih7IGlkLCB0aXRsZSwgYm9keSB9KTtcclxuICBhZGRFZGl0Tm90ZUVkaXRMaXN0ZW5lcihpZCk7XHJcbn07XHJcblxyXG5jb25zdCByZW1vdmVOb3RlTGlzdGVuZXIgPSAoZTogRXZlbnQpOiB2b2lkID0+IHtcclxuICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICBjb25zdCBpZCA9IGdldEJ0bklkKHRhcmdldCk7XHJcbiAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1vZGFsXCIpIGFzIEhUTUxEaWFsb2dFbGVtZW50O1xyXG4gIG1vZGFsLnNob3dNb2RhbCgpO1xyXG5cclxuICBhZGRNb2RhbFJlbW92ZU5vdGVDb25maXJtTGlzdGVuZXIoaWQpO1xyXG4gIGFkZE1vZGFsUmVtb3ZlTm90ZUNhbmNlbExpc3RlbmVyKCk7XHJcbn07XHJcblxyXG5jb25zdCBhZGRNb2RhbFJlbW92ZU5vdGVDYW5jZWxMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcclxuICBjb25zdCBjYW5jZWxCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgIFwibW9kYWwtY2FuY2VsXCJcclxuICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xyXG5cclxuICBjYW5jZWxCdG4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHJlbW92ZU5vdGVDYW5jZWwpO1xyXG59O1xyXG5cclxuLy9saXN0ZW5lcnMgbWV0aG9kc1xyXG5jb25zdCBjcmVhdGVBZGROZXdOb3RlVmlldyA9ICgpOiB2b2lkID0+IHtcclxuICBjb25zdCBhZGROb3RlU2VjdGlvbiA9IGNyZWF0ZUFkZE5ld05vdGVWaWV3RWxlbWVudCgpO1xyXG4gIGNvbnN0IGNvbnRhaW5lciA9IGdldE1haW5Db250YWluZXIoKTtcclxuICBjb250YWluZXIucmVwbGFjZUNoaWxkcmVuKGFkZE5vdGVTZWN0aW9uKTtcclxuXHJcbiAgYWRkTmV3Tm90ZUNhbmNlbExpc3RlbmVyKCk7XHJcbiAgYWRkTmV3Tm90ZUFkZE5vdGVMaXN0ZW5lcigpO1xyXG59O1xyXG5cclxuY29uc3QgY2FuY2VsTmV3Tm90ZSA9ICgpOiB2b2lkID0+IHtcclxuICBjb25zdCBub3RlcyA9IGdldE5vdGVzKCk7XHJcbiAgaWYgKG5vdGVzLmxlbmd0aCkge1xyXG4gICAgY3JlYXRlQWRkTm90ZVByaW1hcnlCdG4oKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgY29uc3Qgbm9Ob3Rlc1ZpZXcgPSBjcmVhdGVOb05vdGVzVmlld0VsZW1lbnQoKTtcclxuICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbnRhaW5lclwiKTtcclxuICBjb250YWluZXI/LnJlcGxhY2VDaGlsZHJlbihub05vdGVzVmlldyk7XHJcbiAgYWRkTm9Ob3Rlc0FkZE5vdGVMaXN0ZW5lcigpO1xyXG59O1xyXG5cclxuY29uc3QgY3JlYXRlQWRkTm90ZVByaW1hcnlCdG4gPSAoKTogdm9pZCA9PiB7XHJcbiAgY29uc3QgYWRkTmV3Tm90ZVByaW1hcnlCdG4gPSBjcmVhdGVBZGROZXdOb3RlQnRuRWxlbWVudCgpO1xyXG4gIGNvbnN0IGNvbnRhaW5lciA9IGdldE1haW5Db250YWluZXIoKTtcclxuICBjb250YWluZXIuZmlyc3RDaGlsZCEucmVtb3ZlKCk7XHJcbiAgY29udGFpbmVyLnByZXBlbmQoYWRkTmV3Tm90ZVByaW1hcnlCdG4pO1xyXG4gIGFkZE5ld05vdGVQcmltYXJ5QnRuTGlzdGVuZXIoKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZE5ld05vdGUgPSAoKTogdm9pZCA9PiB7XHJcbiAge1xyXG4gICAgY29uc3QgdGl0bGUgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJub3RlLXRpdGxlXCIpIGFzIEhUTUxJbnB1dEVsZW1lbnQpXHJcbiAgICAgIC52YWx1ZTtcclxuICAgIGNvbnN0IGJvZHkgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJub3RlLWJvZHlcIikgYXMgSFRNTFRleHRBcmVhRWxlbWVudClcclxuICAgICAgLnZhbHVlO1xyXG4gICAgY29uc3QgbmV3Tm90ZSA9IGNyZWF0ZU5vdGVFbGVtZW50KHRpdGxlLCBib2R5KTtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29udGFpbmVyXCIpITtcclxuICAgIGNvbnN0IGFkZE5ld05vdGVQcmltYXJ5QnRuID0gY3JlYXRlQWRkTmV3Tm90ZUJ0bkVsZW1lbnQoKTtcclxuICAgIGNvbnN0IG5vdGVzID0gZ2V0Tm90ZXMoKTtcclxuICAgIGNvbnN0IGlkID0gbmV3Tm90ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWlkXCIpITtcclxuICAgIGNoYW5nZVNlYXJjaFN0YXRlKFwiZW5hYmxlXCIpO1xyXG4gICAgaWYgKG5vdGVzLmxlbmd0aCkge1xyXG4gICAgICBjb250YWluZXIuZmlyc3RDaGlsZCEucmVtb3ZlKCk7XHJcbiAgICAgIGNvbnRhaW5lci5wcmVwZW5kKGFkZE5ld05vdGVQcmltYXJ5QnRuKTtcclxuICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKG5ld05vdGUpO1xyXG5cclxuICAgICAgYWRkRWRpdE5vdGVMaXN0ZW5lcihpZCk7XHJcbiAgICAgIGFkZFJlbW92ZU5vdGVMaXN0ZW5lcihpZCk7XHJcbiAgICAgIGFkZE5ld05vdGVQcmltYXJ5QnRuTGlzdGVuZXIoKTtcclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnRhaW5lci5yZXBsYWNlQ2hpbGRyZW4oYWRkTmV3Tm90ZVByaW1hcnlCdG4sIG5ld05vdGUpO1xyXG5cclxuICAgIGFkZEVkaXROb3RlTGlzdGVuZXIoaWQpO1xyXG4gICAgYWRkUmVtb3ZlTm90ZUxpc3RlbmVyKGlkKTtcclxuICAgIGFkZE5ld05vdGVQcmltYXJ5QnRuTGlzdGVuZXIoKTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhZGROZXdOb3RlUHJpbWFyeUJ0biA9ICgpOiB2b2lkID0+IHtcclxuICBjb25zdCBhZGROb3RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhZGQtbmV3LW5vdGUtcHJpbWFyeVwiKSE7XHJcbiAgY29uc3QgYWRkTm90ZVNlY3Rpb24gPSBjcmVhdGVBZGROZXdOb3RlVmlld0VsZW1lbnQoKTtcclxuICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbnRhaW5lclwiKSE7XHJcbiAgYWRkTm90ZS5yZW1vdmUoKTtcclxuICBjb250YWluZXIucHJlcGVuZChhZGROb3RlU2VjdGlvbik7XHJcblxyXG4gIGFkZE5ld05vdGVDYW5jZWxMaXN0ZW5lcigpO1xyXG4gIGFkZE5ld05vdGVBZGROb3RlTGlzdGVuZXIoKTtcclxufTtcclxuXHJcbmNvbnN0IGVkaXROb3RlID0gKGlkOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCBub3RlID0gZ2V0Tm90ZUJ5SWQoaWQpO1xyXG4gIG5vdGUuY2xhc3NMaXN0LnJlbW92ZShcIm5vdGUtZWRpdC1tb2RlXCIpO1xyXG5cclxuICBzYXZlTm90ZUVsZW1lbnQoaWQpO1xyXG4gIGFkZEVkaXROb3RlTGlzdGVuZXIoaWQpO1xyXG4gIGFkZFJlbW92ZU5vdGVMaXN0ZW5lcihpZCk7XHJcbn07XHJcblxyXG5jb25zdCBjYW5jZWxFZGl0Tm90ZSA9IChkZXRhaWxzOiBOb3RlRGV0YWlscyk6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IHsgaWQgfSA9IGRldGFpbHM7XHJcbiAgY29uc3Qgbm90ZSA9IGdldE5vdGVCeUlkKGlkKTtcclxuICBub3RlLmNsYXNzTGlzdC5yZW1vdmUoXCJub3RlLWVkaXQtbW9kZVwiKTtcclxuXHJcbiAgcmV0cmlldmVOb3RlRWxlbWVudChkZXRhaWxzKTtcclxuICBhZGRFZGl0Tm90ZUxpc3RlbmVyKGlkKTtcclxuICBhZGRSZW1vdmVOb3RlTGlzdGVuZXIoaWQpO1xyXG59O1xyXG5cclxuY29uc3QgcmVtb3ZlTm90ZUNvbmZpcm0gPSAoaWQ6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtb2RhbFwiKSBhcyBIVE1MRGlhbG9nRWxlbWVudDtcclxuICBnZXROb3RlQnlJZChpZCk/LnJlbW92ZSgpO1xyXG4gIG1vZGFsLmNsb3NlKCk7XHJcblxyXG4gIGNvbnN0IG5vdGVzID0gZ2V0Tm90ZXMoKS5sZW5ndGg7XHJcblxyXG4gIGlmICghbm90ZXMpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29udGFpbmVyXCIpITtcclxuICAgIGNvbnN0IG5vTm90ZXNWaWV3ID0gY3JlYXRlTm9Ob3Rlc1ZpZXdFbGVtZW50KCk7XHJcbiAgICBjb250YWluZXIucmVwbGFjZUNoaWxkcmVuKG5vTm90ZXNWaWV3KTtcclxuICAgIGNoYW5nZVNlYXJjaFN0YXRlKFwiZGlzYWJsZVwiKTtcclxuXHJcbiAgICBhZGROb05vdGVzQWRkTm90ZUxpc3RlbmVyKCk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvbnN0IHNlYXJjaFBocmFzZSA9IChcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VhcmNoLW5vdGVzXCIpIGFzIEhUTUxJbnB1dEVsZW1lbnRcclxuICApLnZhbHVlO1xyXG4gIGZpbHRlclJlc3VsdHMoc2VhcmNoUGhyYXNlKTtcclxufTtcclxuXHJcbmNvbnN0IHJlbW92ZU5vdGVDYW5jZWwgPSAoKTogdm9pZCA9PiB7XHJcbiAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1vZGFsXCIpIGFzIEhUTUxEaWFsb2dFbGVtZW50O1xyXG4gIG1vZGFsLmNsb3NlKCk7XHJcbn07XHJcblxyXG5jb25zdCBjaGFuZ2VTZWFyY2hTdGF0ZSA9IChzdGF0ZTogXCJlbmFibGVcIiB8IFwiZGlzYWJsZVwiKTogdm9pZCA9PiB7XHJcbiAgY29uc3Qgc2VhcmNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2gtbm90ZXNcIikgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICBpZiAoc3RhdGUgPT09IFwiZW5hYmxlXCIpIHtcclxuICAgIHNlYXJjaC5yZW1vdmVBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcclxuICB9IGVsc2Uge1xyXG4gICAgc2VhcmNoLnZhbHVlID0gXCJcIjtcclxuICAgIHNlYXJjaC5zZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiLCBcInRydWVcIik7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgZmlsdGVyUmVzdWx0cyA9ICh2YWw6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IG5vdGVzID0gZ2V0Tm90ZXMoKSBhcyBIVE1MRWxlbWVudFtdO1xyXG4gIGlmICghdmFsKSB7XHJcbiAgICBub3Rlcy5mb3JFYWNoKChub3RlKSA9PiB7XHJcbiAgICAgIG5vdGUuY2xhc3NMaXN0LnJlbW92ZShcImhpZGVcIik7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29uc3QgcmVzdWx0c0lkcyA9IG5vdGVzXHJcbiAgICAuZmlsdGVyKChub3RlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGlkID0gbm90ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWlkXCIpITtcclxuICAgICAgY29uc3QgZGV0YWlscyA9IGdldE5vdGVEZXRhaWxzKGlkKTtcclxuICAgICAgcmV0dXJuIGRldGFpbHMuYm9keS5pbmNsdWRlcyh2YWwpIHx8IGRldGFpbHMudGl0bGUuaW5jbHVkZXModmFsKTtcclxuICAgIH0pXHJcbiAgICAubWFwKChlbCkgPT4gZWwuZ2V0QXR0cmlidXRlKFwiZGF0YS1pZFwiKSk7XHJcblxyXG4gIGNvbnN0IG5vUmVzdWx0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibm8tcmVzdWx0c1wiKTtcclxuXHJcbiAgaWYgKCFyZXN1bHRzSWRzLmxlbmd0aCAmJiAhbm9SZXN1bHRFbGVtZW50KSB7XHJcbiAgICBjb25zdCBub1Jlc3VsdHNWaWV3ID0gY3JlYXRlTm9SZXN1bHRzVmlld0VsZW1lbnQoKTtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGdldE1haW5Db250YWluZXIoKTtcclxuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChub1Jlc3VsdHNWaWV3KTtcclxuICB9XHJcblxyXG4gIGlmIChub1Jlc3VsdEVsZW1lbnQgJiYgcmVzdWx0c0lkcy5sZW5ndGgpIHtcclxuICAgIG5vUmVzdWx0RWxlbWVudC5yZW1vdmUoKTtcclxuICB9XHJcblxyXG4gIG5vdGVzLmZvckVhY2goKG5vdGUpID0+IHtcclxuICAgIGlmICghcmVzdWx0c0lkcy5pbmNsdWRlcyhub3RlLmdldEF0dHJpYnV0ZShcImRhdGEtaWRcIikpKSB7XHJcbiAgICAgIG5vdGUuY2xhc3NMaXN0LmFkZChcImhpZGVcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBub3RlLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRlXCIpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3Qgc2Nyb2xsVXAgPSAoKTogdm9pZCA9PiB7XHJcbiAgY29uc3QgY29udGFpbmVyID0gZ2V0TWFpbkNvbnRhaW5lcigpO1xyXG4gIGNvbnRhaW5lci5zY3JvbGxUbyh7XHJcbiAgICBiZWhhdmlvcjogXCJzbW9vdGhcIixcclxuICAgIHRvcDogMCxcclxuICB9KTtcclxufTtcclxuIiwiaW1wb3J0IFwiLi9zdHlsZXMuc2Nzc1wiO1xyXG5pbXBvcnQge1xyXG4gIGFkZE5vTm90ZXNBZGROb3RlTGlzdGVuZXIsXHJcbiAgYWRkU2Nyb2xsVXBMaXN0ZW5lcixcclxuICBhZGRTZWFyY2hOb3Rlc0xpc3RlbmVyLFxyXG59IGZyb20gXCIuL3V0aWxzL2xpc3RlbmVyc1wiO1xyXG5cclxuYWRkTm9Ob3Rlc0FkZE5vdGVMaXN0ZW5lcigpO1xyXG5hZGRTZWFyY2hOb3Rlc0xpc3RlbmVyKCk7XHJcbmFkZFNjcm9sbFVwTGlzdGVuZXIoKTtcclxuIl0sIm5hbWVzIjpbIl9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fIiwiVVJMIiwiX19fQ1NTX0xPQURFUl9FWFBPUlRfX18iLCJwdXNoIiwibW9kdWxlIiwiaWQiLCJfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fIiwiZXhwb3J0cyIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJsaXN0IiwidG9TdHJpbmciLCJ0aGlzIiwibWFwIiwiaXRlbSIsImNvbnRlbnQiLCJuZWVkTGF5ZXIiLCJjb25jYXQiLCJsZW5ndGgiLCJqb2luIiwiaSIsIm1vZHVsZXMiLCJtZWRpYSIsImRlZHVwZSIsInN1cHBvcnRzIiwibGF5ZXIiLCJ1bmRlZmluZWQiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiayIsIl9rIiwidXJsIiwib3B0aW9ucyIsIlN0cmluZyIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidGVzdCIsInNsaWNlIiwiaGFzaCIsIm5lZWRRdW90ZXMiLCJyZXBsYWNlIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJkYXRhIiwic291cmNlTWFwcGluZyIsInN0eWxlc0luRE9NIiwiZ2V0SW5kZXhCeUlkZW50aWZpZXIiLCJpZGVudGlmaWVyIiwicmVzdWx0IiwibW9kdWxlc1RvRG9tIiwiaWRDb3VudE1hcCIsImlkZW50aWZpZXJzIiwiYmFzZSIsImNvdW50IiwiaW5kZXhCeUlkZW50aWZpZXIiLCJvYmoiLCJjc3MiLCJzb3VyY2VNYXAiLCJyZWZlcmVuY2VzIiwidXBkYXRlciIsImFkZEVsZW1lbnRTdHlsZSIsImJ5SW5kZXgiLCJzcGxpY2UiLCJhcGkiLCJkb21BUEkiLCJ1cGRhdGUiLCJuZXdPYmoiLCJyZW1vdmUiLCJsYXN0SWRlbnRpZmllcnMiLCJuZXdMaXN0IiwiaW5kZXgiLCJuZXdMYXN0SWRlbnRpZmllcnMiLCJfaSIsIl9pbmRleCIsIm1lbW8iLCJpbnNlcnQiLCJzdHlsZSIsInRhcmdldCIsInN0eWxlVGFyZ2V0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwid2luZG93IiwiSFRNTElGcmFtZUVsZW1lbnQiLCJjb250ZW50RG9jdW1lbnQiLCJoZWFkIiwiZSIsImdldFRhcmdldCIsIkVycm9yIiwiYXBwZW5kQ2hpbGQiLCJlbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZXMiLCJhdHRyaWJ1dGVzIiwic3R5bGVFbGVtZW50Iiwibm9uY2UiLCJzZXRBdHRyaWJ1dGUiLCJpbnNlcnRTdHlsZUVsZW1lbnQiLCJzdHlsZVRhZ1RyYW5zZm9ybSIsImFwcGx5IiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwicmVtb3ZlU3R5bGVFbGVtZW50Iiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJmaXJzdENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwibSIsIm4iLCJnZXR0ZXIiLCJkIiwiYSIsImRlZmluaXRpb24iLCJrZXkiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZyIsImdsb2JhbFRoaXMiLCJGdW5jdGlvbiIsInByb3AiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJjdXJyZW50U2NyaXB0IiwidGFnTmFtZSIsInRvVXBwZXJDYXNlIiwic3JjIiwic2NyaXB0cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicCIsImIiLCJiYXNlVVJJIiwic2VsZiIsImhyZWYiLCJuYyIsImxvY2FscyIsIk1PTlRIIiwiZ2V0Tm90ZXMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwiZ2V0QnRuSWQiLCJnZXRBdHRyaWJ1dGUiLCJwYXJlbnRFbGVtZW50IiwiZ2V0Tm90ZUJ5SWQiLCJnZXROb3RlRGV0YWlscyIsInRpdGxlIiwiZ2V0RWxlbWVudEJ5SWQiLCJ0ZXh0Q29udGVudCIsImJvZHkiLCJnZXRNYWluQ29udGFpbmVyIiwiZ2V0Q3VycmVudERhdGUiLCJkYXRlIiwiRGF0ZSIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImlkeCIsImNyZWF0ZUFkZE5ld05vdGVWaWV3RWxlbWVudCIsInNlY3Rpb24iLCJjcmVhdGVTZWN0aW9uRWxlbWVudCIsImhlYWRpbmciLCJjcmVhdGVEaXZFbGVtZW50IiwiaGVhZGluZ0hlYWRlciIsImNyZWF0ZUhlYWRpbmdFbGVtZW50IiwiaGVhZGluZ0J1dHRvbiIsImNyZWF0ZUJ1dHRvbkVsZW1lbnQiLCJjbGFzc05hbWUiLCJib2R5SW5wdXQiLCJjcmVhdGVJbnB1dEVsZW1lbnQiLCJwbGFjZWhvbGRlciIsImJvZHlUZXh0YXJlYSIsImNyZWF0ZVRleHRFbGVtZW50YXJlYUVsZW1lbnQiLCJib2R5QnV0dG9uIiwiY3JlYXRlTm9Ob3Rlc1ZpZXdFbGVtZW50Iiwid3JhcHBlciIsImRldGFpbHMiLCJjcmVhdGVJbWFnZUVsZW1lbnQiLCJsb2FkaW5nIiwiYWx0IiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJ0eXBlIiwiZm9yRWFjaCIsIm5vZGUiLCJidXR0b24iLCJub3RlQWRkSW1nIiwiYnRuVGV4dCIsInJldHJpZXZlTm90ZUVsZW1lbnQiLCJub3RlIiwiY2hpbGRyZW4iLCJjaGlsZCIsImNyZWF0ZU5vdGVUaWxlSGVhZGVyRWxlbWVudCIsImNyZWF0ZU5vdGVUaWxlQm9keUVsZW1lbnQiLCJjcmVhdGVOb3RlVGlsZUZvb3RlckVsZW1lbnQiLCJjcmVhdGVBZGROZXdOb3RlQnRuRWxlbWVudCIsImRpdiIsInBheWxvYWQiLCJpbnB1dCIsInZhbHVlIiwidGV4dGFyZWEiLCJpbWFnZSIsInRleHQiLCJub3RlSGVhZGVyIiwibm90ZVRpdGxlIiwiYWN0aW9ucyIsImVkaXROb3RlQnRuIiwiZWRpdE5vdGVJbWciLCJyZW1vdmVOb3RlQnRuIiwicmVtb3ZlTm90ZUltZyIsIm5vdGVCb2R5Iiwibm90ZUJvZHlUZXh0Iiwibm90ZUZvb3RlciIsIm5vdGVGb290ZXJUZXh0IiwiYWRkTm9Ob3Rlc0FkZE5vdGVMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjcmVhdGVBZGROZXdOb3RlVmlldyIsImFkZE5ld05vdGVDYW5jZWxMaXN0ZW5lciIsImNhbmNlbE5ld05vdGUiLCJhZGROZXdOb3RlQWRkTm90ZUxpc3RlbmVyIiwiYWRkTmV3Tm90ZSIsImFkZE5ld05vdGVQcmltYXJ5QnRuTGlzdGVuZXIiLCJhZGROZXdOb3RlUHJpbWFyeUJ0biIsImFkZEVkaXROb3RlTGlzdGVuZXIiLCJlZGl0Tm90ZUxpc3RlbmVyIiwiYWRkUmVtb3ZlTm90ZUxpc3RlbmVyIiwicmVtb3ZlTm90ZUxpc3RlbmVyIiwiZWRpdE5vdGVWaWV3IiwiaGVhZGVyIiwiY2FuY2VsQnRuIiwiY3JlYXRlRWRpdE5vdGVWaWV3RWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsInJlcGxhY2VDaGlsZHJlbiIsImNhbmNlbEVkaXROb3RlIiwiYWRkRWRpdE5vdGVDYW5jZWxMaXN0ZW5lciIsImVkaXROb3RlIiwiYWRkRWRpdE5vdGVFZGl0TGlzdGVuZXIiLCJzaG93TW9kYWwiLCJyZW1vdmVOb3RlQ29uZmlybSIsImFkZE1vZGFsUmVtb3ZlTm90ZUNvbmZpcm1MaXN0ZW5lciIsImFkZE1vZGFsUmVtb3ZlTm90ZUNhbmNlbExpc3RlbmVyIiwicmVtb3ZlTm90ZUNhbmNlbCIsImFkZE5vdGVTZWN0aW9uIiwiY3JlYXRlQWRkTm90ZVByaW1hcnlCdG4iLCJub05vdGVzVmlldyIsImNvbnRhaW5lciIsInByZXBlbmQiLCJuZXdOb3RlIiwidGl0bGVWYWwiLCJib2R5VmFsIiwiY3JlYXRlTm90ZUVsZW1lbnQiLCJub3RlcyIsImNoYW5nZVNlYXJjaFN0YXRlIiwiYWRkTm90ZSIsInNhdmVOb3RlRWxlbWVudCIsIm1vZGFsIiwiY2xvc2UiLCJzZWFyY2hQaHJhc2UiLCJmaWx0ZXJSZXN1bHRzIiwic3RhdGUiLCJzZWFyY2giLCJyZW1vdmVBdHRyaWJ1dGUiLCJ2YWwiLCJyZXN1bHRzSWRzIiwiZmlsdGVyIiwiaW5jbHVkZXMiLCJlbCIsIm5vUmVzdWx0RWxlbWVudCIsIm5vUmVzdWx0c1ZpZXciLCJjcmVhdGVOb1Jlc3VsdHNWaWV3RWxlbWVudCIsImFkZFNlYXJjaE5vdGVzTGlzdGVuZXIiLCJzY3JvbGxUbyIsImJlaGF2aW9yIiwidG9wIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/main.e6229675bbf2bc98bb17.js b/main.e6229675bbf2bc98bb17.js new file mode 100644 index 0000000..510e22c --- /dev/null +++ b/main.e6229675bbf2bc98bb17.js @@ -0,0 +1,2 @@ +(()=>{"use strict";var e={100:(e,t,A)=>{A.d(t,{A:()=>C});var n=A(354),o=A.n(n),r=A(314),a=A.n(r),d=A(417),i=A.n(d),c=new URL(A(246),A.b),l=a()(o());l.push([e.id,"@import url(https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap);"]);var s=i()(c);l.push([e.id,`*{font-family:"Inter",sans-serif}.btn{border-radius:.75rem;padding:.5rem 1rem;text-align:center;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1rem;font-weight:500;line-height:1.5rem}.btn.btn-primary{border:0;color:#fff;background:#6b3c9b}.btn.btn-primary:hover{background:#844dba}.btn.btn-primary:active{background:#5b2f87}.btn.btn-secondary{color:#1b1c1e;background:#fff;border:1px solid #bcbcbd}.btn.btn-secondary:hover{background:#e7e7e7}.btn.btn-secondary:active{background:#bdbdbd}.text-field{border-radius:.75rem;padding:.5rem 1rem;background:#eeeff0;border:0;font-size:1rem;line-height:1.5rem}.text-field:hover{background-color:#dcdee0}.text-field:focus{background-color:#fff}.text-field::placeholder{color:#5b5c5e;line-height:1.6rem}.btn.btn-cancel{color:#0f75b8;background:rgba(0,0,0,0);border:0;border-radius:0;font-size:.875rem;line-height:1.4875rem;font-weight:400;padding:.5rem .75rem}.btn.btn-cancel:hover{font-weight:500;text-decoration:underline;text-underline-offset:.375rem}*,*::after,*::before{box-sizing:border-box;padding:0;margin:0}.btn-scroll{display:flex;align-items:center;border:0;background:rgba(0,0,0,0);cursor:pointer;gap:.5rem;padding:1rem 1rem 0}.btn-scroll>h1{font-weight:500;font-size:1.25rem;line-height:1.875rem}.search{padding:0 1rem;margin-bottom:.5rem}.search-input{width:100%;margin-top:1.5rem;background-image:url(${s});background-repeat:no-repeat;background-position:.75rem 50%;padding:.5rem .75rem .5rem 3rem}.container{margin-top:1.5rem;display:flex;flex-direction:column;align-items:center;height:calc(100dvh - 150px);gap:1rem;overflow-y:auto}.details-wrapper{padding:0 1rem;display:flex;flex-direction:column;align-items:center}.details{margin-top:2.3125rem;padding:0 1.25rem;display:flex;flex-direction:column;align-items:center;gap:.75rem;text-align:center}.information{height:4rem}.details-wrapper>.details>.heading{font-weight:500;font-size:1.25rem;line-height:1.875rem}.details-wrapper>.details>.description{font-weight:400;font-size:1rem;line-height:1.6rem}.details-wrapper>.add-note{margin-top:1.5rem;gap:.5rem;font-weight:500}.add-note-primary{width:calc(100% - 2rem);margin:0 1rem}.note-tile{background:#fff;border-radius:.75rem;box-shadow:0px 4px 16px 0px rgba(0,0,0,.0705882353);width:calc(100% - 2rem);gap:.75rem;display:flex;flex-direction:column;padding:.75rem}.note-header{display:flex;align-items:center;justify-content:space-between}.note-tile:first-of-type{margin-top:.5rem}.note-header>.note-title{font-weight:500;font-size:.875rem;line-height:1.4875rem;color:#1b1c1e}.note-header>.actions{gap:.5rem;display:flex}.note-header>.actions>.action-btn{background:rgba(0,0,0,0);border:0;cursor:pointer}.note-body{font-size:.875rem;line-height:1.4875rem;color:#3b3c3e}.note-body>p{overflow-wrap:break-word;text-wrap:wrap}.note-footer{font-size:.75rem;line-height:.975rem;color:#5b5c5e}.modal{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:calc(100% - 32px);border:0;background:#fff;padding:1.5rem;border-radius:1rem;gap:1.5rem;max-width:620px}.modal>.modal-container{display:flex;flex-direction:column;gap:1.5rem}.modal-heading{font-weight:500;font-size:1.25rem;line-height:1.875rem}.modal-body{font-weight:400;line-height:1.6rem}.modal-footer{display:flex;justify-content:space-between;gap:1rem}.modal-action-btn{width:50%}dialog::backdrop{background-color:rgba(0,0,0,.3019607843)}.add-new-note-container,.edit-note-container{padding:1.25rem 1rem;width:100%;display:flex;flex-direction:column;gap:1rem;box-shadow:0px 0px 16px 0px rgba(0,0,0,.0784313725);border-width:1px 0px 1px 0px;border-style:solid;border-color:#eeeff0}.add-new-note-heading,.edit-note-heading{display:flex;align-items:center;justify-content:space-between}.add-new-note-heading>h2,.edit-note-heading>h2{font-weight:500;font-size:1rem;line-height:1.6rem}.add-new-note-body,.edit-note-body{display:flex;flex-direction:column;gap:1rem;position:relative}.add-new-note.btn.btn-primary,.edit-note.btn.btn-primary{position:absolute;bottom:1rem;right:1rem}.note-body-textarea{resize:vertical;min-height:210px}.note-tile.note-edit-mode{width:100%;padding:0}input[disabled]{cursor:not-allowed}.hide{display:none}`,"",{version:3,sources:["webpack://./src/styles/_typography.scss","webpack://./src/styles/_design.scss","webpack://./src/styles.scss"],names:[],mappings:"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",sourceRoot:""}]);const C=l},314:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var A="",n=void 0!==t[5];return t[4]&&(A+="@supports (".concat(t[4],") {")),t[2]&&(A+="@media ".concat(t[2]," {")),n&&(A+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),A+=e(t),n&&(A+="}"),t[2]&&(A+="}"),t[4]&&(A+="}"),A})).join("")},t.i=function(e,A,n,o,r){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(n)for(var d=0;d0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=r),A&&(l[2]?(l[1]="@media ".concat(l[2]," {").concat(l[1],"}"),l[2]=A):l[2]=A),o&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=o):l[4]="".concat(o)),t.push(l))}},t}},417:e=>{e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},354:e=>{e.exports=function(e){var t=e[1],A=e[3];if(!A)return t;if("function"==typeof btoa){var n=btoa(unescape(encodeURIComponent(JSON.stringify(A)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(n),r="/*# ".concat(o," */");return[t].concat([r]).join("\n")}return[t].join("\n")}},72:e=>{var t=[];function A(e){for(var A=-1,n=0;n{var t={};e.exports=function(e,A){var n=function(e){if(void 0===t[e]){var A=document.querySelector(e);if(window.HTMLIFrameElement&&A instanceof window.HTMLIFrameElement)try{A=A.contentDocument.head}catch(e){A=null}t[e]=A}return t[e]}(e);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(A)}},540:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},56:(e,t,A)=>{e.exports=function(e){var t=A.nc;t&&e.setAttribute("nonce",t)}},825:e=>{e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(A){!function(e,t,A){var n="";A.supports&&(n+="@supports (".concat(A.supports,") {")),A.media&&(n+="@media ".concat(A.media," {"));var o=void 0!==A.layer;o&&(n+="@layer".concat(A.layer.length>0?" ".concat(A.layer):""," {")),n+=A.css,o&&(n+="}"),A.media&&(n+="}"),A.supports&&(n+="}");var r=A.sourceMap;r&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleTagTransform(n,e,t.options)}(t,e,A)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},113:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},322:(e,t,A)=>{e.exports=A.p+"a6885dadfe803bb665f3.svg"},988:(e,t,A)=>{e.exports=A.p+"d285bc69c2a2bd43a5b0.svg"},294:(e,t,A)=>{e.exports=A.p+"4364ca1ecf5bc4a26775.svg"},994:(e,t,A)=>{e.exports=A.p+"d46ebef9c242d5e49737.svg"},346:(e,t,A)=>{e.exports=A.p+"02d6fee105b7817f0579.svg"},246:(e,t,A)=>{e.exports=A.p+"9e3950427ed88a91c6ee.svg"}},t={};function A(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={id:n,exports:{}};return e[n](r,r.exports,A),r.exports}A.m=e,A.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return A.d(t,{a:t}),t},A.d=(e,t)=>{for(var n in t)A.o(t,n)&&!A.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},A.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),A.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;A.g.importScripts&&(e=A.g.location+"");var t=A.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var o=n.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=n[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),A.p=e})(),A.b=document.baseURI||self.location.href,A.nc=void 0;var n=A(72),o=A.n(n),r=A(825),a=A.n(r),d=A(659),i=A.n(d),c=A(56),l=A.n(c),s=A(540),C=A.n(s),p=A(113),m=A.n(p),u=A(100),g={};g.styleTagTransform=m(),g.setAttributes=l(),g.insert=i().bind(null,"head"),g.domAPI=a(),g.insertStyleElement=C(),o()(u.A,g),u.A&&u.A.locals&&u.A.locals;const h={0:"January",1:"February",2:"March",3:"April",4:"May",5:"June",6:"July",7:"August",8:"September",9:"October",10:"November",11:"December"},f=()=>Array.from(document.querySelectorAll(".note-tile")),b=e=>e.getAttribute("data-id")||e.parentElement.getAttribute("data-id"),y=e=>document.querySelector(`.note-tile[data-id="${e}"]`),E=e=>({title:document.getElementById("note-title-"+e).textContent||"",body:document.getElementById("note-body-"+e).textContent||""}),B=()=>document.getElementById("container"),v=()=>{const e=new Date;return`${h[e.getMonth()]} ${e.getDate()}`};let x=0;const w=()=>{const e=N("add-new-note-container"),t=S("add-new-note-heading"),A=U({textContent:"Add new note"}),n=Y({className:"btn btn-cancel",textContent:"Cancel",id:"add-note-cancel"});t.appendChild(A),t.appendChild(n);const o=S("add-new-note-body"),r=G({className:"text-field",id:"note-title",placeholder:"Untitled Note"}),a=L({className:"text-field note-body-textarea",id:"note-body",placeholder:"Your note..."}),d=Y({className:"btn btn-primary add-new-note",textContent:"Add",id:"add-new-note"});return o.appendChild(r),o.appendChild(a),o.appendChild(d),e.appendChild(t),e.appendChild(o),e},k=()=>{const e=S("details-wrapper"),t=S("details");[q({src:A(988),loading:"eager",alt:"Information circle",className:"information"}),U({textContent:"No notes yet",className:"heading"}),z({type:"p",textContent:"Add a note to keep track of your learnings.",className:"description"})].forEach((e=>t.appendChild(e)));const n=Y({className:"btn btn-secondary add-note",id:"add-note"}),o=q({src:A(994),alt:"",loading:"eager"}),r=z({type:"span",textContent:"Add Note"});return n.appendChild(o),n.appendChild(r),e.appendChild(t),e.appendChild(n),e},F=e=>{const{title:t,body:A,id:n}=e,o=y(n);return Array.from(o.children).forEach((e=>e.remove())),[M(t,n),T(A,n),j()].forEach((e=>o.appendChild(e))),o},I=()=>Y({className:"btn btn-primary add-note-primary",id:"add-new-note-primary",textContent:"Add New"}),N=e=>{const t=document.createElement("section");return t.className=e,t},S=e=>{const t=document.createElement("div");return t.className=e,t},G=e=>{const t=document.createElement("input");return t.className=e.className,t.id=e.id,t.placeholder=e.placeholder,t.value=e.value||"",t},L=e=>{const t=document.createElement("textarea");return t.className=e.className,t.id=e.id,t.placeholder=e.placeholder,t.value=e.value||"",t},Y=e=>{const t=document.createElement("button");return t.className=e.className,t.textContent=e.textContent||"",t.id=e.id,t.setAttribute("data-id",e["data-id"]||""),t},U=e=>{const t=document.createElement(e.heading||"h2");return t.textContent=e.textContent,t.className=e.className||"",t.id=e.id||"",t},q=e=>{const t=document.createElement("img");return t.src=e.src,t.loading=e.loading,t.alt=e.alt,t},z=e=>{const t=document.createElement(e.type);return t.textContent=e.textContent,t.className=e.className||"",t.id=e.id||"",t},M=(e,t)=>{const n=S("note-header"),o=U({className:"note-title",textContent:e,id:"note-title-"+t}),r=S("actions"),a=Y({className:"action-btn edit-action",id:"edit-note-"+t,"data-id":t}),d=q({alt:"Edit note",loading:"lazy",src:A(322)});a.appendChild(d);const i=Y({className:"action-btn remove-action",id:"remove-note-"+t,"data-id":t}),c=q({alt:"Remove note",loading:"lazy",src:A(346)});return i.appendChild(c),r.appendChild(a),r.appendChild(i),n.appendChild(o),n.appendChild(r),n},T=(e,t)=>{const A=S("note-body"),n=z({type:"p",textContent:e,id:"note-body-"+t});return A.appendChild(n),A},j=()=>{const e=S("note-footer"),t=z({type:"p",textContent:v()});return e.appendChild(t),e},Q=()=>{document.getElementById("add-note").addEventListener("click",H)},R=()=>{document.getElementById("add-note-cancel").addEventListener("click",K)},D=()=>{document.getElementById("add-new-note").addEventListener("click",X)},O=()=>{document.getElementById("add-new-note-primary").addEventListener("click",Z)},$=e=>{document.getElementById("edit-note-"+e).addEventListener("click",(e=>W(e)))},P=e=>{document.getElementById("remove-note-"+e).addEventListener("click",(e=>_(e)))},W=e=>{const t=e.target,A=b(t),n=y(A),{title:o,body:r}=E(A),a=(e=>{const{id:t,title:A,body:n}=e,o=N("edit-note-container"),r=S("edit-note-heading"),a=U({heading:"h2",textContent:"Edit note"}),d=Y({className:"btn btn-cancel",id:"edit-note-cancel-btn-"+t,"data-id":t,textContent:"Cancel"});r.appendChild(a),r.appendChild(d);const i=S("edit-note-body");return[G({className:"text-field",id:"edit-note-title-"+t,placeholder:"Untitlted Note",value:A}),L({className:"text-field note-body-textarea",id:"edit-note-body-"+t,placeholder:"Your note...",value:n}),Y({className:"btn btn-primary edit-note",id:"edit-note-btn-"+t,"data-id":t,textContent:"Edit"})].forEach((e=>i.appendChild(e))),o.appendChild(r),o.appendChild(i),o})({id:A,title:o,body:r});n.classList.add("note-edit-mode"),n.replaceChildren(a),(e=>{const{id:t}=e;document.getElementById("edit-note-cancel-btn-"+t).addEventListener("click",(()=>te(e)))})({id:A,title:o,body:r}),(e=>{document.getElementById("edit-note-btn-"+e).addEventListener("click",(()=>ee(e)))})(A)},_=e=>{const t=e.target,A=b(t);document.getElementById("modal").showModal(),(e=>{document.getElementById("modal-remove").addEventListener("click",(()=>Ae(e)))})(A),J()},J=()=>{document.getElementById("modal-cancel").addEventListener("click",ne)},H=()=>{const e=w();B().replaceChildren(e),R(),D()},K=()=>{if(f().length)return void V();const e=k(),t=document.getElementById("container");t?.replaceChildren(e),Q()},V=()=>{const e=I(),t=B();t.firstChild.remove(),t.prepend(e),O()},X=()=>{{const e=((e,t)=>{const A=N("note-tile");return A.setAttribute("data-id",x.toString()),[M(e,x.toString()),T(t,x.toString()),j()].forEach((e=>A.appendChild(e))),x++,A})(document.getElementById("note-title").value,document.getElementById("note-body").value),t=document.getElementById("container"),A=I(),n=f(),o=e.getAttribute("data-id");if(oe("enable"),n.length)return t.firstChild.remove(),t.prepend(A),t.appendChild(e),$(o),P(o),void O();t.replaceChildren(A,e),$(o),P(o),O()}},Z=()=>{const e=document.getElementById("add-new-note-primary"),t=w(),A=document.getElementById("container");e.remove(),A.prepend(t),R(),D()},ee=e=>{y(e).classList.remove("note-edit-mode"),(e=>{const t=document.getElementById("edit-note-title-"+e).value,A=document.getElementById("edit-note-body-"+e).value;F({id:e,title:t,body:A})})(e),$(e),P(e)},te=e=>{const{id:t}=e;y(t).classList.remove("note-edit-mode"),F(e),$(t),P(t)},Ae=e=>{const t=document.getElementById("modal");if(y(e)?.remove(),t.close(),!f().length){const e=document.getElementById("container"),t=k();return e.replaceChildren(t),oe("disable"),void Q()}const A=document.getElementById("search-notes").value;re(A)},ne=()=>{document.getElementById("modal").close()},oe=e=>{const t=document.getElementById("search-notes");"enable"===e?t.removeAttribute("disabled"):(t.value="",t.setAttribute("disabled","true"))},re=e=>{const t=f();e||t.forEach((e=>{e.classList.remove("hide")}));const n=t.filter((t=>{const A=t.getAttribute("data-id"),n=E(A);return n.body.includes(e)||n.title.includes(e)})).map((e=>e.getAttribute("data-id"))),o=document.getElementById("no-results");if(!n.length&&!o){const e=(()=>{const e=N("no-results");e.id="no-results";const t=S("details");return[q({src:A(294),loading:"lazy",alt:"Sad emoji",className:"information"}),U({textContent:"We could not find any matching results",className:"heading"}),z({type:"p",textContent:"Looks like you don't have a note with title or body matching your phrase. Try to rephrase or create a new note.",className:"description"})].forEach((e=>t.appendChild(e))),e.appendChild(t),e})();B().appendChild(e)}o&&n.length&&o.remove(),t.forEach((e=>{n.includes(e.getAttribute("data-id"))?e.classList.remove("hide"):e.classList.add("hide")}))};Q(),(()=>{const e=document.getElementById("search-notes");e.addEventListener("input",(()=>re(e.value)))})(),document.getElementById("scroll-up").addEventListener("click",(()=>{B().scrollTo({behavior:"smooth",top:0})}))})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SCxTQUFTLENBQ2pCQyxTQUFVLFNBQ1ZDLElBQUssR0FDTCxHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vc3JjL3N0eWxlcy5zY3NzIiwid2VicGFjazovL21pbmRwYWwtcmVjcnVpdG1lbnQtdGFzay8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qcyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL21pbmRwYWwtcmVjcnVpdG1lbnQtdGFzay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzIiwid2VicGFjazovL21pbmRwYWwtcmVjcnVpdG1lbnQtdGFzay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovL21pbmRwYWwtcmVjcnVpdG1lbnQtdGFzay93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrL3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL21pbmRwYWwtcmVjcnVpdG1lbnQtdGFzay93ZWJwYWNrL3J1bnRpbWUvbm9uY2UiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vc3JjL3N0eWxlcy5zY3NzP2E2MDkiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vc3JjL2NvbnN0YW50cy9tb250aC50cyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svLi9zcmMvdXRpbHMvZ2V0dGVycy50cyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svLi9zcmMvdXRpbHMvY3JlYXRvcnMudHMiLCJ3ZWJwYWNrOi8vbWluZHBhbC1yZWNydWl0bWVudC10YXNrLy4vc3JjL3V0aWxzL2xpc3RlbmVycy50cyIsIndlYnBhY2s6Ly9taW5kcGFsLXJlY3J1aXRtZW50LXRhc2svLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fID0gbmV3IFVSTChcIi4vYXNzZXRzL3NlYXJjaC5zdmdcIiwgaW1wb3J0Lm1ldGEudXJsKTtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMCZkaXNwbGF5PXN3YXApO1wiXSk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAqe2ZvbnQtZmFtaWx5OlwiSW50ZXJcIixzYW5zLXNlcmlmfS5idG57Ym9yZGVyLXJhZGl1czouNzVyZW07cGFkZGluZzouNXJlbSAxcmVtO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MS41cmVtfS5idG4uYnRuLXByaW1hcnl7Ym9yZGVyOjA7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiM2YjNjOWJ9LmJ0bi5idG4tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiM4NDRkYmF9LmJ0bi5idG4tcHJpbWFyeTphY3RpdmV7YmFja2dyb3VuZDojNWIyZjg3fS5idG4uYnRuLXNlY29uZGFyeXtjb2xvcjojMWIxYzFlO2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNiY2JjYmR9LmJ0bi5idG4tc2Vjb25kYXJ5OmhvdmVye2JhY2tncm91bmQ6I2U3ZTdlN30uYnRuLmJ0bi1zZWNvbmRhcnk6YWN0aXZle2JhY2tncm91bmQ6I2JkYmRiZH0udGV4dC1maWVsZHtib3JkZXItcmFkaXVzOi43NXJlbTtwYWRkaW5nOi41cmVtIDFyZW07YmFja2dyb3VuZDojZWVlZmYwO2JvcmRlcjowO2ZvbnQtc2l6ZToxcmVtO2xpbmUtaGVpZ2h0OjEuNXJlbX0udGV4dC1maWVsZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNkY2RlZTB9LnRleHQtZmllbGQ6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojZmZmfS50ZXh0LWZpZWxkOjpwbGFjZWhvbGRlcntjb2xvcjojNWI1YzVlO2xpbmUtaGVpZ2h0OjEuNnJlbX0uYnRuLmJ0bi1jYW5jZWx7Y29sb3I6IzBmNzViODtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuNDg3NXJlbTtmb250LXdlaWdodDo0MDA7cGFkZGluZzouNXJlbSAuNzVyZW19LmJ0bi5idG4tY2FuY2VsOmhvdmVye2ZvbnQtd2VpZ2h0OjUwMDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO3RleHQtdW5kZXJsaW5lLW9mZnNldDouMzc1cmVtfSosKjo6YWZ0ZXIsKjo6YmVmb3Jle2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjA7bWFyZ2luOjB9LmJ0bi1zY3JvbGx7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXI6MDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7Y3Vyc29yOnBvaW50ZXI7Z2FwOi41cmVtO3BhZGRpbmc6MXJlbSAxcmVtIDB9LmJ0bi1zY3JvbGw+aDF7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjEuODc1cmVtfS5zZWFyY2h7cGFkZGluZzowIDFyZW07bWFyZ2luLWJvdHRvbTouNXJlbX0uc2VhcmNoLWlucHV0e3dpZHRoOjEwMCU7bWFyZ2luLXRvcDoxLjVyZW07YmFja2dyb3VuZC1pbWFnZTp1cmwoJHtfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19ffSk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246Ljc1cmVtIDUwJTtwYWRkaW5nOi41cmVtIC43NXJlbSAuNXJlbSAzcmVtfS5jb250YWluZXJ7bWFyZ2luLXRvcDoxLjVyZW07ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OmNhbGMoMTAwZHZoIC0gMTUwcHgpO2dhcDoxcmVtO292ZXJmbG93LXk6YXV0b30uZGV0YWlscy13cmFwcGVye3BhZGRpbmc6MCAxcmVtO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyfS5kZXRhaWxze21hcmdpbi10b3A6Mi4zMTI1cmVtO3BhZGRpbmc6MCAxLjI1cmVtO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDouNzVyZW07dGV4dC1hbGlnbjpjZW50ZXJ9LmluZm9ybWF0aW9ue2hlaWdodDo0cmVtfS5kZXRhaWxzLXdyYXBwZXI+LmRldGFpbHM+LmhlYWRpbmd7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjEuODc1cmVtfS5kZXRhaWxzLXdyYXBwZXI+LmRldGFpbHM+LmRlc2NyaXB0aW9ue2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MXJlbTtsaW5lLWhlaWdodDoxLjZyZW19LmRldGFpbHMtd3JhcHBlcj4uYWRkLW5vdGV7bWFyZ2luLXRvcDoxLjVyZW07Z2FwOi41cmVtO2ZvbnQtd2VpZ2h0OjUwMH0uYWRkLW5vdGUtcHJpbWFyeXt3aWR0aDpjYWxjKDEwMCUgLSAycmVtKTttYXJnaW46MCAxcmVtfS5ub3RlLXRpbGV7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6Ljc1cmVtO2JveC1zaGFkb3c6MHB4IDRweCAxNnB4IDBweCByZ2JhKDAsMCwwLC4wNzA1ODgyMzUzKTt3aWR0aDpjYWxjKDEwMCUgLSAycmVtKTtnYXA6Ljc1cmVtO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZzouNzVyZW19Lm5vdGUtaGVhZGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lm5vdGUtdGlsZTpmaXJzdC1vZi10eXBle21hcmdpbi10b3A6LjVyZW19Lm5vdGUtaGVhZGVyPi5ub3RlLXRpdGxle2ZvbnQtd2VpZ2h0OjUwMDtmb250LXNpemU6Ljg3NXJlbTtsaW5lLWhlaWdodDoxLjQ4NzVyZW07Y29sb3I6IzFiMWMxZX0ubm90ZS1oZWFkZXI+LmFjdGlvbnN7Z2FwOi41cmVtO2Rpc3BsYXk6ZmxleH0ubm90ZS1oZWFkZXI+LmFjdGlvbnM+LmFjdGlvbi1idG57YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyfS5ub3RlLWJvZHl7Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS40ODc1cmVtO2NvbG9yOiMzYjNjM2V9Lm5vdGUtYm9keT5we292ZXJmbG93LXdyYXA6YnJlYWstd29yZDt0ZXh0LXdyYXA6d3JhcH0ubm90ZS1mb290ZXJ7Zm9udC1zaXplOi43NXJlbTtsaW5lLWhlaWdodDouOTc1cmVtO2NvbG9yOiM1YjVjNWV9Lm1vZGFse3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAtNTAlKTt3aWR0aDpjYWxjKDEwMCUgLSAzMnB4KTtib3JkZXI6MDtiYWNrZ3JvdW5kOiNmZmY7cGFkZGluZzoxLjVyZW07Ym9yZGVyLXJhZGl1czoxcmVtO2dhcDoxLjVyZW07bWF4LXdpZHRoOjYyMHB4fS5tb2RhbD4ubW9kYWwtY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEuNXJlbX0ubW9kYWwtaGVhZGluZ3tmb250LXdlaWdodDo1MDA7Zm9udC1zaXplOjEuMjVyZW07bGluZS1oZWlnaHQ6MS44NzVyZW19Lm1vZGFsLWJvZHl7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNnJlbX0ubW9kYWwtZm9vdGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MXJlbX0ubW9kYWwtYWN0aW9uLWJ0bnt3aWR0aDo1MCV9ZGlhbG9nOjpiYWNrZHJvcHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjMwMTk2MDc4NDMpfS5hZGQtbmV3LW5vdGUtY29udGFpbmVyLC5lZGl0LW5vdGUtY29udGFpbmVye3BhZGRpbmc6MS4yNXJlbSAxcmVtO3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MXJlbTtib3gtc2hhZG93OjBweCAwcHggMTZweCAwcHggcmdiYSgwLDAsMCwuMDc4NDMxMzcyNSk7Ym9yZGVyLXdpZHRoOjFweCAwcHggMXB4IDBweDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNlZWVmZjB9LmFkZC1uZXctbm90ZS1oZWFkaW5nLC5lZGl0LW5vdGUtaGVhZGluZ3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5hZGQtbmV3LW5vdGUtaGVhZGluZz5oMiwuZWRpdC1ub3RlLWhlYWRpbmc+aDJ7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc2l6ZToxcmVtO2xpbmUtaGVpZ2h0OjEuNnJlbX0uYWRkLW5ldy1ub3RlLWJvZHksLmVkaXQtbm90ZS1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjFyZW07cG9zaXRpb246cmVsYXRpdmV9LmFkZC1uZXctbm90ZS5idG4uYnRuLXByaW1hcnksLmVkaXQtbm90ZS5idG4uYnRuLXByaW1hcnl7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjFyZW07cmlnaHQ6MXJlbX0ubm90ZS1ib2R5LXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbDttaW4taGVpZ2h0OjIxMHB4fS5ub3RlLXRpbGUubm90ZS1lZGl0LW1vZGV7d2lkdGg6MTAwJTtwYWRkaW5nOjB9aW5wdXRbZGlzYWJsZWRde2N1cnNvcjpub3QtYWxsb3dlZH0uaGlkZXtkaXNwbGF5Om5vbmV9YCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL190eXBvZ3JhcGh5LnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvX2Rlc2lnbi5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBR0EsRUFDRSw4QkFBQSxDQ0ZGLEtBQ0Usb0JBQUEsQ0FDQSxrQkFBQSxDQUNBLGlCQUFBLENBQ0EsWUFBQSxDQUNBLGtCQUFBLENBQ0Esc0JBQUEsQ0FDQSxjQUFBLENBQ0EsY0FB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QUFBLENBQ0EsNkJBQUEsQ0FFRiwrQ0FFRSxlQUFBLENBQ0EsY0FBQSxDQUNBLGtCQUFBLENBR0YsbUNBRUUsWUFBQSxDQUNBLHFCQUFBLENBQ0EsUUFBQSxDQUNBLGlCQUFBLENBR0YseURBRUUsaUJBQUEsQ0FDQSxXQUFBLENBQ0EsVUFBQSxDQUdGLG9CQUNFLGVBQUEsQ0FDQSxnQkFBQSxDQUdGLDBCQUNFLFVBQUEsQ0FDQSxTQUFBLENBR0YsZ0JBQ0Usa0JBQUEsQ0FHRixNQUNFLFlBQUFcIixcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh1cmwsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICghdXJsKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuICB1cmwgPSBTdHJpbmcodXJsLl9fZXNNb2R1bGUgPyB1cmwuZGVmYXVsdCA6IHVybCk7XG5cbiAgLy8gSWYgdXJsIGlzIGFscmVhZHkgd3JhcHBlZCBpbiBxdW90ZXMsIHJlbW92ZSB0aGVtXG4gIGlmICgvXlsnXCJdLipbJ1wiXSQvLnRlc3QodXJsKSkge1xuICAgIHVybCA9IHVybC5zbGljZSgxLCAtMSk7XG4gIH1cbiAgaWYgKG9wdGlvbnMuaGFzaCkge1xuICAgIHVybCArPSBvcHRpb25zLmhhc2g7XG4gIH1cblxuICAvLyBTaG91bGQgdXJsIGJlIHdyYXBwZWQ/XG4gIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy0zLyN1cmxzXG4gIGlmICgvW1wiJygpIFxcdFxcbl18KCUyMCkvLnRlc3QodXJsKSB8fCBvcHRpb25zLm5lZWRRdW90ZXMpIHtcbiAgICByZXR1cm4gXCJcXFwiXCIuY29uY2F0KHVybC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIiksIFwiXFxcIlwiKTtcbiAgfVxuICByZXR1cm4gdXJsO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsInZhciBzY3JpcHRVcmw7XG5pZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5nLmltcG9ydFNjcmlwdHMpIHNjcmlwdFVybCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArIFwiXCI7XG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdCAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnRhZ05hbWUudG9VcHBlckNhc2UoKSA9PT0gJ1NDUklQVCcpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICghc2NyaXB0VXJsIHx8ICEvXmh0dHAocz8pOi8udGVzdChzY3JpcHRVcmwpKSkgc2NyaXB0VXJsID0gc2NyaXB0c1tpLS1dLnNyYztcblx0XHR9XG5cdH1cbn1cbi8vIFdoZW4gc3VwcG9ydGluZyBicm93c2VycyB3aGVyZSBhbiBhdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0LnB1YmxpY1BhdGggbWFudWFsbHkgdmlhIGNvbmZpZ3VyYXRpb25cbi8vIG9yIHBhc3MgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBhbmQgc2V0IHRoZSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyB2YXJpYWJsZSBmcm9tIHlvdXIgY29kZSB0byB1c2UgeW91ciBvd24gbG9naWMuXG5pZiAoIXNjcmlwdFVybCkgdGhyb3cgbmV3IEVycm9yKFwiQXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7XG5zY3JpcHRVcmwgPSBzY3JpcHRVcmwucmVwbGFjZSgvIy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcPy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcL1teXFwvXSskLywgXCIvXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2NyaXB0VXJsOyIsIl9fd2VicGFja19yZXF1aXJlX18uYiA9IGRvY3VtZW50LmJhc2VVUkkgfHwgc2VsZi5sb2NhdGlvbi5ocmVmO1xuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuLy8gdW5kZWZpbmVkID0gY2h1bmsgbm90IGxvYWRlZCwgbnVsbCA9IGNodW5rIHByZWxvYWRlZC9wcmVmZXRjaGVkXG4vLyBbcmVzb2x2ZSwgcmVqZWN0LCBQcm9taXNlXSA9IGNodW5rIGxvYWRpbmcsIDAgPSBjaHVuayBsb2FkZWRcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDc5MjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImV4cG9ydCBjb25zdCBNT05USDogUmVjb3JkPG51bWJlciwgc3RyaW5nPiA9IHtcclxuICAwOiBcIkphbnVhcnlcIixcclxuICAxOiBcIkZlYnJ1YXJ5XCIsXHJcbiAgMjogXCJNYXJjaFwiLFxyXG4gIDM6IFwiQXByaWxcIixcclxuICA0OiBcIk1heVwiLFxyXG4gIDU6IFwiSnVuZVwiLFxyXG4gIDY6IFwiSnVseVwiLFxyXG4gIDc6IFwiQXVndXN0XCIsXHJcbiAgODogXCJTZXB0ZW1iZXJcIixcclxuICA5OiBcIk9jdG9iZXJcIixcclxuICAxMDogXCJOb3ZlbWJlclwiLFxyXG4gIDExOiBcIkRlY2VtYmVyXCIsXHJcbn07XHJcbiIsImltcG9ydCB7IE1PTlRIIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9tb250aFwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE5vdGVzID0gKCk6IEhUTUxFbGVtZW50W10gPT4ge1xyXG4gIHJldHVybiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIubm90ZS10aWxlXCIpKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRCdG5JZCA9ICh0YXJnZXQ6IEhUTUxFbGVtZW50KTogc3RyaW5nID0+IHtcclxuICByZXR1cm4gKHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWlkXCIpIHx8XHJcbiAgICB0YXJnZXQucGFyZW50RWxlbWVudCEuZ2V0QXR0cmlidXRlKFwiZGF0YS1pZFwiKSkgYXMgc3RyaW5nO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE5vdGVCeUlkID0gKGlkOiBzdHJpbmcpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC5ub3RlLXRpbGVbZGF0YS1pZD1cIiR7aWR9XCJdYCkhO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE5vdGVEZXRhaWxzID0gKGlkOiBzdHJpbmcpOiB7IHRpdGxlOiBzdHJpbmc7IGJvZHk6IHN0cmluZyB9ID0+IHtcclxuICBjb25zdCB0aXRsZSA9XHJcbiAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJub3RlLXRpdGxlLVwiICsgaWQpIGFzIEhUTUxIZWFkaW5nRWxlbWVudClcclxuICAgICAgLnRleHRDb250ZW50IHx8IFwiXCI7XHJcbiAgY29uc3QgYm9keSA9XHJcbiAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJub3RlLWJvZHktXCIgKyBpZCkgYXMgSFRNTFBhcmFncmFwaEVsZW1lbnQpXHJcbiAgICAgIC50ZXh0Q29udGVudCB8fCBcIlwiO1xyXG4gIHJldHVybiB7IHRpdGxlLCBib2R5IH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TWFpbkNvbnRhaW5lciA9ICgpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29udGFpbmVyXCIpITtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50RGF0ZSA9ICgpID0+IHtcclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuICByZXR1cm4gYCR7TU9OVEhbZGF0ZS5nZXRNb250aCgpXX0gJHtkYXRlLmdldERhdGUoKX1gO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vbW9kZWxzL2J1dHRvbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBIZWFkaW5nIH0gZnJvbSBcIi4uL21vZGVscy9oZWFkaW5nLm1vZGVsXCI7XHJcbmltcG9ydCB7IEN1c3RvbUltYWdlIH0gZnJvbSBcIi4uL21vZGVscy9pbWFnZS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuLi9tb2RlbHMvaW5wdXQubW9kZWxcIjtcclxuaW1wb3J0IHsgTm90ZURldGFpbHMgfSBmcm9tIFwiLi4vbW9kZWxzL25vdGUtZGV0YWlscy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBDdXN0b21UZXh0IH0gZnJvbSBcIi4uL21vZGVscy90ZXh0Lm1vZGVsXCI7XHJcbmltcG9ydCB7IFRleHRhcmVhIH0gZnJvbSBcIi4uL21vZGVscy90ZXh0YXJlYS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBnZXRDdXJyZW50RGF0ZSwgZ2V0Tm90ZUJ5SWQgfSBmcm9tIFwiLi9nZXR0ZXJzXCI7XHJcblxyXG5sZXQgaWR4ID0gMDtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBZGROZXdOb3RlVmlld0VsZW1lbnQgPSAoKTogSFRNTEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IHNlY3Rpb24gPSBjcmVhdGVTZWN0aW9uRWxlbWVudChcImFkZC1uZXctbm90ZS1jb250YWluZXJcIik7XHJcblxyXG4gIGNvbnN0IGhlYWRpbmcgPSBjcmVhdGVEaXZFbGVtZW50KFwiYWRkLW5ldy1ub3RlLWhlYWRpbmdcIik7XHJcbiAgY29uc3QgaGVhZGluZ0hlYWRlciA9IGNyZWF0ZUhlYWRpbmdFbGVtZW50KHsgdGV4dENvbnRlbnQ6IFwiQWRkIG5ldyBub3RlXCIgfSk7XHJcbiAgY29uc3QgaGVhZGluZ0J1dHRvbiA9IGNyZWF0ZUJ1dHRvbkVsZW1lbnQoe1xyXG4gICAgY2xhc3NOYW1lOiBcImJ0biBidG4tY2FuY2VsXCIsXHJcbiAgICB0ZXh0Q29udGVudDogXCJDYW5jZWxcIixcclxuICAgIGlkOiBcImFkZC1ub3RlLWNhbmNlbFwiLFxyXG4gIH0pO1xyXG5cclxuICBoZWFkaW5nLmFwcGVuZENoaWxkKGhlYWRpbmdIZWFkZXIpO1xyXG4gIGhlYWRpbmcuYXBwZW5kQ2hpbGQoaGVhZGluZ0J1dHRvbik7XHJcblxyXG4gIGNvbnN0IGJvZHkgPSBjcmVhdGVEaXZFbGVtZW50KFwiYWRkLW5ldy1ub3RlLWJvZHlcIik7XHJcbiAgY29uc3QgYm9keUlucHV0ID0gY3JlYXRlSW5wdXRFbGVtZW50KHtcclxuICAgIGNsYXNzTmFtZTogXCJ0ZXh0LWZpZWxkXCIsXHJcbiAgICBpZDogXCJub3RlLXRpdGxlXCIsXHJcbiAgICBwbGFjZWhvbGRlcjogXCJVbnRpdGxlZCBOb3RlXCIsXHJcbiAgfSk7XHJcbiAgY29uc3QgYm9keVRleHRhcmVhID0gY3JlYXRlVGV4dEVsZW1lbnRhcmVhRWxlbWVudCh7XHJcbiAgICBjbGFzc05hbWU6IFwidGV4dC1maWVsZCBub3RlLWJvZHktdGV4dGFyZWFcIixcclxuICAgIGlkOiBcIm5vdGUtYm9keVwiLFxyXG4gICAgcGxhY2Vob2xkZXI6IFwiWW91ciBub3RlLi4uXCIsXHJcbiAgfSk7XHJcbiAgY29uc3QgYm9keUJ1dHRvbiA9IGNyZWF0ZUJ1dHRvbkVsZW1lbnQoe1xyXG4gICAgY2xhc3NOYW1lOiBcImJ0biBidG4tcHJpbWFyeSBhZGQtbmV3LW5vdGVcIixcclxuICAgIHRleHRDb250ZW50OiBcIkFkZFwiLFxyXG4gICAgaWQ6IFwiYWRkLW5ldy1ub3RlXCIsXHJcbiAgfSk7XHJcblxyXG4gIGJvZHkuYXBwZW5kQ2hpbGQoYm9keUlucHV0KTtcclxuICBib2R5LmFwcGVuZENoaWxkKGJvZHlUZXh0YXJlYSk7XHJcbiAgYm9keS5hcHBlbmRDaGlsZChib2R5QnV0dG9uKTtcclxuXHJcbiAgc2VjdGlvbi5hcHBlbmRDaGlsZChoZWFkaW5nKTtcclxuICBzZWN0aW9uLmFwcGVuZENoaWxkKGJvZHkpO1xyXG4gIHJldHVybiBzZWN0aW9uO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZU5vTm90ZXNWaWV3RWxlbWVudCA9ICgpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgY29uc3Qgd3JhcHBlciA9IGNyZWF0ZURpdkVsZW1lbnQoXCJkZXRhaWxzLXdyYXBwZXJcIik7XHJcblxyXG4gIGNvbnN0IGRldGFpbHMgPSBjcmVhdGVEaXZFbGVtZW50KFwiZGV0YWlsc1wiKTtcclxuICBjb25zdCBpbmZvcm1hdGlvbkltZyA9IGNyZWF0ZUltYWdlRWxlbWVudCh7XHJcbiAgICBzcmM6IHJlcXVpcmUoXCIuLi9hc3NldHMvaW5mb3JtYXRpb24uc3ZnXCIpLFxyXG4gICAgbG9hZGluZzogXCJlYWdlclwiLFxyXG4gICAgYWx0OiBcIkluZm9ybWF0aW9uIGNpcmNsZVwiLFxyXG4gICAgY2xhc3NOYW1lOiBcImluZm9ybWF0aW9uXCIsXHJcbiAgfSk7XHJcbiAgY29uc3QgaGVhZGluZyA9IGNyZWF0ZUhlYWRpbmdFbGVtZW50KHtcclxuICAgIHRleHRDb250ZW50OiBcIk5vIG5vdGVzIHlldFwiLFxyXG4gICAgY2xhc3NOYW1lOiBcImhlYWRpbmdcIixcclxuICB9KTtcclxuICBjb25zdCBkZXRhaWxzUGFyYWdyYXBoID0gY3JlYXRlVGV4dEVsZW1lbnQoe1xyXG4gICAgdHlwZTogXCJwXCIsXHJcbiAgICB0ZXh0Q29udGVudDogXCJBZGQgYSBub3RlIHRvIGtlZXAgdHJhY2sgb2YgeW91ciBsZWFybmluZ3MuXCIsXHJcbiAgICBjbGFzc05hbWU6IFwiZGVzY3JpcHRpb25cIixcclxuICB9KTtcclxuXHJcbiAgW2luZm9ybWF0aW9uSW1nLCBoZWFkaW5nLCBkZXRhaWxzUGFyYWdyYXBoXS5mb3JFYWNoKChub2RlKSA9PlxyXG4gICAgZGV0YWlscy5hcHBlbmRDaGlsZChub2RlKVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGJ1dHRvbiA9IGNyZWF0ZUJ1dHRvbkVsZW1lbnQoe1xyXG4gICAgY2xhc3NOYW1lOiBcImJ0biBidG4tc2Vjb25kYXJ5IGFkZC1ub3RlXCIsXHJcbiAgICBpZDogXCJhZGQtbm90ZVwiLFxyXG4gIH0pO1xyXG5cclxuICBjb25zdCBub3RlQWRkSW1nID0gY3JlYXRlSW1hZ2VFbGVtZW50KHtcclxuICAgIHNyYzogcmVxdWlyZShcIi4uL2Fzc2V0cy9ub3RlX2FkZC5zdmdcIiksXHJcbiAgICBhbHQ6IFwiXCIsXHJcbiAgICBsb2FkaW5nOiBcImVhZ2VyXCIsXHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGJ0blRleHQgPSBjcmVhdGVUZXh0RWxlbWVudCh7IHR5cGU6IFwic3BhblwiLCB0ZXh0Q29udGVudDogXCJBZGQgTm90ZVwiIH0pO1xyXG5cclxuICBidXR0b24uYXBwZW5kQ2hpbGQobm90ZUFkZEltZyk7XHJcbiAgYnV0dG9uLmFwcGVuZENoaWxkKGJ0blRleHQpO1xyXG5cclxuICB3cmFwcGVyLmFwcGVuZENoaWxkKGRldGFpbHMpO1xyXG4gIHdyYXBwZXIuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcclxuXHJcbiAgcmV0dXJuIHdyYXBwZXI7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlTm90ZUVsZW1lbnQgPSAoXHJcbiAgdGl0bGVWYWw6IHN0cmluZyxcclxuICBib2R5VmFsOiBzdHJpbmdcclxuKTogSFRNTEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IHNlY3Rpb24gPSBjcmVhdGVTZWN0aW9uRWxlbWVudChcIm5vdGUtdGlsZVwiKTtcclxuICBzZWN0aW9uLnNldEF0dHJpYnV0ZShcImRhdGEtaWRcIiwgaWR4LnRvU3RyaW5nKCkpO1xyXG5cclxuICBjb25zdCBub3RlSGVhZGVyID0gY3JlYXRlTm90ZVRpbGVIZWFkZXJFbGVtZW50KHRpdGxlVmFsLCBpZHgudG9TdHJpbmcoKSk7XHJcbiAgY29uc3Qgbm90ZUJvZHkgPSBjcmVhdGVOb3RlVGlsZUJvZHlFbGVtZW50KGJvZHlWYWwsIGlkeC50b1N0cmluZygpKTtcclxuICBjb25zdCBub3RlRm9vdGVyID0gY3JlYXRlTm90ZVRpbGVGb290ZXJFbGVtZW50KCk7XHJcblxyXG4gIFtub3RlSGVhZGVyLCBub3RlQm9keSwgbm90ZUZvb3Rlcl0uZm9yRWFjaCgobm9kZSkgPT5cclxuICAgIHNlY3Rpb24uYXBwZW5kQ2hpbGQobm9kZSlcclxuICApO1xyXG5cclxuICBpZHgrKztcclxuXHJcbiAgcmV0dXJuIHNlY3Rpb247XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgcmV0cmlldmVOb3RlRWxlbWVudCA9IChkZXRhaWxzOiBOb3RlRGV0YWlscyk6IEhUTUxFbGVtZW50ID0+IHtcclxuICBjb25zdCB7IHRpdGxlLCBib2R5LCBpZCB9ID0gZGV0YWlscztcclxuICBjb25zdCBub3RlID0gZ2V0Tm90ZUJ5SWQoaWQpO1xyXG5cclxuICBBcnJheS5mcm9tKG5vdGUuY2hpbGRyZW4pLmZvckVhY2goKGNoaWxkKSA9PiBjaGlsZC5yZW1vdmUoKSk7XHJcblxyXG4gIGNvbnN0IG5vdGVIZWFkZXIgPSBjcmVhdGVOb3RlVGlsZUhlYWRlckVsZW1lbnQodGl0bGUsIGlkKTtcclxuICBjb25zdCBub3RlQm9keSA9IGNyZWF0ZU5vdGVUaWxlQm9keUVsZW1lbnQoYm9keSwgaWQpO1xyXG4gIGNvbnN0IG5vdGVGb290ZXIgPSBjcmVhdGVOb3RlVGlsZUZvb3RlckVsZW1lbnQoKTtcclxuXHJcbiAgW25vdGVIZWFkZXIsIG5vdGVCb2R5LCBub3RlRm9vdGVyXS5mb3JFYWNoKChub2RlKSA9PiBub3RlLmFwcGVuZENoaWxkKG5vZGUpKTtcclxuICByZXR1cm4gbm90ZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzYXZlTm90ZUVsZW1lbnQgPSAoaWQ6IHN0cmluZyk6IEhUTUxFbGVtZW50ID0+IHtcclxuICBjb25zdCB0aXRsZSA9IChcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZWRpdC1ub3RlLXRpdGxlLVwiICsgaWQpIGFzIEhUTUxJbnB1dEVsZW1lbnRcclxuICApLnZhbHVlO1xyXG4gIGNvbnN0IGJvZHkgPSAoXHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVkaXQtbm90ZS1ib2R5LVwiICsgaWQpIGFzIEhUTUxUZXh0QXJlYUVsZW1lbnRcclxuICApLnZhbHVlO1xyXG5cclxuICByZXR1cm4gcmV0cmlldmVOb3RlRWxlbWVudCh7IGlkLCB0aXRsZSwgYm9keSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBZGROZXdOb3RlQnRuRWxlbWVudCA9ICgpOiBIVE1MQnV0dG9uRWxlbWVudCA9PiB7XHJcbiAgcmV0dXJuIGNyZWF0ZUJ1dHRvbkVsZW1lbnQoe1xyXG4gICAgY2xhc3NOYW1lOiBcImJ0biBidG4tcHJpbWFyeSBhZGQtbm90ZS1wcmltYXJ5XCIsXHJcbiAgICBpZDogXCJhZGQtbmV3LW5vdGUtcHJpbWFyeVwiLFxyXG4gICAgdGV4dENvbnRlbnQ6IFwiQWRkIE5ld1wiLFxyXG4gIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUVkaXROb3RlVmlld0VsZW1lbnQgPSAoXHJcbiAgcGF5bG9hZDogTm90ZURldGFpbHNcclxuKTogSFRNTEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IHsgaWQsIHRpdGxlLCBib2R5IH0gPSBwYXlsb2FkO1xyXG4gIGNvbnN0IHNlY3Rpb24gPSBjcmVhdGVTZWN0aW9uRWxlbWVudChcImVkaXQtbm90ZS1jb250YWluZXJcIik7XHJcblxyXG4gIGNvbnN0IGhlYWRpbmcgPSBjcmVhdGVEaXZFbGVtZW50KFwiZWRpdC1ub3RlLWhlYWRpbmdcIik7XHJcbiAgY29uc3QgaGVhZGVyID0gY3JlYXRlSGVhZGluZ0VsZW1lbnQoe1xyXG4gICAgaGVhZGluZzogXCJoMlwiLFxyXG4gICAgdGV4dENvbnRlbnQ6IFwiRWRpdCBub3RlXCIsXHJcbiAgfSk7XHJcbiAgY29uc3QgY2FuY2VsQnRuID0gY3JlYXRlQnV0dG9uRWxlbWVudCh7XHJcbiAgICBjbGFzc05hbWU6IFwiYnRuIGJ0bi1jYW5jZWxcIixcclxuICAgIGlkOiBcImVkaXQtbm90ZS1jYW5jZWwtYnRuLVwiICsgaWQsXHJcbiAgICBcImRhdGEtaWRcIjogaWQsXHJcbiAgICB0ZXh0Q29udGVudDogXCJDYW5jZWxcIixcclxuICB9KTtcclxuXHJcbiAgaGVhZGluZy5hcHBlbmRDaGlsZChoZWFkZXIpO1xyXG4gIGhlYWRpbmcuYXBwZW5kQ2hpbGQoY2FuY2VsQnRuKTtcclxuXHJcbiAgY29uc3Qgbm90ZUJvZHkgPSBjcmVhdGVEaXZFbGVtZW50KFwiZWRpdC1ub3RlLWJvZHlcIik7XHJcbiAgY29uc3Qgbm90ZVRpdGxlSW5wdXQgPSBjcmVhdGVJbnB1dEVsZW1lbnQoe1xyXG4gICAgY2xhc3NOYW1lOiBcInRleHQtZmllbGRcIixcclxuICAgIGlkOiBcImVkaXQtbm90ZS10aXRsZS1cIiArIGlkLFxyXG4gICAgcGxhY2Vob2xkZXI6IFwiVW50aXRsdGVkIE5vdGVcIixcclxuICAgIHZhbHVlOiB0aXRsZSxcclxuICB9KTtcclxuICBjb25zdCBub3RlQm9keVRleHRhcmVhID0gY3JlYXRlVGV4dEVsZW1lbnRhcmVhRWxlbWVudCh7XHJcbiAgICBjbGFzc05hbWU6IFwidGV4dC1maWVsZCBub3RlLWJvZHktdGV4dGFyZWFcIixcclxuICAgIGlkOiBcImVkaXQtbm90ZS1ib2R5LVwiICsgaWQsXHJcbiAgICBwbGFjZWhvbGRlcjogXCJZb3VyIG5vdGUuLi5cIixcclxuICAgIHZhbHVlOiBib2R5LFxyXG4gIH0pO1xyXG4gIGNvbnN0IGVkaXRCdG4gPSBjcmVhdGVCdXR0b25FbGVtZW50KHtcclxuICAgIGNsYXNzTmFtZTogXCJidG4gYnRuLXByaW1hcnkgZWRpdC1ub3RlXCIsXHJcbiAgICBpZDogXCJlZGl0LW5vdGUtYnRuLVwiICsgaWQsXHJcbiAgICBcImRhdGEtaWRcIjogaWQsXHJcbiAgICB0ZXh0Q29udGVudDogXCJFZGl0XCIsXHJcbiAgfSk7XHJcblxyXG4gIFtub3RlVGl0bGVJbnB1dCwgbm90ZUJvZHlUZXh0YXJlYSwgZWRpdEJ0bl0uZm9yRWFjaCgobm9kZSkgPT5cclxuICAgIG5vdGVCb2R5LmFwcGVuZENoaWxkKG5vZGUpXHJcbiAgKTtcclxuXHJcbiAgc2VjdGlvbi5hcHBlbmRDaGlsZChoZWFkaW5nKTtcclxuICBzZWN0aW9uLmFwcGVuZENoaWxkKG5vdGVCb2R5KTtcclxuXHJcbiAgcmV0dXJuIHNlY3Rpb247XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlTm9SZXN1bHRzVmlld0VsZW1lbnQgPSAoKTogSFRNTEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IHNlY3Rpb24gPSBjcmVhdGVTZWN0aW9uRWxlbWVudChcIm5vLXJlc3VsdHNcIik7XHJcbiAgc2VjdGlvbi5pZCA9IFwibm8tcmVzdWx0c1wiO1xyXG5cclxuICBjb25zdCBkZXRhaWxzID0gY3JlYXRlRGl2RWxlbWVudChcImRldGFpbHNcIik7XHJcbiAgY29uc3QgaW5mb3JtYXRpb25JbWcgPSBjcmVhdGVJbWFnZUVsZW1lbnQoe1xyXG4gICAgc3JjOiByZXF1aXJlKFwiLi4vYXNzZXRzL25vLXJlc3VsdHMuc3ZnXCIpLFxyXG4gICAgbG9hZGluZzogXCJsYXp5XCIsXHJcbiAgICBhbHQ6IFwiU2FkIGVtb2ppXCIsXHJcbiAgICBjbGFzc05hbWU6IFwiaW5mb3JtYXRpb25cIixcclxuICB9KTtcclxuICBjb25zdCBoZWFkaW5nID0gY3JlYXRlSGVhZGluZ0VsZW1lbnQoe1xyXG4gICAgdGV4dENvbnRlbnQ6IFwiV2UgY291bGQgbm90IGZpbmQgYW55IG1hdGNoaW5nIHJlc3VsdHNcIixcclxuICAgIGNsYXNzTmFtZTogXCJoZWFkaW5nXCIsXHJcbiAgfSk7XHJcbiAgY29uc3QgZGV0YWlsc1BhcmFncmFwaCA9IGNyZWF0ZVRleHRFbGVtZW50KHtcclxuICAgIHR5cGU6IFwicFwiLFxyXG4gICAgdGV4dENvbnRlbnQ6XHJcbiAgICAgIFwiTG9va3MgbGlrZSB5b3UgZG9uJ3QgaGF2ZSBhIG5vdGUgd2l0aCB0aXRsZSBvciBib2R5IG1hdGNoaW5nIHlvdXIgcGhyYXNlLiBUcnkgdG8gcmVwaHJhc2Ugb3IgY3JlYXRlIGEgbmV3IG5vdGUuXCIsXHJcbiAgICBjbGFzc05hbWU6IFwiZGVzY3JpcHRpb25cIixcclxuICB9KTtcclxuXHJcbiAgW2luZm9ybWF0aW9uSW1nLCBoZWFkaW5nLCBkZXRhaWxzUGFyYWdyYXBoXS5mb3JFYWNoKChub2RlKSA9PlxyXG4gICAgZGV0YWlscy5hcHBlbmRDaGlsZChub2RlKVxyXG4gICk7XHJcblxyXG4gIHNlY3Rpb24uYXBwZW5kQ2hpbGQoZGV0YWlscyk7XHJcblxyXG4gIHJldHVybiBzZWN0aW9uO1xyXG59O1xyXG5cclxuLy9wcml2YXRlIG5vZGUgY3JlYXRvcnNcclxuY29uc3QgY3JlYXRlU2VjdGlvbkVsZW1lbnQgPSAoY2xhc3NOYW1lOiBzdHJpbmcpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgY29uc3Qgc2VjdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzZWN0aW9uXCIpO1xyXG4gIHNlY3Rpb24uY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xyXG4gIHJldHVybiBzZWN0aW9uO1xyXG59O1xyXG5cclxuY29uc3QgY3JlYXRlRGl2RWxlbWVudCA9IChjbGFzc05hbWU6IHN0cmluZyk6IEhUTUxEaXZFbGVtZW50ID0+IHtcclxuICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gIGRpdi5jbGFzc05hbWUgPSBjbGFzc05hbWU7XHJcbiAgcmV0dXJuIGRpdjtcclxufTtcclxuXHJcbmNvbnN0IGNyZWF0ZUlucHV0RWxlbWVudCA9IChwYXlsb2FkOiBJbnB1dCk6IEhUTUxJbnB1dEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xyXG4gIGlucHV0LmNsYXNzTmFtZSA9IHBheWxvYWQuY2xhc3NOYW1lO1xyXG4gIGlucHV0LmlkID0gcGF5bG9hZC5pZDtcclxuICBpbnB1dC5wbGFjZWhvbGRlciA9IHBheWxvYWQucGxhY2Vob2xkZXI7XHJcbiAgaW5wdXQudmFsdWUgPSBwYXlsb2FkLnZhbHVlIHx8IFwiXCI7XHJcbiAgcmV0dXJuIGlucHV0O1xyXG59O1xyXG5cclxuY29uc3QgY3JlYXRlVGV4dEVsZW1lbnRhcmVhRWxlbWVudCA9IChcclxuICBwYXlsb2FkOiBUZXh0YXJlYVxyXG4pOiBIVE1MVGV4dEFyZWFFbGVtZW50ID0+IHtcclxuICBjb25zdCB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKTtcclxuICB0ZXh0YXJlYS5jbGFzc05hbWUgPSBwYXlsb2FkLmNsYXNzTmFtZTtcclxuICB0ZXh0YXJlYS5pZCA9IHBheWxvYWQuaWQ7XHJcbiAgdGV4dGFyZWEucGxhY2Vob2xkZXIgPSBwYXlsb2FkLnBsYWNlaG9sZGVyO1xyXG4gIHRleHRhcmVhLnZhbHVlID0gcGF5bG9hZC52YWx1ZSB8fCBcIlwiO1xyXG4gIHJldHVybiB0ZXh0YXJlYTtcclxufTtcclxuY29uc3QgY3JlYXRlQnV0dG9uRWxlbWVudCA9IChwYXlsb2FkOiBCdXR0b24pOiBIVE1MQnV0dG9uRWxlbWVudCA9PiB7XHJcbiAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKTtcclxuICBidXR0b24uY2xhc3NOYW1lID0gcGF5bG9hZC5jbGFzc05hbWU7XHJcbiAgYnV0dG9uLnRleHRDb250ZW50ID0gcGF5bG9hZC50ZXh0Q29udGVudCB8fCBcIlwiO1xyXG4gIGJ1dHRvbi5pZCA9IHBheWxvYWQuaWQ7XHJcbiAgYnV0dG9uLnNldEF0dHJpYnV0ZShcImRhdGEtaWRcIiwgcGF5bG9hZFtcImRhdGEtaWRcIl0gfHwgXCJcIik7XHJcbiAgcmV0dXJuIGJ1dHRvbjtcclxufTtcclxuXHJcbmNvbnN0IGNyZWF0ZUhlYWRpbmdFbGVtZW50ID0gKHBheWxvYWQ6IEhlYWRpbmcpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgY29uc3QgaGVhZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocGF5bG9hZC5oZWFkaW5nIHx8IFwiaDJcIik7XHJcbiAgaGVhZGluZy50ZXh0Q29udGVudCA9IHBheWxvYWQudGV4dENvbnRlbnQ7XHJcbiAgaGVhZGluZy5jbGFzc05hbWUgPSBwYXlsb2FkLmNsYXNzTmFtZSB8fCBcIlwiO1xyXG4gIGhlYWRpbmcuaWQgPSBwYXlsb2FkLmlkIHx8IFwiXCI7XHJcbiAgcmV0dXJuIGhlYWRpbmc7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZUltYWdlRWxlbWVudCA9IChwYXlsb2FkOiBDdXN0b21JbWFnZSk6IEhUTUxJbWFnZUVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IGltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcclxuICBpbWFnZS5zcmMgPSBwYXlsb2FkLnNyYztcclxuICBpbWFnZS5sb2FkaW5nID0gcGF5bG9hZC5sb2FkaW5nO1xyXG4gIGltYWdlLmFsdCA9IHBheWxvYWQuYWx0O1xyXG4gIHJldHVybiBpbWFnZTtcclxufTtcclxuY29uc3QgY3JlYXRlVGV4dEVsZW1lbnQgPSAoXHJcbiAgcGF5bG9hZDogQ3VzdG9tVGV4dFxyXG4pOiBIVE1MU3BhbkVsZW1lbnQgfCBIVE1MUGFyYWdyYXBoRWxlbWVudCA9PiB7XHJcbiAgY29uc3QgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocGF5bG9hZC50eXBlKTtcclxuICB0ZXh0LnRleHRDb250ZW50ID0gcGF5bG9hZC50ZXh0Q29udGVudDtcclxuICB0ZXh0LmNsYXNzTmFtZSA9IHBheWxvYWQuY2xhc3NOYW1lIHx8IFwiXCI7XHJcbiAgdGV4dC5pZCA9IHBheWxvYWQuaWQgfHwgXCJcIjtcclxuICByZXR1cm4gdGV4dDtcclxufTtcclxuLy9ncm91cCBjcmVhdG9yc1xyXG5jb25zdCBjcmVhdGVOb3RlVGlsZUhlYWRlckVsZW1lbnQgPSAoXHJcbiAgdGl0bGU6IHN0cmluZyxcclxuICBpZHg6IHN0cmluZ1xyXG4pOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgY29uc3Qgbm90ZUhlYWRlciA9IGNyZWF0ZURpdkVsZW1lbnQoXCJub3RlLWhlYWRlclwiKTtcclxuICBjb25zdCBub3RlVGl0bGUgPSBjcmVhdGVIZWFkaW5nRWxlbWVudCh7XHJcbiAgICBjbGFzc05hbWU6IFwibm90ZS10aXRsZVwiLFxyXG4gICAgdGV4dENvbnRlbnQ6IHRpdGxlLFxyXG4gICAgaWQ6IFwibm90ZS10aXRsZS1cIiArIGlkeCxcclxuICB9KTtcclxuXHJcbiAgY29uc3QgYWN0aW9ucyA9IGNyZWF0ZURpdkVsZW1lbnQoXCJhY3Rpb25zXCIpO1xyXG4gIGNvbnN0IGVkaXROb3RlQnRuID0gY3JlYXRlQnV0dG9uRWxlbWVudCh7XHJcbiAgICBjbGFzc05hbWU6IFwiYWN0aW9uLWJ0biBlZGl0LWFjdGlvblwiLFxyXG4gICAgaWQ6IFwiZWRpdC1ub3RlLVwiICsgaWR4LFxyXG4gICAgXCJkYXRhLWlkXCI6IGlkeCxcclxuICB9KTtcclxuICBjb25zdCBlZGl0Tm90ZUltZyA9IGNyZWF0ZUltYWdlRWxlbWVudCh7XHJcbiAgICBhbHQ6IFwiRWRpdCBub3RlXCIsXHJcbiAgICBsb2FkaW5nOiBcImxhenlcIixcclxuICAgIHNyYzogcmVxdWlyZShcIi4uL2Fzc2V0cy9lZGl0LnN2Z1wiKSxcclxuICB9KTtcclxuXHJcbiAgZWRpdE5vdGVCdG4uYXBwZW5kQ2hpbGQoZWRpdE5vdGVJbWcpO1xyXG5cclxuICBjb25zdCByZW1vdmVOb3RlQnRuID0gY3JlYXRlQnV0dG9uRWxlbWVudCh7XHJcbiAgICBjbGFzc05hbWU6IFwiYWN0aW9uLWJ0biByZW1vdmUtYWN0aW9uXCIsXHJcbiAgICBpZDogXCJyZW1vdmUtbm90ZS1cIiArIGlkeCxcclxuICAgIFwiZGF0YS1pZFwiOiBpZHgsXHJcbiAgfSk7XHJcbiAgY29uc3QgcmVtb3ZlTm90ZUltZyA9IGNyZWF0ZUltYWdlRWxlbWVudCh7XHJcbiAgICBhbHQ6IFwiUmVtb3ZlIG5vdGVcIixcclxuICAgIGxvYWRpbmc6IFwibGF6eVwiLFxyXG4gICAgc3JjOiByZXF1aXJlKFwiLi4vYXNzZXRzL3JlbW92ZS5zdmdcIiksXHJcbiAgfSk7XHJcblxyXG4gIHJlbW92ZU5vdGVCdG4uYXBwZW5kQ2hpbGQocmVtb3ZlTm90ZUltZyk7XHJcblxyXG4gIGFjdGlvbnMuYXBwZW5kQ2hpbGQoZWRpdE5vdGVCdG4pO1xyXG4gIGFjdGlvbnMuYXBwZW5kQ2hpbGQocmVtb3ZlTm90ZUJ0bik7XHJcblxyXG4gIG5vdGVIZWFkZXIuYXBwZW5kQ2hpbGQobm90ZVRpdGxlKTtcclxuICBub3RlSGVhZGVyLmFwcGVuZENoaWxkKGFjdGlvbnMpO1xyXG5cclxuICByZXR1cm4gbm90ZUhlYWRlcjtcclxufTtcclxuY29uc3QgY3JlYXRlTm90ZVRpbGVCb2R5RWxlbWVudCA9IChib2R5OiBzdHJpbmcsIGlkeDogc3RyaW5nKTogSFRNTEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IG5vdGVCb2R5ID0gY3JlYXRlRGl2RWxlbWVudChcIm5vdGUtYm9keVwiKTtcclxuICBjb25zdCBub3RlQm9keVRleHQgPSBjcmVhdGVUZXh0RWxlbWVudCh7XHJcbiAgICB0eXBlOiBcInBcIixcclxuICAgIHRleHRDb250ZW50OiBib2R5LFxyXG4gICAgaWQ6IFwibm90ZS1ib2R5LVwiICsgaWR4LFxyXG4gIH0pO1xyXG5cclxuICBub3RlQm9keS5hcHBlbmRDaGlsZChub3RlQm9keVRleHQpO1xyXG5cclxuICByZXR1cm4gbm90ZUJvZHk7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZU5vdGVUaWxlRm9vdGVyRWxlbWVudCA9ICgpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgY29uc3Qgbm90ZUZvb3RlciA9IGNyZWF0ZURpdkVsZW1lbnQoXCJub3RlLWZvb3RlclwiKTtcclxuICBjb25zdCBub3RlRm9vdGVyVGV4dCA9IGNyZWF0ZVRleHRFbGVtZW50KHtcclxuICAgIHR5cGU6IFwicFwiLFxyXG4gICAgdGV4dENvbnRlbnQ6IGdldEN1cnJlbnREYXRlKCksXHJcbiAgfSk7XHJcblxyXG4gIG5vdGVGb290ZXIuYXBwZW5kQ2hpbGQobm90ZUZvb3RlclRleHQpO1xyXG4gIHJldHVybiBub3RlRm9vdGVyO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBOb3RlRGV0YWlscyB9IGZyb20gXCIuLi9tb2RlbHMvbm90ZS1kZXRhaWxzLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcbiAgY3JlYXRlQWRkTmV3Tm90ZUJ0bkVsZW1lbnQsXHJcbiAgY3JlYXRlQWRkTmV3Tm90ZVZpZXdFbGVtZW50LFxyXG4gIGNyZWF0ZUVkaXROb3RlVmlld0VsZW1lbnQsXHJcbiAgY3JlYXRlTm9Ob3Rlc1ZpZXdFbGVtZW50LFxyXG4gIGNyZWF0ZU5vUmVzdWx0c1ZpZXdFbGVtZW50LFxyXG4gIGNyZWF0ZU5vdGVFbGVtZW50LFxyXG4gIHJldHJpZXZlTm90ZUVsZW1lbnQsXHJcbiAgc2F2ZU5vdGVFbGVtZW50LFxyXG59IGZyb20gXCIuL2NyZWF0b3JzXCI7XHJcbmltcG9ydCB7XHJcbiAgZ2V0QnRuSWQsXHJcbiAgZ2V0TWFpbkNvbnRhaW5lcixcclxuICBnZXROb3RlQnlJZCxcclxuICBnZXROb3RlRGV0YWlscyxcclxuICBnZXROb3RlcyxcclxufSBmcm9tIFwiLi9nZXR0ZXJzXCI7XHJcblxyXG4vL2xpc3RlbmVycyBhdHRhY2htZW50c1xyXG5leHBvcnQgY29uc3QgYWRkU2Nyb2xsVXBMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcclxuICBjb25zdCBzY3JvbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNjcm9sbC11cFwiKSE7XHJcbiAgc2Nyb2xsLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBzY3JvbGxVcCk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYWRkTm9Ob3Rlc0FkZE5vdGVMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcclxuICBjb25zdCBhZGROb3RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhZGQtbm90ZVwiKSE7XHJcbiAgYWRkTm90ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgY3JlYXRlQWRkTmV3Tm90ZVZpZXcpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZFNlYXJjaE5vdGVzTGlzdGVuZXIgPSAoKTogdm9pZCA9PiB7XHJcbiAgY29uc3Qgc2VhcmNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2gtbm90ZXNcIikgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICBzZWFyY2guYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsICgpID0+IGZpbHRlclJlc3VsdHMoc2VhcmNoLnZhbHVlKSk7XHJcbn07XHJcblxyXG5jb25zdCBhZGROZXdOb3RlQ2FuY2VsTGlzdGVuZXIgPSAoKTogdm9pZCA9PiB7XHJcbiAgY29uc3QgY2FuY2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhZGQtbm90ZS1jYW5jZWxcIikhO1xyXG4gIGNhbmNlbC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgY2FuY2VsTmV3Tm90ZSk7XHJcbn07XHJcblxyXG5jb25zdCBhZGROZXdOb3RlQWRkTm90ZUxpc3RlbmVyID0gKCk6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IGFkZE5vdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFkZC1uZXctbm90ZVwiKSE7XHJcbiAgYWRkTm90ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgYWRkTmV3Tm90ZSk7XHJcbn07XHJcblxyXG5jb25zdCBhZGROZXdOb3RlUHJpbWFyeUJ0bkxpc3RlbmVyID0gKCk6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IGFkZE5vdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFkZC1uZXctbm90ZS1wcmltYXJ5XCIpITtcclxuICBhZGROb3RlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBhZGROZXdOb3RlUHJpbWFyeUJ0bik7XHJcbn07XHJcblxyXG5jb25zdCBhZGRFZGl0Tm90ZUxpc3RlbmVyID0gKGlkOiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICBjb25zdCBlZGl0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICBcImVkaXQtbm90ZS1cIiArIGlkXHJcbiAgKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcclxuXHJcbiAgZWRpdEJ0bi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGUpID0+IGVkaXROb3RlTGlzdGVuZXIoZSkpO1xyXG59O1xyXG5cclxuY29uc3QgYWRkUmVtb3ZlTm90ZUxpc3RlbmVyID0gKGlkOiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICBjb25zdCByZW1vdmVCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgIFwicmVtb3ZlLW5vdGUtXCIgKyBpZFxyXG4gICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XHJcbiAgcmVtb3ZlQnRuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZSkgPT4gcmVtb3ZlTm90ZUxpc3RlbmVyKGUpKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZEVkaXROb3RlRWRpdExpc3RlbmVyID0gKGlkOiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICBjb25zdCBlZGl0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJlZGl0LW5vdGUtYnRuLVwiICsgaWQpITtcclxuXHJcbiAgZWRpdEJ0bi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4gZWRpdE5vdGUoaWQpKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZEVkaXROb3RlQ2FuY2VsTGlzdGVuZXIgPSAoZGV0YWlsczogTm90ZURldGFpbHMpOiB2b2lkID0+IHtcclxuICBjb25zdCB7IGlkIH0gPSBkZXRhaWxzO1xyXG4gIGNvbnN0IGNhbmNlbEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZWRpdC1ub3RlLWNhbmNlbC1idG4tXCIgKyBpZCkhO1xyXG5cclxuICBjYW5jZWxCdG4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IGNhbmNlbEVkaXROb3RlKGRldGFpbHMpKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZE1vZGFsUmVtb3ZlTm90ZUNvbmZpcm1MaXN0ZW5lciA9IChpZDogc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgY29uc3QgcmVtb3ZlQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICBcIm1vZGFsLXJlbW92ZVwiXHJcbiAgKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcclxuXHJcbiAgcmVtb3ZlQnRuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiByZW1vdmVOb3RlQ29uZmlybShpZCkpO1xyXG59O1xyXG5cclxuY29uc3QgZWRpdE5vdGVMaXN0ZW5lciA9IChlOiBFdmVudCk6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gIGNvbnN0IGlkID0gZ2V0QnRuSWQodGFyZ2V0KTtcclxuXHJcbiAgY29uc3Qgbm90ZSA9IGdldE5vdGVCeUlkKGlkKTtcclxuXHJcbiAgY29uc3QgeyB0aXRsZSwgYm9keSB9ID0gZ2V0Tm90ZURldGFpbHMoaWQpO1xyXG5cclxuICBjb25zdCBlZGl0Tm90ZVZpZXcgPSBjcmVhdGVFZGl0Tm90ZVZpZXdFbGVtZW50KHsgaWQsIHRpdGxlLCBib2R5IH0pO1xyXG5cclxuICBub3RlLmNsYXNzTGlzdC5hZGQoXCJub3RlLWVkaXQtbW9kZVwiKTtcclxuXHJcbiAgbm90ZS5yZXBsYWNlQ2hpbGRyZW4oZWRpdE5vdGVWaWV3KTtcclxuXHJcbiAgYWRkRWRpdE5vdGVDYW5jZWxMaXN0ZW5lcih7IGlkLCB0aXRsZSwgYm9keSB9KTtcclxuICBhZGRFZGl0Tm90ZUVkaXRMaXN0ZW5lcihpZCk7XHJcbn07XHJcblxyXG5jb25zdCByZW1vdmVOb3RlTGlzdGVuZXIgPSAoZTogRXZlbnQpOiB2b2lkID0+IHtcclxuICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICBjb25zdCBpZCA9IGdldEJ0bklkKHRhcmdldCk7XHJcbiAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1vZGFsXCIpIGFzIEhUTUxEaWFsb2dFbGVtZW50O1xyXG4gIG1vZGFsLnNob3dNb2RhbCgpO1xyXG5cclxuICBhZGRNb2RhbFJlbW92ZU5vdGVDb25maXJtTGlzdGVuZXIoaWQpO1xyXG4gIGFkZE1vZGFsUmVtb3ZlTm90ZUNhbmNlbExpc3RlbmVyKCk7XHJcbn07XHJcblxyXG5jb25zdCBhZGRNb2RhbFJlbW92ZU5vdGVDYW5jZWxMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcclxuICBjb25zdCBjYW5jZWxCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgIFwibW9kYWwtY2FuY2VsXCJcclxuICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xyXG5cclxuICBjYW5jZWxCdG4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHJlbW92ZU5vdGVDYW5jZWwpO1xyXG59O1xyXG5cclxuLy9saXN0ZW5lcnMgbWV0aG9kc1xyXG5jb25zdCBjcmVhdGVBZGROZXdOb3RlVmlldyA9ICgpOiB2b2lkID0+IHtcclxuICBjb25zdCBhZGROb3RlU2VjdGlvbiA9IGNyZWF0ZUFkZE5ld05vdGVWaWV3RWxlbWVudCgpO1xyXG4gIGNvbnN0IGNvbnRhaW5lciA9IGdldE1haW5Db250YWluZXIoKTtcclxuICBjb250YWluZXIucmVwbGFjZUNoaWxkcmVuKGFkZE5vdGVTZWN0aW9uKTtcclxuXHJcbiAgYWRkTmV3Tm90ZUNhbmNlbExpc3RlbmVyKCk7XHJcbiAgYWRkTmV3Tm90ZUFkZE5vdGVMaXN0ZW5lcigpO1xyXG59O1xyXG5cclxuY29uc3QgY2FuY2VsTmV3Tm90ZSA9ICgpOiB2b2lkID0+IHtcclxuICBjb25zdCBub3RlcyA9IGdldE5vdGVzKCk7XHJcbiAgaWYgKG5vdGVzLmxlbmd0aCkge1xyXG4gICAgY3JlYXRlQWRkTm90ZVByaW1hcnlCdG4oKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgY29uc3Qgbm9Ob3Rlc1ZpZXcgPSBjcmVhdGVOb05vdGVzVmlld0VsZW1lbnQoKTtcclxuICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbnRhaW5lclwiKTtcclxuICBjb250YWluZXI/LnJlcGxhY2VDaGlsZHJlbihub05vdGVzVmlldyk7XHJcbiAgYWRkTm9Ob3Rlc0FkZE5vdGVMaXN0ZW5lcigpO1xyXG59O1xyXG5cclxuY29uc3QgY3JlYXRlQWRkTm90ZVByaW1hcnlCdG4gPSAoKTogdm9pZCA9PiB7XHJcbiAgY29uc3QgYWRkTmV3Tm90ZVByaW1hcnlCdG4gPSBjcmVhdGVBZGROZXdOb3RlQnRuRWxlbWVudCgpO1xyXG4gIGNvbnN0IGNvbnRhaW5lciA9IGdldE1haW5Db250YWluZXIoKTtcclxuICBjb250YWluZXIuZmlyc3RDaGlsZCEucmVtb3ZlKCk7XHJcbiAgY29udGFpbmVyLnByZXBlbmQoYWRkTmV3Tm90ZVByaW1hcnlCdG4pO1xyXG4gIGFkZE5ld05vdGVQcmltYXJ5QnRuTGlzdGVuZXIoKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZE5ld05vdGUgPSAoKTogdm9pZCA9PiB7XHJcbiAge1xyXG4gICAgY29uc3QgdGl0bGUgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJub3RlLXRpdGxlXCIpIGFzIEhUTUxJbnB1dEVsZW1lbnQpXHJcbiAgICAgIC52YWx1ZTtcclxuICAgIGNvbnN0IGJvZHkgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJub3RlLWJvZHlcIikgYXMgSFRNTFRleHRBcmVhRWxlbWVudClcclxuICAgICAgLnZhbHVlO1xyXG4gICAgY29uc3QgbmV3Tm90ZSA9IGNyZWF0ZU5vdGVFbGVtZW50KHRpdGxlLCBib2R5KTtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29udGFpbmVyXCIpITtcclxuICAgIGNvbnN0IGFkZE5ld05vdGVQcmltYXJ5QnRuID0gY3JlYXRlQWRkTmV3Tm90ZUJ0bkVsZW1lbnQoKTtcclxuICAgIGNvbnN0IG5vdGVzID0gZ2V0Tm90ZXMoKTtcclxuICAgIGNvbnN0IGlkID0gbmV3Tm90ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWlkXCIpITtcclxuICAgIGNoYW5nZVNlYXJjaFN0YXRlKFwiZW5hYmxlXCIpO1xyXG4gICAgaWYgKG5vdGVzLmxlbmd0aCkge1xyXG4gICAgICBjb250YWluZXIuZmlyc3RDaGlsZCEucmVtb3ZlKCk7XHJcbiAgICAgIGNvbnRhaW5lci5wcmVwZW5kKGFkZE5ld05vdGVQcmltYXJ5QnRuKTtcclxuICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKG5ld05vdGUpO1xyXG5cclxuICAgICAgYWRkRWRpdE5vdGVMaXN0ZW5lcihpZCk7XHJcbiAgICAgIGFkZFJlbW92ZU5vdGVMaXN0ZW5lcihpZCk7XHJcbiAgICAgIGFkZE5ld05vdGVQcmltYXJ5QnRuTGlzdGVuZXIoKTtcclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnRhaW5lci5yZXBsYWNlQ2hpbGRyZW4oYWRkTmV3Tm90ZVByaW1hcnlCdG4sIG5ld05vdGUpO1xyXG5cclxuICAgIGFkZEVkaXROb3RlTGlzdGVuZXIoaWQpO1xyXG4gICAgYWRkUmVtb3ZlTm90ZUxpc3RlbmVyKGlkKTtcclxuICAgIGFkZE5ld05vdGVQcmltYXJ5QnRuTGlzdGVuZXIoKTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhZGROZXdOb3RlUHJpbWFyeUJ0biA9ICgpOiB2b2lkID0+IHtcclxuICBjb25zdCBhZGROb3RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhZGQtbmV3LW5vdGUtcHJpbWFyeVwiKSE7XHJcbiAgY29uc3QgYWRkTm90ZVNlY3Rpb24gPSBjcmVhdGVBZGROZXdOb3RlVmlld0VsZW1lbnQoKTtcclxuICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbnRhaW5lclwiKSE7XHJcbiAgYWRkTm90ZS5yZW1vdmUoKTtcclxuICBjb250YWluZXIucHJlcGVuZChhZGROb3RlU2VjdGlvbik7XHJcblxyXG4gIGFkZE5ld05vdGVDYW5jZWxMaXN0ZW5lcigpO1xyXG4gIGFkZE5ld05vdGVBZGROb3RlTGlzdGVuZXIoKTtcclxufTtcclxuXHJcbmNvbnN0IGVkaXROb3RlID0gKGlkOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCBub3RlID0gZ2V0Tm90ZUJ5SWQoaWQpO1xyXG4gIG5vdGUuY2xhc3NMaXN0LnJlbW92ZShcIm5vdGUtZWRpdC1tb2RlXCIpO1xyXG5cclxuICBzYXZlTm90ZUVsZW1lbnQoaWQpO1xyXG4gIGFkZEVkaXROb3RlTGlzdGVuZXIoaWQpO1xyXG4gIGFkZFJlbW92ZU5vdGVMaXN0ZW5lcihpZCk7XHJcbn07XHJcblxyXG5jb25zdCBjYW5jZWxFZGl0Tm90ZSA9IChkZXRhaWxzOiBOb3RlRGV0YWlscyk6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IHsgaWQgfSA9IGRldGFpbHM7XHJcbiAgY29uc3Qgbm90ZSA9IGdldE5vdGVCeUlkKGlkKTtcclxuICBub3RlLmNsYXNzTGlzdC5yZW1vdmUoXCJub3RlLWVkaXQtbW9kZVwiKTtcclxuXHJcbiAgcmV0cmlldmVOb3RlRWxlbWVudChkZXRhaWxzKTtcclxuICBhZGRFZGl0Tm90ZUxpc3RlbmVyKGlkKTtcclxuICBhZGRSZW1vdmVOb3RlTGlzdGVuZXIoaWQpO1xyXG59O1xyXG5cclxuY29uc3QgcmVtb3ZlTm90ZUNvbmZpcm0gPSAoaWQ6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtb2RhbFwiKSBhcyBIVE1MRGlhbG9nRWxlbWVudDtcclxuICBnZXROb3RlQnlJZChpZCk/LnJlbW92ZSgpO1xyXG4gIG1vZGFsLmNsb3NlKCk7XHJcblxyXG4gIGNvbnN0IG5vdGVzID0gZ2V0Tm90ZXMoKS5sZW5ndGg7XHJcblxyXG4gIGlmICghbm90ZXMpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29udGFpbmVyXCIpITtcclxuICAgIGNvbnN0IG5vTm90ZXNWaWV3ID0gY3JlYXRlTm9Ob3Rlc1ZpZXdFbGVtZW50KCk7XHJcbiAgICBjb250YWluZXIucmVwbGFjZUNoaWxkcmVuKG5vTm90ZXNWaWV3KTtcclxuICAgIGNoYW5nZVNlYXJjaFN0YXRlKFwiZGlzYWJsZVwiKTtcclxuXHJcbiAgICBhZGROb05vdGVzQWRkTm90ZUxpc3RlbmVyKCk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvbnN0IHNlYXJjaFBocmFzZSA9IChcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VhcmNoLW5vdGVzXCIpIGFzIEhUTUxJbnB1dEVsZW1lbnRcclxuICApLnZhbHVlO1xyXG4gIGZpbHRlclJlc3VsdHMoc2VhcmNoUGhyYXNlKTtcclxufTtcclxuXHJcbmNvbnN0IHJlbW92ZU5vdGVDYW5jZWwgPSAoKTogdm9pZCA9PiB7XHJcbiAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm1vZGFsXCIpIGFzIEhUTUxEaWFsb2dFbGVtZW50O1xyXG4gIG1vZGFsLmNsb3NlKCk7XHJcbn07XHJcblxyXG5jb25zdCBjaGFuZ2VTZWFyY2hTdGF0ZSA9IChzdGF0ZTogXCJlbmFibGVcIiB8IFwiZGlzYWJsZVwiKTogdm9pZCA9PiB7XHJcbiAgY29uc3Qgc2VhcmNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2gtbm90ZXNcIikgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICBpZiAoc3RhdGUgPT09IFwiZW5hYmxlXCIpIHtcclxuICAgIHNlYXJjaC5yZW1vdmVBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcclxuICB9IGVsc2Uge1xyXG4gICAgc2VhcmNoLnZhbHVlID0gXCJcIjtcclxuICAgIHNlYXJjaC5zZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiLCBcInRydWVcIik7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgZmlsdGVyUmVzdWx0cyA9ICh2YWw6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IG5vdGVzID0gZ2V0Tm90ZXMoKSBhcyBIVE1MRWxlbWVudFtdO1xyXG4gIGlmICghdmFsKSB7XHJcbiAgICBub3Rlcy5mb3JFYWNoKChub3RlKSA9PiB7XHJcbiAgICAgIG5vdGUuY2xhc3NMaXN0LnJlbW92ZShcImhpZGVcIik7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29uc3QgcmVzdWx0c0lkcyA9IG5vdGVzXHJcbiAgICAuZmlsdGVyKChub3RlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGlkID0gbm90ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWlkXCIpITtcclxuICAgICAgY29uc3QgZGV0YWlscyA9IGdldE5vdGVEZXRhaWxzKGlkKTtcclxuICAgICAgcmV0dXJuIGRldGFpbHMuYm9keS5pbmNsdWRlcyh2YWwpIHx8IGRldGFpbHMudGl0bGUuaW5jbHVkZXModmFsKTtcclxuICAgIH0pXHJcbiAgICAubWFwKChlbCkgPT4gZWwuZ2V0QXR0cmlidXRlKFwiZGF0YS1pZFwiKSk7XHJcblxyXG4gIGNvbnN0IG5vUmVzdWx0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibm8tcmVzdWx0c1wiKTtcclxuXHJcbiAgaWYgKCFyZXN1bHRzSWRzLmxlbmd0aCAmJiAhbm9SZXN1bHRFbGVtZW50KSB7XHJcbiAgICBjb25zdCBub1Jlc3VsdHNWaWV3ID0gY3JlYXRlTm9SZXN1bHRzVmlld0VsZW1lbnQoKTtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGdldE1haW5Db250YWluZXIoKTtcclxuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChub1Jlc3VsdHNWaWV3KTtcclxuICB9XHJcblxyXG4gIGlmIChub1Jlc3VsdEVsZW1lbnQgJiYgcmVzdWx0c0lkcy5sZW5ndGgpIHtcclxuICAgIG5vUmVzdWx0RWxlbWVudC5yZW1vdmUoKTtcclxuICB9XHJcblxyXG4gIG5vdGVzLmZvckVhY2goKG5vdGUpID0+IHtcclxuICAgIGlmICghcmVzdWx0c0lkcy5pbmNsdWRlcyhub3RlLmdldEF0dHJpYnV0ZShcImRhdGEtaWRcIikpKSB7XHJcbiAgICAgIG5vdGUuY2xhc3NMaXN0LmFkZChcImhpZGVcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBub3RlLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRlXCIpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3Qgc2Nyb2xsVXAgPSAoKTogdm9pZCA9PiB7XHJcbiAgY29uc3QgY29udGFpbmVyID0gZ2V0TWFpbkNvbnRhaW5lcigpO1xyXG4gIGNvbnRhaW5lci5zY3JvbGxUbyh7XHJcbiAgICBiZWhhdmlvcjogXCJzbW9vdGhcIixcclxuICAgIHRvcDogMCxcclxuICB9KTtcclxufTtcclxuIiwiaW1wb3J0IFwiLi9zdHlsZXMuc2Nzc1wiO1xyXG5pbXBvcnQge1xyXG4gIGFkZE5vTm90ZXNBZGROb3RlTGlzdGVuZXIsXHJcbiAgYWRkU2Nyb2xsVXBMaXN0ZW5lcixcclxuICBhZGRTZWFyY2hOb3Rlc0xpc3RlbmVyLFxyXG59IGZyb20gXCIuL3V0aWxzL2xpc3RlbmVyc1wiO1xyXG5cclxuYWRkTm9Ob3Rlc0FkZE5vdGVMaXN0ZW5lcigpO1xyXG5hZGRTZWFyY2hOb3Rlc0xpc3RlbmVyKCk7XHJcbmFkZFNjcm9sbFVwTGlzdGVuZXIoKTtcclxuIl0sIm5hbWVzIjpbIl9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fIiwiVVJMIiwiX19fQ1NTX0xPQURFUl9FWFBPUlRfX18iLCJwdXNoIiwibW9kdWxlIiwiaWQiLCJfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fIiwiZXhwb3J0cyIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJsaXN0IiwidG9TdHJpbmciLCJ0aGlzIiwibWFwIiwiaXRlbSIsImNvbnRlbnQiLCJuZWVkTGF5ZXIiLCJjb25jYXQiLCJsZW5ndGgiLCJqb2luIiwiaSIsIm1vZHVsZXMiLCJtZWRpYSIsImRlZHVwZSIsInN1cHBvcnRzIiwibGF5ZXIiLCJ1bmRlZmluZWQiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiayIsIl9rIiwidXJsIiwib3B0aW9ucyIsIlN0cmluZyIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidGVzdCIsInNsaWNlIiwiaGFzaCIsIm5lZWRRdW90ZXMiLCJyZXBsYWNlIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJkYXRhIiwic291cmNlTWFwcGluZyIsInN0eWxlc0luRE9NIiwiZ2V0SW5kZXhCeUlkZW50aWZpZXIiLCJpZGVudGlmaWVyIiwicmVzdWx0IiwibW9kdWxlc1RvRG9tIiwiaWRDb3VudE1hcCIsImlkZW50aWZpZXJzIiwiYmFzZSIsImNvdW50IiwiaW5kZXhCeUlkZW50aWZpZXIiLCJvYmoiLCJjc3MiLCJzb3VyY2VNYXAiLCJyZWZlcmVuY2VzIiwidXBkYXRlciIsImFkZEVsZW1lbnRTdHlsZSIsImJ5SW5kZXgiLCJzcGxpY2UiLCJhcGkiLCJkb21BUEkiLCJ1cGRhdGUiLCJuZXdPYmoiLCJyZW1vdmUiLCJsYXN0SWRlbnRpZmllcnMiLCJuZXdMaXN0IiwiaW5kZXgiLCJuZXdMYXN0SWRlbnRpZmllcnMiLCJfaSIsIl9pbmRleCIsIm1lbW8iLCJpbnNlcnQiLCJzdHlsZSIsInRhcmdldCIsInN0eWxlVGFyZ2V0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwid2luZG93IiwiSFRNTElGcmFtZUVsZW1lbnQiLCJjb250ZW50RG9jdW1lbnQiLCJoZWFkIiwiZSIsImdldFRhcmdldCIsIkVycm9yIiwiYXBwZW5kQ2hpbGQiLCJlbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZXMiLCJhdHRyaWJ1dGVzIiwic3R5bGVFbGVtZW50Iiwibm9uY2UiLCJzZXRBdHRyaWJ1dGUiLCJpbnNlcnRTdHlsZUVsZW1lbnQiLCJzdHlsZVRhZ1RyYW5zZm9ybSIsImFwcGx5IiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwicmVtb3ZlU3R5bGVFbGVtZW50Iiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJmaXJzdENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwibSIsIm4iLCJnZXR0ZXIiLCJkIiwiYSIsImRlZmluaXRpb24iLCJrZXkiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZyIsImdsb2JhbFRoaXMiLCJGdW5jdGlvbiIsInByb3AiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJjdXJyZW50U2NyaXB0IiwidGFnTmFtZSIsInRvVXBwZXJDYXNlIiwic3JjIiwic2NyaXB0cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicCIsImIiLCJiYXNlVVJJIiwic2VsZiIsImhyZWYiLCJuYyIsImxvY2FscyIsIk1PTlRIIiwiZ2V0Tm90ZXMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwiZ2V0QnRuSWQiLCJnZXRBdHRyaWJ1dGUiLCJwYXJlbnRFbGVtZW50IiwiZ2V0Tm90ZUJ5SWQiLCJnZXROb3RlRGV0YWlscyIsInRpdGxlIiwiZ2V0RWxlbWVudEJ5SWQiLCJ0ZXh0Q29udGVudCIsImJvZHkiLCJnZXRNYWluQ29udGFpbmVyIiwiZ2V0Q3VycmVudERhdGUiLCJkYXRlIiwiRGF0ZSIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImlkeCIsImNyZWF0ZUFkZE5ld05vdGVWaWV3RWxlbWVudCIsInNlY3Rpb24iLCJjcmVhdGVTZWN0aW9uRWxlbWVudCIsImhlYWRpbmciLCJjcmVhdGVEaXZFbGVtZW50IiwiaGVhZGluZ0hlYWRlciIsImNyZWF0ZUhlYWRpbmdFbGVtZW50IiwiaGVhZGluZ0J1dHRvbiIsImNyZWF0ZUJ1dHRvbkVsZW1lbnQiLCJjbGFzc05hbWUiLCJib2R5SW5wdXQiLCJjcmVhdGVJbnB1dEVsZW1lbnQiLCJwbGFjZWhvbGRlciIsImJvZHlUZXh0YXJlYSIsImNyZWF0ZVRleHRFbGVtZW50YXJlYUVsZW1lbnQiLCJib2R5QnV0dG9uIiwiY3JlYXRlTm9Ob3Rlc1ZpZXdFbGVtZW50Iiwid3JhcHBlciIsImRldGFpbHMiLCJjcmVhdGVJbWFnZUVsZW1lbnQiLCJsb2FkaW5nIiwiYWx0IiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJ0eXBlIiwiZm9yRWFjaCIsIm5vZGUiLCJidXR0b24iLCJub3RlQWRkSW1nIiwiYnRuVGV4dCIsInJldHJpZXZlTm90ZUVsZW1lbnQiLCJub3RlIiwiY2hpbGRyZW4iLCJjaGlsZCIsImNyZWF0ZU5vdGVUaWxlSGVhZGVyRWxlbWVudCIsImNyZWF0ZU5vdGVUaWxlQm9keUVsZW1lbnQiLCJjcmVhdGVOb3RlVGlsZUZvb3RlckVsZW1lbnQiLCJjcmVhdGVBZGROZXdOb3RlQnRuRWxlbWVudCIsImRpdiIsInBheWxvYWQiLCJpbnB1dCIsInZhbHVlIiwidGV4dGFyZWEiLCJpbWFnZSIsInRleHQiLCJub3RlSGVhZGVyIiwibm90ZVRpdGxlIiwiYWN0aW9ucyIsImVkaXROb3RlQnRuIiwiZWRpdE5vdGVJbWciLCJyZW1vdmVOb3RlQnRuIiwicmVtb3ZlTm90ZUltZyIsIm5vdGVCb2R5Iiwibm90ZUJvZHlUZXh0Iiwibm90ZUZvb3RlciIsIm5vdGVGb290ZXJUZXh0IiwiYWRkTm9Ob3Rlc0FkZE5vdGVMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjcmVhdGVBZGROZXdOb3RlVmlldyIsImFkZE5ld05vdGVDYW5jZWxMaXN0ZW5lciIsImNhbmNlbE5ld05vdGUiLCJhZGROZXdOb3RlQWRkTm90ZUxpc3RlbmVyIiwiYWRkTmV3Tm90ZSIsImFkZE5ld05vdGVQcmltYXJ5QnRuTGlzdGVuZXIiLCJhZGROZXdOb3RlUHJpbWFyeUJ0biIsImFkZEVkaXROb3RlTGlzdGVuZXIiLCJlZGl0Tm90ZUxpc3RlbmVyIiwiYWRkUmVtb3ZlTm90ZUxpc3RlbmVyIiwicmVtb3ZlTm90ZUxpc3RlbmVyIiwiZWRpdE5vdGVWaWV3IiwiaGVhZGVyIiwiY2FuY2VsQnRuIiwiY3JlYXRlRWRpdE5vdGVWaWV3RWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsInJlcGxhY2VDaGlsZHJlbiIsImNhbmNlbEVkaXROb3RlIiwiYWRkRWRpdE5vdGVDYW5jZWxMaXN0ZW5lciIsImVkaXROb3RlIiwiYWRkRWRpdE5vdGVFZGl0TGlzdGVuZXIiLCJzaG93TW9kYWwiLCJyZW1vdmVOb3RlQ29uZmlybSIsImFkZE1vZGFsUmVtb3ZlTm90ZUNvbmZpcm1MaXN0ZW5lciIsImFkZE1vZGFsUmVtb3ZlTm90ZUNhbmNlbExpc3RlbmVyIiwicmVtb3ZlTm90ZUNhbmNlbCIsImFkZE5vdGVTZWN0aW9uIiwiY3JlYXRlQWRkTm90ZVByaW1hcnlCdG4iLCJub05vdGVzVmlldyIsImNvbnRhaW5lciIsInByZXBlbmQiLCJuZXdOb3RlIiwidGl0bGVWYWwiLCJib2R5VmFsIiwiY3JlYXRlTm90ZUVsZW1lbnQiLCJub3RlcyIsImNoYW5nZVNlYXJjaFN0YXRlIiwiYWRkTm90ZSIsInNhdmVOb3RlRWxlbWVudCIsIm1vZGFsIiwiY2xvc2UiLCJzZWFyY2hQaHJhc2UiLCJmaWx0ZXJSZXN1bHRzIiwic3RhdGUiLCJzZWFyY2giLCJyZW1vdmVBdHRyaWJ1dGUiLCJ2YWwiLCJyZXN1bHRzSWRzIiwiZmlsdGVyIiwiaW5jbHVkZXMiLCJlbCIsIm5vUmVzdWx0RWxlbWVudCIsIm5vUmVzdWx0c1ZpZXciLCJjcmVhdGVOb1Jlc3VsdHNWaWV3RWxlbWVudCIsImFkZFNlYXJjaE5vdGVzTGlzdGVuZXIiLCJzY3JvbGxUbyIsImJlaGF2aW9yIiwidG9wIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file