censor_bear 0.1.18 → 0.1.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (756) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +155 -7
  3. data/Rakefile +4 -0
  4. data/app/assets/javascript/censor_bear/Chart.bundle.js +26769 -0
  5. data/app/assets/javascript/censor_bear/application.js +2 -0
  6. data/app/assets/javascript/censor_bear/chartkick.js +2518 -0
  7. data/app/assets/stylesheets/censor_bear/tailwind.css +1510 -0
  8. data/app/assets/tailwindcss/base.css +113 -0
  9. data/app/controllers/censor_bear/application_controller.rb +16 -2
  10. data/app/controllers/censor_bear/home_controller.rb +0 -24
  11. data/app/controllers/censor_bear/mod_logs_controller.rb +11 -11
  12. data/app/controllers/censor_bear/review_logs_controller.rb +96 -0
  13. data/app/controllers/censor_bear/stop_words_controller.rb +70 -14
  14. data/app/helpers/censor_bear/aliyun_check_helper.rb +4 -0
  15. data/app/helpers/censor_bear/application_helper.rb +10 -1
  16. data/app/helpers/censor_bear/review_logs_helper.rb +4 -0
  17. data/app/models/censor_bear/review_log.rb +61 -0
  18. data/app/models/censor_bear/review_logs/image.rb +6 -0
  19. data/app/models/censor_bear/review_logs/text.rb +6 -0
  20. data/app/models/censor_bear/stop_word.rb +127 -2
  21. data/app/models/concerns/current.rb +3 -0
  22. data/app/views/censor_bear/mod_logs/_mod_log.html.haml +2 -3
  23. data/app/views/censor_bear/review_logs/_buttons.html.erb +12 -0
  24. data/app/views/censor_bear/review_logs/_image_review_log_row.html.erb +36 -0
  25. data/app/views/censor_bear/review_logs/_row.html.erb +2 -0
  26. data/app/views/censor_bear/review_logs/_search_form.html.erb +67 -0
  27. data/app/views/censor_bear/review_logs/_text_review_log_row.html.erb +32 -0
  28. data/app/views/censor_bear/review_logs/ban_user.turbo_stream.erb +0 -0
  29. data/app/views/censor_bear/review_logs/index.html.erb +44 -0
  30. data/app/views/censor_bear/review_logs/raw_data.turbo_stream.erb +19 -0
  31. data/app/views/censor_bear/review_logs/statistics.html.erb +97 -0
  32. data/app/views/censor_bear/review_logs/undo_remove.turbo_stream.erb +0 -0
  33. data/app/views/censor_bear/shared/_message.html.erb +9 -0
  34. data/app/views/censor_bear/stop_words/_form.html.haml +10 -9
  35. data/app/views/censor_bear/stop_words/import.html.erb +49 -0
  36. data/app/views/censor_bear/stop_words/index.html.haml +1 -1
  37. data/app/views/layouts/censor_bear/application.html.haml +9 -4
  38. data/config/initializers/censor_bear.rb +2 -1
  39. data/config/initializers/ransack.rb +6 -0
  40. data/config/routes.rb +24 -14
  41. data/db/migrate/20211126133758_create_censor_bear_stop_words.rb +1 -0
  42. data/db/migrate/20220914112252_create_censor_bear_review_logs.rb +23 -0
  43. data/db/migrate/20220921022018_add_centsor_bear_review_logs_state.rb +6 -0
  44. data/db/migrate/20220923061549_add_timestamps_to_censor_bear_review_logs.rb +5 -0
  45. data/db/migrate/20220925145906_add_index.rb +8 -0
  46. data/lib/censor_bear/check_image.rb +89 -0
  47. data/lib/censor_bear/check_text.rb +76 -0
  48. data/lib/censor_bear/configuration.rb +39 -11
  49. data/lib/censor_bear/data_id.rb +76 -0
  50. data/lib/censor_bear/engine.rb +18 -1
  51. data/lib/censor_bear/error.rb +8 -0
  52. data/lib/censor_bear/log.rb +20 -0
  53. data/lib/censor_bear/record_hook.rb +47 -0
  54. data/lib/censor_bear/result.rb +73 -0
  55. data/lib/censor_bear/version.rb +1 -1
  56. data/lib/censor_bear.rb +20 -72
  57. data/test/controllers/censor_bear/aliyun_check_controller_test.rb +12 -0
  58. data/test/controllers/censor_bear/home_controller_test.rb +18 -0
  59. data/test/controllers/censor_bear/review_logs_controller_test.rb +19 -0
  60. data/test/controllers/censor_bear/stop_words_controller_test.rb +56 -0
  61. data/test/dummy/Rakefile +6 -0
  62. data/test/dummy/app/assets/config/manifest.js +3 -0
  63. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  64. data/{app/assets/stylesheets/censor_bear/home.css → test/dummy/app/assets/stylesheets/comments.css} +0 -0
  65. data/{app/assets/stylesheets/censor_bear/logs.css → test/dummy/app/assets/stylesheets/home.css} +0 -0
  66. data/test/dummy/app/assets/stylesheets/scaffold.css +80 -0
  67. data/test/dummy/app/channels/application_cable/channel.rb +4 -0
  68. data/test/dummy/app/channels/application_cable/connection.rb +4 -0
  69. data/test/dummy/app/controllers/application_controller.rb +9 -0
  70. data/test/dummy/app/controllers/comments_controller.rb +72 -0
  71. data/test/dummy/app/controllers/home_controller.rb +4 -0
  72. data/test/dummy/app/helpers/application_helper.rb +2 -0
  73. data/test/dummy/app/helpers/comments_helper.rb +2 -0
  74. data/test/dummy/app/helpers/home_helper.rb +2 -0
  75. data/test/dummy/app/javascript/packs/application.js +15 -0
  76. data/test/dummy/app/jobs/application_job.rb +7 -0
  77. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  78. data/test/dummy/app/models/application_record.rb +3 -0
  79. data/test/dummy/app/models/comment.rb +61 -0
  80. data/test/dummy/app/models/user.rb +19 -0
  81. data/test/dummy/app/views/comments/_form.html.erb +22 -0
  82. data/test/dummy/app/views/comments/_image_censor.html.erb +23 -0
  83. data/test/dummy/app/views/comments/_text_censor.html.erb +13 -0
  84. data/test/dummy/app/views/comments/edit.html.erb +6 -0
  85. data/test/dummy/app/views/comments/index.html.erb +26 -0
  86. data/test/dummy/app/views/comments/new.html.erb +6 -0
  87. data/test/dummy/app/views/comments/show.html.erb +8 -0
  88. data/test/dummy/app/views/home/index.html.erb +0 -0
  89. data/test/dummy/app/views/layouts/application.html.erb +20 -0
  90. data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
  91. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  92. data/test/dummy/bin/rails +4 -0
  93. data/test/dummy/bin/rake +4 -0
  94. data/test/dummy/bin/setup +33 -0
  95. data/test/dummy/config/application.rb +23 -0
  96. data/test/dummy/config/boot.rb +5 -0
  97. data/test/dummy/config/cable.yml +10 -0
  98. data/test/dummy/config/database.yml +20 -0
  99. data/test/dummy/config/environment.rb +5 -0
  100. data/test/dummy/config/environments/development.rb +77 -0
  101. data/test/dummy/config/environments/production.rb +120 -0
  102. data/test/dummy/config/environments/test.rb +59 -0
  103. data/test/dummy/config/initializers/application_controller_renderer.rb +8 -0
  104. data/test/dummy/config/initializers/assets.rb +12 -0
  105. data/test/dummy/config/initializers/backtrace_silencers.rb +8 -0
  106. data/test/dummy/config/initializers/censor_bear.rb +21 -0
  107. data/test/dummy/config/initializers/content_security_policy.rb +28 -0
  108. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  109. data/test/dummy/config/initializers/devise.rb +313 -0
  110. data/test/dummy/config/initializers/filter_parameter_logging.rb +6 -0
  111. data/test/dummy/config/initializers/inflections.rb +16 -0
  112. data/test/dummy/config/initializers/mime_types.rb +4 -0
  113. data/test/dummy/config/initializers/permissions_policy.rb +11 -0
  114. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  115. data/test/dummy/config/locales/devise.en.yml +65 -0
  116. data/test/dummy/config/locales/en.yml +65 -0
  117. data/test/dummy/config/puma.rb +43 -0
  118. data/test/dummy/config/routes.rb +8 -0
  119. data/test/dummy/config/storage.yml +34 -0
  120. data/test/dummy/config.ru +6 -0
  121. data/test/dummy/db/migrate/20211127173946_devise_create_users.rb +47 -0
  122. data/test/dummy/db/migrate/20211129164557_create_comments.rb +11 -0
  123. data/test/dummy/db/schema.rb +79 -0
  124. data/test/dummy/log/censor_bear.log +71 -0
  125. data/test/dummy/log/development.log +109297 -0
  126. data/test/dummy/log/test.log +2842 -0
  127. data/test/dummy/public/404.html +67 -0
  128. data/test/dummy/public/422.html +67 -0
  129. data/test/dummy/public/500.html +66 -0
  130. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  131. data/test/dummy/public/apple-touch-icon.png +0 -0
  132. data/test/dummy/public/favicon.ico +0 -0
  133. data/test/dummy/test/controllers/comments_controller_test.rb +48 -0
  134. data/test/dummy/test/controllers/home_controller_test.rb +8 -0
  135. data/test/dummy/test/models/comment_test.rb +45 -0
  136. data/test/dummy/test/models/user_test.rb +7 -0
  137. data/test/dummy/test/system/comments_test.rb +43 -0
  138. data/test/dummy/tmp/ai-sensitive-words.txt +14100 -0
  139. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/-0/-0esYLTKyuN6c6IjceM_XyU1yclWeFS2vW-nJiR5zTU.cache +1 -0
  140. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/-d/-dVF44kfLK7gLBFw_kV5mEIdoIRt5WgsSrraYaDV_Vc.cache +1 -0
  141. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/-d/-djAp4jMT1RKuMWHaieXkChmjE2PHLhUFVTxDLVF2V0.cache +1 -0
  142. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0G/0GMhLcn-HpZY9o_dxFwNVmzwCMjwmbqvhpwty3TH_1I.cache +1 -0
  143. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0I/0IysCgn-M9tsEjQcARkhQU7pY2EGXkcKEqCHxH7I4K8.cache +0 -0
  144. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0I/0igD9pGvgMgY8bCSIrYeVqWWOKfzb3H1xOKZ7w68zzU.cache +1 -0
  145. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0K/0KV5SducAEl5lmOpVdLVwnd6keNDbFAposlZeJBa12I.cache +0 -0
  146. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0N/0Njt2YVzUcVAtCx4chYz7Ik6VM66HtN9uYISIKWhUO4.cache +1 -0
  147. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0R/0RYnCqVuRJuGUszTaMJlOw6gBgUAMYhFhxPGKt6C03o.cache +0 -0
  148. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0Y/0Y5K6XMiUZyO59GjYlDiHB48YjWN_5HxER1SFxJzFNg.cache +1 -0
  149. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0c/0cY8dMlJvbgUNNYgAZdyQgjc_MaXM6WYcjY-cTclMUI.cache +0 -0
  150. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0q/0qSBdDU6coZtVwmSClcPrLMn3035Y-8NnWC2LY1TF1U.cache +0 -0
  151. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0t/0tPQYCgIMo-GGuwiz_qrnLE8HkMv0AiR2B_CIRQ3GD0.cache +0 -0
  152. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0z/0zUK6NpmLt7dZ_tu1q3DibPR51EHYFB9tfSftJt1-UA.cache +1 -0
  153. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/11/11SYuXn5Ja-fBkFudBzJqjj5YAOQTyNvOcwf7M4PztY.cache +0 -0
  154. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/13/13WKRV_yJJENVMEwWupVRpI8XTnx0mKxcOWSxWEyUsg.cache +0 -0
  155. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/1C/1CjokSZQkA0A23vC0wh50e-vDgIfIePCsFlekvFvbiQ.cache +1 -0
  156. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/1G/1GPs39oIN1xwW_7IHwZoL8AkUTJAlSdpSqkbKjZBRT8.cache +1 -0
  157. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/1G/1GQCqhsmuGFduU1eWxe4jpGcoEYPe445N0IC6XvTbYg.cache +3 -0
  158. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/1T/1T9a5qgRAtTxSOiLeNUdVEV5x6ZAyFkjvtb6_Vy8j40.cache +0 -0
  159. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/1W/1W3kozioo4adDptSXvRSUSiNedDUPiWe90iXPsMLVP8.cache +0 -0
  160. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/1l/1lCXPzt9ar-HRq16OPpAl0e2NdfWBKn_b06W43QJLH4.cache +0 -0
  161. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/1m/1mz_GCX09yDXH8ohfRvy0uA22yZ3mB6OVMr3L1FhB-g.cache +0 -0
  162. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/1p/1pVy-3e8UeY2hmzZzdCk7sa54-UUejkvG_yZiy7aVkg.cache +1 -0
  163. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/24/24Hgt1E3G9Ho5JQ27CCoj-dVE4ByYOk0ZYO_c03QCL4.cache +0 -0
  164. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2D/2DXKAkJ9-xgqrtQyltm6rmhtO0gZs_uPZpC6HFPbRu0.cache +1 -0
  165. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2E/2E3L6UYuo9zMpbum01g360mFyfkDmxI_PB8uNvNpZTM.cache +0 -0
  166. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2Q/2Q9839sQO6aKu1kAZFQwFVX6-c1NCL2jRuIPBUnGclc.cache +1 -0
  167. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2V/2Vz3X95JQfT8DTBRHS3KIPqmufhGx8XDB9ZiXz0C0Vs.cache +0 -0
  168. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2c/2c4uOhXvfvF61ddsXdBXDRs9tPZ54l3YGZHCjiC-QuE.cache +1 -0
  169. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2k/2kmS89MoO3-SqUchC9ufCWnEih75_Yp9YMK1Hs3bOF8.cache +0 -0
  170. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2r/2rHnaVgHRzi8Sbodv6NyTuF3dii6v64ZoJr0R8vQ718.cache +2 -0
  171. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2s/2Sj1r2cLY0hJvIpXtQePQjB8K52pGccx5UiQC4FLVLI.cache +1 -0
  172. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2s/2s9zRrxXAZe38INLpLEXzEZi8zvVE8KMeASFOGiUOJE.cache +0 -0
  173. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/39/39MnZ1Qywv3m9ZMSJ9lHfVMr6qtAVdQLHhbYCQCXX-4.cache +0 -0
  174. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/3K/3K8GDIsS4QpGBowd2sMCa0ca5zJKIXjcyIrCHh6lsUM.cache +1 -0
  175. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/3V/3V-MiSiv70YMFPa1j1IO3LN1FFswKLyF6OhPPHQQ340.cache +1 -0
  176. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/3a/3aNAtrvXA68IMAF7aRAyTcQajEYPXIksWkW5zdF03Cc.cache +1 -0
  177. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/3d/3DzRMjCKxT-7s6HWaUcHGY4KTu9OHgZ7EQp10vlyf4w.cache +0 -0
  178. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/3d/3dNiuEtJ027bUh_A6dfn1IkxzXrmuUKkyVZWBnhvHfg.cache +1 -0
  179. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/3l/3lsAyc2HMRwttBZ87uahRgiuJvgToq8lb-JyzYLyh_o.cache +1 -0
  180. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/3z/3zOTVPrqHH_NZ1ORrk8xc-4UYXwTLqbtGlWiE8SwGuY.cache +1 -0
  181. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/42/42QpjooVD8kQPtpxeQ5Ds8_vNM6nGUouGmfwfomQPy4.cache +1 -0
  182. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/47/47cf81EpbTIJqRzBO7xGaZcnaaIoPxz1pxKW0_6mRN8.cache +0 -0
  183. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/4J/4JBpuC9N8qrt8iHA6pj-V8BrW_RENKUKIpWamVMVxdU.cache +0 -0
  184. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/4M/4MhAkH4aSnpMKYSGV8cCy1M40QsAHUooK0Nk6ofZPYs.cache +1 -0
  185. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/4x/4x4DK_AOznPsJoYggjkRNTwHk0YI0D7CAiAVHCWTmlU.cache +1 -0
  186. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/55/55pac43gXLP0TC0ZGoVyZeU9sxLJ16SRJBz-NJ7QqEs.cache +1 -0
  187. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/5C/5CyfIkjA_DszZIfmN_mVjPxGz7UTumwGdZAN9V6TEco.cache +0 -0
  188. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/5K/5KNyquJGg80ZZJ63nP4sNDwe70K_hklN4rCmH5kd_kM.cache +0 -0
  189. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/5O/5OTPXFw6kMkSMGIPrtNRlpNZ9xZZ0XnbMy0u9T8_km4.cache +1 -0
  190. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/5R/5Rvz_zB0SCCC0FLe93eFIsk_MBbrZMT3KuzNA0MBcbs.cache +0 -0
  191. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/5R/5rv7iu313ZjJtpueFseiHrfs2yEsk-FiOY2ee9gjS44.cache +0 -0
  192. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/5m/5mcw88MdKOywiMy3WSSzZfC_mTwNgZ36xxPLDeLKsJw.cache +0 -0
  193. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/5t/5ty1Rax_KZRjdPMHS6_plU5ukAz8Cq99DkID_9h4awg.cache +0 -0
  194. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/67/67oD3r1wkqVTqYKS_R0kGI5v9DissYVxLt_P4dnyS3k.cache +2 -0
  195. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/68/686cvtH1cRIuzriSAbyX_leSDNWq97GhJ04YUIZ1hdI.cache +1 -0
  196. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/6A/6Ad8FDAUkgS5J4qkB1uz3aSMXkEeaPueD_EiVPeSyqo.cache +0 -0
  197. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/6B/6BOSDgtW-bGzgHDFOd5AFsEGf34k8hvcIPVfxTD90UQ.cache +1 -0
  198. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/6D/6D5HVl-ORU9tWfffkpTj9hocdpBC_I2nYvz6q3KzQ_Q.cache +1 -0
  199. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/6I/6IrJBZmG8dEUga2FNlocw3VvBhvvcdO9NaXQJv2jSJc.cache +1 -0
  200. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/6J/6JEZOZvgIz5-_-2hRV01O6JyJopmW-RBpvw9jclpCN8.cache +0 -0
  201. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/6f/6f8-JiizZ0dcKffMcv1QMq1CRoBVIgON_GAubprI388.cache +1 -0
  202. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/6t/6tmlCMTNbrnS0vr1wf90IT0QQlt74UwWRWSaZkNoHJM.cache +0 -0
  203. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/6v/6v5ysbjVGaE4CVFNbSctMYVxrUM1zuxnCKPTLyFiC3o.cache +0 -0
  204. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/6w/6wU2ypMv91O6D5ZTSijHeJNU15PWecHze6QnvB924BE.cache +1 -0
  205. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/74/74qJBUyOmjwOI26-mvhz_J5z7iT130SzhcT5eSzV1wA.cache +2 -0
  206. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/7G/7G8svfPKlHlUAmWbf6K9ESsGQzp_WzcpFuWhFs-Cov0.cache +0 -0
  207. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/7R/7Rc8wXeXgA2y1OgcQ7uciAt6J_ALPk39QlhVcCGBORs.cache +1 -0
  208. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/7T/7TR93xHWUnlu0ozQuPlposE_mG_olPY9jlJtEYeqJYw.cache +0 -0
  209. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/7V/7V88mLljLDTLaskpTiDZUMFgX89sUKmWLtQBIWGmx8g.cache +1 -0
  210. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/7p/7pgp4WSO35MqV0HGyEYNfYsAacLOlGi99PfmBd7HYx0.cache +0 -0
  211. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/7y/7y78v0jh8tuZDgjo9qait_sn1NH5ZA-dizJicJcIn70.cache +1 -0
  212. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/8E/8EtjNSaBWfoo6LQCNizf-MqfmU57hyYIdyXaVf8kd5Y.cache +1 -0
  213. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/8G/8GbTJ43SIxYNgl0SUUwORSfye9DXsv0S-CdVj9ZtmFk.cache +1 -0
  214. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/8U/8UoCEOo0MhayLshCenf0WDnK4w7ik4FntTL1WK4pc94.cache +0 -0
  215. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/8i/8iCBl1skiiELUNNiJs7_Rzg94_8Vqj2FQo3az9udEfo.cache +1 -0
  216. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/93/93uaoRwx1-kUlG32BcDIBXm1Mo3WCKb_qfeANM_V9Ls.cache +1 -0
  217. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9F/9FECYbBtnPxwnIz7bMX9vZT_Fomeb8_V-Xr-MwSLNBk.cache +0 -0
  218. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9O/9ORbmTKHJG8OEQrzKPh6PZZYlDPrZV0XrTSfB7l3GQQ.cache +0 -0
  219. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9d/9dSAbWczilyfFHvGA6krSzjL6Rhx9sASWQnh7EjFdhU.cache +1 -0
  220. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9d/9do_L52ZEuvS3SuKXA9OfKjuZmNqZLXMlv0is1FLaag.cache +1 -0
  221. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9p/9pZWX3m3pR72t0YjKxhYE61foRPCbLweVv2vkR1g5ak.cache +0 -0
  222. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9p/9pjf-Fjeq5EuNxuN_gSGK17NaFm1EmPY_iNDXng6_do.cache +1 -0
  223. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9q/9qpxDIVZ1S8xshT4NRJ_nlz23WWPW6ZOeX9Os03Cwu4.cache +0 -0
  224. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9r/9rAJFX50yqc6wm0vDxLUuELwCG1rcmgxHKRCMqPMGQE.cache +0 -0
  225. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9w/9wrupLLk0KNEhLC_ZwLzLDcBb_fBthYefU3HVy_a3n0.cache +0 -0
  226. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9x/9xCs9tZ8BQtvtLq5AwUTUuXddEwqOQy2GMYGXsYMNvU.cache +1 -0
  227. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9y/9yJPsvgPWm7M1MkaujrDEFCKvZ9OJoz8qG8i_QwDyF0.cache +1 -0
  228. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/A3/A31tNDlTdVFPStlr_XEHa1tTIPt3w47eoHPmt8O2yfM.cache +0 -0
  229. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/AH/AHi5tTrSNOeKc4YycTDiFhIG_ApfTY-6MbcPeOqILlI.cache +0 -0
  230. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/AH/ah8WSqZ497KM8arZ-kKT5n-fVDvFevN7EPKuaBElNAc.cache +0 -0
  231. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/AK/AKs73SW4EUYRfqAUZEgdh_SOXP7_lcZGyU9TpVRZ7tk.cache +0 -0
  232. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/AK/ak_QjQd0ENS5A5ttmIO2d4rNLd2i9QJ4y-vdH453wO4.cache +1 -0
  233. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/AL/ALFkIH0bFoiIE50eHwfQTWw_N0nq9DczBe1HTrTIZnA.cache +0 -0
  234. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/An/Anm1mOKOU67eIS_AYxthtf9Yx0PKlOF4m_zcYAvxjsg.cache +0 -0
  235. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ap/Apuk0v4rvXO97emlEnHc-C6EZKKnlhTAmk1Uit1o7xI.cache +0 -0
  236. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/BP/BP1sKFGuGbrQa0pp5NFmytgzrraf3TVMu4jXmKO0yTM.cache +1 -0
  237. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/BP/bpzEftBGQu_Ipx2t5NmS-VRfbcMwsM0Ai6b1FXk93oQ.cache +0 -0
  238. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/BS/BSTQUFiJW360PKju65V1oj62n7rCdaVWqQLeWZJ793E.cache +1 -0
  239. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/BU/BUC3nAkXC1VoZ1flT0B-3WOFyBggOYD4HY37ewy20aw.cache +0 -0
  240. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Bb/BbnDZlrmhZQRWUeJ2H5l-c8avYTevTpyjKqdCfWY1HU.cache +1 -0
  241. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Bb/bBK_g8MMq99IeMOuwd59crAe9XvklcSFENuxTlYrOPA.cache +1 -0
  242. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Bg/BgHXZwUa23PbNyAfyQg7AMSk9yH7exFjtEGUn960SLw.cache +0 -0
  243. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Bi/Biov9USImOQYxc-iMCgXwGfqpZVMsbSja-6zkLT97Rk.cache +1 -0
  244. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Bk/BkNzZzaRPdc0mGOqnZgHWv81REh1KT6GEufmASDdpg8.cache +1 -0
  245. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Bq/Bqi-LJQRfRjipR2YWQLFRQvvvRSnrQaAMqZj_rceUjw.cache +0 -0
  246. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Bq/BqxEnV7el43h6oE5SD0iil2W5OFsMAKjEv7XKypR354.cache +0 -0
  247. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/By/BywBBBN5IjNOBgKHts_TEgoLvxJ_rX_k5-B3E8w0P1g.cache +1 -0
  248. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/C4/C4IidIsU6c3Rs6HG48qRiv4yhsb8r_d2sWMrIzVQRKc.cache +0 -0
  249. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Cb/CbX3Plfl7R3t3V9vxBA-TGK0n9DZQIfGj_uwK-Yd2ko.cache +1 -0
  250. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ci/CiUqXK2fp99NJ7ip9y20Rh3JwGE2cqNUdP6SojRrzWA.cache +1 -0
  251. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Co/Co_uoh_vxb30RDbq0A4YObMZN2f6dRC146j8kXetSqo.cache +1 -0
  252. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Co/Cou_Ys6OUSEf-DAy_4EkHScG4xPFYpGpv6vsFEt93tw.cache +0 -0
  253. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Cs/Csg8yCqBGT7lRRyZ6hSE-EKCrx6ao2J-vOWK7Z1lRSY.cache +0 -0
  254. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/DA/DAyIbWgMShmAbChM2dHTQ272ufoZZZj6_Qc1VAHkSPg.cache +0 -0
  255. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/DF/DFW39AeKqW3QPs2BAp22gDfI7_08GB-N62KFXjYX6zg.cache +1 -0
  256. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/DJ/DJpPHWVdBql1SjhZN_T2P0sNPxDJcBpsgYMAFZEoxR4.cache +1 -0
  257. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/DJ/DjSviHd8qE19V_IpfZ7pAa574hyaVil-_9l4odoSnKw.cache +1 -0
  258. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/DT/DTgCOa_h___A5D-HckgyuPDnob4JQOYcCuDp62qMmaI.cache +0 -0
  259. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/De/DECGprWzM0PNEsWgtB7X4Q6BKoidfRIq00mgB9MplJU.cache +0 -0
  260. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/De/DewqzZAFT_z8yllpBKSW-aD7G-8en02ryls2y5tko8w.cache +1 -0
  261. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Dn/Dnq73UfpUsPig78ReLecOywzLzX7htkZs6Zmya1X31s.cache +0 -0
  262. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Do/Dom7X_4t-DHOxwfoArchVo5K8BoUj6JPaBUauapyly8.cache +0 -0
  263. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ds/DsnAREXErH4P4urXmUkV2FnwfbXYftm_rVpYU1h0sXk.cache +1 -0
  264. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Dy/Dy4rCHrlel_9hXcVZYXsVm2LpxYTXYUikfPR6jpzxr8.cache +1 -0
  265. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/E6/E6SVkauhCbbFJ-eB8YnqXiMY1029XJkPTAda0daCvyg.cache +0 -0
  266. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/E6/E6U2z1FDKxTyHtxRVG6LkDVvmZcKuUztG6X901pQPPo.cache +0 -0
  267. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/EN/ENQ-g7TrzQ9GOKpUXyjhQC2RBCIcU8w37a0IXdwCtiI.cache +0 -0
  268. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Er/ErQ5EX7uI1GvW5jKZ4MgZ13FBSO4UhOFL-e-7oVt3dw.cache +1 -0
  269. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ex/ExB7UzHmE7x6h3_EQgMheyc0ZsjRs4BpgaaFcN9DF2g.cache +0 -0
  270. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/F0/F0seVx4RS6JIHX57DCl5A40Ny2D3GwLgWwR7wBAQ9kQ.cache +1 -0
  271. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/F0/f0quNU-FMZyqvi0o_qZYOM6WkCq9F-q3BaYgzDl9NpQ.cache +1 -0
  272. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/F3/F3NIPhbKjpcC3f_Lvj0CvQ9-vvQsv2hBbGhFhncjzWE.cache +0 -0
  273. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/FS/FSlB3Shd1bhxLpLannEKzHDo1w9Xx-Fx2vNx5lRGrOE.cache +1 -0
  274. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Fp/FplDNWFj5ZVXrgLqwR9OkQN4Q0HB0xNeZwV0c8XPvhM.cache +0 -0
  275. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Fv/FvzEZfnc-TewrI1JPfD6Ib0Mz0aZrEsGf4YmHFjNOU4.cache +1 -0
  276. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Fz/FzhXAFy-B_2pgb0dsua4EWT3dKJK6b59mvj0N4i_i6c.cache +1 -0
  277. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Fz/fZtDZaAqALXhPn388SwSFKQB7DNmmqwe9fGKo3AWce4.cache +1 -0
  278. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/G-/G-FeqisUAuBZMVNCe9_0ewKsnxpcJ-zTXzVHpHNuH0Y.cache +1 -0
  279. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/G9/G9uFFQM5RExsT0yLEZAANZBYLGnRUaD0z-SSJJLQGJk.cache +1 -0
  280. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/GN/GNIsiD3sL9b8JSPDGjGRgSnr6WbjERWJd6Tq5UiWVJk.cache +1 -0
  281. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Gk/GknXxE5Z8QLxBwAuhgebkd36bxdJ8_5D8agNxaooeCs.cache +1 -0
  282. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Gt/GthN77pwcIjmZ_QU1zEVLtS5okV07FawHtknQbcyq2Y.cache +1 -0
  283. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/HB/HBVlox35e1mITss4pcCqCwuwvHMB9zYkOtRgxKhZqW4.cache +1 -0
  284. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/HJ/HJRjPizfrLi0HKMvNq4V1MoYPxSPVABE2Jd9QDWPLCE.cache +1 -0
  285. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/HJ/Hj2kGXHoOuUeBFZotTo2qAZJW9LuT6M54T5OxtUPC6Y.cache +0 -0
  286. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/HJ/HjRjxHJCq91SPPSRNgUtNpzLg4F7p2Pyx3VEGeigk2o.cache +1 -0
  287. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/HT/HTfuKSJpWMtgnpmJ5weSZDOyIwBsSx-SNbTOkYghv2s.cache +0 -0
  288. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/HT/ht4CV7HgWuV4xv1EqO0Oziltq-jIR5OJOjmVFuJrpcw.cache +0 -0
  289. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/HX/HX43CroctUpKxbX52tAb6UK36RVoEuKIsctQ0cRdLTI.cache +0 -0
  290. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ho/HoIMnRR77nOYxFzSQP0qNhGRwSpxN7wWJAm-AGj9CBs.cache +1 -0
  291. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ho/Honh-zIRbQYU1w59wJ0luEk6_nOb1eB1nIpBZ8XDGQA.cache +1 -0
  292. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/I0/I0ajAdOGH4-i1S5MKfE80UEDH3YK3DfPcIiKtOpySpk.cache +0 -0
  293. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/I4/I4sL7LMi5GvO9i3g2iU5v9d6lqgUrbpV_wYAriIeQZY.cache +0 -0
  294. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/IA/IA4D1VZJw-cG92aTyMF--Zl72M_v3Srro28Mb-u0QTE.cache +1 -0
  295. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/IH/IHqjGFQxfZKXzImOslyn6SPbn-gDYgvIg5ATWcGbjAI.cache +1 -0
  296. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/IH/iH1Bef5qFORAINam4EASnTKdi2yxXpp4GzhKClWbL6U.cache +0 -0
  297. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/IW/IWHCq-QWEva6rqS-AJxA2ZR9z2KEDpudWMVec33Clhc.cache +0 -0
  298. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/IW/iWW5oODx9ZUoDeyxxMeCEec1X5TU-MWVU5vV9yeRyCw.cache +1 -0
  299. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/IY/IYzxTnQ8h2-jYILWh1aDZio-OtABheIeEQOigMzgxxU.cache +1 -0
  300. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Id/IdVolZKbcukmxoPu0SpiIDJGA_R1CPCIAkYDYBrBYTw.cache +0 -0
  301. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ig/Ig-yBkoftWFkLWlkz6UdPBd-VNInasV6iNaZqZda_rM.cache +0 -0
  302. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ip/IpU_ruOdcrT47AIdwOZ25HAH6I5o0s0fYz9-DqK51YM.cache +0 -0
  303. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ip/Ipvn127aIrH1YUMZ0k53708aqFsFWrspgXLOAphPuUk.cache +1 -0
  304. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ir/IrN40e7Gk3rlLw-YFmNJEhhb9l9kurZOsNTlg4xIhCI.cache +0 -0
  305. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/J2/J2eUOeAPW3V8zml-t7j_xei55YqVzT8umrgqtcTyGyg.cache +1 -0
  306. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/J3/J31WmezVbLgsdOyH6gDiC5EHtS2YfDphp0en-ESMq4o.cache +0 -0
  307. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/J4/J4x0iWnaseTGDvFNG-gViqQYoT7mq128N6Y7PK4MC8E.cache +0 -0
  308. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/J_/J_2Rx9kPX5rfun1AqxjaStWNrsJICu8u3Gs5ZxeqsA0.cache +1 -0
  309. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Je/Je1gk8cbhMrlVTDT-q3KLfk1rHFK9f7ZR_sK4GF0gPo.cache +0 -0
  310. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Jf/JfjPLxGu_KU16umdxEWaanAltGYUu0YRRVTP1MWKUX0.cache +1 -0
  311. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/K6/K6o2oduahqWPpWo_62tbf1UO6mqIBaLQB82I1Qq746Y.cache +0 -0
  312. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/KR/KR1uPMB4nTD2XFB7ZBYItb9GQjvD4Almc74n5jJ2EuU.cache +0 -0
  313. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/KR/KRh7erSm-58ykTLHmt5UlEHCq0eIIAYu3IJXo8RLHoQ.cache +0 -0
  314. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ko/KopDgv_OvKtaopNZ4E8Vj4h3vTtIvJa6Tcdp-U1ZVQU.cache +1 -0
  315. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Kw/KwTwFWNGU4zPVewXFsY8Fr2on8uMiupPt2BEfs3Pei0.cache +0 -0
  316. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Kw/kwhn58AR0ZHBFHgwkvjR4tuhaw0rpVNg70eQxMi7uuk.cache +1 -0
  317. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/L5/L53XTNv86aX8koV4aLsDX4dOLyUQRiO12ASaXb8Hw4Q.cache +0 -0
  318. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/L6/L6huRb4MzAfliZWTMA1RI_B_z3blASZQe35-F8bo8aU.cache +1 -0
  319. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/LX/LXWb4aNss0ytJi5YBe0x4En8qpjGdoWK_by19njav54.cache +0 -0
  320. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/MB/MBFnT1e_nxftLHs-9EsFSqIFgNdS42O8w2hHoO3fVc0.cache +1 -0
  321. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/MB/mBvP-kwYQ1UhA9hvGzA1Jf5cfcNXAW0H4wdhLYyE6wo.cache +0 -0
  322. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/MF/MFkPR__1GnPXrPLZLRV-q6sqrjQHlYJQDLDkmPMqqCs.cache +0 -0
  323. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/MJ/MJKNkG690jzJJsw46hdD0D1ECiU8mJhBR76lpWlJe2A.cache +0 -0
  324. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/MJ/MJQpnDc5Wwbkp_e6CmTJRDiWyhyksDOJLU5DiCSbCQ4.cache +0 -0
  325. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/MN/MNj0ExJ_YT3aESsHKicu9bbDt9DnZg5bmUosUoi9VYE.cache +0 -0
  326. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/MS/MSC_RxIqfM3X8MaIOaK-68PWuOJZDA8Yvoi9iB5Jd9w.cache +1 -0
  327. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/MU/MUH2zpQIhd8JQrTv7VF56DykB7sQqLAd5o9A1CHTUWc.cache +0 -0
  328. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/MU/mUeJf8hHWZ1PUyF6TMe6aSjl5pg2__jfHyjOsToX05k.cache +1 -0
  329. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/M_/M_zbkvwZ1UfB1ZwoOUsyeCMw0wXxaL_2XQPsqd7ANf8.cache +1 -0
  330. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Mk/MkvWJFtzzKULPdR5UHD7RlrYvlwOWhoboSVJogXmWNY.cache +0 -0
  331. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Mo/MotM5yzyDJJc-cH5ExHuLZuPlmSgHw7wkyEo42IYYx8.cache +1 -0
  332. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/NF/NF6lgo7Tgm2HRbhXXDwPw878zfG4-knUubSiDNx3mrI.cache +1 -0
  333. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/NN/NN4KDrGHki7WPr_4hXbjvs-7j4IUuGvzmDRofVPPJYc.cache +0 -0
  334. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/NZ/NZz4OOg8M1AtHWqxTqYdpEKTy4fTY30BXKDyEirZ6gY.cache +1 -0
  335. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Nl/Nly7-DyiLn28-Ble84IFzTkOPtYO7OlpK_dbDPtKmJ4.cache +1 -0
  336. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/O9/O9p5Jzs4O9YTbUDgok8lUauutIh0KNN8W-a9Y16V4AY.cache +0 -0
  337. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/OB/OB8cqcs2kVHjHwBB8BMPelGNM5tiuz8Tuz_jI_MckNk.cache +1 -0
  338. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/OE/OEgXlFuzVcInkGx4TZ34PdYuwu-qPQjkyaPIO1wNMc4.cache +1 -0
  339. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/OK/OKpy1Ni9hI0MrOUmj5LOV57cKi2lYtw73QaNpdczimc.cache +0 -0
  340. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/OP/OPWEz6ze3eQdf4lJYuO127nmk7pNR4e-Px77LZelAlA.cache +0 -0
  341. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Od/Od-mEr2MPY4MK5cGF_8EjQd4LPFJX45maBQmnfGd2ig.cache +0 -0
  342. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Od/odaOUaWjbjRccwFL8uDy2PSNaqtkwLYsHuzTRUIjVL0.cache +0 -0
  343. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Om/Omp-ekwz7eknUpiCf9H9tqFDJehVJkoXBcZRHvt4fA4.cache +0 -0
  344. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Oq/OqgycbEBTtf74knNFsnUNJEjhFG0WK8w2-tKU_cXjUY.cache +0 -0
  345. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/PF/PF-ES1L38p39aYWXs5ZTHK23F-jrRqeABAPqLQ0zkUs.cache +1 -0
  346. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/PF/pF8gd32hsEj37_OzoldapnvIM_yd_9DUEESGIF15ADU.cache +0 -0
  347. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/PG/PGto0uAfa6PpvmeDT60ktici4C4LXjdtamzzH328Y5g.cache +0 -0
  348. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/PH/PHJrmeFlh96L0YeufF4PuJE4FCXjKVxfc7CunhgMaIA.cache +1 -0
  349. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/PO/POa4T-MTE6eN1Ob2Irm9w3jyhrPFyupM4Kmv07f9sMo.cache +1 -0
  350. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/PV/PVe-mx7gFHgQDf9749OtX5GTrlVIiDIca4WmTZud694.cache +1 -0
  351. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Pm/PmTJLQNwXaiDBh-mra_tx7KYGf0aSFjt__gg3lYMPvA.cache +1 -0
  352. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Pm/Pmp54--9V3jVlg-nNzmHmKT0bLHUlB7h2JekiMUjH9g.cache +0 -0
  353. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Pp/PPEwBMnzjI4U6uKrAosxfgglYc1OddT2WQIN1gN-5Fs.cache +1 -0
  354. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Pp/Pp6rHSie22VKh9CcxjpT6iTc3HNj5WS7WvGRQwvIhlk.cache +0 -0
  355. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Pt/PtrxwwsFYWpWookzMERwwEmq1KW3r9a9bAW6lJVL-c8.cache +1 -0
  356. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/QD/QDbVbFHbEbiSlXKVJsggmYVP9Px2fqHbzzNwNIROXEE.cache +0 -0
  357. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/QH/QHJfc9Hyh925ubrROewD9XHFxIHIaeQ-Nbq7z_F8g4g.cache +0 -0
  358. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/QO/QO4ZoJRovST9gQgGR0UOSzVYXpzJoJzSoyLKrZohZnU.cache +0 -0
  359. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/QO/QoKVMC9-LAy6RM4hMmsFpUaXLxdws7LJBN7wdN-AN98.cache +1 -0
  360. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/QQ/QQ6_ze9c88gKxnpEKIeZSKcmJuwAnW-XtT4lu-m6By0.cache +1 -0
  361. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/QQ/QqSzBATtS1QYSATyZsxGiUPyC49_k0ffztKosmsAxH4.cache +0 -0
  362. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/QS/QSfUdHhnUffaKsa9f7AipGFXZ6vByOtH7Y-LhRALRD0.cache +0 -0
  363. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/QW/QWT6Bilyf6N_wXR-37_hu13iOevVTXgg7OnedE17iKI.cache +0 -0
  364. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/QW/qWp0fKaiNcMNbzk1cPQW8xdhbYUpfGdY6d8Gl_X8Wig.cache +1 -0
  365. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/QW/qwzOr51I3zP0tiQrZY1m2LGxkpipvF4rzNKYsgPe7lw.cache +1 -0
  366. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Qg/Qgdg_esGG2aSxVPYtG9h6EuxGA6m3BOeRvtdo0oAREY.cache +0 -0
  367. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ql/Qlg1_OOlvn4KXZnhLcQPGvrMwENftAh46jN3D1XTHs8.cache +1 -0
  368. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Qm/QmWfcXSctEs0cAdKAjy8d9vTGfSTIXN5Qtsd1N3l4p4.cache +1 -0
  369. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Qr/Qr1_Ro_JNSdrntgDsTkWRo8wA9WDF0wotsUgo5EnmyU.cache +3 -0
  370. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Qz/Qzx9VuTfVFVFvVSeXEcxRex7szgZSctI2zPmn02mzU4.cache +1 -0
  371. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Qz/qzjY-ClxfhHQgPc8jT2saS5aFXfrFjSuhcP-bYD7ECU.cache +1 -0
  372. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/R3/R3pGZbvuBKDnIvhJIrYmwcyxWRuoKEK23EeF_ZCG_OI.cache +0 -0
  373. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/RC/RCSVwKwZYHFJJSGCpCfRK7tQ14OPPZBJ_LjaDLeqK-g.cache +0 -0
  374. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/RC/RCvQwoy2TESdd3ztSvSjgZDy9d1sio3ifN8uxNqwnls.cache +0 -0
  375. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/RE/REH4vxA4PxSTId5BqDCEiG9xF7pz2YL68Fez8-234Dg.cache +1 -0
  376. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/RG/RG1PrmlixwaUlG8BV0kcm_3F7OQekxsrLYjBdf403-k.cache +0 -0
  377. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/RG/rGf5mPvYSVYILz1U4D2LPXeUV8ATU0SiAkZ_pT6JMC8.cache +0 -0
  378. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/RQ/RQdodUyaQixnldc82sOwJAmeAQOdcLY6VGKXIaa-zQI.cache +1 -0
  379. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/RQ/rQK8sIROxyvYMbqJRgTJXIV4pyXCQCRSjePaLKy9ygE.cache +0 -0
  380. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Rm/RmizcJEy9XMhJxXaENf9XhYpShaBV8HXbGUaBqncdkI.cache +1 -0
  381. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Rw/Rwn9sV33bfj1P4ZtW4grf-2h5dlb_nrNoxYu26zoD1g.cache +1 -0
  382. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/S-/S-Yv4IK8HNatG-ScqM7YJbgjiKdUijVyDOHksPX1ORw.cache +1 -0
  383. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/S3/S3ttPC7y3222YwtniT4m1aeCJG6seAmVBuaQ1rIPzfw.cache +0 -0
  384. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/S3/S3zgE2OPlWwv9oq1yn5-znC7Mpddl1I4WDUL49TIRFg.cache +1 -0
  385. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/SD/SDW5fGsRWje9xyQBjOjHXHLa4mVMgMGcAeHOOcxUk5I.cache +1 -0
  386. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/SN/SNMNErqBbwZwrPQ2U7yR8pz3qjssrw7mNQeNfGEOvdw.cache +0 -0
  387. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/SQ/SQ0sOEoRLAdf3j8oITe4BwszAWGpDkUsQUKV8u_2ksA.cache +1 -0
  388. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ST/ST_eDHQkqBHaOZhbCoRJNVH7Hbvb07e4ZG_rjBePr9I.cache +1 -0
  389. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Se/SeLDlRKSCrSI6gD6-eB0jtdeg5DsfIXpHXvSqPgK48c.cache +1 -0
  390. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Se/sE7MvhQR8frXviF9FbBPOQ_t4Z3Wc_hCSGEl49S2piA.cache +0 -0
  391. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/T1/T1tIg_XFzRGMyoCxwCfgBvoAFm9sm0WHNKMojRpTuU0.cache +0 -0
  392. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/T6/T6YMzBXOio41KmLBn1fZvmI87UHT9YxSRG3VYB7lSg0.cache +0 -0
  393. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/TB/TBfWfsGJbnCaDeUV5w13ZUWmBt3HL_5D-bMbJLsyy7I.cache +1 -0
  394. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/TB/Tb4fMp_CoGgr1DvNtu6o1qfVlXfq_U1jYAgfB6KmtpI.cache +1 -0
  395. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/TG/TG5KI2tiSWKLjvPZDVirHd8r5pmiEmb4OGTwDDA8wwg.cache +1 -0
  396. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/TG/TGdrreevNrbaEjLZrcJytC6pSPho_30_0mhaz4Ijqzw.cache +1 -0
  397. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/TW/TWx3RqhgANNOu4SthZdXYd78mkCT3skbQgEYBpkvpII.cache +0 -0
  398. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Te/TegtL0uYuDtyPTqT5ZxQCk5_z-TKo3c7zPXCnm1Cr_s.cache +0 -0
  399. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Tj/TJXi1PfOwwuWTfuXbfvhKjtlo82W_9tZUkMvJ7SOQ2w.cache +0 -0
  400. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Tj/TjdMjai-bFIkeBdPQwufRhWUGvYsepMe7oTx9dFCqGY.cache +0 -0
  401. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Tm/TmvmHqnDpEbKIaogvJGqbqFoQYn40Hlou4-UegvJCmY.cache +1 -0
  402. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Tr/TRR0sJLSITpAlZTYODBlHzSwIwqrRchnp1PccYocL5A.cache +0 -0
  403. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Tr/Tr1rb_81iCHNYtf5LGrAyYEuUdwV4YQlFDziGDuZ2Xg.cache +1 -0
  404. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Tr/TrpfTVZBUlwqjE-k6Ulv0p51tQHTuyKNNCe5kJpj3FU.cache +1 -0
  405. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Tr/trAHTu3IPnywY39M2bltSZYSvaZgJ83C-XZkgBk7ZqI.cache +1 -0
  406. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/U1/U1Pt0P4jcqnH9uQT5b7Di7NPBn3RXCJgY6CVpDKVnG4.cache +0 -0
  407. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/U3/U3QxpBDUGWtAzB3vbUiWi5kv8L5BIAfZlLvpbm0O-cc.cache +1 -0
  408. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/UH/UHlRMhr0-DjLPLe8-bhdqkUoqKgPllFthc3zoSX-ETc.cache +1 -0
  409. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/UI/UIaeqyJKgQtdSxkOSiN8GO0SKSgffOosyf4QxFssupE.cache +1 -0
  410. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/UV/UVNd6rFGDjVAQx3IR2mA8Tnnwawxc_ke5F0YJGBC48A.cache +0 -0
  411. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Uc/UcEO-4OuaLE8EAs92JDK58DDEm9QBI6BG91i803zZAw.cache +0 -0
  412. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Uc/UcGvRuCNaSnkCPpoT3OvNZL2NgZurmksV-SVRdD72ZU.cache +0 -0
  413. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ul/Ul_WAqHaPoXTrDDGuDdX_vjIrG5SW6ZaEwNokFRpeBc.cache +0 -0
  414. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Um/UMrLQJdoOAqtD3BdPja5aH8FS0bqNn5eTxQr_7fuD2o.cache +1 -0
  415. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Um/Um3yfd0zve7Yf4Sj-oxkBh-3kvb-2cPjXZ6KJPTQunU.cache +0 -0
  416. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/VC/VCPLh55f6_oWzdnqrKfP04t5qivluWDlub2C40fEM30.cache +1 -0
  417. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/VO/VOu4aCRFKrmXJOrBbb4DbOxG1i31s6xtpv_upRSsK50.cache +0 -0
  418. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/VV/VVzImD8qNoGPN-tewI5rHyX-JS9m4tdpYNStpnBYZ2U.cache +0 -0
  419. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Vb/VbEcI52OPv0F3xdVP49wcAqexWP-qFe_qZm4Rctz4E4.cache +1 -0
  420. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Vn/VnYTu3Y5rg5e4uNaInqMysRFwoEA_FC0-bQpTNOibv8.cache +0 -0
  421. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/W2/W2P0XV6DCFdDwNt_IIyjqiWvacHOtGNxFyTLDzRS8x8.cache +0 -0
  422. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/WA/WAvFvGNDCv28oqVlNqvKh7qBJ6z-Yfqn3aHsF8UA4NU.cache +0 -0
  423. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/WD/WDtp3s-RCLmDxSpUo5FE7IGioFbbr-zDGqlvZpG2slk.cache +1 -0
  424. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/WU/WUoKcNJddsrVv58qK1wjq4CWZkq1iX8WdNkAi6536fk.cache +0 -0
  425. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Wi/Wiv5EygLUFCtHNLkc8IkJanOje7XZX2yLEMIVKfelvM.cache +0 -0
  426. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Wy/WyIcPtZVrJpvl_E3TMPIYUqqPHNg4I4Lh18AUWYJahg.cache +0 -0
  427. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/X4/X4Ln5xqMmU2fSPcK0vVEuAHq_f3t_uedXzLiL7SXj4k.cache +0 -0
  428. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/X7/X7fIc-VNHvvJK--dnMtIslwWRf-nMkwCCwS5KQmvpX4.cache +1 -0
  429. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/XA/XAMNYzCrhJhTCfnzMBjRKDgjIUITf0l3RtArt8f1ADk.cache +0 -0
  430. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/XA/xAQSQnUPDCLOTRaPy86Rj-yLbGDfJcn-NOEbiDN1bk8.cache +1 -0
  431. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/XA/xa2v9Aw_gEoc6cSEB3G8GDuDxE7NCOjv6kCJhrUc2H8.cache +0 -0
  432. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/XO/XORjJyvCHMuG8Z2bV_niqrIMRhhxwj8dGyFo8No6OTw.cache +1 -0
  433. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/XP/XPc082KnGmrTAyqZj_3fJwJQNMG1M7vQpxVzaheLJik.cache +1 -0
  434. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/XX/XX0I9-5hL-mQn1s7vd9vxpCAwRkr5rc7B_dga8wfjNA.cache +1 -0
  435. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Xb/Xbl-4yn-Gwd0vtX2FE2cY0v6g1JFcrqaZ7w_jfZi2oE.cache +1 -0
  436. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Xe/XeR_uhU6iqBjC-_ApkfQp9l2opSadJIHdLbaPwID7hk.cache +1 -0
  437. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Y0/Y0_iId0buliE8bZK1-Ft1QMcU_2pl4N5MZCvK-4wEjE.cache +1 -0
  438. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Y8/Y8KE-n-8B3wVqlB2h_jnazcdYI5W5AzGZDAkxNvKmhc.cache +0 -0
  439. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/YG/YGaMNuWoQKzCj30MRoD93Z9tDy_FCKsr_TmeKcFOaxY.cache +1 -0
  440. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/YH/YHm_bEIyVksf58uYDnv0vYG6uGUHuSJk6mAIWZT2bKQ.cache +0 -0
  441. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/YJ/YJs5wSnIhN0IjGrJOMUCMAjRId1OqqDr9IZtTSmVJdI.cache +1 -0
  442. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/YM/YMwEjbpfTQJJKQQrTLJ8xESPn2-muTgNuWpfFCRlBho.cache +1 -0
  443. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/YU/YUypfES4l0WKX2McOvCMV4ah9PUrEJUdot6vFFEUuB0.cache +1 -0
  444. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/YW/YWpN3w2j2JIx9LchMCahrIYt9psTTwbviDUHNxLYSNY.cache +1 -0
  445. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ya/YaWLZKEz2cjdIxX11Gp72QRsCxqydxlJBd9NwgujJ0o.cache +0 -0
  446. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Yf/YfP-qs6g686NTnP-ZSGq3WOaWVrnd9qa0HAmTIkkJ74.cache +0 -0
  447. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Yt/YtS9X8kgXymWAuZjIzqW76POlCXxYglFoXNOBbOz6xY.cache +1 -0
  448. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Z9/Z9TjyetKqBhW1NCRNbFOtpd5MVs9shKKFGTVAzw_fis.cache +0 -0
  449. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Z9/Z9Zo4Yq_3vElgih4y3_erPosD_-yGwQ4zjo8n7X5jTI.cache +0 -0
  450. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ZF/ZF_Di4r7i6VzccjO0rIfRUEcLR4BS-B4rD7fXOB2UT0.cache +0 -0
  451. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ZX/ZXFiAciHMuD3j-Ihn0vZH75YtDnyRBmL258ZuvocrfA.cache +1 -0
  452. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ZX/ZXMyDlEBdXMXd-NSz5bP6V6ccxW85mtAanOWJekGMBw.cache +1 -0
  453. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ZX/zX11AB_cOa4kgO_UaArYxXjk8qDM8ym0c4cu14FvKX0.cache +0 -0
  454. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ze/ZesoUkLZSRHtr2wVmiTxEFzlSiHS4TT5bzUfygG7uPA.cache +0 -0
  455. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Zi/Zin9rTOSvVYRh9NrV5zG3dc7GGhQoRvgjva8LDCKhmo.cache +0 -0
  456. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Zv/Zvn1Ywok2fCxqx97e0HlrwrjNxkpDN0dEWxhpoMFc7U.cache +1 -0
  457. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Zv/zVG-F1pWVygJA3tkj7sY5kgsrNBQrAAxh4Jgseiflwo.cache +0 -0
  458. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Zw/Zw7oNKVYJojzwHGwsqv81A_0b45CPc7dO2MBZvDcVPM.cache +1 -0
  459. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Zw/zwaoVh34fXVS-tcgu4ZbLsvyYwZKV0Bbdbcwf5A7JWs.cache +0 -0
  460. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_0/_0s5a0AMT9NSewuYjkr5QCZQAhETYzlaygi-ugz-U_s.cache +0 -0
  461. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_3/_38ZR0Ip_7kJKkrSvOSRh1rsQa1_CDJPspRHfdW5M_0.cache +0 -0
  462. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_B/_Bg2G9Gg_7LE8e-K4TyrJF3P3WsI36gNiSjJTZKcQzc.cache +1 -0
  463. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_D/_DNMd5Uw9cdwy82JMR5CWIjiUI8PvC6xaYZE6mH6pVM.cache +1 -0
  464. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_N/_N531Nqg12ZOAk4cemhc8LZFyv_0iF0ZpP_B0jzUOFU.cache +0 -0
  465. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_P/_PQPL5gvBQSoctnucVnq3fThMWqxgQKltaHvNoxVX9k.cache +1 -0
  466. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_Q/_QL9NX8o5-sdxgMOgGAwAkdDghFGJXkR0peDBaCo6bM.cache +0 -0
  467. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_Q/_QYrklwl8gkJ2vRw6gzLKWW5uVzEUxts6X0osA24GFM.cache +0 -0
  468. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_w/_wR-uUlPGmhvT-r5PaqTRRepSe_mN0YQBj31KzcLSs4.cache +1 -0
  469. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/a0/a0ICv7-dJxpYJVT-f8-vj7MumHJBeK3I2NO6IFWWP_Y.cache +0 -0
  470. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/a5/a59RLiCWNfIwu_lHpPkIVwq-4ChHbxQrIGcjI5MHF40.cache +0 -0
  471. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/a8/a8Dv6Rt0jkpcnpRFbP5lwThFGa_SW9F-ZuJWK4EBG0k.cache +1 -0
  472. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/aQ/aQ48cCebKe_9aitu7Rbe7nZneus5V5Jbg3iMd56sU7o.cache +0 -0
  473. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/aR/aRek4WP1AUtY2opjRDPP_Mjej_hYV2dRcyHTiBuTwsc.cache +3 -0
  474. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/aS/aSRB7xrulIKlyeWU1js0ODwhW2SSdHHwT0em79P7640.cache +0 -0
  475. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/aT/aT4uljlz89dzHDMaTkSXWzSUZT40mc-yuQ98rnPh-2M.cache +0 -0
  476. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/aW/aWpEiwbiHnwQQc7Lao7TaFWi_BlZqps3vOzxYOHMmhg.cache +1 -0
  477. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ac/acsmL7F9LmEAuLvNBQexH5U3-G1F0288ll-rCvcXHLs.cache +1 -0
  478. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/am/am4GAdvj87bGe9OWi7IDDTyQY1ugHSmA-nlvzFXXKgI.cache +0 -0
  479. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ao/aoz9qnuXc9JNK_IJB8sSqFK45IhEMK2PxefAVs99_hQ.cache +1 -0
  480. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/b1/B1jvgPdlG9JKgFcpYgAYGp479Y-xwty8xx4Iuu4CHlg.cache +1 -0
  481. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/b1/b1UbeIk9dWGKZcFrAo-10pIEdDxZexXuaYsIpWELbrM.cache +1 -0
  482. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/b1/b1dbFzXL49eRtyBZ9GCZIeTT_cneePHVnSYp5j66Hqk.cache +1 -0
  483. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/b3/b3eYf7UP2ShMg66QEbIevpVfaqJzmqSs5lqnIaqrmjY.cache +0 -0
  484. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/bW/bWcaNpv4viir-R5t5THKY32nm5bAWMUrQJKsTM-0EHw.cache +0 -0
  485. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/bf/bft9QhjgmECA1AmKnnmYYS7DXDvgamKH4EFtWSsLdNg.cache +0 -0
  486. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/bv/bvXOchHMW_QyljThAP1h0tLtefoDcsTF7VBeZTdBUEs.cache +1 -0
  487. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/c2/c2p7dxLSFE2GuOJM96xHXaAp7GYAvAznwidHb5xYRKU.cache +0 -0
  488. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/cP/CpeA5xxkFHEC-uCEgQYrz4BcZdLakeXAwc8gYzt7SFI.cache +1 -0
  489. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/cP/cPexqb-doGsY9sVqHW0vZPkhNsVq22ZuJzKPG4I68Yw.cache +0 -0
  490. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ca/ca8DI8nR6T8slmfHDSehhCLYXH8eHOSpG9dB2uaVCv0.cache +0 -0
  491. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/cc/ccb6M9YITVgLGHTcHu8t4uDND-nNkdDnbXHv2ipt9J8.cache +1 -0
  492. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/cg/cGZyA6cI4rwFQj11nUm_sdnBHLDaMnaF9BAFdLFJeb0.cache +0 -0
  493. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/cg/cgkrVtETY-B6fOfSfA3CBvoKnGVap995c0j69smviek.cache +0 -0
  494. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/cj/cjpKTBCb00-jq6B1KoFGJrP4kvsl8JACc_pqZAORMlM.cache +0 -0
  495. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ct/ctc1Ks_ncogCzBLOF0A-LMvW6JMXZiKhlNvZLEin610.cache +1 -0
  496. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/cx/cxEdpYSZhVLSuZ4OwMfsis3fgqNXnolrmV5lO5ZlT10.cache +0 -0
  497. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/d0/d0tg5GsvET-7OS8Ev6CSFB-S2xjAem5fGKy5qm9y9KY.cache +0 -0
  498. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/d5/D5v_t3nj-4X1O_bW7eH512IVlIfID5U8V4F9K38qBYQ.cache +1 -0
  499. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/d5/d5sB9VhNxVy4J00w-Rzi8tsQwI8JyTBNr1ZkSi-MaNU.cache +1 -0
  500. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/dd/ddKyzXUVX3bHeQEGOZTOPsx6f2D1ryVdctwThFa8eT0.cache +0 -0
  501. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/dg/dgKCu76u8Pfe1AN37hZwTtjvQRIl99XF42l3fI-WYwM.cache +0 -0
  502. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/dq/dqmCb1zqfm3RvuFAz045zaaARTLZyyhjAga4s2Lg7og.cache +0 -0
  503. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/du/dumCudElKU_JaFt7y5hQa0lr3iGXhQtXB7zIDkQhmpo.cache +0 -0
  504. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/dw/dw3GLjgAi2BiOBVmKOlvPru25lnKWSkvq92s0gBRVeY.cache +1 -0
  505. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/eB/EBdgmQ4MNWqg8I9tQeaq14dozjeSllh1gofd-aJFaII.cache +1 -0
  506. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/eB/eBmp2f5em7_mM-CrpKw1SF_AhZRXkXNoZVci_FTp-Gc.cache +1 -0
  507. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/eH/eHQCL53cNUsQP8Zq2xl8dlv3grrMobkE5P-HeX-WKGY.cache +1 -0
  508. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/eI/eII-iZ-fVeEI-Em_aUJhaLA9S8_0BdZVBWe49mxXHl8.cache +1 -0
  509. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/eJ/eJvie7y3_awsfLGrliRSg0guXdG7JN2MRryc7hnqUUg.cache +0 -0
  510. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/eU/eUBg7lDnl17H198jHqkXcYpisNtc1Zk0H6LpYly0eG0.cache +3 -0
  511. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/eW/eWOGABcE_htrV-URyiaAiFP05hKfhpkx1pbB_Yc-dl0.cache +0 -0
  512. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ec/ecBmGKk4Vylf_oXwj3IGYOJC-gnh74SmrPKrZv8l-uU.cache +0 -0
  513. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ev/evud7JHPyBScTKLMWZo4pqCx8b6sxBQP6cttkzHGme8.cache +1 -0
  514. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fB/fBMz075bu_ZZMJgaPN6gAn_3Dzq_a5wGWMd77XJDewk.cache +0 -0
  515. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fH/fHK4fQD8YwiY0U4TgonBVb-vYhIOOLGoYJw3P8zkCDs.cache +1 -0
  516. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fH/fhIfXeBC0TDqvC0fHNhDXyJCr-N4FsVP47lwlrawzUQ.cache +1 -0
  517. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fK/fKIcB5xZjf9LBiWAE-UqVLXIBSQQBJqTKafhQ_olpvg.cache +0 -0
  518. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fO/fORnLkAxbeCc58gUAUYhtu-FkCt4jBan5XnuYLcRs0E.cache +1 -0
  519. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ff/fFALiXFz_KSx_cFXwd3jvWsMh8CIl2Q1Yb_bpXnalu0.cache +0 -0
  520. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ff/ffH7SeobqEXwaslWGfM6C9lFsir5eQ9TCcYztqqtSeI.cache +1 -0
  521. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fj/fjDQoVCFpIUXWBmP7sjjJTUqJlJx5Sjr3mVj0NZC93g.cache +1 -0
  522. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fm/fm9bJZoHt8F1pWgBeqKLm0WSu6ZK2FJe-M-Ai3xleq8.cache +0 -0
  523. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fq/fqkuO94lmLOYT8GdhLX0yU5sCP6VUULHNUwEwxg-11A.cache +1 -0
  524. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fq/fqu3X0uKS7jNsPiJmNhJH3DUjeeqi3x_deThM0WqZow.cache +1 -0
  525. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fw/fwNk2gp_eT_OPqSSaXfnmVHvhK2ioGAQPhI3NAq9ta8.cache +0 -0
  526. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/g1/g1nO6bcfNYLe5vTxQvZH4qFTjayBc9iz5Q6C67lj0mY.cache +1 -0
  527. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/gB/gBrL2NK-JjIsnxCVbTlSf8ZuGND5CdlljDln_HPvrYg.cache +1 -0
  528. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/gG/gGoHtbUJze4ictLNdNbrZQNHaRTsA1emUIAwLg8nqlk.cache +1 -0
  529. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/gR/gRh4u5zAXZSF-TsKPEjC-oY1hH5ZDlT4r7PIMt30zJA.cache +1 -0
  530. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/g_/g_GOD0ohtS19pyTC4WHoiLroECT-KHVXBAvZWNSU1G4.cache +1 -0
  531. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/gj/gjV8glR9Zgr-6Hr55WcYc7i-UC7-xi7NOmAWMuRdwY8.cache +1 -0
  532. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/gl/glijISL-oy3Zvu2_8FXEy1nktGQ_-JfZXwIvKMExZT8.cache +0 -0
  533. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/go/go2zH6_cflMuYMvuuMCMHISd4Qtb3gLUcF2ZqFPaU_k.cache +1 -0
  534. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/gq/gqdHSqnNjKiS-B3Ucq_vOzBv0uJ7QSFjN_yRCczTDFc.cache +1 -0
  535. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/gq/gqil5n6rt70BPd_XoI1tek44oQ5l2PFA1XFcKyJBxs8.cache +0 -0
  536. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/gs/gsuTzjsFAH5Y6eSKOd4SuFIRym41Kp9oqvfD-g4wXXA.cache +0 -0
  537. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/h0/h07UF-ghIkPR9sHRErsxFp9doA-zdDHyztbM6Cz8YNI.cache +2 -0
  538. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/h3/H3rn01OpF3X_uiBThLuZIP51j_RzSOHxaq_XnECgeyc.cache +1 -0
  539. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/h3/h3yIuPObfUJebKuZPPNABdzLDYbIcW5odVNwftPGmEI.cache +1 -0
  540. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/hE/hE_ENksaaVAiY7fo1gynfFh_HDFoZB6JtLLtoclhxcQ.cache +1 -0
  541. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/hL/hL49s9pbMkvGMTyZgDKG7_E3cHuNlEvZuBexIkyhlfM.cache +0 -0
  542. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/hM/hMsy8LUqnJq7hJhPX48dVbTzXJLTzWBFvbsGFMostqY.cache +1 -0
  543. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/hi/hih5DABE0gmGYhgqnsYp9HxIX0TZMjvcnWd9jmpyFpk.cache +1 -0
  544. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/iI/iIrvHvZvGhxLgbSw7UbAvmarw6W3GUfEoazhPWv1kEQ.cache +1 -0
  545. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/iU/IuCiEDrtbFC-6yaQB-AfnnOYwbobcztc9rAmTTrq2Yg.cache +1 -0
  546. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/iU/iUDgj_KHOgpDcF06Oui_8o5GLiKiBAOntemUGoKLGdM.cache +1 -0
  547. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/iU/iugLU1xBWZYVfoq5-7SDMgfn7nMki6ulQt-Yg6NitdU.cache +0 -0
  548. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ib/ibCGLHSVOk01G8bHVEZogkWKMypKQVmoxISC2p8UBZI.cache +1 -0
  549. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/if/ifjUphPwp-D7ZrPn1XcKVB1K-TTU0qwPdRJkpfzwItk.cache +0 -0
  550. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ij/ijt54t2kHIHxlHYdqtRFWq_j8kHFYcNWM4mat_PoRjA.cache +0 -0
  551. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/il/illGhBjU6OkFvLVAlfy0A0caFdS_9v_aHb6CfYzUpMI.cache +0 -0
  552. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/im/imvafbGV0lEtT1Ys5KmEMpUwJCmz-eqq8CWqKLM-QdM.cache +1 -0
  553. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/j7/j7oYwEsWkJmMZNra7yzzjW5nbpBct7cIkaQOKbldo3s.cache +1 -0
  554. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/jA/jAClmV6_1WmHLggfvBXmUc8ZDZdRr8Ys3kq22HYYkDg.cache +3 -0
  555. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/jL/jL1-hCVexjM5bD-dW8-6xuQVbNiw79U4DucUQu1k-dM.cache +0 -0
  556. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/jR/jRgwTNs358SRT2VjQ0IPdFN978R3ZzXRB5vf73Q-8x4.cache +0 -0
  557. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/jV/jVnIgerIMs7eCk96aXfjHG37xc0853h5teI0BhXZG2g.cache +1 -0
  558. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/jZ/jZeG9l2cmA5RrXkUBYd7OwsrzbpK4_sMHpomsMcY_uc.cache +0 -0
  559. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/jt/JTNc65YKG_7qqsTplO-IpV0_Zt3y_z7c_p0Tb3SWlfk.cache +8 -0
  560. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/jt/jtGa2U5-KH2n2K5s6llhdULnVhh6Xoc6pfMt3JLl7O4.cache +0 -0
  561. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/k0/k0KKmp9TpFOUZVKEX6tuLiP-KnVnoqDEgKtoz5xkLCg.cache +1 -0
  562. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/k3/k3wLNuHPq7fctLs6TBgg1B4ZKGTbWAk12jvxaWBOujE.cache +0 -0
  563. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kI/KI8kwJ4BHUX7wmvJrvq6wvP_D5oRVi1d51zk666vJzA.cache +0 -0
  564. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kI/kI1sZJj5yZ995rICKHsfBofi2ThbuEoK-1dmaqLeZBk.cache +0 -0
  565. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kK/KkVYL-3b4lTHIbrtYCo0Pqkvu2AGovPGbYSP31DMIxw.cache +1 -0
  566. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kK/kK_we-Js6lvE--UzYlhQRHWJhhYXhWnb4ptosO1Q6xI.cache +0 -0
  567. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kQ/kQFX3aL9S8u5WZGHo4kXpe9Q7GTyxj29nRoFkDfVyV4.cache +0 -0
  568. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/k_/k_7_G-yi4VGtAwqImtLwOSPWgtUKyv15vYW78GD0CDI.cache +1 -0
  569. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ke/kE-r9WU_bNMDYIlB31-GJameOqPEgcbRTApaGgq6Wu8.cache +1 -0
  570. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ke/keRiexHL1skHV3BLbvqTn5TufnCRoX6m6Wl8Qpw1YL0.cache +1 -0
  571. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kf/kfRu_vvUy1ssHzDDJtpi6DpTpD50X0fdLZyFvagijoE.cache +0 -0
  572. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kl/kld2prA9hYplPfO47_cdGAgq1ovR_XuEKgb_7CAvj4w.cache +1 -0
  573. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kt/kt7IS76BnqO8ku74sqa-dDQmxhX74nH_9p1AS119kGg.cache +0 -0
  574. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ku/ku42f84XwOfXKmQQVVvReuq7xyh2pJFHVxePuzLF8oY.cache +0 -0
  575. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/l1/l1fjM6rEJ5EbEHrEQAJLu-riPe6cyKhcsdv_-CtQOvo.cache +1 -0
  576. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lH/lHD5XZUnX8fFnp9RcUyF5mPROFFqm4RfYxYfCTiPf0g.cache +0 -0
  577. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lQ/lQfaIeIpf859uMSzBZRvqAsNj6romtKREXIxhwf-Hq0.cache +1 -0
  578. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lV/lVXal7BwnJM2NDbvkWE9KmRXpyyEwzbN_QfjsfC518s.cache +1 -0
  579. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lV/lVzZgSu3OpdMwt5Wx4OAh1rmJUhjgwpHfST34TgRKr0.cache +0 -0
  580. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lc/lcgkSMuLcKTIyscRHZsfcseGRu69L8bsBJ2O18QRbo0.cache +1 -0
  581. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lj/LJFk1xoAmNOF_8x96M50r25p-pCzXoyRI3P9FDFQpkA.cache +1 -0
  582. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lj/lj8vTzVqx7zQYFPOIAItUArwRFpQSiLr3WobFkgTwQ4.cache +1 -0
  583. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lm/lmYr2KYmvB0cN5CaakwTteeRbZtH29JiJokfKHcTEnI.cache +0 -0
  584. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lp/LPfYlVWCEocNTTwhQ9yjGysKbkQ5y-KVRLHHMsp0WGo.cache +3 -0
  585. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lp/Lpq7jh7g-yU5vKzWDEfLpw97ljDm0CglHWnzd6DCdXg.cache +0 -0
  586. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lp/lPSYL2L28Yf_JVFj7AGwBgo0xNbUypYsE20uQVmbxWo.cache +0 -0
  587. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lp/lp7D1SjsaLSGjOiPyWcVGR7n2Xbzl4eMc50SFj9H83w.cache +1 -0
  588. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lu/luhwwgaJ8gIYkOqIr9ZIXgv8_Z2JfQ0veybUTmJmQqQ.cache +1 -0
  589. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/m-/m-fR8pCoqUeSTI1l5MuIkJXPPd3jf5jW6QoclYkYTpA.cache +0 -0
  590. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/mI/mIMBzC3OC1FiY0fNTtvrjdvksihx_MM4uDJrevUA_6k.cache +1 -0
  591. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/mR/mRyYErVuWGg_1KP4o7sKbsyEltDIfz6F-zpMSgS8vF0.cache +1 -0
  592. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/mX/mXXP9BpYSaRl7IrxS96R7MKnIydgpgWQQhMBvgNlR4Y.cache +1 -0
  593. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/me/meOWAG-k6nNzwOBwmN9prPEJEmyR3jKbWM7nuF2-dSs.cache +1 -0
  594. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/mz/mzEfelGzIdXEVE1ae6CbJFMeZXCNwrE9Fo0KBMPM9Zk.cache +1 -0
  595. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/n1/n12QowevPEm4xyqHEVv4HJIfzOHQSiBhFPPYE4NENFI.cache +0 -0
  596. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/n1/n162vUCpZatcK2VpKblTNuV9xBcCbVpIQeGWByYxM2A.cache +0 -0
  597. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/n4/n4w_53JotdYpDmvfc9w1TQcOxBYWl0UvntW15K087-M.cache +0 -0
  598. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/n5/N5DKGSBIGtYPF2Lgu0HpGdFrCqva1CVb-sPXNCUNLRA.cache +1 -0
  599. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/n5/n53SRYSEi3nCPDL9VPWULOBHQurwGWESBbOP7tpdNrw.cache +0 -0
  600. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nH/nH4OSXRZT0xndafRjY0owZXRob7ujJFdGmXJ3cpG6uk.cache +0 -0
  601. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nI/NilaReUWPGP7d_egPe5YpGUrX_1zpvfZTCnmNj4e3Ns.cache +0 -0
  602. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nI/nINsKCfHjuq-aTHeN-ZU5EdTA0gTnZPWQdC7pYwE8b8.cache +1 -0
  603. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nK/nKNtrhlJGvCRCASCo-3HwbM7pVyfDZpQvpVp8KVAfoo.cache +0 -0
  604. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nM/NMt-zjmKSu3hdNv-cKJ7bs5U6VdR6bKSxUW8fIHkCAA.cache +0 -0
  605. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nM/nMToq8dTQhQ755VfXzlWqzklf6ZFGOhNTtvFzLOyj78.cache +0 -0
  606. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nP/NP9J0pZZS8h9DHsQ_Mypxd8K51bKY66KyN_ZoPS-quI.cache +1 -0
  607. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nP/nPsLMRLqh4cfIVY09sKS-Vr9o8-zv7N0RTeK2A6PMHM.cache +0 -0
  608. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nV/nVv7bqDA5rZhAWiygApAoJFTTSiNoUVtNESktlgArq0.cache +1 -0
  609. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nW/nWp5hTIggMAO9w8xWHUwd00Lhs4h3f3xHjpHXSAU0DA.cache +1 -0
  610. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +0 -0
  611. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nx/NXARBBoyajXjqIRn3sroSH8eIa5q0anaK-HP2P6dCdg.cache +1 -0
  612. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nx/nXeNHeP1imfu_o9YoT0Me1fwhvf0TlEbNzePlV_-AEY.cache +1 -0
  613. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +0 -0
  614. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/o1/o1ECVll03IEeaoXyzqiQNHsf5xmsmzJlYodtCcevJBQ.cache +1 -0
  615. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/o4/o4yYUlvoM2NvjceD_69U69OAS9HO1TymGVaoRfLhSqY.cache +3 -0
  616. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/oR/oRaZe_FWCpxGdnZgNwBhFl8_O6qaWrydE6lc98OWWFA.cache +0 -0
  617. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/oT/oTYhAX3Ud_fqV1JU2BX2lnPofWJmZTWST0QVP-S9BSw.cache +2 -0
  618. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/oZ/oZ-O-Cf2C-E242BtA7TJZwyi2XkBiYWioHorQUtLqRA.cache +0 -0
  619. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/oi/oi2SpATc3dBptViEbeniVGGyaj_5iVHibdGo9zPEKqQ.cache +1 -0
  620. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/oj/OJDNKmdwqy82rYstNCQOU2dfsMmpebQF9f1IXxJHAzI.cache +1 -0
  621. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/oj/ojPyvkdFuRGr15I5uDw3dO6vIs9OBlqKFv2r1WkjPOk.cache +1 -0
  622. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ol/olsyJcW8x2oEjKGLf1Xksf5Cf1eScESTybtA444wxOY.cache +2 -0
  623. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/on/ony8TGunXSR-aUh299CfDEi7CU8_jZ-n2sdtqNBGKrY.cache +0 -0
  624. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/on/onzV5g_fT6VjeC7M0Z4HTldZQhJ14TiZN8YRVu5rS4E.cache +1 -0
  625. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ow/ow2HBJwk2TagQ2bCWxDKvpZHIK94flk8M0cL1TLmK-U.cache +1 -0
  626. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/p4/p479qPQC1MXHpecCy_dgoCXcVpkoQGO2KZ-HlPdpQsI.cache +1 -0
  627. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pB/Pb-NfE5cAXsOj0Z9XPbxKfuoz0HzZ1Txlgy0VAKupR8.cache +1 -0
  628. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pB/pBL8RhC431QjHIPj7M7o7Y3ilndPSV9iH23vexGh1_g.cache +1 -0
  629. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pD/pD4Pl01QwAOlFLAE58o0-7l-w7wBWf2I40mNhAvzL54.cache +0 -0
  630. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pN/PNAaCXRwxB_HIldrp0My8h_DKFm68w53zsCwD4ba6PU.cache +1 -0
  631. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pN/pNBDszDtu_7P7Xwl1ozpRUq_8smaFBQ5H4Glaq5F-88.cache +1 -0
  632. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pN/pnW3u_1AN48ig6ngefI89y96xoSlvnJurx-e3J-leoE.cache +0 -0
  633. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pZ/pZxqO9fJZ39hSmsrjO4cMuv05EN6LyHXKpE1Fsh1S4k.cache +0 -0
  634. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pa/pasAXqFNV75ZT3uziMpI5FzXEyhaQd5Kd3xFIodpeSY.cache +0 -0
  635. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pj/pjnJ3rHLN5xjhLIHwwbzoyfFJ7fJQSakPTzOnSEZa1w.cache +0 -0
  636. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ps/psfKDzTm_oHCSCq2960XgEDb3kycsyCSeCRNJFzo_f4.cache +0 -0
  637. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/py/pyjFkSZiZWljInQG3BKJxO20-mlyDd5ukF6hSu6zVwc.cache +0 -0
  638. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/qC/qCANrD0WSD6IWbcM0AQmJWbzUh-U5W22yxJ52OMBeW0.cache +1 -0
  639. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/qP/qPmv5snMrDw830S6hSICDcnIy7kVEWoFKXhGKT38lG4.cache +0 -0
  640. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/qV/Qv05CLFoseOThyqAFCm8lzSfOPJURBv9iTj9t-rjxYA.cache +0 -0
  641. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/qV/qVpal-hudCjbIvpj3SAn6NhG5XkgXjAz7H08CBMJ7vM.cache +2 -0
  642. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/qa/QAGozFk58hYFig0qyQY6_JDp03kBtnSub_eEXaxdv4Q.cache +0 -0
  643. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/qa/qaR_FoyZ553NuuSVZXdN95hw0wI5WJQV8-ubpJvVEp8.cache +0 -0
  644. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/r2/r21uTGh36i9HTjZcmWL0qlMV-DYOVdhKL_yn21nhCJE.cache +1 -0
  645. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/r6/r6oCCLiDIubrPAH98Arf8zMr3tbXQHF_LBrDAyHSpi8.cache +1 -0
  646. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rD/rDciMayCuGuQR66QY_d2esqjVcHcjv6Bmhp9HkDrizE.cache +1 -0
  647. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rF/rF0or_CyDl24oLCntdqJOlAUTFrX4-PV-VXLgqViOeM.cache +0 -0
  648. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rF/rFD8hjuR_RDF_9Bin8PEVgvAsNFPh9uPZeYH2k1ou-I.cache +0 -0
  649. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rK/rKaPTdkDNBYAtmHL4IovWJ8BT-cGGaJewMIlRny3A4A.cache +0 -0
  650. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rL/rLpv9kxVi1dMttmg_yrawm-i0eNRXxrOVtcA_v_y39g.cache +0 -0
  651. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rP/rP80BB76zWndiZcMam_VggvWpfw1TRo7LWzuZ2PJTbU.cache +1 -0
  652. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rR/Rr-0XN6ZROz1fi5zItohif6Z-k6UFdDR-x5oupg3OC4.cache +0 -0
  653. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rR/rRDTSlge-QDycq7ZjxkuDMQWLXiOMH03lKp8exu8rXw.cache +0 -0
  654. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rR/rriS4FsSQT0pDVdCegVnXmtBvGWhFHtCgUEhT1ZQUsA.cache +1 -0
  655. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rT/rTeOkXqDfnuBnvuDX6meFh-nP9ZPQj6c45-pKqg8Mws.cache +0 -0
  656. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rv/rvJqGs_tP2ILlT28mERU_zJ68qLvKbDnHIA2pZBQkvE.cache +1 -0
  657. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rv/rvzruQmLRccyt9bCLI4Kn2IofZfqKe0LX3i9Y5rT1X4.cache +0 -0
  658. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/s7/s7_1YCYs6b4cr4x25EcDcy1I63LO9sGcZjALTVYBJ-o.cache +0 -0
  659. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/sG/sGi5848RjdxAmsPKBImj-wvvM8-BVx1BDwgRnNOCUkI.cache +1 -0
  660. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/sW/sWVz9_99T44rn-66ocK407EAcc8Hf7LJLkDliBkRtaw.cache +0 -0
  661. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/sX/sX6DceYq1_hkqXdYDAbjWM1dblorF5HxroRLZJU96d8.cache +1 -0
  662. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/sk/skfy_rhUFX0GyMGIvxGP8JFClRjeeL0J5IVLV_wMRss.cache +0 -0
  663. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/sk/skjGxJO2-IuDStWKiUA2Ci_3S3RFPaB7GL44tfrDuLE.cache +0 -0
  664. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/sz/szApU90Yh0lBpf_RWLXWkS5DwqSrtGz1TsWsekcIxwo.cache +1 -0
  665. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tA/tAFNwcsCOKMP73zqd2IGB3_IF1Zo0ctogbSPENxgkBI.cache +2 -0
  666. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tI/tI-p_obc3QdUtWJyCHCoNQcbeLoUyMzoC2Wv3p7snOg.cache +0 -0
  667. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tS/tSiQI5c8-hdotcaVTCABoXc0ivT4pQst7wpcN39tg7w.cache +0 -0
  668. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tZ/tZpknif9YpLSI5gk070PqtApv-ynMiNsGsMpkB4TsPg.cache +0 -0
  669. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/to/toxQZYl6PuA-pFaNE-gdO9jv3HK7ftkbjOw2o4MU0Kc.cache +0 -0
  670. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tp/tpiPxv2AKzbQHPi9kezllhmocEKXRL7w2AuezWxPszk.cache +1 -0
  671. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tq/tQi62n9PH1_Z-VgN9H9QAOJelPCUz_gNZ5J4SAvhQqc.cache +1 -0
  672. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tq/tqytyZN6xtX_KBs7-YQ59jlNV4jyREl2AlyRCXOLhEs.cache +1 -0
  673. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tv/tvS_A8iW1QJhTFBSVEIUvVU1r7uiAULpo_ve2lzN7eY.cache +1 -0
  674. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/uT/uTGQUsRNMNgRS14rEyFJyunSJchaJ3DFu_wJXSAwOlc.cache +1 -0
  675. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/uW/uWaY3Az2EC_ujWHiKJiUR8ONj57BW4RPxncPksXNcsg.cache +0 -0
  676. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ua/ua11NPAxbhekoD38EEuZZy_DmH1PETtmKIwR4VB7I4E.cache +1 -0
  677. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/vQ/vQM5Pv8ffjhmVOc548JioUQTnzw0qByWPf4wRzGjrXo.cache +1 -0
  678. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/vQ/vq2EE7JbA8ejmJaMno57sWmcjGTqq1J04TZz9hqqUcA.cache +0 -0
  679. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/vS/VsiVujwsHJ0uG_iZVawY32PEVTWzy3wfNxwGzS-584c.cache +1 -0
  680. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/vS/vSScFgJ0seVBAIXYRfCdAd6_F-hImULSzGKknFf0Dy8.cache +1 -0
  681. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/vj/vjVm5WZZ0zhQT3htJAoDZc-QqmxTvuP8Q1Jdpiapuqg.cache +1 -0
  682. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/w-/w-lQme6tMowNKI2uJmMtqw-BwcP2bp8O91Da4alSY1c.cache +0 -0
  683. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/w8/W8i2z7id8iXNUGpNh4rk4wcFHsBpKcfcagffQnFI85g.cache +0 -0
  684. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/w8/w8Cw5SOSoOIy_NnfuWHDWaYXrVCCEyj1mg5tytAVyVY.cache +1 -0
  685. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wF/wFpxD0Io3cR5-NDzHJuaaMtE65nvvnuTgPrLNyps_ig.cache +1 -0
  686. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wJ/WJcTo3wnSPHJv8SF-rCUYAWe7dfPbpcHMo1c3A14Sds.cache +1 -0
  687. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wJ/wJDhryTNIo_u9a8I-ndayYZgHFpNVREP8yNW7vGM6gM.cache +0 -0
  688. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wJ/wj2_TyDfT0iIidEOrhHxD-uZljdbSgYl2G2ThyHEx10.cache +1 -0
  689. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wR/wRAjjWzR1EoRYQ_zmesJVXZwuErX3fJLS0j4Ff3wm4Q.cache +2 -0
  690. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/w_/w_4OXHOtQ-gq2Z9144VmgRudPEwySoevuXcZliSGOuQ.cache +0 -0
  691. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wb/wb1Akw4N9aZPB26AbXX7uEKybabfSVVaNZ_5LDvICNs.cache +1 -0
  692. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wl/wlMRH3uwyqpv8n1nfJ7R7gsfmye9X9Sr_d2OaxvX8aY.cache +1 -0
  693. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wn/wN5__UwASdi-SJbgDYuBgkkB2tFbBACdA5nAshrdGp8.cache +0 -0
  694. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wn/wngpeE8ELCIVWW410YqCVfGsIEXj-qANg1ljioXsZHM.cache +0 -0
  695. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wo/woA0jsdKMxAUCJ3oC2jWu-vdG6FtJHu-4We-6Nfloyo.cache +1 -0
  696. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/wo/woFOKwVrDxivDQwhcN2sNTEtb__Zqj-l85Gkd_zAtvU.cache +1 -0
  697. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/x-/x-GjCihM-01MDqNHBQGoDBOxG2dX9gOe_BZZg3jS6KA.cache +1 -0
  698. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/x2/x2pKjgm1ptoiWOo73pBLwlbvyG2fNcCz4h0lp61BDe4.cache +1 -0
  699. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/x8/x8hiOdOTwvmkaDyVWTX-YBFNnDLkZ4lPnhyQAuQ7k2A.cache +1 -0
  700. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/xD/xD_lrJAxsv16BX4McjPf5LhEbEB3cQLkna4Rn80Kp8w.cache +1 -0
  701. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/xL/xLCMYUstpQbA6qw33hOQYD-oewt5poTfVMHY4zXkOiI.cache +1 -0
  702. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/xj/xjmlbFt8Vy8AWWeqD3JOXx5OIXnsi8j8kwPbWiPjEao.cache +0 -0
  703. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/xt/xt5fJAhbljmP_FGj34Tbes4BIJn8JO2sNcQ6jDNUCZs.cache +1 -0
  704. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/xv/xv1Ta5GHieNBoiTKsp1-I66CgNIJo8UrF2wonzaLqlc.cache +0 -0
  705. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/yK/yKuxlP2VW1WQ3yg3earm90wkqPiVKwVxdfjO4H8ppq8.cache +0 -0
  706. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/yv/yvPcjiHwCWQCTLn6Jmz_OLrpmQOh6_l1bBhgDsNa8F4.cache +0 -0
  707. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/z0/z0gvcc3y-hfrBLlHADcLQb5a6ZnOl19VHe7pj3thK5w.cache +1 -0
  708. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/zT/ZtE3Oq-SRjklqFVBxLbgeJ8Y1K6EppBfkxljFJgEYTQ.cache +0 -0
  709. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/zT/zTdCk6RhR-RbVSpP8mjp-rwLnN9qZySR_aYNGLiei08.cache +1 -0
  710. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/zc/zcg_qatlHrI8R-sD8KRGW_otSA7xJlS559v2fxtAXJw.cache +1 -0
  711. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/zl/zl0--ekhtRUsVAFG8foHzS1dgrZH1_e_HEhNH5rOu5c.cache +0 -0
  712. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/zm/zmoLgcTqztpYMdntPdHSqYBsJAUvrGgTNkbaRVmQuVM.cache +0 -0
  713. data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/zs/zsJ377UkVXeRn3EA-5sxGvIYrlZxDho_iQkJ92OWdac.cache +0 -0
  714. data/test/dummy/tmp/dest_sensitives.txt +11793 -0
  715. data/test/dummy/tmp/development_secret.txt +1 -0
  716. data/test/dummy/tmp/from_sensitives.txt +11709 -0
  717. data/test/dummy/tmp/restart.txt +0 -0
  718. data/test/dummy/tmp/sensitives.txt +13941 -0
  719. data/test/dummy/tmp/stop-words.txt +27507 -0
  720. data/test/dummy/tmp/stop-words2.txt +13941 -0
  721. data/test/factories/comments.rb +6 -0
  722. data/test/factories/mod_logs.rb +4 -0
  723. data/test/factories/stop_words.rb +24 -0
  724. data/test/factories/users.rb +7 -0
  725. data/test/libs/aliyun_image_check_test.rb +42 -0
  726. data/test/libs/aliyun_text_check_test.rb +41 -0
  727. data/test/libs/data_id_test.rb +31 -0
  728. data/test/models/censor_bear/review_log_test.rb +32 -0
  729. data/test/models/censor_bear/stop_word_test.rb +34 -0
  730. data/test/system/censor_bear/mod_logs_test.rb +51 -0
  731. data/test/system/censor_bear/stop_words_test.rb +58 -0
  732. data/test/test_helper.rb +41 -0
  733. metadata +1495 -40
  734. data/app/assets/stylesheets/censor_bear/mod_logs.css +0 -4
  735. data/app/assets/stylesheets/censor_bear/stop_words.css +0 -4
  736. data/app/assets/stylesheets/censor_bear/tailwind.min.css +0 -1
  737. data/app/controllers/censor_bear/logs_controller.rb +0 -97
  738. data/app/models/censor_bear/log.rb +0 -23
  739. data/app/models/censor_bear/mod_log.rb +0 -95
  740. data/app/views/censor_bear/home/debug.turbo_stream.haml +0 -8
  741. data/app/views/censor_bear/home/debugger.html.haml +0 -9
  742. data/app/views/censor_bear/home/index.html.erb +0 -2
  743. data/app/views/censor_bear/logs/_form.html.erb +0 -37
  744. data/app/views/censor_bear/logs/_log.html.haml +0 -43
  745. data/app/views/censor_bear/logs/destroy.turbo_stream.haml +0 -1
  746. data/app/views/censor_bear/logs/edit.html.erb +0 -6
  747. data/app/views/censor_bear/logs/index.html.haml +0 -23
  748. data/app/views/censor_bear/logs/new.html.erb +0 -5
  749. data/app/views/censor_bear/logs/show.html.haml +0 -29
  750. data/db/migrate/20211129093508_create_censor_bear_logs.rb +0 -14
  751. data/db/migrate/20211129110218_create_censor_bear_mod_logs.rb +0 -17
  752. data/db/migrate/20211206092626_add_ip_to_censor_bear_logs.rb +0 -6
  753. data/db/migrate/20211208041114_add_labels_to_censor_bear_logs.rb +0 -6
  754. data/db/migrate/20211209093050_add_response_to_censor_bear_logs.rb +0 -5
  755. data/db/migrate/20211209113710_add_aasm_state_to_censor_bear_mod_logs.rb +0 -5
  756. data/lib/censor_bear/censor.rb +0 -192
