403Webshell
Server IP : 82.208.35.60  /  Your IP : 216.73.216.89
Web Server : Apache/2.4.55 (FreeBSD) OpenSSL/1.1.1q-freebsd PHP/7.3.31
System : FreeBSD server7.d2m.cz 12.4-RELEASE-p9 FreeBSD 12.4-RELEASE-p9 GENERIC amd64
User : studiokobylisy_cz ( 1008)
PHP Version : 7.3.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/air-sport_cz/www/admin939wizxmp/themes/new-theme/public/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/air-sport_cz/www/admin939wizxmp/themes/new-theme/public/improve_design_positions.bundle.js
/*! For license information please see improve_design_positions.bundle.js.LICENSE.txt */
(()=>{var t={12158:(t,e,o)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(o(99663)),r=i(o(22600));function i(t){return t&&t.__esModule?t:{default:t}}var s=window.$,u=function(){function t(){(0,n.default)(this,t);var e=this;e.$hookStatus=s(".hook-switch-action"),e.$modulePositionsForm=s("#module-positions-form"),e.$hookStatus.on("change",(function(t){t.stopImmediatePropagation(),e.toogleHookStatus(s(this))}))}return(0,r.default)(t,[{key:"toogleHookStatus",value:function(t){s.ajax({type:"POST",headers:{"cache-control":"no-cache"},url:this.$modulePositionsForm.data("togglestatus-url"),data:{hookId:t.data("hook-id")},success:function(e){e.status?(window.showSuccessMessage(e.message),t.closest(".hook-panel").find(".module-list, .module-list-disabled").fadeTo(500,e.hook_status?1:.5)):window.showErrorMessage(e.message)}})}}]),t}();e.default=u},59591:(t,e,o)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=s(o(12424)),r=s(o(99663)),i=s(o(22600));function s(t){return t&&t.__esModule?t:{default:t}}var u=window.$,a=function(){function t(){if((0,r.default)(this,t),0!==u("#position-filters").length){var e=this;e.$panelSelection=u("#modules-position-selection-panel"),e.$panelSelectionSingleSelection=u("#modules-position-single-selection"),e.$panelSelectionMultipleSelection=u("#modules-position-multiple-selection"),e.$panelSelectionOriginalY=e.$panelSelection.offset().top,e.$showModules=u("#show-modules"),e.$modulesList=u(".modules-position-checkbox"),e.$hookPosition=u("#hook-position"),e.$hookSearch=u("#hook-search"),e.$modulePositionsForm=u("#module-positions-form"),e.$moduleUnhookButton=u("#unhook-button-position-bottom"),e.$moduleButtonsUpdate=u(".module-buttons-update .btn"),e.handleList(),e.handleSortable(),u('input[name="general[enable_tos]"]').on("change",(function(){return e.handle()}))}}return(0,i.default)(t,[{key:"handleList",value:function(){var t=this;u(window).on("scroll",(function(){var e=u(window).scrollTop();t.$panelSelection.css("top",e<20?0:e-t.$panelSelectionOriginalY)})),t.$modulesList.on("change",(function(){var e=t.$modulesList.filter(":checked").length;0===e?(t.$moduleUnhookButton.hide(),t.$panelSelection.hide(),t.$panelSelectionSingleSelection.hide(),t.$panelSelectionMultipleSelection.hide()):1===e?(t.$moduleUnhookButton.show(),t.$panelSelection.show(),t.$panelSelectionSingleSelection.show(),t.$panelSelectionMultipleSelection.hide()):(t.$moduleUnhookButton.show(),t.$panelSelection.show(),t.$panelSelectionSingleSelection.hide(),t.$panelSelectionMultipleSelection.show(),u("#modules-position-selection-count").html(e))})),t.$panelSelection.find("button").click((function(){u('button[name="unhookform"]').trigger("click")})),t.$hooksList=[],u("section.hook-panel .hook-name").each((function(){var e=u(this);t.$hooksList.push({title:e.html(),element:e,container:e.parents(".hook-panel")})})),t.$showModules.select2(),t.$showModules.on("change",(function(){t.modulesPositionFilterHooks()})),t.$hookPosition.on("change",(function(){t.modulesPositionFilterHooks()})),t.$hookSearch.on("input",(function(){t.modulesPositionFilterHooks()})),t.$hookSearch.on("keypress",(function(t){return 13!==(t.keyCode||t.which)})),u(".hook-checker").on("click",(function(){u(".hook"+u(this).data("hook-id")).prop("checked",u(this).prop("checked"))})),t.$modulesList.on("click",(function(){u("#Ghook"+u(this).data("hook-id")).prop("checked",0===u(".hook"+u(this).data("hook-id")+":not(:checked)").length)})),t.$moduleButtonsUpdate.on("click",(function(){var e,o=u(this),n=o.closest(".module-item");return 0===(e=o.data("way")?n.next(".module-item"):n.prev(".module-item")).length||(o.data("way")?n.insertAfter(e):n.insertBefore(e),t.updatePositions({hookId:o.data("hook-id"),moduleId:o.data("module-id"),way:o.data("way"),positions:[]},o.closest("ul"))),!1}))}},{key:"handleSortable",value:function(){var t=this;u(".sortable").sortable({forcePlaceholderSize:!0,start:function(t,e){u(this).data("previous-index",e.item.index())},update:function(e,o){var r=o.item.attr("id").split("_"),i=(0,n.default)(r,2),s={hookId:i[0],moduleId:i[1],way:u(this).data("previous-index")<o.item.index()?1:0,positions:[]};t.updatePositions(s,u(e.target))}})}},{key:"updatePositions",value:function(t,e){u.each(e.children(),(function(e,o){t.positions.push(u(o).attr("id"))})),u.ajax({type:"POST",headers:{"cache-control":"no-cache"},url:this.$modulePositionsForm.data("update-url"),data:t,success:function(){var t=0;u.each(e.children(),(function(e,o){t+=1,u(o).find(".index-position").html(t)})),window.showSuccessMessage(window.update_success_msg)}})}},{key:"modulesPositionFilterHooks",value:function(){for(var t=this,e=t.$hookSearch.val(),o=t.$showModules.val(),n=new RegExp("("+e+")","gi"),r=0;r<t.$hooksList.length;r+=1)t.$hooksList[r].container.toggle(""===e&&"all"===o),t.$hooksList[r].element.html(t.$hooksList[r].title),t.$hooksList[r].container.find(".module-item").removeClass("highlight");if(""!==e||"all"!==o){for(var i=u(),s=u(),a=void 0,l=0;l<t.$hooksList.length;l+=1)"all"!==o&&(a=t.$hooksList[l].container.find(".module-position-"+o)).length>0&&(i=i.add(t.$hooksList[l].container),a.addClass("highlight")),""!==e&&-1!==t.$hooksList[l].title.toLowerCase().search(e.toLowerCase())&&(s=s.add(t.$hooksList[l].container),t.$hooksList[l].element.html(t.$hooksList[l].title.replace(n,'<span class="highlight">$1</span>')));"all"===o&&""!==e?s.show():""===e&&"all"!==o?i.show():s.filter(i).show()}if(!t.$hookPosition.prop("checked"))for(var c=0;c<t.$hooksList.length;c+=1)t.$hooksList[c].container.is(".hook-position")&&t.$hooksList[c].container.hide()}}]),t}();e.default=a},26378:(t,e,o)=>{t.exports={default:o(3597),__esModule:!0}},40863:(t,e,o)=>{t.exports={default:o(21035),__esModule:!0}},32242:(t,e,o)=>{t.exports={default:o(33391),__esModule:!0}},99663:(t,e)=>{"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},22600:(t,e,o)=>{"use strict";e.__esModule=!0;var n,r=(n=o(32242))&&n.__esModule?n:{default:n};e.default=function(){function t(t,e){for(var o=0;o<e.length;o++){var n=e[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),(0,r.default)(t,n.key,n)}}return function(e,o,n){return o&&t(e.prototype,o),n&&t(e,n),e}}()},12424:(t,e,o)=>{"use strict";e.__esModule=!0;var n=i(o(40863)),r=i(o(26378));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){if(Array.isArray(t))return t;if((0,n.default)(Object(t)))return function(t,e){var o=[],n=!0,i=!1,s=void 0;try{for(var u,a=(0,r.default)(t);!(n=(u=a.next()).done)&&(o.push(u.value),!e||o.length!==e);n=!0);}catch(t){i=!0,s=t}finally{try{!n&&a.return&&a.return()}finally{if(i)throw s}}return o}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}},3597:(t,e,o)=>{o(73871),o(91867),t.exports=o(46459)},21035:(t,e,o)=>{o(73871),o(91867),t.exports=o(89553)},33391:(t,e,o)=>{o(31477);var n=o(34579).Object;t.exports=function(t,e,o){return n.defineProperty(t,e,o)}},85663:t=>{t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},79003:t=>{t.exports=function(){}},12159:(t,e,o)=>{var n=o(36727);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},57428:(t,e,o)=>{var n=o(7932),r=o(78728),i=o(16531);t.exports=function(t){return function(e,o,s){var u,a=n(e),l=r(a.length),c=i(s,l);if(t&&o!=o){for(;l>c;)if((u=a[c++])!=u)return!0}else for(;l>c;c++)if((t||c in a)&&a[c]===o)return t||c||0;return!t&&-1}}},14677:(t,e,o)=>{var n=o(32894),r=o(22939)("toStringTag"),i="Arguments"==n(function(){return arguments}());t.exports=function(t){var e,o,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(o=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),r))?o:i?n(e):"Object"==(s=n(e))&&"function"==typeof e.callee?"Arguments":s}},32894:t=>{var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},34579:t=>{var e=t.exports={version:"2.6.11"};"number"==typeof __e&&(__e=e)},19216:(t,e,o)=>{var n=o(85663);t.exports=function(t,e,o){if(n(t),void 0===e)return t;switch(o){case 1:return function(o){return t.call(e,o)};case 2:return function(o,n){return t.call(e,o,n)};case 3:return function(o,n,r){return t.call(e,o,n,r)}}return function(){return t.apply(e,arguments)}}},8333:t=>{t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},89666:(t,e,o)=>{t.exports=!o(7929)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},97467:(t,e,o)=>{var n=o(36727),r=o(33938).document,i=n(r)&&n(r.createElement);t.exports=function(t){return i?r.createElement(t):{}}},73338:t=>{t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},83856:(t,e,o)=>{var n=o(33938),r=o(34579),i=o(19216),s=o(41818),u=o(27069),a=function(t,e,o){var l,c,f,p=t&a.F,h=t&a.G,d=t&a.S,v=t&a.P,m=t&a.B,y=t&a.W,g=h?r:r[e]||(r[e]={}),k=g.prototype,w=h?n:d?n[e]:(n[e]||{}).prototype;for(l in h&&(o=e),o)(c=!p&&w&&void 0!==w[l])&&u(g,l)||(f=c?w[l]:o[l],g[l]=h&&"function"!=typeof w[l]?o[l]:m&&c?i(f,n):y&&w[l]==f?function(t){var e=function(e,o,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,o)}return new t(e,o,n)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(f):v&&"function"==typeof f?i(Function.call,f):f,v&&((g.virtual||(g.virtual={}))[l]=f,t&a.R&&k&&!k[l]&&s(k,l,f)))};a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},7929:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},33938:t=>{var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},27069:t=>{var e={}.hasOwnProperty;t.exports=function(t,o){return e.call(t,o)}},41818:(t,e,o)=>{var n=o(4743),r=o(83101);t.exports=o(89666)?function(t,e,o){return n.f(t,e,r(1,o))}:function(t,e,o){return t[e]=o,t}},54881:(t,e,o)=>{var n=o(33938).document;t.exports=n&&n.documentElement},33758:(t,e,o)=>{t.exports=!o(89666)&&!o(7929)((function(){return 7!=Object.defineProperty(o(97467)("div"),"a",{get:function(){return 7}}).a}))},50799:(t,e,o)=>{var n=o(32894);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==n(t)?t.split(""):Object(t)}},36727:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},33945:(t,e,o)=>{"use strict";var n=o(98989),r=o(83101),i=o(25378),s={};o(41818)(s,o(22939)("iterator"),(function(){return this})),t.exports=function(t,e,o){t.prototype=n(s,{next:r(1,o)}),i(t,e+" Iterator")}},45700:(t,e,o)=>{"use strict";var n=o(16227),r=o(83856),i=o(57470),s=o(41818),u=o(15449),a=o(33945),l=o(25378),c=o(95089),f=o(22939)("iterator"),p=!([].keys&&"next"in[].keys()),h="keys",d="values",v=function(){return this};t.exports=function(t,e,o,m,y,g,k){a(o,e,m);var w,S,x,$=function(t){if(!p&&t in M)return M[t];switch(t){case h:case d:return function(){return new o(this,t)}}return function(){return new o(this,t)}},_=e+" Iterator",b=y==d,L=!1,M=t.prototype,O=M[f]||M["@@iterator"]||y&&M[y],P=O||$(y),j=y?b?$("entries"):P:void 0,T="Array"==e&&M.entries||O;if(T&&(x=c(T.call(new t)))!==Object.prototype&&x.next&&(l(x,_,!0),n||"function"==typeof x[f]||s(x,f,v)),b&&O&&O.name!==d&&(L=!0,P=function(){return O.call(this)}),n&&!k||!p&&!L&&M[f]||s(M,f,P),u[e]=P,u[_]=v,y)if(w={values:b?P:$(d),keys:g?P:$(h),entries:j},k)for(S in w)S in M||i(M,S,w[S]);else r(r.P+r.F*(p||L),e,w);return w}},85084:t=>{t.exports=function(t,e){return{value:e,done:!!t}}},15449:t=>{t.exports={}},16227:t=>{t.exports=!0},98989:(t,e,o)=>{var n=o(12159),r=o(57856),i=o(73338),s=o(58989)("IE_PROTO"),u=function(){},a=function(){var t,e=o(97467)("iframe"),n=i.length;for(e.style.display="none",o(54881).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),a=t.F;n--;)delete a.prototype[i[n]];return a()};t.exports=Object.create||function(t,e){var o;return null!==t?(u.prototype=n(t),o=new u,u.prototype=null,o[s]=t):o=a(),void 0===e?o:r(o,e)}},4743:(t,e,o)=>{var n=o(12159),r=o(33758),i=o(33206),s=Object.defineProperty;e.f=o(89666)?Object.defineProperty:function(t,e,o){if(n(t),e=i(e,!0),n(o),r)try{return s(t,e,o)}catch(t){}if("get"in o||"set"in o)throw TypeError("Accessors not supported!");return"value"in o&&(t[e]=o.value),t}},57856:(t,e,o)=>{var n=o(4743),r=o(12159),i=o(46162);t.exports=o(89666)?Object.defineProperties:function(t,e){r(t);for(var o,s=i(e),u=s.length,a=0;u>a;)n.f(t,o=s[a++],e[o]);return t}},95089:(t,e,o)=>{var n=o(27069),r=o(66530),i=o(58989)("IE_PROTO"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),n(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},12963:(t,e,o)=>{var n=o(27069),r=o(7932),i=o(57428)(!1),s=o(58989)("IE_PROTO");t.exports=function(t,e){var o,u=r(t),a=0,l=[];for(o in u)o!=s&&n(u,o)&&l.push(o);for(;e.length>a;)n(u,o=e[a++])&&(~i(l,o)||l.push(o));return l}},46162:(t,e,o)=>{var n=o(12963),r=o(73338);t.exports=Object.keys||function(t){return n(t,r)}},83101:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},57470:(t,e,o)=>{t.exports=o(41818)},25378:(t,e,o)=>{var n=o(4743).f,r=o(27069),i=o(22939)("toStringTag");t.exports=function(t,e,o){t&&!r(t=o?t:t.prototype,i)&&n(t,i,{configurable:!0,value:e})}},58989:(t,e,o)=>{var n=o(20250)("keys"),r=o(65730);t.exports=function(t){return n[t]||(n[t]=r(t))}},20250:(t,e,o)=>{var n=o(34579),r=o(33938),i="__core-js_shared__",s=r[i]||(r[i]={});(t.exports=function(t,e){return s[t]||(s[t]=void 0!==e?e:{})})("versions",[]).push({version:n.version,mode:o(16227)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},90510:(t,e,o)=>{var n=o(11052),r=o(8333);t.exports=function(t){return function(e,o){var i,s,u=String(r(e)),a=n(o),l=u.length;return a<0||a>=l?t?"":void 0:(i=u.charCodeAt(a))<55296||i>56319||a+1===l||(s=u.charCodeAt(a+1))<56320||s>57343?t?u.charAt(a):i:t?u.slice(a,a+2):s-56320+(i-55296<<10)+65536}}},16531:(t,e,o)=>{var n=o(11052),r=Math.max,i=Math.min;t.exports=function(t,e){return(t=n(t))<0?r(t+e,0):i(t,e)}},11052:t=>{var e=Math.ceil,o=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?o:e)(t)}},7932:(t,e,o)=>{var n=o(50799),r=o(8333);t.exports=function(t){return n(r(t))}},78728:(t,e,o)=>{var n=o(11052),r=Math.min;t.exports=function(t){return t>0?r(n(t),9007199254740991):0}},66530:(t,e,o)=>{var n=o(8333);t.exports=function(t){return Object(n(t))}},33206:(t,e,o)=>{var n=o(36727);t.exports=function(t,e){if(!n(t))return t;var o,r;if(e&&"function"==typeof(o=t.toString)&&!n(r=o.call(t)))return r;if("function"==typeof(o=t.valueOf)&&!n(r=o.call(t)))return r;if(!e&&"function"==typeof(o=t.toString)&&!n(r=o.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},65730:t=>{var e=0,o=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+o).toString(36))}},22939:(t,e,o)=>{var n=o(20250)("wks"),r=o(65730),i=o(33938).Symbol,s="function"==typeof i;(t.exports=function(t){return n[t]||(n[t]=s&&i[t]||(s?i:r)("Symbol."+t))}).store=n},83728:(t,e,o)=>{var n=o(14677),r=o(22939)("iterator"),i=o(15449);t.exports=o(34579).getIteratorMethod=function(t){if(null!=t)return t[r]||t["@@iterator"]||i[n(t)]}},46459:(t,e,o)=>{var n=o(12159),r=o(83728);t.exports=o(34579).getIterator=function(t){var e=r(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return n(e.call(t))}},89553:(t,e,o)=>{var n=o(14677),r=o(22939)("iterator"),i=o(15449);t.exports=o(34579).isIterable=function(t){var e=Object(t);return void 0!==e[r]||"@@iterator"in e||i.hasOwnProperty(n(e))}},3882:(t,e,o)=>{"use strict";var n=o(79003),r=o(85084),i=o(15449),s=o(7932);t.exports=o(45700)(Array,"Array",(function(t,e){this._t=s(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,o=this._i++;return!t||o>=t.length?(this._t=void 0,r(1)):r(0,"keys"==e?o:"values"==e?t[o]:[o,t[o]])}),"values"),i.Arguments=i.Array,n("keys"),n("values"),n("entries")},31477:(t,e,o)=>{var n=o(83856);n(n.S+n.F*!o(89666),"Object",{defineProperty:o(4743).f})},91867:(t,e,o)=>{"use strict";var n=o(90510)(!0);o(45700)(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,o=this._i;return o>=e.length?{value:void 0,done:!0}:(t=n(e,o),this._i+=t.length,{value:t,done:!1})}))},73871:(t,e,o)=>{o(3882);for(var n=o(33938),r=o(41818),i=o(15449),s=o(22939)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),a=0;a<u.length;a++){var l=u[a],c=n[l],f=c&&c.prototype;f&&!f[s]&&r(f,s,l),i[l]=i.Array}}},e={};function o(n){var r=e[n];if(void 0!==r)return r.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,o),i.exports}(()=>{"use strict";var t=n(o(59591)),e=n(o(12158));function n(t){return t&&t.__esModule?t:{default:t}}(0,window.$)((function(){new t.default,new e.default}))})(),window.improve_design_positions={}})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy9pbXByb3ZlL2Rlc2lnbl9wb3NpdGlvbnMvaG9vay1zdGF0dXMtaGFuZGxlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy9pbXByb3ZlL2Rlc2lnbl9wb3NpdGlvbnMvcG9zaXRpb25zLWxpc3QtaGFuZGxlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2dldC1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2lzLWl0ZXJhYmxlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vZ2V0LWl0ZXJhdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vaXMtaXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY2xhc3NvZi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1idWcta2V5cy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1zdGVwLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHBzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdwby5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctYXQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdWlkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmlzLWl0ZXJhYmxlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzIiwid2VicGFjazovL1tuYW1lXS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy9pbXByb3ZlL2Rlc2lnbl9wb3NpdGlvbnMvaW5kZXguanMiXSwibmFtZXMiOlsiJCIsIndpbmRvdyIsIkhvb2tTdGF0dXNIYW5kbGVyIiwic2VsZiIsInRoaXMiLCIkaG9va1N0YXR1cyIsIiRtb2R1bGVQb3NpdGlvbnNGb3JtIiwib24iLCJlIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwidG9vZ2xlSG9va1N0YXR1cyIsIiRob29rRWxlbWVudCIsImFqYXgiLCJ0eXBlIiwiaGVhZGVycyIsInVybCIsImRhdGEiLCJob29rSWQiLCJzdWNjZXNzIiwic3RhdHVzIiwic2hvd1N1Y2Nlc3NNZXNzYWdlIiwibWVzc2FnZSIsImNsb3Nlc3QiLCJmaW5kIiwiZmFkZVRvIiwiaG9va19zdGF0dXMiLCJzaG93RXJyb3JNZXNzYWdlIiwiUG9zaXRpb25zTGlzdEhhbmRsZXIiLCJsZW5ndGgiLCIkcGFuZWxTZWxlY3Rpb24iLCIkcGFuZWxTZWxlY3Rpb25TaW5nbGVTZWxlY3Rpb24iLCIkcGFuZWxTZWxlY3Rpb25NdWx0aXBsZVNlbGVjdGlvbiIsIiRwYW5lbFNlbGVjdGlvbk9yaWdpbmFsWSIsIm9mZnNldCIsInRvcCIsIiRzaG93TW9kdWxlcyIsIiRtb2R1bGVzTGlzdCIsIiRob29rUG9zaXRpb24iLCIkaG9va1NlYXJjaCIsIiRtb2R1bGVVbmhvb2tCdXR0b24iLCIkbW9kdWxlQnV0dG9uc1VwZGF0ZSIsImhhbmRsZUxpc3QiLCJoYW5kbGVTb3J0YWJsZSIsImhhbmRsZSIsIiRzY3JvbGxUb3AiLCJzY3JvbGxUb3AiLCJjc3MiLCIkY2hlY2tlZENvdW50IiwiZmlsdGVyIiwiaGlkZSIsInNob3ciLCJodG1sIiwiY2xpY2siLCJ0cmlnZ2VyIiwiJGhvb2tzTGlzdCIsImVhY2giLCIkdGhpcyIsInB1c2giLCJ0aXRsZSIsImVsZW1lbnQiLCJjb250YWluZXIiLCJwYXJlbnRzIiwic2VsZWN0MiIsIm1vZHVsZXNQb3NpdGlvbkZpbHRlckhvb2tzIiwia2V5Q29kZSIsIndoaWNoIiwicHJvcCIsIiRkZXN0aW5hdGlvbiIsIiRidG4iLCIkY3VycmVudCIsIm5leHQiLCJwcmV2IiwiaW5zZXJ0QWZ0ZXIiLCJpbnNlcnRCZWZvcmUiLCJ1cGRhdGVQb3NpdGlvbnMiLCJtb2R1bGVJZCIsIndheSIsInBvc2l0aW9ucyIsInNvcnRhYmxlIiwiZm9yY2VQbGFjZWhvbGRlclNpemUiLCJzdGFydCIsInVpIiwiaXRlbSIsImluZGV4IiwidXBkYXRlIiwiJGV2ZW50IiwiYXR0ciIsInNwbGl0IiwiJGRhdGEiLCJ0YXJnZXQiLCIkbGlzdCIsImNoaWxkcmVuIiwidXBkYXRlX3N1Y2Nlc3NfbXNnIiwiJGhvb2tOYW1lIiwidmFsIiwiJG1vZHVsZUlkIiwiJHJlZ2V4IiwiUmVnRXhwIiwiJGlkIiwidG9nZ2xlIiwicmVtb3ZlQ2xhc3MiLCIkaG9va3NUb1Nob3dGcm9tTW9kdWxlIiwiJGhvb2tzVG9TaG93RnJvbUhvb2tOYW1lIiwiJGN1cnJlbnRIb29rcyIsImFkZCIsImFkZENsYXNzIiwidG9Mb3dlckNhc2UiLCJzZWFyY2giLCJyZXBsYWNlIiwiaXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwib2JqIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImkiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwia2V5IiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwicHJvdG90eXBlIiwiX2lzSXRlcmFibGUzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9nZXRJdGVyYXRvcjMiLCJhcnIiLCJBcnJheSIsImlzQXJyYXkiLCJPYmplY3QiLCJfYXJyIiwiX24iLCJfZCIsIl9lIiwidW5kZWZpbmVkIiwiX3MiLCJfaSIsImRvbmUiLCJ2YWx1ZSIsImVyciIsInNsaWNlSXRlcmF0b3IiLCIkT2JqZWN0IiwiaXQiLCJkZXNjIiwiZGVmaW5lUHJvcGVydHkiLCJpc09iamVjdCIsInRvSU9iamVjdCIsInRvTGVuZ3RoIiwidG9BYnNvbHV0ZUluZGV4IiwiSVNfSU5DTFVERVMiLCJlbCIsImZyb21JbmRleCIsIk8iLCJjb2YiLCJUQUciLCJBUkciLCJhcmd1bWVudHMiLCJUIiwiQiIsInRyeUdldCIsImNhbGxlZSIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwiY29yZSIsInZlcnNpb24iLCJfX2UiLCJhRnVuY3Rpb24iLCJmbiIsInRoYXQiLCJhIiwiYiIsImMiLCJhcHBseSIsImdldCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImdsb2JhbCIsImN0eCIsImhhcyIsIiRleHBvcnQiLCJuYW1lIiwic291cmNlIiwib3duIiwib3V0IiwiSVNfRk9SQ0VEIiwiRiIsIklTX0dMT0JBTCIsIkciLCJJU19TVEFUSUMiLCJTIiwiSVNfUFJPVE8iLCJQIiwiSVNfQklORCIsIklTX1dSQVAiLCJXIiwiZXhwUHJvdG8iLCJDIiwiRnVuY3Rpb24iLCJ2aXJ0dWFsIiwiUiIsIlUiLCJleGVjIiwiTWF0aCIsIl9fZyIsImhhc093blByb3BlcnR5IiwiZFAiLCJjcmVhdGVEZXNjIiwib2JqZWN0IiwiZiIsImRvY3VtZW50RWxlbWVudCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY3JlYXRlIiwic2V0VG9TdHJpbmdUYWciLCJJdGVyYXRvclByb3RvdHlwZSIsIk5BTUUiLCJMSUJSQVJZIiwicmVkZWZpbmUiLCJJdGVyYXRvcnMiLCIkaXRlckNyZWF0ZSIsImdldFByb3RvdHlwZU9mIiwiSVRFUkFUT1IiLCJCVUdHWSIsImtleXMiLCJLRVlTIiwiVkFMVUVTIiwicmV0dXJuVGhpcyIsIkJhc2UiLCJERUZBVUxUIiwiSVNfU0VUIiwiRk9SQ0VEIiwibWV0aG9kcyIsImdldE1ldGhvZCIsImtpbmQiLCJwcm90byIsIkRFRl9WQUxVRVMiLCJWQUxVRVNfQlVHIiwiJG5hdGl2ZSIsIiRkZWZhdWx0IiwiJGVudHJpZXMiLCIkYW55TmF0aXZlIiwiZW50cmllcyIsInZhbHVlcyIsImFuT2JqZWN0IiwiZFBzIiwiZW51bUJ1Z0tleXMiLCJJRV9QUk9UTyIsIkVtcHR5IiwiY3JlYXRlRGljdCIsImlmcmFtZURvY3VtZW50IiwiaWZyYW1lIiwic3R5bGUiLCJkaXNwbGF5Iiwic3JjIiwiY29udGVudFdpbmRvdyIsIm9wZW4iLCJ3cml0ZSIsImx0IiwiY2xvc2UiLCJQcm9wZXJ0aWVzIiwicmVzdWx0IiwiSUU4X0RPTV9ERUZJTkUiLCJ0b1ByaW1pdGl2ZSIsIkF0dHJpYnV0ZXMiLCJnZXRLZXlzIiwidG9PYmplY3QiLCJPYmplY3RQcm90byIsImNvbnN0cnVjdG9yIiwiYXJyYXlJbmRleE9mIiwibmFtZXMiLCIka2V5cyIsImJpdG1hcCIsImRlZiIsInRhZyIsInN0YXQiLCJzaGFyZWQiLCJ1aWQiLCJTSEFSRUQiLCJzdG9yZSIsIm1vZGUiLCJjb3B5cmlnaHQiLCJ0b0ludGVnZXIiLCJkZWZpbmVkIiwiVE9fU1RSSU5HIiwicG9zIiwicyIsIlN0cmluZyIsImwiLCJjaGFyQ29kZUF0IiwiY2hhckF0IiwibWF4IiwibWluIiwiY2VpbCIsImZsb29yIiwiaXNOYU4iLCJJT2JqZWN0IiwidmFsdWVPZiIsImlkIiwicHgiLCJyYW5kb20iLCJjb25jYXQiLCJTeW1ib2wiLCJVU0VfU1lNQk9MIiwiY2xhc3NvZiIsIml0ZXJGbiIsImFkZFRvVW5zY29wYWJsZXMiLCJzdGVwIiwiaXRlcmF0ZWQiLCJfdCIsIl9rIiwiQXJndW1lbnRzIiwiJGF0IiwicG9pbnQiLCJUT19TVFJJTkdfVEFHIiwiRE9NSXRlcmFibGVzIiwiQ29sbGVjdGlvbiIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIl0sIm1hcHBpbmdzIjoiO2tMQXlCT0EsRUFBS0MsT0FBTEQsRUFFREUsRSxXQUNKLGNBQWMscUJBQ1osSUFBTUMsRUFBT0MsS0FDYkQsRUFBS0UsWUFBY0wsRUFBRSx1QkFDckJHLEVBQUtHLHFCQUF1Qk4sRUFBRSwwQkFFOUJHLEVBQUtFLFlBQVlFLEdBQUcsVUFBVSxTQUFVQyxHQUN0Q0EsRUFBRUMsMkJBQ0ZOLEVBQUtPLGlCQUFpQlYsRUFBRUksVSw4REFPWE8sR0FDZlgsRUFBRVksS0FBSyxDQUNMQyxLQUFNLE9BQ05DLFFBQVMsQ0FBQyxnQkFBaUIsWUFDM0JDLElBQUtYLEtBQUtFLHFCQUFxQlUsS0FBSyxvQkFDcENBLEtBQU0sQ0FBQ0MsT0FBUU4sRUFBYUssS0FBSyxZQUNqQ0UsUUFMSyxTQUtHRixHQUNGQSxFQUFLRyxRQUNQbEIsT0FBT21CLG1CQUFtQkosRUFBS0ssU0FDTlYsRUFBYVcsUUFBUSxlQUFlQyxLQUFLLHVDQUNqREMsT0FBTyxJQUFLUixFQUFLUyxZQUFjLEVBQUksS0FFcER4QixPQUFPeUIsaUJBQWlCVixFQUFLSyxnQixlQU94Qm5CLEcsbUxDcENSRixFQUFLQyxPQUFMRCxFQUVEMkIsRSxXQUNKLGFBQ0UsSUFEWSxxQkFDMEIsSUFBbEMzQixFQUFFLHFCQUFxQjRCLE9BQTNCLENBSUEsSUFBTXpCLEVBQU9DLEtBQ2JELEVBQUswQixnQkFBa0I3QixFQUFFLHFDQUN6QkcsRUFBSzJCLCtCQUFpQzlCLEVBQUUsc0NBQ3hDRyxFQUFLNEIsaUNBQW1DL0IsRUFBRSx3Q0FFMUNHLEVBQUs2Qix5QkFBMkI3QixFQUFLMEIsZ0JB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RCxHQUFTNEUsRUFBRW5JLE9BQWUsQ0FBRXFILFdBQU9KLEVBQVdHLE1BQU0sSUFDeEQrSyxFQUFRRCxFQUFJL0osRUFBRzVFLEdBQ2YvRSxLQUFLMkksSUFBTWdMLEVBQU1uUyxPQUNWLENBQUVxSCxNQUFPOEssRUFBTy9LLE1BQU0sUSxnQkNmL0IsRUFBUSxNQVlSLElBWEEsSUFBSXdDLEVBQVMsRUFBUSxPQUNqQnZJLEVBQU8sRUFBUSxPQUNmZ0wsRUFBWSxFQUFRLE9BQ3BCK0YsRUFBZ0IsRUFBUSxNQUFSLENBQWtCLGVBRWxDQyxFQUFlLHdiQUlVMU8sTUFBTSxLQUUxQmtDLEVBQUksRUFBR0EsRUFBSXdNLEVBQWFyUyxPQUFRNkYsSUFBSyxDQUM1QyxJQUFJcUcsRUFBT21HLEVBQWF4TSxHQUNwQnlNLEVBQWExSSxFQUFPc0MsR0FDcEJtQixFQUFRaUYsR0FBY0EsRUFBV2pNLFVBQ2pDZ0gsSUFBVUEsRUFBTStFLElBQWdCL1EsRUFBS2dNLEVBQU8rRSxFQUFlbEcsR0FDL0RHLEVBQVVILEdBQVFHLEVBQVUzRixTQ2hCMUI2TCxFQUEyQixHQUcvQixTQUFTQyxFQUFvQnpQLEdBRTVCLElBQUkwUCxFQUFlRixFQUF5QnhQLEdBQzVDLFFBQXFCa0UsSUFBakJ3TCxFQUNILE9BQU9BLEVBQWF0TixRQUdyQixJQUFJRCxFQUFTcU4sRUFBeUJ4UCxHQUFZLENBR2pEb0MsUUFBUyxJQU9WLE9BSEF1TixFQUFvQjNQLEdBQVVtQyxFQUFRQSxFQUFPQyxRQUFTcU4sR0FHL0N0TixFQUFPQyxRLG1CQ0lmLEksSUFBQSxVLElBQ0EsVSxvREFJQS9HLEVBRllDLE9BQUxELElBRUwsV0FDQSxJQUFJMkIsVUFDSixJQUFJekIsYyIsImZpbGUiOiJpbXByb3ZlX2Rlc2lnbl9wb3NpdGlvbnMuYnVuZGxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbmNsYXNzIEhvb2tTdGF0dXNIYW5kbGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi4kaG9va1N0YXR1cyA9ICQoJy5ob29rLXN3aXRjaC1hY3Rpb24nKTtcbiAgICBzZWxmLiRtb2R1bGVQb3NpdGlvbnNGb3JtID0gJCgnI21vZHVsZS1wb3NpdGlvbnMtZm9ybScpO1xuXG4gICAgc2VsZi4kaG9va1N0YXR1cy5vbignY2hhbmdlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICBzZWxmLnRvb2dsZUhvb2tTdGF0dXMoJCh0aGlzKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICAgKiBUb29nbGUgaG9va3Mgc3RhdHVzXG4gICAgICovXG4gIHRvb2dsZUhvb2tTdGF0dXMoJGhvb2tFbGVtZW50KSB7XG4gICAgJC5hamF4KHtcbiAgICAgIHR5cGU6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHsnY2FjaGUtY29udHJvbCc6ICduby1jYWNoZSd9LFxuICAgICAgdXJsOiB0aGlzLiRtb2R1bGVQb3NpdGlvbnNGb3JtLmRhdGEoJ3RvZ2dsZXN0YXR1cy11cmwnKSxcbiAgICAgIGRhdGE6IHtob29rSWQ6ICRob29rRWxlbWVudC5kYXRhKCdob29rLWlkJyl9LFxuICAgICAgc3VjY2VzcyhkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cykge1xuICAgICAgICAgIHdpbmRvdy5zaG93U3VjY2Vzc01lc3NhZ2UoZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgICBjb25zdCAkaG9va01vZHVsZXNMaXN0ID0gJGhvb2tFbGVtZW50LmNsb3Nlc3QoJy5ob29rLXBhbmVsJykuZmluZCgnLm1vZHVsZS1saXN0LCAubW9kdWxlLWxpc3QtZGlzYWJsZWQnKTtcbiAgICAgICAgICAkaG9va01vZHVsZXNMaXN0LmZhZGVUbyg1MDAsIGRhdGEuaG9va19zdGF0dXMgPyAxIDogMC41KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aW5kb3cuc2hvd0Vycm9yTWVzc2FnZShkYXRhLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEhvb2tTdGF0dXNIYW5kbGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbmNsYXNzIFBvc2l0aW9uc0xpc3RIYW5kbGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCQoJyNwb3NpdGlvbi1maWx0ZXJzJykubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi4kcGFuZWxTZWxlY3Rpb24gPSAkKCcjbW9kdWxlcy1wb3NpdGlvbi1zZWxlY3Rpb24tcGFuZWwnKTtcbiAgICBzZWxmLiRwYW5lbFNlbGVjdGlvblNpbmdsZVNlbGVjdGlvbiA9ICQoJyNtb2R1bGVzLXBvc2l0aW9uLXNpbmdsZS1zZWxlY3Rpb24nKTtcbiAgICBzZWxmLiRwYW5lbFNlbGVjdGlvbk11bHRpcGxlU2VsZWN0aW9uID0gJCgnI21vZHVsZXMtcG9zaXRpb24tbXVsdGlwbGUtc2VsZWN0aW9uJyk7XG5cbiAgICBzZWxmLiRwYW5lbFNlbGVjdGlvbk9yaWdpbmFsWSA9IHNlbGYuJHBhbmVsU2VsZWN0aW9uLm9mZnNldCgpLnRvcDtcbiAgICBzZWxmLiRzaG93TW9kdWxlcyA9ICQoJyNzaG93LW1vZHVsZXMnKTtcbiAgICBzZWxmLiRtb2R1bGVzTGlzdCA9ICQoJy5tb2R1bGVzLXBvc2l0aW9uLWNoZWNrYm94Jyk7XG4gICAgc2VsZi4kaG9va1Bvc2l0aW9uID0gJCgnI2hvb2stcG9zaXRpb24nKTtcbiAgICBzZWxmLiRob29rU2VhcmNoID0gJCgnI2hvb2stc2VhcmNoJyk7XG4gICAgc2VsZi4kbW9kdWxlUG9zaXRpb25zRm9ybSA9ICQoJyNtb2R1bGUtcG9zaXRpb25zLWZvcm0nKTtcbiAgICBzZWxmLiRtb2R1bGVVbmhvb2tCdXR0b24gPSAkKCcjdW5ob29rLWJ1dHRvbi1wb3NpdGlvbi1ib3R0b20nKTtcbiAgICBzZWxmLiRtb2R1bGVCdXR0b25zVXBkYXRlID0gJCgnLm1vZHVsZS1idXR0b25zLXVwZGF0ZSAuYnRuJyk7XG5cbiAgICBzZWxmLmhhbmRsZUxpc3QoKTtcbiAgICBzZWxmLmhhbmRsZVNvcnRhYmxlKCk7XG5cbiAgICAkKCdpbnB1dFtuYW1lPVwiZ2VuZXJhbFtlbmFibGVfdG9zXVwiXScpLm9uKCdjaGFuZ2UnLCAoKSA9PiBzZWxmLmhhbmRsZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYWxsIGV2ZW50cyBmb3IgRGVzaWduIC0+IFBvc2l0aW9ucyBMaXN0XG4gICAqL1xuICBoYW5kbGVMaXN0KCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgJCh3aW5kb3cpLm9uKCdzY3JvbGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCAkc2Nyb2xsVG9wID0gJCh3aW5kb3cpLnNjcm9sbFRvcCgpO1xuICAgICAgc2VsZi4kcGFuZWxTZWxlY3Rpb24uY3NzKFxuICAgICAgICAndG9wJyxcbiAgICAgICAgJHNjcm9sbFRvcCA8IDIwID8gMCA6ICRzY3JvbGxUb3AgLSBzZWxmLiRwYW5lbFNlbGVjdGlvbk9yaWdpbmFsWSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBzZWxmLiRtb2R1bGVzTGlzdC5vbignY2hhbmdlJywgKCkgPT4ge1xuICAgICAgY29uc3QgJGNoZWNrZWRDb3VudCA9IHNlbGYuJG1vZHVsZXNMaXN0LmZpbHRlcignOmNoZWNrZWQnKS5sZW5ndGg7XG5cbiAgICAgIGlmICgkY2hlY2tlZENvdW50ID09PSAwKSB7XG4gICAgICAgIHNlbGYuJG1vZHVsZVVuaG9va0J1dHRvbi5oaWRlKCk7XG4gICAgICAgIHNlbGYuJHBhbmVsU2VsZWN0aW9uLmhpZGUoKTtcbiAgICAgICAgc2VsZi4kcGFuZWxTZWxlY3Rpb25TaW5nbGVTZWxlY3Rpb24uaGlkZSgpO1xuICAgICAgICBzZWxmLiRwYW5lbFNlbGVjdGlvbk11bHRpcGxlU2VsZWN0aW9uLmhpZGUoKTtcbiAgICAgIH0gZWxzZSBpZiAoJGNoZWNrZWRDb3VudCA9PT0gMSkge1xuICAgICAgICBzZWxmLiRtb2R1bGVVbmhvb2tCdXR0b24uc2hvdygpO1xuICAgICAgICBzZWxmLiRwYW5lbFNlbGVjdGlvbi5zaG93KCk7XG4gICAgICAgIHNlbGYuJHBhbmVsU2VsZWN0aW9uU2luZ2xlU2VsZWN0aW9uLnNob3coKTtcbiAgICAgICAgc2VsZi4kcGFuZWxTZWxlY3Rpb25NdWx0aXBsZVNlbGVjdGlvbi5oaWRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLiRtb2R1bGVVbmhvb2tCdXR0b24uc2hvdygpO1xuICAgICAgICBzZWxmLiRwYW5lbFNlbGVjdGlvbi5zaG93KCk7XG4gICAgICAgIHNlbGYuJHBhbmVsU2VsZWN0aW9uU2luZ2xlU2VsZWN0aW9uLmhpZGUoKTtcbiAgICAgICAgc2VsZi4kcGFuZWxTZWxlY3Rpb25NdWx0aXBsZVNlbGVjdGlvbi5zaG93KCk7XG4gICAgICAgICQoJyNtb2R1bGVzLXBvc2l0aW9uLXNlbGVjdGlvbi1jb3VudCcpLmh0bWwoJGNoZWNrZWRDb3VudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzZWxmLiRwYW5lbFNlbGVjdGlvbi5maW5kKCdidXR0b24nKS5jbGljaygoKSA9PiB7XG4gICAgICAkKCdidXR0b25bbmFtZT1cInVuaG9va2Zvcm1cIl0nKS50cmlnZ2VyKCdjbGljaycpO1xuICAgIH0pO1xuXG4gICAgc2VsZi4kaG9va3NMaXN0ID0gW107XG4gICAgJCgnc2VjdGlvbi5ob29rLXBhbmVsIC5ob29rLW5hbWUnKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0ICR0aGlzID0gJCh0aGlzKTtcbiAgICAgIHNlbGYuJGhvb2tzTGlzdC5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICR0aGlzLmh0bWwoKSxcbiAgICAgICAgZWxlbWVudDogJHRoaXMsXG4gICAgICAgIGNvbnRhaW5lcjogJHRoaXMucGFyZW50cygnLmhvb2stcGFuZWwnKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc2VsZi4kc2hvd01vZHVsZXMuc2VsZWN0MigpO1xuICAgIHNlbGYuJHNob3dNb2R1bGVzLm9uKCdjaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBzZWxmLm1vZHVsZXNQb3NpdGlvbkZpbHRlckhvb2tzKCk7XG4gICAgfSk7XG5cbiAgICBzZWxmLiRob29rUG9zaXRpb24ub24oJ2NoYW5nZScsICgpID0+IHtcbiAgICAgIHNlbGYubW9kdWxlc1Bvc2l0aW9uRmlsdGVySG9va3MoKTtcbiAgICB9KTtcblxuICAgIHNlbGYuJGhvb2tTZWFyY2gub24oJ2lucHV0JywgKCkgPT4ge1xuICAgICAgc2VsZi5tb2R1bGVzUG9zaXRpb25GaWx0ZXJIb29rcygpO1xuICAgIH0pO1xuXG4gICAgc2VsZi4kaG9va1NlYXJjaC5vbigna2V5cHJlc3MnLCAoZSkgPT4ge1xuICAgICAgY29uc3Qga2V5Q29kZSA9IGUua2V5Q29kZSB8fCBlLndoaWNoO1xuXG4gICAgICByZXR1cm4ga2V5Q29kZSAhPT0gMTM7XG4gICAgfSk7XG5cbiAgICAkKCcuaG9vay1jaGVja2VyJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgJChgLmhvb2skeyQodGhpcykuZGF0YSgnaG9vay1pZCcpfWApLnByb3AoJ2NoZWNrZWQnLCAkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKSk7XG4gICAgfSk7XG5cbiAgICBzZWxmLiRtb2R1bGVzTGlzdC5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAkKGAjR2hvb2skeyQodGhpcykuZGF0YSgnaG9vay1pZCcpfWApLnByb3AoXG4gICAgICAgICdjaGVja2VkJyxcbiAgICAgICAgJChgLmhvb2skeyQodGhpcykuZGF0YSgnaG9vay1pZCcpfTpub3QoOmNoZWNrZWQpYCkubGVuZ3RoID09PSAwLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHNlbGYuJG1vZHVsZUJ1dHRvbnNVcGRhdGUub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgJGJ0biA9ICQodGhpcyk7XG4gICAgICBjb25zdCAkY3VycmVudCA9ICRidG4uY2xvc2VzdCgnLm1vZHVsZS1pdGVtJyk7XG4gICAgICBsZXQgJGRlc3RpbmF0aW9uO1xuXG4gICAgICBpZiAoJGJ0bi5kYXRhKCd3YXknKSkge1xuICAgICAgICAkZGVzdGluYXRpb24gPSAkY3VycmVudC5uZXh0KCcubW9kdWxlLWl0ZW0nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICRkZXN0aW5hdGlvbiA9ICRjdXJyZW50LnByZXYoJy5tb2R1bGUtaXRlbScpO1xuICAgICAgfVxuXG4gICAgICBpZiAoJGRlc3RpbmF0aW9uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICgkYnRuLmRhdGEoJ3dheScpKSB7XG4gICAgICAgICRjdXJyZW50Lmluc2VydEFmdGVyKCRkZXN0aW5hdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkY3VycmVudC5pbnNlcnRCZWZvcmUoJGRlc3RpbmF0aW9uKTtcbiAgICAgIH1cblxuICAgICAgc2VsZi51cGRhdGVQb3NpdGlvbnMoXG4gICAgICAgIHtcbiAgICAgICAgICBob29rSWQ6ICRidG4uZGF0YSgnaG9vay1pZCcpLFxuICAgICAgICAgIG1vZHVsZUlkOiAkYnRuLmRhdGEoJ21vZHVsZS1pZCcpLFxuICAgICAgICAgIHdheTogJGJ0bi5kYXRhKCd3YXknKSxcbiAgICAgICAgICBwb3NpdGlvbnM6IFtdLFxuICAgICAgICB9LFxuICAgICAgICAkYnRuLmNsb3Nlc3QoJ3VsJyksXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHNvcnRhYmxlIGV2ZW50c1xuICAgKi9cbiAgaGFuZGxlU29ydGFibGUoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAkKCcuc29ydGFibGUnKS5zb3J0YWJsZSh7XG4gICAgICBmb3JjZVBsYWNlaG9sZGVyU2l6ZTogdHJ1ZSxcbiAgICAgIHN0YXJ0KGUsIHVpKSB7XG4gICAgICAgICQodGhpcykuZGF0YSgncHJldmlvdXMtaW5kZXgnLCB1aS5pdGVtLmluZGV4KCkpO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZSgkZXZlbnQsIHVpKSB7XG4gICAgICAgIGNvbnN0IFtob29rSWQsIG1vZHVsZUlkXSA9IHVpLml0ZW0uYXR0cignaWQnKS5zcGxpdCgnXycpO1xuXG4gICAgICAgIGNvbnN0ICRkYXRhID0ge1xuICAgICAgICAgIGhvb2tJZCxcbiAgICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgICB3YXk6ICgkKHRoaXMpLmRhdGEoJ3ByZXZpb3VzLWluZGV4JykgPCB1aS5pdGVtLmluZGV4KCkpID8gMSA6IDAsXG4gICAgICAgICAgcG9zaXRpb25zOiBbXSxcbiAgICAgICAgfTtcblxuICAgICAgICBzZWxmLnVwZGF0ZVBvc2l0aW9ucyhcbiAgICAgICAgICAkZGF0YSxcbiAgICAgICAgICAkKCRldmVudC50YXJnZXQpLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVBvc2l0aW9ucygkZGF0YSwgJGxpc3QpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAkLmVhY2goJGxpc3QuY2hpbGRyZW4oKSwgKGluZGV4LCBlbGVtZW50KSA9PiB7XG4gICAgICAkZGF0YS5wb3NpdGlvbnMucHVzaCgkKGVsZW1lbnQpLmF0dHIoJ2lkJykpO1xuICAgIH0pO1xuXG4gICAgJC5hamF4KHtcbiAgICAgIHR5cGU6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHsnY2FjaGUtY29udHJvbCc6ICduby1jYWNoZSd9LFxuICAgICAgdXJsOiBzZWxmLiRtb2R1bGVQb3NpdGlvbnNGb3JtLmRhdGEoJ3VwZGF0ZS11cmwnKSxcbiAgICAgIGRhdGE6ICRkYXRhLFxuICAgICAgc3VjY2VzczogKCkgPT4ge1xuICAgICAgICBsZXQgc3RhcnQgPSAwO1xuICAgICAgICAkLmVhY2goJGxpc3QuY2hpbGRyZW4oKSwgKGluZGV4LCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgc3RhcnQgKz0gMTtcbiAgICAgICAgICAkKGVsZW1lbnQpLmZpbmQoJy5pbmRleC1wb3NpdGlvbicpLmh0bWwoc3RhcnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICB3aW5kb3cuc2hvd1N1Y2Nlc3NNZXNzYWdlKHdpbmRvdy51cGRhdGVfc3VjY2Vzc19tc2cpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgaG9va3MgLyBtb2R1bGVzIHNlYXJjaCBhbmQgZXZlcnl0aGluZ1xuICAgKiBhYm91dCBob29rcyBwb3NpdGlvbnMuXG4gICAqL1xuICBtb2R1bGVzUG9zaXRpb25GaWx0ZXJIb29rcygpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCAkaG9va05hbWUgPSBzZWxmLiRob29rU2VhcmNoLnZhbCgpO1xuICAgIGNvbnN0ICRtb2R1bGVJZCA9IHNlbGYuJHNob3dNb2R1bGVzLnZhbCgpO1xuICAgIGNvbnN0ICRyZWdleCA9IG5ldyBSZWdFeHAoYCgkeyRob29rTmFtZX0pYCwgJ2dpJyk7XG5cbiAgICBmb3IgKGxldCAkaWQgPSAwOyAkaWQgPCBzZWxmLiRob29rc0xpc3QubGVuZ3RoOyAkaWQgKz0gMSkge1xuICAgICAgc2VsZi4kaG9va3NMaXN0WyRpZF0uY29udGFpbmVyLnRvZ2dsZSgkaG9va05hbWUgPT09ICcnICYmICRtb2R1bGVJZCA9PT0gJ2FsbCcpO1xuICAgICAgc2VsZi4kaG9va3NMaXN0WyRpZF0uZWxlbWVudC5odG1sKHNlbGYuJGhvb2tzTGlzdFskaWRdLnRpdGxlKTtcbiAgICAgIHNlbGYuJGhvb2tzTGlzdFskaWRdLmNvbnRhaW5lci5maW5kKCcubW9kdWxlLWl0ZW0nKS5yZW1vdmVDbGFzcygnaGlnaGxpZ2h0Jyk7XG4gICAgfVxuXG4gICAgLy8gSGF2ZSBzZWxlY3QgYSBob29rIG5hbWUgb3IgYSBtb2R1bGUgaWRcbiAgICBpZiAoJGhvb2tOYW1lICE9PSAnJyB8fCAkbW9kdWxlSWQgIT09ICdhbGwnKSB7XG4gICAgICAvLyBQcmVwYXJlIHNldCBvZiBtYXRjaGVkIGVsZW1lbnRzXG4gICAgICBsZXQgJGhvb2tzVG9TaG93RnJvbU1vZHVsZSA9ICQoKTtcbiAgICAgIGxldCAkaG9va3NUb1Nob3dGcm9tSG9va05hbWUgPSAkKCk7XG4gICAgICBsZXQgJGN1cnJlbnRIb29rcztcbiAgICAgIGxldCAkc3RhcnQ7XG5cbiAgICAgIGZvciAobGV0ICRpZCA9IDA7ICRpZCA8IHNlbGYuJGhvb2tzTGlzdC5sZW5ndGg7ICRpZCArPSAxKSB7XG4gICAgICAgIC8vIFByZXBhcmUgaGlnaGxpZ2h0IHdoZW4gb25lIG1vZHVsZSBpcyBzZWxlY3RlZFxuICAgICAgICBpZiAoJG1vZHVsZUlkICE9PSAnYWxsJykge1xuICAgICAgICAgICRjdXJyZW50SG9va3MgPSBzZWxmLiRob29rc0xpc3RbJGlkXS5jb250YWluZXIuZmluZChgLm1vZHVsZS1wb3NpdGlvbi0keyRtb2R1bGVJZH1gKTtcbiAgICAgICAgICBpZiAoJGN1cnJlbnRIb29rcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAkaG9va3NUb1Nob3dGcm9tTW9kdWxlID0gJGhvb2tzVG9TaG93RnJvbU1vZHVsZS5hZGQoc2VsZi4kaG9va3NMaXN0WyRpZF0uY29udGFpbmVyKTtcbiAgICAgICAgICAgICRjdXJyZW50SG9va3MuYWRkQ2xhc3MoJ2hpZ2hsaWdodCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByZXBhcmUgaGlnaGxpZ2h0IHdoZW4gdGhlcmUgaXMgYSBob29rIG5hbWVcbiAgICAgICAgaWYgKCRob29rTmFtZSAhPT0gJycpIHtcbiAgICAgICAgICAkc3RhcnQgPSBzZWxmLiRob29rc0xpc3RbJGlkXS50aXRsZS50b0xvd2VyQ2FzZSgpLnNlYXJjaCgkaG9va05hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgaWYgKCRzdGFydCAhPT0gLTEpIHtcbiAgICAgICAgICAgICRob29rc1RvU2hvd0Zyb21Ib29rTmFtZSA9ICRob29rc1RvU2hvd0Zyb21Ib29rTmFtZS5hZGQoc2VsZi4kaG9va3NMaXN0WyRpZF0uY29udGFpbmVyKTtcbiAgICAgICAgICAgIHNlbGYuJGhvb2tzTGlzdFskaWRdLmVsZW1lbnQuaHRtbChcbiAgICAgICAgICAgICAgc2VsZi4kaG9va3NMaXN0WyRpZF0udGl0bGUucmVwbGFjZShcbiAgICAgICAgICAgICAgICAkcmVnZXgsXG4gICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+JDE8L3NwYW4+JyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE5vdGhpbmcgc2VsZWN0ZWRcbiAgICAgIGlmICgkbW9kdWxlSWQgPT09ICdhbGwnICYmICRob29rTmFtZSAhPT0gJycpIHtcbiAgICAgICAgJGhvb2tzVG9TaG93RnJvbUhvb2tOYW1lLnNob3coKTtcbiAgICAgIH0gZWxzZSBpZiAoJGhvb2tOYW1lID09PSAnJyAmJiAkbW9kdWxlSWQgIT09ICdhbGwnKSB7IC8vIEhhdmUgbm8gaG9vayBidWcgaGF2ZSBhIG1vZHVsZVxuICAgICAgICAkaG9va3NUb1Nob3dGcm9tTW9kdWxlLnNob3coKTtcbiAgICAgIH0gZWxzZSB7IC8vIEJvdGggc2VsZWN0ZWRcbiAgICAgICAgJGhvb2tzVG9TaG93RnJvbUhvb2tOYW1lLmZpbHRlcigkaG9va3NUb1Nob3dGcm9tTW9kdWxlKS5zaG93KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFzZWxmLiRob29rUG9zaXRpb24ucHJvcCgnY2hlY2tlZCcpKSB7XG4gICAgICBmb3IgKGxldCAkaWQgPSAwOyAkaWQgPCBzZWxmLiRob29rc0xpc3QubGVuZ3RoOyAkaWQgKz0gMSkge1xuICAgICAgICBpZiAoc2VsZi4kaG9va3NMaXN0WyRpZF0uY29udGFpbmVyLmlzKCcuaG9vay1wb3NpdGlvbicpKSB7XG4gICAgICAgICAgc2VsZi4kaG9va3NMaXN0WyRpZF0uY29udGFpbmVyLmhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQb3NpdGlvbnNMaXN0SGFuZGxlcjtcbiIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9nZXQtaXRlcmF0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vaXMtaXRlcmFibGVcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIik7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgICAgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICAgIGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfTtcbn0oKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9pc0l0ZXJhYmxlMiA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL2lzLWl0ZXJhYmxlXCIpO1xuXG52YXIgX2lzSXRlcmFibGUzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJdGVyYWJsZTIpO1xuXG52YXIgX2dldEl0ZXJhdG9yMiA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL2dldC1pdGVyYXRvclwiKTtcblxudmFyIF9nZXRJdGVyYXRvcjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRJdGVyYXRvcjIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIHNsaWNlSXRlcmF0b3IoYXJyLCBpKSB7XG4gICAgdmFyIF9hcnIgPSBbXTtcbiAgICB2YXIgX24gPSB0cnVlO1xuICAgIHZhciBfZCA9IGZhbHNlO1xuICAgIHZhciBfZSA9IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICBmb3IgKHZhciBfaSA9ICgwLCBfZ2V0SXRlcmF0b3IzLmRlZmF1bHQpKGFyciksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7XG4gICAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgX2QgPSB0cnVlO1xuICAgICAgX2UgPSBlcnI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0pIF9pW1wicmV0dXJuXCJdKCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBfYXJyO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChhcnIsIGkpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH0gZWxzZSBpZiAoKDAsIF9pc0l0ZXJhYmxlMy5kZWZhdWx0KShPYmplY3QoYXJyKSkpIHtcbiAgICAgIHJldHVybiBzbGljZUl0ZXJhdG9yKGFyciwgaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpO1xuICAgIH1cbiAgfTtcbn0oKTsiLCJyZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yJyk7XG4iLCJyZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL2NvcmUuaXMtaXRlcmFibGUnKTtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHknKTtcbnZhciAkT2JqZWN0ID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdDtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYykge1xuICByZXR1cm4gJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIiwiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIiwidmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHsgdmVyc2lvbjogJzIuNi4xMScgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4iLCIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5pZiAodHlwZW9mIF9fZyA9PSAnbnVtYmVyJykgX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4iLCJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuIiwidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRQLmYob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwidmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG5tb2R1bGUuZXhwb3J0cyA9IGRvY3VtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiIsIm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iLCIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGRlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19oaWRlJykoSXRlcmF0b3JQcm90b3R5cGUsIHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpIHtcbiAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGRlc2NyaXB0b3IoMSwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKENvbnN0cnVjdG9yLCBOQU1FICsgJyBJdGVyYXRvcicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciAkaXRlckNyZWF0ZSA9IHJlcXVpcmUoJy4vX2l0ZXItY3JlYXRlJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1kgPSAhKFtdLmtleXMgJiYgJ25leHQnIGluIFtdLmtleXMoKSk7IC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbnZhciBGRl9JVEVSQVRPUiA9ICdAQGl0ZXJhdG9yJztcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEJhc2UsIE5BTUUsIENvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICAkaXRlckNyZWF0ZShDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG4gIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbiAoa2luZCkge1xuICAgIGlmICghQlVHR1kgJiYga2luZCBpbiBwcm90bykgcmV0dXJuIHByb3RvW2tpbmRdO1xuICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgIH0gcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gIH07XG4gIHZhciBUQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBERUZfVkFMVUVTID0gREVGQVVMVCA9PSBWQUxVRVM7XG4gIHZhciBWQUxVRVNfQlVHID0gZmFsc2U7XG4gIHZhciBwcm90byA9IEJhc2UucHJvdG90eXBlO1xuICB2YXIgJG5hdGl2ZSA9IHByb3RvW0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXTtcbiAgdmFyICRkZWZhdWx0ID0gJG5hdGl2ZSB8fCBnZXRNZXRob2QoREVGQVVMVCk7XG4gIHZhciAkZW50cmllcyA9IERFRkFVTFQgPyAhREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKCdlbnRyaWVzJykgOiB1bmRlZmluZWQ7XG4gIHZhciAkYW55TmF0aXZlID0gTkFNRSA9PSAnQXJyYXknID8gcHJvdG8uZW50cmllcyB8fCAkbmF0aXZlIDogJG5hdGl2ZTtcbiAgdmFyIG1ldGhvZHMsIGtleSwgSXRlcmF0b3JQcm90b3R5cGU7XG4gIC8vIEZpeCBuYXRpdmVcbiAgaWYgKCRhbnlOYXRpdmUpIHtcbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSgpKSk7XG4gICAgaWYgKEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuICAgICAgLy8gZml4IGZvciBzb21lIG9sZCBlbmdpbmVzXG4gICAgICBpZiAoIUxJQlJBUlkgJiYgdHlwZW9mIEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSAhPSAnZnVuY3Rpb24nKSBoaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG4gICAgfVxuICB9XG4gIC8vIGZpeCBBcnJheSN7dmFsdWVzLCBAQGl0ZXJhdG9yfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUykge1xuICAgIFZBTFVFU19CVUcgPSB0cnVlO1xuICAgICRkZWZhdWx0ID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gJG5hdGl2ZS5jYWxsKHRoaXMpOyB9O1xuICB9XG4gIC8vIERlZmluZSBpdGVyYXRvclxuICBpZiAoKCFMSUJSQVJZIHx8IEZPUkNFRCkgJiYgKEJVR0dZIHx8IFZBTFVFU19CVUcgfHwgIXByb3RvW0lURVJBVE9SXSkpIHtcbiAgICBoaWRlKHByb3RvLCBJVEVSQVRPUiwgJGRlZmF1bHQpO1xuICB9XG4gIC8vIFBsdWcgZm9yIGxpYnJhcnlcbiAgSXRlcmF0b3JzW05BTUVdID0gJGRlZmF1bHQ7XG4gIEl0ZXJhdG9yc1tUQUddID0gcmV0dXJuVGhpcztcbiAgaWYgKERFRkFVTFQpIHtcbiAgICBtZXRob2RzID0ge1xuICAgICAgdmFsdWVzOiBERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6IElTX1NFVCA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogJGVudHJpZXNcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoa2V5IGluIG1ldGhvZHMpIHtcbiAgICAgIGlmICghKGtleSBpbiBwcm90bykpIHJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG4gICAgfSBlbHNlICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKEJVR0dZIHx8IFZBTFVFU19CVUcpLCBOQU1FLCBtZXRob2RzKTtcbiAgfVxuICByZXR1cm4gbWV0aG9kcztcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkb25lLCB2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZSB9O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG4iLCIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBkUCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gZ2V0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBQO1xuICB3aGlsZSAobGVuZ3RoID4gaSkgZFAuZihPLCBQID0ga2V5c1tpKytdLCBQcm9wZXJ0aWVzW1BdKTtcbiAgcmV0dXJuIE87XG59O1xuIiwiLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDtcbn07XG4iLCJ2YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGFycmF5SW5kZXhPZiA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykoZmFsc2UpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSBpZiAoa2V5ICE9IElFX1BST1RPKSBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmFycmF5SW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG4iLCJ2YXIgZGVmID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIHRhZywgc3RhdCkge1xuICBpZiAoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSkgZGVmKGl0LCBUQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogdGFnIH0pO1xufTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgna2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwidmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IHJlcXVpcmUoJy4vX2xpYnJhcnknKSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgcG9zKSB7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gICAgdmFyIGkgPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgbCA9IHMubGVuZ3RoO1xuICAgIHZhciBhLCBiO1xuICAgIGlmIChpIDwgMCB8fCBpID49IGwpIHJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG4iLCIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcbiIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwidmFyIGlkID0gMDtcbnZhciBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07XG4iLCJ2YXIgc3RvcmUgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnd2tzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuU3ltYm9sO1xudmFyIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ICE9IHVuZGVmaW5lZCkgcmV0dXJuIGl0W0lURVJBVE9SXVxuICAgIHx8IGl0WydAQGl0ZXJhdG9yJ11cbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldCA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvciA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXRlckZuID0gZ2V0KGl0KTtcbiAgaWYgKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIHJldHVybiBhbk9iamVjdChpdGVyRm4uY2FsbChpdCkpO1xufTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5pc0l0ZXJhYmxlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPID0gT2JqZWN0KGl0KTtcbiAgcmV0dXJuIE9bSVRFUkFUT1JdICE9PSB1bmRlZmluZWRcbiAgICB8fCAnQEBpdGVyYXRvcicgaW4gT1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICB8fCBJdGVyYXRvcnMuaGFzT3duUHJvcGVydHkoY2xhc3NvZihPKSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydHk6IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIgaW5kZXggPSB0aGlzLl9pO1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBPLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcbiIsInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5pbXBvcnQgUG9zaXRpb25zTGlzdEhhbmRsZXIgZnJvbSAnLi9wb3NpdGlvbnMtbGlzdC1oYW5kbGVyJztcbmltcG9ydCBIb29rU3RhdHVzSGFuZGxlciBmcm9tICcuL2hvb2stc3RhdHVzLWhhbmRsZXInO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbiQoKCkgPT4ge1xuICBuZXcgUG9zaXRpb25zTGlzdEhhbmRsZXIoKTtcbiAgbmV3IEhvb2tTdGF0dXNIYW5kbGVyKCk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=

Youez - 2016 - github.com/yon3zu
LinuXploit