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 @@
+
+
+
+
+
+
+
+
+ 导入
+
+ SHP导出
+
+
+
+
+
+
+
+
+
+
+
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