| 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 : |
/*! For license information please see translation_settings.bundle.js.LICENSE.txt */
(()=>{var e={50339:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(r(47518)),o=i(r(99663)),u=i(r(22600)),a=i(r(64877));function i(e){return e&&e.__esModule?e:{default:e}}var s=window.$,l=s(a.default.exportCoreType),c=s(a.default.exportThemesType),f=s(a.default.exportModulesType),d=s(a.default.exportCoreValues).closest(".form-group"),p=s(a.default.exportThemesValues).closest(".form-group"),h=s(a.default.exportModulesValues).closest(".form-group"),v=s(a.default.exportCoreValues),y=s(a.default.exportThemesValues),m=s(a.default.exportModulesValues),g=s(a.default.exportLanguageButton),_=function(){function e(){(0,o.default)(this,e),l.on("change",this.coreTypeChanged.bind(this)),c.on("change",this.themesTypeChanged.bind(this)),f.on("change",this.modulesTypeChanged.bind(this)),v.on("change",this.subChoicesChanged.bind(this)),y.on("change",this.subChoicesChanged.bind(this)),m.on("change",this.subChoicesChanged.bind(this)),this.check(l)}return(0,u.default)(e,[{key:"coreTypeChanged",value:function(){l.is(":checked")&&(l.prop("disabled",!1),this.uncheck(c,f),this.show(d),this.hide(p,h),this.subChoicesChanged())}},{key:"themesTypeChanged",value:function(){c.is(":checked")&&(c.prop("disabled",!1),this.uncheck(l,f),this.show(p),this.hide(d,h),this.subChoicesChanged())}},{key:"modulesTypeChanged",value:function(){f.is(":checked")&&(h.prop("disabled",!1),this.uncheck(c,l),this.show(h),this.hide(p,d),this.subChoicesChanged())}},{key:"subChoicesChanged",value:function(){l.prop("checked")&&v.find(":checked").size()>0||c.prop("checked")&&null!==y.val()||f.prop("checked")&&null!==m.val()?g.prop("disabled",!1):g.prop("disabled",!0)}},{key:"hide",value:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];(0,n.default)(t).forEach((function(e){e.addClass("d-none"),e.find("select, input").prop("disabled","disabled")}))}},{key:"show",value:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];(0,n.default)(t).forEach((function(e){e.removeClass("d-none"),e.find("select, input").prop("disabled",!1)}))}},{key:"uncheck",value:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];(0,n.default)(t).forEach((function(e){e.prop("checked",!1)}))}},{key:"check",value:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];(0,n.default)(t).forEach((function(e){e.prop("checked",!0)}))}}]),e}();t.default=_},1140:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(r(47518)),o=i(r(99663)),u=i(r(22600)),a=i(r(64877));function i(e){return e&&e.__esModule?e:{default:e}}var s=window.$,l="mails",c=function(){function e(){(0,o.default)(this,e),s(a.default.translationType).on("change",this.toggleFields.bind(this)),s(a.default.emailContentType).on("change",this.toggleEmailFields.bind(this)),this.toggleFields()}return(0,u.default)(e,[{key:"toggleFields",value:function(){var e=s(a.default.translationType).val(),t=s(a.default.modulesFormGroup),r=s(a.default.emailFormGroup),n=s(a.default.themesFormGroup),o=n.find(a.default.defaultThemeOption);switch(e){case"back":case"others":this.hide(t,r,n);break;case"themes":this.show(n),this.hide(t,r,o);break;case"modules":this.hide(r,n),this.show(t);break;case l:this.hide(t,n),this.show(r)}this.toggleEmailFields()}},{key:"toggleEmailFields",value:function(){if(s(a.default.translationType).val()===l){var e=s(a.default.emailFormGroup).find("select").val(),t=s(a.default.themesFormGroup),r=t.find(a.default.noThemeOption),n=t.find(a.default.defaultThemeOption);"body"===e?(r.prop("selected",!0),this.show(r,t,n)):this.hide(r,t,n)}}},{key:"hide",value:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];(0,n.default)(t).forEach((function(e){e.addClass("d-none"),e.find("select").prop("disabled","disabled")}))}},{key:"show",value:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];(0,n.default)(t).forEach((function(e){e.removeClass("d-none"),e.find("select").prop("disabled",!1)}))}}]),e}();t.default=c},64877:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={translationType:".js-translation-type",emailContentType:".js-email-content-type",emailFormGroup:".js-email-form-group",modulesFormGroup:".js-module-form-group",themesFormGroup:".js-theme-form-group",defaultThemeOption:".js-default-theme",noThemeOption:".js-no-theme",exportCoreType:"#form_core_selectors_core_type",exportCoreValues:"#form_core_selectors_selected_value",exportThemesType:"#form_themes_selectors_themes_type",exportThemesValues:"#form_themes_selectors_selected_value",exportModulesType:"#form_modules_selectors_modules_type",exportModulesValues:"#form_modules_selectors_selected_value",exportLanguageButton:"#form-export-language-button"}},47306:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=a(r(99663)),o=a(r(1140)),u=a(r(50339));function a(e){return e&&e.__esModule?e:{default:e}}t.default=function e(){(0,n.default)(this,e),new o.default,new u.default}},32242:(e,t,r)=>{e.exports={default:r(33391),__esModule:!0}},47518:(e,t,r)=>{e.exports={default:r(48056),__esModule:!0}},99663:(e,t)=>{"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},22600:(e,t,r)=>{"use strict";t.__esModule=!0;var n,o=(n=r(32242))&&n.__esModule?n:{default:n};t.default=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),(0,o.default)(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}()},33391:(e,t,r)=>{r(31477);var n=r(34579).Object;e.exports=function(e,t,r){return n.defineProperty(e,t,r)}},48056:(e,t,r)=>{r(21013),e.exports=r(34579).Object.values},85663:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},12159:(e,t,r)=>{var n=r(36727);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},57428:(e,t,r)=>{var n=r(7932),o=r(78728),u=r(16531);e.exports=function(e){return function(t,r,a){var i,s=n(t),l=o(s.length),c=u(a,l);if(e&&r!=r){for(;l>c;)if((i=s[c++])!=i)return!0}else for(;l>c;c++)if((e||c in s)&&s[c]===r)return e||c||0;return!e&&-1}}},32894:e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},34579:e=>{var t=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=t)},19216:(e,t,r)=>{var n=r(85663);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},8333:e=>{e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},89666:(e,t,r)=>{e.exports=!r(7929)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},97467:(e,t,r)=>{var n=r(36727),o=r(33938).document,u=n(o)&&n(o.createElement);e.exports=function(e){return u?o.createElement(e):{}}},73338:e=>{e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},83856:(e,t,r)=>{var n=r(33938),o=r(34579),u=r(19216),a=r(41818),i=r(27069),s=function(e,t,r){var l,c,f,d=e&s.F,p=e&s.G,h=e&s.S,v=e&s.P,y=e&s.B,m=e&s.W,g=p?o:o[t]||(o[t]={}),_=g.prototype,b=p?n:h?n[t]:(n[t]||{}).prototype;for(l in p&&(r=t),r)(c=!d&&b&&void 0!==b[l])&&i(g,l)||(f=c?b[l]:r[l],g[l]=p&&"function"!=typeof b[l]?r[l]:y&&c?u(f,n):m&&b[l]==f?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):v&&"function"==typeof f?u(Function.call,f):f,v&&((g.virtual||(g.virtual={}))[l]=f,e&s.R&&_&&!_[l]&&a(_,l,f)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,e.exports=s},7929:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},33938:e=>{var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},27069:e=>{var t={}.hasOwnProperty;e.exports=function(e,r){return t.call(e,r)}},41818:(e,t,r)=>{var n=r(4743),o=r(83101);e.exports=r(89666)?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},33758:(e,t,r)=>{e.exports=!r(89666)&&!r(7929)((function(){return 7!=Object.defineProperty(r(97467)("div"),"a",{get:function(){return 7}}).a}))},50799:(e,t,r)=>{var n=r(32894);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},36727:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},16227:e=>{e.exports=!0},4743:(e,t,r)=>{var n=r(12159),o=r(33758),u=r(33206),a=Object.defineProperty;t.f=r(89666)?Object.defineProperty:function(e,t,r){if(n(e),t=u(t,!0),n(r),o)try{return a(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},12963:(e,t,r)=>{var n=r(27069),o=r(7932),u=r(57428)(!1),a=r(58989)("IE_PROTO");e.exports=function(e,t){var r,i=o(e),s=0,l=[];for(r in i)r!=a&&n(i,r)&&l.push(r);for(;t.length>s;)n(i,r=t[s++])&&(~u(l,r)||l.push(r));return l}},46162:(e,t,r)=>{var n=r(12963),o=r(73338);e.exports=Object.keys||function(e){return n(e,o)}},86274:(e,t)=>{t.f={}.propertyIsEnumerable},52050:(e,t,r)=>{var n=r(89666),o=r(46162),u=r(7932),a=r(86274).f;e.exports=function(e){return function(t){for(var r,i=u(t),s=o(i),l=s.length,c=0,f=[];l>c;)r=s[c++],n&&!a.call(i,r)||f.push(e?[r,i[r]]:i[r]);return f}}},83101:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},58989:(e,t,r)=>{var n=r(20250)("keys"),o=r(65730);e.exports=function(e){return n[e]||(n[e]=o(e))}},20250:(e,t,r)=>{var n=r(34579),o=r(33938),u="__core-js_shared__",a=o[u]||(o[u]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:r(16227)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},16531:(e,t,r)=>{var n=r(11052),o=Math.max,u=Math.min;e.exports=function(e,t){return(e=n(e))<0?o(e+t,0):u(e,t)}},11052:e=>{var t=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:t)(e)}},7932:(e,t,r)=>{var n=r(50799),o=r(8333);e.exports=function(e){return n(o(e))}},78728:(e,t,r)=>{var n=r(11052),o=Math.min;e.exports=function(e){return e>0?o(n(e),9007199254740991):0}},33206:(e,t,r)=>{var n=r(36727);e.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},65730:e=>{var t=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+r).toString(36))}},31477:(e,t,r)=>{var n=r(83856);n(n.S+n.F*!r(89666),"Object",{defineProperty:r(4743).f})},21013:(e,t,r)=>{var n=r(83856),o=r(52050)(!1);n(n.S,"Object",{values:function(e){return o(e)}})}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var u=t[n]={exports:{}};return e[n](u,u.exports,r),u.exports}(()=>{"use strict";var e,t=(e=r(47306))&&e.__esModule?e:{default:e};(0,window.$)((function(){new t.default}))})(),window.translation_settings={}})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy90cmFuc2xhdGlvbi1zZXR0aW5ncy9FeHBvcnRGb3JtRmllbGRUb2dnbGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvcGFnZXMvdHJhbnNsYXRpb24tc2V0dGluZ3MvRm9ybUZpZWxkVG9nZ2xlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL3BhZ2VzL3RyYW5zbGF0aW9uLXNldHRpbmdzL1RyYW5zbGF0aW9uU2V0dGluZ3NNYXAuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvcGFnZXMvdHJhbnNsYXRpb24tc2V0dGluZ3MvVHJhbnNsYXRpb25TZXR0aW5nc1BhZ2UuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L3ZhbHVlcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L3ZhbHVlcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1idWcta2V5cy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW9iamVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LXBpZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC10by1hcnJheS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5vYmplY3QudmFsdWVzLmpzIiwid2VicGFjazovL1tuYW1lXS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy90cmFuc2xhdGlvbi1zZXR0aW5ncy9pbmRleC5qcyJdLCJuYW1lcyI6WyIkIiwid2luZG93IiwiJGNvcmVUeXBlIiwiVHJhbnNsYXRpb25TZXR0aW5nc01hcCIsImV4cG9ydENvcmVUeXBlIiwiJHRoZW1lc1R5cGUiLCJleHBvcnRUaGVtZXNUeXBlIiwiJG1vZHVsZXNUeXBlIiwiZXhwb3J0TW9kdWxlc1R5cGUiLCIkY29yZVZhbHVlcyIsImV4cG9ydENvcmVWYWx1ZXMiLCJjbG9zZXN0IiwiJHRoZW1lc1ZhbHVlcyIsImV4cG9ydFRoZW1lc1ZhbHVlcyIsIiRtb2R1bGVzVmFsdWVzIiwiZXhwb3J0TW9kdWxlc1ZhbHVlcyIsIiRjb3JlQ2hlY2tib3hlcyIsIiR0aGVtZXNTZWxlY3QiLCIkbW9kdWxlc1NlbGVjdCIsIiRleHBvcnRCdXR0b24iLCJleHBvcnRMYW5ndWFnZUJ1dHRvbiIsIkV4cG9ydEZvcm1GaWVsZFRvZ2dsZSIsIm9uIiwidGhpcyIsImNvcmVUeXBlQ2hhbmdlZCIsImJpbmQiLCJ0aGVtZXNUeXBlQ2hhbmdlZCIsIm1vZHVsZXNUeXBlQ2hhbmdlZCIsInN1YkNob2ljZXNDaGFuZ2VkIiwiY2hlY2siLCJpcyIsInByb3AiLCJ1bmNoZWNrIiwic2hvdyIsImhpZGUiLCJmaW5kIiwic2l6ZSIsInZhbCIsIiRzZWxlY3RvcnMiLCJmb3JFYWNoIiwiZWwiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwibWFpbHMiLCJGb3JtRmllbGRUb2dnbGUiLCJ0cmFuc2xhdGlvblR5cGUiLCJ0b2dnbGVGaWVsZHMiLCJlbWFpbENvbnRlbnRUeXBlIiwidG9nZ2xlRW1haWxGaWVsZHMiLCJzZWxlY3RlZE9wdGlvbiIsIiRtb2R1bGVzRm9ybUdyb3VwIiwibW9kdWxlc0Zvcm1Hcm91cCIsIiRlbWFpbEZvcm1Hcm91cCIsImVtYWlsRm9ybUdyb3VwIiwiJHRoZW1lc0Zvcm1Hcm91cCIsInRoZW1lc0Zvcm1Hcm91cCIsIiRkZWZhdWx0VGhlbWVPcHRpb24iLCJkZWZhdWx0VGhlbWVPcHRpb24iLCJzZWxlY3RlZEVtYWlsQ29udGVudFR5cGUiLCIkbm9UaGVtZU9wdGlvbiIsIm5vVGhlbWVPcHRpb24iLCJtb2R1bGUiLCJleHBvcnRzIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwib2JqIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImkiLCJsZW5ndGgiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwia2V5IiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwicHJvdG90eXBlIiwiJE9iamVjdCIsIml0IiwiZGVzYyIsImRlZmluZVByb3BlcnR5IiwiaXNPYmplY3QiLCJ0b0lPYmplY3QiLCJ0b0xlbmd0aCIsInRvQWJzb2x1dGVJbmRleCIsIklTX0lOQ0xVREVTIiwiJHRoaXMiLCJmcm9tSW5kZXgiLCJ2YWx1ZSIsIk8iLCJpbmRleCIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwiY29yZSIsInZlcnNpb24iLCJfX2UiLCJhRnVuY3Rpb24iLCJmbiIsInRoYXQiLCJ1bmRlZmluZWQiLCJhIiwiYiIsImMiLCJhcHBseSIsImFyZ3VtZW50cyIsIk9iamVjdCIsImdldCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNwbGl0IiwiZ2xvYmFsIiwiY3R4IiwiaGFzIiwiJGV4cG9ydCIsInR5cGUiLCJuYW1lIiwic291cmNlIiwib3duIiwib3V0IiwiSVNfRk9SQ0VEIiwiRiIsIklTX0dMT0JBTCIsIkciLCJJU19TVEFUSUMiLCJTIiwiSVNfUFJPVE8iLCJQIiwiSVNfQklORCIsIkIiLCJJU19XUkFQIiwiVyIsImV4cFByb3RvIiwiQyIsIkZ1bmN0aW9uIiwidmlydHVhbCIsIlIiLCJVIiwiZXhlYyIsImUiLCJNYXRoIiwic2VsZiIsIl9fZyIsImhhc093blByb3BlcnR5IiwiZFAiLCJjcmVhdGVEZXNjIiwib2JqZWN0IiwiZiIsImNvZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiYW5PYmplY3QiLCJJRThfRE9NX0RFRklORSIsInRvUHJpbWl0aXZlIiwiQXR0cmlidXRlcyIsImFycmF5SW5kZXhPZiIsIklFX1BST1RPIiwibmFtZXMiLCJyZXN1bHQiLCJwdXNoIiwiJGtleXMiLCJlbnVtQnVnS2V5cyIsImtleXMiLCJERVNDUklQVE9SUyIsImdldEtleXMiLCJpc0VudW0iLCJpc0VudHJpZXMiLCJiaXRtYXAiLCJzaGFyZWQiLCJ1aWQiLCJTSEFSRUQiLCJzdG9yZSIsIm1vZGUiLCJjb3B5cmlnaHQiLCJ0b0ludGVnZXIiLCJtYXgiLCJtaW4iLCJjZWlsIiwiZmxvb3IiLCJpc05hTiIsIklPYmplY3QiLCJkZWZpbmVkIiwidmFsdWVPZiIsImlkIiwicHgiLCJyYW5kb20iLCJjb25jYXQiLCIkdmFsdWVzIiwidmFsdWVzIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIlRyYW5zbGF0aW9uU2V0dGluZ3NQYWdlIl0sIm1hcHBpbmdzIjoiOzZJQXlCQSxVLHVEQUVPQSxFQUFLQyxPQUFMRCxFQUVERSxFQUFZRixFQUFFRyxVQUF1QkMsZ0JBQ3JDQyxFQUFjTCxFQUFFRyxVQUF1Qkcsa0JBQ3ZDQyxFQUFlUCxFQUFFRyxVQUF1QkssbUJBRXhDQyxFQUFjVCxFQUFFRyxVQUF1Qk8sa0JBQWtCQyxRQUFRLGVBQ2pFQyxFQUFnQlosRUFBRUcsVUFBdUJVLG9CQUFvQkYsUUFBUSxlQUNyRUcsRUFBaUJkLEVBQUVHLFVBQXVCWSxxQkFBcUJKLFFBQVEsZUFFdkVLLEVBQWtCaEIsRUFBRUcsVUFBdUJPLGtCQUMzQ08sRUFBZ0JqQixFQUFFRyxVQUF1QlUsb0JBQ3pDSyxFQUFpQmxCLEVBQUVHLFVBQXVCWSxxQkFFMUNJLEVBQWdCbkIsRUFBRUcsVUFBdUJpQixzQkFRMUJDLEUsV0FDbkIsY0FBYyxxQkFDWm5CLEVBQVVvQixHQUFHLFNBQVVDLEtBQUtDLGdCQUFnQkMsS0FBS0YsT0FDakRsQixFQUFZaUIsR0FBRyxTQUFVQyxLQUFLRyxrQkFBa0JELEtBQUtGLE9BQ3JEaEIsRUFBYWUsR0FBRyxTQUFVQyxLQUFLSSxtQkFBbUJGLEtBQUtGLE9BRXZEUCxFQUFnQk0sR0FBRyxTQUFVQyxLQUFLSyxrQkFBa0JILEtBQUtGLE9BQ3pETixFQUFjSyxHQUFHLFNBQVVDLEtBQUtLLGtCQUFrQkgsS0FBS0Ys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QyxlQUFnQixhLGdCQ0R4RixJQUFJa0MsRUFBVSxFQUFRLE9BQ2xCd0UsRUFBVSxFQUFRLE1BQVIsRUFBOEIsR0FFNUN4RSxFQUFRQSxFQUFRVyxFQUFHLFNBQVUsQ0FDM0I4RCxPQUFRLFNBQWdCN0csR0FDdEIsT0FBTzRHLEVBQVE1RyxRQ0xmOEcsRUFBMkIsR0FHL0IsU0FBU0MsRUFBb0JDLEdBRTVCLElBQUlDLEVBQWVILEVBQXlCRSxHQUM1QyxRQUFxQjFGLElBQWpCMkYsRUFDSCxPQUFPQSxFQUFhdkksUUFHckIsSUFBSUQsRUFBU3FJLEVBQXlCRSxHQUFZLENBR2pEdEksUUFBUyxJQU9WLE9BSEF3SSxFQUFvQkYsR0FBVXZJLEVBQVFBLEVBQU9DLFFBQVNxSSxHQUcvQ3RJLEVBQU9DLFEsbUJDSWYsSSxPQUFBLFcsNEJBSUE5RCxFQUZZQyxPQUFMRCxJQUVMLFdBQ0EsSUFBSXVNLGMiLCJmaWxlIjoidHJhbnNsYXRpb25fc2V0dGluZ3MuYnVuZGxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5pbXBvcnQgVHJhbnNsYXRpb25TZXR0aW5nc01hcCBmcm9tICcuL1RyYW5zbGF0aW9uU2V0dGluZ3NNYXAnO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbmNvbnN0ICRjb3JlVHlwZSA9ICQoVHJhbnNsYXRpb25TZXR0aW5nc01hcC5leHBvcnRDb3JlVHlwZSk7XG5jb25zdCAkdGhlbWVzVHlwZSA9ICQoVHJhbnNsYXRpb25TZXR0aW5nc01hcC5leHBvcnRUaGVtZXNUeXBlKTtcbmNvbnN0ICRtb2R1bGVzVHlwZSA9ICQoVHJhbnNsYXRpb25TZXR0aW5nc01hcC5leHBvcnRNb2R1bGVzVHlwZSk7XG5cbmNvbnN0ICRjb3JlVmFsdWVzID0gJChUcmFuc2xhdGlvblNldHRpbmdzTWFwLmV4cG9ydENvcmVWYWx1ZXMpLmNsb3Nlc3QoJy5mb3JtLWdyb3VwJyk7XG5jb25zdCAkdGhlbWVzVmFsdWVzID0gJChUcmFuc2xhdGlvblNldHRpbmdzTWFwLmV4cG9ydFRoZW1lc1ZhbHVlcykuY2xvc2VzdCgnLmZvcm0tZ3JvdXAnKTtcbmNvbnN0ICRtb2R1bGVzVmFsdWVzID0gJChUcmFuc2xhdGlvblNldHRpbmdzTWFwLmV4cG9ydE1vZHVsZXNWYWx1ZXMpLmNsb3Nlc3QoJy5mb3JtLWdyb3VwJyk7XG5cbmNvbnN0ICRjb3JlQ2hlY2tib3hlcyA9ICQoVHJhbnNsYXRpb25TZXR0aW5nc01hcC5leHBvcnRDb3JlVmFsdWVzKTtcbmNvbnN0ICR0aGVtZXNTZWxlY3QgPSAkKFRyYW5zbGF0aW9uU2V0dGluZ3NNYXAuZXhwb3J0VGhlbWVzVmFsdWVzKTtcbmNvbnN0ICRtb2R1bGVzU2VsZWN0ID0gJChUcmFuc2xhdGlvblNldHRpbmdzTWFwLmV4cG9ydE1vZHVsZXNWYWx1ZXMpO1xuXG5jb25zdCAkZXhwb3J0QnV0dG9uID0gJChUcmFuc2xhdGlvblNldHRpbmdzTWFwLmV4cG9ydExhbmd1YWdlQnV0dG9uKTtcblxuLyoqXG4gKiBUb2dnbGVzIHNob3cvaGlkZSBmb3IgdGhlIHNlbGVjdG9ycyBvZiBzdWJ0eXBlcyAoaW4gY2FzZSBvZiBDb3JlIHR5cGUpLCB0aGVtZSBvciBtb2R1bGUgd2hlbiBhIFR5cGUgaXMgc2VsZWN0ZWRcbiAqXG4gKiBFeGFtcGxlIDogSWYgQ29yZSB0eXBlIGlzIHNlbGVjdGVkLCB0aGUgc3VidHlwZXMgY2hlY2tib3hlcyBhcmUgc2hvd24sXG4gKiBUaGVtZSBhbmQgTW9kdWxlIHR5cGVzIGFyZSB1bnNlbGVjdGVkIGFuZCB0aGVpciB2YWx1ZSBzZWxlY3RvciBhcmUgaGlkZGVuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4cG9ydEZvcm1GaWVsZFRvZ2dsZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgICRjb3JlVHlwZS5vbignY2hhbmdlJywgdGhpcy5jb3JlVHlwZUNoYW5nZWQuYmluZCh0aGlzKSk7XG4gICAgJHRoZW1lc1R5cGUub24oJ2NoYW5nZScsIHRoaXMudGhlbWVzVHlwZUNoYW5nZWQuYmluZCh0aGlzKSk7XG4gICAgJG1vZHVsZXNUeXBlLm9uKCdjaGFuZ2UnLCB0aGlzLm1vZHVsZXNUeXBlQ2hhbmdlZC5iaW5kKHRoaXMpKTtcblxuICAgICRjb3JlQ2hlY2tib3hlcy5vbignY2hhbmdlJywgdGhpcy5zdWJDaG9pY2VzQ2hhbmdlZC5iaW5kKHRoaXMpKTtcbiAgICAkdGhlbWVzU2VsZWN0Lm9uKCdjaGFuZ2UnLCB0aGlzLnN1YkNob2ljZXNDaGFuZ2VkLmJpbmQodGhpcykpO1xuICAgICRtb2R1bGVzU2VsZWN0Lm9uKCdjaGFuZ2UnLCB0aGlzLnN1YkNob2ljZXNDaGFuZ2VkLmJpbmQodGhpcykpO1xuXG4gICAgdGhpcy5jaGVjaygkY29yZVR5cGUpO1xuICB9XG5cbiAgY29yZVR5cGVDaGFuZ2VkKCkge1xuICAgIGlmICghJGNvcmVUeXBlLmlzKCc6Y2hlY2tlZCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgJGNvcmVUeXBlLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuICAgIHRoaXMudW5jaGVjaygkdGhlbWVzVHlwZSwgJG1vZHVsZXNUeXBlKTtcbiAgICB0aGlzLnNob3coJGNvcmVWYWx1ZXMpO1xuICAgIHRoaXMuaGlkZSgkdGhlbWVzVmFsdWVzLCAkbW9kdWxlc1ZhbHVlcyk7XG4gICAgdGhpcy5zdWJDaG9pY2VzQ2hhbmdlZCgpO1xuICB9XG5cbiAgdGhlbWVzVHlwZUNoYW5nZWQoKSB7XG4gICAgaWYgKCEkdGhlbWVzVHlwZS5pcygnOmNoZWNrZWQnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgICR0aGVtZXNUeXBlLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuICAgIHRoaXMudW5jaGVjaygkY29yZVR5cGUsICRtb2R1bGVzVHlwZSk7XG4gICAgdGhpcy5zaG93KCR0aGVtZXNWYWx1ZXMpO1xuICAgIHRoaXMuaGlkZSgkY29yZVZhbHVlcywgJG1vZHVsZXNWYWx1ZXMpO1xuICAgIHRoaXMuc3ViQ2hvaWNlc0NoYW5nZWQoKTtcbiAgfVxuXG4gIG1vZHVsZXNUeXBlQ2hhbmdlZCgpIHtcbiAgICBpZiAoISRtb2R1bGVzVHlwZS5pcygnOmNoZWNrZWQnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgICRtb2R1bGVzVmFsdWVzLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuICAgIHRoaXMudW5jaGVjaygkdGhlbWVzVHlwZSwgJGNvcmVUeXBlKTtcbiAgICB0aGlzLnNob3coJG1vZHVsZXNWYWx1ZXMpO1xuICAgIHRoaXMuaGlkZSgkdGhlbWVzVmFsdWVzLCAkY29yZVZhbHVlcyk7XG4gICAgdGhpcy5zdWJDaG9pY2VzQ2hhbmdlZCgpO1xuICB9XG5cbiAgc3ViQ2hvaWNlc0NoYW5nZWQoKSB7XG4gICAgaWYgKFxuICAgICAgKCRjb3JlVHlwZS5wcm9wKCdjaGVja2VkJykgJiYgJGNvcmVDaGVja2JveGVzLmZpbmQoJzpjaGVja2VkJykuc2l6ZSgpID4gMClcbiAgICAgIHx8ICgkdGhlbWVzVHlwZS5wcm9wKCdjaGVja2VkJykgJiYgJHRoZW1lc1NlbGVjdC52YWwoKSAhPT0gbnVsbClcbiAgICAgIHx8ICgkbW9kdWxlc1R5cGUucHJvcCgnY2hlY2tlZCcpICYmICRtb2R1bGVzU2VsZWN0LnZhbCgpICE9PSBudWxsKVxuICAgICkge1xuICAgICAgJGV4cG9ydEJ1dHRvbi5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgICRleHBvcnRCdXR0b24ucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFsbCBnaXZlbiBzZWxlY3RvcnMgaGlkZGVuXG4gICAqXG4gICAqIEBwYXJhbSAkc2VsZWN0b3JzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBoaWRlKC4uLiRzZWxlY3RvcnMpIHtcbiAgICBPYmplY3QudmFsdWVzKCRzZWxlY3RvcnMpLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICBlbC5hZGRDbGFzcygnZC1ub25lJyk7XG4gICAgICBlbC5maW5kKCdzZWxlY3QsIGlucHV0JykucHJvcCgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFsbCBnaXZlbiBzZWxlY3RvcnMgdmlzaWJsZVxuICAgKlxuICAgKiBAcGFyYW0gJHNlbGVjdG9yc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc2hvdyguLi4kc2VsZWN0b3JzKSB7XG4gICAgT2JqZWN0LnZhbHVlcygkc2VsZWN0b3JzKS5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgZWwucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpO1xuICAgICAgZWwuZmluZCgnc2VsZWN0LCBpbnB1dCcpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYWxsIGdpdmVuIHNlbGVjdG9ycyB1bmNoZWNrZWRcbiAgICpcbiAgICogQHBhcmFtICRzZWxlY3RvcnNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHVuY2hlY2soLi4uJHNlbGVjdG9ycykge1xuICAgIE9iamVjdC52YWx1ZXMoJHNlbGVjdG9ycykuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgIGVsLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhbGwgZ2l2ZW4gc2VsZWN0b3JzIGNoZWNrZWRcbiAgICpcbiAgICogQHBhcmFtICRzZWxlY3RvcnNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNoZWNrKC4uLiRzZWxlY3RvcnMpIHtcbiAgICBPYmplY3QudmFsdWVzKCRzZWxlY3RvcnMpLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICBlbC5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuXG5pbXBvcnQgVHJhbnNsYXRpb25TZXR0aW5nc01hcCBmcm9tICcuL1RyYW5zbGF0aW9uU2V0dGluZ3NNYXAnO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQmFjayBvZmZpY2UgdHJhbnNsYXRpb25zIHR5cGVcbiAqXG4gKiBAdHlwZSB7c3RyaW5nfVxuICovXG5jb25zdCBiYWNrID0gJ2JhY2snO1xuXG4vKipcbiAqIE1vZHVsZXMgdHJhbnNsYXRpb25zIHR5cGVcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmNvbnN0IHRoZW1lcyA9ICd0aGVtZXMnO1xuXG4vKipcbiAqIE1vZHVsZXMgdHJhbnNsYXRpb25zIHR5cGVcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmNvbnN0IG1vZHVsZXMgPSAnbW9kdWxlcyc7XG5cbi8qKlxuICogTWFpbHMgdHJhbnNsYXRpb25zIHR5cGVcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmNvbnN0IG1haWxzID0gJ21haWxzJztcblxuLyoqXG4gKiBPdGhlciB0cmFuc2xhdGlvbnMgdHlwZVxuICogQHR5cGUge3N0cmluZ31cbiAqL1xuY29uc3Qgb3RoZXJzID0gJ290aGVycyc7XG5cbi8qKlxuICogRW1haWwgYm9keSB0cmFuc2xhdGlvbnMgdHlwZVxuICogQHR5cGUge3N0cmluZ31cbiAqL1xuY29uc3QgZW1haWxDb250ZW50Qm9keSA9ICdib2R5JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9ybUZpZWxkVG9nZ2xlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgJChUcmFuc2xhdGlvblNldHRpbmdzTWFwLnRyYW5zbGF0aW9uVHlwZSkub24oJ2NoYW5nZScsIHRoaXMudG9nZ2xlRmllbGRzLmJpbmQodGhpcykpO1xuICAgICQoVHJhbnNsYXRpb25TZXR0aW5nc01hcC5lbWFpbENvbnRlbnRUeXBlKS5vbignY2hhbmdlJywgdGhpcy50b2dnbGVFbWFpbEZpZWxkcy5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMudG9nZ2xlRmllbGRzKCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlIGRlcGVuZGFudCB0cmFuc2xhdGlvbnMgZmllbGRzLCBiYXNlZCBvbiBzZWxlY3RlZCB0cmFuc2xhdGlvbiB0eXBlXG4gICAqL1xuICB0b2dnbGVGaWVsZHMoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSAkKFRyYW5zbGF0aW9uU2V0dGluZ3NNYXAudHJhbnNsYXRpb25UeXBlKS52YWwoKTtcbiAgICBjb25zdCAkbW9kdWxlc0Zvcm1Hcm91cCA9ICQoVHJhbnNsYXRpb25TZXR0aW5nc01hcC5tb2R1bGVzRm9ybUdyb3VwKTtcbiAgICBjb25zdCAkZW1haWxGb3JtR3JvdXAgPSAkKFRyYW5zbGF0aW9uU2V0dGluZ3NNYXAuZW1haWxGb3JtR3JvdXApO1xuICAgIGNvbnN0ICR0aGVtZXNGb3JtR3JvdXAgPSAkKFRyYW5zbGF0aW9uU2V0dGluZ3NNYXAudGhlbWVzRm9ybUdyb3VwKTtcbiAgICBjb25zdCAkZGVmYXVsdFRoZW1lT3B0aW9uID0gJHRoZW1lc0Zvcm1Hcm91cC5maW5kKFRyYW5zbGF0aW9uU2V0dGluZ3NNYXAuZGVmYXVsdFRoZW1lT3B0aW9uKTtcblxuICAgIHN3aXRjaCAoc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgIGNhc2UgYmFjazpcbiAgICAgIGNhc2Ugb3RoZXJzOlxuICAgICAgICB0aGlzLmhpZGUoJG1vZHVsZXNGb3JtR3JvdXAsICRlbWFpbEZvcm1Hcm91cCwgJHRoZW1lc0Zvcm1Hcm91cCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIHRoZW1lczpcbiAgICAgICAgdGhpcy5zaG93KCR0aGVtZXNGb3JtR3JvdXApO1xuICAgICAgICB0aGlzLmhpZGUoJG1vZHVsZXNGb3JtR3JvdXAsICRlbWFpbEZvcm1Hcm91cCwgJGRlZmF1bHRUaGVtZU9wdGlvbik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIG1vZHVsZXM6XG4gICAgICAgIHRoaXMuaGlkZSgkZW1haWxGb3JtR3JvdXAsICR0aGVtZXNGb3JtR3JvdXApO1xuICAgICAgICB0aGlzLnNob3coJG1vZHVsZXNGb3JtR3JvdXApO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBtYWlsczpcbiAgICAgICAgdGhpcy5oaWRlKCRtb2R1bGVzRm9ybUdyb3VwLCAkdGhlbWVzRm9ybUdyb3VwKTtcbiAgICAgICAgdGhpcy5zaG93KCRlbWFpbEZvcm1Hcm91cCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZUVtYWlsRmllbGRzKCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyBmaWVsZHMsIHdoaWNoIGFyZSByZWxhdGVkIHRvIGVtYWlsIHRyYW5zbGF0aW9uc1xuICAgKi9cbiAgdG9nZ2xlRW1haWxGaWVsZHMoKSB7XG4gICAgaWYgKCQoVHJhbnNsYXRpb25TZXR0aW5nc01hcC50cmFuc2xhdGlvblR5cGUpLnZhbCgpICE9PSBtYWlscykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkRW1haWxDb250ZW50VHlwZSA9ICQoVHJhbnNsYXRpb25TZXR0aW5nc01hcC5lbWFpbEZvcm1Hcm91cCkuZmluZCgnc2VsZWN0JykudmFsKCk7XG4gICAgY29uc3QgJHRoZW1lc0Zvcm1Hcm91cCA9ICQoVHJhbnNsYXRpb25TZXR0aW5nc01hcC50aGVtZXNGb3JtR3JvdXApO1xuICAgIGNvbnN0ICRub1RoZW1lT3B0aW9uID0gJHRoZW1lc0Zvcm1Hcm91cC5maW5kKFRyYW5zbGF0aW9uU2V0dGluZ3NNYXAubm9UaGVtZU9wdGlvbik7XG4gICAgY29uc3QgJGRlZmF1bHRUaGVtZU9wdGlvbiA9ICR0aGVtZXNGb3JtR3JvdXAuZmluZChUcmFuc2xhdGlvblNldHRpbmdzTWFwLmRlZmF1bHRUaGVtZU9wdGlvbik7XG5cbiAgICBpZiAoc2VsZWN0ZWRFbWFpbENvbnRlbnRUeXBlID09PSBlbWFpbENvbnRlbnRCb2R5KSB7XG4gICAgICAkbm9UaGVtZU9wdGlvbi5wcm9wKCdzZWxlY3RlZCcsIHRydWUpO1xuICAgICAgdGhpcy5zaG93KCRub1RoZW1lT3B0aW9uLCAkdGhlbWVzRm9ybUdyb3VwLCAkZGVmYXVsdFRoZW1lT3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlKCRub1RoZW1lT3B0aW9uLCAkdGhlbWVzRm9ybUdyb3VwLCAkZGVmYXVsdFRoZW1lT3B0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhbGwgZ2l2ZW4gc2VsZWN0b3JzIGhpZGRlblxuICAgKlxuICAgKiBAcGFyYW0gJHNlbGVjdG9yc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaGlkZSguLi4kc2VsZWN0b3JzKSB7XG4gICAgT2JqZWN0LnZhbHVlcygkc2VsZWN0b3JzKS5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgZWwuYWRkQ2xhc3MoJ2Qtbm9uZScpO1xuICAgICAgZWwuZmluZCgnc2VsZWN0JykucHJvcCgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFsbCBnaXZlbiBzZWxlY3RvcnMgdmlzaWJsZVxuICAgKlxuICAgKiBAcGFyYW0gJHNlbGVjdG9yc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc2hvdyguLi4kc2VsZWN0b3JzKSB7XG4gICAgT2JqZWN0LnZhbHVlcygkc2VsZWN0b3JzKS5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgZWwucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpO1xuICAgICAgZWwuZmluZCgnc2VsZWN0JykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0cmFuc2xhdGlvblR5cGU6ICcuanMtdHJhbnNsYXRpb24tdHlwZScsXG4gIGVtYWlsQ29udGVudFR5cGU6ICcuanMtZW1haWwtY29udGVudC10eXBlJyxcbiAgZW1haWxGb3JtR3JvdXA6ICcuanMtZW1haWwtZm9ybS1ncm91cCcsXG4gIG1vZHVsZXNGb3JtR3JvdXA6ICcuanMtbW9kdWxlLWZvcm0tZ3JvdXAnLFxuICB0aGVtZXNGb3JtR3JvdXA6ICcuanMtdGhlbWUtZm9ybS1ncm91cCcsXG4gIGRlZmF1bHRUaGVtZU9wdGlvbjogJy5qcy1kZWZhdWx0LXRoZW1lJyxcbiAgbm9UaGVtZU9wdGlvbjogJy5qcy1uby10aGVtZScsXG4gIGV4cG9ydENvcmVUeXBlOiAnI2Zvcm1fY29yZV9zZWxlY3RvcnNfY29yZV90eXBlJyxcbiAgZXhwb3J0Q29yZVZhbHVlczogJyNmb3JtX2NvcmVfc2VsZWN0b3JzX3NlbGVjdGVkX3ZhbHVlJyxcbiAgZXhwb3J0VGhlbWVzVHlwZTogJyNmb3JtX3RoZW1lc19zZWxlY3RvcnNfdGhlbWVzX3R5cGUnLFxuICBleHBvcnRUaGVtZXNWYWx1ZXM6ICcjZm9ybV90aGVtZXNfc2VsZWN0b3JzX3NlbGVjdGVkX3ZhbHVlJyxcbiAgZXhwb3J0TW9kdWxlc1R5cGU6ICcjZm9ybV9tb2R1bGVzX3NlbGVjdG9yc19tb2R1bGVzX3R5cGUnLFxuICBleHBvcnRNb2R1bGVzVmFsdWVzOiAnI2Zvcm1fbW9kdWxlc19zZWxlY3RvcnNfc2VsZWN0ZWRfdmFsdWUnLFxuICBleHBvcnRMYW5ndWFnZUJ1dHRvbjogJyNmb3JtLWV4cG9ydC1sYW5ndWFnZS1idXR0b24nLFxufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuaW1wb3J0IEZvcm1GaWVsZFRvZ2dsZSBmcm9tICcuL0Zvcm1GaWVsZFRvZ2dsZSc7XG5pbXBvcnQgRXhwb3J0Rm9ybUZpZWxkVG9nZ2xlIGZyb20gJy4vRXhwb3J0Rm9ybUZpZWxkVG9nZ2xlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHJhbnNsYXRpb25TZXR0aW5nc1BhZ2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBuZXcgRm9ybUZpZWxkVG9nZ2xlKCk7XG4gICAgbmV3IEV4cG9ydEZvcm1GaWVsZFRvZ2dsZSgpO1xuICB9XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvdmFsdWVzXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2RlZmluZVByb3BlcnR5ID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWZpbmVQcm9wZXJ0eSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICAgIGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9O1xufSgpOyIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHknKTtcbnZhciAkT2JqZWN0ID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdDtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYykge1xuICByZXR1cm4gJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKTtcbn07XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5vYmplY3QudmFsdWVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3QudmFsdWVzO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iLCJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjExJyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiIsIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsIi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwiLy8gSUUgOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG52YXIgJGV4cG9ydCA9IGZ1bmN0aW9uICh0eXBlLCBuYW1lLCBzb3VyY2UpIHtcbiAgdmFyIElTX0ZPUkNFRCA9IHR5cGUgJiAkZXhwb3J0LkY7XG4gIHZhciBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HO1xuICB2YXIgSVNfU1RBVElDID0gdHlwZSAmICRleHBvcnQuUztcbiAgdmFyIElTX1BST1RPID0gdHlwZSAmICRleHBvcnQuUDtcbiAgdmFyIElTX0JJTkQgPSB0eXBlICYgJGV4cG9ydC5CO1xuICB2YXIgSVNfV1JBUCA9IHR5cGUgJiAkZXhwb3J0Llc7XG4gIHZhciBleHBvcnRzID0gSVNfR0xPQkFMID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSk7XG4gIHZhciBleHBQcm90byA9IGV4cG9ydHNbUFJPVE9UWVBFXTtcbiAgdmFyIHRhcmdldCA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSA6IChnbG9iYWxbbmFtZV0gfHwge30pW1BST1RPVFlQRV07XG4gIHZhciBrZXksIG93biwgb3V0O1xuICBpZiAoSVNfR0xPQkFMKSBzb3VyY2UgPSBuYW1lO1xuICBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICAvLyBjb250YWlucyBpbiBuYXRpdmVcbiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIGlmIChvd24gJiYgaGFzKGV4cG9ydHMsIGtleSkpIGNvbnRpbnVlO1xuICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkXG4gICAgb3V0ID0gb3duID8gdGFyZ2V0W2tleV0gOiBzb3VyY2Vba2V5XTtcbiAgICAvLyBwcmV2ZW50IGdsb2JhbCBwb2xsdXRpb24gZm9yIG5hbWVzcGFjZXNcbiAgICBleHBvcnRzW2tleV0gPSBJU19HTE9CQUwgJiYgdHlwZW9mIHRhcmdldFtrZXldICE9ICdmdW5jdGlvbicgPyBzb3VyY2Vba2V5XVxuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgOiBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbClcbiAgICAvLyB3cmFwIGdsb2JhbCBjb25zdHJ1Y3RvcnMgZm9yIHByZXZlbnQgY2hhbmdlIHRoZW0gaW4gbGlicmFyeVxuICAgIDogSVNfV1JBUCAmJiB0YXJnZXRba2V5XSA9PSBvdXQgPyAoZnVuY3Rpb24gKEMpIHtcbiAgICAgIHZhciBGID0gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBDKSB7XG4gICAgICAgICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6IHJldHVybiBuZXcgQygpO1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEMoYSk7XG4gICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQyhhLCBiKTtcbiAgICAgICAgICB9IHJldHVybiBuZXcgQyhhLCBiLCBjKTtcbiAgICAgICAgfSByZXR1cm4gQy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICAgIEZbUFJPVE9UWVBFXSA9IENbUFJPVE9UWVBFXTtcbiAgICAgIHJldHVybiBGO1xuICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kc1xuICAgIH0pKG91dCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUubWV0aG9kcy4lTkFNRSVcbiAgICBpZiAoSVNfUFJPVE8pIHtcbiAgICAgIChleHBvcnRzLnZpcnR1YWwgfHwgKGV4cG9ydHMudmlydHVhbCA9IHt9KSlba2V5XSA9IG91dDtcbiAgICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5wcm90b3R5cGUuJU5BTUUlXG4gICAgICBpZiAodHlwZSAmICRleHBvcnQuUiAmJiBleHBQcm90byAmJiAhZXhwUHJvdG9ba2V5XSkgaGlkZShleHBQcm90bywga2V5LCBvdXQpO1xuICAgIH1cbiAgfVxufTtcbi8vIHR5cGUgYml0bWFwXG4kZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcbiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljXG4kZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcbiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcFxuJGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWBcbm1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiIsInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB0cnVlO1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgYXJyYXlJbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcbiIsImV4cG9ydHMuZiA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgaXNFbnVtID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpc0VudHJpZXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KGl0KTtcbiAgICB2YXIga2V5cyA9IGdldEtleXMoTyk7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaSkge1xuICAgICAga2V5ID0ga2V5c1tpKytdO1xuICAgICAgaWYgKCFERVNDUklQVE9SUyB8fCBpc0VudW0uY2FsbChPLCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGlzRW50cmllcyA/IFtrZXksIE9ba2V5XV0gOiBPW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcbiIsInZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogY29yZS52ZXJzaW9uLFxuICBtb2RlOiByZXF1aXJlKCcuL19saWJyYXJ5JykgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG4iLCIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcbiIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gaXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZiB9KTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9iamVjdC12YWx1ZXMtZW50cmllc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdmFsdWVzID0gcmVxdWlyZSgnLi9fb2JqZWN0LXRvLWFycmF5JykoZmFsc2UpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHtcbiAgdmFsdWVzOiBmdW5jdGlvbiB2YWx1ZXMoaXQpIHtcbiAgICByZXR1cm4gJHZhbHVlcyhpdCk7XG4gIH1cbn0pO1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuaW1wb3J0IFRyYW5zbGF0aW9uU2V0dGluZ3NQYWdlIGZyb20gJy4vVHJhbnNsYXRpb25TZXR0aW5nc1BhZ2UnO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbiQoKCkgPT4ge1xuICBuZXcgVHJhbnNsYXRpb25TZXR0aW5nc1BhZ2UoKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==