nonebot-plugin-osubot 6.24.0__tar.gz → 6.24.2__tar.gz

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.

Potentially problematic release.


This version of nonebot-plugin-osubot might be problematic. Click here for more details.

Files changed (452) hide show
  1. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/PKG-INFO +1 -1
  2. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview.py +64 -0
  3. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/css/style.css +258 -0
  4. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/gif.js/README.md +109 -0
  5. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/gif.js/gif.js +3 -0
  6. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/gif.js/gif.js.map +1 -0
  7. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/gif.js/gif.worker.js +3 -0
  8. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/gif.js/gif.worker.js.map +1 -0
  9. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/beatmap/beatmap.js +211 -0
  10. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/beatmap/hitobject.js +29 -0
  11. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/beatmap/point.js +55 -0
  12. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/beatmap/scroll.js +45 -0
  13. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/beatmap/timingpoint.js +35 -0
  14. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/catch/LegacyRandom.js +81 -0
  15. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/catch/PalpableCatchHitObject.js +53 -0
  16. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/catch/bananashower.js +33 -0
  17. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/catch/catch.js +211 -0
  18. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/catch/fruit.js +21 -0
  19. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/catch/juicestream.js +176 -0
  20. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/mania/hitnote.js +21 -0
  21. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/mania/holdnote.js +37 -0
  22. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/mania/mania.js +164 -0
  23. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/preview.js +61 -0
  24. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/standard/curve/bezier2.js +33 -0
  25. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/standard/curve/catmullcurve.js +34 -0
  26. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/standard/curve/centripetalcatmullrom.js +30 -0
  27. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/standard/curve/circumstancedcircle.js +47 -0
  28. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/standard/curve/curve.js +25 -0
  29. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/standard/curve/curvetype.js +17 -0
  30. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/standard/curve/equaldistancemulticurve.js +70 -0
  31. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/standard/curve/linearbezier.js +40 -0
  32. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/standard/hitcircle.js +85 -0
  33. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/standard/slider.js +120 -0
  34. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/standard/spinner.js +56 -0
  35. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/standard/standard.js +170 -0
  36. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/taiko/donkat.js +40 -0
  37. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/taiko/drumroll.js +34 -0
  38. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/taiko/shaker.js +58 -0
  39. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/taiko/taiko.js +120 -0
  40. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/js/util.js +61 -0
  41. nonebot-plugin-osubot-6.24.2/nonebot_plugin_osubot/draw/osu_preview_templates/pic.html +110 -0
  42. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/preview.py +7 -0
  43. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/pp.py +7 -0
  44. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/pyproject.toml +2 -2
  45. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/README.md +0 -0
  46. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/__init__.py +0 -0
  47. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/api.py +0 -0
  48. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/beatmap_stats_moder.py +0 -0
  49. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/config.py +0 -0
  50. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/data/osu/1849145.osz +0 -0
  51. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/data/osu/1849145.zip +0 -0
  52. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/database/__init__.py +0 -0
  53. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/database/models.py +0 -0
  54. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/__init__.py +0 -0
  55. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/bmap.py +0 -0
  56. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/bp.py +0 -0
  57. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview.py +0 -0
  58. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/css/style.css +0 -0
  59. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/beatmap.js +0 -0
  60. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/hitobject.js +0 -0
  61. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/point.js +0 -0
  62. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/scroll.js +0 -0
  63. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/timingpoint.js +0 -0
  64. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/LegacyRandom.js +0 -0
  65. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/PalpableCatchHitObject.js +0 -0
  66. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/bananashower.js +0 -0
  67. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/catch.js +0 -0
  68. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/fruit.js +0 -0
  69. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/catch/juicestream.js +0 -0
  70. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/fakeaudio.js +0 -0
  71. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/preview.js +0 -0
  72. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/bezier2.js +0 -0
  73. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/catmullcurve.js +0 -0
  74. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/centripetalcatmullrom.js +0 -0
  75. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/circumstancedcircle.js +0 -0
  76. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/curve.js +0 -0
  77. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/curvetype.js +0 -0
  78. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/equaldistancemulticurve.js +0 -0
  79. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/curve/linearbezier.js +0 -0
  80. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/hitcircle.js +0 -0
  81. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/slider.js +0 -0
  82. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/standard/spinner.js +0 -0
  83. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/util.js +0 -0
  84. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/viewbox.js +0 -0
  85. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/js/zip.min.js +0 -0
  86. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/catch_preview_templates/pic.html +0 -0
  87. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/echarts.py +0 -0
  88. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/info.py +0 -0
  89. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/map.py +0 -0
  90. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/match_history.py +0 -0
  91. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/rating.py +0 -0
  92. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/score.py +0 -0
  93. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/static.py +0 -0
  94. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/taiko_preview.py +0 -0
  95. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/templates/bpa_chart.html +0 -0
  96. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/templates/echarts.min.js +0 -0
  97. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/templates/mod_chart.html +0 -0
  98. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/templates/pp_rank_line_chart.html +0 -0
  99. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/draw/utils.py +0 -0
  100. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/exceptions.py +0 -0
  101. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/file.py +0 -0
  102. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/info/__init__.py +0 -0
  103. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/info/bg.py +0 -0
  104. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/info/bind.py +0 -0
  105. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/mania/__init__.py +0 -0
  106. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/__init__.py +0 -0
  107. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/bind.py +0 -0
  108. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/bp.py +0 -0
  109. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/bp_analyze.py +0 -0
  110. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/getbg.py +0 -0
  111. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/guess.py +0 -0
  112. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/history.py +0 -0
  113. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/info.py +0 -0
  114. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/map.py +0 -0
  115. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/map_convert.py +0 -0
  116. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/match.py +0 -0
  117. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/medal.py +0 -0
  118. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/mu.py +0 -0
  119. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/osu_help.py +0 -0
  120. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/osudl.py +0 -0
  121. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/pr.py +0 -0
  122. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/rank.py +0 -0
  123. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/rating.py +0 -0
  124. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/recommend.py +0 -0
  125. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/score.py +0 -0
  126. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/update.py +0 -0
  127. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/update_mode.py +0 -0
  128. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/url_match.py +0 -0
  129. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/matcher/utils.py +0 -0
  130. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/mods.py +0 -0
  131. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/network/__init__.py +0 -0
  132. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/network/auto_retry.py +0 -0
  133. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/network/first_response.py +0 -0
  134. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/network/manager.py +0 -0
  135. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/Best Performance.png +0 -0
  136. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/History Score.jpg +0 -0
  137. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/beatmapinfo.png +0 -0
  138. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/convert.jpg +0 -0
  139. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/detail.png +0 -0
  140. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AD.png +0 -0
  141. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AE.png +0 -0
  142. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AF.png +0 -0
  143. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AG.png +0 -0
  144. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AI.png +0 -0
  145. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AL.png +0 -0
  146. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AM.png +0 -0
  147. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AO.png +0 -0
  148. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AQ.png +0 -0
  149. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AR.png +0 -0
  150. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AS.png +0 -0
  151. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AT.png +0 -0
  152. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AU.png +0 -0
  153. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AW.png +0 -0
  154. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AX.png +0 -0
  155. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/AZ.png +0 -0
  156. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BA.png +0 -0
  157. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BB.png +0 -0
  158. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BD.png +0 -0
  159. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BE.png +0 -0
  160. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BF.png +0 -0
  161. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BG.png +0 -0
  162. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BH.png +0 -0
  163. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BI.png +0 -0
  164. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BJ.png +0 -0
  165. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BL.png +0 -0
  166. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BM.png +0 -0
  167. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BN.png +0 -0
  168. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BO.png +0 -0
  169. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BQ (1).png +0 -0
  170. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BQ (2).png +0 -0
  171. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BR.png +0 -0
  172. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BS.png +0 -0
  173. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BT.png +0 -0
  174. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BV.png +0 -0
  175. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BW.png +0 -0
  176. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BY.png +0 -0
  177. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/BZ.png +0 -0
  178. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CA.png +0 -0
  179. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CD.png +0 -0
  180. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CF.png +0 -0
  181. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CG.png +0 -0
  182. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CH.png +0 -0
  183. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CI.png +0 -0
  184. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CK.png +0 -0
  185. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CL.png +0 -0
  186. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CM.png +0 -0
  187. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CN.png +0 -0
  188. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CO.png +0 -0
  189. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CR.png +0 -0
  190. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CU.png +0 -0
  191. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CV.png +0 -0
  192. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CX.png +0 -0
  193. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CY.png +0 -0
  194. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/CZ.png +0 -0
  195. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/DE.png +0 -0
  196. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/DJ.png +0 -0
  197. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/DK.png +0 -0
  198. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/DM.png +0 -0
  199. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/DO.png +0 -0
  200. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/DZ.png +0 -0
  201. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/EC.png +0 -0
  202. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/EE.png +0 -0
  203. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/EG.png +0 -0
  204. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/EH.png +0 -0
  205. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/ER.png +0 -0
  206. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/ES.png +0 -0
  207. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/ET.png +0 -0
  208. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/FI.png +0 -0
  209. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/FJ.png +0 -0
  210. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/FK.png +0 -0
  211. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/FO.png +0 -0
  212. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/FR.png +0 -0
  213. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GA.png +0 -0
  214. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GB.png +0 -0
  215. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GD.png +0 -0
  216. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GE.png +0 -0
  217. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GF.png +0 -0
  218. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GG.png +0 -0
  219. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GH.png +0 -0
  220. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GI.png +0 -0
  221. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GL.png +0 -0
  222. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GM.png +0 -0
  223. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GN.png +0 -0
  224. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GP.png +0 -0
  225. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GQ.png +0 -0
  226. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GR.png +0 -0
  227. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GS.png +0 -0
  228. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GT.png +0 -0
  229. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GU.png +0 -0
  230. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GW.png +0 -0
  231. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/GY.png +0 -0
  232. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/HK.png +0 -0
  233. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/HM.png +0 -0
  234. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/HN.png +0 -0
  235. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/HR.png +0 -0
  236. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/HT.png +0 -0
  237. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/HU.png +0 -0
  238. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/ID.png +0 -0
  239. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/IE.png +0 -0
  240. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/IL.png +0 -0
  241. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/IM.png +0 -0
  242. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/IN.png +0 -0
  243. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/IO.png +0 -0
  244. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/IQ.png +0 -0
  245. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/IR.png +0 -0
  246. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/IS.png +0 -0
  247. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/IT.png +0 -0
  248. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/JE.png +0 -0
  249. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/JM.png +0 -0
  250. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/JO.png +0 -0
  251. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/JP.png +0 -0
  252. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/KE.png +0 -0
  253. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/KG.png +0 -0
  254. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/KH.png +0 -0
  255. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/KI.png +0 -0
  256. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/KM.png +0 -0
  257. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/KN.png +0 -0
  258. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/KP.png +0 -0
  259. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/KR.png +0 -0
  260. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/KW.png +0 -0
  261. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/KY.png +0 -0
  262. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/KZ.png +0 -0
  263. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/LA.png +0 -0
  264. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/LB.png +0 -0
  265. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/LC.png +0 -0
  266. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/LI.png +0 -0
  267. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/LK.png +0 -0
  268. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/LR.png +0 -0
  269. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/LS.png +0 -0
  270. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/LT.png +0 -0
  271. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/LU.png +0 -0
  272. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/LV.png +0 -0
  273. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/LY.png +0 -0
  274. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MA.png +0 -0
  275. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MC.png +0 -0
  276. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MD.png +0 -0
  277. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/ME.png +0 -0
  278. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MF.png +0 -0
  279. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MG.png +0 -0
  280. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MH.png +0 -0
  281. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MK.png +0 -0
  282. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/ML.png +0 -0
  283. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MM.png +0 -0
  284. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MN.png +0 -0
  285. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MO.png +0 -0
  286. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MP.png +0 -0
  287. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MQ.png +0 -0
  288. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MR.png +0 -0
  289. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MS.png +0 -0
  290. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MT.png +0 -0
  291. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MU.png +0 -0
  292. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MV.png +0 -0
  293. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MW.png +0 -0
  294. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MX.png +0 -0
  295. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MY.png +0 -0
  296. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/MZ.png +0 -0
  297. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/NA.png +0 -0
  298. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/NC.png +0 -0
  299. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/NE.png +0 -0
  300. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/NF.png +0 -0
  301. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/NG.png +0 -0
  302. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/NI.png +0 -0
  303. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/NL.png +0 -0
  304. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/NO.png +0 -0
  305. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/NP.png +0 -0
  306. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/NR.png +0 -0
  307. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/NU.png +0 -0
  308. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/NZ.png +0 -0
  309. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/OM.png +0 -0
  310. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PA.png +0 -0
  311. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PE.png +0 -0
  312. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PF.png +0 -0
  313. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PG.png +0 -0
  314. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PH.png +0 -0
  315. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PK.png +0 -0
  316. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PL.png +0 -0
  317. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PM.png +0 -0
  318. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PN.png +0 -0
  319. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PR.png +0 -0
  320. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PS.png +0 -0
  321. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PT.png +0 -0
  322. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PW.png +0 -0
  323. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/PY.png +0 -0
  324. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/QA.png +0 -0
  325. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/RE.png +0 -0
  326. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/RO.png +0 -0
  327. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/RS.png +0 -0
  328. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/RU.png +0 -0
  329. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/RW.png +0 -0
  330. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SA.png +0 -0
  331. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SB.png +0 -0
  332. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SC.png +0 -0
  333. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SD.png +0 -0
  334. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SE.png +0 -0
  335. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SG.png +0 -0
  336. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SH.png +0 -0
  337. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SI.png +0 -0
  338. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SJ.png +0 -0
  339. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SK.png +0 -0
  340. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SL.png +0 -0
  341. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SM.png +0 -0
  342. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SN.png +0 -0
  343. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SO.png +0 -0
  344. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SR.png +0 -0
  345. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SS.png +0 -0
  346. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/ST.png +0 -0
  347. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SV.png +0 -0
  348. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SY.png +0 -0
  349. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/SZ.png +0 -0
  350. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TC.png +0 -0
  351. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TD.png +0 -0
  352. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TF.png +0 -0
  353. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TG.png +0 -0
  354. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TH.png +0 -0
  355. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TJ.png +0 -0
  356. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TK.png +0 -0
  357. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TL.png +0 -0
  358. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TM.png +0 -0
  359. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TN.png +0 -0
  360. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TO.png +0 -0
  361. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TR.png +0 -0
  362. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TT.png +0 -0
  363. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TV.png +0 -0
  364. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TW.png +0 -0
  365. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/TZ.png +0 -0
  366. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/UA.png +0 -0
  367. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/UG.png +0 -0
  368. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/UM.png +0 -0
  369. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/US.png +0 -0
  370. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/UY.png +0 -0
  371. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/UZ.png +0 -0
  372. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/VA.png +0 -0
  373. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/VC.png +0 -0
  374. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/VE.png +0 -0
  375. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/VG.png +0 -0
  376. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/VI.png +0 -0
  377. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/VN.png +0 -0
  378. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/VU.png +0 -0
  379. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/WF.png +0 -0
  380. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/WS.png +0 -0
  381. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/YE.png +0 -0
  382. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/YT.png +0 -0
  383. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/ZA.png +0 -0
  384. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/ZM.png +0 -0
  385. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/flags/ZW.png +0 -0
  386. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/fonts/Extra.otf +0 -0
  387. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/fonts/Torus Regular.otf +0 -0
  388. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/fonts/Torus SemiBold.otf +0 -0
  389. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/fonts/Venera.otf +0 -0
  390. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/help.png +0 -0
  391. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/info.png +0 -0
  392. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/maniabeatmapinfo.png +0 -0
  393. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/match/mplink.png +0 -0
  394. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/match/mplink_map.png +0 -0
  395. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/match/team_blue.png +0 -0
  396. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/match/team_red.png +0 -0
  397. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/medals/medals.json +0 -0
  398. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/4K.png +0 -0
  399. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/5K.png +0 -0
  400. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/6K.png +0 -0
  401. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/7K.png +0 -0
  402. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/8K.png +0 -0
  403. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/9K.png +0 -0
  404. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/AP.png +0 -0
  405. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/CL.png +0 -0
  406. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/DT.png +0 -0
  407. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/EZ.png +0 -0
  408. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/FI.png +0 -0
  409. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/FL.png +0 -0
  410. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/HD.png +0 -0
  411. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/HR.png +0 -0
  412. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/HT.png +0 -0
  413. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/MR.png +0 -0
  414. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/NC.png +0 -0
  415. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/NF.png +0 -0
  416. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/PF.png +0 -0
  417. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/RX.png +0 -0
  418. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/SD.png +0 -0
  419. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/SO.png +0 -0
  420. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/TD.png +0 -0
  421. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/mods/V2.png +0 -0
  422. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/pfm_ctb.png +0 -0
  423. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/pfm_mania.png +0 -0
  424. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/pfm_std.png +0 -0
  425. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/pfm_taiko.png +0 -0
  426. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/ranking/ranking-A.png +0 -0
  427. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/ranking/ranking-B.png +0 -0
  428. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/ranking/ranking-C.png +0 -0
  429. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/ranking/ranking-D.png +0 -0
  430. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/ranking/ranking-F.png +0 -0
  431. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/ranking/ranking-S.png +0 -0
  432. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/ranking/ranking-SH.png +0 -0
  433. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/ranking/ranking-X.png +0 -0
  434. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/ranking/ranking-XH.png +0 -0
  435. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/work/bmap.png +0 -0
  436. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/work/center.png +0 -0
  437. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/work/left.png +0 -0
  438. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/work/right.png +0 -0
  439. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/work/stardiff.png +0 -0
  440. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/work/stars.png +0 -0
  441. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/work/stars_expertplus.png +0 -0
  442. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/osufile/work/suppoter.png +0 -0
  443. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/schema/__init__.py +0 -0
  444. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/schema/alphaosu.py +0 -0
  445. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/schema/basemodel.py +0 -0
  446. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/schema/beatmap.py +0 -0
  447. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/schema/beatmapsets.py +0 -0
  448. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/schema/match.py +0 -0
  449. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/schema/ppysb/__init__.py +0 -0
  450. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/schema/score.py +0 -0
  451. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/schema/user.py +0 -0
  452. {nonebot-plugin-osubot-6.24.0 → nonebot-plugin-osubot-6.24.2}/nonebot_plugin_osubot/utils/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nonebot-plugin-osubot
