@univerjs/engine-render 0.24.0 → 0.25.0-insiders.20260608-e4336f7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/lib/cjs/index.js +1049 -256
  2. package/lib/es/index.js +1049 -256
  3. package/lib/types/basics/index.d.ts +1 -0
  4. package/lib/types/basics/tools.d.ts +1 -0
  5. package/lib/types/basics/transformer-config.d.ts +17 -0
  6. package/lib/types/basics/zoom.d.ts +17 -0
  7. package/lib/types/components/docs/doc-background.d.ts +6 -0
  8. package/lib/types/components/docs/doc-component.d.ts +4 -0
  9. package/lib/types/components/docs/document.d.ts +6 -0
  10. package/lib/types/components/docs/extensions/font-and-base-line.d.ts +10 -0
  11. package/lib/types/components/docs/layout/block/paragraph/language-ruler.d.ts +4 -0
  12. package/lib/types/components/docs/layout/model/page.d.ts +1 -0
  13. package/lib/types/components/docs/table-render-viewport.d.ts +23 -0
  14. package/lib/types/components/sheets/extensions/border.d.ts +2 -2
  15. package/lib/types/components/sheets/interfaces.d.ts +4 -4
  16. package/lib/types/index.d.ts +2 -0
  17. package/lib/types/render-manager/render-manager.service.d.ts +1 -0
  18. package/lib/types/render-manager/render-unit.d.ts +3 -1
  19. package/lib/types/scene.transformer.d.ts +20 -0
  20. package/lib/types/services/canvas-color.service.d.ts +1 -0
  21. package/lib/umd/index.js +2 -2
  22. package/package.json +5 -5
  23. package/LICENSE +0 -176
  24. package/lib/cjs/en-us-Br9JW6Nt.js +0 -45
  25. package/lib/cjs/en-us-DKyh_RpA.js +0 -3
  26. package/lib/es/en-us-ClVoWMyT.js +0 -57
  27. /package/lib/cjs/{af-Bsj1JSBP.js → af-B2UUzO69.js} +0 -0
  28. /package/lib/cjs/{as-s7lqjieq.js → as-DbZDYp6O.js} +0 -0
  29. /package/lib/cjs/{be-L5eMFm5U.js → be-BBx0lyG-.js} +0 -0
  30. /package/lib/cjs/{bg-DPu8oywG.js → bg-DeX16RKi.js} +0 -0
  31. /package/lib/cjs/{bn-CIWO--x0.js → bn-3fjitMC3.js} +0 -0
  32. /package/lib/cjs/{ca-C4gmkbL6.js → ca-BxC8Zblv.js} +0 -0
  33. /package/lib/cjs/{cop-BYQt2Eln.js → cop-TvdaSBlz.js} +0 -0
  34. /package/lib/cjs/{cs-psn0RDcR.js → cs-MSNfJH-L.js} +0 -0
  35. /package/lib/cjs/{cu-CI412h46.js → cu-7FYbjEBr.js} +0 -0
  36. /package/lib/cjs/{cy-u9h1j59b.js → cy-CPuxVqb_.js} +0 -0
  37. /package/lib/cjs/{da-BQ70NE2J.js → da-BWsE849b.js} +0 -0
  38. /package/lib/cjs/{de-1901-C5Xgq4-z.js → de-1901-BYSTp3Fp.js} +0 -0
  39. /package/lib/cjs/{de-1996-BmpXhD5R.js → de-1996-DWtCfm_A.js} +0 -0
  40. /package/lib/cjs/{de-ch-1901-mUpubovn.js → de-ch-1901-rWVcF3cs.js} +0 -0
  41. /package/lib/cjs/{el-monoton-1KLys64v.js → el-monoton-BEUGM9Fi.js} +0 -0
  42. /package/lib/cjs/{el-polyton-C8sv-vqz.js → el-polyton-Bvh6HAfD.js} +0 -0
  43. /package/lib/cjs/{en-gb-DidBtNJX.js → en-gb-Dcrai7kY.js} +0 -0
  44. /package/lib/cjs/{es-C1gCT0OW.js → es-CVNdGI0L.js} +0 -0
  45. /package/lib/cjs/{et-UwA1uq3o.js → et-7Rdfp2-O.js} +0 -0
  46. /package/lib/cjs/{eu-pizKbeo6.js → eu-DyEtVwHo.js} +0 -0
  47. /package/lib/cjs/{fi-bkmcjeIB.js → fi-DzRES2Ke.js} +0 -0
  48. /package/lib/cjs/{fr-DTRdyReV.js → fr-DJMVMLCz.js} +0 -0
  49. /package/lib/cjs/{fur-CzaEPYy4.js → fur-CzhK3vxZ.js} +0 -0
  50. /package/lib/cjs/{ga-DfpmmLL7.js → ga-HXzOFdlG.js} +0 -0
  51. /package/lib/cjs/{gl-BvPLj87g.js → gl-C5TM79ih.js} +0 -0
  52. /package/lib/cjs/{grc-CWjbj1rE.js → grc-CPQF-xFI.js} +0 -0
  53. /package/lib/cjs/{gu-B9b71pv0.js → gu-AqCkEYxo.js} +0 -0
  54. /package/lib/cjs/{hi-B0PM9Naw.js → hi-DugLLbv4.js} +0 -0
  55. /package/lib/cjs/{hr-hhdjugdi.js → hr-LSMYFsyP.js} +0 -0
  56. /package/lib/cjs/{hsb-CUC0Vhy0.js → hsb-BlnRYHkg.js} +0 -0
  57. /package/lib/cjs/{hu-DNqLSdxp.js → hu-Dwvtkpy7.js} +0 -0
  58. /package/lib/cjs/{hy-Cr37-HYR.js → hy-BsG06_IV.js} +0 -0
  59. /package/lib/cjs/{ia-_xcaTvlU.js → ia-BMOUZLGD.js} +0 -0
  60. /package/lib/cjs/{id-DTTt6JOe.js → id-DhSs0vqq.js} +0 -0
  61. /package/lib/cjs/{is-BlJOUdIf.js → is-iJhrS7Aw.js} +0 -0
  62. /package/lib/cjs/{it-1kO7pboy.js → it-Aam-BmsV.js} +0 -0
  63. /package/lib/cjs/{ka-06TLrBSU.js → ka-CfLSYpVb.js} +0 -0
  64. /package/lib/cjs/{kmr-CqLLMgB-.js → kmr-DYCscIsi.js} +0 -0
  65. /package/lib/cjs/{kn-DsgCykwv.js → kn-OCEDIM_O.js} +0 -0
  66. /package/lib/cjs/{la-BtfI1L1Y.js → la-DFS3RPxE.js} +0 -0
  67. /package/lib/cjs/{la-x-classic-Csxxqk4A.js → la-x-classic-BocVpbl6.js} +0 -0
  68. /package/lib/cjs/{la-x-liturgic-DP4lkHMh.js → la-x-liturgic-CpZYm3b6.js} +0 -0
  69. /package/lib/cjs/{lt-BLnhu8cj.js → lt-NC6HHzxn.js} +0 -0
  70. /package/lib/cjs/{lv-BWU1ykNC.js → lv-BMFTm6cB.js} +0 -0
  71. /package/lib/cjs/{ml-DCPEVUGQ.js → ml-DDWi25Fi.js} +0 -0
  72. /package/lib/cjs/{mn-cyrl-R4Uzk2PR.js → mn-cyrl-TCUeX7is.js} +0 -0
  73. /package/lib/cjs/{mn-cyrl-x-lmc-DcrbbdVO.js → mn-cyrl-x-lmc-BCmp3Ybn.js} +0 -0
  74. /package/lib/cjs/{mr-a95kT02n.js → mr-1gjg-u15.js} +0 -0
  75. /package/lib/cjs/{mul-ethi-Ha-646Ih.js → mul-ethi-B9a4BMM6.js} +0 -0
  76. /package/lib/cjs/{nb-DVDq5SId.js → nb-DS_J6lre.js} +0 -0
  77. /package/lib/cjs/{nl-xvtaATgd.js → nl-CBtSVLcv.js} +0 -0
  78. /package/lib/cjs/{nn-Dd3GYfsu.js → nn-DYJOn4Sh.js} +0 -0
  79. /package/lib/cjs/{no-Ccuz1dXv.js → no-C20NyT1P.js} +0 -0
  80. /package/lib/cjs/{oc-DMNrvVUu.js → oc-CrKqER_F.js} +0 -0
  81. /package/lib/cjs/{or-BBnbptii.js → or-ZqEtsnaq.js} +0 -0
  82. /package/lib/cjs/{pa-Bpqjl4TY.js → pa-BD3r0Teo.js} +0 -0
  83. /package/lib/cjs/{pi-Dw9S8R8a.js → pi-CQUwMUvz.js} +0 -0
  84. /package/lib/cjs/{pl-BxIw_3q_.js → pl-CawofTLo.js} +0 -0
  85. /package/lib/cjs/{pms-ts8oJNTo.js → pms-DMqDXwo-.js} +0 -0
  86. /package/lib/cjs/{pt-INYdw9le.js → pt-BIiUaINZ.js} +0 -0
  87. /package/lib/cjs/{rm-SrIsmyuH.js → rm-B_-8T7Y1.js} +0 -0
  88. /package/lib/cjs/{ro--lDLf93Z.js → ro-B2Xhfkgx.js} +0 -0
  89. /package/lib/cjs/{ru-CnviOn4F.js → ru-lj-rTTpe.js} +0 -0
  90. /package/lib/cjs/{sa--YzUfT9m.js → sa-D3h-cY2Z.js} +0 -0
  91. /package/lib/cjs/{sh-cyrl-C-Y7f9iS.js → sh-cyrl-0o7p_z-7.js} +0 -0
  92. /package/lib/cjs/{sh-latn-DE0Oa7St.js → sh-latn-BTi9p-0q.js} +0 -0
  93. /package/lib/cjs/{sk-CL5uDe3A.js → sk-D6mOX2KK.js} +0 -0
  94. /package/lib/cjs/{sl-D8ckCfPR.js → sl-Bzz3gkvn.js} +0 -0
  95. /package/lib/cjs/{sr-cyrl-CZdv8WGY.js → sr-cyrl-V07WO3rb.js} +0 -0
  96. /package/lib/cjs/{sv-DYQd48Sm.js → sv-CyQXUuzx.js} +0 -0
  97. /package/lib/cjs/{ta-DOa0x7zq.js → ta-Brwz0zYf.js} +0 -0
  98. /package/lib/cjs/{te-BtexCVtn.js → te-CgvirCa4.js} +0 -0
  99. /package/lib/cjs/{th-BJUX68-0.js → th-PlSNhaza.js} +0 -0
  100. /package/lib/cjs/{tk-CEs8UQxA.js → tk-O54r2ybT.js} +0 -0
  101. /package/lib/cjs/{tr-BMiKDMrF.js → tr-Dh1h3Dno.js} +0 -0
  102. /package/lib/cjs/{uk-B8pzUYbn.js → uk-E2mCrVCU.js} +0 -0
  103. /package/lib/cjs/{zh-latn-pinyin-s8_52NaR.js → zh-latn-pinyin-C2RfFfDl.js} +0 -0
  104. /package/lib/es/{af-I8XQee0A.js → af-DK_CjRn6.js} +0 -0
  105. /package/lib/es/{as-DPw4kbfa.js → as-BPtSu6VN.js} +0 -0
  106. /package/lib/es/{be-hSu5_2AE.js → be-CrQ0smca.js} +0 -0
  107. /package/lib/es/{bg-eIV91Ges.js → bg-CrQqGwni.js} +0 -0
  108. /package/lib/es/{bn-CF0YbkEW.js → bn-NCLZcWHi.js} +0 -0
  109. /package/lib/es/{ca-D0fayQwW.js → ca-SUf6Y2Om.js} +0 -0
  110. /package/lib/es/{cop-gnNw8zDV.js → cop-C3sk0IUo.js} +0 -0
  111. /package/lib/es/{cs-cUOdqXi9.js → cs-CmAteokq.js} +0 -0
  112. /package/lib/es/{cu-CJJk_6p3.js → cu-CBUlrW6Y.js} +0 -0
  113. /package/lib/es/{cy-he1_O-US.js → cy-BBPa6z2x.js} +0 -0
  114. /package/lib/es/{da-C_Tc6C75.js → da-CCDXfXtG.js} +0 -0
  115. /package/lib/es/{de-1901-D9yvXEO8.js → de-1901-CWoAOigE.js} +0 -0
  116. /package/lib/es/{de-1996-DIBM3qkD.js → de-1996-BL6awyxG.js} +0 -0
  117. /package/lib/es/{de-ch-1901-BEDgpl3-.js → de-ch-1901-hVThVHVb.js} +0 -0
  118. /package/lib/es/{el-monoton-BvjPOyvW.js → el-monoton-D3aKqTz2.js} +0 -0
  119. /package/lib/es/{el-polyton-DfJ9Eeih.js → el-polyton-ogVWcTzh.js} +0 -0
  120. /package/lib/es/{en-gb-DYXoK50H.js → en-gb-B7Al27b_.js} +0 -0
  121. /package/lib/es/{es-48latgZ8.js → es-DcaaHPU_.js} +0 -0
  122. /package/lib/es/{et-UzX1rSXY.js → et-B_spaleu.js} +0 -0
  123. /package/lib/es/{eu-ijD7H63T.js → eu-Ctv_kq9Z.js} +0 -0
  124. /package/lib/es/{fi-DDuxAHu5.js → fi-RW5VB8Yp.js} +0 -0
  125. /package/lib/es/{fr-6wTrAsbK.js → fr-BC2onEz9.js} +0 -0
  126. /package/lib/es/{fur-CcIOY8A9.js → fur-AC12wySk.js} +0 -0
  127. /package/lib/es/{ga-B4Qvh5qS.js → ga-Cn6LkudM.js} +0 -0
  128. /package/lib/es/{gl-D8H7uN6B.js → gl-DZGc-K_G.js} +0 -0
  129. /package/lib/es/{grc-DFNi6G6p.js → grc-DOlGgO8T.js} +0 -0
  130. /package/lib/es/{gu-0EahmEdu.js → gu-Bjl0l-cf.js} +0 -0
  131. /package/lib/es/{hi-C2ih9xmB.js → hi-DsAaTPCC.js} +0 -0
  132. /package/lib/es/{hr-CSbbBNUu.js → hr-DT1SBBes.js} +0 -0
  133. /package/lib/es/{hsb-hKsDwaW_.js → hsb-DC_ITc1e.js} +0 -0
  134. /package/lib/es/{hu-BPixuxjf.js → hu-DVk7Y_ka.js} +0 -0
  135. /package/lib/es/{hy-CTtThTdl.js → hy-e995ysyO.js} +0 -0
  136. /package/lib/es/{ia-CYCjbabb.js → ia-Cr4TJH0c.js} +0 -0
  137. /package/lib/es/{id-Cgsp-bEu.js → id-DifDyWg9.js} +0 -0
  138. /package/lib/es/{is-D_Awtowh.js → is-BT8UVRze.js} +0 -0
  139. /package/lib/es/{it-C2qJSkm3.js → it-Bt_Meacx.js} +0 -0
  140. /package/lib/es/{ka-DpGw5nvd.js → ka-jyoLzyDE.js} +0 -0
  141. /package/lib/es/{kmr-CCdNyB20.js → kmr-Cfwhwuff.js} +0 -0
  142. /package/lib/es/{kn-B4tAUtFU.js → kn-C6Lov-DP.js} +0 -0
  143. /package/lib/es/{la-DIUYl8Yo.js → la-DuvHjUWw.js} +0 -0
  144. /package/lib/es/{la-x-classic-DsbLrq-C.js → la-x-classic-yTyAOQEt.js} +0 -0
  145. /package/lib/es/{la-x-liturgic-Ggenbcb5.js → la-x-liturgic-CXeQb4FY.js} +0 -0
  146. /package/lib/es/{lt-BcizI7gZ.js → lt-BBe8DlDF.js} +0 -0
  147. /package/lib/es/{lv-BOgrbf6v.js → lv-Q2BBHnzp.js} +0 -0
  148. /package/lib/es/{ml-CTD7giel.js → ml-2xLVYkVY.js} +0 -0
  149. /package/lib/es/{mn-cyrl-CDxGttkw.js → mn-cyrl-lHM4n0oC.js} +0 -0
  150. /package/lib/es/{mn-cyrl-x-lmc-kjrnm3ii.js → mn-cyrl-x-lmc-3aetruI8.js} +0 -0
  151. /package/lib/es/{mr-DttMNydl.js → mr-CjWJPVmH.js} +0 -0
  152. /package/lib/es/{mul-ethi-mmW8ZEm0.js → mul-ethi-D_CMSMEq.js} +0 -0
  153. /package/lib/es/{nb-DCiD6jLz.js → nb-DI8u59ch.js} +0 -0
  154. /package/lib/es/{nl-BKWsn_4x.js → nl-BHQJ6Gvn.js} +0 -0
  155. /package/lib/es/{nn-b0W3mz5j.js → nn-ntZvarUK.js} +0 -0
  156. /package/lib/es/{no-B3l46gib.js → no-B8ItS0F3.js} +0 -0
  157. /package/lib/es/{oc-zkqkXjNo.js → oc-P_i3-xLA.js} +0 -0
  158. /package/lib/es/{or-DEnI_Cls.js → or-50rxpoq4.js} +0 -0
  159. /package/lib/es/{pa-Sh-QSMIs.js → pa-C54UG8eN.js} +0 -0
  160. /package/lib/es/{pi-DxMx4Uwd.js → pi-B9cgjyG1.js} +0 -0
  161. /package/lib/es/{pl-CISKU0vg.js → pl-9fg-ESVt.js} +0 -0
  162. /package/lib/es/{pms-DUga94hR.js → pms-BRGfm5gS.js} +0 -0
  163. /package/lib/es/{pt-CzW61i2q.js → pt-Cum2_NUC.js} +0 -0
  164. /package/lib/es/{rm-C1U6i4AB.js → rm-C0MIK9N4.js} +0 -0
  165. /package/lib/es/{ro-DSU53KfM.js → ro-0fmdH0HA.js} +0 -0
  166. /package/lib/es/{ru-gduZDLhv.js → ru-v4l-ayaq.js} +0 -0
  167. /package/lib/es/{sa-Bney0xbB.js → sa-CKY9c_Vq.js} +0 -0
  168. /package/lib/es/{sh-cyrl-CCByyO89.js → sh-cyrl-BpCRFOmq.js} +0 -0
  169. /package/lib/es/{sh-latn-CTIiTfzt.js → sh-latn-sRy4Tuaj.js} +0 -0
  170. /package/lib/es/{sk-DK-iy-nO.js → sk-_iOeDNrQ.js} +0 -0
  171. /package/lib/es/{sl-BvzIjkCq.js → sl-DpiklF-D.js} +0 -0
  172. /package/lib/es/{sr-cyrl-7T4T5Th1.js → sr-cyrl-Dpzrbd0W.js} +0 -0
  173. /package/lib/es/{sv-BynygC4t.js → sv-CFm5y56M.js} +0 -0
  174. /package/lib/es/{ta-CglfOvwm.js → ta-BcghgTbD.js} +0 -0
  175. /package/lib/es/{te-Bec4xJud.js → te-B5Spl2Jk.js} +0 -0
  176. /package/lib/es/{th-B67OcLue.js → th-DWX5iPSo.js} +0 -0
  177. /package/lib/es/{tk-CYfVPVLR.js → tk-BMbKB10q.js} +0 -0
  178. /package/lib/es/{tr-BxhGLs2f.js → tr-CIHIuzqc.js} +0 -0
  179. /package/lib/es/{uk-CnWqKnI0.js → uk-Dir3oxLs.js} +0 -0
  180. /package/lib/es/{zh-latn-pinyin-CKxTJrac.js → zh-latn-pinyin-BdYb-Ey_.js} +0 -0
package/lib/cjs/index.js CHANGED
@@ -6,6 +6,19 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __exportAll = (all, no_symbols) => {
10
+ let target = {};
11
+ for (var name in all) {
12
+ __defProp(target, name, {
13
+ get: all[name],
14
+ enumerable: true
15
+ });
16
+ }
17
+ if (!no_symbols) {
18
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
19
+ }
20
+ return target;
21
+ };
9
22
  var __copyProps = (to, from, except, desc) => {
10
23
  if (from && typeof from === "object" || typeof from === "function") {
11
24
  for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
@@ -26,7 +39,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
39
  }) : target, mod));
27
40
 
28
41
  //#endregion
29
- const require_en_us = require('./en-us-Br9JW6Nt.js');
30
42
  let _univerjs_core = require("@univerjs/core");
31
43
  let cjk_regex = require("cjk-regex");
32
44
  cjk_regex = __toESM(cjk_regex);
@@ -309,14 +321,7 @@ function getFontStyleString(textStyle) {
309
321
  let originFontSize = defaultFontSize;
310
322
  if (textStyle.fs) originFontSize = Math.ceil(textStyle.fs);
311
323
  let fontSize = originFontSize;
312
- let fontFamilyResult = defaultFont;
313
- if (textStyle.ff) {
314
- let fontFamily = textStyle.ff;
315
- fontFamily = fontFamily.replace(/"/g, "").replace(/'/g, "");
316
- if (fontFamily.indexOf(" ") > -1) fontFamily = `"${fontFamily}"`;
317
- if (fontFamily == null) fontFamily = defaultFont;
318
- fontFamilyResult = fontFamily;
319
- }
324
+ const fontFamilyResult = normalizeFontFamily(textStyle.ff, defaultFont);
320
325
  const { va: baselineOffset } = textStyle;
321
326
  if (baselineOffset === _univerjs_core.BaselineOffset.SUBSCRIPT || baselineOffset === _univerjs_core.BaselineOffset.SUPERSCRIPT) {
322
327
  const { sbr, spr } = FontCache.getBaselineOffsetInfo(fontFamilyResult, fontSize);
@@ -331,6 +336,13 @@ function getFontStyleString(textStyle) {
331
336
  fontFamily: fontFamilyResult
332
337
  };
333
338
  }
339
+ function normalizeFontFamily(fontFamily, defaultFont) {
340
+ if (!(fontFamily === null || fontFamily === void 0 ? void 0 : fontFamily.trim())) return defaultFont;
341
+ return fontFamily.split(",").map((item) => {
342
+ const family = item.trim().replace(/^['"]|['"]$/g, "");
343
+ return family.includes(" ") ? `"${family}"` : family;
344
+ }).filter(Boolean).join(", ");
345
+ }
334
346
  const CJK_LETTER_REG = cjk_regex.letters().toRegExp();
335
347
  function hasCJKText(text) {
336
348
  return CJK_LETTER_REG.test(text);
@@ -384,6 +396,9 @@ function hasArabic(text) {
384
396
  function hasTibetan(text) {
385
397
  return /[\u0180-\u024F]/gi.test(text);
386
398
  }
399
+ function hasThai(text) {
400
+ return /[\u0E00-\u0E7F]/.test(text);
401
+ }
387
402
  function hasSpace(text) {
388
403
  return /\s+/g.test(text);
389
404
  }
@@ -650,7 +665,7 @@ function getSystemHighlightColor() {
650
665
  }
651
666
 
652
667
  //#endregion
653
- //#region \0@oxc-project+runtime@0.129.0/helpers/typeof.js
668
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/typeof.js
654
669
  function _typeof(o) {
655
670
  "@babel/helpers - typeof";
656
671
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -661,7 +676,7 @@ function _typeof(o) {
661
676
  }
662
677
 
663
678
  //#endregion
664
- //#region \0@oxc-project+runtime@0.129.0/helpers/toPrimitive.js
679
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/toPrimitive.js
665
680
  function toPrimitive(t, r) {
666
681
  if ("object" != _typeof(t) || !t) return t;
667
682
  var e = t[Symbol.toPrimitive];
@@ -674,14 +689,14 @@ function toPrimitive(t, r) {
674
689
  }
675
690
 
676
691
  //#endregion
677
- //#region \0@oxc-project+runtime@0.129.0/helpers/toPropertyKey.js
692
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/toPropertyKey.js
678
693
  function toPropertyKey(t) {
679
694
  var i = toPrimitive(t, "string");
680
695
  return "symbol" == _typeof(i) ? i : i + "";
681
696
  }
682
697
 
683
698
  //#endregion
684
- //#region \0@oxc-project+runtime@0.129.0/helpers/defineProperty.js
699
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/defineProperty.js
685
700
  function _defineProperty(e, r, t) {
686
701
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
687
702
  value: t,
@@ -1697,7 +1712,9 @@ var Vector2 = class Vector2 {
1697
1712
  function getDevicePixelRatio() {
1698
1713
  let _pixelRatio = 1;
1699
1714
  const context = createCanvasElement().getContext("2d");
1700
- _pixelRatio = (window.devicePixelRatio || 1) / (context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1);
1715
+ _pixelRatio = (() => {
1716
+ return (window.devicePixelRatio || 1) / (context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1);
1717
+ })();
1701
1718
  if (_pixelRatio < 1) return 1;
1702
1719
  return _pixelRatio;
1703
1720
  }
@@ -2952,6 +2969,37 @@ var Transform = class Transform {
2952
2969
  }
2953
2970
  };
2954
2971
 
2972
+ //#endregion
2973
+ //#region src/basics/zoom.ts
2974
+ const MIN_ZOOM_RATIO = .1;
2975
+ const MAX_ZOOM_RATIO = 4;
2976
+ const PIXEL_DELTA_TO_ZOOM_RATIO = .008;
2977
+ const MAX_WHEEL_ZOOM_STEP = .14;
2978
+ const MAX_WHEEL_ZOOM_STEP_BELOW_ONE = .07;
2979
+ const LINE_DELTA_PIXEL_SIZE = 16;
2980
+ const PAGE_DELTA_PIXEL_SIZE = 800;
2981
+ const ZOOM_RATIO_PRECISION = 100;
2982
+ function clamp(value, min, max) {
2983
+ return Math.min(max, Math.max(min, value));
2984
+ }
2985
+ function normalizeWheelDelta(event) {
2986
+ const deltaY = Number.isFinite(event.deltaY) ? event.deltaY : 0;
2987
+ const deltaX = Number.isFinite(event.deltaX) ? event.deltaX : 0;
2988
+ let delta = Math.abs(deltaY) >= Math.abs(deltaX) ? deltaY : deltaX;
2989
+ if (delta === 0 && typeof event.wheelDelta === "number") delta = -event.wheelDelta / 3;
2990
+ if (event.deltaMode === EventConstants.DOM_DELTA_LINE) delta *= LINE_DELTA_PIXEL_SIZE;
2991
+ else if (event.deltaMode === EventConstants.DOM_DELTA_PAGE) delta *= PAGE_DELTA_PIXEL_SIZE;
2992
+ return delta;
2993
+ }
2994
+ function getNextWheelZoomRatio(currentRatio, event) {
2995
+ const validCurrentRatio = Number.isFinite(currentRatio) ? currentRatio : 1;
2996
+ const normalizedDelta = normalizeWheelDelta(event);
2997
+ if (normalizedDelta === 0) return clamp(validCurrentRatio, MIN_ZOOM_RATIO, MAX_ZOOM_RATIO);
2998
+ const maxStep = validCurrentRatio < 1 ? MAX_WHEEL_ZOOM_STEP_BELOW_ONE : MAX_WHEEL_ZOOM_STEP;
2999
+ const ratioDelta = clamp(-normalizedDelta * PIXEL_DELTA_TO_ZOOM_RATIO, -maxStep, maxStep);
3000
+ return clamp(Math.round((validCurrentRatio + ratioDelta) * ZOOM_RATIO_PRECISION) / ZOOM_RATIO_PRECISION, MIN_ZOOM_RATIO, MAX_ZOOM_RATIO);
3001
+ }
3002
+
2955
3003
  //#endregion
2956
3004
  //#region src/base-object.ts
2957
3005
  const BASE_OBJECT_ARRAY = [
@@ -11083,12 +11131,12 @@ length_base[28] = 258;
11083
11131
  const SHIFT_1 = 11;
11084
11132
  const SHIFT_2 = 5;
11085
11133
  const SHIFT_1_2 = SHIFT_1 - SHIFT_2;
11086
- const OMITTED_BMP_INDEX_1_LENGTH = 65536 >> SHIFT_1;
11134
+ const OMITTED_BMP_INDEX_1_LENGTH = 32;
11087
11135
  const INDEX_2_MASK = (1 << SHIFT_1_2) - 1;
11088
11136
  const INDEX_SHIFT = 2;
11089
11137
  const DATA_MASK = (1 << SHIFT_2) - 1;
11090
- const LSCP_INDEX_2_OFFSET = 65536 >> SHIFT_2;
11091
- const INDEX_1_OFFSET = LSCP_INDEX_2_OFFSET + (1024 >> SHIFT_2) + 32;
11138
+ const LSCP_INDEX_2_OFFSET = 2048;
11139
+ const INDEX_1_OFFSET = 2112;
11092
11140
  const DATA_GRANULARITY = 1 << INDEX_SHIFT;
11093
11141
  var UnicodeTrie = class {
11094
11142
  constructor(data) {
@@ -12053,6 +12101,17 @@ var Liquid = class {
12053
12101
  }
12054
12102
  };
12055
12103
 
12104
+ //#endregion
12105
+ //#region src/components/docs/table-render-viewport.ts
12106
+ let docsTableRenderViewportProvider = null;
12107
+ function setDocsTableRenderViewportProvider(provider) {
12108
+ docsTableRenderViewportProvider = provider;
12109
+ }
12110
+ function getDocsTableRenderViewport(unitId, tableId) {
12111
+ var _docsTableRenderViewp;
12112
+ return (_docsTableRenderViewp = docsTableRenderViewportProvider === null || docsTableRenderViewportProvider === void 0 ? void 0 : docsTableRenderViewportProvider(unitId, tableId)) !== null && _docsTableRenderViewp !== void 0 ? _docsTableRenderViewp : null;
12113
+ }
12114
+
12056
12115
  //#endregion
12057
12116
  //#region src/components/docs/view-model/data-stream-tree-node.ts
12058
12117
  var DataStreamTreeNode = class DataStreamTreeNode {
@@ -12221,6 +12280,17 @@ function parseDataStreamToTree(dataStream, tables) {
12221
12280
  const tableRowList = [];
12222
12281
  const tableCellList = [];
12223
12282
  const currentBlocks = [];
12283
+ const getParagraphList = () => tableCellList.length > 0 ? cellParagraphList : paragraphList;
12284
+ const appendToPreviousParagraph = (char) => {
12285
+ const tempParagraphList = getParagraphList();
12286
+ const lastParagraph = tempParagraphList[tempParagraphList.length - 1];
12287
+ if (lastParagraph) {
12288
+ var _lastParagraph$conten;
12289
+ lastParagraph.content = `${(_lastParagraph$conten = lastParagraph.content) !== null && _lastParagraph$conten !== void 0 ? _lastParagraph$conten : ""}${char}`;
12290
+ return true;
12291
+ }
12292
+ return false;
12293
+ };
12224
12294
  for (let i = 0; i < dataStreamLen; i++) {
12225
12295
  const char = dataStream[i];
12226
12296
  if (char === _univerjs_core.DataStreamTreeTokenType.PARAGRAPH) {
@@ -12281,6 +12351,9 @@ function parseDataStreamToTree(dataStream, tables) {
12281
12351
  const cellNode = tableCellList.pop();
12282
12352
  const lastRow = tableRowList[tableRowList.length - 1];
12283
12353
  batchParent(lastRow, [cellNode], _univerjs_core.DataStreamTreeNodeType.TABLE_ROW);
12354
+ } else if (char === _univerjs_core.DataStreamTreeTokenType.BLOCK_START) content += char;
12355
+ else if (char === _univerjs_core.DataStreamTreeTokenType.BLOCK_END) {
12356
+ if (content.length > 0 || !appendToPreviousParagraph(char)) content += char;
12284
12357
  } else if (char === _univerjs_core.DataStreamTreeTokenType.CUSTOM_BLOCK) {
12285
12358
  currentBlocks.push(i);
12286
12359
  content += char;
@@ -12597,6 +12670,8 @@ function _createSkeletonWordOrLetter(glyphType, content, config, glyphWidth, gly
12597
12670
  _univerjs_core.DataStreamTreeTokenType.TABLE_ROW_END,
12598
12671
  _univerjs_core.DataStreamTreeTokenType.TABLE_CELL_START,
12599
12672
  _univerjs_core.DataStreamTreeTokenType.TABLE_CELL_END,
12673
+ _univerjs_core.DataStreamTreeTokenType.BLOCK_START,
12674
+ _univerjs_core.DataStreamTreeTokenType.BLOCK_END,
12600
12675
  _univerjs_core.DataStreamTreeTokenType.CUSTOM_RANGE_START,
12601
12676
  _univerjs_core.DataStreamTreeTokenType.CUSTOM_RANGE_END,
12602
12677
  _univerjs_core.DataStreamTreeTokenType.COLUMN_BREAK,
@@ -13106,7 +13181,16 @@ function createTableSkeleton(ctx, curPage, viewModel, tableNode, sectionBreakCon
13106
13181
  let left = 0;
13107
13182
  let rowHeight = 0;
13108
13183
  for (const cellNode of cellNodes) {
13109
- const cellPageSkeleton = createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, table, row, cellNodes.indexOf(cellNode))[0];
13184
+ const col = cellNodes.indexOf(cellNode);
13185
+ const cellConfig = rowSource.tableCells[col];
13186
+ if (isCoveredTableCell(cellConfig)) {
13187
+ const cellPageSkeleton = createMergedCoveredCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton);
13188
+ cellPageSkeleton.left = left;
13189
+ if (shouldAdvanceTableCellLeft(table, row, col)) left += cellPageSkeleton.pageWidth;
13190
+ rowSkeleton.cells.push(cellPageSkeleton);
13191
+ continue;
13192
+ }
13193
+ const cellPageSkeleton = createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, table, row, col)[0];
13110
13194
  const { marginTop = 0, marginBottom = 0 } = cellPageSkeleton;
13111
13195
  const pageHeight = cellPageSkeleton.height + marginTop + marginBottom;
13112
13196
  cellPageSkeleton.left = left;
@@ -13116,7 +13200,7 @@ function createTableSkeleton(ctx, curPage, viewModel, tableNode, sectionBreakCon
13116
13200
  rowHeight = Math.max(rowHeight, pageHeight);
13117
13201
  }
13118
13202
  if (hRule === _univerjs_core.TableRowHeightRule.AT_LEAST) rowHeight = Math.max(rowHeight, val.v);
13119
- else if (hRule === _univerjs_core.TableRowHeightRule.EXACT) rowHeight = val.v;
13203
+ else if (hRule === _univerjs_core.TableRowHeightRule.EXACT) rowHeight = Math.max(rowHeight, val.v);
13120
13204
  for (const cellPageSkeleton of rowSkeleton.cells) cellPageSkeleton.pageHeight = rowHeight;
13121
13205
  const rowConfig = table.tableRows[row];
13122
13206
  for (let i = 0; i < rowConfig.tableCells.length; i++) {
@@ -13147,6 +13231,7 @@ function createTableSkeleton(ctx, curPage, viewModel, tableNode, sectionBreakCon
13147
13231
  }
13148
13232
  tableSkeleton.width = tableWidth;
13149
13233
  tableSkeleton.height = rowTop;
13234
+ applyMergedCellSpanHeights(tableSkeleton);
13150
13235
  const { pageWidth, marginLeft = 0, marginRight = 0 } = curPage;
13151
13236
  tableSkeleton.left = _getTableLeft(pageWidth - marginLeft - marginRight, tableWidth, table.align, table.indent);
13152
13237
  return tableSkeleton;
@@ -13170,14 +13255,14 @@ function createTableSkeletons(ctx, curPage, viewModel, tableNode, sectionBreakCo
13170
13255
  fromCurrentPage: false
13171
13256
  };
13172
13257
  }
13173
- const needRepeatHeader = table.tableRows[0].repeatHeaderRow === _univerjs_core.BooleanNumber.TRUE;
13258
+ const repeatRows = getLeadingRepeatHeaderRows(table, rowNodes);
13174
13259
  const curTableSkeleton = getNullTableSkeleton(startIndex, endIndex, table);
13175
13260
  const createCache = {
13176
13261
  rowTop: 0,
13177
13262
  tableWidth: 0,
13178
13263
  remainHeight: availableHeight,
13179
- repeatRow: needRepeatHeader ? rowNodes[0] : null,
13180
- repeatRowHeight: 0
13264
+ repeatRows,
13265
+ repeatRowsHeight: 0
13181
13266
  };
13182
13267
  skeTables.push(curTableSkeleton);
13183
13268
  for (const rowNode of rowNodes) dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig, rowNode, rowNodes.indexOf(rowNode), table, createCache);
@@ -13193,6 +13278,7 @@ function updateTableSkeletonsPosition(cache, curPage, skeTables, table) {
13193
13278
  const tableLeft = _getTableLeft(pageWidth - marginLeft - marginRight, tableWidth, table.align, table.indent);
13194
13279
  let tableIndex = 0;
13195
13280
  for (const tableSkeleton of skeTables) {
13281
+ applyMergedCellSpanHeights(tableSkeleton);
13196
13282
  tableSkeleton.width = tableWidth;
13197
13283
  tableSkeleton.left = tableLeft;
13198
13284
  tableSkeleton.st = tableSkeleton.rows[0].st - 1;
@@ -13209,7 +13295,7 @@ function getCurTableSkeleton(skeTables) {
13209
13295
  function getAvailableHeight(curPage, cache, hasRepeatHeader) {
13210
13296
  const { marginTop, marginBottom, pageHeight } = curPage;
13211
13297
  let pageContentHeight = pageHeight - marginTop - marginBottom;
13212
- if (hasRepeatHeader) pageContentHeight -= cache.repeatRowHeight;
13298
+ if (hasRepeatHeader) pageContentHeight -= cache.repeatRowsHeight;
13213
13299
  return pageContentHeight;
13214
13300
  }
13215
13301
  function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig, rowNode, row, table, cache, isRepeatRow = false) {
@@ -13227,17 +13313,13 @@ function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig
13227
13313
  const rowHeights = [0];
13228
13314
  for (const cellNode of cellNodes) {
13229
13315
  const col = cellNodes.indexOf(cellNode);
13230
- const cellPageSkeletons = createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, table, row, col, canRowSplit && !needOpenNewTable ? cache.remainHeight : availableHeight, pageContentHeight);
13231
- while (rowSkeletons.length < cellPageSkeletons.length) {
13232
- const rowSkeleton = _getNullTableRowSkeleton(startIndex, endIndex, row, rowSource, isRepeatRow);
13233
- const colCount = cellNodes.length;
13234
- rowSkeleton.cells = [...new Array(colCount)].map((_, i) => {
13235
- const cellSkeleton = createNullCellPage(ctx, sectionBreakConfig, table, row, i).page;
13236
- cellSkeleton.parent = rowSkeleton;
13237
- return cellSkeleton;
13238
- });
13239
- rowSkeletons.push(rowSkeleton);
13316
+ const cellConfig = rowSource.tableCells[col];
13317
+ if (isCoveredTableCell(cellConfig)) {
13318
+ if (rowSkeletons.length === 0) rowSkeletons.push(createNullRowSkeletonWithCells(ctx, sectionBreakConfig, table, row, startIndex, endIndex, rowSource, isRepeatRow));
13319
+ continue;
13240
13320
  }
13321
+ const cellPageSkeletons = createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, table, row, col, canRowSplit && !needOpenNewTable ? cache.remainHeight : availableHeight, pageContentHeight);
13322
+ while (rowSkeletons.length < cellPageSkeletons.length) rowSkeletons.push(createNullRowSkeletonWithCells(ctx, sectionBreakConfig, table, row, startIndex, endIndex, rowSource, isRepeatRow));
13241
13323
  while (rowHeights.length < cellPageSkeletons.length) rowHeights.push(0);
13242
13324
  for (const cellPageSkeleton of cellPageSkeletons) {
13243
13325
  const { marginTop: cellMarginTop = 0, marginBottom: cellMarginBottom = 0 } = cellPageSkeleton;
@@ -13252,18 +13334,20 @@ function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig
13252
13334
  for (const rowSke of rowSkeletons) {
13253
13335
  const rowIndex = rowSkeletons.indexOf(rowSke);
13254
13336
  if (hRule === _univerjs_core.TableRowHeightRule.AT_LEAST) rowHeights[rowIndex] = Math.max(rowHeights[rowIndex], val.v);
13255
- else if (hRule === _univerjs_core.TableRowHeightRule.EXACT) rowHeights[rowIndex] = val.v;
13337
+ else if (hRule === _univerjs_core.TableRowHeightRule.EXACT) rowHeights[rowIndex] = Math.max(rowHeights[rowIndex], val.v);
13256
13338
  rowHeights[rowIndex] = Math.min(rowHeights[rowIndex], pageContentHeight);
13257
13339
  let left = 0;
13258
- for (const cellPageSkeleton of rowSke.cells) {
13340
+ for (let col = 0; col < rowSke.cells.length; col++) {
13341
+ const cellPageSkeleton = rowSke.cells[col];
13342
+ if (cellPageSkeleton == null) continue;
13259
13343
  cellPageSkeleton.left = left;
13260
13344
  cellPageSkeleton.pageHeight = rowHeights[rowIndex];
13261
- left += cellPageSkeleton.pageWidth;
13345
+ if (shouldAdvanceTableCellLeft(table, rowSke.index, col)) left += cellPageSkeleton.pageWidth;
13262
13346
  cache.tableWidth = Math.max(cache.tableWidth, left);
13263
13347
  }
13264
13348
  rowSke.height = rowHeights[rowIndex];
13265
13349
  }
13266
- if (row === 0 && cache.repeatRow) cache.repeatRowHeight = rowHeights[rowHeights.length - 1];
13350
+ if (!isRepeatRow && row < cache.repeatRows.length) cache.repeatRowsHeight += rowHeights.reduce((total, height) => total + height, 0);
13267
13351
  for (const rowSkeleton of rowSkeletons) _verticalAlignInCell(rowSkeleton, rowSource);
13268
13352
  while (rowSkeletons.length > 0) {
13269
13353
  const rowSkeleton = rowSkeletons.shift();
@@ -13274,10 +13358,11 @@ function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig
13274
13358
  if (curTableSkeleton.rows.length > 0) {
13275
13359
  curTableSkeleton = getNullTableSkeleton(startIndex, endIndex, table);
13276
13360
  skeTables.push(curTableSkeleton);
13277
- if (cache.repeatRow && isRepeatRow === false && row !== 0 && rowSkeleton.index !== lastRow.index) {
13278
- const FIRST_ROW_INDEX = 0;
13361
+ if (cache.repeatRows.length > 0 && isRepeatRow === false && row >= cache.repeatRows.length && rowSkeleton.index !== lastRow.index) {
13279
13362
  cache.remainHeight = getAvailableHeight(curPage, cache, false);
13280
- dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig, cache.repeatRow, FIRST_ROW_INDEX, table, cache, true);
13363
+ cache.repeatRows.forEach((repeatRow, repeatRowIndex) => {
13364
+ dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig, repeatRow, repeatRowIndex, table, cache, true);
13365
+ });
13281
13366
  }
13282
13367
  }
13283
13368
  }
@@ -13290,6 +13375,15 @@ function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig
13290
13375
  cache.rowTop += rowSkeleton.height;
13291
13376
  }
13292
13377
  }
13378
+ function getLeadingRepeatHeaderRows(table, rowNodes) {
13379
+ const repeatRows = [];
13380
+ for (let index = 0; index < rowNodes.length; index++) {
13381
+ var _table$tableRows$inde;
13382
+ if (((_table$tableRows$inde = table.tableRows[index]) === null || _table$tableRows$inde === void 0 ? void 0 : _table$tableRows$inde.repeatHeaderRow) !== _univerjs_core.BooleanNumber.TRUE) break;
13383
+ repeatRows.push(rowNodes[index]);
13384
+ }
13385
+ return repeatRows;
13386
+ }
13293
13387
  function _verticalAlignInCell(rowSkeleton, rowSource) {
13294
13388
  for (let i = 0; i < rowSource.tableCells.length; i++) {
13295
13389
  const cellConfig = rowSource.tableCells[i];
@@ -13314,6 +13408,75 @@ function _verticalAlignInCell(rowSkeleton, rowSource) {
13314
13408
  cellPageSkeleton.marginTop = marginTop;
13315
13409
  }
13316
13410
  }
13411
+ function createNullRowSkeletonWithCells(ctx, sectionBreakConfig, table, row, startIndex, endIndex, rowSource, isRepeatRow = false) {
13412
+ const rowSkeleton = _getNullTableRowSkeleton(startIndex, endIndex, row, rowSource, isRepeatRow);
13413
+ const colCount = rowSource.tableCells.length;
13414
+ rowSkeleton.cells = Array.from({ length: colCount }, (_, col) => createMergedAwareNullCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton));
13415
+ return rowSkeleton;
13416
+ }
13417
+ function createMergedCoveredCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton) {
13418
+ return createMergedAwareNullCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton);
13419
+ }
13420
+ function applyMergedCellSpanHeights(tableSkeleton) {
13421
+ var _tableSkeleton$tableS, _tableSkeleton$tableS2;
13422
+ const tableRows = (_tableSkeleton$tableS = (_tableSkeleton$tableS2 = tableSkeleton.tableSource) === null || _tableSkeleton$tableS2 === void 0 ? void 0 : _tableSkeleton$tableS2.tableRows) !== null && _tableSkeleton$tableS !== void 0 ? _tableSkeleton$tableS : [];
13423
+ if (tableRows.length === 0) return;
13424
+ const skeletonRowsByIndex = new Map(tableSkeleton.rows.map((row) => [row.index, row]));
13425
+ tableRows.forEach((rowSource, rowIndex) => {
13426
+ rowSource.tableCells.forEach((cellConfig, columnIndex) => {
13427
+ var _cellConfig$rowSpan, _cellConfig$columnSpa;
13428
+ const rowSpan = (_cellConfig$rowSpan = cellConfig.rowSpan) !== null && _cellConfig$rowSpan !== void 0 ? _cellConfig$rowSpan : 1;
13429
+ const columnSpan = (_cellConfig$columnSpa = cellConfig.columnSpan) !== null && _cellConfig$columnSpa !== void 0 ? _cellConfig$columnSpa : 1;
13430
+ if (rowSpan <= 1 && columnSpan <= 1) return;
13431
+ const masterRow = skeletonRowsByIndex.get(rowIndex);
13432
+ const masterCell = masterRow === null || masterRow === void 0 ? void 0 : masterRow.cells[columnIndex];
13433
+ if (!masterCell || masterCell.isMergedCellCovered) return;
13434
+ let pageHeight = 0;
13435
+ for (let row = rowIndex; row < rowIndex + rowSpan; row++) {
13436
+ var _skeletonRowsByIndex$, _skeletonRowsByIndex$2;
13437
+ pageHeight += (_skeletonRowsByIndex$ = (_skeletonRowsByIndex$2 = skeletonRowsByIndex.get(row)) === null || _skeletonRowsByIndex$2 === void 0 ? void 0 : _skeletonRowsByIndex$2.height) !== null && _skeletonRowsByIndex$ !== void 0 ? _skeletonRowsByIndex$ : 0;
13438
+ }
13439
+ if (pageHeight > 0) masterCell.pageHeight = pageHeight;
13440
+ });
13441
+ });
13442
+ }
13443
+ function createMergedAwareNullCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton) {
13444
+ const cellSkeleton = createNullCellPage(ctx, sectionBreakConfig, table, row, col).page;
13445
+ cellSkeleton.parent = rowSkeleton;
13446
+ if (isCoveredTableCell(table.tableRows[row].tableCells[col])) Object.assign(cellSkeleton, { isMergedCellCovered: true });
13447
+ return cellSkeleton;
13448
+ }
13449
+ function shouldAdvanceTableCellLeft(table, row, col) {
13450
+ var _table$tableRows$row;
13451
+ if (!isCoveredTableCell((_table$tableRows$row = table.tableRows[row]) === null || _table$tableRows$row === void 0 ? void 0 : _table$tableRows$row.tableCells[col])) return true;
13452
+ const masterCell = findMergedMasterCell(table, row, col);
13453
+ if (masterCell == null) return true;
13454
+ return masterCell.row !== row;
13455
+ }
13456
+ function findMergedMasterCell(table, row, col) {
13457
+ for (let rowIndex = 0; rowIndex <= row; rowIndex++) {
13458
+ const rowSource = table.tableRows[rowIndex];
13459
+ if (rowSource == null) continue;
13460
+ for (let columnIndex = 0; columnIndex < rowSource.tableCells.length; columnIndex++) {
13461
+ var _cellConfig$rowSpan2, _cellConfig$columnSpa2;
13462
+ const cellConfig = rowSource.tableCells[columnIndex];
13463
+ if (isCoveredTableCell(cellConfig)) continue;
13464
+ const rowSpan = Math.max(1, (_cellConfig$rowSpan2 = cellConfig.rowSpan) !== null && _cellConfig$rowSpan2 !== void 0 ? _cellConfig$rowSpan2 : 1);
13465
+ const columnSpan = Math.max(1, (_cellConfig$columnSpa2 = cellConfig.columnSpan) !== null && _cellConfig$columnSpa2 !== void 0 ? _cellConfig$columnSpa2 : 1);
13466
+ if (rowSpan <= 1 && columnSpan <= 1) continue;
13467
+ const containsRow = row >= rowIndex && row < rowIndex + rowSpan;
13468
+ const containsColumn = col >= columnIndex && col < columnIndex + columnSpan;
13469
+ if (containsRow && containsColumn) return {
13470
+ row: rowIndex,
13471
+ col: columnIndex
13472
+ };
13473
+ }
13474
+ }
13475
+ return null;
13476
+ }
13477
+ function isCoveredTableCell(cellConfig) {
13478
+ return (cellConfig === null || cellConfig === void 0 ? void 0 : cellConfig.rowSpan) === 0 || (cellConfig === null || cellConfig === void 0 ? void 0 : cellConfig.columnSpan) === 0;
13479
+ }
13317
13480
  function _getTableLeft(pageWidth, tableWidth, align, indent = { v: 0 }) {
13318
13481
  switch (align) {
13319
13482
  case _univerjs_core.TableAlignmentType.START: return indent.v;
@@ -14419,13 +14582,13 @@ const DEFAULT_PAGE_SIZE = {
14419
14582
  const DEFAULT_MODERN_DOCUMENT_STYLE = {
14420
14583
  pageNumberStart: 1,
14421
14584
  pageSize: {
14422
- width: ptToPixel(595),
14585
+ width: _univerjs_core.MODERN_DOCUMENT_WIDTH[_univerjs_core.ModernDocumentWidthMode.MEDIUM],
14423
14586
  height: Number.POSITIVE_INFINITY
14424
14587
  },
14425
- marginTop: ptToPixel(50),
14426
- marginBottom: ptToPixel(50),
14427
- marginRight: ptToPixel(50),
14428
- marginLeft: ptToPixel(50),
14588
+ marginTop: _univerjs_core.MODERN_DOCUMENT_DEFAULT_MARGIN,
14589
+ marginBottom: _univerjs_core.MODERN_DOCUMENT_DEFAULT_MARGIN,
14590
+ marginRight: _univerjs_core.MODERN_DOCUMENT_DEFAULT_MARGIN,
14591
+ marginLeft: _univerjs_core.MODERN_DOCUMENT_DEFAULT_MARGIN,
14429
14592
  renderConfig: {
14430
14593
  vertexAngle: 0,
14431
14594
  centerAngle: 0,
@@ -14455,8 +14618,13 @@ function prepareSectionBreakConfig(ctx, nodeIndex) {
14455
14618
  const { documentFlavor } = documentStyle;
14456
14619
  let sectionBreak = viewModel.getSectionBreak(sectionNode.endIndex) || DEFAULT_SECTION_BREAK;
14457
14620
  if (documentFlavor === _univerjs_core.DocumentFlavor.MODERN) {
14621
+ var _documentStyle$pageSi, _documentStyle$pageSi2;
14622
+ const modernPageWidth = (_documentStyle$pageSi = (_documentStyle$pageSi2 = documentStyle.pageSize) === null || _documentStyle$pageSi2 === void 0 ? void 0 : _documentStyle$pageSi2.width) !== null && _documentStyle$pageSi !== void 0 ? _documentStyle$pageSi : DEFAULT_MODERN_DOCUMENT_STYLE.pageSize.width;
14458
14623
  sectionBreak = Object.assign({}, sectionBreak, DEFAULT_MODERN_SECTION_BREAK);
14459
- documentStyle = Object.assign({}, documentStyle, DEFAULT_MODERN_DOCUMENT_STYLE);
14624
+ documentStyle = Object.assign({}, documentStyle, DEFAULT_MODERN_DOCUMENT_STYLE, { pageSize: {
14625
+ ...DEFAULT_MODERN_DOCUMENT_STYLE.pageSize,
14626
+ width: modernPageWidth
14627
+ } });
14460
14628
  }
14461
14629
  const { pageNumberStart: global_pageNumberStart = 1, pageSize: global_pageSize = DEFAULT_PAGE_SIZE, pageOrient: global_pageOrient = _univerjs_core.PageOrientType.PORTRAIT, defaultHeaderId: global_defaultHeaderId, defaultFooterId: global_defaultFooterId, evenPageHeaderId: global_evenPageHeaderId, evenPageFooterId: global_evenPageFooterId, firstPageHeaderId: global_firstPageHeaderId, firstPageFooterId: global_firstPageFooterId, useFirstPageHeaderFooter: global_useFirstPageHeaderFooter, evenAndOddHeaders: global_evenAndOddHeaders, marginTop: global_marginTop = 0, marginBottom: global_marginBottom = 0, marginRight: global_marginRight = 0, marginLeft: global_marginLeft = 0, marginHeader: global_marginHeader = 0, marginFooter: global_marginFooter = 0, autoHyphenation = _univerjs_core.BooleanNumber.FALSE, doNotHyphenateCaps = _univerjs_core.BooleanNumber.FALSE, consecutiveHyphenLimit = Number.POSITIVE_INFINITY, hyphenationZone, renderConfig: global_renderConfig = {
14462
14630
  horizontalAlign: _univerjs_core.HorizontalAlign.LEFT,
@@ -14693,12 +14861,14 @@ function _createSkeletonHeaderFooter(ctx, headerOrFooterViewModel, sectionBreakC
14693
14861
  return page;
14694
14862
  }
14695
14863
  function createNullCellPage(ctx, sectionBreakConfig, tableConfig, row, col, availableHeight = Number.POSITIVE_INFINITY, maxCellPageHeight = Number.POSITIVE_INFINITY) {
14696
- var _ref, _cellConfig$margin;
14864
+ var _ref, _cellConfig$margin, _cellConfig$columnSpa;
14697
14865
  const { lists, footerTreeMap, headerTreeMap, localeService, drawings } = sectionBreakConfig;
14698
14866
  const { skeletonResourceReference } = ctx;
14699
14867
  const { cellMargin, tableRows, tableColumns, tableId } = tableConfig;
14700
- const { start = { v: 10 }, end = { v: 10 }, top = { v: 5 }, bottom = { v: 5 } } = (_ref = (_cellConfig$margin = tableRows[row].tableCells[col].margin) !== null && _cellConfig$margin !== void 0 ? _cellConfig$margin : cellMargin) !== null && _ref !== void 0 ? _ref : {};
14701
- const pageWidth = tableColumns[col].size.width.v;
14868
+ const cellConfig = tableRows[row].tableCells[col];
14869
+ const { start = { v: 10 }, end = { v: 10 }, top = { v: 5 }, bottom = { v: 5 } } = (_ref = (_cellConfig$margin = cellConfig.margin) !== null && _cellConfig$margin !== void 0 ? _cellConfig$margin : cellMargin) !== null && _ref !== void 0 ? _ref : {};
14870
+ const columnSpan = Math.max(1, (_cellConfig$columnSpa = cellConfig.columnSpan) !== null && _cellConfig$columnSpa !== void 0 ? _cellConfig$columnSpa : 1);
14871
+ const pageWidth = tableColumns.slice(col, col + columnSpan).reduce((sum, column) => sum + column.size.width.v, 0);
14702
14872
  const pageHeight = maxCellPageHeight;
14703
14873
  const cellSectionBreakConfig = {
14704
14874
  lists,
@@ -14727,6 +14897,7 @@ function createNullCellPage(ctx, sectionBreakConfig, tableConfig, row, col, avai
14727
14897
  };
14728
14898
  }
14729
14899
  function createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, tableConfig, row, col, availableHeight = Number.POSITIVE_INFINITY, maxCellPageHeight = Number.POSITIVE_INFINITY) {
14900
+ var _ctx$dataModel, _ctx$dataModel$getBod;
14730
14901
  const sectionNode = cellNode.children[0];
14731
14902
  const { page: areaPage, sectionBreakConfig: cellSectionBreakConfig } = createNullCellPage(ctx, sectionBreakConfig, tableConfig, row, col, availableHeight, maxCellPageHeight);
14732
14903
  const { pages } = dealWithSection(ctx, viewModel, sectionNode, areaPage, cellSectionBreakConfig);
@@ -14735,9 +14906,36 @@ function createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, t
14735
14906
  p.segmentId = tableConfig.tableId;
14736
14907
  }
14737
14908
  updateBlockIndex(pages, cellNode.startIndex);
14909
+ applyTrailingCellBlockRangeSpaceBelow(pages, (_ctx$dataModel = ctx.dataModel) === null || _ctx$dataModel === void 0 || (_ctx$dataModel$getBod = _ctx$dataModel.getBody) === null || _ctx$dataModel$getBod === void 0 ? void 0 : _ctx$dataModel$getBod.call(_ctx$dataModel), cellNode.endIndex);
14738
14910
  updateInlineDrawingCoordsAndBorder(ctx, pages);
14911
+ expandCellPageHeightForInlineDrawings(pages);
14739
14912
  return pages;
14740
14913
  }
14914
+ function expandCellPageHeightForInlineDrawings(pages) {
14915
+ for (const page of pages) {
14916
+ var _page$skeDrawings;
14917
+ (_page$skeDrawings = page.skeDrawings) === null || _page$skeDrawings === void 0 || _page$skeDrawings.forEach((drawing) => {
14918
+ var _drawing$drawingOrigi, _drawing$aTop, _drawing$height;
14919
+ if (((_drawing$drawingOrigi = drawing.drawingOrigin) === null || _drawing$drawingOrigi === void 0 ? void 0 : _drawing$drawingOrigi.layoutType) !== _univerjs_core.PositionedObjectLayoutType.INLINE) return;
14920
+ const drawingBottom = ((_drawing$aTop = drawing.aTop) !== null && _drawing$aTop !== void 0 ? _drawing$aTop : 0) + ((_drawing$height = drawing.height) !== null && _drawing$height !== void 0 ? _drawing$height : 0);
14921
+ if (drawingBottom > page.height) page.height = drawingBottom;
14922
+ });
14923
+ }
14924
+ }
14925
+ function applyTrailingCellBlockRangeSpaceBelow(pages, body, cellEndIndex) {
14926
+ const blockRanges = body === null || body === void 0 ? void 0 : body.blockRanges;
14927
+ const trailingBlockRangeSpace = 28;
14928
+ if (!(blockRanges === null || blockRanges === void 0 ? void 0 : blockRanges.length)) return;
14929
+ for (const page of pages) {
14930
+ var _page$sections$at, _body$paragraphs;
14931
+ const lastLine = (_page$sections$at = page.sections.at(-1)) === null || _page$sections$at === void 0 || (_page$sections$at = _page$sections$at.columns.at(-1)) === null || _page$sections$at === void 0 ? void 0 : _page$sections$at.lines.at(-1);
14932
+ if (!lastLine) continue;
14933
+ const paragraphIndex = lastLine.paragraphIndex;
14934
+ if (!blockRanges.some((range) => range.startIndex < paragraphIndex && paragraphIndex < range.endIndex)) continue;
14935
+ if (body === null || body === void 0 || (_body$paragraphs = body.paragraphs) === null || _body$paragraphs === void 0 ? void 0 : _body$paragraphs.some((paragraph) => paragraph.startIndex > paragraphIndex && paragraph.startIndex < cellEndIndex)) continue;
14936
+ page.height += lastLine.spaceBelowApply || trailingBlockRangeSpace;
14937
+ }
14938
+ }
14741
14939
  function _getVerticalMargin(marginTB, headerOrFooter, pageHeight) {
14742
14940
  if (!headerOrFooter || headerOrFooter.sections[0].columns[0].lines.length === 0) return marginTB;
14743
14941
  const HeaderFooterPageHeight = headerOrFooter.height + headerOrFooter.marginTop + headerOrFooter.marginBottom;
@@ -15144,6 +15342,11 @@ function ___getLevelAndSuffix(levelAndSuffixPre) {
15144
15342
 
15145
15343
  //#endregion
15146
15344
  //#region src/components/docs/layout/block/paragraph/linebreaking.ts
15345
+ const BLOCK_LAYOUT_OUTER_SPACING_MAP = new Map([
15346
+ [_univerjs_core.DocumentBlockRangeType.CALLOUT, 34],
15347
+ [_univerjs_core.DocumentBlockRangeType.CODE, 32],
15348
+ [_univerjs_core.DocumentBlockRangeType.QUOTE, 24]
15349
+ ]);
15147
15350
  function _getListLevelAncestors(bullet, listLevel) {
15148
15351
  if (!bullet || !listLevel) return;
15149
15352
  const { listId, nestingLevel } = bullet;
@@ -15170,6 +15373,57 @@ function _updateListLevelAncestors(paragraph, bullet, bulletSkeleton, listLevel)
15170
15373
  cacheItem.splice(nestingLevel + 1);
15171
15374
  listLevel === null || listLevel === void 0 || listLevel.set(listId, cacheItem);
15172
15375
  }
15376
+ function _withMinSpacing(style, key, value) {
15377
+ var _current$v;
15378
+ const current = style[key];
15379
+ const nextValue = Math.max((_current$v = current === null || current === void 0 ? void 0 : current.v) !== null && _current$v !== void 0 ? _current$v : 0, value);
15380
+ style[key] = {
15381
+ ...current,
15382
+ v: nextValue
15383
+ };
15384
+ }
15385
+ function _getNextAdjacentBlockRange(blockRanges, blockRange) {
15386
+ return blockRanges === null || blockRanges === void 0 ? void 0 : blockRanges.filter((range) => range.startIndex > blockRange.endIndex).sort((left, right) => left.startIndex - right.startIndex)[0];
15387
+ }
15388
+ function _hasNextAdjacentLayoutBlockRange(blockRanges, blockRange) {
15389
+ const nextBlockRange = _getNextAdjacentBlockRange(blockRanges, blockRange);
15390
+ return nextBlockRange != null && BLOCK_LAYOUT_OUTER_SPACING_MAP.has(nextBlockRange.blockType) && nextBlockRange.startIndex === blockRange.endIndex + 1;
15391
+ }
15392
+ function _applyDefaultLayoutParagraphStyle(style, hasBlockRange) {
15393
+ if (style.lineSpacing == null) style.lineSpacing = _univerjs_core.DEFAULT_DOCUMENT_PARAGRAPH_LINE_SPACING;
15394
+ if (hasBlockRange) return;
15395
+ if (style.spaceAbove == null) style.spaceAbove = { v: _univerjs_core.DEFAULT_DOCUMENT_PARAGRAPH_SPACE_ABOVE };
15396
+ if (style.spaceBelow == null) style.spaceBelow = { v: _univerjs_core.DEFAULT_DOCUMENT_PARAGRAPH_SPACE_BELOW };
15397
+ }
15398
+ function _applyBlockRangeLayoutParagraphStyle(body, paragraph, paragraphStyle, shouldApplyDocumentDefaults) {
15399
+ var _body$paragraphs, _BLOCK_LAYOUT_OUTER_S;
15400
+ const style = _univerjs_core.Tools.deepClone(paragraphStyle);
15401
+ const blockRanges = body === null || body === void 0 ? void 0 : body.blockRanges;
15402
+ if (!(blockRanges === null || blockRanges === void 0 ? void 0 : blockRanges.length)) {
15403
+ if (shouldApplyDocumentDefaults) _applyDefaultLayoutParagraphStyle(style, false);
15404
+ return style;
15405
+ }
15406
+ const blockRange = blockRanges.find((range) => BLOCK_LAYOUT_OUTER_SPACING_MAP.has(range.blockType) && paragraph.startIndex > range.startIndex && paragraph.startIndex < range.endIndex);
15407
+ if (!blockRange) {
15408
+ if (shouldApplyDocumentDefaults) _applyDefaultLayoutParagraphStyle(style, false);
15409
+ return style;
15410
+ }
15411
+ _applyDefaultLayoutParagraphStyle(style, true);
15412
+ const blockParagraphs = ((_body$paragraphs = body === null || body === void 0 ? void 0 : body.paragraphs) !== null && _body$paragraphs !== void 0 ? _body$paragraphs : []).filter((item) => item.startIndex > blockRange.startIndex && item.startIndex < blockRange.endIndex).sort((left, right) => left.startIndex - right.startIndex);
15413
+ const firstParagraph = blockParagraphs[0];
15414
+ const lastParagraph = blockParagraphs[blockParagraphs.length - 1];
15415
+ const outerSpacing = (_BLOCK_LAYOUT_OUTER_S = BLOCK_LAYOUT_OUTER_SPACING_MAP.get(blockRange.blockType)) !== null && _BLOCK_LAYOUT_OUTER_S !== void 0 ? _BLOCK_LAYOUT_OUTER_S : 0;
15416
+ if ((firstParagraph === null || firstParagraph === void 0 ? void 0 : firstParagraph.startIndex) === paragraph.startIndex) _withMinSpacing(style, "spaceAbove", outerSpacing);
15417
+ if ((lastParagraph === null || lastParagraph === void 0 ? void 0 : lastParagraph.startIndex) === paragraph.startIndex && !_hasNextAdjacentLayoutBlockRange(blockRanges, blockRange)) _withMinSpacing(style, "spaceBelow", outerSpacing);
15418
+ return style;
15419
+ }
15420
+ function _shouldApplyDocumentDefaultParagraphStyle(viewModel) {
15421
+ var _viewModel$getSnapsho;
15422
+ const snapshot = (_viewModel$getSnapsho = viewModel.getSnapshot) === null || _viewModel$getSnapsho === void 0 ? void 0 : _viewModel$getSnapsho.call(viewModel);
15423
+ const documentFlavor = snapshot === null || snapshot === void 0 ? void 0 : snapshot.documentStyle.documentFlavor;
15424
+ if (snapshot == null) return true;
15425
+ return documentFlavor != null && documentFlavor !== _univerjs_core.DocumentFlavor.UNSPECIFIED;
15426
+ }
15173
15427
  function _getDrawingSkeletonFormat(drawingOrigin) {
15174
15428
  const { drawingId } = drawingOrigin;
15175
15429
  return {
@@ -15192,6 +15446,7 @@ function _getNextPageNumber(lastPage) {
15192
15446
  return lastPage.pageNumber + 1;
15193
15447
  }
15194
15448
  function lineBreaking(ctx, viewModel, shapedTextList, curPage, paragraphNode, sectionBreakConfig, tableSkeleton) {
15449
+ var _viewModel$getBody, _viewModel$getBody2;
15195
15450
  const { skeletonResourceReference } = ctx;
15196
15451
  const { lists, drawings = {}, localeService } = sectionBreakConfig;
15197
15452
  const { endIndex, blocks = [], children } = paragraphNode;
@@ -15208,7 +15463,7 @@ function lineBreaking(ctx, viewModel, shapedTextList, curPage, paragraphNode, se
15208
15463
  }
15209
15464
  const paragraphConfig = {
15210
15465
  paragraphIndex: endIndex,
15211
- paragraphStyle: _univerjs_core.Tools.deepClone(paragraphStyle),
15466
+ paragraphStyle: _applyBlockRangeLayoutParagraphStyle((_viewModel$getBody = (_viewModel$getBody2 = viewModel.getBody) === null || _viewModel$getBody2 === void 0 ? void 0 : _viewModel$getBody2.call(viewModel)) !== null && _viewModel$getBody !== void 0 ? _viewModel$getBody : null, paragraph, paragraphStyle, _shouldApplyDocumentDefaultParagraphStyle(viewModel)),
15212
15467
  paragraphNonInlineSkeDrawings,
15213
15468
  paragraphInlineSkeDrawings,
15214
15469
  skeTablesInParagraph: tableSkeleton ? [{
@@ -15768,6 +16023,22 @@ function TibetanHandler(index, charArray, viewModel, paragraphNode, sectionBreak
15768
16023
  glyphGroup: [createSkeletonWordGlyph(glyph.join(""), config)]
15769
16024
  };
15770
16025
  }
16026
+ function ThaiHandler(index, charArray, viewModel, paragraphNode, sectionBreakConfig, paragraph) {
16027
+ const config = getFontCreateConfig(index, viewModel, paragraphNode, sectionBreakConfig, paragraph);
16028
+ const glyph = [];
16029
+ let step = 0;
16030
+ for (let i = 0; i < charArray.length; i++) {
16031
+ const newChar = charArray[i];
16032
+ if (hasThai(newChar)) {
16033
+ glyph.push(newChar);
16034
+ step++;
16035
+ } else break;
16036
+ }
16037
+ return {
16038
+ step,
16039
+ glyphGroup: [createSkeletonWordGlyph(glyph.join(""), config)]
16040
+ };
16041
+ }
15771
16042
 
15772
16043
  //#endregion
15773
16044
  //#region src/components/docs/layout/block/paragraph/shaping.ts
@@ -15913,6 +16184,11 @@ function shaping(ctx, content, viewModel, paragraphNode, sectionBreakConfig, use
15913
16184
  shapedGlyphs.push(...glyphGroup);
15914
16185
  i += step;
15915
16186
  src = src.substring(step);
16187
+ } else if (hasThai(char)) {
16188
+ const { step, glyphGroup } = ThaiHandler(i, src, viewModel, paragraphNode, sectionBreakConfig, paragraph);
16189
+ shapedGlyphs.push(...glyphGroup);
16190
+ i += step;
16191
+ src = src.substring(step);
15916
16192
  } else {
15917
16193
  const { step, glyphGroup } = otherHandler(i, src, viewModel, paragraphNode, sectionBreakConfig, paragraph);
15918
16194
  shapedGlyphs.push(...glyphGroup);
@@ -16036,86 +16312,125 @@ function _pushPage(allCurrentSkeletonPages, blockSkeletonPages) {
16036
16312
  //#endregion
16037
16313
  //#region src/components/docs/layout/hyphenation/pattern-loaders.gen.ts
16038
16314
  const PATTERN_LOADERS = {
16039
- ["af"]: () => Promise.resolve().then(() => require("./af-Bsj1JSBP.js")),
16040
- ["as"]: () => Promise.resolve().then(() => require("./as-s7lqjieq.js")),
16041
- ["be"]: () => Promise.resolve().then(() => require("./be-L5eMFm5U.js")),
16042
- ["bg"]: () => Promise.resolve().then(() => require("./bg-DPu8oywG.js")),
16043
- ["bn"]: () => Promise.resolve().then(() => require("./bn-CIWO--x0.js")),
16044
- ["ca"]: () => Promise.resolve().then(() => require("./ca-C4gmkbL6.js")),
16045
- ["cop"]: () => Promise.resolve().then(() => require("./cop-BYQt2Eln.js")),
16046
- ["cs"]: () => Promise.resolve().then(() => require("./cs-psn0RDcR.js")),
16047
- ["cu"]: () => Promise.resolve().then(() => require("./cu-CI412h46.js")),
16048
- ["cy"]: () => Promise.resolve().then(() => require("./cy-u9h1j59b.js")),
16049
- ["da"]: () => Promise.resolve().then(() => require("./da-BQ70NE2J.js")),
16050
- ["de-1901"]: () => Promise.resolve().then(() => require("./de-1901-C5Xgq4-z.js")),
16051
- ["de-1996"]: () => Promise.resolve().then(() => require("./de-1996-BmpXhD5R.js")),
16052
- ["de-ch-1901"]: () => Promise.resolve().then(() => require("./de-ch-1901-mUpubovn.js")),
16053
- ["el-monoton"]: () => Promise.resolve().then(() => require("./el-monoton-1KLys64v.js")),
16054
- ["el-polyton"]: () => Promise.resolve().then(() => require("./el-polyton-C8sv-vqz.js")),
16055
- ["en-gb"]: () => Promise.resolve().then(() => require("./en-gb-DidBtNJX.js")),
16056
- ["en-us"]: () => Promise.resolve().then(() => require("./en-us-DKyh_RpA.js")),
16057
- ["es"]: () => Promise.resolve().then(() => require("./es-C1gCT0OW.js")),
16058
- ["et"]: () => Promise.resolve().then(() => require("./et-UwA1uq3o.js")),
16059
- ["eu"]: () => Promise.resolve().then(() => require("./eu-pizKbeo6.js")),
16060
- ["fi"]: () => Promise.resolve().then(() => require("./fi-bkmcjeIB.js")),
16061
- ["fr"]: () => Promise.resolve().then(() => require("./fr-DTRdyReV.js")),
16062
- ["fur"]: () => Promise.resolve().then(() => require("./fur-CzaEPYy4.js")),
16063
- ["ga"]: () => Promise.resolve().then(() => require("./ga-DfpmmLL7.js")),
16064
- ["gl"]: () => Promise.resolve().then(() => require("./gl-BvPLj87g.js")),
16065
- ["grc"]: () => Promise.resolve().then(() => require("./grc-CWjbj1rE.js")),
16066
- ["gu"]: () => Promise.resolve().then(() => require("./gu-B9b71pv0.js")),
16067
- ["hi"]: () => Promise.resolve().then(() => require("./hi-B0PM9Naw.js")),
16068
- ["hr"]: () => Promise.resolve().then(() => require("./hr-hhdjugdi.js")),
16069
- ["hsb"]: () => Promise.resolve().then(() => require("./hsb-CUC0Vhy0.js")),
16070
- ["hu"]: () => Promise.resolve().then(() => require("./hu-DNqLSdxp.js")),
16071
- ["hy"]: () => Promise.resolve().then(() => require("./hy-Cr37-HYR.js")),
16072
- ["ia"]: () => Promise.resolve().then(() => require("./ia-_xcaTvlU.js")),
16073
- ["id"]: () => Promise.resolve().then(() => require("./id-DTTt6JOe.js")),
16074
- ["is"]: () => Promise.resolve().then(() => require("./is-BlJOUdIf.js")),
16075
- ["it"]: () => Promise.resolve().then(() => require("./it-1kO7pboy.js")),
16076
- ["ka"]: () => Promise.resolve().then(() => require("./ka-06TLrBSU.js")),
16077
- ["kmr"]: () => Promise.resolve().then(() => require("./kmr-CqLLMgB-.js")),
16078
- ["kn"]: () => Promise.resolve().then(() => require("./kn-DsgCykwv.js")),
16079
- ["la"]: () => Promise.resolve().then(() => require("./la-BtfI1L1Y.js")),
16080
- ["la-x-classic"]: () => Promise.resolve().then(() => require("./la-x-classic-Csxxqk4A.js")),
16081
- ["la-x-liturgic"]: () => Promise.resolve().then(() => require("./la-x-liturgic-DP4lkHMh.js")),
16082
- ["lt"]: () => Promise.resolve().then(() => require("./lt-BLnhu8cj.js")),
16083
- ["lv"]: () => Promise.resolve().then(() => require("./lv-BWU1ykNC.js")),
16084
- ["ml"]: () => Promise.resolve().then(() => require("./ml-DCPEVUGQ.js")),
16085
- ["mn-cyrl"]: () => Promise.resolve().then(() => require("./mn-cyrl-R4Uzk2PR.js")),
16086
- ["mn-cyrl-x-lmc"]: () => Promise.resolve().then(() => require("./mn-cyrl-x-lmc-DcrbbdVO.js")),
16087
- ["mr"]: () => Promise.resolve().then(() => require("./mr-a95kT02n.js")),
16088
- ["mul-ethi"]: () => Promise.resolve().then(() => require("./mul-ethi-Ha-646Ih.js")),
16089
- ["nb"]: () => Promise.resolve().then(() => require("./nb-DVDq5SId.js")),
16090
- ["nl"]: () => Promise.resolve().then(() => require("./nl-xvtaATgd.js")),
16091
- ["nn"]: () => Promise.resolve().then(() => require("./nn-Dd3GYfsu.js")),
16092
- ["no"]: () => Promise.resolve().then(() => require("./no-Ccuz1dXv.js")),
16093
- ["oc"]: () => Promise.resolve().then(() => require("./oc-DMNrvVUu.js")),
16094
- ["or"]: () => Promise.resolve().then(() => require("./or-BBnbptii.js")),
16095
- ["pa"]: () => Promise.resolve().then(() => require("./pa-Bpqjl4TY.js")),
16096
- ["pi"]: () => Promise.resolve().then(() => require("./pi-Dw9S8R8a.js")),
16097
- ["pl"]: () => Promise.resolve().then(() => require("./pl-BxIw_3q_.js")),
16098
- ["pms"]: () => Promise.resolve().then(() => require("./pms-ts8oJNTo.js")),
16099
- ["pt"]: () => Promise.resolve().then(() => require("./pt-INYdw9le.js")),
16100
- ["rm"]: () => Promise.resolve().then(() => require("./rm-SrIsmyuH.js")),
16101
- ["ro"]: () => Promise.resolve().then(() => require("./ro--lDLf93Z.js")),
16102
- ["ru"]: () => Promise.resolve().then(() => require("./ru-CnviOn4F.js")),
16103
- ["sa"]: () => Promise.resolve().then(() => require("./sa--YzUfT9m.js")),
16104
- ["sh-cyrl"]: () => Promise.resolve().then(() => require("./sh-cyrl-C-Y7f9iS.js")),
16105
- ["sh-latn"]: () => Promise.resolve().then(() => require("./sh-latn-DE0Oa7St.js")),
16106
- ["sk"]: () => Promise.resolve().then(() => require("./sk-CL5uDe3A.js")),
16107
- ["sl"]: () => Promise.resolve().then(() => require("./sl-D8ckCfPR.js")),
16108
- ["sr-cyrl"]: () => Promise.resolve().then(() => require("./sr-cyrl-CZdv8WGY.js")),
16109
- ["sv"]: () => Promise.resolve().then(() => require("./sv-DYQd48Sm.js")),
16110
- ["ta"]: () => Promise.resolve().then(() => require("./ta-DOa0x7zq.js")),
16111
- ["te"]: () => Promise.resolve().then(() => require("./te-BtexCVtn.js")),
16112
- ["th"]: () => Promise.resolve().then(() => require("./th-BJUX68-0.js")),
16113
- ["tk"]: () => Promise.resolve().then(() => require("./tk-CEs8UQxA.js")),
16114
- ["tr"]: () => Promise.resolve().then(() => require("./tr-BMiKDMrF.js")),
16115
- ["uk"]: () => Promise.resolve().then(() => require("./uk-B8pzUYbn.js")),
16116
- ["zh-latn-pinyin"]: () => Promise.resolve().then(() => require("./zh-latn-pinyin-s8_52NaR.js"))
16315
+ ["af"]: () => Promise.resolve().then(() => require("./af-B2UUzO69.js")),
16316
+ ["as"]: () => Promise.resolve().then(() => require("./as-DbZDYp6O.js")),
16317
+ ["be"]: () => Promise.resolve().then(() => require("./be-BBx0lyG-.js")),
16318
+ ["bg"]: () => Promise.resolve().then(() => require("./bg-DeX16RKi.js")),
16319
+ ["bn"]: () => Promise.resolve().then(() => require("./bn-3fjitMC3.js")),
16320
+ ["ca"]: () => Promise.resolve().then(() => require("./ca-BxC8Zblv.js")),
16321
+ ["cop"]: () => Promise.resolve().then(() => require("./cop-TvdaSBlz.js")),
16322
+ ["cs"]: () => Promise.resolve().then(() => require("./cs-MSNfJH-L.js")),
16323
+ ["cu"]: () => Promise.resolve().then(() => require("./cu-7FYbjEBr.js")),
16324
+ ["cy"]: () => Promise.resolve().then(() => require("./cy-CPuxVqb_.js")),
16325
+ ["da"]: () => Promise.resolve().then(() => require("./da-BWsE849b.js")),
16326
+ ["de-1901"]: () => Promise.resolve().then(() => require("./de-1901-BYSTp3Fp.js")),
16327
+ ["de-1996"]: () => Promise.resolve().then(() => require("./de-1996-DWtCfm_A.js")),
16328
+ ["de-ch-1901"]: () => Promise.resolve().then(() => require("./de-ch-1901-rWVcF3cs.js")),
16329
+ ["el-monoton"]: () => Promise.resolve().then(() => require("./el-monoton-BEUGM9Fi.js")),
16330
+ ["el-polyton"]: () => Promise.resolve().then(() => require("./el-polyton-Bvh6HAfD.js")),
16331
+ ["en-gb"]: () => Promise.resolve().then(() => require("./en-gb-Dcrai7kY.js")),
16332
+ ["en-us"]: () => Promise.resolve().then(() => en_us_exports),
16333
+ ["es"]: () => Promise.resolve().then(() => require("./es-CVNdGI0L.js")),
16334
+ ["et"]: () => Promise.resolve().then(() => require("./et-7Rdfp2-O.js")),
16335
+ ["eu"]: () => Promise.resolve().then(() => require("./eu-DyEtVwHo.js")),
16336
+ ["fi"]: () => Promise.resolve().then(() => require("./fi-DzRES2Ke.js")),
16337
+ ["fr"]: () => Promise.resolve().then(() => require("./fr-DJMVMLCz.js")),
16338
+ ["fur"]: () => Promise.resolve().then(() => require("./fur-CzhK3vxZ.js")),
16339
+ ["ga"]: () => Promise.resolve().then(() => require("./ga-HXzOFdlG.js")),
16340
+ ["gl"]: () => Promise.resolve().then(() => require("./gl-C5TM79ih.js")),
16341
+ ["grc"]: () => Promise.resolve().then(() => require("./grc-CPQF-xFI.js")),
16342
+ ["gu"]: () => Promise.resolve().then(() => require("./gu-AqCkEYxo.js")),
16343
+ ["hi"]: () => Promise.resolve().then(() => require("./hi-DugLLbv4.js")),
16344
+ ["hr"]: () => Promise.resolve().then(() => require("./hr-LSMYFsyP.js")),
16345
+ ["hsb"]: () => Promise.resolve().then(() => require("./hsb-BlnRYHkg.js")),
16346
+ ["hu"]: () => Promise.resolve().then(() => require("./hu-Dwvtkpy7.js")),
16347
+ ["hy"]: () => Promise.resolve().then(() => require("./hy-BsG06_IV.js")),
16348
+ ["ia"]: () => Promise.resolve().then(() => require("./ia-BMOUZLGD.js")),
16349
+ ["id"]: () => Promise.resolve().then(() => require("./id-DhSs0vqq.js")),
16350
+ ["is"]: () => Promise.resolve().then(() => require("./is-iJhrS7Aw.js")),
16351
+ ["it"]: () => Promise.resolve().then(() => require("./it-Aam-BmsV.js")),
16352
+ ["ka"]: () => Promise.resolve().then(() => require("./ka-CfLSYpVb.js")),
16353
+ ["kmr"]: () => Promise.resolve().then(() => require("./kmr-DYCscIsi.js")),
16354
+ ["kn"]: () => Promise.resolve().then(() => require("./kn-OCEDIM_O.js")),
16355
+ ["la"]: () => Promise.resolve().then(() => require("./la-DFS3RPxE.js")),
16356
+ ["la-x-classic"]: () => Promise.resolve().then(() => require("./la-x-classic-BocVpbl6.js")),
16357
+ ["la-x-liturgic"]: () => Promise.resolve().then(() => require("./la-x-liturgic-CpZYm3b6.js")),
16358
+ ["lt"]: () => Promise.resolve().then(() => require("./lt-NC6HHzxn.js")),
16359
+ ["lv"]: () => Promise.resolve().then(() => require("./lv-BMFTm6cB.js")),
16360
+ ["ml"]: () => Promise.resolve().then(() => require("./ml-DDWi25Fi.js")),
16361
+ ["mn-cyrl"]: () => Promise.resolve().then(() => require("./mn-cyrl-TCUeX7is.js")),
16362
+ ["mn-cyrl-x-lmc"]: () => Promise.resolve().then(() => require("./mn-cyrl-x-lmc-BCmp3Ybn.js")),
16363
+ ["mr"]: () => Promise.resolve().then(() => require("./mr-1gjg-u15.js")),
16364
+ ["mul-ethi"]: () => Promise.resolve().then(() => require("./mul-ethi-B9a4BMM6.js")),
16365
+ ["nb"]: () => Promise.resolve().then(() => require("./nb-DS_J6lre.js")),
16366
+ ["nl"]: () => Promise.resolve().then(() => require("./nl-CBtSVLcv.js")),
16367
+ ["nn"]: () => Promise.resolve().then(() => require("./nn-DYJOn4Sh.js")),
16368
+ ["no"]: () => Promise.resolve().then(() => require("./no-C20NyT1P.js")),
16369
+ ["oc"]: () => Promise.resolve().then(() => require("./oc-CrKqER_F.js")),
16370
+ ["or"]: () => Promise.resolve().then(() => require("./or-ZqEtsnaq.js")),
16371
+ ["pa"]: () => Promise.resolve().then(() => require("./pa-BD3r0Teo.js")),
16372
+ ["pi"]: () => Promise.resolve().then(() => require("./pi-CQUwMUvz.js")),
16373
+ ["pl"]: () => Promise.resolve().then(() => require("./pl-CawofTLo.js")),
16374
+ ["pms"]: () => Promise.resolve().then(() => require("./pms-DMqDXwo-.js")),
16375
+ ["pt"]: () => Promise.resolve().then(() => require("./pt-BIiUaINZ.js")),
16376
+ ["rm"]: () => Promise.resolve().then(() => require("./rm-B_-8T7Y1.js")),
16377
+ ["ro"]: () => Promise.resolve().then(() => require("./ro-B2Xhfkgx.js")),
16378
+ ["ru"]: () => Promise.resolve().then(() => require("./ru-lj-rTTpe.js")),
16379
+ ["sa"]: () => Promise.resolve().then(() => require("./sa-D3h-cY2Z.js")),
16380
+ ["sh-cyrl"]: () => Promise.resolve().then(() => require("./sh-cyrl-0o7p_z-7.js")),
16381
+ ["sh-latn"]: () => Promise.resolve().then(() => require("./sh-latn-BTi9p-0q.js")),
16382
+ ["sk"]: () => Promise.resolve().then(() => require("./sk-D6mOX2KK.js")),
16383
+ ["sl"]: () => Promise.resolve().then(() => require("./sl-Bzz3gkvn.js")),
16384
+ ["sr-cyrl"]: () => Promise.resolve().then(() => require("./sr-cyrl-V07WO3rb.js")),
16385
+ ["sv"]: () => Promise.resolve().then(() => require("./sv-CyQXUuzx.js")),
16386
+ ["ta"]: () => Promise.resolve().then(() => require("./ta-Brwz0zYf.js")),
16387
+ ["te"]: () => Promise.resolve().then(() => require("./te-CgvirCa4.js")),
16388
+ ["th"]: () => Promise.resolve().then(() => require("./th-PlSNhaza.js")),
16389
+ ["tk"]: () => Promise.resolve().then(() => require("./tk-O54r2ybT.js")),
16390
+ ["tr"]: () => Promise.resolve().then(() => require("./tr-Dh1h3Dno.js")),
16391
+ ["uk"]: () => Promise.resolve().then(() => require("./uk-E2mCrVCU.js")),
16392
+ ["zh-latn-pinyin"]: () => Promise.resolve().then(() => require("./zh-latn-pinyin-C2RfFfDl.js"))
16117
16393
  };
16118
16394
 
16395
+ //#endregion
16396
+ //#region src/components/docs/layout/hyphenation/patterns/en-us.ts
16397
+ var en_us_exports = /* @__PURE__ */ __exportAll({ EnUs: () => EnUs });
16398
+ /**
16399
+ * Copyright 2023-present DreamNum Co., Ltd.
16400
+ *
16401
+ * Licensed under the Apache License, Version 2.0 (the "License");
16402
+ * you may not use this file except in compliance with the License.
16403
+ * You may obtain a copy of the License at
16404
+ *
16405
+ * http://www.apache.org/licenses/LICENSE-2.0
16406
+ *
16407
+ * Unless required by applicable law or agreed to in writing, software
16408
+ * distributed under the License is distributed on an "AS IS" BASIS,
16409
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16410
+ * See the License for the specific language governing permissions and
16411
+ * limitations under the License.
16412
+ */
16413
+ const EnUs = [
16414
+ "0004,004,001,003,005,0005,00005,000005,0002,002,0000005,0003,00003,00505,00034,0001,00055,00004,4,05,0055,04,42,03,02,2,404,3,044,01,0505,55,5,045,041,0033,000004,22,00504,5504,0042,1,21,41,402,405,4004,43,23,000054,303,3005,022,5004,000003,252,45,25,2004,000505,054,403,401,3002,0025,144,432,00054,34,12,234,0022,014,0304,012,143,503,0403,101,052,414,212,011,043,00002,0041,0024,05005,03003,00102,0404,04303,01004,0034,025,0044,00404,00025,0103,042,0205,412,104,54,344,433,5005,253,055,0402,3004,0043,204,505,454,0000004,00303,04004,552,201,4005,0255,52,444,14,44,02004,033,05004,00045,00013,0021,0405,00044,0054,50055,000303,00001,304,0204,11,301,232,122,00305,504,000043,0104,00052,000045,50004,0023,00033,00032,00202,5003,202,0401,0000505,214,102,032,000161,004101,00501,00301,0036,0052,00023,006101,006,00401,000521,0014,0063,00012,000501,000006,000604,000601,005001,005005,0010305,00006,003012,003005,0003011,0061,013,000021,000022,000105,00211,00062,00051,000112,006013,000011,0200306,1021,0050001,003003,2102,305,000015,01030005,000035,001011,00021,16330001,0234,030006,5020001,000001,00016,0031,021,21431,002305,0350014,0000012,000063,00101,106,105,00435,00063,0300061,00041,100306,003602,023,0503,0010011,10003,1005,30011,00031,0001001,0000061,0030003,30305,001201,0301,5000101,500101,00015,000401,000065,000016,0000402,0500002,000205,030201,500301,00014,5001,000002,00030011,01034,0300006,030213,00400304,050001,05003,000311,0634,00061,0006,00000604,00050013,00213,0030001,100003,000033,30002,00003632,0003004,050003,0000021,006303,0000006,00005005,30451,03001,00231,00056,00011,6,001001,00500001,03005,503005,0000010001,1002,003001,001065,300001,32011,32,0000003,0213001,0500053,021005,10001,0000011,0001041,0020016,100032,50011,0606,5002,3001,03002,0015001,0102,00003001,000000033,0000001,300101,300015,0101003,00000101,0100501,0101,0010033,00000362,000014,0005001,031",
16415
+ "{\".\":[{\"a\":[{\"c\":[{\"h\":0}],\"d\":[{\"d\":[{\"e\":[{\"r\":1}]}]}],\"f\":[{\"t\":2}],\"l\":[{\"t\":3}],\"m\":[{\"a\":[{\"t\":4}]}],\"n\":[{\"c\":4,\"g\":0,\"i\":[{\"m\":5}],\"t\":[{\"e\":3,\"i\":[{\"s\":6}]},0]}],\"r\":[{\"s\":4,\"t\":[{\"i\":[{\"e\":1}],\"y\":1}]}],\"s\":[{\"c\":3,\"p\":2,\"s\":2,\"t\":[{\"e\":[{\"r\":7}]}]}],\"t\":[{\"o\":[{\"m\":6}]}],\"u\":[{\"d\":2}],\"v\":[{\"i\":1}],\"w\":[{\"n\":0}]}],\"b\":[{\"a\":[{\"g\":1,\"n\":[{\"a\":4}],\"s\":[{\"e\":0}]}],\"e\":[{\"r\":[{\"a\":4},0],\"s\":[{\"m\":3,\"t\":[{\"o\":4}]}]}],\"r\":[{\"i\":8}],\"u\":[{\"t\":[{\"t\":[{\"i\":0}]}]}]}],\"c\":[{\"a\":[{\"m\":[{\"p\":[{\"e\":0}]}],\"n\":[{\"c\":5}],\"p\":[{\"a\":[{\"b\":6}]}],\"r\":[{\"o\":[{\"l\":5}]}],\"t\":1}],\"e\":[{\"l\":[{\"a\":1}]}],\"h\":[{\"i\":[{\"l\":[{\"l\":[{\"i\":7}]}]}]},1],\"i\":[{\"t\":[{\"r\":5}]},9],\"o\":[{\"e\":3,\"r\":[{\"n\":[{\"e\":[{\"r\":5}]}]},1],\"n\":[{\"g\":[{\"r\":5}]}]}]}],\"d\":[{\"e\":[{\"m\":[{\"o\":[{\"i\":1}]}],\"o\":3,\"r\":[{\"a\":3,\"i\":[{\"v\":[{\"a\":4}]},3]}],\"s\":[{\"c\":0}]}],\"i\":[{\"c\":[{\"t\":[{\"i\":[{\"o\":10}]}]}]}],\"o\":[{\"t\":1}],\"u\":[{\"c\":1,\"m\":[{\"b\":6}]}],\"r\":[{\"i\":[{\"v\":67}]}]}],\"e\":[{\"a\":[{\"r\":[{\"t\":[{\"h\":7}]}],\"s\":[{\"i\":11}]}],\"b\":1,\"e\":[{\"r\":0}],\"g\":9,\"l\":[{\"d\":4,\"e\":[{\"m\":3}]}],\"n\":[{\"a\":[{\"m\":12}],\"g\":3,\"s\":3}],\"q\":[{\"u\":[{\"i\":[{\"t\":13}]}]}],\"r\":[{\"r\":[{\"i\":1}]}],\"s\":3,\"u\":[{\"l\":[{\"e\":[{\"r\":1}]}]},3],\"y\":[{\"e\":5}],\"t\":[{\"h\":[{\"y\":[{\"l\":162}]}]}],\"v\":[{\"e\":[{\"r\":[{\"s\":[{\"i\":[{\"b\":158}]}]}]}]},9]}],\"f\":[{\"e\":[{\"s\":11}],\"o\":[{\"r\":[{\"m\":[{\"e\":[{\"r\":5}]}]}]}]}],\"g\":[{\"a\":[{\"s\":[{\"o\":[{\"m\":163}]}]},9],\"e\":[{\"n\":[{\"t\":14}],\"o\":[{\"g\":4,\"m\":[{\"e\":1}],\"t\":164}]},9],\"i\":[{\"a\":4,\"b\":1}],\"o\":[{\"r\":1}]}],\"h\":[{\"a\":[{\"n\":[{\"d\":[{\"i\":6}],\"k\":5}]}],\"e\":[{\"r\":[{\"o\":[{\"i\":6,\"e\":3}]}],\"s\":11,\"t\":11,\"m\":[{\"o\":165}],\"p\":[{\"a\":166}]},9],\"i\":[{\"b\":3,\"e\":[{\"r\":3}]}],\"o\":[{\"n\":[{\"e\":[{\"y\":5}],\"o\":11}],\"v\":5}]}],\"i\":[{\"d\":[{\"l\":1,\"o\":[{\"l\":12}]}],\"m\":[{\"m\":3,\"p\":[{\"i\":[{\"n\":4}]}]}],\"n\":[{\"c\":[{\"i\":3}],\"e\":8,\"k\":9,\"s\":3,\"u\":[{\"t\":167}]},2],\"r\":[{\"r\":4}],\"s\":[{\"i\":1}]}],\"j\":[{\"u\":[{\"r\":3}]}],\"l\":[{\"a\":[{\"c\":[{\"y\":1}],\"m\":1,\"t\":[{\"e\":[{\"r\":5}],\"h\":6}]}],\"e\":[{\"g\":[{\"e\":5}],\"n\":0,\"p\":5,\"v\":15,\"i\":[{\"c\":[{\"e\":[{\"s\":170}]}]}]},9],\"i\":[{\"g\":[{\"a\":5},1],\"n\":9,\"o\":3,\"t\":1}]}],\"m\":[{\"a\":[{\"g\":[{\"a\":16}],\"l\":[{\"o\":5}],\"n\":[{\"a\":5}],\"r\":[{\"t\":[{\"i\":5}]}]}],\"e\":[{\"r\":[{\"c\":11}],\"t\":[{\"e\":[{\"r\":4}],\"a\":[{\"l\":[{\"a\":0}]}]}],\"g\":[{\"a\":[{\"l\":171}]}]},9],\"i\":[{\"s\":[{\"t\":[{\"i\":6}],\"e\":[{\"r\":[{\"s\":173}]}]},15],\"m\":[{\"i\":[{\"c\":172}]}]}],\"o\":[{\"n\":[{\"e\":11}],\"r\":[{\"o\":3}]}],\"u\":[{\"t\":[{\"a\":[{\"b\":6},4]}]}]}],\"n\":[{\"i\":[{\"c\":1}],\"e\":[{\"o\":[{\"f\":174}]}],\"o\":[{\"e\":[{\"t\":[{\"h\":15}]}],\"n\":[{\"e\":[{\"m\":175}]}]}]}],\"o\":[{\"d\":[{\"d\":5},9],\"f\":[{\"t\":[{\"e\":4}]}],\"r\":[{\"a\":[{\"t\":[{\"o\":4}]}],\"c\":3,\"d\":2,\"t\":3}],\"s\":[{\"t\":[{\"l\":1}]},3],\"t\":[{\"h\":11}],\"u\":[{\"t\":11}]}],\"p\":[{\"e\":[{\"d\":[{\"a\":[{\"l\":5}]}],\"t\":[{\"e\":4,\"i\":[{\"t\":4}]}]}],\"i\":[{\"e\":1,\"o\":[{\"n\":5}],\"t\":9}],\"r\":[{\"e\":[{\"m\":11,\"a\":[{\"m\":15}]}]}],\"o\":[{\"l\":[{\"y\":[{\"s\":137}]}],\"s\":[{\"t\":[{\"a\":[{\"m\":137}]}]}]}]}],\"r\":[{\"a\":[{\"c\":1,\"n\":[{\"t\":0}],\"t\":[{\"i\":[{\"o\":[{\"n\":[{\"a\":7}]}]}]}],\"v\":[{\"e\":[{\"n\":[{\"o\":176}]}]}]}],\"e\":[{\"e\":[{\"c\":173},8],\"m\":[{\"i\":[{\"t\":4}]}],\"s\":[{\"t\":[{\"a\":[{\"t\":4}]}]},8]}],\"i\":[{\"g\":1,\"t\":[{\"u\":5}]}],\"o\":[{\"q\":1,\"s\":[{\"t\":5}],\"w\":[{\"d\":5}]}],\"u\":[{\"d\":1}]}],\"s\":[{\"c\":[{\"i\":[{\"e\":11}]}],\"e\":[{\"l\":[{\"f\":6,\"l\":6}],\"n\":9,\"r\":[{\"i\":[{\"e\":4}]}],\"m\":[{\"i\":[{\"c\":0,\"d\":177,\"p\":36,\"r\":36,\"s\":178,\"v\":36},6]}]}],\"h\":9,\"i\":[{\"n\":[{\"g\":17}]},9],\"t\":[{\"a\":[{\"b\":[{\"l\":5}]}]},1],\"y\":9,\"p\":[{\"h\":[{\"i\":[{\"n\":179}]}],\"i\":[{\"n\":[{\"o\":137}]}]}]}],\"t\":[{\"a\":[{\"p\":[{\"e\":[{\"s\":[{\"t\":[{\"r\":180}]}]}]}]},1],\"e\":[{\"n\":[{\"a\":[{\"n\":5}]}],\"l\":[{\"e\":[{\"g\":[{\"r\":3}]}]}]},1],\"h\":9,\"i\":[{\"l\":0,\"m\":[{\"o\":16}],\"n\":[{\"g\":17,\"k\":5}]},9],\"o\":[{\"n\":[{\"a\":0}],\"p\":[{\"i\":5,\"o\":[{\"g\":170}]},1],\"u\":[{\"s\":5}],\"q\":9}],\"r\":[{\"i\":[{\"b\":[{\"u\":[{\"t\":6}]}]}]}]}],\"u\":[{\"n\":[{\"a\":[{\"t\":[{\"t\":144}]},2],\"c\":[{\"e\":3}],\"d\":[{\"e\":[{\"r\":7}]}],\"e\":[{\"r\":[{\"r\":181}]},2],\"k\":4,\"o\":4,\"u\":3}],\"p\":3,\"r\":[{\"e\":11}],\"s\":[{\"a\":4}]}],\"v\":[{\"e\":[{\"n\":[{\"d\":[{\"e\":0}]}],\"r\":[{\"a\":4}]}],\"i\":[{\"c\":[{\"a\":[{\"r\":151}]}]}]}],\"w\":[{\"i\":[{\"l\":[{\"i\":5}]}],\"e\":[{\"b\":[{\"l\":131}]}]}],\"y\":[{\"e\":1}],\"k\":[{\"i\":[{\"l\":[{\"n\":[{\"i\":168}]}]}],\"o\":[{\"r\":[{\"t\":[{\"e\":169}]}]}]}]}],\"a\":[{\"b\":[{\".\":18,\"a\":[{\"l\":19,\"n\":19}],\"e\":[{\"r\":[{\"d\":4}]},8],\"i\":[{\"a\":5,\"t\":[{\"a\":[{\"b\":13}]}]}],\"l\":[{\"a\":[{\"t\":4}]}],\"o\":[{\"l\":[{\"i\":[{\"z\":20,\"c\":19}]}]}],\"r\":[{\"o\":[{\"g\":4}]},18],\"u\":[{\"l\":3}]}],\"c\":[{\"a\":[{\"r\":[{\"d\":4,\"o\":4},21],\"b\":[{\"l\":24}]}],\"e\":[{\"o\":[{\"u\":19}],\"r\":2}],\"h\":[{\"e\":[{\"t\":19}]}],\"i\":[{\"e\":23,\"n\":2,\"o\":23},22],\"r\":[{\"o\":[{\"b\":4}]}],\"t\":[{\"i\":[{\"f\":5}]}],\"u\":[{\"l\":3,\"m\":1}]}],\"d\":[{\"d\":[{\"i\":[{\"n\":1}]}],\"e\":[{\"r\":[{\".\":4}]}],\"i\":[{\"a\":23,\"c\":[{\"a\":3}],\"e\":[{\"r\":0}],\"o\":23,\"t\":23,\"u\":19},25],\"l\":[{\"e\":1}],\"o\":[{\"w\":3}],\"r\":[{\"a\":[{\"n\":4}]}],\"s\":[{\"u\":1}],\"u\":[{\"c\":23,\"m\":4},18]},24],\"e\":[{\"r\":[{\"i\":[{\"e\":17}]},1]}],\"f\":[{\"f\":[{\"i\":[{\"s\":[{\"h\":170}]}]},0]},24],\"g\":[{\"a\":[{\"b\":21,\"n\":0}],\"e\":[{\"l\":[{\"l\":4}],\"o\":0,\"u\":18}],\"i\":2,\"l\":26,\"n\":2,\"o\":[{\"g\":27,\"n\":[{\"i\":3}]},24],\"u\":[{\"e\":[{\"r\":19}],\"l\":4}],\"y\":21}],\"h\":[{\"a\":23,\"e\":23,\"l\":1,\"o\":23}],\"i\":[{\"a\":19,\"c\":[{\".\":23}],\"l\":[{\"y\":4}],\"n\":[{\"i\":[{\"n\":5}],\"o\":5},28],\"t\":[{\"e\":[{\"n\":5}]}]},9],\"j\":29,\"k\":[{\"e\":[{\"n\":2}]}],\"l\":[{\"a\":[{\"b\":4,\"d\":3,\"r\":21}],\"d\":[{\"i\":18}],\"e\":[{\"n\":[{\"d\":3,\"t\":[{\"i\":21}]}],\"o\":30},25],\"i\":[{\"a\":[{\".\":1}],\"e\":0},2],\"l\":[{\"e\":[{\"v\":4}],\"i\":[{\"c\":18}]}],\"m\":18,\"o\":[{\"g\":[{\".\":19}]}],\"y\":[{\".\":21,\"s\":[{\"t\":31},18],\"t\":32,\"z\":27}]}],\"m\":[{\"a\":[{\"b\":4,\"g\":3,\"r\":[{\"a\":5}],\"s\":[{\"c\":4}],\"t\":[{\"i\":[{\"s\":21}],\"o\":33}]},18],\"e\":[{\"r\":[{\"a\":4}],\"n\":[{\"t\":[{\"a\":[{\"b\":182}]}]}]}],\"i\":[{\"c\":3,\"f\":4,\"l\":[{\"y\":4}],\"n\":[{\"o\":0},2]}],\"o\":[{\"n\":19,\"r\":[{\"i\":6}]},24],\"p\":[{\"e\":[{\"n\":5}]}]}],\"n\":[{\"a\":[{\"g\":[{\"e\":3}],\"l\":[{\"y\":[{\"s\":183},27]}],\"r\":[{\"c\":3,\"i\":17},23],\"t\":[{\"i\":23}]}],\"d\":[{\"e\":[{\"s\":17}],\"i\":[{\"s\":3}],\"l\":2,\"o\":[{\"w\":1}]},18],\"e\":[{\"e\":19,\"n\":23,\"s\":[{\"t\":[{\".\":4}]}],\"u\":23}],\"g\":[{\"i\":[{\"e\":5}],\"l\":2},25],\"i\":[{\"c\":34,\"e\":[{\"s\":23}],\"f\":35,\"m\":[{\"e\":1,\"i\":19}],\"n\":[{\"e\":19}],\"o\":3,\"p\":23,\"s\":[{\"h\":3}],\"t\":3,\"u\":23}],\"k\":[{\"l\":[{\"i\":1}]}],\"n\":[{\"i\":[{\"z\":32}]}],\"o\":[{\"t\":[{\"h\":7},4],\"a\":[{\"c\":148}]},0],\"s\":[{\"a\":9,\"c\":[{\"o\":1}],\"n\":1,\"p\":[{\"o\":11},9],\"t\":1,\"u\":[{\"r\":1}],\"g\":[{\"r\":5}],\"v\":11}],\"t\":[{\"a\":[{\"l\":36}],\"i\":[{\"e\":1,\"d\":137,\"n\":184,\"r\":[{\"e\":137}]}],\"o\":18,\"r\":9,\"w\":1}],\"u\":[{\"a\":3,\"l\":3,\"r\":19}]},24],\"o\":18,\"p\":[{\"a\":[{\"r\":17,\"t\":4}],\"e\":[{\"r\":[{\"o\":4}],\"a\":[{\"b\":[{\"l\":[{\"e\":132}]}]}]}],\"h\":[{\"e\":[{\"r\":23}],\"i\":18}],\"i\":[{\"l\":[{\"l\":[{\"a\":[{\"r\":4},21]}]}],\"n\":3,\"t\":[{\"a\":3,\"u\":23}]}],\"l\":24,\"o\":[{\"c\":6,\"l\":[{\"a\":4}],\"r\":[{\"i\":6}],\"s\":[{\"t\":12}]}],\"s\":[{\"e\":[{\"s\":5}]}],\"u\":23}],\"q\":[{\"u\":[{\"e\":6}]}],\"r\":[{\"a\":[{\"c\":[{\"t\":3}],\"d\":[{\"e\":19,\"i\":[{\"s\":4}]}],\"l\":3,\"m\":[{\"e\":[{\"t\":[{\"e\":19}]}]}],\"n\":[{\"g\":17}],\"p\":11,\"t\":[{\"i\":[{\"o\":19,\"v\":4}]},1],\"u\":19,\"v\":38,\"w\":17}],\"b\":[{\"a\":[{\"l\":36}]}],\"c\":[{\"h\":[{\"a\":[{\"n\":1}],\"e\":[{\"t\":185}]}]}],\"d\":[{\"i\":[{\"n\":[{\"e\":4}]}],\"r\":1}],\"e\":[{\"a\":[{\"s\":4}],\"e\":23,\"n\":[{\"t\":3}],\"s\":[{\"s\":19}]}],\"f\":[{\"i\":1,\"l\":1}],\"i\":[{\"a\":[{\"l\":4,\"n\":3}],\"e\":[{\"t\":23}],\"m\":1,\"n\":[{\"a\":[{\"t\":4}]}],\"o\":3,\"z\":9},2],\"m\":[{\"i\":9}],\"o\":[{\"d\":20,\"n\":[{\"i\":19}],\"o\":23}],\"p\":9,\"q\":3,\"r\":[{\"e\":17,\"a\":[{\"n\":[{\"g\":[{\"e\":9}]}]}]}],\"s\":[{\"a\":1,\"h\":9}]},37],\"s\":[{\".\":18,\"a\":[{\"b\":1,\"n\":[{\"t\":3}]}],\"h\":[{\"i\":17}],\"i\":[{\"a\":[{\".\":19}],\"b\":23,\"c\":23,\"t\":39}],\"k\":[{\"i\":11}],\"l\":1,\"o\":[{\"c\":21}],\"p\":[{\"h\":4}],\"s\":[{\"h\":1}],\"t\":[{\"e\":[{\"n\":3}],\"r\":2}],\"u\":[{\"r\":[{\"a\":6}]}],\"y\":[{\"m\":[{\"p\":[{\"t\":[{\"o\":[{\"t\":4}]}]}]}]}]}],\"t\":[{\"a\":[{\"b\":[{\"l\":3}],\"c\":4,\"l\":[{\"o\":3}],\"p\":4},24],\"e\":[{\"c\":[{\"h\":4},5],\"g\":[{\"o\":3}],\"n\":[{\".\":3}],\"r\":[{\"a\":3,\"n\":[{\"a\":19},6]}],\"s\":[{\"t\":3}],\"v\":4}],\"h\":[{\"e\":[{\"m\":5,\"n\":19,\"r\":[{\"o\":[{\"s\":186}]}]}],\"o\":[{\"m\":5},1]},18],\"i\":[{\".\":18,\"a\":19,\"b\":20,\"c\":2,\"f\":3,\"o\":[{\"n\":[{\"a\":[{\"r\":7}]}]}],\"t\":[{\"u\":3}]}],\"o\":[{\"g\":21,\"m\":[{\"i\":[{\"z\":4}]},24],\"p\":21,\"s\":21}],\"r\":[{\"o\":[{\"p\":4}]},29],\"s\":[{\"k\":1}],\"t\":[{\"a\":[{\"g\":1}],\"e\":[{\"s\":[{\".\":170}]},4],\"h\":1}],\"u\":[{\"a\":4,\"e\":4,\"l\":3,\"r\":[{\"a\":3}]},24],\"y\":24}],\"u\":[{\"b\":1,\"g\":[{\"h\":[{\"t\":[{\"l\":17}]},12],\"u\":3}],\"l\":[{\"i\":[{\"f\":13}]},40],\"n\":[{\"d\":5}],\"r\":3,\"s\":[{\"i\":[{\"b\":4}]}],\"t\":[{\"e\":[{\"n\":5}],\"h\":2}]}],\"v\":[{\"a\":[{\"g\":3,\"n\":19},24],\"e\":[{\"n\":[{\"o\":0}],\"r\":[{\"a\":3,\"n\":4,\"y\":4}]}],\"i\":[{\"e\":[{\"r\":0}],\"g\":3,\"o\":[{\"u\":3}]},2],\"o\":[{\"c\":4,\"r\":29}]}],\"w\":[{\"a\":[{\"y\":27}],\"i\":3,\"l\":[{\"y\":1}],\"s\":0}],\"x\":[{\"i\":[{\"c\":1,\"d\":1}]}],\"y\":[{\"a\":[{\"l\":4}],\"e\":0,\"s\":0}],\"z\":[{\"i\":[{\"e\":[{\"r\":0}]}],\"z\":[{\"i\":5}]}]}],\"b\":[{\"a\":[{\".\":32,\"d\":[{\"g\":[{\"e\":[{\"r\":5}]}]}],\"g\":[{\"e\":1}],\"l\":[{\"a\":15}],\"n\":[{\"d\":[{\"a\":[{\"g\":5}]}],\"e\":0,\"i\":11}],\"r\":[{\"b\":[{\"i\":7}],\"i\":[{\"a\":17}],\"o\":[{\"n\":[{\"i\":[{\"e\":187}]}]}]}],\"s\":[{\"s\":[{\"i\":0}]}],\"t\":[{\"h\":[{\"y\":2}]},41],\"z\":1,\"c\":[{\"k\":[{\"e\":[{\"r\":[{\".\":84}]}]}]}]}],\"b\":[{\"e\":[{\"r\":23},24],\"i\":[{\"n\":[{\"a\":0}],\"t\":0}]},42],\"d\":43,\"e\":[{\".\":18,\"a\":[{\"k\":17,\"t\":12}],\"d\":[{\"a\":3,\"e\":3,\"i\":3},44],\"g\":[{\"i\":3,\"u\":4}],\"l\":[{\"i\":2,\"o\":3},41],\"m\":45,\"n\":[{\"i\":[{\"g\":4}],\"u\":4}],\"s\":[{\"p\":3,\"t\":[{\"r\":4}]},46],\"t\":[{\"i\":[{\"z\":5}],\"r\":4,\"w\":3},27],\"w\":3,\"y\":[{\"o\":4}],\"v\":[{\"i\":[{\"e\":9}]}]}],\"f\":25,\"h\":47,\"i\":[{\"b\":9,\"d\":[{\"i\":[{\"f\":167}]},1],\"e\":[{\"n\":4,\"r\":1},27],\"f\":48,\"l\":[{\"i\":[{\"z\":3}],\"l\":[{\"a\":[{\"b\":8}]}]},41],\"n\":[{\"a\":[{\"r\":49}],\"d\":0,\"e\":[{\"t\":4}]}],\"o\":[{\"g\":[{\"r\":3}],\"u\":4,\"m\":5,\"r\":[{\"b\":2,\"h\":15}]}],\"t\":[{\"i\":[{\"o\":50,\"v\":[{\"e\":188}]}],\"r\":3,\"u\":[{\"a\":51}],\"z\":19},9]}],\"j\":29,\"k\":1,\"l\":[{\"a\":[{\"t\":[{\"h\":7}],\"n\":[{\"d\":189}]}],\"e\":[{\".\":21,\"n\":17,\"s\":[{\"p\":32}]}],\"i\":[{\"s\":23,\"n\":[{\"d\":189}]}],\"o\":[{\"n\":[{\"d\":190}]},21],\"u\":[{\"n\":[{\"t\":17}]}]},52],\"m\":43,\"n\":[{\"e\":[{\"g\":5}]},47],\"o\":[{\"d\":[{\"i\":11},27],\"e\":1,\"l\":[{\"i\":[{\"c\":11}]}],\"m\":[{\"b\":[{\"i\":0}]}],\"n\":[{\"a\":[{\"t\":5},0]}],\"o\":27,\"r\":[{\".\":32,\"a\":43,\"d\":5,\"e\":32,\"i\":32,\"n\":[{\"o\":191}]}],\"s\":53,\"t\":[{\"a\":19,\"h\":6,\"o\":1,\"u\":[{\"l\":192}]}],\"u\":[{\"n\":[{\"d\":54}]}]}],\"p\":18,\"r\":[{\"i\":[{\"t\":18}],\"o\":[{\"t\":[{\"h\":54}]}],\"u\":[{\"s\":[{\"q\":17}]}]}],\"s\":[{\"o\":[{\"r\":17}]},55],\"t\":[{\"l\":1,\"o\":21,\"r\":23},25],\"u\":[{\"f\":[{\"f\":[{\"e\":[{\"r\":0}]}]}],\"g\":[{\"a\":1}],\"l\":[{\"i\":3}],\"m\":[{\"i\":17}],\"n\":[{\"t\":[{\"i\":17}]},1],\"r\":[{\"e\":3}],\"s\":[{\"i\":[{\"e\":[{\"r\":193,\"s\":193},5]}],\"s\":[{\"e\":17,\"i\":[{\"n\":[{\"g\":17}]}]}],\"t\":32}],\"t\":[{\"a\":18,\"i\":[{\"o\":27}],\"o\":19,\"e\":[{\"d\":[{\".\":8}]}],\"t\":[{\"e\":[{\"d\":0}]}]}]}],\"v\":29,\"w\":56,\"y\":[{\".\":32,\"s\":0}]}],\"c\":[{\"a\":[{\"b\":[{\"i\":[{\"n\":11}],\"l\":2}],\"c\":[{\"h\":17}],\"d\":[{\"e\":[{\"n\":4,\"m\":194}]}],\"g\":46,\"h\":57,\"l\":[{\"a\":[{\"t\":3}],\"l\":[{\"a\":0,\"i\":[{\"n\":6}]}],\"o\":18}],\"n\":[{\"d\":5,\"e\":0,\"i\":[{\"c\":0,\"s\":5,\"z\":11}],\"t\":[{\"y\":0}],\"y\":17}],\"p\":[{\"e\":[{\"r\":4}]}],\"r\":[{\"o\":[{\"m\":5}]}],\"s\":[{\"t\":[{\"e\":[{\"r\":6}],\"i\":[{\"g\":5}]}],\"y\":18}],\"t\":[{\"h\":1,\"i\":[{\"v\":18}],\"a\":[{\"s\":195}]}],\"v\":[{\"a\":[{\"l\":5}]}]},41],\"c\":[{\"h\":[{\"a\":6}],\"i\":[{\"a\":0}],\"o\":[{\"m\":[{\"p\":[{\"a\":10}]}],\"n\":17,\"u\":[{\"t\":12}]}]},23],\"e\":[{\".\":25,\"d\":[{\".\":18,\"e\":[{\"n\":18}]}],\"i\":27,\"l\":[{\".\":32,\"l\":27}],\"n\":[{\"c\":27,\"e\":58,\"i\":18,\"t\":27},41],\"p\":27,\"r\":[{\"a\":[{\"m\":4}]}],\"s\":[{\"a\":18,\"s\":[{\"i\":[{\"b\":59},27]}],\"t\":5}],\"t\":[{\"a\":60},0],\"w\":0}],\"h\":[{\".\":18,\"a\":[{\"b\":61,\"n\":[{\"i\":[{\"c\":32,\"s\":20}]}]}],\"e\":[{\"a\":[{\"p\":54}],\"d\":18,\"l\":[{\"o\":5}],\"m\":[{\"i\":27}],\"n\":[{\"e\":4}],\"r\":[{\".\":3,\"s\":3}]},8],\"i\":[{\"n\":[{\"e\":[{\".\":32,\"s\":[{\"s\":4}]}],\"i\":32},62],\"o\":32,\"t\":27,\"z\":8,\"e\":[{\"v\":[{\"o\":6}]}]}],\"o\":63,\"t\":[{\"i\":1}],\"s\":[{\".\":18,\"h\":[{\"u\":11}]}]},25],\"i\":[{\"a\":[{\"b\":64,\"r\":5},27],\"c\":4,\"e\":[{\"r\":18}],\"f\":[{\"i\":[{\"c\":[{\".\":32}]}]}],\"i\":18,\"l\":[{\"a\":1,\"i\":27}],\"m\":25,\"n\":[{\"a\":[{\"t\":27},21],\"e\":[{\"m\":11}],\"g\":[{\".\":19},29],\"o\":32,\"q\":8},25],\"o\":[{\"n\":17}],\"p\":[{\"e\":18,\"h\":3,\"i\":[{\"c\":18}]}],\"s\":[{\"t\":[{\"a\":18,\"i\":18}]}],\"t\":[{\"i\":[{\"z\":11}]},42],\"z\":32,\"g\":[{\"a\":[{\"r\":152}]}]},41],\"k\":[{\"i\":3},2],\"l\":[{\"a\":[{\"r\":[{\"a\":[{\"t\":[{\"i\":[{\"o\":19}]}]}],\"e\":32},18]}],\"e\":[{\"m\":0,\"a\":[{\"r\":0}]}],\"i\":[{\"c\":18,\"m\":17}],\"y\":0},65],\"n\":19,\"o\":[{\"a\":[{\"g\":4}],\"e\":8,\"g\":[{\"r\":1},25],\"i\":[{\"n\":[{\"c\":3}]},0],\"l\":[{\"i\":5,\"o\":[{\"r\":11},32]}],\"m\":[{\"e\":[{\"r\":5}]}],\"n\":[{\"a\":0,\"e\":21,\"g\":11,\"t\":5}],\"p\":[{\"a\":3,\"i\":[{\"c\":11}],\"l\":1,\"h\":[{\"o\":[{\"n\":196}]}]}],\"r\":[{\"b\":18,\"o\":[{\"n\":12}]}],\"s\":[{\"e\":0}],\"v\":[{\"e\":17},15],\"w\":[{\"a\":5}],\"z\":[{\"e\":5,\"i\":4}],\"u\":[{\"s\":[{\"t\":[{\"i\":84}]}]}]},41],\"q\":29,\"r\":[{\"a\":[{\"s\":[{\"t\":6}],\"t\":[{\".\":32,\"i\":[{\"c\":32}]}]}],\"e\":[{\"a\":[{\"t\":11}],\"d\":32,\"t\":[{\"a\":47}],\"v\":0}],\"i\":[{\"f\":5,\"n\":21,\"s\":17,\"t\":[{\"i\":[{\"e\":11},32]}]},8],\"o\":[{\"p\":[{\"l\":0,\"o\":6}],\"s\":[{\"e\":17}],\"c\":[{\"o\":[{\"d\":197}]}],\"e\":[{\"c\":[{\"o\":148}]}]}],\"u\":[{\"d\":0}]}],\"s\":66,\"t\":[{\"a\":[{\"b\":0,\"n\":[{\"g\":4,\"t\":19}]}],\"e\":[{\"r\":23},24],\"i\":[{\"c\":[{\"u\":21}],\"m\":[{\"i\":12}]}],\"u\":[{\"r\":0}],\"w\":21,\"r\":[{\"o\":[{\"m\":[{\"e\":[{\"c\":198}]}]}]}]},42],\"u\":[{\"d\":5,\"f\":21,\"i\":[{\"t\":[{\"y\":4}]},21],\"l\":[{\"i\":32,\"t\":[{\"i\":[{\"s\":0}],\"u\":27}]}],\"m\":[{\"a\":9,\"e\":23,\"i\":1}],\"n\":27,\"p\":[{\"i\":3,\"y\":4}],\"r\":[{\"a\":[{\"b\":67,\"n\":[{\"c\":[{\"e\":199}]}]}],\"i\":[{\"a\":4}]}],\"s\":[{\"s\":[{\"i\":17}]},41],\"t\":[{\"i\":[{\"e\":1,\"v\":56}],\"r\":18},68]}],\"y\":41,\"z\":[{\"e\":0}]}],\"d\":[{\"a\":[{\".\":32,\"b\":70,\"c\":[{\"h\":17}],\"f\":18,\"g\":25,\"m\":71,\"n\":[{\"g\":11}],\"r\":[{\"d\":6,\"k\":6,\"y\":18}],\"t\":[{\"i\":[{\"v\":18}],\"o\":18,\"a\":[{\"b\":137}]},27],\"v\":[{\"e\":5},53],\"y\":32,\"l\":[{\"o\":[{\"n\":[{\"e\":48}]}]}]},69],\"b\":29,\"c\":19,\"d\":[{\"a\":[{\"b\":20}],\"i\":[{\"b\":94}]},72],\"e\":[{\".\":25,\"a\":[{\"f\":6,\"l\":[{\"s\":[{\".\":1}]}]}],\"b\":[{\"i\":[{\"t\":5}],\"o\":[{\"n\":1}]}],\"c\":[{\"a\":[{\"n\":36}],\"i\":[{\"l\":1}],\"o\":[{\"m\":4}],\"l\":[{\"a\":[{\"r\":200}],\"i\":[{\"n\":[{\"a\":64}]}]}]}],\"d\":42,\"e\":[{\".\":18}],\"i\":[{\"f\":4}],\"l\":[{\"i\":[{\"e\":17,\"q\":16}],\"o\":4}],\"m\":[{\".\":32,\"i\":[{\"c\":[{\".\":5},27],\"l\":4}],\"o\":[{\"n\":[{\"s\":1}],\"r\":7,\"s\":9}]},21],\"n\":[{\"a\":[{\"r\":1}],\"o\":3,\"t\":[{\"i\":[{\"f\":7}]}],\"u\":3},41],\"p\":[{\"a\":3,\"i\":17,\"u\":9},2],\"q\":23,\"r\":[{\"h\":21,\"m\":32,\"n\":[{\"i\":[{\"z\":6}]}],\"s\":5}],\"s\":[{\".\":24,\"c\":2,\"o\":64,\"t\":[{\"i\":11,\"r\":3}],\"u\":1,\"i\":[{\"c\":11}]},8],\"t\":[{\"o\":9,\"i\":[{\"c\":9}]},2],\"v\":[{\"i\":[{\"l\":11}]},2],\"y\":18,\"f\":[{\"i\":[{\"n\":[{\"i\":[{\"t\":[{\"i\":201}]}]}]}]}]}],\"f\":43,\"g\":[{\"a\":21,\"e\":[{\"t\":73}],\"i\":2,\"y\":24}],\"h\":74,\"i\":[{\".\":32,\"a\":[{\"b\":5},75],\"c\":[{\"a\":[{\"m\":1,\"i\":[{\"d\":15}]}],\"e\":21,\"t\":27}],\"d\":27,\"e\":[{\"n\":76}],\"f\":[{\"f\":[{\"r\":[{\"a\":5}]}]},29],\"g\":[{\"e\":3}],\"l\":[{\"a\":[{\"t\":[{\"o\":1}]}]}],\"n\":[{\"a\":41,\"e\":[{\".\":27}],\"i\":[{\"z\":4},32]},29],\"o\":[{\"g\":5},41],\"p\":[{\"l\":1}],\"r\":[{\"e\":[{\"n\":9,\"r\":9},2],\"t\":[{\"i\":6}]},8],\"s\":[{\"i\":32,\"t\":77},15],\"t\":[{\"i\":24}],\"v\":78,\"m\":[{\"e\":[{\"t\":[{\"h\":[{\"y\":141}]}]}]}]}],\"j\":29,\"k\":79,\"l\":[{\"a\":56,\"e\":[{\".\":27,\"d\":27,\"s\":[{\".\":27,\"s\":18}],\"a\":[{\"d\":42}]}],\"o\":48,\"u\":56,\"y\":25,\"i\":[{\"e\":202}]}],\"m\":29,\"n\":80,\"o\":[{\".\":27,\"d\":[{\"e\":4}],\"e\":32,\"f\":57,\"g\":21,\"l\":[{\"a\":1,\"i\":17,\"o\":[{\"r\":4}]}],\"m\":[{\"i\":[{\"z\":5}]}],\"n\":[{\"a\":[{\"t\":3}],\"i\":17}],\"o\":[{\"d\":11}],\"p\":[{\"p\":0}],\"r\":21,\"s\":27,\"u\":[{\"t\":56}],\"v\":1,\"x\":27,\"w\":[{\"o\":[{\"r\":[{\"d\":203}]}]}]},41],\"p\":29,\"r\":[{\"a\":[{\"g\":[{\"o\":[{\"n\":6}]}],\"i\":18}],\"e\":[{\"a\":[{\"r\":6}],\"n\":[{\"a\":[{\"l\":204}]},32]},0],\"i\":[{\"b\":0,\"l\":17,\"f\":[{\"t\":[{\"a\":189}]}],\"p\":[{\"l\":[{\"e\":[{\"g\":205}]}]}]}],\"o\":[{\"p\":0,\"w\":18,\"m\":[{\"e\":[{\"d\":206}]}]}],\"u\":[{\"p\":[{\"l\":[{\"i\":32}]}]}],\"y\":18},41],\"s\":[{\"p\":1,\"w\":21,\"y\":21},81],\"t\":[{\"h\":24,\"a\":[{\"b\":23}]}],\"u\":[{\"a\":[{\"l\":[{\".\":9}]},82],\"c\":[{\"a\":29,\"e\":[{\"r\":5}],\"t\":[{\".\":18,\"s\":18}]},9],\"e\":[{\"l\":4}],\"g\":1,\"l\":[{\"e\":23}],\"m\":[{\"b\":[{\"e\":0}]}],\"n\":1,\"p\":[{\"e\":1},18],\"o\":[{\"p\":[{\"o\":[{\"l\":207}]}]}]},41],\"v\":29,\"w\":29,\"y\":[{\"n\":32,\"s\":[{\"e\":1,\"p\":5}]},24]}],\"e\":[{\"a\":[{\"b\":72,\"c\":[{\"t\":23}],\"d\":[{\"i\":[{\"e\":5}]},15],\"g\":[{\"e\":[{\"r\":4},1]}],\"l\":[{\"e\":[{\"r\":5}],\"o\":[{\"u\":11}]},1],\"m\":[{\"e\":[{\"r\":11}]}],\"n\":[{\"d\":19,\"i\":[{\"e\":[{\"s\":111}]}]}],\"r\":[{\"a\":11,\"c\":0,\"e\":[{\"s\":5}],\"i\":[{\"c\":0,\"l\":0}],\"k\":5,\"t\":[{\"e\":12},8]}],\"s\":[{\"p\":4,\"s\":23,\"t\":12}],\"t\":[{\"e\":[{\"n\":5}],\"h\":[{\"i\":12}],\"i\":[{\"f\":19}],\"u\":83},9],\"v\":[{\"e\":[{\"n\":11}],\"i\":5,\"o\":5},9]}],\"b\":[{\"e\":[{\"l\":[{\".\":21,\"s\":21}],\"n\":21}],\"i\":[{\"t\":21}],\"r\":23},42],\"c\":[{\"a\":[{\"d\":21,\"n\":[{\"c\":6}]}],\"c\":[{\"a\":6}],\"e\":[{\"s\":[{\"s\":[{\"a\":4}]}]},29],\"i\":[{\"b\":21,\"f\":[{\"i\":[{\"c\":[{\"a\":[{\"t\":4}]}],\"e\":4}],\"y\":4}],\"m\":3,\"t\":[{\"e\":19},0]},9],\"l\":[{\"a\":[{\"m\":21}],\"u\":[{\"s\":21}]}],\"o\":[{\"l\":24,\"m\":[{\"m\":21,\"p\":[{\"e\":21}]}],\"n\":[{\"c\":21}],\"r\":[{\"a\":3,\"o\":5},24]}],\"r\":[{\"e\":[{\"m\":21}]},29],\"t\":[{\"a\":[{\"n\":1}],\"e\":1}],\"u\":[{\"l\":[{\"a\":3},21]},29],\"h\":[{\"a\":[{\"s\":23}]}]}],\"d\":[{\"a\":37,\"d\":61,\"e\":[{\"r\":34,\"s\":0}],\"i\":[{\"a\":23,\"b\":3,\"c\":[{\"a\":3}],\"m\":3,\"t\":2,\"z\":5},18],\"o\":[{\"l\":21,\"n\":84},18],\"r\":[{\"i\":21}],\"u\":[{\"l\":[{\"o\":4,\"i\":[{\"n\":[{\"g\":2}]}]},21]}],\"g\":[{\"l\":15}]}],\"e\":[{\"c\":9,\"d\":[{\"i\":11}],\"f\":9,\"l\":[{\"i\":11,\"y\":1}],\"m\":9,\"n\":[{\"a\":1}],\"p\":85,\"s\":[{\"t\":17},86],\"t\":[{\"y\":1}],\"x\":19}],\"f\":[{\"e\":[{\"r\":[{\"e\":83}]}],\"f\":41,\"i\":[{\"c\":[{\"i\":32},21],\"l\":17,\"n\":[{\"e\":23,\"i\":[{\"t\":[{\"e\":20}]}]}],\"t\":27}],\"o\":[{\"r\":[{\"e\":[{\"s\":6}]}]}],\"u\":[{\"s\":[{\"e\":[{\".\":21}]}]}]},29],\"g\":[{\"a\":[{\"l\":18}],\"e\":[{\"r\":17}],\"i\":[{\"b\":4,\"c\":1,\"n\":[{\"g\":4}],\"t\":87}],\"n\":4,\"o\":[{\".\":21,\"s\":21}],\"u\":[{\"l\":2,\"r\":19}],\"y\":32}],\"h\":[{\"e\":[{\"r\":17}]},72],\"i\":[{\"c\":19,\"d\":4,\"g\":[{\"l\":4},8],\"m\":[{\"b\":23}],\"n\":[{\"f\":23,\"g\":29,\"s\":[{\"t\":19}]}],\"r\":[{\"d\":0}],\"t\":[{\"e\":11,\"h\":3,\"y\":19}]},9],\"j\":[{\"u\":[{\"d\":[{\"i\":4},21]}]},29],\"k\":[{\"i\":[{\"n\":0}],\"l\":[{\"a\":1}]}],\"l\":[{\"a\":[{\".\":21,\"c\":21,\"n\":[{\"d\":17}],\"t\":[{\"i\":[{\"v\":4}]}],\"w\":21,\"x\":[{\"a\":36}]},29],\"e\":[{\"a\":23,\"b\":[{\"r\":[{\"a\":4}]}],\"c\":32,\"d\":21,\"g\":[{\"a\":3}],\"n\":19,\"r\":34,\"s\":29}],\"f\":9,\"i\":[{\"b\":[{\"e\":23}],\"c\":[{\".\":33,\"a\":3}],\"e\":[{\"r\":23}],\"g\":[{\"i\":[{\"b\":4}]}],\"m\":19,\"n\":[{\"g\":83}],\"o\":23,\"s\":[{\"h\":4},24],\"v\":88,\"t\":[{\"i\":[{\"s\":208}]}]},9],\"l\":[{\"a\":[{\"b\":1},18],\"o\":17}],\"o\":[{\"c\":19,\"g\":4,\"p\":[{\".\":3}],\"a\":29}],\"s\":[{\"h\":9}],\"t\":[{\"a\":1}],\"u\":[{\"d\":19,\"g\":4}]}],\"m\":[{\"a\":[{\"c\":21,\"g\":21,\"n\":[{\"a\":4},19]}],\"b\":4,\"e\":[{\"l\":24,\"t\":21},29],\"i\":[{\"c\":[{\"a\":3}],\"e\":0,\"g\":[{\"r\":[{\"a\":4}]}],\"n\":[{\"e\":4,\"i\":35},89],\"s\":[{\"h\":4,\"s\":19},21],\"z\":3}],\"n\":[{\"i\":[{\"z\":32}]}],\"o\":[{\"g\":0,\"n\":[{\"i\":[{\"o\":7}]}]}],\"p\":[{\"i\":3}],\"u\":[{\"l\":[{\"a\":4},21],\"n\":11}],\"y\":23}],\"n\":[{\"a\":[{\"m\":[{\"o\":4}],\"n\":[{\"t\":21}]}],\"c\":[{\"h\":[{\"e\":[{\"r\":17}]}]}],\"d\":[{\"i\":[{\"c\":3,\"x\":2}]}],\"e\":[{\"a\":19,\"e\":19,\"m\":3,\"r\":[{\"o\":4}],\"s\":[{\"i\":4,\"t\":4}],\"t\":[{\"r\":3}],\"w\":23}],\"i\":[{\"c\":[{\"s\":4}],\"e\":19,\"l\":19,\"o\":23,\"s\":[{\"h\":3}],\"t\":3,\"u\":19,\"z\":32}],\"n\":18,\"o\":[{\"g\":0,\"s\":21,\"v\":3},18],\"s\":[{\"w\":1}],\"t\":[{\"a\":[{\"g\":[{\"e\":5}]}],\"h\":[{\"e\":[{\"s\":18}]}]}],\"u\":[{\"a\":3,\"f\":4}],\"y\":[{\".\":23}],\"z\":61}],\"o\":[{\"f\":19,\"g\":[{\"r\":[{\"a\":[{\"p\":3}]}]},9],\"i\":90,\"l\":23,\"p\":[{\"a\":[{\"r\":11}]}],\"r\":[{\"e\":3,\"o\":[{\"l\":4}]},29],\"s\":0,\"t\":[{\"o\":1},21],\"u\":[{\"t\":19}],\"w\":19}],\"p\":[{\"a\":[{\"i\":23,\"n\":[{\"c\":4}]},24],\"e\":[{\"l\":19,\"n\":[{\"t\":23}],\"t\":[{\"i\":[{\"t\":[{\"i\":[{\"o\":4}]}]}]}]}],\"h\":[{\"e\":17}],\"l\":[{\"i\":21}],\"o\":29,\"r\":[{\"e\":[{\"c\":[{\"a\":4},21],\"d\":21,\"h\":3}],\"o\":[{\"b\":21},23]}],\"s\":[{\"h\":1}],\"t\":[{\"i\":[{\"b\":13}]}],\"u\":[{\"t\":[{\"a\":4},21]}],\"i\":[{\"n\":[{\"e\":[{\"p\":[{\"h\":209}]}]}]}]}],\"q\":[{\"u\":[{\"i\":[{\"l\":12,\"s\":91}]}]},29],\"r\":[{\"a\":[{\"b\":0,\"n\":[{\"d\":18}],\"r\":3,\"t\":[{\"i\":[{\".\":18}]}]},2],\"b\":[{\"l\":1},25],\"c\":[{\"h\":[{\"e\":1},3]}],\"e\":[{\".\":25,\"a\":[{\"l\":23}],\"c\":[{\"o\":5}],\"i\":[{\"n\":11}],\"l\":[{\".\":4}],\"m\":[{\"o\":3}],\"n\":[{\"a\":4,\"c\":[{\"e\":4}],\"e\":18,\"t\":3}],\"q\":0,\"s\":[{\"s\":4,\"t\":3}],\"t\":17}],\"h\":2,\"i\":[{\"a\":[{\"n\":[{\".\":210}]},92],\"c\":[{\"k\":32}],\"e\":[{\"n\":23,\"r\":0}],\"n\":[{\"e\":3}],\"o\":29,\"t\":18,\"u\":1,\"v\":[{\"a\":21},0]},2],\"m\":93,\"n\":[{\"i\":[{\"s\":1,\"t\":18,\"z\":32}],\"o\":3}],\"o\":[{\"b\":4,\"c\":19,\"r\":0,\"u\":2},25],\"s\":[{\"e\":[{\"t\":3}]},2],\"t\":[{\"e\":[{\"r\":11}],\"l\":18,\"w\":3}],\"u\":[{\"t\":0},18],\"w\":[{\"a\":[{\"u\":32}]}]}],\"s\":[{\"a\":[{\"g\":[{\"e\":[{\".\":21,\"s\":21}]}]},72],\"c\":[{\"a\":[{\"n\":4},24],\"r\":23,\"u\":4},9],\"e\":[{\"c\":[{\"r\":4},24],\"n\":[{\"c\":4}],\"r\":[{\"t\":[{\".\":21,\"s\":21}],\"v\":[{\"a\":21}]}]},74],\"h\":[{\"a\":23,\"e\":[{\"n\":5}]},18],\"i\":[{\"c\":24,\"d\":[{\"e\":[{\"n\":4}]},24],\"g\":[{\"n\":[{\"a\":4}]}],\"m\":94,\"n\":95,\"s\":[{\"t\":[{\"e\":17}]}],\"u\":0},29],\"k\":[{\"i\":[{\"n\":19}]}],\"m\":[{\"i\":1}],\"o\":[{\"l\":[{\"u\":3},24],\"n\":[{\"a\":4},24]}],\"p\":[{\"e\":[{\"r\":3}],\"i\":[{\"r\":[{\"a\":4}]}],\"r\":[{\"e\":1}],\"a\":[{\"c\":[{\"i\":211}]}]},29],\"s\":[{\"i\":[{\"b\":96}]},25],\"t\":[{\"a\":[{\"n\":36}],\"i\":[{\"g\":3,\"m\":4}],\"o\":[{\"n\":23},44],\"r\":[{\"o\":19,\"u\":[{\"c\":10}]},25]}],\"u\":[{\"r\":[{\"r\":4},24]}],\"w\":1}],\"t\":[{\"a\":[{\"b\":0}],\"e\":[{\"n\":[{\"d\":17}],\"o\":23}],\"h\":[{\"o\":[{\"d\":54}],\"y\":[{\"l\":[{\"e\":[{\"n\":[{\"e\":162}]}]}]}]}],\"i\":[{\"c\":2,\"d\":[{\"e\":19}],\"n\":[{\"o\":0},17],\"r\":19,\"t\":[{\"i\":[{\"o\":19,\"v\":4}]}]}],\"n\":18,\"o\":[{\"n\":[{\"a\":4}]}],\"r\":[{\"a\":23,\"e\":23,\"i\":[{\"c\":3,\"f\":4}],\"o\":[{\"g\":3,\"s\":4}]}],\"u\":[{\"a\":3}],\"y\":[{\"m\":4}],\"z\":4}],\"u\":[{\"n\":19,\"p\":23,\"r\":[{\"o\":3}],\"s\":0,\"t\":[{\"e\":17,\"i\":[{\"l\":6}],\"r\":4}],\"c\":[{\"l\":[{\"i\":[{\"d\":212}]}]}]},18],\"v\":[{\"a\":[{\"p\":97,\"s\":[{\"t\":4},24]}],\"e\":[{\"a\":19,\"l\":[{\"l\":3,\"o\":12}],\"n\":[{\"g\":19,\"i\":17}],\"r\":[{\"b\":19},2]}],\"i\":[{\"d\":3,\"l\":0,\"n\":21,\"v\":0},29],\"o\":[{\"c\":19}],\"u\":19}],\"w\":[{\"a\":[{\"g\":21},29],\"e\":[{\"e\":19}],\"h\":23,\"i\":[{\"l\":6,\"n\":[{\"g\":3}],\"t\":23}]}],\"x\":[{\"p\":41}],\"y\":[{\"c\":32,\"e\":[{\".\":32}],\"s\":0}]}],\"f\":[{\"a\":[{\"b\":[{\"l\":3,\"r\":11}],\"c\":[{\"e\":1}],\"g\":18,\"i\":[{\"n\":17}],\"l\":[{\"l\":[{\"e\":6}]}],\"m\":[{\"a\":26,\"i\":[{\"s\":5}]}],\"r\":[{\"t\":[{\"h\":5}]},32],\"t\":[{\"a\":3,\"h\":[{\"e\":3}],\"o\":18}],\"u\":[{\"l\":[{\"t\":7}]}]},41],\"b\":56,\"d\":18,\"e\":[{\".\":18,\"a\":[{\"s\":17,\"t\":[{\"h\":54}]}],\"b\":[{\"r\":[{\"u\":[{\"a\":15}]}]},1],\"c\":[{\"a\":18,\"t\":32}],\"d\":25,\"l\":[{\"i\":3}],\"m\":[{\"o\":1}],\"n\":[{\"d\":[{\"e\":6},8]}],\"r\":[{\"r\":32,\"m\":[{\"i\":[{\"o\":213}]}]},15],\"v\":0}],\"f\":[{\"e\":[{\"s\":21}],\"i\":[{\"e\":21,\"n\":[{\".\":19}],\"s\":94}],\"l\":[{\"y\":21}],\"y\":24},43],\"h\":18,\"i\":[{\"a\":3,\"c\":[{\".\":48,\"a\":[{\"l\":47,\"n\":23,\"t\":[{\"e\":18}]}],\"e\":[{\"n\":23,\"r\":3}],\"i\":[{\"a\":32,\"e\":32},0],\"s\":18,\"u\":3,\"h\":27}],\"d\":[{\"e\":[{\"l\":4}]}],\"g\":[{\"h\":[{\"t\":7}]}],\"l\":[{\"i\":5,\"l\":[{\"i\":[{\"n\":6}]}],\"y\":18}],\"n\":[{\"a\":32,\"d\":97,\"e\":9,\"g\":98,\"n\":0},25],\"s\":[{\"t\":[{\"i\":0}]}],\"t\":[{\"t\":[{\"e\":[{\"d\":[{\".\":5}]}]}]}]},41],\"l\":[{\"e\":[{\"s\":[{\"s\":19}]}],\"i\":[{\"n\":17}],\"o\":[{\"r\":[{\"e\":11}],\"w\":[{\"e\":[{\"r\":[{\".\":84}]}]}]}],\"y\":100,\"a\":[{\"g\":[{\"e\":[{\"l\":214}]}]}],\"u\":[{\"o\":[{\"r\":27}]}]},99],\"m\":18,\"n\":18,\"o\":[{\"n\":[{\"d\":[{\"e\":0}],\"t\":0},32],\"r\":[{\"a\":[{\"t\":4,\"y\":5}],\"e\":[{\"t\":6}],\"i\":0,\"t\":[{\"a\":6}]},9],\"s\":5},41],\"p\":56,\"r\":[{\"a\":[{\"t\":0}],\"e\":[{\"a\":19,\"s\":[{\"c\":6}]}],\"i\":[{\"l\":17},8],\"o\":[{\"l\":6}]}],\"s\":48,\"t\":[{\"o\":21,\"y\":24},25],\"u\":[{\"e\":[{\"l\":4}],\"g\":18,\"m\":[{\"i\":[{\"n\":1}]}],\"n\":[{\"e\":4}],\"r\":[{\"i\":3}],\"s\":[{\"i\":17,\"s\":0}],\"t\":[{\"a\":18}]},27],\"y\":41}],\"g\":[{\"a\":[{\"f\":0,\"l\":[{\".\":32,\"i\":27,\"o\":3}],\"m\":[{\"e\":[{\"t\":4}],\"o\":19},25],\"n\":[{\"i\":[{\"s\":5,\"z\":[{\"a\":6},3]}],\"o\":18}],\"r\":[{\"n\":67}],\"s\":[{\"s\":17}],\"t\":[{\"h\":12,\"i\":[{\"v\":18}]}],\"z\":18},41],\"b\":23,\"d\":1,\"e\":[{\".\":25,\"d\":25,\"e\":[{\"z\":17}],\"l\":[{\"i\":[{\"n\":0,\"s\":4,\"z\":4}],\"y\":18}],\"n\":[{\"a\":[{\"t\":1}],\"i\":[{\"z\":4}],\"o\":18,\"y\":18,\"c\":[{\"y\":[{\".\":8}]}]},41],\"o\":[{\"m\":3,\"d\":215},41],\"r\":[{\"y\":21}],\"s\":[{\"i\":32}],\"t\":[{\"h\":6,\"o\":18,\"y\":1,\"i\":[{\"c\":[{\".\":8}]}]}],\"v\":1}],\"g\":[{\"e\":[{\"r\":23},24],\"l\":[{\"u\":6}],\"o\":0},101],\"h\":[{\"i\":[{\"n\":3}],\"o\":[{\"u\":[{\"t\":4}]}],\"t\":[{\"o\":1,\"w\":[{\"e\":15}]}]}],\"i\":[{\".\":32,\"a\":[{\"r\":5},102],\"c\":[{\"i\":[{\"a\":32}],\"o\":21},29],\"e\":[{\"n\":6,\"s\":[{\".\":32}]}],\"l\":0,\"m\":[{\"e\":[{\"n\":23}]}],\"n\":[{\".\":68,\"g\":[{\"e\":5}],\"s\":103}],\"o\":32,\"r\":[{\"l\":0},27],\"s\":[{\"l\":23}],\"u\":1,\"v\":32,\"z\":27}],\"l\":[{\"a\":[{\"d\":[{\"i\":6}],\"s\":32},0],\"e\":[{\"a\":[{\"d\":29}]},41],\"i\":[{\"b\":0,\"g\":23,\"s\":[{\"h\":43}]}],\"o\":[{\"r\":11,\"b\":[{\"i\":[{\"n\":106}]}]},27]},9],\"m\":[{\"y\":21},29],\"n\":[{\"a\":[{\".\":21,\"c\":69},1],\"e\":[{\"t\":[{\"t\":17,\"i\":[{\"s\":[{\"m\":137}]}]}]}],\"i\":[{\"n\":24,\"o\":21},29],\"o\":[{\"n\":21,\"m\":[{\"o\":5}],\"r\":[{\".\":216,\"e\":[{\"s\":[{\"p\":24}]}]}]},29]}],\"o\":[{\".\":27,\"b\":5,\"e\":32,\"g\":104,\"i\":[{\"s\":3}],\"n\":[{\"a\":105,\"d\":[{\"o\":7}],\"i\":[{\"z\":[{\"a\":217}]},3]},8],\"o\":32,\"r\":[{\"i\":[{\"z\":4}],\"o\":[{\"u\":5}]}],\"s\":[{\".\":32}],\"v\":15},41],\"p\":23,\"r\":[{\"a\":[{\"d\":[{\"a\":18}],\"i\":21,\"n\":84,\"p\":[{\"h\":[{\".\":32,\"e\":[{\"r\":[{\".\":7},19]}],\"i\":[{\"c\":32}],\"y\":18}]}],\"y\":18}],\"e\":[{\"n\":0,\"s\":[{\"s\":[{\".\":18}]}]}],\"i\":[{\"t\":18,\"e\":[{\"v\":213}]}],\"o\":21,\"u\":[{\"f\":17}]},41],\"s\":[{\"t\":[{\"e\":19}]},9],\"t\":[{\"h\":11}],\"u\":[{\"a\":[{\"r\":[{\"d\":27}]},1],\"e\":25,\"i\":[{\"t\":106}],\"n\":27,\"s\":27,\"t\":[{\"a\":[{\"n\":29}]},26]}],\"w\":23,\"y\":[{\"n\":107,\"r\":[{\"a\":4}]},41]}],\"h\":[{\"a\":[{\"b\":[{\"l\":73}],\"c\":[{\"h\":17}],\"e\":[{\"m\":0,\"t\":0}],\"g\":[{\"u\":19}],\"l\":[{\"a\":[{\"m\":12},3]}],\"m\":1,\"n\":[{\"c\":[{\"i\":0,\"y\":0}],\"d\":[{\".\":32}],\"g\":[{\"e\":[{\"r\":6}],\"o\":6},0],\"i\":[{\"z\":108}],\"k\":0,\"t\":[{\"e\":0}]}],\"p\":[{\"l\":11,\"t\":5,\"a\":[{\"r\":[{\"r\":218}]}]}],\"r\":[{\"a\":[{\"n\":3,\"s\":4}],\"d\":[{\"e\":12},8],\"l\":[{\"e\":0}],\"p\":[{\"e\":[{\"n\":6}]}],\"t\":[{\"e\":[{\"r\":5}]}]}],\"s\":[{\"s\":5}],\"u\":[{\"n\":17}],\"z\":[{\"a\":11},32],\"i\":[{\"r\":[{\"s\":137}]}],\"t\":[{\"c\":[{\"h\":213}]}]}],\"b\":29,\"e\":[{\"a\":[{\"d\":41,\"r\":27}],\"c\":[{\"a\":[{\"n\":1,\"t\":19}]}],\"d\":[{\"o\":13},21],\"l\":[{\"i\":93,\"l\":[{\"i\":[{\"s\":0}],\"y\":0}],\"o\":19}],\"m\":[{\"p\":0}],\"n\":[{\"a\":[{\"t\":5},17]},9],\"o\":[{\"r\":5}],\"p\":5,\"r\":[{\"a\":[{\"p\":12},21],\"b\":[{\"a\":0}],\"e\":[{\"a\":6}],\"n\":23,\"o\":[{\"u\":19}],\"y\":23}],\"s\":[{\"p\":64},29],\"t\":[{\"e\":[{\"d\":0}]},1],\"u\":0,\"x\":[{\"a\":168}]}],\"f\":29,\"h\":29,\"i\":[{\"a\":[{\"n\":4}],\"c\":[{\"o\":1}],\"g\":[{\"h\":6}],\"l\":109,\"m\":[{\"e\":[{\"r\":36}]}],\"n\":[{\"a\":21}],\"o\":[{\"n\":[{\"e\":17}]}],\"p\":[{\"e\":[{\"l\":[{\"a\":219}]}]},1],\"r\":[{\"l\":0,\"o\":3,\"p\":0,\"r\":0}],\"s\":[{\"e\":[{\"l\":11}],\"s\":0}],\"t\":[{\"h\":[{\"e\":[{\"r\":6}]}],\"e\":[{\"s\":[{\"i\":[{\"d\":12}]}]}]}],\"v\":9}],\"k\":18,\"l\":[{\"a\":[{\"n\":17}],\"o\":[{\"r\":[{\"i\":11}]},24]},80],\"m\":[{\"e\":[{\"t\":17}]},43],\"n\":[{\"a\":[{\"u\":[{\"z\":12}]}]},42],\"o\":[{\"d\":[{\"i\":[{\"z\":19}],\"s\":19}],\"g\":[{\"e\":17},1],\"l\":[{\"a\":[{\"r\":5}],\"e\":110}],\"m\":[{\"a\":1,\"e\":12}],\"n\":[{\"a\":0,\"y\":4}],\"o\":[{\"d\":27,\"n\":17}],\"r\":[{\"a\":[{\"t\":5}],\"i\":[{\"s\":4,\"c\":[{\".\":187}]}],\"t\":[{\"e\":12}],\"u\":4}],\"s\":[{\"e\":[{\"n\":4},0],\"p\":15}],\"u\":[{\"s\":[{\"e\":54},41]}],\"v\":[{\"e\":[{\"l\":5}]}]}],\"p\":56,\"r\":[{\"e\":[{\"e\":6}],\"o\":[{\"n\":[{\"i\":[{\"z\":5}]}],\"p\":[{\"o\":11}]}]},26],\"s\":[{\"h\":21},101],\"t\":[{\"a\":[{\"r\":21}],\"e\":[{\"n\":2,\"s\":4,\"o\":[{\"u\":216}]}],\"y\":21}],\"u\":[{\"g\":1,\"m\":[{\"i\":[{\"n\":1}]}],\"n\":[{\"k\":[{\"e\":5}],\"t\":0}],\"s\":[{\"t\":14}],\"t\":1}],\"w\":[{\"a\":[{\"r\":[{\"t\":21}]}]},29],\"y\":[{\"p\":[{\"e\":3,\"h\":3,\"o\":[{\"t\":[{\"h\":[{\"a\":137}]}]}]}],\"s\":9}]}],\"i\":[{\"a\":[{\"l\":24,\"m\":[{\"e\":[{\"t\":[{\"e\":5}]}]},0],\"n\":[{\"c\":18,\"i\":11,\"t\":46},24],\"p\":[{\"e\":4}],\"s\":[{\"s\":17}],\"t\":[{\"i\":[{\"v\":21}],\"r\":[{\"i\":[{\"c\":1}]}],\"u\":21}]},42],\"b\":[{\"e\":[{\"r\":[{\"a\":3,\"t\":4}]},0],\"i\":[{\"a\":4,\"n\":3,\"t\":[{\".\":4,\"e\":4}]}],\"l\":[{\"i\":3},29],\"o\":19,\"r\":[{\"i\":94},29],\"u\":[{\"n\":19}]}],\"c\":[{\"a\":[{\"m\":18,\"p\":32,\"r\":[{\".\":21,\"a\":21},18],\"s\":6,\"y\":21}],\"c\":[{\"u\":17}],\"e\":[{\"o\":18}],\"h\":18,\"i\":[{\"d\":19,\"n\":[{\"a\":4}],\"p\":[{\"a\":3},24]},25],\"l\":[{\"y\":21}],\"o\":[{\"c\":94}],\"r\":[{\"a\":32,\"y\":21},43],\"t\":[{\"e\":1,\"u\":[{\"a\":111},84]}],\"u\":[{\"l\":[{\"a\":3}],\"m\":1,\"o\":4,\"r\":23}]}],\"d\":[{\"a\":[{\"i\":21,\"n\":[{\"c\":4}]}],\"d\":4,\"e\":[{\"a\":[{\"l\":11}],\"s\":0}],\"i\":[{\"a\":[{\"n\":4,\"r\":0}],\"e\":19,\"o\":[{\"u\":5,\"s\":1},3],\"t\":2,\"u\":4},24],\"l\":[{\"e\":23}],\"o\":[{\"m\":21,\"w\":3}],\"r\":21,\"u\":[{\"o\":4},24]},25],\"e\":[{\"d\":[{\"e\":0}],\"g\":[{\"a\":113}],\"l\":[{\"d\":12}],\"n\":[{\"a\":67,\"e\":0,\"n\":19,\"t\":[{\"i\":23}]}],\"r\":[{\".\":29}],\"s\":[{\"c\":23,\"t\":29}],\"t\":23},112],\"f\":[{\".\":18,\"e\":[{\"r\":[{\"o\":4}]}],\"f\":[{\"e\":[{\"n\":5}],\"r\":1}],\"i\":[{\"c\":[{\".\":18}],\"e\":23}],\"l\":23,\"t\":18,\"a\":[{\"c\":[{\"e\":[{\"t\":137}]}]}]}],\"g\":[{\"a\":[{\"b\":5}],\"e\":[{\"r\":[{\"a\":3}]}],\"h\":[{\"t\":[{\"i\":12}]}],\"i\":[{\"b\":23,\"l\":3,\"n\":3,\"t\":3},18],\"l\":28,\"o\":[{\"r\":3,\"t\":4},24],\"r\":[{\"e\":19}],\"u\":[{\"i\":5,\"r\":2}],\"n\":[{\"i\":[{\"t\":[{\"e\":[{\"r\":213}]},0]}]}]},25],\"h\":23,\"i\":114,\"j\":[{\"k\":21},23],\"k\":18,\"l\":[{\"a\":[{\"b\":93,\"d\":[{\"e\":21}],\"m\":94,\"r\":[{\"a\":5}]},29],\"e\":[{\"g\":23,\"r\":2,\"v\":17}],\"f\":4,\"i\":[{\"a\":3,\"b\":9,\"o\":3,\"s\":[{\"t\":1}],\"t\":25,\"z\":9},2],\"l\":[{\"a\":[{\"b\":5}]}],\"n\":18,\"o\":[{\"q\":3}],\"t\":[{\"y\":1}],\"u\":[{\"r\":4}],\"v\":3}],\"m\":[{\"a\":[{\"g\":[{\"e\":3},21],\"r\":[{\"y\":5}]}],\"e\":[{\"n\":[{\"t\":[{\"a\":[{\"r\":10}]}]}],\"t\":18}],\"i\":[{\"d\":[{\"a\":4}],\"l\":[{\"e\":5}],\"n\":[{\"i\":19}],\"t\":18},2],\"n\":[{\"i\":1}],\"o\":[{\"n\":23}],\"u\":[{\"l\":[{\"a\":3}]},24],\"p\":[{\"e\":[{\"d\":[{\"a\":201}]}]}]}],\"n\":[{\".\":25,\"a\":[{\"u\":83,\"v\":18}],\"c\":[{\"e\":[{\"l\":36,\"r\":3}]}],\"d\":[{\"l\":[{\"i\":[{\"n\":[{\"g\":4}]}]}]},18],\"e\":[{\"e\":23,\"r\":[{\"a\":[{\"r\":17}]}],\"s\":[{\"s\":19}]},25],\"g\":[{\"a\":18,\"e\":[{\"n\":4},18],\"i\":18,\"l\":[{\"i\":[{\"n\":[{\"g\":4}]}]}],\"o\":18,\"u\":18}],\"i\":[{\".\":19,\"a\":21,\"o\":3,\"s\":2,\"t\":[{\"e\":[{\".\":19,\"l\":[{\"y\":[{\".\":19}]}]}],\"i\":[{\"o\":32}],\"y\":3}]},25],\"k\":18,\"l\":18,\"n\":25,\"o\":[{\"c\":90,\"s\":0,\"t\":21},42],\"s\":[{\"e\":3,\"u\":[{\"r\":[{\"a\":7}]}]},25],\"t\":[{\".\":25,\"h\":112}],\"u\":[{\"s\":19},2],\"y\":18,\"f\":[{\"r\":[{\"a\":[{\"s\":220}]}]}]}],\"o\":[{\".\":18,\"g\":[{\"e\":17,\"r\":9}],\"l\":29,\"m\":1,\"n\":[{\"a\":[{\"t\":11}],\"e\":[{\"r\":[{\"y\":0}]}],\"i\":11}],\"p\":[{\"h\":4}],\"r\":[{\"i\":11}],\"s\":21,\"t\":[{\"h\":4,\"i\":19,\"o\":1}],\"u\":[{\"r\":21}]},25],\"p\":[{\"e\":0,\"h\":[{\"r\":[{\"a\":[{\"s\":115}]}]}],\"i\":[{\"c\":1},3],\"r\":[{\"e\":96}],\"u\":[{\"l\":3}]},25],\"q\":[{\"u\":[{\"a\":23,\"e\":[{\"f\":4}],\"i\":[{\"d\":3,\"t\":116}]}]}],\"r\":[{\"a\":[{\"b\":0,\"c\":21},29],\"d\":[{\"e\":5}],\"e\":[{\"d\":[{\"e\":0}],\"f\":21,\"l\":117,\"s\":21}],\"g\":[{\"i\":4}],\"i\":[{\"d\":[{\"e\":5}],\"s\":1,\"t\":[{\"u\":11}],\"z\":118},2],\"m\":[{\"i\":[{\"n\":1}]}],\"o\":[{\"g\":0,\"n\":[{\".\":32}]}],\"u\":[{\"l\":4}],\"r\":[{\"e\":[{\"v\":[{\"o\":[{\"c\":221}]}]}]}]},18],\"s\":[{\".\":25,\"a\":[{\"g\":4,\"r\":3,\"s\":6}],\"c\":[{\"h\":3},119],\"e\":[{\"r\":3},18],\"f\":27,\"h\":[{\"a\":[{\"n\":4}],\"o\":[{\"n\":3,\"p\":5}]}],\"i\":[{\"b\":3,\"d\":0,\"s\":19,\"t\":[{\"i\":[{\"v\":4}]}]}],\"k\":26,\"l\":[{\"a\":[{\"n\":36}]}],\"m\":[{\"s\":18}],\"o\":[{\"m\":[{\"e\":[{\"r\":5}]}]},24],\"p\":[{\"i\":9,\"y\":1},2],\"s\":[{\"a\":[{\"l\":1}],\"e\":[{\"n\":36,\"s\":1}]},62],\"t\":[{\"a\":[{\".\":1}],\"e\":2,\"i\":2,\"l\":[{\"y\":0}],\"r\":[{\"a\":[{\"l\":18}]}]}],\"u\":[{\"s\":4},24]}],\"t\":[{\"a\":[{\".\":18,\"b\":[{\"i\":0}],\"g\":21,\"m\":120,\"n\":23,\"t\":23}],\"e\":[{\"r\":[{\"a\":3,\"i\":19}],\"s\":[{\"i\":[{\"m\":[{\"a\":29}]}]},1]},25],\"h\":[{\"i\":[{\"l\":148}]},25],\"i\":[{\"a\":18,\"c\":[{\"a\":3,\"k\":31},22],\"g\":3,\"l\":[{\"l\":4}],\"m\":24,\"o\":25,\"s\":[{\"m\":21},18],\"n\":[{\"e\":[{\"r\":[{\"a\":[{\"r\":158}]}]}]}]},29],\"o\":[{\"m\":121,\"n\":18}],\"r\":[{\"a\":[{\"m\":21}],\"y\":4}],\"t\":18,\"u\":[{\"a\":[{\"t\":3}],\"d\":19,\"l\":3}],\"z\":[{\".\":18}]}],\"u\":29,\"v\":[{\"e\":[{\"l\":[{\"l\":3}],\"n\":[{\".\":3}],\"r\":[{\".\":83,\"s\":[{\".\":21}]}]}],\"i\":[{\"l\":[{\".\":4}],\"o\":4,\"t\":2}],\"o\":[{\"r\":[{\"e\":19,\"o\":35}],\"t\":83}]},25],\"w\":56,\"x\":[{\"o\":1}],\"y\":18,\"z\":[{\"a\":[{\"r\":18}],\"i\":0,\"o\":[{\"n\":[{\"t\":32}]}]}]}],\"j\":[{\"a\":[{\"c\":[{\"q\":0}],\"p\":[{\"a\":[{\"n\":[{\"e\":[{\"s\":220}]}]}]},1],\"n\":[{\"u\":[{\"a\":12}]}]},32],\"e\":[{\"r\":[{\"s\":5,\"e\":[{\"m\":222}]}],\"s\":[{\"t\":[{\"i\":[{\"e\":18}],\"y\":18}]}],\"w\":11},41],\"o\":[{\"p\":1}],\"u\":[{\"d\":[{\"g\":32}]}]}],\"k\":[{\"a\":[{\".\":27,\"b\":23,\"g\":19,\"i\":[{\"s\":17}],\"l\":0}],\"b\":29,\"e\":[{\"d\":24,\"e\":41,\"g\":1,\"l\":[{\"i\":[{\"n\":[{\"g\":223}]},4]}],\"n\":[{\"d\":73}],\"r\":29,\"s\":[{\"t\":[{\".\":23}]},0],\"t\":[{\"y\":1}]}],\"f\":23,\"h\":1,\"i\":[{\".\":32,\"c\":122,\"l\":[{\"l\":21,\"o\":6}],\"m\":21,\"n\":[{\".\":21,\"d\":[{\"e\":0}],\"e\":[{\"s\":[{\"s\":19}],\"t\":[{\"i\":[{\"c\":224}]}]}],\"g\":0}],\"p\":1,\"s\":[{\"h\":19},0]},29],\"k\":1,\"l\":[{\"e\":[{\"y\":18}],\"y\":18},29],\"m\":29,\"n\":[{\"e\":[{\"s\":19}],\"o\":69}],\"o\":[{\"r\":4,\"s\":[{\"h\":17}],\"u\":23,\"v\":[{\"i\":[{\"a\":[{\"n\":41}]}]}]}],\"r\":[{\"o\":[{\"n\":5}]}],\"s\":[{\"c\":21,\"l\":1,\"y\":21,\"h\":[{\"a\":23}]},101],\"t\":19,\"w\":29}],\"l\":[{\"a\":[{\"b\":[{\"i\":[{\"c\":11}],\"o\":21}],\"c\":[{\"i\":[{\"e\":225},17]}],\"d\":[{\"e\":21,\"y\":3}],\"g\":[{\"n\":0}],\"m\":[{\"o\":11}],\"n\":[{\"d\":[{\"l\":0},27],\"e\":[{\"t\":5}],\"t\":[{\"e\":0}]}],\"r\":[{\"g\":0,\"i\":11,\"c\":[{\"e\":[{\"n\":176}]}]}],\"s\":[{\"e\":0}],\"t\":[{\"a\":[{\"n\":4}],\"e\":[{\"l\":[{\"i\":18}]}],\"i\":[{\"v\":18}]}],\"v\":[{\"a\":95},18],\"i\":[{\"n\":[{\"e\":[{\"s\":[{\"s\":226}]}]}]}]}],\"b\":[{\"i\":[{\"n\":17}]},42],\"c\":[{\"e\":0,\"i\":23,\"h\":[{\"a\":[{\"i\":23}],\"i\":[{\"l\":[{\"d\":227}]}]}]},101],\"d\":[{\"e\":[{\"r\":[{\"e\":1,\"i\":1}]},24],\"i\":[{\"s\":4},0],\"r\":[{\"i\":21},23]},25],\"e\":[{\"a\":[{\"d\":[{\"e\":[{\"r\":[{\".\":183}]}]}],\"s\":[{\"a\":228}]},9],\"b\":[{\"i\":1}],\"f\":[{\"t\":6}],\"g\":[{\".\":32,\"g\":32,\"e\":[{\"n\":[{\"d\":[{\"r\":[{\"e\":230}]}]}]}]}],\"m\":[{\"a\":[{\"t\":[{\"i\":[{\"c\":5}]},1]}]}],\"n\":[{\".\":18,\"c\":27,\"e\":[{\".\":32}],\"t\":41,\"o\":[{\"i\":[{\"d\":78}]}]}],\"p\":[{\"h\":3,\"r\":1}],\"r\":[{\"a\":[{\"b\":6}],\"e\":0,\"g\":27,\"i\":68,\"o\":21}],\"s\":[{\"c\":[{\"o\":4}],\"q\":32,\"s\":[{\".\":32},27]},8],\"v\":[{\"a\":23,\"e\":[{\"r\":[{\".\":0,\"a\":0,\"s\":0}]}]}],\"y\":[{\"e\":18},27],\"c\":[{\"t\":[{\"a\":[{\"b\":229}]}]}]}],\"f\":[{\"r\":19},25],\"g\":[{\"a\":[{\"r\":12},19],\"e\":[{\"s\":21}],\"o\":11},80],\"h\":48,\"i\":[{\"a\":[{\"g\":1,\"m\":9,\"r\":[{\"i\":[{\"z\":6}]}],\"s\":1,\"t\":[{\"o\":1}]}],\"b\":[{\"i\":4}],\"c\":[{\"i\":[{\"o\":32}],\"o\":[{\"r\":1}],\"s\":18,\"t\":[{\".\":18}],\"u\":21,\"y\":23}],\"d\":[{\"a\":23,\"e\":[{\"r\":5}],\"i\":27}],\"f\":[{\"e\":[{\"r\":11}],\"f\":21,\"l\":1}],\"g\":[{\"a\":[{\"t\":[{\"e\":32}]}],\"h\":27,\"r\":[{\"a\":1}]}],\"k\":27,\"l\":123,\"m\":[{\"b\":[{\"l\":0}],\"i\":11,\"o\":1,\"p\":90}],\"n\":[{\"a\":21,\"e\":[{\"a\":11},124],\"i\":11,\"k\":[{\"e\":[{\"r\":6}]}]}],\"o\":[{\"g\":4}],\"q\":125,\"s\":[{\"p\":0}],\"t\":[{\".\":24,\"i\":[{\"c\":[{\"a\":32,\"s\":108}]}],\"h\":[{\"o\":[{\"g\":204}]}]},29],\"v\":[{\"e\":[{\"r\":11}]}],\"z\":29}],\"j\":18,\"k\":[{\"a\":[{\"l\":23,\"t\":0},11]}],\"l\":[{\"a\":[{\"w\":21}],\"e\":[{\"a\":19,\"c\":23,\"g\":23,\"l\":23,\"n\":73,\"t\":73},24],\"i\":[{\"n\":[{\"a\":19},126],\"s\":[{\"h\":231}]},9],\"o\":[{\"q\":[{\"u\":[{\"i\":10}]}],\"u\":[{\"t\":4}],\"w\":19},1],\"f\":[{\"l\":2}]},29],\"m\":[{\"e\":[{\"t\":19}],\"i\":[{\"n\":[{\"g\":3}]}],\"o\":[{\"d\":21,\"n\":[{\"e\":[{\"l\":[{\"l\":232}]}]},17]}]},25],\"n\":81,\"o\":[{\".\":27,\"b\":[{\"a\":[{\"l\":5}],\"o\":[{\"t\":[{\"o\":233}]}]}],\"c\":[{\"i\":1}],\"f\":18,\"g\":[{\"i\":[{\"c\":27}],\"o\":19,\"u\":27,\"e\":[{\"s\":[{\".\":9}]}]}],\"m\":[{\"e\":[{\"r\":11}]}],\"n\":[{\"g\":32,\"i\":[{\"z\":127},0]}],\"o\":[{\"d\":6}],\"p\":[{\"e\":[{\".\":32}],\"i\":11,\"m\":23}],\"r\":[{\"a\":[{\"t\":[{\"o\":1}]},17],\"i\":[{\"e\":4}],\"o\":[{\"u\":5}]}],\"s\":[{\".\":32,\"e\":[{\"t\":5}],\"o\":[{\"p\":[{\"h\":[{\"i\":[{\"z\":32}],\"y\":32}]}]}],\"t\":0}],\"t\":[{\"a\":1}],\"u\":[{\"n\":[{\"d\":6}],\"t\":25}],\"v\":18,\"a\":[{\"d\":[{\"e\":[{\"d\":[{\".\":17}],\"r\":[{\".\":183}]}]}]}]}],\"p\":[{\"a\":[{\"b\":5}],\"h\":[{\"a\":23,\"i\":19}],\"i\":[{\"n\":[{\"g\":4}],\"t\":23}],\"l\":21,\"r\":19},25],\"r\":43,\"s\":[{\"c\":21,\"e\":24,\"i\":[{\"e\":21}]},81],\"t\":[{\"a\":[{\"g\":4,\"n\":[{\"e\":7}]}],\"e\":[{\"n\":17,\"r\":[{\"a\":36}],\"a\":23},29],\"h\":[{\"i\":[{\"l\":[{\"y\":148}]},11]}],\"i\":[{\"e\":[{\"s\":[{\".\":19}]}],\"s\":17}],\"r\":29,\"u\":[{\"r\":[{\"a\":12}]},8]},18],\"u\":[{\"a\":4,\"b\":[{\"r\":3}],\"c\":[{\"h\":17,\"i\":3}],\"e\":[{\"n\":3,\"p\":15}],\"f\":0,\"i\":[{\"d\":4}],\"m\":[{\"a\":1,\"i\":32,\"n\":[{\".\":19,\"i\":[{\"a\":32}]}],\"b\":[{\"i\":[{\"a\":[{\".\":235}]}]}]}],\"o\":[{\"r\":11},3],\"p\":18,\"s\":[{\"s\":17,\"t\":[{\"e\":11}]}],\"t\":41,\"n\":[{\"k\":[{\"e\":[{\"r\":234}]}]}]}],\"v\":[{\"e\":[{\"n\":19,\"t\":128}]}],\"w\":42,\"y\":[{\"a\":18,\"b\":18,\"m\":[{\"e\":4}],\"n\":[{\"o\":3}],\"s\":[{\"e\":19,\"t\":[{\"y\":[{\"r\":4}]}]},58],\"g\":[{\"a\":[{\"m\":[{\"i\":236}]}]}]},41]}],\"m\":[{\"a\":[{\"b\":25,\"c\":[{\"a\":9,\"h\":[{\"i\":[{\"n\":[{\"e\":4}]}]}],\"l\":1}],\"g\":[{\"i\":[{\"n\":5}],\"n\":32}],\"h\":25,\"i\":[{\"d\":6}],\"l\":[{\"d\":18,\"i\":[{\"g\":3,\"n\":4}],\"l\":[{\"i\":0}],\"t\":[{\"y\":0}],\"a\":[{\"p\":222}]}],\"n\":[{\"i\":[{\"a\":32,\"s\":5,\"z\":11}],\".\":24,\"u\":[{\"s\":[{\"c\":237}]}]}],\"p\":[{\"h\":[{\"r\":[{\"o\":244}]}]},18],\"r\":[{\"i\":[{\"n\":[{\"e\":[{\".\":4}]}],\"z\":4}],\"l\":[{\"y\":0}],\"v\":11,\"g\":[{\"i\":[{\"n\":238}]}]}],\"s\":[{\"c\":[{\"e\":4}],\"e\":0,\"t\":15}],\"t\":[{\"e\":32,\"h\":12,\"i\":[{\"s\":3,\"z\":[{\"a\":18}]}]}]},41],\"b\":[{\"a\":[{\"t\":129}],\"i\":[{\"l\":19,\"n\":[{\"g\":83}],\"v\":0}]},43],\"c\":56,\"e\":[{\".\":18,\"d\":[{\".\":18,\"i\":[{\"a\":32,\"e\":3,\"c\":[{\"i\":[{\"n\":152}]},84],\"o\":[{\"c\":239}]}],\"y\":108},25],\"g\":[{\"r\":[{\"a\":[{\"n\":240}]}]},9],\"l\":[{\"o\":[{\"n\":5}],\"t\":0}],\"m\":[{\"o\":130},9],\"n\":[{\"a\":[{\"c\":5},0],\"d\":[{\"e\":0}],\"e\":18,\"i\":0,\"s\":[{\"u\":7},17],\"t\":[{\"e\":0},27],\".\":24},41],\"o\":[{\"n\":4}],\"r\":[{\"s\":[{\"a\":19}]}],\"s\":[{\"t\":[{\"i\":27}]},25],\"t\":[{\"a\":[{\"l\":11},1],\"e\":2,\"h\":[{\"i\":4}],\"r\":[{\"i\":[{\"c\":32,\"e\":4}],\"y\":3},21]}],\"v\":1}],\"f\":43,\"h\":25,\"i\":[{\".\":32,\"a\":3,\"d\":[{\"a\":[{\"b\":241},0],\"g\":0}],\"g\":0,\"l\":[{\"i\":[{\"a\":27,\"e\":108,\"t\":[{\"a\":27}]}],\"l\":[{\"a\":[{\"g\":208}],\"i\":[{\"l\":[{\"i\":59}]}]},21]}],\"n\":[{\"a\":0,\"d\":27,\"e\":[{\"e\":19}],\"g\":[{\"l\":[{\"i\":5,\"y\":19},21]}],\"t\":0,\"u\":[{\"t\":[{\"e\":[{\"r\":242,\"s\":[{\"t\":242}]}]}]},21],\"i\":[{\"s\":[{\".\":174}]}]}],\"o\":[{\"t\":17}],\"s\":[{\"e\":[{\"r\":[{\".\":0}]}],\"l\":5,\"t\":[{\"i\":0,\"r\":[{\"y\":19}]}]},24],\"t\":[{\"h\":18}],\"z\":24}],\"k\":18,\"l\":43,\"m\":[{\"a\":[{\"r\":[{\"y\":5}],\"b\":243}]},29],\"n\":[{\"a\":1,\"i\":[{\"n\":21}],\"o\":1},43],\"o\":[{\"c\":[{\"r\":[{\"a\":[{\"t\":[{\"i\":[{\"z\":32}]},245]}]},18]}],\"d\":131,\"g\":[{\"o\":1}],\"i\":[{\"s\":[{\"e\":5},84]}],\"k\":18,\"l\":[{\"e\":[{\"s\":[{\"t\":4}],\"c\":246}]}],\"m\":[{\"e\":3}],\"n\":[{\"e\":[{\"t\":5,\"y\":[{\"l\":247}]}],\"g\":[{\"e\":5}],\"i\":[{\"a\":12,\"s\":[{\"m\":0,\"t\":0}],\"z\":3}],\"o\":[{\"l\":36,\"c\":[{\"h\":12}],\"e\":[{\"n\":171}],\"s\":249}],\"y\":[{\".\":3}]}],\"r\":[{\"a\":[{\".\":18}],\"o\":[{\"n\":[{\"i\":[{\"s\":248}]}]}]},9],\"s\":[{\"e\":[{\"y\":4}],\"p\":3},8],\"t\":[{\"h\":[{\"e\":[{\"t\":250}]},12]}],\"u\":[{\"f\":19,\"s\":[{\"i\":[{\"n\":98}]},27]}],\"v\":9,\"e\":[{\"l\":[{\"a\":[{\"s\":167}]}]}]},41],\"p\":[{\"a\":[{\"r\":[{\"a\":[{\"b\":5},7],\"i\":6}]}],\"e\":[{\"t\":23}],\"h\":[{\"a\":[{\"s\":36}]}],\"i\":[{\"a\":0,\"e\":[{\"s\":4}],\"n\":34,\"r\":19,\"s\":4},24],\"o\":[{\"r\":[{\"i\":11}],\"s\":[{\"i\":[{\"t\":[{\"e\":6}]}]}],\"u\":[{\"s\":21}],\"v\":6}],\"t\":[{\"r\":1}],\"y\":24},43],\"r\":47,\"s\":[{\"h\":[{\"a\":[{\"c\":[{\"k\":251}]}]},21],\"i\":19},101],\"t\":18,\"u\":[{\"l\":[{\"a\":[{\"r\":49}],\"t\":[{\"i\":[{\"u\":252},54]},32]}],\"m\":27,\"n\":8,\"p\":18,\"u\":1,\"d\":[{\"r\":[{\"o\":9}]}]},41],\"w\":18}],\"n\":[{\"a\":[{\"b\":[{\"u\":21},81],\"c\":[{\".\":18,\"a\":1,\"t\":19}],\"g\":[{\"e\":[{\"r\":[{\".\":5}]}]}],\"k\":0,\"l\":[{\"i\":[{\"a\":4},1],\"t\":18}],\"m\":[{\"i\":[{\"t\":4}]}],\"n\":[{\"c\":[{\"i\":36}],\"i\":[{\"t\":0}],\"k\":17},24],\"r\":[{\"c\":[{\"h\":[{\"s\":[{\".\":73}]}]},11],\"e\":18,\"i\":11,\"l\":0,\"m\":19}],\"s\":[{\"c\":0,\"t\":[{\"i\":5}]},21],\"t\":[{\"a\":[{\"l\":3}],\"o\":[{\"m\":[{\"i\":[{\"z\":6}]}]}]},24],\"u\":[{\"s\":[{\"e\":11}],\"t\":27},24],\"v\":[{\"e\":0}]},41],\"b\":80,\"c\":[{\"a\":[{\"r\":6}],\"e\":[{\"s\":[{\".\":21}]}],\"h\":[{\"a\":23,\"e\":[{\"o\":19,\"s\":[{\"t\":253}]}],\"i\":[{\"l\":19,\"s\":23}]}],\"i\":[{\"n\":2,\"t\":1}],\"o\":[{\"u\":[{\"r\":[{\"a\":7}]}]}],\"r\":29,\"u\":29}],\"d\":[{\"a\":[{\"i\":21,\"n\":19}],\"e\":[{\"s\":[{\"t\":[{\".\":4}]}]},29],\"i\":[{\"b\":0,\"f\":79,\"t\":29,\"z\":23,\"e\":[{\"c\":[{\"k\":29}]}]}],\"u\":[{\"c\":19,\"r\":0}],\"w\":[{\"e\":9}],\"t\":[{\"h\":[{\"r\":3}]}]}],\"e\":[{\".\":25,\"a\":[{\"r\":23}],\"b\":[{\"u\":11,\"a\":[{\"c\":[{\"k\":3}]}]},9],\"c\":[{\"k\":32},9],\"d\":25,\"g\":[{\"a\":[{\"t\":[{\"i\":[{\"v\":5}]},1]}],\"e\":32}],\"l\":[{\"a\":1,\"i\":[{\"z\":5}]}],\"m\":[{\"i\":4,\"o\":1}],\"n\":[{\"e\":18},41],\"o\":27,\"p\":[{\"o\":1}],\"q\":9,\"r\":[{\"a\":[{\"b\":6,\"r\":21}],\"e\":24,\"i\":132,\"r\":0},29],\"s\":[{\".\":25,\"p\":18,\"t\":25,\"w\":18,\"k\":[{\"i\":119}]},41],\"t\":[{\"i\":[{\"c\":27}]}],\"v\":[{\"e\":19},1],\"w\":1}],\"f\":[{\"i\":[{\"n\":[{\"i\":[{\"t\":[{\"e\":[{\"s\":226}]}]}]}]}]},23],\"g\":[{\"a\":[{\"b\":21}],\"e\":[{\"l\":23,\"n\":[{\"e\":[{\"s\":5},133]}],\"r\":[{\"e\":19,\"i\":23}]}],\"h\":[{\"a\":4,\"o\":2}],\"i\":[{\"b\":23,\"n\":2,\"t\":19}],\"l\":[{\"a\":21}],\"o\":[{\"v\":17}],\"s\":[{\"h\":4,\"p\":[{\"r\":2}]}],\"u\":[{\"m\":21},29],\"y\":24}],\"h\":[{\"a\":[{\"b\":12},0],\"e\":0},80],\"i\":[{\"a\":[{\"n\":[{\".\":114},3],\"p\":1},68],\"b\":[{\"a\":3,\"l\":1}],\"d\":[{\"i\":4},1],\"e\":[{\"r\":1}],\"f\":[{\"i\":[{\"c\":[{\"a\":[{\"t\":4}]}]},9]}],\"g\":[{\"r\":19}],\"k\":0,\"m\":[{\"i\":[{\"z\":3}]},29],\"n\":[{\"e\":[{\".\":32}],\"g\":0},29],\"o\":1,\"s\":[{\".\":32,\"t\":[{\"a\":0}]}],\"t\":[{\"h\":21,\"i\":[{\"o\":27}],\"o\":[{\"r\":23}],\"r\":3},24]}],\"j\":29,\"k\":[{\"e\":[{\"r\":[{\"o\":19}],\"t\":23}],\"i\":[{\"n\":3}],\"l\":29,\"r\":[{\"u\":[{\"p\":3}]}]},44],\"l\":[{\"e\":[{\"s\":[{\"s\":19}]}]},43],\"m\":[{\"e\":[{\"t\":17},0]},19],\"n\":[{\"e\":0,\"i\":[{\"a\":[{\"l\":11}],\"v\":0}]},101],\"o\":[{\"b\":[{\"l\":[{\"e\":3},0]}],\"c\":[{\"l\":19,\"e\":[{\"r\":[{\"o\":[{\"s\":254}]}]}]}],\"d\":66,\"e\":27,\"g\":[{\"e\":17},18],\"i\":[{\"s\":[{\"i\":6}]}],\"l\":[{\"i\":134,\"o\":[{\"g\":[{\"i\":[{\"s\":32}]}]}]}],\"m\":[{\"i\":[{\"c\":27,\"z\":108,\"s\":[{\"t\":82}]}],\"o\":1,\"y\":3,\"a\":[{\"l\":214}],\"e\":[{\"n\":[{\"o\":194}]}]}],\"n\":[{\"a\":[{\"g\":0}],\"i\":[{\"z\":19,\"s\":[{\"o\":255}]},5],\"e\":[{\"q\":15}]},1],\"p\":[{\"o\":[{\"l\":[{\"i\":135,\"y\":[{\".\":256}]}]}]},18],\"r\":[{\"a\":[{\"b\":5,\"r\":[{\"y\":1}]}]}],\"s\":[{\"c\":18,\"e\":0,\"t\":5}],\"t\":[{\"a\":4}],\"u\":[{\"n\":27},41],\"v\":[{\"e\":[{\"l\":136,\"m\":[{\"b\":2}]}]}],\"w\":[{\"l\":12}]}],\"p\":[{\"i\":0,\"r\":[{\"e\":[{\"c\":17}]}]},72],\"q\":29,\"r\":[{\"u\":0},29],\"s\":[{\"a\":[{\"b\":4,\"t\":[{\"i\":36}]}],\"c\":[{\"e\":[{\"i\":[{\"v\":4}]}]},1],\"e\":[{\"s\":83},24],\"i\":[{\"d\":137,\"g\":17}],\"l\":24,\"m\":[{\"o\":[{\"o\":1}]},3],\"o\":[{\"c\":21}],\"p\":[{\"e\":1,\"i\":19}],\"t\":[{\"a\":[{\"b\":[{\"l\":6}]}]}]},81],\"t\":[{\"a\":[{\"b\":0}],\"e\":[{\"r\":[{\"s\":12}]}],\"i\":[{\"b\":19,\"e\":[{\"r\":0}],\"f\":8,\"n\":[{\"e\":23,\"g\":83}],\"p\":0},9],\"r\":[{\"o\":[{\"l\":[{\"l\":[{\"i\":7}]}]}],\"e\":[{\"p\":137}]}],\"s\":1,\"u\":[{\"m\":[{\"e\":11}]}]},29],\"u\":[{\"a\":2,\"d\":1,\"e\":[{\"n\":4}],\"f\":[{\"f\":[{\"e\":0}]}],\"i\":[{\"n\":23,\"t\":50}],\"m\":[{\"e\":2,\"i\":19},21],\"n\":138,\"o\":23,\"t\":[{\"r\":3}]}],\"v\":74,\"w\":72,\"y\":[{\"m\":0,\"p\":0}],\"z\":[{\"a\":23},18]}],\"o\":[{\"a\":[{\"d\":11,\"l\":[{\"e\":[{\"s\":108}]}],\"r\":[{\"d\":12}],\"s\":[{\"e\":0,\"t\":[{\"e\":6}]}],\"t\":[{\"i\":5}]},18],\"b\":[{\"a\":[{\"b\":35,\"r\":19}],\"e\":[{\"l\":0}],\"i\":[{\"n\":[{\"g\":4},24]},29],\"r\":23,\"u\":[{\"l\":3}],\"l\":[{\"i\":[{\"g\":189}]}]}],\"c\":[{\"e\":29,\"h\":[{\"e\":[{\"t\":23}],\"a\":[{\"s\":23}]},0],\"i\":[{\"f\":12,\"l\":21}],\"l\":[{\"a\":[{\"m\":21}]}],\"o\":[{\"d\":21}],\"r\":[{\"a\":[{\"c\":3,\"t\":[{\"i\":[{\"z\":4}]}]}],\"e\":12,\"i\":[{\"t\":32}]}],\"t\":[{\"o\":[{\"r\":[{\"a\":7}]}]}],\"u\":[{\"l\":[{\"a\":3}],\"r\":[{\"e\":19}]}]}],\"d\":[{\"d\":[{\"e\":[{\"d\":4}]}],\"i\":[{\"c\":3,\"o\":11,\"t\":[{\"i\":[{\"c\":137}]}]}],\"o\":[{\"r\":12},139],\"u\":[{\"c\":[{\"t\":[{\".\":4,\"s\":4}]}]}],\"e\":[{\"l\":[{\"l\":[{\"i\":12}]}]}]}],\"e\":[{\"l\":21,\"n\":[{\"g\":19}],\"r\":[{\"s\":[{\"t\":257}]},23],\"t\":[{\"a\":1}],\"v\":23}],\"f\":[{\"i\":[{\"t\":[{\"e\":4,\"t\":17}]},24]}],\"g\":[{\"a\":[{\"r\":121,\"t\":[{\"i\":[{\"v\":4}],\"o\":21}]}],\"e\":[{\"n\":[{\"e\":19}],\"o\":19,\"r\":21},29],\"i\":[{\"e\":23,\"s\":140,\"t\":3}],\"l\":[{\"y\":79},21],\"n\":[{\"i\":[{\"z\":27}]}],\"r\":[{\"o\":21}],\"u\":[{\"i\":5}],\"y\":[{\"n\":25},41]}],\"h\":[{\"a\":[{\"b\":6}]},74],\"i\":[{\"c\":[{\"e\":[{\"s\":11}]}],\"d\":[{\"e\":[{\"r\":3}]}],\"f\":[{\"f\":17}],\"g\":0,\"l\":[{\"e\":[{\"t\":4}]}],\"n\":[{\"g\":23,\"t\":[{\"e\":[{\"r\":6}]}]}],\"s\":[{\"m\":19,\"o\":[{\"n\":4}],\"t\":[{\"e\":[{\"n\":6}]}]}],\"t\":[{\"e\":[{\"r\":3}]}]},9],\"j\":19,\"k\":[{\"e\":[{\"n\":23,\"s\":[{\"t\":15}]}],\"i\":[{\"e\":4}]},25],\"l\":[{\"a\":[{\"n\":21,\"s\":[{\"s\":36}]},29],\"d\":[{\"e\":15},9],\"e\":[{\"r\":3,\"s\":[{\"c\":23,\"t\":[{\"e\":[{\"r\":88}]}]}],\"t\":23}],\"f\":[{\"i\":1}],\"i\":[{\"a\":23,\"c\":[{\"e\":23}],\"d\":[{\".\":4}],\"f\":73,\"l\":19,\"n\":[{\"g\":3}],\"o\":19,\"s\":[{\".\":19,\"h\":3}],\"t\":[{\"e\":19,\"i\":[{\"o\":19}]}],\"v\":19,\"g\":[{\"o\":[{\"p\":[{\"o\":258}]}]}]},9],\"l\":[{\"i\":[{\"e\":17}]}],\"o\":[{\"g\":[{\"i\":[{\"z\":4}]}],\"r\":0,\"n\":[{\"o\":[{\"m\":259}]}]}],\"p\":[{\"l\":4}],\"t\":9,\"u\":[{\"b\":3,\"m\":[{\"e\":3}],\"n\":3,\"s\":19}],\"v\":9,\"y\":24}],\"m\":[{\"a\":[{\"h\":4,\"l\":5,\"t\":[{\"i\":[{\"z\":4}]}]}],\"b\":[{\"e\":9,\"l\":1}],\"e\":[{\"n\":[{\"a\":3}],\"r\":[{\"s\":[{\"e\":4}]}],\"t\":[{\"r\":[{\"y\":4}]},21],\"c\":[{\"h\":[{\"a\":260}]}]},24],\"i\":[{\"a\":23,\"c\":[{\".\":3,\"a\":3}],\"d\":19,\"n\":[{\"i\":19},2]}],\"m\":[{\"e\":[{\"n\":[{\"d\":32}]}]}],\"o\":[{\"g\":[{\"e\":0}],\"n\":21}],\"p\":[{\"i\":3,\"r\":[{\"o\":7}]}]}],\"n\":[{\"a\":[{\"c\":1,\"n\":23},2],\"c\":[{\"i\":[{\"l\":27}]},2],\"d\":[{\"o\":4},25],\"e\":[{\"n\":23,\"s\":[{\"t\":4}]}],\"g\":[{\"u\":1}],\"i\":[{\"c\":2,\"o\":23,\"s\":2,\"u\":19}],\"k\":[{\"e\":[{\"y\":3}]}],\"o\":[{\"d\":[{\"i\":1}],\"m\":[{\"y\":3,\"i\":[{\"c\":137}]}],\"r\":[{\"m\":[{\"a\":23}]}],\"t\":[{\"o\":[{\"n\":261}]}],\"u\":23}],\"s\":[{\"p\":[{\"i\":[{\"r\":[{\"a\":10}]},36]}],\"u\":17},3],\"t\":[{\"e\":[{\"n\":36}],\"i\":[{\"f\":7},93]}],\"u\":[{\"m\":4}],\"v\":[{\"a\":6}]},24],\"o\":[{\"d\":[{\"e\":5,\"i\":5}],\"k\":1,\"p\":[{\"i\":11}],\"r\":[{\"d\":23}],\"s\":[{\"t\":6}]},9],\"p\":[{\"a\":24,\"e\":[{\"d\":5,\"r\":[{\"a\":[{\"g\":18},27]},2]}],\"h\":[{\"a\":[{\"n\":19}],\"e\":[{\"r\":19}]},25],\"i\":[{\"n\":[{\"g\":3}],\"t\":23,\"s\":[{\"m\":[{\".\":2}]}]}],\"o\":[{\"n\":19,\"s\":[{\"i\":21}]}],\"r\":29,\"u\":2,\"y\":5}],\"q\":29,\"r\":[{\"a\":[{\".\":19,\"g\":83,\"l\":[{\"i\":[{\"z\":4}]}],\"n\":[{\"g\":[{\"e\":4}]}]},29],\"e\":[{\"a\":[{\"l\":19},5],\"i\":3,\"s\":[{\"h\":5,\"t\":[{\".\":4}]}],\"w\":17}],\"g\":[{\"u\":1}],\"i\":[{\"a\":56,\"c\":[{\"a\":3}],\"l\":19,\"n\":2,\"o\":29,\"t\":[{\"y\":3}],\"u\":23}],\"m\":[{\"i\":9}],\"n\":[{\"e\":8}],\"o\":[{\"f\":19,\"u\":[{\"g\":3}]}],\"p\":[{\"e\":4}],\"r\":[{\"h\":27}],\"s\":[{\"e\":[{\"n\":5},1],\"t\":17}],\"t\":[{\"h\":[{\"i\":3,\"y\":3,\"o\":[{\"n\":[{\"i\":[{\"t\":262}]}]}],\"r\":[{\"i\":137}]}],\"y\":1,\"i\":[{\"v\":[{\"e\":[{\"l\":[{\"y\":4}]}]}]}]}],\"u\":[{\"m\":19}],\"y\":29}],\"s\":[{\"a\":[{\"l\":3}],\"c\":[{\"e\":1,\"o\":[{\"p\":[{\"i\":18},23]}],\"r\":19},9],\"i\":[{\"e\":95,\"t\":[{\"i\":[{\"v\":4}],\"o\":3,\"y\":3}],\"u\":0}],\"l\":1,\"o\":24,\"p\":[{\"a\":1,\"o\":1,\"h\":[{\"e\":[{\"r\":83}]}]}],\"t\":[{\"a\":[{\"t\":[{\"i\":19}]},9],\"i\":[{\"l\":4,\"t\":4}]}]}],\"t\":[{\"a\":[{\"n\":21}],\"e\":[{\"l\":[{\"e\":[{\"g\":36}]}],\"r\":[{\".\":3,\"s\":4}],\"s\":[{\"t\":[{\"e\":[{\"r\":263}],\"o\":[{\"r\":264}]}]},21]}],\"h\":[{\"e\":[{\"s\":[{\"i\":5}],\"o\":[{\"s\":265}]}],\"i\":14},18],\"i\":[{\"c\":[{\".\":3,\"a\":4,\"e\":23}],\"f\":23,\"s\":23}],\"o\":[{\"s\":5}]}],\"u\":[{\"b\":[{\"l\":3,\"a\":[{\"d\":[{\"o\":116}]}]}],\"c\":[{\"h\":[{\"i\":6}]}],\"e\":[{\"t\":4}],\"l\":1,\"n\":[{\"c\":[{\"e\":[{\"r\":6}]}],\"d\":8}],\"v\":4},9],\"v\":[{\"e\":[{\"n\":1,\"r\":[{\"n\":[{\"e\":17}],\"s\":12,\"t\":1}]}],\"i\":[{\"s\":23,\"t\":[{\"i\":36}],\"a\":[{\"n\":[{\".\":266}]}]}],\"o\":[{\"l\":60}]}],\"w\":[{\"d\":[{\"e\":[{\"r\":3}]}],\"e\":[{\"l\":3,\"s\":[{\"t\":4}]}],\"i\":2,\"n\":[{\"i\":5}],\"o\":21}],\"y\":[{\"a\":2}],\"x\":[{\"i\":[{\"d\":[{\"i\":[{\"c\":267}]}]}]}]}],\"p\":[{\"a\":[{\"c\":[{\"a\":1,\"e\":1,\"t\":0}],\"d\":21,\"g\":[{\"a\":[{\"n\":32,\"t\":23}]}],\"i\":[{\"n\":17},21],\"l\":[{\"m\":[{\"a\":[{\"t\":268}]}]},21],\"n\":[{\"a\":0,\"e\":[{\"l\":11}],\"t\":[{\"y\":0}],\"y\":3}],\"p\":[{\"u\":1},2],\"r\":[{\"a\":[{\"b\":[{\"l\":6}],\"g\":[{\"e\":5,\"r\":[{\"a\":269}]}],\"l\":[{\"e\":228}],\"m\":[{\"e\":12},36]}],\"d\":[{\"i\":5}],\"e\":[{\"l\":5},27],\"i\":[{\"s\":0},28]}],\"t\":[{\"e\":[{\"r\":4},9],\"h\":[{\"i\":[{\"c\":32}],\"y\":4}],\"r\":[{\"i\":[{\"c\":1}]}]}],\"v\":0,\"y\":27},41],\"b\":43,\"d\":1,\"e\":[{\".\":18,\"a\":[{\"r\":[{\"l\":17}]},138],\"c\":9,\"d\":[{\"e\":27,\"i\":[{\"a\":36,\"c\":0},27]},37],\"e\":[{\"d\":0,\"v\":208},21],\"k\":0,\"l\":[{\"a\":1,\"i\":[{\"e\":17}]}],\"n\":[{\"a\":[{\"n\":1}],\"c\":21,\"t\":[{\"h\":0}]}],\"o\":[{\"n\":4}],\"r\":[{\"a\":[{\".\":21,\"b\":[{\"l\":6}],\"g\":21}],\"i\":[{\"s\":[{\"t\":6}]},21],\"m\":[{\"a\":[{\"l\":0}],\"e\":7}],\"n\":21,\"o\":11,\"t\":[{\"i\":11}],\"u\":4,\"v\":15}],\"t\":[{\"e\":[{\"n\":4}],\"i\":[{\"z\":4}]},9]}],\"f\":18,\"g\":18,\"h\":[{\".\":18,\"a\":[{\"r\":[{\"i\":6}]}],\"e\":[{\"n\":[{\"o\":11}],\"r\":1,\"s\":[{\".\":1}]}],\"i\":[{\"c\":2,\"e\":32,\"n\":[{\"g\":4}],\"s\":[{\"t\":[{\"i\":32}]}],\"z\":27,\"l\":[{\"a\":[{\"n\":[{\"t\":168}],\"t\":[{\"e\":[{\"l\":270}]}]}]}]}],\"l\":9,\"o\":[{\"b\":27,\"n\":[{\"e\":27,\"i\":32}],\"r\":0}],\"s\":18,\"t\":3,\"u\":32,\"y\":41}],\"i\":[{\"a\":[{\"n\":17},3],\"c\":[{\"i\":[{\"e\":1}],\"y\":1,\"a\":[{\"d\":271}]}],\"d\":[{\"a\":19,\"e\":3,\"i\":32},21],\"e\":[{\"c\":27,\"n\":3}],\"g\":[{\"r\":[{\"a\":[{\"p\":1}]}]}],\"l\":[{\"o\":3}],\"n\":[{\".\":21,\"d\":17,\"o\":21},9],\"o\":[{\"n\":17},141],\"t\":[{\"h\":[{\"a\":4},23],\"u\":9}]}],\"k\":142,\"l\":[{\"a\":[{\"n\":27,\"s\":[{\"t\":6}]}],\"i\":[{\"a\":11,\"e\":[{\"r\":5}],\"g\":18,\"n\":[{\"a\":[{\"r\":5}]},0],\"c\":[{\"a\":[{\"b\":208}]}]}],\"o\":[{\"i\":17}],\"u\":[{\"m\":[{\"b\":17},0]}]},143],\"m\":43,\"n\":48,\"o\":[{\"c\":1,\"d\":[{\".\":32}],\"e\":[{\"m\":4,\"t\":144}],\"g\":145,\"i\":[{\"n\":[{\"t\":32,\"c\":[{\"a\":12}]},84]}],\"l\":[{\"y\":[{\"t\":6,\"e\":137,\"p\":[{\"h\":[{\"o\":[{\"n\":[{\"o\":272}]}]}]}]}],\"e\":[{\".\":41}]}],\"n\":[{\"i\":1}],\"p\":1,\"r\":[{\"y\":1},124],\"s\":[{\"s\":15},41],\"t\":[{\"a\":1},21],\"u\":[{\"n\":32}]}],\"p\":[{\"a\":[{\"r\":[{\"a\":5}]}],\"e\":[{\"d\":21,\"l\":19,\"n\":23,\"r\":23,\"t\":23},24],\"o\":[{\"s\":[{\"i\":[{\"t\":[{\"e\":5}]}]}]}]},43],\"r\":[{\"a\":[{\"y\":[{\"e\":17}]}],\"e\":[{\"c\":[{\"i\":32,\"o\":5}],\"e\":[{\"m\":11}],\"f\":[{\"a\":[{\"c\":6}]}],\"l\":[{\"a\":0}],\"r\":11,\"s\":[{\"e\":23,\"s\":27,\"p\":[{\"l\":[{\"i\":84}]}]}],\"t\":[{\"e\":[{\"n\":5}]}],\"v\":11,\"m\":[{\"a\":[{\"c\":273}]}],\"n\":[{\"e\":[{\"u\":15}]}]}],\"i\":[{\"e\":53,\"n\":[{\"t\":146}],\"s\":[{\"o\":12},0]}],\"o\":[{\"c\":[{\"a\":23,\"e\":[{\"s\":[{\"s\":8}]}],\"i\":[{\"t\":[{\"y\":[{\".\":274}]}]}]}],\"f\":[{\"i\":[{\"t\":6}]}],\"l\":11,\"s\":[{\"e\":12}],\"t\":15,\"g\":[{\"e\":208}]}]},9],\"s\":[{\"e\":[{\"u\":[{\"d\":[{\"o\":[{\"d\":276,\"f\":276}]},275]}]},24],\"h\":1,\"i\":[{\"b\":21}]},81],\"t\":[{\"a\":[{\"b\":134}],\"e\":24,\"h\":24,\"i\":[{\"m\":11}],\"u\":[{\"r\":0}],\"w\":21,\"o\":[{\"m\":[{\"a\":[{\"t\":277}]}]}],\"r\":[{\"o\":[{\"l\":278}]}]},42],\"u\":[{\"b\":[{\"e\":[{\"s\":[{\"c\":181}]}]},11],\"e\":0,\"f\":0,\"l\":[{\"c\":11}],\"m\":1,\"n\":9,\"r\":[{\"r\":0}],\"s\":32,\"t\":[{\"e\":[{\"r\":11},32],\"r\":3,\"t\":[{\"e\":[{\"d\":0}],\"i\":[{\"n\":0}]}]},9]}],\"w\":23}],\"q\":[{\"u\":[{\"a\":[{\"v\":5,\"i\":[{\"n\":[{\"t\":[{\"e\":279}]}]}],\"s\":[{\"i\":[{\"r\":281,\"s\":281},280]}]}],\"e\":[{\".\":25,\"r\":27,\"t\":27}],\"i\":[{\"n\":[{\"t\":[{\"e\":[{\"s\":[{\"s\":282}]}]}]}],\"v\":[{\"a\":[{\"r\":14}]}]}]},9]}],\"r\":[{\"a\":[{\"b\":[{\"i\":3,\"o\":[{\"l\":[{\"i\":[{\"c\":29}],\"o\":[{\"i\":236}]}]}]},25],\"c\":[{\"h\":[{\"e\":17,\"u\":3}],\"l\":19}],\"f\":[{\"f\":[{\"i\":5}],\"t\":0}],\"i\":24,\"l\":[{\"o\":1}],\"m\":[{\"e\":[{\"t\":[{\"r\":[{\"i\":[{\"z\":283}]}]},11],\"n\":24}],\"i\":24,\"o\":[{\"u\":3}]}],\"n\":[{\"e\":[{\"o\":6}],\"g\":[{\"e\":0}],\"i\":21,\"o\":4,\"h\":[{\"a\":[{\"s\":167}]}]}],\"p\":[{\"e\":[{\"r\":11}],\"h\":[{\"y\":27}]}],\"r\":[{\"c\":5,\"e\":[{\"f\":5},17],\"i\":[{\"l\":18}]}],\"s\":24,\"t\":[{\"i\":[{\"o\":[{\"n\":115}]}]}],\"u\":[{\"t\":0}],\"v\":[{\"a\":[{\"i\":4}],\"e\":[{\"l\":11}]}],\"z\":[{\"i\":[{\"e\":4}]}],\"d\":[{\"i\":[{\"g\":127,\"o\":[{\"g\":249}]}]}],\"o\":[{\"r\":2}]}],\"b\":[{\"a\":[{\"b\":21,\"g\":21}],\"i\":[{\"f\":0,\"n\":[{\"e\":19,\"g\":[{\".\":4,\"e\":284}]},24]},8],\"o\":1},29],\"c\":[{\"e\":[{\"n\":17},24],\"h\":[{\"a\":23,\"e\":[{\"r\":0}]}],\"i\":[{\"b\":90,\"t\":1}],\"u\":[{\"m\":12}]},29],\"d\":[{\"a\":[{\"l\":21}],\"i\":[{\"a\":0,\"e\":[{\"r\":0}],\"n\":[{\"g\":3},17]},9]}],\"e\":[{\".\":25,\"a\":[{\"l\":2,\"n\":3,\"r\":[{\"r\":4}],\"v\":32,\"w\":1}],\"b\":[{\"r\":[{\"a\":[{\"t\":19}]}]}],\"c\":[{\"o\":[{\"l\":[{\"l\":5}],\"m\":[{\"p\":[{\"e\":5}]}]}],\"r\":[{\"e\":1}],\"i\":[{\"p\":[{\"r\":285}]}],\"t\":[{\"a\":[{\"n\":[{\"g\":286}]}]}]}],\"d\":[{\"e\":2,\"i\":[{\"s\":3,\"t\":5}]},37],\"f\":[{\"a\":[{\"c\":1}],\"e\":[{\"r\":[{\".\":4}]},9],\"i\":3,\"y\":1}],\"g\":[{\"i\":[{\"s\":11}]}],\"i\":[{\"t\":4}],\"l\":[{\"i\":2,\"u\":4}],\"n\":[{\"t\":[{\"a\":90,\"e\":0}]}],\"o\":2,\"p\":[{\"i\":[{\"n\":4}],\"o\":[{\"s\":[{\"i\":1}]}],\"u\":2}],\"r\":[{\"i\":21,\"o\":17,\"u\":4},147],\"s\":[{\".\":21,\"p\":[{\"i\":1}],\"s\":[{\"i\":[{\"b\":6}]}],\"t\":[{\"a\":[{\"l\":4}],\"r\":3},8]}],\"t\":[{\"e\":[{\"r\":1}],\"i\":[{\"z\":96}],\"r\":[{\"i\":[{\"b\":[{\"u\":85}]},3]}]}],\"u\":[{\"t\":[{\"i\":4}]},8],\"v\":[{\"a\":[{\"l\":1}],\"e\":[{\"l\":11,\"r\":[{\".\":30,\"s\":4,\"t\":4}]}],\"i\":[{\"l\":4}],\"o\":[{\"l\":[{\"u\":5}]}]},8],\"w\":[{\"h\":1}]}],\"f\":[{\"u\":0,\"y\":21},29],\"g\":[{\"e\":[{\"r\":3,\"t\":23}],\"i\":[{\"c\":23,\"n\":[{\"g\":3},0],\"s\":19,\"t\":19}],\"l\":29,\"o\":[{\"n\":0}],\"u\":23},9],\"h\":[{\".\":18,\"a\":[{\"l\":18}]},1],\"i\":[{\"a\":[{\"b\":0,\"g\":1,\"l\":[{\".\":23}]},3],\"b\":[{\"a\":11},21],\"c\":[{\"a\":[{\"s\":5}],\"e\":21,\"i\":[{\"d\":32,\"e\":1},18],\"o\":21}],\"d\":[{\"e\":[{\"r\":5}]}],\"e\":[{\"n\":[{\"c\":3,\"t\":3}],\"r\":2,\"t\":4}],\"g\":[{\"a\":[{\"n\":5}],\"i\":32}],\"l\":[{\"i\":[{\"z\":11}]}],\"m\":[{\"a\":[{\"n\":32}],\"i\":5,\"o\":27,\"p\":[{\"e\":0}]}],\"n\":[{\"a\":[{\".\":32},24],\"d\":0,\"e\":0,\"g\":0}],\"o\":2,\"p\":[{\"h\":[{\"e\":6},32],\"l\":[{\"i\":[{\"c\":5}]},9]}],\"q\":21,\"s\":[{\".\":21,\"c\":0,\"h\":23,\"p\":0},24],\"t\":[{\"a\":[{\"b\":116}],\"e\":[{\"d\":[{\".\":19}],\"r\":[{\".\":5,\"s\":5}]}],\"i\":[{\"c\":11}],\"u\":[{\"r\":5},9]}],\"v\":[{\"e\":[{\"l\":5,\"t\":11}],\"i\":11,\"o\":[{\"l\":287}]}]}],\"j\":23,\"k\":[{\"e\":[{\"t\":23}],\"l\":[{\"e\":1,\"i\":[{\"n\":1}]}],\".\":288,\"h\":[{\"o\":2}],\"r\":[{\"a\":[{\"u\":29}]}],\"s\":[{\".\":288}]}],\"l\":[{\"e\":[{\"d\":24,\"q\":[{\"u\":30}]},0],\"i\":[{\"g\":21,\"s\":[{\"h\":4},21]}],\"o\":73},29],\"m\":[{\"a\":[{\"c\":5}],\"e\":[{\"n\":23,\"r\":[{\"s\":4}]},24],\"i\":[{\"n\":[{\"g\":[{\".\":21},3]}],\"o\":21,\"t\":23}],\"y\":21},29],\"n\":[{\"a\":[{\"r\":21}],\"e\":[{\"l\":23,\"r\":21,\"t\":19,\"y\":23}],\"i\":[{\"c\":19,\"s\":92,\"t\":23,\"v\":23}],\"o\":[{\"u\":21},0],\"u\":23}],\"o\":[{\"b\":[{\"l\":11,\"o\":[{\"t\":289}]}],\"c\":[{\"r\":3},24],\"e\":[{\"l\":[{\"a\":[{\"s\":167}]}],\"p\":[{\"i\":[{\"d\":[{\"e\":290}]}]}]},1],\"f\":[{\"e\":2,\"i\":[{\"l\":4}]}],\"k\":[{\"e\":[{\"r\":4}]},8],\"l\":[{\"e\":[{\".\":32}]}],\"m\":[{\"e\":[{\"t\":[{\"e\":5}],\"s\":[{\"h\":3}]}],\"i\":0,\"p\":0}],\"n\":[{\"a\":[{\"l\":0}],\"e\":0,\"i\":[{\"s\":134}],\"t\":[{\"a\":0}]}],\"o\":[{\"m\":41,\"t\":32}],\"p\":[{\"e\":[{\"l\":3}],\"i\":[{\"c\":11}]}],\"r\":[{\"i\":11,\"o\":4}],\"s\":[{\"p\":[{\"e\":[{\"r\":5}]}],\"s\":0}],\"t\":[{\"h\":[{\"e\":1}],\"y\":1,\"r\":[{\"o\":[{\"n\":2}]}]}],\"v\":[{\"a\":1,\"e\":[{\"l\":5}]}],\"x\":5}],\"p\":[{\"e\":[{\"a\":21,\"n\":[{\"t\":19}],\"r\":[{\".\":4}],\"t\":23}],\"h\":95,\"i\":[{\"n\":[{\"g\":3}]}],\"o\":23,\"a\":[{\"u\":[{\"l\":[{\"i\":291}]}]}]},29],\"r\":[{\"e\":[{\"c\":0,\"f\":0,\"o\":21,\"s\":[{\"t\":0}]}],\"i\":[{\"o\":0,\"v\":0}],\"o\":[{\"n\":17,\"s\":17}],\"y\":[{\"s\":17}]},72],\"s\":[{\"a\":[{\"t\":[{\"i\":5}]},29],\"c\":1,\"e\":[{\"c\":[{\"r\":0},23],\"r\":[{\".\":4,\"a\":[{\"d\":[{\"i\":238}]}]}],\"s\":3,\"v\":148},24],\"h\":[{\"a\":19},29],\"i\":[{\"b\":90},29],\"o\":[{\"n\":12}],\"p\":29,\"w\":19},44],\"t\":[{\"a\":[{\"c\":[{\"h\":36}],\"g\":21}],\"e\":[{\"b\":23,\"n\":[{\"d\":17}],\"o\":5}],\"i\":[{\"b\":4,\"d\":0,\"e\":[{\"r\":21}],\"g\":23,\"l\":[{\"i\":12,\"l\":17,\"y\":21}],\"s\":[{\"t\":21}],\"v\":21},29],\"r\":[{\"i\":23,\"o\":[{\"p\":[{\"h\":115}]}],\"e\":[{\"u\":29}]}],\"s\":[{\"h\":1}],\"h\":[{\"o\":[{\"u\":29}]}]}],\"u\":[{\"a\":3,\"e\":[{\"l\":93,\"n\":3}],\"g\":[{\"l\":1}],\"i\":[{\"n\":3}],\"m\":[{\"p\":[{\"l\":11}]}],\"n\":[{\"k\":6,\"t\":[{\"y\":0}]},9],\"s\":[{\"c\":19}],\"t\":[{\"i\":[{\"n\":6}]}]}],\"v\":[{\"e\":[{\"l\":[{\"i\":17}],\"n\":23,\"r\":[{\".\":4}],\"s\":[{\"t\":19}],\"y\":23,\"i\":[{\"l\":29}]},1],\"i\":[{\"c\":23,\"v\":0}],\"o\":23}],\"w\":29,\"y\":[{\"c\":1,\"n\":[{\"g\":[{\"e\":32}]}],\"t\":3}],\"z\":[{\"s\":[{\"c\":2}]}]}],\"s\":[{\"a\":[{\"b\":42,\"c\":[{\"k\":32,\"r\":[{\"i\":11}],\"t\":23}],\"i\":32,\"l\":[{\"a\":[{\"r\":36}],\"m\":0,\"o\":4,\"t\":0,\"e\":[{\"s\":[{\"c\":54,\"w\":7}]}]}],\"n\":[{\"c\":27,\"d\":[{\"e\":0}]}],\"p\":[{\"a\":[{\"r\":[{\"i\":[{\"l\":292}]}]}]},29],\"t\":[{\"a\":4,\"i\":[{\"o\":76}],\"u\":11}],\"u\":0,\"v\":[{\"o\":[{\"r\":4}]}],\"w\":32},9],\"b\":56,\"c\":[{\"a\":[{\"n\":[{\"t\":149}],\"p\":[{\"e\":[{\"r\":267}]},0],\"v\":6,\"t\":[{\"o\":[{\"l\":208}]}]}],\"e\":[{\"d\":21,\"i\":18,\"s\":21}],\"h\":[{\"o\":21,\"i\":[{\"t\":[{\"z\":21}]}],\"r\":[{\"o\":[{\"d\":[{\"i\":[{\"n\":[{\"g\":293}]}]}]}]}]},8],\"i\":[{\"e\":68,\"n\":[{\"d\":150}],\"u\":[{\"t\":[{\"t\":294}]}]}],\"l\":[{\"e\":6,\"i\":21}],\"o\":[{\"f\":17,\"p\":[{\"y\":18}],\"u\":[{\"r\":[{\"a\":7}]}]}],\"u\":29,\"r\":[{\"a\":[{\"p\":[{\"e\":[{\"r\":[{\".\":36}]}]}]}]}],\"y\":[{\"t\":[{\"h\":247}]}]}],\"d\":56,\"e\":[{\".\":18,\"a\":[{\"s\":17,\"w\":5},1],\"c\":[{\"o\":151,\"t\":27}],\"d\":[{\"e\":95,\"l\":19},125],\"g\":[{\"r\":11},9],\"i\":32,\"l\":[{\"e\":2,\"f\":32,\"v\":32}],\"m\":[{\"e\":[{\"s\":[{\"t\":295}]},18],\"o\":[{\"l\":1}],\"a\":[{\"p\":[{\"h\":287}]}],\"i\":[{\"t\":[{\"i\":[{\"c\":296}]}]}]}],\"n\":[{\"a\":[{\"t\":5}],\"c\":18,\"d\":0,\"e\":[{\"d\":19}],\"g\":5,\"i\":[{\"n\":19}],\"t\":[{\"d\":18,\"l\":18}]}],\"p\":[{\"a\":152,\"t\":[{\"e\":[{\"m\":[{\"b\":11}]}]}]}],\"r\":[{\".\":43,\"l\":21,\"o\":0,\"v\":[{\"o\":18}]}],\"s\":[{\"h\":4,\"t\":5},72],\"u\":[{\"m\":113}],\"v\":[{\"e\":[{\"n\":11}]},32],\"w\":[{\"i\":0}],\"x\":32}],\"f\":47,\"g\":48,\"h\":[{\".\":25,\"e\":[{\"r\":2,\"v\":32}],\"i\":[{\"n\":2,\"o\":3,\"p\":27,\"v\":6}],\"o\":[{\"l\":[{\"d\":4}],\"n\":12,\"r\":[{\"t\":7},17],\"e\":[{\"s\":[{\"t\":137}]}]},0],\"w\":18},24],\"i\":[{\"b\":2,\"c\":[{\"c\":19}],\"d\":[{\"e\":[{\".\":27,\"s\":[{\"t\":6,\"w\":6},32],\"d\":[{\".\":8}]}],\"i\":[{\"z\":4},32]}],\"g\":[{\"n\":[{\"a\":18}]}],\"l\":[{\"e\":0,\"y\":18}],\"n\":[{\"a\":24,\"e\":[{\".\":32}],\"g\":23},42],\"o\":[{\"n\":[{\"a\":6},32]},41],\"r\":[{\"a\":5,\"e\":[{\"s\":[{\"i\":[{\"d\":4}]}]}]},9],\"s\":41,\"t\":[{\"i\":[{\"o\":27}]}],\"u\":32,\"v\":41,\"z\":32}],\"k\":[{\"e\":[{\"t\":23},18],\"i\":[{\"n\":[{\"e\":4,\"g\":4}]}],\"y\":[{\"s\":[{\"c\":15}]}]},9],\"l\":[{\"a\":[{\"t\":23}],\"e\":24,\"i\":[{\"t\":[{\"h\":7}]}],\"o\":[{\"v\":[{\"a\":[{\"k\":[{\"i\":[{\"a\":297}]}]}]}]}]},74],\"m\":[{\"a\":[{\"l\":[{\"l\":54}],\"n\":12},23],\"e\":[{\"l\":17,\"n\":19}],\"i\":[{\"t\":[{\"h\":32}]}],\"o\":[{\"l\":[{\"d\":49}]}]},42],\"n\":72,\"o\":[{\"c\":[{\"e\":1}],\"f\":[{\"t\":12}],\"l\":[{\"a\":[{\"b\":1}],\"d\":153,\"i\":[{\"c\":3}],\"v\":32,\"u\":[{\"t\":[{\"e\":9}]}]}],\"m\":27,\"n\":[{\".\":68,\"a\":17,\"g\":0}],\"p\":[{\"h\":[{\"i\":[{\"c\":32,\"z\":19}],\"y\":19}]},21],\"r\":[{\"c\":5,\"d\":5}],\"v\":[{\"i\":4},18],\"g\":[{\"a\":[{\"m\":[{\"y\":298}]}]}]},41],\"p\":[{\"a\":[{\"i\":32,\"n\":0,\"c\":[{\"e\":299,\"i\":[{\"n\":69}]}]},25],\"e\":[{\"n\":[{\"d\":17}],\"o\":57,\"r\":25,\"c\":[{\"i\":[{\"o\":11}]}]}],\"h\":[{\"e\":[{\"r\":[{\"o\":213},27]},24],\"o\":6}],\"i\":[{\"l\":17,\"n\":[{\"g\":4}],\"o\":18,\"c\":[{\"i\":[{\"l\":208}]}]}],\"l\":[{\"y\":21}],\"o\":[{\"n\":21,\"r\":[{\"t\":[{\"s\":[{\"c\":300,\"w\":300}]}]},17],\"t\":18,\"k\":[{\"e\":[{\"s\":[{\"w\":10}]}]}]}]}],\"q\":[{\"u\":[{\"a\":[{\"l\":[{\"l\":36}]}],\"i\":[{\"t\":[{\"o\":88}]}]}]}],\"r\":29,\"s\":[{\"a\":[{\"s\":12,\"c\":[{\"h\":[{\"u\":301}]}]},29],\"c\":94,\"e\":[{\"l\":23,\"n\":[{\"g\":19}],\"s\":[{\".\":21}],\"t\":19}],\"i\":[{\"e\":[{\"r\":0},21],\"l\":[{\"y\":4}],\"a\":[{\"n\":[{\".\":210}]}],\"g\":[{\"n\":[{\"a\":[{\"b\":302}]}]}]},29],\"l\":[{\"i\":1},21],\"n\":21,\"p\":[{\"e\":[{\"n\":[{\"d\":115}]}]}],\"t\":9,\"u\":[{\"r\":[{\"a\":6}]}],\"w\":4,\"h\":[{\"a\":[{\"t\":3}]}]},25],\"t\":[{\".\":25,\"a\":[{\"g\":24,\"l\":24,\"m\":[{\"i\":17,\"p\":69}],\"n\":[{\"d\":32,\"t\":[{\"s\":[{\"h\":[{\"i\":303}]}]}]}],\"p\":90,\"t\":[{\".\":32,\"i\":15}],\"r\":[{\"t\":[{\"l\":[{\"i\":12}]}]}]}],\"e\":[{\"d\":21,\"r\":[{\"n\":[{\"i\":7}],\"o\":19}],\"w\":[{\"a\":6},8]}],\"h\":[{\"e\":23}],\"i\":[{\".\":21,\"a\":19,\"c\":[{\"k\":32},29],\"e\":21,\"f\":23,\"n\":[{\"g\":3}],\"r\":32},9],\"l\":[{\"e\":29}],\"o\":[{\"c\":[{\"k\":32}],\"m\":[{\"a\":12}],\"n\":[{\"e\":32}],\"p\":21,\"r\":[{\"e\":27,\"a\":[{\"b\":304}]}]}],\"r\":[{\"a\":[{\"d\":21,\"t\":[{\"u\":32,\"a\":[{\"g\":305}]}],\"y\":21}],\"i\":[{\"d\":21,\"b\":[{\"u\":[{\"t\":7}]}]}],\"y\":18},1],\"w\":61,\"y\":[{\"l\":[{\"i\":[{\"s\":137}]}]},24],\"b\":4,\"s\":[{\"c\":[{\"r\":4}]}],\"u\":[{\"p\":[{\"i\":[{\"d\":306}]}]}]}],\"u\":[{\"a\":[{\"l\":2}],\"b\":111,\"g\":151,\"i\":[{\"s\":4,\"t\":12}],\"l\":21,\"m\":[{\"i\":11},9],\"n\":9,\"r\":9,\"p\":[{\"e\":[{\"r\":[{\"e\":307}]}]}]},41],\"v\":18,\"w\":[{\"o\":18,\"i\":[{\"m\":[{\"m\":177}]}]},9],\"y\":[{\"c\":18,\"l\":27,\"n\":[{\"o\":5,\"c\":41}],\"r\":[{\"i\":[{\"n\":4}]}],\"t\":[{\"h\":[{\"i\":308}]}]},21]}],\"t\":[{\"a\":[{\".\":27,\"b\":[{\"l\":[{\"e\":[{\"s\":4}]}],\"o\":[{\"l\":[{\"i\":[{\"z\":32,\"s\":[{\"m\":309}]}]}]}]},25],\"c\":[{\"i\":18}],\"d\":[{\"o\":4}],\"f\":46,\"i\":[{\"l\":[{\"o\":5}]}],\"l\":[{\"a\":4,\"e\":[{\"n\":5}],\"i\":11,\"k\":[{\"a\":204},18],\"l\":[{\"i\":[{\"s\":0}]}],\"o\":[{\"g\":4}]},9],\"m\":[{\"o\":4,\"i\":[{\"n\":82}]}],\"n\":[{\"d\":[{\"e\":0}],\"t\":[{\"a\":54}]}],\"p\":[{\"e\":[{\"r\":4}],\"l\":4,\"a\":[{\"t\":[{\"h\":310}]}]}],\"r\":[{\"a\":0,\"c\":18,\"e\":18,\"i\":[{\"z\":3}],\"r\":[{\"h\":311}]}],\"s\":[{\"e\":0,\"y\":4}],\"t\":[{\"i\":[{\"c\":18}],\"u\":[{\"r\":1}]}],\"u\":[{\"n\":17}],\"v\":0,\"w\":25,\"x\":[{\"i\":[{\"s\":0}]}],\"g\":[{\"o\":[{\"n\":[{\".\":3}]}]}]},41],\"b\":42,\"c\":[{\"h\":[{\"e\":[{\"t\":5}],\"c\":15,\"i\":[{\"e\":[{\"r\":237}]}]},21],\"r\":29},18],\"d\":43,\"e\":[{\".\":18,\"a\":[{\"d\":[{\"i\":17}],\"t\":18,\"c\":[{\"h\":[{\"e\":[{\"r\":[{\".\":36}]}]}]}]}],\"c\":[{\"e\":17,\"t\":32}],\"d\":[{\"i\":4},42],\"e\":41,\"g\":[{\"e\":[{\"r\":4}],\"i\":4},0],\"l\":[{\".\":27,\"i\":17,\"s\":32,\"e\":[{\"g\":84,\"r\":[{\"o\":249}]}]}],\"m\":[{\"a\":[{\"t\":11},154]}],\"n\":[{\"a\":[{\"n\":27}],\"c\":27,\"d\":27,\"e\":[{\"s\":18}],\"t\":[{\"a\":[{\"g\":0}]},41]}],\"o\":41,\"p\":[{\"e\":4},1],\"r\":[{\"c\":11,\"d\":155,\"i\":[{\"e\":[{\"s\":5}],\"s\":11,\"z\":[{\"a\":6}],\"c\":[{\".\":8}]},41],\"n\":[{\"i\":[{\"t\":32}]}],\"v\":5,\"g\":[{\"e\":[{\"i\":312}]}]}],\"s\":[{\".\":18,\"s\":[{\".\":23,\"e\":[{\"s\":313}]},18]}],\"t\":[{\"h\":[{\"e\":6}]}],\"u\":27,\"x\":27,\"y\":18}],\"f\":42,\"g\":43,\"h\":[{\".\":25,\"a\":[{\"n\":17,\"l\":[{\"a\":[{\"m\":228}]}]}],\"e\":[{\"a\":[{\"s\":3,\"t\":5},18],\"i\":[{\"s\":11}],\"t\":27},9],\"i\":[{\"c\":[{\".\":4,\"a\":4}],\"l\":18,\"n\":[{\"k\":32}]}],\"l\":18,\"o\":[{\"d\":[{\"e\":4,\"i\":[{\"c\":32}],\"o\":[{\"n\":11}]}],\"o\":18,\"r\":[{\"i\":[{\"t\":6,\"z\":5}]}],\"g\":[{\"e\":[{\"n\":[{\"i\":314}]}]}],\"k\":[{\"e\":[{\"r\":175}]}]}],\"s\":25,\"y\":[{\"l\":[{\"a\":[{\"n\":228}]}],\"s\":[{\"c\":11}]}]}],\"i\":[{\"a\":[{\"b\":1,\"t\":[{\"o\":1}],\"n\":[{\".\":70}]},41],\"b\":156,\"c\":[{\"k\":18,\"o\":21,\"u\":157}],\"d\":[{\"i\":32}],\"e\":[{\"n\":27}],\"f\":[{\"y\":4},8],\"g\":[{\"u\":32},25],\"l\":[{\"l\":[{\"i\":[{\"n\":6}]}]}],\"m\":[{\"p\":18,\"u\":[{\"l\":5}]},41],\"n\":[{\"a\":24,\"e\":[{\".\":27}],\"i\":27,\"o\":[{\"m\":285}]},42],\"o\":[{\"c\":4,\"n\":[{\"e\":[{\"e\":6}]}]},41],\"q\":32,\"s\":[{\"a\":3,\"e\":27,\"m\":0,\"o\":4,\"p\":0,\"t\":[{\"i\":[{\"c\":[{\"a\":32}]}]}]}],\"t\":[{\"l\":3}],\"u\":1,\"v\":[{\"a\":0},41],\"z\":[{\"a\":3,\"e\":[{\"n\":3}]},41]}],\"l\":[{\"a\":[{\"n\":17},19],\"e\":[{\".\":27,\"d\":27,\"s\":[{\".\":27}],\"t\":[{\".\":19}]}],\"o\":19,\"i\":[{\"e\":[{\"r\":315}]}]},25],\"m\":[{\"e\":0},43],\"n\":81,\"o\":[{\"b\":3,\"c\":[{\"r\":[{\"a\":[{\"t\":4}]}]}],\"d\":[{\"o\":18}],\"f\":25,\"g\":[{\"r\":9}],\"i\":[{\"c\":4}],\"m\":[{\"a\":9,\"b\":0,\"y\":3}],\"n\":[{\"a\":[{\"l\":[{\"i\":0}],\"t\":3}],\"o\":18,\"y\":18}],\"r\":[{\"a\":9,\"i\":[{\"e\":3,\"z\":5}]}],\"s\":8,\"u\":[{\"r\":32,\"t\":18}],\"w\":[{\"a\":[{\"r\":3}]}],\"l\":[{\"o\":[{\"g\":[{\"y\":84}]}]}],\"t\":[{\"i\":[{\"c\":11}]}]},41],\"p\":43,\"r\":[{\"a\":[{\"b\":11,\"c\":[{\"h\":5,\"i\":[{\"t\":17},36],\"t\":[{\"e\":17}]}],\"s\":17,\"v\":[{\"e\":[{\"n\":5,\"s\":158,\"r\":[{\"s\":[{\"a\":[{\"b\":317}]},15]}]}]}],\"i\":[{\"t\":[{\"o\":[{\"r\":316}]}]}]},41],\"e\":[{\"f\":5,\"m\":[{\"i\":6},0],\"a\":[{\"c\":[{\"h\":[{\"e\":318}]}]}]}],\"i\":[{\"a\":[{\"l\":[{\".\":1}]},32],\"c\":[{\"e\":[{\"s\":5}],\"i\":[{\"a\":32}],\"s\":18}],\"m\":25,\"v\":0}],\"o\":[{\"m\":[{\"i\":5}],\"n\":[{\"i\":6,\"y\":18}],\"p\":[{\"h\":[{\"e\":5}],\"i\":[{\"s\":175}],\"o\":[{\"l\":[{\"e\":[{\"s\":320}],\"i\":[{\"s\":320,\"t\":321}]}]}]}],\"s\":[{\"p\":11}],\"v\":11,\"l\":[{\"e\":[{\"u\":[{\"m\":319}]}]}],\"f\":[{\"i\":[{\"c\":[{\".\":17}],\"t\":11}]}]}],\"u\":[{\"i\":5,\"s\":17}]}],\"s\":[{\"c\":[{\"h\":[{\"i\":[{\"e\":12}]}]},21],\"h\":0,\"w\":21},101],\"t\":[{\"e\":[{\"s\":21}],\"o\":19,\"u\":0,\"r\":[{\"i\":[{\"b\":[{\"u\":[{\"t\":322}]}]}]}]},66],\"u\":[{\"a\":[{\"r\":3},2],\"b\":[{\"i\":1}],\"d\":8,\"e\":18,\"f\":46,\"i\":76,\"m\":27,\"n\":[{\"i\":[{\"s\":1}]}],\"p\":[{\".\":48}],\"r\":[{\"e\":27,\"i\":[{\"s\":11},32],\"o\":5,\"y\":4,\"n\":[{\"a\":[{\"r\":12}]}]}],\"s\":27},41],\"v\":18,\"w\":[{\"a\":43,\"i\":[{\"s\":17}],\"o\":18,\"h\":29},1],\"y\":[{\"a\":18,\"l\":25,\"p\":[{\"e\":12,\"h\":4,\"a\":[{\"l\":64}]}]},41],\"z\":[{\"e\":1},18]}],\"u\":[{\"a\":[{\"b\":18,\"c\":0,\"n\":[{\"a\":4,\"i\":0}],\"r\":[{\"a\":[{\"n\":[{\"t\":5}]}],\"d\":8,\"i\":11,\"t\":11}],\"t\":29,\"v\":0,\"d\":[{\"r\":[{\"a\":[{\"t\":[{\"i\":3,\"u\":15}]}]}]}]}],\"b\":[{\"e\":[{\"l\":21,\"r\":[{\"o\":21},23]},1],\"i\":[{\"n\":[{\"g\":33}]},72],\"l\":[{\"e\":[{\".\":23}]}]}],\"c\":[{\"a\":23,\"i\":[{\"b\":0,\"t\":1}],\"l\":[{\"e\":12}],\"r\":23,\"u\":23,\"y\":21}],\"d\":[{\"d\":4,\"e\":[{\"r\":3,\"s\":[{\"t\":4}],\"v\":17}],\"i\":[{\"c\":29,\"e\":[{\"d\":3,\"s\":3}],\"s\":4,\"t\":19}],\"o\":[{\"n\":[{\"y\":232},21]}],\"s\":[{\"i\":1}],\"u\":21}],\"e\":[{\"n\":[{\"e\":21,\"s\":17,\"t\":[{\"e\":0}]}],\"r\":[{\"i\":[{\"l\":0}]}],\"a\":[{\"m\":15}]}],\"f\":[{\"a\":27,\"l\":23}],\"g\":[{\"h\":[{\"e\":[{\"n\":11}]}],\"i\":[{\"n\":4}]}],\"i\":[{\"l\":[{\"i\":[{\"z\":5}]}],\"n\":[{\"g\":29},1],\"r\":[{\"m\":0}],\"t\":[{\"a\":17}],\"v\":[{\"e\":[{\"r\":[{\".\":0}]}]},11]},156],\"j\":19,\"k\":18,\"l\":[{\"a\":[{\"b\":5,\"t\":[{\"i\":19}]},29],\"c\":[{\"h\":[{\"e\":32},17]}],\"d\":[{\"e\":[{\"r\":3}]}],\"e\":[{\"n\":29},1],\"g\":[{\"i\":1}],\"i\":[{\"a\":19,\"n\":[{\"g\":3}],\"s\":[{\"h\":4}]},9],\"l\":[{\"a\":[{\"r\":1}],\"i\":[{\"b\":96,\"s\":1}]}],\"m\":61,\"o\":72,\"s\":[{\"e\":[{\"s\":5}]},18],\"t\":[{\"i\":2,\"r\":[{\"a\":54}],\"u\":18}],\"u\":[{\"l\":4},23],\"v\":4}],\"m\":[{\"a\":[{\"b\":4}],\"b\":[{\"i\":1,\"l\":[{\"y\":1}]}],\"i\":[{\"n\":[{\"g\":83}]},29],\"o\":[{\"r\":[{\"o\":6}]}],\"p\":9}],\"n\":[{\"a\":[{\"t\":17}],\"e\":[{\"r\":1},24],\"i\":[{\"m\":1,\"n\":24,\"s\":[{\"h\":4}],\"v\":11},29],\"s\":[{\"w\":1},93],\"t\":[{\"a\":[{\"b\":11}],\"e\":[{\"r\":[{\".\":1}],\"s\":1}]}],\"u\":0,\"y\":4,\"z\":4}],\"o\":[{\"r\":[{\"s\":21}],\"s\":19,\"u\":29}],\"p\":[{\"e\":[{\"r\":[{\"s\":6}]},29],\"i\":[{\"a\":19,\"n\":[{\"g\":3}]}],\"l\":23,\"p\":[{\"o\":[{\"r\":[{\"t\":10}]}]},3],\"t\":[{\"i\":[{\"b\":5}],\"u\":17}]}],\"r\":[{\"a\":[{\".\":18,\"g\":21,\"s\":21,\"l\":[{\".\":216}]},29],\"b\":[{\"e\":1}],\"c\":0,\"d\":2,\"e\":[{\"a\":[{\"t\":5}]}],\"f\":[{\"e\":[{\"r\":1}],\"r\":1}],\"i\":[{\"f\":[{\"i\":[{\"c\":0}]},23],\"n\":2,\"o\":23,\"t\":29,\"z\":3,\"a\":[{\"l\":[{\".\":0}]}]}],\"l\":[{\"i\":[{\"n\":[{\"g\":[{\".\":5}]}]}]},9],\"n\":[{\"o\":1}],\"o\":[{\"s\":17}],\"p\":[{\"e\":1,\"i\":1}],\"s\":[{\"e\":[{\"r\":5}]}],\"t\":[{\"e\":[{\"s\":4}],\"h\":[{\"e\":3}],\"i\":[{\"e\":1},17]}],\"u\":23}],\"s\":[{\"a\":[{\"d\":19,\"n\":19,\"p\":1}],\"c\":[{\"i\":3},8],\"e\":[{\"a\":5,\"r\":[{\".\":9}]}],\"i\":[{\"a\":19,\"c\":23}],\"l\":[{\"i\":[{\"n\":1}]}],\"p\":2,\"s\":[{\"l\":4}],\"t\":[{\"e\":[{\"r\":[{\"e\":4}]}],\"r\":2}],\"u\":[{\"r\":17},24]},25],\"t\":[{\"a\":[{\"b\":0,\"t\":23}],\"e\":[{\".\":18,\"l\":18,\"n\":[{\"i\":17},18]}],\"i\":[{\"l\":[{\"i\":[{\"z\":5}]}],\"n\":[{\"e\":23,\"g\":3}],\"o\":[{\"n\":[{\"a\":7}]}],\"s\":21,\"z\":31},101],\"l\":34,\"o\":[{\"f\":4,\"g\":5,\"m\":[{\"a\":[{\"t\":[{\"i\":[{\"c\":5}]}]}]}],\"n\":19,\"u\":21}],\"s\":0}],\"u\":[{\"m\":1},23],\"v\":74,\"x\":[{\"u\":11}],\"z\":[{\"e\":1}]}],\"v\":[{\"a\":[{\".\":32,\"b\":159,\"c\":[{\"i\":[{\"l\":5}],\"u\":11}],\"g\":[{\"e\":1,\"u\":[{\"e\":[{\"r\":170}]}]},0],\"l\":[{\"i\":[{\"e\":4}],\"o\":5,\"u\":15}],\"m\":[{\"o\":4}],\"n\":[{\"i\":[{\"z\":4}]}],\"p\":[{\"i\":4}],\"r\":[{\"i\":[{\"e\":[{\"d\":5}]}]}],\"t\":[{\"i\":[{\"v\":29}]},27],\"u\":[{\"d\":[{\"e\":[{\"v\":54}]}]}]},41],\"e\":[{\".\":18,\"d\":18,\"g\":11,\"l\":[{\".\":23,\"l\":[{\"i\":11}],\"o\":1,\"y\":21}],\"n\":[{\"o\":[{\"m\":11}],\"u\":[{\"e\":19}]}],\"r\":[{\"d\":21,\"e\":[{\".\":32,\"l\":[{\"y\":[{\".\":41}]},21],\"n\":[{\"c\":5},23],\"s\":21,\"i\":[{\"g\":324}]}],\"i\":[{\"e\":11}],\"m\":[{\"i\":[{\"n\":36}]}],\"s\":[{\"e\":27}],\"t\":[{\"h\":11}]}],\"s\":[{\".\":18,\"t\":[{\"e\":0,\"i\":[{\"t\":[{\"e\":15}]}]}]},99],\"t\":[{\"e\":[{\"r\":11},1],\"y\":1}]}],\"i\":[{\"a\":[{\"l\":[{\"i\":4}],\"n\":32}],\"d\":[{\"e\":[{\".\":32,\"d\":32,\"n\":47,\"s\":32}],\"i\":32}],\"f\":23,\"g\":[{\"n\":4}],\"k\":0,\"l\":[{\"i\":[{\"t\":32,\"z\":127}]},25],\"n\":[{\"a\":26,\"c\":24,\"d\":5,\"g\":18},29],\"o\":[{\"l\":11,\"r\":73,\"u\":2}],\"p\":1,\"r\":[{\"o\":4}],\"s\":[{\"i\":[{\"t\":11}],\"o\":3,\"u\":3}],\"t\":[{\"i\":18,\"r\":11,\"y\":18}],\"v\":[{\"i\":[{\"p\":[{\"a\":[{\"r\":325}]}]}]},27]}],\"o\":[{\".\":32,\"i\":[{\"r\":[{\"d\":[{\"u\":323}]}],\"c\":[{\"e\":[{\"p\":213}]}]},0],\"k\":27,\"l\":[{\"a\":1,\"e\":19,\"t\":32,\"v\":27}],\"m\":[{\"i\":5}],\"r\":[{\"a\":[{\"b\":5}],\"i\":17,\"y\":1}],\"t\":[{\"a\":1,\"e\":[{\"e\":18}]}]}],\"v\":26,\"y\":21}],\"w\":[{\"a\":[{\"b\":[{\"l\":19}],\"c\":25,\"g\":[{\"e\":[{\"r\":4}],\"o\":5}],\"i\":[{\"t\":6}],\"l\":[{\".\":19}],\"m\":0,\"r\":[{\"t\":0}],\"s\":[{\"t\":[{\"e\":[{\"w\":[{\"a\":326}]}]},0]}],\"t\":[{\"e\":2}],\"v\":[{\"e\":[{\"r\":4,\"g\":327}]}]}],\"b\":29,\"e\":[{\"a\":[{\"r\":[{\"i\":[{\"e\":5}]}],\"t\":[{\"h\":54}]}],\"d\":[{\"n\":0}],\"e\":[{\"t\":12,\"v\":5,\"k\":[{\"n\":137}]}],\"l\":[{\"l\":0}],\"r\":29,\"s\":[{\"t\":12}],\"v\":23}],\"h\":[{\"i\":0}],\"i\":[{\"l\":[{\"l\":[{\"i\":[{\"n\":6}]}]},8],\"n\":[{\"d\":[{\"e\":0}],\"g\":0}],\"r\":0,\"s\":[{\"e\":27}],\"t\":[{\"h\":12}],\"z\":5,\"d\":[{\"e\":[{\"s\":[{\"p\":6}]}]}]},9],\"k\":21,\"l\":[{\"e\":[{\"s\":1}],\"i\":[{\"n\":3}]}],\"n\":[{\"o\":21}],\"o\":[{\"m\":15,\"v\":[{\"e\":[{\"n\":4}]}],\"k\":[{\"e\":[{\"n\":85}]}]},160],\"p\":19,\"r\":[{\"a\":[{\"p\":[{\"a\":[{\"r\":[{\"o\":12}]}]}]},0],\"i\":[{\"t\":[{\"a\":36,\"e\":[{\"r\":[{\".\":183}]}]}]},0]}],\"s\":[{\"h\":23,\"l\":1,\"p\":[{\"e\":1}],\"t\":60}],\"t\":18,\"y\":1,\"c\":23}],\"x\":[{\"a\":[{\"c\":[{\"e\":5}],\"g\":[{\"o\":21}],\"m\":11,\"p\":21,\"s\":5},29],\"c\":161,\"e\":[{\"c\":[{\"u\":[{\"t\":[{\"o\":1}]}]}],\"d\":24,\"r\":[{\"i\":0,\"o\":4}]},29],\"h\":[{\"i\":[{\"l\":6},8],\"u\":0},29],\"i\":[{\"a\":4,\"c\":4,\"d\":[{\"i\":4}],\"m\":[{\"e\":21,\"i\":[{\"z\":4}]}]},23],\"o\":[{\"b\":21},23],\"p\":[{\"a\":[{\"n\":[{\"d\":17}]}],\"e\":[{\"c\":[{\"t\":[{\"o\":10}]}],\"d\":11}]},23],\"t\":[{\"i\":23},74],\"u\":[{\"a\":3},29],\"x\":1,\"q\":[{\"u\":[{\"i\":[{\"s\":54}]}]},29]}],\"y\":[{\"a\":[{\"c\":19,\"r\":110,\"t\":19}],\"b\":29,\"c\":[{\"e\":[{\"r\":4},24],\"h\":[{\"e\":[{\"d\":264},0]},23],\"o\":[{\"m\":17,\"t\":17}]},29],\"d\":29,\"e\":[{\"e\":19,\"r\":[{\"f\":21},29],\"s\":[{\"t\":[{\"e\":[{\"r\":[{\"y\":328}]}]}]},0],\"t\":1}],\"g\":[{\"i\":19}],\"h\":47,\"i\":29,\"l\":[{\"a\":23,\"l\":[{\"a\":[{\"b\":[{\"l\":6}]}]}],\"o\":23,\"u\":19}],\"m\":[{\"b\":[{\"o\":[{\"l\":7}]}],\"e\":[{\"t\":[{\"r\":[{\"y\":20}]}]},0],\"p\":[{\"a\":12}]}],\"n\":[{\"c\":[{\"h\":[{\"r\":3}]}],\"d\":4,\"g\":4,\"i\":[{\"c\":4}],\"x\":32}],\"o\":[{\"d\":4,\"g\":33,\"m\":0,\"n\":[{\"e\":[{\"t\":4}],\"s\":21}],\"s\":21},72],\"p\":[{\"e\":[{\"d\":21,\"r\":6}],\"i\":3,\"o\":[{\"c\":21},23],\"t\":[{\"a\":9}],\"u\":19}],\"r\":[{\"a\":[{\"m\":5}],\"i\":[{\"a\":4}],\"o\":23,\"r\":1}],\"s\":[{\"c\":1,\"e\":161,\"i\":[{\"c\":[{\"a\":3}],\"o\":3,\"s\":27}],\"o\":21,\"s\":0,\"t\":[{\"a\":3,\"r\":[{\"o\":29}]},2],\"u\":[{\"r\":17}]}],\"t\":[{\"h\":[{\"i\":[{\"n\":23}]}],\"i\":[{\"c\":3}]}],\"w\":29}],\"z\":[{\"a\":[{\"b\":79,\"r\":8},2],\"b\":18,\"e\":[{\"n\":1,\"p\":1,\"r\":[{\"o\":3},29],\"t\":0},25],\"i\":[{\"l\":21,\"s\":21,\"a\":[{\"n\":[{\".\":23}]}]},42],\"l\":32,\"m\":18,\"o\":[{\"m\":1,\"o\":[{\"l\":4}],\"p\":[{\"h\":[{\"r\":329}]}]},41],\"t\":[{\"e\":0}],\"z\":[{\"y\":21,\"w\":231},101]}]}",
16416
+ [
16417
+ "as-so-ciate",
16418
+ "as-so-ciates",
16419
+ "dec-li-na-tion",
16420
+ "oblig-a-tory",
16421
+ "phil-an-thropic",
16422
+ "present",
16423
+ "presents",
16424
+ "project",
16425
+ "projects",
16426
+ "reci-procity",
16427
+ "re-cog-ni-zance",
16428
+ "ref-or-ma-tion",
16429
+ "ret-ri-bu-tion",
16430
+ "ta-ble"
16431
+ ]
16432
+ ];
16433
+
16119
16434
  //#endregion
16120
16435
  //#region src/components/docs/layout/hyphenation/tools.ts
16121
16436
  function parsePattern(pattern) {
@@ -16166,8 +16481,8 @@ var Hyphen = class Hyphen {
16166
16481
  this.loadPattern("en-gb");
16167
16482
  }
16168
16483
  _preloadPatterns() {
16169
- this._patterns.set("en-us", parsePattern(require_en_us.EnUs));
16170
- this._loadExceptionsToCache("en-us", require_en_us.EnUs);
16484
+ this._patterns.set("en-us", parsePattern(EnUs));
16485
+ this._loadExceptionsToCache("en-us", EnUs);
16171
16486
  }
16172
16487
  _loadExceptionsToCache(lang, pattern) {
16173
16488
  if (pattern.length < 3) return;
@@ -16768,28 +17083,45 @@ var DocumentSkeleton = class DocumentSkeleton extends _univerjs_core.Skeleton {
16768
17083
  }
16769
17084
  }
16770
17085
  let exactMatch = null;
16771
- if (skeTables.size > 0) for (const table of skeTables.values()) {
16772
- var _this$_findLiquid, _this$_findLiquid2, _this$_findLiquid9;
16773
- const { top: tableTop, left: tableLeft, rows } = table;
16774
- (_this$_findLiquid = this._findLiquid) === null || _this$_findLiquid === void 0 || _this$_findLiquid.translateSave();
16775
- (_this$_findLiquid2 = this._findLiquid) === null || _this$_findLiquid2 === void 0 || _this$_findLiquid2.translate(tableLeft, tableTop);
16776
- for (const row of rows) {
16777
- var _this$_findLiquid3, _this$_findLiquid4, _this$_findLiquid8;
16778
- const { top: rowTop, cells, isRepeatRow } = row;
16779
- if (isRepeatRow) continue;
16780
- (_this$_findLiquid3 = this._findLiquid) === null || _this$_findLiquid3 === void 0 || _this$_findLiquid3.translateSave();
16781
- (_this$_findLiquid4 = this._findLiquid) === null || _this$_findLiquid4 === void 0 || _this$_findLiquid4.translate(0, rowTop);
16782
- for (const cell of cells) {
16783
- var _this$_findLiquid5, _this$_findLiquid6, _exactMatch3, _this$_findLiquid7;
16784
- const { left: cellLeft } = cell;
17086
+ if (skeTables.size > 0) {
17087
+ var _this$_docViewModel$g, _this$_docViewModel$g2, _this$_docViewModel$g3;
17088
+ const unitId = (_this$_docViewModel$g = (_this$_docViewModel$g2 = (_this$_docViewModel$g3 = this._docViewModel.getDataModel()).getUnitId) === null || _this$_docViewModel$g2 === void 0 ? void 0 : _this$_docViewModel$g2.call(_this$_docViewModel$g3)) !== null && _this$_docViewModel$g !== void 0 ? _this$_docViewModel$g : "";
17089
+ for (const table of skeTables.values()) {
17090
+ var _this$_findLiquid, _this$_findLiquid2, _this$_findLiquid11;
17091
+ const { top: tableTop, left: tableLeft, rows } = table;
17092
+ const sourceTableId = getTableIdAndSliceIndex(table.tableId).tableId;
17093
+ const viewport = getDocsTableRenderViewport(unitId, sourceTableId);
17094
+ (_this$_findLiquid = this._findLiquid) === null || _this$_findLiquid === void 0 || _this$_findLiquid.translateSave();
17095
+ (_this$_findLiquid2 = this._findLiquid) === null || _this$_findLiquid2 === void 0 || _this$_findLiquid2.translate(tableLeft, tableTop);
17096
+ if (viewport && viewport.contentWidth > viewport.viewportWidth) {
17097
+ var _this$_findLiquid4;
17098
+ const visibleLeft = this._findLiquid.x;
17099
+ const visibleRight = visibleLeft + viewport.viewportWidth;
17100
+ if (x < visibleLeft || x > visibleRight) {
17101
+ var _this$_findLiquid3;
17102
+ (_this$_findLiquid3 = this._findLiquid) === null || _this$_findLiquid3 === void 0 || _this$_findLiquid3.translateRestore();
17103
+ continue;
17104
+ }
17105
+ (_this$_findLiquid4 = this._findLiquid) === null || _this$_findLiquid4 === void 0 || _this$_findLiquid4.translate(-viewport.scrollLeft, 0);
17106
+ }
17107
+ for (const row of rows) {
17108
+ var _this$_findLiquid5, _this$_findLiquid6, _this$_findLiquid10;
17109
+ const { top: rowTop, cells, isRepeatRow } = row;
17110
+ if (isRepeatRow) continue;
16785
17111
  (_this$_findLiquid5 = this._findLiquid) === null || _this$_findLiquid5 === void 0 || _this$_findLiquid5.translateSave();
16786
- (_this$_findLiquid6 = this._findLiquid) === null || _this$_findLiquid6 === void 0 || _this$_findLiquid6.translate(cellLeft, 0);
16787
- exactMatch = (_exactMatch3 = exactMatch) !== null && _exactMatch3 !== void 0 ? _exactMatch3 : this._collectNearestNode(cell, 3, cell, segmentId, pi, cache, x, y, pageLength, nestLevel + 1);
16788
- (_this$_findLiquid7 = this._findLiquid) === null || _this$_findLiquid7 === void 0 || _this$_findLiquid7.translateRestore();
17112
+ (_this$_findLiquid6 = this._findLiquid) === null || _this$_findLiquid6 === void 0 || _this$_findLiquid6.translate(0, rowTop);
17113
+ for (const cell of cells) {
17114
+ var _this$_findLiquid7, _this$_findLiquid8, _exactMatch3, _this$_findLiquid9;
17115
+ const { left: cellLeft } = cell;
17116
+ (_this$_findLiquid7 = this._findLiquid) === null || _this$_findLiquid7 === void 0 || _this$_findLiquid7.translateSave();
17117
+ (_this$_findLiquid8 = this._findLiquid) === null || _this$_findLiquid8 === void 0 || _this$_findLiquid8.translate(cellLeft, 0);
17118
+ exactMatch = (_exactMatch3 = exactMatch) !== null && _exactMatch3 !== void 0 ? _exactMatch3 : this._collectNearestNode(cell, 3, cell, segmentId, pi, cache, x, y, pageLength, nestLevel + 1);
17119
+ (_this$_findLiquid9 = this._findLiquid) === null || _this$_findLiquid9 === void 0 || _this$_findLiquid9.translateRestore();
17120
+ }
17121
+ (_this$_findLiquid10 = this._findLiquid) === null || _this$_findLiquid10 === void 0 || _this$_findLiquid10.translateRestore();
16789
17122
  }
16790
- (_this$_findLiquid8 = this._findLiquid) === null || _this$_findLiquid8 === void 0 || _this$_findLiquid8.translateRestore();
17123
+ (_this$_findLiquid11 = this._findLiquid) === null || _this$_findLiquid11 === void 0 || _this$_findLiquid11.translateRestore();
16791
17124
  }
16792
- (_this$_findLiquid9 = this._findLiquid) === null || _this$_findLiquid9 === void 0 || _this$_findLiquid9.translateRestore();
16793
17125
  }
16794
17126
  if (exactMatch) {
16795
17127
  this._findLiquid.translateRestore();
@@ -17074,10 +17406,12 @@ function createDocumentModelWithStyle(content, textStyle, config = {}) {
17074
17406
  width: Number.POSITIVE_INFINITY,
17075
17407
  height: Number.POSITIVE_INFINITY
17076
17408
  },
17409
+ documentFlavor: _univerjs_core.DocumentFlavor.UNSPECIFIED,
17077
17410
  marginTop,
17078
17411
  marginBottom,
17079
17412
  marginRight,
17080
17413
  marginLeft,
17414
+ paragraphLineGapDefault: 0,
17081
17415
  renderConfig: {
17082
17416
  horizontalAlign,
17083
17417
  verticalAlign,
@@ -17119,7 +17453,7 @@ function getFontFormat(format) {
17119
17453
  }
17120
17454
 
17121
17455
  //#endregion
17122
- //#region \0@oxc-project+runtime@0.129.0/helpers/decorateParam.js
17456
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/decorateParam.js
17123
17457
  function __decorateParam(paramIndex, decorator) {
17124
17458
  return function(target, key) {
17125
17459
  decorator(target, key, paramIndex);
@@ -17127,7 +17461,7 @@ function __decorateParam(paramIndex, decorator) {
17127
17461
  }
17128
17462
 
17129
17463
  //#endregion
17130
- //#region \0@oxc-project+runtime@0.129.0/helpers/decorate.js
17464
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/decorate.js
17131
17465
  function __decorate(decorators, target, key, desc) {
17132
17466
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17133
17467
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -21291,6 +21625,7 @@ var FontAndBaseLine = class extends docExtension {
21291
21625
  "actualFontMap",
21292
21626
  {}
21293
21627
  );
21628
+ _defineProperty(this, "_textFillImageCache", /* @__PURE__ */ new Map());
21294
21629
  }
21295
21630
  draw(ctx, _parentScale, glyph, _, _more) {
21296
21631
  var _glyph$parent;
@@ -21309,13 +21644,162 @@ var FontAndBaseLine = class extends docExtension {
21309
21644
  this.actualFontMap[fontStringPxStr] = ctx.font;
21310
21645
  }
21311
21646
  }
21312
- const { cl: colorStyle, va: baselineOffset } = textStyle;
21647
+ const { cl: colorStyle, va: baselineOffset, textFill } = textStyle;
21313
21648
  const fontColor = (0, _univerjs_core.getColorStyle)(colorStyle) || "rgb(0,0,0)";
21314
- if (fontColor && this._preFontColor !== fontColor) ctx.fillStyle = fontColor;
21315
21649
  if (baselineOffset === _univerjs_core.BaselineOffset.SUPERSCRIPT) spanPointWithFont.y += -bBox.spo;
21316
21650
  else if (baselineOffset === _univerjs_core.BaselineOffset.SUBSCRIPT) spanPointWithFont.y += bBox.sbo;
21651
+ if (this._fillTextWithTextFill(ctx, glyph, spanPointWithFont, textFill, fontColor)) return;
21652
+ if (fontColor && this._preFontColor !== fontColor) ctx.fillStyle = fontColor;
21317
21653
  this._fillText(ctx, glyph, spanPointWithFont);
21318
21654
  }
21655
+ _fillTextWithTextFill(ctx, glyph, spanPointWithFont, textFill, fallbackColor) {
21656
+ if (!textFill || textFill.type === "none") return (textFill === null || textFill === void 0 ? void 0 : textFill.type) === "none";
21657
+ const { content, glyphType } = glyph;
21658
+ if (content == null || glyphType === 2) return false;
21659
+ const { renderConfig } = this.extensionOffset;
21660
+ const { vertexAngle, centerAngle } = renderConfig !== null && renderConfig !== void 0 ? renderConfig : {};
21661
+ const VERTICAL_DEG = 90;
21662
+ if (vertexAngle === VERTICAL_DEG && centerAngle === VERTICAL_DEG) return false;
21663
+ const bounds = this._getGlyphPaintBounds(glyph, spanPointWithFont);
21664
+ if (bounds.width <= 0 || bounds.height <= 0) return false;
21665
+ const color = this._colorWithOpacity(textFill.color || fallbackColor, textFill.opacity);
21666
+ if (textFill.type === "solid") {
21667
+ ctx.fillStyle = color;
21668
+ this._fillText(ctx, glyph, spanPointWithFont);
21669
+ return true;
21670
+ }
21671
+ if (textFill.type === "gradient") {
21672
+ const gradient = this._createTextGradient(ctx, bounds, textFill, fallbackColor);
21673
+ if (!gradient) return false;
21674
+ ctx.fillStyle = gradient;
21675
+ this._fillText(ctx, glyph, spanPointWithFont);
21676
+ return true;
21677
+ }
21678
+ if (textFill.type === "picture") {
21679
+ const pattern = this._createTextPicturePattern(ctx, bounds, textFill);
21680
+ if (!pattern) return false;
21681
+ ctx.fillStyle = pattern;
21682
+ this._fillText(ctx, glyph, spanPointWithFont);
21683
+ return true;
21684
+ }
21685
+ return false;
21686
+ }
21687
+ _getGlyphPaintBounds(glyph, spanPointWithFont) {
21688
+ const { width, bBox } = glyph;
21689
+ const textWidth = Math.max(width, bBox.width, 1);
21690
+ const textHeight = Math.max(bBox.aba + bBox.abd, 1);
21691
+ return {
21692
+ left: spanPointWithFont.x,
21693
+ top: spanPointWithFont.y - bBox.aba,
21694
+ width: textWidth,
21695
+ height: textHeight
21696
+ };
21697
+ }
21698
+ _createTextGradient(ctx, bounds, textFill, fallbackColor) {
21699
+ var _gradient$type, _gradient$angle, _context;
21700
+ const gradient = textFill.gradient;
21701
+ const type = (_gradient$type = gradient === null || gradient === void 0 ? void 0 : gradient.type) !== null && _gradient$type !== void 0 ? _gradient$type : "linear";
21702
+ const angle = (_gradient$angle = gradient === null || gradient === void 0 ? void 0 : gradient.angle) !== null && _gradient$angle !== void 0 ? _gradient$angle : 0;
21703
+ const stops = this._normalizeGradientStops(gradient === null || gradient === void 0 ? void 0 : gradient.stops, textFill.color || fallbackColor);
21704
+ const centerX = bounds.left + bounds.width / 2;
21705
+ const centerY = bounds.top + bounds.height / 2;
21706
+ let canvasGradient;
21707
+ if (type === "radial") {
21708
+ const radius = Math.max(bounds.width, bounds.height) / 2;
21709
+ canvasGradient = ctx.createRadialGradient(centerX, centerY, 0, centerX, centerY, radius);
21710
+ } else if (type === "angular" && "createConicGradient" in ((_context = ctx._context) !== null && _context !== void 0 ? _context : ctx)) {
21711
+ var _context2;
21712
+ canvasGradient = ((_context2 = ctx._context) !== null && _context2 !== void 0 ? _context2 : ctx).createConicGradient((angle - 90) * Math.PI / 180, centerX, centerY);
21713
+ } else if (type === "diamond") {
21714
+ const radius = Math.max(bounds.width, bounds.height) / 2;
21715
+ canvasGradient = ctx.createRadialGradient(centerX, centerY, 0, centerX, centerY, radius);
21716
+ } else {
21717
+ const line = this._getLinearGradientLine(bounds, angle);
21718
+ canvasGradient = ctx.createLinearGradient(line.x0, line.y0, line.x1, line.y1);
21719
+ }
21720
+ for (const stop of stops) {
21721
+ var _textFill$opacity, _stop$opacity;
21722
+ const opacity = ((_textFill$opacity = textFill.opacity) !== null && _textFill$opacity !== void 0 ? _textFill$opacity : 1) * ((_stop$opacity = stop.opacity) !== null && _stop$opacity !== void 0 ? _stop$opacity : 1);
21723
+ canvasGradient.addColorStop(stop.offset, this._colorWithOpacity(stop.color, opacity));
21724
+ }
21725
+ return canvasGradient;
21726
+ }
21727
+ _createTextPicturePattern(ctx, bounds, textFill) {
21728
+ var _textFill$picture, _ref, _textFill$picture$opa, _textFill$picture2, _textFill$picture3, _pattern$setTransform;
21729
+ const source = (_textFill$picture = textFill.picture) === null || _textFill$picture === void 0 ? void 0 : _textFill$picture.source;
21730
+ if (!source) return null;
21731
+ const image = this._getTextFillImage(source);
21732
+ if (!image || !image.complete || !(image.naturalWidth || image.width)) return null;
21733
+ const canvas = document.createElement("canvas");
21734
+ canvas.width = Math.max(1, Math.ceil(bounds.width));
21735
+ canvas.height = Math.max(1, Math.ceil(bounds.height));
21736
+ const canvasContext = canvas.getContext("2d");
21737
+ if (!canvasContext) return null;
21738
+ canvasContext.globalAlpha = this._clamp((_ref = (_textFill$picture$opa = (_textFill$picture2 = textFill.picture) === null || _textFill$picture2 === void 0 ? void 0 : _textFill$picture2.opacity) !== null && _textFill$picture$opa !== void 0 ? _textFill$picture$opa : textFill.opacity) !== null && _ref !== void 0 ? _ref : 1, 0, 1);
21739
+ if (((_textFill$picture3 = textFill.picture) === null || _textFill$picture3 === void 0 ? void 0 : _textFill$picture3.mode) === "tile") {
21740
+ var _textFill$picture$sca, _textFill$picture$sca2, _textFill$picture$off, _textFill$picture$off2;
21741
+ const scaleX = (_textFill$picture$sca = textFill.picture.scaleX) !== null && _textFill$picture$sca !== void 0 ? _textFill$picture$sca : 1;
21742
+ const scaleY = (_textFill$picture$sca2 = textFill.picture.scaleY) !== null && _textFill$picture$sca2 !== void 0 ? _textFill$picture$sca2 : 1;
21743
+ const cellWidth = Math.max(1, (image.naturalWidth || image.width) * scaleX);
21744
+ const cellHeight = Math.max(1, (image.naturalHeight || image.height) * scaleY);
21745
+ const offsetX = (_textFill$picture$off = textFill.picture.offsetX) !== null && _textFill$picture$off !== void 0 ? _textFill$picture$off : 0;
21746
+ const offsetY = (_textFill$picture$off2 = textFill.picture.offsetY) !== null && _textFill$picture$off2 !== void 0 ? _textFill$picture$off2 : 0;
21747
+ for (let x = (offsetX % cellWidth + cellWidth) % cellWidth - cellWidth; x < canvas.width; x += cellWidth) for (let y = (offsetY % cellHeight + cellHeight) % cellHeight - cellHeight; y < canvas.height; y += cellHeight) canvasContext.drawImage(image, x, y, cellWidth, cellHeight);
21748
+ } else canvasContext.drawImage(image, 0, 0, canvas.width, canvas.height);
21749
+ const pattern = ctx.createPattern(canvas, "no-repeat");
21750
+ pattern === null || pattern === void 0 || (_pattern$setTransform = pattern.setTransform) === null || _pattern$setTransform === void 0 || _pattern$setTransform.call(pattern, new DOMMatrix().translate(bounds.left, bounds.top));
21751
+ return pattern;
21752
+ }
21753
+ _getTextFillImage(source) {
21754
+ const cached = this._textFillImageCache.get(source);
21755
+ if (cached) return cached;
21756
+ const image = new Image();
21757
+ image.crossOrigin = "anonymous";
21758
+ image.src = source;
21759
+ this._textFillImageCache.set(source, image);
21760
+ return image.complete ? image : null;
21761
+ }
21762
+ _normalizeGradientStops(stops, fallbackColor) {
21763
+ return (stops && stops.length >= 2 ? stops : [{
21764
+ offset: 0,
21765
+ color: fallbackColor
21766
+ }, {
21767
+ offset: 100,
21768
+ color: "#ffffff"
21769
+ }]).map((stop) => ({
21770
+ color: stop.color,
21771
+ offset: this._clamp(stop.offset > 1 ? stop.offset / 100 : stop.offset, 0, 1),
21772
+ opacity: stop.opacity
21773
+ }));
21774
+ }
21775
+ _getLinearGradientLine(bounds, angle) {
21776
+ const angleRad = angle * Math.PI / 180;
21777
+ const centerX = bounds.left + bounds.width / 2;
21778
+ const centerY = bounds.top + bounds.height / 2;
21779
+ const cos = Math.cos(angleRad);
21780
+ const sin = Math.sin(angleRad);
21781
+ const halfDiagonal = (Math.abs(bounds.width * cos) + Math.abs(bounds.height * sin)) / 2;
21782
+ return {
21783
+ x0: centerX - cos * halfDiagonal,
21784
+ y0: centerY - sin * halfDiagonal,
21785
+ x1: centerX + cos * halfDiagonal,
21786
+ y1: centerY + sin * halfDiagonal
21787
+ };
21788
+ }
21789
+ _colorWithOpacity(color, opacity) {
21790
+ if (opacity === void 0 || opacity >= 1) return color;
21791
+ const alpha = this._clamp(opacity, 0, 1);
21792
+ const hex = color.trim();
21793
+ if (/^#[0-9a-f]{3}$/i.test(hex)) {
21794
+ const [, r, g, b] = hex;
21795
+ return `rgba(${Number.parseInt(r + r, 16)}, ${Number.parseInt(g + g, 16)}, ${Number.parseInt(b + b, 16)}, ${alpha})`;
21796
+ }
21797
+ if (/^#[0-9a-f]{6}$/i.test(hex)) return `rgba(${Number.parseInt(hex.slice(1, 3), 16)}, ${Number.parseInt(hex.slice(3, 5), 16)}, ${Number.parseInt(hex.slice(5, 7), 16)}, ${alpha})`;
21798
+ return color;
21799
+ }
21800
+ _clamp(value, min, max) {
21801
+ return Math.max(min, Math.min(max, value));
21802
+ }
21319
21803
  _fillText(ctx, glyph, spanPointWithFont) {
21320
21804
  const { renderConfig, spanStartPoint, centerPoint } = this.extensionOffset;
21321
21805
  const { content, width, bBox } = glyph;
@@ -21543,7 +22027,8 @@ DocumentsSpanAndLineExtensionRegistry.add(new Line());
21543
22027
 
21544
22028
  //#endregion
21545
22029
  //#region src/components/docs/document.ts
21546
- const DEFAULT_BORDER_COLOR = { color: { rgb: "#dee0e3" } };
22030
+ const DEFAULT_BORDER_COLOR = { color: { rgb: "#c7c9cc" } };
22031
+ const TABLE_VIEWPORT_BORDER_CLIP_PADDING = 2;
21547
22032
  var Documents = class Documents extends DocComponent {
21548
22033
  constructor(oKey, documentSkeleton, config) {
21549
22034
  super(oKey, documentSkeleton, config);
@@ -21726,29 +22211,62 @@ var Documents = class Documents extends DocComponent {
21726
22211
  }
21727
22212
  }
21728
22213
  _drawTable(ctx, page, skeTables, extensions, backgroundExtension, glyphExtensionsExcludeBackground, alignOffsetNoAngle, centerAngle, vertexAngle, renderConfig, parentScale) {
21729
- for (const [_tableId, tableSkeleton] of skeTables) {
21730
- var _this$_drawLiquid, _this$_drawLiquid2, _this$_drawLiquid9;
22214
+ const drawLiquid = this._drawLiquid;
22215
+ if (drawLiquid == null) return;
22216
+ const renderUnitId = this._getRenderUnitId();
22217
+ for (const [tableId, tableSkeleton] of skeTables) {
21731
22218
  const { top: tableTop, left: tableLeft, rows } = tableSkeleton;
21732
- (_this$_drawLiquid = this._drawLiquid) === null || _this$_drawLiquid === void 0 || _this$_drawLiquid.translateSave();
21733
- (_this$_drawLiquid2 = this._drawLiquid) === null || _this$_drawLiquid2 === void 0 || _this$_drawLiquid2.translate(tableLeft, tableTop);
22219
+ const sourceTableId = getTableIdAndSliceIndex(tableId).tableId;
22220
+ const viewport = this._getTableViewport(page, tableSkeleton, renderUnitId, sourceTableId);
22221
+ drawLiquid.translateSave();
22222
+ drawLiquid.translate(tableLeft, tableTop);
22223
+ if (viewport && viewport.contentWidth > viewport.viewportWidth) {
22224
+ const { x, y } = drawLiquid;
22225
+ ctx.save();
22226
+ ctx.beginPath();
22227
+ ctx.rectByPrecision(x + page.marginLeft - TABLE_VIEWPORT_BORDER_CLIP_PADDING, y + page.marginTop - TABLE_VIEWPORT_BORDER_CLIP_PADDING, viewport.viewportWidth + TABLE_VIEWPORT_BORDER_CLIP_PADDING * 2, tableSkeleton.height + TABLE_VIEWPORT_BORDER_CLIP_PADDING * 2);
22228
+ ctx.closePath();
22229
+ ctx.clip();
22230
+ drawLiquid.translate(-viewport.scrollLeft, 0);
22231
+ }
21734
22232
  for (const row of rows) {
21735
- var _this$_drawLiquid3, _this$_drawLiquid4, _this$_drawLiquid8;
21736
22233
  const { top: rowTop, cells } = row;
21737
- (_this$_drawLiquid3 = this._drawLiquid) === null || _this$_drawLiquid3 === void 0 || _this$_drawLiquid3.translateSave();
21738
- (_this$_drawLiquid4 = this._drawLiquid) === null || _this$_drawLiquid4 === void 0 || _this$_drawLiquid4.translate(0, rowTop);
22234
+ drawLiquid.translateSave();
22235
+ drawLiquid.translate(0, rowTop);
21739
22236
  for (const cell of cells) {
21740
- var _this$_drawLiquid5, _this$_drawLiquid6, _this$_drawLiquid7;
22237
+ if (cell.isMergedCellCovered) continue;
21741
22238
  const { left: cellLeft } = cell;
21742
- (_this$_drawLiquid5 = this._drawLiquid) === null || _this$_drawLiquid5 === void 0 || _this$_drawLiquid5.translateSave();
21743
- (_this$_drawLiquid6 = this._drawLiquid) === null || _this$_drawLiquid6 === void 0 || _this$_drawLiquid6.translate(cellLeft, 0);
22239
+ drawLiquid.translateSave();
22240
+ drawLiquid.translate(cellLeft, 0);
21744
22241
  this._drawTableCell(ctx, page, cell, extensions, backgroundExtension, glyphExtensionsExcludeBackground, alignOffsetNoAngle, centerAngle, vertexAngle, renderConfig, parentScale);
21745
- (_this$_drawLiquid7 = this._drawLiquid) === null || _this$_drawLiquid7 === void 0 || _this$_drawLiquid7.translateRestore();
22242
+ drawLiquid.translateRestore();
21746
22243
  }
21747
- (_this$_drawLiquid8 = this._drawLiquid) === null || _this$_drawLiquid8 === void 0 || _this$_drawLiquid8.translateRestore();
22244
+ drawLiquid.translateRestore();
21748
22245
  }
21749
- (_this$_drawLiquid9 = this._drawLiquid) === null || _this$_drawLiquid9 === void 0 || _this$_drawLiquid9.translateRestore();
22246
+ if (viewport && viewport.contentWidth > viewport.viewportWidth) ctx.restore();
22247
+ drawLiquid.translateRestore();
21750
22248
  }
21751
22249
  }
22250
+ _getTableViewport(page, tableSkeleton, unitId, tableId) {
22251
+ const viewport = getDocsTableRenderViewport(unitId, tableId);
22252
+ if (viewport) return viewport;
22253
+ const { pageWidth, marginLeft = 0, marginRight = 0 } = page;
22254
+ if (!Number.isFinite(pageWidth)) return null;
22255
+ const viewportWidth = Math.max(0, pageWidth - marginLeft - marginRight - tableSkeleton.left);
22256
+ if (viewportWidth <= 0 || tableSkeleton.width <= viewportWidth) return null;
22257
+ return {
22258
+ contentWidth: tableSkeleton.width,
22259
+ scrollLeft: 0,
22260
+ viewportWidth
22261
+ };
22262
+ }
22263
+ _getRenderUnitId() {
22264
+ var _skeleton$getViewMode, _viewModel$getDataMod, _dataModel$getUnitId, _dataModel$getUnitId2;
22265
+ const skeleton = this.getSkeleton();
22266
+ const viewModel = skeleton === null || skeleton === void 0 || (_skeleton$getViewMode = skeleton.getViewModel) === null || _skeleton$getViewMode === void 0 ? void 0 : _skeleton$getViewMode.call(skeleton);
22267
+ const dataModel = viewModel === null || viewModel === void 0 || (_viewModel$getDataMod = viewModel.getDataModel) === null || _viewModel$getDataMod === void 0 ? void 0 : _viewModel$getDataMod.call(viewModel);
22268
+ return (_dataModel$getUnitId = dataModel === null || dataModel === void 0 || (_dataModel$getUnitId2 = dataModel.getUnitId) === null || _dataModel$getUnitId2 === void 0 ? void 0 : _dataModel$getUnitId2.call(dataModel)) !== null && _dataModel$getUnitId !== void 0 ? _dataModel$getUnitId : this.oKey;
22269
+ }
21752
22270
  _drawBorderBottom(ctx, page, line, left = 0, top = 0) {
21753
22271
  var _line$borderBottom$pa, _line$borderBottom, _line$borderBottom$co, _line$borderBottom2;
21754
22272
  if (this._drawLiquid == null) return;
@@ -21858,60 +22376,68 @@ var Documents = class Documents extends DocComponent {
21858
22376
  ctx.restore();
21859
22377
  }
21860
22378
  _drawTableCellBordersAndBg(ctx, page, cell) {
21861
- var _borderLeft$color$rgb, _borderTop$color$rgb, _borderRight$color$rg, _borderBottom$color$r;
22379
+ var _rowSke$index, _cellSource$backgroun;
21862
22380
  const { marginLeft, marginTop } = page;
21863
22381
  const { pageWidth, pageHeight } = cell;
21864
22382
  const rowSke = cell.parent;
21865
22383
  const index = rowSke.cells.indexOf(cell);
21866
- const { borderTop = DEFAULT_BORDER_COLOR, borderBottom = DEFAULT_BORDER_COLOR, borderLeft = DEFAULT_BORDER_COLOR, borderRight = DEFAULT_BORDER_COLOR, backgroundColor } = rowSke.rowSource.tableCells[index];
22384
+ if (index < 0) return;
22385
+ const cellSource = rowSke.rowSource.tableCells[index];
22386
+ const tableSke = rowSke.parent;
22387
+ const rowIndexInTable = tableSke === null || tableSke === void 0 ? void 0 : tableSke.rows.indexOf(rowSke);
22388
+ const rowIndex = rowIndexInTable == null || rowIndexInTable < 0 ? (_rowSke$index = rowSke.index) !== null && _rowSke$index !== void 0 ? _rowSke$index : 0 : rowIndexInTable;
22389
+ if (!cellSource || cellSource.rowSpan === 0 || cellSource.columnSpan === 0) return;
21867
22390
  if (this._drawLiquid == null) return;
21868
22391
  let { x, y } = this._drawLiquid;
21869
22392
  x += marginLeft;
21870
22393
  y += marginTop;
21871
- if (backgroundColor && backgroundColor.rgb) {
22394
+ if ((_cellSource$backgroun = cellSource.backgroundColor) === null || _cellSource$backgroun === void 0 ? void 0 : _cellSource$backgroun.rgb) {
21872
22395
  ctx.save();
21873
- ctx.fillStyle = backgroundColor.rgb;
22396
+ ctx.fillStyle = cellSource.backgroundColor.rgb;
21874
22397
  ctx.fillRectByPrecision(x, y, pageWidth, pageHeight);
21875
22398
  ctx.restore();
21876
22399
  }
21877
- ctx.save();
21878
- ctx.setLineWidthByPrecision(1);
21879
- ctx.save();
21880
- ctx.strokeStyle = (_borderLeft$color$rgb = borderLeft.color.rgb) !== null && _borderLeft$color$rgb !== void 0 ? _borderLeft$color$rgb : DEFAULT_BORDER_COLOR.color.rgb;
21881
- drawLineByBorderType(ctx, "l", 0, {
21882
- startX: x,
21883
- startY: y,
21884
- endX: x + pageWidth,
21885
- endY: y + pageHeight
21886
- });
21887
- ctx.restore();
21888
- ctx.save();
21889
- ctx.strokeStyle = (_borderTop$color$rgb = borderTop.color.rgb) !== null && _borderTop$color$rgb !== void 0 ? _borderTop$color$rgb : DEFAULT_BORDER_COLOR.color.rgb;
21890
- drawLineByBorderType(ctx, "t", 0, {
22400
+ const position = {
21891
22401
  startX: x,
21892
22402
  startY: y,
21893
22403
  endX: x + pageWidth,
21894
22404
  endY: y + pageHeight
21895
- });
21896
- ctx.restore();
21897
- ctx.save();
21898
- ctx.strokeStyle = (_borderRight$color$rg = borderRight.color.rgb) !== null && _borderRight$color$rg !== void 0 ? _borderRight$color$rg : DEFAULT_BORDER_COLOR.color.rgb;
21899
- drawLineByBorderType(ctx, "r", 0, {
21900
- startX: x,
21901
- startY: y,
21902
- endX: x + pageWidth,
21903
- endY: y + pageHeight
21904
- });
21905
- ctx.restore();
22405
+ };
22406
+ const rightCellSource = this._getTableCellSource(rowSke, index + 1);
22407
+ const bottomCellSource = tableSke ? this._getTableCellSource(tableSke.rows[rowIndex + 1], index) : void 0;
22408
+ this._drawTableCellBorder(ctx, this._resolveTableCellBorder(cellSource.borderRight, rightCellSource === null || rightCellSource === void 0 ? void 0 : rightCellSource.borderLeft), "r", position);
22409
+ this._drawTableCellBorder(ctx, this._resolveTableCellBorder(cellSource.borderBottom, bottomCellSource === null || bottomCellSource === void 0 ? void 0 : bottomCellSource.borderTop), "b", position);
22410
+ if (rowIndex <= 0) this._drawTableCellBorder(ctx, this._resolveTableCellBorder(cellSource.borderTop), "t", position);
22411
+ if (index <= 0) this._drawTableCellBorder(ctx, this._resolveTableCellBorder(cellSource.borderLeft), "l", position);
22412
+ }
22413
+ _getTableCellSource(row, column) {
22414
+ var _row$rowSource$tableC;
22415
+ return (_row$rowSource$tableC = row === null || row === void 0 ? void 0 : row.rowSource.tableCells[column]) !== null && _row$rowSource$tableC !== void 0 ? _row$rowSource$tableC : null;
22416
+ }
22417
+ _resolveTableCellBorder(primary, secondary) {
22418
+ if (this._isDrawableTableCellBorder(primary)) return primary;
22419
+ if (this._isDrawableTableCellBorder(secondary)) return secondary;
22420
+ if (primary || secondary) return null;
22421
+ return DEFAULT_BORDER_COLOR;
22422
+ }
22423
+ _isDrawableTableCellBorder(border) {
22424
+ var _border$width$v, _border$width, _border$color$rgb, _border$color;
22425
+ if (!border) return false;
22426
+ const lineWidth = (_border$width$v = (_border$width = border.width) === null || _border$width === void 0 ? void 0 : _border$width.v) !== null && _border$width$v !== void 0 ? _border$width$v : 1;
22427
+ const color = (_border$color$rgb = (_border$color = border.color) === null || _border$color === void 0 ? void 0 : _border$color.rgb) !== null && _border$color$rgb !== void 0 ? _border$color$rgb : DEFAULT_BORDER_COLOR.color.rgb;
22428
+ return lineWidth > 0 && color !== "transparent";
22429
+ }
22430
+ _drawTableCellBorder(ctx, border, type, position) {
22431
+ var _border$width$v2, _border$width2, _border$color$rgb2, _border$color2;
22432
+ if (!border) return;
22433
+ const lineWidth = (_border$width$v2 = (_border$width2 = border.width) === null || _border$width2 === void 0 ? void 0 : _border$width2.v) !== null && _border$width$v2 !== void 0 ? _border$width$v2 : 1;
22434
+ const color = (_border$color$rgb2 = (_border$color2 = border.color) === null || _border$color2 === void 0 ? void 0 : _border$color2.rgb) !== null && _border$color$rgb2 !== void 0 ? _border$color$rgb2 : DEFAULT_BORDER_COLOR.color.rgb;
22435
+ if (lineWidth <= 0 || color === "transparent") return;
21906
22436
  ctx.save();
21907
- ctx.strokeStyle = (_borderBottom$color$r = borderBottom.color.rgb) !== null && _borderBottom$color$r !== void 0 ? _borderBottom$color$r : DEFAULT_BORDER_COLOR.color.rgb;
21908
- drawLineByBorderType(ctx, "b", 0, {
21909
- startX: x,
21910
- startY: y,
21911
- endX: x + pageWidth,
21912
- endY: y + pageHeight
21913
- });
21914
- ctx.restore();
22437
+ ctx.setLineWidthByPrecision(lineWidth);
22438
+ setTableCellBorderDash(ctx, border.dashStyle);
22439
+ ctx.strokeStyle = color;
22440
+ drawLineByBorderType(ctx, type, 0, position);
21915
22441
  ctx.restore();
21916
22442
  }
21917
22443
  _drawHeaderFooter(page, ctx, extensions, backgroundExtension, glyphExtensionsExcludeBackground, alignOffsetNoAngle, centerAngle, vertexAngle, renderConfig, parentScale, parentPage, isHeader = true) {
@@ -22042,6 +22568,17 @@ var Documents = class Documents extends DocComponent {
22042
22568
  });
22043
22569
  }
22044
22570
  };
22571
+ function setTableCellBorderDash(ctx, dashStyle) {
22572
+ if (dashStyle === _univerjs_core.DashStyleType.DOT) {
22573
+ ctx.setLineDash([2]);
22574
+ return;
22575
+ }
22576
+ if (dashStyle === _univerjs_core.DashStyleType.DASH) {
22577
+ ctx.setLineDash([6]);
22578
+ return;
22579
+ }
22580
+ ctx.setLineDash([0]);
22581
+ }
22045
22582
 
22046
22583
  //#endregion
22047
22584
  //#region src/components/sheets/spreadsheet.ts
@@ -22225,8 +22762,10 @@ var Spreadsheet = class extends SheetComponent {
22225
22762
  cacheCtx.save();
22226
22763
  const isForceDirty = isViewportForceDirty || this.isForceDirty();
22227
22764
  const isDirty = isViewportDirty || this.isDirty();
22228
- if (diffBounds.length === 0 || diffX === 0 && diffY === 0 || isForceDirty || isDirty) {
22229
- if (isDirty || isForceDirty) {
22765
+ const isScrollJumpOutsideCache = Math.abs(diffX) * scaleX >= cacheCanvas.getWidth() || Math.abs(diffY) * scaleY >= cacheCanvas.getHeight();
22766
+ const shouldRefreshCache = isDirty || isForceDirty || isScrollJumpOutsideCache;
22767
+ if (diffBounds.length === 0 || diffX === 0 && diffY === 0 || shouldRefreshCache) {
22768
+ if (shouldRefreshCache) {
22230
22769
  this.addRenderTagToScene("scrolling", false);
22231
22770
  this.refreshCacheCanvas(viewportInfo, {
22232
22771
  cacheCanvas,
@@ -23242,29 +23781,49 @@ var Slide = class extends SceneViewer {
23242
23781
  //#region src/components/docs/doc-background.ts
23243
23782
  const PAGE_STROKE_COLOR = "rgba(198, 198, 198, 1)";
23244
23783
  const PAGE_FILL_COLOR = "rgba(255, 255, 255, 1)";
23784
+ const DOCS_WORKSPACE_FILL_COLOR = "#fafafa";
23245
23785
  const MARGIN_STROKE_COLOR = "rgba(158, 158, 158, 1)";
23246
23786
  var DocBackground = class DocBackground extends DocComponent {
23247
23787
  constructor(oKey, documentSkeleton, config) {
23248
23788
  super(oKey, documentSkeleton, config);
23249
23789
  _defineProperty(this, "_drawLiquid", void 0);
23790
+ _defineProperty(this, "_backgroundFillColor", void 0);
23791
+ _defineProperty(this, "_pageFillColor", void 0);
23792
+ _defineProperty(this, "_pageStrokeColor", void 0);
23793
+ _defineProperty(this, "_marginStrokeColor", void 0);
23250
23794
  this._drawLiquid = new Liquid();
23795
+ this._backgroundFillColor = config === null || config === void 0 ? void 0 : config.backgroundFillColor;
23796
+ this._pageFillColor = config === null || config === void 0 ? void 0 : config.pageFillColor;
23797
+ this._pageStrokeColor = config === null || config === void 0 ? void 0 : config.pageStrokeColor;
23798
+ this._marginStrokeColor = config === null || config === void 0 ? void 0 : config.marginStrokeColor;
23251
23799
  this.makeDirty(true);
23252
23800
  }
23253
23801
  static create(oKey, documentSkeleton, config) {
23254
23802
  return new DocBackground(oKey, documentSkeleton, config);
23255
23803
  }
23804
+ setFillColors(backgroundFillColor, pageFillColor, pageStrokeColor, marginStrokeColor) {
23805
+ if (this._backgroundFillColor === backgroundFillColor && this._pageFillColor === pageFillColor && this._pageStrokeColor === pageStrokeColor && this._marginStrokeColor === marginStrokeColor) return;
23806
+ this._backgroundFillColor = backgroundFillColor;
23807
+ this._pageFillColor = pageFillColor;
23808
+ this._pageStrokeColor = pageStrokeColor;
23809
+ this._marginStrokeColor = marginStrokeColor;
23810
+ this.makeDirty(true);
23811
+ }
23256
23812
  draw(ctx, bounds) {
23257
- var _this$getSkeleton, _this$getSkeleton2;
23813
+ var _this$getSkeleton, _this$getSkeleton2, _this$_backgroundFill;
23258
23814
  const skeletonData = (_this$getSkeleton = this.getSkeleton()) === null || _this$getSkeleton === void 0 ? void 0 : _this$getSkeleton.getSkeletonData();
23259
23815
  const docDataModel = (_this$getSkeleton2 = this.getSkeleton()) === null || _this$getSkeleton2 === void 0 ? void 0 : _this$getSkeleton2.getViewModel().getDataModel();
23260
23816
  if (skeletonData == null || docDataModel == null) return;
23261
23817
  const { documentFlavor } = docDataModel.getSnapshot().documentStyle;
23262
- if (documentFlavor !== _univerjs_core.DocumentFlavor.TRADITIONAL) return;
23818
+ const workspaceFill = (_this$_backgroundFill = this._backgroundFillColor) !== null && _this$_backgroundFill !== void 0 ? _this$_backgroundFill : documentFlavor === _univerjs_core.DocumentFlavor.MODERN ? PAGE_FILL_COLOR : DOCS_WORKSPACE_FILL_COLOR;
23819
+ this._drawWorkspaceBackground(ctx, workspaceFill, bounds);
23820
+ if (documentFlavor === _univerjs_core.DocumentFlavor.MODERN) return;
23263
23821
  this._drawLiquid.reset();
23264
23822
  const { pages } = skeletonData;
23265
23823
  let pageTop = 0;
23266
23824
  let pageLeft = 0;
23267
23825
  for (let i = 0, len = pages.length; i < len; i++) {
23826
+ var _this$_pageStrokeColo, _this$_pageFillColor, _this$_marginStrokeCo;
23268
23827
  const page = pages[i];
23269
23828
  if (this.isSkipByDiffBounds(page, pageTop, pageLeft, bounds)) {
23270
23829
  const { x, y } = this._drawLiquid.translatePage(page, this.pageLayoutType, this.pageMarginLeft, this.pageMarginTop);
@@ -23279,8 +23838,8 @@ var DocBackground = class DocBackground extends DocComponent {
23279
23838
  width: pageWidth !== null && pageWidth !== void 0 ? pageWidth : width,
23280
23839
  height: pageHeight !== null && pageHeight !== void 0 ? pageHeight : height,
23281
23840
  strokeWidth: 1,
23282
- stroke: PAGE_STROKE_COLOR,
23283
- fill: PAGE_FILL_COLOR,
23841
+ stroke: (_this$_pageStrokeColo = this._pageStrokeColor) !== null && _this$_pageStrokeColo !== void 0 ? _this$_pageStrokeColo : PAGE_STROKE_COLOR,
23842
+ fill: (_this$_pageFillColor = this._pageFillColor) !== null && _this$_pageFillColor !== void 0 ? _this$_pageFillColor : PAGE_FILL_COLOR,
23284
23843
  zIndex: 3
23285
23844
  };
23286
23845
  Rect.drawWith(ctx, backgroundOptions);
@@ -23337,7 +23896,7 @@ var DocBackground = class DocBackground extends DocComponent {
23337
23896
  }
23338
23897
  ],
23339
23898
  strokeWidth: 1.5,
23340
- stroke: MARGIN_STROKE_COLOR
23899
+ stroke: (_this$_marginStrokeCo = this._marginStrokeColor) !== null && _this$_marginStrokeCo !== void 0 ? _this$_marginStrokeCo : MARGIN_STROKE_COLOR
23341
23900
  };
23342
23901
  Path.drawWith(ctx, marginIdentification);
23343
23902
  ctx.restore();
@@ -23346,6 +23905,24 @@ var DocBackground = class DocBackground extends DocComponent {
23346
23905
  pageTop += y;
23347
23906
  }
23348
23907
  }
23908
+ _drawWorkspaceBackground(ctx, fill, bounds) {
23909
+ var _bounds$cacheBound, _visibleBound$left, _visibleBound$top;
23910
+ const visibleBound = (_bounds$cacheBound = bounds === null || bounds === void 0 ? void 0 : bounds.cacheBound) !== null && _bounds$cacheBound !== void 0 ? _bounds$cacheBound : bounds === null || bounds === void 0 ? void 0 : bounds.viewBound;
23911
+ const left = (_visibleBound$left = visibleBound === null || visibleBound === void 0 ? void 0 : visibleBound.left) !== null && _visibleBound$left !== void 0 ? _visibleBound$left : 0;
23912
+ const top = (_visibleBound$top = visibleBound === null || visibleBound === void 0 ? void 0 : visibleBound.top) !== null && _visibleBound$top !== void 0 ? _visibleBound$top : 0;
23913
+ const width = visibleBound == null ? this.width : visibleBound.right - visibleBound.left;
23914
+ const height = visibleBound == null ? this.height : visibleBound.bottom - visibleBound.top;
23915
+ if (width <= 0 || height <= 0) return;
23916
+ ctx.save();
23917
+ ctx.translate(left, top);
23918
+ Rect.drawWith(ctx, {
23919
+ width,
23920
+ height,
23921
+ fill,
23922
+ zIndex: 0
23923
+ });
23924
+ ctx.restore();
23925
+ }
23349
23926
  changeSkeleton(newSkeleton) {
23350
23927
  this.setSkeleton(newSkeleton);
23351
23928
  return this;
@@ -23782,6 +24359,42 @@ var DumbCanvasColorService = class {
23782
24359
  return color;
23783
24360
  }
23784
24361
  };
24362
+ const DARK_RENDER_COLOR_OVERRIDES = {
24363
+ "#17212b": "#e2e8f0",
24364
+ "#64748b": "#94a3b8",
24365
+ "#d9e0e7": "#253044",
24366
+ "#edf1f5": "#1b2535",
24367
+ "#eef2f6": "#1b2535",
24368
+ "#f2f5f8": "#101827",
24369
+ "#f3f6fa": "#18243a",
24370
+ "#f4f8ff": "#172a46",
24371
+ "#f5f9ff": "#12233a",
24372
+ "#f7f9fb": "#0d1422",
24373
+ "#f7f9fc": "#0d1422",
24374
+ "#f8fafc": "#0f172a",
24375
+ "#fbfcfd": "#07111f",
24376
+ "#fcfdff": "#050914",
24377
+ "#e8f1ff": "#173a69",
24378
+ "#eaf5ff": "#12315a",
24379
+ "#dbeafe": "#1e3a8a",
24380
+ "#bfdbfe": "#60a5fa",
24381
+ "#93c5fd": "#60a5fa",
24382
+ "#8eb6f5": "#60a5fa",
24383
+ "#60a5fa": "#60a5fa",
24384
+ "#2563eb": "#60a5fa",
24385
+ "#1d64d8": "#93c5fd",
24386
+ "#1d5cff": "#60a5fa",
24387
+ "#0f766e": "#2dd4bf",
24388
+ "#d7f4ef": "#134e4a",
24389
+ "rgba(37,99,235,0.05)": "rgba(96,165,250,0.16)",
24390
+ "rgba(37,99,235,0.06)": "rgba(96,165,250,0.18)",
24391
+ "rgba(37,99,235,0.08)": "rgba(96,165,250,0.22)",
24392
+ "rgba(37,99,235,0.12)": "rgba(96,165,250,0.26)",
24393
+ "rgba(37,99,235,0.18)": "rgba(96,165,250,0.30)",
24394
+ "rgba(37,99,235,0.28)": "rgba(96,165,250,0.38)",
24395
+ "rgba(239,246,255,0.88)": "rgba(30,64,175,0.72)",
24396
+ "rgba(148,163,184,0.45)": "rgba(148,163,184,0.52)"
24397
+ };
23785
24398
  let CanvasColorService = class CanvasColorService extends _univerjs_core.Disposable {
23786
24399
  constructor(_themeService) {
23787
24400
  super();
@@ -23793,7 +24406,9 @@ let CanvasColorService = class CanvasColorService extends _univerjs_core.Disposa
23793
24406
  if (!this._themeService.darkMode) return color;
23794
24407
  if (this._cache.has(color)) return this._cache.get(color);
23795
24408
  let cachedColor = "";
23796
- if (color.startsWith("#")) {
24409
+ const mappedColor = getDarkRenderColorOverride(color);
24410
+ if (mappedColor) cachedColor = mappedColor;
24411
+ else if (color.startsWith("#")) {
23797
24412
  cachedColor = rgbToHex(this._invertAlgo(hexToRgb(color)));
23798
24413
  if (color.length === 5) {
23799
24414
  const alpha = color.charAt(4);
@@ -23825,6 +24440,15 @@ let CanvasColorService = class CanvasColorService extends _univerjs_core.Disposa
23825
24440
  }
23826
24441
  };
23827
24442
  CanvasColorService = __decorate([__decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_core.ThemeService))], CanvasColorService);
24443
+ function getDarkRenderColorOverride(color) {
24444
+ var _DARK_RENDER_COLOR_OV;
24445
+ return (_DARK_RENDER_COLOR_OV = DARK_RENDER_COLOR_OVERRIDES[normalizeRenderColor(color)]) !== null && _DARK_RENDER_COLOR_OV !== void 0 ? _DARK_RENDER_COLOR_OV : null;
24446
+ }
24447
+ function normalizeRenderColor(color) {
24448
+ const trimmed = color.trim().toLowerCase();
24449
+ if (trimmed.startsWith("rgb")) return trimmed.replace(/\s+/g, "");
24450
+ return trimmed;
24451
+ }
23828
24452
  function hexToRgb(_hex) {
23829
24453
  const hex = _hex.replace(/^#/, "");
23830
24454
  let r;
@@ -23863,7 +24487,10 @@ let Engine = class Engine extends _univerjs_core.Disposable {
23863
24487
  sub.unsubscribe();
23864
24488
  this._rect$ = null;
23865
24489
  };
23866
- })).pipe((0, rxjs.shareReplay)(1));
24490
+ })).pipe((0, rxjs.shareReplay)({
24491
+ bufferSize: 1,
24492
+ refCount: true
24493
+ }));
23867
24494
  }
23868
24495
  get unitId() {
23869
24496
  return this._unitId;
@@ -24495,7 +25122,7 @@ Engine = __decorate([__decorateParam(2, ICanvasColorService)], Engine);
24495
25122
  //#endregion
24496
25123
  //#region package.json
24497
25124
  var name = "@univerjs/engine-render";
24498
- var version = "0.24.0";
25125
+ var version = "0.25.0-insiders.20260608-e4336f7";
24499
25126
 
24500
25127
  //#endregion
24501
25128
  //#region src/config/config.ts
@@ -24968,6 +25595,46 @@ const MINI_WIDTH_LIMIT = 20;
24968
25595
  const MINI_HEIGHT_LIMIT = 20;
24969
25596
  const DEFAULT_CONTROL_PLUS_INDEX = 5e3;
24970
25597
  const SINGLE_ACTIVE_OBJECT_TYPE_MAP = new Set([6]);
25598
+ const ROTATE_ICON_SIZE = 14;
25599
+ var TransformerRotateIcon = class extends Rect {
25600
+ _draw(ctx) {
25601
+ const iconWidth = this.width || ROTATE_ICON_SIZE;
25602
+ const iconHeight = this.height || ROTATE_ICON_SIZE;
25603
+ const scaleX = iconWidth / 24;
25604
+ const scaleY = iconHeight / 24;
25605
+ ctx.save();
25606
+ ctx.scale(scaleX, scaleY);
25607
+ ctx.beginPath();
25608
+ ctx.lineWidth = (this.strokeWidth || 2) / Math.max(scaleX, scaleY);
25609
+ ctx.lineCap = "round";
25610
+ ctx.lineJoin = "round";
25611
+ ctx.strokeStyle = this.stroke || "currentColor";
25612
+ ctx.moveTo(21, 12);
25613
+ ctx.arc(12, 12, 9, 0, Math.PI * 1.5, false);
25614
+ ctx.bezierCurveTo(14.52, 3, 16.93, 4, 18.74, 5.74);
25615
+ ctx.lineTo(21, 8);
25616
+ ctx.moveTo(21, 3);
25617
+ ctx.lineTo(21, 8);
25618
+ ctx.lineTo(16, 8);
25619
+ ctx.stroke();
25620
+ ctx.restore();
25621
+ }
25622
+ };
25623
+ var TransformerAnchor = class extends Rect {
25624
+ _draw(ctx) {
25625
+ if (!this.shadowColor || !this.shadowBlur && !this.shadowOffsetX && !this.shadowOffsetY) {
25626
+ Rect.drawWith(ctx, this);
25627
+ return;
25628
+ }
25629
+ ctx.save();
25630
+ ctx.shadowColor = this.shadowColor;
25631
+ ctx.shadowBlur = this.shadowBlur;
25632
+ ctx.shadowOffsetX = this.shadowOffsetX;
25633
+ ctx.shadowOffsetY = this.shadowOffsetY;
25634
+ Rect.drawWith(ctx, this);
25635
+ ctx.restore();
25636
+ }
25637
+ };
24971
25638
  /**
24972
25639
  * Transformer constructor. Transformer is a special type of group that allow you transform
24973
25640
  * primitives and shapes. Transforming tool is not changing `width` and `height` properties of nodes
@@ -24986,8 +25653,16 @@ var Transformer = class extends _univerjs_core.Disposable {
24986
25653
  _defineProperty(this, "rotationSnaps", []);
24987
25654
  _defineProperty(this, "rotationSnapTolerance", 5);
24988
25655
  _defineProperty(this, "rotateAnchorOffset", 50);
25656
+ _defineProperty(this, "rotateAnchorPosition", "top");
25657
+ _defineProperty(this, "rotateLineEnabled", true);
24989
25658
  _defineProperty(this, "rotateSize", 10);
24990
25659
  _defineProperty(this, "rotateCornerRadius", 10);
25660
+ _defineProperty(this, "rotateFill", void 0);
25661
+ _defineProperty(this, "rotateStroke", void 0);
25662
+ _defineProperty(this, "rotateStrokeWidth", void 0);
25663
+ _defineProperty(this, "rotateIconEnabled", false);
25664
+ _defineProperty(this, "rotateIconStroke", void 0);
25665
+ _defineProperty(this, "rotateIconStrokeWidth", 1.5);
24991
25666
  _defineProperty(this, "borderEnabled", true);
24992
25667
  _defineProperty(this, "borderStroke", "rgb(97, 97, 97)");
24993
25668
  _defineProperty(this, "borderStrokeWidth", 1);
@@ -24998,10 +25673,19 @@ var Transformer = class extends _univerjs_core.Disposable {
24998
25673
  _defineProperty(this, "anchorStrokeWidth", 1);
24999
25674
  _defineProperty(this, "anchorSize", 10);
25000
25675
  _defineProperty(this, "anchorCornerRadius", 10);
25676
+ _defineProperty(this, "anchorStyle", "default");
25677
+ _defineProperty(this, "anchorSideLongSize", 16);
25678
+ _defineProperty(this, "anchorSideShortSize", 5);
25679
+ _defineProperty(this, "anchorSideCornerRadius", 2.5);
25680
+ _defineProperty(this, "anchorShadowColor", void 0);
25681
+ _defineProperty(this, "anchorShadowBlur", 0);
25682
+ _defineProperty(this, "anchorShadowOffsetX", 0);
25683
+ _defineProperty(this, "anchorShadowOffsetY", 0);
25001
25684
  _defineProperty(this, "keepRatio", true);
25002
25685
  _defineProperty(this, "centeredScaling", false);
25003
25686
  _defineProperty(this, "zeroLeft", 0);
25004
25687
  _defineProperty(this, "zeroTop", 0);
25688
+ _defineProperty(this, "moveBoundaryEnabled", true);
25005
25689
  _defineProperty(
25006
25690
  this,
25007
25691
  /**
@@ -25115,9 +25799,9 @@ var Transformer = class extends _univerjs_core.Disposable {
25115
25799
  }
25116
25800
  _getConfig(applyObject) {
25117
25801
  const objectTransformerConfig = applyObject.transformerConfig;
25118
- let { isCropper, hoverEnabled, hoverEnterFunc, hoverLeaveFunc, resizeEnabled, rotateEnabled, rotationSnaps, rotationSnapTolerance, rotateAnchorOffset, rotateSize, rotateCornerRadius, borderEnabled, borderStroke, borderStrokeWidth, borderDash, borderSpacing, anchorFill, anchorStroke, anchorStrokeWidth, anchorSize, anchorCornerRadius, keepRatio, centeredScaling, enabledAnchors, flipEnabled, ignoreStroke, boundBoxFunc, useSingleNodeRotation, shouldOverdrawWholeArea } = this;
25802
+ let { isCropper, hoverEnabled, hoverEnterFunc, hoverLeaveFunc, resizeEnabled, rotateEnabled, rotationSnaps, rotationSnapTolerance, rotateAnchorOffset, rotateAnchorPosition, rotateLineEnabled, rotateSize, rotateCornerRadius, rotateFill, rotateStroke, rotateStrokeWidth, rotateIconEnabled, rotateIconStroke, rotateIconStrokeWidth, borderEnabled, borderStroke, borderStrokeWidth, borderDash, borderSpacing, anchorFill, anchorStroke, anchorStrokeWidth, anchorSize, anchorCornerRadius, anchorStyle, anchorSideLongSize, anchorSideShortSize, anchorSideCornerRadius, anchorShadowColor, anchorShadowBlur, anchorShadowOffsetX, anchorShadowOffsetY, keepRatio, centeredScaling, enabledAnchors, flipEnabled, ignoreStroke, boundBoxFunc, useSingleNodeRotation, shouldOverdrawWholeArea, moveBoundaryEnabled } = this;
25119
25803
  if (objectTransformerConfig != null) {
25120
- var _objectTransformerCon, _objectTransformerCon2, _objectTransformerCon3, _objectTransformerCon4, _objectTransformerCon5, _objectTransformerCon6, _objectTransformerCon7, _objectTransformerCon8, _objectTransformerCon9, _objectTransformerCon10, _objectTransformerCon11, _objectTransformerCon12, _objectTransformerCon13, _objectTransformerCon14, _objectTransformerCon15, _objectTransformerCon16, _objectTransformerCon17, _objectTransformerCon18, _objectTransformerCon19, _objectTransformerCon20, _objectTransformerCon21, _objectTransformerCon22, _objectTransformerCon23, _objectTransformerCon24, _objectTransformerCon25, _objectTransformerCon26, _objectTransformerCon27, _objectTransformerCon28, _objectTransformerCon29;
25804
+ var _objectTransformerCon, _objectTransformerCon2, _objectTransformerCon3, _objectTransformerCon4, _objectTransformerCon5, _objectTransformerCon6, _objectTransformerCon7, _objectTransformerCon8, _objectTransformerCon9, _objectTransformerCon10, _objectTransformerCon11, _objectTransformerCon12, _objectTransformerCon13, _objectTransformerCon14, _objectTransformerCon15, _objectTransformerCon16, _objectTransformerCon17, _objectTransformerCon18, _objectTransformerCon19, _objectTransformerCon20, _objectTransformerCon21, _objectTransformerCon22, _objectTransformerCon23, _objectTransformerCon24, _objectTransformerCon25, _objectTransformerCon26, _objectTransformerCon27, _objectTransformerCon28, _objectTransformerCon29, _objectTransformerCon30, _objectTransformerCon31, _objectTransformerCon32, _objectTransformerCon33, _objectTransformerCon34, _objectTransformerCon35, _objectTransformerCon36, _objectTransformerCon37, _objectTransformerCon38, _objectTransformerCon39, _objectTransformerCon40, _objectTransformerCon41, _objectTransformerCon42, _objectTransformerCon43, _objectTransformerCon44, _objectTransformerCon45, _objectTransformerCon46;
25121
25805
  isCropper = (_objectTransformerCon = objectTransformerConfig.isCropper) !== null && _objectTransformerCon !== void 0 ? _objectTransformerCon : isCropper;
25122
25806
  hoverEnabled = (_objectTransformerCon2 = objectTransformerConfig.hoverEnabled) !== null && _objectTransformerCon2 !== void 0 ? _objectTransformerCon2 : hoverEnabled;
25123
25807
  hoverEnterFunc = (_objectTransformerCon3 = objectTransformerConfig.hoverEnterFunc) !== null && _objectTransformerCon3 !== void 0 ? _objectTransformerCon3 : hoverEnterFunc;
@@ -25127,26 +25811,43 @@ var Transformer = class extends _univerjs_core.Disposable {
25127
25811
  rotationSnaps = (_objectTransformerCon7 = objectTransformerConfig.rotationSnaps) !== null && _objectTransformerCon7 !== void 0 ? _objectTransformerCon7 : rotationSnaps;
25128
25812
  rotationSnapTolerance = (_objectTransformerCon8 = objectTransformerConfig.rotationSnapTolerance) !== null && _objectTransformerCon8 !== void 0 ? _objectTransformerCon8 : rotationSnapTolerance;
25129
25813
  rotateAnchorOffset = (_objectTransformerCon9 = objectTransformerConfig.rotateAnchorOffset) !== null && _objectTransformerCon9 !== void 0 ? _objectTransformerCon9 : rotateAnchorOffset;
25130
- rotateSize = (_objectTransformerCon10 = objectTransformerConfig.rotateSize) !== null && _objectTransformerCon10 !== void 0 ? _objectTransformerCon10 : rotateSize;
25131
- rotateCornerRadius = (_objectTransformerCon11 = objectTransformerConfig.rotateCornerRadius) !== null && _objectTransformerCon11 !== void 0 ? _objectTransformerCon11 : rotateCornerRadius;
25132
- borderEnabled = (_objectTransformerCon12 = objectTransformerConfig.borderEnabled) !== null && _objectTransformerCon12 !== void 0 ? _objectTransformerCon12 : borderEnabled;
25133
- borderStroke = (_objectTransformerCon13 = objectTransformerConfig.borderStroke) !== null && _objectTransformerCon13 !== void 0 ? _objectTransformerCon13 : borderStroke;
25134
- borderStrokeWidth = (_objectTransformerCon14 = objectTransformerConfig.borderStrokeWidth) !== null && _objectTransformerCon14 !== void 0 ? _objectTransformerCon14 : borderStrokeWidth;
25135
- borderDash = (_objectTransformerCon15 = objectTransformerConfig.borderDash) !== null && _objectTransformerCon15 !== void 0 ? _objectTransformerCon15 : borderDash;
25136
- borderSpacing = (_objectTransformerCon16 = objectTransformerConfig.borderSpacing) !== null && _objectTransformerCon16 !== void 0 ? _objectTransformerCon16 : borderSpacing;
25137
- anchorFill = (_objectTransformerCon17 = objectTransformerConfig.anchorFill) !== null && _objectTransformerCon17 !== void 0 ? _objectTransformerCon17 : anchorFill;
25138
- anchorStroke = (_objectTransformerCon18 = objectTransformerConfig.anchorStroke) !== null && _objectTransformerCon18 !== void 0 ? _objectTransformerCon18 : anchorStroke;
25139
- anchorStrokeWidth = (_objectTransformerCon19 = objectTransformerConfig.anchorStrokeWidth) !== null && _objectTransformerCon19 !== void 0 ? _objectTransformerCon19 : anchorStrokeWidth;
25140
- anchorSize = (_objectTransformerCon20 = objectTransformerConfig.anchorSize) !== null && _objectTransformerCon20 !== void 0 ? _objectTransformerCon20 : anchorSize;
25141
- anchorCornerRadius = (_objectTransformerCon21 = objectTransformerConfig.anchorCornerRadius) !== null && _objectTransformerCon21 !== void 0 ? _objectTransformerCon21 : anchorCornerRadius;
25142
- keepRatio = (_objectTransformerCon22 = objectTransformerConfig.keepRatio) !== null && _objectTransformerCon22 !== void 0 ? _objectTransformerCon22 : keepRatio;
25143
- centeredScaling = (_objectTransformerCon23 = objectTransformerConfig.centeredScaling) !== null && _objectTransformerCon23 !== void 0 ? _objectTransformerCon23 : centeredScaling;
25144
- enabledAnchors = (_objectTransformerCon24 = objectTransformerConfig.enabledAnchors) !== null && _objectTransformerCon24 !== void 0 ? _objectTransformerCon24 : enabledAnchors;
25145
- flipEnabled = (_objectTransformerCon25 = objectTransformerConfig.flipEnabled) !== null && _objectTransformerCon25 !== void 0 ? _objectTransformerCon25 : flipEnabled;
25146
- ignoreStroke = (_objectTransformerCon26 = objectTransformerConfig.ignoreStroke) !== null && _objectTransformerCon26 !== void 0 ? _objectTransformerCon26 : ignoreStroke;
25147
- boundBoxFunc = (_objectTransformerCon27 = objectTransformerConfig.boundBoxFunc) !== null && _objectTransformerCon27 !== void 0 ? _objectTransformerCon27 : boundBoxFunc;
25148
- useSingleNodeRotation = (_objectTransformerCon28 = objectTransformerConfig.useSingleNodeRotation) !== null && _objectTransformerCon28 !== void 0 ? _objectTransformerCon28 : useSingleNodeRotation;
25149
- shouldOverdrawWholeArea = (_objectTransformerCon29 = objectTransformerConfig.shouldOverdrawWholeArea) !== null && _objectTransformerCon29 !== void 0 ? _objectTransformerCon29 : shouldOverdrawWholeArea;
25814
+ rotateAnchorPosition = (_objectTransformerCon10 = objectTransformerConfig.rotateAnchorPosition) !== null && _objectTransformerCon10 !== void 0 ? _objectTransformerCon10 : rotateAnchorPosition;
25815
+ rotateLineEnabled = (_objectTransformerCon11 = objectTransformerConfig.rotateLineEnabled) !== null && _objectTransformerCon11 !== void 0 ? _objectTransformerCon11 : rotateLineEnabled;
25816
+ rotateSize = (_objectTransformerCon12 = objectTransformerConfig.rotateSize) !== null && _objectTransformerCon12 !== void 0 ? _objectTransformerCon12 : rotateSize;
25817
+ rotateCornerRadius = (_objectTransformerCon13 = objectTransformerConfig.rotateCornerRadius) !== null && _objectTransformerCon13 !== void 0 ? _objectTransformerCon13 : rotateCornerRadius;
25818
+ rotateFill = (_objectTransformerCon14 = objectTransformerConfig.rotateFill) !== null && _objectTransformerCon14 !== void 0 ? _objectTransformerCon14 : rotateFill;
25819
+ rotateStroke = (_objectTransformerCon15 = objectTransformerConfig.rotateStroke) !== null && _objectTransformerCon15 !== void 0 ? _objectTransformerCon15 : rotateStroke;
25820
+ rotateStrokeWidth = (_objectTransformerCon16 = objectTransformerConfig.rotateStrokeWidth) !== null && _objectTransformerCon16 !== void 0 ? _objectTransformerCon16 : rotateStrokeWidth;
25821
+ rotateIconEnabled = (_objectTransformerCon17 = objectTransformerConfig.rotateIconEnabled) !== null && _objectTransformerCon17 !== void 0 ? _objectTransformerCon17 : rotateIconEnabled;
25822
+ rotateIconStroke = (_objectTransformerCon18 = objectTransformerConfig.rotateIconStroke) !== null && _objectTransformerCon18 !== void 0 ? _objectTransformerCon18 : rotateIconStroke;
25823
+ rotateIconStrokeWidth = (_objectTransformerCon19 = objectTransformerConfig.rotateIconStrokeWidth) !== null && _objectTransformerCon19 !== void 0 ? _objectTransformerCon19 : rotateIconStrokeWidth;
25824
+ borderEnabled = (_objectTransformerCon20 = objectTransformerConfig.borderEnabled) !== null && _objectTransformerCon20 !== void 0 ? _objectTransformerCon20 : borderEnabled;
25825
+ borderStroke = (_objectTransformerCon21 = objectTransformerConfig.borderStroke) !== null && _objectTransformerCon21 !== void 0 ? _objectTransformerCon21 : borderStroke;
25826
+ borderStrokeWidth = (_objectTransformerCon22 = objectTransformerConfig.borderStrokeWidth) !== null && _objectTransformerCon22 !== void 0 ? _objectTransformerCon22 : borderStrokeWidth;
25827
+ borderDash = (_objectTransformerCon23 = objectTransformerConfig.borderDash) !== null && _objectTransformerCon23 !== void 0 ? _objectTransformerCon23 : borderDash;
25828
+ borderSpacing = (_objectTransformerCon24 = objectTransformerConfig.borderSpacing) !== null && _objectTransformerCon24 !== void 0 ? _objectTransformerCon24 : borderSpacing;
25829
+ anchorFill = (_objectTransformerCon25 = objectTransformerConfig.anchorFill) !== null && _objectTransformerCon25 !== void 0 ? _objectTransformerCon25 : anchorFill;
25830
+ anchorStroke = (_objectTransformerCon26 = objectTransformerConfig.anchorStroke) !== null && _objectTransformerCon26 !== void 0 ? _objectTransformerCon26 : anchorStroke;
25831
+ anchorStrokeWidth = (_objectTransformerCon27 = objectTransformerConfig.anchorStrokeWidth) !== null && _objectTransformerCon27 !== void 0 ? _objectTransformerCon27 : anchorStrokeWidth;
25832
+ anchorSize = (_objectTransformerCon28 = objectTransformerConfig.anchorSize) !== null && _objectTransformerCon28 !== void 0 ? _objectTransformerCon28 : anchorSize;
25833
+ anchorCornerRadius = (_objectTransformerCon29 = objectTransformerConfig.anchorCornerRadius) !== null && _objectTransformerCon29 !== void 0 ? _objectTransformerCon29 : anchorCornerRadius;
25834
+ anchorStyle = (_objectTransformerCon30 = objectTransformerConfig.anchorStyle) !== null && _objectTransformerCon30 !== void 0 ? _objectTransformerCon30 : anchorStyle;
25835
+ anchorSideLongSize = (_objectTransformerCon31 = objectTransformerConfig.anchorSideLongSize) !== null && _objectTransformerCon31 !== void 0 ? _objectTransformerCon31 : anchorSideLongSize;
25836
+ anchorSideShortSize = (_objectTransformerCon32 = objectTransformerConfig.anchorSideShortSize) !== null && _objectTransformerCon32 !== void 0 ? _objectTransformerCon32 : anchorSideShortSize;
25837
+ anchorSideCornerRadius = (_objectTransformerCon33 = objectTransformerConfig.anchorSideCornerRadius) !== null && _objectTransformerCon33 !== void 0 ? _objectTransformerCon33 : anchorSideCornerRadius;
25838
+ anchorShadowColor = (_objectTransformerCon34 = objectTransformerConfig.anchorShadowColor) !== null && _objectTransformerCon34 !== void 0 ? _objectTransformerCon34 : anchorShadowColor;
25839
+ anchorShadowBlur = (_objectTransformerCon35 = objectTransformerConfig.anchorShadowBlur) !== null && _objectTransformerCon35 !== void 0 ? _objectTransformerCon35 : anchorShadowBlur;
25840
+ anchorShadowOffsetX = (_objectTransformerCon36 = objectTransformerConfig.anchorShadowOffsetX) !== null && _objectTransformerCon36 !== void 0 ? _objectTransformerCon36 : anchorShadowOffsetX;
25841
+ anchorShadowOffsetY = (_objectTransformerCon37 = objectTransformerConfig.anchorShadowOffsetY) !== null && _objectTransformerCon37 !== void 0 ? _objectTransformerCon37 : anchorShadowOffsetY;
25842
+ keepRatio = (_objectTransformerCon38 = objectTransformerConfig.keepRatio) !== null && _objectTransformerCon38 !== void 0 ? _objectTransformerCon38 : keepRatio;
25843
+ centeredScaling = (_objectTransformerCon39 = objectTransformerConfig.centeredScaling) !== null && _objectTransformerCon39 !== void 0 ? _objectTransformerCon39 : centeredScaling;
25844
+ enabledAnchors = (_objectTransformerCon40 = objectTransformerConfig.enabledAnchors) !== null && _objectTransformerCon40 !== void 0 ? _objectTransformerCon40 : enabledAnchors;
25845
+ flipEnabled = (_objectTransformerCon41 = objectTransformerConfig.flipEnabled) !== null && _objectTransformerCon41 !== void 0 ? _objectTransformerCon41 : flipEnabled;
25846
+ ignoreStroke = (_objectTransformerCon42 = objectTransformerConfig.ignoreStroke) !== null && _objectTransformerCon42 !== void 0 ? _objectTransformerCon42 : ignoreStroke;
25847
+ boundBoxFunc = (_objectTransformerCon43 = objectTransformerConfig.boundBoxFunc) !== null && _objectTransformerCon43 !== void 0 ? _objectTransformerCon43 : boundBoxFunc;
25848
+ useSingleNodeRotation = (_objectTransformerCon44 = objectTransformerConfig.useSingleNodeRotation) !== null && _objectTransformerCon44 !== void 0 ? _objectTransformerCon44 : useSingleNodeRotation;
25849
+ shouldOverdrawWholeArea = (_objectTransformerCon45 = objectTransformerConfig.shouldOverdrawWholeArea) !== null && _objectTransformerCon45 !== void 0 ? _objectTransformerCon45 : shouldOverdrawWholeArea;
25850
+ moveBoundaryEnabled = (_objectTransformerCon46 = objectTransformerConfig.moveBoundaryEnabled) !== null && _objectTransformerCon46 !== void 0 ? _objectTransformerCon46 : moveBoundaryEnabled;
25150
25851
  }
25151
25852
  return {
25152
25853
  isCropper,
@@ -25158,8 +25859,16 @@ var Transformer = class extends _univerjs_core.Disposable {
25158
25859
  rotationSnaps,
25159
25860
  rotationSnapTolerance,
25160
25861
  rotateAnchorOffset,
25862
+ rotateAnchorPosition,
25863
+ rotateLineEnabled,
25161
25864
  rotateSize,
25162
25865
  rotateCornerRadius,
25866
+ rotateFill,
25867
+ rotateStroke,
25868
+ rotateStrokeWidth,
25869
+ rotateIconEnabled,
25870
+ rotateIconStroke,
25871
+ rotateIconStrokeWidth,
25163
25872
  borderEnabled,
25164
25873
  borderStroke,
25165
25874
  borderStrokeWidth,
@@ -25170,6 +25879,14 @@ var Transformer = class extends _univerjs_core.Disposable {
25170
25879
  anchorStrokeWidth,
25171
25880
  anchorSize,
25172
25881
  anchorCornerRadius,
25882
+ anchorStyle,
25883
+ anchorSideLongSize,
25884
+ anchorSideShortSize,
25885
+ anchorSideCornerRadius,
25886
+ anchorShadowColor,
25887
+ anchorShadowBlur,
25888
+ anchorShadowOffsetX,
25889
+ anchorShadowOffsetY,
25173
25890
  keepRatio,
25174
25891
  centeredScaling,
25175
25892
  enabledAnchors,
@@ -25177,7 +25894,8 @@ var Transformer = class extends _univerjs_core.Disposable {
25177
25894
  ignoreStroke,
25178
25895
  boundBoxFunc,
25179
25896
  useSingleNodeRotation,
25180
- shouldOverdrawWholeArea
25897
+ shouldOverdrawWholeArea,
25898
+ moveBoundaryEnabled
25181
25899
  };
25182
25900
  }
25183
25901
  attachTo(applyObject) {
@@ -25286,6 +26004,10 @@ var Transformer = class extends _univerjs_core.Disposable {
25286
26004
  });
25287
26005
  }
25288
26006
  _checkMoveBoundary(moveObject, moveLeft, moveTop, ancestorLeft, ancestorTop, topSceneWidth, topSceneHeight) {
26007
+ if (this._getConfig(moveObject).moveBoundaryEnabled === false) return {
26008
+ moveLeft,
26009
+ moveTop
26010
+ };
25289
26011
  const { left, top, width, height } = moveObject;
25290
26012
  let resultMoveLeft = moveLeft;
25291
26013
  let resultMoveTop = moveTop;
@@ -25733,7 +26455,11 @@ var Transformer = class extends _univerjs_core.Disposable {
25733
26455
  _rotateMoving(moveOffsetX, moveOffsetY, centerX, centerY, agentOrigin) {
25734
26456
  const { ancestorScaleX, ancestorScaleY } = this._scene;
25735
26457
  if (this._moveBufferBlocker(moveOffsetX, moveOffsetY)) return;
25736
- let angle = agentOrigin + radToDeg(Math.atan2((moveOffsetY - centerY) / ancestorScaleY + this._viewportScrollY, (moveOffsetX - centerX) / ancestorScaleX + this._viewportScrollX) - Math.atan2((this._startOffsetY - centerY) / ancestorScaleY + this._viewportScrollY, (this._startOffsetX - centerX) / ancestorScaleX + this._viewportScrollX));
26458
+ const moveSceneX = moveOffsetX / ancestorScaleX + this._viewportScrollX;
26459
+ const moveSceneY = moveOffsetY / ancestorScaleY + this._viewportScrollY;
26460
+ const startSceneX = this._startOffsetX / ancestorScaleX + this._viewportScrollX;
26461
+ const startSceneY = this._startOffsetY / ancestorScaleY + this._viewportScrollY;
26462
+ let angle = agentOrigin + radToDeg(Math.atan2(moveSceneY - centerY, moveSceneX - centerX) - Math.atan2(startSceneY - centerY, startSceneX - centerX));
25737
26463
  if (angle < 0) angle = 360 + angle;
25738
26464
  angle %= 360;
25739
26465
  angle = this._smoothAccuracy(angle);
@@ -25790,6 +26516,23 @@ var Transformer = class extends _univerjs_core.Disposable {
25790
26516
  }
25791
26517
  return cursor;
25792
26518
  }
26519
+ _createRotateIcon(applyObject, zIndex, left, top) {
26520
+ const { rotateSize, rotateIconStroke, rotateIconStrokeWidth, borderStroke } = this._getConfig(applyObject);
26521
+ const iconOffset = (rotateSize - ROTATE_ICON_SIZE) / 2;
26522
+ return new TransformerRotateIcon(`__SpreadsheetTransformerRotate___ICON_${zIndex}`, {
26523
+ zIndex,
26524
+ evented: false,
26525
+ left: left + iconOffset,
26526
+ top: top + iconOffset,
26527
+ width: ROTATE_ICON_SIZE,
26528
+ height: ROTATE_ICON_SIZE,
26529
+ fill: null,
26530
+ stroke: rotateIconStroke !== null && rotateIconStroke !== void 0 ? rotateIconStroke : borderStroke,
26531
+ strokeWidth: rotateIconStrokeWidth,
26532
+ strokeLineCap: "round",
26533
+ strokeLineJoin: "round"
26534
+ });
26535
+ }
25793
26536
  _getCopperAnchorPosition(type, height, width, applyObject) {
25794
26537
  const { borderStrokeWidth, borderSpacing, anchorSize } = this._getConfig(applyObject);
25795
26538
  let left = 0;
@@ -25836,17 +26579,18 @@ var Transformer = class extends _univerjs_core.Disposable {
25836
26579
  };
25837
26580
  }
25838
26581
  _getRotateAnchorPosition(type, height, width, applyObject) {
25839
- const { rotateAnchorOffset, rotateSize, borderStrokeWidth, borderSpacing, anchorSize } = this._getConfig(applyObject);
26582
+ const { rotateAnchorOffset, rotateAnchorPosition, rotateSize, borderStrokeWidth, borderSpacing, anchorSize } = this._getConfig(applyObject);
26583
+ const isBottomRotateAnchor = rotateAnchorPosition === "bottom";
25840
26584
  let left = -anchorSize / 2;
25841
26585
  let top = -anchorSize / 2;
25842
26586
  switch (type) {
25843
26587
  case "__SpreadsheetTransformerRotate__":
25844
26588
  left = width / 2 - rotateSize / 2;
25845
- top = -rotateAnchorOffset - borderSpacing - borderStrokeWidth * 2 - rotateSize;
26589
+ top = isBottomRotateAnchor ? height + rotateAnchorOffset + borderSpacing + borderStrokeWidth * 2 : -rotateAnchorOffset - borderSpacing - borderStrokeWidth * 2 - rotateSize;
25846
26590
  break;
25847
26591
  case "__SpreadsheetTransformerRotateLine__":
25848
26592
  left = width / 2;
25849
- top = -rotateAnchorOffset - borderSpacing - borderStrokeWidth;
26593
+ top = isBottomRotateAnchor ? height + borderSpacing + borderStrokeWidth : -rotateAnchorOffset - borderSpacing - borderStrokeWidth;
25850
26594
  break;
25851
26595
  case "__SpreadsheetTransformerResizeLT__":
25852
26596
  left += -borderSpacing - borderStrokeWidth;
@@ -25886,21 +26630,43 @@ var Transformer = class extends _univerjs_core.Disposable {
25886
26630
  top
25887
26631
  };
25888
26632
  }
26633
+ _isMiddleAnchor(type) {
26634
+ return type === "__SpreadsheetTransformerResizeCT__" || type === "__SpreadsheetTransformerResizeLM__" || type === "__SpreadsheetTransformerResizeRM__" || type === "__SpreadsheetTransformerResizeCB__";
26635
+ }
26636
+ _getResizeAnchorProps(type, applyObject) {
26637
+ const { anchorSize, anchorCornerRadius, anchorStyle, anchorSideLongSize, anchorSideShortSize, anchorSideCornerRadius } = this._getConfig(applyObject);
26638
+ if (anchorStyle !== "canva" || !this._isMiddleAnchor(type)) return {
26639
+ width: anchorSize,
26640
+ height: anchorSize,
26641
+ radius: anchorStyle === "canva" ? anchorSize / 2 : anchorCornerRadius
26642
+ };
26643
+ const isHorizontal = type === "__SpreadsheetTransformerResizeCT__" || type === "__SpreadsheetTransformerResizeCB__";
26644
+ return {
26645
+ width: isHorizontal ? anchorSideLongSize : anchorSideShortSize,
26646
+ height: isHorizontal ? anchorSideShortSize : anchorSideLongSize,
26647
+ radius: anchorSideCornerRadius
26648
+ };
26649
+ }
25889
26650
  _createResizeAnchor(type, applyObject, zIndex) {
25890
26651
  const { height = 0, width = 0, scaleX = 1, scaleY = 1 } = applyObject.getState();
25891
- const { anchorFill, anchorStroke, anchorStrokeWidth, anchorCornerRadius, anchorSize } = this._getConfig(applyObject);
26652
+ const { anchorFill, anchorStroke, anchorStrokeWidth, anchorSize, anchorShadowColor, anchorShadowBlur, anchorShadowOffsetX, anchorShadowOffsetY } = this._getConfig(applyObject);
25892
26653
  const { left, top } = this._getRotateAnchorPosition(type, height, width, applyObject);
26654
+ const anchorProps = this._getResizeAnchorProps(type, applyObject);
25893
26655
  const cursor = this._getRotateAnchorCursor(type);
25894
- const anchor = new Rect(`${type}_${zIndex}`, {
26656
+ const anchor = new TransformerAnchor(`${type}_${zIndex}`, {
25895
26657
  zIndex: zIndex - 1,
25896
26658
  fill: anchorFill,
25897
26659
  stroke: anchorStroke,
25898
26660
  strokeWidth: anchorStrokeWidth,
25899
- width: anchorSize,
25900
- height: anchorSize,
25901
- radius: anchorCornerRadius,
25902
- left,
25903
- top
26661
+ width: anchorProps.width,
26662
+ height: anchorProps.height,
26663
+ radius: anchorProps.radius,
26664
+ left: left + (anchorSize - anchorProps.width) / 2,
26665
+ top: top + (anchorSize - anchorProps.height) / 2,
26666
+ shadowColor: anchorShadowColor,
26667
+ shadowBlur: anchorShadowBlur,
26668
+ shadowOffsetX: anchorShadowOffsetX,
26669
+ shadowOffsetY: anchorShadowOffsetY
25904
26670
  });
25905
26671
  this._attachHover(anchor, cursor, "default");
25906
26672
  return anchor;
@@ -26148,7 +26914,7 @@ var Transformer = class extends _univerjs_core.Disposable {
26148
26914
  _createControl(applyObject, isSkipOnCropper = true) {
26149
26915
  const { left = 0, top = 0, height = 0, width = 0 } = applyObject.getState();
26150
26916
  const angle = applyObject.angle;
26151
- const { isCropper, resizeEnabled, rotateEnabled, rotateAnchorOffset, rotateSize, rotateCornerRadius, borderEnabled, borderStroke, borderStrokeWidth, borderSpacing, enabledAnchors } = this._getConfig(applyObject);
26917
+ const { isCropper, resizeEnabled, rotateEnabled, rotateAnchorOffset, rotateLineEnabled, rotateSize, rotateCornerRadius, rotateFill, rotateStroke, rotateStrokeWidth, rotateIconEnabled, anchorShadowColor, anchorShadowBlur, anchorShadowOffsetX, anchorShadowOffsetY, borderEnabled, borderStroke, borderStrokeWidth, borderSpacing, enabledAnchors } = this._getConfig(applyObject);
26152
26918
  if (isSkipOnCropper && isCropper) return;
26153
26919
  const oKey = applyObject.oKey;
26154
26920
  const zIndex = this._selectedObjectMap.size + applyObject.maxZIndex + DEFAULT_CONTROL_PLUS_INDEX;
@@ -26179,19 +26945,26 @@ var Transformer = class extends _univerjs_core.Disposable {
26179
26945
  });
26180
26946
  const { left: rotateLeft, top: rotateTop } = this._getRotateAnchorPosition("__SpreadsheetTransformerRotate__", height, width, applyObject);
26181
26947
  const cursor = this._getRotateAnchorCursor("__SpreadsheetTransformerRotate__");
26182
- const rotate = new Rect(`__SpreadsheetTransformerRotate___${zIndex}`, {
26948
+ const rotate = new TransformerAnchor(`__SpreadsheetTransformerRotate___${zIndex}`, {
26183
26949
  zIndex: zIndex - 1,
26184
26950
  left: rotateLeft,
26185
26951
  top: rotateTop,
26186
26952
  height: rotateSize,
26187
26953
  width: rotateSize,
26188
26954
  radius: rotateCornerRadius,
26189
- strokeWidth: borderStrokeWidth * 2,
26190
- stroke: borderStroke
26955
+ fill: rotateFill,
26956
+ strokeWidth: rotateStrokeWidth !== null && rotateStrokeWidth !== void 0 ? rotateStrokeWidth : borderStrokeWidth * 2,
26957
+ stroke: rotateStroke !== null && rotateStroke !== void 0 ? rotateStroke : borderStroke,
26958
+ shadowColor: anchorShadowColor,
26959
+ shadowBlur: anchorShadowBlur,
26960
+ shadowOffsetX: anchorShadowOffsetX,
26961
+ shadowOffsetY: anchorShadowOffsetY
26191
26962
  });
26192
26963
  this._attachEventToRotate(rotate, applyObject);
26193
26964
  this._attachHover(rotate, cursor, "default");
26194
- groupElements.push(rotateLine, rotate);
26965
+ if (rotateLineEnabled) groupElements.push(rotateLine);
26966
+ groupElements.push(rotate);
26967
+ if (rotateIconEnabled) groupElements.push(this._createRotateIcon(applyObject, zIndex, rotateLeft, rotateTop));
26195
26968
  }
26196
26969
  }
26197
26970
  if (resizeEnabled) for (let i = 0, len = enabledAnchors.length; i < len; i++) {
@@ -27234,6 +28007,9 @@ let RenderUnit = class RenderUnit extends _univerjs_core.Disposable {
27234
28007
  this._renderContext.unit = null;
27235
28008
  this._renderContext.components.clear();
27236
28009
  }
28010
+ isDisposed() {
28011
+ return this._disposed;
28012
+ }
27237
28013
  /**
27238
28014
  * Get a dependency from the RenderUnit's injector.
27239
28015
  */
@@ -27579,6 +28355,7 @@ function subtractViewportRange(range1, range2) {
27579
28355
  //#endregion
27580
28356
  //#region src/viewport.ts
27581
28357
  const MOUSE_WHEEL_SPEED_SMOOTHING_FACTOR = 3;
28358
+ const WHEEL_CROSS_AXIS_LOCK_RATIO = 2;
27582
28359
  var Viewport = class {
27583
28360
  constructor(viewportKey, scene, props) {
27584
28361
  var _this$scene$getEngine;
@@ -28222,11 +28999,22 @@ var Viewport = class {
28222
28999
  let offsetX = 0;
28223
29000
  let offsetY = 0;
28224
29001
  const allWidth = this._scene.width;
28225
- offsetX = (this.width || 1) / allWidth * evt.deltaX;
29002
+ const viewWidth = this.width || 1;
29003
+ const scaleX = Math.abs(this._scene.scaleX) || 1;
29004
+ const scaleY = Math.abs(this._scene.scaleY) || 1;
29005
+ const rawOffsetX = evt.deltaX / scaleX;
29006
+ const rawOffsetY = evt.deltaY / scaleY;
29007
+ offsetX = viewWidth / allWidth * rawOffsetX;
28226
29008
  const allHeight = this._scene.height;
28227
29009
  const viewHeight = this.height || 1;
28228
- if (evt.shiftKey) offsetX = viewHeight / allHeight * evt.deltaY * MOUSE_WHEEL_SPEED_SMOOTHING_FACTOR;
28229
- else offsetY = viewHeight / allHeight * evt.deltaY;
29010
+ if (evt.shiftKey) offsetX = viewHeight / allHeight * evt.deltaY * MOUSE_WHEEL_SPEED_SMOOTHING_FACTOR / scaleX;
29011
+ else {
29012
+ offsetY = viewHeight / allHeight * rawOffsetY;
29013
+ const absOffsetX = Math.abs(rawOffsetX);
29014
+ const absOffsetY = Math.abs(rawOffsetY);
29015
+ if (absOffsetY >= absOffsetX * WHEEL_CROSS_AXIS_LOCK_RATIO) offsetX = 0;
29016
+ else if (absOffsetX >= absOffsetY * WHEEL_CROSS_AXIS_LOCK_RATIO) offsetY = 0;
29017
+ }
28230
29018
  const isLimitedStore = this.scrollByBarDeltaValue({
28231
29019
  x: offsetX,
28232
29020
  y: offsetY
@@ -28553,6 +29341,7 @@ var Viewport = class {
28553
29341
  }
28554
29342
  _calcDiffCacheBound(prevBound, currBound) {
28555
29343
  if (!prevBound) return [currBound];
29344
+ if (prevBound.right <= currBound.left || currBound.right <= prevBound.left || prevBound.bottom <= currBound.top || currBound.bottom <= prevBound.top) return [currBound];
28556
29345
  const additionalAreas = [];
28557
29346
  if (currBound.left < prevBound.left) additionalAreas.push({
28558
29347
  top: currBound.top,
@@ -28809,6 +29598,7 @@ exports.getCurrentTypeOfRenderer = getCurrentTypeOfRenderer;
28809
29598
  exports.getDPI = getDPI;
28810
29599
  exports.getDevicePixelRatio = getDevicePixelRatio;
28811
29600
  exports.getDocsSkeletonPageSize = getDocsSkeletonPageSize;
29601
+ exports.getDocsTableRenderViewport = getDocsTableRenderViewport;
28812
29602
  exports.getDrawingGroupState = getDrawingGroupState;
28813
29603
  exports.getFirstGrapheme = getFirstGrapheme;
28814
29604
  exports.getFontStyleString = getFontStyleString;
@@ -28818,6 +29608,7 @@ exports.getLastLine = getLastLine;
28818
29608
  exports.getLineOffset = getLineOffset;
28819
29609
  exports.getLineWidth = getLineWidth;
28820
29610
  exports.getLineWith = getLineWith;
29611
+ exports.getNextWheelZoomRatio = getNextWheelZoomRatio;
28821
29612
  exports.getNumberUnitValue = getNumberUnitValue;
28822
29613
  exports.getOffsetRectForDom = getOffsetRectForDom;
28823
29614
  exports.getPageFromPath = getPageFromPath;
@@ -28845,6 +29636,7 @@ exports.hasLatinExtendedB = hasLatinExtendedB;
28845
29636
  exports.hasLatinOneSupplement = hasLatinOneSupplement;
28846
29637
  exports.hasListGlyph = hasListGlyph;
28847
29638
  exports.hasSpace = hasSpace;
29639
+ exports.hasThai = hasThai;
28848
29640
  exports.hasTibetan = hasTibetan;
28849
29641
  exports.hasUnMergedCellInRow = hasUnMergedCellInRow;
28850
29642
  exports.inViewRanges = inViewRanges;
@@ -28883,6 +29675,7 @@ exports.renderTextWatermark = renderTextWatermark;
28883
29675
  exports.renderUserInfoWatermark = renderUserInfoWatermark;
28884
29676
  exports.renderWatermark = renderWatermark;
28885
29677
  exports.requestNewFrame = requestNewFrame;
29678
+ exports.setDocsTableRenderViewportProvider = setDocsTableRenderViewportProvider;
28886
29679
  exports.setLineType = setLineType;
28887
29680
  exports.sheetContentViewportKeys = sheetContentViewportKeys;
28888
29681
  exports.sheetHeaderViewportKeys = sheetHeaderViewportKeys;