From d39b3b035d1074917697bf9d87efe4eea1c297ce Mon Sep 17 00:00:00 2001 From: KodouWZF <3092554823@qq.com> Date: Wed, 4 Nov 2026 21:44:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E9=83=A8=E7=BD=B2):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=20deployment/=20=E5=86=85=E5=A4=96=E7=BD=91=E4=B8=A4=E5=A5=97?= =?UTF-8?q?=E6=8C=89=E4=BE=A7=E9=83=A8=E7=BD=B2=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 按 demo/ 的写法把交付包改成「角色由目录决定」:iw/ 拷内网机、ow/ 拷外网机, 各自含镜像 tar、SQL、配置与 install.sh,install.sh 不再收 iw/ow 参数。 前端不再打进镜像,改为静态包放在 <侧>/web/ 只读挂进 nginx:1.27-alpine, 现场临时改页面直接替换文件 + restart web 即可。数据仍全部挂宿主机, 子目录命名与 deploy/offline 一致(pgdata/redis/mq/upload/logs/gate), 默认根改为包内 ./volumes,放数据盘只改 .env 的 SFILE_DATA_ROOT。 后端镜像 sfile-app:1.0.1 含传输优化那一批(实测组包 11.4×、解包 9.9×)。 出包脚本 deployment/scripts/build-package.sh 负责 jar→镜像→前端双包→sql→tar→VERSION。 --- deployment/iw/.env | 71 + deployment/iw/.gitignore | 8 + deployment/iw/README.md | 111 + deployment/iw/VERSION.txt | 19 + deployment/iw/config/application.yml | 110 + deployment/iw/docker-compose.yml | 192 + deployment/iw/nginx/web.conf | 44 + deployment/iw/scripts/install.sh | 198 + deployment/iw/sql/01-init-table.sql | 2083 + deployment/iw/sql/02-init-data.sql | 46 + deployment/iw/sql/README.md | 42 + .../upgrade-20260914-upload-config.sql | 62 + .../sql/upgrade/upgrade-20260915-release.sql | 90 + ...pgrade-20261101-meshsafe-file-security.sql | 71 + .../upgrade-20261103-transfer-perf.sql | 26 + deployment/iw/web/assets/(user)-ByN4Axee.js | 75 + deployment/iw/web/assets/admin-V-3Z0PVJ.js | 1 + .../iw/web/assets/app-layout-D4ftBqmM.js | 1 + deployment/iw/web/assets/bg-CBsBX9E3.png | Bin 0 -> 292150 bytes .../iw/web/assets/chevron-left-r2x2HO6r.js | 1 + .../iw/web/assets/chevron-right-_MvSGoRx.js | 1 + deployment/iw/web/assets/console-nn2bY2CJ.js | 2 + .../iw/web/assets/data-table-CEq6a930.js | 4 + .../web/assets/date-range-picker-CAdUnH9W.js | 1 + deployment/iw/web/assets/dialog-CnxDxMp1.js | 1 + .../assets/directory-breadcrumb-u3uCxukv.js | 1 + deployment/iw/web/assets/dist-2m9EwrEG.js | 1 + deployment/iw/web/assets/dist-7VFSSFOV.js | 1 + deployment/iw/web/assets/dist-AWHq1sQs.js | 1 + deployment/iw/web/assets/dist-CpxP8T7M.js | 1 + .../web/assets/edit-user-dialog-DTs4QrEM.js | 1 + deployment/iw/web/assets/es-6YDPW35u.js | 5 + deployment/iw/web/assets/extract-sa8PNFSm.js | 1 + deployment/iw/web/assets/file-COj1kCUn.js | 1 + .../assets/file-category-filter-BIAErrxo.js | 82 + .../assets/file-category-filter-DdKuH37F.css | 1 + .../iw/web/assets/file-record-xAA0hSRQ.js | 1 + .../iw/web/assets/file-type-BBx4p_T6.js | 1 + deployment/iw/web/assets/folder-Dl7FxCLT.js | 1 + .../iw/web/assets/folder-input--tEWrMtP.js | 1 + deployment/iw/web/assets/index-BaTxSAlR.js | 118 + deployment/iw/web/assets/index-BbZGMJ6u.css | 1 + deployment/iw/web/assets/inside-BDK478rm.js | 1 + deployment/iw/web/assets/list-DFASxSFf.js | 1 + deployment/iw/web/assets/login-AXVtM6Py.js | 1 + deployment/iw/web/assets/logo-CE4fGrmK.png | Bin 0 -> 386515 bytes deployment/iw/web/assets/my-C6gzFuIT.js | 3 + deployment/iw/web/assets/org-CX5LJyS0.js | 1 + .../iw/web/assets/org-account-BvqGo47r.js | 1 + deployment/iw/web/assets/outside-DtRMqIkz.js | 1 + .../iw/web/assets/pagination-Bragnnjj.js | 1 + deployment/iw/web/assets/plus-BHIlMeNy.js | 1 + .../iw/web/assets/prop-types-BuNDdpC2.js | 1 + .../iw/web/assets/radio-group-dGI8aZOA.js | 1 + deployment/iw/web/assets/recycle-CSeB7_Hw.js | 1 + .../web/assets/remove-file-dialog-cN0TGs4y.js | 1 + deployment/iw/web/assets/route-C-dN6SG2.js | 1 + deployment/iw/web/assets/route-yMj8live.js | 1 + deployment/iw/web/assets/search-BGsuWyQ1.js | 1 + deployment/iw/web/assets/select-stsOu5jD.js | 1 + deployment/iw/web/assets/share-D-HlQYDW.js | 1 + .../iw/web/assets/shield-alert-XSqo2W3w.js | 1 + deployment/iw/web/assets/tabs-DopbVsQe.js | 1 + deployment/iw/web/assets/tenant-DS3zyWsK.js | 1 + deployment/iw/web/assets/textarea-Dyx6I5ZN.js | 1 + deployment/iw/web/assets/upload-Cr-BixPb.js | 1 + .../iw/web/assets/upload-config-D_24SNBe.js | 2 + .../iw/web/assets/use-fetch-files-rnWwNE4C.js | 1 + .../assets/use-security-enabled-CyVC7otU.js | 1 + .../web/assets/use-upload-config-OxxQwpLm.js | 1 + .../iw/web/assets/useLocation-B-0SqFIj.js | 1 + deployment/iw/web/assets/useQuery-dxbdhNvu.js | 1 + deployment/iw/web/assets/user-CwyiWp7E.js | 4 + deployment/iw/web/assets/x-CNIkD3YH.js | 1 + deployment/iw/web/assets/xlsx-DLapqJRf.js | 104 + deployment/iw/web/favicon.png | Bin 0 -> 126870 bytes deployment/iw/web/index.html | 44 + deployment/iw/web/pdfjs/LICENSE | 177 + deployment/iw/web/pdfjs/build/pdf.js | 24450 +++++ deployment/iw/web/pdfjs/build/pdf.js.map | 1 + deployment/iw/web/pdfjs/build/pdf.sandbox.js | 316 + .../iw/web/pdfjs/build/pdf.sandbox.js.map | 1 + deployment/iw/web/pdfjs/build/pdf.worker.js | 79063 ++++++++++++++++ .../iw/web/pdfjs/build/pdf.worker.js.map | 1 + .../iw/web/pdfjs/web/cmaps/78-EUC-H.bcmap | Bin 0 -> 2404 bytes .../iw/web/pdfjs/web/cmaps/78-EUC-V.bcmap | Bin 0 -> 173 bytes deployment/iw/web/pdfjs/web/cmaps/78-H.bcmap | Bin 0 -> 2379 bytes .../iw/web/pdfjs/web/cmaps/78-RKSJ-H.bcmap | Bin 0 -> 2398 bytes .../iw/web/pdfjs/web/cmaps/78-RKSJ-V.bcmap | Bin 0 -> 173 bytes deployment/iw/web/pdfjs/web/cmaps/78-V.bcmap | Bin 0 -> 169 bytes .../iw/web/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap | Bin 0 -> 2651 bytes .../iw/web/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap | Bin 0 -> 290 bytes .../iw/web/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap | Bin 0 -> 905 bytes .../iw/web/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap | Bin 0 -> 721 bytes .../iw/web/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap | Bin 0 -> 290 bytes .../iw/web/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap | Bin 0 -> 715 bytes .../iw/web/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap | Bin 0 -> 291 bytes .../iw/web/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap | Bin 0 -> 982 bytes .../iw/web/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap | Bin 0 -> 260 bytes deployment/iw/web/pdfjs/web/cmaps/Add-H.bcmap | Bin 0 -> 2419 bytes .../iw/web/pdfjs/web/cmaps/Add-RKSJ-H.bcmap | Bin 0 -> 2413 bytes .../iw/web/pdfjs/web/cmaps/Add-RKSJ-V.bcmap | Bin 0 -> 287 bytes deployment/iw/web/pdfjs/web/cmaps/Add-V.bcmap | Bin 0 -> 282 bytes .../iw/web/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap | Bin 0 -> 317 bytes .../iw/web/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap | Bin 0 -> 371 bytes .../iw/web/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap | Bin 0 -> 376 bytes .../iw/web/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap | Bin 0 -> 401 bytes .../iw/web/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap | Bin 0 -> 405 bytes .../iw/web/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap | Bin 0 -> 406 bytes .../iw/web/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap | Bin 0 -> 406 bytes .../web/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap | Bin 0 -> 41193 bytes .../iw/web/pdfjs/web/cmaps/Adobe-GB1-0.bcmap | Bin 0 -> 217 bytes .../iw/web/pdfjs/web/cmaps/Adobe-GB1-1.bcmap | Bin 0 -> 250 bytes .../iw/web/pdfjs/web/cmaps/Adobe-GB1-2.bcmap | Bin 0 -> 465 bytes .../iw/web/pdfjs/web/cmaps/Adobe-GB1-3.bcmap | Bin 0 -> 470 bytes .../iw/web/pdfjs/web/cmaps/Adobe-GB1-4.bcmap | Bin 0 -> 601 bytes .../iw/web/pdfjs/web/cmaps/Adobe-GB1-5.bcmap | Bin 0 -> 625 bytes .../web/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap | Bin 0 -> 33974 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap | Bin 0 -> 225 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap | Bin 0 -> 226 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap | Bin 0 -> 233 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap | Bin 0 -> 242 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap | Bin 0 -> 337 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap | Bin 0 -> 430 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap | Bin 0 -> 485 bytes .../pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap | Bin 0 -> 40951 bytes .../web/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap | Bin 0 -> 241 bytes .../web/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap | Bin 0 -> 386 bytes .../web/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap | Bin 0 -> 391 bytes .../pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap | Bin 0 -> 23293 bytes deployment/iw/web/pdfjs/web/cmaps/B5-H.bcmap | Bin 0 -> 1086 bytes deployment/iw/web/pdfjs/web/cmaps/B5-V.bcmap | Bin 0 -> 142 bytes .../iw/web/pdfjs/web/cmaps/B5pc-H.bcmap | Bin 0 -> 1099 bytes .../iw/web/pdfjs/web/cmaps/B5pc-V.bcmap | Bin 0 -> 144 bytes .../iw/web/pdfjs/web/cmaps/CNS-EUC-H.bcmap | Bin 0 -> 1780 bytes .../iw/web/pdfjs/web/cmaps/CNS-EUC-V.bcmap | Bin 0 -> 1920 bytes .../iw/web/pdfjs/web/cmaps/CNS1-H.bcmap | Bin 0 -> 706 bytes .../iw/web/pdfjs/web/cmaps/CNS1-V.bcmap | Bin 0 -> 143 bytes .../iw/web/pdfjs/web/cmaps/CNS2-H.bcmap | Bin 0 -> 504 bytes .../iw/web/pdfjs/web/cmaps/CNS2-V.bcmap | 3 + .../iw/web/pdfjs/web/cmaps/ETHK-B5-H.bcmap | Bin 0 -> 4426 bytes .../iw/web/pdfjs/web/cmaps/ETHK-B5-V.bcmap | Bin 0 -> 158 bytes .../iw/web/pdfjs/web/cmaps/ETen-B5-H.bcmap | Bin 0 -> 1125 bytes .../iw/web/pdfjs/web/cmaps/ETen-B5-V.bcmap | Bin 0 -> 158 bytes .../iw/web/pdfjs/web/cmaps/ETenms-B5-H.bcmap | 3 + .../iw/web/pdfjs/web/cmaps/ETenms-B5-V.bcmap | Bin 0 -> 172 bytes deployment/iw/web/pdfjs/web/cmaps/EUC-H.bcmap | Bin 0 -> 578 bytes deployment/iw/web/pdfjs/web/cmaps/EUC-V.bcmap | Bin 0 -> 170 bytes deployment/iw/web/pdfjs/web/cmaps/Ext-H.bcmap | Bin 0 -> 2536 bytes .../iw/web/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap | Bin 0 -> 2542 bytes .../iw/web/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap | Bin 0 -> 218 bytes deployment/iw/web/pdfjs/web/cmaps/Ext-V.bcmap | Bin 0 -> 215 bytes .../iw/web/pdfjs/web/cmaps/GB-EUC-H.bcmap | Bin 0 -> 549 bytes .../iw/web/pdfjs/web/cmaps/GB-EUC-V.bcmap | Bin 0 -> 179 bytes deployment/iw/web/pdfjs/web/cmaps/GB-H.bcmap | 4 + deployment/iw/web/pdfjs/web/cmaps/GB-V.bcmap | Bin 0 -> 175 bytes .../iw/web/pdfjs/web/cmaps/GBK-EUC-H.bcmap | Bin 0 -> 14692 bytes .../iw/web/pdfjs/web/cmaps/GBK-EUC-V.bcmap | Bin 0 -> 180 bytes .../iw/web/pdfjs/web/cmaps/GBK2K-H.bcmap | Bin 0 -> 19662 bytes .../iw/web/pdfjs/web/cmaps/GBK2K-V.bcmap | Bin 0 -> 219 bytes .../iw/web/pdfjs/web/cmaps/GBKp-EUC-H.bcmap | Bin 0 -> 14686 bytes .../iw/web/pdfjs/web/cmaps/GBKp-EUC-V.bcmap | Bin 0 -> 181 bytes .../iw/web/pdfjs/web/cmaps/GBT-EUC-H.bcmap | Bin 0 -> 7290 bytes .../iw/web/pdfjs/web/cmaps/GBT-EUC-V.bcmap | Bin 0 -> 180 bytes deployment/iw/web/pdfjs/web/cmaps/GBT-H.bcmap | Bin 0 -> 7269 bytes deployment/iw/web/pdfjs/web/cmaps/GBT-V.bcmap | Bin 0 -> 176 bytes .../iw/web/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap | Bin 0 -> 7298 bytes .../iw/web/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap | Bin 0 -> 182 bytes .../iw/web/pdfjs/web/cmaps/GBpc-EUC-H.bcmap | Bin 0 -> 557 bytes .../iw/web/pdfjs/web/cmaps/GBpc-EUC-V.bcmap | Bin 0 -> 181 bytes deployment/iw/web/pdfjs/web/cmaps/H.bcmap | Bin 0 -> 553 bytes .../iw/web/pdfjs/web/cmaps/HKdla-B5-H.bcmap | Bin 0 -> 2654 bytes .../iw/web/pdfjs/web/cmaps/HKdla-B5-V.bcmap | Bin 0 -> 148 bytes .../iw/web/pdfjs/web/cmaps/HKdlb-B5-H.bcmap | Bin 0 -> 2414 bytes .../iw/web/pdfjs/web/cmaps/HKdlb-B5-V.bcmap | Bin 0 -> 148 bytes .../iw/web/pdfjs/web/cmaps/HKgccs-B5-H.bcmap | Bin 0 -> 2292 bytes .../iw/web/pdfjs/web/cmaps/HKgccs-B5-V.bcmap | Bin 0 -> 149 bytes .../iw/web/pdfjs/web/cmaps/HKm314-B5-H.bcmap | Bin 0 -> 1772 bytes .../iw/web/pdfjs/web/cmaps/HKm314-B5-V.bcmap | Bin 0 -> 149 bytes .../iw/web/pdfjs/web/cmaps/HKm471-B5-H.bcmap | Bin 0 -> 2171 bytes .../iw/web/pdfjs/web/cmaps/HKm471-B5-V.bcmap | Bin 0 -> 149 bytes .../iw/web/pdfjs/web/cmaps/HKscs-B5-H.bcmap | Bin 0 -> 4437 bytes .../iw/web/pdfjs/web/cmaps/HKscs-B5-V.bcmap | Bin 0 -> 159 bytes .../iw/web/pdfjs/web/cmaps/Hankaku.bcmap | Bin 0 -> 132 bytes .../iw/web/pdfjs/web/cmaps/Hiragana.bcmap | Bin 0 -> 124 bytes .../iw/web/pdfjs/web/cmaps/KSC-EUC-H.bcmap | Bin 0 -> 1848 bytes .../iw/web/pdfjs/web/cmaps/KSC-EUC-V.bcmap | Bin 0 -> 164 bytes deployment/iw/web/pdfjs/web/cmaps/KSC-H.bcmap | Bin 0 -> 1831 bytes .../iw/web/pdfjs/web/cmaps/KSC-Johab-H.bcmap | Bin 0 -> 16791 bytes .../iw/web/pdfjs/web/cmaps/KSC-Johab-V.bcmap | Bin 0 -> 166 bytes deployment/iw/web/pdfjs/web/cmaps/KSC-V.bcmap | Bin 0 -> 160 bytes .../iw/web/pdfjs/web/cmaps/KSCms-UHC-H.bcmap | Bin 0 -> 2787 bytes .../web/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap | Bin 0 -> 2789 bytes .../web/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap | Bin 0 -> 169 bytes .../iw/web/pdfjs/web/cmaps/KSCms-UHC-V.bcmap | Bin 0 -> 166 bytes .../iw/web/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap | Bin 0 -> 2024 bytes .../iw/web/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap | Bin 0 -> 166 bytes .../iw/web/pdfjs/web/cmaps/Katakana.bcmap | Bin 0 -> 100 bytes deployment/iw/web/pdfjs/web/cmaps/LICENSE | 36 + deployment/iw/web/pdfjs/web/cmaps/NWP-H.bcmap | Bin 0 -> 2765 bytes deployment/iw/web/pdfjs/web/cmaps/NWP-V.bcmap | Bin 0 -> 252 bytes .../iw/web/pdfjs/web/cmaps/RKSJ-H.bcmap | Bin 0 -> 534 bytes .../iw/web/pdfjs/web/cmaps/RKSJ-V.bcmap | Bin 0 -> 170 bytes deployment/iw/web/pdfjs/web/cmaps/Roman.bcmap | Bin 0 -> 96 bytes .../web/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap | Bin 0 -> 48280 bytes .../web/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap | Bin 0 -> 156 bytes .../web/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap | Bin 0 -> 50419 bytes .../web/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap | Bin 0 -> 156 bytes .../web/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap | Bin 0 -> 52679 bytes .../web/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap | Bin 0 -> 160 bytes .../web/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap | Bin 0 -> 53629 bytes .../web/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap | Bin 0 -> 157 bytes .../iw/web/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap | Bin 0 -> 43366 bytes .../iw/web/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap | Bin 0 -> 193 bytes .../web/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap | Bin 0 -> 44086 bytes .../web/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap | Bin 0 -> 178 bytes .../web/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap | Bin 0 -> 45738 bytes .../web/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap | Bin 0 -> 182 bytes .../iw/web/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap | Bin 0 -> 46837 bytes .../iw/web/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap | Bin 0 -> 181 bytes .../web/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap | Bin 0 -> 25439 bytes .../pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap | Bin 0 -> 119 bytes .../pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap | Bin 0 -> 680 bytes .../web/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap | Bin 0 -> 664 bytes .../web/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap | Bin 0 -> 39443 bytes .../web/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap | Bin 0 -> 643 bytes .../web/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap | Bin 0 -> 40539 bytes .../web/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap | Bin 0 -> 677 bytes .../web/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap | Bin 0 -> 41695 bytes .../web/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap | Bin 0 -> 678 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap | Bin 0 -> 39534 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap | Bin 0 -> 647 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap | Bin 0 -> 40630 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap | Bin 0 -> 681 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap | Bin 0 -> 41779 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap | Bin 0 -> 682 bytes .../pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap | Bin 0 -> 705 bytes .../pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap | Bin 0 -> 689 bytes .../pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap | Bin 0 -> 726 bytes .../pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap | Bin 0 -> 40517 bytes .../pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap | Bin 0 -> 684 bytes .../web/cmaps/UniJISX02132004-UTF32-H.bcmap | Bin 0 -> 40608 bytes .../web/cmaps/UniJISX02132004-UTF32-V.bcmap | Bin 0 -> 688 bytes .../iw/web/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap | Bin 0 -> 25783 bytes .../iw/web/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap | Bin 0 -> 178 bytes .../web/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap | Bin 0 -> 26327 bytes .../web/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap | Bin 0 -> 164 bytes .../web/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap | Bin 0 -> 26451 bytes .../web/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap | Bin 0 -> 168 bytes .../iw/web/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap | Bin 0 -> 27790 bytes .../iw/web/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap | Bin 0 -> 169 bytes deployment/iw/web/pdfjs/web/cmaps/V.bcmap | Bin 0 -> 166 bytes .../iw/web/pdfjs/web/cmaps/WP-Symbol.bcmap | Bin 0 -> 179 bytes .../web/compressed.tracemonkey-pldi-09.pdf | Bin 0 -> 1016315 bytes deployment/iw/web/pdfjs/web/debugger.css | 107 + deployment/iw/web/pdfjs/web/debugger.js | 612 + .../web/pdfjs/web/images/annotation-check.svg | 11 + .../pdfjs/web/images/annotation-comment.svg | 16 + .../web/pdfjs/web/images/annotation-help.svg | 26 + .../pdfjs/web/images/annotation-insert.svg | 10 + .../web/pdfjs/web/images/annotation-key.svg | 11 + .../web/images/annotation-newparagraph.svg | 11 + .../pdfjs/web/images/annotation-noicon.svg | 7 + .../web/pdfjs/web/images/annotation-note.svg | 42 + .../pdfjs/web/images/annotation-paragraph.svg | 16 + .../pdfjs/web/images/findbarButton-next.svg | 4 + .../web/images/findbarButton-previous.svg | 4 + .../iw/web/pdfjs/web/images/loading-dark.svg | 24 + .../iw/web/pdfjs/web/images/loading-icon.gif | Bin 0 -> 2545 bytes .../iw/web/pdfjs/web/images/loading.svg | 1 + ...ondaryToolbarButton-documentProperties.svg | 15 + .../secondaryToolbarButton-firstPage.svg | 1 + .../secondaryToolbarButton-handTool.svg | 1 + .../secondaryToolbarButton-lastPage.svg | 1 + .../secondaryToolbarButton-rotateCcw.svg | 1 + .../secondaryToolbarButton-rotateCw.svg | 4 + ...econdaryToolbarButton-scrollHorizontal.svg | 1 + .../secondaryToolbarButton-scrollPage.svg | 1 + .../secondaryToolbarButton-scrollVertical.svg | 1 + .../secondaryToolbarButton-scrollWrapped.svg | 1 + .../secondaryToolbarButton-selectTool.svg | 4 + .../secondaryToolbarButton-spreadEven.svg | 1 + .../secondaryToolbarButton-spreadNone.svg | 1 + .../secondaryToolbarButton-spreadOdd.svg | 1 + deployment/iw/web/pdfjs/web/images/shadow.png | Bin 0 -> 269 bytes .../web/images/toolbarButton-bookmark.svg | 1 + .../toolbarButton-currentOutlineItem.svg | 1 + .../web/images/toolbarButton-download.svg | 4 + .../images/toolbarButton-editorFreeText.svg | 24 + .../web/images/toolbarButton-editorInk.svg | 9 + .../web/images/toolbarButton-menuArrow.svg | 1 + .../web/images/toolbarButton-openFile.svg | 4 + .../web/images/toolbarButton-pageDown.svg | 7 + .../pdfjs/web/images/toolbarButton-pageUp.svg | 12 + .../images/toolbarButton-presentationMode.svg | 1 + .../pdfjs/web/images/toolbarButton-print.svg | 4 + .../pdfjs/web/images/toolbarButton-search.svg | 4 + .../toolbarButton-secondaryToolbarToggle.svg | 4 + .../images/toolbarButton-sidebarToggle.svg | 4 + .../images/toolbarButton-viewAttachments.svg | 1 + .../web/images/toolbarButton-viewLayers.svg | 1 + .../web/images/toolbarButton-viewOutline.svg | 1 + .../images/toolbarButton-viewThumbnail.svg | 4 + .../pdfjs/web/images/toolbarButton-zoomIn.svg | 4 + .../web/images/toolbarButton-zoomOut.svg | 4 + .../pdfjs/web/images/treeitem-collapsed.svg | 1 + .../pdfjs/web/images/treeitem-expanded.svg | 1 + .../pdfjs/web/locale/ach/viewer.properties | 199 + .../web/pdfjs/web/locale/af/viewer.properties | 176 + .../web/pdfjs/web/locale/an/viewer.properties | 242 + .../web/pdfjs/web/locale/ar/viewer.properties | 246 + .../pdfjs/web/locale/ast/viewer.properties | 207 + .../web/pdfjs/web/locale/az/viewer.properties | 242 + .../web/pdfjs/web/locale/be/viewer.properties | 281 + .../web/pdfjs/web/locale/bg/viewer.properties | 234 + .../web/pdfjs/web/locale/bn/viewer.properties | 238 + .../web/pdfjs/web/locale/bo/viewer.properties | 237 + .../web/pdfjs/web/locale/br/viewer.properties | 246 + .../pdfjs/web/locale/brx/viewer.properties | 204 + .../web/pdfjs/web/locale/bs/viewer.properties | 193 + .../web/pdfjs/web/locale/ca/viewer.properties | 250 + .../pdfjs/web/locale/cak/viewer.properties | 248 + .../pdfjs/web/locale/ckb/viewer.properties | 233 + .../web/pdfjs/web/locale/cs/viewer.properties | 279 + .../web/pdfjs/web/locale/cy/viewer.properties | 281 + .../web/pdfjs/web/locale/da/viewer.properties | 267 + .../web/pdfjs/web/locale/de/viewer.properties | 281 + .../pdfjs/web/locale/dsb/viewer.properties | 281 + .../web/pdfjs/web/locale/el/viewer.properties | 281 + .../pdfjs/web/locale/en-CA/viewer.properties | 269 + .../pdfjs/web/locale/en-GB/viewer.properties | 281 + .../pdfjs/web/locale/en-US/viewer.properties | 271 + .../web/pdfjs/web/locale/eo/viewer.properties | 281 + .../pdfjs/web/locale/es-AR/viewer.properties | 281 + .../pdfjs/web/locale/es-CL/viewer.properties | 281 + .../pdfjs/web/locale/es-ES/viewer.properties | 269 + .../pdfjs/web/locale/es-MX/viewer.properties | 281 + .../web/pdfjs/web/locale/et/viewer.properties | 269 + .../web/pdfjs/web/locale/eu/viewer.properties | 269 + .../web/pdfjs/web/locale/fa/viewer.properties | 215 + .../web/pdfjs/web/locale/ff/viewer.properties | 234 + .../web/pdfjs/web/locale/fi/viewer.properties | 267 + .../web/pdfjs/web/locale/fr/viewer.properties | 279 + .../pdfjs/web/locale/fy-NL/viewer.properties | 281 + .../pdfjs/web/locale/ga-IE/viewer.properties | 201 + .../web/pdfjs/web/locale/gd/viewer.properties | 248 + .../web/pdfjs/web/locale/gl/viewer.properties | 248 + .../web/pdfjs/web/locale/gn/viewer.properties | 281 + .../pdfjs/web/locale/gu-IN/viewer.properties | 234 + .../web/pdfjs/web/locale/he/viewer.properties | 281 + .../pdfjs/web/locale/hi-IN/viewer.properties | 234 + .../web/pdfjs/web/locale/hr/viewer.properties | 248 + .../pdfjs/web/locale/hsb/viewer.properties | 281 + .../web/pdfjs/web/locale/hu/viewer.properties | 281 + .../pdfjs/web/locale/hy-AM/viewer.properties | 238 + .../pdfjs/web/locale/hye/viewer.properties | 251 + .../web/pdfjs/web/locale/ia/viewer.properties | 281 + .../web/pdfjs/web/locale/id/viewer.properties | 281 + .../web/pdfjs/web/locale/is/viewer.properties | 281 + .../web/pdfjs/web/locale/it/viewer.properties | 219 + .../web/pdfjs/web/locale/ja/viewer.properties | 281 + .../web/pdfjs/web/locale/ka/viewer.properties | 281 + .../pdfjs/web/locale/kab/viewer.properties | 281 + .../web/pdfjs/web/locale/kk/viewer.properties | 280 + .../web/pdfjs/web/locale/km/viewer.properties | 209 + .../web/pdfjs/web/locale/kn/viewer.properties | 186 + .../web/pdfjs/web/locale/ko/viewer.properties | 279 + .../pdfjs/web/locale/lij/viewer.properties | 234 + .../web/pdfjs/web/locale/lo/viewer.properties | 145 + .../iw/web/pdfjs/web/locale/locale.properties | 327 + .../web/pdfjs/web/locale/lt/viewer.properties | 261 + .../pdfjs/web/locale/ltg/viewer.properties | 212 + .../web/pdfjs/web/locale/lv/viewer.properties | 234 + .../pdfjs/web/locale/meh/viewer.properties | 111 + .../web/pdfjs/web/locale/mk/viewer.properties | 138 + .../web/pdfjs/web/locale/mr/viewer.properties | 230 + .../web/pdfjs/web/locale/ms/viewer.properties | 234 + .../web/pdfjs/web/locale/my/viewer.properties | 190 + .../pdfjs/web/locale/nb-NO/viewer.properties | 281 + .../pdfjs/web/locale/ne-NP/viewer.properties | 217 + .../web/pdfjs/web/locale/nl/viewer.properties | 274 + .../pdfjs/web/locale/nn-NO/viewer.properties | 281 + .../web/pdfjs/web/locale/oc/viewer.properties | 277 + .../pdfjs/web/locale/pa-IN/viewer.properties | 281 + .../web/pdfjs/web/locale/pl/viewer.properties | 281 + .../pdfjs/web/locale/pt-BR/viewer.properties | 281 + .../pdfjs/web/locale/pt-PT/viewer.properties | 281 + .../web/pdfjs/web/locale/rm/viewer.properties | 261 + .../web/pdfjs/web/locale/ro/viewer.properties | 240 + .../web/pdfjs/web/locale/ru/viewer.properties | 281 + .../pdfjs/web/locale/sat/viewer.properties | 197 + .../web/pdfjs/web/locale/sc/viewer.properties | 239 + .../pdfjs/web/locale/scn/viewer.properties | 101 + .../pdfjs/web/locale/sco/viewer.properties | 248 + .../web/pdfjs/web/locale/si/viewer.properties | 204 + .../web/pdfjs/web/locale/sk/viewer.properties | 281 + .../web/pdfjs/web/locale/sl/viewer.properties | 281 + .../pdfjs/web/locale/son/viewer.properties | 172 + .../web/pdfjs/web/locale/sq/viewer.properties | 244 + .../web/pdfjs/web/locale/sr/viewer.properties | 255 + .../pdfjs/web/locale/sv-SE/viewer.properties | 281 + .../pdfjs/web/locale/szl/viewer.properties | 244 + .../web/pdfjs/web/locale/ta/viewer.properties | 193 + .../web/pdfjs/web/locale/te/viewer.properties | 217 + .../web/pdfjs/web/locale/tg/viewer.properties | 281 + .../web/pdfjs/web/locale/th/viewer.properties | 266 + .../web/pdfjs/web/locale/tl/viewer.properties | 242 + .../web/pdfjs/web/locale/tr/viewer.properties | 281 + .../pdfjs/web/locale/trs/viewer.properties | 206 + .../web/pdfjs/web/locale/uk/viewer.properties | 281 + .../web/pdfjs/web/locale/ur/viewer.properties | 238 + .../web/pdfjs/web/locale/uz/viewer.properties | 162 + .../web/pdfjs/web/locale/vi/viewer.properties | 281 + .../web/pdfjs/web/locale/wo/viewer.properties | 122 + .../web/pdfjs/web/locale/xh/viewer.properties | 176 + .../pdfjs/web/locale/zh-CN/viewer.properties | 281 + .../pdfjs/web/locale/zh-TW/viewer.properties | 281 + .../web/standard_fonts/FoxitDingbats.pfb | Bin 0 -> 29513 bytes .../pdfjs/web/standard_fonts/FoxitFixed.pfb | Bin 0 -> 17597 bytes .../web/standard_fonts/FoxitFixedBold.pfb | Bin 0 -> 18055 bytes .../standard_fonts/FoxitFixedBoldItalic.pfb | Bin 0 -> 19151 bytes .../web/standard_fonts/FoxitFixedItalic.pfb | Bin 0 -> 18746 bytes .../pdfjs/web/standard_fonts/FoxitSans.pfb | Bin 0 -> 15025 bytes .../web/standard_fonts/FoxitSansBold.pfb | Bin 0 -> 16344 bytes .../standard_fonts/FoxitSansBoldItalic.pfb | Bin 0 -> 16418 bytes .../web/standard_fonts/FoxitSansItalic.pfb | Bin 0 -> 16339 bytes .../pdfjs/web/standard_fonts/FoxitSerif.pfb | Bin 0 -> 19469 bytes .../web/standard_fonts/FoxitSerifBold.pfb | Bin 0 -> 19395 bytes .../standard_fonts/FoxitSerifBoldItalic.pfb | Bin 0 -> 20733 bytes .../web/standard_fonts/FoxitSerifItalic.pfb | Bin 0 -> 21227 bytes .../pdfjs/web/standard_fonts/FoxitSymbol.pfb | Bin 0 -> 16729 bytes .../pdfjs/web/standard_fonts/LICENSE_FOXIT | 27 + .../web/standard_fonts/LICENSE_LIBERATION | 102 + .../standard_fonts/LiberationSans-Bold.ttf | Bin 0 -> 137052 bytes .../LiberationSans-BoldItalic.ttf | Bin 0 -> 135124 bytes .../standard_fonts/LiberationSans-Italic.ttf | Bin 0 -> 162036 bytes .../standard_fonts/LiberationSans-Regular.ttf | Bin 0 -> 139512 bytes deployment/iw/web/pdfjs/web/viewer.css | 3001 + deployment/iw/web/pdfjs/web/viewer.html | 458 + deployment/iw/web/pdfjs/web/viewer.js | 18626 ++++ deployment/iw/web/pdfjs/web/viewer.js.map | 1 + deployment/ow/.env | 72 + deployment/ow/.gitignore | 8 + deployment/ow/README.md | 111 + deployment/ow/VERSION.txt | 19 + deployment/ow/config/application.yml | 110 + deployment/ow/docker-compose.yml | 192 + deployment/ow/nginx/web.conf | 44 + deployment/ow/scripts/install.sh | 198 + deployment/ow/sql/01-init-table.sql | 2083 + deployment/ow/sql/02-init-data.sql | 46 + deployment/ow/sql/README.md | 42 + .../upgrade-20260914-upload-config.sql | 62 + .../sql/upgrade/upgrade-20260915-release.sql | 90 + ...pgrade-20261101-meshsafe-file-security.sql | 71 + .../upgrade-20261103-transfer-perf.sql | 26 + deployment/ow/web/assets/(user)-DRkYT5Du.js | 75 + deployment/ow/web/assets/admin--lPu8JPk.js | 1 + .../ow/web/assets/app-layout-Dc-t6FXo.js | 1 + deployment/ow/web/assets/bg-CBsBX9E3.png | Bin 0 -> 292150 bytes .../ow/web/assets/chevron-left-Dq7KfPwg.js | 1 + .../ow/web/assets/chevron-right-UmT5k51o.js | 1 + deployment/ow/web/assets/console-C_pAJOL9.js | 2 + .../ow/web/assets/data-table-B1a8BMaf.js | 4 + .../web/assets/date-range-picker-CAMQRUB2.js | 1 + deployment/ow/web/assets/dialog-ITi__DUr.js | 1 + .../assets/directory-breadcrumb-BIvEu5Qr.js | 1 + deployment/ow/web/assets/dist-BfmPJzXI.js | 1 + deployment/ow/web/assets/dist-C45nHpjp.js | 1 + deployment/ow/web/assets/dist-CPAz9rrj.js | 1 + deployment/ow/web/assets/dist-CVuPtwWX.js | 1 + .../web/assets/edit-user-dialog-CGOttUMI.js | 1 + deployment/ow/web/assets/es-C8YeqDL4.js | 5 + deployment/ow/web/assets/extract-DyNQGmLd.js | 1 + deployment/ow/web/assets/file-DlDBClxy.js | 1 + .../assets/file-category-filter-BmGVvDiP.js | 82 + .../assets/file-category-filter-DdKuH37F.css | 1 + .../ow/web/assets/file-record-DMzz0W98.js | 1 + .../ow/web/assets/file-type-BWBY7uVM.js | 1 + deployment/ow/web/assets/folder-DDlXKK_x.js | 1 + .../ow/web/assets/folder-input-lYe4JQ9T.js | 1 + deployment/ow/web/assets/index-BbZGMJ6u.css | 1 + deployment/ow/web/assets/index-CjPx3lfT.js | 118 + deployment/ow/web/assets/inside-DoinnQuQ.js | 1 + deployment/ow/web/assets/list-BpwHl4Fr.js | 1 + deployment/ow/web/assets/login-Bqm6bkYc.js | 1 + deployment/ow/web/assets/logo-CE4fGrmK.png | Bin 0 -> 386515 bytes deployment/ow/web/assets/my-DXWycMQN.js | 3 + .../ow/web/assets/org-account-ciPnuQay.js | 1 + deployment/ow/web/assets/org-djpHv-g6.js | 1 + deployment/ow/web/assets/outside-DI__VYnY.js | 1 + .../ow/web/assets/pagination-DP8LewWY.js | 1 + deployment/ow/web/assets/plus-CC0y9Hxa.js | 1 + .../ow/web/assets/prop-types-DQ8VUF3V.js | 1 + .../ow/web/assets/radio-group-rg4nj-El.js | 1 + deployment/ow/web/assets/recycle-T9KHbr3K.js | 1 + .../web/assets/remove-file-dialog-DzvgYKQv.js | 1 + deployment/ow/web/assets/route-BB8HuUBN.js | 1 + deployment/ow/web/assets/route-Zyews8Cg.js | 1 + deployment/ow/web/assets/search-C8UYEB7H.js | 1 + deployment/ow/web/assets/select-C0ycPDDY.js | 1 + deployment/ow/web/assets/share-D_cVMkDz.js | 1 + .../ow/web/assets/shield-alert-D0ogkGSv.js | 1 + deployment/ow/web/assets/tabs-M_SCzRq7.js | 1 + deployment/ow/web/assets/tenant-CPHFJUz8.js | 1 + deployment/ow/web/assets/textarea-CVosTSyk.js | 1 + deployment/ow/web/assets/upload-BqFYY0Ao.js | 1 + .../ow/web/assets/upload-config-DRtEZBe2.js | 2 + .../ow/web/assets/use-fetch-files-CTmvUeuw.js | 1 + .../assets/use-security-enabled-BPm4WtM5.js | 1 + .../web/assets/use-upload-config-D-wQpkWo.js | 1 + .../ow/web/assets/useLocation-CgoDLPeV.js | 1 + deployment/ow/web/assets/useQuery-Hj7E43Q9.js | 1 + deployment/ow/web/assets/user-DH9RBR-X.js | 4 + deployment/ow/web/assets/x-CASPj4fT.js | 1 + deployment/ow/web/assets/xlsx-Cs4_i-yi.js | 104 + deployment/ow/web/favicon.png | Bin 0 -> 126870 bytes deployment/ow/web/index.html | 44 + deployment/ow/web/pdfjs/LICENSE | 177 + deployment/ow/web/pdfjs/build/pdf.js | 24450 +++++ deployment/ow/web/pdfjs/build/pdf.js.map | 1 + deployment/ow/web/pdfjs/build/pdf.sandbox.js | 316 + .../ow/web/pdfjs/build/pdf.sandbox.js.map | 1 + deployment/ow/web/pdfjs/build/pdf.worker.js | 79063 ++++++++++++++++ .../ow/web/pdfjs/build/pdf.worker.js.map | 1 + .../ow/web/pdfjs/web/cmaps/78-EUC-H.bcmap | Bin 0 -> 2404 bytes .../ow/web/pdfjs/web/cmaps/78-EUC-V.bcmap | Bin 0 -> 173 bytes deployment/ow/web/pdfjs/web/cmaps/78-H.bcmap | Bin 0 -> 2379 bytes .../ow/web/pdfjs/web/cmaps/78-RKSJ-H.bcmap | Bin 0 -> 2398 bytes .../ow/web/pdfjs/web/cmaps/78-RKSJ-V.bcmap | Bin 0 -> 173 bytes deployment/ow/web/pdfjs/web/cmaps/78-V.bcmap | Bin 0 -> 169 bytes .../ow/web/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap | Bin 0 -> 2651 bytes .../ow/web/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap | Bin 0 -> 290 bytes .../ow/web/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap | Bin 0 -> 905 bytes .../ow/web/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap | Bin 0 -> 721 bytes .../ow/web/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap | Bin 0 -> 290 bytes .../ow/web/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap | Bin 0 -> 715 bytes .../ow/web/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap | Bin 0 -> 291 bytes .../ow/web/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap | Bin 0 -> 982 bytes .../ow/web/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap | Bin 0 -> 260 bytes deployment/ow/web/pdfjs/web/cmaps/Add-H.bcmap | Bin 0 -> 2419 bytes .../ow/web/pdfjs/web/cmaps/Add-RKSJ-H.bcmap | Bin 0 -> 2413 bytes .../ow/web/pdfjs/web/cmaps/Add-RKSJ-V.bcmap | Bin 0 -> 287 bytes deployment/ow/web/pdfjs/web/cmaps/Add-V.bcmap | Bin 0 -> 282 bytes .../ow/web/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap | Bin 0 -> 317 bytes .../ow/web/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap | Bin 0 -> 371 bytes .../ow/web/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap | Bin 0 -> 376 bytes .../ow/web/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap | Bin 0 -> 401 bytes .../ow/web/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap | Bin 0 -> 405 bytes .../ow/web/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap | Bin 0 -> 406 bytes .../ow/web/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap | Bin 0 -> 406 bytes .../web/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap | Bin 0 -> 41193 bytes .../ow/web/pdfjs/web/cmaps/Adobe-GB1-0.bcmap | Bin 0 -> 217 bytes .../ow/web/pdfjs/web/cmaps/Adobe-GB1-1.bcmap | Bin 0 -> 250 bytes .../ow/web/pdfjs/web/cmaps/Adobe-GB1-2.bcmap | Bin 0 -> 465 bytes .../ow/web/pdfjs/web/cmaps/Adobe-GB1-3.bcmap | Bin 0 -> 470 bytes .../ow/web/pdfjs/web/cmaps/Adobe-GB1-4.bcmap | Bin 0 -> 601 bytes .../ow/web/pdfjs/web/cmaps/Adobe-GB1-5.bcmap | Bin 0 -> 625 bytes .../web/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap | Bin 0 -> 33974 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap | Bin 0 -> 225 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap | Bin 0 -> 226 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap | Bin 0 -> 233 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap | Bin 0 -> 242 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap | Bin 0 -> 337 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap | Bin 0 -> 430 bytes .../web/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap | Bin 0 -> 485 bytes .../pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap | Bin 0 -> 40951 bytes .../web/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap | Bin 0 -> 241 bytes .../web/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap | Bin 0 -> 386 bytes .../web/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap | Bin 0 -> 391 bytes .../pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap | Bin 0 -> 23293 bytes deployment/ow/web/pdfjs/web/cmaps/B5-H.bcmap | Bin 0 -> 1086 bytes deployment/ow/web/pdfjs/web/cmaps/B5-V.bcmap | Bin 0 -> 142 bytes .../ow/web/pdfjs/web/cmaps/B5pc-H.bcmap | Bin 0 -> 1099 bytes .../ow/web/pdfjs/web/cmaps/B5pc-V.bcmap | Bin 0 -> 144 bytes .../ow/web/pdfjs/web/cmaps/CNS-EUC-H.bcmap | Bin 0 -> 1780 bytes .../ow/web/pdfjs/web/cmaps/CNS-EUC-V.bcmap | Bin 0 -> 1920 bytes .../ow/web/pdfjs/web/cmaps/CNS1-H.bcmap | Bin 0 -> 706 bytes .../ow/web/pdfjs/web/cmaps/CNS1-V.bcmap | Bin 0 -> 143 bytes .../ow/web/pdfjs/web/cmaps/CNS2-H.bcmap | Bin 0 -> 504 bytes .../ow/web/pdfjs/web/cmaps/CNS2-V.bcmap | 3 + .../ow/web/pdfjs/web/cmaps/ETHK-B5-H.bcmap | Bin 0 -> 4426 bytes .../ow/web/pdfjs/web/cmaps/ETHK-B5-V.bcmap | Bin 0 -> 158 bytes .../ow/web/pdfjs/web/cmaps/ETen-B5-H.bcmap | Bin 0 -> 1125 bytes .../ow/web/pdfjs/web/cmaps/ETen-B5-V.bcmap | Bin 0 -> 158 bytes .../ow/web/pdfjs/web/cmaps/ETenms-B5-H.bcmap | 3 + .../ow/web/pdfjs/web/cmaps/ETenms-B5-V.bcmap | Bin 0 -> 172 bytes deployment/ow/web/pdfjs/web/cmaps/EUC-H.bcmap | Bin 0 -> 578 bytes deployment/ow/web/pdfjs/web/cmaps/EUC-V.bcmap | Bin 0 -> 170 bytes deployment/ow/web/pdfjs/web/cmaps/Ext-H.bcmap | Bin 0 -> 2536 bytes .../ow/web/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap | Bin 0 -> 2542 bytes .../ow/web/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap | Bin 0 -> 218 bytes deployment/ow/web/pdfjs/web/cmaps/Ext-V.bcmap | Bin 0 -> 215 bytes .../ow/web/pdfjs/web/cmaps/GB-EUC-H.bcmap | Bin 0 -> 549 bytes .../ow/web/pdfjs/web/cmaps/GB-EUC-V.bcmap | Bin 0 -> 179 bytes deployment/ow/web/pdfjs/web/cmaps/GB-H.bcmap | 4 + deployment/ow/web/pdfjs/web/cmaps/GB-V.bcmap | Bin 0 -> 175 bytes .../ow/web/pdfjs/web/cmaps/GBK-EUC-H.bcmap | Bin 0 -> 14692 bytes .../ow/web/pdfjs/web/cmaps/GBK-EUC-V.bcmap | Bin 0 -> 180 bytes .../ow/web/pdfjs/web/cmaps/GBK2K-H.bcmap | Bin 0 -> 19662 bytes .../ow/web/pdfjs/web/cmaps/GBK2K-V.bcmap | Bin 0 -> 219 bytes .../ow/web/pdfjs/web/cmaps/GBKp-EUC-H.bcmap | Bin 0 -> 14686 bytes .../ow/web/pdfjs/web/cmaps/GBKp-EUC-V.bcmap | Bin 0 -> 181 bytes .../ow/web/pdfjs/web/cmaps/GBT-EUC-H.bcmap | Bin 0 -> 7290 bytes .../ow/web/pdfjs/web/cmaps/GBT-EUC-V.bcmap | Bin 0 -> 180 bytes deployment/ow/web/pdfjs/web/cmaps/GBT-H.bcmap | Bin 0 -> 7269 bytes deployment/ow/web/pdfjs/web/cmaps/GBT-V.bcmap | Bin 0 -> 176 bytes .../ow/web/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap | Bin 0 -> 7298 bytes .../ow/web/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap | Bin 0 -> 182 bytes .../ow/web/pdfjs/web/cmaps/GBpc-EUC-H.bcmap | Bin 0 -> 557 bytes .../ow/web/pdfjs/web/cmaps/GBpc-EUC-V.bcmap | Bin 0 -> 181 bytes deployment/ow/web/pdfjs/web/cmaps/H.bcmap | Bin 0 -> 553 bytes .../ow/web/pdfjs/web/cmaps/HKdla-B5-H.bcmap | Bin 0 -> 2654 bytes .../ow/web/pdfjs/web/cmaps/HKdla-B5-V.bcmap | Bin 0 -> 148 bytes .../ow/web/pdfjs/web/cmaps/HKdlb-B5-H.bcmap | Bin 0 -> 2414 bytes .../ow/web/pdfjs/web/cmaps/HKdlb-B5-V.bcmap | Bin 0 -> 148 bytes .../ow/web/pdfjs/web/cmaps/HKgccs-B5-H.bcmap | Bin 0 -> 2292 bytes .../ow/web/pdfjs/web/cmaps/HKgccs-B5-V.bcmap | Bin 0 -> 149 bytes .../ow/web/pdfjs/web/cmaps/HKm314-B5-H.bcmap | Bin 0 -> 1772 bytes .../ow/web/pdfjs/web/cmaps/HKm314-B5-V.bcmap | Bin 0 -> 149 bytes .../ow/web/pdfjs/web/cmaps/HKm471-B5-H.bcmap | Bin 0 -> 2171 bytes .../ow/web/pdfjs/web/cmaps/HKm471-B5-V.bcmap | Bin 0 -> 149 bytes .../ow/web/pdfjs/web/cmaps/HKscs-B5-H.bcmap | Bin 0 -> 4437 bytes .../ow/web/pdfjs/web/cmaps/HKscs-B5-V.bcmap | Bin 0 -> 159 bytes .../ow/web/pdfjs/web/cmaps/Hankaku.bcmap | Bin 0 -> 132 bytes .../ow/web/pdfjs/web/cmaps/Hiragana.bcmap | Bin 0 -> 124 bytes .../ow/web/pdfjs/web/cmaps/KSC-EUC-H.bcmap | Bin 0 -> 1848 bytes .../ow/web/pdfjs/web/cmaps/KSC-EUC-V.bcmap | Bin 0 -> 164 bytes deployment/ow/web/pdfjs/web/cmaps/KSC-H.bcmap | Bin 0 -> 1831 bytes .../ow/web/pdfjs/web/cmaps/KSC-Johab-H.bcmap | Bin 0 -> 16791 bytes .../ow/web/pdfjs/web/cmaps/KSC-Johab-V.bcmap | Bin 0 -> 166 bytes deployment/ow/web/pdfjs/web/cmaps/KSC-V.bcmap | Bin 0 -> 160 bytes .../ow/web/pdfjs/web/cmaps/KSCms-UHC-H.bcmap | Bin 0 -> 2787 bytes .../web/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap | Bin 0 -> 2789 bytes .../web/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap | Bin 0 -> 169 bytes .../ow/web/pdfjs/web/cmaps/KSCms-UHC-V.bcmap | Bin 0 -> 166 bytes .../ow/web/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap | Bin 0 -> 2024 bytes .../ow/web/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap | Bin 0 -> 166 bytes .../ow/web/pdfjs/web/cmaps/Katakana.bcmap | Bin 0 -> 100 bytes deployment/ow/web/pdfjs/web/cmaps/LICENSE | 36 + deployment/ow/web/pdfjs/web/cmaps/NWP-H.bcmap | Bin 0 -> 2765 bytes deployment/ow/web/pdfjs/web/cmaps/NWP-V.bcmap | Bin 0 -> 252 bytes .../ow/web/pdfjs/web/cmaps/RKSJ-H.bcmap | Bin 0 -> 534 bytes .../ow/web/pdfjs/web/cmaps/RKSJ-V.bcmap | Bin 0 -> 170 bytes deployment/ow/web/pdfjs/web/cmaps/Roman.bcmap | Bin 0 -> 96 bytes .../web/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap | Bin 0 -> 48280 bytes .../web/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap | Bin 0 -> 156 bytes .../web/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap | Bin 0 -> 50419 bytes .../web/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap | Bin 0 -> 156 bytes .../web/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap | Bin 0 -> 52679 bytes .../web/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap | Bin 0 -> 160 bytes .../web/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap | Bin 0 -> 53629 bytes .../web/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap | Bin 0 -> 157 bytes .../ow/web/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap | Bin 0 -> 43366 bytes .../ow/web/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap | Bin 0 -> 193 bytes .../web/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap | Bin 0 -> 44086 bytes .../web/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap | Bin 0 -> 178 bytes .../web/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap | Bin 0 -> 45738 bytes .../web/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap | Bin 0 -> 182 bytes .../ow/web/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap | Bin 0 -> 46837 bytes .../ow/web/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap | Bin 0 -> 181 bytes .../web/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap | Bin 0 -> 25439 bytes .../pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap | Bin 0 -> 119 bytes .../pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap | Bin 0 -> 680 bytes .../web/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap | Bin 0 -> 664 bytes .../web/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap | Bin 0 -> 39443 bytes .../web/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap | Bin 0 -> 643 bytes .../web/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap | Bin 0 -> 40539 bytes .../web/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap | Bin 0 -> 677 bytes .../web/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap | Bin 0 -> 41695 bytes .../web/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap | Bin 0 -> 678 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap | Bin 0 -> 39534 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap | Bin 0 -> 647 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap | Bin 0 -> 40630 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap | Bin 0 -> 681 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap | Bin 0 -> 41779 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap | Bin 0 -> 682 bytes .../pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap | Bin 0 -> 705 bytes .../pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap | Bin 0 -> 689 bytes .../pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap | Bin 0 -> 726 bytes .../pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap | Bin 0 -> 40517 bytes .../pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap | Bin 0 -> 684 bytes .../web/cmaps/UniJISX02132004-UTF32-H.bcmap | Bin 0 -> 40608 bytes .../web/cmaps/UniJISX02132004-UTF32-V.bcmap | Bin 0 -> 688 bytes .../ow/web/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap | Bin 0 -> 25783 bytes .../ow/web/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap | Bin 0 -> 178 bytes .../web/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap | Bin 0 -> 26327 bytes .../web/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap | Bin 0 -> 164 bytes .../web/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap | Bin 0 -> 26451 bytes .../web/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap | Bin 0 -> 168 bytes .../ow/web/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap | Bin 0 -> 27790 bytes .../ow/web/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap | Bin 0 -> 169 bytes deployment/ow/web/pdfjs/web/cmaps/V.bcmap | Bin 0 -> 166 bytes .../ow/web/pdfjs/web/cmaps/WP-Symbol.bcmap | Bin 0 -> 179 bytes .../web/compressed.tracemonkey-pldi-09.pdf | Bin 0 -> 1016315 bytes deployment/ow/web/pdfjs/web/debugger.css | 107 + deployment/ow/web/pdfjs/web/debugger.js | 612 + .../web/pdfjs/web/images/annotation-check.svg | 11 + .../pdfjs/web/images/annotation-comment.svg | 16 + .../web/pdfjs/web/images/annotation-help.svg | 26 + .../pdfjs/web/images/annotation-insert.svg | 10 + .../web/pdfjs/web/images/annotation-key.svg | 11 + .../web/images/annotation-newparagraph.svg | 11 + .../pdfjs/web/images/annotation-noicon.svg | 7 + .../web/pdfjs/web/images/annotation-note.svg | 42 + .../pdfjs/web/images/annotation-paragraph.svg | 16 + .../pdfjs/web/images/findbarButton-next.svg | 4 + .../web/images/findbarButton-previous.svg | 4 + .../ow/web/pdfjs/web/images/loading-dark.svg | 24 + .../ow/web/pdfjs/web/images/loading-icon.gif | Bin 0 -> 2545 bytes .../ow/web/pdfjs/web/images/loading.svg | 1 + ...ondaryToolbarButton-documentProperties.svg | 15 + .../secondaryToolbarButton-firstPage.svg | 1 + .../secondaryToolbarButton-handTool.svg | 1 + .../secondaryToolbarButton-lastPage.svg | 1 + .../secondaryToolbarButton-rotateCcw.svg | 1 + .../secondaryToolbarButton-rotateCw.svg | 4 + ...econdaryToolbarButton-scrollHorizontal.svg | 1 + .../secondaryToolbarButton-scrollPage.svg | 1 + .../secondaryToolbarButton-scrollVertical.svg | 1 + .../secondaryToolbarButton-scrollWrapped.svg | 1 + .../secondaryToolbarButton-selectTool.svg | 4 + .../secondaryToolbarButton-spreadEven.svg | 1 + .../secondaryToolbarButton-spreadNone.svg | 1 + .../secondaryToolbarButton-spreadOdd.svg | 1 + deployment/ow/web/pdfjs/web/images/shadow.png | Bin 0 -> 269 bytes .../web/images/toolbarButton-bookmark.svg | 1 + .../toolbarButton-currentOutlineItem.svg | 1 + .../web/images/toolbarButton-download.svg | 4 + .../images/toolbarButton-editorFreeText.svg | 24 + .../web/images/toolbarButton-editorInk.svg | 9 + .../web/images/toolbarButton-menuArrow.svg | 1 + .../web/images/toolbarButton-openFile.svg | 4 + .../web/images/toolbarButton-pageDown.svg | 7 + .../pdfjs/web/images/toolbarButton-pageUp.svg | 12 + .../images/toolbarButton-presentationMode.svg | 1 + .../pdfjs/web/images/toolbarButton-print.svg | 4 + .../pdfjs/web/images/toolbarButton-search.svg | 4 + .../toolbarButton-secondaryToolbarToggle.svg | 4 + .../images/toolbarButton-sidebarToggle.svg | 4 + .../images/toolbarButton-viewAttachments.svg | 1 + .../web/images/toolbarButton-viewLayers.svg | 1 + .../web/images/toolbarButton-viewOutline.svg | 1 + .../images/toolbarButton-viewThumbnail.svg | 4 + .../pdfjs/web/images/toolbarButton-zoomIn.svg | 4 + .../web/images/toolbarButton-zoomOut.svg | 4 + .../pdfjs/web/images/treeitem-collapsed.svg | 1 + .../pdfjs/web/images/treeitem-expanded.svg | 1 + .../pdfjs/web/locale/ach/viewer.properties | 199 + .../web/pdfjs/web/locale/af/viewer.properties | 176 + .../web/pdfjs/web/locale/an/viewer.properties | 242 + .../web/pdfjs/web/locale/ar/viewer.properties | 246 + .../pdfjs/web/locale/ast/viewer.properties | 207 + .../web/pdfjs/web/locale/az/viewer.properties | 242 + .../web/pdfjs/web/locale/be/viewer.properties | 281 + .../web/pdfjs/web/locale/bg/viewer.properties | 234 + .../web/pdfjs/web/locale/bn/viewer.properties | 238 + .../web/pdfjs/web/locale/bo/viewer.properties | 237 + .../web/pdfjs/web/locale/br/viewer.properties | 246 + .../pdfjs/web/locale/brx/viewer.properties | 204 + .../web/pdfjs/web/locale/bs/viewer.properties | 193 + .../web/pdfjs/web/locale/ca/viewer.properties | 250 + .../pdfjs/web/locale/cak/viewer.properties | 248 + .../pdfjs/web/locale/ckb/viewer.properties | 233 + .../web/pdfjs/web/locale/cs/viewer.properties | 279 + .../web/pdfjs/web/locale/cy/viewer.properties | 281 + .../web/pdfjs/web/locale/da/viewer.properties | 267 + .../web/pdfjs/web/locale/de/viewer.properties | 281 + .../pdfjs/web/locale/dsb/viewer.properties | 281 + .../web/pdfjs/web/locale/el/viewer.properties | 281 + .../pdfjs/web/locale/en-CA/viewer.properties | 269 + .../pdfjs/web/locale/en-GB/viewer.properties | 281 + .../pdfjs/web/locale/en-US/viewer.properties | 271 + .../web/pdfjs/web/locale/eo/viewer.properties | 281 + .../pdfjs/web/locale/es-AR/viewer.properties | 281 + .../pdfjs/web/locale/es-CL/viewer.properties | 281 + .../pdfjs/web/locale/es-ES/viewer.properties | 269 + .../pdfjs/web/locale/es-MX/viewer.properties | 281 + .../web/pdfjs/web/locale/et/viewer.properties | 269 + .../web/pdfjs/web/locale/eu/viewer.properties | 269 + .../web/pdfjs/web/locale/fa/viewer.properties | 215 + .../web/pdfjs/web/locale/ff/viewer.properties | 234 + .../web/pdfjs/web/locale/fi/viewer.properties | 267 + .../web/pdfjs/web/locale/fr/viewer.properties | 279 + .../pdfjs/web/locale/fy-NL/viewer.properties | 281 + .../pdfjs/web/locale/ga-IE/viewer.properties | 201 + .../web/pdfjs/web/locale/gd/viewer.properties | 248 + .../web/pdfjs/web/locale/gl/viewer.properties | 248 + .../web/pdfjs/web/locale/gn/viewer.properties | 281 + .../pdfjs/web/locale/gu-IN/viewer.properties | 234 + .../web/pdfjs/web/locale/he/viewer.properties | 281 + .../pdfjs/web/locale/hi-IN/viewer.properties | 234 + .../web/pdfjs/web/locale/hr/viewer.properties | 248 + .../pdfjs/web/locale/hsb/viewer.properties | 281 + .../web/pdfjs/web/locale/hu/viewer.properties | 281 + .../pdfjs/web/locale/hy-AM/viewer.properties | 238 + .../pdfjs/web/locale/hye/viewer.properties | 251 + .../web/pdfjs/web/locale/ia/viewer.properties | 281 + .../web/pdfjs/web/locale/id/viewer.properties | 281 + .../web/pdfjs/web/locale/is/viewer.properties | 281 + .../web/pdfjs/web/locale/it/viewer.properties | 219 + .../web/pdfjs/web/locale/ja/viewer.properties | 281 + .../web/pdfjs/web/locale/ka/viewer.properties | 281 + .../pdfjs/web/locale/kab/viewer.properties | 281 + .../web/pdfjs/web/locale/kk/viewer.properties | 280 + .../web/pdfjs/web/locale/km/viewer.properties | 209 + .../web/pdfjs/web/locale/kn/viewer.properties | 186 + .../web/pdfjs/web/locale/ko/viewer.properties | 279 + .../pdfjs/web/locale/lij/viewer.properties | 234 + .../web/pdfjs/web/locale/lo/viewer.properties | 145 + .../ow/web/pdfjs/web/locale/locale.properties | 327 + .../web/pdfjs/web/locale/lt/viewer.properties | 261 + .../pdfjs/web/locale/ltg/viewer.properties | 212 + .../web/pdfjs/web/locale/lv/viewer.properties | 234 + .../pdfjs/web/locale/meh/viewer.properties | 111 + .../web/pdfjs/web/locale/mk/viewer.properties | 138 + .../web/pdfjs/web/locale/mr/viewer.properties | 230 + .../web/pdfjs/web/locale/ms/viewer.properties | 234 + .../web/pdfjs/web/locale/my/viewer.properties | 190 + .../pdfjs/web/locale/nb-NO/viewer.properties | 281 + .../pdfjs/web/locale/ne-NP/viewer.properties | 217 + .../web/pdfjs/web/locale/nl/viewer.properties | 274 + .../pdfjs/web/locale/nn-NO/viewer.properties | 281 + .../web/pdfjs/web/locale/oc/viewer.properties | 277 + .../pdfjs/web/locale/pa-IN/viewer.properties | 281 + .../web/pdfjs/web/locale/pl/viewer.properties | 281 + .../pdfjs/web/locale/pt-BR/viewer.properties | 281 + .../pdfjs/web/locale/pt-PT/viewer.properties | 281 + .../web/pdfjs/web/locale/rm/viewer.properties | 261 + .../web/pdfjs/web/locale/ro/viewer.properties | 240 + .../web/pdfjs/web/locale/ru/viewer.properties | 281 + .../pdfjs/web/locale/sat/viewer.properties | 197 + .../web/pdfjs/web/locale/sc/viewer.properties | 239 + .../pdfjs/web/locale/scn/viewer.properties | 101 + .../pdfjs/web/locale/sco/viewer.properties | 248 + .../web/pdfjs/web/locale/si/viewer.properties | 204 + .../web/pdfjs/web/locale/sk/viewer.properties | 281 + .../web/pdfjs/web/locale/sl/viewer.properties | 281 + .../pdfjs/web/locale/son/viewer.properties | 172 + .../web/pdfjs/web/locale/sq/viewer.properties | 244 + .../web/pdfjs/web/locale/sr/viewer.properties | 255 + .../pdfjs/web/locale/sv-SE/viewer.properties | 281 + .../pdfjs/web/locale/szl/viewer.properties | 244 + .../web/pdfjs/web/locale/ta/viewer.properties | 193 + .../web/pdfjs/web/locale/te/viewer.properties | 217 + .../web/pdfjs/web/locale/tg/viewer.properties | 281 + .../web/pdfjs/web/locale/th/viewer.properties | 266 + .../web/pdfjs/web/locale/tl/viewer.properties | 242 + .../web/pdfjs/web/locale/tr/viewer.properties | 281 + .../pdfjs/web/locale/trs/viewer.properties | 206 + .../web/pdfjs/web/locale/uk/viewer.properties | 281 + .../web/pdfjs/web/locale/ur/viewer.properties | 238 + .../web/pdfjs/web/locale/uz/viewer.properties | 162 + .../web/pdfjs/web/locale/vi/viewer.properties | 281 + .../web/pdfjs/web/locale/wo/viewer.properties | 122 + .../web/pdfjs/web/locale/xh/viewer.properties | 176 + .../pdfjs/web/locale/zh-CN/viewer.properties | 281 + .../pdfjs/web/locale/zh-TW/viewer.properties | 281 + .../web/standard_fonts/FoxitDingbats.pfb | Bin 0 -> 29513 bytes .../pdfjs/web/standard_fonts/FoxitFixed.pfb | Bin 0 -> 17597 bytes .../web/standard_fonts/FoxitFixedBold.pfb | Bin 0 -> 18055 bytes .../standard_fonts/FoxitFixedBoldItalic.pfb | Bin 0 -> 19151 bytes .../web/standard_fonts/FoxitFixedItalic.pfb | Bin 0 -> 18746 bytes .../pdfjs/web/standard_fonts/FoxitSans.pfb | Bin 0 -> 15025 bytes .../web/standard_fonts/FoxitSansBold.pfb | Bin 0 -> 16344 bytes .../standard_fonts/FoxitSansBoldItalic.pfb | Bin 0 -> 16418 bytes .../web/standard_fonts/FoxitSansItalic.pfb | Bin 0 -> 16339 bytes .../pdfjs/web/standard_fonts/FoxitSerif.pfb | Bin 0 -> 19469 bytes .../web/standard_fonts/FoxitSerifBold.pfb | Bin 0 -> 19395 bytes .../standard_fonts/FoxitSerifBoldItalic.pfb | Bin 0 -> 20733 bytes .../web/standard_fonts/FoxitSerifItalic.pfb | Bin 0 -> 21227 bytes .../pdfjs/web/standard_fonts/FoxitSymbol.pfb | Bin 0 -> 16729 bytes .../pdfjs/web/standard_fonts/LICENSE_FOXIT | 27 + .../web/standard_fonts/LICENSE_LIBERATION | 102 + .../standard_fonts/LiberationSans-Bold.ttf | Bin 0 -> 137052 bytes .../LiberationSans-BoldItalic.ttf | Bin 0 -> 135124 bytes .../standard_fonts/LiberationSans-Italic.ttf | Bin 0 -> 162036 bytes .../standard_fonts/LiberationSans-Regular.ttf | Bin 0 -> 139512 bytes deployment/ow/web/pdfjs/web/viewer.css | 3001 + deployment/ow/web/pdfjs/web/viewer.html | 458 + deployment/ow/web/pdfjs/web/viewer.js | 18626 ++++ deployment/ow/web/pdfjs/web/viewer.js.map | 1 + deployment/scripts/build-package.sh | 150 + deployment/部署说明.md | 238 + 884 files changed, 316455 insertions(+) create mode 100644 deployment/iw/.env create mode 100644 deployment/iw/.gitignore create mode 100644 deployment/iw/README.md create mode 100644 deployment/iw/VERSION.txt create mode 100644 deployment/iw/config/application.yml create mode 100644 deployment/iw/docker-compose.yml create mode 100644 deployment/iw/nginx/web.conf create mode 100755 deployment/iw/scripts/install.sh create mode 100644 deployment/iw/sql/01-init-table.sql create mode 100644 deployment/iw/sql/02-init-data.sql create mode 100644 deployment/iw/sql/README.md create mode 100644 deployment/iw/sql/upgrade/upgrade-20260914-upload-config.sql create mode 100644 deployment/iw/sql/upgrade/upgrade-20260915-release.sql create mode 100644 deployment/iw/sql/upgrade/upgrade-20261101-meshsafe-file-security.sql create mode 100644 deployment/iw/sql/upgrade/upgrade-20261103-transfer-perf.sql create mode 100644 deployment/iw/web/assets/(user)-ByN4Axee.js create mode 100644 deployment/iw/web/assets/admin-V-3Z0PVJ.js create mode 100644 deployment/iw/web/assets/app-layout-D4ftBqmM.js create mode 100644 deployment/iw/web/assets/bg-CBsBX9E3.png create mode 100644 deployment/iw/web/assets/chevron-left-r2x2HO6r.js create mode 100644 deployment/iw/web/assets/chevron-right-_MvSGoRx.js create mode 100644 deployment/iw/web/assets/console-nn2bY2CJ.js create mode 100644 deployment/iw/web/assets/data-table-CEq6a930.js create mode 100644 deployment/iw/web/assets/date-range-picker-CAdUnH9W.js create mode 100644 deployment/iw/web/assets/dialog-CnxDxMp1.js create mode 100644 deployment/iw/web/assets/directory-breadcrumb-u3uCxukv.js create mode 100644 deployment/iw/web/assets/dist-2m9EwrEG.js create mode 100644 deployment/iw/web/assets/dist-7VFSSFOV.js create mode 100644 deployment/iw/web/assets/dist-AWHq1sQs.js create mode 100644 deployment/iw/web/assets/dist-CpxP8T7M.js create mode 100644 deployment/iw/web/assets/edit-user-dialog-DTs4QrEM.js create mode 100644 deployment/iw/web/assets/es-6YDPW35u.js create mode 100644 deployment/iw/web/assets/extract-sa8PNFSm.js create mode 100644 deployment/iw/web/assets/file-COj1kCUn.js create mode 100644 deployment/iw/web/assets/file-category-filter-BIAErrxo.js create mode 100644 deployment/iw/web/assets/file-category-filter-DdKuH37F.css create mode 100644 deployment/iw/web/assets/file-record-xAA0hSRQ.js create mode 100644 deployment/iw/web/assets/file-type-BBx4p_T6.js create mode 100644 deployment/iw/web/assets/folder-Dl7FxCLT.js create mode 100644 deployment/iw/web/assets/folder-input--tEWrMtP.js create mode 100644 deployment/iw/web/assets/index-BaTxSAlR.js create mode 100644 deployment/iw/web/assets/index-BbZGMJ6u.css create mode 100644 deployment/iw/web/assets/inside-BDK478rm.js create mode 100644 deployment/iw/web/assets/list-DFASxSFf.js create mode 100644 deployment/iw/web/assets/login-AXVtM6Py.js create mode 100644 deployment/iw/web/assets/logo-CE4fGrmK.png create mode 100644 deployment/iw/web/assets/my-C6gzFuIT.js create mode 100644 deployment/iw/web/assets/org-CX5LJyS0.js create mode 100644 deployment/iw/web/assets/org-account-BvqGo47r.js create mode 100644 deployment/iw/web/assets/outside-DtRMqIkz.js create mode 100644 deployment/iw/web/assets/pagination-Bragnnjj.js create mode 100644 deployment/iw/web/assets/plus-BHIlMeNy.js create mode 100644 deployment/iw/web/assets/prop-types-BuNDdpC2.js create mode 100644 deployment/iw/web/assets/radio-group-dGI8aZOA.js create mode 100644 deployment/iw/web/assets/recycle-CSeB7_Hw.js create mode 100644 deployment/iw/web/assets/remove-file-dialog-cN0TGs4y.js create mode 100644 deployment/iw/web/assets/route-C-dN6SG2.js create mode 100644 deployment/iw/web/assets/route-yMj8live.js create mode 100644 deployment/iw/web/assets/search-BGsuWyQ1.js create mode 100644 deployment/iw/web/assets/select-stsOu5jD.js create mode 100644 deployment/iw/web/assets/share-D-HlQYDW.js create mode 100644 deployment/iw/web/assets/shield-alert-XSqo2W3w.js create mode 100644 deployment/iw/web/assets/tabs-DopbVsQe.js create mode 100644 deployment/iw/web/assets/tenant-DS3zyWsK.js create mode 100644 deployment/iw/web/assets/textarea-Dyx6I5ZN.js create mode 100644 deployment/iw/web/assets/upload-Cr-BixPb.js create mode 100644 deployment/iw/web/assets/upload-config-D_24SNBe.js create mode 100644 deployment/iw/web/assets/use-fetch-files-rnWwNE4C.js create mode 100644 deployment/iw/web/assets/use-security-enabled-CyVC7otU.js create mode 100644 deployment/iw/web/assets/use-upload-config-OxxQwpLm.js create mode 100644 deployment/iw/web/assets/useLocation-B-0SqFIj.js create mode 100644 deployment/iw/web/assets/useQuery-dxbdhNvu.js create mode 100644 deployment/iw/web/assets/user-CwyiWp7E.js create mode 100644 deployment/iw/web/assets/x-CNIkD3YH.js create mode 100644 deployment/iw/web/assets/xlsx-DLapqJRf.js create mode 100644 deployment/iw/web/favicon.png create mode 100644 deployment/iw/web/index.html create mode 100644 deployment/iw/web/pdfjs/LICENSE create mode 100644 deployment/iw/web/pdfjs/build/pdf.js create mode 100644 deployment/iw/web/pdfjs/build/pdf.js.map create mode 100644 deployment/iw/web/pdfjs/build/pdf.sandbox.js create mode 100644 deployment/iw/web/pdfjs/build/pdf.sandbox.js.map create mode 100644 deployment/iw/web/pdfjs/build/pdf.worker.js create mode 100644 deployment/iw/web/pdfjs/build/pdf.worker.js.map create mode 100644 deployment/iw/web/pdfjs/web/cmaps/78-EUC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/78-EUC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/78-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/78-RKSJ-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/78-RKSJ-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/78-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Add-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Add-RKSJ-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Add-RKSJ-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Add-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-GB1-0.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-GB1-1.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-GB1-2.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-GB1-3.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-GB1-4.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-GB1-5.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/B5-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/B5-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/B5pc-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/B5pc-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/CNS-EUC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/CNS-EUC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/CNS1-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/CNS1-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/CNS2-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/CNS2-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/ETHK-B5-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/ETHK-B5-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/ETen-B5-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/ETen-B5-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/ETenms-B5-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/ETenms-B5-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/EUC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/EUC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Ext-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Ext-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GB-EUC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GB-EUC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GB-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GB-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBK-EUC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBK-EUC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBK2K-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBK2K-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBKp-EUC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBKp-EUC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBT-EUC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBT-EUC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBT-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBT-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBpc-EUC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/GBpc-EUC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/HKdla-B5-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/HKdla-B5-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/HKdlb-B5-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/HKdlb-B5-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/HKgccs-B5-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/HKgccs-B5-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/HKm314-B5-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/HKm314-B5-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/HKm471-B5-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/HKm471-B5-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/HKscs-B5-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/HKscs-B5-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Hankaku.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Hiragana.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/KSC-EUC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/KSC-EUC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/KSC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/KSC-Johab-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/KSC-Johab-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/KSC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/KSCms-UHC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/KSCms-UHC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Katakana.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/LICENSE create mode 100644 deployment/iw/web/pdfjs/web/cmaps/NWP-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/NWP-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/RKSJ-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/RKSJ-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/Roman.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/V.bcmap create mode 100644 deployment/iw/web/pdfjs/web/cmaps/WP-Symbol.bcmap create mode 100644 deployment/iw/web/pdfjs/web/compressed.tracemonkey-pldi-09.pdf create mode 100644 deployment/iw/web/pdfjs/web/debugger.css create mode 100644 deployment/iw/web/pdfjs/web/debugger.js create mode 100644 deployment/iw/web/pdfjs/web/images/annotation-check.svg create mode 100644 deployment/iw/web/pdfjs/web/images/annotation-comment.svg create mode 100644 deployment/iw/web/pdfjs/web/images/annotation-help.svg create mode 100644 deployment/iw/web/pdfjs/web/images/annotation-insert.svg create mode 100644 deployment/iw/web/pdfjs/web/images/annotation-key.svg create mode 100644 deployment/iw/web/pdfjs/web/images/annotation-newparagraph.svg create mode 100644 deployment/iw/web/pdfjs/web/images/annotation-noicon.svg create mode 100644 deployment/iw/web/pdfjs/web/images/annotation-note.svg create mode 100644 deployment/iw/web/pdfjs/web/images/annotation-paragraph.svg create mode 100644 deployment/iw/web/pdfjs/web/images/findbarButton-next.svg create mode 100644 deployment/iw/web/pdfjs/web/images/findbarButton-previous.svg create mode 100644 deployment/iw/web/pdfjs/web/images/loading-dark.svg create mode 100644 deployment/iw/web/pdfjs/web/images/loading-icon.gif create mode 100644 deployment/iw/web/pdfjs/web/images/loading.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-firstPage.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-handTool.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-lastPage.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-scrollPage.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-selectTool.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg create mode 100644 deployment/iw/web/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg create mode 100644 deployment/iw/web/pdfjs/web/images/shadow.png create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-bookmark.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-currentOutlineItem.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-download.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-editorFreeText.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-editorInk.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-menuArrow.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-openFile.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-pageDown.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-pageUp.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-presentationMode.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-print.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-search.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-sidebarToggle.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-viewAttachments.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-viewLayers.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-viewOutline.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-viewThumbnail.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-zoomIn.svg create mode 100644 deployment/iw/web/pdfjs/web/images/toolbarButton-zoomOut.svg create mode 100644 deployment/iw/web/pdfjs/web/images/treeitem-collapsed.svg create mode 100644 deployment/iw/web/pdfjs/web/images/treeitem-expanded.svg create mode 100644 deployment/iw/web/pdfjs/web/locale/ach/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/af/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/an/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ar/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ast/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/az/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/be/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/bg/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/bn/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/bo/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/br/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/brx/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/bs/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ca/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/cak/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ckb/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/cs/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/cy/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/da/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/de/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/dsb/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/el/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/en-CA/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/en-GB/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/en-US/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/eo/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/es-AR/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/es-CL/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/es-ES/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/es-MX/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/et/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/eu/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/fa/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ff/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/fi/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/fr/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/fy-NL/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ga-IE/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/gd/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/gl/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/gn/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/gu-IN/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/he/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/hi-IN/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/hr/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/hsb/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/hu/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/hy-AM/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/hye/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ia/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/id/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/is/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/it/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ja/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ka/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/kab/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/kk/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/km/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/kn/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ko/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/lij/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/lo/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/locale.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/lt/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ltg/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/lv/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/meh/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/mk/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/mr/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ms/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/my/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/nb-NO/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ne-NP/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/nl/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/nn-NO/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/oc/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/pa-IN/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/pl/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/pt-BR/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/pt-PT/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/rm/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ro/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ru/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/sat/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/sc/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/scn/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/sco/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/si/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/sk/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/sl/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/son/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/sq/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/sr/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/sv-SE/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/szl/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ta/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/te/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/tg/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/th/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/tl/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/tr/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/trs/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/uk/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/ur/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/uz/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/vi/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/wo/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/xh/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/zh-CN/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/locale/zh-TW/viewer.properties create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitDingbats.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitFixed.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitFixedBold.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitSans.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitSansBold.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitSansItalic.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitSerif.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitSerifBold.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/FoxitSymbol.pfb create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/LICENSE_FOXIT create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/LICENSE_LIBERATION create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf create mode 100644 deployment/iw/web/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf create mode 100644 deployment/iw/web/pdfjs/web/viewer.css create mode 100644 deployment/iw/web/pdfjs/web/viewer.html create mode 100644 deployment/iw/web/pdfjs/web/viewer.js create mode 100644 deployment/iw/web/pdfjs/web/viewer.js.map create mode 100644 deployment/ow/.env create mode 100644 deployment/ow/.gitignore create mode 100644 deployment/ow/README.md create mode 100644 deployment/ow/VERSION.txt create mode 100644 deployment/ow/config/application.yml create mode 100644 deployment/ow/docker-compose.yml create mode 100644 deployment/ow/nginx/web.conf create mode 100755 deployment/ow/scripts/install.sh create mode 100644 deployment/ow/sql/01-init-table.sql create mode 100644 deployment/ow/sql/02-init-data.sql create mode 100644 deployment/ow/sql/README.md create mode 100644 deployment/ow/sql/upgrade/upgrade-20260914-upload-config.sql create mode 100644 deployment/ow/sql/upgrade/upgrade-20260915-release.sql create mode 100644 deployment/ow/sql/upgrade/upgrade-20261101-meshsafe-file-security.sql create mode 100644 deployment/ow/sql/upgrade/upgrade-20261103-transfer-perf.sql create mode 100644 deployment/ow/web/assets/(user)-DRkYT5Du.js create mode 100644 deployment/ow/web/assets/admin--lPu8JPk.js create mode 100644 deployment/ow/web/assets/app-layout-Dc-t6FXo.js create mode 100644 deployment/ow/web/assets/bg-CBsBX9E3.png create mode 100644 deployment/ow/web/assets/chevron-left-Dq7KfPwg.js create mode 100644 deployment/ow/web/assets/chevron-right-UmT5k51o.js create mode 100644 deployment/ow/web/assets/console-C_pAJOL9.js create mode 100644 deployment/ow/web/assets/data-table-B1a8BMaf.js create mode 100644 deployment/ow/web/assets/date-range-picker-CAMQRUB2.js create mode 100644 deployment/ow/web/assets/dialog-ITi__DUr.js create mode 100644 deployment/ow/web/assets/directory-breadcrumb-BIvEu5Qr.js create mode 100644 deployment/ow/web/assets/dist-BfmPJzXI.js create mode 100644 deployment/ow/web/assets/dist-C45nHpjp.js create mode 100644 deployment/ow/web/assets/dist-CPAz9rrj.js create mode 100644 deployment/ow/web/assets/dist-CVuPtwWX.js create mode 100644 deployment/ow/web/assets/edit-user-dialog-CGOttUMI.js create mode 100644 deployment/ow/web/assets/es-C8YeqDL4.js create mode 100644 deployment/ow/web/assets/extract-DyNQGmLd.js create mode 100644 deployment/ow/web/assets/file-DlDBClxy.js create mode 100644 deployment/ow/web/assets/file-category-filter-BmGVvDiP.js create mode 100644 deployment/ow/web/assets/file-category-filter-DdKuH37F.css create mode 100644 deployment/ow/web/assets/file-record-DMzz0W98.js create mode 100644 deployment/ow/web/assets/file-type-BWBY7uVM.js create mode 100644 deployment/ow/web/assets/folder-DDlXKK_x.js create mode 100644 deployment/ow/web/assets/folder-input-lYe4JQ9T.js create mode 100644 deployment/ow/web/assets/index-BbZGMJ6u.css create mode 100644 deployment/ow/web/assets/index-CjPx3lfT.js create mode 100644 deployment/ow/web/assets/inside-DoinnQuQ.js create mode 100644 deployment/ow/web/assets/list-BpwHl4Fr.js create mode 100644 deployment/ow/web/assets/login-Bqm6bkYc.js create mode 100644 deployment/ow/web/assets/logo-CE4fGrmK.png create mode 100644 deployment/ow/web/assets/my-DXWycMQN.js create mode 100644 deployment/ow/web/assets/org-account-ciPnuQay.js create mode 100644 deployment/ow/web/assets/org-djpHv-g6.js create mode 100644 deployment/ow/web/assets/outside-DI__VYnY.js create mode 100644 deployment/ow/web/assets/pagination-DP8LewWY.js create mode 100644 deployment/ow/web/assets/plus-CC0y9Hxa.js create mode 100644 deployment/ow/web/assets/prop-types-DQ8VUF3V.js create mode 100644 deployment/ow/web/assets/radio-group-rg4nj-El.js create mode 100644 deployment/ow/web/assets/recycle-T9KHbr3K.js create mode 100644 deployment/ow/web/assets/remove-file-dialog-DzvgYKQv.js create mode 100644 deployment/ow/web/assets/route-BB8HuUBN.js create mode 100644 deployment/ow/web/assets/route-Zyews8Cg.js create mode 100644 deployment/ow/web/assets/search-C8UYEB7H.js create mode 100644 deployment/ow/web/assets/select-C0ycPDDY.js create mode 100644 deployment/ow/web/assets/share-D_cVMkDz.js create mode 100644 deployment/ow/web/assets/shield-alert-D0ogkGSv.js create mode 100644 deployment/ow/web/assets/tabs-M_SCzRq7.js create mode 100644 deployment/ow/web/assets/tenant-CPHFJUz8.js create mode 100644 deployment/ow/web/assets/textarea-CVosTSyk.js create mode 100644 deployment/ow/web/assets/upload-BqFYY0Ao.js create mode 100644 deployment/ow/web/assets/upload-config-DRtEZBe2.js create mode 100644 deployment/ow/web/assets/use-fetch-files-CTmvUeuw.js create mode 100644 deployment/ow/web/assets/use-security-enabled-BPm4WtM5.js create mode 100644 deployment/ow/web/assets/use-upload-config-D-wQpkWo.js create mode 100644 deployment/ow/web/assets/useLocation-CgoDLPeV.js create mode 100644 deployment/ow/web/assets/useQuery-Hj7E43Q9.js create mode 100644 deployment/ow/web/assets/user-DH9RBR-X.js create mode 100644 deployment/ow/web/assets/x-CASPj4fT.js create mode 100644 deployment/ow/web/assets/xlsx-Cs4_i-yi.js create mode 100644 deployment/ow/web/favicon.png create mode 100644 deployment/ow/web/index.html create mode 100644 deployment/ow/web/pdfjs/LICENSE create mode 100644 deployment/ow/web/pdfjs/build/pdf.js create mode 100644 deployment/ow/web/pdfjs/build/pdf.js.map create mode 100644 deployment/ow/web/pdfjs/build/pdf.sandbox.js create mode 100644 deployment/ow/web/pdfjs/build/pdf.sandbox.js.map create mode 100644 deployment/ow/web/pdfjs/build/pdf.worker.js create mode 100644 deployment/ow/web/pdfjs/build/pdf.worker.js.map create mode 100644 deployment/ow/web/pdfjs/web/cmaps/78-EUC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/78-EUC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/78-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/78-RKSJ-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/78-RKSJ-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/78-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Add-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Add-RKSJ-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Add-RKSJ-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Add-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-GB1-0.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-GB1-1.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-GB1-2.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-GB1-3.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-GB1-4.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-GB1-5.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/B5-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/B5-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/B5pc-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/B5pc-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/CNS-EUC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/CNS-EUC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/CNS1-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/CNS1-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/CNS2-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/CNS2-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/ETHK-B5-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/ETHK-B5-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/ETen-B5-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/ETen-B5-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/ETenms-B5-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/ETenms-B5-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/EUC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/EUC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Ext-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Ext-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GB-EUC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GB-EUC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GB-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GB-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBK-EUC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBK-EUC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBK2K-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBK2K-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBKp-EUC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBKp-EUC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBT-EUC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBT-EUC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBT-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBT-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBpc-EUC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/GBpc-EUC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/HKdla-B5-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/HKdla-B5-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/HKdlb-B5-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/HKdlb-B5-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/HKgccs-B5-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/HKgccs-B5-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/HKm314-B5-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/HKm314-B5-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/HKm471-B5-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/HKm471-B5-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/HKscs-B5-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/HKscs-B5-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Hankaku.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Hiragana.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/KSC-EUC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/KSC-EUC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/KSC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/KSC-Johab-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/KSC-Johab-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/KSC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/KSCms-UHC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/KSCms-UHC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Katakana.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/LICENSE create mode 100644 deployment/ow/web/pdfjs/web/cmaps/NWP-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/NWP-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/RKSJ-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/RKSJ-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/Roman.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/V.bcmap create mode 100644 deployment/ow/web/pdfjs/web/cmaps/WP-Symbol.bcmap create mode 100644 deployment/ow/web/pdfjs/web/compressed.tracemonkey-pldi-09.pdf create mode 100644 deployment/ow/web/pdfjs/web/debugger.css create mode 100644 deployment/ow/web/pdfjs/web/debugger.js create mode 100644 deployment/ow/web/pdfjs/web/images/annotation-check.svg create mode 100644 deployment/ow/web/pdfjs/web/images/annotation-comment.svg create mode 100644 deployment/ow/web/pdfjs/web/images/annotation-help.svg create mode 100644 deployment/ow/web/pdfjs/web/images/annotation-insert.svg create mode 100644 deployment/ow/web/pdfjs/web/images/annotation-key.svg create mode 100644 deployment/ow/web/pdfjs/web/images/annotation-newparagraph.svg create mode 100644 deployment/ow/web/pdfjs/web/images/annotation-noicon.svg create mode 100644 deployment/ow/web/pdfjs/web/images/annotation-note.svg create mode 100644 deployment/ow/web/pdfjs/web/images/annotation-paragraph.svg create mode 100644 deployment/ow/web/pdfjs/web/images/findbarButton-next.svg create mode 100644 deployment/ow/web/pdfjs/web/images/findbarButton-previous.svg create mode 100644 deployment/ow/web/pdfjs/web/images/loading-dark.svg create mode 100644 deployment/ow/web/pdfjs/web/images/loading-icon.gif create mode 100644 deployment/ow/web/pdfjs/web/images/loading.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-firstPage.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-handTool.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-lastPage.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-scrollPage.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-selectTool.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg create mode 100644 deployment/ow/web/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg create mode 100644 deployment/ow/web/pdfjs/web/images/shadow.png create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-bookmark.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-currentOutlineItem.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-download.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-editorFreeText.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-editorInk.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-menuArrow.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-openFile.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-pageDown.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-pageUp.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-presentationMode.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-print.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-search.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-sidebarToggle.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-viewAttachments.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-viewLayers.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-viewOutline.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-viewThumbnail.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-zoomIn.svg create mode 100644 deployment/ow/web/pdfjs/web/images/toolbarButton-zoomOut.svg create mode 100644 deployment/ow/web/pdfjs/web/images/treeitem-collapsed.svg create mode 100644 deployment/ow/web/pdfjs/web/images/treeitem-expanded.svg create mode 100644 deployment/ow/web/pdfjs/web/locale/ach/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/af/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/an/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ar/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ast/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/az/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/be/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/bg/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/bn/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/bo/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/br/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/brx/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/bs/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ca/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/cak/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ckb/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/cs/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/cy/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/da/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/de/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/dsb/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/el/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/en-CA/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/en-GB/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/en-US/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/eo/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/es-AR/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/es-CL/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/es-ES/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/es-MX/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/et/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/eu/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/fa/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ff/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/fi/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/fr/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/fy-NL/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ga-IE/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/gd/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/gl/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/gn/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/gu-IN/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/he/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/hi-IN/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/hr/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/hsb/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/hu/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/hy-AM/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/hye/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ia/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/id/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/is/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/it/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ja/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ka/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/kab/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/kk/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/km/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/kn/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ko/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/lij/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/lo/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/locale.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/lt/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ltg/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/lv/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/meh/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/mk/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/mr/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ms/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/my/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/nb-NO/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ne-NP/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/nl/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/nn-NO/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/oc/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/pa-IN/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/pl/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/pt-BR/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/pt-PT/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/rm/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ro/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ru/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/sat/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/sc/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/scn/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/sco/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/si/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/sk/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/sl/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/son/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/sq/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/sr/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/sv-SE/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/szl/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ta/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/te/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/tg/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/th/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/tl/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/tr/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/trs/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/uk/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/ur/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/uz/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/vi/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/wo/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/xh/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/zh-CN/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/locale/zh-TW/viewer.properties create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitDingbats.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitFixed.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitFixedBold.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitSans.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitSansBold.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitSansItalic.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitSerif.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitSerifBold.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/FoxitSymbol.pfb create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/LICENSE_FOXIT create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/LICENSE_LIBERATION create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf create mode 100644 deployment/ow/web/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf create mode 100644 deployment/ow/web/pdfjs/web/viewer.css create mode 100644 deployment/ow/web/pdfjs/web/viewer.html create mode 100644 deployment/ow/web/pdfjs/web/viewer.js create mode 100644 deployment/ow/web/pdfjs/web/viewer.js.map create mode 100755 deployment/scripts/build-package.sh create mode 100644 deployment/部署说明.md diff --git a/deployment/iw/.env b/deployment/iw/.env new file mode 100644 index 0000000..196905c --- /dev/null +++ b/deployment/iw/.env @@ -0,0 +1,71 @@ +# ============================================================================= +# s-file 部署配置 —— 内网机(iw) +# +# 装机后必须立刻改的两处:admin 登录口令(首次登录后在页面上改)、 +# 新用户初始密码 USER_DEFAULT_PASSWORD +# 下面的库/MQ 口令是出厂默认值,交付单要抄一份并建议现场轮换。 +# 现场改过的 .env 属于该台机器的实际配置,不要提交回仓库。 +# ============================================================================= + +# ---------- 本机角色(内网机固定 iw,别改) ---------- +SFILE_ROLE=iw +# 传输方向:内网机 1 / 外网机 2,写反了摆渡方向就反了 +SFILE_TRANSFER_LOCATION=1 + +# ---------- 镜像(images/ 里的 tar docker load 后就是这些 tag) ---------- +APP_IMAGE=sfile-app:1.1.0 +NGINX_IMAGE=nginx:1.27-alpine +PG_IMAGE=postgres:18 +REDIS_IMAGE=redis:8 +MQ_IMAGE=rabbitmq:3.13-management-alpine +# postgres 18+ 数据目录挂载点是 /var/lib/postgresql,15- 要改成 /var/lib/postgresql/data +PG_DATA_DIR=/var/lib/postgresql + +# ---------- 对外访问:只暴露前端 ---------- +WEB_HOST=0.0.0.0 +WEB_PORT=80 + +# ---------- 口令与密钥 ---------- +POSTGRES_DB=s_file +POSTGRES_USER=sfile +POSTGRES_PASSWORD=Sfile-iw-Pg-N1tOz1MxgdaS +MQ_USER=sfile +MQ_PASSWORD=Sfile-iw-Mq-UTqVSnCDZ0LB +JWT_SECRET=86a6b015f3292eb3fdab298d3eced941da4276d47e24e924b82ab8adee397d70 +USER_DEFAULT_PASSWORD=Sfile-iw-Usr-FBLS-0fA + +# ---------- 发号器与容器网段(与外网机各用一段,同机并跑时才需要错开) ---------- +APP_SUBNET=172.30.18.0/24 +APP_GATEWAY=172.30.18.1 +APP_NODE_IP=172.30.18.10 +APP_WORK_ID=1 + +# ---------- 宿主机数据目录 ---------- +# 默认落在本目录 volumes/ 下(相对 docker-compose.yml)。 +# 要放到独立数据盘就改成绝对路径,例如 /data/sfile,改完 install.sh 会自动建目录 +SFILE_DATA_ROOT=./volumes +# 光闸摆渡目录:out = 本机发出,in = 本机收到。 +# 光闸设备要能访问到这两个路径,现场通常改成绝对路径并告知光闸厂商 +GATE_SEND_DIR=./volumes/gate/out +GATE_RECV_DIR=./volumes/gate/in + +# ---------- MeshSafe 文件安全检测 ---------- +# 该侧没有部署 MeshSafe 就把 MESHSAFE_ENABLED 改成 false,下面几项可以不管 +# 启用时凭证必须与 MeshSafe 侧 MESHSAFE_API_CLIENTS 白名单里的 client_id:secret 逐字一致 +MESHSAFE_ENABLED=true +MESHSAFE_BASE_URL=http://host.docker.internal:44380 +MESHSAFE_CLIENT_ID=sfile-iw +MESHSAFE_SECRET=CHANGE_ME_meshsafe_secret +MESHSAFE_CHANNEL=sfile-iw +# 等保从严建议 false:检测服务不可用时阻断而不是放行 +MESHSAFE_FAIL_OPEN=true +MESHSAFE_TIMEOUT_SECONDS=120 +MESHSAFE_POLL_TIMEOUT_MINUTES=60 +MESHSAFE_POLL_CRON=0/10 * * * * ? + +# ---------- 资源与运行时 ---------- +TZ=Asia/Shanghai +APP_JAVA_OPTS=-Xms1g -Xmx3g -Dfile.encoding=UTF-8 +REDIS_MAXMEMORY=512mb +# 摆渡目录监听周期。改这个要同步改 config/application.yml 的 round-budget-seconds(留 1 秒余量) +FILE_TRANSFER_MONITOR_CRON=0/5 * * * * ? diff --git a/deployment/iw/.gitignore b/deployment/iw/.gitignore new file mode 100644 index 0000000..1926f1e --- /dev/null +++ b/deployment/iw/.gitignore @@ -0,0 +1,8 @@ +# 镜像 tar 是出包产物(约 640MB),不进 git +images/*.tar +images/SHA256SUMS.txt +dist/ + +# volumes/ 是运行时数据(pgdata / redis / mq / upload / logs / gate),不进 git +# 前端静态包在 web/,属于交付物,要进 git +volumes/ diff --git a/deployment/iw/README.md b/deployment/iw/README.md new file mode 100644 index 0000000..1017b73 --- /dev/null +++ b/deployment/iw/README.md @@ -0,0 +1,111 @@ +# s-file 内网机部署包(iw) + +本目录**就是**一台内网服务器的完整部署包:镜像 tar、前端静态包、SQL、配置、安装脚本都在里面, +整目录拷到内网机即可装机,不需要联网、不需要回仓库取任何东西。 + +外网机用同级的 `../ow/`,两份除了 `.env` 与 `web/`(前端内/外网包)之外完全一样。 +完整拓扑、两侧差异表、已知坑见仓库里的 [`../部署说明.md`](../部署说明.md)。 + +--- + +## 1. 装机(三步) + +```bash +# 1) 整目录拷到内网机,例如 /opt/sfile-iw +cd /opt/sfile-iw + +# 2) 改配置:至少确认 MeshSafe(没接检测就把 MESHSAFE_ENABLED 改成 false) +vi .env + +# 3) 一键装:自检 -> 校验并载入镜像 -> 建数据目录 -> 起栈 -> 等健康 +./scripts/install.sh +``` + +装完会打印访问地址 `http://<本机IP>:`。**首次登录后立刻改掉 admin 的初始口令。** + +重复执行 `install.sh` 是安全的:只重建有差异的容器,不动已初始化好的数据库。 + +--- + +## 2. 目录说明 + +``` +├── docker-compose.yml 5 个服务(web/app/pg/redis/mq),现场不改 +├── .env 本机全部可变项:角色/端口/口令/目录/MeshSafe ← 只改这个 +├── config/application.yml 后端静态默认配置,不放任何口令(口令走 .env 注入) +├── nginx/web.conf 前端站点 + /api 反代,改端口/上传上限时看这里 +├── web/ 前端静态包(内网包),挂进 nginx 当站点根 +├── sql/01-init-table.sql 全量建表 02-init-data.sql 初始数据(admin、机构、平台编码) +├── sql/upgrade/ 已上线老库的增量脚本,新装不用跑(见 sql/README.md) +├── images/*.tar 5 个镜像 + SHA256SUMS.txt +├── scripts/install.sh 一键安装 +└── volumes/ 运行时数据,install.sh 自动创建 + ├── pgdata/ redis/ mq/ 三个中间件的数据 + ├── upload/ 用户上传的文件本体 + ├── logs/ 后端日志(logs/nginx 是前端访问日志) + └── gate/out/ gate/in/ 光闸摆渡:本机发出 / 本机收到 +``` + +数据全在宿主机 `volumes/` 下,容器删了数据还在。要放到独立数据盘就改 `.env` 的 +`SFILE_DATA_ROOT`(以及 `GATE_SEND_DIR`/`GATE_RECV_DIR`)为绝对路径,重跑 `install.sh`。 + +--- + +## 3. 现场要确认的 6 件事(都在 `.env`) + +| 项 | 变量 | 内网机出厂值 / 建议 | +|---|---|---| +| 前端对外端口 | `WEB_PORT` | `80`;被占用就改 8080/9080,同步改访问地址 | +| 数据盘根目录 | `SFILE_DATA_ROOT` | `./volumes`;正式环境建议改绝对路径指到独立数据盘(≥200G) | +| 光闸摆渡目录 | `GATE_SEND_DIR` / `GATE_RECV_DIR` | `./volumes/gate/out` / `in`;**与光闸厂商确认挂载点**,发出与收到必须是两个不同目录 | +| 传输方向 | `SFILE_TRANSFER_LOCATION` | 内网机固定 `1`(外网机是 `2`)。**写反了摆渡方向就反了** | +| MeshSafe | `MESHSAFE_ENABLED` / `_BASE_URL` / `_CLIENT_ID` / `_SECRET` | 没接检测 → `MESHSAFE_ENABLED=false`;接了 → secret 必须与 MeshSafe 侧 `MESHSAFE_API_CLIENTS` 白名单里的 `client_id:secret` 逐字一致 | +| 口令 | `POSTGRES_PASSWORD` / `MQ_PASSWORD` / `JWT_SECRET` / `USER_DEFAULT_PASSWORD` | 出厂已给随机值可直接跑;`USER_DEFAULT_PASSWORD` 是新建用户的初始密码,**必须改并告知业务员** | + +--- + +## 4. 改前端页面(不用重建镜像) + +前端是解压好的静态包,`web/` 就是站点根: + +```bash +# 替换整个前端包 +rm -rf web && cp -r /path/to/new/dist web +docker compose restart web + +# 只改单个文件(例如临时改个文案) +vi web/assets/xxx.js # 或替换 index.html +docker compose restart web # 浏览器再强刷一次(Ctrl+F5) +``` + +`web/` 是只读挂载,容器不会写它;改坏了从仓库 `frontend/` 重新构建一份覆盖即可。 +构建产物的文件名自带 hash,`index.html` 不做缓存,所以换包后用户浏览器会自动取到新文件。 + +--- + +## 5. 运维 + +```bash +docker compose ps # 状态(5 个都该是 healthy) +docker logs -f sfile-iw-app # 后端日志(含送检/摆渡全过程) +docker compose restart app # 改完 .env / config 后重启后端 +docker compose restart web # 替换 web/ 里的前端文件后刷新站点 +docker compose down # 停止(不动数据) +``` + +**备份只需三样**:`volumes/pgdata`(库)、`volumes/upload`(文件本体)、`.env`(口令)。 +恢复:换机器后按原路径放回 + `docker load` + `./scripts/install.sh`。 + +改了 `.env` 里的口令/网段这类**建容器时固化**的值,光 `restart` 不生效,要 +`docker compose up -d`(重建容器)。数据库口令属于建库时写入,改它要连 `volumes/pgdata` 一起处理。 + +--- + +## 6. 装不上时先看这三条 + +1. `images/` 少 tar 或 sha256 不对 → 交付盘拷坏了,重拷(`install.sh` 会明确报哪一条)。 +2. 架构不符(信创 ARM 机装了 amd64 包)→ `install.sh` 会拦;回构建机用 `TARGET_PLATFORM=linux/arm64` 重新出包。 +3. 端口/网段与机器上已有容器冲突 → 改 `.env` 的 `WEB_PORT`,或整段换 `APP_SUBNET`/`APP_GATEWAY`/`APP_NODE_IP`(三个值必须同网段)。 + +其余坑(发号器 workerId、nginx 透传 Host、PostgreSQL 18 数据目录挂载点、监听周期与传输快慢) +见 [`../部署说明.md`](../部署说明.md) 最后一节。 diff --git a/deployment/iw/VERSION.txt b/deployment/iw/VERSION.txt new file mode 100644 index 0000000..b679400 --- /dev/null +++ b/deployment/iw/VERSION.txt @@ -0,0 +1,19 @@ +s-file 部署包 1.1.0(内网机 iw) +构建平台: linux/amd64 +导出时间: 2026-11-04 21:34:45 +后端 jar: fa77c56(+ 未提交改动则与本仓库当前源码一致) + +镜像清单(sha256 见 images/SHA256SUMS.txt): + nginx.tar 21M "RepoTags":["nginx:1.27-alpine"] + postgres.tar 161M "RepoTags":["postgres:18"] + rabbitmq.tar 84M "RepoTags":["rabbitmq:3.13-management-alpine"] + redis.tar 53M "RepoTags":["redis:8"] + sfile-app.tar 313M "RepoTags":["sfile-app:1.1.0"] + +前端静态包: web/(内网包/外网包已分别就位,改页面直接替换文件) +SQL: sql/01-init-table.sql sql/02-init-data.sql 老库增量: sql/upgrade/ + +现场步骤(本机执行): + 1) 整目录拷到服务器,例如 /opt/sfile-iw && cd /opt/sfile-iw + 2) vi .env # 至少确认 MESHSAFE_ENABLED/SECRET、WEB_PORT、SFILE_DATA_ROOT、GATE_* + 3) ./scripts/install.sh diff --git a/deployment/iw/config/application.yml b/deployment/iw/config/application.yml new file mode 100644 index 0000000..b40682b --- /dev/null +++ b/deployment/iw/config/application.yml @@ -0,0 +1,110 @@ +# ============================================================================= +# s-file 客户侧静态默认配置(两台机器共用同一份,现场一般不用改) +# +# 随角色/环境变化的取值一律由 docker-compose 的环境变量注入,本文件不放: +# 数据库/Redis/MQ 地址与口令、JWT 密钥、用户初始密码、传输方向与摆渡目录、 +# MeshSafe 开关与凭证、MQ 交换机命名 —— 全部在 .env 里填 +# 这样交付物里不存在任何写死的口令或密钥 +# ============================================================================= + +server: + port: 8080 + +spring: + application: + name: s-file + datasource: + driver-class-name: org.postgresql.Driver + type: com.alibaba.druid.pool.DruidDataSource + druid: + initial-size: 5 + min-idle: 5 + max-active: 50 + validation-query: SELECT 1 + test-while-idle: true + # 摆渡解包/送检会在多任务里并发取连接,压太低会出现等待 + max-wait: 10000 + redis: + timeout: 5000 + lettuce: + pool: + max-active: 16 + max-idle: 8 + servlet: + multipart: + max-file-size: 500MB + max-request-size: 500MB + main: + allow-bean-definition-overriding: true + +mybatis-plus: + mapper-locations: classpath*:com/senmesh/**/mapper/*.xml + +# 平台编码,需与 sql/02-init-data.sql 里 uc_platform.platform_code 一致 +system: + code: 1 + +security: + jwt: + enable: true + # secret 由环境变量 SECURITY_JWT_SECRET 注入,勿在此填写 + expiration: 86400000 + header: Authorization + ignoring: /error,/favicon.ico + login-page: /login + superior-only: false + # 单机自闭环部署:权限走本地库,不接外部用户中心 + use-local: true + allow-if-all-abstain-decisions: true + oauth2: + enable: false + not-logs: "" + anonymous: "" + +# 新用户初始密码由环境变量 USER_DEFAULT_PASSWORD 注入 +user: + default: + password: ${USER_DEFAULT_PASSWORD:} + +file: + upload-dir: /data/upload + storage: + type: local + transfer: + # location / send-dir / receive-dir / monitor.cron 均由环境变量注入 + # 解包时是否再做一次内容风险识别(依赖下面的 dify,未部署 dify 时保持 false) + unpack-risk-check: false + monitor: + # 单轮处理时间预算(秒)。超预算即结束本轮,剩余留给下一轮。 + # 与监听周期配套:周期 5 秒则预算留 4 秒,保证两轮不互相挤压。 + # 目录持续积压(日志「目录剩余待处理」超过 50)时调大此值 + round-budget-seconds: 4 + # 单轮兜底个数上限,防止极端场景单轮过长 + round-max-files: 500 + # 包内单个文件大小上限(MB)。解包时整个文件读进堆,峰值约 2-3 倍文件大小, + # 超限直接标 .error 而不是解包到 OOM。按 APP_JAVA_OPTS 的 -Xmx 调整:-Xmx3g 对应 512 + max-unpack-size-mb: 512 + # 校验不通过或解包异常,且文件静止超过该秒数即判定为坏包,标 .error 停止重试。 + # 用于区分「光闸还在搬」与「搬完了但是坏包」,必须大于光闸搬运单个包的最长时间 + stale-after-seconds: 300 + +# 内容风险识别(Dify)。未部署 Dify 时留空并保持 file.transfer.unpack-risk-check=false +dify: + risk: + rule: + api-key: "" + scan: + api-key: "" + +# MeshSafe 全段由环境变量注入(MESHSAFE_*),未部署时 MESHSAFE_ENABLED=false 即可, +# 前端会自动隐藏「安全检测」列,跨网摆渡不受影响 +meshsafe: + review-sync-to-meshsafe: true + +# 接口文档在生产关闭 +swagger: + enable: false + +logging: + level: + com.senmesh: info diff --git a/deployment/iw/docker-compose.yml b/deployment/iw/docker-compose.yml new file mode 100644 index 0000000..8d9e9fb --- /dev/null +++ b/deployment/iw/docker-compose.yml @@ -0,0 +1,192 @@ +# ============================================================================= +# s-file 信创文件安全传输系统 —— 单台服务器一套(内网机 iw / 外网机 ow 通用同一份) +# +# 两台机器之间只靠光闸摆渡目录互通,彼此不开任何网络端口。 +# 随角色变化的取值全在同目录 .env 里,本文件现场不用改。 +# +# ./scripts/install.sh 自检 -> 校验并载入 images/*.tar -> 建目录 -> 起栈 -> 等健康 +# +# 数据一律落在宿主机,不建 docker 卷(默认在本目录 volumes/ 下,见 .env 的 SFILE_DATA_ROOT): +# volumes/pgdata PostgreSQL 数据 volumes/redis Redis AOF +# volumes/mq RabbitMQ 数据 volumes/upload 用户上传的文件本体 +# volumes/logs 后端日志(+logs/nginx) volumes/gate/out|in 光闸发出/收到的传输包 +# +# 前端是已构建好的静态包,直接放在 web/ 目录挂进 nginx: +# 改页面 = 替换 web/ 下的文件,docker compose restart web 即可,不用重新构建镜像。 +# +# 只发布前端端口;后端 / PostgreSQL / Redis / RabbitMQ 仅在容器网络内可达。 +# ============================================================================= + +name: sfile-${SFILE_ROLE:?缺少 SFILE_ROLE(内网机 iw / 外网机 ow)} + +services: + web: + image: ${NGINX_IMAGE:?缺少 NGINX_IMAGE} + container_name: sfile-${SFILE_ROLE}-web + restart: unless-stopped + ports: + - "${WEB_HOST:-0.0.0.0}:${WEB_PORT:-80}:80" + environment: + TZ: ${TZ:-Asia/Shanghai} + volumes: + - ./nginx/web.conf:/etc/nginx/conf.d/default.conf:ro + # 前端静态包:宿主机 web/ 目录即站点根,替换文件即换页面 + - ./web:/usr/share/nginx/html:ro + - ${SFILE_DATA_ROOT:?缺少 SFILE_DATA_ROOT}/logs/nginx:/var/log/nginx + depends_on: + app: + condition: service_healthy + healthcheck: + test: ["CMD-SHELL", "curl -sf -o /dev/null http://127.0.0.1:80/ || exit 1"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 20s + networks: [sfile] + + app: + image: ${APP_IMAGE:?缺少 APP_IMAGE} + container_name: sfile-${SFILE_ROLE}-app + restart: unless-stopped + stop_grace_period: 30s + environment: + TZ: ${TZ:-Asia/Shanghai} + # 发号器 workerId 按「容器 IP」取键,取不到会回退 99 而 99 > 31 直接启动失败, + # 因此这里锁死 app 的容器 IP,并把同一个键写进 JVM 参数,两处永远一致 + JAVA_OPTS: "${APP_JAVA_OPTS:--Xms1g -Xmx3g -Dfile.encoding=UTF-8} -Dcode.snowflake.workid.${APP_NODE_IP:?缺少 APP_NODE_IP}=${APP_WORK_ID:?缺少 APP_WORK_ID}" + SPRING_CONFIG_ADDITIONAL_LOCATION: file:/config/application.yml + + SPRING_DATASOURCE_URL: jdbc:postgresql://pg:5432/${POSTGRES_DB:?缺少 POSTGRES_DB} + SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER:?缺少 POSTGRES_USER} + SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD:?缺少 POSTGRES_PASSWORD} + + SPRING_REDIS_HOST: redis + SPRING_REDIS_PORT: 6379 + + SPRING_RABBITMQ_HOST: mq + SPRING_RABBITMQ_PORT: 5672 + SPRING_RABBITMQ_USERNAME: ${MQ_USER:?缺少 MQ_USER} + SPRING_RABBITMQ_PASSWORD: ${MQ_PASSWORD:?缺少 MQ_PASSWORD} + # 两侧交换机/广播 ID 必须不同,防止有人把两套栈并到一台机器时串消息 + RABBITMQ_CUSTOM_TOPIC_EXCHANGE_NAME: s-file-${SFILE_ROLE}-topic + RABBITMQ_CUSTOM_DELAYED_EXCHANGE_NAME: s-file-${SFILE_ROLE}-delayed + RABBITMQ_CUSTOM_BROADCAST_ID: s-file-${SFILE_ROLE}-broadcast + + SECURITY_JWT_SECRET: ${JWT_SECRET:?缺少 JWT_SECRET} + USER_DEFAULT_PASSWORD: ${USER_DEFAULT_PASSWORD:?缺少 USER_DEFAULT_PASSWORD} + + # 内网机 1 / 外网机 2,写反了摆渡方向就反了 + FILE_TRANSFER_LOCATION: "${SFILE_TRANSFER_LOCATION:?缺少 SFILE_TRANSFER_LOCATION}" + FILE_TRANSFER_SEND_DIR: /data/transfer/send + FILE_TRANSFER_RECEIVE_DIR: /data/transfer/receive + FILE_TRANSFER_MONITOR_CRON: "${FILE_TRANSFER_MONITOR_CRON:-0/5 * * * * ?}" + + MESHSAFE_ENABLED: ${MESHSAFE_ENABLED:-true} + MESHSAFE_BASE_URL: ${MESHSAFE_BASE_URL:-} + MESHSAFE_CLIENT_ID: ${MESHSAFE_CLIENT_ID:-} + MESHSAFE_SECRET: ${MESHSAFE_SECRET:-} + MESHSAFE_CHANNEL: ${MESHSAFE_CHANNEL:-sfile-${SFILE_ROLE}} + MESHSAFE_FAIL_OPEN: ${MESHSAFE_FAIL_OPEN:-true} + MESHSAFE_TIMEOUT_SECONDS: ${MESHSAFE_TIMEOUT_SECONDS:-120} + MESHSAFE_POLL_TIMEOUT_MINUTES: ${MESHSAFE_POLL_TIMEOUT_MINUTES:-60} + MESHSAFE_POLL_CRON: ${MESHSAFE_POLL_CRON:-0/10 * * * * ?} + volumes: + - ./config/application.yml:/config/application.yml:ro + - ${SFILE_DATA_ROOT}/upload:/data/upload + - ${SFILE_DATA_ROOT}/logs:/app/logs + # 摆渡目录:容器内固定路径,宿主机侧由光闸设备负责单向搬运 + - ${GATE_SEND_DIR:?缺少 GATE_SEND_DIR}:/data/transfer/send + - ${GATE_RECV_DIR:?缺少 GATE_RECV_DIR}:/data/transfer/receive + # MeshSafe 与应用同机部署时靠它从容器内访问宿主机端口; + # Docker < 20.10 不支持 host-gateway,或 MeshSafe 在独立服务器时,删掉这两行即可 + extra_hosts: + - "host.docker.internal:host-gateway" + depends_on: + pg: + condition: service_healthy + redis: + condition: service_healthy + mq: + condition: service_healthy + healthcheck: + test: ["CMD-SHELL", "curl -s --max-time 5 -o /dev/null http://127.0.0.1:8080/ || exit 1"] + interval: 30s + timeout: 8s + retries: 5 + # 首次建库要跑全量 DDL,冷启动给足时间 + start_period: 180s + networks: + sfile: + ipv4_address: ${APP_NODE_IP} + + pg: + image: ${PG_IMAGE:?缺少 PG_IMAGE} + container_name: sfile-${SFILE_ROLE}-pg + restart: unless-stopped + stop_grace_period: 60s + environment: + TZ: ${TZ:-Asia/Shanghai} + POSTGRES_DB: ${POSTGRES_DB:?缺少 POSTGRES_DB} + POSTGRES_USER: ${POSTGRES_USER:?缺少 POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?缺少 POSTGRES_PASSWORD} + # 空库首次启动才执行 initdb.d,已有数据卷时会被忽略 + POSTGRES_INITDB_ARGS: "--encoding=UTF8 --lc-collate=C --lc-ctype=C" + volumes: + # postgres 18+ 数据目录挂载点是 /var/lib/postgresql,15- 是 .../data,见 .env 的 PG_DATA_DIR + - ${SFILE_DATA_ROOT}/pgdata:${PG_DATA_DIR:-/var/lib/postgresql} + - ./sql/01-init-table.sql:/docker-entrypoint-initdb.d/01-init-table.sql:ro + - ./sql/02-init-data.sql:/docker-entrypoint-initdb.d/02-init-data.sql:ro + healthcheck: + # 必须强制走 TCP(-h 127.0.0.1):首次 initdb 期间镜像会临时起一个只听 unix socket + # 的实例,此时用默认 socket 探测也会返回成功,导致 app 抢跑连库失败 + test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 10 + start_period: 60s + networks: [sfile] + + redis: + image: ${REDIS_IMAGE:?缺少 REDIS_IMAGE} + container_name: sfile-${SFILE_ROLE}-redis + restart: unless-stopped + command: ["redis-server", "--appendonly", "yes", "--maxmemory", "${REDIS_MAXMEMORY:-512mb}", "--maxmemory-policy", "allkeys-lru"] + environment: + TZ: ${TZ:-Asia/Shanghai} + volumes: + - ${SFILE_DATA_ROOT}/redis:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 3s + retries: 5 + networks: [sfile] + + mq: + image: ${MQ_IMAGE:?缺少 MQ_IMAGE} + container_name: sfile-${SFILE_ROLE}-mq + restart: unless-stopped + stop_grace_period: 30s + environment: + TZ: ${TZ:-Asia/Shanghai} + RABBITMQ_DEFAULT_USER: ${MQ_USER:?缺少 MQ_USER} + RABBITMQ_DEFAULT_PASS: ${MQ_PASSWORD:?缺少 MQ_PASSWORD} + volumes: + - ${SFILE_DATA_ROOT}/mq:/var/lib/rabbitmq + healthcheck: + test: ["CMD-SHELL", "rabbitmq-diagnostics -q ping"] + interval: 20s + timeout: 10s + retries: 10 + start_period: 60s + networks: [sfile] + +networks: + sfile: + driver: bridge + ipam: + config: + # 锁 app 容器 IP 是为了发号器 workerId 取键;subnet/网关/app IP 三个值必须同网段。 + # 若与客户机器上已有 docker 网段冲突,整段换掉(如 172.31.88.0/24)即可 + - subnet: ${APP_SUBNET:?缺少 APP_SUBNET} + gateway: ${APP_GATEWAY:?缺少 APP_GATEWAY} diff --git a/deployment/iw/nginx/web.conf b/deployment/iw/nginx/web.conf new file mode 100644 index 0000000..7539cbc --- /dev/null +++ b/deployment/iw/nginx/web.conf @@ -0,0 +1,44 @@ +server { + listen 80; + server_name _; + charset utf-8; + + # 站点根 = 宿主机 web/ 目录(compose 里 ./web:/usr/share/nginx/html:ro) + # 临时改页面:替换 web/ 下的文件后 docker compose restart web,不用重建镜像 + root /usr/share/nginx/html; + index index.html; + + # 与后端 multipart 上限(500MB)保持一致,改这里要同步改 config/application.yml + client_max_body_size 500m; + client_body_timeout 300s; + + # /api/xxx -> 后端 /xxx(去掉 /api 前缀,与前端构建时的 VITE_API_URL=/api 对应) + # app 是 compose 里的服务名,改了服务名这里要跟着改 + location /api/ { + proxy_pass http://app:8080/; + proxy_http_version 1.1; + # 必须保留端口($http_host):后端 getRootDomain 对「无端口的 IP/localhost」会抛 + # IllegalStateException,导致登录成功回调 500。改成 $host 就会复现这个坑 + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_connect_timeout 60s; + proxy_read_timeout 600s; + proxy_send_timeout 600s; + # 大文件上传不在 nginx 侧缓冲,直接流给后端 + proxy_request_buffering off; + } + + # SPA:hash 路由,静态资源找不到时回落 index.html + location / { + try_files $uri $uri/ /index.html; + } + + # 构建产物的文件名自带 hash,可以放心缓存;index.html 不在其中,换包后浏览器直接拿到新的 + location ~* \.(js|mjs|css|woff2?|ttf|png|jpe?g|gif|svg|ico)$ { + expires 7d; + access_log off; + } +} diff --git a/deployment/iw/scripts/install.sh b/deployment/iw/scripts/install.sh new file mode 100755 index 0000000..54211eb --- /dev/null +++ b/deployment/iw/scripts/install.sh @@ -0,0 +1,198 @@ +#!/usr/bin/env bash +# ============================================================================= +# s-file 一键安装(在本机执行;内网机用 iw/ 那份,外网机用 ow/ 那份) +# +# cd /opt/sfile-iw && ./scripts/install.sh +# +# 做六件事:环境自检 -> 校验交付物 -> 校验并载入镜像 tar -> 建数据目录 -> 起栈 -> 等健康 +# 幂等:重复执行只重建有差异的容器,不动已初始化好的数据库 +# 本目录就是配置:角色/口令/端口/目录全在同级 .env 里,改完重跑本脚本即可 +# ============================================================================= +set -euo pipefail + +HERE="$(cd "$(dirname "$0")/.." && pwd)" +cd "$HERE" + +envget() { grep -E "^[[:space:]]*$1=" .env | tail -1 | cut -d= -f2- | tr -d '"' | sed 's/[[:space:]]*$//'; } + +step() { printf '\n\033[1;36m==> %s\033[0m\n' "$1"; } +die() { printf '\033[1;31m!!! %s\033[0m\n' "$1" >&2; exit 1; } + +[ -f .env ] || die "缺少 .env(交付包不完整,本目录下应有一份出厂 .env)" +ROLE="$(envget SFILE_ROLE)" +case "$ROLE" in + iw|ow) ;; + *) die ".env 里 SFILE_ROLE=「$ROLE」不合法,只能是 iw(内网机)或 ow(外网机)" ;; +esac +echo "本机角色:$ROLE(传输方向 location=$(envget SFILE_TRANSFER_LOCATION))" + +# ---------- 1. 前置自检 ---------- +step "检查 docker 与 compose" +command -v docker >/dev/null 2>&1 || die "未安装 docker,请先装 Docker Engine(信创系统用厂商源,版本号 >= 20.10)" +docker info >/dev/null 2>&1 || die "docker 守护进程不可用,检查服务是否启动、当前用户是否在 docker 组" +if docker compose version >/dev/null 2>&1; then + DC="docker compose" +elif command -v docker-compose >/dev/null 2>&1; then + DC="docker-compose" +else + die "缺少 compose:安装 docker compose v2 插件,或用 docker-compose 命令" +fi +echo " 使用:$DC" +echo " docker server:$(docker version --format '{{.Server.Version}}')" + +if grep -q "CHANGE_ME" .env; then + # MeshSafe 的 secret 只有真的启用检测时才必须填,否则现场没接 MeshSafe 就装不了机 + if [ "$(envget MESHSAFE_ENABLED)" = "true" ] && grep -qE "^MESHSAFE_SECRET=.*CHANGE_ME" .env; then + die "启用了 MeshSafe 但 MESHSAFE_SECRET 还是占位值:按 MeshSafe 交付单改成白名单里的 secret,或把 MESHSAFE_ENABLED 改成 false" + fi + rest="$(grep -n CHANGE_ME .env | grep -v '^.*MESHSAFE_SECRET=' | cut -d: -f2 | tr '\n' ' ')" + [ -z "$rest" ] || die ".env 里还有 CHANGE_ME 未替换:$rest" +fi + +step "检查交付物" +[ -d images ] || die "缺少 images/ 目录(镜像 tar 应在本目录的 images/ 下)" +tar_count=$(find images -maxdepth 1 -name '*.tar' | wc -l) +[ "$tar_count" -eq 5 ] || die "images/ 下应有 5 个 .tar(app/nginx/postgres/redis/rabbitmq),实际 $tar_count 个:$(ls images)" +for f in sql/01-init-table.sql sql/02-init-data.sql config/application.yml nginx/web.conf; do + [ -s "$f" ] || die "缺少 $f(交付包不完整)" +done +# 前端是静态包,缺了 nginx 起来只有默认页,看着像装好了其实没有界面 +[ -s web/index.html ] || die "缺少 web/index.html —— 前端静态包没随包带过来" +[ -n "$(ls -A web/assets 2>/dev/null)" ] || die "web/assets 是空的 —— 前端静态包不完整" +echo " 镜像 tar:5 个,SQL / 后端配置 / nginx 配置 / 前端包就位" + +# 端口占用先探一次:装到一半发现 80 被占,回滚比改 .env 麻烦 +WEB_PORT="$(envget WEB_PORT)" +if command -v ss >/dev/null 2>&1 && ss -ltn 2>/dev/null | awk '{print $4}' | grep -qE "[:.]${WEB_PORT:-80}$"; then + printf ' \033[1;33m提示:宿主机 %s 端口已被占用,改 .env 的 WEB_PORT 后重跑\033[0m\n' "${WEB_PORT:-80}" +fi + +# ---------- 2. 校验交付盘 + 镜像架构 ---------- +# 650M 的 tar 经 U 盘/内网 scp 拷坏是最常见的现场故障,坏包 load 到一半才报错更难查 +if [ -f images/SHA256SUMS.txt ] && [ "${SKIP_CHECKSUM:-0}" != "1" ]; then + step "校验镜像 tar 完整性(sha256,约半分钟)" + ( cd images && sha256sum -c SHA256SUMS.txt ) \ + || die "有 tar 与 SHA256SUMS.txt 不一致:交付盘拷坏了,重新拷一份;确认无碍可 SKIP_CHECKSUM=1 跳过" +fi + +step "核对镜像架构" +HOST_ARCH="$(uname -m)" +case "$HOST_ARCH" in + x86_64) EXPECT="amd64" ;; + aarch64|arm64) EXPECT="arm64" ;; + *) EXPECT="unknown" ;; +esac +echo " 本机:$HOST_ARCH (期望镜像架构 ${EXPECT})" + +# 架构在镜像的 config blob 里,不在 manifest.json —— manifest.json 只给 Config 的路径 +tar_arch() { + local t="$1" cfg + cfg="$(tar -xOf "$t" manifest.json 2>/dev/null | tr -d '\n' \ + | { grep -oE '"Config":"[^"]+"' || true; } | awk -F'"' 'NR==1{print $4}')" + [ -n "$cfg" ] || { echo ""; return 0; } + tar -xOf "$t" "$cfg" 2>/dev/null | tr -d '\n' \ + | { grep -oE '"architecture":"[a-z0-9-]+"' || true; } | awk -F'"' 'NR==1{print $4}' +} + +if [ "$EXPECT" != "unknown" ]; then + # app 和 pg 各查一个:一个是自己构建的,一个是基础镜像,架构错了必是出盘时选错平台 + for t in images/sfile-app.tar images/postgres.tar; do + [ -f "$t" ] || continue + # 不能用 `| head -1`:pipefail 下 head 提前关管道会让上游 grep 收到 SIGPIPE(141),脚本静默中断 + IMG_ARCH="$(tar_arch "$t")" + if [ -n "${IMG_ARCH:-}" ] && [ "$IMG_ARCH" != "$EXPECT" ]; then + die "$(basename "$t") 是 $IMG_ARCH,本机是 $EXPECT —— 别硬装,回来重出对应架构的包" + fi + printf ' %-18s %s\n' "$(basename "$t")" "${IMG_ARCH:-未识别,继续}" + done +fi + +# ---------- 3. 载入镜像 ---------- +step "docker load 载入离线镜像" +for t in images/*.tar; do + echo " <- $t" + docker load -i "$t" +done + +# compose 用的是 .env 里的 tag,缺一个就会去联网拉,离线机上直接卡死 +for img in "$(envget APP_IMAGE)" "$(envget NGINX_IMAGE)" "$(envget PG_IMAGE)" \ + "$(envget REDIS_IMAGE)" "$(envget MQ_IMAGE)"; do + docker image inspect "$img" >/dev/null 2>&1 \ + || die "载入后仍看不到镜像 $img —— tar 与 .env 的 tag 不一致,别继续,回来看 images/ 和 .env" + echo " ✓ $img" +done + +# ---------- 4. 目录 ---------- +step "创建数据与摆渡目录" +DATA_ROOT="$(envget SFILE_DATA_ROOT)" +GATE_SEND="$(envget GATE_SEND_DIR)" +GATE_RECV="$(envget GATE_RECV_DIR)" +[ -n "$DATA_ROOT" ] || die ".env 里 SFILE_DATA_ROOT 为空" + +mkdir -p "$DATA_ROOT"/{upload,logs/nginx,pgdata,redis,mq} +mkdir -p "$GATE_SEND" "$GATE_RECV" + +# 数据盘挂载点没起来时直接建目录会落到根分区,先确认一下 +case "$DATA_ROOT" in + /*) mountpoint -q "$DATA_ROOT" 2>/dev/null \ + || printf ' \033[1;33m提示:%s 不是独立挂载点,确认容量够(上传+库+日志)\033[0m\n' "$DATA_ROOT" ;; + *) echo " 数据目录用本目录下的相对路径:$(cd "$DATA_ROOT" && pwd)" ;; +esac + +# pgdata 提前给到容器内 postgres 的 uid=999,避免镜像入口脚本 chown 失败; +# redis/mq 的官方入口脚本自己会改属主,这里只保证目录存在且可写 +chown -R 999:999 "$DATA_ROOT/pgdata" 2>/dev/null || true +chmod -R 750 "$DATA_ROOT" 2>/dev/null || true + +# SELinux(麒麟/统信多为 enforcing):无 :z 标记的绑定挂载需要放开标签,否则库起不来、 +# nginx 读不到前端包(表现为 403)。这里把 compose 里所有 bind 挂载点都标一遍 +if command -v chcon >/dev/null 2>&1; then + chcon -Rt svirt_sandbox_file_t \ + "$HERE/config" "$HERE/nginx" "$HERE/web" "$HERE/sql" \ + "$DATA_ROOT" "$GATE_SEND" "$GATE_RECV" 2>/dev/null \ + || echo " chcon 失败(未启用 SELinux 可忽略)" +fi +echo " $DATA_ROOT / $GATE_SEND / $GATE_RECV 就位" + +# ---------- 5. 起栈 ---------- +step "启动服务(首次建库约 1-3 分钟)" +$DC up -d + +step "等待健康检查" +for svc in pg redis mq app web; do + name="sfile-${ROLE}-${svc}" + printf ' %-24s ' "$name" + st="" + for _ in $(seq 1 60); do + st="$(docker inspect --format '{{if .State.Health}}{{.State.Health.Status}}{{else}}{{.State.Status}}{{end}}' "$name" 2>/dev/null || echo missing)" + case "$st" in + healthy|running) printf '\033[32m%s\033[0m\n' "$st"; break ;; + missing) sleep 2 ;; + *) sleep 5 ;; + esac + done + if [ "$st" != "healthy" ] && [ "$st" != "running" ]; then + printf '\033[31m超时(最后状态:%s)\033[0m\n' "${st:-unknown}" + $DC ps + echo " 看日志:docker logs --tail 200 ${name}" + exit 1 + fi +done + +# ---------- 6. 出口信息 ---------- +IP="$(hostname -I 2>/dev/null | tr ' ' '\n' | { grep -E '^[0-9]+\.' || true; } | awk 'NR==1{print}')" +step "完成" +cat <}:${WEB_PORT:-80} + 角色: ${ROLE}(传输方向 location=$(envget SFILE_TRANSFER_LOCATION)) + 数据目录: $(cd "$DATA_ROOT" && pwd) + 摆渡: 发出 $GATE_SEND / 收到 $GATE_RECV + MeshSafe: $(envget MESHSAFE_ENABLED) -> $(envget MESHSAFE_BASE_URL) + + 常用命令: + $DC ps 看状态 + docker logs -f sfile-${ROLE}-app 看后端日志 + $DC restart app 改完 .env / config 后重启后端 + $DC restart web 替换 web/ 里的前端文件后刷新站点 +EOF +echo " 首次登录后立刻改掉 admin 的默认口令。" diff --git a/deployment/iw/sql/01-init-table.sql b/deployment/iw/sql/01-init-table.sql new file mode 100644 index 0000000..d36b79d --- /dev/null +++ b/deployment/iw/sql/01-init-table.sql @@ -0,0 +1,2083 @@ +-- PostgreSQL Database Initialization Script +-- Converted from MySQL with Column Comments + +-- ---------------------------- +-- Table structure for async_task_notice +-- ---------------------------- +DROP TABLE IF EXISTS async_task_notice; +CREATE TABLE async_task_notice ( + id BIGSERIAL PRIMARY KEY, + union_type VARCHAR(32) NOT NULL, + union_id BIGINT NOT NULL, + content VARCHAR(255) NOT NULL, + biz_status_str VARCHAR(32) DEFAULT NULL, + biz_param_data VARCHAR(512) DEFAULT NULL, + flow_status SMALLINT DEFAULT 1, + notice_status SMALLINT DEFAULT 1, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_create_by ON async_task_notice(create_by); +CREATE INDEX idx_union ON async_task_notice(union_type,union_id); +COMMENT ON TABLE async_task_notice IS '异步任务通知'; +COMMENT ON COLUMN async_task_notice.id IS '主键'; +COMMENT ON COLUMN async_task_notice.union_type IS '关联类型:common_import等'; +COMMENT ON COLUMN async_task_notice.union_id IS '关联id'; +COMMENT ON COLUMN async_task_notice.content IS '内容'; +COMMENT ON COLUMN async_task_notice.biz_status_str IS '业务状态'; +COMMENT ON COLUMN async_task_notice.biz_param_data IS '业务参数'; +COMMENT ON COLUMN async_task_notice.flow_status IS '流程状态:1开启,2结束'; +COMMENT ON COLUMN async_task_notice.notice_status IS '通知状态:1未读,2已读'; +COMMENT ON COLUMN async_task_notice.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN async_task_notice.create_by IS '创建人'; +COMMENT ON COLUMN async_task_notice.create_time IS '创建时间'; +COMMENT ON COLUMN async_task_notice.update_by IS '更新人'; +COMMENT ON COLUMN async_task_notice.update_time IS '更新时间'; +COMMENT ON COLUMN async_task_notice.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for notice_content_template +-- ---------------------------- +DROP TABLE IF EXISTS notice_content_template; +CREATE TABLE notice_content_template ( + id BIGSERIAL PRIMARY KEY, + template_id BIGINT DEFAULT NULL, + channel_type SMALLINT DEFAULT NULL, + title VARCHAR(64) DEFAULT NULL, + content_template TEXT, + enabled BOOLEAN DEFAULT TRUE, + link VARCHAR(128) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE notice_content_template IS '通知消息体模版'; +COMMENT ON COLUMN notice_content_template.id IS '主键'; +COMMENT ON COLUMN notice_content_template.template_id IS '通知模版id'; +COMMENT ON COLUMN notice_content_template.channel_type IS '消息通道类型:1站内信,2短信,3钉钉,4企业微信,5邮件(见notice_channel_type)'; +COMMENT ON COLUMN notice_content_template.title IS '标题'; +COMMENT ON COLUMN notice_content_template.content_template IS '内容模版'; +COMMENT ON COLUMN notice_content_template.enabled IS '是否启用'; +COMMENT ON COLUMN notice_content_template.link IS '链接'; +COMMENT ON COLUMN notice_content_template.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN notice_content_template.create_by IS '创建人'; +COMMENT ON COLUMN notice_content_template.create_time IS '创建时间'; +COMMENT ON COLUMN notice_content_template.update_by IS '更新人'; +COMMENT ON COLUMN notice_content_template.update_time IS '更新时间'; +COMMENT ON COLUMN notice_content_template.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for notice_receiver_setting +-- ---------------------------- +DROP TABLE IF EXISTS notice_receiver_setting; +CREATE TABLE notice_receiver_setting ( + id BIGSERIAL PRIMARY KEY, + template_id BIGINT DEFAULT NULL, + org_id BIGINT DEFAULT NULL, + receiver_union_type SMALLINT DEFAULT NULL, + receiver_union_id BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE notice_receiver_setting IS '通知接收人设置'; +COMMENT ON COLUMN notice_receiver_setting.id IS '主键'; +COMMENT ON COLUMN notice_receiver_setting.template_id IS '通知模版id'; +COMMENT ON COLUMN notice_receiver_setting.org_id IS '机构id'; +COMMENT ON COLUMN notice_receiver_setting.receiver_union_type IS '接收人关联类型:1用户id,2角色,3标准角色(见notice_receiver_type)'; +COMMENT ON COLUMN notice_receiver_setting.receiver_union_id IS '接收人关联id:用户id,角色id,标准角色id'; +COMMENT ON COLUMN notice_receiver_setting.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN notice_receiver_setting.create_by IS '创建人'; +COMMENT ON COLUMN notice_receiver_setting.create_time IS '创建时间'; +COMMENT ON COLUMN notice_receiver_setting.update_by IS '更新人'; +COMMENT ON COLUMN notice_receiver_setting.update_time IS '更新时间'; +COMMENT ON COLUMN notice_receiver_setting.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for notice_send_record +-- ---------------------------- +DROP TABLE IF EXISTS notice_send_record; +CREATE TABLE notice_send_record ( + id BIGSERIAL PRIMARY KEY, + template_id BIGINT DEFAULT NULL, + sender_org_id BIGINT DEFAULT NULL, + receiver_org_id BIGINT DEFAULT NULL, + content_template_id BIGINT DEFAULT NULL, + content_param_data VARCHAR(512) DEFAULT NULL, + content TEXT, + appointed BOOLEAN DEFAULT NULL, + link VARCHAR(128) DEFAULT NULL, + content_template TEXT, + title VARCHAR(64) DEFAULT NULL, + channel_type SMALLINT DEFAULT NULL, + status SMALLINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE notice_send_record IS '通知发送记录(内容模版级)'; +COMMENT ON COLUMN notice_send_record.id IS '主键'; +COMMENT ON COLUMN notice_send_record.template_id IS '通知模版id'; +COMMENT ON COLUMN notice_send_record.sender_org_id IS '发送方机构id'; +COMMENT ON COLUMN notice_send_record.receiver_org_id IS '接收方机构id'; +COMMENT ON COLUMN notice_send_record.content_template_id IS '消息体模版id'; +COMMENT ON COLUMN notice_send_record.content_param_data IS '消息体参数'; +COMMENT ON COLUMN notice_send_record.content IS '消息体'; +COMMENT ON COLUMN notice_send_record.appointed IS '是否指定接收方(非预先设定)'; +COMMENT ON COLUMN notice_send_record.link IS '链接'; +COMMENT ON COLUMN notice_send_record.content_template IS '内容模版'; +COMMENT ON COLUMN notice_send_record.title IS '标题'; +COMMENT ON COLUMN notice_send_record.channel_type IS '消息通道类型:1站内信,2短信,3钉钉,4企业微信,5邮件(见notice_channel_type)'; +COMMENT ON COLUMN notice_send_record.status IS '状态:1待处理,2已处理 等(见notice_send_status)'; +COMMENT ON COLUMN notice_send_record.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN notice_send_record.create_by IS '创建人'; +COMMENT ON COLUMN notice_send_record.create_time IS '创建时间'; +COMMENT ON COLUMN notice_send_record.update_by IS '更新人'; +COMMENT ON COLUMN notice_send_record.update_time IS '更新时间'; +COMMENT ON COLUMN notice_send_record.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for notice_send_record_detail +-- ---------------------------- +DROP TABLE IF EXISTS notice_send_record_detail; +CREATE TABLE notice_send_record_detail ( + id BIGSERIAL PRIMARY KEY, + record_id BIGINT DEFAULT NULL, + user_id BIGINT DEFAULT NULL, + receiver_account_no VARCHAR(32) DEFAULT NULL, + receiver_status SMALLINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE notice_send_record_detail IS '通知发送记录明细(接收人)'; +COMMENT ON COLUMN notice_send_record_detail.id IS '主键'; +COMMENT ON COLUMN notice_send_record_detail.record_id IS '发送记录id'; +COMMENT ON COLUMN notice_send_record_detail.user_id IS '接收人id'; +COMMENT ON COLUMN notice_send_record_detail.receiver_account_no IS '接收方帐号'; +COMMENT ON COLUMN notice_send_record_detail.receiver_status IS '接收状态:1待发送,2已发送,3发送失败,4接收已读(见notice_receiver_status)'; +COMMENT ON COLUMN notice_send_record_detail.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN notice_send_record_detail.create_by IS '创建人'; +COMMENT ON COLUMN notice_send_record_detail.create_time IS '创建时间'; +COMMENT ON COLUMN notice_send_record_detail.update_by IS '更新人'; +COMMENT ON COLUMN notice_send_record_detail.update_time IS '更新时间'; +COMMENT ON COLUMN notice_send_record_detail.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for notice_template +-- ---------------------------- +DROP TABLE IF EXISTS notice_template; +CREATE TABLE notice_template ( + id BIGSERIAL PRIMARY KEY, + template_code VARCHAR(32) DEFAULT NULL, + template_name VARCHAR(64) DEFAULT NULL, + module_type SMALLINT DEFAULT NULL, + biz_type SMALLINT DEFAULT NULL, + level SMALLINT DEFAULT NULL, + enabled BOOLEAN DEFAULT TRUE, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE notice_template IS '通知模版'; +COMMENT ON COLUMN notice_template.id IS '主键'; +COMMENT ON COLUMN notice_template.template_code IS '通知模版code'; +COMMENT ON COLUMN notice_template.template_name IS '通知模版名称'; +COMMENT ON COLUMN notice_template.module_type IS '模块分类:1业务,2监控/预警(见notice_module_type)'; +COMMENT ON COLUMN notice_template.biz_type IS '业务分类:'; +COMMENT ON COLUMN notice_template.level IS '级别:1平台,2机构(见notice_level)'; +COMMENT ON COLUMN notice_template.enabled IS '是否启用'; +COMMENT ON COLUMN notice_template.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN notice_template.create_by IS '创建人'; +COMMENT ON COLUMN notice_template.create_time IS '创建时间'; +COMMENT ON COLUMN notice_template.update_by IS '更新人'; +COMMENT ON COLUMN notice_template.update_time IS '更新时间'; +COMMENT ON COLUMN notice_template.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_action +-- ---------------------------- +DROP TABLE IF EXISTS uc_action; +CREATE TABLE uc_action ( + id BIGSERIAL PRIMARY KEY, + union_type VARCHAR(32) DEFAULT NULL, + union_id BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_action IS '操作记录'; +COMMENT ON COLUMN uc_action.id IS '主键'; +COMMENT ON COLUMN uc_action.union_type IS '关联类型'; +COMMENT ON COLUMN uc_action.union_id IS '关联id'; +COMMENT ON COLUMN uc_action.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_action.create_by IS '创建人'; +COMMENT ON COLUMN uc_action.create_time IS '创建时间'; +COMMENT ON COLUMN uc_action.update_by IS '更新人'; +COMMENT ON COLUMN uc_action.update_time IS '更新时间'; +COMMENT ON COLUMN uc_action.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_action_detail +-- ---------------------------- +DROP TABLE IF EXISTS uc_action_detail; +CREATE TABLE uc_action_detail ( + id BIGSERIAL PRIMARY KEY, + action_id BIGINT DEFAULT NULL, + field VARCHAR(32) DEFAULT NULL, + field_alias VARCHAR(32) DEFAULT NULL, + field_dict_code VARCHAR(32) DEFAULT NULL, + old_value VARCHAR(255) DEFAULT NULL, + new_value VARCHAR(255) DEFAULT NULL, + diff TEXT, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_action_detail IS '操作记录明细'; +COMMENT ON COLUMN uc_action_detail.id IS '主键'; +COMMENT ON COLUMN uc_action_detail.action_id IS '操作记录id'; +COMMENT ON COLUMN uc_action_detail.field IS '属性'; +COMMENT ON COLUMN uc_action_detail.field_alias IS '属性别名'; +COMMENT ON COLUMN uc_action_detail.field_dict_code IS '属性字典'; +COMMENT ON COLUMN uc_action_detail.old_value IS '旧值'; +COMMENT ON COLUMN uc_action_detail.new_value IS '新值'; +COMMENT ON COLUMN uc_action_detail.diff IS '差异'; +COMMENT ON COLUMN uc_action_detail.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_action_detail.create_by IS '创建人'; +COMMENT ON COLUMN uc_action_detail.create_time IS '创建时间'; +COMMENT ON COLUMN uc_action_detail.update_by IS '更新人'; +COMMENT ON COLUMN uc_action_detail.update_time IS '更新时间'; +COMMENT ON COLUMN uc_action_detail.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_auth_client +-- ---------------------------- +DROP TABLE IF EXISTS uc_auth_client; +CREATE TABLE uc_auth_client ( + id BIGSERIAL PRIMARY KEY, + auth_type_code SMALLINT DEFAULT NULL, + client_name VARCHAR(32) DEFAULT NULL, + param_data VARCHAR(256) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_auth_client IS '授权客户端'; +COMMENT ON COLUMN uc_auth_client.id IS '主键'; +COMMENT ON COLUMN uc_auth_client.auth_type_code IS '授权类型标识'; +COMMENT ON COLUMN uc_auth_client.client_name IS '授权应用名称'; +COMMENT ON COLUMN uc_auth_client.param_data IS '配置数据'; +COMMENT ON COLUMN uc_auth_client.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_auth_client.create_by IS '创建人'; +COMMENT ON COLUMN uc_auth_client.create_time IS '创建时间'; +COMMENT ON COLUMN uc_auth_client.update_by IS '更新人'; +COMMENT ON COLUMN uc_auth_client.update_time IS '更新时间'; +COMMENT ON COLUMN uc_auth_client.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_auth_detail +-- ---------------------------- +DROP TABLE IF EXISTS uc_auth_detail; +CREATE TABLE uc_auth_detail ( + id BIGSERIAL PRIMARY KEY, + auth_client_id BIGINT DEFAULT NULL, + auth_type_code SMALLINT DEFAULT NULL, + nickname VARCHAR(32) DEFAULT NULL, + avatar VARCHAR(256) DEFAULT NULL, + gender VARCHAR(2) DEFAULT NULL, + country VARCHAR(32) DEFAULT NULL, + province VARCHAR(32) DEFAULT NULL, + city VARCHAR(32) DEFAULT NULL, + open_id VARCHAR(32) DEFAULT NULL, + unique_id VARCHAR(32) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_auth_detail IS '授权明细表'; +COMMENT ON COLUMN uc_auth_detail.id IS '主键'; +COMMENT ON COLUMN uc_auth_detail.auth_client_id IS '授权客户端id'; +COMMENT ON COLUMN uc_auth_detail.auth_type_code IS '授权类型标识'; +COMMENT ON COLUMN uc_auth_detail.nickname IS '昵称'; +COMMENT ON COLUMN uc_auth_detail.avatar IS '头像'; +COMMENT ON COLUMN uc_auth_detail.gender IS '性别'; +COMMENT ON COLUMN uc_auth_detail.country IS '国家'; +COMMENT ON COLUMN uc_auth_detail.province IS '省份'; +COMMENT ON COLUMN uc_auth_detail.city IS '城市'; +COMMENT ON COLUMN uc_auth_detail.open_id IS 'open_id'; +COMMENT ON COLUMN uc_auth_detail.unique_id IS '授权唯一id'; +COMMENT ON COLUMN uc_auth_detail.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_auth_detail.create_by IS '创建人'; +COMMENT ON COLUMN uc_auth_detail.create_time IS '创建时间'; +COMMENT ON COLUMN uc_auth_detail.update_by IS '更新人'; +COMMENT ON COLUMN uc_auth_detail.update_time IS '更新时间'; +COMMENT ON COLUMN uc_auth_detail.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_auth_detail_entrypoint +-- ---------------------------- +DROP TABLE IF EXISTS uc_auth_detail_entrypoint; +CREATE TABLE uc_auth_detail_entrypoint ( + id BIGSERIAL PRIMARY KEY, + auth_detail_id BIGINT DEFAULT NULL, + union_id BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_union_id ON uc_auth_detail_entrypoint(union_id); +COMMENT ON TABLE uc_auth_detail_entrypoint IS '授权明细入口'; +COMMENT ON COLUMN uc_auth_detail_entrypoint.id IS '主键'; +COMMENT ON COLUMN uc_auth_detail_entrypoint.auth_detail_id IS '授权客户端id'; +COMMENT ON COLUMN uc_auth_detail_entrypoint.union_id IS '关联id(小程序码id)'; +COMMENT ON COLUMN uc_auth_detail_entrypoint.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_auth_detail_entrypoint.create_by IS '创建人'; +COMMENT ON COLUMN uc_auth_detail_entrypoint.create_time IS '创建时间'; +COMMENT ON COLUMN uc_auth_detail_entrypoint.update_by IS '更新人'; +COMMENT ON COLUMN uc_auth_detail_entrypoint.update_time IS '更新时间'; +COMMENT ON COLUMN uc_auth_detail_entrypoint.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_auth_subscribe_detail +-- ---------------------------- +DROP TABLE IF EXISTS uc_auth_subscribe_detail; +CREATE TABLE uc_auth_subscribe_detail ( + id BIGSERIAL PRIMARY KEY, + auth_client_id BIGINT DEFAULT NULL, + open_id VARCHAR(32) DEFAULT NULL, + unique_id VARCHAR(32) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_auth_subscribe_detail IS '授权订阅明细表'; +COMMENT ON COLUMN uc_auth_subscribe_detail.id IS '主键'; +COMMENT ON COLUMN uc_auth_subscribe_detail.auth_client_id IS '授权客户端id'; +COMMENT ON COLUMN uc_auth_subscribe_detail.open_id IS 'open_id'; +COMMENT ON COLUMN uc_auth_subscribe_detail.unique_id IS '授权唯一id'; +COMMENT ON COLUMN uc_auth_subscribe_detail.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_auth_subscribe_detail.create_by IS '创建人'; +COMMENT ON COLUMN uc_auth_subscribe_detail.create_time IS '创建时间'; +COMMENT ON COLUMN uc_auth_subscribe_detail.update_by IS '更新人'; +COMMENT ON COLUMN uc_auth_subscribe_detail.update_time IS '更新时间'; +COMMENT ON COLUMN uc_auth_subscribe_detail.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_auth_type +-- ---------------------------- +DROP TABLE IF EXISTS uc_auth_type; +CREATE TABLE uc_auth_type ( + id BIGSERIAL PRIMARY KEY, + auth_main_type SMALLINT DEFAULT NULL, + auth_type_code SMALLINT DEFAULT NULL, + name VARCHAR(32) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_auth_type IS '授权类型'; +COMMENT ON COLUMN uc_auth_type.id IS '主键'; +COMMENT ON COLUMN uc_auth_type.auth_main_type IS '授权大类:1微信,2支付宝'; +COMMENT ON COLUMN uc_auth_type.auth_type_code IS '授权类型标识'; +COMMENT ON COLUMN uc_auth_type.name IS '名称'; +COMMENT ON COLUMN uc_auth_type.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_auth_type.create_by IS '创建人'; +COMMENT ON COLUMN uc_auth_type.create_time IS '创建时间'; +COMMENT ON COLUMN uc_auth_type.update_by IS '更新人'; +COMMENT ON COLUMN uc_auth_type.update_time IS '更新时间'; +COMMENT ON COLUMN uc_auth_type.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_domain +-- ---------------------------- +DROP TABLE IF EXISTS uc_domain; +CREATE TABLE uc_domain ( + id BIGSERIAL PRIMARY KEY, + platform_code SMALLINT DEFAULT NULL, + domain_name VARCHAR(32) DEFAULT NULL, + ip_port VARCHAR(32) DEFAULT NULL, + publiced BOOLEAN DEFAULT NULL, + org_id BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_domain IS '域名表'; +COMMENT ON COLUMN uc_domain.id IS '主键'; +COMMENT ON COLUMN uc_domain.platform_code IS '平台编码'; +COMMENT ON COLUMN uc_domain.domain_name IS '域名'; +COMMENT ON COLUMN uc_domain.ip_port IS 'ip:port'; +COMMENT ON COLUMN uc_domain.publiced IS '是否公共'; +COMMENT ON COLUMN uc_domain.org_id IS '机构id'; +COMMENT ON COLUMN uc_domain.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_domain.create_by IS '创建人'; +COMMENT ON COLUMN uc_domain.create_time IS '创建时间'; +COMMENT ON COLUMN uc_domain.update_by IS '更新人'; +COMMENT ON COLUMN uc_domain.update_time IS '更新时间'; +COMMENT ON COLUMN uc_domain.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_domain_auth +-- ---------------------------- +DROP TABLE IF EXISTS uc_domain_auth; +CREATE TABLE uc_domain_auth ( + id BIGSERIAL PRIMARY KEY, + domain_id BIGINT DEFAULT NULL, + auth_type_code SMALLINT DEFAULT NULL, + auth_client_id BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_domain_auth IS '域名授权表'; +COMMENT ON COLUMN uc_domain_auth.id IS '主键'; +COMMENT ON COLUMN uc_domain_auth.domain_id IS '域名id'; +COMMENT ON COLUMN uc_domain_auth.auth_type_code IS '授权类型标识'; +COMMENT ON COLUMN uc_domain_auth.auth_client_id IS '授权客户端id'; +COMMENT ON COLUMN uc_domain_auth.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_domain_auth.create_by IS '创建人'; +COMMENT ON COLUMN uc_domain_auth.create_time IS '创建时间'; +COMMENT ON COLUMN uc_domain_auth.update_by IS '更新人'; +COMMENT ON COLUMN uc_domain_auth.update_time IS '更新时间'; +COMMENT ON COLUMN uc_domain_auth.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_domain_setting +-- ---------------------------- +DROP TABLE IF EXISTS uc_domain_setting; +CREATE TABLE uc_domain_setting ( + id BIGSERIAL PRIMARY KEY, + domain_id BIGINT DEFAULT NULL, + type SMALLINT DEFAULT NULL, + remark VARCHAR(32) DEFAULT '', + data TEXT, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_domain_setting IS '域名配置表'; +COMMENT ON COLUMN uc_domain_setting.id IS '主键'; +COMMENT ON COLUMN uc_domain_setting.domain_id IS '域名id'; +COMMENT ON COLUMN uc_domain_setting.type IS '类型'; +COMMENT ON COLUMN uc_domain_setting.remark IS '配置备注'; +COMMENT ON COLUMN uc_domain_setting.data IS '配置数据'; +COMMENT ON COLUMN uc_domain_setting.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_domain_setting.create_by IS '创建人'; +COMMENT ON COLUMN uc_domain_setting.create_time IS '创建时间'; +COMMENT ON COLUMN uc_domain_setting.update_by IS '更新人'; +COMMENT ON COLUMN uc_domain_setting.update_time IS '更新时间'; +COMMENT ON COLUMN uc_domain_setting.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_dynamic_table +-- ---------------------------- +DROP TABLE IF EXISTS uc_dynamic_table; +CREATE TABLE uc_dynamic_table ( + id BIGSERIAL PRIMARY KEY, + table_type VARCHAR(32) DEFAULT NULL, + user_id BIGINT DEFAULT NULL, + column_data TEXT, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); + +-- ---------------------------- +-- Table structure for uc_faq +-- ---------------------------- +DROP TABLE IF EXISTS uc_faq; +CREATE TABLE uc_faq ( + id BIGSERIAL PRIMARY KEY, + faq_order INTEGER DEFAULT 0, + faq_type VARCHAR(2) DEFAULT NULL, + question VARCHAR(512) DEFAULT NULL, + answer TEXT, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_faq IS '常见问题表'; +COMMENT ON COLUMN uc_faq.id IS '主键'; +COMMENT ON COLUMN uc_faq.faq_order IS '排序'; +COMMENT ON COLUMN uc_faq.faq_type IS '类型'; +COMMENT ON COLUMN uc_faq.question IS '问题'; +COMMENT ON COLUMN uc_faq.answer IS '回答'; +COMMENT ON COLUMN uc_faq.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_faq.create_by IS '创建人'; +COMMENT ON COLUMN uc_faq.create_time IS '创建时间'; +COMMENT ON COLUMN uc_faq.update_by IS '更新人'; +COMMENT ON COLUMN uc_faq.update_time IS '更新时间'; +COMMENT ON COLUMN uc_faq.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_faq_file +-- ---------------------------- +DROP TABLE IF EXISTS uc_faq_file; +CREATE TABLE uc_faq_file ( + id BIGSERIAL PRIMARY KEY, + question_id BIGINT DEFAULT NULL, + file_name VARCHAR(256) DEFAULT NULL, + file_code VARCHAR(32) DEFAULT NULL, + file_suffix VARCHAR(32) DEFAULT NULL, + sort BIGINT DEFAULT NULL, + description VARCHAR(256) DEFAULT NULL, + deleted BOOLEAN NOT NULL DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_faq_file IS '常见问题附件关系表'; +COMMENT ON COLUMN uc_faq_file.id IS '主键'; +COMMENT ON COLUMN uc_faq_file.question_id IS '常见问题ID'; +COMMENT ON COLUMN uc_faq_file.file_name IS '文件名称'; +COMMENT ON COLUMN uc_faq_file.file_code IS '文件编码'; +COMMENT ON COLUMN uc_faq_file.file_suffix IS '文件后缀'; +COMMENT ON COLUMN uc_faq_file.sort IS '排序'; +COMMENT ON COLUMN uc_faq_file.description IS '文件描述'; +COMMENT ON COLUMN uc_faq_file.deleted IS '是否删除'; +COMMENT ON COLUMN uc_faq_file.create_by IS '创建人'; +COMMENT ON COLUMN uc_faq_file.create_time IS '创建时间'; +COMMENT ON COLUMN uc_faq_file.update_by IS '更新人'; +COMMENT ON COLUMN uc_faq_file.update_time IS '更新时间'; +COMMENT ON COLUMN uc_faq_file.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_feedback +-- ---------------------------- +DROP TABLE IF EXISTS uc_feedback; +CREATE TABLE uc_feedback ( + id BIGSERIAL PRIMARY KEY, + type VARCHAR(2) DEFAULT NULL, + user_id BIGINT DEFAULT NULL, + phone VARCHAR(32) DEFAULT NULL, + content VARCHAR(255) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL, + source_type VARCHAR(2) DEFAULT NULL +); +COMMENT ON TABLE uc_feedback IS '反馈表'; +COMMENT ON COLUMN uc_feedback.id IS '主键'; +COMMENT ON COLUMN uc_feedback.type IS '反馈类型'; +COMMENT ON COLUMN uc_feedback.user_id IS '用户id'; +COMMENT ON COLUMN uc_feedback.phone IS '手机号'; +COMMENT ON COLUMN uc_feedback.content IS '反馈内容'; +COMMENT ON COLUMN uc_feedback.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_feedback.create_by IS '创建人'; +COMMENT ON COLUMN uc_feedback.create_time IS '创建时间'; +COMMENT ON COLUMN uc_feedback.update_by IS '更新人'; +COMMENT ON COLUMN uc_feedback.update_time IS '更新时间'; +COMMENT ON COLUMN uc_feedback.proxy_by IS '代理人'; +COMMENT ON COLUMN uc_feedback.source_type IS '来源'; + +-- ---------------------------- +-- Table structure for uc_import_main +-- ---------------------------- +DROP TABLE IF EXISTS uc_import_main; +CREATE TABLE uc_import_main ( + id BIGSERIAL PRIMARY KEY, + import_no VARCHAR(64) DEFAULT NULL, + type VARCHAR(32) DEFAULT NULL, + import_status SMALLINT DEFAULT NULL, + total_num INTEGER DEFAULT NULL, + success_num INTEGER DEFAULT NULL, + fail_msg VARCHAR(255) DEFAULT NULL, + finish_time TIMESTAMP DEFAULT NULL, + execute_type SMALLINT DEFAULT NULL, + extra_id BIGINT DEFAULT NULL, + file_code VARCHAR(32) DEFAULT NULL, + file_name VARCHAR(128) DEFAULT NULL, + org_id BIGINT DEFAULT NULL, + remark VARCHAR(255) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_import_no ON uc_import_main(import_no); +COMMENT ON TABLE uc_import_main IS '通用导入批次表'; +COMMENT ON COLUMN uc_import_main.id IS '主键ID'; +COMMENT ON COLUMN uc_import_main.import_no IS '批次号'; +COMMENT ON COLUMN uc_import_main.type IS '导入类型'; +COMMENT ON COLUMN uc_import_main.import_status IS '导入状态:1新建,2解析失败,3校验中,4校验失败,5校验成功,6执行导入'; +COMMENT ON COLUMN uc_import_main.total_num IS '总数'; +COMMENT ON COLUMN uc_import_main.success_num IS '成功数'; +COMMENT ON COLUMN uc_import_main.fail_msg IS '失败原因'; +COMMENT ON COLUMN uc_import_main.finish_time IS '完成时间时间'; +COMMENT ON COLUMN uc_import_main.execute_type IS '执行类型:1.普通,2.指定外部id'; +COMMENT ON COLUMN uc_import_main.extra_id IS '外部生成id'; +COMMENT ON COLUMN uc_import_main.file_code IS '文件CODE'; +COMMENT ON COLUMN uc_import_main.file_name IS '文件名称'; +COMMENT ON COLUMN uc_import_main.org_id IS '机构ID'; +COMMENT ON COLUMN uc_import_main.remark IS '备注'; +COMMENT ON COLUMN uc_import_main.deleted IS '是否删除'; +COMMENT ON COLUMN uc_import_main.create_by IS '创建人'; +COMMENT ON COLUMN uc_import_main.create_time IS '创建时间'; +COMMENT ON COLUMN uc_import_main.update_by IS '修改人'; +COMMENT ON COLUMN uc_import_main.update_time IS '修改时间'; +COMMENT ON COLUMN uc_import_main.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_lite_code +-- ---------------------------- +DROP TABLE IF EXISTS uc_lite_code; +CREATE TABLE uc_lite_code ( + id BIGSERIAL PRIMARY KEY, + lite_code_config_id BIGINT DEFAULT NULL, + unique_code VARCHAR(32) DEFAULT NULL, + param_value VARCHAR(255) DEFAULT NULL, + query_value VARCHAR(255) DEFAULT NULL, + file_code VARCHAR(32) DEFAULT NULL, + url_scheme VARCHAR(64) DEFAULT NULL, + name VARCHAR(32) DEFAULT NULL, + user_id BIGINT DEFAULT NULL, + org_id BIGINT DEFAULT NULL, + platform_code SMALLINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_lite_code IS '小程序码'; +COMMENT ON COLUMN uc_lite_code.id IS '主键'; +COMMENT ON COLUMN uc_lite_code.lite_code_config_id IS '小程序码配置id'; +COMMENT ON COLUMN uc_lite_code.unique_code IS '唯一码-uuid'; +COMMENT ON COLUMN uc_lite_code.param_value IS '参数值(按参数键升序排列)(格式:**&**)'; +COMMENT ON COLUMN uc_lite_code.query_value IS 'query参数值(格式:**=**&**=**)'; +COMMENT ON COLUMN uc_lite_code.file_code IS '小程序码文件编码'; +COMMENT ON COLUMN uc_lite_code.url_scheme IS '小程序scheme码'; +COMMENT ON COLUMN uc_lite_code.name IS '名称'; +COMMENT ON COLUMN uc_lite_code.user_id IS '用户id'; +COMMENT ON COLUMN uc_lite_code.org_id IS '机构id'; +COMMENT ON COLUMN uc_lite_code.platform_code IS '平台编码'; +COMMENT ON COLUMN uc_lite_code.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_lite_code.create_by IS '创建人'; +COMMENT ON COLUMN uc_lite_code.create_time IS '创建时间'; +COMMENT ON COLUMN uc_lite_code.update_by IS '更新人'; +COMMENT ON COLUMN uc_lite_code.update_time IS '更新时间'; +COMMENT ON COLUMN uc_lite_code.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_lite_code_config +-- ---------------------------- +DROP TABLE IF EXISTS uc_lite_code_config; +CREATE TABLE uc_lite_code_config ( + id BIGSERIAL PRIMARY KEY, + auth_client_id BIGINT DEFAULT NULL, + biz_type SMALLINT DEFAULT NULL, + path VARCHAR(64) DEFAULT NULL, + param_key VARCHAR(64) DEFAULT NULL, + env_param_key VARCHAR(64) DEFAULT NULL, + platform_code SMALLINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_lite_code_config IS '小程序码配置'; +COMMENT ON COLUMN uc_lite_code_config.id IS '主键'; +COMMENT ON COLUMN uc_lite_code_config.auth_client_id IS '授权客户端id'; +COMMENT ON COLUMN uc_lite_code_config.biz_type IS '小程序码业务类型'; +COMMENT ON COLUMN uc_lite_code_config.path IS '路径'; +COMMENT ON COLUMN uc_lite_code_config.param_key IS '参数键-逗号分隔'; +COMMENT ON COLUMN uc_lite_code_config.env_param_key IS '内置环境参数键-逗号分隔'; +COMMENT ON COLUMN uc_lite_code_config.platform_code IS '平台编码'; +COMMENT ON COLUMN uc_lite_code_config.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_lite_code_config.create_by IS '创建人'; +COMMENT ON COLUMN uc_lite_code_config.create_time IS '创建时间'; +COMMENT ON COLUMN uc_lite_code_config.update_by IS '更新人'; +COMMENT ON COLUMN uc_lite_code_config.update_time IS '更新时间'; +COMMENT ON COLUMN uc_lite_code_config.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_org_relation +-- ---------------------------- +DROP TABLE IF EXISTS uc_org_relation; +CREATE TABLE uc_org_relation ( + id BIGSERIAL PRIMARY KEY, + org_id BIGINT DEFAULT NULL, + org_type SMALLINT DEFAULT NULL, + parent_id BIGINT DEFAULT NULL, + path VARCHAR(255) DEFAULT NULL, + platform_code SMALLINT DEFAULT NULL, + platform_name VARCHAR(32) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_org_id ON uc_org_relation(org_id); +COMMENT ON TABLE uc_org_relation IS '机构关系表'; +COMMENT ON COLUMN uc_org_relation.id IS '主键'; +COMMENT ON COLUMN uc_org_relation.org_id IS '机构id'; +COMMENT ON COLUMN uc_org_relation.org_type IS '类型'; +COMMENT ON COLUMN uc_org_relation.parent_id IS '上级id'; +COMMENT ON COLUMN uc_org_relation.path IS '路径'; +COMMENT ON COLUMN uc_org_relation.platform_code IS '平台编码'; +COMMENT ON COLUMN uc_org_relation.platform_name IS '平台名称'; +COMMENT ON COLUMN uc_org_relation.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_org_relation.create_by IS '创建人'; +COMMENT ON COLUMN uc_org_relation.create_time IS '创建时间'; +COMMENT ON COLUMN uc_org_relation.update_by IS '更新人'; +COMMENT ON COLUMN uc_org_relation.update_time IS '更新时间'; +COMMENT ON COLUMN uc_org_relation.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_org_user +-- ---------------------------- +DROP TABLE IF EXISTS uc_org_user; +CREATE TABLE uc_org_user ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT DEFAULT NULL, + org_id BIGINT DEFAULT NULL, + administrator BOOLEAN DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX INDEX12378548369700 ON uc_org_user(user_id); +CREATE INDEX INDEX12378670651400 ON uc_org_user(org_id); +COMMENT ON TABLE uc_org_user IS '机构用户表'; +COMMENT ON COLUMN uc_org_user.id IS '主键'; +COMMENT ON COLUMN uc_org_user.user_id IS '用户id'; +COMMENT ON COLUMN uc_org_user.org_id IS '机构id'; +COMMENT ON COLUMN uc_org_user.administrator IS '是否管理员'; +COMMENT ON COLUMN uc_org_user.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_org_user.create_by IS '创建人'; +COMMENT ON COLUMN uc_org_user.create_time IS '创建时间'; +COMMENT ON COLUMN uc_org_user.update_by IS '更新人'; +COMMENT ON COLUMN uc_org_user.update_time IS '更新时间'; +COMMENT ON COLUMN uc_org_user.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_platform +-- ---------------------------- +DROP TABLE IF EXISTS uc_platform; +CREATE TABLE uc_platform ( + id BIGSERIAL PRIMARY KEY, + platform_code SMALLINT DEFAULT NULL, + name VARCHAR(32) DEFAULT NULL, + full_name VARCHAR(32) DEFAULT NULL, + short_name VARCHAR(32) DEFAULT NULL, + business BOOLEAN DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_platform IS '系统应用表'; +COMMENT ON COLUMN uc_platform.id IS '主键'; +COMMENT ON COLUMN uc_platform.platform_code IS '平台编码'; +COMMENT ON COLUMN uc_platform.name IS '名称'; +COMMENT ON COLUMN uc_platform.full_name IS '全称'; +COMMENT ON COLUMN uc_platform.short_name IS '简称'; +COMMENT ON COLUMN uc_platform.business IS '是否业务系统'; +COMMENT ON COLUMN uc_platform.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_platform.create_by IS '创建人'; +COMMENT ON COLUMN uc_platform.create_time IS '创建时间'; +COMMENT ON COLUMN uc_platform.update_by IS '更新人'; +COMMENT ON COLUMN uc_platform.update_time IS '更新时间'; +COMMENT ON COLUMN uc_platform.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_slick_param +-- ---------------------------- +DROP TABLE IF EXISTS uc_slick_param; +CREATE TABLE uc_slick_param ( + id BIGSERIAL PRIMARY KEY, + unique_code VARCHAR(32) DEFAULT NULL, + query_value VARCHAR(255) DEFAULT NULL, + param_data VARCHAR(255) DEFAULT NULL, + hash_code INTEGER DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_hash_code ON uc_slick_param(hash_code); +CREATE INDEX idx_unique_code ON uc_slick_param(unique_code); +COMMENT ON TABLE uc_slick_param IS '圆滑的参数'; +COMMENT ON COLUMN uc_slick_param.id IS '主键'; +COMMENT ON COLUMN uc_slick_param.unique_code IS '唯一码-uuid'; +COMMENT ON COLUMN uc_slick_param.query_value IS 'query升序值(格式:**=**&**=**)'; +COMMENT ON COLUMN uc_slick_param.param_data IS 'json'; +COMMENT ON COLUMN uc_slick_param.hash_code IS '哈希值'; +COMMENT ON COLUMN uc_slick_param.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_slick_param.create_by IS '创建人'; +COMMENT ON COLUMN uc_slick_param.create_time IS '创建时间'; +COMMENT ON COLUMN uc_slick_param.update_by IS '更新人'; +COMMENT ON COLUMN uc_slick_param.update_time IS '更新时间'; +COMMENT ON COLUMN uc_slick_param.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_user +-- ---------------------------- +DROP TABLE IF EXISTS uc_user; +CREATE TABLE uc_user ( + id BIGSERIAL PRIMARY KEY, + username VARCHAR(32) DEFAULT NULL, + password VARCHAR(128) DEFAULT NULL, + type SMALLINT DEFAULT NULL, + supeiror BOOLEAN DEFAULT NULL, + security_code VARCHAR(128) DEFAULT NULL, + nickname VARCHAR(32) DEFAULT NULL, + avatar VARCHAR(256) DEFAULT NULL, + phone VARCHAR(32) DEFAULT NULL, + phone_binding BOOLEAN DEFAULT NULL, + real_name VARCHAR(32) DEFAULT NULL, + card_no VARCHAR(18) DEFAULT NULL, + authenticated BOOLEAN DEFAULT NULL, + status SMALLINT DEFAULT NULL, + email VARCHAR(32) DEFAULT NULL, + address VARCHAR(32) DEFAULT NULL, + education SMALLINT DEFAULT NULL, + init_user_id BIGINT DEFAULT NULL, + enabled BOOLEAN DEFAULT NULL, + account_non_expired BOOLEAN DEFAULT NULL, + account_non_locked BOOLEAN DEFAULT NULL, + credentials_non_expired BOOLEAN DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL, + gender SMALLINT DEFAULT NULL, + birthday date DEFAULT NULL +); +CREATE INDEX idx_card_no ON uc_user(card_no); +CREATE INDEX idx_phone ON uc_user(phone); +CREATE INDEX idx_real_name ON uc_user(real_name); +COMMENT ON TABLE uc_user IS '用户表'; +COMMENT ON COLUMN uc_user.id IS '主键'; +COMMENT ON COLUMN uc_user.username IS '账号'; +COMMENT ON COLUMN uc_user.password IS '密码'; +COMMENT ON COLUMN uc_user.type IS '用户类型:1企业用户,2个人用户'; +COMMENT ON COLUMN uc_user.supeiror IS '是否超管'; +COMMENT ON COLUMN uc_user.security_code IS '安全码'; +COMMENT ON COLUMN uc_user.nickname IS '昵称'; +COMMENT ON COLUMN uc_user.avatar IS '头像'; +COMMENT ON COLUMN uc_user.phone IS '手机号码'; +COMMENT ON COLUMN uc_user.phone_binding IS '手机号绑定状态'; +COMMENT ON COLUMN uc_user.real_name IS '真实姓名'; +COMMENT ON COLUMN uc_user.card_no IS '身份证号'; +COMMENT ON COLUMN uc_user.authenticated IS '是否实名'; +COMMENT ON COLUMN uc_user.status IS '状态:1.待激活,2已激活,3已注销'; +COMMENT ON COLUMN uc_user.email IS '邮箱'; +COMMENT ON COLUMN uc_user.address IS '用户所在地'; +COMMENT ON COLUMN uc_user.education IS '1博士、2硕士、3本科、4大专、5高中、6中专/中技、7初中及以下、8不限'; +COMMENT ON COLUMN uc_user.init_user_id IS '初始(推荐)用户id'; +COMMENT ON COLUMN uc_user.enabled IS '是否启用'; +COMMENT ON COLUMN uc_user.account_non_expired IS '账号是否未过期'; +COMMENT ON COLUMN uc_user.account_non_locked IS '是否未锁定'; +COMMENT ON COLUMN uc_user.credentials_non_expired IS '凭据是否未过期'; +COMMENT ON COLUMN uc_user.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_user.create_by IS '创建人'; +COMMENT ON COLUMN uc_user.create_time IS '创建时间'; +COMMENT ON COLUMN uc_user.update_by IS '更新人'; +COMMENT ON COLUMN uc_user.update_time IS '更新时间'; +COMMENT ON COLUMN uc_user.proxy_by IS '代理人'; +COMMENT ON COLUMN uc_user.gender IS '性别:1男2女'; +COMMENT ON COLUMN uc_user.birthday IS '生日'; + +-- ---------------------------- +-- Table structure for uc_user_auth +-- ---------------------------- +DROP TABLE IF EXISTS uc_user_auth; +CREATE TABLE uc_user_auth ( + id BIGSERIAL PRIMARY KEY, + auth_main_type SMALLINT DEFAULT NULL, + unique_id VARCHAR(32) DEFAULT NULL, + user_id BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_unique_id ON uc_user_auth(unique_id); +COMMENT ON TABLE uc_user_auth IS '用户授权中间表'; +COMMENT ON COLUMN uc_user_auth.id IS '主键'; +COMMENT ON COLUMN uc_user_auth.auth_main_type IS '授权大类'; +COMMENT ON COLUMN uc_user_auth.unique_id IS '授权唯一id'; +COMMENT ON COLUMN uc_user_auth.user_id IS '用户id'; +COMMENT ON COLUMN uc_user_auth.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_user_auth.create_by IS '创建人'; +COMMENT ON COLUMN uc_user_auth.create_time IS '创建时间'; +COMMENT ON COLUMN uc_user_auth.update_by IS '更新人'; +COMMENT ON COLUMN uc_user_auth.update_time IS '更新时间'; +COMMENT ON COLUMN uc_user_auth.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_user_cancel +-- ---------------------------- +DROP TABLE IF EXISTS uc_user_cancel; +CREATE TABLE uc_user_cancel ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT DEFAULT NULL, + status SMALLINT DEFAULT 1, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL, + cancellation_type VARCHAR(2) DEFAULT NULL, + remark VARCHAR(255) DEFAULT NULL +); +COMMENT ON TABLE uc_user_cancel IS '用户申请注销表'; +COMMENT ON COLUMN uc_user_cancel.id IS '主键'; +COMMENT ON COLUMN uc_user_cancel.user_id IS '用户表ID'; +COMMENT ON COLUMN uc_user_cancel.status IS '申请状态 1:已申请 2:已注销'; +COMMENT ON COLUMN uc_user_cancel.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_user_cancel.create_by IS '创建人'; +COMMENT ON COLUMN uc_user_cancel.create_time IS '创建时间'; +COMMENT ON COLUMN uc_user_cancel.update_by IS '更新人'; +COMMENT ON COLUMN uc_user_cancel.update_time IS '更新时间'; +COMMENT ON COLUMN uc_user_cancel.proxy_by IS '代理人'; +COMMENT ON COLUMN uc_user_cancel.cancellation_type IS '注销原因类型 数据字典'; +COMMENT ON COLUMN uc_user_cancel.remark IS '备注'; + +-- ---------------------------- +-- Table structure for uc_user_config +-- ---------------------------- +DROP TABLE IF EXISTS uc_user_config; +CREATE TABLE uc_user_config ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT DEFAULT NULL, + config_code VARCHAR(64) DEFAULT NULL, + config_value VARCHAR(1024) DEFAULT NULL, + remark VARCHAR(128) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_user_config IS '用户配置表'; +COMMENT ON COLUMN uc_user_config.id IS '主键'; +COMMENT ON COLUMN uc_user_config.user_id IS '用户id'; +COMMENT ON COLUMN uc_user_config.config_code IS '编码'; +COMMENT ON COLUMN uc_user_config.config_value IS '配置值'; +COMMENT ON COLUMN uc_user_config.remark IS '备注'; +COMMENT ON COLUMN uc_user_config.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_user_config.create_by IS '创建人'; +COMMENT ON COLUMN uc_user_config.create_time IS '创建时间'; +COMMENT ON COLUMN uc_user_config.update_by IS '更新人'; +COMMENT ON COLUMN uc_user_config.update_time IS '更新时间'; +COMMENT ON COLUMN uc_user_config.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_user_extension +-- ---------------------------- +DROP TABLE IF EXISTS uc_user_extension; +CREATE TABLE uc_user_extension ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT DEFAULT NULL, + technique_tag VARCHAR(256) DEFAULT NULL, + residence_address VARCHAR(128) DEFAULT NULL, + file_code VARCHAR(255) DEFAULT NULL, + file_name VARCHAR(255) DEFAULT NULL, + covid_vaccine SMALLINT DEFAULT NULL, + wechat_qr_code VARCHAR(32) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_user_extension IS '用户扩展表'; +COMMENT ON COLUMN uc_user_extension.id IS '主键'; +COMMENT ON COLUMN uc_user_extension.user_id IS '用户id'; +COMMENT ON COLUMN uc_user_extension.technique_tag IS '技能标签'; +COMMENT ON COLUMN uc_user_extension.residence_address IS '常住地区'; +COMMENT ON COLUMN uc_user_extension.file_code IS '简历附件编码'; +COMMENT ON COLUMN uc_user_extension.file_name IS '简历附件名称'; +COMMENT ON COLUMN uc_user_extension.covid_vaccine IS '新冠疫苗:1.未接种,2.1针,3.2针,4.3针'; +COMMENT ON COLUMN uc_user_extension.wechat_qr_code IS '微信二维码'; +COMMENT ON COLUMN uc_user_extension.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_user_extension.create_by IS '创建人'; +COMMENT ON COLUMN uc_user_extension.create_time IS '创建时间'; +COMMENT ON COLUMN uc_user_extension.update_by IS '更新人'; +COMMENT ON COLUMN uc_user_extension.update_time IS '更新时间'; +COMMENT ON COLUMN uc_user_extension.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_user_face +-- ---------------------------- +DROP TABLE IF EXISTS uc_user_face; +CREATE TABLE uc_user_face ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT DEFAULT NULL, + type SMALLINT DEFAULT NULL, + file_code VARCHAR(32) DEFAULT NULL, + deleted BOOLEAN NOT NULL DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX INDEX12379510213700 ON uc_user_face(user_id); +COMMENT ON TABLE uc_user_face IS '用户活体信息表'; +COMMENT ON COLUMN uc_user_face.id IS 'ID'; +COMMENT ON COLUMN uc_user_face.user_id IS '用户ID'; +COMMENT ON COLUMN uc_user_face.type IS '类型 1:照片 2:视频'; +COMMENT ON COLUMN uc_user_face.file_code IS '文件编码'; +COMMENT ON COLUMN uc_user_face.deleted IS '是否删除'; +COMMENT ON COLUMN uc_user_face.create_by IS '创建人'; +COMMENT ON COLUMN uc_user_face.create_time IS '创建时间'; +COMMENT ON COLUMN uc_user_face.update_by IS '更新人'; +COMMENT ON COLUMN uc_user_face.update_time IS '更新时间'; +COMMENT ON COLUMN uc_user_face.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for uc_user_postal_info +-- ---------------------------- +DROP TABLE IF EXISTS uc_user_postal_info; +CREATE TABLE uc_user_postal_info ( + id BIGSERIAL PRIMARY KEY, + defaulted BOOLEAN DEFAULT NULL, + name VARCHAR(50) DEFAULT NULL, + phone VARCHAR(50) DEFAULT NULL, + address_code VARCHAR(50) DEFAULT NULL, + address_name VARCHAR(50) DEFAULT NULL, + address_detail VARCHAR(100) DEFAULT NULL, + deleted BOOLEAN DEFAULT NULL, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE uc_user_postal_info IS '用户邮寄信息'; +COMMENT ON COLUMN uc_user_postal_info.id IS '主键'; +COMMENT ON COLUMN uc_user_postal_info.defaulted IS '是否默认'; +COMMENT ON COLUMN uc_user_postal_info.name IS '收货人'; +COMMENT ON COLUMN uc_user_postal_info.phone IS '手机号'; +COMMENT ON COLUMN uc_user_postal_info.address_code IS '地区编码'; +COMMENT ON COLUMN uc_user_postal_info.address_name IS '地址名称'; +COMMENT ON COLUMN uc_user_postal_info.address_detail IS '详细地址'; +COMMENT ON COLUMN uc_user_postal_info.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_user_postal_info.create_by IS '创建人'; +COMMENT ON COLUMN uc_user_postal_info.create_time IS '创建时间'; +COMMENT ON COLUMN uc_user_postal_info.update_by IS '更新人'; +COMMENT ON COLUMN uc_user_postal_info.update_time IS '更新时间'; +COMMENT ON COLUMN uc_user_postal_info.proxy_by IS '代理人'; + + +-- ---------------------------- +-- Table structure for uc_user_register +-- ---------------------------- +DROP TABLE IF EXISTS uc_user_register; +CREATE TABLE uc_user_register ( + id BIGSERIAL PRIMARY KEY, + platform_code SMALLINT DEFAULT NULL, + user_id BIGINT DEFAULT NULL, + inviter_id BIGINT DEFAULT NULL, + inviter_type SMALLINT DEFAULT NULL, + inviter_org_id BIGINT DEFAULT NULL, + entrypoint VARCHAR(32) DEFAULT NULL, + union_id BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_user_id ON uc_user_register(user_id); +COMMENT ON TABLE uc_user_register IS '用户注册表'; +COMMENT ON COLUMN uc_user_register.id IS '主键'; +COMMENT ON COLUMN uc_user_register.platform_code IS '平台编码'; +COMMENT ON COLUMN uc_user_register.user_id IS '用户id'; +COMMENT ON COLUMN uc_user_register.inviter_id IS '邀请人id'; +COMMENT ON COLUMN uc_user_register.inviter_type IS '邀请人用户类型'; +COMMENT ON COLUMN uc_user_register.inviter_org_id IS '邀请人机构id'; +COMMENT ON COLUMN uc_user_register.entrypoint IS '入口点'; +COMMENT ON COLUMN uc_user_register.union_id IS '关联id(小程序码id)'; +COMMENT ON COLUMN uc_user_register.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN uc_user_register.create_by IS '创建人'; +COMMENT ON COLUMN uc_user_register.create_time IS '创建时间'; +COMMENT ON COLUMN uc_user_register.update_by IS '更新人'; +COMMENT ON COLUMN uc_user_register.update_time IS '更新时间'; +COMMENT ON COLUMN uc_user_register.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_chat +-- ---------------------------- +DROP TABLE IF EXISTS xs_chat; +CREATE TABLE xs_chat ( + id BIGSERIAL PRIMARY KEY, + org_id BIGINT DEFAULT NULL, + org_user_id BIGINT DEFAULT NULL, + person_user_id BIGINT DEFAULT NULL, + type VARCHAR(32) DEFAULT NULL, + status SMALLINT DEFAULT NULL, + deleted BOOLEAN NOT NULL DEFAULT FALSE, + create_by BIGINT NOT NULL, + create_time TIMESTAMP NOT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE xs_chat IS '聊天表'; +COMMENT ON COLUMN xs_chat.id IS '主键'; +COMMENT ON COLUMN xs_chat.org_id IS '机构id'; +COMMENT ON COLUMN xs_chat.org_user_id IS '机构用户id'; +COMMENT ON COLUMN xs_chat.person_user_id IS '个人用户id'; +COMMENT ON COLUMN xs_chat.type IS '类型(chat_type)'; +COMMENT ON COLUMN xs_chat.status IS '状态:1有效,2关闭'; +COMMENT ON COLUMN xs_chat.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN xs_chat.create_by IS '创建人'; +COMMENT ON COLUMN xs_chat.create_time IS '创建时间'; +COMMENT ON COLUMN xs_chat.update_by IS '更新人'; +COMMENT ON COLUMN xs_chat.update_time IS '更新时间'; +COMMENT ON COLUMN xs_chat.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_chat_msg +-- ---------------------------- +DROP TABLE IF EXISTS xs_chat_msg; +CREATE TABLE xs_chat_msg ( + id BIGSERIAL PRIMARY KEY, + chat_id BIGINT DEFAULT NULL, + sender_id BIGINT DEFAULT NULL, + msg_type VARCHAR(16) DEFAULT NULL, + content VARCHAR(1024) DEFAULT NULL, + msg_status SMALLINT DEFAULT NULL, + deleted BOOLEAN NOT NULL DEFAULT FALSE, + create_by BIGINT NOT NULL, + create_time TIMESTAMP NOT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE xs_chat_msg IS '聊天消息表'; +COMMENT ON COLUMN xs_chat_msg.id IS '主键'; +COMMENT ON COLUMN xs_chat_msg.chat_id IS '聊天id'; +COMMENT ON COLUMN xs_chat_msg.sender_id IS '发送用户id'; +COMMENT ON COLUMN xs_chat_msg.msg_type IS '消息类型(chat_msg_type):text等'; +COMMENT ON COLUMN xs_chat_msg.content IS '个人用户id'; +COMMENT ON COLUMN xs_chat_msg.msg_status IS '消息状态:1未读,2已读'; +COMMENT ON COLUMN xs_chat_msg.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN xs_chat_msg.create_by IS '创建人'; +COMMENT ON COLUMN xs_chat_msg.create_time IS '创建时间'; +COMMENT ON COLUMN xs_chat_msg.update_by IS '更新人'; +COMMENT ON COLUMN xs_chat_msg.update_time IS '更新时间'; +COMMENT ON COLUMN xs_chat_msg.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_code_setting +-- ---------------------------- +DROP TABLE IF EXISTS xs_code_setting; +CREATE TABLE xs_code_setting ( + id BIGSERIAL PRIMARY KEY, + code VARCHAR(64) DEFAULT NULL, + name VARCHAR(128) DEFAULT NULL, + remark VARCHAR(128) DEFAULT NULL, + type VARCHAR(2) DEFAULT NULL, + data_type VARCHAR(2) DEFAULT NULL, + data_format VARCHAR(128) DEFAULT NULL, + level VARCHAR(20) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE xs_code_setting IS '编码表'; +COMMENT ON COLUMN xs_code_setting.id IS '主键ID'; +COMMENT ON COLUMN xs_code_setting.code IS '编码'; +COMMENT ON COLUMN xs_code_setting.name IS '名称'; +COMMENT ON COLUMN xs_code_setting.remark IS '备注'; +COMMENT ON COLUMN xs_code_setting.type IS '类型 模板编码、配置编码'; +COMMENT ON COLUMN xs_code_setting.data_type IS '数据类型'; +COMMENT ON COLUMN xs_code_setting.data_format IS '数据格式编号'; +COMMENT ON COLUMN xs_code_setting.level IS '级别 平台、渠道、定制机构、普通机构'; +COMMENT ON COLUMN xs_code_setting.deleted IS '是否删除'; +COMMENT ON COLUMN xs_code_setting.create_by IS '创建人'; +COMMENT ON COLUMN xs_code_setting.create_time IS '创建时间'; +COMMENT ON COLUMN xs_code_setting.update_by IS '修改人'; +COMMENT ON COLUMN xs_code_setting.update_time IS '修改时间'; +COMMENT ON COLUMN xs_code_setting.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_company_extend +-- ---------------------------- +DROP TABLE IF EXISTS xs_company_extend; +CREATE TABLE xs_company_extend ( + id BIGSERIAL PRIMARY KEY, + seller_id BIGINT DEFAULT NULL, + org_id BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX INDEX173651263650200 ON xs_company_extend(org_id); +COMMENT ON TABLE xs_company_extend IS '企业的扩展信息'; +COMMENT ON COLUMN xs_company_extend.id IS '主键ID'; +COMMENT ON COLUMN xs_company_extend.seller_id IS '销售'; +COMMENT ON COLUMN xs_company_extend.org_id IS '所属机构ID'; +COMMENT ON COLUMN xs_company_extend.deleted IS '是否删除'; +COMMENT ON COLUMN xs_company_extend.create_by IS '创建人'; +COMMENT ON COLUMN xs_company_extend.create_time IS '创建时间'; +COMMENT ON COLUMN xs_company_extend.update_by IS '修改人'; +COMMENT ON COLUMN xs_company_extend.update_time IS '修改时间'; +COMMENT ON COLUMN xs_company_extend.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_component +-- ---------------------------- +DROP TABLE IF EXISTS xs_component; +CREATE TABLE xs_component ( + id BIGSERIAL PRIMARY KEY, + url_id BIGINT DEFAULT NULL, + code VARCHAR(32) DEFAULT NULL, + name VARCHAR(64) DEFAULT NULL, + platform_code SMALLINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE xs_component IS '组件'; +COMMENT ON COLUMN xs_component.id IS '主键ID'; +COMMENT ON COLUMN xs_component.url_id IS '菜单id'; +COMMENT ON COLUMN xs_component.code IS '组件编码'; +COMMENT ON COLUMN xs_component.name IS '组件名称'; +COMMENT ON COLUMN xs_component.platform_code IS '平台编码'; +COMMENT ON COLUMN xs_component.deleted IS '是否删除'; +COMMENT ON COLUMN xs_component.create_by IS '创建人'; +COMMENT ON COLUMN xs_component.create_time IS '创建时间'; +COMMENT ON COLUMN xs_component.update_by IS '修改人'; +COMMENT ON COLUMN xs_component.update_time IS '修改时间'; +COMMENT ON COLUMN xs_component.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_config +-- ---------------------------- +DROP TABLE IF EXISTS xs_config; +CREATE TABLE xs_config ( + id BIGSERIAL PRIMARY KEY, + config_code VARCHAR(64) DEFAULT NULL, + config_value TEXT, + org_id BIGINT DEFAULT NULL, + remark VARCHAR(128) DEFAULT NULL, + enable BOOLEAN DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE xs_config IS '配置表'; +COMMENT ON COLUMN xs_config.id IS '主键ID'; +COMMENT ON COLUMN xs_config.config_code IS '编码'; +COMMENT ON COLUMN xs_config.config_value IS '配置值'; +COMMENT ON COLUMN xs_config.org_id IS '机构'; +COMMENT ON COLUMN xs_config.remark IS '备注'; +COMMENT ON COLUMN xs_config.enable IS '是否启用'; +COMMENT ON COLUMN xs_config.deleted IS '是否删除'; +COMMENT ON COLUMN xs_config.create_by IS '创建人'; +COMMENT ON COLUMN xs_config.create_time IS '创建时间'; +COMMENT ON COLUMN xs_config.update_by IS '修改人'; +COMMENT ON COLUMN xs_config.update_time IS '修改时间'; +COMMENT ON COLUMN xs_config.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_dict +-- ---------------------------- +DROP TABLE IF EXISTS xs_dict; +CREATE TABLE xs_dict ( + id BIGSERIAL PRIMARY KEY, + dict_code VARCHAR(32) DEFAULT NULL, + dict_name VARCHAR(64) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_dict_code ON xs_dict(dict_code); +COMMENT ON TABLE xs_dict IS '数据字典主信息'; +COMMENT ON COLUMN xs_dict.id IS '主键ID'; +COMMENT ON COLUMN xs_dict.dict_code IS '字典编码'; +COMMENT ON COLUMN xs_dict.dict_name IS '字典名称'; +COMMENT ON COLUMN xs_dict.deleted IS '是否删除'; +COMMENT ON COLUMN xs_dict.create_by IS '创建人'; +COMMENT ON COLUMN xs_dict.create_time IS '创建时间'; +COMMENT ON COLUMN xs_dict.update_by IS '修改人'; +COMMENT ON COLUMN xs_dict.update_time IS '修改时间'; +COMMENT ON COLUMN xs_dict.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_dict_detail +-- ---------------------------- +DROP TABLE IF EXISTS xs_dict_detail; +CREATE TABLE xs_dict_detail ( + id BIGSERIAL PRIMARY KEY, + dict_id BIGINT DEFAULT NULL, + dict_detail_code VARCHAR(64) DEFAULT NULL, + dict_detail_name VARCHAR(128) DEFAULT NULL, + dict_order INTEGER DEFAULT NULL, + parent_id BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_dict_id ON xs_dict_detail(dict_id); +COMMENT ON TABLE xs_dict_detail IS '数据字典明细信息'; +COMMENT ON COLUMN xs_dict_detail.id IS '主键ID'; +COMMENT ON COLUMN xs_dict_detail.dict_id IS '字典ID'; +COMMENT ON COLUMN xs_dict_detail.dict_detail_code IS '子项编码'; +COMMENT ON COLUMN xs_dict_detail.dict_detail_name IS '子项名称'; +COMMENT ON COLUMN xs_dict_detail.dict_order IS '排序'; +COMMENT ON COLUMN xs_dict_detail.parent_id IS '父子项ID'; +COMMENT ON COLUMN xs_dict_detail.deleted IS '是否删除'; +COMMENT ON COLUMN xs_dict_detail.create_by IS '创建人'; +COMMENT ON COLUMN xs_dict_detail.create_time IS '创建时间'; +COMMENT ON COLUMN xs_dict_detail.update_by IS '修改人'; +COMMENT ON COLUMN xs_dict_detail.update_time IS '修改时间'; +COMMENT ON COLUMN xs_dict_detail.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_district +-- ---------------------------- +DROP TABLE IF EXISTS xs_district; +CREATE TABLE xs_district ( + id BIGSERIAL PRIMARY KEY, + name VARCHAR(32) DEFAULT NULL, + parent_id BIGINT DEFAULT NULL, + initial VARCHAR(32) DEFAULT NULL, + initials VARCHAR(32) DEFAULT NULL, + pinyin VARCHAR(32) DEFAULT NULL, + extra VARCHAR(32) DEFAULT NULL, + suffix VARCHAR(32) DEFAULT NULL, + code VARCHAR(32) DEFAULT NULL, + area_code VARCHAR(32) DEFAULT NULL, + district_order INTEGER DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL, + level INTEGER DEFAULT NULL +); +COMMENT ON TABLE xs_district IS '省份城市'; +COMMENT ON COLUMN xs_district.id IS '主键ID'; +COMMENT ON COLUMN xs_district.name IS '城市名称'; +COMMENT ON COLUMN xs_district.parent_id IS '上级城市ID'; +COMMENT ON COLUMN xs_district.initial IS '首字母'; +COMMENT ON COLUMN xs_district.initials IS '简拼'; +COMMENT ON COLUMN xs_district.pinyin IS '全拼'; +COMMENT ON COLUMN xs_district.extra IS '特别行政区'; +COMMENT ON COLUMN xs_district.suffix IS '后缀'; +COMMENT ON COLUMN xs_district.code IS '城市编码'; +COMMENT ON COLUMN xs_district.area_code IS '区域编码'; +COMMENT ON COLUMN xs_district.district_order IS '排序'; +COMMENT ON COLUMN xs_district.deleted IS '是否删除'; +COMMENT ON COLUMN xs_district.create_by IS '创建人'; +COMMENT ON COLUMN xs_district.create_time IS '创建时间'; +COMMENT ON COLUMN xs_district.update_by IS '修改人'; +COMMENT ON COLUMN xs_district.update_time IS '修改时间'; +COMMENT ON COLUMN xs_district.proxy_by IS '代理人'; +COMMENT ON COLUMN xs_district.level IS '层级'; + +-- ---------------------------- +-- Table structure for xs_file_record +-- ---------------------------- +DROP TABLE IF EXISTS xs_file_record; +CREATE TABLE xs_file_record ( + id BIGSERIAL PRIMARY KEY, + file_code VARCHAR(64) DEFAULT NULL, + file_path VARCHAR(512) DEFAULT NULL, + file_name VARCHAR(128) DEFAULT NULL, + file_size INTEGER DEFAULT NULL, + md5_code VARCHAR(64) DEFAULT NULL, + file_suffix VARCHAR(32) DEFAULT NULL, + org_id BIGINT DEFAULT NULL, + storage_type VARCHAR(32) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_file_code ON xs_file_record(file_code); +CREATE INDEX idx_file_record_md5_code ON xs_file_record(md5_code); +COMMENT ON TABLE xs_file_record IS '附件信息'; +COMMENT ON COLUMN xs_file_record.id IS '主键ID'; +COMMENT ON COLUMN xs_file_record.file_code IS '文件编码'; +COMMENT ON COLUMN xs_file_record.file_path IS '文件路径'; +COMMENT ON COLUMN xs_file_record.file_name IS '文件名'; +COMMENT ON COLUMN xs_file_record.file_size IS '文件大小'; +COMMENT ON COLUMN xs_file_record.md5_code IS '文件MD5'; +COMMENT ON COLUMN xs_file_record.file_suffix IS '文件后缀'; +COMMENT ON COLUMN xs_file_record.org_id IS '所属机构'; +COMMENT ON COLUMN xs_file_record.storage_type IS '储存器类型'; +COMMENT ON COLUMN xs_file_record.deleted IS '是否删除'; +COMMENT ON COLUMN xs_file_record.create_by IS '创建人'; +COMMENT ON COLUMN xs_file_record.create_time IS '创建时间'; +COMMENT ON COLUMN xs_file_record.update_by IS '修改人'; +COMMENT ON COLUMN xs_file_record.update_time IS '修改时间'; +COMMENT ON COLUMN xs_file_record.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_org +-- ---------------------------- +DROP TABLE IF EXISTS xs_org; +CREATE TABLE xs_org ( + id BIGSERIAL PRIMARY KEY, + org_name VARCHAR(32) DEFAULT NULL, + org_code VARCHAR(64) DEFAULT NULL, + type VARCHAR(2) DEFAULT NULL, + address_code VARCHAR(16) DEFAULT NULL, + address_name VARCHAR(128) DEFAULT NULL, + description VARCHAR(1024) DEFAULT NULL, + quality BOOLEAN DEFAULT FALSE, + enable BOOLEAN DEFAULT NULL, + activated BOOLEAN DEFAULT FALSE, + parent_id BIGINT DEFAULT NULL, + credit_code VARCHAR(64) DEFAULT NULL, + trade VARCHAR(2) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL, + activation_code VARCHAR(32) DEFAULT NULL, + phone VARCHAR(32) DEFAULT NULL, + query_children BOOLEAN DEFAULT NULL, + org_logo VARCHAR(64) DEFAULT NULL, + registered_address VARCHAR(128) DEFAULT NULL, + company_size VARCHAR(32) DEFAULT NULL, + business_license VARCHAR(64) DEFAULT NULL, + recruit_position_type VARCHAR(2) NOT NULL DEFAULT 1 +); +COMMENT ON TABLE xs_org IS '机构'; +COMMENT ON COLUMN xs_org.id IS '主键ID'; +COMMENT ON COLUMN xs_org.org_name IS '机构名称'; +COMMENT ON COLUMN xs_org.org_code IS '机构编号'; +COMMENT ON COLUMN xs_org.type IS '机构类型(1.平台 2.渠道代理商 3.普通机构 4.定制机构 5.散户机构 6.产品机构)'; +COMMENT ON COLUMN xs_org.address_code IS '任务地点编码'; +COMMENT ON COLUMN xs_org.address_name IS '任务地点全称'; +COMMENT ON COLUMN xs_org.description IS '机构描述'; +COMMENT ON COLUMN xs_org.quality IS '是否优质企业'; +COMMENT ON COLUMN xs_org.enable IS '是否启用'; +COMMENT ON COLUMN xs_org.activated IS '是否激活'; +COMMENT ON COLUMN xs_org.parent_id IS '父机构ID'; +COMMENT ON COLUMN xs_org.credit_code IS '统一社会信用代码'; +COMMENT ON COLUMN xs_org.trade IS '所属行业'; +COMMENT ON COLUMN xs_org.deleted IS '是否删除'; +COMMENT ON COLUMN xs_org.create_by IS '创建人'; +COMMENT ON COLUMN xs_org.create_time IS '创建时间'; +COMMENT ON COLUMN xs_org.update_by IS '修改人'; +COMMENT ON COLUMN xs_org.update_time IS '修改时间'; +COMMENT ON COLUMN xs_org.proxy_by IS '代理人'; +COMMENT ON COLUMN xs_org.activation_code IS '机构账号激活码'; +COMMENT ON COLUMN xs_org.phone IS '手机号码'; +COMMENT ON COLUMN xs_org.query_children IS '是否能查看下级数据'; +COMMENT ON COLUMN xs_org.org_logo IS '企业logo'; +COMMENT ON COLUMN xs_org.registered_address IS '注册地址'; +COMMENT ON COLUMN xs_org.company_size IS '规模 数据字典'; +COMMENT ON COLUMN xs_org.business_license IS '营业执照'; +COMMENT ON COLUMN xs_org.recruit_position_type IS '招聘岗位类型'; + +-- ---------------------------- +-- Table structure for xs_org_user +-- ---------------------------- +DROP TABLE IF EXISTS xs_org_user; +CREATE TABLE xs_org_user ( + id BIGSERIAL PRIMARY KEY, + org_id BIGINT DEFAULT NULL, + user_id BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE xs_org_user IS '机构用户'; +COMMENT ON COLUMN xs_org_user.id IS '主键ID'; +COMMENT ON COLUMN xs_org_user.org_id IS '机构id'; +COMMENT ON COLUMN xs_org_user.user_id IS '用户id'; +COMMENT ON COLUMN xs_org_user.deleted IS '是否删除'; +COMMENT ON COLUMN xs_org_user.create_by IS '创建人'; +COMMENT ON COLUMN xs_org_user.create_time IS '创建时间'; +COMMENT ON COLUMN xs_org_user.update_by IS '修改人'; +COMMENT ON COLUMN xs_org_user.update_time IS '修改时间'; +COMMENT ON COLUMN xs_org_user.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_permission +-- ---------------------------- +DROP TABLE IF EXISTS xs_permission; +CREATE TABLE xs_permission ( + id BIGSERIAL PRIMARY KEY, + role_id BIGINT DEFAULT NULL, + resource_type VARCHAR(2) DEFAULT NULL, + resource_id BIGINT DEFAULT NULL, + attribute VARCHAR(32) DEFAULT NULL, + org_id BIGINT DEFAULT NULL, + platform_code SMALLINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE xs_permission IS '权限表'; +COMMENT ON COLUMN xs_permission.id IS '主键ID'; +COMMENT ON COLUMN xs_permission.role_id IS '角色id'; +COMMENT ON COLUMN xs_permission.resource_type IS '资源类型:1菜单 2组件 3接口'; +COMMENT ON COLUMN xs_permission.resource_id IS '资源id'; +COMMENT ON COLUMN xs_permission.attribute IS '权限鉴别属性,默认格式:ROLE_{roleId},可以扩展'; +COMMENT ON COLUMN xs_permission.org_id IS '机构id'; +COMMENT ON COLUMN xs_permission.platform_code IS '平台编码 1.业务系统 2.运营中台 3.用户中心 4.支付系统 5.在线培训 6.转发器 7.风控 8.网关 9.发号器 10.基础框架'; +COMMENT ON COLUMN xs_permission.deleted IS '是否删除'; +COMMENT ON COLUMN xs_permission.create_by IS '创建人'; +COMMENT ON COLUMN xs_permission.create_time IS '创建时间'; +COMMENT ON COLUMN xs_permission.update_by IS '修改人'; +COMMENT ON COLUMN xs_permission.update_time IS '修改时间'; +COMMENT ON COLUMN xs_permission.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_permission_organization +-- ---------------------------- +DROP TABLE IF EXISTS xs_permission_organization; +CREATE TABLE xs_permission_organization ( + id BIGSERIAL PRIMARY KEY, + permission_package_id BIGINT DEFAULT NULL, + allocation_org_id BIGINT DEFAULT NULL, + remark VARCHAR(100) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_allocation_org_id ON xs_permission_organization(allocation_org_id); +CREATE INDEX idx_permission_package_id ON xs_permission_organization(permission_package_id); +COMMENT ON TABLE xs_permission_organization IS '权限包-机构关系表'; +COMMENT ON COLUMN xs_permission_organization.id IS '主键id'; +COMMENT ON COLUMN xs_permission_organization.permission_package_id IS '权限包id'; +COMMENT ON COLUMN xs_permission_organization.allocation_org_id IS '分配机构orgid'; +COMMENT ON COLUMN xs_permission_organization.remark IS '备注'; +COMMENT ON COLUMN xs_permission_organization.deleted IS '是否删除'; +COMMENT ON COLUMN xs_permission_organization.create_by IS '创建人'; +COMMENT ON COLUMN xs_permission_organization.create_time IS '创建时间'; +COMMENT ON COLUMN xs_permission_organization.update_by IS '修改人'; +COMMENT ON COLUMN xs_permission_organization.update_time IS '修改时间'; +COMMENT ON COLUMN xs_permission_organization.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_permission_package +-- ---------------------------- +DROP TABLE IF EXISTS xs_permission_package; +CREATE TABLE xs_permission_package ( + id BIGSERIAL PRIMARY KEY, + permission_package_name VARCHAR(64) DEFAULT NULL, + permission_package_type SMALLINT DEFAULT 1, + platform_code SMALLINT DEFAULT NULL, + status SMALLINT DEFAULT 1, + remark VARCHAR(100) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE xs_permission_package IS '标准权限包'; +COMMENT ON COLUMN xs_permission_package.id IS '主键id'; +COMMENT ON COLUMN xs_permission_package.permission_package_name IS '权限包名称'; +COMMENT ON COLUMN xs_permission_package.permission_package_type IS '类型 1.基础包 2.其他类型'; +COMMENT ON COLUMN xs_permission_package.platform_code IS '平台编码 1.业务系统 2.运营中台 3.用户中心 4.支付系统 5.在线培训 6.转发器 7.风控 8.网关 9.发号器 10.基础框架'; +COMMENT ON COLUMN xs_permission_package.status IS '状态 1.有效 2.失效'; +COMMENT ON COLUMN xs_permission_package.remark IS '备注'; +COMMENT ON COLUMN xs_permission_package.deleted IS '是否删除'; +COMMENT ON COLUMN xs_permission_package.create_by IS '创建人'; +COMMENT ON COLUMN xs_permission_package.create_time IS '创建时间'; +COMMENT ON COLUMN xs_permission_package.update_by IS '修改人'; +COMMENT ON COLUMN xs_permission_package.update_time IS '修改时间'; +COMMENT ON COLUMN xs_permission_package.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_permission_resources +-- ---------------------------- +DROP TABLE IF EXISTS xs_permission_resources; +CREATE TABLE xs_permission_resources ( + id BIGSERIAL PRIMARY KEY, + permission_package_id BIGINT DEFAULT NULL, + resource_id BIGINT DEFAULT NULL, + resource_type SMALLINT DEFAULT 1, + remark VARCHAR(100) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_resource_id ON xs_permission_resources(resource_id); +CREATE INDEX INDEX12372582404500 ON xs_permission_resources(permission_package_id); +COMMENT ON TABLE xs_permission_resources IS '权限包-资源关系表'; +COMMENT ON COLUMN xs_permission_resources.id IS '主键id'; +COMMENT ON COLUMN xs_permission_resources.permission_package_id IS '权限包id'; +COMMENT ON COLUMN xs_permission_resources.resource_id IS '资源id'; +COMMENT ON COLUMN xs_permission_resources.resource_type IS '类型 1.菜单 2.组件 3.接口'; +COMMENT ON COLUMN xs_permission_resources.remark IS '备注'; +COMMENT ON COLUMN xs_permission_resources.deleted IS '是否删除'; +COMMENT ON COLUMN xs_permission_resources.create_by IS '创建人'; +COMMENT ON COLUMN xs_permission_resources.create_time IS '创建时间'; +COMMENT ON COLUMN xs_permission_resources.update_by IS '修改人'; +COMMENT ON COLUMN xs_permission_resources.update_time IS '修改时间'; +COMMENT ON COLUMN xs_permission_resources.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_real_name_two_verification +-- ---------------------------- +DROP TABLE IF EXISTS xs_real_name_two_verification; +CREATE TABLE xs_real_name_two_verification ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT DEFAULT NULL, + person_name VARCHAR(64) DEFAULT NULL, + identity_no VARCHAR(32) DEFAULT NULL, + status VARCHAR(2) DEFAULT 0, + authentication_source SMALLINT DEFAULT NULL, + err_msg VARCHAR(64) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); + +-- ---------------------------- +-- Table structure for xs_role +-- ---------------------------- +DROP TABLE IF EXISTS xs_role; +CREATE TABLE xs_role ( + id BIGSERIAL PRIMARY KEY, + org_id BIGINT DEFAULT NULL, + name VARCHAR(128) DEFAULT NULL, + type VARCHAR(2) DEFAULT 0, + enabled BOOLEAN NOT NULL DEFAULT FALSE, + description VARCHAR(128) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL, + standard_type VARCHAR(2) DEFAULT 1, + platform_code SMALLINT DEFAULT NULL +); +COMMENT ON TABLE xs_role IS '角色'; +COMMENT ON COLUMN xs_role.id IS '主键ID'; +COMMENT ON COLUMN xs_role.org_id IS '机构id'; +COMMENT ON COLUMN xs_role.name IS '名称'; +COMMENT ON COLUMN xs_role.type IS '类型:0业务角色、1系统角色-渠道代理商、2系统角色-普通机构'; +COMMENT ON COLUMN xs_role.enabled IS '是否启用'; +COMMENT ON COLUMN xs_role.description IS '描述'; +COMMENT ON COLUMN xs_role.deleted IS '是否删除'; +COMMENT ON COLUMN xs_role.create_by IS '创建人'; +COMMENT ON COLUMN xs_role.create_time IS '创建时间'; +COMMENT ON COLUMN xs_role.update_by IS '修改人'; +COMMENT ON COLUMN xs_role.update_time IS '修改时间'; +COMMENT ON COLUMN xs_role.proxy_by IS '代理人'; +COMMENT ON COLUMN xs_role.standard_type IS '标准角色类型:见role_standard_type'; +COMMENT ON COLUMN xs_role.platform_code IS '平台编码'; + +-- ---------------------------- +-- Table structure for xs_role_allocation +-- ---------------------------- +DROP TABLE IF EXISTS xs_role_allocation; +CREATE TABLE xs_role_allocation ( + id BIGSERIAL PRIMARY KEY, + role_id BIGINT DEFAULT NULL, + allocation_type VARCHAR(2) DEFAULT NULL, + allocation_id BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_allocation_id ON xs_role_allocation(allocation_id); +COMMENT ON TABLE xs_role_allocation IS '角色分配表'; +COMMENT ON COLUMN xs_role_allocation.id IS '主键ID'; +COMMENT ON COLUMN xs_role_allocation.role_id IS '角色id'; +COMMENT ON COLUMN xs_role_allocation.allocation_type IS '角色分配类型:1个人2部门3组'; +COMMENT ON COLUMN xs_role_allocation.allocation_id IS '角色具体分配类型对应的id'; +COMMENT ON COLUMN xs_role_allocation.deleted IS '是否删除'; +COMMENT ON COLUMN xs_role_allocation.create_by IS '创建人'; +COMMENT ON COLUMN xs_role_allocation.create_time IS '创建时间'; +COMMENT ON COLUMN xs_role_allocation.update_by IS '修改人'; +COMMENT ON COLUMN xs_role_allocation.update_time IS '修改时间'; +COMMENT ON COLUMN xs_role_allocation.proxy_by IS '代理人'; + +-- ---------------------------- +-- Table structure for xs_role_standard_type +-- ---------------------------- +DROP TABLE IF EXISTS xs_role_standard_type; +CREATE TABLE xs_role_standard_type ( + id BIGSERIAL PRIMARY KEY, + role_code VARCHAR(32) DEFAULT NULL, + name VARCHAR(64) DEFAULT NULL, + platform_code VARCHAR(32) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT NULL, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL, + type_order INTEGER DEFAULT NULL +); +COMMENT ON TABLE xs_role_standard_type IS '标准角色类型'; +COMMENT ON COLUMN xs_role_standard_type.id IS '主键'; +COMMENT ON COLUMN xs_role_standard_type.role_code IS '编码'; +COMMENT ON COLUMN xs_role_standard_type.name IS '名称'; +COMMENT ON COLUMN xs_role_standard_type.platform_code IS '平台编码'; +COMMENT ON COLUMN xs_role_standard_type.deleted IS '是否逻辑删除'; +COMMENT ON COLUMN xs_role_standard_type.create_by IS '创建人'; +COMMENT ON COLUMN xs_role_standard_type.create_time IS '创建时间'; +COMMENT ON COLUMN xs_role_standard_type.update_by IS '更新人'; +COMMENT ON COLUMN xs_role_standard_type.update_time IS '更新时间'; +COMMENT ON COLUMN xs_role_standard_type.proxy_by IS '代理人'; +COMMENT ON COLUMN xs_role_standard_type.type_order IS '排序'; + +-- ---------------------------- +-- Table structure for xs_url +-- ---------------------------- +DROP TABLE IF EXISTS xs_url; +CREATE TABLE xs_url ( + id BIGSERIAL PRIMARY KEY, + name VARCHAR(128) DEFAULT NULL, + link VARCHAR(256) DEFAULT NULL, + icon VARCHAR(32) DEFAULT NULL, + parent_id BIGINT DEFAULT NULL, + resource_order INTEGER DEFAULT NULL, + type SMALLINT DEFAULT NULL, + visible BOOLEAN DEFAULT NULL, + description VARCHAR(128) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL, + platform_code SMALLINT DEFAULT NULL +); +COMMENT ON TABLE xs_url IS '菜单地址'; +COMMENT ON COLUMN xs_url.id IS '主键ID'; +COMMENT ON COLUMN xs_url.name IS '名称'; +COMMENT ON COLUMN xs_url.link IS '链接'; +COMMENT ON COLUMN xs_url.icon IS 'icon'; +COMMENT ON COLUMN xs_url.parent_id IS '父级'; +COMMENT ON COLUMN xs_url.resource_order IS '排序'; +COMMENT ON COLUMN xs_url.type IS '资源类型 1:菜单 2:接口'; +COMMENT ON COLUMN xs_url.visible IS '是否可见'; +COMMENT ON COLUMN xs_url.description IS '描述'; +COMMENT ON COLUMN xs_url.deleted IS '是否删除'; +COMMENT ON COLUMN xs_url.create_by IS '创建人'; +COMMENT ON COLUMN xs_url.create_time IS '创建时间'; +COMMENT ON COLUMN xs_url.update_by IS '修改人'; +COMMENT ON COLUMN xs_url.update_time IS '修改时间'; +COMMENT ON COLUMN xs_url.proxy_by IS '代理人'; +COMMENT ON COLUMN xs_url.platform_code IS '平台编码'; + + + + +-- ---------------------------- +-- Table structure for x_file_category +-- ---------------------------- +DROP TABLE IF EXISTS x_file_category; +CREATE TABLE x_file_category ( + id BIGSERIAL PRIMARY KEY, + file_category VARCHAR(32) DEFAULT NULL, + file_suffix VARCHAR(32) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE x_file_category IS '文件种类'; +COMMENT ON COLUMN x_file_category.id IS '主键ID'; +COMMENT ON COLUMN x_file_category.file_category IS '文件种类'; +COMMENT ON COLUMN x_file_category.file_suffix IS '文件后缀'; +COMMENT ON COLUMN x_file_category.deleted IS '是否删除'; +COMMENT ON COLUMN x_file_category.create_by IS '创建人'; +COMMENT ON COLUMN x_file_category.create_time IS '创建时间'; +COMMENT ON COLUMN x_file_category.update_by IS '修改人'; +COMMENT ON COLUMN x_file_category.update_time IS '修改时间'; +COMMENT ON COLUMN x_file_category.proxy_by IS '代理人'; + + +-- ---------------------------- +-- Table structure for x_user_space +-- ---------------------------- +DROP TABLE IF EXISTS x_user_space; +CREATE TABLE x_user_space ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT DEFAULT NULL, + total_size BIGINT DEFAULT NULL, + used_size BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE x_user_space IS '用户空间'; +COMMENT ON COLUMN x_user_space.id IS '主键ID'; +COMMENT ON COLUMN x_user_space.user_id IS '用户id'; +COMMENT ON COLUMN x_user_space.total_size IS '总容量'; +COMMENT ON COLUMN x_user_space.used_size IS '已使用容量'; +COMMENT ON COLUMN x_user_space.deleted IS '是否删除'; +COMMENT ON COLUMN x_user_space.create_by IS '创建人'; +COMMENT ON COLUMN x_user_space.create_time IS '创建时间'; +COMMENT ON COLUMN x_user_space.update_by IS '修改人'; +COMMENT ON COLUMN x_user_space.update_time IS '修改时间'; +COMMENT ON COLUMN x_user_space.proxy_by IS '代理人'; + + +-- ---------------------------- +-- Table structure for x_user_file +-- ---------------------------- +DROP TABLE IF EXISTS x_user_file; +CREATE TABLE x_user_file ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT DEFAULT NULL, + root_type VARCHAR(2) DEFAULT NULL, + file_type VARCHAR(32) DEFAULT NULL, + file_name VARCHAR(256) DEFAULT NULL, + parent_id BIGINT DEFAULT NULL, + file_code VARCHAR(32) DEFAULT NULL, + file_status VARCHAR(2) DEFAULT NULL, + path VARCHAR(255) DEFAULT NULL, + end_time TIMESTAMP DEFAULT NULL, + access_code VARCHAR(6) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +COMMENT ON TABLE x_user_file IS '用户文件'; +COMMENT ON COLUMN x_user_file.id IS '主键ID'; +COMMENT ON COLUMN x_user_file.user_id IS '用户id'; +COMMENT ON COLUMN x_user_file.root_type IS '根类型:1普通/2内穿外/3外传内/4我的分享'; +COMMENT ON COLUMN x_user_file.file_type IS '文件大类:1文件/2文件夹'; +COMMENT ON COLUMN x_user_file.file_name IS '文件名'; +COMMENT ON COLUMN x_user_file.parent_id IS '父id'; +COMMENT ON COLUMN x_user_file.file_code IS '文件编码'; +COMMENT ON COLUMN x_user_file.file_status IS '文件状态:1正常2失效11解析中12待审核13传输中'; +COMMENT ON COLUMN x_user_file.path IS '路径'; +COMMENT ON COLUMN x_user_file.end_time IS '有效期'; +COMMENT ON COLUMN x_user_file.access_code IS '访问码'; +COMMENT ON COLUMN x_user_file.deleted IS '是否删除'; +COMMENT ON COLUMN x_user_file.create_by IS '创建人'; +COMMENT ON COLUMN x_user_file.create_time IS '创建时间'; +COMMENT ON COLUMN x_user_file.update_by IS '修改人'; +COMMENT ON COLUMN x_user_file.update_time IS '修改时间'; +COMMENT ON COLUMN x_user_file.proxy_by IS '代理人'; + + +-- ---------------------------- +-- Table structure for x_file_risk +-- ---------------------------- +DROP TABLE IF EXISTS x_file_risk; +CREATE TABLE x_file_risk ( + id BIGSERIAL PRIMARY KEY, + file_code VARCHAR(32) DEFAULT NULL, + max_risk_level VARCHAR(2) DEFAULT NULL, + risk_json TEXT DEFAULT NULL, + dify_file_json TEXT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL, + CONSTRAINT uk_file_code UNIQUE (file_code) +); +COMMENT ON TABLE x_file_risk IS '文件风险'; +COMMENT ON COLUMN x_file_risk.id IS '主键ID'; +COMMENT ON COLUMN x_file_risk.file_code IS '文件编码'; +COMMENT ON COLUMN x_file_risk.max_risk_level IS '最高风险等级:1重度/2中度/3轻度'; +COMMENT ON COLUMN x_file_risk.risk_json IS '风险详情JSON'; +COMMENT ON COLUMN x_file_risk.dify_file_json IS 'Dify文件上传响应JSON'; +COMMENT ON COLUMN x_file_risk.deleted IS '是否删除'; +COMMENT ON COLUMN x_file_risk.create_by IS '创建人'; +COMMENT ON COLUMN x_file_risk.create_time IS '创建时间'; +COMMENT ON COLUMN x_file_risk.update_by IS '修改人'; +COMMENT ON COLUMN x_file_risk.update_time IS '修改时间'; +COMMENT ON COLUMN x_file_risk.proxy_by IS '代理人'; + +CREATE TABLE x_upload_config ( + id BIGSERIAL PRIMARY KEY, + org_id BIGINT DEFAULT NULL, + upload_enabled BOOLEAN DEFAULT TRUE, + allow_all_type BOOLEAN DEFAULT TRUE, + allowed_suffixes VARCHAR(1024) DEFAULT NULL, + max_file_size BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL, + CONSTRAINT uk_upload_config_org_id UNIQUE (org_id) +); +COMMENT ON TABLE x_upload_config IS '机构上传配置'; +COMMENT ON COLUMN x_upload_config.id IS '主键ID'; +COMMENT ON COLUMN x_upload_config.org_id IS '机构id'; +COMMENT ON COLUMN x_upload_config.upload_enabled IS '是否允许上传'; +COMMENT ON COLUMN x_upload_config.allow_all_type IS '是否允许全部类型(false时按allowed_suffixes白名单校验)'; +COMMENT ON COLUMN x_upload_config.allowed_suffixes IS '允许的文件后缀(逗号分隔,小写),allow_all_type=false时生效'; +COMMENT ON COLUMN x_upload_config.max_file_size IS '单文件大小上限(MB),空或0不限制'; +COMMENT ON COLUMN x_upload_config.deleted IS '是否删除'; +COMMENT ON COLUMN x_upload_config.create_by IS '创建人'; +COMMENT ON COLUMN x_upload_config.create_time IS '创建时间'; +COMMENT ON COLUMN x_upload_config.update_by IS '修改人'; +COMMENT ON COLUMN x_upload_config.update_time IS '修改时间'; +COMMENT ON COLUMN x_upload_config.proxy_by IS '代理人'; + +CREATE TABLE x_file_security ( + id BIGSERIAL PRIMARY KEY, + file_code VARCHAR(32) DEFAULT NULL, + task_id VARCHAR(64) DEFAULT NULL, + scan_status VARCHAR(2) DEFAULT NULL, + action VARCHAR(32) DEFAULT NULL, + reason VARCHAR(1024) DEFAULT NULL, + result_json TEXT DEFAULT NULL, + review_comment VARCHAR(512) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_file_security_file_code ON x_file_security(file_code); +CREATE INDEX idx_file_security_scan_status ON x_file_security(scan_status); +COMMENT ON TABLE x_file_security IS '文件安全检测记录'; +COMMENT ON COLUMN x_file_security.id IS '主键ID'; +COMMENT ON COLUMN x_file_security.file_code IS '文件编码'; +COMMENT ON COLUMN x_file_security.task_id IS 'MeshSafe检测任务ID'; +COMMENT ON COLUMN x_file_security.scan_status IS '检测状态:1检测中/2通过/3不通过/4检测失败'; +COMMENT ON COLUMN x_file_security.action IS 'MeshSafe处置动作:pass/manual_review/reject'; +COMMENT ON COLUMN x_file_security.reason IS '检测结论说明'; +COMMENT ON COLUMN x_file_security.result_json IS '检测完整结果JSON'; +COMMENT ON COLUMN x_file_security.review_comment IS '人工复核说明(人工改判时有值)'; +COMMENT ON COLUMN x_file_security.deleted IS '是否删除'; +COMMENT ON COLUMN x_file_security.create_by IS '创建人'; +COMMENT ON COLUMN x_file_security.create_time IS '创建时间'; +COMMENT ON COLUMN x_file_security.update_by IS '修改人'; +COMMENT ON COLUMN x_file_security.update_time IS '修改时间'; +COMMENT ON COLUMN x_file_security.proxy_by IS '代理人'; diff --git a/deployment/iw/sql/02-init-data.sql b/deployment/iw/sql/02-init-data.sql new file mode 100644 index 0000000..7e998c4 --- /dev/null +++ b/deployment/iw/sql/02-init-data.sql @@ -0,0 +1,46 @@ +-- 系统uc_platform +INSERT INTO uc_platform +(platform_code, name, full_name, short_name, business, deleted, create_time) +VALUES(1, '文档系统', 's-file', 'file', true, FALSE, now()); + +-- 平台机构/平台机构管理员 +INSERT INTO xs_org +(org_name, org_code, type, address_code, address_name, description, quality, enable, activated, parent_id, credit_code, trade, deleted, create_by, create_time, update_by, update_time, proxy_by, activation_code, phone, query_children, org_logo, registered_address, company_size, business_license, recruit_position_type) +VALUES('senmesh', 'O001', '1', '440232', NULL, NULL, false, TRUE, TRUE, NULL, '', NULL, FALSE, 0, now(), 1, now(), null, NULL, null, NULL, null, '1234', '6', null, '1'); + +INSERT INTO uc_user +(username, password, type, supeiror, security_code, nickname, avatar, phone, phone_binding, real_name, card_no, authenticated, status, email, address, education, init_user_id, enabled, account_non_expired, account_non_locked, credentials_non_expired, deleted, create_by, create_time, update_by, update_time, proxy_by, gender, birthday) +VALUES('admin', '$2a$10$0N3iaxx2sYv0hXvYzS4.6.yriL.DfjRTjED7Y4vkqxzbxi2dNpBou', 1, TRUE, '$2a$10$mGA1jdBzq8micEr02KiJ9OiYQz1fc/PSVG0hN0EYUuxhZp8EI1M2q', '平台管理员', '', '13888888888', TRUE, '平台管理员', NULL, FALSE, 2, null, NULL, NULL, NULL, TRUE, TRUE, TRUE, TRUE, FALSE, 0, now(), 1, NULL, NULL, NULL, NULL); +INSERT INTO uc_org_user +(user_id, org_id, administrator, deleted, create_by, create_time, update_by, update_time, proxy_by) +VALUES(1, 1, TRUE, FALSE, 0, now(), NULL, NULL, NULL); +-- 平台uc_org_relation +INSERT INTO uc_org_relation +(org_id, org_type, parent_id, path, platform_code, platform_name, deleted, create_by, create_time, update_by, update_time, proxy_by) +VALUES(1, 1, 0, '1', 1, NULL, FALSE, NULL, NULL, NULL, NULL, NULL); + +-- ---------------------------- +-- Records of x_file_category +-- ---------------------------- +INSERT INTO x_file_category (file_category, file_suffix, deleted, create_by, create_time) VALUES +('video', 'mp4', FALSE, 0, NOW()), +('video', 'mkv', FALSE, 0, NOW()), +('video', 'avi', FALSE, 0, NOW()), +('video', 'mov', FALSE, 0, NOW()), +('video', 'wmv', FALSE, 0, NOW()), +('video', 'flv', FALSE, 0, NOW()), +('audio', 'mp3', FALSE, 0, NOW()), +('audio', 'wav', FALSE, 0, NOW()), +('audio', 'flac', FALSE, 0, NOW()), +('audio', 'aac', FALSE, 0, NOW()), +('document', 'txt', FALSE, 0, NOW()), +('document', 'docx', FALSE, 0, NOW()), +('document', 'pdf', FALSE, 0, NOW()), +('document', 'epub', FALSE, 0, NOW()), +('other', 'zip', FALSE, 0, NOW()), +('other', 'rar', FALSE, 0, NOW()), +('other', '7z', FALSE, 0, NOW()), +('other', 'jpg', FALSE, 0, NOW()), +('other', 'png', FALSE, 0, NOW()), +('other', 'gif', FALSE, 0, NOW()), +('other', 'tiff', FALSE, 0, NOW()); diff --git a/deployment/iw/sql/README.md b/deployment/iw/sql/README.md new file mode 100644 index 0000000..8291d03 --- /dev/null +++ b/deployment/iw/sql/README.md @@ -0,0 +1,42 @@ +建表与初始数据脚本已随包放好,文件名前缀决定执行顺序(先建表后灌数据): + +| 文件 | 来源 | 说明 | +|---|---|---| +| `01-init-table.sql` | `backend/db/init-table-postgres-full.sql` | 全量 DDL,含 `x_file_security` 安全检测表与 `idx_file_record_md5_code` 索引 | +| `02-init-data.sql` | `backend/db/init-data.sql` | admin 账号、机构、平台编码(`system.code=1` 要与此一致) | + +出包时用 `deployment/scripts/build-package.sh` 从仓库重新覆盖这两份,别手改副本。 + +只有 `POSTGRES_*` 指向的库为空时,PostgreSQL 官方镜像才会执行 `docker-entrypoint-initdb.d`; +数据目录已有数据时会跳过 —— 想重建就把 `volumes/pgdata` 一起清掉再 `up`。 + +## upgrade/ —— 已上线老库的增量脚本(新装不用跑) + +| 文件 | 作用 | +|---|---| +| `upgrade-20260914-upload-config.sql` | 新增 `x_upload_config`(机构上传后缀白名单/大小上限/开关) | +| `upgrade-20260915-release.sql` | 与上一份同一件事(上线汇总版),**两者跑其一即可** | +| `upgrade-20261101-meshsafe-file-security.sql` | 新增 `x_file_security` 文件安全检测表与字段 | +| `upgrade-20261103-transfer-perf.sql` | 给 `xs_file_record.md5_code` 补索引(解包时按 MD5 去重查询,缺索引就是每文件一次全表扫描) | + +客户如果从 2026-09 之前的老库升上来,本包(PostgreSQL)真正缺的只有三个对象: +`x_upload_config`、`x_file_security`、`idx_file_record_md5_code`。 +这三项在 `01-init-table.sql` 里都已是 PostgreSQL 写法,老库升级建议直接照它补,别整份管道进 psql: + +```bash +# 先看缺不缺 +docker exec -i sfile-iw-pg psql -U sfile -d s_file -c \ + "\dt x_upload_config" -c "\dt x_file_security" -c "\di idx_file_record_md5_code" + +# 只补 md5 索引(这份脚本带「-- 2. PostgreSQL」分节标题,可以截出来跑) +awk '/^-- 2\. PostgreSQL/{f=1} f' sql/upgrade/upgrade-20261103-transfer-perf.sql \ + | docker exec -i sfile-iw-pg psql -U sfile -d s_file +``` + +> 注意:这 4 份历史增量脚本是**达梦/MySQL 优先**写的,`upgrade-20260915-release.sql` 的 PostgreSQL 段整段是注释掉的, +> 只有 `upgrade-20261101`、`upgrade-20261103` 两份带可执行的「第 2 节 PostgreSQL」。别照着 MySQL 段硬跑。 + +这两份带可执行第 2 节的脚本都是「第 1 节 MySQL/达梦、第 2 节 PostgreSQL」双库混排,**只能跑第 2 节**, +整份管道进去会先执行 MySQL 那节。它们不会自动执行,要人工触发(容器名内网机 `sfile-iw-pg` / 外网机 `sfile-ow-pg`)。 + +数据量大时建索引会锁写,放到业务低峰执行;不能停写就用脚本里注明的 `CONCURRENTLY` 写法。 diff --git a/deployment/iw/sql/upgrade/upgrade-20260914-upload-config.sql b/deployment/iw/sql/upgrade/upgrade-20260914-upload-config.sql new file mode 100644 index 0000000..35a16dd --- /dev/null +++ b/deployment/iw/sql/upgrade/upgrade-20260914-upload-config.sql @@ -0,0 +1,62 @@ +-- ============================================================= +-- 升级脚本:机构上传配置(文件上传类型/大小限制) +-- 日期:2026-09-14 +-- 说明:新增 x_upload_config 表(一行对应一个机构)。 +-- 机构管理员可配置本机构允许上传的文件后缀白名单、 +-- 单文件大小上限、上传总开关;未配置的机构默认允许全部。 +-- 拦截点:网盘上传落库(normal_user_file/create)。 +-- 执行方式:MySQL/达梦(DM8 MySQL兼容模式)执行第 1 节; +-- PostgreSQL 执行第 2 节。 +-- ============================================================= + +-- ------------------------------------------------------------- +-- 1. MySQL / 达梦 DM8 +-- ------------------------------------------------------------- +CREATE TABLE `x_upload_config` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `org_id` bigint(20) DEFAULT NULL COMMENT '机构id', + `upload_enabled` bit(1) DEFAULT b'1' COMMENT '是否允许上传', + `allow_all_type` bit(1) DEFAULT b'1' COMMENT '是否允许全部类型(false时按allowed_suffixes白名单校验)', + `allowed_suffixes` varchar(1024) DEFAULT NULL COMMENT '允许的文件后缀(逗号分隔,小写),allow_all_type=false时生效', + `max_file_size` bigint(20) DEFAULT NULL COMMENT '单文件大小上限(MB),空或0不限制', + `deleted` bit(1) DEFAULT b'0' COMMENT '是否删除', + `create_by` bigint(20) DEFAULT NULL COMMENT '创建人', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` bigint(20) DEFAULT NULL COMMENT '修改人', + `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + `proxy_by` bigint(20) DEFAULT NULL COMMENT '代理人', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_org_id` (`org_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='机构上传配置'; + +-- ------------------------------------------------------------- +-- 2. PostgreSQL +-- ------------------------------------------------------------- +CREATE TABLE x_upload_config ( + id BIGSERIAL PRIMARY KEY, + org_id BIGINT DEFAULT NULL, + upload_enabled BOOLEAN DEFAULT TRUE, + allow_all_type BOOLEAN DEFAULT TRUE, + allowed_suffixes VARCHAR(1024) DEFAULT NULL, + max_file_size BIGINT DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL, + CONSTRAINT uk_upload_config_org_id UNIQUE (org_id) +); +COMMENT ON TABLE x_upload_config IS '机构上传配置'; +COMMENT ON COLUMN x_upload_config.id IS '主键ID'; +COMMENT ON COLUMN x_upload_config.org_id IS '机构id'; +COMMENT ON COLUMN x_upload_config.upload_enabled IS '是否允许上传'; +COMMENT ON COLUMN x_upload_config.allow_all_type IS '是否允许全部类型(false时按allowed_suffixes白名单校验)'; +COMMENT ON COLUMN x_upload_config.allowed_suffixes IS '允许的文件后缀(逗号分隔,小写),allow_all_type=false时生效'; +COMMENT ON COLUMN x_upload_config.max_file_size IS '单文件大小上限(MB),空或0不限制'; +COMMENT ON COLUMN x_upload_config.deleted IS '是否删除'; +COMMENT ON COLUMN x_upload_config.create_by IS '创建人'; +COMMENT ON COLUMN x_upload_config.create_time IS '创建时间'; +COMMENT ON COLUMN x_upload_config.update_by IS '修改人'; +COMMENT ON COLUMN x_upload_config.update_time IS '修改时间'; +COMMENT ON COLUMN x_upload_config.proxy_by IS '代理人'; diff --git a/deployment/iw/sql/upgrade/upgrade-20260915-release.sql b/deployment/iw/sql/upgrade/upgrade-20260915-release.sql new file mode 100644 index 0000000..e61f122 --- /dev/null +++ b/deployment/iw/sql/upgrade/upgrade-20260915-release.sql @@ -0,0 +1,90 @@ +-- ===================================================================== +-- s-file 上线数据库脚本(2026-09-15 版本) +-- 适用场景:已有生产库升级(老版本 → 当前版本) +-- +-- 本次版本(用户启停/注销、机构账号查询、手机号查记录、机构上传配置) +-- 相对老版本的数据库变更只有一项: +-- 新增表 x_upload_config(机构上传配置) +-- 其余功能(启停/注销/查询)全部复用已有表字段,无需任何变更。 +-- +-- 【执行说明】 +-- * 生产主力库为达梦 DM8(MySQL 兼容模式)→ 只执行【第一部分】 +-- * 若目标库是 PostgreSQL → 只执行【第二部分】 +-- * 执行前建议备份;执行后核对【第三部分】的验证 SQL +-- * 可重复执行(幂等):表已存在时再执行会报"已存在"错误,属正常, +-- 说明该脚本已执行过,无需处理 +-- ===================================================================== + + +-- ===================================================================== +-- 第一部分:达梦 DM8 / MySQL +-- ===================================================================== + +CREATE TABLE x_upload_config ( + id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', + org_id BIGINT DEFAULT NULL COMMENT '机构id', + upload_enabled BIT(1) DEFAULT b'1' COMMENT '是否允许上传', + allow_all_type BIT(1) DEFAULT b'1' COMMENT '是否允许全部类型(false时按allowed_suffixes白名单校验)', + allowed_suffixes VARCHAR(1024) DEFAULT NULL COMMENT '允许的文件后缀(逗号分隔,小写),allow_all_type=false时生效', + max_file_size BIGINT DEFAULT NULL COMMENT '单文件大小上限(MB),空或0不限制', + deleted BIT(1) DEFAULT b'0' COMMENT '是否删除', + create_by BIGINT DEFAULT NULL COMMENT '创建人', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + update_by BIGINT DEFAULT NULL COMMENT '修改人', + update_time DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + proxy_by BIGINT DEFAULT NULL COMMENT '代理人', + PRIMARY KEY (id) USING BTREE, + UNIQUE KEY uk_org_id (org_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='机构上传配置'; + +-- 说明:不需要初始化数据。 +-- 未配置的机构 = 默认策略(允许上传全部类型、不限大小), +-- 由各机构管理员在管理后台"上传配置"页面自行配置后落库。 + + +-- ===================================================================== +-- 第二部分:PostgreSQL +-- ===================================================================== + +-- CREATE TABLE x_upload_config ( +-- id BIGSERIAL PRIMARY KEY, +-- org_id BIGINT DEFAULT NULL, +-- upload_enabled BOOLEAN DEFAULT TRUE, +-- allow_all_type BOOLEAN DEFAULT TRUE, +-- allowed_suffixes VARCHAR(1024) DEFAULT NULL, +-- max_file_size BIGINT DEFAULT NULL, +-- deleted BOOLEAN DEFAULT FALSE, +-- create_by BIGINT DEFAULT NULL, +-- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, +-- update_by BIGINT DEFAULT NULL, +-- update_time TIMESTAMP DEFAULT NULL, +-- proxy_by BIGINT DEFAULT NULL, +-- CONSTRAINT uk_upload_config_org_id UNIQUE (org_id) +-- ); +-- COMMENT ON TABLE x_upload_config IS '机构上传配置'; +-- COMMENT ON COLUMN x_upload_config.id IS '主键ID'; +-- COMMENT ON COLUMN x_upload_config.org_id IS '机构id'; +-- COMMENT ON COLUMN x_upload_config.upload_enabled IS '是否允许上传'; +-- COMMENT ON COLUMN x_upload_config.allow_all_type IS '是否允许全部类型(false时按allowed_suffixes白名单校验)'; +-- COMMENT ON COLUMN x_upload_config.allowed_suffixes IS '允许的文件后缀(逗号分隔,小写),allow_all_type=false时生效'; +-- COMMENT ON COLUMN x_upload_config.max_file_size IS '单文件大小上限(MB),空或0不限制'; +-- COMMENT ON COLUMN x_upload_config.deleted IS '是否删除'; +-- COMMENT ON COLUMN x_upload_config.create_by IS '创建人'; +-- COMMENT ON COLUMN x_upload_config.create_time IS '创建时间'; +-- COMMENT ON COLUMN x_upload_config.update_by IS '修改人'; +-- COMMENT ON COLUMN x_upload_config.update_time IS '修改时间'; +-- COMMENT ON COLUMN x_upload_config.proxy_by IS '代理人'; + + +-- ===================================================================== +-- 第三部分:执行后验证(达梦/MySQL 语法) +-- ===================================================================== + +-- 1) 表存在且为空(0 行正常) +-- SELECT COUNT(*) FROM x_upload_config; + +-- 2) 唯一约束存在(应返回 uk_org_id) +-- SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME = 'X_UPLOAD_CONFIG'; + +-- 3) (可选)回滚脚本 —— 如需回滚上线: +-- DROP TABLE x_upload_config; diff --git a/deployment/iw/sql/upgrade/upgrade-20261101-meshsafe-file-security.sql b/deployment/iw/sql/upgrade/upgrade-20261101-meshsafe-file-security.sql new file mode 100644 index 0000000..8b0277d --- /dev/null +++ b/deployment/iw/sql/upgrade/upgrade-20261101-meshsafe-file-security.sql @@ -0,0 +1,71 @@ +-- ============================================================= +-- 升级脚本:MeshSafe 文件安全检测对接 +-- 日期:2026-11-01 +-- 说明:新增 x_file_security 表(按文件编码维度记录安全检测结果)。 +-- 文件上传/传输接收解包后自动提交 MeshSafe 检测, +-- 检测结论(通过/不通过)回写本表;同一文件允许多条检测 +-- 记录(人工复核、重新检测均新增记录),业务取最新一条生效。 +-- 检测不通过的文件禁止分享与跨网传输(下载预览不受限)。 +-- 执行方式:MySQL/达梦(DM8 MySQL兼容模式)执行第 1 节; +-- PostgreSQL 执行第 2 节。 +-- ============================================================= + +-- ------------------------------------------------------------- +-- 1. MySQL / 达梦 DM8 +-- ------------------------------------------------------------- +CREATE TABLE `x_file_security` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `file_code` varchar(32) DEFAULT NULL COMMENT '文件编码', + `task_id` varchar(64) DEFAULT NULL COMMENT 'MeshSafe检测任务ID', + `scan_status` varchar(2) DEFAULT NULL COMMENT '检测状态:1检测中/2通过/3不通过/4检测失败', + `action` varchar(32) DEFAULT NULL COMMENT 'MeshSafe处置动作:pass/manual_review/reject', + `reason` varchar(1024) DEFAULT NULL COMMENT '检测结论说明', + `result_json` text DEFAULT NULL COMMENT '检测完整结果JSON', + `review_comment` varchar(512) DEFAULT NULL COMMENT '人工复核说明(人工改判时有值)', + `deleted` bit(1) DEFAULT b'0' COMMENT '是否删除', + `create_by` bigint(20) DEFAULT NULL COMMENT '创建人', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` bigint(20) DEFAULT NULL COMMENT '修改人', + `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + `proxy_by` bigint(20) DEFAULT NULL COMMENT '代理人', + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_file_security_file_code` (`file_code`) USING BTREE, + KEY `idx_file_security_scan_status` (`scan_status`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文件安全检测记录'; + +-- ------------------------------------------------------------- +-- 2. PostgreSQL +-- ------------------------------------------------------------- +CREATE TABLE x_file_security ( + id BIGSERIAL PRIMARY KEY, + file_code VARCHAR(32) DEFAULT NULL, + task_id VARCHAR(64) DEFAULT NULL, + scan_status VARCHAR(2) DEFAULT NULL, + action VARCHAR(32) DEFAULT NULL, + reason VARCHAR(1024) DEFAULT NULL, + result_json TEXT DEFAULT NULL, + review_comment VARCHAR(512) DEFAULT NULL, + deleted BOOLEAN DEFAULT FALSE, + create_by BIGINT DEFAULT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_by BIGINT DEFAULT NULL, + update_time TIMESTAMP DEFAULT NULL, + proxy_by BIGINT DEFAULT NULL +); +CREATE INDEX idx_file_security_file_code ON x_file_security(file_code); +CREATE INDEX idx_file_security_scan_status ON x_file_security(scan_status); +COMMENT ON TABLE x_file_security IS '文件安全检测记录'; +COMMENT ON COLUMN x_file_security.id IS '主键ID'; +COMMENT ON COLUMN x_file_security.file_code IS '文件编码'; +COMMENT ON COLUMN x_file_security.task_id IS 'MeshSafe检测任务ID'; +COMMENT ON COLUMN x_file_security.scan_status IS '检测状态:1检测中/2通过/3不通过/4检测失败'; +COMMENT ON COLUMN x_file_security.action IS 'MeshSafe处置动作:pass/manual_review/reject'; +COMMENT ON COLUMN x_file_security.reason IS '检测结论说明'; +COMMENT ON COLUMN x_file_security.result_json IS '检测完整结果JSON'; +COMMENT ON COLUMN x_file_security.review_comment IS '人工复核说明(人工改判时有值)'; +COMMENT ON COLUMN x_file_security.deleted IS '是否删除'; +COMMENT ON COLUMN x_file_security.create_by IS '创建人'; +COMMENT ON COLUMN x_file_security.create_time IS '创建时间'; +COMMENT ON COLUMN x_file_security.update_by IS '修改人'; +COMMENT ON COLUMN x_file_security.update_time IS '修改时间'; +COMMENT ON COLUMN x_file_security.proxy_by IS '代理人'; diff --git a/deployment/iw/sql/upgrade/upgrade-20261103-transfer-perf.sql b/deployment/iw/sql/upgrade/upgrade-20261103-transfer-perf.sql new file mode 100644 index 0000000..d1f4b43 --- /dev/null +++ b/deployment/iw/sql/upgrade/upgrade-20261103-transfer-perf.sql @@ -0,0 +1,26 @@ +-- ============================================================= +-- 升级脚本:跨网传输链路性能优化(第一批) +-- 日期:2026-11-03 +-- 说明:给 xs_file_record.md5_code 补索引。 +-- 文件入库时会用 MD5 做内容去重查询 +-- (FileServiceImpl 上传 → find(md5Code)),此前该列无索引, +-- 每个文件入库都是一次全表扫描。解包一个含 N 个文件的传输包 +-- 就是 N 次全表扫描,数据量上来后是多文件解包的主要数据库开销。 +-- 新环境由 init 脚本建表时已包含该索引,本脚本仅供已上线环境增量执行。 +-- 执行方式:MySQL/达梦(DM8 MySQL兼容模式)执行第 1 节; +-- PostgreSQL 执行第 2 节。 +-- 注意:表数据量大时建索引会锁写,建议业务低峰执行。 +-- 重复执行会报「索引已存在」,忽略即可。 +-- ============================================================= + +-- ------------------------------------------------------------- +-- 1. MySQL / 达梦 DM8 +-- ------------------------------------------------------------- +CREATE INDEX idx_file_record_md5_code ON xs_file_record(md5_code); + +-- ------------------------------------------------------------- +-- 2. PostgreSQL +-- ------------------------------------------------------------- +-- 表已有数据且不能停写时,改用下面这句(不可在事务块内执行): +-- CREATE INDEX CONCURRENTLY idx_file_record_md5_code ON xs_file_record(md5_code); +CREATE INDEX IF NOT EXISTS idx_file_record_md5_code ON xs_file_record(md5_code); diff --git a/deployment/iw/web/assets/(user)-ByN4Axee.js b/deployment/iw/web/assets/(user)-ByN4Axee.js new file mode 100644 index 0000000..e691dbc --- /dev/null +++ b/deployment/iw/web/assets/(user)-ByN4Axee.js @@ -0,0 +1,75 @@ +import{t as e}from"./useQuery-dxbdhNvu.js";import{n as t,r as n,t as r}from"./file-type-BBx4p_T6.js";import{t as i}from"./file-COj1kCUn.js";import{Hn as a,St as o,Vn as s,Wn as c,Y as l,en as u,fn as d,k as f,qn as p,rn as m,tn as h,zn as g}from"./index-BaTxSAlR.js";import{t as _}from"./prop-types-BuNDdpC2.js";var v=d(`file-chart-pie`,[[`path`,{d:`M15.941 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.704l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v3.512`,key:`13hoie`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M4.017 11.512a6 6 0 1 0 8.466 8.475`,key:`s6vs5t`}],[`path`,{d:`M9 16a1 1 0 0 1-1-1v-4c0-.552.45-1.008.995-.917a6 6 0 0 1 4.922 4.922c.091.544-.365.995-.917.995z`,key:`1dl6s6`}]]),y=d(`file-exclamation-point`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),b=p(s(),1),x=p(g(),1),S=Object.defineProperty,C=(e,t)=>S(e,`name`,{value:t,configurable:!0}),w=`Progress`,T=100,[E,D]=f(w),[O,k]=E(w),A=b.forwardRef(C(function(e,t){let{__scopeProgress:n,value:r=null,max:i,getValueLabel:a=N,...o}=e;(i||i===0)&&!ne(i)&&console.error(ie(`${i}`,`Progress`));let s=ne(i)?i:T;r!==null&&!re(r,s)&&console.error(ae(`${r}`,`Progress`));let c=re(r,s)?r:null,u=te(c)?a(c,s):void 0;return(0,x.jsx)(O,{scope:n,value:c,max:s,children:(0,x.jsx)(l.div,{"aria-valuemax":s,"aria-valuemin":0,"aria-valuenow":te(c)?c:void 0,"aria-valuetext":u,role:`progressbar`,"data-state":ee(c,s),"data-value":c??void 0,"data-max":s,...o,ref:t})})},`Progress`)),j=`ProgressIndicator`,M=b.forwardRef(C(function(e,t){let{__scopeProgress:n,...r}=e,i=k(j,n);return(0,x.jsx)(l.div,{"data-state":ee(i.value,i.max),"data-value":i.value??void 0,"data-max":i.max,...r,ref:t})},`ProgressIndicator`));function N(e,t){return`${Math.round(e/t*100)}%`}C(N,`defaultGetValueLabel`);function ee(e,t){return e==null?`indeterminate`:e===t?`complete`:`loading`}C(ee,`getProgressState`);function te(e){return typeof e==`number`}C(te,`isNumber`);function ne(e){return te(e)&&!isNaN(e)&&e>0}C(ne,`isValidMaxNumber`);function re(e,t){return te(e)&&!isNaN(e)&&e<=t&&e>=0}C(re,`isValidValueNumber`);function ie(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${T}\`.`}C(ie,`getInvalidMaxError`);function ae(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be: + - a positive number + - less than the value passed to \`max\` (or ${T} if no \`max\` prop is set) + - \`null\` or \`undefined\` if the progress is indeterminate. + +Defaulting to \`null\`.`}C(ae,`getInvalidValueError`);function oe({className:e,value:t,...n}){return(0,x.jsx)(A,{"data-slot":`progress`,className:u(`bg-primary/20 relative h-2 w-full overflow-hidden rounded-full`,e),...n,children:(0,x.jsx)(M,{"data-slot":`progress-indicator`,className:`bg-primary h-full w-full flex-1 transition-all`,style:{transform:`translateX(-${100-(t||0)}%)`}})})}var se=a(((e,t)=>{t.exports=Array.isArray})),ce=a(((e,t)=>{t.exports=typeof global==`object`&&global&&global.Object===Object&&global})),le=a(((e,t)=>{var n=ce(),r=typeof self==`object`&&self&&self.Object===Object&&self;t.exports=n||r||Function(`return this`)()})),ue=a(((e,t)=>{t.exports=le().Symbol})),de=a(((e,t)=>{var n=ue(),r=Object.prototype,i=r.hasOwnProperty,a=r.toString,o=n?n.toStringTag:void 0;function s(e){var t=i.call(e,o),n=e[o];try{e[o]=void 0;var r=!0}catch{}var s=a.call(e);return r&&(t?e[o]=n:delete e[o]),s}t.exports=s})),fe=a(((e,t)=>{var n=Object.prototype.toString;function r(e){return n.call(e)}t.exports=r})),pe=a(((e,t)=>{var n=ue(),r=de(),i=fe(),a=`[object Null]`,o=`[object Undefined]`,s=n?n.toStringTag:void 0;function c(e){return e==null?e===void 0?o:a:s&&s in Object(e)?r(e):i(e)}t.exports=c})),me=a(((e,t)=>{function n(e){return typeof e==`object`&&!!e}t.exports=n})),he=a(((e,t)=>{var n=pe(),r=me(),i=`[object Symbol]`;function a(e){return typeof e==`symbol`||r(e)&&n(e)==i}t.exports=a})),ge=a(((e,t)=>{var n=se(),r=he(),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;function o(e,t){if(n(e))return!1;var o=typeof e;return o==`number`||o==`symbol`||o==`boolean`||e==null||r(e)?!0:a.test(e)||!i.test(e)||t!=null&&e in Object(t)}t.exports=o})),_e=a(((e,t)=>{function n(e){var t=typeof e;return e!=null&&(t==`object`||t==`function`)}t.exports=n})),P=a(((e,t)=>{var n=pe(),r=_e(),i=`[object AsyncFunction]`,a=`[object Function]`,o=`[object GeneratorFunction]`,s=`[object Proxy]`;function c(e){if(!r(e))return!1;var t=n(e);return t==a||t==o||t==i||t==s}t.exports=c})),ve=a(((e,t)=>{t.exports=le()[`__core-js_shared__`]})),ye=a(((e,t)=>{var n=ve(),r=function(){var e=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||``);return e?`Symbol(src)_1.`+e:``}();function i(e){return!!r&&r in e}t.exports=i})),be=a(((e,t)=>{var n=Function.prototype.toString;function r(e){if(e!=null){try{return n.call(e)}catch{}try{return e+``}catch{}}return``}t.exports=r})),xe=a(((e,t)=>{var n=P(),r=ye(),i=_e(),a=be(),o=/[\\^$.*+?()[\]{}|]/g,s=/^\[object .+?Constructor\]$/,c=Function.prototype,l=Object.prototype,u=c.toString,d=l.hasOwnProperty,f=RegExp(`^`+u.call(d).replace(o,`\\$&`).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,`$1.*?`)+`$`);function p(e){return!i(e)||r(e)?!1:(n(e)?f:s).test(a(e))}t.exports=p})),Se=a(((e,t)=>{function n(e,t){return e==null?void 0:e[t]}t.exports=n})),Ce=a(((e,t)=>{var n=xe(),r=Se();function i(e,t){var i=r(e,t);return n(i)?i:void 0}t.exports=i})),we=a(((e,t)=>{t.exports=Ce()(Object,`create`)})),Te=a(((e,t)=>{var n=we();function r(){this.__data__=n?n(null):{},this.size=0}t.exports=r})),Ee=a(((e,t)=>{function n(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}t.exports=n})),De=a(((e,t)=>{var n=we(),r=`__lodash_hash_undefined__`,i=Object.prototype.hasOwnProperty;function a(e){var t=this.__data__;if(n){var a=t[e];return a===r?void 0:a}return i.call(t,e)?t[e]:void 0}t.exports=a})),Oe=a(((e,t)=>{var n=we(),r=Object.prototype.hasOwnProperty;function i(e){var t=this.__data__;return n?t[e]!==void 0:r.call(t,e)}t.exports=i})),ke=a(((e,t)=>{var n=we(),r=`__lodash_hash_undefined__`;function i(e,t){var i=this.__data__;return this.size+=this.has(e)?0:1,i[e]=n&&t===void 0?r:t,this}t.exports=i})),Ae=a(((e,t)=>{var n=Te(),r=Ee(),i=De(),a=Oe(),o=ke();function s(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t{function n(){this.__data__=[],this.size=0}t.exports=n})),Me=a(((e,t)=>{function n(e,t){return e===t||e!==e&&t!==t}t.exports=n})),Ne=a(((e,t)=>{var n=Me();function r(e,t){for(var r=e.length;r--;)if(n(e[r][0],t))return r;return-1}t.exports=r})),Pe=a(((e,t)=>{var n=Ne(),r=Array.prototype.splice;function i(e){var t=this.__data__,i=n(t,e);return i<0?!1:(i==t.length-1?t.pop():r.call(t,i,1),--this.size,!0)}t.exports=i})),Fe=a(((e,t)=>{var n=Ne();function r(e){var t=this.__data__,r=n(t,e);return r<0?void 0:t[r][1]}t.exports=r})),Ie=a(((e,t)=>{var n=Ne();function r(e){return n(this.__data__,e)>-1}t.exports=r})),Le=a(((e,t)=>{var n=Ne();function r(e,t){var r=this.__data__,i=n(r,e);return i<0?(++this.size,r.push([e,t])):r[i][1]=t,this}t.exports=r})),Re=a(((e,t)=>{var n=je(),r=Pe(),i=Fe(),a=Ie(),o=Le();function s(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t{t.exports=Ce()(le(),`Map`)})),Be=a(((e,t)=>{var n=Ae(),r=Re(),i=ze();function a(){this.size=0,this.__data__={hash:new n,map:new(i||r),string:new n}}t.exports=a})),Ve=a(((e,t)=>{function n(e){var t=typeof e;return t==`string`||t==`number`||t==`symbol`||t==`boolean`?e!==`__proto__`:e===null}t.exports=n})),He=a(((e,t)=>{var n=Ve();function r(e,t){var r=e.__data__;return n(t)?r[typeof t==`string`?`string`:`hash`]:r.map}t.exports=r})),Ue=a(((e,t)=>{var n=He();function r(e){var t=n(this,e).delete(e);return this.size-=t?1:0,t}t.exports=r})),We=a(((e,t)=>{var n=He();function r(e){return n(this,e).get(e)}t.exports=r})),Ge=a(((e,t)=>{var n=He();function r(e){return n(this,e).has(e)}t.exports=r})),Ke=a(((e,t)=>{var n=He();function r(e,t){var r=n(this,e),i=r.size;return r.set(e,t),this.size+=r.size==i?0:1,this}t.exports=r})),qe=a(((e,t)=>{var n=Be(),r=Ue(),i=We(),a=Ge(),o=Ke();function s(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t{var n=qe(),r=`Expected a function`;function i(e,t){if(typeof e!=`function`||t!=null&&typeof t!=`function`)throw TypeError(r);var a=function(){var n=arguments,r=t?t.apply(this,n):n[0],i=a.cache;if(i.has(r))return i.get(r);var o=e.apply(this,n);return a.cache=i.set(r,o)||i,o};return a.cache=new(i.Cache||n),a}i.Cache=n,t.exports=i})),Ye=a(((e,t)=>{var n=Je(),r=500;function i(e){var t=n(e,function(e){return i.size===r&&i.clear(),e}),i=t.cache;return t}t.exports=i})),Xe=a(((e,t)=>{var n=Ye(),r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g;t.exports=n(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace(r,function(e,n,r,a){t.push(r?a.replace(i,`$1`):n||e)}),t})})),Ze=a(((e,t)=>{function n(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n{var n=ue(),r=Ze(),i=se(),a=he(),o=1/0,s=n?n.prototype:void 0,c=s?s.toString:void 0;function l(e){if(typeof e==`string`)return e;if(i(e))return r(e,l)+``;if(a(e))return c?c.call(e):``;var t=e+``;return t==`0`&&1/e==-o?`-0`:t}t.exports=l})),$e=a(((e,t)=>{var n=Qe();function r(e){return e==null?``:n(e)}t.exports=r})),et=a(((e,t)=>{var n=se(),r=ge(),i=Xe(),a=$e();function o(e,t){return n(e)?e:r(e,t)?[e]:i(a(e))}t.exports=o})),tt=a(((e,t)=>{var n=he(),r=1/0;function i(e){if(typeof e==`string`||n(e))return e;var t=e+``;return t==`0`&&1/e==-r?`-0`:t}t.exports=i})),nt=a(((e,t)=>{var n=et(),r=tt();function i(e,t){t=n(t,e);for(var i=0,a=t.length;e!=null&&i{var n=nt();function r(e,t,r){var i=e==null?void 0:n(e,t);return i===void 0?r:i}t.exports=r})),it=a(((e,t)=>{function n(e){return e==null}t.exports=n})),at=a(((e,t)=>{var n=pe(),r=se(),i=me(),a=`[object String]`;function o(e){return typeof e==`string`||!r(e)&&i(e)&&n(e)==a}t.exports=o})),ot=a((e=>{var t=Symbol.for(`react.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.provider`),s=Symbol.for(`react.context`),c=Symbol.for(`react.server_context`),l=Symbol.for(`react.forward_ref`),u=Symbol.for(`react.suspense`),d=Symbol.for(`react.suspense_list`),f=Symbol.for(`react.memo`),p=Symbol.for(`react.lazy`);function m(e){if(typeof e==`object`&&e){var m=e.$$typeof;switch(m){case t:switch(e=e.type,e){case r:case a:case i:case u:case d:return e;default:switch(e&&=e.$$typeof,e){case c:case s:case l:case p:case f:case o:return e;default:return m}}case n:return m}}}e.isFragment=function(e){return m(e)===r}})),st=a(((e,t)=>{t.exports=ot()})),ct=a(((e,t)=>{var n=pe(),r=me(),i=`[object Number]`;function a(e){return typeof e==`number`||r(e)&&n(e)==i}t.exports=a})),lt=a(((e,t)=>{var n=ct();function r(e){return n(e)&&e!=+e}t.exports=r})),ut=p(at()),dt=p(lt()),ft=p(rt()),pt=p(ct());it();var mt=function(e){return e===0?0:e>0?1:-1},ht=function(e){return(0,ut.default)(e)&&e.indexOf(`%`)===e.length-1},F=function(e){return(0,pt.default)(e)&&!(0,dt.default)(e)},I=function(e){return F(e)||(0,ut.default)(e)},gt=0,_t=function(e){var t=++gt;return`${e||``}${t}`},vt=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!F(e)&&!(0,ut.default)(e))return n;var i;if(ht(e)){var a=e.indexOf(`%`);i=t*parseFloat(e.slice(0,a))/100}else i=+e;return(0,dt.default)(i)&&(i=n),r&&i>t&&(i=t),i},yt=function(e){if(!e)return null;var t=Object.keys(e);return t&&t.length?e[t[0]]:null},bt=function(e){if(!Array.isArray(e))return!1;for(var t=e.length,n={},r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Ut(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}var Wt={click:`onClick`,mousedown:`onMouseDown`,mouseup:`onMouseUp`,mouseover:`onMouseOver`,mousemove:`onMouseMove`,mouseout:`onMouseOut`,mouseenter:`onMouseEnter`,mouseleave:`onMouseLeave`,touchcancel:`onTouchCancel`,touchend:`onTouchEnd`,touchmove:`onTouchMove`,touchstart:`onTouchStart`,contextmenu:`onContextMenu`,dblclick:`onDoubleClick`},Gt=function(e){return typeof e==`string`?e:e?e.displayName||e.name||`Component`:``},Kt=null,qt=null,Jt=function e(t){if(t===Kt&&Array.isArray(qt))return qt;var n=[];return b.Children.forEach(t,function(t){(0,Ft.default)(t)||((0,zt.isFragment)(t)?n=n.concat(e(t.props.children)):n.push(t))}),qt=n,Kt=t,n};function Yt(e,t){var n=[],r=[];return r=Array.isArray(t)?t.map(function(e){return Gt(e)}):[Gt(t)],Jt(e).forEach(function(e){var t=(0,Pt.default)(e,`type.displayName`)||(0,Pt.default)(e,`type.name`);r.indexOf(t)!==-1&&n.push(e)}),n}function Xt(e,t){var n=Yt(e,t);return n&&n[0]}var Zt=function(e){if(!e||!e.props)return!1;var t=e.props,n=t.width,r=t.height;return!(!F(n)||n<=0||!F(r)||r<=0)},Qt=`a.altGlyph.altGlyphDef.altGlyphItem.animate.animateColor.animateMotion.animateTransform.circle.clipPath.color-profile.cursor.defs.desc.ellipse.feBlend.feColormatrix.feComponentTransfer.feComposite.feConvolveMatrix.feDiffuseLighting.feDisplacementMap.feDistantLight.feFlood.feFuncA.feFuncB.feFuncG.feFuncR.feGaussianBlur.feImage.feMerge.feMergeNode.feMorphology.feOffset.fePointLight.feSpecularLighting.feSpotLight.feTile.feTurbulence.filter.font.font-face.font-face-format.font-face-name.font-face-url.foreignObject.g.glyph.glyphRef.hkern.image.line.lineGradient.marker.mask.metadata.missing-glyph.mpath.path.pattern.polygon.polyline.radialGradient.rect.script.set.stop.style.svg.switch.symbol.text.textPath.title.tref.tspan.use.view.vkern`.split(`.`),$t=function(e){return e&&e.type&&(0,It.default)(e.type)&&Qt.indexOf(e.type)>=0},en=function(e,t,n,r){var i=(kt==null?void 0:kt[r])??[];return t.startsWith(`data-`)||!(0,Lt.default)(e)&&(r&&i.includes(t)||Dt.includes(t))||n&&At.includes(t)},L=function(e,t,n){if(!e||typeof e==`function`||typeof e==`boolean`)return null;var r=e;if((0,b.isValidElement)(e)&&(r=e.props),!(0,Rt.default)(r))return null;var i={};return Object.keys(r).forEach(function(e){var a;en((a=r)==null?void 0:a[e],e,t,n)&&(i[e]=r[e])}),i},tn=function e(t,n){if(t===n)return!0;var r=b.Children.count(t);if(r!==b.Children.count(n))return!1;if(r===0)return!0;if(r===1)return nn(Array.isArray(t)?t[0]:t,Array.isArray(n)?n[0]:n);for(var i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function un(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function dn(e){var t=e.children,n=e.width,r=e.height,i=e.viewBox,a=e.className,o=e.style,s=e.title,c=e.desc,l=ln(e,sn),u=i||{width:n,height:r,x:0,y:0},d=m(`recharts-surface`,a);return b.createElement(`svg`,cn({},L(l,!0,`svg`),{className:d,width:n,height:r,style:o,viewBox:`${u.x} ${u.y} ${u.width} ${u.height}`}),b.createElement(`title`,null,s),b.createElement(`desc`,null,c),t)}var fn=[`children`,`className`];function pn(){return pn=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function hn(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}var R=b.forwardRef(function(e,t){var n=e.children,r=e.className,i=mn(e,fn),a=m(`recharts-layer`,r);return b.createElement(`g`,pn({className:a},L(i,!0),{ref:t}),n)}),gn=!1,_n=function(e,t){var n=[...arguments].slice(2);if(gn&&typeof console<`u`&&console.warn&&(t===void 0&&console.warn(`LogUtils requires an error message argument`),!e))if(t===void 0)console.warn(`Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.`);else{var r=0;console.warn(t.replace(/%s/g,function(){return n[r++]}))}},vn=a(((e,t)=>{function n(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=Array(i);++r{var n=vn();function r(e,t,r){var i=e.length;return r=r===void 0?i:r,!t&&r>=i?e:n(e,t,r)}t.exports=r})),bn=a(((e,t)=>{var n=RegExp(`[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]`);function r(e){return n.test(e)}t.exports=r})),xn=a(((e,t)=>{function n(e){return e.split(``)}t.exports=n})),Sn=a(((e,t)=>{var n=`\\ud800-\\udfff`,r=`\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff`,i=`\\ufe0e\\ufe0f`,a=`[`+n+`]`,o=`[`+r+`]`,s=`\\ud83c[\\udffb-\\udfff]`,c=`(?:`+o+`|`+s+`)`,l=`[^`+n+`]`,u=`(?:\\ud83c[\\udde6-\\uddff]){2}`,d=`[\\ud800-\\udbff][\\udc00-\\udfff]`,f=`\\u200d`,p=c+`?`,m=`[`+i+`]?`,h=`(?:`+f+`(?:`+[l,u,d].join(`|`)+`)`+m+p+`)*`,g=m+p+h,_=`(?:`+[l+o+`?`,o,u,d,a].join(`|`)+`)`,v=RegExp(s+`(?=`+s+`)|`+_+g,`g`);function y(e){return e.match(v)||[]}t.exports=y})),Cn=a(((e,t)=>{var n=xn(),r=bn(),i=Sn();function a(e){return r(e)?i(e):n(e)}t.exports=a})),wn=a(((e,t)=>{var n=yn(),r=bn(),i=Cn(),a=$e();function o(e){return function(t){t=a(t);var o=r(t)?i(t):void 0,s=o?o[0]:t.charAt(0),c=o?n(o,1).join(``):t.slice(1);return s[e]()+c}}t.exports=o})),Tn=a(((e,t)=>{t.exports=wn()(`toUpperCase`)}));function z(e){return function(){return e}}const En=Math.cos,Dn=Math.sin,On=Math.sqrt,kn=Math.PI;kn/2;const An=2*kn;var jn=Math.PI,Mn=2*jn,Nn=1e-6,Pn=Mn-Nn;function Fn(e){this._+=e[0];for(let t=1,n=e.length;t=0))throw Error(`invalid digits: ${e}`);if(t>15)return Fn;let n=10**t;return function(e){this._+=e[0];for(let t=1,r=e.length;tNn)if(!(Math.abs(u*s-c*l)>Nn)||!i)this._append`L${this._x1=e},${this._y1=t}`;else{let f=n-a,p=r-o,m=s*s+c*c,h=f*f+p*p,g=Math.sqrt(m),_=Math.sqrt(d),v=i*Math.tan((jn-Math.acos((m+d-h)/(2*g*_)))/2),y=v/_,b=v/g;Math.abs(y-1)>Nn&&this._append`L${e+y*l},${t+y*u}`,this._append`A${i},${i},0,0,${+(u*f>l*p)},${this._x1=e+b*s},${this._y1=t+b*c}`}}arc(e,t,n,r,i,a){if(e=+e,t=+t,n=+n,a=!!a,n<0)throw Error(`negative radius: ${n}`);let o=n*Math.cos(r),s=n*Math.sin(r),c=e+o,l=t+s,u=1^a,d=a?r-i:i-r;this._x1===null?this._append`M${c},${l}`:(Math.abs(this._x1-c)>Nn||Math.abs(this._y1-l)>Nn)&&this._append`L${c},${l}`,n&&(d<0&&(d=d%Mn+Mn),d>Pn?this._append`A${n},${n},0,1,${u},${e-o},${t-s}A${n},${n},0,1,${u},${this._x1=c},${this._y1=l}`:d>Nn&&this._append`A${n},${n},0,${+(d>=jn)},${u},${this._x1=e+n*Math.cos(i)},${this._y1=t+n*Math.sin(i)}`)}rect(e,t,n,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}};function Rn(){return new Ln}Rn.prototype=Ln.prototype;function zn(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{let e=Math.floor(n);if(!(e>=0))throw RangeError(`invalid digits: ${n}`);t=e}return e},()=>new Ln(t)}Array.prototype.slice;function Bn(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function Vn(e){this._context=e}Vn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Hn(e){return new Vn(e)}function Un(e){return e[0]}function Wn(e){return e[1]}function Gn(e,t){var n=z(!0),r=null,i=Hn,a=null,o=zn(s);e=typeof e==`function`?e:e===void 0?Un:z(e),t=typeof t==`function`?t:t===void 0?Wn:z(t);function s(s){var c,l=(s=Bn(s)).length,u,d=!1,f;for(r??(a=i(f=o())),c=0;c<=l;++c)!(c=d;--f)s.point(_[f],v[f]);s.lineEnd(),s.areaEnd()}h&&(_[u]=+e(m,u,l),v[u]=+t(m,u,l),s.point(r?+r(m,u,l):_[u],n?+n(m,u,l):v[u]))}if(g)return s=null,g+``||null}function u(){return Gn().defined(i).curve(o).context(a)}return l.x=function(t){return arguments.length?(e=typeof t==`function`?t:z(+t),r=null,l):e},l.x0=function(t){return arguments.length?(e=typeof t==`function`?t:z(+t),l):e},l.x1=function(e){return arguments.length?(r=e==null?null:typeof e==`function`?e:z(+e),l):r},l.y=function(e){return arguments.length?(t=typeof e==`function`?e:z(+e),n=null,l):t},l.y0=function(e){return arguments.length?(t=typeof e==`function`?e:z(+e),l):t},l.y1=function(e){return arguments.length?(n=e==null?null:typeof e==`function`?e:z(+e),l):n},l.lineX0=l.lineY0=function(){return u().x(e).y(t)},l.lineY1=function(){return u().x(e).y(n)},l.lineX1=function(){return u().x(r).y(t)},l.defined=function(e){return arguments.length?(i=typeof e==`function`?e:z(!!e),l):i},l.curve=function(e){return arguments.length?(o=e,a!=null&&(s=o(a)),l):o},l.context=function(e){return arguments.length?(e==null?a=s=null:s=o(a=e),l):a},l}var qn=class{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t);break}this._x0=e,this._y0=t}};function Jn(e){return new qn(e,!0)}function Yn(e){return new qn(e,!1)}var Xn={draw(e,t){let n=On(t/kn);e.moveTo(n,0),e.arc(0,0,n,0,An)}},Zn={draw(e,t){let n=On(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},Qn=On(1/3),$n=Qn*2,er={draw(e,t){let n=On(t/$n),r=n*Qn;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},tr={draw(e,t){let n=On(t),r=-n/2;e.rect(r,r,n,n)}},nr=.8908130915292852,rr=Dn(kn/10)/Dn(7*kn/10),ir=Dn(An/10)*rr,ar=-En(An/10)*rr,or={draw(e,t){let n=On(t*nr),r=ir*n,i=ar*n;e.moveTo(0,-n),e.lineTo(r,i);for(let t=1;t<5;++t){let a=An*t/5,o=En(a),s=Dn(a);e.lineTo(s*n,-o*n),e.lineTo(o*r-s*i,s*r+o*i)}e.closePath()}},sr=On(3),cr={draw(e,t){let n=-On(t/(sr*3));e.moveTo(0,n*2),e.lineTo(-sr*n,-n),e.lineTo(sr*n,-n),e.closePath()}},lr=-.5,ur=On(3)/2,dr=1/On(12),fr=(dr/2+1)*3,pr={draw(e,t){let n=On(t/fr),r=n/2,i=n*dr,a=r,o=n*dr+n,s=-a,c=o;e.moveTo(r,i),e.lineTo(a,o),e.lineTo(s,c),e.lineTo(lr*r-ur*i,ur*r+lr*i),e.lineTo(lr*a-ur*o,ur*a+lr*o),e.lineTo(lr*s-ur*c,ur*s+lr*c),e.lineTo(lr*r+ur*i,lr*i-ur*r),e.lineTo(lr*a+ur*o,lr*o-ur*a),e.lineTo(lr*s+ur*c,lr*c-ur*s),e.closePath()}};function mr(e,t){let n=null,r=zn(i);e=typeof e==`function`?e:z(e||Xn),t=typeof t==`function`?t:z(t===void 0?64:+t);function i(){let i;if(n||=i=r(),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),i)return n=null,i+``||null}return i.type=function(t){return arguments.length?(e=typeof t==`function`?t:z(t),i):e},i.size=function(e){return arguments.length?(t=typeof e==`function`?e:z(+e),i):t},i.context=function(e){return arguments.length?(n=e??null,i):n},i}function hr(){}function gr(e,t,n){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+n)/6)}function _r(e){this._context=e}_r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:gr(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:gr(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function vr(e){return new _r(e)}function yr(e){this._context=e}yr.prototype={areaStart:hr,areaEnd:hr,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:gr(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function br(e){return new yr(e)}function xr(e){this._context=e}xr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+e)/6,r=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:gr(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Sr(e){return new xr(e)}function Cr(e){this._context=e}Cr.prototype={areaStart:hr,areaEnd:hr,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function wr(e){return new Cr(e)}function Tr(e){return e<0?-1:1}function Er(e,t,n){var r=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(r||i<0&&-0),o=(n-e._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(Tr(a)+Tr(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Dr(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function Or(e,t,n){var r=e._x0,i=e._y0,a=e._x1,o=e._y1,s=(a-r)/3;e._context.bezierCurveTo(r+s,i+s*t,a-s,o-s*n,a,o)}function kr(e){this._context=e}kr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Or(this,this._t0,Dr(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Or(this,Dr(this,n=Er(this,e,t)),n);break;default:Or(this,this._t0,n=Er(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}};function Ar(e){this._context=new jr(e)}(Ar.prototype=Object.create(kr.prototype)).point=function(e,t){kr.prototype.point.call(this,t,e)};function jr(e){this._context=e}jr.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,r,i,a){this._context.bezierCurveTo(t,e,r,n,a,i)}};function Mr(e){return new kr(e)}function Nr(e){return new Ar(e)}function Pr(e){this._context=e}Pr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,n=e.length;if(n)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),n===2)this._context.lineTo(e[1],t[1]);else for(var r=Fr(e),i=Fr(t),a=0,o=1;o=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[n-1]=(e[n]+i[n-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}break}this._x=e,this._y=t}};function Rr(e){return new Lr(e,.5)}function zr(e){return new Lr(e,0)}function Br(e){return new Lr(e,1)}function Vr(e,t){if((o=e.length)>1)for(var n=1,r,i,a=e[t[0]],o,s=a.length;n=0;)n[t]=t;return n}function Ur(e,t){return e[t]}function Wr(e){let t=[];return t.key=e,t}function Gr(){var e=z([]),t=Hr,n=Vr,r=Ur;function i(i){var a=Array.from(e.apply(this,arguments),Wr),o,s=a.length,c=-1,l;for(let e of i)for(o=0,++c;o0){for(var n,r,i=0,a=e[0].length,o;i0){for(var n=0,r=e[t[0]],i,a=r.length;n0)||!((a=(i=e[t[0]]).length)>0))){for(var n=0,r=1,i,a,o;r=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function ai(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}var oi={symbolCircle:Xn,symbolCross:Zn,symbolDiamond:er,symbolSquare:tr,symbolStar:or,symbolTriangle:cr,symbolWye:pr},si=Math.PI/180,ci=function(e){return oi[`symbol${(0,Yr.default)(e)}`]||Xn},li=function(e,t,n){if(t===`area`)return e;switch(n){case`cross`:return 5*e*e/9;case`diamond`:return .5*e*e/Math.sqrt(3);case`square`:return e*e;case`star`:var r=18*si;return 1.25*e*e*(Math.tan(r)-Math.tan(r*2)*Math.tan(r)**2);case`triangle`:return Math.sqrt(3)*e*e/4;case`wye`:return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},ui=function(e,t){oi[`symbol${(0,Yr.default)(e)}`]=t},di=function(e){var t=e.type,n=t===void 0?`circle`:t,r=e.size,i=r===void 0?64:r,a=e.sizeType,o=a===void 0?`area`:a,s=ei(ei({},ii(e,Zr)),{},{type:n,size:i,sizeType:o}),c=function(){var e=ci(n);return mr().type(e).size(li(i,o,n))()},l=s.className,u=s.cx,d=s.cy,f=L(s,!0);return u===+u&&d===+d&&i===+i?b.createElement(`path`,Qr({},f,{className:m(`recharts-symbols`,l),transform:`translate(${u}, ${d})`,d:c()})):null};di.registerSymbol=ui;var fi=p(P());function pi(e){"@babel/helpers - typeof";return pi=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},pi(e)}function mi(){return mi=Object.assign?Object.assign.bind():function(e){for(var t=1;t`);var f=t.inactive?o:t.color;return b.createElement(`li`,mi({className:u,style:c,key:`legend-item-${n}`},Nt(e.props,t,n)),b.createElement(dn,{width:r,height:r,viewBox:s,style:l},e.renderIcon(t)),b.createElement(`span`,{className:`recharts-legend-item-text`,style:{color:f}},i?i(d,t,n):d))})}},{key:`render`,value:function(){var e=this.props,t=e.payload,n=e.layout,r=e.align;if(!t||!t.length)return null;var i={padding:0,margin:0,textAlign:n===`horizontal`?r:`left`};return b.createElement(`ul`,{className:`recharts-default-legend`,style:i},this.renderItems())}}])}(b.PureComponent);Di(ji,`displayName`,`Legend`),Di(ji,`defaultProps`,{iconSize:14,layout:`horizontal`,align:`center`,verticalAlign:`middle`,inactiveColor:`#ccc`});var Mi=a(((e,t)=>{var n=Re();function r(){this.__data__=new n,this.size=0}t.exports=r})),Ni=a(((e,t)=>{function n(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}t.exports=n})),Pi=a(((e,t)=>{function n(e){return this.__data__.get(e)}t.exports=n})),Fi=a(((e,t)=>{function n(e){return this.__data__.has(e)}t.exports=n})),Ii=a(((e,t)=>{var n=Re(),r=ze(),i=qe(),a=200;function o(e,t){var o=this.__data__;if(o instanceof n){var s=o.__data__;if(!r||s.length{var n=Re(),r=Mi(),i=Ni(),a=Pi(),o=Fi(),s=Ii();function c(e){this.size=(this.__data__=new n(e)).size}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=a,c.prototype.has=o,c.prototype.set=s,t.exports=c})),Ri=a(((e,t)=>{var n=`__lodash_hash_undefined__`;function r(e){return this.__data__.set(e,n),this}t.exports=r})),zi=a(((e,t)=>{function n(e){return this.__data__.has(e)}t.exports=n})),Bi=a(((e,t)=>{var n=qe(),r=Ri(),i=zi();function a(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new n;++t{function n(e,t){for(var n=-1,r=e==null?0:e.length;++n{function n(e,t){return e.has(t)}t.exports=n})),Ui=a(((e,t)=>{var n=Bi(),r=Vi(),i=Hi(),a=1,o=2;function s(e,t,s,c,l,u){var d=s&a,f=e.length,p=t.length;if(f!=p&&!(d&&p>f))return!1;var m=u.get(e),h=u.get(t);if(m&&h)return m==t&&h==e;var g=-1,_=!0,v=s&o?new n:void 0;for(u.set(e,t),u.set(t,e);++g{t.exports=le().Uint8Array})),Gi=a(((e,t)=>{function n(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}t.exports=n})),Ki=a(((e,t)=>{function n(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}t.exports=n})),qi=a(((e,t)=>{var n=ue(),r=Wi(),i=Me(),a=Ui(),o=Gi(),s=Ki(),c=1,l=2,u=`[object Boolean]`,d=`[object Date]`,f=`[object Error]`,p=`[object Map]`,m=`[object Number]`,h=`[object RegExp]`,g=`[object Set]`,_=`[object String]`,v=`[object Symbol]`,y=`[object ArrayBuffer]`,b=`[object DataView]`,x=n?n.prototype:void 0,S=x?x.valueOf:void 0;function C(e,t,n,x,C,w,T){switch(n){case b:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case y:return!(e.byteLength!=t.byteLength||!w(new r(e),new r(t)));case u:case d:case m:return i(+e,+t);case f:return e.name==t.name&&e.message==t.message;case h:case _:return e==t+``;case p:var E=o;case g:var D=x&c;if(E||=s,e.size!=t.size&&!D)return!1;var O=T.get(e);if(O)return O==t;x|=l,T.set(e,t);var k=a(E(e),E(t),x,C,w,T);return T.delete(e),k;case v:if(S)return S.call(e)==S.call(t)}return!1}t.exports=C})),Ji=a(((e,t)=>{function n(e,t){for(var n=-1,r=t.length,i=e.length;++n{var n=Ji(),r=se();function i(e,t,i){var a=t(e);return r(e)?a:n(a,i(e))}t.exports=i})),Xi=a(((e,t)=>{function n(e,t){for(var n=-1,r=e==null?0:e.length,i=0,a=[];++n{function n(){return[]}t.exports=n})),Qi=a(((e,t)=>{var n=Xi(),r=Zi(),i=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols;t.exports=a?function(e){return e==null?[]:(e=Object(e),n(a(e),function(t){return i.call(e,t)}))}:r})),$i=a(((e,t)=>{function n(e,t){for(var n=-1,r=Array(e);++n{var n=pe(),r=me(),i=`[object Arguments]`;function a(e){return r(e)&&n(e)==i}t.exports=a})),ta=a(((e,t)=>{var n=ea(),r=me(),i=Object.prototype,a=i.hasOwnProperty,o=i.propertyIsEnumerable;t.exports=n(function(){return arguments}())?n:function(e){return r(e)&&a.call(e,`callee`)&&!o.call(e,`callee`)}})),na=a(((e,t)=>{function n(){return!1}t.exports=n})),ra=a(((e,t)=>{var n=le(),r=na(),i=typeof e==`object`&&e&&!e.nodeType&&e,a=i&&typeof t==`object`&&t&&!t.nodeType&&t,o=a&&a.exports===i?n.Buffer:void 0;t.exports=(o?o.isBuffer:void 0)||r})),ia=a(((e,t)=>{var n=9007199254740991,r=/^(?:0|[1-9]\d*)$/;function i(e,t){var i=typeof e;return t??=n,!!t&&(i==`number`||i!=`symbol`&&r.test(e))&&e>-1&&e%1==0&&e{var n=9007199254740991;function r(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=n}t.exports=r})),oa=a(((e,t)=>{var n=pe(),r=aa(),i=me(),a=`[object Arguments]`,o=`[object Array]`,s=`[object Boolean]`,c=`[object Date]`,l=`[object Error]`,u=`[object Function]`,d=`[object Map]`,f=`[object Number]`,p=`[object Object]`,m=`[object RegExp]`,h=`[object Set]`,g=`[object String]`,_=`[object WeakMap]`,v=`[object ArrayBuffer]`,y=`[object DataView]`,b=`[object Float32Array]`,x=`[object Float64Array]`,S=`[object Int8Array]`,C=`[object Int16Array]`,w=`[object Int32Array]`,T=`[object Uint8Array]`,E=`[object Uint8ClampedArray]`,D=`[object Uint16Array]`,O=`[object Uint32Array]`,k={};k[b]=k[x]=k[S]=k[C]=k[w]=k[T]=k[E]=k[D]=k[O]=!0,k[a]=k[o]=k[v]=k[s]=k[y]=k[c]=k[l]=k[u]=k[d]=k[f]=k[p]=k[m]=k[h]=k[g]=k[_]=!1;function A(e){return i(e)&&r(e.length)&&!!k[n(e)]}t.exports=A})),sa=a(((e,t)=>{function n(e){return function(t){return e(t)}}t.exports=n})),ca=a(((e,t)=>{var n=ce(),r=typeof e==`object`&&e&&!e.nodeType&&e,i=r&&typeof t==`object`&&t&&!t.nodeType&&t,a=i&&i.exports===r&&n.process;t.exports=function(){try{return i&&i.require&&i.require(`util`).types||a&&a.binding&&a.binding(`util`)}catch{}}()})),la=a(((e,t)=>{var n=oa(),r=sa(),i=ca(),a=i&&i.isTypedArray;t.exports=a?r(a):n})),ua=a(((e,t)=>{var n=$i(),r=ta(),i=se(),a=ra(),o=ia(),s=la(),c=Object.prototype.hasOwnProperty;function l(e,t){var l=i(e),u=!l&&r(e),d=!l&&!u&&a(e),f=!l&&!u&&!d&&s(e),p=l||u||d||f,m=p?n(e.length,String):[],h=m.length;for(var g in e)(t||c.call(e,g))&&!(p&&(g==`length`||d&&(g==`offset`||g==`parent`)||f&&(g==`buffer`||g==`byteLength`||g==`byteOffset`)||o(g,h)))&&m.push(g);return m}t.exports=l})),da=a(((e,t)=>{var n=Object.prototype;function r(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||n)}t.exports=r})),fa=a(((e,t)=>{function n(e,t){return function(n){return e(t(n))}}t.exports=n})),pa=a(((e,t)=>{t.exports=fa()(Object.keys,Object)})),ma=a(((e,t)=>{var n=da(),r=pa(),i=Object.prototype.hasOwnProperty;function a(e){if(!n(e))return r(e);var t=[];for(var a in Object(e))i.call(e,a)&&a!=`constructor`&&t.push(a);return t}t.exports=a})),ha=a(((e,t)=>{var n=P(),r=aa();function i(e){return e!=null&&r(e.length)&&!n(e)}t.exports=i})),ga=a(((e,t)=>{var n=ua(),r=ma(),i=ha();function a(e){return i(e)?n(e):r(e)}t.exports=a})),_a=a(((e,t)=>{var n=Yi(),r=Qi(),i=ga();function a(e){return n(e,i,r)}t.exports=a})),va=a(((e,t)=>{var n=_a(),r=1,i=Object.prototype.hasOwnProperty;function a(e,t,a,o,s,c){var l=a&r,u=n(e),d=u.length;if(d!=n(t).length&&!l)return!1;for(var f=d;f--;){var p=u[f];if(!(l?p in t:i.call(t,p)))return!1}var m=c.get(e),h=c.get(t);if(m&&h)return m==t&&h==e;var g=!0;c.set(e,t),c.set(t,e);for(var _=l;++f{t.exports=Ce()(le(),`DataView`)})),ba=a(((e,t)=>{t.exports=Ce()(le(),`Promise`)})),xa=a(((e,t)=>{t.exports=Ce()(le(),`Set`)})),Sa=a(((e,t)=>{t.exports=Ce()(le(),`WeakMap`)})),Ca=a(((e,t)=>{var n=ya(),r=ze(),i=ba(),a=xa(),o=Sa(),s=pe(),c=be(),l=`[object Map]`,u=`[object Object]`,d=`[object Promise]`,f=`[object Set]`,p=`[object WeakMap]`,m=`[object DataView]`,h=c(n),g=c(r),_=c(i),v=c(a),y=c(o),b=s;(n&&b(new n(new ArrayBuffer(1)))!=m||r&&b(new r)!=l||i&&b(i.resolve())!=d||a&&b(new a)!=f||o&&b(new o)!=p)&&(b=function(e){var t=s(e),n=t==u?e.constructor:void 0,r=n?c(n):``;if(r)switch(r){case h:return m;case g:return l;case _:return d;case v:return f;case y:return p}return t}),t.exports=b})),wa=a(((e,t)=>{var n=Li(),r=Ui(),i=qi(),a=va(),o=Ca(),s=se(),c=ra(),l=la(),u=1,d=`[object Arguments]`,f=`[object Array]`,p=`[object Object]`,m=Object.prototype.hasOwnProperty;function h(e,t,h,g,_,v){var y=s(e),b=s(t),x=y?f:o(e),S=b?f:o(t);x=x==d?p:x,S=S==d?p:S;var C=x==p,w=S==p,T=x==S;if(T&&c(e)){if(!c(t))return!1;y=!0,C=!1}if(T&&!C)return v||=new n,y||l(e)?r(e,t,h,g,_,v):i(e,t,x,h,g,_,v);if(!(h&u)){var E=C&&m.call(e,`__wrapped__`),D=w&&m.call(t,`__wrapped__`);if(E||D){var O=E?e.value():e,k=D?t.value():t;return v||=new n,_(O,k,h,g,v)}}return T?(v||=new n,a(e,t,h,g,_,v)):!1}t.exports=h})),Ta=a(((e,t)=>{var n=wa(),r=me();function i(e,t,a,o,s){return e===t?!0:e==null||t==null||!r(e)&&!r(t)?e!==e&&t!==t:n(e,t,a,o,i,s)}t.exports=i})),Ea=a(((e,t)=>{var n=Li(),r=Ta(),i=1,a=2;function o(e,t,o,s){var c=o.length,l=c,u=!s;if(e==null)return!l;for(e=Object(e);c--;){var d=o[c];if(u&&d[2]?d[1]!==e[d[0]]:!(d[0]in e))return!1}for(;++c{var n=_e();function r(e){return e===e&&!n(e)}t.exports=r})),Oa=a(((e,t)=>{var n=Da(),r=ga();function i(e){for(var t=r(e),i=t.length;i--;){var a=t[i],o=e[a];t[i]=[a,o,n(o)]}return t}t.exports=i})),ka=a(((e,t)=>{function n(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}t.exports=n})),Aa=a(((e,t)=>{var n=Ea(),r=Oa(),i=ka();function a(e){var t=r(e);return t.length==1&&t[0][2]?i(t[0][0],t[0][1]):function(r){return r===e||n(r,e,t)}}t.exports=a})),ja=a(((e,t)=>{function n(e,t){return e!=null&&t in Object(e)}t.exports=n})),Ma=a(((e,t)=>{var n=et(),r=ta(),i=se(),a=ia(),o=aa(),s=tt();function c(e,t,c){t=n(t,e);for(var l=-1,u=t.length,d=!1;++l{var n=ja(),r=Ma();function i(e,t){return e!=null&&r(e,t,n)}t.exports=i})),Pa=a(((e,t)=>{var n=Ta(),r=rt(),i=Na(),a=ge(),o=Da(),s=ka(),c=tt(),l=1,u=2;function d(e,t){return a(e)&&o(t)?s(c(e),t):function(a){var o=r(a,e);return o===void 0&&o===t?i(a,e):n(t,o,l|u)}}t.exports=d})),Fa=a(((e,t)=>{function n(e){return e}t.exports=n})),Ia=a(((e,t)=>{function n(e){return function(t){return t==null?void 0:t[e]}}t.exports=n})),La=a(((e,t)=>{var n=nt();function r(e){return function(t){return n(t,e)}}t.exports=r})),Ra=a(((e,t)=>{var n=Ia(),r=La(),i=ge(),a=tt();function o(e){return i(e)?n(a(e)):r(e)}t.exports=o})),za=a(((e,t)=>{var n=Aa(),r=Pa(),i=Fa(),a=se(),o=Ra();function s(e){return typeof e==`function`?e:e==null?i:typeof e==`object`?a(e)?r(e[0],e[1]):n(e):o(e)}t.exports=s})),Ba=a(((e,t)=>{function n(e,t,n,r){for(var i=e.length,a=n+(r?1:-1);r?a--:++a{function n(e){return e!==e}t.exports=n})),Ha=a(((e,t)=>{function n(e,t,n){for(var r=n-1,i=e.length;++r{var n=Ba(),r=Va(),i=Ha();function a(e,t,a){return t===t?i(e,t,a):n(e,r,a)}t.exports=a})),Wa=a(((e,t)=>{var n=Ua();function r(e,t){return!!(e!=null&&e.length)&&n(e,t,0)>-1}t.exports=r})),Ga=a(((e,t)=>{function n(e,t,n){for(var r=-1,i=e==null?0:e.length;++r{function n(){}t.exports=n})),qa=a(((e,t)=>{var n=xa(),r=Ka(),i=Ki();t.exports=n&&1/i(new n([,-0]))[1]==1/0?function(e){return new n(e)}:r})),Ja=a(((e,t)=>{var n=Bi(),r=Wa(),i=Ga(),a=Hi(),o=qa(),s=Ki(),c=200;function l(e,t,l){var u=-1,d=r,f=e.length,p=!0,m=[],h=m;if(l)p=!1,d=i;else if(f>=c){var g=t?null:o(e);if(g)return s(g);p=!1,d=a,h=new n}else h=t?[]:m;outer:for(;++u{var n=za(),r=Ja();function i(e,t){return e&&e.length?r(e,n(t,2)):[]}t.exports=i}))()),Xa=p(P());function Za(e,t,n){return t===!0?(0,Ya.default)(e,n):(0,Xa.default)(t)?(0,Ya.default)(e,t):e}function Qa(e){"@babel/helpers - typeof";return Qa=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Qa(e)}var $a=[`ref`];function eo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function to(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function _o(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function vo(e){return e.value}function yo(e,t){if(b.isValidElement(e))return b.cloneElement(e,t);if(typeof e==`function`)return b.createElement(e,t);t.ref;var n=go(t,$a);return b.createElement(ji,n)}var bo=1,xo=function(e){function t(){var e;no(this,t);var n=[...arguments];return e=ao(this,t,[].concat(n)),po(e,`lastBoundingBox`,{width:-1,height:-1}),e}return uo(t,e),io(t,[{key:`componentDidMount`,value:function(){this.updateBBox()}},{key:`componentDidUpdate`,value:function(){this.updateBBox()}},{key:`getBBox`,value:function(){if(this.wrapperNode&&this.wrapperNode.getBoundingClientRect){var e=this.wrapperNode.getBoundingClientRect();return e.height=this.wrapperNode.offsetHeight,e.width=this.wrapperNode.offsetWidth,e}return null}},{key:`updateBBox`,value:function(){var e=this.props.onBBoxUpdate,t=this.getBBox();t?(Math.abs(t.width-this.lastBoundingBox.width)>bo||Math.abs(t.height-this.lastBoundingBox.height)>bo)&&(this.lastBoundingBox.width=t.width,this.lastBoundingBox.height=t.height,e&&e(t)):(this.lastBoundingBox.width!==-1||this.lastBoundingBox.height!==-1)&&(this.lastBoundingBox.width=-1,this.lastBoundingBox.height=-1,e&&e(null))}},{key:`getBBoxSnapshot`,value:function(){return this.lastBoundingBox.width>=0&&this.lastBoundingBox.height>=0?to({},this.lastBoundingBox):{width:0,height:0}}},{key:`getDefaultPosition`,value:function(e){var t=this.props,n=t.layout,r=t.align,i=t.verticalAlign,a=t.margin,o=t.chartWidth,s=t.chartHeight,c,l;if(!e||(e.left===void 0||e.left===null)&&(e.right===void 0||e.right===null))if(r===`center`&&n===`vertical`){var u=this.getBBoxSnapshot();c={left:((o||0)-u.width)/2}}else c=r===`right`?{right:a&&a.right||0}:{left:a&&a.left||0};if(!e||(e.top===void 0||e.top===null)&&(e.bottom===void 0||e.bottom===null))if(i===`middle`){var d=this.getBBoxSnapshot();l={top:((s||0)-d.height)/2}}else l=i===`bottom`?{bottom:a&&a.bottom||0}:{top:a&&a.top||0};return to(to({},c),l)}},{key:`render`,value:function(){var e=this,t=this.props,n=t.content,r=t.width,i=t.height,a=t.wrapperStyle,o=t.payloadUniqBy,s=t.payload,c=to(to({position:`absolute`,width:r||`auto`,height:i||`auto`},this.getDefaultPosition(a)),a);return b.createElement(`div`,{className:`recharts-legend-wrapper`,style:c,ref:function(t){e.wrapperNode=t}},yo(n,to(to({},this.props),{},{payload:Za(s,o,vo)})))}}],[{key:`getWithHeight`,value:function(e,t){var n=to(to({},this.defaultProps),e.props).layout;return n===`vertical`&&F(e.props.height)?{height:e.props.height}:n===`horizontal`?{width:e.props.width||t}:null}}])}(b.PureComponent);po(xo,`displayName`,`Legend`),po(xo,`defaultProps`,{iconSize:14,layout:`horizontal`,align:`center`,verticalAlign:`bottom`});var So=a(((e,t)=>{var n=ue(),r=ta(),i=se(),a=n?n.isConcatSpreadable:void 0;function o(e){return i(e)||r(e)||!!(a&&e&&e[a])}t.exports=o})),Co=a(((e,t)=>{var n=Ji(),r=So();function i(e,t,a,o,s){var c=-1,l=e.length;for(a||=r,s||=[];++c0&&a(u)?t>1?i(u,t-1,a,o,s):n(s,u):o||(s[s.length]=u)}return s}t.exports=i})),wo=a(((e,t)=>{function n(e){return function(t,n,r){for(var i=-1,a=Object(t),o=r(t),s=o.length;s--;){var c=o[e?s:++i];if(n(a[c],c,a)===!1)break}return t}}t.exports=n})),To=a(((e,t)=>{t.exports=wo()()})),Eo=a(((e,t)=>{var n=To(),r=ga();function i(e,t){return e&&n(e,t,r)}t.exports=i})),Do=a(((e,t)=>{var n=ha();function r(e,t){return function(r,i){if(r==null)return r;if(!n(r))return e(r,i);for(var a=r.length,o=t?a:-1,s=Object(r);(t?o--:++o{var n=Eo();t.exports=Do()(n)})),ko=a(((e,t)=>{var n=Oo(),r=ha();function i(e,t){var i=-1,a=r(e)?Array(e.length):[];return n(e,function(e,n,r){a[++i]=t(e,n,r)}),a}t.exports=i})),Ao=a(((e,t)=>{function n(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}t.exports=n})),jo=a(((e,t)=>{var n=he();function r(e,t){if(e!==t){var r=e!==void 0,i=e===null,a=e===e,o=n(e),s=t!==void 0,c=t===null,l=t===t,u=n(t);if(!c&&!u&&!o&&e>t||o&&s&&l&&!c&&!u||i&&s&&l||!r&&l||!a)return 1;if(!i&&!o&&!u&&e{var n=jo();function r(e,t,r){for(var i=-1,a=e.criteria,o=t.criteria,s=a.length,c=r.length;++i=c?l:l*(r[i]==`desc`?-1:1)}return e.index-t.index}t.exports=r})),No=a(((e,t)=>{var n=Ze(),r=nt(),i=za(),a=ko(),o=Ao(),s=sa(),c=Mo(),l=Fa(),u=se();function d(e,t,d){t=t.length?n(t,function(e){return u(e)?function(t){return r(t,e.length===1?e[0]:e)}:e}):[l];var f=-1;return t=n(t,s(i)),o(a(e,function(e,r,i){return{criteria:n(t,function(t){return t(e)}),index:++f,value:e}}),function(e,t){return c(e,t,d)})}t.exports=d})),Po=a(((e,t)=>{function n(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}t.exports=n})),Fo=a(((e,t)=>{var n=Po(),r=Math.max;function i(e,t,i){return t=r(t===void 0?e.length-1:t,0),function(){for(var a=arguments,o=-1,s=r(a.length-t,0),c=Array(s);++o{function n(e){return function(){return e}}t.exports=n})),Lo=a(((e,t)=>{var n=Ce();t.exports=function(){try{var e=n(Object,`defineProperty`);return e({},``,{}),e}catch{}}()})),Ro=a(((e,t)=>{var n=Io(),r=Lo(),i=Fa();t.exports=r?function(e,t){return r(e,`toString`,{configurable:!0,enumerable:!1,value:n(t),writable:!0})}:i})),zo=a(((e,t)=>{var n=800,r=16,i=Date.now;function a(e){var t=0,a=0;return function(){var o=i(),s=r-(o-a);if(a=o,s>0){if(++t>=n)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}t.exports=a})),Bo=a(((e,t)=>{var n=Ro();t.exports=zo()(n)})),Vo=a(((e,t)=>{var n=Fa(),r=Fo(),i=Bo();function a(e,t){return i(r(e,t,n),e+``)}t.exports=a})),Ho=a(((e,t)=>{var n=Me(),r=ha(),i=ia(),a=_e();function o(e,t,o){if(!a(o))return!1;var s=typeof t;return(s==`number`?r(o)&&i(t,o.length):s==`string`&&t in o)?n(o[t],e):!1}t.exports=o})),Uo=a(((e,t)=>{var n=Co(),r=No(),i=Vo(),a=Ho();t.exports=i(function(e,t){if(e==null)return[];var i=t.length;return i>1&&a(e,t[0],t[1])?t=[]:i>2&&a(t[0],t[1],t[2])&&(t=[t[0]]),r(e,n(t,1),[])})})),Wo=p(Uo()),Go=p(it());function Ko(e){"@babel/helpers - typeof";return Ko=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Ko(e)}function qo(){return qo=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=t.x),`${ds}-left`,F(n)&&t&&F(t.x)&&n=t.y),`${ds}-top`,F(r)&&t&&F(t.y)&&rc[r]+l?Math.max(u,c[r]):Math.max(d,c[r])}function hs(e){var t=e.translateX,n=e.translateY;return{transform:e.useTranslate3d?`translate3d(${t}px, ${n}px, 0)`:`translate(${t}px, ${n}px)`}}function gs(e){var t=e.allowEscapeViewBox,n=e.coordinate,r=e.offsetTopLeft,i=e.position,a=e.reverseDirection,o=e.tooltipBox,s=e.useTranslate3d,c=e.viewBox,l,u,d;return o.height>0&&o.width>0&&n?(u=ms({allowEscapeViewBox:t,coordinate:n,key:`x`,offsetTopLeft:r,position:i,reverseDirection:a,tooltipDimension:o.width,viewBox:c,viewBoxDimension:c.width}),d=ms({allowEscapeViewBox:t,coordinate:n,key:`y`,offsetTopLeft:r,position:i,reverseDirection:a,tooltipDimension:o.height,viewBox:c,viewBoxDimension:c.height}),l=hs({translateX:u,translateY:d,useTranslate3d:s})):l=fs,{cssProperties:l,cssClasses:ps({translateX:u,translateY:d,coordinate:n})}}function _s(e){"@babel/helpers - typeof";return _s=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},_s(e)}function vs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ys(e){for(var t=1;tNs||Math.abs(e.height-this.state.lastBoundingBox.height)>Ns)&&this.setState({lastBoundingBox:{width:e.width,height:e.height}})}else (this.state.lastBoundingBox.width!==-1||this.state.lastBoundingBox.height!==-1)&&this.setState({lastBoundingBox:{width:-1,height:-1}})}},{key:`componentDidMount`,value:function(){document.addEventListener(`keydown`,this.handleKeyDown),this.updateBBox()}},{key:`componentWillUnmount`,value:function(){document.removeEventListener(`keydown`,this.handleKeyDown)}},{key:`componentDidUpdate`,value:function(){var e,t;this.props.active&&this.updateBBox(),this.state.dismissed&&(((e=this.props.coordinate)==null?void 0:e.x)!==this.state.dismissedAtCoordinate.x||((t=this.props.coordinate)==null?void 0:t.y)!==this.state.dismissedAtCoordinate.y)&&(this.state.dismissed=!1)}},{key:`render`,value:function(){var e=this,t=this.props,n=t.active,r=t.allowEscapeViewBox,i=t.animationDuration,a=t.animationEasing,o=t.children,s=t.coordinate,c=t.hasPayload,l=t.isAnimationActive,u=t.offset,d=t.position,f=t.reverseDirection,p=t.useTranslate3d,m=t.viewBox,h=t.wrapperStyle,g=gs({allowEscapeViewBox:r,coordinate:s,offsetTopLeft:u,position:d,reverseDirection:f,tooltipBox:this.state.lastBoundingBox,useTranslate3d:p,viewBox:m}),_=g.cssClasses,v=g.cssProperties,y=ys(ys({transition:l&&n?`transform ${i}ms ${a}`:void 0},v),{},{pointerEvents:`none`,visibility:!this.state.dismissed&&n&&c?`visible`:`hidden`,position:`absolute`,top:0,left:0},h);return b.createElement(`div`,{tabIndex:-1,className:_,style:y,ref:function(t){e.wrapperNode=t}},o)}}])}(b.PureComponent),Fs={isSsr:function(){return!(typeof window<`u`&&window.document&&window.document.createElement&&window.setTimeout)}(),get:function(e){return Fs[e]},set:function(e,t){if(typeof e==`string`)Fs[e]=t;else{var n=Object.keys(e);n&&n.length&&n.forEach(function(t){Fs[t]=e[t]})}}};function Is(e){"@babel/helpers - typeof";return Is=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Is(e)}function Ls(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Rs(e){for(var t=1;t0;return b.createElement(Ps,{allowEscapeViewBox:r,animationDuration:i,animationEasing:a,isAnimationActive:l,active:n,coordinate:s,hasPayload:y,offset:u,position:p,reverseDirection:m,useTranslate3d:h,viewBox:g,wrapperStyle:_},$s(o,Rs(Rs({},this.props),{},{payload:v})))}}])}(b.PureComponent);Ys(ec,`displayName`,`Tooltip`),Ys(ec,`defaultProps`,{accessibilityLayer:!1,allowEscapeViewBox:{x:!1,y:!1},animationDuration:400,animationEasing:`ease`,contentStyle:{},coordinate:{x:0,y:0},cursor:!0,cursorStyle:{},filterNull:!0,isAnimationActive:!Fs.isSsr,itemStyle:{},labelStyle:{},offset:10,reverseDirection:{x:!1,y:!1},separator:` : `,trigger:`hover`,useTranslate3d:!1,viewBox:{x:0,y:0,height:0,width:0},wrapperStyle:{}});var tc=a(((e,t)=>{var n=le();t.exports=function(){return n.Date.now()}})),nc=a(((e,t)=>{var n=/\s/;function r(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t}t.exports=r})),rc=a(((e,t)=>{var n=nc(),r=/^\s+/;function i(e){return e&&e.slice(0,n(e)+1).replace(r,``)}t.exports=i})),ic=a(((e,t)=>{var n=rc(),r=_e(),i=he(),a=NaN,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;function u(e){if(typeof e==`number`)return e;if(i(e))return a;if(r(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=r(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=n(e);var u=s.test(e);return u||c.test(e)?l(e.slice(2),u?2:8):o.test(e)?a:+e}t.exports=u})),ac=a(((e,t)=>{var n=_e(),r=tc(),i=ic(),a=`Expected a function`,o=Math.max,s=Math.min;function c(e,t,c){var l,u,d,f,p,m,h=0,g=!1,_=!1,v=!0;if(typeof e!=`function`)throw TypeError(a);t=i(t)||0,n(c)&&(g=!!c.leading,_=`maxWait`in c,d=_?o(i(c.maxWait)||0,t):d,v=`trailing`in c?!!c.trailing:v);function y(t){var n=l,r=u;return l=u=void 0,h=t,f=e.apply(r,n),f}function b(e){return h=e,p=setTimeout(C,t),g?y(e):f}function x(e){var n=e-m,r=e-h,i=t-n;return _?s(i,d-r):i}function S(e){var n=e-m,r=e-h;return m===void 0||n>=t||n<0||_&&r>=d}function C(){var e=r();if(S(e))return w(e);p=setTimeout(C,x(e))}function w(e){return p=void 0,v&&l?y(e):(l=u=void 0,f)}function T(){p!==void 0&&clearTimeout(p),h=0,l=m=u=p=void 0}function E(){return p===void 0?f:w(r())}function D(){var e=r(),n=S(e);if(l=arguments,u=this,m=e,n){if(p===void 0)return b(m);if(_)return clearTimeout(p),p=setTimeout(C,t),y(m)}return p===void 0&&(p=setTimeout(C,t)),f}return D.cancel=T,D.flush=E,D}t.exports=c})),oc=a(((e,t)=>{var n=ac(),r=_e(),i=`Expected a function`;function a(e,t,a){var o=!0,s=!0;if(typeof e!=`function`)throw TypeError(i);return r(a)&&(o=`leading`in a?!!a.leading:o,s=`trailing`in a?!!a.trailing:s),n(e,t,{leading:o,maxWait:t,trailing:s})}t.exports=a})),sc=p(oc());function cc(e){"@babel/helpers - typeof";return cc=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},cc(e)}function lc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function uc(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&(e=(0,sc.default)(e,g,{trailing:!0,leading:!1}));var t=new ResizeObserver(e),n=C.current.getBoundingClientRect(),r=n.width,i=n.height;return O(r,i),t.observe(C.current),function(){t.disconnect()}},[O,g]);var k=(0,b.useMemo)(function(){var e=E.containerWidth,t=E.containerHeight;if(e<0||t<0)return null;_n(ht(o)||ht(c),`The width(%s) and height(%s) are both fixed numbers, + maybe you don't need to use a ResponsiveContainer.`,o,c),_n(!n||n>0,`The aspect(%s) must be greater than zero.`,n);var r=ht(o)?e:o,i=ht(c)?t:c;n&&n>0&&(r?i=r/n:i&&(r=i*n),f&&i>f&&(i=f)),_n(r>0||i>0,`The width(%s) and height(%s) of chart should be greater than 0, + please check the style of container, or the props width(%s) and height(%s), + or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the + height and width.`,r,i,o,c,u,d,n);var a=!Array.isArray(p)&&Gt(p.type).endsWith(`Chart`);return b.Children.map(p,function(e){return b.isValidElement(e)?(0,b.cloneElement)(e,uc({width:r,height:i},a?{style:uc({height:`100%`,width:`100%`,maxHeight:i,maxWidth:r},e.props.style)}:{})):e})},[n,p,c,f,d,u,E,o]);return b.createElement(`div`,{id:_?`${_}`:void 0,className:m(`recharts-responsive-container`,v),style:uc(uc({},S),{},{width:o,height:c,minWidth:u,minHeight:d,maxHeight:f}),ref:C},k)}),xc=function(e){return null};xc.displayName=`Cell`;function Sc(e){"@babel/helpers - typeof";return Sc=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Sc(e)}function Cc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function wc(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{};if(e==null||Fs.isSsr)return{width:0,height:0};var n=Mc(t),r=JSON.stringify({text:e,copyStyle:n});if(Oc.widthCache[r])return Oc.widthCache[r];try{var i=document.getElementById(jc);i||(i=document.createElement(`span`),i.setAttribute(`id`,jc),i.setAttribute(`aria-hidden`,`true`),document.body.appendChild(i));var a=wc(wc({},Ac),n);Object.assign(i.style,a),i.textContent=`${e}`;var o=i.getBoundingClientRect(),s={width:o.width,height:o.height};return Oc.widthCache[r]=s,++Oc.cacheCount>kc&&(Oc.cacheCount=0,Oc.widthCache={}),s}catch{return{width:0,height:0}}},Pc=function(e){return{top:e.top+window.scrollY-document.documentElement.clientTop,left:e.left+window.scrollX-document.documentElement.clientLeft}};function Fc(e){"@babel/helpers - typeof";return Fc=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Fc(e)}function Ic(e,t){return Vc(e)||Bc(e,t)||Rc(e,t)||Lc()}function Lc(){throw TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Rc(e,t){if(e){if(typeof e==`string`)return zc(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return zc(e,t)}}function zc(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function pl(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function ml(e,t){return yl(e)||vl(e,t)||gl(e,t)||hl()}function hl(){throw TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function gl(e,t){if(e){if(typeof e==`string`)return _l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _l(e,t)}}function _l(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&arguments[0]!==void 0?arguments[0]:[]).reduce(function(e,t){var a=t.word,o=t.width,s=e[e.length-1];if(s&&(r==null||i||s.width+o+nt.width?e:t})};if(!l)return f;for(var m=`…`,h=function(e){var t=xl({breakAll:c,style:s,children:u.slice(0,e)+m}).wordsWithComputedWidth,n=d(t);return[n.length>a||p(n).width>Number(r),n]},g=0,_=u.length-1,v=0,y;g<=_&&v<=u.length-1;){var b=Math.floor((g+_)/2),x=ml(h(b-1),2),S=x[0],C=x[1],w=ml(h(b),1)[0];if(!S&&!w&&(g=b+1),S&&w&&(_=b-1),!S&&w){y=C;break}v++}return y||f},Cl=function(e){return[{words:(0,cl.default)(e)?[]:e.toString().split(bl)}]},wl=function(e){var t=e.width,n=e.scaleToFit,r=e.children,i=e.style,a=e.breakAll,o=e.maxLines;if((t||n)&&!Fs.isSsr){var s,c,l=xl({breakAll:a,children:r,style:i});if(l){var u=l.wordsWithComputedWidth,d=l.spaceWidth;s=u,c=d}else return Cl(r);return Sl({breakAll:a,children:r,maxLines:o,style:i},s,c,t,n)}return Cl(r)},Tl=`#808080`,El=function(e){var t=e.x,n=t===void 0?0:t,r=e.y,i=r===void 0?0:r,a=e.lineHeight,o=a===void 0?`1em`:a,s=e.capHeight,c=s===void 0?`0.71em`:s,l=e.scaleToFit,u=l===void 0?!1:l,d=e.textAnchor,f=d===void 0?`start`:d,p=e.verticalAnchor,h=p===void 0?`end`:p,g=e.fill,_=g===void 0?Tl:g,v=fl(e,ll),y=(0,b.useMemo)(function(){return wl({breakAll:v.breakAll,children:v.children,maxLines:v.maxLines,scaleToFit:u,style:v.style,width:v.width})},[v.breakAll,v.children,v.maxLines,u,v.style,v.width]),x=v.dx,S=v.dy,C=v.angle,w=v.className,T=v.breakAll,E=fl(v,ul);if(!I(n)||!I(i))return null;var D=n+(F(x)?x:0),O=i+(F(S)?S:0),k;switch(h){case`start`:k=sl(`calc(${c})`);break;case`middle`:k=sl(`calc(${(y.length-1)/2} * -${o} + (${c} / 2))`);break;default:k=sl(`calc(${y.length-1} * -${o})`);break}var A=[];if(u){var j=y[0].width,M=v.width;A.push(`scale(${(F(M)?M/j:1)/j})`)}return C&&A.push(`rotate(${C}, ${D}, ${O})`),A.length&&(E.transform=A.join(` `)),b.createElement(`text`,dl({},L(E,!0),{x:D,y:O,className:m(`recharts-text`,w),textAnchor:f,fill:_.includes(`url`)?Tl:_}),y.map(function(e,t){var n=e.words.join(T?``:` `);return b.createElement(`tspan`,{x:D,dy:t===0?k:o,key:`${n}-${t}`},n)}))};function Dl(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function Ol(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function kl(e){let t,n,r;e.length===2?(t=e===Dl||e===Ol?e:Al,n=e,r=e):(t=Dl,n=(t,n)=>Dl(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i>>1;n(e[t],r)<0?i=t+1:a=t}while(i>>1;n(e[t],r)<=0?i=t+1:a=t}while(in&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function Al(){return 0}function jl(e){return e===null?NaN:+e}function*Ml(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var Nl=kl(Dl);const Pl=Nl.right;Nl.left,kl(jl).center;var Fl=Pl,Il=class extends Map{constructor(e,t=Bl){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(Ll(this,e))}has(e){return super.has(Ll(this,e))}set(e,t){return super.set(Rl(this,e),t)}delete(e){return super.delete(zl(this,e))}};function Ll({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function Rl({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function zl({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function Bl(e){return typeof e==`object`&&e?e.valueOf():e}function Vl(e=Dl){if(e===Dl)return Hl;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function Hl(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var Ul=Math.sqrt(50),Wl=Math.sqrt(10),Gl=Math.sqrt(2);function Kl(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=Ul?10:a>=Wl?5:a>=Gl?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/lt&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*lt&&--c),c0))return[];if(e===t)return[e];let r=t=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n=i)&&(n=i)}return n}function Zl(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Ql(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?Hl:Vl(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));Ql(e,t,u,d,i)}let a=e[t],o=n,s=r;for($l(e,n,t),i(e[r],a)>0&&$l(e,n,r);o0;)--s}i(e[n],a)===0?$l(e,n,s):(++s,$l(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function $l(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function eu(e,t,n){if(e=Float64Array.from(Ml(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return Zl(e);if(t>=1)return Xl(e);var r,i=(r-1)*t,a=Math.floor(i),o=Xl(Ql(e,a).subarray(0,a+1));return o+(Zl(e.subarray(a+1))-o)*(i-a)}}function tu(e,t,n=jl){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function nu(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Mu(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Mu(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=yu.exec(e))?new Fu(t[1],t[2],t[3],1):(t=bu.exec(e))?new Fu(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=xu.exec(e))?Mu(t[1],t[2],t[3],t[4]):(t=Su.exec(e))?Mu(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Cu.exec(e))?Hu(t[1],t[2]/100,t[3]/100,1):(t=wu.exec(e))?Hu(t[1],t[2]/100,t[3]/100,t[4]):Tu.hasOwnProperty(e)?ju(Tu[e]):e===`transparent`?new Fu(NaN,NaN,NaN,0):null}function ju(e){return new Fu(e>>16&255,e>>8&255,e&255,1)}function Mu(e,t,n,r){return r<=0&&(e=t=n=NaN),new Fu(e,t,n,r)}function Nu(e){return e instanceof fu||(e=Au(e)),e?(e=e.rgb(),new Fu(e.r,e.g,e.b,e.opacity)):new Fu}function Pu(e,t,n,r){return arguments.length===1?Nu(e):new Fu(e,t,n,r??1)}function Fu(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}uu(Fu,Pu,du(fu,{brighter(e){return e=e==null?mu:mu**+e,new Fu(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?pu:pu**+e,new Fu(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Fu(Bu(this.r),Bu(this.g),Bu(this.b),zu(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Iu,formatHex:Iu,formatHex8:Lu,formatRgb:Ru,toString:Ru}));function Iu(){return`#${Vu(this.r)}${Vu(this.g)}${Vu(this.b)}`}function Lu(){return`#${Vu(this.r)}${Vu(this.g)}${Vu(this.b)}${Vu((isNaN(this.opacity)?1:this.opacity)*255)}`}function Ru(){let e=zu(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Bu(this.r)}, ${Bu(this.g)}, ${Bu(this.b)}${e===1?`)`:`, ${e})`}`}function zu(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Bu(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Vu(e){return e=Bu(e),(e<16?`0`:``)+e.toString(16)}function Hu(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Gu(e,t,n,r)}function Uu(e){if(e instanceof Gu)return new Gu(e.h,e.s,e.l,e.opacity);if(e instanceof fu||(e=Au(e)),!e)return new Gu;if(e instanceof Gu)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n0&&c<1?0:o,new Gu(o,s,c,e.opacity)}function Wu(e,t,n,r){return arguments.length===1?Uu(e):new Gu(e,t,n,r??1)}function Gu(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}uu(Gu,Wu,du(fu,{brighter(e){return e=e==null?mu:mu**+e,new Gu(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?pu:pu**+e,new Gu(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new Fu(Ju(e>=240?e-240:e+120,i,r),Ju(e,i,r),Ju(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Gu(Ku(this.h),qu(this.s),qu(this.l),zu(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=zu(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Ku(this.h)}, ${qu(this.s)*100}%, ${qu(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Ku(e){return e=(e||0)%360,e<0?e+360:e}function qu(e){return Math.max(0,Math.min(1,e||0))}function Ju(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Yu=e=>()=>e;function Xu(e,t){return function(n){return e+n*t}}function Zu(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Qu(e){return(e=+e)==1?$u:function(t,n){return n-t?Zu(t,n,e):Yu(isNaN(t)?n:t)}}function $u(e,t){var n=t-e;return n?Xu(e,n):Yu(isNaN(e)?t:e)}var ed=(function e(t){var n=Qu(t);function r(e,t){var r=n((e=Pu(e)).r,(t=Pu(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=$u(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function td(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;in&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:ad(r,i)})),n=cd.lastIndex;return nt&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function bd(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i2?xd:bd,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||=s(e.map(r),t,n))(r(o(i)))}return d.invert=function(n){return o(i((l||=s(t,e.map(r),ad))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,gd),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=pd,u()},d.clamp=function(e){return arguments.length?(o=e?!0:B,u()):o!==B},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function wd(){return Cd()(B,B)}function Td(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function Ed(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Dd(e){return e=Ed(Math.abs(e)),e?e[1]:NaN}function Od(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function kd(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var Ad=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function jd(e){if(!(t=Ad.exec(e)))throw Error(`invalid format: `+e);var t;return new Md({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}jd.prototype=Md.prototype;function Md(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}Md.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?`0`:``)+(this.width===void 0?``:Math.max(1,this.width|0))+(this.comma?`,`:``)+(this.precision===void 0?``:`.`+Math.max(0,this.precision|0))+(this.trim?`~`:``)+this.type};function Nd(e){out:for(var t=e.length,n=1,r=-1,i;n0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var Pd;function Fd(e,t){var n=Ed(e,t);if(!n)return Pd=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(Pd=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+Ed(e,Math.max(0,t+a-1))[0]}function Id(e,t){var n=Ed(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var Ld={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:Td,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Id(e*100,t),r:Id,s:Fd,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Rd(e){return e}var zd=Array.prototype.map,Bd=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function Vd(e){var t=e.grouping===void 0||e.thousands===void 0?Rd:Od(zd.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?Rd:kd(zd.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=jd(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):Ld[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=Ld[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=Nd(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&Pd!==void 0?Bd[8+Pd/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++op||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(Dd(t)/3)))*3,r=10**-n,i=l((e=jd(e),e.type=`f`,e),{suffix:Bd[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var Hd,Ud,Wd;Gd({thousands:`,`,grouping:[3],currency:[`$`,``]});function Gd(e){return Hd=Vd(e),Ud=Hd.format,Wd=Hd.formatPrefix,Hd}function Kd(e){return Math.max(0,-Dd(Math.abs(e)))}function qd(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Dd(t)/3)))*3-Dd(Math.abs(e)))}function Jd(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Dd(t)-Dd(e))+1}function Yd(e,t,n,r){var i=Yl(e,t,n),a;switch(r=jd(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=qd(i,o))&&(r.precision=a),Wd(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=Jd(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=Kd(i))&&(r.precision=a-(r.type===`%`)*2);break}return Ud(r)}function Xd(e){var t=e.domain;return e.ticks=function(e){var n=t();return ql(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return Yd(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s0;){if(l=Jl(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function Zd(){var e=wd();return e.copy=function(){return Sd(e,Zd())},ru.apply(e,arguments),Xd(e)}function Qd(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,gd),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return Qd(e).unknown(t)},e=arguments.length?Array.from(e,gd):[0,1],Xd(n)}function $d(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return ae**+t}function sf(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function cf(e){return(t,n)=>-e(-t,n)}function lf(e){let t=e(ef,tf),n=t.domain,r=10,i,a;function o(){return i=sf(r),a=of(r),n()[0]<0?(i=cf(i),a=cf(a),e(nf,rf)):e(ef,tf),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s0){for(;l<=u;++l)for(d=1;ds)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(fs)break;m.push(f)}m.length*2{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=jd(n)).precision==null&&(n.trim=!0),n=Ud(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*rn($d(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function uf(){let e=lf(Cd()).domain([1,10]);return e.copy=()=>Sd(e,uf()).base(e.base()),ru.apply(e,arguments),e}function df(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function ff(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function pf(e){var t=1,n=e(df(t),ff(t));return n.constant=function(n){return arguments.length?e(df(t=+n),ff(t)):t},Xd(n)}function mf(){var e=pf(Cd());return e.copy=function(){return Sd(e,mf()).constant(e.constant())},ru.apply(e,arguments)}function hf(e){return function(t){return t<0?-((-t)**+e):t**+e}}function gf(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function _f(e){return e<0?-e*e:e*e}function vf(e){var t=e(B,B),n=1;function r(){return n===1?e(B,B):n===.5?e(gf,_f):e(hf(n),hf(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},Xd(t)}function yf(){var e=vf(Cd());return e.copy=function(){return Sd(e,yf()).exponent(e.exponent())},ru.apply(e,arguments),e}function bf(){return yf.apply(null,arguments).exponent(.5)}function xf(e){return Math.sign(e)*e*e}function Sf(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function Cf(){var e=wd(),t=[0,1],n=!1,r;function i(t){var i=Sf(e(t));return isNaN(i)?r:n?Math.round(i):i}return i.invert=function(t){return e.invert(xf(t))},i.domain=function(t){return arguments.length?(e.domain(t),i):e.domain()},i.range=function(n){return arguments.length?(e.range((t=Array.from(n,gd)).map(xf)),i):t.slice()},i.rangeRound=function(e){return i.range(e).round(!0)},i.round=function(e){return arguments.length?(n=!!e,i):n},i.clamp=function(t){return arguments.length?(e.clamp(t),i):e.clamp()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return Cf(e.domain(),t).round(n).clamp(e.clamp()).unknown(r)},ru.apply(i,arguments),Xd(i)}function wf(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r0?n[i-1]:e[0],i=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return Tf().domain([e,t]).range(i).unknown(a)},ru.apply(Xd(o),arguments)}function Ef(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[Fl(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return Ef().domain(e).range(t).unknown(n)},ru.apply(i,arguments)}var Df=new Date,Of=new Date;function V(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(sV(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(Df.setTime(+t),Of.setTime(+r),e(Df),e(Of),Math.floor(n(Df,Of))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}const kf=V(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);kf.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?V(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):kf),kf.range;const Af=1e3,jf=Af*60,Mf=jf*60,Nf=Mf*24,Pf=Nf*7,Ff=Nf*30,If=Nf*365,Lf=V(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*Af)},(e,t)=>(t-e)/Af,e=>e.getUTCSeconds());Lf.range;const Rf=V(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Af)},(e,t)=>{e.setTime(+e+t*jf)},(e,t)=>(t-e)/jf,e=>e.getMinutes());Rf.range;const zf=V(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*jf)},(e,t)=>(t-e)/jf,e=>e.getUTCMinutes());zf.range;const Bf=V(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Af-e.getMinutes()*jf)},(e,t)=>{e.setTime(+e+t*Mf)},(e,t)=>(t-e)/Mf,e=>e.getHours());Bf.range;const Vf=V(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*Mf)},(e,t)=>(t-e)/Mf,e=>e.getUTCHours());Vf.range;const Hf=V(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*jf)/Nf,e=>e.getDate()-1);Hf.range;const Uf=V(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Nf,e=>e.getUTCDate()-1);Uf.range;const Wf=V(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Nf,e=>Math.floor(e/Nf));Wf.range;function Gf(e){return V(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*jf)/Pf)}const Kf=Gf(0),qf=Gf(1),Jf=Gf(2),Yf=Gf(3),Xf=Gf(4),Zf=Gf(5),Qf=Gf(6);Kf.range,qf.range,Jf.range,Yf.range,Xf.range,Zf.range,Qf.range;function $f(e){return V(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/Pf)}const ep=$f(0),tp=$f(1),np=$f(2),rp=$f(3),ip=$f(4),ap=$f(5),op=$f(6);ep.range,tp.range,np.range,rp.range,ip.range,ap.range,op.range;const sp=V(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());sp.range;const cp=V(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());cp.range;const lp=V(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());lp.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:V(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),lp.range;const up=V(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());up.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:V(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),up.range;function dp(e,t,n,r,i,a){let o=[[Lf,1,Af],[Lf,5,5*Af],[Lf,15,15*Af],[Lf,30,30*Af],[a,1,jf],[a,5,5*jf],[a,15,15*jf],[a,30,30*jf],[i,1,Mf],[i,3,3*Mf],[i,6,6*Mf],[i,12,12*Mf],[r,1,Nf],[r,2,2*Nf],[n,1,Pf],[t,1,Ff],[t,3,3*Ff],[e,1,If]];function s(e,t,n){let r=te).right(o,i);if(a===o.length)return e.every(Yl(t/If,n/If,r));if(a===0)return kf.every(Math.max(Yl(t,n,r),1));let[s,c]=o[i/o[a-1][2]53)return null;`w`in r||(r.w=1),`Z`in r?(a=_p(vp(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?tp.ceil(a):tp(a),a=Uf.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=gp(vp(r.y,0,1)),o=a.getDay(),a=o>4||o===0?qf.ceil(a):qf(a),a=Hf.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:`W`in r?1:0),o=`Z`in r?_p(vp(r.y,0,1)).getUTCDay():gp(vp(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,_p(r)):gp(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in bp?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function O(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function k(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function A(e,n,r){return w(e,t,n,r)}function j(e,t,r){return w(e,n,t,r)}function M(e,t,n){return w(e,r,t,n)}function N(e){return o[e.getDay()]}function ee(e){return a[e.getDay()]}function te(e){return c[e.getMonth()]}function ne(e){return s[e.getMonth()]}function re(e){return i[+(e.getHours()>=12)]}function ie(e){return 1+~~(e.getMonth()/3)}function ae(e){return o[e.getUTCDay()]}function oe(e){return a[e.getUTCDay()]}function se(e){return c[e.getUTCMonth()]}function ce(e){return s[e.getUTCMonth()]}function le(e){return i[+(e.getUTCHours()>=12)]}function ue(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var bp={"-":``,_:` `,0:`0`},H=/^\s*\d+/,xp=/^%/,Sp=/[\\^$*+?|[\]().{}]/g;function U(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a[e.toLowerCase(),t]))}function Ep(e,t,n){var r=H.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Dp(e,t,n){var r=H.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Op(e,t,n){var r=H.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function kp(e,t,n){var r=H.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Ap(e,t,n){var r=H.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function jp(e,t,n){var r=H.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Mp(e,t,n){var r=H.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Np(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Pp(e,t,n){var r=H.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Fp(e,t,n){var r=H.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Ip(e,t,n){var r=H.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Lp(e,t,n){var r=H.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Rp(e,t,n){var r=H.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function zp(e,t,n){var r=H.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function Bp(e,t,n){var r=H.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Vp(e,t,n){var r=H.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Hp(e,t,n){var r=H.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Up(e,t,n){var r=xp.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Wp(e,t,n){var r=H.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Gp(e,t,n){var r=H.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function Kp(e,t){return U(e.getDate(),t,2)}function qp(e,t){return U(e.getHours(),t,2)}function Jp(e,t){return U(e.getHours()%12||12,t,2)}function Yp(e,t){return U(1+Hf.count(lp(e),e),t,3)}function Xp(e,t){return U(e.getMilliseconds(),t,3)}function Zp(e,t){return Xp(e,t)+`000`}function Qp(e,t){return U(e.getMonth()+1,t,2)}function $p(e,t){return U(e.getMinutes(),t,2)}function em(e,t){return U(e.getSeconds(),t,2)}function tm(e){var t=e.getDay();return t===0?7:t}function nm(e,t){return U(Kf.count(lp(e)-1,e),t,2)}function rm(e){var t=e.getDay();return t>=4||t===0?Xf(e):Xf.ceil(e)}function im(e,t){return e=rm(e),U(Xf.count(lp(e),e)+(lp(e).getDay()===4),t,2)}function am(e){return e.getDay()}function om(e,t){return U(qf.count(lp(e)-1,e),t,2)}function sm(e,t){return U(e.getFullYear()%100,t,2)}function cm(e,t){return e=rm(e),U(e.getFullYear()%100,t,2)}function lm(e,t){return U(e.getFullYear()%1e4,t,4)}function um(e,t){var n=e.getDay();return e=n>=4||n===0?Xf(e):Xf.ceil(e),U(e.getFullYear()%1e4,t,4)}function dm(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+U(t/60|0,`0`,2)+U(t%60,`0`,2)}function fm(e,t){return U(e.getUTCDate(),t,2)}function pm(e,t){return U(e.getUTCHours(),t,2)}function mm(e,t){return U(e.getUTCHours()%12||12,t,2)}function hm(e,t){return U(1+Uf.count(up(e),e),t,3)}function gm(e,t){return U(e.getUTCMilliseconds(),t,3)}function _m(e,t){return gm(e,t)+`000`}function vm(e,t){return U(e.getUTCMonth()+1,t,2)}function ym(e,t){return U(e.getUTCMinutes(),t,2)}function bm(e,t){return U(e.getUTCSeconds(),t,2)}function xm(e){var t=e.getUTCDay();return t===0?7:t}function Sm(e,t){return U(ep.count(up(e)-1,e),t,2)}function Cm(e){var t=e.getUTCDay();return t>=4||t===0?ip(e):ip.ceil(e)}function wm(e,t){return e=Cm(e),U(ip.count(up(e),e)+(up(e).getUTCDay()===4),t,2)}function Tm(e){return e.getUTCDay()}function Em(e,t){return U(tp.count(up(e)-1,e),t,2)}function Dm(e,t){return U(e.getUTCFullYear()%100,t,2)}function Om(e,t){return e=Cm(e),U(e.getUTCFullYear()%100,t,2)}function km(e,t){return U(e.getUTCFullYear()%1e4,t,4)}function Am(e,t){var n=e.getUTCDay();return e=n>=4||n===0?ip(e):ip.ceil(e),U(e.getUTCFullYear()%1e4,t,4)}function jm(){return`+0000`}function Mm(){return`%`}function Nm(e){return+e}function Pm(e){return Math.floor(e/1e3)}var Fm,Im,Lm;Rm({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function Rm(e){return Fm=yp(e),Im=Fm.format,Fm.parse,Lm=Fm.utcFormat,Fm.utcParse,Fm}function zm(e){return new Date(e)}function Bm(e){return e instanceof Date?+e:+new Date(+e)}function Vm(e,t,n,r,i,a,o,s,c,l){var u=wd(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)t(r/(e.length-1)))},n.quantiles=function(t){return Array.from({length:t+1},(n,r)=>eu(e,r/t))},n.copy=function(){return Zm(t).domain(e)},iu.apply(n,arguments)}function Qm(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=B,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*esu,scaleDiverging:()=>$m,scaleDivergingLog:()=>eh,scaleDivergingPow:()=>nh,scaleDivergingSqrt:()=>rh,scaleDivergingSymlog:()=>th,scaleIdentity:()=>Qd,scaleImplicit:()=>au,scaleLinear:()=>Zd,scaleLog:()=>uf,scaleOrdinal:()=>ou,scalePoint:()=>lu,scalePow:()=>yf,scaleQuantile:()=>wf,scaleQuantize:()=>Tf,scaleRadial:()=>Cf,scaleSequential:()=>Km,scaleSequentialLog:()=>qm,scaleSequentialPow:()=>Ym,scaleSequentialQuantile:()=>Zm,scaleSequentialSqrt:()=>Xm,scaleSequentialSymlog:()=>Jm,scaleSqrt:()=>bf,scaleSymlog:()=>mf,scaleThreshold:()=>Ef,scaleTime:()=>Hm,scaleUtc:()=>Um,tickFormat:()=>Yd},1),ah=a(((e,t)=>{var n=he();function r(e,t,r){for(var i=-1,a=e.length;++i{function n(e,t){return e>t}t.exports=n})),sh=a(((e,t)=>{var n=ah(),r=oh(),i=Fa();function a(e){return e&&e.length?n(e,i,r):void 0}t.exports=a})),ch=a(((e,t)=>{function n(e,t){return e{var n=ah(),r=ch(),i=Fa();function a(e){return e&&e.length?n(e,i,r):void 0}t.exports=a})),uh=a(((e,t)=>{var n=Ze(),r=za(),i=ko(),a=se();function o(e,t){return(a(e)?n:i)(e,r(t,3))}t.exports=o})),dh=a(((e,t)=>{var n=Co(),r=uh();function i(e,t){return n(r(e,t),1)}t.exports=i})),fh=a(((e,t)=>{var n=Ta();function r(e,t){return n(e,t)}t.exports=r})),ph=a(((e,t)=>{(function(e){var n=1e9,r={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:`2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286`},i=!0,a=`[DecimalError] `,o=a+`Invalid argument: `,s=a+`Exponent out of range: `,c=Math.floor,l=Math.pow,u=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,d,f=1e7,p=7,m=9007199254740991,h=c(m/p),g={};g.absoluteValue=g.abs=function(){var e=new this.constructor(this);return e.s&&=1,e},g.comparedTo=g.cmp=function(e){var t,n,r,i,a=this;if(e=new a.constructor(e),a.s!==e.s)return a.s||-e.s;if(a.e!==e.e)return a.e>e.e^a.s<0?1:-1;for(r=a.d.length,i=e.d.length,t=0,n=re.d[t]^a.s<0?1:-1;return r===i?0:r>i^a.s<0?1:-1},g.decimalPlaces=g.dp=function(){var e=this,t=e.d.length-1,n=(t-e.e)*p;if(t=e.d[t],t)for(;t%10==0;t/=10)n--;return n<0?0:n},g.dividedBy=g.div=function(e){return b(this,new this.constructor(e))},g.dividedToIntegerBy=g.idiv=function(e){var t=this,n=t.constructor;return D(b(t,new n(e),0,1),n.precision)},g.equals=g.eq=function(e){return!this.cmp(e)},g.exponent=function(){return S(this)},g.greaterThan=g.gt=function(e){return this.cmp(e)>0},g.greaterThanOrEqualTo=g.gte=function(e){return this.cmp(e)>=0},g.isInteger=g.isint=function(){return this.e>this.d.length-2},g.isNegative=g.isneg=function(){return this.s<0},g.isPositive=g.ispos=function(){return this.s>0},g.isZero=function(){return this.s===0},g.lessThan=g.lt=function(e){return this.cmp(e)<0},g.lessThanOrEqualTo=g.lte=function(e){return this.cmp(e)<1},g.logarithm=g.log=function(e){var t,n=this,r=n.constructor,o=r.precision,s=o+5;if(e===void 0)e=new r(10);else if(e=new r(e),e.s<1||e.eq(d))throw Error(a+`NaN`);if(n.s<1)throw Error(a+(n.s?`NaN`:`-Infinity`));return n.eq(d)?new r(0):(i=!1,t=b(T(n,s),T(e,s),s),i=!0,D(t,o))},g.minus=g.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?O(t,e):_(t,(e.s=-e.s,e))},g.modulo=g.mod=function(e){var t,n=this,r=n.constructor,o=r.precision;if(e=new r(e),!e.s)throw Error(a+`NaN`);return n.s?(i=!1,t=b(n,e,0,1).times(e),i=!0,n.minus(t)):D(new r(n),o)},g.naturalExponential=g.exp=function(){return x(this)},g.naturalLogarithm=g.ln=function(){return T(this)},g.negated=g.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e},g.plus=g.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?_(t,e):O(t,(e.s=-e.s,e))},g.precision=g.sd=function(e){var t,n,r,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(o+e);if(t=S(i)+1,r=i.d.length-1,n=r*p+1,r=i.d[r],r){for(;r%10==0;r/=10)n--;for(r=i.d[0];r>=10;r/=10)n++}return e&&t>n?t:n},g.squareRoot=g.sqrt=function(){var e,t,n,r,o,s,l,u=this,d=u.constructor;if(u.s<1){if(!u.s)return new d(0);throw Error(a+`NaN`)}for(e=S(u),i=!1,o=Math.sqrt(+u),o==0||o==1/0?(t=y(u.d),(t.length+e)%2==0&&(t+=`0`),o=Math.sqrt(t),e=c((e+1)/2)-(e<0||e%2),o==1/0?t=`5e`+e:(t=o.toExponential(),t=t.slice(0,t.indexOf(`e`)+1)+e),r=new d(t)):r=new d(o.toString()),n=d.precision,o=l=n+3;;)if(s=r,r=s.plus(b(u,s,l+2)).times(.5),y(s.d).slice(0,l)===(t=y(r.d)).slice(0,l)){if(t=t.slice(l-3,l+1),o==l&&t==`4999`){if(D(s,n+1,0),s.times(s).eq(u)){r=s;break}}else if(t!=`9999`)break;l+=4}return i=!0,D(r,n)},g.times=g.mul=function(e){var t,n,r,a,o,s,c,l,u,d=this,p=d.constructor,m=d.d,h=(e=new p(e)).d;if(!d.s||!e.s)return new p(0);for(e.s*=d.s,n=d.e+e.e,l=m.length,u=h.length,l=0;){for(t=0,a=l+r;a>r;)c=o[a]+h[r]*m[a-r-1]+t,o[a--]=c%f|0,t=c/f|0;o[a]=(o[a]+t)%f|0}for(;!o[--s];)o.pop();return t?++n:o.shift(),e.d=o,e.e=n,i?D(e,p.precision):e},g.toDecimalPlaces=g.todp=function(e,t){var r=this,i=r.constructor;return r=new i(r),e===void 0?r:(v(e,0,n),t===void 0?t=i.rounding:v(t,0,8),D(r,e+S(r)+1,t))},g.toExponential=function(e,t){var r,i=this,a=i.constructor;return e===void 0?r=k(i,!0):(v(e,0,n),t===void 0?t=a.rounding:v(t,0,8),i=D(new a(i),e+1,t),r=k(i,!0,e+1)),r},g.toFixed=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?k(a):(v(e,0,n),t===void 0?t=o.rounding:v(t,0,8),i=D(new o(a),e+S(a)+1,t),r=k(i.abs(),!1,e+S(i)+1),a.isneg()&&!a.isZero()?`-`+r:r)},g.toInteger=g.toint=function(){var e=this,t=e.constructor;return D(new t(e),S(e)+1,t.rounding)},g.toNumber=function(){return+this},g.toPower=g.pow=function(e){var t,n,r,o,s,l,u=this,f=u.constructor,h=12,g=+(e=new f(e));if(!e.s)return new f(d);if(u=new f(u),!u.s){if(e.s<1)throw Error(a+`Infinity`);return u}if(u.eq(d))return u;if(r=f.precision,e.eq(d))return D(u,r);if(t=e.e,n=e.d.length-1,l=t>=n,s=u.s,l){if((n=g<0?-g:g)<=m){for(o=new f(d),t=Math.ceil(r/p+4),i=!1;n%2&&(o=o.times(u),A(o.d,t)),n=c(n/2),n!==0;)u=u.times(u),A(u.d,t);return i=!0,e.s<0?new f(d).div(o):D(o,r)}}else if(s<0)throw Error(a+`NaN`);return s=s<0&&e.d[Math.max(t,n)]&1?-1:1,u.s=1,i=!1,o=e.times(T(u,r+h)),i=!0,o=x(o),o.s=s,o},g.toPrecision=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?(r=S(a),i=k(a,r<=o.toExpNeg||r>=o.toExpPos)):(v(e,1,n),t===void 0?t=o.rounding:v(t,0,8),a=D(new o(a),e,t),r=S(a),i=k(a,e<=r||r<=o.toExpNeg,e)),i},g.toSignificantDigits=g.tosd=function(e,t){var r=this,i=r.constructor;return e===void 0?(e=i.precision,t=i.rounding):(v(e,1,n),t===void 0?t=i.rounding:v(t,0,8)),D(new i(r),e,t)},g.toString=g.valueOf=g.val=g.toJSON=function(){var e=this,t=S(e),n=e.constructor;return k(e,t<=n.toExpNeg||t>=n.toExpPos)};function _(e,t){var n,r,a,o,s,c,l,u,d=e.constructor,m=d.precision;if(!e.s||!t.s)return t.s||(t=new d(e)),i?D(t,m):t;if(l=e.d,u=t.d,s=e.e,a=t.e,l=l.slice(),o=s-a,o){for(o<0?(r=l,o=-o,c=u.length):(r=u,a=s,c=l.length),s=Math.ceil(m/p),c=s>c?s+1:c+1,o>c&&(o=c,r.length=1),r.reverse();o--;)r.push(0);r.reverse()}for(c=l.length,o=u.length,c-o<0&&(o=c,r=u,u=l,l=r),n=0;o;)n=(l[--o]=l[o]+u[o]+n)/f|0,l[o]%=f;for(n&&(l.unshift(n),++a),c=l.length;l[--c]==0;)l.pop();return t.d=l,t.e=a,i?D(t,m):t}function v(e,t,n){if(e!==~~e||en)throw Error(o+e)}function y(e){var t,n,r,i=e.length-1,a=``,o=e[0];if(i>0){for(a+=o,t=1;tr?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function n(e,t,n){for(var r=0;n--;)e[n]-=r,r=e[n]1;)e.shift()}return function(r,i,o,s){var c,l,u,d,m,h,g,_,v,y,b,x,C,w,T,E,O,k,A=r.constructor,j=r.s==i.s?1:-1,M=r.d,N=i.d;if(!r.s)return new A(r);if(!i.s)throw Error(a+`Division by zero`);for(l=r.e-i.e,O=N.length,T=M.length,g=new A(j),_=g.d=[],u=0;N[u]==(M[u]||0);)++u;if(N[u]>(M[u]||0)&&--l,x=o==null?o=A.precision:s?o+(S(r)-S(i))+1:o,x<0)return new A(0);if(x=x/p+2|0,u=0,O==1)for(d=0,N=N[0],x++;(u1&&(N=e(N,d),M=e(M,d),O=N.length,T=M.length),w=O,v=M.slice(0,O),y=v.length;y=f/2&&++E;do d=0,c=t(N,v,O,y),c<0?(b=v[0],O!=y&&(b=b*f+(v[1]||0)),d=b/E|0,d>1?(d>=f&&(d=f-1),m=e(N,d),h=m.length,y=v.length,c=t(m,v,h,y),c==1&&(d--,n(m,O16)throw Error(s+S(e));if(!e.s)return new m(d);for(t==null?(i=!1,u=h):u=t,c=new m(.03125);e.abs().gte(.1);)e=e.times(c),p+=5;for(r=Math.log(l(2,p))/Math.LN10*2+5|0,u+=r,n=a=o=new m(d),m.precision=u;;){if(a=D(a.times(e),u),n=n.times(++f),c=o.plus(b(a,n,u)),y(c.d).slice(0,u)===y(o.d).slice(0,u)){for(;p--;)o=D(o.times(o),u);return m.precision=h,t==null?(i=!0,D(o,h)):o}o=c}}function S(e){for(var t=e.e*p,n=e.d[0];n>=10;n/=10)t++;return t}function C(e,t,n){if(t>e.LN10.sd())throw i=!0,n&&(e.precision=n),Error(a+`LN10 precision limit exceeded`);return D(new e(e.LN10),t)}function w(e){for(var t=``;e--;)t+=`0`;return t}function T(e,t){var n,r,o,s,c,l,u,f,p,m=1,h=10,g=e,_=g.d,v=g.constructor,x=v.precision;if(g.s<1)throw Error(a+(g.s?`NaN`:`-Infinity`));if(g.eq(d))return new v(0);if(t==null?(i=!1,f=x):f=t,g.eq(10))return t??(i=!0),C(v,f);if(f+=h,v.precision=f,n=y(_),r=n.charAt(0),s=S(g),Math.abs(s)<0x5543df729c000){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)g=g.times(e),n=y(g.d),r=n.charAt(0),m++;s=S(g),r>1?(g=new v(`0.`+n),s++):g=new v(r+`.`+n.slice(1))}else return u=C(v,f+2,x).times(s+``),g=T(new v(r+`.`+n.slice(1)),f-h).plus(u),v.precision=x,t==null?(i=!0,D(g,x)):g;for(l=c=g=b(g.minus(d),g.plus(d),f),p=D(g.times(g),f),o=3;;){if(c=D(c.times(p),f),u=l.plus(b(c,new v(o),f)),y(u.d).slice(0,f)===y(l.d).slice(0,f))return l=l.times(2),s!==0&&(l=l.plus(C(v,f+2,x).times(s+``))),l=b(l,new v(m),f),v.precision=x,t==null?(i=!0,D(l,x)):l;l=u,o+=2}}function E(e,t){var n,r,a;for((n=t.indexOf(`.`))>-1&&(t=t.replace(`.`,``)),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;)++r;for(a=t.length;t.charCodeAt(a-1)===48;)--a;if(t=t.slice(r,a),t){if(a-=r,n=n-r-1,e.e=c(n/p),e.d=[],r=(n+1)%p,n<0&&(r+=p),rh||e.e<-h))throw Error(s+n)}else e.s=0,e.e=0,e.d=[0];return e}function D(e,t,n){var r,a,o,u,d,m,g,_,v=e.d;for(u=1,o=v[0];o>=10;o/=10)u++;if(r=t-u,r<0)r+=p,a=t,g=v[_=0];else{if(_=Math.ceil((r+1)/p),o=v.length,_>=o)return e;for(g=o=v[_],u=1;o>=10;o/=10)u++;r%=p,a=r-p+u}if(n!==void 0&&(o=l(10,u-a-1),d=g/o%10|0,m=t<0||v[_+1]!==void 0||g%o,m=n<4?(d||m)&&(n==0||n==(e.s<0?3:2)):d>5||d==5&&(n==4||m||n==6&&(r>0?a>0?g/l(10,u-a):0:v[_-1])%10&1||n==(e.s<0?8:7))),t<1||!v[0])return m?(o=S(e),v.length=1,t=t-o-1,v[0]=l(10,(p-t%p)%p),e.e=c(-t/p)||0):(v.length=1,v[0]=e.e=e.s=0),e;if(r==0?(v.length=_,o=1,_--):(v.length=_+1,o=l(10,p-r),v[_]=a>0?(g/l(10,u-a)%l(10,a)|0)*o:0),m)for(;;)if(_==0){(v[0]+=o)==f&&(v[0]=1,++e.e);break}else{if(v[_]+=o,v[_]!=f)break;v[_--]=0,o=1}for(r=v.length;v[--r]===0;)v.pop();if(i&&(e.e>h||e.e<-h))throw Error(s+S(e));return e}function O(e,t){var n,r,a,o,s,c,l,u,d,m,h=e.constructor,g=h.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new h(e),i?D(t,g):t;if(l=e.d,m=t.d,r=t.e,u=e.e,l=l.slice(),s=u-r,s){for(d=s<0,d?(n=l,s=-s,c=m.length):(n=m,r=u,c=l.length),a=Math.max(Math.ceil(g/p),c)+2,s>a&&(s=a,n.length=1),n.reverse(),a=s;a--;)n.push(0);n.reverse()}else{for(a=l.length,c=m.length,d=a0;--a)l[c++]=0;for(a=m.length;a>s;){if(l[--a]0?a=a.charAt(0)+`.`+a.slice(1)+w(r):o>1&&(a=a.charAt(0)+`.`+a.slice(1)),a=a+(i<0?`e`:`e+`)+i):i<0?(a=`0.`+w(-i-1)+a,n&&(r=n-o)>0&&(a+=w(r))):i>=o?(a+=w(i+1-o),n&&(r=n-i-1)>0&&(a=a+`.`+w(r))):((r=i+1)0&&(i+1===o&&(a+=`.`),a+=w(r))),e.s<0?`-`+a:a}function A(e,t){if(e.length>t)return e.length=t,!0}function j(e){var t,n,r;function i(e){var t=this;if(!(t instanceof i))return new i(e);if(t.constructor=i,e instanceof i){t.s=e.s,t.e=e.e,t.d=(e=e.d)?e.slice():e;return}if(typeof e==`number`){if(e*0!=0)throw Error(o+e);if(e>0)t.s=1;else if(e<0)e=-e,t.s=-1;else{t.s=0,t.e=0,t.d=[0];return}if(e===~~e&&e<1e7){t.e=0,t.d=[e];return}return E(t,e.toString())}else if(typeof e!=`string`)throw Error(o+e);if(e.charCodeAt(0)===45?(e=e.slice(1),t.s=-1):t.s=1,u.test(e))E(t,e);else throw Error(o+e)}if(i.prototype=g,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=j,i.config=i.set=M,e===void 0&&(e={}),e)for(r=[`precision`,`rounding`,`toExpNeg`,`toExpPos`,`LN10`],t=0;t=s[t+1]&&i<=s[t+2])this[r]=i;else throw Error(o+r+`: `+i);if((i=e[r=`LN10`])!==void 0)if(i==Math.LN10)this[r]=new this(i);else throw Error(o+r+`: `+i);return this}r=j(r),r.default=r.Decimal=r,d=new r(1),typeof define==`function`&&define.amd?define(function(){return r}):t!==void 0&&t.exports?t.exports=r:(e||=typeof self<`u`&&self&&self.self==self?self:Function(`return this`)(),e.Decimal=r)})(e)}));function mh(e){return vh(e)||_h(e)||gh(e)||hh()}function hh(){throw TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function gh(e,t){if(e){if(typeof e==`string`)return yh(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return yh(e,t)}}function _h(e){if(typeof Symbol<`u`&&Symbol.iterator in Object(e))return Array.from(e)}function vh(e){if(Array.isArray(e))return yh(e)}function yh(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=t?n.apply(void 0,r):e(t-i,Ch(function(){var e=[...arguments],t=r.map(function(t){return Sh(t)?e.shift():t});return n.apply(void 0,mh(t).concat(e))}))})},Th=function(e){return wh(e.length,e)},Eh=function(e,t){for(var n=[],r=e;re.length)&&(t=e.length);for(var n=0,r=Array(t);n`u`||!(Symbol.iterator in Object(e)))){var n=[],r=!0,i=!1,a=void 0;try{for(var o=e[Symbol.iterator](),s;!(r=(s=o.next()).done)&&(n.push(s.value),!(t&&n.length===t));r=!0);}catch(e){i=!0,a=e}finally{try{!r&&o.return!=null&&o.return()}finally{if(i)throw a}}return n}}function Wh(e){if(Array.isArray(e))return e}function Gh(e){var t=zh(e,2),n=t[0],r=t[1],i=n,a=r;return n>r&&(i=r,a=n),[i,a]}function Kh(e,t,n){if(e.lte(0))return new W.default(0);var r=Ph.getDigitCount(e.toNumber()),i=new W.default(10).pow(r),a=e.div(i),o=r===1?.1:.05,s=new W.default(Math.ceil(a.div(o).toNumber())).add(n).mul(o).mul(i);return t?s:new W.default(Math.ceil(s))}function qh(e,t,n){var r=1,i=new W.default(e);if(!i.isint()&&n){var a=Math.abs(e);a<1?(r=new W.default(10).pow(Ph.getDigitCount(e)-1),i=new W.default(Math.floor(i.div(r).toNumber())).mul(r)):a>1&&(i=new W.default(Math.floor(e)))}else e===0?i=new W.default(Math.floor((t-1)/2)):n||(i=new W.default(Math.floor(e)));var o=Math.floor((t-1)/2);return Oh(Dh(function(e){return i.add(new W.default(e-o).mul(r)).toNumber()}),Eh)(0,t)}function Jh(e,t,n,r){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;if(!Number.isFinite((t-e)/(n-1)))return{step:new W.default(0),tickMin:new W.default(0),tickMax:new W.default(0)};var a=Kh(new W.default(t).sub(e).div(n-1),r,i),o;e<=0&&t>=0?o=new W.default(0):(o=new W.default(e).add(t).div(2),o=o.sub(new W.default(o).mod(a)));var s=Math.ceil(o.sub(e).div(a).toNumber()),c=Math.ceil(new W.default(t).sub(o).div(a).toNumber()),l=s+c+1;return l>n?Jh(e,t,n,r,i+1):(l0?c+(n-l):c,s=t>0?s:s+(n-l)),{step:a,tickMin:o.sub(new W.default(s).mul(a)),tickMax:o.add(new W.default(c).mul(a))})}function Yh(e){var t=zh(e,2),n=t[0],r=t[1],i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,o=Math.max(i,2),s=zh(Gh([n,r]),2),c=s[0],l=s[1];if(c===-1/0||l===1/0){var u=l===1/0?[c].concat(Fh(Eh(0,i-1).map(function(){return 1/0}))):[].concat(Fh(Eh(0,i-1).map(function(){return-1/0})),[l]);return n>r?kh(u):u}if(c===l)return qh(c,i,a);var d=Jh(c,l,o,a),f=d.step,p=d.tickMin,m=d.tickMax,h=Ph.rangeStep(p,m.add(new W.default(.1).mul(f)),f);return n>r?kh(h):h}function Xh(e,t){var n=zh(e,2),r=n[0],i=n[1],a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,o=zh(Gh([r,i]),2),s=o[0],c=o[1];if(s===-1/0||c===1/0)return[r,i];if(s===c)return[s];var l=Math.max(t,2),u=Kh(new W.default(c).sub(s).div(l-1),a,0),d=[].concat(Fh(Ph.rangeStep(new W.default(s),new W.default(c).sub(new W.default(.99).mul(u)),u)),[c]);return r>i?kh(d):d}var Zh=Ah(Yh),Qh=Ah(Xh),$h=!0,eg=`Invariant failed`;function tg(e,t){if(!e){if($h)throw Error(eg);var n=typeof t==`function`?t():t,r=n?`${eg}: ${n}`:eg;throw Error(r)}}var ng=[`offset`,`layout`,`width`,`dataKey`,`data`,`dataPointFormatter`,`xAxis`,`yAxis`];function rg(e){"@babel/helpers - typeof";return rg=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},rg(e)}function ig(){return ig=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function fg(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function pg(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function mg(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=Array(t);n1&&arguments[1]!==void 0?arguments[1]:[],n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,i=-1,a=(t==null?void 0:t.length)??0;if(a<=1)return 0;if(r&&r.axisType===`angleAxis`&&Math.abs(Math.abs(r.range[1]-r.range[0])-360)<=1e-6)for(var o=r.range,s=0;s0?n[s-1].coordinate:n[a-1].coordinate,l=n[s].coordinate,u=s>=a-1?n[0].coordinate:n[s+1].coordinate,d=void 0;if(mt(l-c)!==mt(u-l)){var f=[];if(mt(u-l)===mt(o[1]-o[0])){d=u;var p=l+o[1]-o[0];f[0]=Math.min(p,(p+c)/2),f[1]=Math.max(p,(p+c)/2)}else{d=c;var m=u+o[1]-o[0];f[0]=Math.min(l,(m+l)/2),f[1]=Math.max(l,(m+l)/2)}var h=[Math.min(l,(d+l)/2),Math.max(l,(d+l)/2)];if(e>h[0]&&e<=h[1]||e>=f[0]&&e<=f[1]){i=n[s].index;break}}else{var g=Math.min(c,u),_=Math.max(c,u);if(e>(g+l)/2&&e<=(_+l)/2){i=n[s].index;break}}}else for(var v=0;v0&&v(t[v].coordinate+t[v-1].coordinate)/2&&e<=(t[v].coordinate+t[v+1].coordinate)/2||v===a-1&&e>(t[v].coordinate+t[v-1].coordinate)/2){i=t[v].index;break}return i},a_=function(e){var t,n=e.type.displayName,r=(t=e.type)!=null&&t.defaultProps?G(G({},e.type.defaultProps),e.props):e.props,i=r.stroke,a=r.fill,o;switch(n){case`Line`:o=i;break;case`Area`:case`Radar`:o=i&&i!==`none`?i:a;break;default:o=a;break}return o},o_=function(e){var t=e.barSize,n=e.totalSize,r=e.stackGroups,i=r===void 0?{}:r;if(!i)return{};for(var a={},o=Object.keys(i),s=0,c=o.length;s=0});if(g&&g.length){var _=g[0].type.defaultProps,v=_===void 0?g[0].props:G(G({},_),g[0].props),y=v.barSize,b=v[h];a[b]||(a[b]=[]);var x=(0,Ig.default)(y)?t:y;a[b].push({item:g[0],stackList:g.slice(1),barSize:(0,Ig.default)(x)?void 0:vt(x,n,0)})}}return a},s_=function(e){var t=e.barGap,n=e.barCategoryGap,r=e.bandSize,i=e.sizeList,a=i===void 0?[]:i,o=e.maxBarSize,s=a.length;if(s<1)return null;var c=vt(t,r,0,!0),l,u=[];if(a[0].barSize===+a[0].barSize){var d=!1,f=r/s,p=a.reduce(function(e,t){return e+t.barSize||0},0);p+=(s-1)*c,p>=r&&(p-=(s-1)*c,c=0),p>=r&&f>0&&(d=!0,f*=.9,p=s*f);var m={offset:((r-p)/2>>0)-c,size:0};l=a.reduce(function(e,t){var n={item:t.item,position:{offset:m.offset+m.size+c,size:d?f:t.barSize}},r=[].concat(Kg(e),[n]);return m=r[r.length-1].position,t.stackList&&t.stackList.length&&t.stackList.forEach(function(e){r.push({item:e,position:m})}),r},u)}else{var h=vt(n,r,0,!0);r-2*h-(s-1)*c<=0&&(c=0);var g=(r-2*h-(s-1)*c)/s;g>1&&(g>>=0);var _=o===+o?Math.min(g,o):g;l=a.reduce(function(e,t,n){var r=[].concat(Kg(e),[{item:t.item,position:{offset:h+(g+c)*n+(g-_)/2,size:_}}]);return t.stackList&&t.stackList.length&&t.stackList.forEach(function(e){r.push({item:e,position:r[r.length-1].position})}),r},u)}return l},c_=function(e,t,n,r){var i=n.children,a=n.width,o=n.margin,s=Ng({children:i,legendWidth:a-(o.left||0)-(o.right||0)});if(s){var c=r||{},l=c.width,u=c.height,d=s.align,f=s.verticalAlign,p=s.layout;if((p===`vertical`||p===`horizontal`&&f===`middle`)&&d!==`center`&&F(e[d]))return G(G({},e),{},$g({},d,e[d]+(l||0)));if((p===`horizontal`||p===`vertical`&&d===`center`)&&f!==`middle`&&F(e[f]))return G(G({},e),{},$g({},f,e[f]+(u||0)))}return e},l_=function(e,t,n){return(0,Ig.default)(t)?!0:e===`horizontal`?t===`yAxis`:e===`vertical`||n===`x`?t===`xAxis`:n===`y`?t===`yAxis`:!0},u_=function(e,t,n,r,i){var a=t.props.children,o=Yt(a,Eg).filter(function(e){return l_(r,i,e.props.direction)});if(o&&o.length){var s=o.map(function(e){return e.props.dataKey});return e.reduce(function(e,t){var r=n_(t,n);if((0,Ig.default)(r))return e;var i=Array.isArray(r)?[(0,Fg.default)(r),(0,Pg.default)(r)]:[r,r],a=s.reduce(function(e,n){var r=n_(t,n,0),a=i[0]-Math.abs(Array.isArray(r)?r[0]:r),o=i[1]+Math.abs(Array.isArray(r)?r[1]:r);return[Math.min(a,e[0]),Math.max(o,e[1])]},[1/0,-1/0]);return[Math.min(a[0],e[0]),Math.max(a[1],e[1])]},[1/0,-1/0])}return null},d_=function(e,t,n,r,i){var a=t.map(function(t){return u_(e,t,n,i,r)}).filter(function(e){return!(0,Ig.default)(e)});return a&&a.length?a.reduce(function(e,t){return[Math.min(e[0],t[0]),Math.max(e[1],t[1])]},[1/0,-1/0]):null},f_=function(e,t,n,r,i){var a=t.map(function(t){var a=t.props.dataKey;return n===`number`&&a&&u_(e,t,a,r)||r_(e,a,n,i)});if(n===`number`)return a.reduce(function(e,t){return[Math.min(e[0],t[0]),Math.max(e[1],t[1])]},[1/0,-1/0]);var o={};return a.reduce(function(e,t){for(var n=0,r=t.length;n=2?mt(o[0]-o[1])*2*c:c,t&&(e.ticks||e.niceTicks)?(e.ticks||e.niceTicks).map(function(e){return{coordinate:r(i?i.indexOf(e):e)+c,value:e,offset:c}}).filter(function(e){return!(0,Vg.default)(e.coordinate)}):e.isCategorical&&e.categoricalDomain?e.categoricalDomain.map(function(e,t){return{coordinate:r(e)+c,value:e,index:t,offset:c}}):r.ticks&&!n?r.ticks(e.tickCount).map(function(e){return{coordinate:r(e)+c,value:e,offset:c}}):r.domain().map(function(e,t){return{coordinate:r(e)+c,value:i?i[e]:e,index:t,offset:c}})},h_=new WeakMap,g_=function(e,t){if(typeof t!=`function`)return e;h_.has(e)||h_.set(e,new WeakMap);var n=h_.get(e);if(n.has(t))return n.get(t);var r=function(){e.apply(void 0,arguments),t.apply(void 0,arguments)};return n.set(t,r),r},__=function(e,t,n){var r=e.scale,i=e.type,a=e.layout,o=e.axisType;if(r===`auto`)return a===`radial`&&o===`radiusAxis`?{scale:su(),realScaleType:`band`}:a===`radial`&&o===`angleAxis`?{scale:Zd(),realScaleType:`linear`}:i===`category`&&t&&(t.indexOf(`LineChart`)>=0||t.indexOf(`AreaChart`)>=0||t.indexOf(`ComposedChart`)>=0&&!n)?{scale:lu(),realScaleType:`point`}:i===`category`?{scale:su(),realScaleType:`band`}:{scale:Zd(),realScaleType:`linear`};if((0,Rg.default)(r)){var s=`scale${(0,Hg.default)(r)}`;return{scale:(ih[s]||lu)(),realScaleType:ih[s]?s:`point`}}return(0,Lg.default)(r)?{scale:r}:{scale:lu(),realScaleType:`point`}},v_=1e-4,y_=function(e){var t=e.domain();if(!(!t||t.length<=2)){var n=t.length,r=e.range(),i=Math.min(r[0],r[1])-v_,a=Math.max(r[0],r[1])+v_,o=e(t[0]),s=e(t[n-1]);(oa||sa)&&e.domain([t[0],t[n-1]])}},b_={sign:function(e){var t=e.length;if(!(t<=0))for(var n=0,r=e[0].length;n=0?(e[o][n][0]=i,e[o][n][1]=i+s,i=e[o][n][1]):(e[o][n][0]=a,e[o][n][1]=a+s,a=e[o][n][1])}},expand:Kr,none:Vr,silhouette:qr,wiggle:Jr,positive:function(e){var t=e.length;if(!(t<=0))for(var n=0,r=e[0].length;n=0?(e[a][n][0]=i,e[a][n][1]=i+o,i=e[a][n][1]):(e[a][n][0]=0,e[a][n][1]=0)}}},x_=function(e,t,n){var r=t.map(function(e){return e.props.dataKey}),i=b_[n];return Gr().keys(r).value(function(e,t){return+n_(e,t,0)}).order(Hr).offset(i)(e)},S_=function(e,t,n,r,i,a){if(!e)return null;var o=(a?t.reverse():t).reduce(function(e,t){var i,a=(i=t.type)!=null&&i.defaultProps?G(G({},t.type.defaultProps),t.props):t.props,o=a.stackId;if(a.hide)return e;var s=a[n],c=e[s]||{hasStack:!1,stackGroups:{}};if(I(o)){var l=c.stackGroups[o]||{numericAxisId:n,cateAxisId:r,items:[]};l.items.push(t),c.hasStack=!0,c.stackGroups[o]=l}else c.stackGroups[_t(`_stackId_`)]={numericAxisId:n,cateAxisId:r,items:[t]};return G(G({},e),{},$g({},s,c))},{});return Object.keys(o).reduce(function(t,a){var s=o[a];return s.hasStack&&(s.stackGroups=Object.keys(s.stackGroups).reduce(function(t,a){var o=s.stackGroups[a];return G(G({},t),{},$g({},a,{numericAxisId:n,cateAxisId:r,items:o.items,stackedData:x_(e,o.items,i)}))},{})),G(G({},t),{},$g({},a,s))},{})},C_=function(e,t){var n=t.realScaleType,r=t.type,i=t.tickCount,a=t.originalDomain,o=t.allowDecimals,s=n||t.scale;if(s!==`auto`&&s!==`linear`)return null;if(i&&r===`number`&&a&&(a[0]===`auto`||a[1]===`auto`)){var c=e.domain();if(!c.length)return null;var l=Zh(c,i,o);return e.domain([(0,Fg.default)(l),(0,Pg.default)(l)]),{niceTicks:l}}return i&&r===`number`?{niceTicks:Qh(e.domain(),i,o)}:null},w_=function(e,t){var n,r=((n=e.type)!=null&&n.defaultProps?G(G({},e.type.defaultProps),e.props):e.props).stackId;if(I(r)){var i=t[r];if(i){var a=i.items.indexOf(e);return a>=0?i.stackedData[a]:null}}return null},T_=function(e){return e.reduce(function(e,t){return[(0,Fg.default)(t.concat([e[0]]).filter(F)),(0,Pg.default)(t.concat([e[1]]).filter(F))]},[1/0,-1/0])},E_=function(e,t,n){return Object.keys(e).reduce(function(r,i){var a=e[i].stackedData.reduce(function(e,r){var i=T_(r.slice(t,n+1));return[Math.min(e[0],i[0]),Math.max(e[1],i[1])]},[1/0,-1/0]);return[Math.min(a[0],r[0]),Math.max(a[1],r[1])]},[1/0,-1/0]).map(function(e){return e===1/0||e===-1/0?0:e})},D_=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,O_=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,k_=function(e,t,n){if((0,Lg.default)(e))return e(t,n);if(!Array.isArray(e))return t;var r=[];if(F(e[0]))r[0]=n?e[0]:Math.min(e[0],t[0]);else if(D_.test(e[0])){var i=+D_.exec(e[0])[1];r[0]=t[0]-i}else (0,Lg.default)(e[0])?r[0]=e[0](t[0]):r[0]=t[0];if(F(e[1]))r[1]=n?e[1]:Math.max(e[1],t[1]);else if(O_.test(e[1])){var a=+O_.exec(e[1])[1];r[1]=t[1]+a}else (0,Lg.default)(e[1])?r[1]=e[1](t[1]):r[1]=t[1];return r},A_=function(e,t,n){if(e&&e.scale&&e.scale.bandwidth){var r=e.scale.bandwidth();if(!n||r>0)return r}if(e&&t&&t.length>=2){for(var i=(0,Wg.default)(t,function(e){return e.coordinate}),a=1/0,o=1,s=i.length;oe.length)&&(t=e.length);for(var n=0,r=Array(t);n2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0};return Math.min(Math.abs(e-(n.left||0)-(n.right||0)),Math.abs(t-(n.top||0)-(n.bottom||0)))/2},X_=function(e,t,n,r,i){var a=e.width,o=e.height,s=e.startAngle,c=e.endAngle,l=vt(e.cx,a,a/2),u=vt(e.cy,o,o/2),d=Y_(a,o,n),f=vt(e.innerRadius,d,0),p=vt(e.outerRadius,d,d*.8);return Object.keys(t).reduce(function(e,n){var a=t[n],o=a.domain,d=a.reversed,m;if((0,N_.default)(a.range))r===`angleAxis`?m=[s,c]:r===`radiusAxis`&&(m=[f,p]),d&&(m=[m[1],m[0]]);else{m=a.range;var h=V_(m,2);s=h[0],c=h[1]}var g=__(a,i),_=g.realScaleType,v=g.scale;v.domain(o).range(m),y_(v);var y=C_(v,L_(L_({},a),{},{realScaleType:_})),b=L_(L_(L_({},a),y),{},{range:m,radius:p,realScaleType:_,scale:v,cx:l,cy:u,innerRadius:f,outerRadius:p,startAngle:s,endAngle:c});return L_(L_({},e),{},R_({},n,b))},{})},Z_=function(e,t){var n=e.x,r=e.y,i=t.x,a=t.y;return Math.sqrt((n-i)**2+(r-a)**2)},Q_=function(e,t){var n=e.x,r=e.y,i=t.cx,a=t.cy,o=Z_({x:n,y:r},{x:i,y:a});if(o<=0)return{radius:o};var s=(n-i)/o,c=Math.acos(s);return r>a&&(c=2*Math.PI-c),{radius:o,angle:J_(c),angleInRadian:c}},$_=function(e){var t=e.startAngle,n=e.endAngle,r=Math.floor(t/360),i=Math.floor(n/360),a=Math.min(r,i);return{startAngle:t-a*360,endAngle:n-a*360}},ev=function(e,t){var n=t.startAngle,r=t.endAngle,i=Math.floor(n/360),a=Math.floor(r/360);return e+Math.min(i,a)*360},tv=function(e,t){var n=e.x,r=e.y,i=Q_({x:n,y:r},t),a=i.radius,o=i.angle,s=t.innerRadius,c=t.outerRadius;if(ac)return!1;if(a===0)return!0;var l=$_(t),u=l.startAngle,d=l.endAngle,f=o,p;if(u<=d){for(;f>d;)f-=360;for(;f=u&&f<=d}else{for(;f>u;)f-=360;for(;f=d&&f<=u}return p?L_(L_({},t),{},{radius:a,angle:ev(f,t)}):null},nv=function(e){return!(0,b.isValidElement)(e)&&!(0,P_.default)(e)&&typeof e!=`boolean`?e.className:``},rv=p(it()),iv=p(P()),av=p(_e());function ov(e){"@babel/helpers - typeof";return ov=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},ov(e)}var sv=[`offset`];function cv(e){return fv(e)||dv(e)||uv(e)||lv()}function lv(){throw TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function uv(e,t){if(e){if(typeof e==`string`)return pv(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return pv(e,t)}}function dv(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function fv(e){if(Array.isArray(e))return pv(e)}function pv(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function hv(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function gv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function q(e){for(var t=1;t=0?1:-1,y,x;r===`insideStart`?(y=f+v*a,x=h):r===`insideEnd`?(y=p-v*a,x=!h):r===`end`&&(y=p+v*a,x=h),x=_<=0?x:!x;var S=K(c,l,g,y),C=K(c,l,g,y+(x?1:-1)*359),w=`M${S.x},${S.y} + A${g},${g},0,1,${x?0:1}, + ${C.x},${C.y}`,T=(0,rv.default)(e.id)?_t(`recharts-radial-line-`):e.id;return b.createElement(`text`,bv({},n,{dominantBaseline:`central`,className:m(`recharts-radial-bar-label`,o)}),b.createElement(`defs`,null,b.createElement(`path`,{id:T,d:w})),b.createElement(`textPath`,{xlinkHref:`#${T}`},t))},wv=function(e){var t=e.viewBox,n=e.offset,r=e.position,i=t,a=i.cx,o=i.cy,s=i.innerRadius,c=i.outerRadius,l=(i.startAngle+i.endAngle)/2;if(r===`outside`){var u=K(a,o,c+n,l),d=u.x;return{x:d,y:u.y,textAnchor:d>=a?`start`:`end`,verticalAnchor:`middle`}}if(r===`center`)return{x:a,y:o,textAnchor:`middle`,verticalAnchor:`middle`};if(r===`centerTop`)return{x:a,y:o,textAnchor:`middle`,verticalAnchor:`start`};if(r===`centerBottom`)return{x:a,y:o,textAnchor:`middle`,verticalAnchor:`end`};var f=K(a,o,(s+c)/2,l);return{x:f.x,y:f.y,textAnchor:`middle`,verticalAnchor:`middle`}},Tv=function(e){var t=e.viewBox,n=e.parentViewBox,r=e.offset,i=e.position,a=t,o=a.x,s=a.y,c=a.width,l=a.height,u=l>=0?1:-1,d=u*r,f=u>0?`end`:`start`,p=u>0?`start`:`end`,m=c>=0?1:-1,h=m*r,g=m>0?`end`:`start`,_=m>0?`start`:`end`;if(i===`top`)return q(q({},{x:o+c/2,y:s-u*r,textAnchor:`middle`,verticalAnchor:f}),n?{height:Math.max(s-n.y,0),width:c}:{});if(i===`bottom`)return q(q({},{x:o+c/2,y:s+l+d,textAnchor:`middle`,verticalAnchor:p}),n?{height:Math.max(n.y+n.height-(s+l),0),width:c}:{});if(i===`left`){var v={x:o-h,y:s+l/2,textAnchor:g,verticalAnchor:`middle`};return q(q({},v),n?{width:Math.max(v.x-n.x,0),height:l}:{})}if(i===`right`){var y={x:o+c+h,y:s+l/2,textAnchor:_,verticalAnchor:`middle`};return q(q({},y),n?{width:Math.max(n.x+n.width-y.x,0),height:l}:{})}var b=n?{width:c,height:l}:{};return i===`insideLeft`?q({x:o+h,y:s+l/2,textAnchor:_,verticalAnchor:`middle`},b):i===`insideRight`?q({x:o+c-h,y:s+l/2,textAnchor:g,verticalAnchor:`middle`},b):i===`insideTop`?q({x:o+c/2,y:s+d,textAnchor:`middle`,verticalAnchor:p},b):i===`insideBottom`?q({x:o+c/2,y:s+l-d,textAnchor:`middle`,verticalAnchor:f},b):i===`insideTopLeft`?q({x:o+h,y:s+d,textAnchor:_,verticalAnchor:p},b):i===`insideTopRight`?q({x:o+c-h,y:s+d,textAnchor:g,verticalAnchor:p},b):i===`insideBottomLeft`?q({x:o+h,y:s+l-d,textAnchor:_,verticalAnchor:f},b):i===`insideBottomRight`?q({x:o+c-h,y:s+l-d,textAnchor:g,verticalAnchor:f},b):(0,av.default)(i)&&(F(i.x)||ht(i.x))&&(F(i.y)||ht(i.y))?q({x:o+vt(i.x,c),y:s+vt(i.y,l),textAnchor:`end`,verticalAnchor:`end`},b):q({x:o+c/2,y:s+l/2,textAnchor:`middle`,verticalAnchor:`middle`},b)},Ev=function(e){return`cx`in e&&F(e.cx)};function J(e){var t=e.offset,n=t===void 0?5:t,r=mv(e,sv),i=q({offset:n},r),a=i.viewBox,o=i.position,s=i.value,c=i.children,l=i.content,u=i.className,d=u===void 0?``:u,f=i.textBreakAll;if(!a||(0,rv.default)(s)&&(0,rv.default)(c)&&!(0,b.isValidElement)(l)&&!(0,iv.default)(l))return null;if((0,b.isValidElement)(l))return(0,b.cloneElement)(l,i);var p;if((0,iv.default)(l)){if(p=(0,b.createElement)(l,i),(0,b.isValidElement)(p))return p}else p=xv(i);var h=Ev(a),g=L(i,!0);if(h&&(o===`insideStart`||o===`insideEnd`||o===`end`))return Cv(i,p,g);var _=h?wv(i):Tv(i);return b.createElement(El,bv({className:m(`recharts-label`,d)},g,_,{breakAll:f}),p)}J.displayName=`Label`;var Dv=function(e){var t=e.cx,n=e.cy,r=e.angle,i=e.startAngle,a=e.endAngle,o=e.r,s=e.radius,c=e.innerRadius,l=e.outerRadius,u=e.x,d=e.y,f=e.top,p=e.left,m=e.width,h=e.height,g=e.clockWise,_=e.labelViewBox;if(_)return _;if(F(m)&&F(h)){if(F(u)&&F(d))return{x:u,y:d,width:m,height:h};if(F(f)&&F(p))return{x:f,y:p,width:m,height:h}}return F(u)&&F(d)?{x:u,y:d,width:0,height:0}:F(t)&&F(n)?{cx:t,cy:n,startAngle:i||r||0,endAngle:a||r||0,innerRadius:c||0,outerRadius:l||s||o||0,clockWise:g}:e.viewBox?e.viewBox:{}},Ov=function(e,t){return e?e===!0?b.createElement(J,{key:`label-implicit`,viewBox:t}):I(e)?b.createElement(J,{key:`label-implicit`,viewBox:t,value:e}):(0,b.isValidElement)(e)?e.type===J?(0,b.cloneElement)(e,{key:`label-implicit`,viewBox:t}):b.createElement(J,{key:`label-implicit`,content:e,viewBox:t}):(0,iv.default)(e)?b.createElement(J,{key:`label-implicit`,content:e,viewBox:t}):(0,av.default)(e)?b.createElement(J,bv({viewBox:t},e,{key:`label-implicit`})):null:null};J.parseViewBox=Dv,J.renderCallByParent=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!e||!e.children&&n&&!e.label)return null;var r=e.children,i=Dv(e),a=Yt(r,J).map(function(e,n){return(0,b.cloneElement)(e,{viewBox:t||i,key:`label-${n}`})});return n?[Ov(e.label,t||i)].concat(cv(a)):a};var kv=a(((e,t)=>{function n(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}t.exports=n})),Av=p(it()),jv=p(_e()),Mv=p(P()),Nv=p(kv());function Pv(e){"@babel/helpers - typeof";return Pv=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Pv(e)}var Fv=[`valueAccessor`],Iv=[`data`,`dataKey`,`clockWise`,`id`,`textBreakAll`];function Lv(e){return Vv(e)||Bv(e)||zv(e)||Rv()}function Rv(){throw TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function zv(e,t){if(e){if(typeof e==`string`)return Hv(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Hv(e,t)}}function Bv(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function Vv(e){if(Array.isArray(e))return Hv(e)}function Hv(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Xv(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}var Zv=function(e){return Array.isArray(e.value)?(0,Nv.default)(e.value):e.value};function Qv(e){var t=e.valueAccessor,n=t===void 0?Zv:t,r=Yv(e,Fv),i=r.data,a=r.dataKey,o=r.clockWise,s=r.id,c=r.textBreakAll,l=Yv(r,Iv);return!i||!i.length?null:b.createElement(R,{className:`recharts-label-list`},i.map(function(e,t){var r=(0,Av.default)(a)?n(e,t):n_(e&&e.payload,a),i=(0,Av.default)(s)?{}:{id:`${s}-${t}`};return b.createElement(J,Uv({},L(e,!0),l,i,{parentViewBox:e.parentViewBox,value:r,textBreakAll:c,viewBox:J.parseViewBox((0,Av.default)(o)?e:Gv(Gv({},e),{},{clockWise:o})),key:`label-${t}`,index:t}))}))}Qv.displayName=`LabelList`;function $v(e,t){return e?e===!0?b.createElement(Qv,{key:`labelList-implicit`,data:t}):b.isValidElement(e)||(0,Mv.default)(e)?b.createElement(Qv,{key:`labelList-implicit`,data:t,content:e}):(0,jv.default)(e)?b.createElement(Qv,Uv({data:t},e,{key:`labelList-implicit`})):null:null}function ey(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!e||!e.children&&n&&!e.label)return null;var r=e.children,i=Yt(r,Qv).map(function(e,n){return(0,b.cloneElement)(e,{data:t,key:`labelList-${n}`})});return n?[$v(e.label,t)].concat(Lv(i)):i}Qv.renderCallByParent=ey;function ty(e){"@babel/helpers - typeof";return ty=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},ty(e)}function ny(){return ny=Object.assign?Object.assign.bind():function(e){for(var t=1;t180)},${+(a>c)}, + ${u.x},${u.y} + `;if(r>0){var f=K(t,n,r,a),p=K(t,n,r,c);d+=`L ${p.x},${p.y} + A ${r},${r},0, + ${+(Math.abs(s)>180)},${+(a<=c)}, + ${f.x},${f.y} Z`}else d+=`L ${t},${n} Z`;return d},dy=function(e){var t=e.cx,n=e.cy,r=e.innerRadius,i=e.outerRadius,a=e.cornerRadius,o=e.forceCornerRadius,s=e.cornerIsExternal,c=e.startAngle,l=e.endAngle,u=mt(l-c),d=ly({cx:t,cy:n,radius:i,angle:c,sign:u,cornerRadius:a,cornerIsExternal:s}),f=d.circleTangency,p=d.lineTangency,m=d.theta,h=ly({cx:t,cy:n,radius:i,angle:l,sign:-u,cornerRadius:a,cornerIsExternal:s}),g=h.circleTangency,_=h.lineTangency,v=h.theta,y=s?Math.abs(c-l):Math.abs(c-l)-m-v;if(y<0)return o?`M ${p.x},${p.y} + a${a},${a},0,0,1,${a*2},0 + a${a},${a},0,0,1,${-a*2},0 + `:uy({cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:c,endAngle:l});var b=`M ${p.x},${p.y} + A${a},${a},0,0,${+(u<0)},${f.x},${f.y} + A${i},${i},0,${+(y>180)},${+(u<0)},${g.x},${g.y} + A${a},${a},0,0,${+(u<0)},${_.x},${_.y} + `;if(r>0){var x=ly({cx:t,cy:n,radius:r,angle:c,sign:u,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),S=x.circleTangency,C=x.lineTangency,w=x.theta,T=ly({cx:t,cy:n,radius:r,angle:l,sign:-u,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),E=T.circleTangency,D=T.lineTangency,O=T.theta,k=s?Math.abs(c-l):Math.abs(c-l)-w-O;if(k<0&&a===0)return`${b}L${t},${n}Z`;b+=`L${D.x},${D.y} + A${a},${a},0,0,${+(u<0)},${E.x},${E.y} + A${r},${r},0,${+(k>180)},${+(u>0)},${S.x},${S.y} + A${a},${a},0,0,${+(u<0)},${C.x},${C.y}Z`}else b+=`L${t},${n}Z`;return b},fy={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},py=function(e){var t=iy(iy({},fy),e),n=t.cx,r=t.cy,i=t.innerRadius,a=t.outerRadius,o=t.cornerRadius,s=t.forceCornerRadius,c=t.cornerIsExternal,l=t.startAngle,u=t.endAngle,d=t.className;if(a0&&Math.abs(l-u)<360?dy({cx:n,cy:r,innerRadius:i,outerRadius:a,cornerRadius:Math.min(h,p/2),forceCornerRadius:s,cornerIsExternal:c,startAngle:l,endAngle:u}):uy({cx:n,cy:r,innerRadius:i,outerRadius:a,startAngle:l,endAngle:u});return b.createElement(`path`,ny({},L(t,!0),{className:f,d:g,role:`img`}))},my=p(Tn()),hy=p(P());function gy(e){"@babel/helpers - typeof";return gy=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},gy(e)}function _y(){return _y=Object.assign?Object.assign.bind():function(e){for(var t=1;tMy.call(e,t));function Ry(e,t){return e===t||!e&&!t&&e!==e&&t!==t}var zy=`__v`,By=`__o`,Vy=`_owner`,Hy=64,{getOwnPropertyDescriptor:Uy,keys:Wy}=Object,{propertyIsEnumerable:Gy}=Object.prototype,Ky=Uy(Object.getPrototypeOf(Int8Array.prototype),Symbol.toStringTag).get;function qy(e,t){return e.byteLength===t.byteLength&&sb(new Uint8Array(e),new Uint8Array(t))}function Jy(e,t,n){let r=e.length;if(t.length!==r)return!1;for(;r-- >0;)if(!n.equals(e[r],t[r],r,r,e,t,n))return!1;return!0}function Yy(e,t){return e.byteLength===t.byteLength&&sb(new Uint8Array(e.buffer,e.byteOffset,e.byteLength),new Uint8Array(t.buffer,t.byteOffset,t.byteLength))}function Xy(e,t){return Ry(e.getTime(),t.getTime())}function Zy(e,t,n){if(e.name!==t.name||e.message!==t.message||e.stack!==t.stack)return!1;let r=e.cause,i=t.cause;if(r!==i&&!n.equals(r,i,`cause`,`cause`,e,t,n))return!1;let a=e.errors,o=t.errors;if(a!==o&&!n.equals(a,o,`errors`,`errors`,e,t,n))return!1;let s=Wy(e),c=Wy(t),l=s.length;if(!l&&!c.length)return!0;let u=0,d;for(;l-- >0;)if(d=s[l],!(d===`cause`||d===`errors`)){if(d!==c[l]&&!Gy.call(t,d)||!n.equals(e[d],t[d],d,d,e,t,n))return!1;++u}let f=c.length-u;return!f||f===(Gy.call(t,`cause`)?1:0)+(Gy.call(t,`errors`)?1:0)}function Qy(e,t){return e===t}function $y(e,t,n){return e.name===t.name&&e.message===t.message&&e.stack===t.stack&&rb(e,t,n)}function eb(e,t,n){let r=e.size;if(r!==t.size)return!1;if(!r)return!0;let i=Array(r),a=e.entries(),o,s,c=0;for(;(o=a.next())&&!o.done;){let r=t.entries(),a=!1,l=0;for(;(s=r.next())&&!s.done;){if(i[l]){l++;continue}let r=o.value,u=s.value;if(n.equals(r[0],u[0],c,l,e,t,n)&&n.equals(r[1],u[1],r[0],u[0],e,t,n)){a=i[l]=!0;break}l++}if(!a)return!1;c++}return!0}var tb=Ry;function nb(e,t,n){let r=Wy(e),i=Wy(t),a=r.length;if(i.length!==a)return!1;let o=a<=Hy,s;for(;a-- >0;)if(s=r[a],!db(e,t,s)&&(s!==i[a]&&!(o?i.includes(s):Gy.call(t,s))||!n.equals(e[s],t[s],s,s,e,t,n)))return!1;return!0}function rb(e,t,n){let r=Iy(e),i=r.length;if(Iy(t).length!==i)return!1;let a,o,s;for(;i-- >0;)if(a=r[i],!db(e,t,a)&&(!Ly(t,a)||!n.equals(e[a],t[a],a,a,e,t,n))||(o=Uy(e,a),s=Uy(t,a),(o||s)&&(!o||!s||o.configurable!==s.configurable||o.enumerable!==s.enumerable||o.writable!==s.writable)))return!1;return!0}function ib(e,t){return Ry(e.valueOf(),t.valueOf())}function ab(e,t){return e.source===t.source&&e.flags===t.flags}function ob(e,t,n){let r=e.size;if(r!==t.size)return!1;if(!r)return!0;let i=Array(r),a=e.values(),o,s;for(;(o=a.next())&&!o.done;){let r=t.values(),a=!1,c=0;for(;(s=r.next())&&!s.done;){if(!i[c]&&n.equals(o.value,s.value,o.value,s.value,e,t,n)){a=i[c]=!0;break}c++}if(!a)return!1}return!0}function sb(e,t){let n=e.length;if(t.length!==n||e.byteOffset!==t.byteOffset)return!1;let r=Ky.call(e);if(r===`Float64Array`||r===`Float32Array`||r===`Float16Array`){for(;n-- >0;)if(e[n]!==t[n]&&(e[n]===e[n]||t[n]===t[n]))return!1;return!0}for(;n-- >0;)if(e[n]!==t[n])return!1;return!0}function cb(e,t){return e.href===t.href?!0:e.protocol===t.protocol&&e.username===t.username&&e.password===t.password&&e.host===t.host&&e.pathname===t.pathname&&e.hash===t.hash&&lb(e.searchParams,t.searchParams)}function lb(e,t){let n=e.toString(),r=t.toString();return n===r||ub(n)===ub(r)}function ub(e){return e.split(`&`).sort().join(`&`)}function db(e,t,n){return(n===Vy||n===By||n===zy)&&!!(e.$$typeof||t.$$typeof)}var fb=`[object ArrayBuffer]`,pb=`[object Arguments]`,mb=`[object Boolean]`,hb=`[object DataView]`,gb=`[object Date]`,_b=`[object Error]`,vb=`[object Map]`,yb=`[object Number]`,bb=`[object Object]`,xb=`[object RegExp]`,Sb=`[object Set]`,Cb=`[object String]`,wb={"[object Int8Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Int16Array]":!0,"[object Uint16Array]":!0,"[object Int32Array]":!0,"[object Uint32Array]":!0,"[object Float16Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0,"[object BigInt64Array]":!0,"[object BigUint64Array]":!0},Tb=`[object URL]`,Eb=Object.prototype.toString;function Db({areArrayBuffersEqual:e,areArraysEqual:t,areDataViewsEqual:n,areDatesEqual:r,areErrorsEqual:i,areFunctionsEqual:a,areMapsEqual:o,areNumbersEqual:s,areObjectsEqual:c,arePrimitiveWrappersEqual:l,areRegExpsEqual:u,areSetsEqual:d,areTypedArraysEqual:f,areUrlsEqual:p,unknownTagComparators:m}){return function(h,g,_){if(h===g)return!0;if(h==null||g==null)return!1;let v=typeof h;if(v!==typeof g)return!1;if(v!==`object`)return v===`number`?s(h,g,_):v===`function`?a(h,g,_):!1;let y=h.constructor;if(y!==g.constructor)return!1;if(y===Object)return c(h,g,_);if(Array.isArray(h))return t(h,g,_);if(y===Date)return r(h,g,_);if(y===RegExp)return u(h,g,_);if(y===Map)return o(h,g,_);if(y===Set)return d(h,g,_);if(y==null)return c(h,g,_);let b=Eb.call(h);if(b===gb)return r(h,g,_);if(b===xb)return u(h,g,_);if(b===vb)return o(h,g,_);if(b===Sb)return d(h,g,_);if(b===bb)return typeof h.then!=`function`&&typeof g.then!=`function`&&c(h,g,_);if(b===Tb)return p(h,g,_);if(b===_b)return i(h,g,_);if(b===pb)return c(h,g,_);if(wb[b])return f(h,g,_);if(b===fb)return e(h,g,_);if(b===hb)return n(h,g,_);if(b===mb||b===yb||b===Cb)return l(h,g,_);if(m){let e=m[b];if(!e){let t=Fy(h);t&&(e=m[t])}if(e)return e(h,g,_)}return!1}}function Ob({circular:e,createCustomConfig:t,strict:n}){let r={areArrayBuffersEqual:qy,areArraysEqual:n?rb:Jy,areDataViewsEqual:Yy,areDatesEqual:Xy,areErrorsEqual:n?$y:Zy,areFunctionsEqual:Qy,areMapsEqual:n?Ny(eb,rb):eb,areNumbersEqual:tb,areObjectsEqual:n?rb:nb,arePrimitiveWrappersEqual:ib,areRegExpsEqual:ab,areSetsEqual:n?Ny(ob,rb):ob,areTypedArraysEqual:n?Ny(sb,rb):sb,areUrlsEqual:cb,unknownTagComparators:void 0};if(t&&(r=Object.assign({},r,t(r))),e){let e=Py(r.areArraysEqual),t=Py(r.areErrorsEqual),n=Py(r.areMapsEqual),i=Py(r.areObjectsEqual),a=Py(r.areSetsEqual);r=Object.assign({},r,{areArraysEqual:e,areErrorsEqual:t,areMapsEqual:n,areObjectsEqual:i,areSetsEqual:a})}return r}function kb(e){return function(t,n,r,i,a,o,s){return e(t,n,s)}}function Ab({circular:e,comparator:t,createState:n,equals:r,strict:i}){if(n)return function(a,o){let{cache:s=e?new WeakMap:void 0,meta:c}=n();return t(a,o,{cache:s,equals:r,meta:c,strict:i})};if(e)return function(e,n){return t(e,n,{cache:new WeakMap,equals:r,meta:void 0,strict:i})};let a={cache:void 0,equals:r,meta:void 0,strict:i};return function(e,n){return t(e,n,a)}}var jb=Mb();Mb({strict:!0}),Mb({circular:!0}),Mb({circular:!0,strict:!0}),Mb({createInternalComparator:()=>Ry}),Mb({strict:!0,createInternalComparator:()=>Ry}),Mb({circular:!0,createInternalComparator:()=>Ry}),Mb({circular:!0,createInternalComparator:()=>Ry,strict:!0});function Mb(e={}){let{circular:t=!1,createInternalComparator:n,createState:r,strict:i=!1}=e,a=Db(Ob(e));return Ab({circular:t,comparator:a,createState:r,equals:n?n(a):kb(a),strict:i})}function Nb(e){typeof requestAnimationFrame<`u`&&requestAnimationFrame(e)}function Pb(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=-1;requestAnimationFrame(function r(i){n<0&&(n=i),i-n>t?(e(i),n=-1):Nb(r)})}function Fb(e){"@babel/helpers - typeof";return Fb=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Fb(e)}function Ib(e){return Vb(e)||Bb(e)||Rb(e)||Lb()}function Lb(){throw TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Rb(e,t){if(e){if(typeof e==`string`)return zb(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return zb(e,t)}}function zb(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n=0&&e<=1}),`[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s`,e);var s=hx(t,r),c=hx(n,i),l=gx(t,r),u=function(e){return e>1?1:e<0?0:e},d=function(e){for(var t=e>1?1:e,n=t,r=0;r<8;++r){var i=s(n)-t,a=l(n);if(Math.abs(i-t)0&&arguments[0]!==void 0?arguments[0]:{},t=e.stiff,n=t===void 0?100:t,r=e.damping,i=r===void 0?8:r,a=e.dt,o=a===void 0?17:a,s=function(e,t,r){var a=r+(-(e-t)*n-r*i)*o/1e3,s=r*o/1e3+e;return Math.abs(s-t)e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Hx(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a=0)&&(n[i]=e[i]);return n}function Ux(e){return qx(e)||Kx(e)||Gx(e)||Wx()}function Wx(){throw TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Gx(e,t){if(e){if(typeof e==`string`)return Jx(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Jx(e,t)}}function Kx(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function qx(e){if(Array.isArray(e))return Jx(e)}function Jx(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function lS(e){return lS=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},lS(e)}var uS=function(e){rS(n,e);var t=aS(n);function n(e,r){var i;Qx(this,n),i=t.call(this,e,r);var a=i.props,o=a.isActive,s=a.attributeName,c=a.from,l=a.to,u=a.steps,d=a.children,f=a.duration;if(i.handleStyleChange=i.handleStyleChange.bind(sS(i)),i.changeStyle=i.changeStyle.bind(sS(i)),!o||f<=0)return i.state={style:{}},typeof d==`function`&&(i.state={style:l}),oS(i);if(u&&u.length)i.state={style:u[0].style};else if(c){if(typeof d==`function`)return i.state={style:c},oS(i);i.state={style:s?Zx({},s,c):c}}else i.state={style:{}};return i}return eS(n,[{key:`componentDidMount`,value:function(){var e=this.props,t=e.isActive,n=e.canBegin;this.mounted=!0,!(!t||!n)&&this.runAnimation(this.props)}},{key:`componentDidUpdate`,value:function(e){var t=this.props,n=t.isActive,r=t.canBegin,i=t.attributeName,a=t.shouldReAnimate,o=t.to,s=t.from,c=this.state.style;if(r){if(!n){var l={style:i?Zx({},i,o):o};this.state&&c&&(i&&c[i]!==o||!i&&c!==o)&&this.setState(l);return}if(!(jb(e.to,o)&&e.canBegin&&e.isActive)){var u=!e.canBegin||!e.isActive;this.manager&&this.manager.stop(),this.stopJSAnimation&&this.stopJSAnimation();var d=u||a?s:e.to;if(this.state&&c){var f={style:i?Zx({},i,d):d};(i&&c[i]!==d||!i&&c!==d)&&this.setState(f)}this.runAnimation(Xx(Xx({},this.props),{},{from:d,begin:0}))}}}},{key:`componentWillUnmount`,value:function(){this.mounted=!1;var e=this.props.onAnimationEnd;this.unSubscribe&&this.unSubscribe(),this.manager&&=(this.manager.stop(),null),this.stopJSAnimation&&this.stopJSAnimation(),e&&e()}},{key:`handleStyleChange`,value:function(e){this.changeStyle(e)}},{key:`changeStyle`,value:function(e){this.mounted&&this.setState({style:e})}},{key:`runJSAnimation`,value:function(e){var t=this,n=e.from,r=e.to,i=e.duration,a=e.easing,o=e.begin,s=e.onAnimationEnd,c=e.onAnimationStart,l=Rx(n,r,yx(a),i,this.changeStyle);this.manager.start([c,o,function(){t.stopJSAnimation=l()},i,s])}},{key:`runStepAnimation`,value:function(e){var t=this,n=e.steps,r=e.begin,i=e.onAnimationStart,a=n[0],o=a.style,s=a.duration,c=s===void 0?0:s;return this.manager.start([i].concat(Ux(n.reduce(function(e,r,i){if(i===0)return e;var a=r.duration,o=r.easing,s=o===void 0?`ease`:o,c=r.style,l=r.properties,u=r.onAnimationEnd,d=i>0?n[i-1]:r,f=l||Object.keys(c);if(typeof s==`function`||s===`spring`)return[].concat(Ux(e),[t.runJSAnimation.bind(t,{from:d.style,to:c,duration:a,easing:s}),a]);var p=$b(f,a,s),m=Xx(Xx(Xx({},d.style),c),{},{transition:p});return[].concat(Ux(e),[m,a,u]).filter(Xb)},[o,Math.max(c,r)])),[e.onAnimationEnd]))}},{key:`runAnimation`,value:function(e){this.manager||=Hb();var t=e.begin,n=e.duration,r=e.attributeName,i=e.to,a=e.easing,o=e.onAnimationStart,s=e.onAnimationEnd,c=e.steps,l=e.children,u=this.manager;if(this.unSubscribe=u.subscribe(this.handleStyleChange),typeof a==`function`||typeof l==`function`||a===`spring`){this.runJSAnimation(e);return}if(c.length>1){this.runStepAnimation(e);return}var d=r?Zx({},r,i):i,f=$b(Object.keys(d),n,a);u.start([o,t,Xx(Xx({},d),{},{transition:f}),n,s])}},{key:`render`,value:function(){var e=this.props,t=e.children;e.begin;var n=e.duration;e.attributeName,e.easing;var r=e.isActive;e.steps,e.from,e.to,e.canBegin,e.onAnimationEnd,e.shouldReAnimate,e.onAnimationReStart;var i=Vx(e,Bx),a=b.Children.count(t),o=this.state.style;if(typeof t==`function`)return t(o);if(!r||a===0||n<=0)return t;var s=function(e){var t=e.props,n=t.style,r=n===void 0?{}:n,a=t.className;return(0,b.cloneElement)(e,Xx(Xx({},i),{},{style:Xx(Xx({},r),o),className:a}))};return a===1?s(b.Children.only(t)):b.createElement(`div`,null,b.Children.map(t,function(e){return s(e)}))}}]),n}(b.PureComponent);uS.displayName=`Animate`,uS.defaultProps={begin:0,duration:1e3,from:``,to:``,attributeName:``,easing:`ease`,isActive:!0,canBegin:!0,steps:[],onAnimationEnd:function(){},onAnimationStart:function(){}},uS.propTypes={from:X.default.oneOfType([X.default.object,X.default.string]),to:X.default.oneOfType([X.default.object,X.default.string]),attributeName:X.default.string,duration:X.default.number,begin:X.default.number,easing:X.default.oneOfType([X.default.string,X.default.func]),steps:X.default.arrayOf(X.default.shape({duration:X.default.number.isRequired,style:X.default.object.isRequired,easing:X.default.oneOfType([X.default.oneOf([`ease`,`ease-in`,`ease-out`,`ease-in-out`,`linear`]),X.default.func]),properties:X.default.arrayOf(`string`),onAnimationEnd:X.default.func})),children:X.default.oneOfType([X.default.node,X.default.func]),isActive:X.default.bool,canBegin:X.default.bool,onAnimationEnd:X.default.func,shouldReAnimate:X.default.bool,onAnimationStart:X.default.func,onAnimationReStart:X.default.func};var dS=uS;function fS(e){"@babel/helpers - typeof";return fS=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},fS(e)}function pS(){return pS=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=0?1:-1,s=n>=0?1:-1,c=r>=0&&n>=0||r<0&&n<0?1:0,l;if(a>0&&i instanceof Array){for(var u=[0,0,0,0],d=0,f=4;da?a:i[d];l=`M${e},${t+o*u[0]}`,u[0]>0&&(l+=`A ${u[0]},${u[0]},0,0,${c},${e+s*u[0]},${t}`),l+=`L ${e+n-s*u[1]},${t}`,u[1]>0&&(l+=`A ${u[1]},${u[1]},0,0,${c}, + ${e+n},${t+o*u[1]}`),l+=`L ${e+n},${t+r-o*u[2]}`,u[2]>0&&(l+=`A ${u[2]},${u[2]},0,0,${c}, + ${e+n-s*u[2]},${t+r}`),l+=`L ${e+s*u[3]},${t+r}`,u[3]>0&&(l+=`A ${u[3]},${u[3]},0,0,${c}, + ${e},${t+r-o*u[3]}`),l+=`Z`}else if(a>0&&i===+i&&i>0){var p=Math.min(a,i);l=`M ${e},${t+o*p} + A ${p},${p},0,0,${c},${e+s*p},${t} + L ${e+n-s*p},${t} + A ${p},${p},0,0,${c},${e+n},${t+o*p} + L ${e+n},${t+r-o*p} + A ${p},${p},0,0,${c},${e+n-s*p},${t+r} + L ${e+s*p},${t+r} + A ${p},${p},0,0,${c},${e},${t+r-o*p} Z`}else l=`M ${e},${t} h ${n} v ${r} h ${-n} Z`;return l},ES=function(e,t){if(!e||!t)return!1;var n=e.x,r=e.y,i=t.x,a=t.y,o=t.width,s=t.height;if(Math.abs(o)>0&&Math.abs(s)>0){var c=Math.min(i,i+o),l=Math.max(i,i+o),u=Math.min(a,a+s),d=Math.max(a,a+s);return n>=c&&n<=l&&r>=u&&r<=d}return!1},DS={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:`ease`},OS=function(e){var t=xS(xS({},DS),e),n=(0,b.useRef)(),r=mS((0,b.useState)(-1),2),i=r[0],a=r[1];(0,b.useEffect)(function(){if(n.current&&n.current.getTotalLength)try{var e=n.current.getTotalLength();e&&a(e)}catch{}},[]);var o=t.x,s=t.y,c=t.width,l=t.height,u=t.radius,d=t.className,f=t.animationEasing,p=t.animationDuration,h=t.animationBegin,g=t.isAnimationActive,_=t.isUpdateAnimationActive;if(o!==+o||s!==+s||c!==+c||l!==+l||c===0||l===0)return null;var v=m(`recharts-rectangle`,d);return _?b.createElement(dS,{canBegin:i>0,from:{width:c,height:l,x:o,y:s},to:{width:c,height:l,x:o,y:s},duration:p,animationEasing:f,isActive:_},function(e){var r=e.width,a=e.height,o=e.x,s=e.y;return b.createElement(dS,{canBegin:i>0,from:`0px ${i===-1?1:i}px`,to:`${i}px 0px`,attributeName:`strokeDasharray`,begin:h,duration:p,isActive:g,easing:f},b.createElement(`path`,pS({},L(t,!0),{className:v,d:TS(o,s,r,a,u),ref:n})))}):b.createElement(`path`,pS({},L(t,!0),{className:v,d:TS(o,s,c,l,u)}))},kS=[`points`,`className`,`baseLinePoints`,`connectNulls`];function AS(){return AS=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function MS(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function NS(e){return LS(e)||IS(e)||FS(e)||PS()}function PS(){throw TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function FS(e,t){if(e){if(typeof e==`string`)return RS(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return RS(e,t)}}function IS(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function LS(e){if(Array.isArray(e))return RS(e)}function RS(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&arguments[0]!==void 0?arguments[0]:[],t=[[]];return e.forEach(function(e){zS(e)?t[t.length-1].push(e):t[t.length-1].length>0&&t.push([])}),zS(e[0])&&t[t.length-1].push(e[0]),t[t.length-1].length<=0&&(t=t.slice(0,-1)),t},VS=function(e,t){var n=BS(e);t&&(n=[n.reduce(function(e,t){return[].concat(NS(e),NS(t))},[])]);var r=n.map(function(e){return e.reduce(function(e,t,n){return`${e}${n===0?`M`:`L`}${t.x},${t.y}`},``)}).join(``);return n.length===1?`${r}Z`:r},HS=function(e,t,n){var r=VS(e,n);return`${r.slice(-1)===`Z`?r.slice(0,-1):r}L${VS(t.reverse(),n).slice(1)}`},US=function(e){var t=e.points,n=e.className,r=e.baseLinePoints,i=e.connectNulls,a=jS(e,kS);if(!t||!t.length)return null;var o=m(`recharts-polygon`,n);if(r&&r.length){var s=a.stroke&&a.stroke!==`none`,c=HS(t,r,i);return b.createElement(`g`,{className:o},b.createElement(`path`,AS({},L(a,!0),{fill:c.slice(-1)===`Z`?a.fill:`none`,stroke:`none`,d:c})),s?b.createElement(`path`,AS({},L(a,!0),{fill:`none`,d:VS(t,i)})):null,s?b.createElement(`path`,AS({},L(a,!0),{fill:`none`,d:VS(r,i)})):null)}var l=VS(t,i);return b.createElement(`path`,AS({},L(a,!0),{fill:l.slice(-1)===`Z`?a.fill:`none`,className:o,d:l}))};function WS(){return WS=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function tC(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}var nC=function(e,t,n,r,i,a){return`M${e},${i}v${r}M${a},${t}h${n}`},rC=function(e){var t=e.x,n=t===void 0?0:t,r=e.y,i=r===void 0?0:r,a=e.top,o=a===void 0?0:a,s=e.left,c=s===void 0?0:s,l=e.width,u=l===void 0?0:l,d=e.height,f=d===void 0?0:d,p=e.className,h=eC(e,qS),g=XS({x:n,y:i,top:o,left:c,width:u,height:f},h);return!F(n)||!F(i)||!F(u)||!F(f)||!F(o)||!F(c)?null:b.createElement(`path`,JS({},L(g,!0),{className:m(`recharts-cross`,p),d:nC(n,i,u,f,o,c)}))},iC=a(((e,t)=>{var n=ah(),r=oh(),i=za();function a(e,t){return e&&e.length?n(e,i(t,2),r):void 0}t.exports=a})),aC=a(((e,t)=>{var n=ah(),r=za(),i=ch();function a(e,t){return e&&e.length?n(e,r(t,2),i):void 0}t.exports=a})),oC=p(iC()),sC=p(aC()),cC=p(P()),lC=[`cx`,`cy`,`angle`,`ticks`,`axisLine`],uC=[`ticks`,`tick`,`angle`,`tickFormatter`,`stroke`];function dC(e){"@babel/helpers - typeof";return dC=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},dC(e)}function fC(){return fC=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function gC(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function _C(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function vC(e,t){for(var n=0;nXC?t===`outer`?`start`:`end`:n<-XC?t===`outer`?`end`:`start`:`middle`}},{key:`renderAxisLine`,value:function(){var e=this.props,t=e.cx,n=e.cy,r=e.radius,i=e.axisLine,a=e.axisLineType,o=FC(FC({},L(this.props,!1)),{},{fill:`none`},L(i,!1));if(a===`circle`)return b.createElement(GS,NC({className:`recharts-polar-angle-axis-line`},o,{cx:t,cy:n,r}));var s=this.props.ticks.map(function(e){return K(t,n,r,e.coordinate)});return b.createElement(US,NC({className:`recharts-polar-angle-axis-line`},o,{points:s}))}},{key:`renderTicks`,value:function(){var e=this,n=this.props,r=n.ticks,i=n.tick,a=n.tickLine,o=n.tickFormatter,s=n.stroke,c=L(this.props,!1),l=L(i,!1),u=FC(FC({},c),{},{fill:`none`},L(a,!1)),d=r.map(function(n,r){var d=e.getTickLineCoord(n),f=FC(FC(FC({textAnchor:e.getTickTextAnchor(n)},c),{},{stroke:`none`,fill:s},l),{},{index:r,payload:n,x:d.x2,y:d.y2});return b.createElement(R,NC({className:m(`recharts-polar-angle-axis-tick`,nv(i)),key:`tick-${n.coordinate}`},Nt(e.props,n,r)),a&&b.createElement(`line`,NC({className:`recharts-polar-angle-axis-tick-line`},u,d)),i&&t.renderTickItem(i,f,o?o(n.value,r):n.value))});return b.createElement(R,{className:`recharts-polar-angle-axis-ticks`},d)}},{key:`render`,value:function(){var e=this.props,t=e.ticks,n=e.radius,r=e.axisLine;return n<=0||!t||!t.length?null:b.createElement(R,{className:m(`recharts-polar-angle-axis`,this.props.className)},r&&this.renderAxisLine(),this.renderTicks())}}],[{key:`renderTickItem`,value:function(e,t,n){return b.isValidElement(e)?b.cloneElement(e,t):(0,jC.default)(e)?e(t):b.createElement(El,NC({},t,{className:`recharts-polar-angle-axis-tick-value`}),n)}}])}(b.PureComponent);KC(ZC,`displayName`,`PolarAngleAxis`),KC(ZC,`axisType`,`angleAxis`),KC(ZC,`defaultProps`,{type:`category`,angleAxisId:0,scale:`auto`,cx:0,cy:0,orientation:`outer`,axisLine:!0,tickLine:!0,tickSize:8,tick:!0,hide:!1,allowDuplicatedCategory:!0});var QC=a(((e,t)=>{t.exports=fa()(Object.getPrototypeOf,Object)})),$C=a(((e,t)=>{var n=pe(),r=QC(),i=me(),a=`[object Object]`,o=Function.prototype,s=Object.prototype,c=o.toString,l=s.hasOwnProperty,u=c.call(Object);function d(e){if(!i(e)||n(e)!=a)return!1;var t=r(e);if(t===null)return!0;var o=l.call(t,`constructor`)&&t.constructor;return typeof o==`function`&&o instanceof o&&c.call(o)==u}t.exports=d})),ew=a(((e,t)=>{var n=pe(),r=me(),i=`[object Boolean]`;function a(e){return e===!0||e===!1||r(e)&&n(e)==i}t.exports=a}));function tw(e){"@babel/helpers - typeof";return tw=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},tw(e)}function nw(){return nw=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n0,from:{upperWidth:0,lowerWidth:0,height:u,x:o,y:s},to:{upperWidth:c,lowerWidth:l,height:u,x:o,y:s},duration:p,animationEasing:f,isActive:g},function(e){var r=e.upperWidth,a=e.lowerWidth,o=e.height,s=e.x,c=e.y;return b.createElement(dS,{canBegin:i>0,from:`0px ${i===-1?1:i}px`,to:`${i}px 0px`,attributeName:`strokeDasharray`,begin:h,duration:p,easing:f},b.createElement(`path`,nw({},L(t,!0),{className:_,d:mw(s,c,r,a,o),ref:n})))}):b.createElement(`g`,null,b.createElement(`path`,nw({},L(t,!0),{className:_,d:mw(o,s,c,l,u)})))},_w=p(P()),vw=p($C()),yw=p(ew()),bw=p(fh()),xw=[`option`,`shapeType`,`propTransformer`,`activeClassName`,`isActive`];function Sw(e){"@babel/helpers - typeof";return Sw=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Sw(e)}function Cw(e,t){if(e==null)return{};var n=ww(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function ww(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function Tw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Ew(e){for(var t=1;t0?(0,Gw.default)(e,`paddingAngle`,0):0;if(n){var s=xt(n.endAngle-n.startAngle,e.endAngle-e.startAngle),c=Z(Z({},e),{},{startAngle:a+o,endAngle:a+s(r)+o});i.push(c),a=c.endAngle}else{var u=e.endAngle,d=e.startAngle,f=xt(0,u-d)(r),p=Z(Z({},e),{},{startAngle:a+o,endAngle:a+f+o});i.push(p),a=p.endAngle}}),b.createElement(R,null,e.renderSectorsStatically(i))})}},{key:`attachKeyboardHandlers`,value:function(e){var t=this;e.onkeydown=function(e){if(!e.altKey)switch(e.key){case`ArrowLeft`:var n=++t.state.sectorToFocus%t.sectorRefs.length;t.sectorRefs[n].focus(),t.setState({sectorToFocus:n});break;case`ArrowRight`:var r=--t.state.sectorToFocus<0?t.sectorRefs.length-1:t.state.sectorToFocus%t.sectorRefs.length;t.sectorRefs[r].focus(),t.setState({sectorToFocus:r});break;case`Escape`:t.sectorRefs[t.state.sectorToFocus].blur(),t.setState({sectorToFocus:0});break;default:}}}},{key:`renderSectors`,value:function(){var e=this.props,t=e.sectors,n=e.isAnimationActive,r=this.state.prevSectors;return n&&t&&t.length&&(!r||!(0,Kw.default)(r,t))?this.renderSectorsWithAnimation():this.renderSectorsStatically(t)}},{key:`componentDidMount`,value:function(){this.pieRef&&this.attachKeyboardHandlers(this.pieRef)}},{key:`render`,value:function(){var e=this,t=this.props,n=t.hide,r=t.sectors,i=t.className,a=t.label,o=t.cx,s=t.cy,c=t.innerRadius,l=t.outerRadius,u=t.isAnimationActive,d=this.state.isAnimationFinished;if(n||!r||!r.length||!F(o)||!F(s)||!F(c)||!F(l))return null;var f=m(`recharts-pie`,i);return b.createElement(R,{tabIndex:this.props.rootTabIndex,className:f,ref:function(t){e.pieRef=t}},this.renderSectors(),a&&this.renderLabels(r),J.renderCallByParent(this.props,null,!1),(!u||d)&&Qv.renderCallByParent(this.props,r,!1))}}],[{key:`getDerivedStateFromProps`,value:function(e,t){return t.prevIsAnimationActive===e.isAnimationActive?e.isAnimationActive&&e.animationId!==t.prevAnimationId?{prevAnimationId:e.animationId,curSectors:e.sectors,prevSectors:t.curSectors,isAnimationFinished:!0}:e.sectors===t.curSectors?null:{curSectors:e.sectors,isAnimationFinished:!0}:{prevIsAnimationActive:e.isAnimationActive,prevAnimationId:e.animationId,curSectors:e.sectors,prevSectors:[],isAnimationFinished:!0}}},{key:`getTextAnchor`,value:function(e,t){return e>t?`start`:e=360?v:v-1)*c,b=g-v*p-y,x=i.reduce(function(e,t){var n=n_(t,_,0);return e+(F(n)?n:0)},0),S;if(x>0){var C;S=i.map(function(e,t){var n=n_(e,_,0),r=n_(e,u,t),i=(F(n)?n:0)/x,s=t?C.endAngle+mt(h)*c*(n===0?0:1):o,l=s+mt(h)*((n===0?0:p)+i*b),d=(s+l)/2,g=(m.innerRadius+m.outerRadius)/2;return C=Z(Z(Z({percent:i,cornerRadius:a,name:r,tooltipPayload:[{name:r,value:n,payload:e,dataKey:_,type:f}],midAngle:d,middleRadius:g,tooltipPosition:K(m.cx,m.cy,g,d)},e),m),{},{value:n_(e,_),startAngle:s,endAngle:l,payload:e,paddingAngle:mt(h)*c}),C})}return Z(Z({},m),{},{sectors:S,data:i})});var pT=a(((e,t)=>{var n=Math.ceil,r=Math.max;function i(e,t,i,a){for(var o=-1,s=r(n((t-e)/(i||1)),0),c=Array(s);s--;)c[a?s:++o]=e,e+=i;return c}t.exports=i})),mT=a(((e,t)=>{var n=ic(),r=1/0,i=17976931348623157e292;function a(e){return e?(e=n(e),e===r||e===-r?(e<0?-1:1)*i:e===e?e:0):e===0?e:0}t.exports=a})),hT=a(((e,t)=>{var n=pT(),r=Ho(),i=mT();function a(e){return function(t,a,o){return o&&typeof o!=`number`&&r(t,a,o)&&(a=o=void 0),t=i(t),a===void 0?(a=t,t=0):a=i(a),o=o===void 0?t{t.exports=hT()()}));function _T(e){"@babel/helpers - typeof";return _T=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},_T(e)}function vT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function yT(e){for(var t=1;t0&&n.handleDrag(e.changedTouches[0])}),VT(n,`handleDragEnd`,function(){n.setState({isTravellerMoving:!1,isSlideMoving:!1},function(){var e=n.props,t=e.endIndex,r=e.onDragEnd,i=e.startIndex;r==null||r({endIndex:t,startIndex:i})}),n.detachDragEndListener()}),VT(n,`handleLeaveWrapper`,function(){(n.state.isTravellerMoving||n.state.isSlideMoving)&&(n.leaveTimer=window.setTimeout(n.handleDragEnd,n.props.leaveTimeOut))}),VT(n,`handleEnterSlideOrTraveller`,function(){n.setState({isTextActive:!0})}),VT(n,`handleLeaveSlideOrTraveller`,function(){n.setState({isTextActive:!1})}),VT(n,`handleSlideDragStart`,function(e){var t=GT(e)?e.changedTouches[0]:e;n.setState({isTravellerMoving:!1,isSlideMoving:!0,slideMoveStartX:t.pageX}),n.attachDragEndListener()}),n.travellerDragStartHandlers={startX:n.handleTravellerDragStart.bind(n,`startX`),endX:n.handleTravellerDragStart.bind(n,`endX`)},n.state={},n}return zT(t,e),NT(t,[{key:`componentWillUnmount`,value:function(){this.leaveTimer&&=(clearTimeout(this.leaveTimer),null),this.detachDragEndListener()}},{key:`getIndex`,value:function(e){var n=e.startX,r=e.endX,i=this.state.scaleValues,a=this.props,o=a.gap,s=a.data.length-1,c=Math.min(n,r),l=Math.max(n,r),u=t.getIndexInRange(i,c),d=t.getIndexInRange(i,l);return{startIndex:u-u%o,endIndex:d===s?s:d-d%o}}},{key:`getTextOfTick`,value:function(e){var t=this.props,n=t.data,r=t.tickFormatter,i=t.dataKey,a=n_(n[e],i,e);return(0,TT.default)(r)?r(a,e):a}},{key:`attachDragEndListener`,value:function(){window.addEventListener(`mouseup`,this.handleDragEnd,!0),window.addEventListener(`touchend`,this.handleDragEnd,!0),window.addEventListener(`mousemove`,this.handleDrag,!0)}},{key:`detachDragEndListener`,value:function(){window.removeEventListener(`mouseup`,this.handleDragEnd,!0),window.removeEventListener(`touchend`,this.handleDragEnd,!0),window.removeEventListener(`mousemove`,this.handleDrag,!0)}},{key:`handleSlideDrag`,value:function(e){var t=this.state,n=t.slideMoveStartX,r=t.startX,i=t.endX,a=this.props,o=a.x,s=a.width,c=a.travellerWidth,l=a.startIndex,u=a.endIndex,d=a.onChange,f=e.pageX-n;f>0?f=Math.min(f,o+s-c-i,o+s-c-r):f<0&&(f=Math.max(f,o-r,o-i));var p=this.getIndex({startX:r+f,endX:i+f});(p.startIndex!==l||p.endIndex!==u)&&d&&d(p),this.setState({startX:r+f,endX:i+f,slideMoveStartX:e.pageX})}},{key:`handleTravellerDragStart`,value:function(e,t){var n=GT(t)?t.changedTouches[0]:t;this.setState({isSlideMoving:!1,isTravellerMoving:!0,movingTravellerId:e,brushMoveStartX:n.pageX}),this.attachDragEndListener()}},{key:`handleTravellerMove`,value:function(e){var t=this.state,n=t.brushMoveStartX,r=t.movingTravellerId,i=t.endX,a=t.startX,o=this.state[r],s=this.props,c=s.x,l=s.width,u=s.travellerWidth,d=s.onChange,f=s.gap,p=s.data,m={startX:this.state.startX,endX:this.state.endX},h=e.pageX-n;h>0?h=Math.min(h,c+l-u-o):h<0&&(h=Math.max(h,c-o)),m[r]=o+h;var g=this.getIndex(m),_=g.startIndex,v=g.endIndex,y=function(){var e=p.length-1;return r===`startX`&&(i>a?_%f===0:v%f===0)||ia?v%f===0:_%f===0)||i>a&&v===e};this.setState(VT(VT({},r,o+h),`brushMoveStartX`,e.pageX),function(){d&&y()&&d(g)})}},{key:`handleTravellerMoveKeyboard`,value:function(e,t){var n=this,r=this.state,i=r.scaleValues,a=r.startX,o=r.endX,s=this.state[t],c=i.indexOf(s);if(c!==-1){var l=c+e;if(!(l===-1||l>=i.length)){var u=i[l];t===`startX`&&u>=o||t===`endX`&&u<=a||this.setState(VT({},t,u),function(){n.props.onChange(n.getIndex({startX:n.state.startX,endX:n.state.endX}))})}}}},{key:`renderBackground`,value:function(){var e=this.props,t=e.x,n=e.y,r=e.width,i=e.height,a=e.fill,o=e.stroke;return b.createElement(`rect`,{stroke:o,fill:a,x:t,y:n,width:r,height:i})}},{key:`renderPanorama`,value:function(){var e=this.props,t=e.x,n=e.y,r=e.width,i=e.height,a=e.data,o=e.children,s=e.padding,c=b.Children.only(o);return c?b.cloneElement(c,{x:t,y:n,width:r,height:i,margin:s,compact:!0,data:a}):null}},{key:`renderTravellerLayer`,value:function(e,n){var r,i,a=this,o=this.props,s=o.y,c=o.travellerWidth,l=o.height,u=o.traveller,d=o.ariaLabel,f=o.data,p=o.startIndex,m=o.endIndex,h=Math.max(e,this.props.x),g=AT(AT({},L(this.props,!1)),{},{x:h,y:s,width:c,height:l}),_=d||`Min value: ${(r=f[p])==null?void 0:r.name}, Max value: ${(i=f[m])==null?void 0:i.name}`;return b.createElement(R,{tabIndex:0,role:`slider`,"aria-label":_,"aria-valuenow":e,className:`recharts-brush-traveller`,onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.travellerDragStartHandlers[n],onTouchStart:this.travellerDragStartHandlers[n],onKeyDown:function(e){[`ArrowLeft`,`ArrowRight`].includes(e.key)&&(e.preventDefault(),e.stopPropagation(),a.handleTravellerMoveKeyboard(e.key===`ArrowRight`?1:-1,n))},onFocus:function(){a.setState({isTravellerFocused:!0})},onBlur:function(){a.setState({isTravellerFocused:!1})},style:{cursor:`col-resize`}},t.renderTraveller(u,g))}},{key:`renderSlide`,value:function(e,t){var n=this.props,r=n.y,i=n.height,a=n.stroke,o=n.travellerWidth,s=Math.min(e,t)+o,c=Math.max(Math.abs(t-e)-o,0);return b.createElement(`rect`,{className:`recharts-brush-slide`,onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.handleSlideDragStart,onTouchStart:this.handleSlideDragStart,style:{cursor:`move`},stroke:`none`,fill:a,fillOpacity:.2,x:s,y:r,width:c,height:i})}},{key:`renderText`,value:function(){var e=this.props,t=e.startIndex,n=e.endIndex,r=e.y,i=e.height,a=e.travellerWidth,o=e.stroke,s=this.state,c=s.startX,l=s.endX,u=5,d={pointerEvents:`none`,fill:o};return b.createElement(R,{className:`recharts-brush-texts`},b.createElement(El,OT({textAnchor:`end`,verticalAnchor:`middle`,x:Math.min(c,l)-u,y:r+i/2},d),this.getTextOfTick(t)),b.createElement(El,OT({textAnchor:`start`,verticalAnchor:`middle`,x:Math.max(c,l)+a+u,y:r+i/2},d),this.getTextOfTick(n)))}},{key:`render`,value:function(){var e=this.props,t=e.data,n=e.className,r=e.children,i=e.x,a=e.y,o=e.width,s=e.height,c=e.alwaysShowText,l=this.state,u=l.startX,d=l.endX,f=l.isTextActive,p=l.isSlideMoving,h=l.isTravellerMoving,g=l.isTravellerFocused;if(!t||!t.length||!F(i)||!F(a)||!F(o)||!F(s)||o<=0||s<=0)return null;var _=m(`recharts-brush`,n),v=b.Children.count(r)===1,y=wT(`userSelect`,`none`);return b.createElement(R,{className:_,onMouseLeave:this.handleLeaveWrapper,onTouchMove:this.handleTouchMove,style:y},this.renderBackground(),v&&this.renderPanorama(),this.renderSlide(u,d),this.renderTravellerLayer(u,`startX`),this.renderTravellerLayer(d,`endX`),(f||p||h||g||c)&&this.renderText())}}],[{key:`renderDefaultTraveller`,value:function(e){var t=e.x,n=e.y,r=e.width,i=e.height,a=e.stroke,o=Math.floor(n+i/2)-1;return b.createElement(b.Fragment,null,b.createElement(`rect`,{x:t,y:n,width:r,height:i,fill:a,stroke:`none`}),b.createElement(`line`,{x1:t+1,y1:o,x2:t+r-1,y2:o,fill:`none`,stroke:`#fff`}),b.createElement(`line`,{x1:t+1,y1:o+2,x2:t+r-1,y2:o+2,fill:`none`,stroke:`#fff`}))}},{key:`renderTraveller`,value:function(e,n){return b.isValidElement(e)?b.cloneElement(e,n):(0,TT.default)(e)?e(n):t.renderDefaultTraveller(n)}},{key:`getDerivedStateFromProps`,value:function(e,t){var n=e.data,r=e.width,i=e.x,a=e.travellerWidth,o=e.updateId,s=e.startIndex,c=e.endIndex;if(n!==t.prevData||o!==t.prevUpdateId)return AT({prevData:n,prevTravellerWidth:a,prevUpdateId:o,prevX:i,prevWidth:r},n&&n.length?WT({data:n,width:r,x:i,travellerWidth:a,startIndex:s,endIndex:c}):{scale:null,scaleValues:null});if(t.scale&&(r!==t.prevWidth||i!==t.prevX||a!==t.prevTravellerWidth)){t.scale.range([i,i+r-a]);var l=t.scale.domain().map(function(e){return t.scale(e)});return{prevData:n,prevTravellerWidth:a,prevUpdateId:o,prevX:i,prevWidth:r,startX:t.scale(e.startIndex),endX:t.scale(e.endIndex),scaleValues:l}}return null}},{key:`getIndexInRange`,value:function(e,t){for(var n=e.length,r=0,i=n-1;i-r>1;){var a=Math.floor((r+i)/2);e[a]>t?i=a:r=a}return t>=e[i]?i:r}}])}(b.PureComponent);VT(KT,`displayName`,`Brush`),VT(KT,`defaultProps`,{height:40,travellerWidth:5,gap:1,fill:`#fff`,stroke:`#666`,padding:{top:1,right:1,bottom:1,left:1},leaveTimeOut:1e3,alwaysShowText:!1});var qT=a(((e,t)=>{var n=Oo();function r(e,t){var r;return n(e,function(e,n,i){return r=t(e,n,i),!r}),!!r}t.exports=r})),JT=a(((e,t)=>{var n=Vi(),r=za(),i=qT(),a=se(),o=Ho();function s(e,t,s){var c=a(e)?n:i;return s&&o(e,t,s)&&(t=void 0),c(e,r(t,3))}t.exports=s})),YT=function(e,t){var n=e.alwaysShow,r=e.ifOverflow;return n&&(r=`extendDomain`),r===t},XT=a(((e,t)=>{var n=Lo();function r(e,t,r){t==`__proto__`&&n?n(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}t.exports=r})),ZT=a(((e,t)=>{var n=XT(),r=Eo(),i=za();function a(e,t){var a={};return t=i(t,3),r(e,function(e,r,i){n(a,r,t(e,r,i))}),a}t.exports=a})),QT=a(((e,t)=>{function n(e,t){for(var n=-1,r=e==null?0:e.length;++n{var n=Oo();function r(e,t){var r=!0;return n(e,function(e,n,i){return r=!!t(e,n,i),r}),r}t.exports=r})),eE=a(((e,t)=>{var n=QT(),r=$T(),i=za(),a=se(),o=Ho();function s(e,t,s){var c=a(e)?n:r;return s&&o(e,t,s)&&(t=void 0),c(e,i(t,3))}t.exports=s})),tE=p(ZT()),nE=p(eE());function rE(e){"@babel/helpers - typeof";return rE=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},rE(e)}function iE(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function aE(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{},n=t.bandAware,r=t.position;if(e!==void 0){if(r)switch(r){case`start`:return this.scale(e);case`middle`:var i=this.bandwidth?this.bandwidth()/2:0;return this.scale(e)+i;case`end`:var a=this.bandwidth?this.bandwidth():0;return this.scale(e)+a;default:return this.scale(e)}if(n){var o=this.bandwidth?this.bandwidth()/2:0;return this.scale(e)+o}return this.scale(e)}}},{key:`isInRange`,value:function(e){var t=this.range(),n=t[0],r=t[t.length-1];return n<=r?e>=n&&e<=r:e>=r&&e<=n}}],[{key:`create`,value:function(t){return new e(t)}}])}();lE(mE,`EPS`,1e-4);var hE=function(e){var t=Object.keys(e).reduce(function(t,n){return cE(cE({},t),{},lE({},n,mE.create(e[n])))},{});return cE(cE({},t),{},{apply:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.bandAware,i=n.position;return(0,tE.default)(e,function(e,n){return t[n].apply(e,{bandAware:r,position:i})})},isInRange:function(e){return(0,nE.default)(e,function(e,n){return t[n].isInRange(e)})}})},gE=a(((e,t)=>{var n=za(),r=ha(),i=ga();function a(e){return function(t,a,o){var s=Object(t);if(!r(t)){var c=n(a,3);t=i(t),a=function(e){return c(s[e],e,s)}}var l=e(t,a,o);return l>-1?s[c?t[l]:l]:void 0}}t.exports=a})),_E=a(((e,t)=>{var n=mT();function r(e){var t=n(e),r=t%1;return t===t?r?t-r:t:0}t.exports=r})),vE=a(((e,t)=>{var n=Ba(),r=za(),i=_E(),a=Math.max;function o(e,t,o){var s=e==null?0:e.length;if(!s)return-1;var c=o==null?0:i(o);return c<0&&(c=a(s+c,0)),n(e,r(t,3),c)}t.exports=o})),yE=a(((e,t)=>{t.exports=gE()(vE())})),bE=(0,p(Je()).default)(function(e){return{x:e.left,y:e.top,width:e.width,height:e.height}},function(e){return[`l`,e.left,`t`,e.top,`w`,e.width,`h`,e.height].join(``)});yE(),eE();var xE=(0,b.createContext)(void 0),SE=(0,b.createContext)(void 0),CE=(0,b.createContext)(void 0),wE=(0,b.createContext)({}),TE=(0,b.createContext)(void 0),EE=(0,b.createContext)(0),DE=(0,b.createContext)(0),OE=function(e){var t=e.state,n=t.xAxisMap,r=t.yAxisMap,i=t.offset,a=e.clipPathId,o=e.children,s=e.width,c=e.height,l=bE(i);return b.createElement(xE.Provider,{value:n},b.createElement(SE.Provider,{value:r},b.createElement(wE.Provider,{value:i},b.createElement(CE.Provider,{value:l},b.createElement(TE.Provider,{value:a},b.createElement(EE.Provider,{value:c},b.createElement(DE.Provider,{value:s},o)))))))},kE=function(){return(0,b.useContext)(TE)},AE=function(e){var t=(0,b.useContext)(xE);t??tg(!1);var n=t[e];return n??tg(!1),n},jE=function(e){var t=(0,b.useContext)(SE);t??tg(!1);var n=t[e];return n??tg(!1),n},ME=function(){return(0,b.useContext)(CE)},NE=p(P()),PE=p(JT());function FE(e){"@babel/helpers - typeof";return FE=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},FE(e)}function IE(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function LE(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n{var n=Object.prototype.hasOwnProperty,r=`~`;function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(r=!1));function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,n,i,o){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var s=new a(n,i||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],s]:e._events[c].push(s):(e._events[c]=s,e._eventsCount++),e}function s(e,t){--e._eventsCount===0?e._events=new i:delete e._events[t]}function c(){this._events=new i,this._eventsCount=0}c.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)n.call(t,i)&&e.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},c.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=Array(a);i=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function LO(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function RO(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function zO(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=Array(t);n0?a:e&&e.length&&F(r)&&F(i)?e.slice(r,i+1):[]};function uk(e){return e===`number`?[0,`auto`]:void 0}var dk=function(e,t,n,r){var i=e.graphicalItems,a=e.tooltipAxis,o=lk(t,e);return n<0||!i||!i.length||n>=o.length?null:i.reduce(function(i,s){var c=s.props.data??t;c&&e.dataStartIndex+e.dataEndIndex!==0&&e.dataEndIndex-e.dataStartIndex>=n&&(c=c.slice(e.dataStartIndex,e.dataEndIndex+1));var l=a.dataKey&&!a.allowDuplicatedCategory?St(c===void 0?o:c,a.dataKey,r):c&&c[n]||o[n];return l?[].concat(JO(i),[M_(s,l)]):i},[])},fk=function(e,t,n,r){var i=r||{x:e.chartX,y:e.chartY},a=sk(i,n),o=e.orderedTooltipTicks,s=e.tooltipAxis,c=e.tooltipTicks,l=i_(a,o,c,s);if(l>=0&&c){var u=c[l]&&c[l].value;return{activeTooltipIndex:l,activeLabel:u,activePayload:dk(e,t,l,u),activeCoordinate:ck(n,o,l,i)}}return null},pk=function(e,t){var n=t.axes,r=t.graphicalItems,i=t.axisType,a=t.axisIdKey,o=t.stackGroups,s=t.dataStartIndex,c=t.dataEndIndex,l=e.layout,u=e.children,d=e.stackOffset,f=p_(l,i);return n.reduce(function(t,n){var p=n.type.defaultProps===void 0?n.props:Q(Q({},n.type.defaultProps),n.props),m=p.type,h=p.dataKey,g=p.allowDataOverflow,_=p.allowDuplicatedCategory,v=p.scale,y=p.ticks,b=p.includeHidden,x=p[a];if(t[x])return t;var S=lk(e.data,{graphicalItems:r.filter(function(e){var t;return(a in e.props?e.props[a]:(t=e.type.defaultProps)==null?void 0:t[a])===x}),dataStartIndex:s,dataEndIndex:c}),C=S.length,w,T,E;dO(p.domain,g,m)&&(w=k_(p.domain,null,g),f&&(m===`number`||v!==`auto`)&&(E=r_(S,h,`category`)));var D=uk(m);if(!w||w.length===0){var O=p.domain??D;if(h){if(w=r_(S,h,m),m===`category`&&f){var k=bt(w);_&&k?(T=w,w=(0,wO.default)(0,C)):_||(w=j_(O,w,n).reduce(function(e,t){return e.indexOf(t)>=0?e:[].concat(JO(e),[t])},[]))}else if(m===`category`)w=_?w.filter(function(e){return e!==``&&!(0,SO.default)(e)}):j_(O,w,n).reduce(function(e,t){return e.indexOf(t)>=0||t===``||(0,SO.default)(t)?e:[].concat(JO(e),[t])},[]);else if(m===`number`){var A=d_(S,r.filter(function(e){var t,n,r=a in e.props?e.props[a]:(t=e.type.defaultProps)==null?void 0:t[a],i=`hide`in e.props?e.props.hide:(n=e.type.defaultProps)==null?void 0:n.hide;return r===x&&(b||!i)}),h,i,l);A&&(w=A)}f&&(m===`number`||v!==`auto`)&&(E=r_(S,h,`category`))}else w=f?(0,wO.default)(0,C):o&&o[x]&&o[x].hasStack&&m===`number`?d===`expand`?[0,1]:E_(o[x].stackGroups,s,c):f_(S,r.filter(function(e){var t=a in e.props?e.props[a]:e.type.defaultProps[a],n=`hide`in e.props?e.props.hide:e.type.defaultProps.hide;return t===x&&(b||!n)}),m,l,!0);if(m===`number`)w=eO(u,w,x,i,y),O&&(w=k_(O,w,g));else if(m===`category`&&O){var j=O;w.every(function(e){return j.indexOf(e)>=0})&&(w=j)}}return Q(Q({},t),{},$({},x,Q(Q({},p),{},{axisType:i,domain:w,categoricalDomain:E,duplicateDomain:T,originalDomain:p.domain??D,isCategorical:f,layout:l})))},{})},mk=function(e,t){var n=t.graphicalItems,r=t.Axis,i=t.axisType,a=t.axisIdKey,o=t.stackGroups,s=t.dataStartIndex,c=t.dataEndIndex,l=e.layout,u=e.children,d=lk(e.data,{graphicalItems:n,dataStartIndex:s,dataEndIndex:c}),f=d.length,p=p_(l,i),m=-1;return n.reduce(function(e,t){var h=(t.type.defaultProps===void 0?t.props:Q(Q({},t.type.defaultProps),t.props))[a],g=uk(`number`);if(!e[h]){m++;var _;return p?_=(0,wO.default)(0,f):o&&o[h]&&o[h].hasStack?(_=E_(o[h].stackGroups,s,c),_=eO(u,_,h,i)):(_=k_(g,f_(d,n.filter(function(e){var t,n,r=a in e.props?e.props[a]:(t=e.type.defaultProps)==null?void 0:t[a],i=`hide`in e.props?e.props.hide:(n=e.type.defaultProps)==null?void 0:n.hide;return r===h&&!i}),`number`,l),r.defaultProps.allowDataOverflow),_=eO(u,_,h,i)),Q(Q({},e),{},$({},h,Q(Q({axisType:i},r.defaultProps),{},{hide:!0,orientation:(0,TO.default)(rk,`${i}.${m%2}`,null),domain:_,originalDomain:g,isCategorical:p,layout:l})))}return e},{})},hk=function(e,t){var n=t.axisType,r=n===void 0?`xAxis`:n,i=t.AxisComp,a=t.graphicalItems,o=t.stackGroups,s=t.dataStartIndex,c=t.dataEndIndex,l=e.children,u=`${r}Id`,d=Yt(l,i),f={};return d&&d.length?f=pk(e,{axes:d,graphicalItems:a,axisType:r,axisIdKey:u,stackGroups:o,dataStartIndex:s,dataEndIndex:c}):a&&a.length&&(f=mk(e,{Axis:i,graphicalItems:a,axisType:r,axisIdKey:u,stackGroups:o,dataStartIndex:s,dataEndIndex:c})),f},gk=function(e){var t=yt(e),n=m_(t,!1,!0);return{tooltipTicks:n,orderedTooltipTicks:(0,EO.default)(n,function(e){return e.coordinate}),tooltipAxis:t,tooltipAxisBandSize:A_(t,n)}},_k=function(e){var t=e.children,n=e.defaultShowTooltip,r=Xt(t,KT),i=0,a=0;return e.data&&e.data.length!==0&&(a=e.data.length-1),r&&r.props&&(r.props.startIndex>=0&&(i=r.props.startIndex),r.props.endIndex>=0&&(a=r.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:i,dataEndIndex:a,activeTooltipIndex:-1,isTooltipActive:!!n}},vk=function(e){return!e||!e.length?!1:e.some(function(e){var t=Gt(e&&e.type);return t&&t.indexOf(`Bar`)>=0})},yk=function(e){return e===`horizontal`?{numericAxisName:`yAxis`,cateAxisName:`xAxis`}:e===`vertical`?{numericAxisName:`xAxis`,cateAxisName:`yAxis`}:e===`centric`?{numericAxisName:`radiusAxis`,cateAxisName:`angleAxis`}:{numericAxisName:`angleAxis`,cateAxisName:`radiusAxis`}},bk=function(e,t){var n=e.props,r=e.graphicalItems,i=e.xAxisMap,a=i===void 0?{}:i,o=e.yAxisMap,s=o===void 0?{}:o,c=n.width,l=n.height,u=n.children,d=n.margin||{},f=Xt(u,KT),p=Xt(u,xo),m=Object.keys(s).reduce(function(e,t){var n=s[t],r=n.orientation;return!n.mirror&&!n.hide?Q(Q({},e),{},$({},r,e[r]+n.width)):e},{left:d.left||0,right:d.right||0}),h=Q(Q({},Object.keys(a).reduce(function(e,t){var n=a[t],r=n.orientation;return!n.mirror&&!n.hide?Q(Q({},e),{},$({},r,(0,TO.default)(e,`${r}`)+n.height)):e},{top:d.top||0,bottom:d.bottom||0})),m),g=h.bottom;f&&(h.bottom+=f.props.height||KT.defaultProps.height),p&&t&&(h=c_(h,r,n,t));var _=c-h.left-h.right,v=l-h.top-h.bottom;return Q(Q({brushBottom:g},h),{},{width:Math.max(_,0),height:Math.max(v,0)})},xk=function(e,t){if(t===`xAxis`)return e[t].width;if(t===`yAxis`)return e[t].height},Sk=function(e){var t=e.chartName,n=e.GraphicalChild,r=e.defaultTooltipEventType,i=r===void 0?`axis`:r,a=e.validateTooltipEventTypes,o=a===void 0?[`axis`]:a,s=e.axisComponents,c=e.legendContent,l=e.formatAxisMap,u=e.defaultProps,d=function(e,t){var n=t.graphicalItems,r=t.stackGroups,i=t.offset,a=t.updateId,o=t.dataStartIndex,c=t.dataEndIndex,l=e.barSize,u=e.layout,d=e.barGap,f=e.barCategoryGap,p=e.maxBarSize,m=yk(u),h=m.numericAxisName,g=m.cateAxisName,_=vk(n),v=[];return n.forEach(function(n,m){var y=lk(e.data,{graphicalItems:[n],dataStartIndex:o,dataEndIndex:c}),b=n.type.defaultProps===void 0?n.props:Q(Q({},n.type.defaultProps),n.props),x=b.dataKey,S=b.maxBarSize,C=b[`${h}Id`],w=b[`${g}Id`],T=s.reduce(function(e,n){var r=t[`${n.axisType}Map`],i=b[`${n.axisType}Id`];!(r&&r[i]||n.axisType===`zAxis`)&&tg(!1);var a=r[i];return Q(Q({},e),{},$($({},n.axisType,a),`${n.axisType}Ticks`,m_(a)))},{}),E=T[g],D=T[`${g}Ticks`],O=r&&r[C]&&r[C].hasStack&&w_(n,r[C].stackGroups),k=Gt(n.type).indexOf(`Bar`)>=0,A=A_(E,D),j=[],M=_&&o_({barSize:l,stackGroups:r,totalSize:xk(T,g)});if(k){var N=(0,SO.default)(S)?p:S,ee=A_(E,D,!0)??N??0;j=s_({barGap:d,barCategoryGap:f,bandSize:ee===A?A:ee,sizeList:M[w],maxBarSize:N}),ee!==A&&(j=j.map(function(e){return Q(Q({},e),{},{position:Q(Q({},e.position),{},{offset:e.position.offset-ee/2})})}))}var te=n&&n.type&&n.type.getComposedData;te&&v.push({props:Q(Q({},te(Q(Q({},T),{},{displayedData:y,props:e,dataKey:x,item:n,bandSize:A,barPosition:j,offset:i,stackedData:O,layout:u,dataStartIndex:o,dataEndIndex:c}))),{},$($($({key:n.key||`item-${m}`},h,T[h]),g,T[g]),`animationId`,a)),childIndex:on(n,e.children),item:n})}),v},f=function(e,r){var i=e.props,a=e.dataStartIndex,o=e.dataEndIndex,c=e.updateId;if(!Zt({props:i}))return null;var u=i.children,f=i.layout,p=i.stackOffset,m=i.data,h=i.reverseStackOrder,g=yk(f),_=g.numericAxisName,v=g.cateAxisName,y=Yt(u,n),b=S_(m,y,`${_}Id`,`${v}Id`,p,h),x=s.reduce(function(e,t){var n=`${t.axisType}Map`;return Q(Q({},e),{},$({},n,hk(i,Q(Q({},t),{},{graphicalItems:y,stackGroups:t.axisType===_&&b,dataStartIndex:a,dataEndIndex:o}))))},{}),S=bk(Q(Q({},x),{},{props:i,graphicalItems:y}),r==null?void 0:r.legendBBox);Object.keys(x).forEach(function(e){x[e]=l(i,x[e],S,e.replace(`Map`,``),t)});var C=x[`${v}Map`],w=gk(C);return Q(Q({formattedGraphicalItems:d(i,Q(Q({},x),{},{dataStartIndex:a,dataEndIndex:o,updateId:c,graphicalItems:y,stackGroups:b,offset:S})),graphicalItems:y,offset:S,stackGroups:b},w),x)},p=function(e){function n(e){var r;return RO(this,n),r=VO(this,n,[e]),$(r,`eventEmitterSymbol`,Symbol(`rechartsEventEmitter`)),$(r,`accessibilityManager`,new uO),$(r,`handleLegendBBoxUpdate`,function(e){if(e){var t=r.state,n=t.dataStartIndex,i=t.dataEndIndex,a=t.updateId;r.setState(Q({legendBBox:e},f({props:r.props,dataStartIndex:n,dataEndIndex:i,updateId:a},Q(Q({},r.state),{},{legendBBox:e}))))}}),$(r,`handleReceiveSyncEvent`,function(e,t,n){if(r.props.syncId===e){if(n===r.eventEmitterSymbol&&typeof r.props.syncMethod!=`function`)return;r.applySyncEvent(t)}}),$(r,`handleBrushChange`,function(e){var t=e.startIndex,n=e.endIndex;if(t!==r.state.dataStartIndex||n!==r.state.dataEndIndex){var i=r.state.updateId;r.setState(function(){return Q({dataStartIndex:t,dataEndIndex:n},f({props:r.props,dataStartIndex:t,dataEndIndex:n,updateId:i},r.state))}),r.triggerSyncEvent({dataStartIndex:t,dataEndIndex:n})}}),$(r,`handleMouseEnter`,function(e){var t=r.getMouseInfo(e);if(t){var n=Q(Q({},t),{},{isTooltipActive:!0});r.setState(n),r.triggerSyncEvent(n);var i=r.props.onMouseEnter;(0,CO.default)(i)&&i(n,e)}}),$(r,`triggeredAfterMouseMove`,function(e){var t=r.getMouseInfo(e),n=t?Q(Q({},t),{},{isTooltipActive:!0}):{isTooltipActive:!1};r.setState(n),r.triggerSyncEvent(n);var i=r.props.onMouseMove;(0,CO.default)(i)&&i(n,e)}),$(r,`handleItemMouseEnter`,function(e){r.setState(function(){return{isTooltipActive:!0,activeItem:e,activePayload:e.tooltipPayload,activeCoordinate:e.tooltipPosition||{x:e.cx,y:e.cy}}})}),$(r,`handleItemMouseLeave`,function(){r.setState(function(){return{isTooltipActive:!1}})}),$(r,`handleMouseMove`,function(e){e.persist(),r.throttleTriggeredAfterMouseMove(e)}),$(r,`handleMouseLeave`,function(e){r.throttleTriggeredAfterMouseMove.cancel();var t={isTooltipActive:!1};r.setState(t),r.triggerSyncEvent(t);var n=r.props.onMouseLeave;(0,CO.default)(n)&&n(t,e)}),$(r,`handleOuterEvent`,function(e){var t=an(e),n=(0,TO.default)(r.props,`${t}`);t&&(0,CO.default)(n)&&n((/.*touch.*/i.test(t)?r.getMouseInfo(e.changedTouches[0]):r.getMouseInfo(e))??{},e)}),$(r,`handleClick`,function(e){var t=r.getMouseInfo(e);if(t){var n=Q(Q({},t),{},{isTooltipActive:!0});r.setState(n),r.triggerSyncEvent(n);var i=r.props.onClick;(0,CO.default)(i)&&i(n,e)}}),$(r,`handleMouseDown`,function(e){var t=r.props.onMouseDown;(0,CO.default)(t)&&t(r.getMouseInfo(e),e)}),$(r,`handleMouseUp`,function(e){var t=r.props.onMouseUp;(0,CO.default)(t)&&t(r.getMouseInfo(e),e)}),$(r,`handleTouchMove`,function(e){e.changedTouches!=null&&e.changedTouches.length>0&&r.throttleTriggeredAfterMouseMove(e.changedTouches[0])}),$(r,`handleTouchStart`,function(e){e.changedTouches!=null&&e.changedTouches.length>0&&r.handleMouseDown(e.changedTouches[0])}),$(r,`handleTouchEnd`,function(e){e.changedTouches!=null&&e.changedTouches.length>0&&r.handleMouseUp(e.changedTouches[0])}),$(r,`handleDoubleClick`,function(e){var t=r.props.onDoubleClick;(0,CO.default)(t)&&t(r.getMouseInfo(e),e)}),$(r,`handleContextMenu`,function(e){var t=r.props.onContextMenu;(0,CO.default)(t)&&t(r.getMouseInfo(e),e)}),$(r,`triggerSyncEvent`,function(e){r.props.syncId!==void 0&&tO.emit(nO,r.props.syncId,e,r.eventEmitterSymbol)}),$(r,`applySyncEvent`,function(e){var t=r.props,n=t.layout,i=t.syncMethod,a=r.state.updateId,o=e.dataStartIndex,s=e.dataEndIndex;if(e.dataStartIndex!==void 0||e.dataEndIndex!==void 0)r.setState(Q({dataStartIndex:o,dataEndIndex:s},f({props:r.props,dataStartIndex:o,dataEndIndex:s,updateId:a},r.state)));else if(e.activeTooltipIndex!==void 0){var c=e.chartX,l=e.chartY,u=e.activeTooltipIndex,d=r.state,p=d.offset,m=d.tooltipTicks;if(!p)return;if(typeof i==`function`)u=i(m,e);else if(i===`value`){u=-1;for(var h=0;h=0){var D,O;if(c.dataKey&&!c.allowDuplicatedCategory){var k=typeof c.dataKey==`function`?E:`payload.${c.dataKey.toString()}`;D=St(m,k,u),O=h&&g&&St(g,k,u)}else D=m==null?void 0:m[l],O=h&&g&&g[l];if(S||x){var A=e.props.activeIndex===void 0?l:e.props.activeIndex;return[(0,b.cloneElement)(e,Q(Q(Q({},i.props),w),{},{activeIndex:A})),null,null]}if(!(0,SO.default)(D))return[T].concat(JO(r.renderActivePoints({item:i,activePoint:D,basePoint:O,childIndex:l,isRange:h})))}else{var j=(r.getItemByXY(r.state.activeCoordinate)??{graphicalItem:T}).graphicalItem,M=j.item,N=M===void 0?e:M,ee=j.childIndex;return[(0,b.cloneElement)(N,Q(Q(Q({},i.props),w),{},{activeIndex:ee})),null,null]}return h?[T,null,null]:[T,null]}),$(r,`renderCustomized`,function(e,t,n){return(0,b.cloneElement)(e,Q(Q({key:`recharts-customized-${n}`},r.props),r.state))}),$(r,`renderMap`,{CartesianGrid:{handler:ok,once:!0},ReferenceArea:{handler:r.renderReferenceElement},ReferenceLine:{handler:ok},ReferenceDot:{handler:r.renderReferenceElement},XAxis:{handler:ok},YAxis:{handler:ok},Brush:{handler:r.renderBrush,once:!0},Bar:{handler:r.renderGraphicChild},Line:{handler:r.renderGraphicChild},Area:{handler:r.renderGraphicChild},Radar:{handler:r.renderGraphicChild},RadialBar:{handler:r.renderGraphicChild},Scatter:{handler:r.renderGraphicChild},Pie:{handler:r.renderGraphicChild},Funnel:{handler:r.renderGraphicChild},Tooltip:{handler:r.renderCursor,once:!0},PolarGrid:{handler:r.renderPolarGrid,once:!0},PolarAngleAxis:{handler:r.renderPolarAxis},PolarRadiusAxis:{handler:r.renderPolarAxis},Customized:{handler:r.renderCustomized}}),r.clipPathId=`${e.id??_t(`recharts`)}-clip`,r.throttleTriggeredAfterMouseMove=(0,DO.default)(r.triggeredAfterMouseMove,e.throttleDelay??1e3/60),r.state={},r}return KO(n,e),BO(n,[{key:`componentDidMount`,value:function(){this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:this.props.margin.left??0,top:this.props.margin.top??0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout}),this.displayDefaultTooltip()}},{key:`displayDefaultTooltip`,value:function(){var e=this.props,t=e.children,n=e.data,r=e.height,i=e.layout,a=Xt(t,ec);if(a){var o=a.props.defaultIndex;if(!(typeof o!=`number`||o<0||o>this.state.tooltipTicks.length-1)){var s=this.state.tooltipTicks[o]&&this.state.tooltipTicks[o].value,c=dk(this.state,n,o,s),l=this.state.tooltipTicks[o].coordinate,u=(this.state.offset.top+r)/2,d=i===`horizontal`?{x:l,y:u}:{y:l,x:u},f=this.state.formattedGraphicalItems.find(function(e){return e.item.type.name===`Scatter`});f&&(d=Q(Q({},d),f.props.points[o].tooltipPosition),c=f.props.points[o].tooltipPayload);var p={activeTooltipIndex:o,isTooltipActive:!0,activeLabel:s,activePayload:c,activeCoordinate:d};this.setState(p),this.renderCursor(a),this.accessibilityManager.setIndex(o)}}}},{key:`getSnapshotBeforeUpdate`,value:function(e,t){return this.props.accessibilityLayer?(this.state.tooltipTicks!==t.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==e.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==e.margin&&this.accessibilityManager.setDetails({offset:{left:this.props.margin.left??0,top:this.props.margin.top??0}}),null):null}},{key:`componentDidUpdate`,value:function(e){tn([Xt(e.children,ec)],[Xt(this.props.children,ec)])||this.displayDefaultTooltip()}},{key:`componentWillUnmount`,value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:`getTooltipEventType`,value:function(){var e=Xt(this.props.children,ec);if(e&&typeof e.props.shared==`boolean`){var t=e.props.shared?`axis`:`item`;return o.indexOf(t)>=0?t:i}return i}},{key:`getMouseInfo`,value:function(e){if(!this.container)return null;var t=this.container,n=t.getBoundingClientRect(),r=Pc(n),i={chartX:Math.round(e.pageX-r.left),chartY:Math.round(e.pageY-r.top)},a=n.width/t.offsetWidth||1,o=this.inRange(i.chartX,i.chartY,a);if(!o)return null;var s=this.state,c=s.xAxisMap,l=s.yAxisMap,u=this.getTooltipEventType(),d=fk(this.state,this.props.data,this.props.layout,o);if(u!==`axis`&&c&&l){var f=yt(c).scale,p=yt(l).scale,m=f&&f.invert?f.invert(i.chartX):null,h=p&&p.invert?p.invert(i.chartY):null;return Q(Q({},i),{},{xValue:m,yValue:h},d)}return d?Q(Q({},i),d):null}},{key:`inRange`,value:function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,r=this.props.layout,i=e/n,a=t/n;if(r===`horizontal`||r===`vertical`){var o=this.state.offset;return i>=o.left&&i<=o.left+o.width&&a>=o.top&&a<=o.top+o.height?{x:i,y:a}:null}var s=this.state,c=s.angleAxisMap,l=s.radiusAxisMap;if(c&&l){var u=yt(c);return tv({x:i,y:a},u)}return null}},{key:`parseEventsOfWrapper`,value:function(){var e=this.props.children,t=this.getTooltipEventType(),n=Xt(e,ec),r={};return n&&t===`axis`&&(r=n.props.trigger===`click`?{onClick:this.handleClick}:{onMouseEnter:this.handleMouseEnter,onDoubleClick:this.handleDoubleClick,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd,onContextMenu:this.handleContextMenu}),Q(Q({},jt(this.props,this.handleOuterEvent)),r)}},{key:`addListener`,value:function(){tO.on(nO,this.handleReceiveSyncEvent)}},{key:`removeListener`,value:function(){tO.removeListener(nO,this.handleReceiveSyncEvent)}},{key:`filterFormatItem`,value:function(e,t,n){for(var r=this.state.formattedGraphicalItems,i=0,a=r.length;i{let n=Object.entries(t).filter(([,e])=>e.theme||e.color);return n.length?(0,x.jsx)(`style`,{dangerouslySetInnerHTML:{__html:Object.entries(Ck).map(([t,r])=>` +${r} [data-chart=${e}] { +${n.map(([e,n])=>{var r;let i=((r=n.theme)==null?void 0:r[t])||n.color;return i?` --color-${e}: ${i};`:null}).join(` +`)} +} +`).join(` +`)}}):null},Dk=ec,Ok=10*1024*1024*1024;const kk=({active:e,payload:t})=>{var n;let r=e&&t&&t.length,i=t==null||(n=t[0])==null?void 0:n.payload;return(0,x.jsx)(`div`,{className:`p-4 bg-white/50 text-black backdrop-blur-lg rounded-md shadow z-10 border`,style:{visibility:r?`visible`:`hidden`,borderColor:r?i==null?void 0:i.fill:`transparent`},children:r&&(0,x.jsxs)(`div`,{className:`flex items-center gap-2 min-w-[150px]`,children:[(0,x.jsx)(`span`,{className:`flex-none inline-block h-4 w-4 rounded-full bg-black`,style:{backgroundColor:i.fill}}),(0,x.jsx)(`span`,{className:`flex-none`,children:i.name}),(0,x.jsx)(`span`,{className:`flex-auto text-right`,children:i.sizeString})]})})};function Ak({data:e,categorys:t}){let n=(0,b.useMemo)(()=>e!=null&&e.length?e.reduce((e,t)=>e+t.totalSize,0):0,[e]),r=(0,b.useMemo)(()=>Ok-n,[n]),i=(0,b.useMemo)(()=>e!=null&&e.length?[...e,{totalSize:r,fileCategory:`unused`,key:`unused`,name:`未使用`,color:`hsl(var(--muted))`,sizeString:h(r),proportion:Math.round(r/Ok*100),fill:`var(--color-unused)`}]:[],[e,r]),a=(0,b.useMemo)(()=>t!=null&&t.length?Object.fromEntries(t.map(e=>[e.key,{...e,label:e.name}])):{},[t]);return e!=null&&e.length?(0,x.jsxs)(`div`,{className:`w-full h-full`,children:[(0,x.jsx)(Tk,{config:a,className:`mx-auto aspect-square h-[240px]`,children:(0,x.jsxs)(Sk,{children:[(0,x.jsx)(Dk,{cursor:!1,content:kk}),(0,x.jsx)(fT,{data:i,dataKey:`totalSize`,nameKey:`fileCategory`,innerRadius:60,strokeWidth:4,activeIndex:0,activeShape:({outerRadius:e=0,...t})=>(0,x.jsx)(py,{...t,outerRadius:e+10}),children:(0,x.jsx)(J,{content:({viewBox:e})=>{if(e&&`cx`in e&&`cy`in e)return(0,x.jsxs)(`text`,{x:e.cx,y:e.cy,textAnchor:`middle`,dominantBaseline:`middle`,children:[(0,x.jsx)(`tspan`,{x:e.cx,y:e.cy,className:`fill-foreground text-2xl font-bold`,children:h(r)}),(0,x.jsx)(`tspan`,{x:e.cx,y:(e.cy||0)+24,className:`fill-muted-foreground`,children:`可用容量`})]})}})})]})}),(0,x.jsxs)(`div`,{className:`mt-5 flex items-center justify-center flex-col`,children:[(0,x.jsxs)(`div`,{className:`text-base text-black/60 flex items-center justify-between w-[240px] border-b border-b-solid border-b-black/10 py-4`,children:[(0,x.jsx)(`span`,{children:`总量:`}),(0,x.jsx)(`span`,{children:h(Ok)})]}),(0,x.jsxs)(`div`,{className:`text-base text-black/60 flex items-center justify-between w-[240px] border-b border-b-solid border-b-black/10 py-4`,children:[(0,x.jsx)(`span`,{children:`已用:`}),(0,x.jsx)(`span`,{children:h(n)})]}),(0,x.jsxs)(`div`,{className:`text-base text-black/60 flex items-center justify-between w-[240px] border-b border-b-solid border-b-black/10 py-4`,children:[(0,x.jsx)(`span`,{children:`可用:`}),(0,x.jsx)(`span`,{children:h(r)})]})]})]}):null}var jk=[{key:`image`,name:`图片`,icon:(0,x.jsx)(n,{}),color:`hsl(var(--chart-1))`},{key:`video`,name:`视频`,icon:(0,x.jsx)(t,{}),color:`hsl(var(--chart-2))`},{key:`document`,name:`文档`,icon:(0,x.jsx)(r,{}),color:`hsl(var(--chart-3))`},{key:`other`,name:`其他`,icon:(0,x.jsx)(i,{}),color:`hsl(var(--chart-4))`},{key:`unknown`,name:`未知`,icon:(0,x.jsx)(y,{}),color:`hsl(var(--chart-5))`},{key:`unused`,name:`未使用`,icon:(0,x.jsx)(v,{}),color:`hsl(var(--muted))`}],Mk=e=>jk.find(t=>t.key===e);function Nk(){let{data:t}=e({queryKey:[`getStatistics`],queryFn:()=>o().then(e=>{var t;return(t=e.data)==null?void 0:t.map(e=>({...e,fileCategory:e.fileCategory??`unknown`}))})}),n=(0,b.useMemo)(()=>{if(!(t!=null&&t.length))return[];let e=t.reduce((e,t)=>e+t.totalSize,0);return t.map(t=>({...t,...Mk(t.fileCategory),sizeString:h(t.totalSize),proportion:Math.round(t.totalSize/e*100),fill:`var(--color-${t.fileCategory})`}))},[t]);return(0,x.jsxs)(`div`,{className:`p-4 min-h-full`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`div`,{className:`text-lg`,children:`首页`}),(0,x.jsx)(`div`,{className:`text-xs text-black/50`,children:`欢迎回来!这里是您的个人控制台`})]}),(0,x.jsx)(`div`,{className:`mt-4 p-8 rounded-lg border border-solid border-black/10 bg-white`,children:n!=null&&n.length?(0,x.jsxs)(`div`,{className:`flex gap-2`,children:[(0,x.jsx)(`div`,{className:`flex-auto`,children:(0,x.jsx)(Ak,{categorys:jk,data:n})}),(0,x.jsxs)(`div`,{className:`flex-auto`,children:[(0,x.jsx)(`div`,{children:`文件类型分布`}),(0,x.jsx)(`div`,{className:`mt-4`,children:n==null?void 0:n.map(e=>(0,x.jsxs)(`div`,{className:`flex gap-4 items-center p-4 mb-2 last:mb-0 rounded-xl border border-solid border-black/10`,children:[(0,x.jsx)(`div`,{className:`flex-none w-10 h-10 rounded-full bg-primary flex items-center justify-center text-white`,children:e.icon}),(0,x.jsxs)(`div`,{className:`flex-auto min-w-[100px]`,children:[(0,x.jsx)(`div`,{children:e.name}),(0,x.jsxs)(`div`,{className:`text-xs text-black/50`,children:[e.sizeString,`(`,e.proportion,`%)`]})]}),(0,x.jsx)(`div`,{className:`flex-auto w-full`,children:(0,x.jsx)(oe,{value:e.proportion})})]},e.fileCategory))})]})]}):(0,x.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,x.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`暂无数据`})})})]})}export{Nk as component}; \ No newline at end of file diff --git a/deployment/iw/web/assets/admin-V-3Z0PVJ.js b/deployment/iw/web/assets/admin-V-3Z0PVJ.js new file mode 100644 index 0000000..511fcc6 --- /dev/null +++ b/deployment/iw/web/assets/admin-V-3Z0PVJ.js @@ -0,0 +1 @@ +import{qn as e,zn as t}from"./index-BaTxSAlR.js";var n=e(t());function r(){return(0,n.jsx)(`div`,{className:`p-4 min-h-full`,children:(0,n.jsx)(`div`,{className:`p-8 rounded-lg`,children:(0,n.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,n.jsx)(`div`,{className:`text-base text-black/50`,children:`欢迎使用管理后台`})})})})}export{r as component}; \ No newline at end of file diff --git a/deployment/iw/web/assets/app-layout-D4ftBqmM.js b/deployment/iw/web/assets/app-layout-D4ftBqmM.js new file mode 100644 index 0000000..7b3ae79 --- /dev/null +++ b/deployment/iw/web/assets/app-layout-D4ftBqmM.js @@ -0,0 +1 @@ +import{t as e}from"./useLocation-B-0SqFIj.js";import{n as t,r as n}from"./dist-7VFSSFOV.js";import{t as r}from"./chevron-left-r2x2HO6r.js";import{t as i}from"./x-CNIkD3YH.js";import{$ as a,A as o,C as s,E as c,G as l,Gt as u,H as d,K as f,Kt as p,L as m,N as h,O as g,Q as _,Qt as v,S as y,T as b,U as x,V as S,Vn as C,W as w,X as T,Y as E,Zt as D,_ as ee,_n as O,an as te,at as ne,b as k,d as re,en as A,et as ie,f as j,fn as M,g as ae,h as N,in as oe,it as P,j as F,k as I,l as se,ln as ce,m as L,nn as le,on as ue,ot as de,p as fe,pn as pe,q as me,qn as he,r as ge,s as _e,sn as R,tt as ve,u as ye,v as be,w as xe,x as Se,yn as Ce,zn as we}from"./index-BaTxSAlR.js";import{a as Te,c as Ee,d as De,f as Oe,l as ke,m as Ae,n as je,o as Me,p as Ne,r as Pe,s as Fe,t as Ie,u as Le}from"./dialog-CnxDxMp1.js";import{n as Re,t as ze}from"./dist-CpxP8T7M.js";import{n as Be,r as Ve,t as He}from"./dist-AWHq1sQs.js";var Ue=M(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),We=M(`monitor-cog`,[[`path`,{d:`M12 17v4`,key:`1riwvh`}],[`path`,{d:`m14.305 7.53.923-.382`,key:`1mlnsw`}],[`path`,{d:`m15.228 4.852-.923-.383`,key:`82mpwg`}],[`path`,{d:`m16.852 3.228-.383-.924`,key:`ln4sir`}],[`path`,{d:`m16.852 8.772-.383.923`,key:`1dejw0`}],[`path`,{d:`m19.148 3.228.383-.924`,key:`192kgf`}],[`path`,{d:`m19.53 9.696-.382-.924`,key:`fiavlr`}],[`path`,{d:`m20.772 4.852.924-.383`,key:`1j8mgp`}],[`path`,{d:`m20.772 7.148.924.383`,key:`zix9be`}],[`path`,{d:`M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7`,key:`1tnzv8`}],[`path`,{d:`M8 21h8`,key:`1ev6f3`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}]]),Ge=M(`panel-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]]),Ke=M(`user-cog`,[[`path`,{d:`M10 15H6a4 4 0 0 0-4 4v2`,key:`1nfge6`}],[`path`,{d:`m14.305 16.53.923-.382`,key:`1itpsq`}],[`path`,{d:`m15.228 13.852-.923-.383`,key:`eplpkm`}],[`path`,{d:`m16.852 12.228-.383-.923`,key:`13v3q0`}],[`path`,{d:`m16.852 17.772-.383.924`,key:`1i8mnm`}],[`path`,{d:`m19.148 12.228.383-.923`,key:`1q8j1v`}],[`path`,{d:`m19.53 18.696-.382-.924`,key:`vk1qj3`}],[`path`,{d:`m20.772 13.852.924-.383`,key:`n880s0`}],[`path`,{d:`m20.772 16.148.924.383`,key:`1g6xey`}],[`circle`,{cx:`18`,cy:`15`,r:`3`,key:`gjjjvw`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),qe=M(`user-lock`,[[`circle`,{cx:`10`,cy:`7`,r:`4`,key:`e45bow`}],[`path`,{d:`M10.3 15H7a4 4 0 0 0-4 4v2`,key:`3bnktk`}],[`path`,{d:`M15 15.5V14a2 2 0 0 1 4 0v1.5`,key:`12ym5i`}],[`rect`,{width:`8`,height:`5`,x:`13`,y:`16`,rx:`.899`,key:`4p176n`}]]),z=he(C(),1),Je=768;function Ye(){let[e,t]=z.useState(void 0);return z.useEffect(()=>{let e=window.matchMedia(`(max-width: ${Je-1}px)`),n=()=>{t(window.innerWidthe.removeEventListener(`change`,n)},[]),!!e}var B=he(we(),1);function Xe({...e}){return(0,B.jsx)(Ee,{"data-slot":`sheet`,...e})}function Ze({...e}){return(0,B.jsx)(Ne,{"data-slot":`sheet-portal`,...e})}function Qe({className:e,...t}){return(0,B.jsx)(Oe,{"data-slot":`sheet-overlay`,className:A(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed left-0 right-0 top-0 bottom-0 z-50 bg-black/50`,e),...t})}function $e({className:e,children:t,side:n=`right`,...r}){return(0,B.jsxs)(Ze,{children:[(0,B.jsx)(Qe,{}),(0,B.jsxs)(Le,{"data-slot":`sheet-content`,className:A(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500`,n===`right`&&`data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm`,n===`left`&&`data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm`,n===`top`&&`data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b`,n===`bottom`&&`data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t`,e),...r,children:[t,(0,B.jsxs)(ke,{className:`ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none`,children:[(0,B.jsx)(i,{className:`size-4`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function et({className:e,...t}){return(0,B.jsx)(`div`,{"data-slot":`sheet-header`,className:A(`flex flex-col gap-1.5 p-4`,e),...t})}function tt({className:e,...t}){return(0,B.jsx)(Ae,{"data-slot":`sheet-title`,className:A(`text-foreground font-semibold`,e),...t})}function nt({className:e,...t}){return(0,B.jsx)(De,{"data-slot":`sheet-description`,className:A(`text-muted-foreground text-sm`,e),...t})}var rt=Object.defineProperty,V=(e,t)=>rt(e,`name`,{value:t,configurable:!0}),[it,at]=I(`Tooltip`,[be]),H=be(),ot=`TooltipProvider`,st=700,ct=`tooltip.open`,[lt,ut]=it(ot),dt=V(e=>{let{__scopeTooltip:t,delayDuration:n=st,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=z.useRef(!0),s=z.useRef(!1),c=z.useRef(0);return z.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,B.jsx)(lt,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:z.useCallback(()=>{r<=0||(window.clearTimeout(c.current),o.current=!1)},[r]),onClose:z.useCallback(()=>{r<=0||(window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r))},[r]),isPointerInTransitRef:s,onPointerInTransitChange:z.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})},`TooltipProvider`),ft=`Tooltip`,[pt,U]=it(ft),mt=V(e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=ut(ft,e.__scopeTooltip),l=H(t),[u,d]=z.useState(null),[f,p]=z.useState(void 0),m=k(),h=z.useRef(0),g=o??c.disableHoverableContent,_=s??c.delayDuration,v=z.useRef(!1),[y,b]=ye({prop:r,defaultProp:i??!1,onChange:V(e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(ct))):c.onClose(),a==null||a(e)},`onChange`),caller:ft}),x=z.useMemo(()=>y?v.current?`delayed-open`:`instant-open`:`closed`,[y]),S=z.useCallback(()=>{window.clearTimeout(h.current),h.current=0,v.current=!1,b(!0)},[b]),C=z.useCallback(()=>{window.clearTimeout(h.current),h.current=0,b(!1)},[b]),w=z.useCallback(()=>{window.clearTimeout(h.current),h.current=window.setTimeout(()=>{v.current=!0,b(!0),h.current=0},_)},[_,b]);z.useEffect(()=>()=>{h.current&&=(window.clearTimeout(h.current),0)},[]);let T=f??m;return(0,B.jsx)(L,{...l,children:(0,B.jsx)(pt,{scope:t,contentId:T,setContentId:p,open:y,stateAttribute:x,trigger:u,onTriggerChange:d,onTriggerEnter:z.useCallback(()=>{c.isOpenDelayedRef.current?w():S()},[c.isOpenDelayedRef,w,S]),onTriggerLeave:z.useCallback(()=>{g?C():(window.clearTimeout(h.current),h.current=0)},[C,g]),onOpen:S,onClose:C,disableHoverableContent:g,children:n})})},`Tooltip`),ht=`TooltipTrigger`,gt=z.forwardRef(V(function(e,t){let{__scopeTooltip:n,"aria-describedby":r,...i}=e,a=U(ht,n),s=ut(ht,n),c=H(n),l=R(t,z.useRef(null),a.onTriggerChange),u=z.useRef(!1),d=z.useRef(!1),f=z.useCallback(()=>u.current=!1,[]);return z.useEffect(()=>()=>document.removeEventListener(`pointerup`,f),[f]),(0,B.jsx)(N,{asChild:!0,...c,children:(0,B.jsx)(E.button,{"aria-describedby":a.open?Mt(r,a.contentId):r,"data-state":a.stateAttribute,...i,ref:l,onPointerMove:o(e.onPointerMove,e=>{e.pointerType!==`touch`&&!d.current&&!s.isPointerInTransitRef.current&&(a.onTriggerEnter(),d.current=!0)}),onPointerLeave:o(e.onPointerLeave,()=>{a.onTriggerLeave(),d.current=!1}),onPointerDown:o(e.onPointerDown,()=>{a.open&&a.onClose(),u.current=!0,document.addEventListener(`pointerup`,f,{once:!0})}),onFocus:o(e.onFocus,()=>{u.current||a.onOpen()}),onBlur:o(e.onBlur,a.onClose),onClick:o(e.onClick,a.onClose)})})},`TooltipTrigger`)),_t=`TooltipPortal`,[vt,yt]=it(_t,{forceMount:void 0}),bt=V(e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=U(_t,t);return(0,B.jsx)(vt,{scope:t,forceMount:n,children:(0,B.jsx)(j,{present:n||a.open,children:(0,B.jsx)(fe,{asChild:!0,container:i,children:r})})})},`TooltipPortal`),W=`TooltipContent`,xt=z.forwardRef(V(function(e,t){let n=yt(W,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=U(W,e.__scopeTooltip);return(0,B.jsx)(j,{present:r||o.open,children:o.disableHoverableContent?(0,B.jsx)(wt,{side:i,...a,ref:t}):(0,B.jsx)(St,{side:i,...a,ref:t})})},`TooltipContent`)),St=z.forwardRef(V(function(e,t){let n=U(W,e.__scopeTooltip),r=ut(W,e.__scopeTooltip),i=z.useRef(null),a=R(t,i),[o,s]=z.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=z.useCallback(()=>{s(null),d(!1)},[d]),p=z.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Dt(r,Et(r,n.getBoundingClientRect())),a=Ot(t.getBoundingClientRect());s(At([...i,...a])),d(!0)},[d]);return z.useEffect(()=>()=>f(),[f]),z.useEffect(()=>{if(c&&u){let e=V(e=>p(e,u),`handleTriggerLeave`),t=V(e=>p(e,c),`handleContentLeave`);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),z.useEffect(()=>{if(o){let e=V(e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=(c==null?void 0:c.contains(t))||(u==null?void 0:u.contains(t)),i=!kt(n,o);r?f():i&&(f(),l())},`handleTrackPointerGrace`);return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,B.jsx)(wt,{...e,ref:a})},`TooltipContentHoverable`)),Ct=ue(`TooltipContent`),wt=z.forwardRef(V(function(e,n){let{__scopeTooltip:r,children:i,"aria-label":a,id:o,onEscapeKeyDown:l,onPointerDownOutside:u,...d}=e,f=U(W,r),p=H(r),{onClose:m}=f,[h,g]=z.useState(null),_=R(n,g);s(h),z.useEffect(()=>(document.addEventListener(ct,m),()=>document.removeEventListener(ct,m)),[m]),z.useEffect(()=>{if(f.trigger){let e=V(e=>{e.target instanceof Node&&e.target.contains(f.trigger)&&m()},`handleScroll`);return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[f.trigger,m]);let{setContentId:v}=f;return F(()=>(v(o),()=>{v(void 0)}),[o,v]),(0,B.jsx)(c,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:e=>e.preventDefault(),onDismiss:m,children:(0,B.jsxs)(ee,{"data-state":f.stateAttribute,role:a?void 0:`tooltip`,id:a?void 0:f.contentId,...p,...d,ref:_,style:{...d.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,B.jsx)(Ct,{children:i}),a?(0,B.jsx)(t,{id:f.contentId,role:`tooltip`,children:a}):null]})})},`TooltipContentImpl`)),Tt=z.forwardRef(V(function(e,t){let{__scopeTooltip:n,...r}=e,i=H(n);return(0,B.jsx)(ae,{...i,...r,ref:t})},`TooltipArrow`));function Et(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}V(Et,`getExitSideFromRect`);function Dt(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}V(Dt,`getPaddedExitPoints`);function Ot(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}V(Ot,`getPointsFromRect`);function kt(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}V(kt,`isPointInPolygon`);function At(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y?1:0),jt(t)}V(At,`getHull`);function jt(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}V(jt,`getHullPresorted`);function Mt(...e){let t=new Set;for(let n of e)if(typeof n==`string`)for(let e of String(n).trim().split(/\s+/))e&&t.add(e);return t.size>0?Array.from(t).join(` `):void 0}V(Mt,`concatAriaDescribedby`);function Nt({delayDuration:e=0,...t}){return(0,B.jsx)(dt,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function Pt({...e}){return(0,B.jsx)(Nt,{children:(0,B.jsx)(mt,{"data-slot":`tooltip`,...e})})}function Ft({...e}){return(0,B.jsx)(gt,{"data-slot":`tooltip-trigger`,...e})}function It({className:e,sideOffset:t=0,children:n,...r}){return(0,B.jsx)(bt,{children:(0,B.jsxs)(xt,{"data-slot":`tooltip-content`,sideOffset:t,className:A(`bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-[var(--radix-tooltip-content-transform-origin)] rounded-md px-3 py-1.5 text-xs`,e),...r,children:[n,(0,B.jsx)(Tt,{className:`bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`})]})})}var Lt=`sidebar_state`,Rt=3600*24*7,zt=`16rem`,Bt=`18rem`,Vt=`3rem`,Ht=`b`,Ut=z.createContext(null);function Wt(){let e=z.useContext(Ut);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function Gt({defaultOpen:e=!0,open:t,onOpenChange:n,className:r,style:i,children:a,...o}){let s=Ye(),[c,l]=z.useState(!1),[u,d]=z.useState(e),f=t??u,p=z.useCallback(e=>{let t=typeof e==`function`?e(f):e;n?n(t):d(t),document.cookie=`${Lt}=${t}; path=/; max-age=${Rt}`},[n,f]),m=z.useCallback(()=>s?l(e=>!e):p(e=>!e),[s,p,l]);z.useEffect(()=>{let e=e=>{e.key===Ht&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),m())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[m]);let h=f?`expanded`:`collapsed`,g=z.useMemo(()=>({state:h,open:f,setOpen:p,isMobile:s,openMobile:c,setOpenMobile:l,toggleSidebar:m}),[h,f,p,s,c,l,m]);return(0,B.jsx)(Ut.Provider,{value:g,children:(0,B.jsx)(Nt,{delayDuration:0,children:(0,B.jsx)(`div`,{"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":zt,"--sidebar-width-icon":Vt,...i},className:A(`group/sidebar-wrapper bg-sidebar flex min-h-screen w-full`,r),...o,children:a})})})}function Kt({side:e=`left`,variant:t=`sidebar`,collapsible:n=`offcanvas`,className:r,children:i,...a}){let{isMobile:o,state:s,openMobile:c,setOpenMobile:l}=Wt();return n===`none`?(0,B.jsx)(`div`,{"data-slot":`sidebar`,className:A(`bg-sidebar text-sidebar-foreground flex h-full w-[var(--sidebar-width)] flex-col`,r),...a,children:i}):o?(0,B.jsx)(Xe,{open:c,onOpenChange:l,...a,children:(0,B.jsxs)($e,{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,className:`bg-sidebar text-sidebar-foreground w-[var(--sidebar-width)] p-0 [&>button]:hidden`,style:{"--sidebar-width":Bt},side:e,children:[(0,B.jsxs)(et,{className:`sr-only`,children:[(0,B.jsx)(tt,{children:`Sidebar`}),(0,B.jsx)(nt,{children:`Displays the mobile sidebar.`})]}),(0,B.jsx)(`div`,{className:`flex h-full w-full flex-col`,children:i})]})}):(0,B.jsxs)(`div`,{className:`group peer text-sidebar-foreground hidden md:block`,"data-state":s,"data-collapsible":s===`collapsed`?n:``,"data-variant":t,"data-side":e,"data-slot":`sidebar`,children:[(0,B.jsx)(`div`,{"data-slot":`sidebar-gap`,className:A(`relative w-[var(--sidebar-width)] bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,t===`floating`||t===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+1rem)]`:`group-data-[collapsible=icon]:w-[var(--sidebar-width-icon)]`)}),(0,B.jsx)(`div`,{"data-slot":`sidebar-container`,className:A(`fixed inset-y-0 z-10 hidden h-screen w-[var(--sidebar-width)] transition-[left,right,width] duration-200 ease-linear md:flex`,e===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,t===`floating`||t===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+1rem+2px)]`:`group-data-[collapsible=icon]:w-[var(--sidebar-width-icon)] group-data-[side=left]:border-r group-data-[side=right]:border-l`,r),...a,children:(0,B.jsx)(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:`bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm`,children:i})})]})}function qt({className:e,onClick:t,...n}){let{toggleSidebar:r}=Wt();return(0,B.jsxs)(v,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,size:`icon`,className:A(`h-7 w-7`,e),onClick:e=>{t==null||t(e),r()},...n,children:[(0,B.jsx)(Ge,{}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]})}function Jt({className:e,...t}){return(0,B.jsx)(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:A(`flex flex-col gap-2 p-2`,e),...t})}function Yt({className:e,...t}){return(0,B.jsx)(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:A(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...t})}function Xt({className:e,...t}){return(0,B.jsx)(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:A(`relative flex w-full min-w-0 flex-col p-2`,e),...t})}function Zt({className:e,...t}){return(0,B.jsx)(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:A(`w-full text-sm`,e),...t})}function Qt({className:e,...t}){return(0,B.jsx)(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:A(`flex w-full min-w-0 flex-col gap-1`,e),...t})}function $t({className:e,...t}){return(0,B.jsx)(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:A(`group/menu-item relative`,e),...t})}var en=le(`peer/menu-button flex w-full items-center space-x-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:h-8 group-data-[collapsible=icon]:w-8 group-data-[collapsible=icon]:p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0`,{variants:{variant:{default:`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:!p-0`}},defaultVariants:{variant:`default`,size:`default`}});function tn({asChild:e=!1,isActive:t=!1,variant:n=`default`,size:r=`default`,tooltip:i,className:a,...o}){let s=e?oe:`button`,{isMobile:c,state:l}=Wt(),u=(0,B.jsx)(s,{"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":r,"data-active":t,className:A(en({variant:n,size:r}),a),...o});return i?(typeof i==`string`&&(i={children:i}),(0,B.jsxs)(Pt,{children:[(0,B.jsx)(Ft,{asChild:!0,children:u}),(0,B.jsx)(It,{side:`right`,align:`center`,hidden:l!==`collapsed`||c,...i})]})):u}var nn=`森睿智传`;function rn({menus:t,isAdmin:n}){let r=O(),i=e(),a=(0,z.useMemo)(()=>i.pathname.replace(``,``),[i.pathname]);return(0,B.jsxs)(Kt,{className:`[&_.bg-sidebar]:bg-transparent border-none`,children:[(0,B.jsx)(Jt,{className:`m-2 p-0`,children:(0,B.jsxs)(`div`,{className:`flex items-center space-x-2 text-left w-full h-[60px]`,children:[(0,B.jsx)(`img`,{src:m,alt:``,className:`size-12 object-contain rounded-full bg-white overflow-hidden`}),(0,B.jsx)(`div`,{className:`text-primary text-2xl font-bold`,children:n?`管理后台`:nn}),(0,B.jsx)(h,{className:`bg-transparent text-primary border-primary`,children:`内网`})]})}),(0,B.jsx)(Yt,{className:`rounded-xl bg-white/50 backdrop-blur-lg m-2 mt-0`,children:(0,B.jsx)(Xt,{children:(0,B.jsx)(Zt,{children:(0,B.jsx)(Qt,{children:t.map(e=>(0,B.jsx)($t,{children:(0,B.jsx)(tn,{asChild:!0,isActive:a===e.url,onClick:()=>{r.navigate({to:e.url})},className:`data-[active=true]:!bg-primary data-[active=true]:!text-white hover:bg-primary/10`,children:(0,B.jsxs)(`div`,{className:`h-[40px] px-4 cursor-pointer`,children:[e.icon,(0,B.jsx)(`span`,{children:e.title})]})})},e.title))})})})})]})}var an=Object.defineProperty,G=(e,t)=>an(e,`name`,{value:t,configurable:!0}),on=`Avatar`,[sn,cn]=I(on),K={Idle:`idle`,Loading:`loading`,Loaded:`loaded`,Error:`error`},ln=[0,()=>void 0],[un,dn]=sn(on),fn=z.forwardRef(G(function(e,t){let{__scopeAvatar:n,...r}=e,[i,a]=z.useState(K.Idle),[o,s]=yn();return(0,B.jsx)(un,{scope:n,imageLoadingStatus:i,setImageLoadingStatus:a,imageCount:o,setImageCount:s,children:(0,B.jsx)(E.span,{...r,ref:t})})},`Avatar`)),pn=`AvatarImage`,mn=z.forwardRef(G(function(e,t){let{__scopeAvatar:n,src:r,onLoadingStatusChange:i,...a}=e,o=dn(pn,n);o.setImageCount;let s=_n(r,{referrerPolicy:a.referrerPolicy,crossOrigin:a.crossOrigin,loadingStatus:o.imageLoadingStatus,setLoadingStatus:o.setImageLoadingStatus}),c=g(e=>{i==null||i(e)}),l=z.useRef(s);return F(()=>{let e=l.current;l.current=s,s!==e&&c(s)},[s,c]),s===K.Loaded?(0,B.jsx)(E.img,{...a,ref:t,src:r}):null},`AvatarImage`)),hn=`AvatarFallback`,gn=z.forwardRef(G(function(e,t){let{__scopeAvatar:n,delayMs:r,...i}=e,a=dn(hn,n),[o,s]=z.useState(r===void 0);return z.useEffect(()=>{if(r!==void 0){let e=window.setTimeout(()=>s(!0),r);return()=>window.clearTimeout(e)}},[r]),o&&a.imageLoadingStatus!==K.Loaded?(0,B.jsx)(E.span,{...i,ref:t}):null},`AvatarFallback`));function _n(e,{loadingStatus:t,setLoadingStatus:n,referrerPolicy:r,crossOrigin:i}){return F(()=>{if(!e){n(K.Error);return}let t=new window.Image,a=G(e=>{let t=e.currentTarget;n(vn(t))},`handleLoad`),o=G(()=>n(K.Error),`handleError`);return t.addEventListener(`load`,a),t.addEventListener(`error`,o),r&&(t.referrerPolicy=r),t.crossOrigin=i??null,t.src=e,n(vn(t)),()=>{t.removeEventListener(`load`,a),t.removeEventListener(`error`,o),n(K.Idle)}},[e,i,r,n]),t}G(_n,`useImageLoadingStatus`);function vn(e){return e.complete?e.naturalWidth>0?K.Loaded:K.Error:K.Loading}G(vn,`getImageLoadingStatus`);function yn(){return ln}G(yn,`useImageCount`);function bn(e){}G(bn,`useUpdateImageCount`);function xn({className:e,...t}){return(0,B.jsx)(fn,{"data-slot":`avatar`,className:A(`relative flex size-8 shrink-0 overflow-hidden rounded-full`,e),...t})}function Sn({className:e,...t}){return(0,B.jsx)(mn,{"data-slot":`avatar-image`,className:A(`aspect-square size-full`,e),...t})}function Cn({className:e,...t}){return(0,B.jsx)(gn,{"data-slot":`avatar-fallback`,className:A(`bg-muted flex size-full items-center justify-center rounded-full`,e),...t})}var wn=Object.defineProperty,q=(e,t)=>wn(e,`name`,{value:t,configurable:!0}),Tn=[`Enter`,` `],En=[`ArrowDown`,`PageUp`,`Home`],Dn=[`ArrowUp`,`PageDown`,`End`],On=[...En,...Dn];[...Tn],[...Tn];var J=`Menu`,[kn,An,jn]=Re(J),[Y,Mn]=I(J,[jn,be,Ve]),Nn=be(),Pn=Ve(),[Fn,X]=Y(J),[In,Ln]=Y(J),Rn=q(e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=Nn(t),[c,l]=z.useState(null),u=z.useRef(!1),d=g(a),f=ze(i);return z.useEffect(()=>{let e=q(()=>{u.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},`handleKeyDown`),t=q(()=>u.current=!1,`handlePointer`);return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),z.useEffect(()=>{if(!n)return;let e=q(()=>d(!1),`handleBlur`);return window.addEventListener(`blur`,e),()=>window.removeEventListener(`blur`,e)},[n,d]),(0,B.jsx)(L,{...s,children:(0,B.jsx)(Fn,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,B.jsx)(In,{scope:t,onClose:z.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})},`Menu`),zn=z.forwardRef(q(function(e,t){let{__scopeMenu:n,...r}=e,i=Nn(n);return(0,B.jsx)(N,{...i,...r,ref:t})},`MenuAnchor`)),Bn=`MenuPortal`,[Vn,Hn]=Y(Bn,{forceMount:void 0}),Un=q(e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=X(Bn,t);return(0,B.jsx)(Vn,{scope:t,forceMount:n,children:(0,B.jsx)(j,{present:n||a.open,children:(0,B.jsx)(fe,{asChild:!0,container:i,children:r})})})},`MenuPortal`),Z=`MenuContent`,[Wn,Gn]=Y(Z),Kn=z.forwardRef(q(function(e,t){let n=Hn(Z,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=X(Z,e.__scopeMenu),o=Ln(Z,e.__scopeMenu);return(0,B.jsx)(kn.Provider,{scope:e.__scopeMenu,children:(0,B.jsx)(j,{present:r||a.open,children:(0,B.jsx)(kn.Slot,{scope:e.__scopeMenu,children:o.modal?(0,B.jsx)(qn,{...i,ref:t}):(0,B.jsx)(Jn,{...i,ref:t})})})})},`MenuContent`)),qn=z.forwardRef(q(function(e,t){let n=X(Z,e.__scopeMenu),r=z.useRef(null),i=R(t,r);return z.useEffect(()=>{let e=r.current;if(e)return se(e)},[]),(0,B.jsx)(Xn,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:o(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentModal`)),Jn=z.forwardRef(q(function(e,t){let n=X(Z,e.__scopeMenu);return(0,B.jsx)(Xn,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentNonModal`)),Yn=te(`MenuContent.ScrollLock`),Xn=z.forwardRef(q(function(e,t){let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:l,disableOutsidePointerEvents:u,onEntryFocus:d,onEscapeKeyDown:f,onPointerDownOutside:p,onFocusOutside:m,onInteractOutside:h,onDismiss:g,disableOutsideScroll:_,...v}=e,x=X(Z,n),S=Ln(Z,n),C=Nn(n),w=Pn(n),T=An(n),[E,D]=z.useState(null),O=z.useRef(null),[te,ne]=z.useState(null);s(te);let{nodes:k,registry:re}=xe(),A=!!(i||_),ie=R(t,O,x.onContentChange,ne),j=z.useRef(0),M=z.useRef(``),ae=z.useRef(0),N=z.useRef(null),oe=z.useRef(`right`),P=z.useRef(0),F=z.useMemo(()=>_?[O,...k.map(e=>({current:e}))]:[],[O,k,_]),I=_?_e:z.Fragment,se=_?{as:Yn,allowPinchZoom:!0,shards:F}:void 0,ce=q(e=>{var t,n;let r=M.current+e,i=T().filter(e=>!e.disabled),a=document.activeElement,o=(t=i.find(e=>e.ref.current===a))==null?void 0:t.textValue,s=mr(i.map(e=>e.textValue),r,o),c=(n=i.find(e=>e.textValue===s))==null?void 0:n.ref.current;function l(e){M.current=e,window.clearTimeout(j.current),e!==``&&(j.current=window.setTimeout(()=>l(``),1e3))}q(l,`updateSearch`),l(r),c&&setTimeout(()=>c.focus())},`handleTypeaheadSearch`);z.useEffect(()=>()=>window.clearTimeout(j.current),[]),b();let L=z.useCallback(e=>{var t,n;return oe.current===((t=N.current)==null?void 0:t.side)&&gr(e,(n=N.current)==null?void 0:n.area)},[]);return(0,B.jsx)(Wn,{scope:n,searchRef:M,onItemEnter:z.useCallback(e=>{L(e)&&e.preventDefault()},[L]),onItemLeave:z.useCallback(e=>{var t;L(e)||((t=O.current)==null||t.focus(),D(null))},[L]),onTriggerLeave:z.useCallback(e=>{L(e)&&e.preventDefault()},[L]),pointerGraceTimerRef:ae,onPointerGraceIntentChange:z.useCallback(e=>{N.current=e},[]),children:(0,B.jsx)(y,{registry:A?re:null,children:(0,B.jsx)(I,{...se,children:(0,B.jsx)(Se,{asChild:!0,trapped:i,branches:k,onMountAutoFocus:o(a,e=>{var t;e.preventDefault(),(t=O.current)==null||t.focus({preventScroll:!0})}),onUnmountAutoFocus:l,children:(0,B.jsx)(c,{asChild:!0,disableOutsidePointerEvents:u,onEscapeKeyDown:f,onPointerDownOutside:p,onFocusOutside:m,onInteractOutside:h,onDismiss:g,children:(0,B.jsx)(He,{asChild:!0,...w,dir:S.dir,orientation:`vertical`,loop:r,currentTabStopId:E,onCurrentTabStopIdChange:D,onEntryFocus:o(d,e=>{S.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,B.jsx)(ee,{role:`menu`,"aria-orientation":`vertical`,"data-state":lr(x.open),"data-radix-menu-content":``,dir:S.dir,...C,...v,ref:ie,style:{outline:`none`,...v.style},onKeyDown:o(v.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&ce(e.key));let i=O.current;if(e.target!==i||!On.includes(e.key))return;e.preventDefault();let a=T().filter(e=>!e.disabled).map(e=>e.ref.current);Dn.includes(e.key)&&a.reverse(),fr(a)}),onBlur:o(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(j.current),M.current=``)}),onPointerMove:o(e.onPointerMove,_r(e=>{let t=e.target,n=P.current!==e.clientX;e.currentTarget.contains(t)&&n&&(oe.current=e.clientX>P.current?`right`:`left`,P.current=e.clientX)}))})})})})})})})},`MenuContentImpl`)),Zn=z.forwardRef(q(function(e,t){let{__scopeMenu:n,...r}=e;return(0,B.jsx)(E.div,{...r,ref:t})},`MenuLabel`)),Qn=`MenuItem`,$n=`menu.itemSelect`,er=z.forwardRef(q(function(e,t){let{disabled:n=!1,onSelect:r,...i}=e,a=z.useRef(null),s=Ln(Qn,e.__scopeMenu),c=Gn(Qn,e.__scopeMenu),l=R(t,a),u=z.useRef(!1),d=q(()=>{let e=a.current;if(!n&&e){let t=new CustomEvent($n,{bubbles:!0,cancelable:!0});e.addEventListener($n,e=>r==null?void 0:r(e),{once:!0}),T(e,t),t.defaultPrevented?u.current=!1:s.onClose()}},`handleSelect`);return(0,B.jsx)(tr,{...i,ref:l,disabled:n,onClick:o(e.onClick,d),onPointerDown:t=>{var n;(n=e.onPointerDown)==null||n.call(e,t),u.current=!0},onPointerUp:o(e.onPointerUp,e=>{var t;u.current||(t=e.currentTarget)==null||t.click()}),onKeyDown:o(e.onKeyDown,e=>{n||e.target!==e.currentTarget||c.searchRef.current!==``&&e.key===` `||Tn.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})},`MenuItem`)),tr=z.forwardRef(q(function(e,t){let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,s=Gn(Qn,n),c=Pn(n),l=z.useRef(null),u=R(t,l),[d,f]=z.useState(!1),[p,m]=z.useState(``);return z.useEffect(()=>{let e=l.current;e&&m((e.textContent??``).trim())},[a.children]),(0,B.jsx)(kn.ItemSlot,{scope:n,disabled:r,textValue:i??p,children:(0,B.jsx)(Be,{asChild:!0,...c,focusable:!r,children:(0,B.jsx)(E.div,{role:`menuitem`,"data-highlighted":d?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:u,onPointerMove:o(e.onPointerMove,_r(e=>{r?s.onItemLeave(e):(s.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:o(e.onPointerLeave,_r(e=>s.onItemLeave(e))),onFocus:o(e.onFocus,()=>f(!0)),onBlur:o(e.onBlur,()=>f(!1))})})})},`MenuItemImpl`)),[nr,rr]=Y(`MenuRadioGroup`,{value:void 0,onValueChange:q(()=>{},`onValueChange`)}),[ir,ar]=Y(`MenuItemIndicator`,{checked:!1}),or=z.forwardRef(q(function(e,t){let{__scopeMenu:n,...r}=e;return(0,B.jsx)(E.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})},`MenuSeparator`)),[sr,cr]=Y(`MenuSub`);function lr(e){return e?`open`:`closed`}q(lr,`getOpenState`);function ur(e){return e===`indeterminate`}q(ur,`isIndeterminate`);function dr(e){return ur(e)?`indeterminate`:e?`checked`:`unchecked`}q(dr,`getCheckedState`);function fr(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}q(fr,`focusFirst`);function pr(e,t){return e.map((n,r)=>e[(t+r)%e.length])}q(pr,`wrapArray`);function mr(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=pr(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}q(mr,`getNextMatch`);function hr(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}q(hr,`isPointInPolygon`);function gr(e,t){return t?hr({x:e.clientX,y:e.clientY},t):!1}q(gr,`isPointerInGraceArea`);function _r(e){return t=>t.pointerType===`mouse`?e(t):void 0}q(_r,`whenMouse`);var vr=Object.defineProperty,Q=(e,t)=>vr(e,`name`,{value:t,configurable:!0}),yr=`DropdownMenu`,[br,xr]=I(yr,[Mn]),$=Mn(),[Sr,Cr]=br(yr),wr=Q(e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=$(t),l=z.useRef(null),[u,d]=ye({prop:i,defaultProp:a??!1,onChange:o,caller:yr});return(0,B.jsx)(Sr,{scope:t,triggerId:k(),triggerRef:l,contentId:k(),open:u,onOpenChange:d,onOpenToggle:z.useCallback(()=>d(e=>!e),[d]),modal:s,children:(0,B.jsx)(Rn,{...c,open:u,onOpenChange:d,dir:r,modal:s,children:n})})},`DropdownMenu`),Tr=`DropdownMenuTrigger`,Er=z.forwardRef(Q(function(e,t){let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=Cr(Tr,n),s=$(n),c=R(t,a.triggerRef);return(0,B.jsx)(zn,{asChild:!0,...s,children:(0,B.jsx)(E.button,{type:`button`,id:a.triggerId,"aria-haspopup":`menu`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...i,ref:c,onPointerDown:o(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:o(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&a.onOpenToggle(),e.key===`ArrowDown`&&a.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})},`DropdownMenuTrigger`)),Dr=Q(e=>{let{__scopeDropdownMenu:t,...n}=e,r=$(t);return(0,B.jsx)(Un,{...r,...n})},`DropdownMenuPortal`),Or=`DropdownMenuContent`,kr=z.forwardRef(Q(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Cr(Or,n),a=$(n),s=z.useRef(!1);return(0,B.jsx)(Kn,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:o(e.onCloseAutoFocus,e=>{var t;s.current||(t=i.triggerRef.current)==null||t.focus(),s.current=!1,e.preventDefault()}),onInteractOutside:o(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(s.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})},`DropdownMenuContent`)),Ar=z.forwardRef(Q(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,B.jsx)(Zn,{...i,...r,ref:t})},`DropdownMenuLabel`)),jr=z.forwardRef(Q(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,B.jsx)(er,{...i,...r,ref:t})},`DropdownMenuItem`)),Mr=z.forwardRef(Q(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,B.jsx)(or,{...i,...r,ref:t})},`DropdownMenuSeparator`));function Nr({...e}){return(0,B.jsx)(wr,{"data-slot":`dropdown-menu`,...e})}function Pr({...e}){return(0,B.jsx)(Er,{"data-slot":`dropdown-menu-trigger`,...e})}function Fr({className:e,sideOffset:t=4,...n}){return(0,B.jsx)(Dr,{children:(0,B.jsx)(kr,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:A(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] origin-[var(--radix-dropdown-menu-content-transform-origin)] overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md`,e),...n})})}function Ir({className:e,inset:t,variant:n=`default`,...r}){return(0,B.jsx)(jr,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:A(`focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:[&_svg]:text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r})}function Lr({className:e,inset:t,...n}){return(0,B.jsx)(Ar,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:A(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function Rr({className:e,...t}){return(0,B.jsx)(Mr,{"data-slot":`dropdown-menu-separator`,className:A(`bg-border -mx-1 my-1 h-px`,e),...t})}var zr=_({oldPassword:a().nonempty({message:`旧密码不能为空`}),newPassword:a().nonempty({message:`新密码不能为空`}),reNewPassword:a().nonempty({message:`确认密码不能为空`})});function Br({open:e,setOpen:t}){let{mutateAsync:n,isPending:r}=Ce({mutationFn:p,onSuccess(){t(!1)}}),i=ve({resolver:ie(zr),defaultValues:{oldPassword:``,newPassword:``,reNewPassword:``}});(0,z.useEffect)(()=>{e&&i.reset()},[e]);let a=e=>{ce.promise(n(e),{loading:`提交中...`,success:`修改成功`})};return(0,B.jsx)(Ie,{open:e,onOpenChange:t,children:(0,B.jsxs)(Pe,{className:`w-[400px]`,children:[(0,B.jsx)(Me,{children:(0,B.jsx)(Fe,{children:`修改密码`})}),(0,B.jsx)(d,{...i,children:(0,B.jsxs)(`form`,{onSubmit:i.handleSubmit(a),className:`space-y-4`,children:[(0,B.jsx)(w,{control:i.control,name:`oldPassword`,render:({field:e})=>(0,B.jsxs)(l,{children:[(0,B.jsx)(f,{children:`旧密码`}),(0,B.jsx)(x,{children:(0,B.jsx)(S,{...e,type:`password`})}),(0,B.jsx)(me,{})]})}),(0,B.jsx)(w,{control:i.control,name:`newPassword`,render:({field:e})=>(0,B.jsxs)(l,{children:[(0,B.jsx)(f,{children:`新密码`}),(0,B.jsx)(x,{children:(0,B.jsx)(S,{...e,type:`password`})}),(0,B.jsx)(me,{})]})}),(0,B.jsx)(w,{control:i.control,name:`reNewPassword`,render:({field:e})=>(0,B.jsxs)(l,{children:[(0,B.jsx)(f,{children:`确认密码`}),(0,B.jsx)(x,{children:(0,B.jsx)(S,{...e,type:`password`})}),(0,B.jsx)(me,{})]})}),(0,B.jsxs)(Te,{children:[(0,B.jsx)(je,{asChild:!0,children:(0,B.jsx)(v,{variant:`outline`,children:`取消`})}),(0,B.jsxs)(v,{type:`submit`,disabled:r,children:[r&&(0,B.jsx)(D,{}),`确定`]})]})]})})]})})}function Vr({menus:e,isAdmin:t}){var i,a;let o=O(),{user:s,org:c}=de(),[l,d]=(0,z.useState)(!1),{mutateAsync:f,isPending:p}=Ce({mutationFn:u,onSuccess(){de.setState({token:null}),o.navigate({to:`/login`})}}),m=()=>{ce.promise(f(),{loading:`退出中...`,success:`退出成功`})},h=P(),g=ne(),[_,y]=(0,z.useState)(!1);return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(Gt,{className:`bg-transparent`,children:[(0,B.jsx)(rn,{menus:e,isAdmin:t}),(0,B.jsxs)(`main`,{className:`w-full h-screen flex flex-col overflow-hidden`,children:[(0,B.jsx)(`div`,{className:`flex-none p-2`,children:(0,B.jsxs)(`div`,{className:`flex-none flex items-center space-x-3 h-[60px]`,children:[(0,B.jsx)(qt,{className:`bg-white/20 size-8`}),(0,B.jsx)(`div`,{className:`flex-auto`}),(h||g)&&(0,B.jsx)(`div`,{className:`flex-none`,children:t?(0,B.jsxs)(v,{variant:`ghost`,size:`sm`,onClick:()=>{o.navigate({to:`/`})},children:[(0,B.jsx)(r,{}),`返回智传`]}):(0,B.jsxs)(v,{variant:`ghost`,size:`sm`,className:`bg-white/20`,onClick:()=>{o.navigate({to:`/admin`})},children:[(0,B.jsx)(We,{}),`管理后台`]})}),(0,B.jsxs)(Nr,{children:[(0,B.jsx)(Pr,{asChild:!0,children:(0,B.jsxs)(`div`,{className:`flex items-center space-x-2 p-2 text-sm rounded-lg cursor-pointer`,children:[(0,B.jsx)(`span`,{children:c==null?void 0:c.orgName}),(0,B.jsx)(n,{size:12})]})}),(0,B.jsxs)(Fr,{side:`bottom`,align:`end`,className:`min-w-[260px]`,children:[(0,B.jsx)(Lr,{children:(0,B.jsxs)(`div`,{className:`flex items-center space-x-2 text-left p-2 w-full`,children:[(0,B.jsxs)(xn,{className:`size-12`,children:[(0,B.jsx)(Sn,{src:s==null?void 0:s.avatarUrl,alt:`头像`}),(0,B.jsx)(Cn,{children:s==null||(i=s.nickname)==null?void 0:i.slice(0,1)})]}),(0,B.jsxs)(`div`,{className:`flex-auto`,children:[(0,B.jsx)(`div`,{className:`text-base`,children:s==null?void 0:s.nickname}),(0,B.jsx)(`div`,{className:`text-xs mt-1 dark:text-white/60 text-black/60`,children:s==null?void 0:s.username})]})]})}),(0,B.jsx)(Rr,{}),(0,B.jsxs)(`div`,{className:`p-1`,children:[(0,B.jsx)(Ir,{className:`p-0`,children:(0,B.jsxs)(tn,{className:`px-4 h-[40px] bg-transparent `,onClick:()=>d(!0),children:[(0,B.jsx)(Ke,{}),(0,B.jsx)(`span`,{children:`个人信息`})]})}),(0,B.jsx)(Ir,{className:`p-0`,children:(0,B.jsxs)(tn,{className:`px-4 h-[40px] bg-transparent`,onClick:()=>y(!0),children:[(0,B.jsx)(qe,{}),(0,B.jsx)(`span`,{children:`修改密码`})]})})]}),(0,B.jsx)(Rr,{}),(0,B.jsx)(`div`,{className:`p-1`,children:(0,B.jsx)(v,{variant:`destructive`,size:`lg`,className:`w-full text-left`,onClick:m,children:(0,B.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[p&&(0,B.jsx)(D,{}),`退出登录`,(0,B.jsx)(Ue,{size:16})]})})})]})]})]})}),(0,B.jsx)(`div`,{className:`flex-auto h-full overflow-y-auto p-2 pt-0`,children:(0,B.jsx)(`div`,{className:`rounded-xl bg-white/50 backdrop-blur-lg min-h-full`,children:(0,B.jsx)(pe,{})})})]})]}),(0,B.jsx)(Br,{open:_,setOpen:y}),(0,B.jsx)(Ie,{open:l,onOpenChange:d,children:(0,B.jsxs)(Pe,{className:`w-[380px]`,children:[(0,B.jsx)(Me,{children:(0,B.jsx)(Fe,{children:`个人信息`})}),(0,B.jsxs)(`div`,{className:`space-y-2 text-sm`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between py-2`,children:[(0,B.jsx)(`span`,{className:`w-[60px] text-black/60`,children:`头像`}),(0,B.jsxs)(xn,{className:`h-[40px] w-[40px]`,children:[(0,B.jsx)(Sn,{src:s==null?void 0:s.avatarUrl,alt:`头像`}),(0,B.jsx)(Cn,{children:s==null||(a=s.nickname)==null?void 0:a.slice(0,1)})]})]}),(0,B.jsx)(ge,{}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between py-2`,children:[(0,B.jsx)(`span`,{className:`w-[60px] text-black/60`,children:`昵称`}),(0,B.jsx)(`span`,{children:s==null?void 0:s.nickname})]}),(0,B.jsx)(ge,{}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between py-2`,children:[(0,B.jsx)(`span`,{className:`w-[60px] text-black/60`,children:`账号`}),(0,B.jsx)(`span`,{children:s==null?void 0:s.username})]}),(0,B.jsx)(ge,{}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between py-2`,children:[(0,B.jsx)(`span`,{className:`w-[60px] text-black/60`,children:`手机号`}),(0,B.jsx)(`span`,{children:s==null?void 0:s.phone})]})]})]})})]})}export{Vr as t}; \ No newline at end of file diff --git a/deployment/iw/web/assets/bg-CBsBX9E3.png b/deployment/iw/web/assets/bg-CBsBX9E3.png new file mode 100644 index 0000000000000000000000000000000000000000..a362d63d7da54ea1094ce66fe6f5da43b8aceff6 GIT binary patch literal 292150 zcmWh!by$<%AKlns7pu1;y=LrA+K>z??6-vv{?B=Q?JOa23|GI1Pn@{uUL>{66PxFVHFJc<1$@Hzc|7{8Z;^yrB-YIm zDrX4QGlbfCLeC2E=Pa>rnN&AV_%?%Ym?L&95Ptn7#{41vY4pS&DeBPC7ZI~OiK_gytj6WW#u%?pIG>C5iL z%jzjY;^0~PEG}W>EP3LhZ-Eg1>#%zPpE!c+UMBS}UuI6>+ve~|WB9~hXJvl~@qO4I z6NH?p%P-S}q`vcS1EjcNQsWXnX#yWRKuYa7E1t&JP7)GFFH0sb8~$9B^pM^Wjmw|7NE$m!{X-}i zBmA7a$e+U3{~@OSy2u$LCJda^juD$D2`Pi;$=$~Zeg8722noGsWz&RAG@o|UZm@`dC8Ng?b;##K&DZMA}Mu_P{xSA1S>I5!v=pu216yJT4HhBFxV%;S1 z{q=bNMd~2&kBj}encPTmh+7ETaL(ZtlTvkzlunPa5%9j%i-}!aU(`F`@R#FrLzNlQEIWiIKT^A|NHe_?jD{ z>pA((?(~H$x+Ru^>j)Ce_)0J`>9^KDjmAiKVoRYIin5#Z+<)Fi`~}Enzq8iG;yswL!ad8)xtu; zZklGum${H137ACOXXCW1z!1+6ldq#%S~vm*qc*-1{Ii+2swjPDa%-}pw<2bn@}GG_ zL;QTkJTv%~bFf_1Nyhfj&!_p4qYN2}#D)Ksi?AoShcR~qCY9SmqT=m#zIA&*8E;>$ z=1D`=M)?ytu8C)oCLDP2>s(ELsM z2YBp(psW3T&G3JA5th%A_V=H+h@2(1we4&CKEF9Dem>A3Hc*0m?Y4W*YPCjKF+}c8 zyuW|J{@z}4fG;ODHK3SX+OAcvkwNMEO^osJA#axoXad8T*>zgerbSw)D(ujT&&5-t zkJP?sXH{5EKc<;7&)u+0yCIlb++WVpIn4rmy{AZs?6{O3O6)L*aJQwv6w1(cOw?H$ zk0du`6y{yv7e|-*k-E^OSB&jLZ`$Y)9V!H}&Ywxzc8AjrV%+sx{F~Bj!*ycu7^>KJ z4S<*$7L=)a_TLbzhXc>sQ;Z^)XG6?a0yXm_*I(cIxbylOiDuDPU14ztX7QJ8{McNQ zfv=_plxzsf&}FBk_$5OTPu(0XtsRg8oJlZe2dtj5e~U+L zh@A)X8e&tzv>;*OM>nXWzD9kGkEls!1Kmd@afpjZ@WtK^&zeS`u4i{k%Q}+BIPC(K zTp4jRhhou;=Or~F5QjwVzH#y&LqRFi=fwdxifDUu3PMO-VBArc5+ChWWar1I_AEy^ z9Cg^J(bjL~Ttz)Q7bWiY*`VXS;Snl|8NBzV^XBS7C{T^5oJr%k0fRYa;3jCV&>_e*h}chyQN$_e1&%L(gz^QBgUlX^4HO zpRM3=2a5zU5CiTKHdqbQ12_Uu8=)!nuaMTp+in>nb^Vt*OB-@@QScA7v_&dzfij z*DlYc;zcc}15e~WtV(UAxrNY6d76|SY4vi?IA8i09i&TrC#q-zvCi`WBMu!smVY?dgXvOWTHgYW;#QS`x z2Z*H&xCurv&>mu2S`1o}$hl=$)!~uKWJmoUwbkC1oQEazJ!m1D^xh$1H#gnMkL)lZM&VAN3w>e#X_s<0;S2rrd@Ug_y@ z*MyT?Q+}fUi;&5eHX6+-dQHViZG^64L7A|1P}o%x^)Vayhs1mj(o)=JI2Rvxct|As zbE-M3O0>Qum9_A+ak0=A8u*s#k}fv0$Rofm)!uP0mAyp(phA-wB5L74L2VStur*G_ zoO%(u`0CwRxRyoO$lj)bFUwV{Z>-#TI9*>(BaIDY^{^1ll4 zmBCi>js-}nwoM1~gL4|F-olmsgG46zyQ;a;N!wp+thaOVC>6#zfg{e3kh6R2@~GgA z(k($fudF_)vazs3RB59?ys6VYcG}&9z_;zqt&Pz0mljZ4GWM?be!Y|dQ@#toSQ}wu z*9B2R+x&>G$IlwKhn!^c{jzcCLvA0?0h3b0JUn%h)M4&w&WYk8A0A9}vz!%QLP2RScKLmiIWGwIqpMH&XUc7BN?}5Zbnc?U<&&vlk|+j{O@pzy8uG@oiU{)(ajrMxH}QZJ4QbWEnY> zpIa3!EOYlsq-F#+ic$@O=%|Mzf2#!>GuDGWQd_|8^P0$frmlz!I`6EaZ>cZ0cm=|Q zbC@8nzrLuRvrVoDRYbk#49ljr>qWxsG$QEi2DCc9(md@qU+<&Z)=kYa=OQ#*Cqi_ zc9CTuig2JUE8Dc{b!lWr*Cem}-b>I9Y>jdxFma)%?bR@rxwk5RfQ?Tm1QhVT3Z}&6 zv`LDGx?4v+S3GoEN+!uKf~v*FD8+TMCrv26KIizjVezb10pgd=5nuf5jz-v{H(r#ceQ^If zf0KE}-s!!LPACzKUHR$L{4}6?BbMh=v}faVp5265ge&%I9oyma$}1_=G)+@X$nWJ! zdd-+FqW!aHYDKK=Is6U>3?P=fNU$VkA9-a2SF^Hw7(rB4&MG3OR@B z*Srw{%hQ?K@>T3ygt=y<39O$*;3FE}QmIMm8?B~^PG%P6(u9x2#25~urzzP*X$i4H z&fQpXh|Kz^z_+qh1P`kCmXTjaJk?||IA6(bHppjNRa6oG@w_`7U;2Z4QSV5FNg0uQ z3PipV&=}5u?dh9XM^2Idbkb73TqWD$a=z6p>U8`E?5Gl#(isacmQwU5yjq{{@I}c+ zLkdjIBkwY}+f4h}c8o5XNU5hMX-mM=H1DsksG{7L^cna zg$sFfMB%K#ph&)zDzv33rQ%)BQRFYJzsZVFSz7?jU%jF5-ia1JZ02sKwvDJ!$CR+} zafPK9W@miAtw;B9Z=Ls$%cX18(Xgfz6f7ZW3FCk)%+M`L@yU|8V7+~@=gd7=kLP^P z59Jz8+l$^Xuh3Wp{Md&i0sDUa;__`0HrbSbceJ4y2(A31Wk##lwYVsqgKb(SlPxxMdbXytH= z?lj1d`Y!NEda;=7ow?wMk$wL@^>n7r>djopR;PGC@*MRnQ5+W|NKE% zf;|?+w3&1-=5`QC`HE7eGpY15<=965yRJ+^y9a2hTS7}&3H}m~+=})q0aYJq>?4#; zDAXX~X1{rn8nFtuYnc?N(UfB}J?b3)y=X4_76P<(>(p>aN{Cp=mcznvSpM@j4E2gT z)8vccX)1oG^1fFRY{jOKAvuMgx@fXIw(38?!bWfh*fZq`WC04dKZ2@wwht|ys(Fd; zjT4pJhJkv^CkqhG7m%qoU@~}xHtSwJqF7wxm;K~>B}}nfLz(43vsz;NIyEx6R@W3FVSov&8$TES zW56lrX>1Vnsipn)Pf<488sVq%hy=KN`wrq83>9>Rr&qx!V9zByd7J552n#olavlM{ zLRA((v9u`IPBdLd>{8xrhBLFJ!m$SYK~2AbUBoM9bL=J}&t&MXNHU*HFJseE%DI;I z77~+BVpj5m9He9BZM*Cs@~mnYlF$~3uM87bY@@88lYFakG=AA1T(gD9>!2G1vvYqa zdb9v^ycM*9z$-d5HPU~Y2cMPl^ejhp%C(0-WD$O{>js5od@Cf6y+lu&>~fff$;M?C zz3h{bRCE+nC~KkxudO?)%BxrM&hXu?vXLn(eemn+H=0;b7Dm3aonC@d-fc?2T5QW3 z(<3IalvqjuQ>nirVl%(@!}>;84Bst>3eF$DWJ0Py9C455`9srp18+sw9qKRXe`T^F zJjpe9_o*wFO@cM61Izd&d2pY8RgKv2$s^$3@pK4RR%doT8vP6>;FW)U;_?)a-3a=O zm#6bgCxbjcJI*w?lh}D$ih@dQp+?CmGDWz#*jm;mvA`SE6w2c7^LHo38eEz8YxcDXC| zh2n{M8Z!LJTL%%21c6=QF6D`2KQk22G!;I864!U$P0Etm-c~YySvLa*A#XXYpS*I# zrPw0%a$=nOWk&i~<61(cr{Mf`+rH@vFPac=jzl>4miTVH8`xSc%`ZIgg^gc-l2L+V zbw6SvK%i-PmGz>6B})yDSx(+K~|4S-E&!!{L$1Q=1Udf7Am`R7-#&6NXX2a!!zWZ=!cbf1Dikcv?=+#l=x$D~Qow zx9CXet0c53uE8Bvn0~=P+E@&Br^ns!?MZup?92xwQ=XW`U`FLf`AY$JqZPLpI_GGs z$|bcN)j)xa8BkKT075-L_v?K7vKBk7V>NfJfNIjRHW9G5Op`J;2zGQ16g2ly_jP~< z@`lI?*~*xkCM1>KW}>AJd1e1A0?yHVyHi2(jTX#6EUsoA9_<=3$muH#cBDd8berzS zD{;BpwcHYC@V^CFPR_J+D8`o3M^t@<{z+;{kMdjd@YZ_$w!6O1v+Q?jxK^+9QsdQM zgG$W?U+v?6pREA_TL^zYCm9{F#QTF)$aS}Ud>j3FQXy87493iI0MxVmbLCC15< z4oj6pN)hbtv%YVq)|RLnxH6zaRT&driQdbLF^CFc!GPyBM&couFg^!!5`6G=PY0Osj&}Xx4UKt)4BQ)$)m?(qF zc4RER6l6|FWK(hFk&y~X{x2NbSOJQyjrsJREB;jaH|B=}W8jM=>8~LjZ=Jqd+Nb#E z1$i$soh(1xEC!&$1VF5`8dYTF{G$O&&L-oR=d zh{S)rIlGK5hV&9#ooZsWj7HP`l5o;YGOHCFJbLkyTSdiM{X1&bNW=X5b3TOQJJX`q z4`-ASQBUe>lys|@4$lHQz)0!y8B$CLJ?tc99k*XXvPI{tN!-}(846LI_o7^(_RSyKT#y~pJm;Tk+*+Jo+ z2goz_nYfpI7Bv=BC!R_XD~NAw5ZXyqj9Qf;oO+9OQXQU1Fjk`@Iz*HIhAwf3-!q_X@rrtAK5}&vORy5GDv@cAjLEP4 zCumsa?~p`3*7auGlE&&~45HCC{tH^ysCpfPn9_xHavz8$`Fta-lV zb9L|{@kQa=<0W+uZX5E8i%&iWP1v^2-vijf>PNqu3AA7b8zQlfT9s)VfV39&TU?=d zeM=MOYjM|hHS8HE))T2@@nzWTPg2z3F7QEAnRJh?`T!IXGK=gmQ95}oM>90`$^m&Z zLh;5BKA2a<8|7>~s~Ovqu~6d~nC)n|1bH@O#fy>Me+i2`RgqDSdAP+$VroR zD5@t-F>ODA*Kk$vUIM6ZN*yklR0c`CsmKtL>_&YLiE3sfx@TJMh=0B*lfo-}t7@3yFy|b+0Wzieu zy-(OuMim>ecFray#Mu1DIrhqL0H?V+{x6&EWOl1A%G+Y{e4qX0Pab5sC&O>?zlhw9 zC9-1zoAtRm#{Trx&5ui@Gj+_L(=MXjA-!N=s)jw~>-C^w8`4GIM}Qp@_hCF8=|#T+ zvcEhP{aYHU7QH0t5b@Nu@3anB^Ud&)q^SAcntRm6E=qvPAWRPG_MkyJ1|dl~ ztaXUukFaGl|3uEl5of@R%4G08(}XLbZtriU-*c%1c~n4QoCb&8HGR@TKSKE#jK>#h zVv1j;-FLpwQ9MZ~jdHo~BysRM;5ZV;wfOE1G_cLCvL=Y-M}c?ek2`#Kc^e;*S$(1# zsm(5`w<2rIwLwa~k$kMZE>=k1wHmf94P&lj*MDw*KHjj3c=YDm4egQ@SsRZopv#t( z!U9FbM~GBM+`$b5{zFriiCCc?r96T$vMl8kgAjS(M|Sp|SW1_OET|(2fhzTQWIlNq zc)kBxef8p=wFIDI-B%-ecy7EhOp8Kp>Gb9GM0f2#51p-l87O-+z|Ut`rKqBkTq?Tg zo^u}%pw~bRx2G~*%ltQ7c$>Tv#{T4r`+3u2D!P=hY>H6_W?C@*NoC5B6o^to*Xs1MOuKQW&)B((7j%iUyO<2i=b4?sjhji z*&FZ#K#+3SJV{v(Y*_QvE>S7Zt2G@rY!Ce;CWA5%P5>=E6!b=2QAfFq zn4zDuf=oLo}oRRxN(rHEYbX$geQB^Qfr8STz;G#PbYVcrhrwXyi(O>>sN z9Y+k>IOts64&hgRVPDfu>FYsafBTs2KjJx1ke~*}wB&%N-u+naziPLk{Aj^^ABkfk z>FLY7X{6i@22zD;sa?G-kF;|kSD1!ZRZ`Mm6ones}js)thG zD!s3o4=y)FV~fP6+1{VM1C_;`>C?QHb#CX`PA(e+3JV2Aw&NG;g3G`&-wzd;uFz6RD>j0Su}K|It831Q1f;G1B=4&-Vci1)6k~ zw=8{7*}-Bi{vGg|H;r^`#&ZL*H#xqi^=ODTSP=^5bK!q<ztaySbZ7bUL zf&tmz*0?%V)Z_Jm;~J+O&_>>0&ONeK2EUCB84(B6u6MiQ;YYYTi-yW zlV_rctYUs=a;f1?nu|=|hkTxc>q^@5cw#~`j3;w0=XNXlQdUS{MjcsBh)}WL)TtzYa)FOz|tljkWhpZUtV zRU#IcV>2H7fI0Y~6gbIz;8qn**Op?m*D%y9mlWY`UyU-p^B z2ldFcrBhdeZunFn&k0A%vhX8007a-5gD4H=L`25;@wU=UECRSD3t*o!kqh#J1%IPo zFC3*sL3>`3s6AIA4FI(Cgm+mE8f=G&G*W)+IpsxHNLOc!a#mlV$C_&xkHjXzLxH8u zjQ6W`5{-E$D60Kys{qTQc?e@0&*SF@oZ*aFu_pmN+CPh4NBI>6C=Abou-yIy!_ukx z|D@-^?lFa9c-28TAQvvm*AQrJ|%owUVJl?;*@skGj~IojhL3 z;aw6gAEX)bVr4U?8M8~CtrKU#IL?PFH&@VFzll_V-$MF#k@*7op6bx^=;@w*@ca%P zTMVZsZ5*LrLTsv|>xVmec|2t)sw|ib9uus}i&hX^!zx({8DVG@+C6Vn%6(_w?nuy? zDyG?5$dbaLwB}(j)l4iVMlDq^l$_x>EWWD{Nw;*5gAgp3jHl9hF4Z+Ia&nVKHxLyWqav1Y1GUYY~J33y+>t-OF$mrh$pNd*hu};WV0T3@2_xb9n|-Okp4wk@N`n>QM(`5 z1-s&mja;sYD@s81EUAL&G>UU+bcCUSxoJB6w4~BCgwWL>0~>j^9Q=_Rd3)nKt#DTU zoNp&Fz=x5$nsNfw&Pd2pM1F#GYeq;wpCQF$Ffvr&~{uHoi$|Kmz2 z?TL$IXf180=^Ztr<$Efyx(7N)I8I|Em6c*>-@?oY%wt52f9`gsfJb$@j3wS=kt7bb% zz%KfrXl=26i^21f;P!bOI*OiOye(pG!!y zykLwXZ)3_TBi}DJdmeo%!o)m1bO?SvZe)W-art+u(sRcaUy;QWPu~9>5m~w9`6FVc zh=!(8AvIO#U&S}lePe8`wY~VTob*r$J@nTXiK3N{-PqBHEg9j~Sw|B4!St5{3yaa^ zjcZc`e~KpmkPkfYY7Nsm2y zpY-q%t^_@Qvlg7cBLzcum;1CfmJ@l&)=a0}%okPAcEND+zDojJ9;=c6r!)XEIuL$XdQi1?B(r=j$nNW{g z=TD(b---vPNXCD%$ zk%Ady+`qKt_?FfrXT>jJIz~H-cWj;3SU9MCeOe95k1Y;@%LY14RzE{^mqLS7jMMJpPa`zW`4f~TDZSJ11P*pUC5kO+c zNyg^zPuchvjJzg)_CSa_hj0NXP%Gs;%w9Pbk%@ zKN0u8AvDd%ECkSggn?SYlL!jmeEecDy)XI5jb%3g*J~a`F%I@Vra+ROJMm)hnDO!S zo%!ED`@gqtK9>Qs$^n?){^j8l>rzPC5$*IoI$(F3C8e6{ zbWrg-6Po^QK3eKk6Ue1`rO)r2uAOa*tV*)v4AabC#2TcGg za9ZcW0nR?jh-VY(?*o&R*?($#DVtPWqQ)l`Yv9}(W zNFjFa*b@FIS=k(lYqz%tj(p7!QFaIEEW<8wbOFB^bDFU!ZLafAPW!(nf0iC)+&Fvd zH_)0H5pu*A;6fQ@&^7v(T}IpbKU2x*RKVMPwN`VzI^J!1aQ(s_ zJfhUepaz^lVFSzeDM`T)T44JUNSO!uTNnLBAc&tK(A?E?5}4gJNaA6{ap{~r=S-2CkaKmUOs^%>PIqjOR$t$$w;4WRsDF~_ zks8CL>D}2<#5Xtv5LCHuZn;pcMbCD1*=rCMX;z-?^;kYsWtfL54IoS6z->92@}=N{r)boI0jbMRdi zjA3+O9o9woi_U4a>xo7NvnwqP9W1wT`e92)smE8w2 z+}v*X2m0dhUZJiR1cSjE5AT_`1M5i zfV-itof|~dKY-kqxWt=vI=1mC#BER&w9!B4)bV>V66lqXO+OgW|zTJBB}MjY{Yme==1 zZJ<2vw9WvVaxYxuiMMpB8zGd_>V=0UEN@NYF=d#TGpWVSx2Htjy3V@MTO#y^xXs_$UBdVy=o>eT|vaw%xJaL7InAj(`KvzVd1Ky}^Z=WpURxQ4(%Uabe4^57VCBdDc&9;oo=vaQ+Czhl_^) zSPQTDv;UD%bA-m{Mbt3oz}QaHve$?!&9F!EvTZBL+4kJ1W9z&__is5~pM#q$Tb*|6 z3J%~TgB)G)2Z_+@e70Z%8;$ZD+O#%hrbs8+~XX(*4z8k5*A7c1|I z(srNK>%)7e7Eg8J#8RCa7w1fkEKb>qeU(c(U*8APhFa*MAF)DVgnB{rBLGGa@~No@pv;&i$yfFHT|kqH zIZuyVn?bYY$wgJaaX5SPh8G}PaJdSEOKmxL7Y6vpvl)P}6iW{9D{lfFHb2fLgzkB9Bzo z=;GS8l9;~pEgtCGkd^_>{%4Vv{1rYR_h;+b93S)`5<|uUXb5#jlMO&d4igJGzP__I zq_=n38V^z2Mk;#<)hvdpR|rUDtty6ooe74K0k>&SccX7lpycCD3IWd_KX5SNO0bqF zt>JPYA`RC0X{#`8@A5_Qt7vCnV#4i1LzuOc7(Z5bIlq=3J^S${Q6!Sscc8@;{rch= z#_hBH>Mx(xbDvLuR3%J2Rb?nGs!BlO>!IoR`YNnI(nMXBmhQ#=Y`*k7VM7lcUAW>w z4OdS=zvzEZHh$^!=36SkV+|3M6~$3BcQewV2`=K-HsoQpGw`1&_xCn?Q`)~%g<81H z7Im-I-=CanK~RZ*tB6r^?nCT2o0k&O_o7wwR--4X0OIdL4Wp^F&^xSdXUe%Pa|=ha zoxy$R@s`ZVfI0OU{7vFYEXcen81B;vu#}#GX9@l;HJ+UcLu>A)=ow)d?!lQlq4qKl zcrB&bmx&^EWi%9BLJ67el(gr?mK>G$9M&!z#zy|4 zdwdxA0_Wo=>Ukda;fBQo>M8UD#8^FT*wyiKdF$1xQgXSVRlyHN=V)E!yT(5q=6>%-U|NM5{Xv9>&13DtyAO4&;| zIA5Ta#8E*%ZyS1dtLL;V1a&|B`>p2enDOv=*xT$YJL+J;b9D{S5ZecYrOw+=AoJgV zgv|>79(&W_+tQ=&A7^$M;BC_w1t)z(U5bksi4(+^8qfLXK7t;;F$s z{;BgsIACD`nzXO7G_gbnSD?gbGANILG)Kq>i*Ee&c*F}k$M5m)yZsSjANq*F;5z+I z+4a%@Gv7P@*tbbf+$gF(>t4)e51#k$kgHsal;5CTi!7Z-#(i6{Tt!3m=nY!7e^w|) z?L$B9?8!gkn6I&tYQ346pf|W+*Pzmym77FPa zWlp^*!M8vM=Mid4`drnr!j{Z2W=t07)zOFfN%>>7fhTfl!UFgy<|U)afI%Mbv!P-# z(GM{n|8;cY7saj!LecYAgr~RJRpE3xe|>>ct1Tk5p*DzhIWSjr1~-y%Mi>2vbm7Dq zZNAQC*$l8$bHzgP#rO_?71Jt_w<}ePsbrb_&bt-m)!_!F=qd?aV&6?-V}IQ*|AVqZ zte|Acb?Y%@2K_BkW%f?um-2!PX!N|45-#2m z)O4E=ZpA*}^+IJIgbBKgW!mXJE|UL!MP|?A)yyy*16p!sPQ{tT%6_HsWHfPa)6#;_ zh8>3%r5E-VmS+LOgk?}Q?P7rHPG?1na?t3WoK%jw`d)IRjR#jBKn^55E+FAzHPeJ{ z2HHtM?KsM<;DFZ;Eic4v`Dqb@KT#hXfbhe-3SCUX;5&e4;T*=Vi9EJlLNAe$HkuA4 z>YpLh`EUGleK7C=tl5+|-tNP@bE8go&V>4@5zx6%lmVa;=!|!+v;3h3&o7gC$Xy$g zpCH{by{O}$LR*#6Od=gAe=sU(>b2O~_&a)fSZ9ZjS`BM{ve|NfrOeGXMz(`$X&H)o z1KCSt=l26P9?+(g`<*|dIU<=(`giKOzJ*NPa_mFPL9ujc1l2saFu(8@pyr`l0} zZy(;N-2og_#g70Mc;f7S?S}n%B@l&Oq7#0Y^EfQ_cd1;k({TK*dvJC~M+(05^5O_R zN11g+8c{|y+A*@C1)`)sy9h*I8#xffajW~9cN6_mp$$bF6rNkhBI=702Pjb?nE5iH zusF+HqpSX|2G7P7n;s3aE`e*wL#ySJwz`NM8JP_SLG}c|lHMdKs3kw)>km&+CVuC` zynO>z_XwhM7yk-k7XTdrxsO_bxIsC#wFqfwqseF=7wcha3uZ;}IvUg#T>A-`ca1zJ zsPU6ksm7F*!P<`!f;B~qH}<&erP*lJWAbxRuqMcc>M?oqP|deND3xb^+Z$Vn=~*d5YA{y%vf-85Gb zQ6=R~*Z|T+u20(EVN}KP+s9K)in+kWE~>(SDsnb(Ay>d6RUJp1KfTTkK&1g$1;*p0 z`u#;3qmTTSTzH-7r%bqPH&zG!RDEitmH*W23Z8A8_dc>)YodFnEFiNRv21zsS4^`X zJNMzVl7ph*VX>e~g6b7#4VAeGWw;m0_$9P4+=@xlGSC0GdQh)Tmh5de z>+a%1^4FVD*@tza)nVqiod@?M+8n|=uPvnh@CJA(4Ox8k^Wrt80#rMTnY6?TR1z_x-qKjF(8dvNn z>n`qI1b*n`9$)_a!v227-iJw)jLw!h>{4~U;QJueXOiN*IniI=X>^)fQK zw|23~Bo}?HeiL0OgUhbS>yrW5s{C6i`s+S>h$!9i*uQUDR`cv* z!Qr*2vU9A~OI8^|FR)+r@vaC|CoRg4K)g7}RxN&oct&Og+(p_BQpNFaT}y~fZA-u9 z+0eLQl{Me6?F4d?^~VhaP)2s^g{TZ$;2R;Celid|m8{*J()vGf4Xq-rr4T_fIiD>4 z7`8wS`aRrF1AtXo=Ya)zIPf1yIitK7D6^O^GjNX^ICG4$t$2@q_^gn&s*>LP$)&DC zca?VzTA|$%yJt0gZ~%}#w#+8t6t~7rBnh`cC{$L^R@llRTl1Sg#Jk!l8~NBr{;1St z195(575rFK`$r3H&^uXZYH+~;9n%dimP)9nL4lo92n1Upp4D)Hot zI^3+DrSVM!JA`0H)5%Sn3^E_Ki3P{^r%_PUcT%8hK@Zp5()sqCMYG10MSA9LvJR~n z3I%$#zX5|Bz^;yzpV1)vkh^I3-J=)9GD71@S_q3JvZ)E**>9Um1TJIx*-tJ={v>_M@OH%F*N7U+h}kp#do%8D`BlGA3M zzZnSk@7HCXrucl5x=NX0rm=!urgeUlwny!VS8ctq69_oJSf+6)F{VL+t9FZ>^=d|3 zn0v~&w&P><(4T`aQ}M5~VSs+9W$+Jb7y$c(41}=`ob{9klrxGPg^=)nIi*JgAgx7N zW!CQ`*f$St{ZmR?HP{71u(NGUp-XYaUMNF48K@-~QNd=pH6JR*1R$-m8v{DnS>SYP z7!@#&UhbxFFx(rJ1DD}KG_FTH<|ue5d3c>DbN#~9l{N($^HljPLvBTsg3$qHgh%W? ztj@Xz5L^R%rr6ICFZZ#%(bQYPTO7cpql!1Il3JY7DA(|5B594`Q_4KUb2tq|l-2-XxSd`gp>)*(X0wS+1d+5gr87}xE0Ky6Jd&!< zD>tK(u6+`HSw{iWry&$G$r>ar4xNR z|9R2z#oy-PbKvpdYL#{QL10K0^|@ z7H%Pr0vD;Kdj0}}FbhEWm?n9%F24i(yg0e%0piWmgE^FP8+0ZLEpmzi%=mhuC;{0q z=vqi0F#IA2$w0-hNtwD(W7lUEb6k5D@JU=F4Jk>EeA4)|8^r$cAi`EtZ~y%kXPo>e zT1ZL1>=4sR^^XJN&+O;BlIF@`>+%vs^OxR6l%T~CjiRx#Aj~%4;pCb}Bc-T6>Zy*S zm&fF8m4u$PcAVNf;h7;?WuFG{tI!&60pP{u6Amv3`D8keWHcK-a;hJWL4P(9z++I>X zz<(uj@w7ZAd*?O{Zp&q4dDy@2d%A{bsNG?}Fwp4yg6h<=#S2hz*q-xz@8ER`&Mt4P z>>qmy`?H_t5n29qoDiAB1$PU>;1b|nV+a8NfVvi4iLmk8R;j=d8EWvDyiQ!aF-XjT zlif6>Bm7v^p&(!V`J0RM)qslyA@<$N{1cOQf^#phj>~)l!SBftMcVl60c~*z^=ajK z`4E$qo%EX<`Q5@gsb!((-f{`7qN$RSym}09Rt)ENbW7Y23V?GAX6W zP7mpuFC|#(oc>SsL#Kt4A4FnN2z)nAFdZ!~E}s6teo`0ReB060m&k7 z=q-74o;%yW(0ATj?>W5o>{`+X=CJ>x=&GZddf)h6u~7r* zP64Hr4naUbMO09_hJF#08m;6;Dj*0-D3Xc+2t(=G1q5T1AR###BsLV-B!Bzu&z+sK zd+vMh^FGg~-Xi>+g~-}v3A3rZfJw~=z3;Be`Oa<>x=J_YnU6f*q=;Px2@@u@uN6T%^>W0>Gu*T;)2WNOm1R-+#2OtdrZew9mf=>U6VTo2c!2U){tikqR}dUB~KG8M_Ff_YyYFsr4oqn%gv>9o!c=sdoB-|Fb(c9t@# zZWobYAAqLI+$(ZAS?9`Nh3&)I18f-mNh6zkF1AL+@Rq?kp1sDwV9e1{7_e`$gtpIo zMdX<&eAI4m=Oj8)+a^ToIPDA+V)jv!a%EL_d>S%798bAs>^~M&{SQ%*pR}uXPwyPE z<@@YgEGP%1=W~HE0b#rHBRoa|W~!Xrqo2QC&vvhzW_5jVCG?b zy8bibM7**Y5LV?}P#asg4`E^om$S9Z-xJ&SFN^3Cp{-181Ye_|BU$$7wl-m&Z!zs| zWku=Oc1;g)RY2?nRz&eLOIuEzohUnQ>{Z`S6N`E-FW*e&k*)-E?#4wlhOQSRw*3i8 zE@7b6$9<(2P1(ZdbujH!4Q_X5qP=+v?5toeeixF4K5p72xDdx{_RF3M9CZVl+-#8{j*jGSkRY+_6%|y)cTWAT!WhNM3-Uvt ze+rDx0)gY~t@aNWH&Em^8Gr3puI{Y%7Y#;Wv$AP*>yT0uPE zk=HoIzwtMsCuGTS3X+~sbZvhV8ePSQlSQ(5Z(ir|RA^DOUj5GkmDe#d@##=B@yvkD z1Lhi=|9&~w%NUU>Rn?(jIFAhKY9Lsm&vfYXiED3%r@c|rZq)80?`mGZI%@^|h!3tp zg3O1Ld@r8D`@+6H+&PI<{HPi%9`)$ls}huVgOEZmO?E9|H$c}zF8tRCk(>+j@mc28 z@<2E9S_^lZvV1XZDcoJ9J&G%?Rx# zB5Jt^X7Hg9mhbYJT3fTOd;|vWvY{wF}45pn2i!iL2EMvDjdf3kVqLceb3SO$BfT8Lhv`JUAq%Nf7~bU zWpn*{SBn{@F~cpq&h(K8!HewJQN{y;_2M9kmM5J%k@0#}+EzTA*(5>@VYNan>$oxx zUz&bhjNQf*@Q*gLMh_nj;wXDZVU1&HuWz8qUbR^~&2Fl?ud2P79Z1V0 zrcSaJI?&5m!wTdPyC_1pgE8XNxk&}We=?&!UN2~Q*F}=sW|(68nLLtfQhW1_yoCSg z6OxL!Wt=iHIk#y!9d5%T$H|bTtBGW7#aW7{e@sI$i^XKscAJo*HBpfY2YH9d6AH&> zvunx?*T9B&N~D;;@T`L9SSHfdHAREx;nMxf&vE2M;mjuH)KCsnx#Is|6=`e2ZuGp> z$X@75*QQ-~@SK{0Hw!fl(y$oq@S9z&9@C>+)e4B|vMLxL)`E}Z$yz&G8jNAxDZc1| z5H6!|#Wl+IXBQ^0qx6Mp^xrq?I{g023QcZ6OR_erPmgH`r`JczC{FhwR&~h8CdISN*>I>R!VkN>yAoDgboFbwLa4 z={}e?&j(^-kOOlPL?IqR)te9qc1SYiYJiX*t6zfn8|0zmG!LQ`qLkV7-?B;^jBi6D z;!Lz(vtMpe`E86vx$i>10BJ7RR+Pn;VejH^h%oPI2)|}-BtzC~!Ss~FKmZ`>Sw|pZ zN~g{P;}?$Vna68Y^*3=7Ecr@?&CJM2IQ3Ep$Ka)X9yBTyme|I4UX)KA;O4{8xwr1% zQpRVOVT|YkP;hQ8TC^urVv&n3#bNRmFhkFLLSTJmV^%4#%ZY1o-Im| zG18-m{2qW~;yV=UV~7BM%N3c2=I2yn8_&vGARgM)fC-|TKhDF2fL95ZW=+U`LJ^@f zZ#J=da385U!e4PDj2773WWzADA@M%KeZc)IkZ4vwTAr{M1|fda8Th~%JOmLxeYo3t zTo()`QNq=JofsI*7$@()YlpVyfB(0ZV9$;`xb++Nm{_u{ibhhMMYpv^W8G-&oA|dk zPJ03`XTDw!0(I5?h^4{!)>63Z9-K(reAjhPj{)FWE;gD2(wnR4oFZ~@0idSKL-&AO zq=I}Eme_h!?^IsRu#6m+z^0i&Q0x1@-Q$;wk{iEqu%oi8LB~$IWR)fng1QKGPjbcj zSVO?6H;c4UwTQP#o^?l7h-M&c*>x~Gpo9RBW8|es&ALzauRIC=5cB-xLCYJMvW?Ea zd(W|;uJDM-AWyd^zo(~*tN=nxyDCw+_UMo;{*^g!@W;`hVe17ZVRi`#=S$~@ zueIbZi3fsTvY}T|sgP_bMPEUjjRV&hge`7H`5b}A{n0;Oj+Ove#fRt6#11^H4GY+% zy;|pc;@SzDkN)xe6oOEr0VqysxAY!1Se9|4n2in`e$Z*i5YXoAwUutWw3@=v9pkOWa9d^Ve`HAd56>$BHtIeO{bN5nj6FvP4(BH(1yTIKIxn7jVMz~;MO^P8xvnDcr zLx)_^V(jPl;nTm}rblSRQ^DXGHSD4P?IW#3KdSKTd%F~qfxtsb+#pg*@@`z)IkW)q zYLGEE$xhxPi_&Q+k`?`t_&*iDA3WQ$Xu!NY1EA}qT2JLm7Z1ZyPGrM$3IgFlCxe;E zjq23yy!O$FD|};JBEurs&DbyaiH3&u&VJy&vp+yyz*e|eR1d)KI8$Rud&}D=QFY77 zn%Zd>kKdvWHl>&2Cek<;KIpkF6M`Q&weB@$!~B3S1Uw9UT>GRoU|NeW!TtnRjeQ+@ zwSCPuk+}T!PZcQLCHoox!+6kRaGWHe@^$fw-fzyHFPd z!hW47AfDrt;R^5g51$3HV5ZQDeDrz?>O=be&M zHhta4!S1L~-}UvtNS_a?UJ@m*2{Idf;fY?kZQs)hs)^B8pMdF?*UVKXNxWpAXdEWeetC-6Zd~>XJVngfrb|OweawWIZY5 zy16}GY1Q}P)^zBL<3-ATz`F1=uC{4J@ERvWR1%wF>?P3Cda+*sw z42z|@O4r_3vj;KOPK75lms42NW?69@gKTdZx+JsN$~C4TofV}il_`mqH~SxSrg%DP zYOO)F*(H$@pg{#LO8j#5Ic=mc{U2TSWKg@D@w6F}0Mw%J5`>71VFgI|{=t1AThse*ZqSFhPGbAVIrG6+mler*(6NOB%dBko+K-?-g37^+=VtPMBg@(L@l?&W zn<8_Ipi(EaRhz6*TB>|sq~>vLPM}gCIDVZ8lkf)(m`U7^nTVCF9;CfedR&@LXGleo z3%exl7*cy7xzDP;s!Sk>Mm-L-GRp9)7nZ_W$!dwCU96Odn=hS2vEY1i$3Ss5On^qx zxHxMWuM=YeDEybFLl&?t4Z8V_JcHC3g&jqkbLvG?w*D6RYKlki^81;UpdAY?31(l; z1V6HWLn*THaUbw-9$AK)VTd`@FHOj{I`{7|f9Gg{nr)1*wHJO1L@kpx%vgO@Z>dnF zP5#=S@uCl%j$$N60S^FEbP~D^v%=b0Z`WtoVIZK;27(*#u z10pZT1S39clQnVa=`u|D@x=*kDhp`3^^p*iTDu7^_ygLd%`msm#R#)0D-;=K+g^jZ z-peKJ?~$`d4u(6ds~mv6yj5uCMsfjG|^fI|7F9k@m9M2C@JEsn?vt)WeQG> zN_^#hXJi@EtB)n#24oKuU7Qf02cqU(OR}3IE11LMjzDXNcKRY&L_}{LKc;wdik+nX zxXE^yr2k*#PejM_adfV+m!GUpLXq2(3)CA9l6>1y9#Yh68;YufP8q6To&-|Fw6OQz zJT`7)WbK&hizL=oW(^dGquB>F=WFVHDJ|?Vh$ppV|E|JQe zR?C6*@0{WeJB)#En=VOj+8qzw`+AOdPB$_SF%S&2pgM1=jh<)qO=-NxD+a6F6EQ_= zLwzS8UpUR)!~D)`U!TP>3gZbc5$tNr3<*6e0r$n|{!UUPhN)atXZa`9rV~$zn4$!p zj;(b-GvM!AQMIF!{%Y|2byHni8p&bcGUl!d86Tx!{ejKm^h+rLq|fsC8;PYalubX{ zRufGH_HI*IV{Je?BOlrONE*pmP9YrgK>dQ4_AdBAyT;&M_n^TOWMao)NJ&&$+c3BM zMp?(xQkfsP+{V^)M|V`qt!Qm_9fjb-GNa+VrD$Z|g!Z{nreNQ}M2h2nOrtN+>R*M@ zb2-OFwzT`K)=U%H$9kL5$Tkk+r8qR*=x%R0Y6z-m82@J~%@SP6jxTyDRk8g7d?4o| ze8=0cf65bm2?#^YEGN?t>HN1HL|#ZKf)fvvw_)q1;pMK(=XA)A!0*!^lz*jM;N|0M zc-Prf@FE+t+64;x@+J7WJ=%^|EE#Z3tWB4y=sR1%;TpafSFK1jX~5*AFX98*Ww1L5 zwKvaY4eaG65E6>c@$@ohWh0q7T=wH8IMaHm@XwVN!Xn+b_rB10932M!O}gu2CmH6C zpJO}1^qGL!aJ*j#JBojxREe9M+1KL0%nm&6YDr&=$t!X>irQMPn$~^PH(anE6lm12l6WgALx|ww$AUCd5@8PG*UO1mC$|8hc zQk>3{ zV;>0awt!mym+i3r;W6mMhgln%#SuRpEr4k!q<*UHA3qCMDe~9t9Mg^UmRt#($w=((N)V0nYt-b6H9LW0Hmny>J&iG8kfE#hC!}u#!fwZtyTcM!RA;|)dHKV0m=oFLy?h+P*6%zRniMk{1XMTkbeRePt~dG zcSVHVssF`kS@DgHS)iIubv9k}svu{5*|56AdSB4Icmid3gJTMT(PLgqjcPxI*m@%G zlxe*h+xgsBF)2VG_Rh4+GY>XdennaO!hbpspHFywsQf6T!&iM?UOq8(hoTtcF|4l=mGn+c^ouvQ6_dkKYQwy#ypbO3T=Oz0Y@}%~OmCx! ztXx#nIuT30hZ=|I$DkMgo{sjPnmhG5gN?Q%-7mXt&Vv@^=X zUK=y1!Xko|d+0z31R+oQBd^5&U5sMusBQ7Lm3#~v`LXmypyN!qT)>4IJ#x~oOm&__ zWs`xD&&>TN<9`70Pj7zQ8Y%kyz(txcjzLzRb>v@Yye`L`@ODX{@|Ro8dgwk>Ij2GG z)u|Z{=eEDS#u>7fxCwbbXq1{$ddXawz~?QROypY3k>I=*|CxQs$>nkkRsp8R*=;c{!diz`{^;-z5)mZ_ny2p;^+5~^pZ$*{C`iGp7P;h zCTv6zJByQ~DnQ+;K_63NVmQk2B)skdq0=r29|ekEvutNg3Lt8t`7rN$Kk#B?t~Si# ze5oSX{Pt_W41*7KpLAdsZ6^DiV>W*^z#O*f!D{ZUCdU?=RQ?gCdaLz=BtKhFz`$m3 zsh$rzSizk(Qfj(=u5{_1>*qpu${$Yki0BD~eJyu2r+>398Ni0U3h$%gSP0z~gzH0) zAhy!G@8D~;QQ}zrdMhTwXV&riK7Nqz#b5W>quhMXIUZlU45J>J(^$Pj&=38^E$&LO z<=YzT;m&dB&)V%(f9IGVV=8vzWUcTF$UWY<>~%sfBU+s~=93~dEOACDu9nA9Np(43 z%$966q=6|Z=z_J?7lpiJoreb5C zLtkeD{yd3qI4u^1<3jEk(EsBkqP{rwSe|&8!?Io$48?l5h&TVPNoq}ixsncz?VgW_ zRHaKzQv9|>f5pOmEPKrBB(lh2NgAXbrHehwKMfG&jxct-=|T)d)zqGayv%x({1u|s zG_E|>T6Gd%IsvU5N|>)$^0ooC%-WFe_VrTdzq$|}Hl}fB<}Dk+FdNAj^gL&lq?a7w zK4w`(&bnjf^of>p>C!>qOe3V=YCIpZVte?qR}jeJ5YV2NN*uIF1+^?8<=FOc`7ek~ zE$!6K4B-YcAEPFZZ~vH%`}vMx9=^Q;Yf$VqZexo4aYagiRxa)IR0>7Zf9(A9^{d5L zbL}2UQCveLWvD^;YTHl?A=W+|TTj7V4Tpz?^&Dkq_4SbDgWhe7Big88Ctv5qeyTPP zdvNgqb-&@1_m(N!U=Sh#2O+GU!}}M&+G;p!9x))V6~4`!nNNs+tXhsrnNt5bYg-RJ zjuO9VOku&qRjx#zX$Nves4iQ*7Zb_1GaAXSIW4L!P>!erI_tHpdZ`m}wm=?2mh}p1 zd;vAxQ0b#EXjZjk2gGp6;4F|Y;|ops`2p<&Z2i8+CZ!sAbUu6-W>_qWCpWQfvYB+w zihvuO>JKn68+wAQe?ptdz7j8JPbCjVRPGWgIYx{jx7JLAk~SL{XgM_y4jaF4IxWSx z{J!^Kpv-`8-`{Zs*UQU#;omyww8fBk5^x3Dzzw#WUVLnMaRDb<)-WT|;(^Z9kYq?$ zp5ZxY4%*hkkE5#2YwXPAs+*A~56|v>xVRJ_M4gNM2K~f)DY$|Qnj*&Eh-lluHJ&&v zL$EdWX15iKJMxpF)?O~itFMa5_yC?Ynz?FfpQi}#RmXyN(eydv;_$5pp|Zg*VPYIc zPuc1=)6c?{UVLMW{^rTm*mf}IX|;8Aw&=BAd{{(xP=J>+!DLjUfHm=R2~%qAx5z79 z|9Y#}X(MFH`=w|-(}f58w3NJ%H0X^h*uyI;+xt^DL((=_R^+kfDHXPR248LdrWpfk zE})!&Ka?IhC|%3BeNv%)j_3PHc+_(~_hH)TM>Ou=bIGgEfWFTWn#n8z(_d*Hl0CU8 zzqG|-`^>VSIe&{nR8h+(LjemlKsdHO0{=<1CcY>{CG%UAY%oKKkR?SgMAP*qt1k6_ zJ_|f$%JwWpDKuqX&q^#beQ<*B@0L_WE<;&V3;MU5Q6^d&CR~ ziZ&^kw?yu%;6naIoGIhldxHyx^sM00M2Y4<3dIwgo-7oe+12W#Tngt`O~PngCKRYp z+#5n3tmVJ`t%LdO_yTsv6s71Qq;0TRxH-`;119Yy@s}*jZoT9QzS4ImD;42{B#}UXOYvvAh0j? zMZZI&N5Z%9%`>{uS#8%=vN7JDB)xuK!>|ypPr-APwaen~sPBke`}eVR@1ICEN{lbd z!IFR7A6X?y%cGokl)yNhj42(e7&YlR{mQ}Zc-n2+;#j!QmNzLsCx*CW6Yp_k*Uf}$ zd|1p(roFa;<~7ef4k^LS z7w7nefHeSj{Jw&7&4076!1RUG!+92_TO~|Fg2^v)S(wb^RuCyAcvP&4J~H_o_7O`7 z7S-`c>Y;=p;}@p{@|=tCkD>t>%rM#Jh7;}6OkIb%c1`Tk*9y4@3Qppn(dwVB(4q? z436Zy6q}ykDfbT6uDI|*uE_;*L#!BU{UPg6`ikBbKPF4K3#6~oOSK2kGz@0r~Vo*DWek|n+ht?t93Vm#R^YacYk1h2+g zAS2&8qg|~QaN<28gm2C6?y+4^;-7<{^SJ^HC1jn{>SG4$&^fdEW~yiyU=)aWm~xZ* z>cu9QE%__-jgy=ua#!SQ_Va%cvx`)WSC=KF(kSY>=dlCJaP zXz{Z6EdnfU;=0tNKLTX5&>