@@ -0,0 +1,2518 @@
1
+ /*!
2
+ * Chartkick.js
3
+ * Create beautiful charts with one line of JavaScript
4
+ * https://github.com/ankane/chartkick.js
5
+ * v4.2.0
6
+ * MIT License
7
+ */
8
+
9
+ (function (global, factory) {
10
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
11
+ typeof define === 'function' && define.amd ? define(factory) :
12
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Chartkick = factory());
13
+ })(this, (function () { 'use strict';
14
+
15
+ function isArray(variable) {
16
+ return Object.prototype.toString.call(variable) === "[object Array]";
17
+ }
18
+
19
+ function isFunction(variable) {
20
+ return variable instanceof Function;
21
+ }
22
+
23
+ function isPlainObject(variable) {
24
+ // protect against prototype pollution, defense 2
25
+ return Object.prototype.toString.call(variable) === "[object Object]" && !isFunction(variable) && variable instanceof Object;
26
+ }
27
+
28
+ // https://github.com/madrobby/zepto/blob/master/src/zepto.js
29
+ function extend(target, source) {
30
+ var key;
31
+ for (key in source) {
32
+ // protect against prototype pollution, defense 1
33
+ if (key === "__proto__") { continue; }
34
+
35
+ if (isPlainObject(source[key]) || isArray(source[key])) {
36
+ if (isPlainObject(source[key]) && !isPlainObject(target[key])) {
37
+ target[key] = {};
38
+ }
39
+ if (isArray(source[key]) && !isArray(target[key])) {
40
+ target[key] = [];
41
+ }
42
+ extend(target[key], source[key]);
43
+ } else if (source[key] !== undefined) {
44
+ target[key] = source[key];
45
+ }
46
+ }
47
+ }
48
+
49
+ function merge(obj1, obj2) {
50
+ var target = {};
51
+ extend(target, obj1);
52
+ extend(target, obj2);
53
+ return target;
54
+ }
55
+
56
+ var DATE_PATTERN = /^(\d\d\d\d)(-)?(\d\d)(-)?(\d\d)$/i;
57
+
58
+ function negativeValues(series) {
59
+ var i, j, data;
60
+ for (i = 0; i < series.length; i++) {
61
+ data = series[i].data;
62
+ for (j = 0; j < data.length; j++) {
63
+ if (data[j][1] < 0) {
64
+ return true;
65
+ }
66
+ }
67
+ }
68
+ return false;
69
+ }
70
+
71
+ function toStr(n) {
72
+ return "" + n;
73
+ }
74
+
75
+ function toFloat(n) {
76
+ return parseFloat(n);
77
+ }
78
+
79
+ function toDate(n) {
80
+ var matches, year, month, day;
81
+ if (typeof n !== "object") {
82
+ if (typeof n === "number") {
83
+ n = new Date(n * 1000); // ms
84
+ } else {
85
+ n = toStr(n);
86
+ if ((matches = n.match(DATE_PATTERN))) {
87
+ year = parseInt(matches[1], 10);
88
+ month = parseInt(matches[3], 10) - 1;
89
+ day = parseInt(matches[5], 10);
90
+ return new Date(year, month, day);
91
+ } else {
92
+ // try our best to get the str into iso8601
93
+ // TODO be smarter about this
94
+ var str = n.replace(/ /, "T").replace(" ", "").replace("UTC", "Z");
95
+ // Date.parse returns milliseconds if valid and NaN if invalid
96
+ n = new Date(Date.parse(str) || n);
97
+ }
98
+ }
99
+ }
100
+ return n;
101
+ }
102
+
103
+ function toArr(n) {
104
+ if (!isArray(n)) {
105
+ var arr = [], i;
106
+ for (i in n) {
107
+ if (n.hasOwnProperty(i)) {
108
+ arr.push([i, n[i]]);
109
+ }
110
+ }
111
+ n = arr;
112
+ }
113
+ return n;
114
+ }
115
+
116
+ function jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle) {
117
+ return function (chart, opts, chartOptions) {
118
+ var series = chart.data;
119
+ var options = merge({}, defaultOptions);
120
+ options = merge(options, chartOptions || {});
121
+
122
+ if (chart.singleSeriesFormat || "legend" in opts) {
123
+ hideLegend(options, opts.legend, chart.singleSeriesFormat);
124
+ }
125
+
126
+ if (opts.title) {
127
+ setTitle(options, opts.title);
128
+ }
129
+
130
+ // min
131
+ if ("min" in opts) {
132
+ setMin(options, opts.min);
133
+ } else if (!negativeValues(series)) {
134
+ setMin(options, 0);
135
+ }
136
+
137
+ // max
138
+ if (opts.max) {
139
+ setMax(options, opts.max);
140
+ }
141
+
142
+ if ("stacked" in opts) {
143
+ setStacked(options, opts.stacked);
144
+ }
145
+
146
+ if (opts.colors) {
147
+ options.colors = opts.colors;
148
+ }
149
+
150
+ if (opts.xtitle) {
151
+ setXtitle(options, opts.xtitle);
152
+ }
153
+
154
+ if (opts.ytitle) {
155
+ setYtitle(options, opts.ytitle);
156
+ }
157
+
158
+ // merge library last
159
+ options = merge(options, opts.library || {});
160
+
161
+ return options;
162
+ };
163
+ }
164
+
165
+ function sortByTime(a, b) {
166
+ return a[0].getTime() - b[0].getTime();
167
+ }
168
+
169
+ function sortByNumberSeries(a, b) {
170
+ return a[0] - b[0];
171
+ }
172
+
173
+ function sortByNumber(a, b) {
174
+ return a - b;
175
+ }
176
+
177
+ function isMinute(d) {
178
+ return d.getMilliseconds() === 0 && d.getSeconds() === 0;
179
+ }
180
+
181
+ function isHour(d) {
182
+ return isMinute(d) && d.getMinutes() === 0;
183
+ }
184
+
185
+ function isDay(d) {
186
+ return isHour(d) && d.getHours() === 0;
187
+ }
188
+
189
+ function isWeek(d, dayOfWeek) {
190
+ return isDay(d) && d.getDay() === dayOfWeek;
191
+ }
192
+
193
+ function isMonth(d) {
194
+ return isDay(d) && d.getDate() === 1;
195
+ }
196
+
197
+ function isYear(d) {
198
+ return isMonth(d) && d.getMonth() === 0;
199
+ }
200
+
201
+ function isDate(obj) {
202
+ return !isNaN(toDate(obj)) && toStr(obj).length >= 6;
203
+ }
204
+
205
+ function isNumber(obj) {
206
+ return typeof obj === "number";
207
+ }
208
+
209
+ var byteSuffixes = ["bytes", "KB", "MB", "GB", "TB", "PB", "EB"];
210
+
211
+ function formatValue(pre, value, options, axis) {
212
+ pre = pre || "";
213
+ if (options.prefix) {
214
+ if (value < 0) {
215
+ value = value * -1;
216
+ pre += "-";
217
+ }
218
+ pre += options.prefix;
219
+ }
220
+
221
+ var suffix = options.suffix || "";
222
+ var precision = options.precision;
223
+ var round = options.round;
224
+
225
+ if (options.byteScale) {
226
+ var suffixIdx;
227
+ var baseValue = axis ? options.byteScale : value;
228
+
229
+ if (baseValue >= 1152921504606846976) {
230
+ value /= 1152921504606846976;
231
+ suffixIdx = 6;
232
+ } else if (baseValue >= 1125899906842624) {
233
+ value /= 1125899906842624;
234
+ suffixIdx = 5;
235
+ } else if (baseValue >= 1099511627776) {
236
+ value /= 1099511627776;
237
+ suffixIdx = 4;
238
+ } else if (baseValue >= 1073741824) {
239
+ value /= 1073741824;
240
+ suffixIdx = 3;
241
+ } else if (baseValue >= 1048576) {
242
+ value /= 1048576;
243
+ suffixIdx = 2;
244
+ } else if (baseValue >= 1024) {
245
+ value /= 1024;
246
+ suffixIdx = 1;
247
+ } else {
248
+ suffixIdx = 0;
249
+ }
250
+
251
+ // TODO handle manual precision case
252
+ if (precision === undefined && round === undefined) {
253
+ if (value >= 1023.5) {
254
+ if (suffixIdx < byteSuffixes.length - 1) {
255
+ value = 1.0;
256
+ suffixIdx += 1;
257
+ }
258
+ }
259
+ precision = value >= 1000 ? 4 : 3;
260
+ }
261
+ suffix = " " + byteSuffixes[suffixIdx];
262
+ }
263
+
264
+ if (precision !== undefined && round !== undefined) {
265
+ throw Error("Use either round or precision, not both");
266
+ }
267
+
268
+ if (!axis) {
269
+ if (precision !== undefined) {
270
+ value = value.toPrecision(precision);
271
+ if (!options.zeros) {
272
+ value = parseFloat(value);
273
+ }
274
+ }
275
+
276
+ if (round !== undefined) {
277
+ if (round < 0) {
278
+ var num = Math.pow(10, -1 * round);
279
+ value = parseInt((1.0 * value / num).toFixed(0)) * num;
280
+ } else {
281
+ value = value.toFixed(round);
282
+ if (!options.zeros) {
283
+ value = parseFloat(value);
284
+ }
285
+ }
286
+ }
287
+ }
288
+
289
+ if (options.thousands || options.decimal) {
290
+ value = toStr(value);
291
+ var parts = value.split(".");
292
+ value = parts[0];
293
+ if (options.thousands) {
294
+ value = value.replace(/\B(?=(\d{3})+(?!\d))/g, options.thousands);
295
+ }
296
+ if (parts.length > 1) {
297
+ value += (options.decimal || ".") + parts[1];
298
+ }
299
+ }
300
+
301
+ return pre + value + suffix;
302
+ }
303
+
304
+ function seriesOption(chart, series, option) {
305
+ if (option in series) {
306
+ return series[option];
307
+ } else if (option in chart.options) {
308
+ return chart.options[option];
309
+ }
310
+ return null;
311
+ }
312
+
313
+ function allZeros(data) {
314
+ var i, j, d;
315
+ for (i = 0; i < data.length; i++) {
316
+ d = data[i].data;
317
+ for (j = 0; j < d.length; j++) {
318
+ if (d[j][1] != 0) {
319
+ return false;
320
+ }
321
+ }
322
+ }
323
+ return true;
324
+ }
325
+
326
+ var baseOptions = {
327
+ maintainAspectRatio: false,
328
+ animation: false,
329
+ plugins: {
330
+ legend: {},
331
+ tooltip: {
332
+ displayColors: false,
333
+ callbacks: {}
334
+ },
335
+ title: {
336
+ font: {
337
+ size: 20
338
+ },
339
+ color: "#333"
340
+ }
341
+ },
342
+ interaction: {}
343
+ };
344
+
345
+ var defaultOptions$2 = {
346
+ scales: {
347
+ y: {
348
+ ticks: {
349
+ maxTicksLimit: 4
350
+ },
351
+ title: {
352
+ font: {
353
+ size: 16
354
+ },
355
+ color: "#333"
356
+ },
357
+ grid: {}
358
+ },
359
+ x: {
360
+ grid: {
361
+ drawOnChartArea: false
362
+ },
363
+ title: {
364
+ font: {
365
+ size: 16
366
+ },
367
+ color: "#333"
368
+ },
369
+ time: {},
370
+ ticks: {}
371
+ }
372
+ }
373
+ };
374
+
375
+ // http://there4.io/2012/05/02/google-chart-color-list/
376
+ var defaultColors = [
377
+ "#3366CC", "#DC3912", "#FF9900", "#109618", "#990099", "#3B3EAC", "#0099C6",
378
+ "#DD4477", "#66AA00", "#B82E2E", "#316395", "#994499", "#22AA99", "#AAAA11",
379
+ "#6633CC", "#E67300", "#8B0707", "#329262", "#5574A6", "#651067"
380
+ ];
381
+
382
+ var hideLegend$2 = function (options, legend, hideLegend) {
383
+ if (legend !== undefined) {
384
+ options.plugins.legend.display = !!legend;
385
+ if (legend && legend !== true) {
386
+ options.plugins.legend.position = legend;
387
+ }
388
+ } else if (hideLegend) {
389
+ options.plugins.legend.display = false;
390
+ }
391
+ };
392
+
393
+ var setTitle$2 = function (options, title) {
394
+ options.plugins.title.display = true;
395
+ options.plugins.title.text = title;
396
+ };
397
+
398
+ var setMin$2 = function (options, min) {
399
+ if (min !== null) {
400
+ options.scales.y.min = toFloat(min);
401
+ }
402
+ };
403
+
404
+ var setMax$2 = function (options, max) {
405
+ options.scales.y.max = toFloat(max);
406
+ };
407
+
408
+ var setBarMin$1 = function (options, min) {
409
+ if (min !== null) {
410
+ options.scales.x.min = toFloat(min);
411
+ }
412
+ };
413
+
414
+ var setBarMax$1 = function (options, max) {
415
+ options.scales.x.max = toFloat(max);
416
+ };
417
+
418
+ var setStacked$2 = function (options, stacked) {
419
+ options.scales.x.stacked = !!stacked;
420
+ options.scales.y.stacked = !!stacked;
421
+ };
422
+
423
+ var setXtitle$2 = function (options, title) {
424
+ options.scales.x.title.display = true;
425
+ options.scales.x.title.text = title;
426
+ };
427
+
428
+ var setYtitle$2 = function (options, title) {
429
+ options.scales.y.title.display = true;
430
+ options.scales.y.title.text = title;
431
+ };
432
+
433
+ // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb
434
+ var addOpacity = function (hex, opacity) {
435
+ var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
436
+ return result ? "rgba(" + parseInt(result[1], 16) + ", " + parseInt(result[2], 16) + ", " + parseInt(result[3], 16) + ", " + opacity + ")" : hex;
437
+ };
438
+
439
+ // check if not null or undefined
440
+ // https://stackoverflow.com/a/27757708/1177228
441
+ var notnull = function (x) {
442
+ return x != null;
443
+ };
444
+
445
+ var setLabelSize = function (chart, data, options) {
446
+ var maxLabelSize = Math.ceil(chart.element.offsetWidth / 4.0 / data.labels.length);
447
+ if (maxLabelSize > 25) {
448
+ maxLabelSize = 25;
449
+ } else if (maxLabelSize < 10) {
450
+ maxLabelSize = 10;
451
+ }
452
+ if (!options.scales.x.ticks.callback) {
453
+ options.scales.x.ticks.callback = function (value) {
454
+ value = toStr(this.getLabelForValue(value));
455
+ if (value.length > maxLabelSize) {
456
+ return value.substring(0, maxLabelSize - 2) + "...";
457
+ } else {
458
+ return value;
459
+ }
460
+ };
461
+ }
462
+ };
463
+
464
+ var setFormatOptions$1 = function (chart, options, chartType) {
465
+ var formatOptions = {
466
+ prefix: chart.options.prefix,
467
+ suffix: chart.options.suffix,
468
+ thousands: chart.options.thousands,
469
+ decimal: chart.options.decimal,
470
+ precision: chart.options.precision,
471
+ round: chart.options.round,
472
+ zeros: chart.options.zeros
473
+ };
474
+
475
+ if (chart.options.bytes) {
476
+ var series = chart.data;
477
+ if (chartType === "pie") {
478
+ series = [{data: series}];
479
+ }
480
+
481
+ // calculate max
482
+ var max = 0;
483
+ for (var i = 0; i < series.length; i++) {
484
+ var s = series[i];
485
+ for (var j = 0; j < s.data.length; j++) {
486
+ if (s.data[j][1] > max) {
487
+ max = s.data[j][1];
488
+ }
489
+ }
490
+ }
491
+
492
+ // calculate scale
493
+ var scale = 1;
494
+ while (max >= 1024) {
495
+ scale *= 1024;
496
+ max /= 1024;
497
+ }
498
+
499
+ // set step size
500
+ formatOptions.byteScale = scale;
501
+ }
502
+
503
+ if (chartType !== "pie") {
504
+ var axis = options.scales.y;
505
+ if (chartType === "bar") {
506
+ axis = options.scales.x;
507
+ }
508
+
509
+ if (formatOptions.byteScale) {
510
+ if (!axis.ticks.stepSize) {
511
+ axis.ticks.stepSize = formatOptions.byteScale / 2;
512
+ }
513
+ if (!axis.ticks.maxTicksLimit) {
514
+ axis.ticks.maxTicksLimit = 4;
515
+ }
516
+ }
517
+
518
+ if (!axis.ticks.callback) {
519
+ axis.ticks.callback = function (value) {
520
+ return formatValue("", value, formatOptions, true);
521
+ };
522
+ }
523
+ }
524
+
525
+ if (!options.plugins.tooltip.callbacks.label) {
526
+ if (chartType === "scatter") {
527
+ options.plugins.tooltip.callbacks.label = function (context) {
528
+ var label = context.dataset.label || '';
529
+ if (label) {
530
+ label += ': ';
531
+ }
532
+ return label + '(' + context.label + ', ' + context.formattedValue + ')';
533
+ };
534
+ } else if (chartType === "bubble") {
535
+ options.plugins.tooltip.callbacks.label = function (context) {
536
+ var label = context.dataset.label || '';
537
+ if (label) {
538
+ label += ': ';
539
+ }
540
+ var dataPoint = context.raw;
541
+ return label + '(' + dataPoint.x + ', ' + dataPoint.y + ', ' + dataPoint.v + ')';
542
+ };
543
+ } else if (chartType === "pie") {
544
+ // need to use separate label for pie charts
545
+ options.plugins.tooltip.callbacks.label = function (context) {
546
+ var dataLabel = context.label;
547
+ var value = ': ';
548
+
549
+ if (isArray(dataLabel)) {
550
+ // show value on first line of multiline label
551
+ // need to clone because we are changing the value
552
+ dataLabel = dataLabel.slice();
553
+ dataLabel[0] += value;
554
+ } else {
555
+ dataLabel += value;
556
+ }
557
+
558
+ return formatValue(dataLabel, context.parsed, formatOptions);
559
+ };
560
+ } else {
561
+ var valueLabel = chartType === "bar" ? "x" : "y";
562
+ options.plugins.tooltip.callbacks.label = function (context) {
563
+ // don't show null values for stacked charts
564
+ if (context.parsed[valueLabel] === null) {
565
+ return;
566
+ }
567
+
568
+ var label = context.dataset.label || '';
569
+ if (label) {
570
+ label += ': ';
571
+ }
572
+ return formatValue(label, context.parsed[valueLabel], formatOptions);
573
+ };
574
+ }
575
+ }
576
+ };
577
+
578
+ var jsOptions$2 = jsOptionsFunc(merge(baseOptions, defaultOptions$2), hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);
579
+
580
+ var createDataTable = function (chart, options, chartType) {
581
+ var datasets = [];
582
+ var labels = [];
583
+
584
+ var colors = chart.options.colors || defaultColors;
585
+
586
+ var day = true;
587
+ var week = true;
588
+ var dayOfWeek;
589
+ var month = true;
590
+ var year = true;
591
+ var hour = true;
592
+ var minute = true;
593
+
594
+ var series = chart.data;
595
+
596
+ var max = 0;
597
+ if (chartType === "bubble") {
598
+ for (var i$1 = 0; i$1 < series.length; i$1++) {
599
+ var s$1 = series[i$1];
600
+ for (var j$1 = 0; j$1 < s$1.data.length; j$1++) {
601
+ if (s$1.data[j$1][2] > max) {
602
+ max = s$1.data[j$1][2];
603
+ }
604
+ }
605
+ }
606
+ }
607
+
608
+ var i, j, s, d, key, rows = [], rows2 = [];
609
+
610
+ if (chartType === "bar" || chartType === "column" || (chart.xtype !== "number" && chart.xtype !== "bubble")) {
611
+ var sortedLabels = [];
612
+
613
+ for (i = 0; i < series.length; i++) {
614
+ s = series[i];
615
+
616
+ for (j = 0; j < s.data.length; j++) {
617
+ d = s.data[j];
618
+ key = chart.xtype == "datetime" ? d[0].getTime() : d[0];
619
+ if (!rows[key]) {
620
+ rows[key] = new Array(series.length);
621
+ }
622
+ rows[key][i] = toFloat(d[1]);
623
+ if (sortedLabels.indexOf(key) === -1) {
624
+ sortedLabels.push(key);
625
+ }
626
+ }
627
+ }
628
+
629
+ if (chart.xtype === "datetime" || chart.xtype === "number") {
630
+ sortedLabels.sort(sortByNumber);
631
+ }
632
+
633
+ for (j = 0; j < series.length; j++) {
634
+ rows2.push([]);
635
+ }
636
+
637
+ var value;
638
+ var k;
639
+ for (k = 0; k < sortedLabels.length; k++) {
640
+ i = sortedLabels[k];
641
+ if (chart.xtype === "datetime") {
642
+ value = new Date(toFloat(i));
643
+ // TODO make this efficient
644
+ day = day && isDay(value);
645
+ if (!dayOfWeek) {
646
+ dayOfWeek = value.getDay();
647
+ }
648
+ week = week && isWeek(value, dayOfWeek);
649
+ month = month && isMonth(value);
650
+ year = year && isYear(value);
651
+ hour = hour && isHour(value);
652
+ minute = minute && isMinute(value);
653
+ } else {
654
+ value = i;
655
+ }
656
+ labels.push(value);
657
+ for (j = 0; j < series.length; j++) {
658
+ // Chart.js doesn't like undefined
659
+ rows2[j].push(rows[i][j] === undefined ? null : rows[i][j]);
660
+ }
661
+ }
662
+ } else {
663
+ for (var i$2 = 0; i$2 < series.length; i$2++) {
664
+ var s$2 = series[i$2];
665
+ var d$1 = [];
666
+ for (var j$2 = 0; j$2 < s$2.data.length; j$2++) {
667
+ var point = {
668
+ x: toFloat(s$2.data[j$2][0]),
669
+ y: toFloat(s$2.data[j$2][1])
670
+ };
671
+ if (chartType === "bubble") {
672
+ point.r = toFloat(s$2.data[j$2][2]) * 20 / max;
673
+ // custom attribute, for tooltip
674
+ point.v = s$2.data[j$2][2];
675
+ }
676
+ d$1.push(point);
677
+ }
678
+ rows2.push(d$1);
679
+ }
680
+ }
681
+
682
+ var color;
683
+ var backgroundColor;
684
+
685
+ for (i = 0; i < series.length; i++) {
686
+ s = series[i];
687
+
688
+ // use colors for each bar for single series format
689
+ if (chart.options.colors && chart.singleSeriesFormat && (chartType === "bar" || chartType === "column") && !s.color && isArray(chart.options.colors) && !isArray(chart.options.colors[0])) {
690
+ color = colors;
691
+ backgroundColor = [];
692
+ for (var j$3 = 0; j$3 < colors.length; j$3++) {
693
+ backgroundColor[j$3] = addOpacity(color[j$3], 0.5);
694
+ }
695
+ } else {
696
+ color = s.color || colors[i];
697
+ backgroundColor = chartType !== "line" ? addOpacity(color, 0.5) : color;
698
+ }
699
+
700
+ var dataset = {
701
+ label: s.name || "",
702
+ data: rows2[i],
703
+ fill: chartType === "area",
704
+ borderColor: color,
705
+ backgroundColor: backgroundColor,
706
+ borderWidth: 2
707
+ };
708
+
709
+ var pointChart = chartType === "line" || chartType === "area" || chartType === "scatter" || chartType === "bubble";
710
+ if (pointChart) {
711
+ dataset.pointBackgroundColor = color;
712
+ dataset.pointHoverBackgroundColor = color;
713
+ dataset.pointHitRadius = 50;
714
+ }
715
+
716
+ if (chartType === "bubble") {
717
+ dataset.pointBackgroundColor = backgroundColor;
718
+ dataset.pointHoverBackgroundColor = backgroundColor;
719
+ dataset.pointHoverBorderWidth = 2;
720
+ }
721
+
722
+ if (s.stack) {
723
+ dataset.stack = s.stack;
724
+ }
725
+
726
+ var curve = seriesOption(chart, s, "curve");
727
+ if (curve === false) {
728
+ dataset.tension = 0;
729
+ } else if (pointChart) {
730
+ dataset.tension = 0.4;
731
+ }
732
+
733
+ var points = seriesOption(chart, s, "points");
734
+ if (points === false) {
735
+ dataset.pointRadius = 0;
736
+ dataset.pointHoverRadius = 0;
737
+ }
738
+
739
+ dataset = merge(dataset, chart.options.dataset || {});
740
+ dataset = merge(dataset, s.library || {});
741
+ dataset = merge(dataset, s.dataset || {});
742
+
743
+ datasets.push(dataset);
744
+ }
745
+
746
+ var xmin = chart.options.xmin;
747
+ var xmax = chart.options.xmax;
748
+
749
+ if (chart.xtype === "datetime") {
750
+ if (notnull(xmin)) {
751
+ options.scales.x.min = toDate(xmin).getTime();
752
+ }
753
+ if (notnull(xmax)) {
754
+ options.scales.x.max = toDate(xmax).getTime();
755
+ }
756
+ } else if (chart.xtype === "number") {
757
+ if (notnull(xmin)) {
758
+ options.scales.x.min = xmin;
759
+ }
760
+ if (notnull(xmax)) {
761
+ options.scales.x.max = xmax;
762
+ }
763
+ }
764
+
765
+ // for empty datetime chart
766
+ if (chart.xtype === "datetime" && labels.length === 0) {
767
+ if (notnull(xmin)) {
768
+ labels.push(toDate(xmin));
769
+ }
770
+ if (notnull(xmax)) {
771
+ labels.push(toDate(xmax));
772
+ }
773
+ day = false;
774
+ week = false;
775
+ month = false;
776
+ year = false;
777
+ hour = false;
778
+ minute = false;
779
+ }
780
+
781
+ if (chart.xtype === "datetime" && labels.length > 0) {
782
+ var minTime = (notnull(xmin) ? toDate(xmin) : labels[0]).getTime();
783
+ var maxTime = (notnull(xmax) ? toDate(xmax) : labels[0]).getTime();
784
+
785
+ for (i = 1; i < labels.length; i++) {
786
+ var value$1 = labels[i].getTime();
787
+ if (value$1 < minTime) {
788
+ minTime = value$1;
789
+ }
790
+ if (value$1 > maxTime) {
791
+ maxTime = value$1;
792
+ }
793
+ }
794
+
795
+ var timeDiff = (maxTime - minTime) / (86400 * 1000.0);
796
+
797
+ if (!options.scales.x.time.unit) {
798
+ var step;
799
+ if (year || timeDiff > 365 * 10) {
800
+ options.scales.x.time.unit = "year";
801
+ step = 365;
802
+ } else if (month || timeDiff > 30 * 10) {
803
+ options.scales.x.time.unit = "month";
804
+ step = 30;
805
+ } else if (day || timeDiff > 10) {
806
+ options.scales.x.time.unit = "day";
807
+ step = 1;
808
+ } else if (hour || timeDiff > 0.5) {
809
+ options.scales.x.time.displayFormats = {hour: "MMM d, h a"};
810
+ options.scales.x.time.unit = "hour";
811
+ step = 1 / 24.0;
812
+ } else if (minute) {
813
+ options.scales.x.time.displayFormats = {minute: "h:mm a"};
814
+ options.scales.x.time.unit = "minute";
815
+ step = 1 / 24.0 / 60.0;
816
+ }
817
+
818
+ if (step && timeDiff > 0) {
819
+ // width not available for hidden elements
820
+ var width = chart.element.offsetWidth;
821
+ if (width > 0) {
822
+ var unitStepSize = Math.ceil(timeDiff / step / (width / 100.0));
823
+ if (week && step === 1) {
824
+ unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;
825
+ }
826
+ options.scales.x.time.stepSize = unitStepSize;
827
+ }
828
+ }
829
+ }
830
+
831
+ if (!options.scales.x.time.tooltipFormat) {
832
+ if (day) {
833
+ options.scales.x.time.tooltipFormat = "PP";
834
+ } else if (hour) {
835
+ options.scales.x.time.tooltipFormat = "MMM d, h a";
836
+ } else if (minute) {
837
+ options.scales.x.time.tooltipFormat = "h:mm a";
838
+ }
839
+ }
840
+ }
841
+
842
+ var data = {
843
+ labels: labels,
844
+ datasets: datasets
845
+ };
846
+
847
+ return data;
848
+ };
849
+
850
+ var defaultExport$2 = function defaultExport(library) {
851
+ this.name = "chartjs";
852
+ this.library = library;
853
+ };
854
+
855
+ defaultExport$2.prototype.renderLineChart = function renderLineChart (chart, chartType) {
856
+ var chartOptions = {};
857
+ // fix for https://github.com/chartjs/Chart.js/issues/2441
858
+ if (!chart.options.max && allZeros(chart.data)) {
859
+ chartOptions.max = 1;
860
+ }
861
+
862
+ var options = jsOptions$2(chart, merge(chartOptions, chart.options));
863
+ setFormatOptions$1(chart, options, chartType);
864
+
865
+ var data = createDataTable(chart, options, chartType || "line");
866
+
867
+ if (chart.xtype === "number") {
868
+ options.scales.x.type = options.scales.x.type || "linear";
869
+ options.scales.x.position = options.scales.x.position ||"bottom";
870
+ } else {
871
+ options.scales.x.type = chart.xtype === "string" ? "category" : "time";
872
+ }
873
+
874
+ this.drawChart(chart, "line", data, options);
875
+ };
876
+
877
+ defaultExport$2.prototype.renderPieChart = function renderPieChart (chart) {
878
+ var options = merge({}, baseOptions);
879
+ if (chart.options.donut) {
880
+ options.cutout = "50%";
881
+ }
882
+
883
+ if ("legend" in chart.options) {
884
+ hideLegend$2(options, chart.options.legend);
885
+ }
886
+
887
+ if (chart.options.title) {
888
+ setTitle$2(options, chart.options.title);
889
+ }
890
+
891
+ options = merge(options, chart.options.library || {});
892
+ setFormatOptions$1(chart, options, "pie");
893
+
894
+ var labels = [];
895
+ var values = [];
896
+ for (var i = 0; i < chart.data.length; i++) {
897
+ var point = chart.data[i];
898
+ labels.push(point[0]);
899
+ values.push(point[1]);
900
+ }
901
+
902
+ var dataset = {
903
+ data: values,
904
+ backgroundColor: chart.options.colors || defaultColors
905
+ };
906
+ dataset = merge(dataset, chart.options.dataset || {});
907
+
908
+ var data = {
909
+ labels: labels,
910
+ datasets: [dataset]
911
+ };
912
+
913
+ this.drawChart(chart, "pie", data, options);
914
+ };
915
+
916
+ defaultExport$2.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {
917
+ var options;
918
+ if (chartType === "bar") {
919
+ var barOptions = merge(baseOptions, defaultOptions$2);
920
+ barOptions.indexAxis = "y";
921
+
922
+ // ensure gridlines have proper orientation
923
+ barOptions.scales.x.grid.drawOnChartArea = true;
924
+ barOptions.scales.y.grid.drawOnChartArea = false;
925
+ delete barOptions.scales.y.ticks.maxTicksLimit;
926
+
927
+ options = jsOptionsFunc(barOptions, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options);
928
+ } else {
929
+ options = jsOptions$2(chart, chart.options);
930
+ }
931
+ setFormatOptions$1(chart, options, chartType);
932
+ var data = createDataTable(chart, options, "column");
933
+ if (chartType !== "bar") {
934
+ setLabelSize(chart, data, options);
935
+ }
936
+ this.drawChart(chart, "bar", data, options);
937
+ };
938
+
939
+ defaultExport$2.prototype.renderAreaChart = function renderAreaChart (chart) {
940
+ this.renderLineChart(chart, "area");
941
+ };
942
+
943
+ defaultExport$2.prototype.renderBarChart = function renderBarChart (chart) {
944
+ this.renderColumnChart(chart, "bar");
945
+ };
946
+
947
+ defaultExport$2.prototype.renderScatterChart = function renderScatterChart (chart, chartType) {
948
+ chartType = chartType || "scatter";
949
+
950
+ var options = jsOptions$2(chart, chart.options);
951
+ setFormatOptions$1(chart, options, chartType);
952
+
953
+ if (!("showLine" in options)) {
954
+ options.showLine = false;
955
+ }
956
+
957
+ var data = createDataTable(chart, options, chartType);
958
+
959
+ options.scales.x.type = options.scales.x.type || "linear";
960
+ options.scales.x.position = options.scales.x.position || "bottom";
961
+
962
+ // prevent grouping hover and tooltips
963
+ if (!("mode" in options.interaction)) {
964
+ options.interaction.mode = "nearest";
965
+ }
966
+
967
+ this.drawChart(chart, chartType, data, options);
968
+ };
969
+
970
+ defaultExport$2.prototype.renderBubbleChart = function renderBubbleChart (chart) {
971
+ this.renderScatterChart(chart, "bubble");
972
+ };
973
+
974
+ defaultExport$2.prototype.destroy = function destroy (chart) {
975
+ if (chart.chart) {
976
+ chart.chart.destroy();
977
+ }
978
+ };
979
+
980
+ defaultExport$2.prototype.drawChart = function drawChart (chart, type, data, options) {
981
+ this.destroy(chart);
982
+ if (chart.destroyed) { return; }
983
+
984
+ var chartOptions = {
985
+ type: type,
986
+ data: data,
987
+ options: options
988
+ };
989
+
990
+ if (chart.options.code) {
991
+ window.console.log("new Chart(ctx, " + JSON.stringify(chartOptions) + ");");
992
+ }
993
+
994
+ chart.element.innerHTML = "<canvas></canvas>";
995
+ var ctx = chart.element.getElementsByTagName("CANVAS")[0];
996
+ chart.chart = new this.library(ctx, chartOptions);
997
+ };
998
+
999
+ var defaultOptions$1 = {
1000
+ chart: {},
1001
+ xAxis: {
1002
+ title: {
1003
+ text: null
1004
+ },
1005
+ labels: {
1006
+ style: {
1007
+ fontSize: "12px"
1008
+ }
1009
+ }
1010
+ },
1011
+ yAxis: {
1012
+ title: {
1013
+ text: null
1014
+ },
1015
+ labels: {
1016
+ style: {
1017
+ fontSize: "12px"
1018
+ }
1019
+ }
1020
+ },
1021
+ title: {
1022
+ text: null
1023
+ },
1024
+ credits: {
1025
+ enabled: false
1026
+ },
1027
+ legend: {
1028
+ borderWidth: 0
1029
+ },
1030
+ tooltip: {
1031
+ style: {
1032
+ fontSize: "12px"
1033
+ }
1034
+ },
1035
+ plotOptions: {
1036
+ areaspline: {},
1037
+ area: {},
1038
+ series: {
1039
+ marker: {}
1040
+ }
1041
+ },
1042
+ time: {
1043
+ useUTC: false
1044
+ }
1045
+ };
1046
+
1047
+ var hideLegend$1 = function (options, legend, hideLegend) {
1048
+ if (legend !== undefined) {
1049
+ options.legend.enabled = !!legend;
1050
+ if (legend && legend !== true) {
1051
+ if (legend === "top" || legend === "bottom") {
1052
+ options.legend.verticalAlign = legend;
1053
+ } else {
1054
+ options.legend.layout = "vertical";
1055
+ options.legend.verticalAlign = "middle";
1056
+ options.legend.align = legend;
1057
+ }
1058
+ }
1059
+ } else if (hideLegend) {
1060
+ options.legend.enabled = false;
1061
+ }
1062
+ };
1063
+
1064
+ var setTitle$1 = function (options, title) {
1065
+ options.title.text = title;
1066
+ };
1067
+
1068
+ var setMin$1 = function (options, min) {
1069
+ options.yAxis.min = min;
1070
+ };
1071
+
1072
+ var setMax$1 = function (options, max) {
1073
+ options.yAxis.max = max;
1074
+ };
1075
+
1076
+ var setStacked$1 = function (options, stacked) {
1077
+ var stackedValue = stacked ? (stacked === true ? "normal" : stacked) : null;
1078
+ options.plotOptions.series.stacking = stackedValue;
1079
+ options.plotOptions.area.stacking = stackedValue;
1080
+ options.plotOptions.areaspline.stacking = stackedValue;
1081
+ };
1082
+
1083
+ var setXtitle$1 = function (options, title) {
1084
+ options.xAxis.title.text = title;
1085
+ };
1086
+
1087
+ var setYtitle$1 = function (options, title) {
1088
+ options.yAxis.title.text = title;
1089
+ };
1090
+
1091
+ var jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);
1092
+
1093
+ var setFormatOptions = function(chart, options, chartType) {
1094
+ var formatOptions = {
1095
+ prefix: chart.options.prefix,
1096
+ suffix: chart.options.suffix,
1097
+ thousands: chart.options.thousands,
1098
+ decimal: chart.options.decimal,
1099
+ precision: chart.options.precision,
1100
+ round: chart.options.round,
1101
+ zeros: chart.options.zeros
1102
+ };
1103
+
1104
+ // skip when axis is an array (like with min/max)
1105
+ if (chartType !== "pie" && !isArray(options.yAxis) && !options.yAxis.labels.formatter) {
1106
+ options.yAxis.labels.formatter = function () {
1107
+ return formatValue("", this.value, formatOptions);
1108
+ };
1109
+ }
1110
+
1111
+ if (!options.tooltip.pointFormatter && !options.tooltip.pointFormat) {
1112
+ options.tooltip.pointFormatter = function () {
1113
+ return '<span style="color:' + this.color + '">\u25CF</span> ' + formatValue(this.series.name + ': <b>', this.y, formatOptions) + '</b><br/>';
1114
+ };
1115
+ }
1116
+ };
1117
+
1118
+ var defaultExport$1 = function defaultExport(library) {
1119
+ this.name = "highcharts";
1120
+ this.library = library;
1121
+ };
1122
+
1123
+ defaultExport$1.prototype.renderLineChart = function renderLineChart (chart, chartType) {
1124
+ chartType = chartType || "spline";
1125
+ var chartOptions = {};
1126
+ if (chartType === "areaspline") {
1127
+ chartOptions = {
1128
+ plotOptions: {
1129
+ areaspline: {
1130
+ stacking: "normal"
1131
+ },
1132
+ area: {
1133
+ stacking: "normal"
1134
+ },
1135
+ series: {
1136
+ marker: {
1137
+ enabled: false
1138
+ }
1139
+ }
1140
+ }
1141
+ };
1142
+ }
1143
+
1144
+ if (chart.options.curve === false) {
1145
+ if (chartType === "areaspline") {
1146
+ chartType = "area";
1147
+ } else if (chartType === "spline") {
1148
+ chartType = "line";
1149
+ }
1150
+ }
1151
+
1152
+ var options = jsOptions$1(chart, chart.options, chartOptions), data, i, j;
1153
+ if (chart.xtype === "number") {
1154
+ options.xAxis.type = options.xAxis.type || "linear";
1155
+ } else {
1156
+ options.xAxis.type = chart.xtype === "string" ? "category" : "datetime";
1157
+ }
1158
+ if (!options.chart.type) {
1159
+ options.chart.type = chartType;
1160
+ }
1161
+ setFormatOptions(chart, options, chartType);
1162
+
1163
+ var series = chart.data;
1164
+ for (i = 0; i < series.length; i++) {
1165
+ series[i].name = series[i].name || "Value";
1166
+ data = series[i].data;
1167
+ if (chart.xtype === "datetime") {
1168
+ for (j = 0; j < data.length; j++) {
1169
+ data[j][0] = data[j][0].getTime();
1170
+ }
1171
+ }
1172
+ series[i].marker = {symbol: "circle"};
1173
+ if (chart.options.points === false) {
1174
+ series[i].marker.enabled = false;
1175
+ }
1176
+ }
1177
+
1178
+ this.drawChart(chart, series, options);
1179
+ };
1180
+
1181
+ defaultExport$1.prototype.renderScatterChart = function renderScatterChart (chart) {
1182
+ var options = jsOptions$1(chart, chart.options, {});
1183
+ options.chart.type = "scatter";
1184
+ this.drawChart(chart, chart.data, options);
1185
+ };
1186
+
1187
+ defaultExport$1.prototype.renderPieChart = function renderPieChart (chart) {
1188
+ var chartOptions = merge(defaultOptions$1, {});
1189
+
1190
+ if (chart.options.colors) {
1191
+ chartOptions.colors = chart.options.colors;
1192
+ }
1193
+ if (chart.options.donut) {
1194
+ chartOptions.plotOptions = {pie: {innerSize: "50%"}};
1195
+ }
1196
+
1197
+ if ("legend" in chart.options) {
1198
+ hideLegend$1(chartOptions, chart.options.legend);
1199
+ }
1200
+
1201
+ if (chart.options.title) {
1202
+ setTitle$1(chartOptions, chart.options.title);
1203
+ }
1204
+
1205
+ var options = merge(chartOptions, chart.options.library || {});
1206
+ setFormatOptions(chart, options, "pie");
1207
+ var series = [{
1208
+ type: "pie",
1209
+ name: chart.options.label || "Value",
1210
+ data: chart.data
1211
+ }];
1212
+
1213
+ this.drawChart(chart, series, options);
1214
+ };
1215
+
1216
+ defaultExport$1.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {
1217
+ chartType = chartType || "column";
1218
+ var series = chart.data;
1219
+ var options = jsOptions$1(chart, chart.options), i, j, s, d, rows = [], categories = [];
1220
+ options.chart.type = chartType;
1221
+ setFormatOptions(chart, options, chartType);
1222
+
1223
+ for (i = 0; i < series.length; i++) {
1224
+ s = series[i];
1225
+
1226
+ for (j = 0; j < s.data.length; j++) {
1227
+ d = s.data[j];
1228
+ if (!rows[d[0]]) {
1229
+ rows[d[0]] = new Array(series.length);
1230
+ categories.push(d[0]);
1231
+ }
1232
+ rows[d[0]][i] = d[1];
1233
+ }
1234
+ }
1235
+
1236
+ if (chart.xtype === "number") {
1237
+ categories.sort(sortByNumber);
1238
+ }
1239
+
1240
+ options.xAxis.categories = categories;
1241
+
1242
+ var newSeries = [], d2;
1243
+ for (i = 0; i < series.length; i++) {
1244
+ d = [];
1245
+ for (j = 0; j < categories.length; j++) {
1246
+ d.push(rows[categories[j]][i] || 0);
1247
+ }
1248
+
1249
+ d2 = {
1250
+ name: series[i].name || "Value",
1251
+ data: d
1252
+ };
1253
+ if (series[i].stack) {
1254
+ d2.stack = series[i].stack;
1255
+ }
1256
+
1257
+ newSeries.push(d2);
1258
+ }
1259
+
1260
+ this.drawChart(chart, newSeries, options);
1261
+ };
1262
+
1263
+ defaultExport$1.prototype.renderBarChart = function renderBarChart (chart) {
1264
+ this.renderColumnChart(chart, "bar");
1265
+ };
1266
+
1267
+ defaultExport$1.prototype.renderAreaChart = function renderAreaChart (chart) {
1268
+ this.renderLineChart(chart, "areaspline");
1269
+ };
1270
+
1271
+ defaultExport$1.prototype.destroy = function destroy (chart) {
1272
+ if (chart.chart) {
1273
+ chart.chart.destroy();
1274
+ }
1275
+ };
1276
+
1277
+ defaultExport$1.prototype.drawChart = function drawChart (chart, data, options) {
1278
+ this.destroy(chart);
1279
+ if (chart.destroyed) { return; }
1280
+
1281
+ options.chart.renderTo = chart.element.id;
1282
+ options.series = data;
1283
+
1284
+ if (chart.options.code) {
1285
+ window.console.log("new Highcharts.Chart(" + JSON.stringify(options) + ");");
1286
+ }
1287
+
1288
+ chart.chart = new this.library.Chart(options);
1289
+ };
1290
+
1291
+ var loaded = {};
1292
+ var callbacks = [];
1293
+
1294
+ // Set chart options
1295
+ var defaultOptions = {
1296
+ chartArea: {},
1297
+ fontName: "'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif",
1298
+ pointSize: 6,
1299
+ legend: {
1300
+ textStyle: {
1301
+ fontSize: 12,
1302
+ color: "#444"
1303
+ },
1304
+ alignment: "center",
1305
+ position: "right"
1306
+ },
1307
+ curveType: "function",
1308
+ hAxis: {
1309
+ textStyle: {
1310
+ color: "#666",
1311
+ fontSize: 12
1312
+ },
1313
+ titleTextStyle: {},
1314
+ gridlines: {
1315
+ color: "transparent"
1316
+ },
1317
+ baselineColor: "#ccc",
1318
+ viewWindow: {}
1319
+ },
1320
+ vAxis: {
1321
+ textStyle: {
1322
+ color: "#666",
1323
+ fontSize: 12
1324
+ },
1325
+ titleTextStyle: {},
1326
+ baselineColor: "#ccc",
1327
+ viewWindow: {}
1328
+ },
1329
+ tooltip: {
1330
+ textStyle: {
1331
+ color: "#666",
1332
+ fontSize: 12
1333
+ }
1334
+ }
1335
+ };
1336
+
1337
+ var hideLegend = function (options, legend, hideLegend) {
1338
+ if (legend !== undefined) {
1339
+ var position;
1340
+ if (!legend) {
1341
+ position = "none";
1342
+ } else if (legend === true) {
1343
+ position = "right";
1344
+ } else {
1345
+ position = legend;
1346
+ }
1347
+ options.legend.position = position;
1348
+ } else if (hideLegend) {
1349
+ options.legend.position = "none";
1350
+ }
1351
+ };
1352
+
1353
+ var setTitle = function (options, title) {
1354
+ options.title = title;
1355
+ options.titleTextStyle = {color: "#333", fontSize: "20px"};
1356
+ };
1357
+
1358
+ var setMin = function (options, min) {
1359
+ options.vAxis.viewWindow.min = min;
1360
+ };
1361
+
1362
+ var setMax = function (options, max) {
1363
+ options.vAxis.viewWindow.max = max;
1364
+ };
1365
+
1366
+ var setBarMin = function (options, min) {
1367
+ options.hAxis.viewWindow.min = min;
1368
+ };
1369
+
1370
+ var setBarMax = function (options, max) {
1371
+ options.hAxis.viewWindow.max = max;
1372
+ };
1373
+
1374
+ var setStacked = function (options, stacked) {
1375
+ options.isStacked = stacked ? stacked : false;
1376
+ };
1377
+
1378
+ var setXtitle = function (options, title) {
1379
+ options.hAxis.title = title;
1380
+ options.hAxis.titleTextStyle.italic = false;
1381
+ };
1382
+
1383
+ var setYtitle = function (options, title) {
1384
+ options.vAxis.title = title;
1385
+ options.vAxis.titleTextStyle.italic = false;
1386
+ };
1387
+
1388
+ var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);
1389
+
1390
+ var resize = function (callback) {
1391
+ if (window.attachEvent) {
1392
+ window.attachEvent("onresize", callback);
1393
+ } else if (window.addEventListener) {
1394
+ window.addEventListener("resize", callback, true);
1395
+ }
1396
+ callback();
1397
+ };
1398
+
1399
+ var defaultExport = function defaultExport(library) {
1400
+ this.name = "google";
1401
+ this.library = library;
1402
+ };
1403
+
1404
+ defaultExport.prototype.renderLineChart = function renderLineChart (chart) {
1405
+ var this$1$1 = this;
1406
+
1407
+ this.waitForLoaded(chart, function () {
1408
+ var chartOptions = {};
1409
+
1410
+ if (chart.options.curve === false) {
1411
+ chartOptions.curveType = "none";
1412
+ }
1413
+
1414
+ if (chart.options.points === false) {
1415
+ chartOptions.pointSize = 0;
1416
+ }
1417
+
1418
+ var options = jsOptions(chart, chart.options, chartOptions);
1419
+ var data = this$1$1.createDataTable(chart.data, chart.xtype);
1420
+
1421
+ this$1$1.drawChart(chart, "LineChart", data, options);
1422
+ });
1423
+ };
1424
+
1425
+ defaultExport.prototype.renderPieChart = function renderPieChart (chart) {
1426
+ var this$1$1 = this;
1427
+
1428
+ this.waitForLoaded(chart, function () {
1429
+ var chartOptions = {
1430
+ chartArea: {
1431
+ top: "10%",
1432
+ height: "80%"
1433
+ },
1434
+ legend: {}
1435
+ };
1436
+ if (chart.options.colors) {
1437
+ chartOptions.colors = chart.options.colors;
1438
+ }
1439
+ if (chart.options.donut) {
1440
+ chartOptions.pieHole = 0.5;
1441
+ }
1442
+ if ("legend" in chart.options) {
1443
+ hideLegend(chartOptions, chart.options.legend);
1444
+ }
1445
+ if (chart.options.title) {
1446
+ setTitle(chartOptions, chart.options.title);
1447
+ }
1448
+ var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});
1449
+
1450
+ var data = new this$1$1.library.visualization.DataTable();
1451
+ data.addColumn("string", "");
1452
+ data.addColumn("number", "Value");
1453
+ data.addRows(chart.data);
1454
+
1455
+ this$1$1.drawChart(chart, "PieChart", data, options);
1456
+ });
1457
+ };
1458
+
1459
+ defaultExport.prototype.renderColumnChart = function renderColumnChart (chart) {
1460
+ var this$1$1 = this;
1461
+
1462
+ this.waitForLoaded(chart, function () {
1463
+ var options = jsOptions(chart, chart.options);
1464
+ var data = this$1$1.createDataTable(chart.data, chart.xtype);
1465
+
1466
+ this$1$1.drawChart(chart, "ColumnChart", data, options);
1467
+ });
1468
+ };
1469
+
1470
+ defaultExport.prototype.renderBarChart = function renderBarChart (chart) {
1471
+ var this$1$1 = this;
1472
+
1473
+ this.waitForLoaded(chart, function () {
1474
+ var chartOptions = {
1475
+ hAxis: {
1476
+ gridlines: {
1477
+ color: "#ccc"
1478
+ }
1479
+ }
1480
+ };
1481
+ var options = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options, chartOptions);
1482
+ var data = this$1$1.createDataTable(chart.data, chart.xtype);
1483
+
1484
+ this$1$1.drawChart(chart, "BarChart", data, options);
1485
+ });
1486
+ };
1487
+
1488
+ defaultExport.prototype.renderAreaChart = function renderAreaChart (chart) {
1489
+ var this$1$1 = this;
1490
+
1491
+ this.waitForLoaded(chart, function () {
1492
+ var chartOptions = {
1493
+ isStacked: true,
1494
+ pointSize: 0,
1495
+ areaOpacity: 0.5
1496
+ };
1497
+
1498
+ var options = jsOptions(chart, chart.options, chartOptions);
1499
+ var data = this$1$1.createDataTable(chart.data, chart.xtype);
1500
+
1501
+ this$1$1.drawChart(chart, "AreaChart", data, options);
1502
+ });
1503
+ };
1504
+
1505
+ defaultExport.prototype.renderGeoChart = function renderGeoChart (chart) {
1506
+ var this$1$1 = this;
1507
+
1508
+ this.waitForLoaded(chart, "geochart", function () {
1509
+ var chartOptions = {
1510
+ legend: "none",
1511
+ colorAxis: {
1512
+ colors: chart.options.colors || ["#f6c7b6", "#ce502d"]
1513
+ }
1514
+ };
1515
+ var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});
1516
+
1517
+ var data = new this$1$1.library.visualization.DataTable();
1518
+ data.addColumn("string", "");
1519
+ data.addColumn("number", chart.options.label || "Value");
1520
+ data.addRows(chart.data);
1521
+
1522
+ this$1$1.drawChart(chart, "GeoChart", data, options);
1523
+ });
1524
+ };
1525
+
1526
+ defaultExport.prototype.renderScatterChart = function renderScatterChart (chart) {
1527
+ var this$1$1 = this;
1528
+
1529
+ this.waitForLoaded(chart, function () {
1530
+ var chartOptions = {};
1531
+ var options = jsOptions(chart, chart.options, chartOptions);
1532
+
1533
+ var series = chart.data, rows2 = [], i, j, data, d;
1534
+ for (i = 0; i < series.length; i++) {
1535
+ series[i].name = series[i].name || "Value";
1536
+ d = series[i].data;
1537
+ for (j = 0; j < d.length; j++) {
1538
+ var row = new Array(series.length + 1);
1539
+ row[0] = d[j][0];
1540
+ row[i + 1] = d[j][1];
1541
+ rows2.push(row);
1542
+ }
1543
+ }
1544
+
1545
+ data = new this$1$1.library.visualization.DataTable();
1546
+ data.addColumn("number", "");
1547
+ for (i = 0; i < series.length; i++) {
1548
+ data.addColumn("number", series[i].name);
1549
+ }
1550
+ data.addRows(rows2);
1551
+
1552
+ this$1$1.drawChart(chart, "ScatterChart", data, options);
1553
+ });
1554
+ };
1555
+
1556
+ defaultExport.prototype.renderTimeline = function renderTimeline (chart) {
1557
+ var this$1$1 = this;
1558
+
1559
+ this.waitForLoaded(chart, "timeline", function () {
1560
+ var chartOptions = {
1561
+ legend: "none"
1562
+ };
1563
+
1564
+ if (chart.options.colors) {
1565
+ chartOptions.colors = chart.options.colors;
1566
+ }
1567
+ var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});
1568
+
1569
+ var data = new this$1$1.library.visualization.DataTable();
1570
+ data.addColumn({type: "string", id: "Name"});
1571
+ data.addColumn({type: "date", id: "Start"});
1572
+ data.addColumn({type: "date", id: "End"});
1573
+ data.addRows(chart.data);
1574
+
1575
+ chart.element.style.lineHeight = "normal";
1576
+
1577
+ this$1$1.drawChart(chart, "Timeline", data, options);
1578
+ });
1579
+ };
1580
+
1581
+ // TODO remove resize events
1582
+ defaultExport.prototype.destroy = function destroy (chart) {
1583
+ if (chart.chart) {
1584
+ chart.chart.clearChart();
1585
+ }
1586
+ };
1587
+
1588
+ defaultExport.prototype.drawChart = function drawChart (chart, type, data, options) {
1589
+ this.destroy(chart);
1590
+ if (chart.destroyed) { return; }
1591
+
1592
+ if (chart.options.code) {
1593
+ window.console.log("var data = new google.visualization.DataTable(" + data.toJSON() + ");\nvar chart = new google.visualization." + type + "(element);\nchart.draw(data, " + JSON.stringify(options) + ");");
1594
+ }
1595
+
1596
+ chart.chart = new this.library.visualization[type](chart.element);
1597
+ resize(function () {
1598
+ chart.chart.draw(data, options);
1599
+ });
1600
+ };
1601
+
1602
+ defaultExport.prototype.waitForLoaded = function waitForLoaded (chart, pack, callback) {
1603
+ var this$1$1 = this;
1604
+
1605
+ if (!callback) {
1606
+ callback = pack;
1607
+ pack = "corechart";
1608
+ }
1609
+
1610
+ callbacks.push({pack: pack, callback: callback});
1611
+
1612
+ if (loaded[pack]) {
1613
+ this.runCallbacks();
1614
+ } else {
1615
+ loaded[pack] = true;
1616
+
1617
+ // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI
1618
+ var loadOptions = {
1619
+ packages: [pack],
1620
+ callback: function () { this$1$1.runCallbacks(); }
1621
+ };
1622
+ var config = chart.__config();
1623
+ if (config.language) {
1624
+ loadOptions.language = config.language;
1625
+ }
1626
+ if (pack === "geochart" && config.mapsApiKey) {
1627
+ loadOptions.mapsApiKey = config.mapsApiKey;
1628
+ }
1629
+
1630
+ this.library.charts.load("current", loadOptions);
1631
+ }
1632
+ };
1633
+
1634
+ defaultExport.prototype.runCallbacks = function runCallbacks () {
1635
+ var cb, call;
1636
+ for (var i = 0; i < callbacks.length; i++) {
1637
+ cb = callbacks[i];
1638
+ call = this.library.visualization && ((cb.pack === "corechart" && this.library.visualization.LineChart) || (cb.pack === "timeline" && this.library.visualization.Timeline) || (cb.pack === "geochart" && this.library.visualization.GeoChart));
1639
+ if (call) {
1640
+ cb.callback();
1641
+ callbacks.splice(i, 1);
1642
+ i--;
1643
+ }
1644
+ }
1645
+ };
1646
+
1647
+ // cant use object as key
1648
+ defaultExport.prototype.createDataTable = function createDataTable (series, columnType) {
1649
+ var i, j, s, d, key, rows = [], sortedLabels = [];
1650
+ for (i = 0; i < series.length; i++) {
1651
+ s = series[i];
1652
+ series[i].name = series[i].name || "Value";
1653
+
1654
+ for (j = 0; j < s.data.length; j++) {
1655
+ d = s.data[j];
1656
+ key = (columnType === "datetime") ? d[0].getTime() : d[0];
1657
+ if (!rows[key]) {
1658
+ rows[key] = new Array(series.length);
1659
+ sortedLabels.push(key);
1660
+ }
1661
+ rows[key][i] = toFloat(d[1]);
1662
+ }
1663
+ }
1664
+
1665
+ var rows2 = [];
1666
+ var day = true;
1667
+ var value;
1668
+ for (j = 0; j < sortedLabels.length; j++) {
1669
+ i = sortedLabels[j];
1670
+ if (columnType === "datetime") {
1671
+ value = new Date(toFloat(i));
1672
+ day = day && isDay(value);
1673
+ } else if (columnType === "number") {
1674
+ value = toFloat(i);
1675
+ } else {
1676
+ value = i;
1677
+ }
1678
+ rows2.push([value].concat(rows[i]));
1679
+ }
1680
+ if (columnType === "datetime") {
1681
+ rows2.sort(sortByTime);
1682
+ } else if (columnType === "number") {
1683
+ rows2.sort(sortByNumberSeries);
1684
+
1685
+ for (i = 0; i < rows2.length; i++) {
1686
+ rows2[i][0] = toStr(rows2[i][0]);
1687
+ }
1688
+
1689
+ columnType = "string";
1690
+ }
1691
+
1692
+ // create datatable
1693
+ var data = new this.library.visualization.DataTable();
1694
+ columnType = columnType === "datetime" && day ? "date" : columnType;
1695
+ data.addColumn(columnType, "");
1696
+ for (i = 0; i < series.length; i++) {
1697
+ data.addColumn("number", series[i].name);
1698
+ }
1699
+ data.addRows(rows2);
1700
+
1701
+ return data;
1702
+ };
1703
+
1704
+ function formatSeriesData(data, keyType) {
1705
+ var r = [], j, keyFunc;
1706
+
1707
+ if (keyType === "number") {
1708
+ keyFunc = toFloat;
1709
+ } else if (keyType === "datetime") {
1710
+ keyFunc = toDate;
1711
+ } else {
1712
+ keyFunc = toStr;
1713
+ }
1714
+
1715
+ if (keyType === "bubble") {
1716
+ for (j = 0; j < data.length; j++) {
1717
+ r.push([toFloat(data[j][0]), toFloat(data[j][1]), toFloat(data[j][2])]);
1718
+ }
1719
+ } else {
1720
+ for (j = 0; j < data.length; j++) {
1721
+ r.push([keyFunc(data[j][0]), toFloat(data[j][1])]);
1722
+ }
1723
+ }
1724
+
1725
+ if (keyType === "datetime") {
1726
+ r.sort(sortByTime);
1727
+ } else if (keyType === "number") {
1728
+ r.sort(sortByNumberSeries);
1729
+ }
1730
+
1731
+ return r;
1732
+ }
1733
+
1734
+ function detectXType(series, noDatetime, options) {
1735
+ if (dataEmpty(series)) {
1736
+ if ((options.xmin || options.xmax) && (!options.xmin || isDate(options.xmin)) && (!options.xmax || isDate(options.xmax))) {
1737
+ return "datetime";
1738
+ } else {
1739
+ return "number";
1740
+ }
1741
+ } else if (detectXTypeWithFunction(series, isNumber)) {
1742
+ return "number";
1743
+ } else if (!noDatetime && detectXTypeWithFunction(series, isDate)) {
1744
+ return "datetime";
1745
+ } else {
1746
+ return "string";
1747
+ }
1748
+ }
1749
+
1750
+ function detectXTypeWithFunction(series, func) {
1751
+ var i, j, data;
1752
+ for (i = 0; i < series.length; i++) {
1753
+ data = toArr(series[i].data);
1754
+ for (j = 0; j < data.length; j++) {
1755
+ if (!func(data[j][0])) {
1756
+ return false;
1757
+ }
1758
+ }
1759
+ }
1760
+ return true;
1761
+ }
1762
+
1763
+ // creates a shallow copy of each element of the array
1764
+ // elements are expected to be objects
1765
+ function copySeries(series) {
1766
+ var newSeries = [], i, j;
1767
+ for (i = 0; i < series.length; i++) {
1768
+ var copy = {};
1769
+ for (j in series[i]) {
1770
+ if (series[i].hasOwnProperty(j)) {
1771
+ copy[j] = series[i][j];
1772
+ }
1773
+ }
1774
+ newSeries.push(copy);
1775
+ }
1776
+ return newSeries;
1777
+ }
1778
+
1779
+ function processSeries(chart, keyType, noDatetime) {
1780
+ var i;
1781
+
1782
+ var opts = chart.options;
1783
+ var series = chart.rawData;
1784
+
1785
+ // see if one series or multiple
1786
+ chart.singleSeriesFormat = (!isArray(series) || typeof series[0] !== "object" || isArray(series[0]));
1787
+ if (chart.singleSeriesFormat) {
1788
+ series = [{name: opts.label, data: series}];
1789
+ }
1790
+
1791
+ // convert to array
1792
+ // must come before dataEmpty check
1793
+ series = copySeries(series);
1794
+ for (i = 0; i < series.length; i++) {
1795
+ series[i].data = toArr(series[i].data);
1796
+ }
1797
+
1798
+ chart.xtype = keyType ? keyType : (opts.discrete ? "string" : detectXType(series, noDatetime, opts));
1799
+
1800
+ // right format
1801
+ for (i = 0; i < series.length; i++) {
1802
+ series[i].data = formatSeriesData(series[i].data, chart.xtype);
1803
+ }
1804
+
1805
+ return series;
1806
+ }
1807
+
1808
+ function processSimple(chart) {
1809
+ var perfectData = toArr(chart.rawData), i;
1810
+ for (i = 0; i < perfectData.length; i++) {
1811
+ perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];
1812
+ }
1813
+ return perfectData;
1814
+ }
1815
+
1816
+ function dataEmpty(data, chartType) {
1817
+ if (chartType === "PieChart" || chartType === "GeoChart" || chartType === "Timeline") {
1818
+ return data.length === 0;
1819
+ } else {
1820
+ for (var i = 0; i < data.length; i++) {
1821
+ if (data[i].data.length > 0) {
1822
+ return false;
1823
+ }
1824
+ }
1825
+ return true;
1826
+ }
1827
+ }
1828
+
1829
+ function addDownloadButton(chart) {
1830
+ var element = chart.element;
1831
+ var link = document.createElement("a");
1832
+
1833
+ var download = chart.options.download;
1834
+ if (download === true) {
1835
+ download = {};
1836
+ } else if (typeof download === "string") {
1837
+ download = {filename: download};
1838
+ }
1839
+ link.download = download.filename || "chart.png"; // https://caniuse.com/download
1840
+
1841
+ link.style.position = "absolute";
1842
+ link.style.top = "20px";
1843
+ link.style.right = "20px";
1844
+ link.style.zIndex = 1000;
1845
+ link.style.lineHeight = "20px";
1846
+ link.target = "_blank"; // for safari
1847
+ var image = document.createElement("img");
1848
+ image.alt = "Download";
1849
+ image.style.border = "none";
1850
+ // icon from font-awesome
1851
+ // http://fa2png.io/
1852
+ image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAABCFBMVEUAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMywEsqxAAAAV3RSTlMAAQIDBggJCgsMDQ4PERQaHB0eISIjJCouLzE0OTo/QUJHSUpLTU5PUllhYmltcHh5foWLjI+SlaCio6atr7S1t7m6vsHHyM7R2tze5Obo7fHz9ff5+/1hlxK2AAAA30lEQVQYGUXBhVYCQQBA0TdYWAt2d3d3YWAHyur7/z9xgD16Lw0DW+XKx+1GgX+FRzM3HWQWrHl5N/oapW5RPe0PkBu+UYeICvozTWZVK23Ao04B79oJrOsJDOoxkZoQPWgX29pHpCZEk7rEvQYiNSFq1UMqvlCjJkRBS1R8hb00Vb/TajtBL7nTHE1X1vyMQF732dQhyF2o6SAwrzP06iUQzvwsArlnzcOdrgBhJyHa1QOgO9U1GsKuvjUTjavliZYQ8nNPapG6sap/3nrIdJ6bOWzmX/fy0XVpfzZP3S8OJT3g9EEiJwAAAABJRU5ErkJggg==";
1853
+ link.appendChild(image);
1854
+ element.style.position = "relative";
1855
+
1856
+ chart.__downloadAttached = true;
1857
+
1858
+ // mouseenter
1859
+ chart.__enterEvent = addEvent(element, "mouseover", function(e) {
1860
+ var related = e.relatedTarget;
1861
+ // check download option again to ensure it wasn't changed
1862
+ if ((!related || (related !== this && !childOf(this, related))) && chart.options.download) {
1863
+ link.href = chart.toImage(download);
1864
+ element.appendChild(link);
1865
+ }
1866
+ });
1867
+
1868
+ // mouseleave
1869
+ chart.__leaveEvent = addEvent(element, "mouseout", function(e) {
1870
+ var related = e.relatedTarget;
1871
+ if (!related || (related !== this && !childOf(this, related))) {
1872
+ if (link.parentNode) {
1873
+ link.parentNode.removeChild(link);
1874
+ }
1875
+ }
1876
+ });
1877
+ }
1878
+
1879
+ // https://stackoverflow.com/questions/10149963/adding-event-listener-cross-browser
1880
+ function addEvent(elem, event, fn) {
1881
+ if (elem.addEventListener) {
1882
+ elem.addEventListener(event, fn, false);
1883
+ return fn;
1884
+ } else {
1885
+ var fn2 = function() {
1886
+ // set the this pointer same as addEventListener when fn is called
1887
+ return(fn.call(elem, window.event));
1888
+ };
1889
+ elem.attachEvent("on" + event, fn2);
1890
+ return fn2;
1891
+ }
1892
+ }
1893
+
1894
+ function removeEvent(elem, event, fn) {
1895
+ if (elem.removeEventListener) {
1896
+ elem.removeEventListener(event, fn, false);
1897
+ } else {
1898
+ elem.detachEvent("on" + event, fn);
1899
+ }
1900
+ }
1901
+
1902
+ // https://gist.github.com/shawnbot/4166283
1903
+ function childOf(p, c) {
1904
+ if (p === c) { return false; }
1905
+ while (c && c !== p) { c = c.parentNode; }
1906
+ return c === p;
1907
+ }
1908
+
1909
+ var pendingRequests = [], runningRequests = 0, maxRequests = 4;
1910
+
1911
+ function pushRequest(url, success, error) {
1912
+ pendingRequests.push([url, success, error]);
1913
+ runNext();
1914
+ }
1915
+
1916
+ function runNext() {
1917
+ if (runningRequests < maxRequests) {
1918
+ var request = pendingRequests.shift();
1919
+ if (request) {
1920
+ runningRequests++;
1921
+ getJSON(request[0], request[1], request[2]);
1922
+ runNext();
1923
+ }
1924
+ }
1925
+ }
1926
+
1927
+ function requestComplete() {
1928
+ runningRequests--;
1929
+ runNext();
1930
+ }
1931
+
1932
+ function getJSON(url, success, error) {
1933
+ ajaxCall(url, success, function (jqXHR, textStatus, errorThrown) {
1934
+ var message = (typeof errorThrown === "string") ? errorThrown : errorThrown.message;
1935
+ error(message);
1936
+ });
1937
+ }
1938
+
1939
+ function ajaxCall(url, success, error) {
1940
+ var $ = window.jQuery || window.Zepto || window.$;
1941
+
1942
+ if ($ && $.ajax) {
1943
+ $.ajax({
1944
+ dataType: "json",
1945
+ url: url,
1946
+ success: success,
1947
+ error: error,
1948
+ complete: requestComplete
1949
+ });
1950
+ } else {
1951
+ var xhr = new XMLHttpRequest();
1952
+ xhr.open("GET", url, true);
1953
+ xhr.setRequestHeader("Content-Type", "application/json");
1954
+ xhr.onload = function () {
1955
+ requestComplete();
1956
+ if (xhr.status === 200) {
1957
+ success(JSON.parse(xhr.responseText), xhr.statusText, xhr);
1958
+ } else {
1959
+ error(xhr, "error", xhr.statusText);
1960
+ }
1961
+ };
1962
+ xhr.send();
1963
+ }
1964
+ }
1965
+
1966
+ var config = {};
1967
+ var adapters = [];
1968
+
1969
+ // helpers
1970
+
1971
+ function setText(element, text) {
1972
+ if (document.body.innerText) {
1973
+ element.innerText = text;
1974
+ } else {
1975
+ element.textContent = text;
1976
+ }
1977
+ }
1978
+
1979
+ // TODO remove prefix for all messages
1980
+ function chartError(element, message, noPrefix) {
1981
+ if (!noPrefix) {
1982
+ message = "Error Loading Chart: " + message;
1983
+ }
1984
+ setText(element, message);
1985
+ element.style.color = "#ff0000";
1986
+ }
1987
+
1988
+ function errorCatcher(chart) {
1989
+ try {
1990
+ chart.__render();
1991
+ } catch (err) {
1992
+ chartError(chart.element, err.message);
1993
+ throw err;
1994
+ }
1995
+ }
1996
+
1997
+ function fetchDataSource(chart, dataSource, showLoading) {
1998
+ // only show loading message for urls and callbacks
1999
+ if (showLoading && chart.options.loading && (typeof dataSource === "string" || typeof dataSource === "function")) {
2000
+ setText(chart.element, chart.options.loading);
2001
+ }
2002
+
2003
+ if (typeof dataSource === "string") {
2004
+ pushRequest(dataSource, function (data) {
2005
+ chart.rawData = data;
2006
+ errorCatcher(chart);
2007
+ }, function (message) {
2008
+ chartError(chart.element, message);
2009
+ });
2010
+ } else if (typeof dataSource === "function") {
2011
+ try {
2012
+ dataSource(function (data) {
2013
+ chart.rawData = data;
2014
+ errorCatcher(chart);
2015
+ }, function (message) {
2016
+ chartError(chart.element, message, true);
2017
+ });
2018
+ } catch (err) {
2019
+ chartError(chart.element, err, true);
2020
+ }
2021
+ } else {
2022
+ chart.rawData = dataSource;
2023
+ errorCatcher(chart);
2024
+ }
2025
+ }
2026
+
2027
+ function getAdapterType(library) {
2028
+ if (library) {
2029
+ if (library.product === "Highcharts") {
2030
+ return defaultExport$1;
2031
+ } else if (library.charts) {
2032
+ return defaultExport;
2033
+ } else if (isFunction(library)) {
2034
+ return defaultExport$2;
2035
+ }
2036
+ }
2037
+ throw new Error("Unknown adapter");
2038
+ }
2039
+
2040
+ function addAdapter(library) {
2041
+ var adapterType = getAdapterType(library);
2042
+ var adapter = new adapterType(library);
2043
+
2044
+ if (adapters.indexOf(adapter) === -1) {
2045
+ adapters.push(adapter);
2046
+ }
2047
+ }
2048
+
2049
+ function loadAdapters() {
2050
+ if ("Chart" in window) {
2051
+ addAdapter(window.Chart);
2052
+ }
2053
+
2054
+ if ("Highcharts" in window) {
2055
+ addAdapter(window.Highcharts);
2056
+ }
2057
+
2058
+ if (window.google && window.google.charts) {
2059
+ addAdapter(window.google);
2060
+ }
2061
+ }
2062
+
2063
+ function renderChart(chartType, chart) {
2064
+ if (dataEmpty(chart.data, chartType)) {
2065
+ var message = chart.options.empty || (chart.options.messages && chart.options.messages.empty) || "No data";
2066
+ setText(chart.element, message);
2067
+ } else {
2068
+ callAdapter(chartType, chart);
2069
+ if (chart.options.download && !chart.__downloadAttached && chart.adapter === "chartjs") {
2070
+ addDownloadButton(chart);
2071
+ }
2072
+ }
2073
+ }
2074
+
2075
+ // TODO remove chartType if cross-browser way
2076
+ // to get the name of the chart class
2077
+ function callAdapter(chartType, chart) {
2078
+ var i, adapter, fnName, adapterName;
2079
+ fnName = "render" + chartType;
2080
+ adapterName = chart.options.adapter;
2081
+
2082
+ loadAdapters();
2083
+
2084
+ for (i = 0; i < adapters.length; i++) {
2085
+ adapter = adapters[i];
2086
+ if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) {
2087
+ chart.adapter = adapter.name;
2088
+ chart.__adapterObject = adapter;
2089
+ return adapter[fnName](chart);
2090
+ }
2091
+ }
2092
+
2093
+ if (adapters.length > 0) {
2094
+ throw new Error("No charting library found for " + chartType);
2095
+ } else {
2096
+ throw new Error("No charting libraries found - be sure to include one before your charts");
2097
+ }
2098
+ }
2099
+
2100
+ // define classes
2101
+
2102
+ var Chart = function Chart(element, dataSource, options) {
2103
+ var elementId;
2104
+ if (typeof element === "string") {
2105
+ elementId = element;
2106
+ element = document.getElementById(element);
2107
+ if (!element) {
2108
+ throw new Error("No element with id " + elementId);
2109
+ }
2110
+ }
2111
+ this.element = element;
2112
+ this.options = merge(Chartkick.options, options || {});
2113
+ this.dataSource = dataSource;
2114
+
2115
+ Chartkick.charts[element.id] = this;
2116
+
2117
+ fetchDataSource(this, dataSource, true);
2118
+
2119
+ if (this.options.refresh) {
2120
+ this.startRefresh();
2121
+ }
2122
+ };
2123
+
2124
+ Chart.prototype.getElement = function getElement () {
2125
+ return this.element;
2126
+ };
2127
+
2128
+ Chart.prototype.getDataSource = function getDataSource () {
2129
+ return this.dataSource;
2130
+ };
2131
+
2132
+ Chart.prototype.getData = function getData () {
2133
+ return this.data;
2134
+ };
2135
+
2136
+ Chart.prototype.getOptions = function getOptions () {
2137
+ return this.options;
2138
+ };
2139
+
2140
+ Chart.prototype.getChartObject = function getChartObject () {
2141
+ return this.chart;
2142
+ };
2143
+
2144
+ Chart.prototype.getAdapter = function getAdapter () {
2145
+ return this.adapter;
2146
+ };
2147
+
2148
+ Chart.prototype.updateData = function updateData (dataSource, options) {
2149
+ this.dataSource = dataSource;
2150
+ if (options) {
2151
+ this.__updateOptions(options);
2152
+ }
2153
+ fetchDataSource(this, dataSource, true);
2154
+ };
2155
+
2156
+ Chart.prototype.setOptions = function setOptions (options) {
2157
+ this.__updateOptions(options);
2158
+ this.redraw();
2159
+ };
2160
+
2161
+ Chart.prototype.redraw = function redraw () {
2162
+ fetchDataSource(this, this.rawData);
2163
+ };
2164
+
2165
+ Chart.prototype.refreshData = function refreshData () {
2166
+ if (typeof this.dataSource === "string") {
2167
+ // prevent browser from caching
2168
+ var sep = this.dataSource.indexOf("?") === -1 ? "?" : "&";
2169
+ var url = this.dataSource + sep + "_=" + (new Date()).getTime();
2170
+ fetchDataSource(this, url);
2171
+ } else if (typeof this.dataSource === "function") {
2172
+ fetchDataSource(this, this.dataSource);
2173
+ }
2174
+ };
2175
+
2176
+ Chart.prototype.startRefresh = function startRefresh () {
2177
+ var this$1$1 = this;
2178
+
2179
+ var refresh = this.options.refresh;
2180
+
2181
+ if (refresh && typeof this.dataSource !== "string" && typeof this.dataSource !== "function") {
2182
+ throw new Error("Data source must be a URL or callback for refresh");
2183
+ }
2184
+
2185
+ if (!this.intervalId) {
2186
+ if (refresh) {
2187
+ this.intervalId = setInterval( function () {
2188
+ this$1$1.refreshData();
2189
+ }, refresh * 1000);
2190
+ } else {
2191
+ throw new Error("No refresh interval");
2192
+ }
2193
+ }
2194
+ };
2195
+
2196
+ Chart.prototype.stopRefresh = function stopRefresh () {
2197
+ if (this.intervalId) {
2198
+ clearInterval(this.intervalId);
2199
+ this.intervalId = null;
2200
+ }
2201
+ };
2202
+
2203
+ Chart.prototype.toImage = function toImage (download) {
2204
+ if (this.adapter === "chartjs") {
2205
+ if (download && download.background && download.background !== "transparent") {
2206
+ // https://stackoverflow.com/questions/30464750/chartjs-line-chart-set-background-color
2207
+ var canvas = this.chart.canvas;
2208
+ var ctx = this.chart.ctx;
2209
+ var tmpCanvas = document.createElement("canvas");
2210
+ var tmpCtx = tmpCanvas.getContext("2d");
2211
+ tmpCanvas.width = ctx.canvas.width;
2212
+ tmpCanvas.height = ctx.canvas.height;
2213
+ tmpCtx.fillStyle = download.background;
2214
+ tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);
2215
+ tmpCtx.drawImage(canvas, 0, 0);
2216
+ return tmpCanvas.toDataURL("image/png");
2217
+ } else {
2218
+ return this.chart.toBase64Image();
2219
+ }
2220
+ } else {
2221
+ throw new Error("Feature only available for Chart.js");
2222
+ }
2223
+ };
2224
+
2225
+ Chart.prototype.destroy = function destroy () {
2226
+ this.destroyed = true;
2227
+ this.stopRefresh();
2228
+
2229
+ if (this.__adapterObject) {
2230
+ this.__adapterObject.destroy(this);
2231
+ }
2232
+
2233
+ if (this.__enterEvent) {
2234
+ removeEvent(this.element, "mouseover", this.__enterEvent);
2235
+ }
2236
+
2237
+ if (this.__leaveEvent) {
2238
+ removeEvent(this.element, "mouseout", this.__leaveEvent);
2239
+ }
2240
+ };
2241
+
2242
+ Chart.prototype.__updateOptions = function __updateOptions (options) {
2243
+ var updateRefresh = options.refresh && options.refresh !== this.options.refresh;
2244
+ this.options = merge(Chartkick.options, options);
2245
+ if (updateRefresh) {
2246
+ this.stopRefresh();
2247
+ this.startRefresh();
2248
+ }
2249
+ };
2250
+
2251
+ Chart.prototype.__render = function __render () {
2252
+ this.data = this.__processData();
2253
+ renderChart(this.__chartName(), this);
2254
+ };
2255
+
2256
+ Chart.prototype.__config = function __config () {
2257
+ return config;
2258
+ };
2259
+
2260
+ var LineChart = /*@__PURE__*/(function (Chart) {
2261
+ function LineChart () {
2262
+ Chart.apply(this, arguments);
2263
+ }
2264
+
2265
+ if ( Chart ) LineChart.__proto__ = Chart;
2266
+ LineChart.prototype = Object.create( Chart && Chart.prototype );
2267
+ LineChart.prototype.constructor = LineChart;
2268
+
2269
+ LineChart.prototype.__processData = function __processData () {
2270
+ return processSeries(this);
2271
+ };
2272
+
2273
+ LineChart.prototype.__chartName = function __chartName () {
2274
+ return "LineChart";
2275
+ };
2276
+
2277
+ return LineChart;
2278
+ }(Chart));
2279
+
2280
+ var PieChart = /*@__PURE__*/(function (Chart) {
2281
+ function PieChart () {
2282
+ Chart.apply(this, arguments);
2283
+ }
2284
+
2285
+ if ( Chart ) PieChart.__proto__ = Chart;
2286
+ PieChart.prototype = Object.create( Chart && Chart.prototype );
2287
+ PieChart.prototype.constructor = PieChart;
2288
+
2289
+ PieChart.prototype.__processData = function __processData () {
2290
+ return processSimple(this);
2291
+ };
2292
+
2293
+ PieChart.prototype.__chartName = function __chartName () {
2294
+ return "PieChart";
2295
+ };
2296
+
2297
+ return PieChart;
2298
+ }(Chart));
2299
+
2300
+ var ColumnChart = /*@__PURE__*/(function (Chart) {
2301
+ function ColumnChart () {
2302
+ Chart.apply(this, arguments);
2303
+ }
2304
+
2305
+ if ( Chart ) ColumnChart.__proto__ = Chart;
2306
+ ColumnChart.prototype = Object.create( Chart && Chart.prototype );
2307
+ ColumnChart.prototype.constructor = ColumnChart;
2308
+
2309
+ ColumnChart.prototype.__processData = function __processData () {
2310
+ return processSeries(this, null, true);
2311
+ };
2312
+
2313
+ ColumnChart.prototype.__chartName = function __chartName () {
2314
+ return "ColumnChart";
2315
+ };
2316
+
2317
+ return ColumnChart;
2318
+ }(Chart));
2319
+
2320
+ var BarChart = /*@__PURE__*/(function (Chart) {
2321
+ function BarChart () {
2322
+ Chart.apply(this, arguments);
2323
+ }
2324
+
2325
+ if ( Chart ) BarChart.__proto__ = Chart;
2326
+ BarChart.prototype = Object.create( Chart && Chart.prototype );
2327
+ BarChart.prototype.constructor = BarChart;
2328
+
2329
+ BarChart.prototype.__processData = function __processData () {
2330
+ return processSeries(this, null, true);
2331
+ };
2332
+
2333
+ BarChart.prototype.__chartName = function __chartName () {
2334
+ return "BarChart";
2335
+ };
2336
+
2337
+ return BarChart;
2338
+ }(Chart));
2339
+
2340
+ var AreaChart = /*@__PURE__*/(function (Chart) {
2341
+ function AreaChart () {
2342
+ Chart.apply(this, arguments);
2343
+ }
2344
+
2345
+ if ( Chart ) AreaChart.__proto__ = Chart;
2346
+ AreaChart.prototype = Object.create( Chart && Chart.prototype );
2347
+ AreaChart.prototype.constructor = AreaChart;
2348
+
2349
+ AreaChart.prototype.__processData = function __processData () {
2350
+ return processSeries(this);
2351
+ };
2352
+
2353
+ AreaChart.prototype.__chartName = function __chartName () {
2354
+ return "AreaChart";
2355
+ };
2356
+
2357
+ return AreaChart;
2358
+ }(Chart));
2359
+
2360
+ var GeoChart = /*@__PURE__*/(function (Chart) {
2361
+ function GeoChart () {
2362
+ Chart.apply(this, arguments);
2363
+ }
2364
+
2365
+ if ( Chart ) GeoChart.__proto__ = Chart;
2366
+ GeoChart.prototype = Object.create( Chart && Chart.prototype );
2367
+ GeoChart.prototype.constructor = GeoChart;
2368
+
2369
+ GeoChart.prototype.__processData = function __processData () {
2370
+ return processSimple(this);
2371
+ };
2372
+
2373
+ GeoChart.prototype.__chartName = function __chartName () {
2374
+ return "GeoChart";
2375
+ };
2376
+
2377
+ return GeoChart;
2378
+ }(Chart));
2379
+
2380
+ var ScatterChart = /*@__PURE__*/(function (Chart) {
2381
+ function ScatterChart () {
2382
+ Chart.apply(this, arguments);
2383
+ }
2384
+
2385
+ if ( Chart ) ScatterChart.__proto__ = Chart;
2386
+ ScatterChart.prototype = Object.create( Chart && Chart.prototype );
2387
+ ScatterChart.prototype.constructor = ScatterChart;
2388
+
2389
+ ScatterChart.prototype.__processData = function __processData () {
2390
+ return processSeries(this, "number");
2391
+ };
2392
+
2393
+ ScatterChart.prototype.__chartName = function __chartName () {
2394
+ return "ScatterChart";
2395
+ };
2396
+
2397
+ return ScatterChart;
2398
+ }(Chart));
2399
+
2400
+ var BubbleChart = /*@__PURE__*/(function (Chart) {
2401
+ function BubbleChart () {
2402
+ Chart.apply(this, arguments);
2403
+ }
2404
+
2405
+ if ( Chart ) BubbleChart.__proto__ = Chart;
2406
+ BubbleChart.prototype = Object.create( Chart && Chart.prototype );
2407
+ BubbleChart.prototype.constructor = BubbleChart;
2408
+
2409
+ BubbleChart.prototype.__processData = function __processData () {
2410
+ return processSeries(this, "bubble");
2411
+ };
2412
+
2413
+ BubbleChart.prototype.__chartName = function __chartName () {
2414
+ return "BubbleChart";
2415
+ };
2416
+
2417
+ return BubbleChart;
2418
+ }(Chart));
2419
+
2420
+ var Timeline = /*@__PURE__*/(function (Chart) {
2421
+ function Timeline () {
2422
+ Chart.apply(this, arguments);
2423
+ }
2424
+
2425
+ if ( Chart ) Timeline.__proto__ = Chart;
2426
+ Timeline.prototype = Object.create( Chart && Chart.prototype );
2427
+ Timeline.prototype.constructor = Timeline;
2428
+
2429
+ Timeline.prototype.__processData = function __processData () {
2430
+ var i, data = this.rawData;
2431
+ for (i = 0; i < data.length; i++) {
2432
+ data[i][1] = toDate(data[i][1]);
2433
+ data[i][2] = toDate(data[i][2]);
2434
+ }
2435
+ return data;
2436
+ };
2437
+
2438
+ Timeline.prototype.__chartName = function __chartName () {
2439
+ return "Timeline";
2440
+ };
2441
+
2442
+ return Timeline;
2443
+ }(Chart));
2444
+
2445
+ var Chartkick = {
2446
+ LineChart: LineChart,
2447
+ PieChart: PieChart,
2448
+ ColumnChart: ColumnChart,
2449
+ BarChart: BarChart,
2450
+ AreaChart: AreaChart,
2451
+ GeoChart: GeoChart,
2452
+ ScatterChart: ScatterChart,
2453
+ BubbleChart: BubbleChart,
2454
+ Timeline: Timeline,
2455
+ charts: {},
2456
+ configure: function (options) {
2457
+ for (var key in options) {
2458
+ if (options.hasOwnProperty(key)) {
2459
+ config[key] = options[key];
2460
+ }
2461
+ }
2462
+ },
2463
+ setDefaultOptions: function (opts) {
2464
+ Chartkick.options = opts;
2465
+ },
2466
+ eachChart: function (callback) {
2467
+ for (var chartId in Chartkick.charts) {
2468
+ if (Chartkick.charts.hasOwnProperty(chartId)) {
2469
+ callback(Chartkick.charts[chartId]);
2470
+ }
2471
+ }
2472
+ },
2473
+ destroyAll: function() {
2474
+ for (var chartId in Chartkick.charts) {
2475
+ if (Chartkick.charts.hasOwnProperty(chartId)) {
2476
+ Chartkick.charts[chartId].destroy();
2477
+ delete Chartkick.charts[chartId];
2478
+ }
2479
+ }
2480
+ },
2481
+ config: config,
2482
+ options: {},
2483
+ adapters: adapters,
2484
+ addAdapter: addAdapter,
2485
+ use: function(adapter) {
2486
+ addAdapter(adapter);
2487
+ return Chartkick;
2488
+ }
2489
+ };
2490
+
2491
+ // not ideal, but allows for simpler integration
2492
+ if (typeof window !== "undefined" && !window.Chartkick) {
2493
+ window.Chartkick = Chartkick;
2494
+
2495
+ // clean up previous charts before Turbolinks loads new page
2496
+ document.addEventListener("turbolinks:before-render", function() {
2497
+ if (config.autoDestroy !== false) {
2498
+ Chartkick.destroyAll();
2499
+ }
2500
+ });
2501
+ document.addEventListener("turbo:before-render", function() {
2502
+ if (config.autoDestroy !== false) {
2503
+ Chartkick.destroyAll();
2504
+ }
2505
+ });
2506
+
2507
+ // use setTimeout so charting library can come later in same JS file
2508
+ setTimeout(function() {
2509
+ window.dispatchEvent(new Event("chartkick:load"));
2510
+ }, 0);
2511
+ }
2512
+
2513
+ // backwards compatibility for esm require
2514
+ Chartkick.default = Chartkick;
2515
+
2516
+ return Chartkick;
2517
+
2518
+ }));