-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path4898.a8a5a448.iframe.bundle.js
3 lines (3 loc) · 102 KB
/
4898.a8a5a448.iframe.bundle.js
1
2
3
/*! For license information please see 4898.a8a5a448.iframe.bundle.js.LICENSE.txt */
(self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[4898],{"./src/accounts/ChangeUserTypeForm.jsx":(module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_locale=_interopRequireDefault(__webpack_require__("./src/util/locale-do-not-import.js")),_urlHelpers=__webpack_require__("./src/lib/util/urlHelpers.js"),_SystemDialog=__webpack_require__("./src/sharedComponents/SystemDialog/SystemDialog.jsx");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}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 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 _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,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}var ChangeUserTypeForm=exports.default=function(_React$Component){function ChangeUserTypeForm(){for(var _this,_len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return _defineProperty(_this=_React$Component.call.apply(_React$Component,[this].concat(args))||this,"onEmailChange",(function(event){return _this.props.onChange(_objectSpread(_objectSpread({},_this.props.values),{},{email:event.target.value}))})),_defineProperty(_this,"onEmailOptInChange",(function(event){return _this.props.onChange(_objectSpread(_objectSpread({},_this.props.values),{},{emailOptIn:event.target.value}))})),_defineProperty(_this,"onKeyDown",(function(event){"Enter"!==event.key||_this.props.disabled||_this.props.onSubmit()})),_this}!function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,_setPrototypeOf(t,o)}(ChangeUserTypeForm,_React$Component);var _proto=ChangeUserTypeForm.prototype;return _proto.componentDidMount=function componentDidMount(){var firstInput=[this.emailInput].filter((function(x){return x}))[0];firstInput&&firstInput.focus()},_proto.focusOnAnError=function focusOnAnError(){this.props.validationErrors.email&&this.emailInput.focus()},_proto.emailOptInLabelDetails=function emailOptInLabelDetails(){return _react.default.createElement("span",null,_locale.default.changeUserTypeModal_emailOptIn_description()," ",_react.default.createElement("a",{href:(0,_urlHelpers.pegasus)("/privacy"),tabIndex:"3",target:"_blank",rel:"noopener noreferrer"},_locale.default.changeUserTypeModal_emailOptIn_privacyPolicy()))},_proto.render=function render(){var _this2=this,_this$props=this.props,values=_this$props.values,validationErrors=_this$props.validationErrors,disabled=_this$props.disabled;return _react.default.createElement("div",null,_react.default.createElement("p",null,_locale.default.changeUserTypeModal_description_toTeacher()),_react.default.createElement(_SystemDialog.Field,{label:_locale.default.changeUserTypeModal_email_label(),labelDetails:_locale.default.changeUserTypeModal_email_labelDetails(),error:validationErrors.email},_react.default.createElement("input",{type:"email",value:values.email,disabled,tabIndex:"1",onKeyDown:this.onKeyDown,onChange:this.onEmailChange,autoComplete:"off",maxLength:"255",size:"255",style:styles.input,ref:function ref(el){return _this2.emailInput=el}})),_react.default.createElement(_SystemDialog.Field,{labelDetails:this.emailOptInLabelDetails(),error:validationErrors.emailOptIn},_react.default.createElement("select",{value:values.emailOptIn,disabled,tabIndex:"1",onKeyDown:this.onKeyDown,onChange:this.onEmailOptInChange,style:_objectSpread(_objectSpread({},styles.input),{},{width:100}),ref:function ref(el){return _this2.emailOptInSelect=el}},_react.default.createElement("option",{value:""}),_react.default.createElement("option",{value:"yes"},_locale.default.yes()),_react.default.createElement("option",{value:"no"},_locale.default.no()))))},ChangeUserTypeForm}(_react.default.Component);_defineProperty(ChangeUserTypeForm,"propTypes",{values:_propTypes.default.shape({email:_propTypes.default.string,emailOptIn:_propTypes.default.string}).isRequired,validationErrors:_propTypes.default.shape({email:_propTypes.default.string,emailOptIn:_propTypes.default.string}).isRequired,disabled:_propTypes.default.bool,onChange:_propTypes.default.func.isRequired,onSubmit:_propTypes.default.func.isRequired});var styles={input:{marginBottom:4}};module.exports=exports.default},"./src/lib/util/urlHelpers.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.metaTagDescription=exports.RELEASE_OR_DELETE_RECORDS_EXPLANATION=exports.ADD_A_PERSONAL_LOGIN_HELP_URL=void 0,exports.pegasus=function pegasus(relativeUrl){if(window.dashboard&&window.dashboard.CODE_ORG_URL)return window.dashboard.CODE_ORG_URL+relativeUrl;return relativeUrl},exports.setPegasusOrigin=function setPegasusOrigin(origin){window.dashboard=window.dashboard||{},window.dashboard.CODE_ORG_URL=origin},exports.setStudioOrigin=function setStudioOrigin(origin){window.pegasus=window.pegasus||{},window.pegasus.STUDIO_URL=origin},exports.studio=function studio(relativeUrl){if(window.pegasus&&window.pegasus.STUDIO_URL)return window.pegasus.STUDIO_URL+relativeUrl;return relativeUrl};var _jquery=_interopRequireDefault(__webpack_require__("./node_modules/jquery/dist/jquery.js")),_lodash=_interopRequireDefault(__webpack_require__("./node_modules/lodash/lodash.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}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}exports.metaTagDescription=_lodash.default.memoize((function(relativeUrl){return fetch(relativeUrl).then((function(response){return Promise.all([response.status,response.text()])})).then((function(_ref){var _ref2=_slicedToArray(_ref,2),status=_ref2[0],text=_ref2[1];return status<200||status>=300?relativeUrl:(0,_jquery.default)(text).filter("meta[name='description']").attr("content")||relativeUrl})).catch((function(error){return relativeUrl}))})),exports.ADD_A_PERSONAL_LOGIN_HELP_URL="https://support.code.org/hc/en-us/articles/115001475131-Adding-a-personal-login-to-a-teacher-created-account",exports.RELEASE_OR_DELETE_RECORDS_EXPLANATION="https://support.code.org/hc/en-us/articles/360015983631"},"./src/sharedComponents/SystemDialog/ConfirmCancelFooter.jsx":(module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _button=function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=_typeof(e)&&"function"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}return n.default=e,t&&t.set(e,n),n}(__webpack_require__("../frontend/packages/component-library/dist/cjs/button/index.js")),_propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_color=_interopRequireDefault(__webpack_require__("./src/util/color.js")),_locale=_interopRequireDefault(__webpack_require__("./src/util/locale-do-not-import.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r})(e)}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 _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,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}var ConfirmCancelFooter=exports.default=function(_React$Component){function ConfirmCancelFooter(){return _React$Component.apply(this,arguments)||this}return function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,_setPrototypeOf(t,o)}(ConfirmCancelFooter,_React$Component),ConfirmCancelFooter.prototype.render=function render(){var _this$props=this.props,onConfirm=_this$props.onConfirm,onCancel=_this$props.onCancel,confirmText=_this$props.confirmText,cancelText=_this$props.cancelText,confirmColor=_this$props.confirmColor,cancelColor=_this$props.cancelColor,disableConfirm=_this$props.disableConfirm,disableCancel=_this$props.disableCancel,children=_this$props.children;return _react.default.createElement("div",{style},_react.default.createElement(_button.default,{text:confirmText,onClick:onConfirm,size:"s",type:"primary",color:confirmColor,disabled:disableConfirm,style:buttonStyle}),_react.default.createElement("span",{style:messageStyle},children),_react.default.createElement(_button.default,{text:cancelText,onClick:onCancel,size:"s",type:"secondary",color:cancelColor,disabled:disableCancel,style:buttonStyle}))},ConfirmCancelFooter}(_react.default.Component);_defineProperty(ConfirmCancelFooter,"propTypes",{onConfirm:_propTypes.default.func.isRequired,onCancel:_propTypes.default.func.isRequired,confirmText:_propTypes.default.string,cancelText:_propTypes.default.string,confirmColor:_propTypes.default.oneOf(Object.values(_button.buttonColors)),cancelColor:_propTypes.default.oneOf(Object.values(_button.buttonColors)),disableConfirm:_propTypes.default.bool,disableCancel:_propTypes.default.bool,children:_propTypes.default.any}),_defineProperty(ConfirmCancelFooter,"defaultProps",{confirmText:_locale.default.dialogOK(),cancelText:_locale.default.cancel(),confirmColor:_button.buttonColors.purple,cancelColor:_button.buttonColors.black});var style={display:"flex",flexDirection:"row-reverse",alignItems:"flex-end",justifyContent:"space-between",borderStyle:"solid",borderColor:_color.default.lighter_gray,borderTopWidth:1,borderBottomWidth:0,borderRightWidth:0,borderLeftWidth:0,paddingTop:10,marginTop:10},messageStyle={display:"inline-block",lineHeight:"34px",textAlign:"right",verticalAlign:"top",marginLeft:"1em",marginRight:"1em",flexGrow:1},buttonStyle={flexShrink:0};module.exports=exports.default},"./src/sharedComponents/SystemDialog/Field.jsx":(module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_color=_interopRequireDefault(__webpack_require__("./src/util/color.js")),_utils=__webpack_require__("./src/utils.js");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}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 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 _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,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}_defineProperty(exports.default=function(_React$Component){function Field(props){var _this;return(_this=_React$Component.call(this,props)||this).uniqueId=(0,_utils.createUuid)(),_this}return function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,_setPrototypeOf(t,o)}(Field,_React$Component),Field.prototype.render=function render(){var _this$props=this.props,label=_this$props.label,labelDetails=_this$props.labelDetails,error=_this$props.error,children=_this$props.children,style=_this$props.style;return _react.default.createElement("div",{style:_objectSpread({marginBottom:15},style)},(label||labelDetails)&&_react.default.createElement("label",{htmlFor:this.uniqueId,style:{display:"block",color:_color.default.charcoal}},label&&_react.default.createElement("span",{style:{fontWeight:"bold",marginRight:"1em"}},label),labelDetails&&_react.default.createElement("span",null,labelDetails)),_react.default.cloneElement(children,{id:this.uniqueId}),error&&_react.default.createElement(FieldError,null,error))},Field}(_react.default.Component),"propTypes",{label:_propTypes.default.string,labelDetails:_propTypes.default.node,error:_propTypes.default.any,children:_propTypes.default.element.isRequired,style:_propTypes.default.object});var FieldError=function FieldError(_ref){var children=_ref.children;return _react.default.createElement("div",{style:{color:_color.default.red,fontStyle:"italic"}},children)};FieldError.propTypes={children:_propTypes.default.string},module.exports=exports.default},"./src/sharedComponents/SystemDialog/Header.jsx":(module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_fontConstants=_interopRequireDefault(__webpack_require__("./src/fontConstants.js")),_color=_interopRequireDefault(__webpack_require__("./src/util/color.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}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 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 _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,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}_defineProperty(exports.default=function(_React$Component){function Header(){return _React$Component.apply(this,arguments)||this}return function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,_setPrototypeOf(t,o)}(Header,_React$Component),Header.prototype.render=function render(){var computedStyle=_objectSpread(_objectSpread({},style),this.props.hideBorder&&{borderBottomWidth:0,paddingBottom:5});return _react.default.createElement("h1",{style:computedStyle},this.props.text)},Header}(_react.default.Component),"propTypes",{text:_propTypes.default.string.isRequired,hideBorder:_propTypes.default.bool});var style=_objectSpread(_objectSpread({fontSize:16,lineHeight:"20px",color:_color.default.charcoal},_fontConstants.default["main-font-semi-bold"]),{},{borderStyle:"solid",borderColor:_color.default.lighter_gray,borderTopWidth:0,borderBottomWidth:1,borderRightWidth:0,borderLeftWidth:0,paddingBottom:10,paddingTop:0,paddingLeft:0,paddingRight:0,marginBottom:10,marginTop:10});module.exports=exports.default},"./src/sharedComponents/SystemDialog/SystemDialog.jsx":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ConfirmCancelFooter",{enumerable:!0,get:function get(){return _ConfirmCancelFooter.default}}),Object.defineProperty(exports,"Field",{enumerable:!0,get:function get(){return _Field.default}}),Object.defineProperty(exports,"Header",{enumerable:!0,get:function get(){return _Header.default}});var _ConfirmCancelFooter=_interopRequireDefault(__webpack_require__("./src/sharedComponents/SystemDialog/ConfirmCancelFooter.jsx")),_Field=_interopRequireDefault(__webpack_require__("./src/sharedComponents/SystemDialog/Field.jsx")),_Header=_interopRequireDefault(__webpack_require__("./src/sharedComponents/SystemDialog/Header.jsx"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}},"./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/prop-types/factoryWithThrowingShims.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";var ReactPropTypesSecret=__webpack_require__("./node_modules/prop-types/lib/ReactPropTypesSecret.js");function emptyFunction(){}module.exports=function(){function shim(props,propName,componentName,location,propFullName,secret){if(secret!==ReactPropTypesSecret){var err=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 err.name="Invariant Violation",err}}function getShim(){return shim}shim.isRequired=shim;var ReactPropTypes={array:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim};return ReactPropTypes.checkPropTypes=emptyFunction,ReactPropTypes.PropTypes=ReactPropTypes,ReactPropTypes}},"./node_modules/prop-types/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{module.exports=__webpack_require__("./node_modules/prop-types/factoryWithThrowingShims.js")()},"./node_modules/prop-types/lib/ReactPropTypesSecret.js":module=>{"use strict";module.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},"./node_modules/react/cjs/react-jsx-runtime.production.min.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";__webpack_require__("./node_modules/object-assign/index.js");var f=__webpack_require__("./node_modules/react/index.js"),g=60103;if(exports.Fragment=60107,"function"==typeof Symbol&&Symbol.for){var h=Symbol.for;g=h("react.element"),exports.Fragment=h("react.fragment")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};function q(c,a,k){var b,d={},e=null,l=null;for(b in void 0!==k&&(e=""+k),void 0!==a.key&&(e=""+a.key),void 0!==a.ref&&(l=a.ref),a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q,exports.jsxs=q},"./node_modules/react/jsx-runtime.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";module.exports=__webpack_require__("./node_modules/react/cjs/react-jsx-runtime.production.min.js")},"./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))}}},"../frontend/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];arg&&(classes=appendClass(classes,parseValue(arg)))}return classes}function parseValue(arg){if("string"==typeof arg||"number"==typeof arg)return arg;if("object"!=typeof arg)return"";if(Array.isArray(arg))return classNames.apply(null,arg);if(arg.toString!==Object.prototype.toString&&!arg.toString.toString().includes("[native code]"))return arg.toString();var classes="";for(var key in arg)hasOwn.call(arg,key)&&arg[key]&&(classes=appendClass(classes,key));return classes}function appendClass(value,newClass){return newClass?value?value+" "+newClass:value+newClass:value}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__)}()}}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LElBQUlqTyxXQUdaLElBQUlnTyxRQUFVLEdBRWQsSUFBSyxJQUFJcFQsT0FBT3FULElBQ1hILE9BQU96VSxLQUFLNFUsSUFBS3JULE1BQVFxVCxJQUFJclQsT0FDaENvVCxRQUFVRSxZQUFZRixRQUFTcFQsTUFJakMsT0FBT29ULE9BQ1IsQ0FFQSxTQUFTRSxZQUFhelUsTUFBTzRVLFVBQzVCLE9BQUtBLFNBSUQ1VSxNQUNJQSxNQUFRLElBQU00VSxTQUdmNVUsTUFBUTRVLFNBUFA1VSxLQVFULENBRXFDNkUsT0FBT3pFLFNBQzNDa1UsV0FBV3hQLFFBQVV3UCxXQUNyQnpQLE9BQU96RSxRQUFVa1UsaUJBS2hCLEtBRndCLDhCQUFGLFdBQ3RCLE9BQU9BLFVBQ1AsZ0JBRm9CLE9BRXBCLDZDQUlILENBckVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL2FjY291bnRzL0NoYW5nZVVzZXJUeXBlRm9ybS5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL2xpYi91dGlsL3VybEhlbHBlcnMuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3NoYXJlZENvbXBvbmVudHMvU3lzdGVtRGlhbG9nL0NvbmZpcm1DYW5jZWxGb290ZXIuanN4Iiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL3NyYy9zaGFyZWRDb21wb25lbnRzL1N5c3RlbURpYWxvZy9GaWVsZC5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3NoYXJlZENvbXBvbmVudHMvU3lzdGVtRGlhbG9nL0hlYWRlci5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3NoYXJlZENvbXBvbmVudHMvU3lzdGVtRGlhbG9nL1N5c3RlbURpYWxvZy5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4uL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgaTE4biBmcm9tICdAY2RvL2xvY2FsZSc7XG5cbmltcG9ydCB7cGVnYXN1c30gZnJvbSAnLi4vbGliL3V0aWwvdXJsSGVscGVycyc7XG5pbXBvcnQge0ZpZWxkfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL1N5c3RlbURpYWxvZy9TeXN0ZW1EaWFsb2cnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFuZ2VVc2VyVHlwZUZvcm0gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIHZhbHVlczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZW1haWxPcHRJbjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB9KS5pc1JlcXVpcmVkLFxuICAgIHZhbGlkYXRpb25FcnJvcnM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGVtYWlsT3B0SW46IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgfSkuaXNSZXF1aXJlZCxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIH07XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3QgZmlyc3RJbnB1dCA9IFt0aGlzLmVtYWlsSW5wdXRdLmZpbHRlcih4ID0+IHgpWzBdO1xuICAgIGZpcnN0SW5wdXQgJiYgZmlyc3RJbnB1dC5mb2N1cygpO1xuICB9XG5cbiAgZm9jdXNPbkFuRXJyb3IoKSB7XG4gICAgY29uc3Qge3ZhbGlkYXRpb25FcnJvcnN9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAodmFsaWRhdGlvbkVycm9ycy5lbWFpbCkge1xuICAgICAgdGhpcy5lbWFpbElucHV0LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgb25FbWFpbENoYW5nZSA9IGV2ZW50ID0+XG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh7XG4gICAgICAuLi50aGlzLnByb3BzLnZhbHVlcyxcbiAgICAgIGVtYWlsOiBldmVudC50YXJnZXQudmFsdWUsXG4gICAgfSk7XG5cbiAgb25FbWFpbE9wdEluQ2hhbmdlID0gZXZlbnQgPT5cbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKHtcbiAgICAgIC4uLnRoaXMucHJvcHMudmFsdWVzLFxuICAgICAgZW1haWxPcHRJbjogZXZlbnQudGFyZ2V0LnZhbHVlLFxuICAgIH0pO1xuXG4gIG9uS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmICF0aGlzLnByb3BzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnByb3BzLm9uU3VibWl0KCk7XG4gICAgfVxuICB9O1xuXG4gIGVtYWlsT3B0SW5MYWJlbERldGFpbHMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzcGFuPlxuICAgICAgICB7aTE4bi5jaGFuZ2VVc2VyVHlwZU1vZGFsX2VtYWlsT3B0SW5fZGVzY3JpcHRpb24oKX17JyAnfVxuICAgICAgICA8YVxuICAgICAgICAgIGhyZWY9e3BlZ2FzdXMoJy9wcml2YWN5Jyl9XG4gICAgICAgICAgdGFiSW5kZXg9XCIzXCJcbiAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge2kxOG4uY2hhbmdlVXNlclR5cGVNb2RhbF9lbWFpbE9wdEluX3ByaXZhY3lQb2xpY3koKX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9zcGFuPlxuICAgICk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge3ZhbHVlcywgdmFsaWRhdGlvbkVycm9ycywgZGlzYWJsZWR9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAgPHA+e2kxOG4uY2hhbmdlVXNlclR5cGVNb2RhbF9kZXNjcmlwdGlvbl90b1RlYWNoZXIoKX08L3A+XG4gICAgICAgIDxGaWVsZFxuICAgICAgICAgIGxhYmVsPXtpMThuLmNoYW5nZVVzZXJUeXBlTW9kYWxfZW1haWxfbGFiZWwoKX1cbiAgICAgICAgICBsYWJlbERldGFpbHM9e2kxOG4uY2hhbmdlVXNlclR5cGVNb2RhbF9lbWFpbF9sYWJlbERldGFpbHMoKX1cbiAgICAgICAgICBlcnJvcj17dmFsaWRhdGlvbkVycm9ycy5lbWFpbH1cbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXMuZW1haWx9XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICB0YWJJbmRleD1cIjFcIlxuICAgICAgICAgICAgb25LZXlEb3duPXt0aGlzLm9uS2V5RG93bn1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uRW1haWxDaGFuZ2V9XG4gICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgbWF4TGVuZ3RoPVwiMjU1XCJcbiAgICAgICAgICAgIHNpemU9XCIyNTVcIlxuICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5pbnB1dH1cbiAgICAgICAgICAgIHJlZj17ZWwgPT4gKHRoaXMuZW1haWxJbnB1dCA9IGVsKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0ZpZWxkPlxuICAgICAgICA8RmllbGRcbiAgICAgICAgICBsYWJlbERldGFpbHM9e3RoaXMuZW1haWxPcHRJbkxhYmVsRGV0YWlscygpfVxuICAgICAgICAgIGVycm9yPXt2YWxpZGF0aW9uRXJyb3JzLmVtYWlsT3B0SW59XG4gICAgICAgID5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzLmVtYWlsT3B0SW59XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICB0YWJJbmRleD1cIjFcIlxuICAgICAgICAgICAgb25LZXlEb3duPXt0aGlzLm9uS2V5RG93bn1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uRW1haWxPcHRJbkNoYW5nZX1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIC4uLnN0eWxlcy5pbnB1dCxcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICByZWY9e2VsID0+ICh0aGlzLmVtYWlsT3B0SW5TZWxlY3QgPSBlbCl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIC8+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwieWVzXCI+e2kxOG4ueWVzKCl9PC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm9cIj57aTE4bi5ubygpfTwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L0ZpZWxkPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBzdHlsZXMgPSB7XG4gIGlucHV0OiB7XG4gICAgbWFyZ2luQm90dG9tOiA0LFxuICB9LFxufTtcbiIsImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIEF0dGVtcHQgdG8gY29uc3RydWN0IGFuIGFic29sdXRlIFBlZ2FzdXMgdXJsICh0aGF0IGlzLFxuICogc3RhcnRpbmcgd2l0aCBodHRwczovL2NvZGUub3JnIG9yIHRoZSBhcHByb3ByaWF0ZVxuICogZXF1aXZhbGVudCBmb3IgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQpIGZyb20gYSBnaXZlblxuICogcmVsYXRpdmUgdXJsLiAgSWYgd2UncmUgYWxyZWFkeSBvbiBwZWdhc3VzIHdlJ2xsXG4gKiBqdXN0IHJldHVybiB0aGUgcmVsYXRpdmUgdXJsLlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVXJsIC0gc2hvdWxkIHN0YXJ0IHdpdGggYVxuICogICBsZWFkaW5nIHNsYXNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGVnYXN1cyhyZWxhdGl2ZVVybCkge1xuICBpZiAod2luZG93LmRhc2hib2FyZCAmJiB3aW5kb3cuZGFzaGJvYXJkLkNPREVfT1JHX1VSTCkge1xuICAgIHJldHVybiB3aW5kb3cuZGFzaGJvYXJkLkNPREVfT1JHX1VSTCArIHJlbGF0aXZlVXJsO1xuICB9XG4gIHJldHVybiByZWxhdGl2ZVVybDtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBnbG9iYWwgVVJMIHByZWZpeCBmb3IgcGVnYXN1c1xuICogKGUuZy4gXCJodHRwczovL2NvZGUub3JnXCIpIGFsbG93aW5nIHRoZSBwZWdhc3VzKClcbiAqIG1ldGhvZCBhYm92ZSB0byBnZW5lcmF0ZSBhYnNvbHV0ZSBVUkxzLlxuICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpblxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UGVnYXN1c09yaWdpbihvcmlnaW4pIHtcbiAgd2luZG93LmRhc2hib2FyZCA9IHdpbmRvdy5kYXNoYm9hcmQgfHwge307XG4gIHdpbmRvdy5kYXNoYm9hcmQuQ09ERV9PUkdfVVJMID0gb3JpZ2luO1xufVxuXG4vKipcbiAqIEF0dGVtcHQgdG8gY29uc3RydWN0IGFuIGFic29sdXRlIFN0dWRpbyB1cmwgKHRoYXQgaXMsXG4gKiBzdGFydGluZyB3aXRoIGh0dHBzOi8vc3R1ZGlvLmNvZGUub3JnIG9yIHRoZSBhcHByb3ByaWF0ZVxuICogZXF1aXZhbGVudCBmb3IgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQpIGZyb20gYSBnaXZlblxuICogcmVsYXRpdmUgdXJsLiAgSWYgd2UncmUgYWxyZWFkeSBvbiBkYXNoYm9hcmQgd2UnbGxcbiAqIGp1c3QgcmV0dXJuIHRoZSByZWxhdGl2ZSB1cmwuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVVcmwgLSBzaG91bGQgc3RhcnQgd2l0aCBhXG4gKiAgIGxlYWRpbmcgc2xhc2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHVkaW8ocmVsYXRpdmVVcmwpIHtcbiAgaWYgKHdpbmRvdy5wZWdhc3VzICYmIHdpbmRvdy5wZWdhc3VzLlNUVURJT19VUkwpIHtcbiAgICByZXR1cm4gd2luZG93LnBlZ2FzdXMuU1RVRElPX1VSTCArIHJlbGF0aXZlVXJsO1xuICB9XG4gIHJldHVybiByZWxhdGl2ZVVybDtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBnbG9iYWwgVVJMIHByZWZpeCBmb3IgY29kZSBzdHVkaW9cbiAqIChlLmcuIFwiaHR0cHM6Ly9zdHVkaW8uY29kZS5vcmdcIikgYWxsb3dpbmcgdGhlIHN0dWRpbygpXG4gKiBtZXRob2QgYWJvdmUgdG8gZ2VuZXJhdGUgYWJzb2x1dGUgVVJMcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFN0dWRpb09yaWdpbihvcmlnaW4pIHtcbiAgd2luZG93LnBlZ2FzdXMgPSB3aW5kb3cucGVnYXN1cyB8fCB7fTtcbiAgd2luZG93LnBlZ2FzdXMuU1RVRElPX1VSTCA9IG9yaWdpbjtcbn1cblxuLyoqXG4gKiBGZXRjaCB0aGUgbWV0YSBkZXNjcmlwdGlvbiB0YWcgZnJvbSB0aGUgc3BlY2lmaWVkIHVybFxuICogTWVtb2l6ZSBzbyB0aGF0IHdlIG9ubHkgcmVxdWVzdCBvbmNlIHBlciByZWxhdGl2ZSB1cmwuXG4gKi9cbmV4cG9ydCBjb25zdCBtZXRhVGFnRGVzY3JpcHRpb24gPSBfLm1lbW9pemUocmVsYXRpdmVVcmwgPT4ge1xuICByZXR1cm4gZmV0Y2gocmVsYXRpdmVVcmwpXG4gICAgLnRoZW4ocmVzcG9uc2UgPT4gUHJvbWlzZS5hbGwoW3Jlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2UudGV4dCgpXSkpXG4gICAgLnRoZW4oKFtzdGF0dXMsIHRleHRdKSA9PiB7XG4gICAgICAvLyBDYXRjaCBmZXRjaCdzIDQwMCBlcnJvcnNcbiAgICAgIGlmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID49IDMwMCkge1xuICAgICAgICByZXR1cm4gcmVsYXRpdmVVcmw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtZXRhVGFnID0gJCh0ZXh0KVxuICAgICAgICAgIC5maWx0ZXIoXCJtZXRhW25hbWU9J2Rlc2NyaXB0aW9uJ11cIilcbiAgICAgICAgICAuYXR0cignY29udGVudCcpO1xuICAgICAgICAvLyBSZXR1cm4gdXJsIGlmIHRoZXJlIHdhcyBubyBkZXNjcmlwdGlvbiBtZXRhIHRhZ1xuICAgICAgICByZXR1cm4gbWV0YVRhZyB8fCByZWxhdGl2ZVVybDtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaChlcnJvciA9PiByZWxhdGl2ZVVybCk7XG59KTtcblxuZXhwb3J0IGNvbnN0IEFERF9BX1BFUlNPTkFMX0xPR0lOX0hFTFBfVVJMID1cbiAgJ2h0dHBzOi8vc3VwcG9ydC5jb2RlLm9yZy9oYy9lbi11cy9hcnRpY2xlcy8xMTUwMDE0NzUxMzEtQWRkaW5nLWEtcGVyc29uYWwtbG9naW4tdG8tYS10ZWFjaGVyLWNyZWF0ZWQtYWNjb3VudCc7XG5leHBvcnQgY29uc3QgUkVMRUFTRV9PUl9ERUxFVEVfUkVDT1JEU19FWFBMQU5BVElPTiA9XG4gICdodHRwczovL3N1cHBvcnQuY29kZS5vcmcvaGMvZW4tdXMvYXJ0aWNsZXMvMzYwMDE1OTgzNjMxJztcbiIsImltcG9ydCBCdXR0b24sIHtidXR0b25Db2xvcnN9IGZyb20gJ0Bjb2RlLWRvdC1vcmcvY29tcG9uZW50LWxpYnJhcnkvYnV0dG9uJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgY29sb3IgZnJvbSAnQGNkby9hcHBzL3V0aWwvY29sb3InO1xuaW1wb3J0IGkxOG4gZnJvbSAnQGNkby9sb2NhbGUnO1xuXG4vKipcbiAqIEZvb3RlciBmb3IgYSBcIlN5c3RlbVwiIGRpYWxvZyBzdHlsZSB1c2VkIG9uIGFjY291bnQgcGFnZXMuXG4gKiBBbHdheXMgaGFzIGFuIE9LIGJ1dHRvbiBhbmQgYSBDYW5jZWwgYnV0dG9uIChPSyB0ZXh0IGNhbiBiZSBjdXN0b21pemVkKS5cbiAqIEJ1dHRvbnMgY2FuIGJlIGRpc2FibGVkLlxuICogQW55IGNoaWxkcmVuIGFyZSByZW5kZXJlZCBpbiBhIG1lc3NhZ2UgYXJlYSB0byB0aGUgbGVmdCBvZiB0aGUgT0sgYnV0dG9uLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25maXJtQ2FuY2VsRm9vdGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBvbkNvbmZpcm06IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25DYW5jZWw6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgY29uZmlybVRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2FuY2VsVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjb25maXJtQ29sb3I6IFByb3BUeXBlcy5vbmVPZihPYmplY3QudmFsdWVzKGJ1dHRvbkNvbG9ycykpLFxuICAgIGNhbmNlbENvbG9yOiBQcm9wVHlwZXMub25lT2YoT2JqZWN0LnZhbHVlcyhidXR0b25Db2xvcnMpKSxcbiAgICBkaXNhYmxlQ29uZmlybTogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGlzYWJsZUNhbmNlbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5hbnksXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjb25maXJtVGV4dDogaTE4bi5kaWFsb2dPSygpLFxuICAgIGNhbmNlbFRleHQ6IGkxOG4uY2FuY2VsKCksXG4gICAgY29uZmlybUNvbG9yOiBidXR0b25Db2xvcnMucHVycGxlLFxuICAgIGNhbmNlbENvbG9yOiBidXR0b25Db2xvcnMuYmxhY2ssXG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG9uQ29uZmlybSxcbiAgICAgIG9uQ2FuY2VsLFxuICAgICAgY29uZmlybVRleHQsXG4gICAgICBjYW5jZWxUZXh0LFxuICAgICAgY29uZmlybUNvbG9yLFxuICAgICAgY2FuY2VsQ29sb3IsXG4gICAgICBkaXNhYmxlQ29uZmlybSxcbiAgICAgIGRpc2FibGVDYW5jZWwsXG4gICAgICBjaGlsZHJlbixcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17c3R5bGV9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgdGV4dD17Y29uZmlybVRleHR9XG4gICAgICAgICAgb25DbGljaz17b25Db25maXJtfVxuICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXG4gICAgICAgICAgY29sb3I9e2NvbmZpcm1Db2xvcn1cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZUNvbmZpcm19XG4gICAgICAgICAgc3R5bGU9e2J1dHRvblN0eWxlfVxuICAgICAgICAvPlxuICAgICAgICA8c3BhbiBzdHlsZT17bWVzc2FnZVN0eWxlfT57Y2hpbGRyZW59PC9zcGFuPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgdGV4dD17Y2FuY2VsVGV4dH1cbiAgICAgICAgICBvbkNsaWNrPXtvbkNhbmNlbH1cbiAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgY29sb3I9e2NhbmNlbENvbG9yfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlQ2FuY2VsfVxuICAgICAgICAgIHN0eWxlPXtidXR0b25TdHlsZX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3Qgc3R5bGUgPSB7XG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgZmxleERpcmVjdGlvbjogJ3Jvdy1yZXZlcnNlJyxcbiAgYWxpZ25JdGVtczogJ2ZsZXgtZW5kJyxcbiAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gIGJvcmRlckNvbG9yOiBjb2xvci5saWdodGVyX2dyYXksXG4gIGJvcmRlclRvcFdpZHRoOiAxLFxuICBib3JkZXJCb3R0b21XaWR0aDogMCxcbiAgYm9yZGVyUmlnaHRXaWR0aDogMCxcbiAgYm9yZGVyTGVmdFdpZHRoOiAwLFxuICBwYWRkaW5nVG9wOiAxMCxcbiAgbWFyZ2luVG9wOiAxMCxcbn07XG5cbmNvbnN0IG1lc3NhZ2VTdHlsZSA9IHtcbiAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gIGxpbmVIZWlnaHQ6ICczNHB4JyxcbiAgdGV4dEFsaWduOiAncmlnaHQnLFxuICB2ZXJ0aWNhbEFsaWduOiAndG9wJyxcbiAgbWFyZ2luTGVmdDogJzFlbScsXG4gIG1hcmdpblJpZ2h0OiAnMWVtJyxcbiAgZmxleEdyb3c6IDEsXG59O1xuXG5jb25zdCBidXR0b25TdHlsZSA9IHtcbiAgZmxleFNocmluazogMCxcbn07XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IGNvbG9yIGZyb20gJ0BjZG8vYXBwcy91dGlsL2NvbG9yJztcblxuaW1wb3J0IHtjcmVhdGVVdWlkfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbi8qKlxuICogRmllbGQgd3JhcHBlciBmb3IgYSBcIlN5c3RlbVwiIGRpYWxvZyBzdHlsZS5cbiAqXG4gKiBDYW4gYmUgZ2l2ZW4gYW55IChvciBub25lKSBvZiBhIGxhYmVsLCBsYWJlbERldGFpbHMsIGFuZC9vciBlcnJvciAtIGFsbFxuICogcGxhaW4gdGV4dC4gIFRoZXknbGwgYmUgZm9ybWF0dGVkIHByb3Blcmx5IGFuZCB3cmFwIHRoZSBmaWVsZCBhcyBuZWVkZWQuXG4gKiBUYWtlcyBhIHNpbmdsZSBjaGlsZCwgd2hpY2ggc2hvdWxkIGJlIGEgZm9ybSBjb250cm9sXG4gKiBXaWxsIGF1dG9tYXRpY2FsbHkgc2V0IGFuIGlkIG9uIHRoZSBpbnB1dCBlbGVtZW50IHRvIGJpbmQgdGhlIGxhYmVsIHRvIGl0XG4gKiBwcm9wZXJseS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmllbGQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGxhYmVsRGV0YWlsczogUHJvcFR5cGVzLm5vZGUsXG4gICAgZXJyb3I6IFByb3BUeXBlcy5hbnksXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5lbGVtZW50LmlzUmVxdWlyZWQsXG4gICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy51bmlxdWVJZCA9IGNyZWF0ZVV1aWQoKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7bGFiZWwsIGxhYmVsRGV0YWlscywgZXJyb3IsIGNoaWxkcmVuLCBzdHlsZX0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgbWFyZ2luQm90dG9tOiAxNSxcbiAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgeyhsYWJlbCB8fCBsYWJlbERldGFpbHMpICYmIChcbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGh0bWxGb3I9e3RoaXMudW5pcXVlSWR9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICAgICAgICBjb2xvcjogY29sb3IuY2hhcmNvYWwsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYWJlbCAmJiAoXG4gICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7Zm9udFdlaWdodDogJ2JvbGQnLCBtYXJnaW5SaWdodDogJzFlbSd9fT5cbiAgICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7bGFiZWxEZXRhaWxzICYmIDxzcGFuPntsYWJlbERldGFpbHN9PC9zcGFuPn1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICApfVxuICAgICAgICB7UmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7aWQ6IHRoaXMudW5pcXVlSWR9KX1cbiAgICAgICAge2Vycm9yICYmIDxGaWVsZEVycm9yPntlcnJvcn08L0ZpZWxkRXJyb3I+fVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBGaWVsZEVycm9yID0gKHtjaGlsZHJlbn0pID0+IChcbiAgPGRpdlxuICAgIHN0eWxlPXt7XG4gICAgICBjb2xvcjogY29sb3IucmVkLFxuICAgICAgZm9udFN0eWxlOiAnaXRhbGljJyxcbiAgICB9fVxuICA+XG4gICAge2NoaWxkcmVufVxuICA8L2Rpdj5cbik7XG5GaWVsZEVycm9yLnByb3BUeXBlcyA9IHtjaGlsZHJlbjogUHJvcFR5cGVzLnN0cmluZ307XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IGZvbnRDb25zdGFudHMgZnJvbSAnQGNkby9hcHBzL2ZvbnRDb25zdGFudHMnO1xuaW1wb3J0IGNvbG9yIGZyb20gJ0BjZG8vYXBwcy91dGlsL2NvbG9yJztcblxuLyoqXG4gKiBIZWFkZXIgZm9yIGEgXCJTeXN0ZW1cIiBkaWFsb2cgc3R5bGUgdXNlZCBvbiBhY2NvdW50IHBhZ2VzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIZWFkZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBoaWRlQm9yZGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IHtcbiAgICAgIC4uLnN0eWxlLFxuICAgICAgLi4uKHRoaXMucHJvcHMuaGlkZUJvcmRlciAmJiB7XG4gICAgICAgIGJvcmRlckJvdHRvbVdpZHRoOiAwLFxuICAgICAgICBwYWRkaW5nQm90dG9tOiA1LFxuICAgICAgfSksXG4gICAgfTtcbiAgICByZXR1cm4gPGgxIHN0eWxlPXtjb21wdXRlZFN0eWxlfT57dGhpcy5wcm9wcy50ZXh0fTwvaDE+O1xuICB9XG59XG5cbmNvbnN0IHN0eWxlID0ge1xuICBmb250U2l6ZTogMTYsXG4gIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgY29sb3I6IGNvbG9yLmNoYXJjb2FsLFxuICAuLi5mb250Q29uc3RhbnRzWydtYWluLWZvbnQtc2VtaS1ib2xkJ10sXG4gIGJvcmRlclN0eWxlOiAnc29saWQnLFxuICBib3JkZXJDb2xvcjogY29sb3IubGlnaHRlcl9ncmF5LFxuICBib3JkZXJUb3BXaWR0aDogMCxcbiAgYm9yZGVyQm90dG9tV2lkdGg6IDEsXG4gIGJvcmRlclJpZ2h0V2lkdGg6IDAsXG4gIGJvcmRlckxlZnRXaWR0aDogMCxcbiAgcGFkZGluZ0JvdHRvbTogMTAsXG4gIHBhZGRpbmdUb3A6IDAsXG4gIHBhZGRpbmdMZWZ0OiAwLFxuICBwYWRkaW5nUmlnaHQ6IDAsXG4gIG1hcmdpbkJvdHRvbTogMTAsXG4gIG1hcmdpblRvcDogMTAsXG59O1xuIiwiaW1wb3J0IENvbmZpcm1DYW5jZWxGb290ZXIgZnJvbSAnLi9Db25maXJtQ2FuY2VsRm9vdGVyJztcbmltcG9ydCBGaWVsZCBmcm9tICcuL0ZpZWxkJztcbmltcG9ydCBIZWFkZXIgZnJvbSAnLi9IZWFkZXInO1xuZXhwb3J0IHtIZWFkZXIsIEZpZWxkLCBDb25maXJtQ2FuY2VsRm9vdGVyfTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfayA9IDA7IF9rIDwgbW9kdWxlcy5sZW5ndGg7IF9rKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2tdKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW1cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGVtcHR5RnVuY3Rpb247XG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIFN5bWJvbC5mb3IgJiZcbiAgICBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykpIHx8XG4gICAgMHhlYWM3O1xuXG4gIHZhciBpc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJlxuICAgICAgb2JqZWN0ICE9PSBudWxsICYmXG4gICAgICBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbiAgfTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MTcuMC4yXG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7cmVxdWlyZShcIm9iamVjdC1hc3NpZ25cIik7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGc9NjAxMDM7ZXhwb3J0cy5GcmFnbWVudD02MDEwNztpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yKXt2YXIgaD1TeW1ib2wuZm9yO2c9aChcInJlYWN0LmVsZW1lbnRcIik7ZXhwb3J0cy5GcmFnbWVudD1oKFwicmVhY3QuZnJhZ21lbnRcIil9dmFyIG09Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsayl7dmFyIGIsZD17fSxlPW51bGwsbD1udWxsO3ZvaWQgMCE9PWsmJihlPVwiXCIrayk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYobD1hLnJlZik7Zm9yKGIgaW4gYSluLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6Zyx0eXBlOmMsa2V5OmUscmVmOmwscHJvcHM6ZCxfb3duZXI6bS5jdXJyZW50fX1leHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHN0eWxlc0luRE9NID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5ET00ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5ET01baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleEJ5SWRlbnRpZmllciA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXSxcbiAgICAgIHN1cHBvcnRzOiBpdGVtWzRdLFxuICAgICAgbGF5ZXI6IGl0ZW1bNV1cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4QnlJZGVudGlmaWVyICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB1cGRhdGVyID0gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLmJ5SW5kZXggPSBpO1xuICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKGksIDAsIHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlcixcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYXBpID0gb3B0aW9ucy5kb21BUEkob3B0aW9ucyk7XG4gIGFwaS51cGRhdGUob2JqKTtcblxuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGFwaS51cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdXBkYXRlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cblxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcblxuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHN0eWxlc0luRE9NW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRPTVtfaW5kZXhdLnVwZGF0ZXIoKTtcblxuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgbWVtbyA9IHt9O1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXQpIHtcbiAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gIH1cblxuICByZXR1cm4gbWVtb1t0YXJnZXRdO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gIH1cblxuICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuXG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cblxuICBjc3MgKz0gb2JqLmNzcztcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLyohXG5cdENvcHlyaWdodCAoYykgMjAxOCBKZWQgV2F0c29uLlxuXHRMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuXHRodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMgKCkge1xuXHRcdHZhciBjbGFzc2VzID0gJyc7XG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGFyZyA9IGFyZ3VtZW50c1tpXTtcblx0XHRcdGlmIChhcmcpIHtcblx0XHRcdFx0Y2xhc3NlcyA9IGFwcGVuZENsYXNzKGNsYXNzZXMsIHBhcnNlVmFsdWUoYXJnKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXM7XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZVZhbHVlIChhcmcpIHtcblx0XHRpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiBhcmc7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBhcmcgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKTtcblx0XHR9XG5cblx0XHRpZiAoYXJnLnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nICYmICFhcmcudG9TdHJpbmcudG9TdHJpbmcoKS5pbmNsdWRlcygnW25hdGl2ZSBjb2RlXScpKSB7XG5cdFx0XHRyZXR1cm4gYXJnLnRvU3RyaW5nKCk7XG5cdFx0fVxuXG5cdFx0dmFyIGNsYXNzZXMgPSAnJztcblxuXHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0Y2xhc3NlcyA9IGFwcGVuZENsYXNzKGNsYXNzZXMsIGtleSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXM7XG5cdH1cblxuXHRmdW5jdGlvbiBhcHBlbmRDbGFzcyAodmFsdWUsIG5ld0NsYXNzKSB7XG5cdFx0aWYgKCFuZXdDbGFzcykge1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblx0XG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWUgKyAnICcgKyBuZXdDbGFzcztcblx0XHR9XG5cdFxuXHRcdHJldHVybiB2YWx1ZSArIG5ld0NsYXNzO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIl0sIm5hbWVzIjpbIl9wcm9wVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIl9sb2NhbGUiLCJfdXJsSGVscGVycyIsIl9TeXN0ZW1EaWFsb2ciLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIm93bktleXMiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3NldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJiaW5kIiwiX19wcm90b19fIiwiX3RvUHJvcGVydHlLZXkiLCJpIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIkNoYW5nZVVzZXJUeXBlRm9ybSIsImV4cG9ydHMiLCJfUmVhY3QkQ29tcG9uZW50IiwiX3RoaXMiLCJfbGVuIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNvbmNhdCIsImV2ZW50IiwicHJvcHMiLCJvbkNoYW5nZSIsInZhbHVlcyIsImVtYWlsIiwidGFyZ2V0IiwiZW1haWxPcHRJbiIsImtleSIsImRpc2FibGVkIiwib25TdWJtaXQiLCJfaW5oZXJpdHNMb29zZSIsImNyZWF0ZSIsIl9wcm90byIsImNvbXBvbmVudERpZE1vdW50IiwiZmlyc3RJbnB1dCIsInRoaXMiLCJlbWFpbElucHV0IiwieCIsImZvY3VzIiwiZm9jdXNPbkFuRXJyb3IiLCJ2YWxpZGF0aW9uRXJyb3JzIiwiZW1haWxPcHRJbkxhYmVsRGV0YWlscyIsImNyZWF0ZUVsZW1lbnQiLCJpMThuIiwiY2hhbmdlVXNlclR5cGVNb2RhbF9lbWFpbE9wdEluX2Rlc2NyaXB0aW9uIiwiaHJlZiIsInBlZ2FzdXMiLCJ0YWJJbmRleCIsInJlbCIsImNoYW5nZVVzZXJUeXBlTW9kYWxfZW1haWxPcHRJbl9wcml2YWN5UG9saWN5IiwicmVuZGVyIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMiLCJjaGFuZ2VVc2VyVHlwZU1vZGFsX2Rlc2NyaXB0aW9uX3RvVGVhY2hlciIsIkZpZWxkIiwibGFiZWwiLCJjaGFuZ2VVc2VyVHlwZU1vZGFsX2VtYWlsX2xhYmVsIiwibGFiZWxEZXRhaWxzIiwiY2hhbmdlVXNlclR5cGVNb2RhbF9lbWFpbF9sYWJlbERldGFpbHMiLCJlcnJvciIsInR5cGUiLCJvbktleURvd24iLCJvbkVtYWlsQ2hhbmdlIiwiYXV0b0NvbXBsZXRlIiwibWF4TGVuZ3RoIiwic2l6ZSIsInN0eWxlIiwic3R5bGVzIiwiaW5wdXQiLCJyZWYiLCJlbCIsIm9uRW1haWxPcHRJbkNoYW5nZSIsIndpZHRoIiwiZW1haWxPcHRJblNlbGVjdCIsInllcyIsIm5vIiwiUmVhY3QiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJzaGFwZSIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJib29sIiwiZnVuYyIsIm1hcmdpbkJvdHRvbSIsIm1vZHVsZSIsImRlZmF1bHQiLCJyZWxhdGl2ZVVybCIsIndpbmRvdyIsImRhc2hib2FyZCIsIkNPREVfT1JHX1VSTCIsInNldFBlZ2FzdXNPcmlnaW4iLCJvcmlnaW4iLCJzZXRTdHVkaW9PcmlnaW4iLCJTVFVESU9fVVJMIiwic3R1ZGlvIiwiX2pxdWVyeSIsIl9sb2Rhc2giLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsImlzQXJyYXkiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJsIiwibiIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiX25vbkl0ZXJhYmxlUmVzdCIsIl8iLCJtZW1vaXplIiwiZmV0Y2giLCJ0aGVuIiwicmVzcG9uc2UiLCJQcm9taXNlIiwiYWxsIiwic3RhdHVzIiwidGV4dCIsIl9yZWYiLCJfcmVmMiIsIiQiLCJhdHRyIiwiX2J1dHRvbiIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiaGFzIiwiZ2V0IiwiaGFzT3duUHJvcGVydHkiLCJzZXQiLCJfY29sb3IiLCJXZWFrTWFwIiwiQ29uZmlybUNhbmNlbEZvb3RlciIsIm9uQ29uZmlybSIsIm9uQ2FuY2VsIiwiY29uZmlybVRleHQiLCJjYW5jZWxUZXh0IiwiY29uZmlybUNvbG9yIiwiY2FuY2VsQ29sb3IiLCJkaXNhYmxlQ29uZmlybSIsImRpc2FibGVDYW5jZWwiLCJjaGlsZHJlbiIsIm9uQ2xpY2siLCJjb2xvciIsImJ1dHRvblN0eWxlIiwibWVzc2FnZVN0eWxlIiwib25lT2YiLCJidXR0b25Db2xvcnMiLCJhbnkiLCJkaWFsb2dPSyIsImNhbmNlbCIsInB1cnBsZSIsImJsYWNrIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJib3JkZXJTdHlsZSIsImJvcmRlckNvbG9yIiwibGlnaHRlcl9ncmF5IiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJMZWZ0V2lkdGgiLCJwYWRkaW5nVG9wIiwibWFyZ2luVG9wIiwibGluZUhlaWdodCIsInRleHRBbGlnbiIsInZlcnRpY2FsQWxpZ24iLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJmbGV4R3JvdyIsImZsZXhTaHJpbmsiLCJfdXRpbHMiLCJ1bmlxdWVJZCIsImNyZWF0ZVV1aWQiLCJodG1sRm9yIiwiY2hhcmNvYWwiLCJmb250V2VpZ2h0IiwiY2xvbmVFbGVtZW50IiwiaWQiLCJGaWVsZEVycm9yIiwibm9kZSIsImVsZW1lbnQiLCJvYmplY3QiLCJyZWQiLCJmb250U3R5bGUiLCJwcm9wVHlwZXMiLCJfZm9udENvbnN0YW50cyIsIkhlYWRlciIsImNvbXB1dGVkU3R5bGUiLCJoaWRlQm9yZGVyIiwicGFkZGluZ0JvdHRvbSIsImZvbnRTaXplIiwiZm9udENvbnN0YW50cyIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiX0NvbmZpcm1DYW5jZWxGb290ZXIiLCJfRmllbGQiLCJfSGVhZGVyIiwiY3NzV2l0aE1hcHBpbmdUb1N0cmluZyIsImxpc3QiLCJtYXAiLCJpdGVtIiwiY29udGVudCIsIm5lZWRMYXllciIsImpvaW4iLCJtb2R1bGVzIiwibWVkaWEiLCJkZWR1cGUiLCJzdXBwb3J0cyIsImxheWVyIiwidW5kZWZpbmVkIiwiYWxyZWFkeUltcG9ydGVkTW9kdWxlcyIsImsiLCJfayIsImNzc01hcHBpbmciLCJidG9hIiwiYmFzZTY0IiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJKU09OIiwic3RyaW5naWZ5IiwiZGF0YSIsInNvdXJjZU1hcHBpbmciLCJzb3VyY2VVUkxzIiwic291cmNlcyIsInNvdXJjZSIsInNvdXJjZVJvb3QiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJzaGltIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJlcnIiLCJFcnJvciIsImdldFNoaW0iLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwibnVtYmVyIiwic3ltYm9sIiwiYXJyYXlPZiIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mVHlwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJnIiwiRnJhZ21lbnQiLCJmb3IiLCJoIiwibSIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImIiLCJkIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJfb3duZXIiLCJjdXJyZW50IiwianN4IiwianN4cyIsInN0eWxlc0luRE9NIiwiZ2V0SW5kZXhCeUlkZW50aWZpZXIiLCJpZGVudGlmaWVyIiwicmVzdWx0IiwibW9kdWxlc1RvRG9tIiwib3B0aW9ucyIsImlkQ291bnRNYXAiLCJpZGVudGlmaWVycyIsImJhc2UiLCJjb3VudCIsImluZGV4QnlJZGVudGlmaWVyIiwib2JqIiwiY3NzIiwic291cmNlTWFwIiwicmVmZXJlbmNlcyIsInVwZGF0ZXIiLCJhZGRFbGVtZW50U3R5bGUiLCJieUluZGV4Iiwic3BsaWNlIiwiYXBpIiwiZG9tQVBJIiwidXBkYXRlIiwibmV3T2JqIiwicmVtb3ZlIiwibGFzdElkZW50aWZpZXJzIiwibmV3TGlzdCIsImluZGV4IiwibmV3TGFzdElkZW50aWZpZXJzIiwiX2kiLCJfaW5kZXgiLCJtZW1vIiwiaW5zZXJ0QnlTZWxlY3RvciIsImluc2VydCIsImdldFRhcmdldCIsInN0eWxlVGFyZ2V0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiSFRNTElGcmFtZUVsZW1lbnQiLCJjb250ZW50RG9jdW1lbnQiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJpbnNlcnRTdHlsZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGVzIiwiYXR0cmlidXRlcyIsInNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyIsInN0eWxlRWxlbWVudCIsIm5vbmNlIiwic2V0QXR0cmlidXRlIiwic3R5bGVUYWdUcmFuc2Zvcm0iLCJyZW1vdmVTdHlsZUVsZW1lbnQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJzdHlsZVNoZWV0IiwiY3NzVGV4dCIsImZpcnN0Q2hpbGQiLCJjcmVhdGVUZXh0Tm9kZSIsImhhc093biIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiYXJnIiwiYXBwZW5kQ2xhc3MiLCJwYXJzZVZhbHVlIiwiaW5jbHVkZXMiLCJuZXdDbGFzcyJdLCJzb3VyY2VSb290IjoiIn0=