@dan-uni/dan-any 1.0.0 → 1.1.1

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 (110) hide show
  1. package/dist/browser/157.min.js +14 -0
  2. package/dist/browser/42.min.js +45 -0
  3. package/dist/{index.min.js → browser/index.min.js} +371 -1003
  4. package/dist/browser/plugins/bili-dedupe.min.js +1 -0
  5. package/dist/browser/plugins/index.min.js +1 -0
  6. package/dist/browser/rslib-runtime.min.js +49 -0
  7. package/dist/{src → browser/src}/index.d.ts +6 -6
  8. package/dist/browser/src/plugins/bili-dedupe/index.d.ts +5 -0
  9. package/dist/browser/src/plugins/index.d.ts +2 -0
  10. package/dist/{src → browser/src}/utils/dm-gen.d.ts +3 -3
  11. package/dist/browser/src/utils/dm-gen.test.d.ts +1 -0
  12. package/dist/node/157.js +14 -0
  13. package/dist/node/42.js +45 -0
  14. package/dist/{index.js → node/index.js} +275 -894
  15. package/dist/node/plugins/bili-dedupe.js +1 -0
  16. package/dist/node/plugins/index.js +1 -0
  17. package/dist/node/rslib-runtime.js +37 -0
  18. package/dist/node/src/ass-gen/__tests__/canvas.test.d.ts +1 -0
  19. package/dist/node/src/ass-gen/__tests__/generate.test.d.ts +1 -0
  20. package/dist/node/src/ass-gen/ass/create.d.ts +4 -0
  21. package/dist/node/src/ass-gen/ass/dialogue.d.ts +16 -0
  22. package/dist/node/src/ass-gen/ass/event.d.ts +2 -0
  23. package/dist/node/src/ass-gen/ass/info.d.ts +8 -0
  24. package/dist/node/src/ass-gen/ass/raw.d.ts +14 -0
  25. package/dist/node/src/ass-gen/ass/style.d.ts +2 -0
  26. package/dist/node/src/ass-gen/config.d.ts +2 -0
  27. package/dist/node/src/ass-gen/index.d.ts +30 -0
  28. package/dist/node/src/ass-gen/types.d.ts +71 -0
  29. package/dist/node/src/ass-gen/util/color.d.ts +18 -0
  30. package/dist/node/src/ass-gen/util/danconvert.d.ts +5 -0
  31. package/dist/node/src/ass-gen/util/index.d.ts +4 -0
  32. package/dist/node/src/ass-gen/util/lang.d.ts +3 -0
  33. package/dist/node/src/ass-gen/util/layout.d.ts +4 -0
  34. package/dist/node/src/index.d.ts +255 -0
  35. package/dist/node/src/index.test.d.ts +1 -0
  36. package/dist/node/src/plugins/bili-dedupe/index.d.ts +5 -0
  37. package/dist/node/src/plugins/bili-dedupe/index.test.d.ts +1 -0
  38. package/dist/node/src/plugins/index.d.ts +2 -0
  39. package/dist/node/src/proto/gen/bili/dm_pb.d.ts +3426 -0
  40. package/dist/node/src/proto/gen/danuni_pb.d.ts +172 -0
  41. package/dist/node/src/utils/dm-gen.d.ts +309 -0
  42. package/dist/node/src/utils/dm-gen.test.d.ts +1 -0
  43. package/dist/node/src/utils/id-gen.d.ts +50 -0
  44. package/dist/node/src/utils/platform.d.ts +24 -0
  45. package/dist/{index.umd.min.js → umd/index.umd.min.js} +452 -990
  46. package/dist/umd/plugins/bili-dedupe.umd.min.js +79 -0
  47. package/dist/umd/plugins/index.umd.min.js +98 -0
  48. package/dist/umd/src/ass-gen/__tests__/canvas.test.d.ts +1 -0
  49. package/dist/umd/src/ass-gen/__tests__/generate.test.d.ts +1 -0
  50. package/dist/umd/src/ass-gen/ass/create.d.ts +4 -0
  51. package/dist/umd/src/ass-gen/ass/dialogue.d.ts +16 -0
  52. package/dist/umd/src/ass-gen/ass/event.d.ts +2 -0
  53. package/dist/umd/src/ass-gen/ass/info.d.ts +8 -0
  54. package/dist/umd/src/ass-gen/ass/raw.d.ts +14 -0
  55. package/dist/umd/src/ass-gen/ass/style.d.ts +2 -0
  56. package/dist/umd/src/ass-gen/config.d.ts +2 -0
  57. package/dist/umd/src/ass-gen/index.d.ts +30 -0
  58. package/dist/umd/src/ass-gen/types.d.ts +71 -0
  59. package/dist/umd/src/ass-gen/util/color.d.ts +18 -0
  60. package/dist/umd/src/ass-gen/util/danconvert.d.ts +5 -0
  61. package/dist/umd/src/ass-gen/util/index.d.ts +4 -0
  62. package/dist/umd/src/ass-gen/util/lang.d.ts +3 -0
  63. package/dist/umd/src/ass-gen/util/layout.d.ts +4 -0
  64. package/dist/umd/src/index.d.ts +255 -0
  65. package/dist/umd/src/index.test.d.ts +1 -0
  66. package/dist/umd/src/plugins/bili-dedupe/index.d.ts +5 -0
  67. package/dist/umd/src/plugins/bili-dedupe/index.test.d.ts +1 -0
  68. package/dist/umd/src/plugins/index.d.ts +2 -0
  69. package/dist/umd/src/proto/gen/bili/dm_pb.d.ts +3426 -0
  70. package/dist/umd/src/proto/gen/danuni_pb.d.ts +172 -0
  71. package/dist/umd/src/utils/dm-gen.d.ts +309 -0
  72. package/dist/umd/src/utils/dm-gen.test.d.ts +1 -0
  73. package/dist/umd/src/utils/id-gen.d.ts +50 -0
  74. package/dist/umd/src/utils/platform.d.ts +24 -0
  75. package/package.json +22 -22
  76. package/plugins/package.json +6 -0
  77. package/rslib.config.ts +13 -3
  78. package/src/ass-gen/util/index.ts +2 -2
  79. package/src/index.ts +6 -6
  80. package/src/plugins/bili-dedupe/index.test.ts +40 -0
  81. package/src/plugins/bili-dedupe/index.ts +19 -0
  82. package/src/plugins/index.ts +3 -0
  83. package/src/proto/gen/bili/dm_pb.ts +1 -1
  84. package/src/proto/gen/danuni_pb.ts +1 -1
  85. package/src/utils/dm-gen.test.ts +2 -2
  86. package/src/utils/dm-gen.ts +30 -5
  87. package/dist/{index.min.js.LICENSE.txt → browser/index.min.js.LICENSE.txt} +0 -0
  88. package/dist/{src → browser/src}/ass-gen/__tests__/canvas.test.d.ts +0 -0
  89. package/dist/{src → browser/src}/ass-gen/__tests__/generate.test.d.ts +0 -0
  90. package/dist/{src → browser/src}/ass-gen/ass/create.d.ts +0 -0
  91. package/dist/{src → browser/src}/ass-gen/ass/dialogue.d.ts +0 -0
  92. package/dist/{src → browser/src}/ass-gen/ass/event.d.ts +0 -0
  93. package/dist/{src → browser/src}/ass-gen/ass/info.d.ts +0 -0
  94. package/dist/{src → browser/src}/ass-gen/ass/raw.d.ts +0 -0
  95. package/dist/{src → browser/src}/ass-gen/ass/style.d.ts +0 -0
  96. package/dist/{src → browser/src}/ass-gen/config.d.ts +0 -0
  97. package/dist/{src → browser/src}/ass-gen/index.d.ts +0 -0
  98. package/dist/{src → browser/src}/ass-gen/types.d.ts +0 -0
  99. package/dist/{src → browser/src}/ass-gen/util/color.d.ts +0 -0
  100. package/dist/{src → browser/src}/ass-gen/util/danconvert.d.ts +0 -0
  101. package/dist/{src → browser/src}/ass-gen/util/index.d.ts +2 -2
  102. /package/dist/{src → browser/src}/ass-gen/util/lang.d.ts +0 -0
  103. /package/dist/{src → browser/src}/ass-gen/util/layout.d.ts +0 -0
  104. /package/dist/{src → browser/src}/index.test.d.ts +0 -0
  105. /package/dist/{src/utils/dm-gen.test.d.ts → browser/src/plugins/bili-dedupe/index.test.d.ts} +0 -0
  106. /package/dist/{src → browser/src}/proto/gen/bili/dm_pb.d.ts +0 -0
  107. /package/dist/{src → browser/src}/proto/gen/danuni_pb.d.ts +0 -0
  108. /package/dist/{src → browser/src}/utils/id-gen.d.ts +0 -0
  109. /package/dist/{src → browser/src}/utils/platform.d.ts +0 -0
  110. /package/dist/{index.umd.min.js.LICENSE.txt → umd/index.umd.min.js.LICENSE.txt} +0 -0
