diff --git a/src/api/audit/index.ts b/src/api/audit/index.ts index d09bd14b..70ffb316 100644 --- a/src/api/audit/index.ts +++ b/src/api/audit/index.ts @@ -30,7 +30,10 @@ enum Api { // 判读-导出shp文件 ExportapprovalCaseInfoShapefile = 'ExportapprovalCaseInfoShapefile', // 查询是否有复提条件 - IsReSubmit = '/api/DroneCaseInfoSingle/IsReSubmit' + IsReSubmit = '/api/DroneCaseInfoSingle/IsReSubmit', + LoadCaseInfoCXJG = '/api/DroneCaseInfoTask/LoadCaseInfoCXJG', + ImportCaseInfoCXJGShpData = '/api/DroneCaseInfoTask/ImportCaseInfoCXJGShpData', + DeleteCaseInfoCXJG = '/api/DroneCaseInfoTask/DeleteCaseInfoCXJG', } const typeObj = { @@ -149,9 +152,32 @@ export function ExportapprovalCaseInfoShapefile(type, params?){ responseType: 'blob', }) } + + export function IsReSubmit(params: { originalcaseno: string, subjectkey: string }){ return defHttp.get({ url: Api.IsReSubmit, params }) -} \ No newline at end of file +} + +export function loadCaseInfoCXJG(params: any){ + return defHttp.get({ + url: Api.LoadCaseInfoCXJG, + params + }) +} + + +export function importCaseInfoCXJGShpData(params: {zipFilePath: string, srid: string}){ + return defHttp.post({ + url: `${Api.ImportCaseInfoCXJGShpData}?zipFilePath=${params.zipFilePath}&srid=${params.srid}`, + data: params, + }) +} + +export function deleteCaseInfoCXJG (id: string) { + return defHttp.post({ + url: Api.DeleteCaseInfoCXJG+'?id='+id, + }) +} diff --git a/src/api/tiankongdi/index.ts b/src/api/tiankongdi/index.ts index 66b13c63..c011309e 100644 --- a/src/api/tiankongdi/index.ts +++ b/src/api/tiankongdi/index.ts @@ -50,24 +50,27 @@ enum Api { // 获取用户访问机构权限 GetUserOrgs = '/api/Check/GetOrgs', // 大屏下发线索统计 - IssuedStatitical = "/api/DroneScreenDisplay/CaseOffenceXiaFa", + IssuedStatitical = '/api/DroneScreenDisplay/CaseOffenceXiaFa', // 大屏核实新增统计 - VerifyStatitical = "/api/DroneScreenDisplay/CaseOffenceCheckAdd", + VerifyStatitical = '/api/DroneScreenDisplay/CaseOffenceCheckAdd', // 大屏整改剩余统计 - RectificationStatitical = "/api/DroneScreenDisplay/CaseOffenceModifyRemain", + RectificationStatitical = '/api/DroneScreenDisplay/CaseOffenceModifyRemain', // 获取案件图片坐标、方位角信息 - LoadCaseImgList = "/api/DroneCaseInfoSingle/LoadCaseImgList", + LoadCaseImgList = '/api/DroneCaseInfoSingle/LoadCaseImgList', // 获取范围内影像服务信息 - GetIntersects = "/api/GeoTiffManager/GetIntersects", + GetIntersects = '/api/GeoTiffManager/GetIntersects', // 获取网络环境 - GetNetWorkEev = "/api/DroneCloudQuery/IsPublic", + GetNetWorkEev = '/api/DroneCloudQuery/IsPublic', // 获取其他专题或历史线索图片 - rebackzhuantipic = "/api/DroneCaseInfoSingle/rebackzhuantipic", - CopyImg = "/api/DroneCaseInfoSingle/CopyImg", + rebackzhuantipic = '/api/DroneCaseInfoSingle/rebackzhuantipic', + CopyImg = '/api/DroneCaseInfoSingle/CopyImg', // 获取其他专题或历史线索附件 - rebackzhuantifujian = "/api/DroneCaseInfoSingle/rebackzhuantifujian", - Copyfujian = "/api/DroneCaseInfoSingle/Copyfujian", - DroneCasePushToSdt="/api/DroneCaseInfoSingle/DroneCasePushToSdt", + rebackzhuantifujian = '/api/DroneCaseInfoSingle/rebackzhuantifujian', + Copyfujian = '/api/DroneCaseInfoSingle/Copyfujian', + DroneCasePushToSdt = '/api/DroneCaseInfoSingle/DroneCasePushToSdt', + // 查询图斑相交案件信息 + GetHistoryCase = '/api/DroneCaseInfoSingle/GetHistoryCase', + GetHistoryCaseByCaseId = '/api/DroneCaseInfoSingle/GetHistoryCaseByCaseId', } /** @@ -135,23 +138,22 @@ export function getLoadTaskIllegalDetailList(params?: taskInfoParams) { return defHttp.get({ url: Api.LoadTaskIllegalDetailList, params }); } -export function splitCase(params){ +export function splitCase(params) { return defHttp.post({ url: Api.SplitCase, data: params }); } -export function recoverCase(params){ +export function recoverCase(params) { return defHttp.post({ url: Api.RecoverCase, data: params }); } -export function getPolygonCenter(params){ +export function getPolygonCenter(params) { return defHttp.get({ url: Api.GetPolygonCenter, params }); } -export function getUserOrgs(params){ +export function getUserOrgs(params) { return defHttp.get({ url: Api.GetUserOrgs, params }); } - export function getIssuedStatitical(params) { return defHttp.get({ url: Api.IssuedStatitical, @@ -173,49 +175,62 @@ export function getRectificationStatitical(params) { }); } -export function getLoadCaseImgList(params){ +export function getLoadCaseImgList(params) { return defHttp.get({ url: Api.LoadCaseImgList, params, }); } - -export function getIntersectTif(params){ +export function getIntersectTif(params) { return defHttp.get({ url: Api.GetIntersects, params }); } -export function getNetworkType(){ - return defHttp.get({ url: Api.GetNetWorkEev }); +export function getNetworkType() { + return defHttp.get({ url: Api.GetNetWorkEev }); } -export function rebackzhuantipic(params:{ zhuanti, CaseId }){ - return defHttp.get({ +export function rebackzhuantipic(params: { zhuanti; CaseId }) { + return defHttp.get({ url: Api.rebackzhuantipic, - params - }); + params, + }); } -export function CopyImg(params: { caseid, images}){ - return defHttp.post({ +export function CopyImg(params: { caseid; images }) { + return defHttp.post({ url: Api.CopyImg, - data:params, - }); + data: params, + }); } -export function rebackzhuantifujian(params:{ zhuanti, CaseId }){ - return defHttp.get({ +export function rebackzhuantifujian(params: { zhuanti; CaseId }) { + return defHttp.get({ url: Api.rebackzhuantifujian, - params - }); + params, + }); } -export function Copyfujian(params:string[]){ - return defHttp.post({ +export function Copyfujian(params: string[]) { + return defHttp.post({ url: Api.Copyfujian, - data:params, - }); + data: params, + }); } -export function droneCasePushToSdt(params:any ){ - return defHttp.get({ +export function droneCasePushToSdt(params: any) { + return defHttp.get({ url: Api.DroneCasePushToSdt, - params - }); -} \ No newline at end of file + params, + }); +} + +export function getHistoryCase(params: string[]) { + return defHttp.post({ + url: Api.GetHistoryCase, + data: params, + }); +} + +export function getHistoryCaseByCaseId(params: string[]) { + return defHttp.post({ + url: Api.GetHistoryCaseByCaseId + '?caseid=' + params.caseid, + data: params, + }); +} diff --git a/src/components/Audit/InfoModal/index.vue b/src/components/Audit/InfoModal/index.vue index 84b77bb8..d75dd3f3 100644 --- a/src/components/Audit/InfoModal/index.vue +++ b/src/components/Audit/InfoModal/index.vue @@ -244,7 +244,7 @@ -
+
关闭人:
@@ -297,8 +297,28 @@
-
- +
+
+ +
+
+ + + +
+ + + diff --git a/src/views/demo/tiankongdi/curbspotcity/MapList/index.vue b/src/views/demo/tiankongdi/curbspotcity/MapList/index.vue index 7589848f..53743f5f 100644 --- a/src/views/demo/tiankongdi/curbspotcity/MapList/index.vue +++ b/src/views/demo/tiankongdi/curbspotcity/MapList/index.vue @@ -265,13 +265,18 @@
上一条 下一条 + 往期线索
+ + +
@@ -311,6 +330,10 @@ import { getDetail } from '@/api/sys/WFSchemeInfo'; import { Audit } from '@/views/demo/workflow/task/process/page'; import { dataProcessing, tubanlaiyuanOptions } from '@/views/demo/tiankongdi/util.ts' import {showDrawBack, drawBackSpan} from '@/views/demo/util' + + import HistoryListModel from '@/views/demo/tiankongdi/curbspotcity/MapList/HistoryListModel/index.vue'; + + const userStore = useUserStore() const flowWfDataStore = flowStore(); const emits = defineEmits([ @@ -335,6 +358,7 @@ const props = defineProps([ "total", "infoDataList" ]) +console.log(props) const order = ref(0) // 0: 不排序 1: 升序 2: 降序 const landType = ref(0) const orderMark = () => { @@ -379,6 +403,14 @@ const showInfoData = ref() const streetsAreaOptions = ref([ { label: '全部', value: '' }, ]) +// 往期线索展示 +const historyVisible = ref(false) +const historyData = ref([]) +const historyView = () => { + console.log('record', showInfoData); + historyData.value = showInfoData.value; + historyVisible.value = true; +}; onMounted(() => { getLoadStreet().then(res => { @@ -467,6 +499,9 @@ const showInfo = (item) => { } async function goAudit(record) { showDataId.value = record.id + getCaseInfoById({id:showDataId.value}).then(res => { + showInfoData.value = res + }) let data = await getDetail({ code: record.processcode }); let scheme = JSON.parse(data.scheme.content); let wfData = scheme.wfData; @@ -513,6 +548,9 @@ const prevData = async () => { type.value = record.type; handoffShow.value = true auditData.value = record; + getCaseInfoById({id:showDataId.value}).then(res => { + showInfoData.value = res + }) } const nextData = async () => { if(nextShowDataId.value === 0){ @@ -550,6 +588,9 @@ const nextData = async () => { type.value = record.type; handoffShow.value = true auditData.value = record; + getCaseInfoById({id:showDataId.value}).then(res => { + showInfoData.value = res + }) } const closeMolder = () => { emits('getInfoList') diff --git a/src/views/demo/tiankongdi/infomationconfirm/MapList/index.vue b/src/views/demo/tiankongdi/infomationconfirm/MapList/index.vue index 1c783b1f..5f5aa594 100644 --- a/src/views/demo/tiankongdi/infomationconfirm/MapList/index.vue +++ b/src/views/demo/tiankongdi/infomationconfirm/MapList/index.vue @@ -207,13 +207,18 @@
上一条 - 下一条 + 往期线索
+ + + @@ -252,6 +271,9 @@ import { getDetail } from '@/api/sys/WFSchemeInfo'; import { Audit } from '@/views/demo/workflow/task/process/page'; import { dataProcessing, tubanlaiyuanOptions } from '@/views/demo/tiankongdi/util.ts' import {showDrawBack, drawBackSpan} from '@/views/demo/util' +import HistoryListModel from '@/views/demo/tiankongdi/curbspotcity/MapList/HistoryListModel/index.vue'; + + const userStore = useUserStore() const flowWfDataStore = flowStore(); const emits = defineEmits([ @@ -318,7 +340,15 @@ const openCollect = computed(() => { const streetsAreaOptions = ref([ { label: '全部', value: '' }, ]) - +// 往期线索展示 +const historyVisible = ref(false) +const historyData = ref([]) +const showInfoData = ref() +const historyView = () => { + console.log('record', showInfoData); + historyData.value = showInfoData.value; + historyVisible.value = true; +}; onMounted(() => { getLoadStreet().then(res => { console.log(res) @@ -396,6 +426,9 @@ const dataListSort = (type) => { } async function goAudit(record) { showDataId.value = record.id + getCaseInfoById({id:showDataId.value}).then(res => { + showInfoData.value = res + }) let data = await getDetail({ code: record.processcode }); let scheme = JSON.parse(data.scheme.content); let wfData = scheme.wfData; @@ -442,6 +475,9 @@ const prevData = async () => { type.value = record.type; handoffShow.value = true auditData.value = record; + getCaseInfoById({id:showDataId.value}).then(res => { + showInfoData.value = res + }) } const nextData = async () => { if(nextShowDataId.value === 0){ @@ -479,6 +515,9 @@ const nextData = async () => { type.value = record.type; handoffShow.value = true auditData.value = record; + getCaseInfoById({id:showDataId.value}).then(res => { + showInfoData.value = res + }) } const closeMolder = () => { emits('getInfoList') diff --git a/src/views/demo/tiankongdi/segmentation/index.vue b/src/views/demo/tiankongdi/segmentation/index.vue new file mode 100644 index 00000000..ef61cd2a --- /dev/null +++ b/src/views/demo/tiankongdi/segmentation/index.vue @@ -0,0 +1,188 @@ + + + diff --git a/vite.config.ts b/vite.config.ts index 5f61b79d..451a14db 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -45,6 +45,7 @@ export default defineApplicationConfig({ warmup: { clientFiles: ['./index.html', './src/{views,components}/*'], }, + port: 5173, }, define: { 'process.env': { diff --git a/vite.config.ts.timestamp-1774314905111-7a914fadda171.mjs b/vite.config.ts.timestamp-1774314905111-7a914fadda171.mjs new file mode 100644 index 00000000..fa23354f --- /dev/null +++ b/vite.config.ts.timestamp-1774314905111-7a914fadda171.mjs @@ -0,0 +1,69 @@ +// vite.config.ts +import { defineApplicationConfig } from "file:///E:/%E6%96%B0%E6%9E%B6%E6%9E%84%E9%A1%B9%E7%9B%AE/%E8%B4%A2%E6%BA%90%E4%B8%80%E4%BD%93%E5%8C%96/main/CaiYuanYiTiHua/internal/vite-config/dist/index.mjs"; +var vite_config_default = defineApplicationConfig({ + overrides: { + optimizeDeps: { + include: [ + "echarts/core", + "echarts/charts", + "echarts/components", + "echarts/renderers", + "qrcode", + "@iconify/iconify", + "ant-design-vue/es/locale/zh_CN", + "ant-design-vue/es/locale/en_US", + "@/../lib/vform/designer.umd.js", + "jquery" + ] + }, + build: { + /* 其他build生产打包配置省略 */ + //... + target: "esnext", + // chunkSizeWarningLimit:1500, + commonjsOptions: { + include: /node_modules|lib/ + //这里记得把lib目录加进来,否则生产打包会报错!! + } + }, + server: { + proxy: { + "/basic-api": { + target: "http://localhost:3000", + changeOrigin: true, + ws: true, + rewrite: (path) => path.replace(new RegExp(`^/basic-api`), "") + // only https + // secure: false + }, + "/upload": { + target: "http://localhost:3300/upload", + changeOrigin: true, + ws: true, + rewrite: (path) => path.replace(new RegExp(`^/upload`), "") + } + }, + warmup: { + clientFiles: ["./index.html", "./src/{views,components}/*"] + }, + port: 5173 + }, + define: { + "process.env": { + BASE_URL: "/" + } + }, + css: { + preprocessorOptions: { + less: { + javascriptEnabled: true + } + } + }, + plugins: [] + } +}); +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxcdTY1QjBcdTY3QjZcdTY3ODRcdTk4NzlcdTc2RUVcXFxcXHU4RDIyXHU2RTkwXHU0RTAwXHU0RjUzXHU1MzE2XFxcXG1haW5cXFxcQ2FpWXVhbllpVGlIdWFcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkU6XFxcXFx1NjVCMFx1NjdCNlx1Njc4NFx1OTg3OVx1NzZFRVxcXFxcdThEMjJcdTZFOTBcdTRFMDBcdTRGNTNcdTUzMTZcXFxcbWFpblxcXFxDYWlZdWFuWWlUaUh1YVxcXFx2aXRlLmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovJUU2JTk2JUIwJUU2JTlFJUI2JUU2JTlFJTg0JUU5JUExJUI5JUU3JTlCJUFFLyVFOCVCNCVBMiVFNiVCQSU5MCVFNCVCOCU4MCVFNCVCRCU5MyVFNSU4QyU5Ni9tYWluL0NhaVl1YW5ZaVRpSHVhL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZGVmaW5lQXBwbGljYXRpb25Db25maWcgfSBmcm9tICdAdmJlbi92aXRlLWNvbmZpZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUFwcGxpY2F0aW9uQ29uZmlnKHtcbiAgb3ZlcnJpZGVzOiB7XG4gICAgb3B0aW1pemVEZXBzOiB7XG4gICAgICBpbmNsdWRlOiBbXG4gICAgICAgICdlY2hhcnRzL2NvcmUnLFxuICAgICAgICAnZWNoYXJ0cy9jaGFydHMnLFxuICAgICAgICAnZWNoYXJ0cy9jb21wb25lbnRzJyxcbiAgICAgICAgJ2VjaGFydHMvcmVuZGVyZXJzJyxcbiAgICAgICAgJ3FyY29kZScsXG4gICAgICAgICdAaWNvbmlmeS9pY29uaWZ5JyxcbiAgICAgICAgJ2FudC1kZXNpZ24tdnVlL2VzL2xvY2FsZS96aF9DTicsXG4gICAgICAgICdhbnQtZGVzaWduLXZ1ZS9lcy9sb2NhbGUvZW5fVVMnLFxuICAgICAgICAnQC8uLi9saWIvdmZvcm0vZGVzaWduZXIudW1kLmpzJyxcbiAgICAgICAgJ2pxdWVyeScsXG4gICAgICBdLFxuICAgIH0sXG4gICAgYnVpbGQ6IHtcbiAgICAgIC8qIFx1NTE3Nlx1NEVENmJ1aWxkXHU3NTFGXHU0RUE3XHU2MjUzXHU1MzA1XHU5MTREXHU3RjZFXHU3NzAxXHU3NTY1ICovXG4gICAgICAvLy4uLlxuICAgICAgdGFyZ2V0OiAnZXNuZXh0JyxcbiAgICAgIC8vIGNodW5rU2l6ZVdhcm5pbmdMaW1pdDoxNTAwLFxuICAgICAgY29tbW9uanNPcHRpb25zOiB7XG4gICAgICAgIGluY2x1ZGU6IC9ub2RlX21vZHVsZXN8bGliLywgLy9cdThGRDlcdTkxQ0NcdThCQjBcdTVGOTdcdTYyOEFsaWJcdTc2RUVcdTVGNTVcdTUyQTBcdThGREJcdTY3NjVcdUZGMENcdTU0MjZcdTUyMTlcdTc1MUZcdTRFQTdcdTYyNTNcdTUzMDVcdTRGMUFcdTYyQTVcdTk1MTlcdUZGMDFcdUZGMDFcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzZXJ2ZXI6IHtcbiAgICAgIHByb3h5OiB7XG4gICAgICAgICcvYmFzaWMtYXBpJzoge1xuICAgICAgICAgIHRhcmdldDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcsXG4gICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxuICAgICAgICAgIHdzOiB0cnVlLFxuICAgICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgXi9iYXNpYy1hcGlgKSwgJycpLFxuICAgICAgICAgIC8vIG9ubHkgaHR0cHNcbiAgICAgICAgICAvLyBzZWN1cmU6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgICcvdXBsb2FkJzoge1xuICAgICAgICAgIHRhcmdldDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzMwMC91cGxvYWQnLFxuICAgICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcbiAgICAgICAgICB3czogdHJ1ZSxcbiAgICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKG5ldyBSZWdFeHAoYF4vdXBsb2FkYCksICcnKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB3YXJtdXA6IHtcbiAgICAgICAgY2xpZW50RmlsZXM6IFsnLi9pbmRleC5odG1sJywgJy4vc3JjL3t2aWV3cyxjb21wb25lbnRzfS8qJ10sXG4gICAgICB9LFxuICAgICAgcG9ydDogNTE3MyxcbiAgICB9LFxuICAgIGRlZmluZToge1xuICAgICAgJ3Byb2Nlc3MuZW52Jzoge1xuICAgICAgICBCQVNFX1VSTDogJy8nLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGNzczoge1xuICAgICAgcHJlcHJvY2Vzc29yT3B0aW9uczoge1xuICAgICAgICBsZXNzOiB7XG4gICAgICAgICAgamF2YXNjcmlwdEVuYWJsZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgcGx1Z2luczogW1xuICAgIF0sXG4gIH0sXG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBa1gsU0FBUywrQkFBK0I7QUFFMVosSUFBTyxzQkFBUSx3QkFBd0I7QUFBQSxFQUNyQyxXQUFXO0FBQUEsSUFDVCxjQUFjO0FBQUEsTUFDWixTQUFTO0FBQUEsUUFDUDtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQSxPQUFPO0FBQUE7QUFBQTtBQUFBLE1BR0wsUUFBUTtBQUFBO0FBQUEsTUFFUixpQkFBaUI7QUFBQSxRQUNmLFNBQVM7QUFBQTtBQUFBLE1BQ1g7QUFBQSxJQUNGO0FBQUEsSUFDQSxRQUFRO0FBQUEsTUFDTixPQUFPO0FBQUEsUUFDTCxjQUFjO0FBQUEsVUFDWixRQUFRO0FBQUEsVUFDUixjQUFjO0FBQUEsVUFDZCxJQUFJO0FBQUEsVUFDSixTQUFTLENBQUMsU0FBUyxLQUFLLFFBQVEsSUFBSSxPQUFPLGFBQWEsR0FBRyxFQUFFO0FBQUE7QUFBQTtBQUFBLFFBRy9EO0FBQUEsUUFDQSxXQUFXO0FBQUEsVUFDVCxRQUFRO0FBQUEsVUFDUixjQUFjO0FBQUEsVUFDZCxJQUFJO0FBQUEsVUFDSixTQUFTLENBQUMsU0FBUyxLQUFLLFFBQVEsSUFBSSxPQUFPLFVBQVUsR0FBRyxFQUFFO0FBQUEsUUFDNUQ7QUFBQSxNQUNGO0FBQUEsTUFDQSxRQUFRO0FBQUEsUUFDTixhQUFhLENBQUMsZ0JBQWdCLDRCQUE0QjtBQUFBLE1BQzVEO0FBQUEsTUFDQSxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsUUFBUTtBQUFBLE1BQ04sZUFBZTtBQUFBLFFBQ2IsVUFBVTtBQUFBLE1BQ1o7QUFBQSxJQUNGO0FBQUEsSUFDQSxLQUFLO0FBQUEsTUFDSCxxQkFBcUI7QUFBQSxRQUNuQixNQUFNO0FBQUEsVUFDSixtQkFBbUI7QUFBQSxRQUNyQjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQSxTQUFTLENBQ1Q7QUFBQSxFQUNGO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K