UNPKG

aem-core-components-contributions-react-core

Version:
2 lines 32.9 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.cqCoreComponents=t():e.cqCoreComponents=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var s=t[r]={i:r,l:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.l=!0,s.exports}return 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 s in e)n.d(r,s,function(t){return e[t]}.bind(null,s));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=18)}({0:function(e,t){e.exports=require("react")},1:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0),s=n.n(r);class o extends r.Component{render(){const e=(null!=this.props.componentTitle&&this.props.componentTitle.length>0?this.props.componentTitle+" - ":"")+(null!=this.props.emptyTextAppend?this.props.emptyTextAppend:o.DEFAULT_EMPTY_TEXT_LABEL);return this.renderPlaceHolder(e)}renderPlaceHolder(e){return s.a.createElement("div",{className:"cq-placeholder"+(null!=this.props.classAppend?" "+this.props.classAppend:"")},e)}}o.DEFAULT_EMPTY_TEXT_LABEL="Please configure the component";class i extends s.a.Component{constructor(e,t,n){super(e),this.baseCssCls=t,this.emptyPlaceHolderText=n}__hidePlaceHolder(){return this.props.hidePlaceHolder}__renderPlaceHolder(e,t){return s.a.createElement(o,{emptyTextAppend:t,componentTitle:e})}render(){const e=this.isEmpty();return s.a.createElement(s.a.Fragment,null,!e&&this.renderComponent(),e&&this.props.isInEditor&&!this.__hidePlaceHolder()&&this.__renderPlaceHolder(this.emptyPlaceHolderText))}}i.defaultProps={hidePlaceHolder:!1,isInEditor:!1}},18:function(e,t,n){e.exports=n(9)},2:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0),s=n.n(r),o=n(4);const i=e=>{const{to:t,isRouted:n,...r}=e;if(void 0===t)return s.a.createElement("a",Object.assign({href:"#"},e));return/^https?:\/\//.test(t)||!n?s.a.createElement("a",Object.assign({href:t},e)):s.a.createElement(o.Link,Object.assign({},r,{to:t}))}},4:function(e,t){e.exports=require("react-router-dom")},9:function(e,t,n){"use strict";n.r(t),n.d(t,"ButtonV1IsEmptyFn",(function(){return l})),n.d(t,"ButtonV1",(function(){return a}));var r=n(0),s=n.n(r),o=n(1),i=n(2);function l(e){return null==e.text||0===e.text.length}class a extends o.a{constructor(e){super(e,"cmp-button","ButtonV1"),this.handleOnClick=this.handleOnClick.bind(this)}handleOnClick(e){this.props.handleOnClick&&this.props.handleOnClick(e)}getContent(){return s.a.createElement(s.a.Fragment,null,this.props.icon&&s.a.createElement("span",{className:`${this.baseCssCls}__icon ${this.baseCssCls}__icon--${this.props.icon}`}),s.a.createElement("span",{className:this.baseCssCls+"__text"},this.props.text))}isEmpty(){return l(this.props)}renderComponent(){const e=!!this.props.link;let t=this.generateAttributes(e);return e?s.a.createElement(i.a,Object.assign({isRouted:this.props.routed,to:this.props.link},t,{children:this.getContent()})):s.a.createElement("button",Object.assign({},t),this.getContent())}generateAttributes(e){let t={className:this.baseCssCls,onClick:this.handleOnClick};return e&&(t["aria-label"]=this.props.ariaLabel,t.href=this.props.link),t}}a.defaultProps={isInEditor:!1,hidePlaceHolder:!1}}})})); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvZXh0ZXJuYWwgXCJyZWFjdFwiIiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tbW9uL3BsYWNlaG9sZGVyLnRzeCIsIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzLy4vc3JjL0Fic3RyYWN0Q29yZUNvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vY3FDb3JlQ29tcG9uZW50cy8uL3NyYy9yb3V0aW5nL1JvdXRlZExpbmsudHN4Iiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvZXh0ZXJuYWwgXCJyZWFjdC1yb3V0ZXItZG9tXCIiLCJ3ZWJwYWNrOi8vY3FDb3JlQ29tcG9uZW50cy8uL3NyYy9hdXRob3JpbmcvYnV0dG9uL3YxL0J1dHRvblYxLnRzeCJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJyZXF1aXJlIiwiZW1wdHlUZXh0IiwicHJvcHMiLCJjb21wb25lbnRUaXRsZSIsImxlbmd0aCIsImVtcHR5VGV4dEFwcGVuZCIsIkRFRkFVTFRfRU1QVFlfVEVYVF9MQUJFTCIsInJlbmRlclBsYWNlSG9sZGVyIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNsYXNzQXBwZW5kIiwiQ29tcG9uZW50IiwiYmFzZUNzc0NscyIsImVtcHR5UGxhY2VIb2xkZXJUZXh0Iiwic3VwZXIiLCJoaWRlUGxhY2VIb2xkZXIiLCJ0aXRsZSIsImlzRW1wdHkiLCJGcmFnbWVudCIsInJlbmRlckNvbXBvbmVudCIsImlzSW5FZGl0b3IiLCJfX2hpZGVQbGFjZUhvbGRlciIsIl9fcmVuZGVyUGxhY2VIb2xkZXIiLCJkZWZhdWx0UHJvcHMiLCJSb3V0ZWRMaW5rIiwidG8iLCJpc1JvdXRlZCIsIm90aGVyUHJvcHMiLCJ1bmRlZmluZWQiLCJhc3NpZ24iLCJocmVmIiwidGVzdCIsIkJ1dHRvblYxSXNFbXB0eUZuIiwidGV4dCIsIkJ1dHRvblYxIiwiaGFuZGxlT25DbGljayIsImV2ZW50IiwiaWNvbiIsImlzTGluayIsImxpbmsiLCJnZW5lcmF0ZUF0dHJpYnV0ZXMiLCJyb3V0ZWQiLCJjaGlsZHJlbiIsImdldENvbnRlbnQiLCJvbkNsaWNrIiwiYXJpYUxhYmVsIl0sIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsSUFDUSxtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLEdBQUlILEdBQ2UsaUJBQVpDLFFBQ2RBLFFBQTBCLGlCQUFJRCxJQUU5QkQsRUFBdUIsaUJBQUlDLElBUjdCLENBU21CLG9CQUFUSyxLQUF1QkEsS0FBT0MsTUFBTSxXQUM5QyxPLFlDVEUsSUFBSUMsRUFBbUIsR0FHdkIsU0FBU0MsRUFBb0JDLEdBRzVCLEdBQUdGLEVBQWlCRSxHQUNuQixPQUFPRixFQUFpQkUsR0FBVVIsUUFHbkMsSUFBSUMsRUFBU0ssRUFBaUJFLEdBQVksQ0FDekNDLEVBQUdELEVBQ0hFLEdB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T0FFbEMsa0JBQ0ksTUFBTW9DLElBQVkxRSxLQUFLc0MsTUFBTXFDLEtBQzdCLElBQUlyQyxFQUFRdEMsS0FBSzRFLG1CQUFtQkYsR0FDcEMsT0FBSUEsRUFDTyxJQUFNOUIsY0FBYyxJQUFZOUIsT0FBT21ELE9BQU8sQ0FBRUgsU0FBVTlELEtBQUtzQyxNQUFNdUMsT0FBUWhCLEdBQUk3RCxLQUFLc0MsTUFBTXFDLE1BQVFyQyxFQUFPLENBQUV3QyxTQUFVOUUsS0FBSytFLGdCQUc1SCxJQUFNbkMsY0FBYyxTQUFVOUIsT0FBT21ELE9BQU8sR0FBSTNCLEdBQVF0QyxLQUFLK0UsY0FHNUUsbUJBQW1CTCxHQUNmLElBQUlwQyxFQUFRLENBQ1JPLFVBQVc3QyxLQUFLZ0QsV0FDaEJnQyxRQUFTaEYsS0FBS3VFLGVBTWxCLE9BSklHLElBQ0FwQyxFQUFNLGNBQWdCdEMsS0FBS3NDLE1BQU0yQyxVQUNqQzNDLEVBQVksS0FBSXRDLEtBQUtzQyxNQUFNcUMsTUFFeEJyQyxHQUdmZ0MsRUFBU1gsYUFBZSxDQUNwQkgsWUFBWSxFQUNaTCxpQkFBaUIiLCJmaWxlIjoiQnV0dG9uVjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJjcUNvcmVDb21wb25lbnRzXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImNxQ29yZUNvbXBvbmVudHNcIl0gPSBmYWN0b3J5KCk7XG59KSh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDE4KTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIi8qXG4gKiAgQ29weXJpZ2h0IDIwMjAgQWRvYmVcbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5leHBvcnQgY2xhc3MgRWRpdG9yUGxhY2VIb2xkZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgcGFydDEgPSAodGhpcy5wcm9wcy5jb21wb25lbnRUaXRsZSAhPSBudWxsICYmIHRoaXMucHJvcHMuY29tcG9uZW50VGl0bGUubGVuZ3RoID4gMCkgPyB0aGlzLnByb3BzLmNvbXBvbmVudFRpdGxlICsgJyAtICcgOiAnJztcbiAgICAgICAgY29uc3QgcGFydDIgPSAodGhpcy5wcm9wcy5lbXB0eVRleHRBcHBlbmQgIT0gbnVsbCkgPyB0aGlzLnByb3BzLmVtcHR5VGV4dEFwcGVuZCA6IEVkaXRvclBsYWNlSG9sZGVyLkRFRkFVTFRfRU1QVFlfVEVYVF9MQUJFTDtcbiAgICAgICAgY29uc3QgZW1wdHlUZXh0ID0gcGFydDEgKyBwYXJ0MjtcbiAgICAgICAgcmV0dXJuICh0aGlzLnJlbmRlclBsYWNlSG9sZGVyKGVtcHR5VGV4dCkpO1xuICAgIH1cbiAgICByZW5kZXJQbGFjZUhvbGRlcihlbXB0eVRleHQpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdjcS1wbGFjZWhvbGRlcicgKyAodGhpcy5wcm9wcy5jbGFzc0FwcGVuZCAhPSBudWxsID8gJyAnICsgdGhpcy5wcm9wcy5jbGFzc0FwcGVuZCA6ICcnKSB9LCBlbXB0eVRleHQpO1xuICAgIH1cbn1cbkVkaXRvclBsYWNlSG9sZGVyLkRFRkFVTFRfRU1QVFlfVEVYVF9MQUJFTCA9ICdQbGVhc2UgY29uZmlndXJlIHRoZSBjb21wb25lbnQnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY0d4aFkyVm9iMnhrWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUp3YkdGalpXaHZiR1JsY2k1MGMzZ2lYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRMEU3T3pzN096czdPenM3T3pzN08wZEJZMGM3UVVGRFNDeFBRVUZQTEV0QlFVc3NSVUZCUlN4RlFVRkRMRk5CUVZNc1JVRkJReXhOUVVGTkxFOUJRVThzUTBGQlF6dEJRVkYyUXl4TlFVRk5MRTlCUVU4c2FVSkJRV3RDTEZOQlFWRXNVMEZCWjBNN1NVRkpia1VzVFVGQlRUdFJRVU5HTEUxQlFVMHNTMEZCU3l4SFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eGpRVUZqTEVsQlFVa3NTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zWTBGQll5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVVVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4alFVRmpMRWRCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdVVUZETjBrc1RVRkJUU3hMUVVGTExFZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMR1ZCUVdVc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eERRVUZETEdsQ1FVRnBRaXhEUVVGRExIZENRVUYzUWl4RFFVRkRPMUZCUTNSSkxFMUJRVTBzVTBGQlV5eEhRVUZITEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkZhRU1zVDBGQlR5eERRVU5JTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZEY0VNc1EwRkJRVHRKUVVOTUxFTkJRVU03U1VGSFJDeHBRa0ZCYVVJc1EwRkJReXhUUVVGcFFqdFJRVU12UWl4UFFVRlBMRFpDUVVOSUxGTkJRVk1zUlVGQlJTeG5Ra0ZCWjBJc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4SlFVRkpMRWxCUVVrc1EwRkJRU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZEYUVjc1UwRkJVeXhEUVVOU0xFTkJRVU03U1VGRFdDeERRVUZET3p0QlFXeENUU3d3UTBGQmQwSXNSMEZCVnl4blEwRkJaME1zUTBGQlF5SjkiLCIvKlxuICogIENvcHlyaWdodCAyMDIwIEFkb2JlXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBFZGl0b3JQbGFjZUhvbGRlciB9IGZyb20gXCIuL2NvbW1vbi9wbGFjZWhvbGRlclwiO1xuLyoqXG4gKiBBYnN0cmFjdENvcmVDb21wb25lbnQgLSBwcm92aWRlcyBhYnN0cmFjdGlvbiBhbmQgaGVscGVyIG1ldGhvZHMgdG8gc2hvdyBhIHBsYWNlaG9sZGVyIGlmIHRoZSBjb21wb25lbnQgaXMgZW1wdHkgYW5kIGF1dGhvciBtb2RlIGlzIG9uLlxuICovXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RDb3JlQ29tcG9uZW50IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBCYXNlIENvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHByb3BzIGNvbXBvbmVudCBwcm9wZXJ0aWVzXG4gICAgICogQHBhcmFtIGJhc2VDc3NDbHMgdGhlIGJhc2UgQkVNIGNzcyBjbGFzcyB0byBiZSB1c2VkIGZvciB0aGUgY29tcG9uZW50XG4gICAgICogQHBhcmFtIGVtcHR5UGxhY2VIb2xkZXJUZXh0IGVtcHR5IHBsYWNlaG9sZGVyIGxhYmVsIGZvciB3aGVuIHRoZSBjb21wb25lbnQgbmVlZHMgdG8gYmUgY29uZmlndXJlZCBpbiBhdXRob3IgbW9kZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb3BzLCBiYXNlQ3NzQ2xzLCBlbXB0eVBsYWNlSG9sZGVyVGV4dCkge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIHRoaXMuYmFzZUNzc0NscyA9IGJhc2VDc3NDbHM7XG4gICAgICAgIHRoaXMuZW1wdHlQbGFjZUhvbGRlclRleHQgPSBlbXB0eVBsYWNlSG9sZGVyVGV4dDtcbiAgICB9XG4gICAgX19oaWRlUGxhY2VIb2xkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmhpZGVQbGFjZUhvbGRlcjtcbiAgICB9XG4gICAgX19yZW5kZXJQbGFjZUhvbGRlcih0aXRsZSwgZW1wdHlUZXh0KSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChFZGl0b3JQbGFjZUhvbGRlciwgeyBlbXB0eVRleHRBcHBlbmQ6IGVtcHR5VGV4dCwgY29tcG9uZW50VGl0bGU6IHRpdGxlIH0pKTtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCBpc0VtcHR5ID0gdGhpcy5pc0VtcHR5KCk7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgICFpc0VtcHR5ICYmXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnQoKSxcbiAgICAgICAgICAgIChpc0VtcHR5ICYmIHRoaXMucHJvcHMuaXNJbkVkaXRvciAmJiAhdGhpcy5fX2hpZGVQbGFjZUhvbGRlcigpKSAmJiB0aGlzLl9fcmVuZGVyUGxhY2VIb2xkZXIodGhpcy5lbXB0eVBsYWNlSG9sZGVyVGV4dCkpKTtcbiAgICB9XG59XG5BYnN0cmFjdENvcmVDb21wb25lbnQuZGVmYXVsdFByb3BzID0ge1xuICAgIGhpZGVQbGFjZUhvbGRlcjogZmFsc2UsXG4gICAgaXNJbkVkaXRvcjogZmFsc2Vcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lRV0p6ZEhKaFkzUkRiM0psUTI5dGNHOXVaVzUwTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lRV0p6ZEhKaFkzUkRiM0psUTI5dGNHOXVaVzUwTG5SemVDSmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRVHM3T3pzN096czdPenM3T3pzN1IwRmpSenRCUVVWSUxFOUJRVThzUzBGQlN5eE5RVUZOTEU5QlFVOHNRMEZCUXp0QlFVTXhRaXhQUVVGUExFVkJRVU1zYVVKQlFXbENMRVZCUVVNc1RVRkJUU3h6UWtGQmMwSXNRMEZCUXp0QlFWbDJSRHM3UjBGRlJ6dEJRVU5JTEUxQlFVMHNUMEZCWjBJc2NVSkJRVEJHTEZOQlFWRXNTMEZCU3l4RFFVRkRMRk5CUVhOQ08wbEJWV2hLT3pzN096dFBRVXRITzBsQlEwZ3NXVUZCYzBJc1MwRkJWeXhGUVVGRExGVkJRV2xDTEVWQlFVTXNiMEpCUVRKQ08xRkJRek5GTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVOaUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NWVUZCVlN4RFFVRkRPMUZCUXpkQ0xFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1IwRkJSeXh2UWtGQmIwSXNRMEZCUXp0SlFVTnlSQ3hEUVVGRE8wbEJXVThzYVVKQlFXbENPMUZCUTNKQ0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4bFFVRmxMRU5CUVVNN1NVRkRkRU1zUTBGQlF6dEpRVVZQTEcxQ1FVRnRRaXhEUVVGRExFdEJRV0VzUlVGQlJTeFRRVUZwUWp0UlFVTjRSQ3hQUVVGTkxFTkJRMFlzYjBKQlFVTXNhVUpCUVdsQ0xFbEJRMlFzWlVGQlpTeEZRVUZGTEZOQlFWTXNSVUZETVVJc1kwRkJZeXhGUVVGRkxFdEJRVXNzUjBGRGRrSXNRMEZEVEN4RFFVRkJPMGxCUTB3c1EwRkJRenRKUVVWRUxFMUJRVTA3VVVGRFJpeE5RVUZOTEU5QlFVOHNSMEZCVnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03VVVGRmRrTXNUMEZCVHl4RFFVTklPMWxCUTAwc1EwRkJReXhQUVVGUE8yZENRVU5PTEVsQlFVa3NRMEZCUXl4bFFVRmxMRVZCUVVVN1dVRkhkRUlzUTBGQlF5eFBRVUZQTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhWUVVGVkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zUTBGRk0wZ3NRMEZEVGl4RFFVRkJPMGxCUTB3c1EwRkJRenM3UVVGNFJHRXNhME5CUVZrc1IwRkJSenRKUVVONlFpeGxRVUZsTEVWQlFVVXNTMEZCU3p0SlFVTjBRaXhWUVVGVkxFVkJRVVVzUzBGQlN6dERRVU53UWl4RFFVRkRJbjA9IiwiLypcbiAqICBDb3B5cmlnaHQgMjAyMCBBZG9iZVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExpbmsgYXMgUm91dGVyTGluayB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuZXhwb3J0IGNvbnN0IFJvdXRlZExpbmsgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHRvLCBpc1JvdXRlZCwgLi4ub3RoZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgaWYgKHRvID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIE9iamVjdC5hc3NpZ24oeyBocmVmOiAnIycgfSwgcHJvcHMpKTtcbiAgICB9XG4gICAgY29uc3QgaXNFeHRlcm5hbCA9IC9eaHR0cHM/OlxcL1xcLy8udGVzdCh0byk7XG4gICAgcmV0dXJuIGlzRXh0ZXJuYWwgfHwgIWlzUm91dGVkID9cbiAgICAgICAgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIE9iamVjdC5hc3NpZ24oeyBocmVmOiB0byB9LCBwcm9wcykpKVxuICAgICAgICA6XG4gICAgICAgICAgICAoUmVhY3QuY3JlYXRlRWxlbWVudChSb3V0ZXJMaW5rLCBPYmplY3QuYXNzaWduKHt9LCBvdGhlclByb3BzLCB7IHRvOiB0byB9KSkpO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVVtOTFkR1ZrVEdsdWF5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWxKdmRYUmxaRXhwYm1zdWRITjRJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdPenM3T3pzN096dEhRV05ITzBGQlJVZ3NUMEZCVHl4TFFVRkxMRTFCUVUwc1QwRkJUeXhEUVVGRE8wRkJRekZDTEU5QlFVOHNSVUZCUXl4SlFVRkpMRWxCUVVrc1ZVRkJWU3hGUVVGRExFMUJRVTBzYTBKQlFXdENMRU5CUVVNN1FVRlBjRVFzVFVGQlRTeERRVUZETEUxQlFVMHNWVUZCVlN4SFFVRkhMRU5CUVVNc1MwRkJaU3hGUVVGRkxFVkJRVVU3U1VGRE1VTXNUVUZCVFN4RlFVRkRMRVZCUVVVc1JVRkJSU3hSUVVGUkxFVkJRVVVzUjBGQlJ5eFZRVUZWTEVWQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1NVRkZOVU1zU1VGQlJ5eEZRVUZGTEV0QlFVc3NVMEZCVXl4RlFVRkRPMUZCUTJoQ0xFOUJRVThzZVVOQlFVY3NTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkRXQ3hMUVVGTExFVkJRMWdzUTBGQlF6dExRVU5PTzBsQlEwUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVVXpReXhQUVVGUExGVkJRVlVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUVN4RFFVRkRPMUZCUXpOQ0xFTkJRVU1zZVVOQlEwY3NTVUZCU1N4RlFVRkZMRVZCUVVVc1NVRkRTaXhMUVVGTExFVkJRMWdzUTBGQlF6dFJRVU5JTEVOQlFVTTdXVUZEUkN4RFFVRkZMRzlDUVVGRExGVkJRVlVzYjBKQlFVc3NWVUZCVlN4SlFVTmtMRVZCUVVVc1JVRkJSU3hGUVVGRkxFbEJRMnhDTEVOQlFVTXNRMEZCUVR0QlFVTllMRU5CUVVNc1EwRkJReUo5IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3Qtcm91dGVyLWRvbVwiKTsiLCIvKlxuICogIENvcHlyaWdodCAyMDIwIEFkb2JlXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb3JlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uLy4uL0Fic3RyYWN0Q29yZUNvbXBvbmVudFwiO1xuaW1wb3J0IHsgUm91dGVkTGluayB9IGZyb20gXCIuLi8uLi8uLi9yb3V0aW5nL1JvdXRlZExpbmtcIjtcbmV4cG9ydCBmdW5jdGlvbiBCdXR0b25WMUlzRW1wdHlGbihwcm9wcykge1xuICAgIHJldHVybiBwcm9wcy50ZXh0ID09IG51bGwgfHwgcHJvcHMudGV4dC5sZW5ndGggPT09IDA7XG59XG5leHBvcnQgY2xhc3MgQnV0dG9uVjEgZXh0ZW5kcyBBYnN0cmFjdENvcmVDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzLCBcImNtcC1idXR0b25cIiwgXCJCdXR0b25WMVwiKTtcbiAgICAgICAgdGhpcy5oYW5kbGVPbkNsaWNrID0gdGhpcy5oYW5kbGVPbkNsaWNrLmJpbmQodGhpcyk7XG4gICAgfVxuICAgIGhhbmRsZU9uQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuaGFuZGxlT25DbGljaykge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5oYW5kbGVPbkNsaWNrKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRDb250ZW50KCkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICB0aGlzLnByb3BzLmljb24gJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGAke3RoaXMuYmFzZUNzc0Nsc31fX2ljb24gJHt0aGlzLmJhc2VDc3NDbHN9X19pY29uLS0ke3RoaXMucHJvcHMuaWNvbn1gIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IHRoaXMuYmFzZUNzc0NscyArICdfX3RleHQnIH0sIHRoaXMucHJvcHMudGV4dCkpKTtcbiAgICB9XG4gICAgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIEJ1dHRvblYxSXNFbXB0eUZuKHRoaXMucHJvcHMpO1xuICAgIH1cbiAgICByZW5kZXJDb21wb25lbnQoKSB7XG4gICAgICAgIGNvbnN0IGlzTGluayA9ICghIXRoaXMucHJvcHMubGluayk7XG4gICAgICAgIGxldCBwcm9wcyA9IHRoaXMuZ2VuZXJhdGVBdHRyaWJ1dGVzKGlzTGluayk7XG4gICAgICAgIGlmIChpc0xpbmspIHtcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJvdXRlZExpbmssIE9iamVjdC5hc3NpZ24oeyBpc1JvdXRlZDogdGhpcy5wcm9wcy5yb3V0ZWQsIHRvOiB0aGlzLnByb3BzLmxpbmsgfSwgcHJvcHMsIHsgY2hpbGRyZW46IHRoaXMuZ2V0Q29udGVudCgpIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSwgdGhpcy5nZXRDb250ZW50KCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdlbmVyYXRlQXR0cmlidXRlcyhpc0xpbmspIHtcbiAgICAgICAgbGV0IHByb3BzID0ge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLmJhc2VDc3NDbHMsXG4gICAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZU9uQ2xpY2tcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGlzTGluaykge1xuICAgICAgICAgICAgcHJvcHNbJ2FyaWEtbGFiZWwnXSA9IHRoaXMucHJvcHMuYXJpYUxhYmVsO1xuICAgICAgICAgICAgcHJvcHNbJ2hyZWYnXSA9IHRoaXMucHJvcHMubGluaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgfVxufVxuQnV0dG9uVjEuZGVmYXVsdFByb3BzID0ge1xuICAgIGlzSW5FZGl0b3I6IGZhbHNlLFxuICAgIGhpZGVQbGFjZUhvbGRlcjogZmFsc2Vcbn07XG47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lRblYwZEc5dVZqRXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKQ2RYUjBiMjVXTVM1MGMzZ2lYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3T3pzN096czdPenM3T3pzN08wZEJZMGM3UVVGRlNDeFBRVUZQTEV0QlFXMUNMRTFCUVUwc1QwRkJUeXhEUVVGRE8wRkJRM2hETEU5QlFVOHNSVUZCUXl4eFFrRkJjVUlzUlVGQmNVSXNUVUZCVFN4blEwRkJaME1zUTBGQlF6dEJRVVY2Uml4UFFVRlBMRVZCUVVNc1ZVRkJWU3hGUVVGRExFMUJRVTBzTmtKQlFUWkNMRU5CUVVNN1FVRlZka1FzVFVGQlRTeFZRVUZWTEdsQ1FVRnBRaXhEUVVGRExFdEJRVzFDTzBsQlEycEVMRTlCUVU4c1MwRkJTeXhEUVVGRExFbEJRVWtzU1VGQlNTeEpRVUZKTEVsQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzUTBGQlF5eERRVUZETzBGQlEzcEVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxFOUJRVThzVVVGQmQwVXNVMEZCVVN4eFFrRkJiVU03U1VGUE5VZ3NXVUZCV1N4TFFVRlhPMUZCUTI1Q0xFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNXVUZCV1N4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRM1pETEVsQlFVa3NRMEZCUXl4aFFVRmhMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRka1FzUTBGQlF6dEpRVVZFTEdGQlFXRXNRMEZCUXl4TFFVRm5RanRSUVVNeFFpeEpRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1lVRkJZU3hGUVVGRE8xbEJRM2hDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1lVRkJZU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFOQlEyNURPMGxCUTB3c1EwRkJRenRKUVVORUxGVkJRVlU3VVVGRFRpeFBRVUZQTEVOQlEwZzdXVUZEVFN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzU1VGQlNTdzRRa0ZCVFN4VFFVRlRMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeFZRVUZWTEVsQlFVa3NRMEZCUXl4VlFVRlZMRmRCUVZjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCVXp0WlFVTjBTQ3c0UWtGQlRTeFRRVUZUTEVWQlFVVXNTVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhSUVVGUkxFbEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVZFc1EwRkRkRVVzUTBGRFRpeERRVUZETzBsQlEwNHNRMEZCUXp0SlFVVkVMRTlCUVU4N1VVRkRTQ3hQUVVGUExHbENRVUZwUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU42UXl4RFFVRkRPMGxCUlVRc1pVRkJaVHRSUVVWWUxFMUJRVTBzVFVGQlRTeEhRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEY0VNc1NVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlJUVkRMRWxCUVVjc1RVRkJUU3hGUVVGRE8xbEJRMDRzVDBGQlR5eHZRa0ZCUXl4VlFVRlZMR3RDUVVGRExGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRWxCUVUwc1MwRkJTeXhKUVVGRkxGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZMRWxCUVVrc1EwRkJRVHRUUVVOc1NEdGhRVUZKTzFsQlEwUXNUMEZCVHl4blJFRkJXU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRlZMRU5CUVVFN1UwRkRla1E3U1VGRFRDeERRVUZETzBsQlJVUXNhMEpCUVd0Q0xFTkJRVU1zVFVGQlpUdFJRVU01UWl4SlFVRkpMRXRCUVVzc1IwRkJVVHRaUVVOaUxGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlR0WlFVTXhRaXhQUVVGUExFVkJRVVVzU1VGQlNTeERRVUZETEdGQlFXRTdVMEZET1VJc1EwRkJRenRSUVVWR0xFbEJRVWtzVFVGQlRTeEZRVUZGTzFsQlExSXNTMEZCU3l4RFFVRkRMRmxCUVZrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRPMWxCUXpORExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF6dFRRVU51UXp0UlFVTkVMRTlCUVU4c1MwRkJTeXhEUVVGRE8wbEJRMnBDTEVOQlFVTTdPMEZCYmtSaExIRkNRVUZaTEVkQlFVYzdTVUZEZWtJc1ZVRkJWU3hGUVVGRkxFdEJRVXM3U1VGRGFrSXNaVUZCWlN4RlFVRkZMRXRCUVVzN1EwRkRla0lzUTBGQlF6dEJRV2xFVEN4RFFVRkRJbjA9Il0sInNvdXJjZVJvb3QiOiIifQ==