@@ -1,55 +1,17 @@
1
+ import { __webpack_require__ } from "./rslib-runtime.js";
1
2
  import "reflect-metadata/lite";
2
3
  import { IsDate, IsEmail, IsEnum, IsInt, IsNotEmpty, IsNumber, IsOptional, IsString, Max, Min, isEmail, isJSON, isObject, isString, validateOrReject } from "class-validator";
3
4
  import { XMLBuilder, XMLParser } from "fast-xml-parser";
4
5
  import json_bigint from "json-bigint";
5
6
  import { create, fromBinary, toBinary } from "@bufbuild/protobuf";
6
7
  import { file_google_protobuf_timestamp, timestampDate, timestampFromDate, timestampNow } from "@bufbuild/protobuf/wkt";
7
- import { fileDesc, messageDesc as codegenv2_messageDesc } from "@bufbuild/protobuf/codegenv2";
8
8
  import { Expose, plainToInstance } from "class-transformer";
9
9
  import hh_mm_ss from "hh-mm-ss";
10
10
  import jssha from "jssha";
11
11
  import { brotliCompressSync, brotliDecompressSync, gunzipSync, gzipSync } from "node:zlib";
12
12
  import { decode, encode as external_base16384_encode } from "base16384";
13
- var __webpack_require__ = {};
14
- (()=>{
15
- __webpack_require__.d = (exports, definition)=>{
16
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, {
17
- enumerable: true,
18
- get: definition[key]
19
- });
20
- };
21
- })();
22
- (()=>{
23
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
24
- })();
25
- (()=>{
26
- __webpack_require__.r = (exports)=>{
27
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports, Symbol.toStringTag, {
28
- value: 'Module'
29
- });
30
- Object.defineProperty(exports, '__esModule', {
31
- value: true
32
- });
33
- };
34
- })();
35
- var platform_namespaceObject = {};
36
- __webpack_require__.r(platform_namespaceObject);
37
- __webpack_require__.d(platform_namespaceObject, {
38
- PlatformDanmakuOnlySource: ()=>platform_PlatformDanmakuOnlySource,
39
- PlatformDanmakuOnlySources: ()=>PlatformDanmakuOnlySources,
40
- PlatformDanmakuSources: ()=>PlatformDanmakuSources,
41
- PlatformInfoSource: ()=>platform_PlatformInfoSource,
42
- PlatformInfoSources: ()=>PlatformInfoSources,
43
- PlatformSources: ()=>PlatformSources,
44
- PlatformVideoSource: ()=>platform_PlatformVideoSource,
45
- PlatformVideoSources: ()=>PlatformVideoSources
46
- });
47
- var id_gen_namespaceObject = {};
48
- __webpack_require__.r(id_gen_namespaceObject);
49
- __webpack_require__.d(id_gen_namespaceObject, {
50
- UniID: ()=>id_gen_UniID,
51
- createDMID: ()=>createDMID
52
- });
13
+ import { fileDesc, messageDesc as codegenv2_messageDesc } from "@bufbuild/protobuf/codegenv2";
14
+ import { platform_PlatformVideoSource, PlatformDanmakuSources, platform_PlatformDanmakuOnlySource } from "./42.js";
53
15
  var dm_gen_namespaceObject = {};
54
16
  __webpack_require__.r(dm_gen_namespaceObject);
