UNPKG

jobsys-newbie

Version:

Enhanced component based on ant-design-vue

8,020 lines 461 kB
import { a as __toESM, n as __export, r as __reExport, t as __commonJSMin } from "./chunk-CJnywcLQ.js";
import { A as useSm3, C as _configStatus, O as useDayjs, S as STATUS, T as usePage, _ as useFormFail, a as useFindLabelsFromPath, d as useLabelFromOptionsValue, f as useNumber, h as useI18n, i as useCache, l as useFindParentValues, m as i18n_default, n as useT, o as useFindLabelsInValues, t as useI18nJoin, v as useFormFormat, w as useFetch, x as useProcessStatusSuccess } from "./hooks-YdsXmMBa.js";
import * as Vue from "vue";
import { Transition, TransitionGroup, computed, createElementBlock, createTextVNode, createVNode, defineComponent, h, inject, isVNode, mergeProps, nextTick, onBeforeUnmount, onMounted, openBlock, provide, reactive, ref, resolveComponent, shallowRef, toRaw, toRef, watch, watchEffect, withModifiers } from "vue";
import { Affix, Alert, Button, Card, Cascader, CheckableTag, Checkbox, CheckboxGroup, Col, DatePicker, Divider, Drawer, Dropdown, Empty, Flex, Form, FormItem, FormItemRest, Image as Image$1, ImagePreviewGroup, Input, InputNumber, InputPassword, List, Menu, MenuItem, Modal, Popconfirm, Radio, RadioGroup, RangePicker, Rate, Row, Select, Skeleton, Space, Spin, Switch, Table, TableSummaryCell, TableSummaryRow, Tag, Textarea, TimePicker, TimeRangePicker, Tooltip, Transfer, TreeSelect, TypographyText, Upload, message } from "ant-design-vue";
import dayjs from "dayjs";
import { cloneDeep, concat, debounce, every, find, findIndex, isArray, isBoolean, isEqual, isFunction, isNull, isNumber, isObject, isString, isUndefined, map, orderBy, pick, random, remove, sum, uniq } from "lodash-es";
import { ArrowsAltOutlined, CalendarOutlined, CheckCircleOutlined, CheckSquareOutlined, ClearOutlined, ClockCircleOutlined, CloseCircleOutlined, CloseOutlined, CloudUploadOutlined, CompressOutlined, CopyOutlined, DeleteOutlined, DownOutlined, DownSquareOutlined, DragOutlined, EditOutlined, EnvironmentOutlined, ExpandOutlined, FallOutlined, FieldBinaryOutlined, FileImageOutlined, FilePdfOutlined, FormOutlined, InfoCircleOutlined, MailOutlined, MenuOutlined, MobileOutlined, NumberOutlined, OrderedListOutlined, PictureOutlined, PlusOutlined, RightOutlined, RiseOutlined, SaveOutlined, SearchOutlined, ShrinkOutlined, SmileFilled, SmileTwoTone, StarOutlined, SwitcherOutlined, SyncOutlined, UserOutlined } from "@ant-design/icons-vue";
var addressData_default = /* @__PURE__ */ JSON.parse("[{\"code\":\"440000\",\"name\":\"广东省\",\"children\":[{\"code\":\"440100\",\"name\":\"广州市\",\"children\":[{\"code\":\"440103\",\"name\":\"荔湾区\"},{\"code\":\"440104\",\"name\":\"越秀区\"},{\"code\":\"440105\",\"name\":\"海珠区\"},{\"code\":\"440106\",\"name\":\"天河区\"},{\"code\":\"440111\",\"name\":\"白云区\"},{\"code\":\"440112\",\"name\":\"黄埔区\"},{\"code\":\"440113\",\"name\":\"番禺区\"},{\"code\":\"440114\",\"name\":\"花都区\"},{\"code\":\"440115\",\"name\":\"南沙区\"},{\"code\":\"440117\",\"name\":\"从化区\"},{\"code\":\"440118\",\"name\":\"增城区\"}]},{\"code\":\"440200\",\"name\":\"韶关市\",\"children\":[{\"code\":\"440203\",\"name\":\"武江区\"},{\"code\":\"440204\",\"name\":\"浈江区\"},{\"code\":\"440205\",\"name\":\"曲江区\"},{\"code\":\"440222\",\"name\":\"始兴县\"},{\"code\":\"440224\",\"name\":\"仁化县\"},{\"code\":\"440229\",\"name\":\"翁源县\"},{\"code\":\"440232\",\"name\":\"乳源瑶族自治县\"},{\"code\":\"440233\",\"name\":\"新丰县\"},{\"code\":\"440281\",\"name\":\"乐昌市\"},{\"code\":\"440282\",\"name\":\"南雄市\"}]},{\"code\":\"440300\",\"name\":\"深圳市\",\"children\":[{\"code\":\"440303\",\"name\":\"罗湖区\"},{\"code\":\"440304\",\"name\":\"福田区\"},{\"code\":\"440305\",\"name\":\"南山区\"},{\"code\":\"440306\",\"name\":\"宝安区\"},{\"code\":\"440307\",\"name\":\"龙岗区\"},{\"code\":\"440308\",\"name\":\"盐田区\"},{\"code\":\"440309\",\"name\":\"龙华区\"},{\"code\":\"440310\",\"name\":\"坪山区\"},{\"code\":\"440311\",\"name\":\"光明区\"}]},{\"code\":\"440400\",\"name\":\"珠海市\",\"children\":[{\"code\":\"440402\",\"name\":\"香洲区\"},{\"code\":\"440403\",\"name\":\"斗门区\"},{\"code\":\"440404\",\"name\":\"金湾区\"}]},{\"code\":\"440500\",\"name\":\"汕头市\",\"children\":[{\"code\":\"440507\",\"name\":\"龙湖区\"},{\"code\":\"440511\",\"name\":\"金平区\"},{\"code\":\"440512\",\"name\":\"濠江区\"},{\"code\":\"440513\",\"name\":\"潮阳区\"},{\"code\":\"440514\",\"name\":\"潮南区\"},{\"code\":\"440515\",\"name\":\"澄海区\"},{\"code\":\"440523\",\"name\":\"南澳县\"}]},{\"code\":\"440600\",\"name\":\"佛山市\",\"children\":[{\"code\":\"440604\",\"name\":\"禅城区\"},{\"code\":\"440605\",\"name\":\"南海区\"},{\"code\":\"440606\",\"name\":\"顺德区\"},{\"code\":\"440607\",\"name\":\"三水区\"},{\"code\":\"440608\",\"name\":\"高明区\"}]},{\"code\":\"440700\",\"name\":\"江门市\",\"children\":[{\"code\":\"440703\",\"name\":\"蓬江区\"},{\"code\":\"440704\",\"name\":\"江海区\"},{\"code\":\"440705\",\"name\":\"新会区\"},{\"code\":\"440781\",\"name\":\"台山市\"},{\"code\":\"440783\",\"name\":\"开平市\"},{\"code\":\"440784\",\"name\":\"鹤山市\"},{\"code\":\"440785\",\"name\":\"恩平市\"}]},{\"code\":\"440800\",\"name\":\"湛江市\",\"children\":[{\"code\":\"440802\",\"name\":\"赤坎区\"},{\"code\":\"440803\",\"name\":\"霞山区\"},{\"code\":\"440804\",\"name\":\"坡头区\"},{\"code\":\"440811\",\"name\":\"麻章区\"},{\"code\":\"440823\",\"name\":\"遂溪县\"},{\"code\":\"440825\",\"name\":\"徐闻县\"},{\"code\":\"440881\",\"name\":\"廉江市\"},{\"code\":\"440882\",\"name\":\"雷州市\"},{\"code\":\"440883\",\"name\":\"吴川市\"}]},{\"code\":\"440900\",\"name\":\"茂名市\",\"children\":[{\"code\":\"440902\",\"name\":\"茂南区\"},{\"code\":\"440904\",\"name\":\"电白区\"},{\"code\":\"440981\",\"name\":\"高州市\"},{\"code\":\"440982\",\"name\":\"化州市\"},{\"code\":\"440983\",\"name\":\"信宜市\"}]},{\"code\":\"441200\",\"name\":\"肇庆市\",\"children\":[{\"code\":\"441202\",\"name\":\"端州区\"},{\"code\":\"441203\",\"name\":\"鼎湖区\"},{\"code\":\"441204\",\"name\":\"高要区\"},{\"code\":\"441223\",\"name\":\"广宁县\"},{\"code\":\"441224\",\"name\":\"怀集县\"},{\"code\":\"441225\",\"name\":\"封开县\"},{\"code\":\"441226\",\"name\":\"德庆县\"},{\"code\":\"441284\",\"name\":\"四会市\"}]},{\"code\":\"441300\",\"name\":\"惠州市\",\"children\":[{\"code\":\"441302\",\"name\":\"惠城区\"},{\"code\":\"441303\",\"name\":\"惠阳区\"},{\"code\":\"441322\",\"name\":\"博罗县\"},{\"code\":\"441323\",\"name\":\"惠东县\"},{\"code\":\"441324\",\"name\":\"龙门县\"}]},{\"code\":\"441400\",\"name\":\"梅州市\",\"children\":[{\"code\":\"441402\",\"name\":\"梅江区\"},{\"code\":\"441403\",\"name\":\"梅县区\"},{\"code\":\"441422\",\"name\":\"大埔县\"},{\"code\":\"441423\",\"name\":\"丰顺县\"},{\"code\":\"441424\",\"name\":\"五华县\"},{\"code\":\"441426\",\"name\":\"平远县\"},{\"code\":\"441427\",\"name\":\"蕉岭县\"},{\"code\":\"441481\",\"name\":\"兴宁市\"}]},{\"code\":\"441500\",\"name\":\"汕尾市\",\"children\":[{\"code\":\"441502\",\"name\":\"城区\"},{\"code\":\"441521\",\"name\":\"海丰县\"},{\"code\":\"441523\",\"name\":\"陆河县\"},{\"code\":\"441581\",\"name\":\"陆丰市\"}]},{\"code\":\"441600\",\"name\":\"河源市\",\"children\":[{\"code\":\"441602\",\"name\":\"源城区\"},{\"code\":\"441621\",\"name\":\"紫金县\"},{\"code\":\"441622\",\"name\":\"龙川县\"},{\"code\":\"441623\",\"name\":\"连平县\"},{\"code\":\"441624\",\"name\":\"和平县\"},{\"code\":\"441625\",\"name\":\"东源县\"}]},{\"code\":\"441700\",\"name\":\"阳江市\",\"children\":[{\"code\":\"441702\",\"name\":\"江城区\"},{\"code\":\"441704\",\"name\":\"阳东区\"},{\"code\":\"441721\",\"name\":\"阳西县\"},{\"code\":\"441781\",\"name\":\"阳春市\"}]},{\"code\":\"441800\",\"name\":\"清远市\",\"children\":[{\"code\":\"441802\",\"name\":\"清城区\"},{\"code\":\"441803\",\"name\":\"清新区\"},{\"code\":\"441821\",\"name\":\"佛冈县\"},{\"code\":\"441823\",\"name\":\"阳山县\"},{\"code\":\"441825\",\"name\":\"连山壮族瑶族自治县\"},{\"code\":\"441826\",\"name\":\"连南瑶族自治县\"},{\"code\":\"441881\",\"name\":\"英德市\"},{\"code\":\"441882\",\"name\":\"连州市\"}]},{\"code\":\"441900\",\"name\":\"东莞市\",\"children\":[{\"code\":\"441900003\",\"name\":\"东城街道\"},{\"code\":\"441900004\",\"name\":\"南城街道\"},{\"code\":\"441900005\",\"name\":\"万江街道\"},{\"code\":\"441900006\",\"name\":\"莞城街道\"},{\"code\":\"441900101\",\"name\":\"石碣镇\"},{\"code\":\"441900102\",\"name\":\"石龙镇\"},{\"code\":\"441900103\",\"name\":\"茶山镇\"},{\"code\":\"441900104\",\"name\":\"石排镇\"},{\"code\":\"441900105\",\"name\":\"企石镇\"},{\"code\":\"441900106\",\"name\":\"横沥镇\"},{\"code\":\"441900107\",\"name\":\"桥头镇\"},{\"code\":\"441900108\",\"name\":\"谢岗镇\"},{\"code\":\"441900109\",\"name\":\"东坑镇\"},{\"code\":\"441900110\",\"name\":\"常平镇\"},{\"code\":\"441900111\",\"name\":\"寮步镇\"},{\"code\":\"441900112\",\"name\":\"樟木头镇\"},{\"code\":\"441900113\",\"name\":\"大朗镇\"},{\"code\":\"441900114\",\"name\":\"黄江镇\"},{\"code\":\"441900115\",\"name\":\"清溪镇\"},{\"code\":\"441900116\",\"name\":\"塘厦镇\"},{\"code\":\"441900117\",\"name\":\"凤岗镇\"},{\"code\":\"441900118\",\"name\":\"大岭山镇\"},{\"code\":\"441900119\",\"name\":\"长安镇\"},{\"code\":\"441900121\",\"name\":\"虎门镇\"},{\"code\":\"441900122\",\"name\":\"厚街镇\"},{\"code\":\"441900123\",\"name\":\"沙田镇\"},{\"code\":\"441900124\",\"name\":\"道滘镇\"},{\"code\":\"441900125\",\"name\":\"洪梅镇\"},{\"code\":\"441900126\",\"name\":\"麻涌镇\"},{\"code\":\"441900127\",\"name\":\"望牛墩镇\"},{\"code\":\"441900128\",\"name\":\"中堂镇\"},{\"code\":\"441900129\",\"name\":\"高埗镇\"},{\"code\":\"441900401\",\"name\":\"松山湖\"},{\"code\":\"441900402\",\"name\":\"东莞港\"},{\"code\":\"441900403\",\"name\":\"东莞生态园\"},{\"code\":\"441900404\",\"name\":\"东莞滨海湾新区\"}]},{\"code\":\"442000\",\"name\":\"中山市\",\"children\":[{\"code\":\"442000001\",\"name\":\"石岐街道\"},{\"code\":\"442000002\",\"name\":\"东区街道\"},{\"code\":\"442000003\",\"name\":\"中山港街道\"},{\"code\":\"442000004\",\"name\":\"西区街道\"},{\"code\":\"442000005\",\"name\":\"南区街道\"},{\"code\":\"442000006\",\"name\":\"五桂山街道\"},{\"code\":\"442000007\",\"name\":\"民众街道\"},{\"code\":\"442000008\",\"name\":\"南朗街道\"},{\"code\":\"442000101\",\"name\":\"黄圃镇\"},{\"code\":\"442000103\",\"name\":\"东凤镇\"},{\"code\":\"442000105\",\"name\":\"古镇镇\"},{\"code\":\"442000106\",\"name\":\"沙溪镇\"},{\"code\":\"442000107\",\"name\":\"坦洲镇\"},{\"code\":\"442000108\",\"name\":\"港口镇\"},{\"code\":\"442000109\",\"name\":\"三角镇\"},{\"code\":\"442000110\",\"name\":\"横栏镇\"},{\"code\":\"442000111\",\"name\":\"南头镇\"},{\"code\":\"442000112\",\"name\":\"阜沙镇\"},{\"code\":\"442000114\",\"name\":\"三乡镇\"},{\"code\":\"442000115\",\"name\":\"板芙镇\"},{\"code\":\"442000116\",\"name\":\"大涌镇\"},{\"code\":\"442000117\",\"name\":\"神湾镇\"},{\"code\":\"442000118\",\"name\":\"小榄镇\"}]},{\"code\":\"445100\",\"name\":\"潮州市\",\"children\":[{\"code\":\"445102\",\"name\":\"湘桥区\"},{\"code\":\"445103\",\"name\":\"潮安区\"},{\"code\":\"445122\",\"name\":\"饶平县\"}]},{\"code\":\"445200\",\"name\":\"揭阳市\",\"children\":[{\"code\":\"445202\",\"name\":\"榕城区\"},{\"code\":\"445203\",\"name\":\"揭东区\"},{\"code\":\"445222\",\"name\":\"揭西县\"},{\"code\":\"445224\",\"name\":\"惠来县\"},{\"code\":\"445281\",\"name\":\"普宁市\"}]},{\"code\":\"445300\",\"name\":\"云浮市\",\"children\":[{\"code\":\"445302\",\"name\":\"云城区\"},{\"code\":\"445303\",\"name\":\"云安区\"},{\"code\":\"445321\",\"name\":\"新兴县\"},{\"code\":\"445322\",\"name\":\"郁南县\"},{\"code\":\"445381\",\"name\":\"罗定市\"}]}]},{\"code\":\"110000\",\"name\":\"北京市\",\"children\":[{\"code\":\"110100\",\"name\":\"市辖区\",\"children\":[{\"code\":\"110101\",\"name\":\"东城区\"},{\"code\":\"110102\",\"name\":\"西城区\"},{\"code\":\"110105\",\"name\":\"朝阳区\"},{\"code\":\"110106\",\"name\":\"丰台区\"},{\"code\":\"110107\",\"name\":\"石景山区\"},{\"code\":\"110108\",\"name\":\"海淀区\"},{\"code\":\"110109\",\"name\":\"门头沟区\"},{\"code\":\"110111\",\"name\":\"房山区\"},{\"code\":\"110112\",\"name\":\"通州区\"},{\"code\":\"110113\",\"name\":\"顺义区\"},{\"code\":\"110114\",\"name\":\"昌平区\"},{\"code\":\"110115\",\"name\":\"大兴区\"},{\"code\":\"110116\",\"name\":\"怀柔区\"},{\"code\":\"110117\",\"name\":\"平谷区\"},{\"code\":\"110118\",\"name\":\"密云区\"},{\"code\":\"110119\",\"name\":\"延庆区\"}]}]},{\"code\":\"120000\",\"name\":\"天津市\",\"children\":[{\"code\":\"120100\",\"name\":\"市辖区\",\"children\":[{\"code\":\"120101\",\"name\":\"和平区\"},{\"code\":\"120102\",\"name\":\"河东区\"},{\"code\":\"120103\",\"name\":\"河西区\"},{\"code\":\"120104\",\"name\":\"南开区\"},{\"code\":\"120105\",\"name\":\"河北区\"},{\"code\":\"120106\",\"name\":\"红桥区\"},{\"code\":\"120110\",\"name\":\"东丽区\"},{\"code\":\"120111\",\"name\":\"西青区\"},{\"code\":\"120112\",\"name\":\"津南区\"},{\"code\":\"120113\",\"name\":\"北辰区\"},{\"code\":\"120114\",\"name\":\"武清区\"},{\"code\":\"120115\",\"name\":\"宝坻区\"},{\"code\":\"120116\",\"name\":\"滨海新区\"},{\"code\":\"120117\",\"name\":\"宁河区\"},{\"code\":\"120118\",\"name\":\"静海区\"},{\"code\":\"120119\",\"name\":\"蓟州区\"}]}]},{\"code\":\"130000\",\"name\":\"河北省\",\"children\":[{\"code\":\"130100\",\"name\":\"石家庄市\",\"children\":[{\"code\":\"130102\",\"name\":\"长安区\"},{\"code\":\"130104\",\"name\":\"桥西区\"},{\"code\":\"130105\",\"name\":\"新华区\"},{\"code\":\"130107\",\"name\":\"井陉矿区\"},{\"code\":\"130108\",\"name\":\"裕华区\"},{\"code\":\"130109\",\"name\":\"藁城区\"},{\"code\":\"130110\",\"name\":\"鹿泉区\"},{\"code\":\"130111\",\"name\":\"栾城区\"},{\"code\":\"130121\",\"name\":\"井陉县\"},{\"code\":\"130123\",\"name\":\"正定县\"},{\"code\":\"130125\",\"name\":\"行唐县\"},{\"code\":\"130126\",\"name\":\"灵寿县\"},{\"code\":\"130127\",\"name\":\"高邑县\"},{\"code\":\"130128\",\"name\":\"深泽县\"},{\"code\":\"130129\",\"name\":\"赞皇县\"},{\"code\":\"130130\",\"name\":\"无极县\"},{\"code\":\"130131\",\"name\":\"平山县\"},{\"code\":\"130132\",\"name\":\"元氏县\"},{\"code\":\"130133\",\"name\":\"赵县\"},{\"code\":\"130171\",\"name\":\"石家庄高新技术产业开发区\"},{\"code\":\"130172\",\"name\":\"石家庄循环化工园区\"},{\"code\":\"130181\",\"name\":\"辛集市\"},{\"code\":\"130183\",\"name\":\"晋州市\"},{\"code\":\"130184\",\"name\":\"新乐市\"}]},{\"code\":\"130200\",\"name\":\"唐山市\",\"children\":[{\"code\":\"130202\",\"name\":\"路南区\"},{\"code\":\"130203\",\"name\":\"路北区\"},{\"code\":\"130204\",\"name\":\"古冶区\"},{\"code\":\"130205\",\"name\":\"开平区\"},{\"code\":\"130207\",\"name\":\"丰南区\"},{\"code\":\"130208\",\"name\":\"丰润区\"},{\"code\":\"130209\",\"name\":\"曹妃甸区\"},{\"code\":\"130224\",\"name\":\"滦南县\"},{\"code\":\"130225\",\"name\":\"乐亭县\"},{\"code\":\"130227\",\"name\":\"迁西县\"},{\"code\":\"130229\",\"name\":\"玉田县\"},{\"code\":\"130271\",\"name\":\"河北唐山芦台经济开发区\"},{\"code\":\"130272\",\"name\":\"唐山市汉沽管理区\"},{\"code\":\"130273\",\"name\":\"唐山高新技术产业开发区\"},{\"code\":\"130274\",\"name\":\"河北唐山海港经济开发区\"},{\"code\":\"130281\",\"name\":\"遵化市\"},{\"code\":\"130283\",\"name\":\"迁安市\"},{\"code\":\"130284\",\"name\":\"滦州市\"}]},{\"code\":\"130300\",\"name\":\"秦皇岛市\",\"children\":[{\"code\":\"130302\",\"name\":\"海港区\"},{\"code\":\"130303\",\"name\":\"山海关区\"},{\"code\":\"130304\",\"name\":\"北戴河区\"},{\"code\":\"130306\",\"name\":\"抚宁区\"},{\"code\":\"130321\",\"name\":\"青龙满族自治县\"},{\"code\":\"130322\",\"name\":\"昌黎县\"},{\"code\":\"130324\",\"name\":\"卢龙县\"},{\"code\":\"130371\",\"name\":\"秦皇岛市经济技术开发区\"},{\"code\":\"130372\",\"name\":\"北戴河新区\"}]},{\"code\":\"130400\",\"name\":\"邯郸市\",\"children\":[{\"code\":\"130402\",\"name\":\"邯山区\"},{\"code\":\"130403\",\"name\":\"丛台区\"},{\"code\":\"130404\",\"name\":\"复兴区\"},{\"code\":\"130406\",\"name\":\"峰峰矿区\"},{\"code\":\"130407\",\"name\":\"肥乡区\"},{\"code\":\"130408\",\"name\":\"永年区\"},{\"code\":\"130423\",\"name\":\"临漳县\"},{\"code\":\"130424\",\"name\":\"成安县\"},{\"code\":\"130425\",\"name\":\"大名县\"},{\"code\":\"130426\",\"name\":\"涉县\"},{\"code\":\"130427\",\"name\":\"磁县\"},{\"code\":\"130430\",\"name\":\"邱县\"},{\"code\":\"130431\",\"name\":\"鸡泽县\"},{\"code\":\"130432\",\"name\":\"广平县\"},{\"code\":\"130433\",\"name\":\"馆陶县\"},{\"code\":\"130434\",\"name\":\"魏县\"},{\"code\":\"130435\",\"name\":\"曲周县\"},{\"code\":\"130471\",\"name\":\"邯郸经济技术开发区\"},{\"code\":\"130473\",\"name\":\"邯郸冀南新区\"},{\"code\":\"130481\",\"name\":\"武安市\"}]},{\"code\":\"130500\",\"name\":\"邢台市\",\"children\":[{\"code\":\"130502\",\"name\":\"襄都区\"},{\"code\":\"130503\",\"name\":\"信都区\"},{\"code\":\"130505\",\"name\":\"任泽区\"},{\"code\":\"130506\",\"name\":\"南和区\"},{\"code\":\"130522\",\"name\":\"临城县\"},{\"code\":\"130523\",\"name\":\"内丘县\"},{\"code\":\"130524\",\"name\":\"柏乡县\"},{\"code\":\"130525\",\"name\":\"隆尧县\"},{\"code\":\"130528\",\"name\":\"宁晋县\"},{\"code\":\"130529\",\"name\":\"巨鹿县\"},{\"code\":\"130530\",\"name\":\"新河县\"},{\"code\":\"130531\",\"name\":\"广宗县\"},{\"code\":\"130532\",\"name\":\"平乡县\"},{\"code\":\"130533\",\"name\":\"威县\"},{\"code\":\"130534\",\"name\":\"清河县\"},{\"code\":\"130535\",\"name\":\"临西县\"},{\"code\":\"130571\",\"name\":\"河北邢台经济开发区\"},{\"code\":\"130581\",\"name\":\"南宫市\"},{\"code\":\"130582\",\"name\":\"沙河市\"}]},{\"code\":\"130600\",\"name\":\"保定市\",\"children\":[{\"code\":\"130602\",\"name\":\"竞秀区\"},{\"code\":\"130606\",\"name\":\"莲池区\"},{\"code\":\"130607\",\"name\":\"满城区\"},{\"code\":\"130608\",\"name\":\"清苑区\"},{\"code\":\"130609\",\"name\":\"徐水区\"},{\"code\":\"130623\",\"name\":\"涞水县\"},{\"code\":\"130624\",\"name\":\"阜平县\"},{\"code\":\"130626\",\"name\":\"定兴县\"},{\"code\":\"130627\",\"name\":\"唐县\"},{\"code\":\"130628\",\"name\":\"高阳县\"},{\"code\":\"130629\",\"name\":\"容城县\"},{\"code\":\"130630\",\"name\":\"涞源县\"},{\"code\":\"130631\",\"name\":\"望都县\"},{\"code\":\"130632\",\"name\":\"安新县\"},{\"code\":\"130633\",\"name\":\"易县\"},{\"code\":\"130634\",\"name\":\"曲阳县\"},{\"code\":\"130635\",\"name\":\"蠡县\"},{\"code\":\"130636\",\"name\":\"顺平县\"},{\"code\":\"130637\",\"name\":\"博野县\"},{\"code\":\"130638\",\"name\":\"雄县\"},{\"code\":\"130671\",\"name\":\"保定高新技术产业开发区\"},{\"code\":\"130672\",\"name\":\"保定白沟新城\"},{\"code\":\"130681\",\"name\":\"涿州市\"},{\"code\":\"130682\",\"name\":\"定州市\"},{\"code\":\"130683\",\"name\":\"安国市\"},{\"code\":\"130684\",\"name\":\"高碑店市\"}]},{\"code\":\"130700\",\"name\":\"张家口市\",\"children\":[{\"code\":\"130702\",\"name\":\"桥东区\"},{\"code\":\"130703\",\"name\":\"桥西区\"},{\"code\":\"130705\",\"name\":\"宣化区\"},{\"code\":\"130706\",\"name\":\"下花园区\"},{\"code\":\"130708\",\"name\":\"万全区\"},{\"code\":\"130709\",\"name\":\"崇礼区\"},{\"code\":\"130722\",\"name\":\"张北县\"},{\"code\":\"130723\",\"name\":\"康保县\"},{\"code\":\"130724\",\"name\":\"沽源县\"},{\"code\":\"130725\",\"name\":\"尚义县\"},{\"code\":\"130726\",\"name\":\"蔚县\"},{\"code\":\"130727\",\"name\":\"阳原县\"},{\"code\":\"130728\",\"name\":\"怀安县\"},{\"code\":\"130730\",\"name\":\"怀来县\"},{\"code\":\"130731\",\"name\":\"涿鹿县\"},{\"code\":\"130732\",\"name\":\"赤城县\"},{\"code\":\"130771\",\"name\":\"张家口经济开发区\"},{\"code\":\"130772\",\"name\":\"张家口市察北管理区\"},{\"code\":\"130773\",\"name\":\"张家口市塞北管理区\"}]},{\"code\":\"130800\",\"name\":\"承德市\",\"children\":[{\"code\":\"130802\",\"name\":\"双桥区\"},{\"code\":\"130803\",\"name\":\"双滦区\"},{\"code\":\"130804\",\"name\":\"鹰手营子矿区\"},{\"code\":\"130821\",\"name\":\"承德县\"},{\"code\":\"130822\",\"name\":\"兴隆县\"},{\"code\":\"130824\",\"name\":\"滦平县\"},{\"code\":\"130825\",\"name\":\"隆化县\"},{\"code\":\"130826\",\"name\":\"丰宁满族自治县\"},{\"code\":\"130827\",\"name\":\"宽城满族自治县\"},{\"code\":\"130828\",\"name\":\"围场满族蒙古族自治县\"},{\"code\":\"130871\",\"name\":\"承德高新技术产业开发区\"},{\"code\":\"130881\",\"name\":\"平泉市\"}]},{\"code\":\"130900\",\"name\":\"沧州市\",\"children\":[{\"code\":\"130902\",\"name\":\"新华区\"},{\"code\":\"130903\",\"name\":\"运河区\"},{\"code\":\"130921\",\"name\":\"沧县\"},{\"code\":\"130922\",\"name\":\"青县\"},{\"code\":\"130923\",\"name\":\"东光县\"},{\"code\":\"130924\",\"name\":\"海兴县\"},{\"code\":\"130925\",\"name\":\"盐山县\"},{\"code\":\"130926\",\"name\":\"肃宁县\"},{\"code\":\"130927\",\"name\":\"南皮县\"},{\"code\":\"130928\",\"name\":\"吴桥县\"},{\"code\":\"130929\",\"name\":\"献县\"},{\"code\":\"130930\",\"name\":\"孟村回族自治县\"},{\"code\":\"130971\",\"name\":\"河北沧州经济开发区\"},{\"code\":\"130972\",\"name\":\"沧州高新技术产业开发区\"},{\"code\":\"130973\",\"name\":\"沧州渤海新区\"},{\"code\":\"130981\",\"name\":\"泊头市\"},{\"code\":\"130982\",\"name\":\"任丘市\"},{\"code\":\"130983\",\"name\":\"黄骅市\"},{\"code\":\"130984\",\"name\":\"河间市\"}]},{\"code\":\"131000\",\"name\":\"廊坊市\",\"children\":[{\"code\":\"131002\",\"name\":\"安次区\"},{\"code\":\"131003\",\"name\":\"广阳区\"},{\"code\":\"131022\",\"name\":\"固安县\"},{\"code\":\"131023\",\"name\":\"永清县\"},{\"code\":\"131024\",\"name\":\"香河县\"},{\"code\":\"131025\",\"name\":\"大城县\"},{\"code\":\"131026\",\"name\":\"文安县\"},{\"code\":\"131028\",\"name\":\"大厂回族自治县\"},{\"code\":\"131071\",\"name\":\"廊坊经济技术开发区\"},{\"code\":\"131081\",\"name\":\"霸州市\"},{\"code\":\"131082\",\"name\":\"三河市\"}]},{\"code\":\"131100\",\"name\":\"衡水市\",\"children\":[{\"code\":\"131102\",\"name\":\"桃城区\"},{\"code\":\"131103\",\"name\":\"冀州区\"},{\"code\":\"131121\",\"name\":\"枣强县\"},{\"code\":\"131122\",\"name\":\"武邑县\"},{\"code\":\"131123\",\"name\":\"武强县\"},{\"code\":\"131124\",\"name\":\"饶阳县\"},{\"code\":\"131125\",\"name\":\"安平县\"},{\"code\":\"131126\",\"name\":\"故城县\"},{\"code\":\"131127\",\"name\":\"景县\"},{\"code\":\"131128\",\"name\":\"阜城县\"},{\"code\":\"131171\",\"name\":\"河北衡水高新技术产业开发区\"},{\"code\":\"131172\",\"name\":\"衡水滨湖新区\"},{\"code\":\"131182\",\"name\":\"深州市\"}]}]},{\"code\":\"140000\",\"name\":\"山西省\",\"children\":[{\"code\":\"140100\",\"name\":\"太原市\",\"children\":[{\"code\":\"140105\",\"name\":\"小店区\"},{\"code\":\"140106\",\"name\":\"迎泽区\"},{\"code\":\"140107\",\"name\":\"杏花岭区\"},{\"code\":\"140108\",\"name\":\"尖草坪区\"},{\"code\":\"140109\",\"name\":\"万柏林区\"},{\"code\":\"140110\",\"name\":\"晋源区\"},{\"code\":\"140121\",\"name\":\"清徐县\"},{\"code\":\"140122\",\"name\":\"阳曲县\"},{\"code\":\"140123\",\"name\":\"娄烦县\"},{\"code\":\"140171\",\"name\":\"山西转型综合改革示范区\"},{\"code\":\"140181\",\"name\":\"古交市\"}]},{\"code\":\"140200\",\"name\":\"大同市\",\"children\":[{\"code\":\"140212\",\"name\":\"新荣区\"},{\"code\":\"140213\",\"name\":\"平城区\"},{\"code\":\"140214\",\"name\":\"云冈区\"},{\"code\":\"140215\",\"name\":\"云州区\"},{\"code\":\"140221\",\"name\":\"阳高县\"},{\"code\":\"140222\",\"name\":\"天镇县\"},{\"code\":\"140223\",\"name\":\"广灵县\"},{\"code\":\"140224\",\"name\":\"灵丘县\"},{\"code\":\"140225\",\"name\":\"浑源县\"},{\"code\":\"140226\",\"name\":\"左云县\"},{\"code\":\"140271\",\"name\":\"山西大同经济开发区\"}]},{\"code\":\"140300\",\"name\":\"阳泉市\",\"children\":[{\"code\":\"140302\",\"name\":\"城区\"},{\"code\":\"140303\",\"name\":\"矿区\"},{\"code\":\"140311\",\"name\":\"郊区\"},{\"code\":\"140321\",\"name\":\"平定县\"},{\"code\":\"140322\",\"name\":\"盂县\"}]},{\"code\":\"140400\",\"name\":\"长治市\",\"children\":[{\"code\":\"140403\",\"name\":\"潞州区\"},{\"code\":\"140404\",\"name\":\"上党区\"},{\"code\":\"140405\",\"name\":\"屯留区\"},{\"code\":\"140406\",\"name\":\"潞城区\"},{\"code\":\"140423\",\"name\":\"襄垣县\"},{\"code\":\"140425\",\"name\":\"平顺县\"},{\"code\":\"140426\",\"name\":\"黎城县\"},{\"code\":\"140427\",\"name\":\"壶关县\"},{\"code\":\"140428\",\"name\":\"长子县\"},{\"code\":\"140429\",\"name\":\"武乡县\"},{\"code\":\"140430\",\"name\":\"沁县\"},{\"code\":\"140431\",\"name\":\"沁源县\"},{\"code\":\"140471\",\"name\":\"山西长治高新技术产业园区\"}]},{\"code\":\"140500\",\"name\":\"晋城市\",\"children\":[{\"code\":\"140502\",\"name\":\"城区\"},{\"code\":\"140521\",\"name\":\"沁水县\"},{\"code\":\"140522\",\"name\":\"阳城县\"},{\"code\":\"140524\",\"name\":\"陵川县\"},{\"code\":\"140525\",\"name\":\"泽州县\"},{\"code\":\"140581\",\"name\":\"高平市\"}]},{\"code\":\"140600\",\"name\":\"朔州市\",\"children\":[{\"code\":\"140602\",\"name\":\"朔城区\"},{\"code\":\"140603\",\"name\":\"平鲁区\"},{\"code\":\"140621\",\"name\":\"山阴县\"},{\"code\":\"140622\",\"name\":\"应县\"},{\"code\":\"140623\",\"name\":\"右玉县\"},{\"code\":\"140671\",\"name\":\"山西朔州经济开发区\"},{\"code\":\"140681\",\"name\":\"怀仁市\"}]},{\"code\":\"140700\",\"name\":\"晋中市\",\"children\":[{\"code\":\"140702\",\"name\":\"榆次区\"},{\"code\":\"140703\",\"name\":\"太谷区\"},{\"code\":\"140721\",\"name\":\"榆社县\"},{\"code\":\"140722\",\"name\":\"左权县\"},{\"code\":\"140723\",\"name\":\"和顺县\"},{\"code\":\"140724\",\"name\":\"昔阳县\"},{\"code\":\"140725\",\"name\":\"寿阳县\"},{\"code\":\"140727\",\"name\":\"祁县\"},{\"code\":\"140728\",\"name\":\"平遥县\"},{\"code\":\"140729\",\"name\":\"灵石县\"},{\"code\":\"140781\",\"name\":\"介休市\"}]},{\"code\":\"140800\",\"name\":\"运城市\",\"children\":[{\"code\":\"140802\",\"name\":\"盐湖区\"},{\"code\":\"140821\",\"name\":\"临猗县\"},{\"code\":\"140822\",\"name\":\"万荣县\"},{\"code\":\"140823\",\"name\":\"闻喜县\"},{\"code\":\"140824\",\"name\":\"稷山县\"},{\"code\":\"140825\",\"name\":\"新绛县\"},{\"code\":\"140826\",\"name\":\"绛县\"},{\"code\":\"140827\",\"name\":\"垣曲县\"},{\"code\":\"140828\",\"name\":\"夏县\"},{\"code\":\"140829\",\"name\":\"平陆县\"},{\"code\":\"140830\",\"name\":\"芮城县\"},{\"code\":\"140881\",\"name\":\"永济市\"},{\"code\":\"140882\",\"name\":\"河津市\"}]},{\"code\":\"140900\",\"name\":\"忻州市\",\"children\":[{\"code\":\"140902\",\"name\":\"忻府区\"},{\"code\":\"140921\",\"name\":\"定襄县\"},{\"code\":\"140922\",\"name\":\"五台县\"},{\"code\":\"140923\",\"name\":\"代县\"},{\"code\":\"140924\",\"name\":\"繁峙县\"},{\"code\":\"140925\",\"name\":\"宁武县\"},{\"code\":\"140926\",\"name\":\"静乐县\"},{\"code\":\"140927\",\"name\":\"神池县\"},{\"code\":\"140928\",\"name\":\"五寨县\"},{\"code\":\"140929\",\"name\":\"岢岚县\"},{\"code\":\"140930\",\"name\":\"河曲县\"},{\"code\":\"140931\",\"name\":\"保德县\"},{\"code\":\"140932\",\"name\":\"偏关县\"},{\"code\":\"140971\",\"name\":\"五台山风景名胜区\"},{\"code\":\"140981\",\"name\":\"原平市\"}]},{\"code\":\"141000\",\"name\":\"临汾市\",\"children\":[{\"code\":\"141002\",\"name\":\"尧都区\"},{\"code\":\"141021\",\"name\":\"曲沃县\"},{\"code\":\"141022\",\"name\":\"翼城县\"},{\"code\":\"141023\",\"name\":\"襄汾县\"},{\"code\":\"141024\",\"name\":\"洪洞县\"},{\"code\":\"141025\",\"name\":\"古县\"},{\"code\":\"141026\",\"name\":\"安泽县\"},{\"code\":\"141027\",\"name\":\"浮山县\"},{\"code\":\"141028\",\"name\":\"吉县\"},{\"code\":\"141029\",\"name\":\"乡宁县\"},{\"code\":\"141030\",\"name\":\"大宁县\"},{\"code\":\"141031\",\"name\":\"隰县\"},{\"code\":\"141032\",\"name\":\"永和县\"},{\"code\":\"141033\",\"name\":\"蒲县\"},{\"code\":\"141034\",\"name\":\"汾西县\"},{\"code\":\"141081\",\"name\":\"侯马市\"},{\"code\":\"141082\",\"name\":\"霍州市\"}]},{\"code\":\"141100\",\"name\":\"吕梁市\",\"children\":[{\"code\":\"141102\",\"name\":\"离石区\"},{\"code\":\"141121\",\"name\":\"文水县\"},{\"code\":\"141122\",\"name\":\"交城县\"},{\"code\":\"141123\",\"name\":\"兴县\"},{\"code\":\"141124\",\"name\":\"临县\"},{\"code\":\"141125\",\"name\":\"柳林县\"},{\"code\":\"141126\",\"name\":\"石楼县\"},{\"code\":\"141127\",\"name\":\"岚县\"},{\"code\":\"141128\",\"name\":\"方山县\"},{\"code\":\"141129\",\"name\":\"中阳县\"},{\"code\":\"141130\",\"name\":\"交口县\"},{\"code\":\"141181\",\"name\":\"孝义市\"},{\"code\":\"141182\",\"name\":\"汾阳市\"}]}]},{\"code\":\"150000\",\"name\":\"内蒙古自治区\",\"children\":[{\"code\":\"150100\",\"name\":\"呼和浩特市\",\"children\":[{\"code\":\"150102\",\"name\":\"新城区\"},{\"code\":\"150103\",\"name\":\"回民区\"},{\"code\":\"150104\",\"name\":\"玉泉区\"},{\"code\":\"150105\",\"name\":\"赛罕区\"},{\"code\":\"150121\",\"name\":\"土默特左旗\"},{\"code\":\"150122\",\"name\":\"托克托县\"},{\"code\":\"150123\",\"name\":\"和林格尔县\"},{\"code\":\"150124\",\"name\":\"清水河县\"},{\"code\":\"150125\",\"name\":\"武川县\"},{\"code\":\"150172\",\"name\":\"呼和浩特经济技术开发区\"}]},{\"code\":\"150200\",\"name\":\"包头市\",\"children\":[{\"code\":\"150202\",\"name\":\"东河区\"},{\"code\":\"150203\",\"name\":\"昆都仑区\"},{\"code\":\"150204\",\"name\":\"青山区\"},{\"code\":\"150205\",\"name\":\"石拐区\"},{\"code\":\"150206\",\"name\":\"白云鄂博矿区\"},{\"code\":\"150207\",\"name\":\"九原区\"},{\"code\":\"150221\",\"name\":\"土默特右旗\"},{\"code\":\"150222\",\"name\":\"固阳县\"},{\"code\":\"150223\",\"name\":\"达尔罕茂明安联合旗\"},{\"code\":\"150271\",\"name\":\"包头稀土高新技术产业开发区\"}]},{\"code\":\"150300\",\"name\":\"乌海市\",\"children\":[{\"code\":\"150302\",\"name\":\"海勃湾区\"},{\"code\":\"150303\",\"name\":\"海南区\"},{\"code\":\"150304\",\"name\":\"乌达区\"}]},{\"code\":\"150400\",\"name\":\"赤峰市\",\"children\":[{\"code\":\"150402\",\"name\":\"红山区\"},{\"code\":\"150403\",\"name\":\"元宝山区\"},{\"code\":\"150404\",\"name\":\"松山区\"},{\"code\":\"150421\",\"name\":\"阿鲁科尔沁旗\"},{\"code\":\"150422\",\"name\":\"巴林左旗\"},{\"code\":\"150423\",\"name\":\"巴林右旗\"},{\"code\":\"150424\",\"name\":\"林西县\"},{\"code\":\"150425\",\"name\":\"克什克腾旗\"},{\"code\":\"150426\",\"name\":\"翁牛特旗\"},{\"code\":\"150428\",\"name\":\"喀喇沁旗\"},{\"code\":\"150429\",\"name\":\"宁城县\"},{\"code\":\"150430\",\"name\":\"敖汉旗\"}]},{\"code\":\"150500\",\"name\":\"通辽市\",\"children\":[{\"code\":\"150502\",\"name\":\"科尔沁区\"},{\"code\":\"150521\",\"name\":\"科尔沁左翼中旗\"},{\"code\":\"150522\",\"name\":\"科尔沁左翼后旗\"},{\"code\":\"150523\",\"name\":\"开鲁县\"},{\"code\":\"150524\",\"name\":\"库伦旗\"},{\"code\":\"150525\",\"name\":\"奈曼旗\"},{\"code\":\"150526\",\"name\":\"扎鲁特旗\"},{\"code\":\"150571\",\"name\":\"通辽经济技术开发区\"},{\"code\":\"150581\",\"name\":\"霍林郭勒市\"}]},{\"code\":\"150600\",\"name\":\"鄂尔多斯市\",\"children\":[{\"code\":\"150602\",\"name\":\"东胜区\"},{\"code\":\"150603\",\"name\":\"康巴什区\"},{\"code\":\"150621\",\"name\":\"达拉特旗\"},{\"code\":\"150622\",\"name\":\"准格尔旗\"},{\"code\":\"150623\",\"name\":\"鄂托克前旗\"},{\"code\":\"150624\",\"name\":\"鄂托克旗\"},{\"code\":\"150625\",\"name\":\"杭锦旗\"},{\"code\":\"150626\",\"name\":\"乌审旗\"},{\"code\":\"150627\",\"name\":\"伊金霍洛旗\"}]},{\"code\":\"150700\",\"name\":\"呼伦贝尔市\",\"children\":[{\"code\":\"150702\",\"name\":\"海拉尔区\"},{\"code\":\"150703\",\"name\":\"扎赉诺尔区\"},{\"code\":\"150721\",\"name\":\"阿荣旗\"},{\"code\":\"150722\",\"name\":\"莫力达瓦达斡尔族自治旗\"},{\"code\":\"150723\",\"name\":\"鄂伦春自治旗\"},{\"code\":\"150724\",\"name\":\"鄂温克族自治旗\"},{\"code\":\"150725\",\"name\":\"陈巴尔虎旗\"},{\"code\":\"150726\",\"name\":\"新巴尔虎左旗\"},{\"code\":\"150727\",\"name\":\"新巴尔虎右旗\"},{\"code\":\"150781\",\"name\":\"满洲里市\"},{\"code\":\"150782\",\"name\":\"牙克石市\"},{\"code\":\"150783\",\"name\":\"扎兰屯市\"},{\"code\":\"150784\",\"name\":\"额尔古纳市\"},{\"code\":\"150785\",\"name\":\"根河市\"}]},{\"code\":\"150800\",\"name\":\"巴彦淖尔市\",\"children\":[{\"code\":\"150802\",\"name\":\"临河区\"},{\"code\":\"150821\",\"name\":\"五原县\"},{\"code\":\"150822\",\"name\":\"磴口县\"},{\"code\":\"150823\",\"name\":\"乌拉特前旗\"},{\"code\":\"150824\",\"name\":\"乌拉特中旗\"},{\"code\":\"150825\",\"name\":\"乌拉特后旗\"},{\"code\":\"150826\",\"name\":\"杭锦后旗\"}]},{\"code\":\"150900\",\"name\":\"乌兰察布市\",\"children\":[{\"code\":\"150902\",\"name\":\"集宁区\"},{\"code\":\"150921\",\"name\":\"卓资县\"},{\"code\":\"150922\",\"name\":\"化德县\"},{\"code\":\"150923\",\"name\":\"商都县\"},{\"code\":\"150924\",\"name\":\"兴和县\"},{\"code\":\"150925\",\"name\":\"凉城县\"},{\"code\":\"150926\",\"name\":\"察哈尔右翼前旗\"},{\"code\":\"150927\",\"name\":\"察哈尔右翼中旗\"},{\"code\":\"150928\",\"name\":\"察哈尔右翼后旗\"},{\"code\":\"150929\",\"name\":\"四子王旗\"},{\"code\":\"150981\",\"name\":\"丰镇市\"}]},{\"code\":\"152200\",\"name\":\"兴安盟\",\"children\":[{\"code\":\"152201\",\"name\":\"乌兰浩特市\"},{\"code\":\"152202\",\"name\":\"阿尔山市\"},{\"code\":\"152221\",\"name\":\"科尔沁右翼前旗\"},{\"code\":\"152222\",\"name\":\"科尔沁右翼中旗\"},{\"code\":\"152223\",\"name\":\"扎赉特旗\"},{\"code\":\"152224\",\"name\":\"突泉县\"}]},{\"code\":\"152500\",\"name\":\"锡林郭勒盟\",\"children\":[{\"code\":\"152501\",\"name\":\"二连浩特市\"},{\"code\":\"152502\",\"name\":\"锡林浩特市\"},{\"code\":\"152522\",\"name\":\"阿巴嘎旗\"},{\"code\":\"152523\",\"name\":\"苏尼特左旗\"},{\"code\":\"152524\",\"name\":\"苏尼特右旗\"},{\"code\":\"152525\",\"name\":\"东乌珠穆沁旗\"},{\"code\":\"152526\",\"name\":\"西乌珠穆沁旗\"},{\"code\":\"152527\",\"name\":\"太仆寺旗\"},{\"code\":\"152528\",\"name\":\"镶黄旗\"},{\"code\":\"152529\",\"name\":\"正镶白旗\"},{\"code\":\"152530\",\"name\":\"正蓝旗\"},{\"code\":\"152531\",\"name\":\"多伦县\"},{\"code\":\"152571\",\"name\":\"乌拉盖管委会\"}]},{\"code\":\"152900\",\"name\":\"阿拉善盟\",\"children\":[{\"code\":\"152921\",\"name\":\"阿拉善左旗\"},{\"code\":\"152922\",\"name\":\"阿拉善右旗\"},{\"code\":\"152923\",\"name\":\"额济纳旗\"},{\"code\":\"152971\",\"name\":\"内蒙古阿拉善高新技术产业开发区\"}]}]},{\"code\":\"210000\",\"name\":\"辽宁省\",\"children\":[{\"code\":\"210100\",\"name\":\"沈阳市\",\"children\":[{\"code\":\"210102\",\"name\":\"和平区\"},{\"code\":\"210103\",\"name\":\"沈河区\"},{\"code\":\"210104\",\"name\":\"大东区\"},{\"code\":\"210105\",\"name\":\"皇姑区\"},{\"code\":\"210106\",\"name\":\"铁西区\"},{\"code\":\"210111\",\"name\":\"苏家屯区\"},{\"code\":\"210112\",\"name\":\"浑南区\"},{\"code\":\"210113\",\"name\":\"沈北新区\"},{\"code\":\"210114\",\"name\":\"于洪区\"},{\"code\":\"210115\",\"name\":\"辽中区\"},{\"code\":\"210123\",\"name\":\"康平县\"},{\"code\":\"210124\",\"name\":\"法库县\"},{\"code\":\"210181\",\"name\":\"新民市\"}]},{\"code\":\"210200\",\"name\":\"大连市\",\"children\":[{\"code\":\"210202\",\"name\":\"中山区\"},{\"code\":\"210203\",\"name\":\"西岗区\"},{\"code\":\"210204\",\"name\":\"沙河口区\"},{\"code\":\"210211\",\"name\":\"甘井子区\"},{\"code\":\"210212\",\"name\":\"旅顺口区\"},{\"code\":\"210213\",\"name\":\"金州区\"},{\"code\":\"210214\",\"name\":\"普兰店区\"},{\"code\":\"210224\",\"name\":\"长海县\"},{\"code\":\"210281\",\"name\":\"瓦房店市\"},{\"code\":\"210283\",\"name\":\"庄河市\"}]},{\"code\":\"210300\",\"name\":\"鞍山市\",\"children\":[{\"code\":\"210302\",\"name\":\"铁东区\"},{\"code\":\"210303\",\"name\":\"铁西区\"},{\"code\":\"210304\",\"name\":\"立山区\"},{\"code\":\"210311\",\"name\":\"千山区\"},{\"code\":\"210321\",\"name\":\"台安县\"},{\"code\":\"210323\",\"name\":\"岫岩满族自治县\"},{\"code\":\"210381\",\"name\":\"海城市\"}]},{\"code\":\"210400\",\"name\":\"抚顺市\",\"children\":[{\"code\":\"210402\",\"name\":\"新抚区\"},{\"code\":\"210403\",\"name\":\"东洲区\"},{\"code\":\"210404\",\"name\":\"望花区\"},{\"code\":\"210411\",\"name\":\"顺城区\"},{\"code\":\"210421\",\"name\":\"抚顺县\"},{\"code\":\"210422\",\"name\":\"新宾满族自治县\"},{\"code\":\"210423\",\"name\":\"清原满族自治县\"}]},{\"code\":\"210500\",\"name\":\"本溪市\",\"children\":[{\"code\":\"210502\",\"name\":\"平山区\"},{\"code\":\"210503\",\"name\":\"溪湖区\"},{\"code\":\"210504\",\"name\":\"明山区\"},{\"code\":\"210505\",\"name\":\"南芬区\"},{\"code\":\"210521\",\"name\":\"本溪满族自治县\"},{\"code\":\"210522\",\"name\":\"桓仁满族自治县\"}]},{\"code\":\"210600\",\"name\":\"丹东市\",\"children\":[{\"code\":\"210602\",\"name\":\"元宝区\"},{\"code\":\"210603\",\"name\":\"振兴区\"},{\"code\":\"210604\",\"name\":\"振安区\"},{\"code\":\"210624\",\"name\":\"宽甸满族自治县\"},{\"code\":\"210681\",\"name\":\"东港市\"},{\"code\":\"210682\",\"name\":\"凤城市\"}]},{\"code\":\"210700\",\"name\":\"锦州市\",\"children\":[{\"code\":\"210702\",\"name\":\"古塔区\"},{\"code\":\"210703\",\"name\":\"凌河区\"},{\"code\":\"210711\",\"name\":\"太和区\"},{\"code\":\"210726\",\"name\":\"黑山县\"},{\"code\":\"210727\",\"name\":\"义县\"},{\"code\":\"210781\",\"name\":\"凌海市\"},{\"code\":\"210782\",\"name\":\"北镇市\"}]},{\"code\":\"210800\",\"name\":\"营口市\",\"children\":[{\"code\":\"210802\",\"name\":\"站前区\"},{\"code\":\"210803\",\"name\":\"西市区\"},{\"code\":\"210804\",\"name\":\"鲅鱼圈区\"},{\"code\":\"210811\",\"name\":\"老边区\"},{\"code\":\"210881\",\"name\":\"盖州市\"},{\"code\":\"210882\",\"name\":\"大石桥市\"}]},{\"code\":\"210900\",\"name\":\"阜新市\",\"children\":[{\"code\":\"210902\",\"name\":\"海州区\"},{\"code\":\"210903\",\"name\":\"新邱区\"},{\"code\":\"210904\",\"name\":\"太平区\"},{\"code\":\"210905\",\"name\":\"清河门区\"},{\"code\":\"210911\",\"name\":\"细河区\"},{\"code\":\"210921\",\"name\":\"阜新蒙古族自治县\"},{\"code\":\"210922\",\"name\":\"彰武县\"}]},{\"code\":\"211000\",\"name\":\"辽阳市\",\"children\":[{\"code\":\"211002\",\"name\":\"白塔区\"},{\"code\":\"211003\",\"name\":\"文圣区\"},{\"code\":\"211004\",\"name\":\"宏伟区\"},{\"code\":\"211005\",\"name\":\"弓长岭区\"},{\"code\":\"211011\",\"name\":\"太子河区\"},{\"code\":\"211021\",\"name\":\"辽阳县\"},{\"code\":\"211081\",\"name\":\"灯塔市\"}]},{\"code\":\"211100\",\"name\":\"盘锦市\",\"children\":[{\"code\":\"211102\",\"name\":\"双台子区\"},{\"code\":\"211103\",\"name\":\"兴隆台区\"},{\"code\":\"211104\",\"name\":\"大洼区\"},{\"code\":\"211122\",\"name\":\"盘山县\"}]},{\"code\":\"211200\",\"name\":\"铁岭市\",\"children\":[{\"code\":\"211202\",\"name\":\"银州区\"},{\"code\":\"211204\",\"name\":\"清河区\"},{\"code\":\"211221\",\"name\":\"铁岭县\"},{\"code\":\"211223\",\"name\":\"西丰县\"},{\"code\":\"211224\",\"name\":\"昌图县\"},{\"code\":\"211281\",\"name\":\"调兵山市\"},{\"code\":\"211282\",\"name\":\"开原市\"}]},{\"code\":\"211300\",\"name\":\"朝阳市\",\"children\":[{\"code\":\"211302\",\"name\":\"双塔区\"},{\"code\":\"211303\",\"name\":\"龙城区\"},{\"code\":\"211321\",\"name\":\"朝阳县\"},{\"code\":\"211322\",\"name\":\"建平县\"},{\"code\":\"211324\",\"name\":\"喀喇沁左翼蒙古族自治县\"},{\"code\":\"211381\",\"name\":\"北票市\"},{\"code\":\"211382\",\"name\":\"凌源市\"}]},{\"code\":\"211400\",\"name\":\"葫芦岛市\",\"children\":[{\"code\":\"211402\",\"name\":\"连山区\"},{\"code\":\"211403\",\"name\":\"龙港区\"},{\"code\":\"211404\",\"name\":\"南票区\"},{\"code\":\"211421\",\"name\":\"绥中县\"},{\"code\":\"211422\",\"name\":\"建昌县\"},{\"code\":\"211481\",\"name\":\"兴城市\"}]}]},{\"code\":\"220000\",\"name\":\"吉林省\",\"children\":[{\"code\":\"220100\",\"name\":\"长春市\",\"children\":[{\"code\":\"220102\",\"name\":\"南关区\"},{\"code\":\"220103\",\"name\":\"宽城区\"},{\"code\":\"220104\",\"name\":\"朝阳区\"},{\"code\":\"220105\",\"name\":\"二道区\"},{\"code\":\"220106\",\"name\":\"绿园区\"},{\"code\":\"220112\",\"name\":\"双阳区\"},{\"code\":\"220113\",\"name\":\"九台区\"},{\"code\":\"220122\",\"name\":\"农安县\"},{\"code\":\"220171\",\"name\":\"长春经济技术开发区\"},{\"code\":\"220172\",\"name\":\"长春净月高新技术产业开发区\"},{\"code\":\"220173\",\"name\":\"长春高新技术产业开发区\"},{\"code\":\"220174\",\"name\":\"长春汽车经济技术开发区\"},{\"code\":\"220182\",\"name\":\"榆树市\"},{\"code\":\"220183\",\"name\":\"德惠市\"},{\"code\":\"220184\",\"name\":\"公主岭市\"}]},{\"code\":\"220200\",\"name\":\"吉林市\",\"children\":[{\"code\":\"220202\",\"name\":\"昌邑区\"},{\"code\":\"220203\",\"name\":\"龙潭区\"},{\"code\":\"220204\",\"name\":\"船营区\"},{\"code\":\"220211\",\"name\":\"丰满区\"},{\"code\":\"220221\",\"name\":\"永吉县\"},{\"code\":\"220271\",\"name\":\"吉林经济开发区\"},{\"code\":\"220272\",\"name\":\"吉林高新技术产业开发区\"},{\"code\":\"220273\",\"name\":\"吉林中国新加坡食品区\"},{\"code\":\"220281\",\"name\":\"蛟河市\"},{\"code\":\"220282\",\"name\":\"桦甸市\"},{\"code\":\"220283\",\"name\":\"舒兰市\"},{\"code\":\"220284\",\"name\":\"磐石市\"}]},{\"code\":\"220300\",\"name\":\"四平市\",\"children\":[{\"code\":\"220302\",\"name\":\"铁西区\"},{\"code\":\"220303\",\"name\":\"铁东区\"},{\"code\":\"220322\",\"name\":\"梨树县\"},{\"code\":\"220323\",\"name\":\"伊通满族自治县\"},{\"code\":\"220382\",\"name\":\"双辽市\"}]},{\"code\":\"220400\",\"name\":\"辽源市\",\"children\":[{\"code\":\"220402\",\"name\":\"龙山区\"},{\"code\":\"220403\",\"name\":\"西安区\"},{\"code\":\"220421\",\"name\":\"东丰县\"},{\"code\":\"220422\",\"name\":\"东辽县\"}]},{\"code\":\"220500\",\"name\":\"通化市\",\"children\":[{\"code\":\"220502\",\"name\":\"东昌区\"},{\"code\":\"220503\",\"name\":\"二道江区\"},{\"code\":\"220521\",\"name\":\"通化县\"},{\"code\":\"220523\",\"name\":\"辉南县\"},{\"code\":\"220524\",\"name\":\"柳河县\"},{\"code\":\"220581\",\"name\":\"梅河口市\"},{\"code\":\"220582\",\"name\":\"集安市\"}]},{\"code\":\"220600\",\"name\":\"白山市\",\"children\":[{\"code\":\"220602\",\"name\":\"浑江区\"},{\"code\":\"220605\",\"name\":\"江源区\"},{\"code\":\"220621\",\"name\":\"抚松县\"},{\"code\":\"220622\",\"name\":\"靖宇县\"},{\"code\":\"220623\",\"name\":\"长白朝鲜族自治县\"},{\"code\":\"220681\",\"name\":\"临江市\"}]},{\"code\":\"220700\",\"name\":\"松原市\",\"children\":[{\"code\":\"220702\",\"name\":\"宁江区\"},{\"code\":\"220721\",\"name\":\"前郭尔罗斯蒙古族自治县\"},{\"code\":\"220722\",\"name\":\"长岭县\"},{\"code\":\"220723\",\"name\":\"乾安县\"},{\"code\":\"220771\",\"name\":\"吉林松原经济开发区\"},{\"code\":\"220781\",\"name\":\"扶余市\"}]},{\"code\":\"220800\",\"name\":\"白城市\",\"children\":[{\"code\":\"220802\",\"name\":\"洮北区\"},{\"code\":\"220821\",\"name\":\"镇赉县\"},{\"code\":\"220822\",\"name\":\"通榆县\"},{\"code\":\"220871\",\"name\":\"吉林白城经济开发区\"},{\"code\":\"220881\",\"name\":\"洮南市\"},{\"code\":\"220882\",\"name\":\"大安市\"}]},{\"code\":\"222400\",\"name\":\"延边朝鲜族自治州\",\"children\":[{\"code\":\"222401\",\"name\":\"延吉市\"},{\"code\":\"222402\",\"name\":\"图们市\"},{\"code\":\"222403\",\"name\":\"敦化市\"},{\"code\":\"222404\",\"name\":\"珲春市\"},{\"code\":\"222405\",\"name\":\"龙井市\"},{\"code\":\"222406\",\"name\":\"和龙市\"},{\"code\":\"222424\",\"name\":\"汪清县\"},{\"code\":\"222426\",\"name\":\"安图县\"}]}]},{\"code\":\"230000\",\"name\":\"黑龙江省\",\"children\":[{\"code\":\"230100\",\"name\":\"哈尔滨市\",\"children\":[{\"code\":\"230102\",\"name\":\"道里区\"},{\"code\":\"230103\",\"name\":\"南岗区\"},{\"code\":\"230104\",\"name\":\"道外区\"},{\"code\":\"230108\",\"name\":\"平房区\"},{\"code\":\"230109\",\"name\":\"松北区\"},{\"code\":\"230110\",\"name\":\"香坊区\"},{\"code\":\"230111\",\"name\":\"呼兰区\"},{\"code\":\"230112\",\"name\":\"阿城区\"},{\"code\":\"230113\",\"name\":\"双城区\"},{\"code\":\"230123\",\"name\":\"依兰县\"},{\"code\":\"230124\",\"name\":\"方正县\"},{\"code\":\"230125\",\"name\":\"宾县\"},{\"code\":\"230126\",\"name\":\"巴彦县\"},{\"code\":\"230127\",\"name\":\"木兰县\"},{\"code\":\"230128\",\"name\":\"通河县\"},{\"code\":\"230129\",\"name\":\"延寿县\"},{\"code\":\"230183\",\"name\":\"尚志市\"},{\"code\":\"230184\",\"name\":\"五常市\"}]},{\"code\":\"230200\",\"name\":\"齐齐哈尔市\",\"children\":[{\"code\":\"230202\",\"name\":\"龙沙区\"},{\"code\":\"230203\",\"name\":\"建华区\"},{\"code\":\"230204\",\"name\":\"铁锋区\"},{\"code\":\"230205\",\"name\":\"昂昂溪区\"},{\"code\":\"230206\",\"name\":\"富拉尔基区\"},{\"code\":\"230207\",\"name\":\"碾子山区\"},{\"code\":\"230208\",\"name\":\"梅里斯达斡尔族区\"},{\"code\":\"230221\",\"name\":\"龙江县\"},{\"code\":\"230223\",\"name\":\"依安县\"},{\"code\":\"230224\",\"name\":\"泰来县\"},{\"code\":\"230225\",\"name\":\"甘南县\"},{\"code\":\"230227\",\"name\":\"富裕县\"},{\"code\":\"230229\",\"name\":\"克山县\"},{\"code\":\"230230\",\"name\":\"克东县\"},{\"code\":\"230231\",\"name\":\"拜泉县\"},{\"code\":\"230281\",\"name\":\"讷河市\"}]},{\"code\":\"230300\",\"name\":\"鸡西市\",\"children\":[{\"code\":\"230302\",\"name\":\"鸡冠区\"},{\"code\":\"230303\",\"name\":\"恒山区\"},{\"code\":\"230304\",\"name\":\"滴道区\"},{\"code\":\"230305\",\"name\":\"梨树区\"},{\"code\":\"230306\",\"name\":\"城子河区\"},{\"code\":\"230307\",\"name\":\"麻山区\"},{\"code\":\"230321\",\"name\":\"鸡东县\"},{\"code\":\"230381\",\"name\":\"虎林市\"},{\"code\":\"230382\",\"name\":\"密山市\"}]},{\"code\":\"230400\",\"name\":\"鹤岗市\",\"children\":[{\"code\":\"230402\",\"name\":\"向阳区\"},{\"code\":\"230403\",\"name\":\"工农区\"},{\"code\":\"230404\",\"name\":\"南山区\"},{\"code\":\"230405\",\"name\":\"兴安区\"},{\"code\":\"230406\",\"name\":\"东山区\"},{\"code\":\"230407\",\"name\":\"兴山区\"},{\"code\":\"230421\",\"name\":\"萝北县\"},{\"code\":\"230422\",\"name\":\"绥滨县\"}]},{\"code\":\"230500\",\"name\":\"双鸭山市\",\"children\":[{\"code\":\"230502\",\"name\":\"尖山区\"},{\"code\":\"230503\",\"name\":\"岭东区\"},{\"code\":\"230505\",\"name\":\"四方台区\"},{\"code\":\"230506\",\"name\":\"宝山区\"},{\"code\":\"230521\",\"name\":\"集贤县\"},{\"code\":\"230522\",\"name\":\"友谊县\"},{\"code\":\"230523\",\"name\":\"宝清县\"},{\"code\":\"230524\",\"name\":\"饶河县\"}]},{\"code\":\"230600\",\"name\":\"大庆市\",\"children\":[{\"code\":\"230602\",\"name\":\"萨尔图区\"},{\"code\":\"230603\",\"name\":\"龙凤区\"},{\"code\":\"230604\",\"name\":\"让胡路区\"},{\"code\":\"230605\",\"name\":\"红岗区\"},{\"code\":\"230606\",\"name\":\"大同区\"},{\"code\":\"230621\",\"name\":\"肇州县\"},{\"code\":\"230622\",\"name\":\"肇源县\"},{\"code\":\"230623\",\"name\":\"林甸县\"},{\"code\":\"230624\",\"name\":\"杜尔伯特蒙古族自治县\"},{\"code\":\"230671\",\"name\":\"大庆高新技术产业开发区\"}]},{\"code\":\"230700\",\"name\":\"伊春市\",\"children\":[{\"code\":\"230717\",\"name\":\"伊美区\"},{\"code\":\"230718\",\"name\":\"乌翠区\"},{\"code\":\"230719\",\"name\":\"友好区\"},{\"code\":\"230722\",\"name\":\"嘉荫县\"},{\"code\":\"230723\",\"name\":\"汤旺县\"},{\"code\":\"230724\",\"name\":\"丰林县\"},{\"code\":\"230725\",\"name\":\"大箐山县\"},{\"code\":\"230726\",\"name\":\"南岔县\"},{\"code\":\"230751\",\"name\":\"金林区\"},{\"code\":\"230781\",\"name\":\"铁力市\"}]},{\"code\":\"230800\",\"name\":\"佳木斯市\",\"children\":[{\"code\":\"230803\",\"name\":\"向阳区\"},{\"code\":\"230804\",\"name\":\"前进区\"},{\"code\":\"230805\",\"name\":\"东风区\"},{\"code\":\"230811\",\"name\":\"郊区\"},{\"code\":\"230822\",\"name\":\"桦南县\"},{\"code\":\"230826\",\"name\":\"桦川县\"},{\"code\":\"230828\",\"name\":\"汤原县\"},{\"code\":\"230881\",\"name\":\"同江市\"},{\"code\":\"230882\",\"name\":\"富锦市\"},{\"code\":\"230883\",\"name\":\"抚远市\"}]},{\"code\":\"230900\",\"name\":\"七台河市\",\"children\":[{\"code\":\"230902\",\"name\":\"新兴区\"},{\"code\":\"230903\",\"name\":\"桃山区\"},{\"code\":\"230904\",\"name\":\"茄子河区\"},{\"code\":\"230921\",\"name\":\"勃利县\"}]},{\"code\":\"231000\",\"name\":\"牡丹江市\",\"children\":[{\"code\":\"231002\",\"name\":\"东安区\"},{\"code\":\"231003\",\"name\":\"阳明区\"},{\"code\":\"231004\",\"name\":\"爱民区\"},{\"code\":\"231005\",\"name\":\"西安区\"},{\"code\":\"231025\",\"name\":\"林口县\"},{\"code\":\"231071\",\"name\":\"牡丹江经济技术开发区\"},{\"code\":\"231081\",\"name\":\"绥芬河市\"},{\"code\":\"231083\",\"name\":\"海林市\"},{\"code\":\"231084\",\"name\":\"宁安市\"},{\"code\":\"231085\",\"name\":\"穆棱市\"},{\"code\":\"231086\",\"name\":\"东宁市\"}]},{\"code\":\"231100\",\"name\":\"黑河市\",\"children\":[{\"code\":\"231102\",\"name\":\"爱辉区\"},{\"code\":\"231123\",\"name\":\"逊克县\"},{\"code\":\"231124\",\"name\":\"孙吴县\"},{\"code\":\"231181\",\"name\":\"北安市\"},{\"code\":\"231182\",\"name\":\"五大连池市\"},{\"code\":\"231183\",\"name\":\"嫩江市\"}]},{\"code\":\"231200\",\"name\":\"绥化市\",\"children\":[{\"code\":\"231202\",\"name\":\"北林区\"},{\"code\":\"231221\",\"name\":\"望奎县\"},{\"code\":\"231222\",\"name\":\"兰西县\"},{\"code\":\"231223\",\"name\":\"青冈县\"},{\"code\":\"231224\",\"name\":\"庆安县\"},{\"code\":\"231225\",\"name\":\"明水县\"},{\"code\":\"231226\",\"name\":\"绥棱县\"},{\"code\":\"231281\",\"name\":\"安达市\"},{\"code\":\"231282\",\"name\":\"肇东市\"},{\"code\":\"231283\",\"name\":\"海伦市\"}]},{\"code\":\"232700\",\"name\":\"大兴安岭地区\",\"children\":[{\"code\":\"232701\",\"name\":\"漠河市\"},{\"code\":\"232721\",\"name\":\"呼玛县\"},{\"code\":\"232722\",\"name\":\"塔河县\"},{\"code\":\"232761\",\"name\":\"加格达奇区\"},{\"code\":\"232762\",\"name\":\"松岭区\"},{\"code\":\"232763\",\"name\":\"新林区\"},{\"code\":\"232764\",\"name\":\"呼中区\"}]}]},{\"code\":\"310000\",\"name\":\"上海市\",\"children\":[{\"code\":\"310100\",\"name\":\"市辖区\",\"children\":[{\"code\":\"310101\",\"name\":\"黄浦区\"},{\"code\":\"310104\",\"name\":\"徐汇区\"},{\"code\":\"310105\",\"name\":\"长宁区\"},{\"code\":\"310106\",\"name\":\"静安区\"},{\"code\":\"310107\",\"name\":\"普陀区\"},{\"code\":\"310109\",\"name\":\"虹口区\"},{\"code\":\"310110\",\"name\":\"杨浦区\"},{\"code\":\"310112\",\"name\":\"闵行区\"},{\"code\":\"310113\",\"name\":\"宝山区\"},{\"code\":\"310114\",\"name\":\"嘉定区\"},{\"code\":\"310115\",\"name\":\"浦东新区\"},{\"code\":\"310116\",\"name\":\"金山区\"},{\"code\":\"310117\",\"name\":\"松江区\"},{\"code\":\"310118\",\"name\":\"青浦区\"},{\"code\":\"310120\",\"name\":\"奉贤区\"},{\"code\":\"310151\",\"name\":\"崇明区\"}]}]},{\"code\":\"320000\",\"name\":\"江苏省\",\"children\":[{\"code\":\"320100\",\"name\":\"南京市\",\"children\":[{\"code\":\"320102\",\"name\":\"玄武区\"},{\"code\":\"320104\",\"name\":\"秦淮区\"},{\"code\":\"320105\",\"name\":\"建邺区\"},{\"code\":\"320106\",\"name\":\"鼓楼区\"},{\"code\":\"320111\",\"name\":\"浦口区\"},{\"code\":\"320113\",\"name\":\"栖霞区\"},{\"code\":\"320114\",\"name\":\"雨花台区\"},{\"code\":\"320115\",\"name\":\"江宁区\"},{\"code\":\"320116\",\"name\":\"六合区\"},{\"code\":\"320117\",\"name\":\"溧水区\"},{\"code\":\"320118\",\"name\":\"高淳区\"}]},{\"code\":\"320200\",\"name\":\"无锡市\",\"children\":[{\"code\":\"320205\",\"name\":\"锡山区\"},{\"code\":\"320206\",\"name\":\"惠山区\"},{\"code\":\"320211\",\"name\":\"滨湖区\"},{\"code\":\"320213\",\"name\":\"梁溪区\"},{\"code\":\"320214\",\"name\":\"新吴区\"},{\"code\":\"320281\",\"name\":\"江阴市\"},{\"code\":\"320282\",\"name\":\"宜兴市\"}]},{\"code\":\"320300\",\"name\":\"徐州市\",\"children\":[{\"code\":\"320302\",\"name\":\"鼓楼区\"},{\"code\":\"320303\",\"name\":\"云龙区\"},{\"code\":\"320305\",\"name\":\"贾汪区\"},{\"code\":\"320311\",\"name\":\"泉山区\"},{\"code\":\"320312\",\"name\":\"铜山区\"},{\"code\":\"320321\",\"name\":\"丰县\"},{\"code\":\"320322\",\"name\":\"沛县\"},{\"code\":\"320324\",\"name\":\"睢宁县\"},{\"code\":\"320371\",\"name\":\"徐州经济技术开发区\"},{\"code\":\"320381\",\"name\":\"新沂市\"},{\"code\":\"320382\",\"name\":\"邳州市\"}]},{\"code\":\"320400\",\"name\":\"常州市\",\"children\":[{\"code\":\"320402\",\"name\":\"天宁区\"},{\"code\":\"320404\",\"name\":\"钟楼区\"},{\"code\":\"320411\",\"name\":\"新北区\"},{\"code\":\"320412\",\"name\":\"武进区\"},{\"code\":\"320413\",\"name\":\"金坛区\"},{\"code\":\"320481\",\"name\":\"溧阳市\"}]},{\"code\":\"320500\",\"name\":\"苏州市\",\"children\":[{\"code\":\"320505\",\"name\":\"虎丘区\"},{\"code\":\"320506\",\"name\":\"吴中区\"},{\"code\":\"320507\",\"name\":\"相城区\"},{\"code\":\"320508\",\"name\":\"姑苏区\"},{\"code\":\"320509\",\"name\":\"吴江区\"},{\"code\":\"320571\",\"name\":\"苏州工业园区\"},{\"code\":\"320581\",\"name\":\"常熟市\"},{\"code\":\"320582\",\"name\":\"张家港市\"},{\"code\":\"320583\",\"name\":\"昆山市\"},{\"code\":\"320585\",\"name\":\"太仓市\"}]},{\"code\":\"320600\",\"name\":\"南通市\",\"children\":[{\"code\":\"320612\",\"name\":\"通州区\"},{\"code\":\"320613\",\"name\":\"崇川区\"},{\"code\":\"320614\",\"name\":\"海门区\"},{\"code\":\"320623\",\"name\":\"如东县\"},{\"code\":\"320671\",\"name\":\"南通经济技术开发区\"},{\"code\":\"320681\",\"name\":\"启东市\"},{\"code\":\"320682\",\"name\":\"如皋市\"},{\"code\":\"320685\",\"name\":\"海安市\"}]},{\"code\":\"320700\",\"name\":\"连云港市\",\"children\":[{\"code\":\"320703\",\"name\":\"连云区\"},{\"code\":\"320706\",\"name\":\"海州区\"},{\"code\":\"320707\",\"name\":\"赣榆区\"},{\"code\":\"320722\",\"name\":\"东海县\"},{\"code\":\"320723\",\"name\":\"灌云县\"},{\"code\":\"320724\",\"name\":\"灌南县\"},{\"code\":\"320771\",\"name\":\"连云港经济技术开发区\"},{\"code\":\"320772\",\"name\":\"连云港高新技术产业开发区\"}]},{\"code\":\"320800\",\"name\":\"淮安市\",\"children\":[{\"code\":\"320803\",\"name\":\"淮安区\"},{\"code\":\"320804\",\"name\":\"淮阴区\"},{\"code\":\"320812\",\"name\":\"清江浦区\"},{\"code\":\"320813\",\"name\":\"洪泽区\"},{\"code\":\"320826\",\"name\":\"涟水县\"},{\"code\":\"320830\",\"name\":\"盱眙县\"},{\"code\":\"320831\",\"name\":\"金湖县\"},{\"code\":\"320871\",\"name\":\"淮安经济技术开发区\"}]},{\"code\":\"320900\",\"name\":\"盐城市\",\"children\":[{\"code\":\"320902\",\"name\":\"亭湖区\"},{\"code\":\"320903\",\"name\":\"盐都区\"},{\"code\":\"320904\",\"name\":\"大丰区\"},{\"code\":\"320921\",\"name\":\"响水县\"},{\"code\":\"320922\",\"name\":\"滨海县\"},{\"code\":\"320923\",\"name\":\"阜宁县\"},{\"code\":\"320924\",\"name\":\"射阳县\"},{\"code\":\"320925\",\"name\":\"建湖县\"},{\"code\":\"320971\",\"name\":\"盐城经济技术开发区\"},{\"code\":\"320981\",\"name\":\"东台市\"}]},{\"code\":\"321000\",\"name\":\"扬州市\",\"children\":[{\"code\":\"321002\",\"name\":\"广陵区\"},{\"code\":\"321003\",\"name\":\"邗江区\"},{\"code\":\"321012\",\"name\":\"江都区\"},{\"code\":\"321023\",\"name\":\"宝应县\"},{\"code\":\"321071\",\"name\":\"扬州经济技术开发区\"},{\"code\":\"321081\",\"name\":\"仪征市\"},{\"code\":\"321084\",\"name\":\"高邮市\"}]},{\"code\":\"321100\",\"name\":\"镇江市\",\"children\":[{\"code\":\"321102\",\"name\":\"京口区\"},{\"code\":\"321111\",\"name\":\"润州区\"},{\"code\":\"321112\",\"name\":\"丹徒区\"},{\"code\":\"321171\",\"name\":\"镇江新区\"},{\"code\":\"321181\",\"name\":\"丹阳市\"},{\"code\":\"321182\",\"name\":\"扬中市\"},{\"code\":\"321183\",\"name\":\"句容市\"}]},{\"code\":\"321200\",\"name\":\"泰州市\",\"children\":[{\"code\":\"321202\",\"name\":\"海陵区\"},{\"code\":\"321203\",\"name\":\"高港区\"},{\"code\":\"321204\",\"name\":\"姜堰区\"},{\"code\":\"321271\",\"name\":\"泰州医药高新技术产业开发区\"},{\"code\":\"321281\",\"name\":\"兴化市\"},{\"code\":\"321282\",\"name\":\"靖江市\"},{\"code\":\"321283\",\"name\":\"泰兴市\"}]},{\"code\":\"321300\",\"name\":\"宿迁市\",\"children\":[{\"code\":\"321302\",\"name\":\"宿城区\"},{\"code\":\"321311\",\"name\":\"宿豫区\"},{\"code\":\"321322\",\"name\":\"沭阳县\"},{\"code\":\"321323\",\"name\":\"泗阳县\"},{\"code\":\"321324\",\"name\":\"泗洪县\"},{\"code\":\"321371\",\"name\":\"宿迁经济技术开发区\"}]}]},{\"code\":\"330000\",\"name\":\"浙江省\",\"children\":[{\"code\":\"330100\",\"name\":\"杭州市\",\"children\":[{\"code\":\"330102\",\"name\":\"上城区\"},{\"code\":\"330105\",\"name\":\"拱墅区\"},{\"code\":\"330106\",\"name\":\"西湖区\"},{\"code\":\"330108\",\"name\":\"滨江区\"},{\"code\":\"330109\",\"name\":\"萧山区\"},{\"code\":\"330110\",\"name\":\"余杭区\"},{\"code\":\"330111\",\"name\":\"富阳区\"},{\"code\":\"330112\",\"name\":\"临安区\"},{\"code\":\"330113\",\"name\":\"临平区\"},{\"code\":\"330114\",\"name\":\"钱塘区\"},{\"code\":\"330122\",\"name\":\"桐庐县\"},{\"code\":\"330127\",\"name\":\"淳安县\"},{\"code\":\"330182\",\"name\":\"建德市\"}]},{\"code\":\"330200\",\"name\":\"宁波市\",\"children\":[{\"code\":\"330203\",\"name\":\"海曙区\"},{\"code\":\"330205\",\"name\":\"江北区\"},{\"code\":\"330206\",\"name\":\"北仑区\"},{\"code\":\"330211\",\"name\":\"镇海区\"},{\"code\":\"330212\",\"name\":\"鄞州区\"},{\"code\":\"330213\",\"name\":\"奉化区\"},{\"code\":\"330225\",\"name\":\"象山县\"},{\"code\":\"330226\",\"name\":\"宁海县\"},{\"code\":\"330281\",\"name\":\"余姚市\"},{\"code\":\"330282\",\"name\":\"慈溪市\"}]},{\"code\":\"330300\",\"name\":\"温州市\",\"children\":[{\"code\":\"330302\",\"name\":\"鹿城区\"},{\"code\":\"330303\",\"name\":\"龙湾区\"},{\"code\":\"330304\",\"name\":\"瓯海区\"},{\"code\":\"330305\",\"name\":\"洞头区\"},{\"code\":\"330324\",\"name\":\"永嘉县\"},{\"code\":\"330326\",\"name\":\"平阳县\"},{\"code\":\"330327\",\"name\":\"苍南县\"},{\"code\":\"330328\",\"name\":\"文成县\"},{\"code\":\"330329\",\"name\":\"泰顺县\"},{\"code\":\"330381\",\"name\":\"瑞安市\"},{\"code\":\"330382\",\"name\":\"乐清市\"},{\"code\":\"330383\",\"name\":\"龙港市\"}]},{\"code\":\"330400\",\"name\":\"嘉兴市\",\"children\":[{\"code\":\"330402\",\"name\":\"南湖区\"},{\"code\":\"330411\",\"name\":\"秀洲区\"},{\"code\":\"330421\",\"name\":\"嘉善县\"},{\"code\":\"330424\",\"name\":\"海盐县\"},{\"code\":\"330481\",\"name\":\"海宁市\"},{\"code\":\"330482\",\"name\":\"平湖市\"},{\"code\":\"330483\",\"name\":\"桐乡市\"}]},{\"code\":\"330500\",\"name\":\"湖州市\",\"children\":[{\"code\":\"330502\",\"name\":\"吴兴区\"},{\"code\":\"330503\",\"name\":\"南浔区\"},{\"code\":\"330521\",\"name\":\"德清县\"},{\"code\":\"330522\",\"name\":\"长兴县\"},{\"code\":\"330523\",\"name\":\"安吉县\"}]},{\"code\":\"330600\",\"name\":\"绍兴市\",\"children\":[{\"code\":\"330602\",\"name\":\"越城区\"},{\"code\":\"330603\",\"name\":\"柯桥区\"},{\"code\":\"330604\",\"name\":\"上虞区\"},{\"code\":\"330624\",\"name\":\"新昌县\"},{\"code\":\"330681\",\"name\":\"诸暨市\"},{\"code\":\"330683\",\"name\":\"嵊州市\"}]},{\"code\":\"330700\",\"name\":\"金华市\",\"children\":[{\"code\":\"330702\",\"name\":\"婺城区\"},{\"code\":\"330703\",\"name\":\"金东区\"},{\"code\":\"330723\",\"name\":\"武义县\"},{\"code\":\"330726\",\"name\":\"浦江县\"},{\"code\":\"330727\",\"name\":\"磐安县\"},{\"code\":\"330781\",\"name\":\"兰溪市\"},{\"code\":\"330782\",\"name\":\"义乌市\"},{\"code\":\"330783\",\"name\":\"东阳市\"},{\"code\":\"330784\",\"name\":\"永康市\"}]},{\"code\":\"330800\",\"name\":\"衢州市\",\"children\":[{\"code\":\"330802\",\"name\":\"柯城区\"},{\"code\":\"330803\",\"name\":\"衢江区\"},{\"code\":\"330822\",\"name\":\"常山县\"},{\"code\":\"330824\",\"name\":\"开化县\"},{\"code\":\"330825\",\"name\":\"龙游县\"},{\"code\":\"330881\",\"name\":\"江山市\"}]},{\"code\":\"330900\",\"name\":\"舟山市\",\"children\":[{\"code\":\"330902\",\"name\":\"定海区\"},{\"code\":\"330903\",\"name\":\"普陀区\"},{\"code\":\"330921\",\"name\":\"岱山县\"},{\"code\":\"330922\",\"name\":\"嵊泗县\"}]},{\"code\":\"331000\",\"name\":\"台州市\",\"children\":[{\"code\":\"331002\",\"name\":\"椒江区\"},{\"code\":\"331003\",\"name\":\"黄岩区\"},{\"code\":\"331004\",\"name\":\"路桥区\"},{\"code\":\"331022\",\"name\":\"三门县\"},{\"code\":\"331023\",\"name\":\"天台县\"},{\"code\":\"331024\",\"name\":\"仙居县\"},{\"code\":\"331081\",\"name\":\"温岭市\"},{\"code\":\"331082\",\"name\":\"临海市\"},{\"code\":\"331083\",\"name\":\"玉环市\"}]},{\"code\":\"331100\",\"name\":\"丽水市\",\"children\":[{\"code\":\"331102\",\"name\":\"莲都区\"},{\"code\":\"331121\",\"name\":\"青田县\"},{\"code\":\"331122\",\"name\":\"缙云县\"},{\"code\":\"331123\",\"name\":\"遂昌县\"},{\"code\":\"331124\",\"name\":\"松阳县\"},{\"code\":\"331125\",\"name\":\"云和县\"},{\"code\":\"331126\",\"name\":\"庆元县\"},{\"code\":\"331127\",\"name\":\"景宁畲族自治县\"},{\"code\":\"331181\",\"name\":\"龙泉市\"}]}]},{\"code\":\"340000\",\"name\":\"安徽省\",\"children\":[{\"code\":\"340100\",\"name\":\"合肥市\",\"children\":[{\"code\":\"340102\",\"name\":\"瑶海区\"},{\"code\":\"340103\",\"name\":\"庐阳区\"},{\"code\":\"340104\",\"name\":\"蜀山区\"},{\"code\":\"340111\",\"name\":\"包河区\"},{\"code\":\"340121\",\"name\":\"长丰县\"},{\"code\":\"340122\",\"name\":\"肥东县\"},{\"code\":\"340123\",\"name\":\"肥西县\"},{\"code\":\"340124\",\"name\":\"庐江县\"},{\"code\":\"340171\",\"name\":\"合肥高新技术产业开发区\"},{\"code\":\"340172\",\"name\":\"合肥经济技术开发区\"},{\"code\":\"340173\",\"name\":\"合肥新站高新技术产业开发区\"},{\"code\":\"340181\",\"name\":\"巢湖市\"}]},{\"code\":\"340200\",\"name\":\"芜湖市\",\"children\":[{\"code\":\"340202\",\"name\":\"镜湖区\"},{\"code\":\"340207\",\"name\":\"鸠江区\"},{\"code\":\"340209\",\"name\":\"弋江区\"},{\"code\":\"340210\",\"name\":\"湾沚区\"},{\"code\":\"340212\",\"name\":\"繁昌区\"},{\"code\":\"340223\",\"name\":\"南陵县\"},{\"code\":\"340271\",\"name\":\"芜湖经济技术开发区\"},{\"code\":\"340272\",\"name\":\"安徽芜湖三山经济开发区\"},{\"code\":\"340281\",\"name\":\"无为市\"}]},{\"code\":\"340300\",\"name\":\"蚌埠市\",\"children\":[{\"code\":\"340302\",\"name\":\"龙子湖区\"},{\"code\":\"340303\",\"name\":\"蚌山区\"},{\"code\":\"340304\",\"name\":\"禹会区\"},{\"code\":\"340311\",\"name\":\"淮上区\"},{\"code\":\"340321\",\"name\":\"怀远县\"},{\"code\":\"340322\",\"name\":\"五河县\"},{\"code\":\"340323\",\"name\":\"固镇县\"},{\"code\":\"340371\",\"name\":\"蚌埠市高新技术开发区\"},{\"code\":\"340372\",\"name\":\"蚌埠市经济开发区\"}]},{\"code\":\"340400\",\"name\":\"淮南市\",\"children\":[{\"code\":\"340402\",\"name\":\"大通区\"},{\"code\":\"340403\",\"name\":\"田家庵区\"},{\"code\":\"340404\",\"name\":\"谢家集区\"},{\"code\":\"340405\",\"name\":\"八公山区\"},{\"code\":\"340406\",\"name\":\"潘集区\"},{\"code\":\"340421\",\"name\":\"凤台县\"},{\"code\":\"340422\",\"name\":\"寿县\"}]},{\"code\":\"340500\",\"name\":\"马鞍山市\",\"children\":[{\"code\":\"340503\",\"name\":\"花山区\"},{\"code\":\"340504\",\"name\":\"雨山区\"},{\"code\":\"340506\",\"name\":\"博望区\"},{\"code\":\"340521\",\"name\":\"当涂县\"},{\"code\":\"340522\",\"name\":\"含山县\"},{\"code\":\"340523\",\"name\":\"和县\"}]},{\"code\":\"340600\",\"name\":\"淮北市\",\"children\":[{\"code\":\"340602\",\"name\":\"杜集区\"},{\"code\":\"340603\",\"name\":\"相山区\"},{\"code\":\"340604\",\"name\":\"烈山区\"},{\"code\":\"340621\",\"name\":\"濉溪县\"}]},{\"code\":\"340700\",\"name\":\"铜陵市\",\"children\":[{\"code\":\"340705\",\"name\":\"铜官区\"},{\"code\":\"340706\",\"name\":\"义安区\"},{\"code\":\"340711\",\"name\":\"郊区\"},{\"code\":\"340722\",\"name\":\"枞阳县\"}]},{\"code\":\"340800\",\"name\":\"安庆市\",\"children\":[{\"code\":\"340802\",\"name\":\"迎江区\"},{\"code\":\"340803\",\"name\":\"大观区\"},{\"code\":\"340811\",\"name\":\"宜秀区\"},{\"code\":\"340822\",\"name\":\"怀宁县\"},{\"code\":\"340825\",\"name\":\"太湖县\"},{\"code\":\"340826\",\"name\":\"宿松县\"},{\"code\":\"340827\",\"name\":\"望江县\"},{\"code\":\"340828\",\"name\":\"岳西县\"},{\"code\":\"340871\",\"name\":\"安徽安庆经济开发区\"},{\"code\":\"340881\",\"name\":\"桐城市\"},{\"code\":\"340882\",\"name\":\"潜山市\"}]},{\"code\":\"341000\",\"name\":\"黄山市\",\"children\":[{\"code\":\"341002\",\"name\":\"屯溪区\"},{\"code\":\"341003\",\"name\":\"黄山区\"},{\"code\":\"341004\",\"name\":\"徽州区\"},{\"code\":\"341021\",\"name\":\"歙县\"},{\"code\":\"341022\",\"name\":\"休宁县\"},{\"code\":\"341023\",\"name\":\"黟县\"},{\"code\":\"341024\",\"name\":\"祁门县\"}]},{\"code\":\"341100\",\"name\":\"滁州市\",\"children\":[{\"code\":\"341102\",\"name\":\"琅琊区\"},{\"code\":\"341103\",\"name\":\"南谯区\"},{\"code\":\"341122\",\"name\":\"来安县\"},{\"code\":\"341124\",\"name\":\"全椒县\"},{\"code\":\"341125\",\"name\":\"定远县\"},{\"code\":\"341126\",\"name\":\"凤阳县\"},{\"code\":\"341171\",\"name\":\"中新苏滁高新技术产业开发区\"},{\"code\":\"341172\",\"name\":\"滁州经济技术开发区\"},{\"code\":\"341181\",\"name\":\"天长市\"},{\"code\":\"341182\",\"name\":\"明光市\"}]},{\"code\":\"341200\",\"name\":\"阜阳市\",\"children\":[{\"code\":\"341202\",\"name\":\"颍州区\"},{\"code\":\"341203\",\"name\":\"颍东区\"},{\"code\":\"341204\",\"name\":\"颍泉区\"},{\"code\":\"341221\",\"name\":\"临泉县\"},{\"code\":\"341222\",\"name\":\"太和县\"},{\"code\":\"341225\",\"name\":\"阜南县\"},{\"code\":\"341226\",\"name\":\"颍上县\"},{\"code\":\"341271\",\"name\":\"阜阳合肥现代产业园区\"},{\"code\":\"341272\",\"name\":\"阜阳经济技术开发区\"},{\"code\":\"341282\",\"name\":\"界首市\"}]},{\"code\":\"341300\",\"name\":\"宿州市\",\"children\":[{\"code\":\"341302\",\"name\":\"埇桥区\"},{\"code\":\"341321\",\"name\":\"砀山县\"},{\"code\":\"341322\",\"name\":\"萧县\"},{\"code\":\"341323\",\"name\":\"灵璧县\"},{\"code\":\"341324\",\"name\":\"泗县\"},{\"code\":\"341371\",\"name\":\"宿州马鞍山现代产业园区\"},{\"code\":\"341372\",\"name\":\"宿州经济技术开发区\"}]},{\"code\":\"341500\",\"name\":\"六安市\",\"children\":[{\"code\":\"341502\",\"name\":\"金安区\"},{\"code\":\"341503\",\"name\":\"裕安区\"},{\"code\":\"341504\",\"name\":\"叶集区\"},{\"code\":\"341522\",\"name\":\"霍邱县\"},{\"code\":\"341523\",\"name\":\"舒城县\"},{\"code\":\"341524\",\"name\":\"金寨县\"},{\"code\":\"341525\",\"name\":\"霍山县\"}]},{\"code\":\"341600\",\"name\":\"亳州市\",\"children\":[{\"code\":\"341602\",\"name\":\"谯城区\"},{\"code\":\"341621\",\"name\":\"涡阳县\"},{\"code\":\"341622\",\"name\":\"蒙城县\"},{\"code\":\"341623\",\"name\":\"利辛县\"}]},{\"code\":\"341700\",\"name\":\"池州市\",\"children\":[{\"code\":\"341702\",\"name\":\"贵池区\"},{\"code\":\"341721\",\"name\":\"东至县\"},{\"code\":\"341722\",\"name\":\"石台县\"},{\"code\":\"341723\",\"name\":\"青阳县\"}]},{\"code\":\"341800\",\"name\":\"宣城市\",\"children\":[{\"code\":\"341802\",\"name\":\"宣州区\"},{\"code\":\"341821\",\"name\":\"郎溪县\"},{\"code\":\"341823\",\"name\":\"泾县\"},{\"code\":\"341824\",\"name\":\"绩溪县\"},{\"code\":\"341825\",\"name\":\"旌德县\"},{\"code\":\"341871\",\"name\":\"宣城市经济开发区\"},{\"code\":\"341881\",\"name\":\"宁国市\"},{\"code\":\"341882\",\"name\":\"广德市\"}]}]},{\"code\":\"350000\",\"name\":\"福建省\",\"children\":[{\"code\":\"350100\",\"name\":\"福州市\",\"children\":[{\"code\":\"350102\",\"name\":\"鼓楼区\"},{\"code\":\"350103\",\"name\":\"台江区\"},{\"code\":\"350104\",\"name\":\"仓山区\"},{\"code\":\"350105\",\"name\":\"马尾区\"},{\"code\":\"350111\",\"name\":\"晋安区\"},{\"code\":\"350112\",\"name\":\"长乐区\"},{\"code\":\"350121\",\"name\":\"闽侯县\"},{\"code\":\"350122\",\"name\":\"连江县\"},{\"code\":\"350123\",\"name\":\"罗源县\"},{\"code\":\"350124\",\"name\":\"闽清县\"},{\"code\":\"350125\",\"name\":\"永泰县\"},{\"code\":\"350128\",\"name\":\"平潭县\"},{\"code\":\"350181\",\"name\":\"福清市\"}]},{\"code\":\"350200\",\"name\":\"厦门市\",\"children\":[{\"code\":\"350203\",\"name\":\"思明区\"},{\"code\":\"350205\",\"name\":\"海沧区\"},{\"code\":\"350206\",\"name\":\"湖里区\"},{\"code\":\"350211\",\"name\":\"集美区\"},{\"code\":\"350212\",\"name\":\"同安区\"},{\"code\":\"350213\",\"name\":\"翔安区\"}]},{\"code\":\"350300\",\"name\":\"莆田市\",\"children\":[{\"code\":\"350302\",\"name\":\"城厢区\"},{\"code\":\"350303\",\"name\":\"涵江区\"},{\"code\":\"350304\",\"name\":\"荔城区\"},{\"code\":\"350305\",\"name\":\"秀屿区\"},{\"code\":\"350322\",\"name\":\"仙游县\"}]},{\"code\":\"350400\",\"name\":\"三明市\",\"children\":[{\"code\":\"350404\",\"name\":\"三元区\"},{\"code\":\"350405\",\"name\":\"沙县区\"},{\"code\":\"350421\",\"name\":\"明溪县\"},{\"code\":\"350423\",\"name\":\"清流县\"},{\"code\":\"350424\",\"name\":\"宁化县\"},{\"code\":\"350425\",\"name\":\"大田县\"},{\"code\":\"350426\",\"name\":\"尤溪县\"},{\"code\":\"350428\",\"name\":\"将乐县\"},{\"code\":\"350429\",\"name\":\"泰宁县\"},{\"code\":\"350430\",\"name\":\"建宁县\"},{\"code\":\"350481\",\"name\":\"永安市\"}]},{\"code\":\"350500\",\"name\":\"泉州市\",\"children\":[{\"code\":\"350502\",\"name\":\"鲤城区\"},{\"code\":\"350503\",\"name\":\"丰泽区\"},{\"code\":\"350504\",\"name\":\"洛江区\"},{\"code\":\"350505\",\"name\":\"泉港区\"},{\"code\":\"350521\",\"name\":\"惠安县\"},{\"code\":\"350524\",\"name\":\"安溪县\"},{\"code\":\"350525\",\"name\":\"永春县\"},{\"code\":\"350526\",\"name\":\"德化县\"},{\"code\":\"350527\",\"name\":\"金门县\"},{\"code\":\"350581\",\"name\":\"石狮市\"},{\"code\":\"350582\",\"name\":\"晋江市\"},{\"code\":\"350583\",\"name\":\"南安市\"}]},{\"code\":\"350600\",\"name\":\"漳州市\",\"children\":[{\"code\":\"350602\",\"name\":\"芗城区\"},{\"code\":\"350603\",\"name\":\"龙文区\"},{\"code\":\"350604\",\"name\":\"龙海区\"},{\"code\":\"350605\",\"name\":\"长泰区\"},{\"code\":\"350622\",\"name\":\"云霄县\"},{\"code\":\"350623\",\"name\":\"漳浦县\"},{\"code\":\"350624\",\"name\":\"诏安县\"},{\"code\":\"350626\",\"name\":\"东山县\"},{\"code\":\"350627\",\"name\":\"南靖县\"},{\"code\":\"350628\",\"name\":\"平和县\"},{\"code\":\"350629\",\"name\":\"华安县\"}]},{\"code\":\"350700\",\"name\":\"南平市\",\"children\":[{\"code\":\"350702\",\"name\":\"延平区\"},{\"code\":\"350703\",\"name\":\"建阳区\"},{\"code\":\"350721\",\"name\":\"顺昌县\"},{\"code\":\"350722\",\"name\":\"浦城县\"},{\"code\":\"350723\",\"name\":\"光泽县\"},{\"code\":\"350724\",\"name\":\"松溪县\"},{\"code\":\"350725\",\"name\":\"政和县\"},{\"code\":\"350781\",\"name\":\"邵武市\"},{\"code\":\"350782\",\"name\":\"武夷山市\"},{\"code\":\"350783\",\"name\":\"建瓯市\"}]},{\"code\":\"350800\",\"name\":\"龙岩市\",\"children\":[{\"code\":\"350802\",\"name\":\"新罗区\"},{\"code\":\"350803\",\"name\":\"永定区\"},{\"code\":\"350821\",\"name\":\"长汀县\"},{\"code\":\"350823\",\"name\":\"上杭县\"},{\"code\":\"350824\",\"name\":\"武平县\"},{\"code\":\"350825\",\"name\":\"连城县\"},{\"code\":\"350881\",\"name\":\"漳平市\"}]},{\"code\":\"350900\",\"name\":\"宁德市\",\"children\":[{\"code\":\"350902\",\"name\":\"蕉城区\"},{\"code\":\"350921\",\"name\":\"霞浦县\"},{\"code\":\"350922\",\"name\":\"古田县\"},{\"code\":\"350923\",\"name\":\"屏南县\"},{\"code\":\"350924\",\"name\":\"寿宁县\"},{\"code\":\"350925\",\"name\":\"周宁县\"},{\"code\":\"350926\",\"name\":\"柘荣县\"},{\"code\":\"350981\",\"name\":\"福安市\"},{\"code\":\"350982\",\"name\":\"福鼎市\"}]}]},{\"code\":\"360000\",\"name\":\"江西省\",\"children\":[{\"code\":\"360100\",\"name\":\"南昌市\",\"children\":[{\"code\":\"360102\",\"name\":\"东湖区\"},{\"code\":\"360103\",\"name\":\"西湖区\"},{\"code\":\"360104\",\"name\":\"青云谱区\"},{\"code\":\"360111\",\"name\":\"青山湖区\"},{\"code\":\"360112\",\"name\":\"新建区\"},{\"code\":\"360113\",\"name\":\"红谷滩区\"},{\"code\":\"360121\",\"name\":\"南昌县\"},{\"code\":\"360123\",\"name\":\"安义县\"},{\"code\":\"360124\",\"name\":\"进贤县\"}]},{\"code\":\"360200\",\"name\":\"景德镇市\",\"children\":[{\"code\":\"360202\",\"name\":\"昌江区\"},{\"code\":\"360203\",\"name\":\"珠山区\"},{\"code\":\"360222\",\"name\":\"浮梁县\"},{\"code\":\"360281\",\"name\":\"乐平市\"}]},{\"code\":\"360300\",\"name\":\"萍乡市\",\"children\":[{\"code\":\"360302\",\"name\":\"安源区\"},{\"code\":\"360313\",\"name\":\"湘东区\"},{\"code\":\"360321\",\"name\":\"莲花县\"},{\"code\":\"360322\",\"name\":\"上栗县\"},{\"code\":\"360323\",\"name\":\"芦溪县\"}]},{\"code\":\"360400\",\"name\":\"九江市\",\"children\":[{\"code\":\"360402\",\"name\":\"濂溪区\"},{\"code\":\"360403\",\"name\":\"浔阳区\"},{\"code\":\"360404\",\"name\":\"柴桑区\"},{\"code\":\"360423\",\"name\":\"武宁县\"},{\"code\":\"360424\",\"name\":\"修水县\"},{\"code\":\"360425\",\"name\":\"永修县\"},{\"code\":\"360426\",\"name\":\"德安县\"},{\"code\":\"360428\",\"name\":\"都昌县\"},{\"code\":\"360429\",\"name\":\"湖口县\"},{\"code\":\"360430\",\"name\":\"彭泽县\"},{\"code\":\"360481\",\"name\":\"瑞昌市\"},{\"code\":\"360482\",\"name\":\"共青城市\"},{\"code\":\"360483\",\"name\":\"庐山市\"}]},{\"code\":\"360500\",\"name\":\"新余市\",\"children\":[{\"code\":\"360502\",\"name\":\"渝水区\"},{\"code\":\"360521\",\"name\":\"分宜县\"}]},{\"code\":\"360600\",\"name\":\"鹰潭市\",\"children\":[{\"code\":\"360602\",\"name\":\"月湖区\"},{\"code\":\"360603\",\"name\":\"余江区\"},{\"code\":\"360681\",\"name\":\"贵溪市\"}]},{\"code\":\"360700\",\"name\":\"赣州市\",\"children\":[{\"code\":\"360702\",\"name\":\"章贡区\"},{\"code\":\"360703\",\"name\":\"南康区\"},{\"code\":\"360704\",\"name\":\"赣县区\"},{\"code\":\"360722\",\"name\":\"信丰县\"},{\"code\":\"360723\",\"name\":\"大余县\"},{\"code\":\"360724\",\"name\":\"上犹县\"},{\"code\":\"360725\",\"name\":\"崇义县\"},{\"code\":\"360726\",\"name\":\"安远县\"},{\"code\":\"360728\",\"name\":\"定南县\"},{\"code\":\"360729\",\"name\":\"全南县\"},{\"code\":\"360730\",\"name\":\"宁都县\"},{\"code\":\"360731\",\"name\":\"于都县\"},{\"code\":\"360732\",\"name\":\"兴国县\"},{\"code\":\"360733\",\"name\":\"会昌县\"},{\"code\":\"360734\",\"name\":\"寻乌县\"},{\"code\":\"360735\",\"name\":\"石城县\"},{\"code\":\"360781\",\"name\":\"瑞金市\"},{\"code\":\"360783\",\"name\":\"龙南市\"}]},{\"code\":\"360800\",\"name\":\"吉安市\",\"children\":[{\"code\":\"360802\",\"name\":\"吉州区\"},{\"code\":\"360803\",\"name\":\"青原区\"},{\"code\":\"360821\",\"name\":\"吉安县\"},{\"code\":\"360822\",\"name\":\"吉水县\"},{\"code\":\"360823\",\"name\":\"峡江县\"},{\"code\":\"360824\",\"name\":\"新干县\"},{\"code\":\"360825\",\"name\":\"永丰县\"},{\"code\":\"360826\",\"name\":\"泰和县\"},{\"code\":\"360827\",\"name\":\"遂川县\"},{\"code\":\"360828\",\"name\":\"万安县\"},{\"code\":\"360829\",\"name\":\"安福县\"},{\"code\":\"360830\",\"name\":\"永新县\"},{\"code\":\"360881\",\"name\":\"井冈山市\"}]},{\"code\":\"360900\",\"name\":\"宜春市\",\"children\":[{\"code\":\"360902\",\"name\":\"袁州区\"},{\"code\":\"360921\",\"name\":\"奉新县\"},{\"code\":\"360922\",\"name\":\"万载县\"},{\"code\":\"360923\",\"name\":\"上高县\"},{\"code\":\"360924\",\"name\":\"宜丰县\"},{\"code\":\"360925\",\"name\":\"靖安县\"},{\"code\":\"360926\",\"name\":\"铜鼓县\"},{\"code\":\"360981\",\"name\":\"丰城市\"},{\"code\":\"360982\",\"name\":\"樟树市\"},{\"code\":\"360983\",\"name\":\"高安市\"}]},{\"code\":\"361000\",\"name\":\"抚州市\",\"children\":[{\"code\":\"361002\",\"name\":\"临川区\"},{\"code\":\"361003\",\"name\":\"东乡区\"},{\"code\":\"361021\",\"name\":\"南城县\"},{\"code\":\"361022\",\"name\":\"黎川县\"},{\"code\":\"361023\",\"name\":\"南丰县\"},{\"code\":\"361024\",\"name\":\"崇仁县\"},{\"code\":\"361025\",\"name\":\"乐安县\"},{\"code\":\"361026\",\"name\":\"宜黄县\"},{\"code\":\"361027\",\"name\":\"金溪县\"},{\"code\":\"361028\",\"name\":\"资溪县\"},{\"code\":\"361030\",\"name\":\"广昌县\"}]},{\"code\":\"361100\",\"name\":\"上饶市\",\"children\":[{\"code\":\"361102\",\"name\":\"信州区\"},{\"code\":\"361103\",\"name\":\"广丰区\"},{\"code\":\"361104\",\"name\":\"广信区\"},{\"code\":\"361123\",\"name\":\"玉山县\"},{\"code\":\"361124\",\"name\":\"铅山县\"},{\"code\":\"361125\",\"name\":\"横峰县\"},{\"code\":\"361126\",\"name\":\"弋阳县\"},{\"code\":\"361127\",\"name\":\"余干县\"},{\"code\":\"361128\",\"name\":\"鄱阳县\"},{\"code\":\"361129\",\"name\":\"万年县\"},{\"code\":\"361130\",\"name\":\"婺源县\"},{\"code\":\"361181\",\"name\":\"德兴市\"}]}]},{\"code\":\"370000\",\"name\":\"山东省\",\"children\":[{\"code\":\"370100\",\"name\":\"济南市\",\"children\":[{\"code\":\"370102\",\"name\":\"历下区\"},{\"code\":\"370103\",\"name\":\"市中区\"},{\"code\":\"370104\",\"name\":\"槐荫区\"},{\"code\":\"370105\",\"name\":\"天桥区\"},{\"code\":\"370112\",\"name\":\"历城区\"},{\"code\":\"370113\",\"name\":\"长清区\"},{\"code\":\"370114\",\"name\":\"章丘区\"},{\"code\":\"370115\",\"name\":\"济阳区\"},{\"code\":\"370116\",\"name\":\"莱芜区\"},{\"code\":\"370117\",\"name\":\"钢城区\"},{\"code\":\"370124\",\"name\":\"平阴县\"},{\"code\":\"370126\",\"name\":\"商河县\"},{\"code\":\"370171\",\"name\":\"济南高新技术产业开发区\"}]},{\"code\":\"370200\",\"name\":\"青岛市\",\"children\":[{\"code\":\"370202\",\"name\":\"市南区\"},{\"code\":\"370203\",\"name\":\"市北区\"},{\"code\":\"370211\",\"name\":\"黄岛区\"},{\"code\":\"370212\",\"name\":\"崂山区\"},{\"code\":\"370213\",\"name\":\"李沧区\"},{\"code\":\"370214\",\"name\":\"城阳区\"},{\"code\":\"370215\",\"name\":\"即墨区\"},{\"code\":\"370271\",\"name\":\"青岛高新技术产业开发区\"},{\"code\":\"370281\",\"name\":\"胶州市\"},{\"code\":\"370283\",\"name\":\"平度市\"},{\"code\":\"370285\",\"name\":\"莱西市\"}]},{\"code\":\"370300\",\"name\":\"淄博市\",\"children\":[{\"code\":\"370302\",\"name\":\"淄川区\"},{\"code\":\"370303\",\"name\":\"张店区\"},{\"code\":\"370304\",\"name\":\"博山区\"},{\"code\":\"370305\",\"name\":\"临淄区\"},{\"code\":\"370306\",\"name\":\"周村区\"},{\"code\":\"370321\",\"name\":\"桓台县\"},{\"code\":\"370322\",\"name\":\"高青县\"},{\"code\":\"370323\",\"name\":\"沂源县\"}]},{\"code\":\"370400\",\"name\":\"枣庄市\",\"children\":[{\"code\":\"370402\",\"name\":\"市中区\"},{\"code\":\"370403\",\"name\":\"薛城区\"},{\"code\":\"370404\",\"name\":\"峄城区\"},{\"code\":\"370405\",\"name\":\"台儿庄区\"},{\"code\":\"370406\",\"name\":\"山亭区\"},{\"code\":\"370481\",\"name\":\"滕州市\"}]},{\"code\":\"370500\",\"name\":\"东营市\",\"children\":[{\"code\":\"370502\",\"name\":\"东营区\"},{\"code\":\"370503\",\"name\":\"河口区\"},{\"code\":\"370505\",\"name\":\"垦利区\"},{\"code\":\"370522\",\"name\":\"利津县\"},{\"code\":\"370523\",\"name\":\"广饶县\"},{\"code\":\"370571\",\"name\":\"东营经济技术开发区\"},{\"code\":\"370572\",\"name\":\"东营港经济开发区\"}]},{\"code\":\"370600\",\"name\":\"烟台市\",\"children\":[{\"code\":\"370602\",\"name\":\"芝罘区\"},{\"code\":\"370611\",\"name\":\"福山区\"},{\"code\":\"370612\",\"name\":\"牟平区\"},{\"code\":\"370613\",\"name\":\"莱山区\"},{\"code\":\"370614\",\"name\":\"蓬莱区\"},{\"code\":\"370671\",\"name\":\"烟台高新技术产业开发区\"},{\"code\":\"370672\",\"name\":\"烟台经济技术开发区\"},{\"code\":\"370681\",\"name\":\"龙口市\"},{\"code\":\"370682\",\"name\":\"莱阳市\"},{\"code\":\"370683\",\"name\":\"莱州市\"},{\"code\":\"370685\",\"name\":\"招远市\"},{\"code\":\"370686\",\"name\":\"栖霞市\"},{\"code\":\"370687\",\"name\":\"海阳市\"}]},{\"code\":\"370700\",\"name\":\"潍坊市\",\"children\":[{\"code\":\"370702\",\"name\":\"潍城区\"},{\"code\":\"370703\",\"name\":\"寒亭区\"},{\"code\":\"370704\",\"name\":\"坊子区\"},{\"code\":\"370705\",\"name\":\"奎文区\"},{\"code\":\"370724\",\"name\":\"临朐县\"},{\"code\":\"370725\",\"name\":\"昌乐县\"},{\"code\":\"370772\",\"name\":\"潍坊滨海经济技术开发区\"},{\"code\":\"370781\",\"name\":\"青州市\"},{\"code\":\"370782\",\"name\":\"诸城市\"},{\"code\":\"370783\",\"name\":\"寿光市\"},{\"code\":\"370784\",\"name\":\"安丘市\"},{\"code\":\"370785\",\"name\":\"高密市\"},{\"code\":\"370786\",\"name\":\"昌邑市\"}]},{\"code\":\"370800\",\"name\":\"济宁市\",\"children\":[{\"code\":\"370811\",\"name\":\"任城区\"},{\"code\":\"370812\",\"name\":\"兖州区\"},{\"code\":\"370826\",\"name\":\"微山县\"},{\"code\":\"370827\",\"name\":\"鱼台县\"},{\"code\":\"370828\",\"name\":\"金乡县\"},{\"code\":\"370829\",\"name\":\"嘉祥县\"},{\"code\":\"370830\",\"name\":\"汶上县\"},{\"code\":\"370831\",\"name\":\"泗水县\"},{\"code\":\"370832\",\"name\":\"梁山县\"},{\"code\":\"370871\",\"name\":\"济宁高新技术产业开发区\"},{\"code\":\"370881\",\"name\":\"曲阜市\"},{\"code\":\"370883\",\"name\":\"邹城市\"}]},{\"code\":\"370900\",\"name\":\"泰安市\",\"children\":[{\"code\":\"370902\",\"name\":\"泰山区\"},{\"code\":\"370911\",\"name\":\"岱岳区\"},{\"code\":\"370921\",\"name\":\"宁阳县\"},{\"code\":\"370923\",\"name\":\"东平县\"},{\"code\":\"370982\",\"name\":\"新泰市\"},{\"code\":\"370983\",\"name\":\"肥城市\"}]},{\"code\":\"371000\",\"name\":\"威海市\",\"children\":[{\"code\":\"371002\",\"name\":\"环翠区\"},{\"code\":\"371003\",\"name\":\"文登区\"},{\"code\":\"371071\",\"name\":\"威海火炬高技术产业开发区\"},{\"code\":\"371072\",\"name\":\"威海经济技术开发区\"},{\"code\":\"371073\",\"name\":\"威海临港经济技术开发区\"},{\"code\":\"371082\",\"name\":\"荣成市\"},{\"code\":\"371083\",\"name\":\"乳山市\"}]},{\"code\":\"371100\",\"name\":\"日照市\",\"children\":[{\"code\":\"371102\",\"name\":\"东港区\"},{\"code\":\"371103\",\"name\":\"岚山区\"},{\"code\":\"371121\",\"name\":\"五莲县\"},{\"code\":\"371122\",\"name\":\"莒县\"},{\"code\":\"371171\",\"name\":\"日照经济技术开发区\"}]},{\"code\":\"371300\",\"name\":\"临沂市\",\"children\":[{\"code\":\"371302\",\"name\":\"兰山区\"},{\"code\":\"371311\",\"name\":\"罗庄区\"},{\"code\":\"371312\",\"name\":\"河东区\"},{\"code\":\"371321\",\"name\":\"沂南县\"},{\"code\":\"371322\",\"name\":\"郯城县\"},{\"code\":\"371323\",\"name\":\"沂水县\"},{\"code\":\"371324\",\"name\":\"兰陵县\"},{\"code\":\"371325\",\"name\":\"费县\"},{\"code\":\"371326\",\"name\":\"平邑县\"},{\"code\":\"371327\",\"name\":\"莒南县\"},{\"code\":\"371328\",\"name\":\"蒙阴县\"},{\"code\":\"371329\",\"name\":\"临沭县\"},{\"code\":\"371371\",\"name\":\"临沂高新技术产业开发区\"}]},{\"code\":\"371400\",\"name\":\"德州市\",\"children\":[{\"code\":\"371402\",\"name\":\"德城区\"},{\"code\":\"371403\",\"name\":\"陵城区\"},{\"code\":\"371422\",\"name\":\"宁津县\"},{\"code\":\"371423\",\"name\":\"庆云县\"},{\"code\":\"371424\",\"name\":\"临邑县\"},{\"code\":\"371425\",\"name\":\"齐河县\"},{\"code\":\"371426\",\"name\":\"平原县\"},{\"code\":\"371427\",\"name\":\"夏津县\"},{\"code\":\"371428\",\"name\":\"武城县\"},{\"code\":\"371471\",\"name\":\"德州天衢新区\"},{\"code\":\"371481\",\"name\":\"乐陵市\"},{\"code\":\"371482\",\"name\":\"禹城市\"}]},{\"code\":\"371500\",\"name\":\"聊城市\",\"children\":[{\"code\":\"371502\",\"name\":\"东昌府区\"},{\"code\":\"371503\",\"name\":\"茌平区\"},{\"code\":\"371521\",\"name\":\"阳谷县\"},{\"code\":\"371522\",\"name\":\"莘县\"},{\"code\":\"371524\",\"name\":\"东阿县\"},{\"code\":\"371525\",\"name\":\"冠县\"},{\"code\":\"371526\",\"name\":\"高唐县\"},{\"code\":\"371581\",\"name\":\"临清市\"}]},{\"code\":\"371600\",\"name\":\"滨州市\",\"children\":[{\"code\":\"371602\",\"name\":\"滨城区\"},{\"code\":\"371603\",\"name\":\"沾化区\"},{\"code\":\"371621\",\"name\":\"惠民县\"},{\"code\":\"371622\",\"name\":\"阳信县\"},{\"code\":\"371623\",\"name\":\"无棣县\"},{\"code\":\"371625\",\"name\":\"博兴县\"},{\"code\":\"371681\",\"name\":\"邹平市\"}]},{\"code\":\"371700\",\"name\":\"菏泽市\",\"children\":[{\"code\":\"371702\",\"name\":\"牡丹区\"},{\"code\":\"371703\",\"name\":\"定陶区\"},{\"code\":\"371721\",\"name\":\"曹县\"},{\"code\":\"371722\",\"name\":\"单县\"},{\"code\":\"371723\",\"name\":\"成武县\"},{\"code\":\"371724\",\"name\":\"巨野县\"},{\"code\":\"371725\",\"name\":\"郓城县\"},{\"code\":\"371726\",\"name\":\"鄄城县\"},{\"code\":\"371728\",\"name\":\"东明县\"},{\"code\":\"371771\",\"name\":\"菏泽经济技术开发区\"},{\"code\":\"371772\",\"name\":\"菏泽高新技术开发区\"}]}]},{\"code\":\"410000\",\"name\":\"河南省\",\"children\":[{\"code\":\"410100\",\"name\":\"郑州市\",\"children\":[{\"code\":\"410102\",\"name\":\"中原区\"},{\"code\":\"410103\",\"name\":\"二七区\"},{\"code\":\"410104\",\"name\":\"管城回族区\"},{\"code\":\"410105\",\"name\":\"金水区\"},{\"code\":\"410106\",\"name\":\"上街区\"},{\"code\":\"410108\",\"name\":\"惠济区\"},{\"code\":\"410122\",\"name\":\"中牟县\"},{\"code\":\"410171\",\"name\":\"郑州经济技术开发区\"},{\"code\":\"410172\",\"name\":\"郑州高新技术产业开发区\"},{\"code\":\"410173\",\"name\":\"郑州航空港经济综合实验区\"},{\"code\":\"410181\",\"name\":\"巩义市\"},{\"code\":\"410182\",\"name\":\"荥阳市\"},{\"code\":\"410183\",\"name\":\"新密市\"},{\"code\":\"410184\",\"name\":\"新郑市\"},{\"code\":\"410185\",\"name\":\"登封市\"}]},{\"code\":\"410200\",\"name\":\"开封市\",\"children\":[{\"code\":\"410202\",\"name\":\"龙亭区\"},{\"code\":\"410203\",\"name\":\"顺河回族区\"},{\"code\":\"410204\",\"name\":\"鼓楼区\"},{\"code\":\"410205\",\"name\":\"禹王台区\"},{\"code\":\"410212\",\"name\":\"祥符区\"},{\"code\":\"410221\",\"name\":\"杞县\"},{\"code\":\"410222\",\"name\":\"通许县\"},{\"code\":\"410223\",\"name\":\"尉氏县\"},{\"code\":\"410225\",\"name\":\"兰考县\"}]},{\"code\":\"410300\",\"name\":\"洛阳市\",\"children\":[{\"code\":\"410302\",\"name\":\"老城区\"},{\"code\":\"410303\",\"name\":\"西工区\"},{\"code\":\"410304\",\"name\":\"瀍河回族区\"},{\"code\":\"410305\",\"name\":\"涧西区\"},{\"code\":\"410307\",\"name\":\"偃师区\"},{\"code\":\"410308\",\"name\":\"孟津区\"},{\"code\":\"410311\",\"name\":\"洛龙区\"},{\"code\":\"410323\",\"name\":\"新安县\"},{\"code\":\"410324\",\"name\":\"栾川县\"},{\"code\":\"410325\",\"name\":\"嵩县\"},{\"code\":\"410326\",\"name\":\"汝阳县\"},{\"code\":\"410327\",\"name\":\"宜阳县\"},{\"code\":\"410328\",\"name\":\"洛宁县\"},{\"code\":\"410329\",\"name\":\"伊川县\"},{\"code\":\"410371\",\"name\":\"洛阳高新技术产业开发区\"}]},{\"code\":\"410400\",\"name\":\"平顶山市\",\"children\":[{\"code\":\"410402\",\"name\":\"新华区\"},{\"code\":\"410403\",\"name\":\"卫东区\"},{\"code\":\"410404\",\"name\":\"石龙区\"},{\"code\":\"410411\",\"name\":\"湛河区\"},{\"code\":\"410421\",\"name\":\"宝丰县\"},{\"code\":\"410422\",\"name\":\"叶县\"},{\"code\":\"410423\",\"name\":\"鲁山县\"},{\"code\":\"410425\",\"name\":\"郏县\"},{\"code\":\"410471\",\"name\":\"平顶山高新技术产业开发区\"},{\"code\":\"410472\",\"name\":\"平顶山市城乡一体化示范区\"},{\"code\":\"410481\",\"name\":\"舞钢市\"},{\"code\":\"410482\",\"name\":\"汝州市\"}]},{\"code\":\"410500\",\"name\":\"安阳市\",\"children\":[{\"code\":\"410502\",\"name\":\"文峰区\"},{\"code\":\"410503\",\"name\":\"北关区\"},{\"code\":\"410505\",\"name\":\"殷都区\"},{\"code\":\"410506\",\"name\":\"龙安区\"},{\"code\":\"410522\",\"name\":\"安阳县\"},{\"code\":\"410523\",\"name\":\"汤阴县\"},{\"code\":\"410526\",\"name\":\"滑县\"},{\"code\":\"410527\",\"name\":\"内黄县\"},{\"code\":\"410571\",\"name\":\"安阳高新技术产业开发区\"},{\"code\":\"410581\",\"name\":\"林州市\"}]},{\"code\":\"410600\",\"name\":\"鹤壁市\",\"children\":[{\"code\":\"410602\",\"name\":\"鹤山区\"},{\"code\":\"410603\",\"name\":\"山城区\"},{\"code\":\"410611\",\"name\":\"淇滨区\"},{\"code\":\"410621\",\"name\":\"浚县\"},{\"code\":\"410622\",\"name\":\"淇县\"},{\"code\":\"410671\",\"name\":\"鹤壁经济技术开发区\"}]},{\"code\":\"410700\",\"name\":\"新乡市\",\"children\":[{\"code\":\"410702\",\"name\":\"红旗区\"},{\"code\":\"410703\",\"name\":\"卫滨区\"},{\"code\":\"410704\",\"name\":\"凤泉区\"},{\"code\":\"410711\",\"name\":\"牧野区\"},{\"code\":\"410721\",\"name\":\"新乡县\"},{\"code\":\"410724\",\"name\":\"获嘉县\"},{\"code\":\"410725\",\"name\":\"原阳县\"},{\"code\":\"410726\",\"name\":\"延津县\"},{\"code\":\"410727\",\"name\":\"封丘县\"},{\"code\":\"410771\",\"name\":\"新乡高新技术产业开发区\"},{\"code\":\"410772\",\"name\":\"新乡经济技术开发区\"},{\"code\":\"410773\",\"name\":\"新乡市平原城乡一体化示范区\"},{\"code\":\"410781\",\"name\":\"卫辉市\"},{\"code\":\"410782\",\"name\":\"辉县市\"},{\"code\":\"410783\",\"name\":\"长垣市\"}]},{\"code\":\"410800\",\"name\":\"焦作市\",\"children\":[{\"code\":\"410802\",\"name\":\"解放区\"},{\"code\":\"410803\",\"name\":\"中站区\"},{\"code\":\"410804\",\"name\":\"马村区\"},{\"code\":\"410811\",\"name\":\"山阳区\"},{\"code\":\"410821\",\"name\":\"修武县\"},{\"code\":\"410822\",\"name\":\"博爱县\"},{\"code\":\"410823\",\"name\":\"武陟县\"},{\"code\":\"410825\",\"name\":\"温县\"},{\"code\":\"410871\",\"name\":\"焦作城乡一体化示范区\"},{\"code\":\"410882\",\"name\":\"沁阳市\"},{\"code\":\"410883\",\"name\":\"孟州市\"}]},{\"code\":\"410900\",\"name\":\"濮阳市\",\"children\":[{\"code\":\"410902\",\"name\":\"华龙区\"},{\"code\":\"410922\",\"name\":\"清丰县\"},{\"code\":\"410923\",\"name\":\"南乐县\"},{\"code\":\"410926\",\"name\":\"范县\"},{\"code\":\"410927\",\"name\":\"台前县\"},{\"code\":\"410928\",\"name\":\"濮阳县\"},{\"code\":\"410971\",\"name\":\"河南濮阳工业园区\"},{\"code\":\"410972\",\"name\":\"濮阳经济技术开发区\"}]},{\"code\":\"411000\",\"name\":\"许昌市\",\"children\":[{\"code\":\"411002\",\"name\":\"魏都区\"},{\"code\":\"411003\",\"name\":\"建安区\"},{\"code\":\"411024\",\"name\":\"鄢陵县\"},{\"code\":\"411025\",\"name\":\"襄城县\"},{\"code\":\"411071\",\"name\":\"许昌经济技术开发区\"},{\"code\":\"411081\",\"name\":\"禹州市\"},{\"code\":\"411082\",\"name\":\"长葛市\"}]},{\"code\":\"411100\",\"name\":\"漯河市\",\"children\":[{\"code\":\"411102\",\"name\":\"源汇区\"},{\"code\":\"411103\",\"name\":\"郾城区\"},{\"code\":\"411104\",\"name\":\"召陵区\"},{\"code\":\"411121\",\"name\":\"舞阳县\"},{\"code\":\"411122\",\"name\":\"临颍县\"},{\"code\":\"411171\",\"name\":\"漯河经济技术开发区\"}]},{\"code\":\"411200\",\"name\":\"三门峡市\",\"children\":[{\"code\":\"411202\",\"name\":\"湖滨区\"},{\"code\":\"411203\",\"name\":\"陕州区\"},{\"code\":\"411221\",\"name\":\"渑池县\"},{\"code\":\"411224\",\"name\":\"卢氏县\"},{\"code\":\"411271\",\"name\":\"河南三门峡经济开发区\"},{\"code\":\"411281\",\"name\":\"义马市\"},{\"code\":\"411282\",\"name\":\"灵宝市\"}]},{\"code\":\"411300\",\"name\":\"南阳市\",\"children\":[{\"code\":\"411302\",\"name\":\"宛城区\"},{\"code\":\"411303\",\"name\":\"卧龙区\"},{\"code\":\"411321\",\"name\":\"南召县\"},{\"code\":\"411322\",\"name\":\"方城县\"},{\"code\":\"411323\",\"name\":\"西峡县\"},{\"code\":\"411324\",\"name\":\"镇平县\"},{\"code\":\"411325\",\"name\":\"内乡县\"},{\"code\":\"411326\",\"name\":\"淅川县\"},{\"code\":\"411327\",\"name\":\"社旗县\"},{\"code\":\"411328\",\"name\":\"唐河县\"},{\"code\":\"411329\",\"name\":\"新野县\"},{\"code\":\"411330\",\"name\":\"桐柏县\"},{\"code\":\"411371\",\"name\":\"南阳高新技术产业开发区\"},{\"code\":\"411372\",\"name\":\"南阳市城乡一体化示范区\"},{\"code\":\"411381\",\"name\":\"邓州市\"}]},{\"code\":\"411400\",\"name\":\"商丘市\",\"children\":[{\"code\":\"411402\",\"name\":\"梁园区\"},{\"code\":\"411403\",\"name\":\"睢阳区\"},{\"code\":\"411421\",\"name\":\"民权县\"},{\"code\":\"411422\",\"name\":\"睢县\"},{\"code\":\"411423\",\"name\":\"宁陵县\"},{\"code\":\"411424\",\"name\":\"柘城县\"},{\"code\":\"411425\",\"name\":\"虞城县\"},{\"code\":\"411426\",\"name\":\"夏邑县\"},{\"code\":\"411471\",\"name\":\"豫东综合物流产业聚集区\"},{\"code\":\"411472\",\"name\":\"河南商丘经济开发区\"},{\"code\":\"411481\",\"name\":\"永城市\"}]},{\"code\":\"411500\",\"name\":\"信阳市\",\"children\":[{\"code\":\"411502\",\"name\":\"浉河区\"},{\"code\":\"411503\",\"name\":\"平桥区\"},{\"code\":\"411521\",\"name\":\"罗山县\"},{\"code\":\"411522\",\"name\":\"光山县\"},{\"code\":\"411523\",\"name\":\"新县\"},{\"code\":\"411524\",\"name\":\"商城县\"},{\"code\":\"411525\",\"name\":\"固始县\"},{\"code\":\"411526\",\"name\":\"潢川县\"},{\"code\":\"411527\",\"name\":\"淮滨县\"},{\"code\":\"411528\",\"name\":\"息县\"},{\"code\":\"411571\",\"name\":\"信阳高新技术产业开发区\"}]},{\"code\":\"411600\",\"name\":\"周口市\",\"children\":[{\"code\":\"411602\",\"name\":\"川汇区\"},{\"code\":\"411603\",\"name\":\"淮阳区\"},{\"code\":\"411621\",\"name\":\"扶沟县\"},{\"code\":\"411622\",\"name\":\"西华县\"},{\"code\":\"411623\",\"name\":\"商水县\"},{\"code\":\"411624\",\"name\":\"沈丘县\"},{\"code\":\"411625\",\"name\":\"郸城县\"},{\"code\":\"411627\",\"name\":\"太康县\"},{\"code\":\"411628\",\"name\":\"鹿邑县\"},{\"code\":\"411671\",\"name\":\"河南周口经济开发区\"},{\"code\":\"411681\",\"name\":\"项城市\"}]},{\"code\":\"411700\",\"name\":\"驻马店市\",\"children\":[{\"code\":\"411702\",\"name\":\"驿城区\"},{\"code\":\"411721\",\"name\":\"西平县\"},{\"code\":\"411722\",\"name\":\"上蔡县\"},{\"code\":\"411723\",\"name\":\"平舆县\"},{\"code\":\"411724\",\"name\":\"正阳县\"},{\"code\":\"411725\",\"name\":\"确山县\"},{\"code\":\"411726\",\"name\":\"泌阳县\"},{\"code\":\"411727\",\"name\":\"汝南县\"},{\"code\":\"411728\",\"name\":\"遂平县\"},{\"code\":\"411729\",\"name\":\"新蔡县\"},{\"code\":\"411771\",\"name\":\"河南驻马店经济开发区\"}]},{\"code\":\"419000\",\"name\":\"省直辖县级行政区划\",\"children\":[{\"code\":\"419001\",\"name\":\"济源市\"}]}]},{\"code\":\"420000\",\"name\":\"湖北省\",\"children\":[{\"code\":\"420100\",\"name\":\"武汉市\",\"children\":[{\"code\":\"420102\",\"name\":\"江岸区\"},{\"code\":\"420103\",\"name\":\"江汉区\"},{\"code\":\"420104\",\"name\":\"硚口区\"},{\"code\":\"420105\",\"name\":\"汉阳区\"},{\"code\":\"420106\",\"name\":\"武昌区\"},{\"code\":\"420107\",\"name\":\"青山区\"},{\"code\":\"420111\",\"name\":\"洪山区\"},{\"code\":\"420112\",\"name\":\"东西湖区\"},{\"code\":\"420113\",\"name\":\"汉南区\"},{\"code\":\"420114\",\"name\":\"蔡甸区\"},{\"code\":\"420115\",\"name\":\"江夏区\"},{\"code\":\"420116\",\"name\":\"黄陂区\"},{\"code\":\"420117\",\"name\":\"新洲区\"}]},{\"code\":\"420200\",\"name\":\"黄石市\",\"children\":[{\"code\":\"420202\",\"name\":\"黄石港区\"},{\"code\":\"420203\",\"name\":\"西塞山区\"},{\"code\":\"420204\",\"name\":\"下陆区\"},{\"code\":\"420205\",\"name\":\"铁山区\"},{\"code\":\"420222\",\"name\":\"阳新县\"},{\"code\":\"420281\",\"name\":\"大冶市\"}]},{\"code\":\"420300\",\"name\":\"十堰市\",\"children\":[{\"code\":\"420302\",\"name\":\"茅箭区\"},{\"code\":\"420303\",\"name\":\"张湾区\"},{\"code\":\"420304\",\"name\":\"郧阳区\"},{\"code\":\"420322\",\"name\":\"郧西县\"},{\"code\":\"420323\",\"name\":\"竹山县\"},{\"code\":\"420324\",\"name\":\"竹溪县\"},{\"code\":\"420325\",\"name\":\"房县\"},{\"code\":\"420381\",\"name\":\"丹江口市\"}]},{\"code\":\"420500\",\"name\":\"宜昌市\",\"children\":[{\"code\":\"420502\",\"name\":\"西陵区\"},{\"code\":\"420503\",\"name\":\"伍家岗区\"},{\"code\":\"420504\",\"name\":\"点军区\"},{\"code\":\"420505\",\"name\":\"猇亭区\"},{\"code\":\"420506\",\"name\":\"夷陵区\"},{\"code\":\"420525\",\"name\":\"远安县\"},{\"code\":\"420526\",\"name\":\"兴山县\"},{\"code\":\"420527\",\"name\":\"秭归县\"},{\"code\":\"420528\",\"name\":\"长阳土家族自治县\"},{\"code\":\"420529\",\"name\":\"五峰土家族自治县\"},{\"code\":\"420581\",\"name\":\"宜都市\"},{\"code\":\"420582\",\"name\":\"当阳市\"},{\"code\":\"420583\",\"name\":\"枝江市\"}]},{\"code\":\"420600\",\"name\":\"襄阳市\",\"children\":[{\"code\":\"420602\",\"name\":\"襄城区\"},{\"code\":\"420606\",\"name\":\"樊城区\"},{\"code\":\"420607\",\"name\":\"襄州区\"},{\"code\":\"420624\",\"name\":\"南漳县\"},{\"code\":\"420625\",\"name\":\"谷城县\"},{\"code\":\"420626\",\"name\":\"保康县\"},{\"code\":\"420682\",\"name\":\"老河口市\"},{\"code\":\"420683\",\"name\":\"枣阳市\"},{\"code\":\"420684\",\"name\":\"宜城市\"}]},{\"code\":\"420700\",\"name\":\"鄂州市\",\"children\":[{\"code\":\"420702\",\"name\":\"梁子湖区\"},{\"code\":\"420703\",\"name\":\"华容区\"},{\"code\":\"420704\",\"name\":\"鄂城区\"}]},{\"code\":\"420800\",\"name\":\"荆门市\",\"children\":[{\"code\":\"420802\",\"name\":\"东宝区\"},{\"code\":\"420804\",\"name\":\"掇刀区\"},{\"code\":\"420822\",\"name\":\"沙洋县\"},{\"code\":\"420881\",\"name\":\"钟祥市\"},{\"code\":\"420882\",\"name\":\"京山市\"}]},{\"code\":\"420900\",\"name\":\"孝感市\",\"children\":[{\"code\":\"420902\",\"name\":\"孝南区\"},{\"code\":\"420921\",\"name\":\"孝昌县\"},{\"code\":\"420922\",\"name\":\"大悟县\"},{\"code\":\"420923\",\"name\":\"云梦县\"},{\"code\":\"420981\",\"name\":\"应城市\"},{\"code\":\"420982\",\"name\":\"安陆市\"},{\"code\":\"420984\",\"name\":\"汉川市\"}]},{\"code\":\"421000\",\"name\":\"荆州市\",\"children\":[{\"code\":\"421002\",\"name\":\"沙市区\"},{\"code\":\"421003\",\"name\":\"荆州区\"},{\"code\":\"421022\",\"name\":\"公安县\"},{\"code\":\"421024\",\"name\":\"江陵县\"},{\"code\":\"421071\",\"name\":\"荆州经济技术开发区\"},{\"code\":\"421081\",\"name\":\"石首市\"},{\"code\":\"421083\",\"name\":\"洪湖市\"},{\"code\":\"421087\",\"name\":\"松滋市\"},{\"code\":\"421088\",\"name\":\"监利市\"}]},{\"code\":\"421100\",\"name\":\"黄冈市\",\"children\":[{\"code\":\"421102\",\"name\":\"黄州区\"},{\"code\":\"421121\",\"name\":\"团风县\"},{\"code\":\"421122\",\"name\":\"红安县\"},{\"code\":\"421123\",\"name\":\"罗田县\"},{\"code\":\"421124\",\"name\":\"英山县\"},{\"code\":\"421125\",\"name\":\"浠水县\"},{\"code\":\"421126\",\"name\":\"蕲春县\"},{\"code\":\"421127\",\"name\":\"黄梅县\"},{\"code\":\"421171\",\"name\":\"龙感湖管理区\"},{\"code\":\"421181\",\"name\":\"麻城市\"},{\"code\":\"421182\",\"name\":\"武穴市\"}]},{\"code\":\"421200\",\"name\":\"咸宁市\",\"children\":[{\"code\":\"421202\",\"name\":\"咸安区\"},{\"code\":\"421221\",\"name\":\"嘉鱼县\"},{\"code\":\"421222\",\"name\":\"通城县\"},{\"code\":\"421223\",\"name\":\"崇阳县\"},{\"code\":\"421224\",\"name\":\"通山县\"},{\"code\":\"421281\",\"name\":\"赤壁市\"}]},{\"code\":\"421300\",\"name\":\"随州市\",\"children\":[{\"code\":\"421303\",\"name\":\"曾都区\"},{\"code\":\"421321\",\"name\":\"随县\"},{\"code\":\"421381\",\"name\":\"广水市\"}]},{\"code\":\"422800\",\"name\":\"恩施土家族苗族自治州\",\"children\":[{\"code\":\"422801\",\"name\":\"恩施市\"},{\"code\":\"422802\",\"name\":\"利川市\"},{\"code\":\"422822\",\"name\":\"建始县\"},{\"code\":\"422823\",\"name\":\"巴东县\"},{\"code\":\"422825\",\"name\":\"宣恩县\"},{\"code\":\"422826\",\"name\":\"咸丰县\"},{\"code\":\"422827\",\"name\":\"来凤县\"},{\"code\":\"422828\",\"name\":\"鹤峰县\"}]},{\"code\":\"429000\",\"name\":\"省直辖县级行政区划\",\"children\":[{\"code\":\"429004\",\"name\":\"仙桃市\"},{\"code\":\"429005\",\"name\":\"潜江市\"},{\"code\":\"429006\",\"name\":\"天门市\"},{\"code\":\"429021\",\"name\":\"神农架林区\"}]}]},{\"code\":\"430000\",\"name\":\"湖南省\",\"children\":[{\"code\":\"430100\",\"name\":\"长沙市\",\"children\":[{\"code\":\"430102\",\"name\":\"芙蓉区\"},{\"code\":\"430103\",\"name\":\"天心区\"},{\"code\":\"430104\",\"name\":\"岳麓区\"},{\"code\":\"430105\",\"name\":\"开福区\"},{\"code\":\"430111\",\"name\":\"雨花区\"},{\"code\":\"430112\",\"name\":\"望城区\"},{\"code\":\"430121\",\"name\":\"长沙县\"},{\"code\":\"430181\",\"name\":\"浏阳市\"},{\"code\":\"430182\",\"name\":\"宁乡市\"}]},{\"code\":\"430200\",\"name\":\"株洲市\",\"children\":[{\"code\":\"430202\",\"name\":\"荷塘区\"},{\"code\":\"430203\",\"name\":\"芦淞区\"},{\"code\":\"430204\",\"name\":\"石峰区\"},{\"code\":\"430211\",\"name\":\"天元区\"},{\"code\":\"430212\",\"name\":\"渌口区\"},{\"code\":\"430223\",\"name\":\"攸县\"},{\"code\":\"430224\",\"name\":\"茶陵县\"},{\"code\":\"430225\",\"name\":\"炎陵县\"},{\"code\":\"430281\",\"name\":\"醴陵市\"}]},{\"code\":\"430300\",\"name\":\"湘潭市\",\"children\":[{\"code\":\"430302\",\"name\":\"雨湖区\"},{\"code\":\"430304\",\"name\":\"岳塘区\"},{\"code\":\"430321\",\"name\":\"湘潭县\"},{\"code\":\"430371\",\"name\":\"湖南湘潭高新技术产业园区\"},{\"code\":\"430372\",\"name\":\"湘潭昭山示范区\"},{\"code\":\"430373\",\"name\":\"湘潭九华示范区\"},{\"code\":\"430381\",\"name\":\"湘乡市\"},{\"code\":\"430382\",\"name\":\"韶山市\"}]},{\"code\":\"430400\",\"name\":\"衡阳市\",\"children\":[{\"code\":\"430405\",\"name\":\"珠晖区\"},{\"code\":\"430406\",\"name\":\"雁峰区\"},{\"code\":\"430407\",\"name\":\"石鼓区\"},{\"code\":\"430408\",\"name\":\"蒸湘区\"},{\"code\":\"430412\",\"name\":\"南岳区\"},{\"code\":\"430421\",\"name\":\"衡阳县\"},{\"code\":\"430422\",\"name\":\"衡南县\"},{\"code\":\"430423\",\"name\":\"衡山县\"},{\"code\":\"430424\",\"name\":\"衡东县\"},{\"code\":\"430426\",\"name\":\"祁东县\"},{\"code\":\"430471\",\"name\":\"衡阳综合保税区\"},{\"code\":\"430472\",\"name\":\"湖南衡阳高新技术产业园区\"},{\"code\":\"430473\",\"name\":\"湖南衡阳松木经济开发区\"},{\"code\":\"430481\",\"name\":\"耒阳市\"},{\"code\":\"430482\",\"name\":\"常宁市\"}]},{\"code\":\"430500\",\"name\":\"邵阳市\",\"children\":[{\"code\":\"430502\",\"name\":\"双清区\"},{\"code\":\"430503\",\"name\":\"大祥区\"},{\"code\":\"430511\",\"name\":\"北塔区\"},{\"code\":\"430522\",\"name\":\"新邵县\"},{\"code\":\"430523\",\"name\":\"邵阳县\"},{\"code\":\"430524\",\"name\":\"隆回县\"},{\"code\":\"430525\",\"name\":\"洞口县\"},{\"code\":\"430527\",\"name\":\"绥宁县\"},{\"code\":\"430528\",\"name\":\"新宁县\"},{\"code\":\"430529\",\"name\":\"城步苗族自治县\"},{\"code\":\"430581\",\"name\":\"武冈市\"},{\"code\":\"430582\",\"name\":\"邵东市\"}]},{\"code\":\"430600\",\"name\":\"岳阳市\",\"children\":[{\"code\":\"430602\",\"name\":\"岳阳楼区\"},{\"code\":\"430603\",\"name\":\"云溪区\"},{\"code\":\"430611\",\"name\":\"君山区\"},{\"code\":\"430621\",\"name\":\"岳阳县\"},{\"code\":\"430623\",\"name\":\"华容县\"},{\"code\":\"430624\",\"name\":\"湘阴县\"},{\"code\":\"430626\",\"name\":\"平江县\"},{\"code\":\"430671\",\"name\":\"岳阳市屈原管理区\"},{\"code\":\"430681\",\"name\":\"汨罗市\"},{\"code\":\"430682\",\"name\":\"临湘市\"}]},{\"code\":\"430700\",\"name\":\"常德市\",\"children\":[{\"code\":\"430702\",\"name\":\"武陵区\"},{\"code\":\"430703\",\"name\":\"鼎城区\"},{\"code\":\"430721\",\"name\":\"安乡县\"},{\"code\":\"430722\",\"name\":\"汉寿县\"},{\"code\":\"430723\",\"name\":\"澧县\"},{\"code\":\"430724\",\"name\":\"临澧县\"},{\"code\":\"430725\",\"name\":\"桃源县\"},{\"code\":\"430726\",\"name\":\"石门县\"},{\"code\":\"430771\",\"name\":\"常德市西洞庭管理区\"},{\"code\":\"430781\",\"name\":\"津市市\"}]},{\"code\":\"430800\",\"name\":\"张家界市\",\"children\":[{\"code\":\"430802\",\"name\":\"永定区\"},{\"code\":\"430811\",\"name\":\"武陵源区\"},{\"code\":\"430821\",\"name\":\"慈利县\"},{\"code\":\"430822\",\"name\":\"桑植县\"}]},{\"code\":\"430900\",\"name\":\"益阳市\",\"children\":[{\"code\":\"430902\",\"name\":\"资阳区\"},{\"code\":\"430903\",\"name\":\"赫山区\"},{\"code\":\"430921\",\"name\":\"南县\"},{\"code\":\"430922\",\"name\":\"桃江县\"},{\"code\":\"430923\",\"name\":\"安化县\"},{\"code\":\"430971\",\"name\":\"益阳市大通湖管理区\"},{\"code\":\"430972\",\"name\":\"湖南益阳高新技术产业园区\"},{\"code\":\"430981\",\"name\":\"沅江市\"}]},{\"code\":\"431000\",\"name\":\"郴州市\",\"children\":[{\"code\":\"431002\",\"name\":\"北湖区\"},{\"code\":\"431003\",\"name\":\"苏仙区\"},{\"code\":\"431021\",\"name\":\"桂阳县\"},{\"code\":\"431022\",\"name\":\"宜章县\"},{\"code\":\"431023\",\"name\":\"永兴县\"},{\"code\":\"431024\",\"name\":\"嘉禾县\"},{\"code\":\"431025\",\"name\":\"临武县\"},{\"code\":\"431026\",\"name\":\"汝城县\"},{\"code\":\"431027\",\"name\":\"桂东县\"},{\"code\":\"431028\",\"name\":\"安仁县\"},{\"code\":\"431081\",\"name\":\"资兴市\"}]},{\"code\":\"431100\",\"name\":\"永州市\",\"children\":[{\"code\":\"431102\",\"name\":\"零陵区\"},{\"code\":\"431103\",\"name\":\"冷水滩区\"},{\"code\":\"431122\",\"name\":\"东安县\"},{\"code\":\"431123\",\"name\":\"双牌县\"},{\"code\":\"431124\",\"name\":\"道县\"},{\"code\":\"431125\",\"name\":\"江永县\"},{\"code\":\"431126\",\"name\":\"宁远县\"},{\"code\":\"431127\",\"name\":\"蓝山县\"},{\"code\":\"431128\",\"name\":\"新田县\"},{\"code\":\"431129\",\"name\":\"江华瑶族自治县\"},{\"code\":\"431171\",\"name\":\"永州经济技术开发区\"},{\"code\":\"431173\",\"name\":\"永州市回龙圩管理区\"},{\"code\":\"431181\",\"name\":\"祁阳市\"}]},{\"code\":\"431200\",\"name\":\"怀化市\",\"children\":[{\"code\":\"431202\",\"name\":\"鹤城区\"},{\"code\":\"431221\",\"name\":\"中方县\"},{\"code\":\"431222\",\"name\":\"沅陵县\"},{\"code\":\"431223\",\"name\":\"辰溪县\"},{\"code\":\"431224\",\"name\":\"溆浦县\"},{\"code\":\"431225\",\"name\":\"会同县\"},{\"code\":\"431226\",\"name\":\"麻阳苗族自治县\"},{\"code\":\"431227\",\"name\":\"新晃侗族自治县\"},{\"code\":\"431228\",\"name\":\"芷江侗族自治县\"},{\"code\":\"431229\",\"name\":\"靖州苗族侗族自治县\"},{\"code\":\"431230\",\"name\":\"通道侗族自治县\"},{\"code\":\"431271\",\"name\":\"怀化市洪江管理区\"},{\"code\":\"431281\",\"name\":\"洪江市\"}]},{\"code\":\"431300\",\"name\":\"娄底市\",\"children\":[{\"code\":\"431302\",\"name\":\"娄星区\"},{\"code\":\"431321\",\"name\":\"双峰县\"},{\"code\":\"431322\",\"name\":\"新化县\"},{\"code\":\"431381\",\"name\":\"冷水江市\"},{\"code\":\"431382\",\"name\":\"涟源市\"}]},{\"code\":\"433100\",\"name\":\"湘西土家族苗族自治州\",\"children\":[{\"code\":\"433101\",\"name\":\"吉首市\"},{\"code\":\"433122\",\"name\":\"泸溪县\"},{\"code\":\"433123\",\"name\":\"凤凰县\"},{\"code\":\"433124\",\"name\":\"花垣县\"},{\"code\":\"433125\",\"name\":\"保靖县\"},{\"code\":\"433126\",\"name\":\"古丈县\"},{\"code\":\"433127\",\"name\":\"永顺县\"},{\"code\":\"433130\",\"name\":\"龙山县\"}]}]},{\"code\":\"450000\",\"name\":\"广西壮族自治区\",\"children\":[{\"code\":\"450100\",\"name\":\"南宁市\",\"children\":[{\"code\":\"450102\",\"name\":\"兴宁区\"},{\"code\":\"450103\",\"name\":\"青秀区\"},{\"code\":\"450105\",\"name\":\"江南区\"},{\"code\":\"450107\",\"name\":\"西乡塘区\"},{\"code\":\"450108\",\"name\":\"良庆区\"},{\"code\":\"450109\",\"name\":\"邕宁区\"},{\"code\":\"450110\",\"name\":\"武鸣区\"},{\"code\":\"450123\",\"name\":\"隆安县\"},{\"code\":\"450124\",\"name\":\"马山县\"},{\"code\":\"450125\",\"name\":\"上林县\"},{\"code\":\"450126\",\"name\":\"宾阳县\"},{\"code\":\"450181\",\"name\":\"横州市\"}]},{\"code\":\"450200\",\"name\":\"柳州市\",\"children\":[{\"code\":\"450202\",\"name\":\"城中区\"},{\"code\":\"450203\",\"name\":\"鱼峰区\"},{\"code\":\"450204\",\"name\":\"柳南区\"},{\"code\":\"450205\",\"name\":\"柳北区\"},{\"code\":\"450206\",\"name\":\"柳江区\"},{\"code\":\"450222\",\"name\":\"柳城县\"},{\"code\":\"450223\",\"name\":\"鹿寨县\"},{\"code\":\"450224\",\"name\":\"融安县\"},{\"code\":\"450225\",\"name\":\"融水苗族自治县\"},{\"code\":\"450226\",\"name\":\"三江侗族自治县\"}]},{\"code\":\"450300\",\"name\":\"桂林市\",\"children\":[{\"code\":\"450302\",\"name\":\"秀峰区\"},{\"code\":\"450303\",\"name\":\"叠彩区\"},{\"code\":\"450304\",\"name\":\"象山区\"},{\"code\":\"450305\",\"name\":\"七星区\"},{\"code\":\"450311\",\"name\":\"雁山区\"},{\"code\":\"450312\",\"name\":\"临桂区\"},{\"code\":\"450321\",\"name\":\"阳朔县\"},{\"code\":\"450323\",\"name\":\"灵川县\"},{\"code\":\"450324\",\"name\":\"全州县\"},{\"code\":\"450325\",\"name\":\"兴安县\"},{\"code\":\"450326\",\"name\":\"永福县\"},{\"code\":\"450327\",\"name\":\"灌阳县\"},{\"code\":\"450328\",\"name\":\"龙胜各族自治县\"},{\"code\":\"450329\",\"name\":\"资源县\"},{\"code\":\"450330\",\"name\":\"平乐县\"},{\"code\":\"450332\",\"name\":\"恭城瑶族自治县\"},{\"code\":\"450381\",\"name\":\"荔浦市\"}]},{\"code\":\"450400\",\"name\":\"梧州市\",\"children\":[{\"code\":\"450403\",\"name\":\"万秀区\"},{\"code\":\"450405\",\"name\":\"长洲区\"},{\"code\":\"450406\",\"name\":\"龙圩区\"},{\"code\":\"450421\",\"name\":\"苍梧县\"},{\"code\":\"450422\",\"name\":\"藤县\"},{\"code\":\"450423\",\"name\":\"蒙山县\"},{\"code\":\"450481\",\"name\":\"岑溪市\"}]},{\"code\":\"450500\",\"name\":\"北海市\",\"children\":[{\"code\":\"450502\",\"name\":\"海城区\"},{\"code\":\"450503\",\"name\":\"银海区\"},{\"code\":\"450512\",\"name\":\"铁山港区\"},{\"code\":\"450521\",\"name\":\"合浦县\"}]},{\"code\":\"450600\",\"name\":\"防城港市\",\"children\":[{\"code\":\"450602\",\"name\":\"港口区\"},{\"code\":\"450603\",\"name\":\"防城区\"},{\"code\":\"450621\",\"name\":\"上思县\"},{\"code\":\"450681\",\"name\":\"东兴市\"}]},{\"code\":\"450700\",\"name\":\"钦州市\",\"children\":[{\"code\":\"450702\",\"name\":\"钦南区\"},{\"code\":\"450703\",\"name\":\"钦北区\"},{\"code\":\"450721\",\"name\":\"灵山县\"},{\"code\":\"450722\",\"name\":\"浦北县\"}]},{\"code\":\"450800\",\"name\":\"贵港市\",\"children\":[{\"code\":\"450802\",\"name\":\"港北区\"},{\"code\":\"450803\",\"name\":\"港南区\"},{\"code\":\"450804\",\"name\":\"覃塘区\"},{\"code\":\"450821\",\"name\":\"平南县\"},{\"code\":\"450881\",\"name\":\"桂平市\"}]},{\"code\":\"450900\",\"name\":\"玉林市\",\"children\":[{\"code\":\"450902\",\"name\":\"玉州区\"},{\"code\":\"450903\",\"name\":\"福绵区\"},{\"code\":\"450921\",\"name\":\"容县\"},{\"code\":\"450922\",\"name\":\"陆川县\"},{\"code\":\"450923\",\"name\":\"博白县\"},{\"code\":\"450924\",\"name\":\"兴业县\"},{\"code\":\"450981\",\"name\":\"北流市\"}]},{\"code\":\"451000\",\"name\":\"百色市\",\"children\":[{\"code\":\"451002\",\"name\":\"右江区\"},{\"code\":\"451003\",\"name\":\"田阳区\"},{\"code\":\"451022\",\"name\":\"田东县\"},{\"code\":\"451024\",\"name\":\"德保县\"},{\"code\":\"451026\",\"name\":\"那坡县\"},{\"code\":\"451027\",\"name\":\"凌云县\"},{\"code\":\"451028\",\"name\":\"乐业县\"},{\"code\":\"451029\",\"name\":\"田林县\"},{\"code\":\"451030\",\"name\":\"西林县\"},{\"code\":\"451031\",\"name\":\"隆林各族自治县\"},{\"code\":\"451081\",\"name\":\"靖西市\"},{\"code\":\"451082\",\"name\":\"平果市\"}]},{\"code\":\"451100\",\"name\":\"贺州市\",\"children\":[{\"code\":\"451102\",\"name\":\"八步区\"},{\"code\":\"451103\",\"name\":\"平桂区\"},{\"code\":\"451121\",\"name\":\"昭平县\"},{\"code\":\"451122\",\"name\":\"钟山县\"},{\"code\":\"451123\",\"name\":\"富川瑶族自治县\"}]},{\"code\":\"451200\",\"name\":\"河池市\",\"children\":[{\"code\":\"451202\",\"name\":\"金城江区\"},{\"code\":\"451203\",\"name\":\"宜州区\"},{\"code\":\"451221\",\"name\":\"南丹县\"},{\"code\":\"451222\",\"name\":\"天峨县\"},{\"code\":\"451223\",\"name\":\"凤山县\"},{\"code\":\"451224\",\"name\":\"东兰县\"},{\"code\":\"451225\",\"name\":\"罗城仫佬族自治县\"},{\"code\":\"451226\",\"name\":\"环江毛南族自治县\"},{\"code\":\"451227\",\"name\":\"巴马瑶族自治县\"},{\"code\":\"451228\",\"name\":\"都安瑶族自治县\"},{\"code\":\"451229\",\"name\":\"大化瑶族自治县\"}]},{\"code\":\"451300\",\"name\":\"来宾市\",\"children\":[{\"code\":\"451302\",\"name\":\"兴宾区\"},{\"code\":\"451321\",\"name\":\"忻城县\"},{\"code\":\"451322\",\"name\":\"象州县\"},{\"code\":\"451323\",\"name\":\"武宣县\"},{\"code\":\"451324\",\"name\":\"金秀瑶族自治县\"},{\"code\":\"451381\",\"name\":\"合山市\"}]},{\"code\":\"451400\",\"name\":\"崇左市\",\"children\":[{\"code\":\"451402\",\"name\":\"江州区\"},{\"code\":\"451421\",\"name\":\"扶绥县\"},{\"code\":\"451422\",\"name\":\"宁明县\"},{\"code\":\"451423\",\"name\":\"龙州县\"},{\"code\":\"451424\",\"name\":\"大新县\"},{\"code\":\"451425\",\"name\":\"天等县\"},{\"code\":\"451481\",\"name\":\"凭祥市\"}]}]},{\"code\":\"460000\",\"name\":\"海南省\",\"children\":[{\"code\":\"460100\",\"name\":\"海口市\",\"children\":[{\"code\":\"460105\",\"name\":\"秀英区\"},{\"code\":\"460106\",\"name\":\"龙华区\"},{\"code\":\"460107\",\"name\":\"琼山区\"},{\"code\":\"460108\",\"name\":\"美兰区\"}]},{\"code\":\"460200\",\"name\":\"三亚市\",\"children\":[{\"code\":\"460202\",\"name\":\"海棠区\"},{\"code\":\"460203\",\"name\":\"吉阳区\"},{\"code\":\"460204\",\"name\":\"天涯区\"},{\"code\":\"460205\",\"name\":\"崖州区\"}]},{\"code\":\"460300\",\"name\":\"三沙市\",\"children\":[{\"code\":\"460321\",\"name\":\"西沙群岛\"},{\"code\":\"460322\",\"name\":\"南沙群岛\"},{\"code\":\"460323\",\"name\":\"中沙群岛的岛礁及其海域\"}]},{\"code\":\"460400\",\"name\":\"儋州市\",\"children\":[{\"code\":\"460400100\",\"name\":\"那大镇\"},{\"code\":\"460400101\",\"name\":\"和庆镇\"},{\"code\":\"460400102\",\"name\":\"南丰镇\"},{\"code\":\"460400103\",\"name\":\"大成镇\"},{\"code\":\"460400104\",\"name\":\"雅星镇\"},{\"code\":\"460400105\",\"name\":\"兰洋镇\"},{\"code\":\"460400106\",\"name\":\"光村镇\"},{\"code\":\"460400107\",\"name\":\"木棠镇\"},{\"code\":\"460400108\",\"name\":\"海头镇\"},{\"code\":\"460400109\",\"name\":\"峨蔓镇\"},{\"code\":\"460400111\",\"name\":\"王五镇\"},{\"code\":\"460400112\",\"name\":\"白马井镇\"},{\"code\":\"460400113\",\"name\":\"中和镇\"},{\"code\":\"460400114\",\"name\":\"排浦镇\"},{\"code\":\"460400115\",\"name\":\"东成镇\"},{\"code\":\"460400116\",\"name\":\"新州镇\"},{\"code\":\"460400499\",\"name\":\"洋浦经济开发区\"},{\"code\":\"460400500\",\"name\":\"华南热作学院\"}]},{\"code\":\"469000\",\"name\":\"省直辖县级行政区划\",\"children\":[{\"code\":\"469001\",\"name\":\"五指山市\"},{\"code\":\"469002\",\"name\":\"琼海市\"},{\"code\":\"469005\",\"name\":\"文昌市\"},{\"code\":\"469006\",\"name\":\"万宁市\"},{\"code\":\"469007\",\"name\":\"东方市\"},{\"code\":\"469021\",\"name\":\"定安县\"},{\"code\":\"469022\",\"name\":\"屯昌县\"},{\"code\":\"469023\",\"name\":\"澄迈县\"},{\"code\":\"469024\",\"name\":\"临高县\"},{\"code\":\"469025\",\"name\":\"白沙黎族自治县\"},{\"code\":\"469026\",\"name\":\"昌江黎族自治县\"},{\"code\":\"469027\",\"name\":\"乐东黎族自治县\"},{\"code\":\"469028\",\"name\":\"陵水黎族自治县\"},{\"code\":\"469029\",\"name\":\"保亭黎族苗族自治县\"},{\"code\":\"469030\",\"name\":\"琼中黎族苗族自治县\"}]}]},{\"code\":\"500000\",\"name\":\"重庆市\",\"children\":[{\"code\":\"500100\",\"name\":\"市辖区\",\"children\":[{\"code\":\"500101\",\"name\":\"万州区\"},{\"code\":\"500102\",\"name\":\"涪陵区\"},{\"code\":\"500103\",\"name\":\"渝中区\"},{\"code\":\"500104\",\"name\":\"大渡口区\"},{\"code\":\"500105\",\"name\":\"江北区\"},{\"code\":\"500106\",\"name\":\"沙坪坝区\"},{\"code\":\"500107\",\"name\":\"九龙坡区\"},{\"code\":\"500108\",\"name\":\"南岸区\"},{\"code\":\"500109\",\"name\":\"北碚区\"},{\"code\":\"500110\",\"name\":\"綦江区\"},{\"code\":\"500111\",\"name\":\"大足区\"},{\"code\":\"500112\",\"name\":\"渝北区\"},{\"code\":\"500113\",\"name\":\"巴南区\"},{\"code\":\"500114\",\"name\":\"黔江区\"},{\"code\":\"500115\",\"name\":\"长寿区\"},{\"code\":\"500116\",\"name\":\"江津区\"},{\"code\":\"500117\",\"name\":\"合川区\"},{\"code\":\"500118\",\"name\":\"永川区\"},{\"code\":\"500119\",\"name\":\"南川区\"},{\"code\":\"500120\",\"name\":\"璧山区\"},{\"code\":\"500151\",\"name\":\"铜梁区\"},{\"code\":\"500152\",\"name\":\"潼南区\"},{\"code\":\"500153\",\"name\":\"荣昌区\"},{\"code\":\"500154\",\"name\":\"开州区\"},{\"code\":\"500155\",\"name\":\"梁平区\"},{\"code\":\"500156\",\"name\":\"武隆区\"}]},{\"code\":\"500200\",\"name\":\"县\",\"children\":[{\"code\":\"500229\",\"name\":\"城口县\"},{\"code\":\"500230\",\"name\":\"丰都县\"},{\"code\":\"500231\",\"name\":\"垫江县\"},{\"code\":\"500233\",\"name\":\"忠县\"},{\"code\":\"500235\",\"name\":\"云阳县\"},{\"code\":\"500236\",\"name\":\"奉节县\"},{\"code\":\"500237\",\"name\":\"巫山县\"},{\"code\":\"500238\",\"name\":\"巫溪县\"},{\"code\":\"500240\",\"name\":\"石柱土家族自治县\"},{\"code\":\"500241\",\"name\":\"秀山土家族苗族自治县\"},{\"code\":\"500242\",\"name\":\"酉阳土家族苗族自治县\"},{\"code\":\"500243\",\"name\":\"彭水苗族土家族自治县\"}]}]},{\"code\":\"510000\",\"name\":\"四川省\",\"children\":[{\"code\":\"510100\",\"name\":\"成都市\",\"children\":[{\"code\":\"510104\",\"name\":\"锦江区\"},{\"code\":\"510105\",\"name\":\"青羊区\"},{\"code\":\"510106\",\"name\":\"金牛区\"},{\"code\":\"510107\",\"name\":\"武侯区\"},{\"code\":\"510108\",\"name\":\"成华区\"},{\"code\":\"510112\",\"name\":\"龙泉驿区\"},{\"code\":\"510113\",\"name\":\"青白江区\"},{\"code\":\"510114\",\"name\":\"新都区\"},{\"code\":\"510115\",\"name\":\"温江区\"},{\"code\":\"510116\",\"name\":\"双流区\"},{\"code\":\"510117\",\"name\":\"郫都区\"},{\"code\":\"510118\",\"name\":\"新津区\"},{\"code\":\"510121\",\"name\":\"金堂县\"},{\"code\":\"510129\",\"name\":\"大邑县\"},{\"code\":\"510131\",\"name\":\"蒲江县\"},{\"code\":\"510181\",\"name\":\"都江堰市\"},{\"code\":\"510182\",\"name\":\"彭州市\"},{\"code\":\"510183\",\"name\":\"邛崃市\"},{\"code\":\"510184\",\"name\":\"崇州市\"},{\"code\":\"510185\",\"name\":\"简阳市\"}]},{\"code\":\"510300\",\"name\":\"自贡市\",\"children\":[{\"code\":\"510302\",\"name\":\"自流井区\"},{\"code\":\"510303\",\"name\":\"贡井区\"},{\"code\":\"510304\",\"name\":\"大安区\"},{\"code\":\"510311\",\"name\":\"沿滩区\"},{\"code\":\"510321\",\"name\":\"荣县\"},{\"code\":\"510322\",\"name\":\"富顺县\"}]},{\"code\":\"510400\",\"name\":\"攀枝花市\",\"children\":[{\"code\":\"510402\",\"name\":\"东区\"},{\"code\":\"510403\",\"name\":\"西区\"},{\"code\":\"510411\",\"name\":\"仁和区\"},{\"code\":\"510421\",\"name\":\"米易县\"},{\"code\":\"510422\",\"name\":\"盐边县\"}]},{\"code\":\"510500\",\"name\":\"泸州市\",\"children\":[{\"code\":\"510502\",\"name\":\"江阳区\"},{\"code\":\"510503\",\"name\":\"纳溪区\"},{\"code\":\"510504\",\"name\":\"龙马潭区\"},{\"code\":\"510521\",\"name\":\"泸县\"},{\"code\":\"510522\",\"name\":\"合江县\"},{\"code\":\"510524\",\"name\":\"叙永县\"},{\"code\":\"510525\",\"name\":\"古蔺县\"}]},{\"code\":\"510600\",\"name\":\"德阳市\",\"children\":[{\"code\":\"510603\",\"name\":\"旌阳区\"},{\"code\":\"510604\",\"name\":\"罗江区\"},{\"code\":\"510623\",\"name\":\"中江县\"},{\"code\":\"510681\",\"name\":\"广汉市\"},{\"code\":\"510682\",\"name\":\"什邡市\"},{\"code\":\"510683\",\"name\":\"绵竹市\"}]},{\"code\":\"510700\",\"name\":\"绵阳市\",\"children\":[{\"code\":\"510703\",\"name\":\"涪城区\"},{\"code\":\"510704\",\"name\":\"游仙区\"},{\"code\":\"510705\",\"name\":\"安州区\"},{\"code\":\"510722\",\"name\":\"三台县\"},{\"code\":\"510723\",\"name\":\"盐亭县\"},{\"code\":\"510725\",\"name\":\"梓潼县\"},{\"code\":\"510726\",\"name\":\"北川羌族自治县\"},{\"code\":\"510727\",\"name\":\"平武县\"},{\"code\":\"510781\",\"name\":\"江油市\"}]},{\"code\":\"510800\",\"name\":\"广元市\",\"children\":[{\"code\":\"510802\",\"name\":\"利州区\"},{\"code\":\"510811\",\"name\":\"昭化区\"},{\"code\":\"510812\",\"name\":\"朝天区\"},{\"code\":\"510821\",\"name\":\"旺苍县\"},{\"code\":\"510822\",\"name\":\"青川县\"},{\"code\":\"510823\",\"name\":\"剑阁县\"},{\"code\":\"510824\",\"name\":\"苍溪县\"}]},{\"code\":\"510900\",\"name\":\"遂宁市\",\"children\":[{\"code\":\"510903\",\"name\":\"船山区\"},{\"code\":\"510904\",\"name\":\"安居区\"},{\"code\":\"510921\",\"name\":\"蓬溪县\"},{\"code\":\"510923\",\"name\":\"大英县\"},{\"code\":\"510981\",\"name\":\"射洪市\"}]},{\"code\":\"511000\",\"name\":\"内江市\",\"children\":[{\"code\":\"511002\",\"name\":\"市中区\"},{\"code\":\"511011\",\"name\":\"东兴区\"},{\"code\":\"511024\",\"name\":\"威远县\"},{\"code\":\"511025\",\"name\":\"资中县\"},{\"code\":\"511083\",\"name\":\"隆昌市\"}]},{\"code\":\"511100\",\"name\":\"乐山市\",\"children\":[{\"code\":\"511102\",\"name\":\"市中区\"},{\"code\":\"511111\",\"name\":\"沙湾区\"},{\"code\":\"511112\",\"name\":\"五通桥区\"},{\"code\":\"511113\",\"name\":\"金口河区\"},{\"code\":\"511123\",\"name\":\"犍为县\"},{\"code\":\"511124\",\"name\":\"井研县\"},{\"code\":\"511126\",\"name\":\"夹江县\"},{\"code\":\"511129\",\"name\":\"沐川县\"},{\"code\":\"511132\",\"name\":\"峨边彝族自治县\"},{\"code\":\"511133\",\"name\":\"马边彝族自治县\"},{\"code\":\"511181\",\"name\":\"峨眉山市\"}]},{\"code\":\"511300\",\"name\":\"南充市\",\"children\":[{\"code\":\"511302\",\"name\":\"顺庆区\"},{\"code\":\"511303\",\"name\":\"高坪区\"},{\"code\":\"511304\",\"name\":\"嘉陵区\"},{\"code\":\"511321\",\"name\":\"南部县\"},{\"code\":\"511322\",\"name\":\"营山县\"},{\"code\":\"511323\",\"name\":\"蓬安县\"},{\"code\":\"511324\",\"name\":\"仪陇县\"},{\"code\":\"511325\",\"name\":\"西充县\"},{\"code\":\"511381\",\"name\":\"阆中市\"}]},{\"code\":\"511400\",\"name\":\"眉山市\",\"children\":[{\"code\":\"511402\",\"name\":\"东坡区\"},{\"code\":\"511403\",\"name\":\"彭山区\"},{\"code\":\"511421\",\"name\":\"仁寿县\"},{\"code\":\"511423\",\"name\":\"洪雅县\"},{\"code\":\"511424\",\"name\":\"丹棱县\"},{\"code\":\"511425\",\"name\":\"青神县\"}]},{\"code\":\"511500\",\"name\":\"宜宾市\",\"children\":[{\"code\":\"511502\",\"name\":\"翠屏区\"},{\"code\":\"511503\",\"name\":\"南溪区\"},{\"code\":\"511504\",\"name\":\"叙州区\"},{\"code\":\"511523\",\"name\":\"江安县\"},{\"code\":\"511524\",\"name\":\"长宁县\"},{\"code\":\"511525\",\"name\":\"高县\"},{\"code\":\"511526\",\"name\":\"珙县\"},{\"code\":\"511527\",\"name\":\"筠连县\"},{\"code\":\"511528\",\"name\":\"兴文县\"},{\"code\":\"511529\",\"name\":\"屏山县\"}]},{\"code\":\"511600\",\"name\":\"广安市\",\"children\":[{\"code\":\"511602\",\"name\":\"广安区\"},{\"code\":\"511603\",\"name\":\"前锋区\"},{\"code\":\"511621\",\"name\":\"岳池县\"},{\"code\":\"511622\",\"name\":\"武胜县\"},{\"code\":\"511623\",\"name\":\"邻水县\"},{\"code\":\"511681\",\"name\":\"华蓥市\"}]},{\"code\":\"511700\",\"name\":\"达州市\",\"children\":[{\"code\":\"511702\",\"name\":\"通川区\"},{\"code\":\"511703\",\"name\":\"达川区\"},{\"code\":\"511722\",\"name\":\"宣汉县\"},{\"code\":\"511723\",\"name\":\"开江县\"},{\"code\":\"511724\",\"name\":\"大竹县\"},{\"code\":\"511725\",\"name\":\"渠县\"},{\"code\":\"511781\",\"name\":\"万源市\"}]},{\"code\":\"511800\",\"name\":\"雅安市\",\"children\":[{\"code\":\"511802\",\"name\":\"雨城区\"},{\"code\":\"511803\",\"name\":\"名山区\"},{\"code\":\"511822\",\"name\":\"荥经县\"},{\"code\":\"511823\",\"name\":\"汉源县\"},{\"code\":\"511824\",\"name\":\"石棉县\"},{\"code\":\"511825\",\"name\":\"天全县\"},{\"code\":\"511826\",\"name\":\"芦山县\"},{\"code\":\"511827\",\"name\":\"宝兴县\"}]},{\"code\":\"511900\",\"name\":\"巴中市\",\"children\":[{\"code\":\"511902\",\"name\":\"巴州区\"},{\"code\":\"511903\",\"name\":\"恩阳区\"},{\"code\":\"511921\",\"name\":\"通江县\"},{\"code\":\"511922\",\"name\":\"南江县\"},{\"code\":\"511923\",\"name\":\"平昌县\"}]},{\"code\":\"512000\",\"name\":\"资阳市\",\"children\":[{\"code\":\"512002\",\"name\":\"雁江区\"},{\"code\":\"512021\",\"name\":\"安岳县\"},{\"code\":\"512022\",\"name\":\"乐至县\"}]},{\"code\":\"513200\",\"name\":\"阿坝藏族羌族自治州\",\"children\":[{\"code\":\"513201\",\"name\":\"马尔康市\"},{\"code\":\"513221\",\"name\":\"汶川县\"},{\"code\":\"513222\",\"name\":\"理县\"},{\"code\":\"513223\",\"name\":\"茂县\"},{\"code\":\"513224\",\"name\":\"松潘县\"},{\"code\":\"513225\",\"name\":\"九寨沟县\"},{\"code\":\"513226\",\"name\":\"金川县\"},{\"code\":\"513227\",\"name\":\"小金县\"},{\"code\":\"513228\",\"name\":\"黑水县\"},{\"code\":\"513230\",\"name\":\"壤塘县\"},{\"code\":\"513231\",\"name\":\"阿坝县\"},{\"code\":\"513232\",\"name\":\"若尔盖县\"},{\"code\":\"513233\",\"name\":\"红原县\"}]},{\"code\":\"513300\",\"name\":\"甘孜藏族自治州\",\"children\":[{\"code\":\"513301\",\"name\":\"康定市\"},{\"code\":\"513322\",\"name\":\"泸定县\"},{\"code\":\"513323\",\"name\":\"丹巴县\"},{\"code\":\"513324\",\"name\":\"九龙县\"},{\"code\":\"513325\",\"name\":\"雅江县\"},{\"code\":\"513326\",\"name\":\"道孚县\"},{\"code\":\"513327\",\"name\":\"炉霍县\"},{\"code\":\"513328\",\"name\":\"甘孜县\"},{\"code\":\"513329\",\"name\":\"新龙县\"},{\"code\":\"513330\",\"name\":\"德格县\"},{\"code\":\"513331\",\"name\":\"白玉县\"},{\"code\":\"513332\",\"name\":\"石渠县\"},{\"code\":\"513333\",\"name\":\"色达县\"},{\"code\":\"513334\",\"name\":\"理塘县\"},{\"code\":\"513335\",\"name\":\"巴塘县\"},{\"code\":\"513336\",\"name\":\"乡城县\"},{\"code\":\"513337\",\"name\":\"稻城县\"},{\"code\":\"513338\",\"name\":\"得荣县\"}]},{\"code\":\"513400\",\"name\":\"凉山彝族自治州\",\"children\":[{\"code\":\"513401\",\"name\":\"西昌市\"},{\"code\":\"513402\",\"name\":\"会理市\"},{\"code\":\"513422\",\"name\":\"木里藏族自治县\"},{\"code\":\"513423\",\"name\":\"盐源县\"},{\"code\":\"513424\",\"name\":\"德昌县\"},{\"code\":\"513426\",\"name\":\"会东县\"},{\"code\":\"513427\",\"name\":\"宁南县\"},{\"code\":\"513428\",\"name\":\"普格县\"},{\"code\":\"513429\",\"name\":\"布拖县\"},{\"code\":\"513430\",\"name\":\"金阳县\"},{\"code\":\"513431\",\"name\":\"昭觉县\"},{\"code\":\"513432\",\"name\":\"喜德县\"},{\"code\":\"513433\",\"name\":\"冕宁县\"},{\"code\":\"513434\",\"name\":\"越西县\"},{\"code\":\"513435\",\"name\":\"甘洛县\"},{\"code\":\"513436\",\"name\":\"美姑县\"},{\"code\":\"513437\",\"name\":\"雷波县\"}]}]},{\"code\":\"520000\",\"name\":\"贵州省\",\"children\":[{\"code\":\"520100\",\"name\":\"贵阳市\",\"children\":[{\"code\":\"520102\",\"name\":\"南明区\"},{\"code\":\"520103\",\"name\":\"云岩区\"},{\"code\":\"520111\",\"name\":\"花溪区\"},{\"code\":\"520112\",\"name\":\"乌当区\"},{\"code\":\"520113\",\"name\":\"白云区\"},{\"code\":\"520115\",\"name\":\"观山湖区\"},{\"code\":\"520121\",\"name\":\"开阳县\"},{\"code\":\"520122\",\"name\":\"息烽县\"},{\"code\":\"520123\",\"name\":\"修文县\"},{\"code\":\"520181\",\"name\":\"清镇市\"}]},{\"code\":\"520200\",\"name\":\"六盘水市\",\"children\":[{\"code\":\"520201\",\"name\":\"钟山区\"},{\"code\":\"520203\",\"name\":\"六枝特区\"},{\"code\":\"520204\",\"name\":\"水城区\"},{\"code\":\"520281\",\"name\":\"盘州市\"}]},{\"code\":\"520300\",\"name\":\"遵义市\",\"children\":[{\"code\":\"520302\",\"name\":\"红花岗区\"},{\"code\":\"520303\",\"name\":\"汇川区\"},{\"code\":\"520304\",\"name\":\"播州区\"},{\"code\":\"520322\",\"name\":\"桐梓县\"},{\"code\":\"520323\",\"name\":\"绥阳县\"},{\"code\":\"520324\",\"name\":\"正安县\"},{\"code\":\"520325\",\"name\":\"道真仡佬族苗族自治县\"},{\"code\":\"520326\",\"name\":\"务川仡佬族苗族自治县\"},{\"code\":\"520327\",\"name\":\"凤冈县\"},{\"code\":\"520328\",\"name\":\"湄潭县\"},{\"code\":\"520329\",\"name\":\"余庆县\"},{\"code\":\"520330\",\"name\":\"习水县\"},{\"code\":\"520381\",\"name\":\"赤水市\"},{\"code\":\"520382\",\"name\":\"仁怀市\"}]},{\"code\":\"520400\",\"name\":\"安顺市\",\"children\":[{\"code\":\"520402\",\"name\":\"西秀区\"},{\"code\":\"520403\",\"name\":\"平坝区\"},{\"code\":\"520422\",\"name\":\"普定县\"},{\"code\":\"520423\",\"name\":\"镇宁布依族苗族自治县\"},{\"code\":\"520424\",\"name\":\"关岭布依族苗族自治县\"},{\"code\":\"520425\",\"name\":\"紫云苗族布依族自治县\"}]},{\"code\":\"520500\",\"name\":\"毕节市\",\"children\":[{\"code\":\"520502\",\"name\":\"七星关区\"},{\"code\":\"520521\",\"name\":\"大方县\"},{\"code\":\"520523\",\"name\":\"金沙县\"},{\"code\":\"520524\",\"name\":\"织金县\"},{\"code\":\"520525\",\"name\":\"纳雍县\"},{\"code\":\"520526\",\"name\":\"威宁彝族回族苗族自治县\"},{\"code\":\"520527\",\"name\":\"赫章县\"},{\"code\":\"520581\",\"name\":\"黔西市\"}]},{\"code\":\"520600\",\"name\":\"铜仁市\",\"children\":[{\"code\":\"520602\",\"name\":\"碧江区\"},{\"code\":\"520603\",\"name\":\"万山区\"},{\"code\":\"520621\",\"name\":\"江口县\"},{\"code\":\"520622\",\"name\":\"玉屏侗族自治县\"},{\"code\":\"520623\",\"name\":\"石阡县\"},{\"code\":\"520624\",\"name\":\"思南县\"},{\"code\":\"520625\",\"name\":\"印江土家族苗族自治县\"},{\"code\":\"520626\",\"name\":\"德江县\"},{\"code\":\"520627\",\"name\":\"沿河土家族自治县\"},{\"code\":\"520628\",\"name\":\"松桃苗族自治县\"}]},{\"code\":\"522300\",\"name\":\"黔西南布依族苗族自治州\",\"children\":[{\"code\":\"522301\",\"name\":\"兴义市\"},{\"code\":\"522302\",\"name\":\"兴仁市\"},{\"code\":\"522323\",\"name\":\"普安县\"},{\"code\":\"522324\",\"name\":\"晴隆县\"},{\"code\":\"522325\",\"name\":\"贞丰县\"},{\"code\":\"522326\",\"name\":\"望谟县\"},{\"code\":\"522327\",\"name\":\"册亨县\"},{\"code\":\"522328\",\"name\":\"安龙县\"}]},{\"code\":\"522600\",\"name\":\"黔东南苗族侗族自治州\",\"children\":[{\"code\":\"522601\",\"name\":\"凯里市\"},{\"code\":\"522622\",\"name\":\"黄平县\"},{\"code\":\"522623\",\"name\":\"施秉县\"},{\"code\":\"522624\",\"name\":\"三穗县\"},{\"code\":\"522625\",\"name\":\"镇远县\"},{\"code\":\"522626\",\"name\":\"岑巩县\"},{\"code\":\"522627\",\"name\":\"天柱县\"},{\"code\":\"522628\",\"name\":\"锦屏县\"},{\"code\":\"522629\",\"name\":\"剑河县\"},{\"code\":\"522630\",\"name\":\"台江县\"},{\"code\":\"522631\",\"name\":\"黎平县\"},{\"code\":\"522632\",\"name\":\"榕江县\"},{\"code\":\"522633\",\"name\":\"从江县\"},{\"code\":\"522634\",\"name\":\"雷山县\"},{\"code\":\"522635\",\"name\":\"麻江县\"},{\"code\":\"522636\",\"name\":\"丹寨县\"}]},{\"code\":\"522700\",\"name\":\"黔南布依族苗族自治州\",\"children\":[{\"code\":\"522701\",\"name\":\"都匀市\"},{\"code\":\"522702\",\"name\":\"福泉市\"},{\"code\":\"522722\",\"name\":\"荔波县\"},{\"code\":\"522723\",\"name\":\"贵定县\"},{\"code\":\"522725\",\"name\":\"瓮安县\"},{\"code\":\"522726\",\"name\":\"独山县\"},{\"code\":\"522727\",\"name\":\"平塘县\"},{\"code\":\"522728\",\"name\":\"罗甸县\"},{\"code\":\"522729\",\"name\":\"长顺县\"},{\"code\":\"522730\",\"name\":\"龙里县\"},{\"code\":\"522731\",\"name\":\"惠水县\"},{\"code\":\"522732\",\"name\":\"三都水族自治县\"}]}]},{\"code\":\"530000\",\"name\":\"云南省\",\"children\":[{\"code\":\"530100\",\"name\":\"昆明市\",\"children\":[{\"code\":\"530102\",\"name\":\"五华区\"},{\"code\":\"530103\",\"name\":\"盘龙区\"},{\"code\":\"530111\",\"name\":\"官渡区\"},{\"code\":\"530112\",\"name\":\"西山区\"},{\"code\":\"530113\",\"name\":\"东川区\"},{\"code\":\"530114\",\"name\":\"呈贡区\"},{\"code\":\"530115\",\"name\":\"晋宁区\"},{\"code\":\"530124\",\"name\":\"富民县\"},{\"code\":\"530125\",\"name\":\"宜良县\"},{\"code\":\"530126\",\"name\":\"石林彝族自治县\"},{\"code\":\"530127\",\"name\":\"嵩明县\"},{\"code\":\"530128\",\"name\":\"禄劝彝族苗族自治县\"},{\"code\":\"530129\",\"name\":\"寻甸回族彝族自治县\"},{\"code\":\"530181\",\"name\":\"安宁市\"}]},{\"code\":\"530300\",\"name\":\"曲靖市\",\"children\":[{\"code\":\"530302\",\"name\":\"麒麟区\"},{\"code\":\"530303\",\"name\":\"沾益区\"},{\"code\":\"530304\",\"name\":\"马龙区\"},{\"code\":\"530322\",\"name\":\"陆良县\"},{\"code\":\"530323\",\"name\":\"师宗县\"},{\"code\":\"530324\",\"name\":\"罗平县\"},{\"code\":\"530325\",\"name\":\"富源县\"},{\"code\":\"530326\",\"name\":\"会泽县\"},{\"code\":\"530381\",\"name\":\"宣威市\"}]},{\"code\":\"530400\",\"name\":\"玉溪市\",\"children\":[{\"code\":\"530402\",\"name\":\"红塔区\"},{\"code\":\"530403\",\"name\":\"江川区\"},{\"code\":\"530423\",\"name\":\"通海县\"},{\"code\":\"530424\",\"name\":\"华宁县\"},{\"code\":\"530425\",\"name\":\"易门县\"},{\"code\":\"530426\",\"name\":\"峨山彝族自治县\"},{\"code\":\"530427\",\"name\":\"新平彝族傣族自治县\"},{\"code\":\"530428\",\"name\":\"元江哈尼族彝族傣族自治县\"},{\"code\":\"530481\",\"name\":\"澄江市\"}]},{\"code\":\"530500\",\"name\":\"保山市\",\"children\":[{\"code\":\"530502\",\"name\":\"隆阳区\"},{\"code\":\"530521\",\"name\":\"施甸县\"},{\"code\":\"530523\",\"name\":\"龙陵县\"},{\"code\":\"530524\",\"name\":\"昌宁县\"},{\"code\":\"530581\",\"name\":\"腾冲市\"}]},{\"code\":\"530600\",\"name\":\"昭通市\",\"children\":[{\"code\":\"530602\",\"name\":\"昭阳区\"},{\"code\":\"530621\",\"name\":\"鲁甸县\"},{\"code\":\"530622\",\"name\":\"巧家县\"},{\"code\":\"530623\",\"name\":\"盐津县\"},{\"code\":\"530624\",\"name\":\"大关县\"},{\"code\":\"530625\",\"name\":\"永善县\"},{\"code\":\"530626\",\"name\":\"绥江县\"},{\"code\":\"530627\",\"name\":\"镇雄县\"},{\"code\":\"530628\",\"name\":\"彝良县\"},{\"code\":\"530629\",\"name\":\"威信县\"},{\"code\":\"530681\",\"name\":\"水富市\"}]},{\"code\":\"530700\",\"name\":\"丽江市\",\"children\":[{\"code\":\"530702\",\"name\":\"古城区\"},{\"code\":\"530721\",\"name\":\"玉龙纳西族自治县\"},{\"code\":\"530722\",\"name\":\"永胜县\"},{\"code\":\"530723\",\"name\":\"华坪县\"},{\"code\":\"530724\",\"name\":\"宁蒗彝族自治县\"}]},{\"code\":\"530800\",\"name\":\"普洱市\",\"children\":[{\"code\":\"530802\",\"name\":\"思茅区\"},{\"code\":\"530821\",\"name\":\"宁洱哈尼族彝族自治县\"},{\"code\":\"530822\",\"name\":\"墨江哈尼族自治县\"},{\"code\":\"530823\",\"name\":\"景东彝族自治县\"},{\"code\":\"530824\",\"name\":\"景谷傣族彝族自治县\"},{\"code\":\"530825\",\"name\":\"镇沅彝族哈尼族拉祜族自治县\"},{\"code\":\"530826\",\"name\":\"江城哈尼族彝族自治县\"},{\"code\":\"530827\",\"name\":\"孟连傣族拉祜族佤族自治县\"},{\"code\":\"530828\",\"name\":\"澜沧拉祜族自治县\"},{\"code\":\"530829\",\"name\":\"西盟佤族自治县\"}]},{\"code\":\"530900\",\"name\":\"临沧市\",\"children\":[{\"code\":\"530902\",\"name\":\"临翔区\"},{\"code\":\"530921\",\"name\":\"凤庆县\"},{\"code\":\"530922\",\"name\":\"云县\"},{\"code\":\"530923\",\"name\":\"永德县\"},{\"code\":\"530924\",\"name\":\"镇康县\"},{\"code\":\"530925\",\"name\":\"双江拉祜族佤族布朗族傣族自治县\"},{\"code\":\"530926\",\"name\":\"耿马傣族佤族自治县\"},{\"code\":\"530927\",\"name\":\"沧源佤族自治县\"}]},{\"code\":\"532300\",\"name\":\"楚雄彝族自治州\",\"children\":[{\"code\":\"532301\",\"name\":\"楚雄市\"},{\"code\":\"532302\",\"name\":\"禄丰市\"},{\"code\":\"532322\",\"name\":\"双柏县\"},{\"code\":\"532323\",\"name\":\"牟定县\"},{\"code\":\"532324\",\"name\":\"南华县\"},{\"code\":\"532325\",\"name\":\"姚安县\"},{\"code\":\"532326\",\"name\":\"大姚县\"},{\"code\":\"532327\",\"name\":\"永仁县\"},{\"code\":\"532328\",\"name\":\"元谋县\"},{\"code\":\"532329\",\"name\":\"武定县\"}]},{\"code\":\"532500\",\"name\":\"红河哈尼族彝族自治州\",\"children\":[{\"code\":\"532501\",\"name\":\"个旧市\"},{\"code\":\"532502\",\"name\":\"开远市\"},{\"code\":\"532503\",\"name\":\"蒙自市\"},{\"code\":\"532504\",\"name\":\"弥勒市\"},{\"code\":\"532523\",\"name\":\"屏边苗族自治县\"},{\"code\":\"532524\",\"name\":\"建水县\"},{\"code\":\"532525\",\"name\":\"石屏县\"},{\"code\":\"532527\",\"name\":\"泸西县\"},{\"code\":\"532528\",\"name\":\"元阳县\"},{\"code\":\"532529\",\"name\":\"红河县\"},{\"code\":\"532530\",\"name\":\"金平苗族瑶族傣族自治县\"},{\"code\":\"532531\",\"name\":\"绿春县\"},{\"code\":\"532532\",\"name\":\"河口瑶族自治县\"}]},{\"code\":\"532600\",\"name\":\"文山壮族苗族自治州\",\"children\":[{\"code\":\"532601\",\"name\":\"文山市\"},{\"code\":\"532622\",\"name\":\"砚山县\"},{\"code\":\"532623\",\"name\":\"西畴县\"},{\"code\":\"532624\",\"name\":\"麻栗坡县\"},{\"code\":\"532625\",\"name\":\"马关县\"},{\"code\":\"532626\",\"name\":\"丘北县\"},{\"code\":\"532627\",\"name\":\"广南县\"},{\"code\":\"532628\",\"name\":\"富宁县\"}]},{\"code\":\"532800\",\"name\":\"西双版纳傣族自治州\",\"children\":[{\"code\":\"532801\",\"name\":\"景洪市\"},{\"code\":\"532822\",\"name\":\"勐海县\"},{\"code\":\"532823\",\"name\":\"勐腊县\"}]},{\"code\":\"532900\",\"name\":\"大理白族自治州\",\"children\":[{\"code\":\"532901\",\"name\":\"大理市\"},{\"code\":\"532922\",\"name\":\"漾濞彝族自治县\"},{\"code\":\"532923\",\"name\":\"祥云县\"},{\"code\":\"532924\",\"name\":\"宾川县\"},{\"code\":\"532925\",\"name\":\"弥渡县\"},{\"code\":\"532926\",\"name\":\"南涧彝族自治县\"},{\"code\":\"532927\",\"name\":\"巍山彝族回族自治县\"},{\"code\":\"532928\",\"name\":\"永平县\"},{\"code\":\"532929\",\"name\":\"云龙县\"},{\"code\":\"532930\",\"name\":\"洱源县\"},{\"code\":\"532931\",\"name\":\"剑川县\"},{\"code\":\"532932\",\"name\":\"鹤庆县\"}]},{\"code\":\"533100\",\"name\":\"德宏傣族景颇族自治州\",\"children\":[{\"code\":\"533102\",\"name\":\"瑞丽市\"},{\"code\":\"533103\",\"name\":\"芒市\"},{\"code\":\"533122\",\"name\":\"梁河县\"},{\"code\":\"533123\",\"name\":\"盈江县\"},{\"code\":\"533124\",\"name\":\"陇川县\"}]},{\"code\":\"533300\",\"name\":\"怒江傈僳族自治州\",\"children\":[{\"code\":\"533301\",\"name\":\"泸水市\"},{\"code\":\"533323\",\"name\":\"福贡县\"},{\"code\":\"533324\",\"name\":\"贡山独龙族怒族自治县\"},{\"code\":\"533325\",\"name\":\"兰坪白族普米族自治县\"}]},{\"code\":\"533400\",\"name\":\"迪庆藏族自治州\",\"children\":[{\"code\":\"533401\",\"name\":\"香格里拉市\"},{\"code\":\"533422\",\"name\":\"德钦县\"},{\"code\":\"533423\",\"name\":\"维西傈僳族自治县\"}]}]},{\"code\":\"540000\",\"name\":\"西藏自治区\",\"children\":[{\"code\":\"540100\",\"name\":\"拉萨市\",\"children\":[{\"code\":\"540102\",\"name\":\"城关区\"},{\"code\":\"540103\",\"name\":\"堆龙德庆区\"},{\"code\":\"540104\",\"name\":\"达孜区\"},{\"code\":\"540121\",\"name\":\"林周县\"},{\"code\":\"540122\",\"name\":\"当雄县\"},{\"code\":\"540123\",\"name\":\"尼木县\"},{\"code\":\"540124\",\"name\":\"曲水县\"},{\"code\":\"540127\",\"name\":\"墨竹工卡县\"},{\"code\":\"540171\",\"name\":\"格尔木藏青工业园区\"},{\"code\":\"540172\",\"name\":\"拉萨经济技术开发区\"},{\"code\":\"540173\",\"name\":\"西藏文化旅游创意园区\"},{\"code\":\"540174\",\"name\":\"达孜工业园区\"}]},{\"code\":\"540200\",\"name\":\"日喀则市\",\"children\":[{\"code\":\"540202\",\"name\":\"桑珠孜区\"},{\"code\":\"540221\",\"name\":\"南木林县\"},{\"code\":\"540222\",\"name\":\"江孜县\"},{\"code\":\"540223\",\"name\":\"定日县\"},{\"code\":\"540224\",\"name\":\"萨迦县\"},{\"code\":\"540225\",\"name\":\"拉孜县\"},{\"code\":\"540226\",\"name\":\"昂仁县\"},{\"code\":\"540227\",\"name\":\"谢通门县\"},{\"code\":\"540228\",\"name\":\"白朗县\"},{\"code\":\"540229\",\"name\":\"仁布县\"},{\"code\":\"540230\",\"name\":\"康马县\"},{\"code\":\"540231\",\"name\":\"定结县\"},{\"code\":\"540232\",\"name\":\"仲巴县\"},{\"code\":\"540233\",\"name\":\"亚东县\"},{\"code\":\"540234\",\"name\":\"吉隆县\"},{\"code\":\"540235\",\"name\":\"聂拉木县\"},{\"code\":\"540236\",\"name\":\"萨嘎县\"},{\"code\":\"540237\",\"name\":\"岗巴县\"}]},{\"code\":\"540300\",\"name\":\"昌都市\",\"children\":[{\"code\":\"540302\",\"name\":\"卡若区\"},{\"code\":\"540321\",\"name\":\"江达县\"},{\"code\":\"540322\",\"name\":\"贡觉县\"},{\"code\":\"540323\",\"name\":\"类乌齐县\"},{\"code\":\"540324\",\"name\":\"丁青县\"},{\"code\":\"540325\",\"name\":\"察雅县\"},{\"code\":\"540326\",\"name\":\"八宿县\"},{\"code\":\"540327\",\"name\":\"左贡县\"},{\"code\":\"540328\",\"name\":\"芒康县\"},{\"code\":\"540329\",\"name\":\"洛隆县\"},{\"code\":\"540330\",\"name\":\"边坝县\"}]},{\"code\":\"540400\",\"name\":\"林芝市\",\"children\":[{\"code\":\"540402\",\"name\":\"巴宜区\"},{\"code\":\"540421\",\"name\":\"工布江达县\"},{\"code\":\"540422\",\"name\":\"米林县\"},{\"code\":\"540423\",\"name\":\"墨脱县\"},{\"code\":\"540424\",\"name\":\"波密县\"},{\"code\":\"540425\",\"name\":\"察隅县\"},{\"code\":\"540426\",\"name\":\"朗县\"}]},{\"code\":\"540500\",\"name\":\"山南市\",\"children\":[{\"code\":\"540502\",\"name\":\"乃东区\"},{\"code\":\"540521\",\"name\":\"扎囊县\"},{\"code\":\"540522\",\"name\":\"贡嘎县\"},{\"code\":\"540523\",\"name\":\"桑日县\"},{\"code\":\"540524\",\"name\":\"琼结县\"},{\"code\":\"540525\",\"name\":\"曲松县\"},{\"code\":\"540526\",\"name\":\"措美县\"},{\"code\":\"540527\",\"name\":\"洛扎县\"},{\"code\":\"540528\",\"name\":\"加查县\"},{\"code\":\"540529\",\"name\":\"隆子县\"},{\"code\":\"540530\",\"name\":\"错那县\"},{\"code\":\"540531\",\"name\":\"浪卡子县\"}]},{\"code\":\"540600\",\"name\":\"那曲市\",\"children\":[{\"code\":\"540602\",\"name\":\"色尼区\"},{\"code\":\"540621\",\"name\":\"嘉黎县\"},{\"code\":\"540622\",\"name\":\"比如县\"},{\"code\":\"540623\",\"name\":\"聂荣县\"},{\"code\":\"540624\",\"name\":\"安多县\"},{\"code\":\"540625\",\"name\":\"申扎县\"},{\"code\":\"540626\",\"name\":\"索县\"},{\"code\":\"540627\",\"name\":\"班戈县\"},{\"code\":\"540628\",\"name\":\"巴青县\"},{\"code\":\"540629\",\"name\":\"尼玛县\"},{\"code\":\"540630\",\"name\":\"双湖县\"}]},{\"code\":\"542500\",\"name\":\"阿里地区\",\"children\":[{\"code\":\"542521\",\"name\":\"普兰县\"},{\"code\":\"542522\",\"name\":\"札达县\"},{\"code\":\"542523\",\"name\":\"噶尔县\"},{\"code\":\"542524\",\"name\":\"日土县\"},{\"code\":\"542525\",\"name\":\"革吉县\"},{\"code\":\"542526\",\"name\":\"改则县\"},{\"code\":\"542527\",\"name\":\"措勤县\"}]}]},{\"code\":\"610000\",\"name\":\"陕西省\",\"children\":[{\"code\":\"610100\",\"name\":\"西安市\",\"children\":[{\"code\":\"610102\",\"name\":\"新城区\"},{\"code\":\"610103\",\"name\":\"碑林区\"},{\"code\":\"610104\",\"name\":\"莲湖区\"},{\"code\":\"610111\",\"name\":\"灞桥区\"},{\"code\":\"610112\",\"name\":\"未央区\"},{\"code\":\"610113\",\"name\":\"雁塔区\"},{\"code\":\"610114\",\"name\":\"阎良区\"},{\"code\":\"610115\",\"name\":\"临潼区\"},{\"code\":\"610116\",\"name\":\"长安区\"},{\"code\":\"610117\",\"name\":\"高陵区\"},{\"code\":\"610118\",\"name\":\"鄠邑区\"},{\"code\":\"610122\",\"name\":\"蓝田县\"},{\"code\":\"610124\",\"name\":\"周至县\"}]},{\"code\":\"610200\",\"name\":\"铜川市\",\"children\":[{\"code\":\"610202\",\"name\":\"王益区\"},{\"code\":\"610203\",\"name\":\"印台区\"},{\"code\":\"610204\",\"name\":\"耀州区\"},{\"code\":\"610222\",\"name\":\"宜君县\"}]},{\"code\":\"610300\",\"name\":\"宝鸡市\",\"children\":[{\"code\":\"610302\",\"name\":\"渭滨区\"},{\"code\":\"610303\",\"name\":\"金台区\"},{\"code\":\"610304\",\"name\":\"陈仓区\"},{\"code\":\"610305\",\"name\":\"凤翔区\"},{\"code\":\"610323\",\"name\":\"岐山县\"},{\"code\":\"610324\",\"name\":\"扶风县\"},{\"code\":\"610326\",\"name\":\"眉县\"},{\"code\":\"610327\",\"name\":\"陇县\"},{\"code\":\"610328\",\"name\":\"千阳县\"},{\"code\":\"610329\",\"name\":\"麟游县\"},{\"code\":\"610330\",\"name\":\"凤县\"},{\"code\":\"610331\",\"name\":\"太白县\"}]},{\"code\":\"610400\",\"name\":\"咸阳市\",\"children\":[{\"code\":\"610402\",\"name\":\"秦都区\"},{\"code\":\"610403\",\"name\":\"杨陵区\"},{\"code\":\"610404\",\"name\":\"渭城区\"},{\"code\":\"610422\",\"name\":\"三原县\"},{\"code\":\"610423\",\"name\":\"泾阳县\"},{\"code\":\"610424\",\"name\":\"乾县\"},{\"code\":\"610425\",\"name\":\"礼泉县\"},{\"code\":\"610426\",\"name\":\"永寿县\"},{\"code\":\"610428\",\"name\":\"长武县\"},{\"code\":\"610429\",\"name\":\"旬邑县\"},{\"code\":\"610430\",\"name\":\"淳化县\"},{\"code\":\"610431\",\"name\":\"武功县\"},{\"code\":\"610481\",\"name\":\"兴平市\"},{\"code\":\"610482\",\"name\":\"彬州市\"}]},{\"code\":\"610500\",\"name\":\"渭南市\",\"children\":[{\"code\":\"610502\",\"name\":\"临渭区\"},{\"code\":\"610503\",\"name\":\"华州区\"},{\"code\":\"610522\",\"name\":\"潼关县\"},{\"code\":\"610523\",\"name\":\"大荔县\"},{\"code\":\"610524\",\"name\":\"合阳县\"},{\"code\":\"610525\",\"name\":\"澄城县\"},{\"code\":\"610526\",\"name\":\"蒲城县\"},{\"code\":\"610527\",\"name\":\"白水县\"},{\"code\":\"610528\",\"name\":\"富平县\"},{\"code\":\"610581\",\"name\":\"韩城市\"},{\"code\":\"610582\",\"name\":\"华阴市\"}]},{\"code\":\"610600\",\"name\":\"延安市\",\"children\":[{\"code\":\"610602\",\"name\":\"宝塔区\"},{\"code\":\"610603\",\"name\":\"安塞区\"},{\"code\":\"610621\",\"name\":\"延长县\"},{\"code\":\"610622\",\"name\":\"延川县\"},{\"code\":\"610625\",\"name\":\"志丹县\"},{\"code\":\"610626\",\"name\":\"吴起县\"},{\"code\":\"610627\",\"name\":\"甘泉县\"},{\"code\":\"610628\",\"name\":\"富县\"},{\"code\":\"610629\",\"name\":\"洛川县\"},{\"code\":\"610630\",\"name\":\"宜川县\"},{\"code\":\"610631\",\"name\":\"黄龙县\"},{\"code\":\"610632\",\"name\":\"黄陵县\"},{\"code\":\"610681\",\"name\":\"子长市\"}]},{\"code\":\"610700\",\"name\":\"汉中市\",\"children\":[{\"code\":\"610702\",\"name\":\"汉台区\"},{\"code\":\"610703\",\"name\":\"南郑区\"},{\"code\":\"610722\",\"name\":\"城固县\"},{\"code\":\"610723\",\"name\":\"洋县\"},{\"code\":\"610724\",\"name\":\"西乡县\"},{\"code\":\"610725\",\"name\":\"勉县\"},{\"code\":\"610726\",\"name\":\"宁强县\"},{\"code\":\"610727\",\"name\":\"略阳县\"},{\"code\":\"610728\",\"name\":\"镇巴县\"},{\"code\":\"610729\",\"name\":\"留坝县\"},{\"code\":\"610730\",\"name\":\"佛坪县\"}]},{\"code\":\"610800\",\"name\":\"榆林市\",\"children\":[{\"code\":\"610802\",\"name\":\"榆阳区\"},{\"code\":\"610803\",\"name\":\"横山区\"},{\"code\":\"610822\",\"name\":\"府谷县\"},{\"code\":\"610824\",\"name\":\"靖边县\"},{\"code\":\"610825\",\"name\":\"定边县\"},{\"code\":\"610826\",\"name\":\"绥德县\"},{\"code\":\"610827\",\"name\":\"米脂县\"},{\"code\":\"610828\",\"name\":\"佳县\"},{\"code\":\"610829\",\"name\":\"吴堡县\"},{\"code\":\"610830\",\"name\":\"清涧县\"},{\"code\":\"610831\",\"name\":\"子洲县\"},{\"code\":\"610881\",\"name\":\"神木市\"}]},{\"code\":\"610900\",\"name\":\"安康市\",\"children\":[{\"code\":\"610902\",\"name\":\"汉滨区\"},{\"code\":\"610921\",\"name\":\"汉阴县\"},{\"code\":\"610922\",\"name\":\"石泉县\"},{\"code\":\"610923\",\"name\":\"宁陕县\"},{\"code\":\"610924\",\"name\":\"紫阳县\"},{\"code\":\"610925\",\"name\":\"岚皋县\"},{\"code\":\"610926\",\"name\":\"平利县\"},{\"code\":\"610927\",\"name\":\"镇坪县\"},{\"code\":\"610929\",\"name\":\"白河县\"},{\"code\":\"610981\",\"name\":\"旬阳市\"}]},{\"code\":\"611000\",\"name\":\"商洛市\",\"children\":[{\"code\":\"611002\",\"name\":\"商州区\"},{\"code\":\"611021\",\"name\":\"洛南县\"},{\"code\":\"611022\",\"name\":\"丹凤县\"},{\"code\":\"611023\",\"name\":\"商南县\"},{\"code\":\"611024\",\"name\":\"山阳县\"},{\"code\":\"611025\",\"name\":\"镇安县\"},{\"code\":\"611026\",\"name\":\"柞水县\"}]}]},{\"code\":\"620000\",\"name\":\"甘肃省\",\"children\":[{\"code\":\"620100\",\"name\":\"兰州市\",\"children\":[{\"code\":\"620102\",\"name\":\"城关区\"},{\"code\":\"620103\",\"name\":\"七里河区\"},{\"code\":\"620104\",\"name\":\"西固区\"},{\"code\":\"620105\",\"name\":\"安宁区\"},{\"code\":\"620111\",\"name\":\"红古区\"},{\"code\":\"620121\",\"name\":\"永登县\"},{\"code\":\"620122\",\"name\":\"皋兰县\"},{\"code\":\"620123\",\"name\":\"榆中县\"},{\"code\":\"620171\",\"name\":\"兰州新区\"}]},{\"code\":\"620200\",\"name\":\"嘉峪关市\",\"children\":[{\"code\":\"620201001\",\"name\":\"雄关街道\"},{\"code\":\"620201002\",\"name\":\"钢城街道\"},{\"code\":\"620201100\",\"name\":\"新城镇\"},{\"code\":\"620201101\",\"name\":\"峪泉镇\"},{\"code\":\"620201102\",\"name\":\"文殊镇\"}]},{\"code\":\"620300\",\"name\":\"金昌市\",\"children\":[{\"code\":\"620302\",\"name\":\"金川区\"},{\"code\":\"620321\",\"name\":\"永昌县\"}]},{\"code\":\"620400\",\"name\":\"白银市\",\"children\":[{\"code\":\"620402\",\"name\":\"白银区\"},{\"code\":\"620403\",\"name\":\"平川区\"},{\"code\":\"620421\",\"name\":\"靖远县\"},{\"code\":\"620422\",\"name\":\"会宁县\"},{\"code\":\"620423\",\"name\":\"景泰县\"}]},{\"code\":\"620500\",\"name\":\"天水市\",\"children\":[{\"code\":\"620502\",\"name\":\"秦州区\"},{\"code\":\"620503\",\"name\":\"麦积区\"},{\"code\":\"620521\",\"name\":\"清水县\"},{\"code\":\"620522\",\"name\":\"秦安县\"},{\"code\":\"620523\",\"name\":\"甘谷县\"},{\"code\":\"620524\",\"name\":\"武山县\"},{\"code\":\"620525\",\"name\":\"张家川回族自治县\"}]},{\"code\":\"620600\",\"name\":\"武威市\",\"children\":[{\"code\":\"620602\",\"name\":\"凉州区\"},{\"code\":\"620621\",\"name\":\"民勤县\"},{\"code\":\"620622\",\"name\":\"古浪县\"},{\"code\":\"620623\",\"name\":\"天祝藏族自治县\"}]},{\"code\":\"620700\",\"name\":\"张掖市\",\"children\":[{\"code\":\"620702\",\"name\":\"甘州区\"},{\"code\":\"620721\",\"name\":\"肃南裕固族自治县\"},{\"code\":\"620722\",\"name\":\"民乐县\"},{\"code\":\"620723\",\"name\":\"临泽县\"},{\"code\":\"620724\",\"name\":\"高台县\"},{\"code\":\"620725\",\"name\":\"山丹县\"}]},{\"code\":\"620800\",\"name\":\"平凉市\",\"children\":[{\"code\":\"620802\",\"name\":\"崆峒区\"},{\"code\":\"620821\",\"name\":\"泾川县\"},{\"code\":\"620822\",\"name\":\"灵台县\"},{\"code\":\"620823\",\"name\":\"崇信县\"},{\"code\":\"620825\",\"name\":\"庄浪县\"},{\"code\":\"620826\",\"name\":\"静宁县\"},{\"code\":\"620881\",\"name\":\"华亭市\"}]},{\"code\":\"620900\",\"name\":\"酒泉市\",\"children\":[{\"code\":\"620902\",\"name\":\"肃州区\"},{\"code\":\"620921\",\"name\":\"金塔县\"},{\"code\":\"620922\",\"name\":\"瓜州县\"},{\"code\":\"620923\",\"name\":\"肃北蒙古族自治县\"},{\"code\":\"620924\",\"name\":\"阿克塞哈萨克族自治县\"},{\"code\":\"620981\",\"name\":\"玉门市\"},{\"code\":\"620982\",\"name\":\"敦煌市\"}]},{\"code\":\"621000\",\"name\":\"庆阳市\",\"children\":[{\"code\":\"621002\",\"name\":\"西峰区\"},{\"code\":\"621021\",\"name\":\"庆城县\"},{\"code\":\"621022\",\"name\":\"环县\"},{\"code\":\"621023\",\"name\":\"华池县\"},{\"code\":\"621024\",\"name\":\"合水县\"},{\"code\":\"621025\",\"name\":\"正宁县\"},{\"code\":\"621026\",\"name\":\"宁县\"},{\"code\":\"621027\",\"name\":\"镇原县\"}]},{\"code\":\"621100\",\"name\":\"定西市\",\"children\":[{\"code\":\"621102\",\"name\":\"安定区\"},{\"code\":\"621121\",\"name\":\"通渭县\"},{\"code\":\"621122\",\"name\":\"陇西县\"},{\"code\":\"621123\",\"name\":\"渭源县\"},{\"code\":\"621124\",\"name\":\"临洮县\"},{\"code\":\"621125\",\"name\":\"漳县\"},{\"code\":\"621126\",\"name\":\"岷县\"}]},{\"code\":\"621200\",\"name\":\"陇南市\",\"children\":[{\"code\":\"621202\",\"name\":\"武都区\"},{\"code\":\"621221\",\"name\":\"成县\"},{\"code\":\"621222\",\"name\":\"文县\"},{\"code\":\"621223\",\"name\":\"宕昌县\"},{\"code\":\"621224\",\"name\":\"康县\"},{\"code\":\"621225\",\"name\":\"西和县\"},{\"code\":\"621226\",\"name\":\"礼县\"},{\"code\":\"621227\",\"name\":\"徽县\"},{\"code\":\"621228\",\"name\":\"两当县\"}]},{\"code\":\"622900\",\"name\":\"临夏回族自治州\",\"children\":[{\"code\":\"622901\",\"name\":\"临夏市\"},{\"code\":\"622921\",\"name\":\"临夏县\"},{\"code\":\"622922\",\"name\":\"康乐县\"},{\"code\":\"622923\",\"name\":\"永靖县\"},{\"code\":\"622924\",\"name\":\"广河县\"},{\"code\":\"622925\",\"name\":\"和政县\"},{\"code\":\"622926\",\"name\":\"东乡族自治县\"},{\"code\":\"622927\",\"name\":\"积石山保安族东乡族撒拉族自治县\"}]},{\"code\":\"623000\",\"name\":\"甘南藏族自治州\",\"children\":[{\"code\":\"623001\",\"name\":\"合作市\"},{\"code\":\"623021\",\"name\":\"临潭县\"},{\"code\":\"623022\",\"name\":\"卓尼县\"},{\"code\":\"623023\",\"name\":\"舟曲县\"},{\"code\":\"623024\",\"name\":\"迭部县\"},{\"code\":\"623025\",\"name\":\"玛曲县\"},{\"code\":\"623026\",\"name\":\"碌曲县\"},{\"code\":\"623027\",\"name\":\"夏河县\"}]}]},{\"code\":\"630000\",\"name\":\"青海省\",\"children\":[{\"code\":\"630100\",\"name\":\"西宁市\",\"children\":[{\"code\":\"630102\",\"name\":\"城东区\"},{\"code\":\"630103\",\"name\":\"城中区\"},{\"code\":\"630104\",\"name\":\"城西区\"},{\"code\":\"630105\",\"name\":\"城北区\"},{\"code\":\"630106\",\"name\":\"湟中区\"},{\"code\":\"630121\",\"name\":\"大通回族土族自治县\"},{\"code\":\"630123\",\"name\":\"湟源县\"}]},{\"code\":\"630200\",\"name\":\"海东市\",\"children\":[{\"code\":\"630202\",\"name\":\"乐都区\"},{\"code\":\"630203\",\"name\":\"平安区\"},{\"code\":\"630222\",\"name\":\"民和回族土族自治县\"},{\"code\":\"630223\",\"name\":\"互助土族自治县\"},{\"code\":\"630224\",\"name\":\"化隆回族自治县\"},{\"code\":\"630225\",\"name\":\"循化撒拉族自治县\"}]},{\"code\":\"632200\",\"name\":\"海北藏族自治州\",\"children\":[{\"code\":\"632221\",\"name\":\"门源回族自治县\"},{\"code\":\"632222\",\"name\":\"祁连县\"},{\"code\":\"632223\",\"name\":\"海晏县\"},{\"code\":\"632224\",\"name\":\"刚察县\"}]},{\"code\":\"632300\",\"name\":\"黄南藏族自治州\",\"children\":[{\"code\":\"632301\",\"name\":\"同仁市\"},{\"code\":\"632322\",\"name\":\"尖扎县\"},{\"code\":\"632323\",\"name\":\"泽库县\"},{\"code\":\"632324\",\"name\":\"河南蒙古族自治县\"}]},{\"code\":\"632500\",\"name\":\"海南藏族自治州\",\"children\":[{\"code\":\"632521\",\"name\":\"共和县\"},{\"code\":\"632522\",\"name\":\"同德县\"},{\"code\":\"632523\",\"name\":\"贵德县\"},{\"code\":\"632524\",\"name\":\"兴海县\"},{\"code\":\"632525\",\"name\":\"贵南县\"}]},{\"code\":\"632600\",\"name\":\"果洛藏族自治州\",\"children\":[{\"code\":\"632621\",\"name\":\"玛沁县\"},{\"code\":\"632622\",\"name\":\"班玛县\"},{\"code\":\"632623\",\"name\":\"甘德县\"},{\"code\":\"632624\",\"name\":\"达日县\"},{\"code\":\"632625\",\"name\":\"久治县\"},{\"code\":\"632626\",\"name\":\"玛多县\"}]},{\"code\":\"632700\",\"name\":\"玉树藏族自治州\",\"children\":[{\"code\":\"632701\",\"name\":\"玉树市\"},{\"code\":\"632722\",\"name\":\"杂多县\"},{\"code\":\"632723\",\"name\":\"称多县\"},{\"code\":\"632724\",\"name\":\"治多县\"},{\"code\":\"632725\",\"name\":\"囊谦县\"},{\"code\":\"632726\",\"name\":\"曲麻莱县\"}]},{\"code\":\"632800\",\"name\":\"海西蒙古族藏族自治州\",\"children\":[{\"code\":\"632801\",\"name\":\"格尔木市\"},{\"code\":\"632802\",\"name\":\"德令哈市\"},{\"code\":\"632803\",\"name\":\"茫崖市\"},{\"code\":\"632821\",\"name\":\"乌兰县\"},{\"code\":\"632822\",\"name\":\"都兰县\"},{\"code\":\"632823\",\"name\":\"天峻县\"},{\"code\":\"632857\",\"name\":\"大柴旦行政委员会\"}]}]},{\"code\":\"640000\",\"name\":\"宁夏回族自治区\",\"children\":[{\"code\":\"640100\",\"name\":\"银川市\",\"children\":[{\"code\":\"640104\",\"name\":\"兴庆区\"},{\"code\":\"640105\",\"name\":\"西夏区\"},{\"code\":\"640106\",\"name\":\"金凤区\"},{\"code\":\"640121\",\"name\":\"永宁县\"},{\"code\":\"640122\",\"name\":\"贺兰县\"},{\"code\":\"640181\",\"name\":\"灵武市\"}]},{\"code\":\"640200\",\"name\":\"石嘴山市\",\"children\":[{\"code\":\"640202\",\"name\":\"大武口区\"},{\"code\":\"640205\",\"name\":\"惠农区\"},{\"code\":\"640221\",\"name\":\"平罗县\"}]},{\"code\":\"640300\",\"name\":\"吴忠市\",\"children\":[{\"code\":\"640302\",\"name\":\"利通区\"},{\"code\":\"640303\",\"name\":\"红寺堡区\"},{\"code\":\"640323\",\"name\":\"盐池县\"},{\"code\":\"640324\",\"name\":\"同心县\"},{\"code\":\"640381\",\"name\":\"青铜峡市\"}]},{\"code\":\"640400\",\"name\":\"固原市\",\"children\":[{\"code\":\"640402\",\"name\":\"原州区\"},{\"code\":\"640422\",\"name\":\"西吉县\"},{\"code\":\"640423\",\"name\":\"隆德县\"},{\"code\":\"640424\",\"name\":\"泾源县\"},{\"code\":\"640425\",\"name\":\"彭阳县\"}]},{\"code\":\"640500\",\"name\":\"中卫市\",\"children\":[{\"code\":\"640502\",\"name\":\"沙坡头区\"},{\"code\":\"640521\",\"name\":\"中宁县\"},{\"code\":\"640522\",\"name\":\"海原县\"}]}]},{\"code\":\"650000\",\"name\":\"新疆维吾尔自治区\",\"children\":[{\"code\":\"650100\",\"name\":\"乌鲁木齐市\",\"children\":[{\"code\":\"650102\",\"name\":\"天山区\"},{\"code\":\"650103\",\"name\":\"沙依巴克区\"},{\"code\":\"650104\",\"name\":\"新市区\"},{\"code\":\"650105\",\"name\":\"水磨沟区\"},{\"code\":\"650106\",\"name\":\"头屯河区\"},{\"code\":\"650107\",\"name\":\"达坂城区\"},{\"code\":\"650109\",\"name\":\"米东区\"},{\"code\":\"650121\",\"name\":\"乌鲁木齐县\"}]},{\"code\":\"650200\",\"name\":\"克拉玛依市\",\"children\":[{\"code\":\"650202\",\"name\":\"独山子区\"},{\"code\":\"650203\",\"name\":\"克拉玛依区\"},{\"code\":\"650204\",\"name\":\"白碱滩区\"},{\"code\":\"650205\",\"name\":\"乌尔禾区\"}]},{\"code\":\"650400\",\"name\":\"吐鲁番市\",\"children\":[{\"code\":\"650402\",\"name\":\"高昌区\"},{\"code\":\"650421\",\"name\":\"鄯善县\"},{\"code\":\"650422\",\"name\":\"托克逊县\"}]},{\"code\":\"650500\",\"name\":\"哈密市\",\"children\":[{\"code\":\"650502\",\"name\":\"伊州区\"},{\"code\":\"650521\",\"name\":\"巴里坤哈萨克自治县\"},{\"code\":\"650522\",\"name\":\"伊吾县\"}]},{\"code\":\"652300\",\"name\":\"昌吉回族自治州\",\"children\":[{\"code\":\"652301\",\"name\":\"昌吉市\"},{\"code\":\"652302\",\"name\":\"阜康市\"},{\"code\":\"652323\",\"name\":\"呼图壁县\"},{\"code\":\"652324\",\"name\":\"玛纳斯县\"},{\"code\":\"652325\",\"name\":\"奇台县\"},{\"code\":\"652327\",\"name\":\"吉木萨尔县\"},{\"code\":\"652328\",\"name\":\"木垒哈萨克自治县\"}]},{\"code\":\"652700\",\"name\":\"博尔塔拉蒙古自治州\",\"children\":[{\"code\":\"652701\",\"name\":\"博乐市\"},{\"code\":\"652702\",\"name\":\"阿拉山口市\"},{\"code\":\"652722\",\"name\":\"精河县\"},{\"code\":\"652723\",\"name\":\"温泉县\"}]},{\"code\":\"652800\",\"name\":\"巴音郭楞蒙古自治州\",\"children\":[{\"code\":\"652801\",\"name\":\"库尔勒市\"},{\"code\":\"652822\",\"name\":\"轮台县\"},{\"code\":\"652823\",\"name\":\"尉犁县\"},{\"code\":\"652824\",\"name\":\"若羌县\"},{\"code\":\"652825\",\"name\":\"且末县\"},{\"code\":\"652826\",\"name\":\"焉耆回族自治县\"},{\"code\":\"652827\",\"name\":\"和静县\"},{\"code\":\"652828\",\"name\":\"和硕县\"},{\"code\":\"652829\",\"name\":\"博湖县\"},{\"code\":\"652871\",\"name\":\"库尔勒经济技术开发区\"}]},{\"code\":\"652900\",\"name\":\"阿克苏地区\",\"children\":[{\"code\":\"652901\",\"name\":\"阿克苏市\"},{\"code\":\"652902\",\"name\":\"库车市\"},{\"code\":\"652922\",\"name\":\"温宿县\"},{\"code\":\"652924\",\"name\":\"沙雅县\"},{\"code\":\"652925\",\"name\":\"新和县\"},{\"code\":\"652926\",\"name\":\"拜城县\"},{\"code\":\"652927\",\"name\":\"乌什县\"},{\"code\":\"652928\",\"name\":\"阿瓦提县\"},{\"code\":\"652929\",\"name\":\"柯坪县\"}]},{\"code\":\"653000\",\"name\":\"克孜勒苏柯尔克孜自治州\",\"children\":[{\"code\":\"653001\",\"name\":\"阿图什市\"},{\"code\":\"653022\",\"name\":\"阿克陶县\"},{\"code\":\"653023\",\"name\":\"阿合奇县\"},{\"code\":\"653024\",\"name\":\"乌恰县\"}]},{\"code\":\"653100\",\"name\":\"喀什地区\",\"children\":[{\"code\":\"653101\",\"name\":\"喀什市\"},{\"code\":\"653121\",\"name\":\"疏附县\"},{\"code\":\"653122\",\"name\":\"疏勒县\"},{\"code\":\"653123\",\"name\":\"英吉沙县\"},{\"code\":\"653124\",\"name\":\"泽普县\"},{\"code\":\"653125\",\"name\":\"莎车县\"},{\"code\":\"653126\",\"name\":\"叶城县\"},{\"code\":\"653127\",\"name\":\"麦盖提县\"},{\"code\":\"653128\",\"name\":\"岳普湖县\"},{\"code\":\"653129\",\"name\":\"伽师县\"},{\"code\":\"653130\",\"name\":\"巴楚县\"},{\"code\":\"653131\",\"name\":\"塔什库尔干塔吉克自治县\"}]},{\"code\":\"653200\",\"name\":\"和田地区\",\"children\":[{\"code\":\"653201\",\"name\":\"和田市\"},{\"code\":\"653221\",\"name\":\"和田县\"},{\"code\":\"653222\",\"name\":\"墨玉县\"},{\"code\":\"653223\",\"name\":\"皮山县\"},{\"code\":\"653224\",\"name\":\"洛浦县\"},{\"code\":\"653225\",\"name\":\"策勒县\"},{\"code\":\"653226\",\"name\":\"于田县\"},{\"code\":\"653227\",\"name\":\"民丰县\"}]},{\"code\":\"654000\",\"name\":\"伊犁哈萨克自治州\",\"children\":[{\"code\":\"654002\",\"name\":\"伊宁市\"},{\"code\":\"654003\",\"name\":\"奎屯市\"},{\"code\":\"654004\",\"name\":\"霍尔果斯市\"},{\"code\":\"654021\",\"name\":\"伊宁县\"},{\"code\":\"654022\",\"name\":\"察布查尔锡伯自治县\"},{\"code\":\"654023\",\"name\":\"霍城县\"},{\"code\":\"654024\",\"name\":\"巩留县\"},{\"code\":\"654025\",\"name\":\"新源县\"},{\"code\":\"654026\",\"name\":\"昭苏县\"},{\"code\":\"654027\",\"name\":\"特克斯县\"},{\"code\":\"654028\",\"name\":\"尼勒克县\"}]},{\"code\":\"654200\",\"name\":\"塔城地区\",\"children\":[{\"code\":\"654201\",\"name\":\"塔城市\"},{\"code\":\"654202\",\"name\":\"乌苏市\"},{\"code\":\"654203\",\"name\":\"沙湾市\"},{\"code\":\"654221\",\"name\":\"额敏县\"},{\"code\":\"654224\",\"name\":\"托里县\"},{\"code\":\"654225\",\"name\":\"裕民县\"},{\"code\":\"654226\",\"name\":\"和布克赛尔蒙古自治县\"}]},{\"code\":\"654300\",\"name\":\"阿勒泰地区\",\"children\":[{\"code\":\"654301\",\"name\":\"阿勒泰市\"},{\"code\":\"654321\",\"name\":\"布尔津县\"},{\"code\":\"654322\",\"name\":\"富蕴县\"},{\"code\":\"654323\",\"name\":\"福海县\"},{\"code\":\"654324\",\"name\":\"哈巴河县\"},{\"code\":\"654325\",\"name\":\"青河县\"},{\"code\":\"654326\",\"name\":\"吉木乃县\"}]},{\"code\":\"659000\",\"name\":\"自治区直辖县级行政区划\",\"children\":[{\"code\":\"659001\",\"name\":\"石河子市\"},{\"code\":\"659002\",\"name\":\"阿拉尔市\"},{\"code\":\"659003\",\"name\":\"图木舒克市\"},{\"code\":\"659004\",\"name\":\"五家渠市\"},{\"code\":\"659005\",\"name\":\"北屯市\"},{\"code\":\"659006\",\"name\":\"铁门关市\"},{\"code\":\"659007\",\"name\":\"双河市\"},{\"code\":\"659008\",\"name\":\"可克达拉市\"},{\"code\":\"659009\",\"name\":\"昆玉市\"},{\"code\":\"659010\",\"name\":\"胡杨河市\"},{\"code\":\"659011\",\"name\":\"新星市\"}]}]}]"), NewbieAddress_default = /* @__PURE__ */ defineComponent({
	name: "NewbieAddress",
	props: {
		value: {
			type: [
				String,
				Number,
				Array
			],
			default: () => []
		},
		level: {
			type: Number,
			default: 3
		},
		disabled: {
			type: Boolean,
			default: !1
		},
		placeholder: {
			type: String,
			default: "请选择地区"
		},
		url: {
			type: String,
			default: ""
		},
		afterFetched: {
			type: Function,
			default: null
		},
		dataSource: {
			type: Array,
			default: () => []
		}
	},
	emits: ["update:value"],
	setup(e, { emit: n }) {
		let r = reactive({
			items: e.dataSource,
			value: e.value
		});
		watch(() => e.dataSource, () => {
			r.items = e.dataSource;
		}), r.items.length === 0 && (e.url ? i() : r.items = addressData_default);
		let i = async () => {
			let n = await useFetch().get(e.url);
			e.afterFetched && (n = e.afterFetched(n)), r.items = n;
		}, a = (e) => {
			n("update:value", e);
		};
		return () => createVNode(Cascader, {
			value: r.value,
			"onUpdate:value": (e) => r.value = e,
			fieldNames: {
				label: "name",
				value: "code",
				children: "children"
			},
			allowClear: !0,
			placeholder: e.placeholder,
			disabled: e.disabled,
			options: r.items,
			changeOnSelect: !0,
			showSearch: !0,
			onChange: a
		}, null);
	}
});
function useAddressFullCode$1(e, n) {
	if (e += "", e && e.length === 6) {
		if (n ||= /0000$/.test(e) ? 1 : /00$/.test(e) ? 2 : 3, n === 1) return [`${e.substr(0, 2)}0000`];
		if (n === 2) return [`${e.substr(0, 2)}0000`, `${e.substr(0, 4)}00`];
		if (n === 3) return [
			`${e.substr(0, 2)}0000`,
			`${e.substr(0, 4)}00`,
			e
		];
	}
	return [];
}
var withInstall_default = (e) => (e.install = (n) => {
	let r = e.name || e.__name;
	n.component(r, e);
}, e);
const useAddressFullCode = useAddressFullCode$1, NewbieAddress = withInstall_default(NewbieAddress_default);
var NewbieButton_default = /* @__PURE__ */ defineComponent({
	name: "NewbieButton",
	props: {
		type: {
			type: String,
			default: "default"
		},
		size: {
			type: String,
			default: "middle"
		},
		disabled: {
			type: Boolean,
			default: !1
		},
		danger: {
			type: Boolean,
			default: !1
		},
		label: {
			type: String,
			default: ""
		},
		icon: {
			type: Object,
			default: null
		},
		iconPosition: {
			type: String,
			default: "left"
		},
		fetcher: {
			type: Object,
			default: () => ({ loading: !1 })
		},
		buttonProps: {
			type: Object,
			default: () => ({})
		}
	},
	emits: ["click"],
	setup(e, { emit: n, slots: r }) {
		let i = (e) => {
			n("click", e);
		}, a = () => e.label || r.default(), o = () => e.icon && e.iconPosition === "left" ? [e.icon, a()] : e.icon && e.iconPosition === "right" ? [a(), e.icon] : [a()];
		return () => createVNode(Button, mergeProps({
			danger: e.danger,
			loading: e.fetcher.loading,
			type: e.type,
			size: e.size,
			disabled: e.disabled,
			onClick: i
		}, e.buttonProps), { default: () => o() });
	}
});
const NewbieButton = withInstall_default(NewbieButton_default);
function genErrorInfo(e) {
	let n = `请使用 '@${e}' 事件,不要放在 props 中`;
	return n += `\nPlease use '@${e}' event instead of props`, n;
}
var __plugin_vue_export_helper_default = (e, n) => {
	let r = e.__vccOpts || e;
	for (let [e, i] of n) r[e] = i;
	return r;
}, _sfc_main$1 = defineComponent({
	props: {
		mode: {
			type: String,
			default: "default"
		},
		defaultContent: {
			type: Array,
			default: () => []
		},
		defaultHtml: {
			type: String,
			default: ""
		},
		defaultConfig: {
			type: Object,
			default: () => ({})
		},
		modelValue: {
			type: String,
			default: ""
		}
	},
	emits: [
		"update:modelValue",
		"onCreated",
		"onChange",
		"onDestroyed",
		"onMaxLength",
		"onFocus",
		"onBlur",
		"customAlert",
		"customPaste"
	],
	setup(e, n) {
		let r = ref(null), i = shallowRef(null), a = ref(""), o = (o) => {
			if (!r.value) return;
			let s = toRaw(e.defaultContent);
			o({
				selector: r.value,
				mode: e.mode,
				content: s || [],
				html: e.defaultHtml || e.modelValue || "",
				config: {
					...e.defaultConfig,
					onCreated(r) {
						if (i.value = r, n.emit("onCreated", r), e.defaultConfig.onCreated) {
							let e = genErrorInfo("onCreated");
							throw Error(e);
						}
					},
					onChange(r) {
						let i = r.getHtml();
						if (a.value = i, n.emit("update:modelValue", i), n.emit("onChange", r), e.defaultConfig.onChange) {
							let e = genErrorInfo("onChange");
							throw Error(e);
						}
					},
					onDestroyed(r) {
						if (n.emit("onDestroyed", r), e.defaultConfig.onDestroyed) {
							let e = genErrorInfo("onDestroyed");
							throw Error(e);
						}
					},
					onMaxLength(r) {
						if (n.emit("onMaxLength", r), e.defaultConfig.onMaxLength) {
							let e = genErrorInfo("onMaxLength");
							throw Error(e);
						}
					},
					onFocus(r) {
						if (n.emit("onFocus", r), e.defaultConfig.onFocus) {
							let e = genErrorInfo("onFocus");
							throw Error(e);
						}
					},
					onBlur(r) {
						if (n.emit("onBlur", r), e.defaultConfig.onBlur) {
							let e = genErrorInfo("onBlur");
							throw Error(e);
						}
					},
					customAlert(r, i) {
						if (n.emit("customAlert", r, i), e.defaultConfig.customAlert) {
							let e = genErrorInfo("customAlert");
							throw Error(e);
						}
					},
					customPaste: (r, i) => {
						if (e.defaultConfig.customPaste) {
							let e = genErrorInfo("customPaste");
							throw Error(e);
						}
						let a;
						return n.emit("customPaste", r, i, (e) => {
							a = e;
						}), a;
					}
				}
			});
		};
		function s(e) {
			i.value?.setHtml(e);
		}
		return onMounted(() => {
			import("./index.esm-CbYldqXv.js").then((e) => {
				o(e.createEditor);
			});
		}), watch(() => e.modelValue, (e) => {
			e !== a.value && s(e);
		}), { box: r };
	}
}), _hoisted_1$1 = {
	ref: "box",
	style: { height: "100%" }
};
function _sfc_render$1(e, n, r, i, a, o) {
	return openBlock(), createElementBlock("div", _hoisted_1$1, null, 512);
}
var WangEditor_default = /* @__PURE__ */ __plugin_vue_export_helper_default(_sfc_main$1, [["render", _sfc_render$1]]), _sfc_main = defineComponent({
	props: {
		editor: {
			type: Object,
			default: () => null
		},
		mode: {
			type: String,
			default: "default"
		},
		defaultConfig: {
			type: Object,
			default: () => ({})
		}
	},
	setup(e) {
		let n = ref(null), r = (r) => {
			if (n.value) {
				if (r == null) throw Error("Not found instance of Editor when create <Toolbar/> component");
				import("./index.esm-CbYldqXv.js").then((i) => {
					i.DomEditor.getToolbar(r) || i.createToolbar({
						editor: r,
						selector: n.value || "<div></div>",
						mode: e.mode,
						config: e.defaultConfig
					});
				});
			}
		};
		return onMounted(() => {
			watchEffect(() => {
				let { editor: n } = e;
				n != null && r(n);
			});
		}), { selector: n };
	}
}), _hoisted_1 = { ref: "selector" };
function _sfc_render(e, n, r, i, a, o) {
	return openBlock(), createElementBlock("div", _hoisted_1, null, 512);
}
var WangToolbar_default = /* @__PURE__ */ __plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
const NEWBIE_LOCALE = Symbol("NEWBIE_LOCALE"), NEWBIE_EDITOR = Symbol("NEWBIE_EDITOR"), NEWBIE_TABLE = Symbol("NEWBIE_TABLE"), NEWBIE_UPLOADER = Symbol("NEWBIE_UPLOADER"), NEWBIE_FORM = Symbol("NEWBIE_FORM"), NEWBIE_SEARCH = Symbol("NEWBIE_SEARCH");
var NewbieProvider_default = /* @__PURE__ */ defineComponent({
	name: "NewbieProvider",
	props: {
		editor: {
			type: Object,
			default: () => ({ uploadUrl: "" })
		},
		table: {
			type: Object,
			default: () => ({
				page: 1,
				pageSize: 10,
				pageKey: "page",
				pageSizeKey: "pageSize",
				afterFetched: null
			})
		},
		uploader: {
			type: Object,
			default: () => ({
				uploadUrl: "",
				defaultFileItem: {
					id: "id",
					name: "name",
					url: "url",
					path: "path",
					thumbUrl: "thumbUrl"
				},
				defaultPreview: null
			})
		},
		form: {
			type: Object,
			default: () => ({
				format: {},
				afterFetched: null,
				columns: {}
			})
		},
		search: {
			type: Object,
			default: () => ({
				maskClass: "",
				inputClass: "",
				valueFormatter: null
			})
		},
		locale: {
			type: String,
			default: "zh_CN"
		}
	},
	setup(e, { slots: n }) {
		let { locale: r } = useI18n();
		return watch(() => e.locale, (e) => {
			e && (r.value = e);
		}, { immediate: !0 }), provide(NEWBIE_LOCALE, e.locale), provide(NEWBIE_EDITOR, {
			uploadUrl: "",
			...e.editor
		}), provide(NEWBIE_TABLE, {
			page: 1,
			pageSize: 10,
			pageKey: "page",
			pageSizeKey: "pageSize",
			afterFetched: null,
			...e.table
		}), provide(NEWBIE_UPLOADER, {
			defaultFileItem: {
				id: "id",
				name: "name",
				url: "url",
				path: "path",
				thumbUrl: "thumbUrl"
			},
			...e.uploader
		}), provide(NEWBIE_FORM, {
			format: {},
			...e.form
		}), provide(NEWBIE_SEARCH, {
			maskClass: "",
			inputClass: "",
			valueFormatter: null,
			...e.search
		}), () => createVNode("div", null, [n.default?.()]);
	}
}), NewbieEditor_default = /* @__PURE__ */ defineComponent({
	name: "NewbieEditor",
	props: {
		value: {
			type: String,
			default: ""
		},
		placeholder: {
			type: String,
			default: ""
		},
		disabled: {
			type: Boolean,
			default: !1
		},
		readonly: {
			type: Boolean,
			default: !1
		},
		config: {
			type: Object,
			default: () => ({
				toolbarConfig: {},
				editorConfig: {}
			})
		}
	},
	emits: ["update:value"],
	setup(e, { emit: n, expose: r }) {
		let i = Form.useInjectFormItemContext(), a = shallowRef(), o = ref(""), s = ref({
			excludeKeys: ["group-video", "emotion"],
			...e.config?.toolbarConfig
		}), { uploadUrl: c } = inject(NEWBIE_EDITOR, () => ({})), l = ref({
			placeholder: e.placeholder || useT("form.please-input", { title: useT("common.content") }),
			readOnly: e.disabled || e.readonly,
			MENU_CONF: { uploadImage: { async customUpload(e, n) {
				let r = new FormData();
				r.append("file", e);
				try {
					let e = await useFetch().post(c, r);
					useProcessStatusSuccess(e, () => {
						let { url: r, alt: i, href: a } = e.result;
						n(r, i, a);
					});
				} catch (e) {
					console.log(e);
				}
			} } },
			...e.config?.editorConfig
		}), u = (e) => {
			a.value && a.value.setHtml(e);
		}, d = () => a?.value;
		onBeforeUnmount(() => {
			a.value?.destroy();
		}), watch(() => e.value, (e) => {
			e !== o.value && a.value && u(e);
		});
		let f = (n) => {
			a.value = n, u(e.value), n.on("fullScreen", () => {
				document.body.classList.add("fullscreen");
			}), n.on("unFullScreen", () => {
				document.body.classList.remove("fullscreen");
			}), !e.disabled && !e.readonly && (g.value = v());
		}, p = (r) => {
			let a = r.getHtml();
			r.isEmpty() && (a = ""), a !== e.value && (n("update:value", a), i.onFieldChange());
		}, m = async (e, n) => {
			switch (n) {
				case "success":
					message.success(e);
					break;
				case "info":
					message.info(e);
					break;
				case "warning":
					message.warning(e);
					break;
				case "error":
					message.error(e);
					break;
				default:
					message.info(e);
					break;
			}
		};
		r({
			setContent: u,
			getEditor: d
		});
		let g = ref(), _ = ref(), v = () => a?.value?.destroy ? createVNode(WangToolbar_default, {
			editor: a.value,
			defaultConfig: s.value,
			style: "border-bottom: 1px solid #f0f0f0"
		}, null) : createVNode("div", null, null), b = () => createVNode(WangEditor_default, {
			modelValue: o.value,
			"onUpdate:modelValue": (e) => o.value = e,
			defaultConfig: l.value,
			style: "height: 400px; overflow-y: hidden",
			onOnChange: p,
			onOnCreated: f,
			onCustomAlert: m
		}, null);
		return onMounted(() => {
			_.value = b();
		}), () => createVNode("div", { style: "border: 1px solid #f0f0f0" }, [g.value, _.value]);
	}
});
const NewbieEditor = withInstall_default(NewbieEditor_default);
var genPixel = (e) => isNull(e) || isUndefined(e) ? "auto" : isNaN(e) ? e : `${e}px`, initItemDefaultValue = (e, n, r, i) => {
	let a = "", { uploaderProvider: o } = i;
	if (n && !isUndefined(n[e.key]) ? a = n[e.key] : isUndefined(e.defaultValue) || (a = isFunction(e.defaultValue) ? e.defaultValue({
		submitForm: r,
		existingData: n
	}) : e.defaultValue), e.init && isFunction(e.init) && (a = e.init({
		submitForm: r,
		value: a,
		existingData: n
	})), e.type === "number" || e.type === "slider" || e.type === "rate") a = useNumber(a);
	else if (e.type === "select" || e.type === "remote") e.defaultProps && (e.defaultProps.mode === "multiple" || e.defaultProps.mode === "tags") ? a ||= [] : a ||= void 0;
	else if (e.type === "tree-select") e.defaultProps && (e.defaultProps.multiple === !0 || e.defaultProps.treeCheckable === !0) ? a ||= [] : a ||= void 0;
	else if (e.type === "date" || e.type === "time") a = e.defaultProps && e.defaultProps.type === "range" ? a ? [useDayjs(a[0]), useDayjs(a[1])] : [] : a ? useDayjs(a) : null;
	else if (e.type === "address") a ||= [], isArray(a) || (a = useAddressFullCode$1(a));
	else if (e.type === "uploader") if (e.defaultProps && e.defaultProps.maxNum && e.defaultProps.maxNum > 1) a ||= [];
	else {
		let { path: e, url: n } = o.defaultFileItem;
		a ||= {
			[e]: "",
			[n]: ""
		};
	}
	else [
		"matrix-checkbox",
		"matrix-radio",
		"matrix-scale",
		"rate-radio"
	].includes(e.type) ? a ||= {} : [
		"group",
		"tag",
		"checkbox",
		"rate-checkbox"
	].includes(e.type) && (a ||= []);
	return a;
}, isOptionalChecked = (e, n) => {
	let r = n[e.key];
	return !(isObject(r) && !Object.keys(r).length || isArray(r) && !r.length || r === "" || r === !1 || r == null || r === 0);
}, placeholder = (e, n) => {
	let { t: r, locale: i } = useI18n(), a = i.value === "en_US" ? e.title?.toLowerCase() : e.title;
	return n === "select" ? e.placeholder || r("form.please-select", { title: a }) : n === "upload" ? e.placeholder || r("form.please-upload", { title: a }) : e.placeholder || r("form.please-input", { title: a });
}, Date_default = (e, n) => {
	let r = DatePicker, i = placeholder(e, "select");
	return e.defaultProps && e.defaultProps.type === "range" && (r = RangePicker, i = isString(e.placeholder) ? [e.placeholder, e.placeholder] : [i, i]), createVNode(r, mergeProps({
		value: n[e.key],
		"onUpdate:value": (r) => n[e.key] = r,
		allowClear: !0,
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		placeholder: i,
		style: e.style || { width: genPixel(e.width || "200px") },
		class: {
			readonly: e.readonly,
			...e.class
		}
	}, e.defaultProps), { ...e.defaultSlots });
}, Time_default = (e, n) => {
	let r = TimePicker, i = placeholder(e, "select");
	return e.defaultProps && e.defaultProps.type === "range" && (r = TimeRangePicker, i = isString(e.placeholder) ? [e.placeholder, e.placeholder] : [i, i]), createVNode(r, mergeProps({
		value: n[e.key],
		"onUpdate:value": (r) => n[e.key] = r,
		allowClear: !0,
		placeholder: i,
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		style: e.style || { width: genPixel(e.width || "200px") },
		class: {
			readonly: e.readonly,
			...e.class
		}
	}, e.defaultProps), { ...e.defaultSlots });
}, Input_default = (e, n) => {
	(n[e.key] === null || n[e.key] === "null" || n[e.key] === void 0) && (n[e.key] = ""), n[e.key] = String(n[e.key]);
	let r = {};
	e.defaultProps && (e.defaultProps.prefix && (r.prefix = () => isFunction(e.defaultProps.prefix) ? e.defaultProps.prefix() : e.defaultProps.prefix), e.defaultProps.suffix && (r.suffix = () => isFunction(e.defaultProps.suffix) ? e.defaultProps.suffix() : e.defaultProps.suffix), e.defaultProps.prepend && (r.addonBefore = () => isFunction(e.defaultProps.prepend) ? e.defaultProps.prepend() : e.defaultProps.prepend), e.defaultProps.append && (r.addonAfter = () => isFunction(e.defaultProps.append) ? e.defaultProps.append() : e.defaultProps.append));
	let i = { width: genPixel(e.width || "200px") }, a = Input;
	return (e.type === "textarea" || e.defaultProps && e.defaultProps.type === "textarea") && (a = Input.TextArea, i = { width: genPixel(e.width || "100%") }), (e.type === "password" || e.defaultProps && e.defaultProps.type === "password") && (a = Input.Password), createVNode(a, mergeProps({
		value: n[e.key],
		"onUpdate:value": (r) => n[e.key] = r,
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		placeholder: placeholder(e),
		style: e.style || i,
		class: {
			readonly: e.readonly,
			...e.class
		}
	}, e.defaultProps), {
		...r,
		...e.defaultSlots
	});
};
function _isSlot$11(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
}
var Tag_default = (e, n, r) => {
	Object.keys(r).length || (r.value = null);
	let i = n[e.key]?.length ? n[e.key].map((r) => createVNode(Tag, {
		key: r,
		closable: !e.disabled,
		style: { marginBottom: "10px" },
		onClose: () => {
			n[e.key] = n[e.key].filter((e) => e !== r);
		}
	}, _isSlot$11(r) ? r : { default: () => [r] })) : null, a = null;
	return a = e.disabled || e.readonly ? null : e.defaultProps?.inputType === "time" ? createVNode(TimePicker, {
		value: r.value,
		"onUpdate:value": (e) => r.value = e,
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		format: e.defaultProps?.format || "HH:mm",
		onChange: (i) => {
			if (!i) return;
			let a = i.format(e.defaultProps?.format || "HH:mm");
			if (n[e.key].indexOf(a) !== -1) {
				message.warn("时间已存在");
				return;
			}
			n[e.key].push(a), nextTick(() => {
				r.value = "";
			});
		}
	}, null) : e.defaultProps?.inputType === "time_range" ? createVNode(TimeRangePicker, {
		value: r.value,
		"onUpdate:value": (e) => r.value = e,
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		format: e.defaultProps?.format || "HH:mm",
		onChange: (i) => {
			if (!i) return;
			let a = [i[0].format(e.defaultProps?.format || "HH:mm"), i[1].format(e.defaultProps?.format || "HH:mm")];
			if (a = a.join("至"), n[e.key].indexOf(a) !== -1) {
				message.warn("时间已存在");
				return;
			}
			n[e.key].push(a), nextTick(() => {
				r.value = [];
			});
		}
	}, null) : createVNode(Input, {
		value: r.value,
		"onUpdate:value": (e) => r.value = e,
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		placeholder: e.placeholder || "按Enter键确认",
		style: e.style || { width: genPixel(e.width || "200px") },
		onPressEnter: withModifiers((i) => {
			if (i.preventDefault(), i.keyCode === 13 && r.value) {
				if (n[e.key].indexOf(r.value) !== -1) {
					message.warn("标签已存在");
					return;
				}
				n[e.key].push(r.value), r.value = "";
			}
		}, ["stop"])
	}, { prefix: () => createVNode(PlusOutlined, null, null) }), createVNode("div", { class: "newbie-form-tag" }, [[i, a]]);
}, Select_default = (e, n) => {
	let r = isFunction(e.options) ? e.options(n) : e.options;
	return r = r.map((e) => isString(e) || isNumber(e) ? {
		value: e,
		label: e
	} : e), createVNode(Select, mergeProps({
		value: n[e.key],
		"onUpdate:value": (r) => n[e.key] = r,
		options: r,
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		allowClear: !0,
		placeholder: placeholder(e, "select"),
		dropdownMatchSelectWidth: !e.width,
		showSearch: !0,
		optionFilterProp: "label",
		style: e.style || (e.width ? { width: genPixel(e.width) } : {}),
		class: {
			readonly: e.readonly,
			...e.class
		}
	}, e.defaultProps), { ...e.defaultSlots });
}, TreeSelect_default = (e, n) => {
	let r = isFunction(e.options) ? e.options(n) : e.options;
	return createVNode(TreeSelect, mergeProps({
		value: n[e.key],
		"onUpdate:value": (r) => n[e.key] = r,
		treeData: r,
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		treeDefaultExpandAll: !0,
		treeNodeFilterProp: "label",
		showSearch: !0,
		allowClear: !0,
		placeholder: placeholder(e, "select"),
		dropdownMatchSelectWidth: !e.width,
		style: e.style || (e.width ? { width: genPixel(e.width) } : {}),
		class: {
			readonly: e.readonly,
			...e.class
		}
	}, e.defaultProps), { ...e.defaultSlots });
}, Remote_default = (e, n, r) => {
	if (Object.keys(r).length || (r.fetcher = { loading: !1 }, r.options = [], r.init = !1), !r.init) {
		r.init = !0;
		let i = [];
		e.options && (i = isFunction(e.options) ? e.options(n) : e.options, i = i.map((e) => isString(e) || isNumber(e) ? {
			value: e,
			label: e
		} : e)), r.options = i;
	}
	let i = e.method || "get";
	if (["get", "post"].indexOf(i) === -1) return console.error(`${e.key}: method must be 'get' or 'post' in "remote" type`), null;
	if (!e.url) return console.error(`${e.key}: url is required in "remote" type`), null;
	let a = debounce(async (n) => {
		if (n = n.trim(), !n) return;
		let a = await useFetch(r.fetcher)[i](e.url, { params: {
			[e.keyword || "keyword"]: n,
			...e.params
		} });
		useProcessStatusSuccess(a, () => {
			e.onSearch && (a.result = e.onSearch(a.result)), r.options = a.result;
		});
	}, 1e3);
	return createVNode(Select, mergeProps({
		value: n[e.key],
		"onUpdate:value": (r) => n[e.key] = r,
		options: r.options,
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		showSearch: !0,
		allowClear: !0,
		filterOption: !1,
		notFoundContent: r.fetcher.loading ? void 0 : useT("common.no-content"),
		placeholder: placeholder(e, "select"),
		dropdownMatchSelectWidth: !e.width,
		style: e.style || (e.width ? { width: genPixel(e.width) } : {}),
		class: {
			readonly: e.readonly,
			...e.class
		},
		onSearch: a
	}, e.defaultProps), {
		notFoundContent: () => r.fetcher.loading ? createVNode(Spin, null, null) : "",
		...e.defaultSlots
	});
}, Address_default = (e, n) => createVNode(NewbieAddress_default, mergeProps({
	value: n[e.key],
	"onUpdate:value": (r) => n[e.key] = r,
	disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
	placeholder: placeholder(e, "select"),
	class: {
		readonly: e.readonly,
		...e.class
	},
	style: e.style || { width: genPixel(e.width || "200px") }
}, e.defaultProps), null), Cascader_default = (e, n) => {
	let r = isFunction(e.options) ? e.options(n) : e.options;
	return (isNumber(n[e.key]) || isString(n[e.key])) && (n[e.key] = useFindParentValues(r, n[e.key], e.defaultProps?.fieldNames)), createVNode(Cascader, mergeProps({
		value: n[e.key],
		"onUpdate:value": (r) => n[e.key] = r,
		allowClear: !0,
		options: r,
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		changeOnSelect: !0,
		showSearch: { filter(e, n) {
			return n.some((n) => n.label && n.label.toLowerCase().indexOf(e.toLowerCase()) > -1);
		} },
		placeholder: placeholder(e, "select"),
		style: e.style || { width: genPixel(e.width || "200px") },
		class: {
			readonly: e.readonly,
			...e.class
		}
	}, e.defaultProps), { ...e.defaultSlots });
}, Number_default = (e, n) => (n[e.key] = Number(n[e.key]) || 0, createVNode(InputNumber, mergeProps({
	value: n[e.key],
	"onUpdate:value": (r) => n[e.key] = r,
	disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
	placeholder: placeholder(e),
	style: e.style || { width: genPixel(e.width) || "100px" },
	class: {
		readonly: e.readonly,
		...e.class
	}
}, e.defaultProps), { ...e.defaultSlots }));
function _isSlot$10(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
}
var Switch_default = (e, n) => {
	let r = {
		checkedChildren: () => e.options?.[0] || null,
		unCheckedChildren: () => e.options?.[1] || null
	};
	return createVNode(Switch, mergeProps({
		checked: n[e.key],
		"onUpdate:checked": (r) => n[e.key] = r,
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		style: e.style || {}
	}, e.defaultProps), _isSlot$10(r) ? r : { default: () => [r] });
};
function _isSlot$9(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
}
var Radio_default = (e, n) => {
	let r, i = isFunction(e.options) ? e.options(n) : e.options;
	return i = i.map((e) => isString(e) || isNumber(e) ? {
		value: e,
		label: e
	} : e), e.readonly ? createVNode("div", { style: { padding: "0 11px" } }, [createVNode(Tag, null, _isSlot$9(r = useLabelFromOptionsValue(n[e.key], i)) ? r : { default: () => [r] })]) : createVNode(RadioGroup, mergeProps({
		value: n[e.key],
		"onUpdate:value": (r) => n[e.key] = r,
		optionType: "button",
		buttonStyle: "solid",
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		options: i,
		style: e.style || {}
	}, e.defaultProps), { ...e.defaultSlots });
};
function _isSlot$8(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
}
var Checkbox_default = (e, n) => {
	let r = isFunction(e.options) ? e.options(n) : e.options;
	return r = r.map((e) => isString(e) || isNumber(e) ? {
		value: e,
		label: e
	} : e), e.readonly ? createVNode("div", { style: { padding: "0 11px" } }, [useFindLabelsInValues(r, n[e.key]).map((e) => createVNode(Tag, { style: { marginRight: "5px" } }, _isSlot$8(e) ? e : { default: () => [e] }))]) : createVNode(CheckboxGroup, mergeProps({
		value: n[e.key],
		"onUpdate:value": (r) => n[e.key] = r,
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		options: r,
		shape: "square",
		style: e.style || {}
	}, e.defaultProps), { ...e.defaultSlots });
}, Html_default = (e, n) => n[e.key] ? createVNode("div", mergeProps({
	style: e.style || {},
	innerHTML: n[e.key]
}, e.defaultProps), null) : null, import_resumable = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((e, n) => {
	(function() {
		var e = function(n) {
			if (!(this instanceof e)) return new e(n);
			if (this.version = 1, this.support = typeof File < "u" && typeof Blob < "u" && typeof FileList < "u" && (!!Blob.prototype.webkitSlice || !!Blob.prototype.mozSlice || !!Blob.prototype.slice || !1), !this.support) return !1;
			var r = this;
			r.files = [], r.defaults = {
				chunkSize: 1 * 1024 * 1024,
				forceChunkSize: !1,
				simultaneousUploads: 3,
				fileParameterName: "file",
				chunkNumberParameterName: "resumableChunkNumber",
				chunkSizeParameterName: "resumableChunkSize",
				currentChunkSizeParameterName: "resumableCurrentChunkSize",
				totalSizeParameterName: "resumableTotalSize",
				typeParameterName: "resumableType",
				identifierParameterName: "resumableIdentifier",
				fileNameParameterName: "resumableFilename",
				relativePathParameterName: "resumableRelativePath",
				totalChunksParameterName: "resumableTotalChunks",
				throttleProgressCallbacks: .5,
				query: {},
				headers: {},
				preprocess: null,
				method: "multipart",
				uploadMethod: "POST",
				testMethod: "GET",
				prioritizeFirstAndLastChunk: !1,
				target: "/",
				testTarget: null,
				parameterNamespace: "",
				testChunks: !0,
				generateUniqueIdentifier: null,
				getTarget: null,
				maxChunkRetries: 100,
				chunkRetryInterval: void 0,
				permanentErrors: [
					400,
					404,
					415,
					500,
					501
				],
				maxFiles: void 0,
				withCredentials: !1,
				xhrTimeout: 0,
				clearInput: !0,
				chunkFormat: "blob",
				setChunkTypeFromFile: !1,
				maxFilesErrorCallback: function(e, n) {
					var i = r.getOpt("maxFiles");
					alert("Please upload no more than " + i + " file" + (i === 1 ? "" : "s") + " at a time.");
				},
				minFileSize: 1,
				minFileSizeErrorCallback: function(e, n) {
					alert(e.fileName || e.name + " is too small, please upload files larger than " + i.formatSize(r.getOpt("minFileSize")) + ".");
				},
				maxFileSize: void 0,
				maxFileSizeErrorCallback: function(e, n) {
					alert(e.fileName || e.name + " is too large, please upload files less than " + i.formatSize(r.getOpt("maxFileSize")) + ".");
				},
				fileType: [],
				fileTypeErrorCallback: function(e, n) {
					alert(e.fileName || e.name + " has type not allowed, please upload files of type " + r.getOpt("fileType") + ".");
				}
			}, r.opts = n || {}, r.getOpt = function(n) {
				var r = this;
				if (n instanceof Array) {
					var a = {};
					return i.each(n, function(e) {
						a[e] = r.getOpt(e);
					}), a;
				}
				if (r instanceof p) {
					if (r.opts[n] !== void 0) return r.opts[n];
					r = r.fileObj;
				}
				if (r instanceof f) {
					if (r.opts[n] !== void 0) return r.opts[n];
					r = r.resumableObj;
				}
				if (r instanceof e) return r.opts[n] === void 0 ? r.defaults[n] : r.opts[n];
			}, r.events = [], r.on = function(e, n) {
				r.events.push(e.toLowerCase(), n);
			}, r.fire = function() {
				for (var e = [], n = 0; n < arguments.length; n++) e.push(arguments[n]);
				for (var i = e[0].toLowerCase(), n = 0; n <= r.events.length; n += 2) r.events[n] == i && r.events[n + 1].apply(r, e.slice(1)), r.events[n] == "catchall" && r.events[n + 1].apply(null, e);
				i == "fileerror" && r.fire("error", e[2], e[1]), i == "fileprogress" && r.fire("progress");
			};
			var i = {
				stopEvent: function(e) {
					e.stopPropagation(), e.preventDefault();
				},
				each: function(e, n) {
					if (e.length !== void 0) {
						for (var r = 0; r < e.length; r++) if (n(e[r]) === !1) return;
					} else for (r in e) if (n(r, e[r]) === !1) return;
				},
				generateUniqueIdentifier: function(e, n) {
					var i = r.getOpt("generateUniqueIdentifier");
					if (typeof i == "function") return i(e, n);
					var a = e.webkitRelativePath || e.fileName || e.name;
					return e.size + "-" + a.replace(/[^0-9a-zA-Z_-]/gim, "");
				},
				contains: function(e, n) {
					var r = !1;
					return i.each(e, function(e) {
						return e == n ? (r = !0, !1) : !0;
					}), r;
				},
				formatSize: function(e) {
					return e < 1024 ? e + " bytes" : e < 1024 * 1024 ? (e / 1024).toFixed(0) + " KB" : e < 1024 * 1024 * 1024 ? (e / 1024 / 1024).toFixed(1) + " MB" : (e / 1024 / 1024 / 1024).toFixed(1) + " GB";
				},
				getTarget: function(e, n) {
					var i = r.getOpt("target");
					if (e === "test" && r.getOpt("testTarget") && (i = r.getOpt("testTarget") === "/" ? r.getOpt("target") : r.getOpt("testTarget")), typeof i == "function") return i(n);
					var a = i.indexOf("?") < 0 ? "?" : "&", o = n.join("&");
					return i + a + o;
				}
			}, a = function(e) {
				i.stopEvent(e), e.dataTransfer && e.dataTransfer.items ? u(e.dataTransfer.items, e) : e.dataTransfer && e.dataTransfer.files && u(e.dataTransfer.files, e);
			}, o = function(e) {
				e.preventDefault();
			};
			function s(e, n, r, i) {
				var a;
				if (e.isFile) return e.file(function(e) {
					e.relativePath = n + e.name, r.push(e), i();
				});
				if (e.isDirectory ? a = e : e instanceof File && r.push(e), typeof e.webkitGetAsEntry == "function" && (a = e.webkitGetAsEntry()), a && a.isDirectory) return l(a, n + a.name + "/", r, i);
				typeof e.getAsFile == "function" && (e = e.getAsFile(), e instanceof File && (e.relativePath = n + e.name, r.push(e))), i();
			}
			function c(e, n) {
				if (!e || e.length === 0) return n();
				e[0](function() {
					c(e.slice(1), n);
				});
			}
			function l(e, n, r, i) {
				e.createReader().readEntries(function(e) {
					if (!e.length) return i();
					c(e.map(function(e) {
						return s.bind(null, e, n, r);
					}), i);
				});
			}
			function u(e, n) {
				if (e.length) {
					r.fire("beforeAdd");
					var i = [];
					c(Array.prototype.map.call(e, function(e) {
						return s.bind(null, e, "", i);
					}), function() {
						i.length && d(i, n);
					});
				}
			}
			var d = function(e, n) {
				var a = 0, o = r.getOpt([
					"maxFiles",
					"minFileSize",
					"maxFileSize",
					"maxFilesErrorCallback",
					"minFileSizeErrorCallback",
					"maxFileSizeErrorCallback",
					"fileType",
					"fileTypeErrorCallback"
				]);
				if (o.maxFiles !== void 0 && o.maxFiles < e.length + r.files.length) if (o.maxFiles === 1 && r.files.length === 1 && e.length === 1) r.removeFile(r.files[0]);
				else return o.maxFilesErrorCallback(e, a++), !1;
				var s = [], c = [], l = e.length, u = function() {
					if (!--l) {
						if (!s.length && !c.length) return;
						window.setTimeout(function() {
							r.fire("filesAdded", s, c);
						}, 0);
					}
				};
				i.each(e, function(e) {
					var l = e.name;
					if (o.fileType.length > 0) {
						var d = !1;
						for (var p in o.fileType) {
							var m = "." + o.fileType[p];
							if (l.toLowerCase().indexOf(m.toLowerCase(), l.length - m.length) !== -1) {
								d = !0;
								break;
							}
						}
						if (!d) return o.fileTypeErrorCallback(e, a++), !1;
					}
					if (o.minFileSize !== void 0 && e.size < o.minFileSize) return o.minFileSizeErrorCallback(e, a++), !1;
					if (o.maxFileSize !== void 0 && e.size > o.maxFileSize) return o.maxFileSizeErrorCallback(e, a++), !1;
					function g(i) {
						r.getFromUniqueIdentifier(i) ? c.push(e) : (function() {
							e.uniqueIdentifier = i;
							var a = new f(r, e, i);
							r.files.push(a), s.push(a), a.container = n === void 0 ? null : n.srcElement, window.setTimeout(function() {
								r.fire("fileAdded", a, n);
							}, 0);
						})(), u();
					}
					var _ = i.generateUniqueIdentifier(e, n);
					_ && typeof _.then == "function" ? _.then(function(e) {
						g(e);
					}, function() {
						u();
					}) : g(_);
				});
			};
			function f(e, n, r) {
				var a = this;
				a.opts = {}, a.getOpt = e.getOpt, a._prevProgress = 0, a.resumableObj = e, a.file = n, a.fileName = n.fileName || n.name, a.size = n.size, a.relativePath = n.relativePath || n.webkitRelativePath || a.fileName, a.uniqueIdentifier = r, a._pause = !1, a.container = "";
				var o = r !== void 0, s = function(e, n) {
					switch (e) {
						case "progress":
							a.resumableObj.fire("fileProgress", a, n);
							break;
						case "error":
							a.abort(), o = !0, a.chunks = [], a.resumableObj.fire("fileError", a, n);
							break;
						case "success":
							if (o) return;
							a.resumableObj.fire("fileProgress", a), a.isComplete() && a.resumableObj.fire("fileSuccess", a, n);
							break;
						case "retry":
							a.resumableObj.fire("fileRetry", a);
							break;
					}
				};
				return a.chunks = [], a.abort = function() {
					var e = 0;
					i.each(a.chunks, function(n) {
						n.status() == "uploading" && (n.abort(), e++);
					}), e > 0 && a.resumableObj.fire("fileProgress", a);
				}, a.cancel = function() {
					var e = a.chunks;
					a.chunks = [], i.each(e, function(e) {
						e.status() == "uploading" && (e.abort(), a.resumableObj.uploadNextChunk());
					}), a.resumableObj.removeFile(a), a.resumableObj.fire("fileProgress", a);
				}, a.retry = function() {
					a.bootstrap();
					var e = !1;
					a.resumableObj.on("chunkingComplete", function() {
						e || a.resumableObj.upload(), e = !0;
					});
				}, a.bootstrap = function() {
					a.abort(), o = !1, a.chunks = [], a._prevProgress = 0;
					for (var e = a.getOpt("forceChunkSize") ? Math.ceil : Math.floor, n = Math.max(e(a.file.size / a.getOpt("chunkSize")), 1), r = 0; r < n; r++) (function(e) {
						window.setTimeout(function() {
							a.chunks.push(new p(a.resumableObj, a, e, s)), a.resumableObj.fire("chunkingProgress", a, e / n);
						}, 0);
					})(r);
					window.setTimeout(function() {
						a.resumableObj.fire("chunkingComplete", a);
					}, 0);
				}, a.progress = function() {
					if (o) return 1;
					var e = 0, n = !1;
					return i.each(a.chunks, function(r) {
						r.status() == "error" && (n = !0), e += r.progress(!0);
					}), e = n || e > .99999 ? 1 : e, e = Math.max(a._prevProgress, e), a._prevProgress = e, e;
				}, a.isUploading = function() {
					var e = !1;
					return i.each(a.chunks, function(n) {
						if (n.status() == "uploading") return e = !0, !1;
					}), e;
				}, a.isComplete = function() {
					var e = !1;
					return i.each(a.chunks, function(n) {
						var r = n.status();
						if (r == "pending" || r == "uploading" || n.preprocessState === 1) return e = !0, !1;
					}), !e;
				}, a.pause = function(e) {
					e === void 0 ? a._pause = !a._pause : a._pause = e;
				}, a.isPaused = function() {
					return a._pause;
				}, a.resumableObj.fire("chunkingStart", a), a.bootstrap(), this;
			}
			function p(e, n, r, a) {
				var o = this;
				o.opts = {}, o.getOpt = e.getOpt, o.resumableObj = e, o.fileObj = n, o.fileObjSize = n.size, o.fileObjType = n.file.type, o.offset = r, o.callback = a, o.lastProgressCallback = /* @__PURE__ */ new Date(), o.tested = !1, o.retries = 0, o.pendingRetry = !1, o.preprocessState = 0;
				var s = o.getOpt("chunkSize");
				return o.loaded = 0, o.startByte = o.offset * s, o.endByte = Math.min(o.fileObjSize, (o.offset + 1) * s), o.fileObjSize - o.endByte < s && !o.getOpt("forceChunkSize") && (o.endByte = o.fileObjSize), o.xhr = null, o.test = function() {
					o.xhr = new XMLHttpRequest();
					var e = function(e) {
						o.tested = !0;
						var n = o.status();
						n == "success" ? (o.callback(n, o.message()), o.resumableObj.uploadNextChunk()) : o.send();
					};
					o.xhr.addEventListener("load", e, !1), o.xhr.addEventListener("error", e, !1), o.xhr.addEventListener("timeout", e, !1);
					var n = [], r = o.getOpt("parameterNamespace"), a = o.getOpt("query");
					typeof a == "function" && (a = a(o.fileObj, o)), i.each(a, function(e, i) {
						n.push([encodeURIComponent(r + e), encodeURIComponent(i)].join("="));
					}), n = n.concat([
						["chunkNumberParameterName", o.offset + 1],
						["chunkSizeParameterName", o.getOpt("chunkSize")],
						["currentChunkSizeParameterName", o.endByte - o.startByte],
						["totalSizeParameterName", o.fileObjSize],
						["typeParameterName", o.fileObjType],
						["identifierParameterName", o.fileObj.uniqueIdentifier],
						["fileNameParameterName", o.fileObj.fileName],
						["relativePathParameterName", o.fileObj.relativePath],
						["totalChunksParameterName", o.fileObj.chunks.length]
					].filter(function(e) {
						return o.getOpt(e[0]);
					}).map(function(e) {
						return [r + o.getOpt(e[0]), encodeURIComponent(e[1])].join("=");
					})), o.xhr.open(o.getOpt("testMethod"), i.getTarget("test", n)), o.xhr.timeout = o.getOpt("xhrTimeout"), o.xhr.withCredentials = o.getOpt("withCredentials");
					var s = o.getOpt("headers");
					typeof s == "function" && (s = s(o.fileObj, o)), i.each(s, function(e, n) {
						o.xhr.setRequestHeader(e, n);
					}), o.xhr.send(null);
				}, o.preprocessFinished = function() {
					o.preprocessState = 2, o.send();
				}, o.send = function() {
					var e = o.getOpt("preprocess");
					if (typeof e == "function") switch (o.preprocessState) {
						case 0:
							o.preprocessState = 1, e(o);
							return;
						case 1: return;
						case 2: break;
					}
					if (o.getOpt("testChunks") && !o.tested) {
						o.test();
						return;
					}
					o.xhr = new XMLHttpRequest(), o.xhr.upload.addEventListener("progress", function(e) {
						/* @__PURE__ */ new Date() - o.lastProgressCallback > o.getOpt("throttleProgressCallbacks") * 1e3 && (o.callback("progress"), o.lastProgressCallback = /* @__PURE__ */ new Date()), o.loaded = e.loaded || 0;
					}, !1), o.loaded = 0, o.pendingRetry = !1, o.callback("progress");
					var n = function(e) {
						var n = o.status();
						if (n == "success" || n == "error") o.callback(n, o.message()), o.resumableObj.uploadNextChunk();
						else {
							o.callback("retry", o.message()), o.abort(), o.retries++;
							var r = o.getOpt("chunkRetryInterval");
							r === void 0 ? o.send() : (o.pendingRetry = !0, setTimeout(o.send, r));
						}
					};
					o.xhr.addEventListener("load", n, !1), o.xhr.addEventListener("error", n, !1), o.xhr.addEventListener("timeout", n, !1);
					var r = [
						["chunkNumberParameterName", o.offset + 1],
						["chunkSizeParameterName", o.getOpt("chunkSize")],
						["currentChunkSizeParameterName", o.endByte - o.startByte],
						["totalSizeParameterName", o.fileObjSize],
						["typeParameterName", o.fileObjType],
						["identifierParameterName", o.fileObj.uniqueIdentifier],
						["fileNameParameterName", o.fileObj.fileName],
						["relativePathParameterName", o.fileObj.relativePath],
						["totalChunksParameterName", o.fileObj.chunks.length]
					].filter(function(e) {
						return o.getOpt(e[0]);
					}).reduce(function(e, n) {
						return e[o.getOpt(n[0])] = n[1], e;
					}, {}), a = o.getOpt("query");
					typeof a == "function" && (a = a(o.fileObj, o)), i.each(a, function(e, n) {
						r[e] = n;
					});
					var s = o.fileObj.file.slice ? "slice" : o.fileObj.file.mozSlice ? "mozSlice" : o.fileObj.file.webkitSlice ? "webkitSlice" : "slice", c = o.fileObj.file[s](o.startByte, o.endByte, o.getOpt("setChunkTypeFromFile") ? o.fileObj.file.type : ""), l = null, u = [], d = o.getOpt("parameterNamespace");
					if (o.getOpt("method") === "octet") l = c, i.each(r, function(e, n) {
						u.push([encodeURIComponent(d + e), encodeURIComponent(n)].join("="));
					});
					else if (l = new FormData(), i.each(r, function(e, n) {
						l.append(d + e, n), u.push([encodeURIComponent(d + e), encodeURIComponent(n)].join("="));
					}), o.getOpt("chunkFormat") == "blob") l.append(d + o.getOpt("fileParameterName"), c, o.fileObj.fileName);
					else if (o.getOpt("chunkFormat") == "base64") {
						var f = new FileReader();
						f.onload = function(e) {
							l.append(d + o.getOpt("fileParameterName"), f.result), o.xhr.send(l);
						}, f.readAsDataURL(c);
					}
					var p = i.getTarget("upload", u), m = o.getOpt("uploadMethod");
					o.xhr.open(m, p), o.getOpt("method") === "octet" && o.xhr.setRequestHeader("Content-Type", "application/octet-stream"), o.xhr.timeout = o.getOpt("xhrTimeout"), o.xhr.withCredentials = o.getOpt("withCredentials");
					var g = o.getOpt("headers");
					typeof g == "function" && (g = g(o.fileObj, o)), i.each(g, function(e, n) {
						o.xhr.setRequestHeader(e, n);
					}), o.getOpt("chunkFormat") == "blob" && o.xhr.send(l);
				}, o.abort = function() {
					o.xhr && o.xhr.abort(), o.xhr = null;
				}, o.status = function() {
					return o.pendingRetry ? "uploading" : o.xhr ? o.xhr.readyState < 4 ? "uploading" : o.xhr.status == 200 || o.xhr.status == 201 ? "success" : i.contains(o.getOpt("permanentErrors"), o.xhr.status) || o.retries >= o.getOpt("maxChunkRetries") ? "error" : (o.abort(), "pending") : "pending";
				}, o.message = function() {
					return o.xhr ? o.xhr.responseText : "";
				}, o.progress = function(e) {
					e === void 0 && (e = !1);
					var n = e ? (o.endByte - o.startByte) / o.fileObjSize : 1;
					if (o.pendingRetry) return 0;
					switch ((!o.xhr || !o.xhr.status) && (n *= .95), o.status()) {
						case "success":
						case "error": return 1 * n;
						case "pending": return 0 * n;
						default: return o.loaded / (o.endByte - o.startByte) * n;
					}
				}, this;
			}
			return r.uploadNextChunk = function() {
				var e = !1;
				if (r.getOpt("prioritizeFirstAndLastChunk") && (i.each(r.files, function(n) {
					if (n.chunks.length && n.chunks[0].status() == "pending" && n.chunks[0].preprocessState === 0) return n.chunks[0].send(), e = !0, !1;
					if (n.chunks.length > 1 && n.chunks[n.chunks.length - 1].status() == "pending" && n.chunks[n.chunks.length - 1].preprocessState === 0) return n.chunks[n.chunks.length - 1].send(), e = !0, !1;
				}), e) || (i.each(r.files, function(n) {
					if (n.isPaused() === !1 && i.each(n.chunks, function(n) {
						if (n.status() == "pending" && n.preprocessState === 0) return n.send(), e = !0, !1;
					}), e) return !1;
				}), e)) return !0;
				var n = !1;
				return i.each(r.files, function(e) {
					if (!e.isComplete()) return n = !0, !1;
				}), n || r.fire("complete"), !1;
			}, r.assignBrowse = function(e, n) {
				e.length === void 0 && (e = [e]), i.each(e, function(e) {
					var i;
					e.tagName === "INPUT" && e.type === "file" ? i = e : (i = document.createElement("input"), i.setAttribute("type", "file"), i.style.display = "none", e.addEventListener("click", function() {
						i.style.opacity = 0, i.style.display = "block", i.focus(), i.click(), i.style.display = "none";
					}, !1), e.appendChild(i));
					var a = r.getOpt("maxFiles");
					a === void 0 || a != 1 ? i.setAttribute("multiple", "multiple") : i.removeAttribute("multiple"), n ? i.setAttribute("webkitdirectory", "webkitdirectory") : i.removeAttribute("webkitdirectory");
					var o = r.getOpt("fileType");
					o !== void 0 && o.length >= 1 ? i.setAttribute("accept", o.map(function(e) {
						return "." + e;
					}).join(",")) : i.removeAttribute("accept"), i.addEventListener("change", function(e) {
						d(e.target.files, e), r.getOpt("clearInput") && (e.target.value = "");
					}, !1);
				});
			}, r.assignDrop = function(e) {
				e.length === void 0 && (e = [e]), i.each(e, function(e) {
					e.addEventListener("dragover", o, !1), e.addEventListener("dragenter", o, !1), e.addEventListener("drop", a, !1);
				});
			}, r.unAssignDrop = function(e) {
				e.length === void 0 && (e = [e]), i.each(e, function(e) {
					e.removeEventListener("dragover", o), e.removeEventListener("dragenter", o), e.removeEventListener("drop", a);
				});
			}, r.isUploading = function() {
				var e = !1;
				return i.each(r.files, function(n) {
					if (n.isUploading()) return e = !0, !1;
				}), e;
			}, r.upload = function() {
				if (!r.isUploading()) {
					r.fire("uploadStart");
					for (var e = 1; e <= r.getOpt("simultaneousUploads"); e++) r.uploadNextChunk();
				}
			}, r.pause = function() {
				i.each(r.files, function(e) {
					e.abort();
				}), r.fire("pause");
			}, r.cancel = function() {
				r.fire("beforeCancel");
				for (var e = r.files.length - 1; e >= 0; e--) r.files[e].cancel();
				r.fire("cancel");
			}, r.progress = function() {
				var e = 0, n = 0;
				return i.each(r.files, function(r) {
					e += r.progress() * r.size, n += r.size;
				}), n > 0 ? e / n : 0;
			}, r.addFile = function(e, n) {
				d([e], n);
			}, r.addFiles = function(e, n) {
				d(e, n);
			}, r.removeFile = function(e) {
				for (var n = r.files.length - 1; n >= 0; n--) r.files[n] === e && r.files.splice(n, 1);
			}, r.getFromUniqueIdentifier = function(e) {
				var n = !1;
				return i.each(r.files, function(r) {
					r.uniqueIdentifier == e && (n = r);
				}), n;
			}, r.getSize = function() {
				var e = 0;
				return i.each(r.files, function(n) {
					e += n.size;
				}), e;
			}, r.handleDropEvent = function(e) {
				a(e);
			}, r.handleChangeEvent = function(e) {
				d(e.target.files, e), e.target.value = "";
			}, r.updateQuery = function(e) {
				r.opts.query = e;
			}, this;
		};
		n === void 0 ? typeof define == "function" && define.amd ? define(function() {
			return e;
		}) : window.Resumable = e : n.exports = e;
	})();
})))(), 1);
function _isSlot$7(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
}
var NewbieUploader_default = /* @__PURE__ */ defineComponent({
	name: "NewbieUploader",
	props: {
		value: {
			type: [
				Object,
				Array,
				String
			],
			default: () => ({})
		},
		name: {
			type: String,
			default: "file"
		},
		headers: {
			type: Object,
			default: () => ({})
		},
		accept: {
			type: String,
			default: ""
		},
		type: {
			type: String,
			default: "file"
		},
		disabled: {
			type: Boolean,
			default: !1
		},
		maxSize: {
			type: Number,
			default: 20
		},
		maxNum: {
			type: Number,
			default: 1
		},
		multiple: {
			type: Boolean,
			default: !1
		},
		multipart: {
			type: Boolean,
			default: !1
		},
		action: {
			type: String,
			default: ""
		},
		extraData: {
			type: Object,
			default: () => ({})
		},
		uploadText: {
			type: String,
			default: ""
		},
		disk: {
			type: String,
			default: ""
		},
		preview: {
			type: Function,
			default: null
		},
		uploadProps: {
			type: Object,
			default: () => ({})
		}
	},
	emits: ["update:value", "success"],
	setup(e, { emit: n }) {
		let { STATE_CODE_SUCCESS: r } = STATUS, i = Form.useInjectFormItemContext(), a = inject(NEWBIE_UPLOADER, () => ({})), o = a.uploadUrl || "", s = a.defaultFileItem || {}, l = a.defaultPreview || null, { url: u, path: d, name: f } = s, p = reactive({
			fileList: [],
			previewVisible: !1,
			previewCurrent: 0,
			progress: e.multipart ? {
				strokeColor: {
					"0%": "#108ee9",
					"100%": "#87d068"
				},
				strokeWidth: 3,
				format: (e) => `${parseFloat(e.toFixed(2))}%`
			} : null
		}), m = computed(() => !e.maxNum || e.maxNum === 1), g = computed(() => p.fileList.length >= e.maxNum), _ = computed(() => e.type === "picture-card" || e.type === "picture"), v = (n) => {
			isArray(n) || (n = [n]);
			let r = n.filter((e) => e.done || !!e[d] || !!e[f]).map((n) => ({
				...pick(n, Object.values(s)),
				_type: "file",
				_disk: e.disk
			}));
			return m.value ? r[0] || null : r;
		}, b = (e) => {
			if (!e) return [];
			e = isArray(e) ? e : [e], p.fileList = e.filter((e) => e[u] || e[f] || e[d]).map((e) => ({
				uid: random(1, 1e7),
				done: !0,
				name: e[f] || useT("form.attachment"),
				url: e[u],
				_type: "file",
				...e
			})), n("update:value", v(p.fileList));
		};
		onMounted(() => {
			b(e.value);
		}), watch(() => e.value, (e) => {
			e && !isArray(e) && (e = [e]), isEqual(map(e, d).sort(), map(p.fileList, d).sort()) || b(e);
		});
		let x = (n) => {
			let r = n[u];
			r && (r = r.toLowerCase(), r.includes(".jpg") || r.includes(".jpeg") || r.includes(".png") || r.includes(".gif") || _.value ? (p.previewCurrent = p.fileList.findIndex((e) => e.uid === n.uid), p.previewVisible = !0) : e.preview ? e.preview(n) : l ? l(n) : location.href = n[u]);
		}, S = (e) => {
			let r = v(e);
			n("update:value", r), n("success", r), i.onFieldChange();
		}, w = ({ file: e, fileList: n }) => {
			if (n = n.map((e) => {
				if (e.status === "done" && e.response) {
					let n = e.response;
					n.result[d] ? (e = {
						...e,
						...pick(n.result, Object.values(s))
					}, e.done = !0) : e.isRemoved = !0;
				} else e.status === "error" && (e.isRemoved = !0);
				return e;
			}).filter((e) => !e.isRemoved), e.status === "removed") S(n);
			else if (e.status === "done" && e.response?.status !== r) message.error(e.response?.result || useT("form.upload-fail"));
			else if (e.status === "error" && e.error) e.error.status === 413 ? message.error(`${e.error.status}: ${useT("form.upload-size-limit")}`) : message.error(e.error.message || useT("form.upload-fail"));
			else if (!e.status) {
				let r = -1;
				n.forEach((n, i) => {
					n.uid === e.uid && (r = i);
				}), r >= 0 && n.splice(r, 1);
			}
			every(n, (e) => e.done) && S(n), p.fileList = n;
		}, T = (n) => n.size > e.maxSize * 1024 * 1024 ? (message.error(useT("form.upload-size-max", { size: e.maxSize })), !1) : g.value ? (message.error(useT("form.upload-num-max", { num: e.maxNum })), !1) : !0, E = async ({ action: n, data: r, file: i, filename: a, headers: o, onError: s, onProgress: c, onSuccess: l, withCredentials: u }) => {
			console.log("Using uploadAction");
			let d = new FormData();
			r && Object.keys(r).forEach((e) => {
				d.append(e, r[e]);
			}), d.append(a, i), e.disk && d.append("_disk", e.disk);
			try {
				l(await useFetch().post(n, d, {
					withCredentials: u,
					headers: o,
					onUploadProgress: ({ total: e, loaded: n }) => {
						c({ percent: parseInt(Math.round(n / e * 100).toFixed(2)) }, i);
					}
				}), i);
			} catch (e) {
				s(e);
			}
			return { abort() {
				console.log("upload progress is aborted.");
			} };
		}, D = async ({ action: n, data: r, file: i, headers: a, onError: o, onProgress: s, onSuccess: c }) => {
			r ||= {}, e.disk && (r._disk = e.disk);
			let l = new import_resumable.default({
				chunkSize: 1 * 1024 * 1024,
				forceChunkSize: !1,
				simultaneousUploads: 3,
				testChunks: !1,
				throttleProgressCallbacks: 1,
				target: n,
				query: r,
				headers: a
			});
			l.on("fileAdded", () => {
				l.upload();
			}), l.on("fileProgress", (e) => {
				s({ percent: e.progress() * 100 });
			}), l.on("fileSuccess", (e, n) => {
				c(JSON.parse(n), e);
			}), l.on("fileError", (e) => {
				o(e);
			}), l.addFile(i);
		}, k = () => e.disabled ? null : _.value ? g.value ? null : [createVNode(CloudUploadOutlined, null, null), createVNode("div", { class: "newbie-upload-text" }, [useT("form.upload")])] : !_.value && !g.value ? [createVNode(NewbieButton_default, {
			label: e.uploadText || useT("form.upload"),
			type: "primary",
			icon: createVNode(CloudUploadOutlined, null, null)
		}, null)] : null;
		return () => {
			let n, r;
			return createVNode("div", { class: "newbie-uploader" }, [createVNode(Upload, mergeProps({
				fileList: p.fileList,
				"onUpdate:fileList": (e) => p.fileList = e,
				class: `newbie-upload ${_.value ? "is-image" : ""}`,
				name: e.name,
				listType: e.type,
				disabled: e.disabled,
				accept: e.accept,
				action: e.action || o,
				headers: e.headers,
				data: e.extraData,
				multiple: e.multiple,
				progress: p.progress,
				beforeUpload: T,
				customRequest: e.multipart ? D : E,
				onPreview: x,
				onChange: w
			}, e.uploadProps), _isSlot$7(n = k()) ? n : { default: () => [n] }), createVNode(ImagePreviewGroup, { preview: {
				visible: p.previewVisible,
				onVisibleChange: (e) => p.previewVisible = e,
				current: p.previewCurrent
			} }, _isSlot$7(r = p.fileList.map((e) => createVNode(Image$1, {
				style: { display: "none" },
				src: e.url
			}, null))) ? r : { default: () => [r] })]);
		};
	}
}), Uploader_default = (e, n) => createVNode(NewbieUploader_default, mergeProps({
	value: n[e.key],
	"onUpdate:value": (r) => n[e.key] = r,
	key: e.key,
	disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled
}, e.defaultProps), { ...e.defaultSlots }), Editor_default = (e, n) => createVNode(NewbieEditor_default, mergeProps({
	key: e.key,
	value: n[e.key],
	"onUpdate:value": (r) => n[e.key] = r,
	readonly: e.readonly,
	disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
	placeholder: placeholder(e)
}, e.defaultProps), null), Text_default = (e, n) => {
	let r = n[e.key];
	return r ? isArray(r) ? r.map((e) => createVNode(Tag, e.defaultProps, { default: () => e })) : createVNode(Tag, e.defaultProps, { default: () => r }) : null;
}, lib_exports = /* @__PURE__ */ __export({
	Vue: () => Vue,
	Vue2: () => void 0,
	del: () => del,
	install: () => install,
	isVue2: () => !1,
	isVue3: () => !0,
	set: () => set
}, 1);
import * as import_vue from "vue";
__reExport(lib_exports, import_vue, void 0, 1);
function install() {}
function set(e, n, r) {
	return Array.isArray(e) ? (e.length = Math.max(e.length, n), e.splice(n, 1, r), r) : (e[n] = r, r);
}
function del(e, n) {
	if (Array.isArray(e)) {
		e.splice(n, 1);
		return;
	}
	delete e[n];
}
function tryOnScopeDispose$1(e) {
	return (0, lib_exports.getCurrentScope)() ? ((0, lib_exports.onScopeDispose)(e), !0) : !1;
}
function toValue$1(e) {
	return typeof e == "function" ? e() : (0, lib_exports.unref)(e);
}
var isClient$1 = typeof window < "u", noop$1 = () => {};
function createFilterWrapper$1(e, n) {
	function r(...r) {
		return new Promise((i, a) => {
			Promise.resolve(e(() => n.apply(this, r), {
				fn: n,
				thisArg: this,
				args: r
			})).then(i).catch(a);
		});
	}
	return r;
}
function debounceFilter$1(e, n = {}) {
	let r, i, a = noop$1, o = (e) => {
		clearTimeout(e), a(), a = noop$1;
	};
	return (s) => {
		let c = toValue$1(e), l = toValue$1(n.maxWait);
		return r && o(r), c <= 0 || l !== void 0 && l <= 0 ? (i &&= (o(i), null), Promise.resolve(s())) : new Promise((e, u) => {
			a = n.rejectOnCancel ? u : e, l && !i && (i = setTimeout(() => {
				r && o(r), i = null, e(s());
			}, l)), r = setTimeout(() => {
				i && o(i), i = null, e(s());
			}, c);
		});
	};
}
function throttleFilter$1(e, n = !0, r = !0, i = !1) {
	let a = 0, o, s = !0, c = noop$1, l, u = () => {
		o && (clearTimeout(o), o = void 0, c(), c = noop$1);
	};
	return (d) => {
		let f = toValue$1(e), p = Date.now() - a, m = () => l = d();
		return u(), f <= 0 ? (a = Date.now(), m()) : (p > f && (r || !s) ? (a = Date.now(), m()) : n && (l = new Promise((e, n) => {
			c = i ? n : e, o = setTimeout(() => {
				a = Date.now(), s = !0, e(m()), u();
			}, Math.max(0, f - p));
		})), !r && !o && (o = setTimeout(() => s = !0, f)), s = !1, l);
	};
}
function toRef$2(...e) {
	if (e.length !== 1) return (0, lib_exports.toRef)(...e);
	let n = e[0];
	return typeof n == "function" ? (0, lib_exports.readonly)((0, lib_exports.customRef)(() => ({
		get: n,
		set: noop$1
	}))) : (0, lib_exports.ref)(n);
}
function useDebounceFn$1(e, n = 200, r = {}) {
	return createFilterWrapper$1(debounceFilter$1(n, r), e);
}
function useThrottleFn$1(e, n = 200, r = !1, i = !0, a = !1) {
	return createFilterWrapper$1(throttleFilter$1(n, r, i, a), e);
}
var __defProp$9 = Object.defineProperty, __defProps$7$1 = Object.defineProperties, __getOwnPropDescs$7$1 = Object.getOwnPropertyDescriptors, __getOwnPropSymbols$b = Object.getOwnPropertySymbols, __hasOwnProp$b = Object.prototype.hasOwnProperty, __propIsEnum$b = Object.prototype.propertyIsEnumerable, __defNormalProp$9 = (e, n, r) => n in e ? __defProp$9(e, n, {
	enumerable: !0,
	configurable: !0,
	writable: !0,
	value: r
}) : e[n] = r, __spreadValues$9 = (e, n) => {
	for (var r in n ||= {}) __hasOwnProp$b.call(n, r) && __defNormalProp$9(e, r, n[r]);
	if (__getOwnPropSymbols$b) for (var r of __getOwnPropSymbols$b(n)) __propIsEnum$b.call(n, r) && __defNormalProp$9(e, r, n[r]);
	return e;
}, __spreadProps$7$1 = (e, n) => __defProps$7$1(e, __getOwnPropDescs$7$1(n));
function toRefs$2(e) {
	if (!(0, lib_exports.isRef)(e)) return (0, lib_exports.toRefs)(e);
	let n = Array.isArray(e.value) ? Array(e.value.length) : {};
	for (let r in e.value) n[r] = (0, lib_exports.customRef)(() => ({
		get() {
			return e.value[r];
		},
		set(n) {
			if (Array.isArray(e.value)) {
				let i = [...e.value];
				i[r] = n, e.value = i;
			} else {
				let i = __spreadProps$7$1(__spreadValues$9({}, e.value), { [r]: n });
				Object.setPrototypeOf(i, Object.getPrototypeOf(e.value)), e.value = i;
			}
		}
	}));
	return n;
}
function tryOnMounted$1(e, n = !0) {
	(0, lib_exports.getCurrentInstance)() ? (0, lib_exports.onMounted)(e) : n ? e() : (0, lib_exports.nextTick)(e);
}
function useTimeoutFn$1(e, n, r = {}) {
	let { immediate: i = !0 } = r, a = (0, lib_exports.ref)(!1), o = null;
	function s() {
		o &&= (clearTimeout(o), null);
	}
	function c() {
		a.value = !1, s();
	}
	function l(...r) {
		s(), a.value = !0, o = setTimeout(() => {
			a.value = !1, o = null, e(...r);
		}, toValue$1(n));
	}
	return i && (a.value = !0, isClient$1 && l()), tryOnScopeDispose$1(c), {
		isPending: (0, lib_exports.readonly)(a),
		start: l,
		stop: c
	};
}
function unrefElement$2(e) {
	let n = toValue$1(e);
	return n?.$el ?? n;
}
var defaultWindow$2 = isClient$1 ? window : void 0;
isClient$1 && window.document;
var defaultNavigator$1 = isClient$1 ? window.navigator : void 0;
isClient$1 && window.location;
function useEventListener$2(...e) {
	let n, r, i, a;
	if (typeof e[0] == "string" || Array.isArray(e[0]) ? ([r, i, a] = e, n = defaultWindow$2) : [n, r, i, a] = e, !n) return noop$1;
	Array.isArray(r) || (r = [r]), Array.isArray(i) || (i = [i]);
	let o = [], s = () => {
		o.forEach((e) => e()), o.length = 0;
	}, c = (e, n, r, i) => (e.addEventListener(n, r, i), () => e.removeEventListener(n, r, i)), l = (0, lib_exports.watch)(() => [unrefElement$2(n), toValue$1(a)], ([e, n]) => {
		s(), e && o.push(...r.flatMap((r) => i.map((i) => c(e, r, i, n))));
	}, {
		immediate: !0,
		flush: "post"
	}), u = () => {
		l(), s();
	};
	return tryOnScopeDispose$1(u), u;
}
function useMounted$1() {
	let e = (0, lib_exports.ref)(!1);
	return (0, lib_exports.getCurrentInstance)() && (0, lib_exports.onMounted)(() => {
		e.value = !0;
	}), e;
}
function useSupported$1(e) {
	let n = useMounted$1();
	return (0, lib_exports.computed)(() => (n.value, !!e()));
}
function useMediaQuery(e, n = {}) {
	let { window: r = defaultWindow$2 } = n, i = useSupported$1(() => r && "matchMedia" in r && typeof r.matchMedia == "function"), a, o = (0, lib_exports.ref)(!1), s = () => {
		a && ("removeEventListener" in a ? a.removeEventListener("change", c) : a.removeListener(c));
	}, c = () => {
		i.value && (s(), a = r.matchMedia(toRef$2(e).value), o.value = !!a?.matches, a && ("addEventListener" in a ? a.addEventListener("change", c) : a.addListener(c)));
	};
	return (0, lib_exports.watchEffect)(c), tryOnScopeDispose$1(() => s()), o;
}
function useClipboard(e = {}) {
	let { navigator: n = defaultNavigator$1, read: r = !1, source: i, copiedDuring: a = 1500, legacy: o = !1 } = e, s = ["copy", "cut"], c = useSupported$1(() => n && "clipboard" in n), l = (0, lib_exports.computed)(() => c.value || o), u = (0, lib_exports.ref)(""), d = (0, lib_exports.ref)(!1), f = useTimeoutFn$1(() => d.value = !1, a);
	function p() {
		c.value ? n.clipboard.readText().then((e) => {
			u.value = e;
		}) : u.value = _();
	}
	if (l.value && r) for (let e of s) useEventListener$2(e, p);
	async function m(e = toValue$1(i)) {
		l.value && e != null && (c.value ? await n.clipboard.writeText(e) : g(e), u.value = e, d.value = !0, f.start());
	}
	function g(e) {
		let n = document.createElement("textarea");
		n.value = e ?? "", n.style.position = "absolute", n.style.opacity = "0", document.body.appendChild(n), n.select(), document.execCommand("copy"), n.remove();
	}
	function _() {
		return ((document == null ? void 0 : document.getSelection)?.call(document))?.toString() ?? "";
	}
	return {
		isSupported: l,
		text: u,
		copied: d,
		copy: m
	};
}
var __defProp$g = Object.defineProperty, __defProps$6 = Object.defineProperties, __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors, __getOwnPropSymbols$i = Object.getOwnPropertySymbols, __hasOwnProp$i = Object.prototype.hasOwnProperty, __propIsEnum$i = Object.prototype.propertyIsEnumerable, __defNormalProp$g = (e, n, r) => n in e ? __defProp$g(e, n, {
	enumerable: !0,
	configurable: !0,
	writable: !0,
	value: r
}) : e[n] = r, __spreadValues$g = (e, n) => {
	for (var r in n ||= {}) __hasOwnProp$i.call(n, r) && __defNormalProp$g(e, r, n[r]);
	if (__getOwnPropSymbols$i) for (var r of __getOwnPropSymbols$i(n)) __propIsEnum$i.call(n, r) && __defNormalProp$g(e, r, n[r]);
	return e;
}, __spreadProps$6 = (e, n) => __defProps$6(e, __getOwnPropDescs$6(n));
function useDraggable$1(e, n = {}) {
	let { pointerTypes: r, preventDefault: i, stopPropagation: a, exact: o, onMove: s, onEnd: c, onStart: l, initialValue: u, axis: d = "both", draggingElement: f = defaultWindow$2, handle: p = e } = n, m = (0, lib_exports.ref)(toValue$1(u) ?? {
		x: 0,
		y: 0
	}), g = (0, lib_exports.ref)(), _ = (e) => r ? r.includes(e.pointerType) : !0, v = (e) => {
		toValue$1(i) && e.preventDefault(), toValue$1(a) && e.stopPropagation();
	}, y = (n) => {
		if (!_(n) || toValue$1(o) && n.target !== toValue$1(e)) return;
		let r = toValue$1(e).getBoundingClientRect(), i = {
			x: n.clientX - r.left,
			y: n.clientY - r.top
		};
		l?.(i, n) !== !1 && (g.value = i, v(n));
	}, b = (e) => {
		if (!_(e) || !g.value) return;
		let { x: n, y: r } = m.value;
		(d === "x" || d === "both") && (n = e.clientX - g.value.x), (d === "y" || d === "both") && (r = e.clientY - g.value.y), m.value = {
			x: n,
			y: r
		}, s?.(m.value, e), v(e);
	}, x = (e) => {
		_(e) && g.value && (g.value = void 0, c?.(m.value, e), v(e));
	};
	if (isClient$1) {
		let e = { capture: n.capture ?? !0 };
		useEventListener$2(p, "pointerdown", y, e), useEventListener$2(f, "pointermove", b, e), useEventListener$2(f, "pointerup", x, e);
	}
	return __spreadProps$6(__spreadValues$g({}, toRefs$2(m)), {
		position: m,
		isDragging: (0, lib_exports.computed)(() => !!g.value),
		style: (0, lib_exports.computed)(() => `left:${m.value.x}px;top:${m.value.y}px;`)
	});
}
var ARRIVED_STATE_THRESHOLD_PIXELS$1 = 1;
function useScroll(e, n = {}) {
	let { throttle: r = 0, idle: i = 200, onStop: a = noop$1, onScroll: o = noop$1, offset: s = {
		left: 0,
		right: 0,
		top: 0,
		bottom: 0
	}, eventListenerOptions: c = {
		capture: !1,
		passive: !0
	}, behavior: l = "auto" } = n, u = (0, lib_exports.ref)(0), d = (0, lib_exports.ref)(0), f = (0, lib_exports.computed)({
		get() {
			return u.value;
		},
		set(e) {
			m(e, void 0);
		}
	}), p = (0, lib_exports.computed)({
		get() {
			return d.value;
		},
		set(e) {
			m(void 0, e);
		}
	});
	function m(n, r) {
		var i;
		let a = toValue$1(e);
		a && ((i = a instanceof Document ? document.body : a) == null || i.scrollTo({
			top: toValue$1(r) ?? p.value,
			left: toValue$1(n) ?? f.value,
			behavior: toValue$1(l)
		}));
	}
	let g = (0, lib_exports.ref)(!1), _ = (0, lib_exports.reactive)({
		left: !0,
		right: !1,
		top: !0,
		bottom: !1
	}), v = (0, lib_exports.reactive)({
		left: !1,
		right: !1,
		top: !1,
		bottom: !1
	}), y = (e) => {
		g.value && (g.value = !1, v.left = !1, v.right = !1, v.top = !1, v.bottom = !1, a(e));
	}, b = useDebounceFn$1(y, r + i), x = (e) => {
		let n = e === window ? e.document.documentElement : e === document ? e.documentElement : e, { display: r, flexDirection: i } = getComputedStyle(n), a = n.scrollLeft;
		v.left = a < u.value, v.right = a > u.value;
		let o = Math.abs(a) <= 0 + (s.left || 0), c = Math.abs(a) + n.clientWidth >= n.scrollWidth - (s.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS$1;
		r === "flex" && i === "row-reverse" ? (_.left = c, _.right = o) : (_.left = o, _.right = c), u.value = a;
		let l = n.scrollTop;
		e === document && !l && (l = document.body.scrollTop), v.top = l < d.value, v.bottom = l > d.value;
		let f = Math.abs(l) <= 0 + (s.top || 0), p = Math.abs(l) + n.clientHeight >= n.scrollHeight - (s.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS$1;
		r === "flex" && i === "column-reverse" ? (_.top = p, _.bottom = f) : (_.top = f, _.bottom = p), d.value = l;
	}, S = (e) => {
		x(e.target === document ? e.target.documentElement : e.target), g.value = !0, b(e), o(e);
	};
	return useEventListener$2(e, "scroll", r ? useThrottleFn$1(S, r, !0, !1) : S, c), useEventListener$2(e, "scrollend", y, c), {
		x: f,
		y: p,
		isScrolling: g,
		arrivedState: _,
		directions: v,
		measure() {
			let n = toValue$1(e);
			n && x(n);
		}
	};
}
function useWindowSize(e = {}) {
	let { window: n = defaultWindow$2, initialWidth: r = Infinity, initialHeight: i = Infinity, listenOrientation: a = !0, includeScrollbar: o = !0 } = e, s = (0, lib_exports.ref)(r), c = (0, lib_exports.ref)(i), l = () => {
		n && (o ? (s.value = n.innerWidth, c.value = n.innerHeight) : (s.value = n.document.documentElement.clientWidth, c.value = n.document.documentElement.clientHeight));
	};
	return l(), tryOnMounted$1(l), useEventListener$2("resize", l, { passive: !0 }), a && (0, lib_exports.watch)(useMediaQuery("(orientation: portrait)"), () => l()), {
		width: s,
		height: c
	};
}
var NewbieModal_default = /* @__PURE__ */ defineComponent({
	name: "NewbieModal",
	props: {
		type: {
			type: String,
			default: "modal"
		},
		visible: {
			type: Boolean,
			default: !1
		},
		width: {
			type: [Number, String],
			default: 800
		},
		height: {
			type: [Number, String],
			default: 500
		},
		title: {
			type: String,
			default: ""
		},
		beforeClose: {
			type: [Function, Object],
			default: null
		},
		modalProps: {
			type: Object,
			default: () => ({})
		}
	},
	emits: ["update:visible", "close"],
	setup(e, { emit: n, slots: r }) {
		let i = ref(null), a = ref(!1), o = ref(!1);
		watch(() => e.visible, (e) => {
			o.value = e;
		}, { immediate: !0 });
		let s = async () => {
			if (!(e.beforeClose && isFunction(e.beforeClose) && !await e.beforeClose())) {
				if (e.beforeClose && isObject(e.beforeClose)) {
					let { title: r, content: i, okText: o, cancelText: s, trigger: c } = e.beforeClose;
					if (isFunction(c) ? c() : c) {
						Modal.confirm({
							title: r || useT("common.action-prompt"),
							content: i || useT("common.close-confirm"),
							okText: o || useT("common.confirm"),
							cancelText: s || useT("common.cancel"),
							onOk: () => {
								a.value = !1, n("update:visible", !1), n("close");
							}
						});
						return;
					}
				}
				a.value = !1, n("update:visible", !1), n("close");
			}
		}, { x: c, y: l, isDragging: u } = useDraggable$1(i), d = ref(0), f = ref(0), p = ref(!1), m = ref(0), g = ref(0), _ = ref(0), v = ref(0), b = ref({
			left: 0,
			right: 0,
			top: 0,
			bottom: 0
		});
		watch([c, l], () => {
			if (!p.value) {
				d.value = c.value, f.value = l.value;
				let e = document.body.getBoundingClientRect(), n = i.value.getBoundingClientRect();
				b.value.right = e.width - n.width, b.value.bottom = Math.max(e.height - n.height, 800), _.value = m.value, v.value = g.value;
			}
			p.value = !0;
		}), watch(u, () => {
			u || (p.value = !1);
		}), watchEffect(() => {
			p.value && (m.value = _.value + Math.min(Math.max(b.value.left, c.value), b.value.right) - d.value, g.value = v.value + Math.min(Math.max(b.value.top, l.value), b.value.bottom) - f.value);
		});
		let x = computed(() => ({ transform: `translate(${m.value}px, ${g.value}px)` })), S = () => createVNode("div", { class: "newbie-modal-header" }, [createVNode("span", {
			class: "newbie-modal-title",
			ref: i
		}, [e.title]), createVNode("div", { class: "newbie-modal-actions" }, [a.value ? createVNode("a", { onClick: () => a.value = !1 }, [createVNode(CompressOutlined, { style: { fontSize: "16px" } }, null)]) : createVNode("a", { onClick: () => a.value = !0 }, [createVNode(ExpandOutlined, { style: { fontSize: "16px" } }, null)]), createVNode("a", { onClick: s }, [createVNode(CloseOutlined, { style: {
			fontSize: "20px",
			marginTop: "2px"
		} }, null)])])]), C = () => createVNode(Modal, mergeProps({
			footer: null,
			wrapStyle: { overflow: "hidden" },
			wrapClassName: `newbie-modal ${a.value ? "full-modal" : ""}`,
			width: a.value ? "100%" : genPixel(e.width),
			open: o.value,
			"onUpdate:open": (e) => o.value = e,
			bodyStyle: {
				maxHeight: e.height ? genPixel(e.height) : "600px",
				overflow: "auto"
			},
			closable: !1,
			destroyOnClose: !0,
			maskClosable: !1,
			onCancel: s
		}, e.modalProps), {
			default: () => r.default?.(),
			title: () => S(),
			modalRender: ({ originVNode: e }) => createVNode("div", { style: x.value }, [e])
		}), w = () => createVNode(Drawer, mergeProps({
			title: e.title,
			open: o.value,
			"onUpdate:open": (e) => o.value = e,
			closable: !1,
			destroyOnClose: !0,
			width: genPixel(e.width),
			maskClosable: !1,
			onClose: s
		}, e.modalProps), {
			default: () => r.default?.(),
			extra: () => createVNode(CloseOutlined, { onClick: s }, null)
		});
		return () => createVNode("div", { class: "newbie-modal" }, [e.type === "modal" ? C() : w()]);
	}
}), Input_default$1 = (e, n, r) => {
	let { searchProvider: i } = r, a = [
		{
			label: useT("search.equal"),
			value: "equal"
		},
		{
			label: useT("search.not-equal"),
			value: "notEqual"
		},
		{
			label: useT("search.include"),
			value: "include"
		},
		{
			label: useT("search.exclude"),
			value: "exclude"
		},
		{
			label: useT("search.null"),
			value: "null"
		},
		{
			label: useT("search.not-null"),
			value: "notNull"
		}
	];
	e.conditions && e.conditions.length && (a = a.filter((n) => e.conditions.includes(n.value)));
	let o = computed(() => n[e.key].value), s = ref();
	e.collectItem = () => {
		let r = n[e.key].value || null, i = null, o = find(a, { value: n[e.key].condition });
		return o && ["null", "notNull"].includes(o.value) ? (r = null, i = `${e.title}${o?.label}`) : r && (i = `${e.title}${o?.label}: ${r}`), {
			value: r,
			searchLabel: i
		};
	};
	let c = () => {
		s.value?.focus();
	}, l = createVNode(Input, mergeProps({
		ref: s,
		value: n[e.key].value,
		"onUpdate:value": (r) => n[e.key].value = r,
		allowClear: !0,
		disabled: n[e.key].condition === "null" || n[e.key].condition === "notNull",
		class: `${i.inputClass || ""}`,
		style: { width: "200px" },
		placeholder: useI18nJoin(useT("common.search"), e.title)
	}, e.inputProps), null);
	return {
		conditions: a,
		Component: l,
		displayValue: o,
		onComponentOpen: c
	};
}, Number_default$1 = (e, n, r) => {
	let { searchProvider: i } = r, a = [
		{
			label: useT("search.equal"),
			value: "equal"
		},
		{
			label: useT("search.not-equal"),
			value: "notEqual"
		},
		{
			label: useT("search.less-than"),
			value: "lessThan"
		},
		{
			label: useT("search.greater-than"),
			value: "greaterThan"
		},
		{
			label: useT("search.between"),
			value: "between"
		}
	];
	e.conditions && e.conditions.length && (a = a.filter((n) => e.conditions.includes(n.value)));
	let o = () => {
		if (n[e.key].condition === "between" && n[e.key].value && isNumber(n[e.key].value[0]) && isNumber(n[e.key].value[1]) && n[e.key].value[0] > n[e.key].value[1]) {
			let r = n[e.key].value[0];
			n[e.key].value[0] = n[e.key].value[1], n[e.key].value[1] = r;
		}
	}, s = ref(null);
	e.collectItem = () => {
		let r = null, i = null, o = find(a, { value: n[e.key].condition })?.label;
		return n[e.key].condition === "between" && n[e.key].value && every(n[e.key].value, isNumber) ? (r = n[e.key].value, i = `${e.title}${o}: ${r[0]} - ${r[1]} `) : n[e.key].condition !== "between" && n[e.key].value && isNumber(n[e.key].value[0]) && (r = n[e.key].value[0], i = `${e.title}${o}: ${r}`), {
			value: r,
			searchLabel: i
		};
	};
	let c = () => {
		s.value?.focus();
	}, l = computed(() => n[e.key].condition === "between" && n[e.key].value && every(n[e.key].value, isNumber) ? [
		createVNode(Tag, { style: { marginRight: 0 } }, { default: () => n[e.key].value[0] }),
		createVNode("span", null, [createTextVNode(" - ")]),
		createVNode(Tag, null, { default: () => n[e.key].value[1] })
	] : n[e.key].value[0]), u = [createVNode(InputNumber, mergeProps({
		ref: s,
		value: n[e.key].value[0],
		"onUpdate:value": (r) => n[e.key].value[0] = r,
		style: { width: "200px" },
		class: `${i.inputClass || ""}`,
		placeholder: useI18nJoin(useT("common.search"), e.title),
		onBlur: o
	}, e.inputProps), null)];
	return n[e.key].condition === "between" && (u = createVNode("div", { style: {
		display: "flex",
		alignItems: "center"
	} }, [u.concat([createVNode("span", { style: { margin: "0 8px" } }, [createTextVNode("-")]), createVNode(InputNumber, mergeProps({
		value: n[e.key].value[1],
		"onUpdate:value": (r) => n[e.key].value[1] = r,
		style: { width: "200px" },
		class: `${i.inputClass || ""}`,
		placeholder: useT("form.please-input"),
		onBlur: o
	}, e.inputProps), null)])])), {
		conditions: a,
		Component: u,
		displayValue: l,
		onComponentOpen: c
	};
}, Select_default$1 = (e, n, r) => {
	let { searchProvider: i } = r, a = [
		{
			label: useT("search.equal"),
			value: "equal"
		},
		{
			label: useT("search.not-equal"),
			value: "notEqual"
		},
		{
			label: useT("search.include"),
			value: "include"
		},
		{
			label: useT("search.exclude"),
			value: "exclude"
		}
	];
	e.conditions && e.conditions.length && (a = a.filter((n) => e.conditions.includes(n.value)));
	let o = isFunction(e.options) ? e.options() : e.options;
	o = o.map((e) => isString(e) || isNumber(e) ? {
		value: e,
		label: e
	} : e);
	let s = computed(() => createVNode(Space, null, { default: () => n[e.key].value.map((e) => createVNode(Tag, null, { default: () => find(o, { value: e })?.label })) }));
	watch(() => n[e.key].condition, (r) => {
		["equal", "notEqual"].includes(r) && (n[e.key].value = n[e.key].value?.[0] ? [n[e.key].value[0]] : []);
	});
	let c = ref(null);
	e.collectItem = () => {
		let r = null, i = null, s = find(a, { value: n[e.key].condition })?.label;
		if (["equal", "notEqual"].includes(n[e.key].condition) && !isUndefined(n[e.key].value?.[0]) && !isNull(n[e.key].value?.[0])) r = n[e.key].value?.[0] || null, i = `${e.title}${s}: ${find(o, { value: r })?.label}`;
		else if (!["equal", "notEqual"].includes(n[e.key].condition) && every(n[e.key].value, (e) => !isNull(e) && !isUndefined(e))) {
			r = n[e.key].value;
			let a = r.map((e) => find(o, { value: e })?.label)?.join(",");
			i = `${e.title}${s}: ${a}`;
		}
		return {
			value: r,
			searchLabel: i
		};
	};
	let l = () => {}, u = ["equal", "notEqual"].includes(n[e.key].condition) ? createVNode(Select, mergeProps({
		ref: c,
		value: n[e.key].value[0],
		"onUpdate:value": (r) => n[e.key].value[0] = r,
		allowClear: !0,
		options: o,
		style: { width: "200px" },
		class: `${i.inputClass || ""}`,
		defaultOpen: !0,
		filterOption: !0,
		showSearch: !0,
		optionFilterProp: "label",
		placeholder: useI18nJoin(useT("common.search"), e.title),
		getPopupContainer: (e) => e.parentNode
	}, e.inputProps), null) : createVNode(Select, mergeProps({
		ref: c,
		value: n[e.key].value,
		"onUpdate:value": (r) => n[e.key].value = r,
		allowClear: !0,
		options: o,
		mode: "multiple",
		class: `${i.inputClass || ""}`,
		style: { width: "200px" },
		defaultOpen: !0,
		filterOption: !0,
		optionFilterProp: "label",
		placeholder: useI18nJoin(useT("common.search"), e.title),
		getPopupContainer: (e) => e.parentNode
	}, e.inputProps), null);
	return {
		conditions: a,
		Component: u,
		displayValue: s,
		onComponentOpen: l
	};
}, Textarea_default = (e, n, r) => {
	let { searchProvider: i } = r, a = [{
		label: useT("search.equal"),
		value: "equal"
	}, {
		label: useT("search.exclude"),
		value: "exclude"
	}];
	e.conditions && e.conditions.length && (a = a.filter((n) => e.conditions.includes(n.value)));
	let o = computed(() => n[e.key].value && isString(n[e.key].value) ? n[e.key].value.trim().split("\n").join(",") : n[e.key].value && isArray(n[e.key].value) ? n[e.key].value.join(",") : ""), s = ref(null);
	e.collectItem = () => {
		let r = null, i = null, o = find(a, { value: n[e.key].condition })?.label;
		return r = null, n[e.key].value && isString(n[e.key].value) ? r = n[e.key].value.trim().split("\n") : n[e.key].value && isArray(n[e.key].value) && (r = n[e.key].value), i = r ? `${e.title}${o}: ${r?.join(",")}` : null, {
			value: r,
			searchLabel: i
		};
	};
	let c = () => {
		s.value?.focus();
	}, l = createVNode(Textarea, mergeProps({
		ref: s,
		value: n[e.key].value,
		"onUpdate:value": (r) => n[e.key].value = r,
		allowClear: !0,
		class: `${i.inputClass || ""}`,
		style: { width: "200px" },
		autoSize: {
			minRows: 4,
			maxRows: 8
		},
		placeholder: useT("search.textarea-placeholder", { title: e.title })
	}, e.inputProps), null);
	return {
		conditions: a,
		Component: l,
		displayValue: o,
		onComponentOpen: c
	};
}, Date_default$1 = (e, n, r) => {
	let { searchProvider: i } = r, a = [
		{
			label: useT("search.equal"),
			value: "equal"
		},
		{
			label: useT("search.less-than"),
			value: "lessThan"
		},
		{
			label: useT("search.greater-than"),
			value: "greaterThan"
		},
		{
			label: useT("search.between"),
			value: "between"
		},
		{
			label: useT("search.null"),
			value: "null"
		},
		{
			label: useT("search.not-null"),
			value: "notNull"
		}
	];
	e.conditions && e.conditions.length && (a = a.filter((n) => e.conditions.includes(n.value)));
	let o = ref(null), s = e.inputProps?.format || "YYYY-MM-DD", c = e.inputProps?.picker || "date";
	e.collectItem = () => {
		let r = null, i = null, o = find(a, { value: n[e.key].condition })?.label;
		return n[e.key].condition === "between" && n[e.key].value && every(n[e.key].value, dayjs.isDayjs) ? (r = n[e.key].value, i = `${e.title}${o}: ${r[0].format(s)} - ${r[1].format(s)} `) : n[e.key].condition !== "between" && dayjs.isDayjs(n[e.key].value[0]) && (r = n[e.key].value[0], i = `${e.title}${o}: ${r.format(s)}`), {
			value: r,
			searchLabel: i
		};
	};
	let l = () => {
		o.value?.focus();
	}, u = computed(() => n[e.key].condition === "between" && n[e.key].value && every(n[e.key].value, dayjs.isDayjs) ? [
		createVNode(Tag, { style: { marginRight: 0 } }, { default: () => n[e.key].value?.[0]?.format(s) }),
		createVNode("span", null, [createTextVNode(" - ")]),
		createVNode(Tag, null, { default: () => n[e.key].value?.[1]?.format(s) })
	] : n[e.key].value?.[0]?.format(s)), d = ref([{
		label: useT("search.last-week"),
		value: dayjs().add(-7, "d")
	}, {
		label: useT("search.last-month"),
		value: dayjs().add(-1, "month")
	}]), f = ref([
		{
			label: useT("search.past-week"),
			value: [dayjs().add(-7, "d"), dayjs()]
		},
		{
			label: useT("search.past-two-weeks"),
			value: [dayjs().add(-14, "d"), dayjs()]
		},
		{
			label: useT("search.past-days", { days: 30 }),
			value: [dayjs().add(-30, "d"), dayjs()]
		},
		{
			label: useT("search.past-days", { days: 90 }),
			value: [dayjs().add(-90, "d"), dayjs()]
		}
	]), p = n[e.key].condition === "between" ? createVNode(RangePicker, mergeProps({
		ref: o,
		value: n[e.key].value,
		"onUpdate:value": (r) => n[e.key].value = r,
		allowClear: !0,
		inputReadOnly: !0,
		open: !0,
		presets: c === "date" ? f.value : [],
		style: { width: "400px" },
		class: `${i.inputClass || ""}`,
		placeholder: [useT("search.start-time"), useT("search.end-time")],
		getPopupContainer: (e) => e?.parentNode
	}, e.inputProps), null) : createVNode(DatePicker, mergeProps({
		ref: o,
		value: n[e.key].value[0],
		"onUpdate:value": (r) => n[e.key].value[0] = r,
		allowClear: !0,
		open: !0,
		inputReadOnly: !0,
		presets: c === "date" ? d.value : [],
		style: { width: "200px" },
		class: `${i.inputClass || ""}`,
		placeholder: useI18nJoin(useT("common.search"), e.title),
		getPopupContainer: (e) => e?.parentNode
	}, e.inputProps), null);
	return {
		conditions: a,
		Component: p,
		displayValue: u,
		onComponentOpen: l
	};
}, Cascader_default$1 = (e, n, r) => {
	let { searchProvider: i } = r, a = isFunction(e.options) ? e.options() : e.options, o = [
		{
			label: useT("search.equal"),
			value: "equal"
		},
		{
			label: useT("search.not-equal"),
			value: "notEqual"
		},
		{
			label: useT("search.include-sub"),
			value: "include"
		}
	];
	e.conditions && e.conditions.length && (o = o.filter((n) => e.conditions.includes(n.value)));
	let s = computed(() => useFindLabelsFromPath(a, n[e.key].value, e.inputProps?.fieldNames).join("/")), c = ref(null);
	e.collectItem = () => {
		let r = n[e.key].value || null, i = null, s = find(o, { value: n[e.key].condition })?.label;
		return r && (i = `${e.title}${s}: ${useFindLabelsFromPath(a, r, e.inputProps?.fieldNames).join("/")}`), {
			value: r,
			searchLabel: i
		};
	};
	let l = () => {
		c.value?.focus();
	}, u = createVNode(Cascader, mergeProps({
		ref: c,
		value: n[e.key].value,
		"onUpdate:value": (r) => n[e.key].value = r,
		allowClear: !0,
		open: !0,
		class: `${i.inputClass || ""}`,
		style: { width: "200px" },
		options: a,
		changeOnSelect: findIndex(o, { value: "include" }) > -1,
		showSearch: !0,
		placeholder: useI18nJoin(useT("common.search"), e.title),
		getPopupContainer: (e) => e?.parentNode
	}, e.inputProps), null);
	return {
		conditions: o,
		Component: u,
		displayValue: s,
		onComponentOpen: l
	};
}, Switch_default$1 = (e, n, r) => {
	let { searchProvider: i } = r, a = [{
		label: useT("search.equal"),
		value: "equal"
	}];
	e.conditions && e.conditions.length && (a = a.filter((n) => e.conditions.includes(n.value)));
	let o = [{
		value: "checked",
		label: e.options?.[0] || useT("common.yes")
	}, {
		value: "unchecked",
		label: e.options?.[1] || useT("common.no")
	}], s = computed(() => find(o, { value: n[e.key].value })?.label), c = ref(null);
	e.collectItem = () => {
		let r = n[e.key].value === void 0 ? void 0 : n[e.key].value === "checked", i = null, s = find(a, { value: n[e.key].condition });
		return r && (i = `${e.title}${s?.label}: ${find(o, { value: n[e.key].value })?.label}`), {
			value: r,
			searchLabel: i
		};
	};
	let l = () => {}, u = createVNode(Select, mergeProps({
		ref: c,
		value: n[e.key].value,
		"onUpdate:value": (r) => n[e.key].value = r,
		allowClear: !0,
		options: o,
		style: { width: "200px" },
		class: `${i.inputClass || ""}`,
		defaultOpen: !0,
		getPopupContainer: (e) => e.parentNode,
		placeholder: useI18nJoin(useT("common.search"), e.title)
	}, e.inputProps), null);
	return {
		conditions: a,
		Component: u,
		displayValue: s,
		onComponentOpen: l
	};
}, Expand_default = (e, n) => {
	let { t: r, locale: i } = useI18n(), a = isFunction(e.options) ? e.options() : e.options;
	a = a.map((e) => isString(e) || isNumber(e) ? {
		value: e,
		label: e
	} : e);
	let o = ref(e.options.map(() => !1));
	n[e.key].value?.length && n[e.key].value.forEach((e) => {
		let n = a.findIndex((n) => n.value === e);
		n !== -1 && (o.value[n] = !0);
	}), e.expandable === "multiple" && (n[e.key].condition = "include");
	let s = (r) => {
		e.expandable === "multiple" ? n[e.key].value = o.value.map((e, n) => {
			if (e) return a[n].value;
		}) : o.value.forEach((i, s) => {
			if (s === r) {
				i ? n[e.key].value = [a[r].value] : n[e.key].value = [];
				return;
			}
			o.value[s] = !1;
		});
	};
	return e.collectItem = () => {
		let o = null, s = null;
		if (e.expandable === "multiple") if (o = n[e.key].value?.filter((e) => e), !o || !o.length) o = null;
		else {
			let n = o.map((e) => find(a, { value: e })?.label)?.join(",");
			s = `${useI18nJoin(e.title, r("search.include"), { locale: i })}: ${n}`;
		}
		else o = n[e.key].value?.[0] || null, s = `${useI18nJoin(e.title, r("search.equal"), { locale: i })}: ${find(a, { value: o })?.label}`;
		return {
			value: o,
			searchLabel: s
		};
	}, createVNode("div", { class: "newbie-search-expand-item" }, [
		createVNode("div", { class: "newbie-search-expand-item-title" }, [e.title, createTextVNode(":")]),
		createVNode("div", { class: "newbie-search-expand-item-options" }, [createVNode(Space, {
			size: [8, 2],
			wrap: !0
		}, { default: () => a.map((e, n) => createVNode(CheckableTag, {
			checked: o.value[n],
			"onUpdate:checked": (e) => o.value[n] = e,
			onChange: () => s(n)
		}, { default: () => e.label })) })]),
		createVNode("div", { class: "newbie-search-expand-item-extra" }, [e.expandable === "multiple" ? r("search.multiple-choice-available") : ""])
	]);
};
/**!
* Sortable 1.14.0
* @author	RubaXa   <trash@rubaxa.org>
* @author	owenm    <owen23355@gmail.com>
* @license MIT
*/
function ownKeys(e, n) {
	var r = Object.keys(e);
	if (Object.getOwnPropertySymbols) {
		var i = Object.getOwnPropertySymbols(e);
		n && (i = i.filter(function(n) {
			return Object.getOwnPropertyDescriptor(e, n).enumerable;
		})), r.push.apply(r, i);
	}
	return r;
}
function _objectSpread2(e) {
	for (var n = 1; n < arguments.length; n++) {
		var r = arguments[n] == null ? {} : arguments[n];
		n % 2 ? ownKeys(Object(r), !0).forEach(function(n) {
			_defineProperty(e, n, r[n]);
		}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : ownKeys(Object(r)).forEach(function(n) {
			Object.defineProperty(e, n, Object.getOwnPropertyDescriptor(r, n));
		});
	}
	return e;
}
function _typeof(e) {
	"@babel/helpers - typeof";
	return _typeof = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(e) {
		return typeof e;
	} : function(e) {
		return e && typeof Symbol == "function" && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
	}, _typeof(e);
}
function _defineProperty(e, n, r) {
	return n in e ? Object.defineProperty(e, n, {
		value: r,
		enumerable: !0,
		configurable: !0,
		writable: !0
	}) : e[n] = r, e;
}
function _extends() {
	return _extends = Object.assign || function(e) {
		for (var n = 1; n < arguments.length; n++) {
			var r = arguments[n];
			for (var i in r) Object.prototype.hasOwnProperty.call(r, i) && (e[i] = r[i]);
		}
		return e;
	}, _extends.apply(this, arguments);
}
function _objectWithoutPropertiesLoose(e, n) {
	if (e == null) return {};
	var r = {}, i = Object.keys(e), a, o;
	for (o = 0; o < i.length; o++) a = i[o], !(n.indexOf(a) >= 0) && (r[a] = e[a]);
	return r;
}
function _objectWithoutProperties(e, n) {
	if (e == null) return {};
	var r = _objectWithoutPropertiesLoose(e, n), i, a;
	if (Object.getOwnPropertySymbols) {
		var o = Object.getOwnPropertySymbols(e);
		for (a = 0; a < o.length; a++) i = o[a], !(n.indexOf(i) >= 0) && Object.prototype.propertyIsEnumerable.call(e, i) && (r[i] = e[i]);
	}
	return r;
}
var version$2 = "1.14.0";
function userAgent(e) {
	if (typeof window < "u" && window.navigator) return !!/* @__PURE__ */ navigator.userAgent.match(e);
}
var IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i), Edge = userAgent(/Edge/i), FireFox = userAgent(/firefox/i), Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i), IOS = userAgent(/iP(ad|od|hone)/i), ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i), captureMode = {
	capture: !1,
	passive: !1
};
function on(e, n, r) {
	e.addEventListener(n, r, !IE11OrLess && captureMode);
}
function off(e, n, r) {
	e.removeEventListener(n, r, !IE11OrLess && captureMode);
}
function matches(e, n) {
	if (n) {
		if (n[0] === ">" && (n = n.substring(1)), e) try {
			if (e.matches) return e.matches(n);
			if (e.msMatchesSelector) return e.msMatchesSelector(n);
			if (e.webkitMatchesSelector) return e.webkitMatchesSelector(n);
		} catch {
			return !1;
		}
		return !1;
	}
}
function getParentOrHost(e) {
	return e.host && e !== document && e.host.nodeType ? e.host : e.parentNode;
}
function closest(e, n, r, i) {
	if (e) {
		r ||= document;
		do {
			if (n != null && (n[0] === ">" ? e.parentNode === r && matches(e, n) : matches(e, n)) || i && e === r) return e;
			if (e === r) break;
		} while (e = getParentOrHost(e));
	}
	return null;
}
var R_SPACE = /\s+/g;
function toggleClass(e, n, r) {
	e && n && (e.classList ? e.classList[r ? "add" : "remove"](n) : e.className = ((" " + e.className + " ").replace(R_SPACE, " ").replace(" " + n + " ", " ") + (r ? " " + n : "")).replace(R_SPACE, " "));
}
function css(e, n, r) {
	var i = e && e.style;
	if (i) {
		if (r === void 0) return document.defaultView && document.defaultView.getComputedStyle ? r = document.defaultView.getComputedStyle(e, "") : e.currentStyle && (r = e.currentStyle), n === void 0 ? r : r[n];
		!(n in i) && n.indexOf("webkit") === -1 && (n = "-webkit-" + n), i[n] = r + (typeof r == "string" ? "" : "px");
	}
}
function matrix(e, n) {
	var r = "";
	if (typeof e == "string") r = e;
	else do {
		var i = css(e, "transform");
		i && i !== "none" && (r = i + " " + r);
	} while (!n && (e = e.parentNode));
	var a = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;
	return a && new a(r);
}
function find$1(e, n, r) {
	if (e) {
		var i = e.getElementsByTagName(n), a = 0, o = i.length;
		if (r) for (; a < o; a++) r(i[a], a);
		return i;
	}
	return [];
}
function getWindowScrollingElement() {
	return document.scrollingElement || document.documentElement;
}
function getRect(e, n, r, i, a) {
	if (!(!e.getBoundingClientRect && e !== window)) {
		var o, s, c, l, u, d, f;
		if (e !== window && e.parentNode && e !== getWindowScrollingElement() ? (o = e.getBoundingClientRect(), s = o.top, c = o.left, l = o.bottom, u = o.right, d = o.height, f = o.width) : (s = 0, c = 0, l = window.innerHeight, u = window.innerWidth, d = window.innerHeight, f = window.innerWidth), (n || r) && e !== window && (a ||= e.parentNode, !IE11OrLess)) do
			if (a && a.getBoundingClientRect && (css(a, "transform") !== "none" || r && css(a, "position") !== "static")) {
				var p = a.getBoundingClientRect();
				s -= p.top + parseInt(css(a, "border-top-width")), c -= p.left + parseInt(css(a, "border-left-width")), l = s + o.height, u = c + o.width;
				break;
			}
		while (a = a.parentNode);
		if (i && e !== window) {
			var m = matrix(a || e), g = m && m.a, _ = m && m.d;
			m && (s /= _, c /= g, f /= g, d /= _, l = s + d, u = c + f);
		}
		return {
			top: s,
			left: c,
			bottom: l,
			right: u,
			width: f,
			height: d
		};
	}
}
function isScrolledPast(e, n, r) {
	for (var i = getParentAutoScrollElement(e, !0), a = getRect(e)[n]; i;) {
		var o = getRect(i)[r], s = void 0;
		if (s = r === "top" || r === "left" ? a >= o : a <= o, !s) return i;
		if (i === getWindowScrollingElement()) break;
		i = getParentAutoScrollElement(i, !1);
	}
	return !1;
}
function getChild(e, n, r, i) {
	for (var a = 0, o = 0, s = e.children; o < s.length;) {
		if (s[o].style.display !== "none" && s[o] !== Sortable.ghost && (i || s[o] !== Sortable.dragged) && closest(s[o], r.draggable, e, !1)) {
			if (a === n) return s[o];
			a++;
		}
		o++;
	}
	return null;
}
function lastChild(e, n) {
	for (var r = e.lastElementChild; r && (r === Sortable.ghost || css(r, "display") === "none" || n && !matches(r, n));) r = r.previousElementSibling;
	return r || null;
}
function index(e, n) {
	var r = 0;
	if (!e || !e.parentNode) return -1;
	for (; e = e.previousElementSibling;) e.nodeName.toUpperCase() !== "TEMPLATE" && e !== Sortable.clone && (!n || matches(e, n)) && r++;
	return r;
}
function getRelativeScrollOffset(e) {
	var n = 0, r = 0, i = getWindowScrollingElement();
	if (e) do {
		var a = matrix(e), o = a.a, s = a.d;
		n += e.scrollLeft * o, r += e.scrollTop * s;
	} while (e !== i && (e = e.parentNode));
	return [n, r];
}
function indexOfObject(e, n) {
	for (var r in e) if (e.hasOwnProperty(r)) {
		for (var i in n) if (n.hasOwnProperty(i) && n[i] === e[r][i]) return Number(r);
	}
	return -1;
}
function getParentAutoScrollElement(e, n) {
	if (!e || !e.getBoundingClientRect) return getWindowScrollingElement();
	var r = e, i = !1;
	do
		if (r.clientWidth < r.scrollWidth || r.clientHeight < r.scrollHeight) {
			var a = css(r);
			if (r.clientWidth < r.scrollWidth && (a.overflowX == "auto" || a.overflowX == "scroll") || r.clientHeight < r.scrollHeight && (a.overflowY == "auto" || a.overflowY == "scroll")) {
				if (!r.getBoundingClientRect || r === document.body) return getWindowScrollingElement();
				if (i || n) return r;
				i = !0;
			}
		}
	while (r = r.parentNode);
	return getWindowScrollingElement();
}
function extend(e, n) {
	if (e && n) for (var r in n) n.hasOwnProperty(r) && (e[r] = n[r]);
	return e;
}
function isRectEqual(e, n) {
	return Math.round(e.top) === Math.round(n.top) && Math.round(e.left) === Math.round(n.left) && Math.round(e.height) === Math.round(n.height) && Math.round(e.width) === Math.round(n.width);
}
var _throttleTimeout;
function throttle$1(e, n) {
	return function() {
		if (!_throttleTimeout) {
			var r = arguments, i = this;
			r.length === 1 ? e.call(i, r[0]) : e.apply(i, r), _throttleTimeout = setTimeout(function() {
				_throttleTimeout = void 0;
			}, n);
		}
	};
}
function cancelThrottle() {
	clearTimeout(_throttleTimeout), _throttleTimeout = void 0;
}
function scrollBy(e, n, r) {
	e.scrollLeft += n, e.scrollTop += r;
}
function clone(e) {
	var n = window.Polymer, r = window.jQuery || window.Zepto;
	return n && n.dom ? n.dom(e).cloneNode(!0) : r ? r(e).clone(!0)[0] : e.cloneNode(!0);
}
var expando = "Sortable" + (/* @__PURE__ */ new Date()).getTime();
function AnimationStateManager() {
	var e = [], n;
	return {
		captureAnimationState: function() {
			e = [], this.options.animation && [].slice.call(this.el.children).forEach(function(n) {
				if (!(css(n, "display") === "none" || n === Sortable.ghost)) {
					e.push({
						target: n,
						rect: getRect(n)
					});
					var r = _objectSpread2({}, e[e.length - 1].rect);
					if (n.thisAnimationDuration) {
						var i = matrix(n, !0);
						i && (r.top -= i.f, r.left -= i.e);
					}
					n.fromRect = r;
				}
			});
		},
		addAnimationState: function(n) {
			e.push(n);
		},
		removeAnimationState: function(n) {
			e.splice(indexOfObject(e, { target: n }), 1);
		},
		animateAll: function(r) {
			var i = this;
			if (!this.options.animation) {
				clearTimeout(n), typeof r == "function" && r();
				return;
			}
			var a = !1, o = 0;
			e.forEach(function(e) {
				var n = 0, r = e.target, s = r.fromRect, c = getRect(r), l = r.prevFromRect, u = r.prevToRect, d = e.rect, f = matrix(r, !0);
				f && (c.top -= f.f, c.left -= f.e), r.toRect = c, r.thisAnimationDuration && isRectEqual(l, c) && !isRectEqual(s, c) && (d.top - c.top) / (d.left - c.left) === (s.top - c.top) / (s.left - c.left) && (n = calculateRealTime(d, l, u, i.options)), isRectEqual(c, s) || (r.prevFromRect = s, r.prevToRect = c, n ||= i.options.animation, i.animate(r, d, c, n)), n && (a = !0, o = Math.max(o, n), clearTimeout(r.animationResetTimer), r.animationResetTimer = setTimeout(function() {
					r.animationTime = 0, r.prevFromRect = null, r.fromRect = null, r.prevToRect = null, r.thisAnimationDuration = null;
				}, n), r.thisAnimationDuration = n);
			}), clearTimeout(n), a ? n = setTimeout(function() {
				typeof r == "function" && r();
			}, o) : typeof r == "function" && r(), e = [];
		},
		animate: function(e, n, r, i) {
			if (i) {
				css(e, "transition", ""), css(e, "transform", "");
				var a = matrix(this.el), o = a && a.a, s = a && a.d, c = (n.left - r.left) / (o || 1), l = (n.top - r.top) / (s || 1);
				e.animatingX = !!c, e.animatingY = !!l, css(e, "transform", "translate3d(" + c + "px," + l + "px,0)"), this.forRepaintDummy = repaint(e), css(e, "transition", "transform " + i + "ms" + (this.options.easing ? " " + this.options.easing : "")), css(e, "transform", "translate3d(0,0,0)"), typeof e.animated == "number" && clearTimeout(e.animated), e.animated = setTimeout(function() {
					css(e, "transition", ""), css(e, "transform", ""), e.animated = !1, e.animatingX = !1, e.animatingY = !1;
				}, i);
			}
		}
	};
}
function repaint(e) {
	return e.offsetWidth;
}
function calculateRealTime(e, n, r, i) {
	return Math.sqrt((n.top - e.top) ** 2 + (n.left - e.left) ** 2) / Math.sqrt((n.top - r.top) ** 2 + (n.left - r.left) ** 2) * i.animation;
}
var plugins = [], defaults = { initializeByDefault: !0 }, PluginManager = {
	mount: function(e) {
		for (var n in defaults) defaults.hasOwnProperty(n) && !(n in e) && (e[n] = defaults[n]);
		plugins.forEach(function(n) {
			if (n.pluginName === e.pluginName) throw `Sortable: Cannot mount plugin ${e.pluginName} more than once`;
		}), plugins.push(e);
	},
	pluginEvent: function(e, n, r) {
		var i = this;
		this.eventCanceled = !1, r.cancel = function() {
			i.eventCanceled = !0;
		};
		var a = e + "Global";
		plugins.forEach(function(i) {
			n[i.pluginName] && (n[i.pluginName][a] && n[i.pluginName][a](_objectSpread2({ sortable: n }, r)), n.options[i.pluginName] && n[i.pluginName][e] && n[i.pluginName][e](_objectSpread2({ sortable: n }, r)));
		});
	},
	initializePlugins: function(e, n, r, i) {
		for (var a in plugins.forEach(function(i) {
			var a = i.pluginName;
			if (!(!e.options[a] && !i.initializeByDefault)) {
				var o = new i(e, n, e.options);
				o.sortable = e, o.options = e.options, e[a] = o, _extends(r, o.defaults);
			}
		}), e.options) if (e.options.hasOwnProperty(a)) {
			var o = this.modifyOption(e, a, e.options[a]);
			o !== void 0 && (e.options[a] = o);
		}
	},
	getEventProperties: function(e, n) {
		var r = {};
		return plugins.forEach(function(i) {
			typeof i.eventProperties == "function" && _extends(r, i.eventProperties.call(n[i.pluginName], e));
		}), r;
	},
	modifyOption: function(e, n, r) {
		var i;
		return plugins.forEach(function(a) {
			e[a.pluginName] && a.optionListeners && typeof a.optionListeners[n] == "function" && (i = a.optionListeners[n].call(e[a.pluginName], r));
		}), i;
	}
};
function dispatchEvent(e) {
	var n = e.sortable, r = e.rootEl, i = e.name, a = e.targetEl, o = e.cloneEl, s = e.toEl, c = e.fromEl, l = e.oldIndex, u = e.newIndex, d = e.oldDraggableIndex, f = e.newDraggableIndex, p = e.originalEvent, m = e.putSortable, g = e.extraEventProperties;
	if (n ||= r && r[expando], n) {
		var _, v = n.options, y = "on" + i.charAt(0).toUpperCase() + i.substr(1);
		window.CustomEvent && !IE11OrLess && !Edge ? _ = new CustomEvent(i, {
			bubbles: !0,
			cancelable: !0
		}) : (_ = document.createEvent("Event"), _.initEvent(i, !0, !0)), _.to = s || r, _.from = c || r, _.item = a || r, _.clone = o, _.oldIndex = l, _.newIndex = u, _.oldDraggableIndex = d, _.newDraggableIndex = f, _.originalEvent = p, _.pullMode = m ? m.lastPutMode : void 0;
		var b = _objectSpread2(_objectSpread2({}, g), PluginManager.getEventProperties(i, n));
		for (var x in b) _[x] = b[x];
		r && r.dispatchEvent(_), v[y] && v[y].call(n, _);
	}
}
var _excluded = ["evt"], pluginEvent = function(e, n) {
	var r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, i = r.evt, a = _objectWithoutProperties(r, _excluded);
	PluginManager.pluginEvent.bind(Sortable)(e, n, _objectSpread2({
		dragEl,
		parentEl,
		ghostEl,
		rootEl,
		nextEl,
		lastDownEl,
		cloneEl,
		cloneHidden,
		dragStarted: moved,
		putSortable,
		activeSortable: Sortable.active,
		originalEvent: i,
		oldIndex,
		oldDraggableIndex,
		newIndex,
		newDraggableIndex,
		hideGhostForTarget: _hideGhostForTarget,
		unhideGhostForTarget: _unhideGhostForTarget,
		cloneNowHidden: function() {
			cloneHidden = !0;
		},
		cloneNowShown: function() {
			cloneHidden = !1;
		},
		dispatchSortableEvent: function(e) {
			_dispatchEvent({
				sortable: n,
				name: e,
				originalEvent: i
			});
		}
	}, a));
};
function _dispatchEvent(e) {
	dispatchEvent(_objectSpread2({
		putSortable,
		cloneEl,
		targetEl: dragEl,
		rootEl,
		oldIndex,
		oldDraggableIndex,
		newIndex,
		newDraggableIndex
	}, e));
}
var dragEl, parentEl, ghostEl, rootEl, nextEl, lastDownEl, cloneEl, cloneHidden, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, activeGroup, putSortable, awaitingDragStarted = !1, ignoreNextClick = !1, sortables = [], tapEvt, touchEvt, lastDx, lastDy, tapDistanceLeft, tapDistanceTop, moved, lastTarget, lastDirection, pastFirstInvertThresh = !1, isCircumstantialInvert = !1, targetMoveDistance, ghostRelativeParent, ghostRelativeParentInitialScroll = [], _silent = !1, savedInputChecked = [], documentExists = typeof document < "u", PositionGhostAbsolutely = IOS, CSSFloatProperty = Edge || IE11OrLess ? "cssFloat" : "float", supportDraggable = documentExists && !ChromeForAndroid && !IOS && "draggable" in document.createElement("div"), supportCssPointerEvents = function() {
	if (documentExists) {
		if (IE11OrLess) return !1;
		var e = document.createElement("x");
		return e.style.cssText = "pointer-events:auto", e.style.pointerEvents === "auto";
	}
}(), _detectDirection = function(e, n) {
	var r = css(e), i = parseInt(r.width) - parseInt(r.paddingLeft) - parseInt(r.paddingRight) - parseInt(r.borderLeftWidth) - parseInt(r.borderRightWidth), a = getChild(e, 0, n), o = getChild(e, 1, n), s = a && css(a), c = o && css(o), l = s && parseInt(s.marginLeft) + parseInt(s.marginRight) + getRect(a).width, u = c && parseInt(c.marginLeft) + parseInt(c.marginRight) + getRect(o).width;
	if (r.display === "flex") return r.flexDirection === "column" || r.flexDirection === "column-reverse" ? "vertical" : "horizontal";
	if (r.display === "grid") return r.gridTemplateColumns.split(" ").length <= 1 ? "vertical" : "horizontal";
	if (a && s.float && s.float !== "none") {
		var d = s.float === "left" ? "left" : "right";
		return o && (c.clear === "both" || c.clear === d) ? "vertical" : "horizontal";
	}
	return a && (s.display === "block" || s.display === "flex" || s.display === "table" || s.display === "grid" || l >= i && r[CSSFloatProperty] === "none" || o && r[CSSFloatProperty] === "none" && l + u > i) ? "vertical" : "horizontal";
}, _dragElInRowColumn = function(e, n, r) {
	var i = r ? e.left : e.top, a = r ? e.right : e.bottom, o = r ? e.width : e.height, s = r ? n.left : n.top, c = r ? n.right : n.bottom, l = r ? n.width : n.height;
	return i === s || a === c || i + o / 2 === s + l / 2;
}, _detectNearestEmptySortable = function(e, n) {
	var r;
	return sortables.some(function(i) {
		var a = i[expando].options.emptyInsertThreshold;
		if (!(!a || lastChild(i))) {
			var o = getRect(i), s = e >= o.left - a && e <= o.right + a, c = n >= o.top - a && n <= o.bottom + a;
			if (s && c) return r = i;
		}
	}), r;
}, _prepareGroup = function(e) {
	function n(e, r) {
		return function(i, a, o, s) {
			var c = i.options.group.name && a.options.group.name && i.options.group.name === a.options.group.name;
			if (e == null && (r || c)) return !0;
			if (e == null || e === !1) return !1;
			if (r && e === "clone") return e;
			if (typeof e == "function") return n(e(i, a, o, s), r)(i, a, o, s);
			var l = (r ? i : a).options.group.name;
			return e === !0 || typeof e == "string" && e === l || e.join && e.indexOf(l) > -1;
		};
	}
	var r = {}, i = e.group;
	(!i || _typeof(i) != "object") && (i = { name: i }), r.name = i.name, r.checkPull = n(i.pull, !0), r.checkPut = n(i.put), r.revertClone = i.revertClone, e.group = r;
}, _hideGhostForTarget = function() {
	!supportCssPointerEvents && ghostEl && css(ghostEl, "display", "none");
}, _unhideGhostForTarget = function() {
	!supportCssPointerEvents && ghostEl && css(ghostEl, "display", "");
};
documentExists && document.addEventListener("click", function(e) {
	if (ignoreNextClick) return e.preventDefault(), e.stopPropagation && e.stopPropagation(), e.stopImmediatePropagation && e.stopImmediatePropagation(), ignoreNextClick = !1, !1;
}, !0);
var nearestEmptyInsertDetectEvent = function(e) {
	if (dragEl) {
		e = e.touches ? e.touches[0] : e;
		var n = _detectNearestEmptySortable(e.clientX, e.clientY);
		if (n) {
			var r = {};
			for (var i in e) e.hasOwnProperty(i) && (r[i] = e[i]);
			r.target = r.rootEl = n, r.preventDefault = void 0, r.stopPropagation = void 0, n[expando]._onDragOver(r);
		}
	}
}, _checkOutsideTargetEl = function(e) {
	dragEl && dragEl.parentNode[expando]._isOutsideThisEl(e.target);
};
function Sortable(e, n) {
	if (!(e && e.nodeType && e.nodeType === 1)) throw `Sortable: \`el\` must be an HTMLElement, not ${{}.toString.call(e)}`;
	this.el = e, this.options = n = _extends({}, n), e[expando] = this;
	var r = {
		group: null,
		sort: !0,
		disabled: !1,
		store: null,
		handle: null,
		draggable: /^[uo]l$/i.test(e.nodeName) ? ">li" : ">*",
		swapThreshold: 1,
		invertSwap: !1,
		invertedSwapThreshold: null,
		removeCloneOnHide: !0,
		direction: function() {
			return _detectDirection(e, this.options);
		},
		ghostClass: "sortable-ghost",
		chosenClass: "sortable-chosen",
		dragClass: "sortable-drag",
		ignore: "a, img",
		filter: null,
		preventOnFilter: !0,
		animation: 0,
		easing: null,
		setData: function(e, n) {
			e.setData("Text", n.textContent);
		},
		dropBubble: !1,
		dragoverBubble: !1,
		dataIdAttr: "data-id",
		delay: 0,
		delayOnTouchOnly: !1,
		touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,
		forceFallback: !1,
		fallbackClass: "sortable-fallback",
		fallbackOnBody: !1,
		fallbackTolerance: 0,
		fallbackOffset: {
			x: 0,
			y: 0
		},
		supportPointer: Sortable.supportPointer !== !1 && "PointerEvent" in window && !Safari,
		emptyInsertThreshold: 5
	};
	for (var i in PluginManager.initializePlugins(this, e, r), r) !(i in n) && (n[i] = r[i]);
	for (var a in _prepareGroup(n), this) a.charAt(0) === "_" && typeof this[a] == "function" && (this[a] = this[a].bind(this));
	this.nativeDraggable = n.forceFallback ? !1 : supportDraggable, this.nativeDraggable && (this.options.touchStartThreshold = 1), n.supportPointer ? on(e, "pointerdown", this._onTapStart) : (on(e, "mousedown", this._onTapStart), on(e, "touchstart", this._onTapStart)), this.nativeDraggable && (on(e, "dragover", this), on(e, "dragenter", this)), sortables.push(this.el), n.store && n.store.get && this.sort(n.store.get(this) || []), _extends(this, AnimationStateManager());
}
Sortable.prototype = {
	constructor: Sortable,
	_isOutsideThisEl: function(e) {
		!this.el.contains(e) && e !== this.el && (lastTarget = null);
	},
	_getDirection: function(e, n) {
		return typeof this.options.direction == "function" ? this.options.direction.call(this, e, n, dragEl) : this.options.direction;
	},
	_onTapStart: function(e) {
		if (e.cancelable) {
			var n = this, r = this.el, i = this.options, a = i.preventOnFilter, o = e.type, s = e.touches && e.touches[0] || e.pointerType && e.pointerType === "touch" && e, c = (s || e).target, l = e.target.shadowRoot && (e.path && e.path[0] || e.composedPath && e.composedPath()[0]) || c, u = i.filter;
			if (_saveInputCheckedState(r), !dragEl && !(/mousedown|pointerdown/.test(o) && e.button !== 0 || i.disabled) && !l.isContentEditable && !(!this.nativeDraggable && Safari && c && c.tagName.toUpperCase() === "SELECT") && (c = closest(c, i.draggable, r, !1), !(c && c.animated) && lastDownEl !== c)) {
				if (oldIndex = index(c), oldDraggableIndex = index(c, i.draggable), typeof u == "function") {
					if (u.call(this, e, c, this)) {
						_dispatchEvent({
							sortable: n,
							rootEl: l,
							name: "filter",
							targetEl: c,
							toEl: r,
							fromEl: r
						}), pluginEvent("filter", n, { evt: e }), a && e.cancelable && e.preventDefault();
						return;
					}
				} else if (u && (u = u.split(",").some(function(i) {
					if (i = closest(l, i.trim(), r, !1), i) return _dispatchEvent({
						sortable: n,
						rootEl: i,
						name: "filter",
						targetEl: c,
						fromEl: r,
						toEl: r
					}), pluginEvent("filter", n, { evt: e }), !0;
				}), u)) {
					a && e.cancelable && e.preventDefault();
					return;
				}
				i.handle && !closest(l, i.handle, r, !1) || this._prepareDragStart(e, s, c);
			}
		}
	},
	_prepareDragStart: function(e, n, r) {
		var i = this, a = i.el, o = i.options, s = a.ownerDocument, c;
		if (r && !dragEl && r.parentNode === a) {
			var l = getRect(r);
			if (rootEl = a, dragEl = r, parentEl = dragEl.parentNode, nextEl = dragEl.nextSibling, lastDownEl = r, activeGroup = o.group, Sortable.dragged = dragEl, tapEvt = {
				target: dragEl,
				clientX: (n || e).clientX,
				clientY: (n || e).clientY
			}, tapDistanceLeft = tapEvt.clientX - l.left, tapDistanceTop = tapEvt.clientY - l.top, this._lastX = (n || e).clientX, this._lastY = (n || e).clientY, dragEl.style["will-change"] = "all", c = function() {
				if (pluginEvent("delayEnded", i, { evt: e }), Sortable.eventCanceled) {
					i._onDrop();
					return;
				}
				i._disableDelayedDragEvents(), !FireFox && i.nativeDraggable && (dragEl.draggable = !0), i._triggerDragStart(e, n), _dispatchEvent({
					sortable: i,
					name: "choose",
					originalEvent: e
				}), toggleClass(dragEl, o.chosenClass, !0);
			}, o.ignore.split(",").forEach(function(e) {
				find$1(dragEl, e.trim(), _disableDraggable);
			}), on(s, "dragover", nearestEmptyInsertDetectEvent), on(s, "mousemove", nearestEmptyInsertDetectEvent), on(s, "touchmove", nearestEmptyInsertDetectEvent), on(s, "mouseup", i._onDrop), on(s, "touchend", i._onDrop), on(s, "touchcancel", i._onDrop), FireFox && this.nativeDraggable && (this.options.touchStartThreshold = 4, dragEl.draggable = !0), pluginEvent("delayStart", this, { evt: e }), o.delay && (!o.delayOnTouchOnly || n) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {
				if (Sortable.eventCanceled) {
					this._onDrop();
					return;
				}
				on(s, "mouseup", i._disableDelayedDrag), on(s, "touchend", i._disableDelayedDrag), on(s, "touchcancel", i._disableDelayedDrag), on(s, "mousemove", i._delayedDragTouchMoveHandler), on(s, "touchmove", i._delayedDragTouchMoveHandler), o.supportPointer && on(s, "pointermove", i._delayedDragTouchMoveHandler), i._dragStartTimer = setTimeout(c, o.delay);
			} else c();
		}
	},
	_delayedDragTouchMoveHandler: function(e) {
		var n = e.touches ? e.touches[0] : e;
		Math.max(Math.abs(n.clientX - this._lastX), Math.abs(n.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1)) && this._disableDelayedDrag();
	},
	_disableDelayedDrag: function() {
		dragEl && _disableDraggable(dragEl), clearTimeout(this._dragStartTimer), this._disableDelayedDragEvents();
	},
	_disableDelayedDragEvents: function() {
		var e = this.el.ownerDocument;
		off(e, "mouseup", this._disableDelayedDrag), off(e, "touchend", this._disableDelayedDrag), off(e, "touchcancel", this._disableDelayedDrag), off(e, "mousemove", this._delayedDragTouchMoveHandler), off(e, "touchmove", this._delayedDragTouchMoveHandler), off(e, "pointermove", this._delayedDragTouchMoveHandler);
	},
	_triggerDragStart: function(e, n) {
		n ||= e.pointerType == "touch" && e, !this.nativeDraggable || n ? this.options.supportPointer ? on(document, "pointermove", this._onTouchMove) : n ? on(document, "touchmove", this._onTouchMove) : on(document, "mousemove", this._onTouchMove) : (on(dragEl, "dragend", this), on(rootEl, "dragstart", this._onDragStart));
		try {
			document.selection ? _nextTick(function() {
				document.selection.empty();
			}) : window.getSelection().removeAllRanges();
		} catch {}
	},
	_dragStarted: function(e, n) {
		if (awaitingDragStarted = !1, rootEl && dragEl) {
			pluginEvent("dragStarted", this, { evt: n }), this.nativeDraggable && on(document, "dragover", _checkOutsideTargetEl);
			var r = this.options;
			!e && toggleClass(dragEl, r.dragClass, !1), toggleClass(dragEl, r.ghostClass, !0), Sortable.active = this, e && this._appendGhost(), _dispatchEvent({
				sortable: this,
				name: "start",
				originalEvent: n
			});
		} else this._nulling();
	},
	_emulateDragOver: function() {
		if (touchEvt) {
			this._lastX = touchEvt.clientX, this._lastY = touchEvt.clientY, _hideGhostForTarget();
			for (var e = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY), n = e; e && e.shadowRoot && (e = e.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY), e !== n);) n = e;
			if (dragEl.parentNode[expando]._isOutsideThisEl(e), n) do {
				if (n[expando]) {
					var r = void 0;
					if (r = n[expando]._onDragOver({
						clientX: touchEvt.clientX,
						clientY: touchEvt.clientY,
						target: e,
						rootEl: n
					}), r && !this.options.dragoverBubble) break;
				}
				e = n;
			} while (n = n.parentNode);
			_unhideGhostForTarget();
		}
	},
	_onTouchMove: function(e) {
		if (tapEvt) {
			var n = this.options, r = n.fallbackTolerance, i = n.fallbackOffset, a = e.touches ? e.touches[0] : e, o = ghostEl && matrix(ghostEl, !0), s = ghostEl && o && o.a, c = ghostEl && o && o.d, l = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent), u = (a.clientX - tapEvt.clientX + i.x) / (s || 1) + (l ? l[0] - ghostRelativeParentInitialScroll[0] : 0) / (s || 1), d = (a.clientY - tapEvt.clientY + i.y) / (c || 1) + (l ? l[1] - ghostRelativeParentInitialScroll[1] : 0) / (c || 1);
			if (!Sortable.active && !awaitingDragStarted) {
				if (r && Math.max(Math.abs(a.clientX - this._lastX), Math.abs(a.clientY - this._lastY)) < r) return;
				this._onDragStart(e, !0);
			}
			if (ghostEl) {
				o ? (o.e += u - (lastDx || 0), o.f += d - (lastDy || 0)) : o = {
					a: 1,
					b: 0,
					c: 0,
					d: 1,
					e: u,
					f: d
				};
				var f = `matrix(${o.a},${o.b},${o.c},${o.d},${o.e},${o.f})`;
				css(ghostEl, "webkitTransform", f), css(ghostEl, "mozTransform", f), css(ghostEl, "msTransform", f), css(ghostEl, "transform", f), lastDx = u, lastDy = d, touchEvt = a;
			}
			e.cancelable && e.preventDefault();
		}
	},
	_appendGhost: function() {
		if (!ghostEl) {
			var e = this.options.fallbackOnBody ? document.body : rootEl, n = getRect(dragEl, !0, PositionGhostAbsolutely, !0, e), r = this.options;
			if (PositionGhostAbsolutely) {
				for (ghostRelativeParent = e; css(ghostRelativeParent, "position") === "static" && css(ghostRelativeParent, "transform") === "none" && ghostRelativeParent !== document;) ghostRelativeParent = ghostRelativeParent.parentNode;
				ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement ? (ghostRelativeParent === document && (ghostRelativeParent = getWindowScrollingElement()), n.top += ghostRelativeParent.scrollTop, n.left += ghostRelativeParent.scrollLeft) : ghostRelativeParent = getWindowScrollingElement(), ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);
			}
			ghostEl = dragEl.cloneNode(!0), toggleClass(ghostEl, r.ghostClass, !1), toggleClass(ghostEl, r.fallbackClass, !0), toggleClass(ghostEl, r.dragClass, !0), css(ghostEl, "transition", ""), css(ghostEl, "transform", ""), css(ghostEl, "box-sizing", "border-box"), css(ghostEl, "margin", 0), css(ghostEl, "top", n.top), css(ghostEl, "left", n.left), css(ghostEl, "width", n.width), css(ghostEl, "height", n.height), css(ghostEl, "opacity", "0.8"), css(ghostEl, "position", PositionGhostAbsolutely ? "absolute" : "fixed"), css(ghostEl, "zIndex", "100000"), css(ghostEl, "pointerEvents", "none"), Sortable.ghost = ghostEl, e.appendChild(ghostEl), css(ghostEl, "transform-origin", tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + "% " + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + "%");
		}
	},
	_onDragStart: function(e, n) {
		var r = this, i = e.dataTransfer, a = r.options;
		if (pluginEvent("dragStart", this, { evt: e }), Sortable.eventCanceled) {
			this._onDrop();
			return;
		}
		pluginEvent("setupClone", this), Sortable.eventCanceled || (cloneEl = clone(dragEl), cloneEl.draggable = !1, cloneEl.style["will-change"] = "", this._hideClone(), toggleClass(cloneEl, this.options.chosenClass, !1), Sortable.clone = cloneEl), r.cloneId = _nextTick(function() {
			pluginEvent("clone", r), !Sortable.eventCanceled && (r.options.removeCloneOnHide || rootEl.insertBefore(cloneEl, dragEl), r._hideClone(), _dispatchEvent({
				sortable: r,
				name: "clone"
			}));
		}), !n && toggleClass(dragEl, a.dragClass, !0), n ? (ignoreNextClick = !0, r._loopId = setInterval(r._emulateDragOver, 50)) : (off(document, "mouseup", r._onDrop), off(document, "touchend", r._onDrop), off(document, "touchcancel", r._onDrop), i && (i.effectAllowed = "move", a.setData && a.setData.call(r, i, dragEl)), on(document, "drop", r), css(dragEl, "transform", "translateZ(0)")), awaitingDragStarted = !0, r._dragStartId = _nextTick(r._dragStarted.bind(r, n, e)), on(document, "selectstart", r), moved = !0, Safari && css(document.body, "user-select", "none");
	},
	_onDragOver: function(e) {
		var n = this.el, r = e.target, i, a, o, s = this.options, c = s.group, l = Sortable.active, u = activeGroup === c, d = s.sort, f = putSortable || l, p, m = this, g = !1;
		if (_silent) return;
		function _(s, c) {
			pluginEvent(s, m, _objectSpread2({
				evt: e,
				isOwner: u,
				axis: p ? "vertical" : "horizontal",
				revert: o,
				dragRect: i,
				targetRect: a,
				canSort: d,
				fromSortable: f,
				target: r,
				completed: y,
				onMove: function(r, a) {
					return _onMove(rootEl, n, dragEl, i, r, getRect(r), e, a);
				},
				changed: b
			}, c));
		}
		function v() {
			_("dragOverAnimationCapture"), m.captureAnimationState(), m !== f && f.captureAnimationState();
		}
		function y(i) {
			return _("dragOverCompleted", { insertion: i }), i && (u ? l._hideClone() : l._showClone(m), m !== f && (toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : l.options.ghostClass, !1), toggleClass(dragEl, s.ghostClass, !0)), putSortable !== m && m !== Sortable.active ? putSortable = m : m === Sortable.active && putSortable && (putSortable = null), f === m && (m._ignoreWhileAnimating = r), m.animateAll(function() {
				_("dragOverAnimationComplete"), m._ignoreWhileAnimating = null;
			}), m !== f && (f.animateAll(), f._ignoreWhileAnimating = null)), (r === dragEl && !dragEl.animated || r === n && !r.animated) && (lastTarget = null), !s.dragoverBubble && !e.rootEl && r !== document && (dragEl.parentNode[expando]._isOutsideThisEl(e.target), !i && nearestEmptyInsertDetectEvent(e)), !s.dragoverBubble && e.stopPropagation && e.stopPropagation(), g = !0;
		}
		function b() {
			newIndex = index(dragEl), newDraggableIndex = index(dragEl, s.draggable), _dispatchEvent({
				sortable: m,
				name: "change",
				toEl: n,
				newIndex,
				newDraggableIndex,
				originalEvent: e
			});
		}
		if (e.preventDefault !== void 0 && e.cancelable && e.preventDefault(), r = closest(r, s.draggable, n, !0), _("dragOver"), Sortable.eventCanceled) return g;
		if (dragEl.contains(e.target) || r.animated && r.animatingX && r.animatingY || m._ignoreWhileAnimating === r) return y(!1);
		if (ignoreNextClick = !1, l && !s.disabled && (u ? d || (o = parentEl !== rootEl) : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, l, dragEl, e)) && c.checkPut(this, l, dragEl, e))) {
			if (p = this._getDirection(e, r) === "vertical", i = getRect(dragEl), _("dragOverValid"), Sortable.eventCanceled) return g;
			if (o) return parentEl = rootEl, v(), this._hideClone(), _("revert"), Sortable.eventCanceled || (nextEl ? rootEl.insertBefore(dragEl, nextEl) : rootEl.appendChild(dragEl)), y(!0);
			var x = lastChild(n, s.draggable);
			if (!x || _ghostIsLast(e, p, this) && !x.animated) {
				if (x === dragEl) return y(!1);
				if (x && n === e.target && (r = x), r && (a = getRect(r)), _onMove(rootEl, n, dragEl, i, r, a, e, !!r) !== !1) return v(), n.appendChild(dragEl), parentEl = n, b(), y(!0);
			} else if (x && _ghostIsFirst(e, p, this)) {
				var S = getChild(n, 0, s, !0);
				if (S === dragEl) return y(!1);
				if (r = S, a = getRect(r), _onMove(rootEl, n, dragEl, i, r, a, e, !1) !== !1) return v(), n.insertBefore(dragEl, S), parentEl = n, b(), y(!0);
			} else if (r.parentNode === n) {
				a = getRect(r);
				var C = 0, w, T = dragEl.parentNode !== n, E = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || i, r.animated && r.toRect || a, p), D = p ? "top" : "left", O = isScrolledPast(r, "top", "top") || isScrolledPast(dragEl, "top", "top"), k = O ? O.scrollTop : void 0;
				lastTarget !== r && (w = a[D], pastFirstInvertThresh = !1, isCircumstantialInvert = !E && s.invertSwap || T), C = _getSwapDirection(e, r, a, p, E ? 1 : s.swapThreshold, s.invertedSwapThreshold == null ? s.swapThreshold : s.invertedSwapThreshold, isCircumstantialInvert, lastTarget === r);
				var A;
				if (C !== 0) {
					var j = index(dragEl);
					do
						j -= C, A = parentEl.children[j];
					while (A && (css(A, "display") === "none" || A === ghostEl));
				}
				if (C === 0 || A === r) return y(!1);
				lastTarget = r, lastDirection = C;
				var M = r.nextElementSibling, N = !1;
				N = C === 1;
				var P = _onMove(rootEl, n, dragEl, i, r, a, e, N);
				if (P !== !1) return (P === 1 || P === -1) && (N = P === 1), _silent = !0, setTimeout(_unsilent, 30), v(), N && !M ? n.appendChild(dragEl) : r.parentNode.insertBefore(dragEl, N ? M : r), O && scrollBy(O, 0, k - O.scrollTop), parentEl = dragEl.parentNode, w !== void 0 && !isCircumstantialInvert && (targetMoveDistance = Math.abs(w - getRect(r)[D])), b(), y(!0);
			}
			if (n.contains(dragEl)) return y(!1);
		}
		return !1;
	},
	_ignoreWhileAnimating: null,
	_offMoveEvents: function() {
		off(document, "mousemove", this._onTouchMove), off(document, "touchmove", this._onTouchMove), off(document, "pointermove", this._onTouchMove), off(document, "dragover", nearestEmptyInsertDetectEvent), off(document, "mousemove", nearestEmptyInsertDetectEvent), off(document, "touchmove", nearestEmptyInsertDetectEvent);
	},
	_offUpEvents: function() {
		var e = this.el.ownerDocument;
		off(e, "mouseup", this._onDrop), off(e, "touchend", this._onDrop), off(e, "pointerup", this._onDrop), off(e, "touchcancel", this._onDrop), off(document, "selectstart", this);
	},
	_onDrop: function(e) {
		var n = this.el, r = this.options;
		if (newIndex = index(dragEl), newDraggableIndex = index(dragEl, r.draggable), pluginEvent("drop", this, { evt: e }), parentEl = dragEl && dragEl.parentNode, newIndex = index(dragEl), newDraggableIndex = index(dragEl, r.draggable), Sortable.eventCanceled) {
			this._nulling();
			return;
		}
		awaitingDragStarted = !1, isCircumstantialInvert = !1, pastFirstInvertThresh = !1, clearInterval(this._loopId), clearTimeout(this._dragStartTimer), _cancelNextTick(this.cloneId), _cancelNextTick(this._dragStartId), this.nativeDraggable && (off(document, "drop", this), off(n, "dragstart", this._onDragStart)), this._offMoveEvents(), this._offUpEvents(), Safari && css(document.body, "user-select", ""), css(dragEl, "transform", ""), e && (moved && (e.cancelable && e.preventDefault(), !r.dropBubble && e.stopPropagation()), ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl), (rootEl === parentEl || putSortable && putSortable.lastPutMode !== "clone") && cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl), dragEl && (this.nativeDraggable && off(dragEl, "dragend", this), _disableDraggable(dragEl), dragEl.style["will-change"] = "", moved && !awaitingDragStarted && toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, !1), toggleClass(dragEl, this.options.chosenClass, !1), _dispatchEvent({
			sortable: this,
			name: "unchoose",
			toEl: parentEl,
			newIndex: null,
			newDraggableIndex: null,
			originalEvent: e
		}), rootEl === parentEl ? newIndex !== oldIndex && newIndex >= 0 && (_dispatchEvent({
			sortable: this,
			name: "update",
			toEl: parentEl,
			originalEvent: e
		}), _dispatchEvent({
			sortable: this,
			name: "sort",
			toEl: parentEl,
			originalEvent: e
		})) : (newIndex >= 0 && (_dispatchEvent({
			rootEl: parentEl,
			name: "add",
			toEl: parentEl,
			fromEl: rootEl,
			originalEvent: e
		}), _dispatchEvent({
			sortable: this,
			name: "remove",
			toEl: parentEl,
			originalEvent: e
		}), _dispatchEvent({
			rootEl: parentEl,
			name: "sort",
			toEl: parentEl,
			fromEl: rootEl,
			originalEvent: e
		}), _dispatchEvent({
			sortable: this,
			name: "sort",
			toEl: parentEl,
			originalEvent: e
		})), putSortable && putSortable.save()), Sortable.active && ((newIndex == null || newIndex === -1) && (newIndex = oldIndex, newDraggableIndex = oldDraggableIndex), _dispatchEvent({
			sortable: this,
			name: "end",
			toEl: parentEl,
			originalEvent: e
		}), this.save()))), this._nulling();
	},
	_nulling: function() {
		pluginEvent("nulling", this), rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null, savedInputChecked.forEach(function(e) {
			e.checked = !0;
		}), savedInputChecked.length = lastDx = lastDy = 0;
	},
	handleEvent: function(e) {
		switch (e.type) {
			case "drop":
			case "dragend":
				this._onDrop(e);
				break;
			case "dragenter":
			case "dragover":
				dragEl && (this._onDragOver(e), _globalDragOver(e));
				break;
			case "selectstart":
				e.preventDefault();
				break;
		}
	},
	toArray: function() {
		for (var e = [], n, r = this.el.children, i = 0, a = r.length, o = this.options; i < a; i++) n = r[i], closest(n, o.draggable, this.el, !1) && e.push(n.getAttribute(o.dataIdAttr) || _generateId(n));
		return e;
	},
	sort: function(e, n) {
		var r = {}, i = this.el;
		this.toArray().forEach(function(e, n) {
			var a = i.children[n];
			closest(a, this.options.draggable, i, !1) && (r[e] = a);
		}, this), n && this.captureAnimationState(), e.forEach(function(e) {
			r[e] && (i.removeChild(r[e]), i.appendChild(r[e]));
		}), n && this.animateAll();
	},
	save: function() {
		var e = this.options.store;
		e && e.set && e.set(this);
	},
	closest: function(e, n) {
		return closest(e, n || this.options.draggable, this.el, !1);
	},
	option: function(e, n) {
		var r = this.options;
		if (n === void 0) return r[e];
		var i = PluginManager.modifyOption(this, e, n);
		i === void 0 ? r[e] = n : r[e] = i, e === "group" && _prepareGroup(r);
	},
	destroy: function() {
		pluginEvent("destroy", this);
		var e = this.el;
		e[expando] = null, off(e, "mousedown", this._onTapStart), off(e, "touchstart", this._onTapStart), off(e, "pointerdown", this._onTapStart), this.nativeDraggable && (off(e, "dragover", this), off(e, "dragenter", this)), Array.prototype.forEach.call(e.querySelectorAll("[draggable]"), function(e) {
			e.removeAttribute("draggable");
		}), this._onDrop(), this._disableDelayedDragEvents(), sortables.splice(sortables.indexOf(this.el), 1), this.el = e = null;
	},
	_hideClone: function() {
		if (!cloneHidden) {
			if (pluginEvent("hideClone", this), Sortable.eventCanceled) return;
			css(cloneEl, "display", "none"), this.options.removeCloneOnHide && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl), cloneHidden = !0;
		}
	},
	_showClone: function(e) {
		if (e.lastPutMode !== "clone") {
			this._hideClone();
			return;
		}
		if (cloneHidden) {
			if (pluginEvent("showClone", this), Sortable.eventCanceled) return;
			dragEl.parentNode == rootEl && !this.options.group.revertClone ? rootEl.insertBefore(cloneEl, dragEl) : nextEl ? rootEl.insertBefore(cloneEl, nextEl) : rootEl.appendChild(cloneEl), this.options.group.revertClone && this.animate(dragEl, cloneEl), css(cloneEl, "display", ""), cloneHidden = !1;
		}
	}
};
function _globalDragOver(e) {
	e.dataTransfer && (e.dataTransfer.dropEffect = "move"), e.cancelable && e.preventDefault();
}
function _onMove(e, n, r, i, a, o, s, c) {
	var l, u = e[expando], d = u.options.onMove, f;
	return window.CustomEvent && !IE11OrLess && !Edge ? l = new CustomEvent("move", {
		bubbles: !0,
		cancelable: !0
	}) : (l = document.createEvent("Event"), l.initEvent("move", !0, !0)), l.to = n, l.from = e, l.dragged = r, l.draggedRect = i, l.related = a || n, l.relatedRect = o || getRect(n), l.willInsertAfter = c, l.originalEvent = s, e.dispatchEvent(l), d && (f = d.call(u, l, s)), f;
}
function _disableDraggable(e) {
	e.draggable = !1;
}
function _unsilent() {
	_silent = !1;
}
function _ghostIsFirst(e, n, r) {
	var i = getRect(getChild(r.el, 0, r.options, !0)), a = 10;
	return n ? e.clientX < i.left - a || e.clientY < i.top && e.clientX < i.right : e.clientY < i.top - a || e.clientY < i.bottom && e.clientX < i.left;
}
function _ghostIsLast(e, n, r) {
	var i = getRect(lastChild(r.el, r.options.draggable)), a = 10;
	return n ? e.clientX > i.right + a || e.clientX <= i.right && e.clientY > i.bottom && e.clientX >= i.left : e.clientX > i.right && e.clientY > i.top || e.clientX <= i.right && e.clientY > i.bottom + a;
}
function _getSwapDirection(e, n, r, i, a, o, s, c) {
	var l = i ? e.clientY : e.clientX, u = i ? r.height : r.width, d = i ? r.top : r.left, f = i ? r.bottom : r.right, p = !1;
	if (!s) {
		if (c && targetMoveDistance < u * a) {
			if (!pastFirstInvertThresh && (lastDirection === 1 ? l > d + u * o / 2 : l < f - u * o / 2) && (pastFirstInvertThresh = !0), pastFirstInvertThresh) p = !0;
			else if (lastDirection === 1 ? l < d + targetMoveDistance : l > f - targetMoveDistance) return -lastDirection;
		} else if (l > d + u * (1 - a) / 2 && l < f - u * (1 - a) / 2) return _getInsertDirection(n);
	}
	return p ||= s, p && (l < d + u * o / 2 || l > f - u * o / 2) ? l > d + u / 2 ? 1 : -1 : 0;
}
function _getInsertDirection(e) {
	return index(dragEl) < index(e) ? 1 : -1;
}
function _generateId(e) {
	for (var n = e.tagName + e.className + e.src + e.href + e.textContent, r = n.length, i = 0; r--;) i += n.charCodeAt(r);
	return i.toString(36);
}
function _saveInputCheckedState(e) {
	savedInputChecked.length = 0;
	for (var n = e.getElementsByTagName("input"), r = n.length; r--;) {
		var i = n[r];
		i.checked && savedInputChecked.push(i);
	}
}
function _nextTick(e) {
	return setTimeout(e, 0);
}
function _cancelNextTick(e) {
	return clearTimeout(e);
}
documentExists && on(document, "touchmove", function(e) {
	(Sortable.active || awaitingDragStarted) && e.cancelable && e.preventDefault();
}), Sortable.utils = {
	on,
	off,
	css,
	find: find$1,
	is: function(e, n) {
		return !!closest(e, n, e, !1);
	},
	extend,
	throttle: throttle$1,
	closest,
	toggleClass,
	clone,
	index,
	nextTick: _nextTick,
	cancelNextTick: _cancelNextTick,
	detectDirection: _detectDirection,
	getChild
}, Sortable.get = function(e) {
	return e[expando];
}, Sortable.mount = function() {
	var e = [...arguments];
	e[0].constructor === Array && (e = e[0]), e.forEach(function(e) {
		if (!e.prototype || !e.prototype.constructor) throw `Sortable: Mounted plugin must be a constructor function, not ${{}.toString.call(e)}`;
		e.utils && (Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), e.utils)), PluginManager.mount(e);
	});
}, Sortable.create = function(e, n) {
	return new Sortable(e, n);
}, Sortable.version = version$2;
var autoScrolls = [], scrollEl, scrollRootEl, scrolling = !1, lastAutoScrollX, lastAutoScrollY, touchEvt$1, pointerElemChangedInterval;
function AutoScrollPlugin() {
	function e() {
		for (var e in this.defaults = {
			scroll: !0,
			forceAutoScrollFallback: !1,
			scrollSensitivity: 30,
			scrollSpeed: 10,
			bubbleScroll: !0
		}, this) e.charAt(0) === "_" && typeof this[e] == "function" && (this[e] = this[e].bind(this));
	}
	return e.prototype = {
		dragStarted: function(e) {
			var n = e.originalEvent;
			this.sortable.nativeDraggable ? on(document, "dragover", this._handleAutoScroll) : this.options.supportPointer ? on(document, "pointermove", this._handleFallbackAutoScroll) : n.touches ? on(document, "touchmove", this._handleFallbackAutoScroll) : on(document, "mousemove", this._handleFallbackAutoScroll);
		},
		dragOverCompleted: function(e) {
			var n = e.originalEvent;
			!this.options.dragOverBubble && !n.rootEl && this._handleAutoScroll(n);
		},
		drop: function() {
			this.sortable.nativeDraggable ? off(document, "dragover", this._handleAutoScroll) : (off(document, "pointermove", this._handleFallbackAutoScroll), off(document, "touchmove", this._handleFallbackAutoScroll), off(document, "mousemove", this._handleFallbackAutoScroll)), clearPointerElemChangedInterval(), clearAutoScrolls(), cancelThrottle();
		},
		nulling: function() {
			touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null, autoScrolls.length = 0;
		},
		_handleFallbackAutoScroll: function(e) {
			this._handleAutoScroll(e, !0);
		},
		_handleAutoScroll: function(e, n) {
			var r = this, i = (e.touches ? e.touches[0] : e).clientX, a = (e.touches ? e.touches[0] : e).clientY, o = document.elementFromPoint(i, a);
			if (touchEvt$1 = e, n || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {
				autoScroll(e, this.options, o, n);
				var s = getParentAutoScrollElement(o, !0);
				scrolling && (!pointerElemChangedInterval || i !== lastAutoScrollX || a !== lastAutoScrollY) && (pointerElemChangedInterval && clearPointerElemChangedInterval(), pointerElemChangedInterval = setInterval(function() {
					var o = getParentAutoScrollElement(document.elementFromPoint(i, a), !0);
					o !== s && (s = o, clearAutoScrolls()), autoScroll(e, r.options, o, n);
				}, 10), lastAutoScrollX = i, lastAutoScrollY = a);
			} else {
				if (!this.options.bubbleScroll || getParentAutoScrollElement(o, !0) === getWindowScrollingElement()) {
					clearAutoScrolls();
					return;
				}
				autoScroll(e, this.options, getParentAutoScrollElement(o, !1), !1);
			}
		}
	}, _extends(e, {
		pluginName: "scroll",
		initializeByDefault: !0
	});
}
function clearAutoScrolls() {
	autoScrolls.forEach(function(e) {
		clearInterval(e.pid);
	}), autoScrolls = [];
}
function clearPointerElemChangedInterval() {
	clearInterval(pointerElemChangedInterval);
}
var autoScroll = throttle$1(function(e, n, r, i) {
	if (n.scroll) {
		var a = (e.touches ? e.touches[0] : e).clientX, o = (e.touches ? e.touches[0] : e).clientY, s = n.scrollSensitivity, c = n.scrollSpeed, l = getWindowScrollingElement(), u = !1, d;
		scrollRootEl !== r && (scrollRootEl = r, clearAutoScrolls(), scrollEl = n.scroll, d = n.scrollFn, scrollEl === !0 && (scrollEl = getParentAutoScrollElement(r, !0)));
		var f = 0, p = scrollEl;
		do {
			var m = p, g = getRect(m), _ = g.top, v = g.bottom, y = g.left, b = g.right, x = g.width, S = g.height, C = void 0, w = void 0, T = m.scrollWidth, E = m.scrollHeight, D = css(m), O = m.scrollLeft, k = m.scrollTop;
			m === l ? (C = x < T && (D.overflowX === "auto" || D.overflowX === "scroll" || D.overflowX === "visible"), w = S < E && (D.overflowY === "auto" || D.overflowY === "scroll" || D.overflowY === "visible")) : (C = x < T && (D.overflowX === "auto" || D.overflowX === "scroll"), w = S < E && (D.overflowY === "auto" || D.overflowY === "scroll"));
			var A = C && (Math.abs(b - a) <= s && O + x < T) - (Math.abs(y - a) <= s && !!O), j = w && (Math.abs(v - o) <= s && k + S < E) - (Math.abs(_ - o) <= s && !!k);
			if (!autoScrolls[f]) for (var M = 0; M <= f; M++) autoScrolls[M] || (autoScrolls[M] = {});
			(autoScrolls[f].vx != A || autoScrolls[f].vy != j || autoScrolls[f].el !== m) && (autoScrolls[f].el = m, autoScrolls[f].vx = A, autoScrolls[f].vy = j, clearInterval(autoScrolls[f].pid), (A != 0 || j != 0) && (u = !0, autoScrolls[f].pid = setInterval(function() {
				i && this.layer === 0 && Sortable.active._onTouchMove(touchEvt$1);
				var n = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * c : 0, r = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * c : 0;
				typeof d == "function" && d.call(Sortable.dragged.parentNode[expando], r, n, e, touchEvt$1, autoScrolls[this.layer].el) !== "continue" || scrollBy(autoScrolls[this.layer].el, r, n);
			}.bind({ layer: f }), 24))), f++;
		} while (n.bubbleScroll && p !== l && (p = getParentAutoScrollElement(p, !1)));
		scrolling = u;
	}
}, 30), drop = function(e) {
	var n = e.originalEvent, r = e.putSortable, i = e.dragEl, a = e.activeSortable, o = e.dispatchSortableEvent, s = e.hideGhostForTarget, c = e.unhideGhostForTarget;
	if (n) {
		var l = r || a;
		s();
		var u = n.changedTouches && n.changedTouches.length ? n.changedTouches[0] : n, d = document.elementFromPoint(u.clientX, u.clientY);
		c(), l && !l.el.contains(d) && (o("spill"), this.onSpill({
			dragEl: i,
			putSortable: r
		}));
	}
};
function Revert() {}
Revert.prototype = {
	startIndex: null,
	dragStart: function(e) {
		this.startIndex = e.oldDraggableIndex;
	},
	onSpill: function(e) {
		var n = e.dragEl, r = e.putSortable;
		this.sortable.captureAnimationState(), r && r.captureAnimationState();
		var i = getChild(this.sortable.el, this.startIndex, this.options);
		i ? this.sortable.el.insertBefore(n, i) : this.sortable.el.appendChild(n), this.sortable.animateAll(), r && r.animateAll();
	},
	drop
}, _extends(Revert, { pluginName: "revertOnSpill" });
function Remove() {}
Remove.prototype = {
	onSpill: function(e) {
		var n = e.dragEl, r = e.putSortable || this.sortable;
		r.captureAnimationState(), n.parentNode && n.parentNode.removeChild(n), r.animateAll();
	},
	drop
}, _extends(Remove, { pluginName: "removeOnSpill" }), Sortable.mount(new AutoScrollPlugin()), Sortable.mount(Remove, Revert);
var sortable_esm_default = Sortable;
function removeNode(e) {
	e.parentElement !== null && e.parentElement.removeChild(e);
}
function insertNodeAt(e, n, r) {
	let i = r === 0 ? e.children[0] : e.children[r - 1].nextSibling;
	e.insertBefore(n, i);
}
function getConsole() {
	return typeof window < "u" ? window.console : global.console;
}
var console$1 = getConsole();
function cached(e) {
	let n = Object.create(null);
	return function(r) {
		return n[r] || (n[r] = e(r));
	};
}
var regex = /-(\w)/g, camelize$1 = cached((e) => e.replace(regex, (e, n) => n.toUpperCase())), manageAndEmit$1 = [
	"Start",
	"Add",
	"Remove",
	"Update",
	"End"
], emit$1 = [
	"Choose",
	"Unchoose",
	"Sort",
	"Filter",
	"Clone"
], manage$1 = ["Move"], eventHandlerNames = [
	manage$1,
	manageAndEmit$1,
	emit$1
].flatMap((e) => e).map((e) => `on${e}`), events = {
	manage: manage$1,
	manageAndEmit: manageAndEmit$1,
	emit: emit$1
};
function isReadOnly(e) {
	return eventHandlerNames.indexOf(e) !== -1;
}
var tags = /* @__PURE__ */ "a.abbr.address.area.article.aside.audio.b.base.bdi.bdo.blockquote.body.br.button.canvas.caption.cite.code.col.colgroup.data.datalist.dd.del.details.dfn.dialog.div.dl.dt.em.embed.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.iframe.img.input.ins.kbd.label.legend.li.link.main.map.mark.math.menu.menuitem.meta.meter.nav.noscript.object.ol.optgroup.option.output.p.param.picture.pre.progress.q.rb.rp.rt.rtc.ruby.s.samp.script.section.select.slot.small.source.span.strong.style.sub.summary.sup.svg.table.tbody.td.template.textarea.tfoot.th.thead.time.title.tr.track.u.ul.var.video.wbr".split(".");
function isHtmlTag(e) {
	return tags.includes(e);
}
function isTransition(e) {
	return ["transition-group", "TransitionGroup"].includes(e);
}
function isHtmlAttribute(e) {
	return [
		"id",
		"class",
		"role",
		"style"
	].includes(e) || e.startsWith("data-") || e.startsWith("aria-") || e.startsWith("on");
}
function project(e) {
	return e.reduce((e, [n, r]) => (e[n] = r, e), {});
}
function getComponentAttributes({ $attrs: e, componentData: n = {} }) {
	return {
		...project(Object.entries(e).filter(([e, n]) => isHtmlAttribute(e))),
		...n
	};
}
function createSortableOption({ $attrs: e, callBackBuilder: n }) {
	let r = project(getValidSortableEntries(e));
	Object.entries(n).forEach(([e, n]) => {
		events[e].forEach((e) => {
			r[`on${e}`] = n(e);
		});
	});
	let i = `[data-draggable]${r.draggable || ""}`;
	return {
		...r,
		draggable: i
	};
}
function getValidSortableEntries(e) {
	return Object.entries(e).filter(([e, n]) => !isHtmlAttribute(e)).map(([e, n]) => [camelize$1(e), n]).filter(([e, n]) => !isReadOnly(e));
}
var getHtmlElementFromNode = ({ el: e }) => e, addContext = (e, n) => e.__draggable_context = n, getContext = (e) => e.__draggable_context, ComponentStructure = class {
	constructor({ nodes: { header: e, default: n, footer: r }, root: i, realList: a }) {
		this.defaultNodes = n, this.children = [
			...e,
			...n,
			...r
		], this.externalComponent = i.externalComponent, this.rootTransition = i.transition, this.tag = i.tag, this.realList = a;
	}
	get _isRootComponent() {
		return this.externalComponent || this.rootTransition;
	}
	render(e, n) {
		let { tag: r, children: i, _isRootComponent: a } = this;
		return e(r, n, a ? { default: () => i } : i);
	}
	updated() {
		let { defaultNodes: e, realList: n } = this;
		e.forEach((e, r) => {
			addContext(getHtmlElementFromNode(e), {
				element: n[r],
				index: r
			});
		});
	}
	getUnderlyingVm(e) {
		return getContext(e);
	}
	getVmIndexFromDomIndex(e, n) {
		let { defaultNodes: r } = this, { length: i } = r, a = n.children, o = a.item(e);
		if (o === null) return i;
		let s = getContext(o);
		if (s) return s.index;
		if (i === 0) return 0;
		let c = getHtmlElementFromNode(r[0]);
		return e < [...a].findIndex((e) => e === c) ? 0 : i;
	}
};
function getSlot(e, n) {
	let r = e[n];
	return r ? r() : [];
}
function computeNodes({ $slots: e, realList: n, getKey: r }) {
	let i = n || [], [a, o] = ["header", "footer"].map((n) => getSlot(e, n)), { item: s } = e;
	if (!s) throw Error("draggable element must have an item slot");
	let c = i.flatMap((e, n) => s({
		element: e,
		index: n
	}).map((n) => (n.key = r(e), n.props = {
		...n.props || {},
		"data-draggable": !0
	}, n)));
	if (c.length !== i.length) throw Error("Item slot must have only one child");
	return {
		header: a,
		footer: o,
		default: c
	};
}
function getRootInformation(e) {
	let n = isTransition(e), r = !isHtmlTag(e) && !n;
	return {
		transition: n,
		externalComponent: r,
		tag: r ? resolveComponent(e) : n ? TransitionGroup : e
	};
}
function computeComponentStructure({ $slots: e, tag: n, realList: r, getKey: i }) {
	return new ComponentStructure({
		nodes: computeNodes({
			$slots: e,
			realList: r,
			getKey: i
		}),
		root: getRootInformation(n),
		realList: r
	});
}
function emit(e, n) {
	nextTick(() => this.$emit(e.toLowerCase(), n));
}
function manage(e) {
	return (n, r) => {
		if (this.realList !== null) return this[`onDrag${e}`](n, r);
	};
}
function manageAndEmit(e) {
	let n = manage.call(this, e);
	return (r, i) => {
		n.call(this, r, i), emit.call(this, e, r);
	};
}
var draggingElement = null, vuedraggable_default = defineComponent({
	name: "draggable",
	inheritAttrs: !1,
	props: {
		list: {
			type: Array,
			required: !1,
			default: null
		},
		modelValue: {
			type: Array,
			required: !1,
			default: null
		},
		itemKey: {
			type: [String, Function],
			required: !0
		},
		clone: {
			type: Function,
			default: (e) => e
		},
		tag: {
			type: String,
			default: "div"
		},
		move: {
			type: Function,
			default: null
		},
		componentData: {
			type: Object,
			required: !1,
			default: null
		}
	},
	emits: [
		"update:modelValue",
		"change",
		...[...events.manageAndEmit, ...events.emit].map((e) => e.toLowerCase())
	],
	data() {
		return { error: !1 };
	},
	render() {
		try {
			this.error = !1;
			let { $slots: e, $attrs: n, tag: r, componentData: i, realList: a, getKey: o } = this, s = computeComponentStructure({
				$slots: e,
				tag: r,
				realList: a,
				getKey: o
			});
			this.componentStructure = s;
			let c = getComponentAttributes({
				$attrs: n,
				componentData: i
			});
			return s.render(h, c);
		} catch (e) {
			return this.error = !0, h("pre", { style: { color: "red" } }, e.stack);
		}
	},
	created() {
		this.list !== null && this.modelValue !== null && console$1.error("modelValue and list props are mutually exclusive! Please set one or another.");
	},
	mounted() {
		if (this.error) return;
		let { $attrs: e, $el: n, componentStructure: r } = this;
		r.updated();
		let i = createSortableOption({
			$attrs: e,
			callBackBuilder: {
				manageAndEmit: (e) => manageAndEmit.call(this, e),
				emit: (e) => emit.bind(this, e),
				manage: (e) => manage.call(this, e)
			}
		}), a = n.nodeType === 1 ? n : n.parentElement;
		this._sortable = new sortable_esm_default(a, i), this.targetDomElement = a, a.__draggable_component__ = this;
	},
	updated() {
		this.componentStructure.updated();
	},
	beforeUnmount() {
		this._sortable !== void 0 && this._sortable.destroy();
	},
	computed: {
		realList() {
			let { list: e } = this;
			return e || this.modelValue;
		},
		getKey() {
			let { itemKey: e } = this;
			return typeof e == "function" ? e : (n) => n[e];
		}
	},
	watch: { $attrs: {
		handler(e) {
			let { _sortable: n } = this;
			n && getValidSortableEntries(e).forEach(([e, r]) => {
				n.option(e, r);
			});
		},
		deep: !0
	} },
	methods: {
		getUnderlyingVm(e) {
			return this.componentStructure.getUnderlyingVm(e) || null;
		},
		getUnderlyingPotencialDraggableComponent(e) {
			return e.__draggable_component__;
		},
		emitChanges(e) {
			nextTick(() => this.$emit("change", e));
		},
		alterList(e) {
			if (this.list) {
				e(this.list);
				return;
			}
			let n = [...this.modelValue];
			e(n), this.$emit("update:modelValue", n);
		},
		spliceList() {
			this.alterList((e) => e.splice(...arguments));
		},
		updatePosition(e, n) {
			this.alterList((r) => r.splice(n, 0, r.splice(e, 1)[0]));
		},
		getRelatedContextFromMoveEvent({ to: e, related: n }) {
			let r = this.getUnderlyingPotencialDraggableComponent(e);
			if (!r) return { component: r };
			let i = r.realList, a = {
				list: i,
				component: r
			};
			return e !== n && i ? {
				...r.getUnderlyingVm(n) || {},
				...a
			} : a;
		},
		getVmIndexFromDomIndex(e) {
			return this.componentStructure.getVmIndexFromDomIndex(e, this.targetDomElement);
		},
		onDragStart(e) {
			this.context = this.getUnderlyingVm(e.item), e.item._underlying_vm_ = this.clone(this.context.element), draggingElement = e.item;
		},
		onDragAdd(e) {
			let n = e.item._underlying_vm_;
			if (n === void 0) return;
			removeNode(e.item);
			let r = this.getVmIndexFromDomIndex(e.newIndex);
			this.spliceList(r, 0, n);
			let i = {
				element: n,
				newIndex: r
			};
			this.emitChanges({ added: i });
		},
		onDragRemove(e) {
			if (insertNodeAt(this.$el, e.item, e.oldIndex), e.pullMode === "clone") {
				removeNode(e.clone);
				return;
			}
			let { index: n, element: r } = this.context;
			this.spliceList(n, 1);
			let i = {
				element: r,
				oldIndex: n
			};
			this.emitChanges({ removed: i });
		},
		onDragUpdate(e) {
			removeNode(e.item), insertNodeAt(e.from, e.item, e.oldIndex);
			let n = this.context.index, r = this.getVmIndexFromDomIndex(e.newIndex);
			this.updatePosition(n, r);
			let i = {
				element: this.context.element,
				oldIndex: n,
				newIndex: r
			};
			this.emitChanges({ moved: i });
		},
		computeFutureIndex(e, n) {
			if (!e.element) return 0;
			let r = [...n.to.children].filter((e) => e.style.display !== "none"), i = r.indexOf(n.related), a = e.component.getVmIndexFromDomIndex(i);
			return r.indexOf(draggingElement) !== -1 || !n.willInsertAfter ? a : a + 1;
		},
		onDragMove(e, n) {
			let { move: r, realList: i } = this;
			if (!r || !i) return !0;
			let a = this.getRelatedContextFromMoveEvent(e), o = this.computeFutureIndex(a, e), s = {
				...this.context,
				futureIndex: o
			};
			return r({
				...e,
				relatedContext: a,
				draggedContext: s
			}, n);
		},
		onDragEnd() {
			draggingElement = null;
		}
	}
}), Sortable_default = (e, n) => {
	let r = (e) => {
		let r = n.targetKeys.indexOf(e.key);
		n.targetKeys.splice(r, 1);
	};
	return createVNode(Transfer, {
		class: "newbie-search-sortable",
		selectedKeys: n.selectedKeys,
		"onUpdate:selectedKeys": (e) => n.selectedKeys = e,
		targetKeys: n.targetKeys,
		"onUpdate:targetKeys": (e) => n.targetKeys = e,
		locale: {
			itemUnit: "",
			itemsUnit: "",
			notFoundContent: useT("common.no-data"),
			searchPlaceholder: useT("form.search-placeholder"),
			titles: [useT("search.sortable-items"), useT("search.sorted-items")]
		},
		listStyle: { minWidth: "300px" },
		dataSource: e,
		titles: [useT("search.sortable-items"), useT("search.sorted-items")],
		oneWay: !0,
		render: (e) => e.title
	}, { children({ direction: i, filteredItems: a }) {
		if (i === "right") return a.length ? createVNode(vuedraggable_default, {
			class: "list-group",
			itemKey: "key",
			tag: "div",
			modelValue: n.targetKeys,
			"onUpdate:modelValue": (e) => n.targetKeys = e,
			sort: !0,
			animation: 0,
			group: "sortables",
			ghostClass: "ghost",
			handle: ".drag-handle"
		}, { item: ({ element: n }) => {
			let i = find(e, { key: n });
			return i.direction ||= "asc", createVNode("div", { class: "newbie-search-sortable__sortable-item" }, [
				createVNode("span", { class: "drag-handle" }, [createVNode(MenuOutlined, null, null)]),
				createVNode("div", { class: "newbie-search-sortable__sortable-item-content" }, [createVNode("span", { class: "newbie-search-sortable__sortable-item-title" }, [i.title]), createVNode("span", { class: "newbie-search-sortable__sortable-item-sorter" }, [createVNode(Tooltip, {
					title: i.direction === "asc" ? useT("search.ascending") : useT("search.descending"),
					placement: "left"
				}, { default: () => [createVNode(Button, {
					size: "small",
					type: i.direction === "asc" ? "primary" : "default",
					icon: i.direction === "asc" ? createVNode(RiseOutlined, null, null) : createVNode(FallOutlined, null, null),
					onClick: () => i.direction = i.direction === "asc" ? "desc" : "asc"
				}, null)] })])]),
				createVNode("span", { class: "newbie-search-sortable__sortable-item-delete" }, [createVNode(Tooltip, {
					title: useT("search.remove-item"),
					placement: "right"
				}, { default: () => [createVNode(Button, {
					type: "danger",
					icon: createVNode(DeleteOutlined, null, null),
					onClick: () => r(i)
				}, null)] })])
			]);
		} }) : createVNode("div", { class: "newbie-search-sortable__sortable-empty" }, [useT("search.select-sorting-item")]);
	} });
};
function tryOnScopeDispose(e) {
	return (0, lib_exports.getCurrentScope)() ? ((0, lib_exports.onScopeDispose)(e), !0) : !1;
}
function toValue(e) {
	return typeof e == "function" ? e() : (0, lib_exports.unref)(e);
}
var isClient = typeof window < "u", noop = () => {}, isIOS = /* @__PURE__ */ getIsIOS();
function getIsIOS() {
	return isClient && (window == null ? void 0 : window.navigator)?.userAgent && /* @__PURE__ */ /iP(ad|hone|od)/.test(window.navigator.userAgent);
}
var directiveHooks = {
	mounted: "mounted",
	updated: "updated",
	unmounted: "unmounted"
};
function toRef$1(...e) {
	if (e.length !== 1) return (0, lib_exports.toRef)(...e);
	let n = e[0];
	return typeof n == "function" ? (0, lib_exports.readonly)((0, lib_exports.customRef)(() => ({
		get: n,
		set: noop
	}))) : (0, lib_exports.ref)(n);
}
function unrefElement$1(e) {
	let n = toValue(e);
	return n?.$el ?? n;
}
var defaultWindow$1 = isClient ? window : void 0;
isClient && window.document, isClient && window.navigator, isClient && window.location;
function useEventListener$1(...e) {
	let n, r, i, a;
	if (typeof e[0] == "string" || Array.isArray(e[0]) ? ([r, i, a] = e, n = defaultWindow$1) : [n, r, i, a] = e, !n) return noop;
	Array.isArray(r) || (r = [r]), Array.isArray(i) || (i = [i]);
	let o = [], s = () => {
		o.forEach((e) => e()), o.length = 0;
	}, c = (e, n, r, i) => (e.addEventListener(n, r, i), () => e.removeEventListener(n, r, i)), l = (0, lib_exports.watch)(() => [unrefElement$1(n), toValue(a)], ([e, n]) => {
		s(), e && o.push(...r.flatMap((r) => i.map((i) => c(e, r, i, n))));
	}, {
		immediate: !0,
		flush: "post"
	}), u = () => {
		l(), s();
	};
	return tryOnScopeDispose(u), u;
}
var _iOSWorkaround$1 = !1;
function onClickOutside(e, n, r = {}) {
	let { window: i = defaultWindow$1, ignore: a = [], capture: o = !0, detectIframe: s = !1 } = r;
	if (!i) return;
	isIOS && !_iOSWorkaround$1 && (_iOSWorkaround$1 = !0, Array.from(i.document.body.children).forEach((e) => e.addEventListener("click", noop)), i.document.documentElement.addEventListener("click", noop));
	let c = !0, l = (e) => a.some((n) => {
		if (typeof n == "string") return Array.from(i.document.querySelectorAll(n)).some((n) => n === e.target || e.composedPath().includes(n));
		{
			let r = unrefElement$1(n);
			return r && (e.target === r || e.composedPath().includes(r));
		}
	}), u = [
		useEventListener$1(i, "click", (r) => {
			let i = unrefElement$1(e);
			if (!(!i || i === r.target || r.composedPath().includes(i))) {
				if (r.detail === 0 && (c = !l(r)), !c) {
					c = !0;
					return;
				}
				n(r);
			}
		}, {
			passive: !0,
			capture: o
		}),
		useEventListener$1(i, "pointerdown", (n) => {
			let r = unrefElement$1(e);
			r && (c = !n.composedPath().includes(r) && !l(n));
		}, { passive: !0 }),
		s && useEventListener$1(i, "blur", (r) => {
			setTimeout(() => {
				let a = unrefElement$1(e);
				i.document.activeElement?.tagName === "IFRAME" && !a?.contains(i.document.activeElement) && n(r);
			}, 0);
		})
	].filter(Boolean);
	return () => u.forEach((e) => e());
}
var OnClickOutside = /* @__PURE__ */ (0, lib_exports.defineComponent)({
	name: "OnClickOutside",
	props: ["as", "options"],
	emits: ["trigger"],
	setup(e, { slots: n, emit: r }) {
		let i = (0, lib_exports.ref)();
		return onClickOutside(i, (e) => {
			r("trigger", e);
		}, e.options), () => {
			if (n.default) return (0, lib_exports.h)(e.as || "div", { ref: i }, n.default());
		};
	}
});
function unrefElement(e) {
	let n = toValue(e);
	return n?.$el ?? n;
}
var defaultWindow = isClient ? window : void 0;
function useEventListener(...e) {
	let n, r, i, a;
	if (typeof e[0] == "string" || Array.isArray(e[0]) ? ([r, i, a] = e, n = defaultWindow) : [n, r, i, a] = e, !n) return noop;
	Array.isArray(r) || (r = [r]), Array.isArray(i) || (i = [i]);
	let o = [], s = () => {
		o.forEach((e) => e()), o.length = 0;
	}, c = (e, n, r, i) => (e.addEventListener(n, r, i), () => e.removeEventListener(n, r, i)), l = (0, lib_exports.watch)(() => [unrefElement(n), toValue(a)], ([e, n]) => {
		s(), e && o.push(...r.flatMap((r) => i.map((i) => c(e, r, i, n))));
	}, {
		immediate: !0,
		flush: "post"
	}), u = () => {
		l(), s();
	};
	return tryOnScopeDispose(u), u;
}
directiveHooks.mounted, directiveHooks.unmounted, Object.defineProperty, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable, directiveHooks.mounted, directiveHooks.mounted, directiveHooks.mounted, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable, directiveHooks.mounted, directiveHooks.mounted, Object.defineProperty, Object.defineProperties, Object.getOwnPropertyDescriptors, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable, directiveHooks.mounted, directiveHooks.mounted, Object.defineProperty, Object.defineProperties, Object.getOwnPropertyDescriptors, Object.getOwnPropertySymbols, Object.prototype.hasOwnProperty, Object.prototype.propertyIsEnumerable, directiveHooks.mounted;
function checkOverflowScroll(e) {
	let n = window.getComputedStyle(e);
	if (n.overflowX === "scroll" || n.overflowY === "scroll" || n.overflowX === "auto" && e.clientWidth < e.scrollWidth || n.overflowY === "auto" && e.clientHeight < e.scrollHeight) return !0;
	{
		let n = e.parentNode;
		return !n || n.tagName === "BODY" ? !1 : checkOverflowScroll(n);
	}
}
function preventDefault(e) {
	let n = e || window.event, r = n.target;
	return checkOverflowScroll(r) ? !1 : n.touches.length > 1 ? !0 : (n.preventDefault && n.preventDefault(), !1);
}
function useScrollLock(e, n = !1) {
	let r = (0, lib_exports.ref)(n), i = null, a;
	(0, lib_exports.watch)(toRef$1(e), (e) => {
		if (e) {
			let n = e;
			a = n.style.overflow, r.value && (n.style.overflow = "hidden");
		}
	}, { immediate: !0 });
	let o = () => {
		let n = toValue(e);
		!n || r.value || (isIOS && (i = useEventListener(n, "touchmove", (e) => {
			preventDefault(e);
		}, { passive: !1 })), n.style.overflow = "hidden", r.value = !0);
	}, s = () => {
		let n = toValue(e);
		!n || !r.value || (isIOS && i?.(), n.style.overflow = a, r.value = !1);
	};
	return tryOnScopeDispose(s), (0, lib_exports.computed)({
		get() {
			return r.value;
		},
		set(e) {
			e ? o() : s();
		}
	});
}
function onScrollLock() {
	let e = !1, n = (0, lib_exports.ref)(!1);
	return (r, i) => {
		if (n.value = i.value, e) return;
		e = !0;
		let a = useScrollLock(r, i.value);
		(0, lib_exports.watch)(n, (e) => a.value = e);
	};
}
onScrollLock();
var defaultInstanceSettings = {
	update: null,
	begin: null,
	loopBegin: null,
	changeBegin: null,
	change: null,
	changeComplete: null,
	loopComplete: null,
	complete: null,
	loop: 1,
	direction: "normal",
	autoplay: !0,
	timelineOffset: 0
}, defaultTweenSettings = {
	duration: 1e3,
	delay: 0,
	endDelay: 0,
	easing: "easeOutElastic(1, .5)",
	round: 0
}, validTransforms = [
	"translateX",
	"translateY",
	"translateZ",
	"rotate",
	"rotateX",
	"rotateY",
	"rotateZ",
	"scale",
	"scaleX",
	"scaleY",
	"scaleZ",
	"skew",
	"skewX",
	"skewY",
	"perspective",
	"matrix",
	"matrix3d"
], cache = {
	CSS: {},
	springs: {}
};
function minMax(e, n, r) {
	return Math.min(Math.max(e, n), r);
}
function stringContains(e, n) {
	return e.indexOf(n) > -1;
}
function applyArguments(e, n) {
	return e.apply(null, n);
}
var is = {
	arr: function(e) {
		return Array.isArray(e);
	},
	obj: function(e) {
		return stringContains(Object.prototype.toString.call(e), "Object");
	},
	pth: function(e) {
		return is.obj(e) && e.hasOwnProperty("totalLength");
	},
	svg: function(e) {
		return e instanceof SVGElement;
	},
	inp: function(e) {
		return e instanceof HTMLInputElement;
	},
	dom: function(e) {
		return e.nodeType || is.svg(e);
	},
	str: function(e) {
		return typeof e == "string";
	},
	fnc: function(e) {
		return typeof e == "function";
	},
	und: function(e) {
		return e === void 0;
	},
	nil: function(e) {
		return is.und(e) || e === null;
	},
	hex: function(e) {
		return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e);
	},
	rgb: function(e) {
		return /^rgb/.test(e);
	},
	hsl: function(e) {
		return /^hsl/.test(e);
	},
	col: function(e) {
		return is.hex(e) || is.rgb(e) || is.hsl(e);
	},
	key: function(e) {
		return !defaultInstanceSettings.hasOwnProperty(e) && !defaultTweenSettings.hasOwnProperty(e) && e !== "targets" && e !== "keyframes";
	}
};
function parseEasingParameters(e) {
	var n = /\(([^)]+)\)/.exec(e);
	return n ? n[1].split(",").map(function(e) {
		return parseFloat(e);
	}) : [];
}
function spring(e, n) {
	var r = parseEasingParameters(e), i = minMax(is.und(r[0]) ? 1 : r[0], .1, 100), a = minMax(is.und(r[1]) ? 100 : r[1], .1, 100), o = minMax(is.und(r[2]) ? 10 : r[2], .1, 100), s = minMax(is.und(r[3]) ? 0 : r[3], .1, 100), c = Math.sqrt(a / i), l = o / (2 * Math.sqrt(a * i)), u = l < 1 ? c * Math.sqrt(1 - l * l) : 0, d = 1, f = l < 1 ? (l * c + -s) / u : -s + c;
	function p(e) {
		var r = n ? n * e / 1e3 : e;
		return r = l < 1 ? Math.exp(-r * l * c) * (d * Math.cos(u * r) + f * Math.sin(u * r)) : (d + f * r) * Math.exp(-r * c), e === 0 || e === 1 ? e : 1 - r;
	}
	function m() {
		var n = cache.springs[e];
		if (n) return n;
		for (var r = 1 / 6, i = 0, a = 0;;) if (i += r, p(i) === 1) {
			if (a++, a >= 16) break;
		} else a = 0;
		var o = i * r * 1e3;
		return cache.springs[e] = o, o;
	}
	return n ? p : m;
}
function steps(e) {
	return e === void 0 && (e = 10), function(n) {
		return Math.ceil(minMax(n, 1e-6, 1) * e) * (1 / e);
	};
}
var bezier = (function() {
	var e = 11, n = 1 / (e - 1);
	function r(e, n) {
		return 1 - 3 * n + 3 * e;
	}
	function i(e, n) {
		return 3 * n - 6 * e;
	}
	function a(e) {
		return 3 * e;
	}
	function o(e, n, o) {
		return ((r(n, o) * e + i(n, o)) * e + a(n)) * e;
	}
	function s(e, n, o) {
		return 3 * r(n, o) * e * e + 2 * i(n, o) * e + a(n);
	}
	function c(e, n, r, i, a) {
		var s, c, l = 0;
		do
			c = n + (r - n) / 2, s = o(c, i, a) - e, s > 0 ? r = c : n = c;
		while (Math.abs(s) > 1e-7 && ++l < 10);
		return c;
	}
	function l(e, n, r, i) {
		for (var a = 0; a < 4; ++a) {
			var c = s(n, r, i);
			if (c === 0) return n;
			var l = o(n, r, i) - e;
			n -= l / c;
		}
		return n;
	}
	function u(r, i, a, u) {
		if (!(0 <= r && r <= 1 && 0 <= a && a <= 1)) return;
		var d = new Float32Array(e);
		if (r !== i || a !== u) for (var f = 0; f < e; ++f) d[f] = o(f * n, r, a);
		function p(i) {
			for (var o = 0, u = 1, f = e - 1; u !== f && d[u] <= i; ++u) o += n;
			--u;
			var p = (i - d[u]) / (d[u + 1] - d[u]), m = o + p * n, g = s(m, r, a);
			return g >= .001 ? l(i, m, r, a) : g === 0 ? m : c(i, o, o + n, r, a);
		}
		return function(e) {
			return r === i && a === u || e === 0 || e === 1 ? e : o(p(e), i, u);
		};
	}
	return u;
})(), penner = (function() {
	var e = { linear: function() {
		return function(e) {
			return e;
		};
	} }, n = {
		Sine: function() {
			return function(e) {
				return 1 - Math.cos(e * Math.PI / 2);
			};
		},
		Circ: function() {
			return function(e) {
				return 1 - Math.sqrt(1 - e * e);
			};
		},
		Back: function() {
			return function(e) {
				return e * e * (3 * e - 2);
			};
		},
		Bounce: function() {
			return function(e) {
				for (var n, r = 4; e < ((n = 2 ** --r) - 1) / 11;);
				return 1 / 4 ** (3 - r) - 7.5625 * ((n * 3 - 2) / 22 - e) ** 2;
			};
		},
		Elastic: function(e, n) {
			e === void 0 && (e = 1), n === void 0 && (n = .5);
			var r = minMax(e, 1, 10), i = minMax(n, .1, 2);
			return function(e) {
				return e === 0 || e === 1 ? e : -r * 2 ** (10 * (e - 1)) * Math.sin((e - 1 - i / (Math.PI * 2) * Math.asin(1 / r)) * (Math.PI * 2) / i);
			};
		}
	};
	return [
		"Quad",
		"Cubic",
		"Quart",
		"Quint",
		"Expo"
	].forEach(function(e, r) {
		n[e] = function() {
			return function(e) {
				return e ** +(r + 2);
			};
		};
	}), Object.keys(n).forEach(function(r) {
		var i = n[r];
		e["easeIn" + r] = i, e["easeOut" + r] = function(e, n) {
			return function(r) {
				return 1 - i(e, n)(1 - r);
			};
		}, e["easeInOut" + r] = function(e, n) {
			return function(r) {
				return r < .5 ? i(e, n)(r * 2) / 2 : 1 - i(e, n)(r * -2 + 2) / 2;
			};
		}, e["easeOutIn" + r] = function(e, n) {
			return function(r) {
				return r < .5 ? (1 - i(e, n)(1 - r * 2)) / 2 : (i(e, n)(r * 2 - 1) + 1) / 2;
			};
		};
	}), e;
})();
function parseEasings(e, n) {
	if (is.fnc(e)) return e;
	var r = e.split("(")[0], i = penner[r], a = parseEasingParameters(e);
	switch (r) {
		case "spring": return spring(e, n);
		case "cubicBezier": return applyArguments(bezier, a);
		case "steps": return applyArguments(steps, a);
		default: return applyArguments(i, a);
	}
}
function selectString(e) {
	try {
		return document.querySelectorAll(e);
	} catch {
		return;
	}
}
function filterArray(e, n) {
	for (var r = e.length, i = arguments.length >= 2 ? arguments[1] : void 0, a = [], o = 0; o < r; o++) if (o in e) {
		var s = e[o];
		n.call(i, s, o, e) && a.push(s);
	}
	return a;
}
function flattenArray(e) {
	return e.reduce(function(e, n) {
		return e.concat(is.arr(n) ? flattenArray(n) : n);
	}, []);
}
function toArray(e) {
	return is.arr(e) ? e : (is.str(e) && (e = selectString(e) || e), e instanceof NodeList || e instanceof HTMLCollection ? [].slice.call(e) : [e]);
}
function arrayContains(e, n) {
	return e.some(function(e) {
		return e === n;
	});
}
function cloneObject(e) {
	var n = {};
	for (var r in e) n[r] = e[r];
	return n;
}
function replaceObjectProps(e, n) {
	var r = cloneObject(e);
	for (var i in e) r[i] = n.hasOwnProperty(i) ? n[i] : e[i];
	return r;
}
function mergeObjects(e, n) {
	var r = cloneObject(e);
	for (var i in n) r[i] = is.und(e[i]) ? n[i] : e[i];
	return r;
}
function rgbToRgba(e) {
	var n = /rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(e);
	return n ? "rgba(" + n[1] + ",1)" : e;
}
function hexToRgba(e) {
	var n = e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function(e, n, r, i) {
		return n + n + r + r + i + i;
	}), r = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n), i = parseInt(r[1], 16), a = parseInt(r[2], 16), o = parseInt(r[3], 16);
	return "rgba(" + i + "," + a + "," + o + ",1)";
}
function hslToRgba(e) {
	var n = /hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(e) || /hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(e), r = parseInt(n[1], 10) / 360, i = parseInt(n[2], 10) / 100, a = parseInt(n[3], 10) / 100, o = n[4] || 1;
	function s(e, n, r) {
		return r < 0 && (r += 1), r > 1 && --r, r < 1 / 6 ? e + (n - e) * 6 * r : r < 1 / 2 ? n : r < 2 / 3 ? e + (n - e) * (2 / 3 - r) * 6 : e;
	}
	var c, l, u;
	if (i == 0) c = l = u = a;
	else {
		var d = a < .5 ? a * (1 + i) : a + i - a * i, f = 2 * a - d;
		c = s(f, d, r + 1 / 3), l = s(f, d, r), u = s(f, d, r - 1 / 3);
	}
	return "rgba(" + c * 255 + "," + l * 255 + "," + u * 255 + "," + o + ")";
}
function colorToRgb(e) {
	if (is.rgb(e)) return rgbToRgba(e);
	if (is.hex(e)) return hexToRgba(e);
	if (is.hsl(e)) return hslToRgba(e);
}
function getUnit(e) {
	var n = /[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(e);
	if (n) return n[1];
}
function getTransformUnit(e) {
	if (stringContains(e, "translate") || e === "perspective") return "px";
	if (stringContains(e, "rotate") || stringContains(e, "skew")) return "deg";
}
function getFunctionValue(e, n) {
	return is.fnc(e) ? e(n.target, n.id, n.total) : e;
}
function getAttribute(e, n) {
	return e.getAttribute(n);
}
function convertPxToUnit(e, n, r) {
	var i = getUnit(n);
	if (arrayContains([
		r,
		"deg",
		"rad",
		"turn"
	], i)) return n;
	var a = cache.CSS[n + r];
	if (!is.und(a)) return a;
	var o = 100, s = document.createElement(e.tagName), c = e.parentNode && e.parentNode !== document ? e.parentNode : document.body;
	c.appendChild(s), s.style.position = "absolute", s.style.width = o + r;
	var l = o / s.offsetWidth;
	c.removeChild(s);
	var u = l * parseFloat(n);
	return cache.CSS[n + r] = u, u;
}
function getCSSValue(e, n, r) {
	if (n in e.style) {
		var i = n.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(), a = e.style[n] || getComputedStyle(e).getPropertyValue(i) || "0";
		return r ? convertPxToUnit(e, a, r) : a;
	}
}
function getAnimationType(e, n) {
	if (is.dom(e) && !is.inp(e) && (!is.nil(getAttribute(e, n)) || is.svg(e) && e[n])) return "attribute";
	if (is.dom(e) && arrayContains(validTransforms, n)) return "transform";
	if (is.dom(e) && n !== "transform" && getCSSValue(e, n)) return "css";
	if (e[n] != null) return "object";
}
function getElementTransforms(e) {
	if (is.dom(e)) {
		for (var n = e.style.transform || "", r = /(\w+)\(([^)]*)\)/g, i = /* @__PURE__ */ new Map(), a; a = r.exec(n);) i.set(a[1], a[2]);
		return i;
	}
}
function getTransformValue(e, n, r, i) {
	var a = stringContains(n, "scale") ? 1 : 0 + getTransformUnit(n), o = getElementTransforms(e).get(n) || a;
	return r && (r.transforms.list.set(n, o), r.transforms.last = n), i ? convertPxToUnit(e, o, i) : o;
}
function getOriginalTargetValue(e, n, r, i) {
	switch (getAnimationType(e, n)) {
		case "transform": return getTransformValue(e, n, i, r);
		case "css": return getCSSValue(e, n, r);
		case "attribute": return getAttribute(e, n);
		default: return e[n] || 0;
	}
}
function getRelativeValue(e, n) {
	var r = /^(\*=|\+=|-=)/.exec(e);
	if (!r) return e;
	var i = getUnit(e) || 0, a = parseFloat(n), o = parseFloat(e.replace(r[0], ""));
	switch (r[0][0]) {
		case "+": return a + o + i;
		case "-": return a - o + i;
		case "*": return a * o + i;
	}
}
function validateValue(e, n) {
	if (is.col(e)) return colorToRgb(e);
	if (/\s/g.test(e)) return e;
	var r = getUnit(e), i = r ? e.substr(0, e.length - r.length) : e;
	return n ? i + n : i;
}
function getDistance(e, n) {
	return Math.sqrt((n.x - e.x) ** 2 + (n.y - e.y) ** 2);
}
function getCircleLength(e) {
	return Math.PI * 2 * getAttribute(e, "r");
}
function getRectLength(e) {
	return getAttribute(e, "width") * 2 + getAttribute(e, "height") * 2;
}
function getLineLength(e) {
	return getDistance({
		x: getAttribute(e, "x1"),
		y: getAttribute(e, "y1")
	}, {
		x: getAttribute(e, "x2"),
		y: getAttribute(e, "y2")
	});
}
function getPolylineLength(e) {
	for (var n = e.points, r = 0, i, a = 0; a < n.numberOfItems; a++) {
		var o = n.getItem(a);
		a > 0 && (r += getDistance(i, o)), i = o;
	}
	return r;
}
function getPolygonLength(e) {
	var n = e.points;
	return getPolylineLength(e) + getDistance(n.getItem(n.numberOfItems - 1), n.getItem(0));
}
function getTotalLength(e) {
	if (e.getTotalLength) return e.getTotalLength();
	switch (e.tagName.toLowerCase()) {
		case "circle": return getCircleLength(e);
		case "rect": return getRectLength(e);
		case "line": return getLineLength(e);
		case "polyline": return getPolylineLength(e);
		case "polygon": return getPolygonLength(e);
	}
}
function setDashoffset(e) {
	var n = getTotalLength(e);
	return e.setAttribute("stroke-dasharray", n), n;
}
function getParentSvgEl(e) {
	for (var n = e.parentNode; is.svg(n) && is.svg(n.parentNode);) n = n.parentNode;
	return n;
}
function getParentSvg(e, n) {
	var r = n || {}, i = r.el || getParentSvgEl(e), a = i.getBoundingClientRect(), o = getAttribute(i, "viewBox"), s = a.width, c = a.height, l = r.viewBox || (o ? o.split(" ") : [
		0,
		0,
		s,
		c
	]);
	return {
		el: i,
		viewBox: l,
		x: l[0] / 1,
		y: l[1] / 1,
		w: s,
		h: c,
		vW: l[2],
		vH: l[3]
	};
}
function getPath(e, n) {
	var r = is.str(e) ? selectString(e)[0] : e, i = n || 100;
	return function(e) {
		return {
			property: e,
			el: r,
			svg: getParentSvg(r),
			totalLength: getTotalLength(r) * (i / 100)
		};
	};
}
function getPathProgress(e, n, r) {
	function i(r) {
		r === void 0 && (r = 0);
		var i = n + r >= 1 ? n + r : 0;
		return e.el.getPointAtLength(i);
	}
	var a = getParentSvg(e.el, e.svg), o = i(), s = i(-1), c = i(1), l = r ? 1 : a.w / a.vW, u = r ? 1 : a.h / a.vH;
	switch (e.property) {
		case "x": return (o.x - a.x) * l;
		case "y": return (o.y - a.y) * u;
		case "angle": return Math.atan2(c.y - s.y, c.x - s.x) * 180 / Math.PI;
	}
}
function decomposeValue(e, n) {
	var r = /[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g, i = validateValue(is.pth(e) ? e.totalLength : e, n) + "";
	return {
		original: i,
		numbers: i.match(r) ? i.match(r).map(Number) : [0],
		strings: is.str(e) || n ? i.split(r) : []
	};
}
function parseTargets(e) {
	return filterArray(e ? flattenArray(is.arr(e) ? e.map(toArray) : toArray(e)) : [], function(e, n, r) {
		return r.indexOf(e) === n;
	});
}
function getAnimatables(e) {
	var n = parseTargets(e);
	return n.map(function(e, r) {
		return {
			target: e,
			id: r,
			total: n.length,
			transforms: { list: getElementTransforms(e) }
		};
	});
}
function normalizePropertyTweens(e, n) {
	var r = cloneObject(n);
	if (/^spring/.test(r.easing) && (r.duration = spring(r.easing)), is.arr(e)) {
		var i = e.length;
		i === 2 && !is.obj(e[0]) ? e = { value: e } : is.fnc(n.duration) || (r.duration = n.duration / i);
	}
	var a = is.arr(e) ? e : [e];
	return a.map(function(e, r) {
		var i = is.obj(e) && !is.pth(e) ? e : { value: e };
		return is.und(i.delay) && (i.delay = r ? 0 : n.delay), is.und(i.endDelay) && (i.endDelay = r === a.length - 1 ? n.endDelay : 0), i;
	}).map(function(e) {
		return mergeObjects(e, r);
	});
}
function flattenKeyframes(e) {
	for (var n = filterArray(flattenArray(e.map(function(e) {
		return Object.keys(e);
	})), function(e) {
		return is.key(e);
	}).reduce(function(e, n) {
		return e.indexOf(n) < 0 && e.push(n), e;
	}, []), r = {}, i = function(i) {
		var a = n[i];
		r[a] = e.map(function(e) {
			var n = {};
			for (var r in e) is.key(r) ? r == a && (n.value = e[r]) : n[r] = e[r];
			return n;
		});
	}, a = 0; a < n.length; a++) i(a);
	return r;
}
function getProperties(e, n) {
	var r = [], i = n.keyframes;
	for (var a in i && (n = mergeObjects(flattenKeyframes(i), n)), n) is.key(a) && r.push({
		name: a,
		tweens: normalizePropertyTweens(n[a], e)
	});
	return r;
}
function normalizeTweenValues(e, n) {
	var r = {};
	for (var i in e) {
		var a = getFunctionValue(e[i], n);
		is.arr(a) && (a = a.map(function(e) {
			return getFunctionValue(e, n);
		}), a.length === 1 && (a = a[0])), r[i] = a;
	}
	return r.duration = parseFloat(r.duration), r.delay = parseFloat(r.delay), r;
}
function normalizeTweens(e, n) {
	var r;
	return e.tweens.map(function(i) {
		var a = normalizeTweenValues(i, n), o = a.value, s = is.arr(o) ? o[1] : o, c = getUnit(s), l = getOriginalTargetValue(n.target, e.name, c, n), u = r ? r.to.original : l, d = is.arr(o) ? o[0] : u, f = getUnit(d) || getUnit(l), p = c || f;
		return is.und(s) && (s = u), a.from = decomposeValue(d, p), a.to = decomposeValue(getRelativeValue(s, d), p), a.start = r ? r.end : 0, a.end = a.start + a.delay + a.duration + a.endDelay, a.easing = parseEasings(a.easing, a.duration), a.isPath = is.pth(o), a.isPathTargetInsideSVG = a.isPath && is.svg(n.target), a.isColor = is.col(a.from.original), a.isColor && (a.round = 1), r = a, a;
	});
}
var setProgressValue = {
	css: function(e, n, r) {
		return e.style[n] = r;
	},
	attribute: function(e, n, r) {
		return e.setAttribute(n, r);
	},
	object: function(e, n, r) {
		return e[n] = r;
	},
	transform: function(e, n, r, i, a) {
		if (i.list.set(n, r), n === i.last || a) {
			var o = "";
			i.list.forEach(function(e, n) {
				o += n + "(" + e + ") ";
			}), e.style.transform = o;
		}
	}
};
function setTargetsValue(e, n) {
	getAnimatables(e).forEach(function(e) {
		for (var r in n) {
			var i = getFunctionValue(n[r], e), a = e.target, o = getUnit(i), s = getOriginalTargetValue(a, r, o, e), c = getRelativeValue(validateValue(i, o || getUnit(s)), s);
			setProgressValue[getAnimationType(a, r)](a, r, c, e.transforms, !0);
		}
	});
}
function createAnimation(e, n) {
	var r = getAnimationType(e.target, n.name);
	if (r) {
		var i = normalizeTweens(n, e), a = i[i.length - 1];
		return {
			type: r,
			property: n.name,
			animatable: e,
			tweens: i,
			duration: a.end,
			delay: i[0].delay,
			endDelay: a.endDelay
		};
	}
}
function getAnimations(e, n) {
	return filterArray(flattenArray(e.map(function(e) {
		return n.map(function(n) {
			return createAnimation(e, n);
		});
	})), function(e) {
		return !is.und(e);
	});
}
function getInstanceTimings(e, n) {
	var r = e.length, i = function(e) {
		return e.timelineOffset ? e.timelineOffset : 0;
	}, a = {};
	return a.duration = r ? Math.max.apply(Math, e.map(function(e) {
		return i(e) + e.duration;
	})) : n.duration, a.delay = r ? Math.min.apply(Math, e.map(function(e) {
		return i(e) + e.delay;
	})) : n.delay, a.endDelay = r ? a.duration - Math.max.apply(Math, e.map(function(e) {
		return i(e) + e.duration - e.endDelay;
	})) : n.endDelay, a;
}
var instanceID = 0;
function createNewInstance(e) {
	var n = replaceObjectProps(defaultInstanceSettings, e), r = replaceObjectProps(defaultTweenSettings, e), i = getProperties(r, e), a = getAnimatables(e.targets), o = getAnimations(a, i), s = getInstanceTimings(o, r), c = instanceID;
	return instanceID++, mergeObjects(n, {
		id: c,
		children: [],
		animatables: a,
		animations: o,
		duration: s.duration,
		delay: s.delay,
		endDelay: s.endDelay
	});
}
var activeInstances = [], engine = (function() {
	var e;
	function n() {
		!e && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0 && (e = requestAnimationFrame(r));
	}
	function r(n) {
		for (var i = activeInstances.length, a = 0; a < i;) {
			var o = activeInstances[a];
			o.paused ? (activeInstances.splice(a, 1), i--) : (o.tick(n), a++);
		}
		e = a > 0 ? requestAnimationFrame(r) : void 0;
	}
	function i() {
		anime.suspendWhenDocumentHidden && (isDocumentHidden() ? e = cancelAnimationFrame(e) : (activeInstances.forEach(function(e) {
			return e._onDocumentVisibility();
		}), engine()));
	}
	return typeof document < "u" && document.addEventListener("visibilitychange", i), n;
})();
function isDocumentHidden() {
	return !!document && document.hidden;
}
function anime(e) {
	e === void 0 && (e = {});
	var n = 0, r = 0, i = 0, a, o = 0, s = null;
	function c(e) {
		var n = window.Promise && new Promise(function(e) {
			return s = e;
		});
		return e.finished = n, n;
	}
	var l = createNewInstance(e);
	c(l);
	function u() {
		var e = l.direction;
		e !== "alternate" && (l.direction = e === "normal" ? "reverse" : "normal"), l.reversed = !l.reversed, a.forEach(function(e) {
			return e.reversed = l.reversed;
		});
	}
	function d(e) {
		return l.reversed ? l.duration - e : e;
	}
	function f() {
		n = 0, r = d(l.currentTime) * (1 / anime.speed);
	}
	function p(e, n) {
		n && n.seek(e - n.timelineOffset);
	}
	function m(e) {
		if (l.reversePlayback) for (var n = o; n--;) p(e, a[n]);
		else for (var r = 0; r < o; r++) p(e, a[r]);
	}
	function g(e) {
		for (var n = 0, r = l.animations, i = r.length; n < i;) {
			var a = r[n], o = a.animatable, s = a.tweens, c = s.length - 1, u = s[c];
			c && (u = filterArray(s, function(n) {
				return e < n.end;
			})[0] || u);
			for (var d = minMax(e - u.start - u.delay, 0, u.duration) / u.duration, f = isNaN(d) ? 1 : u.easing(d), p = u.to.strings, m = u.round, g = [], _ = u.to.numbers.length, v = void 0, y = 0; y < _; y++) {
				var b = void 0, x = u.to.numbers[y], S = u.from.numbers[y] || 0;
				b = u.isPath ? getPathProgress(u.value, f * x, u.isPathTargetInsideSVG) : S + f * (x - S), m && (u.isColor && y > 2 || (b = Math.round(b * m) / m)), g.push(b);
			}
			var C = p.length;
			if (!C) v = g[0];
			else {
				v = p[0];
				for (var w = 0; w < C; w++) {
					p[w];
					var T = p[w + 1], E = g[w];
					isNaN(E) || (T ? v += E + T : v += E + " ");
				}
			}
			setProgressValue[a.type](o.target, a.property, v, o.transforms), a.currentValue = v, n++;
		}
	}
	function _(e) {
		l[e] && !l.passThrough && l[e](l);
	}
	function v() {
		l.remaining && l.remaining !== !0 && l.remaining--;
	}
	function y(e) {
		var o = l.duration, f = l.delay, p = o - l.endDelay, y = d(e);
		l.progress = minMax(y / o * 100, 0, 100), l.reversePlayback = y < l.currentTime, a && m(y), !l.began && l.currentTime > 0 && (l.began = !0, _("begin")), !l.loopBegan && l.currentTime > 0 && (l.loopBegan = !0, _("loopBegin")), y <= f && l.currentTime !== 0 && g(0), (y >= p && l.currentTime !== o || !o) && g(o), y > f && y < p ? (l.changeBegan || (l.changeBegan = !0, l.changeCompleted = !1, _("changeBegin")), _("change"), g(y)) : l.changeBegan && (l.changeCompleted = !0, l.changeBegan = !1, _("changeComplete")), l.currentTime = minMax(y, 0, o), l.began && _("update"), e >= o && (r = 0, v(), l.remaining ? (n = i, _("loopComplete"), l.loopBegan = !1, l.direction === "alternate" && u()) : (l.paused = !0, l.completed || (l.completed = !0, _("loopComplete"), _("complete"), !l.passThrough && "Promise" in window && (s(), c(l)))));
	}
	return l.reset = function() {
		var e = l.direction;
		l.passThrough = !1, l.currentTime = 0, l.progress = 0, l.paused = !0, l.began = !1, l.loopBegan = !1, l.changeBegan = !1, l.completed = !1, l.changeCompleted = !1, l.reversePlayback = !1, l.reversed = e === "reverse", l.remaining = l.loop, a = l.children, o = a.length;
		for (var n = o; n--;) l.children[n].reset();
		(l.reversed && l.loop !== !0 || e === "alternate" && l.loop === 1) && l.remaining++, g(l.reversed ? l.duration : 0);
	}, l._onDocumentVisibility = f, l.set = function(e, n) {
		return setTargetsValue(e, n), l;
	}, l.tick = function(e) {
		i = e, n ||= i, y((i + (r - n)) * anime.speed);
	}, l.seek = function(e) {
		y(d(e));
	}, l.pause = function() {
		l.paused = !0, f();
	}, l.play = function() {
		l.paused && (l.completed && l.reset(), l.paused = !1, activeInstances.push(l), f(), engine());
	}, l.reverse = function() {
		u(), l.completed = !l.reversed, f();
	}, l.restart = function() {
		l.reset(), l.play();
	}, l.remove = function(e) {
		removeTargetsFromInstance(parseTargets(e), l);
	}, l.reset(), l.autoplay && l.play(), l;
}
function removeTargetsFromAnimations(e, n) {
	for (var r = n.length; r--;) arrayContains(e, n[r].animatable.target) && n.splice(r, 1);
}
function removeTargetsFromInstance(e, n) {
	var r = n.animations, i = n.children;
	removeTargetsFromAnimations(e, r);
	for (var a = i.length; a--;) {
		var o = i[a], s = o.animations;
		removeTargetsFromAnimations(e, s), !s.length && !o.children.length && i.splice(a, 1);
	}
	!r.length && !i.length && n.pause();
}
function removeTargetsFromActiveInstances(e) {
	for (var n = parseTargets(e), r = activeInstances.length; r--;) {
		var i = activeInstances[r];
		removeTargetsFromInstance(n, i);
	}
}
function stagger(e, n) {
	n === void 0 && (n = {});
	var r = n.direction || "normal", i = n.easing ? parseEasings(n.easing) : null, a = n.grid, o = n.axis, s = n.from || 0, c = s === "first", l = s === "center", u = s === "last", d = is.arr(e), f = d ? parseFloat(e[0]) : parseFloat(e), p = d ? parseFloat(e[1]) : 0, m = getUnit(d ? e[1] : e) || 0, g = n.start || 0 + (d ? f : 0), _ = [], v = 0;
	return function(e, n, y) {
		if (c && (s = 0), l && (s = (y - 1) / 2), u && (s = y - 1), !_.length) {
			for (var b = 0; b < y; b++) {
				if (!a) _.push(Math.abs(s - b));
				else {
					var x = l ? (a[0] - 1) / 2 : s % a[0], S = l ? (a[1] - 1) / 2 : Math.floor(s / a[0]), C = b % a[0], w = Math.floor(b / a[0]), T = x - C, E = S - w, D = Math.sqrt(T * T + E * E);
					o === "x" && (D = -T), o === "y" && (D = -E), _.push(D);
				}
				v = Math.max.apply(Math, _);
			}
			i && (_ = _.map(function(e) {
				return i(e / v) * v;
			})), r === "reverse" && (_ = _.map(function(e) {
				return o ? e < 0 ? e * -1 : -e : Math.abs(v - e);
			}));
		}
		return g + (d ? (p - f) / v : f) * (Math.round(_[n] * 100) / 100) + m;
	};
}
function timeline(e) {
	e === void 0 && (e = {});
	var n = anime(e);
	return n.duration = 0, n.add = function(r, i) {
		var a = activeInstances.indexOf(n), o = n.children;
		a > -1 && activeInstances.splice(a, 1);
		function s(e) {
			e.passThrough = !0;
		}
		for (var c = 0; c < o.length; c++) s(o[c]);
		var l = mergeObjects(r, replaceObjectProps(defaultTweenSettings, e));
		l.targets = l.targets || e.targets;
		var u = n.duration;
		l.autoplay = !1, l.direction = n.direction, l.timelineOffset = is.und(i) ? u : getRelativeValue(i, u), s(n), n.seek(l.timelineOffset);
		var d = anime(l);
		s(d), o.push(d);
		var f = getInstanceTimings(o, e);
		return n.delay = f.delay, n.endDelay = f.endDelay, n.duration = f.duration, n.seek(0), n.reset(), n.autoplay && n.play(), n;
	}, n;
}
anime.version = "3.2.1", anime.speed = 1, anime.suspendWhenDocumentHidden = !0, anime.running = activeInstances, anime.remove = removeTargetsFromActiveInstances, anime.get = getOriginalTargetValue, anime.set = setTargetsValue, anime.convertPx = convertPxToUnit, anime.path = getPath, anime.setDashoffset = setDashoffset, anime.stagger = stagger, anime.timeline = timeline, anime.easing = parseEasings, anime.penner = penner, anime.random = function(e, n) {
	return Math.floor(Math.random() * (n - e + 1)) + e;
};
var anime_es_default = anime, SearchItem_default = (e, n, r, i) => {
	let { searchProvider: a, props: o, slots: s } = i, c = ref(null), l = {};
	if (e.customRender) l = e.customRender({
		item: e,
		queryForm: n,
		context: i
	});
	else switch (e.type) {
		case "number":
			l = Number_default$1(e, n, i);
			break;
		case "select":
			l = Select_default$1(e, n, i);
			break;
		case "textarea":
			l = Textarea_default(e, n, i);
			break;
		case "date":
			l = Date_default$1(e, n, i);
			break;
		case "cascade":
			l = Cascader_default$1(e, n, i);
			break;
		case "switch":
			l = Switch_default$1(e, n, i);
			break;
		default:
			l = Input_default$1(e, n, i);
			break;
	}
	s[e.key] && (l.Component = s[e.key]({
		item: e,
		queryForm: n,
		context: i
	}));
	let { conditions: u = [], Component: d, displayValue: f = "", onComponentOpen: p = null } = l, m = (r) => {
		n[e.key].condition = u[r].value;
	}, g = () => {
		r.showPanel &&= !1;
	}, _ = () => {
		r.showPanel = !0, nextTick(() => {
			p && p();
		});
	}, v = { onEnter: (e, n) => {
		anime_es_default({
			targets: ".newbie-search-input-container",
			padding: "11px",
			translateX: "0",
			translateY: "0",
			duration: 100,
			easing: "linear"
		}), anime_es_default({
			targets: ".newbie-search-condition",
			top: "-44px",
			opacity: 1,
			duration: 100,
			easing: "linear"
		}), n();
	} }, b = computed(() => find(u, { value: n[e.key].condition })?.label || useT("search.equal")), x = computed(() => find(u, { value: n[e.key].condition })?.label || useT("search.equal"));
	return createVNode(OnClickOutside, { onTrigger: g }, { default: () => [createVNode("div", { class: `newbie-search-item ${a.maskClass || ""} ${r.hidden ? "hidden" : ""}` }, [createVNode("div", {
		class: "newbie-search-mask",
		onClick: _
	}, [createVNode("div", { class: "newbie-search-mask-title" }, [e.title]), createVNode("div", { class: "newbie-search-mask-content" }, [n[e.key].condition === "equal" ? null : createVNode("div", { class: "newbie-search-mask-condition" }, [x.value]), createVNode("div", { class: "newbie-search-mask-value" }, [f?.value])])]), createVNode(Transition, {
		css: !1,
		onEnter: v.onEnter
	}, { default: () => [r.showPanel ? createVNode("div", {
		class: "newbie-search-popup-panel",
		ref: c
	}, [createVNode("div", { class: "newbie-search-condition" }, [createVNode("span", { class: "newbie-search-condition-title" }, [
		useT("common.search"),
		" ",
		createVNode(TypographyText, { code: !0 }, { default: () => e.title })
	]), o.disableConditions || e.disableConditions ? null : createVNode(Dropdown, {
		trigger: ["click"],
		getPopupContainer: () => c.value
	}, {
		default: () => createVNode("a", {
			class: "newbie-search-condition-dropdown-link",
			onClick: withModifiers(() => {}, ["prevent"])
		}, [
			b.value,
			createTextVNode(" "),
			createVNode(DownOutlined, null, null)
		]),
		overlay: () => createVNode(Menu, null, { default: () => u.map((e, n) => createVNode(MenuItem, { key: e.value }, { default: () => createVNode("a", { onClick: () => m(n) }, [e.label]) })) })
	})]), createVNode("div", { class: "newbie-search-input-container" }, [isFunction(d) ? d() : d])]) : null] })])] });
};
function _isSlot$6(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
}
var NewbieSearch_default = /* @__PURE__ */ defineComponent({
	name: "NewbieSearch",
	props: {
		filterableColumns: {
			type: [Array, Function],
			default: () => []
		},
		sortableColumns: {
			type: [Array, Function],
			default: () => []
		},
		disableConditions: {
			type: Boolean,
			default: !1
		},
		autoQuery: {
			type: Boolean,
			default: !1
		},
		gutter: {
			type: [String, Number],
			default: 16
		},
		persistence: {
			type: [Boolean, String],
			default: !1
		}
	},
	emits: ["search"],
	setup(e, { expose: n, emit: r, slots: i }) {
		let o = inject(NEWBIE_SEARCH, () => {}), s = reactive({
			queryForm: {},
			sortForm: {
				selectedKeys: [],
				targetKeys: []
			},
			columnKey: {},
			searchKey: {},
			searchLabels: [],
			fieldColumns: [],
			expandColumns: [],
			sortColumns: [],
			openSortable: !1,
			isFormExpanded: !1,
			availableSearchItems: 0
		}), c = ref(), { width: l } = useWindowSize(), u = ["number", "date"], d = ["select", "cascade"], f = {}, p = (n) => e.persistence ? (n ||= "", isBoolean(e.persistence) ? `newbieSearch_${n}` + useSm3(location.href) : `newbieSearch_${n}` + useSm3(location.pathname + "_" + e.persistence)) : null, m = () => {
			let n = {}, r = [], i = [], a = [], o = [], c = e.persistence ? useCache(p()).get({}) : {}, l = e.persistence ? useCache(p("sort")).get({}) : {};
			e.filterableColumns.forEach((e) => {
				let a = cloneDeep(e);
				isUndefined(a.sortOrder) && (a.sortOrder = 0), f[a.key] || (f[a.key] = reactive({ showPanel: !1 })), a.type = a.type || "input";
				let o = "", s = "equal";
				if (a.expandable ? o = [] : u.includes(a.type) ? o = [null, null] : d.includes(a.type) && (o = []), isUndefined(c[a.key])) isUndefined(a.defaultValue) || (o = isFunction(a.defaultValue) ? a.defaultValue() : a.defaultValue);
				else {
					let e = c[a.key].value;
					o = (u.includes(a.type) || d.includes(a.type)) && !isArray(e) ? [e] : e;
				}
				if (isUndefined(c[a.key]) ? a.conditions && a.conditions.length === 1 ? s = a.conditions[0] : a.defaultCondition && (s = isFunction(a.defaultCondition) ? a.defaultCondition() : a.defaultCondition) : s = c[a.key].condition, a.expandable) {
					if (!a.options) {
						console.error("expandable 为 true 时,必须提供 options 属性");
						return;
					}
					a.type = "select", r.push(a);
				} else isUndefined(f[a.key].hidden) && (f[a.key].hidden = !1), i.push(a);
				a.type === "date" && (isArray(o) ? o = o.map((e) => isString(e) ? dayjs(new Date(e)) : e) : isString(o) && (o = dayjs(new Date(o)))), a.type === "switch" && (o = isBoolean(o) ? o ? "checked" : "unchecked" : void 0), n[a.key] = {
					value: o,
					type: a.type,
					condition: s
				};
			}), e.sortableColumns.forEach((e) => {
				let n = cloneDeep(e);
				isUndefined(l[e.key]) || (o.push(e.key), n.direction = l[e.key]), (e.direction === "asc" || e.direction === "desc") && o.push(e.key), a.push(n);
			}), s.queryForm = n, s.sortColumns = orderBy(a, ["sortOrder"], ["desc"]), s.fieldColumns = orderBy(i, ["sortOrder"], ["desc"]), s.expandColumns = orderBy(r, ["sortOrder"], ["desc"]), s.sortForm.targetKeys = o;
		};
		watch(() => [e.filterableColumns, e.sortableColumns], () => {
			m();
		}, { immediate: !0 });
		let _ = computed(() => s.fieldColumns.length > s.availableSearchItems), v = () => {
			s.openSortable = !1, r("search", {
				newbieQuery: w(),
				newbieSort: C()
			});
		}, b = () => {
			useCache(p()).remove(), useCache(p("sort")).remove(), m();
		}, x = () => {
			S({ show: !s.isFormExpanded }), s.isFormExpanded = !s.isFormExpanded;
		}, S = ({ show: e, stand: n }) => {
			_.value && !n && s.fieldColumns.forEach((n, r) => {
				f[n.key].hidden = e ? !1 : r >= s.availableSearchItems;
			});
		};
		onMounted(() => {
			e.persistence && r("search", {
				persistence: !0,
				newbieQuery: w(),
				newbieSort: C()
			}), watch(() => l.value, () => {
				let n = Math.floor(c.value.scrollWidth / (200 + e.gutter));
				s.availableSearchItems !== n && (s.availableSearchItems = n, S({}));
			}, { immediate: !0 });
		});
		let C = () => {
			let n = {};
			return s.sortForm.targetKeys.forEach((e) => {
				let r = find(s.sortColumns, { key: e });
				n[e] = r.direction, s.searchLabels.push(createVNode(Tag, { color: "green" }, { default: () => [createVNode("span", { style: { marginRight: "2px" } }, [r.title]), r.direction === "asc" ? createVNode(RiseOutlined, null, null) : createVNode(FallOutlined, null, null)] }));
			}), e.persistence && useCache(p("sort")).set(n), n;
		}, w = () => {
			let n = {}, r = {};
			return s.searchLabels = [], concat(s.fieldColumns, s.expandColumns).forEach((i) => {
				let { value: a, searchLabel: c } = i.collectItem ? i.collectItem({
					queryForm: s.queryForm,
					item: i
				}) : {}, { condition: l, type: u } = s.queryForm[i.key];
				if (Array.isArray(a) && a.length > 0 || !Array.isArray(a) && a != null && a !== "" || l === "null" || l === "notNull") {
					e.persistence && (r[i.key] = {
						condition: l,
						type: u,
						value: a
					});
					let d = o?.valueFormatter?.[i.type];
					d && isFunction(d) && (a = isArray(a) ? a.map((e) => d(e)) : d(a)), n[i.key] = {
						condition: l,
						type: u,
						value: a
					}, s.searchLabels.push(c ? createVNode(Tag, { color: "blue" }, _isSlot$6(c) ? c : { default: () => [c] }) : null);
				}
			}), e.persistence && useCache(p()).set(r), n;
		};
		n({
			getQueryForm: w,
			setQueryForm: (e) => {
				Object.keys(e).forEach((n) => {
					s.queryForm[n] ? s.queryForm[n].value = e[n] : s.queryForm[n] = { value: e[n] };
				});
			},
			getSortForm: C,
			getSearch: () => {
				s.searchLabels = [];
				let e = {}, n = w(), r = C();
				return Object.keys(n).length && (e.newbieQuery = n), Object.keys(r).length && (e.newbieSort = r), e;
			}
		});
		let T = () => s.fieldColumns.map((n) => SearchItem_default(n, s.queryForm, f[n.key], {
			props: e,
			slots: i,
			searchProvider: o
		})), E = () => s.expandColumns.map((e) => Expand_default(e, s.queryForm)), D = () => s.sortColumns.length ? createVNode(Modal, {
			title: useT("search.sort-setting"),
			open: s.openSortable,
			"onUpdate:open": (e) => s.openSortable = e,
			width: "800px",
			okText: useT("common.search"),
			cancelText: useT("common.cancel"),
			onOk: () => v()
		}, { default: () => Sortable_default(s.sortColumns, s.sortForm) }) : null;
		return () => createVNode("div", { class: "newbie-search" }, [
			createVNode("div", { class: "newbie-search-query" }, [createVNode("div", { class: "newbie-search-form" }, [createVNode("div", {
				class: "newbie-search-form-wrapper",
				ref: c
			}, [createVNode(Space, {
				size: [e.gutter, 10],
				wrap: !0,
				style: { marginBottom: 0 }
			}, { default: () => T() })])]), createVNode(Space, { class: "newbie-search-operation" }, { default: () => [
				_.value ? createVNode(Tooltip, { title: useT("search.toggle-more") }, { default: () => createVNode(Button, {
					type: "link",
					icon: s.isFormExpanded ? createVNode(ShrinkOutlined, null, null) : createVNode(ArrowsAltOutlined, null, null),
					onClick: x
				}, { default: () => s.isFormExpanded ? useT("search.collapse") : useT("common.more") }) }) : null,
				createVNode(Tooltip, { title: useT("search.clear-all-search-items") }, { default: () => createVNode(Button, {
					type: "dashed",
					icon: createVNode(ClearOutlined, null, null),
					onClick: b
				}, { default: () => e.sortableColumns.length ? "" : useT("common.clear") }) }),
				e.sortableColumns.length ? createVNode(Tooltip, { title: useT("search.sort-setting") }, { default: () => createVNode(Button, {
					type: s.sortForm.targetKeys.length ? "primary" : "default",
					icon: createVNode(OrderedListOutlined, null, null),
					onClick: () => s.openSortable = !0
				}, null) }) : null,
				createVNode(Button, {
					type: "primary",
					icon: createVNode(SearchOutlined, null, null),
					onClick: v
				}, { default: () => useT("common.search") })
			] })]),
			s.expandColumns?.length ? createVNode("div", { class: "newbie-search-expand" }, [E()]) : null,
			s.searchLabels?.length ? createVNode("div", { class: "newbie-search-label" }, [createVNode("span", { class: "newbie-search-label-title" }, [useT("search.search-items"), createTextVNode(":")]), createVNode(Space, {
				class: "newbie-search-label-content",
				wrap: !0,
				style: { marginBottom: 0 }
			}, { default: () => s.searchLabels })]) : null,
			D()
		]);
	}
});
function _isSlot$5(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
}
var NewbieTable_default = /* @__PURE__ */ defineComponent({
	name: "NewbieTable",
	props: {
		title: {
			type: String,
			default: ""
		},
		filterable: {
			type: Boolean,
			default: !0
		},
		tableProps: {
			type: Object,
			default: () => ({})
		},
		tableEvents: {
			type: Object,
			default: () => ({})
		},
		tableSlots: {
			type: Object,
			default: () => ({})
		},
		searchSlots: {
			type: Object,
			default: () => ({})
		},
		pagination: {
			type: [Boolean, Object],
			default: !0
		},
		pageEvents: {
			type: Object,
			default: () => ({})
		},
		autoQuery: {
			type: Boolean,
			default: !1
		},
		url: {
			type: String,
			default: ""
		},
		editable: {
			type: Boolean,
			default: !1
		},
		submitUrl: {
			type: String,
			default: ""
		},
		beforeCellSubmit: {
			type: Function,
			default: null
		},
		method: {
			type: String,
			default: "get"
		},
		extraData: {
			type: Object,
			default: () => ({})
		},
		afterFetched: {
			type: Function,
			default: null
		},
		columns: {
			type: [Array, Function],
			default: () => []
		},
		rowSelection: {
			type: [Boolean, Object],
			default: () => null
		},
		rowKey: {
			type: [String, Function],
			default: "id"
		},
		dataSource: {
			type: Array,
			default: () => []
		},
		formData: {
			type: Array,
			default: () => []
		},
		expandRender: {
			type: [String, Function],
			default: null
		},
		expandedRowKeys: {
			type: Array,
			default: () => null
		},
		showRefresh: {
			type: Boolean,
			default: !0
		},
		persistence: {
			type: [Boolean, String],
			default: !1
		},
		cardWrapper: {
			type: Boolean,
			default: !0
		}
	},
	emits: [
		"fetch",
		"rowClick",
		"cellSubmit"
	],
	setup(e, { emit: n, slots: r, expose: i }) {
		let o = ref(), s = ref(), c = inject(NEWBIE_TABLE, () => {}), { copy: l } = useClipboard({ legacy: !0 }), u = (n) => e.persistence ? (n ||= "", isBoolean(e.persistence) ? `newbieTable_${n}` + useSm3(location.href) : `newbieTable_${n}` + useSm3(location.pathname + "_" + e.persistence)) : null, d = e.persistence ? useCache(u()).get({}) : {}, f = reactive({
			customColumns: [],
			tableColumns: [],
			editingData: {},
			editingSwitchData: {},
			filterableColumns: [],
			sortableColumns: [],
			temporary: {},
			tableLoading: { loading: !1 },
			customColumnVisible: !1,
			columnKeyModal: [],
			pagination: {
				totalSize: 0,
				currentPage: d.currentPage || 1,
				pageSize: d.pageSize || e.pagination?.pageSize || 10
			},
			id: "",
			tableSelection: [],
			tableKeySelection: [],
			items: [],
			columnKey: {},
			fetchQueue: [],
			searchFormData: {}
		}), p = () => {
			if (!e.persistence) return;
			let n = { ...f.pagination };
			useCache(u()).set(n);
		}, m = () => {
			f.columnKeyModal = [], Object.keys(f.columnKey).forEach((e) => {
				f.columnKey[e] && f.columnKeyModal.push(e);
			}), f.customColumnVisible = !0;
		}, _ = () => {
			f.columnKeyModal = [];
		}, b = () => {
			_(), Object.keys(f.columnKey).forEach((e) => {
				f.columnKeyModal.push(e);
			});
		}, x = (e, n) => {
			f.tableKeySelection = [].concat(e), f.tableSelection = [].concat(n);
		}, S = (e, n) => {
			n.width = e;
		}, T = () => {
			Object.keys(f.columnKey).forEach((e) => {
				f.columnKey[e] = f.columnKeyModal.indexOf(e) > -1;
			}), f.customColumnVisible = !1;
		}, E = () => {
			let n = {
				...f.searchFormData,
				...e.extraData
			};
			return e.pagination && (f.pagination.pageSize && (n[c.pageSizeKey] = f.pagination.pageSize), n[c.pageKey] = f.pagination.currentPage), n;
		}, D = (e) => {
			o.value && o.value?.setQueryForm(e);
		}, k = async () => {
			let n = {}, r = E(), i = (/* @__PURE__ */ new Date()).getTime();
			f.fetchQueue.push(i);
			let a = e.method;
			a === "get" ? n = { params: r } : a === "post" && (n = { ...r });
			let o = await useFetch(f.tableLoading)[a](e.url, n);
			useProcessStatusSuccess(o, () => {
				if (!f.fetchQueue.length) return;
				f.fetchQueue[f.fetchQueue.length - 1] === i && (f.fetchQueue = []), f.tableKeySelection = [], f.tableSelection = [];
				let n = (e.afterFetched || c.afterFetched)(o);
				e.pagination && (f.pagination.totalSize = n.totalSize), f.items = n.items;
			});
		}, A = async (r) => {
			r === !0 && (f.pagination.currentPage = 1), e.url ? await k() : n("fetch"), p();
		}, M = (e) => {
			f.searchFormData = e, A(!e.persistence);
		}, N = (e) => e.key ? e.key : isArray(e.dataIndex) ? e.dataIndex.join(".") : e.dataIndex, F = (e) => {
			let n = [];
			return e && e.length && e.forEach((e) => {
				let r = cloneDeep(e), i = N(r);
				if (i && isUndefined(f.columnKey[i]) && (f.columnKey[i] = !0), !r.children) (i && f.columnKey[i] || !i) && n.push({
					...r,
					resizable: !0
				});
				else {
					let e = F([].concat(r.children));
					e.length && (r.children = e, (i && f.columnKey[i] || !i) && n.push(r));
				}
			}), n;
		}, I = (e) => {
			let n = [];
			return e && e.length && e.forEach((e) => {
				let r = cloneDeep(e);
				if (r.checkKey = N(r), !r.children) n.push(r);
				else {
					let e = I(r.children);
					delete r.children, n.push(r), n = n.concat(e);
				}
			}), n;
		}, L = computed(() => {
			let n;
			return n = isFunction(e.columns) ? e.columns() : e.columns.length ? e.columns : e.tableProps.columns, n.map((e) => (e.minWidth && (e.RC_TABLE_INTERNAL_COL_DEFINE = { style: { "min-width": `${e.minWidth}px` } }, e.width = e.minWidth), e.key = N(e), e));
		}), R = () => {
			let e = L.value.filter((e) => !e.isOnlyForQuery);
			f.customColumns = I([].concat(e)), f.tableColumns = F([].concat(e));
		}, z = () => {
			f.filterableColumns = L.value.filter((e) => e.filterable || e.isOnlyForQuery).map((e) => ({
				title: e.title,
				key: N(e),
				options: e.options,
				...e.filterable
			})), f.sortableColumns = L.value.filter((e) => e.sortable).map((e) => {
				let n = {
					title: e.title,
					key: N(e)
				};
				return e.sortable === "asc" || e.sortable === "ASC" ? n.direction = "asc" : e.sortable === "desc" || e.sortable === "DESC" ? n.direction = "desc" : n = {
					...n,
					...e.sortable
				}, n;
			});
		};
		watch(() => [L, f.columnKey], (e, n) => {
			R(), (!n || !isEqual(e[0].value.map((e) => N(e)).toSorted(), n[0].value.map((e) => N(e)).toSorted())) && z();
		}, {
			immediate: !0,
			deep: !0
		}), watch(() => f.pagination, (e) => {
			e && s.value?.classList.add("pagination-adapt");
		}, { deep: !0 }), watch(() => e.formData, (e, n) => {
			isEqual(e, n) || (f.items = e);
		});
		let B = () => {
			e.url ? (f.searchFormData = o.value?.getSearch(), nextTick(() => k())) : (e.formData.length && (f.items = e.formData), e.dataSource.length && (f.items = e.dataSource), n("fetch"));
		};
		onMounted(() => {
			e.persistence || B();
		}), i({
			getData: () => [].concat(f.items),
			setData: (e) => {
				f.items = e;
			},
			setPagination: (e, n, r) => {
				isUndefined(e) || (f.pagination.totalSize = e), isUndefined(n) || (f.pagination.currentPage = n), isUndefined(r) || (f.pagination.pageSize = r);
			},
			getPagination: () => f.pagination,
			getSelection: () => [].concat(f.tableSelection),
			getQueryData: E,
			setQueryData: D,
			doFetch: A,
			setTableLoading: (e) => f.tableLoading.loading = e
		});
		let V = () => r.title ? createVNode("div", { class: "newbie-table-title-wrapper" }, [r.title()]) : e.title ? createVNode("div", { class: "newbie-table-title-wrapper" }, [e.title]) : null, H = () => r.prepend ? createVNode("div", { class: "newbie-table-prepend-wrapper" }, [r.prepend()]) : null, U = () => e.filterable ? [createVNode(NewbieSearch_default, {
			ref: o,
			persistence: e.persistence,
			filterableColumns: f.filterableColumns,
			sortableColumns: f.sortableColumns,
			onSearch: M
		}, { ...e.searchSlots }), createVNode(Divider, null, null)] : null, W = () => createVNode("div", { class: "newbie-table-functional-wrapper" }, [createVNode("div", { class: "newbie-table-functional" }, [r.functional ? r.functional() : null]), createVNode("div", { class: "newbie-table-functional-default" }, [e.filterable ? createVNode(Button, {
			type: "link",
			style: { marginRight: "5px" },
			onClick: m
		}, { default: () => useT("table.custom") }) : null, e.showRefresh ? createVNode(Button, {
			class: "newbie-table-refresh",
			icon: createVNode(SyncOutlined, null, null),
			onClick: () => A(!1)
		}, null) : null])]), G = () => ({
			bordered: !0,
			size: "middle",
			scroll: {
				y: 570,
				x: 1e3,
				scrollToFirstRowOnChange: !0
			},
			rowClassName: (e, n) => n % 2 == 1 ? "newbie-table-striped" : null,
			expandedRowRender: e.expandRender,
			expandedRowKeys: e.expandedRowKeys,
			rowKey: e.rowKey,
			customRow: (r, i) => ({ onClick: (a) => {
				f.editingData[r[e.rowKey]] || n("rowClick", {
					record: r,
					index: i,
					event: a
				});
			} }),
			...e.tableProps
		}), K = () => {
			let n = e.pagination ? isObject(e.pagination) ? cloneDeep(e.pagination) : {} : !1;
			return isObject(n) && (n = {
				size: "small",
				showQuickJumper: !0,
				showSizeChanger: !0,
				showTotal: (e) => useT("table.total", { total: e }),
				pageSizeOptions: [
					"10",
					"30",
					"50",
					"100",
					"300",
					"500"
				],
				total: f.pagination.totalSize,
				pageSize: f.pagination.pageSize,
				current: f.pagination.currentPage,
				"onUpdate:current": (e) => {
					f.pagination.currentPage = e;
				},
				"onUpdate:pageSize": (e) => {
					f.pagination.pageSize = e;
				},
				onChange: () => {
					A(!1);
				},
				showSizeChange: () => {
					A(!0);
				},
				...n
			}), n;
		}, q = () => {
			let n = e.rowSelection ? isObject(e.rowSelection) ? cloneDeep(e.rowSelection) : {} : null;
			return isObject(n) && (n = {
				selectedRowKeys: f.tableKeySelection,
				preserveSelectedRowKeys: !0,
				columnWidth: 40,
				fixed: !0,
				onChange: x,
				...n
			}), n;
		}, J = (n, r, i, a) => {
			f.editingData[r[e.rowKey]] ? f.editingData[r[e.rowKey]][i] = a : f.editingData[r[e.rowKey]] = { [i]: a };
		}, Y = (n, r) => {
			f.editingData[n[e.rowKey]] && delete f.editingData[n[e.rowKey]][r];
		}, X = async (r, i, a) => {
			if (!e.submitUrl && !e.beforeCellSubmit) return;
			let o = null;
			o = r.type === "switch" ? f.editingSwitchData[i[e.rowKey]][a] : f.editingData[i[e.rowKey]][a];
			let s = {
				[e.rowKey]: i[e.rowKey],
				[a]: o
			};
			Y(i, a), r.beforeCellSubmit ? (f.tableLoading.loading = !0, await r.beforeCellSubmit(s), f.tableLoading.loading = !1) : e.beforeCellSubmit ? (f.tableLoading.loading = !0, await e.beforeCellSubmit(s), f.tableLoading.loading = !1) : useProcessStatusSuccess(await useFetch(f.tableLoading).post(e.submitUrl, s), () => {
				message.success(i18n_default.global.t("common.save-success")), n("cellSubmit", {
					record: i,
					key: a,
					value: o
				});
			});
		}, Z = (n) => {
			let { column: r, text: i, record: a } = n, o = r.editable;
			r.editable === !0 && (o = { type: "input" });
			let s = o.key || r.key, c = isUndefined(o.defaultValue) ? i : o.defaultValue, l = f.editingData[a[e.rowKey]] && !isUndefined(f.editingData[a[e.rowKey]][s]), u = l ? createVNode("span", { class: "table-editable-icon editing" }, [createVNode(CheckCircleOutlined, {
				class: "check-icon",
				onClick: withModifiers(() => X(o, a, s), ["stop"])
			}, null), createVNode(CloseCircleOutlined, {
				class: "close-icon",
				onClick: withModifiers(() => Y(a, s), ["stop"])
			}, null)]) : createVNode("span", { class: "table-editable-icon" }, [createVNode(EditOutlined, {
				class: "edit-icon",
				onClick: withModifiers(() => J(o, a, s, c), ["stop"])
			}, null)]), d = () => {
				if (o.type === "input") return createVNode(Input, mergeProps({
					value: f.editingData[a[e.rowKey]][s],
					"onUpdate:value": (n) => f.editingData[a[e.rowKey]][s] = n,
					style: { width: "100%" }
				}, o.defaultProps), { ...o.defaultSlots });
				if (o.type === "number") return createVNode(InputNumber, mergeProps({
					value: f.editingData[a[e.rowKey]][s],
					"onUpdate:value": (n) => f.editingData[a[e.rowKey]][s] = n,
					style: { width: "100%" }
				}, o.defaultProps), { ...o.defaultSlots });
				if (o.type === "select") return createVNode(Select, mergeProps({
					value: f.editingData[a[e.rowKey]][s],
					"onUpdate:value": (n) => f.editingData[a[e.rowKey]][s] = n,
					options: o.options,
					style: { width: "100%" }
				}, o.defaultProps), { ...o.defaultSlots });
			};
			if (o.type === "switch") {
				let n = {
					checkedChildren: () => o.options?.[0] || null,
					unCheckedChildren: () => o.options?.[1] || null
				};
				return isUndefined(f.editingSwitchData[a[e.rowKey]]) && (f.editingSwitchData[a[e.rowKey]] = {}), isUndefined(f.editingSwitchData[a[e.rowKey]][s]) && (f.editingSwitchData[a[e.rowKey]][s] = c), createVNode("div", { class: "table-editable-wrapper" }, [createVNode("div", { class: "table-editable-text" }, [createVNode(Switch, mergeProps({
					checked: f.editingSwitchData[a[e.rowKey]][s],
					"onUpdate:checked": (n) => f.editingSwitchData[a[e.rowKey]][s] = n,
					onClick: (e, n) => n.stopPropagation(),
					onChange: (e, n) => {
						n.stopPropagation(), X(o, a, s);
					}
				}, o.defaultProps), _isSlot$5(n) ? n : { default: () => [n] })])]);
			} else {
				let e = null;
				return e = l ? d() : r.customRender ? r.customRender(n) : i, createVNode("div", { class: "table-editable-wrapper" }, [createVNode("div", { class: "table-editable-text" }, [e]), u]);
			}
		}, Q = () => createVNode(Table, mergeProps({
			rowSelection: q(),
			pagination: K(),
			loading: f.tableLoading.loading,
			dataSource: f.items,
			columns: f.tableColumns,
			onResizeColumn: S
		}, G()), {
			headerCell: ({ column: n }) => {
				let r = [createVNode("span", null, [n.title]), n.tooltip ? isFunction(n.tooltip) ? createVNode(Tooltip, null, {
					default: () => createVNode(InfoCircleOutlined, { style: { marginLeft: "5px" } }, null),
					title: n.tooltip
				}) : createVNode(Tooltip, { title: n.tooltip }, { default: () => createVNode(InfoCircleOutlined, { style: { marginLeft: "5px" } }, null) }) : null], i = [];
				return e.editable && n.editable && i.push(createVNode("span", { class: "newbie-table-header-func" }, [useT("table.editable")])), createVNode("div", { class: `newbie-table-header-wrapper ${i?.length ? "with-func" : ""}` }, [createVNode("div", { class: "newbie-table-header-title-wrapper" }, [r]), createVNode("div", { class: "newbie-table-header-func-wrapper" }, [i])]);
			},
			bodyCell: ({ column: n, text: r, record: i, index: a }) => e.editable && n.editable ? Z({
				column: n,
				text: r,
				record: i,
				index: a
			}) : n.customRender ? n.customRender({
				column: n,
				text: r,
				record: i,
				index: a
			}) : n.onClick ? createVNode("a", {
				href: "javascript:void(0);",
				onClick: withModifiers(() => n.onClick({
					column: n,
					text: r,
					record: i,
					index: a
				}), ["stop"])
			}, [r]) : n.onCopy ? createVNode("span", {
				class: "table-copy-wrapper",
				onClick: withModifiers(() => {
					n.onCopy === !0 ? l(r) : n.onCopy(l, {
						column: n,
						text: r,
						record: i,
						index: a
					}), message.success(i18n_default.global.t("table.copy-success"));
				}, ["stop"])
			}, [createVNode("span", { class: "table-copy-content" }, [r]), createVNode(CopyOutlined, null, null)]) : createVNode("span", null, [r]),
			...e.tableSlots
		}), $ = () => r.append || e.pagination ? createVNode("div", {
			ref: s,
			class: "newbie-table-footer"
		}, [createVNode("div", { class: "newbie-table-append-wrapper" }, [r.append ? r.append() : null]), createVNode("div", { class: "newbie-table-pagination-wrapper" }, null)]) : null;
		return () => createVNode("div", { class: "newbie-table" }, [e.cardWrapper ? createVNode(Card, {
			size: "small",
			class: "newbie-table-card"
		}, {
			title: () => V(),
			extra: () => r.extra ? r.extra() : null,
			default: () => [
				H(),
				U(),
				W(),
				Q(),
				$()
			]
		}) : [
			H(),
			U(),
			W(),
			Q(),
			$()
		], createVNode(Modal, {
			open: f.customColumnVisible,
			"onUpdate:open": (e) => f.customColumnVisible = e,
			title: useT("table.custom"),
			width: "900px",
			onOk: T
		}, { default: () => [
			createVNode(CheckboxGroup, {
				value: f.columnKeyModal,
				"onUpdate:value": (e) => f.columnKeyModal = e,
				style: { width: "100%" }
			}, { default: () => createVNode(Row, { gutter: 15 }, { default: () => f.customColumns.map((e) => createVNode(Col, { span: 6 }, { default: () => createVNode(Checkbox, {
				style: {
					width: "100%",
					marginBottom: "5px",
					overflow: "hidden"
				},
				value: e.checkKey
			}, { default: () => e.title }) })) }) }),
			createVNode(Divider, null, null),
			createVNode(Button, { onClick: b }, { default: () => useT("table.select-all") }),
			createVNode(Button, {
				onClick: _,
				style: { marginLeft: "5px" }
			}, { default: () => useT("table.unselect-all") })
		] })]);
	}
});
function useTableActions$1(e) {
	return e ? (isArray(e) || (e = [e]), createVNode("div", { class: "table-actions-wrapper" }, [e.map((e) => {
		let n = { ...e.props }, { type: r } = e, { name: i } = e, a = null;
		if ((!r || r === "button") && (a = NewbieButton_default, n.type = n.type || "text"), (r === "a-tag" || r === "tag") && (a = Tag), r === "switch" && (a = Switch, e.name && (n.checkedChildren = e.name?.[0] || "", n.unCheckedChildren = e.name?.[1] || ""), n.checked = e.value, n.disabled = !0), e.action && (n.onClick = withModifiers(() => e.action(), ["stop"])), e.tooltip) {
			let r = e.tooltip;
			return createVNode(Tooltip, {
				title: r,
				transfer: !0
			}, { default: () => createVNode(a, n, { default: () => i }) });
		}
		if (e.children?.length) {
			let r = e.children;
			return createVNode(Dropdown, {
				placement: "bottom",
				onClick: withModifiers(() => {}, ["stop"])
			}, {
				default: () => createVNode(NewbieButton_default, mergeProps({
					type: "text",
					size: "small"
				}, n), { default: () => [createVNode(DownOutlined, { style: { fontSize: "12px" } }, null), i] }),
				overlay: () => createVNode(Menu, null, { default: () => r.map((e) => createVNode(MenuItem, null, { default: () => createVNode(NewbieButton_default, mergeProps({
					type: "text",
					style: { textAlign: "left" },
					buttonProps: { block: !0 },
					onClick: withModifiers(() => e.action(), ["stop"])
				}, e.props), { default: () => e.name }) })) })
			});
		}
		return createVNode(a, n, { default: () => i });
	})])) : null;
}
function useTableImage$1(e, n) {
	return e ? (isArray(e) || (e = [e]), createVNode(Flex, { gap: "small" }, { default: () => e.map((e) => createVNode(Image$1, {
		src: e.thumbUrl || e.url || e,
		preview: { src: e.url || e.thumbUrl || e },
		width: 48,
		height: 48
	}, null)) })) : createVNode("span", { style: { fontSize: "30px" } }, [createVNode(n || PictureOutlined, null, null)]);
}
function useTableFile$1(e, n) {
	let { DefaultIcon: r, placeholder: i = "暂无内容", fileName: a } = n || {};
	return e ? (isArray(e) || (e = [e]), e.map((n, i) => {
		let o = n.url || n, s = a || n.name || (e.length > 1 ? `查看附件${i + 1}` : "查看附件");
		return createVNode("a", {
			href: o,
			style: { display: "block" },
			target: "_blank"
		}, [createVNode("span", { style: { fontSize: "14px" } }, [
			createVNode(r || FilePdfOutlined, null, null),
			createTextVNode(" "),
			s
		])]);
	})) : createVNode("span", null, [i]);
}
const useTableActions = useTableActions$1, useTableImage = useTableImage$1, useTableFile = useTableFile$1, NewbieTable = withInstall_default(NewbieTable_default);
function _isSlot$4(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
}
var Group_default = (e, n, r, i) => {
	let { t: a } = useI18n();
	Object.keys(r).length || (r.editFormRef = null, r.showEditModal = !1, r.editIndex = -1, r.editFormData = {});
	let o = toRef(r.editFormRef), { provider: s } = i, c = s.uploaderProvider, l = e.children;
	isFunction(e.children) && (l = e.children({ submitForm: n }));
	let u = l.filter((e) => !e.invisible).map((e) => ({
		dataIndex: e.key,
		title: e.title,
		width: e.width,
		key: e.key,
		item: e,
		...e.cellProps
	})), d = {
		title: a("common.actions"),
		dataIndex: "operations",
		align: "center",
		fixed: "right",
		width: 120 + (e.childrenOperations?.length || 0) * 60
	}, p = e.disabled || e.readonly ? [...u] : [...u, d], g = computed(() => n[e.key] || []), _ = (e, n) => {
		if (e) r.editFormData = e, r.editIndex = n;
		else {
			let e = {};
			l.forEach((n) => {
				e[n.key] = initItemDefaultValue(n, {}, {}, { uploaderProvider: c });
			}), r.editFormData = e, r.editIndex = -1;
		}
		r.showEditModal = !0;
	}, v = ({ formatForm: i }) => (r.editIndex === -1 ? n[e.key].push(i) : n[e.key][r.editIndex] = i, r.showEditModal = !1, !1), y = () => new Promise((e) => {
		o.value?.isDirty() ? Modal.confirm({
			content: a("common.cancel-confirm"),
			okText: a("common.confirm"),
			cancelText: a("common.cancel"),
			onOk: () => e(!0),
			onCancel: () => e(!1)
		}) : e(!0);
	}), S = (r) => {
		n[e.key].splice(r, 1);
	};
	return createVNode("div", null, [createVNode(Table, {
		columns: p,
		dataSource: g.value,
		pagination: !1,
		bordered: !0,
		size: "small"
	}, {
		bodyCell: ({ column: r, record: i, index: o }) => {
			if (r.item?.type === "select") {
				let e = isFunction(r.item?.options) ? r.item.options({
					submitForm: n,
					record: i
				}) : r.item.options;
				return e = e.map((e) => isString(e) || isNumber(e) ? {
					value: e,
					label: e
				} : e), createVNode("span", null, [useLabelFromOptionsValue(i[r.item.key], e)]);
			} else if (r.item?.type === "date") {
				if (i[r.item.key]) {
					let e = dayjs(i[r.item.key]);
					return r.item?.defaultProps?.format ? createVNode("span", null, [e.format(r.item.defaultProps.format)]) : r.item?.defaultProps?.showTime ? createVNode("span", null, [e.format("YYYY-MM-DD HH:mm:ss")]) : createVNode("span", null, [e.format("YYYY-MM-DD")]);
				}
				return null;
			} else if (r.item?.type === "switch") {
				let e = r.item.options || [a("common.yes"), a("common.no")];
				return createVNode(FormItemRest, null, { default: () => [createVNode(Switch, mergeProps({
					checked: i[r.item.key],
					"onUpdate:checked": (e) => i[r.item.key] = e,
					disabled: !0,
					checkedChildren: e[0],
					unCheckedChildren: e[1]
				}, r.item.defaultProps), null)] });
			} else if (r.item?.type === "tree-select") {
				let e = isFunction(r.item?.options) ? r.item.options({
					submitForm: n,
					record: i
				}) : r.item.options, a = cloneDeep(i[r.item.key]);
				return isArray(a) || (a = [a]), createVNode("span", null, [useFindLabelsInValues(e, a, r.item?.defaultProps?.fieldNames || null).join(", ")]);
			} else if (r.item?.type === "tag") return i[r.item.key]?.map((e) => createVNode(Tag, { color: "blue" }, _isSlot$4(e) ? e : { default: () => [e] }));
			else if (r.item?.type === "uploader") return createVNode("div", { class: "flex justify-center" }, [useTableImage(i[r.item.key])]);
			else if (r.item?.type === "time" || r.item?.type === "date") {
				let e = r.item?.defaultProps?.format || (r.item?.type === "time" ? "HH:mm:ss" : "YYYY-MM-DD");
				return r.item?.defaultProps?.type === "range" ? createVNode("span", null, [
					dayjs(i[r.item.key][0]).format(e),
					createTextVNode(" -"),
					" ",
					dayjs(i[r.item.key][1]).format(e)
				]) : i[r.item.key] ? createVNode("span", null, [dayjs(i[r.item.key]).format(e)]) : createVNode("span", null, null);
			}
			if (r.dataIndex === "operations") {
				let n = [createVNode(Button, {
					type: "text",
					size: "small",
					onClick: () => _(i, o)
				}, { default: () => a("common.edit") })];
				return e.childrenOperations?.forEach((e) => {
					n.push(createVNode(Button, {
						type: "text",
						size: "small",
						onClick: () => e.action({
							column: r,
							record: i,
							index: o
						})
					}, { default: () => e.name }));
				}), n.push(createVNode(Popconfirm, {
					title: a("common.delete-confirm"),
					onConfirm: () => S(o)
				}, { default: () => createVNode(Button, {
					type: "text",
					size: "small"
				}, { default: () => a("common.delete") }) })), createVNode("div", { class: "table-actions-wrapper" }, [
					createTextVNode(" "),
					n,
					createTextVNode(" ")
				]);
			}
		},
		summary: () => e.disabled || e.readonly ? null : createVNode(TableSummaryRow, null, { default: () => createVNode(TableSummaryCell, { colSpan: p.length }, { default: () => createVNode(Button, {
			icon: createVNode(PlusOutlined, null, null),
			block: !0,
			onClick: () => _(!1)
		}, { default: () => useI18nJoin(a("common.add"), e.title) }) }) })
	}), createVNode(NewbieModal_default, {
		visible: r.showEditModal,
		"onUpdate:visible": (e) => r.showEditModal = e,
		type: "drawer",
		title: useI18nJoin(a("common.edit"), e.title),
		beforeClose: y
	}, { default: () => [createVNode(resolveComponent("NewbieForm"), {
		ref: o,
		form: l,
		closable: !1,
		data: r.editFormData,
		beforeSubmit: v,
		onClose: async () => {
			r.showEditModal = !await y();
		}
	}, null)] })]);
}, Rate_default = (e, n) => (n[e.key] = Number(n[e.key]) || 0, createVNode(Rate, mergeProps({
	value: n[e.key],
	"onUpdate:value": (r) => n[e.key] = r,
	disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled
}, e.defaultProps), { ...e.defaultSlots })), MatrixRadio_default = (e, n) => {
	let r = isFunction(e.rows) ? e.rows(n) : e.rows, i = isFunction(e.options) ? e.options(n) : e.options;
	return i = i.map((e) => isString(e) || isNumber(e) ? {
		value: e,
		label: e
	} : e), createVNode(Table, {
		pagination: !1,
		bordered: !0,
		columns: [{
			title: `${useT("form.row-title")}\\${useT("form.options")}`,
			dataIndex: "row",
			type: "title"
		}].concat(i.map((e) => ({
			title: e.label,
			dataIndex: e.value,
			align: "center",
			type: "option"
		}))),
		dataSource: r,
		size: "middle"
	}, { bodyCell: ({ index: i, column: a }) => {
		let o = r[i];
		if (a.type === "title") return o;
		if (a.type === "option") {
			let r = `${a.dataIndex}`;
			return createVNode(FormItemRest, null, { default: () => createVNode(RadioGroup, {
				value: n[e.key][o],
				"onUpdate:value": (r) => n[e.key][o] = r
			}, { default: () => [createVNode(Radio, {
				value: r,
				disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled
			}, null)] }) });
		}
	} });
}, MatrixCheckbox_default = (e, n) => {
	let r = isFunction(e.rows) ? e.rows(n) : e.rows, i = isFunction(e.options) ? e.options(n) : e.options;
	i = i.map((e) => isString(e) || isNumber(e) ? {
		value: e,
		label: e
	} : e);
	let a = [{
		title: `${useT("form.row-title")}\\${useT("form.options")}`,
		dataIndex: "row",
		type: "title"
	}].concat(i.map((e) => ({
		title: e.label,
		dataIndex: e.value,
		align: "center",
		type: "option"
	}))), o = (r, i) => {
		n[e.key][r] || (n[e.key][r] = []), n[e.key][r].includes(i) ? remove(n[e.key][r], (e) => e === i) : n[e.key][r].push(i);
	};
	return createVNode(Table, {
		pagination: !1,
		bordered: !0,
		columns: a,
		dataSource: r,
		size: "middle"
	}, { bodyCell: ({ index: i, column: a }) => {
		let s = r[i];
		if (a.type === "title") return s;
		if (a.type === "option") {
			let r = `${a.dataIndex}`;
			return createVNode(FormItemRest, null, { default: () => createVNode(Checkbox, {
				id: `${s}_${r}`,
				checked: n[e.key][s]?.includes(r),
				onChange: () => o(s, r),
				disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled
			}, null) });
		}
	} });
}, MatrixScale_default = (e, n) => {
	let r = isFunction(e.rows) ? e.rows(n) : cloneDeep(e.rows), i = e.defaultProps?.level || 5, a = isFunction(e.options) ? e.options(n) : e.options || [];
	if (a = a.map((e) => isString(e) || isNumber(e) ? {
		value: e,
		label: e
	} : e), a.length > i) a = a.slice(0, i);
	else if (a.length < i) for (let e = a.length; e < i; e += 1) a.push({
		label: e + 1,
		value: e + 1
	});
	let o = [{
		title: `${useT("form.row-title")}\\${useT("form.options")}`,
		dataIndex: "row",
		type: "title"
	}].concat(a.map((e) => ({
		title: e.label,
		dataIndex: e.value,
		align: "center",
		type: "option"
	})));
	if (r = r.map((e) => ({ row: e })), e.defaultProps?.showScale) {
		let e = { row: useT("form.scale") };
		a.forEach((n, r) => e[n.value] = r + 1), r.unshift(e);
	}
	return createVNode(Table, {
		pagination: !1,
		bordered: !0,
		columns: o,
		dataSource: r,
		size: "middle"
	}, { bodyCell: ({ index: i, column: a, record: s }) => {
		if (i === 0 && e.defaultProps?.showScale) return createVNode("span", { style: {
			color: "orange",
			fontWeight: "bold"
		} }, [s[a.dataIndex]]);
		if (a.type === "option") {
			let { row: s } = r[i], c = findIndex(o, { dataIndex: a.dataIndex });
			return createVNode(FormItemRest, null, { default: () => createVNode(RadioGroup, {
				value: n[e.key][s],
				"onUpdate:value": (r) => n[e.key][s] = r
			}, { default: () => [createVNode(Radio, {
				value: c,
				disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled
			}, null)] }) });
		}
		return s[a.dataIndex];
	} });
};
function _isSlot$3(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
}
var RateRadio_default = (e, n) => {
	let r, i = isFunction(e.options) ? e.options(n) : e.options;
	i = i.map((e) => {
		if (isString(e) || isNumber(e)) return {
			value: e,
			label: e,
			rate: 0
		};
		if (isObject(e) && e.value) return isUndefined(e.label) && (e.label = e.value), isUndefined(e.rate) && (e.rate = 0), e;
	});
	let a = (r) => {
		let { value: a } = r.target;
		n[e.key].rate = find(i, { value: a })?.rate || 0;
	};
	return e.readonly ? createVNode("div", { style: { padding: "0 11px" } }, [createVNode(Tag, null, _isSlot$3(r = useLabelFromOptionsValue(n[e.key].value, i)) ? r : { default: () => [r] })]) : createVNode(RadioGroup, mergeProps({
		value: n[e.key].value,
		"onUpdate:value": (r) => n[e.key].value = r,
		optionType: "button",
		buttonStyle: "solid",
		disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled,
		options: i,
		style: e.style || {},
		onChange: a
	}, e.defaultProps), { ...e.defaultSlots });
};
function _isSlot$2(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
}
var RateCheckbox_default = (e, n) => {
	let r = isFunction(e.options) ? e.options(n) : e.options;
	r = r.map((e) => {
		if (isString(e) || isNumber(e)) return {
			value: e,
			label: e,
			rate: 0
		};
		if (isObject(e) && e.value) return isUndefined(e.label) && (e.label = e.value), isUndefined(e.rate) && (e.rate = 0), e;
	});
	let i = (r) => {
		n[e.key] || (n[e.key] = []), n[e.key].filter((e) => e.value === r.value).length ? n[e.key] = n[e.key].filter((e) => e.value !== r.value) : n[e.key].push({
			value: r.value,
			rate: r.rate
		});
	};
	return e.readonly ? createVNode("div", { style: { padding: "0 11px" } }, [useFindLabelsInValues(r, n[e.key].map((e) => e.value)).map((e) => createVNode(Tag, { style: { marginRight: "5px" } }, _isSlot$2(e) ? e : { default: () => [e] }))]) : createVNode(FormItemRest, null, { default: () => r.map((r) => {
		let a = n[e.key].filter((e) => e.value === r.value).length > 0;
		return createVNode(Checkbox, {
			id: r.value,
			checked: a,
			onChange: () => i(r),
			disabled: isFunction(e.disabled) ? e.disabled(n) : e.disabled
		}, { default: () => r.label });
	}) });
}, Plain_default = (e, n) => createVNode("span", {
	style: e.style,
	class: { ...e.class }
}, [isFunction(e.defaultValue) ? e.defaultValue({ submitForm: n }) : e.defaultValue]), Combiner_default = (e, n, r) => {
	let i = e.children;
	return createVNode("div", {
		style: {
			display: "flex",
			gap: "6px",
			...e.style || {}
		},
		class: { ...e.class || {} }
	}, [i.map((e) => FormItem_default(e, n, r))]);
}, render$1 = (e, n, { props: r, slots: i, formState: a }) => {
	let { t: o } = useI18n(), s = inject(NEWBIE_UPLOADER, () => ({})), c = inject(NEWBIE_FORM, () => ({}));
	isUndefined(n[e.key]) && e.key && (n[e.key] = initItemDefaultValue(e, {}, n, {
		formProvider: c,
		uploaderProvider: s
	}));
	let l = null, u = e.rules?.length ? e.rules.map((e) => e.pattern ? {
		...e,
		pattern: new RegExp(e.pattern)
	} : { ...e }) : [], d = {
		required: !0,
		message: e.requiredMessage || placeholder(e, "select")
	};
	e.type = e.type ? e.type.toLowerCase() : e.type;
	let f = isFunction(e.required) ? e.required(n) : e.required;
	if (e.readonly = e.readonly || r.readonly, e.disabled = e.disabled || r.disabled || r.readonly || e.readonly, (e.readonly || e.disabled) && (e.placeholder = "--"), isFunction(e.hidden) && e.hidden(n) || isBoolean(e.hidden) && e.hidden) return null;
	if (e.type === "slot" && i[e.key]) return i[e.key]({
		submitForm: n,
		item: e
	});
	if (e.customRender) {
		if (l = e.customRender({
			submitForm: n,
			item: e
		}), !l) return null;
	} else if (e.match) return render$1({
		...e,
		...e.match(n),
		match: null
	}, n, {
		props: r,
		slots: i
	});
	else switch (e.type) {
		case "select":
			l = Select_default(e, n);
			break;
		case "remote":
			l = Remote_default(e, n, a[e.key]);
			break;
		case "tree-select":
			l = TreeSelect_default(e, n);
			break;
		case "date":
			l = Date_default(e, n);
			break;
		case "time":
			l = Time_default(e, n);
			break;
		case "switch":
			l = Switch_default(e, n);
			break;
		case "radio":
			l = Radio_default(e, n);
			break;
		case "checkbox":
			l = Checkbox_default(e, n), d.type = "array";
			break;
		case "tag":
			l = Tag_default(e, n, a[e.key]), d.type = "array";
			break;
		case "address":
			l = Address_default(e, n), d.type = "array";
			break;
		case "cascade":
			l = Cascader_default(e, n), d.type = "array";
			break;
		case "number":
			l = Number_default(e, n), d.trigger = "blur", d.type = "number", d.message = e.requiredMessage || placeholder(e);
			break;
		case "html":
			l = Html_default(e, n);
			break;
		case "uploader":
			if (l = Uploader_default(e, n), f) {
				if (!Object.keys(s).length) {
					console.error("Please inject NEWBIE_UPLOADER config in root component"), l = null;
					break;
				}
				e.defaultProps?.maxNum && e.defaultProps?.maxNum > 1 ? (d.type = "array", d.message = e.requiredMessage || placeholder(e, "upload")) : (d.type = "object", d.message = e.requiredMessage || placeholder(e, "upload"), d.fields = { [s.defaultFileItem.path]: {
					type: "string",
					required: !0,
					message: placeholder(e, "upload")
				} });
			}
			break;
		case "editor":
			l = Editor_default(e, n), d.message = e.requiredMessage || placeholder(e), d.type = "string";
			break;
		case "text":
			l = Text_default(e, n);
			break;
		case "plain":
			l = Plain_default(e, n);
			break;
		case "group":
			l = Group_default(e, n, a[e.key], { provider: { uploaderProvider: s } });
			break;
		case "rate":
			l = Rate_default(e, n);
			break;
		case "matrix-radio": {
			l = MatrixRadio_default(e, n), d.type = "object", d.message = e.requiredMessage || placeholder(e, "select");
			let r = {};
			e.rows.forEach((e) => {
				r[e] = {
					required: !0,
					message: o("form.please-select", { title: e })
				};
			}), d.fields = r;
			break;
		}
		case "matrix-checkbox": {
			l = MatrixCheckbox_default(e, n), d.type = "object", d.message = e.requiredMessage || placeholder(e, "select");
			let r = {};
			e.rows.forEach((e) => {
				r[e] = {
					required: !0,
					type: "array",
					message: o("form.please-select", { title: e })
				};
			}), d.fields = r;
			break;
		}
		case "matrix-scale": {
			l = MatrixScale_default(e, n), d.type = "object", d.message = e.requiredMessage || placeholder(e, "select");
			let r = {};
			e.rows.forEach((e) => {
				r[e] = {
					type: "number",
					required: !0,
					message: o("form.please-select", { title: e })
				};
			}), d.fields = r;
			break;
		}
		case "rate-radio":
			l = RateRadio_default(e, n);
			break;
		case "rate-checkbox":
			l = RateCheckbox_default(e, n), d.type = "array";
			break;
		case "combiner":
			l = Combiner_default(e, n, {
				props: r,
				slots: i
			});
			break;
		default:
			l = Input_default(e, n), d.message = e.requiredMessage || placeholder(e), d.trigger = "blur", d.type = "string";
			break;
	}
	f && (u.length ? u[0].required = !0 : u.push(d));
	let p = {
		label: e.title,
		name: e.key,
		validateFirst: !0,
		required: f,
		hasFeedback: u?.length > 0,
		rules: u
	};
	p = {
		...p,
		...e.formItemProps
	};
	let g = e.formItemSlots || {};
	e.help && (g.extra = () => createVNode("div", { class: "newbie-form__form-item-help" }, [isFunction(e.help) ? e.help(n) : e.help])), g.label && delete p.label;
	let _ = null;
	return e.optional && !e.readonly && (isUndefined(e.optionalValue) && (e.optionalValue = ref(isOptionalChecked(e, n))), _ = createVNode("div", { class: "newbie-form__optional" }, [createVNode(FormItemRest, null, { default: () => [createVNode(Switch, {
		checked: e.optionalValue.value,
		"onUpdate:checked": (n) => e.optionalValue.value = n,
		checkedChildren: e.optional?.[0] || "",
		unCheckedChildren: e.optional?.[1] || "",
		onChange: (r) => !r && (n[e.key] = null)
	}, null)] }), createVNode("div", { class: "newbie-form__optional-content" }, [e.optionalValue.value ? l : !1])])), createVNode(FormItem, p, {
		default: () => e.optional && !e.readonly ? _ : l,
		...g
	});
}, FormItem_default = render$1;
function _isSlot$1(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
}
var Layout_default = (e, n, r, i) => {
	let { props: a, slots: o, formState: s } = i, c = [], l = [];
	e.forEach((e) => {
		e.columnIndex === "fixed" ? c.push(e) : ((e.break || !l.length) && l.push([]), l[l.length - 1].push(e));
	});
	let u = a.columns;
	if ((!u || !isArray(u) || !u.length) && (u = [24]), sum(u) !== 24) return console.error("NewbieForm columns must sum up to 24"), null;
	let d = l.map(() => u.map(() => []));
	l.forEach((e, n) => {
		e.forEach((e) => {
			let r = e.columnIndex || 0;
			r = isNumber(r) ? Math.min(r, a.columns.length - 1) : r;
			let i = 0;
			if (isArray(r)) {
				for (let e = r[0]; e <= r[1] && u[e]; e++) i += u[e], e !== r[0] && d[n][e].push("placeholder");
				e.span = i, e.formItemProps = {
					labelCol: { span: (a.formProps.labelCol?.span || 6) / (r[r.length - 1] - r[0] + 1) },
					...e.formItemProps
				}, d[n][r[0]].push(e);
			} else isNumber(r) && (e.span = u[r], d[n][r].push(e));
		});
	});
	let f = c.map((e) => FormItem_default(e, n, i)), p = [], m = (e) => {
		let n = document.getElementById(`collapse_${e.key}`);
		s[e.key].isCollapse ? n.style.height = `${n.scrollHeight}px` : (n.style.height || (n.style.height = `${n.scrollHeight}px`), setTimeout(() => n.style.height = "0px")), nextTick(() => {
			s[e.key].isCollapse = !s[e.key].isCollapse;
		});
	};
	d.forEach((e, r) => {
		let o = Math.max(...e.map((e) => e.length)), c = [], l = null;
		for (let e = 0; e < o; e++) {
			let a = 0, o = [];
			for (let s = 0; s < d[r].length; s++) {
				let c, f = d[r][s][e];
				if (!f) {
					a += u[s];
					continue;
				}
				f.break && (l = f), f !== "placeholder" && (o.push(createVNode(Col, {
					span: f.span,
					offset: a
				}, _isSlot$1(c = FormItem_default(f, n, i)) ? c : { default: () => [c] })), a = 0);
			}
			c.push(createVNode(Row, { gutter: 16 }, _isSlot$1(o) ? o : { default: () => [o] }));
		}
		if (l) {
			if (a.breakMode === "divider") c.unshift(createVNode(Divider, a.dividerProps, { default: () => isString(l.break) ? l.break : "" })), p = p.concat(c);
			else if (a.breakMode === "collapse") {
				isUndefined(s[l.key].isCollapse) && (s[l.key].isCollapse = !!r);
				let e = createVNode("div", { class: "newbie-form__collapse-wrapper" }, [createVNode("div", {
					class: "newbie-form__collapse-header",
					onClick: () => m(l)
				}, [createVNode("span", { class: `newbie-form__collapse-icon ${s[l.key].isCollapse ? "" : "open"}` }, [createVNode(RightOutlined, null, null)]), createVNode("span", { class: "newbie-form__collapse-title" }, [l.break])]), createVNode("div", {
					class: `newbie-form__collapse-content-wrapper ${s[l.key].isCollapse ? "collapse" : ""}`,
					id: `collapse_${l.key}`
				}, [createVNode("div", { class: "newbie-form__collapse-content" }, [c])])]);
				p = p.concat(e);
			}
		} else p = p.concat(c);
	});
	let g = () => o.footer ? createVNode("div", { class: "newbie-form__footer" }, [o.footer()]) : null, _;
	if (f.length) {
		let e = a.disabled || a.readonly || a.hideButtons ? null : createVNode("div", { class: "newbie-form__submit-wrapper" }, [createVNode(Divider, null, null), createVNode(Row, null, { default: () => [createVNode(Col, {
			span: 24,
			offset: 2
		}, { default: () => r })] })]);
		_ = createVNode(Row, { gutter: 16 }, { default: () => [createVNode(Col, { span: 24 - a.fixedColumns }, { default: () => p }), createVNode(Col, { span: a.fixedColumns }, { default: () => [createVNode(Affix, { offsetTop: 20 }, { default: () => [createVNode(Card, { style: { marginLeft: "20px" } }, { default: () => [
			f,
			g(),
			e
		] })] })] })] });
	} else {
		let e = a.disabled || a.readonly || a.hideButtons ? null : createVNode("div", { class: "newbie-form__submit-wrapper" }, [createVNode(Divider, null, null), createVNode(Row, { gutter: 16 }, { default: () => [createVNode(Col, { offset: a.closable ? 9 : 10 }, { default: () => r })] })]);
		_ = [
			p,
			g(),
			e
		];
	}
	return _;
}, NewbieForm_default = /* @__PURE__ */ defineComponent({
	name: "NewbieForm",
	props: {
		title: {
			type: String,
			default: ""
		},
		data: {
			type: [Object, String],
			default: ""
		},
		autoLoad: {
			type: [
				Boolean,
				Array,
				String
			],
			default: !0
		},
		fetchUrl: {
			type: String,
			default: ""
		},
		extraData: {
			type: Object,
			default: () => ({})
		},
		submitUrl: {
			type: String,
			default: ""
		},
		submitButtonText: {
			type: String,
			default: ""
		},
		submitConfirmText: {
			type: String,
			default: ""
		},
		closable: {
			type: Boolean,
			default: !0
		},
		closeButtonText: {
			type: String,
			default: ""
		},
		closeButtonFirst: {
			type: Boolean,
			default: !1
		},
		hideButtons: {
			type: Boolean,
			default: !1
		},
		disabled: {
			type: Boolean,
			default: !1
		},
		readonly: {
			type: Boolean,
			default: !1
		},
		submitDisabled: {
			type: Boolean,
			default: !1
		},
		breakMode: {
			type: String,
			default: "divider"
		},
		dividerProps: {
			type: Object,
			default: () => ({})
		},
		columns: {
			type: Array,
			default: () => [24]
		},
		fixedColumns: {
			type: Number,
			default: 6
		},
		cardWrapper: {
			type: Boolean,
			default: !0
		},
		cardProps: {
			type: Object,
			default: () => {}
		},
		cardSlots: {
			type: Object,
			default: () => {}
		},
		form: {
			type: [Array, Function],
			default() {
				return [];
			}
		},
		afterFetched: {
			type: Function,
			default: null
		},
		beforeSubmit: {
			type: Function,
			default: null
		},
		close: {
			type: Function,
			default: null
		},
		afterSubmit: {
			type: Function,
			default: null
		},
		formProps: {
			type: Object,
			default: () => ({})
		}
	},
	emits: ["success"],
	setup(e, { expose: n, slots: r, emit: i }) {
		let { t: a, locale: o } = useI18n(), s = ref(null), c = reactive({
			temporary: {},
			submitFetcher: { loading: !1 },
			isInitializing: !0,
			submitForm: {},
			submitFormBackup: {}
		}), l = inject(NEWBIE_UPLOADER, () => ({})), d = inject(NEWBIE_FORM, () => ({})), f = {}, p = computed(() => (isFunction(e.form) ? e.form() : e.form).map((e) => (e.type ||= "input", d?.columns?.[e.type] && (e = {
			...d.columns[e.type],
			...e
		}), f[e.key] || (f[e.key] = reactive({})), e)));
		watch(() => e.data, (e) => {
			_(e || "");
		});
		let g = () => {
			c.isInitializing = !1, _(e.data || "");
		};
		onMounted(() => {
			let n = !1;
			e.autoLoad && e.fetchUrl && (n = !0, e.autoLoad && isObject(e.autoLoad) ? n = every(Object.values(pick(e.extraData, Object.keys(e.autoLoad)))) : e.autoLoad && isString(e.autoLoad) && (n = !!e.extraData[e.autoLoad])), n ? v() : g();
		});
		let _ = (e) => {
			let n = {}, r = e ? cloneDeep(e) : !1;
			p.value.forEach((e) => {
				e.type === "combiner" ? e.children.forEach((e) => {
					n[e.key] = initItemDefaultValue(e, r, c.submitForm, { uploaderProvider: l });
				}) : n[e.key] = initItemDefaultValue(e, r, c.submitForm, { uploaderProvider: l });
			}), r && (n = {
				...r,
				...n
			}), c.submitForm = n, c.submitFormBackup = cloneDeep(n);
		}, v = () => {
			e.fetchUrl && (c.isInitializing = !0, useFetch().get(e.fetchUrl, { params: e.extraData }).then((n) => {
				c.isInitializing = !1, useProcessStatusSuccess(n, () => {
					e.afterFetched && isFunction(e.afterFetched) ? n = e.afterFetched(n) : d.afterFetched && isFunction(d.afterFetched) && (n = d.afterFetched(n)), _(n);
				});
			}).finally(() => {
				c.isInitializing = !1;
			}));
		}, y = () => new Promise((n, r) => {
			s.value.validate().then(async () => {
				let r = cloneDeep(c.submitForm), s = p.value.map((e) => e.match ? {
					...e,
					...e.match(r)
				} : e).filter((e) => e.beforeSubmit && isFunction(e.beforeSubmit));
				for (let e of s) r[e.key] = await e.beforeSubmit({
					value: r[e.key],
					submitForm: r
				});
				if (r = useFormFormat(r, d.format || {}), e.beforeSubmit && isFunction(e.beforeSubmit) && (r = await e.beforeSubmit({
					formatForm: r,
					originalForm: c.submitForm
				}), r === !1)) return n();
				let l = await useFetch(c.submitFetcher).post(e.submitUrl, r);
				return c.submitFormBackup = cloneDeep(c.submitForm), e.afterSubmit ? e.afterSubmit(l) : useProcessStatusSuccess(l, () => {
					message.success(useI18nJoin(e.submitButtonText || a("common.save"), a("common.success"), { locale: o })), i("success", l);
				}), n();
			}).catch((e) => (useFormFail(e), r(e)));
		}), b = (e) => {
			c.isInitializing = e;
		}, T = () => {
			s.value.resetFields();
		}, E = () => cloneDeep(c.submitForm);
		n({
			submit: y,
			getForm: E,
			getFormStandalone: E,
			getFormRealtime: () => c.submitForm,
			getField: (e) => cloneDeep(c.submitForm[e]),
			setForm: (e) => {
				Object.keys(e).forEach((n) => {
					c.submitForm[n] = e[n];
				});
			},
			reset: T,
			isDirty: () => !isEqual(c.submitForm, c.submitFormBackup),
			isInitializing: b
		});
		let D = () => {
			let n = () => createVNode(Button, {
				loading: c.submitFetcher.loading,
				type: "primary",
				htmlType: "submit",
				disabled: e.submitDisabled,
				onClick: () => {
					e.submitConfirmText ? Modal.confirm({
						content: e.submitConfirmText,
						onOk() {
							y();
						}
					}) : y();
				}
			}, { default: () => `${e.submitButtonText || a("common.save")}${c.submitFetcher.loading ? "..." : ""}` }), r = () => createVNode(Button, {
				type: "default",
				onClick: () => {
					e.close && isFunction(e.close) && e.close();
				}
			}, { default: () => e.closeButtonText || a("common.close") });
			return createVNode(Space, { size: "large" }, { default: () => e.closeButtonFirst ? [e.closable ? r() : null, n()] : [n(), e.closable ? r() : null] });
		}, k = () => Layout_default(p.value, c.submitForm, D(), {
			props: e,
			slots: r,
			formState: f
		}), A = () => createVNode(Form, mergeProps({
			model: c.submitForm,
			ref: s,
			class: "newbie-form",
			labelCol: { span: 6 },
			scrollToFirstError: !0
		}, e.formProps), { default: () => [k()] }), M = () => createVNode(Skeleton, {
			active: !0,
			paragraph: { rows: 10 },
			loading: c.isInitializing
		}, { default: () => [
			r.prepend?.(),
			A(),
			r.append?.()
		] });
		return () => createVNode("div", { class: "newbie-form-wrapper" }, [e.cardWrapper ? createVNode(Card, mergeProps(e.cardProps, { title: e.title }), {
			default: () => M(),
			...e.cardSlots
		}) : M()]);
	}
});
const NewbieForm = withInstall_default(NewbieForm_default), NewbieList = withInstall_default(/* @__PURE__ */ defineComponent({
	name: "NewbieList",
	props: {
		url: {
			type: String,
			default: ""
		},
		extraData: {
			type: Object,
			default: () => ({})
		},
		height: {
			type: Number,
			default: 300
		},
		offset: {
			type: Number,
			default: 50
		},
		finishedText: {
			type: String,
			default: ""
		},
		autoLoad: {
			type: Boolean,
			default: !0
		},
		useStore: {
			type: Object,
			default: () => null
		},
		listProps: {
			type: Object,
			default: () => ({})
		}
	},
	setup(e, { slots: n, expose: r }) {
		let i = ref(null), a = ref(null), o = computed(() => ({ ...e.listProps })), s;
		e.useStore?.initPagination ? (e.useStore.initPagination({
			uri: e.url,
			params: e.extraData
		}), s = computed(() => e.useStore.pagination)) : s = ref({
			uri: e.url,
			params: e.extraData
		});
		let c = (e) => {
			s.value = usePage(s.value, e);
		}, { y: u } = useScroll(i);
		return watch(u, async (n) => {
			n + e.height + e.offset >= i.value.scrollHeight && !s.value.loading && !s.value.finished && await c();
		}), e.autoLoad && c(), r({
			loadMore: c,
			items: () => s.value.items || [],
			pagination: s
		}), () => createVNode("div", {
			ref: i,
			class: "newbie-list",
			style: { height: `${e.height}px` }
		}, [createVNode(List, mergeProps({
			ref: a,
			dataSource: s.value?.items || []
		}, o.value), {
			default: () => n.default?.(),
			renderItem: ({ item: e, index: r }) => n.renderItem ? n.renderItem({
				item: e,
				index: r
			}) : null,
			loadMore: () => [s.value?.loading ? createVNode("div", { class: "loading-container" }, [createVNode(Spin, null, null)]) : null, s.value?.finished ? createVNode("div", { class: "finished-text" }, [e.finishedText || useT("common.loading-finished")]) : null]
		})]);
	}
})), NewbieModal = withInstall_default(NewbieModal_default), NewbiePassword = withInstall_default(/* @__PURE__ */ defineComponent({
	name: "NewbiePassword",
	components: { InputPassword },
	props: {
		value: {
			type: String,
			default: ""
		},
		min: {
			type: Number,
			default: 8
		},
		max: {
			type: Number,
			default: 20
		},
		width: {
			type: [Number, String],
			default: 300
		}
	},
	emits: ["update:value", "change"],
	setup(e, { emit: n, expose: r }) {
		let i = ref("");
		watch(() => e.modelValue, () => {
			i.value = e.modelValue;
		});
		let a = computed(() => {
			let e = 0;
			return [
				/\d/,
				/[a-z]/,
				/[A-Z]/,
				/[^a-zA-Z0-9]/
			].forEach((n) => {
				n.test(i.value) && (e += 1);
			}), e;
		}), o = [
			"",
			"bad",
			"weak",
			"medium",
			"strong"
		], s = (e) => {
			let { value: r } = e.target;
			n("change", e), n("update:value", r);
		}, c = computed(() => i.value.length > 0 && i.value.length < e.min || i.value.length > e.max || a.value < 4), l = computed(() => i.value.length > 0 && i.value.length < e.min ? `密码长度不能少于${e.min}个字符` : i.value.length > e.max ? `密码长度不能超过${e.max}个字符` : a.value < 4 ? "密码必须包含数字、小写字母、大写字母和特殊符号" : "");
		return r({ strength: a }), () => createVNode("div", {
			class: "newbie-password",
			style: { width: genPixel(e.width) }
		}, [
			createVNode(resolveComponent("input-password"), {
				value: i.value,
				"onUpdate:value": (e) => i.value = e,
				onChange: s,
				minlength: e.min,
				maxlength: e.max
			}, null),
			createVNode("div", { class: `strength-indicator-container ${o[a.value]}` }, [
				createVNode("div", { class: `strength-indicator ${a.value >= 1 ? "active" : ""}` }, null),
				createVNode("div", { class: `strength-indicator ${a.value >= 2 ? "active" : ""}` }, null),
				createVNode("div", { class: `strength-indicator ${a.value >= 3 ? "active" : ""}` }, null),
				createVNode("div", { class: `strength-indicator ${a.value >= 4 ? "active" : ""}` }, null)
			]),
			c.value ? createVNode("div", { class: "error-message" }, [l.value]) : null
		]);
	}
})), NewbieProvider = withInstall_default(NewbieProvider_default), NewbieSearch = withInstall_default(NewbieSearch_default), NewbieUploader = withInstall_default(NewbieUploader_default);
function getDefaultWidgets(e) {
	return e && e === "quiz" ? [{
		title: "题目类型",
		children: [
			{
				name: "单选",
				type: "radio",
				icon: () => h(CheckCircleOutlined),
				props: {
					defaultProps: { optionType: "outlined" },
					options: [
						"A. 选项一",
						"B. 选项二",
						"C. 选项三",
						"D. 选项四"
					]
				}
			},
			{
				name: "多选",
				type: "checkbox",
				icon: () => h(CheckSquareOutlined),
				props: { options: [
					"A. 选项一",
					"B. 选项二",
					"C. 选项三",
					"D. 选项四"
				] }
			},
			{
				name: "填空",
				type: "input",
				icon: () => h(EditOutlined),
				props: { width: "100%" }
			}
		]
	}] : [
		{
			title: "选择",
			children: [
				{
					name: "单选",
					type: "radio",
					icon: () => h(CheckCircleOutlined),
					props: {
						defaultProps: { optionType: "outlined" },
						options: ["选项一", "选项二"]
					}
				},
				{
					name: "多选",
					type: "checkbox",
					icon: () => h(CheckSquareOutlined),
					props: { options: ["选项一", "选项二"] }
				},
				{
					name: "下拉选择",
					type: "select",
					icon: () => h(DownSquareOutlined),
					props: {
						options: ["选项一", "选项二"],
						width: 300
					}
				},
				{
					name: "开关",
					icon: () => h(SwitcherOutlined),
					type: "switch"
				},
				{
					name: "图片上传",
					type: "uploader",
					icon: () => h(FileImageOutlined),
					props: { defaultProps: { accept: ".png,.jpg,.jpeg" } }
				},
				{
					name: "文件上传",
					type: "uploader",
					icon: () => h(FilePdfOutlined),
					props: { defaultProps: {
						accept: ".doc,.docx,.pdf,.xls,.xlsx,.ppt,.pptx,.png,.jpg,jpeg",
						type: "text"
					} }
				}
			]
		},
		{
			title: "填空",
			children: [
				{
					name: "文本",
					type: "input",
					icon: () => h(EditOutlined),
					props: { width: "100%" }
				},
				{
					name: "多行文本",
					icon: () => h(FormOutlined),
					type: "textarea"
				},
				{
					name: "日期",
					icon: () => h(CalendarOutlined),
					type: "date"
				},
				{
					name: "日期范围",
					type: "date",
					icon: () => h(CalendarOutlined),
					props: {
						width: 300,
						defaultProps: { type: "range" }
					}
				},
				{
					name: "时间",
					icon: () => h(ClockCircleOutlined),
					type: "time"
				},
				{
					name: "时间范围",
					type: "time",
					icon: () => h(ClockCircleOutlined),
					props: {
						width: 300,
						defaultProps: { type: "range" }
					}
				},
				{
					name: "数字",
					icon: () => h(FieldBinaryOutlined),
					type: "number"
				}
			]
		},
		{
			title: "评分",
			children: [
				{
					name: "星级评分",
					icon: () => h(StarOutlined),
					type: "rate"
				},
				{
					name: "单选评分",
					type: "rate-radio",
					icon: () => h(CheckCircleOutlined),
					props: {
						defaultProps: { optionType: "outlined" },
						options: [
							{
								value: "选项一",
								rate: 1
							},
							{
								value: "选项二",
								rate: 2
							},
							{
								value: "选项三",
								rate: 3
							}
						]
					}
				},
				{
					name: "多选评分",
					type: "rate-checkbox",
					icon: () => h(CheckSquareOutlined),
					props: { options: [
						{
							value: "选项一",
							rate: 1
						},
						{
							value: "选项二",
							rate: 2
						},
						{
							value: "选项三",
							rate: 3
						}
					] }
				}
			]
		},
		{
			title: "矩阵",
			children: [
				{
					name: "矩阵单选",
					type: "matrix-radio",
					icon: () => h(CheckCircleOutlined),
					props: {
						options: [
							"好",
							"一般",
							"差"
						],
						rows: ["质量", "外观"]
					}
				},
				{
					name: "矩阵多选",
					type: "matrix-checkbox",
					icon: () => h(CheckSquareOutlined),
					props: {
						options: [
							"好",
							"一般",
							"差"
						],
						rows: ["质量", "外观"]
					}
				},
				{
					name: "矩阵量表",
					type: "matrix-scale",
					icon: () => h(NumberOutlined),
					props: {
						defaultProps: { showScale: !0 },
						options: [],
						rows: ["质量", "外观"]
					}
				}
			]
		},
		{
			title: "个人信息",
			children: [
				{
					name: "姓名",
					type: "input",
					icon: () => h(UserOutlined),
					props: { title: "您的姓名" }
				},
				{
					name: "性别",
					type: "radio",
					icon: () => h(SmileFilled),
					props: {
						title: "您的性别",
						options: ["男", "女"]
					}
				},
				{
					name: "手机号码",
					type: "input",
					icon: () => h(MobileOutlined),
					props: {
						title: "请输入您的手机号码",
						rules: [{
							pattern: "^1[3456789]\\d{9}$",
							message: "手机号码格式不正确"
						}]
					}
				},
				{
					name: "邮箱",
					type: "input",
					icon: () => h(MailOutlined),
					props: {
						title: "请输入您的邮箱地址",
						rules: [{
							pattern: "^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|.(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$",
							message: "邮箱地址格式不正确"
						}]
					}
				},
				{
					name: "省市区",
					type: "address",
					icon: () => h(EnvironmentOutlined),
					props: { title: "请选择省份城市与地区" }
				}
			]
		}
	];
}
var widgetToProps = (e, n) => {
	let r = [
		{
			title: "标题",
			key: "title",
			required: !0,
			type: "textarea"
		},
		{
			title: "必填",
			key: "required",
			type: "switch",
			defaultValue: !1
		},
		{
			title: "备注/提示",
			key: "help"
		},
		{
			title: "添加分页栏",
			type: "switch",
			key: "break",
			defaultValue: !1
		}
	];
	return [
		"input",
		"select",
		"textarea"
	].includes(e.type) && (r = r.concat([{
		title: "输入框提示",
		key: "placeholder"
	}])), [
		"matrix-radio",
		"matrix-checkbox",
		"matrix-scale"
	].includes(e.type) && (r = r.concat([{
		title: "行标题",
		key: "rows",
		type: "slot"
	}])), [
		"radio",
		"checkbox",
		"select",
		"matrix-radio",
		"matrix-checkbox",
		"matrix-scale",
		"rate-radio",
		"rate-checkbox"
	].includes(e.type) && (r = r.concat([{
		title: "选项",
		key: "options",
		type: "slot"
	}])), e.type === "matrix-scale" && (r = r.concat([{
		title: "量表等级",
		type: "number",
		key: "level",
		defaultProps: {
			min: 1,
			max: 10
		},
		defaultValue: 5
	}])), e.type === "rate" && (r = r.concat([{
		title: "星星总数",
		type: "number",
		key: "count",
		defaultProps: {
			min: 1,
			max: 10
		},
		defaultValue: 5
	}, {
		title: "是否允许半选",
		type: "switch",
		key: "allowHalf",
		defaultValue: !1
	}])), e.type === "uploader" && (r = r.concat([{
		title: "最大上传数",
		key: "maxNum",
		type: "number",
		defaultValue: 1,
		defaultProps: {
			min: 1,
			max: 9
		}
	}, {
		title: "文件权限",
		key: "privacy",
		type: "radio",
		options: [{
			label: "公开",
			value: "public"
		}, {
			label: "隐私",
			value: "private"
		}],
		help: "公开:如新闻图片,通知文件等对所有人可见;隐私:如个人照片,私密文件等会进行访问限制",
		defaultValue: "public"
	}])), n && n === "quiz" && (r = r.concat([{
		title: "分值",
		key: "quiz_score",
		type: "number",
		required: !0,
		defaultValue: 1
	}]), !e.type || e.type === "input" ? r = r.concat([{
		break: !0,
		title: "正确答案",
		key: "__quiz_answer"
	}]) : e.type === "radio" ? r = r.concat([{
		break: !0,
		title: "正确答案",
		key: "__quiz_answer",
		type: "select",
		options: e.props.options?.map((e, n) => String.fromCharCode(65 + n))
	}]) : e.type === "checkbox" && (r = r.concat([{
		break: !0,
		title: "正确答案",
		key: "__quiz_answer",
		type: "select",
		options: e.props.options?.map((e, n) => String.fromCharCode(65 + n)),
		defaultProps: { mode: "multiple" }
	}])), r = r.concat([{
		title: "解析",
		key: "__quiz_analysis",
		type: "textarea"
	}])), r;
}, formItemToProps = (e, n) => {
	let r = e.props, i = {};
	return [
		"title",
		"required",
		"help",
		"break"
	].forEach((e) => {
		i[e] = r[e];
	}), n && n === "quiz" && (i.quiz_score = r.quiz_score, i.__quiz_answer = r.__quiz_answer, i.__quiz_analysis = r.__quiz_analysis), [
		"radio",
		"checkbox",
		"select",
		"rate-radio",
		"rate-checkbox"
	].includes(e.type) && (i.options = r.options), [
		"input",
		"select",
		"textarea"
	].includes(e.type) && (i.placeholder = r.placeholder), e.type === "rate" && (i.count = r.defaultProps?.count, i.allowHalf = r.defaultProps?.allowHalf), e.type === "matrix-scale" && (i.level = r.defaultProps?.level), e.type === "uploader" && (i.maxNum = r.defaultProps?.maxNum || 1, i.privacy = r.defaultProps?.extraData?.type || "private"), i;
}, propsToFormItem = (e, n, r) => {
	if (!n) return;
	let i = n.props;
	[
		"title",
		"required",
		"help",
		"break"
	].forEach((n) => {
		i[n] = e[n];
	}), r && r === "quiz" && (i.quiz_score = e.quiz_score, i.__quiz_answer = e.__quiz_answer, i.__quiz_analysis = e.__quiz_analysis), [
		"radio",
		"checkbox",
		"select",
		"rate-radio",
		"rate-checkbox"
	].includes(n.type) && (i.options = e.options), [
		"input",
		"select",
		"textarea"
	].includes(n.type) && (i.placeholder = e.placeholder), n.type === "rate" && (i.defaultProps ||= {}, i.defaultProps.count = e.count, i.defaultProps.allowHalf = e.allowHalf), n.type === "matrix-scale" && (i.defaultProps ||= {}, i.defaultProps.level = e.level), n.type === "uploader" && (i.defaultProps ||= {}, i.defaultProps.extraData || (i.defaultProps.extraData = {}), i.defaultProps.maxNum = e.maxNum, i.defaultProps.extraData.type = e.privacy);
};
const NewbieFormDesigner = withInstall_default(/* @__PURE__ */ defineComponent({
	name: "NewbieFormDesigner",
	props: {
		title: {
			type: String,
			default: ""
		},
		widgets: {
			type: Array,
			default: () => []
		},
		formItems: {
			type: [Array, Function],
			default: () => []
		},
		height: {
			type: [String, Number],
			default: "100%"
		},
		mode: {
			type: String,
			default: null
		}
	},
	emits: ["submit"],
	setup(e, { emit: n }) {
		let r = ref(null), i = reactive({
			submitForm: {},
			painterItems: [],
			dragOptions: {
				animation: 200,
				group: "designer",
				disabled: !1,
				ghostClass: "ghost"
			},
			isDragging: !1,
			currentItem: null,
			currentIndex: null,
			propsFormData: {},
			showOptionsModal: !1,
			showValueOptionsModal: !1,
			currentOptionItem: null,
			optionsValue: "",
			rateValue: ""
		}), a = () => {
			let n = [];
			n = isFunction(e.formItems) ? e.formItems() : cloneDeep(e.formItems), i.painterItems = n.map((e) => ({
				key: e.key,
				type: e.type,
				name: e.title,
				props: e
			}));
		};
		watch(() => e.formItems, () => a(), { deep: !0 }), a();
		let o = ref(getDefaultWidgets(e.mode).concat(e.widgets).map((e) => (isArray(e) && (e = { children: e }), e))), s = (e) => {
			let n = cloneDeep(e);
			return n.key = Math.random().toString(36).slice(2) + Math.random().toString(36).slice(2), n.props ||= {}, n.props.title = n.props.title || n.name, n.props.key = n.key, n.props.type = n.type, n.props.placeholder = " - ", n;
		}, c = (e) => {
			let n = s(e);
			i.painterItems.push(n), l(i.painterItems.length - 1);
		}, l = (n) => {
			i.currentItem = i.painterItems[n], i.currentIndex = n, i.propsFormData = formItemToProps(i.painterItems[n], e.mode);
		}, u = ({ newIndex: e }) => {
			e === 0 && l(0);
		}, d = (e) => {
			i.painterItems[e].key === i.currentItem?.key && (i.currentItem = null, i.currentIndex = null), i.painterItems.splice(e, 1);
		}, f = (e) => {
			if (i.currentOptionItem = e, i.currentItem.type.startsWith("rate-")) {
				let n = "", r = "", a = i.currentItem?.props[e.key] || [];
				a.forEach((e, i) => {
					isObject(e) ? (n += e.value, r += e.rate ? String(e.rate) : "") : n += e, i < a.length - 1 && (n += "\n", r += "\n");
				}), i.optionsValue = n, i.rateValue = r, i.showValueOptionsModal = !0;
			} else i.optionsValue = i.currentItem?.props[e.key]?.join("\n"), i.showOptionsModal = !0;
		}, p = () => {
			if (!i.optionsValue.trim()) {
				message.warn("请至少设置一个选项");
				return;
			}
			if (!i.currentOptionItem) return;
			let n = i.optionsValue.split("\n").filter((e) => e.trim());
			if (e.mode === "quiz" && (n = n.map((e, n) => /^[A-Z]\.\s?/.test(e) ? e : `${String.fromCharCode(65 + n)}. ${e}`)), !isEqual(n, uniq(n))) {
				message.warn("选项有重复,请检查数据");
				return;
			}
			i.currentItem.props || (i.currentItem.props = {}), i.currentItem.props[i.currentOptionItem.key] = n, i.showOptionsModal = !1;
		}, m = () => {
			if (!i.optionsValue.trim()) {
				message.warn("请至少设置一个选项");
				return;
			}
			if (!i.currentOptionItem) return;
			let e = i.optionsValue.split("\n").filter((e) => e.trim()), n = i.rateValue.split("\n");
			if (!isEqual(e, uniq(e))) {
				message.warn("选项有重复,请检查数据");
				return;
			}
			i.currentItem.props || (i.currentItem.props = {}), i.currentItem.props[i.currentOptionItem.key] = e.map((e, r) => ({
				label: e,
				value: e,
				rate: n[r] ? String(n[r]).trim() : 0
			})), i.showOptionsModal = !1, i.showValueOptionsModal = !1;
		}, g = (e) => {
			let { key: n } = e;
			n === "increase" ? i.rateValue = i.optionsValue.split("\n").map((e, n) => n + 1).join("\n") : i.rateValue = i.rateValue.split("\n").map((e) => !isNaN(e) && !isNaN(parseFloat(e)) ? n === "add1" ? Number(e) + 1 : Number(e) - 1 : e).join("\n");
		}, _ = () => {
			Modal.confirm({
				title: "清空表单",
				content: "清空表单后,所有数据将被清空,是否继续?",
				onOk: () => {
					i.painterItems = [], i.submitForm = {};
				}
			});
		}, v = () => {
			n("submit", i.painterItems?.length ? i.painterItems.map((e) => e.props) : []);
		}, y = computed(() => r.value?.getForm());
		return watch(() => y.value, (n) => {
			propsToFormItem(n, i.currentItem, e.mode);
		}, { deep: !0 }), () => {
			let n = () => o.value.map((e) => createVNode("div", { class: "widget-list-container" }, [createVNode("div", { class: "widget-list-title" }, [e.title || "默认"]), createVNode(vuedraggable_default, {
				tag: "div",
				list: e.children,
				sort: !1,
				group: {
					name: "designer",
					pull: "clone",
					put: !1
				},
				clone: s,
				handle: ".drag-handle",
				class: "widget-list",
				itemKey: "name"
			}, { item: ({ element: e }) => createVNode(Button, {
				class: "widget-item drag-handle",
				onClick: () => c(e)
			}, { default: () => [e.icon ? createVNode("span", {
				role: "img",
				class: "widget-icon"
			}, [isFunction(e.icon) ? e.icon() : e.icon]) : null, createVNode("span", { class: "widget-name" }, [e.name])] }) })]));
			return createVNode("div", {
				class: "newbie-form-designer",
				style: { height: genPixel(e.height) }
			}, [
				(() => createVNode("div", { class: "newbie-form-designer__widget-container" }, [
					createVNode("div", { class: "widget-func-container" }, [createVNode(Button, {
						type: "primary",
						icon: createVNode(SaveOutlined, null, null),
						onClick: v
					}, { default: () => [createTextVNode("保存表单")] }), createVNode(Tooltip, { title: "清空表单" }, { default: () => [createVNode(Button, {
						type: "primary",
						danger: !0,
						ghost: !0,
						icon: createVNode(DeleteOutlined, null, null),
						onClick: _
					}, null)] })]),
					createVNode(Divider, null, { default: () => [createTextVNode("组件")] }),
					createVNode("div", { class: "widget-container" }, [n()])
				]))(),
				(() => createVNode("div", { class: "newbie-form-designer__painter-container" }, [createVNode(Form, {
					labelCol: { span: 24 },
					wrapperCol: { span: 24 },
					model: i.submitForm,
					labelAlign: "left",
					class: "newbie-form"
				}, { default: () => [
					e.title ? createVNode("div", { class: "painter-title" }, [e.title]) : null,
					i.painterItems.length ? null : createVNode("div", { class: "newbie-form-designer__help-wrapper" }, [createVNode("p", null, [createVNode(SmileTwoTone, { style: { marginRight: "4px" } }, null), createTextVNode("请点击或者拖拽左侧组件至下面区域生成表单")])]),
					createVNode(TransitionGroup, null, { default: () => [createVNode(vuedraggable_default, mergeProps({
						list: i.painterItems,
						class: "painter-wrapper",
						handle: ".painter-item",
						itemKey: "key",
						key: "key"
					}, i.dragOptions, {
						onStart: () => i.isDragging = !0,
						onEnd: () => i.isDragging = !1,
						onAdd: u
					}), { item: ({ element: e, index: n }) => {
						let r = String(n + 1).padStart(2, "0") + ".";
						return createVNode("div", {
							class: `painter-item ${i.currentItem?.key === e.key ? "active" : ""}`,
							key: e.key,
							onClick: () => l(n)
						}, [
							createVNode("div", { class: "drag-handle" }, [createVNode(DragOutlined, null, null)]),
							createVNode("div", { class: "op-container" }, [createVNode("div", {
								class: "op-item",
								onClick: withModifiers(() => d(n), ["stop"])
							}, [createVNode(Tooltip, { title: "删除" }, { default: () => [createVNode(DeleteOutlined, null, null)] })])]),
							e.props.break ? createVNode(Divider, null, { default: () => "分页栏" }) : null,
							FormItem_default({
								formItemSlots: { label: () => createVNode("div", { class: "item-label" }, [createVNode("span", { class: "item-index" }, [r]), createVNode("span", { class: "item-name" }, [e.props.title])]) },
								...e.props
							}, i.submitForm, { props: {} })
						]);
					} })] })
				] })]))(),
				(() => createVNode("div", { class: "newbie-form-designer__props-container" }, [i.currentItem ? [createVNode("div", { class: "widget-name" }, [i.currentItem.icon ? createVNode("span", {
					role: "img",
					class: "widget-icon"
				}, [isFunction(i.currentItem.icon) ? i.currentItem.icon() : i.currentItem.icon]) : null, i.currentItem.name]), createVNode(NewbieForm_default, {
					ref: r,
					form: () => widgetToProps(i.currentItem, e.mode),
					cardWrapper: !1,
					closable: !1,
					data: i.propsFormData
				}, {
					options: ({ item: e }) => createVNode(FormItem, { label: e.title }, { default: () => createVNode(Button, {
						type: "primary",
						onClick: () => f(e)
					}, { default: () => "设置选项" }) }),
					rows: ({ item: e }) => createVNode(FormItem, { label: e.title }, { default: () => createVNode(Button, {
						type: "primary",
						onClick: () => f(e)
					}, { default: () => "设置行标题" }) })
				})] : createVNode("div", { class: "empty-props" }, [createVNode(Empty, { description: "未选中内容" }, null)])]))(),
				(() => createVNode(Modal, {
					open: i.showOptionsModal,
					"onUpdate:open": (e) => i.showOptionsModal = e,
					title: "选项设置",
					onOk: p
				}, { default: () => [createVNode(Alert, {
					message: e.mode === "quiz" ? "每行一个选项,选项不能重复,选项序号A, B, C, D...会自动添加" : "每行一个选项,选项不能重复",
					style: { marginBottom: "10px" }
				}, null), createVNode(Textarea, {
					value: i.optionsValue,
					"onUpdate:value": (e) => i.optionsValue = e,
					placeholder: "每行一个选项,如:\n选项一\n选项二",
					"auto-size": {
						minRows: 14,
						maxRows: 14
					}
				}, null)] }))(),
				(() => createVNode(Modal, {
					open: i.showValueOptionsModal,
					"onUpdate:open": (e) => i.showValueOptionsModal = e,
					title: "选项设置",
					onOk: m
				}, { default: () => [createVNode(Alert, {
					message: "每行一个选项,且选项不能重复",
					style: { marginBottom: "10px" }
				}, null), createVNode(Row, { gutter: 8 }, { default: () => [createVNode(Col, { span: 14 }, { default: () => [createVNode("div", null, [createTextVNode("选项")]), createVNode(Textarea, {
					value: i.optionsValue,
					"onUpdate:value": (e) => i.optionsValue = e,
					placeholder: "每行一个选项,如:\n选项一\n选项二",
					"auto-size": {
						minRows: 14,
						maxRows: 14
					}
				}, null)] }), createVNode(Col, { span: 10 }, { default: () => [createVNode(Dropdown, null, {
					default: () => createVNode("div", null, [createVNode("a", { class: "ant-dropdown-link" }, [createTextVNode("分值(不填代表0分)"), createVNode(DownOutlined, { style: {
						marginLeft: "4px",
						fontSize: "12px"
					} }, null)])]),
					overlay: () => createVNode(Menu, { onClick: g }, { default: () => [
						createVNode(MenuItem, { key: "increase" }, { default: () => "分数从 1 开始顺序递增" }),
						createVNode(MenuItem, { key: "add1" }, { default: () => "选项分数全部加 1" }),
						createVNode(MenuItem, { key: "minus1" }, { default: () => "选项分数全部减 1" })
					] })
				}), createVNode(Textarea, {
					value: i.rateValue,
					"onUpdate:value": (e) => i.rateValue = e,
					placeholder: "每行一个对应分值,如:\n1\n2",
					"auto-size": {
						minRows: 14,
						maxRows: 14
					}
				}, null)] })] })] }))()
			]);
		};
	}
})), NewbieCopy = withInstall_default(/* @__PURE__ */ defineComponent({
	name: "NewbieCopy",
	props: {
		text: {
			type: String,
			default: ""
		},
		showIcon: {
			type: Boolean,
			default: !1
		},
		customRender: {
			type: Function,
			default: null
		},
		copy: {
			type: Function,
			default: null
		}
	},
	setup(e) {
		let { copy: n } = useClipboard({ legacy: !0 }), r = async () => {
			e.copy ? await e.copy(e.text) : (await n(e.text), message.success(i18n_default.global.t("table.copy-success")));
		}, i = () => e.customRender ? createVNode("span", { class: "newbie-copy-text" }, [e.customRender(e.text)]) : createVNode("span", { class: "newbie-copy-text" }, [e.text]);
		return () => createVNode("span", {
			class: "newbie-copy",
			onClick: r
		}, [i(), createVNode("span", { class: `newbie-copy-icon ${e.showIcon ? "always-show" : ""}` }, [createVNode(CopyOutlined, null, null)])]);
	}
}));
var Point = class {
	x;
	y;
	pressure;
	time;
	constructor(e, n, r, i) {
		if (isNaN(e) || isNaN(n)) throw Error(`Point is invalid: (${e}, ${n})`);
		this.x = +e, this.y = +n, this.pressure = r || 0, this.time = i || Date.now();
	}
	distanceTo(e) {
		return Math.sqrt((this.x - e.x) ** 2 + (this.y - e.y) ** 2);
	}
	equals(e) {
		return this.x === e.x && this.y === e.y && this.pressure === e.pressure && this.time === e.time;
	}
	velocityFrom(e) {
		return this.time === e.time ? 0 : this.distanceTo(e) / (this.time - e.time);
	}
}, Bezier = class e {
	constructor(e, n, r, i, a, o) {
		this.startPoint = e, this.control2 = n, this.control1 = r, this.endPoint = i, this.startWidth = a, this.endWidth = o;
	}
	static fromPoints(n, r) {
		let i = this.calculateControlPoints(n[0], n[1], n[2]).c2, a = this.calculateControlPoints(n[1], n[2], n[3]).c1;
		return new e(n[1], i, a, n[2], r.start, r.end);
	}
	static calculateControlPoints(e, n, r) {
		let i = e.x - n.x, a = e.y - n.y, o = n.x - r.x, s = n.y - r.y, c = {
			x: (e.x + n.x) / 2,
			y: (e.y + n.y) / 2
		}, l = {
			x: (n.x + r.x) / 2,
			y: (n.y + r.y) / 2
		}, u = Math.sqrt(i * i + a * a), d = Math.sqrt(o * o + s * s), f = c.x - l.x, p = c.y - l.y, m = u + d == 0 ? 0 : d / (u + d), g = {
			x: l.x + f * m,
			y: l.y + p * m
		}, _ = n.x - g.x, v = n.y - g.y;
		return {
			c1: new Point(c.x + _, c.y + v),
			c2: new Point(l.x + _, l.y + v)
		};
	}
	length() {
		let e = 0, n, r;
		for (let i = 0; i <= 10; i += 1) {
			let a = i / 10, o = this.point(a, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x), s = this.point(a, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);
			if (i > 0) {
				let i = o - n, a = s - r;
				e += Math.sqrt(i * i + a * a);
			}
			n = o, r = s;
		}
		return e;
	}
	point(e, n, r, i, a) {
		return n * (1 - e) * (1 - e) * (1 - e) + 3 * r * (1 - e) * (1 - e) * e + 3 * i * (1 - e) * e * e + a * e * e * e;
	}
}, SignatureEventTarget = class {
	_et;
	constructor() {
		try {
			this._et = new EventTarget();
		} catch {
			this._et = document;
		}
	}
	addEventListener(e, n, r) {
		this._et.addEventListener(e, n, r);
	}
	dispatchEvent(e) {
		return this._et.dispatchEvent(e);
	}
	removeEventListener(e, n, r) {
		this._et.removeEventListener(e, n, r);
	}
};
function throttle(e, n = 250) {
	let r = 0, i = null, a, o, s, c = () => {
		r = Date.now(), i = null, a = e.apply(o, s), i || (o = null, s = []);
	};
	return function(...l) {
		let u = Date.now(), d = n - (u - r);
		return o = this, s = l, d <= 0 || d > n ? (i &&= (clearTimeout(i), null), r = u, a = e.apply(o, s), i || (o = null, s = [])) : i ||= window.setTimeout(c, d), a;
	};
}
var SignaturePad = class e extends SignatureEventTarget {
	constructor(n, r = {}) {
		super(), this.canvas = n, this.velocityFilterWeight = r.velocityFilterWeight || .7, this.minWidth = r.minWidth || .5, this.maxWidth = r.maxWidth || 2.5, this.throttle = r.throttle ?? 16, this.minDistance = r.minDistance ?? 5, this.dotSize = r.dotSize || 0, this.penColor = r.penColor || "black", this.backgroundColor = r.backgroundColor || "rgba(0,0,0,0)", this.compositeOperation = r.compositeOperation || "source-over", this.canvasContextOptions = r.canvasContextOptions ?? {}, this._strokeMoveUpdate = this.throttle ? throttle(e.prototype._strokeUpdate, this.throttle) : e.prototype._strokeUpdate, this._handleMouseDown = this._handleMouseDown.bind(this), this._handleMouseMove = this._handleMouseMove.bind(this), this._handleMouseUp = this._handleMouseUp.bind(this), this._handleTouchStart = this._handleTouchStart.bind(this), this._handleTouchMove = this._handleTouchMove.bind(this), this._handleTouchEnd = this._handleTouchEnd.bind(this), this._handlePointerDown = this._handlePointerDown.bind(this), this._handlePointerMove = this._handlePointerMove.bind(this), this._handlePointerUp = this._handlePointerUp.bind(this), this._handlePointerCancel = this._handlePointerCancel.bind(this), this._handleTouchCancel = this._handleTouchCancel.bind(this), this._ctx = n.getContext("2d", this.canvasContextOptions), this.clear(), this.on();
	}
	dotSize;
	minWidth;
	maxWidth;
	penColor;
	minDistance;
	velocityFilterWeight;
	compositeOperation;
	backgroundColor;
	throttle;
	canvasContextOptions;
	_ctx;
	_drawingStroke = !1;
	_isEmpty = !0;
	_dataUrl;
	_dataUrlOptions;
	_lastPoints = [];
	_data = [];
	_lastVelocity = 0;
	_lastWidth = 0;
	_strokeMoveUpdate;
	_strokePointerId;
	clear() {
		let { _ctx: e, canvas: n } = this;
		e.fillStyle = this.backgroundColor, e.clearRect(0, 0, n.width, n.height), e.fillRect(0, 0, n.width, n.height), this._data = [], this._reset(this._getPointGroupOptions()), this._isEmpty = !0, this._dataUrl = void 0, this._dataUrlOptions = void 0, this._strokePointerId = void 0;
	}
	redraw() {
		let e = this._data, n = this._dataUrl, r = this._dataUrlOptions;
		this.clear(), n && this.fromDataURL(n, r), this.fromData(e, { clear: !1 });
	}
	fromDataURL(e, n = {}) {
		return new Promise((r, i) => {
			let a = new Image(), o = n.ratio || window.devicePixelRatio || 1, s = n.width || this.canvas.width / o, c = n.height || this.canvas.height / o, l = n.xOffset || 0, u = n.yOffset || 0;
			this._reset(this._getPointGroupOptions()), a.onload = () => {
				this._ctx.drawImage(a, l, u, s, c), r();
			}, a.onerror = (e) => {
				i(e);
			}, a.crossOrigin = "anonymous", a.src = e, this._isEmpty = !1, this._dataUrl = e, this._dataUrlOptions = { ...n };
		});
	}
	toDataURL(e = "image/png", n) {
		switch (e) {
			case "image/svg+xml": return typeof n != "object" && (n = void 0), `data:image/svg+xml;base64,${btoa(this.toSVG(n))}`;
			default: return typeof n != "number" && (n = void 0), this.canvas.toDataURL(e, n);
		}
	}
	on() {
		this.canvas.style.touchAction = "none", this.canvas.style.msTouchAction = "none", this.canvas.style.userSelect = "none", this.canvas.style.webkitUserSelect = "none";
		let e = /Macintosh/.test(navigator.userAgent) && "ontouchstart" in document;
		window.PointerEvent && !e ? this._handlePointerEvents() : (this._handleMouseEvents(), "ontouchstart" in window && this._handleTouchEvents());
	}
	off() {
		this.canvas.style.touchAction = "auto", this.canvas.style.msTouchAction = "auto", this.canvas.style.userSelect = "auto", this.canvas.style.webkitUserSelect = "auto", this.canvas.removeEventListener("pointerdown", this._handlePointerDown), this.canvas.removeEventListener("mousedown", this._handleMouseDown), this.canvas.removeEventListener("touchstart", this._handleTouchStart), this._removeMoveUpEventListeners();
	}
	_getListenerFunctions() {
		let e = window.document === this.canvas.ownerDocument ? window : this.canvas.ownerDocument.defaultView ?? this.canvas.ownerDocument;
		return {
			addEventListener: e.addEventListener.bind(e),
			removeEventListener: e.removeEventListener.bind(e)
		};
	}
	_removeMoveUpEventListeners() {
		let { removeEventListener: e } = this._getListenerFunctions();
		e("pointermove", this._handlePointerMove), e("pointerup", this._handlePointerUp), e("pointercancel", this._handlePointerCancel), e("mousemove", this._handleMouseMove), e("mouseup", this._handleMouseUp), e("touchmove", this._handleTouchMove), e("touchend", this._handleTouchEnd), e("touchcancel", this._handleTouchCancel);
	}
	isEmpty() {
		return this._isEmpty;
	}
	fromData(e, { clear: n = !0 } = {}) {
		n && this.clear(), this._fromData(e, this._drawCurve.bind(this), this._drawDot.bind(this)), this._data = this._data.concat(e);
	}
	toData() {
		return this._data;
	}
	_isLeftButtonPressed(e, n) {
		return n ? e.buttons === 1 : (e.buttons & 1) == 1;
	}
	_pointerEventToSignatureEvent(e) {
		return {
			event: e,
			type: e.type,
			x: e.clientX,
			y: e.clientY,
			pressure: "pressure" in e ? e.pressure : 0
		};
	}
	_touchEventToSignatureEvent(e) {
		let n = e.changedTouches[0];
		return {
			event: e,
			type: e.type,
			x: n.clientX,
			y: n.clientY,
			pressure: n.force
		};
	}
	_handleMouseDown(e) {
		!this._isLeftButtonPressed(e, !0) || this._drawingStroke || this._strokeBegin(this._pointerEventToSignatureEvent(e));
	}
	_handleMouseMove(e) {
		if (!this._isLeftButtonPressed(e, !0) || !this._drawingStroke) {
			this._strokeEnd(this._pointerEventToSignatureEvent(e), !1);
			return;
		}
		this._strokeMoveUpdate(this._pointerEventToSignatureEvent(e));
	}
	_handleMouseUp(e) {
		this._isLeftButtonPressed(e) || this._strokeEnd(this._pointerEventToSignatureEvent(e));
	}
	_handleTouchStart(e) {
		e.targetTouches.length !== 1 || this._drawingStroke || (e.cancelable && e.preventDefault(), this._strokeBegin(this._touchEventToSignatureEvent(e)));
	}
	_handleTouchMove(e) {
		if (e.targetTouches.length === 1) {
			if (e.cancelable && e.preventDefault(), !this._drawingStroke) {
				this._strokeEnd(this._touchEventToSignatureEvent(e), !1);
				return;
			}
			this._strokeMoveUpdate(this._touchEventToSignatureEvent(e));
		}
	}
	_handleTouchEnd(e) {
		e.targetTouches.length === 0 && (e.cancelable && e.preventDefault(), this._strokeEnd(this._touchEventToSignatureEvent(e)));
	}
	_handlePointerCancel(e) {
		this._allowPointerId(e) && (e.preventDefault(), this._strokeEnd(this._pointerEventToSignatureEvent(e), !1));
	}
	_handleTouchCancel(e) {
		e.cancelable && e.preventDefault(), this._strokeEnd(this._touchEventToSignatureEvent(e), !1);
	}
	_getPointerId(e) {
		return e.persistentDeviceId || e.pointerId;
	}
	_allowPointerId(e, n = !1) {
		return this._strokePointerId === void 0 ? n : this._getPointerId(e) === this._strokePointerId;
	}
	_handlePointerDown(e) {
		this._drawingStroke || !this._isLeftButtonPressed(e) || !this._allowPointerId(e, !0) || (this._strokePointerId = this._getPointerId(e), e.preventDefault(), this._strokeBegin(this._pointerEventToSignatureEvent(e)));
	}
	_handlePointerMove(e) {
		if (this._allowPointerId(e)) {
			if (!this._isLeftButtonPressed(e, !0) || !this._drawingStroke) {
				this._strokeEnd(this._pointerEventToSignatureEvent(e), !1);
				return;
			}
			e.preventDefault(), this._strokeMoveUpdate(this._pointerEventToSignatureEvent(e));
		}
	}
	_handlePointerUp(e) {
		this._isLeftButtonPressed(e) || !this._allowPointerId(e) || (e.preventDefault(), this._strokeEnd(this._pointerEventToSignatureEvent(e)));
	}
	_getPointGroupOptions(e) {
		return {
			penColor: e && "penColor" in e ? e.penColor : this.penColor,
			dotSize: e && "dotSize" in e ? e.dotSize : this.dotSize,
			minWidth: e && "minWidth" in e ? e.minWidth : this.minWidth,
			maxWidth: e && "maxWidth" in e ? e.maxWidth : this.maxWidth,
			velocityFilterWeight: e && "velocityFilterWeight" in e ? e.velocityFilterWeight : this.velocityFilterWeight,
			compositeOperation: e && "compositeOperation" in e ? e.compositeOperation : this.compositeOperation
		};
	}
	_strokeBegin(e) {
		if (!this.dispatchEvent(new CustomEvent("beginStroke", {
			detail: e,
			cancelable: !0
		}))) return;
		let { addEventListener: n } = this._getListenerFunctions();
		switch (e.event.type) {
			case "mousedown":
				n("mousemove", this._handleMouseMove, { passive: !1 }), n("mouseup", this._handleMouseUp, { passive: !1 });
				break;
			case "touchstart":
				n("touchmove", this._handleTouchMove, { passive: !1 }), n("touchend", this._handleTouchEnd, { passive: !1 }), n("touchcancel", this._handleTouchCancel, { passive: !1 });
				break;
			case "pointerdown":
				n("pointermove", this._handlePointerMove, { passive: !1 }), n("pointerup", this._handlePointerUp, { passive: !1 }), n("pointercancel", this._handlePointerCancel, { passive: !1 });
				break;
			default:
		}
		this._drawingStroke = !0;
		let r = this._getPointGroupOptions(), i = {
			...r,
			points: []
		};
		this._data.push(i), this._reset(r), this._strokeUpdate(e);
	}
	_strokeUpdate(e) {
		if (!this._drawingStroke) return;
		if (this._data.length === 0) {
			this._strokeBegin(e);
			return;
		}
		this.dispatchEvent(new CustomEvent("beforeUpdateStroke", { detail: e }));
		let n = this._createPoint(e.x, e.y, e.pressure), r = this._data[this._data.length - 1], i = r.points, a = i.length > 0 && i[i.length - 1], o = a ? n.distanceTo(a) <= this.minDistance : !1, s = this._getPointGroupOptions(r);
		if (!a || !(a && o)) {
			let e = this._addPoint(n, s);
			a ? e && this._drawCurve(e, s) : this._drawDot(n, s), i.push({
				time: n.time,
				x: n.x,
				y: n.y,
				pressure: n.pressure
			});
		}
		this.dispatchEvent(new CustomEvent("afterUpdateStroke", { detail: e }));
	}
	_strokeEnd(e, n = !0) {
		this._removeMoveUpEventListeners(), this._drawingStroke && (n && this._strokeUpdate(e), this._drawingStroke = !1, this._strokePointerId = void 0, this.dispatchEvent(new CustomEvent("endStroke", { detail: e })));
	}
	_handlePointerEvents() {
		this._drawingStroke = !1, this.canvas.addEventListener("pointerdown", this._handlePointerDown, { passive: !1 });
	}
	_handleMouseEvents() {
		this._drawingStroke = !1, this.canvas.addEventListener("mousedown", this._handleMouseDown, { passive: !1 });
	}
	_handleTouchEvents() {
		this.canvas.addEventListener("touchstart", this._handleTouchStart, { passive: !1 });
	}
	_reset(e) {
		this._lastPoints = [], this._lastVelocity = 0, this._lastWidth = (e.minWidth + e.maxWidth) / 2, this._ctx.fillStyle = e.penColor, this._ctx.globalCompositeOperation = e.compositeOperation;
	}
	_createPoint(e, n, r) {
		let i = this.canvas.getBoundingClientRect();
		return new Point(e - i.left, n - i.top, r, (/* @__PURE__ */ new Date()).getTime());
	}
	_addPoint(e, n) {
		let { _lastPoints: r } = this;
		if (r.push(e), r.length > 2) {
			r.length === 3 && r.unshift(r[0]);
			let e = this._calculateCurveWidths(r[1], r[2], n), i = Bezier.fromPoints(r, e);
			return r.shift(), i;
		}
		return null;
	}
	_calculateCurveWidths(e, n, r) {
		let i = r.velocityFilterWeight * n.velocityFrom(e) + (1 - r.velocityFilterWeight) * this._lastVelocity, a = this._strokeWidth(i, r), o = {
			end: a,
			start: this._lastWidth
		};
		return this._lastVelocity = i, this._lastWidth = a, o;
	}
	_strokeWidth(e, n) {
		return Math.max(n.maxWidth / (e + 1), n.minWidth);
	}
	_drawCurveSegment(e, n, r) {
		let i = this._ctx;
		i.moveTo(e, n), i.arc(e, n, r, 0, 2 * Math.PI, !1), this._isEmpty = !1;
	}
	_drawCurve(e, n) {
		let r = this._ctx, i = e.endWidth - e.startWidth, a = Math.ceil(e.length()) * 2;
		r.beginPath(), r.fillStyle = n.penColor;
		for (let r = 0; r < a; r += 1) {
			let o = r / a, s = o * o, c = s * o, l = 1 - o, u = l * l, d = u * l, f = d * e.startPoint.x;
			f += 3 * u * o * e.control1.x, f += 3 * l * s * e.control2.x, f += c * e.endPoint.x;
			let p = d * e.startPoint.y;
			p += 3 * u * o * e.control1.y, p += 3 * l * s * e.control2.y, p += c * e.endPoint.y;
			let m = Math.min(e.startWidth + c * i, n.maxWidth);
			this._drawCurveSegment(f, p, m);
		}
		r.closePath(), r.fill();
	}
	_drawDot(e, n) {
		let r = this._ctx, i = n.dotSize > 0 ? n.dotSize : (n.minWidth + n.maxWidth) / 2;
		r.beginPath(), this._drawCurveSegment(e.x, e.y, i), r.closePath(), r.fillStyle = n.penColor, r.fill();
	}
	_fromData(e, n, r) {
		for (let i of e) {
			let { points: e } = i, a = this._getPointGroupOptions(i);
			if (e.length > 1) for (let r = 0; r < e.length; r += 1) {
				let i = e[r], o = new Point(i.x, i.y, i.pressure, i.time);
				r === 0 && this._reset(a);
				let s = this._addPoint(o, a);
				s && n(s, a);
			}
			else this._reset(a), r(e[0], a);
		}
	}
	toSVG({ includeBackgroundColor: e = !1, includeDataUrl: n = !1 } = {}) {
		let r = this._data, i = Math.max(window.devicePixelRatio || 1, 1), a = this.canvas.width / i, o = this.canvas.height / i, s = document.createElementNS("http://www.w3.org/2000/svg", "svg");
		if (s.setAttribute("xmlns", "http://www.w3.org/2000/svg"), s.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"), s.setAttribute("viewBox", `0 0 ${a} ${o}`), s.setAttribute("width", a.toString()), s.setAttribute("height", o.toString()), e && this.backgroundColor) {
			let e = document.createElement("rect");
			e.setAttribute("width", "100%"), e.setAttribute("height", "100%"), e.setAttribute("fill", this.backgroundColor), s.appendChild(e);
		}
		if (n && this._dataUrl) {
			let e = this._dataUrlOptions?.ratio || window.devicePixelRatio || 1, n = this._dataUrlOptions?.width || this.canvas.width / e, r = this._dataUrlOptions?.height || this.canvas.height / e, i = this._dataUrlOptions?.xOffset || 0, a = this._dataUrlOptions?.yOffset || 0, o = document.createElement("image");
			o.setAttribute("x", i.toString()), o.setAttribute("y", a.toString()), o.setAttribute("width", n.toString()), o.setAttribute("height", r.toString()), o.setAttribute("preserveAspectRatio", "none"), o.setAttribute("href", this._dataUrl), s.appendChild(o);
		}
		return this._fromData(r, (e, { penColor: n }) => {
			let r = document.createElement("path");
			if (!isNaN(e.control1.x) && !isNaN(e.control1.y) && !isNaN(e.control2.x) && !isNaN(e.control2.y)) {
				let i = `M ${e.startPoint.x.toFixed(3)},${e.startPoint.y.toFixed(3)} C ${e.control1.x.toFixed(3)},${e.control1.y.toFixed(3)} ${e.control2.x.toFixed(3)},${e.control2.y.toFixed(3)} ${e.endPoint.x.toFixed(3)},${e.endPoint.y.toFixed(3)}`;
				r.setAttribute("d", i), r.setAttribute("stroke-width", (e.endWidth * 2.25).toFixed(3)), r.setAttribute("stroke", n), r.setAttribute("fill", "none"), r.setAttribute("stroke-linecap", "round"), s.appendChild(r);
			}
		}, (e, { penColor: n, dotSize: r, minWidth: i, maxWidth: a }) => {
			let o = document.createElement("circle"), c = r > 0 ? r : (i + a) / 2;
			o.setAttribute("r", c.toString()), o.setAttribute("cx", e.x.toString()), o.setAttribute("cy", e.y.toString()), o.setAttribute("fill", n), s.appendChild(o);
		}), s.outerHTML;
	}
};
function _isSlot(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !isVNode(e);
}
const NewbieSignaturePad = withInstall_default(/* @__PURE__ */ defineComponent({
	name: "NewbieSignaturePad",
	props: {
		title: {
			type: String,
			default: ""
		},
		readonly: {
			type: Boolean,
			default: !1
		},
		agreement: {
			type: String,
			default: ""
		},
		preset: {
			type: String,
			default: ""
		}
	},
	emits: ["save"],
	setup(e, { emit: n, expose: r, slots: i }) {
		let { t: a } = useI18n(), o = ref(!1), s = ref(null), c = ref(null), l = ref(null), u = ref(!1), d = () => {
			o.value = !0;
		}, f = () => {
			l.value.width = c.value.offsetWidth, s.value?.fromData(s.value?.toData());
		};
		window.onresize = f;
		let p = () => {
			l.value && (f(), s.value = new SignaturePad(l.value), e.preset && s.value.fromDataURL(e.preset), e.readonly && s.value.off());
		}, g = () => {
			s.value && s.value.clear();
		}, _ = () => {
			if (!(!s.value || s.value.isEmpty())) {
				if (e.agreement && !u.value) {
					message.warn(a("signature-pad.agreement"));
					return;
				}
				n("save", s.value.toDataURL()), o.value = !1;
			}
		}, v = () => {
			o.value = !1;
		};
		return watch(o, (e) => {
			e && setTimeout(p, 100);
		}), r({ open: d }), () => {
			let n, r, s;
			return createVNode(Modal, {
				open: o.value,
				"onUpdate:open": (e) => o.value = e,
				footer: null,
				width: 600
			}, { default: () => [createVNode("div", { class: "newbie-signature-pad" }, [
				i.title || e.title ? createVNode("div", { class: "newbie-signature-pad__title" }, [i.title?.() || e.title]) : null,
				createVNode("div", {
					class: "newbie-signature-pad__canvas-container",
					ref: c
				}, [createVNode("canvas", {
					class: "newbie-signature-pad__canvas",
					ref: l
				}, null)]),
				e.agreement && !e.readonly && createVNode("div", { class: "newbie-signature-pad__agreement" }, [createVNode(Checkbox, {
					checked: u.value,
					"onUpdate:checked": (e) => u.value = e
				}, { default: () => [e.agreement] })]),
				e.readonly ? createVNode("div", { class: "newbie-signature-pad__actions" }, [createVNode(NewbieButton_default, {
					type: "default",
					onClick: v
				}, _isSlot(n = a("common.close")) ? n : { default: () => [n] })]) : createVNode("div", { class: "newbie-signature-pad__actions" }, [createVNode(NewbieButton_default, {
					type: "default",
					onClick: g,
					style: { marginRight: "4px" }
				}, _isSlot(r = a("common.clear")) ? r : { default: () => [r] }), createVNode(NewbieButton_default, {
					type: "primary",
					onClick: _
				}, _isSlot(s = a("common.save")) ? s : { default: () => [s] })])
			])] });
		};
	}
}));
var components_exports = /* @__PURE__ */ __export({
	NewbieAddress: () => NewbieAddress,
	NewbieButton: () => NewbieButton,
	NewbieCopy: () => NewbieCopy,
	NewbieEditor: () => NewbieEditor,
	NewbieForm: () => NewbieForm,
	NewbieFormDesigner: () => NewbieFormDesigner,
	NewbieList: () => NewbieList,
	NewbieModal: () => NewbieModal,
	NewbiePassword: () => NewbiePassword,
	NewbieProvider: () => NewbieProvider,
	NewbieSearch: () => NewbieSearch,
	NewbieSignaturePad: () => NewbieSignaturePad,
	NewbieTable: () => NewbieTable,
	NewbieUploader: () => NewbieUploader,
	useAddressFullCode: () => useAddressFullCode,
	useTableActions: () => useTableActions,
	useTableFile: () => useTableFile,
	useTableImage: () => useTableImage
}, 1), newbie_default = {
	install(e) {
		for (let n in e.use(i18n_default), components_exports) {
			let r = components_exports[n];
			e.use(r);
		}
	},
	config({ httpStatus: e }) {
		e && Object.keys(e).length && _configStatus(e);
	}
};
export { NewbieAddress, NewbieButton, NewbieCopy, NewbieEditor, NewbieForm, NewbieFormDesigner, NewbieList, NewbieModal, NewbiePassword, NewbieProvider, NewbieSearch, NewbieSignaturePad, NewbieTable, NewbieUploader, newbie_default as default, useAddressFullCode, useTableActions, useTableFile, useTableImage };

//# sourceMappingURL=jobsys-newbie.js.map