-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path1896.bed31806.iframe.bundle.js
3 lines (3 loc) · 70.4 KB
/
1896.bed31806.iframe.bundle.js
1
2
3
/*! For license information please see 1896.bed31806.iframe.bundle.js.LICENSE.txt */
(self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[1896,4753,7134,9515],{"./node_modules/react-loading-skeleton/dist/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";var _excluded=["count","wrapper","className","containerClassName","containerTestId","circle","style"],_excluded2=["children"];function _slicedToArray(r,e){return function _arrayWithHoles(r){if(Array.isArray(r))return r}(r)||function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t.return&&(u=t.return(),Object(u)!==u))return}finally{if(o)throw n}}return a}}(r,e)||function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}(r,e)||function _nonIterableRest(){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 _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach((function(r){_defineProperty(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function _defineProperty(e,r,t){return(r=function _toPropertyKey(t){var i=function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==_typeof(i)?i:i+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _objectWithoutProperties(e,t){if(null==e)return{};var o,r,i=function _objectWithoutPropertiesLoose(r,e){if(null==r)return{};var t={};for(var n in r)if({}.hasOwnProperty.call(r,n)){if(e.includes(n))continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)o=s[r],t.includes(o)||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}function _typeof(o){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _interopDefaultLegacy(e){return e&&"object"===_typeof(e)&&"default"in e?e:{default:e}}Object.defineProperty(exports,"__esModule",{value:!0});var React__default=_interopDefaultLegacy(__webpack_require__("./node_modules/react/index.js")),SkeletonThemeContext=React__default.default.createContext({}),defaultEnableAnimation=!0;exports.SkeletonTheme=function SkeletonTheme(_ref3){var children=_ref3.children,styleOptions=_objectWithoutProperties(_ref3,_excluded2);return React__default.default.createElement(SkeletonThemeContext.Provider,{value:styleOptions},children)},exports.default=function Skeleton(_ref2){for(var _a,_b,_c,_ref2$count=_ref2.count,count=void 0===_ref2$count?1:_ref2$count,Wrapper=_ref2.wrapper,customClassName=_ref2.className,containerClassName=_ref2.containerClassName,containerTestId=_ref2.containerTestId,_ref2$circle=_ref2.circle,circle=void 0!==_ref2$circle&&_ref2$circle,styleProp=_ref2.style,originalPropsStyleOptions=_objectWithoutProperties(_ref2,_excluded),contextStyleOptions=React__default.default.useContext(SkeletonThemeContext),propsStyleOptions=_objectSpread({},originalPropsStyleOptions),_i=0,_Object$entries=Object.entries(originalPropsStyleOptions);_i<_Object$entries.length;_i++){var _Object$entries$_i=_slicedToArray(_Object$entries[_i],2),key=_Object$entries$_i[0];void 0===_Object$entries$_i[1]&&delete propsStyleOptions[key]}var styleOptions=_objectSpread(_objectSpread(_objectSpread({},contextStyleOptions),propsStyleOptions),{},{circle}),style=_objectSpread(_objectSpread({},styleProp),function styleOptionsToCssProperties(_ref){var baseColor=_ref.baseColor,highlightColor=_ref.highlightColor,width=_ref.width,height=_ref.height,borderRadius=_ref.borderRadius,circle=_ref.circle,direction=_ref.direction,duration=_ref.duration,_ref$enableAnimation=_ref.enableAnimation,enableAnimation=void 0===_ref$enableAnimation?defaultEnableAnimation:_ref$enableAnimation,style={};return"rtl"===direction&&(style["--animation-direction"]="reverse"),"number"==typeof duration&&(style["--animation-duration"]="".concat(duration,"s")),enableAnimation||(style["--pseudo-element-display"]="none"),"string"!=typeof width&&"number"!=typeof width||(style.width=width),"string"!=typeof height&&"number"!=typeof height||(style.height=height),"string"!=typeof borderRadius&&"number"!=typeof borderRadius||(style.borderRadius=borderRadius),circle&&(style.borderRadius="50%"),void 0!==baseColor&&(style["--base-color"]=baseColor),void 0!==highlightColor&&(style["--highlight-color"]=highlightColor),style}(styleOptions)),className="react-loading-skeleton";customClassName&&(className+=" ".concat(customClassName));for(var inline=null!==(_a=styleOptions.inline)&&void 0!==_a&&_a,elements=[],countCeil=Math.ceil(count),i=0;i<countCeil;i++){var thisStyle=style;if(countCeil>count&&i===countCeil-1){var width=null!==(_b=thisStyle.width)&&void 0!==_b?_b:"100%",fractionalPart=count%1,fractionalWidth="number"==typeof width?width*fractionalPart:"calc(".concat(width," * ").concat(fractionalPart,")");thisStyle=_objectSpread(_objectSpread({},thisStyle),{},{width:fractionalWidth})}var skeletonSpan=React__default.default.createElement("span",{className,style:thisStyle,key:i},"");inline?elements.push(skeletonSpan):elements.push(React__default.default.createElement(React__default.default.Fragment,{key:i},skeletonSpan,React__default.default.createElement("br",null)))}return React__default.default.createElement("span",{className:containerClassName,"data-testid":containerTestId,"aria-live":"polite","aria-busy":null!==(_c=styleOptions.enableAnimation)&&void 0!==_c?_c:defaultEnableAnimation},Wrapper?elements.map((function(el,i){return React__default.default.createElement(Wrapper,{key:i},el)})):elements)}},"./node_modules/classnames/index.js":(module,exports)=>{var __WEBPACK_AMD_DEFINE_RESULT__;!function(){"use strict";var hasOwn={}.hasOwnProperty;function classNames(){for(var classes=[],i=0;i<arguments.length;i++){var arg=arguments[i];if(arg){var argType=typeof arg;if("string"===argType||"number"===argType)classes.push(arg);else if(Array.isArray(arg)){if(arg.length){var inner=classNames.apply(null,arg);inner&&classes.push(inner)}}else if("object"===argType){if(arg.toString!==Object.prototype.toString&&!arg.toString.toString().includes("[native code]")){classes.push(arg.toString());continue}for(var key in arg)hasOwn.call(arg,key)&&arg[key]&&classes.push(key)}}}return classes.join(" ")}module.exports?(classNames.default=classNames,module.exports=classNames):void 0===(__WEBPACK_AMD_DEFINE_RESULT__=function(){return classNames}.apply(exports,[]))||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)}()},"./node_modules/css-loader/dist/cjs.js!./node_modules/react-loading-skeleton/dist/skeleton.css":(module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{A:()=>__WEBPACK_DEFAULT_EXPORT__});var _css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/css-loader/dist/runtime/sourceMaps.js"),_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__),_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js"),___CSS_LOADER_EXPORT___=__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__)()(_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default());___CSS_LOADER_EXPORT___.push([module.id,"@keyframes react-loading-skeleton {\n 100% {\n transform: translateX(100%);\n }\n}\n\n.react-loading-skeleton {\n --base-color: #ebebeb;\n --highlight-color: #f5f5f5;\n --animation-duration: 1.5s;\n --animation-direction: normal;\n --pseudo-element-display: block; /* Enable animation */\n\n background-color: var(--base-color);\n\n width: 100%;\n border-radius: 0.25rem;\n display: inline-flex;\n line-height: 1;\n\n position: relative;\n overflow: hidden;\n z-index: 1; /* Necessary for overflow: hidden to work correctly in Safari */\n}\n\n.react-loading-skeleton::after {\n content: ' ';\n display: var(--pseudo-element-display);\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 100%;\n background-repeat: no-repeat;\n background-image: linear-gradient(\n 90deg,\n var(--base-color),\n var(--highlight-color),\n var(--base-color)\n );\n transform: translateX(-100%);\n\n animation-name: react-loading-skeleton;\n animation-direction: var(--animation-direction);\n animation-duration: var(--animation-duration);\n animation-timing-function: ease-in-out;\n animation-iteration-count: infinite;\n}\n","",{version:3,sources:["webpack://./node_modules/react-loading-skeleton/dist/skeleton.css"],names:[],mappings:"AAAA;IACI;QACI,2BAA2B;IAC/B;AACJ;;AAEA;IACI,qBAAqB;IACrB,0BAA0B;IAC1B,0BAA0B;IAC1B,6BAA6B;IAC7B,+BAA+B,EAAE,qBAAqB;;IAEtD,mCAAmC;;IAEnC,WAAW;IACX,sBAAsB;IACtB,oBAAoB;IACpB,cAAc;;IAEd,kBAAkB;IAClB,gBAAgB;IAChB,UAAU,EAAE,+DAA+D;AAC/E;;AAEA;IACI,YAAY;IACZ,sCAAsC;IACtC,kBAAkB;IAClB,MAAM;IACN,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,4BAA4B;IAC5B;;;;;KAKC;IACD,4BAA4B;;IAE5B,sCAAsC;IACtC,+CAA+C;IAC/C,6CAA6C;IAC7C,sCAAsC;IACtC,mCAAmC;AACvC",sourcesContent:["@keyframes react-loading-skeleton {\n 100% {\n transform: translateX(100%);\n }\n}\n\n.react-loading-skeleton {\n --base-color: #ebebeb;\n --highlight-color: #f5f5f5;\n --animation-duration: 1.5s;\n --animation-direction: normal;\n --pseudo-element-display: block; /* Enable animation */\n\n background-color: var(--base-color);\n\n width: 100%;\n border-radius: 0.25rem;\n display: inline-flex;\n line-height: 1;\n\n position: relative;\n overflow: hidden;\n z-index: 1; /* Necessary for overflow: hidden to work correctly in Safari */\n}\n\n.react-loading-skeleton::after {\n content: ' ';\n display: var(--pseudo-element-display);\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 100%;\n background-repeat: no-repeat;\n background-image: linear-gradient(\n 90deg,\n var(--base-color),\n var(--highlight-color),\n var(--base-color)\n );\n transform: translateX(-100%);\n\n animation-name: react-loading-skeleton;\n animation-direction: var(--animation-direction);\n animation-duration: var(--animation-duration);\n animation-timing-function: ease-in-out;\n animation-iteration-count: infinite;\n}\n"],sourceRoot:""}]);const __WEBPACK_DEFAULT_EXPORT__=___CSS_LOADER_EXPORT___},"./node_modules/css-loader/dist/runtime/api.js":module=>{"use strict";module.exports=function(cssWithMappingToString){var list=[];return list.toString=function toString(){return this.map((function(item){var content="",needLayer=void 0!==item[5];return item[4]&&(content+="@supports (".concat(item[4],") {")),item[2]&&(content+="@media ".concat(item[2]," {")),needLayer&&(content+="@layer".concat(item[5].length>0?" ".concat(item[5]):""," {")),content+=cssWithMappingToString(item),needLayer&&(content+="}"),item[2]&&(content+="}"),item[4]&&(content+="}"),content})).join("")},list.i=function i(modules,media,dedupe,supports,layer){"string"==typeof modules&&(modules=[[null,modules,void 0]]);var alreadyImportedModules={};if(dedupe)for(var k=0;k<this.length;k++){var id=this[k][0];null!=id&&(alreadyImportedModules[id]=!0)}for(var _k=0;_k<modules.length;_k++){var item=[].concat(modules[_k]);dedupe&&alreadyImportedModules[item[0]]||(void 0!==layer&&(void 0===item[5]||(item[1]="@layer".concat(item[5].length>0?" ".concat(item[5]):""," {").concat(item[1],"}")),item[5]=layer),media&&(item[2]?(item[1]="@media ".concat(item[2]," {").concat(item[1],"}"),item[2]=media):item[2]=media),supports&&(item[4]?(item[1]="@supports (".concat(item[4],") {").concat(item[1],"}"),item[4]=supports):item[4]="".concat(supports)),list.push(item))}},list}},"./node_modules/css-loader/dist/runtime/sourceMaps.js":module=>{"use strict";module.exports=function(item){var content=item[1],cssMapping=item[3];if(!cssMapping)return content;if("function"==typeof btoa){var base64=btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))),data="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64),sourceMapping="/*# ".concat(data," */"),sourceURLs=cssMapping.sources.map((function(source){return"/*# sourceURL=".concat(cssMapping.sourceRoot||"").concat(source," */")}));return[content].concat(sourceURLs).concat([sourceMapping]).join("\n")}return[content].join("\n")}},"./node_modules/redux-thunk/lib/index.js":(__unused_webpack_module,exports)=>{"use strict";function createThunkMiddleware(extraArgument){return function(_ref){var dispatch=_ref.dispatch,getState=_ref.getState;return function(next){return function(action){return"function"==typeof action?action(dispatch,getState,extraArgument):next(action)}}}}exports.__esModule=!0;var thunk=createThunkMiddleware();thunk.withExtraArgument=createThunkMiddleware,exports.default=thunk},"./node_modules/react-loading-skeleton/dist/skeleton.css":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{default:()=>__WEBPACK_DEFAULT_EXPORT__});var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__),_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/style-loader/dist/runtime/styleDomAPI.js"),_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__),_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/style-loader/dist/runtime/insertBySelector.js"),_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__),_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"),_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__),_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/style-loader/dist/runtime/insertStyleElement.js"),_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__),_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/style-loader/dist/runtime/styleTagTransform.js"),_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default=__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__),_css_loader_dist_cjs_js_skeleton_css__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/css-loader/dist/cjs.js!./node_modules/react-loading-skeleton/dist/skeleton.css"),options={};options.styleTagTransform=_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default(),options.setAttributes=_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default(),options.insert=_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null,"head"),options.domAPI=_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default(),options.insertStyleElement=_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default();_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_skeleton_css__WEBPACK_IMPORTED_MODULE_6__.A,options);const __WEBPACK_DEFAULT_EXPORT__=_css_loader_dist_cjs_js_skeleton_css__WEBPACK_IMPORTED_MODULE_6__.A&&_css_loader_dist_cjs_js_skeleton_css__WEBPACK_IMPORTED_MODULE_6__.A.locals?_css_loader_dist_cjs_js_skeleton_css__WEBPACK_IMPORTED_MODULE_6__.A.locals:void 0},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":module=>{"use strict";var stylesInDOM=[];function getIndexByIdentifier(identifier){for(var result=-1,i=0;i<stylesInDOM.length;i++)if(stylesInDOM[i].identifier===identifier){result=i;break}return result}function modulesToDom(list,options){for(var idCountMap={},identifiers=[],i=0;i<list.length;i++){var item=list[i],id=options.base?item[0]+options.base:item[0],count=idCountMap[id]||0,identifier="".concat(id," ").concat(count);idCountMap[id]=count+1;var indexByIdentifier=getIndexByIdentifier(identifier),obj={css:item[1],media:item[2],sourceMap:item[3],supports:item[4],layer:item[5]};if(-1!==indexByIdentifier)stylesInDOM[indexByIdentifier].references++,stylesInDOM[indexByIdentifier].updater(obj);else{var updater=addElementStyle(obj,options);options.byIndex=i,stylesInDOM.splice(i,0,{identifier,updater,references:1})}identifiers.push(identifier)}return identifiers}function addElementStyle(obj,options){var api=options.domAPI(options);api.update(obj);return function updater(newObj){if(newObj){if(newObj.css===obj.css&&newObj.media===obj.media&&newObj.sourceMap===obj.sourceMap&&newObj.supports===obj.supports&&newObj.layer===obj.layer)return;api.update(obj=newObj)}else api.remove()}}module.exports=function(list,options){var lastIdentifiers=modulesToDom(list=list||[],options=options||{});return function update(newList){newList=newList||[];for(var i=0;i<lastIdentifiers.length;i++){var index=getIndexByIdentifier(lastIdentifiers[i]);stylesInDOM[index].references--}for(var newLastIdentifiers=modulesToDom(newList,options),_i=0;_i<lastIdentifiers.length;_i++){var _index=getIndexByIdentifier(lastIdentifiers[_i]);0===stylesInDOM[_index].references&&(stylesInDOM[_index].updater(),stylesInDOM.splice(_index,1))}lastIdentifiers=newLastIdentifiers}}},"./node_modules/style-loader/dist/runtime/insertBySelector.js":module=>{"use strict";var memo={};module.exports=function insertBySelector(insert,style){var target=function getTarget(target){if(void 0===memo[target]){var styleTarget=document.querySelector(target);if(window.HTMLIFrameElement&&styleTarget instanceof window.HTMLIFrameElement)try{styleTarget=styleTarget.contentDocument.head}catch(e){styleTarget=null}memo[target]=styleTarget}return memo[target]}(insert);if(!target)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");target.appendChild(style)}},"./node_modules/style-loader/dist/runtime/insertStyleElement.js":module=>{"use strict";module.exports=function insertStyleElement(options){var element=document.createElement("style");return options.setAttributes(element,options.attributes),options.insert(element,options.options),element}},"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";module.exports=function setAttributesWithoutAttributes(styleElement){var nonce=__webpack_require__.nc;nonce&&styleElement.setAttribute("nonce",nonce)}},"./node_modules/style-loader/dist/runtime/styleDomAPI.js":module=>{"use strict";module.exports=function domAPI(options){var styleElement=options.insertStyleElement(options);return{update:function update(obj){!function apply(styleElement,options,obj){var css="";obj.supports&&(css+="@supports (".concat(obj.supports,") {")),obj.media&&(css+="@media ".concat(obj.media," {"));var needLayer=void 0!==obj.layer;needLayer&&(css+="@layer".concat(obj.layer.length>0?" ".concat(obj.layer):""," {")),css+=obj.css,needLayer&&(css+="}"),obj.media&&(css+="}"),obj.supports&&(css+="}");var sourceMap=obj.sourceMap;sourceMap&&"undefined"!=typeof btoa&&(css+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))))," */")),options.styleTagTransform(css,styleElement,options.options)}(styleElement,options,obj)},remove:function remove(){!function removeStyleElement(styleElement){if(null===styleElement.parentNode)return!1;styleElement.parentNode.removeChild(styleElement)}(styleElement)}}}},"./node_modules/style-loader/dist/runtime/styleTagTransform.js":module=>{"use strict";module.exports=function styleTagTransform(css,styleElement){if(styleElement.styleSheet)styleElement.styleSheet.cssText=css;else{for(;styleElement.firstChild;)styleElement.removeChild(styleElement.firstChild);styleElement.appendChild(document.createTextNode(css))}}}}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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d2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZWFjdC1sb2FkaW5nLXNrZWxldG9uL2Rpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWxvYWRpbmctc2tlbGV0b24vZGlzdC9za2VsZXRvbi5jc3MiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcmVkdXgtdGh1bmsvbGliL2luZGV4LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZWFjdC1sb2FkaW5nLXNrZWxldG9uL2Rpc3Qvc2tlbGV0b24uY3NzPzMyOTAiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wRGVmYXVsdExlZ2FjeSAoZSkgeyByZXR1cm4gZSAmJiB0eXBlb2YgZSA9PT0gJ29iamVjdCcgJiYgJ2RlZmF1bHQnIGluIGUgPyBlIDogeyAnZGVmYXVsdCc6IGUgfTsgfVxuXG52YXIgUmVhY3RfX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX2ludGVyb3BEZWZhdWx0TGVnYWN5KFJlYWN0KTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgU2tlbGV0b25UaGVtZUNvbnRleHQgPSBSZWFjdF9fZGVmYXVsdFtcImRlZmF1bHRcIl0uY3JlYXRlQ29udGV4dCh7fSk7XG5cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuY29uc3QgZGVmYXVsdEVuYWJsZUFuaW1hdGlvbiA9IHRydWU7XG4vLyBGb3IgcGVyZm9ybWFuY2UgJiBjbGVhbmxpbmVzcywgZG9uJ3QgYWRkIGFueSBpbmxpbmUgc3R5bGVzIHVubGVzcyB3ZSBoYXZlIHRvXG5mdW5jdGlvbiBzdHlsZU9wdGlvbnNUb0Nzc1Byb3BlcnRpZXMoeyBiYXNlQ29sb3IsIGhpZ2hsaWdodENvbG9yLCB3aWR0aCwgaGVpZ2h0LCBib3JkZXJSYWRpdXMsIGNpcmNsZSwgZGlyZWN0aW9uLCBkdXJhdGlvbiwgZW5hYmxlQW5pbWF0aW9uID0gZGVmYXVsdEVuYWJsZUFuaW1hdGlvbiwgfSkge1xuICAgIGNvbnN0IHN0eWxlID0ge307XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3J0bCcpXG4gICAgICAgIHN0eWxlWyctLWFuaW1hdGlvbi1kaXJlY3Rpb24nXSA9ICdyZXZlcnNlJztcbiAgICBpZiAodHlwZW9mIGR1cmF0aW9uID09PSAnbnVtYmVyJylcbiAgICAgICAgc3R5bGVbJy0tYW5pbWF0aW9uLWR1cmF0aW9uJ10gPSBgJHtkdXJhdGlvbn1zYDtcbiAgICBpZiAoIWVuYWJsZUFuaW1hdGlvbilcbiAgICAgICAgc3R5bGVbJy0tcHNldWRvLWVsZW1lbnQtZGlzcGxheSddID0gJ25vbmUnO1xuICAgIGlmICh0eXBlb2Ygd2lkdGggPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicpXG4gICAgICAgIHN0eWxlLndpZHRoID0gd2lkdGg7XG4gICAgaWYgKHR5cGVvZiBoZWlnaHQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBoZWlnaHQgPT09ICdudW1iZXInKVxuICAgICAgICBzdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgaWYgKHR5cGVvZiBib3JkZXJSYWRpdXMgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBib3JkZXJSYWRpdXMgPT09ICdudW1iZXInKVxuICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSBib3JkZXJSYWRpdXM7XG4gICAgaWYgKGNpcmNsZSlcbiAgICAgICAgc3R5bGUuYm9yZGVyUmFkaXVzID0gJzUwJSc7XG4gICAgaWYgKHR5cGVvZiBiYXNlQ29sb3IgIT09ICd1bmRlZmluZWQnKVxuICAgICAgICBzdHlsZVsnLS1iYXNlLWNvbG9yJ10gPSBiYXNlQ29sb3I7XG4gICAgaWYgKHR5cGVvZiBoaWdobGlnaHRDb2xvciAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgIHN0eWxlWyctLWhpZ2hsaWdodC1jb2xvciddID0gaGlnaGxpZ2h0Q29sb3I7XG4gICAgcmV0dXJuIHN0eWxlO1xufVxuZnVuY3Rpb24gU2tlbGV0b24oeyBjb3VudCA9IDEsIHdyYXBwZXI6IFdyYXBwZXIsIGNsYXNzTmFtZTogY3VzdG9tQ2xhc3NOYW1lLCBjb250YWluZXJDbGFzc05hbWUsIGNvbnRhaW5lclRlc3RJZCwgY2lyY2xlID0gZmFsc2UsIHN0eWxlOiBzdHlsZVByb3AsIC4uLm9yaWdpbmFsUHJvcHNTdHlsZU9wdGlvbnMgfSkge1xuICAgIHZhciBfYSwgX2IsIF9jO1xuICAgIGNvbnN0IGNvbnRleHRTdHlsZU9wdGlvbnMgPSBSZWFjdF9fZGVmYXVsdFtcImRlZmF1bHRcIl0udXNlQ29udGV4dChTa2VsZXRvblRoZW1lQ29udGV4dCk7XG4gICAgY29uc3QgcHJvcHNTdHlsZU9wdGlvbnMgPSB7IC4uLm9yaWdpbmFsUHJvcHNTdHlsZU9wdGlvbnMgfTtcbiAgICAvLyBETyBOT1Qgb3ZlcndyaXRlIHN0eWxlIG9wdGlvbnMgZnJvbSB0aGUgY29udGV4dCBpZiBgcHJvcHNTdHlsZU9wdGlvbnNgXG4gICAgLy8gaGFzIHByb3BlcnRpZXMgZXhwbGljaXR5IHNldCB0byB1bmRlZmluZWRcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcmlnaW5hbFByb3BzU3R5bGVPcHRpb25zKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgZGVsZXRlIHByb3BzU3R5bGVPcHRpb25zW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUHJvcHMgdGFrZSBwcmlvcml0eSBvdmVyIGNvbnRleHRcbiAgICBjb25zdCBzdHlsZU9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmNvbnRleHRTdHlsZU9wdGlvbnMsXG4gICAgICAgIC4uLnByb3BzU3R5bGVPcHRpb25zLFxuICAgICAgICBjaXJjbGUsXG4gICAgfTtcbiAgICAvLyBgc3R5bGVQcm9wYCBoYXMgdGhlIGxlYXN0IHByaW9yaXR5IG91dCBvZiBldmVyeXRoaW5nXG4gICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICAgIC4uLnN0eWxlUHJvcCxcbiAgICAgICAgLi4uc3R5bGVPcHRpb25zVG9Dc3NQcm9wZXJ0aWVzKHN0eWxlT3B0aW9ucyksXG4gICAgfTtcbiAgICBsZXQgY2xhc3NOYW1lID0gJ3JlYWN0LWxvYWRpbmctc2tlbGV0b24nO1xuICAgIGlmIChjdXN0b21DbGFzc05hbWUpXG4gICAgICAgIGNsYXNzTmFtZSArPSBgICR7Y3VzdG9tQ2xhc3NOYW1lfWA7XG4gICAgY29uc3QgaW5saW5lID0gKF9hID0gc3R5bGVPcHRpb25zLmlubGluZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZmFsc2U7XG4gICAgY29uc3QgZWxlbWVudHMgPSBbXTtcbiAgICBjb25zdCBjb3VudENlaWwgPSBNYXRoLmNlaWwoY291bnQpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRDZWlsOyBpKyspIHtcbiAgICAgICAgbGV0IHRoaXNTdHlsZSA9IHN0eWxlO1xuICAgICAgICBpZiAoY291bnRDZWlsID4gY291bnQgJiYgaSA9PT0gY291bnRDZWlsIC0gMSkge1xuICAgICAgICAgICAgLy8gY291bnQgaXMgbm90IGFuIGludGVnZXIgYW5kIHdlJ3ZlIHJlYWNoZWQgdGhlIGxhc3QgaXRlcmF0aW9uIG9mXG4gICAgICAgICAgICAvLyB0aGUgbG9vcCwgc28gYWRkIGEgXCJmcmFjdGlvbmFsXCIgc2tlbGV0b24uXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsIGlmIGNvdW50IGlzIDMuNSwgd2UndmUgYWxyZWFkeSBhZGRlZCAzIGZ1bGxcbiAgICAgICAgICAgIC8vIHNrZWxldG9ucywgc28gbm93IHdlIGFkZCBvbmUgbW9yZSBza2VsZXRvbiB0aGF0IGlzIDAuNSB0aW1lcyB0aGVcbiAgICAgICAgICAgIC8vIG9yaWdpbmFsIHdpZHRoLlxuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSAoX2IgPSB0aGlzU3R5bGUud2lkdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcxMDAlJzsgLy8gMTAwJSBpcyB0aGUgZGVmYXVsdCBzaW5jZSB0aGF0J3Mgd2hhdCdzIGluIHRoZSBDU1NcbiAgICAgICAgICAgIGNvbnN0IGZyYWN0aW9uYWxQYXJ0ID0gY291bnQgJSAxO1xuICAgICAgICAgICAgY29uc3QgZnJhY3Rpb25hbFdpZHRoID0gdHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgID8gd2lkdGggKiBmcmFjdGlvbmFsUGFydFxuICAgICAgICAgICAgICAgIDogYGNhbGMoJHt3aWR0aH0gKiAke2ZyYWN0aW9uYWxQYXJ0fSlgO1xuICAgICAgICAgICAgdGhpc1N0eWxlID0geyAuLi50aGlzU3R5bGUsIHdpZHRoOiBmcmFjdGlvbmFsV2lkdGggfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBza2VsZXRvblNwYW4gPSAoUmVhY3RfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIHN0eWxlOiB0aGlzU3R5bGUsIGtleTogaSB9LCBcIlxcdTIwMENcIikpO1xuICAgICAgICBpZiAoaW5saW5lKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5wdXNoKHNrZWxldG9uU3Bhbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBXaXRob3V0IHRoZSA8YnIgLz4sIHRoZSBza2VsZXRvbiBsaW5lcyB3aWxsIGFsbCBydW4gdG9nZXRoZXIgaWZcbiAgICAgICAgICAgIC8vIGB3aWR0aGAgaXMgc3BlY2lmaWVkXG4gICAgICAgICAgICBlbGVtZW50cy5wdXNoKFJlYWN0X19kZWZhdWx0W1wiZGVmYXVsdFwiXS5jcmVhdGVFbGVtZW50KFJlYWN0X19kZWZhdWx0W1wiZGVmYXVsdFwiXS5GcmFnbWVudCwgeyBrZXk6IGkgfSxcbiAgICAgICAgICAgICAgICBza2VsZXRvblNwYW4sXG4gICAgICAgICAgICAgICAgUmVhY3RfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoXCJiclwiLCBudWxsKSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjb250YWluZXJDbGFzc05hbWUsIFwiZGF0YS10ZXN0aWRcIjogY29udGFpbmVyVGVzdElkLCBcImFyaWEtbGl2ZVwiOiBcInBvbGl0ZVwiLCBcImFyaWEtYnVzeVwiOiAoX2MgPSBzdHlsZU9wdGlvbnMuZW5hYmxlQW5pbWF0aW9uKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBkZWZhdWx0RW5hYmxlQW5pbWF0aW9uIH0sIFdyYXBwZXJcbiAgICAgICAgPyBlbGVtZW50cy5tYXAoKGVsLCBpKSA9PiBSZWFjdF9fZGVmYXVsdFtcImRlZmF1bHRcIl0uY3JlYXRlRWxlbWVudChXcmFwcGVyLCB7IGtleTogaSB9LCBlbCkpXG4gICAgICAgIDogZWxlbWVudHMpKTtcbn1cblxuZnVuY3Rpb24gU2tlbGV0b25UaGVtZSh7IGNoaWxkcmVuLCAuLi5zdHlsZU9wdGlvbnMgfSkge1xuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoU2tlbGV0b25UaGVtZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHN0eWxlT3B0aW9ucyB9LCBjaGlsZHJlbikpO1xufVxuXG5leHBvcnRzLlNrZWxldG9uVGhlbWUgPSBTa2VsZXRvblRoZW1lO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBTa2VsZXRvbjtcbiIsIi8qIVxuXHRDb3B5cmlnaHQgKGMpIDIwMTggSmVkIFdhdHNvbi5cblx0TGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcblx0aHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblx0dmFyIG5hdGl2ZUNvZGVTdHJpbmcgPSAnW25hdGl2ZSBjb2RlXSc7XG5cblx0ZnVuY3Rpb24gY2xhc3NOYW1lcygpIHtcblx0XHR2YXIgY2xhc3NlcyA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0aWYgKGFyZy5sZW5ndGgpIHtcblx0XHRcdFx0XHR2YXIgaW5uZXIgPSBjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZyk7XG5cdFx0XHRcdFx0aWYgKGlubmVyKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goaW5uZXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChhcmdUeXBlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRpZiAoYXJnLnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nICYmICFhcmcudG9TdHJpbmcudG9TdHJpbmcoKS5pbmNsdWRlcygnW25hdGl2ZSBjb2RlXScpKSB7XG5cdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGFyZy50b1N0cmluZygpKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goa2V5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAa2V5ZnJhbWVzIHJlYWN0LWxvYWRpbmctc2tlbGV0b24ge1xcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG4ucmVhY3QtbG9hZGluZy1za2VsZXRvbiB7XFxuICAgIC0tYmFzZS1jb2xvcjogI2ViZWJlYjtcXG4gICAgLS1oaWdobGlnaHQtY29sb3I6ICNmNWY1ZjU7XFxuICAgIC0tYW5pbWF0aW9uLWR1cmF0aW9uOiAxLjVzO1xcbiAgICAtLWFuaW1hdGlvbi1kaXJlY3Rpb246IG5vcm1hbDtcXG4gICAgLS1wc2V1ZG8tZWxlbWVudC1kaXNwbGF5OiBibG9jazsgLyogRW5hYmxlIGFuaW1hdGlvbiAqL1xcblxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYXNlLWNvbG9yKTtcXG5cXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgICBsaW5lLWhlaWdodDogMTtcXG5cXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB6LWluZGV4OiAxOyAvKiBOZWNlc3NhcnkgZm9yIG92ZXJmbG93OiBoaWRkZW4gdG8gd29yayBjb3JyZWN0bHkgaW4gU2FmYXJpICovXFxufVxcblxcbi5yZWFjdC1sb2FkaW5nLXNrZWxldG9uOjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcgJztcXG4gICAgZGlzcGxheTogdmFyKC0tcHNldWRvLWVsZW1lbnQtZGlzcGxheSk7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXFxuICAgICAgICA5MGRlZyxcXG4gICAgICAgIHZhcigtLWJhc2UtY29sb3IpLFxcbiAgICAgICAgdmFyKC0taGlnaGxpZ2h0LWNvbG9yKSxcXG4gICAgICAgIHZhcigtLWJhc2UtY29sb3IpXFxuICAgICk7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XFxuXFxuICAgIGFuaW1hdGlvbi1uYW1lOiByZWFjdC1sb2FkaW5nLXNrZWxldG9uO1xcbiAgICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1hbmltYXRpb24tZGlyZWN0aW9uKTtcXG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1hbmltYXRpb24tZHVyYXRpb24pO1xcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDtcXG4gICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9yZWFjdC1sb2FkaW5nLXNrZWxldG9uL2Rpc3Qvc2tlbGV0b24uY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0lBQ0k7UUFDSSwyQkFBMkI7SUFDL0I7QUFDSjs7QUFFQTtJQUNJLHFCQUFxQjtJQUNyQiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLDZCQUE2QjtJQUM3QiwrQkFBK0IsRUFBRSxxQkFBcUI7O0lBRXRELG1DQUFtQzs7SUFFbkMsV0FBVztJQUNYLHNCQUFzQjtJQUN0QixvQkFBb0I7SUFDcEIsY0FBYzs7SUFFZCxrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLFVBQVUsRUFBRSwrREFBK0Q7QUFDL0U7O0FBRUE7SUFDSSxZQUFZO0lBQ1osc0NBQXNDO0lBQ3RDLGtCQUFrQjtJQUNsQixNQUFNO0lBQ04sT0FBTztJQUNQLFFBQVE7SUFDUixZQUFZO0lBQ1osNEJBQTRCO0lBQzVCOzs7OztLQUtDO0lBQ0QsNEJBQTRCOztJQUU1QixzQ0FBc0M7SUFDdEMsK0NBQStDO0lBQy9DLDZDQUE2QztJQUM3QyxzQ0FBc0M7SUFDdEMsbUNBQW1DO0FBQ3ZDXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBrZXlmcmFtZXMgcmVhY3QtbG9hZGluZy1za2VsZXRvbiB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICB9XFxufVxcblxcbi5yZWFjdC1sb2FkaW5nLXNrZWxldG9uIHtcXG4gICAgLS1iYXNlLWNvbG9yOiAjZWJlYmViO1xcbiAgICAtLWhpZ2hsaWdodC1jb2xvcjogI2Y1ZjVmNTtcXG4gICAgLS1hbmltYXRpb24tZHVyYXRpb246IDEuNXM7XFxuICAgIC0tYW5pbWF0aW9uLWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgICAtLXBzZXVkby1lbGVtZW50LWRpc3BsYXk6IGJsb2NrOyAvKiBFbmFibGUgYW5pbWF0aW9uICovXFxuXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhc2UtY29sb3IpO1xcblxcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICAgIGxpbmUtaGVpZ2h0OiAxO1xcblxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHotaW5kZXg6IDE7IC8qIE5lY2Vzc2FyeSBmb3Igb3ZlcmZsb3c6IGhpZGRlbiB0byB3b3JrIGNvcnJlY3RseSBpbiBTYWZhcmkgKi9cXG59XFxuXFxuLnJlYWN0LWxvYWRpbmctc2tlbGV0b246OmFmdGVyIHtcXG4gICAgY29udGVudDogJyAnO1xcbiAgICBkaXNwbGF5OiB2YXIoLS1wc2V1ZG8tZWxlbWVudC1kaXNwbGF5KTtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcXG4gICAgICAgIDkwZGVnLFxcbiAgICAgICAgdmFyKC0tYmFzZS1jb2xvciksXFxuICAgICAgICB2YXIoLS1oaWdobGlnaHQtY29sb3IpLFxcbiAgICAgICAgdmFyKC0tYmFzZS1jb2xvcilcXG4gICAgKTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcXG5cXG4gICAgYW5pbWF0aW9uLW5hbWU6IHJlYWN0LWxvYWRpbmctc2tlbGV0b247XFxuICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWFuaW1hdGlvbi1kaXJlY3Rpb24pO1xcbiAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWFuaW1hdGlvbi1kdXJhdGlvbik7XFxuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xcbiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfayA9IDA7IF9rIDwgbW9kdWxlcy5sZW5ndGg7IF9rKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2tdKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmZ1bmN0aW9uIGNyZWF0ZVRodW5rTWlkZGxld2FyZShleHRyYUFyZ3VtZW50KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBkaXNwYXRjaCA9IF9yZWYuZGlzcGF0Y2g7XG4gICAgdmFyIGdldFN0YXRlID0gX3JlZi5nZXRTdGF0ZTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG5leHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoYWN0aW9uKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGFjdGlvbihkaXNwYXRjaCwgZ2V0U3RhdGUsIGV4dHJhQXJndW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cblxudmFyIHRodW5rID0gY3JlYXRlVGh1bmtNaWRkbGV3YXJlKCk7XG50aHVuay53aXRoRXh0cmFBcmd1bWVudCA9IGNyZWF0ZVRodW5rTWlkZGxld2FyZTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gdGh1bms7IiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc2tlbGV0b24uY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NrZWxldG9uLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRPTS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRPTVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4QnlJZGVudGlmaWVyID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdLFxuICAgICAgc3VwcG9ydHM6IGl0ZW1bNF0sXG4gICAgICBsYXllcjogaXRlbVs1XVxuICAgIH07XG5cbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuXG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuXG4gIHZhciB1cGRhdGVyID0gZnVuY3Rpb24gdXBkYXRlcihuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwICYmIG5ld09iai5zdXBwb3J0cyA9PT0gb2JqLnN1cHBvcnRzICYmIG5ld09iai5sYXllciA9PT0gb2JqLmxheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXBpLnVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVtb3ZlKCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB1cGRhdGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRE9NLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBtZW1vID0ge307XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0KHRhcmdldCkge1xuICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgfVxuXG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBpbnNlcnRCeVNlbGVjdG9yKGluc2VydCwgc3R5bGUpIHtcbiAgdmFyIHRhcmdldCA9IGdldFRhcmdldChpbnNlcnQpO1xuXG4gIGlmICghdGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgfVxuXG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0QnlTZWxlY3RvcjsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgb3B0aW9ucy5zZXRBdHRyaWJ1dGVzKGVsZW1lbnQsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gIG9wdGlvbnMuaW5zZXJ0KGVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG4gIHJldHVybiBlbGVtZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcblxuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBcIlwiO1xuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG5cbiAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBvYmoubGF5ZXIgIT09IFwidW5kZWZpbmVkXCI7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuXG4gIGNzcyArPSBvYmouY3NzO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgb3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGRvbUFQSShvcHRpb25zKSB7XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBvcHRpb25zLmluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShvYmopIHtcbiAgICAgIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCkge1xuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl9zbGljZWRUb0FycmF5IiwiciIsImUiLCJfYXJyYXlXaXRoSG9sZXMiLCJBcnJheSIsImlzQXJyYXkiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJsIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwibiIsImkiLCJ1IiwiYSIsImYiLCJvIiwiY2FsbCIsIm5leHQiLCJPYmplY3QiLCJkb25lIiwicHVzaCIsInZhbHVlIiwibGVuZ3RoIiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsIl90b1ByaW1pdGl2ZSIsIl90eXBlb2YiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJoYXNPd25Qcm9wZXJ0eSIsImluY2x1ZGVzIiwicyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwicHJvdG90eXBlIiwiX2ludGVyb3BEZWZhdWx0TGVnYWN5IiwiZXhwb3J0cyIsIlJlYWN0X19kZWZhdWx0IiwicmVxdWlyZSIsIlNrZWxldG9uVGhlbWVDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsImRlZmF1bHRFbmFibGVBbmltYXRpb24iLCJTa2VsZXRvblRoZW1lIiwiX3JlZjMiLCJjaGlsZHJlbiIsInN0eWxlT3B0aW9ucyIsImNyZWF0ZUVsZW1lbnQiLCJQcm92aWRlciIsIlNrZWxldG9uIiwiX3JlZjIiLCJfYSIsIl9iIiwiX2MiLCJfcmVmMiRjb3VudCIsImNvdW50IiwiV3JhcHBlciIsIndyYXBwZXIiLCJjdXN0b21DbGFzc05hbWUiLCJjbGFzc05hbWUiLCJjb250YWluZXJDbGFzc05hbWUiLCJjb250YWluZXJUZXN0SWQiLCJfcmVmMiRjaXJjbGUiLCJjaXJjbGUiLCJzdHlsZVByb3AiLCJzdHlsZSIsIm9yaWdpbmFsUHJvcHNTdHlsZU9wdGlvbnMiLCJjb250ZXh0U3R5bGVPcHRpb25zIiwidXNlQ29udGV4dCIsInByb3BzU3R5bGVPcHRpb25zIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwia2V5Iiwic3R5bGVPcHRpb25zVG9Dc3NQcm9wZXJ0aWVzIiwiX3JlZiIsImJhc2VDb2xvciIsImhpZ2hsaWdodENvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJib3JkZXJSYWRpdXMiLCJkaXJlY3Rpb24iLCJkdXJhdGlvbiIsIl9yZWYkZW5hYmxlQW5pbWF0aW9uIiwiZW5hYmxlQW5pbWF0aW9uIiwiY29uY2F0IiwiaW5saW5lIiwiZWxlbWVudHMiLCJjb3VudENlaWwiLCJNYXRoIiwiY2VpbCIsInRoaXNTdHlsZSIsImZyYWN0aW9uYWxQYXJ0IiwiZnJhY3Rpb25hbFdpZHRoIiwic2tlbGV0b25TcGFuIiwiRnJhZ21lbnQiLCJtYXAiLCJlbCIsImhhc093biIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiYXJnIiwiYXJnVHlwZSIsImlubmVyIiwiam9pbiIsIm1vZHVsZSIsImRlZmF1bHQiLCJfX19DU1NfTE9BREVSX0VYUE9SVF9fXyIsImlkIiwiY3NzV2l0aE1hcHBpbmdUb1N0cmluZyIsImxpc3QiLCJ0aGlzIiwiaXRlbSIsImNvbnRlbnQiLCJuZWVkTGF5ZXIiLCJtb2R1bGVzIiwibWVkaWEiLCJkZWR1cGUiLCJzdXBwb3J0cyIsImxheWVyIiwidW5kZWZpbmVkIiwiYWxyZWFkeUltcG9ydGVkTW9kdWxlcyIsImsiLCJfayIsImNzc01hcHBpbmciLCJidG9hIiwiYmFzZTY0IiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJKU09OIiwic3RyaW5naWZ5IiwiZGF0YSIsInNvdXJjZU1hcHBpbmciLCJzb3VyY2VVUkxzIiwic291cmNlcyIsInNvdXJjZSIsInNvdXJjZVJvb3QiLCJjcmVhdGVUaHVua01pZGRsZXdhcmUiLCJleHRyYUFyZ3VtZW50IiwiZGlzcGF0Y2giLCJnZXRTdGF0ZSIsImFjdGlvbiIsIl9fZXNNb2R1bGUiLCJ0aHVuayIsIndpdGhFeHRyYUFyZ3VtZW50Iiwib3B0aW9ucyIsInN0eWxlVGFnVHJhbnNmb3JtIiwic2V0QXR0cmlidXRlcyIsImluc2VydCIsImRvbUFQSSIsImluc2VydFN0eWxlRWxlbWVudCIsImxvY2FscyIsInN0eWxlc0luRE9NIiwiZ2V0SW5kZXhCeUlkZW50aWZpZXIiLCJpZGVudGlmaWVyIiwicmVzdWx0IiwibW9kdWxlc1RvRG9tIiwiaWRDb3VudE1hcCIsImlkZW50aWZpZXJzIiwiYmFzZSIsImluZGV4QnlJZGVudGlmaWVyIiwib2JqIiwiY3NzIiwic291cmNlTWFwIiwicmVmZXJlbmNlcyIsInVwZGF0ZXIiLCJhZGRFbGVtZW50U3R5bGUiLCJieUluZGV4Iiwic3BsaWNlIiwiYXBpIiwidXBkYXRlIiwibmV3T2JqIiwicmVtb3ZlIiwibGFzdElkZW50aWZpZXJzIiwibmV3TGlzdCIsImluZGV4IiwibmV3TGFzdElkZW50aWZpZXJzIiwiX2luZGV4IiwibWVtbyIsImluc2VydEJ5U2VsZWN0b3IiLCJ0YXJnZXQiLCJnZXRUYXJnZXQiLCJzdHlsZVRhcmdldCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsIndpbmRvdyIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudERvY3VtZW50IiwiaGVhZCIsIkVycm9yIiwiYXBwZW5kQ2hpbGQiLCJlbGVtZW50IiwiYXR0cmlidXRlcyIsInNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyIsInN0eWxlRWxlbWVudCIsIm5vbmNlIiwic2V0QXR0cmlidXRlIiwicmVtb3ZlU3R5bGVFbGVtZW50IiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJmaXJzdENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiXSwic291cmNlUm9vdCI6IiJ9