@form-create/element-ui 2.5.30 → 2.5.31

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.
@@ -1 +1 @@
1
- {"version":3,"file":"form-create.min.js","sources":["../../../node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js","../../utils/lib/slot.js","../../../components/element-ui/checkbox/src/component.jsx","../../utils/lib/toarray.js","../../../node_modules/style-inject/dist/style-inject.es.js","../../../components/element-ui/frame/src/component.jsx","../../../components/element-ui/radio/src/component.jsx","../../utils/lib/type.js","../../../components/element-ui/select/src/component.jsx","../../../components/element-ui/tree/src/component.jsx","../../../components/element-ui/upload/src/component.jsx","../../utils/lib/modify.js","../../utils/lib/deepextend.js","../../utils/lib/extend.js","../../../components/element-ui/group/src/component.jsx","../../../components/common/subform/src/component.jsx","../src/components/index.js","../../core/src/components/formCreate.js","../../utils/lib/mergeprops.js","../../core/src/frame/attrs.js","../../utils/lib/console.js","../../utils/lib/json.js","../../core/src/frame/util.js","../../core/src/factory/creator.js","../../core/src/factory/maker.js","../../core/src/frame/api.js","../../core/src/render/cache.js","../../utils/lib/tocase.js","../../utils/lib/tostring.js","../../utils/lib/toline.js","../../utils/lib/unique.js","../../utils/lib/deepset.js","../../core/src/render/render.js","../../core/src/render/index.js","../../core/src/handler/inject.js","../../core/src/handler/page.js","../../core/src/handler/render.js","../../core/src/factory/context.js","../../core/src/handler/loader.js","../../core/src/handler/input.js","../../core/src/factory/parser.js","../../core/src/handler/context.js","../../core/src/handler/lifecycle.js","../../core/src/handler/effect.js","../../core/src/handler/index.js","../../core/src/frame/fetch.js","../../core/src/components/fragment.js","../../core/src/factory/node.js","../../core/src/factory/manager.js","../../core/src/frame/provider.js","../../core/src/parser/html.js","../../core/src/frame/index.js","../src/parsers/datePicker.js","../src/parsers/hidden.js","../src/parsers/input.js","../src/parsers/slider.js","../src/parsers/timePicker.js","../src/parsers/row.js","../src/parsers/select.js","../src/parsers/index.js","../src/core/alias.js","../src/core/config.js","../src/core/manager.js","../src/core/maker.js","../src/core/api.js","../src/core/index.js","../src/index.js"],"sourcesContent":["\"use strict\";function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}var normalMerge=[\"attrs\",\"props\",\"domProps\"],toArrayMerge=[\"class\",\"style\",\"directives\"],functionalMerge=[\"on\",\"nativeOn\"],mergeJsxProps=function(a){return a.reduce(function(c,a){for(var b in a)if(!c[b])c[b]=a[b];else if(-1!==normalMerge.indexOf(b))c[b]=_extends({},c[b],a[b]);else if(-1!==toArrayMerge.indexOf(b)){var d=c[b]instanceof Array?c[b]:[c[b]],e=a[b]instanceof Array?a[b]:[a[b]];c[b]=d.concat(e)}else if(-1!==functionalMerge.indexOf(b)){for(var f in a[b])if(c[b][f]){var g=c[b][f]instanceof Array?c[b][f]:[c[b][f]],h=a[b][f]instanceof Array?a[b][f]:[a[b][f]];c[b][f]=g.concat(h)}else c[b][f]=a[b][f];}else if(\"hook\"==b)for(var i in a[b])c[b][i]=c[b][i]?mergeFn(c[b][i],a[b][i]):a[b][i];else c[b]=a[b];return c},{})},mergeFn=function(a,b){return function(){a&&a.apply(this,arguments),b&&b.apply(this,arguments)}};module.exports=mergeJsxProps;\n","export default function getSlot(slots, exclude) {\n return Object.keys(slots).reduce((lst, name) => {\n if (!exclude || exclude.indexOf(name) === -1) {\n lst.push(slots[name])\n }\n return lst;\n }, [])\n}","import getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcCheckbox';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {\n type: Array,\n default: () => []\n },\n type: String,\n },\n watch: {\n 'formCreateInject.options': {\n handler() {\n this.update();\n },\n deep: true,\n },\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n methods: {\n options() {\n const opt = this.formCreateInject.options;\n return Array.isArray(opt) ? opt : [];\n },\n onInput(n) {\n this.$emit('input', this.options().filter((opt) => n.indexOf(opt.label) !== -1).map((opt) => opt.value).filter(v => v !== undefined));\n },\n update() {\n const checked = Array.isArray(this.value) ? this.value : [this.value];\n this.trueValue = this.options().filter((opt) => checked.indexOf(opt.value) !== -1)\n .map((option) => option.label);\n }\n },\n created() {\n this.update();\n },\n render() {\n return <ElCheckboxGroup {...this.formCreateInject.prop} props={{value: this.trueValue}}\n on-input={this.onInput}>{this.options().map((opt, index) => {\n const props = {...opt};\n const Type = this.type === 'button' ? 'ElCheckboxButton' : 'ElCheckbox';\n delete props.value;\n return <Type props={props} key={Type + index + '-' + opt.value}/>\n })}{getSlot(this.$slots)}</ElCheckboxGroup>\n }\n}\n","export default function toArray(value) {\n return Array.isArray(value)\n ? value\n : ([null, undefined, ''].indexOf(value) > -1 ? [] : [value]);\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import toArray from '@form-create/utils/lib/toarray';\nimport './style.css';\n\nconst NAME = 'fcFrame';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n type: {\n type: String,\n default: 'input'\n },\n field: String,\n helper: {\n type: Boolean,\n default: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n src: {\n type: String,\n required: true\n },\n icon: {\n type: String,\n default: 'el-icon-upload2'\n },\n width: {\n type: String,\n default: '500px'\n },\n height: {\n type: String,\n default: '370px'\n },\n maxLength: {\n type: Number,\n default: 0\n },\n okBtnText: {\n type: String,\n default: '确定'\n },\n closeBtnText: {\n type: String,\n default: '关闭'\n },\n modalTitle: String,\n handleIcon: {\n type: [String, Boolean],\n default: undefined\n },\n title: String,\n allowRemove: {\n type: Boolean,\n default: true\n },\n onOpen: {\n type: Function,\n default: () => {\n }\n },\n onOk: {\n type: Function,\n default: () => {\n }\n },\n onCancel: {\n type: Function,\n default: () => {\n }\n },\n onLoad: {\n type: Function,\n default: () => {\n }\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onRemove: {\n type: Function,\n default: () => {\n }\n },\n onHandle: {\n type: Function,\n default(src) {\n this.previewImage = this.getSrc(src);\n this.previewVisible = true;\n }\n },\n modal: {\n type: Object,\n default: () => ({})\n },\n srcKey: {\n type: [String, Number]\n },\n value: [Array, String, Number, Object],\n previewMask: undefined,\n footer: {\n type: Boolean,\n default: true\n },\n reload: {\n type: Boolean,\n default: true\n },\n closeBtn: {\n type: Boolean,\n default: true\n },\n okBtn: {\n type: Boolean,\n default: true\n },\n\n },\n data() {\n return {\n fileList: toArray(this.value),\n previewVisible: false,\n frameVisible: false,\n previewImage: ''\n }\n },\n watch: {\n value(n) {\n this.fileList = toArray(n);\n },\n fileList(n) {\n const val = this.maxLength === 1 ? (n[0] || '') : n;\n this.$emit('input', val);\n this.$emit('change', val);\n },\n src(n) {\n this.modalVm && (this.modalVm.src = n);\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n closeModel(close) {\n this.$emit(close ? '$close' : '$ok');\n if (this.reload) {\n this.$off('$ok');\n this.$off('$close');\n }\n this.frameVisible = false;\n },\n handleCancel() {\n this.previewVisible = false;\n },\n\n showModel() {\n if (this.disabled || false === this.onOpen()) {\n return;\n }\n this.frameVisible = true;\n },\n\n makeInput() {\n const props = {\n type: 'text',\n value: (this.fileList.map(v => this.getSrc(v))).toString(),\n readonly: true\n };\n\n return <ElInput props={props} key={this.key('input')}>\n {this.fileList.length ? <i slot=\"suffix\" class=\"el-input__icon el-icon-circle-close\"\n on-click={() => this.fileList = []}/> : null}\n <ElButton icon={this.icon} on={{'click': () => this.showModel()}} slot=\"append\"/>\n </ElInput>\n },\n\n makeGroup(children) {\n if (!this.maxLength || this.fileList.length < this.maxLength) {\n children.push(this.makeBtn());\n }\n return <div key={this.key('group')}>{...children}</div>\n },\n\n makeItem(index, children) {\n return <div class='fc-files' key={this.key('file' + index)}>{...children}</div>;\n },\n valid(f) {\n const field = this.formCreateInject.field || this.field;\n if (field && f !== field) {\n throw new Error('[frame]无效的字段值');\n }\n },\n\n makeIcons(val, index) {\n if (this.handleIcon !== false || this.allowRemove === true) {\n const icons = [];\n if ((this.type !== 'file' && this.handleIcon !== false) || (this.type === 'file' && this.handleIcon)) {\n icons.push(this.makeHandleIcon(val, index));\n }\n if (this.allowRemove) {\n icons.push(this.makeRemoveIcon(val, index));\n }\n return <div class='fc-upload-cover' key={this.key('uc')}>{icons}</div>\n }\n },\n makeHandleIcon(val, index) {\n return <i\n class={(this.handleIcon === true || this.handleIcon === undefined) ? 'el-icon-view' : this.handleIcon}\n on-click={() => this.handleClick(val)} key={this.key('hi' + index)}/>\n },\n\n makeRemoveIcon(val, index) {\n return <i class=\"el-icon-delete\" on-click={() => this.handleRemove(val)} key={this.key('ri' + index)}/>\n },\n\n makeFiles() {\n return this.makeGroup(this.fileList.map((src, index) => {\n return this.makeItem(index, [<i class=\"el-icon-tickets\"\n on-click={() => this.handleClick(src)}/>, this.makeIcons(src, index)])\n }))\n },\n makeImages() {\n return this.makeGroup(this.fileList.map((src, index) => {\n return this.makeItem(index, [<img src={this.getSrc(src)}/>, this.makeIcons(src, index)])\n }))\n },\n makeBtn() {\n return <div class='fc-upload-btn' on-click={() => this.showModel()} key={this.key('btn')}>\n <i class={this.icon}/>\n </div>\n },\n handleClick(src) {\n return this.onHandle(src);\n },\n handleRemove(src) {\n if (this.disabled) {\n return;\n }\n if (false !== this.onBeforeRemove(src)) {\n this.fileList.splice(this.fileList.indexOf(src), 1);\n this.onRemove(src);\n }\n },\n getSrc(src) {\n return !this.srcKey ? src : src[this.srcKey];\n },\n frameLoad(iframe) {\n this.onLoad(iframe);\n try {\n if (this.helper === true) {\n iframe['form_create_helper'] = {\n api: this.formCreateInject.api,\n close: (field) => {\n this.valid(field);\n this.closeModel();\n },\n set: (field, value) => {\n this.valid(field);\n if (!this.disabled)\n this.$emit('input', value);\n\n },\n get: (field) => {\n this.valid(field);\n return this.value;\n },\n onOk: fn => this.$on('$ok', fn),\n onClose: fn => this.$on('$close', fn)\n };\n\n }\n } catch (e) {\n console.log(e);\n }\n },\n makeFooter() {\n const {okBtnText, closeBtnText, closeBtn, okBtn, footer} = this.$props;\n\n if (!footer) {\n return;\n }\n return <div slot=\"footer\">\n {closeBtn ? <ElButton\n on-click={() => (this.onCancel() !== false && (this.frameVisible = false))}>{closeBtnText}</ElButton> : null}\n {okBtn ? <ElButton type=\"primary\"\n on-click={() => (this.onOk() !== false && this.closeModel())}>{okBtnText}</ElButton> : null}\n </div>\n }\n },\n render() {\n const type = this.type;\n\n let node;\n if (type === 'input') {\n node = this.makeInput();\n } else if (type === 'image') {\n node = this.makeImages();\n } else {\n node = this.makeFiles();\n }\n\n const {width = '30%', height, src, title, modalTitle} = this.$props;\n this.$nextTick(() => {\n if (this.$refs.frame) {\n this.frameLoad(this.$refs.frame.contentWindow || {});\n }\n });\n return <div class=\"_fc-frame\">{node}\n <el-dialog\n props={{appendToBody: true, modal: this.previewMask, title: modalTitle, visible: this.previewVisible}}\n on-close={this.handleCancel}>\n <img style=\"width: 100%\" src={this.previewImage}/>\n </el-dialog>\n <el-dialog props={{width, title, appendToBody: true, ...this.modal, visible: this.frameVisible}}\n on-close={() => (this.closeModel(true))}>\n {(this.frameVisible || !this.reload) ? <iframe ref=\"frame\" src={src} frameBorder=\"0\" style={{\n 'height': height,\n 'border': '0 none',\n 'width': '100%'\n }}/> : null}\n {this.makeFooter()}\n </el-dialog>\n </div>\n },\n mounted() {\n this.$on('fc.closeModal', this.closeModal);\n }\n}\n","import getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcRadio';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {},\n type: String,\n },\n watch: {\n 'formCreateInject.options': {\n handler() {\n this.update();\n },\n deep: true,\n },\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n methods: {\n options() {\n const opt = this.formCreateInject.options;\n return Array.isArray(opt) ? opt : [];\n },\n onInput(n) {\n this.$emit('input', this.options().filter((opt) => opt.label === n).reduce((initial, opt) => opt.value, ''));\n },\n update() {\n this.trueValue = this.options().filter((opt) => opt.value === this.value).reduce((initial, opt) => opt.label, '');\n }\n },\n created() {\n this.update();\n },\n render() {\n return <ElRadioGroup {...this.formCreateInject.prop}\n props={{value: this.trueValue}}\n on-input={this.onInput}>{this.options().map((opt, index) => {\n const props = {...opt};\n const Type = this.type === 'button' ? 'ElRadioButton' : 'ElRadio';\n delete props.value;\n return <Type props={props} key={Type + index + '-' + opt.value}/>\n })}{getSlot(this.$slots)}</ElRadioGroup>\n }\n}\n","const is = {\n type(arg, type) {\n return Object.prototype.toString.call(arg) === '[object ' + type + ']'\n },\n Undef(v) {\n return v === undefined || v === null\n },\n Element(arg) {\n return typeof arg === 'object' && arg !== null && arg.nodeType === 1 && !is.Object(arg)\n },\n trueArray(data) {\n return Array.isArray(data) && data.length > 0;\n },\n Function(v) {\n const type = this.getType(v);\n return type === 'Function' || type === 'AsyncFunction';\n },\n getType(v) {\n const str = Object.prototype.toString.call(v)\n return /^\\[object (.*)\\]$/.exec(str)[1]\n },\n empty(value) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (Array.isArray(value) && Array.isArray(value) && !value.length) {\n return true;\n }\n\n return typeof value === 'string' && !value;\n }\n};\n\n['Date', 'Object', 'String', 'Boolean', 'Array', 'Number'].forEach(t => {\n is[t] = function (arg) {\n return is.type(arg, t);\n }\n})\n\nexport function hasProperty(rule, k) {\n return ({}).hasOwnProperty.call(rule, k)\n}\n\nexport default is;\n","import is from '@form-create/utils/lib/type';\n\nconst NAME = 'fcSelect';\nexport default {\n name: NAME,\n functional: true,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n },\n render(h, ctx) {\n const options = ctx.props.formCreateInject.options;\n return <ElSelect {...ctx.data}>{(Array.isArray(options) ? options : []).map((props, index) => {\n const slot = props.slot;\n return <ElOption props={props}\n key={'' + index + '-' + props.value}>\n {slot ? <template\n slot={props.slotName || 'default'}>{is.Function(slot) ? props.slot(h) : slot}</template> : null}\n </ElOption>\n })}{ctx.children}</ElSelect>;\n }\n}\n","import toArray from '@form-create/utils/lib/toarray';\nimport getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcTree';\n\nexport default {\n name: NAME,\n formCreateParser: {\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!props.nodeKey) props.nodeKey = 'id';\n if (!props.props) props.props = {\n label: 'title'\n };\n }\n },\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n type: {\n type: String,\n default: 'checked'\n },\n value: {\n type: [Array, String, Number],\n default: () => ([])\n }\n },\n watch: {\n value() {\n this.setValue();\n }\n },\n methods: {\n onChange() {\n this.updateValue()\n },\n updateValue() {\n if (!this.$refs.tree) return;\n const type = this.type.toLocaleLowerCase();\n let value;\n\n if (type === 'selected') {\n value = this.$refs.tree.getCurrentKey();\n } else {\n value = this.$refs.tree.getCheckedKeys();\n }\n\n this.$emit('input', value);\n },\n setValue() {\n const type = this.type.toLocaleLowerCase();\n\n if (type === 'selected') {\n this.$refs.tree.setCurrentKey(this.value);\n } else {\n this.$refs.tree.setCheckedKeys(toArray(this.value));\n }\n }\n },\n render() {\n return <ElTree {...this.formCreateInject.prop} ref=\"tree\" on-check={() => this.updateValue()}\n on-node-click={() => this.updateValue()}>{getSlot(this.$slots)}</ElTree>;\n },\n mounted() {\n this.setValue();\n }\n}\n","import toArray from '@form-create/utils/lib/toarray';\nimport getSlot from '@form-create/utils/lib/slot';\nimport './style.css';\n\nfunction parseFile(file, i) {\n return {\n url: file,\n name: getFileName(file),\n uid: i\n };\n}\n\nfunction getFileName(file) {\n return ('' + file).split('/').pop()\n}\n\nconst NAME = 'fcUpload';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n onHandle: {\n type: Function,\n default(file) {\n this.previewImage = file.url;\n this.previewVisible = true;\n }\n },\n uploadType: {\n type: String,\n default: 'file'\n },\n limit: {\n type: Number,\n default: 0\n },\n allowRemove: {\n type: Boolean,\n default: true\n },\n previewMask: undefined,\n modalTitle: String,\n handleIcon: {\n type: [String, Boolean],\n default: () => undefined\n },\n value: [Array, String]\n },\n data() {\n return {\n uploadList: [],\n previewVisible: false,\n previewImage: '',\n cacheFiles: [],\n }\n },\n created() {\n if (this.formCreateInject.prop.props.showFileList === undefined) {\n this.formCreateInject.prop.props.showFileList = false;\n }\n this.formCreateInject.prop.props.fileList = toArray(this.value).map(parseFile);\n },\n watch: {\n value(n) {\n if (this.$refs.upload.uploadFiles.every(file => {\n return !file.status || file.status === 'success';\n })) {\n this.$refs.upload.uploadFiles = toArray(n).map(parseFile);\n this.uploadList = this.$refs.upload.uploadFiles;\n }\n },\n limit(n, o) {\n if (o === 1 || n === 1) {\n this.update();\n }\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n isDisabled() {\n return this.formCreateInject.prop.props.disabled === true;\n },\n onRemove(file) {\n if (this.isDisabled()) {\n return;\n }\n this.$refs.upload.handleRemove(file);\n },\n handleClick(file) {\n this.onHandle(file);\n },\n makeItem(file, index) {\n return this.uploadType === 'image'\n ? <img src={file.url} key={this.key('img' + index)}/>\n : <i class=\"el-icon-tickets\" key={this.key('i' + index)}/>\n },\n makeRemoveIcon(file, index) {\n return <i class=\"el-icon-delete\" on-click={() => this.onRemove(file)} key={this.key('ri' + index)}/>;\n },\n makeHandleIcon(file, index) {\n return <i\n class={(this.handleIcon === true || this.handleIcon === undefined) ? 'el-icon-view' : this.handleIcon}\n on-click={() => this.handleClick(file)} key={this.key('hi' + index)}/>;\n },\n makeProgress(file, index) {\n return <ElProgress props={{percentage: file.percentage, type: 'circle', width: 52}} style=\"margin-top:2px;\"\n key={this.key('pg' + index)}/>\n },\n makeIcons(file, index) {\n const icons = [];\n if (this.allowRemove || this.handleIcon !== false) {\n if ((this.uploadType !== 'file' && this.handleIcon !== false) || (this.uploadType === 'file' && this.handleIcon)) {\n icons.push(this.makeHandleIcon(file, index));\n }\n if (this.allowRemove) {\n icons.push(this.makeRemoveIcon(file, index));\n }\n\n return <div class='fc-upload-cover'>{icons}</div>;\n }\n },\n makeFiles() {\n return this.uploadList.map((file, index) => this.$scopedSlots.fileList ? this.$scopedSlots.fileList({\n file,\n index,\n vm: this\n }) : <div key={this.key(index)}\n class='fc-files'>{(file.percentage !== undefined && file.status !== 'success') ? this.makeProgress(file, index) : [this.makeItem(file, index), this.makeIcons(file, index)]}</div>);\n },\n makeUpload() {\n const isShow = (!this.limit || this.limit > this.uploadList.length);\n return <ElUpload {...this.formCreateInject.prop} ref=\"upload\"\n style={{display: 'inline-block'}}\n key={this.key('upload')}>\n {isShow ? <template slot=\"default\">\n {this.$slots.default || <div class='fc-upload-btn'>\n <i class=\"el-icon-upload2\"/>\n </div>}\n </template> : null}{getSlot(this.$slots, ['default'])}\n </ElUpload>;\n },\n update() {\n let files = this.$refs.upload.uploadFiles.map((file) => file.url).filter((url) => url !== undefined);\n if (this.cacheFiles.length !== files.length || !files.length) {\n this.cacheFiles = [...files];\n this.$emit('input', this.limit === 1 ? (files[0] || '') : files);\n }\n },\n handleCancel() {\n this.previewVisible = false;\n },\n },\n render() {\n if (this.$refs.upload) {\n if (this.formCreateInject.prop.props.showFileList === undefined) {\n this.formCreateInject.prop.props.showFileList = this.$refs.upload.showFileList;\n }\n this.formCreateInject.prop.props.fileList = this.$refs.upload.fileList;\n }\n return (\n <div\n class='_fc-upload'>{[this.formCreateInject.prop.props.showFileList ? [] : this.makeFiles(), this.makeUpload()]}\n <el-dialog\n props={{\n appendToBody: true,\n modal: this.previewMask,\n title: this.modalTitle,\n visible: this.previewVisible\n }}\n on-close={this.handleCancel}>\n <img alt=\"example\" style=\"width: 100%\" src={this.previewImage}/>\n </el-dialog>\n </div>);\n },\n mounted() {\n this.uploadList = this.$refs.upload.uploadFiles;\n this.$watch(() => this.$refs.upload.uploadFiles, () => {\n this.update();\n }, {deep: true});\n }\n}\n","import Vue from 'vue';\n\nexport function $set(target, field, value) {\n Vue.set(target, field, value);\n}\n\nexport function $del(target, field) {\n Vue.delete(target, field);\n}\n","import {$set} from './modify';\nimport is from './type';\n\nexport default function deepExtend(origin, target = {}, mode) {\n let isArr = false;\n for (let key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n let clone = target[key];\n if ((isArr = Array.isArray(clone)) || is.Object(clone)) {\n let nst = origin[key] === undefined;\n if (isArr) {\n isArr = false;\n nst && $set(origin, key, []);\n } else if (clone._clone && mode !== undefined) {\n if (mode) {\n clone = clone.getRule();\n nst && $set(origin, key, {});\n } else {\n $set(origin, key, clone._clone());\n continue;\n }\n } else {\n nst && $set(origin, key, {});\n }\n origin[key] = deepExtend(origin[key], clone, mode);\n } else {\n $set(origin, key, clone);\n if (!is.Undef(clone)) {\n if (!is.Undef(clone.__json)) {\n origin[key].__json = clone.__json;\n }\n if (!is.Undef(clone.__origin)) {\n origin[key].__origin = clone.__origin;\n }\n }\n }\n }\n }\n return (mode !== undefined && Array.isArray(origin)) ? origin.filter(v => !v || !v.__ctrl) : origin\n}\n\nexport function deepCopy(value) {\n return deepExtend({}, {value}).value;\n}\n\nexport function deepExtendArgs(origin, ...lst) {\n lst.forEach(target => {\n origin = deepExtend(origin, target);\n });\n return origin;\n}\n","import {$set} from './modify';\n\nconst _extends = Object.assign || function (a) {\n for (let b, c = 1; c < arguments.length; c++) {\n for (let d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && ($set(a, d, b[d]));\n }\n }\n\n return a;\n}\n\nexport default function extend() {\n return _extends.apply(this, arguments);\n}\n\nexport function copy(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n return obj instanceof Array ? [...obj] : {...obj};\n}\n","import {hasProperty} from '@form-create/utils/lib/type';\nimport deepExtend, {deepCopy} from '@form-create/utils/lib/deepextend';\nimport extend from '@form-create/utils/lib/extend';\n\nconst NAME = 'fcGroup';\n\nexport default {\n name: NAME,\n props: {\n field: String,\n rule: [Array, Object],\n rules: Array,\n expand: Number,\n options: Object,\n formCreateInject: {\n type: Object,\n required: true,\n },\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n value: {\n type: Array,\n default: () => []\n },\n defaultValue: Object,\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n fontSize: {\n type: Number,\n default: 28\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n type: undefined\n }\n },\n computed: {\n formRule() {\n if (this.rules) {\n return this.rules;\n }\n if (this.rule) {\n return Array.isArray(this.rule) ? this.rule : [this.rule];\n }\n return [];\n }\n },\n watch: {\n formRule: {\n handler(n, o) {\n Object.keys(this.cacheRule).forEach(v => {\n const item = this.cacheRule[v];\n if (item.$f) {\n const val = item.$f.formData();\n if (n === o) {\n item.$f.deferSyncValue(() => {\n deepExtend(item.rule, n);\n item.$f.setValue(val);\n }, true);\n } else {\n const val = item.$f.formData();\n item.$f.once('reloading', () => {\n item.$f.setValue(val);\n })\n item.rule = deepCopy(n);\n }\n }\n })\n },\n deep: true\n },\n disabled(n) {\n if (this.syncDisabled) {\n const lst = this.cacheRule;\n Object.keys(lst).forEach(k => {\n lst[k].$f.disabled(n);\n })\n }\n },\n expand(n) {\n let d = n - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n value(n) {\n n = n || [];\n let keys = Object.keys(this.cacheRule), total = keys.length, len = total - n.length;\n if (len < 0) {\n for (let i = len; i < 0; i++) {\n this.addRule(n.length + i);\n }\n for (let i = 0; i < total; i++) {\n this.setValue(keys[i], n[i]);\n }\n } else {\n if (len > 0) {\n for (let i = 0; i < len; i++) {\n this.removeRule(keys[total - i - 1]);\n }\n }\n n.forEach((val, i) => {\n this.setValue(keys[i], n[i]);\n });\n }\n }\n },\n methods: {\n _value(v) {\n return (v && hasProperty(v, this.field)) ? v[this.field] : v;\n },\n cache(k, val) {\n this.cacheValue[k] = JSON.stringify(val);\n },\n input(value) {\n this.$emit('input', value);\n this.$emit('change', value);\n },\n formData(key, formData) {\n const cacheRule = this.cacheRule;\n const keys = Object.keys(cacheRule);\n if (keys.filter(k => cacheRule[k].$f).length !== keys.length) {\n return;\n }\n const value = keys.map(k => {\n const data = key === k ? formData : {...this.cacheRule[k].$f.form};\n const value = this.field ? data[this.field] || null : data;\n this.cache(k, value);\n return value;\n });\n this.input(value);\n },\n setValue(key, value) {\n const field = this.field, $f = this.cacheRule[key].$f;\n if (field) {\n value = {[field]: this._value(value)};\n }\n if (this.cacheValue[key] === JSON.stringify(field ? value[field] : value)) {\n return;\n }\n this.cache(key, value);\n $f.coverValue(value || {});\n },\n addRule(i, emit) {\n const rule = this.formCreateInject.form.copyRules(this.formRule);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n if (this.defaultValue) {\n if (!options.formData) options.formData = {};\n const defVal = deepCopy(this.defaultValue);\n extend(options.formData, this.field ? {[this.field]: defVal} : defVal);\n }\n this.$set(this.cacheRule, ++this.len, {rule, options});\n if (emit) {\n this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));\n }\n },\n add$f(i, key, $f) {\n this.cacheRule[key].$f = $f;\n this.formData(key, $f.formData());\n this.$nextTick(() => {\n if (this.syncDisabled) {\n $f.disabled(this.disabled);\n }\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n this.$delete(this.cacheRule, key);\n this.$delete(this.cacheValue, key);\n if (emit) {\n this.$nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.value)) {\n return;\n }\n this.addRule(i, true);\n },\n del(index, key) {\n if (this.disabled || false === this.onBeforeRemove(this.value, index)) {\n return;\n }\n this.removeRule(key, true);\n this.value.splice(index, 1);\n this.input(this.value);\n },\n addIcon(key) {\n return <i key={`a${key}`} class=\"el-icon-circle-plus-outline\"\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}\n on-click={this.add}/>;\n },\n delIcon(index, key) {\n return <i key={`d${key}`} class=\"el-icon-remove-outline\"\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer;color:#606266'};`}\n on-click={() => this.del(index, key)}/>;\n },\n makeIcon(total, index, key) {\n if (this.$scopedSlots.button) {\n return this.$scopedSlots.button({\n total,\n index,\n vm: this,\n key,\n del: () => this.del(index, key),\n add: this.add\n });\n }\n if (index === 0) {\n return [(this.max !== 0 && total >= this.max) ? null : this.addIcon(key), (this.min === 0 || total > this.min) ? this.delIcon(index, key) : null];\n }\n if (total > this.min) {\n return this.delIcon(index, key);\n }\n },\n emitEvent(name, args, index, key) {\n this.$emit(name, ...args, this.cacheRule[key].$f, index);\n },\n expandRule(n) {\n for (let i = 0; i < n; i++) {\n this.value.push(this.field ? null : {});\n }\n }\n },\n created() {\n this.type = this.formCreateInject.form.$form();\n const d = (this.expand || 0) - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n for (let i = 0; i < this.value.length; i++) {\n this.addRule(i);\n }\n },\n render() {\n const keys = Object.keys(this.cacheRule);\n const button = this.button;\n const Type = this.type;\n return keys.length === 0 ?\n (this.$scopedSlots.default ? (this.$scopedSlots.default({\n vm: this,\n add: this.add\n })) : <i key={'a_def'} class=\"el-icon-circle-plus-outline\"\n style={`font-size:${this.fontSize}px;vertical-align:middle;color:${this.disabled ? '#c9cdd4;cursor: not-allowed' : '#606266;cursor:pointer'};`}\n on-click={this.add}/>) :\n <div key={'con'}>{keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n return <ElRow align=\"middle\" type=\"flex\" key={key}\n style=\"border-bottom:1px dashed #DCDFE6;margin-bottom:10px;\">\n <ElCol span={button ? 20 : 24}><Type\n key={key}\n on={{\n 'update:value': (formData) => this.formData(key, formData),\n 'emit-event': (name, ...args) => this.emitEvent(name, args, index, key),\n input: ($f) => this.add$f(index, key, $f)\n }}\n props={{\n value: this.field ? {[this.field]: this._value(this.value[index])} : this.value[index],\n rule,\n option: options,\n extendOption: true,\n inFor: true\n }}/></ElCol>\n {button ? <ElCol\n props={{span: 2, pull: 1, push: 1}}>{this.makeIcon(keys.length, index, key)}</ElCol> : null}\n </ElRow>\n })}</div>\n }\n}\n","const NAME = 'fcSubForm';\n\nexport default {\n name: NAME,\n props: {\n rule: Array,\n options: Object,\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {\n type: Object,\n default: () => ({})\n },\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n },\n data() {\n return {\n cacheRule: {},\n cacheValue: {},\n type: undefined\n }\n },\n watch: {\n disabled(n) {\n this.syncDisabled && this.cacheRule.$f.disabled(n);\n },\n value(n) {\n this.setValue(n);\n }\n },\n methods: {\n formData(value) {\n this.cacheValue = JSON.stringify(value);\n this.$emit('input', value);\n this.$emit('change', value);\n },\n setValue(value) {\n const str = JSON.stringify(value);\n if (this.cacheValue === str) {\n return;\n }\n this.cacheValue = str;\n this.cacheRule.$f.coverValue(value || {});\n },\n addRule() {\n const options = this.options ? this.options : {\n submitBtn: false,\n resetBtn: false,\n };\n options.formData = {...(this.value || {})};\n this.cacheRule = {rule: this.rule, options};\n },\n add$f($f) {\n this.cacheRule.$f = $f;\n this.$nextTick(() => {\n this.syncDisabled && $f.disabled(this.disabled);\n this.$emit('itemMounted', $f);\n });\n },\n emitEvent(name, ...args) {\n this.$emit(name, ...args);\n }\n },\n created() {\n this.addRule();\n this.type = this.formCreateInject.form.$form();\n },\n render() {\n const {rule, options} = this.cacheRule;\n const Type = this.type;\n return <Type\n on={{\n 'update:value': this.formData,\n 'emit-event': this.emitEvent,\n input: this.add$f\n }}\n props={{rule, option: options, extendOption: true}}/>\n }\n}\n","import checkbox from '@form-create/component-elm-checkbox/src/index';\nimport frame from '@form-create/component-elm-frame/src/index';\nimport radio from '@form-create/component-elm-radio/src/index';\nimport select from '@form-create/component-elm-select/src/index';\nimport tree from '@form-create/component-elm-tree/src/index';\nimport upload from '@form-create/component-elm-upload/src/index';\nimport group from '@form-create/component-elm-group/src/index';\nimport subForm from '@form-create/component-subform/src/index';\n\n\nexport default [\n checkbox,\n frame,\n radio,\n select,\n tree,\n upload,\n group,\n subForm,\n]\n","import extend from '@form-create/utils/lib/extend';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst NAME = 'FormCreate';\n\nconst getRuleInject = (vm, parent) => {\n if (!vm || vm === parent) {\n return;\n }\n if (vm.formCreateInject) {\n return vm.formCreateInject\n }\n if (vm.$parent) {\n return getRuleInject(vm.$parent, parent);\n }\n}\n\nexport default function $FormCreate(FormCreate) {\n return {\n name: NAME,\n componentName: NAME,\n model: {\n prop: 'api'\n },\n provide() {\n return {\n $pfc: this,\n }\n },\n inject: {$pfc: {default: null}},\n props: {\n rule: {\n type: Array,\n required: true\n },\n option: {\n type: Object,\n default: () => {\n return {};\n }\n },\n extendOption: Boolean,\n value: Object,\n api: Object,\n name: String,\n subForm: {\n type: Boolean,\n default: true\n },\n inFor: Boolean,\n },\n data() {\n return {\n formData: undefined,\n destroyed: false,\n validate: {},\n $f: undefined,\n isShow: true,\n unique: 1,\n renderRule: [...this.rule || []],\n ctxInject: {},\n updateValue: JSON.stringify(this.value || {}),\n isMore: !!this.inFor,\n };\n },\n render() {\n return this.formCreate.render();\n },\n methods: {\n _refresh() {\n ++this.unique;\n },\n _renderRule() {\n this.renderRule = [...this.rule || []];\n },\n _updateValue(value) {\n if (this.destroyed) return;\n this.updateValue = JSON.stringify(value);\n this.$emit('update:value', value);\n }\n },\n watch: {\n value: {\n handler(n) {\n if (JSON.stringify(n || {}) === this.updateValue) return;\n this.$f.config.forceCoverValue ? this.$f.coverValue(n || {}) : this.$f.setValue(n || {});\n },\n deep: true\n },\n option: {\n handler(n) {\n this.formCreate.initOptions(n);\n this.$f.refresh();\n },\n deep: true\n },\n rule(n) {\n if (n.length === this.renderRule.length && n.every(v => this.renderRule.indexOf(v) > -1)) return;\n this.formCreate.$handle.reloadRule(n);\n this._renderRule();\n }\n },\n beforeCreate() {\n const {rule, option} = this.$options.propsData;\n this.formCreate = new FormCreate(this, rule, option);\n Object.keys(this.formCreate.prop).forEach(k => {\n extend(this.$options[k], this.formCreate.prop[k]);\n })\n this.$emit('beforeCreate', this.formCreate.api());\n },\n created() {\n const vm = this, fapi = this.formCreate.api();\n const addSubForm = () => {\n if (vm.$pfc) {\n const inject = getRuleInject(vm, vm.$pfc);\n if (inject) {\n let sub;\n if (vm.isMore) {\n sub = toArray(inject.getSubForm());\n sub.push(fapi);\n\n } else {\n sub = fapi;\n }\n inject.subForm(sub);\n }\n }\n };\n\n const rmSubForm = () => {\n const inject = getRuleInject(vm, vm.$pfc);\n if (inject) {\n if (vm.isMore) {\n const sub = toArray(inject.getSubForm());\n const idx = sub.indexOf(fapi);\n if (idx > -1) {\n sub.splice(idx, 1);\n }\n } else {\n inject.subForm();\n }\n }\n };\n\n vm.$on('hook:beforeDestroy', () => {\n rmSubForm();\n });\n\n this.$watch(() => this.subForm, (n) => {\n n ? addSubForm() : rmSubForm();\n }, {immediate: true});\n }\n }\n}\n","export const normalMerge = ['attrs', 'props', 'domProps', 'scopedSlots'];\nexport const toArrayMerge = ['class', 'style', 'directives'];\nexport const functionalMerge = ['on', 'nativeOn'];\n\nconst mergeProps = (objects, initial = {}, opt = {}) => {\n const _normalMerge = [...normalMerge, ...opt['normal'] || []];\n const _toArrayMerge = [...toArrayMerge, ...opt['array'] || []];\n const _functionalMerge = [...functionalMerge, ...opt['functional'] || []];\n const propsMerge = opt['props'] || [];\n\n return objects.reduce((a, b) => {\n for (const key in b) {\n if (a[key]) {\n if (propsMerge.indexOf(key) > -1) {\n a[key] = mergeProps([b[key]], a[key]);\n } else if (_normalMerge.indexOf(key) > -1) {\n a[key] = {...a[key], ...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n const arrA = a[key] instanceof Array ? a[key] : [a[key]];\n const arrB = b[key] instanceof Array ? b[key] : [b[key]];\n a[key] = [...arrA, ...arrB]\n } else if (_functionalMerge.indexOf(key) > -1) {\n for (const event in b[key]) {\n if (a[key][event]) {\n const arrA = a[key][event] instanceof Array ? a[key][event] : [a[key][event]];\n const arrB = b[key][event] instanceof Array ? b[key][event] : [b[key][event]];\n a[key][event] = [...arrA, ...arrB]\n } else {\n a[key][event] = b[key][event]\n }\n }\n } else if (key === 'hook') {\n for (let hook in b[key]) {\n if (a[key][hook]) {\n a[key][hook] = mergeFn(a[key][hook], b[key][hook])\n } else {\n a[key][hook] = b[key][hook]\n }\n }\n } else {\n a[key] = b[key]\n }\n } else {\n if (_normalMerge.indexOf(key) > -1 || _functionalMerge.indexOf(key) > -1 || propsMerge.indexOf(key) > -1) {\n a[key] = {...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n a[key] = b[key] instanceof Array ? [...b[key]] : (typeof b[key] === 'object' ? {...b[key]} : b[key]);\n } else\n a[key] = b[key];\n }\n }\n return a\n }, initial);\n}\n\nconst mergeFn = (fn1, fn2) =>\n function () {\n fn1 && fn1.apply(this, arguments);\n fn2 && fn2.apply(this, arguments);\n };\n\nexport default mergeProps;\n","import {functionalMerge, normalMerge, toArrayMerge} from '@form-create/utils/lib/mergeprops';\n\n\nexport const keyAttrs = ['type', 'slot', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'nativeEmit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key', 'preview', 'component', 'cache'];\n\nexport const arrayAttrs = ['validate', 'children', 'control'];\n\nexport const normalAttrs = ['effect', 'deep'];\n\nexport function attrs() {\n return [...keyAttrs, ...normalMerge, ...toArrayMerge, ...functionalMerge, ...arrayAttrs, ...normalAttrs];\n}\n","export function format(type, msg, rule) {\n return (`[form-create ${type}]: ${msg}` + (rule ? ('\\n\\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule)) : ''))\n}\n\nexport function tip(msg, rule) {\n console.warn(format('tip', msg, rule));\n}\n\nexport function err(msg, rule) {\n console.error(format('err', msg, rule));\n}\n\nexport function logError(e) {\n err(e.toString());\n console.error(e);\n}\n","import deepExtend from './deepextend';\nimport {err} from './console';\nimport is, {hasProperty} from './type';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nconst $T = '$FN:';\nconst $TX = '$FNX:';\nconst FUNCTION = 'function';\n\nexport function toJson(obj, space) {\n return JSON.stringify(deepExtend([], obj, true), function (key, val) {\n if (val && val._isVue === true)\n return undefined;\n\n if (typeof val !== FUNCTION) {\n return val;\n }\n if (val.__json) {\n return val.__json;\n }\n if (val.__origin)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n return PREFIX + val + SUFFIX;\n }, space);\n}\n\nfunction makeFn(fn) {\n return eval('(' + FUNCTION + '(){return ' + fn + ' })()')\n}\n\nexport function parseFn(fn, mode) {\n if (fn && is.String(fn) && fn.length > 4) {\n let v = fn.trim();\n let flag = false;\n try {\n if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {\n v = v.replace(SUFFIX, '').replace(PREFIX, '');\n flag = true;\n } else if (v.indexOf($T) === 0) {\n v = v.replace($T, '');\n flag = true;\n } else if (v.indexOf($TX) === 0) {\n v = makeFn('function($inject){' + v.replace($TX, '') + '}');\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (!mode && v.indexOf(FUNCTION) === 0 && v !== FUNCTION) {\n flag = true;\n }\n if (!flag) return fn;\n const val = makeFn((v.indexOf(FUNCTION) === -1 && v.indexOf('(') !== 0) ? (FUNCTION + ' ' + v) : v);\n val.__json = fn;\n return val;\n } catch (e) {\n err(`解析失败:${v}\\n\\nerr: ${e}`);\n return undefined;\n }\n }\n return fn;\n}\n\nexport function parseJson(json, mode) {\n return JSON.parse(json, function (k, v) {\n if (is.Undef(v) || !v.indexOf) return v;\n return parseFn(v, mode);\n });\n}\n","import is from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {arrayAttrs, normalAttrs} from './attrs';\nimport {logError} from '@form-create/utils/lib/console';\nimport {parseJson, toJson} from '@form-create/utils/lib/json';\nimport deepExtend from '@form-create/utils/lib/deepextend';\n\nexport {parseFn} from '@form-create/utils/lib/json';\nexport {parseJson, toJson}\n\nexport function enumerable(value, writable) {\n return {\n value,\n enumerable: false,\n configurable: false,\n writable: !!writable\n }\n}\n\n//todo 优化位置\nexport function copyRule(rule) {\n return copyRules([rule])[0];\n}\n\nexport function copyRules(rules, mode) {\n return deepExtend([], [...rules], mode || false);\n}\n\nexport function mergeRule(rule, merge) {\n mergeProps(Array.isArray(merge) ? merge : [merge], rule, {array: arrayAttrs, normal: normalAttrs});\n return rule;\n}\n\nexport function getRule(rule) {\n const r = is.Function(rule.getRule) ? rule.getRule() : rule;\n if (!r.type) {\n r.type = 'input';\n }\n return r;\n}\n\nexport function mergeGlobal(target, merge) {\n if (!target) return merge;\n Object.keys(merge || {}).forEach((k) => {\n if (merge[k]) {\n target[k] = mergeRule(target[k] || {}, merge[k])\n }\n });\n return target;\n}\n\nexport function funcProxy(that, proxy) {\n Object.defineProperties(that, Object.keys(proxy).reduce((initial, k) => {\n initial[k] = {\n get() {\n return proxy[k]();\n }\n }\n return initial;\n }, {}))\n}\n\nexport function byCtx(rule) {\n return rule.__fc__ || (rule.__origin__ ? rule.__origin__.__fc__ : null)\n}\n\nexport function invoke(fn, def) {\n try {\n def = fn()\n } catch (e) {\n logError(e);\n }\n return def;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {attrs} from '../frame/attrs';\nimport {copyRule, mergeRule} from '../frame/util';\nimport {$set} from '@form-create/utils/lib/modify';\n\nexport function baseRule() {\n return {\n props: {},\n on: {},\n options: [],\n children: [],\n effect: {},\n hidden: false,\n display: true,\n value: undefined,\n };\n}\n\nexport function creatorFactory(name, init) {\n return (title, field, value, props = {}) => {\n const maker = new Creator(name, title, field, value, props);\n if (init) {\n if (is.Function(init)) init(maker);\n else maker.props(init);\n }\n return maker;\n };\n}\n\nexport default function Creator(type, title, field, value, props) {\n this._data = extend(baseRule(), {type, title, field, value, props: props || {}});\n this.event = this.on;\n}\n\nextend(Creator.prototype, {\n getRule() {\n return this._data;\n },\n setProp(key, value) {\n $set(this._data, key, value);\n return this;\n },\n _clone() {\n const clone = new this.constructor();\n clone._data = copyRule(this._data);\n return clone;\n },\n})\n\nexport function appendProto(attrs) {\n attrs.forEach(name => {\n Creator.prototype[name] = function (key) {\n mergeRule(this._data, {[name]: arguments.length < 2 ? key : {[key]: arguments[1]}})\n return this;\n };\n });\n}\n\nappendProto(attrs());\n","import {creatorFactory} from './creator';\n\nconst commonMaker = creatorFactory('');\n\nexport function create(type, field, title) {\n let make = commonMaker('', field);\n make._data.type = type;\n make._data.title = title;\n return make;\n}\n\nexport function createTmp(template, vm, field, title) {\n let make = commonMaker('', field);\n make._data.type = 'template';\n make._data.template = template;\n make._data.title = title;\n make._data.vm = vm;\n return make;\n}\n\nexport default function makerFactory() {\n return {\n create,\n createTmp,\n template: createTmp,\n factory: creatorFactory\n };\n}\n","import {byCtx, invoke, mergeRule, toJson} from './util';\nimport {$set} from '@form-create/utils/lib/modify';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {format} from '@form-create/utils/lib/console';\n\n\nfunction copy(value) {\n return deepCopy(value);\n}\n\nexport default function Api(h) {\n\n function tidyFields(fields) {\n if (is.Undef(fields))\n fields = h.fields();\n else if (!Array.isArray(fields))\n fields = [fields];\n return fields;\n }\n\n function props(fields, key, val) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n $set(ctx.rule, key, val);\n h.$render.clearCache(ctx);\n });\n })\n }\n\n function allSubForm() {\n const subs = h.subForm;\n return Object.keys(subs).reduce((initial, k) => {\n const sub = subs[k];\n if (!sub) return initial;\n if (Array.isArray(sub))\n initial.push(...sub);\n else\n initial.push(sub);\n return initial;\n }, []);\n }\n\n const api = {\n get config() {\n return h.options\n },\n get options() {\n return h.options\n },\n get form() {\n return h.form\n },\n get rule() {\n return h.rules\n },\n get parent() {\n return h.vm.$pfc && h.vm.$pfc.$f\n },\n get children() {\n return allSubForm();\n },\n formData(fields) {\n return tidyFields(fields).reduce((initial, id) => {\n const ctx = h.getFieldCtx(id);\n if (!ctx) return initial;\n initial[ctx.field] = copy(ctx.rule.value);\n return initial;\n }, h.options.appendValue ? copy(h.appendData) : {});\n },\n getValue(field) {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n return copy(ctx.rule.value);\n },\n coverValue(formData) {\n const data = {...(formData || {})};\n h.deferSyncValue(() => {\n api.fields().forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (ctxs) {\n const flag = hasProperty(data, key);\n ctxs.forEach(ctx => {\n ctx.rule.value = flag ? data[key] : undefined;\n })\n delete data[key];\n }\n });\n extend(h.appendData, data);\n })\n },\n setValue(field) {\n let formData = field;\n if (arguments.length >= 2)\n formData = {[field]: arguments[1]};\n h.deferSyncValue(() => {\n Object.keys(formData).forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (!ctxs) return h.appendData[key] = formData[key];\n ctxs.forEach(ctx => {\n ctx.rule.value = formData[key];\n });\n });\n })\n },\n removeField(field) {\n const ctx = h.getCtx(field);\n h.deferSyncValue(() => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rm();\n });\n }, true);\n return ctx ? ctx.origin : undefined;\n },\n removeRule(rule) {\n const ctx = rule && byCtx(rule);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\n },\n destroy: () => {\n h.vm.$el.parentNode && h.vm.$el.parentNode.removeChild(h.vm.$el);\n h.vm.$destroy();\n },\n fields: () => h.fields(),\n append: (rule, after, child) => {\n let index = h.sort.length - 1, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n index = ctx.rule.children.length - 1;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index + 1, 0, rule);\n },\n prepend: (rule, after, child) => {\n let index = 0, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index, 0, rule);\n },\n hidden(state, fields) {\n props(fields, 'hidden', !!state);\n h.refresh();\n },\n hiddenStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.hidden;\n },\n display(state, fields) {\n props(fields, 'display', !!state);\n h.refresh();\n },\n displayStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.display;\n },\n disabled(disabled, fields) {\n tidyFields(fields).forEach((field) => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rule.props && $set(ctx.rule.props, 'disabled', !!disabled);\n });\n });\n h.refresh();\n },\n all(origin) {\n return Object.keys(h.ctxs).map(k => {\n const ctx = h.ctxs[k];\n return origin ? ctx.origin : ctx.rule;\n });\n },\n model(origin) {\n return h.fields().reduce((initial, key) => {\n const ctx = h.fieldCtx[key][0];\n initial[key] = origin ? ctx.origin : ctx.rule;\n return initial;\n }, {});\n },\n component(origin) {\n return Object.keys(h.nameCtx).reduce((initial, key) => {\n const ctx = h.nameCtx[key].map(ctx => origin ? ctx.origin : ctx.rule);\n initial[key] = ctx.length === 1 ? ctx[0] : ctx;\n return initial;\n }, {});\n },\n bind() {\n return api.form;\n },\n reload: (rules) => {\n h.reloadRule(rules)\n },\n updateOptions(options) {\n h.fc.updateOptions(options);\n api.refresh();\n },\n onSubmit(fn) {\n api.updateOptions({onSubmit: fn});\n },\n sync: (field) => {\n if (Array.isArray(field)) {\n field.forEach(v => api.sync(v));\n return;\n }\n let ctxs = is.Object(field) ? byCtx(field) : h.getCtxs(field);\n if (!ctxs) {\n return;\n }\n ctxs = Array.isArray(ctxs) ? ctxs : [ctxs];\n ctxs.forEach(ctx => {\n if (!ctx.deleted) {\n const subForm = h.subForm[ctx.id];\n if (subForm) {\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.refresh();\n })\n } else if (subForm) {\n subForm.refresh();\n }\n }\n //ctx.updateKey(true);\n h.$render.clearCache(ctx);\n }\n });\n h.refresh();\n },\n refresh: () => {\n allSubForm().forEach(sub => {\n sub.refresh();\n });\n h.$render.clearCacheAll();\n h.refresh();\n },\n refreshOptions() {\n h.$manager.updateOptions(h.options);\n api.refresh();\n },\n hideForm: (hide) => {\n $set(h.vm, 'isShow', !hide);\n },\n changeStatus: () => {\n return h.changeStatus;\n },\n clearChangeStatus: () => {\n h.changeStatus = false;\n },\n updateRule(id, rule) {\n h.getCtxs(id).forEach(ctx => {\n extend(ctx.rule, rule);\n });\n },\n updateRules(rules) {\n Object.keys(rules).forEach(id => {\n api.updateRule(id, rules[id]);\n })\n },\n mergeRule: (id, rule) => {\n h.getCtxs(id).forEach(ctx => {\n mergeRule(ctx.rule, rule);\n });\n },\n mergeRules(rules) {\n Object.keys(rules).forEach(id => {\n api.mergeRule(id, rules[id]);\n })\n },\n getRule: (id, origin) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return origin ? ctx.origin : ctx.rule;\n }\n },\n setEffect(id, attr, value) {\n const ctx = h.getCtx(id);\n if (ctx && attr) {\n if (attr[0] === '$') {\n attr = attr.substr(1);\n }\n if (hasProperty(ctx.rule, '$' + attr)) {\n $set(ctx.rule, '$' + attr, value);\n }\n if (!hasProperty(ctx.rule, 'effect')) {\n $set(ctx.rule, 'effect', {});\n }\n $set(ctx.rule.effect, attr, value);\n }\n },\n clearEffectData(id, attr) {\n const ctx = h.getCtx(id);\n if (ctx) {\n if (attr && attr[0] === '$') {\n attr = attr.substr(1);\n }\n ctx.clearEffectData(attr);\n api.sync(id);\n }\n },\n updateValidate(id, validate, merge) {\n if (merge) {\n api.mergeRule(id, {validate})\n } else {\n props(id, 'validate', validate);\n }\n },\n updateValidates(validates, merge) {\n Object.keys(validates).forEach(id => {\n api.updateValidate(id, validates[id], merge);\n })\n },\n refreshValidate() {\n h.vm.validate = {};\n api.refresh();\n },\n resetFields(fields) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n h.$render.clearCache(ctx);\n ctx.rule.value = copy(ctx.defaultValue);\n });\n });\n },\n method(id, name) {\n const el = api.el(id);\n if (!el || !el[name])\n throw new Error(format('err', `${name}方法不存在`));\n return (...args) => {\n return el[name](...args);\n }\n },\n exec(id, name, ...args) {\n return invoke(() => api.method(id, name)(...args));\n },\n toJson(space) {\n return toJson(api.rule, space);\n },\n trigger(id, event, ...args) {\n const el = api.el(id);\n el && el.$emit(event, ...args);\n },\n el(id) {\n const ctx = h.getCtx(id);\n if (ctx) return ctx.el || h.vm.$refs[ctx.ref];\n },\n closeModal: (id) => {\n const el = api.el(id);\n el && el.$emit && el.$emit('close-modal');\n },\n getSubForm(field) {\n const ctx = h.getCtx(field);\n return ctx ? h.subForm[ctx.id] : undefined;\n },\n nextTick(fn) {\n h.bus.$once('next-tick', fn);\n h.refresh();\n },\n nextRefresh(fn) {\n h.nextRefresh();\n fn && invoke(fn);\n },\n emit(name, ...args) {\n h.vm.$emit(name, ...args);\n },\n deferSyncValue(fn, sync){\n h.deferSyncValue(fn, sync);\n },\n helper: {\n tidyFields, props\n }\n };\n\n ['on', 'once', 'off', 'set'].forEach(n => {\n api[n] = function (...args) {\n h.vm[`$${n}`](...args);\n }\n });\n\n api.changeValue = api.changeField = api.setValue;\n\n return api;\n}\n","import extend from '@form-create/utils/lib/extend';\n\nexport default function useCache(Render) {\n extend(Render.prototype, {\n initCache() {\n this.clearCacheAll();\n },\n clearCache(ctx) {\n if(ctx.rule.cache){\n return;\n }\n if (!this.cache[ctx.id]) {\n ctx.parent && this.clearCache(ctx.parent);\n return;\n }\n if (this.cache[ctx.id].use === true || this.cache[ctx.id].parent) {\n this.$handle.refresh();\n }\n const parent = this.cache[ctx.id].parent;\n this.cache[ctx.id] = null;\n parent && this.clearCache(parent);\n },\n clearCacheAll() {\n this.cache = {};\n },\n setCache(ctx, vnode, parent) {\n this.cache[ctx.id] = {\n vnode,\n use: false,\n parent,\n slot: ctx.rule.slot\n };\n },\n getCache(ctx) {\n const cache = this.cache[ctx.id];\n if (cache) {\n cache.use = true;\n return cache.vnode;\n }\n return undefined;\n }\n })\n\n}\n","export default function toCase(str) {\n const to = str.replace(/(-[a-z])/g, function (v) {\n return v.replace('-', '').toLocaleUpperCase();\n });\n\n return lower(to);\n}\n\nexport function lower(str) {\n return str.replace(str[0], str[0].toLowerCase());\n}\n","export default function toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n","export default function toLine(name) {\n let line = name.replace(/([A-Z])/g, '-$1').toLocaleLowerCase();\n if (line.indexOf('-') === 0)\n line = line.substr(1);\n return line;\n}\n","let id = 0;\n\nexport default function uniqueId() {\n return 'F' + Math.random().toString(36).substr(3, 3) + Number(`${Date.now()}${++id}`).toString(36);\n}\n","export default function deepSet(data, idx, val) {\n let _data = data, to;\n (idx || '').split('.').forEach(v => {\n if (to) {\n if (!_data[to] || typeof _data[to] != 'object') {\n _data[to] = {}\n }\n _data = _data[to];\n }\n to = v;\n })\n _data[to] = val;\n return _data;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {_vue as Vue} from '../frame';\nimport {tip} from '@form-create/utils/lib/console';\nimport {invoke, mergeRule} from '../frame/util';\nimport toCase, {lower} from '@form-create/utils/lib/tocase';\nimport {$set, deepSet, toLine} from '@form-create/utils';\n\nexport default function useRender(Render) {\n extend(Render.prototype, {\n initRender() {\n this.tempList = {};\n this.clearOrgChildren();\n },\n initOrgChildren() {\n const ctxs = this.$handle.ctxs;\n this.orgChildren = Object.keys(ctxs).reduce((initial, id) => {\n if (ctxs[id].parser.loadChildren !== false) {\n const children = ctxs[id].rule.children;\n initial[id] = is.trueArray(children) ? [...children] : [];\n }\n\n return initial;\n }, {});\n\n },\n clearOrgChildren() {\n this.orgChildren = {};\n },\n getTypeSlot(ctx) {\n const _fn = (vm) => {\n if (vm) {\n let slot = undefined;\n if (ctx.rule.field) {\n slot = vm.$scopedSlots['field-' + toLine(ctx.rule.field)] || vm.$scopedSlots['field-' + ctx.rule.field];\n }\n if (!slot) {\n slot = vm.$scopedSlots['type-' + toLine(ctx.type)] || vm.$scopedSlots['type-' + ctx.type];\n }\n if (slot) {\n return slot;\n }\n return _fn(vm.$pfc);\n }\n }\n return _fn(this.vm);\n },\n render() {\n if (!this.vm.isShow) {\n return;\n }\n this.$h = this.vm.$createElement;\n this.$manager.beforeRender();\n\n let vn;\n\n const make = () => this.renderList();\n make.renderSlot = slot => this.renderList(slot);\n make.renderName = name => this.renderId(name);\n make.renderField = field => this.renderId(field, 'field');\n\n if (this.vm.$scopedSlots.container) {\n vn = [this.vm.$scopedSlots.container(make)];\n } else {\n vn = make();\n }\n return this.$manager.render(vn);\n },\n renderList(slot) {\n return this.sort.map((id) => {\n return slot ? this.renderSlot(this.$handle.ctxs[id], slot) : this.renderCtx(this.$handle.ctxs[id]);\n }).filter((val) => val !== undefined);\n },\n makeVm(rule) {\n const vm = rule.vm;\n if (!vm)\n return new Vue;\n else if (is.Function(vm))\n return invoke(() => rule.vm(this.$handle.getInjectData(rule)));\n else if (!vm._isVue)\n return new Vue(vm);\n return vm;\n },\n mergeGlobal(ctx) {\n const g = this.$handle.options.global;\n if (!g) return;\n //todo 缓存配置,更新 option 更新\n if (!ctx.cacheConfig)\n ctx.cacheConfig = g[ctx.originType] || g[ctx.type] || g[ctx.trueType] || {};\n ctx.prop = mergeRule({}, [g['*'], ctx.cacheConfig, ctx.prop]);\n },\n setOptions(ctx) {\n if (ctx.prop.optionsTo && ctx.prop.options) {\n deepSet(ctx.prop, ctx.prop.optionsTo, ctx.prop.options);\n }\n },\n deepSet(ctx) {\n const deep = ctx.rule.deep;\n deep && Object.keys(deep).sort((a, b) => a.length < b.length ? -1 : 1).forEach(str => {\n deepSet(ctx.prop, str, deep[str]);\n });\n },\n setTempProps(vm, ctx) {\n if (!vm.$props) return;\n\n const {prop} = ctx;\n const keys = Object.keys(vm.$props);\n const inject = this.injectProp(ctx);\n const injectKeys = Object.keys(inject);\n\n keys.forEach(key => {\n if (hasProperty(prop.props, key))\n vm.$props[key] = prop.props[key];\n else if (injectKeys.indexOf(key) > -1) vm.$props[key] = inject[key];\n });\n\n const key = (vm.$options.model && vm.$options.model.prop) || 'value';\n if (keys.indexOf(key) > -1) {\n vm.$props[key] = prop.value;\n }\n },\n renderTemp(ctx) {\n if (!Vue.compile) {\n tip('当前使用的Vue构建版本不支持compile,无法使用template功能');\n return [];\n }\n const rule = ctx.prop;\n const {id, key} = ctx;\n\n if (!this.tempList[id]) {\n if (!ctx.el) {\n ctx.el = this.makeVm(rule);\n this.vm.$nextTick(() => ctx.parser.mounted(ctx));\n }\n\n let vm = ctx.el;\n if (ctx.input)\n vm.$on((vm.$options.model && vm.$options.model.event) || 'input', (value) => {\n this.onInput(ctx, value);\n });\n\n this.tempList[id] = {\n vm,\n template: Vue.compile(rule.template)\n };\n }\n\n const {vm, template} = this.tempList[id];\n\n this.setTempProps(vm, ctx);\n\n const vn = template.render.call(vm);\n\n if (is.Undef(vn.data)) vn.data = {};\n vn.key = key;\n vn.data.ref = ctx.ref;\n vn.data.key = key;\n return vn;\n },\n parseSide(side, ctx) {\n return is.Object(side) ? mergeRule({props: {formCreateInject: ctx.prop.props.formCreateInject}}, side) : side;\n },\n renderSides(vn, ctx, temp) {\n const prop = ctx[temp ? 'rule' : 'prop'];\n return [this.renderRule(this.parseSide(prop.prefix, ctx)), vn, this.renderRule(this.parseSide(prop.suffix, ctx))];\n\n },\n renderSlot(ctx, slot) {\n return ctx.rule.slot === slot ? this.renderCtx(ctx) : undefined;\n },\n renderId(name, type) {\n const ctxs = this.$handle[type === 'field' ? 'fieldCtx' : 'nameCtx'][name]\n return ctxs ? ctxs.map(ctx => this.renderCtx(ctx, ctx.parent)) : undefined;\n },\n renderCtx(ctx, parent) {\n if (ctx.type === 'hidden') return;\n const rule = ctx.rule;\n if ((!this.cache[ctx.id]) || this.cache[ctx.id].slot !== rule.slot) {\n let vn;\n let cacheFlag = rule.cache !== false;\n const _type = ctx.trueType;\n const none = !(is.Undef(rule.display) || !!rule.display);\n if (_type === 'template' && !rule.template) {\n vn = this.renderSides(this.renderChildren(ctx), ctx, true);\n if (none) {\n this.display(vn);\n }\n vn = this.item(ctx, vn);\n } else if (_type === 'fcFragment') {\n vn = this.renderChildren(ctx);\n } else {\n ctx.initProp();\n this.mergeGlobal(ctx);\n this.$manager.tidyRule(ctx);\n this.deepSet(ctx);\n this.setOptions(ctx);\n this.ctxProp(ctx);\n let prop = ctx.prop;\n prop.preview = !!(hasProperty(prop, 'preview') ? prop.preview : (this.options.preview || false))\n prop.props.formCreateInject = this.injectProp(ctx);\n const preview = prop.preview;\n\n if (prop.hidden) {\n this.setCache(ctx, undefined, parent);\n return;\n }\n\n if (_type === 'template' && prop.template) {\n vn = this.renderTemp(ctx);\n cacheFlag = false;\n } else {\n let children = [];\n if (ctx.parser.renderChildren) {\n children = ctx.parser.renderChildren(ctx);\n } else if (ctx.parser.loadChildren !== false) {\n children = this.renderChildren(ctx);\n }\n const slot = this.getTypeSlot(ctx);\n if (slot) {\n vn = slot({\n rule,\n prop,\n preview,\n children,\n api: this.$handle.api,\n model: prop.model || {}\n });\n } else {\n vn = preview ? ctx.parser.preview(children, ctx) : ctx.parser.render(children, ctx);\n }\n }\n vn = this.renderSides(vn, ctx);\n if ((!(!ctx.input && is.Undef(prop.native))) && prop.native !== true) {\n vn = this.$manager.makeWrap(ctx, vn);\n }\n if (none) {\n vn = this.display(vn);\n }\n vn = this.item(ctx, vn)\n }\n if (cacheFlag) {\n this.setCache(ctx, vn, parent);\n }\n return vn;\n }\n\n return this.getCache(ctx);\n },\n display(vn) {\n if (Array.isArray(vn)) {\n const data = [];\n vn.forEach(v => {\n if (Array.isArray(v)) return this.display(v);\n if (this.none(v)) data.push(v);\n })\n return data;\n } else {\n return this.none(vn);\n }\n },\n none(vn) {\n if (vn && vn.data) {\n if (Array.isArray(vn.data.style)) {\n vn.data.style.push({display: 'none'});\n } else if(is.String(vn.data.style)) {\n vn.data.style += ';display:none;';\n } else {\n vn.data.style = [vn.data.style, {display: 'none'}];\n }\n return vn;\n }\n },\n item(ctx, vn) {\n return this.$h('fcFragment', {\n slot: ctx.rule.slot,\n key: ctx.key,\n }, [vn]);\n },\n injectProp(ctx) {\n if (!this.vm.ctxInject[ctx.id]) {\n $set(this.vm.ctxInject, ctx.id, {\n api: this.$handle.api,\n form: this.fc.create,\n subForm: subForm => {\n this.$handle.addSubForm(ctx, subForm);\n },\n getSubForm: () => {\n return this.$handle.subForm[ctx.id];\n },\n options: [],\n children: [],\n prop: {},\n preview: false,\n field: ctx.field,\n rule: ctx.rule,\n input: ctx.input,\n });\n }\n const inject = this.vm.ctxInject[ctx.id];\n extend(inject, {\n preview: ctx.prop.preview,\n options: ctx.prop.options,\n children: ctx.rule.children,\n prop: (function () {\n const temp = {...ctx.prop};\n temp.on = temp.on ? {...temp.on} : {};\n delete temp.model;\n return temp;\n }()),\n });\n return inject;\n },\n ctxProp(ctx, custom) {\n const {ref, key, rule} = ctx;\n this.$manager.mergeProp(ctx, custom);\n ctx.parser.mergeProp(ctx, custom);\n const props = [\n {\n ref: ref,\n key: rule.key || `${key}fc`,\n slot: undefined,\n on: {\n 'hook:mounted': () => {\n this.onMounted(ctx);\n },\n 'fc.sub-form': (subForm) => {\n this.$handle.addSubForm(ctx, subForm);\n }\n },\n }\n ]\n\n if (!custom && ctx.input) {\n ctx.prop.model = {\n value: this.$handle.getFormData(ctx),\n callback: (value) => {\n this.onInput(ctx, value);\n },\n expression: `formData.${ctx.id}`\n };\n }\n mergeProps(props, ctx.prop);\n return ctx.prop;\n },\n onMounted(ctx) {\n ctx.el = this.vm.$refs[ctx.ref];\n if (ctx.el) {\n (ctx.el.$el || ctx.el).__rule__ = ctx.rule;\n }\n ctx.parser.mounted(ctx);\n this.$handle.effect(ctx, 'mounted');\n },\n onInput(ctx, value) {\n this.$handle.onInput(ctx, value);\n },\n renderChildren(ctx) {\n const {children} = ctx.rule, orgChildren = this.orgChildren[ctx.id];\n\n const isRm = child => {\n return !is.String(child) && child.__fc__ && !this.$handle.ctxs[child.__fc__.id];\n }\n\n if (!is.trueArray(children) && orgChildren) {\n this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n this.orgChildren[ctx.id] = [];\n return [];\n }\n\n orgChildren && this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (children.indexOf(child) === -1 && isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n\n return children.map(child => {\n if (!child) return;\n if (is.String(child)) return child;\n if (child.__fc__) {\n return this.renderCtx(child.__fc__, ctx);\n }\n if (child.type) {\n this.vm.$nextTick(() => {\n this.$handle.loadChildren(children, ctx);\n this.$handle.refresh();\n });\n }\n });\n\n },\n defaultRender(ctx, children) {\n const prop = ctx.prop;\n if(prop.component)\n return this.vNode.makeComponent(prop.component, prop, children)\n if (this.vNode[ctx.type])\n return this.vNode[ctx.type](prop, children);\n if (this.vNode[ctx.originType])\n return this.vNode[ctx.originType](prop, children);\n return this.vNode.make(lower(ctx.originType), prop, children);\n },\n renderRule(rule, children, origin) {\n if (!rule) return undefined;\n if (is.String(rule)) return rule;\n\n let type;\n if (origin) {\n type = rule.type;\n } else {\n type = rule.is;\n if (rule.type) {\n type = toCase(rule.type);\n const alias = this.vNode.aliasMap[type];\n if (alias) type = toCase(alias);\n }\n }\n\n if (!type) return undefined;\n let data = [[children]];\n if (is.trueArray(rule.children)) {\n data.push(rule.children.map(v => this.renderRule(v)));\n }\n return this.$h(type, {...rule}, data);\n }\n })\n}\n","import useCache from './cache';\nimport useRender from './render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\n\nexport default function Render(handle) {\n extend(this, {\n $handle: handle,\n fc: handle.fc,\n vm: handle.vm,\n $manager: handle.$manager,\n vNode: new handle.fc.CreateNode(handle.vm),\n });\n\n funcProxy(this, {\n options() {\n return handle.options;\n },\n sort() {\n return handle.sort;\n }\n })\n\n this.initCache();\n this.initRender();\n}\n\nuseCache(Render);\nuseRender(Render)\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport toLine from '@form-create/utils/lib/toline';\nimport {parseFn} from '../frame/util';\n\n\nexport default function useInject(Handler) {\n extend(Handler.prototype, {\n parseInjectEvent(rule, on) {\n const inject = rule.inject || this.options.injectEvent;\n return this.parseEventLst(rule, on, inject);\n },\n parseEventLst(rule, data, inject, deep) {\n Object.keys(data).forEach(k => {\n const fn = this.parseEvent(rule, data[k], inject, deep);\n if (fn) {\n data[k] = fn;\n }\n });\n return data;\n },\n parseEvent(rule, fn, inject, deep) {\n if (is.Function(fn) && ((inject !== false && !is.Undef(inject)) || fn.__inject)) {\n return this.inject(rule, fn, inject)\n } else if (!deep && Array.isArray(fn) && fn[0] && (is.String(fn[0]) || is.Function(fn[0]))) {\n return this.parseEventLst(rule, fn, inject, true);\n } else if (is.String(fn)) {\n const val = parseFn(fn);\n if (val && fn !== val) {\n return val.__inject ? this.parseEvent(rule, val, inject, true) : val;\n }\n }\n },\n parseEmit(ctx, on) {\n let event = {}, rule = ctx.rule, {emitPrefix, field, name, inject} = rule;\n let emit = rule[on ? 'emit' : 'nativeEmit'] || [];\n if (is.trueArray(emit)) {\n let emitKey = emitPrefix || field || name;\n if (emitKey) {\n if (!on) emitKey = `native-${emitKey}`;\n emit.forEach(eventName => {\n if (!eventName) return;\n let eventInject;\n if (is.Object(eventName)) {\n eventInject = eventName.inject;\n eventName = eventName.name;\n }\n const fieldKey = toLine(`${emitKey}-${eventName}`);\n const fn = (...arg) => {\n this.vm.$emit(fieldKey, ...arg);\n this.vm.$emit('emit-event', fieldKey, ...arg);\n };\n fn.__emit = true;\n\n if (!eventInject && inject === false) {\n event[eventName] = fn;\n } else {\n let _inject = eventInject || inject || this.options.injectEvent;\n event[eventName] = is.Undef(_inject) ? fn : this.inject(rule, fn, _inject);\n }\n });\n }\n\n }\n ctx.computed[on ? 'on' : 'nativeOn'] = event;\n return event;\n },\n getInjectData(self, inject) {\n const {option, rule} = this.vm.$options.propsData;\n return {\n api: this.api,\n $f: this.api,\n rule,\n self: self.__origin__,\n option,\n inject\n };\n },\n inject(self, _fn, inject) {\n if (_fn.__origin) {\n if (this.watching && !this.loading)\n return _fn;\n _fn = _fn.__origin;\n }\n\n const h = this;\n\n const fn = function (...args) {\n const data = h.getInjectData(self, inject);\n data.args = [...args];\n args.unshift(data);\n return _fn.apply(this, args);\n };\n fn.__origin = _fn;\n fn.__json = _fn.__json;\n return fn;\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\n\nconst EVENT = ['hook:updated', 'hook:mounted'];\n\nexport default function usePage(Handler) {\n extend(Handler.prototype, {\n usePage() {\n const page = this.options.page;\n if (!page) return;\n let first = 25;\n let limit = getLimit(this.rules);\n if (is.Object(page)) {\n if (page.first) first = parseInt(page.first, 10) || first;\n if (page.limit) limit = parseInt(page.limit, 10) || limit;\n }\n extend(this, {\n first,\n limit,\n pageEnd: this.rules.length <= first,\n })\n\n this.bus.$on('page-end', () => this.vm.$emit('page-end', this.api));\n this.pageLoad();\n },\n pageLoad() {\n const pageFn = () => {\n if (this.pageEnd) {\n this.vm.$off(EVENT, pageFn);\n this.bus.$emit('page-end');\n } else {\n this.first += this.limit;\n this.pageEnd = this.rules.length <= this.first;\n this.loadRule();\n this.refresh();\n }\n }\n this.vm.$on(EVENT, pageFn);\n },\n })\n}\n\n\nfunction getLimit(rules) {\n return rules.length < 31 ? 31 : Math.ceil(rules.length / 3);\n}\n","import extend from '@form-create/utils/lib/extend';\n\n\nexport default function useRender(Handler) {\n extend(Handler.prototype, {\n clearNextTick() {\n this.nextTick && clearTimeout(this.nextTick);\n this.nextTick = null;\n },\n bindNextTick(fn) {\n this.clearNextTick();\n this.nextTick = setTimeout(() => {\n fn()\n this.nextTick = null;\n }, 10);\n },\n render() {\n // console.warn('%c render', 'color:green');\n ++this.loadedId;\n\n if (this.vm.unique > 0)\n return this.$render.render();\n else {\n this.vm.unique = 1;\n return [];\n }\n },\n });\n}\n","import unique from '@form-create/utils/lib/unique';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {enumerable, mergeRule} from '../frame/util';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\n\nfunction bind(ctx) {\n Object.defineProperties(ctx.origin, {\n __fc__: enumerable(ctx, true)\n });\n}\n\nexport default function RuleContext(handle, rule, defaultValue) {\n const id = unique();\n\n extend(this, {\n id,\n ref: id,\n wrapRef: id + 'fi',\n rule,\n origin: rule.__origin__ || rule,\n name: rule.name,\n\n watch: [],\n linkOn: [],\n root: [],\n ctrlRule: [],\n parent: null,\n cacheConfig: null,\n prop: {...rule},\n computed: {},\n payload: {},\n input: !!rule.field,\n el: undefined,\n defaultValue: rule.field ? deepCopy(defaultValue) : undefined,\n field: rule.field || undefined,\n })\n\n this.updateType();\n this.updateKey();\n bind(this);\n this.update(handle, true);\n}\n\nextend(RuleContext.prototype, {\n effectData(name) {\n if (!this.payload[name]) {\n this.payload[name] = {};\n }\n return this.payload[name];\n },\n clearEffectData(name) {\n if (name === undefined) {\n this.payload = {};\n } else {\n delete this.payload[name];\n }\n },\n updateKey(flag) {\n this.key = unique();\n flag && this.parent && this.parent.updateKey(flag);\n },\n updateType() {\n this.originType = this.rule.type;\n this.type = toCase(this.rule.type);\n },\n setParser(parser) {\n this.parser = parser;\n parser.init(this);\n },\n initProp() {\n const rule = {...this.rule};\n delete rule.children;\n this.prop = mergeRule({}, [rule, ...Object.keys(this.payload).map(k => this.payload[k]), this.computed]);\n },\n check(handle) {\n return this.vm === handle.vm\n },\n unwatch() {\n this.watch.forEach(un => un());\n this.watch = [];\n },\n unlink() {\n this.linkOn.forEach(un => un());\n this.linkOn = [];\n },\n link() {\n this.unlink();\n this.$handle.appendLink(this);\n },\n watchTo() {\n this.$handle.watchCtx(this);\n },\n delete() {\n const undef = void 0;\n this.unwatch();\n this.unlink();\n this.rmCtrl();\n extend(this, {\n deleted: true,\n prop: {...this.rule},\n computed: {},\n el: undef,\n $handle: undef,\n $render: undef,\n $api: undef,\n vm: undef,\n vNode: undef,\n parent: null,\n cacheConfig: null,\n })\n },\n rmCtrl() {\n this.ctrlRule.forEach(ctrl => ctrl.__fc__ && ctrl.__fc__.rm());\n this.ctrlRule = [];\n },\n rm() {\n const _rm = () => {\n let index = this.root.indexOf(this.origin);\n if (index > -1) {\n this.root.splice(index, 1);\n this.$handle && this.$handle.refresh();\n }\n }\n if (this.deleted) {\n _rm();\n return;\n }\n this.$handle.noWatch(() => {\n this.$handle.deferSyncValue(() => {\n this.rmCtrl();\n _rm();\n this.$handle.rmCtx(this);\n extend(this, {\n root: []\n });\n }, this.input);\n });\n },\n update(handle, init) {\n extend(this, {\n deleted: false,\n $handle: handle,\n $render: handle.$render,\n $api: handle.api,\n vm: handle.vm,\n trueType: handle.getType(this.originType),\n vNode: handle.$render.vNode,\n updated: false,\n });\n !init && this.unwatch();\n this.watchTo();\n this.link();\n }\n})\n","import extend from '@form-create/utils/lib/extend';\nimport {byCtx, copyRule, enumerable, getRule, invoke, parseFn} from '../frame/util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {baseRule} from '../factory/creator';\nimport RuleContext from '../factory/context';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {$set} from '@form-create/utils';\n\nconst condition = {\n '==': (b) => (a) => a === b,\n '!=': (b) => (a) => a !== b,\n '<>': (b) => (a) => a !== b,\n '>': (b) => (a) => a > b,\n '>=': (b) => (a) => a >= b,\n '<': (b) => (a) => a < b,\n '<=': (b) => (a) => a <= b,\n 'in': (b) => (a) => (b && b.indexOf && b.indexOf(a) > -1),\n 'on': (b) => (a) => (a && a.indexOf && a.indexOf(b) > -1),\n 'notIn': (b) => (a) => !(condition.in(b)(a)),\n 'notOn': (b) => (a) => !(condition.on(b)(a)),\n 'between': (b) => (a) => a > b[0] && a < b[1],\n 'notBetween': (b) => (a) => a < b[0] || a > b[1],\n}\n\n\nexport default function useLoader(Handler) {\n extend(Handler.prototype, {\n nextRefresh(fn) {\n const id = this.loadedId;\n this.vm.$nextTick(() => {\n id === this.loadedId && (fn ? fn() : this.refresh());\n });\n },\n parseRule(_rule) {\n const rule = getRule(_rule);\n\n Object.defineProperties(rule, {\n __origin__: enumerable(_rule, true)\n });\n\n fullRule(rule);\n this.appendValue(rule);\n\n rule.options = Array.isArray(rule.options) ? rule.options : [];\n\n [rule, rule['prefix'], rule['suffix']].forEach(item => {\n if (!item) {\n return;\n }\n this.loadFn(item, rule);\n });\n this.loadCtrl(rule);\n if (rule.update) {\n rule.update = parseFn(rule.update);\n }\n return rule;\n },\n loadFn(item, rule) {\n ['on', 'props', 'nativeOn', 'deep'].forEach(k => {\n item[k] && this.parseInjectEvent(rule, item[k]);\n });\n },\n loadCtrl(rule) {\n rule.control && rule.control.forEach(ctrl => {\n if (ctrl.handle) {\n ctrl.handle = parseFn(ctrl.handle)\n }\n })\n },\n syncProp(ctx) {\n const rule = ctx.rule;\n is.trueArray(rule.sync) && mergeProps([{\n on: rule.sync.reduce((pre, prop) => {\n pre[`update:${prop}`] = (val) => {\n rule.props[prop] = val;\n this.vm.$emit('sync', prop, val, rule, this.fapi);\n }\n return pre\n }, {})\n }], ctx.computed)\n },\n loadRule() {\n // console.warn('%c load', 'color:blue');\n this.cycleLoad = false;\n this.loading = true;\n if (this.pageEnd) {\n this.bus.$emit('load-start');\n }\n this.deferSyncValue(() => {\n this._loadRule(this.rules);\n this.loading = false;\n if (this.cycleLoad && this.pageEnd) {\n return this.loadRule();\n }\n if (this.pageEnd) {\n this.bus.$emit('load-end');\n }\n this.vm._renderRule();\n this.$render.initOrgChildren();\n this.syncForm();\n });\n },\n loadChildren(children, parent) {\n this.cycleLoad = false;\n this.loading = true;\n this.bus.$emit('load-start');\n this._loadRule(children, parent);\n this.loading = false;\n if (this.cycleLoad) {\n return this.loadRule();\n } else {\n this.bus.$emit('load-end');\n this.syncForm();\n }\n this.$render.clearCache(parent);\n },\n _loadRule(rules, parent) {\n\n const preIndex = (i) => {\n let pre = rules[i - 1];\n if (!pre || !pre.__fc__) {\n return i > 0 ? preIndex(i - 1) : -1;\n }\n let index = this.sort.indexOf(pre.__fc__.id);\n return index > -1 ? index : preIndex(i - 1);\n }\n\n const loadChildren = (children, parent) => {\n if (is.trueArray(children)) {\n this._loadRule(children, parent);\n }\n };\n\n rules.map((_rule, index) => {\n if (parent && !is.Object(_rule)) return;\n if (!this.pageEnd && !parent && index >= this.first) return;\n\n if (_rule.__fc__ && _rule.__fc__.root === rules && this.ctxs[_rule.__fc__.id]) {\n loadChildren(_rule.__fc__.rule.children, _rule.__fc__);\n return _rule.__fc__;\n }\n\n let rule = getRule(_rule);\n\n const isRepeat = () => {\n return !!(rule.field && this.fieldCtx[rule.field] && this.fieldCtx[rule.field][0] !== _rule.__fc__)\n }\n\n this.ruleEffect(rule, 'init', {repeat: isRepeat()});\n\n if (isRepeat()) {\n this.vm.$emit('repeat-field', _rule, this.api);\n }\n\n let ctx;\n let isCopy = false;\n let isInit = !!_rule.__fc__;\n let defaultValue = rule.value;\n if (isInit) {\n ctx = _rule.__fc__;\n defaultValue = ctx.defaultValue;\n const check = !ctx.check(this);\n if (ctx.deleted) {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n ctx.update(this);\n }\n } else {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n rules[index] = _rule = _rule._clone ? _rule._clone() : copyRule(_rule);\n ctx = null;\n isCopy = true;\n }\n }\n }\n if (!ctx) {\n const rule = this.parseRule(_rule);\n ctx = new RuleContext(this, rule, isInit ? defaultValue : rule.value);\n this.bindParser(ctx);\n } else {\n if (ctx.originType !== ctx.rule.type) {\n ctx.updateType();\n this.bindParser(ctx);\n }\n this.appendValue(ctx.rule);\n }\n [false, true].forEach(b => this.parseEmit(ctx, b));\n this.syncProp(ctx);\n ctx.parent = parent || null;\n ctx.root = rules;\n this.setCtx(ctx);\n\n !isCopy && !isInit && this.effect(ctx, 'load');\n\n ctx.parser.loadChildren === false || loadChildren(ctx.rule.children, ctx);\n\n if (!parent) {\n const _preIndex = preIndex(index);\n if (_preIndex > -1 || !index) {\n this.sort.splice(_preIndex + 1, 0, ctx.id);\n } else {\n this.sort.push(ctx.id);\n }\n }\n\n const r = ctx.rule;\n if (!ctx.updated) {\n ctx.updated = true;\n if (is.Function(r.update)) {\n this.bus.$once('load-end', () => {\n this.refreshUpdate(ctx, r.value, 'init');\n });\n }\n this.effect(ctx, 'loaded');\n }\n\n if (ctx.input)\n Object.defineProperty(r, 'value', this.valueHandle(ctx));\n if (this.refreshControl(ctx)) this.cycleLoad = true;\n return ctx;\n });\n },\n refreshControl(ctx) {\n return ctx.input && ctx.rule.control && this.useCtrl(ctx);\n },\n useCtrl(ctx) {\n const controls = getCtrl(ctx), validate = [], api = this.api;\n if (!controls.length) return false;\n\n for (let i = 0; i < controls.length; i++) {\n const control = controls[i], handleFn = control.handle || ((condition[control.condition || '=='] || condition['=='])(control.value));\n if (!is.trueArray(control.rule)) continue;\n const data = {\n ...control,\n valid: invoke(() => handleFn(ctx.rule.value, api)),\n ctrl: findCtrl(ctx, control.rule),\n isHidden: is.String(control.rule[0]),\n };\n if ((data.valid && data.ctrl) || (!data.valid && !data.ctrl && !data.isHidden)) continue;\n validate.push(data);\n }\n if (!validate.length) return false;\n\n const hideLst = [];\n let flag = false;\n this.deferSyncValue(() => {\n validate.reverse().forEach(({isHidden, valid, rule, prepend, append, child, ctrl, method}) => {\n if (isHidden) {\n valid ? ctx.ctrlRule.push({\n __ctrl: true,\n children: rule,\n valid\n })\n : ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n hideLst[valid ? 'push' : 'unshift'](() => {\n if (method === 'disabled') {\n this.api.disabled(!valid, rule);\n } else if (method === 'display') {\n this.api.display(valid, rule);\n } else if (method === 'required') {\n rule.forEach(item => {\n this.api.setEffect(item, 'required', valid);\n })\n if(!valid){\n this.api.clearValidateState(rule);\n }\n } else {\n this.api.hidden(!valid, rule);\n }\n });\n return;\n }\n if (valid) {\n flag = true;\n const ruleCon = {\n type: 'fcFragment',\n native: true,\n __ctrl: true,\n children: rule,\n }\n ctx.ctrlRule.push(ruleCon);\n this.bus.$once('load-start', () => {\n // this.cycleLoad = true;\n if (prepend) {\n api.prepend(ruleCon, prepend, child)\n } else if (append || child) {\n api.append(ruleCon, append || ctx.id, child)\n } else {\n ctx.root.splice(ctx.root.indexOf(ctx.origin) + 1, 0, ruleCon);\n }\n });\n } else {\n ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n const ctrlCtx = byCtx(ctrl);\n ctrlCtx && ctrlCtx.rm();\n }\n });\n });\n hideLst.length && this.vm.$nextTick(() => {\n hideLst.forEach(v => v());\n });\n this.vm.$emit('control', ctx.origin, this.api);\n this.effect(ctx, 'control');\n return flag;\n },\n reloadRule(rules) {\n return this._reloadRule(rules);\n },\n _reloadRule(rules) {\n // console.warn('%c reload', 'color:red');\n if (!rules) rules = this.rules;\n\n const ctxs = {...this.ctxs};\n\n this.clearNextTick();\n this.$render.clearOrgChildren();\n this.initData(rules);\n this.fc.rules = rules;\n this.deferSyncValue(() => {\n this.bus.$once('load-end', () => {\n Object.keys(ctxs).filter(id => this.ctxs[id] === undefined)\n .forEach(id => this.rmCtx(ctxs[id]));\n this.$render.clearCacheAll();\n });\n this.reloading = true;\n this.loadRule();\n this.reloading = false;\n this.refresh();\n this.vm.$emit('reloading', this.api);\n });\n this.bus.$off('next-tick', this.nextReload);\n this.bus.$once('next-tick', this.nextReload);\n this.vm.$emit('update', this.api);\n },\n //todo 组件生成全部通过 alias\n refresh() {\n this.vm._refresh();\n },\n });\n}\n\nfunction fullRule(rule) {\n const def = baseRule();\n\n Object.keys(def).forEach(k => {\n if (!hasProperty(rule, k)) $set(rule, k, def[k]);\n });\n return rule;\n}\n\nfunction getCtrl(ctx) {\n const control = ctx.rule.control || [];\n if (is.Object(control)) return [control];\n else return control;\n}\n\nfunction findCtrl(ctx, rule) {\n for (let i = 0; i < ctx.ctrlRule.length; i++) {\n const ctrl = ctx.ctrlRule[i];\n if (ctrl.children === rule)\n return ctrl;\n }\n}\n\nfunction isCtrl(ctx) {\n return !!ctx.rule.__ctrl;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport {$set} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nexport default function useInput(Handler) {\n extend(Handler.prototype, {\n getValue(ctx) {\n if (is.Undef(ctx.cacheValue)) {\n ctx.cacheValue = ctx.parser.toValue(this.getFormData(ctx), ctx);\n }\n return ctx.cacheValue;\n },\n setValue(ctx, value, formValue, setFlag) {\n if (ctx.deleted) return;\n ctx.cacheValue = value;\n this.changeStatus = true;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n this.setFormData(ctx, formValue);\n this.syncValue();\n this.valueChange(ctx, value);\n this.vm.$emit('change', ctx.field, value, ctx.origin, this.api, setFlag || false);\n this.effect(ctx, 'value');\n },\n onInput(ctx, value) {\n let val;\n if (ctx.input && (this.isQuote(ctx, val = ctx.parser.toValue(value, ctx)) || this.isChange(ctx, val))) {\n this.setValue(ctx, val, value);\n }\n },\n setFormData(ctx, value) {\n $set(this.formData, ctx.id, value === null ? undefined : value);\n },\n getFormData(ctx) {\n return this.formData[ctx.id];\n },\n validate() {\n toEmpty(this.vm.validate);\n this.fields().forEach(id => {\n this.fieldCtx[id].forEach(ctx => {\n this.vm.validate[ctx.id] = toArray(ctx.rule.validate);\n });\n });\n return this.vm.validate;\n },\n syncForm() {\n toEmpty(this.form);\n Object.defineProperties(this.form, this.fields().reduce((initial, field) => {\n const ctx = this.getFieldCtx(field);\n const handle = this.valueHandle(ctx);\n handle.configurable = true;\n initial[field] = handle;\n return initial;\n }, this.options.appendValue ? Object.keys(this.appendData).reduce((initial, field) => {\n initial[field] = {\n enumerable: true,\n configurable: true,\n get: () => {\n return this.appendData[field];\n },\n set: (val) => {\n this.appendData[field] = val;\n }\n }\n return initial;\n }, {}) : {}));\n this.syncValue();\n },\n valueHandle(ctx) {\n return {\n enumerable: true,\n get: () => {\n return this.getValue(ctx);\n },\n set: (value) => {\n if (this.isChange(ctx, value)) {\n this.setValue(ctx, value, ctx.parser.toFormValue(value, ctx), true);\n }\n }\n };\n },\n appendValue(rule) {\n if (!rule.field || !hasProperty(this.appendData, rule.field)) return;\n rule.value = this.appendData[rule.field];\n delete this.appendData[rule.field];\n },\n addSubForm(ctx, subForm) {\n this.subForm[ctx.id] = subForm;\n },\n deferSyncValue(fn, sync) {\n if (!this.deferSyncFn) {\n this.deferSyncFn = fn;\n }\n if (!this.deferSyncFn.sync) {\n this.deferSyncFn.sync = sync;\n }\n invoke(fn);\n if (this.deferSyncFn === fn) {\n this.deferSyncFn = null;\n if (fn.sync) {\n this.syncValue();\n }\n }\n },\n syncValue() {\n if (this.deferSyncFn) {\n return this.deferSyncFn.sync = true;\n }\n this.vm._updateValue({...(this.options.appendValue ? this.appendData : {}), ...this.form});\n },\n isChange(ctx, value) {\n return JSON.stringify(ctx.rule.value, strFn) !== JSON.stringify(value === null ? undefined : value, strFn);\n },\n isQuote(ctx, value) {\n return (is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;\n },\n refreshUpdate(ctx, val, origin) {\n if (is.Function(ctx.rule.update)) {\n const state = invoke(() => ctx.rule.update(val, ctx.origin, this.api, {origin: origin || 'change'}));\n if (state === undefined) return;\n ctx.rule.hidden = state === true;\n }\n },\n valueChange(ctx, val) {\n this.refreshRule(ctx, val);\n this.bus.$emit('change-' + ctx.field, val);\n },\n refreshRule(ctx, val, origin) {\n if (this.refreshControl(ctx)) {\n this.$render.clearCacheAll();\n this.loadRule();\n this.vm.$emit('update', this.api);\n this.refresh();\n }\n this.refreshUpdate(ctx, val, origin);\n },\n appendLink(ctx) {\n const link = ctx.rule.link;\n is.trueArray(link) && link.forEach(field => {\n const fn = () => this.refreshRule(ctx, ctx.rule.value, 'link');\n\n this.bus.$on('change-' + field, fn);\n ctx.linkOn.push(() => this.bus.$off('change-' + field, fn));\n });\n },\n fields() {\n return Object.keys(this.fieldCtx);\n },\n });\n}\n\n\nfunction strFn(key, val) {\n return typeof val === 'function' ? '' + val : val;\n}\n\nfunction toEmpty(obj) {\n Object.keys(obj).forEach(k => delete obj[k]);\n}\n","const BaseParser = {\n init(ctx) {\n },\n toFormValue(value, ctx) {\n return value\n },\n toValue(formValue, ctx) {\n return formValue;\n },\n mounted(ctx) {\n },\n render(children, ctx) {\n return ctx.$render.defaultRender(ctx, children);\n },\n preview(children, ctx) {\n return this.render(children, ctx);\n },\n mergeProp(ctx) {\n }\n}\n\nexport default BaseParser;\n","import extend from '@form-create/utils/lib/extend';\nimport toCase from '@form-create/utils/lib/tocase';\nimport BaseParser from '../factory/parser';\nimport {$del} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\n\nconst noneKey = ['field', 'value', 'vm', 'template', 'name', 'config', 'control', 'inject', 'sync', 'payload', 'optionsTo', 'update', 'component', 'cache'];\n\nexport default function useContext(Handler) {\n extend(Handler.prototype, {\n getCtx(id) {\n return this.getFieldCtx(id) || this.getNameCtx(id)[0] || this.ctxs[id];\n },\n getCtxs(id) {\n return this.fieldCtx[id] || this.nameCtx[id] || (this.ctxs[id] ? [this.ctxs[id]] : []);\n },\n setIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n if (!this[field][key]) {\n this[field][key] = [ctx];\n } else {\n this[field][key].push(ctx);\n }\n },\n rmIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n const lst = this[field][key];\n if (!lst) return false;\n const flag = lst.splice(lst.indexOf(ctx) >>> 0, 1).length > 0;\n if (!lst.length) {\n delete this[field][key];\n }\n return flag;\n },\n getFieldCtx(field) {\n return (this.fieldCtx[field] || [])[0];\n },\n getNameCtx(name) {\n return this.nameCtx[name] || [];\n },\n setCtx(ctx) {\n let {id, field, name, rule} = ctx;\n this.ctxs[id] = ctx;\n name && this.setIdCtx(ctx, name, 'name');\n if (!ctx.input) return;\n this.setIdCtx(ctx, field, 'field');\n this.setFormData(ctx, ctx.parser.toFormValue(rule.value, ctx));\n if (this.isMounted && !this.reloading) {\n this.vm.$emit('change', ctx.field, rule.value, ctx.origin, this.api);\n }\n },\n getParser(ctx) {\n const list = this.fc.parsers;\n return list[ctx.originType] || list[toCase(ctx.type)] || list[ctx.trueType] || BaseParser;\n },\n bindParser(ctx) {\n ctx.setParser(this.getParser(ctx));\n },\n getType(alias) {\n const map = this.fc.CreateNode.aliasMap;\n const type = map[alias] || map[toCase(alias)] || alias;\n return toCase(type);\n },\n noWatch(fn) {\n if (!this.noWatchFn) {\n this.noWatchFn = fn;\n }\n invoke(fn);\n if (this.noWatchFn === fn) {\n this.noWatchFn = null;\n }\n },\n watchCtx(ctx) {\n const vm = this.vm;\n Object.keys(ctx.rule).filter(k => k[0] !== '_' && k[0] !== '$' && noneKey.indexOf(k) === -1).forEach((key) => {\n const flag = key === 'children';\n ctx.watch.push(vm.$watch(() => ctx.rule[key], (n, o) => {\n if (this.loading || this.noWatchFn || this.reloading) return;\n if (flag && ctx.parser.loadChildren === false) {\n this.$render.clearCache(ctx);\n this.nextRefresh();\n return;\n }\n this.watching = true;\n // if (key === 'hidden')\n // ctx.updateKey(true);\n // else\n if (key === 'link') {\n ctx.link();\n return;\n } else if (['props', 'on', 'nativeOn', 'deep'].indexOf(key) > -1) {\n this.parseInjectEvent(ctx.rule, n || {});\n if (key === 'props' && ctx.input) {\n this.setFormData(ctx, ctx.parser.toFormValue(ctx.rule.value, ctx));\n }\n } else if (['emit', 'nativeEmit'].indexOf(key) > -1)\n this.parseEmit(ctx, key === 'emit');\n else if (['prefix', 'suffix'].indexOf(key) > -1)\n n && this.loadFn(n, ctx.rule);\n else if (key === 'type') {\n ctx.updateType();\n this.bindParser(ctx);\n } else if (key === 'children') {\n const flag = is.trueArray(n);\n this.deferSyncValue(() => {\n if (n !== o) {\n this.rmSub(o, ctx);\n this.$render.initOrgChildren();\n }\n flag && this.loadChildren(n, ctx);\n this.vm.$emit('update', this.api);\n });\n }\n this.$render.clearCache(ctx);\n this.refresh();\n this.watching = false;\n }, {deep: !flag, sync: flag}));\n });\n this.watchEffect(ctx);\n },\n rmSub(sub, ctx) {\n is.trueArray(sub) && sub.forEach(r => {\n r && r.__fc__ && r.__fc__.parent === ctx && this.rmCtx(r.__fc__);\n })\n },\n rmCtx(ctx) {\n if (ctx.deleted) return;\n const {id, field, input, name} = ctx;\n if (ctx.input) {\n Object.defineProperty(ctx.rule, 'value', {\n value: ctx.rule.value,\n writable: true\n });\n }\n\n $del(this.ctxs, id);\n $del(this.$render.tempList, id);\n $del(this.$render.orgChildren, id);\n $del(this.vm.ctxInject, id);\n $del(this.formData, id);\n $del(this.subForm, id);\n $del(ctx, 'cacheValue');\n\n input && this.rmIdCtx(ctx, field, 'field');\n name && this.rmIdCtx(ctx, name, 'name');\n\n if (input && !hasProperty(this.fieldCtx, field)) {\n $del(this.form, field);\n }\n\n this.deferSyncValue(() => {\n if (!this.reloading) {\n if (ctx.parser.loadChildren !== false) {\n if (is.trueArray(ctx.rule.children)) {\n ctx.rule.children.forEach(h => h.__fc__ && this.rmCtx(h.__fc__));\n }\n }\n if (ctx.root === this.rules) {\n this.vm._renderRule();\n }\n }\n }, input);\n\n const index = this.sort.indexOf(id);\n if (index > -1) {\n this.sort.splice(index, 1);\n }\n\n this.$render.clearCache(ctx);\n ctx.delete();\n this.effect(ctx, 'deleted');\n input && !this.fieldCtx[field] && this.vm.$emit('removeField', field, ctx.rule, this.api);\n ctx.rule.__ctrl || this.vm.$emit('removeRule', ctx.rule, this.api);\n return ctx;\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\n\n\nexport default function useLifecycle(Handler) {\n extend(Handler.prototype, {\n mounted() {\n const _mounted = () => {\n this.isMounted = true;\n this.lifecycle('mounted');\n }\n if (this.pageEnd) {\n _mounted();\n } else {\n this.bus.$once('page-end', _mounted);\n }\n },\n lifecycle(name) {\n const fn = this.options[name];\n is.Function(fn) && invoke(() => fn(this.api));\n this.vm.$emit(name, this.api);\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {mergeRule} from '../frame/util';\n\n\nexport default function useEffect(Handler) {\n extend(Handler.prototype, {\n useProvider() {\n const ps = this.fc.providers;\n Object.keys(ps).forEach(k => {\n let prop = ps[k];\n if (is.Function(prop)) {\n prop = prop(this.fc);\n }\n prop._c = getComponent(prop);\n this.onEffect(prop);\n this.providers[k] = prop;\n });\n },\n onEffect(provider) {\n const used = [];\n (provider._c || ['*']).forEach(name => {\n const type = name === '*' ? '*' : this.getType(name);\n if (used.indexOf(type) > -1) return;\n used.push(type);\n this.bus.$on(`p:${provider.name}:${type}:${provider.input ? 1 : 0}`, (event, args) => {\n provider[event] && provider[event](...args);\n });\n });\n provider._used = used;\n },\n watchEffect(ctx) {\n const vm = this.vm;\n let effect = {\n required: () => {\n return (hasProperty(ctx.rule, '$required') ? ctx.rule['$required'] : ctx.rule?.effect?.required) || false;\n }\n };\n Object.keys(ctx.rule.effect || {}).forEach(k => {\n effect[k] = () => ctx.rule.effect[k];\n })\n Object.keys(ctx.rule).forEach(k => {\n if (k[0] === '$') {\n effect[k.substr(1)] = () => ctx.rule[k];\n }\n })\n Object.keys(effect || {}).forEach(k => {\n ctx.watch.push(vm.$watch(effect[k], (n) => {\n this.effect(ctx, 'watch', {[k]: n});\n }, {deep: true}));\n });\n },\n ruleEffect(rule, event, append) {\n this.emitEffect({\n rule,\n input: !!rule.field,\n type: this.getType(rule.type)\n }, event, append);\n },\n effect(ctx, event, custom) {\n this.emitEffect({\n rule: ctx.rule,\n input: ctx.input,\n type: ctx.trueType,\n ctx,\n custom\n }, event);\n },\n getEffect(rule, name) {\n if (hasProperty(rule, '$' + name)) {\n return rule['$' + name];\n }\n if (hasProperty(rule, 'effect') && hasProperty(rule.effect, name))\n return rule.effect[name];\n return undefined;\n },\n emitEffect({ctx, rule, input, type, custom}, event, append) {\n if (!type || type === 'fcFragment') return;\n const effect = custom ? custom : (Object.keys(rule).reduce((i, k) => {\n if (k[0] === '$') {\n i[k.substr(1)] = rule[k];\n }\n return i;\n }, {...rule.effect || {}}));\n Object.keys(effect).forEach(attr => {\n const p = this.providers[attr];\n if (!p || (p.input && !input)) return;\n let _type;\n if (!p._c) {\n _type = '*';\n } else if (p._used.indexOf(type) > -1) {\n _type = type;\n } else {\n return;\n }\n const data = {value: effect[attr], getValue: () => this.getEffect(rule, attr), ...(append || {})};\n if (ctx) {\n data.getProp = () => ctx.effectData(attr);\n data.clearProp = () => ctx.clearEffectData(attr);\n data.mergeProp = (prop) => mergeRule(data.getProp(), [prop]);\n }\n this.bus.$emit(`p:${attr}:${_type}:${p.input ? 1 : 0}`, event, [data, rule, this.api]);\n });\n }\n });\n}\n\nfunction unique(arr) {\n return arr.filter(function (item, index, arr) {\n return arr.indexOf(item, 0) === index;\n });\n}\n\nfunction getComponent(p) {\n const c = p.components;\n if (Array.isArray(c)) return unique(c.filter(v => v !== '*'));\n else if (is.String(c)) return [c];\n else return false;\n}\n","import Api from '../frame/api';\nimport Render from '../render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\nimport useInject from './inject';\nimport usePage from './page';\nimport useRender from './render';\nimport useLoader from './loader';\nimport useInput from './input';\nimport useContext from './context';\nimport useLifecycle from './lifecycle';\nimport useEffect from './effect';\n\n\nexport default function Handler(fc) {\n extend(this, {\n fc,\n vm: fc.vm,\n watching: false,\n loading: false,\n reloading: false,\n noWatchFn: null,\n deferSyncFn: null,\n isMounted: false,\n formData: {},\n subForm: {},\n form: {},\n appendData: {},\n providers: {},\n cycleLoad: null,\n loadedId: 1,\n nextTick: null,\n changeStatus: false,\n pageEnd: true,\n nextReload: () => {\n this.lifecycle('reload');\n }\n });\n\n funcProxy(this, {\n options() {\n return fc.options;\n },\n bus() {\n return fc.bus;\n },\n })\n\n this.initData(fc.rules);\n\n this.$manager = new fc.manager(this);\n this.$render = new Render(this);\n this.api = fc.extendApi(Api(this), this);\n}\n\nextend(Handler.prototype, {\n initData(rules) {\n extend(this, {\n ctxs: {},\n fieldCtx: {},\n nameCtx: {},\n sort: [],\n rules,\n });\n },\n init() {\n this.appendData = {...this.fc.options.formData || {}, ...this.vm.value || {}, ...this.appendData};\n this.useProvider();\n this.usePage();\n this.loadRule();\n this.$manager.__init();\n this.vm.$set(this.vm, 'formData', this.formData);\n },\n})\n\nuseInject(Handler);\nusePage(Handler);\nuseRender(Handler);\nuseLoader(Handler);\nuseInput(Handler);\nuseContext(Handler);\nuseLifecycle(Handler);\nuseEffect(Handler);\n","// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js\n\nfunction getError(action, option, xhr) {\n const msg = `fail to ${action} ${xhr.status}'`;\n const err = new Error(msg);\n err.status = xhr.status;\n err.url = action;\n return err;\n}\n\nfunction getBody(xhr) {\n const text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function fetch(option) {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n\n const xhr = new XMLHttpRequest();\n const action = option.action;\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr));\n };\n\n xhr.open(option.method || 'get', action, true);\n\n let formData;\n if (option.data) {\n if ((option.dataType || '').toLowerCase() !== 'json') {\n formData = new FormData();\n Object.keys(option.data).map(key => {\n formData.append(key, option.data[key]);\n });\n } else {\n formData = JSON.stringify(option.data);\n xhr.setRequestHeader('content-type', 'application/json');\n }\n }\n\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n const headers = option.headers || {};\n\n Object.keys(headers).forEach(item => {\n if (headers[item] !== null) {\n xhr.setRequestHeader(item, headers[item]);\n }\n });\n xhr.send(formData);\n}\n","const NAME = 'fcFragment';\n\nexport default {\n name: NAME,\n functional: true,\n props: ['vnode'],\n render(h, ctx) {\n return ctx.props.vnode ? ctx.props.vnode : ctx.children\n }\n}\n","import toLine from '@form-create/utils/lib/toline';\nimport is from '@form-create/utils/lib/type';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\nimport Vue from 'vue';\n\nfunction parseProp(prop) {\n if (is.String(prop))\n return {domProps: {innerHTML: prop}};\n return prop;\n}\n\nexport function CreateNodeFactory() {\n\n const aliasMap = {};\n\n function CreateNode(vm) {\n vm && this.setVm(vm);\n }\n\n extend(CreateNode.prototype, {\n setVm(vm) {\n this.vm = vm;\n this.$h = vm.$createElement;\n },\n make(tag, data, children) {\n if (Vue.config.isReservedTag(tag) && data.nativeOn) delete data.nativeOn;\n return this.makeComponent(tag, data, children);\n },\n makeComponent(type, data, children) {\n let Node = this.$h(type, parseProp(data), children || []);\n Node.context = this.vm;\n return Node;\n },\n aliasMap\n });\n\n extend(CreateNode, {\n aliasMap,\n alias(alias, name) {\n aliasMap[alias] = name;\n },\n use(nodes) {\n Object.keys(nodes).forEach((k) => {\n const line = toLine(k);\n const lower = toString(k).toLocaleLowerCase();\n const v = nodes[k];\n [k, line, lower].forEach(n => {\n CreateNode.alias(k, v);\n CreateNode.prototype[n] = function (data, children) {\n return this.make(v, data, children);\n };\n });\n });\n }\n })\n\n return CreateNode;\n}\n","import mergeProps from '@form-create/utils/lib/mergeprops';\nimport unique from '@form-create/utils/lib/unique';\nimport extend from '@form-create/utils/lib/extend';\n\nexport function createManager(proto) {\n class CustomManager extends Manager {\n }\n\n Object.assign(CustomManager.prototype, proto);\n return CustomManager;\n}\n\nexport default function Manager(handler) {\n extend(this, {\n $handle: handler,\n vm: handler.vm,\n options: {},\n ref: 'fcForm',\n mergeOptionsRule: {\n normal: ['form', 'row', 'info', 'submitBtn', 'resetBtn']\n }\n });\n this.updateKey();\n this.init();\n}\n\nextend(Manager.prototype, {\n __init() {\n this.$render = this.$handle.$render;\n this.$r = (...args) => this.$render.renderRule(...args);\n },\n updateKey() {\n this.key = unique();\n },\n //TODO interface\n init() {\n },\n update() {\n },\n beforeRender() {\n },\n form() {\n return this.vm.$refs[this.ref];\n },\n mergeOptions(args, opt) {\n return mergeProps(args.map(v => this.tidyOptions(v)), opt, this.mergeOptionsRule);\n },\n updateOptions(options) {\n this.options = this.mergeOptions([options], this.getDefaultOptions());\n this.update();\n },\n tidyOptions(options) {\n return options;\n },\n tidyRule(ctx) {\n },\n mergeProp(ctx) {\n },\n getDefaultOptions() {\n return {};\n },\n render(children) {\n }\n})\n","import {err} from '@form-create/utils/lib/console';\nimport {byCtx, invoke} from './util';\nimport is from '@form-create/utils/lib/type';\nimport deepSet from '@form-create/utils/lib/deepset';\n\nconst componentValidate = {\n name: 'componentValidate',\n load(attr, rule, api) {\n const method = attr.getValue();\n if (!method) {\n attr.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n attr.getProp().validate = [{\n validator(...args) {\n const ctx = byCtx(rule);\n if (ctx) {\n return api.exec(ctx.id, method === true ? 'formCreateValidate' : method, ...args, {\n attr,\n rule,\n api\n });\n }\n }\n }];\n }\n },\n watch(...args) {\n componentValidate.load(...args);\n }\n};\n\nconst fetch = function (fc) {\n\n function parseOpt(option) {\n if (is.String(option)) {\n option = {\n action: option,\n to: 'options'\n }\n }\n return option;\n }\n\n function run(inject, rule, api) {\n let option = inject.value;\n if (is.Function(option)) {\n option = option(rule, api);\n }\n option = parseOpt(option);\n if (!option || !option.action) {\n return false;\n }\n if (!option.to) {\n option.to = 'options';\n }\n const onError = option.onError;\n\n const check = () => {\n if (!inject.getValue()) {\n inject.clearProp();\n api.sync(rule);\n return true;\n }\n }\n\n const set = (val) => {\n if (val === undefined) {\n inject.clearProp();\n api.sync(rule);\n } else {\n deepSet(inject.getProp(), option.to, val);\n }\n }\n\n invoke(() => fc.create.fetch({\n ...option,\n onSuccess(body) {\n if (check()) return;\n let fn = (v) => v.data;\n if (is.Function(option.parse)) {\n fn = option.parse;\n }\n set(fn(body, rule, api))\n api.sync(rule);\n },\n onError(e) {\n set(undefined)\n if (check()) return;\n (onError || ((e) => err(e.message || 'fetch fail ' + option.action)))(e, rule, api);\n }\n }, {inject, rule, api}));\n return true;\n }\n\n return {\n name: 'fetch',\n loaded(...args) {\n run(...args);\n },\n watch(inject, rule, api) {\n if (!run(inject, rule, api)) {\n inject.clearProp();\n api.sync(rule);\n }\n }\n };\n}\n\n\nconst $required = {\n name: 'required',\n load(inject, rule, api) {\n const val = parseVal(inject.getValue());\n if (val.required === false) {\n inject.clearProp();\n } else {\n const validate = {\n required: true,\n validator(_, v, call) {\n is.empty(v) ? call(validate.message) : call();\n },\n ...val,\n };\n if (!validate.message) {\n let title = rule.title || '';\n validate.message = ((typeof title === 'object' ? title.title : title) || '') + '不能为空';\n }\n inject.getProp().validate = [validate];\n }\n api.sync(rule);\n },\n watch(...args) {\n $required.load(...args);\n }\n}\n\nfunction parseVal(val) {\n if (is.Boolean(val)) {\n return {required: val}\n } else if (is.String(val)) {\n return {message: val};\n } else if (is.Undef(val)) {\n return {required: false};\n } else if (is.Function(val)) {\n return {validator: val};\n } else if (!is.Object(val)) {\n return {};\n } else {\n return val;\n }\n}\n\nexport default {\n fetch,\n required: $required,\n componentValidate,\n};\n","import is from '@form-create/utils/lib/type';\n\nconst name = 'html';\n\nexport default {\n name,\n loadChildren: false,\n render(children, ctx) {\n if (!ctx.prop.domProps) ctx.prop.domProps = {};\n ctx.prop.domProps.innerHTML = children;\n return ctx.vNode.make(ctx.prop.props.tag || 'div', ctx.prop);\n },\n renderChildren(ctx) {\n if (Array.isArray(ctx.rule.children)) {\n return ctx.rule.children.filter(v => is.String(v)).join('');\n }\n return '';\n }\n}\n","import $FormCreate from '../components/formCreate';\nimport Vue from 'vue';\nimport makerFactory from '../factory/maker';\nimport Handle from '../handler';\nimport fetch from './fetch';\nimport {creatorFactory} from '..';\nimport BaseParser from '../factory/parser';\nimport {copyRule, copyRules, mergeGlobal, parseJson, toJson, parseFn} from './util';\nimport fragment from '../components/fragment';\nimport is from '@form-create/utils/lib/type';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {CreateNodeFactory} from '../factory/node';\nimport {createManager} from '../factory/manager';\nimport {arrayAttrs, keyAttrs, normalAttrs} from './attrs';\nimport {appendProto} from '../factory/creator';\nimport $provider from './provider';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport html from '../parser/html';\n\nexport let _vue = typeof window !== 'undefined' && window.Vue ? window.Vue : Vue;\n\nfunction _parseProp(name, id) {\n let prop;\n if (arguments.length === 2) {\n prop = arguments[1];\n id = prop[name];\n } else {\n prop = arguments[2];\n }\n return {id, prop};\n}\n\nfunction nameProp() {\n return _parseProp('name', ...arguments);\n}\n\nfunction _getEl(options) {\n if (!options || !options.el) return window.document.body;\n return is.Element(options.el)\n ? options.el\n : document.querySelector(options.el);\n}\n\nfunction mountForm(rules, option) {\n const $vm = new _vue({\n data() {\n //todo 外部无法修改\n return {rule: rules, option: option || {}};\n },\n render(h) {\n return h('FormCreate', {ref: 'fc', props: this.$data});\n }\n });\n $vm.$mount();\n return $vm;\n}\n\nfunction exportAttrs(attrs) {\n const key = attrs.key || [];\n const array = attrs.array || [];\n const normal = attrs.normal || [];\n keyAttrs.push(...key);\n arrayAttrs.push(...array);\n normalAttrs.push(...normal);\n\n appendProto([...key, ...array, ...normal]);\n}\n\nlet id = 1;\nconst instance = {};\n\n//todo 表单嵌套\nexport default function FormCreateFactory(config) {\n\n const components = {\n [fragment.name]: fragment\n };\n const parsers = {};\n const directives = {};\n const providers = {\n ...$provider\n };\n const maker = makerFactory();\n let globalConfig = {global: {}};\n const data = {};\n const CreateNode = CreateNodeFactory();\n\n exportAttrs(config.attrs || {});\n\n function getApi(name) {\n const val = instance[name];\n if (Array.isArray(val))\n return [...val];\n return val;\n }\n\n function directive() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) directives[data.id] = data.prop;\n }\n\n function register() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) providers[data.id] = {...data.prop, name: data.id};\n }\n\n function componentAlias(alias) {\n CreateNode.use(alias);\n }\n\n function parser() {\n const data = nameProp(...arguments);\n if (!data.id || !data.prop) return;\n const name = toCase(data.id);\n const parser = data.prop;\n const base = parser.merge === true ? parsers[name] : undefined;\n parsers[name] = {...(base || BaseParser), ...parser};\n maker[name] = creatorFactory(name);\n parser.maker && extend(maker, parser.maker);\n }\n\n function component(id, component) {\n let name;\n if (is.String(id)) {\n name = toCase(id);\n if (['form-create', 'formcreate'].indexOf(name) > -1) {\n return $form();\n } else if (component === undefined) {\n return components[name];\n }\n } else {\n name = toCase(id.name);\n component = id;\n }\n if (!name || !component) return;\n components[name] = component;\n if (component.formCreateParser) parser(name, component.formCreateParser);\n }\n\n function $form() {\n return _vue.extend($FormCreate(FormCreate));\n }\n\n function $vnode() {\n return _vue.extend(fragment);\n }\n\n //todo 检查回调函数作用域\n function use(fn, opt) {\n if (is.Function(fn.install)) fn.install(create, opt);\n else if (is.Function(fn)) fn(create, opt);\n return this;\n }\n\n function create(rules, _opt, parent) {\n let $vm = mountForm(rules, _opt || {});\n const _this = $vm.$refs.fc.formCreate;\n _this.$parent = parent;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n }\n\n function factory(inherit) {\n let _config = {...config};\n if (inherit) {\n _config.inherit = {\n components,\n parsers,\n directives,\n providers,\n maker,\n data\n }\n } else {\n delete _config.inherit;\n }\n return FormCreateFactory(_config);\n }\n\n function FormCreate(vm, rules, options) {\n extend(this, {\n id: id++,\n vm,\n create,\n manager: createManager(config.manager),\n parsers,\n providers,\n rules: Array.isArray(rules) ? rules : [],\n name: vm.$options.propsData.name,\n inFor: vm.$options.propsData.inFor,\n prop: {\n components,\n directives,\n },\n CreateNode,\n bus: new _vue,\n unwatch: null,\n options: options || {},\n extendApi: config.extendApi || (api => api)\n })\n this.init();\n this.initOptions(this.options);\n if (this.name) {\n if (this.inFor) {\n if (!instance[this.name]) instance[this.name] = [];\n instance[this.name].push(this.api());\n } else {\n instance[this.name] = this.api();\n }\n }\n }\n\n extend(FormCreate.prototype, {\n init() {\n const vm = this.vm;\n const h = new Handle(this);\n this.$handle = h;\n vm.$f = h.api;\n vm.$emit('input', h.api);\n\n vm.$on('hook:created', () => {\n if (this.isSub()) {\n this.unwatch = vm.$watch(() => vm.$pfc.option, () => {\n this.initOptions(this.options);\n vm.$f.refresh();\n }, {deep: true});\n this.initOptions(this.options);\n }\n this.created();\n })\n vm.$on('hook:mounted', () => {\n this.mounted();\n });\n vm.$on('hook:beforeDestroy', () => {\n vm.destroyed = true;\n this.unwatch && this.unwatch();\n h.reloadRule([]);\n if (this.name) {\n if (this.inFor) {\n const idx = instance[this.name].indexOf(this.api());\n instance[this.name].splice(idx, 1);\n } else {\n delete instance[this.name];\n }\n }\n });\n vm.$on('hook:updated', () => {\n h.bindNextTick(() => this.bus.$emit('next-tick', h.api));\n });\n },\n isSub() {\n return this.vm.$pfc && this.vm.extendOption;\n },\n initOptions(options) {\n this.options = {formData: {}, submitBtn: {}, resetBtn: {}, ...deepCopy(globalConfig)};\n if (this.isSub()) {\n this.mergeOptions(this.options, this.vm.$pfc.$f.config || {}, true);\n }\n this.updateOptions(options);\n },\n mergeOptions(target, opt, parent) {\n opt = deepCopy(opt);\n parent && ['page', 'onSubmit', 'mounted', 'reload', 'formData', 'el'].forEach((n) => {\n delete opt[n];\n });\n if (opt.global) {\n target.global = mergeGlobal(target.global, opt.global);\n delete opt.global;\n }\n this.$handle.$manager.mergeOptions([opt], target);\n return target;\n },\n updateOptions(options) {\n this.mergeOptions(this.options, options);\n this.$handle.$manager.updateOptions(this.options);\n },\n created() {\n this.$handle.init();\n this.vm.$emit('created', this.api());\n },\n api() {\n return this.$handle.api;\n },\n render() {\n return this.$handle.render();\n },\n mounted() {\n this.$handle.mounted();\n },\n })\n\n\n function useAttr(formCreate) {\n extend(formCreate, {\n version: config.version,\n ui: config.ui,\n data,\n maker,\n component,\n directive,\n register,\n $vnode,\n parser,\n use,\n factory,\n componentAlias,\n copyRule,\n copyRules,\n fetch,\n $form,\n parseFn,\n parseJson,\n toJson,\n getApi,\n init(rules, _opt = {}) {\n let $vm = mountForm(rules, _opt), _this = $vm.$refs.fc.formCreate;\n return {\n mount($el) {\n if ($el && is.Element($el))\n _this.options.el = $el;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n },\n remove() {\n $vm.$el.parentNode && $vm.$el.parentNode.removeChild($vm.$el);\n },\n destroy() {\n this.remove();\n $vm.$destroy();\n },\n $f: _this.api()\n };\n }\n });\n }\n\n function useStatic(formCreate) {\n extend(formCreate, {\n create,\n install(Vue, options) {\n globalConfig = {...globalConfig, ...(options || {})}\n if (Vue._installedFormCreate === true) return;\n Vue._installedFormCreate = true;\n _vue = Vue;\n\n const $formCreate = function (rules, opt = {}) {\n return create(rules, opt, this);\n };\n\n useAttr($formCreate);\n\n Vue.prototype.$formCreate = $formCreate;\n Vue.component('FormCreate', $form());\n Vue.component('FcFragment', $vnode());\n }\n })\n }\n\n useAttr(create);\n useStatic(create);\n\n CreateNode.use({fragment: 'fcFragment'});\n\n parser(html);\n\n if (config.install) create.use(config);\n\n if (config.inherit) {\n const inherit = config.inherit;\n inherit.components && extend(components, inherit.components);\n inherit.parsers && extend(parsers, inherit.parsers);\n inherit.directives && extend(directives, inherit.directives);\n inherit.providers && extend(providers, inherit.providers);\n inherit.maker && extend(maker, inherit.maker);\n inherit.data && extend(data, inherit.data);\n }\n\n return create;\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst DEFAULT_FORMATS = {\n date: 'yyyy-MM-dd',\n month: 'yyyy-MM',\n datetime: 'yyyy-MM-dd HH:mm:ss',\n timerange: 'HH:mm:ss',\n daterange: 'yyyy-MM-dd',\n monthrange: 'yyyy-MM',\n datetimerange: 'yyyy-MM-dd HH:mm:ss',\n year: 'yyyy'\n};\n\nconst name = 'datePicker';\n\nexport default {\n name,\n maker: (function () {\n return ['year', 'month', 'date', 'dates', 'week', 'datetime', 'datetimeRange', 'dateRange', 'monthRange'].reduce((initial, type) => {\n initial[type] = creatorFactory(name, {type: type.toLowerCase()});\n return initial\n }, {});\n }()),\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!props.valueFormat) {\n props.valueFormat = DEFAULT_FORMATS[props.type] || DEFAULT_FORMATS['date'];\n }\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'hidden';\nexport default {\n name,\n maker: {\n [name]: (field, value) => creatorFactory(name)('', field, value)\n },\n render() {\n return [];\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'input';\nexport default {\n name,\n maker: (function () {\n const maker = ['password', 'url', 'email', 'text', 'textarea'].reduce((maker, type) => {\n maker[type] = creatorFactory(name, {type});\n return maker;\n }, {});\n\n maker.idate = creatorFactory(name, {type:'date'});\n return maker;\n }()),\n mergeProp(ctx) {\n let {props} = ctx.prop;\n if (props && props.autosize && props.autosize.minRows) {\n props.rows = props.autosize.minRows || 2;\n }\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'slider';\n\nexport default {\n name,\n maker: {\n sliderRange: creatorFactory(name, {range:true})\n },\n toFormValue(value, ctx) {\n let isArr = Array.isArray(value), props = ctx.prop.props, min = props.min || 0,\n parseValue;\n if (props.range === true) {\n parseValue = isArr ? value : [min, (parseFloat(value) || min)];\n } else {\n parseValue = isArr ? (parseFloat(value[0]) || min) : parseFloat(value);\n }\n return parseValue;\n }\n\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'timePicker';\n\nexport default {\n name,\n maker: {\n time: creatorFactory(name, (m) => m.props.isRange = false),\n timeRange: creatorFactory(name, (m) => m.props.isRange = true)\n },\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!props.valueFormat) {\n props.valueFormat = 'HH:mm:ss';\n }\n }\n}\n","export default {\n name: 'FcRow',\n render(_, ctx) {\n return ctx.vNode.col({props: {span: 24}}, [\n ctx.vNode.row(ctx.prop, _)\n ])\n }\n}","import toArray from '@form-create/utils/lib/toarray';\n\nconst name = 'select';\n\nexport default {\n name,\n toFormValue(value, ctx) {\n if (ctx.prop.props.multiple && !Array.isArray(value)) {\n return toArray(value)\n } else {\n return value;\n }\n }\n\n}\n","import datePicker from './datePicker';\nimport hidden from './hidden';\nimport input from './input';\nimport slider from './slider';\nimport timePicker from './timePicker';\nimport row from './row';\nimport select from './select';\n\nexport default [\n datePicker,\n hidden,\n input,\n slider,\n timePicker,\n row,\n select\n]\n","const PRE = 'el';\nexport default {\n button: PRE + 'Button',\n icon: 'i',\n slider: PRE + 'Slider',\n rate: PRE + 'Rate',\n upload: 'fcUpload',\n cascader: PRE + 'Cascader',\n popover: PRE + 'Popover',\n tooltip: PRE + 'Tooltip',\n colorPicker: PRE + 'ColorPicker',\n timePicker: PRE + 'TimePicker',\n timeSelect: PRE + 'TimeSelect',\n datePicker: PRE + 'DatePicker',\n 'switch': PRE + 'Switch',\n select: 'fcSelect',\n checkbox: 'fcCheckbox',\n radio: 'fcRadio',\n inputNumber: PRE + 'InputNumber',\n number: PRE + 'InputNumber',\n input: PRE + 'Input',\n formItem: PRE + 'FormItem',\n form: PRE + 'Form',\n frame: 'fcFrame',\n col: PRE + 'Col',\n row: PRE + 'Row',\n tree: 'fcTree',\n autoComplete: PRE + 'Autocomplete',\n auto: PRE + 'Autocomplete',\n group: 'fcGroup',\n object: 'fcSubForm',\n subForm: 'fcSubForm',\n}\n","export default function getConfig() {\n return {\n form: {\n inline: false,\n labelPosition: 'right',\n labelWidth: '125px',\n disabled: false,\n size: undefined,\n },\n row: {\n show: true,\n gutter: 0,\n },\n submitBtn: {\n type: 'primary',\n loading: false,\n disabled: false,\n innerText: '提交',\n show: true,\n col: undefined,\n click: undefined,\n },\n resetBtn: {\n type: 'default',\n loading: false,\n disabled: false,\n icon: 'el-icon-refresh',\n innerText: '重置',\n show: false,\n col: undefined,\n click: undefined,\n },\n };\n}\n","import getConfig from './config';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\n\nfunction isTooltip(info) {\n return info.type === 'tooltip';\n}\n\nconst upperCaseReg = /[A-Z]/;\n\nexport function isAttr(name, value) {\n return (!upperCaseReg.test(name) && (is.String(value) || is.Number(value)))\n}\n\nfunction tidy(props, name) {\n if (!hasProperty(props, name)) return;\n if (is.String(props[name])) {\n props[name] = {[name]: props[name], show: true};\n }\n}\n\nfunction isFalse(val) {\n return val === false;\n}\n\nfunction tidyBool(opt, name) {\n if (hasProperty(opt, name) && !is.Object(opt[name])) {\n opt[name] = {show: !!opt[name]};\n }\n}\n\nexport default {\n validate() {\n const form = this.form();\n if (form) {\n return form.validate();\n }\n return new Promise(v => v());\n },\n validateField(field) {\n const form = this.form();\n if (form) {\n return new Promise((resolve, reject) => {\n form.validateField(field, e => {\n e ? reject(e) : resolve(null);\n });\n })\n }\n return new Promise(v => v());\n },\n clearValidateState(ctx) {\n const fItem = this.vm.$refs[ctx.wrapRef];\n if (fItem) {\n fItem.validateMessage = '';\n fItem.validateState = '';\n }\n },\n tidyOptions(options) {\n ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col'].forEach(name => {\n tidyBool(options, name);\n })\n return options;\n },\n tidyRule({prop}) {\n tidy(prop, 'title');\n tidy(prop, 'info');\n return prop;\n },\n mergeProp(ctx) {\n let props = ctx.prop.props;\n ctx.prop = mergeProps([{\n attrs: Object.keys(props).reduce((initial, val) => {\n if (isAttr(val, props[val]))\n initial[val] = props[val];\n return initial;\n }, {}),\n info: this.options.info || {},\n wrap: this.options.wrap || {},\n col: this.options.col || {},\n }, ctx.prop], {\n info: {\n trigger: 'hover',\n placement: 'top-start',\n icon: 'el-icon-warning',\n },\n title: {},\n col: {span: 24},\n wrap: {},\n }, {normal: ['title', 'info', 'col', 'wrap']});\n },\n getDefaultOptions() {\n return getConfig();\n },\n update() {\n const form = this.options.form;\n this.rule = {\n props: {...form},\n nativeOn: {\n submit: (e) => {\n e.preventDefault();\n }\n },\n class: [form.className, form.class, 'form-create'],\n style: form.style,\n type: 'form',\n };\n },\n beforeRender() {\n const {key, ref, $handle} = this;\n extend(this.rule, {key, ref});\n extend(this.rule.props, {\n model: $handle.formData,\n rules: $handle.validate(),\n });\n },\n render(children) {\n if (children.length) {\n children.push(this.makeFormBtn());\n }\n return this.$r(this.rule, isFalse(this.options.row.show) ? children : [this.makeRow(children)]);\n },\n makeWrap(ctx, children) {\n const rule = ctx.prop;\n const uni = `${this.key}${ctx.key}`;\n const col = rule.col;\n const isTitle = this.isTitle(rule);\n const labelWidth = (!col.labelWidth && !isTitle) ? 0 : col.labelWidth;\n const {inline, col: _col} = this.rule.props;\n const item = isFalse(rule.wrap.show) ? children : this.$r(mergeProps([rule.wrap, {\n props: {\n labelWidth: labelWidth === void 0 ? labelWidth : toString(labelWidth),\n label: isTitle ? rule.title.title : undefined,\n ...(rule.wrap || {}),\n prop: ctx.id,\n rules: rule.validate,\n },\n class: rule.className,\n key: `${uni}fi`,\n ref: ctx.wrapRef,\n type: 'formItem',\n }]), [children, isTitle ? this.makeInfo(rule, uni) : null]);\n return (inline === true || isFalse(_col) || isFalse(col.show)) ? item : this.makeCol(rule, uni, [item]);\n },\n isTitle(rule) {\n if (this.options.form.title === false) return false;\n const title = rule.title;\n return !((!title.title && !title.native) || isFalse(title.show))\n },\n makeInfo(rule, uni) {\n const titleProp = rule.title;\n const infoProp = rule.info;\n const isTip = isTooltip(infoProp);\n const form = this.options.form;\n const children = [(titleProp.title || '') + (form.labelSuffix || form['label-suffix'] || '')];\n\n if (!isFalse(infoProp.show) && (infoProp.info || infoProp.native) && !isFalse(infoProp.icon)) {\n const prop = {\n type: infoProp.type || 'popover',\n props: {...infoProp},\n key: `${uni}pop`,\n slot: 'label'\n };\n const field = 'content';\n if (infoProp.info && !hasProperty(prop.props, field)) {\n prop.props[field] = infoProp.info;\n }\n children[infoProp.align !== 'left' ? 'unshift' : 'push'](this.$r(mergeProps([infoProp, prop]), [\n this.$r({\n type: 'i',\n slot: isTip ? 'default' : 'reference',\n class: infoProp.icon === true ? 'el-icon-warning' : infoProp.icon,\n key: `${uni}i`\n })\n ]));\n }\n return this.$r(mergeProps([titleProp, {\n props: titleProp,\n slot: titleProp.slot || 'label',\n key: `${uni}tit`,\n type: titleProp.type || 'span',\n }]), children);\n },\n makeCol(rule, uni, children) {\n const col = rule.col;\n return this.$r({\n class: col.class,\n type: 'col',\n props: col || {span: 24},\n key: `${uni}col`\n }, children);\n },\n makeRow(children) {\n const row = this.options.row || {};\n return this.$r({\n type: 'row',\n props: row,\n class: row.class,\n key: `${this.key}row`\n }, children)\n },\n makeFormBtn() {\n let vn = [];\n if (!isFalse(this.options.submitBtn.show)) {\n vn.push(this.makeSubmitBtn())\n }\n if (!isFalse(this.options.resetBtn.show)) {\n vn.push(this.makeResetBtn())\n }\n if (!vn.length) {\n return;\n }\n const item = this.$r({\n type: 'formItem',\n key: `${this.key}fb`\n }, vn);\n\n return this.rule.props.inline === true\n ? item\n : this.$r({\n type: 'col',\n props: {span: 24},\n key: `${this.key}fc`\n }, [item]);\n },\n makeResetBtn() {\n const resetBtn = this.options.resetBtn;\n return this.$r({\n type: 'button',\n props: resetBtn,\n style: {width: resetBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n resetBtn.click\n ? resetBtn.click(fApi)\n : fApi.resetFields();\n }\n },\n key: `${this.key}b2`,\n }, [resetBtn.innerText]);\n },\n makeSubmitBtn() {\n const submitBtn = this.options.submitBtn;\n\n return this.$r({\n type: 'button',\n props: submitBtn,\n style: {width: submitBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n submitBtn.click\n ? submitBtn.click(fApi)\n : fApi.submit();\n }\n },\n key: `${this.key}b1`,\n }, [submitBtn.innerText]);\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst maker = {};\n\nuseAlias(maker);\nuseSelect(maker);\nuseTree(maker);\nuseUpload(maker);\nuseFrame(maker);\n\nfunction useAlias(maker) {\n ['group', 'tree', 'switch', 'upload', 'autoComplete', 'checkbox', 'cascader', 'colorPicker', 'datePicker', 'frame', 'inputNumber', 'radio', 'rate'].forEach(name => {\n maker[name] = creatorFactory(name);\n });\n maker.auto = maker.autoComplete;\n maker.number = maker.inputNumber;\n maker.color = maker.colorPicker;\n}\n\nfunction useSelect(maker) {\n const select = 'select';\n const multiple = 'multiple';\n maker['selectMultiple'] = creatorFactory(select, {[multiple]:true});\n maker['selectOne'] = creatorFactory(select, {[multiple]:false});\n}\n\nfunction useTree(maker) {\n const name = 'tree';\n const types = {'treeSelected': 'selected', 'treeChecked': 'checked'};\n\n Object.keys(types).reduce((m, key) => {\n m[key] = creatorFactory(name, {type:types[key]});\n return m;\n }, maker);\n}\n\nfunction useUpload(maker) {\n const name = 'upload';\n const types = {\n image: ['image', 0],\n file: ['file', 0],\n uploadFileOne: ['file', 1],\n uploadImageOne: ['image', 1],\n };\n\n Object.keys(types).reduce((m, key) => {\n m[key] = creatorFactory(name, m => m.props({uploadType: types[key][0], maxLength: types[key][1]}));\n return m\n }, maker);\n\n maker.uploadImage = maker.image;\n maker.uploadFile = maker.file;\n}\n\nfunction useFrame(maker) {\n const types = {\n frameInputs: ['input', 0],\n frameFiles: ['file', 0],\n frameImages: ['image', 0],\n frameInputOne: ['input', 1],\n frameFileOne: ['file', 1],\n frameImageOne: ['image', 1]\n };\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory('frame', m => m.props({type: types[key][0], maxLength: types[key][1]}));\n return maker\n }, maker);\n\n maker.frameInput = maker.frameInputs;\n maker.frameFile = maker.frameFiles;\n maker.frameImage = maker.frameImages;\n return maker;\n}\n\nexport default maker;\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '@form-create/core/src/frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction tidyBtnProp(btn, def) {\n if (is.Boolean(btn))\n btn = {show: btn};\n else if (!is.Undef(btn) && !is.Object(btn)) btn = {show: def};\n return btn;\n}\n\nexport default function extendApi(api, h) {\n extend(api, {\n validate(callback) {\n return new Promise((resolve, reject) => {\n const forms = api.children;\n const all = [h.$manager.validate()];\n forms.forEach(v => {\n all.push(v.validate());\n })\n Promise.all(all).then(() => {\n resolve(true);\n callback && callback(true);\n }).catch((e) => {\n reject(e);\n callback && callback(false, e);\n h.vm.$emit('validate-fail', e, {api});\n })\n });\n },\n validateField: (field, callback) => {\n return new Promise((resolve, reject) => {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n const sub = h.subForm[ctx.id];\n const all = [h.$manager.validateField(ctx.id)];\n toArray(sub).forEach(v => {\n all.push(v.validate().catch(() => {\n return Promise.reject('子表单验证未通过');\n }));\n })\n Promise.all(all).then(() => {\n resolve(null);\n callback && callback(null);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.$emit('validate-field-fail', e, {field, api});\n })\n });\n },\n clearValidateState(fields, clearSub = true) {\n api.helper.tidyFields(fields).forEach(field => {\n if (clearSub) this.clearSubValidateState(field);\n h.getCtxs(field).forEach(ctx => {\n h.$manager.clearValidateState(ctx);\n });\n });\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n const subForm = h.subForm[ctx.id];\n if (!subForm) return;\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.clearValidateState();\n })\n } else if (subForm) {\n subForm.clearValidateState();\n }\n });\n })\n },\n btn: {\n loading: (loading = true) => {\n api.submitBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.submitBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.submitBtnProps({show: !!isShow});\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n api.resetBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.resetBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.resetBtnProps({show: !!isShow});\n }\n },\n submitBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.submitBtn, true);\n extend(btn, props);\n h.options.submitBtn = btn;\n api.refreshOptions();\n },\n resetBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.resetBtn, false);\n extend(btn, props);\n h.options.resetBtn = btn;\n api.refreshOptions();\n },\n submit(successFn, failFn) {\n api.validate((valid) => {\n if (valid) {\n let formData = api.formData();\n if (is.Function(successFn))\n invoke(() => successFn(formData, this));\n else {\n is.Function(h.options.onSubmit) && invoke(() => h.options.onSubmit(formData, this));\n h.vm.$emit('submit', formData, this);\n }\n } else {\n is.Function(failFn) && invoke(() => failFn(this, ...arguments));\n }\n });\n },\n });\n\n return api;\n}\n","import components from '../components';\nimport parsers from '../parsers';\nimport alias from './alias';\nimport manager from './manager';\nimport FormCreateFactory from '@form-create/core/src/index';\nimport makers from './maker';\nimport '../style/index.css';\nimport extendApi from './api';\n\nfunction install(FormCreate) {\n FormCreate.componentAlias(alias);\n\n components.forEach(component => {\n FormCreate.component(component.name, component);\n });\n\n parsers.forEach((parser) => {\n FormCreate.parser(parser);\n });\n\n Object.keys(makers).forEach(name => {\n FormCreate.maker[name] = makers[name];\n });\n}\n\nexport default function elmFormCreate() {\n return FormCreateFactory({\n ui: `${process.env.UI}`,\n version: `${process.env.VERSION}`,\n manager,\n extendApi,\n install,\n attrs: {\n normal: ['col', 'wrap'],\n array: ['className'],\n key: ['title', 'info'],\n }\n });\n}\n","import elmFormCreate from './core/index';\n\nconst FormCreate = elmFormCreate();\n\nif (typeof window !== 'undefined') {\n window.formCreate = FormCreate;\n if (window.Vue) {\n FormCreate.install(window.Vue);\n }\n}\n\nconst maker = FormCreate.maker;\n\nexport {maker}\n\nexport default FormCreate;\n"],"names":["_extends","Object","assign","a","b","c","arguments","length","d","prototype","hasOwnProperty","call","apply","this","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","reduce","indexOf","Array","e","concat","f","g","h","i","mergeFn","getSlot","slots","exclude","keys","lst","name","push","NAME","props","formCreateInject","type","required","value","String","watch","handler","update","deep","data","trueValue","methods","options","opt","isArray","onInput","n","$emit","filter","label","map","v","undefined","checked","option","created","render","prop","index","Type","_this","$slots","toArray","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","field","helper","Boolean","disabled","src","icon","width","height","maxLength","Number","okBtnText","closeBtnText","modalTitle","handleIcon","title","allowRemove","onOpen","Function","onOk","onCancel","onLoad","onBeforeRemove","onRemove","onHandle","previewImage","getSrc","previewVisible","modal","srcKey","previewMask","footer","reload","closeBtn","okBtn","fileList","frameVisible","val","modalVm","key","unique","closeModel","close","$off","handleCancel","showModel","makeInput","toString","readonly","makeGroup","children","makeBtn","makeItem","valid","Error","makeIcons","icons","makeHandleIcon","makeRemoveIcon","_this2","handleClick","_this3","handleRemove","makeFiles","_this4","makeImages","_this5","_this6","splice","frameLoad","iframe","api","_this7","set","get","fn","$on","onClose","console","log","makeFooter","$props","_this8","node","$nextTick","_this9","$refs","frame","contentWindow","appendToBody","visible","mounted","closeModal","initial","is","arg","Undef","Element","_typeof","nodeType","trueArray","getType","str","exec","empty","hasProperty","rule","k","forEach","t","functional","ctx","slot","slotName","formCreateParser","mergeProp","nodeKey","setValue","onChange","updateValue","tree","toLocaleLowerCase","getCurrentKey","getCheckedKeys","setCurrentKey","setCheckedKeys","parseFile","file","url","getFileName","uid","split","pop","uploadType","limit","uploadList","cacheFiles","showFileList","upload","uploadFiles","every","status","o","isDisabled","makeProgress","percentage","$scopedSlots","vm","makeUpload","isShow","display","files","$watch","$set","target","Vue","$del","deepExtend","origin","mode","isArr","clone","nst","_clone","getRule","__json","__origin","__ctrl","deepCopy","extend","rules","expand","button","max","min","defaultValue","syncDisabled","fontSize","onBeforeAdd","len","cacheRule","cacheValue","computed","formRule","item","$f","formData","deferSyncValue","once","expandRule","total","addRule","removeRule","_value","cache","JSON","stringify","input","form","coverValue","emit","copyRules","submitBtn","resetBtn","defVal","add$f","$delete","add","del","addIcon","delIcon","makeIcon","emitEvent","args","$form","extendOption","inFor","span","pull","checkbox","radio","select","group","subForm","getRuleInject","parent","$parent","$FormCreate","FormCreate","componentName","model","provide","$pfc","inject","destroyed","validate","renderRule","ctxInject","isMore","formCreate","_refresh","_renderRule","_updateValue","config","forceCoverValue","initOptions","refresh","$handle","reloadRule","beforeCreate","$options","propsData","fapi","rmSubForm","sub","getSubForm","idx","addSubForm","immediate","mergeProps","objects","_normalMerge","_toArrayMerge","_functionalMerge","propsMerge","arrA","arrB","event","hook","fn1","fn2","keyAttrs","arrayAttrs","normalAttrs","attrs","format","msg","tip","warn","err","error","logError","PREFIX","SUFFIX","$T","$TX","FUNCTION","toJson","obj","space","_isVue","__emit","makeFn","eval","parseFn","trim","flag","replace","__inject","parseJson","json","parse","enumerable","writable","configurable","copyRule","mergeRule","merge","array","normal","r","mergeGlobal","funcProxy","that","proxy","defineProperties","byCtx","__fc__","__origin__","invoke","def","baseRule","on","effect","hidden","creatorFactory","init","maker","Creator","_data","appendProto","setProp","constructor","commonMaker","create","make","createTmp","template","makerFactory","factory","copy","Api","tidyFields","fields","getCtxs","$render","clearCache","allSubForm","subs","id","getFieldCtx","appendValue","appendData","getValue","ctxs","fieldCtx","removeField","getCtx","rm","destroy","$el","parentNode","removeChild","$destroy","append","after","child","sort","root","prepend","state","hiddenStatus","displayStatus","all","component","nameCtx","bind","updateOptions","fc","onSubmit","sync","deleted","clearCacheAll","refreshOptions","$manager","hideForm","hide","changeStatus","clearChangeStatus","updateRule","updateRules","mergeRules","setEffect","attr","substr","clearEffectData","updateValidate","updateValidates","validates","refreshValidate","resetFields","method","el","trigger","nextTick","bus","$once","nextRefresh","changeValue","changeField","useCache","Render","initCache","use","setCache","vnode","getCache","toCase","lower","toLocaleUpperCase","toLowerCase","toLine","line","uniqueId","Math","random","Date","now","deepSet","to","useRender","initRender","tempList","clearOrgChildren","initOrgChildren","orgChildren","parser","loadChildren","getTypeSlot","_fn","vn","$h","$createElement","beforeRender","renderList","renderSlot","renderName","renderId","renderField","container","renderCtx","makeVm","getInjectData","global","cacheConfig","originType","trueType","setOptions","optionsTo","setTempProps","injectProp","injectKeys","renderTemp","compile","parseSide","side","renderSides","temp","prefix","suffix","cacheFlag","_type","none","renderChildren","initProp","tidyRule","ctxProp","preview","makeWrap","custom","onMounted","getFormData","callback","expression","__rule__","isRm","rmCtx","defaultRender","vNode","makeComponent","alias","aliasMap","_this10","handle","CreateNode","useInject","Handler","parseInjectEvent","injectEvent","parseEventLst","parseEvent","parseEmit","emitPrefix","emitKey","eventName","eventInject","fieldKey","_inject","self","watching","loading","unshift","EVENT","usePage","page","first","getLimit","parseInt","pageEnd","pageLoad","pageFn","loadRule","ceil","clearNextTick","clearTimeout","bindNextTick","setTimeout","loadedId","RuleContext","wrapRef","linkOn","ctrlRule","payload","updateType","updateKey","effectData","setParser","check","unwatch","un","unlink","link","appendLink","watchTo","watchCtx","rmCtrl","$api","ctrl","_rm","noWatch","updated","condition","useLoader","parseRule","_rule","fullRule","loadFn","loadCtrl","control","syncProp","pre","cycleLoad","_loadRule","syncForm","isRepeat","ruleEffect","repeat","isCopy","isInit","isCtrl","bindParser","setCtx","_preIndex","preIndex","refreshUpdate","defineProperty","valueHandle","refreshControl","useCtrl","controls","getCtrl","handleFn","findCtrl","isHidden","hideLst","reverse","clearValidateState","ruleCon","ctrlCtx","_reloadRule","initData","reloading","nextReload","useInput","toValue","formValue","setFlag","setFormData","syncValue","valueChange","isQuote","isChange","toEmpty","toFormValue","deferSyncFn","strFn","refreshRule","BaseParser","noneKey","useContext","getNameCtx","setIdCtx","rmIdCtx","isMounted","getParser","list","parsers","noWatchFn","rmSub","watchEffect","useLifecycle","_mounted","lifecycle","useEffect","useProvider","ps","providers","_c","getComponent","onEffect","provider","used","_used","_ctx$rule","_ctx$rule$effect","emitEffect","getEffect","p","getProp","clearProp","arr","components","manager","extendApi","getError","action","xhr","getBody","text","responseText","response","fetch","XMLHttpRequest","onerror","onError","onload","onSuccess","open","dataType","FormData","setRequestHeader","withCredentials","headers","send","__init","parseProp","domProps","innerHTML","CreateNodeFactory","setVm","tag","isReservedTag","nativeOn","Node","context","nodes","createManager","proto","CustomManager","Manager","mergeOptionsRule","$r","mergeOptions","tidyOptions","getDefaultOptions","componentValidate","load","validator","run","parseOpt","body","message","loaded","$required","parseVal","_","join","_vue","window","_parseProp","nameProp","_getEl","querySelector","mountForm","$vm","$data","$mount","exportAttrs","instance","FormCreateFactory","fragment","directives","$provider","globalConfig","getApi","directive","register","componentAlias","base","$vnode","install","_opt","inherit","_config","useAttr","version","ui","mount","remove","Handle","isSub","_installedFormCreate","$formCreate","html","DEFAULT_FORMATS","date","month","datetime","timerange","daterange","monthrange","datetimerange","year","valueFormat","idate","autosize","minRows","rows","sliderRange","range","parseFloat","time","m","isRange","timeRange","col","row","multiple","datePicker","slider","timePicker","PRE","rate","cascader","popover","tooltip","colorPicker","timeSelect","inputNumber","number","formItem","autoComplete","auto","object","getConfig","inline","labelPosition","labelWidth","size","show","gutter","innerText","click","isTooltip","info","upperCaseReg","isAttr","test","tidy","isFalse","tidyBool","Promise","validateField","resolve","reject","fItem","validateMessage","validateState","wrap","placement","submit","preventDefault","className","makeFormBtn","makeRow","uni","isTitle","_col","makeInfo","makeCol","titleProp","infoProp","isTip","labelSuffix","align","makeSubmitBtn","makeResetBtn","fApi","useAlias","color","useSelect","useTree","types","useUpload","image","uploadFileOne","uploadImageOne","uploadImage","uploadFile","useFrame","frameInputs","frameFiles","frameImages","frameInputOne","frameFileOne","frameImageOne","frameInput","frameFile","frameImage","tidyBtnProp","btn","forms","then","clearSub","clearSubValidateState","submitBtnProps","resetBtnProps","successFn","failFn","makers","elmFormCreate","process"],"mappings":";;;;;;4OAAa,SAASA,kBAAkBA,SAASC,OAAOC,QAAQ,SAASC,OAAO,IAAIC,EAAEC,EAAE,EAAEA,EAAEC,UAAUC,OAAOF,QAAQ,IAAIG,KAAKJ,EAAEE,UAAUD,GAAKJ,OAAOQ,UAAUC,eAAeC,KAAKP,EAAEI,KAAKL,EAAEK,GAAGJ,EAAEI,WAAWL,IAAYS,MAAMC,KAAKP,wFAAW,IAAIQ,YAAY,CAAC,QAAQ,QAAQ,YAAYC,aAAa,CAAC,QAAQ,QAAQ,cAAcC,gBAAgB,CAAC,KAAK,YAAYC,cAAc,SAASd,UAAUA,EAAEe,OAAO,SAASb,EAAEF,OAAO,IAAIC,KAAKD,KAAME,EAAED,GAAkB,IAAI,IAAIU,YAAYK,QAAQf,GAAGC,EAAED,GAAGJ,SAAS,GAAGK,EAAED,GAAGD,EAAEC,SAAS,IAAI,IAAIW,aAAaI,QAAQf,GAAG,KAAKI,EAAEH,EAAED,aAAagB,MAAMf,EAAED,GAAG,CAACC,EAAED,IAAIiB,EAAElB,EAAEC,aAAagB,MAAMjB,EAAEC,GAAG,CAACD,EAAEC,IAAIC,EAAED,GAAGI,EAAEc,OAAOD,QAAQ,IAAI,IAAIL,gBAAgBG,QAAQf,OAAQ,IAAImB,KAAKpB,EAAEC,MAAMC,EAAED,GAAGmB,GAAG,KAAKC,EAAEnB,EAAED,GAAGmB,aAAaH,MAAMf,EAAED,GAAGmB,GAAG,CAAClB,EAAED,GAAGmB,IAAIE,EAAEtB,EAAEC,GAAGmB,aAAaH,MAAMjB,EAAEC,GAAGmB,GAAG,CAACpB,EAAEC,GAAGmB,IAAIlB,EAAED,GAAGmB,GAAGC,EAAEF,OAAOG,QAAQpB,EAAED,GAAGmB,GAAGpB,EAAEC,GAAGmB,QAAS,GAAG,QAAQnB,EAAE,IAAI,IAAIsB,KAAKvB,EAAEC,GAAGC,EAAED,GAAGsB,GAAGrB,EAAED,GAAGsB,GAAGC,QAAQtB,EAAED,GAAGsB,GAAGvB,EAAEC,GAAGsB,IAAIvB,EAAEC,GAAGsB,QAAQrB,EAAED,GAAGD,EAAEC,QAAzfC,EAAED,GAAGD,EAAEC,UAA4fC,GAAG,KAAKsB,QAAQ,SAASxB,EAAEC,UAAU,WAAWD,GAAGA,EAAES,MAAMC,KAAKP,WAAWF,GAAGA,EAAEQ,MAAMC,KAAKP,oBAA4BW,s1GCAriC,SAASW,QAAQC,EAAOC,UAC5B7B,OAAO8B,KAAKF,GAAOX,OAAO,SAACc,EAAKC,UAC9BH,IAAsC,IAA3BA,EAAQX,QAAQc,IAC5BD,EAAIE,KAAKL,EAAMI,IAEZD,GACR,ICJP,IAAMG,KAAO,sBAEE,CACXF,KAAME,KACNC,MAAO,CACHC,iBAAkB,CACdC,KAAMrC,OACNsC,UAAU,GAEdC,MAAO,CACHF,KAAMlB,cACG,iBAAM,KAEnBkB,KAAMG,QAEVC,MAAO,4BACyB,CACxBC,wBACSC,UAETC,MAAM,GAEVL,sBACSI,WAGbE,sBACW,CACHC,UAAW,KAGnBC,QAAS,CACLC,uBACUC,EAAMrC,KAAKwB,iBAAiBY,eAC3B7B,MAAM+B,QAAQD,GAAOA,EAAM,IAEtCE,iBAAQC,QACCC,MAAM,QAASzC,KAAKoC,UAAUM,OAAO,SAACL,UAAkC,IAA1BG,EAAElC,QAAQ+B,EAAIM,SAAeC,IAAI,SAACP,UAAQA,EAAIV,QAAOe,OAAO,SAAAG,eAAWC,IAAND,MAExHd,sBACUgB,EAAUxC,MAAM+B,QAAQtC,KAAK2B,OAAS3B,KAAK2B,MAAQ,CAAC3B,KAAK2B,YAC1DO,UAAYlC,KAAKoC,UAAUM,OAAO,SAACL,UAAwC,IAAhCU,EAAQzC,QAAQ+B,EAAIV,SAC/DiB,IAAI,SAACI,UAAWA,EAAOL,UAGpCM,wBACSlB,UAETmB,kFACgClD,KAAKwB,iBAAiB2B,eAAa,CAACxB,MAAO3B,KAAKkC,uBAC9DlC,KAAKuC,aAAUvC,KAAKoC,UAAUQ,IAAI,SAACP,EAAKe,OACxC7B,oBAAYc,GACZgB,EAAqB,WAAdC,EAAK7B,KAAoB,mBAAqB,2BACpDF,EAAMI,4BACOJ,QAAY8B,EAAOD,EAAQ,IAAMf,EAAIV,YACzDZ,QAAQf,KAAKuD,YCzDd,SAASC,QAAQ7B,UACrBpB,MAAM+B,QAAQX,GACfA,EACC,CAAC,UAAMmB,EAAW,IAAIxC,QAAQqB,IAAU,EAAI,GAAK,CAACA,GCH7D,SAAS8B,YAAYC,EAAKC,QACX,IAARA,IAAiBA,EAAM,QACxBC,EAAWD,EAAIC,YAEdF,GAA2B,oBAAbG,cAEfC,EAAOD,SAASC,MAAQD,SAASE,qBAAqB,QAAQ,GAC9DC,EAAQH,SAASI,cAAc,SACnCD,EAAMvC,KAAO,WAEI,QAAbmC,GACEE,EAAKI,WACPJ,EAAKK,aAAaH,EAAOF,EAAKI,YAKhCJ,EAAKM,YAAYJ,GAGfA,EAAMK,WACRL,EAAMK,WAAWC,QAAUZ,EAE3BM,EAAMI,YAAYP,SAASU,eAAeb,guCCpB9C,IAAMpC,OAAO,gBAEE,CACXF,KAAME,OACNC,MAAO,CACHC,iBAAkB,CACdC,KAAMrC,OACNsC,UAAU,GAEdD,KAAM,CACFA,KAAMG,eACG,SAEb4C,MAAO5C,OACP6C,OAAQ,CACJhD,KAAMiD,iBACG,GAEbC,SAAU,CACNlD,KAAMiD,iBACG,GAEbE,IAAK,CACDnD,KAAMG,OACNF,UAAU,GAEdmD,KAAM,CACFpD,KAAMG,eACG,mBAEbkD,MAAO,CACHrD,KAAMG,eACG,SAEbmD,OAAQ,CACJtD,KAAMG,eACG,SAEboD,UAAW,CACPvD,KAAMwD,eACG,GAEbC,UAAW,CACPzD,KAAMG,eACG,MAEbuD,aAAc,CACV1D,KAAMG,eACG,MAEbwD,WAAYxD,OACZyD,WAAY,CACR5D,KAAM,CAACG,OAAQ8C,sBACN5B,GAEbwC,MAAO1D,OACP2D,YAAa,CACT9D,KAAMiD,iBACG,GAEbc,OAAQ,CACJ/D,KAAMgE,iBACG,cAGbC,KAAM,CACFjE,KAAMgE,iBACG,cAGbE,SAAU,CACNlE,KAAMgE,iBACG,cAGbG,OAAQ,CACJnE,KAAMgE,iBACG,cAGbI,eAAgB,CACZpE,KAAMgE,iBACG,cAGbK,SAAU,CACNrE,KAAMgE,iBACG,cAGbM,SAAU,CACNtE,KAAMgE,0BACEb,QACCoB,aAAehG,KAAKiG,OAAOrB,QAC3BsB,gBAAiB,IAG9BC,MAAO,CACH1E,KAAMrC,eACG,iBAAO,KAEpBgH,OAAQ,CACJ3E,KAAM,CAACG,OAAQqD,SAEnBtD,MAAO,CAACpB,MAAOqB,OAAQqD,OAAQ7F,QAC/BiH,iBAAavD,EACbwD,OAAQ,CACJ7E,KAAMiD,iBACG,GAEb6B,OAAQ,CACJ9E,KAAMiD,iBACG,GAEb8B,SAAU,CACN/E,KAAMiD,iBACG,GAEb+B,MAAO,CACHhF,KAAMiD,iBACG,IAIjBzC,sBACW,CACHyE,SAAUlD,QAAQxD,KAAK2B,OACvBuE,gBAAgB,EAChBS,cAAc,EACdX,aAAc,KAGtBnE,MAAO,CACHF,eAAMa,QACGkE,SAAWlD,QAAQhB,IAE5BkE,kBAASlE,OACCoE,EAAyB,IAAnB5G,KAAKgF,UAAmBxC,EAAE,IAAM,GAAMA,OAC7CC,MAAM,QAASmE,QACfnE,MAAM,SAAUmE,IAEzBhC,aAAIpC,QACKqE,UAAY7G,KAAK6G,QAAQjC,IAAMpC,KAG5CL,QAAS,CACL2E,aAAIC,UACOA,GAEXC,oBAAWC,QACFxE,MAAMwE,EAAQ,SAAW,OAC1BjH,KAAKuG,cACAW,KAAK,YACLA,KAAK,gBAETP,cAAe,GAExBQ,6BACSjB,gBAAiB,GAG1BkB,qBACQpH,KAAK2E,WAAY,IAAU3E,KAAKwF,gBAG/BmB,cAAe,IAGxBU,sDACU9F,EAAQ,CACVE,KAAM,OACNE,MAAQ3B,KAAK0G,SAAS9D,IAAI,SAAAC,UAAKS,EAAK2C,OAAOpD,KAAKyE,WAChDC,UAAU,wCAGShG,QAAYvB,KAAK8G,IAAI,aACvC9G,KAAK0G,SAAShH,mBAAiB,eAAe,gDACjC,kBAAM4D,EAAKoD,SAAW,OAAQ,uCAC5B1G,KAAK6E,WAAU,OAAU,kBAAMvB,EAAK8D,qBAAmB,gBAI/EI,mBAAUC,qCACDzH,KAAKgF,WAAahF,KAAK0G,SAAShH,OAASM,KAAKgF,YAC/CyC,EAASpG,KAAKrB,KAAK0H,wBAEN1H,KAAK8G,IAAI,6BAAcW,KAG5CE,kBAASvE,EAAOqE,8CACM,eAAgBzH,KAAK8G,IAAI,OAAS1D,uBAAYqE,KAEpEG,eAAMlH,OACI8D,EAAQxE,KAAKwB,iBAAiBgD,OAASxE,KAAKwE,SAC9CA,GAAS9D,IAAM8D,QACT,IAAIqD,MAAM,kBAIxBC,mBAAUlB,EAAKxD,iCACa,IAApBpD,KAAKqF,aAA6C,IAArBrF,KAAKuF,YAAsB,KAClDwC,EAAQ,UACK,SAAd/H,KAAKyB,OAAuC,IAApBzB,KAAKqF,YAAwC,SAAdrF,KAAKyB,MAAmBzB,KAAKqF,aACrF0C,EAAM1G,KAAKrB,KAAKgI,eAAepB,EAAKxD,IAEpCpD,KAAKuF,aACLwC,EAAM1G,KAAKrB,KAAKiI,eAAerB,EAAKxD,mBAEtB,sBAAuBpD,KAAK8G,IAAI,QAAQiB,MAGlEC,wBAAepB,EAAKxD,wDAEgB,IAApBpD,KAAKqF,iBAA2CvC,IAApB9C,KAAKqF,WAA4B,eAAiBrF,KAAKqF,qBACjF,kBAAM6C,EAAKC,YAAYvB,SAAW5G,KAAK8G,IAAI,KAAO1D,MAGpE6E,wBAAerB,EAAKxD,uDACA,2BAA2B,kBAAMgF,EAAKC,aAAazB,SAAW5G,KAAK8G,IAAI,KAAO1D,MAGlGkF,6DACWtI,KAAKwH,UAAUxH,KAAK0G,SAAS9D,IAAI,SAACgC,EAAKxB,UACnCmF,EAAKZ,SAASvE,EAAO,cAAU,4BACxB,kBAAMmF,EAAKJ,YAAYvD,OAAS2D,EAAKT,UAAUlD,EAAKxB,SAG1EoF,8DACWxI,KAAKwH,UAAUxH,KAAK0G,SAAS9D,IAAI,SAACgC,EAAKxB,UACnCqF,EAAKd,SAASvE,EAAO,qBAAWqF,EAAKxC,OAAOrB,MAAS6D,EAAKX,UAAUlD,EAAKxB,SAGxFsE,0EACsB,0BAA0B,kBAAMgB,EAAKtB,kBAAkBpH,KAAK8G,IAAI,sBACpE9G,KAAK6E,UAGvBsD,qBAAYvD,UACD5E,KAAK+F,SAASnB,IAEzByD,sBAAazD,GACL5E,KAAK2E,WAGL,IAAU3E,KAAK6F,eAAejB,UACzB8B,SAASiC,OAAO3I,KAAK0G,SAASpG,QAAQsE,GAAM,QAC5CkB,SAASlB,KAGtBqB,gBAAOrB,UACK5E,KAAKoG,OAAexB,EAAI5E,KAAKoG,QAAfxB,GAE1BgE,mBAAUC,mBACDjD,OAAOiD,QAEY,IAAhB7I,KAAKyE,SACLoE,EAAM,mBAAyB,CAC3BC,IAAK9I,KAAKwB,iBAAiBsH,IAC3B7B,MAAO,SAACzC,GACJuE,EAAKnB,MAAMpD,GACXuE,EAAK/B,cAETgC,IAAK,SAACxE,EAAO7C,GACToH,EAAKnB,MAAMpD,GACNuE,EAAKpE,UACNoE,EAAKtG,MAAM,QAASd,IAG5BsH,IAAK,SAACzE,UACFuE,EAAKnB,MAAMpD,GACJuE,EAAKpH,OAEhB+D,KAAM,SAAAwD,UAAMH,EAAKI,IAAI,MAAOD,IAC5BE,QAAS,SAAAF,UAAMH,EAAKI,IAAI,SAAUD,MAI5C,MAAO1I,GACL6I,QAAQC,IAAI9I,KAGpB+I,yDAC+DvJ,KAAKwJ,OAAzDtE,IAAAA,UAAWC,IAAAA,aAAcqB,IAAAA,SAAUC,IAAAA,WAAOH,4BAKhC,WACZE,0BACa,kBAA2B,IAApBiD,EAAK9D,aAAyB8D,EAAK9C,cAAe,OAAUxB,IAA2B,KAC3GsB,4BAAuB,qBACV,kBAAuB,IAAhBgD,EAAK/D,QAAoB+D,EAAKzC,iBAAgB9B,IAAwB,SAIvGhC,sBAGQwG,wBAFEjI,EAAOzB,KAAKyB,KAIdiI,EADS,UAATjI,EACOzB,KAAKqH,YACI,UAAT5F,EACAzB,KAAKwI,aAELxI,KAAKsI,kBAGwCtI,KAAKwJ,WAAtD1E,MAAAA,aAAQ,QAAOC,IAAAA,OAAQH,IAAAA,IAAKU,IAAAA,MAAOF,IAAAA,uBACrCuE,UAAU,WACPC,EAAKC,MAAMC,OACXF,EAAKhB,UAAUgB,EAAKC,MAAMC,MAAMC,eAAiB,qBAGvC,cAAaL,kCAEhB,CAACM,cAAc,EAAM7D,MAAOnG,KAAKqG,YAAaf,MAAOF,EAAY6E,QAASjK,KAAKkG,4BAC5ElG,KAAKmH,iCACJ,yBAAmBnH,KAAKgG,iFAEpBlB,MAAAA,EAAOQ,MAAAA,EAAO0E,cAAc,GAAShK,KAAKmG,WAAO8D,QAASjK,KAAK2G,2BACpE,kBAAOiD,EAAK5C,YAAW,SAC/BhH,KAAK2G,eAAiB3G,KAAKuG,uBAAsB,mBAAa3B,cAAiB,WAAW,QAC9EG,SACA,eACD,UACN,KACN/E,KAAKuJ,kBAIlBW,wBACSf,IAAI,gBAAiBnJ,KAAKmK,cC5UjC7I,OAAO,gBAEE,CACXF,KAAME,OACNC,MAAO,CACHC,iBAAkB,CACdC,KAAMrC,OACNsC,UAAU,GAEdC,MAAO,GACPF,KAAMG,QAEVC,MAAO,4BACyB,CACxBC,wBACSC,UAETC,MAAM,GAEVL,sBACSI,WAGbE,sBACW,CACHC,UAAW,KAGnBC,QAAS,CACLC,uBACUC,EAAMrC,KAAKwB,iBAAiBY,eAC3B7B,MAAM+B,QAAQD,GAAOA,EAAM,IAEtCE,iBAAQC,QACCC,MAAM,QAASzC,KAAKoC,UAAUM,OAAO,SAACL,UAAQA,EAAIM,QAAUH,IAAGnC,OAAO,SAAC+J,EAAS/H,UAAQA,EAAIV,OAAO,MAE5GI,kCACSG,UAAYlC,KAAKoC,UAAUM,OAAO,SAACL,UAAQA,EAAIV,QAAU2B,EAAK3B,QAAOtB,OAAO,SAAC+J,EAAS/H,UAAQA,EAAIM,OAAO,MAGtHM,wBACSlB,UAETmB,+EAC6BlD,KAAKwB,iBAAiB2B,eACpC,CAACxB,MAAO3B,KAAKkC,uBACVlC,KAAKuC,aAAUvC,KAAKoC,UAAUQ,IAAI,SAACP,EAAKe,OACxC7B,oBAAYc,GACZgB,EAAqB,WAAd6E,EAAKzG,KAAoB,gBAAkB,wBACjDF,EAAMI,4BACOJ,QAAY8B,EAAOD,EAAQ,IAAMf,EAAIV,YACzDZ,QAAQf,KAAKuD,YCrDvB8G,GAAK,CACP5I,cAAK6I,EAAK7I,UACCrC,OAAOQ,UAAU0H,SAASxH,KAAKwK,KAAS,WAAa7I,EAAO,KAEvE8I,eAAM1H,UACKA,MAAAA,GAEX2H,iBAAQF,SACkB,WAAfG,QAAOH,IAA4B,OAARA,GAAiC,IAAjBA,EAAII,WAAmBL,GAAGjL,OAAOkL,IAEvFK,mBAAU1I,UACC1B,MAAM+B,QAAQL,IAASA,EAAKvC,OAAS,GAEhD+F,kBAAS5C,OACCpB,EAAOzB,KAAK4K,QAAQ/H,SACV,aAATpB,GAAgC,kBAATA,GAElCmJ,iBAAQ/H,OACEgI,EAAMzL,OAAOQ,UAAU0H,SAASxH,KAAK+C,SACpC,oBAAoBiI,KAAKD,GAAK,IAEzCE,eAAMpJ,UACEA,MAAAA,OAIApB,MAAM+B,QAAQX,KAAUpB,MAAM+B,QAAQX,IAAWA,EAAMjC,SAInC,iBAAViC,IAAuBA,KAUtC,SAASqJ,YAAYC,EAAMC,SACtB,GAAIrL,eAAeC,KAAKmL,EAAMC,GAP1C,CAAC,OAAQ,SAAU,SAAU,UAAW,QAAS,UAAUC,QAAQ,SAAAC,GAC/Df,GAAGe,GAAK,SAAUd,UACPD,GAAG5I,KAAK6I,EAAKc,MClC5B,IAAM9J,OAAO,kBACE,CACXF,KAAME,OACN+J,YAAY,EACZ9J,MAAO,CACHC,iBAAkB,CACdC,KAAMrC,OACNsC,UAAU,IAGlBwB,gBAAOtC,EAAG0K,OACAlJ,EAAUkJ,EAAI/J,MAAMC,iBAAiBY,uCACtBkJ,EAAIrJ,SAAQ1B,MAAM+B,QAAQF,GAAWA,EAAU,IAAIQ,IAAI,SAACrB,EAAO6B,OAC1EmI,EAAOhK,EAAMgK,2CACKhK,QACV6B,EAAQ,IAAM7B,EAAMI,UAC7B4J,qBACShK,EAAMiK,UAAY,YAAYnB,GAAG5E,SAAS8F,GAAQhK,EAAMgK,KAAK3K,GAAK2K,IAAmB,SAEnGD,EAAI7D,aClBVnG,OAAO,cAEE,CACXF,KAAME,OACNmK,iBAAkB,CACdC,mBAAUJ,OACA/J,EAAQ+J,EAAInI,KAAK5B,MAClBA,EAAMoK,UAASpK,EAAMoK,QAAU,MAC/BpK,EAAMA,QAAOA,EAAMA,MAAQ,CAC5BoB,MAAO,YAInBpB,MAAO,CACHC,iBAAkB,CACdC,KAAMrC,OACNsC,UAAU,GAEdD,KAAM,CACFA,KAAMG,eACG,WAEbD,MAAO,CACHF,KAAM,CAAClB,MAAOqB,OAAQqD,gBACb,iBAAO,MAGxBpD,MAAO,CACHF,sBACSiK,aAGbzJ,QAAS,CACL0J,yBACSC,eAETA,2BAGQnK,EAFC3B,KAAK6J,MAAMkC,OAKZpK,EADS,aAHA3B,KAAKyB,KAAKuK,oBAIXhM,KAAK6J,MAAMkC,KAAKE,gBAEhBjM,KAAK6J,MAAMkC,KAAKG,sBAGvBzJ,MAAM,QAASd,KAExBiK,oBAGiB,aAFA5L,KAAKyB,KAAKuK,yBAGdnC,MAAMkC,KAAKI,cAAcnM,KAAK2B,YAE9BkI,MAAMkC,KAAKK,eAAe5I,QAAQxD,KAAK2B,UAIxDuB,wEACuBlD,KAAKwB,iBAAiB2B,UAAU,iBAAiB,kBAAMG,EAAKwI,4BAC5D,kBAAMxI,EAAKwI,oBAAgB/K,QAAQf,KAAKuD,WAE/D2G,wBACS0B,muCC/Db,SAASS,UAAUC,EAAMzL,SACd,CACH0L,IAAKD,EACLlL,KAAMoL,YAAYF,GAClBG,IAAK5L,GAIb,SAAS2L,YAAYF,UACT,GAAKA,GAAMI,MAAM,KAAKC,8BAGlC,IAAMrL,OAAO,kBAEE,CACXF,KAAME,OACNC,MAAO,CACHC,iBAAkB,CACdC,KAAMrC,OACNsC,UAAU,GAEdqE,SAAU,CACNtE,KAAMgE,0BACE6G,QACCtG,aAAesG,EAAKC,SACpBrG,gBAAiB,IAG9B0G,WAAY,CACRnL,KAAMG,eACG,QAEbiL,MAAO,CACHpL,KAAMwD,eACG,GAEbM,YAAa,CACT9D,KAAMiD,iBACG,GAEb2B,iBAAavD,EACbsC,WAAYxD,OACZyD,WAAY,CACR5D,KAAM,CAACG,OAAQ8C,iBACN,cAEb/C,MAAO,CAACpB,MAAOqB,SAEnBK,sBACW,CACH6K,WAAY,GACZ5G,gBAAgB,EAChBF,aAAc,GACd+G,WAAY,KAGpB9J,wBAC0DH,IAAlD9C,KAAKwB,iBAAiB2B,KAAK5B,MAAMyL,oBAC5BxL,iBAAiB2B,KAAK5B,MAAMyL,cAAe,QAE/CxL,iBAAiB2B,KAAK5B,MAAMmF,SAAWlD,QAAQxD,KAAK2B,OAAOiB,IAAIyJ,YAExExK,MAAO,CACHF,eAAMa,GACExC,KAAK6J,MAAMoD,OAAOC,YAAYC,MAAM,SAAAb,UAC5BA,EAAKc,QAA0B,YAAhBd,EAAKc,gBAEvBvD,MAAMoD,OAAOC,YAAc1J,QAAQhB,GAAGI,IAAIyJ,gBAC1CS,WAAa9M,KAAK6J,MAAMoD,OAAOC,cAG5CL,eAAMrK,EAAG6K,GACK,IAANA,GAAiB,IAAN7K,QACNT,WAIjBI,QAAS,CACL2E,aAAIC,UACOA,GAEXuG,6BACyD,IAA9CtN,KAAKwB,iBAAiB2B,KAAK5B,MAAMoD,UAE5CmB,kBAASwG,GACDtM,KAAKsN,mBAGJzD,MAAMoD,OAAO5E,aAAaiE,IAEnCnE,qBAAYmE,QACHvG,SAASuG,IAElB3E,kBAAS2E,EAAMlJ,mCACgB,UAApBpD,KAAK4M,+BACIN,EAAKC,SAAUvM,KAAK8G,IAAI,MAAQ1D,kBACjC,sBAAuBpD,KAAK8G,IAAI,IAAM1D,MAEzD6E,wBAAeqE,EAAMlJ,uDACD,2BAA2B,kBAAME,EAAKwC,SAASwG,SAAYtM,KAAK8G,IAAI,KAAO1D,MAE/F4E,wBAAesE,EAAMlJ,wDAEe,IAApBpD,KAAKqF,iBAA2CvC,IAApB9C,KAAKqF,WAA4B,eAAiBrF,KAAKqF,qBACjF,kBAAM6C,EAAKC,YAAYmE,SAAYtM,KAAK8G,IAAI,KAAO1D,MAErEmK,sBAAajB,EAAMlJ,gEACW,CAACoK,WAAYlB,EAAKkB,WAAY/L,KAAM,SAAUqD,MAAO,YAAW,sBACjF9E,KAAK8G,IAAI,KAAO1D,QAE7B0E,mBAAUwE,EAAMlJ,6BACN2E,EAAQ,MACV/H,KAAKuF,cAAmC,IAApBvF,KAAKqF,kBACA,SAApBrF,KAAK4M,aAA6C,IAApB5M,KAAKqF,YAA8C,SAApBrF,KAAK4M,YAAyB5M,KAAKqF,aACjG0C,EAAM1G,KAAKrB,KAAKgI,eAAesE,EAAMlJ,IAErCpD,KAAKuF,aACLwC,EAAM1G,KAAKrB,KAAKiI,eAAeqE,EAAMlJ,mBAGvB,oBAAmB2E,KAG7CO,6DACWtI,KAAK8M,WAAWlK,IAAI,SAAC0J,EAAMlJ,UAAUgF,EAAKqF,aAAa/G,SAAW0B,EAAKqF,aAAa/G,SAAS,CAChG4F,KAAAA,EACAlJ,MAAAA,EACAsK,GAAItF,iBACOA,EAAKtB,IAAI1D,SACd,kBAAiCN,IAApBwJ,EAAKkB,YAA4C,YAAhBlB,EAAKc,OAAwBhF,EAAKmF,aAAajB,EAAMlJ,GAAS,CAACgF,EAAKT,SAAS2E,EAAMlJ,GAAQgF,EAAKN,UAAUwE,EAAMlJ,SAE5KuK,gDACUC,GAAW5N,KAAK6M,OAAS7M,KAAK6M,MAAQ7M,KAAK8M,WAAWpN,sCACvCM,KAAKwB,iBAAiB2B,UAAU,eAC1C,CAAC0K,QAAS,oBACZ7N,KAAK8G,IAAI,cACb8G,qBAAwB,YACpB5N,KAAKuD,+BAA6B,+BACtB,wBAEH,KAAMxC,QAAQf,KAAKuD,OAAQ,CAAC,eAGlDxB,sBACQ+L,EAAQ9N,KAAK6J,MAAMoD,OAAOC,YAAYtK,IAAI,SAAC0J,UAASA,EAAKC,MAAK7J,OAAO,SAAC6J,eAAgBzJ,IAARyJ,IAC9EvM,KAAK+M,WAAWrN,SAAWoO,EAAMpO,QAAWoO,EAAMpO,cAC7CqN,8BAAiBe,QACjBrL,MAAM,QAAwB,IAAfzC,KAAK6M,MAAeiB,EAAM,IAAM,GAAMA,KAGlE3G,6BACSjB,gBAAiB,IAG9BhD,4CACQlD,KAAK6J,MAAMoD,cAC2CnK,IAAlD9C,KAAKwB,iBAAiB2B,KAAK5B,MAAMyL,oBAC5BxL,iBAAiB2B,KAAK5B,MAAMyL,aAAehN,KAAK6J,MAAMoD,OAAOD,mBAEjExL,iBAAiB2B,KAAK5B,MAAMmF,SAAW1G,KAAK6J,MAAMoD,OAAOvG,yBAIpD,eAAc,CAAC1G,KAAKwB,iBAAiB2B,KAAK5B,MAAMyL,aAAe,GAAKhN,KAAKsI,YAAatI,KAAK2N,8CAEtF,CACH3D,cAAc,EACd7D,MAAOnG,KAAKqG,YACZf,MAAOtF,KAAKoF,WACZ6E,QAASjK,KAAKkG,4BAERlG,KAAKmH,sCACN,cAAmCnH,KAAKgG,oBAAxB,qBAIzCkE,mCACS4C,WAAa9M,KAAK6J,MAAMoD,OAAOC,iBAC/Ba,OAAO,kBAAMxF,EAAKsB,MAAMoD,OAAOC,aAAa,WAC7C3E,EAAKxG,UACN,CAACC,MAAM,eCtLFgM,KAAKC,EAAQzJ,EAAO7C,GAChCuM,IAAIlF,IAAIiF,EAAQzJ,EAAO7C,GAGpB,SAASwM,KAAKF,EAAQzJ,GACzB0J,WAAWD,EAAQzJ,GCJR,SAAS4J,WAAWC,OAAQJ,yDAAS,GAAIK,yCAChDC,GAAQ,MACP,IAAIzH,KAAOmH,KACR7O,OAAOQ,UAAUC,eAAeC,KAAKmO,EAAQnH,GAAM,KAC/C0H,EAAQP,EAAOnH,OACdyH,EAAQhO,MAAM+B,QAAQkM,KAAWnE,GAAGjL,OAAOoP,GAAQ,KAChDC,OAAsB3L,IAAhBuL,EAAOvH,MACbyH,EACAA,GAAQ,EACRE,GAAOT,KAAKK,EAAQvH,EAAK,SACtB,GAAI0H,EAAME,aAAmB5L,IAATwL,EAAoB,KACvCA,EAGG,CACHN,KAAKK,EAAQvH,EAAK0H,EAAME,mBAHxBF,EAAQA,EAAMG,UACdF,GAAOT,KAAKK,EAAQvH,EAAK,SAM7B2H,GAAOT,KAAKK,EAAQvH,EAAK,IAE7BuH,EAAOvH,GAAOsH,WAAWC,EAAOvH,GAAM0H,EAAOF,QAE7CN,KAAKK,EAAQvH,EAAK0H,GACbnE,GAAGE,MAAMiE,KACLnE,GAAGE,MAAMiE,EAAMI,UAChBP,EAAOvH,GAAK8H,OAASJ,EAAMI,QAE1BvE,GAAGE,MAAMiE,EAAMK,YAChBR,EAAOvH,GAAK+H,SAAWL,EAAMK,uBAMhC/L,IAATwL,GAAsB/N,MAAM+B,QAAQ+L,GAAWA,EAAO3L,OAAO,SAAAG,UAAMA,IAAMA,EAAEiM,SAAUT,EAG1F,SAASU,SAASpN,UACdyM,WAAW,GAAI,CAACzM,MAAAA,IAAQA,MCxCnC,IAAMxC,WAAWC,OAAOC,QAAU,SAAUC,OACnC,IAAIC,EAAGC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,QAChC,IAAIG,KAAKJ,EAAIE,UAAUD,GACxBJ,OAAOQ,UAAUC,eAAeC,KAAKP,EAAGI,IAAOqO,KAAK1O,EAAGK,EAAGJ,EAAEI,WAI7DL,GAGI,SAAS0P,gBACb7P,WAASY,MAAMC,KAAMP,WCThC,IAAM6B,OAAO,gBAEE,CACXF,KAAME,OACNC,MAAO,CACHiD,MAAO5C,OACPqJ,KAAM,CAAC1K,MAAOnB,QACd6P,MAAO1O,MACP2O,OAAQjK,OACR7C,QAAShD,OACToC,iBAAkB,CACdC,KAAMrC,OACNsC,UAAU,GAEdyN,OAAQ,CACJ1N,KAAMiD,iBACG,GAEb0K,IAAK,CACD3N,KAAMwD,eACG,GAEboK,IAAK,CACD5N,KAAMwD,eACG,GAEbtD,MAAO,CACHF,KAAMlB,cACG,iBAAM,KAEnB+O,aAAclQ,OACduF,SAAU,CACNlD,KAAMiD,iBACG,GAEb6K,aAAc,CACV9N,KAAMiD,iBACG,GAEb8K,SAAU,CACN/N,KAAMwD,eACG,IAEbY,eAAgB,CACZpE,KAAMgE,iBACG,cAGbgK,YAAa,CACThO,KAAMgE,iBACG,eAIjBxD,sBACW,CACHyN,IAAK,EACLC,UAAW,GACXC,WAAY,GACZnO,UAAMqB,IAGd+M,SAAU,CACNC,2BACQ9P,KAAKiP,MACEjP,KAAKiP,MAEZjP,KAAKiL,KACE1K,MAAM+B,QAAQtC,KAAKiL,MAAQjL,KAAKiL,KAAO,CAACjL,KAAKiL,MAEjD,KAGfpJ,MAAO,CACHiO,SAAU,CACNhO,iBAAQU,EAAG6K,cACPjO,OAAO8B,KAAKlB,KAAK2P,WAAWxE,QAAQ,SAAAtI,OAC1BkN,EAAOzM,EAAKqM,UAAU9M,MACxBkN,EAAKC,GAAI,KACHpJ,EAAMmJ,EAAKC,GAAGC,cAChBzN,IAAM6K,EACN0C,EAAKC,GAAGE,eAAe,WACnB9B,WAAW2B,EAAK9E,KAAMzI,GACtBuN,EAAKC,GAAGpE,SAAShF,KAClB,OACA,KACGA,EAAMmJ,EAAKC,GAAGC,WACpBF,EAAKC,GAAGG,KAAK,YAAa,WACtBJ,EAAKC,GAAGpE,SAAShF,KAErBmJ,EAAK9E,KAAO8D,SAASvM,QAKrCR,MAAM,GAEV2C,kBAASnC,MACDxC,KAAKuP,aAAc,KACbpO,EAAMnB,KAAK2P,UACjBvQ,OAAO8B,KAAKC,GAAKgK,QAAQ,SAAAD,GACrB/J,EAAI+J,GAAG8E,GAAGrL,SAASnC,OAI/B0M,gBAAO1M,OACC7C,EAAI6C,EAAIxC,KAAK2B,MAAMjC,OACnBC,EAAI,QACCyQ,WAAWzQ,IAGxBgC,eAAMa,cACFA,EAAIA,GAAK,OACLtB,EAAO9B,OAAO8B,KAAKlB,KAAK2P,WAAYU,EAAQnP,EAAKxB,OAAQgQ,EAAMW,EAAQ7N,EAAE9C,UACzEgQ,EAAM,EAAG,KACJ,IAAI7O,EAAI6O,EAAK7O,EAAI,EAAGA,SAChByP,QAAQ9N,EAAE9C,OAASmB,OAEvB,IAAIA,EAAI,EAAGA,EAAIwP,EAAOxP,SAClB+K,SAAS1K,EAAKL,GAAI2B,EAAE3B,QAE1B,IACC6O,EAAM,MACD,IAAI7O,EAAI,EAAGA,EAAI6O,EAAK7O,SAChB0P,WAAWrP,EAAKmP,EAAQxP,EAAI,IAGzC2B,EAAE2I,QAAQ,SAACvE,EAAK/F,GACZqH,EAAK0D,SAAS1K,EAAKL,GAAI2B,EAAE3B,SAKzCsB,QAAS,CACLqO,gBAAO3N,UACKA,GAAKmI,YAAYnI,EAAG7C,KAAKwE,OAAU3B,EAAE7C,KAAKwE,OAAS3B,GAE/D4N,eAAMvF,EAAGtE,QACAgJ,WAAW1E,GAAKwF,KAAKC,UAAU/J,IAExCgK,eAAMjP,QACGc,MAAM,QAASd,QACfc,MAAM,SAAUd,IAEzBsO,kBAASnJ,EAAKmJ,cACJN,EAAY3P,KAAK2P,UACjBzO,EAAO9B,OAAO8B,KAAKyO,MACrBzO,EAAKwB,OAAO,SAAAwI,UAAKyE,EAAUzE,GAAG8E,KAAItQ,SAAWwB,EAAKxB,YAGhDiC,EAAQT,EAAK0B,IAAI,SAAAsI,OACbjJ,EAAO6E,IAAQoE,EAAI+E,oBAAe7H,EAAKuH,UAAUzE,GAAG8E,GAAGa,MACvDlP,EAAQyG,EAAK5D,MAAQvC,EAAKmG,EAAK5D,QAAU,KAAOvC,SACtDmG,EAAKqI,MAAMvF,EAAGvJ,GACPA,SAENiP,MAAMjP,KAEfiK,kBAAS9E,EAAKnF,OACJ6C,EAAQxE,KAAKwE,MAAOwL,EAAKhQ,KAAK2P,UAAU7I,GAAKkJ,GAC/CxL,IACA7C,qBAAU6C,EAAQxE,KAAKwQ,OAAO7O,KAE9B3B,KAAK4P,WAAW9I,KAAS4J,KAAKC,UAAUnM,EAAQ7C,EAAM6C,GAAS7C,UAG9D8O,MAAM3J,EAAKnF,GAChBqO,EAAGc,WAAWnP,GAAS,MAE3B2O,iBAAQzP,EAAGkQ,cACD9F,EAAOjL,KAAKwB,iBAAiBqP,KAAKG,UAAUhR,KAAK8P,UACjD1N,EAAUpC,KAAKoC,0BAAcpC,KAAKoC,SAAW,CAC/C6O,WAAW,EACXC,UAAU,MAEVlR,KAAKsP,aAAc,CACdlN,EAAQ6N,WAAU7N,EAAQ6N,SAAW,QACpCkB,EAASpC,SAAS/O,KAAKsP,cAC7BN,OAAO5M,EAAQ6N,SAAUjQ,KAAKwE,yBAAUxE,KAAKwE,MAAQ2M,GAAUA,QAE9DnD,KAAKhO,KAAK2P,YAAa3P,KAAK0P,IAAK,CAACzE,KAAAA,EAAM7I,QAAAA,IACzC2O,QACKpH,UAAU,kBAAMpB,EAAK9F,MAAM,MAAOwI,EAAM7L,OAAO8B,KAAKqH,EAAKoH,WAAWjQ,OAAS,MAG1F0R,eAAMvQ,EAAGiG,EAAKkJ,mBACLL,UAAU7I,GAAKkJ,GAAKA,OACpBC,SAASnJ,EAAKkJ,EAAGC,iBACjBtG,UAAU,WACPlB,EAAK8G,cACLS,EAAGrL,SAAS8D,EAAK9D,UAErB8D,EAAKhG,MAAM,cAAeuN,EAAI5Q,OAAO8B,KAAKuH,EAAKkH,WAAWrP,QAAQwG,OAG1EyJ,oBAAWzJ,EAAKiK,cACN3N,EAAQhE,OAAO8B,KAAKlB,KAAK2P,WAAWrP,QAAQwG,QAC7CuK,QAAQrR,KAAK2P,UAAW7I,QACxBuK,QAAQrR,KAAK4P,WAAY9I,GAC1BiK,QACKpH,UAAU,kBAAMjB,EAAKjG,MAAM,SAAUW,MAGlDkO,aAAIzQ,GACIb,KAAK2E,WAAY,IAAU3E,KAAKyP,YAAYzP,KAAK2B,aAGhD2O,QAAQzP,GAAG,IAEpB0Q,aAAInO,EAAO0D,GACH9G,KAAK2E,WAAY,IAAU3E,KAAK6F,eAAe7F,KAAK2B,MAAOyB,UAG1DmN,WAAWzJ,GAAK,QAChBnF,MAAMgH,OAAOvF,EAAO,QACpBwN,MAAM5Q,KAAK2B,SAEpB6P,iBAAQ1K,qDACeA,SAAa,wDACR9G,KAAKwP,8BAAqBxP,KAAK2E,SAAW,4BAA8B,yBAClF3E,KAAKsR,QAEvBG,iBAAQrO,EAAO0D,gEACQA,SAAa,mDACR9G,KAAKwP,8BAAqBxP,KAAK2E,SAAW,4BAA8B,uCAClF,kBAAMoE,EAAKwI,IAAInO,EAAO0D,QAExC4K,kBAASrB,EAAOjN,EAAO0D,qBACf9G,KAAKyN,aAAa0B,OACXnP,KAAKyN,aAAa0B,OAAO,CAC5BkB,MAAAA,EACAjN,MAAAA,EACAsK,GAAI1N,KACJ8G,IAAAA,EACAyK,IAAK,kBAAM9H,EAAK8H,IAAInO,EAAO0D,IAC3BwK,IAAKtR,KAAKsR,MAGJ,IAAVlO,EACO,CAAe,IAAbpD,KAAKoP,KAAaiB,GAASrQ,KAAKoP,IAAO,KAAOpP,KAAKwR,QAAQ1K,GAAoB,IAAb9G,KAAKqP,KAAagB,EAAQrQ,KAAKqP,IAAOrP,KAAKyR,QAAQrO,EAAO0D,GAAO,MAE5IuJ,EAAQrQ,KAAKqP,IACNrP,KAAKyR,QAAQrO,EAAO0D,WAGnC6K,mBAAUvQ,EAAMwQ,EAAMxO,EAAO0D,QACpBrE,kBAAMrB,6BAASwQ,IAAM5R,KAAK2P,UAAU7I,GAAKkJ,GAAI5M,MAEtDgN,oBAAW5N,OACF,IAAI3B,EAAI,EAAGA,EAAI2B,EAAG3B,SACdc,MAAMN,KAAKrB,KAAKwE,MAAQ,KAAO,MAIhDvB,wBACSxB,KAAOzB,KAAKwB,iBAAiBqP,KAAKgB,YACjClS,GAAKK,KAAKkP,QAAU,GAAKlP,KAAK2B,MAAMjC,OACtCC,EAAI,QACCyQ,WAAWzQ,OAEf,IAAIkB,EAAI,EAAGA,EAAIb,KAAK2B,MAAMjC,OAAQmB,SAC9ByP,QAAQzP,IAGrBqC,4CACUhC,EAAO9B,OAAO8B,KAAKlB,KAAK2P,WACxBR,EAASnP,KAAKmP,OACd9L,EAAOrD,KAAKyB,YACK,IAAhBP,EAAKxB,OACPM,KAAKyN,qBAAwBzN,KAAKyN,qBAAqB,CACpDC,GAAI1N,KACJsR,IAAKtR,KAAKsR,iBACA,cAAe,wDACLtR,KAAKwP,mDAA0CxP,KAAK2E,SAAW,8BAAgC,wCACzG3E,KAAKsR,oBACT,QAAQpQ,EAAK0B,IAAI,SAACkE,EAAK1D,SACLwG,EAAK+F,UAAU7I,GAAhCmE,IAAAA,KAAM7I,IAAAA,uCACO,cAAc,YAAY0E,QACpC,gFACOqI,EAAS,GAAK,uBAClBrI,OACD,gBACgB,SAACmJ,UAAarG,EAAKqG,SAASnJ,EAAKmJ,iBACnC,SAAC7O,8BAASwQ,mCAAAA,2BAAShI,EAAK+H,UAAUvQ,EAAMwQ,EAAMxO,EAAO0D,IACnE8J,MAAO,SAACZ,UAAOpG,EAAKwH,MAAMhO,EAAO0D,EAAKkJ,gBAEnC,CACHrO,MAAOiI,EAAKpF,yBAAUoF,EAAKpF,MAAQoF,EAAK4G,OAAO5G,EAAKjI,MAAMyB,KAAWwG,EAAKjI,MAAMyB,GAChF6H,KAAAA,EACAjI,OAAQZ,EACR0P,cAAc,EACdC,OAAO,SAEd5C,8BACU,CAAC6C,KAAM,EAAGC,KAAM,EAAG5Q,KAAM,OAAKuI,EAAK8H,SAASxQ,EAAKxB,OAAQ0D,EAAO0D,KAAgB,aC1SzGxF,OAAO,gBAEE,CACXF,KAAME,OACNC,MAAO,CACH0J,KAAM1K,MACN6B,QAAShD,OACToC,iBAAkB,CACdC,KAAMrC,OACNsC,UAAU,GAEdC,MAAO,CACHF,KAAMrC,eACG,iBAAO,KAEpBuF,SAAU,CACNlD,KAAMiD,iBACG,GAEb6K,aAAc,CACV9N,KAAMiD,iBACG,IAGjBzC,sBACW,CACH0N,UAAW,GACXC,WAAY,GACZnO,UAAMqB,IAGdjB,MAAO,CACH8C,kBAASnC,QACA+M,cAAgBvP,KAAK2P,UAAUK,GAAGrL,SAASnC,IAEpDb,eAAMa,QACGoJ,SAASpJ,KAGtBL,QAAS,CACL8N,kBAAStO,QACAiO,WAAac,KAAKC,UAAUhP,QAC5Bc,MAAM,QAASd,QACfc,MAAM,SAAUd,IAEzBiK,kBAASjK,OACCkJ,EAAM6F,KAAKC,UAAUhP,GACvB3B,KAAK4P,aAAe/E,SAGnB+E,WAAa/E,OACb8E,UAAUK,GAAGc,WAAWnP,GAAS,MAE1C2O,uBACUlO,EAAUpC,KAAKoC,QAAUpC,KAAKoC,QAAU,CAC1C6O,WAAW,EACXC,UAAU,GAEd9O,EAAQ6N,2BAAgBjQ,KAAK2B,OAAS,SACjCgO,UAAY,CAAC1E,KAAMjL,KAAKiL,KAAM7I,QAAAA,IAEvCgP,eAAMpB,mBACGL,UAAUK,GAAKA,OACfrG,UAAU,WACXrG,EAAKiM,cAAgBS,EAAGrL,SAASrB,EAAKqB,UACtCrB,EAAKb,MAAM,cAAeuN,MAGlC2B,mBAAUvQ,8BAASwQ,mCAAAA,yBACVnP,kBAAMrB,UAASwQ,MAG5B3O,wBACSqN,eACA7O,KAAOzB,KAAKwB,iBAAiBqP,KAAKgB,SAE3C3O,uCAC4BlD,KAAK2P,UAAtB1E,IAAAA,KAAM7I,IAAAA,iBACApC,KAAKyB,oBAEV,gBACgBzB,KAAKiQ,sBACPjQ,KAAK2R,UACnBf,MAAO5Q,KAAKoR,kBAET,CAACnG,KAAAA,EAAMjI,OAAQZ,EAAS0P,cAAc,oBC3E1C,CACXI,SACApI,MACAqI,MACAC,OACArG,KACAkB,OACAoF,MACAC,KCfEhR,OAAO,aAEPiR,cAAgB,SAAhBA,EAAiB7E,EAAI8E,MAClB9E,GAAMA,IAAO8E,SAGd9E,EAAGlM,iBACIkM,EAAGlM,iBAEVkM,EAAG+E,QACIF,EAAc7E,EAAG+E,QAASD,WAI1B,SAASE,YAAYC,SACzB,CACHvR,KAAME,OACNsR,cAAetR,OACfuR,MAAO,CACH1P,KAAM,OAEV2P,yBACW,CACHC,KAAM/S,OAGdgT,OAAQ,CAACD,KAAM,SAAU,OACzBxR,MAAO,CACH0J,KAAM,CACFxJ,KAAMlB,MACNmB,UAAU,GAEdsB,OAAQ,CACJvB,KAAMrC,eACG,iBACE,KAGf0S,aAAcpN,QACd/C,MAAOvC,OACP0J,IAAK1J,OACLgC,KAAMQ,OACN0Q,QAAS,CACL7Q,KAAMiD,iBACG,GAEbqN,MAAOrN,SAEXzC,sBACW,CACHgO,cAAUnN,EACVmQ,WAAW,EACXC,SAAU,GACVlD,QAAIlN,EACJ8K,QAAQ,EACR7G,OAAQ,EACRoM,8BAAgBnT,KAAKiL,MAAQ,IAC7BmI,UAAW,GACXtH,YAAa4E,KAAKC,UAAU3Q,KAAK2B,OAAS,IAC1C0R,SAAUrT,KAAK+R,QAGvB7O,yBACWlD,KAAKsT,WAAWpQ,UAE3Bf,QAAS,CACLoR,sBACMvT,KAAK+G,QAEXyM,4BACSL,8BAAiBnT,KAAKiL,MAAQ,KAEvCwI,sBAAa9R,GACL3B,KAAKiT,iBACJnH,YAAc4E,KAAKC,UAAUhP,QAC7Bc,MAAM,eAAgBd,MAGnCE,MAAO,CACHF,MAAO,CACHG,iBAAQU,GACAkO,KAAKC,UAAUnO,GAAK,MAAQxC,KAAK8L,mBAChCkE,GAAG0D,OAAOC,gBAAkB3T,KAAKgQ,GAAGc,WAAWtO,GAAK,IAAMxC,KAAKgQ,GAAGpE,SAASpJ,GAAK,MAEzFR,MAAM,GAEVgB,OAAQ,CACJlB,iBAAQU,QACC8Q,WAAWM,YAAYpR,QACvBwN,GAAG6D,WAEZ7R,MAAM,GAEViJ,cAAKzI,cACGA,EAAE9C,SAAWM,KAAKmT,WAAWzT,QAAU8C,EAAE2K,MAAM,SAAAtK,UAAKS,EAAK6P,WAAW7S,QAAQuC,IAAM,WACjFyQ,WAAWQ,QAAQC,WAAWvR,QAC9BgR,iBAGbQ,qCAC2BhU,KAAKiU,SAASC,UAA9BjJ,IAAAA,KAAMjI,IAAAA,YACRsQ,WAAa,IAAIX,EAAW3S,KAAMiL,EAAMjI,GAC7C5D,OAAO8B,KAAKlB,KAAKsT,WAAWnQ,MAAMgI,QAAQ,SAAAD,GACtC8D,OAAO9G,EAAK+L,SAAS/I,GAAIhD,EAAKoL,WAAWnQ,KAAK+H,WAE7CzI,MAAM,eAAgBzC,KAAKsT,WAAWxK,QAE/C7F,8BACUyK,EAAK1N,KAAMmU,EAAOnU,KAAKsT,WAAWxK,MAkBlCsL,EAAY,eACRpB,EAAST,cAAc7E,EAAIA,EAAGqF,SAChCC,KACItF,EAAG2F,OAAQ,KACLgB,EAAM7Q,QAAQwP,EAAOsB,cACrBC,EAAMF,EAAI/T,QAAQ6T,GACpBI,GAAO,GACPF,EAAI1L,OAAO4L,EAAK,QAGpBvB,EAAOV,WAKnB5E,EAAGvE,IAAI,qBAAsB,WACzBiL,WAGCrG,OAAO,kBAAM3F,EAAKkK,SAAS,SAAC9P,GAC7BA,EArCe,cACXkL,EAAGqF,KAAM,KAGDsB,EAFFrB,EAAST,cAAc7E,EAAIA,EAAGqF,MAChCC,IAEItF,EAAG2F,QACHgB,EAAM7Q,QAAQwP,EAAOsB,eACjBjT,KAAK8S,GAGTE,EAAMF,EAEVnB,EAAOV,QAAQ+B,KAyBnBG,GAAeJ,KACpB,CAACK,WAAW,MCtJpB,IAAMxU,cAAc,CAAC,QAAS,QAAS,WAAY,eAC7CC,eAAe,CAAC,QAAS,QAAS,cAClCC,kBAAkB,CAAC,KAAM,YAEhCuU,WAAa,SAAbA,EAAcC,OAASvK,yDAAU,GAAI/H,yDAAM,GACvCuS,YAAmB3U,iCAAgBoC,EAAG,QAAc,KACpDwS,YAAoB3U,kCAAiBmC,EAAG,OAAa,KACrDyS,YAAuB3U,qCAAoBkC,EAAG,YAAkB,KAChE0S,EAAa1S,EAAG,OAAa,UAE5BsS,EAAQtU,OAAO,SAACf,EAAGC,OACjB,IAAMuH,KAAOvH,KACVD,EAAEwH,MACEiO,EAAWzU,QAAQwG,IAAQ,EAC3BxH,EAAEwH,GAAO4N,EAAW,CAACnV,EAAEuH,IAAOxH,EAAEwH,SAC7B,GAAI8N,EAAatU,QAAQwG,IAAQ,EACpCxH,EAAEwH,oCAAWxH,EAAEwH,IAASvH,EAAEuH,SACvB,GAAI+N,EAAcvU,QAAQwG,IAAQ,EAAG,KAClCkO,EAAO1V,EAAEwH,aAAgBvG,MAAQjB,EAAEwH,GAAO,CAACxH,EAAEwH,IAC7CmO,EAAO1V,EAAEuH,aAAgBvG,MAAQhB,EAAEuH,GAAO,CAACvH,EAAEuH,IACnDxH,EAAEwH,gCAAWkO,sBAASC,SACnB,GAAIH,EAAiBxU,QAAQwG,IAAQ,MACnC,IAAMoO,KAAS3V,EAAEuH,MACdxH,EAAEwH,GAAKoO,GAAQ,KACTF,EAAO1V,EAAEwH,GAAKoO,aAAkB3U,MAAQjB,EAAEwH,GAAKoO,GAAS,CAAC5V,EAAEwH,GAAKoO,IAChED,EAAO1V,EAAEuH,GAAKoO,aAAkB3U,MAAQhB,EAAEuH,GAAKoO,GAAS,CAAC3V,EAAEuH,GAAKoO,IACtE5V,EAAEwH,GAAKoO,gCAAaF,sBAASC,SAE7B3V,EAAEwH,GAAKoO,GAAS3V,EAAEuH,GAAKoO,QAG5B,GAAY,SAARpO,MACF,IAAIqO,KAAQ5V,EAAEuH,GACXxH,EAAEwH,GAAKqO,GACP7V,EAAEwH,GAAKqO,GAAQrU,UAAQxB,EAAEwH,GAAKqO,GAAO5V,EAAEuH,GAAKqO,IAE5C7V,EAAEwH,GAAKqO,GAAQ5V,EAAEuH,GAAKqO,QAI9B7V,EAAEwH,GAAOvH,EAAEuH,QAGX8N,EAAatU,QAAQwG,IAAQ,GAAKgO,EAAiBxU,QAAQwG,IAAQ,GAAKiO,EAAWzU,QAAQwG,IAAQ,EACnGxH,EAAEwH,qBAAWvH,EAAEuH,IACR+N,EAAcvU,QAAQwG,IAAQ,EACrCxH,EAAEwH,GAAOvH,EAAEuH,aAAgBvG,yBAAYhB,EAAEuH,IAA2B,WAAlB2D,QAAOlL,EAAEuH,sBAAwBvH,EAAEuH,IAAQvH,EAAEuH,GAE/FxH,EAAEwH,GAAOvH,EAAEuH,UAGhBxH,GACR8K,IAGDtJ,UAAU,SAACsU,EAAKC,UAClB,WACID,GAAOA,EAAIrV,MAAMC,KAAMP,WACvB4V,GAAOA,EAAItV,MAAMC,KAAMP,aCvDlB6V,SAAW,CAAC,OAAQ,OAAQ,aAAc,QAAS,OAAQ,SAAU,SAAU,UAAW,SAAU,UAAW,OAAQ,aAAc,OAAQ,SAAU,SAAU,SAAU,OAAQ,YAAa,MAAO,UAAW,YAAa,SAE/NC,WAAa,CAAC,WAAY,WAAY,WAEtCC,YAAc,CAAC,SAAU,QAE/B,SAASC,wBACDH,4BAAarV,kCAAgBC,mCAAiBC,mBAAoBoV,WAAeC,sBCVhFE,OAAOjU,EAAMkU,EAAK1K,SACtB,uBAAgBxJ,gBAAUkU,IAAS1K,EAAQ,aAAeyF,KAAKC,UAAU1F,EAAK0D,QAAU1D,EAAK0D,UAAY1D,GAAS,IAGvH,SAAS2K,IAAID,EAAK1K,GACrB5B,QAAQwM,KAAKH,OAAO,MAAOC,EAAK1K,IAG7B,SAAS6K,IAAIH,EAAK1K,GACrB5B,QAAQ0M,MAAML,OAAO,MAAOC,EAAK1K,IAG9B,SAAS+K,SAASxV,GACrBsV,IAAItV,EAAE8G,YACN+B,QAAQ0M,MAAMvV,GCVlB,IAAMyV,OAAS,wBACTC,OAAS,wBAETC,GAAK,OACLC,IAAM,QACNC,SAAW,WAEV,SAASC,OAAOC,EAAKC,UACjB9F,KAAKC,UAAUvC,WAAW,GAAImI,GAAK,GAAO,SAAUzP,EAAKF,OACxDA,IAAsB,IAAfA,EAAI6P,WAGXhM,QAAO7D,KAAQyP,gBACRzP,KAEPA,EAAIgI,cACGhI,EAAIgI,UAEXhI,EAAIiI,WACJjI,EAAMA,EAAIiI,WAEVjI,EAAI8P,cAEDT,OAASrP,EAAMsP,SACvBM,GAGP,SAASG,OAAOzN,WACL0N,KAAK,IAAMP,SAAW,aAAenN,GAAK,SAG9C,SAAS2N,QAAQ3N,EAAIoF,MACpBpF,GAAMmB,GAAGzI,OAAOsH,IAAOA,EAAGxJ,OAAS,EAAG,KAClCmD,EAAIqG,EAAG4N,OACPC,GAAO,SAEHlU,EAAEvC,QAAQ4V,QAAU,GAA2B,IAAtBrT,EAAEvC,QAAQ2V,QACnCpT,EAAIA,EAAEmU,QAAQd,OAAQ,IAAIc,QAAQf,OAAQ,IAC1Cc,GAAO,OACJ,GAAsB,IAAlBlU,EAAEvC,QAAQ6V,IACjBtT,EAAIA,EAAEmU,QAAQb,GAAI,IAClBY,GAAO,MACJ,CAAA,GAAuB,IAAnBlU,EAAEvC,QAAQ8V,YACjBvT,EAAI8T,OAAO,qBAAuB9T,EAAEmU,QAAQZ,IAAK,IAAM,MACrDxH,OAAS1F,EACXrG,EAAEoU,UAAW,EACNpU,EACCyL,GAAgC,IAAxBzL,EAAEvC,QAAQ+V,WAAmBxT,IAAMwT,WACnDU,GAAO,OAENA,EAAM,OAAO7N,MACZtC,EAAM+P,QAAiC,IAAzB9T,EAAEvC,QAAQ+V,WAAuC,IAAnBxT,EAAEvC,QAAQ,KAAe+V,SAAW,IAAMxT,EAAKA,UACjG+D,EAAIgI,OAAS1F,EACNtC,EACT,MAAOpG,eACLsV,mBAAYjT,sBAAarC,YAI1B0I,EAGJ,SAASgO,UAAUC,EAAM7I,UACrBoC,KAAK0G,MAAMD,EAAM,SAAUjM,EAAGrI,UAC7BwH,GAAGE,MAAM1H,KAAOA,EAAEvC,QAAgBuC,EAC/BgU,QAAQhU,EAAGyL,KC3DnB,SAAS+I,WAAW1V,EAAO2V,SACvB,CACH3V,MAAAA,EACA0V,YAAY,EACZE,cAAc,EACdD,WAAYA,GAKb,SAASE,SAASvM,UACd+F,UAAU,CAAC/F,IAAO,GAGtB,SAAS+F,UAAU/B,EAAOX,UACtBF,WAAW,sBAAQa,GAAQX,IAAQ,GAGvC,SAASmJ,UAAUxM,EAAMyM,UAC5BhD,WAAWnU,MAAM+B,QAAQoV,GAASA,EAAQ,CAACA,GAAQzM,EAAM,CAAC0M,MAAOpC,WAAYqC,OAAQpC,cAC9EvK,EAGJ,SAAS0D,QAAQ1D,OACd4M,EAAIxN,GAAG5E,SAASwF,EAAK0D,SAAW1D,EAAK0D,UAAY1D,SAClD4M,EAAEpW,OACHoW,EAAEpW,KAAO,SAENoW,EAGJ,SAASC,YAAY7J,EAAQyJ,UAC3BzJ,GACL7O,OAAO8B,KAAKwW,GAAS,IAAIvM,QAAQ,SAACD,GAC1BwM,EAAMxM,KACN+C,EAAO/C,GAAKuM,UAAUxJ,EAAO/C,IAAM,GAAIwM,EAAMxM,OAG9C+C,GANayJ,EASjB,SAASK,UAAUC,EAAMC,GAC5B7Y,OAAO8Y,iBAAiBF,EAAM5Y,OAAO8B,KAAK+W,GAAO5X,OAAO,SAAC+J,EAASc,UAC9Dd,EAAQc,GAAK,CACTjC,sBACWgP,EAAM/M,OAGdd,GACR,KAGA,SAAS+N,MAAMlN,UACXA,EAAKmN,SAAWnN,EAAKoN,WAAapN,EAAKoN,WAAWD,OAAS,MAG/D,SAASE,OAAOpP,EAAIqP,OAEnBA,EAAMrP,IACR,MAAO1I,GACLwV,SAASxV,UAEN+X,WClEKC,iBACL,CACHjX,MAAO,GACPkX,GAAI,GACJrW,QAAS,GACTqF,SAAU,GACViR,OAAQ,GACRC,QAAQ,EACR9K,SAAS,EACTlM,WAAOmB,GAIR,SAAS8V,eAAexX,EAAMyX,UAC1B,SAACvT,EAAOd,EAAO7C,OAAOJ,yDAAQ,GAC3BuX,EAAQ,IAAIC,QAAQ3X,EAAMkE,EAAOd,EAAO7C,EAAOJ,UACjDsX,IACIxO,GAAG5E,SAASoT,GAAOA,EAAKC,GACvBA,EAAMvX,MAAMsX,IAEdC,GAIA,SAASC,QAAQtX,EAAM6D,EAAOd,EAAO7C,EAAOJ,QAClDyX,MAAQhK,OAAOwJ,WAAY,CAAC/W,KAAAA,EAAM6D,MAAAA,EAAOd,MAAAA,EAAO7C,MAAAA,EAAOJ,MAAOA,GAAS,UACvE2T,MAAQlV,KAAKyY,GAkBf,SAASQ,YAAYxD,GACxBA,EAAMtK,QAAQ,SAAA/J,GACV2X,QAAQnZ,UAAUwB,GAAQ,SAAU0F,UAChC2Q,UAAUzX,KAAKgZ,yBAAS5X,EAAO3B,UAAUC,OAAS,EAAIoH,qBAAQA,EAAMrH,UAAU,MACvEO,QAnBnBgP,OAAO+J,QAAQnZ,UAAW,CACtB+O,0BACW3O,KAAKgZ,OAEhBE,iBAAQpS,EAAKnF,UACTqM,KAAKhO,KAAKgZ,MAAOlS,EAAKnF,GACf3B,MAEX0O,sBACUF,EAAQ,IAAIxO,KAAKmZ,mBACvB3K,EAAMwK,MAAQxB,SAASxX,KAAKgZ,OACrBxK,KAafyK,YAAYxD,SCzDZ,IAAM2D,YAAcR,eAAe,IAE5B,SAASS,OAAO5X,EAAM+C,EAAOc,OAC5BgU,EAAOF,YAAY,GAAI5U,UAC3B8U,EAAKN,MAAMvX,KAAOA,EAClB6X,EAAKN,MAAM1T,MAAQA,EACZgU,EAGJ,SAASC,UAAUC,EAAU9L,EAAIlJ,EAAOc,OACvCgU,EAAOF,YAAY,GAAI5U,UAC3B8U,EAAKN,MAAMvX,KAAO,WAClB6X,EAAKN,MAAMQ,SAAWA,EACtBF,EAAKN,MAAM1T,MAAQA,EACnBgU,EAAKN,MAAMtL,GAAKA,EACT4L,EAGI,SAASG,qBACb,CACHJ,OAAAA,OACAE,UAAAA,UACAC,SAAUD,UACVG,QAASd,gBCjBjB,SAASe,KAAKhY,UACHoN,SAASpN,GAGL,SAASiY,IAAIhZ,YAEfiZ,EAAWC,UACZzP,GAAGE,MAAMuP,GACTA,EAASlZ,EAAEkZ,SACLvZ,MAAM+B,QAAQwX,KACpBA,EAAS,CAACA,IACPA,WAGFvY,EAAMuY,EAAQhT,EAAKF,GACxBiT,EAAWC,GAAQ3O,QAAQ,SAAA3G,GACvB5D,EAAEmZ,QAAQvV,GAAO2G,QAAQ,SAAAG,GACrB0C,KAAK1C,EAAIL,KAAMnE,EAAKF,GACpBhG,EAAEoZ,QAAQC,WAAW3O,gBAKxB4O,QACCC,EAAOvZ,EAAE0R,eACRlT,OAAO8B,KAAKiZ,GAAM9Z,OAAO,SAAC+J,EAASc,OAChCmJ,EAAM8F,EAAKjP,UACZmJ,GACD9T,MAAM+B,QAAQ+R,GACdjK,EAAQ/I,WAAR+I,qBAAgBiK,IAEhBjK,EAAQ/I,KAAKgT,GACVjK,GALUA,GAMlB,QAGDtB,EAAM,qBAEGlI,EAAEwB,8BAGFxB,EAAEwB,2BAGFxB,EAAEiQ,wBAGFjQ,EAAEqO,2BAGFrO,EAAE8M,GAAGqF,MAAQnS,EAAE8M,GAAGqF,KAAK/C,0BAGvBkK,KAEXjK,kBAAS6J,UACED,EAAWC,GAAQzZ,OAAO,SAAC+J,EAASgQ,OACjC9O,EAAM1K,EAAEyZ,YAAYD,UACrB9O,GACLlB,EAAQkB,EAAI9G,OAASmV,KAAKrO,EAAIL,KAAKtJ,OAC5ByI,GAFUA,GAGlBxJ,EAAEwB,QAAQkY,YAAcX,KAAK/Y,EAAE2Z,YAAc,KAEpDC,kBAAShW,OACC8G,EAAM1K,EAAEyZ,YAAY7V,MACrB8G,SACEqO,KAAKrO,EAAIL,KAAKtJ,QAEzBmP,oBAAWb,OACDhO,oBAAYgO,GAAY,IAC9BrP,EAAEsP,eAAe,WACbpH,EAAIgR,SAAS3O,QAAQ,SAAArE,OACX2T,EAAO7Z,EAAE8Z,SAAS5T,MACpB2T,EAAM,KACA1D,EAAO/L,YAAY/I,EAAM6E,GAC/B2T,EAAKtP,QAAQ,SAAAG,GACTA,EAAIL,KAAKtJ,MAAQoV,EAAO9U,EAAK6E,QAAOhE,WAEjCb,EAAK6E,MAGpBkI,OAAOpO,EAAE2Z,WAAYtY,MAG7B2J,kBAASpH,OACDyL,EAAWzL,EACX/E,UAAUC,QAAU,IACpBuQ,qBAAazL,EAAQ/E,UAAU,KACnCmB,EAAEsP,eAAe,WACb9Q,OAAO8B,KAAK+O,GAAU9E,QAAQ,SAAArE,OACpB2T,EAAO7Z,EAAE8Z,SAAS5T,OACnB2T,EAAM,OAAO7Z,EAAE2Z,WAAWzT,GAAOmJ,EAASnJ,GAC/C2T,EAAKtP,QAAQ,SAAAG,GACTA,EAAIL,KAAKtJ,MAAQsO,EAASnJ,UAK1C6T,qBAAYnW,OACF8G,EAAM1K,EAAEga,OAAOpW,UACrB5D,EAAEsP,eAAe,WACbtP,EAAEmZ,QAAQvV,GAAO2G,QAAQ,SAAAG,GACrBA,EAAIuP,SAET,GACIvP,EAAMA,EAAI+C,YAASvL,GAE9ByN,oBAAWtF,OACDK,EAAML,GAAQkN,MAAMlN,MACrBK,SACLA,EAAIuP,KACGvP,EAAI+C,QAEfyM,QAAS,WACLla,EAAE8M,GAAGqN,IAAIC,YAAcpa,EAAE8M,GAAGqN,IAAIC,WAAWC,YAAYra,EAAE8M,GAAGqN,KAC5Dna,EAAE8M,GAAGwN,YAETpB,OAAQ,kBAAMlZ,EAAEkZ,UAChBqB,OAAQ,SAAClQ,EAAMmQ,EAAOC,OACapM,EAA3B7L,EAAQxC,EAAE0a,KAAK5b,OAAS,EACtB4L,EAAM1K,EAAEga,OAAOQ,GAEjB9P,EACI+P,GACApM,EAAQ3D,EAAIL,KAAKxD,SACjBrE,EAAQkI,EAAIL,KAAKxD,SAAS/H,OAAS,IAEnC0D,EAAQkI,EAAIiQ,KAAKjb,QAAQgL,EAAI+C,QAC7BY,EAAQ3D,EAAIiQ,MAEbtM,EAAQrO,EAAEqO,MACjBA,EAAMtG,OAAOvF,EAAQ,EAAG,EAAG6H,IAE/BuQ,QAAS,SAACvQ,EAAMmQ,EAAOC,OACJpM,EAAX7L,EAAQ,EACNkI,EAAM1K,EAAEga,OAAOQ,GAEjB9P,EACI+P,EACApM,EAAQ3D,EAAIL,KAAKxD,UAEjBrE,EAAQkI,EAAIiQ,KAAKjb,QAAQgL,EAAI+C,QAC7BY,EAAQ3D,EAAIiQ,MAEbtM,EAAQrO,EAAEqO,MACjBA,EAAMtG,OAAOvF,EAAO,EAAG6H,IAE3B0N,gBAAO8C,EAAO3B,GACVvY,EAAMuY,EAAQ,WAAY2B,GAC1B7a,EAAEiT,WAEN6H,sBAAatB,OACH9O,EAAM1K,EAAEga,OAAOR,MAChB9O,UACIA,EAAIL,KAAK0N,QAEtB9K,iBAAQ4N,EAAO3B,GACXvY,EAAMuY,EAAQ,YAAa2B,GAC3B7a,EAAEiT,WAEN8H,uBAAcvB,OACJ9O,EAAM1K,EAAEga,OAAOR,MAChB9O,UACIA,EAAIL,KAAK4C,SAEtBlJ,kBAASA,EAAUmV,GACfD,EAAWC,GAAQ3O,QAAQ,SAAC3G,GACxB5D,EAAEmZ,QAAQvV,GAAO2G,QAAQ,SAAAG,GACrBA,EAAIL,KAAK1J,OAASyM,KAAK1C,EAAIL,KAAK1J,MAAO,aAAcoD,OAG7D/D,EAAEiT,WAEN+H,aAAIvN,UACOjP,OAAO8B,KAAKN,EAAE6Z,MAAM7X,IAAI,SAAAsI,OACrBI,EAAM1K,EAAE6Z,KAAKvP,UACZmD,EAAS/C,EAAI+C,OAAS/C,EAAIL,QAGzC4H,eAAMxE,UACKzN,EAAEkZ,SAASzZ,OAAO,SAAC+J,EAAStD,OACzBwE,EAAM1K,EAAE8Z,SAAS5T,GAAK,UAC5BsD,EAAQtD,GAAOuH,EAAS/C,EAAI+C,OAAS/C,EAAIL,KAClCb,GACR,KAEPyR,mBAAUxN,UACCjP,OAAO8B,KAAKN,EAAEkb,SAASzb,OAAO,SAAC+J,EAAStD,OACrCwE,EAAM1K,EAAEkb,QAAQhV,GAAKlE,IAAI,SAAA0I,UAAO+C,EAAS/C,EAAI+C,OAAS/C,EAAIL,cAChEb,EAAQtD,GAAsB,IAAfwE,EAAI5L,OAAe4L,EAAI,GAAKA,EACpClB,GACR,KAEP2R,uBACWjT,EAAI+H,MAEftK,OAAQ,SAAC0I,GACLrO,EAAEmT,WAAW9E,IAEjB+M,uBAAc5Z,GACVxB,EAAEqb,GAAGD,cAAc5Z,GACnB0G,EAAI+K,WAERqI,kBAAShT,GACLJ,EAAIkT,cAAc,CAACE,SAAUhT,KAEjCiT,KAAM,SAAC3X,MACCjE,MAAM+B,QAAQkC,GACdA,EAAM2G,QAAQ,SAAAtI,UAAKiG,EAAIqT,KAAKtZ,cAG5B4X,EAAOpQ,GAAGjL,OAAOoF,GAAS2T,MAAM3T,GAAS5D,EAAEmZ,QAAQvV,GAClDiW,KAGLA,EAAOla,MAAM+B,QAAQmY,GAAQA,EAAO,CAACA,IAChCtP,QAAQ,SAAAG,OACJA,EAAI8Q,QAAS,KACR9J,EAAU1R,EAAE0R,QAAQhH,EAAI8O,IAC1B9H,IACI/R,MAAM+B,QAAQgQ,GACdA,EAAQnH,QAAQ,SAAA0F,GACZA,EAAKgD,YAEFvB,GACPA,EAAQuB,WAIhBjT,EAAEoZ,QAAQC,WAAW3O,MAG7B1K,EAAEiT,aAENA,QAAS,WACLqG,IAAa/O,QAAQ,SAAAkJ,GACjBA,EAAIR,YAERjT,EAAEoZ,QAAQqC,gBACVzb,EAAEiT,WAENyI,0BACI1b,EAAE2b,SAASP,cAAcpb,EAAEwB,SAC3B0G,EAAI+K,WAER2I,SAAU,SAACC,GACPzO,KAAKpN,EAAE8M,GAAI,UAAW+O,IAE1BC,aAAc,kBACH9b,EAAE8b,cAEbC,kBAAmB,WACf/b,EAAE8b,cAAe,GAErBE,oBAAWxC,EAAInP,GACXrK,EAAEmZ,QAAQK,GAAIjP,QAAQ,SAAAG,GAClB0D,OAAO1D,EAAIL,KAAMA,MAGzB4R,qBAAY5N,GACR7P,OAAO8B,KAAK+N,GAAO9D,QAAQ,SAAAiP,GACvBtR,EAAI8T,WAAWxC,EAAInL,EAAMmL,OAGjC3C,UAAW,SAAC2C,EAAInP,GACZrK,EAAEmZ,QAAQK,GAAIjP,QAAQ,SAAAG,GAClBmM,UAAUnM,EAAIL,KAAMA,MAG5B6R,oBAAW7N,GACP7P,OAAO8B,KAAK+N,GAAO9D,QAAQ,SAAAiP,GACvBtR,EAAI2O,UAAU2C,EAAInL,EAAMmL,OAGhCzL,QAAS,SAACyL,EAAI/L,OACJ/C,EAAM1K,EAAEga,OAAOR,MACjB9O,SACO+C,EAAS/C,EAAI+C,OAAS/C,EAAIL,MAGzC8R,mBAAU3C,EAAI4C,EAAMrb,OACV2J,EAAM1K,EAAEga,OAAOR,GACjB9O,GAAO0R,IACS,MAAZA,EAAK,KACLA,EAAOA,EAAKC,OAAO,IAEnBjS,YAAYM,EAAIL,KAAM,IAAM+R,IAC5BhP,KAAK1C,EAAIL,KAAM,IAAM+R,EAAMrb,GAE1BqJ,YAAYM,EAAIL,KAAM,WACvB+C,KAAK1C,EAAIL,KAAM,SAAU,IAE7B+C,KAAK1C,EAAIL,KAAKyN,OAAQsE,EAAMrb,KAGpCub,yBAAgB9C,EAAI4C,OACV1R,EAAM1K,EAAEga,OAAOR,GACjB9O,IACI0R,GAAoB,MAAZA,EAAK,KACbA,EAAOA,EAAKC,OAAO,IAEvB3R,EAAI4R,gBAAgBF,GACpBlU,EAAIqT,KAAK/B,KAGjB+C,wBAAe/C,EAAIlH,EAAUwE,GACrBA,EACA5O,EAAI2O,UAAU2C,EAAI,CAAClH,SAAAA,IAEnB3R,EAAM6Y,EAAI,WAAYlH,IAG9BkK,yBAAgBC,EAAW3F,GACvBtY,OAAO8B,KAAKmc,GAAWlS,QAAQ,SAAAiP,GAC3BtR,EAAIqU,eAAe/C,EAAIiD,EAAUjD,GAAK1C,MAG9C4F,2BACI1c,EAAE8M,GAAGwF,SAAW,GAChBpK,EAAI+K,WAER0J,qBAAYzD,GACRD,EAAWC,GAAQ3O,QAAQ,SAAA3G,GACvB5D,EAAEmZ,QAAQvV,GAAO2G,QAAQ,SAAAG,GACrB1K,EAAEoZ,QAAQC,WAAW3O,GACrBA,EAAIL,KAAKtJ,MAAQgY,KAAKrO,EAAIgE,mBAItCkO,gBAAOpD,EAAIhZ,OACDqc,EAAK3U,EAAI2U,GAAGrD,OACbqD,IAAOA,EAAGrc,GACX,MAAM,IAAIyG,MAAM6N,OAAO,gBAAUtU,oBAC9B,kBACIqc,EAAGrc,SAAHqc,eAGf3S,cAAKsP,EAAIhZ,8BAASwQ,mCAAAA,2BACP0G,OAAO,kBAAMxP,EAAI0U,OAAOpD,EAAIhZ,gBAASwQ,MAEhD0E,gBAAOE,UACIF,OAAOxN,EAAImC,KAAMuL,IAE5BkH,iBAAQtD,EAAIlF,WACFuI,EAAK3U,EAAI2U,GAAGrD,sBADAxI,mCAAAA,oBAElB6L,GAAMA,EAAGhb,YAAHgb,GAASvI,UAAUtD,KAE7B6L,YAAGrD,OACO9O,EAAM1K,EAAEga,OAAOR,MACjB9O,EAAK,OAAOA,EAAImS,IAAM7c,EAAE8M,GAAG7D,MAAMyB,EAAI3H,MAE7CwG,WAAY,SAACiQ,OACHqD,EAAK3U,EAAI2U,GAAGrD,GAClBqD,GAAMA,EAAGhb,OAASgb,EAAGhb,MAAM,gBAE/B6R,oBAAW9P,OACD8G,EAAM1K,EAAEga,OAAOpW,UACd8G,EAAM1K,EAAE0R,QAAQhH,EAAI8O,SAAMtX,GAErC6a,kBAASzU,GACLtI,EAAEgd,IAAIC,MAAM,YAAa3U,GACzBtI,EAAEiT,WAENiK,qBAAY5U,GACRtI,EAAEkd,cACF5U,GAAMoP,OAAOpP,IAEjB6H,cAAK3P,gCAASwQ,mCAAAA,uBACVhR,EAAE8M,IAAGjL,eAAMrB,UAASwQ,KAExB1B,wBAAehH,EAAIiT,GACfvb,EAAEsP,eAAehH,EAAIiT,IAEzB1X,OAAQ,CACJoV,WAAAA,EAAYtY,MAAAA,WAInB,KAAM,OAAQ,MAAO,OAAO4J,QAAQ,SAAA3I,GACjCsG,EAAItG,GAAK,oBACL5B,EAAE8M,eAAOlL,0BAIjBsG,EAAIiV,YAAcjV,EAAIkV,YAAclV,EAAI8C,SAEjC9C,ECxYI,SAASmV,SAASC,GAC7BlP,OAAOkP,EAAOte,UAAW,CACrBue,0BACS9B,iBAETpC,oBAAW3O,OACJA,EAAIL,KAAKwF,SAGPzQ,KAAKyQ,MAAMnF,EAAI8O,OAIW,IAA3Bpa,KAAKyQ,MAAMnF,EAAI8O,IAAIgE,KAAgBpe,KAAKyQ,MAAMnF,EAAI8O,IAAI5H,cACjDsB,QAAQD,cAEXrB,EAASxS,KAAKyQ,MAAMnF,EAAI8O,IAAI5H,YAC7B/B,MAAMnF,EAAI8O,IAAM,KACrB5H,GAAUxS,KAAKia,WAAWzH,QARtBlH,EAAIkH,QAAUxS,KAAKia,WAAW3O,EAAIkH,SAU1C6J,8BACS5L,MAAQ,IAEjB4N,kBAAS/S,EAAKgT,EAAO9L,QACZ/B,MAAMnF,EAAI8O,IAAM,CACjBkE,MAAAA,EACAF,KAAK,EACL5L,OAAAA,EACAjH,KAAMD,EAAIL,KAAKM,OAGvBgT,kBAASjT,OACCmF,EAAQzQ,KAAKyQ,MAAMnF,EAAI8O,OACzB3J,SACAA,EAAM2N,KAAM,EACL3N,EAAM6N,SCrCd,SAASE,OAAO3T,UAKpB4T,MAJI5T,EAAImM,QAAQ,YAAa,SAAUnU,UACnCA,EAAEmU,QAAQ,IAAK,IAAI0H,uBAM3B,SAASD,MAAM5T,UACXA,EAAImM,QAAQnM,EAAI,GAAIA,EAAI,GAAG8T,eCTvB,SAASrX,SAASV,UACf,MAAPA,EACD,GACe,WAAf6D,QAAO7D,GACH8J,KAAKC,UAAU/J,EAAK,KAAM,GAC1BhF,OAAOgF,GCLN,SAASgY,OAAOxd,OACvByd,EAAOzd,EAAK4V,QAAQ,WAAY,OAAOhL,2BACjB,IAAtB6S,EAAKve,QAAQ,OACbue,EAAOA,EAAK5B,OAAO,IAChB4B,ECJX,IAAIzE,GAAK,EAEM,SAAS0E,iBACb,IAAMC,KAAKC,SAAS1X,SAAS,IAAI2V,OAAO,EAAG,GAAKhY,iBAAUga,KAAKC,gBAAU9E,KAAM9S,SAAS,aCH3E6X,QAAQld,EAAMsS,EAAK3N,OACrBwY,EAAdpG,EAAQ/W,SACXsS,GAAO,IAAI7H,MAAM,KAAKvB,QAAQ,SAAAtI,GACvBuc,IACKpG,EAAMoG,IAA2B,UAApB3U,QAAOuO,EAAMoG,MAC3BpG,EAAMoG,GAAM,IAEhBpG,EAAQA,EAAMoG,IAElBA,EAAKvc,IAETmW,EAAMoG,GAAMxY,EACLoS,ECHI,SAASqG,UAAUnB,GAC9BlP,OAAOkP,EAAOte,UAAW,CACrB0f,2BACSC,SAAW,QACXC,oBAETC,+BACUhF,EAAOza,KAAK8T,QAAQ2G,UACrBiF,YAActgB,OAAO8B,KAAKuZ,GAAMpa,OAAO,SAAC+J,EAASgQ,OACb,IAAjCK,EAAKL,GAAIuF,OAAOC,aAAwB,KAClCnY,EAAWgT,EAAKL,GAAInP,KAAKxD,SAC/B2C,EAAQgQ,GAAM/P,GAAGM,UAAUlD,sBAAgBA,GAAY,UAGpD2C,GACR,KAGPoV,iCACSE,YAAc,IAEvBG,qBAAYvU,UACI,SAANwU,EAAOpS,MACLA,EAAI,KACAnC,OAAOzI,SACPwI,EAAIL,KAAKzG,QACT+G,EAAOmC,EAAGD,aAAa,SAAWmR,OAAOtT,EAAIL,KAAKzG,SAAWkJ,EAAGD,aAAa,SAAWnC,EAAIL,KAAKzG,QAEhG+G,IACDA,EAAOmC,EAAGD,aAAa,QAAUmR,OAAOtT,EAAI7J,QAAUiM,EAAGD,aAAa,QAAUnC,EAAI7J,OAEpF8J,GAGGuU,EAAIpS,EAAGqF,OAGf+M,CAAI9f,KAAK0N,KAEpBxK,gCACSlD,KAAK0N,GAAGE,YAMTmS,OAHCC,GAAKhgB,KAAK0N,GAAGuS,oBACb1D,SAAS2D,mBAIR5G,EAAO,kBAAMhW,EAAK6c,qBACxB7G,EAAK8G,WAAa,SAAA7U,UAAQjI,EAAK6c,WAAW5U,IAC1C+N,EAAK+G,WAAa,SAAAjf,UAAQkC,EAAKgd,SAASlf,IACxCkY,EAAKiH,YAAc,SAAA/b,UAASlB,EAAKgd,SAAS9b,EAAO,UAG7Cub,EADA/f,KAAK0N,GAAGD,aAAa+S,UAChB,CAACxgB,KAAK0N,GAAGD,aAAa+S,UAAUlH,IAEhCA,IAEFtZ,KAAKuc,SAASrZ,OAAO6c,KAEhCI,oBAAW5U,qBACAvL,KAAKsb,KAAK1Y,IAAI,SAACwX,UACX7O,EAAOrD,EAAKkY,WAAWlY,EAAK4L,QAAQ2G,KAAKL,GAAK7O,GAAQrD,EAAKuY,UAAUvY,EAAK4L,QAAQ2G,KAAKL,MAC/F1X,OAAO,SAACkE,eAAgB9D,IAAR8D,KAEvB8Z,gBAAOzV,cACGyC,EAAKzC,EAAKyC,UACXA,EAEIrD,GAAG5E,SAASiI,GACV4K,OAAO,kBAAMrN,EAAKyC,GAAGtF,EAAK0L,QAAQ6M,cAAc1V,MACjDyC,EAAG+I,OAEN/I,EADI,IAAIQ,KAAIR,GAJR,IAAIQ,MAOnB4J,qBAAYxM,OACF3K,EAAIX,KAAK8T,QAAQ1R,QAAQwe,OAC1BjgB,IAEA2K,EAAIuV,cACLvV,EAAIuV,YAAclgB,EAAE2K,EAAIwV,aAAengB,EAAE2K,EAAI7J,OAASd,EAAE2K,EAAIyV,WAAa,IAC7EzV,EAAInI,KAAOsU,UAAU,GAAI,CAAC9W,EAAE,KAAM2K,EAAIuV,YAAavV,EAAInI,SAE3D6d,oBAAW1V,GACHA,EAAInI,KAAK8d,WAAa3V,EAAInI,KAAKf,SAC/B+c,QAAQ7T,EAAInI,KAAMmI,EAAInI,KAAK8d,UAAW3V,EAAInI,KAAKf,UAGvD+c,iBAAQ7T,OACEtJ,EAAOsJ,EAAIL,KAAKjJ,KACtBA,GAAQ5C,OAAO8B,KAAKc,GAAMsZ,KAAK,SAAChc,EAAGC,UAAMD,EAAEI,OAASH,EAAEG,QAAU,EAAI,IAAGyL,QAAQ,SAAAN,GAC3EsU,QAAQ7T,EAAInI,KAAM0H,EAAK7I,EAAK6I,OAGpCqW,sBAAaxT,EAAIpC,MACRoC,EAAGlE,YAEDrG,EAAQmI,EAARnI,KACDjC,EAAO9B,OAAO8B,KAAKwM,EAAGlE,QACtBwJ,EAAShT,KAAKmhB,WAAW7V,GACzB8V,EAAahiB,OAAO8B,KAAK8R,GAE/B9R,EAAKiK,QAAQ,SAAArE,GACLkE,YAAY7H,EAAK5B,MAAOuF,GACxB4G,EAAGlE,OAAO1C,GAAO3D,EAAK5B,MAAMuF,GACvBsa,EAAW9gB,QAAQwG,IAAQ,IAAG4G,EAAGlE,OAAO1C,GAAOkM,EAAOlM,UAG7DA,EAAO4G,EAAGuG,SAASpB,OAASnF,EAAGuG,SAASpB,MAAM1P,MAAS,QACzDjC,EAAKZ,QAAQwG,IAAQ,IACrB4G,EAAGlE,OAAO1C,GAAO3D,EAAKxB,SAG9B0f,oBAAW/V,kBACF4C,KAAIoT,eACL1L,IAAI,yCACG,OAEL3K,EAAOK,EAAInI,KACViX,EAAW9O,EAAX8O,GAAItT,EAAOwE,EAAPxE,QAEN9G,KAAKuf,SAASnF,GAAK,CACf9O,EAAImS,KACLnS,EAAImS,GAAKzd,KAAK0gB,OAAOzV,QAChByC,GAAG/D,UAAU,kBAAM2B,EAAIqU,OAAOzV,QAAQoB,UAG3CoC,EAAKpC,EAAImS,GACTnS,EAAIsF,OACJlD,EAAGvE,IAAKuE,EAAGuG,SAASpB,OAASnF,EAAGuG,SAASpB,MAAMqC,OAAU,QAAS,SAACvT,GAC/D4G,EAAKhG,QAAQ+I,EAAK3J,UAGrB4d,SAASnF,GAAM,CAChB1M,GAAAA,EACA8L,SAAUtL,KAAIoT,QAAQrW,EAAKuO,iBAIZxZ,KAAKuf,SAASnF,GAA9B1M,IAAAA,GAAI8L,IAAAA,cAEN0H,aAAaxT,EAAIpC,OAEhByU,EAAKvG,EAAStW,OAAOpD,KAAK4N,UAE5BrD,GAAGE,MAAMwV,EAAG9d,QAAO8d,EAAG9d,KAAO,IACjC8d,EAAGjZ,IAAMA,EACTiZ,EAAG9d,KAAK0B,IAAM2H,EAAI3H,IAClBoc,EAAG9d,KAAK6E,IAAMA,EACPiZ,GAEXwB,mBAAUC,EAAMlW,UACLjB,GAAGjL,OAAOoiB,GAAQ/J,UAAU,CAAClW,MAAO,CAACC,iBAAkB8J,EAAInI,KAAK5B,MAAMC,mBAAoBggB,GAAQA,GAE7GC,qBAAY1B,EAAIzU,EAAKoW,OACXve,EAAOmI,EAAIoW,EAAO,OAAS,cAC1B,CAAC1hB,KAAKmT,WAAWnT,KAAKuhB,UAAUpe,EAAKwe,OAAQrW,IAAOyU,EAAI/f,KAAKmT,WAAWnT,KAAKuhB,UAAUpe,EAAKye,OAAQtW,MAG/G8U,oBAAW9U,EAAKC,UACLD,EAAIL,KAAKM,OAASA,EAAOvL,KAAKygB,UAAUnV,QAAOxI,GAE1Dwd,kBAASlf,EAAMK,cACLgZ,EAAOza,KAAK8T,QAAiB,UAATrS,EAAmB,WAAa,WAAWL,UAC9DqZ,EAAOA,EAAK7X,IAAI,SAAA0I,UAAO7C,EAAKgY,UAAUnV,EAAKA,EAAIkH,eAAW1P,GAErE2d,mBAAUnV,EAAKkH,MACM,WAAblH,EAAI7J,UACFwJ,EAAOK,EAAIL,SACXjL,KAAKyQ,MAAMnF,EAAI8O,KAAQpa,KAAKyQ,MAAMnF,EAAI8O,IAAI7O,OAASN,EAAKM,KAAM,KAC5DwU,EACA8B,GAA2B,IAAf5W,EAAKwF,MACfqR,EAAQxW,EAAIyV,SACZgB,IAAS1X,GAAGE,MAAMU,EAAK4C,UAAc5C,EAAK4C,YAClC,aAAViU,GAAyB7W,EAAKuO,SAM3B,GAAc,eAAVsI,EACP/B,EAAK/f,KAAKgiB,eAAe1W,OACtB,CACHA,EAAI2W,gBACCnK,YAAYxM,QACZiR,SAAS2F,SAAS5W,QAClB6T,QAAQ7T,QACR0V,WAAW1V,QACX6W,QAAQ7W,OACTnI,EAAOmI,EAAInI,KACfA,EAAKif,WAAapX,YAAY7H,EAAM,WAAaA,EAAKif,QAAWpiB,KAAKoC,QAAQggB,SAC9Ejf,EAAK5B,MAAMC,iBAAmBxB,KAAKmhB,WAAW7V,OACxC8W,EAAUjf,EAAKif,WAEjBjf,EAAKwV,wBACA0F,SAAS/S,OAAKxI,EAAW0P,MAIpB,aAAVsP,GAAwB3e,EAAKqW,SAC7BuG,EAAK/f,KAAKqhB,WAAW/V,GACrBuW,GAAY,MACT,KACCpa,EAAW,GACX6D,EAAIqU,OAAOqC,eACXva,EAAW6D,EAAIqU,OAAOqC,eAAe1W,IACF,IAA5BA,EAAIqU,OAAOC,eAClBnY,EAAWzH,KAAKgiB,eAAe1W,QAE7BC,EAAOvL,KAAK6f,YAAYvU,GAE1ByU,EADAxU,EACKA,EAAK,CACNN,KAAAA,EACA9H,KAAAA,EACAif,QAAAA,EACA3a,SAAAA,EACAqB,IAAK9I,KAAK8T,QAAQhL,IAClB+J,MAAO1P,EAAK0P,OAAS,KAGpBuP,EAAU9W,EAAIqU,OAAOyC,QAAQ3a,EAAU6D,GAAOA,EAAIqU,OAAOzc,OAAOuE,EAAU6D,GAGvFyU,EAAK/f,KAAKyhB,YAAY1B,EAAIzU,IAClBA,EAAIsF,OAASvG,GAAGE,MAAMpH,YAAkC,IAAhBA,WAC5C4c,EAAK/f,KAAKuc,SAAS8F,SAAS/W,EAAKyU,IAEjCgC,IACAhC,EAAK/f,KAAK6N,QAAQkS,IAEtBA,EAAK/f,KAAK+P,KAAKzE,EAAKyU,QAvDpBA,EAAK/f,KAAKyhB,YAAYzhB,KAAKgiB,eAAe1W,GAAMA,GAAK,GACjDyW,QACKlU,QAAQkS,GAEjBA,EAAK/f,KAAK+P,KAAKzE,EAAKyU,UAqDpB8B,QACKxD,SAAS/S,EAAKyU,EAAIvN,GAEpBuN,SAGJ/f,KAAKue,SAASjT,KAEzBuC,iBAAQkS,iBACAxf,MAAM+B,QAAQyd,GAAK,KACb9d,EAAO,UACb8d,EAAG5U,QAAQ,SAAAtI,MACHtC,MAAM+B,QAAQO,GAAI,OAAO6F,EAAKmF,QAAQhL,GACtC6F,EAAKqZ,KAAKlf,IAAIZ,EAAKZ,KAAKwB,KAEzBZ,SAEAjC,KAAK+hB,KAAKhC,IAGzBgC,cAAKhC,MACGA,GAAMA,EAAG9d,YACL1B,MAAM+B,QAAQyd,EAAG9d,KAAK+B,OACtB+b,EAAG9d,KAAK+B,MAAM3C,KAAK,CAACwM,QAAS,SACvBxD,GAAGzI,OAAOme,EAAG9d,KAAK+B,OACxB+b,EAAG9d,KAAK+B,OAAS,iBAEjB+b,EAAG9d,KAAK+B,MAAQ,CAAC+b,EAAG9d,KAAK+B,MAAO,CAAC6J,QAAS,SAEvCkS,GAGfhQ,cAAKzE,EAAKyU,UACC/f,KAAKggB,GAAG,aAAc,CACzBzU,KAAMD,EAAIL,KAAKM,KACfzE,IAAKwE,EAAIxE,KACV,CAACiZ,KAERoB,oBAAW7V,cACFtL,KAAK0N,GAAG0F,UAAU9H,EAAI8O,KACvBpM,KAAKhO,KAAK0N,GAAG0F,UAAW9H,EAAI8O,GAAI,CAC5BtR,IAAK9I,KAAK8T,QAAQhL,IAClB+H,KAAM7Q,KAAKic,GAAG5C,OACd/G,QAAS,SAAAA,GACLvJ,EAAK+K,QAAQU,WAAWlJ,EAAKgH,IAEjCgC,WAAY,kBACDvL,EAAK+K,QAAQxB,QAAQhH,EAAI8O,KAEpChY,QAAS,GACTqF,SAAU,GACVtE,KAAM,GACNif,SAAS,EACT5d,MAAO8G,EAAI9G,MACXyG,KAAMK,EAAIL,KACV2F,MAAOtF,EAAIsF,YASL8Q,EANR1O,EAAShT,KAAK0N,GAAG0F,UAAU9H,EAAI8O,WACrCpL,OAAOgE,EAAQ,CACXoP,QAAS9W,EAAInI,KAAKif,QAClBhgB,QAASkJ,EAAInI,KAAKf,QAClBqF,SAAU6D,EAAIL,KAAKxD,SACnBtE,MACUue,oBAAWpW,EAAInI,MACrBue,EAAKjJ,GAAKiJ,EAAKjJ,qBAASiJ,EAAKjJ,IAAM,UAC5BiJ,EAAK7O,MACL6O,KAGR1O,GAEXmP,iBAAQ7W,EAAKgX,cACF3e,EAAkB2H,EAAlB3H,IAAKmD,EAAawE,EAAbxE,IAAKmE,EAAQK,EAARL,UACZsR,SAAS7Q,UAAUJ,EAAKgX,GAC7BhX,EAAIqU,OAAOjU,UAAUJ,EAAKgX,OACpB/gB,EAAQ,CACV,CACIoC,IAAKA,EACLmD,IAAKmE,EAAKnE,eAAUA,QACpByE,UAAMzI,EACN2V,GAAI,gBACgB,WACZhP,EAAK8Y,UAAUjX,kBAEJ,SAACgH,GACZ7I,EAAKqK,QAAQU,WAAWlJ,EAAKgH,cAMxCgQ,GAAUhX,EAAIsF,QACftF,EAAInI,KAAK0P,MAAQ,CACblR,MAAO3B,KAAK8T,QAAQ0O,YAAYlX,GAChCmX,SAAU,SAAC9gB,GACP8H,EAAKlH,QAAQ+I,EAAK3J,IAEtB+gB,8BAAwBpX,EAAI8O,MAGpC1F,WAAWnT,EAAO+J,EAAInI,MACfmI,EAAInI,MAEfof,mBAAUjX,GACNA,EAAImS,GAAKzd,KAAK0N,GAAG7D,MAAMyB,EAAI3H,KACvB2H,EAAImS,MACHnS,EAAImS,GAAG1C,KAAOzP,EAAImS,IAAIkF,SAAWrX,EAAIL,MAE1CK,EAAIqU,OAAOzV,QAAQoB,QACdwI,QAAQ4E,OAAOpN,EAAK,YAE7B/I,iBAAQ+I,EAAK3J,QACJmS,QAAQvR,QAAQ+I,EAAK3J,IAE9BqgB,wBAAe1W,cACJ7D,EAAY6D,EAAIL,KAAhBxD,SAAsBiY,EAAc1f,KAAK0f,YAAYpU,EAAI8O,IAE1DwI,EAAO,SAAAvH,UACDhR,GAAGzI,OAAOyZ,IAAUA,EAAMjD,SAAWxO,EAAKkK,QAAQ2G,KAAKY,EAAMjD,OAAOgC,YAG3E/P,GAAGM,UAAUlD,IAAaiY,QACtB5L,QAAQ5D,eAAe,WACxBwP,EAAYvU,QAAQ,SAAAkQ,GACXA,GACDuH,EAAKvH,IACLzR,EAAKkK,QAAQ+O,MAAMxH,EAAMjD,iBAIhCsH,YAAYpU,EAAI8O,IAAM,GACpB,KAGXsF,GAAe1f,KAAK8T,QAAQ5D,eAAe,WACvCwP,EAAYvU,QAAQ,SAAAkQ,GACXA,IAC4B,IAA7B5T,EAASnH,QAAQ+a,IAAiBuH,EAAKvH,IACvCzR,EAAKkK,QAAQ+O,MAAMxH,EAAMjD,YAK9B3Q,EAAS7E,IAAI,SAAAyY,MACXA,SACDhR,GAAGzI,OAAOyZ,GAAeA,EACzBA,EAAMjD,OACCxO,EAAK6W,UAAUpF,EAAMjD,OAAQ9M,QAEpC+P,EAAM5Z,MACNmI,EAAK8D,GAAG/D,UAAU,WACdC,EAAKkK,QAAQ8L,aAAanY,EAAU6D,GACpC1B,EAAKkK,QAAQD,iBAM7BiP,uBAAcxX,EAAK7D,OACTtE,EAAOmI,EAAInI,YACdA,EAAK0Y,UACG7b,KAAK+iB,MAAMC,cAAc7f,EAAK0Y,UAAW1Y,EAAMsE,GACtDzH,KAAK+iB,MAAMzX,EAAI7J,MACRzB,KAAK+iB,MAAMzX,EAAI7J,MAAM0B,EAAMsE,GAClCzH,KAAK+iB,MAAMzX,EAAIwV,YACR9gB,KAAK+iB,MAAMzX,EAAIwV,YAAY3d,EAAMsE,GACrCzH,KAAK+iB,MAAMzJ,KAAKmF,MAAMnT,EAAIwV,YAAa3d,EAAMsE,IAExD0L,oBAAWlI,EAAMxD,EAAU4G,iBAClBpD,MACDZ,GAAGzI,OAAOqJ,GAAO,OAAOA,MAExBxJ,KACA4M,EACA5M,EAAOwJ,EAAKxJ,aAEZA,EAAOwJ,EAAKZ,GACRY,EAAKxJ,KAAM,CACXA,EAAO+c,OAAOvT,EAAKxJ,UACbwhB,EAAQjjB,KAAK+iB,MAAMG,SAASzhB,GAC9BwhB,IAAOxhB,EAAO+c,OAAOyE,OAI5BxhB,OACDQ,EAAO,CAAC,CAACwF,WACT4C,GAAGM,UAAUM,EAAKxD,WAClBxF,EAAKZ,KAAK4J,EAAKxD,SAAS7E,IAAI,SAAAC,UAAKsgB,EAAKhQ,WAAWtQ,MAE9C7C,KAAKggB,GAAGve,oBAAUwJ,GAAOhJ,QC1a7B,SAASic,OAAOkF,GAC3BpU,OAAOhP,KAAM,CACT8T,QAASsP,EACTnH,GAAImH,EAAOnH,GACXvO,GAAI0V,EAAO1V,GACX6O,SAAU6G,EAAO7G,SACjBwG,MAAO,IAAIK,EAAOnH,GAAGoH,WAAWD,EAAO1V,MAG3CqK,UAAU/X,KAAM,CACZoC,0BACWghB,EAAOhhB,SAElBkZ,uBACW8H,EAAO9H,aAIjB6C,iBACAmB,aClBM,SAASgE,UAAUC,GAC9BvU,OAAOuU,EAAQ3jB,UAAW,CACtB4jB,0BAAiBvY,EAAMwN,OACbzF,EAAS/H,EAAK+H,QAAUhT,KAAKoC,QAAQqhB,mBACpCzjB,KAAK0jB,cAAczY,EAAMwN,EAAIzF,IAExC0Q,uBAAczY,EAAMhJ,EAAM+Q,EAAQhR,qBAC9B5C,OAAO8B,KAAKe,GAAMkJ,QAAQ,SAAAD,OAChBhC,EAAK5F,EAAKqgB,WAAW1Y,EAAMhJ,EAAKiJ,GAAI8H,EAAQhR,GAC9CkH,IACAjH,EAAKiJ,GAAKhC,KAGXjH,GAEX0hB,oBAAW1Y,EAAM/B,EAAI8J,EAAQhR,MACrBqI,GAAG5E,SAASyD,MAAoB,IAAX8J,IAAqB3I,GAAGE,MAAMyI,IAAY9J,EAAG+N,iBAC3DjX,KAAKgT,OAAO/H,EAAM/B,EAAI8J,GAC1B,IAAKhR,GAAQzB,MAAM+B,QAAQ4G,IAAOA,EAAG,KAAOmB,GAAGzI,OAAOsH,EAAG,KAAOmB,GAAG5E,SAASyD,EAAG,YAC3ElJ,KAAK0jB,cAAczY,EAAM/B,EAAI8J,GAAQ,GACzC,GAAI3I,GAAGzI,OAAOsH,GAAK,KAChBtC,EAAMiQ,QAAQ3N,MAChBtC,GAAOsC,IAAOtC,SACPA,EAAIqQ,SAAWjX,KAAK2jB,WAAW1Y,EAAMrE,EAAKoM,GAAQ,GAAQpM,IAI7Egd,mBAAUtY,EAAKmN,cACPvD,EAAQ,GAAIjK,EAAOK,EAAIL,KAAO4Y,EAAmC5Y,EAAnC4Y,WAAYrf,EAAuByG,EAAvBzG,MAAOpD,EAAgB6J,EAAhB7J,KAAM4R,EAAU/H,EAAV+H,OACvDjC,EAAO9F,EAAKwN,EAAK,OAAS,eAAiB,MAC3CpO,GAAGM,UAAUoG,GAAO,KAChB+S,EAAUD,GAAcrf,GAASpD,EACjC0iB,IACKrL,IAAIqL,mBAAoBA,IAC7B/S,EAAK5F,QAAQ,SAAA4Y,MACJA,OACDC,EACA3Z,GAAGjL,OAAO2kB,KACVC,EAAcD,EAAU/Q,OACxB+Q,EAAYA,EAAU3iB,UAEpB6iB,EAAWrF,iBAAUkF,cAAWC,IAChC7a,EAAK,0CAAIoB,2BAAAA,qBACXpC,EAAKwF,IAAGjL,eAAMwhB,UAAa3Z,OAC3BpC,EAAKwF,IAAGjL,eAAM,aAAcwhB,UAAa3Z,QAE7CpB,EAAGwN,QAAS,EAEPsN,IAA0B,IAAXhR,EAEb,KACCkR,EAAUF,GAAehR,GAAU9K,EAAK9F,QAAQqhB,YACpDvO,EAAM6O,GAAa1Z,GAAGE,MAAM2Z,GAAWhb,EAAKhB,EAAK8K,OAAO/H,EAAM/B,EAAIgb,QAHlEhP,EAAM6O,GAAa7a,aASnCoC,EAAIuE,SAAS4I,EAAK,KAAO,YAAcvD,EAChCA,GAEXyL,uBAAcwD,EAAMnR,SACOhT,KAAK0N,GAAGuG,SAASC,UAAjClR,IAAAA,OAAQiI,IAAAA,WACR,CACHnC,IAAK9I,KAAK8I,IACVkH,GAAIhQ,KAAK8I,IACTmC,KAAAA,EACAkZ,KAAMA,EAAK9L,WACXrV,OAAAA,EACAgQ,OAAAA,IAGRA,gBAAOmR,EAAMrE,EAAK9M,MACV8M,EAAIjR,SAAU,IACV7O,KAAKokB,WAAapkB,KAAKqkB,QACvB,OAAOvE,EACXA,EAAMA,EAAIjR,aAGRjO,EAAIZ,KAEJkJ,EAAK,mBACDjH,EAAOrB,EAAE+f,cAAcwD,EAAMnR,sBADfpB,2BAAAA,yBAEpB3P,EAAK2P,eAAWA,GAChBA,EAAK0S,QAAQriB,GACN6d,EAAI/f,MAAMC,KAAM4R,WAE3B1I,EAAG2F,SAAWiR,EACd5W,EAAG0F,OAASkR,EAAIlR,OACT1F,KDpEnB+U,SAASC,QACTmB,UAAUnB,YEzBJqG,MAAQ,CAAC,eAAgB,gBAEhB,SAASC,QAAQjB,GAC5BvU,OAAOuU,EAAQ3jB,UAAW,CACtB4kB,8BACUC,EAAOzkB,KAAKoC,QAAQqiB,QACrBA,OACDC,EAAQ,GACR7X,EAAQ8X,SAAS3kB,KAAKiP,OACtB5E,GAAGjL,OAAOqlB,KACNA,EAAKC,QAAOA,EAAQE,SAASH,EAAKC,MAAO,KAAOA,GAChDD,EAAK5X,QAAOA,EAAQ+X,SAASH,EAAK5X,MAAO,KAAOA,IAExDmC,OAAOhP,KAAM,CACT0kB,MAAAA,EACA7X,MAAAA,EACAgY,QAAS7kB,KAAKiP,MAAMvP,QAAUglB,SAG7B9G,IAAIzU,IAAI,WAAY,kBAAM7F,EAAKoK,GAAGjL,MAAM,WAAYa,EAAKwF,YACzDgc,aAETA,oCAYSpX,GAAGvE,IAAIob,MAXG,SAATQ,IACE7c,EAAK2c,SACL3c,EAAKwF,GAAGxG,KAAKqd,MAAOQ,GACpB7c,EAAK0V,IAAInb,MAAM,cAEfyF,EAAKwc,OAASxc,EAAK2E,MACnB3E,EAAK2c,QAAU3c,EAAK+G,MAAMvP,QAAUwI,EAAKwc,MACzCxc,EAAK8c,WACL9c,EAAK2L,gBASzB,SAAS8Q,SAAS1V,UACPA,EAAMvP,OAAS,GAAK,GAAKqf,KAAKkG,KAAKhW,EAAMvP,OAAS,GCzC9C,SAAS2f,YAAUkE,GAC9BvU,OAAOuU,EAAQ3jB,UAAW,CACtBslB,8BACSvH,UAAYwH,aAAanlB,KAAK2d,eAC9BA,SAAW,MAEpByH,sBAAalc,mBACJgc,qBACAvH,SAAW0H,WAAW,WACvBnc,IACA5F,EAAKqa,SAAW,MACjB,KAEPza,0BAEMlD,KAAKslB,SAEHtlB,KAAK0N,GAAG3G,OAAS,EACV/G,KAAKga,QAAQ9W,eAEfwK,GAAG3G,OAAS,EACV,OClBvB,SAASgV,KAAKzQ,GACVlM,OAAO8Y,iBAAiB5M,EAAI+C,OAAQ,CAChC+J,OAAQf,WAAW/L,GAAK,KAIjB,SAASia,YAAYnC,EAAQnY,EAAMqE,OACxC8K,EAAKrT,WAEXiI,OAAOhP,KAAM,CACToa,GAAAA,EACAzW,IAAKyW,EACLoL,QAASpL,EAAK,KACdnP,KAAAA,EACAoD,OAAQpD,EAAKoN,YAAcpN,EAC3B7J,KAAM6J,EAAK7J,KAEXS,MAAO,GACP4jB,OAAQ,GACRlK,KAAM,GACNmK,SAAU,GACVlT,OAAQ,KACRqO,YAAa,KACb1d,uBAAU8H,GACV4E,SAAU,GACV8V,QAAS,GACT/U,QAAS3F,EAAKzG,MACdiZ,QAAI3a,EACJwM,aAAcrE,EAAKzG,MAAQuK,SAASO,QAAgBxM,EACpD0B,MAAOyG,EAAKzG,YAAS1B,SAGpB8iB,kBACAC,YACL9J,KAAK/b,WACA+B,OAAOqhB,GAAQ,GAGxBpU,OAAOuW,YAAY3lB,UAAW,CAC1BkmB,oBAAW1kB,UACFpB,KAAK2lB,QAAQvkB,UACTukB,QAAQvkB,GAAQ,IAElBpB,KAAK2lB,QAAQvkB,IAExB8b,yBAAgB9b,QACC0B,IAAT1B,OACKukB,QAAU,UAER3lB,KAAK2lB,QAAQvkB,IAG5BykB,mBAAU9O,QACDjQ,IAAMC,WACXgQ,GAAQ/W,KAAKwS,QAAUxS,KAAKwS,OAAOqT,UAAU9O,IAEjD6O,2BACS9E,WAAa9gB,KAAKiL,KAAKxJ,UACvBA,KAAO+c,OAAOxe,KAAKiL,KAAKxJ,OAEjCskB,mBAAUpG,QACDA,OAASA,EACdA,EAAO9G,KAAK7Y,OAEhBiiB,+BACUhX,oBAAWjL,KAAKiL,aACfA,EAAKxD,cACPtE,KAAOsU,UAAU,IAAKxM,6BAAS7L,OAAO8B,KAAKlB,KAAK2lB,SAAS/iB,IAAI,SAAAsI,UAAK5H,EAAKqiB,QAAQza,OAAKlL,KAAK6P,aAElGmW,eAAM5C,UACKpjB,KAAK0N,KAAO0V,EAAO1V,IAE9BuY,wBACSpkB,MAAMsJ,QAAQ,SAAA+a,UAAMA,WACpBrkB,MAAQ,IAEjBskB,uBACSV,OAAOta,QAAQ,SAAA+a,UAAMA,WACrBT,OAAS,IAElBW,qBACSD,cACArS,QAAQuS,WAAWrmB,OAE5BsmB,wBACSxS,QAAQyS,SAASvmB,8BAIjBimB,eACAE,cACAK,SACLxX,OAAOhP,KAAM,CACToc,SAAS,EACTjZ,uBAAUnD,KAAKiL,MACf4E,SAAU,GACV4N,QARU,EASV3J,aATU,EAUVkG,aAVU,EAWVyM,UAXU,EAYV/Y,QAZU,EAaVqV,WAbU,EAcVvQ,OAAQ,KACRqO,YAAa,QAGrB2F,uBACSd,SAASva,QAAQ,SAAAub,UAAQA,EAAKtO,QAAUsO,EAAKtO,OAAOyC,YACpD6K,SAAW,IAEpB7K,yBACU8L,EAAM,eACJvjB,EAAQ8E,EAAKqT,KAAKjb,QAAQ4H,EAAKmG,QAC/BjL,GAAS,IACT8E,EAAKqT,KAAK5S,OAAOvF,EAAO,GACxB8E,EAAK4L,SAAW5L,EAAK4L,QAAQD,YAGjC7T,KAAKoc,QACLuK,SAGC7S,QAAQ8S,QAAQ,WACjB1e,EAAK4L,QAAQ5D,eAAe,WACxBhI,EAAKse,SACLG,IACAze,EAAK4L,QAAQ+O,MAAM3a,GACnB8G,OAAO9G,EAAM,CACTqT,KAAM,MAEXrT,EAAK0I,UAGhB7O,gBAAOqhB,EAAQvK,GACX7J,OAAOhP,KAAM,CACToc,SAAS,EACTtI,QAASsP,EACTpJ,QAASoJ,EAAOpJ,QAChByM,KAAMrD,EAAOta,IACb4E,GAAI0V,EAAO1V,GACXqT,SAAUqC,EAAOxY,QAAQ5K,KAAK8gB,YAC9BiC,MAAOK,EAAOpJ,QAAQ+I,MACtB8D,SAAS,KAEZhO,GAAQ7Y,KAAKimB,eACTK,eACAF,cChJPU,UAAY,MACR,SAACvnB,UAAM,SAACD,UAAMA,IAAMC,SACpB,SAACA,UAAM,SAACD,UAAMA,IAAMC,SACpB,SAACA,UAAM,SAACD,UAAMA,IAAMC,QACrB,SAACA,UAAM,SAACD,UAAMA,EAAIC,SACjB,SAACA,UAAM,SAACD,UAAMA,GAAKC,QACpB,SAACA,UAAM,SAACD,UAAMA,EAAIC,SACjB,SAACA,UAAM,SAACD,UAAMA,GAAKC,OACnB,SAACA,UAAM,SAACD,UAAOC,GAAKA,EAAEe,SAAWf,EAAEe,QAAQhB,IAAM,OACjD,SAACC,UAAM,SAACD,UAAOA,GAAKA,EAAEgB,SAAWhB,EAAEgB,QAAQf,IAAM,UAC9C,SAACA,UAAM,SAACD,UAAQwnB,aAAavnB,EAAbunB,CAAgBxnB,WAChC,SAACC,UAAM,SAACD,UAAQwnB,UAAUrO,GAAGlZ,EAAbunB,CAAgBxnB,aAC9B,SAACC,UAAM,SAACD,UAAMA,EAAIC,EAAE,IAAMD,EAAIC,EAAE,gBAC7B,SAACA,UAAM,SAACD,UAAMA,EAAIC,EAAE,IAAMD,EAAIC,EAAE,MAInC,SAASwnB,UAAUxD,GAC9BvU,OAAOuU,EAAQ3jB,UAAW,CACtBke,qBAAY5U,cACFkR,EAAKpa,KAAKslB,cACX5X,GAAG/D,UAAU,WACdyQ,IAAO9W,EAAKgiB,WAAapc,EAAKA,IAAO5F,EAAKuQ,cAGlDmT,mBAAUC,cACAhc,EAAO0D,QAAQsY,UAErB7nB,OAAO8Y,iBAAiBjN,EAAM,CAC1BoN,WAAYhB,WAAW4P,GAAO,KAGlCC,SAASjc,QACJqP,YAAYrP,GAEjBA,EAAK7I,QAAU7B,MAAM+B,QAAQ2I,EAAK7I,SAAW6I,EAAK7I,QAAU,IAE3D6I,EAAMA,EAAI,OAAYA,EAAI,QAAYE,QAAQ,SAAA4E,GACtCA,GAGL7H,EAAKif,OAAOpX,EAAM9E,UAEjBmc,SAASnc,GACVA,EAAKlJ,SACLkJ,EAAKlJ,OAAS8U,QAAQ5L,EAAKlJ,SAExBkJ,GAEXkc,gBAAOpX,EAAM9E,eACR,KAAM,QAAS,WAAY,QAAQE,QAAQ,SAAAD,GACxC6E,EAAK7E,IAAM9C,EAAKob,iBAAiBvY,EAAM8E,EAAK7E,OAGpDkc,kBAASnc,GACLA,EAAKoc,SAAWpc,EAAKoc,QAAQlc,QAAQ,SAAAub,GAC7BA,EAAKtD,SACLsD,EAAKtD,OAASvM,QAAQ6P,EAAKtD,YAIvCkE,kBAAShc,cACCL,EAAOK,EAAIL,KACjBZ,GAAGM,UAAUM,EAAKkR,OAASzH,WAAW,CAAC,CACnC+D,GAAIxN,EAAKkR,KAAK9b,OAAO,SAACknB,EAAKpkB,UACvBokB,mBAAcpkB,IAAU,SAACyD,GACrBqE,EAAK1J,MAAM4B,GAAQyD,EACnB2B,EAAKmF,GAAGjL,MAAM,OAAQU,EAAMyD,EAAKqE,EAAM1C,EAAK4L,OAEzCoT,GACR,MACHjc,EAAIuE,WAEZmV,oCAESwC,WAAY,OACZnD,SAAU,EACXrkB,KAAK6kB,cACAjH,IAAInb,MAAM,mBAEdyN,eAAe,cAChBzH,EAAKgf,UAAUhf,EAAKwG,OACpBxG,EAAK4b,SAAU,EACX5b,EAAK+e,WAAa/e,EAAKoc,eAChBpc,EAAKuc,WAEZvc,EAAKoc,SACLpc,EAAKmV,IAAInb,MAAM,YAEnBgG,EAAKiF,GAAG8F,cACR/K,EAAKuR,QAAQyF,kBACbhX,EAAKif,cAGb9H,sBAAanY,EAAU+K,WACdgV,WAAY,OACZnD,SAAU,OACVzG,IAAInb,MAAM,mBACVglB,UAAUhgB,EAAU+K,QACpB6R,SAAU,EACXrkB,KAAKwnB,iBACExnB,KAAKglB,gBAEPpH,IAAInb,MAAM,iBACVilB,gBAEJ1N,QAAQC,WAAWzH,IAE5BiV,mBAAUxY,EAAOuD,cAWPoN,EAAe,SAACnY,EAAU+K,GACxBnI,GAAGM,UAAUlD,IACbiB,EAAK+e,UAAUhgB,EAAU+K,IAIjCvD,EAAMrM,IAAI,SAACqkB,EAAO7jB,QACVoP,GAAWnI,GAAGjL,OAAO6nB,MACpBve,EAAKmc,SAAYrS,KAAUpP,GAASsF,EAAKgc,YAE1CuC,EAAM7O,QAAU6O,EAAM7O,OAAOmD,OAAStM,GAASvG,EAAK+R,KAAKwM,EAAM7O,OAAOgC,WACtEwF,EAAaqH,EAAM7O,OAAOnN,KAAKxD,SAAUwf,EAAM7O,QACxC6O,EAAM7O,WAeb9M,EAZAL,EAAO0D,QAAQsY,GAEbU,EAAW,oBACH1c,EAAKzG,QAASkE,EAAKgS,SAASzP,EAAKzG,QAAUkE,EAAKgS,SAASzP,EAAKzG,OAAO,KAAOyiB,EAAM7O,SAGhG1P,EAAKkf,WAAW3c,EAAM,OAAQ,CAAC4c,OAAQF,MAEnCA,KACAjf,EAAKgF,GAAGjL,MAAM,eAAgBwkB,EAAOve,EAAKI,SAI1Cgf,GAAS,EACTC,IAAWd,EAAM7O,OACjB9I,EAAerE,EAAKtJ,SACpBomB,EAAQ,CAERzY,GADAhE,EAAM2b,EAAM7O,QACO9I,iBACb0W,GAAS1a,EAAI0a,MAAMtd,MACrB4C,EAAI8Q,YACA4J,EAAO,IACHgC,OAAO1c,UAGXA,EAAIvJ,OAAO2G,YAGXsd,EAAO,IACHgC,OAAO1c,UAGX2D,EAAM7L,GAAS6jB,EAAQA,EAAMvY,OAASuY,EAAMvY,SAAW8I,SAASyP,GAChE3b,EAAM,KACNwc,GAAS,MAIhBxc,EAKGA,EAAIwV,aAAexV,EAAIL,KAAKxJ,OAC5B6J,EAAIsa,aACJld,EAAKuf,WAAW3c,IAEpB5C,EAAK4R,YAAYhP,EAAIL,UATf,KACAA,EAAOvC,EAAKse,UAAUC,GAC5B3b,EAAM,IAAIia,YAAY7c,EAAMuC,EAAM8c,EAASzY,EAAerE,EAAKtJ,OAC/D+G,EAAKuf,WAAW3c,QAQnB,GAAO,GAAMH,QAAQ,SAAA5L,UAAKmJ,EAAKkb,UAAUtY,EAAK/L,KAC/CmJ,EAAK4e,SAAShc,GACdA,EAAIkH,OAASA,GAAU,KACvBlH,EAAIiQ,KAAOtM,EACXvG,EAAKwf,OAAO5c,IAEXwc,IAAWC,GAAUrf,EAAKgQ,OAAOpN,EAAK,SAEX,IAA5BA,EAAIqU,OAAOC,cAA0BA,EAAatU,EAAIL,KAAKxD,SAAU6D,IAEhEkH,EAAQ,KACH2V,EApFG,SAAXC,EAAYvnB,OACV0mB,EAAMtY,EAAMpO,EAAI,OACf0mB,IAAQA,EAAInP,cACNvX,EAAI,EAAIunB,EAASvnB,EAAI,IAAM,MAElCuC,EAAQsF,EAAK4S,KAAKhb,QAAQinB,EAAInP,OAAOgC,WAClChX,GAAS,EAAIA,EAAQglB,EAASvnB,EAAI,GA8EnBunB,CAAShlB,GACvB+kB,GAAa,IAAM/kB,EACnBsF,EAAK4S,KAAK3S,OAAOwf,EAAY,EAAG,EAAG7c,EAAI8O,IAEvC1R,EAAK4S,KAAKja,KAAKiK,EAAI8O,QAIrBvC,EAAIvM,EAAIL,YACTK,EAAIub,UACLvb,EAAIub,SAAU,EACVxc,GAAG5E,SAASoS,EAAE9V,SACd2G,EAAKkV,IAAIC,MAAM,WAAY,WACvBnV,EAAK2f,cAAc/c,EAAKuM,EAAElW,MAAO,UAGzC+G,EAAKgQ,OAAOpN,EAAK,WAGjBA,EAAIsF,OACJxR,OAAOkpB,eAAezQ,EAAG,QAASnP,EAAK6f,YAAYjd,IACnD5C,EAAK8f,eAAeld,KAAM5C,EAAK8e,WAAY,GACxClc,MAGfkd,wBAAeld,UACJA,EAAIsF,OAAStF,EAAIL,KAAKoc,SAAWrnB,KAAKyoB,QAAQnd,IAEzDmd,iBAAQnd,cACEod,EAAWC,QAAQrd,GAAM4H,EAAW,GAAIpK,EAAM9I,KAAK8I,QACpD4f,EAAShpB,OAAQ,OAAO,qBAEpBmB,OACCwmB,EAAUqB,EAAS7nB,GAAI+nB,EAAWvB,EAAQjE,SAAY0D,UAAUO,EAAQP,WAAa,OAASA,UAAU,OAAOO,EAAQ1lB,WACxH0I,GAAGM,UAAU0c,EAAQpc,MAAO,qBAC3BhJ,mCACColB,OACHzf,MAAO0Q,OAAO,kBAAMsQ,EAAStd,EAAIL,KAAKtJ,MAAOmH,KAC7C4d,KAAMmC,SAASvd,EAAK+b,EAAQpc,MAC5B6d,SAAUze,GAAGzI,OAAOylB,EAAQpc,KAAK,SAEhChJ,EAAK2F,OAAS3F,EAAKykB,OAAWzkB,EAAK2F,QAAU3F,EAAKykB,OAASzkB,EAAK6mB,SAAW,iBAChF5V,EAAS7R,KAAKY,IAVTpB,EAAI,EAAGA,EAAI6nB,EAAShpB,OAAQmB,MAA5BA,OAYJqS,EAASxT,OAAQ,OAAO,MAEvBqpB,EAAU,GACZhS,GAAO,cACN7G,eAAe,WAChBgD,EAAS8V,UAAU7d,QAAQ,gBAAE2d,IAAAA,SAAUlhB,IAAAA,MAAOqD,IAAAA,KAAMuQ,IAAAA,QAASL,IAAAA,OAAQE,IAAAA,MAAOqL,IAAAA,KAAMlJ,IAAAA,UAC1EsL,SACAlhB,EAAQ0D,EAAIoa,SAASrkB,KAAK,CACtByN,QAAQ,EACRrH,SAAUwD,EACVrD,MAAAA,IAEE0D,EAAIoa,SAAS/c,OAAO2C,EAAIoa,SAASplB,QAAQomB,GAAO,QACtDqC,EAAQnhB,EAAQ,OAAS,WAAW,WACjB,aAAX4V,EACAzU,EAAKD,IAAInE,UAAUiD,EAAOqD,GACR,YAAXuS,EACPzU,EAAKD,IAAI+E,QAAQjG,EAAOqD,GACN,aAAXuS,GACPvS,EAAKE,QAAQ,SAAA4E,GACThH,EAAKD,IAAIiU,UAAUhN,EAAM,WAAYnI,KAErCA,GACAmB,EAAKD,IAAImgB,mBAAmBhe,IAGhClC,EAAKD,IAAI6P,QAAQ/Q,EAAOqD,QAKhCrD,EAAO,CACPmP,GAAO,MACDmS,EAAU,CACZznB,KAAM,qBACE,EACRqN,QAAQ,EACRrH,SAAUwD,GAEdK,EAAIoa,SAASrkB,KAAK6nB,GAClBngB,EAAK6U,IAAIC,MAAM,aAAc,WAErBrC,EACA1S,EAAI0S,QAAQ0N,EAAS1N,EAASH,GACvBF,GAAUE,EACjBvS,EAAIqS,OAAO+N,EAAS/N,GAAU7P,EAAI8O,GAAIiB,GAEtC/P,EAAIiQ,KAAK5S,OAAO2C,EAAIiQ,KAAKjb,QAAQgL,EAAI+C,QAAU,EAAG,EAAG6a,SAG1D,CACH5d,EAAIoa,SAAS/c,OAAO2C,EAAIoa,SAASplB,QAAQomB,GAAO,OAC1CyC,EAAUhR,MAAMuO,GACtByC,GAAWA,EAAQtO,UAI/BkO,EAAQrpB,QAAUM,KAAK0N,GAAG/D,UAAU,WAChCof,EAAQ5d,QAAQ,SAAAtI,UAAKA,aAEpB6K,GAAGjL,MAAM,UAAW6I,EAAI+C,OAAQrO,KAAK8I,UACrC4P,OAAOpN,EAAK,WACVyL,GAEXhD,oBAAW9E,UACAjP,KAAKopB,YAAYna,IAE5Bma,qBAAYna,cAEHA,IAAOA,EAAQjP,KAAKiP,WAEnBwL,oBAAWza,KAAKya,WAEjByK,qBACAlL,QAAQwF,wBACR6J,SAASpa,QACTgN,GAAGhN,MAAQA,OACXiB,eAAe,WAChBzG,EAAKmU,IAAIC,MAAM,WAAY,WACvBze,OAAO8B,KAAKuZ,GAAM/X,OAAO,SAAA0X,eAAwBtX,IAAlB2G,EAAKgR,KAAKL,KACpCjP,QAAQ,SAAAiP,UAAM3Q,EAAKoZ,MAAMpI,EAAKL,MACnC3Q,EAAKuQ,QAAQqC,kBAEjB5S,EAAK6f,WAAY,EACjB7f,EAAKub,WACLvb,EAAK6f,WAAY,EACjB7f,EAAKoK,UACLpK,EAAKiE,GAAGjL,MAAM,YAAagH,EAAKX,YAE/B8U,IAAI1W,KAAK,YAAalH,KAAKupB,iBAC3B3L,IAAIC,MAAM,YAAa7d,KAAKupB,iBAC5B7b,GAAGjL,MAAM,SAAUzC,KAAK8I,MAGjC+K,wBACSnG,GAAG6F,cAKpB,SAAS2T,SAASjc,OACRsN,EAAMC,kBAEZpZ,OAAO8B,KAAKqX,GAAKpN,QAAQ,SAAAD,GAChBF,YAAYC,EAAMC,IAAI8C,KAAK/C,EAAMC,EAAGqN,EAAIrN,MAE1CD,EAGX,SAAS0d,QAAQrd,OACP+b,EAAU/b,EAAIL,KAAKoc,SAAW,UAChChd,GAAGjL,OAAOioB,GAAiB,CAACA,GACpBA,EAGhB,SAASwB,SAASvd,EAAKL,OACd,IAAIpK,EAAI,EAAGA,EAAIyK,EAAIoa,SAAShmB,OAAQmB,IAAK,KACpC6lB,EAAOpb,EAAIoa,SAAS7kB,MACtB6lB,EAAKjf,WAAawD,EAClB,OAAOyb,GAInB,SAASsB,OAAO1c,WACHA,EAAIL,KAAK6D,OC5WP,SAAS0a,SAASjG,GAC7BvU,OAAOuU,EAAQ3jB,UAAW,CACtB4a,kBAASlP,UACDjB,GAAGE,MAAMe,EAAIsE,cACbtE,EAAIsE,WAAatE,EAAIqU,OAAO8J,QAAQzpB,KAAKwiB,YAAYlX,GAAMA,IAExDA,EAAIsE,YAEfhE,kBAASN,EAAK3J,EAAO+nB,EAAWC,GACxBre,EAAI8Q,UACR9Q,EAAIsE,WAAajO,OACZ+a,cAAe,OACfoB,mBACA9D,QAAQC,WAAW3O,QACnBse,YAAYte,EAAKoe,QACjBG,iBACAC,YAAYxe,EAAK3J,QACjB+L,GAAGjL,MAAM,SAAU6I,EAAI9G,MAAO7C,EAAO2J,EAAI+C,OAAQrO,KAAK8I,IAAK6gB,IAAW,QACtEjR,OAAOpN,EAAK,WAErB/I,iBAAQ+I,EAAK3J,OACLiF,EACA0E,EAAIsF,QAAU5Q,KAAK+pB,QAAQze,EAAK1E,EAAM0E,EAAIqU,OAAO8J,QAAQ9nB,EAAO2J,KAAStL,KAAKgqB,SAAS1e,EAAK1E,UACvFgF,SAASN,EAAK1E,EAAKjF,IAGhCioB,qBAAYte,EAAK3J,GACbqM,KAAKhO,KAAKiQ,SAAU3E,EAAI8O,GAAc,OAAVzY,OAAiBmB,EAAYnB,IAE7D6gB,qBAAYlX,UACDtL,KAAKiQ,SAAS3E,EAAI8O,KAE7BlH,sCACI+W,QAAQjqB,KAAK0N,GAAGwF,eACX4G,SAAS3O,QAAQ,SAAAiP,GAClB9W,EAAKoX,SAASN,GAAIjP,QAAQ,SAAAG,GACtBhI,EAAKoK,GAAGwF,SAAS5H,EAAI8O,IAAM5W,QAAQ8H,EAAIL,KAAKiI,cAG7ClT,KAAK0N,GAAGwF,UAEnBwU,+BACIuC,QAAQjqB,KAAK6Q,MACbzR,OAAO8Y,iBAAiBlY,KAAK6Q,KAAM7Q,KAAK8Z,SAASzZ,OAAO,SAAC+J,EAAS5F,OACxD8G,EAAMpD,EAAKmS,YAAY7V,GACvB4e,EAASlb,EAAKqgB,YAAYjd,UAChC8X,EAAO7L,cAAe,EACtBnN,EAAQ5F,GAAS4e,EACVhZ,GACRpK,KAAKoC,QAAQkY,YAAclb,OAAO8B,KAAKlB,KAAKua,YAAYla,OAAO,SAAC+J,EAAS5F,UACxE4F,EAAQ5F,GAAS,CACb6S,YAAY,EACZE,cAAc,EACdtO,IAAK,kBACMf,EAAKqS,WAAW/V,IAE3BwE,IAAK,SAACpC,GACFsB,EAAKqS,WAAW/V,GAASoC,IAG1BwD,GACR,IAAM,UACJyf,aAETtB,qBAAYjd,oBACD,CACH+L,YAAY,EACZpO,IAAK,kBACMb,EAAKoS,SAASlP,IAEzBtC,IAAK,SAACrH,GACEyG,EAAK4hB,SAAS1e,EAAK3J,IACnByG,EAAKwD,SAASN,EAAK3J,EAAO2J,EAAIqU,OAAOuK,YAAYvoB,EAAO2J,IAAM,MAK9EgP,qBAAYrP,GACHA,EAAKzG,OAAUwG,YAAYhL,KAAKua,WAAYtP,EAAKzG,SACtDyG,EAAKtJ,MAAQ3B,KAAKua,WAAWtP,EAAKzG,cAC3BxE,KAAKua,WAAWtP,EAAKzG,SAEhCgQ,oBAAWlJ,EAAKgH,QACPA,QAAQhH,EAAI8O,IAAM9H,GAE3BpC,wBAAehH,EAAIiT,GACVnc,KAAKmqB,mBACDA,YAAcjhB,GAElBlJ,KAAKmqB,YAAYhO,YACbgO,YAAYhO,KAAOA,GAE5B7D,OAAOpP,GACHlJ,KAAKmqB,cAAgBjhB,SAChBihB,YAAc,KACfjhB,EAAGiT,WACE0N,cAIjBA,wBACQ7pB,KAAKmqB,mBACEnqB,KAAKmqB,YAAYhO,MAAO,OAE9BzO,GAAG+F,8CAAkBzT,KAAKoC,QAAQkY,YAActa,KAAKua,WAAa,IAAQva,KAAK6Q,QAExFmZ,kBAAS1e,EAAK3J,UACH+O,KAAKC,UAAUrF,EAAIL,KAAKtJ,MAAOyoB,SAAW1Z,KAAKC,UAAoB,OAAVhP,OAAiBmB,EAAYnB,EAAOyoB,QAExGL,iBAAQze,EAAK3J,UACD0I,GAAGjL,OAAOuC,IAAUpB,MAAM+B,QAAQX,KAAWA,IAAU2J,EAAIL,KAAKtJ,OAE5E0mB,uBAAc/c,EAAK1E,EAAKyH,iBAChBhE,GAAG5E,SAAS6F,EAAIL,KAAKlJ,QAAS,KACxB0Z,EAAQnD,OAAO,kBAAMhN,EAAIL,KAAKlJ,OAAO6E,EAAK0E,EAAI+C,OAAQ9F,EAAKO,IAAK,CAACuF,OAAQA,GAAU,qBAC3EvL,IAAV2Y,EAAqB,OACzBnQ,EAAIL,KAAK0N,QAAmB,IAAV8C,IAG1BqO,qBAAYxe,EAAK1E,QACRyjB,YAAY/e,EAAK1E,QACjBgX,IAAInb,MAAM,UAAY6I,EAAI9G,MAAOoC,IAE1CyjB,qBAAY/e,EAAK1E,EAAKyH,GACdrO,KAAKwoB,eAAeld,UACf0O,QAAQqC,qBACR2I,gBACAtX,GAAGjL,MAAM,SAAUzC,KAAK8I,UACxB+K,gBAEJwU,cAAc/c,EAAK1E,EAAKyH,IAEjCgY,oBAAW/a,cACD8a,EAAO9a,EAAIL,KAAKmb,KACtB/b,GAAGM,UAAUyb,IAASA,EAAKjb,QAAQ,SAAA3G,OACzB0E,EAAK,kBAAMT,EAAK4hB,YAAY/e,EAAKA,EAAIL,KAAKtJ,MAAO,SAEvD8G,EAAKmV,IAAIzU,IAAI,UAAY3E,EAAO0E,GAChCoC,EAAIma,OAAOpkB,KAAK,kBAAMoH,EAAKmV,IAAI1W,KAAK,UAAY1C,EAAO0E,QAG/D4Q,yBACW1a,OAAO8B,KAAKlB,KAAK0a,aAMpC,SAAS0P,MAAMtjB,EAAKF,SACM,mBAARA,EAAqB,GAAKA,EAAMA,EAGlD,SAASqjB,QAAQ1T,GACbnX,OAAO8B,KAAKqV,GAAKpL,QAAQ,SAAAD,iBAAYqL,EAAIrL,KC/J7C,IAAMof,WAAa,CACfzR,cAAKvN,KAEL4e,qBAAYvoB,EAAO2J,UACR3J,GAEX8nB,iBAAQC,EAAWpe,UACRoe,GAEXxf,iBAAQoB,KAERpI,gBAAOuE,EAAU6D,UACNA,EAAI0O,QAAQ8I,cAAcxX,EAAK7D,IAE1C2a,iBAAQ3a,EAAU6D,UACPtL,KAAKkD,OAAOuE,EAAU6D,IAEjCI,mBAAUJ,MCVRif,QAAU,CAAC,QAAS,QAAS,KAAM,WAAY,OAAQ,SAAU,UAAW,SAAU,OAAQ,UAAW,YAAa,SAAU,YAAa,SAEpI,SAASC,WAAWjH,GAC/BvU,OAAOuU,EAAQ3jB,UAAW,CACtBgb,gBAAOR,UACIpa,KAAKqa,YAAYD,IAAOpa,KAAKyqB,WAAWrQ,GAAI,IAAMpa,KAAKya,KAAKL,IAEvEL,iBAAQK,UACGpa,KAAK0a,SAASN,IAAOpa,KAAK8b,QAAQ1B,KAAQpa,KAAKya,KAAKL,GAAM,CAACpa,KAAKya,KAAKL,IAAO,KAEvFsQ,kBAASpf,EAAKxE,EAAKrF,OACT+C,YAAW/C,SACZzB,KAAKwE,GAAOsC,QAGRtC,GAAOsC,GAAKzF,KAAKiK,QAFjB9G,GAAOsC,GAAO,CAACwE,IAK5Bqf,iBAAQrf,EAAKxE,EAAKrF,OACR+C,YAAW/C,SACXN,EAAMnB,KAAKwE,GAAOsC,OACnB3F,EAAK,OAAO,MACX4V,EAAO5V,EAAIwH,OAAOxH,EAAIb,QAAQgL,KAAS,EAAG,GAAG5L,OAAS,SACvDyB,EAAIzB,eACEM,KAAKwE,GAAOsC,GAEhBiQ,GAEXsD,qBAAY7V,UACAxE,KAAK0a,SAASlW,IAAU,IAAI,IAExCimB,oBAAWrpB,UACApB,KAAK8b,QAAQ1a,IAAS,IAEjC8mB,gBAAO5c,OACE8O,EAAyB9O,EAAzB8O,GAAI5V,EAAqB8G,EAArB9G,MAAOpD,EAAckK,EAAdlK,KAAM6J,EAAQK,EAARL,UACjBwP,KAAKL,GAAM9O,EAChBlK,GAAQpB,KAAK0qB,SAASpf,EAAKlK,EAAM,QAC5BkK,EAAIsF,aACJ8Z,SAASpf,EAAK9G,EAAO,cACrBolB,YAAYte,EAAKA,EAAIqU,OAAOuK,YAAYjf,EAAKtJ,MAAO2J,IACrDtL,KAAK4qB,YAAc5qB,KAAKspB,gBACnB5b,GAAGjL,MAAM,SAAU6I,EAAI9G,MAAOyG,EAAKtJ,MAAO2J,EAAI+C,OAAQrO,KAAK8I,OAGxE+hB,mBAAUvf,OACAwf,EAAO9qB,KAAKic,GAAG8O,eACdD,EAAKxf,EAAIwV,aAAegK,EAAKtM,OAAOlT,EAAI7J,QAAUqpB,EAAKxf,EAAIyV,WAAauJ,YAEnFrC,oBAAW3c,GACPA,EAAIya,UAAU/lB,KAAK6qB,UAAUvf,KAEjCV,iBAAQqY,OACErgB,EAAM5C,KAAKic,GAAGoH,WAAWH,SACzBzhB,EAAOmB,EAAIqgB,IAAUrgB,EAAI4b,OAAOyE,KAAWA,SAC1CzE,OAAO/c,IAElBmlB,iBAAQ1d,GACClJ,KAAKgrB,iBACDA,UAAY9hB,GAErBoP,OAAOpP,GACHlJ,KAAKgrB,YAAc9hB,SACd8hB,UAAY,OAGzBzE,kBAASjb,cACCoC,EAAK1N,KAAK0N,GAChBtO,OAAO8B,KAAKoK,EAAIL,MAAMvI,OAAO,SAAAwI,SAAc,MAATA,EAAE,IAAuB,MAATA,EAAE,KAAsC,IAAxBqf,QAAQjqB,QAAQ4K,KAAWC,QAAQ,SAACrE,OAC5FiQ,EAAe,aAARjQ,EACbwE,EAAIzJ,MAAMR,KAAKqM,EAAGK,OAAO,kBAAMzC,EAAIL,KAAKnE,IAAM,SAACtE,EAAG6K,QAC1C/J,EAAK+gB,SAAW/gB,EAAK0nB,WAAa1nB,EAAKgmB,eACvCvS,IAAoC,IAA5BzL,EAAIqU,OAAOC,oBACnBtc,EAAK0W,QAAQC,WAAW3O,QACxBhI,EAAKwa,iBAGTxa,EAAK8gB,UAAW,EAIJ,SAARtd,GAGG,GAAI,CAAC,QAAS,KAAM,WAAY,QAAQxG,QAAQwG,IAAQ,EAC3DxD,EAAKkgB,iBAAiBlY,EAAIL,KAAMzI,GAAK,IACzB,UAARsE,GAAmBwE,EAAIsF,OACvBtN,EAAKsmB,YAAYte,EAAKA,EAAIqU,OAAOuK,YAAY5e,EAAIL,KAAKtJ,MAAO2J,SAE9D,GAAI,CAAC,OAAQ,cAAchL,QAAQwG,IAAQ,EAC9CxD,EAAKsgB,UAAUtY,EAAa,SAARxE,QACnB,GAAI,CAAC,SAAU,UAAUxG,QAAQwG,IAAQ,EAC1CtE,GAAKc,EAAK6jB,OAAO3kB,EAAG8I,EAAIL,WACvB,GAAY,SAARnE,EACLwE,EAAIsa,aACJtiB,EAAK2kB,WAAW3c,QACb,GAAY,aAARxE,EAAoB,KACrBiQ,EAAO1M,GAAGM,UAAUnI,GAC1Bc,EAAK4M,eAAe,WACZ1N,IAAM6K,IACN/J,EAAK2nB,MAAM5d,EAAG/B,GACdhI,EAAK0W,QAAQyF,mBAEjB1I,GAAQzT,EAAKsc,aAAapd,EAAG8I,GAC7BhI,EAAKoK,GAAGjL,MAAM,SAAUa,EAAKwF,OAGrCxF,EAAK0W,QAAQC,WAAW3O,GACxBhI,EAAKuQ,UACLvQ,EAAK8gB,UAAW,OA3BZ9Y,EAAI8a,SA4BT,CAACpkB,MAAO+U,EAAMoF,KAAMpF,YAEtBmU,YAAY5f,IAErB2f,eAAM5W,EAAK/I,cACPjB,GAAGM,UAAU0J,IAAQA,EAAIlJ,QAAQ,SAAA0M,GAC7BA,GAAKA,EAAEO,QAAUP,EAAEO,OAAO5F,SAAWlH,GAAOpD,EAAK2a,MAAMhL,EAAEO,WAGjEyK,eAAMvX,kBACEA,EAAI8Q,aACDhC,EAA0B9O,EAA1B8O,GAAI5V,EAAsB8G,EAAtB9G,MAAOoM,EAAetF,EAAfsF,MAAOxP,EAAQkK,EAARlK,KACrBkK,EAAIsF,OACJxR,OAAOkpB,eAAehd,EAAIL,KAAM,QAAS,CACrCtJ,MAAO2J,EAAIL,KAAKtJ,MAChB2V,UAAU,IAIlBnJ,KAAKnO,KAAKya,KAAML,GAChBjM,KAAKnO,KAAKga,QAAQuF,SAAUnF,GAC5BjM,KAAKnO,KAAKga,QAAQ0F,YAAatF,GAC/BjM,KAAKnO,KAAK0N,GAAG0F,UAAWgH,GACxBjM,KAAKnO,KAAKiQ,SAAUmK,GACpBjM,KAAKnO,KAAKsS,QAAS8H,GACnBjM,KAAK7C,EAAK,cAEVsF,GAAS5Q,KAAK2qB,QAAQrf,EAAK9G,EAAO,SAClCpD,GAAQpB,KAAK2qB,QAAQrf,EAAKlK,EAAM,QAE5BwP,IAAU5F,YAAYhL,KAAK0a,SAAUlW,IACrC2J,KAAKnO,KAAK6Q,KAAMrM,QAGf0L,eAAe,WACX9H,EAAKkhB,aAC0B,IAA5Bhe,EAAIqU,OAAOC,cACPvV,GAAGM,UAAUW,EAAIL,KAAKxD,WACtB6D,EAAIL,KAAKxD,SAAS0D,QAAQ,SAAAvK,UAAKA,EAAEwX,QAAUhQ,EAAKya,MAAMjiB,EAAEwX,UAG5D9M,EAAIiQ,OAASnT,EAAK6G,OAClB7G,EAAKsF,GAAG8F,gBAGjB5C,OAEGxN,EAAQpD,KAAKsb,KAAKhb,QAAQ8Z,UAC5BhX,GAAS,QACJkY,KAAK3S,OAAOvF,EAAO,QAGvB4W,QAAQC,WAAW3O,GACxBA,gBACKoN,OAAOpN,EAAK,WACjBsF,IAAU5Q,KAAK0a,SAASlW,IAAUxE,KAAK0N,GAAGjL,MAAM,cAAe+B,EAAO8G,EAAIL,KAAMjL,KAAK8I,KACrFwC,EAAIL,KAAK6D,QAAU9O,KAAK0N,GAAGjL,MAAM,aAAc6I,EAAIL,KAAMjL,KAAK8I,KACvDwC,MCzKJ,SAAS6f,aAAa5H,GACjCvU,OAAOuU,EAAQ3jB,UAAW,CACtBsK,8BACUkhB,EAAW,WACb9nB,EAAKsnB,WAAY,EACjBtnB,EAAK+nB,UAAU,YAEfrrB,KAAK6kB,QACLuG,SAEKxN,IAAIC,MAAM,WAAYuN,IAGnCC,mBAAUjqB,cACA8H,EAAKlJ,KAAKoC,QAAQhB,GACxBiJ,GAAG5E,SAASyD,IAAOoP,OAAO,kBAAMpP,EAAGhB,EAAKY,YACnC4E,GAAGjL,MAAMrB,EAAMpB,KAAK8I,QChBtB,SAASwiB,UAAU/H,GAC9BvU,OAAOuU,EAAQ3jB,UAAW,CACtB2rB,kCACUC,EAAKxrB,KAAKic,GAAGwP,UACnBrsB,OAAO8B,KAAKsqB,GAAIrgB,QAAQ,SAAAD,OAChB/H,EAAOqoB,EAAGtgB,GACVb,GAAG5E,SAAStC,KACZA,EAAOA,EAAKG,EAAK2Y,KAErB9Y,EAAKuoB,GAAKC,aAAaxoB,GACvBG,EAAKsoB,SAASzoB,GACdG,EAAKmoB,UAAUvgB,GAAK/H,KAG5ByoB,kBAASC,cACCC,EAAO,IACZD,EAASH,IAAM,CAAC,MAAMvgB,QAAQ,SAAA/J,OACrBK,EAAgB,MAATL,EAAe,IAAM8G,EAAK0C,QAAQxJ,GAC3C0qB,EAAKxrB,QAAQmB,IAAS,IAC1BqqB,EAAKzqB,KAAKI,GACVyG,EAAK0V,IAAIzU,gBAAS0iB,EAASzqB,iBAAQK,cAAQoqB,EAASjb,MAAQ,EAAI,GAAK,SAACsE,EAAOtD,GACzEia,EAAS3W,IAAU2W,EAAS3W,SAAT2W,qBAAmBja,SAG9Cia,EAASE,MAAQD,GAErBZ,qBAAY5f,cACFoC,EAAK1N,KAAK0N,GACZgL,EAAS,CACThX,SAAU,0BACEsJ,YAAYM,EAAIL,KAAM,aAAeK,EAAIL,KAAJ,oBAAwBK,EAAIL,mCAAJ+gB,EAAUtT,2BAAVuT,EAAkBvqB,YAAa,IAG5GtC,OAAO8B,KAAKoK,EAAIL,KAAKyN,QAAU,IAAIvN,QAAQ,SAAAD,GACvCwN,EAAOxN,GAAK,kBAAMI,EAAIL,KAAKyN,OAAOxN,MAEtC9L,OAAO8B,KAAKoK,EAAIL,MAAME,QAAQ,SAAAD,GACb,MAATA,EAAE,KACFwN,EAAOxN,EAAE+R,OAAO,IAAM,kBAAM3R,EAAIL,KAAKC,OAG7C9L,OAAO8B,KAAKwX,GAAU,IAAIvN,QAAQ,SAAAD,GAC9BI,EAAIzJ,MAAMR,KAAKqM,EAAGK,OAAO2K,EAAOxN,GAAI,SAAC1I,GACjC4F,EAAKsQ,OAAOpN,EAAK,2BAAWJ,EAAI1I,KACjC,CAACR,MAAM,QAGlB4lB,oBAAW3c,EAAMiK,EAAOiG,QACf+Q,WAAW,CACZjhB,KAAAA,EACA2F,QAAS3F,EAAKzG,MACd/C,KAAMzB,KAAK4K,QAAQK,EAAKxJ,OACzByT,EAAOiG,IAEdzC,gBAAOpN,EAAK4J,EAAOoN,QACV4J,WAAW,CACZjhB,KAAMK,EAAIL,KACV2F,MAAOtF,EAAIsF,MACXnP,KAAM6J,EAAIyV,SACVzV,IAAAA,EACAgX,OAAAA,GACDpN,IAEPiX,mBAAUlhB,EAAM7J,UACR4J,YAAYC,EAAM,IAAM7J,GACjB6J,EAAK,IAAM7J,GAElB4J,YAAYC,EAAM,WAAaD,YAAYC,EAAKyN,OAAQtX,GACjD6J,EAAKyN,OAAOtX,WAG3B8qB,sBAA6ChX,EAAOiG,cAAxC7P,IAAAA,IAAKL,IAAAA,KAAM2F,IAAAA,MAAOnP,IAAAA,KAAM6gB,IAAAA,UAC3B7gB,GAAiB,eAATA,OACPiX,EAAS4J,GAAmBljB,OAAO8B,KAAK+J,GAAM5K,OAAO,SAACQ,EAAGqK,SAC9C,MAATA,EAAE,KACFrK,EAAEqK,EAAE+R,OAAO,IAAMhS,EAAKC,IAEnBrK,qBACJoK,EAAKyN,QAAU,KACtBtZ,OAAO8B,KAAKwX,GAAQvN,QAAQ,SAAA6R,OAClBoP,EAAI7jB,EAAKkjB,UAAUzO,MACpBoP,KAAMA,EAAExb,OAAUA,QACnBkR,KACCsK,EAAEV,GAEA,CAAA,KAAIU,EAAEL,MAAMzrB,QAAQmB,IAAS,UAChCqgB,EAAQrgB,OAFRqgB,EAAQ,QAMN7f,kBAAQN,MAAO+W,EAAOsE,GAAOxC,SAAU,kBAAMjS,EAAK4jB,UAAUlhB,EAAM+R,KAAW7B,GAAU,IACzF7P,IACArJ,EAAKoqB,QAAU,kBAAM/gB,EAAIwa,WAAW9I,IACpC/a,EAAKqqB,UAAY,kBAAMhhB,EAAI4R,gBAAgBF,IAC3C/a,EAAKyJ,UAAY,SAACvI,UAASsU,UAAUxV,EAAKoqB,UAAW,CAAClpB,MAE1DoF,EAAKqV,IAAInb,kBAAWua,cAAQ8E,cAASsK,EAAExb,MAAQ,EAAI,GAAKsE,EAAO,CAACjT,EAAMgJ,EAAM1C,EAAKO,aAMjG,SAAS/B,OAAOwlB,UACLA,EAAI7pB,OAAO,SAAUqN,EAAM3M,EAAOmpB,UAC9BA,EAAIjsB,QAAQyP,EAAM,KAAO3M,IAIxC,SAASuoB,aAAaS,OACZ5sB,EAAI4sB,EAAEI,kBACRjsB,MAAM+B,QAAQ9C,GAAWuH,OAAOvH,EAAEkD,OAAO,SAAAG,SAAW,MAANA,OACzCwH,GAAGzI,OAAOpC,IAAW,CAACA,GCtGpB,SAAS+jB,QAAQtH,cAC5BjN,OAAOhP,KAAM,CACTic,GAAAA,EACAvO,GAAIuO,EAAGvO,GACP0W,UAAU,EACVC,SAAS,EACTiF,WAAW,EACX0B,UAAW,KACXb,YAAa,KACbS,WAAW,EACX3a,SAAU,GACVqC,QAAS,GACTzB,KAAM,GACN0J,WAAY,GACZkR,UAAW,GACXjE,UAAW,KACXlC,SAAU,EACV3H,SAAU,KACVjB,cAAc,EACdmI,SAAS,EACT0E,WAAY,WACRjmB,EAAK+nB,UAAU,aAIvBtT,UAAU/X,KAAM,CACZoC,0BACW6Z,EAAG7Z,SAEdwb,sBACW3B,EAAG2B,YAIbyL,SAASpN,EAAGhN,YAEZsN,SAAW,IAAIN,EAAGwQ,QAAQzsB,WAC1Bga,QAAU,IAAIkE,OAAOle,WACrB8I,IAAMmT,EAAGyQ,UAAU9S,IAAI5Z,MAAOA,MClDvC,SAAS2sB,SAASC,EAAQ5pB,EAAQ6pB,OACxBlX,oBAAiBiX,cAAUC,EAAIzf,YAC/B0I,EAAM,IAAIjO,MAAM8N,UACtBG,EAAI1I,OAASyf,EAAIzf,OACjB0I,EAAIvJ,IAAMqgB,EACH9W,EAGX,SAASgX,QAAQD,OACPE,EAAOF,EAAIG,cAAgBH,EAAII,aAChCF,SACMA,aAIArc,KAAK0G,MAAM2V,GACpB,MAAOvsB,UACEusB,GAIA,SAASG,MAAMlqB,MACI,oBAAnBmqB,oBAqBPld,EAjBE4c,EAAM,IAAIM,eACVP,EAAS5pB,EAAO4pB,OAEtBC,EAAIO,QAAU,SAAe5sB,GACzBwC,EAAOqqB,QAAQ7sB,IAGnBqsB,EAAIS,OAAS,cACLT,EAAIzf,OAAS,KAAOyf,EAAIzf,QAAU,WAC3BpK,EAAOqqB,QAAQV,SAASC,EAAQ5pB,EAAQ6pB,GAAMC,QAAQD,IAGjE7pB,EAAOuqB,UAAUT,QAAQD,KAG7BA,EAAIW,KAAKxqB,EAAOwa,QAAU,MAAOoP,GAAQ,GAGrC5pB,EAAOf,OACuC,UAAzCe,EAAOyqB,UAAY,IAAI9O,eACxB1O,EAAW,IAAIyd,SACftuB,OAAO8B,KAAK8B,EAAOf,MAAMW,IAAI,SAAAkE,GACzBmJ,EAASkL,OAAOrU,EAAK9D,EAAOf,KAAK6E,QAGrCmJ,EAAWS,KAAKC,UAAU3N,EAAOf,MACjC4qB,EAAIc,iBAAiB,eAAgB,sBAKzC3qB,EAAO4qB,iBAAmB,oBAAqBf,IAC/CA,EAAIe,iBAAkB,OAGpBC,EAAU7qB,EAAO6qB,SAAW,GAElCzuB,OAAO8B,KAAK2sB,GAAS1iB,QAAQ,SAAA4E,GACH,OAAlB8d,EAAQ9d,IACR8c,EAAIc,iBAAiB5d,EAAM8d,EAAQ9d,MAG3C8c,EAAIiB,KAAK7d,IDfbjB,OAAOuU,QAAQ3jB,UAAW,CACtBypB,kBAASpa,GACLD,OAAOhP,KAAM,CACTya,KAAM,GACNC,SAAU,GACVoB,QAAS,GACTR,KAAM,GACNrM,MAAAA,KAGR4J,qBACS0B,2DAAiBva,KAAKic,GAAG7Z,QAAQ6N,UAAY,IAAOjQ,KAAK0N,GAAG/L,OAAS,IAAO3B,KAAKua,iBACjFgR,mBACA/G,eACAQ,gBACAzI,SAASwR,cACTrgB,GAAGM,KAAKhO,KAAK0N,GAAI,WAAY1N,KAAKiQ,aAI/CqT,UAAUC,SACViB,QAAQjB,qBACEA,SACVwD,UAAUxD,SACViG,SAASjG,SACTiH,WAAWjH,SACX4H,aAAa5H,SACb+H,UAAU/H,SElFV,IAAMjiB,OAAO,sBAEE,CACXF,KAAME,OACN+J,YAAY,EACZ9J,MAAO,CAAC,SACR2B,gBAAOtC,EAAG0K,UACCA,EAAI/J,MAAM+c,MAAQhT,EAAI/J,MAAM+c,MAAQhT,EAAI7D,WCDvD,SAASumB,UAAU7qB,UACXkH,GAAGzI,OAAOuB,GACH,CAAC8qB,SAAU,CAACC,UAAW/qB,IAC3BA,EAGJ,SAASgrB,wBAENjL,EAAW,YAERG,EAAW3V,GAChBA,GAAM1N,KAAKouB,MAAM1gB,UAGrBsB,OAAOqU,EAAWzjB,UAAW,CACzBwuB,eAAM1gB,QACGA,GAAKA,OACLsS,GAAKtS,EAAGuS,gBAEjB3G,cAAK+U,EAAKpsB,EAAMwF,UACRyG,IAAIwF,OAAO4a,cAAcD,IAAQpsB,EAAKssB,iBAAiBtsB,EAAKssB,SACzDvuB,KAAKgjB,cAAcqL,EAAKpsB,EAAMwF,IAEzCub,uBAAcvhB,EAAMQ,EAAMwF,OAClB+mB,EAAOxuB,KAAKggB,GAAGve,EAAMusB,UAAU/rB,GAAOwF,GAAY,WACtD+mB,EAAKC,QAAUzuB,KAAK0N,GACb8gB,GAEXtL,SAAAA,IAGJlU,OAAOqU,EAAY,CACfH,SAAAA,EACAD,eAAMA,EAAO7hB,GACT8hB,EAASD,GAAS7hB,GAEtBgd,aAAIsQ,GACAtvB,OAAO8B,KAAKwtB,GAAOvjB,QAAQ,SAACD,OAClB2T,EAAOD,OAAO1T,GACduT,EAAQnX,SAAS4D,GAAGc,oBACpBnJ,EAAI6rB,EAAMxjB,IACfA,EAAG2T,EAAMJ,GAAOtT,QAAQ,SAAA3I,GACrB6gB,EAAWJ,MAAM/X,EAAGrI,GACpBwgB,EAAWzjB,UAAU4C,GAAK,SAAUP,EAAMwF,UAC/BzH,KAAKsZ,KAAKzW,EAAGZ,EAAMwF,WAOvC4b,ECrDJ,SAASsL,cAAcC,OACpBC,0BAAsBC,sHAG5B1vB,OAAOC,OAAOwvB,EAAcjvB,UAAWgvB,GAChCC,EAGI,SAASC,QAAQhtB,GAC5BkN,OAAOhP,KAAM,CACT8T,QAAShS,EACT4L,GAAI5L,EAAQ4L,GACZtL,QAAS,GACTuB,IAAK,SACLorB,iBAAkB,CACdnX,OAAQ,CAAC,OAAQ,MAAO,OAAQ,YAAa,oBAGhDiO,iBACAhN,OAGT7J,OAAO8f,QAAQlvB,UAAW,CACtBmuB,kCACS/T,QAAUha,KAAK8T,QAAQkG,aACvBgV,GAAK,0BAAa1rB,EAAK0W,SAAQ7G,gCAExC0S,0BACS/e,IAAMC,YAGf8R,kBAEA9W,oBAEAme,0BAEArP,uBACW7Q,KAAK0N,GAAG7D,MAAM7J,KAAK2D,MAE9BsrB,sBAAard,EAAMvP,qBACRqS,WAAW9C,EAAKhP,IAAI,SAAAC,UAAKqF,EAAKgnB,YAAYrsB,KAAKR,EAAKrC,KAAK+uB,mBAEpE/S,uBAAc5Z,QACLA,QAAUpC,KAAKivB,aAAa,CAAC7sB,GAAUpC,KAAKmvB,0BAC5CptB,UAETmtB,qBAAY9sB,UACDA,GAEX8f,kBAAS5W,KAETI,mBAAUJ,KAEV6jB,mCACW,IAEXjsB,gBAAOuE,WCxDL2nB,kBAAoB,CACtBhuB,KAAM,oBACNiuB,cAAKrS,EAAM/R,EAAMnC,OACP0U,EAASR,EAAKxC,WACfgD,EAIDR,EAAKqP,UAAUnZ,SAAW,CAAC,CACvBoc,yBACUhkB,EAAM6M,MAAMlN,MACdK,EAAK,4BAFAsG,2BAAAA,yBAGE9I,EAAIgC,WAAJhC,GAASwC,EAAI8O,IAAe,IAAXoD,EAAkB,qBAAuBA,UAAW5L,GAAM,CAC9EoL,KAAAA,EACA/R,KAAAA,EACAnC,IAAAA,WAVhBkU,EAAKsP,YACLxjB,EAAImgB,mBAAmB,CAAChe,EAAKzG,UAgBrC3C,iBACIutB,kBAAkBC,WAAlBD,+BAIFlC,QAAQ,SAAUjR,YAYXsT,EAAIvc,EAAQ/H,EAAMnC,OACnB9F,EAASgQ,EAAOrR,SAChB0I,GAAG5E,SAASzC,KACZA,EAASA,EAAOiI,EAAMnC,MAE1B9F,WAfcA,UACVqH,GAAGzI,OAAOoB,KACVA,EAAS,CACL4pB,OAAQ5pB,EACRoc,GAAI,YAGLpc,EAQEwsB,CAASxsB,MACFA,EAAO4pB,cACZ,EAEN5pB,EAAOoc,KACRpc,EAAOoc,GAAK,eAEViO,EAAUrqB,EAAOqqB,QAEjBrH,EAAQ,eACLhT,EAAOwH,kBACRxH,EAAOsZ,YACPxjB,EAAIqT,KAAKlR,IACF,GAITjC,EAAM,SAACpC,QACG9D,IAAR8D,GACAoM,EAAOsZ,YACPxjB,EAAIqT,KAAKlR,IAETkU,QAAQnM,EAAOqZ,UAAWrpB,EAAOoc,GAAIxY,WAI7C0R,OAAO,kBAAM2D,EAAG5C,OAAO6T,uCAChBlqB,OACHuqB,mBAAUkC,OACFzJ,SACA9c,EAAK,SAACrG,UAAMA,EAAEZ,MACdoI,GAAG5E,SAASzC,EAAOoU,SACnBlO,EAAKlG,EAAOoU,OAEhBpO,EAAIE,EAAGumB,EAAMxkB,EAAMnC,IACnBA,EAAIqT,KAAKlR,KAEboiB,iBAAQ7sB,GACJwI,OAAIlG,GACAkjB,MACHqH,GAAY,SAAC7sB,UAAMsV,IAAItV,EAAEkvB,SAAW,cAAgB1sB,EAAO4pB,UAAUpsB,EAAGyK,EAAMnC,MAEpF,CAACkK,OAAAA,EAAQ/H,KAAAA,EAAMnC,IAAAA,OACX,QAGJ,CACH1H,KAAM,QACNuuB,kBACIJ,2BAEJ1tB,eAAMmR,EAAQ/H,EAAMnC,GACXymB,EAAIvc,EAAQ/H,EAAMnC,KACnBkK,EAAOsZ,YACPxjB,EAAIqT,KAAKlR,OAOnB2kB,UAAY,CACdxuB,KAAM,WACNiuB,cAAKrc,EAAQ/H,EAAMnC,OACTlC,EAAMipB,SAAS7c,EAAOwH,gBACP,IAAjB5T,EAAIlF,SACJsR,EAAOsZ,gBACJ,KACGpZ,kBACFxR,UAAU,EACV4tB,mBAAUQ,EAAGjtB,EAAG/C,GACZuK,GAAGU,MAAMlI,GAAK/C,EAAKoT,EAASwc,SAAW5vB,MAExC8G,OAEFsM,EAASwc,QAAS,KACfpqB,EAAQ2F,EAAK3F,OAAS,GAC1B4N,EAASwc,UAA6B,WAAjBjlB,QAAOnF,GAAqBA,EAAMA,MAAQA,IAAU,IAAM,OAEnF0N,EAAOqZ,UAAUnZ,SAAW,CAACA,GAEjCpK,EAAIqT,KAAKlR,IAEbpJ,iBACI+tB,UAAUP,WAAVO,uBAIR,SAASC,SAASjpB,UACVyD,GAAG3F,QAAQkC,GACJ,CAAClF,SAAUkF,GACXyD,GAAGzI,OAAOgF,GACV,CAAC8oB,QAAS9oB,GACVyD,GAAGE,MAAM3D,GACT,CAAClF,UAAU,GACX2I,GAAG5E,SAASmB,GACZ,CAAC0oB,UAAW1oB,GACXyD,GAAGjL,OAAOwH,GAGXA,EAFA,iBAMA,CACXsmB,MAAAA,QACAxrB,SAAUkuB,UACVR,kBAAAA,mBC1JEhuB,KAAO,YAEE,CACXA,KAAAA,KACAwe,cAAc,EACd1c,gBAAOuE,EAAU6D,UACRA,EAAInI,KAAK8qB,WAAU3iB,EAAInI,KAAK8qB,SAAW,IAC5C3iB,EAAInI,KAAK8qB,SAASC,UAAYzmB,EACvB6D,EAAIyX,MAAMzJ,KAAKhO,EAAInI,KAAK5B,MAAM8sB,KAAO,MAAO/iB,EAAInI,OAE3D6e,wBAAe1W,UACP/K,MAAM+B,QAAQgJ,EAAIL,KAAKxD,UAChB6D,EAAIL,KAAKxD,SAAS/E,OAAO,SAAAG,UAAKwH,GAAGzI,OAAOiB,KAAIktB,KAAK,IAErD,KCIJC,KAAyB,oBAAXC,QAA0BA,OAAO/hB,IAAM+hB,OAAO/hB,IAAMA,IAE7E,SAASgiB,WAAW9uB,EAAMgZ,OAClBjX,SACqB,IAArB1D,UAAUC,OAEV0a,GADAjX,EAAO1D,UAAU,IACP2B,GAEV+B,EAAO1D,UAAU,GAEd,CAAC2a,GAAAA,EAAIjX,KAAAA,GAGhB,SAASgtB,kBACED,yBAAW,0CAAWzwB,aAGjC,SAAS2wB,OAAOhuB,UACPA,GAAYA,EAAQqb,GAClBpT,GAAGG,QAAQpI,EAAQqb,IACpBrb,EAAQqb,GACR5Z,SAASwsB,cAAcjuB,EAAQqb,IAHDwS,OAAOpsB,SAAS4rB,KAMxD,SAASa,UAAUrhB,EAAOjM,OAChButB,EAAM,IAAIP,KAAK,CACjB/tB,sBAEW,CAACgJ,KAAMgE,EAAOjM,OAAQA,GAAU,KAE3CE,gBAAOtC,UACIA,EAAE,aAAc,CAAC+C,IAAK,KAAMpC,MAAOvB,KAAKwwB,kBAGvDD,EAAIE,SACGF,EAGX,SAASG,YAAYjb,OACX3O,EAAM2O,EAAM3O,KAAO,GACnB6Q,EAAQlC,EAAMkC,OAAS,GACvBC,EAASnC,EAAMmC,QAAU,GAC/BtC,SAASjU,WAATiU,4BAAiBxO,IACjByO,WAAWlU,WAAXkU,8BAAmBoC,IACnBnC,YAAYnU,WAAZmU,+BAAoBoC,IAEpBqB,yCAAgBnS,sBAAQ6Q,sBAAUC,KAGtC,IAAIwC,KAAK,EACHuW,SAAW,GAGF,SAASC,kBAAkBld,OAEhC8Y,qBACDqE,SAASzvB,KAAOyvB,UAEf9F,EAAU,GACV+F,EAAa,GACbrF,oBACCsF,WAEDjY,EAAQW,eACVuX,EAAe,CAACpQ,OAAQ,IACtB3e,EAAO,GACPohB,EAAa8K,6BAIV8C,EAAO7vB,OACNwF,EAAM+pB,SAASvvB,UACjBb,MAAM+B,QAAQsE,sBACHA,GACRA,WAGFsqB,QACCjvB,EAAOkuB,sBAAY1wB,WACrBwC,EAAKmY,IAAMnY,EAAKkB,OAAM2tB,EAAW7uB,EAAKmY,IAAMnY,EAAKkB,eAGhDguB,QACClvB,EAAOkuB,sBAAY1wB,WACrBwC,EAAKmY,IAAMnY,EAAKkB,OAAMsoB,EAAUxpB,EAAKmY,qCAAUnY,EAAKkB,UAAM/B,KAAMa,EAAKmY,eAGpEgX,EAAenO,GACpBI,EAAWjF,IAAI6E,YAGVtD,QACC1d,EAAOkuB,sBAAY1wB,cACpBwC,EAAKmY,IAAOnY,EAAKkB,UAChB/B,EAAOod,OAAOvc,EAAKmY,IACnBuF,EAAS1d,EAAKkB,KACdkuB,GAAwB,IAAjB1R,EAAOjI,MAAiBqT,EAAQ3pB,QAAQ0B,EACrDioB,EAAQ3pB,oCAAaiwB,GAAQ/G,YAAgB3K,GAC7C7G,EAAM1X,GAAQwX,eAAexX,GAC7Bue,EAAO7G,OAAS9J,OAAO8J,EAAO6G,EAAO7G,iBAGhC+C,EAAUzB,EAAIyB,OACfza,KACAiJ,GAAGzI,OAAOwY,GAAK,IACfhZ,EAAOod,OAAOpE,GACV,CAAC,cAAe,cAAc9Z,QAAQc,IAAS,SACxCyQ,IACJ,QAAkB/O,IAAd+Y,SACA2Q,EAAWprB,QAGtBA,EAAOod,OAAOpE,EAAGhZ,MACjBya,EAAYzB,EAEXhZ,GAASya,IACd2Q,EAAWprB,GAAQya,EACfA,EAAUpQ,kBAAkBkU,EAAOve,EAAMya,EAAUpQ,4BAGlDoG,WACEme,KAAKhhB,OAAO0D,YAAYC,aAG1B2e,WACEtB,KAAKhhB,OAAO6hB,mBAIdzS,EAAIlV,EAAI7G,UACTgI,GAAG5E,SAASyD,EAAGqoB,SAAUroB,EAAGqoB,QAAQlY,EAAQhX,GACvCgI,GAAG5E,SAASyD,IAAKA,EAAGmQ,EAAQhX,GAC9BrC,cAGFqZ,EAAOpK,EAAOuiB,EAAMhf,OACrB+d,EAAMD,UAAUrhB,EAAOuiB,GAAQ,IAC7BluB,EAAQitB,EAAI1mB,MAAMoS,GAAG3I,kBAC3BhQ,EAAMmP,QAAUD,EAChB4d,OAAO9sB,EAAMlB,SAASgC,YAAYmsB,EAAIxV,KAC/BzX,EAAMwF,eAGR4Q,EAAQ+X,OACTC,oBAAche,UACd+d,EACAC,EAAQD,QAAU,CACdjF,WAAAA,EACAzB,QAAAA,EACA+F,WAAAA,EACArF,UAAAA,EACA3S,MAAAA,EACA7W,KAAAA,UAGGyvB,EAAQD,QAEZb,kBAAkBc,YAGpB/e,EAAWjF,EAAIuB,EAAO7M,GAC3B4M,OAAOhP,KAAM,CACToa,GAAIA,OACJ1M,GAAAA,EACA2L,OAAAA,EACAoT,QAASkC,cAAcjb,EAAO+Y,SAC9B1B,QAAAA,EACAU,UAAAA,EACAxc,MAAO1O,MAAM+B,QAAQ2M,GAASA,EAAQ,GACtC7N,KAAMsM,EAAGuG,SAASC,UAAU9S,KAC5B2Q,MAAOrE,EAAGuG,SAASC,UAAUnC,MAC7B5O,KAAM,CACFqpB,WAAAA,EACAsE,WAAAA,GAEJzN,WAAAA,EACAzF,IAAK,IAAIoS,KACT/J,QAAS,KACT7jB,QAASA,GAAW,GACpBsqB,UAAWhZ,EAAOgZ,WAAc,SAAA5jB,UAAOA,UAEtC+P,YACAjF,YAAY5T,KAAKoC,SAClBpC,KAAKoB,OACDpB,KAAK+R,OACA4e,SAAS3wB,KAAKoB,QAAOuvB,SAAS3wB,KAAKoB,MAAQ,IAChDuvB,SAAS3wB,KAAKoB,MAAMC,KAAKrB,KAAK8I,QAE9B6nB,SAAS3wB,KAAKoB,MAAQpB,KAAK8I,gBAqF9B6oB,EAAQre,GACbtE,OAAOsE,EAAY,CACfse,QAASle,EAAOke,QAChBC,GAAIne,EAAOme,GACX5vB,KAAAA,EACA6W,MAAAA,EACA+C,UAAAA,EACAqV,UAAAA,EACAC,SAAAA,EACAG,OAAAA,EACA3R,OAAAA,EACAvB,IAAAA,EACA1E,QAAAA,EACA0X,eAAAA,EACA5Z,SAAAA,SACAxG,UAAAA,UACAkc,MAAAA,MACArb,MAAAA,EACAgF,QAAAA,QACAK,UAAAA,UACAZ,OAAAA,OACA2a,OAAAA,EACApY,cAAK5J,OACGshB,EAAMD,UAAUrhB,yDADL,IACmB3L,EAAQitB,EAAI1mB,MAAMoS,GAAG3I,iBAChD,CACHwe,eAAM/W,UACEA,GAAO1Q,GAAGG,QAAQuQ,KAClBzX,EAAMlB,QAAQqb,GAAK1C,GACvBqV,OAAO9sB,EAAMlB,SAASgC,YAAYmsB,EAAIxV,KAC/BzX,EAAMwF,OAEjBipB,kBACIxB,EAAIxV,IAAIC,YAAcuV,EAAIxV,IAAIC,WAAWC,YAAYsV,EAAIxV,MAE7DD,wBACSiX,SACLxB,EAAIrV,YAERlL,GAAI1M,EAAMwF,aAnP1B4nB,YAAYhd,EAAO+B,OAAS,IA6H5BzG,OAAO2D,EAAW/S,UAAW,CACzBiZ,2BACUnL,EAAK1N,KAAK0N,GACV9M,EAAI,IAAIoxB,QAAOhyB,WAChB8T,QAAUlT,EACf8M,EAAGsC,GAAKpP,EAAEkI,IACV4E,EAAGjL,MAAM,QAAS7B,EAAEkI,KAEpB4E,EAAGvE,IAAI,eAAgB,WACfjB,EAAK+pB,UACL/pB,EAAK+d,QAAUvY,EAAGK,OAAO,kBAAML,EAAGqF,KAAK/P,QAAQ,WAC3CkF,EAAK0L,YAAY1L,EAAK9F,SACtBsL,EAAGsC,GAAG6D,WACP,CAAC7R,MAAM,IACVkG,EAAK0L,YAAY1L,EAAK9F,UAE1B8F,EAAKjF,YAETyK,EAAGvE,IAAI,eAAgB,WACnBjB,EAAKgC,YAETwD,EAAGvE,IAAI,qBAAsB,cACzBuE,EAAGuF,WAAY,EACf/K,EAAK+d,SAAW/d,EAAK+d,UACrBrlB,EAAEmT,WAAW,IACT7L,EAAK9G,QACD8G,EAAK6J,MAAO,KACNwC,EAAMoc,SAASzoB,EAAK9G,MAAMd,QAAQ4H,EAAKY,OAC7C6nB,SAASzoB,EAAK9G,MAAMuH,OAAO4L,EAAK,eAEzBoc,SAASzoB,EAAK9G,QAIjCsM,EAAGvE,IAAI,eAAgB,WACnBvI,EAAEwkB,aAAa,kBAAMld,EAAK0V,IAAInb,MAAM,YAAa7B,EAAEkI,UAG3DmpB,wBACWjyB,KAAK0N,GAAGqF,MAAQ/S,KAAK0N,GAAGoE,cAEnC8B,qBAAYxR,QACHA,wBAAW6N,SAAU,GAAIgB,UAAW,GAAIC,SAAU,IAAOnC,SAASiiB,IACnEhxB,KAAKiyB,cACAhD,aAAajvB,KAAKoC,QAASpC,KAAK0N,GAAGqF,KAAK/C,GAAG0D,QAAU,IAAI,QAE7DsI,cAAc5Z,IAEvB6sB,sBAAahhB,EAAQ5L,EAAKmQ,UACtBnQ,EAAM0M,SAAS1M,GACfmQ,GAAU,CAAC,OAAQ,WAAY,UAAW,SAAU,WAAY,MAAMrH,QAAQ,SAAC3I,UACpEH,EAAIG,KAEXH,EAAIue,SACJ3S,EAAO2S,OAAS9I,YAAY7J,EAAO2S,OAAQve,EAAIue,eACxCve,EAAIue,aAEV9M,QAAQyI,SAAS0S,aAAa,CAAC5sB,GAAM4L,GACnCA,GAEX+N,uBAAc5Z,QACL6sB,aAAajvB,KAAKoC,QAASA,QAC3B0R,QAAQyI,SAASP,cAAchc,KAAKoC,UAE7Ca,wBACS6Q,QAAQ+E,YACRnL,GAAGjL,MAAM,UAAWzC,KAAK8I,QAElCA,sBACW9I,KAAK8T,QAAQhL,KAExB5F,yBACWlD,KAAK8T,QAAQ5Q,UAExBgH,wBACS4J,QAAQ5J,aAuErBynB,EAAQtY,GArBJrK,OAsBMqK,EAtBa,CACfA,OAAAA,EACAkY,iBAAQrjB,EAAK9L,MACT4uB,mCAAmBA,GAAkB5uB,GAAW,KACf,IAA7B8L,EAAIgkB,sBACRhkB,EAAIgkB,sBAAuB,EAC3BlC,KAAO9hB,MAEDikB,EAAc,SAAUljB,UACnBoK,EAAOpK,yDADyB,GACbjP,OAG9B2xB,EAAQQ,GAERjkB,EAAItO,UAAUuyB,YAAcA,EAC5BjkB,EAAI2N,UAAU,aAAchK,KAC5B3D,EAAI2N,UAAU,aAAcyV,SAQxCjO,EAAWjF,IAAI,CAACyS,SAAU,eAE1BlR,EAAOyS,MAEH1e,EAAO6d,SAASlY,EAAO+E,IAAI1K,GAE3BA,EAAO+d,QAAS,KACVA,EAAU/d,EAAO+d,QACvBA,EAAQjF,YAAcxd,OAAOwd,EAAYiF,EAAQjF,YACjDiF,EAAQ1G,SAAW/b,OAAO+b,EAAS0G,EAAQ1G,SAC3C0G,EAAQX,YAAc9hB,OAAO8hB,EAAYW,EAAQX,YACjDW,EAAQhG,WAAazc,OAAOyc,EAAWgG,EAAQhG,WAC/CgG,EAAQ3Y,OAAS9J,OAAO8J,EAAO2Y,EAAQ3Y,OACvC2Y,EAAQxvB,MAAQ+M,OAAO/M,EAAMwvB,EAAQxvB,aAGlCoX,MCxXLgZ,gBAAkB,CACpBC,KAAM,aACNC,MAAO,UACPC,SAAU,sBACVC,UAAW,WACXC,UAAW,aACXC,WAAY,UACZC,cAAe,sBACfC,KAAM,QAGJzxB,OAAO,wBAEE,CACXA,KAAAA,OACA0X,MACW,CAAC,OAAQ,QAAS,OAAQ,QAAS,OAAQ,WAAY,gBAAiB,YAAa,cAAczY,OAAO,SAAC+J,EAAS3I,UACvH2I,EAAQ3I,GAAQmX,eAAexX,OAAM,CAACK,KAAMA,EAAKkd,gBAC1CvU,GACR,IAEPsB,mBAAUJ,OACA/J,EAAQ+J,EAAInI,KAAK5B,MAClBA,EAAMuxB,cACPvxB,EAAMuxB,YAAcT,gBAAgB9wB,EAAME,OAAS4wB,gBAAe,QCxBxEjxB,OAAO,gBACE,CACXA,KAAAA,OACA0X,yBACK1X,OAAO,SAACoD,EAAO7C,UAAUiX,eAAexX,OAAfwX,CAAqB,GAAIpU,EAAO7C,KAE9DuB,wBACW,KCPT9B,OAAO,cACE,CACXA,KAAAA,OACA0X,MAAQ,eACEA,EAAQ,CAAC,WAAY,MAAO,QAAS,OAAQ,YAAYzY,OAAO,SAACyY,EAAOrX,UAC1EqX,EAAMrX,GAAQmX,eAAexX,OAAM,CAACK,KAAAA,IAC7BqX,GACR,WAEHA,EAAMia,MAAQna,eAAexX,OAAM,CAACK,KAAK,SAClCqX,EAPH,GASRpN,mBAAUJ,OACD/J,EAAS+J,EAAInI,KAAb5B,MACDA,GAASA,EAAMyxB,UAAYzxB,EAAMyxB,SAASC,UAC1C1xB,EAAM2xB,KAAO3xB,EAAMyxB,SAASC,SAAW,KCf7C7xB,OAAO,gBAEE,CACXA,KAAAA,OACA0X,MAAO,CACHqa,YAAava,eAAexX,OAAM,CAACgyB,OAAM,KAE7ClJ,qBAAYvoB,EAAO2J,OACXiD,EAAQhO,MAAM+B,QAAQX,GAAQJ,EAAQ+J,EAAInI,KAAK5B,MAAO8N,EAAM9N,EAAM8N,KAAO,SAEzD,IAAhB9N,EAAM6xB,MACO7kB,EAAQ5M,EAAQ,CAAC0N,EAAMgkB,WAAW1xB,IAAU0N,GAE5Cd,EAAS8kB,WAAW1xB,EAAM,KAAO0N,EAAOgkB,WAAW1xB,KCbtEP,OAAO,wBAEE,CACXA,KAAAA,OACA0X,MAAO,CACHwa,KAAM1a,eAAexX,OAAM,SAACmyB,UAAMA,EAAEhyB,MAAMiyB,SAAU,IACpDC,UAAW7a,eAAexX,OAAM,SAACmyB,UAAMA,EAAEhyB,MAAMiyB,SAAU,KAE7D9nB,mBAAUJ,OACA/J,EAAQ+J,EAAInI,KAAK5B,MAClBA,EAAMuxB,cACPvxB,EAAMuxB,YAAc,kBCbjB,CACX1xB,KAAM,QACN8B,gBAAO4sB,EAAGxkB,UACCA,EAAIyX,MAAM2Q,IAAI,CAACnyB,MAAO,CAACyQ,KAAM,KAAM,CACtC1G,EAAIyX,MAAM4Q,IAAIroB,EAAInI,KAAM2sB,OCF9B1uB,OAAO,gBAEE,CACXA,KAAAA,OACA8oB,qBAAYvoB,EAAO2J,UACXA,EAAInI,KAAK5B,MAAMqyB,WAAarzB,MAAM+B,QAAQX,GACnC6B,QAAQ7B,GAERA,YCFJ,CACXkyB,WACAlb,OACA/H,MACAkjB,OACAC,WACAJ,IACAvhB,QCfE4hB,IAAM,WACG,CACX7kB,OAAQ6kB,IAAM,SACdnvB,KAAM,IACNivB,OAAQE,IAAM,SACdC,KAAMD,IAAM,OACZ/mB,OAAQ,WACRinB,SAAUF,IAAM,WAChBG,QAASH,IAAM,UACfI,QAASJ,IAAM,UACfK,YAAaL,IAAM,cACnBD,WAAYC,IAAM,aAClBM,WAAYN,IAAM,aAClBH,WAAYG,IAAM,oBACRA,IAAM,SAChB5hB,OAAQ,WACRF,SAAU,aACVC,MAAO,UACPoiB,YAAaP,IAAM,cACnBQ,OAAQR,IAAM,cACdpjB,MAAOojB,IAAM,QACbS,SAAUT,IAAM,WAChBnjB,KAAMmjB,IAAM,OACZlqB,MAAO,UACP4pB,IAAKM,IAAM,MACXL,IAAKK,IAAM,MACXjoB,KAAM,SACN2oB,aAAcV,IAAM,eACpBW,KAAMX,IAAM,eACZ3hB,MAAO,UACPuiB,OAAQ,YACRtiB,QAAS,sBC/BWuiB,kBACb,CACHhkB,KAAM,CACFikB,QAAQ,EACRC,cAAe,QACfC,WAAY,QACZrwB,UAAU,EACVswB,UAAMnyB,GAEV6wB,IAAK,CACDuB,MAAM,EACNC,OAAQ,GAEZlkB,UAAW,CACPxP,KAAM,UACN4iB,SAAS,EACT1f,UAAU,EACVywB,UAAW,KACXF,MAAM,EACNxB,SAAK5wB,EACLuyB,WAAOvyB,GAEXoO,SAAU,CACNzP,KAAM,UACN4iB,SAAS,EACT1f,UAAU,EACVE,KAAM,kBACNuwB,UAAW,KACXF,MAAM,EACNxB,SAAK5wB,EACLuyB,WAAOvyB,ICxBnB,SAASwyB,UAAUC,SACM,YAAdA,EAAK9zB,KAGhB,IAAM+zB,aAAe,QAEd,SAASC,OAAOr0B,EAAMO,UAChB6zB,aAAaE,KAAKt0B,KAAUiJ,GAAGzI,OAAOD,IAAU0I,GAAGpF,OAAOtD,IAGvE,SAASg0B,KAAKp0B,EAAOH,SACZ4J,YAAYzJ,EAAOH,KACpBiJ,GAAGzI,OAAOL,EAAMH,MAChBG,EAAMH,yBAAUA,EAAOG,EAAMH,8BAAa,QAIlD,SAASw0B,QAAQhvB,UACE,IAARA,EAGX,SAASivB,SAASxzB,EAAKjB,GACf4J,YAAY3I,EAAKjB,KAAUiJ,GAAGjL,OAAOiD,EAAIjB,MACzCiB,EAAIjB,GAAQ,CAAC8zB,OAAQ7yB,EAAIjB,iBAIlB,CACX8R,wBACUrC,EAAO7Q,KAAK6Q,cACdA,EACOA,EAAKqC,WAET,IAAI4iB,QAAQ,SAAAjzB,UAAKA,OAE5BkzB,uBAAcvxB,OACJqM,EAAO7Q,KAAK6Q,cACdA,EACO,IAAIilB,QAAQ,SAACE,EAASC,GACzBplB,EAAKklB,cAAcvxB,EAAO,SAAAhE,GACtBA,EAAIy1B,EAAOz1B,GAAKw1B,EAAQ,UAI7B,IAAIF,QAAQ,SAAAjzB,UAAKA,OAE5BomB,4BAAmB3d,OACT4qB,EAAQl2B,KAAK0N,GAAG7D,MAAMyB,EAAIka,SAC5B0Q,IACAA,EAAMC,gBAAkB,GACxBD,EAAME,cAAgB,KAG9BlH,qBAAY9sB,UACP,YAAa,WAAY,MAAO,OAAQ,OAAQ,OAAO+I,QAAQ,SAAA/J,GAC5Dy0B,SAASzzB,EAAShB,KAEfgB,GAEX8f,yBAAU/e,IAAAA,YACNwyB,KAAKxyB,EAAM,SACXwyB,KAAKxyB,EAAM,QACJA,GAEXuI,mBAAUJ,OACF/J,EAAQ+J,EAAInI,KAAK5B,MACrB+J,EAAInI,KAAOuR,WAAW,CAAC,CACnBe,MAAOrW,OAAO8B,KAAKK,GAAOlB,OAAO,SAAC+J,EAASxD,UACnC6uB,OAAO7uB,EAAKrF,EAAMqF,MAClBwD,EAAQxD,GAAOrF,EAAMqF,IAClBwD,GACR,IACHmrB,KAAMv1B,KAAKoC,QAAQmzB,MAAQ,GAC3Bc,KAAMr2B,KAAKoC,QAAQi0B,MAAQ,GAC3B3C,IAAK1zB,KAAKoC,QAAQsxB,KAAO,IAC1BpoB,EAAInI,MAAO,CACVoyB,KAAM,CACF7X,QAAS,QACT4Y,UAAW,YACXzxB,KAAM,mBAEVS,MAAO,GACPouB,IAAK,CAAC1hB,KAAM,IACZqkB,KAAM,IACP,CAACze,OAAQ,CAAC,QAAS,OAAQ,MAAO,WAEzCuX,oCACW0F,aAEX9yB,sBACU8O,EAAO7Q,KAAKoC,QAAQyO,UACrB5F,KAAO,CACR1J,wBAAWsP,GACX0d,SAAU,CACNgI,OAAQ,SAAC/1B,GACLA,EAAEg2B,yBAGH,CAAC3lB,EAAK4lB,UAAW5lB,QAAY,eACpC7M,MAAO6M,EAAK7M,MACZvC,KAAM,SAGdye,4BACWpZ,EAAqB9G,KAArB8G,IAAKnD,EAAgB3D,KAAhB2D,IAAKmQ,EAAW9T,KAAX8T,QACjB9E,OAAOhP,KAAKiL,KAAM,CAACnE,IAAAA,EAAKnD,IAAAA,IACxBqL,OAAOhP,KAAKiL,KAAK1J,MAAO,CACpBsR,MAAOiB,EAAQ7D,SACfhB,MAAO6E,EAAQZ,cAGvBhQ,gBAAOuE,UACCA,EAAS/H,QACT+H,EAASpG,KAAKrB,KAAK02B,eAEhB12B,KAAKgvB,GAAGhvB,KAAKiL,KAAM2qB,QAAQ51B,KAAKoC,QAAQuxB,IAAIuB,MAAQztB,EAAW,CAACzH,KAAK22B,QAAQlvB,MAExF4a,kBAAS/W,EAAK7D,OACJwD,EAAOK,EAAInI,KACXyzB,YAAS52B,KAAK8G,YAAMwE,EAAIxE,KACxB4sB,EAAMzoB,EAAKyoB,IACXmD,EAAU72B,KAAK62B,QAAQ5rB,GACvB+pB,EAAetB,EAAIsB,YAAe6B,EAAenD,EAAIsB,WAAR,IACvBh1B,KAAKiL,KAAK1J,MAA/BuzB,IAAAA,OAAagC,IAALpD,IACT3jB,EAAO6lB,QAAQ3qB,EAAKorB,KAAKnB,MAAQztB,EAAWzH,KAAKgvB,GAAGta,WAAW,CAACzJ,EAAKorB,KAAM,CAC7E90B,qCACIyzB,gBAA2B,IAAfA,EAAwBA,EAAa1tB,SAAS0tB,GAC1DryB,MAAOk0B,EAAU5rB,EAAK3F,MAAMA,WAAQxC,GAChCmI,EAAKorB,MAAQ,QACjBlzB,KAAMmI,EAAI8O,GACVnL,MAAOhE,EAAKiI,iBAETjI,EAAKwrB,UACZ3vB,cAAQ8vB,QACRjzB,IAAK2H,EAAIka,QACT/jB,KAAM,cACL,CAACgG,EAAUovB,EAAU72B,KAAK+2B,SAAS9rB,EAAM2rB,GAAO,cAClC,IAAX9B,GAAmBc,QAAQkB,IAASlB,QAAQlC,EAAIwB,MAASnlB,EAAO/P,KAAKg3B,QAAQ/rB,EAAM2rB,EAAK,CAAC7mB,KAErG8mB,iBAAQ5rB,OAC4B,IAA5BjL,KAAKoC,QAAQyO,KAAKvL,MAAiB,OAAO,MACxCA,EAAQ2F,EAAK3F,eACRA,EAAMA,QAAUA,UAAiBswB,QAAQtwB,EAAM4vB,QAE9D6B,kBAAS9rB,EAAM2rB,OACLK,EAAYhsB,EAAK3F,MACjB4xB,EAAWjsB,EAAKsqB,KAChB4B,EAAQ7B,UAAU4B,GAClBrmB,EAAO7Q,KAAKoC,QAAQyO,KACpBpJ,EAAW,EAAEwvB,EAAU3xB,OAAS,KAAOuL,EAAKumB,aAAevmB,EAAK,iBAAmB,SAEpF+kB,QAAQsB,EAAShC,QAAUgC,EAAS3B,MAAQ2B,YAAqBtB,QAAQsB,EAASryB,MAAO,KACpF1B,EAAO,CACT1B,KAAMy1B,EAASz1B,MAAQ,UACvBF,wBAAW21B,GACXpwB,cAAQ8vB,SACRrrB,KAAM,SAGN2rB,EAAS3B,OAASvqB,YAAY7H,EAAK5B,MADzB,aAEV4B,EAAK5B,MAAL,QAAoB21B,EAAS3B,MAEjC9tB,EAA4B,SAAnByvB,EAASG,MAAmB,UAAY,QAAQr3B,KAAKgvB,GAAGta,WAAW,CAACwiB,EAAU/zB,IAAQ,CAC3FnD,KAAKgvB,GAAG,CACJvtB,KAAM,IACN8J,KAAM4rB,EAAQ,UAAY,mBACD,IAAlBD,EAASryB,KAAgB,kBAAoBqyB,EAASryB,KAC7DiC,cAAQ8vB,mBAIb52B,KAAKgvB,GAAGta,WAAW,CAACuiB,EAAW,CAClC11B,MAAO01B,EACP1rB,KAAM0rB,EAAU1rB,MAAQ,QACxBzE,cAAQ8vB,SACRn1B,KAAMw1B,EAAUx1B,MAAQ,UACvBgG,IAETuvB,iBAAQ/rB,EAAM2rB,EAAKnvB,OACTisB,EAAMzoB,EAAKyoB,WACV1zB,KAAKgvB,GAAG,OACJ0E,QACPjyB,KAAM,MACNF,MAAOmyB,GAAO,CAAC1hB,KAAM,IACrBlL,cAAQ8vB,UACTnvB,IAEPkvB,iBAAQlvB,OACEksB,EAAM3zB,KAAKoC,QAAQuxB,KAAO,UACzB3zB,KAAKgvB,GAAG,CACXvtB,KAAM,MACNF,MAAOoyB,QACAA,QACP7sB,cAAQ9G,KAAK8G,YACdW,IAEPivB,2BACQ3W,EAAK,MACJ6V,QAAQ51B,KAAKoC,QAAQ6O,UAAUikB,OAChCnV,EAAG1e,KAAKrB,KAAKs3B,iBAEZ1B,QAAQ51B,KAAKoC,QAAQ8O,SAASgkB,OAC/BnV,EAAG1e,KAAKrB,KAAKu3B,gBAEZxX,EAAGrgB,YAGFqQ,EAAO/P,KAAKgvB,GAAG,CACjBvtB,KAAM,WACNqF,cAAQ9G,KAAK8G,WACdiZ,UAE+B,IAA3B/f,KAAKiL,KAAK1J,MAAMuzB,OACjB/kB,EACA/P,KAAKgvB,GAAG,CACNvtB,KAAM,MACNF,MAAO,CAACyQ,KAAM,IACdlL,cAAQ9G,KAAK8G,WACd,CAACiJ,MAEZwnB,mCACUrmB,EAAWlR,KAAKoC,QAAQ8O,gBACvBlR,KAAKgvB,GAAG,CACXvtB,KAAM,SACNF,MAAO2P,EACPlN,MAAO,CAACc,MAAOoM,EAASpM,OACxB2T,GAAI,CACA4c,MAAO,eACGmC,EAAOl0B,EAAKwQ,QAAQhL,IAC1BoI,EAASmkB,MACHnkB,EAASmkB,MAAMmC,GACfA,EAAKja,gBAGnBzW,cAAQ9G,KAAK8G,WACd,CAACoK,EAASkkB,aAEjBkC,oCACUrmB,EAAYjR,KAAKoC,QAAQ6O,iBAExBjR,KAAKgvB,GAAG,CACXvtB,KAAM,SACNF,MAAO0P,EACPjN,MAAO,CAACc,MAAOmM,EAAUnM,OACzB2T,GAAI,CACA4c,MAAO,eACGmC,EAAOtvB,EAAK4L,QAAQhL,IAC1BmI,EAAUokB,MACJpkB,EAAUokB,MAAMmC,GAChBA,EAAKjB,WAGnBzvB,cAAQ9G,KAAK8G,WACd,CAACmK,EAAUmkB,cCjQhBtc,MAAQ,GAQd,SAAS2e,SAAS3e,IACb,QAAS,OAAQ,SAAU,SAAU,eAAgB,WAAY,WAAY,cAAe,aAAc,QAAS,cAAe,QAAS,QAAQ3N,QAAQ,SAAA/J,GACxJ0X,EAAM1X,GAAQwX,eAAexX,KAEjC0X,EAAM6b,KAAO7b,EAAM4b,aACnB5b,EAAM0b,OAAS1b,EAAMyb,YACrBzb,EAAM4e,MAAQ5e,EAAMub,YAGxB,SAASsD,UAAU7e,GAGfA,EAAK,eAAqBF,eAFX,4BACE,YAC4C,IAC7DE,EAAK,UAAgBF,eAHN,4BACE,YAEuC,IAG5D,SAASgf,QAAQ9e,OAEP+e,EAAQ,cAAiB,uBAA2B,WAE1Dz4B,OAAO8B,KAAK22B,GAAOx3B,OAAO,SAACkzB,EAAGzsB,UAC1BysB,EAAEzsB,GAAO8R,eAJA,OAIqB,CAACnX,KAAKo2B,EAAM/wB,KACnCysB,GACRza,GAGP,SAASgf,UAAUhf,OAET+e,EAAQ,CACVE,MAAO,CAAC,QAAS,GACjBzrB,KAAM,CAAC,OAAQ,GACf0rB,cAAe,CAAC,OAAQ,GACxBC,eAAgB,CAAC,QAAS,IAG9B74B,OAAO8B,KAAK22B,GAAOx3B,OAAO,SAACkzB,EAAGzsB,UAC1BysB,EAAEzsB,GAAO8R,eATA,SASqB,SAAA2a,UAAKA,EAAEhyB,MAAM,CAACqL,WAAYirB,EAAM/wB,GAAK,GAAI9B,UAAW6yB,EAAM/wB,GAAK,OACtFysB,GACRza,GAEHA,EAAMof,YAAcpf,EAAMif,MAC1Bjf,EAAMqf,WAAarf,EAAMxM,KAG7B,SAAS8rB,SAAStf,OACR+e,EAAQ,CACVQ,YAAa,CAAC,QAAS,GACvBC,WAAY,CAAC,OAAQ,GACrBC,YAAa,CAAC,QAAS,GACvBC,cAAe,CAAC,QAAS,GACzBC,aAAc,CAAC,OAAQ,GACvBC,cAAe,CAAC,QAAS,WAG7Bt5B,OAAO8B,KAAK22B,GAAOx3B,OAAO,SAACyY,EAAOhS,UAC9BgS,EAAMhS,GAAO8R,eAAe,QAAS,SAAA2a,UAAKA,EAAEhyB,MAAM,CAACE,KAAMo2B,EAAM/wB,GAAK,GAAI9B,UAAW6yB,EAAM/wB,GAAK,OACvFgS,GACRA,GAEHA,EAAM6f,WAAa7f,EAAMuf,YACzBvf,EAAM8f,UAAY9f,EAAMwf,WACxBxf,EAAM+f,WAAa/f,EAAMyf,YAClBzf,EApEX2e,SAAS3e,OACT6e,UAAU7e,OACV8e,QAAQ9e,OACRgf,UAAUhf,OACVsf,SAAStf,wLCHT,SAASggB,YAAYC,EAAKxgB,UAClBlO,GAAG3F,QAAQq0B,GACXA,EAAM,CAAC7D,KAAM6D,GACP1uB,GAAGE,MAAMwuB,IAAS1uB,GAAGjL,OAAO25B,KAAMA,EAAM,CAAC7D,KAAM3c,IAClDwgB,EAGI,SAASrM,UAAU5jB,EAAKlI,UACnCoO,OAAOlG,EAAK,CACRoK,kBAASuP,UACE,IAAIqT,QAAQ,SAACE,EAASC,OACnB+C,EAAQlwB,EAAIrB,SACZmU,EAAM,CAAChb,EAAE2b,SAASrJ,YACxB8lB,EAAM7tB,QAAQ,SAAAtI,GACV+Y,EAAIva,KAAKwB,EAAEqQ,cAEf4iB,QAAQla,IAAIA,GAAKqd,KAAK,WAClBjD,GAAQ,GACRvT,GAAYA,GAAS,WAChB,SAACjiB,GACNy1B,EAAOz1B,GACPiiB,GAAYA,GAAS,EAAOjiB,GAC5BI,EAAE8M,GAAGjL,MAAM,gBAAiBjC,EAAG,CAACsI,IAAAA,SAI5CitB,cAAe,SAACvxB,EAAOie,UACZ,IAAIqT,QAAQ,SAACE,EAASC,OACnB3qB,EAAM1K,EAAEyZ,YAAY7V,MACrB8G,OACC+I,EAAMzT,EAAE0R,QAAQhH,EAAI8O,IACpBwB,EAAM,CAAChb,EAAE2b,SAASwZ,cAAczqB,EAAI8O,KAC1C5W,QAAQ6Q,GAAKlJ,QAAQ,SAAAtI,GACjB+Y,EAAIva,KAAKwB,EAAEqQ,iBAAiB,kBACjB4iB,QAAQG,OAAO,iBAG9BH,QAAQla,IAAIA,GAAKqd,KAAK,WAClBjD,EAAQ,MACRvT,GAAYA,EAAS,cAChB,SAACjiB,GACNy1B,EAAOz1B,GACPiiB,GAAYA,EAASjiB,GACrBI,EAAE8M,GAAGjL,MAAM,sBAAuBjC,EAAG,CAACgE,MAAAA,EAAOsE,IAAAA,UAIzDmgB,4BAAmBnP,cAAQof,6DACvBpwB,EAAIrE,OAAOoV,WAAWC,GAAQ3O,QAAQ,SAAA3G,GAC9B00B,GAAU51B,EAAK61B,sBAAsB30B,GACzC5D,EAAEmZ,QAAQvV,GAAO2G,QAAQ,SAAAG,GACrB1K,EAAE2b,SAAS0M,mBAAmB3d,QAI1C6tB,+BAAsBrf,GAClBhR,EAAIrE,OAAOoV,WAAWC,GAAQ3O,QAAQ,SAAA3G,GAClC5D,EAAEmZ,QAAQvV,GAAO2G,QAAQ,SAAAG,OACfgH,EAAU1R,EAAE0R,QAAQhH,EAAI8O,IACzB9H,IACD/R,MAAM+B,QAAQgQ,GACdA,EAAQnH,QAAQ,SAAA0F,GACZA,EAAKoY,uBAEF3W,GACPA,EAAQ2W,2BAKxB8P,IAAK,CACD1U,QAAS,eAACA,6DACNvb,EAAIswB,eAAe,CAAC/U,UAAWA,KAEnC1f,SAAU,eAACA,6DACPmE,EAAIswB,eAAe,CAACz0B,WAAYA,KAEpCuwB,KAAM,eAACtnB,6DACH9E,EAAIswB,eAAe,CAAClE,OAAQtnB,MAGpCsD,SAAU,CACNmT,QAAS,eAACA,6DACNvb,EAAIuwB,cAAc,CAAChV,UAAWA,KAElC1f,SAAU,eAACA,6DACPmE,EAAIuwB,cAAc,CAAC10B,WAAYA,KAEnCuwB,KAAM,eAACtnB,6DACH9E,EAAIuwB,cAAc,CAACnE,OAAQtnB,MAGnCwrB,eAAgB,eAAC73B,yDAAQ,GACjBw3B,EAAMD,YAAYl4B,EAAEwB,QAAQ6O,WAAW,GAC3CjC,OAAO+pB,EAAKx3B,GACZX,EAAEwB,QAAQ6O,UAAY8nB,EACtBjwB,EAAIwT,kBAER+c,cAAe,eAAC93B,yDAAQ,GAChBw3B,EAAMD,YAAYl4B,EAAEwB,QAAQ8O,UAAU,GAC1ClC,OAAO+pB,EAAKx3B,GACZX,EAAEwB,QAAQ8O,SAAW6nB,EACrBjwB,EAAIwT,kBAERia,gBAAO+C,EAAWC,0BACdzwB,EAAIoK,SAAS,SAACtL,MACNA,EAAO,KACHqI,EAAWnH,EAAImH,WACf5F,GAAG5E,SAAS6zB,GACZhhB,OAAO,kBAAMghB,EAAUrpB,EAAU/H,MAEjCmC,GAAG5E,SAAS7E,EAAEwB,QAAQ8Z,WAAa5D,OAAO,kBAAM1X,EAAEwB,QAAQ8Z,SAASjM,EAAU/H,KAC7EtH,EAAE8M,GAAGjL,MAAM,SAAUwN,EAAU/H,SAGnCmC,GAAG5E,SAAS8zB,IAAWjhB,OAAO,kBAAMihB,gBAAOrxB,6BAASzI,YAM7DqJ,ECrHX,SAASyoB,QAAQ5e,GACbA,EAAWye,eAAenO,OAE1BuJ,WAAWrhB,QAAQ,SAAA0Q,GACflJ,EAAWkJ,UAAUA,EAAUza,KAAMya,KAGzCkP,QAAQ5f,QAAQ,SAACwU,GACbhN,EAAWgN,OAAOA,KAGtBvgB,OAAO8B,KAAKs4B,OAAQruB,QAAQ,SAAA/J,GACxBuR,EAAWmG,MAAM1X,GAAQo4B,MAAOp4B,KAIzB,SAASq4B,uBACb7I,kBAAkB,CACrBiB,aAAO6H,cACP9H,kBAAY8H,UACZjN,QAAAA,QACAC,UAAAA,UACA6E,QAAAA,QACA9b,MAAO,CACHmC,OAAQ,CAAC,MAAO,QAChBD,MAAO,CAAC,aACR7Q,IAAK,CAAC,QAAS,mCCjC3B,IAAM6L,WAAa8mB,gBAEG,oBAAXxJ,SACPA,OAAO3c,WAAaX,WAChBsd,OAAO/hB,KACPyE,WAAW4e,QAAQtB,OAAO/hB,UAI5B4K,QAAQnG,WAAWmG"}
1
+ {"version":3,"file":"form-create.min.js","sources":["../../../node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js","../../utils/lib/slot.js","../../../components/element-ui/checkbox/src/component.jsx","../../utils/lib/toarray.js","../../../node_modules/style-inject/dist/style-inject.es.js","../../../components/element-ui/frame/src/component.jsx","../../../components/element-ui/radio/src/component.jsx","../../utils/lib/type.js","../../../components/element-ui/select/src/component.jsx","../../../components/element-ui/tree/src/component.jsx","../../../components/element-ui/upload/src/component.jsx","../../utils/lib/modify.js","../../utils/lib/deepextend.js","../../utils/lib/extend.js","../../../components/element-ui/group/src/component.jsx","../src/components/index.js","../../../components/common/subform/src/component.jsx","../../core/src/components/formCreate.js","../../utils/lib/mergeprops.js","../../core/src/frame/attrs.js","../../utils/lib/console.js","../../utils/lib/json.js","../../core/src/frame/util.js","../../core/src/factory/creator.js","../../core/src/factory/maker.js","../../core/src/frame/api.js","../../utils/lib/tocase.js","../../utils/lib/tostring.js","../../utils/lib/toline.js","../../utils/lib/unique.js","../../utils/lib/deepset.js","../../core/src/render/index.js","../../core/src/render/cache.js","../../core/src/render/render.js","../../core/src/handler/page.js","../../core/src/factory/context.js","../../core/src/handler/loader.js","../../core/src/handler/input.js","../../core/src/factory/parser.js","../../core/src/handler/context.js","../../core/src/handler/index.js","../../core/src/frame/fetch.js","../../core/src/handler/inject.js","../../core/src/handler/render.js","../../core/src/handler/lifecycle.js","../../core/src/handler/effect.js","../../core/src/components/fragment.js","../../core/src/factory/node.js","../../core/src/factory/manager.js","../../core/src/frame/provider.js","../../core/src/parser/html.js","../../core/src/frame/index.js","../src/parsers/datePicker.js","../src/parsers/hidden.js","../src/parsers/index.js","../src/parsers/input.js","../src/parsers/slider.js","../src/parsers/timePicker.js","../src/parsers/row.js","../src/parsers/select.js","../src/core/alias.js","../src/core/manager.js","../src/core/config.js","../src/core/maker.js","../src/core/api.js","../src/core/index.js","../src/index.js"],"sourcesContent":["\"use strict\";function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}var normalMerge=[\"attrs\",\"props\",\"domProps\"],toArrayMerge=[\"class\",\"style\",\"directives\"],functionalMerge=[\"on\",\"nativeOn\"],mergeJsxProps=function(a){return a.reduce(function(c,a){for(var b in a)if(!c[b])c[b]=a[b];else if(-1!==normalMerge.indexOf(b))c[b]=_extends({},c[b],a[b]);else if(-1!==toArrayMerge.indexOf(b)){var d=c[b]instanceof Array?c[b]:[c[b]],e=a[b]instanceof Array?a[b]:[a[b]];c[b]=d.concat(e)}else if(-1!==functionalMerge.indexOf(b)){for(var f in a[b])if(c[b][f]){var g=c[b][f]instanceof Array?c[b][f]:[c[b][f]],h=a[b][f]instanceof Array?a[b][f]:[a[b][f]];c[b][f]=g.concat(h)}else c[b][f]=a[b][f];}else if(\"hook\"==b)for(var i in a[b])c[b][i]=c[b][i]?mergeFn(c[b][i],a[b][i]):a[b][i];else c[b]=a[b];return c},{})},mergeFn=function(a,b){return function(){a&&a.apply(this,arguments),b&&b.apply(this,arguments)}};module.exports=mergeJsxProps;\n","export default function getSlot(slots, exclude) {\n return Object.keys(slots).reduce((lst, name) => {\n if (!exclude || exclude.indexOf(name) === -1) {\n lst.push(slots[name])\n }\n return lst;\n }, [])\n}","import getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcCheckbox';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {\n type: Array,\n default: () => []\n },\n type: String,\n },\n watch: {\n 'formCreateInject.options': {\n handler() {\n this.update();\n },\n deep: true,\n },\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n methods: {\n options() {\n const opt = this.formCreateInject.options;\n return Array.isArray(opt) ? opt : [];\n },\n onInput(n) {\n this.$emit('input', this.options().filter((opt) => n.indexOf(opt.label) !== -1).map((opt) => opt.value).filter(v => v !== undefined));\n },\n update() {\n const checked = Array.isArray(this.value) ? this.value : [this.value];\n this.trueValue = this.options().filter((opt) => checked.indexOf(opt.value) !== -1)\n .map((option) => option.label);\n }\n },\n created() {\n this.update();\n },\n render() {\n return <ElCheckboxGroup {...this.formCreateInject.prop} props={{value: this.trueValue}}\n on-input={this.onInput}>{this.options().map((opt, index) => {\n const props = {...opt};\n const Type = this.type === 'button' ? 'ElCheckboxButton' : 'ElCheckbox';\n delete props.value;\n return <Type props={props} key={Type + index + '-' + opt.value}/>\n })}{getSlot(this.$slots)}</ElCheckboxGroup>\n }\n}\n","export default function toArray(value) {\n return Array.isArray(value)\n ? value\n : ([null, undefined, ''].indexOf(value) > -1 ? [] : [value]);\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import toArray from '@form-create/utils/lib/toarray';\nimport './style.css';\n\nconst NAME = 'fcFrame';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n type: {\n type: String,\n default: 'input'\n },\n field: String,\n helper: {\n type: Boolean,\n default: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n src: {\n type: String,\n required: true\n },\n icon: {\n type: String,\n default: 'el-icon-upload2'\n },\n width: {\n type: String,\n default: '500px'\n },\n height: {\n type: String,\n default: '370px'\n },\n maxLength: {\n type: Number,\n default: 0\n },\n okBtnText: {\n type: String,\n default: '确定'\n },\n closeBtnText: {\n type: String,\n default: '关闭'\n },\n modalTitle: String,\n handleIcon: {\n type: [String, Boolean],\n default: undefined\n },\n title: String,\n allowRemove: {\n type: Boolean,\n default: true\n },\n onOpen: {\n type: Function,\n default: () => {\n }\n },\n onOk: {\n type: Function,\n default: () => {\n }\n },\n onCancel: {\n type: Function,\n default: () => {\n }\n },\n onLoad: {\n type: Function,\n default: () => {\n }\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onRemove: {\n type: Function,\n default: () => {\n }\n },\n onHandle: {\n type: Function,\n default(src) {\n this.previewImage = this.getSrc(src);\n this.previewVisible = true;\n }\n },\n modal: {\n type: Object,\n default: () => ({})\n },\n srcKey: {\n type: [String, Number]\n },\n value: [Array, String, Number, Object],\n previewMask: undefined,\n footer: {\n type: Boolean,\n default: true\n },\n reload: {\n type: Boolean,\n default: true\n },\n closeBtn: {\n type: Boolean,\n default: true\n },\n okBtn: {\n type: Boolean,\n default: true\n },\n\n },\n data() {\n return {\n fileList: toArray(this.value),\n previewVisible: false,\n frameVisible: false,\n previewImage: ''\n }\n },\n watch: {\n value(n) {\n this.fileList = toArray(n);\n },\n fileList(n) {\n const val = this.maxLength === 1 ? (n[0] || '') : n;\n this.$emit('input', val);\n this.$emit('change', val);\n },\n src(n) {\n this.modalVm && (this.modalVm.src = n);\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n closeModel(close) {\n this.$emit(close ? '$close' : '$ok');\n if (this.reload) {\n this.$off('$ok');\n this.$off('$close');\n }\n this.frameVisible = false;\n },\n handleCancel() {\n this.previewVisible = false;\n },\n\n showModel() {\n if (this.disabled || false === this.onOpen()) {\n return;\n }\n this.frameVisible = true;\n },\n\n makeInput() {\n const props = {\n type: 'text',\n value: (this.fileList.map(v => this.getSrc(v))).toString(),\n readonly: true\n };\n\n return <ElInput props={props} key={this.key('input')}>\n {this.fileList.length ? <i slot=\"suffix\" class=\"el-input__icon el-icon-circle-close\"\n on-click={() => this.fileList = []}/> : null}\n <ElButton icon={this.icon} on={{'click': () => this.showModel()}} slot=\"append\"/>\n </ElInput>\n },\n\n makeGroup(children) {\n if (!this.maxLength || this.fileList.length < this.maxLength) {\n children.push(this.makeBtn());\n }\n return <div key={this.key('group')}>{...children}</div>\n },\n\n makeItem(index, children) {\n return <div class='fc-files' key={this.key('file' + index)}>{...children}</div>;\n },\n valid(f) {\n const field = this.formCreateInject.field || this.field;\n if (field && f !== field) {\n throw new Error('[frame]无效的字段值');\n }\n },\n\n makeIcons(val, index) {\n if (this.handleIcon !== false || this.allowRemove === true) {\n const icons = [];\n if ((this.type !== 'file' && this.handleIcon !== false) || (this.type === 'file' && this.handleIcon)) {\n icons.push(this.makeHandleIcon(val, index));\n }\n if (this.allowRemove) {\n icons.push(this.makeRemoveIcon(val, index));\n }\n return <div class='fc-upload-cover' key={this.key('uc')}>{icons}</div>\n }\n },\n makeHandleIcon(val, index) {\n return <i\n class={(this.handleIcon === true || this.handleIcon === undefined) ? 'el-icon-view' : this.handleIcon}\n on-click={() => this.handleClick(val)} key={this.key('hi' + index)}/>\n },\n\n makeRemoveIcon(val, index) {\n return <i class=\"el-icon-delete\" on-click={() => this.handleRemove(val)} key={this.key('ri' + index)}/>\n },\n\n makeFiles() {\n return this.makeGroup(this.fileList.map((src, index) => {\n return this.makeItem(index, [<i class=\"el-icon-tickets\"\n on-click={() => this.handleClick(src)}/>, this.makeIcons(src, index)])\n }))\n },\n makeImages() {\n return this.makeGroup(this.fileList.map((src, index) => {\n return this.makeItem(index, [<img src={this.getSrc(src)}/>, this.makeIcons(src, index)])\n }))\n },\n makeBtn() {\n return <div class='fc-upload-btn' on-click={() => this.showModel()} key={this.key('btn')}>\n <i class={this.icon}/>\n </div>\n },\n handleClick(src) {\n return this.onHandle(src);\n },\n handleRemove(src) {\n if (this.disabled) {\n return;\n }\n if (false !== this.onBeforeRemove(src)) {\n this.fileList.splice(this.fileList.indexOf(src), 1);\n this.onRemove(src);\n }\n },\n getSrc(src) {\n return !this.srcKey ? src : src[this.srcKey];\n },\n frameLoad(iframe) {\n this.onLoad(iframe);\n try {\n if (this.helper === true) {\n iframe['form_create_helper'] = {\n api: this.formCreateInject.api,\n close: (field) => {\n this.valid(field);\n this.closeModel();\n },\n set: (field, value) => {\n this.valid(field);\n if (!this.disabled)\n this.$emit('input', value);\n\n },\n get: (field) => {\n this.valid(field);\n return this.value;\n },\n onOk: fn => this.$on('$ok', fn),\n onClose: fn => this.$on('$close', fn)\n };\n\n }\n } catch (e) {\n console.log(e);\n }\n },\n makeFooter() {\n const {okBtnText, closeBtnText, closeBtn, okBtn, footer} = this.$props;\n\n if (!footer) {\n return;\n }\n return <div slot=\"footer\">\n {closeBtn ? <ElButton\n on-click={() => (this.onCancel() !== false && (this.frameVisible = false))}>{closeBtnText}</ElButton> : null}\n {okBtn ? <ElButton type=\"primary\"\n on-click={() => (this.onOk() !== false && this.closeModel())}>{okBtnText}</ElButton> : null}\n </div>\n }\n },\n render() {\n const type = this.type;\n\n let node;\n if (type === 'input') {\n node = this.makeInput();\n } else if (type === 'image') {\n node = this.makeImages();\n } else {\n node = this.makeFiles();\n }\n\n const {width = '30%', height, src, title, modalTitle} = this.$props;\n this.$nextTick(() => {\n if (this.$refs.frame) {\n this.frameLoad(this.$refs.frame.contentWindow || {});\n }\n });\n return <div class=\"_fc-frame\">{node}\n <el-dialog\n props={{appendToBody: true, modal: this.previewMask, title: modalTitle, visible: this.previewVisible}}\n on-close={this.handleCancel}>\n <img style=\"width: 100%\" src={this.previewImage}/>\n </el-dialog>\n <el-dialog props={{width, title, appendToBody: true, ...this.modal, visible: this.frameVisible}}\n on-close={() => (this.closeModel(true))}>\n {(this.frameVisible || !this.reload) ? <iframe ref=\"frame\" src={src} frameBorder=\"0\" style={{\n 'height': height,\n 'border': '0 none',\n 'width': '100%'\n }}/> : null}\n {this.makeFooter()}\n </el-dialog>\n </div>\n },\n mounted() {\n this.$on('fc.closeModal', this.closeModal);\n }\n}\n","import getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcRadio';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {},\n type: String,\n },\n watch: {\n 'formCreateInject.options': {\n handler() {\n this.update();\n },\n deep: true,\n },\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n methods: {\n options() {\n const opt = this.formCreateInject.options;\n return Array.isArray(opt) ? opt : [];\n },\n onInput(n) {\n this.$emit('input', this.options().filter((opt) => opt.label === n).reduce((initial, opt) => opt.value, ''));\n },\n update() {\n this.trueValue = this.options().filter((opt) => opt.value === this.value).reduce((initial, opt) => opt.label, '');\n }\n },\n created() {\n this.update();\n },\n render() {\n return <ElRadioGroup {...this.formCreateInject.prop}\n props={{value: this.trueValue}}\n on-input={this.onInput}>{this.options().map((opt, index) => {\n const props = {...opt};\n const Type = this.type === 'button' ? 'ElRadioButton' : 'ElRadio';\n delete props.value;\n return <Type props={props} key={Type + index + '-' + opt.value}/>\n })}{getSlot(this.$slots)}</ElRadioGroup>\n }\n}\n","const is = {\n type(arg, type) {\n return Object.prototype.toString.call(arg) === '[object ' + type + ']'\n },\n Undef(v) {\n return v === undefined || v === null\n },\n Element(arg) {\n return typeof arg === 'object' && arg !== null && arg.nodeType === 1 && !is.Object(arg)\n },\n trueArray(data) {\n return Array.isArray(data) && data.length > 0;\n },\n Function(v) {\n const type = this.getType(v);\n return type === 'Function' || type === 'AsyncFunction';\n },\n getType(v) {\n const str = Object.prototype.toString.call(v)\n return /^\\[object (.*)\\]$/.exec(str)[1]\n },\n empty(value) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (Array.isArray(value) && Array.isArray(value) && !value.length) {\n return true;\n }\n\n return typeof value === 'string' && !value;\n }\n};\n\n['Date', 'Object', 'String', 'Boolean', 'Array', 'Number'].forEach(t => {\n is[t] = function (arg) {\n return is.type(arg, t);\n }\n})\n\nexport function hasProperty(rule, k) {\n return ({}).hasOwnProperty.call(rule, k)\n}\n\nexport default is;\n","import is from '@form-create/utils/lib/type';\n\nconst NAME = 'fcSelect';\nexport default {\n name: NAME,\n functional: true,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n },\n render(h, ctx) {\n const options = ctx.props.formCreateInject.options;\n return <ElSelect {...ctx.data}>{(Array.isArray(options) ? options : []).map((props, index) => {\n const slot = props.slot;\n return <ElOption props={props}\n key={'' + index + '-' + props.value}>\n {slot ? <template\n slot={props.slotName || 'default'}>{is.Function(slot) ? props.slot(h) : slot}</template> : null}\n </ElOption>\n })}{ctx.children}</ElSelect>;\n }\n}\n","import toArray from '@form-create/utils/lib/toarray';\nimport getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcTree';\n\nexport default {\n name: NAME,\n formCreateParser: {\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!props.nodeKey) props.nodeKey = 'id';\n if (!props.props) props.props = {\n label: 'title'\n };\n }\n },\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n type: {\n type: String,\n default: 'checked'\n },\n value: {\n type: [Array, String, Number],\n default: () => ([])\n }\n },\n watch: {\n value() {\n this.setValue();\n }\n },\n methods: {\n onChange() {\n this.updateValue()\n },\n updateValue() {\n if (!this.$refs.tree) return;\n const type = this.type.toLocaleLowerCase();\n let value;\n\n if (type === 'selected') {\n value = this.$refs.tree.getCurrentKey();\n } else {\n value = this.$refs.tree.getCheckedKeys();\n }\n\n this.$emit('input', value);\n },\n setValue() {\n const type = this.type.toLocaleLowerCase();\n\n if (type === 'selected') {\n this.$refs.tree.setCurrentKey(this.value);\n } else {\n this.$refs.tree.setCheckedKeys(toArray(this.value));\n }\n }\n },\n render() {\n return <ElTree {...this.formCreateInject.prop} ref=\"tree\" on-check={() => this.updateValue()}\n on-node-click={() => this.updateValue()}>{getSlot(this.$slots)}</ElTree>;\n },\n mounted() {\n this.setValue();\n }\n}\n","import toArray from '@form-create/utils/lib/toarray';\nimport getSlot from '@form-create/utils/lib/slot';\nimport './style.css';\n\nfunction parseFile(file, i) {\n return {\n url: file,\n name: getFileName(file),\n uid: i\n };\n}\n\nfunction getFileName(file) {\n return ('' + file).split('/').pop()\n}\n\nconst NAME = 'fcUpload';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n onHandle: {\n type: Function,\n default(file) {\n this.previewImage = file.url;\n this.previewVisible = true;\n }\n },\n uploadType: {\n type: String,\n default: 'file'\n },\n limit: {\n type: Number,\n default: 0\n },\n allowRemove: {\n type: Boolean,\n default: true\n },\n previewMask: undefined,\n modalTitle: String,\n handleIcon: {\n type: [String, Boolean],\n default: () => undefined\n },\n value: [Array, String]\n },\n data() {\n return {\n uploadList: [],\n previewVisible: false,\n previewImage: '',\n cacheFiles: [],\n }\n },\n created() {\n if (this.formCreateInject.prop.props.showFileList === undefined) {\n this.formCreateInject.prop.props.showFileList = false;\n }\n this.formCreateInject.prop.props.fileList = toArray(this.value).map(parseFile);\n },\n watch: {\n value(n) {\n if (this.$refs.upload.uploadFiles.every(file => {\n return !file.status || file.status === 'success';\n })) {\n this.$refs.upload.uploadFiles = toArray(n).map(parseFile);\n this.uploadList = this.$refs.upload.uploadFiles;\n }\n },\n limit(n, o) {\n if (o === 1 || n === 1) {\n this.update();\n }\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n isDisabled() {\n return this.formCreateInject.prop.props.disabled === true;\n },\n onRemove(file) {\n if (this.isDisabled()) {\n return;\n }\n this.$refs.upload.handleRemove(file);\n },\n handleClick(file) {\n this.onHandle(file);\n },\n makeItem(file, index) {\n return this.uploadType === 'image'\n ? <img src={file.url} key={this.key('img' + index)}/>\n : <i class=\"el-icon-tickets\" key={this.key('i' + index)}/>\n },\n makeRemoveIcon(file, index) {\n return <i class=\"el-icon-delete\" on-click={() => this.onRemove(file)} key={this.key('ri' + index)}/>;\n },\n makeHandleIcon(file, index) {\n return <i\n class={(this.handleIcon === true || this.handleIcon === undefined) ? 'el-icon-view' : this.handleIcon}\n on-click={() => this.handleClick(file)} key={this.key('hi' + index)}/>;\n },\n makeProgress(file, index) {\n return <ElProgress props={{percentage: file.percentage, type: 'circle', width: 52}} style=\"margin-top:2px;\"\n key={this.key('pg' + index)}/>\n },\n makeIcons(file, index) {\n const icons = [];\n if (this.allowRemove || this.handleIcon !== false) {\n if ((this.uploadType !== 'file' && this.handleIcon !== false) || (this.uploadType === 'file' && this.handleIcon)) {\n icons.push(this.makeHandleIcon(file, index));\n }\n if (this.allowRemove) {\n icons.push(this.makeRemoveIcon(file, index));\n }\n\n return <div class='fc-upload-cover'>{icons}</div>;\n }\n },\n makeFiles() {\n return this.uploadList.map((file, index) => this.$scopedSlots.fileList ? this.$scopedSlots.fileList({\n file,\n index,\n vm: this\n }) : <div key={this.key(index)}\n class='fc-files'>{(file.percentage !== undefined && file.status !== 'success') ? this.makeProgress(file, index) : [this.makeItem(file, index), this.makeIcons(file, index)]}</div>);\n },\n makeUpload() {\n const isShow = (!this.limit || this.limit > this.uploadList.length);\n return <ElUpload {...this.formCreateInject.prop} ref=\"upload\"\n style={{display: 'inline-block'}}\n key={this.key('upload')}>\n {isShow ? <template slot=\"default\">\n {this.$slots.default || <div class='fc-upload-btn'>\n <i class=\"el-icon-upload2\"/>\n </div>}\n </template> : null}{getSlot(this.$slots, ['default'])}\n </ElUpload>;\n },\n update() {\n let files = this.$refs.upload.uploadFiles.map((file) => file.url).filter((url) => url !== undefined);\n if (this.cacheFiles.length !== files.length || !files.length) {\n this.cacheFiles = [...files];\n this.$emit('input', this.limit === 1 ? (files[0] || '') : files);\n }\n },\n handleCancel() {\n this.previewVisible = false;\n },\n },\n render() {\n if (this.$refs.upload) {\n if (this.formCreateInject.prop.props.showFileList === undefined) {\n this.formCreateInject.prop.props.showFileList = this.$refs.upload.showFileList;\n }\n this.formCreateInject.prop.props.fileList = this.$refs.upload.fileList;\n }\n return (\n <div\n class='_fc-upload'>{[this.formCreateInject.prop.props.showFileList ? [] : this.makeFiles(), this.makeUpload()]}\n <el-dialog\n props={{\n appendToBody: true,\n modal: this.previewMask,\n title: this.modalTitle,\n visible: this.previewVisible\n }}\n on-close={this.handleCancel}>\n <img alt=\"example\" style=\"width: 100%\" src={this.previewImage}/>\n </el-dialog>\n </div>);\n },\n mounted() {\n this.uploadList = this.$refs.upload.uploadFiles;\n this.$watch(() => this.$refs.upload.uploadFiles, () => {\n this.update();\n }, {deep: true});\n }\n}\n","import Vue from 'vue';\n\nexport function $set(target, field, value) {\n Vue.set(target, field, value);\n}\n\nexport function $del(target, field) {\n Vue.delete(target, field);\n}\n","import {$set} from './modify';\nimport is from './type';\n\nexport default function deepExtend(origin, target = {}, mode) {\n let isArr = false;\n for (let key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n let clone = target[key];\n if ((isArr = Array.isArray(clone)) || is.Object(clone)) {\n let nst = origin[key] === undefined;\n if (isArr) {\n isArr = false;\n nst && $set(origin, key, []);\n } else if (clone._clone && mode !== undefined) {\n if (mode) {\n clone = clone.getRule();\n nst && $set(origin, key, {});\n } else {\n $set(origin, key, clone._clone());\n continue;\n }\n } else {\n nst && $set(origin, key, {});\n }\n origin[key] = deepExtend(origin[key], clone, mode);\n } else {\n $set(origin, key, clone);\n if (!is.Undef(clone)) {\n if (!is.Undef(clone.__json)) {\n origin[key].__json = clone.__json;\n }\n if (!is.Undef(clone.__origin)) {\n origin[key].__origin = clone.__origin;\n }\n }\n }\n }\n }\n return (mode !== undefined && Array.isArray(origin)) ? origin.filter(v => !v || !v.__ctrl) : origin\n}\n\nexport function deepCopy(value) {\n return deepExtend({}, {value}).value;\n}\n\nexport function deepExtendArgs(origin, ...lst) {\n lst.forEach(target => {\n origin = deepExtend(origin, target);\n });\n return origin;\n}\n","import {$set} from './modify';\n\nconst _extends = Object.assign || function (a) {\n for (let b, c = 1; c < arguments.length; c++) {\n for (let d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && ($set(a, d, b[d]));\n }\n }\n\n return a;\n}\n\nexport default function extend() {\n return _extends.apply(this, arguments);\n}\n\nexport function copy(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n return obj instanceof Array ? [...obj] : {...obj};\n}\n","import {hasProperty} from '@form-create/utils/lib/type';\nimport deepExtend, {deepCopy} from '@form-create/utils/lib/deepextend';\nimport extend from '@form-create/utils/lib/extend';\n\nconst NAME = 'fcGroup';\n\nexport default {\n name: NAME,\n props: {\n field: String,\n rule: [Array, Object],\n rules: Array,\n expand: Number,\n options: Object,\n formCreateInject: {\n type: Object,\n required: true,\n },\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n value: {\n type: Array,\n default: () => []\n },\n defaultValue: Object,\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n fontSize: {\n type: Number,\n default: 28\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n type: undefined\n }\n },\n computed: {\n formRule() {\n if (this.rules) {\n return this.rules;\n }\n if (this.rule) {\n return Array.isArray(this.rule) ? this.rule : [this.rule];\n }\n return [];\n }\n },\n watch: {\n formRule: {\n handler(n, o) {\n Object.keys(this.cacheRule).forEach(v => {\n const item = this.cacheRule[v];\n if (item.$f) {\n const val = item.$f.formData();\n if (n === o) {\n item.$f.deferSyncValue(() => {\n deepExtend(item.rule, n);\n item.$f.setValue(val);\n }, true);\n } else {\n const val = item.$f.formData();\n item.$f.once('reloading', () => {\n item.$f.setValue(val);\n })\n item.rule = deepCopy(n);\n }\n }\n })\n },\n deep: true\n },\n disabled(n) {\n if (this.syncDisabled) {\n const lst = this.cacheRule;\n Object.keys(lst).forEach(k => {\n lst[k].$f.disabled(n);\n })\n }\n },\n expand(n) {\n let d = n - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n value(n) {\n n = n || [];\n let keys = Object.keys(this.cacheRule), total = keys.length, len = total - n.length;\n if (len < 0) {\n for (let i = len; i < 0; i++) {\n this.addRule(n.length + i);\n }\n for (let i = 0; i < total; i++) {\n this.setValue(keys[i], n[i]);\n }\n } else {\n if (len > 0) {\n for (let i = 0; i < len; i++) {\n this.removeRule(keys[total - i - 1]);\n }\n }\n n.forEach((val, i) => {\n this.setValue(keys[i], n[i]);\n });\n }\n }\n },\n methods: {\n _value(v) {\n return (v && hasProperty(v, this.field)) ? v[this.field] : v;\n },\n cache(k, val) {\n this.cacheValue[k] = JSON.stringify(val);\n },\n input(value) {\n this.$emit('input', value);\n this.$emit('change', value);\n },\n formData(key, formData) {\n const cacheRule = this.cacheRule;\n const keys = Object.keys(cacheRule);\n if (keys.filter(k => cacheRule[k].$f).length !== keys.length) {\n return;\n }\n const value = keys.map(k => {\n const data = key === k ? formData : {...this.cacheRule[k].$f.form};\n const value = this.field ? data[this.field] || null : data;\n this.cache(k, value);\n return value;\n });\n this.input(value);\n },\n setValue(key, value) {\n const field = this.field, $f = this.cacheRule[key].$f;\n if (field) {\n value = {[field]: this._value(value)};\n }\n if (this.cacheValue[key] === JSON.stringify(field ? value[field] : value)) {\n return;\n }\n this.cache(key, value);\n $f.coverValue(value || {});\n },\n addRule(i, emit) {\n const rule = this.formCreateInject.form.copyRules(this.formRule);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n if (this.defaultValue) {\n if (!options.formData) options.formData = {};\n const defVal = deepCopy(this.defaultValue);\n extend(options.formData, this.field ? {[this.field]: defVal} : defVal);\n }\n this.$set(this.cacheRule, ++this.len, {rule, options});\n if (emit) {\n this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));\n }\n },\n add$f(i, key, $f) {\n this.cacheRule[key].$f = $f;\n this.formData(key, $f.formData());\n this.$nextTick(() => {\n if (this.syncDisabled) {\n $f.disabled(this.disabled);\n }\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n this.$delete(this.cacheRule, key);\n this.$delete(this.cacheValue, key);\n if (emit) {\n this.$nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.value)) {\n return;\n }\n this.addRule(i, true);\n },\n del(index, key) {\n if (this.disabled || false === this.onBeforeRemove(this.value, index)) {\n return;\n }\n this.removeRule(key, true);\n this.value.splice(index, 1);\n this.input(this.value);\n },\n addIcon(key) {\n return <i key={`a${key}`} class=\"el-icon-circle-plus-outline\"\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}\n on-click={this.add}/>;\n },\n delIcon(index, key) {\n return <i key={`d${key}`} class=\"el-icon-remove-outline\"\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer;color:#606266'};`}\n on-click={() => this.del(index, key)}/>;\n },\n makeIcon(total, index, key) {\n if (this.$scopedSlots.button) {\n return this.$scopedSlots.button({\n total,\n index,\n vm: this,\n key,\n del: () => this.del(index, key),\n add: this.add\n });\n }\n if (index === 0) {\n return [(this.max !== 0 && total >= this.max) ? null : this.addIcon(key), (this.min === 0 || total > this.min) ? this.delIcon(index, key) : null];\n }\n if (total > this.min) {\n return this.delIcon(index, key);\n }\n },\n emitEvent(name, args, index, key) {\n this.$emit(name, ...args, this.cacheRule[key].$f, index);\n },\n expandRule(n) {\n for (let i = 0; i < n; i++) {\n this.value.push(this.field ? null : {});\n }\n }\n },\n created() {\n this.type = this.formCreateInject.form.$form();\n const d = (this.expand || 0) - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n for (let i = 0; i < this.value.length; i++) {\n this.addRule(i);\n }\n },\n render() {\n const keys = Object.keys(this.cacheRule);\n const button = this.button;\n const Type = this.type;\n return keys.length === 0 ?\n (this.$scopedSlots.default ? (this.$scopedSlots.default({\n vm: this,\n add: this.add\n })) : <i key={'a_def'} class=\"el-icon-circle-plus-outline\"\n style={`font-size:${this.fontSize}px;vertical-align:middle;color:${this.disabled ? '#c9cdd4;cursor: not-allowed' : '#606266;cursor:pointer'};`}\n on-click={this.add}/>) :\n <div key={'con'}>{keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n return <ElRow align=\"middle\" type=\"flex\" key={key}\n style=\"border-bottom:1px dashed #DCDFE6;margin-bottom:10px;\">\n <ElCol span={button ? 20 : 24}><Type\n key={key}\n on={{\n 'update:value': (formData) => this.formData(key, formData),\n 'emit-event': (name, ...args) => this.emitEvent(name, args, index, key),\n input: ($f) => this.add$f(index, key, $f)\n }}\n props={{\n value: this.field ? {[this.field]: this._value(this.value[index])} : this.value[index],\n rule,\n option: options,\n extendOption: true,\n inFor: true\n }}/></ElCol>\n {button ? <ElCol\n props={{span: 2, pull: 1, push: 1}}>{this.makeIcon(keys.length, index, key)}</ElCol> : null}\n </ElRow>\n })}</div>\n }\n}\n","import checkbox from '@form-create/component-elm-checkbox/src/index';\nimport frame from '@form-create/component-elm-frame/src/index';\nimport radio from '@form-create/component-elm-radio/src/index';\nimport select from '@form-create/component-elm-select/src/index';\nimport tree from '@form-create/component-elm-tree/src/index';\nimport upload from '@form-create/component-elm-upload/src/index';\nimport group from '@form-create/component-elm-group/src/index';\nimport subForm from '@form-create/component-subform/src/index';\n\n\nexport default [\n checkbox,\n frame,\n radio,\n select,\n tree,\n upload,\n group,\n subForm,\n]\n","const NAME = 'fcSubForm';\n\nexport default {\n name: NAME,\n props: {\n rule: Array,\n options: Object,\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {\n type: Object,\n default: () => ({})\n },\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n },\n data() {\n return {\n cacheRule: {},\n cacheValue: {},\n type: undefined\n }\n },\n watch: {\n disabled(n) {\n this.syncDisabled && this.cacheRule.$f.disabled(n);\n },\n value(n) {\n this.setValue(n);\n }\n },\n methods: {\n formData(value) {\n this.cacheValue = JSON.stringify(value);\n this.$emit('input', value);\n this.$emit('change', value);\n },\n setValue(value) {\n const str = JSON.stringify(value);\n if (this.cacheValue === str) {\n return;\n }\n this.cacheValue = str;\n this.cacheRule.$f.coverValue(value || {});\n },\n addRule() {\n const options = this.options ? this.options : {\n submitBtn: false,\n resetBtn: false,\n };\n options.formData = {...(this.value || {})};\n this.cacheRule = {rule: this.rule, options};\n },\n add$f($f) {\n this.cacheRule.$f = $f;\n this.$nextTick(() => {\n this.syncDisabled && $f.disabled(this.disabled);\n this.$emit('itemMounted', $f);\n });\n },\n emitEvent(name, ...args) {\n this.$emit(name, ...args);\n }\n },\n created() {\n this.addRule();\n this.type = this.formCreateInject.form.$form();\n },\n render() {\n const {rule, options} = this.cacheRule;\n const Type = this.type;\n return <Type\n on={{\n 'update:value': this.formData,\n 'emit-event': this.emitEvent,\n input: this.add$f\n }}\n props={{rule, option: options, extendOption: true}}/>\n }\n}\n","import extend from '@form-create/utils/lib/extend';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst NAME = 'FormCreate';\n\nconst getRuleInject = (vm, parent) => {\n if (!vm || vm === parent) {\n return;\n }\n if (vm.formCreateInject) {\n return vm.formCreateInject\n }\n if (vm.$parent) {\n return getRuleInject(vm.$parent, parent);\n }\n}\n\nexport default function $FormCreate(FormCreate) {\n return {\n name: NAME,\n componentName: NAME,\n model: {\n prop: 'api'\n },\n provide() {\n return {\n $pfc: this,\n }\n },\n inject: {$pfc: {default: null}},\n props: {\n rule: {\n type: Array,\n required: true\n },\n option: {\n type: Object,\n default: () => {\n return {};\n }\n },\n extendOption: Boolean,\n value: Object,\n api: Object,\n name: String,\n subForm: {\n type: Boolean,\n default: true\n },\n inFor: Boolean,\n },\n data() {\n return {\n formData: undefined,\n destroyed: false,\n validate: {},\n $f: undefined,\n isShow: true,\n unique: 1,\n renderRule: [...this.rule || []],\n ctxInject: {},\n updateValue: JSON.stringify(this.value || {}),\n isMore: !!this.inFor,\n };\n },\n render() {\n return this.formCreate.render();\n },\n methods: {\n _refresh() {\n ++this.unique;\n },\n _renderRule() {\n this.renderRule = [...this.rule || []];\n },\n _updateValue(value) {\n if (this.destroyed) return;\n this.updateValue = JSON.stringify(value);\n this.$emit('update:value', value);\n }\n },\n watch: {\n value: {\n handler(n) {\n if (JSON.stringify(n || {}) === this.updateValue) return;\n this.$f.config.forceCoverValue ? this.$f.coverValue(n || {}) : this.$f.setValue(n || {});\n },\n deep: true\n },\n option: {\n handler(n) {\n this.formCreate.initOptions(n);\n this.$f.refresh();\n },\n deep: true\n },\n rule(n) {\n if (n.length === this.renderRule.length && n.every(v => this.renderRule.indexOf(v) > -1)) return;\n this.formCreate.$handle.reloadRule(n);\n this._renderRule();\n }\n },\n beforeCreate() {\n const {rule, option} = this.$options.propsData;\n this.formCreate = new FormCreate(this, rule, option);\n Object.keys(this.formCreate.prop).forEach(k => {\n extend(this.$options[k], this.formCreate.prop[k]);\n })\n this.$emit('beforeCreate', this.formCreate.api());\n },\n created() {\n const vm = this, fapi = this.formCreate.api();\n const addSubForm = () => {\n if (vm.$pfc) {\n const inject = getRuleInject(vm, vm.$pfc);\n if (inject) {\n let sub;\n if (vm.isMore) {\n sub = toArray(inject.getSubForm());\n sub.push(fapi);\n\n } else {\n sub = fapi;\n }\n inject.subForm(sub);\n }\n }\n };\n\n const rmSubForm = () => {\n const inject = getRuleInject(vm, vm.$pfc);\n if (inject) {\n if (vm.isMore) {\n const sub = toArray(inject.getSubForm());\n const idx = sub.indexOf(fapi);\n if (idx > -1) {\n sub.splice(idx, 1);\n }\n } else {\n inject.subForm();\n }\n }\n };\n\n vm.$on('hook:beforeDestroy', () => {\n rmSubForm();\n });\n\n this.$watch(() => this.subForm, (n) => {\n n ? addSubForm() : rmSubForm();\n }, {immediate: true});\n }\n }\n}\n","export const normalMerge = ['attrs', 'props', 'domProps', 'scopedSlots'];\nexport const toArrayMerge = ['class', 'style', 'directives'];\nexport const functionalMerge = ['on', 'nativeOn'];\n\nconst mergeProps = (objects, initial = {}, opt = {}) => {\n const _normalMerge = [...normalMerge, ...opt['normal'] || []];\n const _toArrayMerge = [...toArrayMerge, ...opt['array'] || []];\n const _functionalMerge = [...functionalMerge, ...opt['functional'] || []];\n const propsMerge = opt['props'] || [];\n\n return objects.reduce((a, b) => {\n for (const key in b) {\n if (a[key]) {\n if (propsMerge.indexOf(key) > -1) {\n a[key] = mergeProps([b[key]], a[key]);\n } else if (_normalMerge.indexOf(key) > -1) {\n a[key] = {...a[key], ...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n const arrA = a[key] instanceof Array ? a[key] : [a[key]];\n const arrB = b[key] instanceof Array ? b[key] : [b[key]];\n a[key] = [...arrA, ...arrB]\n } else if (_functionalMerge.indexOf(key) > -1) {\n for (const event in b[key]) {\n if (a[key][event]) {\n const arrA = a[key][event] instanceof Array ? a[key][event] : [a[key][event]];\n const arrB = b[key][event] instanceof Array ? b[key][event] : [b[key][event]];\n a[key][event] = [...arrA, ...arrB]\n } else {\n a[key][event] = b[key][event]\n }\n }\n } else if (key === 'hook') {\n for (let hook in b[key]) {\n if (a[key][hook]) {\n a[key][hook] = mergeFn(a[key][hook], b[key][hook])\n } else {\n a[key][hook] = b[key][hook]\n }\n }\n } else {\n a[key] = b[key]\n }\n } else {\n if (_normalMerge.indexOf(key) > -1 || _functionalMerge.indexOf(key) > -1 || propsMerge.indexOf(key) > -1) {\n a[key] = {...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n a[key] = b[key] instanceof Array ? [...b[key]] : (typeof b[key] === 'object' ? {...b[key]} : b[key]);\n } else\n a[key] = b[key];\n }\n }\n return a\n }, initial);\n}\n\nconst mergeFn = (fn1, fn2) =>\n function () {\n fn1 && fn1.apply(this, arguments);\n fn2 && fn2.apply(this, arguments);\n };\n\nexport default mergeProps;\n","import {functionalMerge, normalMerge, toArrayMerge} from '@form-create/utils/lib/mergeprops';\n\n\nexport const keyAttrs = ['type', 'slot', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'nativeEmit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key', 'preview', 'component', 'cache'];\n\nexport const arrayAttrs = ['validate', 'children', 'control'];\n\nexport const normalAttrs = ['effect', 'deep'];\n\nexport function attrs() {\n return [...keyAttrs, ...normalMerge, ...toArrayMerge, ...functionalMerge, ...arrayAttrs, ...normalAttrs];\n}\n","export function format(type, msg, rule) {\n return (`[form-create ${type}]: ${msg}` + (rule ? ('\\n\\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule)) : ''))\n}\n\nexport function tip(msg, rule) {\n console.warn(format('tip', msg, rule));\n}\n\nexport function err(msg, rule) {\n console.error(format('err', msg, rule));\n}\n\nexport function logError(e) {\n err(e.toString());\n console.error(e);\n}\n","import deepExtend from './deepextend';\nimport {err} from './console';\nimport is, {hasProperty} from './type';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nconst $T = '$FN:';\nconst $TX = '$FNX:';\nconst FUNCTION = 'function';\n\nexport function toJson(obj, space) {\n return JSON.stringify(deepExtend([], obj, true), function (key, val) {\n if (val && val._isVue === true)\n return undefined;\n\n if (typeof val !== FUNCTION) {\n return val;\n }\n if (val.__json) {\n return val.__json;\n }\n if (val.__origin)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n return PREFIX + val + SUFFIX;\n }, space);\n}\n\nfunction makeFn(fn) {\n return (new Function('return ' + fn))();\n}\n\nexport function parseFn(fn, mode) {\n if (fn && is.String(fn) && fn.length > 4) {\n let v = fn.trim();\n let flag = false;\n try {\n if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {\n v = v.replace(SUFFIX, '').replace(PREFIX, '');\n flag = true;\n } else if (v.indexOf($T) === 0) {\n v = v.replace($T, '');\n flag = true;\n } else if (v.indexOf($TX) === 0) {\n v = makeFn('function($inject){' + v.replace($TX, '') + '}');\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (!mode && v.indexOf(FUNCTION) === 0 && v !== FUNCTION) {\n flag = true;\n }\n if (!flag) return fn;\n const val = makeFn((v.indexOf(FUNCTION) === -1 && v.indexOf('(') !== 0) ? (FUNCTION + ' ' + v) : v);\n val.__json = fn;\n return val;\n } catch (e) {\n err(`解析失败:${v}\\n\\nerr: ${e}`);\n return undefined;\n }\n }\n return fn;\n}\n\nexport function parseJson(json, mode) {\n return JSON.parse(json, function (k, v) {\n if (is.Undef(v) || !v.indexOf) return v;\n return parseFn(v, mode);\n });\n}\n","import is from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {arrayAttrs, normalAttrs} from './attrs';\nimport {logError} from '@form-create/utils/lib/console';\nimport {parseJson, toJson} from '@form-create/utils/lib/json';\nimport deepExtend from '@form-create/utils/lib/deepextend';\n\nexport {parseFn} from '@form-create/utils/lib/json';\nexport {parseJson, toJson}\n\nexport function enumerable(value, writable) {\n return {\n value,\n enumerable: false,\n configurable: false,\n writable: !!writable\n }\n}\n\n//todo 优化位置\nexport function copyRule(rule) {\n return copyRules([rule])[0];\n}\n\nexport function copyRules(rules, mode) {\n return deepExtend([], [...rules], mode || false);\n}\n\nexport function mergeRule(rule, merge) {\n mergeProps(Array.isArray(merge) ? merge : [merge], rule, {array: arrayAttrs, normal: normalAttrs});\n return rule;\n}\n\nexport function getRule(rule) {\n const r = is.Function(rule.getRule) ? rule.getRule() : rule;\n if (!r.type) {\n r.type = 'input';\n }\n return r;\n}\n\nexport function mergeGlobal(target, merge) {\n if (!target) return merge;\n Object.keys(merge || {}).forEach((k) => {\n if (merge[k]) {\n target[k] = mergeRule(target[k] || {}, merge[k])\n }\n });\n return target;\n}\n\nexport function funcProxy(that, proxy) {\n Object.defineProperties(that, Object.keys(proxy).reduce((initial, k) => {\n initial[k] = {\n get() {\n return proxy[k]();\n }\n }\n return initial;\n }, {}))\n}\n\nexport function byCtx(rule) {\n return rule.__fc__ || (rule.__origin__ ? rule.__origin__.__fc__ : null)\n}\n\nexport function invoke(fn, def) {\n try {\n def = fn()\n } catch (e) {\n logError(e);\n }\n return def;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {attrs} from '../frame/attrs';\nimport {copyRule, mergeRule} from '../frame/util';\nimport {$set} from '@form-create/utils/lib/modify';\n\nexport function baseRule() {\n return {\n props: {},\n on: {},\n options: [],\n children: [],\n effect: {},\n hidden: false,\n display: true,\n value: undefined,\n };\n}\n\nexport function creatorFactory(name, init) {\n return (title, field, value, props = {}) => {\n const maker = new Creator(name, title, field, value, props);\n if (init) {\n if (is.Function(init)) init(maker);\n else maker.props(init);\n }\n return maker;\n };\n}\n\nexport default function Creator(type, title, field, value, props) {\n this._data = extend(baseRule(), {type, title, field, value, props: props || {}});\n this.event = this.on;\n}\n\nextend(Creator.prototype, {\n getRule() {\n return this._data;\n },\n setProp(key, value) {\n $set(this._data, key, value);\n return this;\n },\n _clone() {\n const clone = new this.constructor();\n clone._data = copyRule(this._data);\n return clone;\n },\n})\n\nexport function appendProto(attrs) {\n attrs.forEach(name => {\n Creator.prototype[name] = function (key) {\n mergeRule(this._data, {[name]: arguments.length < 2 ? key : {[key]: arguments[1]}})\n return this;\n };\n });\n}\n\nappendProto(attrs());\n","import {creatorFactory} from './creator';\n\nconst commonMaker = creatorFactory('');\n\nexport function create(type, field, title) {\n let make = commonMaker('', field);\n make._data.type = type;\n make._data.title = title;\n return make;\n}\n\nexport function createTmp(template, vm, field, title) {\n let make = commonMaker('', field);\n make._data.type = 'template';\n make._data.template = template;\n make._data.title = title;\n make._data.vm = vm;\n return make;\n}\n\nexport default function makerFactory() {\n return {\n create,\n createTmp,\n template: createTmp,\n factory: creatorFactory\n };\n}\n","import {byCtx, invoke, mergeRule, toJson} from './util';\nimport {$set} from '@form-create/utils/lib/modify';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {format} from '@form-create/utils/lib/console';\n\n\nfunction copy(value) {\n return deepCopy(value);\n}\n\nexport default function Api(h) {\n\n function tidyFields(fields) {\n if (is.Undef(fields))\n fields = h.fields();\n else if (!Array.isArray(fields))\n fields = [fields];\n return fields;\n }\n\n function props(fields, key, val) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n $set(ctx.rule, key, val);\n h.$render.clearCache(ctx);\n });\n })\n }\n\n function allSubForm() {\n const subs = h.subForm;\n return Object.keys(subs).reduce((initial, k) => {\n const sub = subs[k];\n if (!sub) return initial;\n if (Array.isArray(sub))\n initial.push(...sub);\n else\n initial.push(sub);\n return initial;\n }, []);\n }\n\n const api = {\n get config() {\n return h.options\n },\n get options() {\n return h.options\n },\n get form() {\n return h.form\n },\n get rule() {\n return h.rules\n },\n get parent() {\n return h.vm.$pfc && h.vm.$pfc.$f\n },\n get children() {\n return allSubForm();\n },\n formData(fields) {\n return tidyFields(fields).reduce((initial, id) => {\n const ctx = h.getFieldCtx(id);\n if (!ctx) return initial;\n initial[ctx.field] = copy(ctx.rule.value);\n return initial;\n }, h.options.appendValue ? copy(h.appendData) : {});\n },\n getValue(field) {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n return copy(ctx.rule.value);\n },\n coverValue(formData) {\n const data = {...(formData || {})};\n h.deferSyncValue(() => {\n api.fields().forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (ctxs) {\n const flag = hasProperty(data, key);\n ctxs.forEach(ctx => {\n ctx.rule.value = flag ? data[key] : undefined;\n })\n delete data[key];\n }\n });\n extend(h.appendData, data);\n })\n },\n setValue(field) {\n let formData = field;\n if (arguments.length >= 2)\n formData = {[field]: arguments[1]};\n h.deferSyncValue(() => {\n Object.keys(formData).forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (!ctxs) return h.appendData[key] = formData[key];\n ctxs.forEach(ctx => {\n ctx.rule.value = formData[key];\n });\n });\n })\n },\n removeField(field) {\n const ctx = h.getCtx(field);\n h.deferSyncValue(() => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rm();\n });\n }, true);\n return ctx ? ctx.origin : undefined;\n },\n removeRule(rule) {\n const ctx = rule && byCtx(rule);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\n },\n destroy: () => {\n h.vm.$el.parentNode && h.vm.$el.parentNode.removeChild(h.vm.$el);\n h.vm.$destroy();\n },\n fields: () => h.fields(),\n append: (rule, after, child) => {\n let index = h.sort.length - 1, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n index = ctx.rule.children.length - 1;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index + 1, 0, rule);\n },\n prepend: (rule, after, child) => {\n let index = 0, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index, 0, rule);\n },\n hidden(state, fields) {\n props(fields, 'hidden', !!state);\n h.refresh();\n },\n hiddenStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.hidden;\n },\n display(state, fields) {\n props(fields, 'display', !!state);\n h.refresh();\n },\n displayStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.display;\n },\n disabled(disabled, fields) {\n tidyFields(fields).forEach((field) => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rule.props && $set(ctx.rule.props, 'disabled', !!disabled);\n });\n });\n h.refresh();\n },\n all(origin) {\n return Object.keys(h.ctxs).map(k => {\n const ctx = h.ctxs[k];\n return origin ? ctx.origin : ctx.rule;\n });\n },\n model(origin) {\n return h.fields().reduce((initial, key) => {\n const ctx = h.fieldCtx[key][0];\n initial[key] = origin ? ctx.origin : ctx.rule;\n return initial;\n }, {});\n },\n component(origin) {\n return Object.keys(h.nameCtx).reduce((initial, key) => {\n const ctx = h.nameCtx[key].map(ctx => origin ? ctx.origin : ctx.rule);\n initial[key] = ctx.length === 1 ? ctx[0] : ctx;\n return initial;\n }, {});\n },\n bind() {\n return api.form;\n },\n reload: (rules) => {\n h.reloadRule(rules)\n },\n updateOptions(options) {\n h.fc.updateOptions(options);\n api.refresh();\n },\n onSubmit(fn) {\n api.updateOptions({onSubmit: fn});\n },\n sync: (field) => {\n if (Array.isArray(field)) {\n field.forEach(v => api.sync(v));\n return;\n }\n let ctxs = is.Object(field) ? byCtx(field) : h.getCtxs(field);\n if (!ctxs) {\n return;\n }\n ctxs = Array.isArray(ctxs) ? ctxs : [ctxs];\n ctxs.forEach(ctx => {\n if (!ctx.deleted) {\n const subForm = h.subForm[ctx.id];\n if (subForm) {\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.refresh();\n })\n } else if (subForm) {\n subForm.refresh();\n }\n }\n //ctx.updateKey(true);\n h.$render.clearCache(ctx);\n }\n });\n h.refresh();\n },\n refresh: () => {\n allSubForm().forEach(sub => {\n sub.refresh();\n });\n h.$render.clearCacheAll();\n h.refresh();\n },\n refreshOptions() {\n h.$manager.updateOptions(h.options);\n api.refresh();\n },\n hideForm: (hide) => {\n $set(h.vm, 'isShow', !hide);\n },\n changeStatus: () => {\n return h.changeStatus;\n },\n clearChangeStatus: () => {\n h.changeStatus = false;\n },\n updateRule(id, rule) {\n h.getCtxs(id).forEach(ctx => {\n extend(ctx.rule, rule);\n });\n },\n updateRules(rules) {\n Object.keys(rules).forEach(id => {\n api.updateRule(id, rules[id]);\n })\n },\n mergeRule: (id, rule) => {\n h.getCtxs(id).forEach(ctx => {\n mergeRule(ctx.rule, rule);\n });\n },\n mergeRules(rules) {\n Object.keys(rules).forEach(id => {\n api.mergeRule(id, rules[id]);\n })\n },\n getRule: (id, origin) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return origin ? ctx.origin : ctx.rule;\n }\n },\n setEffect(id, attr, value) {\n const ctx = h.getCtx(id);\n if (ctx && attr) {\n if (attr[0] === '$') {\n attr = attr.substr(1);\n }\n if (hasProperty(ctx.rule, '$' + attr)) {\n $set(ctx.rule, '$' + attr, value);\n }\n if (!hasProperty(ctx.rule, 'effect')) {\n $set(ctx.rule, 'effect', {});\n }\n $set(ctx.rule.effect, attr, value);\n }\n },\n clearEffectData(id, attr) {\n const ctx = h.getCtx(id);\n if (ctx) {\n if (attr && attr[0] === '$') {\n attr = attr.substr(1);\n }\n ctx.clearEffectData(attr);\n api.sync(id);\n }\n },\n updateValidate(id, validate, merge) {\n if (merge) {\n api.mergeRule(id, {validate})\n } else {\n props(id, 'validate', validate);\n }\n },\n updateValidates(validates, merge) {\n Object.keys(validates).forEach(id => {\n api.updateValidate(id, validates[id], merge);\n })\n },\n refreshValidate() {\n h.vm.validate = {};\n api.refresh();\n },\n resetFields(fields) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n h.$render.clearCache(ctx);\n ctx.rule.value = copy(ctx.defaultValue);\n });\n });\n },\n method(id, name) {\n const el = api.el(id);\n if (!el || !el[name])\n throw new Error(format('err', `${name}方法不存在`));\n return (...args) => {\n return el[name](...args);\n }\n },\n exec(id, name, ...args) {\n return invoke(() => api.method(id, name)(...args));\n },\n toJson(space) {\n return toJson(api.rule, space);\n },\n trigger(id, event, ...args) {\n const el = api.el(id);\n el && el.$emit(event, ...args);\n },\n el(id) {\n const ctx = h.getCtx(id);\n if (ctx) return ctx.el || h.vm.$refs[ctx.ref];\n },\n closeModal: (id) => {\n const el = api.el(id);\n el && el.$emit && el.$emit('close-modal');\n },\n getSubForm(field) {\n const ctx = h.getCtx(field);\n return ctx ? h.subForm[ctx.id] : undefined;\n },\n nextTick(fn) {\n h.bus.$once('next-tick', fn);\n h.refresh();\n },\n nextRefresh(fn) {\n h.nextRefresh();\n fn && invoke(fn);\n },\n emit(name, ...args) {\n h.vm.$emit(name, ...args);\n },\n deferSyncValue(fn, sync){\n h.deferSyncValue(fn, sync);\n },\n helper: {\n tidyFields, props\n }\n };\n\n ['on', 'once', 'off', 'set'].forEach(n => {\n api[n] = function (...args) {\n h.vm[`$${n}`](...args);\n }\n });\n\n api.changeValue = api.changeField = api.setValue;\n\n return api;\n}\n","export default function toCase(str) {\n const to = str.replace(/(-[a-z])/g, function (v) {\n return v.replace('-', '').toLocaleUpperCase();\n });\n\n return lower(to);\n}\n\nexport function lower(str) {\n return str.replace(str[0], str[0].toLowerCase());\n}\n","export default function toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n","export default function toLine(name) {\n let line = name.replace(/([A-Z])/g, '-$1').toLocaleLowerCase();\n if (line.indexOf('-') === 0)\n line = line.substr(1);\n return line;\n}\n","let id = 0;\n\nexport default function uniqueId() {\n return 'F' + Math.random().toString(36).substr(3, 3) + Number(`${Date.now()}${++id}`).toString(36);\n}\n","export default function deepSet(data, idx, val) {\n let _data = data, to;\n (idx || '').split('.').forEach(v => {\n if (to) {\n if (!_data[to] || typeof _data[to] != 'object') {\n _data[to] = {}\n }\n _data = _data[to];\n }\n to = v;\n })\n _data[to] = val;\n return _data;\n}\n","import useCache from './cache';\nimport useRender from './render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\n\nexport default function Render(handle) {\n extend(this, {\n $handle: handle,\n fc: handle.fc,\n vm: handle.vm,\n $manager: handle.$manager,\n vNode: new handle.fc.CreateNode(handle.vm),\n });\n\n funcProxy(this, {\n options() {\n return handle.options;\n },\n sort() {\n return handle.sort;\n }\n })\n\n this.initCache();\n this.initRender();\n}\n\nuseCache(Render);\nuseRender(Render)\n","import extend from '@form-create/utils/lib/extend';\n\nexport default function useCache(Render) {\n extend(Render.prototype, {\n initCache() {\n this.clearCacheAll();\n },\n clearCache(ctx) {\n if(ctx.rule.cache){\n return;\n }\n if (!this.cache[ctx.id]) {\n ctx.parent && this.clearCache(ctx.parent);\n return;\n }\n if (this.cache[ctx.id].use === true || this.cache[ctx.id].parent) {\n this.$handle.refresh();\n }\n const parent = this.cache[ctx.id].parent;\n this.cache[ctx.id] = null;\n parent && this.clearCache(parent);\n },\n clearCacheAll() {\n this.cache = {};\n },\n setCache(ctx, vnode, parent) {\n this.cache[ctx.id] = {\n vnode,\n use: false,\n parent,\n slot: ctx.rule.slot\n };\n },\n getCache(ctx) {\n const cache = this.cache[ctx.id];\n if (cache) {\n cache.use = true;\n return cache.vnode;\n }\n return undefined;\n }\n })\n\n}\n","import extend from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {_vue as Vue} from '../frame';\nimport {tip} from '@form-create/utils/lib/console';\nimport {invoke, mergeRule} from '../frame/util';\nimport toCase, {lower} from '@form-create/utils/lib/tocase';\nimport {$set, deepSet, toLine} from '@form-create/utils';\n\nexport default function useRender(Render) {\n extend(Render.prototype, {\n initRender() {\n this.tempList = {};\n this.clearOrgChildren();\n },\n initOrgChildren() {\n const ctxs = this.$handle.ctxs;\n this.orgChildren = Object.keys(ctxs).reduce((initial, id) => {\n if (ctxs[id].parser.loadChildren !== false) {\n const children = ctxs[id].rule.children;\n initial[id] = is.trueArray(children) ? [...children] : [];\n }\n\n return initial;\n }, {});\n\n },\n clearOrgChildren() {\n this.orgChildren = {};\n },\n getTypeSlot(ctx) {\n const _fn = (vm) => {\n if (vm) {\n let slot = undefined;\n if (ctx.rule.field) {\n slot = vm.$scopedSlots['field-' + toLine(ctx.rule.field)] || vm.$scopedSlots['field-' + ctx.rule.field];\n }\n if (!slot) {\n slot = vm.$scopedSlots['type-' + toLine(ctx.type)] || vm.$scopedSlots['type-' + ctx.type];\n }\n if (slot) {\n return slot;\n }\n return _fn(vm.$pfc);\n }\n }\n return _fn(this.vm);\n },\n render() {\n if (!this.vm.isShow) {\n return;\n }\n this.$h = this.vm.$createElement;\n this.$manager.beforeRender();\n\n let vn;\n\n const make = () => this.renderList();\n make.renderSlot = slot => this.renderList(slot);\n make.renderName = name => this.renderId(name);\n make.renderField = field => this.renderId(field, 'field');\n\n if (this.vm.$scopedSlots.container) {\n vn = [this.vm.$scopedSlots.container(make)];\n } else {\n vn = make();\n }\n return this.$manager.render(vn);\n },\n renderList(slot) {\n return this.sort.map((id) => {\n return slot ? this.renderSlot(this.$handle.ctxs[id], slot) : this.renderCtx(this.$handle.ctxs[id]);\n }).filter((val) => val !== undefined);\n },\n makeVm(rule) {\n const vm = rule.vm;\n if (!vm)\n return new Vue;\n else if (is.Function(vm))\n return invoke(() => rule.vm(this.$handle.getInjectData(rule)));\n else if (!vm._isVue)\n return new Vue(vm);\n return vm;\n },\n mergeGlobal(ctx) {\n const g = this.$handle.options.global;\n if (!g) return;\n //todo 缓存配置,更新 option 更新\n if (!ctx.cacheConfig)\n ctx.cacheConfig = g[ctx.originType] || g[ctx.type] || g[ctx.trueType] || {};\n ctx.prop = mergeRule({}, [g['*'], ctx.cacheConfig, ctx.prop]);\n },\n setOptions(ctx) {\n if (ctx.prop.optionsTo && ctx.prop.options) {\n deepSet(ctx.prop, ctx.prop.optionsTo, ctx.prop.options);\n }\n },\n deepSet(ctx) {\n const deep = ctx.rule.deep;\n deep && Object.keys(deep).sort((a, b) => a.length < b.length ? -1 : 1).forEach(str => {\n deepSet(ctx.prop, str, deep[str]);\n });\n },\n setTempProps(vm, ctx) {\n if (!vm.$props) return;\n\n const {prop} = ctx;\n const keys = Object.keys(vm.$props);\n const inject = this.injectProp(ctx);\n const injectKeys = Object.keys(inject);\n\n keys.forEach(key => {\n if (hasProperty(prop.props, key))\n vm.$props[key] = prop.props[key];\n else if (injectKeys.indexOf(key) > -1) vm.$props[key] = inject[key];\n });\n\n const key = (vm.$options.model && vm.$options.model.prop) || 'value';\n if (keys.indexOf(key) > -1) {\n vm.$props[key] = prop.value;\n }\n },\n renderTemp(ctx) {\n if (!Vue.compile) {\n tip('当前使用的Vue构建版本不支持compile,无法使用template功能');\n return [];\n }\n const rule = ctx.prop;\n const {id, key} = ctx;\n\n if (!this.tempList[id]) {\n if (!ctx.el) {\n ctx.el = this.makeVm(rule);\n this.vm.$nextTick(() => ctx.parser.mounted(ctx));\n }\n\n let vm = ctx.el;\n if (ctx.input)\n vm.$on((vm.$options.model && vm.$options.model.event) || 'input', (value) => {\n this.onInput(ctx, value);\n });\n\n this.tempList[id] = {\n vm,\n template: Vue.compile(rule.template)\n };\n }\n\n const {vm, template} = this.tempList[id];\n\n this.setTempProps(vm, ctx);\n\n const vn = template.render.call(vm);\n\n if (is.Undef(vn.data)) vn.data = {};\n vn.key = key;\n vn.data.ref = ctx.ref;\n vn.data.key = key;\n return vn;\n },\n parseSide(side, ctx) {\n return is.Object(side) ? mergeRule({props: {formCreateInject: ctx.prop.props.formCreateInject}}, side) : side;\n },\n renderSides(vn, ctx, temp) {\n const prop = ctx[temp ? 'rule' : 'prop'];\n return [this.renderRule(this.parseSide(prop.prefix, ctx)), vn, this.renderRule(this.parseSide(prop.suffix, ctx))];\n\n },\n renderSlot(ctx, slot) {\n return ctx.rule.slot === slot ? this.renderCtx(ctx) : undefined;\n },\n renderId(name, type) {\n const ctxs = this.$handle[type === 'field' ? 'fieldCtx' : 'nameCtx'][name]\n return ctxs ? ctxs.map(ctx => this.renderCtx(ctx, ctx.parent)) : undefined;\n },\n renderCtx(ctx, parent) {\n if (ctx.type === 'hidden') return;\n const rule = ctx.rule;\n if ((!this.cache[ctx.id]) || this.cache[ctx.id].slot !== rule.slot) {\n let vn;\n let cacheFlag = rule.cache !== false;\n const _type = ctx.trueType;\n const none = !(is.Undef(rule.display) || !!rule.display);\n if (_type === 'template' && !rule.template) {\n vn = this.renderSides(this.renderChildren(ctx), ctx, true);\n if (none) {\n this.display(vn);\n }\n vn = this.item(ctx, vn);\n } else if (_type === 'fcFragment') {\n vn = this.renderChildren(ctx);\n } else {\n ctx.initProp();\n this.mergeGlobal(ctx);\n this.$manager.tidyRule(ctx);\n this.deepSet(ctx);\n this.setOptions(ctx);\n this.ctxProp(ctx);\n let prop = ctx.prop;\n prop.preview = !!(hasProperty(prop, 'preview') ? prop.preview : (this.options.preview || false))\n prop.props.formCreateInject = this.injectProp(ctx);\n const preview = prop.preview;\n\n if (prop.hidden) {\n this.setCache(ctx, undefined, parent);\n return;\n }\n\n if (_type === 'template' && prop.template) {\n vn = this.renderTemp(ctx);\n cacheFlag = false;\n } else {\n let children = [];\n if (ctx.parser.renderChildren) {\n children = ctx.parser.renderChildren(ctx);\n } else if (ctx.parser.loadChildren !== false) {\n children = this.renderChildren(ctx);\n }\n const slot = this.getTypeSlot(ctx);\n if (slot) {\n vn = slot({\n rule,\n prop,\n preview,\n children,\n api: this.$handle.api,\n model: prop.model || {}\n });\n } else {\n vn = preview ? ctx.parser.preview(children, ctx) : ctx.parser.render(children, ctx);\n }\n }\n vn = this.renderSides(vn, ctx);\n if ((!(!ctx.input && is.Undef(prop.native))) && prop.native !== true) {\n vn = this.$manager.makeWrap(ctx, vn);\n }\n if (none) {\n vn = this.display(vn);\n }\n vn = this.item(ctx, vn)\n }\n if (cacheFlag) {\n this.setCache(ctx, vn, parent);\n }\n return vn;\n }\n\n return this.getCache(ctx);\n },\n display(vn) {\n if (Array.isArray(vn)) {\n const data = [];\n vn.forEach(v => {\n if (Array.isArray(v)) return this.display(v);\n if (this.none(v)) data.push(v);\n })\n return data;\n } else {\n return this.none(vn);\n }\n },\n none(vn) {\n if (vn && vn.data) {\n if (Array.isArray(vn.data.style)) {\n vn.data.style.push({display: 'none'});\n } else if(is.String(vn.data.style)) {\n vn.data.style += ';display:none;';\n } else {\n vn.data.style = [vn.data.style, {display: 'none'}];\n }\n return vn;\n }\n },\n item(ctx, vn) {\n return this.$h('fcFragment', {\n slot: ctx.rule.slot,\n key: ctx.key,\n }, [vn]);\n },\n injectProp(ctx) {\n if (!this.vm.ctxInject[ctx.id]) {\n $set(this.vm.ctxInject, ctx.id, {\n api: this.$handle.api,\n form: this.fc.create,\n subForm: subForm => {\n this.$handle.addSubForm(ctx, subForm);\n },\n getSubForm: () => {\n return this.$handle.subForm[ctx.id];\n },\n options: [],\n children: [],\n prop: {},\n preview: false,\n field: ctx.field,\n rule: ctx.rule,\n input: ctx.input,\n });\n }\n const inject = this.vm.ctxInject[ctx.id];\n extend(inject, {\n preview: ctx.prop.preview,\n options: ctx.prop.options,\n children: ctx.rule.children,\n prop: (function () {\n const temp = {...ctx.prop};\n temp.on = temp.on ? {...temp.on} : {};\n delete temp.model;\n return temp;\n }()),\n });\n return inject;\n },\n ctxProp(ctx, custom) {\n const {ref, key, rule} = ctx;\n this.$manager.mergeProp(ctx, custom);\n ctx.parser.mergeProp(ctx, custom);\n const props = [\n {\n ref: ref,\n key: rule.key || `${key}fc`,\n slot: undefined,\n on: {\n 'hook:mounted': () => {\n this.onMounted(ctx);\n },\n 'fc.sub-form': (subForm) => {\n this.$handle.addSubForm(ctx, subForm);\n }\n },\n }\n ]\n\n if (!custom && ctx.input) {\n ctx.prop.model = {\n value: this.$handle.getFormData(ctx),\n callback: (value) => {\n this.onInput(ctx, value);\n },\n expression: `formData.${ctx.id}`\n };\n }\n mergeProps(props, ctx.prop);\n return ctx.prop;\n },\n onMounted(ctx) {\n ctx.el = this.vm.$refs[ctx.ref];\n if (ctx.el) {\n (ctx.el.$el || ctx.el).__rule__ = ctx.rule;\n }\n ctx.parser.mounted(ctx);\n this.$handle.effect(ctx, 'mounted');\n },\n onInput(ctx, value) {\n this.$handle.onInput(ctx, value);\n },\n renderChildren(ctx) {\n const {children} = ctx.rule, orgChildren = this.orgChildren[ctx.id];\n\n const isRm = child => {\n return !is.String(child) && child.__fc__ && !this.$handle.ctxs[child.__fc__.id];\n }\n\n if (!is.trueArray(children) && orgChildren) {\n this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n this.orgChildren[ctx.id] = [];\n return [];\n }\n\n orgChildren && this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (children.indexOf(child) === -1 && isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n\n return children.map(child => {\n if (!child) return;\n if (is.String(child)) return child;\n if (child.__fc__) {\n return this.renderCtx(child.__fc__, ctx);\n }\n if (child.type) {\n this.vm.$nextTick(() => {\n this.$handle.loadChildren(children, ctx);\n this.$handle.refresh();\n });\n }\n });\n\n },\n defaultRender(ctx, children) {\n const prop = ctx.prop;\n if(prop.component)\n return this.vNode.makeComponent(prop.component, prop, children)\n if (this.vNode[ctx.type])\n return this.vNode[ctx.type](prop, children);\n if (this.vNode[ctx.originType])\n return this.vNode[ctx.originType](prop, children);\n return this.vNode.make(lower(ctx.originType), prop, children);\n },\n renderRule(rule, children, origin) {\n if (!rule) return undefined;\n if (is.String(rule)) return rule;\n\n let type;\n if (origin) {\n type = rule.type;\n } else {\n type = rule.is;\n if (rule.type) {\n type = toCase(rule.type);\n const alias = this.vNode.aliasMap[type];\n if (alias) type = toCase(alias);\n }\n }\n\n if (!type) return undefined;\n let data = [[children]];\n if (is.trueArray(rule.children)) {\n data.push(rule.children.map(v => this.renderRule(v)));\n }\n return this.$h(type, {...rule}, data);\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\n\nconst EVENT = ['hook:updated', 'hook:mounted'];\n\nexport default function usePage(Handler) {\n extend(Handler.prototype, {\n usePage() {\n const page = this.options.page;\n if (!page) return;\n let first = 25;\n let limit = getLimit(this.rules);\n if (is.Object(page)) {\n if (page.first) first = parseInt(page.first, 10) || first;\n if (page.limit) limit = parseInt(page.limit, 10) || limit;\n }\n extend(this, {\n first,\n limit,\n pageEnd: this.rules.length <= first,\n })\n\n this.bus.$on('page-end', () => this.vm.$emit('page-end', this.api));\n this.pageLoad();\n },\n pageLoad() {\n const pageFn = () => {\n if (this.pageEnd) {\n this.vm.$off(EVENT, pageFn);\n this.bus.$emit('page-end');\n } else {\n this.first += this.limit;\n this.pageEnd = this.rules.length <= this.first;\n this.loadRule();\n this.refresh();\n }\n }\n this.vm.$on(EVENT, pageFn);\n },\n })\n}\n\n\nfunction getLimit(rules) {\n return rules.length < 31 ? 31 : Math.ceil(rules.length / 3);\n}\n","import unique from '@form-create/utils/lib/unique';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {enumerable, mergeRule} from '../frame/util';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\n\nfunction bind(ctx) {\n Object.defineProperties(ctx.origin, {\n __fc__: enumerable(ctx, true)\n });\n}\n\nexport default function RuleContext(handle, rule, defaultValue) {\n const id = unique();\n\n extend(this, {\n id,\n ref: id,\n wrapRef: id + 'fi',\n rule,\n origin: rule.__origin__ || rule,\n name: rule.name,\n\n watch: [],\n linkOn: [],\n root: [],\n ctrlRule: [],\n parent: null,\n cacheConfig: null,\n prop: {...rule},\n computed: {},\n payload: {},\n input: !!rule.field,\n el: undefined,\n defaultValue: rule.field ? deepCopy(defaultValue) : undefined,\n field: rule.field || undefined,\n })\n\n this.updateType();\n this.updateKey();\n bind(this);\n this.update(handle, true);\n}\n\nextend(RuleContext.prototype, {\n effectData(name) {\n if (!this.payload[name]) {\n this.payload[name] = {};\n }\n return this.payload[name];\n },\n clearEffectData(name) {\n if (name === undefined) {\n this.payload = {};\n } else {\n delete this.payload[name];\n }\n },\n updateKey(flag) {\n this.key = unique();\n flag && this.parent && this.parent.updateKey(flag);\n },\n updateType() {\n this.originType = this.rule.type;\n this.type = toCase(this.rule.type);\n },\n setParser(parser) {\n this.parser = parser;\n parser.init(this);\n },\n initProp() {\n const rule = {...this.rule};\n delete rule.children;\n this.prop = mergeRule({}, [rule, ...Object.keys(this.payload).map(k => this.payload[k]), this.computed]);\n },\n check(handle) {\n return this.vm === handle.vm\n },\n unwatch() {\n this.watch.forEach(un => un());\n this.watch = [];\n },\n unlink() {\n this.linkOn.forEach(un => un());\n this.linkOn = [];\n },\n link() {\n this.unlink();\n this.$handle.appendLink(this);\n },\n watchTo() {\n this.$handle.watchCtx(this);\n },\n delete() {\n const undef = void 0;\n this.unwatch();\n this.unlink();\n this.rmCtrl();\n extend(this, {\n deleted: true,\n prop: {...this.rule},\n computed: {},\n el: undef,\n $handle: undef,\n $render: undef,\n $api: undef,\n vm: undef,\n vNode: undef,\n parent: null,\n cacheConfig: null,\n })\n },\n rmCtrl() {\n this.ctrlRule.forEach(ctrl => ctrl.__fc__ && ctrl.__fc__.rm());\n this.ctrlRule = [];\n },\n rm() {\n const _rm = () => {\n let index = this.root.indexOf(this.origin);\n if (index > -1) {\n this.root.splice(index, 1);\n this.$handle && this.$handle.refresh();\n }\n }\n if (this.deleted) {\n _rm();\n return;\n }\n this.$handle.noWatch(() => {\n this.$handle.deferSyncValue(() => {\n this.rmCtrl();\n _rm();\n this.$handle.rmCtx(this);\n extend(this, {\n root: []\n });\n }, this.input);\n });\n },\n update(handle, init) {\n extend(this, {\n deleted: false,\n $handle: handle,\n $render: handle.$render,\n $api: handle.api,\n vm: handle.vm,\n trueType: handle.getType(this.originType),\n vNode: handle.$render.vNode,\n updated: false,\n });\n !init && this.unwatch();\n this.watchTo();\n this.link();\n }\n})\n","import extend from '@form-create/utils/lib/extend';\nimport {byCtx, copyRule, enumerable, getRule, invoke, parseFn} from '../frame/util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {baseRule} from '../factory/creator';\nimport RuleContext from '../factory/context';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {$set} from '@form-create/utils';\n\nconst condition = {\n '==': (b) => (a) => a === b,\n '!=': (b) => (a) => a !== b,\n '<>': (b) => (a) => a !== b,\n '>': (b) => (a) => a > b,\n '>=': (b) => (a) => a >= b,\n '<': (b) => (a) => a < b,\n '<=': (b) => (a) => a <= b,\n 'in': (b) => (a) => (b && b.indexOf && b.indexOf(a) > -1),\n 'on': (b) => (a) => (a && a.indexOf && a.indexOf(b) > -1),\n 'notIn': (b) => (a) => !(condition.in(b)(a)),\n 'notOn': (b) => (a) => !(condition.on(b)(a)),\n 'between': (b) => (a) => a > b[0] && a < b[1],\n 'notBetween': (b) => (a) => a < b[0] || a > b[1],\n}\n\n\nexport default function useLoader(Handler) {\n extend(Handler.prototype, {\n nextRefresh(fn) {\n const id = this.loadedId;\n this.vm.$nextTick(() => {\n id === this.loadedId && (fn ? fn() : this.refresh());\n });\n },\n parseRule(_rule) {\n const rule = getRule(_rule);\n\n Object.defineProperties(rule, {\n __origin__: enumerable(_rule, true)\n });\n\n fullRule(rule);\n this.appendValue(rule);\n\n rule.options = Array.isArray(rule.options) ? rule.options : [];\n\n [rule, rule['prefix'], rule['suffix']].forEach(item => {\n if (!item) {\n return;\n }\n this.loadFn(item, rule);\n });\n this.loadCtrl(rule);\n if (rule.update) {\n rule.update = parseFn(rule.update);\n }\n return rule;\n },\n loadFn(item, rule) {\n ['on', 'props', 'nativeOn', 'deep'].forEach(k => {\n item[k] && this.parseInjectEvent(rule, item[k]);\n });\n },\n loadCtrl(rule) {\n rule.control && rule.control.forEach(ctrl => {\n if (ctrl.handle) {\n ctrl.handle = parseFn(ctrl.handle)\n }\n })\n },\n syncProp(ctx) {\n const rule = ctx.rule;\n is.trueArray(rule.sync) && mergeProps([{\n on: rule.sync.reduce((pre, prop) => {\n pre[`update:${prop}`] = (val) => {\n rule.props[prop] = val;\n this.vm.$emit('sync', prop, val, rule, this.fapi);\n }\n return pre\n }, {})\n }], ctx.computed)\n },\n loadRule() {\n // console.warn('%c load', 'color:blue');\n this.cycleLoad = false;\n this.loading = true;\n if (this.pageEnd) {\n this.bus.$emit('load-start');\n }\n this.deferSyncValue(() => {\n this._loadRule(this.rules);\n this.loading = false;\n if (this.cycleLoad && this.pageEnd) {\n return this.loadRule();\n }\n if (this.pageEnd) {\n this.bus.$emit('load-end');\n }\n this.vm._renderRule();\n this.$render.initOrgChildren();\n this.syncForm();\n });\n },\n loadChildren(children, parent) {\n this.cycleLoad = false;\n this.loading = true;\n this.bus.$emit('load-start');\n this._loadRule(children, parent);\n this.loading = false;\n if (this.cycleLoad) {\n return this.loadRule();\n } else {\n this.bus.$emit('load-end');\n this.syncForm();\n }\n this.$render.clearCache(parent);\n },\n _loadRule(rules, parent) {\n\n const preIndex = (i) => {\n let pre = rules[i - 1];\n if (!pre || !pre.__fc__) {\n return i > 0 ? preIndex(i - 1) : -1;\n }\n let index = this.sort.indexOf(pre.__fc__.id);\n return index > -1 ? index : preIndex(i - 1);\n }\n\n const loadChildren = (children, parent) => {\n if (is.trueArray(children)) {\n this._loadRule(children, parent);\n }\n };\n\n rules.map((_rule, index) => {\n if (parent && !is.Object(_rule)) return;\n if (!this.pageEnd && !parent && index >= this.first) return;\n\n if (_rule.__fc__ && _rule.__fc__.root === rules && this.ctxs[_rule.__fc__.id]) {\n loadChildren(_rule.__fc__.rule.children, _rule.__fc__);\n return _rule.__fc__;\n }\n\n let rule = getRule(_rule);\n\n const isRepeat = () => {\n return !!(rule.field && this.fieldCtx[rule.field] && this.fieldCtx[rule.field][0] !== _rule.__fc__)\n }\n\n this.ruleEffect(rule, 'init', {repeat: isRepeat()});\n\n if (isRepeat()) {\n this.vm.$emit('repeat-field', _rule, this.api);\n }\n\n let ctx;\n let isCopy = false;\n let isInit = !!_rule.__fc__;\n let defaultValue = rule.value;\n if (isInit) {\n ctx = _rule.__fc__;\n defaultValue = ctx.defaultValue;\n const check = !ctx.check(this);\n if (ctx.deleted) {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n ctx.update(this);\n }\n } else {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n rules[index] = _rule = _rule._clone ? _rule._clone() : copyRule(_rule);\n ctx = null;\n isCopy = true;\n }\n }\n }\n if (!ctx) {\n const rule = this.parseRule(_rule);\n ctx = new RuleContext(this, rule, isInit ? defaultValue : rule.value);\n this.bindParser(ctx);\n } else {\n if (ctx.originType !== ctx.rule.type) {\n ctx.updateType();\n this.bindParser(ctx);\n }\n this.appendValue(ctx.rule);\n }\n [false, true].forEach(b => this.parseEmit(ctx, b));\n this.syncProp(ctx);\n ctx.parent = parent || null;\n ctx.root = rules;\n this.setCtx(ctx);\n\n !isCopy && !isInit && this.effect(ctx, 'load');\n\n ctx.parser.loadChildren === false || loadChildren(ctx.rule.children, ctx);\n\n if (!parent) {\n const _preIndex = preIndex(index);\n if (_preIndex > -1 || !index) {\n this.sort.splice(_preIndex + 1, 0, ctx.id);\n } else {\n this.sort.push(ctx.id);\n }\n }\n\n const r = ctx.rule;\n if (!ctx.updated) {\n ctx.updated = true;\n if (is.Function(r.update)) {\n this.bus.$once('load-end', () => {\n this.refreshUpdate(ctx, r.value, 'init');\n });\n }\n this.effect(ctx, 'loaded');\n }\n\n if (ctx.input)\n Object.defineProperty(r, 'value', this.valueHandle(ctx));\n if (this.refreshControl(ctx)) this.cycleLoad = true;\n return ctx;\n });\n },\n refreshControl(ctx) {\n return ctx.input && ctx.rule.control && this.useCtrl(ctx);\n },\n useCtrl(ctx) {\n const controls = getCtrl(ctx), validate = [], api = this.api;\n if (!controls.length) return false;\n\n for (let i = 0; i < controls.length; i++) {\n const control = controls[i], handleFn = control.handle || ((condition[control.condition || '=='] || condition['=='])(control.value));\n if (!is.trueArray(control.rule)) continue;\n const data = {\n ...control,\n valid: invoke(() => handleFn(ctx.rule.value, api)),\n ctrl: findCtrl(ctx, control.rule),\n isHidden: is.String(control.rule[0]),\n };\n if ((data.valid && data.ctrl) || (!data.valid && !data.ctrl && !data.isHidden)) continue;\n validate.push(data);\n }\n if (!validate.length) return false;\n\n const hideLst = [];\n let flag = false;\n this.deferSyncValue(() => {\n validate.reverse().forEach(({isHidden, valid, rule, prepend, append, child, ctrl, method}) => {\n if (isHidden) {\n valid ? ctx.ctrlRule.push({\n __ctrl: true,\n children: rule,\n valid\n })\n : ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n hideLst[valid ? 'push' : 'unshift'](() => {\n if (method === 'disabled') {\n this.api.disabled(!valid, rule);\n } else if (method === 'display') {\n this.api.display(valid, rule);\n } else if (method === 'required') {\n rule.forEach(item => {\n this.api.setEffect(item, 'required', valid);\n })\n if(!valid){\n this.api.clearValidateState(rule);\n }\n } else {\n this.api.hidden(!valid, rule);\n }\n });\n return;\n }\n if (valid) {\n flag = true;\n const ruleCon = {\n type: 'fcFragment',\n native: true,\n __ctrl: true,\n children: rule,\n }\n ctx.ctrlRule.push(ruleCon);\n this.bus.$once('load-start', () => {\n // this.cycleLoad = true;\n if (prepend) {\n api.prepend(ruleCon, prepend, child)\n } else if (append || child) {\n api.append(ruleCon, append || ctx.id, child)\n } else {\n ctx.root.splice(ctx.root.indexOf(ctx.origin) + 1, 0, ruleCon);\n }\n });\n } else {\n ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n const ctrlCtx = byCtx(ctrl);\n ctrlCtx && ctrlCtx.rm();\n }\n });\n });\n hideLst.length && this.vm.$nextTick(() => {\n hideLst.forEach(v => v());\n });\n this.vm.$emit('control', ctx.origin, this.api);\n this.effect(ctx, 'control');\n return flag;\n },\n reloadRule(rules) {\n return this._reloadRule(rules);\n },\n _reloadRule(rules) {\n // console.warn('%c reload', 'color:red');\n if (!rules) rules = this.rules;\n\n const ctxs = {...this.ctxs};\n\n this.clearNextTick();\n this.$render.clearOrgChildren();\n this.initData(rules);\n this.fc.rules = rules;\n this.deferSyncValue(() => {\n this.bus.$once('load-end', () => {\n Object.keys(ctxs).filter(id => this.ctxs[id] === undefined)\n .forEach(id => this.rmCtx(ctxs[id]));\n this.$render.clearCacheAll();\n });\n this.reloading = true;\n this.loadRule();\n this.reloading = false;\n this.refresh();\n this.vm.$emit('reloading', this.api);\n });\n this.bus.$off('next-tick', this.nextReload);\n this.bus.$once('next-tick', this.nextReload);\n this.vm.$emit('update', this.api);\n },\n //todo 组件生成全部通过 alias\n refresh() {\n this.vm._refresh();\n },\n });\n}\n\nfunction fullRule(rule) {\n const def = baseRule();\n\n Object.keys(def).forEach(k => {\n if (!hasProperty(rule, k)) $set(rule, k, def[k]);\n });\n return rule;\n}\n\nfunction getCtrl(ctx) {\n const control = ctx.rule.control || [];\n if (is.Object(control)) return [control];\n else return control;\n}\n\nfunction findCtrl(ctx, rule) {\n for (let i = 0; i < ctx.ctrlRule.length; i++) {\n const ctrl = ctx.ctrlRule[i];\n if (ctrl.children === rule)\n return ctrl;\n }\n}\n\nfunction isCtrl(ctx) {\n return !!ctx.rule.__ctrl;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport {$set} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nexport default function useInput(Handler) {\n extend(Handler.prototype, {\n getValue(ctx) {\n if (is.Undef(ctx.cacheValue)) {\n ctx.cacheValue = ctx.parser.toValue(this.getFormData(ctx), ctx);\n }\n return ctx.cacheValue;\n },\n setValue(ctx, value, formValue, setFlag) {\n if (ctx.deleted) return;\n ctx.cacheValue = value;\n this.changeStatus = true;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n this.setFormData(ctx, formValue);\n this.syncValue();\n this.valueChange(ctx, value);\n this.vm.$emit('change', ctx.field, value, ctx.origin, this.api, setFlag || false);\n this.effect(ctx, 'value');\n },\n onInput(ctx, value) {\n let val;\n if (ctx.input && (this.isQuote(ctx, val = ctx.parser.toValue(value, ctx)) || this.isChange(ctx, val))) {\n this.setValue(ctx, val, value);\n }\n },\n setFormData(ctx, value) {\n $set(this.formData, ctx.id, value === null ? undefined : value);\n },\n getFormData(ctx) {\n return this.formData[ctx.id];\n },\n validate() {\n toEmpty(this.vm.validate);\n this.fields().forEach(id => {\n this.fieldCtx[id].forEach(ctx => {\n this.vm.validate[ctx.id] = toArray(ctx.rule.validate);\n });\n });\n return this.vm.validate;\n },\n syncForm() {\n toEmpty(this.form);\n Object.defineProperties(this.form, this.fields().reduce((initial, field) => {\n const ctx = this.getFieldCtx(field);\n const handle = this.valueHandle(ctx);\n handle.configurable = true;\n initial[field] = handle;\n return initial;\n }, this.options.appendValue ? Object.keys(this.appendData).reduce((initial, field) => {\n initial[field] = {\n enumerable: true,\n configurable: true,\n get: () => {\n return this.appendData[field];\n },\n set: (val) => {\n this.appendData[field] = val;\n }\n }\n return initial;\n }, {}) : {}));\n this.syncValue();\n },\n valueHandle(ctx) {\n return {\n enumerable: true,\n get: () => {\n return this.getValue(ctx);\n },\n set: (value) => {\n if (this.isChange(ctx, value)) {\n this.setValue(ctx, value, ctx.parser.toFormValue(value, ctx), true);\n }\n }\n };\n },\n appendValue(rule) {\n if (!rule.field || !hasProperty(this.appendData, rule.field)) return;\n rule.value = this.appendData[rule.field];\n delete this.appendData[rule.field];\n },\n addSubForm(ctx, subForm) {\n this.subForm[ctx.id] = subForm;\n },\n deferSyncValue(fn, sync) {\n if (!this.deferSyncFn) {\n this.deferSyncFn = fn;\n }\n if (!this.deferSyncFn.sync) {\n this.deferSyncFn.sync = sync;\n }\n invoke(fn);\n if (this.deferSyncFn === fn) {\n this.deferSyncFn = null;\n if (fn.sync) {\n this.syncValue();\n }\n }\n },\n syncValue() {\n if (this.deferSyncFn) {\n return this.deferSyncFn.sync = true;\n }\n this.vm._updateValue({...(this.options.appendValue ? this.appendData : {}), ...this.form});\n },\n isChange(ctx, value) {\n return JSON.stringify(ctx.rule.value, strFn) !== JSON.stringify(value === null ? undefined : value, strFn);\n },\n isQuote(ctx, value) {\n return (is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;\n },\n refreshUpdate(ctx, val, origin) {\n if (is.Function(ctx.rule.update)) {\n const state = invoke(() => ctx.rule.update(val, ctx.origin, this.api, {origin: origin || 'change'}));\n if (state === undefined) return;\n ctx.rule.hidden = state === true;\n }\n },\n valueChange(ctx, val) {\n this.refreshRule(ctx, val);\n this.bus.$emit('change-' + ctx.field, val);\n },\n refreshRule(ctx, val, origin) {\n if (this.refreshControl(ctx)) {\n this.$render.clearCacheAll();\n this.loadRule();\n this.vm.$emit('update', this.api);\n this.refresh();\n }\n this.refreshUpdate(ctx, val, origin);\n },\n appendLink(ctx) {\n const link = ctx.rule.link;\n is.trueArray(link) && link.forEach(field => {\n const fn = () => this.refreshRule(ctx, ctx.rule.value, 'link');\n\n this.bus.$on('change-' + field, fn);\n ctx.linkOn.push(() => this.bus.$off('change-' + field, fn));\n });\n },\n fields() {\n return Object.keys(this.fieldCtx);\n },\n });\n}\n\n\nfunction strFn(key, val) {\n return typeof val === 'function' ? '' + val : val;\n}\n\nfunction toEmpty(obj) {\n Object.keys(obj).forEach(k => delete obj[k]);\n}\n","const BaseParser = {\n init(ctx) {\n },\n toFormValue(value, ctx) {\n return value\n },\n toValue(formValue, ctx) {\n return formValue;\n },\n mounted(ctx) {\n },\n render(children, ctx) {\n return ctx.$render.defaultRender(ctx, children);\n },\n preview(children, ctx) {\n return this.render(children, ctx);\n },\n mergeProp(ctx) {\n }\n}\n\nexport default BaseParser;\n","import extend from '@form-create/utils/lib/extend';\nimport toCase from '@form-create/utils/lib/tocase';\nimport BaseParser from '../factory/parser';\nimport {$del} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\n\nconst noneKey = ['field', 'value', 'vm', 'template', 'name', 'config', 'control', 'inject', 'sync', 'payload', 'optionsTo', 'update', 'component', 'cache'];\n\nexport default function useContext(Handler) {\n extend(Handler.prototype, {\n getCtx(id) {\n return this.getFieldCtx(id) || this.getNameCtx(id)[0] || this.ctxs[id];\n },\n getCtxs(id) {\n return this.fieldCtx[id] || this.nameCtx[id] || (this.ctxs[id] ? [this.ctxs[id]] : []);\n },\n setIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n if (!this[field][key]) {\n this[field][key] = [ctx];\n } else {\n this[field][key].push(ctx);\n }\n },\n rmIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n const lst = this[field][key];\n if (!lst) return false;\n const flag = lst.splice(lst.indexOf(ctx) >>> 0, 1).length > 0;\n if (!lst.length) {\n delete this[field][key];\n }\n return flag;\n },\n getFieldCtx(field) {\n return (this.fieldCtx[field] || [])[0];\n },\n getNameCtx(name) {\n return this.nameCtx[name] || [];\n },\n setCtx(ctx) {\n let {id, field, name, rule} = ctx;\n this.ctxs[id] = ctx;\n name && this.setIdCtx(ctx, name, 'name');\n if (!ctx.input) return;\n this.setIdCtx(ctx, field, 'field');\n this.setFormData(ctx, ctx.parser.toFormValue(rule.value, ctx));\n if (this.isMounted && !this.reloading) {\n this.vm.$emit('change', ctx.field, rule.value, ctx.origin, this.api);\n }\n },\n getParser(ctx) {\n const list = this.fc.parsers;\n return list[ctx.originType] || list[toCase(ctx.type)] || list[ctx.trueType] || BaseParser;\n },\n bindParser(ctx) {\n ctx.setParser(this.getParser(ctx));\n },\n getType(alias) {\n const map = this.fc.CreateNode.aliasMap;\n const type = map[alias] || map[toCase(alias)] || alias;\n return toCase(type);\n },\n noWatch(fn) {\n if (!this.noWatchFn) {\n this.noWatchFn = fn;\n }\n invoke(fn);\n if (this.noWatchFn === fn) {\n this.noWatchFn = null;\n }\n },\n watchCtx(ctx) {\n const vm = this.vm;\n Object.keys(ctx.rule).filter(k => k[0] !== '_' && k[0] !== '$' && noneKey.indexOf(k) === -1).forEach((key) => {\n const flag = key === 'children';\n ctx.watch.push(vm.$watch(() => ctx.rule[key], (n, o) => {\n if (this.loading || this.noWatchFn || this.reloading) return;\n if (flag && ctx.parser.loadChildren === false) {\n this.$render.clearCache(ctx);\n this.nextRefresh();\n return;\n }\n this.watching = true;\n // if (key === 'hidden')\n // ctx.updateKey(true);\n // else\n if (key === 'link') {\n ctx.link();\n return;\n } else if (['props', 'on', 'nativeOn', 'deep'].indexOf(key) > -1) {\n this.parseInjectEvent(ctx.rule, n || {});\n if (key === 'props' && ctx.input) {\n this.setFormData(ctx, ctx.parser.toFormValue(ctx.rule.value, ctx));\n }\n } else if (['emit', 'nativeEmit'].indexOf(key) > -1)\n this.parseEmit(ctx, key === 'emit');\n else if (['prefix', 'suffix'].indexOf(key) > -1)\n n && this.loadFn(n, ctx.rule);\n else if (key === 'type') {\n ctx.updateType();\n this.bindParser(ctx);\n } else if (key === 'children') {\n const flag = is.trueArray(n);\n this.deferSyncValue(() => {\n if (n !== o) {\n this.rmSub(o, ctx);\n this.$render.initOrgChildren();\n }\n flag && this.loadChildren(n, ctx);\n this.vm.$emit('update', this.api);\n });\n }\n this.$render.clearCache(ctx);\n this.refresh();\n this.watching = false;\n }, {deep: !flag, sync: flag}));\n });\n this.watchEffect(ctx);\n },\n rmSub(sub, ctx) {\n is.trueArray(sub) && sub.forEach(r => {\n r && r.__fc__ && r.__fc__.parent === ctx && this.rmCtx(r.__fc__);\n })\n },\n rmCtx(ctx) {\n if (ctx.deleted) return;\n const {id, field, input, name} = ctx;\n if (ctx.input) {\n Object.defineProperty(ctx.rule, 'value', {\n value: ctx.rule.value,\n writable: true\n });\n }\n\n $del(this.ctxs, id);\n $del(this.$render.tempList, id);\n $del(this.$render.orgChildren, id);\n $del(this.vm.ctxInject, id);\n $del(this.formData, id);\n $del(this.subForm, id);\n $del(ctx, 'cacheValue');\n\n input && this.rmIdCtx(ctx, field, 'field');\n name && this.rmIdCtx(ctx, name, 'name');\n\n if (input && !hasProperty(this.fieldCtx, field)) {\n $del(this.form, field);\n }\n\n this.deferSyncValue(() => {\n if (!this.reloading) {\n if (ctx.parser.loadChildren !== false) {\n if (is.trueArray(ctx.rule.children)) {\n ctx.rule.children.forEach(h => h.__fc__ && this.rmCtx(h.__fc__));\n }\n }\n if (ctx.root === this.rules) {\n this.vm._renderRule();\n }\n }\n }, input);\n\n const index = this.sort.indexOf(id);\n if (index > -1) {\n this.sort.splice(index, 1);\n }\n\n this.$render.clearCache(ctx);\n ctx.delete();\n this.effect(ctx, 'deleted');\n input && !this.fieldCtx[field] && this.vm.$emit('removeField', field, ctx.rule, this.api);\n ctx.rule.__ctrl || this.vm.$emit('removeRule', ctx.rule, this.api);\n return ctx;\n },\n })\n}\n","import Api from '../frame/api';\nimport Render from '../render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\nimport useInject from './inject';\nimport usePage from './page';\nimport useRender from './render';\nimport useLoader from './loader';\nimport useInput from './input';\nimport useContext from './context';\nimport useLifecycle from './lifecycle';\nimport useEffect from './effect';\n\n\nexport default function Handler(fc) {\n extend(this, {\n fc,\n vm: fc.vm,\n watching: false,\n loading: false,\n reloading: false,\n noWatchFn: null,\n deferSyncFn: null,\n isMounted: false,\n formData: {},\n subForm: {},\n form: {},\n appendData: {},\n providers: {},\n cycleLoad: null,\n loadedId: 1,\n nextTick: null,\n changeStatus: false,\n pageEnd: true,\n nextReload: () => {\n this.lifecycle('reload');\n }\n });\n\n funcProxy(this, {\n options() {\n return fc.options;\n },\n bus() {\n return fc.bus;\n },\n })\n\n this.initData(fc.rules);\n\n this.$manager = new fc.manager(this);\n this.$render = new Render(this);\n this.api = fc.extendApi(Api(this), this);\n}\n\nextend(Handler.prototype, {\n initData(rules) {\n extend(this, {\n ctxs: {},\n fieldCtx: {},\n nameCtx: {},\n sort: [],\n rules,\n });\n },\n init() {\n this.appendData = {...this.fc.options.formData || {}, ...this.vm.value || {}, ...this.appendData};\n this.useProvider();\n this.usePage();\n this.loadRule();\n this.$manager.__init();\n this.vm.$set(this.vm, 'formData', this.formData);\n },\n})\n\nuseInject(Handler);\nusePage(Handler);\nuseRender(Handler);\nuseLoader(Handler);\nuseInput(Handler);\nuseContext(Handler);\nuseLifecycle(Handler);\nuseEffect(Handler);\n","// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js\n\nfunction getError(action, option, xhr) {\n const msg = `fail to ${action} ${xhr.status}'`;\n const err = new Error(msg);\n err.status = xhr.status;\n err.url = action;\n return err;\n}\n\nfunction getBody(xhr) {\n const text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function fetch(option) {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n\n const xhr = new XMLHttpRequest();\n const action = option.action;\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr));\n };\n\n xhr.open(option.method || 'get', action, true);\n\n let formData;\n if (option.data) {\n if ((option.dataType || '').toLowerCase() !== 'json') {\n formData = new FormData();\n Object.keys(option.data).map(key => {\n formData.append(key, option.data[key]);\n });\n } else {\n formData = JSON.stringify(option.data);\n xhr.setRequestHeader('content-type', 'application/json');\n }\n }\n\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n const headers = option.headers || {};\n\n Object.keys(headers).forEach(item => {\n if (headers[item] !== null) {\n xhr.setRequestHeader(item, headers[item]);\n }\n });\n xhr.send(formData);\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport toLine from '@form-create/utils/lib/toline';\nimport {parseFn} from '../frame/util';\n\n\nexport default function useInject(Handler) {\n extend(Handler.prototype, {\n parseInjectEvent(rule, on) {\n const inject = rule.inject || this.options.injectEvent;\n return this.parseEventLst(rule, on, inject);\n },\n parseEventLst(rule, data, inject, deep) {\n Object.keys(data).forEach(k => {\n const fn = this.parseEvent(rule, data[k], inject, deep);\n if (fn) {\n data[k] = fn;\n }\n });\n return data;\n },\n parseEvent(rule, fn, inject, deep) {\n if (is.Function(fn) && ((inject !== false && !is.Undef(inject)) || fn.__inject)) {\n return this.inject(rule, fn, inject)\n } else if (!deep && Array.isArray(fn) && fn[0] && (is.String(fn[0]) || is.Function(fn[0]))) {\n return this.parseEventLst(rule, fn, inject, true);\n } else if (is.String(fn)) {\n const val = parseFn(fn);\n if (val && fn !== val) {\n return val.__inject ? this.parseEvent(rule, val, inject, true) : val;\n }\n }\n },\n parseEmit(ctx, on) {\n let event = {}, rule = ctx.rule, {emitPrefix, field, name, inject} = rule;\n let emit = rule[on ? 'emit' : 'nativeEmit'] || [];\n if (is.trueArray(emit)) {\n let emitKey = emitPrefix || field || name;\n if (emitKey) {\n if (!on) emitKey = `native-${emitKey}`;\n emit.forEach(eventName => {\n if (!eventName) return;\n let eventInject;\n if (is.Object(eventName)) {\n eventInject = eventName.inject;\n eventName = eventName.name;\n }\n const fieldKey = toLine(`${emitKey}-${eventName}`);\n const fn = (...arg) => {\n this.vm.$emit(fieldKey, ...arg);\n this.vm.$emit('emit-event', fieldKey, ...arg);\n };\n fn.__emit = true;\n\n if (!eventInject && inject === false) {\n event[eventName] = fn;\n } else {\n let _inject = eventInject || inject || this.options.injectEvent;\n event[eventName] = is.Undef(_inject) ? fn : this.inject(rule, fn, _inject);\n }\n });\n }\n\n }\n ctx.computed[on ? 'on' : 'nativeOn'] = event;\n return event;\n },\n getInjectData(self, inject) {\n const {option, rule} = this.vm.$options.propsData;\n return {\n api: this.api,\n $f: this.api,\n rule,\n self: self.__origin__,\n option,\n inject\n };\n },\n inject(self, _fn, inject) {\n if (_fn.__origin) {\n if (this.watching && !this.loading)\n return _fn;\n _fn = _fn.__origin;\n }\n\n const h = this;\n\n const fn = function (...args) {\n const data = h.getInjectData(self, inject);\n data.args = [...args];\n args.unshift(data);\n return _fn.apply(this, args);\n };\n fn.__origin = _fn;\n fn.__json = _fn.__json;\n return fn;\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\n\n\nexport default function useRender(Handler) {\n extend(Handler.prototype, {\n clearNextTick() {\n this.nextTick && clearTimeout(this.nextTick);\n this.nextTick = null;\n },\n bindNextTick(fn) {\n this.clearNextTick();\n this.nextTick = setTimeout(() => {\n fn()\n this.nextTick = null;\n }, 10);\n },\n render() {\n // console.warn('%c render', 'color:green');\n ++this.loadedId;\n\n if (this.vm.unique > 0)\n return this.$render.render();\n else {\n this.vm.unique = 1;\n return [];\n }\n },\n });\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\n\n\nexport default function useLifecycle(Handler) {\n extend(Handler.prototype, {\n mounted() {\n const _mounted = () => {\n this.isMounted = true;\n this.lifecycle('mounted');\n }\n if (this.pageEnd) {\n _mounted();\n } else {\n this.bus.$once('page-end', _mounted);\n }\n },\n lifecycle(name) {\n const fn = this.options[name];\n is.Function(fn) && invoke(() => fn(this.api));\n this.vm.$emit(name, this.api);\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {mergeRule} from '../frame/util';\n\n\nexport default function useEffect(Handler) {\n extend(Handler.prototype, {\n useProvider() {\n const ps = this.fc.providers;\n Object.keys(ps).forEach(k => {\n let prop = ps[k];\n if (is.Function(prop)) {\n prop = prop(this.fc);\n }\n prop._c = getComponent(prop);\n this.onEffect(prop);\n this.providers[k] = prop;\n });\n },\n onEffect(provider) {\n const used = [];\n (provider._c || ['*']).forEach(name => {\n const type = name === '*' ? '*' : this.getType(name);\n if (used.indexOf(type) > -1) return;\n used.push(type);\n this.bus.$on(`p:${provider.name}:${type}:${provider.input ? 1 : 0}`, (event, args) => {\n provider[event] && provider[event](...args);\n });\n });\n provider._used = used;\n },\n watchEffect(ctx) {\n const vm = this.vm;\n let effect = {\n required: () => {\n return (hasProperty(ctx.rule, '$required') ? ctx.rule['$required'] : ctx.rule?.effect?.required) || false;\n }\n };\n Object.keys(ctx.rule.effect || {}).forEach(k => {\n effect[k] = () => ctx.rule.effect[k];\n })\n Object.keys(ctx.rule).forEach(k => {\n if (k[0] === '$') {\n effect[k.substr(1)] = () => ctx.rule[k];\n }\n })\n Object.keys(effect || {}).forEach(k => {\n ctx.watch.push(vm.$watch(effect[k], (n) => {\n this.effect(ctx, 'watch', {[k]: n});\n }, {deep: true}));\n });\n },\n ruleEffect(rule, event, append) {\n this.emitEffect({\n rule,\n input: !!rule.field,\n type: this.getType(rule.type)\n }, event, append);\n },\n effect(ctx, event, custom) {\n this.emitEffect({\n rule: ctx.rule,\n input: ctx.input,\n type: ctx.trueType,\n ctx,\n custom\n }, event);\n },\n getEffect(rule, name) {\n if (hasProperty(rule, '$' + name)) {\n return rule['$' + name];\n }\n if (hasProperty(rule, 'effect') && hasProperty(rule.effect, name))\n return rule.effect[name];\n return undefined;\n },\n emitEffect({ctx, rule, input, type, custom}, event, append) {\n if (!type || type === 'fcFragment') return;\n const effect = custom ? custom : (Object.keys(rule).reduce((i, k) => {\n if (k[0] === '$') {\n i[k.substr(1)] = rule[k];\n }\n return i;\n }, {...rule.effect || {}}));\n Object.keys(effect).forEach(attr => {\n const p = this.providers[attr];\n if (!p || (p.input && !input)) return;\n let _type;\n if (!p._c) {\n _type = '*';\n } else if (p._used.indexOf(type) > -1) {\n _type = type;\n } else {\n return;\n }\n const data = {value: effect[attr], getValue: () => this.getEffect(rule, attr), ...(append || {})};\n if (ctx) {\n data.getProp = () => ctx.effectData(attr);\n data.clearProp = () => ctx.clearEffectData(attr);\n data.mergeProp = (prop) => mergeRule(data.getProp(), [prop]);\n }\n this.bus.$emit(`p:${attr}:${_type}:${p.input ? 1 : 0}`, event, [data, rule, this.api]);\n });\n }\n });\n}\n\nfunction unique(arr) {\n return arr.filter(function (item, index, arr) {\n return arr.indexOf(item, 0) === index;\n });\n}\n\nfunction getComponent(p) {\n const c = p.components;\n if (Array.isArray(c)) return unique(c.filter(v => v !== '*'));\n else if (is.String(c)) return [c];\n else return false;\n}\n","const NAME = 'fcFragment';\n\nexport default {\n name: NAME,\n functional: true,\n props: ['vnode'],\n render(h, ctx) {\n return ctx.props.vnode ? ctx.props.vnode : ctx.children\n }\n}\n","import toLine from '@form-create/utils/lib/toline';\nimport is from '@form-create/utils/lib/type';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\nimport Vue from 'vue';\n\nfunction parseProp(prop) {\n if (is.String(prop))\n return {domProps: {innerHTML: prop}};\n return prop;\n}\n\nexport function CreateNodeFactory() {\n\n const aliasMap = {};\n\n function CreateNode(vm) {\n vm && this.setVm(vm);\n }\n\n extend(CreateNode.prototype, {\n setVm(vm) {\n this.vm = vm;\n this.$h = vm.$createElement;\n },\n make(tag, data, children) {\n if (Vue.config.isReservedTag(tag) && data.nativeOn) delete data.nativeOn;\n return this.makeComponent(tag, data, children);\n },\n makeComponent(type, data, children) {\n let Node = this.$h(type, parseProp(data), children || []);\n Node.context = this.vm;\n return Node;\n },\n aliasMap\n });\n\n extend(CreateNode, {\n aliasMap,\n alias(alias, name) {\n aliasMap[alias] = name;\n },\n use(nodes) {\n Object.keys(nodes).forEach((k) => {\n const line = toLine(k);\n const lower = toString(k).toLocaleLowerCase();\n const v = nodes[k];\n [k, line, lower].forEach(n => {\n CreateNode.alias(k, v);\n CreateNode.prototype[n] = function (data, children) {\n return this.make(v, data, children);\n };\n });\n });\n }\n })\n\n return CreateNode;\n}\n","import mergeProps from '@form-create/utils/lib/mergeprops';\nimport unique from '@form-create/utils/lib/unique';\nimport extend from '@form-create/utils/lib/extend';\n\nexport function createManager(proto) {\n class CustomManager extends Manager {\n }\n\n Object.assign(CustomManager.prototype, proto);\n return CustomManager;\n}\n\nexport default function Manager(handler) {\n extend(this, {\n $handle: handler,\n vm: handler.vm,\n options: {},\n ref: 'fcForm',\n mergeOptionsRule: {\n normal: ['form', 'row', 'info', 'submitBtn', 'resetBtn']\n }\n });\n this.updateKey();\n this.init();\n}\n\nextend(Manager.prototype, {\n __init() {\n this.$render = this.$handle.$render;\n this.$r = (...args) => this.$render.renderRule(...args);\n },\n updateKey() {\n this.key = unique();\n },\n //TODO interface\n init() {\n },\n update() {\n },\n beforeRender() {\n },\n form() {\n return this.vm.$refs[this.ref];\n },\n mergeOptions(args, opt) {\n return mergeProps(args.map(v => this.tidyOptions(v)), opt, this.mergeOptionsRule);\n },\n updateOptions(options) {\n this.options = this.mergeOptions([options], this.getDefaultOptions());\n this.update();\n },\n tidyOptions(options) {\n return options;\n },\n tidyRule(ctx) {\n },\n mergeProp(ctx) {\n },\n getDefaultOptions() {\n return {};\n },\n render(children) {\n }\n})\n","import {err} from '@form-create/utils/lib/console';\nimport {byCtx, invoke} from './util';\nimport is from '@form-create/utils/lib/type';\nimport deepSet from '@form-create/utils/lib/deepset';\n\nconst componentValidate = {\n name: 'componentValidate',\n load(attr, rule, api) {\n const method = attr.getValue();\n if (!method) {\n attr.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n attr.getProp().validate = [{\n validator(...args) {\n const ctx = byCtx(rule);\n if (ctx) {\n return api.exec(ctx.id, method === true ? 'formCreateValidate' : method, ...args, {\n attr,\n rule,\n api\n });\n }\n }\n }];\n }\n },\n watch(...args) {\n componentValidate.load(...args);\n }\n};\n\nconst fetch = function (fc) {\n\n function parseOpt(option) {\n if (is.String(option)) {\n option = {\n action: option,\n to: 'options'\n }\n }\n return option;\n }\n\n function run(inject, rule, api) {\n let option = inject.value;\n if (is.Function(option)) {\n option = option(rule, api);\n }\n option = parseOpt(option);\n if (!option || !option.action) {\n return false;\n }\n if (!option.to) {\n option.to = 'options';\n }\n const onError = option.onError;\n\n const check = () => {\n if (!inject.getValue()) {\n inject.clearProp();\n api.sync(rule);\n return true;\n }\n }\n\n const set = (val) => {\n if (val === undefined) {\n inject.clearProp();\n api.sync(rule);\n } else {\n deepSet(inject.getProp(), option.to, val);\n }\n }\n\n invoke(() => fc.create.fetch({\n ...option,\n onSuccess(body) {\n if (check()) return;\n let fn = (v) => v.data;\n if (is.Function(option.parse)) {\n fn = option.parse;\n }\n set(fn(body, rule, api))\n api.sync(rule);\n },\n onError(e) {\n set(undefined)\n if (check()) return;\n (onError || ((e) => err(e.message || 'fetch fail ' + option.action)))(e, rule, api);\n }\n }, {inject, rule, api}));\n return true;\n }\n\n return {\n name: 'fetch',\n loaded(...args) {\n run(...args);\n },\n watch(inject, rule, api) {\n if (!run(inject, rule, api)) {\n inject.clearProp();\n api.sync(rule);\n }\n }\n };\n}\n\n\nconst $required = {\n name: 'required',\n load(inject, rule, api) {\n const val = parseVal(inject.getValue());\n if (val.required === false) {\n inject.clearProp();\n } else {\n const validate = {\n required: true,\n validator(_, v, call) {\n is.empty(v) ? call(validate.message) : call();\n },\n ...val,\n };\n if (!validate.message) {\n let title = rule.title || '';\n validate.message = ((typeof title === 'object' ? title.title : title) || '') + '不能为空';\n }\n inject.getProp().validate = [validate];\n }\n api.sync(rule);\n },\n watch(...args) {\n $required.load(...args);\n }\n}\n\nfunction parseVal(val) {\n if (is.Boolean(val)) {\n return {required: val}\n } else if (is.String(val)) {\n return {message: val};\n } else if (is.Undef(val)) {\n return {required: false};\n } else if (is.Function(val)) {\n return {validator: val};\n } else if (!is.Object(val)) {\n return {};\n } else {\n return val;\n }\n}\n\nexport default {\n fetch,\n required: $required,\n componentValidate,\n};\n","import is from '@form-create/utils/lib/type';\n\nconst name = 'html';\n\nexport default {\n name,\n loadChildren: false,\n render(children, ctx) {\n if (!ctx.prop.domProps) ctx.prop.domProps = {};\n ctx.prop.domProps.innerHTML = children;\n return ctx.vNode.make(ctx.prop.props.tag || 'div', ctx.prop);\n },\n renderChildren(ctx) {\n if (Array.isArray(ctx.rule.children)) {\n return ctx.rule.children.filter(v => is.String(v)).join('');\n }\n return '';\n }\n}\n","import $FormCreate from '../components/formCreate';\nimport Vue from 'vue';\nimport makerFactory from '../factory/maker';\nimport Handle from '../handler';\nimport fetch from './fetch';\nimport {creatorFactory} from '..';\nimport BaseParser from '../factory/parser';\nimport {copyRule, copyRules, mergeGlobal, parseJson, toJson, parseFn} from './util';\nimport fragment from '../components/fragment';\nimport is from '@form-create/utils/lib/type';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {CreateNodeFactory} from '../factory/node';\nimport {createManager} from '../factory/manager';\nimport {arrayAttrs, keyAttrs, normalAttrs} from './attrs';\nimport {appendProto} from '../factory/creator';\nimport $provider from './provider';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport html from '../parser/html';\n\nexport let _vue = typeof window !== 'undefined' && window.Vue ? window.Vue : Vue;\n\nfunction _parseProp(name, id) {\n let prop;\n if (arguments.length === 2) {\n prop = arguments[1];\n id = prop[name];\n } else {\n prop = arguments[2];\n }\n return {id, prop};\n}\n\nfunction nameProp() {\n return _parseProp('name', ...arguments);\n}\n\nfunction _getEl(options) {\n if (!options || !options.el) return window.document.body;\n return is.Element(options.el)\n ? options.el\n : document.querySelector(options.el);\n}\n\nfunction mountForm(rules, option) {\n const $vm = new _vue({\n data() {\n //todo 外部无法修改\n return {rule: rules, option: option || {}};\n },\n render(h) {\n return h('FormCreate', {ref: 'fc', props: this.$data});\n }\n });\n $vm.$mount();\n return $vm;\n}\n\nfunction exportAttrs(attrs) {\n const key = attrs.key || [];\n const array = attrs.array || [];\n const normal = attrs.normal || [];\n keyAttrs.push(...key);\n arrayAttrs.push(...array);\n normalAttrs.push(...normal);\n\n appendProto([...key, ...array, ...normal]);\n}\n\nlet id = 1;\nconst instance = {};\n\n//todo 表单嵌套\nexport default function FormCreateFactory(config) {\n\n const components = {\n [fragment.name]: fragment\n };\n const parsers = {};\n const directives = {};\n const providers = {\n ...$provider\n };\n const maker = makerFactory();\n let globalConfig = {global: {}};\n const data = {};\n const CreateNode = CreateNodeFactory();\n\n exportAttrs(config.attrs || {});\n\n function getApi(name) {\n const val = instance[name];\n if (Array.isArray(val))\n return [...val];\n return val;\n }\n\n function directive() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) directives[data.id] = data.prop;\n }\n\n function register() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) providers[data.id] = {...data.prop, name: data.id};\n }\n\n function componentAlias(alias) {\n CreateNode.use(alias);\n }\n\n function parser() {\n const data = nameProp(...arguments);\n if (!data.id || !data.prop) return;\n const name = toCase(data.id);\n const parser = data.prop;\n const base = parser.merge === true ? parsers[name] : undefined;\n parsers[name] = {...(base || BaseParser), ...parser};\n maker[name] = creatorFactory(name);\n parser.maker && extend(maker, parser.maker);\n }\n\n function component(id, component) {\n let name;\n if (is.String(id)) {\n name = toCase(id);\n if (['form-create', 'formcreate'].indexOf(name) > -1) {\n return $form();\n } else if (component === undefined) {\n return components[name];\n }\n } else {\n name = toCase(id.name);\n component = id;\n }\n if (!name || !component) return;\n components[name] = component;\n if (component.formCreateParser) parser(name, component.formCreateParser);\n }\n\n function $form() {\n return _vue.extend($FormCreate(FormCreate));\n }\n\n function $vnode() {\n return _vue.extend(fragment);\n }\n\n //todo 检查回调函数作用域\n function use(fn, opt) {\n if (is.Function(fn.install)) fn.install(create, opt);\n else if (is.Function(fn)) fn(create, opt);\n return this;\n }\n\n function create(rules, _opt, parent) {\n let $vm = mountForm(rules, _opt || {});\n const _this = $vm.$refs.fc.formCreate;\n _this.$parent = parent;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n }\n\n function factory(inherit) {\n let _config = {...config};\n if (inherit) {\n _config.inherit = {\n components,\n parsers,\n directives,\n providers,\n maker,\n data\n }\n } else {\n delete _config.inherit;\n }\n return FormCreateFactory(_config);\n }\n\n function FormCreate(vm, rules, options) {\n extend(this, {\n id: id++,\n vm,\n create,\n manager: createManager(config.manager),\n parsers,\n providers,\n rules: Array.isArray(rules) ? rules : [],\n name: vm.$options.propsData.name,\n inFor: vm.$options.propsData.inFor,\n prop: {\n components,\n directives,\n },\n CreateNode,\n bus: new _vue,\n unwatch: null,\n options: options || {},\n extendApi: config.extendApi || (api => api)\n })\n this.init();\n this.initOptions(this.options);\n if (this.name) {\n if (this.inFor) {\n if (!instance[this.name]) instance[this.name] = [];\n instance[this.name].push(this.api());\n } else {\n instance[this.name] = this.api();\n }\n }\n }\n\n extend(FormCreate.prototype, {\n init() {\n const vm = this.vm;\n const h = new Handle(this);\n this.$handle = h;\n vm.$f = h.api;\n vm.$emit('input', h.api);\n\n vm.$on('hook:created', () => {\n if (this.isSub()) {\n this.unwatch = vm.$watch(() => vm.$pfc.option, () => {\n this.initOptions(this.options);\n vm.$f.refresh();\n }, {deep: true});\n this.initOptions(this.options);\n }\n this.created();\n })\n vm.$on('hook:mounted', () => {\n this.mounted();\n });\n vm.$on('hook:beforeDestroy', () => {\n vm.destroyed = true;\n this.unwatch && this.unwatch();\n h.reloadRule([]);\n if (this.name) {\n if (this.inFor) {\n const idx = instance[this.name].indexOf(this.api());\n instance[this.name].splice(idx, 1);\n } else {\n delete instance[this.name];\n }\n }\n });\n vm.$on('hook:updated', () => {\n h.bindNextTick(() => this.bus.$emit('next-tick', h.api));\n });\n },\n isSub() {\n return this.vm.$pfc && this.vm.extendOption;\n },\n initOptions(options) {\n this.options = {formData: {}, submitBtn: {}, resetBtn: {}, ...deepCopy(globalConfig)};\n if (this.isSub()) {\n this.mergeOptions(this.options, this.vm.$pfc.$f.config || {}, true);\n }\n this.updateOptions(options);\n },\n mergeOptions(target, opt, parent) {\n opt = deepCopy(opt);\n parent && ['page', 'onSubmit', 'mounted', 'reload', 'formData', 'el'].forEach((n) => {\n delete opt[n];\n });\n if (opt.global) {\n target.global = mergeGlobal(target.global, opt.global);\n delete opt.global;\n }\n this.$handle.$manager.mergeOptions([opt], target);\n return target;\n },\n updateOptions(options) {\n this.mergeOptions(this.options, options);\n this.$handle.$manager.updateOptions(this.options);\n },\n created() {\n this.$handle.init();\n this.vm.$emit('created', this.api());\n },\n api() {\n return this.$handle.api;\n },\n render() {\n return this.$handle.render();\n },\n mounted() {\n this.$handle.mounted();\n },\n })\n\n\n function useAttr(formCreate) {\n extend(formCreate, {\n version: config.version,\n ui: config.ui,\n data,\n maker,\n component,\n directive,\n register,\n $vnode,\n parser,\n use,\n factory,\n componentAlias,\n copyRule,\n copyRules,\n fetch,\n $form,\n parseFn,\n parseJson,\n toJson,\n getApi,\n init(rules, _opt = {}) {\n let $vm = mountForm(rules, _opt), _this = $vm.$refs.fc.formCreate;\n return {\n mount($el) {\n if ($el && is.Element($el))\n _this.options.el = $el;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n },\n remove() {\n $vm.$el.parentNode && $vm.$el.parentNode.removeChild($vm.$el);\n },\n destroy() {\n this.remove();\n $vm.$destroy();\n },\n $f: _this.api()\n };\n }\n });\n }\n\n function useStatic(formCreate) {\n extend(formCreate, {\n create,\n install(Vue, options) {\n globalConfig = {...globalConfig, ...(options || {})}\n if (Vue._installedFormCreate === true) return;\n Vue._installedFormCreate = true;\n _vue = Vue;\n\n const $formCreate = function (rules, opt = {}) {\n return create(rules, opt, this);\n };\n\n useAttr($formCreate);\n\n Vue.prototype.$formCreate = $formCreate;\n Vue.component('FormCreate', $form());\n Vue.component('FcFragment', $vnode());\n }\n })\n }\n\n useAttr(create);\n useStatic(create);\n\n CreateNode.use({fragment: 'fcFragment'});\n\n parser(html);\n\n if (config.install) create.use(config);\n\n if (config.inherit) {\n const inherit = config.inherit;\n inherit.components && extend(components, inherit.components);\n inherit.parsers && extend(parsers, inherit.parsers);\n inherit.directives && extend(directives, inherit.directives);\n inherit.providers && extend(providers, inherit.providers);\n inherit.maker && extend(maker, inherit.maker);\n inherit.data && extend(data, inherit.data);\n }\n\n return create;\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst DEFAULT_FORMATS = {\n date: 'yyyy-MM-dd',\n month: 'yyyy-MM',\n datetime: 'yyyy-MM-dd HH:mm:ss',\n timerange: 'HH:mm:ss',\n daterange: 'yyyy-MM-dd',\n monthrange: 'yyyy-MM',\n datetimerange: 'yyyy-MM-dd HH:mm:ss',\n year: 'yyyy'\n};\n\nconst name = 'datePicker';\n\nexport default {\n name,\n maker: (function () {\n return ['year', 'month', 'date', 'dates', 'week', 'datetime', 'datetimeRange', 'dateRange', 'monthRange'].reduce((initial, type) => {\n initial[type] = creatorFactory(name, {type: type.toLowerCase()});\n return initial\n }, {});\n }()),\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!props.valueFormat) {\n props.valueFormat = DEFAULT_FORMATS[props.type] || DEFAULT_FORMATS['date'];\n }\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'hidden';\nexport default {\n name,\n maker: {\n [name]: (field, value) => creatorFactory(name)('', field, value)\n },\n render() {\n return [];\n }\n}\n","import datePicker from './datePicker';\nimport hidden from './hidden';\nimport input from './input';\nimport slider from './slider';\nimport timePicker from './timePicker';\nimport row from './row';\nimport select from './select';\n\nexport default [\n datePicker,\n hidden,\n input,\n slider,\n timePicker,\n row,\n select\n]\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'input';\nexport default {\n name,\n maker: (function () {\n const maker = ['password', 'url', 'email', 'text', 'textarea'].reduce((maker, type) => {\n maker[type] = creatorFactory(name, {type});\n return maker;\n }, {});\n\n maker.idate = creatorFactory(name, {type:'date'});\n return maker;\n }()),\n mergeProp(ctx) {\n let {props} = ctx.prop;\n if (props && props.autosize && props.autosize.minRows) {\n props.rows = props.autosize.minRows || 2;\n }\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'slider';\n\nexport default {\n name,\n maker: {\n sliderRange: creatorFactory(name, {range:true})\n },\n toFormValue(value, ctx) {\n let isArr = Array.isArray(value), props = ctx.prop.props, min = props.min || 0,\n parseValue;\n if (props.range === true) {\n parseValue = isArr ? value : [min, (parseFloat(value) || min)];\n } else {\n parseValue = isArr ? (parseFloat(value[0]) || min) : parseFloat(value);\n }\n return parseValue;\n }\n\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'timePicker';\n\nexport default {\n name,\n maker: {\n time: creatorFactory(name, (m) => m.props.isRange = false),\n timeRange: creatorFactory(name, (m) => m.props.isRange = true)\n },\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!props.valueFormat) {\n props.valueFormat = 'HH:mm:ss';\n }\n }\n}\n","export default {\n name: 'FcRow',\n render(_, ctx) {\n return ctx.vNode.col({props: {span: 24}}, [\n ctx.vNode.row(ctx.prop, _)\n ])\n }\n}","import toArray from '@form-create/utils/lib/toarray';\n\nconst name = 'select';\n\nexport default {\n name,\n toFormValue(value, ctx) {\n if (ctx.prop.props.multiple && !Array.isArray(value)) {\n return toArray(value)\n } else {\n return value;\n }\n }\n\n}\n","const PRE = 'el';\nexport default {\n button: PRE + 'Button',\n icon: 'i',\n slider: PRE + 'Slider',\n rate: PRE + 'Rate',\n upload: 'fcUpload',\n cascader: PRE + 'Cascader',\n popover: PRE + 'Popover',\n tooltip: PRE + 'Tooltip',\n colorPicker: PRE + 'ColorPicker',\n timePicker: PRE + 'TimePicker',\n timeSelect: PRE + 'TimeSelect',\n datePicker: PRE + 'DatePicker',\n 'switch': PRE + 'Switch',\n select: 'fcSelect',\n checkbox: 'fcCheckbox',\n radio: 'fcRadio',\n inputNumber: PRE + 'InputNumber',\n number: PRE + 'InputNumber',\n input: PRE + 'Input',\n formItem: PRE + 'FormItem',\n form: PRE + 'Form',\n frame: 'fcFrame',\n col: PRE + 'Col',\n row: PRE + 'Row',\n tree: 'fcTree',\n autoComplete: PRE + 'Autocomplete',\n auto: PRE + 'Autocomplete',\n group: 'fcGroup',\n object: 'fcSubForm',\n subForm: 'fcSubForm',\n}\n","import getConfig from './config';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\n\nfunction isTooltip(info) {\n return info.type === 'tooltip';\n}\n\nconst upperCaseReg = /[A-Z]/;\n\nexport function isAttr(name, value) {\n return (!upperCaseReg.test(name) && (is.String(value) || is.Number(value)))\n}\n\nfunction tidy(props, name) {\n if (!hasProperty(props, name)) return;\n if (is.String(props[name])) {\n props[name] = {[name]: props[name], show: true};\n }\n}\n\nfunction isFalse(val) {\n return val === false;\n}\n\nfunction tidyBool(opt, name) {\n if (hasProperty(opt, name) && !is.Object(opt[name])) {\n opt[name] = {show: !!opt[name]};\n }\n}\n\nexport default {\n validate() {\n const form = this.form();\n if (form) {\n return form.validate();\n }\n return new Promise(v => v());\n },\n validateField(field) {\n const form = this.form();\n if (form) {\n return new Promise((resolve, reject) => {\n form.validateField(field, e => {\n e ? reject(e) : resolve(null);\n });\n })\n }\n return new Promise(v => v());\n },\n clearValidateState(ctx) {\n const fItem = this.vm.$refs[ctx.wrapRef];\n if (fItem) {\n fItem.validateMessage = '';\n fItem.validateState = '';\n }\n },\n tidyOptions(options) {\n ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col'].forEach(name => {\n tidyBool(options, name);\n })\n return options;\n },\n tidyRule({prop}) {\n tidy(prop, 'title');\n tidy(prop, 'info');\n return prop;\n },\n mergeProp(ctx) {\n let props = ctx.prop.props;\n ctx.prop = mergeProps([{\n attrs: Object.keys(props).reduce((initial, val) => {\n if (isAttr(val, props[val]))\n initial[val] = props[val];\n return initial;\n }, {}),\n info: this.options.info || {},\n wrap: this.options.wrap || {},\n col: this.options.col || {},\n }, ctx.prop], {\n info: {\n trigger: 'hover',\n placement: 'top-start',\n icon: 'el-icon-warning',\n },\n title: {},\n col: {span: 24},\n wrap: {},\n }, {normal: ['title', 'info', 'col', 'wrap']});\n },\n getDefaultOptions() {\n return getConfig();\n },\n update() {\n const form = this.options.form;\n this.rule = {\n props: {...form},\n nativeOn: {\n submit: (e) => {\n e.preventDefault();\n }\n },\n class: [form.className, form.class, 'form-create'],\n style: form.style,\n type: 'form',\n };\n },\n beforeRender() {\n const {key, ref, $handle} = this;\n extend(this.rule, {key, ref});\n extend(this.rule.props, {\n model: $handle.formData,\n rules: $handle.validate(),\n });\n },\n render(children) {\n if (children.length) {\n children.push(this.makeFormBtn());\n }\n return this.$r(this.rule, isFalse(this.options.row.show) ? children : [this.makeRow(children)]);\n },\n makeWrap(ctx, children) {\n const rule = ctx.prop;\n const uni = `${this.key}${ctx.key}`;\n const col = rule.col;\n const isTitle = this.isTitle(rule);\n const labelWidth = (!col.labelWidth && !isTitle) ? 0 : col.labelWidth;\n const {inline, col: _col} = this.rule.props;\n const item = isFalse(rule.wrap.show) ? children : this.$r(mergeProps([rule.wrap, {\n props: {\n labelWidth: labelWidth === void 0 ? labelWidth : toString(labelWidth),\n label: isTitle ? rule.title.title : undefined,\n ...(rule.wrap || {}),\n prop: ctx.id,\n rules: rule.validate,\n },\n class: rule.className,\n key: `${uni}fi`,\n ref: ctx.wrapRef,\n type: 'formItem',\n }]), [children, isTitle ? this.makeInfo(rule, uni) : null]);\n return (inline === true || isFalse(_col) || isFalse(col.show)) ? item : this.makeCol(rule, uni, [item]);\n },\n isTitle(rule) {\n if (this.options.form.title === false) return false;\n const title = rule.title;\n return !((!title.title && !title.native) || isFalse(title.show))\n },\n makeInfo(rule, uni) {\n const titleProp = rule.title;\n const infoProp = rule.info;\n const isTip = isTooltip(infoProp);\n const form = this.options.form;\n const children = [(titleProp.title || '') + (form.labelSuffix || form['label-suffix'] || '')];\n\n if (!isFalse(infoProp.show) && (infoProp.info || infoProp.native) && !isFalse(infoProp.icon)) {\n const prop = {\n type: infoProp.type || 'popover',\n props: {...infoProp},\n key: `${uni}pop`,\n slot: 'label'\n };\n const field = 'content';\n if (infoProp.info && !hasProperty(prop.props, field)) {\n prop.props[field] = infoProp.info;\n }\n children[infoProp.align !== 'left' ? 'unshift' : 'push'](this.$r(mergeProps([infoProp, prop]), [\n this.$r({\n type: 'i',\n slot: isTip ? 'default' : 'reference',\n class: infoProp.icon === true ? 'el-icon-warning' : infoProp.icon,\n key: `${uni}i`\n })\n ]));\n }\n return this.$r(mergeProps([titleProp, {\n props: titleProp,\n slot: titleProp.slot || 'label',\n key: `${uni}tit`,\n type: titleProp.type || 'span',\n }]), children);\n },\n makeCol(rule, uni, children) {\n const col = rule.col;\n return this.$r({\n class: col.class,\n type: 'col',\n props: col || {span: 24},\n key: `${uni}col`\n }, children);\n },\n makeRow(children) {\n const row = this.options.row || {};\n return this.$r({\n type: 'row',\n props: row,\n class: row.class,\n key: `${this.key}row`\n }, children)\n },\n makeFormBtn() {\n let vn = [];\n if (!isFalse(this.options.submitBtn.show)) {\n vn.push(this.makeSubmitBtn())\n }\n if (!isFalse(this.options.resetBtn.show)) {\n vn.push(this.makeResetBtn())\n }\n if (!vn.length) {\n return;\n }\n const item = this.$r({\n type: 'formItem',\n key: `${this.key}fb`\n }, vn);\n\n return this.rule.props.inline === true\n ? item\n : this.$r({\n type: 'col',\n props: {span: 24},\n key: `${this.key}fc`\n }, [item]);\n },\n makeResetBtn() {\n const resetBtn = this.options.resetBtn;\n return this.$r({\n type: 'button',\n props: resetBtn,\n style: {width: resetBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n resetBtn.click\n ? resetBtn.click(fApi)\n : fApi.resetFields();\n }\n },\n key: `${this.key}b2`,\n }, [resetBtn.innerText]);\n },\n makeSubmitBtn() {\n const submitBtn = this.options.submitBtn;\n\n return this.$r({\n type: 'button',\n props: submitBtn,\n style: {width: submitBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n submitBtn.click\n ? submitBtn.click(fApi)\n : fApi.submit();\n }\n },\n key: `${this.key}b1`,\n }, [submitBtn.innerText]);\n }\n}\n","export default function getConfig() {\n return {\n form: {\n inline: false,\n labelPosition: 'right',\n labelWidth: '125px',\n disabled: false,\n size: undefined,\n },\n row: {\n show: true,\n gutter: 0,\n },\n submitBtn: {\n type: 'primary',\n loading: false,\n disabled: false,\n innerText: '提交',\n show: true,\n col: undefined,\n click: undefined,\n },\n resetBtn: {\n type: 'default',\n loading: false,\n disabled: false,\n icon: 'el-icon-refresh',\n innerText: '重置',\n show: false,\n col: undefined,\n click: undefined,\n },\n };\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst maker = {};\n\nuseAlias(maker);\nuseSelect(maker);\nuseTree(maker);\nuseUpload(maker);\nuseFrame(maker);\n\nfunction useAlias(maker) {\n ['group', 'tree', 'switch', 'upload', 'autoComplete', 'checkbox', 'cascader', 'colorPicker', 'datePicker', 'frame', 'inputNumber', 'radio', 'rate'].forEach(name => {\n maker[name] = creatorFactory(name);\n });\n maker.auto = maker.autoComplete;\n maker.number = maker.inputNumber;\n maker.color = maker.colorPicker;\n}\n\nfunction useSelect(maker) {\n const select = 'select';\n const multiple = 'multiple';\n maker['selectMultiple'] = creatorFactory(select, {[multiple]:true});\n maker['selectOne'] = creatorFactory(select, {[multiple]:false});\n}\n\nfunction useTree(maker) {\n const name = 'tree';\n const types = {'treeSelected': 'selected', 'treeChecked': 'checked'};\n\n Object.keys(types).reduce((m, key) => {\n m[key] = creatorFactory(name, {type:types[key]});\n return m;\n }, maker);\n}\n\nfunction useUpload(maker) {\n const name = 'upload';\n const types = {\n image: ['image', 0],\n file: ['file', 0],\n uploadFileOne: ['file', 1],\n uploadImageOne: ['image', 1],\n };\n\n Object.keys(types).reduce((m, key) => {\n m[key] = creatorFactory(name, m => m.props({uploadType: types[key][0], maxLength: types[key][1]}));\n return m\n }, maker);\n\n maker.uploadImage = maker.image;\n maker.uploadFile = maker.file;\n}\n\nfunction useFrame(maker) {\n const types = {\n frameInputs: ['input', 0],\n frameFiles: ['file', 0],\n frameImages: ['image', 0],\n frameInputOne: ['input', 1],\n frameFileOne: ['file', 1],\n frameImageOne: ['image', 1]\n };\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory('frame', m => m.props({type: types[key][0], maxLength: types[key][1]}));\n return maker\n }, maker);\n\n maker.frameInput = maker.frameInputs;\n maker.frameFile = maker.frameFiles;\n maker.frameImage = maker.frameImages;\n return maker;\n}\n\nexport default maker;\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '@form-create/core/src/frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction tidyBtnProp(btn, def) {\n if (is.Boolean(btn))\n btn = {show: btn};\n else if (!is.Undef(btn) && !is.Object(btn)) btn = {show: def};\n return btn;\n}\n\nexport default function extendApi(api, h) {\n extend(api, {\n validate(callback) {\n return new Promise((resolve, reject) => {\n const forms = api.children;\n const all = [h.$manager.validate()];\n forms.forEach(v => {\n all.push(v.validate());\n })\n Promise.all(all).then(() => {\n resolve(true);\n callback && callback(true);\n }).catch((e) => {\n reject(e);\n callback && callback(false, e);\n h.vm.$emit('validate-fail', e, {api});\n })\n });\n },\n validateField: (field, callback) => {\n return new Promise((resolve, reject) => {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n const sub = h.subForm[ctx.id];\n const all = [h.$manager.validateField(ctx.id)];\n toArray(sub).forEach(v => {\n all.push(v.validate().catch(() => {\n return Promise.reject('子表单验证未通过');\n }));\n })\n Promise.all(all).then(() => {\n resolve(null);\n callback && callback(null);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.$emit('validate-field-fail', e, {field, api});\n })\n });\n },\n clearValidateState(fields, clearSub = true) {\n api.helper.tidyFields(fields).forEach(field => {\n if (clearSub) this.clearSubValidateState(field);\n h.getCtxs(field).forEach(ctx => {\n h.$manager.clearValidateState(ctx);\n });\n });\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n const subForm = h.subForm[ctx.id];\n if (!subForm) return;\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.clearValidateState();\n })\n } else if (subForm) {\n subForm.clearValidateState();\n }\n });\n })\n },\n btn: {\n loading: (loading = true) => {\n api.submitBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.submitBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.submitBtnProps({show: !!isShow});\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n api.resetBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.resetBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.resetBtnProps({show: !!isShow});\n }\n },\n submitBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.submitBtn, true);\n extend(btn, props);\n h.options.submitBtn = btn;\n api.refreshOptions();\n },\n resetBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.resetBtn, false);\n extend(btn, props);\n h.options.resetBtn = btn;\n api.refreshOptions();\n },\n submit(successFn, failFn) {\n api.validate((valid) => {\n if (valid) {\n let formData = api.formData();\n if (is.Function(successFn))\n invoke(() => successFn(formData, this));\n else {\n is.Function(h.options.onSubmit) && invoke(() => h.options.onSubmit(formData, this));\n h.vm.$emit('submit', formData, this);\n }\n } else {\n is.Function(failFn) && invoke(() => failFn(this, ...arguments));\n }\n });\n },\n });\n\n return api;\n}\n","import components from '../components';\nimport parsers from '../parsers';\nimport alias from './alias';\nimport manager from './manager';\nimport FormCreateFactory from '@form-create/core/src/index';\nimport makers from './maker';\nimport '../style/index.css';\nimport extendApi from './api';\n\nfunction install(FormCreate) {\n FormCreate.componentAlias(alias);\n\n components.forEach(component => {\n FormCreate.component(component.name, component);\n });\n\n parsers.forEach((parser) => {\n FormCreate.parser(parser);\n });\n\n Object.keys(makers).forEach(name => {\n FormCreate.maker[name] = makers[name];\n });\n}\n\nexport default function elmFormCreate() {\n return FormCreateFactory({\n ui: `${process.env.UI}`,\n version: `${process.env.VERSION}`,\n manager,\n extendApi,\n install,\n attrs: {\n normal: ['col', 'wrap'],\n array: ['className'],\n key: ['title', 'info'],\n }\n });\n}\n","import elmFormCreate from './core/index';\n\nconst FormCreate = elmFormCreate();\n\nif (typeof window !== 'undefined') {\n window.formCreate = FormCreate;\n if (window.Vue) {\n FormCreate.install(window.Vue);\n }\n}\n\nconst maker = FormCreate.maker;\n\nexport {maker}\n\nexport default FormCreate;\n"],"names":["_extends","Object","assign","a","b","c","arguments","length","d","prototype","hasOwnProperty","call","apply","this","normalMerge","toArrayMerge","functionalMerge","mergeFn","reduce","indexOf","Array","e","concat","f","g","h","i","getSlot","slots","exclude","keys","lst","name","push","props","formCreateInject","type","required","value","String","watch","handler","update","deep","data","trueValue","methods","options","opt","isArray","onInput","n","$emit","filter","label","map","v","undefined","checked","option","created","render","prop","index","Type","_this","$slots","toArray","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","field","helper","Boolean","disabled","src","icon","width","height","maxLength","Number","okBtnText","closeBtnText","modalTitle","handleIcon","title","allowRemove","onOpen","Function","onOk","onCancel","onLoad","onBeforeRemove","onRemove","onHandle","previewImage","getSrc","previewVisible","modal","srcKey","previewMask","footer","reload","closeBtn","okBtn","fileList","frameVisible","val","modalVm","key","unique","closeModel","close","$off","handleCancel","showModel","makeInput","toString","readonly","makeGroup","children","makeBtn","makeItem","valid","Error","makeIcons","icons","makeHandleIcon","makeRemoveIcon","_this2","handleClick","_this3","handleRemove","makeFiles","_this4","makeImages","_this5","_this6","splice","frameLoad","iframe","api","_this7","set","get","fn","$on","onClose","console","log","makeFooter","$props","_this8","node","$nextTick","_this9","$refs","frame","contentWindow","appendToBody","visible","mounted","closeModal","initial","is","arg","Undef","Element","_typeof","nodeType","trueArray","getType","str","exec","empty","hasProperty","rule","k","forEach","t","functional","ctx","slot","slotName","formCreateParser","mergeProp","nodeKey","setValue","onChange","updateValue","tree","toLocaleLowerCase","getCurrentKey","getCheckedKeys","setCurrentKey","setCheckedKeys","parseFile","file","url","getFileName","uid","split","pop","uploadType","limit","uploadList","cacheFiles","showFileList","upload","uploadFiles","every","status","o","isDisabled","makeProgress","percentage","$scopedSlots","vm","makeUpload","isShow","display","files","$watch","$set","target","Vue","$del","deepExtend","origin","mode","isArr","clone","nst","_clone","getRule","__json","__origin","__ctrl","deepCopy","extend","checkbox","radio","select","rules","expand","button","max","min","defaultValue","syncDisabled","fontSize","onBeforeAdd","len","cacheRule","cacheValue","computed","formRule","item","$f","formData","deferSyncValue","once","expandRule","total","addRule","removeRule","_value","cache","JSON","stringify","input","form","coverValue","emit","copyRules","submitBtn","resetBtn","defVal","add$f","$delete","add","del","addIcon","delIcon","makeIcon","emitEvent","args","$form","extendOption","inFor","span","pull","NAME","getRuleInject","parent","$parent","$FormCreate","FormCreate","componentName","model","provide","$pfc","inject","subForm","destroyed","validate","renderRule","ctxInject","isMore","formCreate","_refresh","_renderRule","_updateValue","config","forceCoverValue","initOptions","refresh","$handle","reloadRule","beforeCreate","$options","propsData","fapi","rmSubForm","sub","getSubForm","idx","addSubForm","immediate","mergeProps","objects","_normalMerge","_toArrayMerge","_functionalMerge","propsMerge","arrA","arrB","event","hook","fn1","fn2","keyAttrs","arrayAttrs","normalAttrs","format","msg","err","error","PREFIX","SUFFIX","$T","$TX","FUNCTION","toJson","obj","space","_isVue","__emit","makeFn","parseFn","trim","flag","replace","__inject","parseJson","json","parse","enumerable","writable","configurable","copyRule","mergeRule","merge","array","normal","r","funcProxy","that","proxy","defineProperties","byCtx","__fc__","__origin__","invoke","def","logError","creatorFactory","init","maker","Creator","_data","on","effect","hidden","appendProto","attrs","setProp","constructor","commonMaker","create","make","createTmp","template","makerFactory","factory","copy","toCase","lower","toLocaleUpperCase","toLowerCase","toLine","line","substr","id","uniqueId","Math","random","Date","now","deepSet","to","Render","handle","fc","$manager","vNode","CreateNode","sort","initCache","initRender","clearCacheAll","clearCache","use","setCache","vnode","getCache","useCache","tempList","clearOrgChildren","initOrgChildren","ctxs","orgChildren","parser","loadChildren","getTypeSlot","_fn","vn","$h","$createElement","beforeRender","renderList","renderSlot","renderName","renderId","renderField","container","renderCtx","makeVm","getInjectData","mergeGlobal","global","cacheConfig","originType","trueType","setOptions","optionsTo","setTempProps","injectProp","injectKeys","renderTemp","compile","warn","tip","el","parseSide","side","renderSides","temp","prefix","suffix","cacheFlag","_type","none","renderChildren","initProp","tidyRule","ctxProp","preview","makeWrap","custom","onMounted","getFormData","callback","expression","$el","__rule__","isRm","child","rmCtx","defaultRender","component","makeComponent","alias","aliasMap","_this10","useRender","EVENT","RuleContext","wrapRef","linkOn","root","ctrlRule","payload","updateType","updateKey","effectData","clearEffectData","setParser","check","unwatch","un","unlink","link","appendLink","watchTo","watchCtx","rmCtrl","deleted","$render","$api","ctrl","rm","_rm","noWatch","updated","condition","findCtrl","isCtrl","strFn","toEmpty","BaseParser","toFormValue","toValue","formValue","noneKey","Handler","watching","loading","reloading","noWatchFn","deferSyncFn","isMounted","appendData","providers","cycleLoad","loadedId","nextTick","changeStatus","pageEnd","nextReload","lifecycle","bus","initData","manager","extendApi","tidyFields","fields","getCtxs","allSubForm","subs","getFieldCtx","appendValue","getValue","fieldCtx","removeField","getCtx","destroy","parentNode","removeChild","$destroy","append","after","prepend","state","hiddenStatus","displayStatus","all","nameCtx","bind","updateOptions","onSubmit","sync","refreshOptions","hideForm","hide","clearChangeStatus","updateRule","updateRules","mergeRules","setEffect","attr","updateValidate","updateValidates","validates","refreshValidate","resetFields","method","trigger","$once","nextRefresh","changeValue","changeField","Api","getBody","xhr","text","responseText","response","fetch","XMLHttpRequest","action","onerror","onError","onload","getError","onSuccess","open","dataType","FormData","setRequestHeader","withCredentials","headers","send","useProvider","usePage","loadRule","__init","parseInjectEvent","injectEvent","parseEventLst","parseEvent","parseEmit","emitPrefix","emitKey","eventName","eventInject","fieldKey","_inject","self","unshift","useInject","page","first","ceil","parseInt","pageLoad","pageFn","clearNextTick","clearTimeout","bindNextTick","setTimeout","parseRule","_rule","fullRule","loadFn","loadCtrl","control","syncProp","pre","_loadRule","syncForm","isRepeat","ruleEffect","repeat","isCopy","isInit","bindParser","setCtx","_preIndex","preIndex","refreshUpdate","defineProperty","valueHandle","refreshControl","useCtrl","controls","getCtrl","handleFn","isHidden","hideLst","reverse","clearValidateState","ruleCon","ctrlCtx","_reloadRule","useLoader","setFlag","setFormData","syncValue","valueChange","isQuote","isChange","refreshRule","useInput","getNameCtx","setIdCtx","rmIdCtx","getParser","list","parsers","rmSub","watchEffect","useContext","_mounted","useLifecycle","ps","_c","components","arr","onEffect","provider","used","_used","_ctx$rule","_ctx$rule$effect","emitEffect","getEffect","p","getProp","clearProp","useEffect","CreateNodeFactory","setVm","tag","isReservedTag","nativeOn","Node","domProps","innerHTML","context","nodes","createManager","proto","CustomManager","Manager","mergeOptionsRule","$r","mergeOptions","tidyOptions","getDefaultOptions","componentValidate","load","validator","$required","message","parseVal","_","run","parseOpt","body","loaded","join","_vue","window","nameProp","_getEl","querySelector","mountForm","$vm","$data","$mount","instance","FormCreateFactory","fragment","directives","$provider","globalConfig","getApi","directive","register","componentAlias","base","$vnode","install","_opt","inherit","_config","useAttr","version","ui","mount","remove","Handle","isSub","_installedFormCreate","$formCreate","html","DEFAULT_FORMATS","date","month","datetime","timerange","daterange","monthrange","datetimerange","year","valueFormat","datePicker","idate","autosize","minRows","rows","sliderRange","range","parseFloat","time","m","isRange","timeRange","col","row","multiple","PRE","slider","rate","cascader","popover","tooltip","colorPicker","timePicker","timeSelect","inputNumber","number","formItem","autoComplete","auto","group","object","upperCaseReg","tidy","isFalse","Promise","validateField","resolve","reject","fItem","validateMessage","validateState","show","tidyBool","test","info","wrap","placement","inline","labelPosition","labelWidth","size","gutter","innerText","click","submit","preventDefault","className","makeFormBtn","makeRow","uni","isTitle","_col","makeInfo","makeCol","titleProp","infoProp","isTip","labelSuffix","align","makeSubmitBtn","makeResetBtn","fApi","color","useAlias","useSelect","types","useTree","image","uploadFileOne","uploadImageOne","uploadImage","uploadFile","useUpload","frameInputs","frameFiles","frameImages","frameInputOne","frameFileOne","frameImageOne","frameInput","frameFile","frameImage","useFrame","tidyBtnProp","btn","forms","then","clearSub","clearSubValidateState","submitBtnProps","resetBtnProps","successFn","failFn","makers","process"],"mappings":"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"}