@glodon-aiot/dataset-annotation 3.2.2-beta.3 → 3.2.2-beta.4

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.
Files changed (138) hide show
  1. package/dist/es/Common/Page/index.mjs +29 -0
  2. package/dist/es/Common/Page/style.less.mjs +4 -0
  3. package/dist/es/Common/PageContent/index.mjs +18 -0
  4. package/dist/es/Common/PageHeader/index.mjs +39 -0
  5. package/dist/es/Common/PageHeader/style.less.mjs +4 -0
  6. package/dist/es/DatasetContext/index.mjs +11 -0
  7. package/dist/es/_virtual/_commonjsHelpers.mjs +4 -0
  8. package/dist/es/_virtual/minio.mjs +4 -0
  9. package/dist/es/access/images/data_empty.svg.mjs +4 -0
  10. package/dist/es/components/CompositionInput/index.mjs +53 -0
  11. package/dist/es/components/DataEmpty/index.mjs +51 -0
  12. package/dist/es/components/DataEmpty/style.less.mjs +4 -0
  13. package/dist/es/components/DetectionAnnotation/PreSamplesPage/index.mjs +292 -0
  14. package/dist/es/components/DetectionAnnotation/PreSamplesPage/style.less.mjs +4 -0
  15. package/dist/es/components/DetectionAnnotation/components/DisabledTooltip/index.mjs +23 -0
  16. package/dist/es/components/DetectionAnnotation/components/ImageDetail/index.mjs +166 -0
  17. package/dist/es/components/DetectionAnnotation/components/ImageDetail/style.less.mjs +4 -0
  18. package/dist/es/components/DetectionAnnotation/components/LabelMaker/Drawable.mjs +51 -0
  19. package/dist/es/components/DetectionAnnotation/components/LabelMaker/FabricCustomize.mjs +42 -0
  20. package/dist/es/components/DetectionAnnotation/components/LabelMaker/RectLabel.mjs +283 -0
  21. package/dist/es/components/DetectionAnnotation/components/LabelMaker/icons/delete-icon.svg.mjs +4 -0
  22. package/dist/es/components/DetectionAnnotation/components/LabelMaker/index.mjs +315 -0
  23. package/dist/es/components/DetectionAnnotation/components/LabelMaker/style.less.mjs +4 -0
  24. package/dist/es/components/DetectionAnnotation/components/Labels/index.mjs +201 -0
  25. package/dist/es/components/DetectionAnnotation/components/Labels/style.less.mjs +4 -0
  26. package/dist/es/components/DetectionAnnotation/components/TagItem/index.mjs +144 -0
  27. package/dist/es/components/DetectionAnnotation/components/TagItem/style.less.mjs +4 -0
  28. package/dist/es/components/DetectionAnnotation/icon_item_empty.svg.mjs +4 -0
  29. package/dist/es/components/DetectionAnnotation/index.mjs +713 -0
  30. package/dist/es/components/DetectionAnnotation/style.less.mjs +4 -0
  31. package/dist/es/components/DetectionImageAnnotation/index.mjs +62 -0
  32. package/dist/es/components/DetectionImageAnnotation/style.less.mjs +4 -0
  33. package/dist/es/components/Iconfont/index.mjs +16 -0
  34. package/dist/es/components/MarkDescriptions/index.mjs +66 -0
  35. package/dist/es/components/MarkDescriptions/style.less.mjs +4 -0
  36. package/dist/es/components/OCRImageViewer/index.mjs +213 -0
  37. package/dist/es/components/OCRImageViewer/style.less.mjs +4 -0
  38. package/dist/es/components/OcrAnnotation/MarkKVOCRModal/CategoryDrawer.mjs +136 -0
  39. package/dist/es/components/OcrAnnotation/MarkKVOCRModal/KVOCRLabelMaker/LabelEditorInput.mjs +57 -0
  40. package/dist/es/components/OcrAnnotation/MarkKVOCRModal/KVOCRLabelMaker/LabelEditorItem.mjs +73 -0
  41. package/dist/es/components/OcrAnnotation/MarkKVOCRModal/KVOCRLabelMaker/LableEditor.mjs +55 -0
  42. package/dist/es/components/OcrAnnotation/MarkKVOCRModal/KVOCRLabelMaker/index.mjs +366 -0
  43. package/dist/es/components/OcrAnnotation/MarkKVOCRModal/KVOCRLabelMaker/style.less.mjs +4 -0
  44. package/dist/es/components/OcrAnnotation/MarkKVOCRModal/index.mjs +255 -0
  45. package/dist/es/components/OcrAnnotation/MarkKVOCRModal/style.less.mjs +4 -0
  46. package/dist/es/components/OcrAnnotation/MarkOCRBoxModal/ImageDetail/index.mjs +101 -0
  47. package/dist/es/components/OcrAnnotation/MarkOCRBoxModal/ImageDetail/style.less.mjs +4 -0
  48. package/dist/es/components/OcrAnnotation/MarkOCRBoxModal/OCRBoxMaker/images/delete.png.mjs +4 -0
  49. package/dist/es/components/OcrAnnotation/MarkOCRBoxModal/OCRBoxMaker/index.mjs +756 -0
  50. package/dist/es/components/OcrAnnotation/MarkOCRBoxModal/OCRBoxMaker/style.less.mjs +4 -0
  51. package/dist/es/components/OcrAnnotation/MarkOCRBoxModal/index.mjs +231 -0
  52. package/dist/es/components/OcrAnnotation/MarkOCRBoxModal/style.less.mjs +4 -0
  53. package/dist/es/components/OcrAnnotation/OcrModal/index.mjs +180 -0
  54. package/dist/es/components/OcrAnnotation/OcrModal/style.less.mjs +4 -0
  55. package/dist/es/components/OcrAnnotation/PreLabelOCR/PreLabelModal.mjs +281 -0
  56. package/dist/es/components/OcrAnnotation/PreLabelOCR/index.mjs +44 -0
  57. package/dist/es/components/OcrAnnotation/PreLabelOCR/style.less.mjs +4 -0
  58. package/dist/es/components/OcrAnnotation/constant.mjs +5 -0
  59. package/dist/es/components/OcrAnnotation/index.mjs +382 -0
  60. package/dist/es/components/OcrAnnotation/style.less.mjs +4 -0
  61. package/dist/es/components/OcrImageAnnotation/index.mjs +40 -0
  62. package/dist/es/components/OcrImageAnnotation/style.less.mjs +4 -0
  63. package/dist/es/components/PageNav/index.mjs +30 -0
  64. package/dist/es/components/PageNav/style.less.mjs +4 -0
  65. package/dist/es/components/PicZipImportModal/index.mjs +584 -0
  66. package/dist/es/components/PicZipImportModal/pic_zip.svg.mjs +4 -0
  67. package/dist/es/components/PicZipImportModal/pic_zip_json.svg.mjs +4 -0
  68. package/dist/es/components/PicZipImportModal/style.less.mjs +4 -0
  69. package/dist/es/components/PreLabelOCR/PreLabelModal.mjs +276 -0
  70. package/dist/es/components/PreLabelOCR/index.mjs +44 -0
  71. package/dist/es/components/PreLabelOCR/style.less.mjs +4 -0
  72. package/dist/es/components/ScanTable/index.mjs +97 -0
  73. package/dist/es/components/ScanTable/style.less.mjs +4 -0
  74. package/dist/es/components/Thumbnail/default.png.mjs +4 -0
  75. package/dist/es/components/Thumbnail/index.mjs +31 -0
  76. package/dist/es/components/Thumbnail/style.less.mjs +4 -0
  77. package/dist/es/components/hooks/Prompt.mjs +33 -0
  78. package/dist/es/constant.mjs +13 -0
  79. package/dist/es/createDatasetAnnotation/index.mjs +133 -0
  80. package/dist/es/createDetectionDatasetAnnotation/index.mjs +129 -0
  81. package/dist/es/createDetectionImageAnnotation/index.mjs +31 -0
  82. package/dist/es/createOcrDatasetAnnotation/index.mjs +129 -0
  83. package/dist/es/createOcrImageAnnotation/index.mjs +33 -0
  84. package/dist/es/featuresConfig.mjs +79 -0
  85. package/dist/es/index.mjs +13 -0
  86. package/dist/es/node_modules/@glodon-aiot/minio/dist/minio.mjs +28463 -0
  87. package/dist/es/utils/color.mjs +30 -0
  88. package/dist/es/utils/index.mjs +22 -0
  89. package/dist/es/utils/sign.mjs +33 -0
  90. package/dist/lib/index.js +130 -0
  91. package/dist/src/Common/Page/index.d.ts +1 -2
  92. package/dist/src/Common/PageHeader/index.d.ts +0 -1
  93. package/dist/src/DatasetContext/index.d.ts +3 -4
  94. package/dist/src/components/CompositionInput/index.d.ts +2 -2
  95. package/dist/src/components/DataEmpty/index.d.ts +1 -2
  96. package/dist/src/components/DetectionAnnotation/PreSamplesPage/index.d.ts +1 -2
  97. package/dist/src/components/DetectionAnnotation/components/DisabledTooltip/index.d.ts +2 -2
  98. package/dist/src/components/DetectionAnnotation/components/ImageDetail/index.d.ts +1 -2
  99. package/dist/src/components/DetectionAnnotation/components/LabelMaker/Drawable.d.ts +2 -2
  100. package/dist/src/components/DetectionAnnotation/components/LabelMaker/RectLabel.d.ts +6 -5
  101. package/dist/src/components/DetectionAnnotation/components/LabelMaker/index.d.ts +0 -1
  102. package/dist/src/components/DetectionAnnotation/components/Labels/index.d.ts +0 -1
  103. package/dist/src/components/DetectionAnnotation/components/TagItem/index.d.ts +1 -2
  104. package/dist/src/components/DetectionAnnotation/index.d.ts +1 -2
  105. package/dist/src/components/DetectionImageAnnotation/index.d.ts +0 -2
  106. package/dist/src/components/Iconfont/font_3140028_iptomfpgyu.d.ts +0 -0
  107. package/dist/src/components/Iconfont/font_3454453_gu5ijeufyng.d.ts +0 -0
  108. package/dist/src/components/Iconfont/font_4108228_3slzqhoow93.d.ts +0 -0
  109. package/dist/src/components/Iconfont/font_4439177_k3mjwv7kzfd.d.ts +0 -0
  110. package/dist/src/components/Iconfont/index.d.ts +1 -2
  111. package/dist/src/components/MarkDescriptions/index.d.ts +0 -1
  112. package/dist/src/components/OCRImageViewer/index.d.ts +1 -2
  113. package/dist/src/components/OcrAnnotation/MarkKVOCRModal/KVOCRLabelMaker/LabelEditorInput.d.ts +2 -2
  114. package/dist/src/components/OcrAnnotation/MarkKVOCRModal/KVOCRLabelMaker/LabelEditorItem.d.ts +1 -2
  115. package/dist/src/components/OcrAnnotation/MarkKVOCRModal/KVOCRLabelMaker/LableEditor.d.ts +0 -1
  116. package/dist/src/components/OcrAnnotation/MarkKVOCRModal/index.d.ts +0 -1
  117. package/dist/src/components/OcrAnnotation/MarkOCRBoxModal/ImageDetail/index.d.ts +1 -2
  118. package/dist/src/components/OcrAnnotation/MarkOCRBoxModal/OCRBoxMaker/LabelEditorInput.d.ts +2 -2
  119. package/dist/src/components/OcrAnnotation/MarkOCRBoxModal/OCRBoxMaker/LabelEditorItem.d.ts +0 -1
  120. package/dist/src/components/OcrAnnotation/MarkOCRBoxModal/OCRBoxMaker/LableEditor.d.ts +0 -1
  121. package/dist/src/components/OcrAnnotation/MarkOCRBoxModal/OCRBoxMaker/index.d.ts +0 -1
  122. package/dist/src/components/OcrAnnotation/MarkOCRBoxModal/index.d.ts +0 -1
  123. package/dist/src/components/OcrAnnotation/OcrModal/index.d.ts +1 -2
  124. package/dist/src/components/OcrAnnotation/PreLabelOCR/PreLabelModal.d.ts +1 -2
  125. package/dist/src/components/OcrAnnotation/PreLabelOCR/index.d.ts +1 -2
  126. package/dist/src/components/OcrAnnotation/index.d.ts +1 -2
  127. package/dist/src/components/OcrImageAnnotation/index.d.ts +0 -2
  128. package/dist/src/components/PageNav/index.d.ts +1 -2
  129. package/dist/src/components/PicZipImportModal/index.d.ts +1 -2
  130. package/dist/src/components/PreLabelOCR/PreLabelModal.d.ts +1 -2
  131. package/dist/src/components/PreLabelOCR/index.d.ts +1 -2
  132. package/dist/src/components/ScanTable/index.d.ts +1 -2
  133. package/dist/src/components/Thumbnail/index.d.ts +1 -2
  134. package/dist/src/components/hooks/Prompt.d.ts +0 -1
  135. package/dist/src/components/hooks/useBlocker.d.ts +1 -1
  136. package/dist/src/featuresConfig.d.ts +1 -1
  137. package/dist/src/utils/sign.d.ts +1 -1
  138. package/package.json +15 -6
