UNPKG

jobsys-newbie

Version:

Enhanced component based on ant-design-vue

10,152 lines 507 kB
import { A as e, C as t, D as n, E as r, F as i, I as a, L as o, M as s, T as c, _ as l, a as u, b as d, c as f, d as p, g as m, i as h, m as g, n as _, p as v, s as y, t as b, w as x, y as S } from "./hooks-B6nZTSxZ.js";
import { Fragment as C, Transition as w, TransitionGroup as T, computed as E, createElementBlock as ee, createTextVNode as D, createVNode as O, customRef as k, defineComponent as A, effectScope as te, getCurrentInstance as ne, getCurrentScope as re, h as j, inject as ie, isRef as ae, isVNode as oe, mergeProps as M, nextTick as se, onBeforeUnmount as ce, onMounted as le, onScopeDispose as ue, onUnmounted as de, openBlock as fe, provide as pe, reactive as me, readonly as he, ref as N, resolveComponent as ge, shallowReadonly as _e, shallowRef as P, toRaw as ve, toRef as ye, toRefs as be, toValue as F, unref as xe, watch as I, watchEffect as Se, withModifiers as Ce } from "vue";
import { Affix as we, Alert as Te, Badge as Ee, Button as L, Card as De, Cascader as Oe, CheckableTag as ke, Checkbox as Ae, CheckboxGroup as je, Col as Me, DatePicker as Ne, Divider as Pe, Drawer as Fe, Dropdown as Ie, Empty as Le, Flex as Re, Form as ze, FormItem as Be, FormItemRest as Ve, Image as He, ImagePreviewGroup as Ue, Input as We, InputNumber as Ge, InputPassword as Ke, List as qe, Menu as Je, MenuItem as Ye, Modal as Xe, Popconfirm as Ze, Radio as Qe, RadioGroup as $e, RangePicker as et, Rate as tt, Row as nt, Select as rt, Skeleton as it, Space as at, Spin as ot, Switch as st, Table as ct, TableSummaryCell as lt, TableSummaryRow as ut, Tag as dt, Textarea as ft, TimePicker as pt, TimeRangePicker as mt, Tooltip as ht, Transfer as gt, TreeSelect as _t, TypographyText as vt, Upload as yt, message as R } from "ant-design-vue";
import bt from "dayjs";
import { cloneDeep as xt, concat as St, debounce as Ct, every as wt, find as Tt, findIndex as Et, isArray as Dt, isBoolean as Ot, isEqual as kt, isFunction as z, isNull as At, isNumber as jt, isObject as Mt, isString as Nt, isUndefined as B, map as Pt, orderBy as Ft, pick as It, random as Lt, remove as Rt, sum as zt, uniq as Bt } from "lodash-es";
import { ArrowsAltOutlined as Vt, CalculatorOutlined as Ht, CalendarOutlined as Ut, CheckCircleOutlined as Wt, CheckSquareOutlined as Gt, ClearOutlined as Kt, ClockCircleOutlined as qt, CloseCircleOutlined as Jt, CloseOutlined as Yt, CloudUploadOutlined as Xt, CompressOutlined as Zt, CopyOutlined as Qt, DeleteOutlined as $t, DownOutlined as en, DownSquareOutlined as tn, DragOutlined as nn, EditOutlined as rn, EnvironmentOutlined as an, ExpandOutlined as on, FallOutlined as sn, FieldBinaryOutlined as cn, FileImageOutlined as ln, FilePdfOutlined as un, FormOutlined as dn, FunctionOutlined as fn, HistoryOutlined as pn, InfoCircleOutlined as mn, MailOutlined as hn, MenuOutlined as gn, MobileOutlined as _n, NumberOutlined as vn, OrderedListOutlined as yn, PictureOutlined as bn, PlusOutlined as xn, RightOutlined as Sn, RiseOutlined as Cn, SaveOutlined as wn, SearchOutlined as Tn, ShrinkOutlined as En, SmileFilled as Dn, SmileTwoTone as On, StarOutlined as kn, SwitcherOutlined as An, SyncOutlined as jn, UserOutlined as Mn } from "@ant-design/icons-vue";
//#region components/address/addressData.json
var Nn = /*#__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\":\"新星市\"}]}]}]"), Pn = /* @__PURE__ */ A({
	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: t }) {
		let n = me({
			items: e.dataSource,
			value: e.value
		});
		I(() => e.dataSource, () => {
			n.items = e.dataSource;
		}), n.items.length === 0 && (e.url ? i() : n.items = Nn);
		let i = async () => {
			let t = await r().get(e.url);
			e.afterFetched && (t = e.afterFetched(t)), n.items = t;
		}, a = (e) => {
			t("update:value", e);
		};
		return () => O(Oe, {
			value: n.value,
			"onUpdate:value": (e) => n.value = e,
			fieldNames: {
				label: "name",
				value: "code",
				children: "children"
			},
			allowClear: !0,
			placeholder: e.placeholder,
			disabled: e.disabled,
			options: n.items,
			changeOnSelect: !0,
			showSearch: !0,
			onChange: a
		}, null);
	}
});
function Fn(e, t) {
	if (e += "", e && e.length === 6) {
		if (t ||= /0000$/.test(e) ? 1 : /00$/.test(e) ? 2 : 3, t === 1) return [`${e.substr(0, 2)}0000`];
		if (t === 2) return [`${e.substr(0, 2)}0000`, `${e.substr(0, 4)}00`];
		if (t === 3) return [
			`${e.substr(0, 2)}0000`,
			`${e.substr(0, 4)}00`,
			e
		];
	}
	return [];
}
//#endregion
//#region utils/withInstall.js
var In = (e) => (e.install = (t) => {
	let n = e.name || e.__name;
	t.component(n, e);
}, e), Ln = Fn, Rn = In(Pn), zn = /* @__PURE__ */ A({
	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: t, slots: n }) {
		let r = (e) => {
			t("click", e);
		}, i = () => e.label || n.default(), a = () => e.icon && e.iconPosition === "left" ? [e.icon, i()] : e.icon && e.iconPosition === "right" ? [i(), e.icon] : [i()];
		return () => O(L, M({
			danger: e.danger,
			loading: e.fetcher.loading,
			type: e.type,
			size: e.size,
			disabled: e.disabled,
			onClick: r
		}, e.buttonProps), { default: () => a() });
	}
}), Bn = In(zn);
//#endregion
//#region components/editor/utils.js
function Vn(e) {
	let t = `请使用 '@${e}' 事件,不要放在 props 中`;
	return t += `\nPlease use '@${e}' event instead of props`, t;
}
//#endregion
//#region \0plugin-vue:export-helper
var Hn = (e, t) => {
	let n = e.__vccOpts || e;
	for (let [e, r] of t) n[e] = r;
	return n;
}, Un = A({
	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, t) {
		let n = N(null), r = P(null), i = N(""), a = (a) => {
			if (!n.value) return;
			let o = ve(e.defaultContent);
			a({
				selector: n.value,
				mode: e.mode,
				content: o || [],
				html: e.defaultHtml || e.modelValue || "",
				config: {
					...e.defaultConfig,
					onCreated(n) {
						if (r.value = n, t.emit("onCreated", n), e.defaultConfig.onCreated) {
							let e = Vn("onCreated");
							throw Error(e);
						}
					},
					onChange(n) {
						let r = n.getHtml();
						if (i.value = r, t.emit("update:modelValue", r), t.emit("onChange", n), e.defaultConfig.onChange) {
							let e = Vn("onChange");
							throw Error(e);
						}
					},
					onDestroyed(n) {
						if (t.emit("onDestroyed", n), e.defaultConfig.onDestroyed) {
							let e = Vn("onDestroyed");
							throw Error(e);
						}
					},
					onMaxLength(n) {
						if (t.emit("onMaxLength", n), e.defaultConfig.onMaxLength) {
							let e = Vn("onMaxLength");
							throw Error(e);
						}
					},
					onFocus(n) {
						if (t.emit("onFocus", n), e.defaultConfig.onFocus) {
							let e = Vn("onFocus");
							throw Error(e);
						}
					},
					onBlur(n) {
						if (t.emit("onBlur", n), e.defaultConfig.onBlur) {
							let e = Vn("onBlur");
							throw Error(e);
						}
					},
					customAlert(n, r) {
						if (t.emit("customAlert", n, r), e.defaultConfig.customAlert) {
							let e = Vn("customAlert");
							throw Error(e);
						}
					},
					customPaste: (n, r) => {
						if (e.defaultConfig.customPaste) {
							let e = Vn("customPaste");
							throw Error(e);
						}
						let i;
						return t.emit("customPaste", n, r, (e) => {
							i = e;
						}), i;
					}
				}
			});
		};
		function o(e) {
			r.value?.setHtml(e);
		}
		return le(() => {
			import("./index.esm-Denfxe5W.js").then((e) => {
				a(e.createEditor);
			});
		}), I(() => e.modelValue, (e) => {
			e !== i.value && o(e);
		}), { box: n };
	}
}), Wn = {
	ref: "box",
	style: { height: "100%" }
};
function Gn(e, t, n, r, i, a) {
	return fe(), ee("div", Wn, null, 512);
}
var Kn = /*#__PURE__*/ Hn(Un, [["render", Gn]]), qn = A({
	props: {
		editor: {
			type: Object,
			default: () => null
		},
		mode: {
			type: String,
			default: "default"
		},
		defaultConfig: {
			type: Object,
			default: () => ({})
		}
	},
	setup(e) {
		let t = N(null), n = (n) => {
			if (t.value) {
				if (n == null) throw Error("Not found instance of Editor when create <Toolbar/> component");
				import("./index.esm-Denfxe5W.js").then((r) => {
					r.DomEditor.getToolbar(n) || r.createToolbar({
						editor: n,
						selector: t.value || "<div></div>",
						mode: e.mode,
						config: e.defaultConfig
					});
				});
			}
		};
		return le(() => {
			Se(() => {
				let { editor: t } = e;
				t != null && n(t);
			});
		}), { selector: t };
	}
}), Jn = { ref: "selector" };
function Yn(e, t, n, r, i, a) {
	return fe(), ee("div", Jn, null, 512);
}
var Xn = /*#__PURE__*/ Hn(qn, [["render", Yn]]), Zn = Symbol("NEWBIE_LOCALE"), Qn = Symbol("NEWBIE_EDITOR"), $n = Symbol("NEWBIE_TABLE"), er = Symbol("NEWBIE_UPLOADER"), tr = Symbol("NEWBIE_FORM"), nr = Symbol("NEWBIE_SEARCH"), rr = /* @__PURE__ */ A({
	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: t }) {
		let { locale: n } = l();
		return I(() => e.locale, (e) => {
			e && (n.value = e);
		}, { immediate: !0 }), pe(Zn, e.locale), pe(Qn, {
			uploadUrl: "",
			...e.editor
		}), pe($n, {
			page: 1,
			pageSize: 10,
			pageKey: "page",
			pageSizeKey: "pageSize",
			afterFetched: null,
			...e.table
		}), pe(er, {
			defaultFileItem: {
				id: "id",
				name: "name",
				url: "url",
				path: "path",
				thumbUrl: "thumbUrl"
			},
			...e.uploader
		}), pe(tr, {
			format: {},
			...e.form
		}), pe(nr, {
			maskClass: "",
			inputClass: "",
			valueFormatter: null,
			...e.search
		}), () => O("div", null, [t.default?.()]);
	}
}), ir = /* @__PURE__ */ A({
	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: i }) {
		let a = ze.useInjectFormItemContext(), o = P(), s = N(""), c = N({
			excludeKeys: ["group-video", "emotion"],
			...e.config?.toolbarConfig
		}), { uploadUrl: l } = ie(Qn, () => ({})), u = N({
			placeholder: e.placeholder || _("form.please-input", { title: _("common.content") }),
			readOnly: e.disabled || e.readonly,
			MENU_CONF: { uploadImage: { async customUpload(e, n) {
				let i = new FormData();
				i.append("file", e);
				try {
					let e = await r().post(l, i);
					t(e, () => {
						let { url: t, alt: r, href: i } = e.result;
						n(t, r, i);
					});
				} catch (e) {
					console.log(e);
				}
			} } },
			...e.config?.editorConfig
		}), d = (e) => {
			o.value && o.value.setHtml(e);
		}, f = () => o?.value;
		ce(() => {
			o.value?.destroy();
		}), I(() => e.value, (e) => {
			e !== s.value && o.value && d(e);
		});
		let p = (t) => {
			o.value = t, d(e.value), t.on("fullScreen", () => {
				document.body.classList.add("fullscreen");
			}), t.on("unFullScreen", () => {
				document.body.classList.remove("fullscreen");
			}), !e.disabled && !e.readonly && (g.value = y());
		}, m = (t) => {
			let r = t.getHtml();
			t.isEmpty() && (r = ""), r !== e.value && (n("update:value", r), a.onFieldChange());
		}, h = async (e, t) => {
			switch (t) {
				case "success":
					R.success(e);
					break;
				case "info":
					R.info(e);
					break;
				case "warning":
					R.warning(e);
					break;
				case "error":
					R.error(e);
					break;
				default:
					R.info(e);
					break;
			}
		};
		i({
			setContent: d,
			getEditor: f
		});
		let g = N(), v = N(), y = () => o?.value?.destroy ? O(Xn, {
			editor: o.value,
			defaultConfig: c.value,
			style: "border-bottom: 1px solid #f0f0f0"
		}, null) : O("div", null, null), b = () => O(Kn, {
			modelValue: s.value,
			"onUpdate:modelValue": (e) => s.value = e,
			defaultConfig: u.value,
			style: "height: 400px; overflow-y: hidden",
			onOnChange: m,
			onOnCreated: p,
			onCustomAlert: h
		}, null);
		return le(() => {
			v.value = b();
		}), () => O("div", { style: "border: 1px solid #f0f0f0" }, [g.value, v.value]);
	}
}), ar = In(ir), or = (e) => At(e) || B(e) ? "auto" : isNaN(e) ? e : `${e}px`, sr = (t, n, r, i) => {
	let a = "", { uploaderProvider: o } = i;
	if (n && !B(n[t.key]) ? a = n[t.key] : B(t.defaultValue) || (a = z(t.defaultValue) ? t.defaultValue({
		submitForm: r,
		existingData: n
	}) : t.defaultValue), t.init && z(t.init) && (a = t.init({
		submitForm: r,
		value: a,
		existingData: n
	})), t.type === "number" || t.type === "slider" || t.type === "rate") a = g(a);
	else if (t.type === "select" || t.type === "remote") t.defaultProps && (t.defaultProps.mode === "multiple" || t.defaultProps.mode === "tags") ? a ||= [] : a ||= void 0;
	else if (t.type === "tree-select") t.defaultProps && (t.defaultProps.multiple === !0 || t.defaultProps.treeCheckable === !0) ? a ||= [] : a ||= void 0;
	else if (t.type === "date" || t.type === "time") a = t.defaultProps && t.defaultProps.type === "range" ? a ? [e(a[0]), e(a[1])] : [] : a ? e(a) : null;
	else if (t.type === "address") a ||= [], Dt(a) || (a = Fn(a));
	else if (t.type === "uploader") if (t.defaultProps && t.defaultProps.maxNum && t.defaultProps.maxNum > 1) a ||= [];
	else {
		let { path: e, url: t } = o.defaultFileItem;
		a ||= {
			[e]: "",
			[t]: ""
		};
	}
	else [
		"matrix-checkbox",
		"matrix-radio",
		"matrix-scale",
		"rate-radio"
	].includes(t.type) ? a ||= {} : [
		"group",
		"tag",
		"checkbox",
		"rate-checkbox"
	].includes(t.type) && (a ||= []);
	return a;
}, cr = (e, t) => {
	let n = t[e.key];
	return !(Mt(n) && !Object.keys(n).length || Dt(n) && !n.length || n === "" || n === !1 || n == null || n === 0);
}, lr = (e, t) => {
	let { t: n, locale: r } = l(), i = r.value === "en_US" ? e.title?.toLowerCase() : e.title;
	return t === "select" ? e.placeholder || n("form.please-select", { title: i }) : t === "upload" ? e.placeholder || n("form.please-upload", { title: i }) : e.placeholder || n("form.please-input", { title: i });
}, ur = (e, t) => {
	let n = Ne, r = lr(e, "select");
	return e.defaultProps && e.defaultProps.type === "range" && (n = et, r = Nt(e.placeholder) ? [e.placeholder, e.placeholder] : [r, r]), O(n, M({
		value: t[e.key],
		"onUpdate:value": (n) => t[e.key] = n,
		allowClear: !0,
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		placeholder: r,
		style: e.style || { width: or(e.width || "200px") },
		class: {
			readonly: e.readonly,
			...e.class
		}
	}, e.defaultProps), { ...e.defaultSlots });
}, dr = (e, t) => {
	let n = pt, r = lr(e, "select");
	return e.defaultProps && e.defaultProps.type === "range" && (n = mt, r = Nt(e.placeholder) ? [e.placeholder, e.placeholder] : [r, r]), O(n, M({
		value: t[e.key],
		"onUpdate:value": (n) => t[e.key] = n,
		allowClear: !0,
		placeholder: r,
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		style: e.style || { width: or(e.width || "200px") },
		class: {
			readonly: e.readonly,
			...e.class
		}
	}, e.defaultProps), { ...e.defaultSlots });
}, fr = (e, t) => {
	(t[e.key] === null || t[e.key] === "null" || t[e.key] === void 0) && (t[e.key] = ""), t[e.key] = String(t[e.key]);
	let n = {};
	e.defaultProps && (e.defaultProps.prefix && (n.prefix = () => z(e.defaultProps.prefix) ? e.defaultProps.prefix() : e.defaultProps.prefix), e.defaultProps.suffix && (n.suffix = () => z(e.defaultProps.suffix) ? e.defaultProps.suffix() : e.defaultProps.suffix), e.defaultProps.prepend && (n.addonBefore = () => z(e.defaultProps.prepend) ? e.defaultProps.prepend() : e.defaultProps.prepend), e.defaultProps.append && (n.addonAfter = () => z(e.defaultProps.append) ? e.defaultProps.append() : e.defaultProps.append));
	let r = { width: or(e.width || "200px") }, i = We;
	return (e.type === "textarea" || e.defaultProps && e.defaultProps.type === "textarea") && (i = We.TextArea, r = { width: or(e.width || "100%") }), (e.type === "password" || e.defaultProps && e.defaultProps.type === "password") && (i = We.Password), O(i, M({
		value: t[e.key],
		"onUpdate:value": (n) => t[e.key] = n,
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		placeholder: lr(e),
		style: e.style || r,
		class: {
			readonly: e.readonly,
			...e.class
		}
	}, e.defaultProps), {
		...n,
		...e.defaultSlots
	});
};
//#endregion
//#region components/form/components/Tag.jsx
function pr(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var mr = (e, t, n) => {
	Object.keys(n).length || (n.value = null);
	let r = t[e.key]?.length ? t[e.key].map((n) => O(dt, {
		key: n,
		closable: !e.disabled,
		style: { marginBottom: "10px" },
		onClose: () => {
			t[e.key] = t[e.key].filter((e) => e !== n);
		}
	}, pr(n) ? n : { default: () => [n] })) : null, i = null;
	return i = e.disabled || e.readonly ? null : e.defaultProps?.inputType === "time" ? O(pt, {
		value: n.value,
		"onUpdate:value": (e) => n.value = e,
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		format: e.defaultProps?.format || "HH:mm",
		onChange: (r) => {
			if (!r) return;
			let i = r.format(e.defaultProps?.format || "HH:mm");
			if (t[e.key].indexOf(i) !== -1) {
				R.warn("时间已存在");
				return;
			}
			t[e.key].push(i), se(() => {
				n.value = "";
			});
		}
	}, null) : e.defaultProps?.inputType === "time_range" ? O(mt, {
		value: n.value,
		"onUpdate:value": (e) => n.value = e,
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		format: e.defaultProps?.format || "HH:mm",
		onChange: (r) => {
			if (!r) return;
			let i = [r[0].format(e.defaultProps?.format || "HH:mm"), r[1].format(e.defaultProps?.format || "HH:mm")];
			if (i = i.join("至"), t[e.key].indexOf(i) !== -1) {
				R.warn("时间已存在");
				return;
			}
			t[e.key].push(i), se(() => {
				n.value = [];
			});
		}
	}, null) : O(We, {
		value: n.value,
		"onUpdate:value": (e) => n.value = e,
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		placeholder: e.placeholder || "按Enter键确认",
		style: e.style || { width: or(e.width || "200px") },
		onPressEnter: Ce((r) => {
			if (r.preventDefault(), r.keyCode === 13 && n.value) {
				if (t[e.key].indexOf(n.value) !== -1) {
					R.warn("标签已存在");
					return;
				}
				t[e.key].push(n.value), n.value = "";
			}
		}, ["stop"])
	}, { prefix: () => O(xn, null, null) }), O("div", { class: "newbie-form-tag" }, [[r, i]]);
}, hr = (e, t) => {
	let n = z(e.options) ? e.options(t) : e.options;
	return n = n.map((e) => Nt(e) || jt(e) ? {
		value: e,
		label: e
	} : e), O(rt, M({
		value: t[e.key],
		"onUpdate:value": (n) => t[e.key] = n,
		options: n,
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		allowClear: !0,
		placeholder: lr(e, "select"),
		dropdownMatchSelectWidth: !e.width,
		showSearch: !0,
		optionFilterProp: "label",
		style: e.style || (e.width ? { width: or(e.width) } : {}),
		class: {
			readonly: e.readonly,
			...e.class
		}
	}, e.defaultProps), { ...e.defaultSlots });
}, gr = (e, t) => {
	let n = z(e.options) ? e.options(t) : e.options;
	return O(_t, M({
		value: t[e.key],
		"onUpdate:value": (n) => t[e.key] = n,
		treeData: n,
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		treeDefaultExpandAll: !0,
		treeNodeFilterProp: "label",
		showSearch: !0,
		allowClear: !0,
		placeholder: lr(e, "select"),
		dropdownMatchSelectWidth: !e.width,
		style: e.style || (e.width ? { width: or(e.width) } : {}),
		class: {
			readonly: e.readonly,
			...e.class
		}
	}, e.defaultProps), { ...e.defaultSlots });
}, _r = (e, n, i) => {
	if (Object.keys(i).length || (i.fetcher = { loading: !1 }, i.options = [], i.init = !1), !i.init) {
		i.init = !0;
		let t = [];
		e.options && (t = z(e.options) ? e.options(n) : e.options, t = t.map((e) => Nt(e) || jt(e) ? {
			value: e,
			label: e
		} : e)), i.options = t;
	}
	let a = e.method || "get";
	if (["get", "post"].indexOf(a) === -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 o = Ct(async (n) => {
		if (n = n.trim(), !n) return;
		let o = await r(i.fetcher)[a](e.url, { params: {
			[e.keyword || "keyword"]: n,
			...e.params
		} });
		t(o, () => {
			e.onSearch && (o.result = e.onSearch(o.result)), i.options = o.result;
		});
	}, 1e3);
	return O(rt, M({
		value: n[e.key],
		"onUpdate:value": (t) => n[e.key] = t,
		options: i.options,
		disabled: z(e.disabled) ? e.disabled(n) : e.disabled,
		showSearch: !0,
		allowClear: !0,
		filterOption: !1,
		notFoundContent: i.fetcher.loading ? void 0 : _("common.no-content"),
		placeholder: lr(e, "select"),
		dropdownMatchSelectWidth: !e.width,
		style: e.style || (e.width ? { width: or(e.width) } : {}),
		class: {
			readonly: e.readonly,
			...e.class
		},
		onSearch: o
	}, e.defaultProps), {
		notFoundContent: () => i.fetcher.loading ? O(ot, null, null) : "",
		...e.defaultSlots
	});
}, vr = (e, t) => O(Pn, M({
	value: t[e.key],
	"onUpdate:value": (n) => t[e.key] = n,
	disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
	placeholder: lr(e, "select"),
	class: {
		readonly: e.readonly,
		...e.class
	},
	style: e.style || { width: or(e.width || "200px") }
}, e.defaultProps), null), yr = (e, t) => {
	let n = z(e.options) ? e.options(t) : e.options;
	return (jt(t[e.key]) || Nt(t[e.key])) && (t[e.key] = p(n, t[e.key], e.defaultProps?.fieldNames)), O(Oe, M({
		value: t[e.key],
		"onUpdate:value": (n) => t[e.key] = n,
		allowClear: !0,
		options: n,
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		changeOnSelect: !0,
		showSearch: { filter(e, t) {
			return t.some((t) => t.label && t.label.toLowerCase().indexOf(e.toLowerCase()) > -1);
		} },
		placeholder: lr(e, "select"),
		style: e.style || { width: or(e.width || "200px") },
		class: {
			readonly: e.readonly,
			...e.class
		}
	}, e.defaultProps), { ...e.defaultSlots });
}, br = (e, t) => (t[e.key] = Number(t[e.key]) || 0, O(Ge, M({
	value: t[e.key],
	"onUpdate:value": (n) => t[e.key] = n,
	disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
	placeholder: lr(e),
	style: e.style || { width: or(e.width) || "100px" },
	class: {
		readonly: e.readonly,
		...e.class
	}
}, e.defaultProps), { ...e.defaultSlots }));
//#endregion
//#region components/form/components/Switch.jsx
function xr(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Sr = (e, t) => {
	let n = {
		checkedChildren: () => e.options?.[0] || null,
		unCheckedChildren: () => e.options?.[1] || null
	};
	return O(st, M({
		checked: t[e.key],
		"onUpdate:checked": (n) => t[e.key] = n,
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		style: e.style || {}
	}, e.defaultProps), xr(n) ? n : { default: () => [n] });
};
//#endregion
//#region components/form/components/Radio.jsx
function Cr(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var wr = (e, t) => {
	let n, r = z(e.options) ? e.options(t) : e.options;
	return r = r.map((e) => Nt(e) || jt(e) ? {
		value: e,
		label: e
	} : e), e.readonly ? O("div", { style: { padding: "0 11px" } }, [O(dt, null, Cr(n = v(t[e.key], r)) ? n : { default: () => [n] })]) : O($e, M({
		value: t[e.key],
		"onUpdate:value": (n) => t[e.key] = n,
		optionType: "button",
		buttonStyle: "solid",
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		options: r,
		style: e.style || {}
	}, e.defaultProps), { ...e.defaultSlots });
};
//#endregion
//#region components/form/components/Checkbox.jsx
function Tr(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Er = (e, t) => {
	let n = z(e.options) ? e.options(t) : e.options;
	return n = n.map((e) => Nt(e) || jt(e) ? {
		value: e,
		label: e
	} : e), e.readonly ? O("div", { style: { padding: "0 11px" } }, [f(n, t[e.key]).map((e) => O(dt, { style: { marginRight: "5px" } }, Tr(e) ? e : { default: () => [e] }))]) : O(je, M({
		value: t[e.key],
		"onUpdate:value": (n) => t[e.key] = n,
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		options: n,
		shape: "square",
		style: e.style || {}
	}, e.defaultProps), { ...e.defaultSlots });
}, Dr = (e, t) => t[e.key] ? O("div", M({
	style: e.style || {},
	innerHTML: t[e.key]
}, e.defaultProps), null) : null, Or = /* @__PURE__ */ o((/* @__PURE__ */ i(((e, t) => {
	(function() {
		var e = function(t) {
			if (!(this instanceof e)) return new e(t);
			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 n = this;
			n.files = [], n.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, t) {
					var r = n.getOpt("maxFiles");
					alert("Please upload no more than " + r + " file" + (r === 1 ? "" : "s") + " at a time.");
				},
				minFileSize: 1,
				minFileSizeErrorCallback: function(e, t) {
					alert(e.fileName || e.name + " is too small, please upload files larger than " + r.formatSize(n.getOpt("minFileSize")) + ".");
				},
				maxFileSize: void 0,
				maxFileSizeErrorCallback: function(e, t) {
					alert(e.fileName || e.name + " is too large, please upload files less than " + r.formatSize(n.getOpt("maxFileSize")) + ".");
				},
				fileType: [],
				fileTypeErrorCallback: function(e, t) {
					alert(e.fileName || e.name + " has type not allowed, please upload files of type " + n.getOpt("fileType") + ".");
				}
			}, n.opts = t || {}, n.getOpt = function(t) {
				var n = this;
				if (t instanceof Array) {
					var i = {};
					return r.each(t, function(e) {
						i[e] = n.getOpt(e);
					}), i;
				}
				if (n instanceof f) {
					if (n.opts[t] !== void 0) return n.opts[t];
					n = n.fileObj;
				}
				if (n instanceof d) {
					if (n.opts[t] !== void 0) return n.opts[t];
					n = n.resumableObj;
				}
				if (n instanceof e) return n.opts[t] === void 0 ? n.defaults[t] : n.opts[t];
			}, n.events = [], n.on = function(e, t) {
				n.events.push(e.toLowerCase(), t);
			}, n.fire = function() {
				for (var e = [], t = 0; t < arguments.length; t++) e.push(arguments[t]);
				for (var r = e[0].toLowerCase(), t = 0; t <= n.events.length; t += 2) n.events[t] == r && n.events[t + 1].apply(n, e.slice(1)), n.events[t] == "catchall" && n.events[t + 1].apply(null, e);
				r == "fileerror" && n.fire("error", e[2], e[1]), r == "fileprogress" && n.fire("progress");
			};
			var r = {
				stopEvent: function(e) {
					e.stopPropagation(), e.preventDefault();
				},
				each: function(e, t) {
					if (e.length !== void 0) {
						for (var n = 0; n < e.length; n++) if (t(e[n]) === !1) return;
					} else for (n in e) if (t(n, e[n]) === !1) return;
				},
				generateUniqueIdentifier: function(e, t) {
					var r = n.getOpt("generateUniqueIdentifier");
					if (typeof r == "function") return r(e, t);
					var i = e.webkitRelativePath || e.fileName || e.name;
					return e.size + "-" + i.replace(/[^0-9a-zA-Z_-]/gim, "");
				},
				contains: function(e, t) {
					var n = !1;
					return r.each(e, function(e) {
						return e == t ? (n = !0, !1) : !0;
					}), n;
				},
				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, t) {
					var r = n.getOpt("target");
					if (e === "test" && n.getOpt("testTarget") && (r = n.getOpt("testTarget") === "/" ? n.getOpt("target") : n.getOpt("testTarget")), typeof r == "function") return r(t);
					var i = r.indexOf("?") < 0 ? "?" : "&", a = t.join("&");
					return r + i + a;
				}
			}, i = function(e) {
				r.stopEvent(e), e.dataTransfer && e.dataTransfer.items ? l(e.dataTransfer.items, e) : e.dataTransfer && e.dataTransfer.files && l(e.dataTransfer.files, e);
			}, a = function(e) {
				e.preventDefault();
			};
			function o(e, t, n, r) {
				var i;
				if (e.isFile) return e.file(function(e) {
					e.relativePath = t + e.name, n.push(e), r();
				});
				if (e.isDirectory ? i = e : e instanceof File && n.push(e), typeof e.webkitGetAsEntry == "function" && (i = e.webkitGetAsEntry()), i && i.isDirectory) return c(i, t + i.name + "/", n, r);
				typeof e.getAsFile == "function" && (e = e.getAsFile(), e instanceof File && (e.relativePath = t + e.name, n.push(e))), r();
			}
			function s(e, t) {
				if (!e || e.length === 0) return t();
				e[0](function() {
					s(e.slice(1), t);
				});
			}
			function c(e, t, n, r) {
				e.createReader().readEntries(function(e) {
					if (!e.length) return r();
					s(e.map(function(e) {
						return o.bind(null, e, t, n);
					}), r);
				});
			}
			function l(e, t) {
				if (e.length) {
					n.fire("beforeAdd");
					var r = [];
					s(Array.prototype.map.call(e, function(e) {
						return o.bind(null, e, "", r);
					}), function() {
						r.length && u(r, t);
					});
				}
			}
			var u = function(e, t) {
				var i = 0, a = n.getOpt([
					"maxFiles",
					"minFileSize",
					"maxFileSize",
					"maxFilesErrorCallback",
					"minFileSizeErrorCallback",
					"maxFileSizeErrorCallback",
					"fileType",
					"fileTypeErrorCallback"
				]);
				if (a.maxFiles !== void 0 && a.maxFiles < e.length + n.files.length) if (a.maxFiles === 1 && n.files.length === 1 && e.length === 1) n.removeFile(n.files[0]);
				else return a.maxFilesErrorCallback(e, i++), !1;
				var o = [], s = [], c = e.length, l = function() {
					if (!--c) {
						if (!o.length && !s.length) return;
						window.setTimeout(function() {
							n.fire("filesAdded", o, s);
						}, 0);
					}
				};
				r.each(e, function(e) {
					var c = e.name;
					if (a.fileType.length > 0) {
						var u = !1;
						for (var f in a.fileType) {
							var p = "." + a.fileType[f];
							if (c.toLowerCase().indexOf(p.toLowerCase(), c.length - p.length) !== -1) {
								u = !0;
								break;
							}
						}
						if (!u) return a.fileTypeErrorCallback(e, i++), !1;
					}
					if (a.minFileSize !== void 0 && e.size < a.minFileSize) return a.minFileSizeErrorCallback(e, i++), !1;
					if (a.maxFileSize !== void 0 && e.size > a.maxFileSize) return a.maxFileSizeErrorCallback(e, i++), !1;
					function m(r) {
						n.getFromUniqueIdentifier(r) ? s.push(e) : (function() {
							e.uniqueIdentifier = r;
							var i = new d(n, e, r);
							n.files.push(i), o.push(i), i.container = t === void 0 ? null : t.srcElement, window.setTimeout(function() {
								n.fire("fileAdded", i, t);
							}, 0);
						})(), l();
					}
					var h = r.generateUniqueIdentifier(e, t);
					h && typeof h.then == "function" ? h.then(function(e) {
						m(e);
					}, function() {
						l();
					}) : m(h);
				});
			};
			function d(e, t, n) {
				var i = this;
				i.opts = {}, i.getOpt = e.getOpt, i._prevProgress = 0, i.resumableObj = e, i.file = t, i.fileName = t.fileName || t.name, i.size = t.size, i.relativePath = t.relativePath || t.webkitRelativePath || i.fileName, i.uniqueIdentifier = n, i._pause = !1, i.container = "";
				var a = n !== void 0, o = function(e, t) {
					switch (e) {
						case "progress":
							i.resumableObj.fire("fileProgress", i, t);
							break;
						case "error":
							i.abort(), a = !0, i.chunks = [], i.resumableObj.fire("fileError", i, t);
							break;
						case "success":
							if (a) return;
							i.resumableObj.fire("fileProgress", i), i.isComplete() && i.resumableObj.fire("fileSuccess", i, t);
							break;
						case "retry":
							i.resumableObj.fire("fileRetry", i);
							break;
					}
				};
				return i.chunks = [], i.abort = function() {
					var e = 0;
					r.each(i.chunks, function(t) {
						t.status() == "uploading" && (t.abort(), e++);
					}), e > 0 && i.resumableObj.fire("fileProgress", i);
				}, i.cancel = function() {
					var e = i.chunks;
					i.chunks = [], r.each(e, function(e) {
						e.status() == "uploading" && (e.abort(), i.resumableObj.uploadNextChunk());
					}), i.resumableObj.removeFile(i), i.resumableObj.fire("fileProgress", i);
				}, i.retry = function() {
					i.bootstrap();
					var e = !1;
					i.resumableObj.on("chunkingComplete", function() {
						e || i.resumableObj.upload(), e = !0;
					});
				}, i.bootstrap = function() {
					i.abort(), a = !1, i.chunks = [], i._prevProgress = 0;
					for (var e = i.getOpt("forceChunkSize") ? Math.ceil : Math.floor, t = Math.max(e(i.file.size / i.getOpt("chunkSize")), 1), n = 0; n < t; n++) (function(e) {
						window.setTimeout(function() {
							i.chunks.push(new f(i.resumableObj, i, e, o)), i.resumableObj.fire("chunkingProgress", i, e / t);
						}, 0);
					})(n);
					window.setTimeout(function() {
						i.resumableObj.fire("chunkingComplete", i);
					}, 0);
				}, i.progress = function() {
					if (a) return 1;
					var e = 0, t = !1;
					return r.each(i.chunks, function(n) {
						n.status() == "error" && (t = !0), e += n.progress(!0);
					}), e = t || e > .99999 ? 1 : e, e = Math.max(i._prevProgress, e), i._prevProgress = e, e;
				}, i.isUploading = function() {
					var e = !1;
					return r.each(i.chunks, function(t) {
						if (t.status() == "uploading") return e = !0, !1;
					}), e;
				}, i.isComplete = function() {
					var e = !1;
					return r.each(i.chunks, function(t) {
						var n = t.status();
						if (n == "pending" || n == "uploading" || t.preprocessState === 1) return e = !0, !1;
					}), !e;
				}, i.pause = function(e) {
					e === void 0 ? i._pause = !i._pause : i._pause = e;
				}, i.isPaused = function() {
					return i._pause;
				}, i.resumableObj.fire("chunkingStart", i), i.bootstrap(), this;
			}
			function f(e, t, n, i) {
				var a = this;
				a.opts = {}, a.getOpt = e.getOpt, a.resumableObj = e, a.fileObj = t, a.fileObjSize = t.size, a.fileObjType = t.file.type, a.offset = n, a.callback = i, a.lastProgressCallback = /* @__PURE__ */ new Date(), a.tested = !1, a.retries = 0, a.pendingRetry = !1, a.preprocessState = 0;
				var o = a.getOpt("chunkSize");
				return a.loaded = 0, a.startByte = a.offset * o, a.endByte = Math.min(a.fileObjSize, (a.offset + 1) * o), a.fileObjSize - a.endByte < o && !a.getOpt("forceChunkSize") && (a.endByte = a.fileObjSize), a.xhr = null, a.test = function() {
					a.xhr = new XMLHttpRequest();
					var e = function(e) {
						a.tested = !0;
						var t = a.status();
						t == "success" ? (a.callback(t, a.message()), a.resumableObj.uploadNextChunk()) : a.send();
					};
					a.xhr.addEventListener("load", e, !1), a.xhr.addEventListener("error", e, !1), a.xhr.addEventListener("timeout", e, !1);
					var t = [], n = a.getOpt("parameterNamespace"), i = a.getOpt("query");
					typeof i == "function" && (i = i(a.fileObj, a)), r.each(i, function(e, r) {
						t.push([encodeURIComponent(n + e), encodeURIComponent(r)].join("="));
					}), t = t.concat([
						["chunkNumberParameterName", a.offset + 1],
						["chunkSizeParameterName", a.getOpt("chunkSize")],
						["currentChunkSizeParameterName", a.endByte - a.startByte],
						["totalSizeParameterName", a.fileObjSize],
						["typeParameterName", a.fileObjType],
						["identifierParameterName", a.fileObj.uniqueIdentifier],
						["fileNameParameterName", a.fileObj.fileName],
						["relativePathParameterName", a.fileObj.relativePath],
						["totalChunksParameterName", a.fileObj.chunks.length]
					].filter(function(e) {
						return a.getOpt(e[0]);
					}).map(function(e) {
						return [n + a.getOpt(e[0]), encodeURIComponent(e[1])].join("=");
					})), a.xhr.open(a.getOpt("testMethod"), r.getTarget("test", t)), a.xhr.timeout = a.getOpt("xhrTimeout"), a.xhr.withCredentials = a.getOpt("withCredentials");
					var o = a.getOpt("headers");
					typeof o == "function" && (o = o(a.fileObj, a)), r.each(o, function(e, t) {
						a.xhr.setRequestHeader(e, t);
					}), a.xhr.send(null);
				}, a.preprocessFinished = function() {
					a.preprocessState = 2, a.send();
				}, a.send = function() {
					var e = a.getOpt("preprocess");
					if (typeof e == "function") switch (a.preprocessState) {
						case 0:
							a.preprocessState = 1, e(a);
							return;
						case 1: return;
						case 2: break;
					}
					if (a.getOpt("testChunks") && !a.tested) {
						a.test();
						return;
					}
					a.xhr = new XMLHttpRequest(), a.xhr.upload.addEventListener("progress", function(e) {
						/* @__PURE__ */ new Date() - a.lastProgressCallback > a.getOpt("throttleProgressCallbacks") * 1e3 && (a.callback("progress"), a.lastProgressCallback = /* @__PURE__ */ new Date()), a.loaded = e.loaded || 0;
					}, !1), a.loaded = 0, a.pendingRetry = !1, a.callback("progress");
					var t = function(e) {
						var t = a.status();
						if (t == "success" || t == "error") a.callback(t, a.message()), a.resumableObj.uploadNextChunk();
						else {
							a.callback("retry", a.message()), a.abort(), a.retries++;
							var n = a.getOpt("chunkRetryInterval");
							n === void 0 ? a.send() : (a.pendingRetry = !0, setTimeout(a.send, n));
						}
					};
					a.xhr.addEventListener("load", t, !1), a.xhr.addEventListener("error", t, !1), a.xhr.addEventListener("timeout", t, !1);
					var n = [
						["chunkNumberParameterName", a.offset + 1],
						["chunkSizeParameterName", a.getOpt("chunkSize")],
						["currentChunkSizeParameterName", a.endByte - a.startByte],
						["totalSizeParameterName", a.fileObjSize],
						["typeParameterName", a.fileObjType],
						["identifierParameterName", a.fileObj.uniqueIdentifier],
						["fileNameParameterName", a.fileObj.fileName],
						["relativePathParameterName", a.fileObj.relativePath],
						["totalChunksParameterName", a.fileObj.chunks.length]
					].filter(function(e) {
						return a.getOpt(e[0]);
					}).reduce(function(e, t) {
						return e[a.getOpt(t[0])] = t[1], e;
					}, {}), i = a.getOpt("query");
					typeof i == "function" && (i = i(a.fileObj, a)), r.each(i, function(e, t) {
						n[e] = t;
					});
					var o = a.fileObj.file.slice ? "slice" : a.fileObj.file.mozSlice ? "mozSlice" : a.fileObj.file.webkitSlice ? "webkitSlice" : "slice", s = a.fileObj.file[o](a.startByte, a.endByte, a.getOpt("setChunkTypeFromFile") ? a.fileObj.file.type : ""), c = null, l = [], u = a.getOpt("parameterNamespace");
					if (a.getOpt("method") === "octet") c = s, r.each(n, function(e, t) {
						l.push([encodeURIComponent(u + e), encodeURIComponent(t)].join("="));
					});
					else if (c = new FormData(), r.each(n, function(e, t) {
						c.append(u + e, t), l.push([encodeURIComponent(u + e), encodeURIComponent(t)].join("="));
					}), a.getOpt("chunkFormat") == "blob") c.append(u + a.getOpt("fileParameterName"), s, a.fileObj.fileName);
					else if (a.getOpt("chunkFormat") == "base64") {
						var d = new FileReader();
						d.onload = function(e) {
							c.append(u + a.getOpt("fileParameterName"), d.result), a.xhr.send(c);
						}, d.readAsDataURL(s);
					}
					var f = r.getTarget("upload", l), p = a.getOpt("uploadMethod");
					a.xhr.open(p, f), a.getOpt("method") === "octet" && a.xhr.setRequestHeader("Content-Type", "application/octet-stream"), a.xhr.timeout = a.getOpt("xhrTimeout"), a.xhr.withCredentials = a.getOpt("withCredentials");
					var m = a.getOpt("headers");
					typeof m == "function" && (m = m(a.fileObj, a)), r.each(m, function(e, t) {
						a.xhr.setRequestHeader(e, t);
					}), a.getOpt("chunkFormat") == "blob" && a.xhr.send(c);
				}, a.abort = function() {
					a.xhr && a.xhr.abort(), a.xhr = null;
				}, a.status = function() {
					return a.pendingRetry ? "uploading" : a.xhr ? a.xhr.readyState < 4 ? "uploading" : a.xhr.status == 200 || a.xhr.status == 201 ? "success" : r.contains(a.getOpt("permanentErrors"), a.xhr.status) || a.retries >= a.getOpt("maxChunkRetries") ? "error" : (a.abort(), "pending") : "pending";
				}, a.message = function() {
					return a.xhr ? a.xhr.responseText : "";
				}, a.progress = function(e) {
					e === void 0 && (e = !1);
					var t = e ? (a.endByte - a.startByte) / a.fileObjSize : 1;
					if (a.pendingRetry) return 0;
					switch ((!a.xhr || !a.xhr.status) && (t *= .95), a.status()) {
						case "success":
						case "error": return 1 * t;
						case "pending": return 0 * t;
						default: return a.loaded / (a.endByte - a.startByte) * t;
					}
				}, this;
			}
			return n.uploadNextChunk = function() {
				var e = !1;
				if (n.getOpt("prioritizeFirstAndLastChunk") && (r.each(n.files, function(t) {
					if (t.chunks.length && t.chunks[0].status() == "pending" && t.chunks[0].preprocessState === 0) return t.chunks[0].send(), e = !0, !1;
					if (t.chunks.length > 1 && t.chunks[t.chunks.length - 1].status() == "pending" && t.chunks[t.chunks.length - 1].preprocessState === 0) return t.chunks[t.chunks.length - 1].send(), e = !0, !1;
				}), e) || (r.each(n.files, function(t) {
					if (t.isPaused() === !1 && r.each(t.chunks, function(t) {
						if (t.status() == "pending" && t.preprocessState === 0) return t.send(), e = !0, !1;
					}), e) return !1;
				}), e)) return !0;
				var t = !1;
				return r.each(n.files, function(e) {
					if (!e.isComplete()) return t = !0, !1;
				}), t || n.fire("complete"), !1;
			}, n.assignBrowse = function(e, t) {
				e.length === void 0 && (e = [e]), r.each(e, function(e) {
					var r;
					e.tagName === "INPUT" && e.type === "file" ? r = e : (r = document.createElement("input"), r.setAttribute("type", "file"), r.style.display = "none", e.addEventListener("click", function() {
						r.style.opacity = 0, r.style.display = "block", r.focus(), r.click(), r.style.display = "none";
					}, !1), e.appendChild(r));
					var i = n.getOpt("maxFiles");
					i === void 0 || i != 1 ? r.setAttribute("multiple", "multiple") : r.removeAttribute("multiple"), t ? r.setAttribute("webkitdirectory", "webkitdirectory") : r.removeAttribute("webkitdirectory");
					var a = n.getOpt("fileType");
					a !== void 0 && a.length >= 1 ? r.setAttribute("accept", a.map(function(e) {
						return "." + e;
					}).join(",")) : r.removeAttribute("accept"), r.addEventListener("change", function(e) {
						u(e.target.files, e), n.getOpt("clearInput") && (e.target.value = "");
					}, !1);
				});
			}, n.assignDrop = function(e) {
				e.length === void 0 && (e = [e]), r.each(e, function(e) {
					e.addEventListener("dragover", a, !1), e.addEventListener("dragenter", a, !1), e.addEventListener("drop", i, !1);
				});
			}, n.unAssignDrop = function(e) {
				e.length === void 0 && (e = [e]), r.each(e, function(e) {
					e.removeEventListener("dragover", a), e.removeEventListener("dragenter", a), e.removeEventListener("drop", i);
				});
			}, n.isUploading = function() {
				var e = !1;
				return r.each(n.files, function(t) {
					if (t.isUploading()) return e = !0, !1;
				}), e;
			}, n.upload = function() {
				if (!n.isUploading()) {
					n.fire("uploadStart");
					for (var e = 1; e <= n.getOpt("simultaneousUploads"); e++) n.uploadNextChunk();
				}
			}, n.pause = function() {
				r.each(n.files, function(e) {
					e.abort();
				}), n.fire("pause");
			}, n.cancel = function() {
				n.fire("beforeCancel");
				for (var e = n.files.length - 1; e >= 0; e--) n.files[e].cancel();
				n.fire("cancel");
			}, n.progress = function() {
				var e = 0, t = 0;
				return r.each(n.files, function(n) {
					e += n.progress() * n.size, t += n.size;
				}), t > 0 ? e / t : 0;
			}, n.addFile = function(e, t) {
				u([e], t);
			}, n.addFiles = function(e, t) {
				u(e, t);
			}, n.removeFile = function(e) {
				for (var t = n.files.length - 1; t >= 0; t--) n.files[t] === e && n.files.splice(t, 1);
			}, n.getFromUniqueIdentifier = function(e) {
				var t = !1;
				return r.each(n.files, function(n) {
					n.uniqueIdentifier == e && (t = n);
				}), t;
			}, n.getSize = function() {
				var e = 0;
				return r.each(n.files, function(t) {
					e += t.size;
				}), e;
			}, n.handleDropEvent = function(e) {
				i(e);
			}, n.handleChangeEvent = function(e) {
				u(e.target.files, e), e.target.value = "";
			}, n.updateQuery = function(e) {
				n.opts.query = e;
			}, this;
		};
		t === void 0 ? typeof define == "function" && define.amd ? define(function() {
			return e;
		}) : window.Resumable = e : t.exports = e;
	})();
})))(), 1);
//#endregion
//#region components/uploader/NewbieUploader.jsx
function kr(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Ar = /* @__PURE__ */ A({
	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: t }) {
		let { STATE_CODE_SUCCESS: n } = x, i = ze.useInjectFormItemContext(), a = ie(er, () => ({})), o = a.uploadUrl || "", s = a.defaultFileItem || {}, c = a.defaultPreview || null, { url: l, path: u, name: d } = s, f = me({
			fileList: [],
			previewVisible: !1,
			previewCurrent: 0,
			progress: e.multipart ? {
				strokeColor: {
					"0%": "#108ee9",
					"100%": "#87d068"
				},
				strokeWidth: 3,
				format: (e) => `${parseFloat(e.toFixed(2))}%`
			} : null
		}), p = E(() => !e.maxNum || e.maxNum === 1), m = E(() => f.fileList.length >= e.maxNum), h = E(() => e.type === "picture-card" || e.type === "picture"), g = (t) => {
			Dt(t) || (t = [t]);
			let n = t.filter((e) => e.done || !!e[u] || !!e[d]).map((t) => ({
				...It(t, Object.values(s)),
				_type: "file",
				_disk: e.disk
			}));
			return p.value ? n[0] || null : n;
		}, v = (e) => {
			if (!e) return [];
			e = Dt(e) ? e : [e], f.fileList = e.filter((e) => e[l] || e[d] || e[u]).map((e) => ({
				uid: Lt(1, 1e7),
				done: !0,
				name: e[d] || _("form.attachment"),
				url: e[l],
				_type: "file",
				...e
			})), t("update:value", g(f.fileList));
		};
		le(() => {
			v(e.value);
		}), I(() => e.value, (e) => {
			e && !Dt(e) && (e = [e]), kt(Pt(e, u).sort(), Pt(f.fileList, u).sort()) || v(e);
		});
		let y = (t) => {
			let n = t[l];
			n && (n = n.toLowerCase(), n.includes(".jpg") || n.includes(".jpeg") || n.includes(".png") || n.includes(".gif") || h.value ? (f.previewCurrent = f.fileList.findIndex((e) => e.uid === t.uid), f.previewVisible = !0) : e.preview ? e.preview(t) : c ? c(t) : location.href = t[l]);
		}, b = (e) => {
			let n = g(e);
			t("update:value", n), t("success", n), i.onFieldChange();
		}, S = ({ file: e, fileList: t }) => {
			if (t = t.map((e) => {
				if (e.status === "done" && e.response) {
					let t = e.response;
					t.result[u] ? (e = {
						...e,
						...It(t.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") b(t);
			else if (e.status === "done" && e.response?.status !== n) R.error(e.response?.result || _("form.upload-fail"));
			else if (e.status === "error" && e.error) e.error.status === 413 ? R.error(`${e.error.status}: ${_("form.upload-size-limit")}`) : R.error(e.error.message || _("form.upload-fail"));
			else if (!e.status) {
				let n = -1;
				t.forEach((t, r) => {
					t.uid === e.uid && (n = r);
				}), n >= 0 && t.splice(n, 1);
			}
			wt(t, (e) => e.done) && b(t), f.fileList = t;
		}, C = (t) => t.size > e.maxSize * 1024 * 1024 ? (R.error(_("form.upload-size-max", { size: e.maxSize })), !1) : m.value ? (R.error(_("form.upload-num-max", { num: e.maxNum })), !1) : !0, w = async ({ action: t, data: n, file: i, filename: a, headers: o, onError: s, onProgress: c, onSuccess: l, withCredentials: u }) => {
			console.log("Using uploadAction");
			let d = new FormData();
			n && Object.keys(n).forEach((e) => {
				d.append(e, n[e]);
			}), d.append(a, i), e.disk && d.append("_disk", e.disk);
			try {
				l(await r().post(t, d, {
					withCredentials: u,
					headers: o,
					onUploadProgress: ({ total: e, loaded: t }) => {
						c({ percent: parseInt(Math.round(t / e * 100).toFixed(2)) }, i);
					}
				}), i);
			} catch (e) {
				s(e);
			}
			return { abort() {
				console.log("upload progress is aborted.");
			} };
		}, T = async ({ action: t, data: n, file: r, headers: i, onError: a, onProgress: o, onSuccess: s }) => {
			n ||= {}, e.disk && (n._disk = e.disk);
			let c = new Or.default({
				chunkSize: 1 * 1024 * 1024,
				forceChunkSize: !1,
				simultaneousUploads: 3,
				testChunks: !1,
				throttleProgressCallbacks: 1,
				target: t,
				query: n,
				headers: i
			});
			c.on("fileAdded", () => {
				c.upload();
			}), c.on("fileProgress", (e) => {
				o({ percent: e.progress() * 100 });
			}), c.on("fileSuccess", (e, t) => {
				s(JSON.parse(t), e);
			}), c.on("fileError", (e) => {
				a(e);
			}), c.addFile(r);
		}, ee = () => e.disabled ? null : h.value ? m.value ? null : [O(Xt, null, null), O("div", { class: "newbie-upload-text" }, [_("form.upload")])] : !h.value && !m.value ? [O(zn, {
			label: e.uploadText || _("form.upload"),
			type: "primary",
			icon: O(Xt, null, null)
		}, null)] : null;
		return () => {
			let t, n;
			return O("div", { class: "newbie-uploader" }, [O(yt, M({
				fileList: f.fileList,
				"onUpdate:fileList": (e) => f.fileList = e,
				class: `newbie-upload ${h.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: f.progress,
				beforeUpload: C,
				customRequest: e.multipart ? T : w,
				onPreview: y,
				onChange: S
			}, e.uploadProps), kr(t = ee()) ? t : { default: () => [t] }), O(Ue, { preview: {
				visible: f.previewVisible,
				onVisibleChange: (e) => f.previewVisible = e,
				current: f.previewCurrent
			} }, kr(n = f.fileList.map((e) => O(He, {
				style: { display: "none" },
				src: e.url
			}, null))) ? n : { default: () => [n] })]);
		};
	}
}), jr = (e, t) => O(Ar, M({
	value: t[e.key],
	"onUpdate:value": (n) => t[e.key] = n,
	key: e.key,
	disabled: z(e.disabled) ? e.disabled(t) : e.disabled
}, e.defaultProps), { ...e.defaultSlots }), Mr = (e, t) => O(ir, M({
	key: e.key,
	value: t[e.key],
	"onUpdate:value": (n) => t[e.key] = n,
	readonly: e.readonly,
	disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
	placeholder: lr(e)
}, e.defaultProps), null), Nr = (e, t) => {
	let n = t[e.key];
	return n ? Dt(n) ? n.map((e) => O(dt, e.defaultProps, { default: () => e })) : O(dt, e.defaultProps, { default: () => n }) : null;
};
//#endregion
//#region node_modules/.pnpm/@vueuse+shared@14.3.0_vue@3.5.39/node_modules/@vueuse/shared/dist/index.js
function Pr(e = {}) {
	function t(e) {
		return typeof e == "function";
	}
	let n = t(e) ? {
		mounted: e,
		updated: e
	} : e, { mounted: r, unmounted: i } = n;
	if (!t(r)) return e;
	let a = /* @__PURE__ */ new WeakMap();
	return {
		...n,
		mounted(e, t, n, i) {
			let o = a.get(e) ?? te();
			a.set(e, o), o.run(() => {
				r?.(e, t, n, i);
			});
		},
		unmounted(e, n, r, o) {
			var s;
			(s = a.get(e)) == null || s.stop(), a.delete(e), t(i) && i(e, n, r, o);
		}
	};
}
function Fr(e, t) {
	return re() ? (ue(e, t), !0) : !1;
}
var Ir = typeof window < "u" && typeof document < "u";
typeof WorkerGlobalScope < "u" && globalThis instanceof WorkerGlobalScope;
var Lr = (e) => e != null, Rr = Object.prototype.toString, zr = (e) => Rr.call(e) === "[object Object]", Br = () => {}, Vr = /* @__PURE__ */ Hr();
function Hr() {
	var e, t;
	return Ir && !!(!((e = window) == null || (e = e.navigator) == null) && e.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((t = window) == null || (t = t.navigator) == null ? void 0 : t.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window?.navigator.userAgent));
}
function Ur(...e) {
	if (e.length !== 1) return ye(...e);
	let t = e[0];
	return typeof t == "function" ? he(k(() => ({
		get: t,
		set: Br
	}))) : N(t);
}
function Wr(e, t) {
	function n(...n) {
		return new Promise((r, i) => {
			Promise.resolve(e(() => t.apply(this, n), {
				fn: t,
				thisArg: this,
				args: n
			})).then(r).catch(i);
		});
	}
	return n;
}
function Gr(e, t = {}) {
	let n, r, i = Br, a = (e) => {
		clearTimeout(e), i(), i = Br;
	}, o;
	return (s) => {
		let c = F(e), l = F(t.maxWait);
		return n && a(n), c <= 0 || l !== void 0 && l <= 0 ? (r &&= (a(r), void 0), Promise.resolve(s())) : new Promise((e, u) => {
			i = t.rejectOnCancel ? u : e, o = s, l && !r && (r = setTimeout(() => {
				n && a(n), r = void 0, e(o());
			}, l)), n = setTimeout(() => {
				r && a(r), r = void 0, e(s());
			}, c);
		});
	};
}
function Kr(...e) {
	let t = 0, n, r = !0, i = Br, a, o, s, c, l;
	!ae(e[0]) && typeof e[0] == "object" ? {delay: o, trailing: s = !0, leading: c = !0, rejectOnCancel: l = !1} = e[0] : [o, s = !0, c = !0, l = !1] = e;
	let u = () => {
		n && (clearTimeout(n), n = void 0, i(), i = Br);
	};
	return (e) => {
		let d = F(o), f = Date.now() - t, p = () => a = e();
		return u(), d <= 0 ? (t = Date.now(), p()) : (f > d ? (t = Date.now(), (c || !r) && p()) : s && (a = new Promise((e, a) => {
			i = l ? a : e, n = setTimeout(() => {
				t = Date.now(), r = !0, e(p()), u();
			}, Math.max(0, d - f));
		})), !c && !n && (n = setTimeout(() => r = !0, d)), r = !1, a);
	};
}
function qr(e) {
	let t;
	function n() {
		return t ||= e(), t;
	}
	return n.reset = async () => {
		let e = t;
		t = void 0, e && await e;
	}, n;
}
function Jr(e) {
	return Array.isArray(e) ? e : [e];
}
function Yr(e) {
	return e || ne();
}
function Xr(e) {
	return ae(e) ? me(new Proxy({}, {
		get(t, n, r) {
			return xe(Reflect.get(e.value, n, r));
		},
		set(t, n, r) {
			return ae(e.value[n]) && !ae(r) ? e.value[n].value = r : e.value[n] = r, !0;
		},
		deleteProperty(t, n) {
			return Reflect.deleteProperty(e.value, n);
		},
		has(t, n) {
			return Reflect.has(e.value, n);
		},
		ownKeys() {
			return Object.keys(e.value);
		},
		getOwnPropertyDescriptor() {
			return {
				enumerable: !0,
				configurable: !0
			};
		}
	})) : me(e);
}
function Zr(e) {
	return Xr(E(e));
}
function Qr(e, ...t) {
	let n = t.flat(), r = n[0];
	return Zr(() => Object.fromEntries(typeof r == "function" ? Object.entries(be(e)).filter(([e, t]) => !r(F(t), e)) : Object.entries(be(e)).filter((e) => !n.includes(e[0]))));
}
function $r(e, t = 200, n = {}) {
	return Wr(Gr(t, n), e);
}
function ei(e, t = 200, n = !1, r = !0, i = !1) {
	return Wr(Kr(t, n, r, i), e);
}
function ti(e, t = {}) {
	if (!ae(e)) return be(e);
	let n = Array.isArray(e.value) ? Array.from({ length: e.value.length }) : {};
	for (let r in e.value) n[r] = k(() => ({
		get() {
			return e.value[r];
		},
		set(n) {
			if (F(t.replaceRef) ?? !0) if (Array.isArray(e.value)) {
				let t = [...e.value];
				t[r] = n, e.value = t;
			} else {
				let t = {
					...e.value,
					[r]: n
				};
				Object.setPrototypeOf(t, Object.getPrototypeOf(e.value)), e.value = t;
			}
			else e.value[r] = n;
		}
	}));
	return n;
}
function ni(e, t = !0, n) {
	Yr(n) ? le(e, n) : t ? e() : se(e);
}
function ri(e, t) {
	Yr(t) && de(e, t);
}
function ii(e, t, n = {}) {
	let { immediate: r = !0, immediateCallback: i = !1 } = n, a = P(!1), o;
	function s() {
		o &&= (clearTimeout(o), void 0);
	}
	function c() {
		a.value = !1, s();
	}
	function l(...n) {
		i && e(), s(), a.value = !0, o = setTimeout(() => {
			a.value = !1, o = void 0, e(...n);
		}, F(t));
	}
	return r && (a.value = !0, Ir && l()), Fr(c), {
		isPending: _e(a),
		start: l,
		stop: c
	};
}
function ai(e, t, n) {
	return I(e, t, {
		...n,
		immediate: !0
	});
}
function oi(e, t, n) {
	return I(e, t, {
		...n,
		once: !0
	});
}
//#endregion
//#region node_modules/.pnpm/@vueuse+core@14.3.0_vue@3.5.39/node_modules/@vueuse/core/dist/index.js
var si = Ir ? window : void 0;
Ir && window.document;
var ci = Ir ? window.navigator : void 0;
Ir && window.location;
function li(e) {
	let t = F(e);
	return t?.$el ?? t;
}
function V(...e) {
	let t = (e, t, n, r) => (e.addEventListener(t, n, r), () => e.removeEventListener(t, n, r)), n = E(() => {
		let t = Jr(F(e[0])).filter((e) => e != null);
		return t.every((e) => typeof e != "string") ? t : void 0;
	});
	return ai(() => [
		n.value?.map((e) => li(e)) ?? [si].filter((e) => e != null),
		Jr(F(n.value ? e[1] : e[0])),
		Jr(xe(n.value ? e[2] : e[1])),
		F(n.value ? e[3] : e[2])
	], ([e, n, r, i], a, o) => {
		if (!e?.length || !n?.length || !r?.length) return;
		let s = zr(i) ? { ...i } : i, c = e.flatMap((e) => n.flatMap((n) => r.map((r) => t(e, n, r, s))));
		o(() => {
			c.forEach((e) => e());
		});
	}, { flush: "post" });
}
var ui = !1;
function di(e, t, n = {}) {
	let { window: r = si, ignore: i = [], capture: a = !0, detectIframe: o = !1, controls: s = !1 } = n;
	if (!r) return s ? {
		stop: Br,
		cancel: Br,
		trigger: Br
	} : Br;
	if (Vr && !ui) {
		ui = !0;
		let e = { passive: !0 };
		Array.from(r.document.body.children).forEach((t) => t.addEventListener("click", Br, e)), r.document.documentElement.addEventListener("click", Br, e);
	}
	let c = !0, l = (e) => F(i).some((t) => {
		if (typeof t == "string") return Array.from(r.document.querySelectorAll(t)).some((t) => t === e.target || e.composedPath().includes(t));
		{
			let n = li(t);
			return n && (e.target === n || e.composedPath().includes(n));
		}
	});
	function u(e) {
		let t = F(e);
		return t && t.$.subTree.shapeFlag === 16;
	}
	function d(e, t) {
		let n = F(e), r = n.$.subTree && n.$.subTree.children;
		return r == null || !Array.isArray(r) ? !1 : r.some((e) => e.el === t.target || t.composedPath().includes(e.el));
	}
	let f = (n) => {
		let r = li(e);
		if (n.target != null && !(!(r instanceof Element) && u(e) && d(e, n)) && !(!r || r === n.target || n.composedPath().includes(r))) {
			if ("detail" in n && n.detail === 0 && (c = !l(n)), !c) {
				c = !0;
				return;
			}
			t(n);
		}
	}, p = !1, m = [
		V(r, "click", (e) => {
			p || (p = !0, setTimeout(() => {
				p = !1;
			}, 0), f(e));
		}, {
			passive: !0,
			capture: a
		}),
		V(r, "pointerdown", (t) => {
			let n = li(e);
			c = !l(t) && !!(n && !t.composedPath().includes(n));
		}, { passive: !0 }),
		o && V(r, "blur", (n) => {
			setTimeout(() => {
				let i = li(e), a = r.document.activeElement;
				for (; a?.shadowRoot;) a = a.shadowRoot.activeElement;
				a?.tagName === "IFRAME" && !i?.contains(r.document.activeElement) && t(n);
			}, 0);
		}, { passive: !0 })
	].filter(Boolean), h = () => m.forEach((e) => e());
	return s ? {
		stop: h,
		cancel: () => {
			c = !1;
		},
		trigger: (e) => {
			c = !0, f(e), c = !1;
		}
	} : h;
}
function fi() {
	let e = P(!1), t = ne();
	return t && le(() => {
		e.value = !0;
	}, t), e;
}
/* @__NO_SIDE_EFFECTS__ */
function pi(e) {
	let t = fi();
	return E(() => (t.value, !!e()));
}
function mi(e, t, n = {}) {
	let { window: r = si, ...i } = n, a, o = /* @__PURE__ */ pi(() => r && "MutationObserver" in r), s = () => {
		a &&= (a.disconnect(), void 0);
	}, c = I(E(() => {
		let t = Jr(F(e)).map(li).filter(Lr);
		return new Set(t);
	}), (e) => {
		s(), o.value && e.size && (a = new MutationObserver(t), e.forEach((e) => a.observe(e, i)));
	}, {
		immediate: !0,
		flush: "post"
	}), l = () => a?.takeRecords(), u = () => {
		c(), s();
	};
	return Fr(u), {
		isSupported: o,
		stop: u,
		takeRecords: l
	};
}
function hi(e, t, n = {}) {
	let { window: r = si, document: i = r?.document, flush: a = "sync" } = n;
	if (!r || !i) return Br;
	let o, s = (e) => {
		o?.(), o = e;
	}, c = Se(() => {
		let n = li(e);
		if (n) {
			let { stop: e } = mi(i, (e) => {
				e.map((e) => [...e.removedNodes]).flat().some((e) => e === n || e.contains(n)) && t(e);
			}, {
				window: r,
				childList: !0,
				subtree: !0
			});
			s(e);
		}
	}, { flush: a }), l = () => {
		c(), s();
	};
	return Fr(l), l;
}
function gi(e) {
	return typeof e == "function" ? e : typeof e == "string" ? (t) => t.key === e : Array.isArray(e) ? (t) => e.includes(t.key) : () => !0;
}
function _i(...e) {
	let t, n, r = {};
	e.length === 3 ? (t = e[0], n = e[1], r = e[2]) : e.length === 2 ? typeof e[1] == "object" ? (t = !0, n = e[0], r = e[1]) : (t = e[0], n = e[1]) : (t = !0, n = e[0]);
	let { target: i = si, eventName: a = "keydown", passive: o = !1, dedupe: s = !1 } = r, c = gi(t);
	return V(i, a, (e) => {
		e.repeat && F(s) || c(e) && n(e);
	}, o);
}
var vi = 500, yi = 10;
function bi(e, t, n) {
	var r, i;
	let a = E(() => li(e)), o, s, c, l = !1;
	function u() {
		o &&= (clearTimeout(o), void 0), s = void 0, c = void 0, l = !1;
	}
	function d(e) {
		let t = n?.delay;
		return typeof t == "function" ? t(e) : t ?? vi;
	}
	function f(e) {
		var t, r, i;
		let [o, d, f] = [
			c,
			s,
			l
		];
		if (u(), !n?.onMouseUp || !d || !o || !(n == null || (t = n.modifiers) == null) && t.self && e.target !== a.value) return;
		!(n == null || (r = n.modifiers) == null) && r.prevent && e.preventDefault(), !(n == null || (i = n.modifiers) == null) && i.stop && e.stopPropagation();
		let p = e.x - d.x, m = e.y - d.y, h = Math.sqrt(p * p + m * m);
		n.onMouseUp(e.timeStamp - o, h, f, e);
	}
	function p(e) {
		var r, i, f;
		!(n == null || (r = n.modifiers) == null) && r.self && e.target !== a.value || (u(), !(n == null || (i = n.modifiers) == null) && i.prevent && e.preventDefault(), !(n == null || (f = n.modifiers) == null) && f.stop && e.stopPropagation(), s = {
			x: e.x,
			y: e.y
		}, c = e.timeStamp, o = setTimeout(() => {
			l = !0, t(e);
		}, d(e)));
	}
	function m(e) {
		var t, r, i;
		if (!(n == null || (t = n.modifiers) == null) && t.self && e.target !== a.value || !s || n?.distanceThreshold === !1) return;
		!(n == null || (r = n.modifiers) == null) && r.prevent && e.preventDefault(), !(n == null || (i = n.modifiers) == null) && i.stop && e.stopPropagation();
		let o = e.x - s.x, c = e.y - s.y;
		Math.sqrt(o * o + c * c) >= (n?.distanceThreshold ?? yi) && u();
	}
	let h = {
		capture: n == null || (r = n.modifiers) == null ? void 0 : r.capture,
		once: n == null || (i = n.modifiers) == null ? void 0 : i.once
	}, g = [
		V(a, "pointerdown", p, h),
		V(a, "pointermove", m, h),
		V(a, ["pointerup", "pointerleave"], f, h)
	];
	return () => g.forEach((e) => e());
}
function xi(e, t = {}) {
	let { controls: n = !1, navigator: r = ci } = t, i = /* @__PURE__ */ pi(() => r && "permissions" in r), a = P(), o = typeof e == "string" ? { name: e } : e, s = P(), c = () => {
		s.value = a.value?.state ?? "prompt";
	};
	V(a, "change", c, { passive: !0 });
	let l = qr(async () => {
		if (i.value) {
			if (!a.value) try {
				a.value = await r.permissions.query(o);
			} catch {
				a.value = void 0;
			} finally {
				c();
			}
			if (n) return ve(a.value);
		}
	});
	return l(), n ? {
		state: s,
		isSupported: i,
		query: l
	} : s;
}
function Si(e = {}) {
	let { navigator: t = ci, read: n = !1, source: r, copiedDuring: i = 1500, legacy: a = !1 } = e, o = /* @__PURE__ */ pi(() => t && "clipboard" in t), s = xi("clipboard-read"), c = xi("clipboard-write"), l = E(() => o.value || a), u = P(""), d = P(!1), f = P(!1), p = ii(() => d.value = !1, i, { immediate: !1 }), m = 0;
	async function h() {
		let e = !(o.value && b(s.value));
		if (!e) try {
			u.value = await t.clipboard.readText();
		} catch {
			e = !0;
		}
		e && (u.value = y());
	}
	l.value && n && V(["copy", "cut"], h, { passive: !0 });
	async function g(e) {
		let n = e ?? F(r);
		if (l.value && n != null) {
			f.value = !0;
			let e = !(o.value && b(c.value));
			if (!e) try {
				let e = _(n);
				await t.clipboard.write([e]);
			} catch {
				e = !0;
			}
			if (e) if (typeof n == "string") u.value = n, v(n);
			else {
				let e = ++m, t = await n();
				t != null && e === m && (u.value = t, v(t));
			}
			d.value = !0, p.start(), f.value = !1;
		}
	}
	function _(e) {
		return typeof e == "string" ? (u.value = e, new ClipboardItem({ "text/plain": e })) : new ClipboardItem({ "text/plain": e().then((e = "") => (u.value = e, new Blob([e], { type: "text/plain" }))) });
	}
	function v(e) {
		let t = document.createElement("textarea");
		t.value = e, t.style.position = "absolute", t.style.opacity = "0", t.setAttribute("readonly", ""), document.body.appendChild(t), t.select(), document.execCommand("copy"), t.remove();
	}
	function y() {
		var e, t;
		return ((e = document) == null || (t = e.getSelection) == null || (t = t.call(e)) == null ? void 0 : t.toString()) ?? "";
	}
	function b(e) {
		return e === "granted" || e === "prompt";
	}
	return {
		copyPending: _e(f),
		isSupported: l,
		text: _e(u),
		copied: _e(d),
		copy: g
	};
}
var Ci = {
	speed: 2,
	margin: 30,
	direction: "both"
};
function wi(e) {
	e.scrollLeft > e.scrollWidth - e.clientWidth && (e.scrollLeft = Math.max(0, e.scrollWidth - e.clientWidth)), e.scrollTop > e.scrollHeight - e.clientHeight && (e.scrollTop = Math.max(0, e.scrollHeight - e.clientHeight));
}
function Ti(e, t = {}) {
	let { pointerTypes: n, preventDefault: r, stopPropagation: i, exact: a, onMove: o, onEnd: s, onStart: c, initialValue: l, axis: u = "both", draggingElement: d = si, containerElement: f, handle: p = e, buttons: m = [0], restrictInView: h, autoScroll: g = !1 } = t, _ = N(F(l) ?? {
		x: 0,
		y: 0
	}), v = N(), y = (e) => n ? n.includes(e.pointerType) : !0, b = (e) => {
		F(r) && e.preventDefault(), F(i) && e.stopPropagation();
	}, x = F(g), S = typeof x == "object" ? {
		speed: F(x.speed) ?? Ci.speed,
		margin: F(x.margin) ?? Ci.margin,
		direction: x.direction ?? Ci.direction
	} : Ci, C = (e) => typeof e == "number" ? [e, e] : [e.x, e.y], w = (e, t, n) => {
		let { clientWidth: r, clientHeight: i, scrollLeft: a, scrollTop: o, scrollWidth: s, scrollHeight: c } = e, [l, u] = C(S.margin), [d, f] = C(S.speed), p = 0, m = 0;
		(S.direction === "x" || S.direction === "both") && (n.x < l && a > 0 ? p = -d : n.x + t.width > r - l && a < s - r && (p = d)), (S.direction === "y" || S.direction === "both") && (n.y < u && o > 0 ? m = -f : n.y + t.height > i - u && o < c - i && (m = f)), (p || m) && e.scrollBy({
			left: p,
			top: m,
			behavior: "auto"
		});
	}, T = null, ee = () => {
		let t = F(f);
		t && !T && (T = setInterval(() => {
			let n = F(e).getBoundingClientRect(), { x: r, y: i } = _.value, a = {
				x: r - t.scrollLeft,
				y: i - t.scrollTop
			};
			a.x >= 0 && a.y >= 0 && (w(t, n, a), a.x += t.scrollLeft, a.y += t.scrollTop, _.value = a);
		}, 1e3 / 60));
	}, D = () => {
		T &&= (clearInterval(T), null);
	}, O = (e, t, n, r) => {
		let [i, a] = typeof n == "number" ? [n, n] : [n.x, n.y], { clientWidth: o, clientHeight: s } = t;
		return e.x < i || e.x + r.width > o - i || e.y < a || e.y + r.height > s - a;
	};
	F(g) && I(_, () => {
		if (F(t.disabled) || !v.value) return;
		let n = F(f);
		if (!n) return;
		let r = F(e).getBoundingClientRect(), { x: i, y: a } = _.value;
		O({
			x: i - n.scrollLeft,
			y: a - n.scrollTop
		}, n, S.margin, r) ? ee() : D();
	});
	let k = (n) => {
		var r;
		if (!F(m).includes(n.button) || F(t.disabled) || !y(n) || F(a) && n.target !== F(e)) return;
		let i = F(f), o = i == null || (r = i.getBoundingClientRect) == null ? void 0 : r.call(i), s = F(e).getBoundingClientRect(), l = {
			x: n.clientX - (i ? s.left - o.left + (g ? 0 : i.scrollLeft) : s.left),
			y: n.clientY - (i ? s.top - o.top + (g ? 0 : i.scrollTop) : s.top)
		};
		c?.(l, n) !== !1 && (v.value = l, b(n));
	}, A = (n) => {
		if (F(t.disabled) || !y(n) || !v.value) return;
		let r = F(f);
		r instanceof HTMLElement && wi(r);
		let i = F(e).getBoundingClientRect(), { x: a, y: s } = _.value;
		if ((u === "x" || u === "both") && (a = n.clientX - v.value.x, r && (a = Math.min(Math.max(0, a), r.scrollWidth - i.width))), (u === "y" || u === "both") && (s = n.clientY - v.value.y, r && (s = Math.min(Math.max(0, s), r.scrollHeight - i.height))), F(g) && r && (T === null && w(r, i, {
			x: a,
			y: s
		}), a += r.scrollLeft, s += r.scrollTop), r && (h || g)) {
			if (u !== "y") {
				let e = a - r.scrollLeft;
				e < 0 ? a = r.scrollLeft : e > r.clientWidth - i.width && (a = r.clientWidth - i.width + r.scrollLeft);
			}
			if (u !== "x") {
				let e = s - r.scrollTop;
				e < 0 ? s = r.scrollTop : e > r.clientHeight - i.height && (s = r.clientHeight - i.height + r.scrollTop);
			}
		}
		_.value = {
			x: a,
			y: s
		}, o?.(_.value, n), b(n);
	}, te = (e) => {
		F(t.disabled) || !y(e) || v.value && (v.value = void 0, g && D(), s?.(_.value, e), b(e));
	};
	if (Ir) {
		let e = () => ({
			capture: t.capture ?? !0,
			passive: !F(r)
		});
		V(p, "pointerdown", k, e), V(d, "pointermove", A, e), V(d, "pointerup", te, e);
	}
	return {
		...ti(_),
		position: _,
		isDragging: E(() => !!v.value),
		style: E(() => `
      left: ${_.value.x}px;
      top: ${_.value.y}px;
      ${g ? "text-wrap: nowrap;" : ""}
    `)
	};
}
function Ei(e, t, n = {}) {
	let { window: r = si, ...i } = n, a, o = /* @__PURE__ */ pi(() => r && "ResizeObserver" in r), s = () => {
		a &&= (a.disconnect(), void 0);
	}, c = I(E(() => {
		let t = F(e);
		return Array.isArray(t) ? t.map((e) => li(e)) : [li(t)];
	}), (e) => {
		if (s(), o.value && r) {
			a = new ResizeObserver(t);
			for (let t of e) t && a.observe(t, i);
		}
	}, {
		immediate: !0,
		flush: "post"
	}), l = () => {
		s(), c();
	};
	return Fr(l), {
		isSupported: o,
		stop: l
	};
}
function Di(e, t = {}) {
	let { reset: n = !0, windowResize: r = !0, windowScroll: i = !0, immediate: a = !0, updateTiming: o = "sync" } = t, s = P(0), c = P(0), l = P(0), u = P(0), d = P(0), f = P(0), p = P(0), m = P(0);
	function h() {
		let t = li(e);
		if (!t) {
			n && (s.value = 0, c.value = 0, l.value = 0, u.value = 0, d.value = 0, f.value = 0, p.value = 0, m.value = 0);
			return;
		}
		let r = t.getBoundingClientRect();
		s.value = r.height, c.value = r.bottom, l.value = r.left, u.value = r.right, d.value = r.top, f.value = r.width, p.value = r.x, m.value = r.y;
	}
	function g() {
		o === "sync" ? h() : o === "next-frame" && requestAnimationFrame(() => h());
	}
	return Ei(e, g), I(() => li(e), (e) => !e && g()), mi(e, g, { attributeFilter: ["style", "class"] }), i && V("scroll", g, {
		capture: !0,
		passive: !0
	}), r && V("resize", g, { passive: !0 }), ni(() => {
		a && g();
	}), {
		height: s,
		bottom: c,
		left: l,
		right: u,
		top: d,
		width: f,
		x: p,
		y: m,
		update: g
	};
}
function Oi(e, t = {}) {
	let { delayEnter: n = 0, delayLeave: r = 0, triggerOnRemoval: i = !1, window: a = si } = t, o = P(!1), s, c = (e) => {
		let t = e ? n : r;
		s &&= (clearTimeout(s), void 0), t ? s = setTimeout(() => o.value = e, t) : o.value = e;
	};
	return a ? (V(e, "mouseenter", () => c(!0), { passive: !0 }), V(e, "mouseleave", () => c(!1), { passive: !0 }), i && hi(E(() => li(e)), () => c(!1)), o) : o;
}
function ki(e, t = {
	width: 0,
	height: 0
}, n = {}) {
	let { window: r = si, box: i = "content-box" } = n, a = E(() => {
		var t;
		return (t = li(e)) == null || (t = t.namespaceURI) == null ? void 0 : t.includes("svg");
	}), o = P(t.width), s = P(t.height), { stop: c } = Ei(e, ([t]) => {
		let n = i === "border-box" ? t.borderBoxSize : i === "content-box" ? t.contentBoxSize : t.devicePixelContentBoxSize;
		if (r && a.value) {
			let t = li(e);
			if (t) {
				let e = t.getBoundingClientRect();
				o.value = e.width, s.value = e.height;
			}
		} else if (n) {
			let e = Jr(n);
			o.value = e.reduce((e, { inlineSize: t }) => e + t, 0), s.value = e.reduce((e, { blockSize: t }) => e + t, 0);
		} else o.value = t.contentRect.width, s.value = t.contentRect.height;
	}, n);
	ni(() => {
		let n = li(e);
		n && (o.value = "offsetWidth" in n ? n.offsetWidth : t.width, s.value = "offsetHeight" in n ? n.offsetHeight : t.height);
	});
	let l = I(() => li(e), (e) => {
		o.value = e ? t.width : 0, s.value = e ? t.height : 0;
	});
	function u() {
		c(), l();
	}
	return {
		width: o,
		height: s,
		stop: u
	};
}
function Ai(e, t, n = {}) {
	let { root: r, rootMargin: i, threshold: a = 0, window: o = si, immediate: s = !0 } = n, c = /* @__PURE__ */ pi(() => o && "IntersectionObserver" in o), l = E(() => Jr(F(e)).map(li).filter(Lr)), u = Br, d = P(s), f = c.value ? I(() => [
		l.value,
		li(r),
		F(i),
		d.value
	], ([e, n, r]) => {
		if (u(), !d.value || !e.length) return;
		let i = new IntersectionObserver(t, {
			root: li(n),
			rootMargin: r,
			threshold: a
		});
		e.forEach((e) => e && i.observe(e)), u = () => {
			i.disconnect(), u = Br;
		};
	}, {
		immediate: s,
		flush: "post"
	}) : Br, p = () => {
		u(), f(), d.value = !1;
	};
	return Fr(p), {
		isSupported: c,
		isActive: d,
		pause() {
			u(), d.value = !1;
		},
		resume() {
			d.value = !0;
		},
		stop: p
	};
}
function ji(e, t = {}) {
	let { window: n = si, scrollTarget: r, threshold: i = 0, rootMargin: a, once: o = !1, initialValue: s = !1 } = t, c = P(s), l = Ai(e, (e) => {
		let t = c.value, n = 0;
		for (let r of e) r.time >= n && (n = r.time, t = r.isIntersecting);
		c.value = t, o && oi(c, () => {
			l.stop();
		});
	}, {
		root: r,
		window: n,
		threshold: i,
		rootMargin: a
	});
	return t.controls ? {
		...l,
		isVisible: c
	} : c;
}
function Mi(e) {
	return typeof Window < "u" && e instanceof Window ? e.document.documentElement : typeof Document < "u" && e instanceof Document ? e.documentElement : e;
}
var Ni = 1;
function Pi(e, t = {}) {
	let { throttle: n = 0, idle: r = 200, onStop: i = Br, onScroll: a = Br, offset: o = {
		left: 0,
		right: 0,
		top: 0,
		bottom: 0
	}, observe: s = { mutation: !1 }, eventListenerOptions: c = {
		capture: !1,
		passive: !0
	}, behavior: l = "auto", window: u = si, onError: d = (e) => {
		console.error(e);
	} } = t, f = typeof s == "boolean" ? { mutation: s } : s, p = P(0), m = P(0), h = E({
		get() {
			return p.value;
		},
		set(e) {
			_(e, void 0);
		}
	}), g = E({
		get() {
			return m.value;
		},
		set(e) {
			_(void 0, e);
		}
	});
	function _(t, n) {
		var r, i;
		if (!u) return;
		let a = F(e);
		if (!a) return;
		(r = a instanceof Document ? u.document.body : a) == null || r.scrollTo({
			top: F(n) ?? g.value,
			left: F(t) ?? h.value,
			behavior: F(l)
		});
		let o = (a == null || (i = a.document) == null ? void 0 : i.documentElement) || a?.documentElement || a;
		h != null && (p.value = o.scrollLeft), g != null && (m.value = o.scrollTop);
	}
	let v = P(!1), y = me({
		left: !0,
		right: !1,
		top: !0,
		bottom: !1
	}), b = me({
		left: !1,
		right: !1,
		top: !1,
		bottom: !1
	}), x = (e) => {
		v.value && (v.value = !1, b.left = !1, b.right = !1, b.top = !1, b.bottom = !1, i(e));
	}, S = $r(x, n + r), C = (e) => {
		var t;
		if (!u) return;
		let n = (e == null || (t = e.document) == null ? void 0 : t.documentElement) || e?.documentElement || li(e), { display: r, flexDirection: i, direction: a } = u.getComputedStyle(n), s = a === "rtl" ? -1 : 1, c = n.scrollLeft;
		b.left = c < p.value, b.right = c > p.value;
		let l = Math.abs(c * s) <= (o.left || 0), d = Math.abs(c * s) + n.clientWidth >= n.scrollWidth - (o.right || 0) - Ni;
		r === "flex" && i === "row-reverse" ? (y.left = d, y.right = l) : (y.left = l, y.right = d), p.value = c;
		let f = n.scrollTop;
		e === u.document && !f && (f = u.document.body.scrollTop), b.top = f < m.value, b.bottom = f > m.value;
		let h = Math.abs(f) <= (o.top || 0), g = Math.abs(f) + n.clientHeight >= n.scrollHeight - (o.bottom || 0) - Ni;
		r === "flex" && i === "column-reverse" ? (y.top = g, y.bottom = h) : (y.top = h, y.bottom = g), m.value = f;
	}, w = (e) => {
		u && (C(e.target.documentElement ?? e.target), v.value = !0, S(e), a(e));
	};
	return V(e, "scroll", n ? ei(w, n, !0, !1) : w, c), ni(() => {
		try {
			let t = F(e);
			if (!t) return;
			C(t);
		} catch (e) {
			d(e);
		}
	}), f?.mutation && e != null && e !== u && e !== document && mi(e, () => {
		let t = F(e);
		t && C(t);
	}, {
		attributes: !0,
		childList: !0,
		subtree: !0
	}), V(e, "scrollend", x, c), {
		x: h,
		y: g,
		isScrolling: v,
		arrivedState: y,
		directions: b,
		measure() {
			let t = F(e);
			u && t && C(t);
		}
	};
}
function Fi(e, t, n = {}) {
	let { direction: r = "bottom", interval: i = 100, canLoadMore: a = () => !0 } = n, o = me(Pi(e, {
		...n,
		offset: {
			[r]: n.distance ?? 0,
			...n.offset
		}
	})), s = P(), c = E(() => !!s.value), l = E(() => Mi(F(e))), u = ji(l), d = E(() => l.value ? a(l.value) : !1);
	function f() {
		if (o.measure(), !l.value || !u.value || !d.value || s.value) return;
		let { scrollHeight: e, clientHeight: n, scrollWidth: a, clientWidth: c } = l.value, p = r === "bottom" || r === "top" ? e <= n : a <= c;
		(o.arrivedState[r] || p) && (s.value = Promise.all([t(o), new Promise((e) => setTimeout(e, i))]).finally(() => {
			s.value = null, se(() => f());
		}));
	}
	return ri(I(() => [
		o.arrivedState[r],
		u.value,
		d.value
	], f, {
		immediate: !0,
		flush: "post"
	})), {
		isLoading: c,
		reset() {
			se(() => f());
		}
	};
}
var Ii = {
	page: (e) => [e.pageX, e.pageY],
	client: (e) => [e.clientX, e.clientY],
	screen: (e) => [e.screenX, e.screenY],
	movement: (e) => e instanceof MouseEvent ? [e.movementX, e.movementY] : null
};
function Li(e = {}) {
	let { type: t = "page", touch: n = !0, resetOnTouchEnds: r = !1, initialValue: i = {
		x: 0,
		y: 0
	}, window: a = si, target: o = a, scroll: s = !0, eventFilter: c } = e, l = null, u = 0, d = 0, f = P(i.x), p = P(i.y), m = P(null), h = typeof t == "function" ? t : Ii[t], g = (e) => {
		let t = h(e);
		l = e, t && ([f.value, p.value] = t, m.value = "mouse"), a && (u = a.scrollX, d = a.scrollY);
	}, _ = (e) => {
		if (e.touches.length > 0) {
			let t = h(e.touches[0]);
			t && ([f.value, p.value] = t, m.value = "touch");
		}
	}, v = () => {
		if (!l || !a) return;
		let e = h(l);
		l instanceof MouseEvent && e && (f.value = e[0] + a.scrollX - u, p.value = e[1] + a.scrollY - d);
	}, y = () => {
		f.value = i.x, p.value = i.y;
	}, b = c ? (e) => c(() => g(e), {}) : (e) => g(e), x = c ? (e) => c(() => _(e), {}) : (e) => _(e), S = c ? () => c(() => v(), {}) : () => v();
	if (o) {
		let e = { passive: !0 };
		V(o, ["mousemove", "dragover"], b, e), n && t !== "movement" && (V(o, ["touchstart", "touchmove"], x, e), r && V(o, "touchend", y, e)), s && t === "page" && V(a, "scroll", S, e);
	}
	return {
		x: f,
		y: p,
		sourceType: m
	};
}
function Ri(e, t = {}) {
	let { windowResize: n = !0, windowScroll: r = !0, handleOutside: i = !0, window: a = si } = t, o = t.type || "page", { x: s, y: c, sourceType: l } = Li(t), u = P(e ?? a?.document.body), d = P(0), f = P(0), p = P(0), m = P(0), h = P(0), g = P(0), _ = P(!0);
	function v() {
		if (!a) return;
		let e = li(u);
		if (!(!e || !(e instanceof Element))) for (let t of e.getClientRects()) {
			let { left: e, top: n, width: r, height: l } = t;
			p.value = e + (o === "page" ? a.pageXOffset : 0), m.value = n + (o === "page" ? a.pageYOffset : 0), h.value = l, g.value = r;
			let u = s.value - p.value, v = c.value - m.value;
			if (_.value = r === 0 || l === 0 || u < 0 || v < 0 || u > r || v > l, (i || !_.value) && (d.value = u, f.value = v), !_.value) break;
		}
	}
	let y = [];
	function b() {
		y.forEach((e) => e()), y.length = 0;
	}
	if (ni(() => {
		v();
	}), a) {
		let { stop: e } = Ei(u, v), { stop: t } = mi(u, v, { attributeFilter: ["style", "class"] }), i = I([
			u,
			s,
			c
		], v);
		y.push(e, t, i), V(document, "mouseleave", () => _.value = !0, { passive: !0 }), r && y.push(V("scroll", v, {
			capture: !0,
			passive: !0
		})), n && y.push(V("resize", v, { passive: !0 }));
	}
	return {
		x: s,
		y: c,
		sourceType: l,
		elementX: d,
		elementY: f,
		elementPositionX: p,
		elementPositionY: m,
		elementHeight: h,
		elementWidth: g,
		isOutside: _,
		stop: b
	};
}
function zi(e) {
	let t = window.getComputedStyle(e);
	if (t.overflowX === "scroll" || t.overflowY === "scroll" || t.overflowX === "auto" && e.clientWidth < e.scrollWidth || t.overflowY === "auto" && e.clientHeight < e.scrollHeight) return !0;
	{
		let t = e.parentNode;
		return !t || t.tagName === "BODY" ? !1 : zi(t);
	}
}
function Bi(e) {
	let t = e || window.event, n = t.target;
	return zi(n) ? !1 : t.touches.length > 1 ? !0 : (t.preventDefault && t.preventDefault(), !1);
}
var Vi = /* @__PURE__ */ new WeakMap();
function Hi(e, t = !1) {
	let n = P(t), r = null, i = "";
	I(Ur(e), (e) => {
		let t = Mi(F(e));
		if (t) {
			let e = t;
			if (Vi.get(e) || Vi.set(e, e.style.overflow), e.style.overflow !== "hidden" && (i = e.style.overflow), e.style.overflow === "hidden") return n.value = !0;
			if (n.value) return e.style.overflow = "hidden";
		}
	}, { immediate: !0 });
	let a = () => {
		let t = Mi(F(e));
		!t || n.value || (Vr && (r = V(t, "touchmove", (e) => {
			Bi(e);
		}, { passive: !1 })), t.style.overflow = "hidden", n.value = !0);
	}, o = () => {
		let t = Mi(F(e));
		!t || !n.value || (Vr && r?.(), t.style.overflow = i, Vi.delete(t), n.value = !1);
	};
	return Fr(o), E({
		get() {
			return n.value;
		},
		set(e) {
			e ? a() : o();
		}
	});
}
//#endregion
//#region components/modal/NewbieModal.jsx
var Ui = /* @__PURE__ */ A({
	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: t, slots: n }) {
		let r = N(null), i = N(!1), a = N(!1);
		I(() => e.visible, (e) => {
			a.value = e;
		}, { immediate: !0 });
		let o = async () => {
			if (!(e.beforeClose && z(e.beforeClose) && !await e.beforeClose())) {
				if (e.beforeClose && Mt(e.beforeClose)) {
					let { title: n, content: r, okText: a, cancelText: o, trigger: s } = e.beforeClose;
					if (z(s) ? s() : s) {
						Xe.confirm({
							title: n || _("common.action-prompt"),
							content: r || _("common.close-confirm"),
							okText: a || _("common.confirm"),
							cancelText: o || _("common.cancel"),
							onOk: () => {
								i.value = !1, t("update:visible", !1), t("close");
							}
						});
						return;
					}
				}
				i.value = !1, t("update:visible", !1), t("close");
			}
		}, { x: s, y: c, isDragging: l } = Ti(r), u = N(0), d = N(0), f = N(!1), p = N(0), m = N(0), h = N(0), g = N(0), v = N({
			left: 0,
			right: 0,
			top: 0,
			bottom: 0
		});
		I([s, c], () => {
			if (!f.value) {
				u.value = s.value, d.value = c.value;
				let e = document.body.getBoundingClientRect(), t = r.value.getBoundingClientRect();
				v.value.right = e.width - t.width, v.value.bottom = Math.max(e.height - t.height, 800), h.value = p.value, g.value = m.value;
			}
			f.value = !0;
		}), I(l, () => {
			l || (f.value = !1);
		}), Se(() => {
			f.value && (p.value = h.value + Math.min(Math.max(v.value.left, s.value), v.value.right) - u.value, m.value = g.value + Math.min(Math.max(v.value.top, c.value), v.value.bottom) - d.value);
		});
		let y = E(() => ({ transform: `translate(${p.value}px, ${m.value}px)` })), b = () => O("div", { class: "newbie-modal-header" }, [O("span", {
			class: "newbie-modal-title",
			ref: r
		}, [e.title]), O("div", { class: "newbie-modal-actions" }, [i.value ? O("a", { onClick: () => i.value = !1 }, [O(Zt, { style: { fontSize: "16px" } }, null)]) : O("a", { onClick: () => i.value = !0 }, [O(on, { style: { fontSize: "16px" } }, null)]), O("a", { onClick: o }, [O(Yt, { style: {
			fontSize: "20px",
			marginTop: "2px"
		} }, null)])])]), x = () => O(Xe, M({
			footer: null,
			wrapStyle: { overflow: "hidden" },
			wrapClassName: `newbie-modal ${i.value ? "full-modal" : ""}`,
			width: i.value ? "100%" : or(e.width),
			open: a.value,
			"onUpdate:open": (e) => a.value = e,
			bodyStyle: {
				maxHeight: e.height ? or(e.height) : "600px",
				overflow: "auto"
			},
			closable: !1,
			destroyOnClose: !0,
			maskClosable: !1,
			onCancel: o
		}, e.modalProps), {
			default: () => n.default?.(),
			title: () => b(),
			modalRender: ({ originVNode: e }) => O("div", { style: y.value }, [e])
		}), S = () => O(Fe, M({
			title: e.title,
			open: a.value,
			"onUpdate:open": (e) => a.value = e,
			closable: !1,
			destroyOnClose: !0,
			width: or(e.width),
			maskClosable: !1,
			onClose: o
		}, e.modalProps), {
			default: () => n.default?.(),
			extra: () => O(Yt, { onClick: o }, null)
		});
		return () => O("div", { class: "newbie-modal" }, [e.type === "modal" ? x() : S()]);
	}
}), Wi = (e, t, n) => {
	let { searchProvider: r } = n, i = [
		{
			label: _("search.equal"),
			value: "equal"
		},
		{
			label: _("search.not-equal"),
			value: "notEqual"
		},
		{
			label: _("search.include"),
			value: "include"
		},
		{
			label: _("search.exclude"),
			value: "exclude"
		},
		{
			label: _("search.null"),
			value: "null"
		},
		{
			label: _("search.not-null"),
			value: "notNull"
		}
	];
	e.conditions && e.conditions.length && (i = i.filter((t) => e.conditions.includes(t.value)));
	let a = E(() => t[e.key].value), o = N();
	e.collectItem = () => {
		let n = t[e.key].value || null, r = null, a = Tt(i, { value: t[e.key].condition });
		return a && ["null", "notNull"].includes(a.value) ? (n = null, r = `${e.title}${a?.label}`) : n && (r = `${e.title}${a?.label}: ${n}`), {
			value: n,
			searchLabel: r
		};
	};
	let s = () => {
		o.value?.focus();
	}, c = O(We, M({
		ref: o,
		value: t[e.key].value,
		"onUpdate:value": (n) => t[e.key].value = n,
		allowClear: !0,
		disabled: t[e.key].condition === "null" || t[e.key].condition === "notNull",
		class: `${r.inputClass || ""}`,
		style: { width: "200px" },
		placeholder: b(_("common.search"), e.title)
	}, e.inputProps), null);
	return {
		conditions: i,
		Component: c,
		displayValue: a,
		onComponentOpen: s
	};
}, Gi = (e, t, n) => {
	let { searchProvider: r } = n, i = [
		{
			label: _("search.equal"),
			value: "equal"
		},
		{
			label: _("search.not-equal"),
			value: "notEqual"
		},
		{
			label: _("search.less-than"),
			value: "lessThan"
		},
		{
			label: _("search.greater-than"),
			value: "greaterThan"
		},
		{
			label: _("search.between"),
			value: "between"
		}
	];
	e.conditions && e.conditions.length && (i = i.filter((t) => e.conditions.includes(t.value)));
	let a = () => {
		if (t[e.key].condition === "between" && t[e.key].value && jt(t[e.key].value[0]) && jt(t[e.key].value[1]) && t[e.key].value[0] > t[e.key].value[1]) {
			let n = t[e.key].value[0];
			t[e.key].value[0] = t[e.key].value[1], t[e.key].value[1] = n;
		}
	}, o = N(null);
	e.collectItem = () => {
		let n = null, r = null, a = Tt(i, { value: t[e.key].condition })?.label;
		return t[e.key].condition === "between" && t[e.key].value && wt(t[e.key].value, jt) ? (n = t[e.key].value, r = `${e.title}${a}: ${n[0]} - ${n[1]} `) : t[e.key].condition !== "between" && t[e.key].value && jt(t[e.key].value[0]) && (n = t[e.key].value[0], r = `${e.title}${a}: ${n}`), {
			value: n,
			searchLabel: r
		};
	};
	let s = () => {
		o.value?.focus();
	}, c = E(() => t[e.key].condition === "between" && t[e.key].value && wt(t[e.key].value, jt) ? [
		O(dt, { style: { marginRight: 0 } }, { default: () => t[e.key].value[0] }),
		O("span", null, [D(" - ")]),
		O(dt, null, { default: () => t[e.key].value[1] })
	] : t[e.key].value[0]), l = [O(Ge, M({
		ref: o,
		value: t[e.key].value[0],
		"onUpdate:value": (n) => t[e.key].value[0] = n,
		style: { width: "200px" },
		class: `${r.inputClass || ""}`,
		placeholder: b(_("common.search"), e.title),
		onBlur: a
	}, e.inputProps), null)];
	return t[e.key].condition === "between" && (l = O("div", { style: {
		display: "flex",
		alignItems: "center"
	} }, [l.concat([O("span", { style: { margin: "0 8px" } }, [D("-")]), O(Ge, M({
		value: t[e.key].value[1],
		"onUpdate:value": (n) => t[e.key].value[1] = n,
		style: { width: "200px" },
		class: `${r.inputClass || ""}`,
		placeholder: _("form.please-input"),
		onBlur: a
	}, e.inputProps), null)])])), {
		conditions: i,
		Component: l,
		displayValue: c,
		onComponentOpen: s
	};
}, Ki = (e, t, n) => {
	let { searchProvider: r } = n, i = [
		{
			label: _("search.equal"),
			value: "equal"
		},
		{
			label: _("search.not-equal"),
			value: "notEqual"
		},
		{
			label: _("search.include"),
			value: "include"
		},
		{
			label: _("search.exclude"),
			value: "exclude"
		}
	];
	e.conditions && e.conditions.length && (i = i.filter((t) => e.conditions.includes(t.value)));
	let a = z(e.options) ? e.options() : e.options;
	a = a.map((e) => Nt(e) || jt(e) ? {
		value: e,
		label: e
	} : e);
	let o = E(() => O(at, null, { default: () => t[e.key].value.map((e) => O(dt, null, { default: () => Tt(a, { value: e })?.label })) }));
	I(() => t[e.key].condition, (n) => {
		["equal", "notEqual"].includes(n) && (t[e.key].value = t[e.key].value?.[0] ? [t[e.key].value[0]] : []);
	});
	let s = N(null);
	e.collectItem = () => {
		let n = null, r = null, o = Tt(i, { value: t[e.key].condition })?.label;
		if (["equal", "notEqual"].includes(t[e.key].condition) && !B(t[e.key].value?.[0]) && !At(t[e.key].value?.[0])) n = t[e.key].value?.[0] || null, r = `${e.title}${o}: ${Tt(a, { value: n })?.label}`;
		else if (!["equal", "notEqual"].includes(t[e.key].condition) && wt(t[e.key].value, (e) => !At(e) && !B(e))) {
			n = t[e.key].value;
			let i = n.map((e) => Tt(a, { value: e })?.label)?.join(",");
			r = `${e.title}${o}: ${i}`;
		}
		return {
			value: n,
			searchLabel: r
		};
	};
	let c = () => {}, l = ["equal", "notEqual"].includes(t[e.key].condition) ? O(rt, M({
		ref: s,
		value: t[e.key].value[0],
		"onUpdate:value": (n) => t[e.key].value[0] = n,
		allowClear: !0,
		options: a,
		style: { width: "200px" },
		class: `${r.inputClass || ""}`,
		defaultOpen: !0,
		filterOption: !0,
		showSearch: !0,
		optionFilterProp: "label",
		placeholder: b(_("common.search"), e.title),
		getPopupContainer: (e) => e.parentNode
	}, e.inputProps), null) : O(rt, M({
		ref: s,
		value: t[e.key].value,
		"onUpdate:value": (n) => t[e.key].value = n,
		allowClear: !0,
		options: a,
		mode: "multiple",
		class: `${r.inputClass || ""}`,
		style: { width: "200px" },
		defaultOpen: !0,
		filterOption: !0,
		optionFilterProp: "label",
		placeholder: b(_("common.search"), e.title),
		getPopupContainer: (e) => e.parentNode
	}, e.inputProps), null);
	return {
		conditions: i,
		Component: l,
		displayValue: o,
		onComponentOpen: c
	};
}, qi = (e, t, n) => {
	let { searchProvider: r } = n, i = [{
		label: _("search.equal"),
		value: "equal"
	}, {
		label: _("search.exclude"),
		value: "exclude"
	}];
	e.conditions && e.conditions.length && (i = i.filter((t) => e.conditions.includes(t.value)));
	let a = E(() => t[e.key].value && Nt(t[e.key].value) ? t[e.key].value.trim().split("\n").join(",") : t[e.key].value && Dt(t[e.key].value) ? t[e.key].value.join(",") : ""), o = N(null);
	e.collectItem = () => {
		let n = null, r = null, a = Tt(i, { value: t[e.key].condition })?.label;
		return n = null, t[e.key].value && Nt(t[e.key].value) ? n = t[e.key].value.trim().split("\n") : t[e.key].value && Dt(t[e.key].value) && (n = t[e.key].value), r = n ? `${e.title}${a}: ${n?.join(",")}` : null, {
			value: n,
			searchLabel: r
		};
	};
	let s = () => {
		o.value?.focus();
	}, c = O(ft, M({
		ref: o,
		value: t[e.key].value,
		"onUpdate:value": (n) => t[e.key].value = n,
		allowClear: !0,
		class: `${r.inputClass || ""}`,
		style: { width: "200px" },
		autoSize: {
			minRows: 4,
			maxRows: 8
		},
		placeholder: _("search.textarea-placeholder", { title: e.title })
	}, e.inputProps), null);
	return {
		conditions: i,
		Component: c,
		displayValue: a,
		onComponentOpen: s
	};
}, Ji = (e, t, n) => {
	let { searchProvider: r } = n, i = [
		{
			label: _("search.equal"),
			value: "equal"
		},
		{
			label: _("search.less-than"),
			value: "lessThan"
		},
		{
			label: _("search.greater-than"),
			value: "greaterThan"
		},
		{
			label: _("search.between"),
			value: "between"
		},
		{
			label: _("search.null"),
			value: "null"
		},
		{
			label: _("search.not-null"),
			value: "notNull"
		}
	];
	e.conditions && e.conditions.length && (i = i.filter((t) => e.conditions.includes(t.value)));
	let a = N(null), o = e.inputProps?.format || "YYYY-MM-DD", s = e.inputProps?.picker || "date";
	e.collectItem = () => {
		let n = null, r = null, a = Tt(i, { value: t[e.key].condition })?.label;
		return t[e.key].condition === "between" && t[e.key].value && wt(t[e.key].value, bt.isDayjs) ? (n = t[e.key].value, r = `${e.title}${a}: ${n[0].format(o)} - ${n[1].format(o)} `) : t[e.key].condition !== "between" && bt.isDayjs(t[e.key].value[0]) && (n = t[e.key].value[0], r = `${e.title}${a}: ${n.format(o)}`), {
			value: n,
			searchLabel: r
		};
	};
	let c = () => {
		a.value?.focus();
	}, l = E(() => t[e.key].condition === "between" && t[e.key].value && wt(t[e.key].value, bt.isDayjs) ? [
		O(dt, { style: { marginRight: 0 } }, { default: () => t[e.key].value?.[0]?.format(o) }),
		O("span", null, [D(" - ")]),
		O(dt, null, { default: () => t[e.key].value?.[1]?.format(o) })
	] : t[e.key].value?.[0]?.format(o)), u = N([{
		label: _("search.last-week"),
		value: bt().add(-7, "d")
	}, {
		label: _("search.last-month"),
		value: bt().add(-1, "month")
	}]), d = N([
		{
			label: _("search.past-week"),
			value: [bt().add(-7, "d"), bt()]
		},
		{
			label: _("search.past-two-weeks"),
			value: [bt().add(-14, "d"), bt()]
		},
		{
			label: _("search.past-days", { days: 30 }),
			value: [bt().add(-30, "d"), bt()]
		},
		{
			label: _("search.past-days", { days: 90 }),
			value: [bt().add(-90, "d"), bt()]
		}
	]), f = t[e.key].condition === "between" ? O(et, M({
		ref: a,
		value: t[e.key].value,
		"onUpdate:value": (n) => t[e.key].value = n,
		allowClear: !0,
		inputReadOnly: !0,
		open: !0,
		presets: s === "date" ? d.value : [],
		style: { width: "400px" },
		class: `${r.inputClass || ""}`,
		placeholder: [_("search.start-time"), _("search.end-time")],
		getPopupContainer: (e) => e?.parentNode
	}, e.inputProps), null) : O(Ne, M({
		ref: a,
		value: t[e.key].value[0],
		"onUpdate:value": (n) => t[e.key].value[0] = n,
		allowClear: !0,
		open: !0,
		inputReadOnly: !0,
		presets: s === "date" ? u.value : [],
		style: { width: "200px" },
		class: `${r.inputClass || ""}`,
		placeholder: b(_("common.search"), e.title),
		getPopupContainer: (e) => e?.parentNode
	}, e.inputProps), null);
	return {
		conditions: i,
		Component: f,
		displayValue: l,
		onComponentOpen: c
	};
}, Yi = (e, t, n) => {
	let { searchProvider: r } = n, i = z(e.options) ? e.options() : e.options, a = [
		{
			label: _("search.equal"),
			value: "equal"
		},
		{
			label: _("search.not-equal"),
			value: "notEqual"
		},
		{
			label: _("search.include-sub"),
			value: "include"
		}
	];
	e.conditions && e.conditions.length && (a = a.filter((t) => e.conditions.includes(t.value)));
	let o = E(() => y(i, t[e.key].value, e.inputProps?.fieldNames).join("/")), s = N(null);
	e.collectItem = () => {
		let n = t[e.key].value || null, r = null, o = Tt(a, { value: t[e.key].condition })?.label;
		return n && (r = `${e.title}${o}: ${y(i, n, e.inputProps?.fieldNames).join("/")}`), {
			value: n,
			searchLabel: r
		};
	};
	let c = () => {
		s.value?.focus();
	}, l = O(Oe, M({
		ref: s,
		value: t[e.key].value,
		"onUpdate:value": (n) => t[e.key].value = n,
		allowClear: !0,
		open: !0,
		class: `${r.inputClass || ""}`,
		style: { width: "200px" },
		options: i,
		changeOnSelect: Et(a, { value: "include" }) > -1,
		showSearch: !0,
		placeholder: b(_("common.search"), e.title),
		getPopupContainer: (e) => e?.parentNode
	}, e.inputProps), null);
	return {
		conditions: a,
		Component: l,
		displayValue: o,
		onComponentOpen: c
	};
}, Xi = (e, t, n) => {
	let { searchProvider: r } = n, i = [{
		label: _("search.equal"),
		value: "equal"
	}];
	e.conditions && e.conditions.length && (i = i.filter((t) => e.conditions.includes(t.value)));
	let a = [{
		value: "checked",
		label: e.options?.[0] || _("common.yes")
	}, {
		value: "unchecked",
		label: e.options?.[1] || _("common.no")
	}], o = E(() => Tt(a, { value: t[e.key].value })?.label), s = N(null);
	e.collectItem = () => {
		let n = t[e.key].value === void 0 ? void 0 : t[e.key].value === "checked", r = null, o = Tt(i, { value: t[e.key].condition });
		return n && (r = `${e.title}${o?.label}: ${Tt(a, { value: t[e.key].value })?.label}`), {
			value: n,
			searchLabel: r
		};
	};
	let c = () => {}, l = O(rt, M({
		ref: s,
		value: t[e.key].value,
		"onUpdate:value": (n) => t[e.key].value = n,
		allowClear: !0,
		options: a,
		style: { width: "200px" },
		class: `${r.inputClass || ""}`,
		defaultOpen: !0,
		getPopupContainer: (e) => e.parentNode,
		placeholder: b(_("common.search"), e.title)
	}, e.inputProps), null);
	return {
		conditions: i,
		Component: l,
		displayValue: o,
		onComponentOpen: c
	};
}, Zi = (e, t) => {
	let { t: n, locale: r } = l(), i = z(e.options) ? e.options() : e.options;
	i = i.map((e) => Nt(e) || jt(e) ? {
		value: e,
		label: e
	} : e);
	let a = N(e.options.map(() => !1));
	t[e.key].value?.length && t[e.key].value.forEach((e) => {
		let t = i.findIndex((t) => t.value === e);
		t !== -1 && (a.value[t] = !0);
	}), e.expandable === "multiple" && (t[e.key].condition = "include");
	let o = (n) => {
		e.expandable === "multiple" ? t[e.key].value = a.value.map((e, t) => {
			if (e) return i[t].value;
		}) : a.value.forEach((r, o) => {
			if (o === n) {
				r ? t[e.key].value = [i[n].value] : t[e.key].value = [];
				return;
			}
			a.value[o] = !1;
		});
	};
	return e.collectItem = () => {
		let a = null, o = null;
		if (e.expandable === "multiple") if (a = t[e.key].value?.filter((e) => e), !a || !a.length) a = null;
		else {
			let t = a.map((e) => Tt(i, { value: e })?.label)?.join(",");
			o = `${b(e.title, n("search.include"), { locale: r })}: ${t}`;
		}
		else a = t[e.key].value?.[0] || null, o = `${b(e.title, n("search.equal"), { locale: r })}: ${Tt(i, { value: a })?.label}`;
		return {
			value: a,
			searchLabel: o
		};
	}, O("div", { class: "newbie-search-expand-item" }, [
		O("div", { class: "newbie-search-expand-item-title" }, [e.title, D(":")]),
		O("div", { class: "newbie-search-expand-item-options" }, [O(at, {
			size: [8, 2],
			wrap: !0
		}, { default: () => i.map((e, t) => O(ke, {
			checked: a.value[t],
			"onUpdate:checked": (e) => a.value[t] = e,
			onChange: () => o(t)
		}, { default: () => e.label })) })]),
		O("div", { class: "newbie-search-expand-item-extra" }, [e.expandable === "multiple" ? n("search.multiple-choice-available") : ""])
	]);
};
//#endregion
//#region node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.js
function Qi(e, t) {
	var n = Object.keys(e);
	if (Object.getOwnPropertySymbols) {
		var r = Object.getOwnPropertySymbols(e);
		t && (r = r.filter(function(t) {
			return Object.getOwnPropertyDescriptor(e, t).enumerable;
		})), n.push.apply(n, r);
	}
	return n;
}
function $i(e) {
	for (var t = 1; t < arguments.length; t++) {
		var n = arguments[t] == null ? {} : arguments[t];
		t % 2 ? Qi(Object(n), !0).forEach(function(t) {
			ta(e, t, n[t]);
		}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : Qi(Object(n)).forEach(function(t) {
			Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));
		});
	}
	return e;
}
function ea(e) {
	"@babel/helpers - typeof";
	return ea = 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;
	}, ea(e);
}
function ta(e, t, n) {
	return t in e ? Object.defineProperty(e, t, {
		value: n,
		enumerable: !0,
		configurable: !0,
		writable: !0
	}) : e[t] = n, e;
}
function na() {
	return na = Object.assign || function(e) {
		for (var t = 1; t < arguments.length; t++) {
			var n = arguments[t];
			for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]);
		}
		return e;
	}, na.apply(this, arguments);
}
function ra(e, t) {
	if (e == null) return {};
	var n = {}, r = Object.keys(e), i, a;
	for (a = 0; a < r.length; a++) i = r[a], !(t.indexOf(i) >= 0) && (n[i] = e[i]);
	return n;
}
function ia(e, t) {
	if (e == null) return {};
	var n = ra(e, t), r, i;
	if (Object.getOwnPropertySymbols) {
		var a = Object.getOwnPropertySymbols(e);
		for (i = 0; i < a.length; i++) r = a[i], !(t.indexOf(r) >= 0) && Object.prototype.propertyIsEnumerable.call(e, r) && (n[r] = e[r]);
	}
	return n;
}
var aa = "1.14.0";
function oa(e) {
	if (typeof window < "u" && window.navigator) return !!/*@__PURE__*/ navigator.userAgent.match(e);
}
var sa = oa(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i), ca = oa(/Edge/i), la = oa(/firefox/i), ua = oa(/safari/i) && !oa(/chrome/i) && !oa(/android/i), da = oa(/iP(ad|od|hone)/i), fa = oa(/chrome/i) && oa(/android/i), pa = {
	capture: !1,
	passive: !1
};
function H(e, t, n) {
	e.addEventListener(t, n, !sa && pa);
}
function U(e, t, n) {
	e.removeEventListener(t, n, !sa && pa);
}
function ma(e, t) {
	if (t) {
		if (t[0] === ">" && (t = t.substring(1)), e) try {
			if (e.matches) return e.matches(t);
			if (e.msMatchesSelector) return e.msMatchesSelector(t);
			if (e.webkitMatchesSelector) return e.webkitMatchesSelector(t);
		} catch {
			return !1;
		}
		return !1;
	}
}
function ha(e) {
	return e.host && e !== document && e.host.nodeType ? e.host : e.parentNode;
}
function ga(e, t, n, r) {
	if (e) {
		n ||= document;
		do {
			if (t != null && (t[0] === ">" ? e.parentNode === n && ma(e, t) : ma(e, t)) || r && e === n) return e;
			if (e === n) break;
		} while (e = ha(e));
	}
	return null;
}
var _a = /\s+/g;
function va(e, t, n) {
	e && t && (e.classList ? e.classList[n ? "add" : "remove"](t) : e.className = ((" " + e.className + " ").replace(_a, " ").replace(" " + t + " ", " ") + (n ? " " + t : "")).replace(_a, " "));
}
function W(e, t, n) {
	var r = e && e.style;
	if (r) {
		if (n === void 0) return document.defaultView && document.defaultView.getComputedStyle ? n = document.defaultView.getComputedStyle(e, "") : e.currentStyle && (n = e.currentStyle), t === void 0 ? n : n[t];
		!(t in r) && t.indexOf("webkit") === -1 && (t = "-webkit-" + t), r[t] = n + (typeof n == "string" ? "" : "px");
	}
}
function ya(e, t) {
	var n = "";
	if (typeof e == "string") n = e;
	else do {
		var r = W(e, "transform");
		r && r !== "none" && (n = r + " " + n);
	} while (!t && (e = e.parentNode));
	var i = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;
	return i && new i(n);
}
function ba(e, t, n) {
	if (e) {
		var r = e.getElementsByTagName(t), i = 0, a = r.length;
		if (n) for (; i < a; i++) n(r[i], i);
		return r;
	}
	return [];
}
function xa() {
	return document.scrollingElement || document.documentElement;
}
function Sa(e, t, n, r, i) {
	if (!(!e.getBoundingClientRect && e !== window)) {
		var a, o, s, c, l, u, d;
		if (e !== window && e.parentNode && e !== xa() ? (a = e.getBoundingClientRect(), o = a.top, s = a.left, c = a.bottom, l = a.right, u = a.height, d = a.width) : (o = 0, s = 0, c = window.innerHeight, l = window.innerWidth, u = window.innerHeight, d = window.innerWidth), (t || n) && e !== window && (i ||= e.parentNode, !sa)) do
			if (i && i.getBoundingClientRect && (W(i, "transform") !== "none" || n && W(i, "position") !== "static")) {
				var f = i.getBoundingClientRect();
				o -= f.top + parseInt(W(i, "border-top-width")), s -= f.left + parseInt(W(i, "border-left-width")), c = o + a.height, l = s + a.width;
				break;
			}
		while (i = i.parentNode);
		if (r && e !== window) {
			var p = ya(i || e), m = p && p.a, h = p && p.d;
			p && (o /= h, s /= m, d /= m, u /= h, c = o + u, l = s + d);
		}
		return {
			top: o,
			left: s,
			bottom: c,
			right: l,
			width: d,
			height: u
		};
	}
}
function Ca(e, t, n) {
	for (var r = ka(e, !0), i = Sa(e)[t]; r;) {
		var a = Sa(r)[n], o = void 0;
		if (o = n === "top" || n === "left" ? i >= a : i <= a, !o) return r;
		if (r === xa()) break;
		r = ka(r, !1);
	}
	return !1;
}
function wa(e, t, n, r) {
	for (var i = 0, a = 0, o = e.children; a < o.length;) {
		if (o[a].style.display !== "none" && o[a] !== q.ghost && (r || o[a] !== q.dragged) && ga(o[a], n.draggable, e, !1)) {
			if (i === t) return o[a];
			i++;
		}
		a++;
	}
	return null;
}
function Ta(e, t) {
	for (var n = e.lastElementChild; n && (n === q.ghost || W(n, "display") === "none" || t && !ma(n, t));) n = n.previousElementSibling;
	return n || null;
}
function Ea(e, t) {
	var n = 0;
	if (!e || !e.parentNode) return -1;
	for (; e = e.previousElementSibling;) e.nodeName.toUpperCase() !== "TEMPLATE" && e !== q.clone && (!t || ma(e, t)) && n++;
	return n;
}
function Da(e) {
	var t = 0, n = 0, r = xa();
	if (e) do {
		var i = ya(e), a = i.a, o = i.d;
		t += e.scrollLeft * a, n += e.scrollTop * o;
	} while (e !== r && (e = e.parentNode));
	return [t, n];
}
function Oa(e, t) {
	for (var n in e) if (e.hasOwnProperty(n)) {
		for (var r in t) if (t.hasOwnProperty(r) && t[r] === e[n][r]) return Number(n);
	}
	return -1;
}
function ka(e, t) {
	if (!e || !e.getBoundingClientRect) return xa();
	var n = e, r = !1;
	do
		if (n.clientWidth < n.scrollWidth || n.clientHeight < n.scrollHeight) {
			var i = W(n);
			if (n.clientWidth < n.scrollWidth && (i.overflowX == "auto" || i.overflowX == "scroll") || n.clientHeight < n.scrollHeight && (i.overflowY == "auto" || i.overflowY == "scroll")) {
				if (!n.getBoundingClientRect || n === document.body) return xa();
				if (r || t) return n;
				r = !0;
			}
		}
	while (n = n.parentNode);
	return xa();
}
function Aa(e, t) {
	if (e && t) for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
	return e;
}
function ja(e, t) {
	return Math.round(e.top) === Math.round(t.top) && Math.round(e.left) === Math.round(t.left) && Math.round(e.height) === Math.round(t.height) && Math.round(e.width) === Math.round(t.width);
}
var Ma;
function Na(e, t) {
	return function() {
		if (!Ma) {
			var n = arguments, r = this;
			n.length === 1 ? e.call(r, n[0]) : e.apply(r, n), Ma = setTimeout(function() {
				Ma = void 0;
			}, t);
		}
	};
}
function Pa() {
	clearTimeout(Ma), Ma = void 0;
}
function Fa(e, t, n) {
	e.scrollLeft += t, e.scrollTop += n;
}
function Ia(e) {
	var t = window.Polymer, n = window.jQuery || window.Zepto;
	return t && t.dom ? t.dom(e).cloneNode(!0) : n ? n(e).clone(!0)[0] : e.cloneNode(!0);
}
var La = "Sortable" + (/* @__PURE__ */ new Date()).getTime();
function Ra() {
	var e = [], t;
	return {
		captureAnimationState: function() {
			e = [], this.options.animation && [].slice.call(this.el.children).forEach(function(t) {
				if (!(W(t, "display") === "none" || t === q.ghost)) {
					e.push({
						target: t,
						rect: Sa(t)
					});
					var n = $i({}, e[e.length - 1].rect);
					if (t.thisAnimationDuration) {
						var r = ya(t, !0);
						r && (n.top -= r.f, n.left -= r.e);
					}
					t.fromRect = n;
				}
			});
		},
		addAnimationState: function(t) {
			e.push(t);
		},
		removeAnimationState: function(t) {
			e.splice(Oa(e, { target: t }), 1);
		},
		animateAll: function(n) {
			var r = this;
			if (!this.options.animation) {
				clearTimeout(t), typeof n == "function" && n();
				return;
			}
			var i = !1, a = 0;
			e.forEach(function(e) {
				var t = 0, n = e.target, o = n.fromRect, s = Sa(n), c = n.prevFromRect, l = n.prevToRect, u = e.rect, d = ya(n, !0);
				d && (s.top -= d.f, s.left -= d.e), n.toRect = s, n.thisAnimationDuration && ja(c, s) && !ja(o, s) && (u.top - s.top) / (u.left - s.left) === (o.top - s.top) / (o.left - s.left) && (t = Ba(u, c, l, r.options)), ja(s, o) || (n.prevFromRect = o, n.prevToRect = s, t ||= r.options.animation, r.animate(n, u, s, t)), t && (i = !0, a = Math.max(a, t), clearTimeout(n.animationResetTimer), n.animationResetTimer = setTimeout(function() {
					n.animationTime = 0, n.prevFromRect = null, n.fromRect = null, n.prevToRect = null, n.thisAnimationDuration = null;
				}, t), n.thisAnimationDuration = t);
			}), clearTimeout(t), i ? t = setTimeout(function() {
				typeof n == "function" && n();
			}, a) : typeof n == "function" && n(), e = [];
		},
		animate: function(e, t, n, r) {
			if (r) {
				W(e, "transition", ""), W(e, "transform", "");
				var i = ya(this.el), a = i && i.a, o = i && i.d, s = (t.left - n.left) / (a || 1), c = (t.top - n.top) / (o || 1);
				e.animatingX = !!s, e.animatingY = !!c, W(e, "transform", "translate3d(" + s + "px," + c + "px,0)"), this.forRepaintDummy = za(e), W(e, "transition", "transform " + r + "ms" + (this.options.easing ? " " + this.options.easing : "")), W(e, "transform", "translate3d(0,0,0)"), typeof e.animated == "number" && clearTimeout(e.animated), e.animated = setTimeout(function() {
					W(e, "transition", ""), W(e, "transform", ""), e.animated = !1, e.animatingX = !1, e.animatingY = !1;
				}, r);
			}
		}
	};
}
function za(e) {
	return e.offsetWidth;
}
function Ba(e, t, n, r) {
	return Math.sqrt((t.top - e.top) ** 2 + (t.left - e.left) ** 2) / Math.sqrt((t.top - n.top) ** 2 + (t.left - n.left) ** 2) * r.animation;
}
var Va = [], Ha = { initializeByDefault: !0 }, Ua = {
	mount: function(e) {
		for (var t in Ha) Ha.hasOwnProperty(t) && !(t in e) && (e[t] = Ha[t]);
		Va.forEach(function(t) {
			if (t.pluginName === e.pluginName) throw `Sortable: Cannot mount plugin ${e.pluginName} more than once`;
		}), Va.push(e);
	},
	pluginEvent: function(e, t, n) {
		var r = this;
		this.eventCanceled = !1, n.cancel = function() {
			r.eventCanceled = !0;
		};
		var i = e + "Global";
		Va.forEach(function(r) {
			t[r.pluginName] && (t[r.pluginName][i] && t[r.pluginName][i]($i({ sortable: t }, n)), t.options[r.pluginName] && t[r.pluginName][e] && t[r.pluginName][e]($i({ sortable: t }, n)));
		});
	},
	initializePlugins: function(e, t, n, r) {
		for (var i in Va.forEach(function(r) {
			var i = r.pluginName;
			if (!(!e.options[i] && !r.initializeByDefault)) {
				var a = new r(e, t, e.options);
				a.sortable = e, a.options = e.options, e[i] = a, na(n, a.defaults);
			}
		}), e.options) if (e.options.hasOwnProperty(i)) {
			var a = this.modifyOption(e, i, e.options[i]);
			a !== void 0 && (e.options[i] = a);
		}
	},
	getEventProperties: function(e, t) {
		var n = {};
		return Va.forEach(function(r) {
			typeof r.eventProperties == "function" && na(n, r.eventProperties.call(t[r.pluginName], e));
		}), n;
	},
	modifyOption: function(e, t, n) {
		var r;
		return Va.forEach(function(i) {
			e[i.pluginName] && i.optionListeners && typeof i.optionListeners[t] == "function" && (r = i.optionListeners[t].call(e[i.pluginName], n));
		}), r;
	}
};
function Wa(e) {
	var t = e.sortable, n = e.rootEl, r = e.name, i = e.targetEl, a = e.cloneEl, o = e.toEl, s = e.fromEl, c = e.oldIndex, l = e.newIndex, u = e.oldDraggableIndex, d = e.newDraggableIndex, f = e.originalEvent, p = e.putSortable, m = e.extraEventProperties;
	if (t ||= n && n[La], t) {
		var h, g = t.options, _ = "on" + r.charAt(0).toUpperCase() + r.substr(1);
		window.CustomEvent && !sa && !ca ? h = new CustomEvent(r, {
			bubbles: !0,
			cancelable: !0
		}) : (h = document.createEvent("Event"), h.initEvent(r, !0, !0)), h.to = o || n, h.from = s || n, h.item = i || n, h.clone = a, h.oldIndex = c, h.newIndex = l, h.oldDraggableIndex = u, h.newDraggableIndex = d, h.originalEvent = f, h.pullMode = p ? p.lastPutMode : void 0;
		var v = $i($i({}, m), Ua.getEventProperties(r, t));
		for (var y in v) h[y] = v[y];
		n && n.dispatchEvent(h), g[_] && g[_].call(t, h);
	}
}
var Ga = ["evt"], Ka = function(e, t) {
	var n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, r = n.evt, i = ia(n, Ga);
	Ua.pluginEvent.bind(q)(e, t, $i({
		dragEl: G,
		parentEl: Ja,
		ghostEl: K,
		rootEl: Ya,
		nextEl: Xa,
		lastDownEl: Za,
		cloneEl: Qa,
		cloneHidden: $a,
		dragStarted: go,
		putSortable: ao,
		activeSortable: q.active,
		originalEvent: r,
		oldIndex: eo,
		oldDraggableIndex: no,
		newIndex: to,
		newDraggableIndex: ro,
		hideGhostForTarget: Fo,
		unhideGhostForTarget: Io,
		cloneNowHidden: function() {
			$a = !0;
		},
		cloneNowShown: function() {
			$a = !1;
		},
		dispatchSortableEvent: function(e) {
			qa({
				sortable: t,
				name: e,
				originalEvent: r
			});
		}
	}, i));
};
function qa(e) {
	Wa($i({
		putSortable: ao,
		cloneEl: Qa,
		targetEl: G,
		rootEl: Ya,
		oldIndex: eo,
		oldDraggableIndex: no,
		newIndex: to,
		newDraggableIndex: ro
	}, e));
}
var G, Ja, K, Ya, Xa, Za, Qa, $a, eo, to, no, ro, io, ao, oo = !1, so = !1, co = [], lo, uo, fo, po, mo, ho, go, _o, vo, yo = !1, bo = !1, xo, So, Co = [], wo = !1, To = [], Eo = typeof document < "u", Do = da, Oo = ca || sa ? "cssFloat" : "float", ko = Eo && !fa && !da && "draggable" in document.createElement("div"), Ao = function() {
	if (Eo) {
		if (sa) return !1;
		var e = document.createElement("x");
		return e.style.cssText = "pointer-events:auto", e.style.pointerEvents === "auto";
	}
}(), jo = function(e, t) {
	var n = W(e), r = parseInt(n.width) - parseInt(n.paddingLeft) - parseInt(n.paddingRight) - parseInt(n.borderLeftWidth) - parseInt(n.borderRightWidth), i = wa(e, 0, t), a = wa(e, 1, t), o = i && W(i), s = a && W(a), c = o && parseInt(o.marginLeft) + parseInt(o.marginRight) + Sa(i).width, l = s && parseInt(s.marginLeft) + parseInt(s.marginRight) + Sa(a).width;
	if (n.display === "flex") return n.flexDirection === "column" || n.flexDirection === "column-reverse" ? "vertical" : "horizontal";
	if (n.display === "grid") return n.gridTemplateColumns.split(" ").length <= 1 ? "vertical" : "horizontal";
	if (i && o.float && o.float !== "none") {
		var u = o.float === "left" ? "left" : "right";
		return a && (s.clear === "both" || s.clear === u) ? "vertical" : "horizontal";
	}
	return i && (o.display === "block" || o.display === "flex" || o.display === "table" || o.display === "grid" || c >= r && n[Oo] === "none" || a && n[Oo] === "none" && c + l > r) ? "vertical" : "horizontal";
}, Mo = function(e, t, n) {
	var r = n ? e.left : e.top, i = n ? e.right : e.bottom, a = n ? e.width : e.height, o = n ? t.left : t.top, s = n ? t.right : t.bottom, c = n ? t.width : t.height;
	return r === o || i === s || r + a / 2 === o + c / 2;
}, No = function(e, t) {
	var n;
	return co.some(function(r) {
		var i = r[La].options.emptyInsertThreshold;
		if (!(!i || Ta(r))) {
			var a = Sa(r), o = e >= a.left - i && e <= a.right + i, s = t >= a.top - i && t <= a.bottom + i;
			if (o && s) return n = r;
		}
	}), n;
}, Po = function(e) {
	function t(e, n) {
		return function(r, i, a, o) {
			var s = r.options.group.name && i.options.group.name && r.options.group.name === i.options.group.name;
			if (e == null && (n || s)) return !0;
			if (e == null || e === !1) return !1;
			if (n && e === "clone") return e;
			if (typeof e == "function") return t(e(r, i, a, o), n)(r, i, a, o);
			var c = (n ? r : i).options.group.name;
			return e === !0 || typeof e == "string" && e === c || e.join && e.indexOf(c) > -1;
		};
	}
	var n = {}, r = e.group;
	(!r || ea(r) != "object") && (r = { name: r }), n.name = r.name, n.checkPull = t(r.pull, !0), n.checkPut = t(r.put), n.revertClone = r.revertClone, e.group = n;
}, Fo = function() {
	!Ao && K && W(K, "display", "none");
}, Io = function() {
	!Ao && K && W(K, "display", "");
};
Eo && document.addEventListener("click", function(e) {
	if (so) return e.preventDefault(), e.stopPropagation && e.stopPropagation(), e.stopImmediatePropagation && e.stopImmediatePropagation(), so = !1, !1;
}, !0);
var Lo = function(e) {
	if (G) {
		e = e.touches ? e.touches[0] : e;
		var t = No(e.clientX, e.clientY);
		if (t) {
			var n = {};
			for (var r in e) e.hasOwnProperty(r) && (n[r] = e[r]);
			n.target = n.rootEl = t, n.preventDefault = void 0, n.stopPropagation = void 0, t[La]._onDragOver(n);
		}
	}
}, Ro = function(e) {
	G && G.parentNode[La]._isOutsideThisEl(e.target);
};
function q(e, t) {
	if (!(e && e.nodeType && e.nodeType === 1)) throw `Sortable: \`el\` must be an HTMLElement, not ${{}.toString.call(e)}`;
	this.el = e, this.options = t = na({}, t), e[La] = this;
	var n = {
		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 jo(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, t) {
			e.setData("Text", t.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: q.supportPointer !== !1 && "PointerEvent" in window && !ua,
		emptyInsertThreshold: 5
	};
	for (var r in Ua.initializePlugins(this, e, n), n) !(r in t) && (t[r] = n[r]);
	for (var i in Po(t), this) i.charAt(0) === "_" && typeof this[i] == "function" && (this[i] = this[i].bind(this));
	this.nativeDraggable = t.forceFallback ? !1 : ko, this.nativeDraggable && (this.options.touchStartThreshold = 1), t.supportPointer ? H(e, "pointerdown", this._onTapStart) : (H(e, "mousedown", this._onTapStart), H(e, "touchstart", this._onTapStart)), this.nativeDraggable && (H(e, "dragover", this), H(e, "dragenter", this)), co.push(this.el), t.store && t.store.get && this.sort(t.store.get(this) || []), na(this, Ra());
}
q.prototype = {
	constructor: q,
	_isOutsideThisEl: function(e) {
		!this.el.contains(e) && e !== this.el && (_o = null);
	},
	_getDirection: function(e, t) {
		return typeof this.options.direction == "function" ? this.options.direction.call(this, e, t, G) : this.options.direction;
	},
	_onTapStart: function(e) {
		if (e.cancelable) {
			var t = this, n = this.el, r = this.options, i = r.preventOnFilter, a = e.type, o = e.touches && e.touches[0] || e.pointerType && e.pointerType === "touch" && e, s = (o || e).target, c = e.target.shadowRoot && (e.path && e.path[0] || e.composedPath && e.composedPath()[0]) || s, l = r.filter;
			if (Jo(n), !G && !(/mousedown|pointerdown/.test(a) && e.button !== 0 || r.disabled) && !c.isContentEditable && !(!this.nativeDraggable && ua && s && s.tagName.toUpperCase() === "SELECT") && (s = ga(s, r.draggable, n, !1), !(s && s.animated) && Za !== s)) {
				if (eo = Ea(s), no = Ea(s, r.draggable), typeof l == "function") {
					if (l.call(this, e, s, this)) {
						qa({
							sortable: t,
							rootEl: c,
							name: "filter",
							targetEl: s,
							toEl: n,
							fromEl: n
						}), Ka("filter", t, { evt: e }), i && e.cancelable && e.preventDefault();
						return;
					}
				} else if (l && (l = l.split(",").some(function(r) {
					if (r = ga(c, r.trim(), n, !1), r) return qa({
						sortable: t,
						rootEl: r,
						name: "filter",
						targetEl: s,
						fromEl: n,
						toEl: n
					}), Ka("filter", t, { evt: e }), !0;
				}), l)) {
					i && e.cancelable && e.preventDefault();
					return;
				}
				r.handle && !ga(c, r.handle, n, !1) || this._prepareDragStart(e, o, s);
			}
		}
	},
	_prepareDragStart: function(e, t, n) {
		var r = this, i = r.el, a = r.options, o = i.ownerDocument, s;
		if (n && !G && n.parentNode === i) {
			var c = Sa(n);
			if (Ya = i, G = n, Ja = G.parentNode, Xa = G.nextSibling, Za = n, io = a.group, q.dragged = G, lo = {
				target: G,
				clientX: (t || e).clientX,
				clientY: (t || e).clientY
			}, mo = lo.clientX - c.left, ho = lo.clientY - c.top, this._lastX = (t || e).clientX, this._lastY = (t || e).clientY, G.style["will-change"] = "all", s = function() {
				if (Ka("delayEnded", r, { evt: e }), q.eventCanceled) {
					r._onDrop();
					return;
				}
				r._disableDelayedDragEvents(), !la && r.nativeDraggable && (G.draggable = !0), r._triggerDragStart(e, t), qa({
					sortable: r,
					name: "choose",
					originalEvent: e
				}), va(G, a.chosenClass, !0);
			}, a.ignore.split(",").forEach(function(e) {
				ba(G, e.trim(), Vo);
			}), H(o, "dragover", Lo), H(o, "mousemove", Lo), H(o, "touchmove", Lo), H(o, "mouseup", r._onDrop), H(o, "touchend", r._onDrop), H(o, "touchcancel", r._onDrop), la && this.nativeDraggable && (this.options.touchStartThreshold = 4, G.draggable = !0), Ka("delayStart", this, { evt: e }), a.delay && (!a.delayOnTouchOnly || t) && (!this.nativeDraggable || !(ca || sa))) {
				if (q.eventCanceled) {
					this._onDrop();
					return;
				}
				H(o, "mouseup", r._disableDelayedDrag), H(o, "touchend", r._disableDelayedDrag), H(o, "touchcancel", r._disableDelayedDrag), H(o, "mousemove", r._delayedDragTouchMoveHandler), H(o, "touchmove", r._delayedDragTouchMoveHandler), a.supportPointer && H(o, "pointermove", r._delayedDragTouchMoveHandler), r._dragStartTimer = setTimeout(s, a.delay);
			} else s();
		}
	},
	_delayedDragTouchMoveHandler: function(e) {
		var t = e.touches ? e.touches[0] : e;
		Math.max(Math.abs(t.clientX - this._lastX), Math.abs(t.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1)) && this._disableDelayedDrag();
	},
	_disableDelayedDrag: function() {
		G && Vo(G), clearTimeout(this._dragStartTimer), this._disableDelayedDragEvents();
	},
	_disableDelayedDragEvents: function() {
		var e = this.el.ownerDocument;
		U(e, "mouseup", this._disableDelayedDrag), U(e, "touchend", this._disableDelayedDrag), U(e, "touchcancel", this._disableDelayedDrag), U(e, "mousemove", this._delayedDragTouchMoveHandler), U(e, "touchmove", this._delayedDragTouchMoveHandler), U(e, "pointermove", this._delayedDragTouchMoveHandler);
	},
	_triggerDragStart: function(e, t) {
		t ||= e.pointerType == "touch" && e, !this.nativeDraggable || t ? this.options.supportPointer ? H(document, "pointermove", this._onTouchMove) : t ? H(document, "touchmove", this._onTouchMove) : H(document, "mousemove", this._onTouchMove) : (H(G, "dragend", this), H(Ya, "dragstart", this._onDragStart));
		try {
			document.selection ? Yo(function() {
				document.selection.empty();
			}) : window.getSelection().removeAllRanges();
		} catch {}
	},
	_dragStarted: function(e, t) {
		if (oo = !1, Ya && G) {
			Ka("dragStarted", this, { evt: t }), this.nativeDraggable && H(document, "dragover", Ro);
			var n = this.options;
			!e && va(G, n.dragClass, !1), va(G, n.ghostClass, !0), q.active = this, e && this._appendGhost(), qa({
				sortable: this,
				name: "start",
				originalEvent: t
			});
		} else this._nulling();
	},
	_emulateDragOver: function() {
		if (uo) {
			this._lastX = uo.clientX, this._lastY = uo.clientY, Fo();
			for (var e = document.elementFromPoint(uo.clientX, uo.clientY), t = e; e && e.shadowRoot && (e = e.shadowRoot.elementFromPoint(uo.clientX, uo.clientY), e !== t);) t = e;
			if (G.parentNode[La]._isOutsideThisEl(e), t) do {
				if (t[La]) {
					var n = void 0;
					if (n = t[La]._onDragOver({
						clientX: uo.clientX,
						clientY: uo.clientY,
						target: e,
						rootEl: t
					}), n && !this.options.dragoverBubble) break;
				}
				e = t;
			} while (t = t.parentNode);
			Io();
		}
	},
	_onTouchMove: function(e) {
		if (lo) {
			var t = this.options, n = t.fallbackTolerance, r = t.fallbackOffset, i = e.touches ? e.touches[0] : e, a = K && ya(K, !0), o = K && a && a.a, s = K && a && a.d, c = Do && So && Da(So), l = (i.clientX - lo.clientX + r.x) / (o || 1) + (c ? c[0] - Co[0] : 0) / (o || 1), u = (i.clientY - lo.clientY + r.y) / (s || 1) + (c ? c[1] - Co[1] : 0) / (s || 1);
			if (!q.active && !oo) {
				if (n && Math.max(Math.abs(i.clientX - this._lastX), Math.abs(i.clientY - this._lastY)) < n) return;
				this._onDragStart(e, !0);
			}
			if (K) {
				a ? (a.e += l - (fo || 0), a.f += u - (po || 0)) : a = {
					a: 1,
					b: 0,
					c: 0,
					d: 1,
					e: l,
					f: u
				};
				var d = `matrix(${a.a},${a.b},${a.c},${a.d},${a.e},${a.f})`;
				W(K, "webkitTransform", d), W(K, "mozTransform", d), W(K, "msTransform", d), W(K, "transform", d), fo = l, po = u, uo = i;
			}
			e.cancelable && e.preventDefault();
		}
	},
	_appendGhost: function() {
		if (!K) {
			var e = this.options.fallbackOnBody ? document.body : Ya, t = Sa(G, !0, Do, !0, e), n = this.options;
			if (Do) {
				for (So = e; W(So, "position") === "static" && W(So, "transform") === "none" && So !== document;) So = So.parentNode;
				So !== document.body && So !== document.documentElement ? (So === document && (So = xa()), t.top += So.scrollTop, t.left += So.scrollLeft) : So = xa(), Co = Da(So);
			}
			K = G.cloneNode(!0), va(K, n.ghostClass, !1), va(K, n.fallbackClass, !0), va(K, n.dragClass, !0), W(K, "transition", ""), W(K, "transform", ""), W(K, "box-sizing", "border-box"), W(K, "margin", 0), W(K, "top", t.top), W(K, "left", t.left), W(K, "width", t.width), W(K, "height", t.height), W(K, "opacity", "0.8"), W(K, "position", Do ? "absolute" : "fixed"), W(K, "zIndex", "100000"), W(K, "pointerEvents", "none"), q.ghost = K, e.appendChild(K), W(K, "transform-origin", mo / parseInt(K.style.width) * 100 + "% " + ho / parseInt(K.style.height) * 100 + "%");
		}
	},
	_onDragStart: function(e, t) {
		var n = this, r = e.dataTransfer, i = n.options;
		if (Ka("dragStart", this, { evt: e }), q.eventCanceled) {
			this._onDrop();
			return;
		}
		Ka("setupClone", this), q.eventCanceled || (Qa = Ia(G), Qa.draggable = !1, Qa.style["will-change"] = "", this._hideClone(), va(Qa, this.options.chosenClass, !1), q.clone = Qa), n.cloneId = Yo(function() {
			Ka("clone", n), !q.eventCanceled && (n.options.removeCloneOnHide || Ya.insertBefore(Qa, G), n._hideClone(), qa({
				sortable: n,
				name: "clone"
			}));
		}), !t && va(G, i.dragClass, !0), t ? (so = !0, n._loopId = setInterval(n._emulateDragOver, 50)) : (U(document, "mouseup", n._onDrop), U(document, "touchend", n._onDrop), U(document, "touchcancel", n._onDrop), r && (r.effectAllowed = "move", i.setData && i.setData.call(n, r, G)), H(document, "drop", n), W(G, "transform", "translateZ(0)")), oo = !0, n._dragStartId = Yo(n._dragStarted.bind(n, t, e)), H(document, "selectstart", n), go = !0, ua && W(document.body, "user-select", "none");
	},
	_onDragOver: function(e) {
		var t = this.el, n = e.target, r, i, a, o = this.options, s = o.group, c = q.active, l = io === s, u = o.sort, d = ao || c, f, p = this, m = !1;
		if (wo) return;
		function h(o, s) {
			Ka(o, p, $i({
				evt: e,
				isOwner: l,
				axis: f ? "vertical" : "horizontal",
				revert: a,
				dragRect: r,
				targetRect: i,
				canSort: u,
				fromSortable: d,
				target: n,
				completed: _,
				onMove: function(n, i) {
					return Bo(Ya, t, G, r, n, Sa(n), e, i);
				},
				changed: v
			}, s));
		}
		function g() {
			h("dragOverAnimationCapture"), p.captureAnimationState(), p !== d && d.captureAnimationState();
		}
		function _(r) {
			return h("dragOverCompleted", { insertion: r }), r && (l ? c._hideClone() : c._showClone(p), p !== d && (va(G, ao ? ao.options.ghostClass : c.options.ghostClass, !1), va(G, o.ghostClass, !0)), ao !== p && p !== q.active ? ao = p : p === q.active && ao && (ao = null), d === p && (p._ignoreWhileAnimating = n), p.animateAll(function() {
				h("dragOverAnimationComplete"), p._ignoreWhileAnimating = null;
			}), p !== d && (d.animateAll(), d._ignoreWhileAnimating = null)), (n === G && !G.animated || n === t && !n.animated) && (_o = null), !o.dragoverBubble && !e.rootEl && n !== document && (G.parentNode[La]._isOutsideThisEl(e.target), !r && Lo(e)), !o.dragoverBubble && e.stopPropagation && e.stopPropagation(), m = !0;
		}
		function v() {
			to = Ea(G), ro = Ea(G, o.draggable), qa({
				sortable: p,
				name: "change",
				toEl: t,
				newIndex: to,
				newDraggableIndex: ro,
				originalEvent: e
			});
		}
		if (e.preventDefault !== void 0 && e.cancelable && e.preventDefault(), n = ga(n, o.draggable, t, !0), h("dragOver"), q.eventCanceled) return m;
		if (G.contains(e.target) || n.animated && n.animatingX && n.animatingY || p._ignoreWhileAnimating === n) return _(!1);
		if (so = !1, c && !o.disabled && (l ? u || (a = Ja !== Ya) : ao === this || (this.lastPutMode = io.checkPull(this, c, G, e)) && s.checkPut(this, c, G, e))) {
			if (f = this._getDirection(e, n) === "vertical", r = Sa(G), h("dragOverValid"), q.eventCanceled) return m;
			if (a) return Ja = Ya, g(), this._hideClone(), h("revert"), q.eventCanceled || (Xa ? Ya.insertBefore(G, Xa) : Ya.appendChild(G)), _(!0);
			var y = Ta(t, o.draggable);
			if (!y || Wo(e, f, this) && !y.animated) {
				if (y === G) return _(!1);
				if (y && t === e.target && (n = y), n && (i = Sa(n)), Bo(Ya, t, G, r, n, i, e, !!n) !== !1) return g(), t.appendChild(G), Ja = t, v(), _(!0);
			} else if (y && Uo(e, f, this)) {
				var b = wa(t, 0, o, !0);
				if (b === G) return _(!1);
				if (n = b, i = Sa(n), Bo(Ya, t, G, r, n, i, e, !1) !== !1) return g(), t.insertBefore(G, b), Ja = t, v(), _(!0);
			} else if (n.parentNode === t) {
				i = Sa(n);
				var x = 0, S, C = G.parentNode !== t, w = !Mo(G.animated && G.toRect || r, n.animated && n.toRect || i, f), T = f ? "top" : "left", E = Ca(n, "top", "top") || Ca(G, "top", "top"), ee = E ? E.scrollTop : void 0;
				_o !== n && (S = i[T], yo = !1, bo = !w && o.invertSwap || C), x = Go(e, n, i, f, w ? 1 : o.swapThreshold, o.invertedSwapThreshold == null ? o.swapThreshold : o.invertedSwapThreshold, bo, _o === n);
				var D;
				if (x !== 0) {
					var O = Ea(G);
					do
						O -= x, D = Ja.children[O];
					while (D && (W(D, "display") === "none" || D === K));
				}
				if (x === 0 || D === n) return _(!1);
				_o = n, vo = x;
				var k = n.nextElementSibling, A = !1;
				A = x === 1;
				var te = Bo(Ya, t, G, r, n, i, e, A);
				if (te !== !1) return (te === 1 || te === -1) && (A = te === 1), wo = !0, setTimeout(Ho, 30), g(), A && !k ? t.appendChild(G) : n.parentNode.insertBefore(G, A ? k : n), E && Fa(E, 0, ee - E.scrollTop), Ja = G.parentNode, S !== void 0 && !bo && (xo = Math.abs(S - Sa(n)[T])), v(), _(!0);
			}
			if (t.contains(G)) return _(!1);
		}
		return !1;
	},
	_ignoreWhileAnimating: null,
	_offMoveEvents: function() {
		U(document, "mousemove", this._onTouchMove), U(document, "touchmove", this._onTouchMove), U(document, "pointermove", this._onTouchMove), U(document, "dragover", Lo), U(document, "mousemove", Lo), U(document, "touchmove", Lo);
	},
	_offUpEvents: function() {
		var e = this.el.ownerDocument;
		U(e, "mouseup", this._onDrop), U(e, "touchend", this._onDrop), U(e, "pointerup", this._onDrop), U(e, "touchcancel", this._onDrop), U(document, "selectstart", this);
	},
	_onDrop: function(e) {
		var t = this.el, n = this.options;
		if (to = Ea(G), ro = Ea(G, n.draggable), Ka("drop", this, { evt: e }), Ja = G && G.parentNode, to = Ea(G), ro = Ea(G, n.draggable), q.eventCanceled) {
			this._nulling();
			return;
		}
		oo = !1, bo = !1, yo = !1, clearInterval(this._loopId), clearTimeout(this._dragStartTimer), Xo(this.cloneId), Xo(this._dragStartId), this.nativeDraggable && (U(document, "drop", this), U(t, "dragstart", this._onDragStart)), this._offMoveEvents(), this._offUpEvents(), ua && W(document.body, "user-select", ""), W(G, "transform", ""), e && (go && (e.cancelable && e.preventDefault(), !n.dropBubble && e.stopPropagation()), K && K.parentNode && K.parentNode.removeChild(K), (Ya === Ja || ao && ao.lastPutMode !== "clone") && Qa && Qa.parentNode && Qa.parentNode.removeChild(Qa), G && (this.nativeDraggable && U(G, "dragend", this), Vo(G), G.style["will-change"] = "", go && !oo && va(G, ao ? ao.options.ghostClass : this.options.ghostClass, !1), va(G, this.options.chosenClass, !1), qa({
			sortable: this,
			name: "unchoose",
			toEl: Ja,
			newIndex: null,
			newDraggableIndex: null,
			originalEvent: e
		}), Ya === Ja ? to !== eo && to >= 0 && (qa({
			sortable: this,
			name: "update",
			toEl: Ja,
			originalEvent: e
		}), qa({
			sortable: this,
			name: "sort",
			toEl: Ja,
			originalEvent: e
		})) : (to >= 0 && (qa({
			rootEl: Ja,
			name: "add",
			toEl: Ja,
			fromEl: Ya,
			originalEvent: e
		}), qa({
			sortable: this,
			name: "remove",
			toEl: Ja,
			originalEvent: e
		}), qa({
			rootEl: Ja,
			name: "sort",
			toEl: Ja,
			fromEl: Ya,
			originalEvent: e
		}), qa({
			sortable: this,
			name: "sort",
			toEl: Ja,
			originalEvent: e
		})), ao && ao.save()), q.active && ((to == null || to === -1) && (to = eo, ro = no), qa({
			sortable: this,
			name: "end",
			toEl: Ja,
			originalEvent: e
		}), this.save()))), this._nulling();
	},
	_nulling: function() {
		Ka("nulling", this), Ya = G = Ja = K = Xa = Qa = Za = $a = lo = uo = go = to = ro = eo = no = _o = vo = ao = io = q.dragged = q.ghost = q.clone = q.active = null, To.forEach(function(e) {
			e.checked = !0;
		}), To.length = fo = po = 0;
	},
	handleEvent: function(e) {
		switch (e.type) {
			case "drop":
			case "dragend":
				this._onDrop(e);
				break;
			case "dragenter":
			case "dragover":
				G && (this._onDragOver(e), zo(e));
				break;
			case "selectstart":
				e.preventDefault();
				break;
		}
	},
	toArray: function() {
		for (var e = [], t, n = this.el.children, r = 0, i = n.length, a = this.options; r < i; r++) t = n[r], ga(t, a.draggable, this.el, !1) && e.push(t.getAttribute(a.dataIdAttr) || qo(t));
		return e;
	},
	sort: function(e, t) {
		var n = {}, r = this.el;
		this.toArray().forEach(function(e, t) {
			var i = r.children[t];
			ga(i, this.options.draggable, r, !1) && (n[e] = i);
		}, this), t && this.captureAnimationState(), e.forEach(function(e) {
			n[e] && (r.removeChild(n[e]), r.appendChild(n[e]));
		}), t && this.animateAll();
	},
	save: function() {
		var e = this.options.store;
		e && e.set && e.set(this);
	},
	closest: function(e, t) {
		return ga(e, t || this.options.draggable, this.el, !1);
	},
	option: function(e, t) {
		var n = this.options;
		if (t === void 0) return n[e];
		var r = Ua.modifyOption(this, e, t);
		r === void 0 ? n[e] = t : n[e] = r, e === "group" && Po(n);
	},
	destroy: function() {
		Ka("destroy", this);
		var e = this.el;
		e[La] = null, U(e, "mousedown", this._onTapStart), U(e, "touchstart", this._onTapStart), U(e, "pointerdown", this._onTapStart), this.nativeDraggable && (U(e, "dragover", this), U(e, "dragenter", this)), Array.prototype.forEach.call(e.querySelectorAll("[draggable]"), function(e) {
			e.removeAttribute("draggable");
		}), this._onDrop(), this._disableDelayedDragEvents(), co.splice(co.indexOf(this.el), 1), this.el = e = null;
	},
	_hideClone: function() {
		if (!$a) {
			if (Ka("hideClone", this), q.eventCanceled) return;
			W(Qa, "display", "none"), this.options.removeCloneOnHide && Qa.parentNode && Qa.parentNode.removeChild(Qa), $a = !0;
		}
	},
	_showClone: function(e) {
		if (e.lastPutMode !== "clone") {
			this._hideClone();
			return;
		}
		if ($a) {
			if (Ka("showClone", this), q.eventCanceled) return;
			G.parentNode == Ya && !this.options.group.revertClone ? Ya.insertBefore(Qa, G) : Xa ? Ya.insertBefore(Qa, Xa) : Ya.appendChild(Qa), this.options.group.revertClone && this.animate(G, Qa), W(Qa, "display", ""), $a = !1;
		}
	}
};
function zo(e) {
	e.dataTransfer && (e.dataTransfer.dropEffect = "move"), e.cancelable && e.preventDefault();
}
function Bo(e, t, n, r, i, a, o, s) {
	var c, l = e[La], u = l.options.onMove, d;
	return window.CustomEvent && !sa && !ca ? c = new CustomEvent("move", {
		bubbles: !0,
		cancelable: !0
	}) : (c = document.createEvent("Event"), c.initEvent("move", !0, !0)), c.to = t, c.from = e, c.dragged = n, c.draggedRect = r, c.related = i || t, c.relatedRect = a || Sa(t), c.willInsertAfter = s, c.originalEvent = o, e.dispatchEvent(c), u && (d = u.call(l, c, o)), d;
}
function Vo(e) {
	e.draggable = !1;
}
function Ho() {
	wo = !1;
}
function Uo(e, t, n) {
	var r = Sa(wa(n.el, 0, n.options, !0)), i = 10;
	return t ? e.clientX < r.left - i || e.clientY < r.top && e.clientX < r.right : e.clientY < r.top - i || e.clientY < r.bottom && e.clientX < r.left;
}
function Wo(e, t, n) {
	var r = Sa(Ta(n.el, n.options.draggable)), i = 10;
	return t ? e.clientX > r.right + i || e.clientX <= r.right && e.clientY > r.bottom && e.clientX >= r.left : e.clientX > r.right && e.clientY > r.top || e.clientX <= r.right && e.clientY > r.bottom + i;
}
function Go(e, t, n, r, i, a, o, s) {
	var c = r ? e.clientY : e.clientX, l = r ? n.height : n.width, u = r ? n.top : n.left, d = r ? n.bottom : n.right, f = !1;
	if (!o) {
		if (s && xo < l * i) {
			if (!yo && (vo === 1 ? c > u + l * a / 2 : c < d - l * a / 2) && (yo = !0), yo) f = !0;
			else if (vo === 1 ? c < u + xo : c > d - xo) return -vo;
		} else if (c > u + l * (1 - i) / 2 && c < d - l * (1 - i) / 2) return Ko(t);
	}
	return f ||= o, f && (c < u + l * a / 2 || c > d - l * a / 2) ? c > u + l / 2 ? 1 : -1 : 0;
}
function Ko(e) {
	return Ea(G) < Ea(e) ? 1 : -1;
}
function qo(e) {
	for (var t = e.tagName + e.className + e.src + e.href + e.textContent, n = t.length, r = 0; n--;) r += t.charCodeAt(n);
	return r.toString(36);
}
function Jo(e) {
	To.length = 0;
	for (var t = e.getElementsByTagName("input"), n = t.length; n--;) {
		var r = t[n];
		r.checked && To.push(r);
	}
}
function Yo(e) {
	return setTimeout(e, 0);
}
function Xo(e) {
	return clearTimeout(e);
}
Eo && H(document, "touchmove", function(e) {
	(q.active || oo) && e.cancelable && e.preventDefault();
}), q.utils = {
	on: H,
	off: U,
	css: W,
	find: ba,
	is: function(e, t) {
		return !!ga(e, t, e, !1);
	},
	extend: Aa,
	throttle: Na,
	closest: ga,
	toggleClass: va,
	clone: Ia,
	index: Ea,
	nextTick: Yo,
	cancelNextTick: Xo,
	detectDirection: jo,
	getChild: wa
}, q.get = function(e) {
	return e[La];
}, q.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 && (q.utils = $i($i({}, q.utils), e.utils)), Ua.mount(e);
	});
}, q.create = function(e, t) {
	return new q(e, t);
}, q.version = aa;
var Zo = [], Qo, $o, es = !1, ts, ns, rs, is;
function as() {
	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 t = e.originalEvent;
			this.sortable.nativeDraggable ? H(document, "dragover", this._handleAutoScroll) : this.options.supportPointer ? H(document, "pointermove", this._handleFallbackAutoScroll) : t.touches ? H(document, "touchmove", this._handleFallbackAutoScroll) : H(document, "mousemove", this._handleFallbackAutoScroll);
		},
		dragOverCompleted: function(e) {
			var t = e.originalEvent;
			!this.options.dragOverBubble && !t.rootEl && this._handleAutoScroll(t);
		},
		drop: function() {
			this.sortable.nativeDraggable ? U(document, "dragover", this._handleAutoScroll) : (U(document, "pointermove", this._handleFallbackAutoScroll), U(document, "touchmove", this._handleFallbackAutoScroll), U(document, "mousemove", this._handleFallbackAutoScroll)), ss(), os(), Pa();
		},
		nulling: function() {
			rs = $o = Qo = es = is = ts = ns = null, Zo.length = 0;
		},
		_handleFallbackAutoScroll: function(e) {
			this._handleAutoScroll(e, !0);
		},
		_handleAutoScroll: function(e, t) {
			var n = this, r = (e.touches ? e.touches[0] : e).clientX, i = (e.touches ? e.touches[0] : e).clientY, a = document.elementFromPoint(r, i);
			if (rs = e, t || this.options.forceAutoScrollFallback || ca || sa || ua) {
				cs(e, this.options, a, t);
				var o = ka(a, !0);
				es && (!is || r !== ts || i !== ns) && (is && ss(), is = setInterval(function() {
					var a = ka(document.elementFromPoint(r, i), !0);
					a !== o && (o = a, os()), cs(e, n.options, a, t);
				}, 10), ts = r, ns = i);
			} else {
				if (!this.options.bubbleScroll || ka(a, !0) === xa()) {
					os();
					return;
				}
				cs(e, this.options, ka(a, !1), !1);
			}
		}
	}, na(e, {
		pluginName: "scroll",
		initializeByDefault: !0
	});
}
function os() {
	Zo.forEach(function(e) {
		clearInterval(e.pid);
	}), Zo = [];
}
function ss() {
	clearInterval(is);
}
var cs = Na(function(e, t, n, r) {
	if (t.scroll) {
		var i = (e.touches ? e.touches[0] : e).clientX, a = (e.touches ? e.touches[0] : e).clientY, o = t.scrollSensitivity, s = t.scrollSpeed, c = xa(), l = !1, u;
		$o !== n && ($o = n, os(), Qo = t.scroll, u = t.scrollFn, Qo === !0 && (Qo = ka(n, !0)));
		var d = 0, f = Qo;
		do {
			var p = f, m = Sa(p), h = m.top, g = m.bottom, _ = m.left, v = m.right, y = m.width, b = m.height, x = void 0, S = void 0, C = p.scrollWidth, w = p.scrollHeight, T = W(p), E = p.scrollLeft, ee = p.scrollTop;
			p === c ? (x = y < C && (T.overflowX === "auto" || T.overflowX === "scroll" || T.overflowX === "visible"), S = b < w && (T.overflowY === "auto" || T.overflowY === "scroll" || T.overflowY === "visible")) : (x = y < C && (T.overflowX === "auto" || T.overflowX === "scroll"), S = b < w && (T.overflowY === "auto" || T.overflowY === "scroll"));
			var D = x && (Math.abs(v - i) <= o && E + y < C) - (Math.abs(_ - i) <= o && !!E), O = S && (Math.abs(g - a) <= o && ee + b < w) - (Math.abs(h - a) <= o && !!ee);
			if (!Zo[d]) for (var k = 0; k <= d; k++) Zo[k] || (Zo[k] = {});
			(Zo[d].vx != D || Zo[d].vy != O || Zo[d].el !== p) && (Zo[d].el = p, Zo[d].vx = D, Zo[d].vy = O, clearInterval(Zo[d].pid), (D != 0 || O != 0) && (l = !0, Zo[d].pid = setInterval(function() {
				r && this.layer === 0 && q.active._onTouchMove(rs);
				var t = Zo[this.layer].vy ? Zo[this.layer].vy * s : 0, n = Zo[this.layer].vx ? Zo[this.layer].vx * s : 0;
				typeof u == "function" && u.call(q.dragged.parentNode[La], n, t, e, rs, Zo[this.layer].el) !== "continue" || Fa(Zo[this.layer].el, n, t);
			}.bind({ layer: d }), 24))), d++;
		} while (t.bubbleScroll && f !== c && (f = ka(f, !1)));
		es = l;
	}
}, 30), ls = function(e) {
	var t = e.originalEvent, n = e.putSortable, r = e.dragEl, i = e.activeSortable, a = e.dispatchSortableEvent, o = e.hideGhostForTarget, s = e.unhideGhostForTarget;
	if (t) {
		var c = n || i;
		o();
		var l = t.changedTouches && t.changedTouches.length ? t.changedTouches[0] : t, u = document.elementFromPoint(l.clientX, l.clientY);
		s(), c && !c.el.contains(u) && (a("spill"), this.onSpill({
			dragEl: r,
			putSortable: n
		}));
	}
};
function us() {}
us.prototype = {
	startIndex: null,
	dragStart: function(e) {
		var t = e.oldDraggableIndex;
		this.startIndex = t;
	},
	onSpill: function(e) {
		var t = e.dragEl, n = e.putSortable;
		this.sortable.captureAnimationState(), n && n.captureAnimationState();
		var r = wa(this.sortable.el, this.startIndex, this.options);
		r ? this.sortable.el.insertBefore(t, r) : this.sortable.el.appendChild(t), this.sortable.animateAll(), n && n.animateAll();
	},
	drop: ls
}, na(us, { pluginName: "revertOnSpill" });
function ds() {}
ds.prototype = {
	onSpill: function(e) {
		var t = e.dragEl, n = e.putSortable || this.sortable;
		n.captureAnimationState(), t.parentNode && t.parentNode.removeChild(t), n.animateAll();
	},
	drop: ls
}, na(ds, { pluginName: "removeOnSpill" }), q.mount(new as()), q.mount(ds, us);
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/util/htmlHelper.js
function fs(e) {
	e.parentElement !== null && e.parentElement.removeChild(e);
}
function ps(e, t, n) {
	let r = n === 0 ? e.children[0] : e.children[n - 1].nextSibling;
	e.insertBefore(t, r);
}
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/util/console.js
function ms() {
	return typeof window < "u" ? window.console : global.console;
}
var hs = ms();
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/util/string.js
function gs(e) {
	let t = Object.create(null);
	return function(n) {
		return t[n] || (t[n] = e(n));
	};
}
var _s = /-(\w)/g, vs = gs((e) => e.replace(_s, (e, t) => t.toUpperCase())), ys = [
	"Start",
	"Add",
	"Remove",
	"Update",
	"End"
], bs = [
	"Choose",
	"Unchoose",
	"Sort",
	"Filter",
	"Clone"
], xs = ["Move"], Ss = [
	xs,
	ys,
	bs
].flatMap((e) => e).map((e) => `on${e}`), Cs = {
	manage: xs,
	manageAndEmit: ys,
	emit: bs
};
function ws(e) {
	return Ss.indexOf(e) !== -1;
}
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/util/tags.js
var Ts = /* @__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 Es(e) {
	return Ts.includes(e);
}
function Ds(e) {
	return ["transition-group", "TransitionGroup"].includes(e);
}
function Os(e) {
	return [
		"id",
		"class",
		"role",
		"style"
	].includes(e) || e.startsWith("data-") || e.startsWith("aria-") || e.startsWith("on");
}
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/core/componentBuilderHelper.js
function ks(e) {
	return e.reduce((e, [t, n]) => (e[t] = n, e), {});
}
function As({ $attrs: e, componentData: t = {} }) {
	return {
		...ks(Object.entries(e).filter(([e, t]) => Os(e))),
		...t
	};
}
function js({ $attrs: e, callBackBuilder: t }) {
	let n = ks(Ms(e));
	Object.entries(t).forEach(([e, t]) => {
		Cs[e].forEach((e) => {
			n[`on${e}`] = t(e);
		});
	});
	let r = `[data-draggable]${n.draggable || ""}`;
	return {
		...n,
		draggable: r
	};
}
function Ms(e) {
	return Object.entries(e).filter(([e, t]) => !Os(e)).map(([e, t]) => [vs(e), t]).filter(([e, t]) => !ws(e));
}
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/core/componentStructure.js
var Ns = ({ el: e }) => e, Ps = (e, t) => e.__draggable_context = t, Fs = (e) => e.__draggable_context, Is = class {
	constructor({ nodes: { header: e, default: t, footer: n }, root: r, realList: i }) {
		this.defaultNodes = t, this.children = [
			...e,
			...t,
			...n
		], this.externalComponent = r.externalComponent, this.rootTransition = r.transition, this.tag = r.tag, this.realList = i;
	}
	get _isRootComponent() {
		return this.externalComponent || this.rootTransition;
	}
	render(e, t) {
		let { tag: n, children: r, _isRootComponent: i } = this;
		return e(n, t, i ? { default: () => r } : r);
	}
	updated() {
		let { defaultNodes: e, realList: t } = this;
		e.forEach((e, n) => {
			Ps(Ns(e), {
				element: t[n],
				index: n
			});
		});
	}
	getUnderlyingVm(e) {
		return Fs(e);
	}
	getVmIndexFromDomIndex(e, t) {
		let { defaultNodes: n } = this, { length: r } = n, i = t.children, a = i.item(e);
		if (a === null) return r;
		let o = Fs(a);
		if (o) return o.index;
		if (r === 0) return 0;
		let s = Ns(n[0]);
		return e < [...i].findIndex((e) => e === s) ? 0 : r;
	}
};
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/core/renderHelper.js
function Ls(e, t) {
	let n = e[t];
	return n ? n() : [];
}
function Rs({ $slots: e, realList: t, getKey: n }) {
	let r = t || [], [i, a] = ["header", "footer"].map((t) => Ls(e, t)), { item: o } = e;
	if (!o) throw Error("draggable element must have an item slot");
	let s = r.flatMap((e, t) => o({
		element: e,
		index: t
	}).map((t) => (t.key = n(e), t.props = {
		...t.props || {},
		"data-draggable": !0
	}, t)));
	if (s.length !== r.length) throw Error("Item slot must have only one child");
	return {
		header: i,
		footer: a,
		default: s
	};
}
function zs(e) {
	let t = Ds(e), n = !Es(e) && !t;
	return {
		transition: t,
		externalComponent: n,
		tag: n ? ge(e) : t ? T : e
	};
}
function Bs({ $slots: e, tag: t, realList: n, getKey: r }) {
	return new Is({
		nodes: Rs({
			$slots: e,
			realList: n,
			getKey: r
		}),
		root: zs(t),
		realList: n
	});
}
//#endregion
//#region node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.39/node_modules/vuedraggable/src/vuedraggable.js
function Vs(e, t) {
	se(() => this.$emit(e.toLowerCase(), t));
}
function Hs(e) {
	return (t, n) => {
		if (this.realList !== null) return this[`onDrag${e}`](t, n);
	};
}
function Us(e) {
	let t = Hs.call(this, e);
	return (n, r) => {
		t.call(this, n, r), Vs.call(this, e, n);
	};
}
var Ws = null, Gs = A({
	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",
		...[...Cs.manageAndEmit, ...Cs.emit].map((e) => e.toLowerCase())
	],
	data() {
		return { error: !1 };
	},
	render() {
		try {
			this.error = !1;
			let { $slots: e, $attrs: t, tag: n, componentData: r, realList: i, getKey: a } = this, o = Bs({
				$slots: e,
				tag: n,
				realList: i,
				getKey: a
			});
			this.componentStructure = o;
			let s = As({
				$attrs: t,
				componentData: r
			});
			return o.render(j, s);
		} catch (e) {
			return this.error = !0, j("pre", { style: { color: "red" } }, e.stack);
		}
	},
	created() {
		this.list !== null && this.modelValue !== null && hs.error("modelValue and list props are mutually exclusive! Please set one or another.");
	},
	mounted() {
		if (this.error) return;
		let { $attrs: e, $el: t, componentStructure: n } = this;
		n.updated();
		let r = js({
			$attrs: e,
			callBackBuilder: {
				manageAndEmit: (e) => Us.call(this, e),
				emit: (e) => Vs.bind(this, e),
				manage: (e) => Hs.call(this, e)
			}
		}), i = t.nodeType === 1 ? t : t.parentElement;
		this._sortable = new q(i, r), this.targetDomElement = i, i.__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 : (t) => t[e];
		}
	},
	watch: { $attrs: {
		handler(e) {
			let { _sortable: t } = this;
			t && Ms(e).forEach(([e, n]) => {
				t.option(e, n);
			});
		},
		deep: !0
	} },
	methods: {
		getUnderlyingVm(e) {
			return this.componentStructure.getUnderlyingVm(e) || null;
		},
		getUnderlyingPotencialDraggableComponent(e) {
			return e.__draggable_component__;
		},
		emitChanges(e) {
			se(() => this.$emit("change", e));
		},
		alterList(e) {
			if (this.list) {
				e(this.list);
				return;
			}
			let t = [...this.modelValue];
			e(t), this.$emit("update:modelValue", t);
		},
		spliceList() {
			this.alterList((e) => e.splice(...arguments));
		},
		updatePosition(e, t) {
			this.alterList((n) => n.splice(t, 0, n.splice(e, 1)[0]));
		},
		getRelatedContextFromMoveEvent({ to: e, related: t }) {
			let n = this.getUnderlyingPotencialDraggableComponent(e);
			if (!n) return { component: n };
			let r = n.realList, i = {
				list: r,
				component: n
			};
			return e !== t && r ? {
				...n.getUnderlyingVm(t) || {},
				...i
			} : i;
		},
		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), Ws = e.item;
		},
		onDragAdd(e) {
			let t = e.item._underlying_vm_;
			if (t === void 0) return;
			fs(e.item);
			let n = this.getVmIndexFromDomIndex(e.newIndex);
			this.spliceList(n, 0, t);
			let r = {
				element: t,
				newIndex: n
			};
			this.emitChanges({ added: r });
		},
		onDragRemove(e) {
			if (ps(this.$el, e.item, e.oldIndex), e.pullMode === "clone") {
				fs(e.clone);
				return;
			}
			let { index: t, element: n } = this.context;
			this.spliceList(t, 1);
			let r = {
				element: n,
				oldIndex: t
			};
			this.emitChanges({ removed: r });
		},
		onDragUpdate(e) {
			fs(e.item), ps(e.from, e.item, e.oldIndex);
			let t = this.context.index, n = this.getVmIndexFromDomIndex(e.newIndex);
			this.updatePosition(t, n);
			let r = {
				element: this.context.element,
				oldIndex: t,
				newIndex: n
			};
			this.emitChanges({ moved: r });
		},
		computeFutureIndex(e, t) {
			if (!e.element) return 0;
			let n = [...t.to.children].filter((e) => e.style.display !== "none"), r = n.indexOf(t.related), i = e.component.getVmIndexFromDomIndex(r);
			return n.indexOf(Ws) !== -1 || !t.willInsertAfter ? i : i + 1;
		},
		onDragMove(e, t) {
			let { move: n, realList: r } = this;
			if (!n || !r) return !0;
			let i = this.getRelatedContextFromMoveEvent(e), a = this.computeFutureIndex(i, e), o = {
				...this.context,
				futureIndex: a
			};
			return n({
				...e,
				relatedContext: i,
				draggedContext: o
			}, t);
		},
		onDragEnd() {
			Ws = null;
		}
	}
}), Ks = (e, t) => {
	let n = (e) => {
		let n = t.targetKeys.indexOf(e.key);
		t.targetKeys.splice(n, 1);
	};
	return O(gt, {
		class: "newbie-search-sortable",
		selectedKeys: t.selectedKeys,
		"onUpdate:selectedKeys": (e) => t.selectedKeys = e,
		targetKeys: t.targetKeys,
		"onUpdate:targetKeys": (e) => t.targetKeys = e,
		locale: {
			itemUnit: "",
			itemsUnit: "",
			notFoundContent: _("common.no-data"),
			searchPlaceholder: _("form.search-placeholder"),
			titles: [_("search.sortable-items"), _("search.sorted-items")]
		},
		listStyle: { minWidth: "300px" },
		dataSource: e,
		titles: [_("search.sortable-items"), _("search.sorted-items")],
		oneWay: !0,
		render: (e) => e.title
	}, { children({ direction: r, filteredItems: i }) {
		if (r === "right") return i.length ? O(Gs, {
			class: "list-group",
			itemKey: "key",
			tag: "div",
			modelValue: t.targetKeys,
			"onUpdate:modelValue": (e) => t.targetKeys = e,
			sort: !0,
			animation: 0,
			group: "sortables",
			ghostClass: "ghost",
			handle: ".drag-handle"
		}, { item: ({ element: t }) => {
			let r = Tt(e, { key: t });
			return r.direction ||= "asc", O("div", { class: "newbie-search-sortable__sortable-item" }, [
				O("span", { class: "drag-handle" }, [O(gn, null, null)]),
				O("div", { class: "newbie-search-sortable__sortable-item-content" }, [O("span", { class: "newbie-search-sortable__sortable-item-title" }, [r.title]), O("span", { class: "newbie-search-sortable__sortable-item-sorter" }, [O(ht, {
					title: r.direction === "asc" ? _("search.ascending") : _("search.descending"),
					placement: "left"
				}, { default: () => [O(L, {
					size: "small",
					type: r.direction === "asc" ? "primary" : "default",
					icon: r.direction === "asc" ? O(Cn, null, null) : O(sn, null, null),
					onClick: () => r.direction = r.direction === "asc" ? "desc" : "asc"
				}, null)] })])]),
				O("span", { class: "newbie-search-sortable__sortable-item-delete" }, [O(ht, {
					title: _("search.remove-item"),
					placement: "right"
				}, { default: () => [O(L, {
					type: "danger",
					icon: O($t, null, null),
					onClick: () => n(r)
				}, null)] })])
			]);
		} }) : O("div", { class: "newbie-search-sortable__sortable-empty" }, [_("search.select-sorting-item")]);
	} });
}, qs = /* @__PURE__ */ A((e, { slots: t, emit: n }) => {
	let r = P();
	return di(r, (e) => {
		n("trigger", e);
	}, e.options), () => {
		if (t.default) return j(e.as || "div", { ref: r }, t.default());
	};
}, {
	name: "OnClickOutside",
	props: ["as", "options"],
	emits: ["trigger"]
});
Pr({ mounted(e, t) {
	let n = t.arg?.split(",") ?? !0;
	if (typeof t.value == "function") _i(n, t.value, { target: e });
	else {
		let [r, i] = t.value;
		_i(n, r, {
			target: e,
			...i
		});
	}
} }), Pr({ mounted(e, t) {
	typeof t.value == "function" ? bi(e, t.value, { modifiers: t.modifiers }) : bi(e, ...t.value);
} }), Pr({ mounted(e, t) {
	let [n, r] = typeof t.value == "function" ? [t.value, {}] : t.value, { height: i, bottom: a, left: o, right: s, top: c, width: l, x: u, y: d } = Di(e, r);
	I([
		i,
		a,
		o,
		s,
		c,
		l,
		u,
		d
	], () => n({
		height: i,
		bottom: a,
		left: o,
		right: s,
		top: c,
		width: l,
		x: u,
		y: d
	}));
} }), Pr({ mounted(e, t) {
	let n = t.value;
	if (typeof n == "function") I(Oi(e), (e) => n(e));
	else {
		let [t, r] = n;
		I(Oi(e, r), (e) => t(e));
	}
} }), Pr({ mounted(e, t) {
	let n = typeof t.value == "function" ? t.value : t.value?.[0], { width: r, height: i } = ki(e, ...typeof t.value == "function" ? [] : t.value.slice(1));
	I([r, i], ([e, t]) => n({
		width: e,
		height: t
	}));
} }), Pr({ mounted(e, t) {
	if (typeof t.value == "function") {
		let n = t.value;
		I(ji(e), (e) => n(e), { immediate: !0 });
	} else {
		let [n, r] = t.value;
		if (r?.controls) {
			let t = ji(e, r);
			I(t.isVisible, () => n(t), { immediate: !0 });
		} else I(ji(e, r), (e) => n(e), { immediate: !0 });
	}
} }), Pr({ mounted(e, t) {
	typeof t.value == "function" ? Fi(e, t.value) : Fi(e, ...t.value);
} }), Pr({ mounted(e, t) {
	typeof t.value == "function" ? Ai(e, t.value) : Ai(e, ...t.value);
} }), Pr({ mounted(e, t) {
	let [n, r] = typeof t.value == "function" ? [t.value, {}] : t.value;
	I(Qr(me(Ri(e, r)), "stop"), (e) => n(e));
} }), Pr({ mounted(e, t) {
	typeof t.value == "function" ? Ei(e, t.value) : Ei(e, ...t.value);
} }), Pr({ mounted(e, t) {
	if (typeof t.value == "function") {
		let n = t.value, r = Pi(e, {
			onScroll() {
				n(r);
			},
			onStop() {
				n(r);
			}
		});
	} else {
		let [n, r] = t.value, i = Pi(e, {
			...r,
			onScroll(e) {
				var t;
				(t = r.onScroll) == null || t.call(r, e), n(i);
			},
			onStop(e) {
				var t;
				(t = r.onStop) == null || t.call(r, e), n(i);
			}
		});
	}
} });
function Js() {
	let e = !1, t = P(!1);
	return Pr((n, r) => {
		if (t.value = r.value, e) return;
		e = !0;
		let i = Hi(n, r.value);
		I(t, (e) => i.value = e);
	});
}
Js();
//#endregion
//#region node_modules/.pnpm/animejs@4.5.0/node_modules/animejs/dist/modules/core/consts.js
var Ys = typeof window < "u", Xs = Ys ? window : null, Zs = Ys ? document : null, Qs = {
	OBJECT: 0,
	ATTRIBUTE: 1,
	CSS: 2,
	TRANSFORM: 3,
	CSS_VAR: 4
}, J = {
	NUMBER: 0,
	UNIT: 1,
	COLOR: 2,
	COMPLEX: 3
}, $s = {
	NONE: 0,
	AUTO: 1,
	FORCE: 2
}, ec = {
	replace: 0,
	none: 1,
	blend: 2
}, tc = Symbol(), nc = Symbol(), rc = Symbol(), ic = Symbol(), ac = Symbol(), oc = 1e-11, sc = 0xe8d4a51000, cc = 1e3, lc = [], uc = /*#__PURE__*/ (() => {
	let e = /* @__PURE__ */ new Map();
	return e.set("x", "translateX"), e.set("y", "translateY"), e.set("z", "translateZ"), e;
})(), dc = [
	"perspective",
	"translateX",
	"translateY",
	"translateZ",
	"rotate",
	"rotateX",
	"rotateY",
	"rotateZ",
	"scale",
	"scaleX",
	"scaleY",
	"scaleZ",
	"skew",
	"skewX",
	"skewY"
], fc = /*#__PURE__*/ dc.reduce((e, t) => ({
	...e,
	[t]: t + "("
}), {}), pc = () => {}, mc = (e) => e, hc = /\)\s*[-.\d]/, gc = /(^#([\da-f]{3}){1,2}$)|(^#([\da-f]{4}){1,2}$)/i, _c = /rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i, vc = /rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(-?\d+|-?\d*.\d+)\s*\)/i, yc = /hsl\(\s*(-?\d+|-?\d*.\d+)\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)%\s*\)/i, bc = /hsla\(\s*(-?\d+|-?\d*.\d+)\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)\s*\)/i, xc = /[-+]?\d*\.?\d+(?:e[-+]?\d)?/gi, Sc = /^([-+]?\d*\.?\d+(?:e[-+]?\d+)?)([a-z]+|%)$/i, Cc = /([a-z])([A-Z])/g, wc = /var\(\s*(--[\w-]+)(?:\s*,\s*([^)]+))?\s*\)/, Tc = {
	id: null,
	keyframes: null,
	playbackEase: null,
	playbackRate: 1,
	frameRate: 240,
	loop: 0,
	reversed: !1,
	alternate: !1,
	autoplay: !0,
	persist: !1,
	duration: cc,
	delay: 0,
	loopDelay: 0,
	ease: "out(2)",
	composition: ec.replace,
	modifier: mc,
	onBegin: pc,
	onBeforeUpdate: pc,
	onUpdate: pc,
	onLoop: pc,
	onPause: pc,
	onComplete: pc,
	onRender: pc
}, Ec = {
	current: null,
	root: Zs
}, Dc = {
	defaults: Tc,
	precision: 4,
	timeScale: 1,
	tickThreshold: 200,
	editor: null
}, Oc = {
	version: "4.5.0",
	engine: null
};
Ys && (Xs.AnimeJS ||= [], Xs.AnimeJS.push(Oc));
//#endregion
//#region node_modules/.pnpm/animejs@4.5.0/node_modules/animejs/dist/modules/core/helpers.js
var kc = (e) => e.replace(Cc, "$1-$2").toLowerCase(), Ac = (e, t) => e.indexOf(t) === 0, jc = Date.now, Mc = Array.isArray, Nc = (e) => e && e.constructor === Object, Pc = (e) => typeof e == "number" && !isNaN(e), Fc = (e) => typeof e == "string", Ic = (e) => typeof e == "function", Lc = (e) => e === void 0, Rc = (e) => Lc(e) || e === null, zc = (e) => Ys && e instanceof SVGElement, Bc = (e) => gc.test(e), Vc = (e) => Ac(e, "rgb"), Hc = (e) => Ac(e, "hsl"), Uc = (e) => Bc(e) || (Vc(e) || Hc(e)) && (e[e.length - 1] === ")" || !hc.test(e)), Wc = (e) => !Dc.defaults.hasOwnProperty(e), Gc = [
	"opacity",
	"rotate",
	"overflow",
	"color"
], Kc = (e, t) => {
	if (Gc.includes(t)) return !1;
	if (e.getAttribute(t) || t in e) {
		if (t === "scale") {
			let t = e.parentNode;
			return t && t.tagName === "filter";
		}
		return !0;
	}
}, qc = Math.pow, Jc = Math.sqrt, Yc = Math.sin, Xc = Math.cos, Zc = Math.floor, Qc = Math.asin, $c = Math.PI, el = Math.round, tl = (e, t, n) => e < t ? t : e > n ? n : e, Y = (e, t) => {
	if (t < 0) return e;
	if (!t) return el(e);
	let n = 10 ** t;
	return el(e * n) / n;
}, nl = (e, t, n) => n === 1 ? t : n === 0 ? e : e + (t - e) * n, rl = (e) => e === Infinity ? sc : e === -Infinity ? -sc : e, il = (e) => e <= 1e-11 ? oc : rl(Y(e, 11)), al = (e) => Mc(e) ? [...e] : e, ol = (e, t) => {
	let n = { ...e };
	for (let r in t) {
		let i = e[r];
		n[r] = Lc(i) ? t[r] : i;
	}
	return n;
}, sl = (e, t, n, r = "_prev", i = "_next") => {
	let a = e._head, o = i;
	for (n && (a = e._tail, o = r); a;) {
		let e = a[o];
		t(a), a = e;
	}
}, cl = (e, t, n = "_prev", r = "_next") => {
	let i = t[n], a = t[r];
	i ? i[r] = a : e._head = a, a ? a[n] = i : e._tail = i, t[n] = null, t[r] = null;
}, ll = (e, t, n, r = "_prev", i = "_next") => {
	let a = e._tail;
	for (; a && n && n(a, t);) a = a[r];
	let o = a ? a[i] : e._head;
	a ? a[i] = t : e._head = t, o ? o[r] = t : e._tail = t, t[r] = a, t[i] = o;
}, ul = (e, t, n) => {
	let r = e.style.transform;
	if (r) {
		let i = e[ic], a = 0, o = r.length, s;
		for (; a < o;) {
			for (; a < o && r.charCodeAt(a) === 32;) a++;
			if (a >= o) break;
			let e = a;
			for (; a < o && r.charCodeAt(a) !== 40;) a++;
			if (a >= o) break;
			let t = r.substring(e, a), n = 1, c = a + 1, l = -1, u = -1;
			for (a++; a < o && n > 0;) {
				let e = r.charCodeAt(a);
				e === 40 ? n++ : e === 41 ? n-- : e === 44 && n === 1 && (l === -1 ? l = a : u === -1 && (u = a)), a++;
			}
			let d = a - 1;
			t === "translate" || t === "translate3d" ? (l === -1 ? i.translateX = r.substring(c, d).trim() : (i.translateX = r.substring(c, l).trim(), u === -1 ? i.translateY = r.substring(l + 1, d).trim() : (i.translateY = r.substring(l + 1, u).trim(), i.translateZ = r.substring(u + 1, d).trim())), s = r.substring(c, d)) : t === "scale" || t === "scale3d" ? l === -1 ? i.scale = r.substring(c, d).trim() : (i.scaleX = r.substring(c, l).trim(), u === -1 ? i.scaleY = r.substring(l + 1, d).trim() : (i.scaleY = r.substring(l + 1, u).trim(), i.scaleZ = r.substring(u + 1, d).trim())) : i[t] = r.substring(c, d);
		}
		if (t === "translate3d" && s) return n && (n[t] = s), s;
		let c = i[t];
		if (!Lc(c)) return n && (n[t] = c), c;
	}
	return t === "translate3d" ? "0px, 0px, 0px" : t === "rotate3d" ? "0, 0, 0, 0deg" : Ac(t, "scale") ? "1" : Ac(t, "rotate") || Ac(t, "skew") ? "0deg" : "0px";
}, dl = (e) => {
	let t = "";
	for (let n = 0, r = dc.length; n < r; n++) {
		let r = dc[n], i = e[r];
		if (i !== void 0) {
			if (r === "translateX") {
				let r = e.translateY;
				if (r !== void 0) {
					let a = e.translateZ;
					a === void 0 ? (t += `translate(${i},${r}) `, n += 1) : (t += `translate3d(${i},${r},${a}) `, n += 2);
					continue;
				}
			}
			if (r === "scaleX" && e.scale === void 0) {
				let r = e.scaleY;
				if (r !== void 0) {
					let a = e.scaleZ;
					a === void 0 ? (t += `scale(${i},${r}) `, n += 1) : (t += `scale3d(${i},${r},${a}) `, n += 2);
					continue;
				}
			}
			t += `${fc[r]}${i}) `;
		}
		r === "rotateZ" && e.rotate3d !== void 0 && (t += `rotate3d(${e.rotate3d}) `);
	}
	return e.matrix !== void 0 && (t += `matrix(${e.matrix}) `), e.matrix3d !== void 0 && (t += `matrix3d(${e.matrix3d}) `), t;
}, fl = [];
function pl(e, t) {
	if (!e) return null;
	let n = fl.length;
	outer: for (let r = 0; r < n; r++) {
		let n = fl[r];
		if (n.detect && !n.detect(e)) continue;
		let i = n.targetAdapters;
		for (let n = 0, r = i.length; n < r; n++) {
			let r = i[n];
			if (r.detect(e)) {
				let n = r.props[t];
				if (n && (!n.gate || n.gate(e))) return n;
				break outer;
			}
		}
	}
	for (let r = 0; r < n; r++) {
		let n = fl[r];
		if (n.detect && !n.detect(e)) continue;
		let i = n.propertyResolvers;
		for (let n = 0, r = i.length; n < r; n++) {
			let r = i[n](e, t);
			if (r) return r;
		}
	}
	return null;
}
//#endregion
//#region node_modules/.pnpm/animejs@4.5.0/node_modules/animejs/dist/modules/core/colors.js
var ml = (e) => {
	let t = _c.exec(e) || vc.exec(e), n = Lc(t[4]) ? 1 : +t[4];
	return [
		+t[1],
		+t[2],
		+t[3],
		n
	];
}, hl = (e) => {
	let t = e.length, n = t === 4 || t === 5;
	return [
		+("0x" + e[1] + e[n ? 1 : 2]),
		+("0x" + e[n ? 2 : 3] + e[n ? 2 : 4]),
		+("0x" + e[n ? 3 : 5] + e[n ? 3 : 6]),
		t === 5 || t === 9 ? +(("0x" + e[n ? 4 : 7] + e[n ? 4 : 8]) / 255).toFixed(3) : 1
	];
}, gl = (e, t, n) => (n < 0 && (n += 1), n > 1 && --n, n < 1 / 6 ? e + (t - e) * 6 * n : n < 1 / 2 ? t : n < 2 / 3 ? e + (t - e) * (2 / 3 - n) * 6 : e), _l = (e) => {
	let t = yc.exec(e) || bc.exec(e), n = t[1] / 360, r = t[2] / 100, i = t[3] / 100, a = Lc(t[4]) ? 1 : +t[4], o, s, c;
	if (r === 0) o = s = c = i;
	else {
		let e = i < .5 ? i * (1 + r) : i + r - i * r, t = 2 * i - e;
		o = Y(gl(t, e, n + 1 / 3) * 255, 0), s = Y(gl(t, e, n) * 255, 0), c = Y(gl(t, e, n - 1 / 3) * 255, 0);
	}
	return [
		o,
		s,
		c,
		a
	];
}, vl = (e) => Vc(e) ? ml(e) : Bc(e) ? hl(e) : Hc(e) ? _l(e) : [
	0,
	0,
	0,
	1
], yl = (e, t) => Lc(e) ? t : e, bl = (e, t) => {
	let n = e.match(wc), r = t[nc] ? t : document.documentElement, i = getComputedStyle(r)?.getPropertyValue(n[1]);
	return (!i || i.trim() === "") && n[2] && (i = n[2].trim()), i || 0;
}, xl = (e, t, n, r, i, a) => {
	if (Ic(e)) {
		if (!i) {
			let i = e(t, n, r, a);
			return isNaN(+i) ? i || 0 : +i;
		}
		let o = () => {
			let i = e(t, n, r, a);
			return isNaN(+i) ? i || 0 : +i;
		};
		return i.func = o, o();
	}
	if (Fc(e) && Ac(e, "var(")) {
		if (!i) return bl(e, t);
		let n = () => bl(e, t);
		return i.func = n, n();
	}
	return e;
}, Sl = (e, t) => e[nc] ? e[rc] && Kc(e, t) ? Qs.ATTRIBUTE : dc.includes(t) || uc.get(t) ? Qs.TRANSFORM : Ac(t, "--") ? Qs.CSS_VAR : t in e.style ? Qs.CSS : t in e ? Qs.OBJECT : Qs.ATTRIBUTE : Qs.OBJECT, Cl = (e, t, n) => {
	let r = e.style[t];
	r && n && (n[t] = r);
	let i = r || getComputedStyle(e[ac] || e).getPropertyValue(t);
	return i === "auto" ? "0" : i;
}, wl = (e, t, n, r) => {
	let i = Lc(n) ? Sl(e, t) : n, a = pl(e, t);
	if (a) {
		let n = a.get(e);
		return n && r && (r[t] = n), n ?? 0;
	}
	if (i === Qs.OBJECT) {
		let n = e[t];
		return n && r && (r[t] = n), n || 0;
	}
	if (i === Qs.ATTRIBUTE) {
		let n = e.getAttribute(t);
		return n && r && (r[t] = n), n;
	}
	return i === Qs.TRANSFORM ? ul(e, t, r) : i === Qs.CSS_VAR ? Cl(e, t, r).trimStart() : Cl(e, t, r);
}, Tl = (e, t, n) => n === "-" ? e - t : n === "+" ? e + t : e * t, El = () => ({
	t: J.NUMBER,
	n: 0,
	u: null,
	o: null,
	d: null,
	s: null
}), Dl = (e, t) => {
	if (t.t = J.NUMBER, t.n = 0, t.u = null, t.o = null, t.d = null, t.s = null, !e) return t;
	let n = +e;
	if (!isNaN(n)) return t.n = n, t;
	let r = e;
	r[1] === "=" && (t.o = r[0], r = r.slice(2));
	let i = r.includes(" ") ? !1 : Sc.exec(r);
	if (i) return t.t = J.UNIT, t.n = +i[1], t.u = i[2], t;
	if (t.o) return t.n = +r, t;
	if (Uc(r)) return t.t = J.COLOR, t.d = vl(r), t;
	{
		let e = r.match(xc);
		return t.t = J.COMPLEX, t.d = e ? e.map(Number) : [], t.s = r.split(xc) || [], t;
	}
}, Ol = (e, t) => (t.t = e._valueType, t.n = e._toNumber, t.u = e._unit, t.o = null, t.d = al(e._toNumbers), t.s = al(e._strings), t), kl = El(), Al = (e, t, n) => {
	let r = e._modifier, i = e._fromNumbers, a = e._toNumbers, o = e._strings, s = o[0];
	for (let c = 0, l = a.length; c < l; c++) {
		let l = r(Y(nl(i[c], a[c], t), n)), u = o[c + 1];
		s += `${u ? l + u : l}`, e._numbers[c] = l;
	}
	return s;
}, jl = (e, t, n, r, i) => {
	let a = e.parent, o = e.duration, s = e.completed, c = e.iterationDuration, l = e.iterationCount, u = e._currentIteration, d = e._loopDelay, f = e._reversed, p = e._alternate, m = e._hasChildren, h = e._delay, g = e._currentTime, _ = h + c, v = t - h, y = tl(g, -h, o), b = tl(v, -h, o), x = v - g, S = b > 0, C = b >= o, w = o <= oc, T = i === $s.FORCE, E = 0, ee = v, D = 0;
	if (l > 1) {
		let t = c + (C ? 0 : d), n = ~~(b / t);
		e._currentIteration = tl(n, 0, l), C && e._currentIteration--, E = e._currentIteration % 2, ee = b - n * t || 0;
	}
	let O = f ^ (p && E), k = e._ease, A = C ? O ? 0 : o : O ? c - ee : ee;
	k && (A = c * k(A / c) || 0);
	let te = (a ? a.backwards : v < g) ? !O : !!O;
	if (e._currentTime = v, e._iterationTime = A, e.backwards = te, S && !e.began ? (e.began = !0, !n && !(a && (te || !a.began)) && e.onBegin(e)) : v <= 0 && (e.began = !1), !n && !m && S && e._currentIteration !== u && e.onLoop(e), T || i === $s.AUTO && (t >= (a && h > 0 ? 0 : h) && t <= _ || t <= h && y > h || t >= _ && y !== o) || A >= _ && y !== o || A <= h && y > 0 && !C || t <= y && y === o && s || C && !s && w) {
		if (S && (e.computeDeltaTime(y), n || e.onBeforeUpdate(e)), !m) {
			let t = T || (te ? x * -1 : x) >= Dc.tickThreshold, i = Y(e._offset + (a ? a._offset : 0) + h + A, 12), o = e._head, s, c, l, u, d = 0;
			for (; o;) {
				let e = o._composition, n = o._currentTime, a = o._changeDuration, f = o._absoluteStartTime + o._changeDuration, p = o._nextRep, m = o._prevRep, h = e !== ec.none, g = m ? m._absoluteStartTime + m._changeDuration : 0, _ = m && m.parent !== o.parent, v = !p || p._isOverridden ? f : p.parent === o.parent ? f + p._delay : p._absoluteStartTime < p._absoluteUpdateStartTime ? p._absoluteStartTime : p._absoluteUpdateStartTime;
				if ((t || (n !== a || i <= v || m && !_ && (!p || p.parent !== o.parent)) && (n !== 0 || i >= o._absoluteStartTime || _ && !o._hasFromValue && !m._isOverridden && i >= g || p && !p._isOverridden && p.parent === o.parent && p._currentTime !== 0 && A < p._startTime)) && (!m || _ || A >= o._startTime) && (!h || !o._isOverridden && (!o._isOverlapped || i <= f) && (!p || p._isOverridden || i <= v) && (!m || m._isOverridden || (_ ? i >= o._absoluteStartTime || !o._hasFromValue && i >= g : i >= g + o._delay)))) {
					let t = o._currentTime = tl(A - o._startTime, 0, a), n = o._ease(t / o._updateDuration), i = o._modifier, f = o._valueType, p = o._tweenType, m = p === Qs.OBJECT, g = f === J.NUMBER, _ = g && m || n === 0 || n === 1 ? -1 : Dc.precision, v, y;
					if (g) v = y = i(Y(nl(o._fromNumber, o._toNumber, n), _));
					else if (f === J.UNIT) y = i(Y(nl(o._fromNumber, o._toNumber, n), _)), v = `${y}${o._unit}`;
					else if (f === J.COLOR) {
						let e = o._numbers, t = o._fromNumbers, a = o._toNumbers, s = 1 - n, c = t[0], l = t[1], u = t[2], d = a[0], f = a[1], p = a[2];
						e[0] = i(Math.sqrt(c * c * s + d * d * n)), e[1] = i(Math.sqrt(l * l * s + f * f * n)), e[2] = i(Math.sqrt(u * u * s + p * p * n)), e[3] = i(nl(t[3], a[3], n)), (!o._setter || r) && (v = `rgba(${Y(e[0], 0)},${Y(e[1], 0)},${Y(e[2], 0)},${e[3]})`);
					} else f === J.COMPLEX && (v = Al(o, n, _));
					if (h && (o._number = y), !r && e !== ec.blend) {
						let e = o.property;
						s = o.target, o._setter ? o._setter(s, y, o) : m ? s[e] = v : p === Qs.ATTRIBUTE ? s.setAttribute(e, v) : (c = s.style, p === Qs.TRANSFORM ? (s !== l && (l = s, u = s[ic]), u[e] = v, d = 1) : p === Qs.CSS ? c[e] = v : p === Qs.CSS_VAR && c.setProperty(e, v)), S && (D = 1);
					} else o._value = v;
				} else n && m && !_ && A < o._startTime && (o._currentTime = 0);
				d && o._renderTransforms && (c.transform = dl(u), d = 0), o = o._next;
			}
			!n && D && e.onRender(e);
		}
		!n && S && e.onUpdate(e);
	}
	return a && w ? !n && (a.began && !te && v > 0 && !s || te && v <= 1e-11 && s) && (e.onComplete(e), e.completed = !te) : S && C ? l === Infinity ? e._startTime += e.duration : e._currentIteration >= l - 1 && (e.paused = !0, !s && !m && (e.completed = !0, !n && !(a && (te || !a.began)) && (e.onComplete(e), e._resolve(e)))) : e.completed = !1, D;
}, Ml = (e, t, n, r, i) => {
	let a = e._currentIteration;
	if (jl(e, t, n, r, i), e._hasChildren) {
		let o = e, s = o.backwards, c = r ? t : o._iterationTime, l = jc(), u = 0, d = !0;
		if (!r && o._currentIteration !== a) {
			let e = o.iterationDuration;
			sl(o, (t) => {
				if (!s) !t.completed && !t.backwards && t._currentTime < t.iterationDuration && jl(t, e, n, 1, $s.FORCE), t.began = !1, t.completed = !1;
				else {
					let r = t.duration, i = t._offset + t._delay, a = i + r;
					!n && r <= 1e-11 && (!i || a === e) && t.onComplete(t);
				}
			}), n || o.onLoop(o);
		}
		sl(o, (e) => {
			let t = Y((c - e._offset) * e._speed, 12);
			if (s && t > e._delay + e.duration) return;
			let a = e._fps < o._fps ? e.requestTick(l) : i;
			u += jl(e, t, n, r, a), !e.completed && d && (d = !1);
		}, s), !n && u && o.onRender(o), (d || s) && o._currentTime >= o.duration && (o.paused = !0, o.completed || (o.completed = !0, n || (o.onComplete(o), o._resolve(o))));
	}
}, Nl = {}, Pl = (e, t, n) => {
	if (n === Qs.TRANSFORM) return uc.get(e) || e;
	if (n === Qs.CSS || n === Qs.ATTRIBUTE && zc(t) && e in t.style) {
		let t = Nl[e];
		if (t) return t;
		{
			let t = e && kc(e);
			return Nl[e] = t, t;
		}
	} else return e;
}, Fl = (e, t = !1) => {
	if (e._hasChildren) sl(e, (e) => Fl(e, t), !0);
	else {
		let n = e;
		n.pause(), sl(n, (e) => {
			let r = e.property, i = e.target, a = e._tweenType, o = e._inlineValue, s = Rc(o) || o === "";
			if (e._setter) {
				if (!t && !s) {
					if (Dl(o, kl), kl.d) {
						let t = kl.d, n = e._numbers;
						for (let e = 0, r = t.length; e < r; e++) n[e] = t[e];
					} else e._number = kl.n;
					e._setter(e.target, e._number, e);
				}
			} else if (a === Qs.OBJECT) !t && !s && (i[r] = o);
			else if (i[nc]) if (a === Qs.ATTRIBUTE) t || (s ? i.removeAttribute(r) : i.setAttribute(r, o));
			else {
				let t = i.style;
				if (a === Qs.TRANSFORM) {
					let n = i[ic];
					s ? delete n[r] : n[r] = o, e._renderTransforms && (Object.keys(n).length ? t.transform = dl(n) : t.removeProperty("transform"));
				} else s ? t.removeProperty(kc(r)) : t[r] = o;
			}
			i[nc] && n._tail === e && n.targets.forEach((e) => {
				e.getAttribute && e.getAttribute("style") === "" && e.removeAttribute("style");
			});
		});
	}
	return e;
}, Il = class {
	constructor(e = 0) {
		this.deltaTime = 0, this._currentTime = e, this._lastTickTime = e, this._startTime = e, this._lastTime = e, this._frameDuration = cc / 240, this._fps = 240, this._speed = 1, this._hasChildren = !1, this._head = null, this._tail = null;
	}
	get fps() {
		return this._fps;
	}
	set fps(e) {
		let t = +e, n = t < 1e-11 ? oc : t, r = cc / n;
		n > Tc.frameRate && (Tc.frameRate = n), this._fps = n, this._frameDuration = r;
	}
	get speed() {
		return this._speed;
	}
	set speed(e) {
		let t = +e;
		this._speed = t < 1e-11 ? oc : t;
	}
	requestTick(e) {
		let t = this._frameDuration, n = e - this._lastTickTime, r = t * .25;
		return n + (r < 4 ? r : 4) < t ? $s.NONE : (this._lastTickTime = n >= t ? e - n % t : e, $s.AUTO);
	}
	computeDeltaTime(e) {
		let t = e - this._lastTime;
		return this.deltaTime = t, this._lastTime = e, t;
	}
}, Ll = {
	animation: null,
	update: pc
}, Rl = (e) => {
	let t = Ll.animation;
	return t || (t = {
		duration: oc,
		computeDeltaTime: pc,
		_offset: 0,
		_delay: 0,
		_head: null,
		_tail: null
	}, Ll.animation = t, Ll.update = () => {
		e.forEach((e) => {
			for (let t in e) {
				let n = e[t], r = n._head;
				if (r) {
					let e = r._valueType, t = e === J.COMPLEX || e === J.COLOR ? al(r._fromNumbers) : null, i = r._fromNumber, a = n._tail;
					for (; a && a !== r;) {
						if (t) for (let e = 0, n = a._numbers.length; e < n; e++) t[e] += a._numbers[e];
						else i += a._number;
						a = a._prevAdd;
					}
					r._toNumber = i, r._toNumbers = t;
				}
			}
		}), jl(t, 1, 1, 0, $s.FORCE);
	}), t;
}, zl = Ys ? requestAnimationFrame : setImmediate, Bl = Ys ? cancelAnimationFrame : clearImmediate, Vl = class extends Il {
	constructor(e) {
		super(e), this.useDefaultMainLoop = !0, this.pauseOnDocumentHidden = !0, this.defaults = Tc, this.paused = !0, this.reqId = 0;
	}
	update() {
		let e = this._currentTime = jc();
		if (this.requestTick(e)) {
			this.computeDeltaTime(e);
			let t = this._speed, n = this._fps, r = this._head;
			for (; r;) {
				let i = r._next;
				r.paused ? (cl(this, r), this._hasChildren = !!this._tail, r._running = !1, r.completed && !r._cancelled && r.cancel()) : Ml(r, (e - r._startTime) * r._speed * t, 0, 0, r._fps < n ? r.requestTick(e) : $s.AUTO), r = i;
			}
			Ll.update();
		}
	}
	wake() {
		return this.useDefaultMainLoop && !this.reqId && (this.requestTick(jc()), this.reqId = zl(Ul)), this;
	}
	pause() {
		if (this.reqId) return this.paused = !0, Wl();
	}
	resume() {
		if (this.paused) return this.paused = !1, sl(this, (e) => e.resetTime()), this.wake();
	}
	get speed() {
		return this._speed * (Dc.timeScale === 1 ? 1 : cc);
	}
	set speed(e) {
		let t = e * Dc.timeScale;
		this._speed !== t && (this._speed = t, sl(this, (e) => e.speed = e._speed));
	}
	get timeUnit() {
		return Dc.timeScale === 1 ? "ms" : "s";
	}
	set timeUnit(e) {
		let t = .001, n = e === "s", r = n ? t : 1;
		if (Dc.timeScale !== r) {
			Dc.timeScale = r, Dc.tickThreshold = 200 * r;
			let e = n ? t : cc;
			this.defaults.duration *= e, this._speed *= e;
		}
	}
	get precision() {
		return Dc.precision;
	}
	set precision(e) {
		Dc.precision = e;
	}
}, Hl = /*#__PURE__*/ (() => {
	let e = new Vl(jc());
	return Ys && (Oc.engine = e, Zs.addEventListener("visibilitychange", () => {
		e.pauseOnDocumentHidden && (Zs.hidden ? e.pause() : e.resume());
	})), e;
})(), Ul = () => {
	Hl._head ? (Hl.reqId = zl(Ul), Hl.update()) : Hl.reqId = 0;
}, Wl = () => (Bl(Hl.reqId), Hl.reqId = 0, Hl), Gl = {
	_rep: /* @__PURE__ */ new WeakMap(),
	_add: /* @__PURE__ */ new Map()
}, Kl = (e, t, n = "_rep") => {
	let r = Gl[n], i = r.get(e);
	return i || (i = {}, r.set(e, i)), i[t] ? i[t] : i[t] = {
		_head: null,
		_tail: null
	};
}, ql = (e, t) => e._isOverridden || e._absoluteStartTime > t._absoluteStartTime, Jl = (e) => {
	e._isOverlapped = 1, e._isOverridden = 1, e._changeDuration = oc, e._currentTime = oc;
}, Yl = (e, t) => {
	let n = e._composition;
	if (n === ec.replace) {
		let n = e._absoluteStartTime;
		ll(t, e, ql, "_prevRep", "_nextRep");
		let r = e._prevRep;
		if (r) {
			let t = r.parent, i = r._absoluteEndTime;
			if (e.parent.id !== t.id && t.iterationCount > 1 && i + (t.duration - t.iterationDuration) > n) {
				Jl(r);
				let e = r._prevRep;
				for (; e && e.parent.id === t.id;) Jl(e), e = e._prevRep;
			}
			let a = e._absoluteUpdateStartTime;
			if (i > a) {
				let e = r._startTime, t = Y(a - (i - (e + r._updateDuration)) - e, 12);
				r._changeDuration = t, r._currentTime = t, r._isOverlapped = 1, t < 1e-11 && Jl(r);
			}
			let o = e.parent.parent;
			if (!o || o !== t.parent) {
				let e = !0;
				if (sl(t, (t) => {
					t._isOverlapped || (e = !1);
				}), e) {
					let e = t.parent;
					if (e) {
						let n = !0;
						sl(e, (e) => {
							e !== t && sl(e, (e) => {
								e._isOverlapped || (n = !1);
							});
						}), n && e.cancel();
					} else t.cancel();
				}
			}
		}
	} else if (n === ec.blend) {
		let t = Kl(e.target, e.property, "_add"), n = Rl(Gl._add), r = t._head;
		r || (r = { ...e }, r._composition = ec.replace, r._updateDuration = oc, r._startTime = 0, r._numbers = al(e._fromNumbers), r._number = 0, r._next = null, r._prev = null, ll(t, r), ll(n, r));
		let i = e._toNumber;
		if (e._fromNumber = r._fromNumber - i, e._toNumber = 0, e._numbers = al(e._fromNumbers), e._number = 0, r._fromNumber = i, e._toNumbers.length) {
			let t = al(e._toNumbers);
			t.forEach((t, n) => {
				e._fromNumbers[n] = r._fromNumbers[n] - t, e._toNumbers[n] = 0;
			}), r._fromNumbers = t;
		}
		ll(t, e, null, "_prevAdd", "_nextAdd");
	}
	return e;
}, Xl = (e) => {
	let t = e._composition;
	if (t !== ec.none) {
		let n = e.target, r = e.property, i = Gl._rep.get(n)[r];
		if (cl(i, e, "_prevRep", "_nextRep"), t === ec.blend) {
			let t = Gl._add, i = t.get(n);
			if (!i) return;
			let a = i[r], o = Ll.animation;
			cl(a, e, "_prevAdd", "_nextAdd");
			let s = a._head;
			if (s && s === a._tail) {
				cl(a, s, "_prevAdd", "_nextAdd"), cl(o, s);
				let e = !0;
				for (let t in i) if (i[t]._head) {
					e = !1;
					break;
				}
				e && t.delete(n);
			}
		}
	}
	return e;
}, Zl = (e) => (e.paused = !0, e.began = !1, e.completed = !1, e), Ql = (e) => e._cancelled ? (e._hasChildren ? sl(e, Ql) : sl(e, (e) => {
	e._composition !== ec.none && Yl(e, Kl(e.target, e.property));
}), e._cancelled = 0, e) : e, $l = 0, eu = (e, t) => e._priority > t._priority, tu = class extends Il {
	constructor(e = {}, t = null, n = 0) {
		super(0), ++$l;
		let { id: r, delay: i, duration: a, reversed: o, alternate: s, loop: c, loopDelay: l, autoplay: u, frameRate: d, playbackRate: f, priority: p, onComplete: m, onLoop: h, onPause: g, onBegin: _, onBeforeUpdate: v, onUpdate: y } = e;
		Ec.current && Ec.current.register(this);
		let b = t ? 0 : Hl._lastTickTime, x = t ? t.defaults : Dc.defaults, S = Ic(i) || Lc(i) ? x.delay : +i, C = Ic(a) || Lc(a) ? Infinity : +a, w = yl(c, x.loop), T = yl(l, x.loopDelay), E = w === !0 || w === Infinity || w < 0 ? Infinity : w + 1, ee = 0;
		t ? ee = n : (Hl.reqId || Hl.requestTick(jc()), ee = (Hl._lastTickTime - Hl._startTime) * Dc.timeScale), this.id = Lc(r) ? $l : r, this.parent = t, this.duration = rl((C + T) * E - T) || 1e-11, this.backwards = !1, this.paused = !0, this.began = !1, this.completed = !1, this.onBegin = _ || x.onBegin, this.onBeforeUpdate = v || x.onBeforeUpdate, this.onUpdate = y || x.onUpdate, this.onLoop = h || x.onLoop, this.onPause = g || x.onPause, this.onComplete = m || x.onComplete, this.iterationDuration = C, this.iterationCount = E, this._autoplay = t ? !1 : yl(u, x.autoplay), this._offset = ee, this._delay = S, this._loopDelay = T, this._iterationTime = 0, this._currentIteration = 0, this._resolve = pc, this._running = !1, this._reversed = +yl(o, x.reversed), this._reverse = this._reversed, this._cancelled = 0, this._alternate = yl(s, x.alternate), this._prev = null, this._next = null, this._lastTickTime = b, this._startTime = b, this._lastTime = b, this._fps = yl(d, x.frameRate), this._speed = yl(f, x.playbackRate), this._priority = +yl(p, 1);
	}
	get cancelled() {
		return !!this._cancelled;
	}
	set cancelled(e) {
		e ? this.cancel() : this.reset(!0).play();
	}
	get currentTime() {
		return tl(Y(this._currentTime, Dc.precision), -this._delay, this.duration);
	}
	set currentTime(e) {
		let t = this.paused;
		this.pause().seek(+e), t || this.resume();
	}
	get iterationCurrentTime() {
		return tl(Y(this._iterationTime, Dc.precision), 0, this.iterationDuration);
	}
	set iterationCurrentTime(e) {
		this.currentTime = this.iterationDuration * this._currentIteration + e;
	}
	get progress() {
		return tl(Y(this._currentTime / this.duration, 10), 0, 1);
	}
	set progress(e) {
		this.currentTime = this.duration * e;
	}
	get iterationProgress() {
		return tl(Y(this._iterationTime / this.iterationDuration, 10), 0, 1);
	}
	set iterationProgress(e) {
		let t = this.iterationDuration;
		this.currentTime = t * this._currentIteration + t * e;
	}
	get currentIteration() {
		return this._currentIteration;
	}
	set currentIteration(e) {
		this.currentTime = this.iterationDuration * tl(+e, 0, this.iterationCount - 1);
	}
	get reversed() {
		return !!this._reversed;
	}
	set reversed(e) {
		e ? this.reverse() : this.play();
	}
	get speed() {
		return super.speed;
	}
	set speed(e) {
		super.speed = e, this.resetTime();
	}
	reset(e = !1) {
		return Ql(this), this._reversed && !this._reverse && (this.reversed = !1), this._iterationTime = this.iterationDuration, Ml(this, 0, 1, ~~e, $s.FORCE), Zl(this), this._hasChildren && sl(this, Zl), this;
	}
	init(e = !1) {
		this.fps = this._fps, this.speed = this._speed, !e && this._hasChildren && Ml(this, this.duration, 1, ~~e, $s.FORCE), this.reset(e);
		let t = this._autoplay;
		return t === !0 ? this.resume() : t && !Lc(t.linked) && t.link(this), this;
	}
	resetTime() {
		let e = 1 / (this._speed * Hl._speed);
		return this._startTime = jc() - (this._currentTime + this._delay) * e, this;
	}
	pause() {
		return this.paused ? this : (this.paused = !0, this.onPause(this), this);
	}
	resume() {
		return this.paused ? (this.paused = !1, this.duration <= 1e-11 && !this._hasChildren ? Ml(this, oc, 0, 0, $s.FORCE) : (this._running ||= (ll(Hl, this, eu), Hl._hasChildren = !0, !0), this.resetTime(), this._startTime -= 12, Hl.wake()), this) : this;
	}
	restart() {
		return this.reset().resume();
	}
	seek(e, t = 0, n = 0) {
		Ql(this), this.completed = !1;
		let r = this.paused;
		return this.paused = !0, Ml(this, e + this._delay, ~~t, ~~n, $s.AUTO), r ? this : this.resume();
	}
	alternate() {
		let e = this._reversed, t = this.iterationCount, n = this.iterationDuration, r = t === Infinity ? Zc(sc / n) : t;
		return this._reversed = +(this._alternate && !(r % 2) ? e : !e), t === Infinity ? this.iterationProgress = this._reversed ? 1 - this.iterationProgress : this.iterationProgress : this.seek(n * r - this._currentTime), this.resetTime(), this;
	}
	play() {
		return this._reversed && this.alternate(), this.resume();
	}
	reverse() {
		return this._reversed || this.alternate(), this.resume();
	}
	cancel() {
		return this._hasChildren ? sl(this, (e) => e.cancel(), !0) : sl(this, Xl), this._cancelled = 1, this.pause();
	}
	stretch(e) {
		let t = this.duration, n = il(e);
		if (t === n) return this;
		let r = e / t, i = e <= oc;
		return this.duration = i ? oc : n, this.iterationDuration = i ? oc : il(this.iterationDuration * r), this._offset *= r, this._delay *= r, this._loopDelay *= r, this;
	}
	revert() {
		Ml(this, 0, 1, 0, $s.AUTO);
		let e = this._autoplay;
		return e && e.linked && e.linked === this && e.revert(), this.cancel();
	}
	complete(e = 0) {
		return this.seek(this.duration, e).cancel();
	}
	then(e = pc) {
		let t = this.then, n = () => {
			this.then = null, e(this), this.then = t, this._resolve = pc;
		};
		return new Promise((e) => (this._resolve = () => e(n()), this.completed && this._resolve(), this));
	}
};
//#endregion
//#region node_modules/.pnpm/animejs@4.5.0/node_modules/animejs/dist/modules/core/targets.js
function nu(e) {
	let t = Fc(e) ? Ec.root.querySelectorAll(e) : e;
	if (t instanceof NodeList || t instanceof HTMLCollection) return t;
}
function ru(e) {
	if (Rc(e)) return [];
	if (!Ys) return Mc(e) && e.flat(Infinity) || [e];
	if (Mc(e)) {
		let t = e.flat(Infinity), n = [];
		for (let e = 0, r = t.length; e < r; e++) {
			let r = t[e];
			if (!Rc(r)) {
				let e = nu(r);
				if (e) for (let t = 0, r = e.length; t < r; t++) {
					let r = e[t];
					if (!Rc(r)) {
						let e = !1;
						for (let t = 0, i = n.length; t < i; t++) if (n[t] === r) {
							e = !0;
							break;
						}
						e || n.push(r);
					}
				}
				else {
					let e = !1;
					for (let t = 0, i = n.length; t < i; t++) if (n[t] === r) {
						e = !0;
						break;
					}
					e || n.push(r);
				}
			}
		}
		return n;
	}
	let t = nu(e);
	return t ? Array.from(t) : [e];
}
function iu(e) {
	let t = ru(e), n = t.length;
	for (let e = 0; e < n; e++) {
		let n = t[e];
		if (!n[tc]) {
			n[tc] = !0;
			let e = zc(n);
			(n.nodeType || e) && (n[nc] = !0, n[rc] = e, n[ic] = {});
		}
	}
	return t;
}
//#endregion
//#region node_modules/.pnpm/animejs@4.5.0/node_modules/animejs/dist/modules/core/units.js
var au = {
	deg: 1,
	rad: 180 / $c,
	turn: 360
}, ou = {}, su = (e, t, n, r = !1) => {
	let i = t.u, a = t.n;
	if (t.t === J.UNIT && i === n) return t;
	let o = a + i + n, s = ou[o];
	if (!Lc(s) && !r) t.n = s;
	else {
		let r;
		if (i in au) r = a * au[i] / au[n];
		else {
			let t = e.cloneNode(), o = e.parentNode, s = o && o !== Zs ? o : Zs.body;
			s.appendChild(t);
			let c = t.style;
			c.width = 100 + i;
			let l = t.offsetWidth || 100;
			c.width = 100 + n;
			let u = l / (t.offsetWidth || 100);
			s.removeChild(t), r = u * a;
		}
		t.n = r, ou[o] = r;
	}
	return t.t, J.UNIT, t.u = n, t;
}, cu = (e) => e, lu = (e = 1.68) => (t) => qc(t, +e), uu = {
	in: (e) => (t) => e(t),
	out: (e) => (t) => 1 - e(1 - t),
	inOut: (e) => (t) => t < .5 ? e(t * 2) / 2 : 1 - e(t * -2 + 2) / 2,
	outIn: (e) => (t) => t < .5 ? (1 - e(1 - t * 2)) / 2 : (e(t * 2 - 1) + 1) / 2
}, du = $c / 2, fu = $c * 2, pu = {
	"": lu,
	Quad: lu(2),
	Cubic: lu(3),
	Quart: lu(4),
	Quint: lu(5),
	Sine: (e) => 1 - Xc(e * du),
	Circ: (e) => 1 - Jc(1 - e * e),
	Expo: (e) => e ? qc(2, 10 * e - 10) : 0,
	Bounce: (e) => {
		let t, n = 4;
		for (; e < ((t = qc(2, --n)) - 1) / 11;);
		return 1 / qc(4, 3 - n) - 7.5625 * qc((t * 3 - 2) / 22 - e, 2);
	},
	Back: (e = 1.7) => (t) => (+e + 1) * t * t * t - +e * t * t,
	Elastic: (e = 1, t = .3) => {
		let n = tl(+e, 1, 10), r = tl(+t, oc, 2), i = r / fu * Qc(1 / n), a = fu / r;
		return (e) => e === 0 || e === 1 ? e : -n * qc(2, -10 * (1 - e)) * Yc((1 - e - i) * a);
	}
}, mu = /*#__PURE__ */ (() => {
	let e = {
		linear: cu,
		none: cu
	};
	for (let t in uu) for (let n in pu) {
		let r = pu[n], i = uu[t];
		e[t + n] = n === "" || n === "Back" || n === "Elastic" ? (e, t) => i(r(e, t)) : i(r);
	}
	return e;
})(), hu = {
	linear: cu,
	none: cu
}, gu = (e) => {
	if (hu[e]) return hu[e];
	if (e.indexOf("(") <= -1) {
		let t = uu[e] || e.includes("Back") || e.includes("Elastic") ? mu[e]() : mu[e];
		return t ? hu[e] = t : cu;
	} else {
		let t = e.slice(0, -1).split("("), n = mu[t[0]];
		return n ? hu[e] = n(...t[1].split(",")) : cu;
	}
}, _u = [
	"steps(",
	"irregular(",
	"linear(",
	"cubicBezier("
], vu = (e) => {
	if (Fc(e)) {
		for (let t = 0, n = _u.length; t < n; t++) if (Ac(e, _u[t])) return console.warn(`String syntax for \`ease: "${e}"\` has been removed from the core and replaced by importing and passing the easing function directly: \`ease: ${e}\``), cu;
	}
	return Ic(e) ? e : Fc(e) ? gu(e) : cu;
}, X = El(), Z = El(), yu = {}, bu = { func: null }, xu = { func: null }, Su = [null], Cu = [null, null], wu = { to: null }, Tu = 0, Eu = 0, Du, Ou, ku = (e, t) => {
	let n = {};
	if (Mc(e)) {
		let t = [].concat(...e.map((e) => Object.keys(e))).filter(Wc);
		for (let r = 0, i = t.length; r < i; r++) {
			let i = t[r];
			n[i] = e.map((e) => {
				let t = {};
				for (let n in e) {
					let r = e[n];
					Wc(n) ? n === i && (t.to = r) : t[n] = r;
				}
				return t;
			});
		}
	} else {
		let r = yl(t.duration, Dc.defaults.duration);
		Object.keys(e).map((t) => ({
			o: parseFloat(t) / 100,
			p: e[t]
		})).sort((e, t) => e.o - t.o).forEach((e) => {
			let t = e.o, i = e.p;
			for (let e in i) if (Wc(e)) {
				let a = n[e];
				a ||= n[e] = [];
				let o = t * r, s = a.length, c = a[s - 1], l = { to: i[e] }, u = 0;
				for (let e = 0; e < s; e++) u += a[e].duration;
				s === 1 && (l.from = c.to), i.ease && (l.ease = i.ease), l.duration = o - (s ? u : 0), a.push(l);
			}
			return e;
		});
		for (let e in n) {
			let t = n[e], r;
			for (let e = 0, n = t.length; e < n; e++) {
				let n = t[e], i = n.ease;
				n.ease = r || void 0, r = i;
			}
			t[0].duration || t.shift();
		}
	}
	return n;
}, Au = class extends tu {
	constructor(e, t, n, r, i = !1, a = 0, o) {
		super(t, n, r), this._head, this._tail, ++Eu;
		let s = iu(e), c = s.length, l = t.keyframes, u = l ? ol(ku(l, t), t) : t, { id: d, delay: f, duration: p, ease: m, playbackEase: h, modifier: g, composition: _, onRender: v } = u, y = n ? n.defaults : Dc.defaults, b = yl(m, y.ease), x = yl(h, y.playbackEase), S = x ? vu(x) : null, C = !Lc(b.ease), w = C ? b.ease : yl(m, S ? "linear" : y.ease), T = C ? b.settlingDuration : yl(p, y.duration), E = yl(f, y.delay), ee = g || y.modifier, D = Lc(_) && c >= 1e3 ? ec.none : Lc(_) ? y.composition : _, O = this._offset + (n ? n._offset : 0);
		C && (b.parent = this);
		let k = NaN, A = NaN, te = 0, ne = 0;
		for (let e = 0; e < c; e++) {
			let t = s[e], r = a || e, c = o || s, l = NaN, d = NaN;
			for (let e in u) if (Wc(e)) {
				let a = Sl(t, e), o = pl(t, e), s = Pl(e, t, a), f = u[e], p = Mc(f);
				if (i && !p && (Cu[0] = f, Cu[1] = f, f = Cu), p) {
					let e = f.length, t = !Nc(f[0]);
					e === 2 && t ? (wu.to = f, Su[0] = wu, Du = Su) : e > 2 && t ? (Du = [], f.forEach((e, t) => {
						t ? t === 1 ? (Cu[1] = e, Du.push(Cu)) : Du.push(e) : Cu[0] = e;
					})) : Du = f;
				} else Su[0] = f, Du = Su;
				let m = null, h = null, g = NaN, _ = 0, v = 0;
				for (let e = Du.length; v < e; v++) {
					let i = Du[v];
					Nc(i) ? Ou = i : (wu.to = i, Ou = wu), bu.func = null, xu.func = null;
					let l = xl(yl(Ou.composition, D), t, r, c, null, null), u = Pc(l) ? l : ec[l];
					!m && u !== ec.none && (m = Kl(t, s));
					let d = m ? m._tail : null, f = n && d && d.parent.parent === n ? d : h, p = xl(Ou.to, t, r, c, bu, f), y;
					Nc(p) && !Lc(p.to) ? (Ou = p, y = p.to) : y = p;
					let b = xl(Ou.from, t, r, c, xu, f), x = Ou.ease || w, S = xl(x, t, r, c, null, f), C = Ic(S) || Fc(S) ? S : x, k = !Lc(C) && !Lc(C.ease), A = k ? C.ease : C, re = k ? C.settlingDuration : xl(yl(Ou.duration, e > 1 ? xl(T, t, r, c, null, f) / e : T), t, r, c, null, f), j = xl(yl(Ou.delay, v ? 0 : E), t, r, c, null, f), ie = Ou.modifier || ee, ae = !Lc(b), oe = !Lc(y), M = Mc(y), se = M || ae && oe, ce = h ? _ : 0, le = h ? _ + j : j, ue = Y(O + le, 12), de = Y(O + ce, 12);
					!ne && (ae || M) && (ne = 1);
					let fe = h;
					if (u !== ec.none) {
						let e = m._head;
						for (; e && e._absoluteStartTime <= ue;) if (e._isOverridden || (fe = e), e = e._nextRep, e && e._absoluteStartTime >= ue) for (; e;) Jl(e), e = e._nextRep;
					}
					if (se) {
						Dl(M ? xl(y[0], t, r, c, xu, f) : b, X), Dl(M ? xl(y[1], t, r, c, bu, f) : y, Z);
						let e = wl(t, s, a, yu);
						X.t === J.NUMBER && (fe ? fe._valueType === J.UNIT && (X.t = J.UNIT, X.u = fe._unit) : (Dl(e, kl), kl.t === J.UNIT && (X.t = J.UNIT, X.u = kl.u)));
					} else oe ? Dl(y, Z) : h ? Ol(h, Z) : Dl(n && fe && fe.parent.parent === n ? fe._value : wl(t, s, a, yu), Z), ae ? Dl(b, X) : h ? Ol(h, X) : Dl(n && fe && fe.parent.parent === n ? fe._value : wl(t, s, a, yu), X);
					if (X.o && (X.n = Tl(fe ? fe._toNumber : Dl(wl(t, s, a, yu), kl).n, X.n, X.o)), Z.o && (Z.n = Tl(X.n, Z.n, Z.o)), X.t !== Z.t) {
						if (X.t === J.COMPLEX || Z.t === J.COMPLEX) {
							let e = X.t === J.COMPLEX ? X : Z, t = X.t === J.COMPLEX ? Z : X;
							t.t = J.COMPLEX, t.s = al(e.s), t.d = e.d.map(() => t.n);
						} else if (X.t === J.UNIT || Z.t === J.UNIT) {
							let e = X.t === J.UNIT ? X : Z, t = X.t === J.UNIT ? Z : X;
							t.t = J.UNIT, t.u = e.u;
						} else if (X.t === J.COLOR || Z.t === J.COLOR) {
							let e = X.t === J.COLOR ? X : Z, t = X.t === J.COLOR ? Z : X;
							t.t = J.COLOR, t.d = e.d.map(() => 0);
						}
					}
					if (X.u !== Z.u) {
						let e = Z.u ? X : Z;
						e = su(t, e, Z.u ? Z.u : X.u, !1);
					}
					if (Z.d && X.d && Z.d.length !== X.d.length) {
						let e = X.d.length > Z.d.length ? X : Z, t = e === X ? Z : X;
						t.d = e.d.map((e, n) => Lc(t.d[n]) ? 0 : t.d[n]), t.s = al(e.s);
					}
					let pe = Y(+re || 1e-11, 12), me = yu[s];
					Rc(me) || (yu[s] = null);
					let he = o ? o.set : null;
					_ = Y(le + pe, 12);
					let N = X.d, ge = Z.d, _e = Z.s, P = {
						parent: this,
						id: Tu++,
						property: s,
						target: t,
						_value: null,
						_toFunc: bu.func,
						_fromFunc: xu.func,
						_ease: vu(A),
						_fromNumbers: N ? al(N) : lc,
						_toNumbers: ge ? al(ge) : lc,
						_strings: _e ? al(_e) : lc,
						_fromNumber: X.n,
						_toNumber: Z.n,
						_numbers: N ? al(N) : lc,
						_number: X.n,
						_unit: Z.u,
						_modifier: ie,
						_currentTime: 0,
						_startTime: le,
						_delay: +j,
						_updateDuration: pe,
						_changeDuration: pe,
						_absoluteStartTime: ue,
						_absoluteUpdateStartTime: de,
						_absoluteEndTime: Y(O + _, 12),
						_hasFromValue: ae || M ? 1 : 0,
						_tweenType: a,
						_setter: he,
						_valueType: Z.t,
						_composition: u,
						_isOverlapped: 0,
						_isOverridden: 0,
						_renderTransforms: 0,
						_inlineValue: me,
						_prevRep: null,
						_nextRep: null,
						_prevAdd: null,
						_nextAdd: null,
						_prev: null,
						_next: null
					};
					u !== ec.none && Yl(P, m);
					let ve = P._valueType;
					if (ve === J.COMPLEX) P._value = Al(P, 1, -1);
					else if (ve === J.UNIT) P._value = `${ie(P._toNumber)}${P._unit}`;
					else if (ve === J.COLOR) {
						let e = Z.d;
						P._value = `rgba(${Y(e[0], 0)},${Y(e[1], 0)},${Y(e[2], 0)},${e[3]})`;
					} else P._value = ie(P._toNumber);
					isNaN(g) && (g = P._startTime), h = P, te++, ll(this, P);
				}
				(isNaN(A) || g < A) && (A = g), (isNaN(k) || _ > k) && (k = _), a === Qs.TRANSFORM && (l = te - v, d = te);
			}
			if (!isNaN(l)) {
				let e = 0;
				sl(this, (t) => {
					e >= l && e < d && (t._renderTransforms = 1, t._composition === ec.blend && sl(Ll.animation, (e) => {
						e.id === t.id && (e._renderTransforms = 1);
					})), e++;
				});
			}
		}
		c || console.warn("No target found. Make sure the element you're trying to animate is accessible before creating your animation."), A ? (sl(this, (e) => {
			e._startTime - e._delay || (e._delay -= A), e._startTime -= A;
		}), k -= A) : A = 0, k || (k = oc, this.iterationCount = 0), this.targets = s, this.id = Lc(d) ? Eu : d, this.duration = k === 1e-11 ? oc : rl((k + this._loopDelay) * this.iterationCount - this._loopDelay) || 1e-11, this.onRender = v || y.onRender, this._ease = S, this._delay = A, this.iterationDuration = k, !this._autoplay && ne && this.onRender(this);
	}
	stretch(e) {
		let t = this.duration;
		if (t === il(e)) return this;
		let n = e / t;
		return sl(this, (e) => {
			e._updateDuration = il(e._updateDuration * n), e._changeDuration = il(e._changeDuration * n), e._currentTime *= n, e._delay *= n, e._startTime *= n, e._absoluteStartTime *= n, e._absoluteUpdateStartTime *= n, e._absoluteEndTime *= n;
		}), super.stretch(e);
	}
	refresh() {
		return sl(this, (e) => {
			let t = e._toFunc, n = e._fromFunc;
			(t || n) && (n ? (Dl(n(), X), X.u !== e._unit && e.target[nc] && su(e.target, X, e._unit, !0), e._fromNumbers = al(X.d), e._fromNumber = X.n) : t && (Dl(wl(e.target, e.property, e._tweenType), kl), e._fromNumbers = al(kl.d), e._fromNumber = kl.n), t && (Dl(t(), Z), e._toNumbers = al(Z.d), e._strings = al(Z.s), e._toNumber = Z.o ? Tl(e._fromNumber, Z.n, Z.o) : Z.n));
		}), this.duration === 1e-11 && this.restart(), this;
	}
	revert() {
		return super.revert(), Fl(this);
	}
	then(e) {
		return super.then(e);
	}
}, ju = (e, t) => Dc.editor ? Dc.editor.addAnimation(e, t) : new Au(e, t, null, 0, !1).init(), Mu = (e, t, n, r) => {
	let { searchProvider: i, props: a, slots: o } = r, s = N(null), c = {};
	if (e.customRender) c = e.customRender({
		item: e,
		queryForm: t,
		context: r
	});
	else switch (e.type) {
		case "number":
			c = Gi(e, t, r);
			break;
		case "select":
			c = Ki(e, t, r);
			break;
		case "textarea":
			c = qi(e, t, r);
			break;
		case "date":
			c = Ji(e, t, r);
			break;
		case "cascade":
			c = Yi(e, t, r);
			break;
		case "switch":
			c = Xi(e, t, r);
			break;
		default:
			c = Wi(e, t, r);
			break;
	}
	o[e.key] && (c.Component = o[e.key]({
		item: e,
		queryForm: t,
		context: r
	}));
	let { conditions: l = [], Component: u, displayValue: d = "", onComponentOpen: f = null } = c, p = E(() => n.hidden === !0), m = (n) => {
		t[e.key].condition = l[n].value;
	}, h = () => {
		n.showPanel &&= !1;
	}, g = () => {
		n.showPanel = !0, se(() => {
			f && f();
		});
	}, v = { onEnter: (e, t) => {
		ju(".newbie-search-input-container", {
			padding: "8px",
			translateX: "0",
			translateY: "0",
			duration: 100,
			ease: "linear"
		}), ju(".newbie-search-condition", {
			top: "-44px",
			opacity: 1,
			duration: 100,
			ease: "linear"
		}), t();
	} }, y = E(() => Tt(l, { value: t[e.key].condition })?.label || _("search.equal")), b = E(() => Tt(l, { value: t[e.key].condition })?.label || _("search.equal"));
	return O(qs, { onTrigger: h }, { default: () => [O("div", { class: `newbie-search-item ${p.value ? "hidden" : ""} ${i.maskClass || ""}` }, [O("div", {
		class: "newbie-search-mask",
		onClick: g
	}, [O("div", { class: "newbie-search-mask-title" }, [e.title]), O("div", { class: "newbie-search-mask-content" }, [t[e.key].condition === "equal" ? null : O("div", { class: "newbie-search-mask-condition" }, [b.value]), O("div", { class: "newbie-search-mask-value" }, [d?.value])])]), O(w, {
		css: !1,
		onEnter: v.onEnter
	}, { default: () => [n.showPanel ? O("div", {
		class: "newbie-search-popup-panel",
		ref: s
	}, [O("div", { class: "newbie-search-condition" }, [O("span", { class: "newbie-search-condition-title" }, [
		_("common.search"),
		" ",
		O(vt, { code: !0 }, { default: () => e.title })
	]), a.disableConditions || e.disableConditions ? null : O(Ie, {
		trigger: ["click"],
		getPopupContainer: () => s.value
	}, {
		default: () => O("a", {
			class: "newbie-search-condition-dropdown-link",
			onClick: Ce(() => {}, ["prevent"])
		}, [
			y.value,
			" ",
			O(en, null, null)
		]),
		overlay: () => O(Je, null, { default: () => l.map((e, t) => O(Ye, { key: e.value }, { default: () => O("a", { onClick: () => m(t) }, [e.label]) })) })
	})]), O("div", { class: "newbie-search-input-container" }, [z(u) ? u() : u])]) : null] })])] });
};
//#endregion
//#region components/search/NewbieSearch.jsx
function Nu(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Pu = /* @__PURE__ */ A({
	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,
				Object
			],
			default: !1
		}
	},
	emits: ["search"],
	setup(e, { expose: t, emit: n, slots: r }) {
		let i = ie(nr, () => {}), a = E(() => h(e.persistence)), o = E(() => a.value.storage === "local"), c = E(() => {
			if (!a.value.enabled) return null;
			let { key: e } = a.value;
			return e ? `search_${s(location.pathname + "_" + e)}` : `search_${s(location.href)}`;
		}), l = E(() => {
			let e = c.value;
			return e ? u(e, { storage: a.value.storage }) : null;
		}), d = me({
			queryForm: {},
			sortForm: {
				selectedKeys: [],
				targetKeys: []
			},
			columnKey: {},
			searchKey: {},
			searchLabels: [],
			fieldColumns: [],
			expandColumns: [],
			sortColumns: [],
			openSortable: !1,
			isFormExpanded: !1,
			overflowCount: 0
		}), f = N(), p = ["number", "date"], m = ["select", "cascade"], g = {}, v = () => {
			let t = {}, n = [], r = [], i = [], a = [], s = l.value && !o.value ? l.value.load("form", {}) : {}, c = l.value && !o.value ? l.value.load("sort", {}) : {};
			e.filterableColumns.forEach((e) => {
				let i = xt(e);
				B(i.sortOrder) && (i.sortOrder = 0), g[i.key] || (g[i.key] = me({ showPanel: !1 })), i.type = i.type || "input";
				let a = "", o = "equal";
				if (i.expandable ? a = [] : p.includes(i.type) ? a = [null, null] : m.includes(i.type) && (a = []), B(s[i.key])) B(i.defaultValue) || (a = z(i.defaultValue) ? i.defaultValue() : i.defaultValue);
				else {
					let e = s[i.key].value;
					a = (p.includes(i.type) || m.includes(i.type)) && !Dt(e) ? [e] : e;
				}
				if (B(s[i.key]) ? i.conditions && i.conditions.length === 1 ? o = i.conditions[0] : i.defaultCondition && (o = z(i.defaultCondition) ? i.defaultCondition() : i.defaultCondition) : o = s[i.key].condition, i.expandable) {
					if (!i.options) {
						console.error("expandable 为 true 时,必须提供 options 属性");
						return;
					}
					i.type = "select", n.push(i);
				} else B(g[i.key].hidden) && (g[i.key].hidden = !1), r.push(i);
				i.type === "date" && (Dt(a) ? a = a.map((e) => Nt(e) ? bt(new Date(e)) : e) : Nt(a) && (a = bt(new Date(a)))), i.type === "switch" && (a = Ot(a) ? a ? "checked" : "unchecked" : void 0), t[i.key] = {
					value: a,
					type: i.type,
					condition: o
				};
			}), e.sortableColumns.forEach((e) => {
				let t = xt(e);
				B(c[e.key]) || (a.push(e.key), t.direction = c[e.key]), (e.direction === "asc" || e.direction === "desc") && a.push(e.key), i.push(t);
			}), d.queryForm = t, d.sortColumns = Ft(i, ["sortOrder"], ["desc"]), d.fieldColumns = Ft(r, ["sortOrder"], ["desc"]), d.expandColumns = Ft(n, ["sortOrder"], ["desc"]), d.sortForm.targetKeys = a;
		};
		I(() => [e.filterableColumns, e.sortableColumns], () => {
			v(), se(() => S());
		}, { immediate: !0 });
		let y = () => {
			d.openSortable = !1, T.value = !1, n("search", {
				newbieQuery: w(),
				newbieSort: C()
			});
		}, b = () => {
			l.value && l.value.clear(["search", "sort"]), T.value = !1, v();
		}, x = () => {
			d.isFormExpanded = !d.isFormExpanded, se(() => S());
		}, S = () => {
			if (!f.value) return;
			let t = f.value, n = t.querySelector(".newbie-search-item"), r = d.fieldColumns.length;
			if (n && d.fieldColumns.length > 0) {
				let i = n.getBoundingClientRect().width;
				if (i > 0) {
					let n = t.getBoundingClientRect().width, a = Number(e.gutter) || 0;
					r = Math.max(1, Math.floor((n + a) / (i + a)));
				}
			}
			let i = d.isFormExpanded ? d.fieldColumns.length : r;
			d.overflowCount = d.fieldColumns.length - i, d.fieldColumns.forEach((e, t) => {
				let n = t >= i;
				n && g[e.key]?.showPanel ? g[e.key].hidden = !1 : g[e.key].hidden = n;
			});
		};
		le(() => {
			l.value && !o.value ? n("search", {
				persistence: !0,
				newbieQuery: w(),
				newbieSort: C()
			}) : l.value && o.value ? (l.value.hasLocalData("search") && (T.value = !0), n("search", {
				persistence: !0,
				newbieQuery: w(!0),
				newbieSort: C(!0)
			})) : e.persistence && n("search", {
				persistence: !0,
				newbieQuery: {},
				newbieSort: {}
			}), requestAnimationFrame(() => S());
		});
		let C = (e = !1) => {
			let t = {};
			return d.sortForm.targetKeys.forEach((e) => {
				let n = Tt(d.sortColumns, { key: e });
				t[e] = n.direction;
				let r = d.searchLabels.length;
				d.searchLabels.push(O(dt, {
					color: "green",
					closable: !0,
					onClose: (t) => {
						t?.preventDefault?.();
						let n = d.sortForm.targetKeys.indexOf(e);
						n > -1 && d.sortForm.targetKeys.splice(n, 1), d.searchLabels[r] = null;
					}
				}, { default: () => [O("span", { style: { marginRight: "2px" } }, [n.title]), n.direction === "asc" ? O(Cn, null, null) : O(sn, null, null)] }));
			}), l.value && !e && l.value.save("sort", t), t;
		}, w = (t = !1) => {
			let n = {}, r = {};
			return d.searchLabels = [], St(d.fieldColumns, d.expandColumns).forEach((t) => {
				let { value: a, searchLabel: o } = t.collectItem ? t.collectItem({
					queryForm: d.queryForm,
					item: t
				}) : {}, { condition: s, type: c } = d.queryForm[t.key];
				if (Array.isArray(a) && a.length > 0 || !Array.isArray(a) && a != null && a !== "" || s === "null" || s === "notNull") {
					e.persistence && (r[t.key] = {
						condition: s,
						type: c,
						value: a
					});
					let l = i?.valueFormatter?.[t.type];
					l && z(l) && (a = Dt(a) ? a.map((e) => l(e)) : l(a)), n[t.key] = {
						condition: s,
						type: c,
						value: a
					};
					let u = d.searchLabels.length;
					d.searchLabels.push(o ? O(dt, {
						color: "blue",
						closable: !0,
						onClose: (e) => {
							if (e?.preventDefault?.(), d.queryForm[t.key]) {
								let e = d.queryForm[t.key].type || t.type;
								p.includes(e) ? d.queryForm[t.key].value = [null, null] : m.includes(e) ? d.queryForm[t.key].value = [] : e === "switch" ? d.queryForm[t.key].value = void 0 : d.queryForm[t.key].value = "";
							}
							d.searchLabels[u] = null;
						}
					}, Nu(o) ? o : { default: () => [o] }) : null);
				}
			}), l.value && !t && l.value.save("search", r), n;
		};
		t({
			getQueryForm: w,
			setQueryForm: (e) => {
				Object.keys(e).forEach((t) => {
					d.queryForm[t] ? d.queryForm[t].value = e[t] : d.queryForm[t] = { value: e[t] };
				});
			},
			getSortForm: C,
			getSearch: () => {
				d.searchLabels = [];
				let e = {}, t = w(), n = C();
				return Object.keys(t).length && (e.newbieQuery = t), Object.keys(n).length && (e.newbieSort = n), e;
			}
		});
		let T = N(!1), ee = () => {
			if (!l.value) return;
			let e = l.value.loadLocal("search", {}), t = l.value.loadLocal("sort", {});
			l.value.save("search", e), l.value.save("sort", t), Object.keys(e).forEach((t) => {
				let n = e[t], r = n.value, i = d.queryForm[t], a = i?.type || n.type || "input";
				(p.includes(a) || m.includes(a)) && !Dt(r) && r != null && r !== "" && (r = [r]), i ? (i.value = r, n.condition && (i.condition = n.condition)) : d.queryForm[t] = {
					value: r,
					condition: n.condition || "equal",
					type: a
				};
			}), Object.keys(d.queryForm).forEach((e) => {
				let t = d.queryForm[e];
				!t || !t.type || (t.type === "date" && t.value != null ? t.value = Dt(t.value) ? t.value.map((e) => Nt(e) ? bt(new Date(e)) : e) : Nt(t.value) ? bt(new Date(t.value)) : t.value : t.type === "switch" && t.value != null && (t.value = Ot(t.value) ? t.value ? "checked" : "unchecked" : void 0));
			});
			let n = [];
			Object.keys(t).forEach((e) => {
				n.push(e);
				let r = Tt(d.sortColumns, { key: e });
				r && (r.direction = t[e]);
			}), d.sortForm.targetKeys = n, T.value = !1, y();
		}, D = () => d.fieldColumns.map((t) => Mu(t, d.queryForm, g[t.key], {
			props: e,
			slots: r,
			searchProvider: i
		})), k = () => d.expandColumns.map((e) => Zi(e, d.queryForm)), A = () => d.sortColumns.length ? O(Xe, {
			title: _("search.sort-setting"),
			open: d.openSortable,
			"onUpdate:open": (e) => d.openSortable = e,
			width: "800px",
			okText: _("common.search"),
			cancelText: _("common.cancel"),
			onOk: () => y()
		}, { default: () => Ks(d.sortColumns, d.sortForm) }) : null;
		return () => O("div", { class: "newbie-search" }, [
			O("div", { class: "newbie-search-query" }, [O("div", { class: "newbie-search-form" }, [O("div", {
				class: "newbie-search-form-wrapper",
				ref: f
			}, [O(at, {
				size: [e.gutter, 10],
				wrap: !0,
				style: { marginBottom: 0 }
			}, { default: () => D() })])]), O(at, { class: "newbie-search-operation" }, { default: () => [
				d.overflowCount > 0 || d.isFormExpanded ? O(ht, { title: _("search.toggle-more") }, { default: () => O(L, {
					type: "link",
					icon: d.isFormExpanded ? O(En, null, null) : O(Vt, null, null),
					onClick: x
				}, { default: () => d.isFormExpanded ? _("search.collapse") : _("common.more") + "(" + d.overflowCount + ")" }) }) : null,
				O(ht, { title: _("search.clear-all-search-items") }, { default: () => O(L, {
					type: "dashed",
					icon: O(Kt, null, null),
					onClick: b
				}, { default: () => e.sortableColumns.length ? "" : _("common.clear") }) }),
				e.sortableColumns.length ? O(ht, { title: _("search.sort-setting") }, { default: () => O(L, {
					type: d.sortForm.targetKeys.length ? "primary" : "default",
					icon: O(yn, null, null),
					onClick: () => d.openSortable = !0
				}, null) }) : null,
				O(L, {
					type: "primary",
					icon: O(Tn, null, null),
					onClick: y
				}, { default: () => _("common.search") })
			] })]),
			d.expandColumns?.length ? O("div", { class: "newbie-search-expand" }, [k()]) : null,
			d.searchLabels?.length || T.value ? O("div", { class: "newbie-search-label" }, [O(at, {
				class: "newbie-search-label-content",
				wrap: !0,
				style: { marginBottom: 0 }
			}, { default: () => [T.value ? O(dt, {
				style: {
					cursor: "pointer",
					color: "#92400e",
					background: "#fff7e6",
					borderColor: "#ffa940",
					borderStyle: "dashed"
				},
				onClick: ee
			}, { default: () => [O(pn, { style: { marginRight: "4px" } }, null), _("search.restore-last")] }) : null, ...d.searchLabels.filter(Boolean)] })]) : null,
			A()
		]);
	}
});
//#endregion
//#region components/table/NewbieTable.jsx
function Fu(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Iu = /* @__PURE__ */ A({
	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,
				Object
			],
			default: !1
		},
		cardWrapper: {
			type: Boolean,
			default: !1
		}
	},
	emits: [
		"fetch",
		"rowClick",
		"cellSubmit"
	],
	setup(e, { emit: n, slots: i, expose: a }) {
		let o = N(), c = N(), l = ie($n, () => {}), { copy: d } = Si({ legacy: !0 }), f = E(() => h(e.persistence)), p = E(() => {
			if (!f.value.enabled) return null;
			let { key: e } = f.value;
			return e ? `table_${s(location.pathname + "_" + e)}` : `table_${s(location.href)}`;
		}), g = E(() => {
			let e = p.value;
			return e ? u(e, { storage: f.value.storage }) : null;
		}), v = g.value ? g.value.loadWithFallback("pagination", {}) : {}, y = me({
			customColumns: [],
			tableColumns: [],
			editingData: {},
			editingSwitchData: {},
			filterableColumns: [],
			sortableColumns: [],
			temporary: {},
			tableLoading: { loading: !1 },
			customColumnVisible: !1,
			columnKeyModal: [],
			pagination: {
				totalSize: 0,
				currentPage: v.currentPage || 1,
				pageSize: v.pageSize || e.pagination?.pageSize || 10
			},
			id: "",
			tableSelection: [],
			tableKeySelection: [],
			items: [],
			columnKey: {},
			fetchQueue: [],
			searchFormData: {}
		}), b = () => {
			g.value && g.value.save("pagination", { ...y.pagination });
		}, x = () => {
			y.columnKeyModal = [], Object.keys(y.columnKey).forEach((e) => {
				y.columnKey[e] && y.columnKeyModal.push(e);
			}), y.customColumnVisible = !0;
		}, S = () => {
			y.columnKeyModal = [];
		}, C = () => {
			S(), Object.keys(y.columnKey).forEach((e) => {
				y.columnKeyModal.push(e);
			});
		}, w = (e, t) => {
			y.tableKeySelection = [].concat(e), y.tableSelection = [].concat(t);
		}, T = (e, t) => {
			t.width = e;
		}, ee = () => {
			Object.keys(y.columnKey).forEach((e) => {
				y.columnKey[e] = y.columnKeyModal.indexOf(e) > -1;
			}), y.customColumnVisible = !1;
		}, D = () => {
			let t = {
				...y.searchFormData,
				...e.extraData
			};
			return e.pagination && (y.pagination.pageSize && (t[l.pageSizeKey] = y.pagination.pageSize), t[l.pageKey] = y.pagination.currentPage), t;
		}, k = (e) => {
			o.value && o.value?.setQueryForm(e);
		}, A = async () => {
			let n = {}, i = D(), a = (/* @__PURE__ */ new Date()).getTime();
			y.fetchQueue.push(a);
			let o = e.method;
			o === "get" ? n = { params: i } : o === "post" && (n = { ...i });
			let s = await r(y.tableLoading)[o](e.url, n);
			t(s, () => {
				if (!y.fetchQueue.length) return;
				y.fetchQueue[y.fetchQueue.length - 1] === a && (y.fetchQueue = []), y.tableKeySelection = [], y.tableSelection = [];
				let t = (e.afterFetched || l.afterFetched)(s);
				e.pagination && (y.pagination.totalSize = t.totalSize), y.items = t.items;
			});
		}, te = async (t) => {
			t === !0 && (y.pagination.currentPage = 1), e.url ? await A() : n("fetch"), b();
		}, ne = (e) => {
			let { persistence: t, ...n } = e || {};
			y.searchFormData = n, te(!t);
		}, re = (e) => e.key ? e.key : Dt(e.dataIndex) ? e.dataIndex.join(".") : e.dataIndex, j = (e) => {
			let t = [];
			return e && e.length && e.forEach((e) => {
				let n = xt(e), r = re(n);
				if (r && B(y.columnKey[r]) && (y.columnKey[r] = !0), !n.children) (r && y.columnKey[r] || !r) && t.push({
					...n,
					resizable: !0
				});
				else {
					let e = j([].concat(n.children));
					e.length && (n.children = e, (r && y.columnKey[r] || !r) && t.push(n));
				}
			}), t;
		}, ae = (e) => {
			let t = [];
			return e && e.length && e.forEach((e) => {
				let n = xt(e);
				if (n.checkKey = re(n), !n.children) t.push(n);
				else {
					let e = ae(n.children);
					delete n.children, t.push(n), t = t.concat(e);
				}
			}), t;
		}, oe = E(() => {
			let t;
			return t = z(e.columns) ? e.columns() : e.columns.length ? e.columns : e.tableProps.columns, t.map((e) => (e.minWidth && (e.RC_TABLE_INTERNAL_COL_DEFINE = { style: { "min-width": `${e.minWidth}px` } }, e.width = e.minWidth), e.key = re(e), e));
		}), ce = () => {
			let e = oe.value.filter((e) => !e.isOnlyForQuery);
			y.customColumns = ae([].concat(e)), y.tableColumns = j([].concat(e));
		}, ue = () => {
			y.filterableColumns = oe.value.filter((e) => e.filterable || e.isOnlyForQuery).map((e) => ({
				title: e.title,
				key: re(e),
				options: e.options,
				...e.filterable
			})), y.sortableColumns = oe.value.filter((e) => e.sortable).map((e) => {
				let t = {
					title: e.title,
					key: re(e)
				};
				return e.sortable === "asc" || e.sortable === "ASC" ? t.direction = "asc" : e.sortable === "desc" || e.sortable === "DESC" ? t.direction = "desc" : t = {
					...t,
					...e.sortable
				}, t;
			});
		};
		I(() => [oe, y.columnKey], (e, t) => {
			ce(), (!t || !kt(e[0].value.map((e) => re(e)).toSorted(), t[0].value.map((e) => re(e)).toSorted())) && ue();
		}, {
			immediate: !0,
			deep: !0
		}), Se(() => {
			e.pagination && c.value && c.value?.classList.add("pagination-adapt");
		}), I(() => e.formData, (e, t) => {
			kt(e, t) || (y.items = e);
		});
		let de = () => {
			e.url ? (y.searchFormData = o.value?.getSearch(), se(() => A())) : (e.formData.length && (y.items = e.formData), e.dataSource.length && (y.items = e.dataSource), n("fetch"));
		};
		le(() => {
			(!e.persistence || !e.filterable) && de();
		}), a({
			getData: () => [].concat(y.items),
			setData: (e) => {
				y.items = e;
			},
			setPagination: (e, t, n) => {
				B(e) || (y.pagination.totalSize = e), B(t) || (y.pagination.currentPage = t), B(n) || (y.pagination.pageSize = n);
			},
			getPagination: () => y.pagination,
			getSelection: () => [].concat(y.tableSelection),
			getQueryData: D,
			setQueryData: k,
			doFetch: te,
			setTableLoading: (e) => y.tableLoading.loading = e
		});
		let fe = () => i.title ? O("div", { class: "newbie-table-title-wrapper" }, [i.title()]) : e.title ? O("div", { class: "newbie-table-title-wrapper" }, [e.title]) : null, pe = () => i.prepend ? O("div", { class: "newbie-table-prepend-wrapper" }, [i.prepend()]) : null, he = () => e.filterable ? [O(Pu, {
			ref: o,
			persistence: e.persistence,
			filterableColumns: y.filterableColumns,
			sortableColumns: y.sortableColumns,
			onSearch: ne
		}, { ...e.searchSlots })] : null, ge = () => O("div", { class: "newbie-table-functional-wrapper" }, [O("div", { class: "newbie-table-functional" }, [i.functional ? i.functional() : null]), O("div", { class: "newbie-table-functional-default" }, [e.filterable ? O(L, {
			type: "link",
			style: { marginRight: "5px" },
			onClick: x
		}, { default: () => _("table.custom") }) : null, e.showRefresh ? O(L, {
			class: "newbie-table-refresh",
			icon: O(jn, null, null),
			onClick: () => te(!1)
		}, null) : null])]), _e = () => ({
			bordered: !0,
			size: "middle",
			scroll: {
				y: 570,
				x: 1e3,
				scrollToFirstRowOnChange: !0
			},
			rowClassName: (e, t) => t % 2 == 1 ? "newbie-table-striped" : null,
			expandedRowRender: e.expandRender,
			expandedRowKeys: e.expandedRowKeys,
			rowKey: e.rowKey,
			customRow: (t, r) => ({ onClick: (i) => {
				y.editingData[t[e.rowKey]] || n("rowClick", {
					record: t,
					index: r,
					event: i
				});
			} }),
			...e.tableProps
		}), P = () => {
			let t = e.pagination ? Mt(e.pagination) ? xt(e.pagination) : {} : !1;
			return Mt(t) && (t = {
				size: "small",
				showQuickJumper: !0,
				showSizeChanger: !0,
				showTotal: (e) => _("table.total", { total: e }),
				pageSizeOptions: [
					"10",
					"30",
					"50",
					"100",
					"300",
					"500"
				],
				total: y.pagination.totalSize,
				pageSize: y.pagination.pageSize,
				current: y.pagination.currentPage,
				"onUpdate:current": (e) => {
					y.pagination.currentPage = e;
				},
				"onUpdate:pageSize": (e) => {
					y.pagination.pageSize = e;
				},
				onChange: () => {
					te(!1);
				},
				showSizeChange: () => {
					te(!0);
				},
				...t
			}), t;
		}, ve = () => {
			let t = e.rowSelection ? Mt(e.rowSelection) ? xt(e.rowSelection) : {} : null;
			return Mt(t) && (t = {
				selectedRowKeys: y.tableKeySelection,
				preserveSelectedRowKeys: !0,
				columnWidth: 40,
				fixed: !0,
				onChange: w,
				...t
			}), t;
		}, ye = (t, n, r, i) => {
			y.editingData[n[e.rowKey]] ? y.editingData[n[e.rowKey]][r] = i : y.editingData[n[e.rowKey]] = { [r]: i };
		}, be = (t, n) => {
			y.editingData[t[e.rowKey]] && delete y.editingData[t[e.rowKey]][n];
		}, F = async (i, a, o) => {
			if (!e.submitUrl && !e.beforeCellSubmit) return;
			let s = null;
			s = i.type === "switch" ? y.editingSwitchData[a[e.rowKey]][o] : y.editingData[a[e.rowKey]][o];
			let c = {
				[e.rowKey]: a[e.rowKey],
				[o]: s
			};
			be(a, o), i.beforeCellSubmit ? (y.tableLoading.loading = !0, await i.beforeCellSubmit(c), y.tableLoading.loading = !1) : e.beforeCellSubmit ? (y.tableLoading.loading = !0, await e.beforeCellSubmit(c), y.tableLoading.loading = !1) : t(await r(y.tableLoading).post(e.submitUrl, c), () => {
				R.success(m.global.t("common.save-success")), n("cellSubmit", {
					record: a,
					key: o,
					value: s
				});
			});
		}, xe = (t) => {
			let { column: n, text: r, record: i } = t, a = n.editable;
			n.editable === !0 && (a = { type: "input" });
			let o = a.key || n.key, s = B(a.defaultValue) ? r : a.defaultValue, c = y.editingData[i[e.rowKey]] && !B(y.editingData[i[e.rowKey]][o]), l = c ? O("span", { class: "table-editable-icon editing" }, [O(Wt, {
				class: "check-icon",
				onClick: Ce(() => F(a, i, o), ["stop"])
			}, null), O(Jt, {
				class: "close-icon",
				onClick: Ce(() => be(i, o), ["stop"])
			}, null)]) : O("span", { class: "table-editable-icon" }, [O(rn, {
				class: "edit-icon",
				onClick: Ce(() => ye(a, i, o, s), ["stop"])
			}, null)]), u = () => {
				if (a.type === "input") return O(We, M({
					value: y.editingData[i[e.rowKey]][o],
					"onUpdate:value": (t) => y.editingData[i[e.rowKey]][o] = t,
					style: { width: "100%" }
				}, a.defaultProps), { ...a.defaultSlots });
				if (a.type === "number") return O(Ge, M({
					value: y.editingData[i[e.rowKey]][o],
					"onUpdate:value": (t) => y.editingData[i[e.rowKey]][o] = t,
					style: { width: "100%" }
				}, a.defaultProps), { ...a.defaultSlots });
				if (a.type === "select") return O(rt, M({
					value: y.editingData[i[e.rowKey]][o],
					"onUpdate:value": (t) => y.editingData[i[e.rowKey]][o] = t,
					options: a.options,
					style: { width: "100%" }
				}, a.defaultProps), { ...a.defaultSlots });
			};
			if (a.type === "switch") {
				let t = {
					checkedChildren: () => a.options?.[0] || null,
					unCheckedChildren: () => a.options?.[1] || null
				};
				return B(y.editingSwitchData[i[e.rowKey]]) && (y.editingSwitchData[i[e.rowKey]] = {}), B(y.editingSwitchData[i[e.rowKey]][o]) && (y.editingSwitchData[i[e.rowKey]][o] = s), O("div", { class: "table-editable-wrapper" }, [O("div", { class: "table-editable-text" }, [O(st, M({
					checked: y.editingSwitchData[i[e.rowKey]][o],
					"onUpdate:checked": (t) => y.editingSwitchData[i[e.rowKey]][o] = t,
					onClick: (e, t) => t.stopPropagation(),
					onChange: (e, t) => {
						t.stopPropagation(), F(a, i, o);
					}
				}, a.defaultProps), Fu(t) ? t : { default: () => [t] })])]);
			} else {
				let e = null;
				return e = c ? u() : n.customRender ? n.customRender(t) : r, O("div", { class: "table-editable-wrapper" }, [O("div", { class: "table-editable-text" }, [e]), l]);
			}
		}, we = () => O(ct, M({
			rowSelection: ve(),
			pagination: P(),
			loading: y.tableLoading.loading,
			dataSource: y.items,
			columns: y.tableColumns,
			onResizeColumn: T
		}, _e()), {
			headerCell: ({ column: t }) => {
				let n = [O("span", null, [t.title]), t.tooltip ? z(t.tooltip) ? O(ht, null, {
					default: () => O(mn, { style: { marginLeft: "5px" } }, null),
					title: t.tooltip
				}) : O(ht, { title: t.tooltip }, { default: () => O(mn, { style: { marginLeft: "5px" } }, null) }) : null], r = [];
				return e.editable && t.editable && r.push(O("span", { class: "newbie-table-header-func" }, [_("table.editable")])), O("div", { class: `newbie-table-header-wrapper ${r?.length ? "with-func" : ""}` }, [O("div", { class: "newbie-table-header-title-wrapper" }, [n]), O("div", { class: "newbie-table-header-func-wrapper" }, [r])]);
			},
			bodyCell: ({ column: t, text: n, record: r, index: i }) => e.editable && t.editable ? xe({
				column: t,
				text: n,
				record: r,
				index: i
			}) : t.customRender ? t.customRender({
				column: t,
				text: n,
				record: r,
				index: i
			}) : t.onClick ? O("a", {
				href: "javascript:void(0);",
				onClick: Ce(() => t.onClick({
					column: t,
					text: n,
					record: r,
					index: i
				}), ["stop"])
			}, [n]) : t.onCopy ? O("span", {
				class: "table-copy-wrapper",
				onClick: Ce(() => {
					t.onCopy === !0 ? d(n) : t.onCopy(d, {
						column: t,
						text: n,
						record: r,
						index: i
					}), R.success(m.global.t("table.copy-success"));
				}, ["stop"])
			}, [O("span", { class: "table-copy-content" }, [n]), O(Qt, null, null)]) : O("span", null, [n]),
			...e.tableSlots
		}), Te = () => i.append || e.pagination ? O("div", { class: "newbie-table-footer" }, [O("div", { class: "newbie-table-append-wrapper" }, [i.append ? i.append() : null]), O("div", { class: "newbie-table-pagination-wrapper" }, null)]) : null;
		return () => O("div", {
			class: "newbie-table",
			ref: c
		}, [e.cardWrapper ? O(De, {
			size: "small",
			class: "newbie-table-card"
		}, {
			title: () => fe(),
			extra: () => i.extra ? i.extra() : null,
			default: () => [
				pe(),
				he(),
				ge(),
				we(),
				Te()
			]
		}) : [
			pe(),
			he(),
			O("div", { class: "newbie-table-content" }, [[
				ge(),
				we(),
				Te()
			]])
		], O(Xe, {
			open: y.customColumnVisible,
			"onUpdate:open": (e) => y.customColumnVisible = e,
			title: _("table.custom"),
			width: "900px",
			onOk: ee
		}, { default: () => [
			O(je, {
				value: y.columnKeyModal,
				"onUpdate:value": (e) => y.columnKeyModal = e,
				style: { width: "100%" }
			}, { default: () => O(nt, { gutter: 15 }, { default: () => y.customColumns.map((e) => O(Me, { span: 6 }, { default: () => O(Ae, {
				style: {
					width: "100%",
					marginBottom: "5px",
					overflow: "hidden"
				},
				value: e.checkKey
			}, { default: () => e.title }) })) }) }),
			O(Pe, null, null),
			O(L, { onClick: C }, { default: () => _("table.select-all") }),
			O(L, {
				onClick: S,
				style: { marginLeft: "5px" }
			}, { default: () => _("table.unselect-all") })
		] })]);
	}
});
function Lu(e) {
	return e ? (Dt(e) || (e = [e]), O("div", { class: "table-actions-wrapper" }, [e.map((e) => {
		let t = { ...e.props }, { type: n } = e, { name: r } = e, i = null;
		if ((!n || n === "button") && (i = zn, t.type = t.type || "text"), (n === "a-tag" || n === "tag") && (i = dt), n === "switch" && (i = st, e.name && (t.checkedChildren = e.name?.[0] || "", t.unCheckedChildren = e.name?.[1] || ""), t.checked = e.value, t.disabled = !0), e.action && (t.onClick = Ce(() => e.action(), ["stop"])), e.tooltip) {
			let n = e.tooltip;
			return O(ht, {
				title: n,
				transfer: !0
			}, { default: () => O(i, t, { default: () => r }) });
		}
		if (e.children?.length) {
			let n = e.children;
			return O(Ie, {
				placement: "bottom",
				onClick: Ce(() => {}, ["stop"])
			}, {
				default: () => O(zn, M({
					type: "text",
					size: "small"
				}, t), { default: () => [O(en, { style: { fontSize: "12px" } }, null), r] }),
				overlay: () => O(Je, null, { default: () => n.map((e) => O(Ye, null, { default: () => O(zn, M({
					type: "text",
					style: { textAlign: "left" },
					buttonProps: { block: !0 },
					onClick: Ce(() => e.action(), ["stop"])
				}, e.props), { default: () => e.name }) })) })
			});
		}
		return O(i, t, { default: () => r });
	})])) : null;
}
function Ru(e, t) {
	return e ? (Dt(e) || (e = [e]), O(Re, { gap: "small" }, { default: () => e.map((e) => O(He, {
		src: e.thumbUrl || e.url || e,
		preview: { src: e.url || e.thumbUrl || e },
		width: 48,
		height: 48
	}, null)) })) : O("span", { style: { fontSize: "30px" } }, [O(t || bn, null, null)]);
}
function zu(e, t) {
	let { DefaultIcon: n, placeholder: r = "暂无内容", fileName: i } = t || {};
	return e ? (Dt(e) || (e = [e]), e.map((t, r) => {
		let a = t.url || t, o = i || t.name || (e.length > 1 ? `查看附件${r + 1}` : "查看附件");
		return O("a", {
			href: a,
			style: { display: "block" },
			target: "_blank"
		}, [O("span", { style: { fontSize: "14px" } }, [
			O(n || un, null, null),
			D(" "),
			o
		])]);
	})) : O("span", null, [r]);
}
//#endregion
//#region components/table/index.js
var Bu = Lu, Vu = Ru, Hu = zu, Uu = In(Iu);
//#endregion
//#region components/form/components/Group.jsx
function Wu(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Gu = (e, t, n, r) => {
	let { t: i } = l();
	Object.keys(n).length || (n.editFormRef = null, n.showEditModal = !1, n.editIndex = -1, n.editFormData = {});
	let a = ye(n.editFormRef), { provider: o } = r, s = o.uploaderProvider, c = e.children;
	z(e.children) && (c = e.children({ submitForm: t }));
	let u = c.filter((e) => !e.invisible).map((e) => ({
		dataIndex: e.key,
		title: e.title,
		width: e.width,
		key: e.key,
		item: e,
		...e.cellProps
	})), d = {
		title: i("common.actions"),
		dataIndex: "operations",
		align: "center",
		fixed: "right",
		width: 120 + (e.childrenOperations?.length || 0) * 60
	}, p = e.disabled || e.readonly ? [...u] : [...u, d], m = E(() => t[e.key] || []), h = (e, t) => {
		if (e) n.editFormData = e, n.editIndex = t;
		else {
			let e = {};
			c.forEach((t) => {
				e[t.key] = sr(t, {}, {}, { uploaderProvider: s });
			}), n.editFormData = e, n.editIndex = -1;
		}
		n.showEditModal = !0;
	}, g = ({ formatForm: r }) => (n.editIndex === -1 ? t[e.key].push(r) : t[e.key][n.editIndex] = r, n.showEditModal = !1, !1), _ = () => new Promise((e) => {
		a.value?.isDirty() ? Xe.confirm({
			content: i("common.cancel-confirm"),
			okText: i("common.confirm"),
			cancelText: i("common.cancel"),
			onOk: () => e(!0),
			onCancel: () => e(!1)
		}) : e(!0);
	}), y = (n) => {
		t[e.key].splice(n, 1);
	};
	return O("div", null, [O(ct, {
		columns: p,
		dataSource: m.value,
		pagination: !1,
		bordered: !0,
		size: "small"
	}, {
		bodyCell: ({ column: n, record: r, index: a }) => {
			if (n.item?.type === "select") {
				let e = z(n.item?.options) ? n.item.options({
					submitForm: t,
					record: r
				}) : n.item.options;
				return e = e.map((e) => Nt(e) || jt(e) ? {
					value: e,
					label: e
				} : e), O("span", null, [v(r[n.item.key], e)]);
			} else if (n.item?.type === "date") {
				if (r[n.item.key]) {
					let e = bt(r[n.item.key]);
					return n.item?.defaultProps?.format ? O("span", null, [e.format(n.item.defaultProps.format)]) : n.item?.defaultProps?.showTime ? O("span", null, [e.format("YYYY-MM-DD HH:mm:ss")]) : O("span", null, [e.format("YYYY-MM-DD")]);
				}
				return null;
			} else if (n.item?.type === "switch") {
				let e = n.item.options || [i("common.yes"), i("common.no")];
				return O(Ve, null, { default: () => [O(st, M({
					checked: r[n.item.key],
					"onUpdate:checked": (e) => r[n.item.key] = e,
					disabled: !0,
					checkedChildren: e[0],
					unCheckedChildren: e[1]
				}, n.item.defaultProps), null)] });
			} else if (n.item?.type === "tree-select") {
				let e = z(n.item?.options) ? n.item.options({
					submitForm: t,
					record: r
				}) : n.item.options, i = xt(r[n.item.key]);
				return Dt(i) || (i = [i]), O("span", null, [f(e, i, n.item?.defaultProps?.fieldNames || null).join(", ")]);
			} else if (n.item?.type === "tag") return r[n.item.key]?.map((e) => O(dt, { color: "blue" }, Wu(e) ? e : { default: () => [e] }));
			else if (n.item?.type === "uploader") return O("div", { class: "flex justify-center" }, [Vu(r[n.item.key])]);
			else if (n.item?.type === "time" || n.item?.type === "date") {
				let e = n.item?.defaultProps?.format || (n.item?.type === "time" ? "HH:mm:ss" : "YYYY-MM-DD");
				return n.item?.defaultProps?.type === "range" ? O("span", null, [
					bt(r[n.item.key][0]).format(e),
					D(" -"),
					" ",
					bt(r[n.item.key][1]).format(e)
				]) : r[n.item.key] ? O("span", null, [bt(r[n.item.key]).format(e)]) : O("span", null, null);
			}
			if (n.dataIndex === "operations") {
				let t = [O(L, {
					type: "text",
					size: "small",
					onClick: () => h(r, a)
				}, { default: () => i("common.edit") })];
				return e.childrenOperations?.forEach((e) => {
					t.push(O(L, {
						type: "text",
						size: "small",
						onClick: () => e.action({
							column: n,
							record: r,
							index: a
						})
					}, { default: () => e.name }));
				}), t.push(O(Ze, {
					title: i("common.delete-confirm"),
					onConfirm: () => y(a)
				}, { default: () => O(L, {
					type: "text",
					size: "small"
				}, { default: () => i("common.delete") }) })), O("div", { class: "table-actions-wrapper" }, [
					D(" "),
					t,
					D(" ")
				]);
			}
		},
		summary: () => e.disabled || e.readonly ? null : O(ut, null, { default: () => O(lt, { colSpan: p.length }, { default: () => O(L, {
			icon: O(xn, null, null),
			block: !0,
			onClick: () => h(!1)
		}, { default: () => b(i("common.add"), e.title) }) }) })
	}), O(Ui, {
		visible: n.showEditModal,
		"onUpdate:visible": (e) => n.showEditModal = e,
		type: "drawer",
		title: b(i("common.edit"), e.title),
		beforeClose: _
	}, { default: () => [O(ge("NewbieForm"), {
		ref: a,
		form: c,
		closable: !1,
		data: n.editFormData,
		beforeSubmit: g,
		onClose: async () => {
			n.showEditModal = !await _();
		}
	}, null)] })]);
}, Ku = (e, t) => (t[e.key] = Number(t[e.key]) || 0, O(tt, M({
	value: t[e.key],
	"onUpdate:value": (n) => t[e.key] = n,
	disabled: z(e.disabled) ? e.disabled(t) : e.disabled
}, e.defaultProps), { ...e.defaultSlots })), qu = (e, t) => {
	let n = z(e.rows) ? e.rows(t) : e.rows, r = z(e.options) ? e.options(t) : e.options;
	return r = r.map((e) => Nt(e) || jt(e) ? {
		value: e,
		label: e
	} : e), O(ct, {
		pagination: !1,
		bordered: !0,
		columns: [{
			title: `${_("form.row-title")}\\${_("form.options")}`,
			dataIndex: "row",
			type: "title"
		}].concat(r.map((e) => ({
			title: e.label,
			dataIndex: e.value,
			align: "center",
			type: "option"
		}))),
		dataSource: n,
		size: "middle"
	}, { bodyCell: ({ index: r, column: i }) => {
		let a = n[r];
		if (i.type === "title") return a;
		if (i.type === "option") {
			let n = `${i.dataIndex}`;
			return O(Ve, null, { default: () => O($e, {
				value: t[e.key][a],
				"onUpdate:value": (n) => t[e.key][a] = n
			}, { default: () => [O(Qe, {
				value: n,
				disabled: z(e.disabled) ? e.disabled(t) : e.disabled
			}, null)] }) });
		}
	} });
}, Ju = (e, t) => {
	let n = z(e.rows) ? e.rows(t) : e.rows, r = z(e.options) ? e.options(t) : e.options;
	r = r.map((e) => Nt(e) || jt(e) ? {
		value: e,
		label: e
	} : e);
	let i = [{
		title: `${_("form.row-title")}\\${_("form.options")}`,
		dataIndex: "row",
		type: "title"
	}].concat(r.map((e) => ({
		title: e.label,
		dataIndex: e.value,
		align: "center",
		type: "option"
	}))), a = (n, r) => {
		t[e.key][n] || (t[e.key][n] = []), t[e.key][n].includes(r) ? Rt(t[e.key][n], (e) => e === r) : t[e.key][n].push(r);
	};
	return O(ct, {
		pagination: !1,
		bordered: !0,
		columns: i,
		dataSource: n,
		size: "middle"
	}, { bodyCell: ({ index: r, column: i }) => {
		let o = n[r];
		if (i.type === "title") return o;
		if (i.type === "option") {
			let n = `${i.dataIndex}`;
			return O(Ve, null, { default: () => O(Ae, {
				id: `${o}_${n}`,
				checked: t[e.key][o]?.includes(n),
				onChange: () => a(o, n),
				disabled: z(e.disabled) ? e.disabled(t) : e.disabled
			}, null) });
		}
	} });
}, Yu = (e, t) => {
	let n = z(e.rows) ? e.rows(t) : xt(e.rows), r = e.defaultProps?.level || 5, i = z(e.options) ? e.options(t) : e.options || [];
	if (i = i.map((e) => Nt(e) || jt(e) ? {
		value: e,
		label: e
	} : e), i.length > r) i = i.slice(0, r);
	else if (i.length < r) for (let e = i.length; e < r; e += 1) i.push({
		label: e + 1,
		value: e + 1
	});
	let a = [{
		title: `${_("form.row-title")}\\${_("form.options")}`,
		dataIndex: "row",
		type: "title"
	}].concat(i.map((e) => ({
		title: e.label,
		dataIndex: e.value,
		align: "center",
		type: "option"
	})));
	if (n = n.map((e) => ({ row: e })), e.defaultProps?.showScale) {
		let e = { row: _("form.scale") };
		i.forEach((t, n) => e[t.value] = n + 1), n.unshift(e);
	}
	return O(ct, {
		pagination: !1,
		bordered: !0,
		columns: a,
		dataSource: n,
		size: "middle"
	}, { bodyCell: ({ index: r, column: i, record: o }) => {
		if (r === 0 && e.defaultProps?.showScale) return O("span", { style: {
			color: "orange",
			fontWeight: "bold"
		} }, [o[i.dataIndex]]);
		if (i.type === "option") {
			let { row: o } = n[r], s = Et(a, { dataIndex: i.dataIndex });
			return O(Ve, null, { default: () => O($e, {
				value: t[e.key][o],
				"onUpdate:value": (n) => t[e.key][o] = n
			}, { default: () => [O(Qe, {
				value: s,
				disabled: z(e.disabled) ? e.disabled(t) : e.disabled
			}, null)] }) });
		}
		return o[i.dataIndex];
	} });
};
//#endregion
//#region components/form/components/RateRadio.jsx
function Xu(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var Zu = (e, t) => {
	let n, r = z(e.options) ? e.options(t) : e.options;
	return r = r.map((e) => {
		if (Nt(e) || jt(e)) return {
			value: e,
			label: e,
			rate: 0
		};
		if (Mt(e) && e.value) return B(e.label) && (e.label = e.value), B(e.rate) && (e.rate = 0), e;
	}), e.readonly ? O("div", { style: { padding: "0 11px" } }, [O(dt, null, Xu(n = v(t[e.key].value, r)) ? n : { default: () => [n] })]) : O($e, M({
		value: t[e.key].value,
		"onUpdate:value": (n) => t[e.key].value = n,
		optionType: "button",
		buttonStyle: "solid",
		disabled: z(e.disabled) ? e.disabled(t) : e.disabled,
		options: r,
		style: e.style || {},
		onChange: (n) => {
			let { value: i } = n.target;
			t[e.key].rate = Tt(r, { value: i })?.rate || 0;
		}
	}, e.defaultProps), { ...e.defaultSlots });
};
//#endregion
//#region components/form/components/RateCheckbox.jsx
function Qu(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var $u = (e, t) => {
	let n = z(e.options) ? e.options(t) : e.options;
	n = n.map((e) => {
		if (Nt(e) || jt(e)) return {
			value: e,
			label: e,
			rate: 0
		};
		if (Mt(e) && e.value) return B(e.label) && (e.label = e.value), B(e.rate) && (e.rate = 0), e;
	});
	let r = (n) => {
		t[e.key] || (t[e.key] = []), t[e.key].filter((e) => e.value === n.value).length ? t[e.key] = t[e.key].filter((e) => e.value !== n.value) : t[e.key].push({
			value: n.value,
			rate: n.rate
		});
	};
	return e.readonly ? O("div", { style: { padding: "0 11px" } }, [f(n, t[e.key].map((e) => e.value)).map((e) => O(dt, { style: { marginRight: "5px" } }, Qu(e) ? e : { default: () => [e] }))]) : O(Ve, null, { default: () => n.map((n) => {
		let i = t[e.key].filter((e) => e.value === n.value).length > 0;
		return O(Ae, {
			id: n.value,
			checked: i,
			onChange: () => r(n),
			disabled: z(e.disabled) ? e.disabled(t) : e.disabled
		}, { default: () => n.label });
	}) });
}, ed = (e, t) => O("span", {
	style: e.style,
	class: { ...e.class }
}, [z(e.defaultValue) ? e.defaultValue({ submitForm: t }) : e.defaultValue]), td = (e, t, n) => {
	let r = e.children;
	return O("div", {
		style: {
			display: "flex",
			gap: "6px",
			...e.style
		},
		class: { ...e.class }
	}, [r.map((e) => _d(e, t, n))]);
}, nd = {
	NUMBER: "NUMBER",
	STRING: "STRING",
	FIELD_REF: "FIELD_REF",
	LPAREN: "LPAREN",
	RPAREN: "RPAREN",
	COMMA: "COMMA",
	OPERATOR: "OPERATOR",
	FUNCTION: "FUNCTION"
};
function rd(e) {
	let t = [], n = 0;
	for (; n < e.length;) {
		let r = e[n];
		if (/\s/.test(r)) {
			n++;
			continue;
		}
		if (r === "[") {
			let r = e.indexOf("]", n);
			if (r === -1) throw Error(`未闭合的字段引用,位置 ${n}`);
			let i = e.slice(n + 1, r);
			t.push({
				type: nd.FIELD_REF,
				value: i
			}), n = r + 1;
			continue;
		}
		if (r === "\"" || r === "'") {
			let i = r, a = "";
			for (n++; n < e.length && e[n] !== i;) e[n] === "\\" && n++, a += e[n], n++;
			if (n >= e.length) throw Error("未闭合的字符串字面量");
			t.push({
				type: nd.STRING,
				value: a
			}), n++;
			continue;
		}
		if (/\d/.test(r) || r === "-" && n + 1 < e.length && /\d/.test(e[n + 1])) {
			let i = "";
			if (r === "-") {
				let e = t[t.length - 1];
				if (e && e.type !== nd.OPERATOR && e.type !== nd.LPAREN && e.type !== nd.COMMA) {
					t.push({
						type: nd.OPERATOR,
						value: "-"
					}), n++;
					continue;
				}
			}
			for (; n < e.length && /[\d.]/.test(e[n]);) i += e[n], n++;
			t.push({
				type: nd.NUMBER,
				value: parseFloat(i)
			});
			continue;
		}
		if (r === "(") {
			t.push({
				type: nd.LPAREN,
				value: "("
			}), n++;
			continue;
		}
		if (r === ")") {
			t.push({
				type: nd.RPAREN,
				value: ")"
			}), n++;
			continue;
		}
		if (r === ",") {
			t.push({
				type: nd.COMMA,
				value: ","
			}), n++;
			continue;
		}
		if (/[+\-*/%><=!]/.test(r)) {
			let i = r;
			n + 1 < e.length && /[=]/.test(e[n + 1]) && (i += e[n + 1], n++), t.push({
				type: nd.OPERATOR,
				value: i
			}), n++;
			continue;
		}
		if (/[a-zA-Z_]/.test(r)) {
			let r = "";
			for (; n < e.length && /[a-zA-Z0-9_]/.test(e[n]);) r += e[n], n++;
			let i = n;
			for (; i < e.length && /\s/.test(e[i]);) i++;
			i < e.length && e[i] === "(" ? t.push({
				type: nd.FUNCTION,
				value: r.toUpperCase()
			}) : t.push({
				type: nd.FIELD_REF,
				value: r
			});
			continue;
		}
		throw Error(`未知字符: '${r}',位置 ${n}`);
	}
	return t;
}
var id = {
	NumberLiteral: "NumberLiteral",
	StringLiteral: "StringLiteral",
	FieldRef: "FieldRef",
	BinaryOp: "BinaryOp",
	UnaryOp: "UnaryOp",
	FunctionCall: "FunctionCall"
};
function ad(e) {
	let t = 0, n = {
		"+": 10,
		"-": 10,
		"*": 20,
		"/": 20,
		"%": 20,
		"==": 5,
		"!=": 5,
		">": 5,
		"<": 5,
		">=": 5,
		"<=": 5
	};
	function r() {
		return e[t];
	}
	function i() {
		return e[t++];
	}
	function a(s = 0) {
		let c = o();
		for (; t < e.length && r().type === nd.OPERATOR && n[r().value] >= s;) {
			let e = i().value, t = a(n[e] + 1);
			c = {
				type: id.BinaryOp,
				operator: e,
				left: c,
				right: t
			};
		}
		return c;
	}
	function o() {
		let e = r();
		if (!e) throw Error("意外的表达式结尾");
		switch (e.type) {
			case nd.NUMBER: return i(), {
				type: id.NumberLiteral,
				value: e.value
			};
			case nd.STRING: return i(), {
				type: id.StringLiteral,
				value: e.value
			};
			case nd.FIELD_REF: return i(), {
				type: id.FieldRef,
				name: e.value
			};
			case nd.LPAREN:
				i();
				let t = a();
				if (!r() || r().type !== nd.RPAREN) throw Error("缺少右括号");
				return i(), t;
			case nd.FUNCTION: return s();
			default: throw Error(`意外的 token: ${e.value}`);
		}
	}
	function s() {
		let e = i().value;
		if (!r() || r().type !== nd.LPAREN) throw Error(`函数 ${e} 后期望有左括号`);
		i();
		let t = [];
		if (r() && r().type === nd.RPAREN) return i(), {
			type: id.FunctionCall,
			name: e,
			args: t
		};
		for (t.push(a()); r() && r().type === nd.COMMA;) i(), t.push(a());
		if (!r() || r().type !== nd.RPAREN) throw Error(`函数 ${e} 缺少右括号`);
		return i(), {
			type: id.FunctionCall,
			name: e,
			args: t
		};
	}
	if (e.length === 0) throw Error("空的公式表达式");
	let c = a();
	if (t < e.length) throw Error(`未解析的 token: ${e[t].value}`);
	return c;
}
function od(e, t = {}) {
	if (!e) return null;
	switch (e.type) {
		case id.NumberLiteral: return e.value;
		case id.StringLiteral: return e.value;
		case id.FieldRef: return t[e.name] ?? null;
		case id.BinaryOp: return sd(e.operator, e.left, e.right, t);
		case id.FunctionCall: return cd(e.name, e.args, t);
		default: throw Error(`未知的 AST 节点类型: ${e.type}`);
	}
}
function sd(e, t, n, r) {
	let i = od(t, r), a = od(n, r), o = Q(i), s = Q(a), c = ud(i), l = ud(a);
	switch (e) {
		case "+": return typeof i == "string" || typeof a == "string" ? c + l : o + s;
		case "-": return o - s;
		case "*": return o * s;
		case "/": return s === 0 ? { error: "除零错误" } : o / s;
		case "%": return s === 0 ? { error: "除零错误" } : o % s;
		case "==": return +!!ld(i, a);
		case "!=": return +!ld(i, a);
		case ">": return +(o > s);
		case "<": return +(o < s);
		case ">=": return +(o >= s);
		case "<=": return +(o <= s);
		default: throw Error(`未知的运算符: ${e}`);
	}
}
function cd(e, t, n) {
	let r = t.map((e) => od(e, n));
	switch (e) {
		case "IF": return r.length < 3 ? { error: "IF 函数需要 3 个参数" } : Q(r[0]) ? r[1] : r[2];
		case "SUM": return r.reduce((e, t) => e + Q(t), 0);
		case "AVG": return r.length === 0 ? { error: "AVG 函数至少需要 1 个参数" } : r.reduce((e, t) => e + Q(t), 0) / r.length;
		case "MAX": return Math.max(...r.map(Q));
		case "MIN": return Math.min(...r.map(Q));
		case "ABS": return r.length === 1 ? Math.abs(Q(r[0])) : { error: "ABS 函数需要 1 个参数" };
		case "ROUND":
			if (r.length < 1) return { error: "ROUND 函数至少需要 1 个参数" };
			let t = 10 ** (r.length > 1 ? Q(r[1]) : 0);
			return Math.round(Q(r[0]) * t) / t;
		case "COUNT": return r.filter((e) => e != null).length;
		case "PERCENT":
			if (r.length < 2) return { error: "PERCENT 函数需要 2 个参数" };
			let n = Q(r[1]);
			return n === 0 ? { error: "PERCENT 函数除零错误" } : Q(r[0]) / n * 100;
		case "CONCAT": return r.map(ud).join("");
		case "LEN": return r.length === 1 ? ud(r[0]).length : { error: "LEN 函数需要 1 个参数" };
		case "UPPER": return r.length === 1 ? ud(r[0]).toUpperCase() : { error: "UPPER 函数需要 1 个参数" };
		case "LOWER": return r.length === 1 ? ud(r[0]).toLowerCase() : { error: "LOWER 函数需要 1 个参数" };
		case "MOD":
			if (r.length < 2) return { error: "MOD 函数需要 2 个参数" };
			let i = Q(r[1]);
			return i === 0 ? { error: "MOD 函数除零错误" } : Q(r[0]) % i;
		case "POWER": return r.length < 2 ? { error: "POWER 函数需要 2 个参数" } : Q(r[0]) ** +Q(r[1]);
		case "SQRT":
			if (r.length !== 1) return { error: "SQRT 函数需要 1 个参数" };
			let a = Q(r[0]);
			return a < 0 ? { error: "SQRT 函数参数不能为负数" } : Math.sqrt(a);
		case "AND": return r.length === 0 ? { error: "AND 函数至少需要 1 个参数" } : +!!r.every((e) => Q(e) !== 0);
		case "OR": return r.length === 0 ? { error: "OR 函数至少需要 1 个参数" } : +!!r.some((e) => Q(e) !== 0);
		case "NOT": return r.length === 1 ? +(Q(r[0]) === 0) : { error: "NOT 函数需要 1 个参数" };
		case "XOR": return r.length < 2 ? { error: "XOR 函数至少需要 2 个参数" } : +(r.filter((e) => Q(e) !== 0).length % 2 == 1);
		case "TODAY": return (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
		case "NOW": return (/* @__PURE__ */ new Date()).toISOString();
		case "DATE":
			if (r.length < 3) return { error: "DATE 函数需要 3 个参数 (年, 月, 日)" };
			let o = Q(r[0]), s = Q(r[1]), c = Q(r[2]), l = new Date(o, s - 1, c);
			return isNaN(l.getTime()) ? { error: "DATE 函数参数无效" } : l.toISOString().slice(0, 10);
		case "YEAR": return r.length === 1 ? dd(r[0]).getFullYear() : { error: "YEAR 函数需要 1 个参数" };
		case "MONTH": return r.length === 1 ? dd(r[0]).getMonth() + 1 : { error: "MONTH 函数需要 1 个参数" };
		case "DAY": return r.length === 1 ? dd(r[0]).getDate() : { error: "DAY 函数需要 1 个参数" };
		case "HOUR": return r.length === 1 ? dd(r[0]).getHours() : { error: "HOUR 函数需要 1 个参数" };
		case "MINUTE": return r.length === 1 ? dd(r[0]).getMinutes() : { error: "MINUTE 函数需要 1 个参数" };
		case "DATEDIF":
			if (r.length < 3) return { error: "DATEDIF 函数需要 3 个参数 (开始日期, 结束日期, 单位)" };
			let u = dd(r[0]), d = dd(r[1]), f = ud(r[2]).toUpperCase(), p = d - u;
			if (isNaN(p)) return { error: "DATEDIF 函数日期参数无效" };
			switch (f) {
				case "Y": return d.getFullYear() - u.getFullYear();
				case "M": return (d.getFullYear() - u.getFullYear()) * 12 + (d.getMonth() - u.getMonth());
				case "D": return Math.floor(p / (1e3 * 60 * 60 * 24));
				default: return { error: "DATEDIF 单位应为 \"Y\"、\"M\" 或 \"D\"" };
			}
		default: return { error: `未知函数: ${e}` };
	}
}
function ld(e, t) {
	let n = e == null || e === "", r = t == null || t === "";
	if (n && r) return !0;
	if (n || r) return !1;
	let i = Number(e), a = Number(t);
	return !isNaN(i) && !isNaN(a) ? i === a : String(e) === String(t);
}
function Q(e) {
	if (e == null || e === "") return 0;
	if (typeof e == "number") return e;
	if (typeof e == "boolean") return +!!e;
	let t = Number(e);
	return isNaN(t) ? 0 : t;
}
function ud(e) {
	return e == null ? "" : String(e);
}
function dd(e) {
	if (e instanceof Date) return e;
	if (typeof e == "number") return new Date(e);
	if (typeof e == "string") {
		let t = new Date(e);
		if (!isNaN(t.getTime())) return t;
		let n = e.match(/(\d{4})[年/-](\d{1,2})[月/-](\d{1,2})/);
		if (n) return new Date(Number(n[1]), Number(n[2]) - 1, Number(n[3]));
	}
	return /* @__PURE__ */ new Date(NaN);
}
var fd = /* @__PURE__ */ new Map();
function pd(e) {
	let t = /* @__PURE__ */ new Set();
	if (!e) return t;
	switch (e.type) {
		case id.FieldRef:
			t.add(e.name);
			break;
		case id.BinaryOp:
			pd(e.left).forEach((e) => t.add(e)), pd(e.right).forEach((e) => t.add(e));
			break;
		case id.FunctionCall:
			e.args.forEach((e) => pd(e).forEach((e) => t.add(e)));
			break;
		default: break;
	}
	return t;
}
function md(e, t) {
	if (!e || !t) return !1;
	try {
		let n = fd.get(e);
		return n || (n = ad(rd(e)), fd.set(e, n)), pd(n).has(t);
	} catch {
		return !1;
	}
}
function hd(e, t = {}) {
	try {
		let n = fd.get(e);
		n || (n = ad(rd(e)), fd.set(e, n));
		let r = od(n, t);
		return r && typeof r == "object" && r.error, r;
	} catch (e) {
		return { error: e.message };
	}
}
//#endregion
//#region components/form/components/ComputedField.jsx
var gd = (e, t) => {
	let { formula: n } = e, r = !n || !n.trim(), i = "", a = !1, o = {};
	if (e.defaultProps && (e.defaultProps.prefix && (o.prefix = () => z(e.defaultProps.prefix) ? e.defaultProps.prefix() : e.defaultProps.prefix), e.defaultProps.suffix && (o.suffix = () => z(e.defaultProps.suffix) ? e.defaultProps.suffix() : e.defaultProps.suffix), e.defaultProps.prepend && (o.addonBefore = () => z(e.defaultProps.prepend) ? e.defaultProps.prepend() : e.defaultProps.prepend), e.defaultProps.append && (o.addonAfter = () => z(e.defaultProps.append) ? e.defaultProps.append() : e.defaultProps.append)), r) i = "暂未设置计算公式";
	else {
		let e = hd(n, t);
		e && typeof e == "object" && e.error ? (i = e.error, a = !0) : (i = e === "" || e == null ? "—" : String(e), a = !1);
	}
	return O(We, M({
		value: i,
		placeholder: lr(e),
		style: { ...e.style },
		status: a ? "error" : "",
		class: {
			readonly: !0,
			...e.class
		}
	}, e.defaultProps), {
		...o,
		...e.defaultSlots
	});
}, _d = (e, t, { props: n, slots: r, formState: i }) => {
	let { t: a } = l(), o = ie(er, () => ({})), s = ie(tr, () => ({}));
	B(t[e.key]) && e.key && (t[e.key] = sr(e, {}, t, {
		formProvider: s,
		uploaderProvider: o
	}));
	let c = null, u = e.rules?.length ? e.rules.map((e) => e.pattern ? {
		...e,
		pattern: new RegExp(e.pattern)
	} : { ...e }) : [], d = {
		required: !0,
		message: e.requiredMessage || lr(e, "select")
	};
	e.type = e.type ? e.type.toLowerCase() : e.type;
	let f = z(e.required) ? e.required(t) : e.required;
	if (e.readonly = e.readonly || n.readonly, e.disabled = e.disabled || n.disabled || n.readonly || e.readonly, (e.readonly || e.disabled) && (e.placeholder = "--"), e.visible === !1 || z(e.hidden) && e.hidden(t) || Ot(e.hidden) && e.hidden) return null;
	if (e.type === "slot" && r[e.key]) return r[e.key]({
		submitForm: t,
		item: e
	});
	if (e.customRender) {
		if (c = e.customRender({
			submitForm: t,
			item: e
		}), !c) return null;
	} else if (e.match) return _d({
		...e,
		...e.match(t),
		match: null
	}, t, {
		props: n,
		slots: r
	});
	else switch (e.type) {
		case "select":
			c = hr(e, t);
			break;
		case "remote":
			c = _r(e, t, i[e.key]);
			break;
		case "tree-select":
			c = gr(e, t);
			break;
		case "date":
			c = ur(e, t);
			break;
		case "time":
			c = dr(e, t);
			break;
		case "switch":
			c = Sr(e, t);
			break;
		case "radio":
			c = wr(e, t);
			break;
		case "checkbox":
			c = Er(e, t), d.type = "array";
			break;
		case "tag":
			c = mr(e, t, i[e.key]), d.type = "array";
			break;
		case "address":
			c = vr(e, t), d.type = "array";
			break;
		case "cascade":
			c = yr(e, t), d.type = "array";
			break;
		case "number":
			c = br(e, t), d.trigger = "blur", d.type = "number", d.message = e.requiredMessage || lr(e);
			break;
		case "html":
			c = Dr(e, t);
			break;
		case "uploader":
			if (c = jr(e, t), f) {
				if (!Object.keys(o).length) {
					console.error("Please inject NEWBIE_UPLOADER config in root component"), c = null;
					break;
				}
				e.defaultProps?.maxNum && e.defaultProps?.maxNum > 1 ? (d.type = "array", d.message = e.requiredMessage || lr(e, "upload")) : (d.type = "object", d.message = e.requiredMessage || lr(e, "upload"), d.fields = { [o.defaultFileItem.path]: {
					type: "string",
					required: !0,
					message: lr(e, "upload")
				} });
			}
			break;
		case "editor":
			c = Mr(e, t), d.message = e.requiredMessage || lr(e), d.type = "string";
			break;
		case "text":
			c = Nr(e, t);
			break;
		case "plain":
			c = ed(e, t);
			break;
		case "group":
			c = Gu(e, t, i[e.key], { provider: { uploaderProvider: o } });
			break;
		case "rate":
			c = Ku(e, t);
			break;
		case "matrix-radio": {
			c = qu(e, t), d.type = "object", d.message = e.requiredMessage || lr(e, "select");
			let n = {};
			e.rows.forEach((e) => {
				n[e] = {
					required: !0,
					message: a("form.please-select", { title: e })
				};
			}), d.fields = n;
			break;
		}
		case "matrix-checkbox": {
			c = Ju(e, t), d.type = "object", d.message = e.requiredMessage || lr(e, "select");
			let n = {};
			e.rows.forEach((e) => {
				n[e] = {
					required: !0,
					type: "array",
					message: a("form.please-select", { title: e })
				};
			}), d.fields = n;
			break;
		}
		case "matrix-scale": {
			c = Yu(e, t), d.type = "object", d.message = e.requiredMessage || lr(e, "select");
			let n = {};
			e.rows.forEach((e) => {
				n[e] = {
					type: "number",
					required: !0,
					message: a("form.please-select", { title: e })
				};
			}), d.fields = n;
			break;
		}
		case "rate-radio":
			c = Zu(e, t);
			break;
		case "rate-checkbox":
			c = $u(e, t), d.type = "array";
			break;
		case "combiner":
			c = td(e, t, {
				props: n,
				slots: r
			});
			break;
		case "computed":
			c = gd(e, t, {
				props: n,
				slots: r
			});
			break;
		default:
			c = fr(e, t), d.message = e.requiredMessage || lr(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 m = e.formItemSlots || {};
	e.help && (m.extra = () => O("div", { class: "newbie-form__form-item-help" }, [z(e.help) ? e.help(t) : e.help])), m.label && delete p.label;
	let h = null;
	return e.optional && !e.readonly && (B(e.optionalValue) && (e.optionalValue = N(cr(e, t))), h = O("div", { class: "newbie-form__optional" }, [O(Ve, null, { default: () => [O(st, {
		checked: e.optionalValue.value,
		"onUpdate:checked": (t) => e.optionalValue.value = t,
		checkedChildren: e.optional?.[0] || "",
		unCheckedChildren: e.optional?.[1] || "",
		onChange: (n) => !n && (t[e.key] = null)
	}, null)] }), O("div", { class: "newbie-form__optional-content" }, [e.optionalValue.value ? c : !1])])), O(Be, p, {
		default: () => e.optional && !e.readonly ? h : c,
		...m
	});
};
//#endregion
//#region components/form/components/Layout.jsx
function vd(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var yd = (e, t, n, r) => {
	let { props: i, slots: a, formState: o, fieldVisibility: s } = r, c = (e) => _d({
		...e,
		visible: s ? s[e.key] !== !1 : !0
	}, t, r), l = [], u = [];
	e.filter((e) => e.type !== "computed").forEach((e) => {
		e.columnIndex === "fixed" ? l.push(e) : ((e.break || !u.length) && u.push([]), u[u.length - 1].push(e));
	});
	let d = i.columns;
	if ((!d || !Dt(d) || !d.length) && (d = [24]), zt(d) !== 24) return console.error("NewbieForm columns must sum up to 24"), null;
	let f = u.map(() => d.map(() => []));
	u.forEach((e, t) => {
		e.forEach((e) => {
			let n = e.columnIndex || 0;
			n = jt(n) ? Math.min(n, i.columns.length - 1) : n;
			let r = 0;
			if (Dt(n)) {
				for (let e = n[0]; e <= n[1] && d[e]; e++) r += d[e], e !== n[0] && f[t][e].push("placeholder");
				e.span = r, e.formItemProps = {
					labelCol: { span: (i.formProps.labelCol?.span || 6) / (n[n.length - 1] - n[0] + 1) },
					...e.formItemProps
				}, f[t][n[0]].push(e);
			} else jt(n) && (e.span = d[n], f[t][n].push(e));
		});
	});
	let p = l.map((e) => c(e)), m = [], h = (e) => {
		let t = document.getElementById(`collapse_${e.key}`);
		o[e.key].isCollapse ? t.style.height = `${t.scrollHeight}px` : (t.style.height || (t.style.height = `${t.scrollHeight}px`), setTimeout(() => t.style.height = "0px")), se(() => {
			o[e.key].isCollapse = !o[e.key].isCollapse;
		});
	};
	f.forEach((e, t) => {
		let n = Math.max(...e.map((e) => e.length)), r = [], a = null;
		for (let e = 0; e < n; e++) {
			let n = 0, i = [];
			for (let r = 0; r < f[t].length; r++) {
				let o, s = f[t][r][e];
				if (!s) {
					n += d[r];
					continue;
				}
				s.break && (a = s), s !== "placeholder" && (i.push(O(Me, {
					span: s.span,
					offset: n
				}, vd(o = c(s)) ? o : { default: () => [o] })), n = 0);
			}
			r.push(O(nt, { gutter: 16 }, vd(i) ? i : { default: () => [i] }));
		}
		if (a) {
			if (i.breakMode === "divider") r.unshift(O(Pe, i.dividerProps, { default: () => Nt(a.break) ? a.break : "" })), m = m.concat(r);
			else if (i.breakMode === "collapse") {
				B(o[a.key].isCollapse) && (o[a.key].isCollapse = !!t);
				let e = O("div", { class: "newbie-form__collapse-wrapper" }, [O("div", {
					class: "newbie-form__collapse-header",
					onClick: () => h(a)
				}, [O("span", { class: `newbie-form__collapse-icon ${o[a.key].isCollapse ? "" : "open"}` }, [O(Sn, null, null)]), O("span", { class: "newbie-form__collapse-title" }, [a.break])]), O("div", {
					class: `newbie-form__collapse-content-wrapper ${o[a.key].isCollapse ? "collapse" : ""}`,
					id: `collapse_${a.key}`
				}, [O("div", { class: "newbie-form__collapse-content" }, [r])])]);
				m = m.concat(e);
			}
		} else m = m.concat(r);
	});
	let g = () => a.footer ? O("div", { class: "newbie-form__footer" }, [a.footer()]) : null, _;
	if (p.length) {
		let e = i.disabled || i.readonly || i.hideButtons ? null : O("div", { class: "newbie-form__submit-wrapper" }, [O(Pe, null, null), O(nt, null, { default: () => [O(Me, {
			span: 24,
			offset: 2
		}, { default: () => n })] })]);
		_ = O(nt, { gutter: 16 }, { default: () => [O(Me, { span: 24 - i.fixedColumns }, { default: () => m }), O(Me, { span: i.fixedColumns }, { default: () => [O(we, { offsetTop: 20 }, { default: () => [O(De, { style: { marginLeft: "20px" } }, { default: () => [
			p,
			g(),
			e
		] })] })] })] });
	} else {
		let e = i.disabled || i.readonly || i.hideButtons ? null : O("div", { class: "newbie-form__submit-wrapper" }, [O(Pe, null, null), O(nt, { gutter: 16 }, { default: () => [O(Me, { offset: i.closable ? 9 : 10 }, { default: () => n })] })]);
		_ = [
			m,
			g(),
			e
		];
	}
	return _;
}, bd = {
	equals: (e, t) => e == t,
	notEquals: (e, t) => e != t,
	isEmpty: (e) => e == null || e === "",
	isNotEmpty: (e) => e != null && e !== "",
	gt: (e, t) => Number(e) > Number(t),
	lt: (e, t) => Number(e) < Number(t),
	gte: (e, t) => Number(e) >= Number(t),
	lte: (e, t) => Number(e) <= Number(t),
	contains: (e, t) => String(e).includes(t),
	notContains: (e, t) => !String(e).includes(t),
	startsWith: (e, t) => String(e).startsWith(t),
	endsWith: (e, t) => String(e).endsWith(t),
	in: (e, t) => Array.isArray(e) && e.includes(t),
	notIn: (e, t) => !Array.isArray(e) || !e.includes(t)
};
function xd(e, t = {}) {
	if (!e || !e.conditions || e.conditions.length === 0) return !1;
	let { conditions: n, logicGate: r = "and" } = e, i = n.map((e) => {
		let { field: n, operator: r, value: i } = e, a = t[n], o = bd[r];
		return o ? r === "isEmpty" || r === "isNotEmpty" ? o(a) : o(a, i) : (console.warn(`未知操作符: ${r}`), !1);
	});
	return (r || "and").toLowerCase() === "and" ? i.every((e) => e) : i.some((e) => e);
}
function Sd(e = [], t = {}) {
	let n = {};
	if (!e || e.length === 0) return n;
	let r = /* @__PURE__ */ new Set();
	return e.forEach((e) => {
		e.targetField && r.add(e.targetField);
	}), r.forEach((r) => {
		let i = e.filter((e) => e.targetField === r), a = !0, o = i.some((e) => e.action === "show" && xd(e, t)), s = i.some((e) => e.action === "hide" && xd(e, t));
		o ? a = !0 : s && (a = !1), n[r] = a;
	}), n;
}
//#endregion
//#region components/form/utils/normalize-form-config.js
function Cd(e) {
	return e ? Array.isArray(e) ? {
		fields: e,
		logic: { rules: [] }
	} : {
		fields: e.fields || [],
		logic: { rules: (e.logic || { rules: [] }).rules || [] }
	} : {
		fields: [],
		logic: { rules: [] }
	};
}
//#endregion
//#region components/form/NewbieForm.jsx
var wd = /* @__PURE__ */ A({
	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: i, emit: a }) {
		let { t: o, locale: s } = l(), c = N(null), u = me({
			temporary: {},
			submitFetcher: { loading: !1 },
			isInitializing: !0,
			submitForm: {},
			submitFormBackup: {}
		}), f = ie(er, () => ({})), p = ie(tr, () => ({})), m = {}, h = E(() => Cd(typeof e.form == "function" ? e.form() : e.form)), g = E(() => h.value.fields.map((e) => (e.type ||= "input", p?.columns?.[e.type] && (e = {
			...p.columns[e.type],
			...e
		}), m[e.key] || (m[e.key] = me({})), e))), _ = E(() => {
			let e = h.value.logic.rules;
			return e.length ? Sd(e, u.submitForm) : {};
		});
		I(() => u.submitForm, () => {
			h.value.fields.forEach((e) => {
				if (e.type === "computed" && e.formula) {
					let t = hd(e.formula, u.submitForm);
					t && typeof t == "object" && t.error || (u.submitForm[e.key] = t);
				}
			});
		}, { deep: !0 }), I(() => e.data, (e) => {
			y(e || "");
		}), I(_, (e) => {
			if (Object.keys(e).length !== 0) for (let t of Object.keys(e)) e[t] || (u.submitForm[t] = null);
		}, { deep: !0 });
		let v = () => {
			u.isInitializing = !1, y(e.data || "");
		};
		le(() => {
			let t = !1;
			e.autoLoad && e.fetchUrl && (t = !0, e.autoLoad && Mt(e.autoLoad) ? t = wt(Object.values(It(e.extraData, Object.keys(e.autoLoad)))) : e.autoLoad && Nt(e.autoLoad) && (t = !!e.extraData[e.autoLoad])), t ? x() : v();
		});
		let y = (e) => {
			let t = {}, n = e ? xt(e) : !1;
			g.value.forEach((e) => {
				e.type === "combiner" ? e.children.forEach((e) => {
					t[e.key] = sr(e, n, u.submitForm, { uploaderProvider: f });
				}) : t[e.key] = sr(e, n, u.submitForm, { uploaderProvider: f });
			}), n && (t = {
				...n,
				...t
			}), u.submitForm = t, u.submitFormBackup = xt(t);
		}, x = () => {
			e.fetchUrl && (u.isInitializing = !0, r().get(e.fetchUrl, { params: e.extraData }).then((n) => {
				u.isInitializing = !1, t(n, () => {
					e.afterFetched && z(e.afterFetched) ? n = e.afterFetched(n) : p.afterFetched && z(p.afterFetched) && (n = p.afterFetched(n)), y(n);
				});
			}).finally(() => {
				u.isInitializing = !1;
			}));
		}, C = () => new Promise((n, i) => {
			c.value.validate().then(async () => {
				let i = xt(u.submitForm), c = g.value.map((e) => e.match ? {
					...e,
					...e.match(i)
				} : e).filter((e) => e.beforeSubmit && z(e.beforeSubmit));
				for (let e of c) i[e.key] = await e.beforeSubmit({
					value: i[e.key],
					submitForm: i
				});
				if (i = d(i, p.format || {}), e.beforeSubmit && z(e.beforeSubmit) && (i = await e.beforeSubmit({
					formatForm: i,
					originalForm: u.submitForm
				}), i === !1)) return n();
				let l = await r(u.submitFetcher).post(e.submitUrl, i);
				return u.submitFormBackup = xt(u.submitForm), e.afterSubmit ? e.afterSubmit(l) : t(l, () => {
					R.success(b(e.submitButtonText || o("common.save"), o("common.success"), { locale: s })), a("success", l);
				}), n();
			}).catch((e) => (S(e), i(e)));
		}), w = (e) => {
			u.isInitializing = e;
		}, T = () => {
			c.value.resetFields();
		}, ee = () => xt(u.submitForm);
		n({
			submit: C,
			getForm: ee,
			getFormStandalone: ee,
			getFormRealtime: () => u.submitForm,
			getField: (e) => xt(u.submitForm[e]),
			setForm: (e) => {
				Object.keys(e).forEach((t) => {
					u.submitForm[t] = e[t];
				});
			},
			reset: T,
			isDirty: () => !kt(u.submitForm, u.submitFormBackup),
			isInitializing: w
		});
		let D = () => {
			let t = () => O(L, {
				loading: u.submitFetcher.loading,
				type: "primary",
				htmlType: "submit",
				disabled: e.submitDisabled,
				onClick: () => {
					e.submitConfirmText ? Xe.confirm({
						content: e.submitConfirmText,
						onOk() {
							C();
						}
					}) : C();
				}
			}, { default: () => `${e.submitButtonText || o("common.save")}${u.submitFetcher.loading ? "..." : ""}` }), n = () => O(L, {
				type: "default",
				onClick: () => {
					e.close && z(e.close) && e.close();
				}
			}, { default: () => e.closeButtonText || o("common.close") });
			return O(at, { size: "large" }, { default: () => e.closeButtonFirst ? [e.closable ? n() : null, t()] : [t(), e.closable ? n() : null] });
		}, k = () => yd(g.value, u.submitForm, D(), {
			props: e,
			slots: i,
			formState: m,
			fieldVisibility: _
		}), A = () => O(ze, M({
			model: u.submitForm,
			ref: c,
			class: "newbie-form",
			labelCol: { span: 6 },
			scrollToFirstError: !0
		}, e.formProps), { default: () => [k()] }), te = () => O(it, {
			active: !0,
			paragraph: { rows: 10 },
			loading: u.isInitializing
		}, { default: () => [
			i.prepend?.(),
			A(),
			i.append?.()
		] });
		return () => O("div", { class: "newbie-form-wrapper" }, [e.cardWrapper ? O(De, M(e.cardProps, { title: e.title }), {
			default: () => te(),
			...e.cardSlots
		}) : te()]);
	}
}), Td = In(wd), Ed = In(/* @__PURE__ */ A({
	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: t, expose: r }) {
		let i = N(null), a = N(null), o = E(() => ({ ...e.listProps })), s;
		e.useStore?.initPagination ? (e.useStore.initPagination({
			uri: e.url,
			params: e.extraData
		}), s = E(() => e.useStore.pagination)) : s = N({
			uri: e.url,
			params: e.extraData
		});
		let c = (e) => {
			s.value = n(s.value, e);
		}, { y: l } = Pi(i);
		return I(l, async (t) => {
			t + 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
		}), () => O("div", {
			ref: i,
			class: "newbie-list",
			style: { height: `${e.height}px` }
		}, [O(qe, M({
			ref: a,
			dataSource: s.value?.items || []
		}, o.value), {
			default: () => t.default?.(),
			renderItem: ({ item: e, index: n }) => t.renderItem ? t.renderItem({
				item: e,
				index: n
			}) : null,
			loadMore: () => [s.value?.loading ? O("div", { class: "loading-container" }, [O(ot, null, null)]) : null, s.value?.finished ? O("div", { class: "finished-text" }, [e.finishedText || _("common.loading-finished")]) : null]
		})]);
	}
})), Dd = In(Ui), Od = In(/* @__PURE__ */ A({
	name: "NewbiePassword",
	components: { InputPassword: Ke },
	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: t, expose: n }) {
		let r = N("");
		I(() => e.modelValue, () => {
			r.value = e.modelValue;
		});
		let i = E(() => {
			let e = 0;
			return [
				/\d/,
				/[a-z]/,
				/[A-Z]/,
				/[^a-zA-Z0-9]/
			].forEach((t) => {
				t.test(r.value) && (e += 1);
			}), e;
		}), a = [
			"",
			"bad",
			"weak",
			"medium",
			"strong"
		], o = (e) => {
			let { value: n } = e.target;
			t("change", e), t("update:value", n);
		}, s = E(() => r.value.length > 0 && r.value.length < e.min || r.value.length > e.max || i.value < 4), c = E(() => r.value.length > 0 && r.value.length < e.min ? `密码长度不能少于${e.min}个字符` : r.value.length > e.max ? `密码长度不能超过${e.max}个字符` : i.value < 4 ? "密码必须包含数字、小写字母、大写字母和特殊符号" : "");
		return n({ strength: i }), () => O("div", {
			class: "newbie-password",
			style: { width: or(e.width) }
		}, [
			O(ge("input-password"), {
				value: r.value,
				"onUpdate:value": (e) => r.value = e,
				onChange: o,
				minlength: e.min,
				maxlength: e.max
			}, null),
			O("div", { class: `strength-indicator-container ${a[i.value]}` }, [
				O("div", { class: `strength-indicator ${i.value >= 1 ? "active" : ""}` }, null),
				O("div", { class: `strength-indicator ${i.value >= 2 ? "active" : ""}` }, null),
				O("div", { class: `strength-indicator ${i.value >= 3 ? "active" : ""}` }, null),
				O("div", { class: `strength-indicator ${i.value >= 4 ? "active" : ""}` }, null)
			]),
			s.value ? O("div", { class: "error-message" }, [c.value]) : null
		]);
	}
})), kd = In(rr), Ad = In(Pu), jd = In(Ar);
//#endregion
//#region components/form-designer/defaultWidgets.jsx
function Md(e) {
	return e && e === "quiz" ? [{
		title: "题目类型",
		children: [
			{
				name: "单选",
				type: "radio",
				icon: () => j(Wt),
				props: {
					defaultProps: { optionType: "outlined" },
					options: [
						"A. 选项一",
						"B. 选项二",
						"C. 选项三",
						"D. 选项四"
					]
				}
			},
			{
				name: "多选",
				type: "checkbox",
				icon: () => j(Gt),
				props: { options: [
					"A. 选项一",
					"B. 选项二",
					"C. 选项三",
					"D. 选项四"
				] }
			},
			{
				name: "填空",
				type: "input",
				icon: () => j(rn),
				props: { width: "100%" }
			}
		]
	}] : [
		{
			title: "选择",
			children: [
				{
					name: "单选",
					type: "radio",
					icon: () => j(Wt),
					props: {
						defaultProps: { optionType: "outlined" },
						options: ["选项一", "选项二"]
					}
				},
				{
					name: "多选",
					type: "checkbox",
					icon: () => j(Gt),
					props: { options: ["选项一", "选项二"] }
				},
				{
					name: "下拉选择",
					type: "select",
					icon: () => j(tn),
					props: {
						options: ["选项一", "选项二"],
						width: 300
					}
				},
				{
					name: "开关",
					icon: () => j(An),
					type: "switch"
				},
				{
					name: "图片上传",
					type: "uploader",
					icon: () => j(ln),
					props: { defaultProps: { accept: ".png,.jpg,.jpeg" } }
				},
				{
					name: "文件上传",
					type: "uploader",
					icon: () => j(un),
					props: { defaultProps: {
						accept: ".doc,.docx,.pdf,.xls,.xlsx,.ppt,.pptx,.png,.jpg,jpeg",
						type: "text"
					} }
				}
			]
		},
		{
			title: "填空",
			children: [
				{
					name: "文本",
					type: "input",
					icon: () => j(rn),
					props: { width: "100%" }
				},
				{
					name: "多行文本",
					icon: () => j(dn),
					type: "textarea"
				},
				{
					name: "日期",
					icon: () => j(Ut),
					type: "date"
				},
				{
					name: "日期范围",
					type: "date",
					icon: () => j(Ut),
					props: {
						width: 300,
						defaultProps: { type: "range" }
					}
				},
				{
					name: "时间",
					icon: () => j(qt),
					type: "time"
				},
				{
					name: "时间范围",
					type: "time",
					icon: () => j(qt),
					props: {
						width: 300,
						defaultProps: { type: "range" }
					}
				},
				{
					name: "数字",
					icon: () => j(cn),
					type: "number"
				},
				{
					name: "计算字段",
					type: "computed",
					icon: () => j(Ht),
					props: {
						title: "计算字段",
						formula: "",
						help: "输入公式,如 SUM([q1], [q2])。用 [字段key] 引用其他字段的值。"
					}
				}
			]
		},
		{
			title: "评分",
			children: [
				{
					name: "星级评分",
					icon: () => j(kn),
					type: "rate"
				},
				{
					name: "单选评分",
					type: "rate-radio",
					icon: () => j(Wt),
					props: {
						defaultProps: { optionType: "outlined" },
						options: [
							{
								value: "选项一",
								rate: 1
							},
							{
								value: "选项二",
								rate: 2
							},
							{
								value: "选项三",
								rate: 3
							}
						]
					}
				},
				{
					name: "多选评分",
					type: "rate-checkbox",
					icon: () => j(Gt),
					props: { options: [
						{
							value: "选项一",
							rate: 1
						},
						{
							value: "选项二",
							rate: 2
						},
						{
							value: "选项三",
							rate: 3
						}
					] }
				}
			]
		},
		{
			title: "矩阵",
			children: [
				{
					name: "矩阵单选",
					type: "matrix-radio",
					icon: () => j(Wt),
					props: {
						options: [
							"好",
							"一般",
							"差"
						],
						rows: ["质量", "外观"]
					}
				},
				{
					name: "矩阵多选",
					type: "matrix-checkbox",
					icon: () => j(Gt),
					props: {
						options: [
							"好",
							"一般",
							"差"
						],
						rows: ["质量", "外观"]
					}
				},
				{
					name: "矩阵量表",
					type: "matrix-scale",
					icon: () => j(vn),
					props: {
						defaultProps: { showScale: !0 },
						options: [],
						rows: ["质量", "外观"]
					}
				}
			]
		},
		{
			title: "个人信息",
			children: [
				{
					name: "姓名",
					type: "input",
					icon: () => j(Mn),
					props: { title: "您的姓名" }
				},
				{
					name: "性别",
					type: "radio",
					icon: () => j(Dn),
					props: {
						title: "您的性别",
						options: ["男", "女"]
					}
				},
				{
					name: "手机号码",
					type: "input",
					icon: () => j(_n),
					props: {
						title: "请输入您的手机号码",
						rules: [{
							pattern: "^1[3456789]\\d{9}$",
							message: "手机号码格式不正确"
						}]
					}
				},
				{
					name: "邮箱",
					type: "input",
					icon: () => j(hn),
					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: () => j(an),
					props: { title: "请选择省份城市与地区" }
				}
			]
		}
	];
}
//#endregion
//#region components/form-designer/widgetProps.js
var Nd = (e, t) => {
	let n = [
		{
			title: "字段标识",
			key: "key",
			type: "input",
			readonly: !0,
			help: "字段唯一标识,用于公式引用和逻辑规则"
		},
		{
			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) && (n = n.concat([{
		title: "输入框提示",
		key: "placeholder"
	}])), [
		"matrix-radio",
		"matrix-checkbox",
		"matrix-scale"
	].includes(e.type) && (n = n.concat([{
		title: "行标题",
		key: "rows",
		type: "slot"
	}])), [
		"radio",
		"checkbox",
		"select",
		"matrix-radio",
		"matrix-checkbox",
		"matrix-scale",
		"rate-radio",
		"rate-checkbox"
	].includes(e.type) && (n = n.concat([{
		title: "选项",
		key: "options",
		type: "slot"
	}])), e.type === "matrix-scale" && (n = n.concat([{
		title: "量表等级",
		type: "number",
		key: "level",
		defaultProps: {
			min: 1,
			max: 10
		},
		defaultValue: 5
	}])), e.type === "rate" && (n = n.concat([{
		title: "星星总数",
		type: "number",
		key: "count",
		defaultProps: {
			min: 1,
			max: 10
		},
		defaultValue: 5
	}, {
		title: "是否允许半选",
		type: "switch",
		key: "allowHalf",
		defaultValue: !1
	}])), e.type === "uploader" && (n = n.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"
	}])), t && t === "quiz" && (n = n.concat([{
		title: "分值",
		key: "quiz_score",
		type: "number",
		required: !0,
		defaultValue: 1
	}]), !e.type || e.type === "input" ? n = n.concat([{
		break: !0,
		title: "正确答案",
		key: "__quiz_answer"
	}]) : e.type === "radio" ? n = n.concat([{
		break: !0,
		title: "正确答案",
		key: "__quiz_answer",
		type: "select",
		options: e.props.options?.map((e, t) => String.fromCharCode(65 + t))
	}]) : e.type === "checkbox" && (n = n.concat([{
		break: !0,
		title: "正确答案",
		key: "__quiz_answer",
		type: "select",
		options: e.props.options?.map((e, t) => String.fromCharCode(65 + t)),
		defaultProps: { mode: "multiple" }
	}])), n = n.concat([{
		title: "解析",
		key: "__quiz_analysis",
		type: "textarea"
	}])), n;
}, Pd = (e, t) => {
	let n = e.props, r = {};
	return [
		"key",
		"title",
		"required",
		"help",
		"break"
	].forEach((e) => {
		r[e] = n[e];
	}), t && t === "quiz" && (r.quiz_score = n.quiz_score, r.__quiz_answer = n.__quiz_answer, r.__quiz_analysis = n.__quiz_analysis), [
		"radio",
		"checkbox",
		"select",
		"rate-radio",
		"rate-checkbox"
	].includes(e.type) && (r.options = n.options), [
		"input",
		"select",
		"textarea"
	].includes(e.type) && (r.placeholder = n.placeholder), e.type === "rate" && (r.count = n.defaultProps?.count, r.allowHalf = n.defaultProps?.allowHalf), e.type === "computed" && (r.formula = n.formula, r.decimal = n.decimal === void 0 ? 2 : n.decimal, r.prefix = n.prefix || "", r.suffix = n.suffix || ""), e.type === "matrix-scale" && (r.level = n.defaultProps?.level), e.type === "uploader" && (r.maxNum = n.defaultProps?.maxNum || 1, r.privacy = n.defaultProps?.extraData?.type || "private"), r;
}, Fd = (e, t, n) => {
	if (!t) return;
	let r = t.props;
	[
		"title",
		"required",
		"help",
		"break"
	].forEach((t) => {
		r[t] = e[t];
	}), n && n === "quiz" && (r.quiz_score = e.quiz_score, r.__quiz_answer = e.__quiz_answer, r.__quiz_analysis = e.__quiz_analysis), [
		"radio",
		"checkbox",
		"select",
		"rate-radio",
		"rate-checkbox"
	].includes(t.type) && (r.options = e.options), [
		"input",
		"select",
		"textarea"
	].includes(t.type) && (r.placeholder = e.placeholder), t.type === "rate" && (r.defaultProps ||= {}, r.defaultProps.count = e.count, r.defaultProps.allowHalf = e.allowHalf), t.type === "computed" && (r.formula = e.formula, r.decimal = e.decimal === void 0 ? 2 : e.decimal, r.prefix = e.prefix || "", r.suffix = e.suffix || ""), t.type === "matrix-scale" && (r.defaultProps ||= {}, r.defaultProps.level = e.level), t.type === "uploader" && (r.defaultProps ||= {}, r.defaultProps.extraData || (r.defaultProps.extraData = {}), r.defaultProps.maxNum = e.maxNum, r.defaultProps.extraData.type = e.privacy);
}, Id = {
	all: [
		"equals",
		"notEquals",
		"isEmpty",
		"isNotEmpty"
	],
	number: [
		"gt",
		"lt",
		"gte",
		"lte"
	],
	text: [
		"contains",
		"notContains",
		"startsWith",
		"endsWith"
	],
	multi: ["in", "notIn"]
}, Ld = {
	equals: "等于",
	notEquals: "不等于",
	isEmpty: "为空",
	isNotEmpty: "不为空",
	gt: "大于",
	lt: "小于",
	gte: "大于等于",
	lte: "小于等于",
	contains: "包含",
	notContains: "不包含",
	startsWith: "开头是",
	endsWith: "结尾是",
	in: "已选择",
	notIn: "未选择"
}, Rd = /* @__PURE__ */ A({
	name: "GlobalLogicPanel",
	props: {
		rules: {
			type: Array,
			default: () => []
		},
		onChange: {
			type: Function,
			default: () => {}
		},
		availableFields: {
			type: Array,
			default: () => []
		},
		open: {
			type: Boolean,
			default: !1
		},
		onClose: {
			type: Function,
			default: () => {}
		}
	},
	setup(e) {
		let t = N(!1), n = N(""), r = N(""), i = N("show"), a = N("AND"), o = N([]), s = () => {
			n.value = "", r.value = "", i.value = "show", a.value = "AND", o.value = [];
		}, c = E(() => e.availableFields.filter((e) => e.type !== "computed")), l = (t) => {
			let n = e.availableFields.find((e) => e.key === t);
			if (!n) return Id.all;
			let r = [...Id.all];
			return n.type === "number" ? r.push(...Id.number) : ["input", "textarea"].includes(n.type) ? r.push(...Id.text) : ["checkbox", "select"].includes(n.type) && n.props?.mode === "multiple" && r.push(...Id.multi), r;
		}, u = (t) => {
			let n = e.availableFields.find((e) => e.key === t);
			return n ? ["radio", "select"].includes(n.type) ? "select" : n.type === "number" ? "number" : "input" : "input";
		}, d = (t) => {
			let n = e.availableFields.find((e) => e.key === t);
			return !n || !n.props?.options ? [] : n.props.options.map((e) => typeof e == "object" ? e : {
				label: e,
				value: e
			});
		}, f = () => {
			s(), n.value = Date.now().toString(), t.value = !0;
		}, p = (e) => {
			n.value = e.id || "", r.value = e.targetField || "", i.value = e.action || "show", a.value = (e.logicGate || "AND").toUpperCase(), o.value = e.conditions ? xt(e.conditions).map((e) => me(e)) : [], t.value = !0;
		}, m = (t) => {
			let n = e.rules.filter((e) => e.id !== t);
			e.onChange(n);
		}, h = () => {
			if (!r.value) {
				R.warn("请选择目标字段");
				return;
			}
			if (!o.value || o.value.length === 0) {
				R.warn("请至少添加一个条件");
				return;
			}
			let c = {
				id: n.value,
				targetField: r.value,
				action: i.value,
				logicGate: a.value,
				conditions: xt(o.value)
			}, l = e.rules.findIndex((e) => e.id === c.id), u;
			l >= 0 ? (u = [...e.rules], u[l] = c) : u = [...e.rules, c], e.onChange(u), t.value = !1, s();
		}, g = () => {
			t.value = !1, s();
		}, _ = () => {
			o.value.push(me({
				field: "",
				operator: "equals",
				value: ""
			}));
		}, v = (e) => {
			o.value.splice(e, 1);
		}, y = (t) => {
			let n = t.targetField ? e.availableFields.find((e) => e.key === t.targetField) : null, r = n ? `${n.title}(${n.key})` : t.targetField || "未知字段", i = t.action === "show" ? "显示" : "隐藏";
			return `当 ${t.conditions?.length || 0} 个条件(${(t.logicGate || "AND").toUpperCase() === "AND" ? "全部满足" : "任一满足"})时,${i} ${r}`;
		}, b = () => t.value ? O("div", { class: "rule-edit-form" }, [O(ze, { layout: "vertical" }, { default: () => [
			O(Be, { label: "目标字段" }, { default: () => [O(rt, {
				value: r.value,
				"onUpdate:value": (e) => {
					r.value = e;
				},
				placeholder: "选择目标字段",
				options: c.value.map((e) => ({
					label: `${e.key}(${e.title})`,
					value: e.key
				}))
			}, null)] }),
			O(Be, { label: "动作" }, { default: () => [O(Qe.Group, {
				value: i.value,
				onChange: (e) => {
					i.value = e && e.target ? e.target.value : e;
				}
			}, { default: () => [O(Qe, { value: "show" }, { default: () => [D("显示")] }), O(Qe, { value: "hide" }, { default: () => [D("隐藏")] })] })] }),
			O(Be, { label: "逻辑门" }, { default: () => [O(Qe.Group, {
				value: a.value,
				onChange: (e) => {
					a.value = e && e.target ? e.target.value : e;
				}
			}, { default: () => [O(Qe, { value: "AND" }, { default: () => [D("AND(全部满足)")] }), O(Qe, { value: "OR" }, { default: () => [D("OR(任一满足)")] })] })] }),
			O(Be, { label: "条件列表" }, { default: () => [O(at, {
				direction: "vertical",
				style: { width: "100%" }
			}, { default: () => [o.value.map((e, t) => {
				let n = l(e.field), r = u(e.field), i = d(e.field);
				return O("div", {
					key: t,
					class: "condition-row"
				}, [O(at, null, { default: () => [
					O(rt, {
						value: e.field,
						"onUpdate:value": (e) => {
							o.value[t] = me({
								field: e,
								operator: l(e)[0],
								value: ""
							});
						},
						placeholder: "选择字段",
						style: { width: "150px" },
						options: c.value.map((e) => ({
							label: `${e.key}(${e.title})`,
							value: e.key
						}))
					}, null),
					O(rt, {
						value: e.operator,
						"onUpdate:value": (t) => {
							e.operator = t;
						},
						placeholder: "操作符",
						style: { width: "130px" },
						options: n.map((e) => ({
							label: Ld[e] || e,
							value: e
						}))
					}, null),
					r === "select" ? O(rt, {
						value: e.value,
						"onUpdate:value": (t) => {
							e.value = t;
						},
						placeholder: "选择值",
						style: { width: "150px" },
						options: i
					}, null) : O(r === "number" ? Ge : We, {
						value: e.value,
						"onUpdate:value": (t) => {
							e.value = t;
						},
						placeholder: "输入值",
						style: { width: 150 }
					}, null),
					O(L, {
						danger: !0,
						size: "small",
						onClick: () => v(t)
					}, { default: () => [D("删除")] })
				] })]);
			}), O(L, {
				type: "dashed",
				onClick: _
			}, { default: () => [D("+ 添加条件")] })] })] })
		] }), O(at, { style: { marginTop: "16px" } }, { default: () => [O(L, {
			type: "primary",
			onClick: h
		}, { default: () => [D("保存")] }), O(L, { onClick: g }, { default: () => [D("取消")] })] })]) : null;
		return () => O(Fe, {
			title: "表单逻辑",
			open: e.open,
			onClose: e.onClose,
			width: 600
		}, { default: () => [t.value ? b() : O(C, null, [O(L, {
			type: "primary",
			icon: O(xn, null, null),
			onClick: f,
			style: { marginBottom: "16px" }
		}, { default: () => [D("添加规则")] }), e.rules.length === 0 ? O("div", { style: {
			textAlign: "center",
			padding: "40px 0",
			color: "#999"
		} }, [D("暂无规则,点击\"添加规则\"开始配置")]) : e.rules.map((e) => O(De, {
			key: e.id,
			size: "small",
			style: { marginBottom: "8px" }
		}, { default: () => [O("div", null, [y(e)]), O(at, { style: { marginTop: "8px" } }, { default: () => [O(L, {
			size: "small",
			onClick: () => p(e)
		}, { default: () => [D("编辑")] }), O(L, {
			danger: !0,
			size: "small",
			onClick: () => m(e.id)
		}, { default: () => [D("删除")] })] })] }))])] });
	}
});
//#endregion
//#region components/form-designer/FormulaEditor.jsx
function zd(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
var { TextArea: Bd } = We, $ = {
	code: {
		background: "#fff1f0",
		border: "1px solid #ffccc7",
		borderRadius: 4,
		padding: "2px 6px",
		fontFamily: "Consolas, Monaco, monospace",
		fontSize: "13px",
		color: "#cf1322"
	},
	guideBg: {
		background: "#fafafa",
		padding: "12px 16px",
		borderRadius: 6
	},
	table: {
		border: "1px solid #f0f0f0",
		borderRadius: 6,
		overflow: "hidden",
		margin: "8px 0 16px"
	},
	tableHeader: {
		display: "flex",
		background: "#fafafa",
		borderBottom: "1px solid #f0f0f0"
	},
	tableCell: (e, t) => ({
		flex: 1,
		padding: "8px 12px",
		borderRight: e < t - 1 ? "1px solid #f0f0f0" : "none"
	}),
	tableRow: (e, t) => ({
		display: "flex",
		borderBottom: e < t - 1 ? "1px solid #f0f0f0" : "none"
	}),
	sep: {
		borderBottom: "1px solid #f0f0f0",
		margin: "16px 0"
	},
	section: { marginBottom: 16 },
	card: {
		border: "1px solid #f0f0f0",
		borderRadius: 8,
		padding: "12px 16px",
		marginBottom: 12
	},
	cardCode: {
		background: "#fafafa",
		padding: "8px 12px",
		borderRadius: 4
	},
	h4: {
		fontSize: 16,
		fontWeight: 600,
		marginBottom: 12,
		marginTop: 0
	},
	h5: {
		fontSize: 14,
		fontWeight: 600,
		marginBottom: 8,
		marginTop: 0
	},
	p: {
		margin: "0 0 8px",
		lineHeight: 1.6
	},
	secondary: { color: "#8c8c8c" }
}, Vd = {
	math: [
		[
			"SUM",
			"[q1], [q2], ...",
			"求和"
		],
		[
			"AVG",
			"[q1], [q2], ...",
			"平均值"
		],
		[
			"MAX",
			"[q1], [q2], [q3]",
			"最大值"
		],
		[
			"MIN",
			"[q1], [q2]",
			"最小值"
		],
		[
			"ABS",
			"[q1]",
			"绝对值"
		],
		[
			"ROUND",
			"[q1], 2",
			"四舍五入到指定位数"
		],
		[
			"MOD",
			"[q1], [q2]",
			"取模(余数)"
		],
		[
			"POWER",
			"[q1], [q2]",
			"幂运算(q1 的 q2 次方)"
		],
		[
			"SQRT",
			"[q1]",
			"平方根"
		]
	],
	logic: [
		[
			"AND",
			"[a], [b], ...",
			"逻辑与(全部为真返回 1)"
		],
		[
			"OR",
			"[a], [b], ...",
			"逻辑或(任一为真返回 1)"
		],
		[
			"NOT",
			"[a]",
			"逻辑非(取反)"
		],
		[
			"XOR",
			"[a], [b], ...",
			"异或(奇数个真返回 1)"
		]
	],
	string: [
		[
			"CONCAT",
			"[a], \" \", [b]",
			"字符串拼接"
		],
		[
			"LEN",
			"[q1]",
			"字符串长度"
		],
		[
			"UPPER",
			"[q1]",
			"转大写"
		],
		[
			"LOWER",
			"[q1]",
			"转小写"
		]
	],
	date: [
		[
			"TODAY",
			"",
			"返回今天的日期 (YYYY-MM-DD)"
		],
		[
			"NOW",
			"",
			"返回当前日期时间"
		],
		[
			"DATE",
			"2024, 1, 15",
			"构造日期"
		],
		[
			"YEAR",
			"[dateField]",
			"提取年份"
		],
		[
			"MONTH",
			"[dateField]",
			"提取月份 (1-12)"
		],
		[
			"DAY",
			"[dateField]",
			"提取日期 (1-31)"
		],
		[
			"DATEDIF",
			"[start], [end], \"Y\"",
			"日期差(Y/M/D)"
		]
	],
	other: [[
		"COUNT",
		"[q1], [q2], ...",
		"非空计数"
	], [
		"PERCENT",
		"[q1], [q2]",
		"百分比 (q1/q2*100)"
	]]
}, Hd = (e) => O("div", { style: $.table }, [O("div", { style: $.tableHeader }, [
	O("div", { style: {
		...$.tableCell(0, 3),
		fontWeight: 600,
		color: "#262626"
	} }, [D("函数名")]),
	O("div", { style: {
		...$.tableCell(1, 3),
		fontWeight: 600,
		color: "#262626"
	} }, [D("参数")]),
	O("div", { style: {
		...$.tableCell(2, 3),
		fontWeight: 600,
		color: "#262626"
	} }, [D("说明")])
]), e.map((t, n) => O("div", {
	key: n,
	style: $.tableRow(n, e.length)
}, [
	O("div", { style: {
		...$.tableCell(0, 3),
		color: "#595959",
		fontWeight: 600
	} }, [t[0]]),
	O("div", { style: {
		...$.tableCell(1, 3),
		color: "#cf1322"
	} }, [O("code", { style: $.code }, [t[1]])]),
	O("div", { style: {
		...$.tableCell(2, 3),
		color: "#595959"
	} }, [t[2]])
]))]), Ud = () => O("div", { style: {
	maxHeight: "60vh",
	overflowY: "auto"
} }, [
	O("div", { style: {
		background: "#e6f7ff",
		border: "1px solid #91d5ff",
		borderRadius: 6,
		padding: "12px 16px",
		marginBottom: 24
	} }, [
		O("strong", null, [D("快速开始:")]),
		D("使用方括号引用字段值,如 "),
		O("code", { style: $.code }, [D("[radio-1]")]),
		D("。支持基本运算和函数调用。")
	]),
	O("h4", { style: $.h4 }, [D("基础语法")]),
	O("div", { style: $.section }, [
		O("h5", { style: $.h5 }, [D("字段引用")]),
		O("p", { style: $.p }, [D("使用方括号引用其他字段的值:")]),
		O("div", { style: $.guideBg }, [
			O("code", { style: $.code }, [D("[fieldKey]")]),
			D(" "),
			O("span", { style: $.secondary }, [D("例如:")]),
			O("code", { style: $.code }, [D("[radio-1]")]),
			D(" "),
			O("code", { style: $.code }, [D("[input-1]")])
		])
	]),
	O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("算术运算")]), O("div", { style: $.guideBg }, [
		O("p", { style: $.p }, [O("code", { style: $.code }, [D("[q1] + [q2]")]), D(" — 加法")]),
		O("p", { style: $.p }, [O("code", { style: $.code }, [D("[q1] - [q2]")]), D(" — 减法")]),
		O("p", { style: $.p }, [O("code", { style: $.code }, [D("[q1] * [q2]")]), D(" — 乘法")]),
		O("p", { style: $.p }, [O("code", { style: $.code }, [D("[q1] / [q2]")]), D(" — 除法")]),
		O("p", { style: {
			...$.p,
			marginBottom: 0
		} }, [O("code", { style: $.code }, [D("[q1] % 100")]), D(" — 取模")])
	])]),
	O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("比较运算")]), O("div", { style: $.guideBg }, [
		O("p", { style: $.p }, [O("code", { style: $.code }, [D("==")]), D(" — 等于")]),
		O("p", { style: $.p }, [O("code", { style: $.code }, [D("!=")]), D(" — 不等于")]),
		O("p", { style: {
			...$.p,
			marginBottom: 0
		} }, [O("code", { style: $.code }, [D("> < >= <=")]), D(" — 大小比较")])
	])]),
	O("div", { style: $.sep }, null),
	O("h4", { style: $.h4 }, [D("函数")]),
	O("div", { style: $.section }, [
		O("h5", { style: $.h5 }, [D("条件判断")]),
		O("div", { style: $.guideBg }, [O("code", { style: $.code }, [D("IF([q1] == \"A\", [q2], 0)")])]),
		O("p", { style: {
			...$.p,
			...$.secondary
		} }, [D("如果 q1 等于 \"A\",返回 q2 的值,否则返回 0")])
	]),
	O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("数学函数")]), Hd(Vd.math)]),
	O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("逻辑函数")]), Hd(Vd.logic)]),
	O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("字符串函数")]), Hd(Vd.string)]),
	O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("日期函数")]), Hd(Vd.date)]),
	O("div", { style: $.section }, [O("h5", { style: $.h5 }, [D("其他函数")]), Hd(Vd.other)]),
	O("div", { style: $.sep }, null),
	O("h4", { style: $.h4 }, [D("常用示例")]),
	[
		["计算总分", "SUM([q1], [q2], [q3])"],
		["条件计分", "IF([radio-1] == \"A\", 10, 0)"],
		["百分比计算", "PERCENT([score], [total])"],
		["字符串拼接", "CONCAT([firstName], \" \", [lastName])"],
		["取模判断奇偶", "IF(MOD([num], 2) == 0, \"偶数\", \"奇数\")"],
		["多条件判断", "IF(AND([score] >= 60, [attendance] > 80), \"通过\", \"不通过\")"],
		["计算年龄", "DATEDIF([birthday], TODAY(), \"Y\")"]
	].map(([e, t], n) => O("div", {
		key: n,
		style: $.card
	}, [O("div", { style: {
		marginBottom: 8,
		fontWeight: 600
	} }, [e]), O("div", { style: $.cardCode }, [O("code", { style: $.code }, [t])])]))
]), Wd = /* @__PURE__ */ A({
	name: "FormulaEditor",
	props: {
		value: {
			type: String,
			default: ""
		},
		onChange: {
			type: Function,
			default: () => {}
		},
		availableFields: {
			type: Array,
			default: () => []
		},
		previewData: {
			type: Object,
			default: () => ({})
		},
		fieldKey: {
			type: String,
			default: ""
		}
	},
	setup(e) {
		let t = N(null), n = N(null), r = N(!1), i = N(null), a = (r) => {
			if (!r || !r.trim()) {
				n.value = null, t.value = null;
				return;
			}
			if (e.fieldKey && md(r, e.fieldKey)) {
				t.value = `公式不能引用自身字段 [${e.fieldKey}],这会导致循环计算`, n.value = null;
				return;
			}
			try {
				let i = hd(r, e.previewData);
				i && typeof i == "object" && i.error ? (t.value = i.error, n.value = null) : (n.value = i, t.value = null);
			} catch (e) {
				t.value = e.message || "公式语法错误", n.value = null;
			}
		}, o = (t) => {
			let n = t.target.value;
			e.onChange(n), a(n);
		}, s = (t) => {
			let n = i.value?.ref || i.value, r = e.value || "", o = `[${t}]`, s, c;
			if (n && typeof n.selectionStart == "number") {
				let e = n.selectionStart, t = n.selectionEnd, i = r.slice(0, e), a = r.slice(t), l = i.replace(/\s+$/, ""), u = l.slice(-1), d = l.length > 0 && u !== "(" && u !== "," && !"+-*/%><=!".includes(u), f = a.replace(/^\s+/, "").startsWith("["), p = (d ? "+" : "") + o + (f ? "+" : "");
				s = i + p + a, c = (i + p).length;
			} else {
				let e = r.replace(/\s+$/, ""), t = e.slice(-1);
				s = r + (e.length > 0 && t !== "(" && t !== "," && !"+-*/%><=!".includes(t) ? "+" : "") + o, c = s.length;
			}
			e.onChange(s), a(s), se(() => {
				n && (n.focus(), typeof n.setSelectionRange == "function" && n.setSelectionRange(c, c));
			});
		};
		return e.value && a(e.value), I(() => e.value, (e) => a(e)), () => {
			let a;
			return O("div", { class: "formula-editor" }, [
				O("div", { style: {
					display: "flex",
					justifyContent: "space-between",
					alignItems: "center",
					marginBottom: "8px"
				} }, [O("span", { style: { fontSize: "14px" } }, [D("计算公式")]), O(L, {
					type: "link",
					size: "small",
					onClick: () => {
						r.value = !0;
					}
				}, { default: () => [D("使用说明")] })]),
				O(Bd, {
					ref: i,
					value: e.value,
					onChange: o,
					placeholder: "如: SUM([q1], [q2]) 或点击下面字段自动拼接",
					rows: 4
				}, null),
				t.value && O("div", { style: {
					color: "#ff4d4f",
					marginTop: 4,
					fontSize: 13
				} }, [t.value]),
				n.value !== null && O("div", { style: {
					color: "#52c41a",
					marginTop: 4,
					fontSize: 13
				} }, [D("结果: "), String(n.value)]),
				e.availableFields.length > 0 && O("div", { style: { marginTop: "8px" } }, [O("span", { style: $.secondary }, [D("可用字段:")]), e.availableFields.map((e) => O(dt, {
					key: e.key,
					onClick: () => s(e.key),
					style: {
						cursor: "pointer",
						marginTop: 4
					}
				}, { default: () => [
					e.title,
					D(" ["),
					e.key,
					D("]")
				] }))]),
				r.value && O(Xe, {
					open: r.value,
					"onUpdate:open": (e) => r.value = e,
					title: "公式使用说明",
					width: 720
				}, zd(a = Ud()) ? a : { default: () => [a] })
			]);
		};
	}
}), Gd = In(/* @__PURE__ */ A({
	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: t }) {
		let n = N(null), r = N([]), i = N(!1), a = me({
			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: "",
			showLogicPanel: !1
		}), o = {}, s = (e) => {
			if (!(e in o)) {
				let t = 0;
				a.painterItems.forEach((n) => {
					if (n.type === e && n.key) {
						let r = e + "-(\\d+)$", i = n.key.match(new RegExp(r));
						i && (t = Math.max(t, parseInt(i[1])));
					}
				}), o[e] = t;
			}
			return o[e] += 1, e + "-" + o[e];
		}, c = () => {
			let t = [], n = { rules: [] };
			t = z(e.formItems) ? e.formItems() : xt(e.formItems), !Array.isArray(t) && t && t.fields && (n = t.logic || { rules: [] }, t = t.fields), Array.isArray(n.rules) && !i.value && (r.value = n.rules), a.painterItems = t.map((e) => ({
				key: e.key,
				type: e.type,
				name: e.title,
				props: e
			}));
		};
		I(() => e.formItems, () => c(), { deep: !0 }), c();
		let l = N(Md(e.mode).concat(e.widgets).map((e) => (Dt(e) && (e = { children: e }), e))), u = (e) => {
			let t = xt(e), n = t.type || "field";
			return t.key = s(n), t.props ||= {}, t.props.title = t.props.title || t.name, t.props.key = t.key, t.props.type = t.type, t.props.placeholder = " - ", t;
		}, d = (e) => {
			let t = u(e);
			a.painterItems.push(t), f(a.painterItems.length - 1);
		}, f = (t) => {
			a.currentItem = a.painterItems[t], a.currentIndex = t, a.propsFormData = Pd(a.painterItems[t], e.mode);
		}, p = ({ newIndex: e }) => {
			e === 0 && f(0);
		}, m = (e) => {
			a.painterItems[e].key === a.currentItem?.key && (a.currentItem = null, a.currentIndex = null), a.painterItems.splice(e, 1);
		}, h = (e) => {
			if (a.currentOptionItem = e, a.currentItem.type.startsWith("rate-")) {
				let t = "", n = "", r = a.currentItem?.props[e.key] || [];
				r.forEach((e, i) => {
					Mt(e) ? (t += e.value, n += e.rate ? String(e.rate) : "") : t += e, i < r.length - 1 && (t += "\n", n += "\n");
				}), a.optionsValue = t, a.rateValue = n, a.showValueOptionsModal = !0;
			} else a.optionsValue = a.currentItem?.props[e.key]?.join("\n"), a.showOptionsModal = !0;
		}, g = () => {
			if (!a.optionsValue.trim()) {
				R.warn("请至少设置一个选项");
				return;
			}
			if (!a.currentOptionItem) return;
			let t = a.optionsValue.split("\n").filter((e) => e.trim());
			if (e.mode === "quiz" && (t = t.map((e, t) => /^[A-Z]\.\s?/.test(e) ? e : `${String.fromCharCode(65 + t)}. ${e}`)), !kt(t, Bt(t))) {
				R.warn("选项有重复,请检查数据");
				return;
			}
			a.currentItem.props || (a.currentItem.props = {}), a.currentItem.props[a.currentOptionItem.key] = t, a.showOptionsModal = !1;
		}, _ = () => {
			if (!a.optionsValue.trim()) {
				R.warn("请至少设置一个选项");
				return;
			}
			if (!a.currentOptionItem) return;
			let e = a.optionsValue.split("\n").filter((e) => e.trim()), t = a.rateValue.split("\n");
			if (!kt(e, Bt(e))) {
				R.warn("选项有重复,请检查数据");
				return;
			}
			a.currentItem.props || (a.currentItem.props = {}), a.currentItem.props[a.currentOptionItem.key] = e.map((e, n) => ({
				label: e,
				value: e,
				rate: t[n] ? String(t[n]).trim() : 0
			})), a.showOptionsModal = !1, a.showValueOptionsModal = !1;
		}, v = (e) => {
			let { key: t } = e;
			t === "increase" ? a.rateValue = a.optionsValue.split("\n").map((e, t) => t + 1).join("\n") : a.rateValue = a.rateValue.split("\n").map((e) => !isNaN(e) && !isNaN(parseFloat(e)) ? t === "add1" ? Number(e) + 1 : Number(e) - 1 : e).join("\n");
		}, y = () => {
			Xe.confirm({
				title: "清空表单",
				content: "清空表单后,所有数据将被清空,是否继续?",
				onOk: () => {
					a.painterItems = [], a.submitForm = {};
				}
			});
		}, b = () => {
			t("submit", {
				fields: a.painterItems?.length ? a.painterItems.map((e) => e.props) : [],
				logic: { rules: r.value }
			});
		}, x = E(() => n.value?.getForm());
		return I(() => x.value, (t) => {
			Fd(t, a.currentItem, e.mode);
		}, { deep: !0 }), () => O("div", {
			class: "newbie-form-designer",
			style: { height: or(e.height) }
		}, [
			O("div", { class: "newbie-form-designer__widget-container" }, [O("div", { class: "widget-container" }, [l.value.map((e) => O("div", { class: "widget-list-container" }, [O("div", { class: "widget-list-title" }, [e.title || "默认"]), O(Gs, {
				tag: "div",
				list: e.children,
				sort: !1,
				group: {
					name: "designer",
					pull: "clone",
					put: !1
				},
				clone: u,
				handle: ".drag-handle",
				class: "widget-list",
				itemKey: "name"
			}, { item: ({ element: e }) => O(L, {
				class: "widget-item drag-handle",
				onClick: () => d(e)
			}, { default: () => [e.icon ? O("span", {
				role: "img",
				class: "widget-icon"
			}, [z(e.icon) ? e.icon() : e.icon]) : null, O("span", { class: "widget-name" }, [e.name])] }) })]))])]),
			O("div", { class: "newbie-form-designer__painter-container" }, [O("div", { class: "newbie-form-designer__painter-scroll" }, [O(ze, {
				labelCol: { span: 24 },
				wrapperCol: { span: 24 },
				model: a.submitForm,
				labelAlign: "left",
				class: "newbie-form"
			}, { default: () => [
				e.title ? O("div", { class: "painter-title" }, [e.title]) : null,
				a.painterItems.length ? null : O("div", { class: "newbie-form-designer__help-wrapper" }, [O("p", null, [O(On, { style: { marginRight: "4px" } }, null), D("请点击或者拖拽左侧组件至下面区域生成表单")])]),
				O(T, null, { default: () => [O(Gs, M({
					list: a.painterItems,
					class: "painter-wrapper",
					handle: ".painter-item",
					itemKey: "key",
					key: "key"
				}, a.dragOptions, {
					onStart: () => a.isDragging = !0,
					onEnd: () => a.isDragging = !1,
					onAdd: p
				}), { item: ({ element: e, index: t }) => {
					let n = String(t + 1).padStart(2, "0") + ".";
					return O("div", {
						class: `painter-item ${a.currentItem?.key === e.key ? "active" : ""}`,
						key: e.key,
						onClick: () => f(t)
					}, [
						O("div", { class: "drag-handle" }, [O(nn, null, null)]),
						O("div", { class: "op-container" }, [O("div", {
							class: "op-item",
							onClick: Ce(() => m(t), ["stop"])
						}, [O(ht, { title: "删除" }, { default: () => [O($t, null, null)] })])]),
						e.props.break ? O(Pe, null, { default: () => "分页栏" }) : null,
						_d({
							formItemSlots: { label: () => O("div", { class: "item-label" }, [O("span", { class: "item-index" }, [n]), O("span", { class: "item-name" }, [
								O("span", { class: "item-key" }, [
									D("["),
									e.props.key,
									D("]")
								]),
								e.props.title,
								e.type === "computed" ? O(ht, { title: "计算字段不会展示给填写用户,仅根据表单数据自动计算,可用于统计等用途" }, { default: () => [O("span", { class: "item-computed-badge" }, [O(Ht, { style: { marginRight: 4 } }, null), D("计算字段")])] }) : null
							])]) },
							...e.props
						}, a.submitForm, { props: {} })
					]);
				} })] })
			] })]), O("div", { class: "newbie-form-designer__painter-toolbar" }, [O(ht, { title: "清空表单" }, { default: () => [O(L, {
				type: "default",
				danger: !0,
				icon: O($t, null, null),
				onClick: y
			}, { default: () => [D("清空表单")] })] }), O(at, { span: 8 }, { default: () => [O(Ee, {
				count: r.value.length,
				offset: [-4, 0]
			}, { default: () => [O(L, {
				type: "default",
				icon: O(fn, null, null),
				onClick: () => {
					a.showLogicPanel = !0;
				}
			}, { default: () => [D("表单逻辑")] })] }), O(L, {
				type: "primary",
				icon: O(wn, null, null),
				onClick: b
			}, { default: () => [D("保存表单")] })] })])]),
			O("div", { class: "newbie-form-designer__props-container" }, [a.currentItem ? [
				O("div", { class: "widget-name" }, [a.currentItem.icon ? O("span", {
					role: "img",
					class: "widget-icon"
				}, [z(a.currentItem.icon) ? a.currentItem.icon() : a.currentItem.icon]) : null, a.currentItem.name]),
				O(wd, {
					ref: n,
					form: () => Nd(a.currentItem, e.mode),
					cardWrapper: !1,
					closable: !1,
					data: a.propsFormData
				}, {
					options: ({ item: e }) => O(Be, { label: e.title }, { default: () => O(L, {
						type: "primary",
						onClick: () => h(e)
					}, { default: () => "设置选项" }) }),
					rows: ({ item: e }) => O(Be, { label: e.title }, { default: () => O(L, {
						type: "primary",
						onClick: () => h(e)
					}, { default: () => "设置行标题" }) })
				}),
				a.currentItem.type === "computed" ? O("div", { style: { padding: "0 16px 16px" } }, [O(Wd, {
					value: a.currentItem.props.formula,
					onChange: (e) => {
						a.currentItem.props.formula = e;
					},
					availableFields: a.painterItems.filter((e) => e.type !== "computed" && e.props.key !== a.currentItem.props.key).map((e) => ({
						key: e.props.key,
						title: e.props.title
					})),
					previewData: a.submitForm,
					fieldKey: a.currentItem.props.key
				}, null)]) : null
			] : O("div", { class: "empty-props" }, [O(Le, { description: "未选中内容" }, null)])]),
			O(Xe, {
				open: a.showOptionsModal,
				"onUpdate:open": (e) => a.showOptionsModal = e,
				title: "选项设置",
				onOk: g
			}, { default: () => [O(Te, {
				message: e.mode === "quiz" ? "每行一个选项,选项不能重复,选项序号A, B, C, D...会自动添加" : "每行一个选项,选项不能重复",
				style: { marginBottom: "10px" }
			}, null), O(ft, {
				value: a.optionsValue,
				"onUpdate:value": (e) => a.optionsValue = e,
				placeholder: "每行一个选项,如:\n选项一\n选项二",
				"auto-size": {
					minRows: 14,
					maxRows: 14
				}
			}, null)] }),
			O(Xe, {
				open: a.showValueOptionsModal,
				"onUpdate:open": (e) => a.showValueOptionsModal = e,
				title: "选项设置",
				onOk: _
			}, { default: () => [O(Te, {
				message: "每行一个选项,且选项不能重复",
				style: { marginBottom: "10px" }
			}, null), O(nt, { gutter: 8 }, { default: () => [O(Me, { span: 14 }, { default: () => [O("div", null, [D("选项")]), O(ft, {
				value: a.optionsValue,
				"onUpdate:value": (e) => a.optionsValue = e,
				placeholder: "每行一个选项,如:\n选项一\n选项二",
				"auto-size": {
					minRows: 14,
					maxRows: 14
				}
			}, null)] }), O(Me, { span: 10 }, { default: () => [O(Ie, null, {
				default: () => O("div", null, [O("a", { class: "ant-dropdown-link" }, [D("分值(不填代表0分)"), O(en, { style: {
					marginLeft: "4px",
					fontSize: "12px"
				} }, null)])]),
				overlay: () => O(Je, { onClick: v }, { default: () => [
					O(Ye, { key: "increase" }, { default: () => "分数从 1 开始顺序递增" }),
					O(Ye, { key: "add1" }, { default: () => "选项分数全部加 1" }),
					O(Ye, { key: "minus1" }, { default: () => "选项分数全部减 1" })
				] })
			}), O(ft, {
				value: a.rateValue,
				"onUpdate:value": (e) => a.rateValue = e,
				placeholder: "每行一个对应分值,如:\n1\n2",
				"auto-size": {
					minRows: 14,
					maxRows: 14
				}
			}, null)] })] })] }),
			O(Rd, {
				rules: r.value,
				onChange: (e) => {
					r.value = e, i.value = !0;
				},
				availableFields: a.painterItems.map((e) => ({
					key: e.key,
					title: e.props.title || e.name,
					type: e.type,
					props: e.props
				})),
				open: a.showLogicPanel,
				onClose: () => {
					a.showLogicPanel = !1;
				}
			}, null)
		]);
	}
})), Kd = In(/* @__PURE__ */ A({
	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: t } = Si({ legacy: !0 }), n = async () => {
			e.copy ? await e.copy(e.text) : (await t(e.text), R.success(m.global.t("table.copy-success")));
		}, r = () => e.customRender ? O("span", { class: "newbie-copy-text" }, [e.customRender(e.text)]) : O("span", { class: "newbie-copy-text" }, [e.text]);
		return () => O("span", {
			class: "newbie-copy",
			onClick: n
		}, [r(), O("span", { class: `newbie-copy-icon ${e.showIcon ? "always-show" : ""}` }, [O(Qt, null, null)])]);
	}
})), qd = class {
	x;
	y;
	pressure;
	time;
	constructor(e, t, n, r) {
		if (isNaN(e) || isNaN(t)) throw Error(`Point is invalid: (${e}, ${t})`);
		this.x = +e, this.y = +t, this.pressure = n || 0, this.time = r || 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);
	}
}, Jd = class e {
	constructor(e, t, n, r, i, a) {
		this.startPoint = e, this.control2 = t, this.control1 = n, this.endPoint = r, this.startWidth = i, this.endWidth = a;
	}
	static fromPoints(t, n) {
		let r = this.calculateControlPoints(t[0], t[1], t[2]).c2, i = this.calculateControlPoints(t[1], t[2], t[3]).c1;
		return new e(t[1], r, i, t[2], n.start, n.end);
	}
	static calculateControlPoints(e, t, n) {
		let r = e.x - t.x, i = e.y - t.y, a = t.x - n.x, o = t.y - n.y, s = {
			x: (e.x + t.x) / 2,
			y: (e.y + t.y) / 2
		}, c = {
			x: (t.x + n.x) / 2,
			y: (t.y + n.y) / 2
		}, l = Math.sqrt(r * r + i * i), u = Math.sqrt(a * a + o * o), d = s.x - c.x, f = s.y - c.y, p = l + u == 0 ? 0 : u / (l + u), m = {
			x: c.x + d * p,
			y: c.y + f * p
		}, h = t.x - m.x, g = t.y - m.y;
		return {
			c1: new qd(s.x + h, s.y + g),
			c2: new qd(c.x + h, c.y + g)
		};
	}
	length() {
		let e = 0, t, n;
		for (let r = 0; r <= 10; r += 1) {
			let i = r / 10, a = this.point(i, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x), o = this.point(i, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);
			if (r > 0) {
				let r = a - t, i = o - n;
				e += Math.sqrt(r * r + i * i);
			}
			t = a, n = o;
		}
		return e;
	}
	point(e, t, n, r, i) {
		return t * (1 - e) * (1 - e) * (1 - e) + 3 * n * (1 - e) * (1 - e) * e + 3 * r * (1 - e) * e * e + i * e * e * e;
	}
}, Yd = class {
	_et;
	constructor() {
		try {
			this._et = new EventTarget();
		} catch {
			this._et = document;
		}
	}
	addEventListener(e, t, n) {
		this._et.addEventListener(e, t, n);
	}
	dispatchEvent(e) {
		return this._et.dispatchEvent(e);
	}
	removeEventListener(e, t, n) {
		this._et.removeEventListener(e, t, n);
	}
};
function Xd(e, t = 250) {
	let n = 0, r = null, i, a, o, s = () => {
		n = Date.now(), r = null, i = e.apply(a, o), r || (a = null, o = []);
	};
	return function(...c) {
		let l = Date.now(), u = t - (l - n);
		return a = this, o = c, u <= 0 || u > t ? (r &&= (clearTimeout(r), null), n = l, i = e.apply(a, o), r || (a = null, o = [])) : r ||= window.setTimeout(s, u), i;
	};
}
var Zd = class e extends Yd {
	constructor(t, n = {}) {
		super(), this.canvas = t, this.velocityFilterWeight = n.velocityFilterWeight || .7, this.minWidth = n.minWidth || .5, this.maxWidth = n.maxWidth || 2.5, this.throttle = n.throttle ?? 16, this.minDistance = n.minDistance ?? 5, this.dotSize = n.dotSize || 0, this.penColor = n.penColor || "black", this.backgroundColor = n.backgroundColor || "rgba(0,0,0,0)", this.compositeOperation = n.compositeOperation || "source-over", this.canvasContextOptions = n.canvasContextOptions ?? {}, this._strokeMoveUpdate = this.throttle ? Xd(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 = t.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: t } = this;
		e.fillStyle = this.backgroundColor, e.clearRect(0, 0, t.width, t.height), e.fillRect(0, 0, t.width, t.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, t = this._dataUrl, n = this._dataUrlOptions;
		this.clear(), t && this.fromDataURL(t, n), this.fromData(e, { clear: !1 });
	}
	fromDataURL(e, t = {}) {
		return new Promise((n, r) => {
			let i = new Image(), a = t.ratio || window.devicePixelRatio || 1, o = t.width || this.canvas.width / a, s = t.height || this.canvas.height / a, c = t.xOffset || 0, l = t.yOffset || 0;
			this._reset(this._getPointGroupOptions()), i.onload = () => {
				this._ctx.drawImage(i, c, l, o, s), n();
			}, i.onerror = (e) => {
				r(e);
			}, i.crossOrigin = "anonymous", i.src = e, this._isEmpty = !1, this._dataUrl = e, this._dataUrlOptions = { ...t };
		});
	}
	toDataURL(e = "image/png", t) {
		switch (e) {
			case "image/svg+xml": return typeof t != "object" && (t = void 0), `data:image/svg+xml;base64,${btoa(this.toSVG(t))}`;
			default: return typeof t != "number" && (t = void 0), this.canvas.toDataURL(e, t);
		}
	}
	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: t = !0 } = {}) {
		t && 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, t) {
		return t ? 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 t = e.changedTouches[0];
		return {
			event: e,
			type: e.type,
			x: t.clientX,
			y: t.clientY,
			pressure: t.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, t = !1) {
		return this._strokePointerId === void 0 ? t : 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: t } = this._getListenerFunctions();
		switch (e.event.type) {
			case "mousedown":
				t("mousemove", this._handleMouseMove, { passive: !1 }), t("mouseup", this._handleMouseUp, { passive: !1 });
				break;
			case "touchstart":
				t("touchmove", this._handleTouchMove, { passive: !1 }), t("touchend", this._handleTouchEnd, { passive: !1 }), t("touchcancel", this._handleTouchCancel, { passive: !1 });
				break;
			case "pointerdown":
				t("pointermove", this._handlePointerMove, { passive: !1 }), t("pointerup", this._handlePointerUp, { passive: !1 }), t("pointercancel", this._handlePointerCancel, { passive: !1 });
				break;
			default:
		}
		this._drawingStroke = !0;
		let n = this._getPointGroupOptions(), r = {
			...n,
			points: []
		};
		this._data.push(r), this._reset(n), 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 t = this._createPoint(e.x, e.y, e.pressure), n = this._data[this._data.length - 1], r = n.points, i = r.length > 0 && r[r.length - 1], a = i ? t.distanceTo(i) <= this.minDistance : !1, o = this._getPointGroupOptions(n);
		if (!i || !(i && a)) {
			let e = this._addPoint(t, o);
			i ? e && this._drawCurve(e, o) : this._drawDot(t, o), r.push({
				time: t.time,
				x: t.x,
				y: t.y,
				pressure: t.pressure
			});
		}
		this.dispatchEvent(new CustomEvent("afterUpdateStroke", { detail: e }));
	}
	_strokeEnd(e, t = !0) {
		this._removeMoveUpEventListeners(), this._drawingStroke && (t && 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, t, n) {
		let r = this.canvas.getBoundingClientRect();
		return new qd(e - r.left, t - r.top, n, (/* @__PURE__ */ new Date()).getTime());
	}
	_addPoint(e, t) {
		let { _lastPoints: n } = this;
		if (n.push(e), n.length > 2) {
			n.length === 3 && n.unshift(n[0]);
			let e = this._calculateCurveWidths(n[1], n[2], t), r = Jd.fromPoints(n, e);
			return n.shift(), r;
		}
		return null;
	}
	_calculateCurveWidths(e, t, n) {
		let r = n.velocityFilterWeight * t.velocityFrom(e) + (1 - n.velocityFilterWeight) * this._lastVelocity, i = this._strokeWidth(r, n), a = {
			end: i,
			start: this._lastWidth
		};
		return this._lastVelocity = r, this._lastWidth = i, a;
	}
	_strokeWidth(e, t) {
		return Math.max(t.maxWidth / (e + 1), t.minWidth);
	}
	_drawCurveSegment(e, t, n) {
		let r = this._ctx;
		r.moveTo(e, t), r.arc(e, t, n, 0, 2 * Math.PI, !1), this._isEmpty = !1;
	}
	_drawCurve(e, t) {
		let n = this._ctx, r = e.endWidth - e.startWidth, i = Math.ceil(e.length()) * 2;
		n.beginPath(), n.fillStyle = t.penColor;
		for (let n = 0; n < i; n += 1) {
			let a = n / i, o = a * a, s = o * a, c = 1 - a, l = c * c, u = l * c, d = u * e.startPoint.x;
			d += 3 * l * a * e.control1.x, d += 3 * c * o * e.control2.x, d += s * e.endPoint.x;
			let f = u * e.startPoint.y;
			f += 3 * l * a * e.control1.y, f += 3 * c * o * e.control2.y, f += s * e.endPoint.y;
			let p = Math.min(e.startWidth + s * r, t.maxWidth);
			this._drawCurveSegment(d, f, p);
		}
		n.closePath(), n.fill();
	}
	_drawDot(e, t) {
		let n = this._ctx, r = t.dotSize > 0 ? t.dotSize : (t.minWidth + t.maxWidth) / 2;
		n.beginPath(), this._drawCurveSegment(e.x, e.y, r), n.closePath(), n.fillStyle = t.penColor, n.fill();
	}
	_fromData(e, t, n) {
		for (let r of e) {
			let { points: e } = r, i = this._getPointGroupOptions(r);
			if (e.length > 1) for (let n = 0; n < e.length; n += 1) {
				let r = e[n], a = new qd(r.x, r.y, r.pressure, r.time);
				n === 0 && this._reset(i);
				let o = this._addPoint(a, i);
				o && t(o, i);
			}
			else this._reset(i), n(e[0], i);
		}
	}
	toSVG({ includeBackgroundColor: e = !1, includeDataUrl: t = !1 } = {}) {
		let n = this._data, r = Math.max(window.devicePixelRatio || 1, 1), i = this.canvas.width / r, a = this.canvas.height / r, o = document.createElementNS("http://www.w3.org/2000/svg", "svg");
		if (o.setAttribute("xmlns", "http://www.w3.org/2000/svg"), o.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"), o.setAttribute("viewBox", `0 0 ${i} ${a}`), o.setAttribute("width", i.toString()), o.setAttribute("height", a.toString()), e && this.backgroundColor) {
			let e = document.createElement("rect");
			e.setAttribute("width", "100%"), e.setAttribute("height", "100%"), e.setAttribute("fill", this.backgroundColor), o.appendChild(e);
		}
		if (t && this._dataUrl) {
			let e = this._dataUrlOptions?.ratio || window.devicePixelRatio || 1, t = this._dataUrlOptions?.width || this.canvas.width / e, n = this._dataUrlOptions?.height || this.canvas.height / e, r = this._dataUrlOptions?.xOffset || 0, i = this._dataUrlOptions?.yOffset || 0, a = document.createElement("image");
			a.setAttribute("x", r.toString()), a.setAttribute("y", i.toString()), a.setAttribute("width", t.toString()), a.setAttribute("height", n.toString()), a.setAttribute("preserveAspectRatio", "none"), a.setAttribute("href", this._dataUrl), o.appendChild(a);
		}
		return this._fromData(n, (e, { penColor: t }) => {
			let n = document.createElement("path");
			if (!isNaN(e.control1.x) && !isNaN(e.control1.y) && !isNaN(e.control2.x) && !isNaN(e.control2.y)) {
				let r = `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)}`;
				n.setAttribute("d", r), n.setAttribute("stroke-width", (e.endWidth * 2.25).toFixed(3)), n.setAttribute("stroke", t), n.setAttribute("fill", "none"), n.setAttribute("stroke-linecap", "round"), o.appendChild(n);
			}
		}, (e, { penColor: t, dotSize: n, minWidth: r, maxWidth: i }) => {
			let a = document.createElement("circle"), s = n > 0 ? n : (r + i) / 2;
			a.setAttribute("r", s.toString()), a.setAttribute("cx", e.x.toString()), a.setAttribute("cy", e.y.toString()), a.setAttribute("fill", t), o.appendChild(a);
		}), o.outerHTML;
	}
};
//#endregion
//#region components/signature-pad/NewbieSignaturePad.jsx
function Qd(e) {
	return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !oe(e);
}
//#endregion
//#region components/signature-pad/index.js
var $d = In(/* @__PURE__ */ A({
	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: t, expose: n, slots: r }) {
		let { t: i } = l(), a = N(!1), o = N(null), s = N(null), c = N(null), u = N(!1), d = () => {
			a.value = !0;
		}, f = () => {
			c.value.width = s.value.offsetWidth, o.value?.fromData(o.value?.toData());
		};
		window.onresize = f;
		let p = () => {
			c.value && (f(), o.value = new Zd(c.value), e.preset && o.value.fromDataURL(e.preset), e.readonly && o.value.off());
		}, m = () => {
			o.value && o.value.clear();
		}, h = () => {
			if (!(!o.value || o.value.isEmpty())) {
				if (e.agreement && !u.value) {
					R.warn(i("signature-pad.agreement"));
					return;
				}
				t("save", o.value.toDataURL()), a.value = !1;
			}
		}, g = () => {
			a.value = !1;
		};
		return I(a, (e) => {
			e && setTimeout(p, 100);
		}), n({ open: d }), () => {
			let t, n, o;
			return O(Xe, {
				open: a.value,
				"onUpdate:open": (e) => a.value = e,
				footer: null,
				width: 600
			}, { default: () => [O("div", { class: "newbie-signature-pad" }, [
				r.title || e.title ? O("div", { class: "newbie-signature-pad__title" }, [r.title?.() || e.title]) : null,
				O("div", {
					class: "newbie-signature-pad__canvas-container",
					ref: s
				}, [O("canvas", {
					class: "newbie-signature-pad__canvas",
					ref: c
				}, null)]),
				e.agreement && !e.readonly && O("div", { class: "newbie-signature-pad__agreement" }, [O(Ae, {
					checked: u.value,
					"onUpdate:checked": (e) => u.value = e
				}, { default: () => [e.agreement] })]),
				e.readonly ? O("div", { class: "newbie-signature-pad__actions" }, [O(zn, {
					type: "default",
					onClick: g
				}, Qd(t = i("common.close")) ? t : { default: () => [t] })]) : O("div", { class: "newbie-signature-pad__actions" }, [O(zn, {
					type: "default",
					onClick: m,
					style: { marginRight: "4px" }
				}, Qd(n = i("common.clear")) ? n : { default: () => [n] }), O(zn, {
					type: "primary",
					onClick: h
				}, Qd(o = i("common.save")) ? o : { default: () => [o] })])
			])] });
		};
	}
})), ef = /* @__PURE__ */ a({
	NewbieAddress: () => Rn,
	NewbieButton: () => Bn,
	NewbieCopy: () => Kd,
	NewbieEditor: () => ar,
	NewbieForm: () => Td,
	NewbieFormDesigner: () => Gd,
	NewbieList: () => Ed,
	NewbieModal: () => Dd,
	NewbiePassword: () => Od,
	NewbieProvider: () => kd,
	NewbieSearch: () => Ad,
	NewbieSignaturePad: () => $d,
	NewbieTable: () => Uu,
	NewbieUploader: () => jd,
	useAddressFullCode: () => Ln,
	useTableActions: () => Bu,
	useTableFile: () => Hu,
	useTableImage: () => Vu
}), tf = {
	install(e) {
		e.use(m);
		for (let t in ef) {
			let n = ef[t];
			e.use(n);
		}
	},
	config({ httpStatus: e }) {
		e && Object.keys(e).length && c(e);
	}
};
//#endregion
export { Rn as NewbieAddress, Bn as NewbieButton, Kd as NewbieCopy, ar as NewbieEditor, Td as NewbieForm, Gd as NewbieFormDesigner, Ed as NewbieList, Dd as NewbieModal, Od as NewbiePassword, kd as NewbieProvider, Ad as NewbieSearch, $d as NewbieSignaturePad, Uu as NewbieTable, jd as NewbieUploader, tf as default, Ln as useAddressFullCode, Bu as useTableActions, Hu as useTableFile, Vu as useTableImage };

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