@indfnd/utils 0.1.37 → 0.1.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/global.d.ts CHANGED
@@ -7,6 +7,8 @@ interface Window {
7
7
  wx: any
8
8
  }
9
9
 
10
+ declare const __IS_HB__: string
11
+
10
12
  interface Date {
11
13
  toGMTString: () => string
12
14
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@indfnd/utils",
3
- "version": "0.1.37",
3
+ "version": "0.1.39",
4
4
  "author": "huxuetong",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -34,7 +34,7 @@
34
34
  "re-publish": "yarn publish --access public"
35
35
  },
36
36
  "dependencies": {
37
- "axios": "^0.24.0",
37
+ "axios": "^1.8.0",
38
38
  "dayjs": "^1.11.9",
39
39
  "lodash": "^4.17.21",
40
40
  "md5": "^2.3.0",
package/src/api/com.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  import { axios } from '@/utils'
2
2
  import { config } from '@/config'
3
- const isHb = location.pathname.includes('scyxweb')
3
+ function isHb() {
4
+ return __IS_HB__
5
+ }
4
6
  const CONTEXT = config.ismAmServerContext
5
7
 
6
8
  export function listComTreeApi(params) {
7
9
  if (config.useDddComItemTree) {
8
10
  return axios.get(
9
- `${isHb ? '/scyxgateway' : ''}${config.ucExtServerContext}/manage/tree/getBusiComTree`,
11
+ `${isHb() ? '/scyxgateway' : ''}${config.ucExtServerContext}/manage/tree/getBusiComTree`,
10
12
  { params },
11
13
  )
12
14
  }
package/src/api/item.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  import { axios } from '@/utils'
2
2
  import { config } from '@/config'
3
- const isHb = location.pathname.includes('scyxweb')
3
+ function isHb() {
4
+ return __IS_HB__
5
+ }
4
6
  const CONTEXT = config.ismAmServerContext
5
7
 
6
8
  export function listItemTreeApi(params) {
7
9
  if (config.useDddComItemTree) {
8
10
  return axios.get(
9
- `${isHb ? '/scyxgateway' : ''}${
11
+ `${isHb() ? '/scyxgateway' : ''}${
10
12
  config.ucExtServerContext
11
13
  }/manage/tree/getProductInfoAsTreeData`,
12
14
  {
@@ -2,7 +2,9 @@ import { CONTENT_TYPE, axios, getToken, MIME_TYPE } from '@/utils'
2
2
  import { config } from '@/config'
3
3
  import { AxiosRequestConfig, ResponseType } from 'axios'
4
4
 
5
- const isHb = location.pathname.includes('scyxweb')
5
+ function isHb() {
6
+ return __IS_HB__
7
+ }
6
8
  const CONTEXT = config.ossServerContext
7
9
 
8
10
  /**
@@ -12,7 +14,7 @@ const CONTEXT = config.ossServerContext
12
14
  * @returns url
13
15
  */
14
16
  export function getOssFileUrl(fileId = '') {
15
- return `${isHb ? '/scyxgateway/ind-uc-ext-server' : CONTEXT}/oss/file/get/${fileId}`
17
+ return `${isHb() ? '/scyxgateway/ind-uc-ext-server' : CONTEXT}/oss/file/get/${fileId}`
16
18
  }
17
19
 
18
20
  /**
@@ -21,7 +23,7 @@ export function getOssFileUrl(fileId = '') {
21
23
  * @returns url
22
24
  */
23
25
  export function putOssFileUrl() {
24
- return `${isHb ? '/scyxgateway/ind-uc-ext-server' : CONTEXT}/oss/file/put`
26
+ return `${isHb() ? '/scyxgateway/ind-uc-ext-server' : CONTEXT}/oss/file/put`
25
27
  }
26
28
 
27
29
  /**
@@ -89,7 +91,7 @@ export async function downLoadScDcApi(fileId: string, fileName: string) {
89
91
  })
90
92
  } else {
91
93
  const downloadUrl = `${
92
- (location.pathname.includes('scyxweb') ? '/scyxgateway' : '') + '/ind-uc-ext-server'
94
+ (isHb() ? '/scyxgateway' : '') + '/ind-uc-ext-server'
93
95
  }/oss/file/get/${fileId}`
94
96
  const token = getToken() // 获取当前 Token
95
97
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  // const XlsxPopulate = require('xlsx-populate/browser/xlsx-populate')
4
4
  import _ from 'lodash'
5
- import { putOssFileApi } from '@indfnd/utils'
5
+ import { putOssFileApi } from '@/api/platform/oss'
6
6
 
7
7
  const titleStyle = {
8
8
  // title style
@@ -26,19 +26,21 @@ instance.formPost = function (url, data, config) {
26
26
  */
27
27
  export const wrapApi = (api, isPost = false) => {
28
28
  // 每个函数都有自己的 controller,避免互相干扰
29
- let currentController = null
29
+ let controllerMapping = {}
30
30
 
31
31
  const wrappedFunction = async function (...args) {
32
+ let url = args[0]
33
+
32
34
  // 取消之前的请求
33
- if (currentController) {
35
+ if (controllerMapping[url]) {
34
36
  console.log('currentController.abort trigger, now cancel before request')
35
- currentController.abort()
36
- currentController = null
37
+ controllerMapping[url].abort()
38
+ controllerMapping[url] = null
37
39
  }
38
40
 
39
41
  // 创建新的 AbortController
40
42
  const controller = new AbortController()
41
- currentController = controller
43
+ controllerMapping[url] = controller
42
44
 
43
45
  // 准备参数
44
46
  const newArgs = [...args]
@@ -97,7 +99,7 @@ export const wrapApi = (api, isPost = false) => {
97
99
  const result = await api(...newArgs)
98
100
 
99
101
  // 请求成功后清理 controller
100
- currentController = null
102
+ controllerMapping[url] = null
101
103
  return result
102
104
  } catch (error) {
103
105
  // 如果是取消错误,重新抛出
@@ -113,24 +115,24 @@ export const wrapApi = (api, isPost = false) => {
113
115
  throw error
114
116
  } finally {
115
117
  // 如果当前 controller 仍然是这个请求的,清理它
116
- if (currentController === controller) {
117
- currentController = null
118
+ if (controllerMapping[url] === controller) {
119
+ controllerMapping[url] = null
118
120
  }
119
121
  }
120
122
  }
121
123
 
122
- // 添加取消方法,允许外部取消
123
- wrappedFunction.cancel = (reason) => {
124
- if (currentController) {
125
- currentController.abort(reason)
126
- currentController = null
127
- }
128
- }
129
-
130
- // 添加检查是否正在请求的方法
131
- wrappedFunction.isPending = () => {
132
- return currentController !== null
133
- }
124
+ // // 添加取消方法,允许外部取消
125
+ // wrappedFunction.cancel = (reason) => {
126
+ // if (controllerMapping[url]) {
127
+ // controllerMapping[url].abort(reason)
128
+ // controllerMapping[url] = null
129
+ // }
130
+ // }
131
+
132
+ // // 添加检查是否正在请求的方法
133
+ // wrappedFunction.isPending = () => {
134
+ // return controllerMapping[url] !== null
135
+ // }
134
136
 
135
137
  return wrappedFunction
136
138
  }
@@ -1,2 +1,4 @@
1
- export declare function listComTreeApi(params: any): Promise<import('axios').AxiosResponse<any>>
1
+ export declare function listComTreeApi(
2
+ params: any,
3
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
2
4
  //# sourceMappingURL=com.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"com.d.ts","sourceRoot":"","sources":["../../src/api/com.ts"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,MAAM,KAAA,+CAQpC"}
1
+ {"version":3,"file":"com.d.ts","sourceRoot":"","sources":["../../src/api/com.ts"],"names":[],"mappings":"AAOA,wBAAgB,cAAc,CAAC,MAAM,KAAA,wDAQpC"}
@@ -1,2 +1,4 @@
1
- export declare function listIndexDescApi(params: any): Promise<import('axios').AxiosResponse<any>>
1
+ export declare function listIndexDescApi(
2
+ params: any,
3
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
2
4
  //# sourceMappingURL=index-desc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-desc.d.ts","sourceRoot":"","sources":["../../src/api/index-desc.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,CAAC,MAAM,KAAA,+CAEtC"}
1
+ {"version":3,"file":"index-desc.d.ts","sourceRoot":"","sources":["../../src/api/index-desc.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,CAAC,MAAM,KAAA,wDAEtC"}
@@ -1,4 +1,6 @@
1
- export declare function listItemTreeApi(params: any): Promise<import('axios').AxiosResponse<any>>
2
- export declare function getPriceInfo(): Promise<import('axios').AxiosResponse<any>>
3
- export declare function getItem(params: any): Promise<import('axios').AxiosResponse<any>>
1
+ export declare function listItemTreeApi(
2
+ params: any,
3
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
4
+ export declare function getPriceInfo(): Promise<import('axios').AxiosResponse<any, any, {}>>
5
+ export declare function getItem(params: any): Promise<import('axios').AxiosResponse<any, any, {}>>
4
6
  //# sourceMappingURL=item.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/api/item.ts"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,CAAC,MAAM,KAAA,+CAYrC;AACD,wBAAgB,YAAY,gDAE3B;AACD,wBAAgB,OAAO,CAAC,MAAM,KAAA,+CAE7B"}
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/api/item.ts"],"names":[],"mappings":"AAOA,wBAAgB,eAAe,CAAC,MAAM,KAAA,wDAYrC;AACD,wBAAgB,YAAY,yDAE3B;AACD,wBAAgB,OAAO,CAAC,MAAM,KAAA,wDAE7B"}
@@ -1,4 +1,6 @@
1
- export declare function getDictsMapApi(dictId: string): Promise<import('axios').AxiosResponse<any>>
1
+ export declare function getDictsMapApi(
2
+ dictId: string,
3
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
2
4
  export declare function getDictApi(dictId: string): Promise<any>
3
5
  export declare function getDictMapApi(dictIdArr: string[]): Promise<{}>
4
6
  //# sourceMappingURL=dict.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dict.d.ts","sourceRoot":"","sources":["../../../src/api/platform/dict.ts"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,+CAE5C;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,gBAgB9C;AAkBD,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eActD"}
1
+ {"version":3,"file":"dict.d.ts","sourceRoot":"","sources":["../../../src/api/platform/dict.ts"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,wDAE5C;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,gBAgB9C;AAkBD,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eActD"}
@@ -1,17 +1,21 @@
1
- export declare function getPermissionApi(): Promise<import('axios').AxiosResponse<any>>
2
- export declare function getMenuHistoryApi(): Promise<import('axios').AxiosResponse<any>>
3
- export declare function menuHistoryApi(params: any): Promise<import('axios').AxiosResponse<any>>
1
+ export declare function getPermissionApi(): Promise<import('axios').AxiosResponse<any, any, {}>>
2
+ export declare function getMenuHistoryApi(): Promise<import('axios').AxiosResponse<any, any, {}>>
3
+ export declare function menuHistoryApi(
4
+ params: any,
5
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
4
6
  export declare function deleteMenuHistoryApi(
5
7
  historyId: any,
6
- ): Promise<import('axios').AxiosResponse<any>>
7
- export declare function getMenuCollectApi(): Promise<import('axios').AxiosResponse<any>>
8
- export declare function addMenuCollectApi(params: any): Promise<import('axios').AxiosResponse<any>>
8
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
9
+ export declare function getMenuCollectApi(): Promise<import('axios').AxiosResponse<any, any, {}>>
10
+ export declare function addMenuCollectApi(
11
+ params: any,
12
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
9
13
  export declare function deleteMenuCollectApi(
10
14
  collectId: any,
11
- ): Promise<import('axios').AxiosResponse<any>>
15
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
12
16
  export declare function removeMenuCollectApi(
13
17
  params: any,
14
- ): Promise<import('axios').AxiosResponse<any>>
15
- export declare function getAppListApi(): Promise<import('axios').AxiosResponse<any>>
16
- export declare function getMaxTabNumValueApi(): Promise<import('axios').AxiosResponse<any>>
18
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
19
+ export declare function getAppListApi(): Promise<import('axios').AxiosResponse<any, any, {}>>
20
+ export declare function getMaxTabNumValueApi(): Promise<import('axios').AxiosResponse<any, any, {}>>
17
21
  //# sourceMappingURL=menu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../../src/api/platform/menu.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,gDAE/B;AAED,wBAAgB,iBAAiB,gDAEhC;AAED,wBAAgB,cAAc,CAAC,MAAM,KAAA,+CAEpC;AAED,wBAAgB,oBAAoB,CAAC,SAAS,KAAA,+CAE7C;AAED,wBAAgB,iBAAiB,gDAEhC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,KAAA,+CAEvC;AAED,wBAAgB,oBAAoB,CAAC,SAAS,KAAA,+CAE7C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,KAAA,+CAE1C;AAED,wBAAgB,aAAa,gDAE5B;AAED,wBAAgB,oBAAoB,gDAEnC"}
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../../src/api/platform/menu.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,yDAE/B;AAED,wBAAgB,iBAAiB,yDAEhC;AAED,wBAAgB,cAAc,CAAC,MAAM,KAAA,wDAEpC;AAED,wBAAgB,oBAAoB,CAAC,SAAS,KAAA,wDAE7C;AAED,wBAAgB,iBAAiB,yDAEhC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,KAAA,wDAEvC;AAED,wBAAgB,oBAAoB,CAAC,SAAS,KAAA,wDAE7C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,KAAA,wDAE1C;AAED,wBAAgB,aAAa,yDAE5B;AAED,wBAAgB,oBAAoB,yDAEnC"}
@@ -22,7 +22,7 @@ export declare function putOssFileUrl(): string
22
22
  export declare function getOssFileApi(
23
23
  fileId: string,
24
24
  responseType?: ResponseType,
25
- ): Promise<import('axios').AxiosResponse<any>>
25
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
26
26
  /**
27
27
  * 将文件上传到文档中心
28
28
  *
@@ -33,7 +33,7 @@ export declare function getOssFileApi(
33
33
  export declare function putOssFileApi(
34
34
  filename: string,
35
35
  blob: Blob,
36
- ): import('axios').AxiosPromise<any>
36
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
37
37
  /**
38
38
  * 获取文档中心预览URL
39
39
  *
@@ -42,7 +42,7 @@ export declare function putOssFileApi(
42
42
  */
43
43
  export declare function getPreviewUrlApi(
44
44
  fileId: string,
45
- ): Promise<import('axios').AxiosResponse<any>>
45
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
46
46
  /**
47
47
  * 获取文档中心预览URL
48
48
  *
@@ -1 +1 @@
1
- {"version":3,"file":"oss.d.ts","sourceRoot":"","sources":["../../../src/api/platform/oss.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,YAAY,EAAE,MAAM,OAAO,CAAA;AAKxD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAK,UAExC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,WAE5B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,+CAMxE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,qCAUzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,+CAQ9C;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBA0DrE"}
1
+ {"version":3,"file":"oss.d.ts","sourceRoot":"","sources":["../../../src/api/platform/oss.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,YAAY,EAAE,MAAM,OAAO,CAAA;AAOxD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAK,UAExC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,WAE5B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,wDAMxE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,wDAUzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,wDAQ9C;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBA0DrE"}
@@ -8,10 +8,12 @@ export declare function loginApi({
8
8
  password: any
9
9
  validCodeId: any
10
10
  validCodeInput: any
11
- }): Promise<import('axios').AxiosResponse<any>>
12
- export declare function getUserInfoApi(): Promise<import('axios').AxiosResponse<any>>
13
- export declare function getGlobalPolicyApi(): Promise<import('axios').AxiosResponse<any>>
14
- export declare function updatePasswordApi(data: any): Promise<import('axios').AxiosResponse<any>>
11
+ }): Promise<import('axios').AxiosResponse<any, any, {}>>
12
+ export declare function getUserInfoApi(): Promise<import('axios').AxiosResponse<any, any, {}>>
13
+ export declare function getGlobalPolicyApi(): Promise<import('axios').AxiosResponse<any, any, {}>>
14
+ export declare function updatePasswordApi(
15
+ data: any,
16
+ ): Promise<import('axios').AxiosResponse<any, any, {}>>
15
17
  export declare function getCaptchaURL(validCodeId: string): string
16
- export declare function logoutApi(): Promise<import('axios').AxiosResponse<any>>
18
+ export declare function logoutApi(): Promise<import('axios').AxiosResponse<any, any, {}>>
17
19
  //# sourceMappingURL=user.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/api/platform/user.ts"],"names":[],"mappings":"AAMA,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;;;;;CAAA,+CAQ3E;AAED,wBAAgB,cAAc,gDAE7B;AAED,wBAAgB,kBAAkB,gDAEjC;AAED,wBAAgB,iBAAiB,CAAC,IAAI,KAAA,+CAErC;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,UAEhD;AAED,wBAAgB,SAAS,gDAExB"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/api/platform/user.ts"],"names":[],"mappings":"AAMA,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;;;;;CAAA,wDAQ3E;AAED,wBAAgB,cAAc,yDAE7B;AAED,wBAAgB,kBAAkB,yDAEjC;AAED,wBAAgB,iBAAiB,CAAC,IAAI,KAAA,wDAErC;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,UAEhD;AAED,wBAAgB,SAAS,yDAExB"}
@@ -12,13 +12,6 @@ declare const instance: AxiosExtendsInstance
12
12
  * @param {boolean} isPost - 是否是post请求
13
13
  * @returns {Function} 封装后可取消的api
14
14
  */
15
- export declare const wrapApi: (
16
- api: any,
17
- isPost?: boolean,
18
- ) => {
19
- (...args: any[]): Promise<any>
20
- cancel(reason: any): void
21
- isPending(): boolean
22
- }
15
+ export declare const wrapApi: (api: any, isPost?: boolean) => (...args: any[]) => Promise<any>
23
16
  export { instance as axios }
24
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/request/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAuC,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAG1F,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,oBAAoB,EAAE,CAAA;AAE/B,QAAA,MAAM,QAAQ,EAAE,oBAA+D,CAAA;AAS/E;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO;;;;CA6GnB,CAAA;AAQD,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/request/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAuC,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAG1F,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,oBAAoB,EAAE,CAAA;AAE/B,QAAA,MAAM,QAAQ,EAAE,oBAA+D,CAAA;AAS/E;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,kEA+GnB,CAAA;AAQD,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,CAAA"}