3
- Version: 6.24.0
3
+ Version: 6.24.2
4
4
  Summary: OSUbot in NoneBot2
5
5
  License: AGPL-3.0
6
6
  Author-email: yaowan233 <572473053@qq.com>
@@ -0,0 +1,64 @@
1
+ import base64
2
+ from pathlib import Path
3
+
4
+ import jinja2
5
+ from nonebot_plugin_htmlrender import get_new_page
6
+
7
+ from ..file import map_path, download_osu
8
+
9
+ template_path = str(Path(__file__).parent / "osu_preview_templates")
10
+
11
+
12
+ async def draw_osu_preview(beatmap_id, beatmapset_id) -> bytes:
13
+ path = map_path / str(beatmapset_id)
14
+ if not path.exists():
15
+ path.mkdir(parents=True, exist_ok=True)
16
+ osu = path / f"{beatmap_id}.osu"
17
+ if not osu.exists():
18
+ await download_osu(beatmapset_id, beatmap_id)
19
+ with open(osu, encoding="utf-8-sig") as f:
20
+ osu_file = f.read()
21
+ template_name = "pic.html"
22
+ template_env = jinja2.Environment( # noqa: S701
23
+ loader=jinja2.FileSystemLoader(template_path),
24
+ enable_async=True,
25
+ )
26
+ template = template_env.get_template(template_name)
27
+ img_selector = "img"
28
+ base_url = Path(template_path).as_uri() + "/"
29
+ worker_script_path = Path(template_path) / "gif.js" / "gif.worker.js"
30
+
31
+ # 读取 worker 脚本内容
32
+ with open(worker_script_path, encoding="utf-8") as f:
33
+ worker_script_content = f.read()
34
+ worker_base64 = base64.b64encode(worker_script_content.encode("utf-8")).decode("utf-8")
35
+ worker_data_uri = f"data:application/javascript;base64,{worker_base64}"
36
+ async with get_new_page(2) as page:
37
+ await page.goto(f"file://{template_path}")
38
+ await page.set_content(
39
+ await template.render_async(osu_file=osu_file, base_url=base_url, worker_data_uri=worker_data_uri),
40
+ wait_until="networkidle",
41
+ )
42
+ await page.wait_for_function(
43
+ f"() => document.querySelector('{img_selector}') &&"
44
+ f" document.querySelector('{img_selector}').src.startsWith('blob:')",
45
+ timeout=60000,
46
+ )
47
+ blob_url = await page.locator(img_selector).get_attribute("src")
48
+ base64_data = await page.evaluate(
49
+ """async (url) => {
50
+ const response = await fetch(url);
51
+ const blob = await response.blob();
52
+
53
+ return new Promise((resolve) => {
54
+ const reader = new FileReader();
55
+ reader.onloadend = () => {
56
+ resolve(reader.result.split(',')[1]);
57
+ };
58
+ reader.readAsDataURL(blob);
59
+ });
60
+ }""",
61
+ blob_url,
62
+ )
63
+ gif_bytes = base64.b64decode(base64_data)
64
+ return gif_bytes
@@ -0,0 +1,258 @@
1
+ html,
2
+ body {
3
+ height: 100%;
4
+ overflow: hidden;
5
+ }
6
+
7
+ body {
8
+ margin: 0;
9
+ background: #000;
10
+ }
11
+
12
+ button {
13
+ margin: 0;
14
+ padding: 0;
15
+ border: none;
16
+ outline: 0;
17
+ background: none;
18
+ color: #fff;
19
+ cursor: pointer;
20
+ width: 40px;
21
+ height: 40px;
22
+ font: 14px sans-serif;
23
+ }
24
+
25
+ #control button::-moz-focus-inner {
26
+ padding: 0;
27
+ border: 0;
28
+ }
29
+
30
+ body>* {
31
+ position: fixed;
32
+ }
33
+
34
+ #speed,
35
+ #control,
36
+ #settingsPanel,
37
+ #title,
38
+ #mania {
39
+ background: rgba(0, 0, 0, .6);
40
+ display: none;
41
+ }
42
+
43
+ body.h #speed,
44
+ body.h #control,
45
+ body.h #settingsPanel,
46
+ body.h #title,
47
+ body.h #mania.e {
48
+ display: block;
49
+ }
50
+
51
+ #container {
52
+ top: 50%;
53
+ left: 50%;
54
+ transform: translate(-50%, -50%);
55
+ background-size: cover;
56
+ background-repeat: no-repeat;
57
+ background-position: center;
58
+ }
59
+
60
+ #play {
61
+ top: 0;
62
+ left: 0;
63
+ width: 100%;
64
+ height: 100%;
65
+ font-size: 50vmin;
66
+ text-shadow: 0 0 .05em #000;
67
+ opacity: 0;
68
+ }
69
+
70
+ #play.e {
71
+ opacity: .6;
72
+ }
73
+
74
+ #speed {
75
+ top: 50%;
76
+ right: 0;
77
+ transform: translateY(-50%);
78
+ width: 40px;
79
+ }
80
+
81
+ #speed button:not(.e) {
82
+ color: #666;
83
+ }
84
+
85
+ #mania {
86
+ top: 50%;
87
+ left: 0;
88
+ transform: translateY(-50%);
89
+ width: 40px;
90
+ }
91
+
92
+ #settingsPanel {
93
+ right: 10px;
94
+ bottom: 50px;
95
+ width: 150px;
96
+ border: 1px solid #aaa;
97
+ }
98
+
99
+
100
+ #settingsPanel button {
101
+ margin: 2px;
102
+ padding: 0;
103
+ border: none;
104
+ outline: 0;
105
+ background: none;
106
+ color: #fff;
107
+ cursor: pointer;
108
+ width: 146px;
109
+ height: 36px;
110
+ font: 14px sans-serif;
111
+ }
112
+
113
+ #openPanel {
114
+ top: 50%;
115
+ left: 30%;
116
+ transform: translateY(-50%);
117
+ width: 40%;
118
+ height: 50%;
119
+ border: 1px solid #aaa;
120
+ }
121
+
122
+ #openTitle {
123
+ color: #fff;
124
+ font: 16px sans-serif;
125
+ border-bottom: solid 1px #fff;
126
+ white-space: nowrap;
127
+ }
128
+
129
+ #openContent {
130
+ display: flex;
131
+ align-items: center;
132
+ justify-content: center;
133
+ flex-wrap: nowrap;
134
+ overflow-y: auto;
135
+ height: calc(100% - 30px);
136
+ align-content: center;
137
+ flex-direction: column;
138
+ }
139
+
140
+ #openContent button{
141
+ margin: 2px;
142
+ padding: 0;
143
+ border: 1px solid #aaa;
144
+ background: none;
145
+ color: #fff;
146
+ cursor: pointer;
147
+ width: calc(100% - 4px);
148
+ height: 36px;
149
+ font: 16px sans-serif;
150
+ display: flex;
151
+ align-items: center;
152
+ justify-content: center;
153
+ white-space: nowrap;
154
+ }
155
+
156
+ #fileInput {
157
+ display: none;
158
+ }
159
+
160
+ #folderInput {
161
+ display: none;
162
+ }
163
+
164
+ #settingsPanel .settingsbtn:hover, #settingsPanel .settingsbtn:active {
165
+ border: 1px solid #aaa;
166
+ }
167
+
168
+ #control {
169
+ bottom: 0;
170
+ left: 0;
171
+ width: 100%;
172
+ }
173
+
174
+ input {
175
+ margin: 4px;
176
+ padding: 0;
177
+ height: 32px;
178
+ box-sizing: border-box;
179
+ }
180
+
181
+ #playtime {
182
+ margin: 4px;
183
+ vertical-align: 10px;
184
+ padding-left: 10px;
185
+ box-sizing: border-box;
186
+ color: white;
187
+ font-size: 12px;
188
+ }
189
+
190
+ #progress {
191
+ width: calc(100% - 226px);
192
+ }
193
+
194
+ #volume {
195
+ width: 80px;
196
+ }
197
+
198
+ #title {
199
+ top: 0;
200
+ left: 0;
201
+ width: 100%;
202
+ white-space: nowrap;
203
+ }
204
+
205
+ img {
206
+ vertical-align: middle;
207
+ position: relative;
208
+ border: 0;
209
+ top: -1px;
210
+ padding: 0 10px;
211
+ }
212
+
213
+ a {
214
+ font: 14px/40px sans-serif;
215
+ border-bottom: 1px dashed transparent;
216
+ color: #fff;
217
+ text-decoration: none;
218
+ }
219
+
220
+ a:hover {
221
+ border-bottom-color: #ddd;
222
+ }
223
+
224
+ #share {
225
+ position: absolute;
226
+ top: 0;
227
+ right: 0;
228
+ }
229
+
230
+ #sharePrompt {
231
+ top: 50%;
232
+ left: 50%;
233
+ transform: translate(-50%, -50%);
234
+ background: rgba(255, 255, 255, .6);
235
+ display: none;
236
+ }
237
+
238
+ #sharePrompt button {
239
+ float: right;
240
+ background: #49f;
241
+ }
242
+
243
+ #sharePrompt input {
244
+ width: 100%;
245
+ margin: 0;
246
+ }
247
+
248
+ #fullscreen {
249
+ position: absolute;
250
+ top: 0;
251
+ right: 0;
252
+ }
253
+
254
+ #settings {
255
+ position: absolute;
256
+ top: 0;
257
+ right: 40;
258
+ }
@@ -0,0 +1,109 @@
1
+
2
+ # gif.js
3
+
4
+ JavaScript GIF encoder that runs in your browser.
5
+
6
+ Uses typed arrays and web workers to render each frame in the background, it's really fast!
7
+
8
+ **Demo** - http://jnordberg.github.io/gif.js/
9
+
10
+ Works in browsers supporting: [Web Workers](http://www.w3.org/TR/workers/), [File API](http://www.w3.org/TR/FileAPI/) and [Typed Arrays](https://www.khronos.org/registry/typedarray/specs/latest/)
11
+
12
+
13
+ ## Usage
14
+
15
+ Include `gif.js` found in `dist/` in your page. Also make sure to have `gif.worker.js` in the same location.
16
+
17
+ ```javascript
18
+ var gif = new GIF({
19
+ workers: 2,
20
+ quality: 10
21
+ });
22
+
23
+ // add an image element
24
+ gif.addFrame(imageElement);
25
+
26
+ // or a canvas element
27
+ gif.addFrame(canvasElement, {delay: 200});
28
+
29
+ // or copy the pixels from a canvas context
30
+ gif.addFrame(ctx, {copy: true});
31
+
32
+ gif.on('finished', function(blob) {
33
+ window.open(URL.createObjectURL(blob));
34
+ });
35
+
36
+ gif.render();
37
+
38
+ ```
39
+
40
+ ## Options
41
+
42
+ Options can be passed to the constructor or using the `setOptions` method.
43
+
44
+ | Name | Default | Description |
45
+ | -------------|-----------------|----------------------------------------------------|
46
+ | repeat | `0` | repeat count, `-1` = no repeat, `0` = forever |
47
+ | quality | `10` | pixel sample interval, lower is better |
48
+ | workers | `2` | number of web workers to spawn |
49
+ | workerScript | `gif.worker.js` | url to load worker script from |
50
+ | background | `#fff` | background color where source image is transparent |
51
+ | width | `null` | output image width |
52
+ | height | `null` | output image height |
53
+ | transparent | `null` | transparent hex color, `0x00FF00` = green |
54
+ | dither | `false` | dithering method, e.g. `FloydSteinberg-serpentine` |
55
+ | debug | `false` | whether to print debug information to console |
56
+
57
+ If width or height is `null` image size will be deteremined by first frame added.
58
+
59
+ Available dithering methods are:
60
+
61
+ * `FloydSteinberg`
62
+ * `FalseFloydSteinberg`
63
+ * `Stucki`
64
+ * `Atkinson`
65
+
66
+ You can add `-serpentine` to use serpentine scanning, e.g. `Stucki-serpentine`.
67
+
68
+ ### addFrame options
69
+
70
+ | Name | Default | Description |
71
+ | -------------|-----------------|----------------------------------------------------|
72
+ | delay | `500` | frame delay |
73
+ | copy | `false` | copy the pixel data |
74
+
75
+
76
+ ## Acknowledgements
77
+
78
+ gif.js is based on:
79
+
80
+ * [Kevin Weiner's Animated gif encoder classes](http://www.fmsware.com/stuff/gif.html)
81
+ * [Neural-Net color quantization algorithm by Anthony Dekker](http://members.ozemail.com.au/~dekker/NEUQUANT.HTML)
82
+ * [Thibault Imbert's as3gif](https://code.google.com/p/as3gif/)
83
+
84
+ Dithering code contributed by @PAEz and @panrafal
85
+
86
+
87
+ ## License
88
+
89
+ The MIT License (MIT)
90
+
91
+ Copyright (c) 2013 Johan Nordberg
92
+
93
+ Permission is hereby granted, free of charge, to any person obtaining a copy
94
+ of this software and associated documentation files (the "Software"), to deal
95
+ in the Software without restriction, including without limitation the rights
96
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
97
+ copies of the Software, and to permit persons to whom the Software is
98
+ furnished to do so, subject to the following conditions:
99
+
100
+ The above copyright notice and this permission notice shall be included in
101
+ all copies or substantial portions of the Software.
102
+
103
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
104
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
105
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
106
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
107
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
108
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
109
+ THE SOFTWARE.
@@ -0,0 +1,3 @@
1
+ // gif.js 0.2.0 - https://github.com/jnordberg/gif.js
2
+ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.GIF=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{var err=new Error('Uncaught, unspecified "error" event. ('+er+")");err.context=er;throw err}}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:args=Array.prototype.slice.call(arguments,1);handler.apply(this,args)}}else if(isObject(handler)){args=Array.prototype.slice.call(arguments,1);listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-- >0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else if(listeners){while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.prototype.listenerCount=function(type){if(this._events){var evlistener=this._events[type];if(isFunction(evlistener))return 1;else if(evlistener)return evlistener.length}return 0};EventEmitter.listenerCount=function(emitter,type){return emitter.listenerCount(type)};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],2:[function(require,module,exports){var UA,browser,mode,platform,ua;ua=navigator.userAgent.toLowerCase();platform=navigator.platform.toLowerCase();UA=ua.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/)||[null,"unknown",0];mode=UA[1]==="ie"&&document.documentMode;browser={name:UA[1]==="version"?UA[3]:UA[1],version:mode||parseFloat(UA[1]==="opera"&&UA[4]?UA[4]:UA[2]),platform:{name:ua.match(/ip(?:ad|od|hone)/)?"ios":(ua.match(/(?:webos|android)/)||platform.match(/mac|win|linux/)||["other"])[0]}};browser[browser.name]=true;browser[browser.name+parseInt(browser.version,10)]=true;browser.platform[browser.platform.name]=true;module.exports=browser},{}],3:[function(require,module,exports){var EventEmitter,GIF,browser,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;i<l;i++){if(i in this&&this[i]===item)return i}return-1},slice=[].slice;EventEmitter=require("events").EventEmitter;browser=require("./browser.coffee");GIF=function(superClass){var defaults,frameDefaults;extend(GIF,superClass);defaults={workerScript:"gif.worker.js",workers:2,repeat:0,background:"#fff",quality:10,width:null,height:null,transparent:null,debug:false,dither:false};frameDefaults={delay:500,copy:false};function GIF(options){var base,key,value;this.running=false;this.options={};this.frames=[];this.freeWorkers=[];this.activeWorkers=[];this.setOptions(options);for(key in defaults){value=defaults[key];if((base=this.options)[key]==null){base[key]=value}}}GIF.prototype.setOption=function(key,value){this.options[key]=value;if(this._canvas!=null&&(key==="width"||key==="height")){return this._canvas[key]=value}};GIF.prototype.setOptions=function(options){var key,results,value;results=[];for(key in options){if(!hasProp.call(options,key))continue;value=options[key];results.push(this.setOption(key,value))}return results};GIF.prototype.addFrame=function(image,options){var frame,key;if(options==null){options={}}frame={};frame.transparent=this.options.transparent;for(key in frameDefaults){frame[key]=options[key]||frameDefaults[key]}if(this.options.width==null){this.setOption("width",image.width)}if(this.options.height==null){this.setOption("height",image.height)}if(typeof ImageData!=="undefined"&&ImageData!==null&&image instanceof ImageData){frame.data=image.data}else if(typeof CanvasRenderingContext2D!=="undefined"&&CanvasRenderingContext2D!==null&&image instanceof CanvasRenderingContext2D||typeof WebGLRenderingContext!=="undefined"&&WebGLRenderingContext!==null&&image instanceof WebGLRenderingContext){if(options.copy){frame.data=this.getContextData(image)}else{frame.context=image}}else if(image.childNodes!=null){if(options.copy){frame.data=this.getImageData(image)}else{frame.image=image}}else{throw new Error("Invalid image")}return this.frames.push(frame)};GIF.prototype.render=function(){var i,j,numWorkers,ref;if(this.running){throw new Error("Already running")}if(this.options.width==null||this.options.height==null){throw new Error("Width and height must be set prior to rendering")}this.running=true;this.nextFrame=0;this.finishedFrames=0;this.imageParts=function(){var j,ref,results;results=[];for(i=j=0,ref=this.frames.length;0<=ref?j<ref:j>ref;i=0<=ref?++j:--j){results.push(null)}return results}.call(this);numWorkers=this.spawnWorkers();if(this.options.globalPalette===true){this.renderNextFrame()}else{for(i=j=0,ref=numWorkers;0<=ref?j<ref:j>ref;i=0<=ref?++j:--j){this.renderNextFrame()}}this.emit("start");return this.emit("progress",0)};GIF.prototype.abort=function(){var worker;while(true){worker=this.activeWorkers.shift();if(worker==null){break}this.log("killing active worker");worker.terminate()}this.running=false;return this.emit("abort")};GIF.prototype.spawnWorkers=function(){var j,numWorkers,ref,results;numWorkers=Math.min(this.options.workers,this.frames.length);(function(){results=[];for(var j=ref=this.freeWorkers.length;ref<=numWorkers?j<numWorkers:j>numWorkers;ref<=numWorkers?j++:j--){results.push(j)}return results}).apply(this).forEach(function(_this){return function(i){var worker;_this.log("spawning worker "+i);worker=new Worker(_this.options.workerScript);worker.onmessage=function(event){_this.activeWorkers.splice(_this.activeWorkers.indexOf(worker),1);_this.freeWorkers.push(worker);return _this.frameFinished(event.data)};return _this.freeWorkers.push(worker)}}(this));return numWorkers};GIF.prototype.frameFinished=function(frame){var i,j,ref;this.log("frame "+frame.index+" finished - "+this.activeWorkers.length+" active");this.finishedFrames++;this.emit("progress",this.finishedFrames/this.frames.length);this.imageParts[frame.index]=frame;if(this.options.globalPalette===true){this.options.globalPalette=frame.globalPalette;this.log("global palette analyzed");if(this.frames.length>2){for(i=j=1,ref=this.freeWorkers.length;1<=ref?j<ref:j>ref;i=1<=ref?++j:--j){this.renderNextFrame()}}}if(indexOf.call(this.imageParts,null)>=0){return this.renderNextFrame()}else{return this.finishRendering()}};GIF.prototype.finishRendering=function(){var data,frame,i,image,j,k,l,len,len1,len2,len3,offset,page,ref,ref1,ref2;len=0;ref=this.imageParts;for(j=0,len1=ref.length;j<len1;j++){frame=ref[j];len+=(frame.data.length-1)*frame.pageSize+frame.cursor}len+=frame.pageSize-frame.cursor;this.log("rendering finished - filesize "+Math.round(len/1e3)+"kb");data=new Uint8Array(len);offset=0;ref1=this.imageParts;for(k=0,len2=ref1.length;k<len2;k++){frame=ref1[k];ref2=frame.data;for(i=l=0,len3=ref2.length;l<len3;i=++l){page=ref2[i];data.set(page,offset);if(i===frame.data.length-1){offset+=frame.cursor}else{offset+=frame.pageSize}}}image=new Blob([data],{type:"image/gif"});return this.emit("finished",image,data)};GIF.prototype.renderNextFrame=function(){var frame,task,worker;if(this.freeWorkers.length===0){throw new Error("No free workers")}if(this.nextFrame>=this.frames.length){return}frame=this.frames[this.nextFrame++];worker=this.freeWorkers.shift();task=this.getTask(frame);this.log("starting frame "+(task.index+1)+" of "+this.frames.length);this.activeWorkers.push(worker);return worker.postMessage(task)};GIF.prototype.getContextData=function(ctx){return ctx.getImageData(0,0,this.options.width,this.options.height).data};GIF.prototype.getImageData=function(image){var ctx;if(this._canvas==null){this._canvas=document.createElement("canvas");this._canvas.width=this.options.width;this._canvas.height=this.options.height}ctx=this._canvas.getContext("2d");ctx.setFill=this.options.background;ctx.fillRect(0,0,this.options.width,this.options.height);ctx.drawImage(image,0,0);return this.getContextData(ctx)};GIF.prototype.getTask=function(frame){var index,task;index=this.frames.indexOf(frame);task={index:index,last:index===this.frames.length-1,delay:frame.delay,transparent:frame.transparent,width:this.options.width,height:this.options.height,quality:this.options.quality,dither:this.options.dither,globalPalette:this.options.globalPalette,repeat:this.options.repeat,canTransfer:browser.name==="chrome"};if(frame.data!=null){task.data=frame.data}else if(frame.context!=null){task.data=this.getContextData(frame.context)}else if(frame.image!=null){task.data=this.getImageData(frame.image)}else{throw new Error("Invalid frame")}return task};GIF.prototype.log=function(){var args;args=1<=arguments.length?slice.call(arguments,0):[];if(!this.options.debug){return}return console.log.apply(console,args)};return GIF}(EventEmitter);module.exports=GIF},{"./browser.coffee":2,events:1}]},{},[3])(3)});
3
+ //# sourceMappingURL=gif.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/events/events.js","src/browser.coffee","src/gif.coffee"],"names":["f","exports","module","define","amd","g","window","global","self","this","GIF","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","EventEmitter","_events","_maxListeners","undefined","prototype","defaultMaxListeners","setMaxListeners","isNumber","isNaN","TypeError","emit","type","er","handler","len","args","listeners","error","isObject","arguments","err","context","isUndefined","isFunction","Array","slice","apply","addListener","listener","m","newListener","push","warned","console","trace","on","once","fired","removeListener","list","position","splice","removeAllListeners","key","ret","listenerCount","evlistener","emitter","arg","UA","browser","mode","platform","ua","navigator","userAgent","toLowerCase","match","document","documentMode","name","version","parseFloat","parseInt","extend","child","parent","hasProp","ctor","constructor","__super__","superClass","defaults","frameDefaults","workerScript","workers","repeat","background","quality","width","height","transparent","debug","dither","delay","copy","options","base","value","running","frames","freeWorkers","activeWorkers","setOptions","setOption","_canvas","results","addFrame","image","frame","ImageData","data","CanvasRenderingContext2D","WebGLRenderingContext","getContextData","childNodes","getImageData","render","j","numWorkers","ref","nextFrame","finishedFrames","imageParts","spawnWorkers","globalPalette","renderNextFrame","abort","worker","shift","log","terminate","Math","min","forEach","_this","Worker","onmessage","event","indexOf","frameFinished","index","finishRendering","k","len1","len2","len3","offset","page","ref1","ref2","pageSize","cursor","round","Uint8Array","set","Blob","task","getTask","postMessage","ctx","createElement","getContext","setFill","fillRect","drawImage","last","canTransfer"],"mappings":"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","sourceRoot":"","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","### CoffeeScript version of the browser detection from MooTools ###\n\nua = navigator.userAgent.toLowerCase()\nplatform = navigator.platform.toLowerCase()\nUA = ua.match(/(opera|ie|firefox|chrome|version)[\\s\\/:]([\\w\\d\\.]+)?.*?(safari|version[\\s\\/:]([\\w\\d\\.]+)|$)/) or [null, 'unknown', 0]\nmode = UA[1] == 'ie' && document.documentMode\n\nbrowser =\n name: if UA[1] is 'version' then UA[3] else UA[1]\n version: mode or parseFloat(if UA[1] is 'opera' && UA[4] then UA[4] else UA[2])\n\n platform:\n name: if ua.match(/ip(?:ad|od|hone)/) then 'ios' else (ua.match(/(?:webos|android)/) or platform.match(/mac|win|linux/) or ['other'])[0]\n\nbrowser[browser.name] = true\nbrowser[browser.name + parseInt(browser.version, 10)] = true\nbrowser.platform[browser.platform.name] = true\n\nmodule.exports = browser\n","{EventEmitter} = require 'events'\nbrowser = require './browser.coffee'\n\nclass GIF extends EventEmitter\n\n defaults =\n workerScript: 'gif.worker.js'\n workers: 2\n repeat: 0 # repeat forever, -1 = repeat once\n background: '#fff'\n quality: 10 # pixel sample interval, lower is better\n width: null # size derermined from first frame if possible\n height: null\n transparent: null\n debug: false\n dither: false # see GIFEncoder.js for dithering options\n\n frameDefaults =\n delay: 500 # ms\n copy: false\n\n constructor: (options) ->\n @running = false\n\n @options = {}\n @frames = []\n\n @freeWorkers = []\n @activeWorkers = []\n\n @setOptions options\n for key, value of defaults\n @options[key] ?= value\n\n setOption: (key, value) ->\n @options[key] = value\n if @_canvas? and key in ['width', 'height']\n @_canvas[key] = value\n\n setOptions: (options) ->\n @setOption key, value for own key, value of options\n\n addFrame: (image, options={}) ->\n frame = {}\n frame.transparent = @options.transparent\n for key of frameDefaults\n frame[key] = options[key] or frameDefaults[key]\n\n # use the images width and height for options unless already set\n @setOption 'width', image.width unless @options.width?\n @setOption 'height', image.height unless @options.height?\n\n if ImageData? and image instanceof ImageData\n frame.data = image.data\n else if (CanvasRenderingContext2D? and image instanceof CanvasRenderingContext2D) or (WebGLRenderingContext? and image instanceof WebGLRenderingContext)\n if options.copy\n frame.data = @getContextData image\n else\n frame.context = image\n else if image.childNodes?\n if options.copy\n frame.data = @getImageData image\n else\n frame.image = image\n else\n throw new Error 'Invalid image'\n\n @frames.push frame\n\n render: ->\n throw new Error 'Already running' if @running\n\n if not @options.width? or not @options.height?\n throw new Error 'Width and height must be set prior to rendering'\n\n @running = true\n @nextFrame = 0\n @finishedFrames = 0\n\n @imageParts = (null for i in [0...@frames.length])\n numWorkers = @spawnWorkers()\n # we need to wait for the palette\n if @options.globalPalette == true\n @renderNextFrame()\n else\n @renderNextFrame() for i in [0...numWorkers]\n\n @emit 'start'\n @emit 'progress', 0\n\n abort: ->\n loop\n worker = @activeWorkers.shift()\n break unless worker?\n @log 'killing active worker'\n worker.terminate()\n @running = false\n @emit 'abort'\n\n # private\n\n spawnWorkers: ->\n numWorkers = Math.min(@options.workers, @frames.length)\n [@freeWorkers.length...numWorkers].forEach (i) =>\n @log \"spawning worker #{ i }\"\n worker = new Worker @options.workerScript\n worker.onmessage = (event) =>\n @activeWorkers.splice @activeWorkers.indexOf(worker), 1\n @freeWorkers.push worker\n @frameFinished event.data\n @freeWorkers.push worker\n return numWorkers\n\n frameFinished: (frame) ->\n @log \"frame #{ frame.index } finished - #{ @activeWorkers.length } active\"\n @finishedFrames++\n @emit 'progress', @finishedFrames / @frames.length\n @imageParts[frame.index] = frame\n # remember calculated palette, spawn the rest of the workers\n if @options.globalPalette == true\n @options.globalPalette = frame.globalPalette\n @log 'global palette analyzed'\n @renderNextFrame() for i in [1...@freeWorkers.length] if @frames.length > 2\n if null in @imageParts\n @renderNextFrame()\n else\n @finishRendering()\n\n finishRendering: ->\n len = 0\n for frame in @imageParts\n len += (frame.data.length - 1) * frame.pageSize + frame.cursor\n len += frame.pageSize - frame.cursor\n @log \"rendering finished - filesize #{ Math.round(len / 1000) }kb\"\n data = new Uint8Array len\n offset = 0\n for frame in @imageParts\n for page, i in frame.data\n data.set page, offset\n if i is frame.data.length - 1\n offset += frame.cursor\n else\n offset += frame.pageSize\n\n image = new Blob [data],\n type: 'image/gif'\n\n @emit 'finished', image, data\n\n renderNextFrame: ->\n throw new Error 'No free workers' if @freeWorkers.length is 0\n return if @nextFrame >= @frames.length # no new frame to render\n\n frame = @frames[@nextFrame++]\n worker = @freeWorkers.shift()\n task = @getTask frame\n\n @log \"starting frame #{ task.index + 1 } of #{ @frames.length }\"\n @activeWorkers.push worker\n worker.postMessage task#, [task.data.buffer]\n\n getContextData: (ctx) ->\n return ctx.getImageData(0, 0, @options.width, @options.height).data\n\n getImageData: (image) ->\n if not @_canvas?\n @_canvas = document.createElement 'canvas'\n @_canvas.width = @options.width\n @_canvas.height = @options.height\n\n ctx = @_canvas.getContext '2d'\n ctx.setFill = @options.background\n ctx.fillRect 0, 0, @options.width, @options.height\n ctx.drawImage image, 0, 0\n\n return @getContextData ctx\n\n getTask: (frame) ->\n index = @frames.indexOf frame\n task =\n index: index\n last: index is (@frames.length - 1)\n delay: frame.delay\n transparent: frame.transparent\n width: @options.width\n height: @options.height\n quality: @options.quality\n dither: @options.dither\n globalPalette: @options.globalPalette\n repeat: @options.repeat\n canTransfer: (browser.name is 'chrome')\n\n if frame.data?\n task.data = frame.data\n else if frame.context?\n task.data = @getContextData frame.context\n else if frame.image?\n task.data = @getImageData frame.image\n else\n throw new Error 'Invalid frame'\n\n return task\n\n log: (args...) ->\n return unless @options.debug\n console.log args...\n\n\nmodule.exports = GIF\n"]}
@@ -0,0 +1,3 @@
1
+ // gif.worker.js 0.2.0 - https://github.com/jnordberg/gif.js
2
+ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){var NeuQuant=require("./TypedNeuQuant.js");var LZWEncoder=require("./LZWEncoder.js");function ByteArray(){this.page=-1;this.pages=[];this.newPage()}ByteArray.pageSize=4096;ByteArray.charMap={};for(var i=0;i<256;i++)ByteArray.charMap[i]=String.fromCharCode(i);ByteArray.prototype.newPage=function(){this.pages[++this.page]=new Uint8Array(ByteArray.pageSize);this.cursor=0};ByteArray.prototype.getData=function(){var rv="";for(var p=0;p<this.pages.length;p++){for(var i=0;i<ByteArray.pageSize;i++){rv+=ByteArray.charMap[this.pages[p][i]]}}return rv};ByteArray.prototype.writeByte=function(val){if(this.cursor>=ByteArray.pageSize)this.newPage();this.pages[this.page][this.cursor++]=val};ByteArray.prototype.writeUTFBytes=function(string){for(var l=string.length,i=0;i<l;i++)this.writeByte(string.charCodeAt(i))};ByteArray.prototype.writeBytes=function(array,offset,length){for(var l=length||array.length,i=offset||0;i<l;i++)this.writeByte(array[i])};function GIFEncoder(width,height){this.width=~~width;this.height=~~height;this.transparent=null;this.transIndex=0;this.repeat=-1;this.delay=0;this.image=null;this.pixels=null;this.indexedPixels=null;this.colorDepth=null;this.colorTab=null;this.neuQuant=null;this.usedEntry=new Array;this.palSize=7;this.dispose=-1;this.firstFrame=true;this.sample=10;this.dither=false;this.globalPalette=false;this.out=new ByteArray}GIFEncoder.prototype.setDelay=function(milliseconds){this.delay=Math.round(milliseconds/10)};GIFEncoder.prototype.setFrameRate=function(fps){this.delay=Math.round(100/fps)};GIFEncoder.prototype.setDispose=function(disposalCode){if(disposalCode>=0)this.dispose=disposalCode};GIFEncoder.prototype.setRepeat=function(repeat){this.repeat=repeat};GIFEncoder.prototype.setTransparent=function(color){this.transparent=color};GIFEncoder.prototype.addFrame=function(imageData){this.image=imageData;this.colorTab=this.globalPalette&&this.globalPalette.slice?this.globalPalette:null;this.getImagePixels();this.analyzePixels();if(this.globalPalette===true)this.globalPalette=this.colorTab;if(this.firstFrame){this.writeLSD();this.writePalette();if(this.repeat>=0){this.writeNetscapeExt()}}this.writeGraphicCtrlExt();this.writeImageDesc();if(!this.firstFrame&&!this.globalPalette)this.writePalette();this.writePixels();this.firstFrame=false};GIFEncoder.prototype.finish=function(){this.out.writeByte(59)};GIFEncoder.prototype.setQuality=function(quality){if(quality<1)quality=1;this.sample=quality};GIFEncoder.prototype.setDither=function(dither){if(dither===true)dither="FloydSteinberg";this.dither=dither};GIFEncoder.prototype.setGlobalPalette=function(palette){this.globalPalette=palette};GIFEncoder.prototype.getGlobalPalette=function(){return this.globalPalette&&this.globalPalette.slice&&this.globalPalette.slice(0)||this.globalPalette};GIFEncoder.prototype.writeHeader=function(){this.out.writeUTFBytes("GIF89a")};GIFEncoder.prototype.analyzePixels=function(){if(!this.colorTab){this.neuQuant=new NeuQuant(this.pixels,this.sample);this.neuQuant.buildColormap();this.colorTab=this.neuQuant.getColormap()}if(this.dither){this.ditherPixels(this.dither.replace("-serpentine",""),this.dither.match(/-serpentine/)!==null)}else{this.indexPixels()}this.pixels=null;this.colorDepth=8;this.palSize=7;if(this.transparent!==null){this.transIndex=this.findClosest(this.transparent,true)}};GIFEncoder.prototype.indexPixels=function(imgq){var nPix=this.pixels.length/3;this.indexedPixels=new Uint8Array(nPix);var k=0;for(var j=0;j<nPix;j++){var index=this.findClosestRGB(this.pixels[k++]&255,this.pixels[k++]&255,this.pixels[k++]&255);this.usedEntry[index]=true;this.indexedPixels[j]=index}};GIFEncoder.prototype.ditherPixels=function(kernel,serpentine){var kernels={FalseFloydSteinberg:[[3/8,1,0],[3/8,0,1],[2/8,1,1]],FloydSteinberg:[[7/16,1,0],[3/16,-1,1],[5/16,0,1],[1/16,1,1]],Stucki:[[8/42,1,0],[4/42,2,0],[2/42,-2,1],[4/42,-1,1],[8/42,0,1],[4/42,1,1],[2/42,2,1],[1/42,-2,2],[2/42,-1,2],[4/42,0,2],[2/42,1,2],[1/42,2,2]],Atkinson:[[1/8,1,0],[1/8,2,0],[1/8,-1,1],[1/8,0,1],[1/8,1,1],[1/8,0,2]]};if(!kernel||!kernels[kernel]){throw"Unknown dithering kernel: "+kernel}var ds=kernels[kernel];var index=0,height=this.height,width=this.width,data=this.pixels;var direction=serpentine?-1:1;this.indexedPixels=new Uint8Array(this.pixels.length/3);for(var y=0;y<height;y++){if(serpentine)direction=direction*-1;for(var x=direction==1?0:width-1,xend=direction==1?width:0;x!==xend;x+=direction){index=y*width+x;var idx=index*3;var r1=data[idx];var g1=data[idx+1];var b1=data[idx+2];idx=this.findClosestRGB(r1,g1,b1);this.usedEntry[idx]=true;this.indexedPixels[index]=idx;idx*=3;var r2=this.colorTab[idx];var g2=this.colorTab[idx+1];var b2=this.colorTab[idx+2];var er=r1-r2;var eg=g1-g2;var eb=b1-b2;for(var i=direction==1?0:ds.length-1,end=direction==1?ds.length:0;i!==end;i+=direction){var x1=ds[i][1];var y1=ds[i][2];if(x1+x>=0&&x1+x<width&&y1+y>=0&&y1+y<height){var d=ds[i][0];idx=index+x1+y1*width;idx*=3;data[idx]=Math.max(0,Math.min(255,data[idx]+er*d));data[idx+1]=Math.max(0,Math.min(255,data[idx+1]+eg*d));data[idx+2]=Math.max(0,Math.min(255,data[idx+2]+eb*d))}}}}};GIFEncoder.prototype.findClosest=function(c,used){return this.findClosestRGB((c&16711680)>>16,(c&65280)>>8,c&255,used)};GIFEncoder.prototype.findClosestRGB=function(r,g,b,used){if(this.colorTab===null)return-1;if(this.neuQuant&&!used){return this.neuQuant.lookupRGB(r,g,b)}var c=b|g<<8|r<<16;var minpos=0;var dmin=256*256*256;var len=this.colorTab.length;for(var i=0,index=0;i<len;index++){var dr=r-(this.colorTab[i++]&255);var dg=g-(this.colorTab[i++]&255);var db=b-(this.colorTab[i++]&255);var d=dr*dr+dg*dg+db*db;if((!used||this.usedEntry[index])&&d<dmin){dmin=d;minpos=index}}return minpos};GIFEncoder.prototype.getImagePixels=function(){var w=this.width;var h=this.height;this.pixels=new Uint8Array(w*h*3);var data=this.image;var srcPos=0;var count=0;for(var i=0;i<h;i++){for(var j=0;j<w;j++){this.pixels[count++]=data[srcPos++];this.pixels[count++]=data[srcPos++];this.pixels[count++]=data[srcPos++];srcPos++}}};GIFEncoder.prototype.writeGraphicCtrlExt=function(){this.out.writeByte(33);this.out.writeByte(249);this.out.writeByte(4);var transp,disp;if(this.transparent===null){transp=0;disp=0}else{transp=1;disp=2}if(this.dispose>=0){disp=dispose&7}disp<<=2;this.out.writeByte(0|disp|0|transp);this.writeShort(this.delay);this.out.writeByte(this.transIndex);this.out.writeByte(0)};GIFEncoder.prototype.writeImageDesc=function(){this.out.writeByte(44);this.writeShort(0);this.writeShort(0);this.writeShort(this.width);this.writeShort(this.height);if(this.firstFrame||this.globalPalette){this.out.writeByte(0)}else{this.out.writeByte(128|0|0|0|this.palSize)}};GIFEncoder.prototype.writeLSD=function(){this.writeShort(this.width);this.writeShort(this.height);this.out.writeByte(128|112|0|this.palSize);this.out.writeByte(0);this.out.writeByte(0)};GIFEncoder.prototype.writeNetscapeExt=function(){this.out.writeByte(33);this.out.writeByte(255);this.out.writeByte(11);this.out.writeUTFBytes("NETSCAPE2.0");this.out.writeByte(3);this.out.writeByte(1);this.writeShort(this.repeat);this.out.writeByte(0)};GIFEncoder.prototype.writePalette=function(){this.out.writeBytes(this.colorTab);var n=3*256-this.colorTab.length;for(var i=0;i<n;i++)this.out.writeByte(0)};GIFEncoder.prototype.writeShort=function(pValue){this.out.writeByte(pValue&255);this.out.writeByte(pValue>>8&255)};GIFEncoder.prototype.writePixels=function(){var enc=new LZWEncoder(this.width,this.height,this.indexedPixels,this.colorDepth);enc.encode(this.out)};GIFEncoder.prototype.stream=function(){return this.out};module.exports=GIFEncoder},{"./LZWEncoder.js":2,"./TypedNeuQuant.js":3}],2:[function(require,module,exports){var EOF=-1;var BITS=12;var HSIZE=5003;var masks=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535];function LZWEncoder(width,height,pixels,colorDepth){var initCodeSize=Math.max(2,colorDepth);var accum=new Uint8Array(256);var htab=new Int32Array(HSIZE);var codetab=new Int32Array(HSIZE);var cur_accum,cur_bits=0;var a_count;var free_ent=0;var maxcode;var clear_flg=false;var g_init_bits,ClearCode,EOFCode;function char_out(c,outs){accum[a_count++]=c;if(a_count>=254)flush_char(outs)}function cl_block(outs){cl_hash(HSIZE);free_ent=ClearCode+2;clear_flg=true;output(ClearCode,outs)}function cl_hash(hsize){for(var i=0;i<hsize;++i)htab[i]=-1}function compress(init_bits,outs){var fcode,c,i,ent,disp,hsize_reg,hshift;g_init_bits=init_bits;clear_flg=false;n_bits=g_init_bits;maxcode=MAXCODE(n_bits);ClearCode=1<<init_bits-1;EOFCode=ClearCode+1;free_ent=ClearCode+2;a_count=0;ent=nextPixel();hshift=0;for(fcode=HSIZE;fcode<65536;fcode*=2)++hshift;hshift=8-hshift;hsize_reg=HSIZE;cl_hash(hsize_reg);output(ClearCode,outs);outer_loop:while((c=nextPixel())!=EOF){fcode=(c<<BITS)+ent;i=c<<hshift^ent;if(htab[i]===fcode){ent=codetab[i];continue}else if(htab[i]>=0){disp=hsize_reg-i;if(i===0)disp=1;do{if((i-=disp)<0)i+=hsize_reg;if(htab[i]===fcode){ent=codetab[i];continue outer_loop}}while(htab[i]>=0)}output(ent,outs);ent=c;if(free_ent<1<<BITS){codetab[i]=free_ent++;htab[i]=fcode}else{cl_block(outs)}}output(ent,outs);output(EOFCode,outs)}function encode(outs){outs.writeByte(initCodeSize);remaining=width*height;curPixel=0;compress(initCodeSize+1,outs);outs.writeByte(0)}function flush_char(outs){if(a_count>0){outs.writeByte(a_count);outs.writeBytes(accum,0,a_count);a_count=0}}function MAXCODE(n_bits){return(1<<n_bits)-1}function nextPixel(){if(remaining===0)return EOF;--remaining;var pix=pixels[curPixel++];return pix&255}function output(code,outs){cur_accum&=masks[cur_bits];if(cur_bits>0)cur_accum|=code<<cur_bits;else cur_accum=code;cur_bits+=n_bits;while(cur_bits>=8){char_out(cur_accum&255,outs);cur_accum>>=8;cur_bits-=8}if(free_ent>maxcode||clear_flg){if(clear_flg){maxcode=MAXCODE(n_bits=g_init_bits);clear_flg=false}else{++n_bits;if(n_bits==BITS)maxcode=1<<BITS;else maxcode=MAXCODE(n_bits)}}if(code==EOFCode){while(cur_bits>0){char_out(cur_accum&255,outs);cur_accum>>=8;cur_bits-=8}flush_char(outs)}}this.encode=encode}module.exports=LZWEncoder},{}],3:[function(require,module,exports){var ncycles=100;var netsize=256;var maxnetpos=netsize-1;var netbiasshift=4;var intbiasshift=16;var intbias=1<<intbiasshift;var gammashift=10;var gamma=1<<gammashift;var betashift=10;var beta=intbias>>betashift;var betagamma=intbias<<gammashift-betashift;var initrad=netsize>>3;var radiusbiasshift=6;var radiusbias=1<<radiusbiasshift;var initradius=initrad*radiusbias;var radiusdec=30;var alphabiasshift=10;var initalpha=1<<alphabiasshift;var alphadec;var radbiasshift=8;var radbias=1<<radbiasshift;var alpharadbshift=alphabiasshift+radbiasshift;var alpharadbias=1<<alpharadbshift;var prime1=499;var prime2=491;var prime3=487;var prime4=503;var minpicturebytes=3*prime4;function NeuQuant(pixels,samplefac){var network;var netindex;var bias;var freq;var radpower;function init(){network=[];netindex=new Int32Array(256);bias=new Int32Array(netsize);freq=new Int32Array(netsize);radpower=new Int32Array(netsize>>3);var i,v;for(i=0;i<netsize;i++){v=(i<<netbiasshift+8)/netsize;network[i]=new Float64Array([v,v,v,0]);freq[i]=intbias/netsize;bias[i]=0}}function unbiasnet(){for(var i=0;i<netsize;i++){network[i][0]>>=netbiasshift;network[i][1]>>=netbiasshift;network[i][2]>>=netbiasshift;network[i][3]=i}}function altersingle(alpha,i,b,g,r){network[i][0]-=alpha*(network[i][0]-b)/initalpha;network[i][1]-=alpha*(network[i][1]-g)/initalpha;network[i][2]-=alpha*(network[i][2]-r)/initalpha}function alterneigh(radius,i,b,g,r){var lo=Math.abs(i-radius);var hi=Math.min(i+radius,netsize);var j=i+1;var k=i-1;var m=1;var p,a;while(j<hi||k>lo){a=radpower[m++];if(j<hi){p=network[j++];p[0]-=a*(p[0]-b)/alpharadbias;p[1]-=a*(p[1]-g)/alpharadbias;p[2]-=a*(p[2]-r)/alpharadbias}if(k>lo){p=network[k--];p[0]-=a*(p[0]-b)/alpharadbias;p[1]-=a*(p[1]-g)/alpharadbias;p[2]-=a*(p[2]-r)/alpharadbias}}}function contest(b,g,r){var bestd=~(1<<31);var bestbiasd=bestd;var bestpos=-1;var bestbiaspos=bestpos;var i,n,dist,biasdist,betafreq;for(i=0;i<netsize;i++){n=network[i];dist=Math.abs(n[0]-b)+Math.abs(n[1]-g)+Math.abs(n[2]-r);if(dist<bestd){bestd=dist;bestpos=i}biasdist=dist-(bias[i]>>intbiasshift-netbiasshift);if(biasdist<bestbiasd){bestbiasd=biasdist;bestbiaspos=i}betafreq=freq[i]>>betashift;freq[i]-=betafreq;bias[i]+=betafreq<<gammashift}freq[bestpos]+=beta;bias[bestpos]-=betagamma;return bestbiaspos}function inxbuild(){var i,j,p,q,smallpos,smallval,previouscol=0,startpos=0;for(i=0;i<netsize;i++){p=network[i];smallpos=i;smallval=p[1];for(j=i+1;j<netsize;j++){q=network[j];if(q[1]<smallval){smallpos=j;smallval=q[1]}}q=network[smallpos];if(i!=smallpos){j=q[0];q[0]=p[0];p[0]=j;j=q[1];q[1]=p[1];p[1]=j;j=q[2];q[2]=p[2];p[2]=j;j=q[3];q[3]=p[3];p[3]=j}if(smallval!=previouscol){netindex[previouscol]=startpos+i>>1;for(j=previouscol+1;j<smallval;j++)netindex[j]=i;previouscol=smallval;startpos=i}}netindex[previouscol]=startpos+maxnetpos>>1;for(j=previouscol+1;j<256;j++)netindex[j]=maxnetpos}function inxsearch(b,g,r){var a,p,dist;var bestd=1e3;var best=-1;var i=netindex[g];var j=i-1;while(i<netsize||j>=0){if(i<netsize){p=network[i];dist=p[1]-g;if(dist>=bestd)i=netsize;else{i++;if(dist<0)dist=-dist;a=p[0]-b;if(a<0)a=-a;dist+=a;if(dist<bestd){a=p[2]-r;if(a<0)a=-a;dist+=a;if(dist<bestd){bestd=dist;best=p[3]}}}}if(j>=0){p=network[j];dist=g-p[1];if(dist>=bestd)j=-1;else{j--;if(dist<0)dist=-dist;a=p[0]-b;if(a<0)a=-a;dist+=a;if(dist<bestd){a=p[2]-r;if(a<0)a=-a;dist+=a;if(dist<bestd){bestd=dist;best=p[3]}}}}}return best}function learn(){var i;var lengthcount=pixels.length;var alphadec=30+(samplefac-1)/3;var samplepixels=lengthcount/(3*samplefac);var delta=~~(samplepixels/ncycles);var alpha=initalpha;var radius=initradius;var rad=radius>>radiusbiasshift;if(rad<=1)rad=0;for(i=0;i<rad;i++)radpower[i]=alpha*((rad*rad-i*i)*radbias/(rad*rad));var step;if(lengthcount<minpicturebytes){samplefac=1;step=3}else if(lengthcount%prime1!==0){step=3*prime1}else if(lengthcount%prime2!==0){step=3*prime2}else if(lengthcount%prime3!==0){step=3*prime3}else{step=3*prime4}var b,g,r,j;var pix=0;i=0;while(i<samplepixels){b=(pixels[pix]&255)<<netbiasshift;g=(pixels[pix+1]&255)<<netbiasshift;r=(pixels[pix+2]&255)<<netbiasshift;j=contest(b,g,r);altersingle(alpha,j,b,g,r);if(rad!==0)alterneigh(rad,j,b,g,r);pix+=step;if(pix>=lengthcount)pix-=lengthcount;i++;if(delta===0)delta=1;if(i%delta===0){alpha-=alpha/alphadec;radius-=radius/radiusdec;rad=radius>>radiusbiasshift;if(rad<=1)rad=0;for(j=0;j<rad;j++)radpower[j]=alpha*((rad*rad-j*j)*radbias/(rad*rad))}}}function buildColormap(){init();learn();unbiasnet();inxbuild()}this.buildColormap=buildColormap;function getColormap(){var map=[];var index=[];for(var i=0;i<netsize;i++)index[network[i][3]]=i;var k=0;for(var l=0;l<netsize;l++){var j=index[l];map[k++]=network[j][0];map[k++]=network[j][1];map[k++]=network[j][2]}return map}this.getColormap=getColormap;this.lookupRGB=inxsearch}module.exports=NeuQuant},{}],4:[function(require,module,exports){var GIFEncoder,renderFrame;GIFEncoder=require("./GIFEncoder.js");renderFrame=function(frame){var encoder,page,stream,transfer;encoder=new GIFEncoder(frame.width,frame.height);if(frame.index===0){encoder.writeHeader()}else{encoder.firstFrame=false}encoder.setTransparent(frame.transparent);encoder.setRepeat(frame.repeat);encoder.setDelay(frame.delay);encoder.setQuality(frame.quality);encoder.setDither(frame.dither);encoder.setGlobalPalette(frame.globalPalette);encoder.addFrame(frame.data);if(frame.last){encoder.finish()}if(frame.globalPalette===true){frame.globalPalette=encoder.getGlobalPalette()}stream=encoder.stream();frame.data=stream.pages;frame.cursor=stream.cursor;frame.pageSize=stream.constructor.pageSize;if(frame.canTransfer){transfer=function(){var i,len,ref,results;ref=frame.data;results=[];for(i=0,len=ref.length;i<len;i++){page=ref[i];results.push(page.buffer)}return results}();return self.postMessage(frame,transfer)}else{return self.postMessage(frame)}};self.onmessage=function(event){return renderFrame(event.data)}},{"./GIFEncoder.js":1}]},{},[4]);
3
+ //# sourceMappingURL=gif.worker.js.map