@@ -0,0 +1,584 @@
1
+ var al = Object.defineProperty;
2
+ var Le = Object.getOwnPropertySymbols;
3
+ var ol = Object.prototype.hasOwnProperty, rl = Object.prototype.propertyIsEnumerable;
4
+ var Ae = (y, l, i) => l in y ? al(y, l, { enumerable: !0, configurable: !0, writable: !0, value: i }) : y[l] = i, Ue = (y, l) => {
5
+ for (var i in l || (l = {}))
6
+ ol.call(l, i) && Ae(y, i, l[i]);
7
+ if (Le)
8
+ for (var i of Le(l))
9
+ rl.call(l, i) && Ae(y, i, l[i]);
10
+ return y;
11
+ };
12
+ var ce = (y, l, i) => new Promise((f, V) => {
13
+ var D = (w) => {
14
+ try {
15
+ F(i.next(w));
16
+ } catch (z) {
17
+ V(z);
18
+ }
19
+ }, Z = (w) => {
20
+ try {
21
+ F(i.throw(w));
22
+ } catch (z) {
23
+ V(z);
24
+ }
25
+ }, F = (w) => w.done ? f(w.value) : Promise.resolve(w.value).then(D, Z);
26
+ F((i = i.apply(y, l)).next());
27
+ });
28
+ import { jsxs as p, Fragment as de, jsx as e } from "react/jsx-runtime";
29
+ import { useContext as cl, useState as r, useRef as dl, useEffect as A } from "react";
30
+ import { Form as U, message as x, Modal as H, Button as O, Radio as R, Space as Oe, Upload as pl, Row as pe, Col as ul, Spin as ml, Result as Te } from "antd";
31
+ import "./style.less.mjs";
32
+ import { CloudUploadOutlined as fl, PaperClipOutlined as hl, DeleteOutlined as gl, PlusOutlined as Cl } from "@ant-design/icons";
33
+ import bl from "browser-md5-file";
34
+ import { m as I } from "../../node_modules/@glodon-aiot/minio/dist/minio.mjs";
35
+ import yl from "antd/lib/upload/Dragger";
36
+ import Nl from "./pic_zip.svg.mjs";
37
+ import Sl from "./pic_zip_json.svg.mjs";
38
+ import { GB as wl, MB as zl } from "../../constant.mjs";
39
+ import { fileSuffixToLowerCase as jl } from "../../utils/index.mjs";
40
+ import El from "../../DatasetContext/index.mjs";
41
+ import { EXAMPLE_SRC_ROOT as kl } from "../../featuresConfig.mjs";
42
+ let m = 0, G = 0, T = 0, _ = 0;
43
+ const Jl = (y) => {
44
+ const {
45
+ datasetIam: l,
46
+ datasetId: i,
47
+ currentVersion: f,
48
+ tenCode: V,
49
+ isVisible: D,
50
+ markType: Z,
51
+ setIsVisible: F,
52
+ getVersionListRequest: w,
53
+ onUploadStatusChange: z,
54
+ setIsConfirm: Q,
55
+ tableReload: ue,
56
+ loadVersionData: q,
57
+ actionAfterFinish: me
58
+ } = y, {
59
+ services: {
60
+ cvforceDatahub: u
61
+ },
62
+ featuresConfig: {
63
+ exampleSrcRoot: fe
64
+ } = {
65
+ exampleSrcRoot: kl
66
+ }
67
+ } = cl(El), [N, Me] = r(0), [S, Pe] = r(0), [Y, Ve] = r([]), [M, De] = r(), [he, vl] = r([]), [ee, J] = r(!1), [ge, le] = r(!1), [K, te] = r(!1), [se, Ke] = r(0), [Ce, Ge] = r(0), [W, be] = r(-1), [ie, xl] = r([]), [ye, Rl] = r([]), [Ne, ne] = r(!1), _e = new bl(), [X] = U.useForm(), n = U.useWatch("acceptType", X), k = U.useWatch("labelState", X), [h, Se] = r([]), [E, we] = r([]), [v, Ze] = r(), [ze, je] = r(0), [Ee, ke] = r(!1), [Fl, qe] = r(""), [Je, ve] = r(!1), [xe, We] = r(
68
+ "unlabeled"
69
+ /* Unlabeled */
70
+ ), ae = dl(!0), oe = ["image/jpeg", "image/jpg", "image/png", "image/bmp"], re = 14 * zl;
71
+ A(() => {
72
+ m = 0, G = 0, T = 0, _ = 0, te(!1), D && (ae.current = !1, q && q());
73
+ }, [D]);
74
+ const Re = (t, s) => {
75
+ var a;
76
+ if (n === "image") {
77
+ ne(!0);
78
+ let o = 0;
79
+ if (m = m + 1, G = G + 1, s.length === 0)
80
+ return;
81
+ let d = 0;
82
+ const [...c] = s, C = window.URL || window.webkitURL, b = new Image();
83
+ b.src = C.createObjectURL(t), b.onload = () => {
84
+ Y.push({
85
+ name: t.name,
86
+ src: b.src,
87
+ width: b.width,
88
+ height: b.height
89
+ }), Ve(Y);
90
+ }, s.map((j) => {
91
+ const $ = oe.some((L) => L === j.type), B = j.size <= re;
92
+ $ ? B || (o = o + 1, c.splice(c.findIndex((L) => L.name === j.name), 1)) : (d = d + 1, c.splice(c.findIndex((L) => L.name === j.name), 1));
93
+ }), c.length > 100 && c.splice(100, c.length), Me(d), Pe(o), G === s.length && (ne(!0), G = 0);
94
+ const g = oe.some((j) => j === t.type), P = t.size <= re;
95
+ if (g) {
96
+ if (!P)
97
+ return !1;
98
+ } else
99
+ return !1;
100
+ } else {
101
+ if (t.size > 2 * wl)
102
+ return x.error(`${t.name}文件总大小不能超过2G`), !1;
103
+ const o = (a = t.name) == null ? void 0 : a.substring(t.name.lastIndexOf("."));
104
+ if (n === "zip" && o !== ".zip")
105
+ return x.error("存在格式不正确的文件,已自动去除"), !1;
106
+ we((d) => d.length >= 1 ? d : [...d, t]);
107
+ }
108
+ return !1;
109
+ };
110
+ A(() => {
111
+ Ne !== !1 && (!N && !S && !m || (m = m - _ - N - S, m < 101 ? N > 0 && S > 0 ? (x.error(`${N + S}个文件添加失败,格式、大小或数量不符合要求`), m = m - N - S) : N > 0 && S === 0 ? x.error(`${N}个文件添加失败,格式不符合要求`) : N === 0 && S > 0 ? x.error(`${S}个文件添加失败,单张图片超过14M`) : N === 0 && S === 0 && x.success("校验成功") : N + S === 0 ? (x.error(`${m - 100}个文件添加失败,超过数量限制`), m = 100) : (x.error(`${m - 100 + N + S}个文件添加失败,格式、大小或数量不符合要求`), m = m < 101 ? m : 100), ne(!1)));
112
+ }, [Ne]);
113
+ const Xe = (t) => {
114
+ const s = t.originFileObj;
115
+ return new Promise((a, o) => {
116
+ _e.md5(s, (d, c) => {
117
+ d && o(d), Ie(c, s), a(c);
118
+ });
119
+ });
120
+ }, He = () => ce(void 0, null, function* () {
121
+ if (!h)
122
+ return;
123
+ const t = [];
124
+ for (let s = 0; s < h.length; s++) {
125
+ const a = h[s], o = yield Xe(a);
126
+ t.push(o);
127
+ }
128
+ !i || t.length === 0 || u == null || u.getDeduplication(t, i).then((s) => {
129
+ De(s), ve(!1);
130
+ });
131
+ });
132
+ A(() => {
133
+ He();
134
+ }, [h]);
135
+ const Ie = (t, s) => {
136
+ s.md5 = t, he.push(s);
137
+ }, Fe = ({
138
+ fileList: t
139
+ }) => {
140
+ if (n === "zip")
141
+ return;
142
+ ve(!0);
143
+ const s = t.filter((a) => a.size && a.size <= re ? oe.some((o) => a.type === o) : !1);
144
+ s.splice(100, s.length), s.length < h.length ? (Se(s), _++) : (T = T - _, _ = 0, T++, T == s.length && Se(s), T > s.length && (T = s.length));
145
+ }, $e = () => {
146
+ n === "zip" && (ae.current = !0), F(!1);
147
+ }, Qe = () => {
148
+ if (n === "image") {
149
+ if (!M)
150
+ return;
151
+ let t = 0, s = 0;
152
+ if (M.duplicated.length !== 0 && M.duplicated.map((a, o) => {
153
+ var C;
154
+ const d = M.duplicatedMd5[o], c = ((C = h.find((b) => {
155
+ var g;
156
+ return ((g = b.originFileObj) == null ? void 0 : g.md5) === d;
157
+ })) == null ? void 0 : C.name) || "";
158
+ ie.push({
159
+ labels: [],
160
+ fileKey: a,
161
+ sampleFileName: {
162
+ name: c
163
+ }
164
+ });
165
+ }), M.unduplicated.length !== 0) {
166
+ const a = M.unduplicated.map((o) => new Promise((d) => {
167
+ const c = he.find((B) => B.md5 === o);
168
+ if (!c)
169
+ return d();
170
+ const C = c.name, b = C.substring(C.indexOf(".")), g = Y.find((B) => B.name === C), P = {
171
+ "Content-Type": "application/octet-stream",
172
+ "X-Amz-Meta-Width": g == null ? void 0 : g.width,
173
+ "X-Amz-Meta-Height": g == null ? void 0 : g.height
174
+ }, j = `dataset/${i}/sample/${o}${jl(b)}`;
175
+ delete c.md5;
176
+ const $ = new FileReader();
177
+ $.readAsArrayBuffer(c), $.onload = (B) => {
178
+ I.initMinio({
179
+ endPoint: l == null ? void 0 : l.endpoints[0],
180
+ useSSL: l == null ? void 0 : l.useSSL,
181
+ accessKey: l == null ? void 0 : l.accessKey,
182
+ secretKey: l == null ? void 0 : l.secretKey
183
+ }), I.putObjectBuffer(V, j, B.target.result, P, (L, $l) => {
184
+ J(!0), s += 1, L && (t += 1, Ge(t)), Ke(s), ye.push({
185
+ labels: [],
186
+ fileKey: `${V}/${j}`,
187
+ sampleFileName: {
188
+ name: C
189
+ }
190
+ }), d();
191
+ });
192
+ };
193
+ }));
194
+ Promise.all(a).then(() => {
195
+ !i || !f || setTimeout(() => {
196
+ u == null || u.postDatasetsIdVersionsVidSamples(i, f.id, {
197
+ samples: ye.concat(ie)
198
+ }).then(() => {
199
+ u.getDatasetsIdVersionsVid(i, f.id).then((o) => {
200
+ be(o.samplesCount - f.samplesCount);
201
+ }), Q(!0), z && z(!1);
202
+ });
203
+ }, 100);
204
+ });
205
+ } else {
206
+ if (!i || !f)
207
+ return;
208
+ u == null || u.postDatasetsIdVersionsVidSamples(i, f.id, {
209
+ samples: ie
210
+ }).then(() => {
211
+ u.getDatasetsIdVersionsVid(i, f.id).then((a) => {
212
+ be(a.samplesCount - f.samplesCount);
213
+ }), Q(!0), z && z(!1);
214
+ });
215
+ }
216
+ } else
217
+ Ye(E);
218
+ }, Ye = (t) => {
219
+ !i || !f || t.map((s, a) => {
220
+ var b;
221
+ const o = {
222
+ "Content-Type": "application/octet-stream"
223
+ }, d = {
224
+ endPoint: l == null ? void 0 : l.endpoints[0],
225
+ useSSL: l == null ? void 0 : l.useSSL,
226
+ accessKey: l == null ? void 0 : l.accessKey,
227
+ secretKey: l == null ? void 0 : l.secretKey
228
+ }, c = (l == null ? void 0 : l.prefix) + ((b = t[0]) == null ? void 0 : b.name), C = new FileReader();
229
+ C.readAsArrayBuffer(s), C.onload = (g) => {
230
+ I.initMinio(d), I.putObjectBuffer(l == null ? void 0 : l.bucket, c, g.target.result, o, (P, j) => {
231
+ if (P)
232
+ console.log(P);
233
+ else {
234
+ if (ae.current)
235
+ return;
236
+ J(!0), u == null || u.postUploadPicsZip(i, f.id, Ue({
237
+ zipUrls: [(l == null ? void 0 : l.bucket) + "/" + c]
238
+ }, Z === "ocr" && {
239
+ type: k === "labeled" ? 1 : 0
240
+ })).then(($) => {
241
+ el($), qe($);
242
+ });
243
+ }
244
+ });
245
+ };
246
+ });
247
+ }, el = (t) => ce(void 0, null, function* () {
248
+ var s;
249
+ if (!(!i || !f || !u))
250
+ try {
251
+ const a = yield u.checkFileResult(i, f.id, {
252
+ taskId: t
253
+ }, 5e3, (o) => {
254
+ je(o);
255
+ });
256
+ a && Ze(JSON.parse(a));
257
+ } catch (a) {
258
+ if (((s = a.cause) == null ? void 0 : s.code) === -101) {
259
+ ke(!0);
260
+ return;
261
+ }
262
+ }
263
+ });
264
+ A(() => {
265
+ v && (je(100), le(!0));
266
+ }, [v]), A(() => {
267
+ se !== 0 && (Q(!1), z && z(!0));
268
+ }, [se]), A(() => {
269
+ W !== -1 && (le(!0), te(!1));
270
+ }, [W]);
271
+ const ll = () => {
272
+ Be(), le(!1), me && me();
273
+ }, Be = () => {
274
+ w(), J(!1), F(!1), ue && ue(), q && q();
275
+ }, tl = /* @__PURE__ */ p("div", {
276
+ children: [/* @__PURE__ */ e(Cl, {}), /* @__PURE__ */ e("div", {
277
+ style: {
278
+ marginTop: 8
279
+ },
280
+ children: "添加图片"
281
+ })]
282
+ }), sl = (t) => {
283
+ const s = E.filter((a) => a.uid !== t.uid);
284
+ we(s);
285
+ }, il = () => {
286
+ k === "labeled" ? window.location.href = `${fe}/%E6%A0%87%E6%B3%A8%E6%A0%BC%E5%BC%8F%E7%A4%BA%E4%BE%8B.zip` : window.location.href = `${fe}/%E7%A4%BA%E4%BE%8B%E5%8E%8B%E7%BC%A9%E5%8C%85.zip`;
287
+ }, nl = () => {
288
+ w(), ke(!1), J(!1), F(!1);
289
+ };
290
+ return A(() => {
291
+ xe === "labeled" && X.setFieldsValue({
292
+ labelFormat: "json",
293
+ acceptType: "zip"
294
+ /* Zip */
295
+ });
296
+ }, [xe]), /* @__PURE__ */ p(de, {
297
+ children: [/* @__PURE__ */ e(H, {
298
+ className: "upload-pics",
299
+ width: 600,
300
+ title: "导入数据",
301
+ open: D,
302
+ destroyOnClose: !0,
303
+ onCancel: () => $e(),
304
+ maskClosable: !1,
305
+ centered: !0,
306
+ footer: [/* @__PURE__ */ e(O, {
307
+ onClick: $e,
308
+ children: "取消"
309
+ }, "cancel"), /* @__PURE__ */ e(O, {
310
+ type: "primary",
311
+ htmlType: "submit",
312
+ form: "importModal",
313
+ disabled: n === "image" && !h.length || n === "zip" && !E.length || ee && ze == 0 || Je,
314
+ loading: K == !0,
315
+ onClick: () => {
316
+ Qe(), te(!0);
317
+ },
318
+ children: "导入"
319
+ }, "confirm")],
320
+ children: /* @__PURE__ */ p(U, {
321
+ className: "file-form",
322
+ preserve: !1,
323
+ form: X,
324
+ initialValues: {
325
+ acceptType: "image",
326
+ labelState: "unlabeled"
327
+ /* Unlabeled */
328
+ },
329
+ name: "modal",
330
+ labelAlign: "left",
331
+ labelCol: {
332
+ style: {
333
+ width: 110
334
+ }
335
+ },
336
+ children: [Z === "ocr" && /* @__PURE__ */ e(U.Item, {
337
+ label: "数据标注状态",
338
+ name: "labelState",
339
+ rules: [{
340
+ required: !0,
341
+ message: "请选择数据标注状态"
342
+ }],
343
+ children: /* @__PURE__ */ p(R.Group, {
344
+ disabled: K,
345
+ onChange: (t) => {
346
+ We(t.target.value);
347
+ },
348
+ children: [/* @__PURE__ */ e(R, {
349
+ value: "unlabeled",
350
+ children: "无标注信息"
351
+ }), /* @__PURE__ */ e(R, {
352
+ value: "labeled",
353
+ children: "有标注信息"
354
+ })]
355
+ })
356
+ }), k === "labeled" && /* @__PURE__ */ e(U.Item, {
357
+ label: "标注格式",
358
+ name: "labelFormat",
359
+ rules: [{
360
+ required: !0,
361
+ message: "请选择标注格式"
362
+ }],
363
+ children: /* @__PURE__ */ e(R.Group, {
364
+ disabled: K,
365
+ children: /* @__PURE__ */ e(R, {
366
+ value: "json",
367
+ children: "json"
368
+ })
369
+ })
370
+ }), /* @__PURE__ */ e(U.Item, {
371
+ label: "导入方式",
372
+ name: "acceptType",
373
+ rules: [{
374
+ required: !0,
375
+ message: "请选择导入方式"
376
+ }],
377
+ children: /* @__PURE__ */ p(R.Group, {
378
+ disabled: K,
379
+ children: [k !== "labeled" && /* @__PURE__ */ e(R.Button, {
380
+ value: "image",
381
+ children: "上传图片"
382
+ }), /* @__PURE__ */ e(R.Button, {
383
+ value: "zip",
384
+ children: "上传压缩包"
385
+ })]
386
+ })
387
+ }), /* @__PURE__ */ p("div", {
388
+ className: "file-upload",
389
+ children: [(n === "image" && !h.length || n === "zip") && /* @__PURE__ */ p(yl, {
390
+ name: "file",
391
+ showUploadList: !1,
392
+ multiple: !0,
393
+ beforeUpload: Re,
394
+ accept: n === "zip" ? ".zip" : "image/png, image/jpeg, image/jpg, image/bmp",
395
+ maxCount: n === "zip" ? 1 : void 0,
396
+ onChange: Fe,
397
+ disabled: n === "zip" ? E.length === 1 : !1,
398
+ children: [/* @__PURE__ */ e("span", {
399
+ className: "file-upload-icon",
400
+ children: /* @__PURE__ */ e(fl, {})
401
+ }), /* @__PURE__ */ p(Oe, {
402
+ className: "file-upload-action",
403
+ children: [n === "image" && "拖拽图片至此,或者", n === "zip" && "拖拽包含“图片”的压缩包至此,或者", /* @__PURE__ */ e(O, {
404
+ type: "link",
405
+ style: {
406
+ padding: 0
407
+ },
408
+ disabled: n === "zip" ? E.length === 1 : !1,
409
+ children: n === "image" ? "上传图片" : "上传压缩包"
410
+ })]
411
+ }), n === "image" && /* @__PURE__ */ p("div", {
412
+ className: "file-upload-desc",
413
+ style: {
414
+ width: 350
415
+ },
416
+ children: [/* @__PURE__ */ e("div", {
417
+ className: "item-upload-desc item-upload-desc__1",
418
+ children: "1. 支持jpg、png 、jpeg 、bmp格式,单张图片不超过14M;"
419
+ }), /* @__PURE__ */ e("div", {
420
+ className: "item-upload-desc",
421
+ children: "2. 单次上传最多可选择100个文件。"
422
+ })]
423
+ }), n === "zip" && /* @__PURE__ */ p("div", {
424
+ className: "file-upload-desc",
425
+ style: {
426
+ width: 350
427
+ },
428
+ children: [/* @__PURE__ */ e("div", {
429
+ className: "item-upload-desc item-upload-desc__1",
430
+ children: "1. 仅支持.zip格式,单个压缩包不超过2G;"
431
+ }), k === "labeled" ? /* @__PURE__ */ p(de, {
432
+ children: [/* @__PURE__ */ e("div", {
433
+ className: "item-upload-desc",
434
+ children: "2. 压缩包内每张图片(jpg、png 、jpeg 、bmp格式)需要对应一个json文件,名称需一致,位置处在一级目录下;"
435
+ }), /* @__PURE__ */ e("div", {
436
+ className: "item-upload-desc",
437
+ children: "3. json文件需包含标签、4点坐标,格式可参考样例。"
438
+ })]
439
+ }) : /* @__PURE__ */ e("div", {
440
+ className: "item-upload-desc",
441
+ children: "2. 压缩包内图片格式要求为:图片类型为jpg/png/bmp/jpeg,单张图片不超过14M;"
442
+ }), /* @__PURE__ */ p("div", {
443
+ className: "item-upload-desc",
444
+ children: [k === "labeled" ? 4 : 3, ". 单次仅可上传1个文件。"]
445
+ })]
446
+ })]
447
+ }), n === "image" && h.length ? /* @__PURE__ */ e("div", {
448
+ className: "picture-upload",
449
+ children: /* @__PURE__ */ e(pl, {
450
+ listType: "picture-card",
451
+ fileList: h,
452
+ multiple: !0,
453
+ showUploadList: {
454
+ showPreviewIcon: !1
455
+ },
456
+ beforeUpload: Re,
457
+ accept: "image/png, image/jpeg, image/jpg, image/bmp",
458
+ onChange: Fe,
459
+ children: h.length < 100 ? tl : null
460
+ })
461
+ }) : /* @__PURE__ */ e(de, {}), n === "zip" && /* @__PURE__ */ p("div", {
462
+ className: "upload-wrapper",
463
+ children: [E != null && E.length ? /* @__PURE__ */ e("div", {
464
+ className: "upload-main",
465
+ children: /* @__PURE__ */ e(pe, {
466
+ gutter: [24, 8],
467
+ className: "upload-pannel",
468
+ children: E.map((t) => /* @__PURE__ */ e(ul, {
469
+ span: 24,
470
+ className: "upload-item",
471
+ children: /* @__PURE__ */ p(pe, {
472
+ justify: "space-between",
473
+ align: "middle",
474
+ children: [/* @__PURE__ */ p(pe, {
475
+ align: "middle",
476
+ children: [/* @__PURE__ */ e("span", {
477
+ className: "upload-item-file-icon",
478
+ children: /* @__PURE__ */ e(hl, {})
479
+ }), /* @__PURE__ */ e("span", {
480
+ className: "upload-item-name",
481
+ children: t.name
482
+ })]
483
+ }), /* @__PURE__ */ e(O, {
484
+ className: "upload-item-upload-delete",
485
+ type: "link",
486
+ disabled: K,
487
+ onClick: () => sl(t),
488
+ children: /* @__PURE__ */ e(gl, {})
489
+ })]
490
+ })
491
+ }, t.uid))
492
+ })
493
+ }) : null, n === "zip" && /* @__PURE__ */ p("div", {
494
+ className: "upload-example",
495
+ children: [/* @__PURE__ */ e("div", {
496
+ className: "upload-example-header",
497
+ children: /* @__PURE__ */ p(Oe, {
498
+ children: [/* @__PURE__ */ e("span", {
499
+ children: "数据示例:"
500
+ }), /* @__PURE__ */ e(O, {
501
+ size: "small",
502
+ type: "link",
503
+ style: {
504
+ padding: 0
505
+ },
506
+ onClick: (t) => {
507
+ t.stopPropagation(), il();
508
+ },
509
+ children: "下载示例 >"
510
+ })]
511
+ })
512
+ }), /* @__PURE__ */ e("div", {
513
+ className: "upload-example-main",
514
+ children: /* @__PURE__ */ e("img", {
515
+ src: k === "labeled" ? Sl : Nl
516
+ })
517
+ })]
518
+ })]
519
+ })]
520
+ })]
521
+ })
522
+ }), ee && /* @__PURE__ */ e(H, {
523
+ className: "uploading-modal",
524
+ width: 404,
525
+ title: null,
526
+ open: ee,
527
+ maskClosable: !1,
528
+ closable: n !== "image",
529
+ onCancel: () => {
530
+ Be();
531
+ },
532
+ footer: null,
533
+ children: /* @__PURE__ */ e("div", {
534
+ className: "upload-spin",
535
+ children: /* @__PURE__ */ e(ml, {
536
+ tip: n === "image" ? `数据导入中(${se}/${h.length}),请耐心等待` : `处理中(${ze}/100%),请耐心等待`,
537
+ size: "large",
538
+ children: /* @__PURE__ */ e("div", {
539
+ className: "content"
540
+ })
541
+ })
542
+ })
543
+ }), ge && /* @__PURE__ */ e(H, {
544
+ className: "result",
545
+ width: 424,
546
+ title: null,
547
+ open: ge,
548
+ closable: !1,
549
+ footer: null,
550
+ children: /* @__PURE__ */ e("div", {
551
+ className: "upload-result",
552
+ children: /* @__PURE__ */ e(Te, {
553
+ status: "success",
554
+ title: n === "image" ? `数据导入完成,成功${W}个,失败${Ce}个,去重${h.length - W - Ce}个` : v && `数据导入完成,格式不符合的图片${v.formatErrorCount || 0}个,成功${v.successCount || 0}个,去重${v.repeatCount || 0}个,失败${v.failedCount || 0}个` + (k === "labeled" ? `(Json格式不符合${v.labelErrorCount}个)` : ""),
555
+ extra: [/* @__PURE__ */ e(O, {
556
+ onClick: ll,
557
+ children: "关闭"
558
+ }, "close")]
559
+ })
560
+ })
561
+ }), Ee && /* @__PURE__ */ e(H, {
562
+ className: "result",
563
+ width: 424,
564
+ title: null,
565
+ open: Ee,
566
+ closable: !1,
567
+ footer: null,
568
+ children: /* @__PURE__ */ e("div", {
569
+ className: "upload-result",
570
+ children: /* @__PURE__ */ e(Te, {
571
+ status: "error",
572
+ title: "文件处理失败",
573
+ extra: [/* @__PURE__ */ e(O, {
574
+ onClick: nl,
575
+ children: "关闭"
576
+ }, "close")]
577
+ })
578
+ })
579
+ })]
580
+ });
581
+ };
582
+ export {
583
+ Jl as default
584
+ };
@@ -0,0 +1,4 @@
1
+ const M = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUxIiBoZWlnaHQ9IjEyMCIgdmlld0JveD0iMCAwIDI1MSAxMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuNjI4NiAzOS4yMzgyQzE3Ljg2NzEgMzkuMTQyOCAxOC4xMzMgMzkuMTQyOCAxOC4zNzE0IDM5LjIzODJMMzQuNTE0MiA0NS42OTUzQzM1LjIxMDIgNDUuOTczNyAzNS42NjY3IDQ2LjY0NzggMzUuNjY2NyA0Ny4zOTc1VjcxQzM1LjY2NjcgNzIuMDEyNSAzNC44NDU5IDcyLjgzMzMgMzMuODMzNCA3Mi44MzMzSDIuMTY2NzFDMS4xNTQyIDcyLjgzMzMgMC4zMzMzNzQgNzIuMDEyNiAwLjMzMzM3NCA3MVY0Ny4zOTc1QzAuMzMzMzc0IDQ2LjY0NzkgMC43ODk3MjQgNDUuOTczNyAxLjQ4NTgyIDQ1LjY5NTRMMTcuNjI4NiAzOS4yMzgyWk0xOCA0MS4yNDM3TDIuMzMzMzcgNDcuNTEwNFY3MC44MzMzSDMzLjY2NjdWNDcuNTEwNEwxOCA0MS4yNDM3WiIgZmlsbD0iIzMzMzMzMyIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE4IDUzLjMzMzNDMTguNTUyMyA1My4zMzMzIDE5IDUzLjc4MTEgMTkgNTQuMzMzM1Y2Mi42NjY3QzE5IDYzLjIxOSAxOC41NTIzIDYzLjY2NjcgMTggNjMuNjY2N0MxNy40NDc4IDYzLjY2NjcgMTcgNjMuMjE5IDE3IDYyLjY2NjdWNTQuMzMzM0MxNyA1My43ODExIDE3LjQ0NzggNTMuMzMzMyAxOCA1My4zMzMzWiIgZmlsbD0iIzMzMzMzMyIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIyIDU0LjU4MzNDMjIgNTMuODkzIDIyLjU1OTcgNTMuMzMzMyAyMy4yNSA1My4zMzMzSDI1LjVDMjcuMjU0NiA1My4zMzMzIDI5IDU0LjU1MDggMjkgNTYuNDE2N0MyOSA1OC4yODI1IDI3LjI1NDYgNTkuNSAyNS41IDU5LjVDMjMuNzQ1NSA1OS41IDIyIDU4LjI4MjUgMjIgNTYuNDE2N1Y1NC41ODMzWk0yNCA1NS4zMzMzVjU2LjQxNjdDMjQgNTYuODUyIDI0LjQ5MzEgNTcuNSAyNS41IDU3LjVDMjYuNTA3IDU3LjUgMjcgNTYuODUyIDI3IDU2LjQxNjdDMjcgNTUuOTgxMyAyNi41MDcgNTUuMzMzMyAyNS41IDU1LjMzMzNIMjRaIiBmaWxsPSIjMzMzMzMzIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjMgNTMuMzMzM0MyMy41NTIzIDUzLjMzMzMgMjQgNTMuNzgxMSAyNCA1NC4zMzMzVjYyLjY2NjdDMjQgNjMuMjE5IDIzLjU1MjMgNjMuNjY2NyAyMyA2My42NjY3QzIyLjQ0NzggNjMuNjY2NyAyMiA2My4yMTkgMjIgNjIuNjY2N1Y1NC4zMzMzQzIyIDUzLjc4MTEgMjIuNDQ3OCA1My4zMzMzIDIzIDUzLjMzMzNaIiBmaWxsPSIjMzMzMzMzIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNy4wMDAwNCA1NC4zMzMzQzcuMDAwMDQgNTMuNzgxMSA3LjQ0Nzc2IDUzLjMzMzMgOC4wMDAwNCA1My4zMzMzSDEzLjAwMzlDMTMuMzY0MiA1My4zMzMzIDEzLjY5NjcgNTMuNTI3MiAxMy44NzQyIDUzLjg0MDhDMTQuMDUxNiA1NC4xNTQ0IDE0LjA0NjcgNTQuNTM5MiAxMy44NjEyIDU0Ljg0ODFMOS43NjY5OSA2MS42NjYxSDEzLjAwMzlDMTMuNTU2MiA2MS42NjYxIDE0LjAwMzkgNjIuMTEzOCAxNC4wMDM5IDYyLjY2NjFDMTQuMDAzOSA2My4yMTg0IDEzLjU1NjIgNjMuNjY2MSAxMy4wMDM5IDYzLjY2NjFIOC4wMDAwNEM3LjYzOTcgNjMuNjY2MSA3LjMwNzIzIDYzLjQ3MjIgNy4xMjk3NSA2My4xNTg2QzYuOTUyMjcgNjIuODQ1IDYuOTU3MjMgNjIuNDYwMiA3LjE0Mjc0IDYyLjE1MTNMMTEuMjM2OSA1NS4zMzMzSDguMDAwMDRDNy40NDc3NiA1NS4zMzMzIDcuMDAwMDQgNTQuODg1NiA3LjAwMDA0IDU0LjMzMzNaIiBmaWxsPSIjMzMzMzMzIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjE5LjgzMyAyQzIxOS40NjUgMiAyMTkuMTY3IDIuMjk4NDggMjE5LjE2NyAyLjY2NjY3VjIwLjI1MjVMMjI1Ljc5MyAxMy42MjYyQzIyNi4xNTMgMTMuMjY1OSAyMjYuNzI3IDEzLjIzNDIgMjI3LjEyNSAxMy41NTI1TDIzMC41MzcgMTYuMjgxOUwyMzQuOTA3IDExLjE4MjVDMjM1LjI1MyAxMC43Nzk3IDIzNS44NTMgMTAuNzE2NiAyMzYuMjc0IDExLjAzOUwyNDguODMzIDIwLjY0MzFWMi42NjY2N0MyNDguODMzIDIuMjk4NDcgMjQ4LjUzNSAyIDI0OC4xNjcgMkgyMTkuODMzWk0yNTAuODMzIDIuNjY2NjdDMjUwLjgzMyAxLjE5MzkyIDI0OS42MzkgMCAyNDguMTY3IDBIMjE5LjgzM0MyMTguMzYxIDAgMjE3LjE2NyAxLjE5MzkxIDIxNy4xNjcgMi42NjY2N1YyNkMyMTcuMTY3IDI3LjQ3MjggMjE4LjM2MSAyOC42NjY3IDIxOS44MzMgMjguNjY2N0gyNDguMTY3QzI0OS42MzkgMjguNjY2NyAyNTAuODMzIDI3LjQ3MjggMjUwLjgzMyAyNlYyLjY2NjY3Wk0yNDguODMzIDIzLjE2MDhMMjM1LjgxMSAxMy4yMDIyTDIzMS40MjYgMTguMzE3NUMyMzEuMDc1IDE4LjcyNjggMjMwLjQ2MyAxOC43ODQzIDIzMC4wNDIgMTguNDQ3NUwyMjYuNTc0IDE1LjY3MzNMMjE5LjE2NyAyMy4wODA5VjI2QzIxOS4xNjcgMjYuMzY4MiAyMTkuNDY1IDI2LjY2NjcgMjE5LjgzMyAyNi42NjY3SDI0OC4xNjdDMjQ4LjUzNSAyNi42NjY3IDI0OC44MzMgMjYuMzY4MiAyNDguODMzIDI2VjIzLjE2MDhaTTIyMy44MzMgOC4wODMzM0MyMjMuODMzIDYuODQwNzIgMjI0Ljg0MSA1LjgzMzMzIDIyNi4wODMgNS44MzMzM0MyMjcuMzI2IDUuODMzMzMgMjI4LjMzMyA2Ljg0MDcyIDIyOC4zMzMgOC4wODMzM0MyMjguMzMzIDkuMzI1OTUgMjI3LjMyNiAxMC4zMzMzIDIyNi4wODMgMTAuMzMzM0MyMjQuODQxIDEwLjMzMzMgMjIzLjgzMyA5LjMyNTk1IDIyMy44MzMgOC4wODMzM1pNMjI2LjA4MyA3LjgzMzMzQzIyNS45NDUgNy44MzMzMyAyMjUuODMzIDcuOTQ1MjkgMjI1LjgzMyA4LjA4MzMzQzIyNS44MzMgOC4yMjEzOCAyMjUuOTQ1IDguMzMzMzMgMjI2LjA4MyA4LjMzMzMzQzIyNi4yMjEgOC4zMzMzMyAyMjYuMzMzIDguMjIxMzggMjI2LjMzMyA4LjA4MzMzQzIyNi4zMzMgNy45NDUyOCAyMjYuMjIxIDcuODMzMzMgMjI2LjA4MyA3LjgzMzMzWk0yMTkuODMzIDQ1QzIxOS40NjUgNDUgMjE5LjE2NyA0NS4yOTg1IDIxOS4xNjcgNDUuNjY2N1Y2My4yNTI0TDIyNS43OTMgNTYuNjI2MkMyMjYuMTUzIDU2LjI2NTkgMjI2LjcyNyA1Ni4yMzQxIDIyNy4xMjUgNTYuNTUyNUwyMzAuNTM3IDU5LjI4MTlMMjM0LjkwNyA1NC4xODI1QzIzNS4yNTMgNTMuNzc5NyAyMzUuODUzIDUzLjcxNjYgMjM2LjI3NCA1NC4wMzlMMjQ4LjgzMyA2My42NDMxVjQ1LjY2NjdDMjQ4LjgzMyA0NS4yOTg1IDI0OC41MzUgNDUgMjQ4LjE2NyA0NUgyMTkuODMzWk0yNTAuODMzIDQ1LjY2NjdDMjUwLjgzMyA0NC4xOTM5IDI0OS42MzkgNDMgMjQ4LjE2NyA0M0gyMTkuODMzQzIxOC4zNjEgNDMgMjE3LjE2NyA0NC4xOTM5IDIxNy4xNjcgNDUuNjY2N1Y2OUMyMTcuMTY3IDcwLjQ3MjggMjE4LjM2MSA3MS42NjY3IDIxOS44MzMgNzEuNjY2N0gyNDguMTY3QzI0OS42MzkgNzEuNjY2NyAyNTAuODMzIDcwLjQ3MjggMjUwLjgzMyA2OVY0NS42NjY3Wk0yNDguODMzIDY2LjE2MDhMMjM1LjgxMSA1Ni4yMDIyTDIzMS40MjYgNjEuMzE3NUMyMzEuMDc1IDYxLjcyNjggMjMwLjQ2MyA2MS43ODQzIDIzMC4wNDIgNjEuNDQ3NUwyMjYuNTc0IDU4LjY3MzNMMjE5LjE2NyA2Ni4wODA5VjY5QzIxOS4xNjcgNjkuMzY4MiAyMTkuNDY1IDY5LjY2NjcgMjE5LjgzMyA2OS42NjY3SDI0OC4xNjdDMjQ4LjUzNSA2OS42NjY3IDI0OC44MzMgNjkuMzY4MiAyNDguODMzIDY5VjY2LjE2MDhaTTIyMy44MzMgNTEuMDgzM0MyMjMuODMzIDQ5Ljg0MDcgMjI0Ljg0MSA0OC44MzMzIDIyNi4wODMgNDguODMzM0MyMjcuMzI2IDQ4LjgzMzMgMjI4LjMzMyA0OS44NDA3IDIyOC4zMzMgNTEuMDgzM0MyMjguMzMzIDUyLjMyNiAyMjcuMzI2IDUzLjMzMzMgMjI2LjA4MyA1My4zMzMzQzIyNC44NDEgNTMuMzMzMyAyMjMuODMzIDUyLjMyNiAyMjMuODMzIDUxLjA4MzNaTTIyNi4wODMgNTAuODMzM0MyMjUuOTQ1IDUwLjgzMzMgMjI1LjgzMyA1MC45NDUzIDIyNS44MzMgNTEuMDgzM0MyMjUuODMzIDUxLjIyMTQgMjI1Ljk0NSA1MS4zMzMzIDIyNi4wODMgNTEuMzMzM0MyMjYuMjIxIDUxLjMzMzMgMjI2LjMzMyA1MS4yMjE0IDIyNi4zMzMgNTEuMDgzM0MyMjYuMzMzIDUwLjk0NTMgMjI2LjIyMSA1MC44MzMzIDIyNi4wODMgNTAuODMzM1pNMjE5LjgzMyA5Mi4zMzMzQzIxOS40NjUgOTIuMzMzMyAyMTkuMTY3IDkyLjYzMTggMjE5LjE2NyA5M1YxMTAuNTg2TDIyNS43OTMgMTAzLjk2QzIyNi4xNTMgMTAzLjU5OSAyMjYuNzI3IDEwMy41NjcgMjI3LjEyNSAxMDMuODg2TDIzMC41MzcgMTA2LjYxNUwyMzQuOTA3IDEwMS41MTZDMjM1LjI1MyAxMDEuMTEzIDIzNS44NTMgMTAxLjA1IDIzNi4yNzQgMTAxLjM3MkwyNDguODMzIDExMC45NzZWOTNDMjQ4LjgzMyA5Mi42MzE4IDI0OC41MzUgOTIuMzMzMyAyNDguMTY3IDkyLjMzMzNIMjE5LjgzM1pNMjUwLjgzMyA5M0MyNTAuODMzIDkxLjUyNzMgMjQ5LjY0IDkwLjMzMzMgMjQ4LjE2NyA5MC4zMzMzSDIxOS44MzNDMjE4LjM2MSA5MC4zMzMzIDIxNy4xNjcgOTEuNTI3MiAyMTcuMTY3IDkzVjExMi45NDdDMjE3LjA1OSAxMTMuMTEgMjE3IDExMy4zMDIgMjE3IDExMy41VjExNi44MzNDMjE3IDExOC4zMDYgMjE4LjE5NCAxMTkuNSAyMTkuNjY3IDExOS41SDI0OEMyNDkuMjcgMTE5LjUgMjUwLjMzMyAxMTguNjEyIDI1MC42MDEgMTE3LjQyM0MyNTAuNzUgMTE3LjA5IDI1MC44MzMgMTE2LjcyMiAyNTAuODMzIDExNi4zMzNWOTNaTTIxOS4xNjcgMTEzLjc0OFYxMTYuMzMzQzIxOS4xNjcgMTE2LjcwMiAyMTkuNDY1IDExNyAyMTkuODMzIDExN0gyNDguMTY3QzI0OC4zNjYgMTE3IDI0OC41NDUgMTE2LjkxMyAyNDguNjY3IDExNi43NzRWMTEzLjk5NEwyMzUuNjQ0IDEwNC4wMzVMMjMxLjI1OSAxMDkuMTUxQzIzMC45MDggMTA5LjU2IDIzMC4yOTYgMTA5LjYxOCAyMjkuODc1IDEwOS4yODFMMjI2LjQwOCAxMDYuNTA3TDIxOS4xNjcgMTEzLjc0OFpNMjIzLjgzMyA5OC40MTY2QzIyMy44MzMgOTcuMTc0IDIyNC44NDEgOTYuMTY2NiAyMjYuMDgzIDk2LjE2NjZDMjI3LjMyNiA5Ni4xNjY2IDIyOC4zMzMgOTcuMTc0IDIyOC4zMzMgOTguNDE2NkMyMjguMzMzIDk5LjY1OTMgMjI3LjMyNiAxMDAuNjY3IDIyNi4wODMgMTAwLjY2N0MyMjQuODQxIDEwMC42NjcgMjIzLjgzMyA5OS42NTkzIDIyMy44MzMgOTguNDE2NlpNMjI2LjA4MyA5OC4xNjY2QzIyNS45NDUgOTguMTY2NiAyMjUuODMzIDk4LjI3ODYgMjI1LjgzMyA5OC40MTY2QzIyNS44MzMgOTguNTU0NyAyMjUuOTQ1IDk4LjY2NjYgMjI2LjA4MyA5OC42NjY2QzIyNi4yMjEgOTguNjY2NiAyMjYuMzMzIDk4LjU1NDcgMjI2LjMzMyA5OC40MTY2QzIyNi4zMzMgOTguMjc4NiAyMjYuMjIxIDk4LjE2NjYgMjI2LjA4MyA5OC4xNjY2WiIgZmlsbD0iIzMzMzMzMyIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEwNi4wMTEgMTA3LjAxMUwxMDYgMTA4TDEwNSAxMDcuOTg5TDEwNS4wMTEgMTA3TDEwNi4wMTEgMTA3LjAxMVpNMTA2LjA1NCAxMDMuMDU0TDEwNi4wMzMgMTA1LjAzM0wxMDUuMDMzIDEwNS4wMjJMMTA1LjA1NCAxMDMuMDQzTDEwNi4wNTQgMTAzLjA1NFpNMTA2LjA5OCA5OS4wOTc4TDEwNi4wNzYgMTAxLjA3NkwxMDUuMDc2IDEwMS4wNjVMMTA1LjA5OCA5OS4wODY4TDEwNi4wOTggOTkuMDk3OFpNMTA2LjE0MSA5NS4xNDEzTDEwNi4xMiA5Ny4xMTk2TDEwNS4xMiA5Ny4xMDg2TDEwNS4xNDEgOTUuMTMwM0wxMDYuMTQxIDk1LjE0MTNaTTEwNi4xODUgOTEuMTg0OEwxMDYuMTYzIDkzLjE2M0wxMDUuMTYzIDkzLjE1MjFMMTA1LjE4NSA5MS4xNzM4TDEwNi4xODUgOTEuMTg0OFpNMTA2LjIyOCA4Ny4yMjgzTDEwNi4yMDcgODkuMjA2NUwxMDUuMjA3IDg5LjE5NTVMMTA1LjIyOCA4Ny4yMTczTDEwNi4yMjggODcuMjI4M1pNMTA2LjI3MiA4My4yNzE3TDEwNi4yNSA4NS4yNUwxMDUuMjUgODUuMjM5TDEwNS4yNzIgODMuMjYwN0wxMDYuMjcyIDgzLjI3MTdaTTEwNi4zMTUgNzkuMzE1MkwxMDYuMjk0IDgxLjI5MzVMMTA1LjI5NCA4MS4yODI1TDEwNS4zMTUgNzkuMzA0MkwxMDYuMzE1IDc5LjMxNTJaTTEwNi4zNTkgNzUuMzU4N0wxMDYuMzM3IDc3LjMzN0wxMDUuMzM3IDc3LjMyNkwxMDUuMzU5IDc1LjM0NzdMMTA2LjM1OSA3NS4zNTg3Wk0xMDYuNDAyIDcxLjQwMjJMMTA2LjM4IDczLjM4MDRMMTA1LjM4MSA3My4zNjk0TDEwNS40MDIgNzEuMzkxMkwxMDYuNDAyIDcxLjQwMjJaTTEwNi40NDYgNjcuNDQ1NkwxMDYuNDI0IDY5LjQyMzlMMTA1LjQyNCA2OS40MTI5TDEwNS40NDYgNjcuNDM0N0wxMDYuNDQ2IDY3LjQ0NTZaTTEwNi40ODkgNjMuNDg5MUwxMDYuNDY3IDY1LjQ2NzRMMTA1LjQ2NyA2NS40NTY0TDEwNS40ODkgNjMuNDc4MUwxMDYuNDg5IDYzLjQ4OTFaTTEwNi41MzMgNTkuNTMyNkwxMDYuNTExIDYxLjUxMDlMMTA1LjUxMSA2MS40OTk5TDEwNS41MzMgNTkuNTIxNkwxMDYuNTMzIDU5LjUzMjZaTTEwNi41NzYgNTUuNTc2MUwxMDYuNTU0IDU3LjU1NDNMMTA1LjU1NCA1Ny41NDMzTDEwNS41NzYgNTUuNTY1MUwxMDYuNTc2IDU1LjU3NjFaTTEwNi42MiA1MS42MTk1TDEwNi41OTggNTMuNTk3OEwxMDUuNTk4IDUzLjU4NjhMMTA1LjYyIDUxLjYwODZMMTA2LjYyIDUxLjYxOTVaTTEwNi42NjMgNDcuNjYzTDEwNi42NDEgNDkuNjQxM0wxMDUuNjQxIDQ5LjYzMDNMMTA1LjY2MyA0Ny42NTJMMTA2LjY2MyA0Ny42NjNaTTEwNi43MDcgNDMuNzA2NUwxMDYuNjg1IDQ1LjY4NDhMMTA1LjY4NSA0NS42NzM4TDEwNS43MDcgNDMuNjk1NUwxMDYuNzA3IDQzLjcwNjVaTTEwNi43NSAzOS43NUwxMDYuNzI4IDQxLjcyODJMMTA1LjcyOCA0MS43MTczTDEwNS43NSAzOS43MzlMMTA2Ljc1IDM5Ljc1Wk0xMDYuNzk0IDM1Ljc5MzVMMTA2Ljc3MiAzNy43NzE3TDEwNS43NzIgMzcuNzYwN0wxMDUuNzk0IDM1Ljc4MjVMMTA2Ljc5NCAzNS43OTM1Wk0xMDYuODM3IDMxLjgzNjlMMTA2LjgxNSAzMy44MTUyTDEwNS44MTUgMzMuODA0MkwxMDUuODM3IDMxLjgyNkwxMDYuODM3IDMxLjgzNjlaTTEwNi44OCAyNy44ODA0TDEwNi44NTkgMjkuODU4N0wxMDUuODU5IDI5Ljg0NzdMMTA1Ljg4MSAyNy44Njk0TDEwNi44OCAyNy44ODA0Wk0xMDYuOTI0IDIzLjkyMzlMMTA2LjkwMiAyNS45MDIyTDEwNS45MDIgMjUuODkxMkwxMDUuOTI0IDIzLjkxMjlMMTA2LjkyNCAyMy45MjM5Wk0xMDYuOTY3IDE5Ljk2NzRMMTA2Ljk0NiAyMS45NDU3TDEwNS45NDYgMjEuOTM0N0wxMDUuOTY3IDE5Ljk1NjRMMTA2Ljk2NyAxOS45Njc0Wk0xMDcgMTdMMTA2Ljk4OSAxNy45ODkxTDEwNS45ODkgMTcuOTc4MUwxMDYgMTYuOTg5TDEwNyAxN1oiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTk1LjM0OSA2Mi42NDJDMTk1LjU0NyA2Mi44MzQ3IDE5NS41NTEgNjMuMTUxMyAxOTUuMzU4IDYzLjM0OUwxOTIuMjE3IDY2LjU3MTNDMTkyLjAyNCA2Ni43NjkgMTkxLjcwOCA2Ni43NzMgMTkxLjUxIDY2LjU4MDNDMTkxLjMxMiA2Ni4zODc1IDE5MS4zMDggNjYuMDcxIDE5MS41MDEgNjUuODczMkwxOTMuOTk3IDYzLjMxMjJMMTkzLjk5IDYyLjcxMzRMMTkxLjQyOSA2MC4yMTY4QzE5MS4yMzEgNjAuMDI0MSAxOTEuMjI3IDU5LjcwNzUgMTkxLjQyIDU5LjUwOThDMTkxLjYxMyA1OS4zMTIgMTkxLjkyOSA1OS4zMDggMTkyLjEyNyA1OS41MDA4TDE5NS4zNDkgNjIuNjQyWk0xODkuOTYyIDYyLjU2NDFMMTkxLjk3NCA2Mi41Mzg1TDE5MS45ODcgNjMuNTM4NEwxODkuOTc0IDYzLjU2NEwxODkuOTYyIDYyLjU2NDFaTTE4NS45MzYgNjIuNjE1NEwxODcuOTQ5IDYyLjU4OThMMTg3Ljk2MiA2My41ODk3TDE4NS45NDkgNjMuNjE1M0wxODUuOTM2IDYyLjYxNTRaTTE4MS45MSA2Mi42NjY3TDE4My45MjMgNjIuNjQxMUwxODMuOTM2IDYzLjY0MUwxODEuOTIzIDYzLjY2NjZMMTgxLjkxIDYyLjY2NjdaTTE3Ny44ODUgNjIuNzE4TDE3OS44OTggNjIuNjkyM0wxNzkuOTEgNjMuNjkyM0wxNzcuODk3IDYzLjcxNzlMMTc3Ljg4NSA2Mi43MThaTTE3My44NTkgNjIuNzY5M0wxNzUuODcyIDYyLjc0MzZMMTc1Ljg4NSA2My43NDM1TDE3My44NzIgNjMuNzY5MkwxNzMuODU5IDYyLjc2OTNaTTE2OS44MzMgNjIuODIwNUwxNzEuODQ2IDYyLjc5NDlMMTcxLjg1OSA2My43OTQ4TDE2OS44NDYgNjMuODIwNUwxNjkuODMzIDYyLjgyMDVaTTE2NS44MDggNjIuODcxOEwxNjcuODIxIDYyLjg0NjJMMTY3LjgzMyA2My44NDYxTDE2NS44MjEgNjMuODcxN0wxNjUuODA4IDYyLjg3MThaTTE2MS43ODIgNjIuOTIzMUwxNjMuNzk1IDYyLjg5NzVMMTYzLjgwOCA2My44OTc0TDE2MS43OTUgNjMuOTIzTDE2MS43ODIgNjIuOTIzMVpNMTU3Ljc1NyA2Mi45NzQ0TDE1OS43NjkgNjIuOTQ4N0wxNTkuNzgyIDYzLjk0ODdMMTU3Ljc2OSA2My45NzQzTDE1Ny43NTcgNjIuOTc0NFpNMTUzLjczMSA2My4wMjU3TDE1NS43NDQgNjNMMTU1Ljc1NiA2My45OTk5TDE1My43NDQgNjQuMDI1NkwxNTMuNzMxIDYzLjAyNTdaTTE0OS43MDUgNjMuMDc3TDE1MS43MTggNjMuMDUxM0wxNTEuNzMxIDY0LjA1MTJMMTQ5LjcxOCA2NC4wNzY5TDE0OS43MDUgNjMuMDc3Wk0xNDUuNjggNjMuMTI4MkwxNDcuNjkyIDYzLjEwMjZMMTQ3LjcwNSA2NC4xMDI1TDE0NS42OTIgNjQuMTI4MkwxNDUuNjggNjMuMTI4MlpNMTQxLjY1NCA2My4xNzk1TDE0My42NjcgNjMuMTUzOUwxNDMuNjggNjQuMTUzOEwxNDEuNjY3IDY0LjE3OTRMMTQxLjY1NCA2My4xNzk1Wk0xMzcuNjI4IDYzLjIzMDhMMTM5LjY0MSA2My4yMDUyTDEzOS42NTQgNjQuMjA1MUwxMzcuNjQxIDY0LjIzMDdMMTM3LjYyOCA2My4yMzA4Wk0xMzMuNjAzIDYzLjI4MjFMMTM1LjYxNSA2My4yNTY0TDEzNS42MjggNjQuMjU2NEwxMzMuNjE1IDY0LjI4MkwxMzMuNjAzIDYzLjI4MjFaTTEyOS41NzcgNjMuMzMzNEwxMzEuNTkgNjMuMzA3N0wxMzEuNjAzIDY0LjMwNzZMMTI5LjU5IDY0LjMzMzNMMTI5LjU3NyA2My4zMzM0Wk0xMjUuNTUxIDYzLjM4NDZMMTI3LjU2NCA2My4zNTlMMTI3LjU3NyA2NC4zNTg5TDEyNS41NjQgNjQuMzg0NkwxMjUuNTUxIDYzLjM4NDZaTTEyMS41MjYgNjMuNDM1OUwxMjMuNTM5IDYzLjQxMDNMMTIzLjU1MSA2NC40MTAyTDEyMS41MzggNjQuNDM1OEwxMjEuNTI2IDYzLjQzNTlaTTExNy41IDYzLjQ4NzJMMTE5LjUxMyA2My40NjE2TDExOS41MjYgNjQuNDYxNUwxMTcuNTEzIDY0LjQ4NzFMMTE3LjUgNjMuNDg3MlpNMTEzLjQ3NCA2My41Mzg1TDExNS40ODcgNjMuNTEyOUwxMTUuNSA2NC41MTI4TDExMy40ODcgNjQuNTM4NEwxMTMuNDc0IDYzLjUzODVaTTEwOS40NDkgNjMuNTg5OEwxMTEuNDYyIDYzLjU2NDFMMTExLjQ3NCA2NC41NjQxTDEwOS40NjIgNjQuNTg5N0wxMDkuNDQ5IDYzLjU4OThaTTEwNS40MjMgNjMuNjQxMUwxMDcuNDM2IDYzLjYxNTRMMTA3LjQ0OSA2NC42MTUzTDEwNS40MzYgNjQuNjQxTDEwNS40MjMgNjMuNjQxMVpNMTAxLjM5OCA2My42OTIzTDEwMy40MSA2My42NjY3TDEwMy40MjMgNjQuNjY2NkwxMDEuNDEgNjQuNjkyM0wxMDEuMzk4IDYzLjY5MjNaTTk3LjM3MTkgNjMuNzQzNkw5OS4zODQ3IDYzLjcxOEw5OS4zOTc0IDY0LjcxNzlMOTcuMzg0NiA2NC43NDM1TDk3LjM3MTkgNjMuNzQzNlpNOTMuMzQ2MiA2My43OTQ5TDk1LjM1OSA2My43NjkzTDk1LjM3MTggNjQuNzY5Mkw5My4zNTkgNjQuNzk0OEw5My4zNDYyIDYzLjc5NDlaTTg5LjMyMDYgNjMuODQ2Mkw5MS4zMzM0IDYzLjgyMDVMOTEuMzQ2MSA2NC44MjA1TDg5LjMzMzMgNjQuODQ2MUw4OS4zMjA2IDYzLjg0NjJaTTg1LjI5NDkgNjMuODk3NUw4Ny4zMDc4IDYzLjg3MThMODcuMzIwNSA2NC44NzE3TDg1LjMwNzcgNjQuODk3NEw4NS4yOTQ5IDYzLjg5NzVaTTgxLjI2OTMgNjMuOTQ4N0w4My4yODIxIDYzLjkyMzFMODMuMjk0OSA2NC45MjNMODEuMjgyIDY0Ljk0ODdMODEuMjY5MyA2My45NDg3Wk03Ny4yNDM3IDY0TDc5LjI1NjUgNjMuOTc0NEw3OS4yNjkyIDY0Ljk3NDNMNzcuMjU2NCA2NC45OTk5TDc3LjI0MzcgNjRaTTczLjIxOCA2NC4wNTEzTDc1LjIzMDggNjQuMDI1N0w3NS4yNDM2IDY1LjAyNTZMNzMuMjMwNyA2NS4wNTEyTDczLjIxOCA2NC4wNTEzWk02OS4xOTI0IDY0LjEwMjZMNzEuMjA1MiA2NC4wNzdMNzEuMjE3OSA2NS4wNzY5TDY5LjIwNTEgNjUuMTAyNUw2OS4xOTI0IDY0LjEwMjZaTTY1LjE2NjcgNjQuMTUzOUw2Ny4xNzk1IDY0LjEyODJMNjcuMTkyMyA2NS4xMjgyTDY1LjE3OTUgNjUuMTUzOEw2NS4xNjY3IDY0LjE1MzlaTTYxLjE0MTEgNjQuMjA1Mkw2My4xNTM5IDY0LjE3OTVMNjMuMTY2NiA2NS4xNzk0TDYxLjE1MzggNjUuMjA1MUw2MS4xNDExIDY0LjIwNTJaTTU3LjExNTQgNjQuMjU2NEw1OS4xMjgzIDY0LjIzMDhMNTkuMTQxIDY1LjIzMDdMNTcuMTI4MiA2NS4yNTY0TDU3LjExNTQgNjQuMjU2NFpNNTMuMDg5OCA2NC4zMDc3TDU1LjEwMjYgNjQuMjgyMUw1NS4xMTUzIDY1LjI4Mkw1My4xMDI1IDY1LjMwNzZMNTMuMDg5OCA2NC4zMDc3Wk00OS4wNjQxIDY0LjM1OUw1MS4wNzcgNjQuMzMzNEw1MS4wODk3IDY1LjMzMzNMNDkuMDc2OSA2NS4zNTg5TDQ5LjA2NDEgNjQuMzU5Wk00NS4wMzg1IDY0LjQxMDNMNDcuMDUxMyA2NC4zODQ2TDQ3LjA2NDEgNjUuMzg0Nkw0NS4wNTEyIDY1LjQxMDJMNDUuMDM4NSA2NC40MTAzWk00MS4wMTI5IDY0LjQ2MTZMNDMuMDI1NyA2NC40MzU5TDQzLjAzODQgNjUuNDM1OEw0MS4wMjU2IDY1LjQ2MTVMNDEuMDEyOSA2NC40NjE2Wk0zNy45OTM3IDY0LjVMMzkgNjQuNDg3MkwzOS4wMTI4IDY1LjQ4NzFMMzguMDA2NCA2NS40OTk5TDM3Ljk5MzcgNjQuNVoiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTk1LjM1NCAxNy42NDY0QzE5NS41NDkgMTcuODQxNyAxOTUuNTQ5IDE4LjE1ODMgMTk1LjM1NCAxOC4zNTM1TDE5Mi4xNzIgMjEuNTM1NUMxOTEuOTc2IDIxLjczMDggMTkxLjY2IDIxLjczMDggMTkxLjQ2NSAyMS41MzU1QzE5MS4yNjkgMjEuMzQwMyAxOTEuMjY5IDIxLjAyMzcgMTkxLjQ2NSAyMC44Mjg0TDE5My45ODkgMTguMzA0MlYxNy42OTU3TDE5MS40NjUgMTUuMTcxNkMxOTEuMjY5IDE0Ljk3NjMgMTkxLjI2OSAxNC42NTk3IDE5MS40NjUgMTQuNDY0NUMxOTEuNjYgMTQuMjY5MiAxOTEuOTc2IDE0LjI2OTIgMTkyLjE3MiAxNC40NjQ1TDE5NS4zNTQgMTcuNjQ2NFpNMTg5Ljk0MyAxNy41SDE5MS45NjZWMTguNUgxODkuOTQzVjE3LjVaTTE4NS44OTggMTcuNUgxODcuOTIxVjE4LjVIMTg1Ljg5OFYxNy41Wk0xODEuODUyIDE3LjVIMTgzLjg3NVYxOC41SDE4MS44NTJWMTcuNVpNMTc3LjgwNyAxNy41SDE3OS44M1YxOC41SDE3Ny44MDdWMTcuNVpNMTczLjc2MSAxNy41SDE3NS43ODRWMTguNUgxNzMuNzYxVjE3LjVaTTE2OS43MTYgMTcuNUgxNzEuNzM5VjE4LjVIMTY5LjcxNlYxNy41Wk0xNjUuNjcxIDE3LjVIMTY3LjY5M1YxOC41SDE2NS42NzFWMTcuNVpNMTYxLjYyNSAxNy41SDE2My42NDhWMTguNUgxNjEuNjI1VjE3LjVaTTE1Ny41OCAxNy41SDE1OS42MDJWMTguNUgxNTcuNThWMTcuNVpNMTUzLjUzNCAxNy41SDE1NS41NTdWMTguNUgxNTMuNTM0VjE3LjVaTTE0OS40ODkgMTcuNUgxNTEuNTExVjE4LjVIMTQ5LjQ4OVYxNy41Wk0xNDUuNDQzIDE3LjVIMTQ3LjQ2NlYxOC41SDE0NS40NDNWMTcuNVpNMTQxLjM5OCAxNy41SDE0My40MjFWMTguNUgxNDEuMzk4VjE3LjVaTTEzNy4zNTIgMTcuNUgxMzkuMzc1VjE4LjVIMTM3LjM1MlYxNy41Wk0xMzMuMzA3IDE3LjVIMTM1LjMzVjE4LjVIMTMzLjMwN1YxNy41Wk0xMjkuMjYxIDE3LjVIMTMxLjI4NFYxOC41SDEyOS4yNjFWMTcuNVpNMTI1LjIxNiAxNy41SDEyNy4yMzlWMTguNUgxMjUuMjE2VjE3LjVaTTEyMS4xNyAxNy41SDEyMy4xOTNWMTguNUgxMjEuMTdWMTcuNVpNMTE3LjEyNSAxNy41SDExOS4xNDhWMTguNUgxMTcuMTI1VjE3LjVaTTExMy4wOCAxNy41SDExNS4xMDJWMTguNUgxMTMuMDhWMTcuNVpNMTA5LjAzNCAxNy41SDExMS4wNTdWMTguNUgxMDkuMDM0VjE3LjVaTTEwNiAxNy41SDEwNy4wMTFWMTguNUgxMDZWMTcuNVoiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTk1LjM1NCAxMDguNjQ2QzE5NS41NDkgMTA4Ljg0MiAxOTUuNTQ5IDEwOS4xNTggMTk1LjM1NCAxMDkuMzU0TDE5Mi4xNzIgMTEyLjUzNkMxOTEuOTc2IDExMi43MzEgMTkxLjY2IDExMi43MzEgMTkxLjQ2NSAxMTIuNTM2QzE5MS4yNjkgMTEyLjM0IDE5MS4yNjkgMTEyLjAyNCAxOTEuNDY1IDExMS44MjhMMTkzLjk4OSAxMDkuMzA0VjEwOC42OTZMMTkxLjQ2NSAxMDYuMTcyQzE5MS4yNjkgMTA1Ljk3NiAxOTEuMjY5IDEwNS42NiAxOTEuNDY1IDEwNS40NjRDMTkxLjY2IDEwNS4yNjkgMTkxLjk3NiAxMDUuMjY5IDE5Mi4xNzIgMTA1LjQ2NEwxOTUuMzU0IDEwOC42NDZaTTE4OS45NDMgMTA4LjVIMTkxLjk2NlYxMDkuNUgxODkuOTQzVjEwOC41Wk0xODUuODk4IDEwOC41SDE4Ny45MjFWMTA5LjVIMTg1Ljg5OFYxMDguNVpNMTgxLjg1MiAxMDguNUgxODMuODc1VjEwOS41SDE4MS44NTJWMTA4LjVaTTE3Ny44MDcgMTA4LjVIMTc5LjgzVjEwOS41SDE3Ny44MDdWMTA4LjVaTTE3My43NjEgMTA4LjVIMTc1Ljc4NFYxMDkuNUgxNzMuNzYxVjEwOC41Wk0xNjkuNzE2IDEwOC41SDE3MS43MzlWMTA5LjVIMTY5LjcxNlYxMDguNVpNMTY1LjY3MSAxMDguNUgxNjcuNjkzVjEwOS41SDE2NS42NzFWMTA4LjVaTTE2MS42MjUgMTA4LjVIMTYzLjY0OFYxMDkuNUgxNjEuNjI1VjEwOC41Wk0xNTcuNTggMTA4LjVIMTU5LjYwMlYxMDkuNUgxNTcuNThWMTA4LjVaTTE1My41MzQgMTA4LjVIMTU1LjU1N1YxMDkuNUgxNTMuNTM0VjEwOC41Wk0xNDkuNDg5IDEwOC41SDE1MS41MTFWMTA5LjVIMTQ5LjQ4OVYxMDguNVpNMTQ1LjQ0MyAxMDguNUgxNDcuNDY2VjEwOS41SDE0NS40NDNWMTA4LjVaTTE0MS4zOTggMTA4LjVIMTQzLjQyMVYxMDkuNUgxNDEuMzk4VjEwOC41Wk0xMzcuMzUyIDEwOC41SDEzOS4zNzVWMTA5LjVIMTM3LjM1MlYxMDguNVpNMTMzLjMwNyAxMDguNUgxMzUuMzNWMTA5LjVIMTMzLjMwN1YxMDguNVpNMTI5LjI2MSAxMDguNUgxMzEuMjg0VjEwOS41SDEyOS4yNjFWMTA4LjVaTTEyNS4yMTYgMTA4LjVIMTI3LjIzOVYxMDkuNUgxMjUuMjE2VjEwOC41Wk0xMjEuMTcgMTA4LjVIMTIzLjE5M1YxMDkuNUgxMjEuMTdWMTA4LjVaTTExNy4xMjUgMTA4LjVIMTE5LjE0OFYxMDkuNUgxMTcuMTI1VjEwOC41Wk0xMTMuMDggMTA4LjVIMTE1LjEwMlYxMDkuNUgxMTMuMDhWMTA4LjVaTTEwOS4wMzQgMTA4LjVIMTExLjA1N1YxMDkuNUgxMDkuMDM0VjEwOC41Wk0xMDYgMTA4LjVIMTA3LjAxMVYxMDkuNUgxMDZWMTA4LjVaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjAxLjcyOCAyNFYyMy4wNEgyMDMuNDQ0VjE2Ljk4TDIwMS44MzYgMTguMTkyTDIwMS4yNDggMTcuMzg4TDIwMy43MzIgMTUuNkgyMDQuNTI0VjIzLjA0SDIwNS45NTJWMjRIMjAxLjcyOFoiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0yMDEuMDU2IDY4QzIwMS4wMzIgNjcuODU2IDIwMS4wMiA2Ny43MDggMjAxLjAyIDY3LjU1NkMyMDEuMDIgNjcuMDM2IDIwMS4xMDggNjYuNTcyIDIwMS4yODQgNjYuMTY0QzIwMS40NjggNjUuNzQ4IDIwMS43MDQgNjUuMzcyIDIwMS45OTIgNjUuMDM2QzIwMi4yOCA2NC42OTIgMjAyLjU4NCA2NC4zNzYgMjAyLjkwNCA2NC4wODhDMjAzLjIzMiA2My43OTIgMjAzLjUzNiA2My41MTIgMjAzLjgxNiA2My4yNDhDMjA0LjEwNCA2Mi45NzYgMjA0LjM0IDYyLjcwNCAyMDQuNTI0IDYyLjQzMkMyMDQuNzA4IDYyLjE2IDIwNC44IDYxLjg3NiAyMDQuOCA2MS41OEMyMDQuOCA2MS4yNDQgMjA0LjY3NiA2MC45NjggMjA0LjQyOCA2MC43NTJDMjA0LjE4IDYwLjUyOCAyMDMuODYgNjAuNDE2IDIwMy40NjggNjAuNDE2QzIwMy4xMzIgNjAuNDE2IDIwMi44MjQgNjAuNDg0IDIwMi41NDQgNjAuNjJDMjAyLjI3MiA2MC43NDggMjAyLjAxNiA2MC45MjQgMjAxLjc3NiA2MS4xNDhMMjAxLjE3NiA2MC40MTZDMjAxLjQ5NiA2MC4xMjggMjAxLjg0OCA1OS44OTYgMjAyLjIzMiA1OS43MkMyMDIuNjI0IDU5LjU0NCAyMDMuMDc2IDU5LjQ1NiAyMDMuNTg4IDU5LjQ1NkMyMDQuMDYgNTkuNDU2IDIwNC40NzIgNTkuNTQ4IDIwNC44MjQgNTkuNzMyQzIwNS4xNzYgNTkuOTA4IDIwNS40NDggNjAuMTUyIDIwNS42NCA2MC40NjRDMjA1Ljg0IDYwLjc3NiAyMDUuOTQgNjEuMTI0IDIwNS45NCA2MS41MDhDMjA1Ljk0IDYxLjg5MiAyMDUuODU2IDYyLjI0OCAyMDUuNjg4IDYyLjU3NkMyMDUuNTIgNjIuOTA0IDIwNS4zMDQgNjMuMjEyIDIwNS4wNCA2My41QzIwNC43NzYgNjMuNzg4IDIwNC40OTIgNjQuMDY4IDIwNC4xODggNjQuMzRDMjAzLjg4NCA2NC42MDQgMjAzLjU5MiA2NC44NzYgMjAzLjMxMiA2NS4xNTZDMjAzLjAzMiA2NS40MzYgMjAyLjc5MiA2NS43MjggMjAyLjU5MiA2Ni4wMzJDMjAyLjQgNjYuMzM2IDIwMi4yOCA2Ni42NjQgMjAyLjIzMiA2Ny4wMTZIMjA1LjkyOFY2OEgyMDEuMDU2WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTIwMy4xMDggMTE1LjE0NEMyMDIuNTg4IDExNS4xNDQgMjAyLjEzNiAxMTUuMDc2IDIwMS43NTIgMTE0Ljk0QzIwMS4zNjggMTE0Ljc5NiAyMDEuMDQgMTE0LjYyNCAyMDAuNzY4IDExNC40MjRMMjAxLjI2IDExMy41MjRDMjAxLjQ4NCAxMTMuNjkyIDIwMS43NDQgMTEzLjg0IDIwMi4wNCAxMTMuOTY4QzIwMi4zMzYgMTE0LjA5NiAyMDIuNjk2IDExNC4xNiAyMDMuMTIgMTE0LjE2QzIwMy42NDggMTE0LjE2IDIwNC4wNjQgMTE0LjAyIDIwNC4zNjggMTEzLjc0QzIwNC42OCAxMTMuNDYgMjA0LjgzNiAxMTMuMTEyIDIwNC44MzYgMTEyLjY5NkMyMDQuODM2IDExMi40IDIwNC43NTYgMTEyLjEzMiAyMDQuNTk2IDExMS44OTJDMjA0LjQzNiAxMTEuNjQ0IDIwNC4xODggMTExLjQ0NCAyMDMuODUyIDExMS4yOTJDMjAzLjUyNCAxMTEuMTQgMjAzLjA5NiAxMTEuMDY0IDIwMi41NjggMTExLjA2NEgyMDEuODk2VjExMC4xODhIMjAyLjUyQzIwMi45OTIgMTEwLjE4OCAyMDMuMzggMTEwLjExNiAyMDMuNjg0IDEwOS45NzJDMjAzLjk5NiAxMDkuODI4IDIwNC4yMjggMTA5LjY0IDIwNC4zOCAxMDkuNDA4QzIwNC41MzIgMTA5LjE3NiAyMDQuNjA4IDEwOC45MzIgMjA0LjYwOCAxMDguNjc2QzIwNC42MDggMTA4LjMgMjA0LjQ2NCAxMDcuOTk2IDIwNC4xNzYgMTA3Ljc2NEMyMDMuODk2IDEwNy41MzIgMjAzLjU0OCAxMDcuNDE2IDIwMy4xMzIgMTA3LjQxNkMyMDIuNzU2IDEwNy40MTYgMjAyLjQyIDEwNy40OCAyMDIuMTI0IDEwNy42MDhDMjAxLjgzNiAxMDcuNzI4IDIwMS42IDEwNy44NjQgMjAxLjQxNiAxMDguMDE2TDIwMC45NzIgMTA3LjE2NEMyMDEuMjEyIDEwNy4wMDQgMjAxLjUyIDEwNi44NDggMjAxLjg5NiAxMDYuNjk2QzIwMi4yNzIgMTA2LjUzNiAyMDIuNzEyIDEwNi40NTYgMjAzLjIxNiAxMDYuNDU2QzIwMy43NDQgMTA2LjQ1NiAyMDQuMTkyIDEwNi41NTIgMjA0LjU2IDEwNi43NDRDMjA0LjkyOCAxMDYuOTM2IDIwNS4yMDggMTA3LjE5MiAyMDUuNCAxMDcuNTEyQzIwNS42IDEwNy44MjQgMjA1LjcgMTA4LjE2NCAyMDUuNyAxMDguNTMyQzIwNS43IDEwOS4wMDQgMjA1LjU4IDEwOS40IDIwNS4zNCAxMDkuNzJDMjA1LjEwOCAxMTAuMDQgMjA0Ljc3NiAxMTAuMzA0IDIwNC4zNDQgMTEwLjUxMkMyMDQuODQ4IDExMC43MDQgMjA1LjI0IDExMC45ODggMjA1LjUyIDExMS4zNjRDMjA1LjgwOCAxMTEuNzMyIDIwNS45NTIgMTEyLjE2NCAyMDUuOTUyIDExMi42NkMyMDUuOTUyIDExMy4wNzYgMjA1Ljg0OCAxMTMuNDc2IDIwNS42NCAxMTMuODZDMjA1LjQ0IDExNC4yMzYgMjA1LjEyOCAxMTQuNTQ0IDIwNC43MDQgMTE0Ljc4NEMyMDQuMjg4IDExNS4wMjQgMjAzLjc1NiAxMTUuMTQ0IDIwMy4xMDggMTE1LjE0NFoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo=";
2
+ export {
3
+ M as default
4
+ };