55
17
  __webpack_require__.d(dm_gen_namespaceObject, {
@@ -60,45 +22,49 @@ __webpack_require__.d(dm_gen_namespaceObject, {
60
22
  Pools: ()=>dm_gen_Pools,
61
23
  UniDM: ()=>UniDM
62
24
  });
63
- var package_namespaceObject = JSON.parse('{"UU":"@dan-uni/dan-any","rE":"1.0.0","TB":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
64
- const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
65
- const DmSegMobileReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 30);
66
- const DmWebViewReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 39);
67
- const file_danuni = /*@__PURE__*/ fileDesc("CgxkYW51bmkucHJvdG8SEWRhbnVuaS5kYW5tYWt1LnYxIjIKCmxpc3REYW5SZXESCgoCSUQYASABKAkSEAoDc2VnGAIgASgFSACIAQFCBgoEX3NlZyLUAgoHRGFubWFrdRIMCgRTT0lEGAEgASgJEgwKBERNSUQYAiABKAkSEAoIcHJvZ3Jlc3MYAyABKAUSJQoEbW9kZRgEIAEoDjIXLmRhbnVuaS5kYW5tYWt1LnYxLk1vZGUSEAoIZm9udHNpemUYBSABKAUSDQoFY29sb3IYBiABKAUSEAoIc2VuZGVySUQYByABKAkSDwoHY29udGVudBgIIAEoCRIpCgVjdGltZRgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGd2VpZ2h0GAogASgFEiUKBHBvb2wYCyABKA4yFy5kYW51bmkuZGFubWFrdS52MS5Qb29sEgwKBGF0dHIYDCADKAkSFQoIcGxhdGZvcm0YDSABKAlIAIgBARISCgVleHRyYRgOIAEoCUgBiAEBQgsKCV9wbGF0Zm9ybUIICgZfZXh0cmEiPAoMRGFubWFrdVJlcGx5EiwKCGRhbm1ha3VzGAEgAygLMhouZGFudW5pLmRhbm1ha3UudjEuRGFubWFrdSo9CgRNb2RlEgoKBk5vcm1hbBAAEgoKBkJvdHRvbRABEgcKA1RvcBACEgsKB1JldmVyc2UQAxIHCgNFeHQQBCopCgRQb29sEgcKA0RlZhAAEgcKA1N1YhABEgcKA0FkdhACEgYKAkl4EAMyXQoORGFubWFrdVNlcnZpY2USSwoHbGlzdERhbhIdLmRhbnVuaS5kYW5tYWt1LnYxLmxpc3REYW5SZXEaHy5kYW51bmkuZGFubWFrdS52MS5EYW5tYWt1UmVwbHkiAFAAYgZwcm90bzM", [
68
- file_google_protobuf_timestamp
69
- ]);
70
- const DanmakuReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_danuni, 2);
71
- var platform_PlatformInfoSource = /*#__PURE__*/ function(PlatformInfoSource) {
72
- PlatformInfoSource["Bangumi"] = "bgm";
73
- PlatformInfoSource["TMDB"] = "tmdb";
74
- return PlatformInfoSource;
75
- }({});
76
- const PlatformInfoSources = Object.values(platform_PlatformInfoSource);
77
- var platform_PlatformVideoSource = /*#__PURE__*/ function(PlatformVideoSource) {
78
- PlatformVideoSource["Acfun"] = "acfun";
79
- PlatformVideoSource["Baha"] = "baha";
80
- PlatformVideoSource["Bilibili"] = "bili";
81
- PlatformVideoSource["BilibiliGlobal"] = "bglobal";
82
- PlatformVideoSource["Iqiyi"] = "iqiyi";
83
- PlatformVideoSource["Tencent"] = "tencent";
84
- PlatformVideoSource["Youku"] = "youku";
85
- return PlatformVideoSource;
86
- }({});
87
- const PlatformVideoSources = Object.values(platform_PlatformVideoSource);
88
- var platform_PlatformDanmakuOnlySource = /*#__PURE__*/ function(PlatformDanmakuOnlySource) {
89
- PlatformDanmakuOnlySource["DanDanPlay"] = "ddplay";
90
- PlatformDanmakuOnlySource["TuCao"] = "tucao";
91
- return PlatformDanmakuOnlySource;
92
- }({});
93
- const PlatformDanmakuOnlySources = Object.values(platform_PlatformDanmakuOnlySource);
94
- const PlatformDanmakuSources = [
95
- ...PlatformVideoSources,
96
- ...PlatformDanmakuOnlySources
97
- ];
98
- const PlatformSources = [
99
- ...PlatformInfoSources,
100
- ...PlatformDanmakuSources
101
- ];
25
+ var id_gen_namespaceObject = {};
26
+ __webpack_require__.r(id_gen_namespaceObject);
27
+ __webpack_require__.d(id_gen_namespaceObject, {
28
+ UniID: ()=>id_gen_UniID,
29
+ createDMID: ()=>createDMID
30
+ });
31
+ var package_namespaceObject = JSON.parse('{"UU":"@dan-uni/dan-any","rE":"1.1.1","TB":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
32
+ const color_pad = (s)=>s.length < 2 ? `0${s}` : s;
33
+ const decimalToHex = (n)=>color_pad(n.toString(16));
34
+ const isDarkColor = ({ r, g, b })=>0.299 * r + 0.587 * g + 0.114 * b < 0x30;
35
+ const WHITE = {
36
+ r: 255,
37
+ g: 255,
38
+ b: 255
39
+ };
40
+ const BLACK = {
41
+ r: 0,
42
+ g: 0,
43
+ b: 0
44
+ };
45
+ const hexColorToRGB = (hex)=>{
46
+ if (0 === hex.indexOf('#')) hex = hex.slice(1);
47
+ const [r, g, b] = 3 === hex.length ? hex.split('').map((c)=>c + c) : hex.match(/../g) || [];
48
+ return {
49
+ r: Number.parseInt(r, 16),
50
+ g: Number.parseInt(g, 16),
51
+ b: Number.parseInt(b, 16)
52
+ };
53
+ };
54
+ const formatColor = ({ r, g, b }, opacity)=>{
55
+ const color = [
56
+ b,
57
+ g,
58
+ r
59
+ ];
60
+ if (void 0 !== opacity) {
61
+ const alpha = Math.round((1 - opacity) * 255);
62
+ color.unshift(alpha);
63
+ }
64
+ return `&H${color.map(decimalToHex).join('').toUpperCase()}`;
65
+ };
66
+ const getDecoratingColor = (color)=>isDarkColor(color) ? WHITE : BLACK;
67
+ const isWhite = (color)=>255 === color.r && 255 === color.g && 255 === color.b;
102
68
  class id_gen_UniID {
103
69
  constructor(id, domain){
104
70
  this.id = id;
@@ -312,6 +278,13 @@ class UniDM {
312
278
  if (this === dan) return true;
313
279
  if (4 === this.mode || 4 === dan.mode) return false;
314
280
  if (!options?.skipDanuniMerge && (this.extra.danuni?.merge || dan.extra.danuni?.merge)) return false;
281
+ if (this.extra.bili?.dmid && dan.extra.bili?.dmid) {
282
+ if (this.extra.bili.dmid && !dan.extra.bili.dmid || !this.extra.bili.dmid && dan.extra.bili.dmid) return false;
283
+ if (this.extra.bili.dmid === dan.extra.bili.dmid) return true;
284
+ return false;
285
+ }
286
+ if (this.extra.artplayer && !dan.extra.artplayer || !this.extra.artplayer && dan.extra.artplayer) return false;
287
+ if (this.extra.artplayer && dan.extra.artplayer && (this.extra.artplayer.border !== dan.extra.artplayer.border || dm_gen_JSON.stringify(this.extra.artplayer.style) !== dm_gen_JSON.stringify(dan.extra.artplayer.style))) return false;
315
288
  const isSame = (k)=>this[k] === dan[k];
316
289
  const checks = [
317
290
  'SOID',
@@ -670,802 +643,202 @@ class UniDM {
670
643
  color: this.color,
671
644
  uid: this.senderID,
672
645
  m: this.content,
673
- cid: this.DMID ? Number.parseInt(Buffer.from(this.DMID).toString('hex'), 16) : 0
646
+ cid: this.DMID ? BigInt(`0x${Buffer.from(this.DMID).toString('hex')}`) : 0n
674
647
  };
675
648
  }
676
649
  constructor(){
677
650
  this.SOID = id_gen_UniID.fromNull().toString();
678
651
  this.progress = 0;
679
- this.mode = 0;
680
- this.fontsize = 25;
681
- this.color = 16777215;
682
- this.senderID = id_gen_UniID.fromNull().toString();
683
- this.content = '';
684
- this.ctime = new Date();
685
- this.weight = 0;
686
- this.pool = 0;
687
- this.attr = [];
688
- this.options = {
689
- dmid: createDMID
690
- };
691
- }
692
- }
693
- _ts_decorate([
694
- IsEmail({
695
- require_tld: false
696
- }),
697
- IsString(),
698
- IsNotEmpty(),
699
- Expose(),
700
- _ts_metadata("design:type", String)
701
- ], UniDM.prototype, "SOID", void 0);
702
- _ts_decorate([
703
- Min(0),
704
- IsNumber(),
705
- IsNotEmpty(),
706
- Expose(),
707
- _ts_metadata("design:type", Number)
708
- ], UniDM.prototype, "progress", void 0);
709
- _ts_decorate([
710
- IsEnum(dm_gen_Modes),
711
- IsNotEmpty(),
712
- Expose(),
713
- _ts_metadata("design:type", Number)
714
- ], UniDM.prototype, "mode", void 0);
715
- _ts_decorate([
716
- Max(64),
717
- Min(12),
718
- IsNumber(),
719
- IsNotEmpty(),
720
- Expose(),
721
- _ts_metadata("design:type", Number)
722
- ], UniDM.prototype, "fontsize", void 0);
723
- _ts_decorate([
724
- IsNumber(),
725
- IsNotEmpty(),
726
- Expose(),
727
- _ts_metadata("design:type", Number)
728
- ], UniDM.prototype, "color", void 0);
729
- _ts_decorate([
730
- IsEmail({
731
- require_tld: false
732
- }),
733
- IsString(),
734
- IsNotEmpty(),
735
- Expose(),
736
- _ts_metadata("design:type", String)
737
- ], UniDM.prototype, "senderID", void 0);
738
- _ts_decorate([
739
- IsString(),
740
- IsNotEmpty(),
741
- Expose(),
742
- _ts_metadata("design:type", String)
743
- ], UniDM.prototype, "content", void 0);
744
- _ts_decorate([
745
- IsDate(),
746
- IsNotEmpty(),
747
- Expose(),
748
- _ts_metadata("design:type", "undefined" == typeof Date ? Object : Date)
749
- ], UniDM.prototype, "ctime", void 0);
750
- _ts_decorate([
751
- Max(11),
752
- Min(0),
753
- IsInt(),
754
- IsNotEmpty(),
755
- Expose(),
756
- _ts_metadata("design:type", Number)
757
- ], UniDM.prototype, "weight", void 0);
758
- _ts_decorate([
759
- IsEnum(dm_gen_Pools),
760
- IsNotEmpty(),
761
- Expose(),
762
- _ts_metadata("design:type", Number)
763
- ], UniDM.prototype, "pool", void 0);
764
- _ts_decorate([
765
- IsEnum(dm_gen_DMAttr, {
766
- each: true
767
- }),
768
- IsNotEmpty(),
769
- Expose(),
770
- _ts_metadata("design:type", Array)
771
- ], UniDM.prototype, "attr", void 0);
772
- _ts_decorate([
773
- IsString(),
774
- IsOptional(),
775
- Expose(),
776
- _ts_metadata("design:type", Object)
777
- ], UniDM.prototype, "platform", void 0);
778
- _ts_decorate([
779
- IsString(),
780
- IsOptional(),
781
- Expose(),
782
- _ts_metadata("design:type", String)
783
- ], UniDM.prototype, "extraStr", void 0);
784
- _ts_decorate([
785
- IsString(),
786
- IsOptional(),
787
- Expose(),
788
- _ts_metadata("design:type", String)
789
- ], UniDM.prototype, "DMID", void 0);
790
- _ts_decorate([
791
- Expose(),
792
- _ts_metadata("design:type", Function),
793
- _ts_metadata("design:paramtypes", [
794
- "undefined" == typeof Options ? Object : Options
795
- ]),
796
- _ts_metadata("design:returntype", void 0)
797
- ], UniDM.prototype, "init", null);
798
- _ts_decorate([
799
- Expose(),
800
- _ts_metadata("design:type", Function),
801
- _ts_metadata("design:paramtypes", []),
802
- _ts_metadata("design:returntype", Promise)
803
- ], UniDM.prototype, "validate", null);
804
- _ts_decorate([
805
- Expose(),
806
- _ts_metadata("design:type", "undefined" == typeof Extra ? Object : Extra),
807
- _ts_metadata("design:paramtypes", [])
808
- ], UniDM.prototype, "extra", null);
809
- _ts_decorate([
810
- Expose(),
811
- _ts_metadata("design:type", void 0),
812
- _ts_metadata("design:paramtypes", [])
813
- ], UniDM.prototype, "isFrom3rdPlatform", null);
814
- _ts_decorate([
815
- Expose(),
816
- _ts_metadata("design:type", Function),
817
- _ts_metadata("design:paramtypes", []),
818
- _ts_metadata("design:returntype", void 0)
819
- ], UniDM.prototype, "toDMID", null);
820
- _ts_decorate([
821
- Expose(),
822
- _ts_metadata("design:type", Function),
823
- _ts_metadata("design:paramtypes", [
824
- Object,
825
- Object
826
- ]),
827
- _ts_metadata("design:returntype", Boolean)
828
- ], UniDM.prototype, "isSameAs", null);
829
- _ts_decorate([
830
- Expose(),
831
- _ts_metadata("design:type", Function),
832
- _ts_metadata("design:paramtypes", []),
833
- _ts_metadata("design:returntype", void 0)
834
- ], UniDM.prototype, "minify", null);
835
- _ts_decorate([
836
- Expose(),
837
- _ts_metadata("design:type", Function),
838
- _ts_metadata("design:paramtypes", [
839
- Object
840
- ]),
841
- _ts_metadata("design:returntype", void 0)
842
- ], UniDM.prototype, "downgradeAdvcancedDan", null);
843
- _ts_decorate([
844
- Expose(),
845
- _ts_metadata("design:type", Function),
846
- _ts_metadata("design:paramtypes", [
847
- Object
848
- ]),
849
- _ts_metadata("design:returntype", void 0)
850
- ], UniDM.prototype, "toBiliXML", null);
851
- _ts_decorate([
852
- Expose(),
853
- _ts_metadata("design:type", Function),
854
- _ts_metadata("design:paramtypes", []),
855
- _ts_metadata("design:returntype", "undefined" == typeof DMDplayer ? Object : DMDplayer)
856
- ], UniDM.prototype, "toDplayer", null);
857
- _ts_decorate([
858
- Expose(),
859
- _ts_metadata("design:type", Function),
860
- _ts_metadata("design:paramtypes", []),
861
- _ts_metadata("design:returntype", "undefined" == typeof DMArtplayer ? Object : DMArtplayer)
862
- ], UniDM.prototype, "toArtplayer", null);
863
- _ts_decorate([
864
- Expose(),
865
- _ts_metadata("design:type", Function),
866
- _ts_metadata("design:paramtypes", []),
867
- _ts_metadata("design:returntype", "undefined" == typeof DMDDplay ? Object : DMDDplay)
868
- ], UniDM.prototype, "toDDplay", null);
869
- const src_JSON = json_bigint({
870
- useNativeBigInt: true
871
- });
872
- const DanUniConvertTipTemplate = {
873
- meassage: 'Converted by DanUni!',
874
- version: `JS/TS ${package_namespaceObject.UU} (v${package_namespaceObject.rE})`
875
- };
876
- class UniPool {
877
- constructor(dans, options = {}, info = {
878
- fromConverted: false
879
- }){
880
- this.dans = dans;
881
- this.options = options;
882
- this.info = info;
883
- if (false !== options.dedupe) options.dedupe = true;
884
- if (this.options.dedupe) this.dedupe();
885
- }
886
- async pipe(fn) {
887
- return fn(this);
888
- }
889
- pipeSync(fn) {
890
- return fn(this);
891
- }
892
- get shared() {
893
- if (0 === this.dans.length) return {};
894
- const keys = [
895
- 'SOID',
896
- 'senderID',
897
- 'platform',
898
- 'pool',
899
- 'mode',
900
- 'color'
901
- ];
902
- const result = {};
903
- for (const key of keys){
904
- const sharedVal = this.getShared(key);
905
- if (void 0 !== sharedVal) result[key] = sharedVal;
906
- }
907
- return result;
908
- }
909
- getShared(key) {
910
- if (0 === this.dans.length) return;
911
- const firstVal = this.dans[0][key];
912
- for(let i = 1; i < this.dans.length; i++)if (this.dans[i][key] !== firstVal) return;
913
- return firstVal;
914
- }
915
- getStat(key) {
916
- const statMap = new Map();
917
- for (const dan of this.dans){
918
- const val = dan[key];
919
- statMap.set(val, (statMap.get(val) || 0) + 1);
920
- }
921
- return statMap;
922
- }
923
- getMost(key) {
924
- const stats = this.getStat(key);
925
- if (0 === stats.size) return {
926
- val: void 0,
927
- count: 0
928
- };
929
- let mostVal;
930
- let maxCount = 0;
931
- for (const [val, count] of stats.entries())if (count > maxCount) {
932
- maxCount = count;
933
- mostVal = val;
934
- }
935
- return {
936
- val: mostVal,
937
- count: maxCount
938
- };
939
- }
940
- get most() {
941
- const keys = [
942
- 'mode',
943
- 'fontsize',
944
- 'color',
945
- 'senderID',
946
- 'content',
947
- 'weight',
948
- 'pool',
949
- 'platform'
950
- ];
951
- const statMaps = new Map();
952
- for (const dan of this.dans)for (const key of keys){
953
- if (!statMaps.has(key)) statMaps.set(key, new Map());
954
- const statMap = statMaps.get(key);
955
- const val = dan[key];
956
- statMap.set(val, (statMap.get(val) || 0) + 1);
957
- }
958
- const result = {};
959
- for (const key of keys){
960
- const statMap = statMaps.get(key);
961
- let mostVal;
962
- let maxCount = 0;
963
- for (const [val, count] of statMap.entries())if (count > maxCount) {
964
- maxCount = count;
965
- mostVal = val;
966
- }
967
- result[key] = mostVal;
968
- }
969
- return {
970
- mode: result.mode,
971
- fontsize: result.fontsize,
972
- color: result.color,
973
- senderID: result.senderID,
974
- content: result.content,
975
- weight: result.weight,
976
- pool: result.pool,
977
- platform: result.platform
978
- };
979
- }
980
- static create(options) {
981
- return new UniPool([], options);
982
- }
983
- assign(dans) {
984
- if (dans instanceof UniPool) return new UniPool([
985
- ...this.dans,
986
- ...dans.dans
987
- ], {
988
- ...this.options,
989
- ...dans.options
990
- }, {
991
- ...this.info,
992
- ...dans.info
993
- });
994
- if (dans instanceof UniDM) return new UniPool([
995
- ...this.dans,
996
- dans
997
- ], this.options, this.info);
998
- if (Array.isArray(dans) && dans.every((d)=>d instanceof UniDM)) return new UniPool([
999
- ...this.dans,
1000
- ...dans
1001
- ], this.options, this.info);
1002
- return this;
1003
- }
1004
- split(key) {
1005
- if (this.getShared(key)) return [
1006
- this
1007
- ];
1008
- const set = new Set(this.dans.map((d)=>d[key]));
1009
- return [
1010
- ...set
1011
- ].map((v)=>new UniPool(this.dans.filter((d)=>d[key] === v), {
1012
- ...this.options,
1013
- dedupe: false
1014
- }, this.info));
1015
- }
1016
- dedupe() {
1017
- if (false !== this.options.dmid) {
1018
- const map = new Map();
1019
- this.dans.forEach((d)=>map.set(d.DMID || d.toDMID(), d));
1020
- this.dans = [
1021
- ...map.values()
1022
- ];
1023
- }
1024
- this.options.dedupe = false;
1025
- }
1026
- merge(lifetime = 0) {
1027
- if (!this.getShared('SOID')) {
1028
- console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
1029
- return this;
1030
- }
1031
- if (lifetime <= 0) return this;
1032
- const result = [];
1033
- const cache = {};
1034
- const mergeObj = {};
1035
- for (const danmaku of this.dans){
1036
- const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
1037
- const cached = cache[key];
1038
- if (cached && danmaku.progress - cached.progress <= lifetime && danmaku.isSameAs(cached, {
1039
- skipDanuniMerge: true
1040
- })) {
1041
- mergeObj[key].senders.push(danmaku.senderID);
1042
- mergeObj[key].count = mergeObj[key].senders.length;
1043
- mergeObj[key].taolu_count = mergeObj[key].count;
1044
- mergeObj[key].taolu_senders = mergeObj[key].senders;
1045
- mergeObj[key].duration = Number.parseFloat((danmaku.progress - cached.progress).toFixed(3));
1046
- cache[key] = danmaku;
1047
- } else {
1048
- mergeObj[key] = {
1049
- count: 1,
1050
- duration: 0,
1051
- senders: [
1052
- danmaku.senderID
1053
- ],
1054
- taolu_count: 1,
1055
- taolu_senders: [
1056
- danmaku.senderID
1057
- ]
1058
- };
1059
- cache[key] = danmaku;
1060
- result.push(danmaku);
1061
- }
1062
- }
1063
- for (const danmaku of result){
1064
- const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
1065
- const mergeData = mergeObj[key];
1066
- const extra = danmaku.extra;
1067
- if (mergeData.count > 1) {
1068
- danmaku.senderID = 'merge[bot]@dan-any';
1069
- if (danmaku.attr) {
1070
- if (!danmaku.attr.includes(dm_gen_DMAttr.Protect)) danmaku.attr.push(dm_gen_DMAttr.Protect);
1071
- } else danmaku.attr = [
1072
- dm_gen_DMAttr.Protect
1073
- ];
1074
- extra.danuni = extra.danuni || {};
1075
- extra.danuni.merge = mergeData;
1076
- danmaku.extraStr = src_JSON.stringify(extra);
1077
- } else {
1078
- if (extra.danuni?.merge) {
1079
- delete extra.danuni.merge;
1080
- if (0 === Object.keys(extra.danuni).length) delete extra.danuni;
1081
- }
1082
- danmaku.extraStr = Object.keys(extra).length > 0 ? src_JSON.stringify(extra) : void 0;
1083
- }
1084
- }
1085
- return new UniPool(result, this.options, this.info);
1086
- }
1087
- minify() {
1088
- return this.dans.map((d)=>d.minify());
1089
- }
1090
- static import(file, options, mod) {
1091
- if (!mod) mod = [
1092
- 'json',
1093
- 'str',
1094
- 'bin'
1095
- ];
1096
- const err = '无法识别该文件,请手动指定格式!';
1097
- const parseJSON = (json)=>{
1098
- try {
1099
- if (Array.isArray(json) && json.every((d)=>d.SOID)) return {
1100
- pool: new UniPool(json, options),
1101
- fmt: 'danuni.json'
1102
- };
1103
- if (json.danmuku && json.danmuku.every((d)=>d.text)) return {
1104
- pool: this.fromArtplayer(json, json.danuni?.data ?? '', void 0, options),
1105
- fmt: 'artplayer.json'
1106
- };
1107
- if (json.count && json.comments && Array.isArray(json.comments) && json.comments.every((d)=>d.m)) return {
1108
- pool: this.fromDDPlay(json, json.danuni?.data ?? '', options),
1109
- fmt: 'ddplay.json'
1110
- };
1111
- else if (0 == json.code && json.data && Array.isArray(json.data) && json.data.every((d)=>Array.isArray(d))) return {
1112
- pool: this.fromDplayer(json, json.danuni?.data ?? '', void 0, options),
1113
- fmt: 'dplayer.json'
1114
- };
1115
- else if (0 == json.code && '0' == json.message && json.data && json.data.page && json.data.result && Array.isArray(json.data.result) && json.data.result.every((d)=>d.id && d.oid)) return {
1116
- pool: this.fromBiliUp(json, options),
1117
- fmt: 'bili.up.json'
1118
- };
1119
- } catch {}
1120
- };
1121
- const parseStr = (file)=>{
1122
- if (mod.includes('json')) try {
1123
- if (isJSON(file)) {
1124
- const json = src_JSON.parse(file);
1125
- return parseJSON(json);
1126
- }
1127
- } catch {}
1128
- if (mod.includes('str')) {
1129
- try {
1130
- const xmlParser = new XMLParser({
1131
- ignoreAttributes: false
1132
- });
1133
- const xml = xmlParser.parse(file);
1134
- if (xml?.i?.d) return {
1135
- pool: this.fromBiliXML(file, options),
1136
- fmt: 'bili.xml'
1137
- };
1138
- } catch {}
1139
- try {
1140
- return {
1141
- pool: this.fromASS(file, options),
1142
- fmt: 'common.ass'
1143
- };
1144
- } catch {}
1145
- }
1146
- };
1147
- let errmesg;
1148
- if (isObject(file)) {
1149
- if (file instanceof ArrayBuffer || file instanceof Uint8Array) {
1150
- if (mod.includes('bin')) {
1151
- try {
1152
- return {
1153
- pool: this.fromPb(file),
1154
- fmt: 'danuni.pb.bin'
1155
- };
1156
- } catch {}
1157
- try {
1158
- return {
1159
- pool: this.fromBiliGrpc(file),
1160
- fmt: 'bili.pb.bin'
1161
- };
1162
- } catch {}
1163
- try {
1164
- return {
1165
- pool: this.fromBiliCommandGrpc(file),
1166
- fmt: 'bili.cmd.pb.bin'
1167
- };
1168
- } catch {}
1169
- }
1170
- try {
1171
- const fileStr = new TextDecoder().decode(file);
1172
- const prStr = parseStr(fileStr);
1173
- if (prStr) return prStr;
1174
- errmesg = `${err}(定位: bin->string)`;
1175
- } catch {}
1176
- } else if (mod.includes('json')) {
1177
- const prJSON = parseJSON(file);
1178
- if (!prJSON) throw new Error(`${err}(定位: json)`);
1179
- return prJSON;
1180
- }
1181
- } else if (isString(file)) {
1182
- const prStr = parseStr(file);
1183
- if (!prStr) throw new Error(`${err}(定位: string)`);
1184
- return prStr;
1185
- }
1186
- throw new Error(errmesg ?? err);
1187
- }
1188
- convert2(format, continue_on_error = false) {
1189
- switch(format){
1190
- case 'danuni.json':
1191
- return this.dans;
1192
- case 'danuni.pb.bin':
1193
- return this.toPb();
1194
- case 'bili.xml':
1195
- return this.toBiliXML();
1196
- case 'dplayer.json':
1197
- return this.toDplayer();
1198
- case 'artplayer.json':
1199
- return this.toArtplayer();
1200
- case 'ddplay.json':
1201
- return this.toDDplay();
1202
- default:
1203
- {
1204
- const message = '(err) Unknown format or unsupported now!';
1205
- if (continue_on_error) return message;
1206
- throw new Error(message);
1207
- }
1208
- }
1209
- }
1210
- static fromPb(bin, options) {
1211
- const data = fromBinary(DanmakuReplySchema, new Uint8Array(bin));
1212
- return new UniPool(data.danmakus.map((d)=>UniDM.create({
1213
- ...d,
1214
- progress: d.progress / 1000,
1215
- mode: d.mode,
1216
- ctime: timestampDate(d.ctime || timestampNow()),
1217
- pool: d.pool,
1218
- attr: d.attr,
1219
- extra: void 0,
1220
- extraStr: d.extra
1221
- }, options)), options);
1222
- }
1223
- toPb() {
1224
- return toBinary(DanmakuReplySchema, create(DanmakuReplySchema, {
1225
- danmakus: this.dans.map((d)=>({
1226
- SOID: d.SOID,
1227
- DMID: d.DMID,
1228
- progress: Math.round(1000 * d.progress),
1229
- mode: d.mode,
1230
- fontsize: d.fontsize,
1231
- color: d.color,
1232
- senderID: d.senderID,
1233
- content: d.content,
1234
- ctime: timestampFromDate(d.ctime),
1235
- weight: d.weight,
1236
- pool: d.pool,
1237
- attr: d.attr,
1238
- platform: d.platform,
1239
- extra: d.extraStr
1240
- }))
1241
- }));
1242
- }
1243
- static fromBiliXML(xml, options) {
1244
- const parser = new XMLParser({
1245
- ignoreAttributes: false
1246
- });
1247
- const oriData = parser.parse(xml);
1248
- const dans = oriData.i.d;
1249
- const fromConverted = !!oriData.i.danuni;
1250
- const cid = BigInt(oriData.i.chatid);
1251
- return new UniPool(dans.map((d)=>UniDM.fromBili(UniDM.parseBiliSingle(d['@_p'], d['#text']), cid, options, fromConverted ? oriData.i.danuni?.data : void 0)).filter((d)=>null !== d), options, {
1252
- fromConverted
1253
- });
1254
- }
1255
- toBiliXML(options) {
1256
- const genCID = (id)=>{
1257
- const UniID = id_gen_UniID.fromString(id);
1258
- if (UniID.domain === platform_PlatformVideoSource.Bilibili) {
1259
- const cid = UniID.id.replaceAll(`def_${platform_PlatformVideoSource.Bilibili}+`, '');
1260
- if (cid) return cid;
1261
- }
1262
- return !options?.cid || id;
1263
- };
1264
- if (options?.avoidSenderIDWithAt) {
1265
- const ok = this.dans.every((d)=>d.senderID.endsWith(`@${platform_PlatformVideoSource.Bilibili}`));
1266
- if (!ok) throw new Error('存在其他来源的senderID,请关闭该功能再试!');
1267
- }
1268
- const builder = new XMLBuilder({
1269
- ignoreAttributes: false
1270
- });
1271
- return builder.build({
1272
- '?xml': {
1273
- '@_version': '1.0',
1274
- '@_encoding': 'UTF-8'
1275
- },
1276
- i: {
1277
- chatserver: 'chat.bilibili.com',
1278
- chatid: genCID(this.dans[0].SOID),
1279
- mission: 0,
1280
- maxlimit: this.dans.length,
1281
- state: 0,
1282
- real_name: 0,
1283
- source: 'k-v',
1284
- danuni: {
1285
- ...DanUniConvertTipTemplate,
1286
- data: this.getShared('SOID')
1287
- },
1288
- d: this.dans.map((dan)=>dan.toBiliXML(options))
1289
- }
1290
- });
1291
- }
1292
- static fromBiliGrpc(bin, options) {
1293
- const data = fromBinary(DmSegMobileReplySchema, new Uint8Array(bin));
1294
- const json = data.elems;
1295
- return new UniPool(json.map((d)=>UniDM.fromBili({
1296
- ...d,
1297
- progress: d.progress / 1000
1298
- }, d.oid, options)), options);
1299
- }
1300
- static fromBiliCommandGrpc(bin, options) {
1301
- const data = fromBinary(DmWebViewReplySchema, new Uint8Array(bin));
1302
- const json = data.commandDms;
1303
- return new UniPool(json.map((d)=>UniDM.fromBiliCommand(d, d.oid, options)), options);
1304
- }
1305
- static fromBiliUp(json, options) {
1306
- return new UniPool(json.data.result.map((d)=>{
1307
- const attrBin = d.attrs ? d.attrs.split(',').map(Number).reduce((bin, bitPosition)=>bin | 1 << bitPosition - 1, 0) : 0;
1308
- return UniDM.fromBili({
1309
- id: BigInt(d.id_str || d.id),
1310
- progress: d.progress / 1000,
1311
- mode: d.mode,
1312
- fontsize: d.fontsize,
1313
- color: Number.parseInt(d.color, 16),
1314
- mid: d.mid,
1315
- midHash: d.mid_hash,
1316
- content: d.msg,
1317
- ctime: BigInt(d.ctime),
1318
- pool: d.pool,
1319
- attr: attrBin,
1320
- oid: BigInt(d.oid)
1321
- }, BigInt(d.oid), options);
1322
- }), options);
1323
- }
1324
- static fromDplayer(json, playerID, domain = 'other', options) {
1325
- return new UniPool(json.data.map((d)=>UniDM.fromDplayer({
1326
- content: d[4],
1327
- progress: d[0],
1328
- mode: d[1],
1329
- color: d[2],
1330
- midHash: d[3]
1331
- }, playerID, domain, options)), options, {
1332
- fromConverted: !!json.danuni
1333
- });
1334
- }
1335
- toDplayer() {
1336
- return {
1337
- code: 0,
1338
- danuni: {
1339
- ...DanUniConvertTipTemplate,
1340
- data: this.dans[0].SOID.split('@')[0]
1341
- },
1342
- data: this.dans.map((dan)=>{
1343
- const d = dan.toDplayer();
1344
- return [
1345
- d.progress,
1346
- d.mode,
1347
- d.color,
1348
- d.midHash,
1349
- d.content
1350
- ];
1351
- })
1352
- };
1353
- }
1354
- static fromArtplayer(json, playerID, domain = 'other', options) {
1355
- return new UniPool(json.danmuku.map((d)=>UniDM.fromArtplayer({
1356
- content: d.text,
1357
- progress: d.time || 0,
1358
- mode: d.mode || 0,
1359
- color: Number((d.color || 'FFFFFF').replace('#', '0x')),
1360
- style: d.style
1361
- }, playerID, domain, options)), options, {
1362
- fromConverted: !!json.danuni
1363
- });
1364
- }
1365
- toArtplayer() {
1366
- return {
1367
- danuni: {
1368
- ...DanUniConvertTipTemplate,
1369
- data: this.dans[0].SOID.split('@')[0]
1370
- },
1371
- danmuku: this.dans.map((dan)=>{
1372
- const d = dan.toArtplayer();
1373
- return {
1374
- text: d.content,
1375
- time: d.progress,
1376
- mode: d.mode,
1377
- color: `#${d.color.toString(16).toUpperCase() || 'FFFFFF'}`,
1378
- border: d.border,
1379
- style: d.style
1380
- };
1381
- })
1382
- };
1383
- }
1384
- static fromDDPlay(json, episodeId, options) {
1385
- return new UniPool(json.comments.map((d)=>{
1386
- const p_arr = d.p.split(',');
1387
- return UniDM.fromDDplay({
1388
- cid: d.cid,
1389
- color: Number.parseInt(p_arr[2]),
1390
- m: d.m,
1391
- mode: Number.parseInt(p_arr[1]),
1392
- progress: Number.parseFloat(p_arr[0]),
1393
- uid: p_arr[3]
1394
- }, episodeId, void 0, options);
1395
- }), options, {
1396
- fromConverted: !!json.danuni
1397
- });
1398
- }
1399
- toDDplay() {
1400
- const episodeId = this.dans[0].SOID.split('@')[0].replaceAll(`def_${platform_PlatformDanmakuOnlySource.DanDanPlay}+`, '');
1401
- return {
1402
- danuni: {
1403
- ...DanUniConvertTipTemplate,
1404
- data: episodeId
1405
- },
1406
- count: this.dans.length,
1407
- comments: this.dans.map((dan)=>{
1408
- const d = dan.toDDplay();
1409
- return {
1410
- cid: d.cid,
1411
- p: `${d.progress},${d.mode},${d.color},${d.uid}`,
1412
- m: d.m
1413
- };
1414
- })
1415
- };
1416
- }
1417
- static fromASS(ass, options) {
1418
- return parseAssRawField(ass, options);
1419
- }
1420
- toASS(canvasCtx, options) {
1421
- const defaultOptions = {
1422
- substyle: {}
652
+ this.mode = 0;
653
+ this.fontsize = 25;
654
+ this.color = 16777215;
655
+ this.senderID = id_gen_UniID.fromNull().toString();
656
+ this.content = '';
657
+ this.ctime = new Date();
658
+ this.weight = 0;
659
+ this.pool = 0;
660
+ this.attr = [];
661
+ this.options = {
662
+ dmid: createDMID
1423
663
  };
1424
- const finalOptions = options ?? defaultOptions;
1425
- const fn = this.getShared('SOID');
1426
- return generateASS(this, {
1427
- filename: fn,
1428
- title: fn,
1429
- ...finalOptions
1430
- }, canvasCtx);
1431
664
  }
1432
665
  }
1433
- const color_pad = (s)=>s.length < 2 ? `0${s}` : s;
1434
- const decimalToHex = (n)=>color_pad(n.toString(16));
1435
- const isDarkColor = ({ r, g, b })=>0.299 * r + 0.587 * g + 0.114 * b < 0x30;
1436
- const WHITE = {
1437
- r: 255,
1438
- g: 255,
1439
- b: 255
1440
- };
1441
- const BLACK = {
1442
- r: 0,
1443
- g: 0,
1444
- b: 0
1445
- };
1446
- const hexColorToRGB = (hex)=>{
1447
- if (0 === hex.indexOf('#')) hex = hex.slice(1);
1448
- const [r, g, b] = 3 === hex.length ? hex.split('').map((c)=>c + c) : hex.match(/../g) || [];
1449
- return {
1450
- r: Number.parseInt(r, 16),
1451
- g: Number.parseInt(g, 16),
1452
- b: Number.parseInt(b, 16)
1453
- };
1454
- };
1455
- const formatColor = ({ r, g, b }, opacity)=>{
1456
- const color = [
1457
- b,
1458
- g,
1459
- r
1460
- ];
1461
- if (void 0 !== opacity) {
1462
- const alpha = Math.round((1 - opacity) * 255);
1463
- color.unshift(alpha);
1464
- }
1465
- return `&H${color.map(decimalToHex).join('').toUpperCase()}`;
1466
- };
1467
- const getDecoratingColor = (color)=>isDarkColor(color) ? WHITE : BLACK;
1468
- const isWhite = (color)=>255 === color.r && 255 === color.g && 255 === color.b;
666
+ _ts_decorate([
667
+ IsEmail({
668
+ require_tld: false
669
+ }),
670
+ IsString(),
671
+ IsNotEmpty(),
672
+ Expose(),
673
+ _ts_metadata("design:type", String)
674
+ ], UniDM.prototype, "SOID", void 0);
675
+ _ts_decorate([
676
+ Min(0),
677
+ IsNumber(),
678
+ IsNotEmpty(),
679
+ Expose(),
680
+ _ts_metadata("design:type", Number)
681
+ ], UniDM.prototype, "progress", void 0);
682
+ _ts_decorate([
683
+ IsEnum(dm_gen_Modes),
684
+ IsNotEmpty(),
685
+ Expose(),
686
+ _ts_metadata("design:type", Number)
687
+ ], UniDM.prototype, "mode", void 0);
688
+ _ts_decorate([
689
+ Max(64),
690
+ Min(12),
691
+ IsNumber(),
692
+ IsNotEmpty(),
693
+ Expose(),
694
+ _ts_metadata("design:type", Number)
695
+ ], UniDM.prototype, "fontsize", void 0);
696
+ _ts_decorate([
697
+ IsNumber(),
698
+ IsNotEmpty(),
699
+ Expose(),
700
+ _ts_metadata("design:type", Number)
701
+ ], UniDM.prototype, "color", void 0);
702
+ _ts_decorate([
703
+ IsEmail({
704
+ require_tld: false
705
+ }),
706
+ IsString(),
707
+ IsNotEmpty(),
708
+ Expose(),
709
+ _ts_metadata("design:type", String)
710
+ ], UniDM.prototype, "senderID", void 0);
711
+ _ts_decorate([
712
+ IsString(),
713
+ IsNotEmpty(),
714
+ Expose(),
715
+ _ts_metadata("design:type", String)
716
+ ], UniDM.prototype, "content", void 0);
717
+ _ts_decorate([
718
+ IsDate(),
719
+ IsNotEmpty(),
720
+ Expose(),
721
+ _ts_metadata("design:type", "u" < typeof Date ? Object : Date)
722
+ ], UniDM.prototype, "ctime", void 0);
723
+ _ts_decorate([
724
+ Max(11),
725
+ Min(0),
726
+ IsInt(),
727
+ IsNotEmpty(),
728
+ Expose(),
729
+ _ts_metadata("design:type", Number)
730
+ ], UniDM.prototype, "weight", void 0);
731
+ _ts_decorate([
732
+ IsEnum(dm_gen_Pools),
733
+ IsNotEmpty(),
734
+ Expose(),
735
+ _ts_metadata("design:type", Number)
736
+ ], UniDM.prototype, "pool", void 0);
737
+ _ts_decorate([
738
+ IsEnum(dm_gen_DMAttr, {
739
+ each: true
740
+ }),
741
+ IsNotEmpty(),
742
+ Expose(),
743
+ _ts_metadata("design:type", Array)
744
+ ], UniDM.prototype, "attr", void 0);
745
+ _ts_decorate([
746
+ IsString(),
747
+ IsOptional(),
748
+ Expose(),
749
+ _ts_metadata("design:type", Object)
750
+ ], UniDM.prototype, "platform", void 0);
751
+ _ts_decorate([
752
+ IsString(),
753
+ IsOptional(),
754
+ Expose(),
755
+ _ts_metadata("design:type", String)
756
+ ], UniDM.prototype, "extraStr", void 0);
757
+ _ts_decorate([
758
+ IsString(),
759
+ IsOptional(),
760
+ Expose(),
761
+ _ts_metadata("design:type", String)
762
+ ], UniDM.prototype, "DMID", void 0);
763
+ _ts_decorate([
764
+ Expose(),
765
+ _ts_metadata("design:type", Function),
766
+ _ts_metadata("design:paramtypes", [
767
+ "u" < typeof Options ? Object : Options
768
+ ]),
769
+ _ts_metadata("design:returntype", void 0)
770
+ ], UniDM.prototype, "init", null);
771
+ _ts_decorate([
772
+ Expose(),
773
+ _ts_metadata("design:type", Function),
774
+ _ts_metadata("design:paramtypes", []),
775
+ _ts_metadata("design:returntype", Promise)
776
+ ], UniDM.prototype, "validate", null);
777
+ _ts_decorate([
778
+ Expose(),
779
+ _ts_metadata("design:type", "u" < typeof Extra ? Object : Extra),
780
+ _ts_metadata("design:paramtypes", [])
781
+ ], UniDM.prototype, "extra", null);
782
+ _ts_decorate([
783
+ Expose(),
784
+ _ts_metadata("design:type", void 0),
785
+ _ts_metadata("design:paramtypes", [])
786
+ ], UniDM.prototype, "isFrom3rdPlatform", null);
787
+ _ts_decorate([
788
+ Expose(),
789
+ _ts_metadata("design:type", Function),
790
+ _ts_metadata("design:paramtypes", []),
791
+ _ts_metadata("design:returntype", void 0)
792
+ ], UniDM.prototype, "toDMID", null);
793
+ _ts_decorate([
794
+ Expose(),
795
+ _ts_metadata("design:type", Function),
796
+ _ts_metadata("design:paramtypes", [
797
+ Object,
798
+ Object
799
+ ]),
800
+ _ts_metadata("design:returntype", Boolean)
801
+ ], UniDM.prototype, "isSameAs", null);
802
+ _ts_decorate([
803
+ Expose(),
804
+ _ts_metadata("design:type", Function),
805
+ _ts_metadata("design:paramtypes", []),
806
+ _ts_metadata("design:returntype", void 0)
807
+ ], UniDM.prototype, "minify", null);
808
+ _ts_decorate([
809
+ Expose(),
810
+ _ts_metadata("design:type", Function),
811
+ _ts_metadata("design:paramtypes", [
812
+ Object
813
+ ]),
814
+ _ts_metadata("design:returntype", void 0)
815
+ ], UniDM.prototype, "downgradeAdvcancedDan", null);
816
+ _ts_decorate([
817
+ Expose(),
818
+ _ts_metadata("design:type", Function),
819
+ _ts_metadata("design:paramtypes", [
820
+ Object
821
+ ]),
822
+ _ts_metadata("design:returntype", void 0)
823
+ ], UniDM.prototype, "toBiliXML", null);
824
+ _ts_decorate([
825
+ Expose(),
826
+ _ts_metadata("design:type", Function),
827
+ _ts_metadata("design:paramtypes", []),
828
+ _ts_metadata("design:returntype", "u" < typeof DMDplayer ? Object : DMDplayer)
829
+ ], UniDM.prototype, "toDplayer", null);
830
+ _ts_decorate([
831
+ Expose(),
832
+ _ts_metadata("design:type", Function),
833
+ _ts_metadata("design:paramtypes", []),
834
+ _ts_metadata("design:returntype", "u" < typeof DMArtplayer ? Object : DMArtplayer)
835
+ ], UniDM.prototype, "toArtplayer", null);
836
+ _ts_decorate([
837
+ Expose(),
838
+ _ts_metadata("design:type", Function),
839
+ _ts_metadata("design:paramtypes", []),
840
+ _ts_metadata("design:returntype", "u" < typeof DMDDplay ? Object : DMDDplay)
841
+ ], UniDM.prototype, "toDDplay", null);
1469
842
  const DanmakuType = {
1470
843
  SCROLL: 1,
1471
844
  BOTTOM: 2,
@@ -1875,14 +1248,21 @@ function parseAssRawField(ass, options) {
1875
1248
  if (raw) return DanmakuList2UniPool(raw.list, options);
1876
1249
  return UniPool.create();
1877
1250
  }
1878
- const src_JSON_0 = json_bigint({
1251
+ const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
1252
+ const DmSegMobileReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 30);
1253
+ const DmWebViewReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 39);
1254
+ const file_danuni = /*@__PURE__*/ fileDesc("CgxkYW51bmkucHJvdG8SEWRhbnVuaS5kYW5tYWt1LnYxIjIKCmxpc3REYW5SZXESCgoCSUQYASABKAkSEAoDc2VnGAIgASgFSACIAQFCBgoEX3NlZyLUAgoHRGFubWFrdRIMCgRTT0lEGAEgASgJEgwKBERNSUQYAiABKAkSEAoIcHJvZ3Jlc3MYAyABKAUSJQoEbW9kZRgEIAEoDjIXLmRhbnVuaS5kYW5tYWt1LnYxLk1vZGUSEAoIZm9udHNpemUYBSABKAUSDQoFY29sb3IYBiABKAUSEAoIc2VuZGVySUQYByABKAkSDwoHY29udGVudBgIIAEoCRIpCgVjdGltZRgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGd2VpZ2h0GAogASgFEiUKBHBvb2wYCyABKA4yFy5kYW51bmkuZGFubWFrdS52MS5Qb29sEgwKBGF0dHIYDCADKAkSFQoIcGxhdGZvcm0YDSABKAlIAIgBARISCgVleHRyYRgOIAEoCUgBiAEBQgsKCV9wbGF0Zm9ybUIICgZfZXh0cmEiPAoMRGFubWFrdVJlcGx5EiwKCGRhbm1ha3VzGAEgAygLMhouZGFudW5pLmRhbm1ha3UudjEuRGFubWFrdSo9CgRNb2RlEgoKBk5vcm1hbBAAEgoKBkJvdHRvbRABEgcKA1RvcBACEgsKB1JldmVyc2UQAxIHCgNFeHQQBCopCgRQb29sEgcKA0RlZhAAEgcKA1N1YhABEgcKA0FkdhACEgYKAkl4EAMyXQoORGFubWFrdVNlcnZpY2USSwoHbGlzdERhbhIdLmRhbnVuaS5kYW5tYWt1LnYxLmxpc3REYW5SZXEaHy5kYW51bmkuZGFubWFrdS52MS5EYW5tYWt1UmVwbHkiAFAAYgZwcm90bzM", [
1255
+ file_google_protobuf_timestamp
1256
+ ]);
1257
+ const DanmakuReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_danuni, 2);
1258
+ const src_JSON = json_bigint({
1879
1259
  useNativeBigInt: true
1880
1260
  });
1881
- const src_DanUniConvertTipTemplate = {
1261
+ const DanUniConvertTipTemplate = {
1882
1262
  meassage: 'Converted by DanUni!',
1883
1263
  version: `JS/TS ${package_namespaceObject.UU} (v${package_namespaceObject.rE})`
1884
1264
  };
1885
- class src_UniPool {
1265
+ class UniPool {
1886
1266
  constructor(dans, options = {}, info = {
1887
1267
  fromConverted: false
1888
1268
  }){
@@ -1987,10 +1367,10 @@ class src_UniPool {
1987
1367
  };
1988
1368
  }
1989
1369
  static create(options) {
1990
- return new src_UniPool([], options);
1370
+ return new UniPool([], options);
1991
1371
  }
1992
1372
  assign(dans) {
1993
- if (dans instanceof src_UniPool) return new src_UniPool([
1373
+ if (dans instanceof UniPool) return new UniPool([
1994
1374
  ...this.dans,
1995
1375
  ...dans.dans
1996
1376
  ], {
@@ -2000,11 +1380,11 @@ class src_UniPool {
2000
1380
  ...this.info,
2001
1381
  ...dans.info
2002
1382
  });
2003
- if (dans instanceof UniDM) return new src_UniPool([
1383
+ if (dans instanceof UniDM) return new UniPool([
2004
1384
  ...this.dans,
2005
1385
  dans
2006
1386
  ], this.options, this.info);
2007
- if (Array.isArray(dans) && dans.every((d)=>d instanceof UniDM)) return new src_UniPool([
1387
+ if (Array.isArray(dans) && dans.every((d)=>d instanceof UniDM)) return new UniPool([
2008
1388
  ...this.dans,
2009
1389
  ...dans
2010
1390
  ], this.options, this.info);
@@ -2017,7 +1397,7 @@ class src_UniPool {
2017
1397
  const set = new Set(this.dans.map((d)=>d[key]));
2018
1398
  return [
2019
1399
  ...set
2020
- ].map((v)=>new src_UniPool(this.dans.filter((d)=>d[key] === v), {
1400
+ ].map((v)=>new UniPool(this.dans.filter((d)=>d[key] === v), {
2021
1401
  ...this.options,
2022
1402
  dedupe: false
2023
1403
  }, this.info));
@@ -2082,16 +1462,16 @@ class src_UniPool {
2082
1462
  ];
2083
1463
  extra.danuni = extra.danuni || {};
2084
1464
  extra.danuni.merge = mergeData;
2085
- danmaku.extraStr = src_JSON_0.stringify(extra);
1465
+ danmaku.extraStr = src_JSON.stringify(extra);
2086
1466
  } else {
2087
1467
  if (extra.danuni?.merge) {
2088
1468
  delete extra.danuni.merge;
2089
1469
  if (0 === Object.keys(extra.danuni).length) delete extra.danuni;
2090
1470
  }
2091
- danmaku.extraStr = Object.keys(extra).length > 0 ? src_JSON_0.stringify(extra) : void 0;
1471
+ danmaku.extraStr = Object.keys(extra).length > 0 ? src_JSON.stringify(extra) : void 0;
2092
1472
  }
2093
1473
  }
2094
- return new src_UniPool(result, this.options, this.info);
1474
+ return new UniPool(result, this.options, this.info);
2095
1475
  }
2096
1476
  minify() {
2097
1477
  return this.dans.map((d)=>d.minify());
@@ -2106,7 +1486,7 @@ class src_UniPool {
2106
1486
  const parseJSON = (json)=>{
2107
1487
  try {
2108
1488
  if (Array.isArray(json) && json.every((d)=>d.SOID)) return {
2109
- pool: new src_UniPool(json, options),
1489
+ pool: new UniPool(json, options),
2110
1490
  fmt: 'danuni.json'
2111
1491
  };
2112
1492
  if (json.danmuku && json.danmuku.every((d)=>d.text)) return {
@@ -2130,7 +1510,7 @@ class src_UniPool {
2130
1510
  const parseStr = (file)=>{
2131
1511
  if (mod.includes('json')) try {
2132
1512
  if (isJSON(file)) {
2133
- const json = src_JSON_0.parse(file);
1513
+ const json = src_JSON.parse(file);
2134
1514
  return parseJSON(json);
2135
1515
  }
2136
1516
  } catch {}
@@ -2218,7 +1598,7 @@ class src_UniPool {
2218
1598
  }
2219
1599
  static fromPb(bin, options) {
2220
1600
  const data = fromBinary(DanmakuReplySchema, new Uint8Array(bin));
2221
- return new src_UniPool(data.danmakus.map((d)=>UniDM.create({
1601
+ return new UniPool(data.danmakus.map((d)=>UniDM.create({
2222
1602
  ...d,
2223
1603
  progress: d.progress / 1000,
2224
1604
  mode: d.mode,
@@ -2257,7 +1637,7 @@ class src_UniPool {
2257
1637
  const dans = oriData.i.d;
2258
1638
  const fromConverted = !!oriData.i.danuni;
2259
1639
  const cid = BigInt(oriData.i.chatid);
2260
- return new src_UniPool(dans.map((d)=>UniDM.fromBili(UniDM.parseBiliSingle(d['@_p'], d['#text']), cid, options, fromConverted ? oriData.i.danuni?.data : void 0)).filter((d)=>null !== d), options, {
1640
+ return new UniPool(dans.map((d)=>UniDM.fromBili(UniDM.parseBiliSingle(d['@_p'], d['#text']), cid, options, fromConverted ? oriData.i.danuni?.data : void 0)).filter((d)=>null !== d), options, {
2261
1641
  fromConverted
2262
1642
  });
2263
1643
  }
@@ -2291,7 +1671,7 @@ class src_UniPool {
2291
1671
  real_name: 0,
2292
1672
  source: 'k-v',
2293
1673
  danuni: {
2294
- ...src_DanUniConvertTipTemplate,
1674
+ ...DanUniConvertTipTemplate,
2295
1675
  data: this.getShared('SOID')
2296
1676
  },
2297
1677
  d: this.dans.map((dan)=>dan.toBiliXML(options))
@@ -2301,7 +1681,7 @@ class src_UniPool {
2301
1681
  static fromBiliGrpc(bin, options) {
2302
1682
  const data = fromBinary(DmSegMobileReplySchema, new Uint8Array(bin));
2303
1683
  const json = data.elems;
2304
- return new src_UniPool(json.map((d)=>UniDM.fromBili({
1684
+ return new UniPool(json.map((d)=>UniDM.fromBili({
2305
1685
  ...d,
2306
1686
  progress: d.progress / 1000
2307
1687
  }, d.oid, options)), options);
@@ -2309,10 +1689,10 @@ class src_UniPool {
2309
1689
  static fromBiliCommandGrpc(bin, options) {
2310
1690
  const data = fromBinary(DmWebViewReplySchema, new Uint8Array(bin));
2311
1691
  const json = data.commandDms;
2312
- return new src_UniPool(json.map((d)=>UniDM.fromBiliCommand(d, d.oid, options)), options);
1692
+ return new UniPool(json.map((d)=>UniDM.fromBiliCommand(d, d.oid, options)), options);
2313
1693
  }
2314
1694
  static fromBiliUp(json, options) {
2315
- return new src_UniPool(json.data.result.map((d)=>{
1695
+ return new UniPool(json.data.result.map((d)=>{
2316
1696
  const attrBin = d.attrs ? d.attrs.split(',').map(Number).reduce((bin, bitPosition)=>bin | 1 << bitPosition - 1, 0) : 0;
2317
1697
  return UniDM.fromBili({
2318
1698
  id: BigInt(d.id_str || d.id),
@@ -2331,7 +1711,7 @@ class src_UniPool {
2331
1711
  }), options);
2332
1712
  }
2333
1713
  static fromDplayer(json, playerID, domain = 'other', options) {
2334
- return new src_UniPool(json.data.map((d)=>UniDM.fromDplayer({
1714
+ return new UniPool(json.data.map((d)=>UniDM.fromDplayer({
2335
1715
  content: d[4],
2336
1716
  progress: d[0],
2337
1717
  mode: d[1],
@@ -2345,7 +1725,7 @@ class src_UniPool {
2345
1725
  return {
2346
1726
  code: 0,
2347
1727
  danuni: {
2348
- ...src_DanUniConvertTipTemplate,
1728
+ ...DanUniConvertTipTemplate,
2349
1729
  data: this.dans[0].SOID.split('@')[0]
2350
1730
  },
2351
1731
  data: this.dans.map((dan)=>{
@@ -2361,7 +1741,7 @@ class src_UniPool {
2361
1741
  };
2362
1742
  }
2363
1743
  static fromArtplayer(json, playerID, domain = 'other', options) {
2364
- return new src_UniPool(json.danmuku.map((d)=>UniDM.fromArtplayer({
1744
+ return new UniPool(json.danmuku.map((d)=>UniDM.fromArtplayer({
2365
1745
  content: d.text,
2366
1746
  progress: d.time || 0,
2367
1747
  mode: d.mode || 0,
@@ -2374,7 +1754,7 @@ class src_UniPool {
2374
1754
  toArtplayer() {
2375
1755
  return {
2376
1756
  danuni: {
2377
- ...src_DanUniConvertTipTemplate,
1757
+ ...DanUniConvertTipTemplate,
2378
1758
  data: this.dans[0].SOID.split('@')[0]
2379
1759
  },
2380
1760
  danmuku: this.dans.map((dan)=>{
@@ -2391,7 +1771,7 @@ class src_UniPool {
2391
1771
  };
2392
1772
  }
2393
1773
  static fromDDPlay(json, episodeId, options) {
2394
- return new src_UniPool(json.comments.map((d)=>{
1774
+ return new UniPool(json.comments.map((d)=>{
2395
1775
  const p_arr = d.p.split(',');
2396
1776
  return UniDM.fromDDplay({
2397
1777
  cid: d.cid,
@@ -2409,7 +1789,7 @@ class src_UniPool {
2409
1789
  const episodeId = this.dans[0].SOID.split('@')[0].replaceAll(`def_${platform_PlatformDanmakuOnlySource.DanDanPlay}+`, '');
2410
1790
  return {
2411
1791
  danuni: {
2412
- ...src_DanUniConvertTipTemplate,
1792
+ ...DanUniConvertTipTemplate,
2413
1793
  data: episodeId
2414
1794
  },
2415
1795
  count: this.dans.length,
@@ -2439,4 +1819,5 @@ class src_UniPool {
2439
1819
  }, canvasCtx);
2440
1820
  }
2441
1821
  }
2442
- export { UniDM, dm_gen_namespaceObject as UniDMTools, id_gen_namespaceObject as UniIDTools, src_UniPool as UniPool, platform_namespaceObject as platform };
1822
+ export { platform } from "./42.js";
1823
+ export { UniDM, UniPool, dm_gen_namespaceObject as UniDMTools, id_gen_namespaceObject as UniIDTools };