@browserless.io/browserless 2.37.1 → 2.38.0

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 (284) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/extensions/ublocklite/_locales/ar/messages.json +5 -5
  3. package/extensions/ublocklite/_locales/de/messages.json +1 -1
  4. package/extensions/ublocklite/_locales/fa/messages.json +8 -8
  5. package/extensions/ublocklite/_locales/hu/messages.json +5 -5
  6. package/extensions/ublocklite/_locales/nb/messages.json +7 -7
  7. package/extensions/ublocklite/_locales/pt_PT/messages.json +9 -9
  8. package/extensions/ublocklite/_locales/ro/messages.json +32 -32
  9. package/extensions/ublocklite/_locales/sq/messages.json +4 -4
  10. package/extensions/ublocklite/js/background.js +19 -2
  11. package/extensions/ublocklite/js/mode-manager.js +7 -9
  12. package/extensions/ublocklite/js/scripting/css-api.js +33 -0
  13. package/extensions/ublocklite/js/scripting/css-generic.js +3 -13
  14. package/extensions/ublocklite/js/scripting/css-procedural-api.js +1 -9
  15. package/extensions/ublocklite/js/scripting/css-procedural.js +1 -5
  16. package/extensions/ublocklite/js/scripting/css-specific.js +1 -5
  17. package/extensions/ublocklite/js/scripting-manager.js +11 -8
  18. package/extensions/ublocklite/js/troubleshooting.js +3 -0
  19. package/extensions/ublocklite/js/utils.js +15 -13
  20. package/extensions/ublocklite/manifest.json +2 -1
  21. package/extensions/ublocklite/rulesets/generic-details.json +4 -2
  22. package/extensions/ublocklite/rulesets/main/adguard-mobile.json +4 -5
  23. package/extensions/ublocklite/rulesets/main/adguard-spyware-url.json +12 -7
  24. package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +21 -17
  25. package/extensions/ublocklite/rulesets/main/annoyances-notifications.json +2 -1
  26. package/extensions/ublocklite/rulesets/main/annoyances-others.json +3 -2
  27. package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +4 -3
  28. package/extensions/ublocklite/rulesets/main/chn-0.json +23 -15
  29. package/extensions/ublocklite/rulesets/main/deu-0.json +4 -4
  30. package/extensions/ublocklite/rulesets/main/dpollock-0.json +2 -1
  31. package/extensions/ublocklite/rulesets/main/easylist.json +37 -91
  32. package/extensions/ublocklite/rulesets/main/easyprivacy.json +22 -8
  33. package/extensions/ublocklite/rulesets/main/est-0.json +2 -1
  34. package/extensions/ublocklite/rulesets/main/fra-0.json +6 -4
  35. package/extensions/ublocklite/rulesets/main/hrv-0.json +6 -3
  36. package/extensions/ublocklite/rulesets/main/hun-0.json +5 -2
  37. package/extensions/ublocklite/rulesets/main/idn-0.json +1 -1
  38. package/extensions/ublocklite/rulesets/main/ind-0.json +36 -34
  39. package/extensions/ublocklite/rulesets/main/isr-0.json +1 -1
  40. package/extensions/ublocklite/rulesets/main/ita-0.json +4 -3
  41. package/extensions/ublocklite/rulesets/main/jpn-1.json +25 -16
  42. package/extensions/ublocklite/rulesets/main/kor-1.json +5 -3
  43. package/extensions/ublocklite/rulesets/main/mkd-0.json +2 -1
  44. package/extensions/ublocklite/rulesets/main/nld-0.json +3 -1
  45. package/extensions/ublocklite/rulesets/main/nor-0.json +15 -1
  46. package/extensions/ublocklite/rulesets/main/pgl.json +16 -20
  47. package/extensions/ublocklite/rulesets/main/pol-0.json +1 -1
  48. package/extensions/ublocklite/rulesets/main/rus-0.json +14 -13
  49. package/extensions/ublocklite/rulesets/main/rus-1.json +4 -2
  50. package/extensions/ublocklite/rulesets/main/spa-1.json +8 -3
  51. package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +11287 -12041
  52. package/extensions/ublocklite/rulesets/main/swe-1.json +21 -19
  53. package/extensions/ublocklite/rulesets/main/tur-0.json +13 -4
  54. package/extensions/ublocklite/rulesets/main/ublock-badware.json +28 -3
  55. package/extensions/ublocklite/rulesets/main/ublock-filters.json +73 -70
  56. package/extensions/ublocklite/rulesets/main/ukr-0.json +2 -2
  57. package/extensions/ublocklite/rulesets/main/urlhaus-full.json +3496 -291
  58. package/extensions/ublocklite/rulesets/main/vie-1.json +52 -47
  59. package/extensions/ublocklite/rulesets/regex/block-lan.json +16 -0
  60. package/extensions/ublocklite/rulesets/regex/chn-0.json +3 -2
  61. package/extensions/ublocklite/rulesets/regex/jpn-1.json +2 -3
  62. package/extensions/ublocklite/rulesets/regex/rus-0.json +2 -1
  63. package/extensions/ublocklite/rulesets/regex/ublock-badware.json +5 -4
  64. package/extensions/ublocklite/rulesets/regex/ublock-filters.json +22 -15
  65. package/extensions/ublocklite/rulesets/ruleset-details.json +219 -219
  66. package/extensions/ublocklite/rulesets/scripting/generic/adguard-mobile.js +2 -2
  67. package/extensions/ublocklite/rulesets/scripting/generic/alb-0.js +1 -1
  68. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
  69. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-notifications.js +2 -2
  70. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-others.js +2 -2
  71. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-overlays.js +2 -2
  72. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-social.js +3 -3
  73. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-widgets.js +1 -1
  74. package/extensions/ublocklite/rulesets/scripting/generic/bgr-0.js +2 -2
  75. package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +2 -2
  76. package/extensions/ublocklite/rulesets/scripting/generic/cze-0.js +2 -2
  77. package/extensions/ublocklite/rulesets/scripting/generic/deu-0.js +2 -2
  78. package/extensions/ublocklite/rulesets/scripting/generic/easylist.js +3 -3
  79. package/extensions/ublocklite/rulesets/scripting/generic/easyprivacy.js +1 -1
  80. package/extensions/ublocklite/rulesets/scripting/generic/est-0.js +2 -2
  81. package/extensions/ublocklite/rulesets/scripting/generic/fin-0.js +2 -2
  82. package/extensions/ublocklite/rulesets/scripting/generic/fra-0.js +2 -2
  83. package/extensions/ublocklite/rulesets/scripting/generic/grc-0.js +2 -2
  84. package/extensions/ublocklite/rulesets/scripting/generic/hrv-0.js +2 -2
  85. package/extensions/ublocklite/rulesets/scripting/generic/hun-0.js +2 -2
  86. package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +2 -2
  87. package/extensions/ublocklite/rulesets/scripting/generic/ind-0.js +1 -1
  88. package/extensions/ublocklite/rulesets/scripting/generic/irn-0.js +2 -2
  89. package/extensions/ublocklite/rulesets/scripting/generic/isr-0.js +2 -2
  90. package/extensions/ublocklite/rulesets/scripting/generic/ita-0.js +2 -2
  91. package/extensions/ublocklite/rulesets/scripting/generic/jpn-1.js +2 -2
  92. package/extensions/ublocklite/rulesets/scripting/generic/kor-1.js +2 -2
  93. package/extensions/ublocklite/rulesets/scripting/generic/ltu-0.js +1 -1
  94. package/extensions/ublocklite/rulesets/scripting/generic/lva-0.js +1 -1
  95. package/extensions/ublocklite/rulesets/scripting/generic/mkd-0.js +2 -2
  96. package/extensions/ublocklite/rulesets/scripting/generic/nld-0.js +2 -2
  97. package/extensions/ublocklite/rulesets/scripting/generic/nor-0.js +2 -2
  98. package/extensions/ublocklite/rulesets/scripting/generic/pol-0.js +2 -2
  99. package/extensions/ublocklite/rulesets/scripting/generic/rou-1.js +2 -2
  100. package/extensions/ublocklite/rulesets/scripting/generic/rus-0.js +2 -2
  101. package/extensions/ublocklite/rulesets/scripting/generic/rus-1.js +2 -2
  102. package/extensions/ublocklite/rulesets/scripting/generic/spa-0.js +2 -2
  103. package/extensions/ublocklite/rulesets/scripting/generic/spa-1.js +2 -2
  104. package/extensions/ublocklite/rulesets/scripting/generic/svn-0.js +1 -1
  105. package/extensions/ublocklite/rulesets/scripting/generic/swe-1.js +2 -2
  106. package/extensions/ublocklite/rulesets/scripting/generic/tha-0.js +1 -1
  107. package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +2 -2
  108. package/extensions/ublocklite/rulesets/scripting/generic/ublock-badware.js +1 -1
  109. package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
  110. package/extensions/ublocklite/rulesets/scripting/generic/ubol-tests.js +2 -2
  111. package/extensions/ublocklite/rulesets/scripting/generic/ukr-0.js +3 -3
  112. package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +3 -3
  113. package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +3 -5
  114. package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +4 -0
  115. package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +4 -0
  116. package/extensions/ublocklite/rulesets/scripting/generichigh/rus-0.css +1 -1
  117. package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +3 -3
  118. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
  119. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +1 -1
  120. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
  121. package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +1 -1
  122. package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
  123. package/extensions/ublocklite/rulesets/scripting/procedural/fin-0.js +1 -1
  124. package/extensions/ublocklite/rulesets/scripting/procedural/fra-0.js +1 -1
  125. package/extensions/ublocklite/rulesets/scripting/procedural/ind-0.js +3 -3
  126. package/extensions/ublocklite/rulesets/scripting/procedural/irn-0.js +3 -3
  127. package/extensions/ublocklite/rulesets/scripting/procedural/isr-0.js +3 -3
  128. package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
  129. package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +3 -3
  130. package/extensions/ublocklite/rulesets/scripting/procedural/rou-1.js +3 -3
  131. package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
  132. package/extensions/ublocklite/rulesets/scripting/procedural/rus-1.js +3 -3
  133. package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +3 -3
  134. package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
  135. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-experimental.js +42 -0
  136. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
  137. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.remove-node-text.js +1 -1
  138. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
  139. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
  140. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-session-storage-item.js +2 -2
  141. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +5 -2
  142. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-replace-node-text.js +2 -2
  143. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
  144. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-constant.js +2 -2
  145. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.set-cookie.js +2 -2
  146. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +2 -2
  147. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-stack-trace.js +2 -2
  148. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +1 -1
  149. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +1 -1
  150. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-attr.js +2 -2
  151. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-class.js +2 -2
  152. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-node-text.js +2 -2
  153. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-constant.js +2 -2
  154. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-click-element.js +3 -0
  155. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-argument.js +14 -7
  156. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +2 -2
  157. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +1 -1
  158. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.set-constant.js +1 -1
  159. package/extensions/ublocklite/rulesets/scripting/scriptlet/{vie-1.addEventListener-defuser.js → chn-0.set-cookie.js} +133 -193
  160. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.set-constant.js +2 -2
  161. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.href-sanitizer.js +4 -22
  162. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-fetch.js +1 -1
  163. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.adjust-setInterval.js +2 -2
  164. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.href-sanitizer.js +6 -24
  165. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.json-prune.js +2 -2
  166. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.abort-current-script.js +2 -2
  167. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.addEventListener-defuser.js +2 -2
  168. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-fetch.js +2 -2
  169. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setTimeout.js +2 -2
  170. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-xhr.js +2 -2
  171. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.remove-cookie.js +2 -2
  172. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.remove-node-text.js +2 -2
  173. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.set-constant.js +2 -2
  174. package/extensions/ublocklite/rulesets/scripting/scriptlet/{nld-0.json-prune-fetch-response.js → kor-1.set-local-storage-item.js} +86 -275
  175. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-write.js +2 -2
  176. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-stack-trace.js +2 -2
  177. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +2 -2
  178. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.href-sanitizer.js +6 -24
  179. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-attr.js +2 -2
  180. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
  181. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-cookie.js +2 -2
  182. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-local-storage-item.js +399 -0
  183. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.href-sanitizer.js +4 -22
  184. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +1 -1
  185. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setTimeout.js +2 -2
  186. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.remove-node-text.js +2 -2
  187. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.href-sanitizer.js +4 -22
  188. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +2 -2
  189. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.trusted-replace-argument.js +14 -7
  190. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-json-edit-xhr-request.js +1 -1
  191. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-replace-node-text.js +1 -1
  192. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +3 -3
  193. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +1 -1
  194. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-write.js +1 -1
  195. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +3 -3
  196. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +2 -2
  197. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setInterval.js +1 -1
  198. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setTimeout.js +2 -2
  199. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.href-sanitizer.js +5 -23
  200. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
  201. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-xhr-response.js +3 -3
  202. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune.js +2 -2
  203. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +2 -2
  204. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +2 -2
  205. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +1 -1
  206. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +3 -3
  207. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +3 -3
  208. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +2 -2
  209. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +1 -1
  210. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-attr.js +2 -2
  211. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-cookie.js +2 -2
  212. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +3 -3
  213. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +3 -3
  214. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-click-element.js +3 -0
  215. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-create-html.js +2 -2
  216. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +16 -9
  217. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +3 -3
  218. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +2 -2
  219. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-attr.js +2 -2
  220. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +2 -2
  221. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +2 -2
  222. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +2 -2
  223. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.set-constant.js +2 -2
  224. package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +3 -3
  225. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
  226. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-notifications.js +3 -3
  227. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
  228. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
  229. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
  230. package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
  231. package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
  232. package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
  233. package/extensions/ublocklite/rulesets/scripting/specific/est-0.js +3 -3
  234. package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
  235. package/extensions/ublocklite/rulesets/scripting/specific/fra-0.js +3 -3
  236. package/extensions/ublocklite/rulesets/scripting/specific/grc-0.js +3 -3
  237. package/extensions/ublocklite/rulesets/scripting/specific/hrv-0.js +3 -3
  238. package/extensions/ublocklite/rulesets/scripting/specific/hun-0.js +3 -3
  239. package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
  240. package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
  241. package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +3 -3
  242. package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
  243. package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
  244. package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +2 -2
  245. package/extensions/ublocklite/rulesets/scripting/specific/nor-0.js +3 -3
  246. package/extensions/ublocklite/rulesets/scripting/specific/rou-1.js +3 -3
  247. package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
  248. package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
  249. package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
  250. package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
  251. package/extensions/ublocklite/rulesets/scripting/specific/ublock-badware.js +1 -1
  252. package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
  253. package/extensions/ublocklite/rulesets/scripting/specific/ukr-0.js +3 -3
  254. package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
  255. package/extensions/ublocklite/rulesets/scriptlet-details.json +154 -124
  256. package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +13 -28
  257. package/extensions/ublocklite/rulesets/strictblock/annoyances-cookies.json +1 -0
  258. package/extensions/ublocklite/rulesets/strictblock/annoyances-widgets.json +1 -0
  259. package/extensions/ublocklite/rulesets/strictblock/chn-0.json +200 -246
  260. package/extensions/ublocklite/rulesets/strictblock/deu-0.json +1 -0
  261. package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +2 -1
  262. package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
  263. package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +30 -2
  264. package/extensions/ublocklite/rulesets/strictblock/fra-0.json +102 -41
  265. package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +187 -179
  266. package/extensions/ublocklite/rulesets/strictblock/pgl.json +16 -20
  267. package/extensions/ublocklite/rulesets/strictblock/pol-0.json +3 -1
  268. package/extensions/ublocklite/rulesets/strictblock/spa-1.json +1 -0
  269. package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +11287 -12041
  270. package/extensions/ublocklite/rulesets/strictblock/swe-1.json +0 -1
  271. package/extensions/ublocklite/rulesets/strictblock/tur-0.json +1 -0
  272. package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +671 -655
  273. package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +1 -1
  274. package/extensions/ublocklite/rulesets/strictblock/ukr-0.json +1 -0
  275. package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +3496 -291
  276. package/extensions/ublocklite/rulesets/strictblock/vie-1.json +5 -1
  277. package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +59 -1
  278. package/extensions/ublocklite/ublock.zip +0 -0
  279. package/package.json +17 -17
  280. package/static/docs/swagger.json +2 -2
  281. package/static/docs/swagger.min.json +1 -1
  282. package/static/function/client.js +58 -14
  283. package/static/function/index.html +58 -14
  284. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-request.js +0 -941
@@ -118,6 +118,9 @@ function trustedClickElement(
118
118
  if ( typeof steps[i-1] !== 'string' ) { continue; }
119
119
  steps.splice(i, 0, clickDelay);
120
120
  }
121
+ if ( steps.length === 1 && delay !== '' ) {
122
+ steps.unshift(clickDelay);
123
+ }
121
124
  if ( typeof steps.at(-1) !== 'number' ) {
122
125
  steps.push(10000);
123
126
  }
@@ -40,10 +40,19 @@ function trustedReplaceArgument(
40
40
  const logPrefix = safe.makeLogPrefix('trusted-replace-argument', propChain, argposRaw, argraw);
41
41
  const argoffset = parseInt(argposRaw, 10) || 0;
42
42
  const extraArgs = safe.getExtraArgs(Array.from(arguments), 3);
43
- const replacer = argraw.startsWith('repl:/') &&
44
- parseReplaceFn(argraw.slice(5)) || undefined;
45
- const value = replacer === undefined &&
46
- validateConstantFn(true, argraw, extraArgs);
43
+ let replacer;
44
+ if ( argraw.startsWith('repl:/') ) {
45
+ const parsed = parseReplaceFn(argraw.slice(5));
46
+ if ( parsed === undefined ) { return; }
47
+ replacer = arg => `${arg}`.replace(replacer.re, replacer.replacement);
48
+ } else if ( argraw.startsWith('add:') ) {
49
+ const delta = parseFloat(argraw.slice(4));
50
+ if ( isNaN(delta) ) { return; }
51
+ replacer = arg => Number(arg) + delta;
52
+ } else {
53
+ const value = validateConstantFn(true, argraw, extraArgs);
54
+ replacer = ( ) => value;
55
+ }
47
56
  const reCondition = extraArgs.condition
48
57
  ? safe.patternToRegex(extraArgs.condition)
49
58
  : /^/;
@@ -75,9 +84,7 @@ function trustedReplaceArgument(
75
84
  return context.reflect();
76
85
  }
77
86
  }
78
- const argAfter = replacer && typeof argBefore === 'string'
79
- ? argBefore.replace(replacer.re, replacer.replacement)
80
- : value;
87
+ const argAfter = replacer(argBefore);
81
88
  if ( argAfter !== argBefore ) {
82
89
  setArg(context, argAfter);
83
90
  safe.uboLog(logPrefix, `Replaced argument:\nBefore: ${JSON.stringify(argBefore)}\nAfter: ${argAfter}`);
@@ -483,8 +483,8 @@ function safeSelf() {
483
483
  /******************************************************************************/
484
484
 
485
485
  const scriptletGlobals = {}; // eslint-disable-line
486
- const argsList = [["adsbygoogle.js"],["pagead2.googlesyndication.com"],["method:HEAD"],["/googlesyndication\\.com|doubleclick\\.net/"],["www3.doubleclick.net"],["/pagead2\\.googlesyndication\\.com|\\/fbevents\\.js/"]];
487
- const hostnamesMap = new Map([["helper-employer.com",0],["slashview.com",1],["fsbot.xyz",1],["mpyit.com",1],["4gtv.tv",1],["hmanga.world",2],["wandhi.com",3],["taiwanlibrarysearch.herokuapp.com",4],["linetv.tw",5]]);
486
+ const argsList = [["adsbygoogle.js"],["pagead2.googlesyndication.com"],["/googlesyndication\\.com|doubleclick\\.net/"],["www3.doubleclick.net"],["/pagead2\\.googlesyndication\\.com|\\/fbevents\\.js/"]];
487
+ const hostnamesMap = new Map([["helper-employer.com",0],["slashview.com",1],["fsbot.xyz",1],["mpyit.com",1],["4gtv.tv",1],["wandhi.com",2],["taiwanlibrarysearch.herokuapp.com",3],["linetv.tw",4]]);
488
488
  const exceptionsMap = new Map([]);
489
489
  const hasEntities = false;
490
490
  const hasAncestors = false;
@@ -366,7 +366,7 @@ function safeSelf() {
366
366
  /******************************************************************************/
367
367
 
368
368
  const scriptletGlobals = {}; // eslint-disable-line
369
- const argsList = [[".offsetHeight == 0"],[".offsetHeight"],["float_right > div"],["adblock_tip"],["/\\.height\\(\\) == 0|adsbygoogle/"],["myModal"],["loadErrorTip"],["ins.adsbygoogle"],["_0x"],["adblock"],["发现严重BUG"],["checker"],["/(\\s|\\()tpc/"],["/home/?adblock="],["ad_num_show"],["adsbygoogle"],["checkSiteNormalLoad"],["/ad block stop|warm_msg/"],["location.href","3000"],["try{e()}catch(e){if(t[e.message])return;"],["window.location.href"],["ecjkox.com"],["/getCookie|checkCK|checkCookie|checkC00kie|checkCoookie|checkCookiiiie|document\\.cookie|buttonClose|exptime/"]];
369
+ const argsList = [[".offsetHeight == 0"],[".offsetHeight"],["float_right > div"],["adblock_tip"],["/\\.height\\(\\) == 0|adsbygoogle/"],["myModal"],["loadErrorTip"],["ins.adsbygoogle"],["_0x"],["adblock"],["发现严重BUG"],["checker"],["html"],["/home/?adblock="],["ad_num_show"],["adsbygoogle"],["checkSiteNormalLoad"],["/ad block stop|warm_msg/"],["location.href","3000"],["try{e()}catch(e){if(t[e.message])return;"],["window.location.href"],["ecjkox.com"],["/getCookie|checkCK|checkCookie|checkC00kie|checkCoookie|checkCookiiiie|document\\.cookie|buttonClose|exptime/"]];
370
370
  const hostnamesMap = new Map([["445nan.com",0],["ftchinese.com",1],["jmcomic-zzz.org",2],["18comic.org",2],["18comic.vip",2],["itdog.cn",3],["xbeibeix.com",4],["520cc.cc",[5,18]],["colamanga.com",6],["cocomanga.com",[6,16]],["ekamus.info",7],["logi.im",7],["moeci.com",8],["tingfm.com",9],["233tw.com",10],["ruanyifeng.com",11],["t66y.com",12],["tsubasa.im",13],["league-funny.com",14],["haoweichi.com",15],["ohmanhua.com",16],["onemanhua.com",16],["5278.cc",17],["hboav.com",17],["cidetxt.cc",19],["erciyan.com",20],["youziks.com",21],["axutongxue.onrender.com",22],["axutongxue.space",22],["axutongxue.cn",22],["axu.pages.dev",22],["axutongxue.vip",22],["axutongxue.com",22],["axutongxue.net",22]]);
371
371
  const exceptionsMap = new Map([]);
372
372
  const hasEntities = false;
@@ -461,7 +461,7 @@ function validateConstantFn(trusted, raw, extraArgs = {}) {
461
461
 
462
462
  const scriptletGlobals = {}; // eslint-disable-line
463
463
  const argsList = [["ad_id_for_555",""],["all520dddaaa2022ccc","true"],["_AdBlockInit","noopFunc"],["checkAndHandleAdBlock","undefined"],["adsbygoogle","{}"],["adsbygoogle.loaded","true"],["AD_SURVEY_Add_AdPos","noopFunc"],["AD_SURVEY_Add_AdPos_Simple","noopFunc"],["killads","true"],["isAdsDisplayed","true"],["fuzqingAdPlus","{}"],["all520dddaaa2022aaa","undefined"],["canRunAds","true"],["adblock","0"],["can_run_ads","true"],["google_tag_manager","{}"],["google.ima.AdError","noopFunc"],["ga","noopFunc"],["google_empty_script_included","true"],["adsbygoogle","noopFunc"],["Object.prototype.cnobpreroll_","true"],["Object.prototype.canobpreroll_","true"],["ads",""],["NativeAd","noopFunc"],["__jsadsuccess","true"],["onload","null"],["adbk","false"],["config.group",""],["preBid","{}"],["preBid.displayAd","noopFunc"],["preBid.getPrerollVASTUrl","noopFunc"],["player.VastADPlugin","noopFunc"],["ADSOBJET","{}"],["myPlayer.adDisplay","undefined"],["NEWS_FEED","noopFunc"],["conone_lmg","noopFunc"],["Object.prototype.ad_switch","0"],["dy_card_dyrun","undefined"],["poped","true"],["Object.prototype.adData","{}"],["Object.prototype._adData","{}"],["MM_openBrWindow","noopFunc"],["lists","undefined"],["is_show","false"],["allData.safeLevel","1"],["appData","[]"],["topData","[]"],["midData","[]"],["btmData","[]"],["coupletData","[]"],["adInfo","{}"],["isAdLoaded","true"],["Object.prototype.noAD","true"],["infoList","[]"],["adObj","noopFunc"],["CreativePlayerwebPlugin.AD_EVENT.AD_DESTROY",""],["CreativePlayerwebPlugin.AD_EVENT.AD_LOAD_START",""],["ConFig.config.ads","{}"],["pageData.__banners.0.commercial.mediaUrl",""],["pageData.__banners.0.commercial.jumpUrl",""],["pageData.__banners.0.commercial.title",""],["pageData.__banners.1.commercial.mediaUrl",""],["pageData.__banners.1.commercial.jumpUrl",""],["pageData.__banners.1.commercial.title",""],["detailParams.is_ad_play","false"]];
464
- const hostnamesMap = new Map([["surirt.com",[0,1]],["520cc.cc",1],["520call.me",[1,11]],["baomidou.com",2],["nodejs.cn",[2,4,5]],["docsmall.com",2],["bilinovel.com",3],["huanqiu.com",[6,7]],["itbaoku.cn",8],["yaociyuan.bid",8],["bigpixel.cn",8],["jkpan.cc",8],["ekamus.info",9],["koyi.pub",10],["bde4.icu",12],["tingfm.com",[12,14]],["slashlook.com",12],["linovelib.com",13],["linetv.tw",[15,16]],["ebb.io",[17,18]],["wenxuecity.com",19],["ddys.*",[20,21]],["ddrk.me",[20,21]],["sssam.com",22],["cocomanga.com",[23,24]],["ohmanhua.com",[23,24]],["onemanhua.com",[23,24]],["hboav.com",[25,26]],["cnys.tv",27],["now.com",[28,29,30]],["player.hboav.com",31],["x99av.com",32],["hamivideo.hinet.net",33],["jianshu.com",34],["xkyn.com",35],["tangdoucdn.com",36],["dianyingim.com",37],["xvideo.cc",38],["v-wb.youku.com",39],["m.youku.com",40],["v.youku.com",40],["edc1014070.pixnet.net",41],["m.biqiugege8.com",42],["theav.xyz",43],["69xx.one",43],["theporn.cc",43],["v.ifeng.com",44],["445nan.com",[45,46,47,48,49]],["huya.com",50],["le.com",[51,52]],["axutongxue.onrender.com",53],["axutongxue.space",53],["axutongxue.cn",53],["axu.pages.dev",53],["axutongxue.vip",53],["axutongxue.com",53],["axutongxue.net",53],["enhuku.com",54],["sports.qq.com",[55,56]],["lpl.qq.com",[55,56]],["v.qq.com",[55,56]],["huaren.live",57],["nivod2.com",[58,59,60,61,62,63,64]],["nivod2.tv",[58,59,60,61,62,63,64]],["nivod4.com",[58,59,60,61,62,63,64]],["nivod5.com",[58,59,60,61,62,63,64]]]);
464
+ const hostnamesMap = new Map([["surirt.com",[0,1]],["520cc.cc",1],["520call.me",[1,11]],["baomidou.com",2],["nodejs.cn",[2,4,5]],["docsmall.com",2],["bilinovel.com",3],["huanqiu.com",[6,7]],["itbaoku.cn",8],["bigpixel.cn",8],["jkpan.cc",8],["ekamus.info",9],["koyi.pub",10],["bde4.icu",12],["tingfm.com",[12,14]],["slashlook.com",12],["linovelib.com",13],["linetv.tw",[15,16]],["ebb.io",[17,18]],["wenxuecity.com",19],["ddys.*",[20,21]],["ddrk.me",[20,21]],["sssam.com",22],["cocomanga.com",[23,24]],["ohmanhua.com",[23,24]],["onemanhua.com",[23,24]],["hboav.com",[25,26]],["cnys.tv",27],["now.com",[28,29,30]],["player.hboav.com",31],["x99av.com",32],["hamivideo.hinet.net",33],["jianshu.com",34],["xkyn.com",35],["tangdoucdn.com",36],["dianyingim.com",37],["xvideo.cc",38],["v-wb.youku.com",39],["m.youku.com",40],["v.youku.com",40],["edc1014070.pixnet.net",41],["m.biqiugege8.com",42],["theav.xyz",43],["69xx.one",43],["theporn.cc",43],["v.ifeng.com",44],["445nan.com",[45,46,47,48,49]],["huya.com",50],["le.com",[51,52]],["axutongxue.onrender.com",53],["axutongxue.space",53],["axutongxue.cn",53],["axu.pages.dev",53],["axutongxue.vip",53],["axutongxue.com",53],["axutongxue.net",53],["enhuku.com",54],["sports.qq.com",[55,56]],["lpl.qq.com",[55,56]],["v.qq.com",[55,56]],["huaren.live",57],["nivod2.com",[58,59,60,61,62,63,64]],["nivod2.tv",[58,59,60,61,62,63,64]],["nivod4.com",[58,59,60,61,62,63,64]],["nivod5.com",[58,59,60,61,62,63,64]]]);
465
465
  const exceptionsMap = new Map([]);
466
466
  const hasEntities = true;
467
467
  const hasAncestors = false;
@@ -20,207 +20,73 @@
20
20
 
21
21
  */
22
22
 
23
- // ruleset: vie-1
23
+ // ruleset: chn-0
24
24
 
25
25
  // Important!
26
26
  // Isolate from global scope
27
27
 
28
28
  // Start of local scope
29
- (function uBOL_addEventListenerDefuser() {
29
+ (function uBOL_setCookie() {
30
30
 
31
31
  /******************************************************************************/
32
32
 
33
- function addEventListenerDefuser(
34
- type = '',
35
- pattern = ''
33
+ function setCookie(
34
+ name = '',
35
+ value = '',
36
+ path = ''
36
37
  ) {
38
+ if ( name === '' ) { return; }
37
39
  const safe = safeSelf();
38
- const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
39
- const logPrefix = safe.makeLogPrefix('prevent-addEventListener', type, pattern);
40
- const reType = safe.patternToRegex(type, undefined, true);
41
- const rePattern = safe.patternToRegex(pattern);
42
- const debug = shouldDebug(extraArgs);
43
- const targetSelector = extraArgs.elements || undefined;
44
- const elementMatches = elem => {
45
- if ( targetSelector === 'window' ) { return elem === window; }
46
- if ( targetSelector === 'document' ) { return elem === document; }
47
- if ( elem && elem.matches && elem.matches(targetSelector) ) { return true; }
48
- const elems = Array.from(document.querySelectorAll(targetSelector));
49
- return elems.includes(elem);
50
- };
51
- const elementDetails = elem => {
52
- if ( elem instanceof Window ) { return 'window'; }
53
- if ( elem instanceof Document ) { return 'document'; }
54
- if ( elem instanceof Element === false ) { return '?'; }
55
- const parts = [];
56
- // https://github.com/uBlockOrigin/uAssets/discussions/17907#discussioncomment-9871079
57
- const id = String(elem.id);
58
- if ( id !== '' ) { parts.push(`#${CSS.escape(id)}`); }
59
- for ( let i = 0; i < elem.classList.length; i++ ) {
60
- parts.push(`.${CSS.escape(elem.classList.item(i))}`);
61
- }
62
- for ( let i = 0; i < elem.attributes.length; i++ ) {
63
- const attr = elem.attributes.item(i);
64
- if ( attr.name === 'id' ) { continue; }
65
- if ( attr.name === 'class' ) { continue; }
66
- parts.push(`[${CSS.escape(attr.name)}="${attr.value}"]`);
67
- }
68
- return parts.join('');
69
- };
70
- const shouldPrevent = (thisArg, type, handler) => {
71
- const matchesType = safe.RegExp_test.call(reType, type);
72
- const matchesHandler = safe.RegExp_test.call(rePattern, handler);
73
- const matchesEither = matchesType || matchesHandler;
74
- const matchesBoth = matchesType && matchesHandler;
75
- if ( debug === 1 && matchesBoth || debug === 2 && matchesEither ) {
76
- debugger; // eslint-disable-line no-debugger
77
- }
78
- if ( matchesBoth && targetSelector !== undefined ) {
79
- if ( elementMatches(thisArg) === false ) { return false; }
80
- }
81
- return matchesBoth;
82
- };
83
- const proxyFn = function(context) {
84
- const { callArgs, thisArg } = context;
85
- let t, h;
86
- try {
87
- t = String(callArgs[0]);
88
- if ( typeof callArgs[1] === 'function' ) {
89
- h = String(safe.Function_toString(callArgs[1]));
90
- } else if ( typeof callArgs[1] === 'object' && callArgs[1] !== null ) {
91
- if ( typeof callArgs[1].handleEvent === 'function' ) {
92
- h = String(safe.Function_toString(callArgs[1].handleEvent));
93
- }
94
- } else {
95
- h = String(callArgs[1]);
96
- }
97
- } catch {
98
- }
99
- if ( type === '' && pattern === '' ) {
100
- safe.uboLog(logPrefix, `Called: ${t}\n${h}\n${elementDetails(thisArg)}`);
101
- } else if ( shouldPrevent(thisArg, t, h) ) {
102
- return safe.uboLog(logPrefix, `Prevented: ${t}\n${h}\n${elementDetails(thisArg)}`);
103
- }
104
- return context.reflect();
105
- };
106
- runAt(( ) => {
107
- proxyApplyFn('EventTarget.prototype.addEventListener', proxyFn);
108
- proxyApplyFn('document.addEventListener', proxyFn);
109
- }, extraArgs.runAt);
110
- }
111
-
112
- function proxyApplyFn(
113
- target = '',
114
- handler = ''
115
- ) {
116
- let context = globalThis;
117
- let prop = target;
118
- for (;;) {
119
- const pos = prop.indexOf('.');
120
- if ( pos === -1 ) { break; }
121
- context = context[prop.slice(0, pos)];
122
- if ( context instanceof Object === false ) { return; }
123
- prop = prop.slice(pos+1);
124
- }
125
- const fn = context[prop];
126
- if ( typeof fn !== 'function' ) { return; }
127
- if ( proxyApplyFn.CtorContext === undefined ) {
128
- proxyApplyFn.ctorContexts = [];
129
- proxyApplyFn.CtorContext = class {
130
- constructor(...args) {
131
- this.init(...args);
132
- }
133
- init(callFn, callArgs) {
134
- this.callFn = callFn;
135
- this.callArgs = callArgs;
136
- return this;
137
- }
138
- reflect() {
139
- const r = Reflect.construct(this.callFn, this.callArgs);
140
- this.callFn = this.callArgs = this.private = undefined;
141
- proxyApplyFn.ctorContexts.push(this);
142
- return r;
143
- }
144
- static factory(...args) {
145
- return proxyApplyFn.ctorContexts.length !== 0
146
- ? proxyApplyFn.ctorContexts.pop().init(...args)
147
- : new proxyApplyFn.CtorContext(...args);
148
- }
149
- };
150
- proxyApplyFn.applyContexts = [];
151
- proxyApplyFn.ApplyContext = class {
152
- constructor(...args) {
153
- this.init(...args);
154
- }
155
- init(callFn, thisArg, callArgs) {
156
- this.callFn = callFn;
157
- this.thisArg = thisArg;
158
- this.callArgs = callArgs;
159
- return this;
160
- }
161
- reflect() {
162
- const r = Reflect.apply(this.callFn, this.thisArg, this.callArgs);
163
- this.callFn = this.thisArg = this.callArgs = this.private = undefined;
164
- proxyApplyFn.applyContexts.push(this);
165
- return r;
166
- }
167
- static factory(...args) {
168
- return proxyApplyFn.applyContexts.length !== 0
169
- ? proxyApplyFn.applyContexts.pop().init(...args)
170
- : new proxyApplyFn.ApplyContext(...args);
171
- }
172
- };
173
- proxyApplyFn.isCtor = new Map();
40
+ const logPrefix = safe.makeLogPrefix('set-cookie', name, value, path);
41
+ const normalized = value.toLowerCase();
42
+ const match = /^("?)(.+)\1$/.exec(normalized);
43
+ const unquoted = match && match[2] || normalized;
44
+ const validValues = getSafeCookieValuesFn();
45
+ if ( validValues.includes(unquoted) === false ) {
46
+ if ( /^-?\d+$/.test(unquoted) === false ) { return; }
47
+ const n = parseInt(value, 10) || 0;
48
+ if ( n < -32767 || n > 32767 ) { return; }
174
49
  }
175
- if ( proxyApplyFn.isCtor.has(target) === false ) {
176
- proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
177
- }
178
- const fnStr = fn.toString();
179
- const toString = (function toString() { return fnStr; }).bind(null);
180
- const proxyDetails = {
181
- apply(target, thisArg, args) {
182
- return handler(proxyApplyFn.ApplyContext.factory(target, thisArg, args));
183
- },
184
- get(target, prop) {
185
- if ( prop === 'toString' ) { return toString; }
186
- return Reflect.get(target, prop);
187
- },
188
- };
189
- if ( proxyApplyFn.isCtor.get(target) ) {
190
- proxyDetails.construct = function(target, args) {
191
- return handler(proxyApplyFn.CtorContext.factory(target, args));
192
- };
50
+
51
+ const done = setCookieFn(
52
+ false,
53
+ name,
54
+ value,
55
+ '',
56
+ path,
57
+ safe.getExtraArgs(Array.from(arguments), 3)
58
+ );
59
+
60
+ if ( done ) {
61
+ safe.uboLog(logPrefix, 'Done');
193
62
  }
194
- context[prop] = new Proxy(fn, proxyDetails);
195
63
  }
196
64
 
197
- function runAt(fn, when) {
198
- const intFromReadyState = state => {
199
- const targets = {
200
- 'loading': 1, 'asap': 1,
201
- 'interactive': 2, 'end': 2, '2': 2,
202
- 'complete': 3, 'idle': 3, '3': 3,
203
- };
204
- const tokens = Array.isArray(state) ? state : [ state ];
205
- for ( const token of tokens ) {
206
- const prop = `${token}`;
207
- if ( Object.hasOwn(targets, prop) === false ) { continue; }
208
- return targets[prop];
209
- }
210
- return 0;
211
- };
212
- const runAt = intFromReadyState(when);
213
- if ( intFromReadyState(document.readyState) >= runAt ) {
214
- fn(); return;
215
- }
216
- const onStateChange = ( ) => {
217
- if ( intFromReadyState(document.readyState) < runAt ) { return; }
218
- fn();
219
- safe.removeEventListener.apply(document, args);
220
- };
221
- const safe = safeSelf();
222
- const args = [ 'readystatechange', onStateChange, { capture: true } ];
223
- safe.addEventListener.apply(document, args);
65
+ function getSafeCookieValuesFn() {
66
+ return [
67
+ 'accept', 'reject',
68
+ 'accepted', 'rejected', 'notaccepted',
69
+ 'allow', 'disallow', 'deny',
70
+ 'allowed', 'denied',
71
+ 'approved', 'disapproved',
72
+ 'checked', 'unchecked',
73
+ 'dismiss', 'dismissed',
74
+ 'enable', 'disable',
75
+ 'enabled', 'disabled',
76
+ 'essential', 'nonessential',
77
+ 'forbidden', 'forever',
78
+ 'hide', 'hidden',
79
+ 'necessary', 'required',
80
+ 'ok',
81
+ 'on', 'off',
82
+ 'true', 't', 'false', 'f',
83
+ 'yes', 'y', 'no', 'n',
84
+ 'all', 'none', 'functional',
85
+ 'granted', 'done',
86
+ 'decline', 'declined',
87
+ 'closed', 'next', 'mandatory',
88
+ 'disagree', 'agree',
89
+ ];
224
90
  }
225
91
 
226
92
  function safeSelf() {
@@ -413,16 +279,90 @@ function safeSelf() {
413
279
  return safe;
414
280
  }
415
281
 
416
- function shouldDebug(details) {
417
- if ( details instanceof Object === false ) { return false; }
418
- return scriptletGlobals.canDebug && details.debug;
282
+ function setCookieFn(
283
+ trusted = false,
284
+ name = '',
285
+ value = '',
286
+ expires = '',
287
+ path = '',
288
+ options = {},
289
+ ) {
290
+ // https://datatracker.ietf.org/doc/html/rfc2616#section-2.2
291
+ // https://github.com/uBlockOrigin/uBlock-issues/issues/2777
292
+ if ( trusted === false && /[^!#$%&'*+\-.0-9A-Z[\]^_`a-z|~]/.test(name) ) {
293
+ name = encodeURIComponent(name);
294
+ }
295
+ // https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1
296
+ // The characters [",] are given a pass from the RFC requirements because
297
+ // apparently browsers do not follow the RFC to the letter.
298
+ if ( /[^ -:<-[\]-~]/.test(value) ) {
299
+ value = encodeURIComponent(value);
300
+ }
301
+
302
+ const cookieBefore = getCookieFn(name);
303
+ if ( cookieBefore !== undefined && options.dontOverwrite ) { return; }
304
+ if ( cookieBefore === value && options.reload ) { return; }
305
+
306
+ const cookieParts = [ name, '=', value ];
307
+ if ( expires !== '' ) {
308
+ cookieParts.push('; expires=', expires);
309
+ }
310
+
311
+ if ( path === '' ) { path = '/'; }
312
+ else if ( path === 'none' ) { path = ''; }
313
+ if ( path !== '' && path !== '/' ) { return; }
314
+ if ( path === '/' ) {
315
+ cookieParts.push('; path=/');
316
+ }
317
+
318
+ if ( trusted ) {
319
+ if ( options.domain ) {
320
+ let domain = options.domain;
321
+ if ( /^\/.+\//.test(domain) ) {
322
+ const baseURL = new URL(document.baseURI);
323
+ const reDomain = new RegExp(domain.slice(1, -1));
324
+ const match = reDomain.exec(baseURL.hostname);
325
+ domain = match ? match[0] : undefined;
326
+ }
327
+ if ( domain ) {
328
+ cookieParts.push(`; domain=${domain}`);
329
+ }
330
+ }
331
+ cookieParts.push('; Secure');
332
+ } else if ( /^__(Host|Secure)-/.test(name) ) {
333
+ cookieParts.push('; Secure');
334
+ }
335
+
336
+ try {
337
+ document.cookie = cookieParts.join('');
338
+ } catch {
339
+ }
340
+
341
+ const done = getCookieFn(name) === value;
342
+ if ( done && options.reload ) {
343
+ window.location.reload();
344
+ }
345
+
346
+ return done;
347
+ }
348
+
349
+ function getCookieFn(
350
+ name = ''
351
+ ) {
352
+ const safe = safeSelf();
353
+ for ( const s of safe.String_split.call(document.cookie, /\s*;\s*/) ) {
354
+ const pos = s.indexOf('=');
355
+ if ( pos === -1 ) { continue; }
356
+ if ( s.slice(0, pos) !== name ) { continue; }
357
+ return s.slice(pos+1).trim();
358
+ }
419
359
  }
420
360
 
421
361
  /******************************************************************************/
422
362
 
423
363
  const scriptletGlobals = {}; // eslint-disable-line
424
- const argsList = [["click","open"]];
425
- const hostnamesMap = new Map([["survey-smiles.com",0]]);
364
+ const argsList = [["getIsToJd","1"]];
365
+ const hostnamesMap = new Map([["nb.zol.com.cn",0]]);
426
366
  const exceptionsMap = new Map([]);
427
367
  const hasEntities = false;
428
368
  const hasAncestors = false;
@@ -490,7 +430,7 @@ if ( hasAncestors ) {
490
430
  // Apply scriplets
491
431
  for ( const i of todoIndices ) {
492
432
  if ( tonotdoIndices.has(i) ) { continue; }
493
- try { addEventListenerDefuser(...argsList[i]); }
433
+ try { setCookie(...argsList[i]); }
494
434
  catch { }
495
435
  }
496
436
 
@@ -460,8 +460,8 @@ function validateConstantFn(trusted, raw, extraArgs = {}) {
460
460
  /******************************************************************************/
461
461
 
462
462
  const scriptletGlobals = {}; // eslint-disable-line
463
- const argsList = [["cookie_alert_overlay","noopFunc"],["adblock","false"],["AdHandler.adblocked","0"],["AdHandler.adBlockEnabled","0"],["AdHandler.checkAdblock","noopFunc"],["tie.ad_blocker_detector","undefined"],["ENABLE_PAGE_LEVEL_ADS","true"],["gemiusStream","{}"],["gemiusStream.event","noopFunc"],["gemiusStream.init","noopFunc"],["window.ado","null"]];
464
- const hostnamesMap = new Map([["laptophardware.hu",0],["milestone66.hu",0],["reformsziget.hu",0],["paplanvilag.hu",0],["foodker.hu",0],["angol-magyar-szotar.hu",1],["embed.indavideo.hu",[2,3,4]],["huaweiblog.hu",5],["myonlineradio.hu",6],["player.rtl.hu",[7,8,9]],["femina.hu",10]]);
463
+ const argsList = [["show_modal","noopFunc"],["cookie_alert_overlay","noopFunc"],["adblock","false"],["AdHandler.adblocked","0"],["AdHandler.adBlockEnabled","0"],["AdHandler.checkAdblock","noopFunc"],["tie.ad_blocker_detector","undefined"],["ENABLE_PAGE_LEVEL_ADS","true"],["gemiusStream","{}"],["gemiusStream.event","noopFunc"],["gemiusStream.init","noopFunc"],["window.ado","null"]];
464
+ const hostnamesMap = new Map([["arcanum.com",0],["laptophardware.hu",1],["milestone66.hu",1],["reformsziget.hu",1],["paplanvilag.hu",1],["foodker.hu",1],["angol-magyar-szotar.hu",2],["embed.indavideo.hu",[3,4,5]],["huaweiblog.hu",6],["myonlineradio.hu",7],["player.rtl.hu",[8,9,10]],["femina.hu",11]]);
465
465
  const exceptionsMap = new Map([]);
466
466
  const hasEntities = false;
467
467
  const hasAncestors = false;
@@ -62,35 +62,17 @@ function hrefSanitizer(
62
62
  }
63
63
  return '';
64
64
  };
65
- const extractParam = (href, source) => {
66
- if ( Boolean(source) === false ) { return href; }
67
- const recursive = source.includes('?', 1);
68
- const end = recursive ? source.indexOf('?', 1) : source.length;
69
- try {
70
- const url = new URL(href, document.location);
71
- let value = url.searchParams.get(source.slice(1, end));
72
- if ( value === null ) { return href }
73
- if ( recursive ) { return extractParam(value, source.slice(end)); }
74
- return value;
75
- } catch {
76
- }
77
- return href;
78
- };
79
65
  const extractURL = (elem, source) => {
80
66
  if ( /^\[.*\]$/.test(source) ) {
81
67
  return elem.getAttribute(source.slice(1,-1).trim()) || '';
82
68
  }
83
69
  if ( source === 'text' ) {
84
70
  return elem.textContent
85
- .replace(/^[^\x21-\x7e]+/, '') // remove leading invalid characters
86
- .replace(/[^\x21-\x7e]+$/, '') // remove trailing invalid characters
87
- ;
71
+ .replace(/^[^\x21-\x7e]+/, '') // remove leading invalid characters
72
+ .replace(/[^\x21-\x7e]+$/, ''); // remove trailing invalid characters
88
73
  }
89
- if ( source.startsWith('?') === false ) { return ''; }
90
- const steps = source.replace(/(\S)\?/g, '\\1?').split(/\s+/);
91
- const url = steps.length === 1
92
- ? extractParam(elem.href, source)
93
- : urlSkip(elem.href, false, steps);
74
+ const steps = source.replace(/(\S)\?/g, '\\1 ?').split(/\s+/);
75
+ const url = urlSkip(elem.href, false, steps);
94
76
  if ( url === undefined ) { return; }
95
77
  return url.replace(/ /g, '%20');
96
78
  };
@@ -484,7 +484,7 @@ function safeSelf() {
484
484
 
485
485
  const scriptletGlobals = {}; // eslint-disable-line
486
486
  const argsList = [["adsbygoogle"]];
487
- const hostnamesMap = new Map([["sheee.co.il",0],["walla.co.il",0],["ynet.co.il",0],["mako.co.il",0],["n12.co.il",0],["tech12.co.il",0],["tvbee.co.il",0],["calcalist.co.il",0],["13news.co.il",0],["13tv.co.il",0],["sport5.co.il",0],["one.co.il",0],["inn.co.il",0],["yad2.co.il",0],["haaretz.co.il",0],["themarker.com",0],["www-haaretz-co-il.eu1.proxy.openathens.net",0],["www-themarker-com.eu1.proxy.openathens.net",0]]);
487
+ const hostnamesMap = new Map([["sheee.co.il",0],["walla.co.il",0],["ynet.co.il",0],["mako.co.il",0],["n12.co.il",0],["tech12.co.il",0],["tvbee.co.il",0],["calcalist.co.il",0],["13news.co.il",0],["13tv.co.il",0],["sport5.co.il",0],["one.co.il",0],["inn.co.il",0],["yad2.co.il",0],["haaretz.co.il",0],["themarker.com",0],["foodsdictionary.co.il",0],["hwzone.co.il",0],["www-haaretz-co-il.eu1.proxy.openathens.net",0],["www-themarker-com.eu1.proxy.openathens.net",0]]);
488
488
  const exceptionsMap = new Map([]);
489
489
  const hasEntities = false;
490
490
  const hasAncestors = false;
@@ -251,8 +251,8 @@ function safeSelf() {
251
251
  /******************************************************************************/
252
252
 
253
253
  const scriptletGlobals = {}; // eslint-disable-line
254
- const argsList = [["reward_countdown"],["timerId","1000"],[".run()}","1000"]];
255
- const hostnamesMap = new Map([["shindanmaker.com",0],["portal.game.sycasualgames.com",1],["collepic.net",2]]);
254
+ const argsList = [["reward_countdown"],["timerId","1000"],[".run()}","1000"],["skipcnt","1000","0.001"]];
255
+ const hostnamesMap = new Map([["shindanmaker.com",0],["portal.game.sycasualgames.com",1],["collepic.net",2],["portal.game.success-corp.jp",3]]);
256
256
  const exceptionsMap = new Map([]);
257
257
  const hasEntities = false;
258
258
  const hasAncestors = false;
@@ -62,35 +62,17 @@ function hrefSanitizer(
62
62
  }
63
63
  return '';
64
64
  };
65
- const extractParam = (href, source) => {
66
- if ( Boolean(source) === false ) { return href; }
67
- const recursive = source.includes('?', 1);
68
- const end = recursive ? source.indexOf('?', 1) : source.length;
69
- try {
70
- const url = new URL(href, document.location);
71
- let value = url.searchParams.get(source.slice(1, end));
72
- if ( value === null ) { return href }
73
- if ( recursive ) { return extractParam(value, source.slice(end)); }
74
- return value;
75
- } catch {
76
- }
77
- return href;
78
- };
79
65
  const extractURL = (elem, source) => {
80
66
  if ( /^\[.*\]$/.test(source) ) {
81
67
  return elem.getAttribute(source.slice(1,-1).trim()) || '';
82
68
  }
83
69
  if ( source === 'text' ) {
84
70
  return elem.textContent
85
- .replace(/^[^\x21-\x7e]+/, '') // remove leading invalid characters
86
- .replace(/[^\x21-\x7e]+$/, '') // remove trailing invalid characters
87
- ;
71
+ .replace(/^[^\x21-\x7e]+/, '') // remove leading invalid characters
72
+ .replace(/[^\x21-\x7e]+$/, ''); // remove trailing invalid characters
88
73
  }
89
- if ( source.startsWith('?') === false ) { return ''; }
90
- const steps = source.replace(/(\S)\?/g, '\\1?').split(/\s+/);
91
- const url = steps.length === 1
92
- ? extractParam(elem.href, source)
93
- : urlSkip(elem.href, false, steps);
74
+ const steps = source.replace(/(\S)\?/g, '\\1 ?').split(/\s+/);
75
+ const url = urlSkip(elem.href, false, steps);
94
76
  if ( url === undefined ) { return; }
95
77
  return url.replace(/ /g, '%20');
96
78
  };
@@ -460,8 +442,8 @@ function urlSkip(url, blocked, steps, directive = {}) {
460
442
  /******************************************************************************/
461
443
 
462
444
  const scriptletGlobals = {}; // eslint-disable-line
463
- const argsList = [["a[href^=\"https://app.adjust.com/\"]","?redirect"],["a[href*=\"a8ejpredirect\"]","?a8ejpredirect"],["a[href^=\"https://al.dmm.com/?lurl=\"]","?lurl"],["a[href^=\"https://affiliate.suruga-ya.jp/modules/af/af_jump.php?\"]","?goods_url"],["a[href*=\"hb.afl.rakuten.co.jp/hgc/\"][href*=\"/?pc=\"]","?pc"],["a[href*=\"ck.jp.ap.valuecommerce.com/servlet/referral?\"][href*=\"&vc_url=\"]","?vc_url"],["a[href^=\"https://adclick.g.doubleclick.net/\"][href*=\"adurl=\"]","?adurl"]];
464
- const hostnamesMap = new Map([["www.yahoo.co.jp",0],["figure-times.com",1],["figsoku.net",[2,3,4,5]],["safeframe.googlesyndication.com",6]]);
445
+ const argsList = [["a[href^=\"https://app.adjust.com/\"]","?redirect"],["a[href*=\"a8ejpredirect\"]","?a8ejpredirect"],["a[href^=\"https://al.dmm.com/?lurl=\"]","?lurl"],["a[href^=\"https://affiliate.suruga-ya.jp/modules/af/af_jump.php?\"]","?goods_url"],["a[href*=\"hb.afl.rakuten.co.jp/hgc/\"][href*=\"/?pc=\"]","?pc"],["a[href*=\"ck.jp.ap.valuecommerce.com/servlet/referral?\"][href*=\"&vc_url=\"]","?vc_url"],["a[href^=\"https://al.fanza.co.jp/?lurl=\"]","?lurl"],["a[href^=\"https://adclick.g.doubleclick.net/\"][href*=\"adurl=\"]","?adurl"]];
446
+ const hostnamesMap = new Map([["www.yahoo.co.jp",0],["figure-times.com",1],["figsoku.net",[2,3,4,5]],["ura-akiba.jp",6],["safeframe.googlesyndication.com",7]]);
465
447
  const exceptionsMap = new Map([]);
466
448
  const hasEntities = false;
467
449
  const hasAncestors = false;
@@ -425,8 +425,8 @@ function getRandomTokenFn() {
425
425
  /******************************************************************************/
426
426
 
427
427
  const scriptletGlobals = {}; // eslint-disable-line
428
- const argsList = [["ad_flg ad_url data.adData data.adTagUrl"],["ads"],["result.ad_info"],["result.paths.[].ad_info"],["ads.[].imageUrl"],["data.adData"],["props.initialProps.pageProps.pageData.brandingAds"]];
429
- const hostnamesMap = new Map([["lemino.docomo.ne.jp",0],["sports.tv.rakuten.co.jp",[1,2,3]],["tver.jp",[1,5]],["ikaskey.bktsk.com",4],["live-theater.net",4],["misskey.art",4],["misskey.resonite.love",4],["misskeytsf.love",4],["misskirara.net",4],["p1.a9z.dev",4],["takusuki.com",4],["trpger.us",4],["mk.yopo.work",4],["sushi.ski",4],["warpday.net",4],["zadankai.club",4],["misskey.io",4],["search.yahoo.co.jp",6]]);
428
+ const argsList = [["ad_flg ad_url data.adData data.adTagUrl"],["ads"],["result.ad_info"],["result.paths.[].ad_info"],["ads.[].imageUrl"],["data.adData"],["props.initialProps.pageProps.pageData.brandingAds"],["data.response.videoAds data.response.waku.tagRelatedBanner"]];
429
+ const hostnamesMap = new Map([["lemino.docomo.ne.jp",0],["sports.tv.rakuten.co.jp",[1,2,3]],["tver.jp",[1,5]],["ikaskey.bktsk.com",4],["live-theater.net",4],["misskey.art",4],["misskey.resonite.love",4],["misskeytsf.love",4],["misskirara.net",4],["p1.a9z.dev",4],["takusuki.com",4],["trpger.us",4],["mk.yopo.work",4],["sushi.ski",4],["warpday.net",4],["zadankai.club",4],["misskey.io",4],["search.yahoo.co.jp",6],["www.nicovideo.jp",7]]);
430
430
  const exceptionsMap = new Map([]);
431
431
  const hasEntities = false;
432
432
  const hasAncestors = false;
@@ -371,8 +371,8 @@ function getRandomTokenFn() {
371
371
  /******************************************************************************/
372
372
 
373
373
  const scriptletGlobals = {}; // eslint-disable-line
374
- const argsList = [["popMagic.init"],["$.prototype.html","/\\/images\\/[A-z0-9-_]+\\.?(jpg|gif)/"],["jQuery",".adsbygoogle"],["jQuery.prototype.load","is_coupang"],["jQuery","link.coupang.com"],["jQuery","coupang_dont_show_prompty_interval"],["jQuery.prototype.on","is_coupang"],["open","/\\/popup\\//"],["bannerpop.popup"],["window.open","/gears/popup/default.aspx"],["window.open","notice_view_html.php"],["$","/danawa-dpg-common-sponsorBanner-/"],["$","myScript[myScript.length - 1 ]"],["document.addEventListener","/adscale_slot_id/"],["ai_adb.init"],["ai_run_scripts"],["EventTarget.prototype.addEventListener","_ad="],["chp_ads_blocker_detector"],["document.getElementById","adblock"],["$",".adsense-area"],["addEventListener","fuckadblock.min.js"],["$","#ad_center"]];
375
- const hostnamesMap = new Map([["watchfreejavonline.co",0],["m.humoruniv.com",1],["kilho.net",2],["smartinpress.com",3],["newsn24.com",3],["yachuk.com",4],["aannm.cafe24.com",5],["beomil09121.cafe24.com",5],["actingbaum.co.kr",6],["picknpicker.com",6],["moneyissues.co.kr",6],["sotrychatter.com",6],["skysky138.com",6],["keela.co.kr",6],["jiwootube.com",6],["news.ssongyi.co.kr",6],["xn--wh1b751afvcpsb.com",6],["nesin.com",7],["mjmedi.com",8],["cfnews.kr",9],["sjtoday.kr",10],["dpg.danawa.com",[11,12]],["asdn.kr",13],["healthfeed.co.kr",13],["bikesell.co.kr",13],["remiz.co.kr",13],["enjoytaiwan.co.kr",13],["poketory.com",13],["withukor.com",13],["tistory.com",13],["love.asdn.kr",13],["untitle.org",13],["seo-marketing.co.kr",13],["plankim.com",14],["jootc.com",15],["ehpub.co.kr",15],["dcinside.com",16],["deokhu.com",17],["3dpchip.com",17],["ssulwar.com",18],["ilsangt.tistory.com",19],["focuskr.tistory.com",20],["singingdalong.blogspot.com",21]]);
374
+ const argsList = [["popMagic.init"],["$.prototype.html","/\\/images\\/[A-z0-9-_]+\\.?(jpg|gif)/"],["jQuery",".adsbygoogle"],["jQuery.prototype.load","is_coupang"],["jQuery","link.coupang.com"],["jQuery","coupang_dont_show_prompty_interval"],["jQuery.prototype.on","is_coupang"],["open","/\\/popup\\//"],["bannerpop.popup"],["window.open","/gears/popup/default.aspx"],["window.open","notice_view_html.php"],["$","/danawa-dpg-common-sponsorBanner-/"],["$","myScript[myScript.length - 1 ]"],["document.addEventListener","/adscale_slot_id/"],["ai_adb.init"],["ai_run_scripts"],["chp_ads_blocker_detector"],["document.getElementById","adblock"],["$",".adsense-area"],["addEventListener","fuckadblock.min.js"],["$","#ad_center"]];
375
+ const hostnamesMap = new Map([["watchfreejavonline.co",0],["m.humoruniv.com",1],["kilho.net",2],["smartinpress.com",3],["newsn24.com",3],["yachuk.com",4],["aannm.cafe24.com",5],["beomil09121.cafe24.com",5],["actingbaum.co.kr",6],["picknpicker.com",6],["moneyissues.co.kr",6],["sotrychatter.com",6],["skysky138.com",6],["keela.co.kr",6],["jiwootube.com",6],["news.ssongyi.co.kr",6],["xn--wh1b751afvcpsb.com",6],["nesin.com",7],["mjmedi.com",8],["cfnews.kr",9],["sjtoday.kr",10],["dpg.danawa.com",[11,12]],["asdn.kr",13],["healthfeed.co.kr",13],["bikesell.co.kr",13],["remiz.co.kr",13],["enjoytaiwan.co.kr",13],["poketory.com",13],["withukor.com",13],["tistory.com",13],["love.asdn.kr",13],["untitle.org",13],["seo-marketing.co.kr",13],["plankim.com",14],["jootc.com",15],["ehpub.co.kr",15],["deokhu.com",16],["3dpchip.com",16],["ssulwar.com",17],["ilsangt.tistory.com",18],["focuskr.tistory.com",19],["singingdalong.blogspot.com",20]]);
376
376
  const exceptionsMap = new Map([]);
377
377
  const hasEntities = false;
378
378
  const hasAncestors = false;