react-js-banner 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js ADDED
@@ -0,0 +1,23 @@
1
+ !function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t,n){e.exports=n(6)()},function(e,t,n){"use strict";e.exports=n(12)},function(e,t,n){"use strict";e.exports=n(4)},function(e,t,n){"use strict";n.r(t);var r=n(2),o=n(0),i=n.n(o),a=(n(8),n(1));function u(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,o)}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==u.return||u.return()}finally{if(o)throw i}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return f(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var l=function(e){var t=e.title,n=e.css,o=e.visibleTime,i=e.image,f=e.imageClass,l=(e.transitionAppearTime,e.transitionTime,e.showBanner),s=e.children,p=c(Object(r.useState)(void 0),2),y=p[0],d=p[1],v=c(Object(r.useState)(void 0),2),m=v[0],b=v[1];Object(r.useEffect)((function(){void 0!==o&&o>0&&b(o)}),[o]);var h=function(e){return new Promise((function(t){return setTimeout(t,e)}))};return void 0===l||l?t&&(void 0===y||y)?(function(){var e,t=(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(void 0!==m&&m>0)){e.next=5;break}return e.next=3,h(1e3+m);case 3:return e.next=5,d(!1);case 5:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){u(i,r,o,a,c,"next",e)}function c(e){u(i,r,o,a,c,"throw",e)}a(void 0)}))});return function(){return t.apply(this,arguments)}}()(),Object(a.jsxs)("div",{className:"banner",style:n,children:[i&&f?Object(a.jsx)("img",{src:i,className:f}):i?Object(a.jsx)("img",{src:i}):null,Object(a.jsx)("div",{children:t})]},"banner")):s?Object(a.jsx)("div",{className:"banner",style:n,children:s},"banner"):null:null};l.propTypes={title:i.a.node,css:i.a.object,visibleTime:i.a.number,image:i.a.string,imageClass:i.a.string,transitionAppearTime:i.a.number,transitionTime:i.a.number,showBanner:i.a.bool,children:i.a.node},t.default=l},function(e,t,n){"use strict";
2
+ /** @license React v16.14.0
3
+ * react.production.min.js
4
+ *
5
+ * Copyright (c) Facebook, Inc. and its affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var r=n(5),o="function"==typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,u=o?Symbol.for("react.fragment"):60107,c=o?Symbol.for("react.strict_mode"):60108,f=o?Symbol.for("react.profiler"):60114,l=o?Symbol.for("react.provider"):60109,s=o?Symbol.for("react.context"):60110,p=o?Symbol.for("react.forward_ref"):60112,y=o?Symbol.for("react.suspense"):60113,d=o?Symbol.for("react.memo"):60115,v=o?Symbol.for("react.lazy"):60116,m="function"==typeof Symbol&&Symbol.iterator;function b(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g={};function j(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||h}function O(){}function S(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||h}j.prototype.isReactComponent={},j.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(b(85));this.updater.enqueueSetState(this,e,t,"setState")},j.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},O.prototype=j.prototype;var _=S.prototype=new O;_.constructor=S,r(_,j.prototype),_.isPureReactComponent=!0;var w={current:null},x=Object.prototype.hasOwnProperty,C={key:!0,ref:!0,__self:!0,__source:!0};function k(e,t,n){var r,o={},a=null,u=null;if(null!=t)for(r in void 0!==t.ref&&(u=t.ref),void 0!==t.key&&(a=""+t.key),t)x.call(t,r)&&!C.hasOwnProperty(r)&&(o[r]=t[r]);var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){for(var f=Array(c),l=0;l<c;l++)f[l]=arguments[l+2];o.children=f}if(e&&e.defaultProps)for(r in c=e.defaultProps)void 0===o[r]&&(o[r]=c[r]);return{$$typeof:i,type:e,key:a,ref:u,props:o,_owner:w.current}}function E(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var P=/\/+/g,R=[];function T(e,t,n,r){if(R.length){var o=R.pop();return o.result=e,o.keyPrefix=t,o.func=n,o.context=r,o.count=0,o}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function $(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>R.length&&R.push(e)}function A(e,t,n){return null==e?0:function e(t,n,r,o){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var c=!1;if(null===t)c=!0;else switch(u){case"string":case"number":c=!0;break;case"object":switch(t.$$typeof){case i:case a:c=!0}}if(c)return r(o,t,""===n?"."+I(t,0):n),1;if(c=0,n=""===n?".":n+":",Array.isArray(t))for(var f=0;f<t.length;f++){var l=n+I(u=t[f],f);c+=e(u,l,r,o)}else if(null===t||"object"!=typeof t?l=null:l="function"==typeof(l=m&&t[m]||t["@@iterator"])?l:null,"function"==typeof l)for(t=l.call(t),f=0;!(u=t.next()).done;)c+=e(u=u.value,l=n+I(u,f++),r,o);else if("object"===u)throw r=""+t,Error(b(31,"[object Object]"===r?"object with keys {"+Object.keys(t).join(", ")+"}":r,""));return c}(e,"",t,n)}function I(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function M(e,t){e.func.call(e.context,t,e.count++)}function N(e,t,n){var r=e.result,o=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?U(e,r,n,(function(e){return e})):null!=e&&(E(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,o+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(P,"$&/")+"/")+n)),r.push(e))}function U(e,t,n,r,o){var i="";null!=n&&(i=(""+n).replace(P,"$&/")+"/"),A(e,N,t=T(t,i,r,o)),$(t)}var L={current:null};function F(){var e=L.current;if(null===e)throw Error(b(321));return e}var B={ReactCurrentDispatcher:L,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:function(e,t,n){if(null==e)return e;var r=[];return U(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;A(e,M,t=T(null,null,t,n)),$(t)},count:function(e){return A(e,(function(){return null}),null)},toArray:function(e){var t=[];return U(e,t,null,(function(e){return e})),t},only:function(e){if(!E(e))throw Error(b(143));return e}},t.Component=j,t.Fragment=u,t.Profiler=f,t.PureComponent=S,t.StrictMode=c,t.Suspense=y,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=B,t.cloneElement=function(e,t,n){if(null==e)throw Error(b(267,e));var o=r({},e.props),a=e.key,u=e.ref,c=e._owner;if(null!=t){if(void 0!==t.ref&&(u=t.ref,c=w.current),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var f=e.type.defaultProps;for(l in t)x.call(t,l)&&!C.hasOwnProperty(l)&&(o[l]=void 0===t[l]&&void 0!==f?f[l]:t[l])}var l=arguments.length-2;if(1===l)o.children=n;else if(1<l){f=Array(l);for(var s=0;s<l;s++)f[s]=arguments[s+2];o.children=f}return{$$typeof:i,type:e.type,key:a,ref:u,props:o,_owner:c}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:s,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:l,_context:e},e.Consumer=e},t.createElement=k,t.createFactory=function(e){var t=k.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:p,render:e}},t.isValidElement=E,t.lazy=function(e){return{$$typeof:v,_ctor:e,_status:-1,_result:null}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return F().useCallback(e,t)},t.useContext=function(e,t){return F().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return F().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return F().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return F().useLayoutEffect(e,t)},t.useMemo=function(e,t){return F().useMemo(e,t)},t.useReducer=function(e,t,n){return F().useReducer(e,t,n)},t.useRef=function(e){return F().useRef(e)},t.useState=function(e){return F().useState(e)},t.version="16.14.0"},function(e,t,n){"use strict";
10
+ /*
11
+ object-assign
12
+ (c) Sindre Sorhus
13
+ @license MIT
14
+ */var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,u,c=a(e),f=1;f<arguments.length;f++){for(var l in n=Object(arguments[f]))o.call(n,l)&&(c[l]=n[l]);if(r){u=r(n);for(var s=0;s<u.length;s++)i.call(n,u[s])&&(c[u[s]]=n[u[s]])}}return c}},function(e,t,n){"use strict";var r=n(7);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){var r=n(9),o=n(10);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var i={insert:"head",singleton:!1};r(o,i);e.exports=o.locals||{}},function(e,t,n){"use strict";var r,o=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function u(e){for(var t=-1,n=0;n<a.length;n++)if(a[n].identifier===e){t=n;break}return t}function c(e,t){for(var n={},r=[],o=0;o<e.length;o++){var i=e[o],c=t.base?i[0]+t.base:i[0],f=n[c]||0,l="".concat(c," ").concat(f);n[c]=f+1;var s=u(l),p={css:i[1],media:i[2],sourceMap:i[3]};-1!==s?(a[s].references++,a[s].updater(p)):a.push({identifier:l,updater:m(p,t),references:1}),r.push(l)}return r}function f(e){var t=document.createElement("style"),r=e.attributes||{};if(void 0===r.nonce){var o=n.nc;o&&(r.nonce=o)}if(Object.keys(r).forEach((function(e){t.setAttribute(e,r[e])})),"function"==typeof e.insert)e.insert(t);else{var a=i(e.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(t)}return t}var l,s=(l=[],function(e,t){return l[e]=t,l.filter(Boolean).join("\n")});function p(e,t,n,r){var o=n?"":r.media?"@media ".concat(r.media," {").concat(r.css,"}"):r.css;if(e.styleSheet)e.styleSheet.cssText=s(t,o);else{var i=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(i,a[t]):e.appendChild(i)}}function y(e,t,n){var r=n.css,o=n.media,i=n.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}var d=null,v=0;function m(e,t){var n,r,o;if(t.singleton){var i=v++;n=d||(d=f(t)),r=p.bind(null,n,i,!1),o=p.bind(null,n,i,!0)}else n=f(t),r=y.bind(null,n,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)};return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var n=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var r=0;r<n.length;r++){var o=u(n[r]);a[o].references--}for(var i=c(e,t),f=0;f<n.length;f++){var l=u(n[f]);0===a[l].references&&(a[l].updater(),a.splice(l,1))}n=i}}}},function(e,t,n){(t=n(11)(!1)).push([e.i,".banner{\r\n background-color: orange;\r\n text-align: center;\r\n padding: 10px 10px;\r\n font-size: 16px;\r\n font-weight: bold;\r\n display: flex;\r\n margin-bottom: 10px;\r\n text-align: center;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.banner-transition-appear {\r\n opacity: 0.01;\r\n}\r\n\r\n.banner-transition-appear.banner-transition-appear-active {\r\n opacity: 1;\r\n transition: opacity 2s ease;\r\n}\r\n\r\n.banner-transition-leave {\r\n opacity: 1;\r\n}\r\n\r\n.banner-transition-leave.banner-transition-leave-active {\r\n opacity: 0.01;\r\n transition: opacity 2s ease;\r\n}\r\n",""]),e.exports=t},function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var o=(a=r,u=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(u),"/*# ".concat(c," */")),i=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[n].concat(i).concat([o]).join("\n")}var a,u,c;return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(r)for(var i=0;i<this.length;i++){var a=this[i][0];null!=a&&(o[a]=!0)}for(var u=0;u<e.length;u++){var c=[].concat(e[u]);r&&o[c[0]]||(n&&(c[2]?c[2]="".concat(n," and ").concat(c[2]):c[2]=n),t.push(c))}},t}},function(e,t,n){"use strict";
15
+ /** @license React v16.14.0
16
+ * react-jsx-runtime.production.min.js
17
+ *
18
+ * Copyright (c) Facebook, Inc. and its affiliates.
19
+ *
20
+ * This source code is licensed under the MIT license found in the
21
+ * LICENSE file in the root directory of this source tree.
22
+ */var r=n(2),o=60103;if(t.Fragment=60107,"function"==typeof Symbol&&Symbol.for){var i=Symbol.for;o=i("react.element"),t.Fragment=i("react.fragment")}var a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,u=Object.prototype.hasOwnProperty,c={key:!0,ref:!0,__self:!0,__source:!0};function f(e,t,n){var r,i={},f=null,l=null;for(r in void 0!==n&&(f=""+n),void 0!==t.key&&(f=""+t.key),void 0!==t.ref&&(l=t.ref),t)u.call(t,r)&&!c.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===i[r]&&(i[r]=t[r]);return{$$typeof:o,type:e,key:f,ref:l,props:i,_owner:a.current}}t.jsx=f,t.jsxs=f}]);
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvb2JqZWN0LWFzc2lnbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovLy8uL3NyYy9iYW5uZXIuY3NzPzllNWQiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovLy8uL3NyYy9iYW5uZXIuY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyJdLCJuYW1lcyI6WyJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwibW9kdWxlcyIsImNhbGwiLCJtIiwiYyIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwidCIsIm1vZGUiLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsIkJhbm5lciIsInRpdGxlIiwiY3NzIiwidmlzaWJsZVRpbWUiLCJpbWFnZSIsImltYWdlQ2xhc3MiLCJzaG93QmFubmVyIiwidHJhbnNpdGlvbkFwcGVhclRpbWUiLCJ0cmFuc2l0aW9uVGltZSIsImNoaWxkcmVuIiwidXNlU3RhdGUiLCJ1bmRlZmluZWQiLCJzaG93Iiwic2V0U2hvdyIsInZpc2libGVUaW1lU3RhdGUiLCJzZXRWaXNpYmxlVGltZVN0YXRlIiwidXNlRWZmZWN0IiwidGltZW91dCIsIm1zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXRUaW1lb3V0IiwiaGlkZUJhbm5lciIsImNsYXNzTmFtZSIsInN0eWxlIiwic3JjIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwibm9kZSIsIm51bWJlciIsInN0cmluZyIsImJvb2wiLCJmb3IiLCJxIiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiQSIsIkIiLCJpdGVyYXRvciIsIkMiLCJhIiwiYiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImVuY29kZVVSSUNvbXBvbmVudCIsIkQiLCJpc01vdW50ZWQiLCJlbnF1ZXVlRm9yY2VVcGRhdGUiLCJlbnF1ZXVlUmVwbGFjZVN0YXRlIiwiZW5xdWV1ZVNldFN0YXRlIiwiRSIsIkYiLCJ0aGlzIiwicHJvcHMiLCJjb250ZXh0IiwicmVmcyIsInVwZGF0ZXIiLCJHIiwiSCIsImlzUmVhY3RDb21wb25lbnQiLCJzZXRTdGF0ZSIsIkVycm9yIiwiZm9yY2VVcGRhdGUiLCJJIiwiY29uc3RydWN0b3IiLCJpc1B1cmVSZWFjdENvbXBvbmVudCIsIkoiLCJjdXJyZW50IiwiSyIsIkwiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsIk0iLCJlIiwiZyIsImsiLCJmIiwiaCIsIkFycmF5IiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiTyIsIlAiLCJRIiwiUiIsInBvcCIsInJlc3VsdCIsImtleVByZWZpeCIsImZ1bmMiLCJjb3VudCIsIlMiLCJwdXNoIiwiViIsIlQiLCJVIiwiaXNBcnJheSIsIm5leHQiLCJkb25lIiwia2V5cyIsImpvaW4iLCJyZXBsYWNlIiwiZXNjYXBlIiwidG9TdHJpbmciLCJXIiwiYWEiLCJYIiwiTiIsIlkiLCJaIiwiYmEiLCJSZWFjdEN1cnJlbnREaXNwYXRjaGVyIiwiUmVhY3RDdXJyZW50QmF0Y2hDb25maWciLCJzdXNwZW5zZSIsIlJlYWN0Q3VycmVudE93bmVyIiwiSXNTb21lUmVuZGVyZXJBY3RpbmciLCJhc3NpZ24iLCJDaGlsZHJlbiIsIm1hcCIsImZvckVhY2giLCJ0b0FycmF5Iiwib25seSIsIkNvbXBvbmVudCIsIkZyYWdtZW50IiwiUHJvZmlsZXIiLCJQdXJlQ29tcG9uZW50IiwiU3RyaWN0TW9kZSIsIlN1c3BlbnNlIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJjbG9uZUVsZW1lbnQiLCJjcmVhdGVDb250ZXh0IiwiX2NhbGN1bGF0ZUNoYW5nZWRCaXRzIiwiX2N1cnJlbnRWYWx1ZSIsIl9jdXJyZW50VmFsdWUyIiwiX3RocmVhZENvdW50IiwiUHJvdmlkZXIiLCJDb25zdW1lciIsIl9jb250ZXh0IiwiY3JlYXRlRWxlbWVudCIsImNyZWF0ZUZhY3RvcnkiLCJjcmVhdGVSZWYiLCJmb3J3YXJkUmVmIiwicmVuZGVyIiwiaXNWYWxpZEVsZW1lbnQiLCJsYXp5IiwiX2N0b3IiLCJfc3RhdHVzIiwiX3Jlc3VsdCIsIm1lbW8iLCJjb21wYXJlIiwidXNlQ2FsbGJhY2siLCJ1c2VDb250ZXh0IiwidXNlRGVidWdWYWx1ZSIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVkdWNlciIsInVzZVJlZiIsInZlcnNpb24iLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wSXNFbnVtZXJhYmxlIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJ0b09iamVjdCIsInZhbCIsIlR5cGVFcnJvciIsInRlc3QxIiwiU3RyaW5nIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInRlc3QyIiwiZnJvbUNoYXJDb2RlIiwidGVzdDMiLCJzcGxpdCIsImxldHRlciIsImVyciIsInNob3VsZFVzZU5hdGl2ZSIsInRhcmdldCIsInNvdXJjZSIsImZyb20iLCJzeW1ib2xzIiwidG8iLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJzaGltIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJzaGFwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJhcGkiLCJjb250ZW50IiwiZGVmYXVsdCIsIm9wdGlvbnMiLCJsb2NhbHMiLCJpc09sZElFIiwiQm9vbGVhbiIsIndpbmRvdyIsImRvY3VtZW50IiwiYWxsIiwiYXRvYiIsImdldFRhcmdldCIsInN0eWxlVGFyZ2V0IiwicXVlcnlTZWxlY3RvciIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudERvY3VtZW50IiwiaGVhZCIsInN0eWxlc0luRG9tIiwiZ2V0SW5kZXhCeUlkZW50aWZpZXIiLCJpZGVudGlmaWVyIiwibW9kdWxlc1RvRG9tIiwibGlzdCIsImlkQ291bnRNYXAiLCJpZGVudGlmaWVycyIsIml0ZW0iLCJpZCIsImJhc2UiLCJjb25jYXQiLCJpbmRleCIsIm9iaiIsIm1lZGlhIiwic291cmNlTWFwIiwicmVmZXJlbmNlcyIsImFkZFN0eWxlIiwiaW5zZXJ0U3R5bGVFbGVtZW50IiwiYXR0cmlidXRlcyIsIm5vbmNlIiwic2V0QXR0cmlidXRlIiwiaW5zZXJ0IiwiYXBwZW5kQ2hpbGQiLCJ0ZXh0U3RvcmUiLCJyZXBsYWNlVGV4dCIsInJlcGxhY2VtZW50IiwiZmlsdGVyIiwiYXBwbHlUb1NpbmdsZXRvblRhZyIsInJlbW92ZSIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3NzTm9kZSIsImNyZWF0ZVRleHROb2RlIiwiY2hpbGROb2RlcyIsInJlbW92ZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwiYXBwbHlUb1RhZyIsInJlbW92ZUF0dHJpYnV0ZSIsImJ0b2EiLCJ1bmVzY2FwZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJmaXJzdENoaWxkIiwic2luZ2xldG9uIiwic2luZ2xldG9uQ291bnRlciIsInVwZGF0ZSIsInN0eWxlSW5kZXgiLCJwYXJlbnROb2RlIiwicmVtb3ZlU3R5bGVFbGVtZW50IiwibmV3T2JqIiwibGFzdElkZW50aWZpZXJzIiwibmV3TGlzdCIsIm5ld0xhc3RJZGVudGlmaWVycyIsIl9pIiwiX2luZGV4Iiwic3BsaWNlIiwiX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIiwidXNlU291cmNlTWFwIiwiY3NzTWFwcGluZyIsInNvdXJjZU1hcHBpbmciLCJiYXNlNjQiLCJkYXRhIiwic291cmNlVVJMcyIsInNvdXJjZXMiLCJzb3VyY2VSb290IiwiY3NzV2l0aE1hcHBpbmdUb1N0cmluZyIsIm1lZGlhUXVlcnkiLCJkZWR1cGUiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwianN4IiwianN4cyJdLCJtYXBwaW5ncyI6ImFBQ0UsSUFBSUEsRUFBbUIsR0FHdkIsU0FBU0MsRUFBb0JDLEdBRzVCLEdBQUdGLEVBQWlCRSxHQUNuQixPQUFPRixFQUFpQkUsR0FB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QyxJQUFJLEdBQUd4RSxHQUFHQSxFQUFFK0csYUFBYSxJQUFJdkMsS0FBS0QsRUFBRXZFLEVBQUUrRyxrQkFBZSxJQUFTOUcsRUFBRXVFLEtBQUt2RSxFQUFFdUUsR0FBR0QsRUFBRUMsSUFBSSxNQUFNLENBQUN3QyxTQUFTTixFQUFFTyxLQUFLakgsRUFBRWtCLElBQUl1RixFQUFFSixJQUFJekcsRUFBRXdGLE1BQU1uRixFQUFFaUgsT0FBT25ILEVBQUVtRyxTQUFTekcsRUFBUTRVLElBQUl6USxFQUFFbkUsRUFBUTZVLEtBQUsxUSIsImZpbGUiOiJtYWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDMpO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuaW1wb3J0IFwiLi9iYW5uZXIuY3NzXCI7XHJcblxyXG4vKipcclxuICogQmFubmVyIGNvbXBvbmVudFxyXG4gKiBAYXV0aG9yIFtKb3NlIEFudG9uaW8gQ2ljY2lvXShodHRwczovL2dpdGh1Yi5jb20vamNpY2NpbylcclxuICovXHJcblxyXG5jb25zdCBCYW5uZXIgPSAoe1xyXG4gIHRpdGxlLFxyXG4gIGNzcyxcclxuICB2aXNpYmxlVGltZSxcclxuICBpbWFnZSxcclxuICBpbWFnZUNsYXNzLFxyXG4gIHRyYW5zaXRpb25BcHBlYXJUaW1lLFxyXG4gIHRyYW5zaXRpb25UaW1lLFxyXG4gIHNob3dCYW5uZXIsXHJcbiAgY2hpbGRyZW5cclxufSkgPT4ge1xyXG4gIGNvbnN0IFtzaG93LCBzZXRTaG93XSA9IHVzZVN0YXRlKHVuZGVmaW5lZCk7XHJcbiAgY29uc3QgW3Zpc2libGVUaW1lU3RhdGUsIHNldFZpc2libGVUaW1lU3RhdGVdID0gdXNlU3RhdGUodW5kZWZpbmVkKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGlmICh2aXNpYmxlVGltZSAhPT0gdW5kZWZpbmVkICYmIHZpc2libGVUaW1lID4gMCkge1xyXG4gICAgICBzZXRWaXNpYmxlVGltZVN0YXRlKHZpc2libGVUaW1lKTtcclxuICAgIH1cclxuICB9LCBbdmlzaWJsZVRpbWVdKTtcclxuXHJcbiAgY29uc3QgcmVuZGVySW1hZ2UgPSAoKSA9PiB7XHJcbiAgICBpZiAoaW1hZ2UgJiYgaW1hZ2VDbGFzcykge1xyXG4gICAgICByZXR1cm4gPGltZyBzcmM9e2ltYWdlfSBjbGFzc05hbWU9e2ltYWdlQ2xhc3N9IC8+O1xyXG4gICAgfVxyXG4gICAgaWYgKGltYWdlKSB7XHJcbiAgICAgIHJldHVybiA8aW1nIHNyYz17aW1hZ2V9IC8+O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHJlbmRlclRpdGxlID0gKCkgPT4gPGRpdj57dGl0bGV9PC9kaXY+O1xyXG5cclxuICBjb25zdCB0aW1lb3V0ID0gKG1zKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xyXG5cclxuICBjb25zdCBoaWRlQmFubmVyID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKHZpc2libGVUaW1lU3RhdGUgIT09IHVuZGVmaW5lZCAmJiB2aXNpYmxlVGltZVN0YXRlID4gMCkge1xyXG4gICAgICBhd2FpdCB0aW1lb3V0KDEwMDAgKyB2aXNpYmxlVGltZVN0YXRlKTtcclxuICAgICAgYXdhaXQgc2V0U2hvdyhmYWxzZSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgcmVuZGVyQmFubmVyID0gKCkgPT4ge1xyXG4gICAgY29uc3Qgc2hvd0Jhbm5lckxvY2FsID0gc2hvd0Jhbm5lciAhPT0gdW5kZWZpbmVkID8gc2hvd0Jhbm5lciA6IHRydWU7XHJcbiAgICBpZiAoc2hvd0Jhbm5lckxvY2FsKSB7XHJcbiAgICAgIGlmICh0aXRsZSAmJiAoc2hvdyA9PT0gdW5kZWZpbmVkIHx8IHNob3cpKSB7XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGlkZUJhbm5lcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdiBrZXk9XCJiYW5uZXJcIiBjbGFzc05hbWU9XCJiYW5uZXJcIiBzdHlsZT17Y3NzfT5cclxuICAgICAgICAgICAge3JlbmRlckltYWdlKCl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJUaXRsZSgpfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdiBrZXk9XCJiYW5uZXJcIiBjbGFzc05hbWU9XCJiYW5uZXJcIiBzdHlsZT17Y3NzfT5cclxuICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9O1xyXG5cclxuICByZXR1cm4gcmVuZGVyQmFubmVyKCk7XHJcbn07XHJcblxyXG5CYW5uZXIucHJvcFR5cGVzID0ge1xyXG4gIHRpdGxlOiBQcm9wVHlwZXMubm9kZSxcclxuICBjc3M6IFByb3BUeXBlcy5vYmplY3QsXHJcbiAgdmlzaWJsZVRpbWU6IFByb3BUeXBlcy5udW1iZXIsXHJcbiAgaW1hZ2U6IFByb3BUeXBlcy5zdHJpbmcsXHJcbiAgaW1hZ2VDbGFzczogUHJvcFR5cGVzLnN0cmluZyxcclxuICB0cmFuc2l0aW9uQXBwZWFyVGltZTogUHJvcFR5cGVzLm51bWJlcixcclxuICB0cmFuc2l0aW9uVGltZTogUHJvcFR5cGVzLm51bWJlcixcclxuICBzaG93QmFubmVyOiBQcm9wVHlwZXMuYm9vbCxcclxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGVcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEJhbm5lcjtcclxuIiwiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xNC4wXG4gKiByZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0Jzt2YXIgbD1yZXF1aXJlKFwib2JqZWN0LWFzc2lnblwiKSxuPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IscD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLHE9bj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LHI9bj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsdD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCx1PW4/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LHY9bj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksdz1uP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLHg9bj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIseT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyx6PW4/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsQT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOlxuNjAxMTYsQj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gQyhhKXtmb3IodmFyIGI9XCJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD1cIithLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWIrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2NdKTtyZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIithK1wiOyB2aXNpdCBcIitiK1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn1cbnZhciBEPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxFPXt9O2Z1bmN0aW9uIEYoYSxiLGMpe3RoaXMucHJvcHM9YTt0aGlzLmNvbnRleHQ9Yjt0aGlzLnJlZnM9RTt0aGlzLnVwZGF0ZXI9Y3x8RH1GLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9O0YucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGEsYil7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmbnVsbCE9YSl0aHJvdyBFcnJvcihDKDg1KSk7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGEsYixcInNldFN0YXRlXCIpfTtGLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihhKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsYSxcImZvcmNlVXBkYXRlXCIpfTtcbmZ1bmN0aW9uIEcoKXt9Ry5wcm90b3R5cGU9Ri5wcm90b3R5cGU7ZnVuY3Rpb24gSChhLGIsYyl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1FO3RoaXMudXBkYXRlcj1jfHxEfXZhciBJPUgucHJvdG90eXBlPW5ldyBHO0kuY29uc3RydWN0b3I9SDtsKEksRi5wcm90b3R5cGUpO0kuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIEo9e2N1cnJlbnQ6bnVsbH0sSz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEw9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIE0oYSxiLGMpe3ZhciBlLGQ9e30sZz1udWxsLGs9bnVsbDtpZihudWxsIT1iKWZvcihlIGluIHZvaWQgMCE9PWIucmVmJiYoaz1iLnJlZiksdm9pZCAwIT09Yi5rZXkmJihnPVwiXCIrYi5rZXkpLGIpSy5jYWxsKGIsZSkmJiFMLmhhc093blByb3BlcnR5KGUpJiYoZFtlXT1iW2VdKTt2YXIgZj1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWYpZC5jaGlsZHJlbj1jO2Vsc2UgaWYoMTxmKXtmb3IodmFyIGg9QXJyYXkoZiksbT0wO208ZjttKyspaFttXT1hcmd1bWVudHNbbSsyXTtkLmNoaWxkcmVuPWh9aWYoYSYmYS5kZWZhdWx0UHJvcHMpZm9yKGUgaW4gZj1hLmRlZmF1bHRQcm9wcyxmKXZvaWQgMD09PWRbZV0mJihkW2VdPWZbZV0pO3JldHVybnskJHR5cGVvZjpwLHR5cGU6YSxrZXk6ZyxyZWY6ayxwcm9wczpkLF9vd25lcjpKLmN1cnJlbnR9fVxuZnVuY3Rpb24gTihhLGIpe3JldHVybnskJHR5cGVvZjpwLHR5cGU6YS50eXBlLGtleTpiLHJlZjphLnJlZixwcm9wczphLnByb3BzLF9vd25lcjphLl9vd25lcn19ZnVuY3Rpb24gTyhhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09cH1mdW5jdGlvbiBlc2NhcGUoYSl7dmFyIGI9e1wiPVwiOlwiPTBcIixcIjpcIjpcIj0yXCJ9O3JldHVyblwiJFwiKyhcIlwiK2EpLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihhKXtyZXR1cm4gYlthXX0pfXZhciBQPS9cXC8rL2csUT1bXTtmdW5jdGlvbiBSKGEsYixjLGUpe2lmKFEubGVuZ3RoKXt2YXIgZD1RLnBvcCgpO2QucmVzdWx0PWE7ZC5rZXlQcmVmaXg9YjtkLmZ1bmM9YztkLmNvbnRleHQ9ZTtkLmNvdW50PTA7cmV0dXJuIGR9cmV0dXJue3Jlc3VsdDphLGtleVByZWZpeDpiLGZ1bmM6Yyxjb250ZXh0OmUsY291bnQ6MH19XG5mdW5jdGlvbiBTKGEpe2EucmVzdWx0PW51bGw7YS5rZXlQcmVmaXg9bnVsbDthLmZ1bmM9bnVsbDthLmNvbnRleHQ9bnVsbDthLmNvdW50PTA7MTA+US5sZW5ndGgmJlEucHVzaChhKX1cbmZ1bmN0aW9uIFQoYSxiLGMsZSl7dmFyIGQ9dHlwZW9mIGE7aWYoXCJ1bmRlZmluZWRcIj09PWR8fFwiYm9vbGVhblwiPT09ZClhPW51bGw7dmFyIGc9ITE7aWYobnVsbD09PWEpZz0hMDtlbHNlIHN3aXRjaChkKXtjYXNlIFwic3RyaW5nXCI6Y2FzZSBcIm51bWJlclwiOmc9ITA7YnJlYWs7Y2FzZSBcIm9iamVjdFwiOnN3aXRjaChhLiQkdHlwZW9mKXtjYXNlIHA6Y2FzZSBxOmc9ITB9fWlmKGcpcmV0dXJuIGMoZSxhLFwiXCI9PT1iP1wiLlwiK1UoYSwwKTpiKSwxO2c9MDtiPVwiXCI9PT1iP1wiLlwiOmIrXCI6XCI7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IodmFyIGs9MDtrPGEubGVuZ3RoO2srKyl7ZD1hW2tdO3ZhciBmPWIrVShkLGspO2crPVQoZCxmLGMsZSl9ZWxzZSBpZihudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBhP2Y9bnVsbDooZj1CJiZhW0JdfHxhW1wiQEBpdGVyYXRvclwiXSxmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBmP2Y6bnVsbCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGYpZm9yKGE9Zi5jYWxsKGEpLGs9XG4wOyEoZD1hLm5leHQoKSkuZG9uZTspZD1kLnZhbHVlLGY9YitVKGQsaysrKSxnKz1UKGQsZixjLGUpO2Vsc2UgaWYoXCJvYmplY3RcIj09PWQpdGhyb3cgYz1cIlwiK2EsRXJyb3IoQygzMSxcIltvYmplY3QgT2JqZWN0XVwiPT09Yz9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGEpLmpvaW4oXCIsIFwiKStcIn1cIjpjLFwiXCIpKTtyZXR1cm4gZ31mdW5jdGlvbiBWKGEsYixjKXtyZXR1cm4gbnVsbD09YT8wOlQoYSxcIlwiLGIsYyl9ZnVuY3Rpb24gVShhLGIpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJm51bGwhPWEua2V5P2VzY2FwZShhLmtleSk6Yi50b1N0cmluZygzNil9ZnVuY3Rpb24gVyhhLGIpe2EuZnVuYy5jYWxsKGEuY29udGV4dCxiLGEuY291bnQrKyl9XG5mdW5jdGlvbiBhYShhLGIsYyl7dmFyIGU9YS5yZXN1bHQsZD1hLmtleVByZWZpeDthPWEuZnVuYy5jYWxsKGEuY29udGV4dCxiLGEuY291bnQrKyk7QXJyYXkuaXNBcnJheShhKT9YKGEsZSxjLGZ1bmN0aW9uKGEpe3JldHVybiBhfSk6bnVsbCE9YSYmKE8oYSkmJihhPU4oYSxkKyghYS5rZXl8fGImJmIua2V5PT09YS5rZXk/XCJcIjooXCJcIithLmtleSkucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKStjKSksZS5wdXNoKGEpKX1mdW5jdGlvbiBYKGEsYixjLGUsZCl7dmFyIGc9XCJcIjtudWxsIT1jJiYoZz0oXCJcIitjKS5yZXBsYWNlKFAsXCIkJi9cIikrXCIvXCIpO2I9UihiLGcsZSxkKTtWKGEsYWEsYik7UyhiKX12YXIgWT17Y3VycmVudDpudWxsfTtmdW5jdGlvbiBaKCl7dmFyIGE9WS5jdXJyZW50O2lmKG51bGw9PT1hKXRocm93IEVycm9yKEMoMzIxKSk7cmV0dXJuIGF9XG52YXIgYmE9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6WSxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzp7c3VzcGVuc2U6bnVsbH0sUmVhY3RDdXJyZW50T3duZXI6SixJc1NvbWVSZW5kZXJlckFjdGluZzp7Y3VycmVudDohMX0sYXNzaWduOmx9O2V4cG9ydHMuQ2hpbGRyZW49e21hcDpmdW5jdGlvbihhLGIsYyl7aWYobnVsbD09YSlyZXR1cm4gYTt2YXIgZT1bXTtYKGEsZSxudWxsLGIsYyk7cmV0dXJuIGV9LGZvckVhY2g6ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGw9PWEpcmV0dXJuIGE7Yj1SKG51bGwsbnVsbCxiLGMpO1YoYSxXLGIpO1MoYil9LGNvdW50OmZ1bmN0aW9uKGEpe3JldHVybiBWKGEsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sbnVsbCl9LHRvQXJyYXk6ZnVuY3Rpb24oYSl7dmFyIGI9W107WChhLGIsbnVsbCxmdW5jdGlvbihhKXtyZXR1cm4gYX0pO3JldHVybiBifSxvbmx5OmZ1bmN0aW9uKGEpe2lmKCFPKGEpKXRocm93IEVycm9yKEMoMTQzKSk7cmV0dXJuIGF9fTtcbmV4cG9ydHMuQ29tcG9uZW50PUY7ZXhwb3J0cy5GcmFnbWVudD1yO2V4cG9ydHMuUHJvZmlsZXI9dTtleHBvcnRzLlB1cmVDb21wb25lbnQ9SDtleHBvcnRzLlN0cmljdE1vZGU9dDtleHBvcnRzLlN1c3BlbnNlPXk7ZXhwb3J0cy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1iYTtcbmV4cG9ydHMuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT09YXx8dm9pZCAwPT09YSl0aHJvdyBFcnJvcihDKDI2NyxhKSk7dmFyIGU9bCh7fSxhLnByb3BzKSxkPWEua2V5LGc9YS5yZWYsaz1hLl9vd25lcjtpZihudWxsIT1iKXt2b2lkIDAhPT1iLnJlZiYmKGc9Yi5yZWYsaz1KLmN1cnJlbnQpO3ZvaWQgMCE9PWIua2V5JiYoZD1cIlwiK2Iua2V5KTtpZihhLnR5cGUmJmEudHlwZS5kZWZhdWx0UHJvcHMpdmFyIGY9YS50eXBlLmRlZmF1bHRQcm9wcztmb3IoaCBpbiBiKUsuY2FsbChiLGgpJiYhTC5oYXNPd25Qcm9wZXJ0eShoKSYmKGVbaF09dm9pZCAwPT09YltoXSYmdm9pZCAwIT09Zj9mW2hdOmJbaF0pfXZhciBoPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09aCllLmNoaWxkcmVuPWM7ZWxzZSBpZigxPGgpe2Y9QXJyYXkoaCk7Zm9yKHZhciBtPTA7bTxoO20rKylmW21dPWFyZ3VtZW50c1ttKzJdO2UuY2hpbGRyZW49Zn1yZXR1cm57JCR0eXBlb2Y6cCx0eXBlOmEudHlwZSxcbmtleTpkLHJlZjpnLHByb3BzOmUsX293bmVyOmt9fTtleHBvcnRzLmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj1udWxsKTthPXskJHR5cGVvZjp3LF9jYWxjdWxhdGVDaGFuZ2VkQml0czpiLF9jdXJyZW50VmFsdWU6YSxfY3VycmVudFZhbHVlMjphLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbH07YS5Qcm92aWRlcj17JCR0eXBlb2Y6dixfY29udGV4dDphfTtyZXR1cm4gYS5Db25zdW1lcj1hfTtleHBvcnRzLmNyZWF0ZUVsZW1lbnQ9TTtleHBvcnRzLmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oYSl7dmFyIGI9TS5iaW5kKG51bGwsYSk7Yi50eXBlPWE7cmV0dXJuIGJ9O2V4cG9ydHMuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19O2V4cG9ydHMuZm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6eCxyZW5kZXI6YX19O2V4cG9ydHMuaXNWYWxpZEVsZW1lbnQ9TztcbmV4cG9ydHMubGF6eT1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6QSxfY3RvcjphLF9zdGF0dXM6LTEsX3Jlc3VsdDpudWxsfX07ZXhwb3J0cy5tZW1vPWZ1bmN0aW9uKGEsYil7cmV0dXJueyQkdHlwZW9mOnosdHlwZTphLGNvbXBhcmU6dm9pZCAwPT09Yj9udWxsOmJ9fTtleHBvcnRzLnVzZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFooKS51c2VDYWxsYmFjayhhLGIpfTtleHBvcnRzLnVzZUNvbnRleHQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWigpLnVzZUNvbnRleHQoYSxiKX07ZXhwb3J0cy51c2VEZWJ1Z1ZhbHVlPWZ1bmN0aW9uKCl7fTtleHBvcnRzLnVzZUVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBaKCkudXNlRWZmZWN0KGEsYil9O2V4cG9ydHMudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIFooKS51c2VJbXBlcmF0aXZlSGFuZGxlKGEsYixjKX07XG5leHBvcnRzLnVzZUxheW91dEVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBaKCkudXNlTGF5b3V0RWZmZWN0KGEsYil9O2V4cG9ydHMudXNlTWVtbz1mdW5jdGlvbihhLGIpe3JldHVybiBaKCkudXNlTWVtbyhhLGIpfTtleHBvcnRzLnVzZVJlZHVjZXI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBaKCkudXNlUmVkdWNlcihhLGIsYyl9O2V4cG9ydHMudXNlUmVmPWZ1bmN0aW9uKGEpe3JldHVybiBaKCkudXNlUmVmKGEpfTtleHBvcnRzLnVzZVN0YXRlPWZ1bmN0aW9uKGEpe3JldHVybiBaKCkudXNlU3RhdGUoYSl9O2V4cG9ydHMudmVyc2lvbj1cIjE2LjE0LjBcIjtcbiIsIi8qXG5vYmplY3QtYXNzaWduXG4oYykgU2luZHJlIFNvcmh1c1xuQGxpY2Vuc2UgTUlUXG4qL1xuXG4ndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5mdW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ldy13cmFwcGVyc1xuXHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5cdFx0fVxuXHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7XG5cdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtcblx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0bztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwidmFyIGFwaSA9IHJlcXVpcmUoXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCIpO1xuICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2Jhbm5lci5jc3NcIik7XG5cbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50Ll9fZXNNb2R1bGUgPyBjb250ZW50LmRlZmF1bHQgOiBjb250ZW50O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbiAgICAgICAgICAgIH1cblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgaXNPbGRJRSA9IGZ1bmN0aW9uIGlzT2xkSUUoKSB7XG4gIHZhciBtZW1vO1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUoKSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gVGVzdCBmb3IgSUUgPD0gOSBhcyBwcm9wb3NlZCBieSBCcm93c2VyaGFja3NcbiAgICAgIC8vIEBzZWUgaHR0cDovL2Jyb3dzZXJoYWNrcy5jb20vI2hhY2stZTcxZDg2OTJmNjUzMzQxNzNmZWU3MTVjMjIyY2I4MDVcbiAgICAgIC8vIFRlc3RzIGZvciBleGlzdGVuY2Ugb2Ygc3RhbmRhcmQgZ2xvYmFscyBpcyB0byBhbGxvdyBzdHlsZS1sb2FkZXJcbiAgICAgIC8vIHRvIG9wZXJhdGUgY29ycmVjdGx5IGludG8gbm9uLXN0YW5kYXJkIGVudmlyb25tZW50c1xuICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL3N0eWxlLWxvYWRlci9pc3N1ZXMvMTc3XG4gICAgICBtZW1vID0gQm9vbGVhbih3aW5kb3cgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWxsICYmICF3aW5kb3cuYXRvYik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW87XG4gIH07XG59KCk7XG5cbnZhciBnZXRUYXJnZXQgPSBmdW5jdGlvbiBnZXRUYXJnZXQoKSB7XG4gIHZhciBtZW1vID0ge307XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSh0YXJnZXQpIHtcbiAgICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbiAgfTtcbn0oKTtcblxudmFyIHN0eWxlc0luRG9tID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5Eb20ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5Eb21baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXVxuICAgIH07XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzSW5Eb20ucHVzaCh7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IGFkZFN0eWxlKG9iaiwgb3B0aW9ucyksXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHZhciBhdHRyaWJ1dGVzID0gb3B0aW9ucy5hdHRyaWJ1dGVzIHx8IHt9O1xuXG4gIGlmICh0eXBlb2YgYXR0cmlidXRlcy5ub25jZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09ICd1bmRlZmluZWQnID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gICAgaWYgKG5vbmNlKSB7XG4gICAgICBhdHRyaWJ1dGVzLm5vbmNlID0gbm9uY2U7XG4gICAgfVxuICB9XG5cbiAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKGtleSwgYXR0cmlidXRlc1trZXldKTtcbiAgfSk7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmluc2VydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9wdGlvbnMuaW5zZXJ0KHN0eWxlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KG9wdGlvbnMuaW5zZXJ0IHx8ICdoZWFkJyk7XG5cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgICB9XG5cbiAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZS5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZSk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG52YXIgcmVwbGFjZVRleHQgPSBmdW5jdGlvbiByZXBsYWNlVGV4dCgpIHtcbiAgdmFyIHRleHRTdG9yZSA9IFtdO1xuICByZXR1cm4gZnVuY3Rpb24gcmVwbGFjZShpbmRleCwgcmVwbGFjZW1lbnQpIHtcbiAgICB0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG4gICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJyk7XG4gIH07XG59KCk7XG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcoc3R5bGUsIGluZGV4LCByZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmoubWVkaWEgPyBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpLmNvbmNhdChvYmouY3NzLCBcIn1cIikgOiBvYmouY3NzOyAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpO1xuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGUuY2hpbGROb2RlcztcblxuICAgIGlmIChjaGlsZE5vZGVzW2luZGV4XSkge1xuICAgICAgc3R5bGUucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH1cblxuICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGUuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoY3NzTm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcoc3R5bGUsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gb2JqLmNzcztcbiAgdmFyIG1lZGlhID0gb2JqLm1lZGlhO1xuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLnJlbW92ZUF0dHJpYnV0ZSgnbWVkaWEnKTtcbiAgfVxuXG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZS5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChzdHlsZS5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG52YXIgc2luZ2xldG9uID0gbnVsbDtcbnZhciBzaW5nbGV0b25Db3VudGVyID0gMDtcblxuZnVuY3Rpb24gYWRkU3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBzdHlsZTtcbiAgdmFyIHVwZGF0ZTtcbiAgdmFyIHJlbW92ZTtcblxuICBpZiAob3B0aW9ucy5zaW5nbGV0b24pIHtcbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcbiAgICBzdHlsZSA9IHNpbmdsZXRvbiB8fCAoc2luZ2xldG9uID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIGZhbHNlKTtcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZSwgb3B0aW9ucyk7XG5cbiAgICByZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuICAgIH07XG4gIH1cblxuICB1cGRhdGUob2JqKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OyAvLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cbiAgLy8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxuXG4gIGlmICghb3B0aW9ucy5zaW5nbGV0b24gJiYgdHlwZW9mIG9wdGlvbnMuc2luZ2xldG9uICE9PSAnYm9vbGVhbicpIHtcbiAgICBvcHRpb25zLnNpbmdsZXRvbiA9IGlzT2xkSUUoKTtcbiAgfVxuXG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3TGlzdCkgIT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5Eb21bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRG9tW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRG9tLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiLy8gSW1wb3J0c1xudmFyIF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyA9IHJlcXVpcmUoXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpO1xuZXhwb3J0cyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhmYWxzZSk7XG4vLyBNb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5iYW5uZXJ7XFxyXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7XFxyXFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxyXFxuICBwYWRkaW5nOiAxMHB4IDEwcHg7XFxyXFxuICBmb250LXNpemU6IDE2cHg7XFxyXFxuICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gIGRpc3BsYXk6IGZsZXg7XFxyXFxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xcclxcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcclxcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcclxcbn1cXHJcXG5cXHJcXG4uYmFubmVyLXRyYW5zaXRpb24tYXBwZWFyIHtcXHJcXG4gIG9wYWNpdHk6IDAuMDE7XFxyXFxufVxcclxcblxcclxcbi5iYW5uZXItdHJhbnNpdGlvbi1hcHBlYXIuYmFubmVyLXRyYW5zaXRpb24tYXBwZWFyLWFjdGl2ZSB7XFxyXFxuICBvcGFjaXR5OiAxO1xcclxcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAycyBlYXNlO1xcclxcbn1cXHJcXG5cXHJcXG4uYmFubmVyLXRyYW5zaXRpb24tbGVhdmUge1xcclxcbiAgb3BhY2l0eTogMTtcXHJcXG59XFxyXFxuXFxyXFxuLmJhbm5lci10cmFuc2l0aW9uLWxlYXZlLmJhbm5lci10cmFuc2l0aW9uLWxlYXZlLWFjdGl2ZSB7XFxyXFxuICBvcGFjaXR5OiAwLjAxO1xcclxcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAycyBlYXNlO1xcclxcbn1cXHJcXG5cIiwgXCJcIl0pO1xuLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHVzZVNvdXJjZU1hcCkge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCk7XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIHJldHVybiBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoY29udGVudCwgXCJ9XCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKCcnKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIChtb2R1bGVzLCBtZWRpYVF1ZXJ5LCBkZWR1cGUpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsICcnXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgICAgdmFyIGlkID0gdGhpc1tpXVswXTtcblxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBtb2R1bGVzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfaV0pO1xuXG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRpbnVlXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWFRdWVyeSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWFRdWVyeTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzJdID0gXCJcIi5jb25jYXQobWVkaWFRdWVyeSwgXCIgYW5kIFwiKS5jb25jYXQoaXRlbVsyXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gbGlzdDtcbn07XG5cbmZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXSB8fCAnJzsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG5cbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgaWYgKHVzZVNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gdG9Db21tZW50KGNzc01hcHBpbmcpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgJycpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKCdcXG4nKTtcbn0gLy8gQWRhcHRlZCBmcm9tIGNvbnZlcnQtc291cmNlLW1hcCAoTUlUKVxuXG5cbmZ1bmN0aW9uIHRvQ29tbWVudChzb3VyY2VNYXApIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpO1xuICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gIHJldHVybiBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG59IiwiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xNC4wXG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGc9NjAxMDM7ZXhwb3J0cy5GcmFnbWVudD02MDEwNztpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yKXt2YXIgaD1TeW1ib2wuZm9yO2c9aChcInJlYWN0LmVsZW1lbnRcIik7ZXhwb3J0cy5GcmFnbWVudD1oKFwicmVhY3QuZnJhZ21lbnRcIil9dmFyIG09Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsayl7dmFyIGIsZD17fSxlPW51bGwsbD1udWxsO3ZvaWQgMCE9PWsmJihlPVwiXCIrayk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYobD1hLnJlZik7Zm9yKGIgaW4gYSluLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6Zyx0eXBlOmMsa2V5OmUscmVmOmwscHJvcHM6ZCxfb3duZXI6bS5jdXJyZW50fX1leHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
package/package.json CHANGED
@@ -1,17 +1,13 @@
1
1
  {
2
2
  "name": "react-js-banner",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "React JS Banner component customizable with auto hide option",
5
5
  "main": "build/index.js",
6
6
  "peerDependencies": {
7
- "react": "^16.0.0"
7
+ "react": "^16.8.0"
8
8
  },
9
9
  "dependencies": {
10
- "@babel/polyfill": "^7.8.7",
11
- "babel-preset-react": "^6.24.1",
12
- "core-js": "^3.36.1",
13
- "react": "^16.0.0",
14
- "regenerator-runtime": "^0.14.1"
10
+
15
11
  },
16
12
  "scripts": {
17
13
  "start": "webpack --watch",
@@ -22,20 +18,20 @@
22
18
  "email": "jciccio@gmail.com"
23
19
  },
24
20
  "devDependencies": {
25
- "@babel/core": "^7.8.7",
26
- "@babel/plugin-proposal-class-properties": "^7.8.3",
27
- "@babel/preset-env": "^7.8.7",
28
- "@babel/preset-react": "^7.24.1",
29
- "babel-loader": "^9.1.3",
30
- "css-loader": "^6.10.0",
21
+ "@babel/core": "^7.13.14",
22
+ "@babel/plugin-proposal-class-properties": "^7.13.0",
23
+ "@babel/preset-env": "^7.13.12",
24
+ "@babel/preset-react": "^7.13.13",
25
+ "babel-loader": "^8.2.2",
26
+ "css-loader": "^5.2.0",
31
27
  "eslint": "^6.8.0",
32
- "eslint-config-airbnb-base": "^14.0.0",
33
- "eslint-plugin-import": "^2.20.1",
34
- "eslint-plugin-react": "^7.19.0",
35
- "react-dom": "^16.6.3",
36
- "style-loader": "^1.0.1",
37
- "webpack": "^5.9.0",
38
- "webpack-cli": "^4.2.0"
28
+ "html-loader": "^2.1.2",
29
+ "html-webpack-plugin": "^5.3.1",
30
+ "react": "^16.14.0",
31
+ "react-dom": "^16.14.0",
32
+ "style-loader": "^3.3.4",
33
+ "webpack": "^5.91.0",
34
+ "webpack-cli": "^5.1.4"
39
35
  },
40
36
  "repository": {
41
37
  "type": "git",
package/webpack.config.js CHANGED
@@ -1,12 +1,12 @@
1
- var path = require('path');
1
+ const path = require('path');
2
+
2
3
  module.exports = {
3
- mode: 'production',
4
4
  entry: './src/index.js',
5
+ mode: 'development',
5
6
  output: {
6
7
  path: path.resolve(__dirname, 'build'),
7
8
  filename: 'index.js',
8
9
  libraryTarget: 'commonjs2',
9
-
10
10
  },
11
11
  module: {
12
12
  rules: [
@@ -18,6 +18,14 @@ module.exports = {
18
18
  loader: 'babel-loader'
19
19
  }
20
20
  },
21
+ {
22
+ test:/\.html$/i,
23
+ use: [
24
+ {
25
+ loader: 'html-loader'
26
+ }
27
+ ]
28
+ },
21
29
  {
22
30
  test: /\.css$/,
23
31
  include: path.resolve(__dirname, 'src'),
@@ -26,7 +34,8 @@ module.exports = {
26
34
  }
27
35
  ]
28
36
  },
29
- externals: {
30
- 'react': 'commonjs react' // this line is just to use the React dependency of our parent-testing-project instead of using our own React.
31
- }
37
+ resolve: {
38
+ extensions: [".js",".jsx", '.json']
39
+ },
40
+ devtool: 'inline-source-map'
32
41
  };
@@ -1 +0,0 @@
1
- /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */