nsc-react-component 4.2.5 → 4.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/base/chart/index.js +1 -2
- package/lib/base/chart/index.js.map +1 -1
- package/lib/base/importData/index.js +4 -3
- package/lib/base/importData/index.js.map +1 -1
- package/lib/page/BasePage/index.js +4 -4
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/page/FormPage/index.js +13 -17
- package/lib/page/FormPage/index.js.map +1 -1
- package/lib/page/SettingTable/index.js +4 -6
- package/lib/page/SettingTable/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PureComponent","Form","getNode","message","Col","Row","isEmptyObj","getLocalStore","dayjs","lodash","Button","Upload","cls","NscRequest","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","props","editType","editorFlag","value","dictNames","fileList","width","editId","ev","data","JSON","parse","_this","eventType","payload","close","setState","componentDidMount","window","addEventListener","listenMessage","formType","requestObject","detailUrl","get","params","id","state","xssFilter","then","res","code","_this$formRef$current","formRef","current","setFieldsValue","_objectSpread","_this$formRef$current2","defaultValu","componentWillUnmount","removeEventListener","show","orgValue","editorflag","length","undefined","callBack","_this$formRef$current3","convertValue","showForm","afterRender","_this$formRef$current4","defaultValue","hide","_this$formRef$current5","onHideForm","hideForm","_this$formRef$current6","setLoading","setEditType","type","setEditId","getFormValue","_this$formRef$current7","formValue","getFieldsValue","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","rangerDate","dateFormat","e","values","cloneDeep","value1","value2","setFormValue","_this$formRef$current8","newValue","doSubmit","formdata","_this$formRef$current9","submitUrl","submitParams","requestConfig","addUrl","editorUrl","addParams","editorParams","url","Utils","func","Function","converParams","console","otherParams","_objectWithoutProperties","_excluded","onSubmit","noUndefined","success","setTimeout","obj","fileId","fileName","status","push","_this$formRef$current10","valid","validateFields","catch","errorInfo","valueChange","_ref","valueOption","dictName","newNames","onChange","eventOption","funcs","refs","refList","valueStr","selfFunc","renderForm","forms","newValid","createElement","gutter","index","_item$props","itemProps","valueFormat","name","split","allowChars","placeholder","concat","bind","dataType","disabled","rules","required","itemRef","_item$props2","span","style","display","Item","componentName","noStyle","formRender","ref","_item$props3","_item$props4","_item$props5","_extends","onListChange","list","showUploadList","showDownloadIcon","showRemoveIcon","children","render","footer","title","selfButtons","selfPanes","child","_child$props","pageType","modalProps","onOk","onCancel","okButtonProps","centered","footerButton","drawerProps","onClose","newFormsObj","formGroups","otherGrups","defalutValue","groupName","indexOf","groupForms","form","PaneWithoutPageType","Pane","cleanProps","_excluded2","showModel","onValuesChange","changedValues","allValues","onFormChange","changeValid","className","Object","keys","footerClassName","cancelButtonProps","onClick"],"sources":["../../../src/components/page/FormPage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport message from \"../../base/message\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj, getLocalStore } from \"@bj-nsc/functions\";\r\nimport dayjs from \"dayjs\";\r\nimport \"./index.module.less\";\r\nimport lodash from \"lodash\";\r\nimport Button from \"../../base/button\";\r\nimport Upload from \"../../base/upload\";\r\nimport cls from \"classnames\";\r\nimport { IFormProps } from \"src/components/base/form/Form\";\r\nimport NscRequest from \"nsc-request\";\r\nimport omit from \"omit.js\";\r\nexport interface FormPageProps {\r\n forms?: Array<any>; //是否显示操作列\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n footerClassName?: any;\r\n okButtonProps?: any;\r\n cancelButtonProps?: any;\r\n footer?: ReactNode | boolean;\r\n children?: React.ReactNode;\r\n onFormChange?: (value?: any, allValue?: any) => void;\r\n submitParams?: any; //添加参数,默认mothod:post, 参数通过data传递\r\n funcs?: any;\r\n props?: IFormProps;\r\n requestObject?: {\r\n addUrl?: string;\r\n editorUrl?: string;\r\n addParams?: any;\r\n editorParams?: any;\r\n detailUrl?: string;\r\n };\r\n requestConfig?: any;\r\n footerWidth?: boolean;\r\n editType?: \"新增\" | \"编辑\" | \"查看\";\r\n title?: string;\r\n editId?: string;\r\n [propsName: string]: any;\r\n}\r\nclass FormPage extends PureComponent<FormPageProps, any> {\r\n formRef = React.createRef<any>();\r\n state = {\r\n loading: false,\r\n label: this.props.editType || \"\",\r\n editorFlag: true,\r\n value: {} as any,\r\n dictNames: {} as any,\r\n fileList: {} as any,\r\n width: getLocalStore(\"nsc-home-menuCollsape\") || false,\r\n editId: this.props.editId || \"\",\r\n };\r\n valid: any = [];\r\n dateValueFormat = {} as any;\r\n dateFormat = {} as any;\r\n fileFormat = [] as any;\r\n rangerDate = {} as any;\r\n refList = {} as any;\r\n submitFlag = true;\r\n componentDidMount(): void {\r\n window.addEventListener(\"message\", this.listenMessage);\r\n const {\r\n formType = \"page\",\r\n requestObject = {},\r\n editType = \"新增\",\r\n } = this.props;\r\n if (formType == \"page\") {\r\n if (requestObject.detailUrl && editType !== \"新增\") {\r\n NscRequest.get(requestObject.detailUrl, {\r\n params: { id: this.state.editId },\r\n xssFilter: false,\r\n }).then((res) => {\r\n if (res.code == 200) {\r\n this.formRef.current?.setFieldsValue({ ...res.data });\r\n }\r\n });\r\n } else if (editType == \"新增\") {\r\n this.formRef.current?.setFieldsValue(this.props.defaultValu || {});\r\n }\r\n }\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"message\", this.listenMessage);\r\n }\r\n listenMessage = (ev) => {\r\n const data = typeof ev.data === \"string\" ? JSON.parse(ev.data) : ev.data;\r\n let _this = this;\r\n if (data.eventType == \"menuCollsape\") {\r\n const { payload } = data;\r\n if (payload.close === true || payload.close === false) {\r\n _this.setState({ width: payload.close });\r\n }\r\n }\r\n };\r\n //表单显示\r\n show(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n let label = \"新增\";\r\n if (orgValue && editorflag == \"editor\") {\r\n label = \"编辑\";\r\n } else if (orgValue && (editorflag == \"detail\" || editorflag == \"search\")) {\r\n label = \"查看\";\r\n }\r\n if (orgValue) {\r\n this.setState(\r\n {\r\n label: label,\r\n value: orgValue,\r\n editId: orgValue.id,\r\n },\r\n () => {\r\n let value = this.convertValue(orgValue, label);\r\n //处理文件数据\r\n this.formRef.current?.showForm(value, {\r\n afterRender: () => {\r\n callBack && callBack();\r\n },\r\n });\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n label: label,\r\n },\r\n () => {\r\n this.formRef.current?.showForm(this.props.defaultValue, {\r\n afterRender: () => {\r\n callBack && callBack();\r\n },\r\n });\r\n }\r\n );\r\n }\r\n }\r\n hide(hide = true) {\r\n const { onHideForm } = this.props;\r\n if (onHideForm) {\r\n onHideForm && onHideForm();\r\n return;\r\n }\r\n this.setState({ loading: false, fileList: {} });\r\n hide && this.formRef.current?.hideForm();\r\n }\r\n hideForm() {\r\n this.setState({ loading: false, fileList: {} });\r\n this.formRef.current?.hideForm();\r\n }\r\n showForm(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n this.show(orgValue, editorflag, callBack);\r\n }\r\n setLoading(loading: boolean) {\r\n this.setState({ loading: loading });\r\n }\r\n setEditType(type) {\r\n this.setState({\r\n label: type,\r\n });\r\n }\r\n setEditId(id) {\r\n this.setState({\r\n editId: id,\r\n });\r\n }\r\n getFormValue() {\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let data = { ...formValue, ...dictNames };\r\n if (this.fileFormat.length > 0) {\r\n let newFileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n if (fileList[item].length == 0) {\r\n newFileList[item] = null;\r\n } else {\r\n if (!formValue[item]) {\r\n newFileList[item] = this.getFileList(fileList[item] || []);\r\n }\r\n }\r\n });\r\n data = { ...data, ...newFileList };\r\n }\r\n if (!this.submitFlag) {\r\n message.error(\"请等待所有文件上传完成!\");\r\n return;\r\n }\r\n if (!isEmptyObj(this.dateValueFormat)) {\r\n for (let key in this.dateValueFormat) {\r\n let olddata = data[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n data[key] = [\r\n dayjs(olddata[0]).format(this.dateValueFormat[key]),\r\n dayjs(olddata[1]).format(this.dateValueFormat[key]),\r\n ];\r\n if (this.rangerDate[key]) {\r\n try {\r\n data[this.rangerDate[key][0]] = dayjs(olddata[0]).format(\r\n this.dateFormat[key]\r\n );\r\n data[this.rangerDate[key][1]] = dayjs(olddata[1]).format(\r\n this.dateFormat[key]\r\n );\r\n delete data[key];\r\n } catch (e) {}\r\n }\r\n } else {\r\n data[key] = dayjs(olddata).format(this.dateValueFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n if (label == \"编辑\") {\r\n data = { ...data, id: value?.id || this.state.editId };\r\n }\r\n return data;\r\n }\r\n convertValue(value, type) {\r\n let values = lodash.cloneDeep(value);\r\n if (this.fileFormat.length > 0) {\r\n let fileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n let olddata = values[item];\r\n if (olddata && Array.isArray(olddata)) {\r\n fileList[item] = this.getFileList(olddata || [], type);\r\n } else {\r\n fileList[item] = [];\r\n }\r\n });\r\n this.setState({ fileList: fileList });\r\n }\r\n //处理日期格式数据\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = values[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n values[key] = [\r\n dayjs(olddata[0], this.dateFormat[key]),\r\n dayjs(olddata[1], this.dateFormat[key]),\r\n ];\r\n } else {\r\n values[key] = dayjs(olddata, this.dateFormat[key]);\r\n }\r\n } else {\r\n if (this.rangerDate[key]) {\r\n let value1 = values[this.rangerDate[key][0]];\r\n let value2 = values[this.rangerDate[key][1]];\r\n if (value1 && value2) {\r\n values[key] = [\r\n dayjs(value1, this.dateFormat[key]),\r\n dayjs(value2, this.dateFormat[key]),\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return values;\r\n }\r\n setFormValue(value, type) {\r\n const newValue = this.convertValue(value, type);\r\n this.formRef.current?.setFieldsValue(newValue);\r\n }\r\n doSubmit(formdata, label) {\r\n const {\r\n submitUrl,\r\n submitParams = {},\r\n callBack,\r\n requestObject = {},\r\n requestConfig = {},\r\n } = this.props;\r\n const { addUrl, editorUrl, addParams, editorParams } = requestObject;\r\n let url = submitUrl;\r\n let params: any = {};\r\n if (label == \"新增\") {\r\n url = addUrl ? addUrl : submitUrl;\r\n if (addParams && typeof addParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", addParams);\r\n let converParams = func(Utils);\r\n params = converParams;\r\n } else {\r\n params = addParams ? addParams : submitParams;\r\n }\r\n } else if (label == \"编辑\") {\r\n url = editorUrl ? editorUrl : submitUrl;\r\n if (editorParams && typeof editorParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", editorParams);\r\n let converParams = func(Utils);\r\n params = converParams;\r\n } else {\r\n params = editorParams ? editorParams : submitParams;\r\n }\r\n }\r\n if (!url) {\r\n console.error(\"配置Url不能为空!\");\r\n return;\r\n }\r\n const { data = {}, ...otherParams } = params;\r\n this.formRef.current?.onSubmit(\r\n url,\r\n {\r\n data: { ...formdata, ...data },\r\n noUndefined: label == \"编辑\",\r\n ...requestConfig,\r\n ...otherParams,\r\n },\r\n (res: any) => {\r\n const { code } = res;\r\n this.setState({ loading: false });\r\n if (code === 200) {\r\n message.success(label + \"成功\");\r\n setTimeout(() => {\r\n this.hide(true);\r\n callBack && callBack();\r\n }, 500);\r\n\r\n return;\r\n }\r\n this.hide(false);\r\n }\r\n );\r\n }\r\n getFileList(data, label = \"新增\") {\r\n this.submitFlag = true;\r\n let fileList = [] as any;\r\n if (data && data.length > 0) {\r\n data.map((item) => {\r\n let obj = {\r\n fileId: item.fileId,\r\n fileName: item.fileName,\r\n } as any;\r\n if (label == \"查看\") {\r\n obj.status = \"done\";\r\n }\r\n if (label !== \"查看\" && item.status !== \"done\") {\r\n this.submitFlag = false;\r\n }\r\n fileList.push(obj);\r\n });\r\n }\r\n return fileList;\r\n }\r\n\r\n onSubmit() {\r\n const { onSubmit } = this.props;\r\n const { label, value, dictNames, fileList } = this.state;\r\n let valid = this.valid;\r\n this.formRef.current\r\n ?.validateFields()\r\n .then(() => {\r\n let data = this.getFormValue();\r\n // if (!this.submitFlag) {\r\n // message.error('请等待所有文件上传完成!')\r\n // return;\r\n // }\r\n this.setState({ loading: true });\r\n if (onSubmit) {\r\n onSubmit && onSubmit(data, label);\r\n return;\r\n }\r\n this.doSubmit(data, label);\r\n })\r\n .catch((errorInfo: any) => {});\r\n }\r\n valueChange({ type, dictName }, props, value, valueOption, data) {\r\n if (valueOption) {\r\n if (dictName) {\r\n const { dictNames } = this.state;\r\n const newNames = { ...dictNames } as any;\r\n newNames[dictName] = valueOption.label;\r\n this.setState({\r\n dictNames: newNames,\r\n });\r\n }\r\n }\r\n if (props.onChange) {\r\n if (typeof props.onChange == \"function\") {\r\n props.onChange(value, valueOption, data);\r\n } else if (typeof props.onChange == \"string\") {\r\n const eventOption = {\r\n value,\r\n data,\r\n formRef: this.formRef,\r\n funcs: this.props.funcs || {},\r\n refs: this.refList,\r\n } as any;\r\n const Utils = this.props.Utils || {};\r\n if (type == \"Select\") {\r\n eventOption.valueOption = valueOption;\r\n eventOption.data = data;\r\n } else if (type == \"DatePicker\" || type == \"RangePicker\") {\r\n eventOption.valueStr = valueOption;\r\n }\r\n const selfFunc = new Function(\"eventOption\", \"Utils\", props.onChange);\r\n selfFunc(eventOption, Utils);\r\n }\r\n }\r\n }\r\n\r\n renderForm(forms, label) {\r\n const newValid: any[] = [];\r\n return (\r\n <Row gutter={24}>\r\n {forms.map((item: any, index: number) => {\r\n const itemProps = item.props || {};\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateValueFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (itemProps.format) {\r\n this.dateFormat[item.name] = itemProps.format;\r\n }\r\n if (item.type == \"RangePicker\" && item.name.split(\",\").length > 1) {\r\n this.rangerDate[item.name] = item.name.split(\",\");\r\n }\r\n let allowChars = item.props?.allowChars || false;\r\n let props = {\r\n placeholder: `请输入${item.label}`,\r\n ...item.props,\r\n onChange: this.valueChange.bind(\r\n this,\r\n {\r\n type: item.type,\r\n dictName: item.dictName,\r\n },\r\n { ...item.props }\r\n ),\r\n };\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true; //form.item 使用input组件allowChars必须默认true,不然输入特殊字符拿到的值不对\r\n }\r\n delete props.valueFormat;\r\n delete props.format;\r\n delete props.dataType;\r\n if (label == \"查看\") {\r\n props.disabled = true;\r\n props.placeholder = \"\";\r\n }\r\n if ((item.rules && item.rules.length > 0) || item.required === true) {\r\n newValid.push(item.name);\r\n }\r\n if (index + 1 === forms.length) {\r\n this.valid = newValid;\r\n }\r\n const itemRef: any = React.createRef<any>();\r\n this.refList[item.name] = itemRef;\r\n if (item.type !== \"Upload\") {\r\n return (\r\n <Col\r\n span={item.span || 12}\r\n key={index}\r\n style={{ display: item.hide ? \"none\" : \"block\" }}\r\n >\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n required={item.required}\r\n type={item.props?.type}\r\n noStyle={item.noStyle || false}\r\n >\r\n {item.formRender\r\n ? item.formRender(props)\r\n : getNode(item.type, {\r\n ref: itemRef,\r\n ...props,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n } else {\r\n this.fileFormat.push(item.name);\r\n return (\r\n <Col\r\n span={item.span || 12}\r\n key={index}\r\n style={{ display: item.hide ? \"none\" : \"block\" }}\r\n >\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n type={item.props?.type}\r\n required={item.required}\r\n >\r\n <Upload\r\n fileList={this.state.fileList[item.name] || []}\r\n onListChange={(list) => {\r\n const { fileList } = this.state;\r\n this.setState({\r\n fileList: { ...fileList, [item.name]: list },\r\n });\r\n }}\r\n showUploadList={{\r\n showDownloadIcon: true,\r\n showRemoveIcon: label !== \"查看\",\r\n }}\r\n ref={itemRef}\r\n {...props}\r\n >\r\n {item.props?.children\r\n ? item.props?.children\r\n : label !== \"查看\" && <Button>上传文件</Button>}\r\n </Upload>\r\n </Form.Item>\r\n </Col>\r\n );\r\n }\r\n })}\r\n </Row>\r\n );\r\n }\r\n render() {\r\n const {\r\n forms = [],\r\n props = {},\r\n footer = true,\r\n children,\r\n formType = \"page\",\r\n title = \"\",\r\n } = this.props;\r\n const { loading, label } = this.state;\r\n let selfButtons = [] as any;\r\n let selfPanes = [] as any;\r\n\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (child?.props?.pageType == \"formPane\") {\r\n typeof item == \"object\" && selfPanes.push(child);\r\n }\r\n });\r\n } else {\r\n typeof item == \"object\" && selfButtons.push(item);\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"formPane\") {\r\n typeof children == \"object\" && selfPanes.push(children);\r\n } else {\r\n typeof children == \"object\" && selfButtons.push(children);\r\n }\r\n }\r\n let modalProps = {\r\n title: label + title,\r\n onOk: this.onSubmit.bind(this),\r\n onCancel: this.hide.bind(this),\r\n okButtonProps: { loading: loading },\r\n centered: true,\r\n width: \"50vw\",\r\n footerButton: selfButtons,\r\n } as any;\r\n\r\n let drawerProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onClose: this.hide.bind(this),\r\n width: \"50vw\",\r\n footerButton: selfButtons,\r\n } as any;\r\n if (label == \"查看\") {\r\n modalProps.footer = null;\r\n drawerProps.footer = null;\r\n }\r\n this.dateValueFormat = {};\r\n this.dateFormat = {};\r\n this.fileFormat = [];\r\n let newFormsObj = {} as any;\r\n let formGroups = [] as any;\r\n let otherGrups = [] as any;\r\n let defalutValue = {} as any;\r\n\r\n //处理表单数据\r\n forms.map((item: any) => {\r\n if (item.groupName && formGroups.indexOf(item.groupName) < 0) {\r\n formGroups.push(item.groupName);\r\n } else if (!item.groupName) {\r\n otherGrups.push(item);\r\n }\r\n });\r\n if (formGroups.length > 0) {\r\n formGroups.map((item: any) => {\r\n let groupForms = [] as any;\r\n forms.map((form: any) => {\r\n if (form.groupName == item) {\r\n groupForms.push(form);\r\n }\r\n });\r\n newFormsObj[item] = groupForms;\r\n });\r\n if (otherGrups.length > 0) {\r\n newFormsObj[\"noGroupName\"] = otherGrups;\r\n }\r\n }\r\n const PaneWithoutPageType = (Pane, props) => {\r\n const { pageType, ...cleanProps } = props;\r\n return React.createElement(Pane.type, cleanProps);\r\n };\r\n //自定义按钮\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType == \"page\" ? null : this.props.formType}\r\n modalProps={{ ...modalProps }}\r\n drawerProps={{ ...drawerProps }}\r\n // labelCol={{ flex: \"100px\" }}\r\n // wrapperCol={{ flex: \"15vw\" }}\r\n onValuesChange={(changedValues, allValues) => {\r\n const { onFormChange } = this.props;\r\n onFormChange && onFormChange(changedValues, allValues);\r\n }}\r\n changeValid={this.props.changeValid}\r\n {...props}\r\n >\r\n <div className=\"nsc-form-page\">\r\n {formGroups.length == 0 ? (\r\n this.props.formType !== \"page\" ? (\r\n this.renderForm(forms, label)\r\n ) : (\r\n <div className=\"nsc-form-pane\">\r\n {this.renderForm(forms, label)}\r\n </div>\r\n )\r\n ) : (\r\n Object.keys(newFormsObj).map((key) => {\r\n return (\r\n <div key={key} className=\"nsc-form-pane\">\r\n {key != \"noGroupName\" && (\r\n <div className=\"nsc-form-title\">{key}</div>\r\n )}\r\n <div className=\"nsc-form-content\">\r\n {this.renderForm(newFormsObj[key], label)}\r\n </div>\r\n </div>\r\n );\r\n })\r\n )}\r\n {selfPanes.length > 0 &&\r\n selfPanes.map((Pane, index) => {\r\n return (\r\n <div className=\"nsc-form-pane\" key={index}>\r\n {PaneWithoutPageType(Pane, { ...Pane.props })}\r\n </div>\r\n );\r\n })}\r\n {formType === \"page\" && footer == true && (\r\n <div\r\n className={cls(\r\n \"nsc-form-page-footer\",\r\n [this.state.width ? \"nsc-form-page-footer-width\" : \"\"],\r\n this.props.footerClassName\r\n )}\r\n >\r\n <Button\r\n {...this.props.cancelButtonProps}\r\n onClick={() => {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n return;\r\n }\r\n this.setState({ loading: false });\r\n }}\r\n >\r\n 取消\r\n </Button>\r\n <Button\r\n type=\"primary\"\r\n {...this.props.okButtonProps}\r\n onClick={() => {\r\n this.onSubmit();\r\n }}\r\n loading={this.state.loading}\r\n className={\"nsc-form-page-footer-btn\"}\r\n >\r\n 保存\r\n </Button>\r\n {selfButtons.map((item: any, index: any) => {\r\n return (\r\n <div className={\"nsc-form-page-footer-btn\"} key={index}>\r\n {item}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n {formType === \"page\" && footer !== true && this.props.footer}\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default FormPage;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PureComponent","Form","getNode","message","Col","Row","isEmptyObj","getLocalStore","dayjs","lodash","Button","Upload","cls","NscRequest","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","props","editType","editorFlag","value","dictNames","fileList","width","editId","ev","data","JSON","parse","_this","eventType","payload","close","setState","componentDidMount","window","addEventListener","listenMessage","formType","requestObject","detailUrl","get","params","id","state","xssFilter","then","res","code","_this$formRef$current","formRef","current","setFieldsValue","_objectSpread","_this$formRef$current2","defaultValu","componentWillUnmount","removeEventListener","show","orgValue","editorflag","length","undefined","callBack","_this$formRef$current3","convertValue","showForm","afterRender","_this$formRef$current4","defaultValue","hide","_this$formRef$current5","onHideForm","hideForm","_this$formRef$current6","setLoading","setEditType","type","setEditId","getFormValue","_this$formRef$current7","formValue","getFieldsValue","cloneDeep","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","rangerDate","dateFormat","e","newData","stringify","values","forEach","fileKey","value1","value2","setFormValue","_this$formRef$current8","newValue","doSubmit","formdata","_this$formRef$current9","submitUrl","submitParams","requestConfig","addUrl","editorUrl","addParams","editorParams","url","Utils","func","Function","converParams","console","otherParams","_objectWithoutProperties","_excluded","onSubmit","noUndefined","msg","success","setTimeout","obj","fileId","fileName","status","push","_this$formRef$current10","valid","validateFields","returnData","catch","errorInfo","valueChange","_ref","valueOption","dictName","newNames","onChange","eventOption","funcs","refs","refList","valueStr","selfFunc","renderForm","forms","newValid","createElement","gutter","index","_item$props","itemProps","valueFormat","name","split","allowChars","placeholder","concat","bind","dataType","disabled","rules","required","itemRef","_item$props2","span","style","display","Item","componentName","noStyle","formRender","ref","_item$props3","_item$props4","_item$props5","_extends","onListChange","list","showUploadList","showDownloadIcon","showRemoveIcon","children","render","footer","title","selfButtons","selfPanes","child","_child$props","pageType","modalProps","onOk","onCancel","okButtonProps","centered","footerButton","drawerProps","onClose","newFormsObj","formGroups","otherGrups","defalutValue","groupName","indexOf","groupForms","form","PaneWithoutPageType","Pane","cleanProps","_excluded2","showModel","onValuesChange","changedValues","allValues","onFormChange","changeValid","className","Object","keys","footerClassName","cancelButtonProps","onClick"],"sources":["../../../src/components/page/FormPage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport message from \"../../base/message\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj, getLocalStore } from \"@bj-nsc/functions\";\r\nimport dayjs from \"dayjs\";\r\nimport \"./index.module.less\";\r\nimport lodash from \"lodash\";\r\nimport Button from \"../../base/button\";\r\nimport Upload from \"../../base/upload\";\r\nimport cls from \"classnames\";\r\nimport { IFormProps } from \"src/components/base/form/Form\";\r\nimport NscRequest from \"nsc-request\";\r\nimport omit from \"omit.js\";\r\nimport CompoundedSpace from \"antd/es/space\";\r\nexport interface FormPageProps {\r\n forms?: Array<any>; //是否显示操作列\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n footerClassName?: any;\r\n okButtonProps?: any;\r\n cancelButtonProps?: any;\r\n footer?: ReactNode | boolean;\r\n children?: React.ReactNode;\r\n onFormChange?: (value?: any, allValue?: any) => void;\r\n submitParams?: any; //添加参数,默认mothod:post, 参数通过data传递\r\n funcs?: any;\r\n props?: IFormProps;\r\n requestObject?: {\r\n addUrl?: string;\r\n editorUrl?: string;\r\n addParams?: any;\r\n editorParams?: any;\r\n detailUrl?: string;\r\n };\r\n requestConfig?: any;\r\n footerWidth?: boolean;\r\n editType?: \"新增\" | \"编辑\" | \"查看\";\r\n title?: string;\r\n editId?: string;\r\n [propsName: string]: any;\r\n}\r\nclass FormPage extends PureComponent<FormPageProps, any> {\r\n formRef = React.createRef<any>();\r\n state = {\r\n loading: false,\r\n label: this.props.editType || \"\",\r\n editorFlag: true,\r\n value: {} as any,\r\n dictNames: {} as any,\r\n fileList: {} as any,\r\n width: getLocalStore(\"nsc-home-menuCollsape\") || false,\r\n editId: this.props.editId || \"\",\r\n };\r\n valid: any = [];\r\n dateValueFormat = {} as any;\r\n dateFormat = {} as any;\r\n fileFormat = [] as any;\r\n rangerDate = {} as any;\r\n refList = {} as any;\r\n submitFlag = true;\r\n componentDidMount(): void {\r\n window.addEventListener(\"message\", this.listenMessage);\r\n const {\r\n formType = \"page\",\r\n requestObject = {},\r\n editType = \"新增\",\r\n } = this.props;\r\n if (formType == \"page\") {\r\n if (requestObject.detailUrl && editType !== \"新增\") {\r\n NscRequest.get(requestObject.detailUrl, {\r\n params: { id: this.state.editId },\r\n xssFilter: false,\r\n }).then((res) => {\r\n if (res.code == 200) {\r\n this.formRef.current?.setFieldsValue({ ...res.data });\r\n }\r\n });\r\n } else if (editType == \"新增\") {\r\n this.formRef.current?.setFieldsValue(this.props.defaultValu || {});\r\n }\r\n }\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"message\", this.listenMessage);\r\n }\r\n listenMessage = (ev) => {\r\n const data = typeof ev.data === \"string\" ? JSON.parse(ev.data) : ev.data;\r\n let _this = this;\r\n if (data.eventType == \"menuCollsape\") {\r\n const { payload } = data;\r\n if (payload.close === true || payload.close === false) {\r\n _this.setState({ width: payload.close });\r\n }\r\n }\r\n };\r\n //表单显示\r\n show(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n let label = \"新增\";\r\n if (orgValue && editorflag == \"editor\") {\r\n label = \"编辑\";\r\n } else if (orgValue && (editorflag == \"detail\" || editorflag == \"search\")) {\r\n label = \"查看\";\r\n }\r\n if (orgValue) {\r\n this.setState(\r\n {\r\n label: label,\r\n value: orgValue,\r\n editId: orgValue.id,\r\n },\r\n () => {\r\n let value = this.convertValue(orgValue, label);\r\n //处理文件数据\r\n this.formRef.current?.showForm(value, {\r\n afterRender: () => {\r\n callBack && callBack();\r\n },\r\n });\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n label: label,\r\n },\r\n () => {\r\n this.formRef.current?.showForm(this.props.defaultValue, {\r\n afterRender: () => {\r\n callBack && callBack();\r\n },\r\n });\r\n }\r\n );\r\n }\r\n }\r\n hide(hide = true) {\r\n const { onHideForm } = this.props;\r\n if (onHideForm) {\r\n onHideForm && onHideForm();\r\n return;\r\n }\r\n this.setState({ loading: false, fileList: {} });\r\n hide && this.formRef.current?.hideForm();\r\n }\r\n hideForm() {\r\n this.setState({ loading: false, fileList: {} });\r\n this.formRef.current?.hideForm();\r\n }\r\n showForm(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n this.show(orgValue, editorflag, callBack);\r\n }\r\n setLoading(loading: boolean) {\r\n this.setState({ loading: loading });\r\n }\r\n setEditType(type) {\r\n this.setState({\r\n label: type,\r\n });\r\n }\r\n setEditId(id) {\r\n this.setState({\r\n editId: id,\r\n });\r\n }\r\n getFormValue() {\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let data = lodash.cloneDeep({ ...formValue, ...dictNames });\r\n if (this.fileFormat.length > 0) {\r\n let newFileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n if (fileList[item].length == 0) {\r\n newFileList[item] = null;\r\n } else {\r\n newFileList[item] = this.getFileList(fileList[item] || []);\r\n }\r\n });\r\n data = { ...data, ...newFileList };\r\n }\r\n if (!this.submitFlag) {\r\n message.error(\"请等待所有文件上传完成!\");\r\n return;\r\n }\r\n if (!isEmptyObj(this.dateValueFormat)) {\r\n for (let key in this.dateValueFormat) {\r\n let olddata = data[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n data[key] = [\r\n dayjs(olddata[0]).format(this.dateValueFormat[key]),\r\n dayjs(olddata[1]).format(this.dateValueFormat[key]),\r\n ];\r\n if (this.rangerDate[key]) {\r\n try {\r\n data[this.rangerDate[key][0]] = dayjs(olddata[0]).format(\r\n this.dateFormat[key]\r\n );\r\n data[this.rangerDate[key][1]] = dayjs(olddata[1]).format(\r\n this.dateFormat[key]\r\n );\r\n delete data[key];\r\n } catch (e) {}\r\n }\r\n } else {\r\n data[key] = dayjs(olddata).format(this.dateValueFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n if (label == \"编辑\") {\r\n data = { ...data, id: value?.id || this.state.editId };\r\n }\r\n let newData = JSON.parse(JSON.stringify(data));\r\n return newData;\r\n }\r\n convertValue(value, type) {\r\n let values = lodash.cloneDeep(value);\r\n if (this.fileFormat.length > 0) {\r\n let fileList = {} as any;\r\n this.fileFormat.forEach((fileKey) => {\r\n let olddata = values[fileKey];\r\n if (olddata && Array.isArray(olddata)) {\r\n fileList[fileKey] = this.getFileList(olddata || [], type);\r\n } else {\r\n fileList[fileKey] = [];\r\n }\r\n });\r\n this.setState({ fileList: fileList });\r\n }\r\n //处理日期格式数据\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = values[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n values[key] = [\r\n dayjs(olddata[0], this.dateFormat[key]),\r\n dayjs(olddata[1], this.dateFormat[key]),\r\n ];\r\n } else {\r\n values[key] = dayjs(olddata, this.dateFormat[key]);\r\n }\r\n } else {\r\n if (this.rangerDate[key]) {\r\n let value1 = values[this.rangerDate[key][0]];\r\n let value2 = values[this.rangerDate[key][1]];\r\n if (value1 && value2) {\r\n values[key] = [\r\n dayjs(value1, this.dateFormat[key]),\r\n dayjs(value2, this.dateFormat[key]),\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return values;\r\n }\r\n setFormValue(value, type) {\r\n const newValue = this.convertValue(value, type);\r\n this.formRef.current?.setFieldsValue(newValue);\r\n }\r\n doSubmit(formdata, label) {\r\n const {\r\n submitUrl,\r\n submitParams = {},\r\n callBack,\r\n requestObject = {},\r\n requestConfig = {},\r\n } = this.props;\r\n const { addUrl, editorUrl, addParams, editorParams } = requestObject;\r\n let url = submitUrl;\r\n let params: any = {};\r\n if (label == \"新增\") {\r\n url = addUrl ? addUrl : submitUrl;\r\n if (addParams && typeof addParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", addParams);\r\n let converParams = func(Utils);\r\n params = converParams;\r\n } else {\r\n params = addParams ? addParams : submitParams;\r\n }\r\n } else if (label == \"编辑\") {\r\n url = editorUrl ? editorUrl : submitUrl;\r\n if (editorParams && typeof editorParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", editorParams);\r\n let converParams = func(Utils);\r\n params = converParams;\r\n } else {\r\n params = editorParams ? editorParams : submitParams;\r\n }\r\n }\r\n if (!url) {\r\n console.error(\"配置Url不能为空!\");\r\n return;\r\n }\r\n const { data = {}, ...otherParams } = params;\r\n this.formRef.current?.onSubmit(\r\n url,\r\n {\r\n data: { ...formdata, ...data },\r\n noUndefined: label == \"编辑\",\r\n ...requestConfig,\r\n ...otherParams,\r\n },\r\n (res: any) => {\r\n const { code, msg } = res;\r\n this.setState({ loading: false });\r\n if (code === 200) {\r\n message.success(label + \"成功\");\r\n setTimeout(() => {\r\n this.hide(true);\r\n callBack && callBack();\r\n }, 500);\r\n\r\n return;\r\n }\r\n }\r\n );\r\n }\r\n getFileList(data, label = \"新增\") {\r\n this.submitFlag = true;\r\n let fileList = [] as any;\r\n if (data && data.length > 0) {\r\n data.map((item) => {\r\n let obj = {\r\n fileId: item.fileId,\r\n fileName: item.fileName,\r\n } as any;\r\n if (label == \"查看\") {\r\n obj.status = \"done\";\r\n }\r\n if (label !== \"查看\" && item.status !== \"done\") {\r\n this.submitFlag = false;\r\n }\r\n fileList.push(obj);\r\n });\r\n }\r\n return fileList;\r\n }\r\n\r\n onSubmit() {\r\n const { onSubmit } = this.props;\r\n const { label, value, dictNames, fileList } = this.state;\r\n let valid = this.valid;\r\n this.formRef.current\r\n ?.validateFields()\r\n .then(() => {\r\n let data = this.getFormValue();\r\n this.setState({ loading: true });\r\n if (onSubmit) {\r\n let returnData = lodash.cloneDeep(data);\r\n onSubmit && onSubmit(returnData, label);\r\n return;\r\n }\r\n this.doSubmit(data, label);\r\n })\r\n .catch((errorInfo: any) => {});\r\n }\r\n valueChange({ type, dictName }, props, value, valueOption, data) {\r\n if (valueOption) {\r\n if (dictName) {\r\n const { dictNames } = this.state;\r\n const newNames = { ...dictNames } as any;\r\n newNames[dictName] = valueOption.label;\r\n this.setState({\r\n dictNames: newNames,\r\n });\r\n }\r\n }\r\n if (props.onChange) {\r\n if (typeof props.onChange == \"function\") {\r\n props.onChange(value, valueOption, data);\r\n } else if (typeof props.onChange == \"string\") {\r\n const eventOption = {\r\n value,\r\n data,\r\n formRef: this.formRef,\r\n funcs: this.props.funcs || {},\r\n refs: this.refList,\r\n } as any;\r\n const Utils = this.props.Utils || {};\r\n if (type == \"Select\") {\r\n eventOption.valueOption = valueOption;\r\n eventOption.data = data;\r\n } else if (type == \"DatePicker\" || type == \"RangePicker\") {\r\n eventOption.valueStr = valueOption;\r\n }\r\n const selfFunc = new Function(\"eventOption\", \"Utils\", props.onChange);\r\n selfFunc(eventOption, Utils);\r\n }\r\n }\r\n }\r\n\r\n renderForm(forms, label) {\r\n const newValid: any[] = [];\r\n return (\r\n <Row gutter={24}>\r\n {forms.map((item: any, index: number) => {\r\n const itemProps = item.props || {};\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateValueFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (itemProps.format) {\r\n this.dateFormat[item.name] = itemProps.format;\r\n }\r\n if (item.type == \"RangePicker\" && item.name.split(\",\").length > 1) {\r\n this.rangerDate[item.name] = item.name.split(\",\");\r\n }\r\n let allowChars = item.props?.allowChars || false;\r\n let props = {\r\n placeholder: `请输入${item.label}`,\r\n ...item.props,\r\n onChange: this.valueChange.bind(\r\n this,\r\n {\r\n type: item.type,\r\n dictName: item.dictName,\r\n },\r\n { ...item.props }\r\n ),\r\n };\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true; //form.item 使用input组件allowChars必须默认true,不然输入特殊字符拿到的值不对\r\n }\r\n delete props.valueFormat;\r\n delete props.format;\r\n delete props.dataType;\r\n if (label == \"查看\") {\r\n props.disabled = true;\r\n props.placeholder = \"\";\r\n }\r\n if ((item.rules && item.rules.length > 0) || item.required === true) {\r\n newValid.push(item.name);\r\n }\r\n if (index + 1 === forms.length) {\r\n this.valid = newValid;\r\n }\r\n const itemRef: any = React.createRef<any>();\r\n this.refList[item.name] = itemRef;\r\n if (item.type !== \"Upload\") {\r\n return (\r\n <Col\r\n span={item.span || 12}\r\n key={index}\r\n style={{ display: item.hide ? \"none\" : \"block\" }}\r\n >\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n required={item.required}\r\n type={item.props?.type}\r\n noStyle={item.noStyle || false}\r\n >\r\n {item.formRender\r\n ? item.formRender(props)\r\n : getNode(item.type, {\r\n ref: itemRef,\r\n ...props,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n } else {\r\n this.fileFormat.push(item.name);\r\n return (\r\n <Col\r\n span={item.span || 12}\r\n key={index}\r\n style={{ display: item.hide ? \"none\" : \"block\" }}\r\n >\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n type={item.props?.type}\r\n required={item.required}\r\n >\r\n <Upload\r\n fileList={this.state.fileList[item.name] || []}\r\n onListChange={(list) => {\r\n const { fileList } = this.state;\r\n this.setState({\r\n fileList: { ...fileList, [item.name]: list },\r\n });\r\n }}\r\n showUploadList={{\r\n showDownloadIcon: true,\r\n showRemoveIcon: label !== \"查看\",\r\n }}\r\n ref={itemRef}\r\n {...props}\r\n >\r\n {item.props?.children\r\n ? item.props?.children\r\n : label !== \"查看\" && <Button>上传文件</Button>}\r\n </Upload>\r\n </Form.Item>\r\n </Col>\r\n );\r\n }\r\n })}\r\n </Row>\r\n );\r\n }\r\n render() {\r\n const {\r\n forms = [],\r\n props = {},\r\n footer = true,\r\n children,\r\n formType = \"page\",\r\n title = \"\",\r\n } = this.props;\r\n const { loading, label } = this.state;\r\n let selfButtons = [] as any;\r\n let selfPanes = [] as any;\r\n\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (child?.props?.pageType == \"formPane\") {\r\n typeof item == \"object\" && selfPanes.push(child);\r\n }\r\n });\r\n } else {\r\n typeof item == \"object\" && selfButtons.push(item);\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"formPane\") {\r\n typeof children == \"object\" && selfPanes.push(children);\r\n } else {\r\n typeof children == \"object\" && selfButtons.push(children);\r\n }\r\n }\r\n let modalProps = {\r\n title: label + title,\r\n onOk: this.onSubmit.bind(this),\r\n onCancel: this.hide.bind(this),\r\n okButtonProps: { loading: loading },\r\n centered: true,\r\n width: \"50vw\",\r\n footerButton: selfButtons,\r\n } as any;\r\n\r\n let drawerProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onClose: this.hide.bind(this),\r\n width: \"50vw\",\r\n footerButton: selfButtons,\r\n } as any;\r\n if (label == \"查看\") {\r\n modalProps.footer = null;\r\n drawerProps.footer = null;\r\n }\r\n this.dateValueFormat = {};\r\n this.dateFormat = {};\r\n this.fileFormat = [];\r\n let newFormsObj = {} as any;\r\n let formGroups = [] as any;\r\n let otherGrups = [] as any;\r\n let defalutValue = {} as any;\r\n\r\n //处理表单数据\r\n forms.map((item: any) => {\r\n if (item.groupName && formGroups.indexOf(item.groupName) < 0) {\r\n formGroups.push(item.groupName);\r\n } else if (!item.groupName) {\r\n otherGrups.push(item);\r\n }\r\n });\r\n if (formGroups.length > 0) {\r\n formGroups.map((item: any) => {\r\n let groupForms = [] as any;\r\n forms.map((form: any) => {\r\n if (form.groupName == item) {\r\n groupForms.push(form);\r\n }\r\n });\r\n newFormsObj[item] = groupForms;\r\n });\r\n if (otherGrups.length > 0) {\r\n newFormsObj[\"noGroupName\"] = otherGrups;\r\n }\r\n }\r\n const PaneWithoutPageType = (Pane, props) => {\r\n const { pageType, ...cleanProps } = props;\r\n return React.createElement(Pane.type, cleanProps);\r\n };\r\n //自定义按钮\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType == \"page\" ? null : this.props.formType}\r\n modalProps={{ ...modalProps }}\r\n drawerProps={{ ...drawerProps }}\r\n // labelCol={{ flex: \"100px\" }}\r\n // wrapperCol={{ flex: \"15vw\" }}\r\n onValuesChange={(changedValues, allValues) => {\r\n const { onFormChange } = this.props;\r\n onFormChange && onFormChange(changedValues, allValues);\r\n }}\r\n changeValid={this.props.changeValid}\r\n {...props}\r\n >\r\n <div className=\"nsc-form-page\">\r\n {formGroups.length == 0 ? (\r\n this.props.formType !== \"page\" ? (\r\n this.renderForm(forms, label)\r\n ) : (\r\n <div className=\"nsc-form-pane\">\r\n {this.renderForm(forms, label)}\r\n </div>\r\n )\r\n ) : (\r\n Object.keys(newFormsObj).map((key) => {\r\n return (\r\n <div key={key} className=\"nsc-form-pane\">\r\n {key != \"noGroupName\" && (\r\n <div className=\"nsc-form-title\">{key}</div>\r\n )}\r\n <div className=\"nsc-form-content\">\r\n {this.renderForm(newFormsObj[key], label)}\r\n </div>\r\n </div>\r\n );\r\n })\r\n )}\r\n {selfPanes.length > 0 &&\r\n selfPanes.map((Pane, index) => {\r\n return (\r\n <div className=\"nsc-form-pane\" key={index}>\r\n {PaneWithoutPageType(Pane, { ...Pane.props })}\r\n </div>\r\n );\r\n })}\r\n {formType === \"page\" && footer == true && (\r\n <div\r\n className={cls(\r\n \"nsc-form-page-footer\",\r\n [this.state.width ? \"nsc-form-page-footer-width\" : \"\"],\r\n this.props.footerClassName\r\n )}\r\n >\r\n <Button\r\n {...this.props.cancelButtonProps}\r\n onClick={() => {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n return;\r\n }\r\n this.setState({ loading: false });\r\n }}\r\n >\r\n 取消\r\n </Button>\r\n <Button\r\n type=\"primary\"\r\n {...this.props.okButtonProps}\r\n onClick={() => {\r\n this.onSubmit();\r\n }}\r\n loading={this.state.loading}\r\n className={\"nsc-form-page-footer-btn\"}\r\n >\r\n 保存\r\n </Button>\r\n {selfButtons.map((item: any, index: any) => {\r\n return (\r\n <div className={\"nsc-form-page-footer-btn\"} key={index}>\r\n {item}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n {formType === \"page\" && footer !== true && this.props.footer}\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default FormPage;\r\n"],"mappings":"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"}
|
|
@@ -209,12 +209,11 @@ export default class SettingTable extends React.Component {
|
|
|
209
209
|
_defineProperty(this, "state", _objectSpread({}, defaultStateValue));
|
|
210
210
|
_defineProperty(this, "pageRef", /*#__PURE__*/React.createRef());
|
|
211
211
|
_defineProperty(this, "initData", res => {
|
|
212
|
-
var _pageProps$requestPar;
|
|
213
212
|
const {
|
|
214
213
|
otherProps,
|
|
215
214
|
pageProps
|
|
216
215
|
} = this.state;
|
|
217
|
-
if (pageProps.showSearch !== false &&
|
|
216
|
+
if (pageProps.showSearch !== false && otherProps.defaultSearch && otherProps.tableDataResource == "url") {
|
|
218
217
|
let func = new Function("Utils,eventOption", otherProps.defaultSearch);
|
|
219
218
|
const params = func(defaulUtil, {
|
|
220
219
|
pageRef: this.pageRef
|
|
@@ -263,7 +262,7 @@ export default class SettingTable extends React.Component {
|
|
|
263
262
|
// 调用getPageData方法获取数据
|
|
264
263
|
getPageData(_objectSpread({}, params)).then(res => {
|
|
265
264
|
if (res.code == 200 && res.data) {
|
|
266
|
-
var _page_props$permissio
|
|
265
|
+
var _page_props$permissio;
|
|
267
266
|
let table_props = JSON.parse(res.data.tableProps || "{}") || {};
|
|
268
267
|
let tree_props = JSON.parse(res.data.treeProps || "{}") || {};
|
|
269
268
|
let page_props = JSON.parse(res.data.pageProps || "{}") || {};
|
|
@@ -275,10 +274,9 @@ export default class SettingTable extends React.Component {
|
|
|
275
274
|
if (published == false) {
|
|
276
275
|
page_props.permission = false;
|
|
277
276
|
}
|
|
278
|
-
if (page_props.showSearch !== false &&
|
|
277
|
+
if (page_props.showSearch !== false && other_props.defaultSearch && (other_props === null || other_props === void 0 ? void 0 : other_props.tableDataResource) == "url" || this.props.autoLoad === false) {
|
|
279
278
|
table_props.store.autoLoad = false;
|
|
280
279
|
}
|
|
281
|
-
console.log('table_props.store', table_props.store);
|
|
282
280
|
if (tabParams) {
|
|
283
281
|
const Utils = defaulUtil || {};
|
|
284
282
|
let paramFunc = new Function("Utils", tabParams);
|
|
@@ -553,4 +551,4 @@ export default class SettingTable extends React.Component {
|
|
|
553
551
|
})));
|
|
554
552
|
}
|
|
555
553
|
}
|
|
556
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlUGFnZSIsIlNwaW4iLCJCdXR0b24iLCJSZWFjdCIsIk5zY0NvbSIsIk5zY0ZpbGUiLCJOc2NSZXF1ZXN0IiwiTnNjVXRpbHMiLCJjbHMiLCJxdWVyeVN0cmluZyIsImdldExvY2FsU3RvcmUiLCJkYXlqcyIsImRlZmF1bFV0aWwiLCJjcmVhdGVFbGVtZW50IiwicmVuZGVyU2VsZlRvb2xCdXR0b24iLCJfcmVmIiwic2VsZkJ1dHRvbiIsInBhZ2VSZWYiLCJmdW5jcyIsImxvYWRpbmciLCJ0eXBlIiwibGVuZ3RoIiwibWFwIiwiaXRlbSIsImluZGV4IiwicGFnZVR5cGUiLCJrZXkiLCJvbkNsaWNrIiwiZXZlbnRPcHRpb24iLCJmdW5jIiwiRnVuY3Rpb24iLCJjb2RlIiwibmFtZSIsInJlbmRlclNlbGZDb2x1bW5CdXR0b24iLCJfcmVmMiIsInNlbGZDb2x1bW5CdXR0b24iLCJyZWNvcmQiLCJyZWNvcmRTaG93IiwiZ2V0UGFnZURhdGEiLCJwYXJhbXMiLCJnZXQiLCJ4c3NGaWx0ZXIiLCJhdXRvUHJlZml4Iiwic2V0RmllbGREaXNhYmxlZCIsImRhdGEiLCJkaXNhYmxlZCIsImNvbHVtbnMiLCJuZXdDb2x1bW5zIiwib2JqIiwiX29iamVjdFNwcmVhZCIsImRhdGFJbmRleCIsImluZGV4T2YiLCJwcm9wcyIsInB1c2giLCJzZXRGaWVsZFZpc2libGUiLCJ2aXNpYmxlIiwiZWRpdG9yIiwic2V0RmllbGRQcm9wc0RhdGEiLCJwcm9wc0RhdGEiLCJqdW1wUGFnZSIsInBhdGhuYW1lIiwicXVlcnkiLCJpZCIsInRpdGxlIiwic2VydmljZU5hbWUiLCJzZXJ2aWNlUGF0aCIsIm9wZW5UeXBlIiwibmV3UXVlcnkiLCJ1cmxQYXJhbXMiLCJzdHJpbmdpZnkiLCJwYXRoIiwiY29uY2F0Iiwid2luZG93IiwiX19QT1dFUkVEX0JZX1FJQU5LVU5fXyIsInBhcmVudCIsInBvc3RNZXNzYWdlIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsImxvY2F0aW9uIiwib3JpZ2luIiwiaGlzdG9yeSIsInB1c2hTdGF0ZSIsImdvIiwiZ2V0UHJvamVjdCIsInByb2plY3QiLCJkZWZhdWx0U3RhdGVWYWx1ZSIsInBhZ2VQcm9wcyIsInRyZWVQcm9wcyIsInN0b3JlIiwidXJsIiwiYXV0b0xvYWQiLCJ0YWJsZVByb3BzIiwic2VsZlRvb2xCdXR0b24iLCJzZWxmRm9ybUJ1dHRvbiIsInBhZ2VMb2FkaW5nIiwiZGVmYXVsdENvbHVtbnMiLCJvdGhlclByb3BzIiwiYnV0dG9uTG9hZGluZyIsImZvcm1QYWdlUHJvcHMiLCJTZXR0aW5nVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsInJlcyIsIl9wYWdlUHJvcHMkcmVxdWVzdFBhciIsInN0YXRlIiwic2hvd1NlYXJjaCIsInJlcXVlc3RQYXJhbXMiLCJxdWVyeVBhcmFtcyIsInRhYmxlRGF0YVJlc291cmNlIiwiZGVmYXVsdFNlYXJjaCIsInNldFRpbWVvdXQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQyIiwiY3VycmVudCIsInRhYmxlTG9hZCIsInNldFNlYXJjaFBhcmFtcyIsImNvbXBvbmVudERpZE1vdW50IiwiZ2V0RGF0YSIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZXZTdGF0ZSIsInNuYXBzaG90IiwidGFibGVDb2RlIiwic2V0U3RhdGUiLCJwdWJsaXNoZWQiLCJtZW51Q29kZSIsInRhYlBhcmFtcyIsImlzUHVibGlzaGVkIiwidGhlbiIsIl9wYWdlX3Byb3BzJHBlcm1pc3NpbyIsIl9wYWdlX3Byb3BzJHJlcXVlc3RQYSIsInRhYmxlX3Byb3BzIiwiSlNPTiIsInBhcnNlIiwidHJlZV9wcm9wcyIsInBhZ2VfcHJvcHMiLCJvdGhlcl9wcm9wcyIsIm90aGVyUGFyYW1zIiwiZm9ybV9wcm9wcyIsImZvcm1Qcm9wcyIsInBlcm1pc3Npb24iLCJoYXMiLCJjb25zb2xlIiwibG9nIiwiVXRpbHMiLCJwYXJhbUZ1bmMiLCJjb252ZXJUYWJQYXJhbXMiLCJuZXdSZXF1ZXN0UGFyYW1zIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIiwiY29udmVyUGFyYW1zIiwib3RoZXIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJuZXdQYXJhbXMiLCJjb2x1bW5CdXR0b25zIiwidG9vbEJ1dHRvbnMiLCJfbWVzc2FnZSIsImVycm9yIiwiZ2V0U2VhcmNoVmFsdWVzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MyIsInZhbHVlIiwiY2FsbEJhY2siLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50NSIsInJlcXVlc3RDb25maWciLCJ1bmRlZmluZWQiLCJ0YWJsZVJlbG9hZCIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ3IiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDgiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDkiLCJyZW5kZXIiLCJjbGFzc05hbWUiLCJiYXNlUHJvcHMiLCJzZXR0aW5nVHJlZVByb3BzIiwic2V0dGluZ1RhYmxlUHJvcHMiLCJfZXhjbHVkZWQyIiwiX3RoaXMiLCJkZWF1bHRGdW5jcyIsIm5ld0RhdGEiLCJzZXRCdXR0b25Mb2FkaW5nIiwiZ2V0Q3VycmVudFByb2plY3QiLCJjaGlsZHJlbiIsImNvZGVTZWxmQnV0dG9ucyIsImNvZGVjb2x1bW5CdXR0b25zIiwiY29kZUZvcm1CdXR0b25zIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGQiLCJfY2hpbGQkcHJvcHMiLCJfY2hpbGQkcHJvcHMyIiwiX2NoaWxkJHByb3BzMyIsIl9pdGVtJHByb3BzIiwiX2l0ZW0kcHJvcHMyIiwiX2l0ZW0kcHJvcHMzIiwic3R5bGUiLCJ3aWR0aCIsImhlaWdodCIsInNwaW5uaW5nIiwiX2V4dGVuZHMiLCJyZWYiLCJvbkhpZGVGb3JtIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MTAiLCJoaWRlRm9ybSIsImluaXREYXRhIiwiZm9ybVR5cGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL1NldHRpbmdUYWJsZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlRWZmZWN0LCB1c2VJbXBlcmF0aXZlSGFuZGxlLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgQmFzZVBhZ2UsIHsgTlNDQmFzZUJhZ2VQcm9wcyB9IGZyb20gXCIuLi9CYXNlUGFnZVwiO1xyXG5pbXBvcnQgU3BpbiBmcm9tIFwiLi4vLi4vYmFzZS9zcGluXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCAqIGFzIE5zY0NvbSBmcm9tIFwiLi9jb21cIjtcclxuaW1wb3J0IE5zY0ZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCBOc2NSZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgKiBhcyBOc2NVdGlscyBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgeyBtZXNzYWdlIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IHF1ZXJ5U3RyaW5nIGZyb20gXCJxdWVyeS1zdHJpbmdcIjtcclxuaW1wb3J0IHsgZ2V0TG9jYWxTdG9yZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCB7IGNvbnZlckZ1bmN0aW9uIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbi8vIGltcG9ydCB7IGhpc3RvcnkgfSBmcm9tICd1bWknXHJcbi8vIGltcG9ydCB7IGdldENvbmZpZ0RhdGEgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5jb25zdCBkZWZhdWxVdGlsID0ge1xyXG4gIE5zY0NvbSxcclxuICBOc2NGaWxlLFxyXG4gIE5zY1JlcXVlc3QsXHJcbiAgTnNjVXRpbHMsXHJcbiAgZGF5anMsXHJcbiAgY3JlYXRlRWxlbWVudDogUmVhY3QuY3JlYXRlRWxlbWVudCxcclxufSBhcyBhbnk7XHJcbmNvbnN0IHJlbmRlclNlbGZUb29sQnV0dG9uID0gKHtcclxuICBzZWxmQnV0dG9uLFxyXG4gIHBhZ2VSZWYsXHJcbiAgZnVuY3MsXHJcbiAgbG9hZGluZyxcclxuICB0eXBlID0gXCJ0b29sQnV0dG9uXCIsXHJcbn0pID0+IHtcclxuICBpZiAoc2VsZkJ1dHRvbi5sZW5ndGggPT0gMCkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBzZWxmQnV0dG9uLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgcGFnZVR5cGU9e3R5cGV9XHJcbiAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgdHlwZT17aXRlbS50eXBlfVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZXZlbnRPcHRpb24gPSB7IHBhZ2VSZWY6IHBhZ2VSZWYsIGZ1bmNzOiBmdW5jcyB9O1xyXG4gICAgICAgICAgICBjb25zdCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHMsZXZlbnRPcHRpb25cIiwgaXRlbS5vbkNsaWNrKTtcclxuICAgICAgICAgICAgZnVuYyhkZWZhdWxVdGlsLCBldmVudE9wdGlvbik7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgY29kZT17aXRlbS5jb2RlfVxyXG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ1tpdGVtLmNvZGVdID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtpdGVtLm5hbWV9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCByZW5kZXJTZWxmQ29sdW1uQnV0dG9uID0gKHsgc2VsZkNvbHVtbkJ1dHRvbiwgcGFnZVJlZiwgZnVuY3MgfSkgPT4ge1xyXG4gIGlmIChzZWxmQ29sdW1uQnV0dG9uLmxlbmd0aCA9PSAwKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIHNlbGZDb2x1bW5CdXR0b24ubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBwYWdlVHlwZT1cImNvbHVtbkJ1dHRvblwiXHJcbiAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgdHlwZT17aXRlbS50eXBlfVxyXG4gICAgICAgICAgb25DbGljaz17KHJlY29yZCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZXZlbnRPcHRpb24gPSB7XHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogcGFnZVJlZixcclxuICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZCxcclxuICAgICAgICAgICAgICBmdW5jczogZnVuY3MsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlscyxldmVudE9wdGlvblwiLCBpdGVtLm9uQ2xpY2spO1xyXG4gICAgICAgICAgICBmdW5jKGRlZmF1bFV0aWwsIGV2ZW50T3B0aW9uKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBjb2RlPXtpdGVtLmNvZGV9XHJcbiAgICAgICAgICByZWNvcmRTaG93PXtpdGVtLnJlY29yZFNob3d9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2l0ZW0ubmFtZX1cclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGdldFBhZ2VEYXRhID0gKHBhcmFtczogYW55KSA9PiB7XHJcbiAgcmV0dXJuIE5zY1JlcXVlc3QuZ2V0KGAvanF1aWNrLXNldHRpbmcvc2V0dGluZy90YWJsZS9pbmZvL2AsIHtcclxuICAgIHBhcmFtcyxcclxuICAgIHhzc0ZpbHRlcjogZmFsc2UsXHJcbiAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gIH0pO1xyXG59O1xyXG5cclxuLy/orr7nva7ooajljZXlrZfmrrXlj6ror7tcclxuY29uc3Qgc2V0RmllbGREaXNhYmxlZCA9IChkYXRhOiBBcnJheTxhbnk+LCBrZXksIGRpc2FibGVkKSA9PiB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFsuLi5kYXRhXTtcclxuICBsZXQgbmV3Q29sdW1ucyA9IFtdIGFzIGFueTtcclxuICBjb2x1bW5zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgaWYgKGl0ZW0uZGF0YUluZGV4ID09IGtleSB8fCBrZXkuaW5kZXhPZihpdGVtLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICBsZXQgcHJvcHMgPSBvYmoucHJvcHMgPyB7IC4uLm9iai5wcm9wcyB9IDoge307XHJcbiAgICAgIHByb3BzLmRpc2FibGVkID0gZGlzYWJsZWQ7XHJcbiAgICAgIG9iai5wcm9wcyA9IHByb3BzO1xyXG4gICAgfVxyXG4gICAgbmV3Q29sdW1ucy5wdXNoKG9iaik7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG5ld0NvbHVtbnM7XHJcbn07XHJcbi8v6K6+572u6KGo5Y2V5a2X5q616ZqQ6JePXHJcbmNvbnN0IHNldEZpZWxkVmlzaWJsZSA9IChkYXRhOiBBcnJheTxhbnk+LCBrZXksIHZpc2libGUpID0+IHtcclxuICBjb25zdCBjb2x1bW5zID0gWy4uLmRhdGFdO1xyXG4gIGxldCBuZXdDb2x1bW5zID0gW10gYXMgYW55O1xyXG4gIGNvbHVtbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICBpZiAoaXRlbS5kYXRhSW5kZXggPT0ga2V5IHx8IGtleS5pbmRleE9mKGl0ZW0uZGF0YUluZGV4KSA+IC0xKSB7XHJcbiAgICAgIG9iai5lZGl0b3IgPSB2aXNpYmxlO1xyXG4gICAgfVxyXG4gICAgbmV3Q29sdW1ucy5wdXNoKG9iaik7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG5ld0NvbHVtbnM7XHJcbn07XHJcblxyXG5jb25zdCBzZXRGaWVsZFByb3BzRGF0YSA9IChkYXRhOiBBcnJheTxhbnk+LCBrZXksIHByb3BzRGF0YSkgPT4ge1xyXG4gIGNvbnN0IGNvbHVtbnMgPSBbLi4uZGF0YV07XHJcbiAgbGV0IG5ld0NvbHVtbnMgPSBbXSBhcyBhbnk7XHJcbiAgY29sdW1ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgIGlmIChpdGVtLmRhdGFJbmRleCA9PSBrZXkpIHtcclxuICAgICAgbGV0IHByb3BzID0gb2JqLnByb3BzID8geyAuLi5vYmoucHJvcHMgfSA6IHt9O1xyXG4gICAgICBwcm9wcy5kYXRhID0gcHJvcHNEYXRhO1xyXG4gICAgICBvYmoucHJvcHMgPSBwcm9wcztcclxuICAgIH1cclxuICAgIG5ld0NvbHVtbnMucHVzaChvYmopO1xyXG4gIH0pO1xyXG4gIHJldHVybiBuZXdDb2x1bW5zO1xyXG59O1xyXG5pbnRlcmZhY2UgSVBhcmFtcyB7XHJcbiAgcGF0aG5hbWU/OiBzdHJpbmc7XHJcbiAgcXVlcnk/OiBhbnk7XHJcbiAgaWQ/OiBzdHJpbmc7XHJcbiAgc2VydmljZU5hbWU/OiBzdHJpbmc7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgc2VydmljZVBhdGg/OiBzdHJpbmc7XHJcbiAgbWVudUNvZGU/OiBzdHJpbmc7XHJcbiAgb3BlblR5cGU/OiBudW1iZXI7XHJcbn1cclxuY29uc3QganVtcFBhZ2UgPSAocGFyYW1zOiBJUGFyYW1zLCB0eXBlPzogXCJhZGRUYWJcIiB8IFwianVtcE1lbnVcIikgPT4ge1xyXG4gIGNvbnN0IHtcclxuICAgIHBhdGhuYW1lLFxyXG4gICAgcXVlcnkgPSB7fSxcclxuICAgIGlkLFxyXG4gICAgdGl0bGUsXHJcbiAgICBzZXJ2aWNlTmFtZSxcclxuICAgIHNlcnZpY2VQYXRoLFxyXG4gICAgb3BlblR5cGUsXHJcbiAgfSA9IHBhcmFtcztcclxuICBjb25zdCBuZXdRdWVyeSA9IHsgLi4ucXVlcnkgfSBhcyBhbnk7XHJcbiAgY29uc3QgdXJsUGFyYW1zID0gcXVlcnlTdHJpbmcuc3RyaW5naWZ5KG5ld1F1ZXJ5KTtcclxuICBjb25zdCBwYXRoID0gdXJsUGFyYW1zID8gYCR7cGF0aG5hbWV9PyR7dXJsUGFyYW1zfWAgOiBwYXRobmFtZTtcclxuICAvL0B0cy1pZ25vcmVcclxuICBpZiAod2luZG93Ll9fUE9XRVJFRF9CWV9RSUFOS1VOX18pIHtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIHRpdGxlOiB0aXRsZSB8fCBcIuaWsOagh+etvlwiLFxyXG4gICAgICBzZXJ2aWNlTmFtZTogc2VydmljZU5hbWUsIC8v6YWN572u55qE5b6u5bqU55So5ZCN56ewXHJcbiAgICAgIHNlcnZpY2VQYXRoOiBzZXJ2aWNlUGF0aCwgLy/phY3nva7nmoTlvq7lupTnlKjlhaXlj6PlnLDlnYBcclxuICAgICAgcGF0aDogcGF0aCwgLy/mlrDmoIfnrb7nmoR1cmws5rKh6YWN572uc2VydmljZU5hbWUgcGF0aOS4uuWujOaVtOi3r+W+hFxyXG4gICAgICBpZDogaWQsIC8v6Ieq5a6a5LmJ5ZSv5LiA5YC8XHJcbiAgICAgIG9wZW5UeXBlOiBvcGVuVHlwZSA/IG9wZW5UeXBlIDogNCwgLy/miZPlvIDmlrnlvI8gNOS9jeW+ruWJjeerrywgM+S4umlmcmFtZSAs6buY6K6kIDNcclxuICAgIH07XHJcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKFxyXG4gICAgICB7XHJcbiAgICAgICAgZXZlbnRUeXBlOiB0eXBlID8gdHlwZSA6IFwiYWRkVGFiXCIsXHJcbiAgICAgICAgc2VydmljZU5hbWU6IHNlcnZpY2VOYW1lID8gc2VydmljZU5hbWUgOiBcInNldHRpbmctd2ViXCIsXHJcbiAgICAgICAgcGF5bG9hZDogdHlwZSA/IHBhcmFtcyA6IGRhdGEsXHJcbiAgICAgIH0sXHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5cclxuICAgICk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgXCJcIiwgcGF0aCk7XHJcbiAgICB3aW5kb3cuaGlzdG9yeS5nbygpO1xyXG4gIH1cclxufTtcclxuY29uc3QgZ2V0UHJvamVjdCA9ICgpID0+IHtcclxuICBjb25zdCBwcm9qZWN0ID0gZ2V0TG9jYWxTdG9yZSh7IG5hbWU6IFwibnNjLWhvbWUtcHJvamVjdFwiIH0pIHx8IHt9O1xyXG4gIHJldHVybiBwcm9qZWN0O1xyXG59O1xyXG5pbnRlcmZhY2UgSVByb3BzIHtcclxuICB0YWJsZUNvZGU6IHN0cmluZztcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgbWVudUNvZGU/OiBzdHJpbmc7XHJcbiAgZnVuY3M/OiBhbnk7XHJcbiAgcHVibGlzaGVkPzogYm9vbGVhbjtcclxuICBpbnN0YW5jZVJlZj86IGFueTtcclxuICB0YWJQYXJhbXM/OiBhbnk7XHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7IC8v5qCR54K55Ye75p+l6K+i5ZCO5Zue6LCDXHJcbiAgICBvblF1ZXJ5Q2FsbEJhY2s/OiBhbnk7IC8v5p+l6K+i5Zue6LCD77yM5p+l6K+i5pWw5o2u5ZCO5Zue6LCDXHJcbiAgICBvblN1bWJpdENhbGxCYWNrPzogYW55OyAvL+S/neWtmOWbnuiwg++8jOS/neWtmOaVsOaNruaIkOWKn+WQjuWbnuiwg1xyXG4gICAgb25EZWxldGVDYWxsQmFjaz86IGFueTsgLy/liKDpmaTmjInpkq7lm57osIPvvIzliKDpmaTmlbDmja7lkI7miafooYxcclxuICAgIG9uRWRpdG9yQ2FsbEJhY2s/OiBhbnk7IC8v57yW6L6R5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvbkFkZENhbGxCYWNrPzogYW55OyAvL+a3u+WKoOaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25TZWFyY2hDYWxsQmFjaz86IGFueTsgLy/liJfooajmn6Xor6LmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICB9O1xyXG4gIGJhc2VQcm9wcz86IE5TQ0Jhc2VCYWdlUHJvcHM7XHJcbiAgYXV0b0xvYWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5jb25zdCBkZWZhdWx0U3RhdGVWYWx1ZSA9IHtcclxuICBwYWdlUHJvcHM6IHt9IGFzIGFueSxcclxuICB0cmVlUHJvcHM6IHsgc3RvcmU6IHsgdXJsOiBcIlwiLCBhdXRvTG9hZDogZmFsc2UgfSB9IGFzIGFueSxcclxuICB0YWJsZVByb3BzOiB7fSBhcyBhbnksXHJcbiAgc2VsZlRvb2xCdXR0b246IFtdIGFzIGFueSxcclxuICBzZWxmQ29sdW1uQnV0dG9uOiBbXSBhcyBhbnksXHJcbiAgc2VsZkZvcm1CdXR0b246IFtdIGFzIGFueSxcclxuICBwYWdlTG9hZGluZzogdHJ1ZSxcclxuICBkZWZhdWx0Q29sdW1uczogW10gYXMgYW55LFxyXG4gIG90aGVyUHJvcHM6IHt9IGFzIGFueSxcclxuICBidXR0b25Mb2FkaW5nOiB7fSBhcyBhbnksXHJcbiAgZm9ybVBhZ2VQcm9wczoge30gYXMgYW55LFxyXG59O1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXR0aW5nVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBhbnk+IHtcclxuICBzdGF0ZSA9IHtcclxuICAgIC4uLmRlZmF1bHRTdGF0ZVZhbHVlLFxyXG4gIH07XHJcbiAgcGFnZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoXHJcbiAgICBwcmV2UHJvcHM6IFJlYWRvbmx5PElQcm9wcz4sXHJcbiAgICBwcmV2U3RhdGU6IFJlYWRvbmx5PGFueT4sXHJcbiAgICBzbmFwc2hvdD86IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKHByZXZQcm9wcy50YWJsZUNvZGUgIT0gdGhpcy5wcm9wcy50YWJsZUNvZGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICAuLi5kZWZhdWx0U3RhdGVWYWx1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXREYXRhID0gKHJlczogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG90aGVyUHJvcHMsIHBhZ2VQcm9wcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChcclxuICAgICAgcGFnZVByb3BzLnNob3dTZWFyY2ggIT09IGZhbHNlICYmXHJcbiAgICAgIHBhZ2VQcm9wcy5yZXF1ZXN0UGFyYW1zPy5xdWVyeVBhcmFtcyAmJlxyXG4gICAgICBvdGhlclByb3BzLnRhYmxlRGF0YVJlc291cmNlID09IFwidXJsXCJcclxuICAgICkge1xyXG4gICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzLGV2ZW50T3B0aW9uXCIsIG90aGVyUHJvcHMuZGVmYXVsdFNlYXJjaCk7XHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGZ1bmMoZGVmYXVsVXRpbCwgeyBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYgfSk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py50YWJsZUxvYWQoeyAuLi5wYXJhbXMgfSk7XHJcbiAgICAgICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyh7IC4uLnBhcmFtcyB9KTtcclxuICAgICAgfSwgNTApOyAvL+ebtOaOpeiuvue9ru+8jHBhZ2VSZWbmsqHnu5HlrprvvIzmmoLml7bpgJrov4flu7bov5/lh73mlbDov5vooYzop6PlhrNcclxuICAgIH1cclxuICB9O1xyXG4gIC8vIOiOt+WPluaVsOaNrlxyXG4gIGdldERhdGEoKSB7XHJcbiAgICAvLyDku45wcm9wc+S4reiOt+WPlnRhYmxlQ29kZeOAgXB1Ymxpc2hlZOOAgW1lbnVDb2RlXHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgcGFnZUxvYWRpbmc6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgdGFibGVDb2RlLCBwdWJsaXNoZWQgPSB0cnVlLCBtZW51Q29kZSwgdGFiUGFyYW1zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgLy8g5aaC5p6cdGFibGVDb2Rl5a2Y5ZyoXHJcbiAgICBpZiAodGFibGVDb2RlKSB7XHJcbiAgICAgIC8vIOWumuS5ieWPguaVsFxyXG4gICAgICBsZXQgcGFyYW1zID0geyBjb2RlOiB0YWJsZUNvZGUgfSBhcyBhbnk7XHJcbiAgICAgIC8vIOWmguaenHB1Ymxpc2hlZOS4unRydWVcclxuICAgICAgaWYgKHB1Ymxpc2hlZCkge1xyXG4gICAgICAgIC8vIOiuvue9ruWPguaVsGlzUHVibGlzaGVk5Li6MVxyXG4gICAgICAgIHBhcmFtcy5pc1B1Ymxpc2hlZCA9IDE7XHJcbiAgICAgIH1cclxuICAgICAgLy8g6LCD55SoZ2V0UGFnZURhdGHmlrnms5Xojrflj5bmlbDmja5cclxuICAgICAgZ2V0UGFnZURhdGEoeyAuLi5wYXJhbXMgfSkudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwICYmIHJlcy5kYXRhKSB7XHJcbiAgICAgICAgICBsZXQgdGFibGVfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnRhYmxlUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCB0cmVlX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS50cmVlUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCBwYWdlX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS5wYWdlUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCBvdGhlcl9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEub3RoZXJQYXJhbXMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCBmb3JtX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS5mb3JtUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGlmIChwYWdlX3Byb3BzLnBlcm1pc3Npb24/LmhhcyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHBhZ2VfcHJvcHMucGVybWlzc2lvbi5tZW51Q29kZSA9IG1lbnVDb2RlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHB1Ymxpc2hlZCA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBwYWdlX3Byb3BzLnBlcm1pc3Npb24gPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgKHBhZ2VfcHJvcHMuc2hvd1NlYXJjaCAhPT0gZmFsc2UgJiZcclxuICAgICAgICAgICAgICBwYWdlX3Byb3BzPy5yZXF1ZXN0UGFyYW1zPy5xdWVyeVBhcmFtcyAmJlxyXG4gICAgICAgICAgICAgIG90aGVyX3Byb3BzPy50YWJsZURhdGFSZXNvdXJjZSA9PSBcInVybFwiKSB8fFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmF1dG9Mb2FkID09PSBmYWxzZVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRhYmxlX3Byb3BzLnN0b3JlLmF1dG9Mb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygndGFibGVfcHJvcHMuc3RvcmUnLHRhYmxlX3Byb3BzLnN0b3JlKVxyXG4gICAgICAgICAgaWYgKHRhYlBhcmFtcykge1xyXG4gICAgICAgICAgICBjb25zdCBVdGlscyA9IGRlZmF1bFV0aWwgfHwge307XHJcbiAgICAgICAgICAgIGxldCBwYXJhbUZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCB0YWJQYXJhbXMpO1xyXG4gICAgICAgICAgICBsZXQgY29udmVyVGFiUGFyYW1zID0gcGFyYW1GdW5jKFV0aWxzKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2VfcHJvcHMucmVxdWVzdFBhcmFtcykge1xyXG4gICAgICAgICAgICAgIGxldCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gcGFnZV9wcm9wcztcclxuICAgICAgICAgICAgICBsZXQgbmV3UmVxdWVzdFBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiBudWxsLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIG5ld1JlcXVlc3RQYXJhbXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0UGFyYW1zW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCByZXF1ZXN0UGFyYW1zW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSwgLi4ub3RoZXIgfSA9IGNvbnZlclBhcmFtcztcclxuICAgICAgICAgICAgICAgICAgbGV0IG5ld1BhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcywgLi4uZGF0YSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLm90aGVyLFxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICBuZXdSZXF1ZXN0UGFyYW1zW2tleV0gPSBuZXdQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBuZXdSZXF1ZXN0UGFyYW1zW2tleV0gPSB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcGFnZV9wcm9wcy5yZXF1ZXN0UGFyYW1zID0geyAuLi5uZXdSZXF1ZXN0UGFyYW1zIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcGFnZV9wcm9wcy5yZXF1ZXN0UGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9LFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfSxcclxuICAgICAgICAgICAgICAgIGVkaXRvclBhcmFtczogeyBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcyB9IH0sXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhZ2VQcm9wczoge1xyXG4gICAgICAgICAgICAgICAgLi4ucGFnZV9wcm9wcyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRyZWVQcm9wczoge1xyXG4gICAgICAgICAgICAgICAgLi4udHJlZV9wcm9wcyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRhYmxlUHJvcHM6IHtcclxuICAgICAgICAgICAgICAgIC4uLnRhYmxlX3Byb3BzLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgb3RoZXJQcm9wczogeyAuLi5vdGhlcl9wcm9wcyB9LFxyXG4gICAgICAgICAgICAgIHNlbGZDb2x1bW5CdXR0b246IEpTT04ucGFyc2UocmVzLmRhdGEuY29sdW1uQnV0dG9ucykgfHwgW10sXHJcbiAgICAgICAgICAgICAgc2VsZlRvb2xCdXR0b246IEpTT04ucGFyc2UocmVzLmRhdGEudG9vbEJ1dHRvbnMpIHx8IFtdLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRDb2x1bW5zOiBwYWdlX3Byb3BzLmNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgZm9ybVBhZ2VQcm9wczogZm9ybV9wcm9wcyxcclxuICAgICAgICAgICAgICBzZWxmRm9ybUJ1dHRvbjogZm9ybV9wcm9wcz8uc2VsZkJ1dHRvbiB8fCBbXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzLmNvZGUgPT0gMjAwICYmIHJlcy5kYXRhID09IG51bGwpIHtcclxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLmnKrmib7liLDphY3nva7kv6Hmga/vvIFcIik7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gb25TZWFyY2goKSB7fVxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnRhYmxlTG9hZChwYXJhbXMsIHJlcXVlc3RDb25maWcpO1xyXG4gIH1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8udGFibGVSZWxvYWQocGFyYW1zLCBhdXRvTG9hZCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgZnVuY3MgPSB7fSxcclxuICAgICAgYmFzZVByb3BzID0ge30gYXMgTlNDQmFzZUJhZ2VQcm9wcyxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBwYWdlUHJvcHMsXHJcbiAgICAgIHRyZWVQcm9wcyxcclxuICAgICAgdGFibGVQcm9wcyxcclxuICAgICAgc2VsZlRvb2xCdXR0b24sXHJcbiAgICAgIHNlbGZDb2x1bW5CdXR0b24sXHJcbiAgICAgIHBhZ2VMb2FkaW5nLFxyXG4gICAgICBkZWZhdWx0Q29sdW1ucyxcclxuICAgICAgYnV0dG9uTG9hZGluZyA9IHt9LFxyXG4gICAgICBmb3JtUGFnZVByb3BzID0ge30sXHJcbiAgICAgIHNlbGZGb3JtQnV0dG9uLFxyXG4gICAgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHRyZWVQcm9wczogc2V0dGluZ1RyZWVQcm9wcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzOiBzZXR0aW5nVGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICAuLi5vdGhlclByb3BzXHJcbiAgICB9ID0gYmFzZVByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIC8vIGNvbnN0IHtzdG9yZTp0YWJsZVN0b3JlfVxyXG4gICAgLy8gY29uc3QgeyBzdG9yZTogc2V0dGluZ1RhYmxlU3RvcmUgfSA9IHNldHRpbmdUYWJsZVByb3BzO1xyXG4gICAgY29uc3QgZGVhdWx0RnVuY3MgPSB7XHJcbiAgICAgIHNldEZpZWxkRGlzYWJsZWQ6IChrZXksIGRpc2FibGVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkRGlzYWJsZWQocGFnZVByb3BzLmNvbHVtbnMsIGtleSwgZGlzYWJsZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXRGaWVsZFZpc2libGU6IChrZXksIGRpc2FibGVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkVmlzaWJsZShwYWdlUHJvcHMuY29sdW1ucywga2V5LCBkaXNhYmxlZCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBwYWdlUHJvcHM6IHsgLi4ucGFnZVByb3BzLCBjb2x1bW5zOiBuZXdEYXRhIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldEZpZWxkUHJvcHNEYXRhOiAoa2V5LCBkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkUHJvcHNEYXRhKHBhZ2VQcm9wcy5jb2x1bW5zLCBrZXksIGRhdGEpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBoaXN0b3J5OiAocGFyYW1zLCB0eXBlKSA9PiB7XHJcbiAgICAgICAganVtcFBhZ2UocGFyYW1zLCB0eXBlKTtcclxuICAgICAgfSxcclxuICAgICAgc2V0QnV0dG9uTG9hZGluZyhjb2RlLCBsb2FkaW5nKSB7XHJcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgYnV0dG9uTG9hZGluZzogeyAuLi5idXR0b25Mb2FkaW5nLCBbY29kZV06IGxvYWRpbmcgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuXHJcbiAgICAgIGdldEN1cnJlbnRQcm9qZWN0OiAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGdldFByb2plY3QoKTtcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IGNvZGVTZWxmQnV0dG9ucyA9IFtdO1xyXG4gICAgbGV0IGNvZGVjb2x1bW5CdXR0b25zID0gW107XHJcbiAgICBsZXQgY29kZUZvcm1CdXR0b25zID0gW107XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvZGVjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBjb2RlRm9ybUJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvZGVTZWxmQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICBjb2RlY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgY29kZUZvcm1CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgIGNvZGVTZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIikge1xyXG4gICAgICAgIGNvZGVjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIikge1xyXG4gICAgICAgIGNvZGVGb3JtQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhcIm5zYy1mcmFtZXdvcmstdGFibGVwYWdlXCIsIGNsYXNzTmFtZSl9PlxyXG4gICAgICAgIHtwYWdlTG9hZGluZyA/IChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiIH19PlxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17cGFnZUxvYWRpbmd9PjwvU3Bpbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICkgOiAoXHJcbiAgICAgICAgICA8QmFzZVBhZ2VcclxuICAgICAgICAgICAgey4uLnBhZ2VQcm9wc31cclxuICAgICAgICAgICAgdHJlZVByb3BzPXt7IC4uLnRyZWVQcm9wcywgLi4uc2V0dGluZ1RyZWVQcm9wcyB9fVxyXG4gICAgICAgICAgICB0YWJsZVByb3BzPXt7IC4uLnRhYmxlUHJvcHMsIC4uLnNldHRpbmdUYWJsZVByb3BzIH19XHJcbiAgICAgICAgICAgIGZvcm1Qcm9wcz17e319XHJcbiAgICAgICAgICAgIFV0aWxzPXt7IC4uLmRlZmF1bFV0aWwgfX1cclxuICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgICAgICAgIHBhZ2VSZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgICAgICAgb25IaWRlRm9ybT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogZGVmYXVsdENvbHVtbnMgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZnVuY3M9e3sgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH19XHJcbiAgICAgICAgICAgIGluaXREYXRhPXt0aGlzLmluaXREYXRhfVxyXG4gICAgICAgICAgICBmb3JtUGFnZVByb3BzPXt7XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU6IGZvcm1QYWdlUHJvcHMuZm9ybVR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICAgICAgICAgIHByb3BzOiBmb3JtUGFnZVByb3BzPy5wcm9wcyxcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgdGFibGVDb2RlPXt0aGlzLnByb3BzLnRhYmxlQ29kZX1cclxuICAgICAgICAgICAgey4uLm90aGVyUHJvcHN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtyZW5kZXJTZWxmVG9vbEJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbjogc2VsZlRvb2xCdXR0b24sXHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB7IC4uLmRlYXVsdEZ1bmNzLCAuLi5mdW5jcyB9LFxyXG4gICAgICAgICAgICAgIGxvYWRpbmc6IHRoaXMuc3RhdGUuYnV0dG9uTG9hZGluZyxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtjb2RlU2VsZkJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZkNvbHVtbkJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkNvbHVtbkJ1dHRvbixcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHsgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH0sXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7Y29kZWNvbHVtbkJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZlRvb2xCdXR0b24oe1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b246IHNlbGZGb3JtQnV0dG9uLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogeyAuLi5kZWF1bHRGdW5jcywgLi4uZnVuY3MgfSxcclxuICAgICAgICAgICAgICBsb2FkaW5nOiB0aGlzLnN0YXRlLmJ1dHRvbkxvYWRpbmcsXHJcbiAgICAgICAgICAgICAgdHlwZTogXCJmb3JtQnV0dG9uXCIsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7Y29kZUZvcm1CdXR0b25zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvQmFzZVBhZ2U+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0EsT0FBT0EsUUFBUSxNQUE0QixhQUFhO0FBQ3hELE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPLGNBQWM7QUFDckIsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBTyxLQUFLQyxNQUFNLE1BQU0sT0FBTztBQUMvQixPQUFPQyxPQUFPLE1BQU0sVUFBVTtBQUM5QixPQUFPQyxVQUFVLE1BQU0sYUFBYTtBQUNwQyxPQUFPLEtBQUtDLFFBQVEsTUFBTSxtQkFBbUI7QUFDN0MsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFFNUIsT0FBT0MsV0FBVyxNQUFNLGNBQWM7QUFDdEMsU0FBU0MsYUFBYSxRQUFRLG1CQUFtQjtBQUNqRCxPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUV6QjtBQUNBOztBQUVBLE1BQU1DLFVBQVUsR0FBRztFQUNqQlIsTUFBTTtFQUNOQyxPQUFPO0VBQ1BDLFVBQVU7RUFDVkMsUUFBUTtFQUNSSSxLQUFLO0VBQ0xFLGFBQWEsRUFBRVYsS0FBSyxDQUFDVTtBQUN2QixDQUFRO0FBQ1IsTUFBTUMsb0JBQW9CLEdBQUdDLElBQUEsSUFNdkI7RUFBQSxJQU53QjtJQUM1QkMsVUFBVTtJQUNWQyxPQUFPO0lBQ1BDLEtBQUs7SUFDTEMsT0FBTztJQUNQQyxJQUFJLEdBQUc7RUFDVCxDQUFDLEdBQUFMLElBQUE7RUFDQyxJQUFJQyxVQUFVLENBQUNLLE1BQU0sSUFBSSxDQUFDLEVBQUU7SUFDMUIsT0FBTyxJQUFJO0VBQ2IsQ0FBQyxNQUFNO0lBQ0wsT0FBT0wsVUFBVSxDQUFDTSxHQUFH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
|
|
554
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlUGFnZSIsIlNwaW4iLCJCdXR0b24iLCJSZWFjdCIsIk5zY0NvbSIsIk5zY0ZpbGUiLCJOc2NSZXF1ZXN0IiwiTnNjVXRpbHMiLCJjbHMiLCJxdWVyeVN0cmluZyIsImdldExvY2FsU3RvcmUiLCJkYXlqcyIsImRlZmF1bFV0aWwiLCJjcmVhdGVFbGVtZW50IiwicmVuZGVyU2VsZlRvb2xCdXR0b24iLCJfcmVmIiwic2VsZkJ1dHRvbiIsInBhZ2VSZWYiLCJmdW5jcyIsImxvYWRpbmciLCJ0eXBlIiwibGVuZ3RoIiwibWFwIiwiaXRlbSIsImluZGV4IiwicGFnZVR5cGUiLCJrZXkiLCJvbkNsaWNrIiwiZXZlbnRPcHRpb24iLCJmdW5jIiwiRnVuY3Rpb24iLCJjb2RlIiwibmFtZSIsInJlbmRlclNlbGZDb2x1bW5CdXR0b24iLCJfcmVmMiIsInNlbGZDb2x1bW5CdXR0b24iLCJyZWNvcmQiLCJyZWNvcmRTaG93IiwiZ2V0UGFnZURhdGEiLCJwYXJhbXMiLCJnZXQiLCJ4c3NGaWx0ZXIiLCJhdXRvUHJlZml4Iiwic2V0RmllbGREaXNhYmxlZCIsImRhdGEiLCJkaXNhYmxlZCIsImNvbHVtbnMiLCJuZXdDb2x1bW5zIiwib2JqIiwiX29iamVjdFNwcmVhZCIsImRhdGFJbmRleCIsImluZGV4T2YiLCJwcm9wcyIsInB1c2giLCJzZXRGaWVsZFZpc2libGUiLCJ2aXNpYmxlIiwiZWRpdG9yIiwic2V0RmllbGRQcm9wc0RhdGEiLCJwcm9wc0RhdGEiLCJqdW1wUGFnZSIsInBhdGhuYW1lIiwicXVlcnkiLCJpZCIsInRpdGxlIiwic2VydmljZU5hbWUiLCJzZXJ2aWNlUGF0aCIsIm9wZW5UeXBlIiwibmV3UXVlcnkiLCJ1cmxQYXJhbXMiLCJzdHJpbmdpZnkiLCJwYXRoIiwiY29uY2F0Iiwid2luZG93IiwiX19QT1dFUkVEX0JZX1FJQU5LVU5fXyIsInBhcmVudCIsInBvc3RNZXNzYWdlIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsImxvY2F0aW9uIiwib3JpZ2luIiwiaGlzdG9yeSIsInB1c2hTdGF0ZSIsImdvIiwiZ2V0UHJvamVjdCIsInByb2plY3QiLCJkZWZhdWx0U3RhdGVWYWx1ZSIsInBhZ2VQcm9wcyIsInRyZWVQcm9wcyIsInN0b3JlIiwidXJsIiwiYXV0b0xvYWQiLCJ0YWJsZVByb3BzIiwic2VsZlRvb2xCdXR0b24iLCJzZWxmRm9ybUJ1dHRvbiIsInBhZ2VMb2FkaW5nIiwiZGVmYXVsdENvbHVtbnMiLCJvdGhlclByb3BzIiwiYnV0dG9uTG9hZGluZyIsImZvcm1QYWdlUHJvcHMiLCJTZXR0aW5nVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsInJlcyIsInN0YXRlIiwic2hvd1NlYXJjaCIsImRlZmF1bHRTZWFyY2giLCJ0YWJsZURhdGFSZXNvdXJjZSIsInNldFRpbWVvdXQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQyIiwiY3VycmVudCIsInRhYmxlTG9hZCIsInNldFNlYXJjaFBhcmFtcyIsImNvbXBvbmVudERpZE1vdW50IiwiZ2V0RGF0YSIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZXZTdGF0ZSIsInNuYXBzaG90IiwidGFibGVDb2RlIiwic2V0U3RhdGUiLCJwdWJsaXNoZWQiLCJtZW51Q29kZSIsInRhYlBhcmFtcyIsImlzUHVibGlzaGVkIiwidGhlbiIsIl9wYWdlX3Byb3BzJHBlcm1pc3NpbyIsInRhYmxlX3Byb3BzIiwiSlNPTiIsInBhcnNlIiwidHJlZV9wcm9wcyIsInBhZ2VfcHJvcHMiLCJvdGhlcl9wcm9wcyIsIm90aGVyUGFyYW1zIiwiZm9ybV9wcm9wcyIsImZvcm1Qcm9wcyIsInBlcm1pc3Npb24iLCJoYXMiLCJVdGlscyIsInBhcmFtRnVuYyIsImNvbnZlclRhYlBhcmFtcyIsInJlcXVlc3RQYXJhbXMiLCJuZXdSZXF1ZXN0UGFyYW1zIiwicXVlcnlQYXJhbXMiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJjb252ZXJQYXJhbXMiLCJvdGhlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm5ld1BhcmFtcyIsImNvbHVtbkJ1dHRvbnMiLCJ0b29sQnV0dG9ucyIsIl9tZXNzYWdlIiwiZXJyb3IiLCJnZXRTZWFyY2hWYWx1ZXMiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQzIiwidmFsdWUiLCJjYWxsQmFjayIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ1IiwicmVxdWVzdENvbmZpZyIsInVuZGVmaW5lZCIsInRhYmxlUmVsb2FkIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50NiIsImdldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDciLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50OCIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50OSIsInJlbmRlciIsImNsYXNzTmFtZSIsImJhc2VQcm9wcyIsInNldHRpbmdUcmVlUHJvcHMiLCJzZXR0aW5nVGFibGVQcm9wcyIsIl9leGNsdWRlZDIiLCJfdGhpcyIsImRlYXVsdEZ1bmNzIiwibmV3RGF0YSIsInNldEJ1dHRvbkxvYWRpbmciLCJnZXRDdXJyZW50UHJvamVjdCIsImNoaWxkcmVuIiwiY29kZVNlbGZCdXR0b25zIiwiY29kZWNvbHVtbkJ1dHRvbnMiLCJjb2RlRm9ybUJ1dHRvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwiX2l0ZW0kcHJvcHMiLCJfaXRlbSRwcm9wczIiLCJfaXRlbSRwcm9wczMiLCJzdHlsZSIsIndpZHRoIiwiaGVpZ2h0Iiwic3Bpbm5pbmciLCJfZXh0ZW5kcyIsInJlZiIsIm9uSGlkZUZvcm0iLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQxMCIsImhpZGVGb3JtIiwiaW5pdERhdGEiLCJmb3JtVHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvU2V0dGluZ1RhYmxlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VFZmZlY3QsIHVzZUltcGVyYXRpdmVIYW5kbGUsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBCYXNlUGFnZSwgeyBOU0NCYXNlQmFnZVByb3BzIH0gZnJvbSBcIi4uL0Jhc2VQYWdlXCI7XHJcbmltcG9ydCBTcGluIGZyb20gXCIuLi8uLi9iYXNlL3NwaW5cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IFwiLi9pbmRleC5sZXNzXCI7XHJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0ICogYXMgTnNjQ29tIGZyb20gXCIuL2NvbVwiO1xyXG5pbXBvcnQgTnNjRmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IE5zY1JlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCAqIGFzIE5zY1V0aWxzIGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCB7IG1lc3NhZ2UgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgcXVlcnlTdHJpbmcgZnJvbSBcInF1ZXJ5LXN0cmluZ1wiO1xyXG5pbXBvcnQgeyBnZXRMb2NhbFN0b3JlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IHsgY29udmVyRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuLy8gaW1wb3J0IHsgaGlzdG9yeSB9IGZyb20gJ3VtaSdcclxuLy8gaW1wb3J0IHsgZ2V0Q29uZmlnRGF0YSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuXHJcbmNvbnN0IGRlZmF1bFV0aWwgPSB7XHJcbiAgTnNjQ29tLFxyXG4gIE5zY0ZpbGUsXHJcbiAgTnNjUmVxdWVzdCxcclxuICBOc2NVdGlscyxcclxuICBkYXlqcyxcclxuICBjcmVhdGVFbGVtZW50OiBSZWFjdC5jcmVhdGVFbGVtZW50LFxyXG59IGFzIGFueTtcclxuY29uc3QgcmVuZGVyU2VsZlRvb2xCdXR0b24gPSAoe1xyXG4gIHNlbGZCdXR0b24sXHJcbiAgcGFnZVJlZixcclxuICBmdW5jcyxcclxuICBsb2FkaW5nLFxyXG4gIHR5cGUgPSBcInRvb2xCdXR0b25cIixcclxufSkgPT4ge1xyXG4gIGlmIChzZWxmQnV0dG9uLmxlbmd0aCA9PSAwKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIHNlbGZCdXR0b24ubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBwYWdlVHlwZT17dHlwZX1cclxuICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICB0eXBlPXtpdGVtLnR5cGV9XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBldmVudE9wdGlvbiA9IHsgcGFnZVJlZjogcGFnZVJlZiwgZnVuY3M6IGZ1bmNzIH07XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlscyxldmVudE9wdGlvblwiLCBpdGVtLm9uQ2xpY2spO1xyXG4gICAgICAgICAgICBmdW5jKGRlZmF1bFV0aWwsIGV2ZW50T3B0aW9uKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBjb2RlPXtpdGVtLmNvZGV9XHJcbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nW2l0ZW0uY29kZV0gPT09IHRydWUgPyB0cnVlIDogZmFsc2V9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2l0ZW0ubmFtZX1cclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHJlbmRlclNlbGZDb2x1bW5CdXR0b24gPSAoeyBzZWxmQ29sdW1uQnV0dG9uLCBwYWdlUmVmLCBmdW5jcyB9KSA9PiB7XHJcbiAgaWYgKHNlbGZDb2x1bW5CdXR0b24ubGVuZ3RoID09IDApIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gc2VsZkNvbHVtbkJ1dHRvbi5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIHBhZ2VUeXBlPVwiY29sdW1uQnV0dG9uXCJcclxuICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICB0eXBlPXtpdGVtLnR5cGV9XHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBldmVudE9wdGlvbiA9IHtcclxuICAgICAgICAgICAgICBwYWdlUmVmOiBwYWdlUmVmLFxyXG4gICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiBmdW5jcyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzLGV2ZW50T3B0aW9uXCIsIGl0ZW0ub25DbGljayk7XHJcbiAgICAgICAgICAgIGZ1bmMoZGVmYXVsVXRpbCwgZXZlbnRPcHRpb24pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGNvZGU9e2l0ZW0uY29kZX1cclxuICAgICAgICAgIHJlY29yZFNob3c9e2l0ZW0ucmVjb3JkU2hvd31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7aXRlbS5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgZ2V0UGFnZURhdGEgPSAocGFyYW1zOiBhbnkpID0+IHtcclxuICByZXR1cm4gTnNjUmVxdWVzdC5nZXQoYC9qcXVpY2stc2V0dGluZy9zZXR0aW5nL3RhYmxlL2luZm8vYCwge1xyXG4gICAgcGFyYW1zLFxyXG4gICAgeHNzRmlsdGVyOiBmYWxzZSxcclxuICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgfSk7XHJcbn07XHJcblxyXG4vL+iuvue9ruihqOWNleWtl+auteWPquivu1xyXG5jb25zdCBzZXRGaWVsZERpc2FibGVkID0gKGRhdGE6IEFycmF5PGFueT4sIGtleSwgZGlzYWJsZWQpID0+IHtcclxuICBjb25zdCBjb2x1bW5zID0gWy4uLmRhdGFdO1xyXG4gIGxldCBuZXdDb2x1bW5zID0gW10gYXMgYW55O1xyXG4gIGNvbHVtbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICBpZiAoaXRlbS5kYXRhSW5kZXggPT0ga2V5IHx8IGtleS5pbmRleE9mKGl0ZW0uZGF0YUluZGV4KSA+IC0xKSB7XHJcbiAgICAgIGxldCBwcm9wcyA9IG9iai5wcm9wcyA/IHsgLi4ub2JqLnByb3BzIH0gOiB7fTtcclxuICAgICAgcHJvcHMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcclxuICAgICAgb2JqLnByb3BzID0gcHJvcHM7XHJcbiAgICB9XHJcbiAgICBuZXdDb2x1bW5zLnB1c2gob2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gbmV3Q29sdW1ucztcclxufTtcclxuLy/orr7nva7ooajljZXlrZfmrrXpmpDol49cclxuY29uc3Qgc2V0RmllbGRWaXNpYmxlID0gKGRhdGE6IEFycmF5PGFueT4sIGtleSwgdmlzaWJsZSkgPT4ge1xyXG4gIGNvbnN0IGNvbHVtbnMgPSBbLi4uZGF0YV07XHJcbiAgbGV0IG5ld0NvbHVtbnMgPSBbXSBhcyBhbnk7XHJcbiAgY29sdW1ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgIGlmIChpdGVtLmRhdGFJbmRleCA9PSBrZXkgfHwga2V5LmluZGV4T2YoaXRlbS5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgb2JqLmVkaXRvciA9IHZpc2libGU7XHJcbiAgICB9XHJcbiAgICBuZXdDb2x1bW5zLnB1c2gob2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gbmV3Q29sdW1ucztcclxufTtcclxuXHJcbmNvbnN0IHNldEZpZWxkUHJvcHNEYXRhID0gKGRhdGE6IEFycmF5PGFueT4sIGtleSwgcHJvcHNEYXRhKSA9PiB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFsuLi5kYXRhXTtcclxuICBsZXQgbmV3Q29sdW1ucyA9IFtdIGFzIGFueTtcclxuICBjb2x1bW5zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgaWYgKGl0ZW0uZGF0YUluZGV4ID09IGtleSkge1xyXG4gICAgICBsZXQgcHJvcHMgPSBvYmoucHJvcHMgPyB7IC4uLm9iai5wcm9wcyB9IDoge307XHJcbiAgICAgIHByb3BzLmRhdGEgPSBwcm9wc0RhdGE7XHJcbiAgICAgIG9iai5wcm9wcyA9IHByb3BzO1xyXG4gICAgfVxyXG4gICAgbmV3Q29sdW1ucy5wdXNoKG9iaik7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG5ld0NvbHVtbnM7XHJcbn07XHJcbmludGVyZmFjZSBJUGFyYW1zIHtcclxuICBwYXRobmFtZT86IHN0cmluZztcclxuICBxdWVyeT86IGFueTtcclxuICBpZD86IHN0cmluZztcclxuICBzZXJ2aWNlTmFtZT86IHN0cmluZztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBzZXJ2aWNlUGF0aD86IHN0cmluZztcclxuICBtZW51Q29kZT86IHN0cmluZztcclxuICBvcGVuVHlwZT86IG51bWJlcjtcclxufVxyXG5jb25zdCBqdW1wUGFnZSA9IChwYXJhbXM6IElQYXJhbXMsIHR5cGU/OiBcImFkZFRhYlwiIHwgXCJqdW1wTWVudVwiKSA9PiB7XHJcbiAgY29uc3Qge1xyXG4gICAgcGF0aG5hbWUsXHJcbiAgICBxdWVyeSA9IHt9LFxyXG4gICAgaWQsXHJcbiAgICB0aXRsZSxcclxuICAgIHNlcnZpY2VOYW1lLFxyXG4gICAgc2VydmljZVBhdGgsXHJcbiAgICBvcGVuVHlwZSxcclxuICB9ID0gcGFyYW1zO1xyXG4gIGNvbnN0IG5ld1F1ZXJ5ID0geyAuLi5xdWVyeSB9IGFzIGFueTtcclxuICBjb25zdCB1cmxQYXJhbXMgPSBxdWVyeVN0cmluZy5zdHJpbmdpZnkobmV3UXVlcnkpO1xyXG4gIGNvbnN0IHBhdGggPSB1cmxQYXJhbXMgPyBgJHtwYXRobmFtZX0/JHt1cmxQYXJhbXN9YCA6IHBhdGhuYW1lO1xyXG4gIC8vQHRzLWlnbm9yZVxyXG4gIGlmICh3aW5kb3cuX19QT1dFUkVEX0JZX1FJQU5LVU5fXykge1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgdGl0bGU6IHRpdGxlIHx8IFwi5paw5qCH562+XCIsXHJcbiAgICAgIHNlcnZpY2VOYW1lOiBzZXJ2aWNlTmFtZSwgLy/phY3nva7nmoTlvq7lupTnlKjlkI3np7BcclxuICAgICAgc2VydmljZVBhdGg6IHNlcnZpY2VQYXRoLCAvL+mFjee9rueahOW+ruW6lOeUqOWFpeWPo+WcsOWdgFxyXG4gICAgICBwYXRoOiBwYXRoLCAvL+aWsOagh+etvueahHVybCzmsqHphY3nva5zZXJ2aWNlTmFtZSBwYXRo5Li65a6M5pW06Lev5b6EXHJcbiAgICAgIGlkOiBpZCwgLy/oh6rlrprkuYnllK/kuIDlgLxcclxuICAgICAgb3BlblR5cGU6IG9wZW5UeXBlID8gb3BlblR5cGUgOiA0LCAvL+aJk+W8gOaWueW8jyA05L2N5b6u5YmN56uvLCAz5Li6aWZyYW1lICzpu5jorqQgM1xyXG4gICAgfTtcclxuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoXHJcbiAgICAgIHtcclxuICAgICAgICBldmVudFR5cGU6IHR5cGUgPyB0eXBlIDogXCJhZGRUYWJcIixcclxuICAgICAgICBzZXJ2aWNlTmFtZTogc2VydmljZU5hbWUgPyBzZXJ2aWNlTmFtZSA6IFwic2V0dGluZy13ZWJcIixcclxuICAgICAgICBwYXlsb2FkOiB0eXBlID8gcGFyYW1zIDogZGF0YSxcclxuICAgICAgfSxcclxuICAgICAgd2luZG93LmxvY2F0aW9uLm9yaWdpblxyXG4gICAgKTtcclxuICB9IGVsc2Uge1xyXG4gICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCBcIlwiLCBwYXRoKTtcclxuICAgIHdpbmRvdy5oaXN0b3J5LmdvKCk7XHJcbiAgfVxyXG59O1xyXG5jb25zdCBnZXRQcm9qZWN0ID0gKCkgPT4ge1xyXG4gIGNvbnN0IHByb2plY3QgPSBnZXRMb2NhbFN0b3JlKHsgbmFtZTogXCJuc2MtaG9tZS1wcm9qZWN0XCIgfSkgfHwge307XHJcbiAgcmV0dXJuIHByb2plY3Q7XHJcbn07XHJcbmludGVyZmFjZSBJUHJvcHMge1xyXG4gIHRhYmxlQ29kZTogc3RyaW5nO1xyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICBtZW51Q29kZT86IHN0cmluZztcclxuICBmdW5jcz86IGFueTtcclxuICBwdWJsaXNoZWQ/OiBib29sZWFuO1xyXG4gIGluc3RhbmNlUmVmPzogYW55O1xyXG4gIHRhYlBhcmFtcz86IGFueTtcclxuICBvbkNhbGxCYWNrcz86IHtcclxuICAgIHRyZWVTZWxlY3RDYWxsQmFjaz86IGFueTsgLy/moJHngrnlh7vmn6Xor6LlkI7lm57osINcclxuICAgIG9uUXVlcnlDYWxsQmFjaz86IGFueTsgLy/mn6Xor6Llm57osIPvvIzmn6Xor6LmlbDmja7lkI7lm57osINcclxuICAgIG9uU3VtYml0Q2FsbEJhY2s/OiBhbnk7IC8v5L+d5a2Y5Zue6LCD77yM5L+d5a2Y5pWw5o2u5oiQ5Yqf5ZCO5Zue6LCDXHJcbiAgICBvbkRlbGV0ZUNhbGxCYWNrPzogYW55OyAvL+WIoOmZpOaMiemSruWbnuiwg++8jOWIoOmZpOaVsOaNruWQjuaJp+ihjFxyXG4gICAgb25FZGl0b3JDYWxsQmFjaz86IGFueTsgLy/nvJbovpHmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uQWRkQ2FsbEJhY2s/OiBhbnk7IC8v5re75Yqg5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55OyAvL+WIl+ihqOafpeivouaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gIH07XHJcbiAgYmFzZVByb3BzPzogTlNDQmFzZUJhZ2VQcm9wcztcclxuICBhdXRvTG9hZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmNvbnN0IGRlZmF1bHRTdGF0ZVZhbHVlID0ge1xyXG4gIHBhZ2VQcm9wczoge30gYXMgYW55LFxyXG4gIHRyZWVQcm9wczogeyBzdG9yZTogeyB1cmw6IFwiXCIsIGF1dG9Mb2FkOiBmYWxzZSB9IH0gYXMgYW55LFxyXG4gIHRhYmxlUHJvcHM6IHt9IGFzIGFueSxcclxuICBzZWxmVG9vbEJ1dHRvbjogW10gYXMgYW55LFxyXG4gIHNlbGZDb2x1bW5CdXR0b246IFtdIGFzIGFueSxcclxuICBzZWxmRm9ybUJ1dHRvbjogW10gYXMgYW55LFxyXG4gIHBhZ2VMb2FkaW5nOiB0cnVlLFxyXG4gIGRlZmF1bHRDb2x1bW5zOiBbXSBhcyBhbnksXHJcbiAgb3RoZXJQcm9wczoge30gYXMgYW55LFxyXG4gIGJ1dHRvbkxvYWRpbmc6IHt9IGFzIGFueSxcclxuICBmb3JtUGFnZVByb3BzOiB7fSBhcyBhbnksXHJcbn07XHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRlID0ge1xyXG4gICAgLi4uZGVmYXVsdFN0YXRlVmFsdWUsXHJcbiAgfTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShcclxuICAgIHByZXZQcm9wczogUmVhZG9ubHk8SVByb3BzPixcclxuICAgIHByZXZTdGF0ZTogUmVhZG9ubHk8YW55PixcclxuICAgIHNuYXBzaG90PzogYW55XHJcbiAgKTogdm9pZCB7XHJcbiAgICBpZiAocHJldlByb3BzLnRhYmxlQ29kZSAhPSB0aGlzLnByb3BzLnRhYmxlQ29kZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLmRlZmF1bHRTdGF0ZVZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERhdGEgPSAocmVzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgb3RoZXJQcm9wcywgcGFnZVByb3BzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKFxyXG4gICAgICBwYWdlUHJvcHMuc2hvd1NlYXJjaCAhPT0gZmFsc2UgJiZcclxuICAgICAgb3RoZXJQcm9wcy5kZWZhdWx0U2VhcmNoICYmXHJcbiAgICAgIG90aGVyUHJvcHMudGFibGVEYXRhUmVzb3VyY2UgPT0gXCJ1cmxcIlxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHMsZXZlbnRPcHRpb25cIiwgb3RoZXJQcm9wcy5kZWZhdWx0U2VhcmNoKTtcclxuICAgICAgY29uc3QgcGFyYW1zID0gZnVuYyhkZWZhdWxVdGlsLCB7IHBhZ2VSZWY6IHRoaXMucGFnZVJlZiB9KTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnRhYmxlTG9hZCh7IC4uLnBhcmFtcyB9KTtcclxuICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHsgLi4ucGFyYW1zIH0pO1xyXG4gICAgICB9LCA1MCk7IC8v55u05o6l6K6+572u77yMcGFnZVJlZuayoee7keWumu+8jOaaguaXtumAmui/h+W7tui/n+WHveaVsOi/m+ihjOino+WGs1xyXG4gICAgfVxyXG4gIH07XHJcbiAgLy8g6I635Y+W5pWw5o2uXHJcbiAgZ2V0RGF0YSgpIHtcclxuICAgIC8vIOS7jnByb3Bz5Lit6I635Y+WdGFibGVDb2Rl44CBcHVibGlzaGVk44CBbWVudUNvZGVcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBwYWdlTG9hZGluZzogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyB0YWJsZUNvZGUsIHB1Ymxpc2hlZCA9IHRydWUsIG1lbnVDb2RlLCB0YWJQYXJhbXMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAvLyDlpoLmnpx0YWJsZUNvZGXlrZjlnKhcclxuICAgIGlmICh0YWJsZUNvZGUpIHtcclxuICAgICAgLy8g5a6a5LmJ5Y+C5pWwXHJcbiAgICAgIGxldCBwYXJhbXMgPSB7IGNvZGU6IHRhYmxlQ29kZSB9IGFzIGFueTtcclxuICAgICAgLy8g5aaC5p6ccHVibGlzaGVk5Li6dHJ1ZVxyXG4gICAgICBpZiAocHVibGlzaGVkKSB7XHJcbiAgICAgICAgLy8g6K6+572u5Y+C5pWwaXNQdWJsaXNoZWTkuLoxXHJcbiAgICAgICAgcGFyYW1zLmlzUHVibGlzaGVkID0gMTtcclxuICAgICAgfVxyXG4gICAgICAvLyDosIPnlKhnZXRQYWdlRGF0YeaWueazleiOt+WPluaVsOaNrlxyXG4gICAgICBnZXRQYWdlRGF0YSh7IC4uLnBhcmFtcyB9KS50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDAgJiYgcmVzLmRhdGEpIHtcclxuICAgICAgICAgIGxldCB0YWJsZV9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEudGFibGVQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IHRyZWVfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnRyZWVQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IHBhZ2VfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnBhZ2VQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IG90aGVyX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS5vdGhlclBhcmFtcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IGZvcm1fcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLmZvcm1Qcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgaWYgKHBhZ2VfcHJvcHMucGVybWlzc2lvbj8uaGFzID09IHRydWUpIHtcclxuICAgICAgICAgICAgcGFnZV9wcm9wcy5wZXJtaXNzaW9uLm1lbnVDb2RlID0gbWVudUNvZGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocHVibGlzaGVkID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHBhZ2VfcHJvcHMucGVybWlzc2lvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAocGFnZV9wcm9wcy5zaG93U2VhcmNoICE9PSBmYWxzZSAmJlxyXG4gICAgICAgICAgICAgIG90aGVyX3Byb3BzLmRlZmF1bHRTZWFyY2ggJiZcclxuICAgICAgICAgICAgICBvdGhlcl9wcm9wcz8udGFibGVEYXRhUmVzb3VyY2UgPT0gXCJ1cmxcIikgfHxcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5hdXRvTG9hZCA9PT0gZmFsc2VcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0YWJsZV9wcm9wcy5zdG9yZS5hdXRvTG9hZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRhYlBhcmFtcykge1xyXG4gICAgICAgICAgICBjb25zdCBVdGlscyA9IGRlZmF1bFV0aWwgfHwge307XHJcbiAgICAgICAgICAgIGxldCBwYXJhbUZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCB0YWJQYXJhbXMpO1xyXG4gICAgICAgICAgICBsZXQgY29udmVyVGFiUGFyYW1zID0gcGFyYW1GdW5jKFV0aWxzKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2VfcHJvcHMucmVxdWVzdFBhcmFtcykge1xyXG4gICAgICAgICAgICAgIGxldCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gcGFnZV9wcm9wcztcclxuICAgICAgICAgICAgICBsZXQgbmV3UmVxdWVzdFBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiBudWxsLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIG5ld1JlcXVlc3RQYXJhbXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0UGFyYW1zW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCByZXF1ZXN0UGFyYW1zW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSwgLi4ub3RoZXIgfSA9IGNvbnZlclBhcmFtcztcclxuICAgICAgICAgICAgICAgICAgbGV0IG5ld1BhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcywgLi4uZGF0YSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLm90aGVyLFxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICBuZXdSZXF1ZXN0UGFyYW1zW2tleV0gPSBuZXdQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBuZXdSZXF1ZXN0UGFyYW1zW2tleV0gPSB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcGFnZV9wcm9wcy5yZXF1ZXN0UGFyYW1zID0geyAuLi5uZXdSZXF1ZXN0UGFyYW1zIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcGFnZV9wcm9wcy5yZXF1ZXN0UGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9LFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfSxcclxuICAgICAgICAgICAgICAgIGVkaXRvclBhcmFtczogeyBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcyB9IH0sXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhZ2VQcm9wczoge1xyXG4gICAgICAgICAgICAgICAgLi4ucGFnZV9wcm9wcyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRyZWVQcm9wczoge1xyXG4gICAgICAgICAgICAgICAgLi4udHJlZV9wcm9wcyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRhYmxlUHJvcHM6IHtcclxuICAgICAgICAgICAgICAgIC4uLnRhYmxlX3Byb3BzLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgb3RoZXJQcm9wczogeyAuLi5vdGhlcl9wcm9wcyB9LFxyXG4gICAgICAgICAgICAgIHNlbGZDb2x1bW5CdXR0b246IEpTT04ucGFyc2UocmVzLmRhdGEuY29sdW1uQnV0dG9ucykgfHwgW10sXHJcbiAgICAgICAgICAgICAgc2VsZlRvb2xCdXR0b246IEpTT04ucGFyc2UocmVzLmRhdGEudG9vbEJ1dHRvbnMpIHx8IFtdLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRDb2x1bW5zOiBwYWdlX3Byb3BzLmNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgZm9ybVBhZ2VQcm9wczogZm9ybV9wcm9wcyxcclxuICAgICAgICAgICAgICBzZWxmRm9ybUJ1dHRvbjogZm9ybV9wcm9wcz8uc2VsZkJ1dHRvbiB8fCBbXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzLmNvZGUgPT0gMjAwICYmIHJlcy5kYXRhID09IG51bGwpIHtcclxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLmnKrmib7liLDphY3nva7kv6Hmga/vvIFcIik7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gb25TZWFyY2goKSB7fVxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnRhYmxlTG9hZChwYXJhbXMsIHJlcXVlc3RDb25maWcpO1xyXG4gIH1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8udGFibGVSZWxvYWQocGFyYW1zLCBhdXRvTG9hZCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgZnVuY3MgPSB7fSxcclxuICAgICAgYmFzZVByb3BzID0ge30gYXMgTlNDQmFzZUJhZ2VQcm9wcyxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBwYWdlUHJvcHMsXHJcbiAgICAgIHRyZWVQcm9wcyxcclxuICAgICAgdGFibGVQcm9wcyxcclxuICAgICAgc2VsZlRvb2xCdXR0b24sXHJcbiAgICAgIHNlbGZDb2x1bW5CdXR0b24sXHJcbiAgICAgIHBhZ2VMb2FkaW5nLFxyXG4gICAgICBkZWZhdWx0Q29sdW1ucyxcclxuICAgICAgYnV0dG9uTG9hZGluZyA9IHt9LFxyXG4gICAgICBmb3JtUGFnZVByb3BzID0ge30sXHJcbiAgICAgIHNlbGZGb3JtQnV0dG9uLFxyXG4gICAgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHRyZWVQcm9wczogc2V0dGluZ1RyZWVQcm9wcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzOiBzZXR0aW5nVGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICAuLi5vdGhlclByb3BzXHJcbiAgICB9ID0gYmFzZVByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIC8vIGNvbnN0IHtzdG9yZTp0YWJsZVN0b3JlfVxyXG4gICAgLy8gY29uc3QgeyBzdG9yZTogc2V0dGluZ1RhYmxlU3RvcmUgfSA9IHNldHRpbmdUYWJsZVByb3BzO1xyXG4gICAgY29uc3QgZGVhdWx0RnVuY3MgPSB7XHJcbiAgICAgIHNldEZpZWxkRGlzYWJsZWQ6IChrZXksIGRpc2FibGVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkRGlzYWJsZWQocGFnZVByb3BzLmNvbHVtbnMsIGtleSwgZGlzYWJsZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXRGaWVsZFZpc2libGU6IChrZXksIGRpc2FibGVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkVmlzaWJsZShwYWdlUHJvcHMuY29sdW1ucywga2V5LCBkaXNhYmxlZCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBwYWdlUHJvcHM6IHsgLi4ucGFnZVByb3BzLCBjb2x1bW5zOiBuZXdEYXRhIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldEZpZWxkUHJvcHNEYXRhOiAoa2V5LCBkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkUHJvcHNEYXRhKHBhZ2VQcm9wcy5jb2x1bW5zLCBrZXksIGRhdGEpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBoaXN0b3J5OiAocGFyYW1zLCB0eXBlKSA9PiB7XHJcbiAgICAgICAganVtcFBhZ2UocGFyYW1zLCB0eXBlKTtcclxuICAgICAgfSxcclxuICAgICAgc2V0QnV0dG9uTG9hZGluZyhjb2RlLCBsb2FkaW5nKSB7XHJcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgYnV0dG9uTG9hZGluZzogeyAuLi5idXR0b25Mb2FkaW5nLCBbY29kZV06IGxvYWRpbmcgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuXHJcbiAgICAgIGdldEN1cnJlbnRQcm9qZWN0OiAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGdldFByb2plY3QoKTtcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IGNvZGVTZWxmQnV0dG9ucyA9IFtdO1xyXG4gICAgbGV0IGNvZGVjb2x1bW5CdXR0b25zID0gW107XHJcbiAgICBsZXQgY29kZUZvcm1CdXR0b25zID0gW107XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvZGVjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBjb2RlRm9ybUJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvZGVTZWxmQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICBjb2RlY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgY29kZUZvcm1CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgIGNvZGVTZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIikge1xyXG4gICAgICAgIGNvZGVjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIikge1xyXG4gICAgICAgIGNvZGVGb3JtQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhcIm5zYy1mcmFtZXdvcmstdGFibGVwYWdlXCIsIGNsYXNzTmFtZSl9PlxyXG4gICAgICAgIHtwYWdlTG9hZGluZyA/IChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiIH19PlxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17cGFnZUxvYWRpbmd9PjwvU3Bpbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICkgOiAoXHJcbiAgICAgICAgICA8QmFzZVBhZ2VcclxuICAgICAgICAgICAgey4uLnBhZ2VQcm9wc31cclxuICAgICAgICAgICAgdHJlZVByb3BzPXt7IC4uLnRyZWVQcm9wcywgLi4uc2V0dGluZ1RyZWVQcm9wcyB9fVxyXG4gICAgICAgICAgICB0YWJsZVByb3BzPXt7IC4uLnRhYmxlUHJvcHMsIC4uLnNldHRpbmdUYWJsZVByb3BzIH19XHJcbiAgICAgICAgICAgIGZvcm1Qcm9wcz17e319XHJcbiAgICAgICAgICAgIFV0aWxzPXt7IC4uLmRlZmF1bFV0aWwgfX1cclxuICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgICAgICAgIHBhZ2VSZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgICAgICAgb25IaWRlRm9ybT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogZGVmYXVsdENvbHVtbnMgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZnVuY3M9e3sgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH19XHJcbiAgICAgICAgICAgIGluaXREYXRhPXt0aGlzLmluaXREYXRhfVxyXG4gICAgICAgICAgICBmb3JtUGFnZVByb3BzPXt7XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU6IGZvcm1QYWdlUHJvcHMuZm9ybVR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICAgICAgICAgIHByb3BzOiBmb3JtUGFnZVByb3BzPy5wcm9wcyxcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgdGFibGVDb2RlPXt0aGlzLnByb3BzLnRhYmxlQ29kZX1cclxuICAgICAgICAgICAgey4uLm90aGVyUHJvcHN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtyZW5kZXJTZWxmVG9vbEJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbjogc2VsZlRvb2xCdXR0b24sXHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB7IC4uLmRlYXVsdEZ1bmNzLCAuLi5mdW5jcyB9LFxyXG4gICAgICAgICAgICAgIGxvYWRpbmc6IHRoaXMuc3RhdGUuYnV0dG9uTG9hZGluZyxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtjb2RlU2VsZkJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZkNvbHVtbkJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkNvbHVtbkJ1dHRvbixcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHsgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH0sXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7Y29kZWNvbHVtbkJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZlRvb2xCdXR0b24oe1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b246IHNlbGZGb3JtQnV0dG9uLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogeyAuLi5kZWF1bHRGdW5jcywgLi4uZnVuY3MgfSxcclxuICAgICAgICAgICAgICBsb2FkaW5nOiB0aGlzLnN0YXRlLmJ1dHRvbkxvYWRpbmcsXHJcbiAgICAgICAgICAgICAgdHlwZTogXCJmb3JtQnV0dG9uXCIsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7Y29kZUZvcm1CdXR0b25zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvQmFzZVBhZ2U+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1c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
|